(57)【特許請求の範囲】
【請求項１】
ＳＲＡＭ（static random access memory）を備え、前記ＳＲＡＭの起動時の初期値により生成され、かつ、デバイスに固有な複数のユニークコードを生成し、前記複数のユニークコードから選択した１つのユニークコードを出力するユニークコード生成部と、
選択された前記１つのユニークコードから複数のユニークコード対応情報を生成するユニークコード対応情報生成部と、
それぞれが予め定められたアドレスを有する複数の格納領域を備え、秘匿対象情報を複数の前記ユニークコードで暗号化した複数の特定情報が、それぞれ、前記複数の格納領域内の前記複数のユニークコード対応情報により示されるアドレスで指定される格納領域に格納される記憶領域と、
１つの前記ユニークコード対応情報を用いて前記複数の格納領域内の一の領域から読み出された前記特定情報を、前記特定情報の読み出しに用いた前記１つのユニークコード対応情報に対応するユニークコードを用いて復号して前記秘匿対象情報を生成する復号部と、
を有する半導体装置。
【請求項２】
前記ユニークコード対応情報を用いて前記記憶領域にアクセスを行うメモリコントローラを有し、
前記メモリコントローラは、前記ユニークコード対応情報に対応する前記記憶領域にアクセスするアドレスを生成し、前記アドレスに対応した前記記憶領域の領域から前記特定情報を読み出し、読み出した前記特定情報を前記復号部に供給する請求項１に記載の半導体装置。
【請求項３】
前記秘匿対象情報は、暗号化処理で利用される暗号鍵である請求項１に記載の半導体装置。
【請求項４】
前記暗号鍵を利用して送信対象情報を暗号化する暗号化回路を有する請求項３に記載の半導体装置。
【請求項５】
前記ユニークコードは、読み出しタイミングによりエラービットの有無が変動する値である請求項１に記載の半導体装置。
【請求項６】
前記ユニークコードは、半導体装置の素子の製造ばらつきに起因して不確定になるビットを含むＰＵＦ（Physically Unclonable Function）データである請求項１に記載の半導体装置。
【請求項７】
前記ユニークコードに含まれるエラーを訂正するエラー訂正回路を有する請求項１に記載の半導体装置。
【請求項８】
前記ユニークコード対応情報生成部は、前記複数のユニークコードから１つのユニークコードを選択する選択回路を有する請求項１に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、特に内蔵メモリ等に保持している情報に対するセキュリティ対策がなされた半導体装置に関する。
【背景技術】
【０００２】
近年、半導体装置に対する不正アクセスへの耐性向上、或いは、模造品対策のために暗号化技術を利用したセキュリティ技術が多く提案されている。この暗号化技術では、暗号鍵が用いられる。この暗号鍵を用いたセキュリティ対策の例が特許文献１、２に開示されている。
【０００３】
特許文献１では、記録媒体にデータを書き込む際に、暗号鍵に基づき生成されたダミーアドレスに、ダミーデータを書き込むことで記録媒体に正規のデータとダミーデータとをマージした状態で記録する技術が開示されている。特許文献１では、これによりデータコピー等の不正を防止する。また、特許文献２では、ダイジェストテーブルを用いて、不変情報片に暗号化を施して暗号値を生成し、この暗号値にハッシュ関数を適用してハッシュ値を取得し、これを不変情報片に１対１で対応する記録アドレスとする技術が開示されている。このとき、特許文献２では、ダイジェストテーブル中に複数の暗号鍵を有し、暗号鍵毎に記録アドレスを可変する。これにより、特許文献２では、同一のハッシュ値を生成する不変情報片を用いて攻撃を試みる等の攻撃に対する攻撃耐性を向上させることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−０４５５０８号公報
【特許文献２】特開２０１０−０７４３５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、暗号化通信を行う半導体装置では、通信に用いる暗号鍵等の秘匿対象情報は、半導体装置の製造後にフラッシュメモリ等の不揮発性メモリに書き込まれる。これらの不揮発性メモリはＣＰＵ（Central Processing Unit）からアクセスが可能であり、不揮発性メモリに格納されている情報を容易に読み出すことが可能である。そのため、半導体装置を解析された場合、この秘匿対象情報が格納される記憶領域の情報を盗み出される問題がある。この問題に対し、特許文献１に記載の技術では、暗号鍵に基づいて一意に生成されたダミーアドレスにダミーデータを書き込むことでセキュリティレベルを向上させている。しかしながら、デバイスによって同じアドレスにダミーデータが書き込まれるため、不揮発性メモリ領域に格納されているデータを大量に集めることで、ダミーデータが書き込まれているアドレスが解読されやすいという課題がある。また、特許文献２に記載の技術では、ダミーデータを書き込んだアドレスを記憶する装置を半導体装置内部に用意し、ダミーデータを書き込むアドレスが同一になる事を防いでいる。しかしながら、アドレス生成時に書き込んだアドレスの確認を行うシーケンスが発生する事によるレスポンスの低下や、新たにアドレスを記憶する回路が必要となることでコストが増加する課題がある。さらに、秘匿対象情報とダミーデータを順次書き込むため、半導体装置と書き込み機間に不正アクセスする、いわゆるサイドチャネルアタックなどの攻撃により、秘匿対象情報が個別に読み出せてしまうという課題がある。
【課題を解決するための手段】
【０００６】
本発明にかかる代表的な半導体装置は、デバイスに固有なユニークコードを持ち、前記ユニークコードからユニークコード対応情報を生成する。前記半導体装置では、前記ユニークコード対応情報と関連付けられる領域に秘匿対象情報を暗号化した特定情報が格納される記憶領域を持ち、前記ユニークコード対応情報を用いて前記記憶領域から読み出された前記特定情報を復号して前記秘匿対象情報を生成する。
【０００７】
前記半導体装置では、デバイスに固有なユニークコードにより秘匿対象情報を格納する領域が指定される。つまり、本発明にかかる半導体装置では、デバイス毎に秘匿対象情報が格納される領域が変動する。このため、不揮発性メモリ領域のデータを大量に集めた場合でも、秘匿対象情報の格納されている領域の特定は困難である。また、デバイスに固有なユニークコードにより一意的に決定されるアドレス領域を用いるため、ダミーデータの書き込みを行ったアドレスを記憶する装置を必要としない。さらには、秘匿対象情報とダミーデータをマージして一度に半導体装置に書き込むため、サイドチャネルアタックのような攻撃に対しても、秘匿情報を特定することが困難である。これにより、本発明にかかる半導体装置では、解析による秘匿対象情報の盗み出しを難しくし、セキュリティを向上させることができる。
【発明の効果】
【０００８】
本発明にかかる半導体装置によれば、秘匿対象情報に対するセキュリティレベルを向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる半導体装置及び半導体装置に特定情報を書き込む書き込み機のブロック図である。
【図２】実施の形態１にかかる書き込み機の動作手順を示すシーケンス図である。
【図３】特定情報を用いた実施の形態１にかかる半導体装置の動作手順を示すシーケンス図である。
【図４】実施の形態２にかかる半導体装置及び半導体装置に特定情報を書き込む書き込み機のブロック図である。
【図５】実施の形態２にかかる書き込み機の動作を示すフローチャートである。
【図６】実施の形態２にかかる書き込み機の動作手順を示すシーケンス図である。
【図７】特定情報を用いた実施の形態２にかかる半導体装置の動作手順を示すシーケンス図である。
【図８】実施の形態３にかかる半導体装置及び半導体装置に特定情報を書き込む書き込み機のブロック図である。
【図９】実施の形態３にかかる書き込み機の動作手順を示すシーケンス図である。
【図１０】実施の形態４にかかる半導体装置及び半導体装置に特定情報を書き込む書き込み機のブロック図である。
【図１１】実施の形態４にかかる書き込み機の動作手順を示すシーケンス図である。
【図１２】特定情報を用いた実施の形態４にかかる半導体装置の動作手順を示すシーケンス図である。
【図１３】特定情報の記憶領域への格納方法の別の例を示す概略図である。
【図１４】特定情報の記憶領域への格納方法の別の例を示す概略図である。
【発明を実施するための形態】
【００１０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。実施の形態１にかかる半導体装置１及び半導体装置１に特定情報を書き込む書き込み機２のブロック図を図１に示す。
【００１１】
図１に示すように、半導体装置１は、ユニークコード生成部１０、ユニークコード対応情報生成部（例えば、ダイジェスト生成部１１）、記憶領域１２、メモリコントローラ１３、復号部（例えば、ハッシュ関数復号部１４）、暗号化部１５を有する。
【００１２】
ユニークコード生成部１０は、デバイスに固有なユニークコードＵＣを生成する。例えば、ユニークコード生成部１０は、半導体装置１が備えるメモリ素子（例えば、ＳＲＡＭ（Static Random Access Memory））の起動時の初期値を用いてユニークコードＵＣを生成する。ユニークコードＵＣは、同じ設計の回路から生成される値であるが、実際に半導体装置として製造される回路は個々にばらつきを有するという性質を利用して生成されるコードである。このような技術は、ＰＵＦ（Physical Unclonable Function）と呼ばれ、耐タンパチップのような特殊なハードウェアを必要とせず、データの高い秘匿性を実現することができる。また、ユニークコードＵＣとしては、ＰＵＦ以外にも、ＣＰＵＩＤ等の半導体装置に固有の情報を利用することができる。
【００１３】
ダイジェスト生成部１１は、ユニークコードからユニークコード対応情報（例えば、ダイジェスト値ＤＩ）を生成する。実施の形態１では、ユニークコード対応情報生成部としてダイジェスト生成部１１を利用したが、ユニークコード対応情報生成部としては、ユニークコードＵＣから一意にアドレス値に相当する情報を生成するものであれば良く、ダイジェスト生成部以外のアルゴリズムで動作する回路を利用することも可能である。記憶領域１２は、ダイジェスト値ＤＩと関連付けられる領域（例えば、ダイジェスト値ＤＩをアクセス対象のアドレスとした場合、ダイジェスト値ＤＩで示される領域）に秘匿対象情報を暗号化した特定情報が格納される。なお、記憶領域１２は、フラッシュメモリ等の不揮発性メモリの一部であっても、不揮発性メモリの全領域であってもよい。この記憶領域１２は、秘匿情報を暗号化した特定情報が格納されるメモリ領域であって、電源を遮断しても格納している情報を保持される記憶装置である。
【００１４】
メモリコントローラ１３は、ダイジェスト値ＤＩに基づき記憶領域に対するアクセスを行うためのアドレスを生成し、当該アドレスに対応する領域から情報を読み出す。また、メモリコントローラ１３は、書き込み機２から書き込み命令があった場合、当該書き込み命令に従って記憶領域１２に情報を書き込む。
【００１５】
より具体的には、半導体装置１に格納される特定情報ＨＦ２は、書き込み機２で生成される。そして、書き込み機２は、特定情報ＨＦ２を書き込む際に、ダミー値Ｄｄと特定情報ＨＦ２とをマージして書き込み命令を発行する。このとき、書き込み機２は、特定情報ＨＦ２を格納する領域としてユニークコードＵＣのダイジェスト値ＤＩを特定情報ＨＦ２の書き込みアドレスとして指定する。そして、メモリコントローラ１３は、半導体装置１のダイジェスト生成部１１がユニークコードＵＣから生成するダイジェスト値ＤＩをリードアドレスとして特定情報ＨＦ２を読み出す。
【００１６】
ハッシュ関数復号部１４は、メモリコントローラ１３がユニークコードＵＣに関連付けられた領域から読み出した特定情報ＨＦ２を受信する。そして、ハッシュ関数復号部１４は、特定情報ＨＦ２をユニークコードＵＣで復号して秘匿対象情報（例えば、ハッシュ関数ＨＦ１）を復号する。この秘匿対象情報ＨＦ１は、暗号化処理に用いられるハッシュ関数（例えば、暗号鍵）である。暗号化部１５は、ハッシュ関数ＨＦ１を用いて送信対象情報を暗号化して暗号化済み情報を生成する。
【００１７】
また、図１に示すように、書き込み機２は、ダイジェスト生成部２１、格納部２２、ハッシュ関数暗号化部２３、ダミー値発生部２４、セレクタ２５、バッファ２６を有する。
【００１８】
ダイジェスト生成部２１は、ダイジェスト生成部１１と同じアルゴリズムにより、ユニークコードＵＣからダイジェスト値ＤＩを生成する。ダイジェスト生成部２１に入力されるユニークコードＵＣは、ダイジェスト生成部１１に入力されるものと同じものであり、半導体装置１から送信される。つまり、ダイジェスト生成部２１において生成されるダイジェスト値ＤＩは、半導体装置１のダイジェスト生成部１１で生成されるダイジェスト値ＤＩと同じ値となる。
【００１９】
格納部２２には、半導体装置１で暗号鍵として利用される秘匿対象情報（例えば、ハッシュ関数ＨＦ１）が格納される。ハッシュ関数暗号化部２３は、格納部２２からハッシュ関数ＨＦ１を読み出して、ハッシュ関数ＨＦ１をユニークコードＵＣで暗号化した特定情報ＨＦ２を生成する。
【００２０】
ダミー値発生部２４は、特定情報ＨＦ２と共に半導体装置１の記憶領域１２に書き込まれるダミー値Ｄｄを生成する。ダミー値Ｄｄは、例えば、乱数発生装置などで与えられる情報や、ハッシュ関数ＨＦ１とは異なる値を暗号化した偽の暗号化情報である。
【００２１】
セレクタ２５は、バッファ２６に書き込む情報を選択する回路である。バッファ２６は、ダミー値Ｄｄと特定情報ＨＦ２とを一時的に記憶する記憶装置である。バッファ２６は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）等の不揮発性メモリである。このバッファ２６は、半導体装置１の記憶領域１２と同容量の記憶装置であることが好ましい。
【００２２】
より具体的には、セレクタ２５は、半導体装置１のメモリコントローラ１３がダイジェスト値ＤＩを用いて読み出し動作を行うアルゴリズムと同じアルゴリズムでバッファ２６に情報を書き込む。例えば、実施の形態１にかかる書き込み機２では、セレクタ２５は、バッファ２６の領域のうちダイジェスト値ＤＩで示されるアドレスの領域に特定情報ＨＦ２を書き込み、バッファ２６の他のアドレスで示される領域にはダミー値Ｄｄを書き込む。そして、書き込み機２は、バッファ２６に格納されている情報をマージして半導体装置１に送信する命令を発行する。
【００２３】
続いて、実施の形態１にかかる書き込み機２の動作について詳細に説明する。そこで、図２に書き込み機２の動作手順を示すシーケンス図を示す。
【００２４】
図２に示すように、書き込み機２は、まず、ダイジェスト生成部２１においてユニークコードＵＣを受信する（ステップＳ１）。そして、ダイジェスト生成部２１は、ダイジェスト値ＤＩを生成する（ステップＳ２）。このダイジェスト値ＤＩは、セレクタ２５に送信される（ステップＳ３）。
【００２５】
続いて、書き込み機２は、ハッシュ関数暗号化部２３においてユニークコードＵＣを受信する（ステップＳ４）。そして、ハッシュ関数暗号化部２３は、ハッシュ関数ＨＦ１をユニークコードＵＣで暗号化して特定情報ＨＦ２を生成する（ステップＳ５）。この特定情報ＨＦ２は、セレクタ２５に送信される（ステップＳ６）。
【００２６】
続いて、書き込み機２は、ダミー値発生部２４においてダミー値Ｄｄを生成する（ステップＳ７）。このダミー値Ｄｄは、セレクタ２５に送信される（ステップＳ８）。このダミー値の生成は、特定情報ＨＦ２を除いたバッファ領域が埋まるように生成する。この生成に関しては、少ないビットのダミー値を複数回生成することも、一度に生成することも可能である。
【００２７】
セレクタ２５は、受信した特定情報ＨＦ２をバッファ２６においてダイジェスト値ＤＩをアドレスとする領域に書き込むと共に、バッファ２６の他の領域にはダミー値Ｄｄを書き込む（ステップＳ９）。そして、書き込み機２は、バッファ２６に格納された特定情報ＨＦ２とダミー値Ｄｄとをマージして半導体装置１に送信する（ステップＳ１０）。
【００２８】
これにより、半導体装置１の記憶領域１２には、ダイジェスト値ＤＩをアドレスとする領域に特定情報ＨＦ２が格納され、他の領域にはダミー値Ｄｄが格納される。
【００２９】
続いて、特定情報ＨＦ２を用いた半導体装置１の動作について説明する。そこで、図３に特定情報ＨＦ２を用いた実施の形態１にかかる半導体装置の動作手順を示すシーケンス図を示す。
【００３０】
図３に示すように、半導体装置１は、まず、ユニークコード生成部１０で生成されたユニークコードＵＣをダイジェスト生成部１１及びハッシュ関数復号部１４に送信する（ステップＳ１１、Ｓ１７）。続いて、ダイジェスト生成部１１は、受信したユニークコードＵＣに基づきダイジェスト値ＤＩを生成する（ステップＳ１２）。このダイジェスト値ＤＩは、メモリコントローラ１３に送信される（ステップＳ１３）。
【００３１】
続いて、メモリコントローラ１３は、受信したダイジェスト値ＤＩをリードアドレスとしてリード命令ＲＤ［ＤＩ］を発行する（ステップＳ１４）。そして、記憶領域１２は、リード命令ＲＤ［ＤＩ］に応じてダイジェスト値ＤＩに関連付けられたアドレスに格納されている特定情報ＨＦ２をメモリコントローラ１３に送信する（ステップＳ１５）。続いて、メモリコントローラ１３は、受信した特定情報ＨＦ２をハッシュ関数復号部１４に送信する（ステップＳ１６）。
【００３２】
ハッシュ関数復号部１４は、受信した特定情報ＨＦ２を、受信したユニークコードＵＣにより復号してハッシュ関数ＨＦ１を生成する（ステップＳ１８）。このハッシュ関数ＨＦ１は、暗号化部１５に送信される（ステップＳ１９）。そして、半導体装置１は、ハッシュ関数ＨＦ１を利用して暗号化通信を開始する（ステップＳ２０）。
【００３３】
ここで、一般的な半導体装置を解析して不正にデータを取得する方法としては、以下のような方法がある。
（１）半導体装置をＦＩＢ（Focused Ion Beam）を用いて加工し、プローブを用いて半導体装置を物理的に解析する方法。
（２）半導体装置にレーザなどの電磁波を照射したり、電源端子にノイズを挿入したりすることでＣＰＵを暴走させて不正にデータを取得するフォルトツリー解析。
（３）半導体装置の消費電流量を観測し、鍵データを解析するリーク解析。
（４）半導体装置の信号端子に直接接続し、信号情報を読み出す方法。
【００３４】
このような不正な解析を回避するために、高いセキュリティレベルが必要な分野では、セキュリティレベルの高いマイコン（以下、セキュアマイコンという）が用いられている。このセキュアマイコンには、配線領域へのシールド、光や信号ノイズを検出する機能、信号に乱数信号を組み合わせて電流をかく乱する機能などが実装されている。
【００３５】
このように、セキュアマイコンを用いることで第三者が不正に半導体装置を解析することを防止することができる。しかしながら、セキュアマイコンを用いた場合は、不正解析を防止できる反面、その耐タンパ性により半導体装置メーカー等が不良解析や故障解析を実施することができなくなるという問題があった。特に、自動車に用いられる車載用のマイコン（ＥＣＵ等）では、高信頼性が必要であるため、半導体装置の不良解析や故障解析が必要となる。このような理由から、車載用のマイコンにはセキュアマイコンよりもセキュリティレベルが低い汎用のマイコン（以下、汎用マイコンという）が広く用いられてきた。しかし、近年では、車載用マイコンのセキュリティの脆弱性をターゲットとした攻撃例が報告されている。したがって、車載用のマイコンでは、汎用マイコンを使用しつつ、半導体装置のセキュリティレベルを向上させることが可能な暗号通信システムが必要とされていた。
【００３６】
実施の形態１にかかる半導体装置では、暗号化された特定情報ＨＦ２を自身のユニークコードＵＣから生成されたユニークコード対応情報（例えば、ダイジェスト値ＤＩ）と関連付けられる領域に格納する。これにより、半導体装置１では、デバイス毎に異なる領域に特定情報ＨＦ２で格納されることになるため、攻撃者から特定情報ＨＦ２が格納された領域そのものを秘匿することができる。従って、実施の形態１にかかる半導体装置１では、半導体装置１に格納された特定情報ＨＦ２のセキュリティを向上させることができる。また、実施の形態１にかかる半導体装置１では、上記のセキュアマイコンを用いることなくセキュリティを向上させることができる。
【００３７】
また、実施の形態１にかかる半導体装置１では、特定情報ＨＦ２は、ＣＰＵ（Central Processing Unit）等からアクセス可能な領域である記憶領域に格納される。しかし、格納する特定情報ＨＦ２は、自身のユニークコードＵＣにより暗号化された情報である。そして、実施の形態１にかかる半導体装置１では、ハッシュ関数ＨＦ１を必要に応じてその都度生成する。そのため、メンテナンス等においては、特定情報ＨＦ２の元の情報であるハッシュ関数ＨＦ１に対応する暗号鍵を有するメンテナンス者がハッシュ関数ＨＦ１の不具合を解析することができる。一方、攻撃者が万が一この特定情報ＨＦ２を読み出すことができた場合であっても、攻撃者は、特定情報ＨＦ２がどのようなアルゴリズムで暗号化されているかを理解することができないため、特定情報ＨＦ２からハッシュ関数ＨＦ１を復号することができない。つまり、実施の形態１にかかる半導体装置１は、秘匿対象情報であるハッシュ関数ＨＦ１に対するメンテナンス性を犠牲にすることなくセキュリティを向上させることができる。
【００３８】
また、実施の形態１にかかる半導体装置１では、自身のユニークコードＵＣを利用してハッシュ関数ＨＦ１を暗号化することで特定情報ＨＦ２を生成する。そのため、実施の形態１にかかる半導体装置１では、特定情報ＨＦ２を復号する際に、自身のユニークコードＵＣを利用するのみで良く、サーバー等のデータベースに接続するなどして復号に用いる暗号鍵を取得する必要がない。つまり、実施の形態１にかかる半導体装置１では、サーバー等との接続にかかるセキュリティ対策を必要としない。
【００３９】
さらに、実施の形態１にかかる半導体装置１では、特定情報ＨＦ２を格納する記憶領域の容量として書き込み機２のバッファ２６の容量以上に確保する必要がない。そのため、実施の形態１にかかる半導体装置１では、半導体装置１に実装されている記憶領域を有効に利用することができる。
【００４０】
また、実施の形態１では、書き込み機２から半導体装置１へは、ダミー値と特定情報ＨＦ２とをマージした状態で書き込みを行う。これにより、書き込み機２から半導体装置１への通信経路に体してサイドチャネルアタック等の攻撃があった場合においても、攻撃者はダミー値と特定情報ＨＦ２とを区別することができない。また、書き込み機２から半導体装置１にハッシュ関数ＨＦ１の情報を送信する際に、ハッシュ関数ＨＦ１を暗号化した特定情報ＨＦ２として送信する。これにより、万が一、攻撃者が特定情報ＨＦ２を判別できたとしても、暗号化アルゴリズムが不明である限りハッシュ関数ＨＦ１を攻撃者に取得されることがない。このような観点からも実施の形態１にかかる半導体装置１及び書き込み機２は、秘匿対象情報であるハッシュ関数ＨＦ１に対するセキュリティを向上させることができる。
【００４１】
実施の形態２
実施の形態２にかかる半導体装置３及び半導体装置３に特定情報を書き込む書き込み機４のブロック図を図４に示す。図４に示すように、半導体装置３は、実施の形態１にかかる半導体装置１にデバイス固有のユニークコードのエラー訂正に用いるデータ（例えば、ＥＣＣコード）が格納される格納部３１と、エラー訂正回路（例えば、ＥＣＣ回路３２）を追加したものである。また、書き込み機４は、実施の形態１にかかる書き込み機２にデバイス固有のユニークコードのエラー訂正に用いるデータ（例えば、ＥＣＣコード）及びエラー訂正を行ったデバイス固有のユニークコードを比較検証するデータ（例えば、ＣＲＣコードテーブル）が格納される格納部４１と、エラー訂正回路（例えば、ＥＣＣ回路４２）と、ユニークコードの比較検証を行うＣＲＣ回路４３と、を追加したものである。
【００４２】
半導体装置３のＥＣＣ回路３２は、ユニークコード生成部１０が生成したユニークコードＵＣに含まれるエラーを訂正して訂正済みユニークコードＣＵＣを生成する。より具体的には、ＥＣＣ回路３２は、格納部３１からユニークコードＵＣに対応したＥＣＣコードを読み出して、当該ＥＣＣコードに基づきユニークコードＵＣのエラーを訂正してエラー訂正済みユニークコードＣＵＣを生成する。
【００４３】
半導体装置３では、このエラー訂正済みユニークコードＣＵＣに基づきダイジェスト生成部１１がダイジェスト値ＤＩを生成する。また、半導体装置３では、エラー訂正済みユニークコードＣＵＣに基づきハッシュ関数復号部１４が復号処理を行う。
【００４４】
書き込み機４のＥＣＣ回路４２は、ユニークコード生成部１０が生成したユニークコードＵＣに含まれるエラーを訂正して訂正済みユニークコードＣＵＣを生成する。より具体的には、ＥＣＣ回路４２は、格納部４１からユニークコードＵＣに対応したＥＣＣコードを読み出して、当該ＥＣＣコードに基づきユニークコードＵＣのエラーを訂正してエラー訂正済みユニークコードＣＵＣを生成する。格納部４１に格納されるＥＣＣコードは、半導体装置３の格納部３１に格納されるＥＣＣコードとは同じである。このように２つ装置に同一のＥＣＣコードを保持した場合、書き込み機４と半導体装置３との正当性の確認を行うことができるためである。
【００４５】
書き込み機４のＣＲＣ回路４３は、エラー訂正済みユニークコードＣＵＣと、格納部４１に格納されているＣＲＣコードテーブルと、を比較して、エラー訂正済みユニークコードＣＵＣの正当性の判断を行う。ＣＲＣコードテーブルは、ＥＣＣコードと対応付けられた正当なユニークコードを記録したテーブルデータである。そして、ＣＲＣ回路４３が、エラー訂正済みユニークコードＣＵＣが正当なものであると判定した場合は、ダイジェスト生成部２１とハッシュ関数暗号化部２３にエラー訂正済みユニークコードＣＵＣを与える。一方、ＣＲＣ回路４３が、エラー訂正済みユニークコードＣＵＣが正当なものではないと判定した場合は、書き込み機４は、ハッシュ関数ＨＦ１の書き込み処理を停止する。
【００４６】
続いて、実施の形態２にかかる書き込み機４の動作について説明する。そこで、実施の形態２にかかる書き込み機４の動作を示すフローチャートを図５に示す。
【００４７】
まず、書き込み機４は、半導体装置３からエラー訂正前のユニークコードＵＣを受信する（ステップＳ２１）。続いて、書き込み機４は、ＥＣＣコードを格納部４１からＥＣＣ回路４２に送信する（ステップＳ２２）。そして、ＥＣＣ回路４２は、エラー訂正前のユニークコードＵＣのエラーを訂正してエラー訂正済みユニークコードＣＵＣを生成する（ステップＳ２３）。
【００４８】
続いて、書き込み機４は、ＣＲＣコードテーブルを格納部４１からＣＲＣ回路４３に送信する（ステップＳ２４）。続いて、書き込み機４は、ＣＲＣ回路４３にてＣＲＣコードテーブルとエラー訂正済みユニークコードＣＵＣとを比較する（ステップＳ２５）。そして、ステップＳ２５の比較において、ＣＲＣコードとエラー訂正済みユニークコードＣＵＣとが不一致である場合（ステップＳ２６のＮＯの枝）、書き込み機４は特定情報ＨＦ２の書き込み処理を停止する。一方、ＣＲＣコードとエラー訂正済みユニークコードＣＵＣとが一致した場合（ステップＳ２６のＹＥＳの枝）、書き込み機４は特定情報ＨＦ２の書き込み処理を進める。
【００４９】
書き込み機４は、ステップＳ２６でＣＲＣコードとエラー訂正済みユニークコードＣＵＣとが一致していると判断された場合、エラー訂正済みユニークコードＣＵＣに基づきダイジェスト値ＤＩを生成する（ステップＳ２７）。また、書き込み機４は、ステップＳ２７に続いて、エラー訂正済みユニークコードＣＵＣを用いてハッシュ関数ＨＦ１を暗号化して特定情報ＨＦ２を生成する（ステップＳ２８）。
【００５０】
続いて、書き込み機４は、特定情報ＨＦ２とダミー値Ｄｄとをバッファ２６に保存する（ステップＳ２９）。より具体的には、ステップＳ２９では、バッファ２６の領域のうちダイジェスト値ＤＩをアドレスとする領域に特定情報ＨＦ２を格納し、バッファ２６の領域のうちダイジェスト値ＤＩをアドレスとしない領域にダミー値Ｄｄを格納する。続いて、書き込み機４は、特定情報ＨＦ２とダミー値Ｄｄとをマージして半導体装置３に送信する（ステップＳ３０）。
【００５１】
図５に示したフローチャートから、書き込み機４は、ＣＲＣ回路４３においてエラー訂正済みユニークコードＣＵＣが正規のものでないと判断された場合には、半導体装置３に特定情報ＨＦ２を送信しない。ＣＲＣコードとこれにより、半導体装置３が正規のものでない場合などに、特定情報ＨＦ２が非正規の半導体装置３に送信されることを防ぐことができる。
【００５２】
続いて、実施の形態２にかかる書き込み機４の動作手順を示すシーケンス図を図６に示す。図６に示すように、書き込み機４は、まず、半導体装置３からエラー訂正前のユニークコードＵＣを受信する（ステップＳ３１）。続いて、ＥＣＣ回路４２においてＥＣＣコードを用いてユニークコードＵＣのエラーを訂正し、エラー訂正済みユニークコードＣＵＣを生成する（ステップＳ３２）。このエラー訂正済みユニークコードＣＵＣは、ＣＲＣ回路４３に送信される（ステップＳ３３）。
【００５３】
続いて、書き込み機４では、ＣＲＣ回路４３において、ＣＲＣコードテーブル４１から該当するＣＲＣコードを適応し、エラー訂正済みユニークコードＣＵＣとＣＲＣコードとを比較し、エラー訂正済みユニークコードＣＵＣの正当性を判定する（ステップＳ３４）。このステップＳ３４の判定において、エラー訂正済みユニークコードＣＵＣが不正なものと判定された場合は、処理はここで停止する。一方、ステップＳ３４の判定において、エラー訂正済みユニークコードＣＵＣが正当なものと判定された場合は、処理が進められる。
【００５４】
ステップＳ３４の処理に続いて、特定情報ＨＦ２及びダミー値Ｄｄの生成と、特定情報ＨＦ２及びダミー値Ｄｄの送信が行われる。具体的には、書き込み機４では、ＣＲＣ回路４３からダイジェスト生成部２１及びハッシュ関数暗号化部２３にエラー訂正済みユニークコードＵＣを送信する（ステップＳ３５、Ｓ３８）。そして、ダイジェスト生成部２１は、エラー訂正済みユニークコードＣＵＣに基づきダイジェスト値ＤＩを生成する（ステップＳ３６）。このダイジェスト値ＤＩは、セレクタ２５に送信される（ステップＳ３７）。
【００５５】
続いて、書き込み機４は、ハッシュ関数暗号化部２３において、ハッシュ関数ＨＦ１をエラー訂正済みユニークコードＵＣで暗号化して特定情報ＨＦ２を生成する（ステップＳ３９）。この特定情報ＨＦ２は、セレクタ２５に送信される（ステップＳ４０）。
【００５６】
続いて、書き込み機４は、ダミー値発生部２４においてダミー値Ｄｄを生成する（ステップＳ４１）。このダミー値Ｄｄは、セレクタ２５に送信される（ステップＳ４２）。このダミー値の生成は、特定情報ＨＦ２を除いたバッファ領域が埋まるように生成する。この生成に関しては、少ないビットのダミー値を複数回生成することも、一度に生成することも可能である。
【００５７】
セレクタ２５は、受信した特定情報ＨＦ２をバッファ２６においてダイジェスト値ＤＩをアドレスとする領域に書き込むと共に、バッファ２６の他の領域にはダミー値Ｄｄを書き込む（ステップＳ４３）。そして、書き込み機４は、バッファ２６に格納された特定情報ＨＦ２とダミー値Ｄｄとをマージして半導体装置３に送信する（ステップＳ４４）。
【００５８】
続いて、特定情報ＨＦ２を用いた半導体装置３の動作について説明する。そこで、図７に特定情報ＨＦ２を用いた実施の形態３にかかる半導体装置の動作手順を示すシーケンス図を示す。
【００５９】
図７に示すように、半導体装置１は、まず、ユニークコード生成部１０で生成されたエラー訂正前のユニークコードＵＣをＥＣＣ回路３２に送信する（ステップＳ５１）。そして、ＥＣＣ回路３２は、格納部３１からＥＣＣコードを読み出して、ユニークコードＵＣのエラーを停止して、エラー訂正済みユニークコードＣＵＣを生成する（ステップＳ５２）。ＥＣＣ回路３２は、このエラー訂正済みユニークコードＣＵＣをダイジェスト生成部１１及びハッシュ関数復号部１４に送信する（ステップＳ５３、Ｓ５９）。続いて、ダイジェスト生成部１１は、受信したエラー訂正済みユニークコードＣＵＣに基づきダイジェスト値ＤＩを生成する（ステップＳ５４）。このダイジェスト値ＤＩは、メモリコントローラ１３に送信される（ステップＳ５５）。
【００６０】
続いて、メモリコントローラ１３は、受信したダイジェスト値ＤＩをリードアドレスとしてリード命令ＲＤ［ＤＩ］を発行する（ステップＳ５６）。そして、記憶領域１２は、リード命令ＲＤ［ＤＩ］に応じてダイジェスト値ＤＩに関連付けられたアドレスに格納されている特定情報ＨＦ２をメモリコントローラ１３に送信する（ステップＳ５７）。続いて、メモリコントローラ１３は、受信した特定情報ＨＦ２をハッシュ関数復号部１４に送信する（ステップＳ５８）。
【００６１】
ハッシュ関数復号部１４は、受信した特定情報ＨＦ２を、受信したエラー訂正済みユニークコードＣＵＣにより復号してハッシュ関数ＨＦ１を生成する（ステップＳ６０）。このハッシュ関数ＨＦ１は、暗号化部１５に送信される（ステップＳ６１）。そして、半導体装置１は、ハッシュ関数ＨＦ１を利用して暗号化通信を開始する（ステップＳ６２）。
【００６２】
上記説明より、実施の形態２にかかる半導体装置３は、エラー訂正回路（例えば、ＥＣＣ回路３２）を備えることで、ユニークコードＵＣがその生成原理からランダムなビットにエラーを含むＰＵＦ等であっても当該エラーを訂正してエラーのないユニークコードＣＵＣにより実施の形態１にかかる半導体装置１と同様の動作を行うことができる。ＰＵＦは、デバイスに固有の値であり、回路が同じであっても同じ値を有するコードを生成できないことから、ＰＵＦを利用することでセキュリティを向上させることができる。
【００６３】
また、ユニークコードＵＣを生成するためのＥＣＣコードは、ユニークコード生成時に半導体装置３と書き込み機４で送受信を行う必要が無いため、ＥＣＣコードの秘匿性が守られている。このようなことから、半導体装置３の格納部３１に格納されるＥＣＣコードと同じＥＣＣコードを書き込み機４が有することで書き込み機４に対する半導体装置３の正当性、又は、半導体装置３に対する書き込み機４の正当性を判断することができる。書き込み機４と半導体装置３とのいずれか一方が正当なものでない場合、半導体装置３に格納されるＥＣＣコードと書き込み機４に格納されるＥＣＣコードとが一致しない。これに対して、エラー訂正の対象となるユニークコードＵＣは、半導体装置３と書き込み機４とにおいて同一である。同一のユニークコードに対して異なるＥＣＣコードを適用した場合、正しいエラー訂正は行われない。そのため、本来のエラー訂正とは異なるエラー訂正が行われたエラー訂正済みユニークコードＣＵＣは、ＣＲＣコードテーブル中の値と異なる値を示す。つまり、実施の形態２にかかる書き込み機４では、ＣＲＣ回路４３におけるＣＲＣ処理により半導体装置３の正当性又は、半導体装置３に対する書き込み機４の正当性を判断することができる。
【００６４】
さらに、実施の形態２にかかる書き込み機４では、半導体装置３と書き込み機４とのいずれか一方の正当性が疑われる場合には、特定情報ＨＦ２の生成処理及び送信処理を停止する。これにより、実施の形態２にかかる書き込み機４によれば、不正な半導体装置３（例えば、模造品）に対して特定情報ＨＦ２（及びハッシュ関数ＨＦ１）が漏洩することを防止することができる。つまり、実施の形態２にかかる書き込み機４によれば、半導体装置３に対するセキュリティを向上させることができる。
【００６５】
また、実施の形態２では、エラー訂正済みユニークコードＣＵＣの正当性を確認するためにＣＲＣ回路４３を用いたが、エラー訂正済みユニークコードＣＵＣの正当性は、ＣＲＣに限られず、パリティなどのエラーを検出してご訂正を防止できる機能を有している回路であれば他の回路を利用することもできる。
【００６６】
また、実施の形態２にかかる半導体装置３では、書き込み機４に送信するユニークコードＵＣとしてエラー訂正前のコードを送信する。つまり、半導体装置３と書き込み機４との間の通信経路には、エラーを含むユニークコードＵＣが伝達される。そのため、実施の形態２にかかる半導体装置３では、通信経路に対してサイドチャネルアタック等の攻撃があった場合にも盗聴されるユニークコードＵＣがエラーを含むため、攻撃者は盗聴した情報からは正当なユニークコードＵＣを判別することができない。つまり、実施の形態２にかかる半導体装置３を用いることで、通信経路のセキュリティを向上させることができる。
【００６７】
実施の形態３
実施の形態３にかかる半導体装置３及び半導体装置３に特定情報を書き込む書き込み機４ａのブロック図を図８に示す。図８に示すように、実施の形態３では、実施の形態２にかかる書き込み機４からＣＲＣ回路を除いた書き込み機４ａを備える構成について説明する。
【００６８】
図８に示すように、書き込み機４ａでは、ＣＲＣ回路によるＣＲＣ処理を経ることなく、エラー訂正済みユニークコードＣＵＣがダイジェスト生成部２１及びハッシュ関数暗号化部２３に送信される。このように、実施の形態３にかかる半導体装置３及び書き込み機４ａでは、実施の形態２にかかる半導体装置３及び書き込み機４との違いは、ＣＲＣ回路の有無だけであるため、以下では、書き込み機４ａの動作についてのみ説明する。
【００６９】
実施の形態２にかかる書き込み機４の動作手順を示すシーケンス図を図９に示す。なお、図９では、書き込み機４ａの動作と書き込み機４の動作との対応付けを行うため、書き込み機４の動作と実施的に同じ動作に対しては同じ符号を付した。
【００７０】
図９に示すように、書き込み機４ａは、まず、半導体装置３からエラー訂正前のユニークコードＵＣを受信する（ステップＳ３１）。続いて、ＥＣＣ回路４２においてＥＣＣコードを用いてユニークコードＵＣのエラーを訂正し、エラー訂正済みユニークコードＣＵＣを生成する（ステップＳ３２）。このエラー訂正済みユニークコードＣＵＣは、ダイジェスト生成部２１及びハッシュ関数暗号化部２３にエラー訂正済みユニークコードＵＣに送信される（ステップＳ３５、Ｓ３８）。そして、ダイジェスト生成部２１は、エラー訂正済みユニークコードＣＵＣに基づきダイジェスト値ＤＩを生成する（ステップＳ３６）。このダイジェスト値ＤＩは、セレクタ２５に送信される（ステップＳ３７）。
【００７１】
続いて、書き込み機４は、ハッシュ関数暗号化部２３において、ハッシュ関数ＨＦ１をエラー訂正済みユニークコードＵＣで暗号化して特定情報ＨＦ２を生成する（ステップＳ３９）。この特定情報ＨＦ２は、セレクタ２５に送信される（ステップＳ４０）。
【００７２】
続いて、書き込み機４は、ダミー値発生部２４においてダミー値Ｄｄを生成する（ステップＳ４１）。このダミー値Ｄｄは、セレクタ２５に送信される（ステップＳ４２）。このダミー値の生成は、特定情報ＨＦ２を除いたバッファ領域が埋まるように生成する。この生成に関しては、少ないビットのダミー値を複数回生成することも、一度に生成することも可能である。
【００７３】
セレクタ２５は、受信した特定情報ＨＦ２をバッファ２６においてダイジェスト値ＤＩをアドレスとする領域に書き込むと共に、バッファ２６の他の領域にはダミー値Ｄｄを書き込む（ステップＳ４３）。そして、書き込み機４は、バッファ２６に格納された特定情報ＨＦ２とダミー値Ｄｄとをマージして半導体装置３に送信する（ステップＳ４４）。
【００７４】
上記説明より、実施の形態３にかかる書き込み機４ａでは、ＣＲＣ回路によるＣＲＣ処理を行うことなく特定情報ＨＦ２の書き込みを行う。このような場合であっても、半導体装置３と書き込み機４ａとのいずれか一方が不正なものあった場合、半導体装置３に書き込まれた特定情報ＨＦ２は、半導体装置３のエラー訂正済みユニークコードＣＵＣでは読み出せない。これは、書き込み機４ａで生成されるダイジェスト値ＤＩと半導体装置３で生成されるダイジェスト値ＤＩとが異なる値となるためである。また、半導体装置３では、例えば、特定情報ＨＦ２を記憶領域１２から読み出せたとしても、特定情報ＨＦ２の生成に用いたエラー訂正済みユニークコードＣＵＣと半導体装置３で生成されるエラー訂正済みユニークコードＣＵＣとが不一致であるため、ハッシュ関数ＨＦ１をハッシュ関数復号部１４で復号することができない。
【００７５】
このようなことから、実施の形態３にかかる半導体装置３及び書き込み機４ａによれば、互いに正規のものである場合のみハッシュ関数ＨＦ１の復号を可能とすることができる。また、実施の形態３にかかる半導体装置３及び書き込み機４ａによれば、半導体装置３と書き込み機４ａのいずれか一方が不正のものであった場合には、ハッシュ関数ＨＦ１の復号を防止することができる。つまり、実施の形態３にかかる半導体装置３及び書き込み機４ａによれば、ＣＲＣ回路を用いることなく高いセキュリティを実現することができる。
【００７６】
実施の形態４
実施の形態４にかかる半導体装置５及び書き込み機６のブロック図を図１０に示す。図１０に示すように、半導体装置５は、実施の形態１にかかる半導体装置１のユニークコード生成部１０に代えて、ユニークコード生成部５０を有する。また、半導体装置５では、記憶領域１２にダミー値Ｄｄは格納されず、特定情報ＨＦ２１〜ＨＦ２ｎ（ｎは格納される特定情報の個数を示す値である）が格納される。
【００７７】
ユニークコード生成部５０は、複数のユニークコードＵＣ１〜ＵＣｎ（ｎは生成されるユニークコードの個数を示す値である）を生成し、ユニークコードＵＣ１〜ＵＣｎから１つのユニークコードＵＣｘ（ｘは、選択したユニークコードの番号を示す値である）を選択する。そして、ユニークコード生成部５０は、選択したユニークコードＵＣｘをダイジェスト生成部１１とハッシュ関数復号部１４とに与える。
【００７８】
より具体的には、ユニークコード生成部５０は、ユニークコードＵＣ１〜ＵＣｎ、選択回路５２を有する。このユニークコードは、例えば、ＳＲＡＭ回路の初期値などのＰＵＦで構成される。選択回路５２は、ユニークコードＵＣ１〜ＵＣｎのいずれか１つを選択してユニークコードＵＣｘとして出力する。また、選択回路５２は、モード信号ＭＤが入力される。そして、選択回路５２は、モード信号ＭＤが通常動作モードを示している場合、ユニークコードＵＣ１〜ＵＣｎから選択した任意のユニークコードＵＣｘを出力する。このとき、選択回路５２は、選択するユニークコードが要求される度にランダムに選択する。一方、選択回路５２は、モード信号ＭＤが書き込みモードを示している場合、ユニークコードＵＣ１からユニークコードＵＣｎを順次選択して出力する。
【００７９】
また、書き込み機６は、格納部２２、ハッシュ関数暗号化部６１、バッファ６２を有する。ハッシュ関数暗号化部６１は、半導体装置５が順次送信するユニークコードを用いてハッシュ関数ＨＦ１を暗号化して、特定情報ＨＦ２１〜ＨＦ２ｎを順次生成すると共に、特定情報ＨＦ２１〜ＨＦ２ｎをバッファ６２に格納する。つまり、特定情報ＨＦ２ｎは、ユニークコードＵＣｎによりハッシュ関数ＨＦ１を暗号化したものである。バッファ６２には、特定情報ＨＦ２１〜ＨＦ２ｎをバッファ６２が格納される。そして、書き込み機６は、バッファ６２に格納された特定情報ＨＦ２１〜ＨＦ２ｎをマージして半導体装置５に送信する。
【００８０】
また、半導体装置５では、書き込み機６から送信された特定情報ＨＦ２１〜ＨＦ２ｎを記憶領域１２に格納する。半導体装置５ではユニークコードＵＣ１〜ＵＣｎに対応するダイジェスト値ＤＩ１〜ＤＩｎが生成されるが、特定情報ＨＦ２１〜ＨＦ２ｎは、暗号化処理に用いられたユニークコードに対応するダイジェスト値をアドレスとする領域に格納される。つまり、記憶領域１２は、複数のユニークコードを用いてハッシュ関数ＨＦ１を暗号化した特定情報ＨＦ２１〜ＨＦ２ｎを、ユニークコードＵＣ１〜ＵＣｎと関連付けられる複数の領域に格納する。なお、図１０では、ダイジェスト値ＤＩ１〜ＤＩｎのいずれか１つを示すものとしてダイジェスト値ＤＩｘを示した。
【００８１】
続いて、実施の形態４にかかる書き込み機６の動作手順を示すシーケンス図を図１１に示し、図１１を参照して実施の形態４にかかる書き込み機６の動作手順を説明する。
【００８２】
図１１に示すように、書き込み機６は、ハッシュ関数暗号化部６１は、ユニークコードＵＣ１〜ＵＣｎを受信する（ステップＳ７１）。これに応じて、ハッシュ関数暗号化部６１は、ユニークコードＵＣ１〜ＵＣｎを利用してハッシュ関数ＨＦ１を暗号化し、特定情報ＨＦ２１〜ＨＦ２ｎを生成する（ステップＳ７１）。この特定情報ＨＦ２１〜ＨＦ２ｎはバッファ６２に送信される（ステップＳ７３）そして、書き込み機６は、バッファ６２に格納されている特定情報ＨＦ２１〜ＨＦ２ｎをマージして半導体装置５に送信する（ステップＳ７４）。そして、半導体装置５では、特定情報ＨＦ２１〜ＨＦ２ｎを、記憶領域１２のユニークコードＵＣ１〜ＵＣｎと関連付けられる複数の領域に格納する。
【００８３】
続いて、特定情報ＨＦ２１〜ＨＦ２ｎを用いた半導体装置５の動作について説明する。そこで、図１２に特定情報ＨＦ２１〜ＨＦ２ｎを用いた実施の形態４にかかる半導体装置５の動作手順を示すシーケンス図を示す。
【００８４】
図１２に示すように、半導体装置５は、まず、ユニークコード生成部１０で生成されたユニークコードＵＣ１〜ＵＣｎのうちからランダムに選択した１つをユニークコードＵＣｘとして出力する（ステップＳ８１）。そして、選択したユニークコードＵＣｘをダイジェスト生成部１１及びハッシュ関数復号部１４に送信する（ステップＳ８２、Ｓ８８）。続いて、ダイジェスト生成部１１は、受信したユニークコードＵＣｘに基づきダイジェスト値ＤＩｘを生成する（ステップＳ８３）。このダイジェスト値ＤＩｘは、メモリコントローラ１３に送信される（ステップＳ８４）。
【００８５】
続いて、メモリコントローラ１３は、受信したダイジェスト値ＤＩｘをリードアドレスとしてリード命令ＲＤ［ＤＩｘ］を発行する（ステップＳ８５）。そして、記憶領域１２は、リード命令ＲＤ［ＤＩｘ］に応じてダイジェスト値ＤＩｘに関連付けられたアドレスに格納されている特定情報ＨＦ２ｘをメモリコントローラ１３に送信する（ステップＳ８６）。続いて、メモリコントローラ１３は、受信した特定情報ＨＦ２ｘをハッシュ関数復号部１４に送信する（ステップＳ８７）。
【００８６】
ハッシュ関数復号部１４は、受信した特定情報ＨＦ２ｘを、受信したユニークコードＵＣｘにより復号してハッシュ関数ＨＦ１を生成する（ステップＳ８９）。このハッシュ関数ＨＦ１は、暗号化部１５に送信される（ステップＳ９０）。そして、半導体装置１は、ハッシュ関数ＨＦ１を利用して暗号化通信を開始する（ステップＳ９１）。
【００８７】
上記説明より、実施の形態４にかかる半導体装置５では、ユニークコードＵＣ１〜ＵＣｎにより暗号化した特定情報ＨＦ２１〜ＨＦ２ｎにより記憶領域１２を満たす。また、半導体装置５は、ユニークコードＵＣ１〜ＵＣｎに対応して生成されるダイジェスト値ＤＩ１〜ＤＩｎにより、ユニークコードＵＣ１〜ＵＣｎで復号可能な特定情報ＨＦ２１〜ＨＦ２ｎを読み出してハッシュ関数ＨＦ１を復号する。
【００８８】
通常、記憶領域１２に格納される特定情報ＨＦ２は、１つである。そのため、実施の形態４にかかる半導体装置５を攻撃者が解析したとしてもいずれの領域に格納された特定情報が真の特定情報であるかを判別することができない。つまり、半導体装置５を用いることで秘匿対象情報であるハッシュ関数ＨＦ１に対するセキュリティを向上させることができる。
【００８９】
また、記憶領域１２に格納される特定情報は、ユニークコードＵＣ１〜ＵＣｎのいずれかを用いて暗号化されている。そのため、攻撃者は、記憶領域１２に格納されている特定情報を参照しただけでは、暗号化のアルゴリズムを理解することができない。このようなことからも、実施の形態４にかかる半導体装置５を用いることで秘匿対象情報であるハッシュ関数ＨＦ１に対するセキュリティを向上させることができる。
【００９０】
実施の形態５
実施の形態５では、特定情報ＨＦ２を記憶領域１２に格納する際の格納方法の別の形態について説明する。そこで、特定情報ＨＦ２の格納方法の別の一形態を示す概念図を図１３に示す。図１３に示す例では、特定情報ＨＦ２を記憶領域１２の複数の領域に分割して格納する。図１３に示す例では、ダイジェスト値ＤＩを特定情報ＨＦ２の分割数を指定する値として利用すると共に、ダイジェスト値ＤＩを格納する領域の先頭アドレスとして利用するものである。
【００９１】
図１３に示す例では、ダイジェスト値ＤＩとして４が生成され、特定情報ＨＦ２が１２８ビットで表現される。そして、図１３で示す例では、特定情報ＨＦ２の最初の３２ビットが先頭アドレスであるアドレス４の領域に格納され、３３ビット目から６４ビット目の特定情報ＨＦ２がアドレス５の領域に格納され、６５ビット目から９６ビット目の特定情報ＨＦ２がアドレス６の領域に格納され、９７ビット目から１２８ビット目の特定情報ＨＦ２がアドレス７の領域に格納される。また、分割数が１となる場合もあるため、記憶領域１２の１つの領域は、分割されていない特定情報ＨＦ２を格納するのに十分な大きさを有する。そのため、特定情報ＨＦ２を分割して格納した場合、１つの領域に空き領域が存在するが、図１３に示すように、この領域にはダミー値を格納することが好ましい。これは、攻撃者から特定情報ＨＦ２を秘匿するためである。
【００９２】
このように特定情報ＨＦ２が格納された記憶領域１２から特定情報ＨＦ２を読み出すために、メモリコントローラ１３はダイジェスト値ＤＩから特定情報ＨＦ２を読み出すためのリード命令を生成する。より具体的には、メモリコントローラ１３は、ダイジェスト値ＤＩに基づき記憶領域１２の１つの領域に格納される特定情報の分割数を算出すると共に、記憶領域１２へのアクセスを行う。また、メモリコントローラ１３は、分割数に対応する個数のリードアドレスを生成し、当該リードアドレスを用いて複数の領域から読み出した情報から特定情報ＨＦ２を再生し、ハッシュ関数復号部１４に再生した特定情報ＨＦ２を与える。図１３に示す例では、ダイジェスト値ＤＩを特定情報ＨＦ２が格納された領域の先頭アドレスに用いるため、メモリコントローラ１３は、ダイジェスト値ＤＩから、先頭アドレスと先頭アドレスに続くリードアドレスとを含む分割数に相当する数のリードアドレスを生成する。なお、分割した特定情報の格納場所としてダイジェスト値ＤＩから演算された他のアドレスを指定することも可能である。
【００９３】
また、特定情報ＨＦ２の格納方法の別の一形態を示す概念図を図１４に示す。図１４に示す例では、特定情報ＨＦ２を記憶領域１２の複数の領域に分割して格納する。図１４に示す例では、ダイジェスト値ＤＩを記憶領域１２の１つの領域に格納される特定情報ＨＦ２のビット数（分割ビット数）を指定する値として利用すると共に、ダイジェスト値ＤＩを格納する領域の先頭アドレスとして利用するものである。
【００９４】
図１４に示す例では、ダイジェスト値ＤＩとして４が生成され、特定情報ＨＦ２が１２８ビットで表現される。そして、図１４で示す例では、特定情報ＨＦ２は、４ビットずつに分割され、分割された特定情報ＨＦ２がそれぞれ１つの領域に格納される。また、分割ビット数が１２８ビットとなる場合もあるため、記憶領域１２の１つの領域は、分割されていない特定情報ＨＦ２を格納するのに十分な大きさを有する。そのため、特定情報ＨＦ２が分割された場合、１つの領域に空き領域が存在するが、図１４に示すように、この領域にはダミー値を格納することが好ましい。これは、攻撃者から特定情報ＨＦ２を秘匿するためである。特定情報ＨＦ２が格納されるアドレス領域１〜ｎにおいて、特定情報ＨＦ２が書きこまれる位置は限定されない。より具体的には、図１４のアドレス４に書きこまれているＨＦ２［０：３］は、図１４に示されているように、アドレス４の先頭ビットから始まる領域に書きこまれていても、それ以外の領域に書きこまれていても、本発明を実現することが可能である。
【００９５】
このように特定情報ＨＦ２が格納された記憶領域１２から特定情報ＨＦ２を読み出すために、メモリコントローラ１３はダイジェスト値ＤＩから特定情報ＨＦ２を読み出すためのリード命令を生成する。より具体的には、メモリコントローラ１３は、ダイジェスト値ＤＩに基づき記憶領域１２の１つの領域に格納される特定情報ＨＦ２のビット数を算出すると共に、記憶領域１２へのアクセスを行う。また、メモリコントローラ１３は、特定情報ＨＦ２を分割ビット数で除算した値に対応する個数のリードアドレスを生成し、当該リードアドレスを用いて複数の領域から読み出した情報から特定情報ＨＦ２を再生し、ハッシュ関数復号部１４に再生した特定情報ＨＦ２を与える。図１４に示す例では、ダイジェスト値ＤＩを特定情報ＨＦ２が格納された領域の先頭アドレスに用いるため、メモリコントローラ１３は、ダイジェスト値ＤＩから、先頭アドレスと先頭アドレスに続くリードアドレスとを含む特定情報ＨＦ２を分割ビット数で除算した値に相当する数のリードアドレスを生成する。なお、分割した特定情報の格納場所としてダイジェスト値ＤＩから演算された他のアドレスを指定することも可能である。
【００９６】
このように、ダイジェスト値ＤＩに基づき特定情報ＨＦ２を分割して記憶領域１２に格納することで、デバイス毎に異なる記録長で特定情報ＨＦ２が格納される。これにより、攻撃者が記憶領域１２を解析しても、デバイス毎に１つに格納されている特定情報ＨＦ２の記録長が異なるため、攻撃者がいずれの情報が特定情報ＨＦ２であるかを認識することができない。つまり、デバイス毎に異なるユニークコードＵＣに基づき生成されたダイジェスト値ＤＩに基づき特定情報ＨＦ２の記録長を可変することで秘匿対象情報であるハッシュ関数ＨＦ１に対するセキュリティを向上させることができる。
【００９７】
また、上記実施の形態における書き込み機では、書き込み対象の半導体装置と同じユニークコードＵＣを用いて半導体装置と同じダイジェスト値ＤＩを生成するため、書き込み機が上記分割アルゴリズムを実行できるようにすることで、特定情報ＨＦ２の書き込み処理は正常に行うことができる。
【００９８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。複数の実施の形態に関する事項を組み合わせて、1つの装置とすること、例えば、実施の形態４に対して、実施の形態１から実施の形態２への変更内容を適用することは、当業者であれば当然に想到する事項である。
【符号の説明】
【００９９】
１、３、５        半導体装置
２、４、４ａ、６      書き込み機
１０、５０        ユニークコード生成部
１１、２１        ダイジェスト生成部
１２            記憶領域
１３            メモリコントローラ
１４            ハッシュ関数復号部
１５            暗号化部
２２、３１、４１、４４    格納部
２３、６１        ハッシュ関数暗号化部
２４            ダミー値発生部
２５            セレクタ
２６、６２        バッファ
３２、４２        ＥＣＣ回路
４３            ＣＲＣ回路
５２            選択回路
ＨＦ１            ハッシュ関数
ＨＦ２、ＨＦ２１〜ＨＦ２ｎ特定情報
ＭＤ            モード信号
ＤＩ    ダイジェスト値
Ｄｄ    ダミーデータ
ＲＤ［ＤＩ］    ダイジェスト値に対応するアドレスへのリード命令
ＵＣ、ＵＣ１〜ＵＣｎ    ユニークコード
ＣＵＣ    訂正済みユニークコード
【図１】
0005986279.tif 000002
【図２】
0005986279.tif 000003
【図３】
0005986279.tif 000004
【図４】
0005986279.tif 000005
【図５】
0005986279.tif 000006
【図６】
0005986279.tif 000007
【図７】
0005986279.tif 000008
【図８】
0005986279.tif 000009
【図９】
0005986279.tif 000010
【図１０】
0005986279.tif 000011
【図１１】
0005986279.tif 000012
【図１２】
0005986279.tif 000013
【図１３】
0005986279.tif 000014
【図１４】
0005986279.tif 000015