<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。
図1は、実施の形態1にかかる暗号通信システムを示すブロック図である。本実施の形態にかかる暗号通信システム1は、半導体装置ICa(第1の半導体装置)10と半導体装置ICb(第2の半導体装置)20とを有する。半導体装置10は、ユニークコード生成部11、記憶部12、共通鍵生成部13、および暗号部14を有する。
ユニークコード生成部11は、半導体装置10に固有の値であってランダムなエラーを含むユニークコード(第1のユニークコード)UC(a)を生成し、共通鍵生成部13に出力する。ここで、ユニークコードUC(a)は、半導体装置10が備える素子固有の物理的な特性により決まる値である。例えば、ユニークコード生成部11は、半導体装置10が備えるメモリ素子の起動時の値を用いてユニークコードUC(a)を生成することができる。ユニークコードは、ICの設計は同一であるが実際に製造されるICは個々にばらつきを有するという性質を利用して生成されるコードである。このような技術は、PUF(Physical Unclonable Function)と呼ばれ、同一の回路を備えたICを1の半導体ウェハーに複数個同時に同一の製造装置により製造しても、個々のIC毎で固有のコードを得ることができると共に、別のICでの複製を困難にすることができる技術である。この技術を用いることにより、耐タンパチップのような特殊なハードウェアを使用することなく、データの高い秘匿性を実現することができる。
記憶部12は、例えば、訂正データ(第1の訂正データ)CD(a)、共通鍵生成部13で生成された共通鍵CK(a)、および半導体装置20の公開鍵PK(b)を格納することができる。記憶部12は、揮発性メモリ(例えば、SRAM)と不揮発性メモリ(例えば、フラッシュメモリ)とを有し、訂正データCD(a)および公開鍵PK(b)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部12は一時的に共通鍵CK(a)を格納するが、半導体装置10の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置10の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部13は、ユニークコード生成部11から出力されたユニークコードUC(a)と、記憶部12に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する。
ユニークコード生成部11で生成されるユニークコードUC(a)は、ユニークコード生成時の外的要因、例えば、温度、電圧等によって変動するビットの値を含むデータである。このため、ユニークコード生成部11で生成されるユニークコードUC(a)には、(1)値が安定したビット、(2)高確率で変動するビット(つまり、値の変動が比較的大きいビット)、(3)低確率で変動するビット(つまり、値の変動が比較的小さいビット)の3つが含まれる。このように、ユニークコード生成部11で生成されるユニークコードUC(a)は、(2)高確率で変動するビットと(3)低確率で変動するビットとを含む。よって、ユニークコードUC(a)は生成される毎に異なる値となる。
高確率で変動するビットは製造工程で把握することができる。よって、製造工程において各ビットを判定することで、高確率で変動するビットをマスクするマスクデータを作成することができる。そして、このマスクデータを用いて、ユニークコード生成部11で生成されたユニークコードUC(a)をマスクすることで、ユニークコードUC(a)に含まれる高確率で変動するビットを削除することができる。ここで、高確率で変動するビットの位置は半導体装置毎に異なるため、マスクデータは半導体装置に固有のデータとなる。
低確率で変動するビットは、外的要因や残存する電荷などに起因して変動するため、予め予測することが困難である。このため、低確率で変動するビットは、例えばBCH符号やリードソロモン符号に代表されるECCコードを製造時に生成し、このECCコードを用いて処理をする。以下で、共通鍵生成部13の動作について具体的に説明する。
図3は、共通鍵生成部13の動作を説明するためのフローチャートであり、図4は共通鍵生成部13で処理されるユニークコードの一例を示す表である。まず、共通鍵生成部13は、ユニークコード生成部11からユニークコードUC(a)を読み込む(ステップS11)。このとき読み込まれたユニークコードUC(a)は、値が変動しやすいビットを除外するようなエラー訂正が実施されていないユニークコードである。
次に、訂正データCD(a)に含まれるマスクデータを用いて、読み込まれたユニークコードUC(a)をマスクする(ステップS12)。ここで、マスクデータは、ユニークコードUC(a)のビットのうちビットの値が変動するようなエラー率の高いビットをマスクするためのデータである。図4に示す例では、ユニークコードUC(a)の1ビット目と6ビット目のビットのエラー率が高いため、マスクデータが"0"となっている。これ以外のビットは、エラー率が低いビットまたは値が安定しているビットであるため、マスクデータが"1"となっている。つまり、マスクが必要なビットのマスクデータは"0"となり、マスクが不要なビットのマスクデータは"1"となる。そして、マスクデータを用いてユニークコードUC(a)をマスクすることで、ユニークコードUC(a)の1ビット目と6ビット目のビットを削除したマスク処理後のユニークコードUC(a)'を得ることができる(マスク処理により削除したビットは"X"で示している)。その後、マスク処理後のユニークコードUC(a)'は左詰めされる。
次に、訂正データCD(a)に含まれるECCコード(エラー訂正コード)を用いて、マスク処理後のユニークコードUC(a)'に含まれる値の変動率が低いビットのエラーを除去する訂正をすることによりユニークコードUC(a)''を得る(ステップS13)。図4に示す例では、ECCコードを用いてマスク処理後のユニークコードUC(a)'を処理することにより、1ビット目のビットが"0"から"1"に訂正されている。
次に、訂正データCD(a)に含まれる演算パラメータを用いて、エラー訂正後のユニークコードUC(a)''に所定の演算を実施する(ステップS14)。図4に示す例では、エラー訂正後のユニークコードUC(a)''にNOT演算を実施している。この演算処理後のユニークコードUC(a)鍵CK(a)となる。なお、NOT演算は一例であり、エラー訂正後のユニークコードUC(a)''に実施する演算はどのような演算であってもよい。この演算パラメータを変更することで、必要に応じて共通鍵CK(a)を変更することができる。また、演算パラメータを用いてエラー訂正後のユニークコードUC(a)''に所定の演算を実施することで、共通鍵CK(a)をユニークコードUC(a)と見かけ上類似しないコードとすることができる。よって、セキュリティレベルを更に向上させることができる。また、エラー訂正後のユニークコードUC(a)''に実施する演算は省略することもできる。この場合は、マスクデータおよびECCコードを用いて処理されたユニークコードUC(a)''が、共通鍵CK(a)となる。このようにして生成された共通鍵CK(a)は、記憶部12および暗号部14に出力される。
なお、訂正データCD(a)に含まれるマスクコード、ECCコード、および演算パラメータは、半導体装置10の固有データとして予め生成されて記憶部12に格納されている。訂正データCD(a)の生成方法については後述する(実施の形態5、図14参照)。またECCコードは、ユニークコード生成部11から読み出したユニークコードUC(a)に含まれる値の変動率が高いビットを抽出するために、複数回のユニークコードUC(a)の読出し動作を行った後、マスク処理後のユニークコードUC(a)'を基にECCコードが生成される。
以上で説明したように、共通鍵生成部13は共通鍵CK(a)を生成する機能を有すると同時に、訂正データCD(a)を用いてユニークコードUC(a)を訂正する機能も有する。図1に示す秘密鍵生成部23、図5に示す秘密鍵生成部33、図7に示す秘密鍵生成部53、公開鍵生成部63、図9に示す共通鍵生成部73、83、図12に示す共通鍵生成部113、123、図15に示す共通鍵生成部143、153も同様に、訂正データCDを用いてユニークコードUCを訂正するユニークコード訂正部として機能する。なお、本願明細書では、便宜上、生成される鍵毎に共通鍵生成部、秘密鍵生成部、公開鍵生成部と表現しているが、これらの構成および動作は基本的には同様である。
共通鍵CK(a)は使い捨て(ワンタイム)鍵とする、または固定鍵とすることのいずれかが用途により決定される。例えば不揮発性メモリにデータを暗号化して格納するための固定鍵とするのであれば、半導体装置10のユニークコードUC(a)として得られるビットパターンから共通鍵CK(a)としてのビットパターンを得られるように訂正データCD(a)を決定すればよいため、複数の訂正データCD(a)を作っておくことも容易である。またICaとICbとの間での通信セッションごとに用いる使い捨て鍵とする場合は、複数の訂正データCD(a)毎に異なるビットパターンを得られるように訂正データCD(a)を決定すればよい。
図1の暗号部14は、共通鍵生成部13で生成された共通鍵CK(a)を半導体装置20の公開鍵PK(b)を用いて暗号化する。ここで、暗号化に用いられる公開鍵PK(b)は、予め半導体装置20から半導体装置10に送付されて記憶部12に格納されていてもよい。また、暗号化に用いられる公開鍵PK(b)は、暗号部14で共通鍵CK(a)を暗号化する際に、半導体装置20から暗号部14に直接供給されるように構成してもよい。
半導体装置20は、ユニークコード生成部21、記憶部22、秘密鍵生成部23、および復号部24を有する。ユニークコード生成部21は、半導体装置20に固有の値であってランダムなエラーを含むユニークコード(第2のユニークコード)UC(b)を生成し、秘密鍵生成部23に出力する。なお、ユニークコード生成部21の構成および動作は、上記で説明したユニークコード生成部11と基本的に同様である。
記憶部22は、訂正データ(第2の訂正データ)CD(b)、公開鍵PK(b)、および復号部で復号された共通鍵CK(a)を格納することができる。記憶部22は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCD(b)および公開鍵PK(b)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部22は一時的に共通鍵CK(a)を格納するが、半導体装置20の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置20の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
秘密鍵生成部23は、ユニークコードUC(b)と訂正データCD(b)とを用いて半導体装置20の秘密鍵SK(b)を生成する。なお、秘密鍵生成部23において秘密鍵SK(b)を生成する方法は、上記共通鍵生成部13が共通鍵CK(a)を生成する方法と基本的に同様である。
復号部24は、半導体装置10の暗号部14で暗号化された共通鍵CK(a)'を秘密鍵SK(b)を用いて復号して共通鍵CK(a)を生成する。
次に、本実施の形態にかかる暗号通信システムの動作について、図2に示すフローチャートを用いて説明する。まず、半導体装置ICb(20)は、半導体装置ICa(10)に半導体装置ICb(20)の公開鍵PK(b)を送付する(ステップS1)。送付された公開鍵PK(b)は、半導体装置10の記憶部12に格納される。次に、半導体装置10の共通鍵生成部13は、ユニークコード生成部11から出力されたユニークコードUC(a)と、記憶部12に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する(ステップS2)。暗号部14は、共通鍵生成部13で生成された共通鍵CK(a)を半導体装置20の公開鍵PK(b)を用いて暗号化して、暗号化された共通鍵CK(a)'を生成する(ステップS3)。その後、半導体装置10から半導体装置20に暗号化された共通鍵CK(a)'が送付される(ステップS4)。
半導体装置20の秘密鍵生成部23は、ユニークコードUC(b)と訂正データCD(b)とを用いて、半導体装置20の秘密鍵SK(b)を生成する(ステップS5)。復号部24は、暗号化された共通鍵CK(a)'を秘密鍵SK(b)を用いて復号して共通鍵CK(a)を生成する(ステップS6)。上記処理により、半導体装置10と半導体装置20は共に共通鍵CK(a)を保持することができる。よって、半導体装置10および半導体装置20は共通鍵CK(a)を用いて暗号通信することが可能となる(ステップS7)。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。例えば、半導体装置10がステップS2とS3を実施するのと並行して、半導体装置20においてステップS5を実施してもよい。
本発明の課題で説明したように、半導体装置ICxと半導体装置ICyとの間で共通鍵CK(x)を用いて暗号通信を実施する場合、ICxとICyとで共通鍵CK(x)を共有する必要がある。ICxが共通鍵CK(x)を保有している場合、ICxは予め取得したICyの公開鍵PK(y)を用いて共通鍵CK(x)を暗号化し、暗号化された共通鍵CK(x)'をICyへ送付する。そして、ICyは、ICyの秘密鍵SK(y)を用いて、暗号化された共通鍵CK(x)'を復号することで、共通鍵CK(x)を取得することができる。このように、公開鍵暗号方式を用いてICxからICyへ共通鍵CK(x)を送付することで、第三者に知られることなくICxとICyとで共通鍵CK(x)を共有することができる。これにより、ICxとICyとの間で共通鍵暗号方式を用いて暗号通信を実施することができる。
ICxからICyへ共通鍵CK(x)を送付する際は、共通鍵CK(x)が暗号化されているため、共通鍵CK(x)の情報が漏洩することはない。しかしながら、半導体装置(半導体チップ)ICx、ICyの不揮発性メモリ(記憶部)には共通鍵CK(x)や秘密鍵SK(y)などの重要なデータが格納されている。このため、半導体装置が不正に解析されると、共通鍵CK(x)や秘密鍵SK(y)などの重要なデータが漏洩してしまうという問題があった。
これに対して、本実施の形態にかかる暗号通信システムでは、半導体装置10の共通鍵生成部13において、半導体装置10に固有の情報成分と変動性のある情報成分とを含むユニークコードUC(a)と、当該ユニークコードUC(a)を訂正する訂正データCD(a)とを用いて共通鍵CK(a)を生成している。また、半導体装置20の秘密鍵生成部23において、半導体装置20に固有の情報成分と変動性のある情報成分とを含むユニークコードUC(b)と、当該ユニークコードUC(b)を訂正する訂正データCD(b)とを用いて、半導体装置20の秘密鍵SK(b)を生成している。よって、共通鍵CK(a)や秘密鍵SK(b)などの重要なデータを記憶部12、22に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)や秘密鍵SK(b)などの重要なデータが漏洩することはない。
また秘密鍵SK(b)は公開鍵PK(b)に対応した鍵であることが必要であるが、半導体装置20のユニークコードUC(b)として得られるビットパターンから秘密鍵SK(b)としてのビットパターンを得られるように訂正データCD(b)を決定すればよいため、複数の訂正データCD(b)を作っておくことも容易である。
半導体装置を解析して不正にデータを取得する方法としては、以下のような方法がある。
(1)半導体装置をFIB(Focused Ion Beam)を用いて加工し、プローブを用いて半導体装置を物理的に解析する方法。
(2)半導体装置にレーザなどの電磁波を照射したり、電源端子にノイズを挿入したりすることでCPUを暴走させて不正にデータを取得するフォルトツリー解析。
(3)半導体装置の消費電流量を観測し、鍵データを解析するリーク解析。
このような不正な解析を回避するために、高いセキュリティレベルが必要な分野では、セキュリティレベルの高いマイコン(以下、セキュアマイコンという)が用いられている。このセキュアマイコンには、配線領域へのシールド、光や信号ノイズを検出する機能、信号に乱数信号を組み合わせて電流をかく乱する機能などが実装されている。すなわち、上述のリーク解析による鍵データの不正取得では、特定のデータに基づく一定の演算を行うことで生じる消費電力の特徴パターンを抽出することから、複数の訂正データCD(a)やCD(b)から乱数等により適宜に選択するように構成することで、消費電力の特徴パターンをかく乱することが可能となる。
このように、セキュアマイコンを用いることで第三者が不正に半導体装置を解析することを防止することができる。しかしながら、セキュアマイコンを用いた場合は、不正解析を防止できる反面、その耐タンパ性により半導体装置メーカー等が不良解析や故障解析を実施することができなくなるという問題があった。特に、自動車に用いられる車載用のマイコン(ECU等)では、高信頼性が必要であるため、半導体装置の不良解析や故障解析が必要となる。このような理由から、車載用のマイコンにはセキュアマイコンよりもセキュリティレベルが低い汎用のマイコン(以下、汎用マイコンという)が広く用いられてきた。したがって、車載用のマイコンでは、汎用マイコンを使用しつつ、半導体装置のセキュリティレベルを向上させることが可能な暗号通信システムが必要とされていた。
本実施の形態にかかる暗号通信システムでは、共通鍵CK(a)や秘密鍵SK(b)などの重要なデータを記憶部12、22に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)や秘密鍵SK(b)などの重要なデータが漏洩することはない。このため、半導体装置10および半導体装置20をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
なお、共通鍵CK(a)や秘密鍵SK(b)を生成するために使用される訂正データCD(a)、CD(b)は、共通鍵CK(a)や秘密鍵SK(b)よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCD(a)、CD(b)が第三者に漏洩することを防ぐために、訂正データCD(a)、CD(b)が格納される半導体装置10、20にセキュアマイコンを使用してもよい。
以上で説明したように、本実施の形態にかかる発明により、セキュリティの向上を実現できる暗号通信システムおよび暗号通信方法を提供することができる。
<実施の形態2>
次に、本発明の実施の形態2について説明する。図5は、本実施の形態にかかる暗号通信システム2を示すブロック図である。本実施の形態では、暗号通信システムを電子署名方式に適用している。本実施の形態にかかる暗号通信システム2は、半導体装置ICa(30)と半導体装置ICb(40)とを有する。半導体装置30は、ユニークコード生成部31、記憶部32、秘密鍵生成部33、および署名データ生成部34を有する。
ユニークコード生成部31は、半導体装置30に固有のユニークコードUC(a)を生成し、秘密鍵生成部33に出力する。ユニークコード生成部31の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部32は、訂正データCD(a)、平文Plane(a)、および半導体装置30の公開鍵PK(a)を不揮発性メモリに格納することができる。
秘密鍵生成部33は、ユニークコード生成部31から出力されたユニークコードUC(a)と、記憶部32に格納されている訂正データCD(a)とを用いて、半導体装置30の秘密鍵SK(a)を生成する。ここで、秘密鍵生成部33はユニークコード訂正部として機能する。秘密鍵生成部33の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
署名データ生成部34は、秘密鍵生成部33で生成された秘密鍵SK(a)と、記憶部32に格納されている平文Plane(a)とを用いて署名データSig(a)を生成する。つまり、署名データ生成部34は電子署名方式における署名生成アルゴリズムを実行する。
半導体装置40は、記憶部41と検証部42とを有する。記憶部41は、半導体装置30の公開鍵PK(a)を格納することができる。検証部42は、電子署名方式の検証アルゴリズムを実行する。すなわち、検証部42は、署名データSig(a)と半導体装置30の公開鍵PK(a)とを用いて検証用データを生成する。ここで、署名データSig(a)は、半導体装置30の秘密鍵SK(a)を用いて平文Plane(a)を暗号化することで生成されたデータである。よって、署名データSig(a)を半導体装置30の公開鍵PK(a)を用いて復号することで得られた検証用データは、半導体装置30から送られた平文Plane(a)に対応するデータである。したがって、検証部42は、検証用データと平文Plane(a)とを比較し、検証用データと平文Plane(a)とが一致した場合は、半導体装置30が秘密鍵SK(a)を保有すると判断することができる。なお、半導体装置30から供給される公開鍵PK(a)は、半導体装置40の検証部42に直接供給されるように構成してもよい。
次に、本実施の形態にかかる暗号通信システムの動作について、図6に示すフローチャートを用いて説明する。まず、半導体装置30(署名者に対応する)は、半導体装置40(検証者に対応する)に半導体装置30の公開鍵PK(a)を送付する(ステップS21)。
次に、半導体装置30の秘密鍵生成部33は、ユニークコード生成部31から出力されたユニークコードUC(a)と、記憶部32に格納されている訂正データCD(a)とを用いて、半導体装置30の秘密鍵SK(a)を生成する(ステップS22)。次に、半導体装置30の署名データ生成部34は、電子署名方式における署名生成アルゴリズムを実行する。つまり、署名データ生成部34は、秘密鍵生成部33で生成された秘密鍵SK(a)と、記憶部32に格納されている平文Plane(a)とを用いて署名データSig(a)を生成する(ステップS23)。
署名データ生成部34で生成された署名データSig(a)は、半導体装置40の検証部42に送付される(ステップS24)。また、平文Plane(a)は、半導体装置40の検証部42に送付される(ステップS25)。なお、図5では、平文Plane(a)が記憶部32に格納されている場合を示したが、平文Plane(a)が外部から直接署名データ生成部34および検証部42に供給されるように構成してもよい。
半導体装置40の検証部42は、電子署名方式の検証アルゴリズムを実行する。すなわち、検証部42は、署名データSig(a)と半導体装置30の公開鍵PK(a)とを用いて検証用データを生成し、当該検証用データと平文Plane(a)とを比較する(ステップS26)。そして、検証用データと平文Plane(a)とが一致した場合(検証アルゴリズムが署名データSig(a)を受理した場合)は、検証部42は半導体装置30が作成した署名データSig(a)が正当であると判断する。つまり、半導体装置30が秘密鍵SK(a)を保有すると判断される。一方、検証用データと平文Plane(a)とが一致しない場合(検証アルゴリズムが署名データSig(a)を棄却した場合)は、検証部42は半導体装置30が作成した署名データSig(a)が不当であると判断する。つまり、半導体装置30が秘密鍵SK(a)を保有しないと判断される。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。
一般的に、半導体装置ICx(署名者に対応する)と半導体装置ICy(検証者に対応する)との間で電子署名方式を用いた検証を実施する場合、ICxは秘密鍵SK(x)を保持している必要がある。この秘密鍵SK(x)は半導体装置ICxの不揮発性メモリ(記憶部)に格納されている。このため、半導体装置が不正に解析されると秘密鍵SK(x)などの重要なデータが漏洩してしまうという問題があった。
これに対して、本実施の形態にかかる暗号通信システムでは、半導体装置30の秘密鍵生成部33において、半導体装置30に固有のユニークコードUC(a)と記憶部32に格納されている訂正データCD(a)とを用いて、半導体装置30の秘密鍵SK(a)を生成している。よって、重要なデータである秘密鍵SK(a)を記憶部32に直接格納していないため、半導体装置が不正に解析されたとしても、秘密鍵SK(a)が漏洩することはない。このため、半導体装置30および半導体装置40をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。なお、半導体装置30および半導体装置40で構成される暗号通信システムのセキュリティレベルを更に向上させるために、半導体装置30、40にセキュアマイコンを使用してもよい。
以上で説明したように、本実施の形態にかかる発明により、セキュリティの向上を実現できる暗号通信システムおよび暗号通信方法を提供することができる。
<実施の形態3>
次に、本発明の実施の形態3について説明する。図7は、本実施の形態にかかる暗号通信システム3を示すブロック図である。本実施の形態では、暗号通信システムを電子署名方式に適用している。また、実施の形態2にかかる暗号通信システム2では、ステップS21において半導体装置30の公開鍵PK(a)を半導体装置40に送付していたが、本実施の形態にかかる暗号通信システム3では公開鍵生成部63を用いて半導体装置50の公開鍵PK(a)を生成している。
図7に示す本実施の形態にかかる暗号通信システム3は、半導体装置ICa(50)と半導体装置ICb(60)とを有する。半導体装置50は、ユニークコード生成部51、記憶部52、秘密鍵生成部53、および署名データ生成部54を有する。
ユニークコード生成部51は、半導体装置50に固有のユニークコードUC(a)を生成し、秘密鍵生成部53に出力する。ユニークコード生成部51の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部52は、訂正データCD(a)および平文Plane(a)を不揮発性メモリに格納することができる。
秘密鍵生成部53は、ユニークコード生成部51から出力されたユニークコードUC(a)と、記憶部52に格納されている訂正データCD(a)とを用いて、半導体装置50の秘密鍵SK(a)を生成する。ここで、秘密鍵生成部53はユニークコード訂正部として機能する。秘密鍵生成部53の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
署名データ生成部54は、秘密鍵生成部53で生成された秘密鍵SK(a)と、記憶部52に格納されている平文Plane(a)とを用いて署名データSig(a)を生成する。つまり、署名データ生成部54は電子署名方式における署名生成アルゴリズムを実行する。
半導体装置60は、ユニークコード生成部61、記憶部62、公開鍵生成部63、および検証部64を有する。ユニークコード生成部61は、半導体装置60に固有のユニークコードUC(b)を生成し、公開鍵生成部63に出力する。ユニークコード生成部61の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部62は、訂正データCD(b)を不揮発性メモリに格納することができる。
公開鍵生成部63は、ユニークコード生成部61から出力されたユニークコードUC(b)と、記憶部62に格納されている訂正データCD(b)とを用いて半導体装置50の公開鍵PK(a)を生成する。ここで、公開鍵生成部63はユニークコード訂正部として機能する。公開鍵生成部63の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
検証部64は、電子署名方式の検証アルゴリズムを実行する。すなわち、検証部64は、署名データSig(a)と半導体装置50の公開鍵PK(a)とを用いて検証用データを生成する。ここで、署名データSig(a)は、半導体装置50の秘密鍵SK(a)を用いて平文Plane(a)を暗号化することで生成されたデータである。よって、署名データSig(a)を半導体装置50の公開鍵PK(a)を用いて復号することで得られた検証用データは、半導体装置50から送られた平文Plane(a)に対応するデータである。したがって、検証部64は、検証用データと平文Plane(a)とを比較し、検証用データと平文Plane(a)とが一致した場合は、半導体装置50が秘密鍵SK(a)を保有すると判断することができる。
次に、本実施の形態にかかる暗号通信システムの動作について、図8に示すフローチャートを用いて説明する。まず、半導体装置50(署名者に対応する)の秘密鍵生成部53は、ユニークコード生成部51から出力されたユニークコードUC(a)と、記憶部52に格納されている訂正データCD(a)とを用いて、半導体装置50の秘密鍵SK(a)を生成する(ステップS31)。次に、半導体装置50の署名データ生成部54は、電子署名方式における署名生成アルゴリズムを実行する。つまり、署名データ生成部54は、秘密鍵生成部53で生成された秘密鍵SK(a)と、記憶部52に格納されている平文Plane(a)とを用いて署名データSig(a)を生成する(ステップS32)。
一方、半導体装置60(検証者に対応する)の公開鍵生成部63は、ユニークコード生成部61から出力されたユニークコードUC(b)と、記憶部62に格納されている訂正データCD(b)とを用いて半導体装置50の公開鍵PK(a)を生成する(ステップS33)。
署名データ生成部54で生成された署名データSig(a)は、半導体装置60の検証部64に送付される(ステップS34)。また、平文Plane(a)は、半導体装置60の検証部64に送付される(ステップS35)。なお、図7では、平文Plane(a)が記憶部52に格納されている場合を示したが、平文Plane(a)は外部から直接署名データ生成部54および検証部64に供給されるように構成してもよい。
半導体装置60の検証部64は、電子署名方式の検証アルゴリズムを実行する。すなわち、検証部64は、署名データSig(a)と半導体装置50の公開鍵PK(a)とを用いて検証用データを生成し、当該検証用データと平文Plane(a)とを比較する(ステップS36)。そして、検証用データと平文Plane(a)とが一致した場合(検証アルゴリズムが署名データSig(a)を受理した場合)は、検証部64は半導体装置50が作成した署名データSig(a)が正当であると判断する。つまり、半導体装置50が秘密鍵SK(a)を保有すると判断される。一方、検証用データと平文Plane(a)とが一致しない場合(検証アルゴリズムが署名データSig(a)を棄却した場合)は、検証部64は半導体装置50が作成した署名データSig(a)が不当であると判断する。つまり、半導体装置50が秘密鍵SK(a)を保有しないと判断される。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。
本実施の形態にかかる暗号通信システムにおいても、半導体装置50の秘密鍵生成部53において、半導体装置50に固有のユニークコードUC(a)と訂正データCD(a)とを用いて、半導体装置50の秘密鍵SK(a)を生成している。よって、重要なデータである秘密鍵SK(a)を記憶部52に直接格納していないため、半導体装置が不正に解析されたとしても、重要なデータである秘密鍵SK(a)が漏洩することはない。このため、半導体装置50および半導体装置60をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
更に、本実施の形態にかかる暗号通信システムでは、半導体装置60の公開鍵生成部63において、ユニークコードUC(b)と訂正データCD(b)とを用いて半導体装置50の公開鍵PK(a)を生成している。よって、半導体装置50から半導体装置60に公開鍵PK(a)を送付する必要がないため、使用している暗号方式が第三者に漏れることを防ぐことができ、暗号通信システムのセキュリティを更に向上させることができる。なお、半導体装置50および半導体装置60で構成される暗号通信システムのセキュリティレベルを更に向上させるために、半導体装置50、60にセキュアマイコンを使用してもよい。
<実施の形態4>
次に、本発明の実施の形態4について説明する。上記で説明した実施の形態1乃至3では、共通鍵や秘密鍵を生成するために使用される訂正データCD(a)、CD(b)を半導体装置に格納していた。しかしながら、共通鍵や秘密鍵を生成するために使用される訂正データCD(a)、CD(b)もセキュリティレベルの高い情報である。よって、訂正データCD(a)、CD(b)が第三者に漏洩しないような暗号通信システムを構成することが好ましい。
図9に示す本実施の形態にかかる暗号通信システム4では、共通鍵を生成するために使用される訂正データを各半導体装置70、80に格納するのではなく、訂正データを一括して管理するデータベース91を有する半導体装置90を設けている。ここで、半導体装置90のデータベース91にはセキュリティレベルの高い訂正データが格納されているので、セキュアマイコンを用いて半導体装置90を構成することが好ましい。一方、半導体装置70、80では、セキュリティレベルの高い共通鍵CK(1)の情報が不揮発性メモリに格納されないので、汎用マイコンを用いて構成することができる。つまり、記憶部72、82には一時的に共通鍵CK(1)が格納されるが、共通鍵CK(1)は揮発性メモリに格納されているため、半導体装置70、80の電源がオフになると共通鍵CK(1)の情報は消去される。よって、半導体装置70、80にはセキュリティレベルの高い共通鍵CK(1)は保持されない。以下、本実施の形態にかかる暗号通信システムについて詳細に説明する。
図9に示す暗号通信システム4は、半導体装置70、80、90を有する。半導体装置(第1の半導体装置)70は、ユニークコード生成部71、記憶部72、および共通鍵生成部(第1の共通鍵生成部)73を有する。
ユニークコード生成部71は、半導体装置70に固有のユニークコードUC(a)を生成し、共通鍵生成部73に出力する。ユニークコード生成部71の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部72は、共通鍵生成部73で生成された共通鍵CK(1)を揮発性メモリに格納する。共通鍵CK(1)は、半導体装置70の電源がオフになると消去される。尚、共通鍵CK(1)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(1)に対して、半導体装置70の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部73は、ユニークコード生成部71から出力されたユニークコードUC(a)と、半導体装置90から供給された訂正データ(第1の訂正データ)CD(1、a)とを用いて共通鍵CK(1)を生成する。ここで、共通鍵生成部73はユニークコード訂正部として機能する。共通鍵生成部73の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
半導体装置(第2の半導体装置)80は、ユニークコード生成部81、記憶部82、および共通鍵生成部(第2の共通鍵生成部)83を有する。
ユニークコード生成部81は、半導体装置80に固有のユニークコードUC(b)を生成し、共通鍵生成部83に出力する。ユニークコード生成部81の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部82は、共通鍵生成部83で生成された共通鍵CK(1)を揮発性メモリに格納する。共通鍵CK(1)は、半導体装置80の電源がオフになると消去される。尚、共通鍵CK(1)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(1)に対して、半導体装置80の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部83は、ユニークコード生成部81から出力されたユニークコードUC(b)と、半導体装置90から供給された訂正データ(第2の訂正データ)CD(1、b)とを用いて共通鍵CK(1)を生成する。ここで、共通鍵生成部83はユニークコード訂正部として機能する。共通鍵生成部83の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
半導体装置(第3の半導体装置)90は、訂正データが格納されたデータベース91を有する。図10は、データベース91が有するデータの一例を示す表である。図10に示すように、データベース91には、半導体装置の情報(ICa、ICb、ICc、・・・、ICz)と半導体装置で生成される公開鍵(CK(1)、CK(2)、CK(3)、・・・、CK(n))とに対応づけられた訂正データ(CD(1、a)、CD(1、b)、・・・)が格納されている。
例えば、共通鍵CK(1)を半導体装置ICaで生成する場合は、訂正データCD(1、a)を半導体装置ICaに送付する。また、共通鍵CK(1)を半導体装置ICbで生成する場合は、訂正データCD(1、b)を半導体装置ICbに送付する。同様に、例えば、共通鍵CK(3)を半導体装置ICaで生成する場合は、訂正データCD(3、a)を半導体装置ICaに送付する。また、共通鍵CK(3)を半導体装置ICbで生成する場合は、訂正データCD(3、b)を半導体装置ICbに送付する。
本実施の形態にかかる暗号通信システムでは、ユニークコードUC(a)、UC(b)が異なる場合であっても、演算パラメータ(実施の形態1参照)を用いてエラー訂正後のユニークコードUC(a)''、UC(b)''にそれぞれ異なる演算を実施することで、同じ共通鍵CK(1)を生成することができる。
また、共通鍵CKは、訂正データCDの演算パラメータを変更することで変えることができる。つまり、訂正データCDの演算パラメータを変更することで、図10に示す共通鍵CK(1)、CK(2)、CK(3)、・・・、CK(n)のように、複数の共通鍵を生成することができる。よって、本実施の形態にかかる暗号通信システムでは、半導体装置90から半導体装置70、80に送付する訂正データCDを定期的に変更することで、半導体装置70、80の共通鍵CKを容易に変更することができ、セキュリティレベルを容易に向上させることができる。
なお、半導体装置90から半導体装置70、80に送付される訂正データCDはセキュリティレベルの高い情報であるので、訂正データCDを半導体装置70、80に送付する際は、公開鍵暗号方式を用いて訂正データCDを暗号化して送付してもよい。この場合は、例えば半導体装置70が半導体装置70の秘密鍵を保持し、半導体装置90が訂正データCD(1、a)を送付する際に半導体装置70の公開鍵で訂正データCD(1、a)を暗号化する。そして、半導体装置70が暗号化された訂正データCD(1、a)を秘密鍵を用いて復号することで、半導体装置90から半導体装置70に暗号化して訂正データを送付することができる。
次に、本実施の形態にかかる暗号通信システム4の動作について、図11に示すフローチャートを用いて説明する。まず、半導体装置ICs(90)は半導体装置ICa(70)に訂正データCD(1、a)を送付する(ステップS41)。次に、半導体装置70の共通鍵生成部73は、ユニークコード生成部71から出力されたユニークコードUC(a)と、半導体装置90から送付された訂正データCD(1、a)とを用いて共通鍵CK(1)を生成する(ステップS42)。
また、半導体装置ICs(90)は半導体装置ICb(80)に訂正データCD(1、b)を送付する(ステップS43)。次に、半導体装置80の共通鍵生成部83は、ユニークコード生成部81から出力されたユニークコードUC(b)と、半導体装置90から送付された訂正データCD(1、b)とを用いて共通鍵CK(1)を生成する(ステップS44)。このような処理により、半導体装置70と半導体装置80は共に共通鍵CK(1)を保持することができる。よって、半導体装置70および半導体装置80は共通鍵CK(1)を用いて暗号通信することが可能となる(ステップS45)。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。
なお、半導体装置90から半導体装置70、80に訂正データCDを送付する場合は、例えば半導体装置90から半導体装置70、80に定期的に訂正データCDを送付してもよい。また、半導体装置70、80から訂正データCDを送付するように要求があったタイミングで、半導体装置90から半導体装置70、80に訂正データCDを送付するようにしてもよい。
半導体装置90と半導体装置70、80は互いに有線で接続されていてもよく、また無線で接続されていてもよい。更に、半導体装置90と半導体装置70、80は訂正データCDを送受信するときのみ互いに接続されるように構成してもよい。また、半導体装置90から半導体装置70、80にインターネット経由で訂正データCDを送付してもよい。この場合は、セキュリティの関係上、上述した方法を用いて訂正データCDを暗号化することが好ましい。
また、複数組の半導体装置がそれぞれ異なる共通鍵CKで通信するように構成してもよい。例えば半導体装置ICd、ICe、ICfが共通鍵CK(2)を用いて互いに通信するように構成し、且つ半導体装置ICg、ICh、ICiが共通鍵CK(3)を用いて互いに通信するように構成してもよい。この場合は、半導体装置90から半導体装置ICd、ICe、ICfにそれぞれ、共通鍵CK(2)を生成するための訂正データCD(2、d)、CD(2、e)、CD(2、f)が送付される。また、半導体装置90から半導体装置ICg、ICh、ICiにそれぞれ、共通鍵CK(3)を生成するための訂正データCD(3、g)、CD(3、h)、CD(3、i)が送付される。
このように、本実施の形態にかかる暗号通信システムでは、訂正データCDを一括して管理する半導体装置90を設けている。このため、共通鍵CKを生成するために使用される訂正データCDを各半導体装置70、80に格納する必要がないため、暗号通信システムのセキュリティを向上させることができる。ここで、半導体装置90のデータベース91にはセキュリティレベルの高い訂正データが格納されているので、セキュアマイコンを用いて半導体装置90を構成することが好ましい。一方、半導体装置70、80では、セキュリティレベルの高い共通鍵CKの情報が不揮発性メモリに格納されないので、汎用マイコンを用いて構成することができる。しかし、暗号通信システムのセキュリティレベルを更に向上させるために、半導体装置70、80にセキュアマイコンを使用してもよい。
また、本実施の形態にかかる暗号通信システムでは、データベース91を用いて訂正データCDを一括して管理しているので、各半導体装置の共通鍵CKを容易に変更することができる。このため、半導体装置70、80の共通鍵CKを定期的に変更することが容易となり、暗号通信システムのセキュリティを更に向上させることができる。
<実施の形態5>
次に、本発明の実施の形態5について説明する。図12は本実施の形態にかかる暗号通信システムを示すブロック図である。実施の形態4で説明した暗号通信システムでは、データベース91で訂正データを一括管理していたが、本実施の形態にかかる暗号通信システムでは、半導体装置130が備える訂正データ生成部132を用いて、半導体装置ICa(110)および半導体装置ICb(120)に送付する訂正データを生成している。これ以外は、実施の形態4にかかる暗号通信システムと基本的に同様である。以下、詳細に説明する。
図12に示す暗号通信システム5は、半導体装置110、120、130を有する。半導体装置110は、ユニークコード生成部111、記憶部112、および共通鍵生成部113を有する。
ユニークコード生成部111は、半導体装置110に固有のユニークコードUC(a)を生成し、共通鍵生成部113および半導体装置130の訂正データ生成部132に出力する。ユニークコード生成部111の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部112は、共通鍵生成部113で生成された共通鍵CK(1)を揮発性メモリに格納する。共通鍵CK(1)は、半導体装置110の電源がオフになると消去される。尚、共通鍵CK(1)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(1)に対して、半導体装置110の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部113は、ユニークコード生成部111から出力されたユニークコードUC(a)と、半導体装置130から供給された訂正データCD(1、a)とを用いて共通鍵CK(1)を生成する。ここで、共通鍵生成部113はユニークコード訂正部として機能する。共通鍵生成部113の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
半導体装置120は、ユニークコード生成部121、記憶部122、および共通鍵生成部123を有する。
ユニークコード生成部121は、半導体装置120に固有のユニークコードUC(b)を生成し、共通鍵生成部123および半導体装置130の訂正データ生成部132に出力する。ユニークコード生成部121の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部122は、共通鍵生成部123で生成された共通鍵CK(1)を揮発性メモリに格納する。共通鍵CK(1)は、半導体装置120の電源がオフになると消去される。尚、共通鍵CK(1)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(1)に対して、半導体装置120の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部123は、ユニークコード生成部121から出力されたユニークコードUC(b)と、半導体装置130から供給された訂正データCD(1、b)とを用いて共通鍵CK(1)を生成する。ここで、共通鍵生成部123はユニークコード訂正部として機能する。共通鍵生成部123の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
半導体装置130は、記憶部131および訂正データ生成部132を有する。記憶部131は、共通鍵CK(1)を不揮発性メモリに格納している。ここで、共通鍵CK(1)の情報は半導体装置130の電源をオフにしても消去されない。よって、半導体装置が不正に解析されることで共通鍵CK(1)の情報が第三者に漏洩してしまうことを防ぐために、半導体装置130をセキュアマイコンで構成することが好ましい。なお、半導体装置110、120については、実施の形態4の場合と同様に、汎用マイコンを用いることができる。
訂正データ生成部132は、半導体装置110のユニークコードUC(a)と記憶部131に格納されている共通鍵CK(1)とを用いて訂正データCD(1、a)を生成する。また、訂正データ生成部132は、半導体装置120のユニークコードUC(b)と記憶部131に格納されている共通鍵CK(1)とを用いて訂正データCD(1、b)を生成する。
訂正データ生成部132が訂正データを生成する場合の動作について、図14を用いて詳細に説明する。なお、以下では、訂正データ生成部132が訂正データCD(1、a)を生成する場合について説明するが、訂正データ生成部132が訂正データCD(1、b)を生成する場合も同様である。
まず、半導体装置ICa(110)からユニークコードUC(a)を複数回取得する(ステップS61)。次に、ステップS61で取得したユニークコードUC(a)を統計的に処理し、ユニークコードUC(a)の各ビットを、(1)値が安定したビット、(2)高確率で変動するビット(つまり、値の変動が比較的大きいビット)、(3)低確率で変動するビット(つまり、値の変動が比較的小さいビット)の3つに分類する。そして、(2)高確率で変動するビットを用いてマスクデータを生成する(ステップS62)。このとき、例えばユニークコードUC(a)の各ビットのうち、所定の閾値よりも高い確率で変動するビットの位置を示す情報をマスクデータとする。例えば、図4に示したマスクデータでは、高確率で変動するビットの位置(つまり、マスクする位置)を"0"で示している。
次に、ステップS62で生成したマスクデータを用いてユニークコードUC(a)をマスクし、高確率で変動するビットを削除する。そして、マスク後のユニークコードUC(a)'(つまり、値が安定したビットと低確率で変動するビットを含むユニークコード)のエラーを訂正できるECCコードを生成する(ステップS63)。ECCコードは、例えばBCH符号やリードソロモン符号である。
次に、ステップS62で生成したマスクデータおよびステップS63で生成したECCコードを用いて処理をしたユニークコードUC(a)''(つまり、値が安定したビットを含むユニークコード)と、記憶部131に格納されている共通鍵CK(1)とを用いて、演算パラメータを生成する(ステップS64)。すなわち、演算パラメータは、訂正されたユニークコードUC(a)''から共通鍵CK(1)を生成するために必要なパラメータである。
上記処理により生成されたマスクデータ、ECCコード、および演算パラメータを訂正データCD(1、a)として半導体装置ICa(110)に送付する(ステップS65)。
次に、本実施の形態にかかる暗号通信システム5の動作について、図13に示すフローチャートを用いて説明する。まず、半導体装置ICa(110)は半導体装置ICs(130)の訂正データ生成部132にユニークコードUC(a)を送付する(ステップS51)。次に、半導体装置130の訂正データ生成部132は、送付されたユニークコードUC(a)と共通鍵CK(1)とを用いて訂正データCD(1、a)を生成する(ステップS52)。ここで、訂正データ生成部132が訂正データCD(1、a)を生成するには、ユニークコードUC(a)を複数回取得する必要がある。よって、ユニークコードUC(a)を複数回取得するためにステップS51を繰り返す。生成された訂正データCD(1、a)は、半導体装置110に送付される(ステップS53)。半導体装置110の共通鍵生成部113は、ユニークコード生成部111から出力されたユニークコードUC(a)と、半導体装置130から送付された訂正データCD(1、a)とを用いて共通鍵CK(1)を生成する(ステップS54)。
また、半導体装置ICb(120)は半導体装置ICs(130)の訂正データ生成部132にユニークコードUC(b)を送付する(ステップS55)。次に、半導体装置130の訂正データ生成部132は、送付されたユニークコードUC(b)と共通鍵CK(1)とを用いて訂正データCD(1、b)を生成する(ステップS56)。ここで、訂正データ生成部132が訂正データCD(1、b)を生成するには、ユニークコードUC(b)を複数回取得する必要がある。よって、ユニークコードUC(b)を複数回取得するためにステップS55を繰り返す。生成された訂正データCD(1、b)は、半導体装置120に送付される(ステップS57)。半導体装置120の共通鍵生成部123は、ユニークコード生成部121から出力されたユニークコードUC(b)と、半導体装置130から送付された訂正データCD(1、b)とを用いて共通鍵CK(1)を生成する(ステップS58)。
このような処理により、半導体装置110と半導体装置120は共に共通鍵CK(1)を保持することができる。よって、半導体装置110および半導体装置120は共通鍵CK(1)を用いて暗号通信することが可能となる(ステップS59)。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。例えば、ステップS51〜S54とステップS55〜S58は並行して実施してもよい。
このように、本実施の形態にかかる暗号通信システムにおいても、訂正データを一括して管理する半導体装置130を設けている。このため、共通鍵を生成するために使用される訂正データを各半導体装置110、120に格納する必要がないため、暗号通信システムのセキュリティを向上させることができる。ここで、半導体装置130の記憶部131にはセキュリティレベルの高い訂正データが格納されているので、セキュアマイコンを用いて半導体装置130を構成することが好ましい。一方、半導体装置110、120では、セキュリティレベルの高い共通鍵CKの情報が不揮発性メモリに格納されないので、汎用マイコンを用いて構成することができる。しかし、暗号通信システムのセキュリティレベルを更に向上させるために、半導体装置110、120にセキュアマイコンを使用してもよい。
<実施の形態6>
次に、本発明の実施の形態6について説明する。図15は本実施の形態にかかる暗号通信システムを示すブロック図である。実施の形態5で説明した暗号通信システムでは、半導体装置ICa(110)と半導体装置ICb(120)とが同一の共通鍵CK(1)を有する場合について説明した。本実施の形態にかかる暗号通信システムでは、半導体装置ICa(140)と半導体装置ICb(150)とが異なる共通鍵を有し、半導体装置ICs(160)を介して通信している。これ以外は、実施の形態5にかかる暗号通信システムと基本的に同様である。以下、詳細に説明する。
図15に示す暗号通信システム6は、半導体装置140、150、160を有する。半導体装置140は、ユニークコード生成部141、記憶部142、および共通鍵生成部143を有する。
ユニークコード生成部141は、半導体装置140に固有のユニークコードUC(a)を生成し、共通鍵生成部143および半導体装置160の訂正データ生成部162に出力する。ユニークコード生成部141の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部142は、共通鍵生成部143で生成された共通鍵(第1の共通鍵)CK(1)を揮発性メモリに格納する。共通鍵CK(1)は、半導体装置140の電源がオフになると消去される。
共通鍵生成部143は、ユニークコード生成部141から出力されたユニークコードUC(a)と、半導体装置160から供給された訂正データCD(1、a)とを用いて共通鍵CK(1)を生成する。ここで、共通鍵生成部143はユニークコード訂正部として機能する。共通鍵生成部143の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
半導体装置150は、ユニークコード生成部151、記憶部152、および共通鍵生成部153を有する。
ユニークコード生成部151は、半導体装置150に固有のユニークコードUC(b)を生成し、共通鍵生成部153および半導体装置160の訂正データ生成部162に出力する。ユニークコード生成部151の基本的な構成および動作は、実施の形態1で説明したユニークコード生成部11と同様であるので重複した説明は省略する。
記憶部152は、共通鍵生成部153で生成された共通鍵(第2の共通鍵)CK(2)を揮発性メモリに格納する。共通鍵CK(2)は、半導体装置150の電源がオフになると消去される。
共通鍵生成部153は、ユニークコード生成部151から出力されたユニークコードUC(b)と、半導体装置160から供給された訂正データCD(2、b)とを用いて共通鍵CK(2)を生成する。ここで、共通鍵生成部153はユニークコード訂正部として機能する。共通鍵生成部153の基本的な構成および動作は、実施の形態1で説明した共通鍵生成部13と同様であるので重複した説明は省略する。
半導体装置160は、記憶部161および訂正データ生成部162を有する。記憶部161は、共通鍵CK(1)および共通鍵CK(2)を不揮発性メモリに格納している。ここで、共通鍵CK(1)および共通鍵CK(2)の情報は半導体装置160の電源をオフにしても消去されない。よって、半導体装置が不正に解析されることで共通鍵CK(1)および共通鍵CK(2)の情報が第三者に漏洩してしまうことを防ぐために、半導体装置160をセキュアマイコンで構成することが好ましい。なお、半導体装置140、150については、実施の形態5の場合と同様に、汎用マイコンを用いることができる。
訂正データ生成部162は、半導体装置140のユニークコードUC(a)と記憶部161に格納されている共通鍵CK(1)とを用いて訂正データCD(1、a)を生成する。また、訂正データ生成部162は、半導体装置150のユニークコードUC(b)と記憶部161に格納されている共通鍵CK(2)とを用いて訂正データCD(2、b)を生成する。
次に、本実施の形態にかかる暗号通信システム6の動作について、図16に示すフローチャートを用いて説明する。まず、半導体装置ICa(140)は半導体装置ICs(160)の訂正データ生成部162にユニークコードUC(a)を送付する(ステップS71)。次に、半導体装置160の訂正データ生成部162は、送付されたユニークコードUC(a)と共通鍵CK(1)とを用いて訂正データCD(1、a)を生成する(ステップS72)。ここで、訂正データ生成部162が訂正データCD(1、a)を生成するには、ユニークコードUC(a)を複数回取得する必要がある。よって、ユニークコードUC(a)を複数回取得するためにステップS71を繰り返す。生成された訂正データCD(1、a)は、半導体装置140に送付される(ステップS73)。半導体装置140の共通鍵生成部143は、ユニークコード生成部141から出力されたユニークコードUC(a)と、半導体装置160から送付された訂正データCD(1、a)とを用いて共通鍵CK(1)を生成する(ステップS74)。
また、半導体装置ICb(150)は半導体装置ICs(160)の訂正データ生成部162にユニークコードUC(b)を送付する(ステップS75)。次に、半導体装置160の訂正データ生成部162は、送付されたユニークコードUC(b)と共通鍵CK(2)とを用いて訂正データCD(2、b)を生成する(ステップS76)。ここで、訂正データ生成部162が訂正データCD(2、b)を生成するには、ユニークコードUC(b)を複数回取得する必要がある。よって、ユニークコードUC(b)を複数回取得するためにステップS75を繰り返す。生成された訂正データCD(2、b)は、半導体装置150に送付される(ステップS77)。半導体装置150の共通鍵生成部153は、ユニークコード生成部151から出力されたユニークコードUC(b)と、半導体装置160から送付された訂正データCD(2、b)とを用いて共通鍵CK(2)を生成する(ステップS78)。
このような処理により、半導体装置140と半導体装置160は共に共通鍵CK(1)を保持することができる。よって、半導体装置140および半導体装置160は共通鍵CK(1)を用いて暗号通信することが可能となる(ステップS79)。また、半導体装置150と半導体装置160は共に共通鍵CK(2)を保持することができる。よって、半導体装置150および半導体装置160は共通鍵CK(2)を用いて暗号通信することが可能となる(ステップS80)。したがって、半導体装置140と半導体装置150は、半導体装置160を介して通信することができる(ゲートウェイ構成)。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。例えば、ステップS71〜S74とステップS75〜S78は並行して実施してもよい。
このように、本実施の形態にかかる暗号通信システムにおいても、訂正データを一括して管理する半導体装置160を設けている。このため、共通鍵を生成するために使用される訂正データを各半導体装置140、150に格納する必要がないため、暗号通信システムのセキュリティを向上させることができる。ここで、半導体装置160の記憶部161にはセキュリティレベルの高い訂正データが格納されているので、セキュアマイコンを用いて半導体装置160を構成することが好ましい。一方、半導体装置140、150では、セキュリティレベルの高い共通鍵CKの情報が不揮発性メモリに格納されないので、汎用マイコンを用いて構成することができる。しかし、暗号通信システムのセキュリティレベルを更に向上させるために、半導体装置140、150にセキュアマイコンを使用してもよい。
<実施の形態7>
次に、本発明の実施の形態7について説明する。図17は実施の形態1乃至6にかかる暗号通信システムを車載用半導体装置に適用した場合を示すブロック図である。図17に示すように、車両180にはゲートウェイ部170、故障診断ユニット171、エンジン制御ユニット172、ブレーキ制御ユニット173、ランプ制御ユニット174、ドアロック制御ユニット175、鍵挿入制御ユニット176、カーナビゲーションシステム178、およびDCM(Data Communication Module)179が設けられている。
ゲートウェイ部170は、各ユニット171〜176およびカーナビゲーションシステム178で構成されるネットワークを中継するための機器である。ゲートウェイ部170にはセキュアマイコンICsが設けられている。故障診断ユニット171は、車両180を構成する部品が故障しているか診断するユニットである。故障診断ユニット171には半導体装置ICaが設けられている。エンジン制御ユニット172は、エンジン動作における電気的な制御(燃料供給、点火タイミングの調整等)を総合的に行うためのユニットである。エンジン制御ユニット172には半導体装置ICbが設けられている。ブレーキ制御ユニット173は、ABS(Antilock Brake System)などブレーキを制御するためのユニットである。ブレーキ制御ユニット173には半導体装置ICcが設けられている。ランプ制御ユニット174は、車両のヘッドライトやウインカー等を制御するためのユニットである。ランプ制御ユニット174には半導体装置ICdが設けられている。
ドアロック制御ユニット175は、ドアのロックを制御するためのユニットである。ドアロック制御ユニット175には半導体装置ICeと、鍵177と無線通信するための通信部が設けられている。鍵挿入制御ユニット176は、挿入された鍵177が正規のユーザの鍵であるかを判断するためのユニットである。鍵挿入制御ユニット176には、半導体装置ICfと、鍵177と無線通信するための通信部が設けられている。鍵177は、半導体装置ICgと、ドアロック制御ユニット175および鍵挿入制御ユニット176と無線通信するための通信部が設けられている。各ユニット171〜176、および鍵177に設けられている半導体装置ICa〜ICgには、例えば汎用マイコンを用いることができる。
カーナビゲーションシステム178にはセキュアマイコンIChが設けられている。DCM179は、車両内における各ユニット171〜176から取得した情報を外部のサーバ181に送信したり、サーバ181から情報を取得したりするための通信モジュールである。
各ユニット171〜176およびカーナビゲーションシステム178はそれぞれゲートウェイ部170と接続されており、各ユニット171〜176はゲートウェイ部170を介して互いに通信可能に構成されている。このとき、各ユニット171〜176とゲートウェイ部170との間の通信に用いる共通鍵は、ユニット毎に異なるようにしてもよい。例えば故障診断ユニット171とゲートウェイ部170との通信に共通鍵CK(1)を用い、エンジン制御ユニット172とゲートウェイ部170との通信に共通鍵CK(2)を用いるように構成してもよい。なお、この場合は、図15に示した実施の形態6にかかる暗号通信システム6における半導体装置ICa(140)が故障診断ユニット171に対応し、半導体装置ICb(150)がエンジン制御ユニット172に対応し、半導体装置ICs(160)がゲートウェイ部170に対応している。
各ユニット171〜176とゲートウェイ部との間の通信で用いられる共通鍵を生成するために用いられる訂正データCDは、例えばゲートウェイ部170の半導体装置ICsやカーナビゲーションシステム178の半導体装置IChに格納することができる。また、共通鍵を生成するために用いられる訂正データCDは、サーバ181から供給されるようにしてもよい。サーバ181から訂正データCDが供給されることで、各ユニット171〜176とゲートウェイ部170との通信で用いられる共通鍵を容易に変更することができる。サーバ181から供給された訂正データCDは、例えばゲートウェイ部170の半導体装置ICsやカーナビゲーションシステム178の半導体装置IChに格納することができる。
また、カーナビゲーションシステム178は、各ユニット171〜176から取得した情報(例えば、故障情報など)を、DCM179を介してサーバ181に送信することができる。このとき、DCM179とサーバ181との間の通信を暗号化してもよい。
図17に示した例では、各ユニット171〜176がゲートウェイ部170を介して通信している構成を示した。しかし、各ユニット171〜176が互いに同一の共通鍵を用いて通信するように構成してもよい。この場合は、例えば各ユニット171〜176が共通バスを介して互いに接続されるように構成する。各ユニット171〜176に格納される共通鍵は、例えば実施の形態1(図1)、実施の形態4(図9)、実施の形態5(図12)で説明した方法を用いることで生成することができる。
<実施の形態8>
図18は、実施の形態8にかかる暗号通信システムを示すブロック図である。本実施の形態にかかる暗号通信システム201は、半導体装置ICa(第1の半導体装置)210と半導体装置ICz(第2の半導体装置)220とを有する。半導体装置ICa(210)は他の半導体装置(不図示)とセキュアなネットワークを構成している。本実施の形態では、半導体装置ICa(210)を含むセキュアなネットワークに、半導体装置ICz(220)を新たに追加する場合について説明する。
半導体装置210は、ユニークコード生成部211、記憶部212、共通鍵生成部(第1の共通鍵生成部)213、および訂正データ生成部214を有する。
ユニークコード生成部211は、半導体装置210に固有の値であってランダムなエラーを含むユニークコード(第1のユニークコード)UC(a)を生成し、共通鍵生成部213に出力する。ここで、ユニークコードUC(a)は、半導体装置210が備える素子固有の物理的な特性により決まる値である。例えば、ユニークコード生成部211は、半導体装置210が備えるメモリ素子の起動時の値を用いてユニークコードUC(a)を生成することができる。ユニークコードは、ICの設計は同一であるが実際に製造されるICは個々にばらつきを有するという性質を利用して生成されるコードである。このような技術は、PUF(Physical Unclonable Function)と呼ばれ、同一の回路を備えたICを1の半導体ウェハーに複数個同時に同一の製造装置により製造しても、個々のIC毎で固有のコードを得ることができると共に、別のICでの複製を困難にすることができる技術である。この技術を用いることにより、耐タンパチップのような特殊なハードウェアを使用することなく、データの高い秘匿性を実現することができる。
記憶部212は、訂正データ(第1の訂正データ)CD(a)と、共通鍵生成部213で生成された共通鍵(第1の共通鍵)CK(a)とを格納することができる。記憶部212は、揮発性メモリ(例えば、SRAM)と不揮発性メモリ(例えばフラッシュメモリ)とを有し、訂正データCD(a)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部212は一時的に共通鍵CK(a)を格納するが、半導体装置210の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置210の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部213は、ユニークコード生成部211から出力されたユニークコードUC(a)と、記憶部212に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する。
ユニークコード生成部211で生成されるユニークコードUC(a)は、ユニークコード生成時の外的要因、例えば、温度、電圧等によって変動するビットの値を含むデータである。このため、ユニークコード生成部211で生成されるユニークコードUC(a)には、(1)値が安定したビット、(2)高確率で変動するビット(つまり、値の変動が比較的大きいビット)、(3)低確率で変動するビット(つまり、値の変動が比較的小さいビット)の3つが含まれる。このように、ユニークコード生成部211で生成されるユニークコードUC(a)は、(2)高確率で変動するビットと(3)低確率で変動するビットとを含む。よって、ユニークコードUC(a)は生成される毎に異なる値となる。
高確率で変動するビットは製造工程で把握することができる。よって、製造工程において各ビットを判定することで、高確率で変動するビットをマスクするマスクデータを作成することができる。そして、このマスクデータを用いて、ユニークコード生成部211で生成されたユニークコードUC(a)をマスクすることで、ユニークコードUC(a)に含まれる高確率で変動するビットを削除することができる。ここで、高確率で変動するビットの位置は半導体装置毎に異なるため、マスクデータは半導体装置に固有のデータとなる。
低確率で変動するビットは、外的要因や残存する電荷などに起因して変動するため、予め予測することが困難である。このため、低確率で変動するビットは、例えばBCH符号やリードソロモン符号に代表されるECCコードを製造時に生成し、このECCコードを用いて変動性のあるビットを除外するようなエラー訂正を行う。以下で、共通鍵生成部213の動作について具体的に説明する。
図20は、共通鍵生成部213の動作を説明するためのフローチャートであり、図21は共通鍵生成部213で処理されるユニークコードの一例を示す表である。まず、共通鍵生成部213は、ユニークコード生成部211からユニークコードUC(a)を読み込む(ステップS111)。このとき読み込まれたユニークコードUC(a)は、変動性のあるビットを除外するようなエラー訂正が実施されていないユニークコードである。
次に、訂正データCD(a)に含まれるマスクデータを用いて、読み込まれたユニークコードUC(a)をマスクする(ステップS112)。ここで、マスクデータは、ユニークコードUC(a)のビットのうちビットの値が変動するようなエラー率の高いビットをマスクするためのデータである。図21に示す例では、ユニークコードUC(a)の1ビット目と6ビット目のビットのエラー率が高いため、マスクデータが"0"となっている。これ以外のビットは、エラー率が低いビットまたは値が安定しているビットであるため、マスクデータが"1"となっている。つまり、マスクが必要なビットのマスクデータは"0"となり、マスクが不要なビットのマスクデータは"1"となる。そして、マスクデータを用いてユニークコードUC(a)をマスクすることで、ユニークコードUC(a)の1ビット目と6ビット目のビットを削除したマスク処理後のユニークコードUC(a)'を得ることができる(マスク処理により削除したビットは"X"で示している)。その後、マスク処理後のユニークコードUC(a)'は左詰めされる。
次に、訂正データCD(a)に含まれるECCコード(エラー訂正コード)を用いて、マスク処理後のユニークコードUC(a)'に含まれる値の変動率が低いビットのエラーを訂正することによりユニークコードUC(a)''を得る(ステップS113)。図21に示す例では、ECCコードを用いてマスク処理後のユニークコードUC(a)'を処理することにより、1ビット目のビットが"0"から"1"に訂正されている。
次に、訂正データCD(a)に含まれる演算パラメータを用いて、エラー訂正後のユニークコードUC(a)''に所定の演算を実施する(ステップS114)。図21に示す例では、エラー訂正後のユニークコードUC(a)''にNOT演算を実施している。この演算処理後のユニークコードUC(a)が共通鍵CK(a)となる。なお、NOT演算は一例であり、エラー訂正後のユニークコードUC(a)''に実施する演算はどのような演算であってもよい。この演算パラメータを変更することで、必要に応じて共通鍵CK(a)を変更することができる。また、演算パラメータを用いて、エラー訂正後のユニークコードUC(a)''に所定の演算を実施することで、共通鍵CK(a)をユニークコードUC(a)と見かけ上類似しないコードとすることができる。よって、セキュリティレベルを向上させることができる。また、エラー訂正後のユニークコードUC(a)''に実施する演算は省略することもできる。この場合は、マスクデータおよびECCコードを用いて処理したユニークコードUC(a)''が、共通鍵CK(a)となる。このようにして生成された共通鍵CK(a)は、記憶部212に出力される。
以上で説明したように、共通鍵生成部213は共通鍵CK(a)を生成する機能を有すると同時に、訂正データCD(a)を用いてユニークコードUC(a)を訂正する機能も有する。すなわち、共通鍵生成部213はユニークコード訂正部としても機能する。
なお、訂正データCD(a)に含まれるマスクコード、ECCコード、および演算パラメータは、半導体装置210の固有データとして予め生成されて記憶部212に格納されている。訂正データCD(a)の生成方法については、訂正データ生成部214が訂正データCD(z)を生成する場合と同様である。
訂正データ生成部214は、半導体装置220のユニークコード(第2のユニークコード)UC(z)と共通鍵CK(a)とを用いて訂正データ(第2の訂正データ)CD(z)を生成する。訂正データ生成部214が訂正データを生成する場合の動作について、図22を用いて詳細に説明する。
まず、半導体装置ICz(220)からユニークコードUC(z)を複数回取得する(ステップS121)。次に、ステップS121で取得したユニークコードUC(z)を統計的に処理し、ユニークコードUC(z)の各ビットを、(1)値が安定したビット、(2)高確率で変動するビット(つまり、値の変動が比較的大きいビット)、(3)低確率で変動するビット(つまり、値の変動が比較的小さいビット)の3つに分類する。そして、(2)高確率で変動するビットを用いてマスクデータを生成する(ステップS122)。このとき、例えばユニークコードUC(z)の各ビットのうち、所定の閾値よりも高い確率で変動するビットの位置を示す情報をマスクデータとする。例えば、図21に示したマスクデータでは、高確率で変動するビットの位置(つまり、マスクする位置)を"0"で示している。
次に、ステップS122で生成したマスクデータを用いてユニークコードUC(z)をマスクし、高確率で変動するビットを削除する。そして、マスク後のユニークコードUC(z)''(つまり、値が安定したビットと低確率で変動するビットを含むユニークコード)の変動性のあるビットを除外するための訂正ができるECCコードを生成する(ステップS123)。ECCコードは、例えばBCH符号やリードソロモン符号である。
次に、ステップS122で生成したマスクデータおよびステップS123で生成したECCコードを用いて処理をしたユニークコードUC(z)''(つまり、値が安定したビットを含むユニークコード)と、記憶部12に格納されている共通鍵CK(a)とを用いて、演算パラメータを生成する(ステップS124)。すなわち、演算パラメータは、訂正されたユニークコードUC(z)''から共通鍵CK(a)を生成するために必要なパラメータである。上記処理により生成されたマスクデータ、ECCコード、および演算パラメータを訂正データCD(z)として半導体装置ICz(220)に送付する(ステップS125)。
なお、訂正データCD(z)を生成するための処理(ステップS121〜S125)は、複数の半導体装置を用いて分散させて実施してもよい。図23は、複数の半導体装置ICa、ICb、ICc、ICdを用いて訂正データCD(z)を生成する場合を示す図である。ここで、半導体装置ICa、ICb、ICc、ICdはセキュアなネットワークを構成している。
図23に示す例では、半導体装置ICaがステップS121、S125を実施している。つまり、半導体装置ICaは半導体装置ICzとの窓口として機能する。半導体装置ICbはステップS122(マスクデータの生成)を実施している。半導体装置ICcはステップS123(ECCコードの生成)を実施している。半導体装置ICdはステップS124(演算パラメータの生成)を実施している。なお、図23に示す例は一例であり、各ステップを実施する半導体装置は、任意に割り当てることができる。このように、訂正データCD(z)を生成するための処理(ステップS121〜S125)を、複数の半導体装置に分散させることで、暗号通信システムのセキュリティレベルを向上させることができ、また一つの半導体装置に負荷が集中することを回避することができる。
図18に示す半導体装置220は、ユニークコード生成部221、記憶部222、および共通鍵生成部(第2の共通鍵生成部)223を有する。ユニークコード生成部221は、半導体装置220に固有の値であってランダムなエラーを含むユニークコードUC(z)を生成し、訂正データ生成部214および共通鍵生成部223に出力する。なお、ユニークコード生成部221の構成および動作は、上記で説明したユニークコード生成部211と基本的に同様である。
記憶部222は、共通鍵生成部223で生成された共通鍵CK(a)を格納することができる。記憶部222は、揮発性メモリに共通鍵CK(a)を格納する。よって、記憶部222は一時的に共通鍵CK(a)を格納するが、半導体装置220の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置220の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部223は、ユニークコード生成部221から出力されたユニークコードUC(z)と、訂正データ生成部214から出力された訂正データCD(z)とを用いて共通鍵(第1の共通鍵)CK(a)を生成する。なお、共通鍵生成部223が共通鍵CK(a)を生成する方法は、上述した共通鍵生成部213が共通鍵CK(a)を生成する方法と基本的に同様である。
次に、本実施の形態にかかる暗号通信システムの動作について、図19に示すフローチャートを用いて説明する。まず、半導体装置ICa(210)の共通鍵生成部13は、ユニークコード生成部211から出力されたユニークコードUC(a)と、記憶部212に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する(ステップS101)。その後、半導体装置ICa(210)は他の半導体装置ICb〜ICy(不図示)と共通鍵CK(a)を用いて通信を開始する(ステップS102)。
半導体装置220は、半導体装置210の訂正データ生成部214に半導体装置220のユニークコードUC(z)を送付する(ステップS103)。半導体装置210の訂正データ生成部214は、半導体装置220のユニークコードUC(z)と、記憶部212に格納されている共通鍵CK(a)とを用いて訂正データCD(z)を生成する(ステップS104)。訂正データ生成部214が訂正データCD(z)を生成するには、ユニークコードUC(z)を複数回取得する必要がある。よって、ユニークコードUC(z)を複数回取得するためにステップS103を繰り返す。
生成された訂正データCD(z)は半導体装置220の共通鍵生成部223に送付される(ステップS105)。半導体装置220の共通鍵生成部223は、ユニークコード生成部221から出力されたユニークコードUC(z)と、訂正データ生成部214から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する(ステップS106)。上記処理により、新たに追加された半導体装置220は共通鍵CK(a)を保持することができる。よって、新たに追加された半導体装置(ICz)220は、半導体装置(ICa)210および他の半導体装置ICb〜ICyと共通鍵CK(a)を用いて暗号通信することが可能となる(ステップS107)。本処理は前述の通り、送付データUC(z)より、CD(z)を算出し、返信する処理である。悪意をもったアタッカが準備したICzを使い、本処理を繰り返す、又は違うデータUC(z)を繰り返し送り続け、共通鍵生成部のアルゴリズムを、CD(z)及び処理中の電流波形データより、解析される可能性がある。この為、セキュリティレベルを向上させるため、図19に示したフローに回数制限(例えば3〜5回程度)を持たせることが、望ましい。
本発明の課題で説明したように、セキュアな通信が確立している暗号通信システムに新たに半導体装置ICzを追加する場合は、追加される半導体装置ICzが正規の半導体装置であるかを検証する必要がある。しかしながら、追加される半導体装置ICzが正規の半導体装置であるかを検証するには、例えば高価なセキュアサーバを暗号通信システムに組み込む必要がある。このため、暗号通信システムのコストが増加するという問題があった。
これに対して本実施の形態にかかる暗号通信システムでは、半導体装置210が備える訂正データ生成部214において、半導体装置220に固有の値であってランダムなエラーを含むユニークコードUC(z)と、共通鍵CK(a)とを用いて、当該ユニークコードUC(z)を訂正する訂正データCD(z)を生成し、半導体装置220の共通鍵生成部223において、この訂正データCD(z)と半導体装置220のユニークコードUC(z)とを用いて共通鍵CK(a)を生成している。すなわち、半導体装置ICa(210)と半導体装置ICz(220)が同じルールに基づいて共通鍵CK(a)を生成することが担保されることで、半導体装置ICa(210)を含むセキュアなネットワークに半導体装置ICz(220)を追加することの安全性を担保する。
よって、追加される半導体装置ICzが正規の半導体装置であるかを検証するために、高価なセキュアサーバを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
また、本実施の形態にかかる暗号通信システムでは、半導体装置210の共通鍵生成部213において、半導体装置210に固有のユニークコードUC(a)と訂正データCD(a)とを用いて共通鍵CK(a)を生成している。また、半導体装置220の共通鍵生成部223において、半導体装置220に固有のユニークコードUC(z)と訂正データCD(z)とを用いて、共通鍵CK(a)を生成している。よって、重要なデータである共通鍵CK(a)を記憶部212、222に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)のデータが漏洩することはない。よって、本実施の形態にかかる暗号通信システムにより、セキュリティの向上を実現しつつ、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
ここで、半導体装置を解析して不正にデータを取得する方法としては、以下のような方法がある。
(1)半導体装置をFIB(Focused Ion Beam)を用いて加工し、プローブを用いて半導体装置を物理的に解析する方法。
(2)半導体装置にレーザなどの電磁波を照射したり、電源端子にノイズを挿入したりすることでCPUを暴走させて不正にデータを取得するフォルトツリー解析。
(3)半導体装置の消費電流量を観測し、鍵データを解析するリーク解析。
このような不正な解析を回避するために、高いセキュリティレベルが必要な分野では、セキュリティレベルの高いマイコン(以下、セキュアマイコンという)が用いられている。このセキュアマイコンには、配線領域へのシールド、光や信号ノイズを検出する機能、信号に乱数信号を組み合わせて電流をかく乱する機能などが実装されている。
このように、セキュアマイコンを用いることで第三者が不正に半導体装置を解析することを防止することができる。しかしながら、セキュアマイコンを用いた場合は、不正解析を防止できる反面、その耐タンパ性により半導体装置メーカー等が不良解析や故障解析を実施することができなくなるという問題があった。特に、自動車に用いられる車載用のマイコン(ECU等)では高信頼性が必要であるため、半導体装置の不良解析や故障解析が必要となる。このような理由から、車載用のマイコンにはセキュアマイコンよりもセキュリティレベルが低い汎用のマイコン(以下、汎用マイコンという)が広く用いられてきた。したがって、車載用のマイコンでは、汎用マイコンを使用しつつ、半導体装置のセキュリティレベルを向上させることが可能な暗号通信システムが必要とされていた。
本実施の形態にかかる暗号通信システムでは、共通鍵CK(a)などの重要なデータを記憶部212、222に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)などの重要なデータが漏洩することはない。このため、半導体装置210および半導体装置220をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
なお、半導体装置210において共通鍵CK(a)を生成するために使用される訂正データCD(a)は、共通鍵CK(a)よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCD(a)が第三者に漏洩することを防ぐために、訂正データCD(a)が格納される半導体装置210にセキュアマイコンを使用してもよい。
また、半導体装置210から半導体装置220に送付される訂正データCD(z)は、ユニークコードUC(z)と共通鍵CK(a)とに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データCD(z)を半導体装置210から半導体装置220に送付する際は、公開鍵暗号方式を用いて訂正データCD(z)を暗号化して送付してもよい。この場合は、例えば半導体装置220が半導体装置220の秘密鍵を保持し、半導体装置210が訂正データCD(z)を送付する際に半導体装置220の公開鍵で訂正データCD(z)を暗号化する。そして、半導体装置220が暗号化された訂正データCD(z)を秘密鍵を用いて復号する。これにより、半導体装置210から半導体装置220に暗号化して訂正データを送付することができる。
以上で説明したように、本実施の形態にかかる発明により、セキュアな通信を実施している暗号通信システムに、半導体装置を容易に追加することができる暗号通信システムおよび暗号通信方法を提供することができる。
<実施の形態9>
次に、本発明の実施の形態9について説明する。図24は、本実施の形態にかかる暗号通信システム202を示すブロック図である。半導体装置ICzから出力されるユニークコードUC(z)は、その特性上エラー情報を含むためセキュリティレベルが比較的低い情報である。このため、実施の形態8にかかる暗号通信システムでは、半導体装置ICzから半導体装置ICaにユニークコードUC(z)を送付する際にユニークコードUC(z)を暗号化していなかった。しかしながら、ユニークコードUC(z)はエラー情報も含むが半導体装置ICzに固有の情報であるため、暗号化して送付することが好ましい。よって、本実施の形態にかかる暗号通信システムでは、半導体装置ICzから半導体装置ICaにユニークコードUC(z)を送付する際に、ユニークコードUC(z)を暗号化している。
図24に示す暗号通信システム202は、半導体装置ICa(230)と半導体装置ICz(240)とを有する。半導体装置230は、ユニークコード生成部231、記憶部232、共通鍵生成部233、訂正データ生成部234、および復号部235を有する。
ユニークコード生成部231は、半導体装置230に固有のユニークコードUC(a)を生成し、共通鍵生成部233に出力する。ユニークコード生成部231の基本的な構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部232は、訂正データCD(a)と、半導体装置230の公開鍵PK(a)および秘密鍵SK(a)と、共通鍵生成部233で生成された共通鍵CK(a)とを格納することができる。記憶部232は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCD(a)、公開鍵PK(a)、および秘密鍵SK(a)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部232は一時的に共通鍵CK(a)を格納するが、半導体装置230の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置230の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部233は、ユニークコード生成部231から出力されたユニークコードUC(a)と、記憶部232に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する。ここで、共通鍵生成部233はユニークコード訂正部として機能する。共通鍵生成部233の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
訂正データ生成部234は、半導体装置240のユニークコードUC(z)と共通鍵CK(a)とを用いて訂正データ(第2の訂正データ)CD(z)を生成する。訂正データ生成部234の基本的な構成および動作は、実施の形態8で説明した訂正データ生成部214と同様であるので重複した説明は省略する。
復号部235は、半導体装置240の暗号部244で暗号化されたユニークコードUC(z)_cを、半導体装置230の秘密鍵SK(a)を用いて復号してユニークコードUC(z)を生成する。
半導体装置240は、ユニークコード生成部241、記憶部242、共通鍵生成部243、および暗号部244を有する。ユニークコード生成部241は、半導体装置240に固有のユニークコードUC(z)を生成し、暗号部244および共通鍵生成部243に出力する。なお、ユニークコード生成部241の構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部242は、共通鍵生成部243で生成された共通鍵CK(a)を格納することができる。記憶部242は、揮発性メモリに共通鍵CK(a)を格納する。よって、記憶部242は一時的に共通鍵CK(a)を格納するが、半導体装置240の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置240の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部243は、ユニークコード生成部241から出力されたユニークコードUC(z)と、訂正データ生成部234から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する。ここで、共通鍵生成部243はユニークコード訂正部として機能する。共通鍵生成部243の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
暗号部244は、ユニークコード生成部241で生成されたユニークコードUC(z)を半導体装置230の公開鍵PK(a)を用いて暗号化する。ここで、暗号化に用いられる公開鍵PK(a)は、予め半導体装置230から半導体装置240に送付されて記憶部242に格納されていてもよい。また、暗号化に用いられる公開鍵PK(a)は、暗号部244でユニークコードUC(z)を暗号化する際に、半導体装置230から暗号部244に直接供給されるように構成してもよい。暗号化されたユニークコードUC(z)_cは半導体装置230の復号部235に出力される。
次に、本実施の形態にかかる暗号通信システムの動作について、図25に示すフローチャートを用いて説明する。まず、半導体装置ICa(230)の共通鍵生成部233は、ユニークコード生成部231から出力されたユニークコードUC(a)と、記憶部232に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する(ステップS130)。その後、半導体装置ICa(230)は他の半導体装置ICb〜ICy(不図示)と共通鍵CK(a)を用いて通信を開始する(ステップS131)。
次に、半導体装置ICz(240)は、半導体装置ICa(230)に対して訂正データCD(z)の送付を要求する(ステップS132)。訂正データCD(z)の送付を要求された半導体装置230は、半導体装置240に対して半導体装置230の公開鍵PK(a)を送付する(ステップS133)。半導体装置240の暗号部244は、半導体装置230の公開鍵PK(a)を用いてユニークコードUC(z)を暗号化する(ステップS134)。なお、半導体装置230の公開鍵PK(a)は、予め半導体装置240の記憶部242に格納しておいてもよい。この場合は、ステップS132、S133を省略することができる。
半導体装置240は、暗号化されたユニークコードUC(z)_cを半導体装置230の復号部235に送付する(ステップS135)。半導体装置230の復号部235は、暗号化されたユニークコードUC(z)_cを、半導体装置230の秘密鍵SK(a)を用いて復号してユニークコードUC(z)を生成する(ステップS136)。
半導体装置230の訂正データ生成部234は、半導体装置240のユニークコードUC(z)と、記憶部232に格納されている共通鍵CK(a)とを用いて訂正データCD(z)を生成する(ステップS137)。訂正データ生成部234が訂正データCD(z)を生成するには、ユニークコードUC(z)を複数回取得する必要がある。よって、ユニークコードUC(z)を複数回取得するためにステップS134〜S136を繰り返す。
生成された訂正データCD(z)は半導体装置240の共通鍵生成部243に送付される(ステップS138)。半導体装置240の共通鍵生成部243は、ユニークコード生成部241から出力されたユニークコードUC(z)と、訂正データ生成部234から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する(ステップS139)。上記処理により、新たに追加された半導体装置240は共通鍵CK(a)を保持することができる。よって、新たに追加された半導体装置(ICz)240は、半導体装置(ICa)230および他の半導体装置ICb〜ICyと共通鍵CK(a)を用いて暗号通信することが可能となる(ステップS140)。
このように、本実施の形態にかかる暗号通信システムでは、半導体装置230が備える訂正データ生成部234において、半導体装置240に固有のユニークコードUC(z)と、共通鍵CK(a)とを用いて訂正データCD(z)を生成し、半導体装置240の共通鍵生成部243において、この訂正データCD(z)と半導体装置240のユニークコードUC(z)とを用いて共通鍵CK(a)を生成している。よって、追加される半導体装置ICzが正規の半導体装置であるかを検証するために、高価なセキュアサーバを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
また、本実施の形態にかかる暗号通信システムでは、共通鍵CK(a)などの重要なデータを記憶部232、242に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)などの重要なデータが漏洩することはない。このため、本実施の形態にかかる暗号通信システムでは、半導体装置230および半導体装置240をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
なお、半導体装置230において共通鍵CK(a)を生成するために使用される訂正データCD(a)や半導体装置230の秘密鍵SK(a)は、共通鍵CK(a)よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCD(a)や秘密鍵SK(a)が第三者に漏洩することを防ぐために、訂正データCD(a)および秘密鍵SK(a)が格納される半導体装置230にセキュアマイコンを使用してもよい。
また、半導体装置230から半導体装置240に送付される訂正データCD(z)は、ユニークコードUC(z)と共通鍵CK(a)とに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データCD(z)を半導体装置230から半導体装置240に送付する際は、公開鍵暗号方式を用いて訂正データCD(z)を暗号化して送付してもよい。
以上で説明したように、本実施の形態にかかる発明により、セキュアな通信を実施している暗号通信システムに、半導体装置を容易に追加することができる暗号通信システムおよび暗号通信方法を提供することができる。特に、本実施の形態にかかる暗号通信システムでは、半導体装置240のユニークコードUC(z)を暗号化して、半導体装置230に送付しているので、暗号通信システムのセキュリティを更に向上させることができる。
<実施の形態10>
次に、本発明の実施の形態10について説明する。図26は、本実施の形態にかかる暗号通信システム203を示すブロック図である。本実施の形態では、暗号通信システムを電子署名方式に適用している。本実施の形態にかかる暗号通信システム203は、半導体装置ICa(250)、半導体装置ICz(260)、およびセキュアサーバ270を有する。
半導体装置250は、ユニークコード生成部251、記憶部252、共通鍵生成部253、訂正データ生成部254、復号部255、および検証部256を有する。
ユニークコード生成部251は、半導体装置250に固有のユニークコードUC(a)を生成し、共通鍵生成部253に出力する。ユニークコード生成部251の基本的な構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部252は、訂正データCD(a)と、半導体装置250の公開鍵PK(a)および秘密鍵SK(a)と、共通鍵生成部253で生成された共通鍵CK(a)とを格納することができる。記憶部252は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCD(a)、公開鍵PK(a)、および秘密鍵SK(a)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部252は一時的に共通鍵CK(a)を格納するが、半導体装置250の電源がオフになると共通鍵CK(a)の情報は消去される。
共通鍵生成部253は、ユニークコード生成部251から出力されたユニークコードUC(a)と、記憶部252に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する。ここで、共通鍵生成部253はユニークコード訂正部として機能する。共通鍵生成部253の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
訂正データ生成部254は、半導体装置260のユニークコードUC(z)と共通鍵CK(a)とを用いて訂正データCD(z)を生成する。訂正データ生成部254の基本的な構成および動作は、実施の形態8で説明した訂正データ生成部214と同様であるので重複した説明は省略する。
復号部255は、半導体装置260の暗号部264で暗号化されたユニークコードUC(z)_cを、半導体装置250の秘密鍵SK(a)を用いて復号してユニークコードUC(z)を生成する。
検証部256は、電子署名方式の検証アルゴリズムを実行する。すなわち、検証部256は、署名データSig(z)と半導体装置260の公開鍵PK(z)とを用いて検証用データを生成し、当該検証用データと平文Plane(a)とを比較する。
半導体装置260は、ユニークコード生成部261、記憶部262、共通鍵生成部263、暗号部264、および署名データ生成部265を有する。ユニークコード生成部261は、半導体装置260に固有のユニークコードUC(z)を生成し、暗号部264および共通鍵生成部263に出力する。なお、ユニークコード生成部261の構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部262は、共通鍵生成部263で生成された共通鍵CK(a)、半導体装置260の秘密鍵SK(z)、および平文Plane(z)を格納することができる。記憶部262は、例えば揮発性メモリと不揮発性メモリとを有し、半導体装置260の秘密鍵SK(z)および平文Plane(z)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部262は一時的に共通鍵CK(a)を格納するが、半導体装置260の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置260の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部263は、ユニークコード生成部261から出力されたユニークコードUC(z)と、訂正データ生成部254から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する。ここで、共通鍵生成部263はユニークコード訂正部として機能する。共通鍵生成部263の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
暗号部264は、ユニークコード生成部261で生成されたユニークコードUC(z)を半導体装置260の公開鍵PK(a)を用いて暗号化する。ここで、暗号化に用いられる公開鍵PK(a)は、予め半導体装置250から半導体装置260に送付されて記憶部262に格納されていてもよい。また、暗号化に用いられる公開鍵PK(a)は、暗号部264でユニークコードUC(z)を暗号化する際に、半導体装置250から暗号部264に直接供給されるように構成してもよい。また、セキュアサーバ270から公開鍵PK(a)が供給されるように構成してもよい。暗号化されたユニークコードUC(z)_cは半導体装置250の復号部255に出力される。
署名データ生成部265は、半導体装置260の秘密鍵SK(z)と、平文Plane(z)とを用いて署名データSig(z)を生成する。つまり、署名データ生成部265は電子署名方式における署名生成アルゴリズムを実行する。
セキュアサーバ270は、半導体装置ICa、ICb、・・・、ICzと、当該半導体装置ICa、ICb、・・・、ICzの公開鍵PK(a)、PK(b)、・・・、PK(z)とを対応づけて格納したデータベース271を備える。本実施の形態では、データベース271に格納されている公開鍵情報はセキュリティレベルの高い情報であるので、セキュアサーバ270にはセキュリティマイコンを用いることが好ましい。セキュアサーバ270に格納されている公開鍵情報は、要求に応じて各半導体装置に送付される。
次に、本実施の形態にかかる暗号通信システムの動作について、図27に示すフローチャートを用いて説明する。まず、半導体装置ICa(250)の共通鍵生成部253は、ユニークコード生成部251から出力されたユニークコードUC(a)と、記憶部252に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する(ステップS141)。その後、半導体装置ICa(250)は他の半導体装置ICb〜ICy(不図示)と共通鍵CK(a)を用いて通信を開始する(ステップS142)。
次に、半導体装置ICz(260)は、半導体装置ICa(250)に対して半導体装置ICz(260)の半導体装置情報(例えば固有IDなど)を送付する(ステップS143)。半導体装置260の半導体装置情報を取得した半導体装置250は、セキュアサーバ270に対して、半導体装置260の公開鍵を送付するように要求する(ステップS144)。ここで、半導体装置260の公開鍵は、半導体装置250の検証部256において署名データを検証する際に用いられる。セキュアサーバ270は、半導体装置250の検証部256に半導体装置260の公開鍵PK(z)を送付する(ステップS145)。
次に、半導体装置250は半導体装置260に対して署名データを送付するように要求する(ステップS146)。署名データ送付要求を受信した半導体装置260は、署名データ生成部265において、秘密鍵SK(z)と平文Plane(z)とを用いて署名データSig(z)を生成する。そして、平文Plane(z)および生成された署名データSig(z)は半導体装置250の検証部256に送付される(ステップS147)。
半導体装置250の検証部256は、電子署名方式の検証アルゴリズムを実行する(ステップS148)。すなわち、検証部256は、セキュアサーバ270から供給された半導体装置260の公開鍵PK(z)と、署名データSig(z)とを用いて検証用データを生成し、当該検証用データと平文Plane(z)とを比較する。ここで、署名データSig(z)は、半導体装置260の秘密鍵SK(z)を用いて平文Plane(z)を暗号化することで生成されたデータである。よって、署名データSig(z)を半導体装置260の公開鍵PK(z)を用いて復号することで得られた検証用データは、半導体装置260から送られた平文Plane(z)に対応するデータである。したがって、検証部256は、検証用データと平文Plane(z)とを比較し、検証用データと平文Plane(z)とが一致した場合は、半導体装置260が秘密鍵SK(z)を保有すると判断することができる。
よって、検証用データと平文Plane(z)とが一致した場合(検証アルゴリズムが署名データSig(z)を受理した場合)は、検証部256は半導体装置260が作成した署名データSig(z)が正当であると判断する。つまり、半導体装置260が秘密鍵SK(z)を保有すると判断される。一方、検証用データと平文Plane(z)とが一致しない場合(検証アルゴリズムが署名データSig(z)を棄却した場合)は、検証部256は半導体装置260が作成した署名データSig(z)が不当であると判断する。
半導体装置260が正規の半導体装置であると判断されると、半導体装置250は、半導体装置260に対して半導体装置250の公開鍵PK(a)を送付する(ステップS149)。半導体装置260の暗号部264は、半導体装置250の公開鍵PK(a)を用いてユニークコードUC(z)を暗号化する(ステップS150)。なお、半導体装置250の公開鍵PK(a)は、半導体装置250の指示によりセキュアサーバ270から半導体装置260に送付されるようにしてもよい。
半導体装置260は、暗号化されたユニークコードUC(z)_cを半導体装置250の復号部255に送付する(ステップS151)。半導体装置250の復号部255は、暗号化されたユニークコードUC(z)_cを、半導体装置250の秘密鍵SK(a)を用いて復号してユニークコードUC(z)を生成する(ステップS152)。
半導体装置250の訂正データ生成部254は、半導体装置260のユニークコードUC(z)と、共通鍵CK(a)とを用いて訂正データCD(z)を生成する(ステップS153)。訂正データ生成部254が訂正データCD(z)を生成するには、ユニークコードUC(z)を複数回取得する必要がある。よって、ユニークコードUC(z)を複数回取得するためにステップS150〜S152を繰り返す。
生成された訂正データCD(z)は半導体装置260の共通鍵生成部263に送付される(ステップS154)。半導体装置260の共通鍵生成部263は、ユニークコード生成部261から出力されたユニークコードUC(z)と、訂正データ生成部254から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する(ステップS155)。上記処理により、新たに追加された半導体装置260を電子署名方式を用いて検証することができる。そして、新たに追加された半導体装置260が正規の半導体装置である場合、半導体装置260は共通鍵CK(a)を保持することができる。よって、新たに追加された半導体装置(ICz)260は、半導体装置(ICa)240および他の半導体装置ICb〜ICyと共通鍵CK(a)を用いて暗号通信することが可能となる(ステップS156)。
このように、本実施の形態にかかる暗号通信システムでは、半導体装置250が備える訂正データ生成部254において、半導体装置260に固有のユニークコードUC(z)と、共通鍵CK(a)とを用いて訂正データCD(z)を生成し、半導体装置260の共通鍵生成部263において、この訂正データCD(z)と半導体装置260のユニークコードUC(z)とを用いて共通鍵CK(a)を生成している。よって、追加される半導体装置ICzが正規の半導体装置であるかを検証するために、高価なセキュアサーバを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
また、本実施の形態にかかる暗号通信システムでは、共通鍵CK(a)などの重要なデータを記憶部252、262に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)などの重要なデータが漏洩することはない。このため、本実施の形態にかかる暗号通信システムでは、半導体装置250および半導体装置260をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
一方、本実施の形態では、セキュアサーバ270のデータベース271に格納されている公開鍵情報はセキュリティレベルの高い情報である。よって、セキュアサーバ270にはセキュリティマイコンを用いることが好ましい。
なお、共通鍵CK(a)を生成するために使用される訂正データCD(a)や半導体装置260の秘密鍵SK(z)は、共通鍵CK(a)よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCD(a)や秘密鍵SK(z)が第三者に漏洩することを防ぐために、訂正データCD(a)や秘密鍵SK(z)が格納される半導体装置250、260にセキュアマイコンを使用してもよい。
また、半導体装置250から半導体装置260に送付される訂正データCD(z)は、ユニークコードUC(z)と共通鍵CK(a)とに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データCD(z)を半導体装置50から半導体装置260に送付する際は、公開鍵暗号方式を用いて訂正データCD(z)を暗号化して送付してもよい。
また、本実施の形態ではユニークコードUC(z)を暗号化して送付するために、半導体装置260に暗号部264を設け、半導体装置250に復号部255を設けていた。しかし、本実施の形態では、実施の形態8のように、暗号部264および復号部255を省略して、ユニークコードUC(z)を暗号化しないで送付してもよい。
以上で説明したように、本実施の形態にかかる発明により、セキュアな通信を実施している暗号通信システムに、半導体装置を容易に追加することができる暗号通信システムおよび暗号通信方法を提供することができる。
特に、本実施の形態にかかる暗号通信システムでは、セキュアサーバ270を用いて公開鍵情報を一括して管理している。この公開鍵情報は、新たに追加される半導体装置を電子署名方式を用いて検証する際に使用される情報であり、セキュリティレベルの高い情報である。このように、セキュリティレベルの高い情報をセキュアサーバ270を用いて一括管理することで、半導体装置250、260にセキュリティレベルの高い情報を格納する必要がなくなり、半導体装置250、260を汎用のマイコンを用いて構成することができる。よって、暗号通信システムを構成する際のコストを低減することができる。
<実施の形態11>
次に、本発明の実施の形態11について説明する。図28は、本実施の形態にかかる暗号通信システム204を示すブロック図である。本実施の形態にかかる暗号通信システム4では、訂正データCD(z)を生成するための訂正データ生成部を設ける代わりに、新規に追加される半導体装置ICz(290)から半導体装置ICa(280)に訂正データ生成プログラムPRG(z)を送付している。そして、この訂正データ生成プログラムPRG(z)を半導体装置ICa(280)で実行することで、訂正データCD(z)を生成している。
図28に示す暗号通信システム204は、半導体装置ICa(280)と半導体装置ICz(290)とを有する。半導体装置280は、ユニークコード生成部281、記憶部282、共通鍵生成部283、プログラム実行部284、および復号部285を有する。
ユニークコード生成部281は、半導体装置280に固有のユニークコードUC(a)を生成し、共通鍵生成部283に出力する。ユニークコード生成部281の基本的な構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部282は、訂正データCD(a)と、半導体装置280の公開鍵PK(a)および秘密鍵SK(a)と、共通鍵生成部283で生成された共通鍵CK(a)とを格納することができる。記憶部282は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCD(a)、公開鍵PK(a)、および秘密鍵SK(a)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部282は一時的に共通鍵CK(a)を格納するが、半導体装置280の電源がオフになると共通鍵CK(a)の情報は消去される。
共通鍵生成部283は、ユニークコード生成部281から出力されたユニークコードUC(a)と、記憶部282に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する。ここで、共通鍵生成部283はユニークコード訂正部として機能する。共通鍵生成部283の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
プログラム実行部284は、半導体装置290から送付された訂正データ生成プログラムPRG(z)を実行する。訂正データ生成プログラムPRG(z)を実行することにより、半導体装置290のユニークコードUC(z)と共通鍵CK(a)とを用いて訂正データCD(z)を生成することができる。ここで、プログラム実行部284は、典型的にはCPUなどのプロセッサである。また、訂正データ生成プログラムPRG(z)は、例えば半導体装置280のみで実行可能なプログラムであってもよい。また、動作する半導体装置のアーキテクチャに依存しない、JAVA(登録商標)等のプログラムであってもよい。暗号通信システムを構成する半導体装置の中には、CPUコアのアーキテクチャが異なる場合もある。よって、動作する半導体装置のアーキテクチャに依存しないJAVA等のプログラムを用いることで、暗号通信システムの利便性を向上させることができ、また、暗号通信システムのコストを低減させることができる。
なお、訂正データ生成プログラムPRG(z)を用いて訂正データCD(z)を生成する処理については、実施の形態8で説明した訂正データ生成部214における処理と同様であるので重複した説明は省略する。
復号部285は、半導体装置290の暗号部294で暗号化されたユニークコードUC(z)_cを、半導体装置280の秘密鍵SK(a)を用いて復号してユニークコードUC(z)を生成する。
半導体装置290は、ユニークコード生成部291、記憶部292、共通鍵生成部293、および暗号部294を有する。ユニークコード生成部291は、半導体装置290に固有のユニークコードUC(z)を生成し、暗号部294および共通鍵生成部293に出力する。なお、ユニークコード生成部291の構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部292は、共通鍵生成部293で生成された共通鍵CK(a)および訂正データ生成プログラムPRG(z)を格納することができる。記憶部292は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データ生成プログラムPRG(z)は不揮発性メモリに格納され、共通鍵CK(a)は揮発性メモリに格納される。よって、記憶部292は一時的に共通鍵CK(a)を格納するが、半導体装置290の電源がオフになると共通鍵CK(a)の情報は消去される。尚、共通鍵CK(a)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(a)に対して、半導体装置290の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部293は、ユニークコード生成部291から出力されたユニークコードUC(z)と、プログラム実行部284から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する。ここで、共通鍵生成部293はユニークコード訂正部として機能する。共通鍵生成部293の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
暗号部294は、ユニークコードUC(z)および訂正データ生成プログラムPRG(z)を半導体装置280の公開鍵PK(a)を用いて暗号化する。ここで、暗号化に用いられる公開鍵PK(a)は、予め半導体装置280から半導体装置290に送付されて記憶部292に格納されていてもよい。また、暗号化に用いられる公開鍵PK(a)は、暗号部294でユニークコードUC(z)および訂正データ生成プログラムPRG(z)を暗号化する際に、半導体装置280から暗号部294に直接供給されるように構成してもよい。暗号化されたユニークコードUC(z)_cおよび訂正データ生成プログラムPRG(z)_cは半導体装置280の復号部285に出力される。
次に、本実施の形態にかかる暗号通信システムの動作について、図29に示すフローチャートを用いて説明する。まず、半導体装置ICa(280)の共通鍵生成部283は、ユニークコード生成部281から出力されたユニークコードUC(a)と、記憶部282に格納されている訂正データCD(a)とを用いて共通鍵CK(a)を生成する(ステップS160)。その後、半導体装置ICa(280)は他の半導体装置ICb〜ICy(不図示)と共通鍵CK(a)を用いて通信を開始する(ステップS161)。
次に、半導体装置ICz(290)は、半導体装置ICa(280)に対して訂正データCD(z)の送付を要求する(ステップS162)。訂正データCD(z)の送付を要求された半導体装置280は、半導体装置290に対して半導体装置280の公開鍵PK(a)を送付する(ステップS163)。半導体装置290の暗号部294は、半導体装置280の公開鍵PK(a)を用いてユニークコードUC(z)および訂正データ生成プログラムPRG(z)を暗号化する(ステップS164)。なお、半導体装置280の公開鍵PK(a)は、予め半導体装置290の記憶部292に格納しておいてもよい。この場合は、ステップS162、S163を省略することができる。
半導体装置290は、暗号化されたユニークコードUC(z)_cおよび訂正データ生成プログラムPRG(z)_cを半導体装置280の復号部285に送付する(ステップS165)。半導体装置280の復号部285は、暗号化されたユニークコードUC(z)_cおよび訂正データ生成プログラムPRG(z)_cを、半導体装置280の秘密鍵SK(a)を用いて復号してユニークコードUC(z)および訂正データ生成プログラムPRG(z)を生成する(ステップS166)。
半導体装置280のプログラム実行部284は、復号部285で復号された訂正データ生成プログラムPRG(z)を実行する。訂正データ生成プログラムPRG(z)を実行することにより、半導体装置290のユニークコードUC(z)と共通鍵CK(a)とを用いて訂正データCD(z)を生成することができる(ステップS167)。なお、訂正データ生成プログラムPRG(z)が訂正データCD(z)を生成するには、ユニークコードUC(z)を複数回取得する必要がある。よって、ユニークコードUC(z)を複数回取得するためにステップS164〜S166を繰り返す(訂正データ生成プログラムPRG(z)の送付は除く)。また、訂正データ生成プログラムPRG(z)は、訂正データCD(z)を生成した後に削除してもよい。
生成された訂正データCD(z)は半導体装置290の共通鍵生成部293に送付される(ステップS168)。半導体装置290の共通鍵生成部293は、ユニークコード生成部291から出力されたユニークコードUC(z)と、プログラム実行部284から出力された訂正データCD(z)とを用いて共通鍵CK(a)を生成する(ステップS169)。上記処理により、新たに追加された半導体装置290は共通鍵CK(a)を保持することができる。よって、新たに追加された半導体装置(ICz)290は、半導体装置(ICa)280および他の半導体装置ICb〜ICyと共通鍵CK(a)を用いて暗号通信することが可能となる(ステップS170)。
このように、本実施の形態にかかる暗号通信システムでは、半導体装置280が備えるプログラム実行部284において、半導体装置290に固有のユニークコードUC(z)と、共通鍵CK(a)とを用いて訂正データCD(z)を生成し、半導体装置290の共通鍵生成部293において、この訂正データCD(z)と半導体装置290のユニークコードUC(z)とを用いて共通鍵CK(a)を生成している。よって、追加される半導体装置ICzが正規の半導体装置であるかを検証するために、高価なセキュアサーバを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
また、本実施の形態にかかる暗号通信システムでは、共通鍵CK(a)などの重要なデータを記憶部282、292に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(a)などの重要なデータが漏洩することはない。このため、本実施の形態にかかる暗号通信システムでは、半導体装置280および半導体装置290をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
なお、半導体装置280において共通鍵CK(a)を生成するために使用される訂正データCD(a)や半導体装置280の秘密鍵SK(a)は、共通鍵CK(a)よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCD(a)や秘密鍵SK(a)が第三者に漏洩することを防ぐために、訂正データCD(a)および秘密鍵SK(a)が格納される半導体装置280にセキュアマイコンを使用してもよい。
また、半導体装置280から半導体装置290に送付される訂正データCD(z)は、ユニークコードUC(z)と共通鍵CK(a)とに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データCD(z)を半導体装置280から半導体装置290に送付する際は、公開鍵暗号方式を用いて訂正データCD(z)を暗号化して送付してもよい。
また、本実施の形態ではユニークコードUC(z)および訂正データ生成プログラムPRG(z)を暗号化して送付するために、半導体装置260に暗号部264を設け、半導体装置250に復号部255を設けていた。しかし、本実施の形態では、実施の形態8のように、暗号部264および復号部255を省略して、ユニークコードUC(z)および訂正データ生成プログラムPRG(z)を暗号化しないで送付してもよい。
また、上述した例では、新規に追加される半導体装置290から半導体装置280に訂正データ生成プログラムPRG(z)が送付される場合について説明した。しかし、訂正データ生成プログラムPRG(z)は、例えばサーバから半導体装置280に送付されるように構成してもよい。
以上で説明したように、本実施の形態にかかる発明により、セキュアな通信を実施している暗号通信システムに、半導体装置を容易に追加することができる暗号通信システムおよび暗号通信方法を提供することができる。
特に、本実施の形態にかかる暗号通信システムでは、半導体装置280に訂正データ生成部を予め設けていない場合であっても、新規に追加する半導体装置290に訂正データ生成プログラムPRG(z)を格納し、当該訂正データ生成プログラムPRG(z)を半導体装置280で実行することで、訂正データCD(z)を生成することができる。ここで、訂正データ生成プログラムPRG(z)は、半導体装置290の出荷時に格納してもよく、また、出荷後に必要に応じてサーバからダウンロードしてもよい。また、訂正データ生成プログラムPRG(z)を、動作する半導体装置のアーキテクチャに依存しないJAVA等のプログラムとすることで、暗号通信システムの利便性を向上させることができ、また、暗号通信システムのコストを低減させることができる。
<実施の形態12>
次に、本発明の実施の形態12について説明する。図30は、本実施の形態にかかる暗号通信システム205を示すブロック図である。本実施の形態にかかる暗号通信システム205では、半導体装置ICa(300)の共通鍵生成部303で複数の共通鍵CK(1)、CK(2)を生成している。そして、半導体装置ICa(300)と半導体装置ICz(310)とが共通鍵CK(2)を用いて通信し、半導体装置ICa(300)と半導体装置ICb〜ICyとが共通鍵CK(1)を用いて通信している。つまり、半導体装置ICa(300)はルータとしての機能を備える。
図30に示す暗号通信システム205は、半導体装置ICa(300)と半導体装置ICz(310)とを有する。半導体装置300は、ユニークコード生成部301、記憶部302、共通鍵生成部303、および訂正データ生成部304を有する。
ユニークコード生成部301は、半導体装置300に固有のユニークコードUC(a)を生成し、共通鍵生成部303に出力する。ユニークコード生成部301の基本的な構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部302は、訂正データCD(1)、CD(2)と、共通鍵生成部303で生成された共通鍵CK(1)、CK(2)とを格納することができる。記憶部302は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCD(1)、CD(2)は不揮発性メモリに格納され、共通鍵CK(1)、CK(2)は揮発性メモリに格納される。よって、記憶部302は一時的に共通鍵CK(1)、CK(2)を格納するが、半導体装置300の電源がオフになると共通鍵CK(1)、CK(2)の情報は消去される。尚、共通鍵CK(1)、CK(2)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(1)、CK(2)対して、半導体装置300の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部303は、ユニークコード生成部301から出力されたユニークコードUC(a)と、記憶部302に格納されている訂正データ(第3の訂正データ)CD(1)とを用いて共通鍵(第2の共通鍵)CK(1)を生成する。また、共通鍵生成部303は、ユニークコード生成部301から出力されたユニークコードUC(a)と、記憶部302に格納されている訂正データ(第1の訂正データ)CD(2)とを用いて共通鍵(第1の共通鍵)CK(2)を生成する。ここで、共通鍵生成部303はユニークコード訂正部として機能する。共通鍵生成部303の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
訂正データ生成部304は、半導体装置310のユニークコードUC(z)と共通鍵CK(2)とを用いて訂正データ(第2の訂正データ)CD(z)を生成する。訂正データ生成部304の基本的な構成および動作は、実施の形態8で説明した訂正データ生成部214と同様であるので重複した説明は省略する。
半導体装置310は、ユニークコード生成部311、記憶部312、および共通鍵生成部313を有する。ユニークコード生成部311は、半導体装置310に固有のユニークコードUC(z)を生成し、半導体装置300の訂正データ生成部304に出力する。なお、ユニークコード生成部311の構成および動作は、実施の形態8で説明したユニークコード生成部211と同様であるので重複した説明は省略する。
記憶部312は、共通鍵生成部313で生成された共通鍵CK(2)を格納することができる。記憶部312は、揮発性メモリに共通鍵CK(2)を格納する。よって、記憶部312は一時的に共通鍵CK(2)を格納するが、半導体装置310の電源がオフになると共通鍵CK(2)の情報は消去される。尚、共通鍵CK(2)は用途に応じて暗号化等のセキュリティ対策を行い不揮発性メモリに格納してもよく、不揮発性メモリに格納された共通鍵CK(2)対して、半導体装置310の電源オフ時にライト動作によりデータの消去を行なう等の処置を行う対策を行ってもよい。
共通鍵生成部313は、ユニークコード生成部311から出力されたユニークコードUC(z)と、訂正データ生成部304から出力された訂正データCD(z)とを用いて共通鍵CK(2)を生成する。ここで、共通鍵生成部313はユニークコード訂正部として機能する。共通鍵生成部313の基本的な構成および動作は、実施の形態8で説明した共通鍵生成部213と同様であるので重複した説明は省略する。
次に、本実施の形態にかかる暗号通信システムの動作について、図31に示すフローチャートを用いて説明する。まず、半導体装置ICa(300)の共通鍵生成部303は、ユニークコード生成部301から出力されたユニークコードUC(a)と、記憶部212に格納されている訂正データCD(1)とを用いて共通鍵CK(1)を生成する(ステップS171)。その後、半導体装置ICa(300)は他の半導体装置ICb〜ICy(第3の半導体装置)と共通鍵CK(1)を用いて通信を開始する(ステップS172)。
半導体装置310は、半導体装置300の訂正データ生成部304に半導体装置310のユニークコードUC(z)を送付する(ステップS173)。半導体装置300の共通鍵生成部303は、ユニークコード生成部301から出力されたユニークコードUC(a)と、記憶部302に格納されている訂正データCD(2)とを用いて共通鍵CK(2)を生成する(ステップS174)。その後、半導体装置300の訂正データ生成部304は、半導体装置310のユニークコードUC(z)と、共通鍵CK(2)とを用いて訂正データCD(z)を生成する(ステップS175)。訂正データ生成部304が訂正データCD(z)を生成するには、ユニークコードUC(z)を複数回取得する必要がある。よって、ユニークコードUC(z)を複数回取得するためにステップS173を繰り返す。
生成された訂正データCD(z)は半導体装置310の共通鍵生成部313に送付される(ステップS176)。半導体装置310の共通鍵生成部313は、ユニークコード生成部311から出力されたユニークコードUC(z)と、訂正データ生成部304から出力された訂正データCD(z)とを用いて共通鍵CK(2)を生成する(ステップS177)。上記処理により、半導体装置300と半導体装置310は共に共通鍵CK(2)を保持することができる。よって、新たに追加された半導体装置310は、半導体装置300と共通鍵CK(2)を用いて暗号通信することが可能となる(ステップS178)。一方、半導体装置300と半導体装置ICb〜ICyは共通鍵CK(1)を用いて通信している。
図32は、本実施の形態にかかる暗号通信システムの構成の一例を示すブロック図である。図32に示すように、半導体装置ICaと半導体装置ICb、ICcは共通鍵CK(1)を用いて通信をしており、セキュアなネットワークを構成している。また、新たに追加された半導体装置ICzは、半導体装置ICaと共通鍵CK(2)を用いて通信する。よって、半導体装置ICaがルータとしての機能を備えることで、新たに追加された半導体装置ICzは、半導体装置ICb、ICcと半導体装置ICaを介して暗号通信することができる。
このように、本実施の形態にかかる暗号通信システムでは、半導体装置300が備える訂正データ生成部304において、半導体装置310に固有のユニークコードUC(z)と、共通鍵CK(2)とを用いて訂正データCD(z)を生成し、半導体装置310の共通鍵生成部313において、この訂正データCD(z)と半導体装置310のユニークコードUC(z)とを用いて共通鍵CK(2)を生成している。よって、追加される半導体装置ICzが正規の半導体装置であるかを検証するために、高価なセキュアサーバを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
また、本実施の形態にかかる暗号通信システムでは、共通鍵CK(1)、CK(2)などの重要なデータを記憶部302、312に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CK(1)、CK(2)などの重要なデータが漏洩することはない。このため、本実施の形態にかかる暗号通信システムでは、半導体装置300および半導体装置310をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
なお、共通鍵CK(1)、CK(2)を生成するために使用される訂正データCD(1)、CD(2)は、共通鍵CK(1)、CK(2)よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCD(1)、CD(2)が第三者に漏洩することを防ぐために、訂正データCD(1)、CD(2)が格納される半導体装置300にセキュアマイコンを使用してもよい。
また、半導体装置300から半導体装置310に送付される訂正データCD(z)は、ユニークコードUC(z)と共通鍵CK(2)とに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データCD(z)を半導体装置300から半導体装置310に送付する際は、公開鍵暗号方式を用いて訂正データCD(z)を暗号化して送付してもよい。
以上で説明したように、本実施の形態にかかる発明により、セキュアな通信を実施している暗号通信システムに、半導体装置を容易に追加することができる暗号通信システムおよび暗号通信方法を提供することができる。
<実施の形態13>
次に、本発明の実施の形態13について説明する。図33は実施の形態8乃至12にかかる暗号通信システムを車載用半導体装置に適用した場合を示すブロック図である。図33に示すように、車両360にはゲートウェイ部350、故障診断ユニット351、エンジン制御ユニット352、ブレーキ制御ユニット353、ランプ制御ユニット354、ドアロック制御ユニット355、鍵挿入制御ユニット356が設けられている。
ゲートウェイ部350は、各ユニット351〜356で構成されるネットワークを中継するための機器である。ゲートウェイ部350にはセキュアマイコンICaが設けられている。故障診断ユニット351は、車両360を構成する部品が故障しているか診断するユニットである。故障診断ユニット351には半導体装置ICbが設けられている。エンジン制御ユニット352は、エンジン動作における電気的な制御(燃料供給、点火タイミングの調整等)を総合的に行うためのユニットである。エンジン制御ユニット352には半導体装置ICcが設けられている。ブレーキ制御ユニット353は、ABS(Antilock Brake System)などブレーキを制御するためのユニットである。ブレーキ制御ユニット353には半導体装置ICdが設けられている。ランプ制御ユニット354は、車両のヘッドライトやウインカー等を制御するためのユニットである。ランプ制御ユニット354には半導体装置ICeが設けられている。
ドアロック制御ユニット355は、ドアのロックを制御するためのユニットである。ドアロック制御ユニット355には半導体装置ICfと、鍵357と無線通信するための通信部が設けられている。鍵挿入制御ユニット356は、挿入された鍵が正規のユーザの鍵であるかを判断するためのユニットである。鍵挿入制御ユニット356には、半導体装置ICgと、鍵357と無線通信するための通信部が設けられている。鍵357には半導体装置IChと、通信部が設けられている。各ユニット351〜356、および鍵357に設けられている半導体装置ICb〜IChには、例えば汎用マイコンを用いることができる。
故障診断ユニット351、エンジン制御ユニット352、ブレーキ制御ユニット353、ランプ制御ユニット354、ドアロック制御ユニット355、および鍵挿入制御ユニット356はそれぞれゲートウェイ部350と接続されており、各ユニット351〜356はゲートウェイ部350を介して互いに通信可能に構成されている。このとき、各ユニット351〜356とゲートウェイ部350との間の通信に用いる共通鍵は、ユニット毎に異なるようにしてもよい。例えば故障診断ユニット351とゲートウェイ部350との通信に共通鍵Aを用い、エンジン制御ユニット352とゲートウェイ部350との通信に共通鍵Bを用いるように構成してもよい。
ゲートウェイ部(ICa)350および各ユニット(ICb〜ICg)351〜356は、セキュアなネットワークを構成している。このようなセキュアなネットワークに、半導体装置ICzを含むカーナビゲーションシステム358を新たに追加する際に、実施の形態8乃至12で説明した方法を用いることで、カーナビゲーションシステム(ICz)358をセキュアなネットワークに容易かつ低コストに追加することができる。
図33に示した例では、各ユニット351〜356およびカーナビゲーションシステム358がゲートウェイ部350を介して通信している構成を示した。しかし、各ユニット351〜356およびカーナビゲーションシステム358が互いに同一の共通鍵を用いて通信するように構成してもよい。この場合は、例えば各ユニット351〜356およびカーナビゲーションシステム358が共通バスを介して互いに接続されるように構成する。また、図33に示したユニット以外の様々なユニット間の通信にも適用可能である。
なお、本実施の形態では、実施の形態1〜6、8〜12にかかる暗号通信システムを車載用半導体装置に適用した場合について説明した。しかし、実施の形態1〜6、8〜12にかかる暗号通信システムは車載用半導体装置以外にも、一般的なLAN、スマートメータ、スマートグリッド、非接触ICカードなどに適用することができる。このとき、暗号通信システムを構成する半導体装置は互いに有線で通信してもよく、また互いに無線で通信するように構成してもよい。また、上記実施の形態1乃至13は適宜、互いに組み合わせることができる。
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。