(57)【特許請求の範囲】
【請求項１】
デバイスに固有な値であってランダムなビットにエラーを含む初期ユニークコードを生成するユニークコード生成部と、
前記初期ユニークコードのエラーを訂正して、中間ユニークコードを生成する第１のエラー訂正部と、
前記中間ユニークコードのエラーを訂正して、第１の確定ユニークコードを生成する第２のエラー訂正部と、
外部装置が前記中間ユニークコードに基づき生成した鍵情報を用いて、デバイスに固有な値であってランダムなビットにエラーを含むユニークコードのエラーを訂正する固有訂正データと、エラー訂正後の前記初期ユニークコードから暗号鍵を生成する演算式情報と、が含まれる秘匿情報を暗号化した送信データを前記第１の確定ユニークコードを用いて復号して秘匿情報を生成する復号部と、
前記秘匿情報と前記ユニークコードとに基づき前記暗号鍵を生成する鍵生成部と、
前記鍵生成部で生成された前記暗号鍵を利用して暗号通信を行う暗号部と、
を有する半導体装置。
【請求項２】
前記第１のエラー訂正部は、前記初期ユニークコードを構成するビットのいずれをマスクするかを指定するビットマスクデータを前記外部装置から受信し、前記ビットマスクデータを利用して前記中間ユニークコードを生成し、
前記第２のエラー訂正部は、予め内部に保持されるＥＣＣコードを利用して前記第１の確定ユニークコードを生成する請求項１に記載の半導体装置。
【請求項３】
前記第１のエラー訂正部は、前記外部装置からＥＣＣコードを受信し、前記ＥＣＣコードを利用して前記中間ユニークコードを生成し、
前記第２のエラー訂正部は、予め内部に保持される前記初期ユニークコードを構成するビットのいずれをマスクするかを指定するビットマスクデータを利用して前記第１の確定ユニークコードを生成する請求項１に記載の半導体装置。
【請求項４】
前記外部装置において生成される前記鍵情報は、前記外部装置において行われる前記第２のエラー訂正部と同じ処理により生成される第２の確定ユニークコードである請求項１乃至３のいずれか１項に記載の半導体装置。
【請求項５】
デバイス毎に予め固定値として設定される識別情報を出力する識別情報保持部をさらに有し、
前記第１のエラー訂正部におけるエラー訂正処理に利用されるデータは、前記識別情報に対応付けられたデータである請求項１乃至４のいずれか１項に記載の半導体装置。
【請求項６】
前記第１のエラー訂正部におけるエラー訂正処理に利用されるデータを暗号化された状態で受信し、受信したデータに対して復号処理を施して前記第１のエラー訂正部に出力する訂正データ復号部を有する請求項５に記載の半導体装置。
【請求項７】
前記初期ユニークコードは、半導体装置の素子の製造ばらつきに起因して不確定になるビットを含むＰＵＦ（Physically Unclonable Function）データである請求項１乃至６のいずれか１項に記載の半導体装置。
【請求項８】
前記秘匿情報を暗号鍵として利用して暗号通信を行う暗号部を有する請求項１乃至７のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、特に外部からの攻撃に対して秘匿すべき秘匿情報を保持する半導体装置に関する。
【背景技術】
【０００２】
近年、半導体装置に対する不正アクセスへの耐性向上、或いは、模造品対策のために暗号化技術を利用したセキュリティ技術が多く提案されている。この暗号化技術では、暗号鍵が用いられるが、暗号鍵を攻撃者に取得された場合、半導体装置への不正アクセスが可能になるため問題がある。そのため、鍵情報のような漏洩した場合に不都合な情報は、秘匿情報として外部への漏洩を防止することが求められる。そこで、秘匿情報の１つである鍵情報についてのセキュリティ対策の例が特許文献１〜４に開示されている。
特許文献１〜４は、いずれも、シリコンＩＤ、或いは、ＰＵＦ（Physically Unclonable Function）等の半導体装置の製造のばらつきにより値が異なる固有値を用いて鍵情報等の秘匿情報を生成する。特許文献１〜４では、このような固有値はエラーを含むため、このような固有値を用いて確定的な秘匿情報を生成する場合、固有値に対してエラー訂正処理を施す必要がある。このような固有値に基づき秘匿情報を生成することで、秘匿情報が固定的な値として保持する必要がないため半導体装置のセキュリティを向上させることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２００８／０５６６１２号
【特許文献２】特開２００６−１７９００１号公報
【特許文献３】特表２０１０−５２７２１９号公報
【特許文献４】特表２００８−５４５３２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、ＰＵＦを用いて鍵情報等の秘匿情報を生成する場合、秘匿情報を生成するために、半導体装置よりＰＵＦを読み出し、鍵情報を暗号化する。この秘匿すべき鍵情報を暗号化したデータを、半導体装置内でＰＵＦを用いて復号する事によって、半導体装置内に鍵情報を安全に格納することが可能となる。しかしその場合でも、半導体装置を搭載したシステムをメンテナンスする者が攻撃者になる可能性がある。このような場合において、特許文献１〜４に記載される技術を、半導体装置間の暗号通信に適用しても、メンテナンス者がサイドチャネルアタックなどによって半導体装置からＰＵＦの値とＰＵＦを用いて生成された暗号データとを大量に収集した場合、秘匿情報を解析されてしまう可能性がある。つまり、特許文献１〜４に記載される技術を適用しても半導体装置のセキュリティを十分に向上させることができない問題がある。
【課題を解決するための手段】
【０００５】
本発明にかかる半導体装置では、半導体装置が初期ユニークコードのエラーを訂正した中間ユニークコードを生成し、さらに中間ユニークコードのエラーを訂正した第１の確定ユニークコードを生成し、外部装置から送信された送信データを第１の確定ユニークコードを用いて復号して秘匿情報を取得する。また、外部装置は、半導体装置において生成された中間ユニークコードを受信し、当該中間ユニークコードに基づき生成した鍵情報を用いて秘匿情報を暗号化して送信データを生成する。以上の動作により、本発明にかかる半導体装置は、送信データを暗号化する鍵情報自体を送受信することなく、暗号化された秘匿情報を得ることができ、外部装置との間でセキュリティの高い通信を可能とするものである。
【０００６】
また、外部装置は、半導体装置において初期ユニークコードのエラー訂正処理に用いられる第１の訂正データを有するが、この第１の訂正データは、暗号化された状態で外部装置内に格納される。そして、暗号化された第１の訂正データを受信する半導体装置は、受信した暗号化された第１の訂正データを復号し、復号化後の第１の訂正データを用いて中間ユニークコードを生成する。以上の動作により、半導体装置は、さらにセキュリティの高い通信を可能とする。
【０００７】
また、外部装置は、複数の装置（例えば、書き込み機及びサーバ）を有し、半導体装置に直接接続されない装置（例えば、サーバ）において送信データを生成し、半導体装置に直接接続される装置（例えば、書き込み機）を介して送信データを半導体装置に書き込む。これにより、外部装置に関するセキュリティを向上させることができる。
【０００８】
さらに、外部装置は、半導体装置に送信する第１の訂正データと、鍵情報の生成に利用される第２の訂正データと、を複数の装置に分散して配置する。これにより、外部装置に関するセキュリティをさらに向上させることができる。
【発明の効果】
【０００９】
つまり、本発明にかかる半導体装置によれば、半導体装置のセキュリティを向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかる半導体装置及び外部装置のブロック図である。
【図２】実施の形態１にかかる半導体装置及び外部装置で生成される確定ユニークコードの一例を示す表である。
【図３】実施の形態１にかかる半導体装置及び外部装置の動作を示すシーケンス図である。
【図４】実施の形態２にかかる半導体装置及び外部装置のブロック図である。
【図５】実施の形態２にかかる半導体装置及び外部装置の動作を示すシーケンス図である。
【図６】実施の形態３にかかる半導体装置及び外部装置のブロック図である。
【図７】実施の形態４にかかる半導体装置及び外部装置のブロック図である。
【図８】実施の形態５にかかる半導体装置及び外部装置のブロック図である。
【図９】実施の形態６にかかる半導体装置及び外部装置のブロック図である。
【図１０】実施の形態６にかかる半導体装置及び外部装置の動作を示すシーケンス図である。
【図１１】実施の形態７にかかる半導体装置及び外部装置のブロック図である。
【図１２】実施の形態７にかかる半導体装置及び外部装置を用いて秘匿情報が書き込まれた半導体装置を用いた暗号通信システムの一例のブロック図である。
【図１３】図１２で示した暗号通信システムの動作を説明するためのフローチャートである。
【図１４】図１２で示した暗号通信システムの共通鍵生成部の動作を説明するためのフローチャートである。
【図１５】図１２で示した暗号通信システムの共通鍵生成部で処理されるユニークコードの一例を示す表である。
【図１６】実施の形態７にかかる半導体装置及び外部装置を用いて秘匿情報が書き込まれた半導体装置を用いた暗号通信システムの別の例を示すブロック図である。
【図１７】図１６で示した暗号通信システムの動作を説明するためのフローチャートである。
【図１８】図１６で示した暗号通信システムの訂正データ生成部の動作を説明するためのフローチャートである。
【図１９】複数の半導体装置を用いて訂正データを生成する場合を示す図である。
【発明を実施するための形態】
【００１１】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。実施の形態１にかかる半導体装置１０及び外部装置（例えば、書き込み機２０）のブロック図を示す。図１に示すように、実施の形態１では、半導体装置１０と外部装置２０とにより１つのデータ書き込みシステム１が構成される。半導体装置１０は、当該データ書き込みシステム１を利用して秘匿情報が書き込まれ、当該秘匿情報を利用して暗号通信を行う。
【００１２】
図１に示すように、半導体装置１０は、ユニークコード生成部１２、第１のエラー訂正部（例えば、ビットマスク回路１３）、第２のエラー訂正部（例えば、ＥＣＣ回路１５）、復号部（例えば、ハッシュ関数復号部１６）を有する。また、半導体装置１０は、これら回路に付随するものとして識別情報保持部１１、格納部１４、暗号部１７を有する。
【００１３】
識別情報保持部１１は、デバイス毎に予め固定値として設定される識別情報ＩＤを保持する。そして、識別情報保持部１１は、識別情報ＩＤを書き込み機２０に対して出力する。この識別情報ＩＤは、例えば、製品のロット番号、製造管理番号、製品ＩＤ等の値であって、エラーを含まない値である。
【００１４】
ユニークコード生成部１２は、デバイスに固有な値であってランダムなビットにエラーを含む初期ユニークコードＵＣｐを生成する。ユニークコード生成部１２は、例えば、半導体装置１０が備えるメモリ素子（例えば、ＳＲＡＭ（Static Random Access Memory））の起動時の初期値を用いて初期ユニークコードＵＣｐを生成する。初期ユニークコードＵＣｐは、同じ設計の回路から生成される値であるが、実際に半導体装置として製造される回路は個々にばらつきを有するという性質を利用して生成されるコードである。このような技術は、ＰＵＦ（Physical Unclonable Function）と呼ばれ、耐タンパチップのような特殊なハードウェアを必要とせず、複製が困難なデータであるため、データの高い秘匿性を実現することができる。
【００１５】
ビットマスク回路１３は、初期ユニークコードＵＣｐのエラーを訂正して、中間ユニークコードを生成する。より具体的には、ビットマスク回路１３は、外部（例えば、書き込み機２０）から得た第１の訂正データ（例えば、ビットマスクデータＢＭ）により初期ユニークコードＵＣｐのエラーを訂正して、中間ユニークコードＵＣｂを生成する。実施の形態１では、この中間ユニークコードＵＣｂは、ＥＣＣ回路１５に出力されると共に、書き込み機２０に出力される。ビットマスク回路１３において行われるビットマスク処理は、第１のエラー訂正処理に相当する。
【００１６】
ＥＣＣ回路１５は、中間ユニークコードＵＣｂのエラーを訂正して、第１の確定ユニークコードＵＣｍを生成する。より具体的には、ＥＣＣ回路１５は、中間ユニークコードＵＣｂに予め内部に保持している第２の訂正データ（例えば、ＥＣＣコード）を適用して中間ユニークコードＵＣｂのエラーを訂正して、第１の確定ユニークコードＵＣｍを生成する。ＥＣＣ回路１５において行われるＥＣＣコードによるエラー訂正処理は、第２のエラー訂正処理に相当する。
【００１７】
格納部１４は、半導体装置１０のＥＣＣ回路１５で利用されるＥＣＣコードを格納する。ＥＣＣコードは半導体装置製造時に予め書き込まれている値である。
【００１８】
ハッシュ関数復号部１６は、第１の確定ユニークコードＵＣｍを用いて外部から受信した送信データＨＦ２を復号して、秘匿情報（例えば、ハッシュ関数ＨＦ１）を復号する。
【００１９】
暗号部１７は、送信対象情報を暗号化する。より具体的には、暗号部１７は、ハッシュ関数ＨＦ１を暗号鍵として利用して暗号通信を行う。より具体的には、暗号部１７は、送信対象情報をハッシュ関数ＨＦ１を用いて暗号化して暗号化済み情報を生成し、当該暗号化済み情報を外部に出力する。
【００２０】
図１に示すように、書き込み機２０は、格納部２１、２２、２５、第３のエラー訂正部（例えば、ＥＣＣ回路２３）、正当性判定回路（例えば、ＣＲＣ回路２４）、暗号処理部（例えば、ハッシュ関数暗号部２６）を有する。
【００２１】
格納部２１は、識別情報ＩＤと第１の訂正データ（例えば、ビットマスクデータＢＭ）とを関連付けた情報（例えば、識別情報−マスクビット対応表）を保持する。そして、格納部２１は、半導体装置１０から識別情報ＩＤを読み出して、識別情報−マスクビット対応表を参照して識別情報ＩＤに対応するビットマスクデータＢＭを選択する。そして、格納部２１は、選択したビットマスクデータＢＭを半導体装置１０に送信する。なお、格納部２１は、識別情報ＩＤがなければビットマスクデータＢＭを半導体装置１０に送信できない構成を有するものとする。なお、ビットマスクデータＢＭは、初期ユニークコードを構成するビットのいずれをマスクするかを指定するデータである。
【００２２】
格納部２２は、ＥＣＣコードと、ＣＲＣ（Cyclic Redundancy Check）コードテーブルと、を格納する。ＥＣＣコードは、半導体装置１０の格納部１４に格納されたＥＣＣコードと同じものである。また、ＣＲＣコードテーブルは、半導体装置１０で生成される第１の確定ユニークコードＵＣｍに対応して予め生成されるものである。
【００２３】
ＥＣＣ回路２３は、格納部２２からＥＣＣコードを読み出し、半導体装置１０から送信される中間ユニークコードＵＣｂに対して読み出したＥＣＣコードによるエラー訂正処理を行う。つまり、ＥＣＣ回路２３では、半導体装置１０のＥＣＣ回路１５と同じエラー訂正処理を行う。これにより、ＥＣＣ回路２３は、中間ユニークコードＵＣｂのエラーを訂正した第２の確定ユニークコードＵＣｗを生成する。この第２の確定ユニークコードＵＣｗは、送信対象の秘匿情報の暗号化に用いられる鍵情報として利用される。
【００２４】
ＣＲＣ回路２４は、格納部２２のＣＲＣコードテーブルから第１の確定ユニークコードＵＣｍに対応したＣＲＣコードを読み出す。そして、ＣＲＣ回路２４は、ＣＲＣコードを用いて第２の確定ユニークコードＵＣｗのエラーチェックを行う。そして、ＣＲＣ回路２４は、第２の確定ユニークコードＵＣｗにエラーが認められた場合には第２の確定ユニークコードＵＣｗが不正なものであると判定し、第２の確定ユニークコードＵＣｗにエラーが検出されなければ第２の確定ユニークコードＵＣｗが正当なものであると判定する。そして、ＣＲＣ回路２４は、第２の確定ユニークコードＵＣｗが正当なものである場合にのみ後段の回路に第２の確定ユニークコードＵＣｗを出力する。一方、ＣＲＣ回路２４は、第２の確定ユニークコードＵＣｗが不正なものである場合には書き込み機２０の動作を停止させる処理を行う。ＣＲＣ回路２４は、第２の確定ユニークコードＵＣｗが不正なものであると判定された場合には、正当なものであると判定されるまで、第２の確定ユニークコードＵＣｗのエラーチェックを所定の回数を限度として繰り返すようにしても良い。
【００２５】
格納部２５には、秘匿情報であるハッシュ関数ＨＦ１が格納される。ハッシュ関数暗号部２６は、格納部２５からハッシュ関数ＨＦ１を読み出し、第２の確定ユニークコードＵＣｗによりハッシュ関数ＨＦ１を暗号化して送信データＨＦ２を生成する。また、ハッシュ関数暗号部２６は、送信データＨＦ２を半導体装置１０に送信する。
【００２６】
ここで、実施の形態１にかかる半導体装置及び外部装置において生成される確定ユニークコードについて説明する。実施の形態１にかかる半導体装置及び外部装置で生成される確定ユニークコードの一例を示す表を図２に示す。
【００２７】
まず、半導体装置１０では、ユニークコード生成部１２から初期ユニークコードＵＣｐを生成する（図２の（１））。次に、ビットマスク回路１３は、ビットマスクデータＢＭを用いて、初期ユニークコードＵＣｐに対して所定のビットをマスクするビットマスク処理を施す。ここで、ビットマスクデータＢＭは、初期ユニークコードを構成するビットのいずれをマスクするかを指定するデータである。いずれのビットをマスクするかは、初期ユニークコードＵＣｐのビットのエラー率により決まる。本実施の形態では、ビットマスクデータＢＭにおいてマスク対象に指定されるビットは、エラー率の高い初期ユニークコードＵＣｐのビットが設定される。図２に示す例では、初期ユニークコードＵＣｐの１ビット目と６ビット目のビットのエラー率が高いため、ビットマスクデータＢＭが"０"となっている。これ以外のビットは、エラー率が低いビット又は値が安定しているビットであるため、ビットマスクデータＢＭが"１"となっている。つまり、マスクが必要なビットのビットマスクデータＢＭは"０"となり、マスクが不要なビットのマスクデータは"１"となる。そして、ビットマスクデータＢＭを用いて初期ユニークコードＵＣｐをマスクすることで、初期ユニークコードＵＣｐの１ビット目と６ビット目のビットを削除したマスク処理後のデータ（例えば、中間ユニークコードＵＣｂ）を得ることができる（マスク処理により削除したビットは"Ｘ"で示している）。その後、マスク処理により生成された中間ユニークコードＵＣｂは左詰めされる。ここで言うエラー率とは、初期ユニークコードＵＣｐを生成する度に、ビットのデータが"０"、または"１"にある一定の高確率で変動する値であり、この初期ユニークコードＵＣｐには、エラー率の低いビットも含まれている。
【００２８】
次に、ＥＣＣコード（エラー訂正コード）を用いて、中間ユニークコードＵＣｂのエラー訂正が行われる。図２に示す例では、ＥＣＣコードを用いたエラー訂正処理（以下、ＥＣＣ処理と称す）により、２ビット目のビットが"０"から"１"に訂正されている。ＥＣＣ処理により生成されたユニークコードが第１の確定ユニークコードＵＣｍ又は第２の確定ユニークコードＵＣｗとなる。
【００２９】
続いて、実施の形態１にかかるデータ書き込みシステム１における半導体装置１０及び書き込み機２０の動作について説明する。図３に実施の形態１にかかる半導体装置１０及び書き込み機２０の動作を示すシーケンス図を示す。
【００３０】
図３に示すように、実施の形態１にかかるデータ書き込みシステム１では、まず、書き込み機２０が半導体装置１０から識別情報ＩＤを取得する（ステップＳ１）。そして、書き込み機２０は、受信した識別情報ＩＤに対応するビットマスクデータＢＭを格納部２１内のデータから選択する（ステップＳ２）。続いて、書き込み機２０は、選択したビットマスクデータＢＭを半導体装置１０に送信する（ステップＳ３）。
【００３１】
続いて、半導体装置１０では、書き込み機２０から受信したビットマスクデータＢＭを用いて初期ユニークコードＵＣｐにビットマスク処理を施して中間ユニークコードＵＣｂを生成する（ステップＳ４）。続いて、半導体装置１０は、中間ユニークコードＵＣｂを半導体装置内のＥＣＣ回路１５及び書き込み機２０に送信する（ステップＳ６）。
【００３２】
半導体装置１０では、ＥＣＣ回路１５が中間ユニークコードＵＣｂに対して格納部１４に格納されているＥＣＣコードを適用して、中間ユニークコードＵＣｂのエラー訂正処理を行う。そして、ＥＣＣ回路１５は、第１の確定ユニークコードＵＣｍを生成する（ステップＳ５）。
【００３３】
一方、書き込み機２０は、ＥＣＣ回路２３が中間ユニークコードＵＣｂに対して格納部２２に格納されているＥＣＣコードを適用して、中間ユニークコードＵＣｂのエラー訂正処理を行う。そして、ＥＣＣ回路２３は、第２の確定ユニークコードＵＣｗを生成する（ステップＳ７）。続いて、書き込み機２０は、ＣＲＣ回路２４が格納部２２に格納されているＣＲＣコードを用いて第２の確定ユニークコードＵＣｗの正当性を検証する（ステップＳ８）。ステップＳ８において第２の確定ユニークコードＵＣｗが正当なものであると判定された場合、ハッシュ関数暗号部２６は、ＣＲＣ回路２４の第２の確定ユニークコードＵＣｗを適用して、第２の確定ユニークコードＵＣｗによりハッシュ関数ＨＦ１を暗号化し、送信データＨＦ２を生成する（ステップＳ９）。そして、書き込み機２０は、生成した送信データＨＦ２を半導体装置１０に送信する（ステップＳ１０）。なお、ステップＳ８において第２の確定ユニークコードＵＣｗが不正なものであると判定された場合、書き込み機２０は、処理を停止する。
【００３４】
続いて、半導体装置１０は、受信した送信データＨＦ２をステップＳ５で生成された第１の確定ユニークコードＵＣｍで復号してハッシュ関数ＨＦ１を生成する（ステップＳ１１）。そして、半導体装置１０は、ハッシュ関数ＨＦ１を用いて他の半導体装置と暗号通信を開始する（ステップＳ１２）。
【００３５】
実施の形態１にかかる半導体装置では、暗号化した秘匿情報（例えば、ハッシュ関数ＨＦ１）を書き込み機２０から取得し、半導体装置内で生成される第１の確定ユニークコードＵＣｍで送信データＨＦ２を復号することで利用可能なハッシュ関数ＨＦ１を得ることができる。このように、書き込み機２０から半導体装置１０に送信する送信データとして暗号化した情報を適用することで、秘匿情報を高いセキュリティを維持して秘匿情報を半導体装置１０に書き込みすることができる。しかし、従来の一般的な暗号通信を半導体装置１０への秘匿情報の書き込みに適用したのみでは、セキュリティを維持できない問題がある。
【００３６】
暗号通信の一般的技術として、秘匿情報を送信する送信側装置に公開鍵を備え、秘匿情報を受信する受信側装置に秘密鍵を備える公開鍵方式と、通信を行う装置間で共通の鍵を利用する共通鍵方式とがある。そこで、暗号方式として公開鍵方式を採用した場合、受信側装置となる半導体装置に秘密鍵を予め格納し、送信側装置となる書き込み機に公開鍵を予め格納する必要がある。そして、公開鍵方式を採用した場合、半導体装置と書き込み機との間で鍵情報の授受を行う必要がないため、半導体装置と書き込み機との間の通信における鍵情報の漏洩を防止できるメリットがある。しかし、半導体装置は、書き込み機の流通量に対して遙かに大量に流通するためこの秘密鍵の管理が問題になる。また、暗号方式として共通鍵方式を採用した場合、半導体装置と書き込み機との両方に共通鍵を予め格納しておくことで、半導体装置と書き込み機との間の通信における鍵情報の漏洩を防止できるメリットがある。しかし、共通鍵方式を採用した場合、共通鍵の漏洩を防止する対策を半導体装置と書き込み機との両方で行わなければならない問題がある。また、公開鍵方式を採用した場合、一般的な鍵情報の漏洩防止対策に加え、書き込み機の盗難対策等を行う必要もある。
【００３７】
特に、半導体装置１０が自動車に搭載される車載用半導体装置であった場合、上記のようなセキュリティ対策を万全に維持することは難しい。自動車は、一般的にメンテナンスが必要であり、当該メンテナンス過程では、メンテナンス者が書き込み機の操作をする場合があり、メンテナンス者が攻撃者となることを完全に防ぐことは難しいためである。また、書き込み機は、自動車メーカーの工場のみならず、カーディーラー等に配置されるため、これら全ての設定箇所で完全に書き込み機の盗難を防ぐことは難しいためである。
【００３８】
ここで、一般的な半導体装置を解析して不正にデータを取得する方法としては、以下のような方法がある。
（１）半導体装置をＦＩＢ（Focused Ion Beam）を用いて加工し、プローブを用いて半導体装置を物理的に解析する方法。
（２）半導体装置にレーザなどの電磁波を照射したり、電源端子にノイズを挿入したりすることでＣＰＵを暴走させて不正にデータを取得するフォルトツリー解析。
（３）半導体装置の消費電流量を観測し、鍵データを解析するリーク解析。
（４）半導体装置の信号端子に直接接続し、信号情報を読み出す方法。
【００３９】
このような不正な解析を回避するために、高いセキュリティレベルが必要な分野では、セキュリティレベルの高いマイコン（以下、セキュアマイコンという）が用いられている。このセキュアマイコンには、配線領域へのシールド、光や信号ノイズを検出する機能、信号に乱数信号を組み合わせて電流をかく乱する機能などが実装されている。
【００４０】
このように、セキュアマイコンを用いることで第三者が不正に半導体装置を解析することを防止することができる。しかしながら、セキュアマイコンを用いた場合は、不正解析を防止できる反面、その耐タンパ性により半導体装置メーカー等が不良解析や故障解析を実施することができなくなるという問題があった。特に、自動車に用いられる車載用のマイコン（ＥＣＵ等）では、高信頼性が必要であるため、半導体装置の不良解析や故障解析が必要となる。このような理由から、車載用のマイコンにはセキュアマイコンよりもセキュリティレベルが低い汎用のマイコン（以下、汎用マイコンという）が広く用いられてきた。従来、車載用のマイコンでは、汎用マイコンを使用しつつ、半導体装置のセキュリティレベルを向上させることが可能な暗号通信システムが必要とされていた。
【００４１】
しかし、実施の形態１にかかる半導体装置及び半導体装置へのデータ書き込み方法によれば、上記課題を解決することができる。実施の形態１にかかる半導体装置１０では、初期ユニークコードＵＣｐに対して第１のエラー訂正処理（例えば、ビットマスク処理）を施して中間ユニークコードＵＣｂを生成する。そして、実施の形態１にかかる半導体装置１０は、この中間ユニークコードＵＣｂを半導体装置１０のＥＣＣ回路１５に送信すると共に、書き込み機２０に送信する。半導体装置１０では、ＥＣＣ回路１５において中間ユニークコードＵＣｂに第２のエラー訂正処理（例えば、ＥＣＣコードによるエラー訂正処理）を施して第１の確定ユニークコードＵＣｍを生成する。また、書き込み機２０は、ＥＣＣ回路２３において中間ユニークコードＵＣｂに第２のエラー訂正処理と同じエラー訂正処理を施して第２の確定ユニークコードＵＣｗを生成し、これを鍵情報としてハッシュ関数ＨＦ１を暗号化して送信データＨＦ２を生成する。そして、半導体装置１０では、送信データＨＦ２を第１の確定ユニークコードＵＣｍを用いて復号してハッシュ関数ＨＦ１を生成する。つまり、実施の形態１にかかる半導体装置１０は、ハッシュ関数ＨＦ１を書き込み機２０から得るために、書き込み機２０との通信において鍵情報及びハッシュ関数ＨＦ１を直接送受信する必要がない。このことから、実施の形態１にかかる半導体装置１０は、秘匿情報であるハッシュ関数ＨＦ１及びハッシュ関数ＨＦ１の暗号化処理・復号化処理に利用する鍵情報が漏洩することを防止し、セキュリティを高めることができる。
【００４２】
実施の形態１にかかる半導体装置１０では、ハッシュ関数ＨＦ１の復号に用いる鍵情報を初期ユニークコードＵＣｐ（例えば、ＰＵＦ）から生成する。この初期ユニークコードＵＣｐから鍵情報を生成する場合、実施の形態１にかかる半導体装置１０では、第１の訂正データ（例えば、ビットマスクデータＢＭ）及び第２の訂正データ（例えば、ＥＣＣデータ）を利用する必要がある。しかし、実施の形態１にかかる半導体装置では、ビットマスクデータＢＭが半導体装置１０の外部から与えられる。そのため、実施の形態１にかかる半導体装置では、解析等の不正行為によりＥＣＣコードと初期ユニークコードＵＣｐが判明したとしても、第１の確定ユニークコードＵＣｍを特定することができない。これにより、実施の形態１にかかる半導体装置１０では、不正アクセスによる鍵情報の漏洩を防止して、高いセキュリティを実現することができる。
【００４３】
また、実施の形態１にかかるデータ書き込みシステム１では、半導体装置１０の認識情報ＩＤに対応するビットマスクデータＢＭを書き込み機２０が有していない場合、半導体装置１０には、ビットマスクデータＢＭが送信されない。このようなことから、偽の書き込み機により、半導体装置１０に悪意を有する偽のハッシュ関数を送信しても、半導体装置１０において、本来の第１の確定ユニークコードＵＣｍとは異なる偽の第１の確定ユニークコードしか生成されず、半導体装置１０は、ハッシュ関数を正常に生成することができない。さらに、偽の書き込み機であった場合、ＥＣＣコードも本来のＥＣＣコードとは異なるものであるため、書き込み機側で生成される第２の確定ユニークコードＵＣｗと半導体装置側で生成される第１の確定ユニークコードＵＣｍとが一致しない。このようなことからも、偽の書き込み機によって生成された送信データは、半導体装置側で正常に復号処理を行うことができない。このようなことから、実施の形態１にかかる半導体装置１０によれば、偽の書き込み機からの悪意を有するハッシュ関数の書き込みを防止することができる。
【００４４】
また、実施の形態１にかかる半導体装置１０では、不正アクセスにより、半導体装置１０内の識別情報ＩＤ、初期ユニークコードＵＣｐ、及び、ＥＣＣコード等の格納データの漏洩があった場合であっても、漏洩したデータだけでは秘匿情報であるハッシュ関数ＨＦ１、或いは、ハッシュ関数ＨＦ１の復号処理に用いられる第１の確定ユニークコードＵＣｍを認識することができない。このようなことから、実施の形態１にかかる半導体装置１０は、セキュアマイコン等の高価な半導体装置を用いることなく、汎用マイコン等により実現できる。さらに、汎用マイコンにより半導体装置１０を実現できることから、正規のメンテナンス者であれば、半導体装置１０の不具合を容易に解析することができる。
【００４５】
また、実施の形態１にかかるデータ書き込みシステム１では、半導体装置１０と書き込み機２０との通信において、送受信するデータは、半導体装置１０の識別情報ＩＤ、第１の確定ユニークコードＵＣｍの生成に必要な複数の訂正データのうちの１つの訂正データ、エラー訂正処理が行われる前の第１の確定ユニークコードＵＣｍ（即ち、中間ユニークコードＵＣｂ）、及び、暗号化されたハッシュ関数ＨＦ１（即ち、送信データＨＦ２）である。つまり、実施の形態１にかかるデータ書き込みシステム１では、半導体装置１０と書き込み機２０との通信において、秘匿情報であるハッシュ関数ＨＦ１及び復号に用いる第１の確定ユニークコードＵＣｍを、直接送受信しない。このようなことから、実施の形態１にかかるデータ書き込みシステム１では、半導体装置１０と書き込み機２０との間の通信経路に対して信号の傍受等が行われた場合であっても、秘匿情報又は秘匿情報の再生に直接用いられるデータが漏洩することがない。このようなことから、実施の形態１にかかるデータ書き込みシステム１では、半導体装置１０と書き込み機２０との間の通信経路に対する高いセキュリティを実現することができる。
【００４６】
また、実施の形態１にかかる半導体装置１０及び書き込み機２０では、第１の確定ユニークコードＵＣｍと第２の確定ユニークコードＵＣｗとの比較処理により半導体装置１０と書き込み機２０との間の認証を行うことができる。つまり、実施の形態１にかかる半導体装置１０及び書き込み機２０では、ＲＳＡ暗号のような複雑な計算を行うことなく認証処理を行うことができる。このようなことから、実施の形態１にかかる半導体装置１０及び書き込み機２０によれば、簡単な計算による処理だけでデータ書き込みシステム１の高いセキュリティを実現することができる。
【００４７】
また、実施の形態１にかかるデータ書き込みシステム１では、書き込み機２０が盗難された場合に、書き込み機２０に格納されているビットマスクデータＢＭ及びＥＣＣコードが漏洩するおそれがある。しかし、これらのデータのみで第１の確定ユニークコードＵＣｍを導き出すことは極めて困難である。このようなことから、実施の形態１にかかるデータ書き込みシステム１では、書き込み機２０に対して高度な盗難対策を施す必要がないという効果を奏する。なお、盗難対策を考えた場合、書き込み機２０に格納されている秘匿情報（例えば、ハッシュ関数ＨＦ１）は、利用時に入力する、或いは、情報漏洩防止対策がなされた状態で保持していることが望ましい。
【００４８】
また、実施の形態１にかかる書き込み機２０では、偽の半導体装置が接続された場合は、偽の半導体装置から書き込み機２０に送信される、エラー訂正処理が行われる前の第１の確定ユニークコードＵＣｍ（即ち、中間ユニークコードＵＣｂ）が異なるため、書き込み機内部のＥＣＣ回路２３で生成される、第２の確定ユニークコードＵＣｗが正しく生成できない。そのため、ＣＲＣ回路２４によるによる正当性判定処理により、当該偽の半導体装置の判別を行うことができる。つまり、実施の形態１にかかる書き込み機２０によれば、半導体装置１０の模造品の拡散を防止することができる。
【００４９】
また、通常、半導体装置１０が利用する秘匿情報は、半導体装置１０の利用者にとっての機密事項である。このような機密事項を半導体装置に高いセキュリティを維持しながら格納するためには、利用者が予め半導体メーカーに秘匿情報を渡す必要がある。そのため、利用者の観点からは、秘匿情報についての漏洩防止管理を十分に行うことを確証できない問題がある。しかし、実施の形態１にかかる半導体装置１０及び書き込み機２０を利用することで、利用者が書き込み機２０を利用して、利用者自身が直接半導体装置１０に秘匿情報を書き込むことができる。つまり、実施の形態１にかかる半導体装置１０及び書き込み機２０を利用することで、利用者における秘匿情報の漏洩防止管理の確実性を向上させることができる。一方、半導体メーカーは、半導体装置１０に対応するビットマスクデータＢＭ及びＥＣＣコードを利用者に提供する必要があるが、これらのデータだけでは、第１の確定ユニークコードＵＣｍを導き出すことは困難である。つまり、半導体メーカーにおいても、ビットマスクデータＢＭ及びＥＣＣコードに対する高度な漏洩対策は必要がなくなる。
【００５０】
なお、上記で説明したＣＲＣ回路は、処理対象データのエラー検出又は誤訂正を防止する処理が実行できる回路（例えば、パリティチェック回路）により置き換えることも可能である。また、ＥＣＣ回路は、処理対象データのエラー訂正ができる他の構成の回路により置き換えることも可能である。
【００５１】
実施の形態２
実施の形態２にかかる半導体装置３０及び外部装置（例えば、書き込み機４０）のブロック図を図４に示す。図４に示すように、実施の形態２では、データ書き込みシステム２が半導体装置３０及び書き込み機４０により構成される。なお、実施の形態２の説明において、実施の形態１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００５２】
図４に示すように、半導体装置３０は、実施の形態１にかかる半導体装置１０における第１のデータ訂正部としてＥＣＣ回路３１を備え、第２のデータ訂正部としてビットマスク回路３３を有する。また、半導体装置３０では、第２のデータ訂正部で利用される第２の訂正データとしてビットマスクデータＢＭが利用される。図４では、ビットマスクデータＢＭが格納される領域として格納部３２を示した。なお、図４では、ＥＣＣ回路３１が生成する中間ユニークコードにＵＣｅの符号を付した。
【００５３】
図４に示すように、書き込み機４０は、半導体装置１０から半導体装置３０への変更に伴い、第２の確定ユニークコードＵＣｗを生成するエラー訂正部がＥＣＣ回路２３からビットマスク回路４３に変更されている。そのため、書き込み機４０は、格納部２２に代えてビットマスクデータとＣＲＣコードテーブルとを格納する領域として格納部４２を有する。また、書き込み機４０では、半導体装置の第１のエラー訂正部がビットマスク回路１３からＥＣＣ回路３１に変更されたと伴い、識別情報ＩＤと対応付けられるエラー訂正データがＥＣＣコードに変更されている。そのため、書き込み機４０には、識別−マスクビット対応表に代えて識別情報−ＥＣＣコード対応表が格納される。この識別情報−ＥＣＣコード対応表を格納する領域として、図４では格納部４１を示した。この格納部４１は、識別情報ＩＤを受信した場合、識別情報ＩＤに対応するＥＣＣコードを出力する。このＥＣＣコードは、初期ユニークコードＵＣｐに対応して予め生成されるコードである。このＥＣＣコードを用いて他の半導体装置で生成された中間ユニークコードのエラー訂正を行っても、生成される確定ユニークコードは、半導体装置１０で生成される第１の確定ユニークコードＵＣｍとは異なる値となる。
【００５４】
続いて、実施の形態２にかかる半導体装置３０及び書き込み機４０の動作について説明する。図５に実施の形態２にかかる半導体装置３０及び書き込み機４０の動作を示すシーケンス図を示す。
【００５５】
図５に示すように、実施の形態２にかかるデータ書き込みシステム２では、まず、書き込み機４０が半導体装置３０から識別情報ＩＤを取得する（ステップＳ２１）。そして、書き込み機４０は、受信した識別情報ＩＤに対応するＥＣＣコードを格納部４１内のデータから選択する（ステップＳ２２）。続いて、書き込み機４０は、選択したＥＣＣコードを半導体装置３０に送信する（ステップＳ２３）。
【００５６】
続いて、半導体装置３０では、書き込み機４０から受信したＥＣＣコードを用いて初期ユニークコードＵＣｐにエラー訂正処理を施して中間ユニークコードＵＣｅを生成する（ステップＳ２４）。続いて、半導体装置３０は、中間ユニークコードＵＣｅを半導体装置内のビットマスク回路３３及び書き込み機４０に送信する（ステップＳ２６）。
【００５７】
半導体装置３０では、ビットマスク回路３３が中間ユニークコードＵＣｅに対して格納部３２に格納されているビットマスクデータＢＭを適用して、中間ユニークコードＵＣｅのエラー訂正処理を行う。そして、ビットマスク回路３３は、第１の確定ユニークコードＵＣｍを生成する（ステップＳ２５）。
【００５８】
一方、書き込み機４０は、ビットマスク回路４３が中間ユニークコードＵＣｅに対して格納部４２に格納されているビットマスクデータＢＭを適用して、中間ユニークコードＵＣｅのエラー訂正処理を行う。そして、ビットマスク回路４３は、第２の確定ユニークコードＵＣｗを生成する（ステップＳ２７）。続いて、書き込み機４０は、ビットマスク回路４３で生成された、第２の確定ユニークコードをＣＲＣ回路２４に送信し、格納部４２に格納されているＣＲＣコードを用いて第２の確定ユニークコードＵＣｗの正当性を検証する（ステップＳ２８）。ステップＳ２８において第２の確定ユニークコードＵＣｗが正当なものであると判定された場合、書き込み機４０は、ハッシュ関数暗号部２６にて、第２の確定ユニークコードＵＣｗによりハッシュ関数ＨＦ１を暗号化して送信データＨＦ２を生成する（ステップＳ２９）。そして、書き込み機４０は、生成した送信データＨＦ２を半導体装置３０に送信する（ステップＳ３０）。なお、ステップＳ２８において第２の確定ユニークコードＵＣｗが不正なものであると判定された場合、書き込み機４０は、処理を停止する。
【００５９】
続いて、半導体装置３０は、受信した送信データＨＦ２をステップＳ２５で生成された第１の確定ユニークコードＵＣｍで復号してハッシュ関数ＨＦ１を生成する（ステップＳ３１）。そして、半導体装置３０は、ハッシュ関数ＨＦ１を用いて他の半導体装置と暗号通信を開始する（ステップＳ３２）。
【００６０】
上記説明より、実施の形態２では、第１のエラー訂正処理として行われる処理と第２のエラー訂正処理として行われる処理とを実施の形態１と逆の順序とした。このように処理の順序を入れ替えた場合であっても、半導体装置３０と書き込み機４０との間で鍵情報及び秘匿情報を直接送受信することはない。そのため、実施の形態１と同様に、実施の形態２においても鍵情報及び秘匿情報が漏洩することを防止し、高いセキュリティを実現することができる。
【００６１】
また、半導体装置３０と書き込み機４０との間で送受信されるデータの基本的な性質は、実施の形態１と変わらない。そのため、実施の形態２においても実施の形態１と同様に、半導体装置の模造品対策、書き込み機の盗難対策、秘匿情報の漏洩対策等の観点におけるセキュリティを向上させることができる。
【００６２】
実施の形態３
実施の形態３にかかるにかかる半導体装置５０及び外部装置（例えば、書き込み機６０）のブロック図を図６に示す。図６に示すように、実施の形態３では、データ書き込みシステム３が半導体装置５０及び書き込み機６０により構成される。なお、実施の形態３の説明において、実施の形態１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００６３】
図６に示すように、実施の形態３では、書き込み機６０が識別情報−ビットマスク対応表を暗号化した状態で保持する。図６では、暗号化された識別情報−ビットマスク対応表を有する領域を格納部６１で示した。格納部６１は、識別情報ＩＤを受信した場合、識別情報ＩＤに対応する暗号化処理がなされたビットマスクデータＢＭＥを出力する。ビットマスクデータは、例えば、共通鍵方式で暗号化処理がなされたものである。また、ビットマスクデータの暗号化処理は、格納部６１に格納される前に行われる。これは、書き込み機６０に共通鍵ＣＫの情報を保持しないことで、ビットマスクデータの秘匿性を高めるためである。
【００６４】
図６に示すように、実施の形態３にかかる半導体装置５０は、実施の形態１にかかる半導体装置１０にビットマスク復号部５１を追加したものである。ビットマスク復号部５１は、ビットマスクデータの暗号化に利用された共通鍵ＣＫの情報を保持する。そして、ビットマスク復号部５１は、暗号化済みビットマスクデータＢＭＥを共通鍵ＣＫを用いて復号し、暗号化されていないビットマスクデータＢＭを生成し、ビットマスク回路１３に送信する。
【００６５】
実施の形態３にかかるデータ書き込みシステム３の動作は、実施の形態１にかかるデータ書き込みシステム１の動作にビットマスクデータの復号処理が加わるのみであるため、ここでは説明を省略する。
【００６６】
上記説明より、実施の形態３にかかる書き込み機６０は、半導体装置５０の第１のエラー訂正処理で利用される訂正データを暗号化した状態で保持する。これにより、実施の形態３にかかる書き込み機６０は、書き込み機の盗難された場合においても第１の訂正データ（例えば、ビットマスクデータ）の秘匿性を高めることができる。
【００６７】
なお、格納部６１に格納されるビットマスクデータの復号に用いる鍵を識別情報ＩＤとすることもできる。この場合、半導体装置５０のビットマスク復号部５１は、不要になる。また、格納部６１は、正しく復号できたビットマスクデータを識別情報ＩＤに対応したものであると認識し、復号できたビットマスクデータＢＭを半導体装置５０に送信する構成とする。
【００６８】
実施の形態４
実施の形態４にかかる半導体装置１０及び外部装置のブロック図を図７に示す。図７に示すように、実施の形態４では、外部装置が書き込み機７０とサーバー７３とで構成される。また、実施の形態４では、データ書き込みシステム４が半導体装置１０、書き込み機７０、及び、サーバー７３で構成される。なお、実施の形態４の説明において、実施の形態１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００６９】
実施の形態４では、半導体装置１０に書き込む送信データＨＦ２をサーバー７３で生成する。また、半導体装置１０とサーバー７３とは、例えば、公衆ネットワークを介して接続される。書き込み機７０は、半導体装置１０とサーバー７３との間の通信を仲介する。
【００７０】
書き込み機７０は、データ送受信ユニット７１、７２を有する。データ送受信ユニット７１は、半導体装置１０とのインタフェース回路となっており、半導体装置１０と送受信可能なプロトコルに基づき動作する。また、データ送受信ユニット７１は、データ送受信ユニット７２との間で通信を行う。データ送受信ユニット７２は、サーバー７３と送受信可能なプロトコルに基づき動作を行う。本実施の形態では書き込み機７０は、２つのデータ送受信ユニットで構成されているが、一つのデータ送受信ユニットで構成されていても良い。
【００７１】
サーバー７３は、実施の形態１にかかる書き込み機２０が有する機能ブロックの全てを有し、書き込み機２０と実質的に同じ動作を行う。
【００７２】
このように、中間ユニークコードＵＣｂに基づき秘匿情報を暗号化した送信データＨＦ２を生成する機能は、半導体装置１０へのデータの書き込み処理を行う場所に存在する必要はない。
【００７３】
実施の形態４にかかるデータ書き込みシステム４では、中間ユニークコードＵＣｂに基づく送信データＨＦ２の生成処理をサーバー７３にて行う。このサーバー７３は、公衆ネットワーク又は専用線を介して通信できる場所であればどのような場所に設置されてもよい。そのため、サーバー７３を半導体装置１０の利用者（例えば、自動車メーカー）直接管理可能な場所に設置し、書き込み機７０をメンテナンス工場等に配置することが可能である。このようにすることで、半導体装置１０の利用者は、より直接的に秘匿情報を管理することができる。また、書き込み機７０が盗難に遭った場合においても、書き込み機７０の内部には秘匿とすべき情報が存在しないため、データが漏洩することを防止することができる。これにより、実施の形態４にかかるデータ書き込みシステム４では、他の実施例に比べてセキュリティを高めることができる。
【００７４】
実施の形態５
実施の形態５にかかる半導体装置１０及び外部装置のブロック図を図８に示す。図８に示すように、実施の形態５では、外部装置が書き込み機７４とサーバー７５とで構成される。また、実施の形態５では、データ書き込みシステム５が半導体装置１０、書き込み機７４、及び、サーバー７５で構成される。図８に示すように、実施の形態５は、実施の形態５は、実施の形態４の変形例を示すものである。そこで、以下の説明では、実施の形態４と実施の形態５との間で異なる点につて特に説明する。
【００７５】
実施の形態５にかかるデータ書き込みシステム５では、書き込み機７０にビットマスクデータＢＭが格納される格納部２１を配置した書き込み機７４を有する。また、実施の形態５にかかるデータ書き込みシステム５では、サーバー７３からビットマスクデータＢＭが格納される格納部２１を除いたサーバー７５を有する。つまり、実施の形態５は、中間ユニークコードＵＣｂに基づき秘匿情報を暗号化した送信データＨＦ２を生成する実施の形態１にかかる書き込み機２０の構成を、書き込み機７４とサーバー７５とに分散して配置する例を示すものである。このように、実施の形態１にかかる書き込み機２０の構成を分散して配置しても、実施の形態５にかかるデータ書き込みシステム５は、実施の形態１にかかるデータ書き込みシステムと同じ処理を行うことが可能である。つまり、実施の形態５にかかるデータ書き込みシステム５は、実施の形態１にかかるデータ書き込みシステム１と同様に、高いセキュリティを実現することができる。
【００７６】
また、実施の形態５にかかるデータ書き込みシステム５では、実施の形態４にかかるデータ書き込みシステム４と同様に、サーバーを外部装置として利用している。そのため、実施の形態５においても実施の形態４と同様にセキュリティを高めることができる。
【００７７】
実施の形態６
実施の形態６にかかる半導体装置８０及び外部装置（例えば、書き込み機９０）のブロック図を図９に示す。図９に示すように、実施の形態６にかかるデータ書き込みシステム６は、半導体装置８０及び書き込み機９０により構成される。なお、実施の形態６の説明において、実施の形態１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００７８】
図９に示すように、半導体装置８０は、実施の形態１にかかる半導体装置１０に書き込み情報記憶部８１を追加したものである。また、書き込み機９０は、実施の形態１にかかる書き込み機２０に書き込み情報生成部９１を追加したものである。実施の形態６にかかるデータ書き込みシステム６では、書き込み情報生成部９１において送信データＨＦ２と送信データＨＦ２の秘匿性を高めるダミー値Ｄｄとをマージした書き込み情報を生成する。そして、半導体装置８０は、書き込み情報記憶部８１において書き込み情報生成部９１で生成された書き込み情報を保持すると共に、第１の確定ユニークコードＵＣｍを用いて送信データＨＦ２を書き込み情報記憶部８１から読み出す。以下では、特に、書き込み情報記憶部８１と書き込み情報生成部９１について説明する。
【００７９】
書き込み情報記憶部８１は、ユニークコード対応情報生成部（例えば、ダイジェスト生成部８２）、記憶領域８３、メモリコントローラ８４を有する。
【００８０】
ダイジェスト生成部８２は、第１の確定ユニークコードＵＣｍからユニークコード対応情報（例えば、ダイジェスト値ＤＩｍ）を生成する。実施の形態６では、ユニークコード対応情報生成部としてダイジェスト生成部８２を利用したが、ユニークコード対応情報生成部としては、第１の確定ユニークコードＵＣｍから一意的にアドレス値に相当する情報を生成するものであればよく、ダイジェスト生成部以外のアルゴリズムで動作する回路を利用することも可能である。
【００８１】
記憶領域８３は、ダイジェスト値ＤＩｍと関連付けられる領域（例えば、ダイジェスト値ＤＩｍをアクセス対象のアドレスとした場合、ダイジェスト値ＤＩｍで示される領域）に秘匿対象情報を暗号化した送信データＨＦ２が格納される。なお、記憶領域８３は、フラッシュメモリ等の不揮発性メモリであって、電源を遮断しても格納している情報を保持される記憶装置である。
【００８２】
メモリコントローラ８４は、ダイジェスト値ＤＩｍに基づき記憶領域８３に対するアクセスを行うためのアドレスを生成し、当該アドレスに対応する領域から情報を読み出す。また、メモリコントローラ８４は、書き込み機９０から書き込み命令があった場合、当該書き込み命令に従って記憶領域８３に情報を書き込む。
【００８３】
より具体的には、書き込み情報記憶部８１に格納される送信データＨＦ２は、書き込み機９０で生成される。そして、書き込み機９０は、送信データＨＦ２を書き込む際に、ダミー値Ｄｄと送信データＨＦ２とをマージして書き込み命令を発行する。このとき、書き込み機９０は、送信データＨＦ２を格納する領域として第２の確定ユニークコードＵＣｗのダイジェスト値ＤＩｗを送信データＨＦ２の書き込みアドレスとして指定する。そして、メモリコントローラ８４は、半導体装置８０のダイジェスト生成部８２が第１の確定ユニークコードＵＣｍから生成するダイジェスト値ＤＩｍをリードアドレスとして送信データＨＦ２を読み出す。
【００８４】
書き込み情報生成部９１は、ダイジェスト生成部９２、ダミー値発生回路９３、セレクタ９４、バッファ９５を有する。
【００８５】
ダイジェスト生成部９２は、ダイジェスト生成部８２と同じアルゴリズムにより、第２の確定ユニークコードＵＣｗから一意的にダイジェスト値ＤＩｗを生成する。ダイジェスト生成部９２に入力される第２の確定ユニークコードＵＣｗは、半導体装置８０が正規品であればダイジェスト生成部９２に入力される第１の確定ユニークコードＵＣｍと同じものである。つまり、ダイジェスト生成部９２において生成されるダイジェスト値ＤＩｗは、半導体装置８０のダイジェスト生成部８２で生成されるダイジェスト値ＤＩｍと同じ値となる。
【００８６】
ダミー値発生回路９３は、送信データＨＦ２と共に半導体装置８０の記憶領域８３に書き込まれるダミー値Ｄｄを生成する。ダミー値Ｄｄは、ハッシュ関数ＨＦ１とは異なる値を暗号化した偽の暗号化情報である。
【００８７】
セレクタ９４は、バッファ９５に書き込む情報を選択する回路である。バッファ９５は、ダミー値Ｄｄと送信データＨＦ２とを一時的に記憶する記憶装置である。バッファ９５は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）等の不揮発性メモリである。このバッファ９５は、半導体装置８０の記憶領域８３と同容量の記憶装置であることが好ましい。
【００８８】
より具体的には、セレクタ９４は、送信データＨＦ２をバッファ９５に書き込む際には、半導体装置８０のメモリコントローラ８４がダイジェスト値ＤＩｗを用いて読み出し動作を行うアルゴリズムと同じアルゴリズムでバッファ９５に情報を書き込む。例えば、書き込み機９０では、セレクタ９４は、バッファ９５の領域のうちダイジェスト値ＤＩｗで示されるアドレスの領域に送信データＨＦ２を書き込み、バッファ９５の他のアドレスで示される領域にはダミー値Ｄｄを書き込む。そして、書き込み機９０は、バッファ９５に格納されている情報をマージして半導体装置８０に送信する命令を発行する。
【００８９】
続いて、実施の形態６にかかる半導体装置８０及び書き込み機９０の動作について説明する。図１０に実施の形態６にかかる半導体装置８０及び書き込み機９０の動作を示すシーケンス図を示す。
【００９０】
図１０に示すように、実施の形態６にかかるデータ書き込みシステム６では、まず、書き込み機９０が半導体装置８０から識別情報ＩＤを取得する（ステップＳ４１）。そして、書き込み機９０は、受信した識別情報ＩＤに対応するビットマスクデータＢＭを格納部２１内のデータから選択する（ステップＳ４２）。続いて、書き込み機９０は、選択したビットマスクデータＢＭを半導体装置８０に送信する（ステップＳ４３）。
【００９１】
続いて、半導体装置８０では、書き込み機９０から受信したビットマスクデータＢＭを用いて初期ユニークコードＵＣｐにビットマスク処理を施して中間ユニークコードＵＣｂを生成する（ステップＳ４４）。続いて、半導体装置１０は、中間ユニークコードＵＣｂをＥＣＣ回路１５及び書き込み機９０に送信する（ステップＳ４６）。
【００９２】
半導体装置８０では、ＥＣＣ回路１５が中間ユニークコードＵＣｂに対して格納部１４に格納されているＥＣＣコードを適用して、中間ユニークコードＵＣｂのエラー訂正処理を行う。そして、ＥＣＣ回路１５は、第１の確定ユニークコードＵＣｍを生成する（ステップＳ４５）。
【００９３】
一方、書き込み機９０は、ＥＣＣ回路２３が中間ユニークコードＵＣｂに対して格納部２２に格納されているＥＣＣコードを適用して、中間ユニークコードＵＣｂのエラー訂正処理を行う。そして、ＥＣＣ回路２３は、第２の確定ユニークコードＵＣｗを生成する（ステップＳ４７）。続いて、書き込み機９０は、ＣＲＣ回路２４が格納部２２に格納されているＣＲＣコードを用いて第２の確定ユニークコードＵＣｗの正当性を検証する（ステップＳ４８）。ステップＳ４８において第２の確定ユニークコードＵＣｗが正当なものであると判定された場合、書き込み機９０は、第２の確定ユニークコードＵＣｗによりハッシュ関数ＨＦ１を暗号化して送信データＨＦ２を生成する（ステップＳ４９）。
【００９４】
続いて、書き込み機９０は、ダミー値発生回路９３においてダミー値Ｄｄを生成する（ステップＳ５０）。また、書き込み機９０は、ダイジェスト生成部９２において第２の確定ユニークコードＵＣｗからダイジェスト値ＤＩｗを生成する（ステップＳ５１）。そして、書き込み機９０は、ダミー値Ｄｄと送信データＨＦ２とをマージしてバッファ９５に格納する（ステップＳ５２）。その後、書き込み機９０は、ダミー値Ｄｄと送信データＨＦ２とを半導体装置８０に送信する（ステップＳ５３）。
【００９５】
続いて、半導体装置８０では、書き込み機９０で生成されたダミー値Ｄｄと送信データＨＦ２とを記憶領域８３に格納する（ステップＳ５４）。その後、半導体装置８０は、ダイジェスト生成部８２において第１の確定ユニークコードＵＣｍを用いてダイジェスト値ＤＩｍを生成する（ステップＳ５５）。そして、半導体装置８０は、記憶領域８３の領域のうちダイジェスト値ＤＩｍに対応するアドレスが示す領域から送信データＨＦ２を読み出し、送信データＨＦ２をステップＳ４５で生成された第１の確定ユニークコードＵＣｍで復号してハッシュ関数ＨＦ１を生成する（ステップＳ５６）。そして、半導体装置１０は、ハッシュ関数ＨＦ１を用いて他の半導体装置と暗号通信を開始する（ステップＳ５７）。
【００９６】
実施の形態６にかかる半導体装置８０では、暗号化された送信データＨＦ２を自身の第１の確定ユニークコードＵＣｍから生成されたユニークコード対応情報（例えば、ダイジェスト値ＤＩｍ）と関連付けられる領域に関連する領域に格納する。これにより、半導体装置８０では、デバイス毎に異なる領域に送信データＨＦ２が格納されることになるため、攻撃者から送信データＨＦ２が格納された領域そのものを秘匿することができる。従、実施の形態６にかかる半導体装置８０では、半導体装置８０に格納された送信データＨＦ２のセキュリティを向上させることができる。また、実施の形態６にかかる半導体装置８０では、上記のセキュアマイコンを用いることなくセキュリティを向上させることができる。
【００９７】
また、実施の形態６にかかる半導体装置８０では、送信データＨＦ２は、ＣＰＵ（Central Processing Unit）等からアクセス可能な領域である記憶領域に格納される。しかし、格納する送信データＨＦ２は、自身の第１の確定ユニークコードＵＣｍと同じ値の第２の確定ユニークコードＵＣｗにより暗号化された情報である。そして、実施の形態６にかかる半導体装置８０では、ハッシュ関数ＨＦ１を必要に応じてその都度生成する。そのため、メンテナンス等においては、送信データＨＦ２の元の情報であるハッシュ関数ＨＦ１に対応する暗号鍵を有するメンテナンス者がハッシュ関数ＨＦ１の不具合を解析することができる。一方、攻撃者が万が一この送信データＨＦ２を読み出すことができた場合であっても、攻撃者は、送信データＨＦ２がどのようなアルゴリズムで暗号化されているかを理解することができないため、送信データＨＦ２からハッシュ関数ＨＦ１を復号することができない。つまり、実施の形態６にかかる半導体装置８０は、秘匿情報であるハッシュ関数ＨＦ１に対するメンテナンス性を犠牲にすることなくセキュリティを向上させることができる。
【００９８】
また、実施の形態６にかかるデータ書き込みシステム６では、自身のユニークコードＵＣｗを利用してハッシュ関数ＨＦ１を暗号化することで送信データＨＦ２を生成する。そのため、実施の形態６にかかる半導体装置８０では、送信データＨＦ２を復号する際に、自身の第１の確定ユニークコードＵＣｍを利用するのみでよく、サーバー等のデータベースに接続するなどして復号に用いる暗号鍵を取得する必要がない。つまり、実施の形態６にかかる半導体装置８０では、サーバー等との接続にかかるセキュリティ対策を必要としない。
【００９９】
さらに、実施の形態６にかかる半導体装置８０では、送信データＨＦ２を格納する記憶領域の容量として書き込み機９０のバッファ９５の容量以上に確保する必要がない。そのため、実施の形態６にかかる半導体装置８０では、半導体装置８０に実装されている記憶領域を有効に利用することができる。
【０１００】
また、実施の形態６では、書き込み機９０から半導体装置８０へは、ダミー値Ｄｄと送信データＨＦ２とをマージした状態で書き込みを行う。これにより、書き込み機９０から半導体装置８０への通信経路に対してサイドチャネルアタック等の攻撃があった場合においても、攻撃者はダミー値Ｄｄと送信データＨＦ２とを区別することができない。また、書き込み機９０から半導体装置８０にハッシュ関数ＨＦ１の情報を送信する際に、ハッシュ関数ＨＦ１を暗号化した送信データＨＦ２として送信する。これにより、万が一、攻撃者が送信データＨＦ２を判別できたとしても、暗号化アルゴリズムが不明である限りハッシュ関数ＨＦ１を攻撃者に取得されることがない。このような観点からも実施の形態６にかかる半導体装置８０及び書き込み機９０は、秘匿対象情報であるハッシュ関数ＨＦ１に対するセキュリティを向上させることができる。
【０１０１】
実施の形態７
実施の形態７にかかる半導体装置１００及び外部装置（例えば、書き込み機２００）のブロック図を図１１に示す。図１１に示すように、実施の形態７にかかるデータ書き込みシステム７は、半導体装置１００及び書き込み機２００により構成される。
【０１０２】
半導体装置１００は、実施の形態１にかかる半導体装置１の暗号部１７を通信処理部１０１に変更したものである。なお、半導体装置１００、復号部が書き込みデータを復号するため、この復号部をデータ復号部１６として示した。通信部１０１は、記憶部を有する。この記憶部には、データ復号部１６が受信データに対して復号処理を施すことで得られる書き込みデータＤＡ１が格納される。また、通信処理部１０１は、記憶部に格納された書き込みデータを利用して動作する回路である。また、書き込み機２００は、書き込み対象の秘匿情報としてハッシュ関数ＨＦ１に代えて書き込みデータＤＡ１を有する。図１１では、書き込みデータＤＡ１を格納する格納部２２５を示した。また、図１１では、書き込みデータＤＡ１を第２の確定ユニークコードＵＣｗで暗号化して送信データＤＡ２を生成する回路としてデータ暗号部２２６を示した。データ暗号部２２６の動作は、実施の形態１にかかるハッシュ関数暗号部２６と実質的に同じ動作をするため、説明を省略する。
【０１０３】
実施の形態７では、半導体装置に書き込んだ情報の利用方法について説明する。より具体的には、記憶した書き込みデータＤＡ１を利用して動作する通信処理部１０１（或いは半導体装置）の例について説明する。そこで、図１１に示すデータ書き込みシステム７により書き込みデータＤＡ１が書き込まれた半導体装置により構成される暗号通信システム８の一例を図１２に示す。図１２に示す例では、秘匿情報として受信した書き込みデータにデバイスに固有な値であってランダムなビットにエラーを含むユニークコードのエラーを訂正する固有訂正データと、エラー訂正後の前記初期ユニークコードから暗号鍵を生成する演算式情報と、が含まれるものとする。なお、図１２に示す半導体装置の回路ブロックの構成は、上記通信処理部１０１の構成の一例に相当するものである。
【０１０４】
図１２に示すように、実施の形態７にかかる暗号通信システム８は、半導体装置ＩＣａ（１１０）と半導体装置ＩＣｂ（１２０）とを有する。半導体装置１１０は、ユニークコード生成部１１１、記憶部１１２、共通鍵生成部１１３、及び暗号部１１４を有する。
【０１０５】
ユニークコード生成部１１１は、半導体装置１１０に固有のユニークコードＵＣ（ａ）を生成し、共通鍵生成部１１３に出力する。ここで、ユニークコード生成部１１１が生成するユニークコードＵＣ（ａ）は、半導体装置１のユニークコード生成部１２が生成する初期ユニークコードと同じ性質ものである。そのため、ユニークコード生成部１１１に代えてユニークコード生成部１２を利用することもできる。
【０１０６】
記憶部１１２は、訂正データＣＤ（ａ）、共通鍵生成部１１３で生成された共通鍵ＣＫ（ａ）、及び半導体装置１２０の公開鍵ＰＫ（ｂ）を格納することができる。この訂正データＣＤ（ａ）が半導体装置ＩＣａに書き込まれた書き込みデータに相当する。記憶部１１２は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データＣＤ（ａ）及び公開鍵ＰＫ（ｂ）は不揮発性メモリに格納され、共通鍵ＣＫ（ａ）は揮発性メモリに格納される。よって、記憶部１１２は一時的に共通鍵ＣＫ（ａ）を格納するが、半導体装置１１０の電源がオフになると共通鍵ＣＫ（ａ）の情報は失われる。
【０１０７】
共通鍵生成部１１３は、ユニークコード生成部１１１から出力されたユニークコードＵＣ（ａ）と、記憶部１１２に格納されている訂正データＣＤ（ａ）とを用いて共通鍵ＣＫ（ａ）を生成する。
【０１０８】
ユニークコード生成部１１１で生成されるユニークコードＵＣ（ａ）は、ユニークコード生成時の外的要因、例えば、温度、電圧等によって変動するビットの値を含むデータである。このため、ユニークコード生成部１１１で生成されるユニークコードＵＣ（ａ）には、（１）値が安定したビット、（２）高確率で変動するビット（つまり、値の変動が比較的大きいビット）、（３）低確率で変動するビット（つまり、値の変動が比較的小さいビット）の３つが含まれる。このように、ユニークコード生成部１１１で生成されるユニークコードＵＣ（ａ）は、（２）高確率で変動するビットと（３）低確率で変動するビットとを含む。よって、ユニークコードＵＣ（ａ）は生成される毎に異なる値となる。
【０１０９】
高確率で変動するビットは製造工程で把握することができる。よって、製造工程において各ビットを判定することで、高確率で変動するビットをマスクするマスクデータを作成することができる。そして、このマスクデータを用いて、ユニークコード生成部１１１で生成されたユニークコードＵＣ（ａ）をマスクすることで、ユニークコードＵＣ（ａ）に含まれる高確率で変動するビットを削除することができる。ここで、高確率で変動するビットの位置は半導体装置毎に異なるため、マスクデータは半導体装置に固有のデータとなる。
【０１１０】
低確率で変動するビットは、外的要因や残存する電荷などに起因して変動するため、予測することが困難である。このため、低確率で変動するビットは、例えばＢＣＨ符号やリードソロモン符号に代表されるＥＣＣコードを製造時に生成し、このＥＣＣコードを用いてエラーを訂正する。以下で、共通鍵生成部１１３の動作について具体的に説明する。
【０１１１】
図１４は、共通鍵生成部１１３の動作を説明するためのフローチャートであり、図１５は共通鍵生成部１１３で処理されるユニークコードの一例を示す表である。まず、共通鍵生成部１１３は、ユニークコード生成部１１１からユニークコードＵＣ（ａ）を読み込む（ステップＳ７１）。このとき読み込まれたユニークコードＵＣ（ａ）は、エラー訂正が実施されていないユニークコードである。
【０１１２】
次に、訂正データＣＤ（ａ）に含まれるマスクデータを用いて、読み込まれたユニークコードＵＣ（ａ）をマスクする（ステップＳ７２）。ここで、マスクデータは、ユニークコードＵＣ（ａ）のビットのうちエラー率の高いビットをマスクするためのデータである。図１５に示す例では、ユニークコードＵＣ（ａ）の１ビット目と６ビット目のビットのエラー率が高いため、マスクデータが"０"となっている。これ以外のビットは、エラー率が低いビット又は値が安定しているビットであるため、マスクデータが"１"となっている。つまり、マスクが必要なビットのマスクデータは"０"となり、マスクが不要なビットのマスクデータは"１"となる。そして、マスクデータを用いてユニークコードＵＣ（ａ）をマスクすることで、ユニークコードＵＣ（ａ）の１ビット目と６ビット目のビットを削除したマスク処理後のデータを得ることができる（マスク処理により削除したビットは"Ｘ"で示している）。その後、マスク処理後のユニークコードＵＣ（ａ）は左詰めされる。
【０１１３】
次に、訂正データＣＤ（ａ）に含まれるＥＣＣコード（エラー訂正コード）を用いて、マスク処理後のユニークコードＵＣ（ａ）のエラーを訂正する（ステップＳ７３）。図１５に示す例では、ＥＣＣコードを用いたエラー訂正により、１ビット目のビットが"０"から"１"に訂正されている。
【０１１４】
次に、訂正データＣＤ（ａ）に含まれる演算パラメータを用いて、エラー訂正後のユニークコードＵＣ（ａ）に所定の演算を実施する（ステップＳ７４）。図１５に示す例では、エラー訂正後のユニークコードＵＣ（ａ）にＮＯＴ演算を実施している。この演算処理後のユニークコードＵＣ（ａ）が共通鍵ＣＫ（ａ）となる。なお、ＮＯＴ演算は一例であり、エラー訂正後のユニークコードＵＣ（ａ）に実施する演算はどのような演算であってもよい。この演算パラメータを変更することで、必要に応じて共通鍵ＣＫ（ａ）を変更することができる。また、演算パラメータを用いてエラー訂正後のユニークコードＵＣ（ａ）に所定の演算を実施することで、共通鍵ＣＫ（ａ）をユニークコードＵＣ（ａ）と見かけ上類似しないコードとすることができる。よって、セキュリティレベルをさらに向上させることができる。また、エラー訂正後のユニークコードＵＣ（ａ）に実施する演算は省略することもできる。この場合は、マスクデータ及びＥＣＣコードを用いてエラー訂正されたユニークコードＵＣ（ａ）が、共通鍵ＣＫ（ａ）となる。このようにして生成された共通鍵ＣＫ（ａ）は、記憶部１１２及び暗号部１１４に出力される。
【０１１５】
なお、訂正データＣＤ（ａ）に含まれるマスクコード、ＥＣＣコード、及び演算パラメータは、半導体装置１１０の固有のデータとして予め生成されて記憶部１１２に格納されている。
【０１１６】
以上で説明したように、共通鍵生成部１１３は共通鍵ＣＫ（ａ）を生成する機能を有すると同時に、訂正データＣＤ（ａ）を用いてユニークコードＵＣ（ａ）を訂正する機能も有する。図１２に示す秘密鍵生成部１２３も同様に、訂正データＣＤを用いてユニークコードＵＣを訂正するユニークコード訂正部として機能する。なお、本願明細書では、便宜上、生成される鍵毎に共通鍵生成部、秘密鍵生成部、公開鍵生成部と表現しているが、これらの構成及び動作は基本的には同様である。
【０１１７】
図１２の暗号部１１４は、共通鍵生成部１１３で生成された共通鍵ＣＫ（ａ）を半導体装置１２０の公開鍵ＰＫ（ｂ）を用いて暗号化する。ここで、暗号化に用いられる公開鍵ＰＫ（ｂ）は、予め半導体装置１２０から半導体装置１１０に送付されて記憶部１１２に格納されていてもよい。また、暗号化に用いられる公開鍵ＰＫ（ｂ）は、暗号部１１４で共通鍵ＣＫ（ａ）を暗号化する際に、半導体装置１２０から暗号部１１４に直接供給されるように構成してもよい。
【０１１８】
半導体装置１２０は、ユニークコード生成部１２１、記憶部１２２、秘密鍵生成部１２３、及び復号部１２４を有する。ユニークコード生成部１２１は、半導体装置１２０に固有のユニークコードＵＣ（ｂ）を生成し、秘密鍵生成部１２３に出力する。なお、ユニークコード生成部１２１の構成及び動作は、上記で説明したユニークコード生成部１１１と基本的に同様である。
【０１１９】
記憶部１２２は、訂正データＣＤ（ｂ）、公開鍵ＰＫ（ｂ）、及び復号部で復号された共通鍵ＣＫ（ａ）を格納することができる。ここで、訂正データＣＤ（ｂ）は、実施の形態７にかかるデータ書き込みシステム７により書き込まれる書き込みデータに相当する。記憶部１２２は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データＣＤ（ｂ）及び公開鍵ＰＫ（ｂ）は不揮発性メモリに格納され、共通鍵ＣＫ（ａ）は揮発性メモリに格納される。よって、記憶部１２２は一時的に共通鍵ＣＫ（ａ）を格納するが、半導体装置１２０の電源がオフになると共通鍵ＣＫ（ａ）の情報は失われる。
【０１２０】
秘密鍵生成部１２３は、ユニークコードＵＣ（ｂ）と訂正データＣＤ（ｂ）とを用いて半導体装置１２０の秘密鍵ＳＫ（ｂ）を生成する。なお、秘密鍵生成部１２３において秘密鍵ＳＫ（ｂ）を生成する方法は、上記共通鍵生成部１１３が共通鍵ＣＫ（ａ）を生成する方法と基本的に同様である。
【０１２１】
復号部１２４は、半導体装置１１０の暗号部１１４で暗号化された共通鍵ＣＫ（ａ）'を秘密鍵ＳＫ（ｂ）を用いて復号して共通鍵ＣＫ（ａ）を生成する。
【０１２２】
次に、本実施の形態にかかる暗号通信システムの動作について、図１３に示すフローチャートを用いて説明する。まず、半導体装置ＩＣｂ（１２０）は、半導体装置ＩＣａ（１１０）に半導体装置ＩＣｂ（１２０）の公開鍵ＰＫ（ｂ）を送付する（ステップＳ６１）。送付された公開鍵ＰＫ（ｂ）は、半導体装置１１０の記憶部１１２に格納される。次に、半導体装置１１０の共通鍵生成部１１３は、ユニークコード生成部１１１から出力されたユニークコードＵＣ（ａ）と、記憶部１１２に格納されている訂正データＣＤ（ａ）とを用いて共通鍵ＣＫ（ａ）を生成する（ステップＳ６２）。暗号部１１４は、共通鍵生成部１１３で生成された共通鍵ＣＫ（ａ）を半導体装置１２０の公開鍵ＰＫ（ｂ）を用いて暗号化して、暗号化された共通鍵ＣＫ（ａ）'を生成する（ステップＳ６３）。その後、半導体装置１１０から半導体装置１２０に暗号化された共通鍵ＣＫ（ａ）'が送付される（ステップＳ６４）。
【０１２３】
半導体装置１２０の秘密鍵生成部１２３は、ユニークコードＵＣ（ｂ）と訂正データＣＤ（ｂ）とを用いて、半導体装置１２０の秘密鍵ＳＫ（ｂ）を生成する（ステップＳ６５）。復号部１２４は、暗号化された共通鍵ＣＫ（ａ）'を秘密鍵ＳＫ（ｂ）を用いて復号して共通鍵ＣＫ（ａ）を生成する（ステップＳ６６）。上記処理により、半導体装置１１０と半導体装置１２０は共に共通鍵ＣＫ（ａ）を保持することができる。よって、半導体装置１１０及び半導体装置１２０は共通鍵ＣＫ（ａ）を用いて暗号通信することが可能となる（ステップＳ６７）。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。例えば、半導体装置１１０がステップＳ６２とＳ６３を実施するのと並行して、半導体装置１２０においてステップＳ６５を実施してもよい。
【０１２４】
従来の技術では、半導体装置ＩＣｘと半導体装置ＩＣｙとの間で共通鍵ＣＫ（ｘ）を用いて暗号通信を実施する場合、ＩＣｘとＩＣｙとで共通鍵ＣＫ（ｘ）を共有する必要がある。ＩＣｘが共通鍵ＣＫ（ｘ）を保有している場合、ＩＣｘは予め取得したＩＣｙの公開鍵ＰＫ（ｙ）を用いて共通鍵ＣＫ（ｘ）を暗号化し、ＩＣｙへ送付する。そして、ＩＣｙは、ＩＣｙの秘密鍵ＳＫ（ｙ）を用いて、暗号化された共通鍵ＣＫ（ｘ）'を復号することで、共通鍵ＣＫ（ｘ）を取得することができる。このように、公開鍵暗号方式を用いてＩＣｘからＩＣｙへ共通鍵ＣＫ（ｘ）を送付することで、第三者に知られることなくＩＣｘとＩＣｙとで共通鍵ＣＫ（ｘ）を共有することができる。これにより、ＩＣｘとＩＣｙとの間で共通鍵暗号方式を用いて暗号通信を実施することができる。
【０１２５】
ＩＣｘからＩＣｙへ共通鍵ＣＫ（ｘ）を送付する際は、共通鍵ＣＫ（ｘ）が暗号化されているため、共通鍵ＣＫ（ｘ）の情報が漏洩することはない。しかしながら、半導体装置（半導体チップ）ＩＣｘ、ＩＣｙの不揮発性メモリ（記憶部）には共通鍵ＣＫ（ｘ）や秘密鍵ＳＫ（ｙ）などの重要なデータが格納されている。このため、半導体装置が不正に解析されると、共通鍵ＣＫ（ｘ）や秘密鍵ＳＫ（ｙ）などの重要なデータが漏洩してしまうという問題があった。
【０１２６】
これに対して、本実施の形態にかかる暗号通信システムでは、半導体装置１１０の共通鍵生成部１１３において、半導体装置１１０に固有のユニークコードＵＣ（ａ）と訂正データＣＤ（ａ）とを用いて共通鍵ＣＫ（ａ）を生成している。また、半導体装置１２０の秘密鍵生成部１２３において、半導体装置１２０に固有のユニークコードＵＣ（ｂ）と訂正データＣＤ（ｂ）とを用いて、半導体装置１２０の秘密鍵ＳＫ（ｂ）を生成している。よって、共通鍵ＣＫ（ａ）や秘密鍵ＳＫ（ｂ）などの重要なデータを記憶部１１２、１２２に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵ＣＫ（ａ）や秘密鍵ＳＫ（ｂ）などの重要なデータが漏洩することはない。
【０１２７】
また、実施の形態７にかかる暗号通信システム８では、共通鍵ＣＫ（ａ）や秘密鍵ＳＫ（ｂ）などの重要なデータを記憶部１１２、１２２に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵ＣＫ（ａ）や秘密鍵ＳＫ（ｂ）などの重要なデータが漏洩することはない。このため、半導体装置１１０及び半導体装置１２０をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
【０１２８】
なお、共通鍵ＣＫ（ａ）や秘密鍵ＳＫ（ｂ）を生成するために使用される訂正データＣＤ（ａ）、ＣＤ（ｂ）は、共通鍵ＣＫ（ａ）や秘密鍵ＳＫ（ｂ）よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データＣＤ（ａ）、ＣＤ（ｂ）が第三者に漏洩することを防ぐために、訂正データＣＤ（ａ）、ＣＤ（ｂ）が格納される半導体装置１１０、１２０にセキュアマイコンを使用してもよい。
【０１２９】
実施の形態７にかかる暗号通信システム８では、訂正データＣＤ（ａ）及び訂正データＣＤ（ｂ）は、鍵情報を生成するために非常に重要なデータであるが、実施の形態７にかかるデータ書き込みシステム７を利用することで、これら重要なデータを高いセキュリティを維持したまま半導体装置に書き込むことができる。
【０１３０】
実施の形態８
実施の形態８では、実施の形態７にかかるデータ書き込みシステム７により書き込みデータが書き込まれる半導体装置を利用した別の例について説明する。そこで、実施の形態８にかかる暗号通信システム９のブロック図を図１６に示す。なお、図１６に示す半導体装置の回路ブロックは、図１１で示した通信処理部１０１内の回路に相当するものである。
【０１３１】
実施の形態８にかかる暗号通信システム９は、半導体装置ＩＣａ（１３０）（第１の半導体装置）と半導体装置ＩＣｚ（１４０）（第２の半導体装置）とを有する。半導体装置ＩＣａ（１３０）は他の半導体装置（不図示）とセキュアなネットワークを構成している。本実施の形態では、半導体装置ＩＣａ（１３０）を含むセキュアなネットワークに、半導体装置ＩＣｚ（１４０）を新たに追加する場合について説明する。
【０１３２】
半導体装置１３０は、ユニークコード生成部１３１、記憶部１３２、共通鍵生成部（第１の共通鍵生成部）１３３、及び訂正データ生成部１３４を有する。
【０１３３】
ユニークコード生成部１３１は、半導体装置１３０に固有のユニークコードＵＣ（ａ）（第１のユニークコード）を生成し、共通鍵生成部１３３に出力する。ここで、ユニークコード生成部１３１が生成するユニークコードＵＣ（ａ）は、半導体装置１のユニークコード生成部１２が生成する初期ユニークコードと同じ性質ものである。そのため、ユニークコード生成部１３１に代えてユニークコード生成部１２を利用することもできる。
【０１３４】
記憶部１３２は、訂正データＣＤ（ａ）（第１の訂正データ）と、共通鍵生成部１３３で生成された共通鍵ＣＫ（ａ）（第１の共通鍵）とを格納することができる。記憶部１３２は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データＣＤ（ａ）は不揮発性メモリに格納され、共通鍵ＣＫ（ａ）は揮発性メモリに格納される。よって、記憶部１３２は一時的に共通鍵ＣＫ（ａ）を格納するが、半導体装置１３０の電源がオフになると共通鍵ＣＫ（ａ）の情報は消去される。
【０１３５】
共通鍵生成部１３３は、ユニークコード生成部１３１から出力されたユニークコードＵＣ（ａ）と、記憶部１３２に格納されている訂正データＣＤ（ａ）とを用いて共通鍵ＣＫ（ａ）を生成する。
【０１３６】
ここで、ユニークコード生成部１３１で生成されるユニークコードＵＣ（ａ）は、実施の形態７のユニークコード生成部１１１で生成されるユニークコードＵＣ（ａ）と同じ性質のものである。そのため、実施の形態７と同様に、鍵情報を生成するに当たりマスクデータ及びＥＣＣコードによってエラーを訂正する必要がある。
【０１３７】
また、共通鍵生成部１３３の動作は、実施の形態７の共通鍵生成部１１３の動作と実質的に同じであるため、ここでは説明を省略する。なお、訂正データＣＤ（ａ）に含まれるマスクコード、ＥＣＣコード、及び演算パラメータは、半導体装置１３０の固有のデータとして予め生成されて記憶部１３２に格納されている。訂正データＣＤ（ａ）の生成方法については、後述する訂正データ生成部１３４が訂正データＣＤ（ｚ）を生成する場合と同様である。
【０１３８】
訂正データ生成部１３４は、半導体装置１４０のユニークコードＵＣ（ｚ）（第２のユニークコード）と共通鍵ＣＫ（ａ）とを用いて訂正データＣＤ（ｚ）（第２の訂正データ）を生成する。訂正データ生成部１３４が訂正データを生成する場合の動作について、図１８を用いて詳細に説明する。
【０１３９】
まず、半導体装置ＩＣｚ（１４０）からユニークコードＵＣ（ｚ）を複数回取得する（ステップＳ９１）。次に、ステップＳ９１で取得したユニークコードＵＣ（ｚ）を統計的に処理し、ユニークコードＵＣ（ｚ）の各ビットを、（１）値が安定したビット、（２）高確率で変動するビット（つまり、値の変動が比較的大きいビット）、（３）低確率で変動するビット（つまり、値の変動が比較的小さいビット）の３つに分類する。そして、（２）高確率で変動するビットを用いてマスクデータを生成する（ステップＳ９２）。このとき、例えばユニークコードＵＣ（ｚ）の各ビットのうち、所定の閾値よりも高い確率で変動するビットの位置を示す情報をマスクデータとする。
【０１４０】
次に、ステップＳ９２で生成したマスクデータを用いてユニークコードＵＣ（ｚ）をマスクし、高確率で変動するビットを削除する。そして、マスク後のユニークコードＵＣ（ｚ）（つまり、値が安定したビットと低確率で変動するビットを含むユニークコード）のエラーを訂正できるＥＣＣコードを生成する（ステップＳ９３）。ＥＣＣコードは、例えばＢＣＨ符号やリードソロモン符号である。
【０１４１】
次に、ステップＳ９２で生成したマスクデータ及びステップＳ９３で生成したＥＣＣコードを用いてエラー訂正したユニークコードＵＣ（ｚ）（つまり、値が安定したビットを含むユニークコード）と、記憶部１３２に格納されている共通鍵ＣＫ（ａ）とを用いて、演算パラメータを生成する（ステップＳ９４）。即ち、演算パラメータは、訂正されたユニークコードＵＣ（ｚ）から共通鍵ＣＫ（ａ）を生成するために必要なパラメータである。上記処理により生成されたマスクデータ、ＥＣＣコード、及び演算パラメータを訂正データＣＤ（ｚ）として半導体装置ＩＣｚ（１４０）に送付する（ステップＳ９５）。
【０１４２】
なお、訂正データＣＤ（ｚ）を生成するための処理（ステップＳ９１〜Ｓ９５）は、複数の半導体装置を用いて分散させて実施してもよい。図１９は、複数の半導体装置ＩＣａ、ＩＣｂ、ＩＣｃ、ＩＣｄを用いて訂正データＣＤ（ｚ）を生成する場合を示す図である。ここで、半導体装置ＩＣａ、ＩＣｂ、ＩＣｃ、ＩＣｄはセキュアなネットワークを構成している。
【０１４３】
図１９に示す例では、半導体装置ＩＣａがステップＳ９１、Ｓ９５を実施している。つまり、半導体装置ＩＣａは半導体装置ＩＣｚとの窓口として機能する。半導体装置ＩＣｂはステップＳ９２（マスクデータの生成）を実施している。半導体装置ＩＣｃはステップＳ９３（ＥＣＣコードの生成）を実施している。半導体装置ＩＣｄはステップＳ９４（演算パラメータの生成）を実施している。なお、図１９に示す例は一例であり、各ステップを実施する半導体装置は、任意に割り当てることができる。このように、訂正データＣＤ（ｚ）を生成するための処理（ステップＳ９１〜Ｓ９５）を、複数の半導体装置に分散させることで、暗号通信システムのセキュリティレベルを向上させることができ、また１つの半導体装置に負荷が集中することを回避することができる。
【０１４４】
図１６に示す半導体装置１４０は、ユニークコード生成部１４１、記憶部１４２、及び共通鍵生成部（第２の共通鍵生成部）１４３を有する。ユニークコード生成部１４１は、半導体装置１４０に固有のユニークコードＵＣ（ｚ）を生成し、訂正データ生成部１３４及び共通鍵生成部１４３に出力する。なお、ユニークコード生成部１４１の構成及び動作は、上記で説明したユニークコード生成部１３１と基本的に同様である。
【０１４５】
記憶部１４２は、共通鍵生成部１４３で生成された共通鍵ＣＫ（ａ）を格納することができる。記憶部１４２は、揮発性メモリに共通鍵ＣＫ（ａ）を格納する。よって、記憶部１４２は一時的に共通鍵ＣＫ（ａ）を格納するが、半導体装置１４０の電源がオフになると共通鍵ＣＫ（ａ）の情報は消去される。
【０１４６】
共通鍵生成部１４３は、ユニークコード生成部１４１から出力されたユニークコードＵＣ（ｚ）と、訂正データ生成部１３４から出力された訂正データＣＤ（ｚ）とを用いて共通鍵ＣＫ（ａ）（第１の共通鍵）を生成する。なお、共通鍵生成部１４３が共通鍵ＣＫ（ａ）を生成する方法は、上述した共通鍵生成部１３３が共通鍵ＣＫ（ａ）を生成する方法と基本的に同様である。
【０１４７】
次に、本実施の形態にかかる暗号通信システムの動作について、図１７に示すフローチャートを用いて説明する。まず、半導体装置ＩＣａ（１３０）の共通鍵生成部１３３は、ユニークコード生成部１３１から出力されたユニークコードＵＣ（ａ）と、記憶部１３２に格納されている訂正データＣＤ（ａ）とを用いて共通鍵ＣＫ（ａ）を生成する（ステップＳ８１）。その後、半導体装置ＩＣａ（１３０）は他の半導体装置ＩＣｂ〜ＩＣｙ（不図示）と共通鍵ＣＫ（ａ）を用いて通信を開始する（ステップＳ８２）。
【０１４８】
半導体装置１４０は、半導体装置１３０の訂正データ生成部１３４に半導体装置１４０のユニークコードＵＣ（ｚ）を送付する（ステップＳ８３）。半導体装置１３０の訂正データ生成部１３４は、半導体装置１４０のユニークコードＵＣ（ｚ）と、記憶部１３２に格納されている共通鍵ＣＫ（ａ）とを用いて訂正データＣＤ（ｚ）を生成する（ステップＳ８４）。訂正データ生成部１３４が訂正データＣＤ（ｚ）を生成するには、ユニークコードＵＣ（ｚ）を複数回取得する必要がある。よって、ユニークコードＵＣ（ｚ）を複数回取得するためにステップＳ８３を繰り返す。
【０１４９】
生成された訂正データＣＤ（ｚ）は半導体装置１４０の共通鍵生成部１４３に送付される（ステップＳ８５）。半導体装置１４０の共通鍵生成部１４３は、ユニークコード生成部１４１から出力されたユニークコードＵＣ（ｚ）と、訂正データ生成部１３４から出力された訂正データＣＤ（ｚ）とを用いて共通鍵ＣＫ（ａ）を生成する（ステップＳ８６）。上記処理により、新たに追加された半導体装置１４０は共通鍵ＣＫ（ａ）を保持することができる。よって、新たに追加された半導体装置（ＩＣｚ）１４０は、半導体装置（ＩＣａ）１３０及び他の半導体装置ＩＣｂ〜ＩＣｙと共通鍵ＣＫ（ａ）を用いて暗号通信することが可能となる（ステップＳ８７）。
【０１５０】
セキュアな通信が確立している暗号通信システムに新たに半導体装置ＩＣｚを追加する場合は、追加される半導体装置ＩＣｚが正規の半導体装置であるかを検証する必要がある。しかしながら、追加される半導体装置ＩＣｚが正規の半導体装置であるかを検証するには、例えば高価なセキュアサーバーを暗号通信システムに組み込む必要がある。このため、暗号通信システムのコストが増加するという問題があった。
【０１５１】
これに対して実施の形態８にかかる暗号通信システム９では、半導体装置１３０が備える訂正データ生成部１３４において、半導体装置１４０に固有のユニークコードＵＣ（ｚ）と、共通鍵ＣＫ（ａ）とを用いて訂正データＣＤ（ｚ）を生成し、半導体装置１４０の共通鍵生成部１４３において、この訂正データＣＤ（ｚ）と半導体装置１４０のユニークコードＵＣ（ｚ）とを用いて共通鍵ＣＫ（ａ）を生成している。よって、追加される半導体装置ＩＣｚが正規の半導体装置であるかを検証するために、高価なセキュアサーバーを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
【０１５２】
また、実施の形態８にかかる暗号通信システム９では、半導体装置１３０の共通鍵生成部１３３において、半導体装置１３０に固有のユニークコードＵＣ（ａ）と訂正データＣＤ（ａ）とを用いて共通鍵ＣＫ（ａ）を生成している。また、半導体装置１４０の共通鍵生成部１４３において、半導体装置１４０に固有のユニークコードＵＣ（ｚ）と訂正データＣＤ（ｚ）とを用いて、共通鍵ＣＫ（ａ）を生成している。よって、重要なデータである共通鍵ＣＫ（ａ）を記憶部１３２、１４２に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵ＣＫ（ａ）のデータが漏洩することはない。よって、本実施の形態にかかる暗号通信システムにより、セキュリティの向上を実現しつつ、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。
【０１５３】
実施の形態８にかかる暗号通信システム９では、共通鍵ＣＫ（ａ）などの重要なデータを記憶部１３２、１４２に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵ＣＫ（ａ）などの重要なデータが漏洩することはない。このため、半導体装置１３０及び半導体装置１４０をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。
【０１５４】
なお、半導体装置１３０において共通鍵ＣＫ（ａ）を生成するために使用される訂正データＣＤ（ａ）は、共通鍵ＣＫ（ａ）よりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。実施の形態７にかかるデータ書き込みシステム７では、このような比較的セキュリティレベルの高い情報を高いセキュリティを維持ながら半導体装置に格納することができる。
【０１５５】
また、半導体装置１３０から半導体装置１４０に送付される訂正データＣＤ（ｚ）は、ユニークコードＵＣ（ｚ）と共通鍵ＣＫ（ａ）とに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データＣＤ（ｚ）を半導体装置１３０から半導体装置１４０に送付する際は、公開鍵暗号方式を用いて暗号化して送付してもよい。この場合は、例えば半導体装置１４０が半導体装置１４０の秘密鍵を保持し、半導体装置１３０が訂正データＣＤ（ｚ）を送付する際に半導体装置１４０の公開鍵で訂正データＣＤ（ｚ）を暗号化する。そして、半導体装置１４０が暗号化された訂正データＣＤ（ｚ）を秘密鍵を用いて復号する。これにより、半導体装置１３０から半導体装置１４０に暗号化して訂正データを送付することができる。
【０１５６】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。複数の実施の形態に関する事項を組み合わせて、1つの装置とすること、例えば、実施の形態３に対して、実施の形態１から実施の形態２への変更内容を適用することは、当業者であれば当然に想到する事項である。
【符号の説明】
【０１５７】
１〜７    データ書き込みシステム
８、９    暗号通信システム
１０、３０、５０、８０、１００    半導体装置
１１    識別情報保持部
１２    ユニークコード生成部
１３、３３、４３    ビットマスク回路
１４、２１、２２、２５、３２、４１、４２、６１、２２５    格納部
１５、２３、３１    ＥＣＣ回路
１６、５１    復号部
１７    暗号部
２０、４０、６０、７０、７４、９０、２００    書き込み機
２４    ＣＲＣ回路
２６    ハッシュ関数暗号部
７１、７２    データ送受信ユニット
７３、７５    サーバー
８１    情報記憶部
８２    ダイジェスト生成部
８３    記憶領域
８４    メモリコントローラ
９１    情報生成部
９２    ダイジェスト生成部
９３    ダミー値発生回路
９４    セレクタ
９５    バッファ
１０１    通信処理部
１１０、１２０、１３０、１４０    半導体装置
１１１、１２１、１３１、１４１    ユニークコード生成部
１１２、１２２、１３２、１４２    記憶部
１１３、１３３    共通鍵生成部
１１４    暗号部
１２３    秘密鍵生成部
１２４    復号部
１３４    訂正データ生成部
１４３    共通鍵生成部
２２６    データ暗号部
ＢＭ    ビットマスクデータ
ＢＭＥ    暗号化済みビットマスクデータ
ＣＤ    訂正データ
ＣＫ    共通鍵
ＰＫ    公開鍵
ＤＡ１    書き込みデータ
ＤＡ２    送信データ
Ｄｄ    ダミー値
ＤＩｍ、ＤＩｗ    ダイジェスト値
ＨＦ１    ハッシュ関数
ＨＦ２    送信データ
ＩＤ    識別情報
ＳＫ    秘密鍵
ＵＣ    ユニークコード
ＵＣｂ、ＵＣｅ    中間ユニークコード
ＵＣｍ、ＵＣｗ    確定ユニークコード
ＵＣｐ    初期ユニークコード
【図１】
0005770026.tif 000002
【図２】
0005770026.tif 000003
【図３】
0005770026.tif 000004
【図４】
0005770026.tif 000005
【図５】
0005770026.tif 000006
【図６】
0005770026.tif 000007
【図７】
0005770026.tif 000008
【図８】
0005770026.tif 000009
【図９】
0005770026.tif 000010
【図１０】
0005770026.tif 000011
【図１１】
0005770026.tif 000012
【図１２】
0005770026.tif 000013
【図１３】
0005770026.tif 000014
【図１４】
0005770026.tif 000015
【図１５】
0005770026.tif 000016
【図１６】
0005770026.tif 000017
【図１７】
0005770026.tif 000018
【図１８】
0005770026.tif 000019
【図１９】
0005770026.tif 000020