(58)【調査した分野】(Int.Cl.,DB名)
SRAM(static random access memory)を備え、前記SRAMの起動時の初期値により生成され、かつ、デバイスに固有な複数のユニークコードを生成し、前記複数のユニークコードから選択した1つのユニークコードを出力するユニークコード生成部と、
選択された前記1つのユニークコードから複数のユニークコード対応情報を生成するユニークコード対応情報生成部と、
それぞれが予め定められたアドレスを有する複数の格納領域を備え、秘匿対象情報を複数の前記ユニークコードで暗号化した複数の特定情報が、それぞれ、前記複数の格納領域内の前記複数のユニークコード対応情報により示されるアドレスで指定される格納領域に格納される記憶領域と、
1つの前記ユニークコード対応情報を用いて前記複数の格納領域内の一の領域から読み出された前記特定情報を、前記特定情報の読み出しに用いた前記1つのユニークコード対応情報に対応するユニークコードを用いて復号して前記秘匿対象情報を生成する復号部と、
を有する半導体装置。
前記ユニークコードは、半導体装置の素子の製造ばらつきに起因して不確定になるビットを含むPUF(Physically Unclonable Function)データである請求項1に記載の半導体装置。
【発明を実施するための形態】
【0010】
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。実施の形態1にかかる半導体装置1及び半導体装置1に特定情報を書き込む書き込み機2のブロック図を
図1に示す。
【0011】
図1に示すように、半導体装置1は、ユニークコード生成部10、ユニークコード対応情報生成部(例えば、ダイジェスト生成部11)、記憶領域12、メモリコントローラ13、復号部(例えば、ハッシュ関数復号部14)、暗号化部15を有する。
【0012】
ユニークコード生成部10は、デバイスに固有なユニークコードUCを生成する。例えば、ユニークコード生成部10は、半導体装置1が備えるメモリ素子(例えば、SRAM(Static Random Access Memory))の起動時の初期値を用いてユニークコードUCを生成する。ユニークコードUCは、同じ設計の回路から生成される値であるが、実際に半導体装置として製造される回路は個々にばらつきを有するという性質を利用して生成されるコードである。このような技術は、PUF(Physical Unclonable Function)と呼ばれ、耐タンパチップのような特殊なハードウェアを必要とせず、データの高い秘匿性を実現することができる。また、ユニークコードUCとしては、PUF以外にも、CPUID等の半導体装置に固有の情報を利用することができる。
【0013】
ダイジェスト生成部11は、ユニークコードからユニークコード対応情報(例えば、ダイジェスト値DI)を生成する。実施の形態1では、ユニークコード対応情報生成部としてダイジェスト生成部11を利用したが、ユニークコード対応情報生成部としては、ユニークコードUCから一意にアドレス値に相当する情報を生成するものであれば良く、ダイジェスト生成部以外のアルゴリズムで動作する回路を利用することも可能である。記憶領域12は、ダイジェスト値DIと関連付けられる領域(例えば、ダイジェスト値DIをアクセス対象のアドレスとした場合、ダイジェスト値DIで示される領域)に秘匿対象情報を暗号化した特定情報が格納される。なお、記憶領域12は、フラッシュメモリ等の不揮発性メモリの一部であっても、不揮発性メモリの全領域であってもよい。この記憶領域12は、秘匿情報を暗号化した特定情報が格納されるメモリ領域であって、電源を遮断しても格納している情報を保持される記憶装置である。
【0014】
メモリコントローラ13は、ダイジェスト値DIに基づき記憶領域に対するアクセスを行うためのアドレスを生成し、当該アドレスに対応する領域から情報を読み出す。また、メモリコントローラ13は、書き込み機2から書き込み命令があった場合、当該書き込み命令に従って記憶領域12に情報を書き込む。
【0015】
より具体的には、半導体装置1に格納される特定情報HF2は、書き込み機2で生成される。そして、書き込み機2は、特定情報HF2を書き込む際に、ダミー値Ddと特定情報HF2とをマージして書き込み命令を発行する。このとき、書き込み機2は、特定情報HF2を格納する領域としてユニークコードUCのダイジェスト値DIを特定情報HF2の書き込みアドレスとして指定する。そして、メモリコントローラ13は、半導体装置1のダイジェスト生成部11がユニークコードUCから生成するダイジェスト値DIをリードアドレスとして特定情報HF2を読み出す。
【0016】
ハッシュ関数復号部14は、メモリコントローラ13がユニークコードUCに関連付けられた領域から読み出した特定情報HF2を受信する。そして、ハッシュ関数復号部14は、特定情報HF2をユニークコードUCで復号して秘匿対象情報(例えば、ハッシュ関数HF1)を復号する。この秘匿対象情報HF1は、暗号化処理に用いられるハッシュ関数(例えば、暗号鍵)である。暗号化部15は、ハッシュ関数HF1を用いて送信対象情報を暗号化して暗号化済み情報を生成する。
【0017】
また、
図1に示すように、書き込み機2は、ダイジェスト生成部21、格納部22、ハッシュ関数暗号化部23、ダミー値発生部24、セレクタ25、バッファ26を有する。
【0018】
ダイジェスト生成部21は、ダイジェスト生成部11と同じアルゴリズムにより、ユニークコードUCからダイジェスト値DIを生成する。ダイジェスト生成部21に入力されるユニークコードUCは、ダイジェスト生成部11に入力されるものと同じものであり、半導体装置1から送信される。つまり、ダイジェスト生成部21において生成されるダイジェスト値DIは、半導体装置1のダイジェスト生成部11で生成されるダイジェスト値DIと同じ値となる。
【0019】
格納部22には、半導体装置1で暗号鍵として利用される秘匿対象情報(例えば、ハッシュ関数HF1)が格納される。ハッシュ関数暗号化部23は、格納部22からハッシュ関数HF1を読み出して、ハッシュ関数HF1をユニークコードUCで暗号化した特定情報HF2を生成する。
【0020】
ダミー値発生部24は、特定情報HF2と共に半導体装置1の記憶領域12に書き込まれるダミー値Ddを生成する。ダミー値Ddは、例えば、乱数発生装置などで与えられる情報や、ハッシュ関数HF1とは異なる値を暗号化した偽の暗号化情報である。
【0021】
セレクタ25は、バッファ26に書き込む情報を選択する回路である。バッファ26は、ダミー値Ddと特定情報HF2とを一時的に記憶する記憶装置である。バッファ26は、例えば、DRAM(Dynamic Random Access Memory)等の不揮発性メモリである。このバッファ26は、半導体装置1の記憶領域12と同容量の記憶装置であることが好ましい。
【0022】
より具体的には、セレクタ25は、半導体装置1のメモリコントローラ13がダイジェスト値DIを用いて読み出し動作を行うアルゴリズムと同じアルゴリズムでバッファ26に情報を書き込む。例えば、実施の形態1にかかる書き込み機2では、セレクタ25は、バッファ26の領域のうちダイジェスト値DIで示されるアドレスの領域に特定情報HF2を書き込み、バッファ26の他のアドレスで示される領域にはダミー値Ddを書き込む。そして、書き込み機2は、バッファ26に格納されている情報をマージして半導体装置1に送信する命令を発行する。
【0023】
続いて、実施の形態1にかかる書き込み機2の動作について詳細に説明する。そこで、
図2に書き込み機2の動作手順を示すシーケンス図を示す。
【0024】
図2に示すように、書き込み機2は、まず、ダイジェスト生成部21においてユニークコードUCを受信する(ステップS1)。そして、ダイジェスト生成部21は、ダイジェスト値DIを生成する(ステップS2)。このダイジェスト値DIは、セレクタ25に送信される(ステップS3)。
【0025】
続いて、書き込み機2は、ハッシュ関数暗号化部23においてユニークコードUCを受信する(ステップS4)。そして、ハッシュ関数暗号化部23は、ハッシュ関数HF1をユニークコードUCで暗号化して特定情報HF2を生成する(ステップS5)。この特定情報HF2は、セレクタ25に送信される(ステップS6)。
【0026】
続いて、書き込み機2は、ダミー値発生部24においてダミー値Ddを生成する(ステップS7)。このダミー値Ddは、セレクタ25に送信される(ステップS8)。このダミー値の生成は、特定情報HF2を除いたバッファ領域が埋まるように生成する。この生成に関しては、少ないビットのダミー値を複数回生成することも、一度に生成することも可能である。
【0027】
セレクタ25は、受信した特定情報HF2をバッファ26においてダイジェスト値DIをアドレスとする領域に書き込むと共に、バッファ26の他の領域にはダミー値Ddを書き込む(ステップS9)。そして、書き込み機2は、バッファ26に格納された特定情報HF2とダミー値Ddとをマージして半導体装置1に送信する(ステップS10)。
【0028】
これにより、半導体装置1の記憶領域12には、ダイジェスト値DIをアドレスとする領域に特定情報HF2が格納され、他の領域にはダミー値Ddが格納される。
【0029】
続いて、特定情報HF2を用いた半導体装置1の動作について説明する。そこで、
図3に特定情報HF2を用いた実施の形態1にかかる半導体装置の動作手順を示すシーケンス図を示す。
【0030】
図3に示すように、半導体装置1は、まず、ユニークコード生成部10で生成されたユニークコードUCをダイジェスト生成部11及びハッシュ関数復号部14に送信する(ステップS11、S17)。続いて、ダイジェスト生成部11は、受信したユニークコードUCに基づきダイジェスト値DIを生成する(ステップS12)。このダイジェスト値DIは、メモリコントローラ13に送信される(ステップS13)。
【0031】
続いて、メモリコントローラ13は、受信したダイジェスト値DIをリードアドレスとしてリード命令RD[DI]を発行する(ステップS14)。そして、記憶領域12は、リード命令RD[DI]に応じてダイジェスト値DIに関連付けられたアドレスに格納されている特定情報HF2をメモリコントローラ13に送信する(ステップS15)。続いて、メモリコントローラ13は、受信した特定情報HF2をハッシュ関数復号部14に送信する(ステップS16)。
【0032】
ハッシュ関数復号部14は、受信した特定情報HF2を、受信したユニークコードUCにより復号してハッシュ関数HF1を生成する(ステップS18)。このハッシュ関数HF1は、暗号化部15に送信される(ステップS19)。そして、半導体装置1は、ハッシュ関数HF1を利用して暗号化通信を開始する(ステップS20)。
【0033】
ここで、一般的な半導体装置を解析して不正にデータを取得する方法としては、以下のような方法がある。
(1)半導体装置をFIB(Focused Ion Beam)を用いて加工し、プローブを用いて半導体装置を物理的に解析する方法。
(2)半導体装置にレーザなどの電磁波を照射したり、電源端子にノイズを挿入したりすることでCPUを暴走させて不正にデータを取得するフォルトツリー解析。
(3)半導体装置の消費電流量を観測し、鍵データを解析するリーク解析。
(4)半導体装置の信号端子に直接接続し、信号情報を読み出す方法。
【0034】
このような不正な解析を回避するために、高いセキュリティレベルが必要な分野では、セキュリティレベルの高いマイコン(以下、セキュアマイコンという)が用いられている。このセキュアマイコンには、配線領域へのシールド、光や信号ノイズを検出する機能、信号に乱数信号を組み合わせて電流をかく乱する機能などが実装されている。
【0035】
このように、セキュアマイコンを用いることで第三者が不正に半導体装置を解析することを防止することができる。しかしながら、セキュアマイコンを用いた場合は、不正解析を防止できる反面、その耐タンパ性により半導体装置メーカー等が不良解析や故障解析を実施することができなくなるという問題があった。特に、自動車に用いられる車載用のマイコン(ECU等)では、高信頼性が必要であるため、半導体装置の不良解析や故障解析が必要となる。このような理由から、車載用のマイコンにはセキュアマイコンよりもセキュリティレベルが低い汎用のマイコン(以下、汎用マイコンという)が広く用いられてきた。しかし、近年では、車載用マイコンのセキュリティの脆弱性をターゲットとした攻撃例が報告されている。したがって、車載用のマイコンでは、汎用マイコンを使用しつつ、半導体装置のセキュリティレベルを向上させることが可能な暗号通信システムが必要とされていた。
【0036】
実施の形態1にかかる半導体装置では、暗号化された特定情報HF2を自身のユニークコードUCから生成されたユニークコード対応情報(例えば、ダイジェスト値DI)と関連付けられる領域に格納する。これにより、半導体装置1では、デバイス毎に異なる領域に特定情報HF2で格納されることになるため、攻撃者から特定情報HF2が格納された領域そのものを秘匿することができる。従って、実施の形態1にかかる半導体装置1では、半導体装置1に格納された特定情報HF2のセキュリティを向上させることができる。また、実施の形態1にかかる半導体装置1では、上記のセキュアマイコンを用いることなくセキュリティを向上させることができる。
【0037】
また、実施の形態1にかかる半導体装置1では、特定情報HF2は、CPU(Central Processing Unit)等からアクセス可能な領域である記憶領域に格納される。しかし、格納する特定情報HF2は、自身のユニークコードUCにより暗号化された情報である。そして、実施の形態1にかかる半導体装置1では、ハッシュ関数HF1を必要に応じてその都度生成する。そのため、メンテナンス等においては、特定情報HF2の元の情報であるハッシュ関数HF1に対応する暗号鍵を有するメンテナンス者がハッシュ関数HF1の不具合を解析することができる。一方、攻撃者が万が一この特定情報HF2を読み出すことができた場合であっても、攻撃者は、特定情報HF2がどのようなアルゴリズムで暗号化されているかを理解することができないため、特定情報HF2からハッシュ関数HF1を復号することができない。つまり、実施の形態1にかかる半導体装置1は、秘匿対象情報であるハッシュ関数HF1に対するメンテナンス性を犠牲にすることなくセキュリティを向上させることができる。
【0038】
また、実施の形態1にかかる半導体装置1では、自身のユニークコードUCを利用してハッシュ関数HF1を暗号化することで特定情報HF2を生成する。そのため、実施の形態1にかかる半導体装置1では、特定情報HF2を復号する際に、自身のユニークコードUCを利用するのみで良く、サーバー等のデータベースに接続するなどして復号に用いる暗号鍵を取得する必要がない。つまり、実施の形態1にかかる半導体装置1では、サーバー等との接続にかかるセキュリティ対策を必要としない。
【0039】
さらに、実施の形態1にかかる半導体装置1では、特定情報HF2を格納する記憶領域の容量として書き込み機2のバッファ26の容量以上に確保する必要がない。そのため、実施の形態1にかかる半導体装置1では、半導体装置1に実装されている記憶領域を有効に利用することができる。
【0040】
また、実施の形態1では、書き込み機2から半導体装置1へは、ダミー値と特定情報HF2とをマージした状態で書き込みを行う。これにより、書き込み機2から半導体装置1への通信経路に体してサイドチャネルアタック等の攻撃があった場合においても、攻撃者はダミー値と特定情報HF2とを区別することができない。また、書き込み機2から半導体装置1にハッシュ関数HF1の情報を送信する際に、ハッシュ関数HF1を暗号化した特定情報HF2として送信する。これにより、万が一、攻撃者が特定情報HF2を判別できたとしても、暗号化アルゴリズムが不明である限りハッシュ関数HF1を攻撃者に取得されることがない。このような観点からも実施の形態1にかかる半導体装置1及び書き込み機2は、秘匿対象情報であるハッシュ関数HF1に対するセキュリティを向上させることができる。
【0041】
実施の形態2
実施の形態2にかかる半導体装置3及び半導体装置3に特定情報を書き込む書き込み機4のブロック図を
図4に示す。
図4に示すように、半導体装置3は、実施の形態1にかかる半導体装置1にデバイス固有のユニークコードのエラー訂正に用いるデータ(例えば、ECCコード)が格納される格納部31と、エラー訂正回路(例えば、ECC回路32)を追加したものである。また、書き込み機4は、実施の形態1にかかる書き込み機2にデバイス固有のユニークコードのエラー訂正に用いるデータ(例えば、ECCコード)及びエラー訂正を行ったデバイス固有のユニークコードを比較検証するデータ(例えば、CRCコードテーブル)が格納される格納部41と、エラー訂正回路(例えば、ECC回路42)と、ユニークコードの比較検証を行うCRC回路43と、を追加したものである。
【0042】
半導体装置3のECC回路32は、ユニークコード生成部10が生成したユニークコードUCに含まれるエラーを訂正して訂正済みユニークコードCUCを生成する。より具体的には、ECC回路32は、格納部31からユニークコードUCに対応したECCコードを読み出して、当該ECCコードに基づきユニークコードUCのエラーを訂正してエラー訂正済みユニークコードCUCを生成する。
【0043】
半導体装置3では、このエラー訂正済みユニークコードCUCに基づきダイジェスト生成部11がダイジェスト値DIを生成する。また、半導体装置3では、エラー訂正済みユニークコードCUCに基づきハッシュ関数復号部14が復号処理を行う。
【0044】
書き込み機4のECC回路42は、ユニークコード生成部10が生成したユニークコードUCに含まれるエラーを訂正して訂正済みユニークコードCUCを生成する。より具体的には、ECC回路42は、格納部41からユニークコードUCに対応したECCコードを読み出して、当該ECCコードに基づきユニークコードUCのエラーを訂正してエラー訂正済みユニークコードCUCを生成する。格納部41に格納されるECCコードは、半導体装置3の格納部31に格納されるECCコードとは同じである。このように2つ装置に同一のECCコードを保持した場合、書き込み機4と半導体装置3との正当性の確認を行うことができるためである。
【0045】
書き込み機4のCRC回路43は、エラー訂正済みユニークコードCUCと、格納部41に格納されているCRCコードテーブルと、を比較して、エラー訂正済みユニークコードCUCの正当性の判断を行う。CRCコードテーブルは、ECCコードと対応付けられた正当なユニークコードを記録したテーブルデータである。そして、CRC回路43が、エラー訂正済みユニークコードCUCが正当なものであると判定した場合は、ダイジェスト生成部21とハッシュ関数暗号化部23にエラー訂正済みユニークコードCUCを与える。一方、CRC回路43が、エラー訂正済みユニークコードCUCが正当なものではないと判定した場合は、書き込み機4は、ハッシュ関数HF1の書き込み処理を停止する。
【0046】
続いて、実施の形態2にかかる書き込み機4の動作について説明する。そこで、実施の形態2にかかる書き込み機4の動作を示すフローチャートを
図5に示す。
【0047】
まず、書き込み機4は、半導体装置3からエラー訂正前のユニークコードUCを受信する(ステップS21)。続いて、書き込み機4は、ECCコードを格納部41からECC回路42に送信する(ステップS22)。そして、ECC回路42は、エラー訂正前のユニークコードUCのエラーを訂正してエラー訂正済みユニークコードCUCを生成する(ステップS23)。
【0048】
続いて、書き込み機4は、CRCコードテーブルを格納部41からCRC回路43に送信する(ステップS24)。続いて、書き込み機4は、CRC回路43にてCRCコードテーブルとエラー訂正済みユニークコードCUCとを比較する(ステップS25)。そして、ステップS25の比較において、CRCコードとエラー訂正済みユニークコードCUCとが不一致である場合(ステップS26のNOの枝)、書き込み機4は特定情報HF2の書き込み処理を停止する。一方、CRCコードとエラー訂正済みユニークコードCUCとが一致した場合(ステップS26のYESの枝)、書き込み機4は特定情報HF2の書き込み処理を進める。
【0049】
書き込み機4は、ステップS26でCRCコードとエラー訂正済みユニークコードCUCとが一致していると判断された場合、エラー訂正済みユニークコードCUCに基づきダイジェスト値DIを生成する(ステップS27)。また、書き込み機4は、ステップS27に続いて、エラー訂正済みユニークコードCUCを用いてハッシュ関数HF1を暗号化して特定情報HF2を生成する(ステップS28)。
【0050】
続いて、書き込み機4は、特定情報HF2とダミー値Ddとをバッファ26に保存する(ステップS29)。より具体的には、ステップS29では、バッファ26の領域のうちダイジェスト値DIをアドレスとする領域に特定情報HF2を格納し、バッファ26の領域のうちダイジェスト値DIをアドレスとしない領域にダミー値Ddを格納する。続いて、書き込み機4は、特定情報HF2とダミー値Ddとをマージして半導体装置3に送信する(ステップS30)。
【0051】
図5に示したフローチャートから、書き込み機4は、CRC回路43においてエラー訂正済みユニークコードCUCが正規のものでないと判断された場合には、半導体装置3に特定情報HF2を送信しない。CRCコードとこれにより、半導体装置3が正規のものでない場合などに、特定情報HF2が非正規の半導体装置3に送信されることを防ぐことができる。
【0052】
続いて、実施の形態2にかかる書き込み機4の動作手順を示すシーケンス図を
図6に示す。
図6に示すように、書き込み機4は、まず、半導体装置3からエラー訂正前のユニークコードUCを受信する(ステップS31)。続いて、ECC回路42においてECCコードを用いてユニークコードUCのエラーを訂正し、エラー訂正済みユニークコードCUCを生成する(ステップS32)。このエラー訂正済みユニークコードCUCは、CRC回路43に送信される(ステップS33)。
【0053】
続いて、書き込み機4では、CRC回路43において、CRCコードテーブル41から該当するCRCコードを適応し、エラー訂正済みユニークコードCUCとCRCコードとを比較し、エラー訂正済みユニークコードCUCの正当性を判定する(ステップS34)。このステップS34の判定において、エラー訂正済みユニークコードCUCが不正なものと判定された場合は、処理はここで停止する。一方、ステップS34の判定において、エラー訂正済みユニークコードCUCが正当なものと判定された場合は、処理が進められる。
【0054】
ステップS34の処理に続いて、特定情報HF2及びダミー値Ddの生成と、特定情報HF2及びダミー値Ddの送信が行われる。具体的には、書き込み機4では、CRC回路43からダイジェスト生成部21及びハッシュ関数暗号化部23にエラー訂正済みユニークコードUCを送信する(ステップS35、S38)。そして、ダイジェスト生成部21は、エラー訂正済みユニークコードCUCに基づきダイジェスト値DIを生成する(ステップS36)。このダイジェスト値DIは、セレクタ25に送信される(ステップS37)。
【0055】
続いて、書き込み機4は、ハッシュ関数暗号化部23において、ハッシュ関数HF1をエラー訂正済みユニークコードUCで暗号化して特定情報HF2を生成する(ステップS39)。この特定情報HF2は、セレクタ25に送信される(ステップS40)。
【0056】
続いて、書き込み機4は、ダミー値発生部24においてダミー値Ddを生成する(ステップS41)。このダミー値Ddは、セレクタ25に送信される(ステップS42)。このダミー値の生成は、特定情報HF2を除いたバッファ領域が埋まるように生成する。この生成に関しては、少ないビットのダミー値を複数回生成することも、一度に生成することも可能である。
【0057】
セレクタ25は、受信した特定情報HF2をバッファ26においてダイジェスト値DIをアドレスとする領域に書き込むと共に、バッファ26の他の領域にはダミー値Ddを書き込む(ステップS43)。そして、書き込み機4は、バッファ26に格納された特定情報HF2とダミー値Ddとをマージして半導体装置3に送信する(ステップS44)。
【0058】
続いて、特定情報HF2を用いた半導体装置3の動作について説明する。そこで、
図7に特定情報HF2を用いた実施の形態3にかかる半導体装置の動作手順を示すシーケンス図を示す。
【0059】
図7に示すように、半導体装置1は、まず、ユニークコード生成部10で生成されたエラー訂正前のユニークコードUCをECC回路32に送信する(ステップS51)。そして、ECC回路32は、格納部31からECCコードを読み出して、ユニークコードUCのエラーを停止して、エラー訂正済みユニークコードCUCを生成する(ステップS52)。ECC回路32は、このエラー訂正済みユニークコードCUCをダイジェスト生成部11及びハッシュ関数復号部14に送信する(ステップS53、S59)。続いて、ダイジェスト生成部11は、受信したエラー訂正済みユニークコードCUCに基づきダイジェスト値DIを生成する(ステップS54)。このダイジェスト値DIは、メモリコントローラ13に送信される(ステップS55)。
【0060】
続いて、メモリコントローラ13は、受信したダイジェスト値DIをリードアドレスとしてリード命令RD[DI]を発行する(ステップS56)。そして、記憶領域12は、リード命令RD[DI]に応じてダイジェスト値DIに関連付けられたアドレスに格納されている特定情報HF2をメモリコントローラ13に送信する(ステップS57)。続いて、メモリコントローラ13は、受信した特定情報HF2をハッシュ関数復号部14に送信する(ステップS58)。
【0061】
ハッシュ関数復号部14は、受信した特定情報HF2を、受信したエラー訂正済みユニークコードCUCにより復号してハッシュ関数HF1を生成する(ステップS60)。このハッシュ関数HF1は、暗号化部15に送信される(ステップS61)。そして、半導体装置1は、ハッシュ関数HF1を利用して暗号化通信を開始する(ステップS62)。
【0062】
上記説明より、実施の形態2にかかる半導体装置3は、エラー訂正回路(例えば、ECC回路32)を備えることで、ユニークコードUCがその生成原理からランダムなビットにエラーを含むPUF等であっても当該エラーを訂正してエラーのないユニークコードCUCにより実施の形態1にかかる半導体装置1と同様の動作を行うことができる。PUFは、デバイスに固有の値であり、回路が同じであっても同じ値を有するコードを生成できないことから、PUFを利用することでセキュリティを向上させることができる。
【0063】
また、ユニークコードUCを生成するためのECCコードは、ユニークコード生成時に半導体装置3と書き込み機4で送受信を行う必要が無いため、ECCコードの秘匿性が守られている。このようなことから、半導体装置3の格納部31に格納されるECCコードと同じECCコードを書き込み機4が有することで書き込み機4に対する半導体装置3の正当性、又は、半導体装置3に対する書き込み機4の正当性を判断することができる。書き込み機4と半導体装置3とのいずれか一方が正当なものでない場合、半導体装置3に格納されるECCコードと書き込み機4に格納されるECCコードとが一致しない。これに対して、エラー訂正の対象となるユニークコードUCは、半導体装置3と書き込み機4とにおいて同一である。同一のユニークコードに対して異なるECCコードを適用した場合、正しいエラー訂正は行われない。そのため、本来のエラー訂正とは異なるエラー訂正が行われたエラー訂正済みユニークコードCUCは、CRCコードテーブル中の値と異なる値を示す。つまり、実施の形態2にかかる書き込み機4では、CRC回路43におけるCRC処理により半導体装置3の正当性又は、半導体装置3に対する書き込み機4の正当性を判断することができる。
【0064】
さらに、実施の形態2にかかる書き込み機4では、半導体装置3と書き込み機4とのいずれか一方の正当性が疑われる場合には、特定情報HF2の生成処理及び送信処理を停止する。これにより、実施の形態2にかかる書き込み機4によれば、不正な半導体装置3(例えば、模造品)に対して特定情報HF2(及びハッシュ関数HF1)が漏洩することを防止することができる。つまり、実施の形態2にかかる書き込み機4によれば、半導体装置3に対するセキュリティを向上させることができる。
【0065】
また、実施の形態2では、エラー訂正済みユニークコードCUCの正当性を確認するためにCRC回路43を用いたが、エラー訂正済みユニークコードCUCの正当性は、CRCに限られず、パリティなどのエラーを検出してご訂正を防止できる機能を有している回路であれば他の回路を利用することもできる。
【0066】
また、実施の形態2にかかる半導体装置3では、書き込み機4に送信するユニークコードUCとしてエラー訂正前のコードを送信する。つまり、半導体装置3と書き込み機4との間の通信経路には、エラーを含むユニークコードUCが伝達される。そのため、実施の形態2にかかる半導体装置3では、通信経路に対してサイドチャネルアタック等の攻撃があった場合にも盗聴されるユニークコードUCがエラーを含むため、攻撃者は盗聴した情報からは正当なユニークコードUCを判別することができない。つまり、実施の形態2にかかる半導体装置3を用いることで、通信経路のセキュリティを向上させることができる。
【0067】
実施の形態3
実施の形態3にかかる半導体装置3及び半導体装置3に特定情報を書き込む書き込み機4aのブロック図を
図8に示す。
図8に示すように、実施の形態3では、実施の形態2にかかる書き込み機4からCRC回路を除いた書き込み機4aを備える構成について説明する。
【0068】
図8に示すように、書き込み機4aでは、CRC回路によるCRC処理を経ることなく、エラー訂正済みユニークコードCUCがダイジェスト生成部21及びハッシュ関数暗号化部23に送信される。このように、実施の形態3にかかる半導体装置3及び書き込み機4aでは、実施の形態2にかかる半導体装置3及び書き込み機4との違いは、CRC回路の有無だけであるため、以下では、書き込み機4aの動作についてのみ説明する。
【0069】
実施の形態2にかかる書き込み機4の動作手順を示すシーケンス図を
図9に示す。なお、
図9では、書き込み機4aの動作と書き込み機4の動作との対応付けを行うため、書き込み機4の動作と実施的に同じ動作に対しては同じ符号を付した。
【0070】
図9に示すように、書き込み機4aは、まず、半導体装置3からエラー訂正前のユニークコードUCを受信する(ステップS31)。続いて、ECC回路42においてECCコードを用いてユニークコードUCのエラーを訂正し、エラー訂正済みユニークコードCUCを生成する(ステップS32)。このエラー訂正済みユニークコードCUCは、ダイジェスト生成部21及びハッシュ関数暗号化部23にエラー訂正済みユニークコードUCに送信される(ステップS35、S38)。そして、ダイジェスト生成部21は、エラー訂正済みユニークコードCUCに基づきダイジェスト値DIを生成する(ステップS36)。このダイジェスト値DIは、セレクタ25に送信される(ステップS37)。
【0071】
続いて、書き込み機4は、ハッシュ関数暗号化部23において、ハッシュ関数HF1をエラー訂正済みユニークコードUCで暗号化して特定情報HF2を生成する(ステップS39)。この特定情報HF2は、セレクタ25に送信される(ステップS40)。
【0072】
続いて、書き込み機4は、ダミー値発生部24においてダミー値Ddを生成する(ステップS41)。このダミー値Ddは、セレクタ25に送信される(ステップS42)。このダミー値の生成は、特定情報HF2を除いたバッファ領域が埋まるように生成する。この生成に関しては、少ないビットのダミー値を複数回生成することも、一度に生成することも可能である。
【0073】
セレクタ25は、受信した特定情報HF2をバッファ26においてダイジェスト値DIをアドレスとする領域に書き込むと共に、バッファ26の他の領域にはダミー値Ddを書き込む(ステップS43)。そして、書き込み機4は、バッファ26に格納された特定情報HF2とダミー値Ddとをマージして半導体装置3に送信する(ステップS44)。
【0074】
上記説明より、実施の形態3にかかる書き込み機4aでは、CRC回路によるCRC処理を行うことなく特定情報HF2の書き込みを行う。このような場合であっても、半導体装置3と書き込み機4aとのいずれか一方が不正なものあった場合、半導体装置3に書き込まれた特定情報HF2は、半導体装置3のエラー訂正済みユニークコードCUCでは読み出せない。これは、書き込み機4aで生成されるダイジェスト値DIと半導体装置3で生成されるダイジェスト値DIとが異なる値となるためである。また、半導体装置3では、例えば、特定情報HF2を記憶領域12から読み出せたとしても、特定情報HF2の生成に用いたエラー訂正済みユニークコードCUCと半導体装置3で生成されるエラー訂正済みユニークコードCUCとが不一致であるため、ハッシュ関数HF1をハッシュ関数復号部14で復号することができない。
【0075】
このようなことから、実施の形態3にかかる半導体装置3及び書き込み機4aによれば、互いに正規のものである場合のみハッシュ関数HF1の復号を可能とすることができる。また、実施の形態3にかかる半導体装置3及び書き込み機4aによれば、半導体装置3と書き込み機4aのいずれか一方が不正のものであった場合には、ハッシュ関数HF1の復号を防止することができる。つまり、実施の形態3にかかる半導体装置3及び書き込み機4aによれば、CRC回路を用いることなく高いセキュリティを実現することができる。
【0076】
実施の形態4
実施の形態4にかかる半導体装置5及び書き込み機6のブロック図を
図10に示す。
図10に示すように、半導体装置5は、実施の形態1にかかる半導体装置1のユニークコード生成部10に代えて、ユニークコード生成部50を有する。また、半導体装置5では、記憶領域12にダミー値Ddは格納されず、特定情報HF21〜HF2n(nは格納される特定情報の個数を示す値である)が格納される。
【0077】
ユニークコード生成部50は、複数のユニークコードUC1〜UCn(nは生成されるユニークコードの個数を示す値である)を生成し、ユニークコードUC1〜UCnから1つのユニークコードUCx(xは、選択したユニークコードの番号を示す値である)を選択する。そして、ユニークコード生成部50は、選択したユニークコードUCxをダイジェスト生成部11とハッシュ関数復号部14とに与える。
【0078】
より具体的には、ユニークコード生成部50は、ユニークコードUC1〜UCn、選択回路52を有する。このユニークコードは、例えば、SRAM回路の初期値などのPUFで構成される。選択回路52は、ユニークコードUC1〜UCnのいずれか1つを選択してユニークコードUCxとして出力する。また、選択回路52は、モード信号MDが入力される。そして、選択回路52は、モード信号MDが通常動作モードを示している場合、ユニークコードUC1〜UCnから選択した任意のユニークコードUCxを出力する。このとき、選択回路52は、選択するユニークコードが要求される度にランダムに選択する。一方、選択回路52は、モード信号MDが書き込みモードを示している場合、ユニークコードUC1からユニークコードUCnを順次選択して出力する。
【0079】
また、書き込み機6は、格納部22、ハッシュ関数暗号化部61、バッファ62を有する。ハッシュ関数暗号化部61は、半導体装置5が順次送信するユニークコードを用いてハッシュ関数HF1を暗号化して、特定情報HF21〜HF2nを順次生成すると共に、特定情報HF21〜HF2nをバッファ62に格納する。つまり、特定情報HF2nは、ユニークコードUCnによりハッシュ関数HF1を暗号化したものである。バッファ62には、特定情報HF21〜HF2nをバッファ62が格納される。そして、書き込み機6は、バッファ62に格納された特定情報HF21〜HF2nをマージして半導体装置5に送信する。
【0080】
また、半導体装置5では、書き込み機6から送信された特定情報HF21〜HF2nを記憶領域12に格納する。半導体装置5ではユニークコードUC1〜UCnに対応するダイジェスト値DI1〜DInが生成されるが、特定情報HF21〜HF2nは、暗号化処理に用いられたユニークコードに対応するダイジェスト値をアドレスとする領域に格納される。つまり、記憶領域12は、複数のユニークコードを用いてハッシュ関数HF1を暗号化した特定情報HF21〜HF2nを、ユニークコードUC1〜UCnと関連付けられる複数の領域に格納する。なお、
図10では、ダイジェスト値DI1〜DInのいずれか1つを示すものとしてダイジェスト値DIxを示した。
【0081】
続いて、実施の形態4にかかる書き込み機6の動作手順を示すシーケンス図を
図11に示し、
図11を参照して実施の形態4にかかる書き込み機6の動作手順を説明する。
【0082】
図11に示すように、書き込み機6は、ハッシュ関数暗号化部61は、ユニークコードUC1〜UCnを受信する(ステップS71)。これに応じて、ハッシュ関数暗号化部61は、ユニークコードUC1〜UCnを利用してハッシュ関数HF1を暗号化し、特定情報HF21〜HF2nを生成する(ステップS71)。この特定情報HF21〜HF2nはバッファ62に送信される(ステップS73)そして、書き込み機6は、バッファ62に格納されている特定情報HF21〜HF2nをマージして半導体装置5に送信する(ステップS74)。そして、半導体装置5では、特定情報HF21〜HF2nを、記憶領域12のユニークコードUC1〜UCnと関連付けられる複数の領域に格納する。
【0083】
続いて、特定情報HF21〜HF2nを用いた半導体装置5の動作について説明する。そこで、
図12に特定情報HF21〜HF2nを用いた実施の形態4にかかる半導体装置5の動作手順を示すシーケンス図を示す。
【0084】
図12に示すように、半導体装置5は、まず、ユニークコード生成部10で生成されたユニークコードUC1〜UCnのうちからランダムに選択した1つをユニークコードUCxとして出力する(ステップS81)。そして、選択したユニークコードUCxをダイジェスト生成部11及びハッシュ関数復号部14に送信する(ステップS82、S88)。続いて、ダイジェスト生成部11は、受信したユニークコードUCxに基づきダイジェスト値DIxを生成する(ステップS83)。このダイジェスト値DIxは、メモリコントローラ13に送信される(ステップS84)。
【0085】
続いて、メモリコントローラ13は、受信したダイジェスト値DIxをリードアドレスとしてリード命令RD[DIx]を発行する(ステップS85)。そして、記憶領域12は、リード命令RD[DIx]に応じてダイジェスト値DIxに関連付けられたアドレスに格納されている特定情報HF2xをメモリコントローラ13に送信する(ステップS86)。続いて、メモリコントローラ13は、受信した特定情報HF2xをハッシュ関数復号部14に送信する(ステップS87)。
【0086】
ハッシュ関数復号部14は、受信した特定情報HF2xを、受信したユニークコードUCxにより復号してハッシュ関数HF1を生成する(ステップS89)。このハッシュ関数HF1は、暗号化部15に送信される(ステップS90)。そして、半導体装置1は、ハッシュ関数HF1を利用して暗号化通信を開始する(ステップS91)。
【0087】
上記説明より、実施の形態4にかかる半導体装置5では、ユニークコードUC1〜UCnにより暗号化した特定情報HF21〜HF2nにより記憶領域12を満たす。また、半導体装置5は、ユニークコードUC1〜UCnに対応して生成されるダイジェスト値DI1〜DInにより、ユニークコードUC1〜UCnで復号可能な特定情報HF21〜HF2nを読み出してハッシュ関数HF1を復号する。
【0088】
通常、記憶領域12に格納される特定情報HF2は、1つである。そのため、実施の形態4にかかる半導体装置5を攻撃者が解析したとしてもいずれの領域に格納された特定情報が真の特定情報であるかを判別することができない。つまり、半導体装置5を用いることで秘匿対象情報であるハッシュ関数HF1に対するセキュリティを向上させることができる。
【0089】
また、記憶領域12に格納される特定情報は、ユニークコードUC1〜UCnのいずれかを用いて暗号化されている。そのため、攻撃者は、記憶領域12に格納されている特定情報を参照しただけでは、暗号化のアルゴリズムを理解することができない。このようなことからも、実施の形態4にかかる半導体装置5を用いることで秘匿対象情報であるハッシュ関数HF1に対するセキュリティを向上させることができる。
【0090】
実施の形態5
実施の形態5では、特定情報HF2を記憶領域12に格納する際の格納方法の別の形態について説明する。そこで、特定情報HF2の格納方法の別の一形態を示す概念図を
図13に示す。
図13に示す例では、特定情報HF2を記憶領域12の複数の領域に分割して格納する。
図13に示す例では、ダイジェスト値DIを特定情報HF2の分割数を指定する値として利用すると共に、ダイジェスト値DIを格納する領域の先頭アドレスとして利用するものである。
【0091】
図13に示す例では、ダイジェスト値DIとして4が生成され、特定情報HF2が128ビットで表現される。そして、
図13で示す例では、特定情報HF2の最初の32ビットが先頭アドレスであるアドレス4の領域に格納され、33ビット目から64ビット目の特定情報HF2がアドレス5の領域に格納され、65ビット目から96ビット目の特定情報HF2がアドレス6の領域に格納され、97ビット目から128ビット目の特定情報HF2がアドレス7の領域に格納される。また、分割数が1となる場合もあるため、記憶領域12の1つの領域は、分割されていない特定情報HF2を格納するのに十分な大きさを有する。そのため、特定情報HF2を分割して格納した場合、1つの領域に空き領域が存在するが、
図13に示すように、この領域にはダミー値を格納することが好ましい。これは、攻撃者から特定情報HF2を秘匿するためである。
【0092】
このように特定情報HF2が格納された記憶領域12から特定情報HF2を読み出すために、メモリコントローラ13はダイジェスト値DIから特定情報HF2を読み出すためのリード命令を生成する。より具体的には、メモリコントローラ13は、ダイジェスト値DIに基づき記憶領域12の1つの領域に格納される特定情報の分割数を算出すると共に、記憶領域12へのアクセスを行う。また、メモリコントローラ13は、分割数に対応する個数のリードアドレスを生成し、当該リードアドレスを用いて複数の領域から読み出した情報から特定情報HF2を再生し、ハッシュ関数復号部14に再生した特定情報HF2を与える。
図13に示す例では、ダイジェスト値DIを特定情報HF2が格納された領域の先頭アドレスに用いるため、メモリコントローラ13は、ダイジェスト値DIから、先頭アドレスと先頭アドレスに続くリードアドレスとを含む分割数に相当する数のリードアドレスを生成する。なお、分割した特定情報の格納場所としてダイジェスト値DIから演算された他のアドレスを指定することも可能である。
【0093】
また、特定情報HF2の格納方法の別の一形態を示す概念図を
図14に示す。
図14に示す例では、特定情報HF2を記憶領域12の複数の領域に分割して格納する。
図14に示す例では、ダイジェスト値DIを記憶領域12の1つの領域に格納される特定情報HF2のビット数(分割ビット数)を指定する値として利用すると共に、ダイジェスト値DIを格納する領域の先頭アドレスとして利用するものである。
【0094】
図14に示す例では、ダイジェスト値DIとして4が生成され、特定情報HF2が128ビットで表現される。そして、
図14で示す例では、特定情報HF2は、4ビットずつに分割され、分割された特定情報HF2がそれぞれ1つの領域に格納される。また、分割ビット数が128ビットとなる場合もあるため、記憶領域12の1つの領域は、分割されていない特定情報HF2を格納するのに十分な大きさを有する。そのため、特定情報HF2が分割された場合、1つの領域に空き領域が存在するが、
図14に示すように、この領域にはダミー値を格納することが好ましい。これは、攻撃者から特定情報HF2を秘匿するためである。特定情報HF2が格納されるアドレス領域1〜nにおいて、特定情報HF2が書きこまれる位置は限定されない。より具体的には、
図14のアドレス4に書きこまれているHF2[0:3]は、
図14に示されているように、アドレス4の先頭ビットから始まる領域に書きこまれていても、それ以外の領域に書きこまれていても、本発明を実現することが可能である。
【0095】
このように特定情報HF2が格納された記憶領域12から特定情報HF2を読み出すために、メモリコントローラ13はダイジェスト値DIから特定情報HF2を読み出すためのリード命令を生成する。より具体的には、メモリコントローラ13は、ダイジェスト値DIに基づき記憶領域12の1つの領域に格納される特定情報HF2のビット数を算出すると共に、記憶領域12へのアクセスを行う。また、メモリコントローラ13は、特定情報HF2を分割ビット数で除算した値に対応する個数のリードアドレスを生成し、当該リードアドレスを用いて複数の領域から読み出した情報から特定情報HF2を再生し、ハッシュ関数復号部14に再生した特定情報HF2を与える。
図14に示す例では、ダイジェスト値DIを特定情報HF2が格納された領域の先頭アドレスに用いるため、メモリコントローラ13は、ダイジェスト値DIから、先頭アドレスと先頭アドレスに続くリードアドレスとを含む特定情報HF2を分割ビット数で除算した値に相当する数のリードアドレスを生成する。なお、分割した特定情報の格納場所としてダイジェスト値DIから演算された他のアドレスを指定することも可能である。
【0096】
このように、ダイジェスト値DIに基づき特定情報HF2を分割して記憶領域12に格納することで、デバイス毎に異なる記録長で特定情報HF2が格納される。これにより、攻撃者が記憶領域12を解析しても、デバイス毎に1つに格納されている特定情報HF2の記録長が異なるため、攻撃者がいずれの情報が特定情報HF2であるかを認識することができない。つまり、デバイス毎に異なるユニークコードUCに基づき生成されたダイジェスト値DIに基づき特定情報HF2の記録長を可変することで秘匿対象情報であるハッシュ関数HF1に対するセキュリティを向上させることができる。
【0097】
また、上記実施の形態における書き込み機では、書き込み対象の半導体装置と同じユニークコードUCを用いて半導体装置と同じダイジェスト値DIを生成するため、書き込み機が上記分割アルゴリズムを実行できるようにすることで、特定情報HF2の書き込み処理は正常に行うことができる。
【0098】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。複数の実施の形態に関する事項を組み合わせて、1つの装置とすること、例えば、実施の形態4に対して、実施の形態1から実施の形態2への変更内容を適用することは、当業者であれば当然に想到する事項である。