(58)【調査した分野】(Int.Cl.,DB名)
前記プロセッサは、前記製品前設定プログラムによって前記初期設定データが暗号化された暗号化データが前記記憶装置に書き込まれた後に、前記製品前設定プログラムを前記記憶装置から削除する
請求項1に記載の集積回路。
【発明を実施するための形態】
【0009】
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係るデータ処理装置1の構成を説明する。
データ処理装置1は、集積回路10と、記憶装置20とを備える。
集積回路10は、プロセッサ11と、制御部12と、暗号処理部13と、PUF部14とを備える。プロセッサ11と、制御部12と、暗号処理部13と、PUF部14とは、電子回路によって構成される。プロセッサ11は、制御部12及び暗号処理部13と信号線によって接続されている。制御部12は暗号処理部13と信号線によって接続されている。制御部12及び暗号処理部13は、PUF部14と信号線によって接続されている。
記憶装置20は、主記憶装置21と、不揮発性記憶装置22とを備える。主記憶装置21は、具体例としては、RAM(Random Access Memory)である。また、不揮発性記憶装置22は、具体例としては、フラッシュメモリである。主記憶装置21と不揮発性記憶装置22との間は、DMA(Direct Memory Access)転送によってデータ転送がされる。
【0010】
***動作の説明***
実施の形態1では、データ処理装置1が既に起動しており、PUF部14によってPUF鍵が発行され、PUF鍵が暗号処理部13の内部メモリに設定されているものとする。PUF鍵は、個体毎の電子回路の差異を利用して得られた集積回路10に固有の値から生成された鍵である。
【0011】
図2を参照して、実施の形態1に係る集積回路10のデータ書き込み時の処理を説明する。
(ステップS11:書き込み指示処理)
プロセッサ11は、記憶装置20から実行対象のプログラムを読み出し、実行する。ここで、プログラムの読み込みは、後述するデータ読み込み時の処理によって実現される。
プロセッサ11は、プログラムを実行して得られたデータを記憶装置20に書き込む書き込み指示を出力する。
【0012】
(ステップS12:指示検出処理)
制御部12は、ステップS11で出力された書き込み指示を検出する。すると、制御部12は、検出された書き込み指示で記憶装置20に書き込もうとしているデータの暗号化を暗号処理部13に指示する。
【0013】
(ステップS13:暗号化処理)
暗号処理部13は、ステップS12で暗号化が指示されると、書き込み指示で記憶装置20に書き込もうとしているデータをPUF鍵により暗号化して暗号化データを生成する。ここでは、暗号処理部13は、暗号化には、AES(Advanced Encryption Standard)といった共通鍵暗号方式を用いる。
そして、暗号処理部13は、暗号化データを記憶装置20の主記憶装置21に書き込む。その後、主記憶装置21から不揮発性記憶装置22へDMA転送によって暗号化データが転送されるように構成してもよい。
【0014】
図3を参照して、実施の形態1に係る集積回路10のデータ読み込み時の処理を説明する。
(ステップS21:読み込み指示処理)
プロセッサ11は、記憶装置20からデータの読み込み指示を出力する。
ここで、データは、上述したデータ書き込み時であればプログラムである。データは、プログラムに限らず、実行されるプログラムの処理で要求されたデータの場合もある。
【0015】
(ステップS22:指示検出処理)
制御部12は、ステップS21で出力された読み込み指示を検出する。すると、制御部12は、検出された読み込み指示で記憶装置20から読み込むデータの復号を暗号処理部13に指示する。
【0016】
(ステップS23:復号処理)
暗号処理部13は、ステップS22で復号が指示されると、読み込み指示で記憶装置20から読み込もうとしているデータを、主記憶装置21から読み出す。この際、必要に応じて、不揮発性記憶装置22から主記憶装置21へDMA転送によってデータが転送される。
そして、暗号処理部13は、読み込まれたデータをPUF鍵により復号して平文データを生成する。暗号処理部13は、平文データをプロセッサ11に出力する。
【0017】
***実施の形態1の効果***
以上のように、実施の形態1に係るデータ処理装置1では、制御部12が記憶装置20にデータを書き込むことを検出すると、暗号処理部13は、PUF鍵でデータを暗号化した上で記憶装置20に書き込む。これにより、集積回路10の外部に出力されるデータはPUF鍵で暗号化されたデータとなる。
そのため、記憶装置20を集積回路10の外部に設けても、集積回路10の外部に平文状態のデータが出ることがなく、データの安全性を確保できる。
【0018】
また、実施の形態1に係るデータ処理装置1では、暗号処理部13は、記憶装置20からデータを読み込むことが検出されると、PUF鍵でデータを復号してプロセッサ11に出力する。
そのため、プロセッサ11で実行されるプログラムの処理は、暗号化及び復号を考慮する必要がない。
【0019】
実施の形態2.
実施の形態2では、データ処理装置1の生産及び起動について説明する。実施の形態2では、実施の形態1と同一の点については説明を省略する。
データ処理装置1の生産とは、データ処理装置1の記憶装置20に初期設定データを設定することである。実施の形態2では、初期設定データは、生産後のデータ処理装置1を制御するための制御プログラムである。
【0020】
***構成の説明***
図4を参照して、実施の形態2に係るデータ処理装置1の生産システム2の構成を説明する。
生産システム2は、生産対象のデータ処理装置1と、生産装置3とを備える。生産対象のデータ処理装置1と、生産装置3とは、通信路を介して接続されている。
生産装置3は、コンピュータである。生産装置3は、生産対象のデータ処理装置1の記憶装置20に初期設定データを設定する装置である。
【0021】
***動作の説明***
実施の形態2では、暗号処理部13による暗号化処理及び復号処理の有効化を制御部12が制御する。具体的には、制御部12は、暗号化ENABLE信号を暗号処理部13に出力することにより暗号化処理を有効化し、復号ENABLE信号を暗号処理部13に出力することにより復号処理を有効化する。暗号化ENABLE信号が出力されていない場合には、暗号化処理は無効化され、復号ENABLE信号が出力されていない場合には、復号処理は無効化される。
つまり、暗号化ENABLE信号が出力されている場合には、データが暗号化された上で記憶装置20に書き込まれ、暗号化ENABLE信号が出力されていない場合には、データが平文のまま記憶装置20に書き込まれる。また、復号ENABLE信号が出力されている場合には、読み出されたデータが復号されて出力され、復号ENABLE信号が出力されていない場合には、読み出されたデータがそのまま出力される。
ここで、制御部12は、暗号化処理を有効化している場合にのみ、復号処理を有効化できるように構成されている。
【0022】
図5を参照して、実施の形態2に係る生産システム2の生産時の処理を説明する。
(ステップS31:製品前設定プログラム設定処理)
生産装置3は、平文の初期設定データと、平文の製品後初期設定プログラムとをデータ処理装置1の記憶装置20の不揮発性記憶装置22に書き込む。
また製品前設定プログラムが平文の状態でデータ処理装置1の不揮発性記憶装置22に予め記憶される。製品前設定プログラムは、製品化前の初期設定を行うためのプログラムであり、集積回路10に対してその集積回路10に固有のPUF鍵を発行させ、PUF鍵により入力されたデータを暗号化して暗号化データを生成し、暗号化データを記憶装置20に書き込む。製品前設定プログラムは、初期設定完了後、プロセッサ11により削除するように予め制御されている。
初期設定データは、上述した通り、生産後のデータ処理装置1を制御するための制御プログラムである。制御プログラムには、ブートローダと、ファームウェアと、アプリケーションプログラムとが含まれている。なお、初期設定データに制御プログラムの処理に必要なデータが含まれていてもよい。
【0023】
(ステップS32:製品前設定プログラム実行処理)
生産装置3は、データ処理装置1の不揮発性記憶装置22に記憶された製品前設定プログラムの実行を集積回路10に指示する。すると、集積回路10のプロセッサ11は、不揮発性記憶装置22に記憶された製品前設定プログラムを読み出して実行する。
具体的には、プロセッサ11は、製品前設定プログラムの読み込み指示を出力して、製品前設定プログラムを取得する。つまり、
図3を参照して説明した処理が実行され、製品前設定プログラムが取得される。なお、この時点では、初期段階であり制御部12は、暗号ENABLE及び復号ENABLE信号を出力していないため、暗号化処理及び復号処理は無効化されている。したがって、暗号処理部13は、読み出された製品前設定プログラムに対して復号処理を行わず、そのままプロセッサ11に出力する。製品前設定プログラムは平文で記憶されているため、プロセッサ11は平文の製品前設定プログラムを取得する。そして、プロセッサ11は、取得された製品前設定プログラムを実行する。
製品前設定プログラムが実行されると、製品前設定プログラムの制御に従い以下のステップS321からステップS323の処理が実行される。
【0024】
(ステップS321:初期化処理)
集積回路10のリセット信号が解除され、プロセッサ11が初期化され、PUF部14が起動する。PUF部14は起動すると、PUF鍵を生成して、暗号処理部13に出力する。暗号処理部13は、PUF鍵を内部メモリに設定する。暗号処理部13は、PUF鍵の補助情報を生成して、平文のままの補助情報を記憶装置20の主記憶装置21に書き込む。この際、主記憶装置21から不揮発性記憶装置22へDMA転送によって補助情報が転送される。
補助情報は、PUF部14がPUF鍵を生成する度に、同じPUF鍵が生成されるようにするための情報である。補助情報は、具体例としては、誤り訂正符号である。
【0025】
(ステップS322:第1有効化処理)
プロセッサ11は、制御部12に対して、暗号化処理を有効化するとともに復号処理を無効化する。
具体的には、制御部12は、復号処理を有効にする復号ENABLE信号を暗号処理部13に出力せず、暗号化処理を有効化する暗号化ENABLE信号だけを暗号処理部13に出力する。これにより、暗号処理部13は、記憶装置20にデータを書き込む際に暗号化処理は行うが、記憶装置20からデータを読み込んだ際に復号処理は行わない状態になる。
【0026】
(ステップS323:初期設定データ設定処理)
プロセッサ11は、不揮発性記憶装置22に記憶された初期設定データの読み込み指示を出力して、初期設定データを取得する。つまり、
図3を参照して説明した処理が実行され、初期設定データが取得される。ここでは、復号ENABLE信号は出力され、復号処理は無効化されている。したがって、暗号処理部13は、読み出された初期設定データに対して復号処理を行わず、そのままプロセッサ11に出力する。初期設定データは平文で記憶されているため、プロセッサ11は平文の初期設定データを取得する。
次に、プロセッサ11は、初期設定データを記憶装置20に書き込む書き込み指示を出力する。すると、
図2を参照して説明した処理が実行され、初期設定データが記憶装置20に書き込まれる。ここでは、暗号化ENABLE信号は出力され、暗号化処理は有効化されている。したがって、暗号処理部13は、初期設定データをPUF鍵で暗号化して暗号化設定データを生成し、暗号化設定データを主記憶装置21に書き込む。その後、主記憶装置21から不揮発性記憶装置22へDMA転送によって暗号化設定データが転送される。
【0027】
(ステップS33:製品前設定プログラム削除処理)
プロセッサ11は、不揮発性記憶装置22に記憶された製品前設定プログラムを削除する。
【0028】
図6を参照して、
図5の処理によって生産されたデータ処理装置1の起動時の処理を説明する。
(ステップS41:製品後初期設定プログラム実行処理)
集積回路10のプロセッサ11は、不揮発性記憶装置22に記憶された製品後初期設定プログラムを読み出して実行する。
具体的には、プロセッサ11は、製品後初期設定プログラムの読み込み指示を出力して、製品後初期設定プログラムを取得する。つまり、
図3を参照して説明した処理が実行され、製品後初期設定プログラムが取得される。なお、この時点では、制御部12は、暗号ENABLE信号及び復号ENABLE信号を出力していないため、暗号化処理及び復号処理は無効化されている。したがって、暗号処理部13は、読み出された製品後初期設定プログラムに対して復号処理を行わず、そのままプロセッサ11に出力する。製品後初期設定プログラムは平文で記憶されているため、プロセッサ11は平文の製品後初期設定プログラムを取得する。そして、プロセッサ11は、取得された製品後初期設定プログラムを実行する。
製品後初期設定プログラムが実行されると、製品後初期設定プログラムの制御に従い以下のステップS411及びステップS412の処理が実行される。
【0029】
(ステップS411:初期化処理)
集積回路10のリセット信号が解除され、プロセッサ11が初期化され、PUF部14が起動する。プロセッサ11は、補助情報の読み出し指示を出力して、補助情報を取得する。つまり、
図3を参照して説明した処理が実行され、補助情報が取得される。製品後初期設定プログラムと同様に、補助情報は平文で記憶されており、プロセッサ11は平文の補助情報を取得する。そして、プロセッサ11は、制御部12を介して補助情報をPUF部14に設定する。PUF部14は、補助情報を用いてPUF鍵を生成して、暗号処理部13に出力する。補助情報を用いているため、生成されたPUF鍵は、
図5のステップS321で生成されたPUF鍵と同一になる。暗号処理部13は、PUF鍵を内部メモリに設定する。
【0030】
(ステップS412:第2有効化処理)
制御部12は、暗号化処理及び復号処理を有効化する。
具体的には、制御部12は、暗号化ENABLE信号及び復号ENABLE信号を暗号処理部13に出力する。これにより、暗号処理部13は、記憶装置20にデータを書き込む際に暗号化処理は行うとともに、記憶装置20からデータを読み込んだ際に復号処理は行う状態になる。
【0031】
(ステップS42:制御プログラム実行処理)
集積回路10のプロセッサ11は、不揮発性記憶装置22に記憶された制御プログラムを読み出して実行する。制御プログラムは、暗号化設定データとして不揮発性記憶装置22に記憶されている。
具体的には、プロセッサ11は、制御プログラムの読み込み指示を出力して、制御プログラムを取得する。つまり、
図3を参照して説明した処理が実行され、制御プログラムが取得される。なお、この時点では、制御部12は、暗号ENABLE及び復号ENABLE信号を出力しているため、暗号化処理及び復号処理は有効化されている。したがって、暗号処理部13は、読み出された暗号化設定データに対して復号処理を行い平文にした上で、プロセッサ11に出力する。これにより、プロセッサ11は平文の制御プログラムを取得する。そして、プロセッサ11は、取得された制御プログラムを実行する。
制御プログラムが実行されると、ブートローダが起動され、ファームウェアが起動され、アプリケーションプログラムが実行される。
【0032】
***実施の形態2の効果***
以上のように、実施の形態2に係る生産システム2では、初期設置プログラムにより、暗号処理部13の暗号化処理及び復号処理の有効化を制御して、初期設定データをPUF鍵により暗号化した上で記憶装置20に書き込む。これにより、初期設定データが漏洩することを防止できる。特に、初期設定データはPUF鍵で暗号化されているため、集積回路10は、初期設定データを他のデータと同様に扱うことが可能である。
【0033】
また、実施の形態2に係る生産システム2では、制御部12は、暗号化処理を有効化している場合にのみ、復号処理を有効化できるように構成されている。これにより、リバースエンジニアリング等により、記憶装置20に記憶されたデータを復号し平文にして、暗号化することなく平文のまま外部の装置に書き込むといったことが困難になる。
【0034】
実施の形態3.
実施の形態3は、記憶装置20に記憶された対象データをリモート更新する点が実施の形態1,2と異なる。実施の形態3では、この異なる点を説明して、同一の点については説明を省略する。
【0035】
***構成の説明***
図7を参照して、実施の形態3に係る更新システム4の構成を説明する。
更新システム4は、更新データの配信先装置となる1つ以上のデータ処理装置1と、データ配信装置5とを備える。更新データの配信先装置となるデータ処理装置1とデータ配信装置5とは、通信路を介して接続されている。
データ配信装置5は、コンピュータである。データ配信装置5は、データ処理装置1の記憶装置20に記憶された対象データを更新するための更新データを配信する装置である。
【0036】
図8を参照して、実施の形態3に係るデータ処理装置1の構成を説明する。
データ処理装置1は、集積回路10が更新データ取得部15を備える点が
図1に示すデータ処理装置1と異なる。更新データ取得部15は、電子回路によって構成される。更新データ取得部15は、プロセッサ11と信号線を介して接続されている。
なお更新データ取得部15は、ソフトウェアにより構成してもよい。
【0037】
***動作の説明***
図9を参照して、データ配信装置5によって管理されるデータを説明する。
データ配信装置5は、バージョン毎に対応する暗号鍵を示す暗号鍵リストを管理する。暗号鍵はPUF鍵とは異なる鍵である。
図9では、暗号鍵リストは、バージョン1からバージョンnそれぞれについて、対応する暗号鍵を管理している。
また、データ配信装置5は、最新の更新データと、最新の更新データによって更新された後の対象データのバージョンに対応する暗号鍵との組である組データを管理する。
図9では、組データは、最新の更新データnと、更新データnによって更新された後の対象データのバージョンnに対応する暗号鍵EK(n)との組である。
【0038】
図10を参照して、データ処理装置1の不揮発性記憶装置22に記憶されるデータを説明する。
不揮発性記憶装置22には、PUF鍵で暗号化された上で対象データが記憶されている。また、不揮発性記憶装置22には、対象データのバージョンに対応する暗号鍵がPUF鍵で暗号化された上で記憶されている。
図10では、対象データはバージョンvであり、不揮発性記憶装置22には暗号鍵EK(v)がPUF鍵で暗号化された上で記憶されている。
対象データは、具体例としては、ファームウェアである。
【0039】
図11を参照して、実施の形態3に係る更新システム4の更新処理を説明する。
ここでは、
図9に示すデータがデータ配信装置5によって管理されており、
図10に示すデータがデータ処理装置1の不揮発性記憶装置22に記憶されているとする。また、データ処理装置1は、暗号化処理及び復号処理が有効化されているとする。
【0040】
(ステップS51:組データ取得処理)
データ配信装置5は、更新データn+1と暗号鍵KE(n+1)との組である新しい組データを取得する。
具体的には、更新データの管理者によって更新データn+1と暗号鍵KE(n+1)との組である新しい組データが作成される。そして、更新データの管理者によって、1つ前のバージョンnに対応する暗号鍵EK(n)で新しい組データが暗号化されて暗号化組データが生成され、暗号化組データが記憶媒体に書き込まれる。データ配信装置5は、暗号化組データを記憶媒体から読み出すことにより取得する。
【0041】
(ステップS52:管理データ更新処理)
データ配信装置5は、バージョンnに対応する暗号鍵EK(n)を暗号鍵リストから取得し、暗号鍵EK(n)で暗号化組データを復号する。データ配信装置5は、復号して得られた更新データn+1と暗号鍵KE(n+1)との組である新しい組データにより、管理している組データを更新する。また、データ配信装置5は、復号して得られた暗号鍵KE(n+1)を、バージョンn+1に対応する暗号鍵として暗号鍵リストに加える。
【0042】
更新データを配信する各データ処理装置1を対象としてステップS53からステップS55の処理が実行される。
【0043】
(ステップS53:更新データ要求処理)
対象のデータ処理装置1では、更新データ取得部15は、記憶装置20に記憶された対象データのバージョンvを示すバージョン情報をデータ配信装置5に送信して、更新データの配信を要求する。
【0044】
(ステップS54:更新データ配信処理)
データ配信装置5は、ステップS53で送信されたバージョン情報が示すバージョンvに対応する暗号鍵EK(v)を暗号鍵リストから取得する。データ配信装置5は、管理している組データを暗号鍵EK(v)で暗号化して暗号化組データを生成し、暗号化組データを対象のデータ処理装置1に配信する。
【0045】
(ステップS55:データ更新処理)
対象のデータ処理装置1では、プロセッサ11は、不揮発性記憶装置22から暗号鍵EK(v)及び対象データの読み込み指示を出力して、暗号鍵EK(v)及び対象データを取得する。つまり、
図3に示す処理が実行され、暗号鍵EK(v)及び対象データが取得される。ここでは、復号処理が有効化されているため、プロセッサ11はPUF鍵により復号された暗号鍵EK(v)及び対象データを取得する。プロセッサ11は、取得された暗号鍵EK(v)及び対象データを更新データ取得部15に出力する。
更新データ取得部15は、ステップS54で配信された暗号化組データを暗号鍵EK(v)で復号して、組データを生成する。更新データ取得部15は、組データに含まれる更新データn+1で対象データを更新する。これにより、対象データのバージョンがn+1になる。プロセッサ11は、バージョンn+1の対象データ及び暗号鍵EK(n+1)を記憶装置20に書き込む書き込み指示を出力する。すると、
図2を参照して説明した処理が実行され、バージョンn+1の対象データ及び暗号鍵EK(n+1)が記憶装置20に書き込まれる。ここでは、暗号化処理は有効化されているため、バージョンn+1の対象データ及び暗号鍵EK(n+1)がPUF鍵で暗号化された上で記憶装置20に書き込まれる。なお、ここでは、バージョンvの対象データがバージョンn+1の対象データによって上書きされ、暗号鍵EK(v)が暗号鍵EK(n+1)によって上書きされるとする。
【0046】
***実施の形態3の効果***
以上のように、実施の形態3に係る更新システム4は、更新データと更新データ配信用の暗号鍵とを組にして、配信先における対象データのバージョンに対応する暗号鍵で暗号化して配信する。これにより、更新データの配信のためにPUF鍵が漏洩の危険にさらされず、かつ、更新データの配信のために管理する暗号鍵の数が不要に増えることがない。
【0047】
なお、データ処理装置1では、データはPUF鍵で暗号化して管理される。そのため、データ配信装置5が各データ処理装置1のPUF鍵を管理し、配信先のデータ処理装置1のPUF鍵で更新データを暗号化した上で配信するという方法が考えられる。しかし、この方法では、データ処理装置1のPUF鍵を集積回路10の外部に取り出すことになり、PUF鍵が漏洩の危険にさらされてしまう。また、更新データの配信先のデータ処理装置1の数が増えると、管理するPUF鍵の数も増えてしまう。
【0048】
***他の構成***
<変形例1>
データ配信装置5は、暗号鍵リスト及び組データをデータ処理装置1を用いて管理してもよい。これにより、データ配信装置5は、暗号鍵リスト及び組データを安全に管理することが可能になる。
なお、暗号鍵リスト及び組データを管理するデータ処理装置1は、配信先装置となるデータ処理装置1とは別のデータ処理装置1である。
【0049】
<変形例2>
実施の形態3では、バージョンvの対象データをバージョンn+1に更新するためには、更新データn+1だけがあればよかった。しかし、更新データが累積性を有する場合には、バージョンvの対象データをバージョンn+1に更新するためには、バージョンvよりも後の各更新データが必要になる。つまり、更新データv+1,v+2,...,更新データn,更新データn+1が必要になる。
この場合には、データ配信装置5は、バージョン毎に対応する更新データを管理しておく。そして、必要となる全ての更新データと、最新の暗号鍵との組を暗号化して配信すればよい。バージョンvの対象データをバージョンn+1に更新する場合には、データ配信装置5は、更新データv+1,更新データv+2,...,更新データn,更新データn+1と、暗号鍵EK(n+1)との組を、暗号鍵EK(v)で暗号化して配信すればよい。
【0050】
<変形例3>
あるバージョンxよりも前の対象データを有するデータ処理装置1がないこと分かる場合には、データ配信装置5は、バージョンxよりも前のバージョンに対応する暗号鍵を削除してもよい。
【0051】
<変形例4>
実施の形態3では、データ処理装置1の更新データ取得部15がバージョン情報をデータ配信装置5に送信するとした。しかし、データ配信装置5が各データ処理装置1のバージョン情報を管理してもよい。データ配信装置5が更新データを配信することにより、データ処理装置1の対象データが更新される。したがって、データ配信装置5は各データ処理装置1における対象データのバージョンを特定することが可能である。
【0052】
以上、この発明の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、この発明は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。