デバイスに固有な値であってランダムなビットにエラーを含む初期ユニークコードを生成するユニークコード生成部と、前記初期ユニークコードのエラーを訂正して、中間ユニークコードを生成する第1のエラー訂正部と、前記中間ユニークコードのエラーを訂正して、第1の確定ユニークコードを生成する第2のエラー訂正部と、外部装置が前記中間ユニークコードに基づき生成した鍵情報を用いて秘匿情報を暗号化した送信データを前記第1の確定ユニークコードを用いて復号して秘匿情報を生成する復号部と、を有する半導体装置。前記第1のエラー訂正部は、前記初期ユニークコードを構成するビットのいずれをマスクするかを指定するビットマスクデータを前記外部装置から受信し、前記ビットマスクデータを利用して前記中間ユニークコードを生成し、前記第2のエラー訂正部は、予め内部に保持されるECCコードを利用して前記第1の確定ユニークコードを生成する請求項1に記載の半導体装置。前記第1のエラー訂正部は、前記外部装置からECCコードを受信し、前記ECCコードを利用して前記中間ユニークコードを生成し、前記第2のエラー訂正部は、予め内部に保持される前記初期ユニークコードを構成するビットのいずれをマスクするかを指定するビットマスクデータを利用して前記第1の確定ユニークコードを生成する請求項1に記載の半導体装置。前記外部装置において生成される前記鍵情報は、前記外部装置において行われる前記第2のエラー訂正部と同じ処理により生成される第2の確定ユニークコードである請求項1乃至3のいずれか1項に記載の半導体装置。デバイス毎に予め固定値として設定される識別情報を出力する識別情報保持部をさらに有し、前記第1のエラー訂正部におけるエラー訂正処理に利用されるデータは、前記識別情報に対応付けられたデータである請求項1乃至4のいずれか1項に記載の半導体装置。前記第1のエラー訂正部におけるエラー訂正処理に利用されるデータを暗号化された状態で受信し、受信したデータに対して復号処理を施して前記第1のエラー訂正部に出力する訂正データ復号部を有する請求項5に記載の半導体装置。前記初期ユニークコードは、半導体装置の素子の製造ばらつきに起因して不確定になるビットを含むPUFPhysicallyUnclonableFunctionデータである請求項1乃至6のいずれか1項に記載の半導体装置。前記秘匿情報を暗号鍵として利用して暗号通信を行う暗号部を有する請求項1乃至7のいずれか1項に記載の半導体装置。前記秘匿情報は、デバイスに固有な値であってランダムなビットにエラーを含むユニークコードのエラーを訂正する固有訂正データと、エラー訂正後の前記初期ユニークコードから暗号鍵を生成する演算式情報と、が含まれ、前記秘匿情報と前記ユニークコードとに基づき前記暗号鍵を生成する鍵生成部と、前記鍵生成部で生成された前記暗号鍵を利用して暗号通信を行う暗号部と、を有する請求項1乃至7のいずれか1項に記載の半導体装置。秘匿情報を利用する半導体装置に前記秘匿情報を書き込むデータ書き込み方法であって、前記半導体装置に固有な値であってランダムなビットにエラーを含む初期ユニークコードに対して第1のエラー訂正処理を施して前記初期ユニークコードのエラーを訂正して中間ユニークコード生成し、前記中間ユニークコードに対して第2のエラー訂正処理を施して第1の確定ユニークコードを生成し、前記半導体装置とは異なる外部装置において前記中間ユニークコードに対して前記第2のエラー訂正処理と同じエラー訂正処理を施して第2の確定ユニークコードを生成し、前記外部装置内で前記第2の確定ユニークコードを用いて前記秘匿情報を暗号化した前記送信データを前記半導体装置に送信し、前記第1の確定ユニークコードを用いて前記送信データを復号して前記秘匿情報を取得するデータの書き込み方法。前記第1のエラー訂正処理では、前記初期ユニークコードを構成するビットのいずれをマスクするかを指定するビットマスクデータを前記外部装置から受信し、前記ビットマスクデータを利用して前記中間ユニークコードを生成し、前記第2のエラー訂正処理では、予め自装置に保持されるECCコードを利用して前記第1の確定ユニークコードを生成する請求項10に記載のデータの書き込み方法。前記第1のエラー訂正処理では、前記外部装置からECCコードを受信し、前記ECCコードを利用して前記中間ユニークコードを生成し、前記第2のエラー訂正処理は、予め自装置に保持される前記初期ユニークコードを構成するビットのいずれをマスクするかを指定するビットマスクデータを利用して前記第1の確定ユニークコードを生成する請求項10に記載のデータの書き込み方法。前記半導体装置は、デバイス毎に予め固定値として設定される識別情報を出力し、前記外部装置は、前記第1のエラー訂正処理で利用される第1の訂正データと前記識別情報とを関連付けた情報を保持し、前記外部装置は、前記半導体装置から前記識別情報を読み出し、前記識別情報と関連付けられた前記第1の訂正データを前記半導体装置に送信する請求項10乃至12のいずれか1項に記載のデータ書き込み方法。前記外部装置は、前記第1の訂正データを予め暗号化した状態で保持し、前記半導体装置は、暗号化された前記第1の訂正データを復号化したデータを適用して前記初期ユニークコードから前記中間ユニークコードを生成する請求項13に記載のデータ書き込み方法。前記外部装置は、前記第2の確定ユニークコードの正当性を判定し、前記判定の結果が前記第2の確定ユニークコードが不正なものと判定された場合は、前記送信データの前記半導体装置への転送を停止する請求項10乃至14のいずれか1項に記載のデータ書き込み方法。前記第2の確定ユニークコードの正当性の判定は、CRCCyclicRedundancyCheckコードを用いたCRC処理により行われる請求項15に記載のデータ書き込み方法。前記外部装置は、前記半導体装置に直接接続される書き込み機と、前記書き込み機と通信経路を介して接続されるサーバーとを有し、前記サーバーは、前記書き込み機を介して前記中間ユニークコードを受信し、前記中間ユニークコードに対して前記第2のエラー訂正処理と同じエラー訂正処理を施して第2の確定ユニークコードを生成し、前記外部装置内で前記第2の確定ユニークコードを用いて前記秘匿情報を暗号化した前記送信データを生成し、前記書き込み機を介して前記送信データを前記半導体装置に送信する請求項10乃至16のいずれか1項に記載のデータ書き込み方法。前記外部装置は、前記書き込み機と前記サーバーとにおいて、前記第1のエラー訂正処理で利用される第1の訂正データと、前記第2の確定ユニークコードの生成に利用される第2の訂正データとを分散して保持する請求項17に記載のデータ書き込み方法。前記初期ユニークコードは、半導体装置の素子の製造ばらつきに起因して不確定になるビットを含むPUFPhysicallyUnclonableFunctionデータである請求項10乃至18のいずれか1項に記載のデータの書き込み方法。前記半導体装置は、取得した前記秘匿情報を暗号鍵として用いて暗号通信を行う請求項10乃至19のいずれか1項に記載のデータ書き込み方法。前記半導体装置は、取得した前記秘匿情報を格納部に格納する請求項10乃至19のいずれか1項に記載のデータ書き込み方法。例えば、PUFを用いて鍵情報等の秘匿情報を生成する場合、秘匿情報を生成するために、半導体装置よりPUFを読み出し、鍵情報を暗号化する。この秘匿すべき鍵情報を暗号化したデータを、半導体装置内でPUFを用いて復号する事によって、半導体装置内に鍵情報を安全に格納することが可能となる。しかしその場合でも、半導体装置を搭載したシステムをメンテナンスする者が攻撃者になる可能性がある。このような場合において、特許文献1~4に記載される技術を、半導体装置間の暗号通信に適用しても、メンテナンス者がサイドチャネルアタックなどによって半導体装置からPUFの値とPUFを用いて生成された暗号データとを大量に収集した場合、秘匿情報を解析されてしまう可能性がある。つまり、特許文献1~4に記載される技術を適用しても半導体装置のセキュリティを十分に向上させることができない問題がある。本発明にかかる半導体装置及びデータ書き込み方法では、半導体装置が初期ユニークコードのエラーを訂正した中間ユニークコードを生成し、さらに中間ユニークコードのエラーを訂正した第1の確定ユニークコードを生成し、外部装置から送信された送信データを第1の確定ユニークコードを用いて復号して秘匿情報を取得する。また、外部装置は、半導体装置において生成された中間ユニークコードを受信し、当該中間ユニークコードに基づき生成した鍵情報を用いて秘匿情報を暗号化して送信データを生成する。以上の動作により、本発明にかかる半導体装置は、送信データを暗号化する鍵情報自体を送受信することなく、暗号化された秘匿情報を得ることができ、外部装置との間でセキュリティの高い通信を可能とするものである。また、外部装置は、半導体装置において初期ユニークコードのエラー訂正処理に用いられる第1の訂正データを有するが、この第1の訂正データは、暗号化された状態で外部装置内に格納される。そして、暗号化された第1の訂正データを受信する半導体装置は、受信した暗号化された第1の訂正データを復号し、復号化後の第1の訂正データを用いて中間ユニークコードを生成する。以上の動作により、半導体装置は、さらにセキュリティの高い通信を可能とする。また、外部装置は、複数の装置例えば、書き込み機及びサーバを有し、半導体装置に直接接続されない装置例えば、サーバにおいて送信データを生成し、半導体装置に直接接続される装置例えば、書き込み機を介して送信データを半導体装置に書き込む。これにより、外部装置に関するセキュリティを向上させることができる。さらに、外部装置は、半導体装置に送信する第1の訂正データと、鍵情報の生成に利用される第2の訂正データと、を複数の装置に分散して配置する。これにより、外部装置に関するセキュリティをさらに向上させることができる。つまり、本発明にかかる半導体装置及び半導体装置へのデータ書き込み方法によれば、半導体装置のセキュリティを向上させることができる。実施の形態1以下、図面を参照して本発明の実施の形態について説明する。実施の形態1にかかる半導体装置10及び外部装置例えば、書き込み機20のブロック図を示す。図1に示すように、実施の形態1では、半導体装置10と外部装置20とにより1つのデータ書き込みシステム1が構成される。半導体装置10は、当該データ書き込みシステム1を利用して秘匿情報が書き込まれ、当該秘匿情報を利用して暗号通信を行う。図1に示すように、半導体装置10は、ユニークコード生成部12、第1のエラー訂正部例えば、ビットマスク回路13、第2のエラー訂正部例えば、ECC回路15、復号部例えば、ハッシュ関数復号部16を有する。また、半導体装置10は、これら回路に付随するものとして識別情報保持部11、格納部14、暗号部17を有する。識別情報保持部11は、デバイス毎に予め固定値として設定される識別情報IDを保持する。そして、識別情報保持部11は、識別情報IDを書き込み機20に対して出力する。この識別情報IDは、例えば、製品のロット番号、製造管理番号、製品ID等の値であって、エラーを含まない値である。ユニークコード生成部12は、デバイスに固有な値であってランダムなビットにエラーを含む初期ユニークコードUCpを生成する。ユニークコード生成部12は、例えば、半導体装置10が備えるメモリ素子例えば、SRAMStaticRandomAccessMemoryの起動時の初期値を用いて初期ユニークコードUCpを生成する。初期ユニークコードUCpは、同じ設計の回路から生成される値であるが、実際に半導体装置として製造される回路は個々にばらつきを有するという性質を利用して生成されるコードである。このような技術は、PUFPhysicalUnclonableFunctionと呼ばれ、耐タンパチップのような特殊なハードウェアを必要とせず、複製が困難なデータであるため、データの高い秘匿性を実現することができる。ビットマスク回路13は、初期ユニークコードUCpのエラーを訂正して、中間ユニークコードを生成する。より具体的には、ビットマスク回路13は、外部例えば、書き込み機20から得た第1の訂正データ例えば、ビットマスクデータBMにより初期ユニークコードUCpのエラーを訂正して、中間ユニークコードUCbを生成する。実施の形態1では、この中間ユニークコードUCbは、ECC回路15に出力されると共に、書き込み機20に出力される。ビットマスク回路13において行われるビットマスク処理は、第1のエラー訂正処理に相当する。ECC回路15は、中間ユニークコードUCbのエラーを訂正して、第1の確定ユニークコードUCmを生成する。より具体的には、ECC回路15は、中間ユニークコードUCbに予め内部に保持している第2の訂正データ例えば、ECCコードを適用して中間ユニークコードUCbのエラーを訂正して、第1の確定ユニークコードUCmを生成する。ECC回路15において行われるECCコードによるエラー訂正処理は、第2のエラー訂正処理に相当する。格納部14は、半導体装置10のECC回路15で利用されるECCコードを格納する。ECCコードは半導体装置製造時に予め書き込まれている値である。ハッシュ関数復号部16は、第1の確定ユニークコードUCmを用いて外部から受信した送信データHF2を復号して、秘匿情報例えば、ハッシュ関数HF1を復号する。暗号部17は、送信対象情報を暗号化する。より具体的には、暗号部17は、ハッシュ関数HF1を暗号鍵として利用して暗号通信を行う。より具体的には、暗号部17は、送信対象情報をハッシュ関数HF1を用いて暗号化して暗号化済み情報を生成し、当該暗号化済み情報を外部に出力する。図1に示すように、書き込み機20は、格納部21、22、25、第3のエラー訂正部例えば、ECC回路23、正当性判定回路例えば、CRC回路24、暗号処理部例えば、ハッシュ関数暗号部26を有する。格納部21は、識別情報IDと第1の訂正データ例えば、ビットマスクデータBMとを関連付けた情報例えば、識別情報-マスクビット対応表を保持する。そして、格納部21は、半導体装置10から識別情報IDを読み出して、識別情報-マスクビット対応表を参照して識別情報IDに対応するビットマスクデータBMを選択する。そして、格納部21は、選択したビットマスクデータBMを半導体装置10に送信する。なお、格納部21は、識別情報IDがなければビットマスクデータBMを半導体装置10に送信できない構成を有するものとする。なお、ビットマスクデータBMは、初期ユニークコードを構成するビットのいずれをマスクするかを指定するデータである。格納部22は、ECCコードと、CRCCyclicRedundancyCheckコードテーブルと、を格納する。ECCコードは、半導体装置10の格納部14に格納されたECCコードと同じものである。また、CRCコードテーブルは、半導体装置10で生成される第1の確定ユニークコードUCmに対応して予め生成されるものである。ECC回路23は、格納部22からECCコードを読み出し、半導体装置10から送信される中間ユニークコードUCbに対して読み出したECCコードによるエラー訂正処理を行う。つまり、ECC回路23では、半導体装置10のECC回路15と同じエラー訂正処理を行う。これにより、ECC回路23は、中間ユニークコードUCbのエラーを訂正した第2の確定ユニークコードUCwを生成する。この第2の確定ユニークコードUCwは、送信対象の秘匿情報の暗号化に用いられる鍵情報として利用される。CRC回路24は、格納部22のCRCコードテーブルから第1の確定ユニークコードUCmに対応したCRCコードを読み出す。そして、CRC回路24は、CRCコードを用いて第2の確定ユニークコードUCwのエラーチェックを行う。そして、CRC回路24は、第2の確定ユニークコードUCwにエラーが認められた場合には第2の確定ユニークコードUCwが不正なものであると判定し、第2の確定ユニークコードUCwにエラーが検出されなければ第2の確定ユニークコードUCwが正当なものであると判定する。そして、CRC回路24は、第2の確定ユニークコードUCwが正当なものである場合にのみ後段の回路に第2の確定ユニークコードUCwを出力する。一方、CRC回路24は、第2の確定ユニークコードUCwが不正なものである場合には書き込み機20の動作を停止させる処理を行う。CRC回路24は、第2の確定ユニークコードUCwが不正なものであると判定された場合には、正当なものであると判定されるまで、第2の確定ユニークコードUCwのエラーチェックを所定の回数を限度として繰り返すようにしても良い。格納部25には、秘匿情報であるハッシュ関数HF1が格納される。ハッシュ関数暗号部26は、格納部25からハッシュ関数HF1を読み出し、第2の確定ユニークコードUCwによりハッシュ関数HF1を暗号化して送信データHF2を生成する。また、ハッシュ関数暗号部26は、送信データHF2を半導体装置10に送信する。ここで、実施の形態1にかかる半導体装置及び外部装置において生成される確定ユニークコードについて説明する。実施の形態1にかかる半導体装置及び外部装置で生成される確定ユニークコードの一例を示す表を図2に示す。まず、半導体装置10では、ユニークコード生成部12から初期ユニークコードUCpを生成する図2の1。次に、ビットマスク回路13は、ビットマスクデータBMを用いて、初期ユニークコードUCpに対して所定のビットをマスクするビットマスク処理を施す。ここで、ビットマスクデータBMは、初期ユニークコードを構成するビットのいずれをマスクするかを指定するデータである。いずれのビットをマスクするかは、初期ユニークコードUCpのビットのエラー率により決まる。本実施の形態では、ビットマスクデータBMにおいてマスク対象に指定されるビットは、エラー率の高い初期ユニークコードUCpのビットが設定される。図2に示す例では、初期ユニークコードUCpの1ビット目と6ビット目のビットのエラー率が高いため、ビットマスクデータBMが0となっている。これ以外のビットは、エラー率が低いビット又は値が安定しているビットであるため、ビットマスクデータBMが1となっている。つまり、マスクが必要なビットのビットマスクデータBMは0となり、マスクが不要なビットのマスクデータは1となる。そして、ビットマスクデータBMを用いて初期ユニークコードUCpをマスクすることで、初期ユニークコードUCpの1ビット目と6ビット目のビットを削除したマスク処理後のデータ例えば、中間ユニークコードUCbを得ることができるマスク処理により削除したビットはXで示している。その後、マスク処理により生成された中間ユニークコードUCbは左詰めされる。ここで言うエラー率とは、初期ユニークコードUCpを生成する度に、ビットのデータが0、または1にある一定の高確率で変動する値であり、この初期ユニークコードUCpには、エラー率の低いビットも含まれている。次に、ECCコードエラー訂正コードを用いて、中間ユニークコードUCbのエラー訂正が行われる。図2に示す例では、ECCコードを用いたエラー訂正処理以下、ECC処理と称すにより、2ビット目のビットが0から1に訂正されている。ECC処理により生成されたユニークコードが第1の確定ユニークコードUCm又は第2の確定ユニークコードUCwとなる。続いて、実施の形態1にかかるデータ書き込みシステム1における半導体装置10及び書き込み機20の動作について説明する。図3に実施の形態1にかかる半導体装置10及び書き込み機20の動作を示すシーケンス図を示す。図3に示すように、実施の形態1にかかるデータ書き込みシステム1では、まず、書き込み機20が半導体装置10から識別情報IDを取得するステップS1。そして、書き込み機20は、受信した識別情報IDに対応するビットマスクデータBMを格納部21内のデータから選択するステップS2。続いて、書き込み機20は、選択したビットマスクデータBMを半導体装置10に送信するステップS3。続いて、半導体装置10では、書き込み機20から受信したビットマスクデータBMを用いて初期ユニークコードUCpにビットマスク処理を施して中間ユニークコードUCbを生成するステップS4。続いて、半導体装置10は、中間ユニークコードUCbを半導体装置内のECC回路15及び書き込み機20に送信するステップS6。半導体装置10では、ECC回路15が中間ユニークコードUCbに対して格納部14に格納されているECCコードを適用して、中間ユニークコードUCbのエラー訂正処理を行う。そして、ECC回路15は、第1の確定ユニークコードUCmを生成するステップS5。一方、書き込み機20は、ECC回路23が中間ユニークコードUCbに対して格納部22に格納されているECCコードを適用して、中間ユニークコードUCbのエラー訂正処理を行う。そして、ECC回路23は、第2の確定ユニークコードUCwを生成するステップS7。続いて、書き込み機20は、CRC回路24が格納部22に格納されているCRCコードを用いて第2の確定ユニークコードUCwの正当性を検証するステップS8。ステップS8において第2の確定ユニークコードUCwが正当なものであると判定された場合、ハッシュ関数暗号部26は、CRC回路24の第2の確定ユニークコードUCwを適用して、第2の確定ユニークコードUCwによりハッシュ関数HF1を暗号化し、送信データHF2を生成するステップS9。そして、書き込み機20は、生成した送信データHF2を半導体装置10に送信するステップS10。なお、ステップS8において第2の確定ユニークコードUCwが不正なものであると判定された場合、書き込み機20は、処理を停止する。続いて、半導体装置10は、受信した送信データHF2をステップS5で生成された第1の確定ユニークコードUCmで復号してハッシュ関数HF1を生成するステップS11。そして、半導体装置10は、ハッシュ関数HF1を用いて他の半導体装置と暗号通信を開始するステップS12。実施の形態1にかかる半導体装置では、暗号化した秘匿情報例えば、ハッシュ関数HF1を書き込み機20から取得し、半導体装置内で生成される第1の確定ユニークコードUCmで送信データHF2を復号することで利用可能なハッシュ関数HF1を得ることができる。このように、書き込み機20から半導体装置10に送信する送信データとして暗号化した情報を適用することで、秘匿情報を高いセキュリティを維持して秘匿情報を半導体装置10に書き込みすることができる。しかし、従来の一般的な暗号通信を半導体装置10への秘匿情報の書き込みに適用したのみでは、セキュリティを維持できない問題がある。暗号通信の一般的技術として、秘匿情報を送信する送信側装置に公開鍵を備え、秘匿情報を受信する受信側装置に秘密鍵を備える公開鍵方式と、通信を行う装置間で共通の鍵を利用する共通鍵方式とがある。そこで、暗号方式として公開鍵方式を採用した場合、受信側装置となる半導体装置に秘密鍵を予め格納し、送信側装置となる書き込み機に公開鍵を予め格納する必要がある。そして、公開鍵方式を採用した場合、半導体装置と書き込み機との間で鍵情報の授受を行う必要がないため、半導体装置と書き込み機との間の通信における鍵情報の漏洩を防止できるメリットがある。しかし、半導体装置は、書き込み機の流通量に対して遙かに大量に流通するためこの秘密鍵の管理が問題になる。また、暗号方式として共通鍵方式を採用した場合、半導体装置と書き込み機との両方に共通鍵を予め格納しておくことで、半導体装置と書き込み機との間の通信における鍵情報の漏洩を防止できるメリットがある。しかし、共通鍵方式を採用した場合、共通鍵の漏洩を防止する対策を半導体装置と書き込み機との両方で行わなければならない問題がある。また、公開鍵方式を採用した場合、一般的な鍵情報の漏洩防止対策に加え、書き込み機の盗難対策等を行う必要もある。特に、半導体装置10が自動車に搭載される車載用半導体装置であった場合、上記のようなセキュリティ対策を万全に維持することは難しい。自動車は、一般的にメンテナンスが必要であり、当該メンテナンス過程では、メンテナンス者が書き込み機の操作をする場合があり、メンテナンス者が攻撃者となることを完全に防ぐことは難しいためである。また、書き込み機は、自動車メーカーの工場のみならず、カーディーラー等に配置されるため、これら全ての設定箇所で完全に書き込み機の盗難を防ぐことは難しいためである。ここで、一般的な半導体装置を解析して不正にデータを取得する方法としては、以下のような方法がある。1半導体装置をFIBFocusedIonBeamを用いて加工し、プローブを用いて半導体装置を物理的に解析する方法。2半導体装置にレーザなどの電磁波を照射したり、電源端子にノイズを挿入したりすることでCPUを暴走させて不正にデータを取得するフォルトツリー解析。3半導体装置の消費電流量を観測し、鍵データを解析するリーク解析。4半導体装置の信号端子に直接接続し、信号情報を読み出す方法。このような不正な解析を回避するために、高いセキュリティレベルが必要な分野では、セキュリティレベルの高いマイコン以下、セキュアマイコンというが用いられている。このセキュアマイコンには、配線領域へのシールド、光や信号ノイズを検出する機能、信号に乱数信号を組み合わせて電流をかく乱する機能などが実装されている。このように、セキュアマイコンを用いることで第三者が不正に半導体装置を解析することを防止することができる。しかしながら、セキュアマイコンを用いた場合は、不正解析を防止できる反面、その耐タンパ性により半導体装置メーカー等が不良解析や故障解析を実施することができなくなるという問題があった。特に、自動車に用いられる車載用のマイコンECU等では、高信頼性が必要であるため、半導体装置の不良解析や故障解析が必要となる。このような理由から、車載用のマイコンにはセキュアマイコンよりもセキュリティレベルが低い汎用のマイコン以下、汎用マイコンというが広く用いられてきた。従来、車載用のマイコンでは、汎用マイコンを使用しつつ、半導体装置のセキュリティレベルを向上させることが可能な暗号通信システムが必要とされていた。しかし、実施の形態1にかかる半導体装置及び半導体装置へのデータ書き込み方法によれば、上記課題を解決することができる。実施の形態1にかかる半導体装置10では、初期ユニークコードUCpに対して第1のエラー訂正処理例えば、ビットマスク処理を施して中間ユニークコードUCbを生成する。そして、実施の形態1にかかる半導体装置10は、この中間ユニークコードUCbを半導体装置10のECC回路15に送信すると共に、書き込み機20に送信する。半導体装置10では、ECC回路15において中間ユニークコードUCbに第2のエラー訂正処理例えば、ECCコードによるエラー訂正処理を施して第1の確定ユニークコードUCmを生成する。また、書き込み機20は、ECC回路23において中間ユニークコードUCbに第2のエラー訂正処理と同じエラー訂正処理を施して第2の確定ユニークコードUCwを生成し、これを鍵情報としてハッシュ関数HF1を暗号化して送信データHF2を生成する。そして、半導体装置10では、送信データHF2を第1の確定ユニークコードUCmを用いて復号してハッシュ関数HF1を生成する。つまり、実施の形態1にかかる半導体装置10は、ハッシュ関数HF1を書き込み機20から得るために、書き込み機20との通信において鍵情報及びハッシュ関数HF1を直接送受信する必要がない。このことから、実施の形態1にかかる半導体装置10は、秘匿情報であるハッシュ関数HF1及びハッシュ関数HF1の暗号化処理復号化処理に利用する鍵情報が漏洩することを防止し、セキュリティを高めることができる。実施の形態1にかかる半導体装置10では、ハッシュ関数HF1の復号に用いる鍵情報を初期ユニークコードUCp例えば、PUFから生成する。この初期ユニークコードUCpから鍵情報を生成する場合、実施の形態1にかかる半導体装置10では、第1の訂正データ例えば、ビットマスクデータBM及び第2の訂正データ例えば、ECCデータを利用する必要がある。しかし、実施の形態1にかかる半導体装置では、ビットマスクデータBMが半導体装置10の外部から与えられる。そのため、実施の形態1にかかる半導体装置では、解析等の不正行為によりECCコードと初期ユニークコードUCpが判明したとしても、第1の確定ユニークコードUCmを特定することができない。これにより、実施の形態1にかかる半導体装置10では、不正アクセスによる鍵情報の漏洩を防止して、高いセキュリティを実現することができる。また、実施の形態1にかかるデータ書き込みシステム1では、半導体装置10の認識情報IDに対応するビットマスクデータBMを書き込み機20が有していない場合、半導体装置10には、ビットマスクデータBMが送信されない。このようなことから、偽の書き込み機により、半導体装置10に悪意を有する偽のハッシュ関数を送信しても、半導体装置10において、本来の第1の確定ユニークコードUCmとは異なる偽の第1の確定ユニークコードしか生成されず、半導体装置10は、ハッシュ関数を正常に生成することができない。さらに、偽の書き込み機であった場合、ECCコードも本来のECCコードとは異なるものであるため、書き込み機側で生成される第2の確定ユニークコードUCwと半導体装置側で生成される第1の確定ユニークコードUCmとが一致しない。このようなことからも、偽の書き込み機によって生成された送信データは、半導体装置側で正常に復号処理を行うことができない。このようなことから、実施の形態1にかかる半導体装置10によれば、偽の書き込み機からの悪意を有するハッシュ関数の書き込みを防止することができる。また、実施の形態1にかかる半導体装置10では、不正アクセスにより、半導体装置10内の識別情報ID、初期ユニークコードUCp、及び、ECCコード等の格納データの漏洩があった場合であっても、漏洩したデータだけでは秘匿情報であるハッシュ関数HF1、或いは、ハッシュ関数HF1の復号処理に用いられる第1の確定ユニークコードUCmを認識することができない。このようなことから、実施の形態1にかかる半導体装置10は、セキュアマイコン等の高価な半導体装置を用いることなく、汎用マイコン等により実現できる。さらに、汎用マイコンにより半導体装置10を実現できることから、正規のメンテナンス者であれば、半導体装置10の不具合を容易に解析することができる。また、実施の形態1にかかるデータ書き込みシステム1では、半導体装置10と書き込み機20との通信において、送受信するデータは、半導体装置10の識別情報ID、第1の確定ユニークコードUCmの生成に必要な複数の訂正データのうちの1つの訂正データ、エラー訂正処理が行われる前の第1の確定ユニークコードUCm即ち、中間ユニークコードUCb、及び、暗号化されたハッシュ関数HF1即ち、送信データHF2である。つまり、実施の形態1にかかるデータ書き込みシステム1では、半導体装置10と書き込み機20との通信において、秘匿情報であるハッシュ関数HF1及び復号に用いる第1の確定ユニークコードUCmを、直接送受信しない。このようなことから、実施の形態1にかかるデータ書き込みシステム1では、半導体装置10と書き込み機20との間の通信経路に対して信号の傍受等が行われた場合であっても、秘匿情報又は秘匿情報の再生に直接用いられるデータが漏洩することがない。このようなことから、実施の形態1にかかるデータ書き込みシステム1では、半導体装置10と書き込み機20との間の通信経路に対する高いセキュリティを実現することができる。また、実施の形態1にかかる半導体装置10及び書き込み機20では、第1の確定ユニークコードUCmと第2の確定ユニークコードUCwとの比較処理により半導体装置10と書き込み機20との間の認証を行うことができる。つまり、実施の形態1にかかる半導体装置10及び書き込み機20では、RSA暗号のような複雑な計算を行うことなく認証処理を行うことができる。このようなことから、実施の形態1にかかる半導体装置10及び書き込み機20によれば、簡単な計算による処理だけでデータ書き込みシステム1の高いセキュリティを実現することができる。また、実施の形態1にかかるデータ書き込みシステム1では、書き込み機20が盗難された場合に、書き込み機20に格納されているビットマスクデータBM及びECCコードが漏洩するおそれがある。しかし、これらのデータのみで第1の確定ユニークコードUCmを導き出すことは極めて困難である。このようなことから、実施の形態1にかかるデータ書き込みシステム1では、書き込み機20に対して高度な盗難対策を施す必要がないという効果を奏する。なお、盗難対策を考えた場合、書き込み機20に格納されている秘匿情報例えば、ハッシュ関数HF1は、利用時に入力する、或いは、情報漏洩防止対策がなされた状態で保持していることが望ましい。また、実施の形態1にかかる書き込み機20では、偽の半導体装置が接続された場合は、偽の半導体装置から書き込み機20に送信される、エラー訂正処理が行われる前の第1の確定ユニークコードUCm即ち、中間ユニークコードUCbが異なるため、書き込み機内部のECC回路23で生成される、第2の確定ユニークコードUCwが正しく生成できない。そのため、CRC回路24によるによる正当性判定処理により、当該偽の半導体装置の判別を行うことができる。つまり、実施の形態1にかかる書き込み機20によれば、半導体装置10の模造品の拡散を防止することができる。また、通常、半導体装置10が利用する秘匿情報は、半導体装置10の利用者にとっての機密事項である。このような機密事項を半導体装置に高いセキュリティを維持しながら格納するためには、利用者が予め半導体メーカーに秘匿情報を渡す必要がある。そのため、利用者の観点からは、秘匿情報についての漏洩防止管理を十分に行うことを確証できない問題がある。しかし、実施の形態1にかかる半導体装置10及び書き込み機20を利用することで、利用者が書き込み機20を利用して、利用者自身が直接半導体装置10に秘匿情報を書き込むことができる。つまり、実施の形態1にかかる半導体装置10及び書き込み機20を利用することで、利用者における秘匿情報の漏洩防止管理の確実性を向上させることができる。一方、半導体メーカーは、半導体装置10に対応するビットマスクデータBM及びECCコードを利用者に提供する必要があるが、これらのデータだけでは、第1の確定ユニークコードUCmを導き出すことは困難である。つまり、半導体メーカーにおいても、ビットマスクデータBM及びECCコードに対する高度な漏洩対策は必要がなくなる。なお、上記で説明したCRC回路は、処理対象データのエラー検出又は誤訂正を防止する処理が実行できる回路例えば、パリティチェック回路により置き換えることも可能である。また、ECC回路は、処理対象データのエラー訂正ができる他の構成の回路により置き換えることも可能である。実施の形態2実施の形態2にかかる半導体装置30及び外部装置例えば、書き込み機40のブロック図を図4に示す。図4に示すように、実施の形態2では、データ書き込みシステム2が半導体装置30及び書き込み機40により構成される。なお、実施の形態2の説明において、実施の形態1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。図4に示すように、半導体装置30は、実施の形態1にかかる半導体装置10における第1のデータ訂正部としてECC回路31を備え、第2のデータ訂正部としてビットマスク回路33を有する。また、半導体装置30では、第2のデータ訂正部で利用される第2の訂正データとしてビットマスクデータBMが利用される。図4では、ビットマスクデータBMが格納される領域として格納部32を示した。なお、図4では、ECC回路31が生成する中間ユニークコードにUCeの符号を付した。図4に示すように、書き込み機40は、半導体装置10から半導体装置30への変更に伴い、第2の確定ユニークコードUCwを生成するエラー訂正部がECC回路23からビットマスク回路43に変更されている。そのため、書き込み機40は、格納部22に代えてビットマスクデータとCRCコードテーブルとを格納する領域として格納部42を有する。また、書き込み機40では、半導体装置の第1のエラー訂正部がビットマスク回路13からECC回路31に変更されたと伴い、識別情報IDと対応付けられるエラー訂正データがECCコードに変更されている。そのため、書き込み機40には、識別-マスクビット対応表に代えて識別情報-ECCコード対応表が格納される。この識別情報-ECCコード対応表を格納する領域として、図4では格納部41を示した。この格納部41は、識別情報IDを受信した場合、識別情報IDに対応するECCコードを出力する。このECCコードは、初期ユニークコードUCpに対応して予め生成されるコードである。このECCコードを用いて他の半導体装置で生成された中間ユニークコードのエラー訂正を行っても、生成される確定ユニークコードは、半導体装置10で生成される第1の確定ユニークコードUCmとは異なる値となる。続いて、実施の形態2にかかる半導体装置30及び書き込み機40の動作について説明する。図5に実施の形態2にかかる半導体装置30及び書き込み機40の動作を示すシーケンス図を示す。図5に示すように、実施の形態2にかかるデータ書き込みシステム2では、まず、書き込み機40が半導体装置30から識別情報IDを取得するステップS21。そして、書き込み機40は、受信した識別情報IDに対応するECCコードを格納部41内のデータから選択するステップS22。続いて、書き込み機40は、選択したECCコードを半導体装置30に送信するステップS23。続いて、半導体装置30では、書き込み機40から受信したECCコードを用いて初期ユニークコードUCpにエラー訂正処理を施して中間ユニークコードUCeを生成するステップS24。続いて、半導体装置30は、中間ユニークコードUCeを半導体装置内のビットマスク回路33及び書き込み機40に送信するステップS26。半導体装置30では、ビットマスク回路33が中間ユニークコードUCeに対して格納部32に格納されているビットマスクデータBMを適用して、中間ユニークコードUCeのエラー訂正処理を行う。そして、ビットマスク回路33は、第1の確定ユニークコードUCmを生成するステップS25。一方、書き込み機40は、ビットマスク回路43が中間ユニークコードUCeに対して格納部42に格納されているビットマスクデータBMを適用して、中間ユニークコードUCeのエラー訂正処理を行う。そして、ビットマスク回路43は、第2の確定ユニークコードUCwを生成するステップS27。続いて、書き込み機40は、ビットマスク回路43で生成された、第2の確定ユニークコードをCRC回路24に送信し、格納部42に格納されているCRCコードを用いて第2の確定ユニークコードUCwの正当性を検証するステップS28。ステップS28において第2の確定ユニークコードUCwが正当なものであると判定された場合、書き込み機40は、ハッシュ関数暗号部26にて、第2の確定ユニークコードUCwによりハッシュ関数HF1を暗号化して送信データHF2を生成するステップS29。そして、書き込み機40は、生成した送信データHF2を半導体装置30に送信するステップS30。なお、ステップS28において第2の確定ユニークコードUCwが不正なものであると判定された場合、書き込み機40は、処理を停止する。続いて、半導体装置30は、受信した送信データHF2をステップS25で生成された第1の確定ユニークコードUCmで復号してハッシュ関数HF1を生成するステップS31。そして、半導体装置30は、ハッシュ関数HF1を用いて他の半導体装置と暗号通信を開始するステップS32。上記説明より、実施の形態2では、第1のエラー訂正処理として行われる処理と第2のエラー訂正処理として行われる処理とを実施の形態1と逆の順序とした。このように処理の順序を入れ替えた場合であっても、半導体装置30と書き込み機40との間で鍵情報及び秘匿情報を直接送受信することはない。そのため、実施の形態1と同様に、実施の形態2においても鍵情報及び秘匿情報が漏洩することを防止し、高いセキュリティを実現することができる。また、半導体装置30と書き込み機40との間で送受信されるデータの基本的な性質は、実施の形態1と変わらない。そのため、実施の形態2においても実施の形態1と同様に、半導体装置の模造品対策、書き込み機の盗難対策、秘匿情報の漏洩対策等の観点におけるセキュリティを向上させることができる。実施の形態3実施の形態3にかかるにかかる半導体装置50及び外部装置例えば、書き込み機60のブロック図を図6に示す。図6に示すように、実施の形態3では、データ書き込みシステム3が半導体装置50及び書き込み機60により構成される。なお、実施の形態3の説明において、実施の形態1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。図6に示すように、実施の形態3では、書き込み機60が識別情報-ビットマスク対応表を暗号化した状態で保持する。図6では、暗号化された識別情報-ビットマスク対応表を有する領域を格納部61で示した。格納部61は、識別情報IDを受信した場合、識別情報IDに対応する暗号化処理がなされたビットマスクデータBMEを出力する。ビットマスクデータは、例えば、共通鍵方式で暗号化処理がなされたものである。また、ビットマスクデータの暗号化処理は、格納部61に格納される前に行われる。これは、書き込み機60に共通鍵CKの情報を保持しないことで、ビットマスクデータの秘匿性を高めるためである。図6に示すように、実施の形態3にかかる半導体装置50は、実施の形態1にかかる半導体装置10にビットマスク復号部51を追加したものである。ビットマスク復号部51は、ビットマスクデータの暗号化に利用された共通鍵CKの情報を保持する。そして、ビットマスク復号部51は、暗号化済みビットマスクデータBMEを共通鍵CKを用いて復号し、暗号化されていないビットマスクデータBMを生成し、ビットマスク回路13に送信する。実施の形態3にかかるデータ書き込みシステム3の動作は、実施の形態1にかかるデータ書き込みシステム1の動作にビットマスクデータの復号処理が加わるのみであるため、ここでは説明を省略する。上記説明より、実施の形態3にかかる書き込み機60は、半導体装置50の第1のエラー訂正処理で利用される訂正データを暗号化した状態で保持する。これにより、実施の形態3にかかる書き込み機60は、書き込み機の盗難された場合においても第1の訂正データ例えば、ビットマスクデータの秘匿性を高めることができる。なお、格納部61に格納されるビットマスクデータの復号に用いる鍵を識別情報IDとすることもできる。この場合、半導体装置50のビットマスク復号部51は、不要になる。また、格納部61は、正しく復号できたビットマスクデータを識別情報IDに対応したものであると認識し、復号できたビットマスクデータBMを半導体装置50に送信する構成とする。実施の形態4実施の形態4にかかる半導体装置10及び外部装置のブロック図を図7に示す。図7に示すように、実施の形態4では、外部装置が書き込み機70とサーバー73とで構成される。また、実施の形態4では、データ書き込みシステム4が半導体装置10、書き込み機70、及び、サーバー73で構成される。なお、実施の形態4の説明において、実施の形態1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。実施の形態4では、半導体装置10に書き込む送信データHF2をサーバー73で生成する。また、半導体装置10とサーバー73とは、例えば、公衆ネットワークを介して接続される。書き込み機70は、半導体装置10とサーバー73との間の通信を仲介する。書き込み機70は、データ送受信ユニット71、72を有する。データ送受信ユニット71は、半導体装置10とのインタフェース回路となっており、半導体装置10と送受信可能なプロトコルに基づき動作する。また、データ送受信ユニット71は、データ送受信ユニット72との間で通信を行う。データ送受信ユニット72は、サーバー73と送受信可能なプロトコルに基づき動作を行う。本実施の形態では書き込み機70は、2つのデータ送受信ユニットで構成されているが、一つのデータ送受信ユニットで構成されていても良い。サーバー73は、実施の形態1にかかる書き込み機20が有する機能ブロックの全てを有し、書き込み機20と実質的に同じ動作を行う。このように、中間ユニークコードUCbに基づき秘匿情報を暗号化した送信データHF2を生成する機能は、半導体装置10へのデータの書き込み処理を行う場所に存在する必要はない。実施の形態4にかかるデータ書き込みシステム4では、中間ユニークコードUCbに基づく送信データHF2の生成処理をサーバー73にて行う。このサーバー73は、公衆ネットワーク又は専用線を介して通信できる場所であればどのような場所に設置されてもよい。そのため、サーバー73を半導体装置10の利用者例えば、自動車メーカー直接管理可能な場所に設置し、書き込み機70をメンテナンス工場等に配置することが可能である。このようにすることで、半導体装置10の利用者は、より直接的に秘匿情報を管理することができる。また、書き込み機70が盗難に遭った場合においても、書き込み機70の内部には秘匿とすべき情報が存在しないため、データが漏洩することを防止することができる。これにより、実施の形態4にかかるデータ書き込みシステム4では、他の実施例に比べてセキュリティを高めることができる。実施の形態5実施の形態5にかかる半導体装置10及び外部装置のブロック図を図8に示す。図8に示すように、実施の形態5では、外部装置が書き込み機74とサーバー75とで構成される。また、実施の形態5では、データ書き込みシステム5が半導体装置10、書き込み機74、及び、サーバー75で構成される。図8に示すように、実施の形態5は、実施の形態5は、実施の形態4の変形例を示すものである。そこで、以下の説明では、実施の形態4と実施の形態5との間で異なる点につて特に説明する。実施の形態5にかかるデータ書き込みシステム5では、書き込み機70にビットマスクデータBMが格納される格納部21を配置した書き込み機74を有する。また、実施の形態5にかかるデータ書き込みシステム5では、サーバー73からビットマスクデータBMが格納される格納部21を除いたサーバー75を有する。つまり、実施の形態5は、中間ユニークコードUCbに基づき秘匿情報を暗号化した送信データHF2を生成する実施の形態1にかかる書き込み機20の構成を、書き込み機74とサーバー75とに分散して配置する例を示すものである。このように、実施の形態1にかかる書き込み機20の構成を分散して配置しても、実施の形態5にかかるデータ書き込みシステム5は、実施の形態1にかかるデータ書き込みシステムと同じ処理を行うことが可能である。つまり、実施の形態5にかかるデータ書き込みシステム5は、実施の形態1にかかるデータ書き込みシステム1と同様に、高いセキュリティを実現することができる。また、実施の形態5にかかるデータ書き込みシステム5では、実施の形態4にかかるデータ書き込みシステム4と同様に、サーバーを外部装置として利用している。そのため、実施の形態5においても実施の形態4と同様にセキュリティを高めることができる。実施の形態6実施の形態6にかかる半導体装置80及び外部装置例えば、書き込み機90のブロック図を図9に示す。図9に示すように、実施の形態6にかかるデータ書き込みシステム6は、半導体装置80及び書き込み機90により構成される。なお、実施の形態6の説明において、実施の形態1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。図9に示すように、半導体装置80は、実施の形態1にかかる半導体装置10に書き込み情報記憶部81を追加したものである。また、書き込み機90は、実施の形態1にかかる書き込み機20に書き込み情報生成部91を追加したものである。実施の形態6にかかるデータ書き込みシステム6では、書き込み情報生成部91において送信データHF2と送信データHF2の秘匿性を高めるダミー値Ddとをマージした書き込み情報を生成する。そして、半導体装置80は、書き込み情報記憶部81において書き込み情報生成部91で生成された書き込み情報を保持すると共に、第1の確定ユニークコードUCmを用いて送信データHF2を書き込み情報記憶部81から読み出す。以下では、特に、書き込み情報記憶部81と書き込み情報生成部91について説明する。書き込み情報記憶部81は、ユニークコード対応情報生成部例えば、ダイジェスト生成部82、記憶領域83、メモリコントローラ84を有する。ダイジェスト生成部82は、第1の確定ユニークコードUCmからユニークコード対応情報例えば、ダイジェスト値DImを生成する。実施の形態6では、ユニークコード対応情報生成部としてダイジェスト生成部82を利用したが、ユニークコード対応情報生成部としては、第1の確定ユニークコードUCmから一意的にアドレス値に相当する情報を生成するものであればよく、ダイジェスト生成部以外のアルゴリズムで動作する回路を利用することも可能である。記憶領域83は、ダイジェスト値DImと関連付けられる領域例えば、ダイジェスト値DImをアクセス対象のアドレスとした場合、ダイジェスト値DImで示される領域に秘匿対象情報を暗号化した送信データHF2が格納される。なお、記憶領域83は、フラッシュメモリ等の不揮発性メモリであって、電源を遮断しても格納している情報を保持される記憶装置である。メモリコントローラ84は、ダイジェスト値DImに基づき記憶領域83に対するアクセスを行うためのアドレスを生成し、当該アドレスに対応する領域から情報を読み出す。また、メモリコントローラ84は、書き込み機90から書き込み命令があった場合、当該書き込み命令に従って記憶領域83に情報を書き込む。より具体的には、書き込み情報記憶部81に格納される送信データHF2は、書き込み機90で生成される。そして、書き込み機90は、送信データHF2を書き込む際に、ダミー値Ddと送信データHF2とをマージして書き込み命令を発行する。このとき、書き込み機90は、送信データHF2を格納する領域として第2の確定ユニークコードUCwのダイジェスト値DIwを送信データHF2の書き込みアドレスとして指定する。そして、メモリコントローラ84は、半導体装置80のダイジェスト生成部82が第1の確定ユニークコードUCmから生成するダイジェスト値DImをリードアドレスとして送信データHF2を読み出す。書き込み情報生成部91は、ダイジェスト生成部92、ダミー値発生回路93、セレクタ94、バッファ95を有する。ダイジェスト生成部92は、ダイジェスト生成部82と同じアルゴリズムにより、第2の確定ユニークコードUCwから一意的にダイジェスト値DIwを生成する。ダイジェスト生成部92に入力される第2の確定ユニークコードUCwは、半導体装置80が正規品であればダイジェスト生成部92に入力される第1の確定ユニークコードUCmと同じものである。つまり、ダイジェスト生成部92において生成されるダイジェスト値DIwは、半導体装置80のダイジェスト生成部82で生成されるダイジェスト値DImと同じ値となる。ダミー値発生回路93は、送信データHF2と共に半導体装置80の記憶領域83に書き込まれるダミー値Ddを生成する。ダミー値Ddは、ハッシュ関数HF1とは異なる値を暗号化した偽の暗号化情報である。セレクタ94は、バッファ95に書き込む情報を選択する回路である。バッファ95は、ダミー値Ddと送信データHF2とを一時的に記憶する記憶装置である。バッファ95は、例えば、DRAMDynamicRandomAccessMemory等の不揮発性メモリである。このバッファ95は、半導体装置80の記憶領域83と同容量の記憶装置であることが好ましい。より具体的には、セレクタ94は、送信データHF2をバッファ95に書き込む際には、半導体装置80のメモリコントローラ84がダイジェスト値DIwを用いて読み出し動作を行うアルゴリズムと同じアルゴリズムでバッファ95に情報を書き込む。例えば、書き込み機90では、セレクタ94は、バッファ95の領域のうちダイジェスト値DIwで示されるアドレスの領域に送信データHF2を書き込み、バッファ95の他のアドレスで示される領域にはダミー値Ddを書き込む。そして、書き込み機90は、バッファ95に格納されている情報をマージして半導体装置80に送信する命令を発行する。続いて、実施の形態6にかかる半導体装置80及び書き込み機90の動作について説明する。図10に実施の形態6にかかる半導体装置80及び書き込み機90の動作を示すシーケンス図を示す。図10に示すように、実施の形態6にかかるデータ書き込みシステム6では、まず、書き込み機90が半導体装置80から識別情報IDを取得するステップS41。そして、書き込み機90は、受信した識別情報IDに対応するビットマスクデータBMを格納部21内のデータから選択するステップS42。続いて、書き込み機90は、選択したビットマスクデータBMを半導体装置80に送信するステップS43。続いて、半導体装置80では、書き込み機90から受信したビットマスクデータBMを用いて初期ユニークコードUCpにビットマスク処理を施して中間ユニークコードUCbを生成するステップS44。続いて、半導体装置10は、中間ユニークコードUCbをECC回路15及び書き込み機90に送信するステップS46。半導体装置80では、ECC回路15が中間ユニークコードUCbに対して格納部14に格納されているECCコードを適用して、中間ユニークコードUCbのエラー訂正処理を行う。そして、ECC回路15は、第1の確定ユニークコードUCmを生成するステップS45。一方、書き込み機90は、ECC回路23が中間ユニークコードUCbに対して格納部22に格納されているECCコードを適用して、中間ユニークコードUCbのエラー訂正処理を行う。そして、ECC回路23は、第2の確定ユニークコードUCwを生成するステップS47。続いて、書き込み機90は、CRC回路24が格納部22に格納されているCRCコードを用いて第2の確定ユニークコードUCwの正当性を検証するステップS48。ステップS48において第2の確定ユニークコードUCwが正当なものであると判定された場合、書き込み機90は、第2の確定ユニークコードUCwによりハッシュ関数HF1を暗号化して送信データHF2を生成するステップS49。続いて、書き込み機90は、ダミー値発生回路93においてダミー値Ddを生成するステップS50。また、書き込み機90は、ダイジェスト生成部92において第2の確定ユニークコードUCwからダイジェスト値DIwを生成するステップS51。そして、書き込み機90は、ダミー値Ddと送信データHF2とをマージしてバッファ95に格納するステップS52。その後、書き込み機90は、ダミー値Ddと送信データHF2とを半導体装置80に送信するステップS53。続いて、半導体装置80では、書き込み機90で生成されたダミー値Ddと送信データHF2とを記憶領域83に格納するステップS54。その後、半導体装置80は、ダイジェスト生成部82において第1の確定ユニークコードUCmを用いてダイジェスト値DImを生成するステップS55。そして、半導体装置80は、記憶領域83の領域のうちダイジェスト値DImに対応するアドレスが示す領域から送信データHF2を読み出し、送信データHF2をステップS45で生成された第1の確定ユニークコードUCmで復号してハッシュ関数HF1を生成するステップS56。そして、半導体装置10は、ハッシュ関数HF1を用いて他の半導体装置と暗号通信を開始するステップS57。実施の形態6にかかる半導体装置80では、暗号化された送信データHF2を自身の第1の確定ユニークコードUCmから生成されたユニークコード対応情報例えば、ダイジェスト値DImと関連付けられる領域に関連する領域に格納する。これにより、半導体装置80では、デバイス毎に異なる領域に送信データHF2が格納されることになるため、攻撃者から送信データHF2が格納された領域そのものを秘匿することができる。従、実施の形態6にかかる半導体装置80では、半導体装置80に格納された送信データHF2のセキュリティを向上させることができる。また、実施の形態6にかかる半導体装置80では、上記のセキュアマイコンを用いることなくセキュリティを向上させることができる。また、実施の形態6にかかる半導体装置80では、送信データHF2は、CPUCentralProcessingUnit等からアクセス可能な領域である記憶領域に格納される。しかし、格納する送信データHF2は、自身の第1の確定ユニークコードUCmと同じ値の第2の確定ユニークコードUCwにより暗号化された情報である。そして、実施の形態6にかかる半導体装置80では、ハッシュ関数HF1を必要に応じてその都度生成する。そのため、メンテナンス等においては、送信データHF2の元の情報であるハッシュ関数HF1に対応する暗号鍵を有するメンテナンス者がハッシュ関数HF1の不具合を解析することができる。一方、攻撃者が万が一この送信データHF2を読み出すことができた場合であっても、攻撃者は、送信データHF2がどのようなアルゴリズムで暗号化されているかを理解することができないため、送信データHF2からハッシュ関数HF1を復号することができない。つまり、実施の形態6にかかる半導体装置80は、秘匿情報であるハッシュ関数HF1に対するメンテナンス性を犠牲にすることなくセキュリティを向上させることができる。また、実施の形態6にかかるデータ書き込みシステム6では、自身のユニークコードUCwを利用してハッシュ関数HF1を暗号化することで送信データHF2を生成する。そのため、実施の形態6にかかる半導体装置80では、送信データHF2を復号する際に、自身の第1の確定ユニークコードUCmを利用するのみでよく、サーバー等のデータベースに接続するなどして復号に用いる暗号鍵を取得する必要がない。つまり、実施の形態6にかかる半導体装置80では、サーバー等との接続にかかるセキュリティ対策を必要としない。さらに、実施の形態6にかかる半導体装置80では、送信データHF2を格納する記憶領域の容量として書き込み機90のバッファ95の容量以上に確保する必要がない。そのため、実施の形態6にかかる半導体装置80では、半導体装置80に実装されている記憶領域を有効に利用することができる。また、実施の形態6では、書き込み機90から半導体装置80へは、ダミー値Ddと送信データHF2とをマージした状態で書き込みを行う。これにより、書き込み機90から半導体装置80への通信経路に対してサイドチャネルアタック等の攻撃があった場合においても、攻撃者はダミー値Ddと送信データHF2とを区別することができない。また、書き込み機90から半導体装置80にハッシュ関数HF1の情報を送信する際に、ハッシュ関数HF1を暗号化した送信データHF2として送信する。これにより、万が一、攻撃者が送信データHF2を判別できたとしても、暗号化アルゴリズムが不明である限りハッシュ関数HF1を攻撃者に取得されることがない。このような観点からも実施の形態6にかかる半導体装置80及び書き込み機90は、秘匿対象情報であるハッシュ関数HF1に対するセキュリティを向上させることができる。実施の形態7実施の形態7にかかる半導体装置100及び外部装置例えば、書き込み機200のブロック図を図11に示す。図11に示すように、実施の形態7にかかるデータ書き込みシステム7は、半導体装置100及び書き込み機200により構成される。半導体装置100は、実施の形態1にかかる半導体装置1の暗号部17を通信処理部101に変更したものである。なお、半導体装置100、復号部が書き込みデータを復号するため、この復号部をデータ復号部16として示した。通信部101は、記憶部を有する。この記憶部には、データ復号部16が受信データに対して復号処理を施すことで得られる書き込みデータDA1が格納される。また、通信処理部101は、記憶部に格納された書き込みデータを利用して動作する回路である。また、書き込み機200は、書き込み対象の秘匿情報としてハッシュ関数HF1に代えて書き込みデータDA1を有する。図11では、書き込みデータDA1を格納する格納部225を示した。また、図11では、書き込みデータDA1を第2の確定ユニークコードUCwで暗号化して送信データDA2を生成する回路としてデータ暗号部226を示した。データ暗号部226の動作は、実施の形態1にかかるハッシュ関数暗号部26と実質的に同じ動作をするため、説明を省略する。実施の形態7では、半導体装置に書き込んだ情報の利用方法について説明する。より具体的には、記憶した書き込みデータDA1を利用して動作する通信処理部101或いは半導体装置の例について説明する。そこで、図11に示すデータ書き込みシステム7により書き込みデータDA1が書き込まれた半導体装置により構成される暗号通信システム8の一例を図12に示す。図12に示す例では、秘匿情報として受信した書き込みデータにデバイスに固有な値であってランダムなビットにエラーを含むユニークコードのエラーを訂正する固有訂正データと、エラー訂正後の前記初期ユニークコードから暗号鍵を生成する演算式情報と、が含まれるものとする。なお、図12に示す半導体装置の回路ブロックの構成は、上記通信処理部101の構成の一例に相当するものである。図12に示すように、実施の形態7にかかる暗号通信システム8は、半導体装置ICa110と半導体装置ICb120とを有する。半導体装置110は、ユニークコード生成部111、記憶部112、共通鍵生成部113、及び暗号部114を有する。ユニークコード生成部111は、半導体装置110に固有のユニークコードUCaを生成し、共通鍵生成部113に出力する。ここで、ユニークコード生成部111が生成するユニークコードUCaは、半導体装置1のユニークコード生成部12が生成する初期ユニークコードと同じ性質ものである。そのため、ユニークコード生成部111に代えてユニークコード生成部12を利用することもできる。記憶部112は、訂正データCDa、共通鍵生成部113で生成された共通鍵CKa、及び半導体装置120の公開鍵PKbを格納することができる。この訂正データCDaが半導体装置ICaに書き込まれた書き込みデータに相当する。記憶部112は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCDa及び公開鍵PKbは不揮発性メモリに格納され、共通鍵CKaは揮発性メモリに格納される。よって、記憶部112は一時的に共通鍵CKaを格納するが、半導体装置110の電源がオフになると共通鍵CKaの情報は失われる。共通鍵生成部113は、ユニークコード生成部111から出力されたユニークコードUCaと、記憶部112に格納されている訂正データCDaとを用いて共通鍵CKaを生成する。ユニークコード生成部111で生成されるユニークコードUCaは、ユニークコード生成時の外的要因、例えば、温度、電圧等によって変動するビットの値を含むデータである。このため、ユニークコード生成部111で生成されるユニークコードUCaには、1値が安定したビット、2高確率で変動するビットつまり、値の変動が比較的大きいビット、3低確率で変動するビットつまり、値の変動が比較的小さいビットの3つが含まれる。このように、ユニークコード生成部111で生成されるユニークコードUCaは、2高確率で変動するビットと3低確率で変動するビットとを含む。よって、ユニークコードUCaは生成される毎に異なる値となる。高確率で変動するビットは製造工程で把握することができる。よって、製造工程において各ビットを判定することで、高確率で変動するビットをマスクするマスクデータを作成することができる。そして、このマスクデータを用いて、ユニークコード生成部111で生成されたユニークコードUCaをマスクすることで、ユニークコードUCaに含まれる高確率で変動するビットを削除することができる。ここで、高確率で変動するビットの位置は半導体装置毎に異なるため、マスクデータは半導体装置に固有のデータとなる。低確率で変動するビットは、外的要因や残存する電荷などに起因して変動するため、予測することが困難である。このため、低確率で変動するビットは、例えばBCH符号やリードソロモン符号に代表されるECCコードを製造時に生成し、このECCコードを用いてエラーを訂正する。以下で、共通鍵生成部113の動作について具体的に説明する。図14は、共通鍵生成部113の動作を説明するためのフローチャートであり、図15は共通鍵生成部113で処理されるユニークコードの一例を示す表である。まず、共通鍵生成部113は、ユニークコード生成部111からユニークコードUCaを読み込むステップS71。このとき読み込まれたユニークコードUCaは、エラー訂正が実施されていないユニークコードである。次に、訂正データCDaに含まれるマスクデータを用いて、読み込まれたユニークコードUCaをマスクするステップS72。ここで、マスクデータは、ユニークコードUCaのビットのうちエラー率の高いビットをマスクするためのデータである。図15に示す例では、ユニークコードUCaの1ビット目と6ビット目のビットのエラー率が高いため、マスクデータが0となっている。これ以外のビットは、エラー率が低いビット又は値が安定しているビットであるため、マスクデータが1となっている。つまり、マスクが必要なビットのマスクデータは0となり、マスクが不要なビットのマスクデータは1となる。そして、マスクデータを用いてユニークコードUCaをマスクすることで、ユニークコードUCaの1ビット目と6ビット目のビットを削除したマスク処理後のデータを得ることができるマスク処理により削除したビットはXで示している。その後、マスク処理後のユニークコードUCaは左詰めされる。次に、訂正データCDaに含まれるECCコードエラー訂正コードを用いて、マスク処理後のユニークコードUCaのエラーを訂正するステップS73。図15に示す例では、ECCコードを用いたエラー訂正により、1ビット目のビットが0から1に訂正されている。次に、訂正データCDaに含まれる演算パラメータを用いて、エラー訂正後のユニークコードUCaに所定の演算を実施するステップS74。図15に示す例では、エラー訂正後のユニークコードUCaにNOT演算を実施している。この演算処理後のユニークコードUCaが共通鍵CKaとなる。なお、NOT演算は一例であり、エラー訂正後のユニークコードUCaに実施する演算はどのような演算であってもよい。この演算パラメータを変更することで、必要に応じて共通鍵CKaを変更することができる。また、演算パラメータを用いてエラー訂正後のユニークコードUCaに所定の演算を実施することで、共通鍵CKaをユニークコードUCaと見かけ上類似しないコードとすることができる。よって、セキュリティレベルをさらに向上させることができる。また、エラー訂正後のユニークコードUCaに実施する演算は省略することもできる。この場合は、マスクデータ及びECCコードを用いてエラー訂正されたユニークコードUCaが、共通鍵CKaとなる。このようにして生成された共通鍵CKaは、記憶部112及び暗号部114に出力される。なお、訂正データCDaに含まれるマスクコード、ECCコード、及び演算パラメータは、半導体装置110の固有のデータとして予め生成されて記憶部112に格納されている。以上で説明したように、共通鍵生成部113は共通鍵CKaを生成する機能を有すると同時に、訂正データCDaを用いてユニークコードUCaを訂正する機能も有する。図12に示す秘密鍵生成部123も同様に、訂正データCDを用いてユニークコードUCを訂正するユニークコード訂正部として機能する。なお、本願明細書では、便宜上、生成される鍵毎に共通鍵生成部、秘密鍵生成部、公開鍵生成部と表現しているが、これらの構成及び動作は基本的には同様である。図12の暗号部114は、共通鍵生成部113で生成された共通鍵CKaを半導体装置120の公開鍵PKbを用いて暗号化する。ここで、暗号化に用いられる公開鍵PKbは、予め半導体装置120から半導体装置110に送付されて記憶部112に格納されていてもよい。また、暗号化に用いられる公開鍵PKbは、暗号部114で共通鍵CKaを暗号化する際に、半導体装置120から暗号部114に直接供給されるように構成してもよい。半導体装置120は、ユニークコード生成部121、記憶部122、秘密鍵生成部123、及び復号部124を有する。ユニークコード生成部121は、半導体装置120に固有のユニークコードUCbを生成し、秘密鍵生成部123に出力する。なお、ユニークコード生成部121の構成及び動作は、上記で説明したユニークコード生成部111と基本的に同様である。記憶部122は、訂正データCDb、公開鍵PKb、及び復号部で復号された共通鍵CKaを格納することができる。ここで、訂正データCDbは、実施の形態7にかかるデータ書き込みシステム7により書き込まれる書き込みデータに相当する。記憶部122は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCDb及び公開鍵PKbは不揮発性メモリに格納され、共通鍵CKaは揮発性メモリに格納される。よって、記憶部122は一時的に共通鍵CKaを格納するが、半導体装置120の電源がオフになると共通鍵CKaの情報は失われる。秘密鍵生成部123は、ユニークコードUCbと訂正データCDbとを用いて半導体装置120の秘密鍵SKbを生成する。なお、秘密鍵生成部123において秘密鍵SKbを生成する方法は、上記共通鍵生成部113が共通鍵CKaを生成する方法と基本的に同様である。復号部124は、半導体装置110の暗号部114で暗号化された共通鍵CKaを秘密鍵SKbを用いて復号して共通鍵CKaを生成する。次に、本実施の形態にかかる暗号通信システムの動作について、図13に示すフローチャートを用いて説明する。まず、半導体装置ICb120は、半導体装置ICa110に半導体装置ICb120の公開鍵PKbを送付するステップS61。送付された公開鍵PKbは、半導体装置110の記憶部112に格納される。次に、半導体装置110の共通鍵生成部113は、ユニークコード生成部111から出力されたユニークコードUCaと、記憶部112に格納されている訂正データCDaとを用いて共通鍵CKaを生成するステップS62。暗号部114は、共通鍵生成部113で生成された共通鍵CKaを半導体装置120の公開鍵PKbを用いて暗号化して、暗号化された共通鍵CKaを生成するステップS63。その後、半導体装置110から半導体装置120に暗号化された共通鍵CKaが送付されるステップS64。半導体装置120の秘密鍵生成部123は、ユニークコードUCbと訂正データCDbとを用いて、半導体装置120の秘密鍵SKbを生成するステップS65。復号部124は、暗号化された共通鍵CKaを秘密鍵SKbを用いて復号して共通鍵CKaを生成するステップS66。上記処理により、半導体装置110と半導体装置120は共に共通鍵CKaを保持することができる。よって、半導体装置110及び半導体装置120は共通鍵CKaを用いて暗号通信することが可能となるステップS67。なお、上記各ステップは矛盾がない限り適宜順番を変更することができる。例えば、半導体装置110がステップS62とS63を実施するのと並行して、半導体装置120においてステップS65を実施してもよい。従来の技術では、半導体装置ICxと半導体装置ICyとの間で共通鍵CKxを用いて暗号通信を実施する場合、ICxとICyとで共通鍵CKxを共有する必要がある。ICxが共通鍵CKxを保有している場合、ICxは予め取得したICyの公開鍵PKyを用いて共通鍵CKxを暗号化し、ICyへ送付する。そして、ICyは、ICyの秘密鍵SKyを用いて、暗号化された共通鍵CKxを復号することで、共通鍵CKxを取得することができる。このように、公開鍵暗号方式を用いてICxからICyへ共通鍵CKxを送付することで、第三者に知られることなくICxとICyとで共通鍵CKxを共有することができる。これにより、ICxとICyとの間で共通鍵暗号方式を用いて暗号通信を実施することができる。ICxからICyへ共通鍵CKxを送付する際は、共通鍵CKxが暗号化されているため、共通鍵CKxの情報が漏洩することはない。しかしながら、半導体装置半導体チップICx、ICyの不揮発性メモリ記憶部には共通鍵CKxや秘密鍵SKyなどの重要なデータが格納されている。このため、半導体装置が不正に解析されると、共通鍵CKxや秘密鍵SKyなどの重要なデータが漏洩してしまうという問題があった。これに対して、本実施の形態にかかる暗号通信システムでは、半導体装置110の共通鍵生成部113において、半導体装置110に固有のユニークコードUCaと訂正データCDaとを用いて共通鍵CKaを生成している。また、半導体装置120の秘密鍵生成部123において、半導体装置120に固有のユニークコードUCbと訂正データCDbとを用いて、半導体装置120の秘密鍵SKbを生成している。よって、共通鍵CKaや秘密鍵SKbなどの重要なデータを記憶部112、122に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CKaや秘密鍵SKbなどの重要なデータが漏洩することはない。また、実施の形態7にかかる暗号通信システム8では、共通鍵CKaや秘密鍵SKbなどの重要なデータを記憶部112、122に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CKaや秘密鍵SKbなどの重要なデータが漏洩することはない。このため、半導体装置110及び半導体装置120をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。なお、共通鍵CKaや秘密鍵SKbを生成するために使用される訂正データCDa、CDbは、共通鍵CKaや秘密鍵SKbよりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。よって、訂正データCDa、CDbが第三者に漏洩することを防ぐために、訂正データCDa、CDbが格納される半導体装置110、120にセキュアマイコンを使用してもよい。実施の形態7にかかる暗号通信システム8では、訂正データCDa及び訂正データCDbは、鍵情報を生成するために非常に重要なデータであるが、実施の形態7にかかるデータ書き込みシステム7を利用することで、これら重要なデータを高いセキュリティを維持したまま半導体装置に書き込むことができる。実施の形態8実施の形態8では、実施の形態7にかかるデータ書き込みシステム7により書き込みデータが書き込まれる半導体装置を利用した別の例について説明する。そこで、実施の形態8にかかる暗号通信システム9のブロック図を図16に示す。なお、図16に示す半導体装置の回路ブロックは、図11で示した通信処理部101内の回路に相当するものである。実施の形態8にかかる暗号通信システム9は、半導体装置ICa130第1の半導体装置と半導体装置ICz140第2の半導体装置とを有する。半導体装置ICa130は他の半導体装置不図示とセキュアなネットワークを構成している。本実施の形態では、半導体装置ICa130を含むセキュアなネットワークに、半導体装置ICz140を新たに追加する場合について説明する。半導体装置130は、ユニークコード生成部131、記憶部132、共通鍵生成部第1の共通鍵生成部133、及び訂正データ生成部134を有する。ユニークコード生成部131は、半導体装置130に固有のユニークコードUCa第1のユニークコードを生成し、共通鍵生成部133に出力する。ここで、ユニークコード生成部131が生成するユニークコードUCaは、半導体装置1のユニークコード生成部12が生成する初期ユニークコードと同じ性質ものである。そのため、ユニークコード生成部131に代えてユニークコード生成部12を利用することもできる。記憶部132は、訂正データCDa第1の訂正データと、共通鍵生成部133で生成された共通鍵CKa第1の共通鍵とを格納することができる。記憶部132は、例えば揮発性メモリと不揮発性メモリとを有し、訂正データCDaは不揮発性メモリに格納され、共通鍵CKaは揮発性メモリに格納される。よって、記憶部132は一時的に共通鍵CKaを格納するが、半導体装置130の電源がオフになると共通鍵CKaの情報は消去される。共通鍵生成部133は、ユニークコード生成部131から出力されたユニークコードUCaと、記憶部132に格納されている訂正データCDaとを用いて共通鍵CKaを生成する。ここで、ユニークコード生成部131で生成されるユニークコードUCaは、実施の形態7のユニークコード生成部111で生成されるユニークコードUCaと同じ性質のものである。そのため、実施の形態7と同様に、鍵情報を生成するに当たりマスクデータ及びECCコードによってエラーを訂正する必要がある。また、共通鍵生成部133の動作は、実施の形態7の共通鍵生成部113の動作と実質的に同じであるため、ここでは説明を省略する。なお、訂正データCDaに含まれるマスクコード、ECCコード、及び演算パラメータは、半導体装置130の固有のデータとして予め生成されて記憶部132に格納されている。訂正データCDaの生成方法については、後述する訂正データ生成部134が訂正データCDzを生成する場合と同様である。訂正データ生成部134は、半導体装置140のユニークコードUCz第2のユニークコードと共通鍵CKaとを用いて訂正データCDz第2の訂正データを生成する。訂正データ生成部134が訂正データを生成する場合の動作について、図18を用いて詳細に説明する。まず、半導体装置ICz140からユニークコードUCzを複数回取得するステップS91。次に、ステップS91で取得したユニークコードUCzを統計的に処理し、ユニークコードUCzの各ビットを、1値が安定したビット、2高確率で変動するビットつまり、値の変動が比較的大きいビット、3低確率で変動するビットつまり、値の変動が比較的小さいビットの3つに分類する。そして、2高確率で変動するビットを用いてマスクデータを生成するステップS92。このとき、例えばユニークコードUCzの各ビットのうち、所定の閾値よりも高い確率で変動するビットの位置を示す情報をマスクデータとする。次に、ステップS92で生成したマスクデータを用いてユニークコードUCzをマスクし、高確率で変動するビットを削除する。そして、マスク後のユニークコードUCzつまり、値が安定したビットと低確率で変動するビットを含むユニークコードのエラーを訂正できるECCコードを生成するステップS93。ECCコードは、例えばBCH符号やリードソロモン符号である。次に、ステップS92で生成したマスクデータ及びステップS93で生成したECCコードを用いてエラー訂正したユニークコードUCzつまり、値が安定したビットを含むユニークコードと、記憶部132に格納されている共通鍵CKaとを用いて、演算パラメータを生成するステップS94。即ち、演算パラメータは、訂正されたユニークコードUCzから共通鍵CKaを生成するために必要なパラメータである。上記処理により生成されたマスクデータ、ECCコード、及び演算パラメータを訂正データCDzとして半導体装置ICz140に送付するステップS95。なお、訂正データCDzを生成するための処理ステップS91~S95は、複数の半導体装置を用いて分散させて実施してもよい。図19は、複数の半導体装置ICa、ICb、ICc、ICdを用いて訂正データCDzを生成する場合を示す図である。ここで、半導体装置ICa、ICb、ICc、ICdはセキュアなネットワークを構成している。図19に示す例では、半導体装置ICaがステップS91、S95を実施している。つまり、半導体装置ICaは半導体装置ICzとの窓口として機能する。半導体装置ICbはステップS92マスクデータの生成を実施している。半導体装置ICcはステップS93ECCコードの生成を実施している。半導体装置ICdはステップS94演算パラメータの生成を実施している。なお、図19に示す例は一例であり、各ステップを実施する半導体装置は、任意に割り当てることができる。このように、訂正データCDzを生成するための処理ステップS91~S95を、複数の半導体装置に分散させることで、暗号通信システムのセキュリティレベルを向上させることができ、また1つの半導体装置に負荷が集中することを回避することができる。図16に示す半導体装置140は、ユニークコード生成部141、記憶部142、及び共通鍵生成部第2の共通鍵生成部143を有する。ユニークコード生成部141は、半導体装置140に固有のユニークコードUCzを生成し、訂正データ生成部134及び共通鍵生成部143に出力する。なお、ユニークコード生成部141の構成及び動作は、上記で説明したユニークコード生成部131と基本的に同様である。記憶部142は、共通鍵生成部143で生成された共通鍵CKaを格納することができる。記憶部142は、揮発性メモリに共通鍵CKaを格納する。よって、記憶部142は一時的に共通鍵CKaを格納するが、半導体装置140の電源がオフになると共通鍵CKaの情報は消去される。共通鍵生成部143は、ユニークコード生成部141から出力されたユニークコードUCzと、訂正データ生成部134から出力された訂正データCDzとを用いて共通鍵CKa第1の共通鍵を生成する。なお、共通鍵生成部143が共通鍵CKaを生成する方法は、上述した共通鍵生成部133が共通鍵CKaを生成する方法と基本的に同様である。次に、本実施の形態にかかる暗号通信システムの動作について、図17に示すフローチャートを用いて説明する。まず、半導体装置ICa130の共通鍵生成部133は、ユニークコード生成部131から出力されたユニークコードUCaと、記憶部132に格納されている訂正データCDaとを用いて共通鍵CKaを生成するステップS81。その後、半導体装置ICa130は他の半導体装置ICb~ICy不図示と共通鍵CKaを用いて通信を開始するステップS82。半導体装置140は、半導体装置130の訂正データ生成部134に半導体装置140のユニークコードUCzを送付するステップS83。半導体装置130の訂正データ生成部134は、半導体装置140のユニークコードUCzと、記憶部132に格納されている共通鍵CKaとを用いて訂正データCDzを生成するステップS84。訂正データ生成部134が訂正データCDzを生成するには、ユニークコードUCzを複数回取得する必要がある。よって、ユニークコードUCzを複数回取得するためにステップS83を繰り返す。生成された訂正データCDzは半導体装置140の共通鍵生成部143に送付されるステップS85。半導体装置140の共通鍵生成部143は、ユニークコード生成部141から出力されたユニークコードUCzと、訂正データ生成部134から出力された訂正データCDzとを用いて共通鍵CKaを生成するステップS86。上記処理により、新たに追加された半導体装置140は共通鍵CKaを保持することができる。よって、新たに追加された半導体装置ICz140は、半導体装置ICa130及び他の半導体装置ICb~ICyと共通鍵CKaを用いて暗号通信することが可能となるステップS87。セキュアな通信が確立している暗号通信システムに新たに半導体装置ICzを追加する場合は、追加される半導体装置ICzが正規の半導体装置であるかを検証する必要がある。しかしながら、追加される半導体装置ICzが正規の半導体装置であるかを検証するには、例えば高価なセキュアサーバーを暗号通信システムに組み込む必要がある。このため、暗号通信システムのコストが増加するという問題があった。これに対して実施の形態8にかかる暗号通信システム9では、半導体装置130が備える訂正データ生成部134において、半導体装置140に固有のユニークコードUCzと、共通鍵CKaとを用いて訂正データCDzを生成し、半導体装置140の共通鍵生成部143において、この訂正データCDzと半導体装置140のユニークコードUCzとを用いて共通鍵CKaを生成している。よって、追加される半導体装置ICzが正規の半導体装置であるかを検証するために、高価なセキュアサーバーを暗号通信システムに組み込む必要がないので、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。また、実施の形態8にかかる暗号通信システム9では、半導体装置130の共通鍵生成部133において、半導体装置130に固有のユニークコードUCaと訂正データCDaとを用いて共通鍵CKaを生成している。また、半導体装置140の共通鍵生成部143において、半導体装置140に固有のユニークコードUCzと訂正データCDzとを用いて、共通鍵CKaを生成している。よって、重要なデータである共通鍵CKaを記憶部132、142に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CKaのデータが漏洩することはない。よって、本実施の形態にかかる暗号通信システムにより、セキュリティの向上を実現しつつ、セキュアな通信を実施している暗号通信システムに、半導体装置を容易かつ低コストに追加することができる。実施の形態8にかかる暗号通信システム9では、共通鍵CKaなどの重要なデータを記憶部132、142に直接格納していないため、半導体装置が不正に解析されたとしても、共通鍵CKaなどの重要なデータが漏洩することはない。このため、半導体装置130及び半導体装置140をセキュリティレベルが比較的低い汎用マイコンを用いて構成したとしても、高いセキュリティレベルを実現することができる。なお、半導体装置130において共通鍵CKaを生成するために使用される訂正データCDaは、共通鍵CKaよりもセキュリティレベルは低いが、比較的セキュリティレベルの高い情報である。実施の形態7にかかるデータ書き込みシステム7では、このような比較的セキュリティレベルの高い情報を高いセキュリティを維持ながら半導体装置に格納することができる。また、半導体装置130から半導体装置140に送付される訂正データCDzは、ユニークコードUCzと共通鍵CKaとに関連するデータであるため、比較的セキュリティレベルの高い情報である。よって、訂正データCDzを半導体装置130から半導体装置140に送付する際は、公開鍵暗号方式を用いて暗号化して送付してもよい。この場合は、例えば半導体装置140が半導体装置140の秘密鍵を保持し、半導体装置130が訂正データCDzを送付する際に半導体装置140の公開鍵で訂正データCDzを暗号化する。そして、半導体装置140が暗号化された訂正データCDzを秘密鍵を用いて復号する。これにより、半導体装置130から半導体装置140に暗号化して訂正データを送付することができる。なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。複数の実施の形態に関する事項を組み合わせて、1つの装置とすること、例えば、実施の形態3に対して、実施の形態1から実施の形態2への変更内容を適用することは、当業者であれば当然に想到する事項である。