(57)【要約】      （修正有）【課題】装置の製造を管理する工場鍵管理サーバ及び設定情報を管理するセンタ鍵管理サーバを備えるシステムにおいて、セキュアな情報の書込処理を実現し、かつ、装置を製造するシステム内で情報の書込処理の成否を検証する。【解決手段】センタ鍵管理サーバは、装置及びセンタ鍵管理サーバによって共有される鍵情報を格納し、鍵情報を用いて設定情報を暗号化した第１の暗号文を含む第１のメッセージを生成して、工場鍵管理サーバを介して装置に送信し、鍵情報を用いて設定情報に含まれる一部のデータを暗号化した第２の暗号文を含む第２のメッセージを生成して、第１の計算機に送信する。工場鍵管理サーバは、設定情報を格納した装置から、鍵情報を用いて設定情報に含まれる一部の情報を暗号化した第３の暗号文を含む第３のメッセージを受信し、第２のメッセージ及び第３のメッセージを比較することによって、設定情報の書込処理が成功したか否かを検証する。【選択図】図１
2018110355.tif 000002
【特許請求の範囲】
【請求項１】
装置の製造を管理する第１の計算機、及び前記第１の計算機に接続され、前記装置に設定する設定情報を管理する第２の計算機を備えるシステムであって、
前記第１の計算機は、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、及び前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、
前記第２の計算機は、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、及び前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、
前記第２のメモリは、前記装置及び前記第２の計算機によって共有され、暗号化処理及び復号処理に使用する鍵情報を格納し、
前記第２のプロセッサは、
前記鍵情報を用いて前記設定情報を暗号化した第１の暗号文を含む第１のメッセージを生成して、前記第１の計算機を介して前記装置に送信し、
前記鍵情報を用いて前記設定情報に含まれる一部のデータを暗号化した第２の暗号文を含む第２のメッセージを生成して、前記第１の計算機に送信し、
前記第１のプロセッサは、
前記第１の暗号文を復号化することによって取得された前記設定情報を格納した前記装置から、前記鍵情報を用いて前記設定情報に含まれる一部の情報を暗号化した第３の暗号文を含む第３のメッセージを受信し、
前記第２のメッセージ及び前記第３のメッセージを比較することによって、前記設定情報の書込処理が成功したか否かを検証することを特徴とするシステム。
【請求項２】
請求項１に記載のシステムであって、
前記第１のプロセッサは、
前記第２の暗号文と前記第３の暗号文とが一致するか否かを判定し、
前記第２の暗号文と前記第３の暗号文とが一致する場合、前記設定情報の書込処理が成功したと判定することを特徴とするシステム。
【請求項３】
請求項２に記載のシステムであって、
前記第１のプロセッサは、前記第２の暗号文と前記第３の暗号文との相違が１ビットのみである場合、前記第２の計算機に、前記第１のメッセージの再送要求を送信することを特徴とするシステム。
【請求項４】
請求項３に記載のシステムであって、
前記設定情報は、秘密情報及び前記秘密情報の書込回数を示すカウンタ値を含み、
前記第１の暗号文は、前記鍵情報から生成された第１の暗号鍵情報と、前記秘密情報及び前記カウンタ値を結合した値と、を変数とする第１の関数を用いて生成され、
前記第２の暗号文は、前記鍵情報から生成された第２の暗号鍵情報と、前記カウンタ値と、を変数とする第２の関数を用いて生成され、
前記第３の暗号文は、前記鍵情報から生成した第３の暗号鍵情報と、前記カウンタ値と、を変数とする第３の関数を用いて生成されることを特徴とするシステム。
【請求項５】
請求項４に記載のシステムであって、
前記第３のメッセージは、前記鍵情報及び前記設定情報から生成された検証値を含み、
前記第２のプロセッサは、
前記鍵情報を用いて前記第３の暗号文を復号化することによって前記カウンタ値を取得し、
前記第１の暗号文の生成時に用いたカウンタ値と、前記第３の暗号文から取得したカウンタ値とが一致するか否かを判定し、
前記第１の暗号文の生成時に用いたカウンタ値と、前記第３の暗号文から取得したカウンタ値とが一致すると判定された場合、前記検証値を用いて前記設定情報の書込処理が成功したか否かを判定することを特徴とするシステム。
【請求項６】
請求項５に記載のシステムであって、
前記第１の暗号文は、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  ＥｘｔｅｎｓｉｏｎのＭ２であり、
前記第２の暗号文は、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  ＥｘｔｅｎｓｉｏｎのＭ４の暗号文部であり、
前記検証値は、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  ＥｘｔｅｎｓｉｏｎのＭ５であることを特徴とするシステム。
【請求項７】
装置の製造を管理する第１の計算機、及び前記第１の計算機に接続され、前記装置に設定する設定情報を管理する第２の計算機を備えるシステムにおける情報の書込方法であって、
前記第１の計算機は、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、及び前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、
前記第２の計算機は、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、及び前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、
前記第２のメモリは、前記装置および前記第２の計算機によって共有され、暗号化処理及び復号処理に使用する鍵情報を格納し、
前記情報の書込方法は
前記第２のプロセッサが、前記鍵情報を用いて前記設定情報を暗号化した第１の暗号文を含む第１のメッセージを生成して、前記第１の計算機を介して前記装置に送信する第１のステップと、
前記第２のプロセッサが、前記鍵情報を用いて前記設定情報に含まれる一部のデータを暗号化した第２の暗号文を含む第２のメッセージを生成して、前記第１の計算機に送信する第２のステップと、
前記第１のプロセッサが、前記第１の暗号文を復号化することによって取得された前記設定情報を格納した前記装置から、前記鍵情報を用いて前記設定情報に含まれる一部の情報を暗号化した第３の暗号文を含む第３のメッセージを受信する第３のステップと、
前記第１のプロセッサが、前記第２のメッセージ及び前記第３のメッセージを比較することによって、前記設定情報の書込処理が成功したか否かを検証する第４のステップと、を含むことを特徴とする情報の書込方法。
【請求項８】
請求項７に記載の情報の書込方法であって、
前記第４のステップは、
前記第１のプロセッサが、前記第２の暗号文と前記第３の暗号文とが一致するか否かを判定するステップと、
前記第２の暗号文と前記第３の暗号文とが一致する場合、前記第１のプロセッサが、前記設定情報の書込処理が成功したと判定するステップと、を含むことを特徴とする情報の書込方法。
【請求項９】
請求項８に記載の情報の書込方法であって、
前記第４のステップは、前記第１のプロセッサが、前記第２の暗号文と前記第３の暗号文との相違が１ビットのみである場合、前記第２の計算機に、前記第１のメッセージの再送要求を送信するステップを含むことを特徴とする情報の書込方法。
【請求項１０】
請求項９に記載の情報の書込方法であって、
前記設定情報は、秘密情報及び前記秘密情報の書込回数を示すカウンタ値を含み、
前記第１の暗号文は、前記鍵情報から生成された第１の暗号鍵情報と、前記秘密情報及び前記カウンタ値を結合した値と、を変数とする第１の関数を用いて生成され、
前記第２の暗号文は、前記鍵情報から生成された第２の暗号鍵情報と、前記カウンタ値と、を変数とする第２の関数を用いて生成され、
前記第３の暗号文は、前記鍵情報から生成した第３の暗号鍵情報と、前記カウンタ値と、を変数とする第３の関数を用いて生成されることを特徴とする情報の書込方法。
【請求項１１】
請求項１０に記載の情報の書込方法であって、
前記第３のメッセージは、前記鍵情報及び前記設定情報から生成された検証値を含み、
前記情報の書込方法は、
前記第２のプロセッサが、前記鍵情報を用いて前記第３の暗号文を復号化することによって前記カウンタ値を取得するステップと、
前記第２のプロセッサが、前記第１の暗号文の生成時に用いたカウンタ値と、前記第３の暗号文から取得したカウンタ値とが一致するか否かを判定するステップと、
前記第１の暗号文の生成時に用いたカウンタ値と、前記第３の暗号文から取得したカウンタ値とが一致すると判定された場合、前記第２のプロセッサが、前記検証値を用いて前記設定情報の書込処理が成功したか否かを判定するステップと、を含むことを特徴とする情報の書込方法。
【請求項１２】
請求項１１に記載の情報の書込方法であって、
前記第１の暗号文は、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  ＥｘｔｅｎｓｉｏｎのＭ２であり、
前記第２の暗号文は、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  ＥｘｔｅｎｓｉｏｎのＭ４の暗号文部であり、
前記検証値は、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  ＥｘｔｅｎｓｉｏｎのＭ５であることを特徴とする情報の書込方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置への鍵の書込処理を実行するシステムに関する。
【背景技術】
【０００２】
自動車の車載機器等のモジュールが、サーバと安全に通信をするためには、車載機器がサーバと秘密情報を共有することが必要になる。車載機器及びサーバは、共有する秘密情報を鍵として用いて、暗号通信により安全に通信を行うことができる。
【０００３】
共有する鍵は、製造工場で車載機器に書き込むことができる。例えば、製造工場で車載機器に鍵を書き込む技術として、特許文献１に記載の技術が知られている。
【０００４】
特許文献１には、「秘密鍵登録システムは、電子キー２として、例えばマスターキーや複数のサブキーを車両に登録する際に使用するシステムである。外部センター２００は、登録に必要な情報である車載器センター鍵２２及び電子キーセンター鍵２３を内部センター２０に配信する。内部センター２０は、乱数生成器３１により秘密鍵を生成する。内部センター２０は、生成した秘密鍵を車載器センター鍵２２及び電子キーセンター鍵２３で暗号化処理し、当該処理した秘密鍵を車両及び電子キー２へ配信する。」ことが記載されている。
【０００５】
また、車載機器への鍵の書き込み方法として、非特許文献１の方法が知られている。非特許文献１には、鍵の生成者が、鍵を暗号化したメッセージを生成し、メッセージを復号せずにモジュールに送り、また、モジュールが、内部で鍵を復号し、当該鍵を書き込むことが記載されている。また、非特許文献１には、モジュールが検証用メッセージを出力し、鍵の生成者は検証用メッセージに基づいて、鍵が書き込まれたか否かを検証することを確認することが記載されている。非特許文献１に記載の技術を用いることによって、セキュアに鍵をモジュールに書き込むことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−２３４５１９号公報
【非特許文献】
【０００７】
【非特許文献１】Himanshu Singhal, Pradip Singh, “SHE on MPC5746C/MPC5748G,” Freescale Semiconductor, Inc., 2015.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
自動車等の製品の製造工程においては、自動車メーカーが自動車のモジュールを製造するとは限らず、サプライヤが自動車のモジュールを製造し、自動車メーカーに当該モジュールを供給する場合がある。モジュールに書き込む鍵は、利用者以外には開示されないことが望ましい。しかし、サプライヤのモジュール製造工場において、自動車メーカーが生成した鍵をモジュールに書き込む場合、特許文献１の方法では、鍵をサプライヤ製造工場に配布する必要があるため、サプライヤに鍵が開示される可能性がある。
【０００９】
非特許文献１の方法を用いれば、サプライヤに鍵が開示される可能性はない。しかし、サプライヤは、モジュールに正しく鍵が書き込まれたことを確認するために、サプライヤのシステムと自動車メーカーのシステムとを接続し、モジュールが出力する検証用メッセージを自動車メーカーに送信する必要がある。
【００１０】
前述のシステム構成では、サプライヤは、自動車メーカーによる検証結果を待つ必要があり、検証結果を受け取るまで製造ラインの停止等させる必要がある。また、モジュールの製造を行った後に検証結果を受け取る場合、鍵の書込処理のエラーに伴うモジュールの回収及びモジュールの再設定等を行う必要がある。したがって、前述のシステム構成では、モジュールの製造ラインの安定性を低下させる要因となり、モジュールの製造コストを増加させる。
【００１１】
本発明は、モジュール等の装置へのセキュアな情報の書込みを実現するとともに、装置を製造するシステム内で情報の書込処理の成否を検証することできるシステムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、装置の製造を管理する第１の計算機、及び前記第１の計算機に接続され、前記装置に設定する設定情報を管理する第２の計算機を備えるシステムであって、前記第１の計算機は、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、及び前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、前記第２の計算機は、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、及び前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、前記第２のメモリは、前記装置及び前記第２の計算機によって共有され、暗号化処理及び復号処理に使用する鍵情報を格納し、前記第２のプロセッサは、前記鍵情報を用いて前記設定情報を暗号化した第１の暗号文を含む第１のメッセージを生成して、前記第１の計算機を介して前記装置に送信し、前記鍵情報を用いて前記設定情報に含まれる一部のデータを暗号化した第２の暗号文を含む第２のメッセージを生成して、前記第１の計算機に送信し、前記第１のプロセッサは、前記第１の暗号文を復号化することによって取得された前記設定情報を格納した前記装置から、前記鍵情報を用いて前記設定情報に含まれる一部の情報を暗号化した第３の暗号文を含む第３のメッセージを受信し、前記第２のメッセージ及び前記第３のメッセージを比較することによって、前記設定情報の書込処理が成功したか否かを検証することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、第２の計算機は、第１の計算機に秘匿した状態で、装置に鍵等の設定情報を書き込むことができ、また、第１の計算機は、第２の計算機に問い合わせることなく設定情報の書込処理の成否を検証できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】実施例１のシステムの構成例を示す図である。
【図２】実施例１のセンタ鍵管理サーバのハードウェア構成及びソフトウェア構成の一例を示す図である。
【図３】実施例１の工場鍵管理サーバのハードウェア構成及びソフトウェア構成の一例を示す図である。
【図４】実施例１の製造ライン端末のハードウェア構成及びソフトウェア構成の一例を示す図である。
【図５】実施例１の装置のハードウェア構成及びソフトウェア構成の一例を示す図である。
【図６】実施例１の装置鍵情報の一例を示す図である。
【図７】実施例１の第１の鍵管理メッセージ情報の一例を示す図である。
【図８】実施例１の鍵書込工程の概要を説明するフローチャートである。
【図９Ａ】実施例１の鍵書込工程における処理の流れを説明するシーケンス図である。
【図９Ｂ】実施例１の鍵書込工程における処理の流れを説明するシーケンス図である。
【図１０】実施例１のセンタ鍵管理サーバが実行するメッセージ生成処理の一例を説明するフローチャートである。
【図１１】実施例１の装置が実行するアプリケーション鍵の書込処理の一例を説明するフローチャートである。
【図１２】実施例１の装置が実行する検証用メッセージ生成処理の一例を説明するフローチャートである。
【図１３】実施例１の工場鍵管理サーバが実行するアプリケーション鍵の書込処理の検証処理の一例を説明するフローチャートである。
【図１４】実施例１のセンタ鍵管理サーバが実行するアプリケーション鍵の書込処理の検証処理の一例を説明するフローチャートである。
【図１５】実施例２の装置鍵情報の一例を示す図である。
【図１６】実施例２の第１の鍵管理メッセージ情報の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例について図面を参照して詳細に説明する。各図において共通の構成には同一の参照符号が付されている。
【実施例１】
【００１６】
図１は、実施例１のシステムの構成例を示す図である。
【００１７】
実施例１のシステムは、センタ鍵管理サーバ１００、工場鍵管理サーバ１１０、製造ライン端末１２０、及び装置１３０から構成される。なお、工場鍵管理サーバ１１０、製造ライン端末１２０、及び装置１３０は、製造工場に含まれる構成である。また、拠点とセンタ鍵管理サーバ１００を含むシステムは、異なるシステムを構成する。
【００１８】
センタ鍵管理サーバ１００及び工場鍵管理サーバ１１０は、第１のネットワーク１５０を介して接続される。工場鍵管理サーバ１１０及び製造ライン端末１２０は、第２のネットワーク１６０を介して接続される。また、製造ライン端末１２０及び装置１３０は、第３のネットワーク１７０を介して接続される。
【００１９】
第１のネットワーク１５０、第２のネットワーク１６０、及び第３のネットワーク１７０は、例えば、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。なお、本実施例は、ネットワークの種別及び接続方式（有線又は無線）に限定されない。
【００２０】
本実施例では、センタ鍵管理サーバ１００は、オンプレミスなものとして記載しているが、クラウドシステムを用いてセンタ鍵管理サーバ１００を実現してもよい。本実施例では、工場鍵管理サーバ１１０及び製造ライン端末１２０を別々の装置として記載しているが、各計算機が有する機能を一つの計算機にまとめてもよい。
【００２１】
本実施例では、装置１３０の製造工程において、製造工場の外部に設置されたセンタ鍵管理サーバ１００によって発行されたアプリケーション鍵を書き込む鍵書込工程を例に説明する。
【００２２】
装置１３０は、製造工場において生産される車載機器等の部品（モジュール）である。センタ鍵管理サーバ１００は、装置１３０に書込む鍵を生成する。工場鍵管理サーバ１１０は、製造工場全体を管理する。また、工場鍵管理サーバ１１０は、センタ鍵管理サーバ１００によって生成された鍵を受信し、製造ライン端末１２０を介して、装置１３０に当該鍵を送信する。製造ライン端末１２０は、工場鍵管理サーバ１１０及び装置１３０の間を中継する端末である。
【００２３】
図２は、実施例１のセンタ鍵管理サーバ１００のハードウェア構成及びソフトウェア構成の一例を示す図である。
【００２４】
センタ鍵管理サーバ１００は、ハードウェアとして、プロセッサ２０１、メモリ２０２、記憶装置２０３、ネットワークインタフェース２０４、及びＩ／Ｏインタフェース２０５を有する。各構成は、バス等を介して接続される。
【００２５】
プロセッサ２０１は、メモリ２０２に格納されるプログラムを実行する。プロセッサ２０１がプログラムにしたがって処理を実行することによって所定の機能を有するモジュールとして動作する。以下の説明では、モジュールを主語に説明する場合、プロセッサ２０１が当該モジュールを実現するプログラムを実行していることを示す。
【００２６】
メモリ２０２は、プロセッサ２０１が実行するプログラム及び当該プログラムが使用する情報を格納する。また、メモリ２０２は、ワークエリア等の記憶領域を含む。メモリ２０２に格納されるプログラムについては後述する。
【００２７】
記憶装置２０３は、データを永続的に格納する。記憶装置２０３は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。記憶装置２０３に格納されるデータについては後述する。
【００２８】
ネットワークインタフェース２０４は、ネットワークを介して外部の装置と通信するためのインタフェースである。本実施例では、センタ鍵管理サーバ１００は、ネットワークインタフェース２０４を介して第１のネットワーク１５０に接続する。
【００２９】
Ｉ／Ｏインタフェース２０５は、入力装置２０６及び出力装置２０７等の外部装置と接続するためのインタフェースである。なお、入力装置２０６は、キーボード、マウス、及びタッチパネル等を含み、また、出力装置２０７は、ディスプレイ及びタッチパネル等を含む。
【００３０】
センタ鍵管理サーバ１００のメモリ２０２は、制御モジュール２１０を実現するプログラムを格納する。
【００３１】
制御モジュール２１０は、センタ鍵管理サーバ１００全体を制御する。また、制御モジュール２１０は、データの暗号化処理及び復号処理を実行する。なお、本実施例では、共通鍵暗号方式にしたがった暗号化処理及び復号処理が実行されるものとする。
【００３２】
制御モジュール２１０は、鍵生成モジュール２１１、第１の暗号化モジュール２１２、第１のＭＡＣ生成モジュール２１３、第２の復号モジュール２１４、第２のＭＡＣ検証モジュール２１５、鍵導出モジュール２２６、及び第２の暗号化モジュール２１７を含む。なお、制御モジュール２１０は、鍵生成モジュール２１１、第１の暗号化モジュール２１２、第１のＭＡＣ生成モジュール２１３、第２の復号モジュール２１４、第２のＭＡＣ検証モジュール２１５、鍵導出モジュール２２６、及び第２の暗号化モジュール２１７を一つの暗号演算モジュールとして含んでもよい。
【００３３】
鍵生成モジュール２１１は、暗号化等に使用する鍵として、ランダムなビット列を生成する。
【００３４】
第１の暗号化モジュール２１２は、共通鍵暗号方式の鍵を用いて平文を暗号化することによって暗号文を生成する。具体的には、第１の暗号化モジュール２１２は、式（１）に示すように、共通鍵暗号方式の鍵及び平文を変数とする第１の暗号化関数Ｅｎｃ１を用いて暗号文を算出する。
【００３５】
【数１】
2018110355.tif 000003
【００３６】
ここで、ｋは共通鍵暗号方式の鍵を表し、ｐは平文を表し、また、ｃは暗号文を表す。
【００３７】
第１のＭＡＣ生成モジュール２１３は、共通鍵暗号方式の鍵を用いてＭＡＣ生成対象データのＭＡＣ値を生成する。具体的には、第１のＭＡＣ生成モジュール２１３は、式（２）に示すように、共通鍵暗号方式の鍵及びＭＡＣ生成対象データを変数とする第１のＭＡＣ生成関数ＧｅｎＭＡＣ１を用いてＭＡＣ値を算出する。
【００３８】
【数２】
2018110355.tif 000004
【００３９】
ここで、ｍはＭＡＣ生成対象データを表し、ｔはＭＡＣ値を表す。
【００４０】
第２の復号モジュール２１４は、共通鍵暗号方式の鍵を用いて暗号文を復号することによって平文を生成する。具体的には、第２の復号モジュール２１４は、式（３）に示すように、共通鍵暗号方式の鍵及び暗号文を変数とする第２の復号関数Ｄｅｃ２を用いて平文を算出する。
【００４１】
【数３】
2018110355.tif 000005
【００４２】
第２のＭＡＣ検証モジュール２１５は、共通鍵暗号方式の鍵を用いて、ＭＡＣ対象データ及びＭＡＣ値の組の正当性を検証する。具体的には、第２のＭＡＣ検証モジュール２１５は、式（４）に示すように、共通鍵暗号方式の鍵、ＭＡＣ対象データ、及びＭＡＣ値を変数とする第２のＭＡＣ検証関数ＶｅｒｉｆｙＭＡＣ２を用いてＭＡＣ値の検証を行う。
【００４３】
【数４】
2018110355.tif 000006
【００４４】
ここで、ｖは検証結果を表す。なお、算出結果ｖは「０」又は「１」のいずれかとなる。「０」は失敗を示し、「１」は成功を示す。
【００４５】
鍵導出モジュール２１６は、共通鍵暗号方式のオリジナル鍵及び付加データを用いて導出鍵を生成する。具体的には、鍵導出モジュール２１６は、式（５）に示すように、共通鍵暗号方式の鍵のオリジナル鍵及び付加データを変数とする鍵導出関数ＫＤＦを用いて導出鍵を算出する。
【００４６】
【数５】
2018110355.tif 000007
【００４７】
ここで、ｋは共通鍵暗号方式の鍵のオリジナル鍵を表し、Ｄａｔａは付加データを表し、また、ｋ＿ｄｅｒｉｖｅｄは導出鍵を表す。
【００４８】
第２の暗号化モジュール２１７は、共通鍵暗号方式の鍵を用いて平文を暗号化することによって暗号文を生成する。第２の暗号化モジュール２１７は、第１の暗号化モジュール２１２と同様の機能であるが、暗号化に使用する関数が異なる。なお、第２の暗号化モジュール２１７は後述する第２の暗号化モジュール５１４と同一のものであるため、第２の暗号化モジュール２１７が使用する関数については、装置１３０の構成の説明において示す。
【００４９】
センタ鍵管理サーバ１００の記憶装置２０３は、装置鍵情報２５０及び第１の鍵管理メッセージ情報２６０を格納する。装置鍵情報２５０の詳細は図６を用いて説明する。また、第１の鍵管理メッセージ情報２６０の詳細は図７を用いて説明する。なお、装置鍵情報２５０及び第１の鍵管理メッセージ情報２６０は、メモリ２０２に格納されてもよい。
【００５０】
図３は、実施例１の工場鍵管理サーバ１１０のハードウェア構成及びソフトウェア構成の一例を示す図である。
【００５１】
工場鍵管理サーバ１１０は、ハードウェアとして、プロセッサ３０１、メモリ３０２、記憶装置３０３、ネットワークインタフェース３０４、及びＩ／Ｏインタフェース３０５を有する。各構成は、バス等を介して接続される。また、Ｉ／Ｏインタフェース３０５には、入力装置３０６及び出力装置３０７が接続される。
【００５２】
プロセッサ３０１、メモリ３０２、記憶装置３０３、ネットワークインタフェース３０４、及びＩ／Ｏインタフェース３０５は、プロセッサ２０１、メモリ２０２、記憶装置２０３、ネットワークインタフェース２０４、及びＩ／Ｏインタフェース２０５と同様のものである。また、入力装置３０６及び出力装置３０７は、入力装置２０６及び出力装置２０７と同様のものである。
【００５３】
工場鍵管理サーバ１１０のメモリ３０２は、制御モジュール３１０を実現するプログラムを格納する。
【００５４】
制御モジュール３１０は、工場鍵管理サーバ１１０全体を制御する。また、制御モジュール３１０は、アプリケーション鍵の書込処理の成否を検証するメッセージ検証モジュール３１１を含む。
【００５５】
メッセージ検証モジュール３１１は、二つのメッセージを比較することによって、アプリケーション鍵の書込処理が成功したか否かを判定する。具体的には、メッセージ検証モジュール３１１は、二つのメッセージが一致している場合、アプリケーション鍵の書込処理の成功と判定する。
【００５６】
工場鍵管理サーバ１１０の記憶装置３０３は、第２の鍵管理メッセージ情報３５０を格納する。第２の鍵管理メッセージ情報３５０は、第１の鍵管理メッセージ情報２６０と同様のデータ構造である。なお、第２の鍵管理メッセージ情報３５０は、メモリ３０２に格納されてもよい。
【００５７】
図４は、実施例１の製造ライン端末１２０のハードウェア構成及びソフトウェア構成の一例を示す図である。
【００５８】
製造ライン端末１２０は、ハードウェアとして、プロセッサ４０１、メモリ４０２、記憶装置４０３、ネットワークインタフェース４０４、及びＩ／Ｏインタフェース４０５を有する。各構成は、バス等を介して接続される。また、Ｉ／Ｏインタフェース４０５には、入力装置４０６及び出力装置４０７が接続される。
【００５９】
プロセッサ４０１、メモリ４０２、記憶装置４０３、ネットワークインタフェース４０４、及びＩ／Ｏインタフェース４０５は、プロセッサ２０１、メモリ２０２、記憶装置２０３、ネットワークインタフェース２０４、及びＩ／Ｏインタフェース２０５と同様のものである。また、入力装置４０６及び出力装置４０７は、入力装置２０６及び出力装置２０７と同様のものである。
【００６０】
製造ライン端末１２０のメモリ４０２は、製造ライン端末１２０全体を制御する制御モジュール４１０を実現するプログラムを格納する。
【００６１】
製造ライン端末１２０の記憶装置４０３は、工場鍵管理サーバ１１０から受信した書込用メッセージ４４０、及び装置１３０から受信した検証用メッセージ４５０を格納する。なお、書込用メッセージ４４０及び検証用メッセージ４５０は、メモリ４０２に格納されてもよい。
【００６２】
図５は、実施例１の装置１３０のハードウェア構成及びソフトウェア構成の一例を示す図である。
【００６３】
装置１３０は、ハードウェアとして、プロセッサ５０１、メモリ５０２、記憶装置５０３、及びネットワークインタフェース５０４を有する。各構成は、バス等を介して接続される。
【００６４】
プロセッサ５０１、メモリ５０２、記憶装置５０３、及びネットワークインタフェース５０４は、プロセッサ２０１、メモリ２０２、記憶装置２０３、及びネットワークインタフェース２０４と同様のものである。
【００６５】
装置１３０のメモリ５０２は、制御モジュール５１０を実現するプログラムを格納する。
【００６６】
制御モジュール５１０は、装置１３０全体を制御する。また、制御モジュール５１０は、データの暗号化処理及び復号処理を実行する。なお、本実施例では、共通鍵暗号方式にしたがった暗号化処理及び復号処理が実行されるものとする。
【００６７】
制御モジュール５１０は、第１の復号モジュール５１１、第１のＭＡＣ検証モジュール５１２、書込モジュール５１３、第２の暗号化モジュール５１４、第２のＭＡＣ生成モジュール５１５、及び鍵導出モジュール５１６を含む。なお、制御モジュール５１０は、第１の復号モジュール５１１、第１のＭＡＣ検証モジュール５１２、書込モジュール５１３、第２の暗号化モジュール５１４、第２のＭＡＣ生成モジュール５１５、及び鍵導出モジュール５１６を一つの暗号演算モジュールとして含んでもよい。
【００６８】
第１の復号モジュール５１１は、共通鍵暗号方式の鍵を用いて暗号文を復号することによって平文を生成する。具体的には、第１の復号モジュール５１１は、式（６）に示すように、共通鍵暗号方式の鍵及び暗号文を変数とする第１の復号関数Ｄｅｃ１を用いて平文を算出する。
【００６９】
【数６】
2018110355.tif 000008
【００７０】
ここで、ｋは共通鍵暗号方式の鍵を表し、ｃは暗号文を表し、また、ｐは平文を表す。
【００７１】
なお、第１の暗号化関数Ｅｎｃ１と第１の復号関数Ｄｅｃ１との間には、式（７）に示す関係が成り立つ。
【００７２】
【数７】
2018110355.tif 000009
【００７３】
第１のＭＡＣ検証モジュール５１２は、共通鍵暗号方式の鍵を用いて、ＭＡＣ対象データ及びＭＡＣ値の組の正当性を検証する。具体的には、第１のＭＡＣ検証モジュール５１２は、式（８）に示すように、共通鍵暗号方式の鍵、ＭＡＣ対象データ、及びＭＡＣ値を変数とする第１のＭＡＣ検証関数ＶｅｒｉｆｙＭＡＣ１を用いて検証を行う。
【００７４】
【数８】
2018110355.tif 000010
【００７５】
ここで、ｍはＭＡＣ対象データを表し、ｔはＭＡＣ値を表し、また、ｖは検証結果を表す。なお、算出結果ｖは「０」又は「１」のいずれかとなる。「０」は失敗を示し、「１」は成功を示す。
【００７６】
式（８）は第１のＭＡＣ生成関数ＧｅｎＭＡＣ１を用いて式（９）のように変形できる。
【００７７】
【数９】
2018110355.tif 000011
【００７８】
ここで、関数Ｃｏｍｐａｒｅは比較関数を表し、比較関数Ｃｏｍｐａｒｅ（ａ，ｂ）の値は、ａ及びｂが一致する場合「１」となり、ａ及びｂが一致しない場合「０」となる。
【００７９】
書込モジュール５１３は、共通鍵暗号方式の鍵及び当該鍵が書き込まれた回数（カウンタ値）を書き込む。
【００８０】
第２の暗号化モジュール５１４は、共通鍵暗号方式の鍵を用いて平文を暗号化することによって暗号文を生成する。具体的には、第２の暗号化モジュール５１４は、式（１０）に示すように、共通鍵暗号方式の鍵及び平文を変数とする第２の暗号化関数Ｅｎｃ２を用いて暗号文を算出する。
【００８１】
【数１０】
2018110355.tif 000012
【００８２】
なお、第２の暗号化関数Ｅｎｃ２と第２の復号関数Ｄｅｃ２との間には、式（１１）に示す関係が成り立つ。
【００８３】
【数１１】
2018110355.tif 000013
【００８４】
第２のＭＡＣ生成モジュール５１５は、共通鍵暗号方式の鍵を用いてＭＡＣ生成対象データのＭＡＣ値を生成する。具体的には、第２のＭＡＣ生成モジュール５１５は、式（１２）に示すように、共通鍵暗号方式の鍵及びＭＡＣ生成対象データを変数とする第２のＭＡＣ生成関数ＧｅｎＭＡＣ２を用いてＭＡＣ値を算出する。
【００８５】
【数１２】
2018110355.tif 000014
【００８６】
なお、式（４）は第２のＭＡＣ生成関数ＧｅｎＭＡＣ２を用いて式（１３）のように変形できる。
【００８７】
【数１３】
2018110355.tif 000015
【００８８】
鍵導出モジュール５１６は、共通鍵暗号方式のオリジナル鍵及び付加データを用いて導出鍵を生成する。鍵導出モジュール５１６は、鍵導出モジュール２１６と同一の鍵導出関数ＫＤＦを用いて導出鍵を生成する。
【００８９】
記憶装置５０３は、装置ＩＤ５５０、認証鍵５６０、アプリケーション鍵５７０、及びカウンタ値５８０を格納する。
【００９０】
装置ＩＤ５５０は、装置１３０を一意に識別するための識別情報である。装置ＩＤ５５０は、予め、装置１３０に設定される。本実施例では、センタ鍵管理サーバ１００は、アプリケーション鍵の書込処理の開始前に、各装置１３０の装置ＩＤ５５０を把握しているものとする。
【００９１】
認証鍵５６０は、暗号化処理及び復号処理に用いられる鍵である。認証鍵５６０は、アプリケーション鍵の書込処理の開始前に、センタ鍵管理サーバ１００及び装置１３０との間で共有される。
【００９２】
アプリケーション鍵５７０は、装置１３０に書き込まれたアプリケーション鍵である。なお、アプリケーション鍵は、装置１３０上で稼働するアプリケーションが使用する鍵である。後述するように、センタ鍵管理サーバ１００によって、アプリケーション鍵が装置１３０に書き込まれる。なお、アプリケーション鍵の書き込み時に、古いアプリケーション鍵５７０が存在する場合、書込モジュール５１３は、古いアプリケーション鍵５７０を新しいアプリケーション鍵５７０に更新する。
【００９３】
カウンタ値５８０は、装置１３０にアプリケーション鍵５７０が書き込まれた回数である。アプリケーション鍵の書込処理の開始前、センタ鍵管理サーバ１００及び装置１３０が保持するカウンタ値は同一の値である。
【００９４】
図６は、実施例１の装置鍵情報２５０の一例を示す図である。
【００９５】
装置鍵情報２５０は、装置ＩＤ６０１、認証鍵６０２、アプリケーション鍵６０３、アプリケーション鍵カウンタ６０４、及び状態６０５から構成されるレコードを含む。一つのレコードが一つの装置１３０に対応する。
【００９６】
装置ＩＤ６０１及び認証鍵６０２は、センタ鍵管理サーバ１００及び装置１３０が共有する装置ＩＤ及び認証鍵を格納するカラムである。
【００９７】
アプリケーション鍵６０３は、装置１３０に書き込むアプリケーション鍵を格納するカラムである。
【００９８】
アプリケーション鍵カウンタ６０４は、アプリケーション鍵の書き込み回数（カウンタ値）を格納するカラムである。
【００９９】
状態６０５は、アプリケーション鍵の書込処理の状態を格納するカラムである。状態６０５には、「生成済み」、「書込済み」、及び「エラー」のいずれかが格納される。
【０１００】
「生成済み」は、センタ鍵管理サーバ１００によって生成されたアプリケーション鍵の書込処理の成否について検証されていない状態を示す。「書込済み」は、アプリケーション鍵の書込処理の成否の検証結果が成功であることを示す。「エラー」は、アプリケーション鍵の書込処理の成否の検証結果が失敗であることを示す。
【０１０１】
図７は、実施例１の第１の鍵管理メッセージ情報２６０の一例を示す図である。
【０１０２】
第１の鍵管理メッセージ情報２６０は、装置ＩＤ７０１、書込用メッセージ７０２、事前検証用メッセージ７０３、検証用メッセージ７０４、及び検証結果７０５から構成されるレコードを含む。一つのレコードが一つの装置１３０に対応する。
【０１０３】
なお、第２の鍵管理メッセージ情報３５０のデータ構造は、第１の鍵管理メッセージ情報２６０と同一である。ただし、第１の鍵管理メッセージ情報２６０はセンタ鍵管理サーバ１００によって管理され、第２の鍵管理メッセージ情報３５０は工場鍵管理サーバ１１０によって管理されるため、アプリケーション鍵の書込処理の実行中は、各情報は非同期で更新される。
【０１０４】
装置ＩＤ７０１は、装置ＩＤ６０１と同一のものである。
【０１０５】
書込用メッセージ７０２は、アプリケーション鍵の書込処理に用いられる書込用メッセージを格納するカラムである。
【０１０６】
事前検証用メッセージ７０３は、工場鍵管理サーバ１１０がアプリケーション鍵の書込処理の成否を検証するための事前検証用メッセージを格納するカラムである。後述するように、事前検証用メッセージは、センタ鍵管理サーバ１００によって生成される。
【０１０７】
検証用メッセージ７０４は、センタ鍵管理サーバ１００がアプリケーション鍵の書込処理の成否を検証するための検証用メッセージを格納するカラムである。検証用メッセージ７０４は、装置１３０によって生成される。
【０１０８】
検証結果７０５は、アプリケーション鍵の書込処理の成否の検証結果を格納するカラムである。なお、第１の鍵管理メッセージ情報２６０の検証結果７０５には、センタ鍵管理サーバ１００が行った検証の結果が格納され、第２の鍵管理メッセージ情報３５０の検証結果７０５には、工場鍵管理サーバ１１０が行った検証の結果が格納される。
【０１０９】
ここで、本実施例において用いられる、書込用メッセージ、事前検証用メッセージ、及び検証用メッセージのフォーマットについて説明する。以下の説明では、書込用メッセージを表す記号を「Ｍ」、検証用メッセージを表す記号を「Ｍ’」、事前検証用メッセージを表す記号を「Ｍ’＿ｐｒｅ」と定義する。
【０１１０】
まず、書込用メッセージのフォーマットについて説明する。
【０１１１】
書込用メッセージは、式（１４）に示すように、ＩＤ部、暗号文部、及びＭＡＣ部の三つの部分から構成される。
【０１１２】
【数１４】
2018110355.tif 000016
【０１１３】
ここで、Ｍ＿ＩＤはＩＤ部を表し、Ｍ＿ｅｎｃは暗号文部を表し、Ｍ＿ｍａｃはＭＡＣ部を表す。また、記号「｜｜」は、データの結合を示す記号である。
【０１１４】
ＩＤ部は、式（１５）に示すように、装置ＩＤ及び付加ＩＤから生成される。
【０１１５】
【数１５】
2018110355.tif 000017
【０１１６】
ここで、ＩＤ＿ｍｏｄは装置ＩＤを表し、ＩＤ＿ａｄｄｉｔｉｏｎａ１は付加ＩＤを表す。
【０１１７】
認証鍵又はアプリケーション鍵が複数存在する場合、付加ＩＤには、各鍵を一意に識別するための情報を含める。付加ＩＤは、例えば、式（１６）のように与えられる。
【０１１８】
【数１６】
2018110355.tif 000018
【０１１９】
ここで、ＩＤ＿ＡｕｔｈＫｅｙは認証鍵を特定するＩＤを表し、ＩＤ＿ＡｐｐＫｅｙはアプリケーション鍵を特定するＩＤを表す。
【０１２０】
暗号文部は、式（１７）に示すように、暗号化に用いる鍵、並びに、カウンタ値及びアプリケーション鍵を結合した値を変数とする第１の暗号化関数Ｅｎｃ１を用いて生成される。なお、暗号化に用いる鍵は、式（１８）に示すように、認証鍵及び第１の固定値を変数とする鍵導出関数ＫＤＦを用いて算出される。
【０１２１】
【数１７】
2018110355.tif 000019
【０１２２】
【数１８】
2018110355.tif 000020
【０１２３】
ここで、ＣＮＴ＿ａｐｐはカウンタ値を表し、ｋ＿ａｐｐはアプリケーション鍵を表し、ｋ＿ａｕｔｈは認証鍵を表し、また、Ｃｏｎｓｔ＿１は第１の固定値を表す。
【０１２４】
ＭＡＣ部（ＭＡＣ値）は、式（１９）に示すように、ＭＡＣ値を算出するための鍵、並びに、ＩＤ部及び暗号文部を結合した値を変数とする第１のＭＡＣ生成関数ＧｅｎＭＡＣ１を用いて生成される。なお、ＭＡＣ値を算出するための鍵は、式（２０）に示すように、認証鍵及び第２の固定値を変数とする鍵導出関数ＫＤＦを用いて算出される。
【０１２５】
【数１９】
2018110355.tif 000021
【０１２６】
【数２０】
2018110355.tif 000022
【０１２７】
ここで、Ｃｏｎｓｔ＿２は第２の固定値を表す。
【０１２８】
次に、事前検証用メッセージ及び検証用メッセージのフォーマットについて説明する。
【０１２９】
検証用メッセージは、式（２１）に示すように、ＩＤ部、暗号文部、及びＭＡＣ部の三つの部分から構成される。
【０１３０】
【数２１】
2018110355.tif 000023
【０１３１】
ここで、Ｍ’＿ＩＤはＩＤ部を表し、Ｍ’＿ｅｎｃは暗号文部を表し、Ｍ’＿ｍａｃはＭＡＣ部を表す。
【０１３２】
事前検証用メッセージは、検証用メッセージの暗号文部である。すなわち、式（２２）に示すような関係となる。
【０１３３】
【数２２】
2018110355.tif 000024
【０１３４】
ＩＤ部は、式（２３）に示すように、装置ＩＤ及び付加ＩＤから生成される。
【０１３５】
【数２３】
2018110355.tif 000025
【０１３６】
ここで、ＩＤ＿ｍｏｄは装置ＩＤ５５０を表し、ＩＤ＿ａｄｄｉｔｉｏｎａｌは付加ＩＤを表す。検証用メッセージのＩＤ部は、書込用メッセージのＩＤ部と同一の値となる。
【０１３７】
暗号文部は、式（２４）に示すように、暗号化に用いる鍵及びカウンタ値を変数とする第２の暗号化関数Ｅｎｃ２から生成される。なお、暗号化に用いる鍵は、式（２５）に示すように、アプリケーション鍵及び第３の固定値を変数とする鍵導出関数ＫＤＦを用いて算出される。
【０１３８】
【数２４】
2018110355.tif 000026
【０１３９】
【数２５】
2018110355.tif 000027
【０１４０】
ここで、ＣＮＴ＿ａｐｐはカウンタ値を表し、ｋ＿ａｐｐはアプリケーション鍵を表し、Ｃｏｎｓｔ＿３は第３の固定値を表す。
【０１４１】
ＭＡＣ部（ＭＡＣ値）は、式（２６）に示すように、ＭＡＣ値を算出するための鍵、並びに、ＩＤ部及び暗号文部を結合した値を変数とする第２のＭＡＣ生成関数ＧｅｎＭＡＣ２を用いて算出される。なお、ＭＡＣ値を算出するための鍵は、式（２７）に示すように、アプリケーション鍵及び第４の固定値を変数とする鍵導出関数ＫＤＦを用いて算出される。
【０１４２】
【数２６】
2018110355.tif 000028
【０１４３】
【数２７】
2018110355.tif 000029
【０１４４】
ここで、Ｃｏｎｓｔ＿４は第４の固定値を表す。
【０１４５】
以上が書込用メッセージ、事前検証用メッセージ、及び検証用メッセージのフォーマットの説明である。
【０１４６】
次に、鍵書込工程に処理について説明する。
【０１４７】
図８は、実施例１の鍵書込工程の概要を説明するフローチャートである。
【０１４８】
鍵書込工程では、システムは、まず、鍵生成／鍵配信フェーズに移行する（ステップＳ８０１）。当該フェーズでは、以下のような処理が実行される。
【０１４９】
センタ鍵管理サーバ１００の管理者等が、センタ鍵管理サーバ１００にアプリケーション鍵を発行する装置１３０の装置ＩＤを登録する。センタ鍵管理サーバ１００は、登録された装置ＩＤの数だけ、書込用メッセージ及び事前検証用メッセージを生成する。すなわち、一つの装置ＩＤに対して書込用メッセージ及び事前検証用メッセージの組が一つ生成される。センタ鍵管理サーバ１００は、書込用メッセージ及び事前検証用メッセージを工場鍵管理サーバ１１０に送信する。
【０１５０】
次に、システムは、鍵書込フェーズに移行する（ステップＳ８０２）。当該フェーズでは、以下のような処理が実行される。
【０１５１】
工場鍵管理サーバ１１０は、受信した書込用メッセージを製造ライン端末１２０に送信する。製造ライン端末１２０は、アプリケーション鍵を装置１３０に書き込むために、受信した書込用メッセージを対象の装置１３０に送信する。装置１３０は、アプリケーション鍵の書込処理を実行した後、製造ライン端末１２０を介して検証用メッセージを工場鍵管理サーバ１１０に送信する。工場鍵管理サーバ１１０は、検証用メッセージの暗号文部及び事前検証用メッセージを比較することによって、アプリケーション鍵の書込処理の成否を検証する。
【０１５２】
次に、システムは、センタ登録フェーズに移行する（ステップＳ８０３）。当該フェーズでは、以下のような処理が実行される。
【０１５３】
工場鍵管理サーバ１１０は、センタ鍵管理サーバ１００に検証用メッセージを送信する。センタ鍵管理サーバ１００は、検証用メッセージを用いてアプリケーション鍵の書込処理の成否を検証する。また、センタ鍵管理サーバ１００は、検証結果に基づいて装置鍵情報２５０を更新する。
【０１５４】
本実施例の鍵書込工程では、製造ラインが稼働するのは鍵書込フェーズのみである。鍵書込フェーズにおいて、工場鍵管理サーバ１１０は、センタ鍵管理サーバ１００と通信を行うことなく、アプリケーション鍵の書込処理の成否を検証することができる。また、アプリケーション鍵の書込処理の成否の検証において、書込用メッセージに含まれるアプリケーション鍵は暗号化されており、センタ鍵管理サーバ１００及び装置１３０のみが復号できる。すなわち、工場鍵管理サーバ１１０及び製造ライン端末１２０にアプリケーション鍵を秘匿したまま、装置１３０へアプリケーション鍵を書き込むことができる。
【０１５５】
図９Ａ及び図９Ｂは、実施例１の鍵書込工程における処理の流れを説明するシーケンス図である。
【０１５６】
ステップＳ９０１からステップＳ９０４までの処理は、鍵生成／鍵配信フェーズにおいて実行される処理である。
【０１５７】
まず、センタ鍵管理サーバ１００は、Ｎ個の装置１３０に対するアプリケーション鍵の発行要求を受け付ける（ステップＳ９０１）。当該発行要求は、例えば、管理者が入力装置２０６を操作することによって入力される。なお、当該発行要求には、対象となる装置１３０の装置ＩＤが含まれる。
【０１５８】
センタ鍵管理サーバ１００は、メッセージ生成処理を実行する（ステップＳ９０２）。メッセージ生成処理では、各装置１３０の書込用メッセージ及び事前検証用メッセージが生成される。なお、メッセージ生成処理の詳細は図１０を用いて説明する。
【０１５９】
センタ鍵管理サーバ１００は、工場鍵管理サーバ１１０に、各装置１３０の装置ＩＤ、書込用メッセージ、及び事前検証用メッセージを送信する（ステップＳ９０３）。
【０１６０】
工場鍵管理サーバ１１０は、センタ鍵管理サーバ１００からメッセージを受信した場合、第２の鍵管理メッセージ情報３５０を更新する（ステップＳ９０４）。
【０１６１】
具体的には、制御モジュール３１０は、第２の鍵管理メッセージ情報３５０にレコードを追加し、追加されたレコードの装置ＩＤ７０１、書込用メッセージ７０２、及び事前検証用メッセージ７０３に、受信した装置ＩＤ、書込用メッセージ、及び事前検証用メッセージを設定する。すでに、受信した装置ＩＤに対応するレコードが存在する場合、制御モジュール３１０は、当該レコードの装置ＩＤ７０１、書込用メッセージ７０２、及び事前検証用メッセージ７０３に、受信した装置ＩＤ、書込用メッセージ、及び事前検証用メッセージを上書きする。
【０１６２】
ステップＳ９１１からステップＳ９２３までの処理は、鍵書込フェーズにおいて実行される処理である。
【０１６３】
製造ライン端末１２０は、所定のタイミングで、工場鍵管理サーバ１１０に、メッセージ要求を送信する（ステップＳ９１１）。当該メッセージ要求には、アプリケーション鍵を書き込む装置１３０の装置ＩＤが含まれる。
【０１６４】
工場鍵管理サーバ１１０は、メッセージ要求を受信した場合、第２の鍵管理メッセージ情報３５０から対象の装置１３０の書込用メッセージを取得し、製造ライン端末１２０を介して装置１３０に、当該書込用メッセージを送信する（ステップＳ９１２）。具体的には、以下のような処理が実行される。
【０１６５】
制御モジュール３１０が、第２の鍵管理メッセージ情報３５０を参照し、装置ＩＤ７０１がメッセージ要求に含まれる装置ＩＤと一致するレコードを検索する。制御モジュール３１０は、装置ＩＤとともに、検索されたレコードの書込用メッセージ７０２に設定された書込用メッセージを製造ライン端末１２０に送信する。
【０１６６】
製造ライン端末１２０は、書込用メッセージを受信した場合、当該書込用メッセージともに受信した装置ＩＤに対応する装置１３０に、書込用メッセージを送信する。以上が、ステップＳ９１２の処理の説明である。
【０１６７】
装置１３０は、製造ライン端末１２０を介して、工場鍵管理サーバ１１０から書込用メッセージを受信した場合、アプリケーション鍵の書込処理を実行する（ステップＳ９１３）。アプリケーション鍵の書込処理では、書込用メッセージの検証及びアプリケーション鍵の書込が行われる。アプリケーション鍵の書込処理の詳細は図１１を用いて説明する。
【０１６８】
アプリケーション鍵の書込処理が失敗した場合、すなわち、装置１３０にアプリケーション鍵が書き込まれなかった場合、装置１３０は、製造ライン端末１２０を介して工場鍵管理サーバ１１０に、エラー通知を送信する（ステップＳ９１４）。
【０１６９】
製造ライン端末１２０は、エラー通知を受信した場合、不具合工程に移行し（ステップＳ９１５）、また、第２の鍵管理メッセージ情報３５０を更新する（ステップＳ９１６）。
【０１７０】
具体的には、制御モジュール３１０は、第２の鍵管理メッセージ情報３５０を参照し、装置ＩＤ７０１が、エラー通知を送信した装置１３０の装置ＩＤに一致するレコードを検索する。制御モジュール３１０は、検索されたレコードの検証結果７０５に「書込用メッセージエラー」を設定する。
【０１７１】
アプリケーション鍵の書込処理が成功した場合、すなわち、装置１３０にアプリケーション鍵が書き込まれた場合、装置１３０は、検証用メッセージ生成処理を実行する（ステップＳ９１７）。また、装置１３０は、製造ライン端末１２０を介して工場鍵管理サーバ１１０に、検証用メッセージを送信する（ステップＳ９１８）。検証用メッセージ生成処理の詳細は図１２を用いて説明する。
【０１７２】
工場鍵管理サーバ１１０は、検証用メッセージを受信した場合、アプリケーション鍵の書込処理の検証処理を実行する（ステップＳ９１９）。アプリケーション鍵の書込処理の検証処理の詳細は図１３を用いて説明する。
【０１７３】
検証結果が失敗である場合、工場鍵管理サーバ１１０は、失敗を通知する検証結果を製造ライン端末１２０に送信する（ステップＳ９２０）。製造ライン端末１２０は、当該検証結果を受信した場合、アプリケーション鍵の書込処理が失敗した装置１３０を不具合工程へ移行させる（ステップＳ９２１）。
【０１７４】
検証結果が成功である場合、工場鍵管理サーバ１１０は、成功を通知する検証結果を製造ライン端末１２０に送信する（ステップＳ９２２）。製造ライン端末１２０は、当該検証結果を受信した場合、装置１３０を次に工程に移行させる（ステップＳ９２３）。
【０１７５】
ステップＳ９２４からステップＳ９２６までの処理は、センタ登録フェーズにおいて実行される処理である。
【０１７６】
工場鍵管理サーバ１１０は、センタ鍵管理サーバ１００に、受信した全ての検証用メッセージを送信する（ステップＳ９２４）。
【０１７７】
具体的には、工場鍵管理サーバ１１０は、第２の鍵管理メッセージ情報３５０から、検証結果７０５が「成功」であるレコードの装置ＩＤ７０１及び検証用メッセージ７０４をセンタ鍵管理サーバ１００に送信する。このとき、工場鍵管理サーバ１１０は、検証結果７０５が「書込用メッセージエラー」又は「失敗」であるレコードの装置ＩＤ７０１等をセンタ鍵管理サーバ１００に送信してもよい。なお、当該レコードの通知は、別のタイミングで行ってもよい。
【０１７８】
センタ鍵管理サーバ１００は、検証用メッセージを受信した場合、第１の鍵管理メッセージ情報２６０を更新する（ステップＳ９２５）。
【０１７９】
具体的には、制御モジュール２１０は、第１の鍵管理メッセージ情報２６０を参照し、装置ＩＤ７０１が検証用メッセージとともに受信した装置ＩＤに一致するレコードを検索する。制御モジュール２１０は、検索されたエントリの検証用メッセージ７０４に受信した検証用メッセージを設定する。
【０１８０】
なお、制御モジュール２１０は、検証結果７０５が「書込用メッセージエラー」又は「失敗」であるレコードの通知を受信した場合、対応するレコードの検証結果７０５に「書込用メッセージエラー」又は「失敗」を設定する。
【０１８１】
センタ鍵管理サーバ１００は、アプリケーション鍵の書込処理の検証処理を実行する（ステップＳ９２６）。アプリケーション鍵の書込処理の検証処理の詳細は図１４を用いて説明する。
【０１８２】
図１０は、実施例１のセンタ鍵管理サーバ１００が実行するメッセージ生成処理の一例を説明するフローチャートである。
【０１８３】
制御モジュール２１０は、アプリケーション鍵の発行要求に含まれる装置ＩＤの中からターゲット装置ＩＤを選択する（ステップＳ１００１）。
【０１８４】
次に、制御モジュール２１０は、装置鍵情報２５０を参照し、装置ＩＤ６０１がターゲット装置ＩＤに一致するレコードを検索する（ステップＳ１００２）。
【０１８５】
制御モジュール２１０は、ターゲット装置ＩＤに対応する装置１３０のアプリケーション鍵を生成する（ステップＳ１００３）。
【０１８６】
具体的には、制御モジュール２１０が、鍵生成モジュール２１１を呼び出し、アプリケーション鍵の生成を指示する。鍵生成モジュール２１１は、アプリケーション鍵を生成する。
【０１８７】
次に、制御モジュール２１０は、装置鍵情報２５０から検索されレコードを更新する（ステップＳ１００４）。
【０１８８】
具体的には、制御モジュール２１０は、検索されたレコードのアプリケーション鍵６０３に生成されたアプリケーション鍵を設定し、また、当該レコードのアプリケーション鍵カウンタ６０４の値に「１」を加算する。
【０１８９】
次に、制御モジュール２１０は、書込用メッセージを生成する（ステップＳ１００５）。具体的には、以下のような処理が実行される。
【０１９０】
制御モジュール２１０は、式（１５）に示すように、付加ＩＤ及び検索されたレコードの装置ＩＤ６０１の値を結合することによって、書込用メッセージのＩＤ部を算出する。
【０１９１】
制御モジュール２１０は、鍵導出モジュール２１６を呼び出し、暗号化に使用する鍵の生成を指示する。鍵導出モジュール２１６は、第１の固定値及び検索されたレコードの認証鍵６０２の値を代入した式（１８）にしたがって、暗号化に使用する鍵を算出する。制御モジュール２１０は、第１の暗号化モジュール２１２を呼び出し、書込用メッセージの暗号文部の生成を指示する。第１の暗号化モジュール２１２は、暗号化に使用する鍵、並びに、検索されたレコードのアプリケーション鍵６０３及びアプリケーション鍵カウンタ６０４を結合した値を代入した式（１７）にしたがって、書込用メッセージの暗号文部を算出する。
【０１９２】
制御モジュール２１０は、鍵導出モジュール２１６を呼び出し、暗号化に使用する鍵の生成を指示する。鍵導出モジュール２１６は、第２の固定値及び特定されたレコードの認証鍵６０２の値を代入した式（２０）にしたがって、暗号化に使用する鍵を算出する。制御モジュール２１０は、第１のＭＡＣ生成モジュール２１３を呼び出し、書込用メッセージのＭＡＣ部の生成を指示する。第１のＭＡＣ生成モジュール２１３は、暗号化に使用する鍵、並びに、ＩＤ部及び暗号文部を結合した値を代入した式（１９）にしたがって、ＭＡＣ部を算出する。
【０１９３】
制御モジュール２１０は、式（１４）に示すように、ＩＤ部、暗号文部、及びＭＡＣ部を結合することによって、書込用メッセージを生成する。以上がステップＳ１００５の処理の説明である。
【０１９４】
次に、制御モジュール２１０は、事前検証用メッセージを生成する（ステップＳ１００６）。具体的には、以下のような処理が実行される。
【０１９５】
制御モジュール２１０は、鍵導出モジュール２１６を呼び出し、暗号化に使用する鍵の生成を指示する。鍵導出モジュール２１６は、第３の固定値及び検索されたレコードのアプリケーション鍵６０３の値を代入した式（２５）にしたがって、暗号化に使用する鍵を算出する。制御モジュール２１０は、第２の暗号化モジュール２１７を呼び出し、事前検証用メッセージの生成を指示する。第２の暗号化モジュール２１７は、暗号化に使用する鍵、及び、検索されたレコードのアプリケーション鍵カウンタ６０４の値を代入した式（２４）にしたがって、事前検証用メッセージを算出する。
【０１９６】
次に、制御モジュール２１０は、第１の鍵管理メッセージ情報２６０を更新する（ステップＳ１００７）。具体的には、以下のような処理が実行される。
【０１９７】
制御モジュール２１０は、第１の鍵管理メッセージ情報２６０を参照し、装置ＩＤ７０１が、ターゲット装置ＩＤと一致するレコードを検索する。
【０１９８】
レコードが存在しない場合、制御モジュール２１０は、第１の鍵管理メッセージ情報２６０にレコードを追加し、追加されたレコードの装置ＩＤ７０１に、ターゲット装置ＩＤを設定する。また、制御モジュール２１０は、追加されたレコードの書込用メッセージ７０２及び事前検証用メッセージ７０３に、生成された書込用メッセージ及び事前検証用メッセージを設定する。
【０１９９】
レコードが存在する場合、制御モジュール２１０は、検索されたレコードの書込用メッセージ７０２及び事前検証用メッセージ７０３に、生成された書込用メッセージ及び事前検証用メッセージを設定する。以上がステップＳ１００７の処理の説明である。
【０２００】
次に、制御モジュール２１０は、装置鍵情報２５０を更新する（ステップＳ１００８）。
【０２０１】
具体的には、制御モジュール２１０は、ターゲット装置ＩＤに対応するレコードの状態６０５に「生成済み」を設定する。
【０２０２】
次に、制御モジュール２１０は、アプリケーション鍵の発行要求に含まれる全ての装置ＩＤについて処理が完了した否かを判定する（ステップＳ１００９）。
【０２０３】
ステップＳ１００９の判定結果がＮＯである場合、制御モジュール２１０は、ステップＳ１００１に戻り、同様の処理を実行する。
【０２０４】
ステップＳ１００９の判定結果がＹＥＳである場合、制御モジュール２１０は、メッセージ生成処理を終了する。
【０２０５】
図１１は、実施例１の装置１３０が実行するアプリケーション鍵の書込処理の一例を説明するフローチャートである。
【０２０６】
制御モジュール５１０は、書込用メッセージのＩＤ部の検証結果が成功か否かを判定する（ステップＳ１１０１）。
【０２０７】
具体的には、制御モジュール５１０は、書込用メッセージのＩＤ部及び装置ＩＤ５５０を比較し、式（１５）の関係を満たすか否かを判定する。式（１５）の関係を満たす場合、制御モジュール５１０は、書込用メッセージのＩＤ部の検証結果が成功であると判定する。
【０２０８】
書込用メッセージのＩＤ部の検証結果が失敗であると判定された場合、制御モジュール５１０は、ステップＳ１１０６に進む。
【０２０９】
書込用メッセージのＩＤ部の検証結果が成功であると判定された場合、制御モジュール５１０は、書込用メッセージからアプリケーション鍵及びカウンタ値を取得する（ステップＳ１１０２）。具体的には、以下のような処理が実行される。
【０２１０】
制御モジュール５１０は、鍵導出モジュール５１６を呼び出して、導出鍵の生成を指示する。鍵導出モジュール５１６は、認証鍵５６０を代入した式（１８）にしたがって、導出鍵を算出する。
【０２１１】
制御モジュール５１０は、第１の復号モジュール５１１を呼び出して、書込用メッセージの暗号文部の復号を指示する。第１の復号モジュール５１１は、導出鍵及び書込用メッセージの暗号文部を代入した式（６）にしたがって、暗号文部を復号する。これによって、制御モジュール５１０は、アプリケーション鍵及びカウンタ値を取得できる。以上がステップＳ１１０２の処理の説明である。
【０２１２】
次に、制御モジュール５１０は、カウンタ値の検証結果が成功であるか否かを判定する（ステップＳ１１０３）。
【０２１３】
具体的には、制御モジュール５１０は、書込用メッセージから取得したカウンタ値が、記憶装置５０３に格納されるカウンタ値５８０より大きいか否かを判定する。書込用メッセージから取得したカウンタ値が、カウンタ値５８０より大きい場合、制御モジュール５１０は、カウンタ値の検証結果が成功であると判定する。
【０２１４】
カウンタ値の検証結果が失敗であると判定された場合、制御モジュール５１０は、ステップＳ１１０６に進む。
【０２１５】
カウンタ値の検証結果が成功であると判定された場合、制御モジュール５１０は、書込用メッセージのＭＡＣ部の検証結果が成功か否かを判定する（ステップＳ１１０４）。具体的には、以下のような処理が実行される。
【０２１６】
制御モジュール５１０は、鍵導出モジュール５１６を呼び出して、ＭＡＣ値を算出するための鍵の生成を指示する。鍵導出モジュール５１６は、認証鍵５６０及び第２の固定値を代入した式（２０）にしたがって、ＭＡＣ値を算出するための鍵を算出する。
【０２１７】
制御モジュール５１０は、第１のＭＡＣ検証モジュール５１２を呼び出し、書込用メッセージのＭＡＣ部の検証を指示する。第１のＭＡＣ検証モジュール５１２は、ＭＡＣ値を算出するための鍵、ＭＡＣ生成対象データ、及び書込用メッセージのＭＡＣ部を代入した式（８）及び式（９）にしたがって、書込用メッセージのＭＡＣ部の検証を行う。以上がステップＳ１１０４の処理の説明である。
【０２１８】
書込用メッセージのＭＡＣ部の検証結果が失敗であると判定された場合、制御モジュール５１０は、ステップＳ１１０６に進む。
【０２１９】
書込用メッセージのＭＡＣ部の検証結果が成功であると判定された場合、制御モジュール５１０は、書込用メッセージから取得されたアプリケーション鍵及びカウンタ値を記憶装置５０３に保存する（ステップＳ１１０５）。その後、制御モジュール５１０は、アプリケーション鍵の書込処理を終了する。
【０２２０】
具体的には、制御モジュール５１０は、書込モジュール５１３を呼び出し、記憶装置５０３へのアプリケーション鍵及びカウンタ値の書込を指示する。書込モジュール５１３は、記憶装置５０３にアプリケーション鍵及びカウンタ値を書き込む。なお、既にアプリケーション鍵５７０及びカウンタ値５８０が存在する場合、書込モジュール５１３は、各値を上書きする。
【０２２１】
ステップＳ１１０１、ステップＳ１１０３、及びステップＳ１１０４の判定結果がＮＯである場合、制御モジュール５１０は、製造ライン端末１２０にエラー通知を送信する（ステップＳ１１０６）。その後、制御モジュール５１０は、アプリケーション鍵の書込処理を終了する。
【０２２２】
図１２は、実施例１の装置１３０が実行する検証用メッセージ生成処理の一例を説明するフローチャートである。
【０２２３】
制御モジュール５１０は、検証用メッセージのＩＤ部を生成する（ステップＳ１２０１）。
【０２２４】
具体的には、制御モジュール５１０は、式（２３）に示すように、付加ＩＤ及び装置ＩＤ５５０を結合することによって、検証用メッセージのＩＤ部を算出する。
【０２２５】
制御モジュール５１０は、検証用メッセージの暗号文部を生成する（ステップＳ１２０２）。具体的には、以下のような処理が実行される。
【０２２６】
制御モジュール５１０は、鍵導出モジュール５１６を呼び出し、暗号化に使用する鍵の生成を指示する。鍵導出モジュール５１６は、第３の固定値及びアプリケーション鍵５７０を代入した式（２５）にしたがって、暗号化に使用する鍵を算出する。
【０２２７】
制御モジュール２１０は、第２の暗号化モジュール５１４を呼び出し、書込用メッセージの暗号文部の生成を指示する。第２の暗号化モジュール５１４は、暗号化に使用する鍵、及びカウンタ値５８０を代入した式（２４）にしたがって、検証用メッセージの暗号文部を算出する。
【０２２８】
制御モジュール５１０は、検証用メッセージのＭＡＣ部を生成する（ステップＳ１２０３）。具体的には、以下のような処理が実行される。
【０２２９】
制御モジュール５１０は、鍵導出モジュール５１６を呼び出し、ＭＡＣ値を算出するための鍵の生成を指示する。鍵導出モジュール５１６は、第４の固定値及びアプリケーション鍵５７０を代入した式（２７）にしたがって、ＭＡＣ値を算出するための鍵を算出する。
【０２３０】
制御モジュール５１０は、第２のＭＡＣ生成モジュール５１５を呼び出し、検証用メッセージのＭＡＣ部の生成を指示する。第２のＭＡＣ生成モジュール５１５は、ＭＡＣ値を算出するための鍵、並びに、ＩＤ部及び暗号文部を結合した値を代入した式（２６）にしたがって、ＭＡＣ部を算出する。
【０２３１】
制御モジュール５１０は、検証用メッセージを生成する（ステップＳ１２０４）。
【０２３２】
具体的には、制御モジュール５１０は、式（２１）に示すように、ＩＤ部、暗号文部、及びＭＡＣ部を結合することによって、検証用メッセージを生成する。
【０２３３】
図１３は、実施例１の工場鍵管理サーバ１１０が実行するアプリケーション鍵の書込処理の検証処理の一例を説明するフローチャートである。
【０２３４】
制御モジュール３１０は、検証用メッセージを受信した場合、第２の鍵管理メッセージ情報３５０を参照し、検証用メッセージを送信した装置１３０に対応するレコードを検索する（ステップＳ１３０１）。このとき、制御モジュール３１０は、検索されたレコードの検証用メッセージ７０４に受信した検証用メッセージを設定する。
【０２３５】
制御モジュール３１０は、検証用メッセージの検証結果が成功であるか否かを判定する（ステップＳ１３０２）。具体的には、以下のような処理が実行される。
【０２３６】
制御モジュール３１０は、メッセージ検証モジュール３１１を呼び出して、検証用メッセージの検証を指示する。
【０２３７】
メッセージ検証モジュール３１１は、検証用メッセージの暗号文部を取得する。また、メッセージ検証モジュール３１１は、特定されたレコードの事前検証用メッセージ７０３に設定された事前検証用メッセージを取得する。メッセージ検証モジュール３１１は、検証用メッセージの暗号文部及び事前検証用メッセージが一致するか否かを判定する。検証用メッセージの暗号文部及び事前検証用メッセージが一致する場合、メッセージ検証モジュール３１１は、検証用メッセージの検証結果として成功を出力する。以上が、ステップＳ１３０２に処理の説明である。
【０２３８】
検証用メッセージの検証結果が成功であると判定された場合、制御モジュール３１０は、レコードを更新し（ステップＳ１３０３）、また、成功を通知する検証結果を送信する（ステップＳ１３０４）。その後、制御モジュール３１０は、アプリケーション鍵の書込処理の検証処理を終了する。
【０２３９】
具体的には、制御モジュール３１０は、検索されたレコードの検証結果７０５に「成功」を設定する。
【０２４０】
検証用メッセージの検証結果が失敗であると判定された場合、制御モジュール３１０は、レコードを更新し（ステップＳ１３０５）、また、失敗を通知する検証結果を送信する（ステップＳ１３０６）。その後、制御モジュール３１０は、アプリケーション鍵の書込処理の検証処理を終了する。
【０２４１】
具体的には、制御モジュール３１０は、レコードの検証結果７０５に「失敗」を設定する。
【０２４２】
ステップＳ１３０２の検証方法は一例であって、以下のような検証方法も考えられる。
【０２４３】
事前検証用メッセージと検証用メッセージの暗号文部との相違が１ビットである場合、制御モジュール３１０は、検証結果を出力せずに、再度、センタ鍵管理サーバ１００にメッセージの再送要求を送信する。すなわち、事前検証用メッセージ及び検証用メッセージが再度生成される。
【０２４４】
暗号化において、平文（鍵及びメッセージ）が１ビットでも異なる場合、当該相違は暗号化されたデータの全てビットに反映されるという性質がある。そのため、平文の相違に起因して、事前検証用メッセージ及び検証用メッセージの１ビットのみが異なる可能性は考えにくい。この場合、いずれかのメッセージに伝送エラーに伴うビット反転エラーが発生している可能性が高く、かつ、鍵の書込処理は成功している可能性が高い。そのため、制御モジュール３１０は、事前検証用メッセージと検証用メッセージの暗号文部との相違が１ビットである場合、センタ鍵管理サーバ１００にメッセージの再送要求を送信する。センタ鍵管理サーバ１００は、当該要求を受信した場合、ステップＳ９０２及びステップＳ９０３の処理を実行し、また、工場鍵管理サーバ１１０は、受信した書込用メッセージを装置１３０に送信する。
【０２４５】
一方、事前検証用メッセージと検証用メッセージの暗号文部との相違が２ビット以上である場合、制御モジュール３１０は、ステップＳ１３０５に進む。
【０２４６】
図１４は、実施例１のセンタ鍵管理サーバ１００が実行する検証処理の一例を説明するフローチャートである。
【０２４７】
制御モジュール２１０は、検証用メッセージを受信した場合、第１の鍵管理メッセージ情報２６０を更新する（ステップＳ１４０１）。
【０２４８】
具体的には、制御モジュール２１０は、装置ＩＤ６０１が検証用メッセージとともに受信した装置ＩＤに一致するレコードを検索し、当該レコードの検証用メッセージ７０４に、受信した検証用メッセージを格納する。
【０２４９】
次に、制御モジュール２１０は、検証用メッセージを受信した装置１３０の中から、ターゲット装置１３０を選択する（ステップＳ１４０２）。
【０２５０】
具体的には、制御モジュール２１０は、検証用メッセージ７０４に検証用メッセージが格納されるレコードの中からターゲットレコードを選択する。
【０２５１】
次に、制御モジュール２１０は、検証用メッセージのＩＤ部の検証結果が成功であるか否かを判定する（ステップＳ１４０３）。
【０２５２】
具体的には、制御モジュール２１０は、検証用メッセージのＩＤ部及びターゲットレコードの装置ＩＤ７０１を比較し、式（２３）の関係を満たすか否かを判定する。式（２３）の関係を満たす場合、制御モジュール２１０は、検証用メッセージのＩＤ部の検証結果が成功であると判定する。
【０２５３】
検証用メッセージのＩＤ部の検証結果が失敗であると判定された場合、制御モジュール２１０は、ステップＳ１４０９に進む。
【０２５４】
検証用メッセージのＩＤ部の検証結果が成功であると判定された場合、制御モジュール２１０は、検証用メッセージからカウンタ値を取得する（ステップＳ１４０４）。具体的には、以下のような処理が実行される。
【０２５５】
制御モジュール２１０は、装置鍵情報２５０を参照し、装置ＩＤ６０１がターゲットレコードの装置ＩＤ７０１に一致するレコードを検索し、検索されたレコードのアプリケーション鍵６０３に設定されたアプリケーション鍵を取得する。
【０２５６】
制御モジュール２１０は、鍵導出モジュール２１６を呼び出し、暗号化に使用する鍵の生成を指示する。鍵導出モジュール２１６は、アプリケーション鍵を代入した式（２５）にしたがって、暗号化に使用する鍵を算出する。
【０２５７】
制御モジュール２１０は、第２の復号モジュール２１４を呼び出し、検証用メッセージの暗号文部の復号を指示する。第２の復号モジュール２１４は、暗号化に使用する鍵及び検証用メッセージの暗号文部を代入した式（３）にしたがって検証用メッセージの暗号文部を復号し、平文からカウンタ値を取得する。以上がステップＳ１４０４の処理の説明である。
【０２５８】
次に、制御モジュール２１０は、カウンタ値の検証結果が成功であるか否かを判定する（ステップＳ１４０５）。具体的には、以下のような処理が実行される。
【０２５９】
制御モジュール２１０は、装置鍵情報２５０を参照し、装置ＩＤ６０１がターゲットレコードの装置ＩＤ７０１に一致するレコードを検索し、検索されたレコードのアプリケーション鍵カウンタ６０４の値を取得する。
【０２６０】
制御モジュール２１０は、検証用メッセージから取得したカウンタ値がアプリケーション鍵カウンタ６０４の値と一致するか否かを判定する。検証用メッセージから取得したカウンタ値がアプリケーション鍵カウンタ６０４の値と一致する場合、制御モジュール２１０は、カウンタ値の検証結果が成功であると判定する。以上がステップＳ１４０５の処理の説明である。
【０２６１】
カウンタ値の検証結果が失敗であると判定された場合、制御モジュール２１０は、ステップＳ１４０９に進む。
【０２６２】
カウンタ値の検証結果が成功であると判定された場合、制御モジュール２１０は、検証用メッセージのＭＡＣ部の検証結果が成功であるか否かを判定する（ステップＳ１４０６）。具体的には、以下のような処理が実行される。
【０２６３】
制御モジュール２１０は、鍵導出モジュール２１６を呼び出して、ＭＡＣ値を算出するための鍵の生成を指示する。鍵導出モジュール２１６は、ステップＳ１４０５において取得したアプリケーション鍵及び第２の固定値を代入した式（２７）にしたがって、ＭＡＣ値を算出するための鍵を算出する。
【０２６４】
制御モジュール５１０は、第２のＭＡＣ検証モジュール２１５を呼び出し、検証用メッセージのＭＡＣ部の検証を指示する。第２のＭＡＣ検証モジュール２１５は、ＭＡＣ値を算出するための鍵、ＭＡＣ生成対象データ、及び検証用メッセージのＭＡＣ部を代入した式（４）及び式（１３）にしたがって、検証用メッセージのＭＡＣ部の検証を行う。以上がステップＳ１４０６の処理の説明である。
【０２６５】
検証用メッセージのＭＡＣ部の検証結果が失敗であると判定された場合、制御モジュール２１０は、ステップＳ１４０９に進む。
【０２６６】
検証用メッセージのＭＡＣ部の検証結果が成功であると判定された場合、制御モジュール２１０は、装置鍵情報２５０及び第１の鍵管理メッセージ情報２６０を更新する（ステップＳ１４０７）。その後、制御モジュール２１０は、ステップＳ１４０８に進む。
【０２６７】
具体的には、制御モジュール２１０は、装置鍵情報２５０を参照し、ターゲット装置１３０に対応するレコードの状態６０５に「書込済み」を設定する。また、制御モジュール２１０は、第１の鍵管理メッセージ情報２６０を参照し、ターゲット装置１３０に対応するレコードの検証結果７０５に「成功」を設定する。
【０２６８】
ステップＳ１４０３、ステップＳ１４０５、及びステップＳ１４０６の判定結果がＮＯである場合、制御モジュール２１０は、装置鍵情報２５０及び第１の鍵管理メッセージ情報２６０を更新する（ステップＳ１４０９）。その後、制御モジュール２１０は、ステップＳ１４０８に進む。
【０２６９】
具体的には、制御モジュール２１０は、装置鍵情報２５０を参照し、ターゲット装置１３０に対応するレコードの状態６０５に「エラー」を設定する。また、制御モジュール２１０は、第１の鍵管理メッセージ情報２６０を参照し、ターゲット装置１３０に対応するレコードの検証結果７０５に「失敗」を設定する。
【０２７０】
ステップＳ１４０７又はステップＳ１４０９の処理が完了した後、制御モジュール２１０は、選択可能な全ての装置１３０について処理が完了したか否かを判定する（ステップＳ１４０８）。
【０２７１】
具体的には、制御モジュール２１０は、検証用メッセージ７０４に検証用メッセージが格納される全てのレコードの検証結果７０５に検証結果が格納されているか否かを判定する。
【０２７２】
選択可能な全ての装置１３０について処理が完了していないと判定された場合、制御モジュール２１０は、ステップＳ１４０２に戻り、同様の処理を実行する。
【０２７３】
選択可能な全ての装置１３０について処理が完了したと判定された場合、制御モジュール２１０は、アプリケーション鍵の書込処理の検証処理を終了する。
【０２７４】
本実施例では、装置１３０の製造工場を例に説明したが、本実施例の適用先はこれに限定されない。例えば、自動車のディーラーや出荷港であってもよい。この場合、工場鍵管理サーバ１１０の代わりにディーラー又は港の鍵管理サーバが用いられ、製造ライン端末１２０の代わりに自動車の保守用ツールが用いられる。なお、各機器の構成と機能は、それぞれ図３及び図４で説明したものと同様の構成である。
【０２７５】
本実施例の装置１３０の一例として、Ｓｅｃｕｒｅ  Ｈａｒｄｗａｒｅ  Ｅｘｔｅｎｓｉｏｎ（ＳＨＥ）に対応した装置が考えられる。
【０２７６】
ＳＨＥに対応した装置１３０の場合、書込用メッセージは、ＳＨＥのＭｅｍｏｒｙ  Ｕｐｄａｔｅ  ＰｒｏｔｏｃｏｌのメッセージＭ１、Ｍ２、Ｍ３を結合したものに相当する。なお、書込用メッセージのＩＤ部はＭ１に、暗号文部はＭ２に、ＭＡＣ部はＭ３に対応する。さらに、ＳＨＥのＭｅｍｏｒｙ  Ｕｐｄａｔｅ  ＰｒｏｔｏｃｏｌのＭ４、Ｍ５を結合したものが、検証用メッセージに相当する。なお、検証用メッセージのＩＤ部と暗号文部を結合したものがＭ４に対応し、ＭＡＣ部がＭ５に対応する。また、事前検証用メッセージはＳＨＥのＭｅｍｏｒｙ  Ｕｐｄａｔｅ  ＰｒｏｔｏｃｏｌのＭ４＊（Ｍ４の暗号文部）に相当する。また、認証鍵は、例えば、ＳＨＥのＭＡＳＴＥＲ＿ＥＣＵ＿ＫＥＹが考えられ、アプリケーション鍵は、例えば、ＳＨＥのＫＥＹ＜１＞が考えられる。
【０２７７】
従来技術では、装置は、装置へのアプリケーション鍵の書込処理の成否を検証するために、ＩＤ部、暗号文部、及びＭＡＣ部から構成される検証用メッセージを生成する。検証用メッセージの暗号文部は、式（２４）に示すようにアプリケーション鍵から生成された鍵を用いてカウンタ値を暗号化することによって生成され、また、ＭＡＣ部は、式（２６）に示すようにアプリケーション鍵から生成された別の鍵、装置ＩＤ部、及び暗号文部から生成される。そのため、暗号文部及びＭＡＣ値は、アプリケーション鍵及びカウンタ値を知らないと復号できない。
【０２７８】
従来の鍵書込工程における鍵の書込処理の成否の検証処理では、暗号文部及びＭＡＣ値の検証を行う必要があるが、工場鍵管理サーバは、アプリケーション鍵及びカウンタ値を知らない。そのため、センタ鍵管理サーバに問い合わせを行う必要があった。
【０２７９】
本実施例では、アプリケーション鍵及びカウンタ値を知っているセンタ鍵管理サーバ１００が、製造ラインの稼働前に、生成した暗号文部を事前検証用メッセージとして工場鍵管理サーバ１１０に登録する。工場鍵管理サーバ１１０は、装置１３０によって生成された検証用メッセージの暗号文部と事前検証用メッセージとを比較することよって、鍵の書込処理の成否の検証を行うことができる。アプリケーション鍵又はカウンタ値のいずれかが一致しない場合、暗号処理の特性から、検証用メッセージの暗号文部と事前検証用メッセージは一致しないためである。
【０２８０】
したがって、本実施例によれば、工場鍵管理サーバ１１０は、センタ鍵管理サーバ１００に問い合わせることなくアプリケーション鍵の書込処理の成否を検証することができる。これによって、製造コストを削減できる。
【０２８１】
なお、工場鍵管理サーバ１１０は、暗号文である事前検証用メッセージからアプリケーション鍵及びカウンタ値を取得できないため、ＭＡＣ部を算出することができない。また、工場鍵管理サーバ１１０が鍵の書込処理が行われたように偽装するために事前検証用メッセージを送信してもＭＡＣ部の検証が失敗する。これによって、センタ鍵管理サーバ１００は、前述の偽装を検知することができる。したがって、本実施例では、事前検証用メッセージの送信に伴うセキュリティの問題は発生しない。
【０２８２】
以上で説明したように、実施例１によれば、装置１３０へのセキュアな鍵の書込を実現でき、また、工場鍵管理サーバ１１０がセンタ鍵管理サーバ１００に等合わせることなく鍵の書込処理の成否を検証できる。
【実施例２】
【０２８３】
実施例２は、鍵生成／鍵配信フェーズの装置ＩＤの扱い方が異なる。以下では、実施例１との差異を中心に、実施例２について説明する。
【０２８４】
実施例２のシステム構成は、実施例１のシステム構成と同一である。また、実施例２の各装置の構成は、実施例１の各装置の構成と同一である。ただし、実施例２では、装置鍵情報２５０、並びに、第１の鍵管理メッセージ情報２６０及び第２の鍵管理メッセージ情報３５０のデータ構造が一部異なる。
【０２８５】
図１５は、実施例２の装置鍵情報２５０の一例を示す図である。図１６は、実施例２の第１の鍵管理メッセージ情報２６０の一例を示す図である。
【０２８６】
実施例２では、装置鍵情報２５０のレコードはレコード番号１５０１を含む。また、第１の鍵管理メッセージ情報２６０のレコードはレコード番号１６０１を含む。
【０２８７】
実施例２では、センタ鍵管理サーバ１００及び工場鍵管理サーバ１１０は、事前に装置１３０の装置ＩＤを保持していない。したがって、装置鍵情報２５０及び第１の鍵管理メッセージ情報２６０の各レコードの装置ＩＤ６０１には初期値「０」が設定される。
【０２８８】
実施例２では、ステップＳ９０１からステップＳ９０４までの処理、及びステップＳ９１１からステップＳ９１３までの処理において、センタ鍵管理サーバ１００及び工場鍵管理サーバ１１０は、装置鍵情報２５０及び第１の鍵管理メッセージ情報２６０の全てのレコードの装置ＩＤが「０」として処理を実行する。
【０２８９】
また、実施例２では、認証鍵は、書込対象の全ての装置１３０においてオール０の値をとるものとする。認証鍵がオール０の値は、センタ鍵管理サーバ１００及び装置１３０の間で事前に共有している。
【０２９０】
ステップＳ９１４以降の処理では、各装置１３０が保持する装置ＩＤが用いられる。工場鍵管理サーバ１１０は、ステップＳ９１８において受信した検証用メッセージに含まれるＩＤ部から装置ＩＤを取得し、第２の鍵管理メッセージ情報３５０の対応するレコードの装置ＩＤ７０１に当該装置ＩＤを設定する。センタ鍵管理サーバ１００は、ステップＳ９２４において受信した検証用メッセージに含まれるＩＤ部から装置ＩＤを取得し、装置鍵情報２５０の対応するレコードの装置ＩＤ６０１に当該装置ＩＤを設定し、また、第１の鍵管理メッセージ情報２６０の対応するレコードの装置ＩＤ７０１に当該装置ＩＤを設定する。
【０２９１】
なお、実施例２では、ステップＳ１１０１及びステップＳ１４０３の処理は省略される。
【０２９２】
実施例２によれば、センタ鍵管理サーバ１００は、事前に、装置ＩＤを知らない場合でも、鍵の書込処理を実行することができる。
【０２９３】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０２９４】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０２９５】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０２９６】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２９７】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２９８】
１００  センタ鍵管理サーバ
１１０  工場鍵管理サーバ
１２０  製造ライン端末
１３０  装置
１５０、１６０、１７０  ネットワーク
２０１、３０１、４０１、５０１  プロセッサ
２０２、３０２、４０２、５０２  メモリ
２０３、３０３、４０３、５０３  記憶装置
２０４、３０４、４０４、５０４  ネットワークインタフェース
２０５  Ｉ／Ｏインタフェース
２０６、３０６、４０６  入力装置
２０７、３０７、４０７  出力装置
２１０、３１０、４１０、５１０  制御モジュール
２１１  鍵生成モジュール
２１２  第１の暗号化モジュール
２１３  第１のＭＡＣ生成モジュール
２１４  第２の復号モジュール
２１５  第２のＭＡＣ検証モジュール
２１６、５１６  鍵導出モジュール
２１７、５１４  第２の暗号化モジュール
２５０  装置鍵情報
２６０  第１の鍵管理メッセージ情報
３１１  メッセージ検証モジュール
３２０  データ検証モジュール
３５０  第２の鍵管理メッセージ情報
４４０  書込用メッセージ
４５０  検証用メッセージ
５１１  第１の復号モジュール
５１２  第１のＭＡＣ検証モジュール
５１３  書込モジュール
５１５  第２のＭＡＣ生成モジュール
【図１】
2018110355.tif 000030
【図２】
2018110355.tif 000031
【図３】
2018110355.tif 000032
【図４】
2018110355.tif 000033
【図５】
2018110355.tif 000034
【図６】
2018110355.tif 000035
【図７】
2018110355.tif 000036
【図８】
2018110355.tif 000037
【図９Ａ】
2018110355.tif 000038
【図９Ｂ】
2018110355.tif 000039
【図１０】
2018110355.tif 000040
【図１１】
2018110355.tif 000041
【図１２】
2018110355.tif 000042
【図１３】
2018110355.tif 000043
【図１４】
2018110355.tif 000044
【図１５】
2018110355.tif 000045
【図１６】
2018110355.tif 000046