(57)【要約】【課題】簡易な構成で、暗号鍵の危殆化を抑制する。【解決手段】ＥＣＵ２０Ａは、変換部２２と、暗号化部２４Ａと、送信部２１Ｂと、を備える。変換部２２は、ＧＷ１０Ａ（サーバ装置）との間で共有するマスタ鍵の生成に用いるための第１暗号鍵を、ＧＷ１０Ａとの暗号通信に現在用いているマスタ鍵としての第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換し、新たなマスタ鍵としての第３暗号鍵を生成する。暗号化部２４Ａは、第２暗号鍵および第３暗号鍵に基づいて、第３暗号鍵を導出するための暗号文を生成する。送信部２１Ｂは、暗号文を、ＧＷ１０Ａへ送信する。【選択図】図３
2018042203.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置との間で共有するマスタ鍵の生成に用いるための第１暗号鍵を、前記サーバ装置との暗号通信に現在用いている前記マスタ鍵としての第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換し、新たな前記マスタ鍵としての第３暗号鍵を生成する変換部と、
前記第２暗号鍵および前記第３暗号鍵に基づいて、前記第３暗号鍵を導出するための暗号文を生成する暗号化部と、
前記暗号文を、前記サーバ装置へ送信する送信部と、
を備える、情報処理装置。
【請求項２】
前記暗号化部は、
前記第３暗号鍵を前記第２暗号鍵で暗号化して前記暗号文を生成する、請求項１に記載の情報処理装置。
【請求項３】
前記暗号化部は、
前記第３暗号鍵と前記第２暗号鍵との差分情報を、前記第２暗号鍵で暗号化して、前記暗号文を生成する、請求項１に記載の情報処理装置。
【請求項４】
前記暗号化部は、
前記第３暗号鍵の正しさを検証するための検証データと、前記差分情報と、を前記第２暗号鍵で暗号化して、前記暗号文を生成する、請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置に固有の固有データを出力するＰＵＦ（Ｐｈｙｓｉｃａｌｌｙ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）部から出力された前記固有データと、前記固有データの補正データと、を用いて前記第１暗号鍵を生成する補正部を更に備え、
前記変換部は、該第１暗号鍵を、前記第２変換規則を用いて変換し、前記第３暗号鍵を生成する、
請求項１に記載の情報処理装置。
【請求項６】
前記情報処理装置に固有の固有データを出力するＰＵＦ部から出力された前記固有データから前記固有データの補正データを用いて生成した暗号鍵を用いて、前記第１暗号鍵を暗号化することによって生成した暗号文と、前記補正データと、を含む第１補正データに基づいて、前記第１暗号鍵を生成する補正部を更に備え
前記変換部は、該第１暗号鍵を、前記第２変換規則を用いて変換し、前記第３暗号鍵を生成する、
請求項１に記載の情報処理装置。
【請求項７】
前記第３暗号鍵を、前記第２暗号鍵として更新する更新部、を備える請求項１〜請求項６の何れか１項に記載の情報処理装置。
【請求項８】
情報処理装置との間で共有するマスタ鍵の生成に用いるための第１暗号鍵を、前記情報処理装置との暗号通信に現在用いている前記マスタ鍵としての第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換した、新たな前記マスタ鍵としての第３暗号鍵と、前記第２暗号鍵と、に基づいて生成された、前記第３暗号鍵を導出するための暗号文を、前記情報処理装置から受信する受信部と、
前記暗号文を、前記第２暗号鍵を用いて復号し、前記第３暗号鍵を得る復号部と、
前記第３暗号鍵を、前記情報処理装置との間で共有する前記第２暗号鍵として更新する更新部と、
を備える、サーバ装置。
【請求項９】
請求項１〜請求項７の何れか１項に記載の情報処理装置と、
前記サーバ装置と、
を備えた情報処理システム。
【請求項１０】
請求項９に記載の情報処理システムを搭載した移動体。
【請求項１１】
サーバ装置との間で共有するマスタ鍵の生成に用いるための第１暗号鍵を、前記サーバ装置との暗号通信に現在用いている前記マスタ鍵としての第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換し、新たな前記マスタ鍵としての第３暗号鍵を生成するステップと、
前記第２暗号鍵および前記第３暗号鍵に基づいて、前記第３暗号鍵を導出するための暗号文を生成するステップと、
前記暗号文を、前記サーバ装置へ送信するステップと、
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、サーバ装置、情報処理システム、移動体、および情報処理方法に関する。
【背景技術】
【０００２】
複数の端末間で暗号通信を行う際に用いる暗号鍵には、送信側と受信側が同一の暗号鍵を用いる対称鍵暗号処理と、送信側と受信側が異なる暗号鍵を用いる非対称鍵暗号処理と、がある。対称鍵暗号処理は、非対称鍵暗号処理に比べて暗号化の際の計算量が小さく、小型端末の処理に適する。しかし、対称鍵暗号処理の場合、送信側と受信側で同一の暗号鍵を予め共有しておく必要がある。また、共有する暗号鍵の危殆化を抑制するために、定期的に暗号鍵を更新する必要がある。
【０００３】
例えば、特許文献１には、ホストコンピュータとＩＣカードの各々に、正規プログラムは読書き可能だが外部から不正な読み書きのできない格納部を設けることが開示されている。そして、特許文献１には、ホストコンピュータとＩＣカードの各々の該格納部にマスタ鍵を格納し、定期的に更新することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１７１７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来では、正規プログラムは読書き可能だが外部から不正な読み書きのできない格納部を別途設ける必要があり、簡易な構成で暗号鍵の危殆化を抑制することは困難であった。
【０００６】
本発明が解決しようとする課題は、簡易な構成で、暗号鍵の危殆化を抑制することができる、情報処理装置、サーバ装置、情報処理システム、移動体、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態の情報処理装置は、変換部と、暗号化部と、送信部と、を備える。変換部は、サーバ装置との間で共有するマスタ鍵の生成に用いるための第１暗号鍵を、前記サーバ装置との暗号通信に現在用いている前記マスタ鍵としての第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換し、新たな前記マスタ鍵としての第３暗号鍵を生成する。暗号化部は、前記第２暗号鍵および前記第３暗号鍵に基づいて、前記第３暗号鍵を導出するための暗号文を生成する。送信部は、前記暗号文を、前記サーバ装置へ送信する。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムの概要を示す模式図。
【図２】ＧＷおよびＥＣＵのハードウェア構成例を示すブロック図。
【図３】ＧＷおよびＥＣＵの機能的な構成例を示すブロック図。
【図４】マスタ鍵管理ＤＢのデータ構成の一例を示す模式図。
【図５】初期設定処理の手順の一例を示すフローチャート。
【図６】更新処理の手順の一例を示すフローチャート。
【図７】更新処理の手順の一例を示すフローチャート。
【図８】更新処理の手順の一例を示すフローチャート。
【図９】ＧＷおよびＥＣＵの機能的な構成例を示すブロック図。
【図１０】初期設定処理の手順の一例を示すフローチャート。
【図１１】更新処理の手順の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
実施形態の情報処理システムは、例えば、移動体の一例である自動車に搭載される車載ネットワークシステム（通信システム）に適用できる。以下では、車載ネットワークシステムに含まれる車載ゲートウェイ装置（以下、「ＧＷ」と略称する）を、実施形態のサーバ装置として構成した例を説明する。また、以下では、車載ネットワークシステムに含まれる電子制御装置（ＥＣＵ：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ、以下、「ＥＣＵ」と略称する）を、実施形態の情報処理装置として構成した例を説明する。
【００１０】
なお、実施形態の情報処理システムを適用可能な装置やシステムは以下の例に限らない。実施形態の情報処理システムは、通信の送信側と受信側とで暗号通信する、様々なシステムに広く適用可能である。
【００１１】
（第１の実施の形態）
図１は、情報処理システム１Ａの概要を示す模式図である。情報処理システム１Ａは、図１に示すように、ＧＷ１０Ａと、１または複数のＥＣＵ２０Ａとが、ネットワークを介して接続された構成である。ＧＷ１０Ａは、サーバ装置の一例である。ＥＣＵ２０Ａは、情報処理装置の一例である。
【００１２】
本実施の形態では、ＧＷ１０Ａは、本来のゲートウェイとしての機能に加えて、後述する各処理を実行する。本来のゲートウェイとしての機能は、例えば、情報処理システム１Ａ内のサブネットワーク間の通信の中継や、情報処理システム１Ａと車外のネットワークとの間の通信の中継などである。同様に、ＥＣＵ２０Ａは、自動車Ｖに搭載された電子機器としての本来の機能に加えて、後述する各処理を実行する。
【００１３】
なお、情報処理システム１Ａの通信規格は限定されない。情報処理システム１Ａの通信規格は、例えば、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＦｌｅｘＲａｙ（登録商標）などである。
【００１４】
複数のＥＣＵ２０Ａが連携して自動車Ｖの制御を実施する場合、これら複数のＥＣＵ２０ＡとＧＷ１０Ａは、ネットワークを介した通信を行って制御信号を送受信する。ここでいう制御信号は、自動車Ｖの制御を実施するために、ＥＣＵ２０ＡとＧＷ１０Ａとの間で送受信される信号の総称である。ＥＣＵ２０ＡとＧＷ１０Ａとの間で制御信号を送受信する際には、誤った制御が行われないようにするために、通信の正当性が保証される必要がある。自動車Ｖの走行中における通信では、リアルタイム性が要求されるため、通信の正当性を保証するための処理に時間をかけることができない。そこで本実施の形態では、通信の認証を短時間で行うことができるＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の認証技術を利用して、ＧＷ１０ＡとＥＣＵ２０Ａとの間の通信の正当性を保証するものとする。
【００１５】
ＭＡＣの認証技術は、認証に必要なＭＡＣ値を導出するために、送信側と受信側とで事前に共有されたマスタ鍵を利用する。本実施の形態では、ＥＣＵ２０Ａの各々が、ＥＣＵ２０ＡとＧＷ１０Ａとの間で共有するマスタ鍵を、種となる第１暗号鍵から生成し、暗号通信に用いる（詳細後述）。なお、情報処理システム１Ａが複数のＥＣＵ２０Ａを備えた構成である場合、ＥＣＵ２０Ａの各々は、それぞれ固有の第１暗号鍵を保有するものとする。
【００１６】
図２は、ＧＷ１０ＡおよびＥＣＵ２０Ａのハードウェア構成例を示すブロック図である。ＧＷ１０ＡおよびＥＣＵ２０Ａは、例えば、ネットワークＩ／Ｆ８と、マイクロコントローラ９と、を備える。ネットワークＩ／Ｆ８は、ＧＷ１０およびＥＣＵ２０Ａをネットワークに接続するためのインタフェースである。マイクロコントローラ９は、コンピュータシステムを集積回路として組み込んだものであり、コンピュータシステム上で動作するプログラム（ソフトウェア）に従って様々な制御を実行する。ＧＷ１０ＡおよびＥＣＵ２０Ａの各々では、マイクロコントローラ９がネットワークＩ／Ｆ８を利用しながらプログラムに応じた制御を実行することにより、後述する各種の機能を実現する。
【００１７】
図３は、本実施の形態の情報処理システム１Ａに含まれるＧＷ１０ＡおよびＥＣＵ２０Ａの各々の、機能的な構成例を示すブロック図である。なお、以下では、説明を簡略化するために、１台のＥＣＵ２０Ａを想定して説明する。しかし、実際には、情報処理システム１Ａに設けられたＥＣＵ２０Ａの各々が、後述する処理を実行する。
【００１８】
―ＥＣＵ２０Ａ―
まず、ＥＣＵ２０Ａについて説明する。ＥＣＵ２０Ａは、情報処理装置の一例である。ＥＣＵ２０Ａは、暗号通信に関わる機能的な構成要素として、例えば、送受信部２１と、変換部２２と、更新部２３と、暗号化部２４Ａと、暗号化通信部２５と、記憶部２６と、記憶部２７と、を備える。
【００１９】
記憶部２６は、読み出し専用のメモリである。記憶部２６は、例えば、マスクＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性メモリである。
【００２０】
記憶部２６は、第１暗号鍵を予め記憶する。第１暗号鍵は、ＥＣＵ２０Ａが保有する暗号鍵であり、ＧＷ１０Ａとの間で共有するマスタ鍵（後述する、第２暗号鍵、第３暗号鍵）を生成するための種鍵として用いられる。
【００２１】
記憶部２７は、データの消去および書き換えの可能なメモリである。記憶部２７は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））や、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）である。
【００２２】
記憶部２７は、第２暗号鍵と、ＧＷ１０Ａの公開鍵またはＧＷ１０Ａとの事前共有鍵と、第１変換規則と、第２変換規則と、を記憶する。
【００２３】
第２暗号鍵は、ＧＷ１０Ａとの暗号通信に現在用いているマスタ鍵である。すなわち、第２暗号鍵は、ＧＷ１０Ａと該ＥＣＵ２０Ａとの間で共有され、暗号通信や認証処理に利用される。
【００２４】
第２暗号鍵は、第３暗号鍵によって更新される（詳細後述）。第３暗号鍵は、ＧＷ１０Ａとの間で共有する新たなマスタ鍵として、第１暗号鍵から生成された暗号鍵である（詳細後述）。
【００２５】
ＧＷ１０Ａの公開鍵は、ＥＣＵ２０ＡとＧＷ１０Ａとの間で予め共有される。ＧＷ１０Ａとの事前共有鍵は、ＧＷ１０ＡとＥＣＵ２０Ａとの間で事前に秘密裏に共有された、暗号鍵である。事前共有鍵は、例えば、ＧＷ１０ＡとＥＣＵ２０Ａとの製造者が、各々の製造時に、各々の記憶部（記憶部２６または記憶部２７、記憶部１７）に秘密裏に予め書込んでおいてもよい。
【００２６】
第１変換規則は、第１暗号鍵から第２暗号鍵を生成する時に用いた、変換規則である。言い換えると、第１変換規則は、ＧＷ１０Ａとの間で現在共有するマスタ鍵としての第２暗号鍵を、第１暗号鍵から生成するときに用いた、変換規則である。
【００２７】
第２変換規則は、第１暗号鍵から第３暗号鍵を生成するときに用いる、変換規則である。すなわち、第２変換規則は、ＧＷ１０Ａとの間で新たに共有するマスタ鍵としての第３暗号鍵を、第１暗号鍵から生成するときに用いた、変換規則である。第２変換規則は、第１変換規則とは異なる変換規則である。
【００２８】
第１変換規則および第２変換規則には、例えば、ハッシュ関数や、行列演算などを用いる。具体的には、第１変換規則および第２変換規則は、第１暗号鍵とＣＮＴを連結した情報を、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）などのハッシュ関数に入力して出力を求める、変換規則である。なお、ＣＮＴには、第２暗号鍵または第３暗号鍵を導出した回数、あるいは、第２暗号鍵または第３暗号鍵を導出したときの時刻情報を用いればよい。また、ＣＮＴの他に、第２暗号鍵あるいは第３暗号鍵を導出するときに、乱数ＲＮＤを生成し、第１暗号鍵やＣＮＴとともに、ハッシュ関数の入力としてもよい。この場合には、記憶部２７は、ハッシュ関数のアルゴリズム、ＣＮＴ、および、ＲＮＤを、変換規則（第１変換規則、第２変換規則）として記憶すればよい。
【００２９】
なお、第１変換規則と第２変換規則が異なる変換規則である、とは、ハッシュ関数などの関数自体が異なる事を示すものであってもよいし、各々の変換規則に含まれる、ＣＮＴやＲＮＤなどのパラメータの少なくとも１つが異なることを示すものであってもよい。
【００３０】
なお、ＥＣＵ２０Ａは、第２暗号鍵と第３暗号鍵とが同一の第１暗号鍵（種鍵）から計算されたことを検証可能な、第１変換規則と第２変換規則を用いることが好ましい。
【００３１】
次に、送受信部２１について説明する。送受信部２１は、ＧＷ１０Ａや他のＥＣＵ２０Ａとの間で通信を行う。送受信部２１は、受信部２１Ａと、送信部２１Ｂと、を含む。
【００３２】
受信部２１Ａは、鍵設定コマンドや鍵更新コマンドなどの各種データを、ＧＷ１０Ａから受信する。
【００３３】
鍵設定コマンドは、第２暗号鍵の設定要求を示すコマンドである。本実施の形態では、ＧＷ１０Ａは、第２暗号鍵を未設定のＥＣＵ２０Ａに対して、第２暗号鍵の設定要求を示す鍵設定コマンドを送信する。ＥＣＵ２０Ａの受信部２１Ａは、受信した鍵設定コマンドを、変換部２２へ出力する。
【００３４】
鍵更新コマンドは、第２暗号鍵の更新要求を示すコマンドである。本実施の形態では、ＧＷ１０Ａは、第２暗号鍵を設定済のＥＣＵ２０Ａに対して、定期的に、第２暗号鍵の更新要求を示す鍵更新コマンドを送信する。ＥＣＵ２０Ａの受信部２１Ａは、受信した鍵更新コマンドを、変換部２２へ出力する。
【００３５】
送信部２１Ｂは、端末ＩＤと暗号文、などの各種データを、ＧＷ１０Ａへ送信する。端末ＩＤは、ＥＣＵ２０Ａの識別情報である。送信部２１ＢがＧＷ１０Ａに送信する暗号文については、詳細を後述する。
【００３６】
変換部２２は、記憶部２６に記憶されている第１暗号鍵を、第２変換規則を用いて変換することによって、第３暗号鍵を生成する。暗号化部２４Ａは、ＧＷ１０Ａ側で第３暗号鍵を導出するための暗号文を生成する。本実施の形態では、暗号化部２４Ａは、第３暗号鍵を第２暗号鍵で暗号化して、暗号文を生成する（詳細後述）。更新部２３は、変換部２２で生成された第３暗号鍵、または該第３暗号鍵の生成に用いた第２変換規則を、第２暗号鍵または第１変換規則として記憶部２７に記憶する。
【００３７】
次に、変換部２２、更新部２３、および暗号化部２４Ａが実行する、初期設定処理と更新処理の各々について説明する。
【００３８】
初期設定処理は、第２暗号鍵が未設定の状態のＥＣＵ２０ＡとＧＷ１０Ａに、該ＥＣＵ２０ＡとＧＷ１０Ａとの暗号通信に用いる第２暗号鍵を設定する処理である。更新処理は、ＥＣＵ２０ＡとＧＷ１０Ａとに設定された第２暗号鍵を更新する処理である。
【００３９】
まず、ＥＣＵ２０Ａの変換部２２、更新部２３、および暗号化部２４Ａが実行する、初期設定処理について説明する。
【００４０】
変換部２２は、初期設定処理を開始するか否かを判断する。本実施の形態では、変換部２２は、ＧＷ１０Ａから受信部２１Ａを介して鍵設定コマンドを受信した場合に、初期設定処理を開始すると判断する。なお、変換部２２は、記憶部２７に第２暗号鍵または第１変換規則が未設定であるなどの所定の条件を満たした場合に、初期設定処理を開始すると判断してもよい。また、変換部２２は、送信部２１Ｂを介してＧＷ１０Ａへ送信したコマンドに対するレスポンスが、第２暗号鍵の設定要求を示す場合に、初期設定処理を開始すると判断してもよい。
【００４１】
初期設定処理を開始する場合、変換部２２は、記憶部２６から、第１暗号鍵を読み出す。また、変換部２２は、記憶部２７から、ＧＷ１０Ａの公開鍵と第２変換規則を読み出す。そして、変換部２２は、第１暗号鍵を、第２変換規則を用いて変換することによって、第３暗号鍵を生成する。
【００４２】
ここで、ＥＣＵ２０Ａが鍵設定コマンドを受信した段階では、ＧＷ１０ＡとＥＣＵ２０Ａの双方には、該ＥＣＵ２０Ａに対応する第２暗号鍵が未設定（すなわち、未格納）である。すなわち、初期設定処理がなされる前の段階では、ＥＣＵ２０Ａは第３暗号鍵を未生成であり、第２変換規則は記憶部２７に未だ格納されていない。このため、変換部２２は、記憶部２７からハッシュ関数のアルゴリズムを読取り、新たなＣＮＴおよびＲＮＤなどのパラメータを該ハッシュ関数のアルゴリズムに入力することで、第２変換規則を生成する。これによって、変換部２２は、第２変換規則を読み出せばよい。
【００４３】
そして、変換部２２は、第１暗号鍵を、第２変換規則を用いて変換することによって、第３暗号鍵を生成する。
【００４４】
暗号化部２４Ａは、変換部２２で生成された第３暗号鍵を暗号化し、暗号文を生成する。暗号化部２４Ａは、記憶部２７に格納されているＧＷ１０Ａの公開鍵またはＧＷ１０Ａとの事前共有鍵を用いて、変換部２２で生成した第３暗号鍵を暗号化し、暗号文を生成する。
【００４５】
送信部２１Ｂは、暗号化部２４Ａで生成された暗号文と、該ＥＣＵ２０Ａの端末ＩＤと、をＧＷ１０Ａへ送信する。
【００４６】
更新部２３は、変換部２２で生成された第３暗号鍵を、第２暗号鍵として記憶部２７に格納する。本実施の形態では、更新部２３は、この第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する。これによって、更新部２３は、第２暗号鍵の未設定であったＥＣＵ２０Ａに、第２暗号鍵または第１変換規則を設定する。
【００４７】
次に、ＥＣＵ２０Ａの変換部２２、更新部２３、および暗号化部２４Ａが実行する、更新処理について説明する。
【００４８】
変換部２２は、更新処理を開始するか否かを判断する。本実施の形態では、変換部２２は、ＧＷ１０Ａから受信部２１Ａを介して鍵更新コマンドを受信した場合に、更新処理を開始すると判断する。なお、変換部２２は、所定時間が経過したことを判別することで、更新処理を開始すると判断してもよい。また、変換部２２は、送信部２１Ｂを介してＧＷ１０Ａへ送信したコマンドに対するレスポンスが、第２暗号鍵の更新要求を示す場合に、更新処理を開始すると判断してもよい。
【００４９】
鍵更新コマンドを受信した場合、変換部２２は、記憶部２６から、第１暗号鍵を読み出す。また、変換部２２は、記憶部２７から、第１変換規則を読み出す。すなわち、変換部２２は、ＧＷ１０Ａとの暗号通信に現在用いている第２暗号鍵の生成時に用いた、第１変換規則を読み出す。
【００５０】
次に、変換部２２が、第１変換規則とは異なる第２変換規則を生成する。例えば、変換部２２は、記憶部２７からハッシュ関数のアルゴリズムを読取り、新たなＣＮＴおよびＲＮＤなどのパラメータを該ハッシュ関数のアルゴリズムに入力することで、第２変換規則を生成する。
【００５１】
そして、変換部２２は、第１暗号鍵を、第１変換規則を用いて変換することによって、第２暗号鍵を生成する。なお、記憶部２７に第２暗号鍵が格納されている場合には、変換部２２は、記憶部２７から第２暗号鍵を読み出せばよい。
【００５２】
また、変換部２２は、第１暗号鍵を、第２変換規則を用いて変換することによって、第３暗号鍵を生成する。
【００５３】
暗号化部２４Ａは、変換部２２で生成された第３暗号鍵を、第２暗号鍵を用いて暗号化し、暗号文を生成する。そして、送信部２１Ｂは、暗号化部２４Ａで生成された暗号文と、該ＥＣＵ２０Ａの端末ＩＤと、をＧＷ１０Ａへ送信する。
【００５４】
更新部２３は、変換部２２で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する。これによって、更新部２３は、記憶部２７に格納されている第１変換規則を更新する。なお、上述したように、更新部２３は、記憶部２７に記憶されている第２暗号鍵を、第３暗号鍵で更新してもよい。
【００５５】
これらの処理によって、ＧＷ１０Ａとの間で共有するマスタ鍵としての第２暗号鍵が更新される。
【００５６】
暗号化通信部２５は、記憶部２７に格納されている第２暗号鍵を、ＧＷ１０Ａとの暗号通信に用いて、暗号通信や認証処理を行う。このため、暗号化通信部２５は、更新部２３によって第２暗号鍵が更新されると、更新された第２暗号鍵を用いて、暗号通信や認証処理を行うこととなる。なお、記憶部２７に、第２暗号鍵に代えて第１変換規則が格納されている場合には、暗号化通信部２５は、変換部２２と同様にして、第１暗号鍵から第１変換規則を用いて第２暗号鍵を生成し、暗号通信や認証処理に用いればよい。
【００５７】
次に、ＧＷ１０Ａについて説明する。
【００５８】
―ＧＷ１０Ａ―
ＧＷ１０Ａは、サーバ装置の一例である。ＧＷ１０Ａは、暗号通信に関わる機能的な構成要素として、例えば、送受信部１１と、比較部１２と、復号部１３Ａと、更新部１４と、例外処理部１５と、暗号化通信部１６と、記憶部１７と、を備える。
【００５９】
記憶部１７は、各種データを記憶する。記憶部１７は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、ハードディスク、光ディスク等である。
【００６０】
本実施の形態では、記憶部１７は、マスタ鍵管理ＤＢ１７Ａを予め記憶する。マスタ鍵管理ＤＢ１７Ａは、ＧＷ１０Ａが暗号通信する対象のＥＣＵ２０Ａの端末ＩＤを予め登録したものである。
【００６１】
図４は、マスタ鍵管理ＤＢ１７Ａのデータ構成の一例を示す模式図である。マスタ鍵管理ＤＢ１７Ａは、端末ＩＤと、第２暗号鍵と、を対応づけたものである。マスタ鍵管理ＤＢ１７Ａのデータ形式は限定されない。本実施の形態では、マスタ鍵管理ＤＢ１７Ａには、ＧＷ１０Ａが暗号通信する対象のＥＣＵ２０Ａの端末ＩＤが予め登録されているものとする。また、マスタ鍵管理ＤＢ１７Ａには、第２暗号鍵の設定済のＥＣＵ２０Ａについては、該ＥＣＵ２０Ａの端末ＩＤに対応付けて第２暗号鍵が登録される。
【００６２】
図３に戻り、説明を続ける。また、記憶部１７は、ＧＷ１０Ａの公開鍵、ＧＷ１０Ａの秘密鍵、事前共有鍵、を予め記憶する。ＧＷ１０Ａの公開鍵および事前共有鍵は、上記と同様である。ＧＷ１０Ａの秘密鍵は、ＧＷ１０Ａの該公開鍵に対応する秘密鍵である。ＧＷ１０Ａの秘密鍵は、復号部１３Ａによる復号処理時に用いられる。
【００６３】
送受信部１１は、ＥＣＵ２０Ａとの間で通信を行う。送受信部１１は、受信部１１Ａと、送信部１１Ｂと、を含む。
【００６４】
送信部１１Ｂは、ＥＣＵ２０Ａへ、鍵設定コマンド、および、鍵更新コマンド、などの各種データを送信する。また、送信部１１Ｂは、ＥＣＵ２０Ａへ、エラーを示すエラー信号などを送信する。
【００６５】
受信部１１Ａは、ＥＣＵ２０Ａから、該ＥＣＵ２０Ａの端末ＩＤと暗号文を受信する。
【００６６】
比較部１２は、ＥＣＵ２０Ａから受信した端末ＩＤがマスタ鍵管理ＤＢ１７Ａに登録されているか否かを判断する。マスタ鍵管理ＤＢ１７Ａに端末ＩＤが登録されている場合、ＧＷ１０Ａは、該端末ＩＤの送信元のＥＣＵ２０Ａを、暗号通信対象のＥＣＵ２０Ａとして認定する。
【００６７】
復号部１３Ａは、ＥＣＵ２０Ａから受信部１１Ａを介して受信した、端末ＩＤに対応する第２暗号鍵を、マスタ鍵管理ＤＢ１７Ａから読取る。
【００６８】
受信した端末ＩＤに対応する第２暗号鍵がマスタ鍵管理ＤＢ１７Ａに未設定である場合、復号部１３Ａは、ＧＷ１０Ａの秘密鍵を記憶部１７から読取る。そして、復号部１３Ａは、読取った秘密鍵を用いて、ＥＣＵ２０Ａから受信した暗号文を復号し、第３暗号鍵を得る。なお、復号部１３Ａは、記憶部１７に格納されている事前共有鍵を用いて、ＥＣＵ２０Ａから受信した暗号文を復号し、第３暗号鍵を得てもよい。
【００６９】
そして、更新部１４は、復号部１３Ａで得た第３暗号鍵を、該暗号文と共に受信した端末ＩＤに対応づけて、第２暗号鍵としてマスタ鍵管理ＤＢ１７Ａへ登録する。この処理によって、ＧＷ１０Ａには、該ＥＣＵ２０Ａとの暗号通信に用いるマスタ鍵としての第２暗号鍵が設定された状態となる。
【００７０】
一方、受信した端末ＩＤに対応する第２暗号鍵がマスタ鍵管理ＤＢ１７Ａに設定済である場合、復号部１３Ａは、該第２暗号鍵を読取る。そして、復号部１３Ａは、読取った第２暗号鍵を用いて、ＥＣＵ２０Ａから受信した暗号文を復号し、第３暗号鍵を得る。
【００７１】
この場合、更新部１４は、復号部１３Ａで得た第３暗号鍵を、該暗号文と共に受信した端末ＩＤに対応づけて、第２暗号鍵としてマスタ鍵管理ＤＢ１７Ａへ登録する。この処理によって、ＧＷ１０Ａは、該端末ＩＤによって識別されるＥＣＵ２０Ａとの暗号通信に用いる第２暗号鍵を、第３暗号鍵で更新する。
【００７２】
なお、上述したように、ＥＣＵ２０Ａにおいて、第２暗号鍵と第３暗号鍵とが同一の第１暗号鍵（種鍵）から計算されたことを検証可能な、第１変換規則と第２変換規則を用いる場合がある。この場合、ＧＷ１０Ａの復号部１３Ａは、受信した端末ＩＤに対応する第２暗号鍵と、復号によって得られた第３暗号鍵と、の一致すべき箇所が同じであるか否か、あるいは予め定めた所定の関係をみたすか否かを検証してもよい。そして、復号部１３Ａは、一致すべき箇所が同じであるか所定の関係をみたす場合、これらの第２暗号鍵と第３暗号鍵とが同じ種鍵（第１暗号鍵）から生成されたと検証してもよい。ここで、予め定めた所定の関係とは、例えば、該当するビットが相補的になっている、該当するビットをビット列とみたときに所定の規則でビット位置の入替が行われている、該当するビットをビット列とみたときに所定の規則で行列変換を行った結果となっている、などである。
【００７３】
この場合、ＥＣＵ２０Ａは、ＧＷ１０Ａへの暗号文の送信時に、第２暗号鍵と第３暗号鍵との一致箇所を示すデータを併せて送信してもよい。また、ＥＣＵ２０ＡとＧＷ１０Ａの双方に、第２暗号鍵と第３暗号鍵との一致箇所あるいは所定の関係を持つ箇所を示すデータを予め記憶してもよい。
【００７４】
そして、ＧＷ１０Ａの復号部１３Ａでは、この一致箇所あるいは所定の関係をみたす箇所を示すデータを用いて、受信した端末ＩＤに対応する第２暗号鍵と、復号によって得られた第３暗号鍵と、の一致すべき箇所が同じであるか否か、あるいは所定の関係をみたす箇所が所定の関係をみたすか否かを検証すればよい。
【００７５】
なお、ＧＷ１０Ａの復号部１３Ａは、受信した端末ＩＤに対応する第２暗号鍵と、復号によって得られた第３暗号鍵と、の一部が同じである場合あるいは所定の関係をみたす場合に、これらの第２暗号鍵と第３暗号鍵とが同じ種鍵（第１暗号鍵）から生成されたと検証してもよい。
【００７６】
例外処理部１５は、エラー信号を、送信部１１Ｂを介してＥＣＵ２０Ａへ送信する。詳細には、比較部１２によって、ＥＣＵ２０Ａから受信した端末ＩＤがマスタ鍵管理ＤＢ１７Ａに設定されていないと判断された場合、例外処理部１５は、該ＥＣＵ２０Ａへエラー信号を送信する。
【００７７】
暗号化通信部１６は、マスタ鍵管理ＤＢ１７Ａに設定されている端末ＩＤに対応する第２暗号鍵を用いて、各端末ＩＤによって識別されるＥＣＵ２０Ａの各々と、暗号通信や認証処理を行う。このため、暗号化通信部１６は、更新部１４によって第２暗号鍵が更新されると、更新された第２暗号鍵を用いて、暗号通信や認証処理を行う。
【００７８】
次に、本実施の形態におけるＧＷ１０ＡおよびＥＣＵ２０Ａの動作例について説明する。まず、初期設定処理の手順の一例を説明する。
【００７９】
図５は、ＧＷ１０ＡおよびＥＣＵ２０Ａが実行する、初期設定処理の手順の一例を示す、フローチャートである。なお、図５に示す初期設定処理が実行される前の状態では、ＧＷ１０Ａと、該ＧＷ１０Ａと通信するＥＣＵ２０Ａと、には、該ＥＣＵ２０Ａの第２暗号鍵が未設定であるものとする。
【００８０】
まず、ＧＷ１０Ａの送信部１１Ｂが、鍵設定コマンドをＥＣＵ２０Ａに送信する（ステップＳ１００）。ＥＣＵ２０Ａの受信部２１Ａは、ＧＷ１０Ａから鍵設定コマンドを受信する（ステップＳ２００）。ＥＣＵ２０Ａの変換部２２は、記憶部２６から第１暗号鍵を読み出し、記憶部２７からＧＷ１０Ａの公開鍵を読み出す（ステップＳ２０２）。
【００８１】
次に、ＥＣＵ２０Ａの変換部２２は、第２変換規則を読み出す（ステップＳ２０４）。変換部２２は、記憶部２７からハッシュ関数のアルゴリズムを読取り、新たなＣＮＴおよびＲＮＤなどのパラメータを該ハッシュ関数のアルゴリズムに入力することで、第２変換規則を生成する。これによって、変換部２２は、第２変換規則を読み出す。
【００８２】
そして、ＥＣＵ２０Ａの変換部２２は、ステップＳ２０２で読み出した第１暗号鍵を、ステップＳ２０４で読み出した第２変換規則を用いて変換することによって、第３暗号鍵を生成する（ステップＳ２０６）。
【００８３】
次に、ＥＣＵ２０Ａの暗号化部２４Ａが、ステップＳ２０６で生成された第３暗号鍵を、ステップＳ２０２で読み出したＧＷ１０Ａの公開鍵を用いて暗号化し、暗号文を生成する（ステップＳ２０８）。
【００８４】
次に、ＥＣＵ２０Ａの送信部２１Ｂは、ステップＳ２０８で生成された暗号文と、当該ＥＣＵ２０Ａの端末ＩＤと、をＧＷ１０Ａへ送信する（ステップＳ２１０）。
【００８５】
次に、ＥＣＵ２０Ａの更新部２３は、ステップＳ２０６で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する（ステップＳ２１２）。
【００８６】
一方、ＧＷ１０Ａの受信部１１Ａは、ステップＳ１００で鍵設定コマンドを送信した送信先のＥＣＵ２０Ａから、該ＥＣＵ２０Ａの端末ＩＤと暗号文を受信する（ステップＳ１０２）。
【００８７】
ＧＷ１０Ａの比較部１２は、ステップＳ１０２で受信した端末ＩＤがマスタ鍵管理ＤＢ１７Ａに登録されているか否かを判断する（ステップＳ１０４）。登録されている場合（ステップＳ１０４：Ｙｅｓ）、ステップＳ１０６へ進む。
【００８８】
ステップＳ１０６では、ＧＷ１０Ａの復号部１３Ａが、ＧＷ１０Ａの秘密鍵を記憶部１７から読取る（ステップＳ１０６）。そして、復号部１３Ａは、読取った秘密鍵を用いて、ステップＳ１０２で受信した暗号文を復号し、第３暗号鍵を得る（ステップＳ１０８）。次に、更新部１４は、ステップＳ１０８で得た第３暗号鍵を第２暗号鍵として、ステップＳ１０２で受信した端末ＩＤに対応づけて、マスタ鍵管理ＤＢ１７Ａへ登録する（ステップＳ１１０）。ステップＳ１１０の処理によって、ＧＷ１０Ａには、該ＥＣＵ２０Ａとの暗号通信に用いるマスタ鍵としての第２暗号鍵が設定された状態となる。
【００８９】
一方、上記ステップＳ１０４で否定判断すると（ステップＳ１０４：Ｎｏ）、ステップＳ１１２へ進む。ステップＳ１１２では、ＧＷ１０Ａの例外処理部１５が、例外処理を実行する（ステップＳ１１２）。例えば、ステップＳ１１２では、例外処理部１５は、ステップＳ１０２の暗号文の送信元のＥＣＵ２０Ａに対して、エラー信号を送信する。
【００９０】
なお、上記ステップＳ２０８では、ＥＣＵ２０Ａの暗号化部２４Ａが、ステップＳ２０６で生成された第３暗号鍵を、ステップＳ２０２で読み出したＧＷ１０Ａの公開鍵を用いて暗号化し、暗号文を生成した。しかし、ＥＣＵ２０Ａの暗号化部２４Ａは、ＧＷ１０Ａの公開鍵に代えて、ＧＷ１０Ａとの事前共有鍵を用いて第３暗号鍵を暗号化し、暗号文を生成してもよい。
【００９１】
次に、本実施の形態におけるＧＷ１０ＡおよびＥＣＵ２０Ａで実行する、更新処理の手順の一例を説明する。
【００９２】
図６は、ＧＷ１０ＡおよびＥＣＵ２０Ａが実行する、更新処理の手順の一例を示す、フローチャートである。なお、図６に示す更新処理が実行される前の状態では、図５に示す初期設定処理が少なくとも実行済であるものとする。
【００９３】
まず、ＧＷ１０Ａの送信部１１Ｂが、鍵更新コマンドをＥＣＵ２０Ａに送信する（ステップＳ３００）。ＥＣＵ２０Ａの受信部２１Ａは、ＧＷ１０Ａから鍵更新コマンドを受信する（ステップＳ４００）。ＥＣＵ２０Ａの変換部２２は、記憶部２６から第１暗号鍵を読み出す（ステップＳ４０２）。
【００９４】
次に、ＥＣＵ２０Ａの変換部２２は、第１変換規則を記憶部２７から読み出す（ステップＳ４０４）。次に、ＥＣＵ２０Ａの変換部２２は、第２変換規則を生成する（ステップＳ４０６）。変換部２２は、記憶部２７からハッシュ関数のアルゴリズムを読取り、新たなＣＮＴおよびＲＮＤなどのパラメータを該ハッシュ関数のアルゴリズムに入力することで、第２変換規則を生成する。
【００９５】
そして、ＥＣＵ２０Ａの変換部２２は、ステップＳ４０２で読み出した第１暗号鍵を、ステップＳ４０４で読み出した第１変換規則を用いて変換することによって、第２暗号鍵を生成する（ステップＳ４０８）。
【００９６】
次に、ＥＣＵ２０Ａの変換部２２は、ステップＳ４０２で読み出した第１暗号鍵を、ステップＳ４０６で生成した第２変換規則を用いて変換することによって、第３暗号鍵を生成する（ステップＳ４１０）。
【００９７】
次に、ＥＣＵ２０Ａの暗号化部２４Ａが、ステップＳ４１０で生成された第３暗号鍵を、ステップＳ４０８で生成された第２暗号鍵を用いて暗号化し、暗号文を生成する（ステップＳ４１２）。
【００９８】
次に、ＥＣＵ２０Ａの送信部２１Ｂは、ステップＳ４１２で生成された暗号文と、当該ＥＣＵ２０Ａの端末ＩＤと、をＧＷ１０Ａへ送信する（ステップＳ４１４）。
【００９９】
次に、ＥＣＵ２０Ａの更新部２３は、ステップＳ４１０で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する（ステップＳ４１６）。これによって、ＥＣＵ２０Ａの第２暗号鍵（本実施の形態では、第１変換規則）が更新される。
【０１００】
一方、ＧＷ１０Ａの受信部１１Ａは、ステップＳ３００で鍵更新コマンドを送信した送信先のＥＣＵ２０Ａから、該ＥＣＵ２０Ａの端末ＩＤと暗号文を受信する（ステップＳ３０２）。
【０１０１】
ＧＷ１０Ａの比較部１２は、ステップＳ３０２で受信した端末ＩＤがマスタ鍵管理ＤＢ１７Ａに登録されているか否かを判断する（ステップＳ３０４）。登録されている場合（ステップＳ３０４：Ｙｅｓ）、ステップＳ３０６へ進む。
【０１０２】
ステップＳ３０６では、ＧＷ１０Ａの復号部１３Ａが、ステップＳ３０２で受信した端末ＩＤに対する第２暗号鍵を、記憶部１７から読取る（ステップＳ３０６）。そして、復号部１３Ａは、読取った第２暗号鍵を用いて、ステップＳ３０２で受信した暗号文を復号し、第３暗号鍵を得る（ステップＳ３０８）。次に、更新部１４は、ステップＳ３０８で得た第３暗号鍵を第２暗号鍵として、ステップＳ３０２で受信した端末ＩＤに対応づけて、マスタ鍵管理ＤＢ１７Ａへ登録する（ステップＳ３１０）。ステップＳ３１０の処理によって、ＧＷ１０Ａにおける、該ＥＣＵ２０Ａとの暗号通信に用いるマスタ鍵としての第２暗号鍵が、第３暗号鍵で更新される。
【０１０３】
一方、上記ステップＳ３０４で否定判断すると（ステップＳ３０４：Ｎｏ）、ステップＳ３１２へ進む。ステップＳ３１２では、ＧＷ１０Ａの例外処理部１５が、例外処理を実行する（ステップＳ３１２）。例えば、ステップＳ３１２では、例外処理部１５は、ステップＳ３０２で受信した暗号文の送信元のＥＣＵ２０Ａに対して、エラー信号を送信する。
【０１０４】
以上説明したように、本実施の形態のＥＣＵ２０Ａは、変換部２２と、暗号化部２４Ａと、送信部２１Ｂと、を備える。変換部２２は、ＧＷ１０Ａ（サーバ装置）との間で共有するマスタ鍵の生成に用いるための第１暗号鍵を、ＧＷ１０Ａとの暗号通信に現在用いているマスタ鍵としての第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換し、新たなマスタ鍵としての第３暗号鍵を生成する。暗号化部２４Ａは、第２暗号鍵および第３暗号鍵に基づいて、第３暗号鍵を導出するための暗号文を生成する。送信部２１Ｂは、暗号文を、ＧＷ１０Ａへ送信する。
【０１０５】
このように、本実施の形態のＥＣＵ２０Ａは、種鍵である第１暗号鍵を用いて生成した第２暗号鍵を、ＧＷ１０Ａとの間で共有するマスタ鍵として用いる。また、ＥＣＵ２０Ａは、種鍵である第１暗号鍵を、第２暗号鍵の生成時に用いた第１変換規則とは異なる第２変換規則を用いて変換することで、新たなマスタ鍵としての第３暗号鍵を生成する。すなわち、本実施の形態のＥＣＵ２０Ａは、種鍵である第１暗号鍵を更新するのではなく、第１暗号鍵から生成した第２暗号鍵をマスタ鍵として用い、該第２暗号鍵を更新する。
【０１０６】
このため、本実施の形態のＥＣＵ２０Ａでは、マスタ鍵としての第２暗号鍵の更新や設定のための安全な読書き可能なメモリ領域を必要とせず、簡易な構成で、暗号鍵（具体的には、第２暗号鍵）の危殆化を抑制することができる。
【０１０７】
従って、本実施の形態のＥＣＵ２０Ａは、簡易な構成で、暗号鍵の危殆化を抑制することができる。
【０１０８】
また、本実施の形態のＥＣＵ２０Ａは、小型端末の処理に適した対称鍵暗号処理において、ＧＷ１０Ａとの間で共有するマスタ鍵としての第２暗号鍵を、安全に更新することができる。
【０１０９】
（第２の実施の形態）
本実施の形態では、第２暗号鍵と第３暗号鍵との差分情報を暗号通信する形態を説明する。
【０１１０】
図３は、本実施の形態の情報処理システム１Ｂにおける、ＧＷ１０ＢおよびＥＣＵ２０Ｂのハードウェア構成例を示すブロック図である。以下では、第１の実施の形態と共通する構成については、同一の符号を付与して重複した説明を適宜省略し、本実施の形態に特徴的な部分についてのみ説明する。
【０１１１】
情報処理システム１Ｂは、ＧＷ１０ＡおよびＥＣＵ２０Ａに代えて、ＧＷ１０ＢおよびＥＣＵ２０Ｂを備える点が、情報処理システム１Ａと異なる。
【０１１２】
ＥＣＵ２０Ｂは、送受信部２１と、変換部２２と、更新部２３と、暗号化部２４Ｂと、暗号化通信部２５と、記憶部２６と、記憶部２７と、を備える。ＥＣＵ２０Ｂは、暗号化部２４Ａに代えて、暗号化部２４Ｂを備えた以外は、第１の実施の形態のＥＣＵ２０Ａと同様である。
【０１１３】
本実施の形態では、暗号化部２４Ｂは、変換部２２で生成された第３暗号鍵と、ＧＷ１０Ｂとの暗号通信に現在用いている第２暗号鍵と、の差分情報を、第２暗号鍵で暗号化して、暗号文を生成する。そして、送信部２１Ｂは、この暗号文と、ＥＣＵ２０Ｂの端末ＩＤと、をＧＷ１０Ｂへ送信する。
【０１１４】
なお、本実施の形態で用いる第１変換規則および第２変換規則は、第１暗号鍵をこれらの変換規則を用いて変換することで生成される第２暗号鍵と第３暗号鍵の一部が同じとなるような変換規則であることが好ましい。
【０１１５】
具体的には、本実施の形態では、第１変換規則および第２変換規則として、以下の関係を満たすハッシュ関数を用いることが好ましい。
【０１１６】
第３暗号鍵＝ＫＤＦ（ＦＫ，ＣＮＴｉ−１，ＣＮＴｉ）
＝Ｈａｓｈ（ＦＫ，ＣＮＴｉ−１）｜｜Ｈａｓｈ（ＦＫ，ＣＮＴｉ）
・・・式（１）
【０１１７】
式（１）中、ＫＤＦは、鍵導出関数を示し、ＦＫは、第１暗号鍵を示す。また、式（１）中、ＣＮＴｉ−１は、第２暗号鍵の導出時に用いたＣＮＴ（カウント）の値を示し、ＣＮＴｉは、第３暗号鍵の導出時に用いたＣＮＴの値を示す。
【０１１８】
上記式（１）の関係を満たすハッシュ関数を第１変換規則および第２変換規則として用いることで、第１暗号鍵から第１変換規則を用いて生成した第２暗号鍵と、第１暗号鍵から第２変換規則を用いて生成した第３暗号鍵と、の差分情報は、Ｈａｓｈ（ＦＫ，ＣＮＴｉ）で表せる。
【０１１９】
このように、本実施の形態のＥＣＵ２０Ｂでは、暗号文として、第３暗号鍵を第２暗号鍵で暗号化することで生成した暗号文に代えて、第３暗号鍵と第２暗号鍵との差分情報を、第２暗号鍵で暗号化することで生成した暗号文を、ＧＷ１０Ｂへ送信する。
【０１２０】
このため、本実施の形態のＥＣＵ２０Ｂでは、第１の実施の形態の効果に加えて、ＧＷ１０Ｂに送信する暗号文のデータ量の削減を、図ることができる。
【０１２１】
具体的には、第２暗号鍵および第３暗号鍵が１２８ビットであると仮定すると、上記ハッシュ関数を第１変換規則および第２変換規則として用いることで、６４ビットの差分情報を暗号化した暗号文をＧＷ１０Ｂへ送信することとなる。このため、この場合、差分情報を用いることで、６４ビット分のデータ量の削減を図ることができる。
【０１２２】
なお、送信する暗号文のデータ量の削減を図る観点から、第１変換規則および第２変換規則として、ストリーム暗号を利用してもよい。
【０１２３】
また、本実施の形態では、第１変換規則および第２変換規則として、以下の関係を満たすハッシュ関数を用いてもよい。
【０１２４】
第３暗号鍵＝ＫＤＦ（ＦＫ，ＣＮＴｉ−１，ＣＮＴｉ）
＝Ｔ（Ｈａｓｈ（ＦＫ，ＣＮＴｉ−１）｜｜Ｈａｓｈ（ＦＫ，ＣＮＴｉ）
・・・式（２）
【０１２５】
式（２）中、ＫＤＦ、ＦＫ、ＣＮＴｉ−１、およびＣＮＴｉは、式（１）と同様である。式（２）中、Ｔは、Ｈａｓｈ関数、行列演算を伴うアフィン変換を表す。
【０１２６】
なお、本実施の形態で用いる第１変換規則および第２変換規則は、ハッシュ関数以外を用いたものであってもよい。例えば、第１変換規則および第２変換規則は、行列演算によって示される変換規則であってもよい。
【０１２７】
なお、本実施の形態では、暗号化部２４Ｂは、変換部２２で生成された１つの第３暗号鍵と、ＧＷ１０Ｂとの暗号通信に現在用いている１つの第２暗号鍵と、の差分情報を暗号化する場合を説明する。しかし、暗号化部２４Ｂは、変換部２２で生成された第３暗号鍵と、ＧＷ１０Ｂとの暗号通信に現在および過去に用いた複数の第２暗号鍵と、の差分情報を暗号化してもよい。第３暗号鍵と、複数の第２暗号鍵と、の差分情報を用いることで、送信するデータ量の削減を、更に図ることができる。
【０１２８】
次に、ＧＷ１０Ｂについて説明する。ＧＷ１０Ｂは、送受信部１１と、比較部１２と、復号部１３Ｂと、更新部１４と、例外処理部１５と、暗号化通信部１６と、記憶部１７と、を備える。ＧＷ１０Ｂは、復号部１３Ａに代えて、復号部１３Ｂを備えた以外は、第１の実施の形態のＧＷ１０Ａと同様である。
【０１２９】
復号部１３Ｂは、ＥＣＵ２０Ｂから受信部１１Ａを介して受信した、端末ＩＤに対応する第２暗号鍵を、マスタ鍵管理ＤＢ１７Ａから読取る。
【０１３０】
受信した端末ＩＤに対応する第２暗号鍵がマスタ鍵管理ＤＢ１７Ａに未登録である場合、復号部１３Ｂは、第１の実施の形態の復号部１３Ａと同様の処理を行えばよい。
【０１３１】
一方、受信した端末ＩＤに対応する第２暗号鍵がマスタ鍵管理ＤＢ１７Ａに登録済である場合、復号部１３Ｂは、該第２暗号鍵を読取る。そして、復号部１３Ｂは、読取った第２暗号鍵を用いて、ＥＣＵ２０Ｂから受信した暗号文を復号し、差分情報を得る。
【０１３２】
そして、復号部１３Ｂは、読み取った第２暗号鍵と差分情報から、第３暗号鍵を計算する。
【０１３３】
そして、更新部１４は、第１の実施の形態と同様に、得られた第３暗号鍵を、該暗号文と共に受信した端末ＩＤに対応づけて、第２暗号鍵としてマスタ鍵管理ＤＢ１７Ａへ登録する。この処理によって、ＧＷ１０Ｂは、該端末ＩＤによって識別されるＥＣＵ２０Ｂとの暗号通信に用いる第２暗号鍵を、第３暗号鍵で更新する。
【０１３４】
次に、本実施の形態におけるＧＷ１０ＢおよびＥＣＵ２０Ｂの動作例について説明する。なお、初期設定処理の手順については、第１の実施の形態と同様であるため、説明を省略する。
【０１３５】
図７は、ＧＷ１０ＢおよびＥＣＵ２０Ｂが実行する、更新処理の手順の一例を示す、フローチャートである。なお、図７に示す更新処理が実行される前の状態では、初期設定処理が少なくとも実行済であるものとする。
【０１３６】
まず、ＧＷ１０Ｂの送信部１１Ｂが、鍵更新コマンドをＥＣＵ２０Ｂに送信する（ステップＳ３２０）。ＥＣＵ２０Ｂの受信部２１Ａは、ＧＷ１０Ｂから鍵更新コマンドを受信する（ステップＳ４２０）。ＥＣＵ２０Ｂの変換部２２は、記憶部２６から第１暗号鍵を読み出す（ステップＳ４２２）。
【０１３７】
次に、ＥＣＵ２０Ｂの変換部２２は、第１変換規則を記憶部２７から読み出す（ステップＳ４２４）。次に、ＥＣＵ２０Ｂの変換部２２は、第２変換規則を生成する（ステップＳ４２６）。そして、ＥＣＵ２０Ｂの変換部２２は、ステップＳ４２２で読み出した第１暗号鍵を、ステップＳ４２４で読み出した第１変換規則を用いて変換することによって、第２暗号鍵を生成する（ステップＳ４２８）。
【０１３８】
次に、ＥＣＵ２０Ｂの変換部２２は、ステップＳ４２２で読み出した第１暗号鍵を、ステップＳ４０６で生成した第２変換規則を用いて変換することによって、第３暗号鍵を生成する（ステップＳ４３０）。
【０１３９】
次に、ＥＣＵ２０Ｂの暗号化部２４Ｂが、ステップＳ４３０で生成された第３暗号鍵と、ステップＳ４２８で生成された第２暗号鍵と、の差分情報を計算する（ステップＳ４３２）。そして、暗号化部２４Ｂは、ステップＳ４３２で計算した差分情報を、ステップＳ４２８で生成した第２暗号鍵を用いて暗号化し、暗号文を生成する（ステップＳ４３４）。
【０１４０】
次に、ＥＣＵ２０Ｂの送信部２１Ｂは、ステップＳ４３４で生成された暗号文と、当該ＥＣＵ２０Ｂの端末ＩＤと、をＧＷ１０Ｂへ送信する（ステップＳ４３６）。
【０１４１】
次に、ＥＣＵ２０Ｂの更新部２３は、ステップＳ４３０で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する（ステップＳ４３８）。これによって、ＥＣＵ２０Ｂの第２暗号鍵（本実施の形態では、第１変換規則）が更新される。
【０１４２】
一方、ＧＷ１０Ｂの受信部１１Ａは、ステップＳ３２０で鍵更新コマンドを送信した送信先のＥＣＵ２０Ｂから、該ＥＣＵ２０Ｂの端末ＩＤと暗号文を受信する（ステップＳ３２２）。
【０１４３】
ＧＷ１０Ｂの比較部１２は、ステップＳ３２２で受信した端末ＩＤがマスタ鍵管理ＤＢ１７Ａに登録されているか否かを判断する（ステップＳ３２４）。登録されている場合（ステップＳ３２４：Ｙｅｓ）、ステップＳ３２６へ進む。
【０１４４】
ステップＳ３２６では、ＧＷ１０Ｂの復号部１３Ｂが、ステップＳ３２２で受信した端末ＩＤに対する第２暗号鍵を、記憶部１７から読取る（ステップＳ３２６）。そして、復号部１３Ｂは、読取った第２暗号鍵を用いて、ステップＳ３２２で受信した暗号文を復号し、差分情報を得る（ステップＳ３２８）。次に、復号部１３Ｂは、ステップＳ３２８で得られた差分情報と、ステップＳ３２６で読み取った第２暗号鍵と、から、第３暗号鍵を計算する（ステップＳ３３０）。
【０１４５】
次に、更新部１４は、ステップＳ３３０で得た第３暗号鍵を第２暗号鍵として、ステップＳ３２２で受信した端末ＩＤに対応づけて、マスタ鍵管理ＤＢ１７Ａへ登録する（ステップＳ３３２）。ステップＳ３３２の処理によって、ＧＷ１０Ｂにおける、該ＥＣＵ２０Ｂとの暗号通信に用いるマスタ鍵としての第２暗号鍵が、第３暗号鍵で更新される。
【０１４６】
一方、上記ステップＳ３２４で否定判断すると（ステップＳ３２４：Ｎｏ）、ステップＳ３３４へ進む。ステップＳ３３４では、ＧＷ１０Ｂの例外処理部１５が、例外処理を実行する（ステップＳ３３４）。例えば、ステップＳ３３４では、例外処理部１５は、ステップＳ３２２で受信した暗号文の送信元のＥＣＵ２０Ｂに対して、エラー信号を送信する。
【０１４７】
以上説明したように、本実施の形態のＥＣＵ２０Ｂでは、暗号化部２４Ｂが、第３暗号鍵と第２暗号鍵との差分情報を、第２暗号鍵で暗号化して、暗号文を生成する。そして、送信部２１Ｂは、この暗号文を、ＧＷ１０Ｂへ送信する。
【０１４８】
このため、本実施の形態のＥＣＵ２０Ｂでは、第１の実施の形態の効果に加えて、通信データ量の削減を図ることができる。
【０１４９】
（第３の実施の形態）
本実施の形態では、第３暗号鍵の正しさを検証するための検証データを更に用いる。
【０１５０】
図３は、本実施の形態の情報処理システム１Ｃにおける、ＧＷ１０ＣおよびＥＣＵ２０Ｃのハードウェア構成例を示すブロック図である。以下では、第１の実施の形態と共通する構成については、同一の符号を付与して重複した説明を適宜省略し、本実施の形態に特徴的な部分についてのみ説明する。
【０１５１】
情報処理システム１Ｃは、ＧＷ１０ＡおよびＥＣＵ２０Ａに代えて、ＧＷ１０ＣおよびＥＣＵ２０Ｃを備える点が、情報処理システム１Ａと異なる。
【０１５２】
ＥＣＵ２０Ｃは、送受信部２１と、変換部２２と、更新部２３と、暗号化部２４Ｃと、暗号化通信部２５と、記憶部２６と、記憶部２７と、を備える。ＥＣＵ２０Ｃは、暗号化部２４Ａに代えて、暗号化部２４Ｃを備えた以外は、第１の実施の形態のＥＣＵ２０Ａと同様である。
【０１５３】
本実施の形態では、暗号化部２４Ｃは、変換部２２で生成された第３暗号鍵と、ＧＷ１０Ｃとの暗号通信に現在用いている第２暗号鍵と、の差分情報を計算する。さらに、暗号化部２４Ｃは、第３暗号鍵の正しさを検証するための検証データを生成する。
【０１５４】
検証データには、例えば、予め定めた固定値、差分情報の反転データ、差分情報から計算されるパリティビット、差分情報と第３暗号鍵から計算される認証子、などを用いる。
【０１５５】
そして、暗号化部２４Ｃは、検証データと、差分情報と、を第２暗号鍵で暗号化して、暗号文を生成する。そして、送信部２１Ｂは、この暗号文と、ＥＣＵ２０Ｃの端末ＩＤと、をＧＷ１０Ｃへ送信する。
【０１５６】
なお、本実施の形態で用いる第１変換規則および第２変換規則は、第２の実施の形態と同様の変換規則を用いることが好ましい。
【０１５７】
ここで、第２の実施の形態では、暗号化部２４Ｂがブロック暗号を用いて暗号化する場合には、“０”などの固定データを追加して所定の長さのデータに変換した上で、暗号通信を行う必要があった。
【０１５８】
一方、本実施の形態では、暗号化部２４Ｃは、ブロック暗号を用いて暗号化する場合、“０”などの固定データを追加するべき位置に、検証データを埋め込んで暗号通信すればよい。
【０１５９】
次に、ＧＷ１０Ｃについて説明する。ＧＷ１０Ｃは、送受信部１１と、比較部１２と、復号部１３Ｃと、更新部１４と、例外処理部１５と、暗号化通信部１６と、記憶部１７と、を備える。ＧＷ１０Ｃは、復号部１３Ａに代えて、復号部１３Ｃを備えた以外は、第１の実施の形態のＧＷ１０Ａと同様である。
【０１６０】
復号部１３Ｃは、ＥＣＵ２０Ｃから受信部１１Ａを介して受信した、端末ＩＤに対応する第２暗号鍵を、マスタ鍵管理ＤＢ１７Ａから読取る。
【０１６１】
受信した端末ＩＤに対応する第２暗号鍵がマスタ鍵管理ＤＢ１７Ａに未登録である場合、復号部１３Ｃは、第１の実施の形態の復号部１３Ａと同様の処理を行えばよい。
【０１６２】
一方、受信した端末ＩＤに対応する第２暗号鍵がマスタ鍵管理ＤＢ１７Ａに登録済である場合、復号部１３Ｃは、該第２暗号鍵を読取る。そして、復号部１３Ｃは、読取った第２暗号鍵を用いて、ＥＣＵ２０Ｃから受信した暗号文を復号し、差分情報と検証データを得る。
【０１６３】
そして、復号部１３Ｃは、読み取った第２暗号鍵と差分情報から、第３暗号鍵を計算する。さらに、復号部１３Ｃは、計算した第３暗号鍵が正しいか否かを、検証データを検証することで検証する。
【０１６４】
そして、更新部１４は、第３暗号鍵を正しいと検証した場合、第１の実施の形態と同様に、得られた第３暗号鍵を、該暗号文と共に受信した端末ＩＤに対応づけて、第２暗号鍵としてマスタ鍵管理ＤＢ１７Ａへ登録する。この処理によって、ＧＷ１０Ｃは、該端末ＩＤによって識別されるＥＣＵ２０Ｃとの暗号通信に用いる第２暗号鍵を、第３暗号鍵で更新する。
【０１６５】
次に、本実施の形態におけるＧＷ１０ＣおよびＥＣＵ２０Ｃの動作例について説明する。なお、初期設定処理の手順については、第１の実施の形態と同様であるため、説明を省略する。
【０１６６】
図８は、ＧＷ１０ＣおよびＥＣＵ２０Ｃが実行する、更新処理の手順の一例を示す、フローチャートである。なお、図８に示す更新処理が実行される前の状態では、初期設定処理が少なくとも実行済であるものとする。
【０１６７】
まず、ＧＷ１０Ｃの送信部１１Ｂが、鍵更新コマンドをＥＣＵ２０Ｃに送信する（ステップＳ３４０）。ＥＣＵ２０Ｃの受信部２１Ａは、ＧＷ１０Ｃから鍵更新コマンドを受信する（ステップＳ４４０）。ＥＣＵ２０Ｃの変換部２２は、記憶部２６から第１暗号鍵を読み出す（ステップＳ４４２）。
【０１６８】
次に、ＥＣＵ２０Ｃの変換部２２は、第１変換規則を記憶部２７から読み出す（ステップＳ４４４）。次に、ＥＣＵ２０Ｃの変換部２２は、第２変換規則を生成する（ステップＳ４４６）。そして、ＥＣＵ２０Ｃの変換部２２は、ステップＳ４２２で読み出した第１暗号鍵を、ステップＳ４４４で読み出した第１変換規則を用いて変換することによって、第２暗号鍵を生成する（ステップＳ４４８）。
【０１６９】
次に、ＥＣＵ２０Ｃの変換部２２は、ステップＳ４４２で読み出した第１暗号鍵を、ステップＳ４４６で生成した第２変換規則を用いて変換することによって、第３暗号鍵を生成する（ステップＳ４５０）。
【０１７０】
次に、ＥＣＵ２０Ｃの暗号化部２４Ｃが、ステップＳ４５０で生成された第３暗号鍵と、ステップＳ４４８で生成された第２暗号鍵と、の差分情報を計算する（ステップＳ４５２）。そして、さらに、暗号化部２４Ｃは、ステップＳ４５０で生成された第３暗号鍵と、ステップＳ４５２で計算された差分情報と、を用いて、検証データを生成する（ステップＳ４５４）。
【０１７１】
次に、ＥＣＵ２０Ｃの暗号化部２４Ｂは、ステップＳ４５２およびステップＳ４５４で得られた、差分情報および検証データを、ステップＳ４４８で生成した第２暗号鍵を用いて暗号化し、暗号文を生成する（ステップＳ４５６）。
【０１７２】
次に、ＥＣＵ２０Ｃの送信部２１Ｂは、ステップＳ４５６で生成された暗号文と、当該ＥＣＵ２０Ｃの端末ＩＤと、をＧＷ１０Ｃへ送信する（ステップＳ４５８）。
【０１７３】
次に、ＥＣＵ２０Ｃの更新部２３は、ステップＳ４５０で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する（ステップＳ４６０）。これによって、ＥＣＵ２０Ｃの第２暗号鍵（本実施の形態では、第１変換規則）が更新される。
【０１７４】
一方、ＧＷ１０Ｃの受信部１１Ａは、ステップＳ３４０で鍵更新コマンドを送信した送信先のＥＣＵ２０Ｃから、該ＥＣＵ２０Ｃの端末ＩＤと暗号文を受信する（ステップＳ３４２）。
【０１７５】
ＧＷ１０Ｃの比較部１２は、ステップＳ３４２で受信した端末ＩＤがマスタ鍵管理ＤＢ１７Ａに登録されているか否かを判断する（ステップＳ３４４）。登録されている場合（ステップＳ３４４：Ｙｅｓ）、ステップＳ３４６へ進む。
【０１７６】
ステップＳ３４６では、ＧＷ１０Ｃの復号部１３Ｃが、ステップＳ３４２で受信した端末ＩＤに対する第２暗号鍵を、記憶部１７から読取る（ステップＳ３４６）。そして、復号部１３Ｃは、読取った第２暗号鍵を用いて、ステップＳ３４２で受信した暗号文を復号し、差分情報と検証データを得る（ステップＳ３４８）。次に、復号部１３Ｃは、ステップＳ３４８で得られた差分情報と、ステップＳ３４６で読み取った第２暗号鍵と、から、第３暗号鍵を計算する（ステップＳ３５０）。
【０１７７】
次に、ＧＷ１０Ｃの復号部１３Ｃが、ステップＳ３５０で得られた第３暗号鍵を、ステップＳ３４８で得られた検証データを用いて検証する（ステップＳ３５２）。第３暗号鍵を正しいと検証した場合（ステップＳ３５４：Ｙｅｓ）、ステップＳ３５６へ進む。ステップＳ３５６では、ＧＷ１０Ｃの更新部１４が、ステップＳ３５０で得た第３暗号鍵を第２暗号鍵として、ステップＳ３４２で受信した端末ＩＤに対応づけて、マスタ鍵管理ＤＢ１７Ａへ登録する（ステップＳ３５６）。ステップＳ３５６の処理によって、ＧＷ１０Ｃにおける、該ＥＣＵ２０Ｃとの暗号通信に用いるマスタ鍵としての第２暗号鍵が、第３暗号鍵で更新される。
【０１７８】
一方、上記ステップＳ３５４で否定判断すると（ステップＳ３５４：Ｎｏ）、ステップＳ３５８へ進む。ステップＳ３５８では、ＧＷ１０Ｃの例外処理部１５が、例外処理を実行する（ステップＳ３５８）。例えば、ステップＳ３５８では、例外処理部１５は、ステップＳ３４２で受信した暗号文の送信元のＥＣＵ２０Ｃに対して、エラー信号を送信する。
【０１７９】
同様に、上記ステップＳ３４４で否定判断すると（ステップＳ３４４：Ｎｏ）、ステップＳ３６０へ進む。ステップＳ３６０では、ＧＷ１０Ｃの例外処理部１５が、例外処理を実行する（ステップＳ３６０）。例えば、ステップＳ３６０では、例外処理部１５は、ステップＳ３４２で受信した暗号文の送信元のＥＣＵ２０Ｃに対して、エラー信号を送信する。
【０１８０】
以上説明したように、本実施の形態のＥＣＵ２０Ｃでは、暗号化部２４Ｃが、第３暗号鍵と第２暗号鍵との差分情報と、第３暗号鍵の正しさを検証するための検証データと、を第２暗号鍵で暗号化して、暗号文を生成する。そして、送信部２１Ｂは、この暗号文を、ＧＷ１０Ｃへ送信する。
【０１８１】
このため、本実施の形態のＥＣＵ２０Ｃでは、第１の実施の形態の効果に加えて、通信データ量の削減を図ることができると共に、第２暗号鍵を更新する第３暗号鍵の正当性を保証することができる。
【０１８２】
（第４の実施の形態）
本実施の形態では、ＥＣＵ２０Ｄが、装置固有の固有データを出力するＰＵＦ（Ｐｈｙｓｉｃａｌｌｙ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）部を搭載し、ＰＵＦ部から出力された固有データを用いて、種鍵である第１暗号鍵を生成する。
【０１８３】
図９は、本実施の形態の情報処理システム１Ｄにおける、ＧＷ１０ＡおよびＥＣＵ２０Ｄの各々の、機能的な構成例を示すブロック図である。以下では、第１の実施の形態と共通する構成については、同一の符号を付与して重複した説明を適宜省略し、本実施の形態に特徴的な部分についてのみ説明する。
【０１８４】
情報処理システム１Ｄは、ＥＣＵ２０Ａに代えてＥＣＵ２０Ｄを備える点が、情報処理システム１Ａと異なる。
【０１８５】
ＥＣＵ２０Ｄは、送受信部２１と、変換部２２Ｄと、更新部２３と、暗号化部２４Ａと、暗号化通信部２５と、記憶部２７と、ＰＵＦ部２８と、補正データ生成部２９と、補正部３０と、を備える。
【０１８６】
ＥＣＵ２０Ｄは、記憶部２６を備えない点がＥＣＵ２０Ａと異なる。また、ＥＣＵ２０Ｄは、変換部２２に代えて、変換部２２Ｄを備える。また、ＥＣＵ２０Ｄは、ＰＵＦ部２８、補正データ生成部２９、および補正部３０を更に備える。これらの点以外は、ＥＣＵ２０Ｄは、第１の実施の形態のＥＣＵ２０Ａと同様である。
【０１８７】
ＰＵＦ部２８は、ＥＣＵ２０Ｄに固有の固有データを出力する。詳細には、ＰＵＦ部２８は、物理的複製困難関数である。物理的複製困難関数は、あるデバイスに搭載されると、同一の入力からそのデバイス固有の値（固有データ）を出力する関数である。すなわち、ＰＵＦ部２８は、ＥＣＵ２０Ｄに固有の固有データを出力する。
【０１８８】
補正データ生成部２９は、ＰＵＦ部２８から出力された固有データの補正データを生成する。補正データは、ＰＵＦ部２８から出力された固有データを用いて、安定した第１暗号鍵を生成するためのデータである。言い換えると、補正データは、ＰＵＦ部２８から新たに出力される固有データに基づいて生成される第１暗号鍵が、互いに同じ第１暗号鍵であることを保証する。
【０１８９】
補正データには、例えば、ノイズを含むデータから安定して情報を抽出することが可能なＦｕｚｚｙ  Ｅｘｔｒａｃｔｏｒにおける、ヘルパデータ（Ｈｅｌｐｅｒ  ｄａｔａ）を用いればよい。
【０１９０】
補正部３０は、ＰＵＦ部２８から出力された固有データと、補正データ生成部２９で生成した補正データと、を用いて、第１暗号鍵を生成する。例えば、補正部３０は、ＰＵＦ部２８から出力された固有データと、補正データ（例えば、ヘルパデータ）と、を組み合わせることにより、予め定めたアルゴリズムに従って、第１暗号鍵を生成する。
【０１９１】
なお、補正データ生成部２９は、初期設定処理の段階で、補正データを生成しておく。そして、更新処理の段階では、補正部３０は、この補正データと、ＰＵＦ部２８から新たに出力された固有データと、を用いて第１暗号鍵を生成する。
【０１９２】
変換部２２Ｄは、補正部３０で生成された第１暗号鍵を用いる以外は、第１の実施の形態の変換部２２と同様にして、第３暗号鍵を生成する。
【０１９３】
このように、本実施の形態では、ＥＣＵ２０Ｄは、第１暗号鍵を予め記憶することなく、ＰＵＦ部２８から出力される固有データを用いて、第１暗号鍵を生成する。このため、種鍵として用いる第１暗号鍵を予め記憶するための記憶部２６を設ける必要がなく、暗号鍵の危殆化を更に抑制することができる。
【０１９４】
次に、本実施の形態におけるＧＷ１０ＡおよびＥＣＵ２０Ｄの動作例について説明する。まず、初期設定処理の手順の一例を説明する。
【０１９５】
図１０は、ＧＷ１０ＡおよびＥＣＵ２０Ｄが実行する、初期設定処理の手順の一例を示す、フローチャートである。なお、図１０に示す初期設定処理が実行される前の状態では、ＧＷ１０Ａと、該ＧＷ１０Ａと通信するＥＣＵ２０Ｄと、には、該ＥＣＵ２０Ｄの第２暗号鍵が未設定であるものとする。なお、ＧＷ１０Ａの処理は、第１の実施の形態と同様である。
【０１９６】
まず、ＧＷ１０Ａの送信部１１Ｂが、鍵設定コマンドをＥＣＵ２０Ｄに送信する（ステップＳ１００）。
【０１９７】
ＥＣＵ２０Ｄの受信部２１Ａは、ＧＷ１０Ａから鍵設定コマンドを受信する（ステップＳ５００）。ＥＣＵ２０Ｄの補正データ生成部２９は、ＰＵＦ部２８から固有データを読出し、記憶部２７からＧＷ１０Ａの公開鍵を読み出す（ステップＳ５０２）。
【０１９８】
次に、ＥＣＵ２０Ｄの補正データ生成部２９が、ステップＳ５０２で読み出した固有データの、補正データを生成する（ステップＳ５０４）。そして、補正データ生成部２９は、生成した補正データを、記憶部２７へ記憶する。
【０１９９】
次に、ＥＣＵ２０Ｄの補正部３０が、ステップＳ５０２で読み出した固有データと、ステップＳ５０４で生成された補正データと、を用いて、第１暗号鍵を生成する（ステップＳ５０６）。
【０２００】
次に、ＥＣＵ２０Ｄの変換部２２Ｄが、第１の実施の形態の変換部２２と同様にして、第２変換規則を読み出す（ステップＳ５０８）。そして、ＥＣＵ２０Ｄの変換部２２Ｄは、ステップＳ５０６で生成された第１暗号鍵を、ステップＳ５０８で読み出した第２変換規則を用いて変換することによって、第３暗号鍵を生成する（ステップＳ５１０）。
【０２０１】
次に、ＥＣＵ２０Ｄの暗号化部２４Ａが、ステップＳ５１０で生成された第３暗号鍵を、ステップＳ５０２で読み出したＧＷ１０Ａの公開鍵を用いて暗号化し、暗号文を生成する（ステップＳ５１２）。
【０２０２】
次に、ＥＣＵ２０Ｄの送信部２１Ｂは、ステップＳ５１２で生成された暗号文と、当該ＥＣＵ２０Ｄの端末ＩＤと、をＧＷ１０Ａへ送信する（ステップＳ５１４）。
【０２０３】
次に、ＥＣＵ２０Ｄの更新部２３は、ステップＳ５１０で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する（ステップＳ５１６）。
【０２０４】
一方、ＧＷ１０Ａは、第１の実施の形態のステップＳ１０２〜ステップＳ１１２と同様の処理を行う（図５も参照）。
【０２０５】
次に、本実施の形態のＧＷ１０ＡおよびＥＣＵ２０Ｄが実行する、更新処理の手順の一例を説明する。
【０２０６】
図１１は、ＧＷ１０ＡおよびＥＣＵ２０Ｄが実行する、更新処理の手順の一例を示す、フローチャートである。なお、図１１に示す更新処理が実行される前の状態では、図１０に示す初期設定処理が少なくとも実行済であるものとする。
【０２０７】
まず、ＧＷ１０Ａの送信部１１Ｂが、鍵更新コマンドをＥＣＵ２０Ｄに送信する（ステップＳ３００）。ＥＣＵ２０Ｄの受信部２１Ａは、ＧＷ１０Ａから鍵更新コマンドを受信する（ステップＳ６００）。
【０２０８】
ＥＣＵ２０Ｄの補正部３０は、ＰＵＦ部２８から出力される固有データと、記憶部２７に記憶されている補正データと、を読出す（ステップＳ６０２）。
【０２０９】
次に、補正部３０は、ステップＳ６０２で読出した固有データと補正データを用いて、第１暗号鍵を生成する（ステップＳ６０４）。
【０２１０】
次に、ＥＣＵ２０Ｄの変換部２２Ｄは、第１変換規則を記憶部２７から読み出す（ステップＳ６０６）。次に、ＥＣＵ２０Ｄの変換部２２Ｄは、第２変換規則を生成する（ステップＳ６０８）。ステップＳ６０８の処理は、第１の実施の形態のステップＳ４０６と同様である（図６参照）。
【０２１１】
次に、ＥＣＵ２０Ｄの変換部２２Ｄは、ステップＳ６０４で生成された第１暗号鍵を、ステップＳ６０６で読み出した第１変換規則を用いて変換することによって、第２暗号鍵を生成する（ステップＳ６１０）。
【０２１２】
次に、ＥＣＵ２０Ｄの変換部２２Ｄは、ステップＳ６０４で生成された第１暗号鍵を、ステップＳ６０８で生成した第２変換規則を用いて変換することによって、第３暗号鍵を生成する（ステップＳ６１２）。
【０２１３】
次に、ＥＣＵ２０Ｄの暗号化部２４Ａが、ステップＳ６１２で生成された第３暗号鍵を、ステップＳ６１０で生成された第２暗号鍵を用いて暗号化し、暗号文を生成する（ステップＳ６１４）。次に、ＥＣＵ２０Ｄの送信部２１Ｂは、ステップＳ６１４で生成された暗号文と、当該ＥＣＵ２０Ｄの端末ＩＤと、をＧＷ１０Ａへ送信する（ステップＳ６１６）。次に、ＥＣＵ２０Ｄの更新部２３は、ステップＳ６１２で生成された第３暗号鍵の生成に用いた第２変換規則を、第１変換規則として、記憶部２７に格納する（ステップＳ６１８）。これによって、ＥＣＵ２０Ｄの第２暗号鍵（本実施の形態では、第１変換規則）が更新される。
【０２１４】
一方、ＧＷ１０Ａは、ＥＣＵ２０Ｄから端末ＩＤと暗号文を受信すると、第１の実施の形態のステップＳ３０２〜ステップＳ３１２と同様の処理を行う（ステップＳ３０２〜ステップＳ３１２）。
【０２１５】
以上説明したように、本実施の形態のＥＣＵ２０Ｄは、ＰＵＦ部２８から出力される固有データを用いて第１暗号鍵を生成する。このため、本実施の形態のＥＣＵ２０Ｄは、種鍵として用いる第１暗号鍵を予め記憶するための記憶部２６を設ける必要がない。このため、本実施の形態のＥＣＵ２０Ｄは、暗号鍵の危殆化を更に抑制することができる。
【０２１６】
従って、本実施の形態のＥＣＵ２０Ｄは、第１の実施の形態の効果に加えて、更に、暗号鍵の危殆化を抑制することができる。
【０２１７】
また、本実施の形態のＥＣＵ２０Ｄは、ＥＣＵ２０Ｄに対する不正な攻撃などによって、第１暗号鍵が漏えいするリスクの低減を図ることができる。
【０２１８】
なお、本実施の形態では、ＥＣＵ２０Ｄの補正データ生成部２９が、ＰＵＦ部２８から読出した固有データの補正データを生成し、記憶部２７へ記憶する場合を説明した。しかし、補正データ生成のタイミングは、ＥＣＵ２０Ｄの製造段階など、ＥＣＵ２０Ｄがシステムに組み込まれる前であってもよい。この場合、ＥＣＵ２０Ｄは、補正データ生成部２９を搭載しない形態であってもよい。そして、この場合、記憶部２７に、補正データを予め記憶すればよい。
【０２１９】
（変形例）
なお、上記第４の実施の形態では、ＥＣＵ２０Ｄは、更新処理の段階において、ＰＵＦ部２８から出力された固有データの補正データと、ＰＵＦ部２８から新たに出力された固有データと、から第１暗号鍵を生成する形態を説明した。
【０２２０】
しかし、ＥＣＵ２０Ｄは、ＰＵＦ部２８から出力される固有データを用いて、以下の方法により第１暗号鍵を生成してもよい。
【０２２１】
具体的には、初期設定処理において、補正データ生成部２９は、第４の実施の形態と同様にして、ＰＵＦ部２８から出力された固有データの、補正データ（以下、一次補正データと称する）を生成する。
【０２２２】
そして、さらに、補正データ生成部２９は、該固有データと、該一次補正データを用いて、暗号鍵（以下、一次暗号鍵と称する）を生成する。例えば、補正データ生成部２９は、該固有データと、該一次補正データ（ヘルパデータ）と、を組み合わせることにより、予め定めたアルゴリズムなどに従って、一次暗号鍵を生成する。
【０２２３】
そして、補正データ生成部２９は、予め記憶した第１暗号鍵を読取る。この場合、ＥＣＵ２０Ｄは、ＥＣＵ２０Ｄの初期出荷時などの段階で、第１暗号鍵を予め記憶部２７などに記憶しておけばよい。補正データ生成部２９は、読取った第１暗号鍵を、一次暗号鍵を用いて暗号化し、暗号文（以下、一次暗号文と称する）を生成する。
【０２２４】
そして、補正データ生成部２９は、該一次補正データと該一次暗号文とを、記憶部２７に記憶する。すなわち、補正データ生成部２９は、初期設定処理の段階で、一次補正データと、一次暗号文と、を作成し、記憶部２７に記憶する。
【０２２５】
そして、更新処理時には、補正部３０は、ＰＵＦ部２８から新たに出力された固有データと、記憶部２７に記憶されている一次補正データと、を用いて、上記一次暗号鍵を生成する。例えば、補正部３０は、ＰＵＦ部２８から新たに出力された固有データと、一次補正データ（ヘルパデータ）と、を組み合わせることにより、予め定めたアルゴリズムなどに従って、一次暗号鍵を生成する。
【０２２６】
さらに、補正部３０は、生成した一次暗号鍵を用いて、記憶部２７にされている一次暗号文を復号することで、種鍵として用いる第１暗号鍵を生成する。
【０２２７】
このように、ＥＣＵ２０Ｄは、ＰＵＦ部２８から出力される固有データに基づいて、第１暗号鍵を復号することで、第１暗号鍵を得てもよい。
【０２２８】
なお、本変形例では、上記第４の実施の形態と同様に、補正データ生成のタイミングが、ＥＣＵ２０Ｄの製造段階など、ＥＣＵ２０Ｄがシステムに組み込まれる前であってもよい。この場合、ＥＣＵ２０Ｄは、補正データ生成部２９を搭載しない形態であってもよい。
【０２２９】
＜補足説明＞
なお、ＧＷ１０Ａ、１０Ｂ、１０Ｃ、ＥＣＵ２０Ａ、２０Ｂ、２０Ｃ、２０Ｄの上述した機能は、例えば、図２に示したハードウェアとソフトウェアとの協働により実現することができる。この場合、マイクロコントローラ９がネットワークＩ／Ｆ８を利用しながら、ソフトウェアとして提供されるプログラムに応じた制御を実行することにより、上述した機能的な構成要素が実現される。
【０２３０】
ＧＷ１０Ａ、１０Ｂ、１０Ｃ、ＥＣＵ２０Ａ、２０Ｂ、２０Ｃ、２０Ｄの機能的な構成要素を実現するプログラムは、例えば、マイクロコントローラ９内のメモリ領域などに予め組み込んで提供される。また、上記プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤなどのコンピュータ読み取り可能な記録媒体に記録されて提供されるようにしてもよい。また、上記プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上記プログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。なお、ＧＷ１０Ａ、１０Ｂ、１０Ｃ、ＥＣＵ２０Ａ、２０Ｂ、２０Ｃ、２０Ｄにおける上述した機能的な構成要素は、その一部または全部を、ＡＳＩＣやＦＰＧＡなどの専用のハードウェアを用いて実現することも可能である。
【０２３１】
以上、本発明の実施の形態を説明したが、これらの実施の形態は例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２３２】
１Ａ、１Ｂ、１Ｃ、１Ｄ  情報処理システム
１０Ａ、１０Ｂ、１０Ｃ  ＧＷ
１１Ａ  受信部
１３Ａ、１３Ｂ、１３Ｃ  復号部
１４  更新部
２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ  ＥＣＵ
２１Ｂ  送信部
２２、２２Ｄ  変換部
２３  更新部
２４Ａ、２４Ｂ  暗号化部
２８  ＰＵＦ部
２９  補正データ生成部
３０  補正部
【図１】
2018042203.tif 000003
【図２】
2018042203.tif 000004
【図３】
2018042203.tif 000005
【図４】
2018042203.tif 000006
【図５】
2018042203.tif 000007
【図６】
2018042203.tif 000008
【図７】
2018042203.tif 000009
【図８】
2018042203.tif 000010
【図９】
2018042203.tif 000011
【図１０】
2018042203.tif 000012
【図１１】
2018042203.tif 000013