(57)【要約】  通信の安全性の向上を図る。サーバ（１０１）は、車載器（１０２）から、鍵情報（１１１−１＃Ｃ）を用いてＥＣＵ情報（１２０）を暗号化した暗号化データ（１２１）と、識別情報（１１２−１＃Ｃ）を受け付ける。受け付けた後、サーバ（１０１）は、識別情報（１１２−１＃Ｃ）から、識別情報（１１２−１）の次に用いる鍵の識別情報が記憶されているかを判断する。サーバ（１０１）は、識別情報（１１２−１）の次に用いる鍵の識別情報が記憶されていないことを判断し、次の鍵として、鍵情報（１１１−２＃Ｓ）と鍵情報（１１１−２）を識別する識別情報（１１２−２＃Ｓ）を取得する。サーバ（１０１）は、鍵情報（１１１−２＃Ｓ）と、識別情報（１１２−２＃Ｓ）とを、鍵情報（１１１−１＃Ｓ）を用いて暗号化し、暗号化したデータ（１２２）と、識別情報（１１２−１＃Ｓ）とを車載器（１０２）に送信する。
2014002280.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵の鍵情報と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵の鍵情報と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵の鍵情報を用いて暗号化し、
暗号化した前記他の鍵の鍵情報と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行させることを特徴とする通信プログラム。
【請求項２】
前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されている場合、前記いずれかの鍵が最初に用いられてからの経過時間または前記いずれかの鍵が用いられた回数に基づいて、前記いずれかの鍵が有効か否かを判断し、
前記いずれかの鍵が有効でない場合、前記次に用いる鍵の識別情報を、前記記憶部に記憶されている前記いずれかの鍵の鍵情報を用いて暗号化し、
暗号化した前記次に用いる鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行させることを特徴とする請求項１に記載の通信プログラム。
【請求項３】
前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部の記憶内容に基づいて、前記いずれかの鍵の前に前記通信先装置が用いた前の鍵を特定する処理を実行させ、
前記取得する処理は、
前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵および前記特定した鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得することを特徴とする請求項１または２に記載の通信プログラム。
【請求項４】
前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部の記憶内容に基づいて、前記いずれかの鍵の前に前記通信先装置が用いた前の鍵を特定し、
前記記憶部に記憶されている前記複数の鍵のうちの、特定した前記前の鍵の鍵情報と前記前の鍵の識別情報とを削除する処理を実行させ、
前記取得する処理は、
削除した削除後の前記記憶部に記憶されている鍵のうちの前記いずれかの鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得することを特徴とする請求項１〜３のいずれか一つに記載の通信プログラム。
【請求項５】
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵の鍵情報と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵の鍵情報と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵の鍵情報を用いて暗号化し、
暗号化した前記他の鍵の鍵情報と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理をコンピュータに実行させる通信プログラムを記録したことを特徴とする記録媒体。
【請求項６】
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付ける受付部と、
前記受付部によって受け付けられた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵の鍵情報と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する判定部と、
前記判定部によって前記次に用いる鍵の識別情報が記憶されていないと判定された場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得する取得部と、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、前記取得部によって取得された前記他の鍵の識別情報を格納する格納部と、
前記取得部によって取得された前記他の鍵の鍵情報と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵の鍵情報を用いて暗号化する暗号化部と、
前記暗号化部によって暗号化された前記他の鍵の鍵情報と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する送信制御部と、
を有することを特徴とする通信装置。
【請求項７】
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付ける受付部と、
前記受付部によって受け付けられた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵の鍵情報と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する判定部と、
前記判定部によって前記次に用いる鍵の識別情報が記憶されていないと判定された場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得する取得部と、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、前記取得部によって取得された前記他の鍵の識別情報を格納する格納部と、
前記取得部によって取得された前記他の鍵の鍵情報と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵の鍵情報を用いて暗号化する暗号化部と、
前記暗号化部によって暗号化された前記他の鍵の鍵情報と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する送信制御部と、
を有するコンピュータを含むことを特徴とする通信装置。
【請求項８】
コンピュータが、
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵の鍵情報と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵の鍵情報と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵の鍵情報と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵の鍵情報を用いて暗号化し、
暗号化した前記他の鍵の鍵情報と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プログラム、記録媒体、通信装置、および通信方法に関する。
【背景技術】
【０００２】
従来、サーバおよびクライアント間で、共通鍵暗号方式を用いて通信を行う技術がある。たとえば、クライアントサーバシステムにおいて、世代の異なる複数の所定の共通鍵を格納するための鍵格納手段をクライアントとサーバが有し、複数の所定の共通鍵のうちの１つの共通鍵を用いて通信を行う技術がある。【０００３】
また、関連する技術として、たとえば、車両内の車載器とサーバの通信において、車載機の情報の書換え資格の認証に携帯機を用いるものがある。また、電話回線網やＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＩＰ）通信網を利用する情報通信装置から車載器に通信状態を移行させる、または車載器から情報通信装置に通信状態を移行させる技術がある。【０００４】
また、サーバと通信端末間、および通信端末と制御対象となる装置間で共通鍵暗号方式を用いる技術がある。また、サーバと通信端末間で共通鍵を用いて通信し、サーバは、通信端末からの接続要求があり、かつ、通信端末が共通鍵を保有していないことが確認された場合に、共通鍵を送信する技術がある。また、サーバと通信端末間において、データに対する共通鍵が更新された場合、更新後の共通鍵を更新前の共通鍵で暗号化し通信端末に送信する技術が開示されている（たとえば、下記特許文献１〜６を参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１７４４４４号公報
【特許文献２】特開２００８−５９４５０号公報
【特許文献３】特開２００９−２６７５６２号公報
【特許文献４】特開２００１−２４９８９９号公報
【特許文献５】特開２００３−２４４１２３号公報
【特許文献６】特開２００８−６７０７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術において、同じ共通鍵を用いて通信先と通信するほど、その共通鍵が第３者に漏洩する可能性が高まる。このため、共通鍵の変更時に、通信先との通信に繰り返し用いられた共通鍵を用いて次の共通鍵を暗号化して送信すると、次の共通鍵が第３者に漏洩する可能性が高まる。【０００７】
１つの側面では、本発明は、通信の安全性を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
一態様の通信プログラムは、共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データといずれかの鍵の識別情報とを通信先装置から受け付け、受け付けたいずれかの鍵の識別情報から、複数の鍵の各々の鍵ごとに各々の鍵の鍵情報と各々の鍵の識別情報とを記憶する記憶部を参照して、いずれかの鍵の識別情報に対応付けていずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、次に用いる鍵の識別情報が記憶されていない場合、記憶部に記憶されている複数の鍵のうちのいずれかの鍵とは異なる他の鍵の鍵情報と他の鍵の識別情報とを取得し、記憶部に記憶されているいずれかの鍵の識別情報に対応付けて、取得した他の鍵の識別情報を格納し、取得した他の鍵の鍵情報と他の鍵の識別情報とを、記憶部に記憶されているいずれかの鍵の鍵情報を用いて暗号化し、暗号化した他の鍵の鍵情報と、暗号化した他の鍵の識別情報と、いずれかの鍵の識別情報とを通信先装置に送信する。
【発明の効果】
【０００９】
本発明の一態様によれば、通信の安全性を向上させるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施の形態にかかる通信システムの動作例を示す説明図である。
【図２】図２は、通信システムの接続例を示す説明図である。
【図３】図３は、通信システムのハードウェア構成例を示すブロック図である。
【図４】図４は、サーバ基盤データ管理テーブルの記憶内容の一例を示す説明図である。
【図５】図５は、サーバ位置付け管理テーブルの記憶内容の一例を示す説明図である。
【図６】図６は、端末基盤データ管理テーブルの記憶内容の一例を示す説明図である。
【図７】図７は、端末位置付け管理テーブルの記憶内容の一例を示す説明図である。
【図８】図８は、初期登録処理による初期登録情報の記憶内容の一例を示す説明図である。
【図９】図９は、通信システムのメッセージフォーマットの一例を示す説明図である。
【図１０】図１０は、車載器からサーバへのメッセージデータのフォーマットの一例を示す説明図である。
【図１１】図１１は、サーバから車載器へのメッセージデータのフォーマットの一例を示す説明図である。
【図１２】図１２は、サーバの機能例を示すブロック図である。
【図１３】図１３は、ＥＣＵ情報登録時の動作例を示す説明図である。
【図１４】図１４は、鍵の世代番号更新時の動作例を示す説明図である。
【図１５】図１５は、新規世代番号の基盤データをサーバと車載器間で共有する際の動作例を示す説明図である。
【図１６】図１６は、新規世代番号の基盤データの共有完了をサーバに送信する際の動作例を示す説明図である。
【図１７】図１７は、サーバによる初期登録処理手順の一例を示すフローチャートである。
【図１８】図１８は、車載器による初期登録処理手順の一例を示すフローチャートである。
【図１９】図１９は、利用者端末によるメッセージ処理手順の一例を示すフローチャートである。
【図２０】図２０は、サーバからの返信メッセージに対する車載器による処理手順の一例を示すフローチャートである。
【図２１】図２１は、車載器によるＥＣＵ情報登録要求メッセージ生成処理手順の一例を示すフローチャートである。
【図２２】図２２は、車載器によるＥＣＵ情報登録要求メッセージ送信処理手順の一例を示すフローチャートである。
【図２３】図２３は、車載器によるサーバからの返信メッセージに対する改ざん検出処理手順の一例を示すフローチャートである。
【図２４】図２４は、サーバによるメッセージ処理手順の一例を示すフローチャートである。
【図２５】図２５は、サーバによる通常メッセージ処理手順の一例を示すフローチャートである。
【図２６】図２６は、サーバによる新規世代番号設定処理手順の一例を示すフローチャートである。
【図２７】図２７は、サーバによる基盤データ生成処理手順の一例を示すフローチャートである。
【図２８】図２８は、サーバによる変更後世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。
【図２９】図２９は、サーバによる新規世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。
【図３０】図３０は、サーバによる返信メッセージ送信処理手順の一例を示すフローチャートである。
【図３１】図３１は、サーバによるサーバ改ざん検出処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示の通信プログラム、記録媒体、通信装置、および通信方法の実施の形態を詳細に説明する。また、本実施の形態にかかる通信装置の例として、本実施の形態にかかる通信システムに含まれるサーバを用いて説明を行う。
【００１２】
図１は、本実施の形態にかかる通信システムの動作例を示す説明図である。本実施の形態にかかる通信システム１００は、サーバ１０１と、通信先装置となり車両内にある車載器１０２とを含む。サーバ１０１と車載器１０２は、共通鍵暗号方式によりデータをやり取りする。共通鍵暗号方式とは、データを暗号化する処理と暗号化したデータを復号する処理とにおいて同一内容の鍵情報を用いる暗号方式である。本実施の形態にかかる通信システム１００は、Ｅｌｅｃｔｒｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ（ＥＣＵ）情報の送受信に適用した場合の例を用いて説明する。
【００１３】
始めに、サーバ１０１は、現在用いている共通鍵として、鍵情報１１１−１＃Ｓと鍵情報１１１−１を識別する識別情報１１２−１＃Ｓを記憶する。また、車載器１０２は、鍵の鍵情報１１１−１＃Ｃと、鍵情報１１１−１を識別する識別情報１１２−１＃Ｃを記憶する。識別情報１１２−１＃Ｓ、識別情報１１２−１＃Ｃは、鍵情報１１１−１を識別する情報として、たとえば、「１」というデータが格納されている。
【００１４】
以下、「＃Ｓ」と「＃Ｃ」について、「＃Ｓ」が付与された情報はサーバ１０１に記憶されていることを意味し、「＃Ｃ」が付与された情報は車載器１０２に記憶されていることを意味する。また、「＃Ｓ」と「＃Ｃ」の前の符号が同一である場合、同一データであることとする。たとえば、鍵情報１１１−１＃Ｓと鍵情報１１１−１＃Ｃは同一データである。また、図１〜図３１にて、ハッチがかかっているデータは、暗号化されているデータとする。
【００１５】
図１の（Ａ）にて、サーバ１０１は、車載器１０２から、鍵情報１１１−１＃Ｃを用いてＥＣＵ情報１２０を暗号化した暗号化データ１２１と、識別情報１１２−１＃Ｃを受け付ける。受け付けた後、サーバ１０１は、識別情報１１２−１＃Ｃから、識別情報１１２−１の次に用いる鍵の識別情報が記憶されているかを判断する。
【００１６】
図１の（Ｂ）にて、サーバ１０１は、識別情報１１２−１の次に用いる鍵の識別情報が記憶されていないことを判断し、次の鍵として、鍵情報１１１−２＃Ｓと鍵情報１１１−２を識別する識別情報１１２−２＃Ｓを取得する。識別情報１１２−２＃Ｓは、鍵情報１１１−２を識別する情報として、たとえば、「２」というデータが格納されている。
【００１７】
また、具体的な取得方法は、予めサーバ１０１の記憶領域内に生成してあった鍵情報と鍵情報を識別する識別情報を取得してもよいし、次に用いる鍵の識別情報が記憶されていないことを判断した後に、鍵情報を生成してもよい。サーバ１０１は、取得した鍵情報１１１−２＃Ｓと鍵情報１１１−２を識別する識別情報１１２−２＃Ｓをサーバ１０１の記憶領域に格納する。
【００１８】
図１の（Ｃ）にて、サーバ１０１は、鍵情報１１１−２＃Ｓと、識別情報１１２−２＃Ｓとを、鍵情報１１１−１＃Ｓを用いて暗号化し、暗号化したデータ１２２と、識別情報１１２−１＃Ｓとを車載器１０２に送信する。
【００１９】
このように、本実施の形態にかかる通信システム１００は、通信先からの暗号文の受信の度に、いずれかの鍵の次の鍵が無ければ次の鍵を設定して次の鍵をいずれかの鍵で暗号化して送信する。続けて、図２〜図３１を用いて、通信システム１００に関する説明を行う。
【００２０】
図２は、通信システムの接続例を示す説明図である。通信システム１００は、サーバ１０１と、車載器１０２と、利用者端末２０１と、を含む。サーバ１０１と、利用者端末２０１は、ネットワーク２１１で相互に接続されている。また、利用者端末２０１は、ネットワーク２１１と無線通信を行っている。また、利用者端末２０１と車載器１０２は、近距離無線通信を行っている。または、利用者端末２０１と車載器１０２は、有線接続を行ってもよい。また、車載器１０２は、車両Ｂに取り付けられている。車両Ｂは、原動機を搭載する自動車でもよいし、原動機を搭載した二輪車でもよい。また、車載器１０２は、通信システム１００内に複数あってもよい。
【００２１】
サーバ１０１は、ＥＣＵ情報を記憶する装置である。また、サーバ１０１は、利用者端末２０１からのＥＣＵ情報の登録要求に応答する。さらに、サーバ１０１は、利用者端末２０１からのＥＣＵ情報の参照要求に応答して、ＥＣＵ情報を暗号化して利用者端末２０１に送信する。
【００２２】
車載器１０２は、車両Ｂに関するＥＣＵ情報を生成する装置である。具体的に、車載器１０２は、車両Ｂ内の原動機の回転数、燃料消費量等を含むＥＣＵ情報を生成する。また、車載器１０２は、原動機以外の情報として、車両Ｂのワイパーの動作回数等をＥＣＵ情報に含めてもよい。
【００２３】
利用者端末２０１は、利用者Ａによって操作される装置である。具体的に、利用者端末２０１は、利用者の操作により、ＥＣＵ情報の登録要求を発行する。また、利用者端末２０１は、利用者の操作により、ＥＣＵ情報の参照要求を発行する。
【００２４】
（通信システム１００のハードウェア）
図３は、通信システムのハードウェア構成例を示すブロック図である。サーバ１０１は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）３０１と、Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）３０２と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）３０３と、を含む。また、サーバ１０１は、ディスクドライブ３０４と、ディスク３０５と、通信インターフェース３０６と、を含む。また、ＣＰＵ３０１〜通信インターフェース３０６はバス３０７によってそれぞれ接続されている。
【００２５】
ＣＰＵ３０１は、サーバ１０１の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００２６】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子メモリを採用することができる。
【００２７】
通信インターフェース３０６は、ネットワーク２１１と内部のインターフェースを司り、ネットワーク２１１からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワーク２１１となるＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットなどに接続され、ネットワーク２１１を介して他の装置に接続される。通信インターフェース３０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。また、サーバ１０１は、光ディスクドライブ、光ディスク、キーボード、マウスを有していてもよい。
【００２８】
また、車載器１０２は、ＣＰＵ３１１と、ＲＯＭ３１２と、ＲＡＭ３１３と、ディスクドライブ３１４と、ディスク３１５と、通信インターフェース３１６と、を含む。また、ＣＰＵ３１１〜通信インターフェース３１６はバス３１７によってそれぞれ接続されている。
【００２９】
ＣＰＵ３１１は、車載器１０２の全体の制御を司る演算処理装置である。ＲＯＭ３１２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３１３は、ＣＰＵ３１１のワークエリアとして使用される揮発性メモリである。
【００３０】
ディスクドライブ３１４は、ＣＰＵ３１１の制御に従ってディスク３１５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３１４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３１５は、ディスクドライブ３１４の制御で書き込まれたデータを記憶する不揮発性メモリである。
【００３１】
通信インターフェース３１６は、ネットワーク２１１と内部のインターフェースを司り、ネットワーク２１１からのデータの入出力を制御する制御装置である。通信インターフェース３０６には、たとえば、モデムや無線ＬＡＮアダプタなどを採用することができる。次に、図４〜図７にて、サーバ１０１と車載器１０２にて記憶している記憶内容を説明する。
【００３２】
図４は、サーバ基盤データ管理テーブルの記憶内容の一例を示す説明図である。サーバ基盤データ管理テーブル４０１は、車載器１０２に用いる鍵ごとの情報を記憶するテーブルである。具体的に、図４に示すサーバ基盤データ管理テーブル４０１は、レコード４０１−１〜４０１−１１を記憶する。また、サーバ基盤データ管理テーブル４０１は、サーバ１０１が記憶する。
【００３３】
サーバ基盤データ管理テーブル４０１は、端末ＩＤｅｎｔｉｆｉｃａｔｉｏｎ（ＩＤ）、世代番号、基盤データ長、基盤データ、共有フラグ、適用開始時刻、新規世代番号、切替前世代番号という８つのフィールドを含む。端末ＩＤフィールドには、車載器１０２を一意に識別する情報が格納される。世代番号フィールドには、ＥＣＵ情報を暗号化する鍵を一意に識別する情報が格納される。基盤データ長フィールドには、鍵の生成元となる基盤データのデータ長が格納される。基盤データフィールドには、鍵の生成元となる基盤データが格納される。また、鍵の生成元となる基盤データが無い場合、基盤データフィールドには、“（ｎｕｌｌ）”が格納される。基盤データは、どのような値でもよいが、たとえば、乱数から生成されたデータである。
【００３４】
共有フラグフィールドには、基盤データフィールドに格納されている対象の基盤データが車載器１０２と共有しているか否かを示す識別子が格納される。具体的に、共有フラグフィールドには、対象の基盤データがサーバ１０１と車載器１０２とで共有中であることを示す“完了”識別子と、対象の基盤データが車載器１０２と共有していないことを示す“未完”識別子と、のいずれかの識別子が格納される。適用開始時刻フィールドには、対象の基盤データが初めて用いられた時刻が格納される。具体的に、適用開始時刻フィールドには、対象の基盤データに切り替わった後、最初に車載器１０２からメッセージを受信したときの時刻が格納される。なお、対象の基盤データがまだ用いられていない場合、適用開始時刻フィールドには、“（ｎｕｌｌ）”が格納される。
【００３５】
新規世代番号フィールドには、対象の基盤データの次に用いる基盤データの世代番号が格納される。次に用いる基盤データが無い場合、新規世代番号フィールドには、０が格納される。切替前世代番号フィールドには、対象の基盤データの前に用いられていた基盤データの世代番号が格納される。前に用いられていた基盤データが無い場合、切替前世代番号フィールドには、０が格納される。
【００３６】
たとえば、レコード４０１−１は、端末ＩＤが１となる車載器１０２との通信に用いる鍵についての情報を示している。具体的に、レコード４０１−１は、基盤データが“ａｂｃ…”から生成される鍵が、世代番号が１であり、基盤データ長が１２８ビットであり、車載器１０２と共有しており、２０１２年１月１日の１２時００分に用いられ始めたことを示す。
【００３７】
図５は、サーバ位置付け管理テーブルの記憶内容の一例を示す説明図である。サーバ位置付け管理テーブル５０１は、車載器１０２ごとに、複数の鍵のうちの、車載器１０２が現在用いている鍵についての情報を示す。また、サーバ位置付け管理テーブル５０１は、サーバ１０１が記憶する。
【００３８】
サーバ位置付け管理テーブル５０１は、端末ＩＤ、暗号方式、世代番号最大値、初期共有済世代数、１世代有効期間、現使用世代番号という６つのフィールドを含む。端末ＩＤフィールドには、車載器１０２を一意に識別する情報が格納される。暗号方式フィールドには、暗号方式の名称が格納される。たとえば、暗号方式フィールドには、Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＤＥＳ）を暗号化、復号、暗号化という順に三度繰り返すトリプルＤＥＳを示す“トリプルＤＥＳ”や、Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）を示す“ＡＥＳ”が格納される。
【００３９】
世代番号最大値フィールドには、鍵情報を記憶する最大数が格納される。初期共有済世代数フィールドには、初期登録処理にて共有される鍵の個数が格納される。１世代有効期間フィールドには、１つの鍵を利用開始してから終了するまでの時間が格納される。現使用世代番号フィールドには、車載器１０２が現在用いている鍵の世代番号が格納される。
【００４０】
たとえば、レコード５０１−１は、端末ＩＤが１となる車載器１０２との通信に用いる鍵についての情報を示している。具体的に、レコード５０１−１は、暗合方式がＡＥＳであり、鍵を最大１０個記憶し、初期登録処理にて鍵を３個記憶し、１つの鍵の有効期間が１時間であり、現在用いている鍵の世代番号が１であることを示している。
【００４１】
図６は、端末基盤データ管理テーブルの記憶内容の一例を示す説明図である。端末基盤データ管理テーブル６０１は、車載器１０２に用いる鍵ごとの情報を記憶するテーブルである。具体的に、図６に示す端末基盤データ管理テーブル６０１は、レコード６０１−１〜６０１−１０を記憶する。また、端末基盤データ管理テーブル６０１は、車載器１０２が記憶する。
【００４２】
端末基盤データ管理テーブル６０１は、世代番号、基盤データ長、基盤データ、新規世代番号という４つのフィールドを含む。世代番号〜新規世代番号の４つのフィールドについては、サーバ基盤データ管理テーブル４０１の同名のフィールドと同一の定義となるため、説明を省略する。
【００４３】
図７は、端末位置付け管理テーブルの記憶内容の一例を示す説明図である。端末位置付け管理テーブル７０１は、複数の鍵のうちの、車載器１０２が現在用いている鍵についての情報を示す。具体的に、端末位置付け管理テーブル７０１は、レコード７０１−１を記憶する。また、端末位置付け管理テーブル７０１は、車載器１０２が記憶する。
【００４４】
端末位置付け管理テーブル７０１は、端末ＩＤ、暗号方式、世代番号最大値、現使用世代番号という４つのフィールドを含む。端末ＩＤ〜現使用世代番号の４つのフィールドについては、サーバ位置付け管理テーブル５０１の同名のフィールドと同一の定義となるため、説明を省略する。
【００４５】
図８は、初期登録処理による初期登録情報の記憶内容の一例を示す説明図である。図８では、初期登録処理の終了時に出力する初期登録情報８０１の記憶内容の一例を示す。具体的に、図８に示す初期登録情報８０１は、レコード８０１−１〜８０１−３を記憶する。
【００４６】
初期登録情報８０１は、端末ＩＤ、暗号方式、世代番号、基盤データ長、基盤データという５つのフィールドを含む。端末ＩＤ〜基盤データの５つのフィールドについては、サーバ基盤データ管理テーブル４０１、サーバ位置付け管理テーブル５０１の同名のフィールドと同一の定義となるため、説明を省略する。
【００４７】
図９は、通信システムのメッセージフォーマットの一例を示す説明図である。本実施の形態にかかる通信システム１００では、車載器への指示メッセージ９０１と、車載器からのＥＣＵ情報登録要求メッセージ９０２という２つのフォーマットを用いてサーバ１０１と車載器１０２のメッセージをやり取りする。
【００４８】
車載器への指示メッセージ９０１は、先頭のフィールドとして、メッセージタイプフィールドを有する。車載器への指示メッセージ９０１は、メッセージタイプの値に応じて後続のフィールドが異なる。メッセージタイプが“ＥＣＵ情報登録要求メッセージ”を示す１である場合、車載器への指示メッセージ９０１は、２つ目のフィールドとして、現在時刻フィールドを有する。現在時刻フィールドは、利用者端末２０１がメッセージを中継したときの時刻が格納される。
【００４９】
メッセージタイプが“返信メッセージ受信指示”を示す２である場合、車載器への指示メッセージ９０１は、２つ目のフィールドとして、サーバから車載器へのメッセージデータ９１２を格納するフィールドを有する。メッセージデータ９１２については、図１１にて後述する。
【００５０】
たとえば、車載器への指示メッセージ９０１−１は、メッセージタイプが１であり、利用者端末２０１が車載器への指示メッセージ９０１−１を中継した際の時刻が２０１２年１月１日の１３時０１分であることを示す。また、車載器への指示メッセージ９０１−２は、メッセージタイプが２であり、メッセージデータ９１２を有することを示す。
【００５１】
ＥＣＵ情報登録要求メッセージ９０２は、先頭のフィールドとして、復帰コードフィールドを有する。また、ＥＣＵ情報登録要求メッセージ９０２は、２番目のフィールドとして、車載器からサーバへのメッセージデータ９１１を格納するフィールドを有する。復帰コードフィールドには、ＥＣＵ情報登録要求が正常に行われた場合、０が格納される。なんらかのエラーが検出されてＥＣＵ情報登録要求を生成できなかった場合、フィールドにはエラーコードが格納される。復帰コードフィールドの値が０でない場合、メッセージデータ９１１を格納するフィールドは無効である。メッセージデータ９１１については、図１０にて後述する。
【００５２】
たとえば、ＥＣＵ情報登録要求メッセージ９０２−１は、復帰コードが０であり、メッセージデータ９１１を有することを示す。また、ＥＣＵ情報登録要求メッセージ９０２−２は、復帰コードが１であることを示す。
【００５３】
図１０は、車載器からサーバへのメッセージデータのフォーマットの一例を示す説明図である。メッセージデータ９１１は、メッセージ送信時刻＿平文、端末ＩＤ＿平文、現使用世代番号＿平文、メッセージ送信時刻、端末ＩＤ、現使用世代番号、共有済世代番号、ＥＣＵ情報という８つのフィールドを含む。車載器１０２は、メッセージ送信時刻フィールド〜ＥＣＵ情報フィールドを、現使用世代番号＿平文が指定する基盤データから生成された鍵を用いて暗号化する。車載器１０２は、メッセージ送信時刻〜ＥＣＵ情報の各フィールドごとに暗号化してもよいし、メッセージ送信時刻フィールド〜ＥＣＵ情報フィールドの各値を１つのデータとして暗号化してもよい。
【００５４】
メッセージ送信時刻＿平文フィールドには、対象のメッセージの送信時刻が格納される。端末ＩＤ＿平文フィールドには、対象のメッセージの送信元となる車載器１０２の端末ＩＤが格納される。現使用世代番号＿平文フィールドには、現在用いている鍵の世代番号が格納される。メッセージ送信時刻フィールドには、メッセージ送信時刻＿平文フィールドの値と同一の値が格納される。端末ＩＤフィールドには、端末ＩＤ＿平文フィールドの値と同一の値が格納される。現使用世代番号フィールドには、現使用世代番号＿平文フィールドの値と同一の値が格納される。
【００５５】
共有済世代番号フィールドには、サーバ１０１と新たに共有した鍵の世代番号が格納される。具体的に、共有済世代番号フィールドには、対象のメッセージを送信する前に、利用者端末２０１から受信したサーバからの車載器からのメッセージデータ９１２の新規世代番号フィールドの値が格納される。メッセージデータ９１２を受信していない場合、また、メッセージデータ９１２の新規世代番号フィールドの値が０であれば、共有済世代番号フィールドには、０が格納される。ＥＣＵ情報フィールドには、ＥＣＵ情報が格納される。
【００５６】
たとえば、メッセージデータ１００１−１は、送信時刻が２０１２年１月１日１３時０１分であり、端末ＩＤが１となる車載器１０２により生成されており、世代番号が１に対応する鍵によって、暗号化されたデータである。また、メッセージデータ１００１−１の暗号化前の情報１００１−１’は、サーバ１０１と新たに共有した鍵が無く、ＥＣＵ情報が“ｘｘｘ”であることを示す。
【００５７】
図１１は、サーバから車載器へのメッセージデータのフォーマットの一例を示す説明図である。メッセージデータ９１２は、メッセージ送信時刻＿平文、現使用世代番号＿平文、メッセージ送信時刻、現使用世代番号、変更後世代番号、新規世代番号、新規世代番号基盤データ長、新規世代番号基盤データ、復帰コードという９つのフィールドを含む。サーバ１０１は、メッセージ送信時刻フィールド〜復帰コードフィールドを、現使用世代番号＿平文が指定する基盤データから生成された鍵を用いて暗号化する。サーバは、メッセージ送信時刻〜復帰コードの各フィールドごとに暗号化してもよいし、メッセージ送信時刻フィールド〜復帰コードフィールドの各値を１つのデータとして暗号化してもよい。
【００５８】
メッセージ送信時刻＿平文フィールドには、対象のメッセージの送信時刻が格納される。現使用世代番号＿平文フィールドには、対象のメッセージの送信先となる車載器１０２の端末ＩＤが格納される。メッセージ送信時刻フィールドには、対象のメッセージの送信時刻フィールドの値と同一の値が格納される。現使用世代番号フィールドには、現在用いている鍵の世代番号が格納される。変更後世代番号フィールドには、対象のメッセージの現使用世代番号の有効期間が終了している場合に、現在用いている鍵の世代番号が格納される。対象のメッセージの現使用世代番号の有効期間が終了していない場合、変更後世代番号フィールドには、０が格納される。
【００５９】
新規世代番号フィールドには、車載器１０２と新たに共有する鍵の世代番号が格納される。新たに共有する鍵が無い場合、新規世代番号フィールドには、０が格納される。具体的に、新たに共有する鍵がある状態になる場合とは、対象のメッセージの前のメッセージにて、変更後世代番号フィールドに０以外の値が入っており、車載器１０２から、変更後世代番号フィールドの値で暗号化されたメッセージを受信した場合である。
【００６０】
また、変更後世代番号フィールドと新規世代番号フィールドに、共に０以外の値が入ることは無い。以下、変更後世代番号フィールドに０以外の値が設定されたメッセージを、「変更後世代番号設定メッセージ」と呼称する。また、新規世代番号フィールドに０以外の値が設定されたメッセージを、「新規世代番号設定メッセージ」と呼称する。
【００６１】
新規世代番号基盤データ長フィールドには、新たに共有する鍵の基盤データのデータ長が格納される。新規世代番号基盤データフィールドには、新たに共有する鍵の基盤データが格納される。復帰コードフィールドには、ＥＣＵ情報登録要求に処理結果を示すコードが格納される。
【００６２】
たとえば、メッセージデータ１１０１−１は、送信時刻が２０１２年１月１日１３時０２分であり、端末ＩＤが１となる車載器１０２に対して送信し、世代番号が１に対応する鍵によって、暗号化されたデータである。また、メッセージデータ１１０１−１の暗号化前の情報１１０１−１’は、変更後世代番号フィールドと新規世代番号フィールドが共に０であることを示す。
【００６３】
（サーバ１０１の機能）
次に、サーバ１０１の機能について説明する。図１２は、サーバの機能例を示すブロック図である。サーバ１０１は、受付部１２０１と、判定部１２０２と、特定部１２０３と、削除部１２０４と、取得部１２０５と、判断部１２０６と、格納部１２０７と、暗号化部１２０８と、送信制御部１２０９と、通信部１２１０を含む。制御部となる受付部１２０１〜送信制御部１２０９は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、受付部１２０１〜送信制御部１２０９の機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。または、通信インターフェース３０６を経由して他のＣＰＵが実行することにより、受付部１２０１〜送信制御部１２０９の機能を実現してもよい。
【００６４】
また、通信部１２１０は、通信インターフェース３０６でもよいし、通信インターフェース３０６の動作を制御するデバイスドライバを含んでもよい。デバイスドライバは、記憶装置に記憶されており、ＣＰＵ３０１が実行することにより、通信インターフェース３０６の動作を制御する。
【００６５】
また、サーバ１０１は、サーバ基盤データ管理テーブル４０１にアクセス可能である。サーバ基盤データ管理テーブル４０１は、複数の鍵の各々の鍵ごとに各々の鍵の鍵情報と各々の鍵の識別情報とを記憶する。サーバ基盤データ管理テーブル４０１は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納されている。
【００６６】
受付部１２０１は、共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵の鍵情報を用いて暗号化された暗号化データといずれかの鍵の識別情報とを通信先装置から受け付ける。鍵の鍵情報とは、共通鍵そのものであってもよいし、共通鍵の生成元のデータでもよい。本実施の形態では、鍵情報は、共通鍵の生成元である基盤データとなる。また、受付部１２０１は、暗号化データといずれかの鍵の識別情報とを、通信部１２１０から受け付けてもよい。または、受付部１２０１は、通信部１２１０が暗号化データといずれかの鍵の識別情報を書き込んだバッファを定期的に参照してもよい。なお、受け付けたデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００６７】
判定部１２０２は、サーバ基盤データ管理テーブル４０１を参照して、いずれかの鍵の識別情報に対応付けていずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する。たとえば、判定部１２０２は、世代番号が１となる鍵に対応付けて、世代番号が１となる鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する。また、次に用いる鍵の識別情報は、サーバ基盤データ管理テーブル４０１の新規世代番号フィールドに格納されている。判定部１２０２は、新規世代番号フィールドの値が０であるときに次に用いる鍵の識別情報が記憶されていないと判定し、０以外であるときに次に用いる鍵の識別情報が記憶されていると判定する。判定結果は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００６８】
特定部１２０３は、判定部１２０２によって次に用いる鍵の識別情報が記憶されていないと判定された場合、サーバ基盤データ管理テーブル４０１の記憶内容に基づいて、いずれかの鍵の前に通信先装置が用いた前の鍵を特定する。具体的には、特定部１２０３は、サーバ基盤データ管理テーブル４０１の世代番号フィールドと、新規世代番号フィールドを用いて特定する。
【００６９】
たとえば、サーバ基盤データ管理テーブル４０１が、世代番号フィールドの値が１、新規世代番号フィールドの値が２である第１のレコードと、世代番号フィールドの値が２、新規世代番号フィールドの値が０である第２のレコードと、を記憶しているとする。また、判定部１２０２が、新規世代番号フィールドの値が０であるため、世代番号２に対応する鍵の次に用いる鍵の識別情報が記憶されていないと判定したとする。このとき、特定部１２０３は、世代番号２が新規世代番号フィールドの値に設定されている第１のレコードを検出する。特定部１２０３は、世代番号１に対応する鍵を、前の鍵として特定する。また、特定部１２０３は、前述の処理を繰り返し、２つ前の鍵を特定してもよいし、さらに遡って前の鍵を特定してもよい。なお、特定した鍵の識別情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７０】
削除部１２０４は、サーバ基盤データ管理テーブル４０１に記憶されている複数の鍵のうちの、特定部１２０３が特定した前の鍵の鍵情報と前の鍵の識別情報とを削除する。たとえば、削除部１２０４は、特定した世代番号１に対応する鍵の鍵情報と、鍵の識別情報を削除する。
【００７１】
取得部１２０５は、判定部１２０２によって次に用いる鍵の識別情報が記憶されていないと判定された場合、サーバ基盤データ管理テーブル４０１に記憶されている複数の鍵のうちのいずれかの鍵とは異なる他の鍵の鍵情報と他の鍵の識別情報とを取得する。たとえば、取得部１２０５は、判定部１２０２が世代番号２に対応する鍵の識別情報が記憶されていないと判定した場合、複数の鍵のうちの世代番号２に対応する鍵とは異なる世代番号３に対応する鍵の鍵情報と世代番号３に対応する鍵の識別情報を取得する。なお、取得した鍵の識別情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７２】
また、取得部１２０５は、サーバ基盤データ管理テーブル４０１に記憶されている複数の鍵のうちのいずれかの鍵および特定部１２０３が特定した鍵とは異なる他の鍵の鍵情報と他の鍵の識別情報とを取得してもよい。たとえば、判定部１２０２が世代番号２に対応する鍵の識別情報が記憶されていないと判定し、特定部１２０３が、前の鍵として、世代番号１に対応する鍵を特定したとする。このとき、取得部１２０５は、複数の鍵のうちの、世代番号２に対応する鍵および世代番号１に対応する鍵とは異なる世代番号３に対応する鍵の鍵情報と世代番号３に対応する鍵の識別情報を取得する。なお、取得したデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７３】
判断部１２０６は、次に用いる鍵の識別情報が記憶されていると判断した場合、いずれかの鍵が最初に用いられてからの経過時間またはいずれかの鍵が用いられた回数に基づいて、いずれかの鍵が有効か否かを判断する。たとえば、判断部１２０６は、いずれかの鍵が最初に用いられてから１時間以上経過していた場合、いずれかの鍵を有効でないとして判断する。または、判断部１２０６は、いずれかの鍵が１００回以上暗号化に用いられた場合、いずれかの鍵を有効でないとして判断する。
【００７４】
また、判断部１２０６は、いずれかの鍵がサーバ１０１で最初に用いられた経過時間に基づいて判断してもよいし、いずれかの鍵が車載器１０２で最初に用いられた経過時間に基づいて判断してもよい。回数についても同様で、判断部１２０６は、いずれかの鍵がサーバ１０１で用いられた回数に基づいて判断してもよいし、いずれかの鍵が車載器１０２で用いられた回数に基づいて判断してもよい。また、判断部１２０６は、いずれかの鍵がサーバ１０１と車載器１０２で用いられた回数に基づいて判断してもよい。なお、取得したデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７５】
格納部１２０７は、サーバ基盤データ管理テーブル４０１に記憶されているいずれかの鍵の識別情報に対応付けて、取得部１２０５によって取得された他の鍵の識別情報を格納する。たとえば、格納部１２０７は、世代番号１に対応する鍵の識別情報に対応付けて、取得部１２０５によって取得された世代番号２に対応する鍵の識別情報を格納する。
【００７６】
暗号化部１２０８は、取得部１２０５によって取得された他の鍵の鍵情報と他の鍵の識別情報とを、サーバ基盤データ管理テーブル４０１に記憶されているいずれかの鍵の鍵情報を用いて暗号化する。たとえば、暗号化部１２０８は、次に用いる世代番号２に対応する鍵の鍵情報と、世代番号２に対応する鍵の識別情報とを、世代番号１に対応する鍵の鍵情報を用いて暗号化する。
【００７７】
また、暗号化部１２０８は、判断部１２０６によっていずれかの鍵が有効でないと判断された場合、次に用いる鍵の識別情報を、サーバ基盤データ管理テーブル４０１に記憶されているいずれかの鍵の鍵情報を用いて暗号化してもよい。たとえば、暗号化部１２０８は、次に用いる世代番号２に対応する鍵の識別情報を、世代番号１に対応する鍵の鍵情報を用いて暗号化する。暗号化したデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７８】
送信制御部１２０９は、通信部１２１０を制御して、暗号化部１２０８によって暗号化された次に用いる鍵の識別情報と、いずれかの鍵の識別情報とを通信先装置に送信する。たとえば、送信制御部１２０９は、暗号化した次に用いる世代番号２に対応する鍵の鍵情報と、暗号化した世代番号２に対応する鍵の識別情報と、世代番号１に対応する鍵の識別情報を、車載器１０２に送信する。
【００７９】
また、送信制御部１２０９は、通信部１２１０を制御して、暗号化部１２０８によって暗号化した次に用いる鍵の識別情報と、いずれかの鍵の識別情報とを通信先装置に送信してもよい。たとえば、送信制御部１２０９は、世代番号１に対応する鍵の鍵情報を用いて暗号化した世代番号２に対応する鍵の識別情報を、車載器１０２に送信する。
【００８０】
通信部１２１０は、車載器１０２と通信する。また、通信部１２１０は、利用者端末２０１を経由して車載器１０２と通信してもよい。また、サーバ１０１は、通信部１２１０と通信制御部１２０９を含む送信部を有してもよい。次に、図１３〜図１６を用いて、ＥＣＵ情報登録時の処理を、サーバ基盤データ管理テーブル４０１、サーバ位置付け管理テーブル５０１、端末基盤データ管理テーブル６０１、端末位置付け管理テーブル７０１の記憶内容を用いて説明する。また、ＥＣＵ情報登録要求は、利用者端末２０１上で実行するアプリケーションソフトウェアによって発行される。以下、アプリケーションソフトウェアを、「アプリ」と称する。
【００８１】
図１３は、ＥＣＵ情報登録時の動作例を示す説明図である。サーバ１０１と車載器１０２の現使用世代番号は１である。この状態にて、（１）番目の処理として、利用者端末２０１は、メッセージタイプで“ＥＣＵ情報登録要求メッセージ”を設定した車載器への指示ＥＣＵ情報登録要求メッセージを車載器１０２に送信する。車載器への指示メッセージを受信した車載器１０２は、（２）番目の処理として、ＥＣＵ情報を含むＥＣＵ情報登録要求メッセージ１３０１を生成し、世代番号１で指定される基盤データから生成される鍵を用いてＥＣＵ情報登録要求メッセージ１３０１を暗号化する。続けて、車載器１０２は、利用者端末２０１を経由して、サーバ１０１に暗号化したＥＣＵ情報登録要求メッセージ１３０１をサーバ１０１に送信する。ＥＣＵ情報登録要求メッセージ１３０１は、ＥＣＵ情報登録要求メッセージ９０２のフォーマットに従っている。
【００８２】
図１４は、鍵の世代番号更新時の動作例を示す説明図である。図１４で示す通信システム１００の状態は、図１３で示した（２）番目の処理終了後の状態である。サーバ１０１は、（１）番目の処理として、受信したＥＣＵ情報登録要求メッセージ１３０１の世代番号１で指定される鍵の有効期間が終了しているか否かを判断する。鍵の有効期間が終了していない場合、サーバ１０１は、ＥＣＵ情報登録要求メッセージ１３０１を復号し、ＥＣＵ情報を登録して、車載器１０２にＥＣＵ情報が正常に登録できた旨を伝える返信メッセージを送信する。
【００８３】
有効期間が終了している場合、サーバ１０１は、（２）番目の処理として、現使用世代番号以外に共有フラグフィールドの値が完了となっているレコードのうちのいずれかのレコードを選択し、現使用世代番号フィールドを新たな現使用世代番号に更新する。図１４の例では、サーバ１０１は、世代番号フィールドの値が１以外であり、共有フラグフィールド値が完了となっているレコード４０１−２、４０１−３のうち、レコード４０１−２を選択し、現使用世代番号フィールドを２に更新する。
【００８４】
次に、サーバ１０１は、（３）番目の処理として、選択したレコードの切替前世代番号フィールドを、今まで設定していた世代番号に設定する。図１４の例では、サーバ１０１は、レコード４０１−２の切替前世代番号フィールドを、０から１に更新する。続けて、サーバ１０１は、（４）番目の処理として、変更後世代番号が２となる変更後世代番号設定メッセージ１４０１を、世代番号１で指定される鍵情報にて暗号化し、利用者端末２０１を経由して、車載器１０２に送信する。変更後世代番号設定メッセージ１４０１は、車載器への指示メッセージ９０１のフォーマットに従っている。
【００８５】
変更後世代番号設定メッセージ１４０１を受信した車載器１０２は、（５）番目の処理として、現使用世代番号フィールドを、変更後世代番号設定メッセージ１４０１の現使用世代番号に更新する。図１４の例では、車載器１０２は、現使用世代番号フィールドを、１から２に更新する。
【００８６】
図１５は、新規世代番号の基盤データをサーバと車載器間で共有する際の動作例を示す説明図である。図１５で示す通信システム１００の状態は、図１４にて示した（５）番目の処理終了後の状態である。サーバ１０１は、車載器１０２が生成した、世代番号２で指定される鍵情報にて暗号化されたＥＣＵ情報登録要求メッセージ１５０１を受信する。ＥＣＵ情報登録要求メッセージ１５０１は、ＥＣＵ情報登録要求メッセージ９０２のフォーマットに従っている。
【００８７】
次に、サーバ１０１は、（１）番目の処理として、ＥＣＵ情報登録要求メッセージ１５０１の暗号化に用いられた鍵情報が初めて暗号化に用いられたか否かを判断する。初めて暗号化に用いられたか否かを判断するため、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、ＥＣＵ情報登録要求メッセージ１５０１内の現使用世代番号＿平文フィールドの値と同一のレコードを検索する。続けて、サーバ１０１は、検索により発見したレコードの新規世代番号フィールドが０か否かを判断する。０である場合、該当の世代番号で指定される鍵情報が、初めて暗号化に用いられたことを意味する。
【００８８】
図１５の例では、サーバ１０１は、世代番号フィールドに２が設定されているレコード４０１−２の新規世代番号フィールドの値が０であるため、世代番号２で指定される鍵情報が初めて暗号化に用いられたと判断する。初めて暗号化に用いられた鍵情報がある場合、サーバ１０１は、（２）番目の処理として、新しい基盤データを生成し、共有フラグフィールドが未完となっているレコードの基盤データフィールドに、新しい基盤データを設定する。図１５の例では、サーバ１０１は、新たな基盤データ“ｊｋｌ…”を生成し、レコード４０１−４の基盤データフィールドに新たな基盤データ“ｊｋｌ…”を設定する。
【００８９】
続けて、サーバ１０１は、（３）番目の処理として、サーバ基盤データ管理テーブル４０１内の、現使用世代番号が示すレコードの新規世代番号フィールドに、新たな基盤データを設定したレコードの世代番号を設定する。図１５の例では、サーバ１０１は、レコード４０１−２の新規世代番号フィールドに４を設定する。
【００９０】
次に、サーバ１０１は、（４）番目の処理として、サーバ基盤データ管理テーブル４０１内の、現使用世代番号が示すレコードの切替前世代番号の値と同一の値が世代番号フィールドに設定されているレコードを検索する。続けて、サーバ１０１は、検索して発見したレコードの基盤データを削除する。また、サーバ１０１は、発見したレコードの共有フラグを未完に設定する。図１５の例では、サーバ１０１は、レコード４０１−１の基盤データ“ａｂｃ…”を削除し、レコード４０１−１の共有フラグフィールドを未完に設定する。
【００９１】
続けて、サーバ１０１は、（５）番目の処理として、新規世代番号が４となる新規世代番号設定メッセージ１５０２を、世代番号２で指定される鍵情報にて暗号化し、利用者端末２０１を経由して、車載器１０２に送信する。また、新規世代番号設定メッセージ１５０２の新規世代番号基盤データフィールドには、新たな基盤データ“ｊｋｌ…”が格納される。また、新規世代番号設定メッセージ１５０２は、ＥＣＵ情報登録要求メッセージ９０１のフォーマットに従っている。
【００９２】
新規世代番号設定メッセージ１５０２を受信した車載器１０２は、（６）番目の処理として、端末基盤データ管理テーブル６０１内の、新規世代番号設定メッセージ１５０２の新規世代番号フィールドの値と同一の値が世代番号フィールドにあるレコードを検索する。続けて、車載器１０２は、検索して発見したレコードの基盤データフィールドに、新規世代番号設定メッセージ１５０２の新規世代番号基盤データフィールドに格納された値を格納する。図１５の例では、車載器１０２は、レコード６０１−４の基盤データフィールドに、“ｊｋｌ…”を格納する。
【００９３】
次に、車載器１０２は、（７）番目の処理として、端末基盤データ管理テーブル６０１内の、現使用世代番号が示すレコードの新規世代番号フィールドに、新規世代番号設定メッセージ１５０２の新規世代番号フィールドの値を設定する。図１５の例では、車載器１０２は、レコード６０１−２の新規世代番号フィールドを０から４に更新する。
【００９４】
図１６は、新規世代番号の基盤データの共有完了をサーバに送信する際の動作例を示す説明図である。図１６で示す通信システム１００の状態は、図１５にて示した（７）番目の処理終了後の状態である。
【００９５】
（１）番目の処理として、車載器１０２は、共有済世代番号フィールドに４が格納されており、世代番号２で指定される鍵情報にて暗号化されたＥＣＵ情報登録要求メッセージ１６０１を送信する。ＥＣＵ情報登録要求メッセージ１６０１は、ＥＣＵ情報登録要求メッセージ９０２のフォーマットに従っている。
【００９６】
ＥＣＵ情報登録要求メッセージ１６０１を受信したサーバ１０１は、（２）番目の処理として、サーバ基盤データ管理テーブル４０１内の、ＥＣＵ情報登録要求メッセージ１６０１の共有済世代番号フィールドの値と同一の値が世代番号フィールドに設定されているレコードを検索する。続けて、サーバ１０１は、検索して発見したレコードの共有フラグを完了に設定する。図１６の例では、サーバ１０１は、レコード４０１−４の共有フラグフィールドを完了に設定する。次に、図１３〜図１６に示した動作を行うフローチャートを図１７〜図３１にて説明する。
【００９７】
図１７は、サーバによる初期登録処理手順の一例を示すフローチャートである。サーバによる初期登録処理は、鍵情報をサーバ１０１に登録する処理である。また、サーバによる初期登録処理は、通信システム１００の運用開始時に、利用者端末２０１の開発者の操作によって、実行開始する。さらに、サーバによる初期登録処理は、利用者端末２０１の開発者の操作の入力により、端末ＩＤ、暗号方式、初期共有済世代数、世代番号最大値、１世代有効期間の各値を受け付けている。
【００９８】
サーバ１０１は、サーバ位置付け管理テーブル５０１内の、入力された端末ＩＤの値と同一の値が端末ＩＤフィールドに設定されたレコードを削除する（ステップＳ１７０１）。次に、サーバ１０１は、サーバ位置付け管理テーブル５０１に、入力パラメータに従ったレコードを追加する（ステップＳ１７０２）。また、サーバ１０１は、追加したレコードの現使用世代番号に１を設定する。続けて、サーバ１０１は、世代番号のカウンタとして用いる変数ｉに１を設定する（ステップＳ１７０３）。
【００９９】
次に、サーバ１０１は、変数ｉが入力パラメータの世代番号最大値より大きいか否かを判断する（ステップＳ１７０４）。変数ｉが入力パラメータの世代番号最大値以下の場合（ステップＳ１７０４：Ｎｏ）、サーバ１０１は、サーバ基盤データ管理テーブル内の、世代番号フィールドの値が変数ｉとなるレコードを初期化する（ステップＳ１７０５）。ここで、初期化として、サーバ１０１は、レコードの各フィールドを以下のように設定する。
【０１００】
サーバ１０１は、対象レコードの端末ＩＤフィールドに、入力パラメータの端末ＩＤを設定する。また、サーバ１０１は、対象レコードの世代番号フィールドに、変数ｉを設定する。また、サーバ１０１は、対象レコードの基盤データフィールドに、乱数から生成した値を設定する。また、サーバ１０１は、対象レコードの基盤データ長フィールドに、基盤データフィールドに設定した値のデータ長を設定する。また、サーバ１０１は、対象レコードの共有フラグフィールドに、未完を設定する。また、サーバ１０１は、対象レコードの適用開始時刻に（ｎｕｌｌ）を設定する。また、サーバ１０１は、対象レコードの新規世代番号フィールドと切替前世代番号フィールドに、０を設定する。
【０１０１】
初期化終了後、サーバ１０１は、変数ｉが入力パラメータの初期共有済世代数より大きいか否かを判断する（ステップＳ１７０６）。変数ｉが入力パラメータの初期共有済世代数以下である場合（ステップＳ１７０６：Ｎｏ）、サーバ１０１は、設定したレコードの、端末ＩＤ、暗号方式、世代番号、基盤データ長、基盤データ、の各フィールドの値を初期登録情報８０１として出力する（ステップＳ１７０７）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号フィールドの値がｉとなるレコードの、共有フラグを完了に設定する（ステップＳ１７０８）。ステップＳ１７０６の処理終了後、または、変数ｉが入力パラメータの初期共有済世代数より大きい場合（ステップＳ１７０６：Ｙｅｓ）、サーバ１０１は、変数ｉをインクリメントする（ステップＳ１７０９）。ステップＳ１７０９の処理終了後、サーバ１０１は、ステップＳ１７０４の処理に移行する。
【０１０２】
変数ｉが入力パラメータの世代番号最大値より大きい場合（ステップＳ１７０４：Ｙｅｓ）、サーバ１０１は、サーバによる初期登録処理を終了する。サーバによる初期登録処理を実行することにより、通信システム１００は、運用開始時に使用する鍵情報をサーバ１０１に設定することができる。
【０１０３】
図１８は、車載器による初期登録処理手順の一例を示すフローチャートである。車載器による初期登録処理は、サーバによる初期登録処理で出力された初期登録情報８０１を読み込んで、鍵情報を車載器１０２に登録する処理である。また、車載器による初期登録処理は、通信システム１００の運用開始時に、利用者端末２０１の開発者の操作によって、実行開始する。また、車載器による初期登録処理は、利用者端末２０１の開発者の操作の入力により、端末ＩＤ、世代番号最大値、初期登録情報８０１を受け付けている。
【０１０４】
車載器１０２は、端末位置付け管理テーブル７０１内のレコードを削除する（ステップＳ１８０１）。次に、車載器１０２は、端末位置付け管理テーブル７０１に、入力パラメータに従ったレコードを追加する（ステップＳ１８０２）。続けて、車載器１０２は、初期登録情報８０１を読み込む（ステップＳ１８０３）。次に、車載器１０２は、読み込んだ初期登録情報８０１の先頭のレコードを選択する（ステップＳ１８０４）。
【０１０５】
続けて、車載器１０２は、端末基盤データ管理テーブル６０１内の、選択したレコードの世代番号の値と同一の値となるレコードの、端末ＩＤ、基盤データ長、基盤データ、の各フィールドに、選択したレコードの各フィールドの値を設定する（ステップＳ１８０５）。また、車載器１０２は、新規世代番号フィールドに０を設定する。次に、車載器１０２は、初期登録情報８０１の全てのレコードを選択したか否かを判断する（ステップＳ１８０６）。まだ選択していないレコードがある場合（ステップＳ１８０６：Ｎｏ）、車載器１０２は、初期登録情報８０１の次のレコードを選択する（ステップＳ１８０７）。ステップＳ１８０７の終了後、車載器１０２は、ステップＳ１８０５の処理に移行する。
【０１０６】
全てのレコードを選択した場合（ステップＳ１８０６：Ｙｅｓ）、車載器１０２は、車載器による初期登録処理を終了する。車載器による初期登録処理を実行することにより、通信システム１００は、運用開始時に使用する鍵情報を車載器１０２に設定することができる。
【０１０７】
図１９は、利用者端末によるメッセージ処理手順の一例を示すフローチャートである。利用者端末によるメッセージ処理は、サーバ１０１および車載器１０２から通知される返信メッセージの処理を行う。
【０１０８】
利用者端末２０１は、利用者端末２０１上のアプリによるＥＣＵ情報登録要求に応じて、メッセージタイプで“ＥＣＵ情報登録要求メッセージ”を指定して車載器への指示メッセージ９０１を作成する（ステップＳ１９０１）。次に、利用者端末２０１は、車載器への指示メッセージ９０１を車載器１０２に送信する（ステップＳ１９０２）。続けて、利用者端末２０１は、車載器１０２から返信メッセージを受信する（ステップＳ１９０３）。
【０１０９】
次に、利用者端末２０１は、返信メッセージがエラーメッセージか否かを判断する（ステップＳ１９０４）。返信メッセージがエラーメッセージでない場合（ステップＳ１９０４：Ｎｏ）、利用者端末２０１は、返信メッセージ（ＥＣＵ情報登録要求メッセージ）をサーバ１０１に送信する（ステップＳ１９０５）。続けて、利用者端末２０１は、サーバ１０１から返信メッセージを受信する（ステップＳ１９０６）。次に、利用者端末２０１は、サーバ１０１からの返信メッセージを車載器１０２に送信する（ステップＳ１９０７）。続けて、利用者端末２０１は、車載器１０２から返信メッセージを受信する（ステップＳ１９０８）。
【０１１０】
次に、利用者端末２０１は、返信メッセージがエラーメッセージか否かを判断する（ステップＳ１９０９）。返信メッセージがエラーメッセージでない場合（ステップＳ１９０９：Ｎｏ）、利用者端末２０１は、返信メッセージが世代変更を行ったことを示すメッセージか否かを判断する（ステップＳ１９１０）。
【０１１１】
返信メッセージが世代変更を行ったことを示すメッセージでない場合（ステップＳ１９１０：Ｎｏ）、利用者端末２０１は、正常終了をアプリに通知する（ステップＳ１９１１）。世代変更を行ったことを示すメッセージである場合（ステップＳ１９１０：Ｙｅｓ）、利用者端末２０１は、ＥＣＵ情報登録の再実行を勧める旨のコードを、アプリに通知する（ステップＳ１９１２）。返信メッセージがエラーメッセージである場合（ステップＳ１９０４：Ｙｅｓ、ステップＳ１９０９：Ｙｅｓ）、利用者端末２０１は、エラー終了を、アプリに通知する（ステップＳ１９１３）。ステップＳ１９１１、ステップＳ１９１２、ステップＳ１９１３、の終了後、利用者端末２０１は、利用者端末によるメッセージ処理を終了する。利用者端末によるメッセージ処理を実行することにより、通信システム１００は、ＥＣＵ情報登録を行うことができる。
【０１１２】
図２０は、サーバからの返信メッセージに対する車載器による処理手順の一例を示すフローチャートである。車載器による返信メッセージ処理は、利用者端末２０１から受信したサーバからの返信メッセージに対する処理である。車載器１０２は、端末位置付け管理テーブル７０１の中の現使用世代番号と世代番号最大値を読み込む（ステップＳ２００１）。次に、車載器１０２は、利用者端末２０１からサーバからの返信メッセージを受信する（ステップＳ２００２）。ステップＳ２００２のサーバからの返信メッセージは、車載器への指示メッセージ９０１のフォーマットに従っている。続けて、車載器１０２は、受信した車載器への指示メッセージのメッセージタイプを確認する（ステップＳ２００３）。
【０１１３】
車載器への指示メッセージのメッセージタイプがＥＣＵ情報登録要求メッセージである場合（ステップＳ２００３：ＥＣＵ情報登録要求メッセージ）、車載器１０２は、ＥＣＵ情報登録要求応答処理を実行する（ステップＳ２００４）。ＥＣＵ情報登録要求応答処理の詳細は、図２１にて後述する。ＥＣＵ情報登録要求応答処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。
【０１１４】
車載器への指示メッセージのメッセージタイプが返信メッセージ受信指示である場合（ステップＳ２００３：返信メッセージ受信指示）、車載器１０２は、端末改ざん検出処理を実行する（ステップＳ２００５）。端末改ざん検出処理は、図２３にて後述する。次に、車載器１０２は、サーバからの返信メッセージが改ざんされていなく、かつ、エラーメッセージでないか否かを判断する（ステップＳ２００６）。サーバからの返信メッセージが改ざんされている場合、またはエラーメッセージである場合（ステップＳ２００６：Ｎｏ）、車載器１０２は、利用者端末２０１にエラーメッセージを送信する（ステップＳ２００７）。ステップＳ２００７の処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。
【０１１５】
サーバからの返信メッセージが改ざんされていなく、かつ、エラーメッセージでない場合（ステップＳ２００６：Ｙｅｓ）、車載器１０２は、サーバからの返信メッセージが変更後世代番号設定メッセージか否かを判断する（ステップＳ２００８）。サーバからの返信メッセージが変更後世代番号設定メッセージである場合（ステップＳ２００８：Ｙｅｓ）、車載器１０２は、端末位置付け管理テーブル７０１の現使用世代番号フィールドに、サーバからの返信メッセージの変更後世代番号フィールドの値を設定する（ステップＳ２００９）。次に、車載器１０２は、利用者端末２０１に世代変更を行ったことを示すメッセージを送信する（ステップＳ２０１０）。ステップＳ２０１０の処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。
【０１１６】
サーバからの返信メッセージが変更後世代番号設定メッセージでない場合（ステップＳ２００８：Ｎｏ）、車載器１０２は、サーバからの返信メッセージが新規世代番号設定メッセージか否かを判断する（ステップＳ２０１１）。サーバからの返信メッセージが新規世代番号設定メッセージである場合（ステップＳ２０１１：Ｙｅｓ）、車載器１０２は、端末基盤データ管理テーブル６０１内の、世代番号フィールドの値が、サーバからの返信メッセージの新規世代番号の値と一致するレコードを検索する（ステップＳ２０１２）。次に、車載器１０２は、検索したレコードの基盤データ長フィールドに、サーバからの返信メッセージの新規世代番号基盤データ長の値を設定する（ステップＳ２０１３）。続けて、車載器１０２は、検索したレコードの基盤データフィールドに、サーバからの返信メッセージの新規世代番号基盤データの値を設定する（ステップＳ２０１４）。
【０１１７】
ステップＳ２０１４の処理終了後、または、サーバからの返信メッセージが新規世代番号設定メッセージでない場合（ステップＳ２０１１：Ｎｏ）、車載器１０２は、利用者端末２０１に正常終了メッセージを受信したことを示すメッセージを送信する（ステップＳ２０１５）。ステップＳ２０１５の処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。このように、サーバからの返信メッセージに対する車載器による処理を実行することにより、通信システム１００は、安全性が向上した鍵情報を用いてＥＣＵ情報をサーバ１０１に送信することができる。
【０１１８】
図２１は、車載器によるＥＣＵ情報登録要求メッセージ生成処理手順の一例を示すフローチャートである。ＥＣＵ情報登録要求応答処理は、ＥＣＵ情報登録要求の応答を行う処理である。車載器１０２は、ＥＣＵ情報を基に、ＥＣＵ情報登録要求メッセージを作成する（ステップＳ２１０１）。次に、車載器１０２は、端末基盤データ管理テーブル６０１内の、世代番号フィールドの値が現使用世代番号と同一となるレコードを選択する（ステップＳ２１０２）。続けて、車載器１０２は、選択したレコードの新規世代番号フィールドが０か否かを判断する（ステップＳ２１０３）。新規世代番号フィールドが０でない場合（ステップＳ２１０３：Ｎｏ）、車載器１０２は、作成したＥＣＵ情報登録要求メッセージの共有済世代番号フィールドに、選択したレコードの新規世代番号フィールドの値を設定する（ステップＳ２１０４）。
【０１１９】
ステップＳ２１０４の終了後、または、新規世代番号フィールドが０である場合（ステップＳ２１０３：Ｙｅｓ）、車載器１０２は、ＥＣＵ情報登録要求メッセージ送信処理を実行する（ステップＳ２１０５）。ＥＣＵ情報登録要求メッセージ送信処理の詳細は、図２２にて後述する。ステップＳ２１０５の処理実行後、車載器１０２は、車載器によるＥＣＵ情報登録要求メッセージ生成処理を終了する。車載器によるＥＣＵ情報登録要求メッセージ生成処理を実行することにより、通信システム１００は、ＥＣＵ情報登録要求に対する応答を行うことができる。
【０１２０】
図２２は、車載器によるＥＣＵ情報登録要求メッセージ送信処理手順の一例を示すフローチャートである。車載器によるＥＣＵ情報登録要求メッセージ送信処理は、ＥＣＵ情報登録要求メッセージを作成して、サーバ１０１に送信する処理である。車載器１０２は、ＥＣＵ情報登録要求メッセージのメッセージ送信時刻フィールドに、現在時刻を設定する（ステップＳ２２０１）。なお、車載器１０２に現在時刻を取得する方法が無い場合、図２０のステップＳ２００２の処理にて受信したサーバからの返信メッセージの現在時刻フィールドの値を、現在時刻フィールドに設定してもよい。次に、車載器１０２は、ＥＣＵ情報登録要求メッセージの端末ＩＤフィールドに、端末位置付け管理テーブル７０１の端末ＩＤフィールドの値を設定する（ステップＳ２２０２）。
【０１２１】
続けて、車載器１０２は、ＥＣＵ情報登録要求メッセージの現使用世代番号フィールドに、端末位置付け管理テーブル７０１の現使用世代番号フィールドの値を設定する（ステップＳ２２０３）。次に、車載器１０２は、端末基盤データ管理テーブル６０１内の、端末位置付け管理テーブル７０１の現使用世代番号フィールドと同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ２２０４）。続けて、車載器１０２は、選択したレコードの基盤データフィールドの値から、共通鍵を生成する（ステップＳ２２０５）。
【０１２２】
次に、車載器１０２は、生成した共通鍵を用いて、ＥＣＵ情報登録要求メッセージを暗号化する（ステップＳ２２０６）。続けて、車載器１０２は、暗号化したＥＣＵ情報登録要求メッセージを利用者端末２０１に送信する（ステップＳ２２０７）。ステップＳ２２０７の実行終了後、車載器１０２は、車載器によるＥＣＵ情報登録要求メッセージ送信処理を終了する。車載器によるＥＣＵ情報登録要求メッセージ送信処理を実行することにより、通信システム１００は、ＥＣＵ情報登録要求メッセージを生成して、サーバ１０１に送信することができる。
【０１２３】
図２３は、車載器によるサーバからの返信メッセージに対する改ざん検出処理手順の一例を示すフローチャートである。車載器による端末改ざん検出処理は、サーバからの返信メッセージの改ざんを検出する処理である。車載器１０２は、端末基盤データ管理テーブル６０１内の、サーバからの返信メッセージの現使用世代番号フィールドと同一の値が世代番号フィールドに設定されているレコードを検索する（ステップＳ２３０１）。次に、車載器１０２は、検索したレコードの基盤データフィールドの値を用いて、共通鍵を生成する（ステップＳ２３０２）。続けて、車載器１０２は、生成した共通鍵を用いて、受信したサーバからの返信メッセージ内の、暗号化領域を復号する（ステップＳ２３０３）。
【０１２４】
次に、車載器１０２は、受信したサーバからの返信メッセージのメッセージ送信時刻フィールド＿平文と、復号したメッセージ送信時刻フィールドの値が同一か否かを判断する（ステップＳ２３０４）。同一である場合（ステップＳ２３０４：Ｙｅｓ）、車載器１０２は、受信したサーバからの返信メッセージの現使用世代番号フィールド＿平文と、復号した現使用世代番号フィールドの値が同一か否かを判断する（ステップＳ２３０５）。
【０１２５】
同一である場合（ステップＳ２３０５：Ｙｅｓ）、車載器１０２は、サーバからの返信メッセージが改ざんされていないことを出力する（ステップＳ２３０６）。同一でない場合（ステップＳ２３０４：Ｎｏ、ステップＳ２３０５：Ｎｏ）、車載器１０２は、サーバからの返信メッセージが改ざんされていることを出力する（ステップＳ２３０７）。ステップＳ２３０６、またはステップＳ２３０７の実行終了後、車載器１０２は、車載器による端末改ざん検出処理を終了する。車載器によるサーバからの返信メッセージに対する改ざん検出処理を実行することにより、通信システム１００は、サーバからの返信メッセージが改ざんされたか否かを判断することができる。
【０１２６】
図２４は、サーバによるメッセージ処理手順の一例を示すフローチャートである。サーバによるメッセージ処理は、利用者端末２０１から受信したＥＣＵ情報登録要求メッセージに対する処理である。サーバ１０１は、サーバ位置付け管理テーブル５０１から初期共有済世代数、世代番号最大値、１世代有効期間、暗号方式を読み込む（ステップＳ２４０１）。次に、サーバ１０１は、利用者端末２０１からＥＣＵ情報登録要求メッセージを受け付ける（ステップＳ２４０２）。
【０１２７】
続けて、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤに対する処理の排他区間を開始する（ステップＳ２４０３）。次に、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、受信したＥＣＵ情報登録要求メッセージの端末ＩＤ＿平文フィールドと、受信したＥＣＵ情報登録要求メッセージの現使用世代番号＿平文フィールドと同一の値を有する第１のレコードを検索する（ステップＳ２４０４）。続けて、サーバ１０１は、サーバ位置付け管理テーブル５０１内の、受信したＥＣＵ情報登録要求メッセージの端末ＩＤ＿平文と同一の値を有する第２のレコードを検索する（ステップＳ２４０５）。
【０１２８】
次に、サーバ１０１は、第１および第２のレコードが存在するか否かを判断する（ステップＳ２４０６）。第１および第２のレコードが存在する場合（ステップＳ２４０６：Ｙｅｓ）、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの現使用世代番号＿平文フィールドの値が、第２のレコードの現使用世代番号フィールドの値と同一か否かを判断する（ステップＳ２４０７）。異なる場合（ステップＳ２４０７：Ｎｏ）、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤフィールドの値と現使用世代番号＿平文フィールドの値を指定して、サーバ改ざん検出処理を実行する（ステップＳ２４０８）。サーバ改ざん検出処理の詳細は、図３１にて後述する。
【０１２９】
ステップＳ２４０８の実行終了後、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージが改ざんされていると検出されたか否かを判断する（ステップＳ２４０９）。改ざんされていない場合（ステップＳ２４０９：Ｎｏ）、サーバ１０１は、変更後世代番号設定メッセージ送信処理を実行する（ステップＳ２４１０）。
【０１３０】
同一である場合（ステップＳ２４０７：Ｙｅｓ）、サーバ１０１は、第２のレコードの端末ＩＤフィールドの値と現使用世代番号フィールドの値を指定して、サーバ改ざん検出処理を実行する（ステップＳ２４１１）。次に、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージが改ざんされていると検出されたか否かを判断する（ステップＳ２４１２）。改ざんされていない場合（ステップＳ２４１２：Ｎｏ）、サーバ１０１は、通常メッセージ処理を実行する（ステップＳ２４１３）。
【０１３１】
第１または第２のレコードが存在しない場合（ステップＳ２４０６：Ｎｏ）、または改ざんされていると検出した場合（ステップＳ２４０９：Ｙｅｓ、ステップＳ２４１２：Ｙｅｓ）、サーバ１０１は、エラーを示すメッセージを利用者端末２０１に送信する（ステップＳ２４１４）。
【０１３２】
ステップＳ２４１０、ステップＳ２４１３、またはステップＳ２４１４のいずれかの処理を実行終了後、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤに対する処理の排他区間を終了する（ステップＳ２４１５）。ステップＳ２４１５の実行終了後、サーバ１０１は、ステップＳ２４０２の処理に移行する。サーバによるメッセージ処理を実行することにより、通信システム１００は、共通鍵を用いて車載器１０２と通信できる。
【０１３３】
図２５は、サーバによる通常メッセージ処理手順の一例を示すフローチャートである。サーバによる通常メッセージ処理は、ＥＣＵ情報登録要求メッセージが改ざんされていなく、かつ、サーバ１０１の現使用世代番号で指定される鍵情報で暗号化されたＥＣＵ情報登録要求メッセージに対する処理である。
【０１３４】
なお、図２５〜図３１において、サーバ基盤データ管理テーブル４０１内のレコードを検索する処理については、受信したＥＣＵ情報登録要求メッセージと端末ＩＤフィールドの値が同一であるかという条件が付与されるため、記述を省略する。
【０１３５】
サーバ１０１は、利用者端末２０１からの要求に応じた処理を実行し、返信データを作成する（ステップＳ２５０１）。返信データとは、利用者端末２０１からの要求に応じた処理の戻り値となるデータである。たとえば、ＥＣＵ情報登録要求を利用者端末２０１から受け付けていた場合、返信データは、たとえば、登録成功、登録失敗といった値となる。
【０１３６】
次に、サーバ１０１は、第１のレコードの新規世代番号フィールドが０か否かを判断する（ステップＳ２５０２）。０である場合（ステップＳ２５０２：Ｙｅｓ）、サーバ１０１は、新規世代番号設定処理を実行する（ステップＳ２５０３）。新規世代番号設定処理は、図２６にて後述する。ステップＳ２５０３の処理終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。
【０１３７】
０でない場合（ステップＳ２５０２：Ｎｏ）、サーバ１０１は、現在時刻が、第１のレコードの適用開始時刻＋１世代有効期間より大きいか否かを判断する（ステップＳ２５０４）。大きい場合（ステップＳ２５０４：Ｙｅｓ）、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号フィールドの値が第２のレコードの現使用世代番号以外であり、かつ、共有フラグフィールドの値が完了となる第３のレコードを検索する（ステップＳ２５０５）。
【０１３８】
次に、サーバ１０１は、第３のレコードの切替前世代番号フィールドに、第２のレコードの現使用世代番号フィールドの値を設定する（ステップＳ２５０６）。続けて、サーバ１０１は、第２のレコードの現使用世代番号フィールドに、第３のレコードの世代番号フィールドの値を設定する（ステップＳ２５０７）。次に、サーバ１０１は、変更後世代番号設定メッセージ送信処理を実行する（ステップＳ２５０８）。変更後世代番号設定メッセージ送信処理の詳細は、図２８にて後述する。ステップＳ２５０８の処理終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。
【０１３９】
以下となる場合（ステップＳ２５０４：Ｎｏ）、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの共有済世代番号フィールドの値が０以外であり、受信したＥＣＵ情報登録要求メッセージの共有済世代番号フィールドの値と第１のレコードの新規世代番号の値が一致するか否かを判断する（ステップＳ２５０９）。一致する場合（ステップＳ２５０９：Ｙｅｓ）、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号フィールドの値がＥＣＵ情報登録要求メッセージの共有済世代番号フィールドの値と同一となるレコードの共有フラグフィールドの値を、完了に設定する（ステップＳ２５１０）。なお、ステップＳ２５０９：Ｙｅｓとなる場合、ＥＣＵ情報登録要求メッセージの新規世代番号フィールドの値が示す世代番号で指定される基盤データが、サーバ１０１と車載器１０２で共有できたことを示す。
【０１４０】
次に、サーバ１０１は、返信メッセージ送信処理を実行する（ステップＳ２５１１）。返信メッセージ送信処理の詳細は、図３０にて後述する。ステップＳ２５１１の処理終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。
【０１４１】
一致しない場合（ステップＳ２５０９：Ｎｏ）、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、第１のレコードの新規世代番号フィールドの値と同一の値が世代番号フィールドに設定された第４のレコードを検索する（ステップＳ２５１２）。なお、ステップＳ２５０９：Ｎｏとなる状態とは、ＥＣＵ情報登録要求メッセージの共有済世代番号が設定されていない状態である。このような状態となるケースとしては、たとえば、サーバ１０１から送信した新規世代番号の基盤データが車載器１０２にまだ届いていないときである。したがって、サーバ１０１は、新規世代番号の基盤データを再送する。
【０１４２】
次に、サーバ１０１は、第４のレコードを用いて、新規世代番号設定メッセージ送信処理を実行する（ステップＳ２５１３）。新規世代番号設定メッセージ送信処理の詳細は、図２９にて後述する。ステップＳ２５１３の実行終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。サーバによる通常メッセージ処理を実行することにより、通信システム１００は、返信メッセージが改ざんされていなく、かつ、サーバ１０１の現使用世代番号で指定される鍵情報で暗号化された返信メッセージに対する処理を行える。
【０１４３】
図２６は、サーバによる新規世代番号設定処理手順の一例を示すフローチャートである。サーバによる新規世代番号生成処理は、サーバ基盤データ管理テーブル４０１に、新たな基盤データを設定する処理である。
【０１４４】
サーバ１０１は、第１のレコードの適用開始時刻フィールドに、現在時刻を設定する（ステップＳ２６０１）。次に、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、第１のレコードの切替前世代番号フィールドの値と同一の値が世代番号フィールドに設定された第５のレコードを特定する（ステップＳ２６０２）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、第５のレコードの新規世代番号フィールドの値と同一の値が世代番号フィールドに設定された第６のレコードを特定する（ステップＳ２６０３）。
【０１４５】
次に、サーバ１０１は、第６のレコードの共有フラグフィールドが未完か否かを判断する（ステップＳ２６０４）。未完である場合（ステップＳ２６０４：Ｙｅｓ）、サーバ１０１は、第６のレコードを処理対象として基盤データ生成処理を実行する（ステップＳ２６０５）。基盤データ生成処理の詳細は、図２７にて後述する。ステップＳ２６０５の実行終了後、または、完了である場合（ステップＳ２６０４：Ｎｏ）、サーバ１０１は、第５のレコードの共有フラグフィールドを未完に設定する（ステップＳ２６０６）。
【０１４６】
次に、サーバ１０１は、第５のレコードを処理対象として基盤データ生成処理を実行する（ステップＳ２６０７）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、共有フラグフィールドが未完に設定された第７のレコードを検索する（ステップＳ２６０８）。次に、サーバ１０１は、第７のレコードの世代番号フィールドの値を、第１のレコードの新規世代番号フィールドに設定する（ステップＳ２６０９）。続けて、サーバ１０１は、第７のレコードを用いて、新規世代番号設定メッセージ送信処理を実行する（ステップＳ２６１０）。ステップＳ２６１０の実行終了後、サーバ１０１は、サーバによる新規世代番号設定処理を終了する。サーバによる新規世代番号設定処理を実行することにより、通信システム１００は、有効期間が終了し、用いられなくなった基盤データを消去して、新たな基盤データを用意することになるため、限られたメモリ領域の範囲で、新たな基盤データを次々用意できる。
【０１４７】
図２７は、サーバによる基盤データ生成処理手順の一例を示すフローチャートである。サーバによる基盤データ生成処理は、基盤データを生成する処理である。サーバ１０１は、対象レコードの適用開始時刻、新規世代番号、切替前世代番号の各フィールドの値を消去する（ステップＳ２７０１）。次に、サーバ１０１は、新たな乱数から生成した基盤データを取得する（ステップＳ２７０２）。続けて、サーバ１０１は、対象レコードの基盤データフィールドに、取得した基盤データを格納する（ステップＳ２７０３）。続けて、サーバ１０１は、対象レコードの基盤データ長フィールドに、取得した基盤データのデータサイズを設定する（ステップＳ２７０４）。ステップＳ２７０４の実行終了後、サーバ１０１は、サーバによる基盤データ生成処理を終了する。サーバによる基盤データ生成処理を実行することにより、通信システム１００は、新たな基盤データを用意することができる。
【０１４８】
図２８は、サーバによる変更後世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。サーバによる変更後世代番号設定メッセージ送信処理は、変更後世代番号設定メッセージを生成し、車載器１０２に送信する処理である。サーバ１０１は、返信メッセージのメッセージ送信時刻フィールドに、現在時刻を設定する（ステップＳ２８０１）。次に、サーバ１０１は、返信メッセージの現使用世代番号フィールドに、受信したメッセージの現使用世代番号＿平文フィールドの値を設定する（ステップＳ２８０２）。なお、サーバ１０１は、返信メッセージ内の、メッセージ送信時刻＿平文フィールドと、現使用世代番号＿平文フィールドとについて、メッセージ送信時刻フィールドと現使用世代番号フィールドとの値を設定する。
【０１４９】
続けて、サーバ１０１は、返信メッセージの変更後世代番号フィールドに、第２のレコードの現使用世代番号フィールドの値を設定する（ステップＳ２８０３）。次に、サーバ１０１は、返信メッセージの新規世代番号フィールドに、０を設定する（ステップＳ２８０４）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、受信したメッセージの現使用世代番号＿平文フィールドの値と同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ２８０５）。次に、サーバ１０１は、選択したレコードの基盤データフィールドの値から、共通鍵を生成する（ステップＳ２８０６）。
【０１５０】
続けて、サーバ１０１は、生成した共通鍵を用いて、返信メッセージを暗号化する（ステップＳ２８０７）。次に、サーバ１０１は、暗号化した返信メッセージを利用者端末２０１に送信する（ステップＳ２８０８）。ステップＳ２８０８の実行終了後、通信システム１００は、変更後世代番号設定メッセージを車載器１０２に送信することができる。
【０１５１】
図２９は、サーバによる新規世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。サーバによる新規世代番号設定メッセージ送信処理は、新規世代番号設定メッセージを生成し、車載器１０２に送信する処理である。また、図２９のステップＳ２９０１、ステップＳ２９０２、ステップＳ２９０８〜ステップＳ２９１０は、ステップＳ２８０１、ステップＳ２８０２、ステップＳ２８０６〜ステップＳ２８０８と同一の処理であるため、説明を省略する。
【０１５２】
ステップＳ２９０２の実行終了後、サーバ１０１は、返信メッセージの変更後世代番号フィールドに、０を設定する（ステップＳ２９０３）。次に、サーバ１０１は、返信メッセージの新規世代番号フィールドに、対象レコードの世代番号の値を設定する（ステップＳ２９０４）。続けて、サーバ１０１は、返信メッセージの新規世代番号基盤データ長フィールドに、対象レコードの基盤データ長の値を設定する（ステップＳ２９０５）。次に、サーバ１０１は、返信メッセージの新規世代番号基盤データフィールドに、対象レコードの基盤データの値を設定する（ステップＳ２９０６）。
【０１５３】
続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、サーバ位置付け管理テーブル５０１の現使用世代番号フィールドの値と同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ２９０７）。ステップＳ２９０７の実行終了後、サーバ１０１は、ステップＳ２９０８の処理を実行する。サーバによる新規世代番号設定メッセージ送信処理を実行することにより、通信システム１００は、新規世代番号設定メッセージを車載器１０２に送信することができる。
【０１５４】
図３０は、サーバによる返信メッセージ送信処理手順の一例を示すフローチャートである。サーバによる返信メッセージ送信処理は、返信メッセージを生成し、車載器１０２に送信する処理である。また、図３０のステップＳ３００１、ステップＳ３００２、ステップＳ３００５〜ステップＳ３００７は、ステップＳ２８０１、ステップＳ２８０２、ステップＳ２８０６〜ステップＳ２８０８と同一の処理であるため、説明を省略する。
【０１５５】
ステップＳ３００２の実行終了後、サーバ１０１は、返信メッセージの変更後世代番号と、新規世代番号フィールドに、０を設定する（ステップＳ３００３）。次に、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、受信したメッセージの現使用世代番号＿平文フィールドの値と同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ３００４）。ステップＳ３００４の終了後、サーバ１０１は、ステップＳ３００５の処理を実行する。サーバによる返信メッセージ送信処理を実行することにより、通信システム１００は、返信メッセージを車載器１０２に送信することができる。
【０１５６】
図３１は、サーバによるサーバ改ざん検出処理手順の一例を示すフローチャートである。サーバによるサーバ改ざん検出処理は、ＥＣＵ情報登録要求メッセージの改ざんを検出する処理である。また、図３１のステップＳ３１０２〜ステップＳ３１０５、ステップＳ３１０７、ステップＳ３１０８は、ステップＳ２３０２〜ステップＳ２３０７と比較すると、実行主体が車載器１０２からサーバ１０１になり、処理内容は同一であるため、説明を省略する。
【０１５７】
サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号と同一の値が世代番号フィールドに設定されているレコードを検索する（ステップＳ３１０１）。ステップＳ３１０１の実行終了後、サーバ１０１は、ステップＳ３１０２の処理を実行する。
【０１５８】
ステップＳ３１０５：Ｙｅｓとなった場合、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤフィールド＿平文と、復号した端末ＩＤフィールドの値が同一か否かを判断する（ステップＳ３１０６）。同一である場合（ステップＳ３１０６：Ｙｅｓ）、サーバ１０１は、ステップＳ３１０７の処理を実行する。同一でない場合（ステップＳ３１０６：Ｎｏ）、サーバ１０１は、ステップＳ３１０８の処理を実行する。サーバによる端末改ざん検出処理を実行することにより、通信システム１００は、ＥＣＵ情報登録要求メッセージが改ざんされたか否かを判断することができる。
【０１５９】
以上説明したように、サーバ１０１によれば、通信先からの暗号文の受信の度に、いずれかの鍵の次の鍵が無ければ次の鍵を設定して次の鍵をいずれかの鍵で暗号化して送信する。これにより、通信システム１００は、１度のみ暗号化に使われたいずれかの鍵で次の鍵を暗号化するため、安全性を向上できる。たとえば、いずれかの鍵が有効でなくなった場合に、いずれかの鍵を用いて暗号化して次の鍵の鍵情報を送信すると、既にいずれかの鍵が第３者に導出されている場合、次の鍵も第３者が取得することができてしまうことになる。本実施の形態にかかる通信方法では、初めて暗号化に用いられた鍵にて、次の鍵を暗号化して送信するため、第３者によって導出されている可能性を小さくすることができるため、安全性を向上できる。
【０１６０】
また、サーバ１０１によれば、いずれかの鍵が有効でない場合に、次に用いる鍵の識別情報を、いずれかの鍵の鍵情報を用いて暗号化して車載器１０２に送信してもよい。これにより、次に用いる鍵の鍵情報は事前に車載器１０２に送信してあるため、サーバ１０１が次に用いる鍵に切り替える際、次に用いる鍵の鍵情報を送信しなくともよくなり、通信システム１００は、通信の安全性を向上できる。
【０１６１】
また、サーバ１０１によれば、次に用いる鍵の識別情報が記憶されていない場合、前に用いられた前の鍵を特定し、サーバ基盤データ管理テーブル４０１が記憶している複数の鍵のうちの、前の鍵とは異なる鍵を、次の鍵として取得してもよい。これにより、サーバ１０１が過去に用いられた鍵をもう一度暗号化に用いることがなくなり、通信システム１００は、通信の安全性を向上できる。
【０１６２】
また、サーバ１０１によれば、次に用いる鍵の識別情報が記憶されていない場合、前に用いられた前の鍵の鍵情報と前の鍵の識別情報をサーバ基盤データ管理テーブル４０１から削除してもよい。これにより、サーバ１０１は、鍵を記憶する記憶領域を削減できる。また、サーバ１０１は、鍵を検索する場合、検索対象となるレコード数が減少するため、検索にかかる処理時間を短縮することができる。
【０１６３】
また、サーバ１０１は、共通鍵が初めて暗号化に用いられたか否かを、次に用いる鍵の識別情報が記憶されているか否かで判断しているため、共通鍵が何回用いられたか計数しなくてもよい。また、サーバ１０１は、共通鍵が用いられた回数を計数し、特定の回数になったら次に用いる鍵を取得してもよい。また、サーバ１０１は、特定の回数を、鍵ごとに変えてもよい。
【０１６４】
また、共通鍵暗号方式以外の暗号方式として、公開鍵暗号方式もある。しかし、公開鍵暗号方式は、暗号処理のオーバーヘッドが大きいため、車載器１０２のような処理能力が低い装置では、暗号処理に時間がかかってしまう。本実施の形態にかかる通信方法は、共通鍵暗号方式であるため、車載器１０２のような処理能力が低い装置でも、短い処理時間で暗号処理を実行できる。
【０１６５】
また、本実施の形態にかかる通信システム１００は、共通鍵そのものは送信せず、共通鍵の生成元となる基盤データをやり取りする。したがって、第３者が基盤データを導出したとしても、第３者が基盤データから共通鍵を生成する方法が特定できなければ、通信システム１００は、通信の安全性を維持できる。
【０１６６】
また、本実施の形態にかかる通信システム１００は、自動車のＥＣＵ情報のやり取り以外にも、家電機器の情報や、医療器具の情報、または消費者に利用されている機器の動作上の情報をやり取りする際に適用することができる。また、本実施の形態にかかる通信システム１００は、利用者端末２０１を介さないシステムであってもよい。
【０１６７】
なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１６８】
１００  通信システム
１０１  サーバ
１０２  車載器
４０１  サーバ基盤データ管理テーブル
１２０１  受付部
１２０２  判定部
１２０３  特定部
１２０４  削除部
１２０５  取得部
１２０６  判断部
１２０７  格納部
１２０８  暗号化部
１２０９  送信制御部
１２１０  通信部
【図１】
2014002280.tif 000003
【図２】
2014002280.tif 000004
【図３】
2014002280.tif 000005
【図４】
2014002280.tif 000006
【図５】
2014002280.tif 000007
【図６】
2014002280.tif 000008
【図７】
2014002280.tif 000009
【図８】
2014002280.tif 000010
【図９】
2014002280.tif 000011
【図１０】
2014002280.tif 000012
【図１１】
2014002280.tif 000013
【図１２】
2014002280.tif 000014
【図１３】
2014002280.tif 000015
【図１４】
2014002280.tif 000016
【図１５】
2014002280.tif 000017
【図１６】
2014002280.tif 000018
【図１７】
2014002280.tif 000019
【図１８】
2014002280.tif 000020
【図１９】
2014002280.tif 000021
【図２０】
2014002280.tif 000022
【図２１】
2014002280.tif 000023
【図２２】
2014002280.tif 000024
【図２３】
2014002280.tif 000025
【図２４】
2014002280.tif 000026
【図２５】
2014002280.tif 000027
【図２６】
2014002280.tif 000028
【図２７】
2014002280.tif 000029
【図２８】
2014002280.tif 000030
【図２９】
2014002280.tif 000031
【図３０】
2014002280.tif 000032
【図３１】
2014002280.tif 000033
【手続補正書】
【提出日】平成27年1月27日(2015.1.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行させることを特徴とする通信プログラム。
【請求項２】
前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されている場合、前記いずれかの鍵が最初に用いられてからの経過時間または前記いずれかの鍵が用いられた回数に基づいて、前記いずれかの鍵が有効か否かを判断し、
前記いずれかの鍵が有効でない場合、前記次に用いる鍵の識別情報を、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記次に用いる鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行させることを特徴とする請求項１に記載の通信プログラム。
【請求項３】
前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部の記憶内容に基づいて、前記いずれかの鍵の前に前記通信先装置が用いた前の鍵を特定する処理を実行させ、
前記取得する処理は、
前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵および前記特定した鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得することを特徴とする請求項１または２に記載の通信プログラム。
【請求項４】
前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部の記憶内容に基づいて、前記いずれかの鍵の前に前記通信先装置が用いた前の鍵を特定し、
前記記憶部に記憶されている前記複数の鍵のうちの、特定した前記前の鍵と前記前の鍵の識別情報とを削除する処理を実行させ、
前記取得する処理は、
削除した削除後の前記記憶部に記憶されている鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得することを特徴とする請求項１〜３のいずれか一つに記載の通信プログラム。
【請求項５】
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付ける受付部と、
前記受付部によって受け付けられた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する判定部と、
前記判定部によって前記次に用いる鍵の識別情報が記憶されていないと判定された場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得する取得部と、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、前記取得部によって取得された前記他の鍵の識別情報を格納する格納部と、
前記取得部によって取得された前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化する暗号化部と、
前記暗号化部によって暗号化された前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する送信制御部と、
を有することを特徴とする通信装置。
【請求項６】
コンピュータが、
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行することを特徴とする通信方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プログラム、通信装置、および通信方法に関する。
【背景技術】
【０００２】
従来、サーバおよびクライアント間で、共通鍵暗号方式を用いて通信を行う技術がある。たとえば、クライアントサーバシステムにおいて、世代の異なる複数の所定の共通鍵を格納するための鍵格納手段をクライアントとサーバが有し、複数の所定の共通鍵のうちの１つの共通鍵を用いて通信を行う技術がある。
【０００３】
また、関連する技術として、たとえば、車両内の車載器とサーバの通信において、車載機の情報の書換え資格の認証に携帯機を用いるものがある。また、電話回線網やＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＩＰ）通信網を利用する情報通信装置から車載器に通信状態を移行させる、または車載器から情報通信装置に通信状態を移行させる技術がある。
【０００４】
また、サーバと通信端末間、および通信端末と制御対象となる装置間で共通鍵暗号方式を用いる技術がある。また、サーバと通信端末間で共通鍵を用いて通信し、サーバは、通信端末からの接続要求があり、かつ、通信端末が共通鍵を保有していないことが確認された場合に、共通鍵を送信する技術がある。また、サーバと通信端末間において、データに対する共通鍵が更新された場合、更新後の共通鍵を更新前の共通鍵で暗号化し通信端末に送信する技術が開示されている（たとえば、下記特許文献１〜６を参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１７４４４４号公報
【特許文献２】特開２００８−５９４５０号公報
【特許文献３】特開２００９−２６７５６２号公報
【特許文献４】特開２００１−２４９８９９号公報
【特許文献５】特開２００３−２４４１２３号公報
【特許文献６】特開２００８−６７０７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術において、同じ共通鍵を用いて通信先と通信するほど、その共通鍵が第３者に漏洩する可能性が高まる。このため、共通鍵の変更時に、通信先との通信に繰り返し用いられた共通鍵を用いて次の共通鍵を暗号化して送信すると、次の共通鍵が第３者に漏洩する可能性が高まる。
【０００７】
１つの側面では、本発明は、通信の安全性を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
一態様の通信プログラムは、共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データといずれかの鍵の識別情報とを通信先装置から受け付け、受け付けたいずれかの鍵の識別情報から、複数の鍵の各々の鍵ごとに各々の鍵と各々の鍵の識別情報とを記憶する記憶部を参照して、いずれかの鍵の識別情報に対応付けていずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、次に用いる鍵の識別情報が記憶されていない場合、記憶部に記憶されている複数の鍵のうちのいずれかの鍵とは異なる他の鍵と他の鍵の識別情報とを取得し、記憶部に記憶されているいずれかの鍵の識別情報に対応付けて、取得した他の鍵の識別情報を格納し、取得した他の鍵と他の鍵の識別情報とを、記憶部に記憶されているいずれかの鍵を用いて暗号化し、暗号化した他の鍵と、暗号化した他の鍵の識別情報と、いずれかの鍵の識別情報とを通信先装置に送信する。
【発明の効果】
【０００９】
本発明の一態様によれば、通信の安全性を向上させるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施の形態にかかる通信システムの動作例を示す説明図である。
【図２】図２は、通信システムの接続例を示す説明図である。
【図３】図３は、通信システムのハードウェア構成例を示すブロック図である。
【図４】図４は、サーバ基盤データ管理テーブルの記憶内容の一例を示す説明図である。
【図５】図５は、サーバ位置付け管理テーブルの記憶内容の一例を示す説明図である。
【図６】図６は、端末基盤データ管理テーブルの記憶内容の一例を示す説明図である。
【図７】図７は、端末位置付け管理テーブルの記憶内容の一例を示す説明図である。
【図８】図８は、初期登録処理による初期登録情報の記憶内容の一例を示す説明図である。
【図９】図９は、通信システムのメッセージフォーマットの一例を示す説明図である。
【図１０】図１０は、車載器からサーバへのメッセージデータのフォーマットの一例を示す説明図である。
【図１１】図１１は、サーバから車載器へのメッセージデータのフォーマットの一例を示す説明図である。
【図１２】図１２は、サーバの機能例を示すブロック図である。
【図１３】図１３は、ＥＣＵ情報登録時の動作例を示す説明図である。
【図１４】図１４は、鍵の世代番号更新時の動作例を示す説明図である。
【図１５】図１５は、新規世代番号の基盤データをサーバと車載器間で共有する際の動作例を示す説明図である。
【図１６】図１６は、新規世代番号の基盤データの共有完了をサーバに送信する際の動作例を示す説明図である。
【図１７】図１７は、サーバによる初期登録処理手順の一例を示すフローチャートである。
【図１８】図１８は、車載器による初期登録処理手順の一例を示すフローチャートである。
【図１９】図１９は、利用者端末によるメッセージ処理手順の一例を示すフローチャートである。
【図２０】図２０は、サーバからの返信メッセージに対する車載器による処理手順の一例を示すフローチャートである。
【図２１】図２１は、車載器によるＥＣＵ情報登録要求生成処理手順の一例を示すフローチャートである。
【図２２】図２２は、車載器によるＥＣＵ情報登録要求メッセージ送信処理手順の一例を示すフローチャートである。
【図２３】図２３は、車載器によるサーバからの返信メッセージに対する改ざん検出処理手順の一例を示すフローチャートである。
【図２４】図２４は、サーバによるメッセージ処理手順の一例を示すフローチャートである。
【図２５】図２５は、サーバによる通常メッセージ処理手順の一例を示すフローチャートである。
【図２６】図２６は、サーバによる新規世代番号設定処理手順の一例を示すフローチャートである。
【図２７】図２７は、サーバによる基盤データ生成処理手順の一例を示すフローチャートである。
【図２８】図２８は、サーバによる変更後世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。
【図２９】図２９は、サーバによる新規世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。
【図３０】図３０は、サーバによる返信メッセージ送信処理手順の一例を示すフローチャートである。
【図３１】図３１は、サーバによるサーバ改ざん検出処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示の通信プログラム、通信装置、および通信方法の実施の形態を詳細に説明する。また、本実施の形態にかかる通信装置の例として、本実施の形態にかかる通信システムに含まれるサーバを用いて説明を行う。
【００１２】
図１は、本実施の形態にかかる通信システムの動作例を示す説明図である。本実施の形態にかかる通信システム１００は、サーバ１０１と、通信先装置となり車両内にある車載器１０２とを含む。サーバ１０１と車載器１０２は、共通鍵暗号方式によりデータをやり取りする。共通鍵暗号方式とは、データを暗号化する処理と暗号化したデータを復号する処理とにおいて同一内容の鍵を用いる暗号方式である。本実施の形態にかかる通信システム１００は、Ｅｌｅｃｔｒｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ（ＥＣＵ）情報の送受信に適用した場合の例を用いて説明する。
【００１３】
始めに、サーバ１０１は、現在用いている共通鍵として、鍵１１１−１＃Ｓと鍵１１１−１を識別する識別情報１１２−１＃Ｓを記憶する。また、車載器１０２は、鍵１１１−１＃Ｃと、鍵１１１−１を識別する識別情報１１２−１＃Ｃを記憶する。識別情報１１２−１＃Ｓ、識別情報１１２−１＃Ｃは、鍵１１１−１を識別する情報として、たとえば、「１」というデータが格納されている。
【００１４】
以下、「＃Ｓ」と「＃Ｃ」について、「＃Ｓ」が付与された情報はサーバ１０１に記憶されていることを意味し、「＃Ｃ」が付与された情報は車載器１０２に記憶されていることを意味する。また、「＃Ｓ」と「＃Ｃ」の前の符号が同一である場合、同一データであることとする。たとえば、鍵１１１−１＃Ｓと鍵１１１−１＃Ｃは同一データである。また、図１〜図３１にて、ハッチがかかっているデータは、暗号化されているデータとする。
【００１５】
図１の（Ａ）にて、サーバ１０１は、車載器１０２から、鍵１１１−１＃Ｃを用いてＥＣＵ情報１２０を暗号化した暗号化データ１２１と、識別情報１１２−１＃Ｃを受け付ける。受け付けた後、サーバ１０１は、識別情報１１２−１＃Ｃから、識別情報１１２−１の次に用いる鍵の識別情報が記憶されているかを判断する。
【００１６】
図１の（Ｂ）にて、サーバ１０１は、識別情報１１２−１の次に用いる鍵の識別情報が記憶されていないことを判断し、次の鍵として、鍵１１１−２＃Ｓと鍵１１１−２を識別する識別情報１１２−２＃Ｓを取得する。識別情報１１２−２＃Ｓは、鍵１１１−２を識別する情報として、たとえば、「２」というデータが格納されている。
【００１７】
また、具体的な取得方法は、予めサーバ１０１の記憶領域内に生成してあった鍵と鍵を識別する識別情報を取得してもよいし、次に用いる鍵の識別情報が記憶されていないことを判断した後に、鍵を生成してもよい。サーバ１０１は、取得した鍵１１１−２＃Ｓと鍵１１１−２を識別する識別情報１１２−２＃Ｓをサーバ１０１の記憶領域に格納する。
【００１８】
図１の（Ｃ）にて、サーバ１０１は、鍵１１１−２＃Ｓと、識別情報１１２−２＃Ｓとを、鍵１１１−１＃Ｓを用いて暗号化し、暗号化したデータ１２２と、識別情報１１２−１＃Ｓとを車載器１０２に送信する。
【００１９】
このように、本実施の形態にかかる通信システム１００は、通信先からの暗号文の受信の度に、いずれかの鍵の次の鍵が無ければ次の鍵を設定して次の鍵をいずれかの鍵で暗号化して送信する。続けて、図２〜図３１を用いて、通信システム１００に関する説明を行う。
【００２０】
図２は、通信システムの接続例を示す説明図である。通信システム１００は、サーバ１０１と、車載器１０２と、利用者端末２０１と、を含む。サーバ１０１と、利用者端末２０１は、ネットワーク２１１で相互に接続されている。また、利用者端末２０１は、ネットワーク２１１と無線通信を行っている。また、利用者端末２０１と車載器１０２は、近距離無線通信を行っている。または、利用者端末２０１と車載器１０２は、有線接続を行ってもよい。また、車載器１０２は、車両Ｂに取り付けられている。車両Ｂは、原動機を搭載する自動車でもよいし、原動機を搭載した二輪車でもよい。また、車載器１０２は、通信システム１００内に複数あってもよい。
【００２１】
サーバ１０１は、ＥＣＵ情報を記憶する装置である。また、サーバ１０１は、利用者端末２０１からのＥＣＵ情報の登録要求に応答する。さらに、サーバ１０１は、利用者端末２０１からのＥＣＵ情報の参照要求に応答して、ＥＣＵ情報を暗号化して利用者端末２０１に送信する。
【００２２】
車載器１０２は、車両Ｂに関するＥＣＵ情報を生成する装置である。具体的に、車載器１０２は、車両Ｂ内の原動機の回転数、燃料消費量等を含むＥＣＵ情報を生成する。また、車載器１０２は、原動機以外の情報として、車両Ｂのワイパーの動作回数等をＥＣＵ情報に含めてもよい。
【００２３】
利用者端末２０１は、利用者Ａによって操作される装置である。具体的に、利用者端末２０１は、利用者の操作により、ＥＣＵ情報の登録要求を発行する。また、利用者端末２０１は、利用者の操作により、ＥＣＵ情報の参照要求を発行する。
【００２４】
（通信システム１００のハードウェア）
図３は、通信システムのハードウェア構成例を示すブロック図である。サーバ１０１は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）３０１と、Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）３０２と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）３０３と、を含む。また、サーバ１０１は、ディスクドライブ３０４と、ディスク３０５と、通信インターフェース３０６と、を含む。また、ＣＰＵ３０１〜通信インターフェース３０６はバス３０７によってそれぞれ接続されている。
【００２５】
ＣＰＵ３０１は、サーバ１０１の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００２６】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子メモリを採用することができる。
【００２７】
通信インターフェース３０６は、ネットワーク２１１と内部のインターフェースを司り、ネットワーク２１１からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワーク２１１となるＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットなどに接続され、ネットワーク２１１を介して他の装置に接続される。通信インターフェース３０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。また、サーバ１０１は、光ディスクドライブ、光ディスク、キーボード、マウスを有していてもよい。
【００２８】
また、車載器１０２は、ＣＰＵ３１１と、ＲＯＭ３１２と、ＲＡＭ３１３と、ディスクドライブ３１４と、ディスク３１５と、通信インターフェース３１６と、を含む。また、ＣＰＵ３１１〜通信インターフェース３１６はバス３１７によってそれぞれ接続されている。
【００２９】
ＣＰＵ３１１は、車載器１０２の全体の制御を司る演算処理装置である。ＲＯＭ３１２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３１３は、ＣＰＵ３１１のワークエリアとして使用される揮発性メモリである。
【００３０】
ディスクドライブ３１４は、ＣＰＵ３１１の制御に従ってディスク３１５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３１４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３１５は、ディスクドライブ３１４の制御で書き込まれたデータを記憶する不揮発性メモリである。
【００３１】
通信インターフェース３１６は、ネットワーク２１１と内部のインターフェースを司り、ネットワーク２１１からのデータの入出力を制御する制御装置である。通信インターフェース３０６には、たとえば、モデムや無線ＬＡＮアダプタなどを採用することができる。次に、図４〜図７にて、サーバ１０１と車載器１０２にて記憶している記憶内容を説明する。
【００３２】
図４は、サーバ基盤データ管理テーブルの記憶内容の一例を示す説明図である。サーバ基盤データ管理テーブル４０１は、車載器１０２に用いる鍵ごとの情報を記憶するテーブルである。具体的に、図４に示すサーバ基盤データ管理テーブル４０１は、レコード４０１−１〜４０１−１１を記憶する。また、サーバ基盤データ管理テーブル４０１は、サーバ１０１が記憶する。
【００３３】
サーバ基盤データ管理テーブル４０１は、端末ＩＤｅｎｔｉｆｉｃａｔｉｏｎ（ＩＤ）、世代番号、基盤データ長、基盤データ、共有フラグ、適用開始時刻、新規世代番号、切替前世代番号という８つのフィールドを含む。端末ＩＤフィールドには、車載器１０２を一意に識別する情報が格納される。世代番号フィールドには、ＥＣＵ情報を暗号化する鍵を一意に識別する情報が格納される。基盤データ長フィールドには、鍵の生成元となる基盤データのデータ長が格納される。基盤データフィールドには、鍵の生成元となる基盤データが格納される。また、鍵の生成元となる基盤データが無い場合、基盤データフィールドには、"（ｎｕｌｌ）"が格納される。基盤データは、どのような値でもよいが、たとえば、乱数から生成されたデータである。
【００３４】
共有フラグフィールドには、基盤データフィールドに格納されている対象の基盤データが車載器１０２と共有しているか否かを示す識別子が格納される。具体的に、共有フラグフィールドには、対象の基盤データがサーバ１０１と車載器１０２とで共有中であることを示す"完了"識別子と、対象の基盤データが車載器１０２と共有していないことを示す"未完"識別子と、のいずれかの識別子が格納される。適用開始時刻フィールドには、対象の基盤データが初めて用いられた時刻が格納される。具体的に、適用開始時刻フィールドには、対象の基盤データに切り替わった後、最初に車載器１０２からメッセージを受信したときの時刻が格納される。なお、対象の基盤データがまだ用いられていない場合、適用開始時刻フィールドには、"（ｎｕｌｌ）"が格納される。
【００３５】
新規世代番号フィールドには、対象の基盤データの次に用いる基盤データの世代番号が格納される。次に用いる基盤データが無い場合、新規世代番号フィールドには、０が格納される。切替前世代番号フィールドには、対象の基盤データの前に用いられていた基盤データの世代番号が格納される。前に用いられていた基盤データが無い場合、切替前世代番号フィールドには、０が格納される。
【００３６】
たとえば、レコード４０１−１は、端末ＩＤが１となる車載器１０２との通信に用いる鍵についての情報を示している。具体的に、レコード４０１−１は、基盤データが"ａｂｃ…"から生成される鍵が、世代番号が１であり、基盤データ長が１２８ビットであり、車載器１０２と共有しており、２０１２年１月１日の１２時００分に用いられ始めたことを示す。
【００３７】
図５は、サーバ位置付け管理テーブルの記憶内容の一例を示す説明図である。サーバ位置付け管理テーブル５０１は、車載器１０２ごとに、複数の鍵のうちの、車載器１０２が現在用いている鍵についての情報を示す。また、サーバ位置付け管理テーブル５０１は、サーバ１０１が記憶する。
【００３８】
サーバ位置付け管理テーブル５０１は、端末ＩＤ、暗号方式、世代番号最大値、初期共有済世代数、１世代有効期間、現使用世代番号という６つのフィールドを含む。端末ＩＤフィールドには、車載器１０２を一意に識別する情報が格納される。暗号方式フィールドには、暗号方式の名称が格納される。たとえば、暗号方式フィールドには、Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＤＥＳ）を暗号化、復号、暗号化という順に三度繰り返すトリプルＤＥＳを示す"トリプルＤＥＳ"や、Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）を示す"ＡＥＳ"が格納される。
【００３９】
世代番号最大値フィールドには、鍵を記憶する最大数が格納される。初期共有済世代数フィールドには、初期登録処理にて共有される鍵の個数が格納される。１世代有効期間フィールドには、１つの鍵を利用開始してから終了するまでの時間が格納される。現使用世代番号フィールドには、車載器１０２が現在用いている鍵の世代番号が格納される。
【００４０】
たとえば、レコード５０１−１は、端末ＩＤが１となる車載器１０２との通信に用いる鍵についての情報を示している。具体的に、レコード５０１−１は、暗合方式がＡＥＳであり、鍵を最大１０個記憶し、初期登録処理にて鍵を３個記憶し、１つの鍵の有効期間が１時間であり、現在用いている鍵の世代番号が１であることを示している。
【００４１】
図６は、端末基盤データ管理テーブルの記憶内容の一例を示す説明図である。端末基盤データ管理テーブル６０１は、車載器１０２に用いる鍵ごとの情報を記憶するテーブルである。具体的に、図６に示す端末基盤データ管理テーブル６０１は、レコード６０１−１〜６０１−１０を記憶する。また、端末基盤データ管理テーブル６０１は、車載器１０２が記憶する。
【００４２】
端末基盤データ管理テーブル６０１は、世代番号、基盤データ長、基盤データ、新規世代番号という４つのフィールドを含む。世代番号〜新規世代番号の４つのフィールドについては、サーバ基盤データ管理テーブル４０１の同名のフィールドと同一の定義となるため、説明を省略する。
【００４３】
図７は、端末位置付け管理テーブルの記憶内容の一例を示す説明図である。端末位置付け管理テーブル７０１は、複数の鍵のうちの、車載器１０２が現在用いている鍵についての情報を示す。具体的に、端末位置付け管理テーブル７０１は、レコード７０１−１を記憶する。また、端末位置付け管理テーブル７０１は、車載器１０２が記憶する。
【００４４】
端末位置付け管理テーブル７０１は、端末ＩＤ、暗号方式、世代番号最大値、現使用世代番号という４つのフィールドを含む。端末ＩＤ〜現使用世代番号の４つのフィールドについては、サーバ位置付け管理テーブル５０１の同名のフィールドと同一の定義となるため、説明を省略する。
【００４５】
図８は、初期登録処理による初期登録情報の記憶内容の一例を示す説明図である。図８では、初期登録処理の終了時に出力する初期登録情報８０１の記憶内容の一例を示す。具体的に、図８に示す初期登録情報８０１は、レコード８０１−１〜８０１−３を記憶する。
【００４６】
初期登録情報８０１は、端末ＩＤ、暗号方式、世代番号、基盤データ長、基盤データという５つのフィールドを含む。端末ＩＤ〜基盤データの５つのフィールドについては、サーバ基盤データ管理テーブル４０１、サーバ位置付け管理テーブル５０１の同名のフィールドと同一の定義となるため、説明を省略する。
【００４７】
図９は、通信システムのメッセージフォーマットの一例を示す説明図である。本実施の形態にかかる通信システム１００では、車載器への指示メッセージ９０１と、車載器からのＥＣＵ情報登録要求メッセージ９０２という２つのフォーマットを用いてサーバ１０１と車載器１０２のメッセージをやり取りする。
【００４８】
車載器への指示メッセージ９０１は、先頭のフィールドとして、メッセージタイプフィールドを有する。車載器への指示メッセージ９０１は、メッセージタイプの値に応じて後続のフィールドが異なる。メッセージタイプが"ＥＣＵ情報登録要求メッセージ"を示す１である場合、車載器への指示メッセージ９０１は、２つ目のフィールドとして、現在時刻フィールドを有する。現在時刻フィールドは、利用者端末２０１がメッセージを中継したときの時刻が格納される。
【００４９】
メッセージタイプが"返信メッセージ受信指示"を示す２である場合、車載器への指示メッセージ９０１は、２つ目のフィールドとして、サーバから車載器へのメッセージデータ９１２を格納するフィールドを有する。メッセージデータ９１２については、図１１にて後述する。
【００５０】
たとえば、車載器への指示メッセージ９０１−１は、メッセージタイプが１であり、利用者端末２０１が車載器への指示メッセージ９０１−１を中継した際の時刻が２０１２年１月１日の１３時０１分であることを示す。また、車載器への指示メッセージ９０１−２は、メッセージタイプが２であり、メッセージデータ９１２を有することを示す。
【００５１】
ＥＣＵ情報登録要求メッセージ９０２は、先頭のフィールドとして、復帰コードフィールドを有する。また、ＥＣＵ情報登録要求メッセージ９０２は、２番目のフィールドとして、車載器からサーバへのメッセージデータ９１１を格納するフィールドを有する。復帰コードフィールドには、ＥＣＵ情報登録要求が正常に行われた場合、０が格納される。なんらかのエラーが検出されてＥＣＵ情報登録要求を生成できなかった場合、フィールドにはエラーコードが格納される。復帰コードフィールドの値が０でない場合、メッセージデータ９１１を格納するフィールドは無効である。メッセージデータ９１１については、図１０にて後述する。
【００５２】
たとえば、ＥＣＵ情報登録要求メッセージ９０２−１は、復帰コードが０であり、メッセージデータ９１１を有することを示す。また、ＥＣＵ情報登録要求メッセージ９０２−２は、復帰コードが１であることを示す。
【００５３】
図１０は、車載器からサーバへのメッセージデータのフォーマットの一例を示す説明図である。メッセージデータ９１１は、メッセージ送信時刻＿平文、端末ＩＤ＿平文、現使用世代番号＿平文、メッセージ送信時刻、端末ＩＤ、現使用世代番号、共有済世代番号、ＥＣＵ情報という８つのフィールドを含む。車載器１０２は、メッセージ送信時刻フィールド〜ＥＣＵ情報フィールドを、現使用世代番号＿平文が指定する基盤データから生成された鍵を用いて暗号化する。車載器１０２は、メッセージ送信時刻〜ＥＣＵ情報の各フィールドごとに暗号化してもよいし、メッセージ送信時刻フィールド〜ＥＣＵ情報フィールドの各値を１つのデータとして暗号化してもよい。
【００５４】
メッセージ送信時刻＿平文フィールドには、対象のメッセージの送信時刻が格納される。端末ＩＤ＿平文フィールドには、対象のメッセージの送信元となる車載器１０２の端末ＩＤが格納される。現使用世代番号＿平文フィールドには、現在用いている鍵の世代番号が格納される。メッセージ送信時刻フィールドには、メッセージ送信時刻＿平文フィールドの値と同一の値が格納される。端末ＩＤフィールドには、端末ＩＤ＿平文フィールドの値と同一の値が格納される。現使用世代番号フィールドには、現使用世代番号＿平文フィールドの値と同一の値が格納される。
【００５５】
共有済世代番号フィールドには、サーバ１０１と新たに共有した鍵の世代番号が格納される。具体的に、共有済世代番号フィールドには、対象のメッセージを送信する前に、利用者端末２０１から受信したサーバからの車載器からのメッセージデータ９１２の新規世代番号フィールドの値が格納される。メッセージデータ９１２を受信していない場合、また、メッセージデータ９１２の新規世代番号フィールドの値が０であれば、共有済世代番号フィールドには、０が格納される。ＥＣＵ情報フィールドには、ＥＣＵ情報が格納される。
【００５６】
たとえば、メッセージデータ１００１−１は、送信時刻が２０１２年１月１日１３時０１分であり、端末ＩＤが１となる車載器１０２により生成されており、世代番号が１に対応する鍵によって、暗号化されたデータである。また、メッセージデータ１００１−１の暗号化前の情報１００１−１'は、サーバ１０１と新たに共有した鍵が無く、ＥＣＵ情報が"ｘｘｘ"であることを示す。
【００５７】
図１１は、サーバから車載器へのメッセージデータのフォーマットの一例を示す説明図である。メッセージデータ９１２は、メッセージ送信時刻＿平文、現使用世代番号＿平文、メッセージ送信時刻、現使用世代番号、変更後世代番号、新規世代番号、新規世代番号基盤データ長、新規世代番号基盤データ、復帰コードという９つのフィールドを含む。サーバ１０１は、メッセージ送信時刻フィールド〜復帰コードフィールドを、現使用世代番号＿平文が指定する基盤データから生成された鍵を用いて暗号化する。サーバは、メッセージ送信時刻〜復帰コードの各フィールドごとに暗号化してもよいし、メッセージ送信時刻フィールド〜復帰コードフィールドの各値を１つのデータとして暗号化してもよい。
【００５８】
メッセージ送信時刻＿平文フィールドには、対象のメッセージの送信時刻が格納される。現使用世代番号＿平文フィールドには、対象のメッセージの送信先となる車載器１０２の端末ＩＤが格納される。メッセージ送信時刻フィールドには、対象のメッセージの送信時刻フィールドの値と同一の値が格納される。現使用世代番号フィールドには、現在用いている鍵の世代番号が格納される。変更後世代番号フィールドには、対象のメッセージの現使用世代番号の有効期間が終了している場合に、現在用いている鍵の世代番号が格納される。対象のメッセージの現使用世代番号の有効期間が終了していない場合、変更後世代番号フィールドには、０が格納される。
【００５９】
新規世代番号フィールドには、車載器１０２と新たに共有する鍵の世代番号が格納される。新たに共有する鍵が無い場合、新規世代番号フィールドには、０が格納される。具体的に、新たに共有する鍵がある状態になる場合とは、対象のメッセージの前のメッセージにて、変更後世代番号フィールドに０以外の値が入っており、車載器１０２から、変更後世代番号フィールドの値で暗号化されたメッセージを受信した場合である。
【００６０】
また、変更後世代番号フィールドと新規世代番号フィールドに、共に０以外の値が入ることは無い。以下、変更後世代番号フィールドに０以外の値が設定されたメッセージを、「変更後世代番号設定メッセージ」と呼称する。また、新規世代番号フィールドに０以外の値が設定されたメッセージを、「新規世代番号設定メッセージ」と呼称する。
【００６１】
新規世代番号基盤データ長フィールドには、新たに共有する鍵の基盤データのデータ長が格納される。新規世代番号基盤データフィールドには、新たに共有する鍵の基盤データが格納される。復帰コードフィールドには、ＥＣＵ情報登録要求に処理結果を示すコードが格納される。
【００６２】
たとえば、メッセージデータ１１０１−１は、送信時刻が２０１２年１月１日１３時０２分であり、端末ＩＤが１となる車載器１０２に対して送信し、世代番号が１に対応する鍵によって、暗号化されたデータである。また、メッセージデータ１１０１−１の暗号化前の情報１１０１−１'は、変更後世代番号フィールドと新規世代番号フィールドが共に０であることを示す。
【００６３】
（サーバ１０１の機能）
次に、サーバ１０１の機能について説明する。図１２は、サーバの機能例を示すブロック図である。サーバ１０１は、受付部１２０１と、判定部１２０２と、特定部１２０３と、削除部１２０４と、取得部１２０５と、判断部１２０６と、格納部１２０７と、暗号化部１２０８と、送信制御部１２０９と、通信部１２１０を含む。制御部となる受付部１２０１〜送信制御部１２０９は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、受付部１２０１〜送信制御部１２０９の機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。または、通信インターフェース３０６を経由して他のＣＰＵが実行することにより、受付部１２０１〜送信制御部１２０９の機能を実現してもよい。
【００６４】
また、通信部１２１０は、通信インターフェース３０６でもよいし、通信インターフェース３０６の動作を制御するデバイスドライバを含んでもよい。デバイスドライバは、記憶装置に記憶されており、ＣＰＵ３０１が実行することにより、通信インターフェース３０６の動作を制御する。
【００６５】
また、サーバ１０１は、サーバ基盤データ管理テーブル４０１にアクセス可能である。サーバ基盤データ管理テーブル４０１は、複数の鍵の各々の鍵ごとに各々の鍵と各々の鍵の識別情報とを記憶する。サーバ基盤データ管理テーブル４０１は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納されている。
【００６６】
受付部１２０１は、共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データといずれかの鍵の識別情報とを通信先装置から受け付ける。鍵とは、共通鍵そのものであってもよいし、共通鍵の生成元のデータでもよい。本実施の形態では、鍵は、共通鍵の生成元である基盤データとなる。また、受付部１２０１は、暗号化データといずれかの鍵の識別情報とを、通信部１２１０から受け付けてもよい。または、受付部１２０１は、通信部１２１０が暗号化データといずれかの鍵の識別情報を書き込んだバッファを定期的に参照してもよい。なお、受け付けたデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００６７】
判定部１２０２は、サーバ基盤データ管理テーブル４０１を参照して、いずれかの鍵の識別情報に対応付けていずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する。たとえば、判定部１２０２は、世代番号が１となる鍵に対応付けて、世代番号が１となる鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する。また、次に用いる鍵の識別情報は、サーバ基盤データ管理テーブル４０１の新規世代番号フィールドに格納されている。判定部１２０２は、新規世代番号フィールドの値が０であるときに次に用いる鍵の識別情報が記憶されていないと判定し、０以外であるときに次に用いる鍵の識別情報が記憶されていると判定する。判定結果は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００６８】
特定部１２０３は、判定部１２０２によって次に用いる鍵の識別情報が記憶されていないと判定された場合、サーバ基盤データ管理テーブル４０１の記憶内容に基づいて、いずれかの鍵の前に通信先装置が用いた前の鍵を特定する。具体的には、特定部１２０３は、サーバ基盤データ管理テーブル４０１の世代番号フィールドと、新規世代番号フィールドを用いて特定する。
【００６９】
たとえば、サーバ基盤データ管理テーブル４０１が、世代番号フィールドの値が１、新規世代番号フィールドの値が２である第１のレコードと、世代番号フィールドの値が２、新規世代番号フィールドの値が０である第２のレコードと、を記憶しているとする。また、判定部１２０２が、新規世代番号フィールドの値が０であるため、世代番号２に対応する鍵の次に用いる鍵の識別情報が記憶されていないと判定したとする。このとき、特定部１２０３は、世代番号２が新規世代番号フィールドの値に設定されている第１のレコードを検出する。特定部１２０３は、世代番号１に対応する鍵を、前の鍵として特定する。また、特定部１２０３は、前述の処理を繰り返し、２つ前の鍵を特定してもよいし、さらに遡って前の鍵を特定してもよい。なお、特定した鍵の識別情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７０】
削除部１２０４は、サーバ基盤データ管理テーブル４０１に記憶されている複数の鍵のうちの、特定部１２０３が特定した前の鍵と前の鍵の識別情報とを削除する。たとえば、削除部１２０４は、特定した世代番号１に対応する鍵と、鍵の識別情報を削除する。
【００７１】
取得部１２０５は、判定部１２０２によって次に用いる鍵の識別情報が記憶されていないと判定された場合、サーバ基盤データ管理テーブル４０１に記憶されている複数の鍵のうちのいずれかの鍵とは異なる他の鍵と他の鍵の識別情報とを取得する。たとえば、取得部１２０５は、判定部１２０２が世代番号２に対応する鍵の識別情報が記憶されていないと判定した場合、複数の鍵のうちの世代番号２に対応する鍵とは異なる世代番号３に対応する鍵と世代番号３に対応する鍵の識別情報を取得する。なお、取得した鍵の識別情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７２】
また、取得部１２０５は、サーバ基盤データ管理テーブル４０１に記憶されている複数の鍵のうちのいずれかの鍵および特定部１２０３が特定した鍵とは異なる他の鍵と他の鍵の識別情報とを取得してもよい。たとえば、判定部１２０２が世代番号２に対応する鍵の識別情報が記憶されていないと判定し、特定部１２０３が、前の鍵として、世代番号１に対応する鍵を特定したとする。このとき、取得部１２０５は、複数の鍵のうちの、世代番号２に対応する鍵および世代番号１に対応する鍵とは異なる世代番号３に対応する鍵と世代番号３に対応する鍵の識別情報を取得する。なお、取得したデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７３】
判断部１２０６は、次に用いる鍵の識別情報が記憶されていると判断した場合、いずれかの鍵が最初に用いられてからの経過時間またはいずれかの鍵が用いられた回数に基づいて、いずれかの鍵が有効か否かを判断する。たとえば、判断部１２０６は、いずれかの鍵が最初に用いられてから１時間以上経過していた場合、いずれかの鍵を有効でないとして判断する。または、判断部１２０６は、いずれかの鍵が１００回以上暗号化に用いられた場合、いずれかの鍵を有効でないとして判断する。
【００７４】
また、判断部１２０６は、いずれかの鍵がサーバ１０１で最初に用いられた経過時間に基づいて判断してもよいし、いずれかの鍵が車載器１０２で最初に用いられた経過時間に基づいて判断してもよい。回数についても同様で、判断部１２０６は、いずれかの鍵がサーバ１０１で用いられた回数に基づいて判断してもよいし、いずれかの鍵が車載器１０２で用いられた回数に基づいて判断してもよい。また、判断部１２０６は、いずれかの鍵がサーバ１０１と車載器１０２で用いられた回数に基づいて判断してもよい。なお、取得したデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７５】
格納部１２０７は、サーバ基盤データ管理テーブル４０１に記憶されているいずれかの鍵の識別情報に対応付けて、取得部１２０５によって取得された他の鍵の識別情報を格納する。たとえば、格納部１２０７は、世代番号１に対応する鍵の識別情報に対応付けて、取得部１２０５によって取得された世代番号２に対応する鍵の識別情報を格納する。
【００７６】
暗号化部１２０８は、取得部１２０５によって取得された他の鍵と他の鍵の識別情報とを、サーバ基盤データ管理テーブル４０１に記憶されているいずれかの鍵を用いて暗号化する。たとえば、暗号化部１２０８は、次に用いる世代番号２に対応する鍵と、世代番号２に対応する鍵の識別情報とを、世代番号１に対応する鍵を用いて暗号化する。
【００７７】
また、暗号化部１２０８は、判断部１２０６によっていずれかの鍵が有効でないと判断された場合、次に用いる鍵の識別情報を、サーバ基盤データ管理テーブル４０１に記憶されているいずれかの鍵を用いて暗号化してもよい。たとえば、暗号化部１２０８は、次に用いる世代番号２に対応する鍵の識別情報を、世代番号１に対応する鍵を用いて暗号化する。暗号化したデータは、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００７８】
送信制御部１２０９は、通信部１２１０を制御して、暗号化部１２０８によって暗号化された次に用いる鍵の識別情報と、いずれかの鍵の識別情報とを通信先装置に送信する。たとえば、送信制御部１２０９は、暗号化した次に用いる世代番号２に対応する鍵と、暗号化した世代番号２に対応する鍵の識別情報と、世代番号１に対応する鍵の識別情報を、車載器１０２に送信する。
【００７９】
また、送信制御部１２０９は、通信部１２１０を制御して、暗号化部１２０８によって暗号化した次に用いる鍵の識別情報と、いずれかの鍵の識別情報とを通信先装置に送信してもよい。たとえば、送信制御部１２０９は、世代番号１に対応する鍵を用いて暗号化した世代番号２に対応する鍵の識別情報を、車載器１０２に送信する。
【００８０】
通信部１２１０は、車載器１０２と通信する。また、通信部１２１０は、利用者端末２０１を経由して車載器１０２と通信してもよい。また、サーバ１０１は、通信部１２１０と通信制御部１２０９を含む送信部を有してもよい。次に、図１３〜図１６を用いて、ＥＣＵ情報登録時の処理を、サーバ基盤データ管理テーブル４０１、サーバ位置付け管理テーブル５０１、端末基盤データ管理テーブル６０１、端末位置付け管理テーブル７０１の記憶内容を用いて説明する。また、ＥＣＵ情報登録要求は、利用者端末２０１上で実行するアプリケーションソフトウェアによって発行される。以下、アプリケーションソフトウェアを、「アプリ」と称する。
【００８１】
図１３は、ＥＣＵ情報登録時の動作例を示す説明図である。サーバ１０１と車載器１０２の現使用世代番号は１である。この状態にて、（１）番目の処理として、利用者端末２０１は、メッセージタイプで"ＥＣＵ情報登録要求メッセージ"を設定した車載器への指示ＥＣＵ情報登録要求メッセージを車載器１０２に送信する。車載器への指示メッセージを受信した車載器１０２は、（２）番目の処理として、ＥＣＵ情報を含むＥＣＵ情報登録要求メッセージ１３０１を生成し、世代番号１で指定される基盤データから生成される鍵を用いてＥＣＵ情報登録要求メッセージ１３０１を暗号化する。続けて、車載器１０２は、利用者端末２０１を経由して、サーバ１０１に暗号化したＥＣＵ情報登録要求メッセージ１３０１をサーバ１０１に送信する。ＥＣＵ情報登録要求メッセージ１３０１は、ＥＣＵ情報登録要求メッセージ９０２のフォーマットに従っている。
【００８２】
図１４は、鍵の世代番号更新時の動作例を示す説明図である。図１４で示す通信システム１００の状態は、図１３で示した（２）番目の処理終了後の状態である。サーバ１０１は、（１）番目の処理として、受信したＥＣＵ情報登録要求メッセージ１３０１の世代番号１で指定される鍵の有効期間が終了しているか否かを判断する。鍵の有効期間が終了していない場合、サーバ１０１は、ＥＣＵ情報登録要求メッセージ１３０１を復号し、ＥＣＵ情報を登録して、車載器１０２にＥＣＵ情報が正常に登録できた旨を伝える返信メッセージを送信する。
【００８３】
有効期間が終了している場合、サーバ１０１は、（２）番目の処理として、現使用世代番号以外に共有フラグフィールドの値が完了となっているレコードのうちのいずれかのレコードを選択し、現使用世代番号フィールドを新たな現使用世代番号に更新する。図１４の例では、サーバ１０１は、世代番号フィールドの値が１以外であり、共有フラグフィールド値が完了となっているレコード４０１−２、４０１−３のうち、レコード４０１−２を選択し、現使用世代番号フィールドを２に更新する。
【００８４】
次に、サーバ１０１は、（３）番目の処理として、選択したレコードの切替前世代番号フィールドを、今まで設定していた世代番号に設定する。図１４の例では、サーバ１０１は、レコード４０１−２の切替前世代番号フィールドを、０から１に更新する。続けて、サーバ１０１は、（４）番目の処理として、変更後世代番号が２となる変更後世代番号設定メッセージ１４０１を、世代番号１で指定される鍵にて暗号化し、利用者端末２０１を経由して、車載器１０２に送信する。変更後世代番号設定メッセージ１４０１は、車載器への指示メッセージ９０１のフォーマットに従っている。
【００８５】
変更後世代番号設定メッセージ１４０１を受信した車載器１０２は、（５）番目の処理として、現使用世代番号フィールドを、変更後世代番号設定メッセージ１４０１の現使用世代番号に更新する。図１４の例では、車載器１０２は、現使用世代番号フィールドを、１から２に更新する。
【００８６】
図１５は、新規世代番号の基盤データをサーバと車載器間で共有する際の動作例を示す説明図である。図１５で示す通信システム１００の状態は、図１４にて示した（５）番目の処理終了後の状態である。サーバ１０１は、車載器１０２が生成した、世代番号２で指定される鍵にて暗号化されたＥＣＵ情報登録要求メッセージ１５０１を受信する。ＥＣＵ情報登録要求メッセージ１５０１は、ＥＣＵ情報登録要求メッセージ９０２のフォーマットに従っている。
【００８７】
次に、サーバ１０１は、（１）番目の処理として、ＥＣＵ情報登録要求メッセージ１５０１の暗号化に用いられた鍵が初めて暗号化に用いられたか否かを判断する。初めて暗号化に用いられたか否かを判断するため、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、ＥＣＵ情報登録要求メッセージ１５０１内の現使用世代番号＿平文フィールドの値と同一のレコードを検索する。続けて、サーバ１０１は、検索により発見したレコードの新規世代番号フィールドが０か否かを判断する。０である場合、該当の世代番号で指定される鍵が、初めて暗号化に用いられたことを意味する。
【００８８】
図１５の例では、サーバ１０１は、世代番号フィールドに２が設定されているレコード４０１−２の新規世代番号フィールドの値が０であるため、世代番号２で指定される鍵が初めて暗号化に用いられたと判断する。初めて暗号化に用いられた鍵がある場合、サーバ１０１は、（２）番目の処理として、新しい基盤データを生成し、共有フラグフィールドが未完となっているレコードの基盤データフィールドに、新しい基盤データを設定する。図１５の例では、サーバ１０１は、新たな基盤データ"ｊｋｌ…"を生成し、レコード４０１−４の基盤データフィールドに新たな基盤データ"ｊｋｌ…"を設定する。
【００８９】
続けて、サーバ１０１は、（３）番目の処理として、サーバ基盤データ管理テーブル４０１内の、現使用世代番号が示すレコードの新規世代番号フィールドに、新たな基盤データを設定したレコードの世代番号を設定する。図１５の例では、サーバ１０１は、レコード４０１−２の新規世代番号フィールドに４を設定する。
【００９０】
次に、サーバ１０１は、（４）番目の処理として、サーバ基盤データ管理テーブル４０１内の、現使用世代番号が示すレコードの切替前世代番号の値と同一の値が世代番号フィールドに設定されているレコードを検索する。続けて、サーバ１０１は、検索して発見したレコードの基盤データを削除する。また、サーバ１０１は、発見したレコードの共有フラグを未完に設定する。図１５の例では、サーバ１０１は、レコード４０１−１の基盤データ"ａｂｃ…"を削除し、レコード４０１−１の共有フラグフィールドを未完に設定する。
【００９１】
続けて、サーバ１０１は、（５）番目の処理として、新規世代番号が４となる新規世代番号設定メッセージ１５０２を、世代番号２で指定される鍵にて暗号化し、利用者端末２０１を経由して、車載器１０２に送信する。また、新規世代番号設定メッセージ１５０２の新規世代番号基盤データフィールドには、新たな基盤データ"ｊｋｌ…"が格納される。また、新規世代番号設定メッセージ１５０２は、ＥＣＵ情報登録要求メッセージ９０１のフォーマットに従っている。
【００９２】
新規世代番号設定メッセージ１５０２を受信した車載器１０２は、（６）番目の処理として、端末基盤データ管理テーブル６０１内の、新規世代番号設定メッセージ１５０２の新規世代番号フィールドの値と同一の値が世代番号フィールドにあるレコードを検索する。続けて、車載器１０２は、検索して発見したレコードの基盤データフィールドに、新規世代番号設定メッセージ１５０２の新規世代番号基盤データフィールドに格納された値を格納する。図１５の例では、車載器１０２は、レコード６０１−４の基盤データフィールドに、"ｊｋｌ…"を格納する。
【００９３】
次に、車載器１０２は、（７）番目の処理として、端末基盤データ管理テーブル６０１内の、現使用世代番号が示すレコードの新規世代番号フィールドに、新規世代番号設定メッセージ１５０２の新規世代番号フィールドの値を設定する。図１５の例では、車載器１０２は、レコード６０１−２の新規世代番号フィールドを０から４に更新する。
【００９４】
図１６は、新規世代番号の基盤データの共有完了をサーバに送信する際の動作例を示す説明図である。図１６で示す通信システム１００の状態は、図１５にて示した（７）番目の処理終了後の状態である。
【００９５】
（１）番目の処理として、車載器１０２は、共有済世代番号フィールドに４が格納されており、世代番号２で指定される鍵にて暗号化されたＥＣＵ情報登録要求メッセージ１６０１を送信する。ＥＣＵ情報登録要求メッセージ１６０１は、ＥＣＵ情報登録要求メッセージ９０２のフォーマットに従っている。
【００９６】
ＥＣＵ情報登録要求メッセージ１６０１を受信したサーバ１０１は、（２）番目の処理として、サーバ基盤データ管理テーブル４０１内の、ＥＣＵ情報登録要求メッセージ１６０１の共有済世代番号フィールドの値と同一の値が世代番号フィールドに設定されているレコードを検索する。続けて、サーバ１０１は、検索して発見したレコードの共有フラグを完了に設定する。図１６の例では、サーバ１０１は、レコード４０１−４の共有フラグフィールドを完了に設定する。次に、図１３〜図１６に示した動作を行うフローチャートを図１７〜図３１にて説明する。
【００９７】
図１７は、サーバによる初期登録処理手順の一例を示すフローチャートである。サーバによる初期登録処理は、鍵をサーバ１０１に登録する処理である。また、サーバによる初期登録処理は、通信システム１００の運用開始時に、利用者端末２０１の開発者の操作によって、実行開始する。さらに、サーバによる初期登録処理は、利用者端末２０１の開発者の操作の入力により、端末ＩＤ、暗号方式、初期共有済世代数、世代番号最大値、１世代有効期間の各値を受け付けている。
【００９８】
サーバ１０１は、サーバ位置付け管理テーブル５０１内の、入力された端末ＩＤの値と同一の値が端末ＩＤフィールドに設定されたレコードを削除する（ステップＳ１７０１）。次に、サーバ１０１は、サーバ位置付け管理テーブル５０１に、入力パラメータに従ったレコードを追加する（ステップＳ１７０２）。また、サーバ１０１は、追加したレコードの現使用世代番号に１を設定する。続けて、サーバ１０１は、世代番号のカウンタとして用いる変数ｉに１を設定する（ステップＳ１７０３）。
【００９９】
次に、サーバ１０１は、変数ｉが入力パラメータの世代番号最大値より大きいか否かを判断する（ステップＳ１７０４）。変数ｉが入力パラメータの世代番号最大値以下の場合（ステップＳ１７０４：Ｎｏ）、サーバ１０１は、サーバ基盤データ管理テーブル内の、世代番号フィールドの値が変数ｉとなるレコードを初期化する（ステップＳ１７０５）。ここで、初期化として、サーバ１０１は、レコードの各フィールドを以下のように設定する。
【０１００】
サーバ１０１は、対象レコードの端末ＩＤフィールドに、入力パラメータの端末ＩＤを設定する。また、サーバ１０１は、対象レコードの世代番号フィールドに、変数ｉを設定する。また、サーバ１０１は、対象レコードの基盤データフィールドに、乱数から生成した値を設定する。また、サーバ１０１は、対象レコードの基盤データ長フィールドに、基盤データフィールドに設定した値のデータ長を設定する。また、サーバ１０１は、対象レコードの共有フラグフィールドに、未完を設定する。また、サーバ１０１は、対象レコードの適用開始時刻に（ｎｕｌｌ）を設定する。また、サーバ１０１は、対象レコードの新規世代番号フィールドと切替前世代番号フィールドに、０を設定する。
【０１０１】
初期化終了後、サーバ１０１は、変数ｉが入力パラメータの初期共有済世代数より大きいか否かを判断する（ステップＳ１７０６）。変数ｉが入力パラメータの初期共有済世代数以下である場合（ステップＳ１７０６：Ｎｏ）、サーバ１０１は、設定したレコードの、端末ＩＤ、暗号方式、世代番号、基盤データ長、基盤データ、の各フィールドの値を初期登録情報８０１として出力する（ステップＳ１７０７）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号フィールドの値がｉとなるレコードの、共有フラグを完了に設定する（ステップＳ１７０８）。ステップＳ１７０６の処理終了後、または、変数ｉが入力パラメータの初期共有済世代数より大きい場合（ステップＳ１７０６：Ｙｅｓ）、サーバ１０１は、変数ｉをインクリメントする（ステップＳ１７０９）。ステップＳ１７０９の処理終了後、サーバ１０１は、ステップＳ１７０４の処理に移行する。
【０１０２】
変数ｉが入力パラメータの世代番号最大値より大きい場合（ステップＳ１７０４：Ｙｅｓ）、サーバ１０１は、サーバによる初期登録処理を終了する。サーバによる初期登録処理を実行することにより、通信システム１００は、運用開始時に使用する鍵をサーバ１０１に設定することができる。
【０１０３】
図１８は、車載器による初期登録処理手順の一例を示すフローチャートである。車載器による初期登録処理は、サーバによる初期登録処理で出力された初期登録情報８０１を読み込んで、鍵を車載器１０２に登録する処理である。また、車載器による初期登録処理は、通信システム１００の運用開始時に、利用者端末２０１の開発者の操作によって、実行開始する。また、車載器による初期登録処理は、利用者端末２０１の開発者の操作の入力により、端末ＩＤ、世代番号最大値、初期登録情報８０１を受け付けている。
【０１０４】
車載器１０２は、端末位置付け管理テーブル７０１内のレコードを削除する（ステップＳ１８０１）。次に、車載器１０２は、端末位置付け管理テーブル７０１に、入力パラメータに従ったレコードを追加する（ステップＳ１８０２）。続けて、車載器１０２は、初期登録情報８０１を読み込む（ステップＳ１８０３）。次に、車載器１０２は、読み込んだ初期登録情報８０１の先頭のレコードを選択する（ステップＳ１８０４）。
【０１０５】
続けて、車載器１０２は、端末基盤データ管理テーブル６０１内の、選択したレコードの世代番号の値と同一の値となるレコードの、端末ＩＤ、基盤データ長、基盤データ、の各フィールドに、選択したレコードの各フィールドの値を設定する（ステップＳ１８０５）。また、車載器１０２は、新規世代番号フィールドに０を設定する。次に、車載器１０２は、初期登録情報８０１の全てのレコードを選択したか否かを判断する（ステップＳ１８０６）。まだ選択していないレコードがある場合（ステップＳ１８０６：Ｎｏ）、車載器１０２は、初期登録情報８０１の次のレコードを選択する（ステップＳ１８０７）。ステップＳ１８０７の終了後、車載器１０２は、ステップＳ１８０５の処理に移行する。
【０１０６】
全てのレコードを選択した場合（ステップＳ１８０６：Ｙｅｓ）、車載器１０２は、車載器による初期登録処理を終了する。車載器による初期登録処理を実行することにより、通信システム１００は、運用開始時に使用する鍵を車載器１０２に設定することができる。
【０１０７】
図１９は、利用者端末によるメッセージ処理手順の一例を示すフローチャートである。利用者端末によるメッセージ処理は、サーバ１０１および車載器１０２から通知される返信メッセージの処理を行う。
【０１０８】
利用者端末２０１は、利用者端末２０１上のアプリによるＥＣＵ情報登録要求に応じて、メッセージタイプで"ＥＣＵ情報登録要求メッセージ"を指定して車載器への指示メッセージ９０１を作成する（ステップＳ１９０１）。次に、利用者端末２０１は、車載器への指示メッセージ９０１を車載器１０２に送信する（ステップＳ１９０２）。続けて、利用者端末２０１は、車載器１０２から返信メッセージを受信する（ステップＳ１９０３）。
【０１０９】
次に、利用者端末２０１は、返信メッセージがエラーメッセージか否かを判断する（ステップＳ１９０４）。返信メッセージがエラーメッセージでない場合（ステップＳ１９０４：Ｎｏ）、利用者端末２０１は、返信メッセージ（ＥＣＵ情報登録要求メッセージ）をサーバ１０１に送信する（ステップＳ１９０５）。続けて、利用者端末２０１は、サーバ１０１から返信メッセージを受信する（ステップＳ１９０６）。次に、利用者端末２０１は、サーバ１０１からの返信メッセージを車載器１０２に送信する（ステップＳ１９０７）。続けて、利用者端末２０１は、車載器１０２から返信メッセージを受信する（ステップＳ１９０８）。
【０１１０】
次に、利用者端末２０１は、返信メッセージがエラーメッセージか否かを判断する（ステップＳ１９０９）。返信メッセージがエラーメッセージでない場合（ステップＳ１９０９：Ｎｏ）、利用者端末２０１は、返信メッセージが世代変更を行ったことを示すメッセージか否かを判断する（ステップＳ１９１０）。
【０１１１】
返信メッセージが世代変更を行ったことを示すメッセージでない場合（ステップＳ１９１０：Ｎｏ）、利用者端末２０１は、正常終了をアプリに通知する（ステップＳ１９１１）。世代変更を行ったことを示すメッセージである場合（ステップＳ１９１０：Ｙｅｓ）、利用者端末２０１は、ＥＣＵ情報登録の再実行を勧める旨のコードを、アプリに通知する（ステップＳ１９１２）。返信メッセージがエラーメッセージである場合（ステップＳ１９０４：Ｙｅｓ、ステップＳ１９０９：Ｙｅｓ）、利用者端末２０１は、エラー終了を、アプリに通知する（ステップＳ１９１３）。ステップＳ１９１１、ステップＳ１９１２、ステップＳ１９１３、の終了後、利用者端末２０１は、利用者端末によるメッセージ処理を終了する。利用者端末によるメッセージ処理を実行することにより、通信システム１００は、ＥＣＵ情報登録を行うことができる。
【０１１２】
図２０は、サーバからの返信メッセージに対する車載器による処理手順の一例を示すフローチャートである。車載器による返信メッセージ処理は、利用者端末２０１から受信したサーバからの返信メッセージに対する処理である。車載器１０２は、端末位置付け管理テーブル７０１の中の現使用世代番号と世代番号最大値を読み込む（ステップＳ２００１）。次に、車載器１０２は、利用者端末２０１からサーバからの返信メッセージを受信する（ステップＳ２００２）。ステップＳ２００２のサーバからの返信メッセージは、車載器への指示メッセージ９０１のフォーマットに従っている。続けて、車載器１０２は、受信した車載器への指示メッセージのメッセージタイプを確認する（ステップＳ２００３）。
【０１１３】
車載器への指示メッセージのメッセージタイプがＥＣＵ情報登録要求メッセージである場合（ステップＳ２００３：ＥＣＵ情報登録要求メッセージ）、車載器１０２は、ＥＣＵ情報登録要求生成処理を実行する（ステップＳ２００４）。ＥＣＵ情報登録要求生成処理の詳細は、図２１にて後述する。ＥＣＵ情報登録要求生成処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。
【０１１４】
車載器への指示メッセージのメッセージタイプが返信メッセージ受信指示である場合（ステップＳ２００３：返信メッセージ受信指示）、車載器１０２は、端末改ざん検出処理を実行する（ステップＳ２００５）。端末改ざん検出処理は、図２３にて後述する。次に、車載器１０２は、サーバからの返信メッセージが改ざんされていなく、かつ、エラーメッセージでないか否かを判断する（ステップＳ２００６）。サーバからの返信メッセージが改ざんされている場合、またはエラーメッセージである場合（ステップＳ２００６：Ｎｏ）、車載器１０２は、利用者端末２０１にエラーメッセージを送信する（ステップＳ２００７）。ステップＳ２００７の処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。
【０１１５】
サーバからの返信メッセージが改ざんされていなく、かつ、エラーメッセージでない場合（ステップＳ２００６：Ｙｅｓ）、車載器１０２は、サーバからの返信メッセージが変更後世代番号設定メッセージか否かを判断する（ステップＳ２００８）。サーバからの返信メッセージが変更後世代番号設定メッセージである場合（ステップＳ２００８：Ｙｅｓ）、車載器１０２は、端末位置付け管理テーブル７０１の現使用世代番号フィールドに、サーバからの返信メッセージの変更後世代番号フィールドの値を設定する（ステップＳ２００９）。次に、車載器１０２は、利用者端末２０１に世代変更を行ったことを示すメッセージを送信する（ステップＳ２０１０）。ステップＳ２０１０の処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。
【０１１６】
サーバからの返信メッセージが変更後世代番号設定メッセージでない場合（ステップＳ２００８：Ｎｏ）、車載器１０２は、サーバからの返信メッセージが新規世代番号設定メッセージか否かを判断する（ステップＳ２０１１）。サーバからの返信メッセージが新規世代番号設定メッセージである場合（ステップＳ２０１１：Ｙｅｓ）、車載器１０２は、端末基盤データ管理テーブル６０１内の、世代番号フィールドの値が、サーバからの返信メッセージの新規世代番号の値と一致するレコードを検索する（ステップＳ２０１２）。次に、車載器１０２は、検索したレコードの基盤データ長フィールドに、サーバからの返信メッセージの新規世代番号基盤データ長の値を設定する（ステップＳ２０１３）。続けて、車載器１０２は、検索したレコードの基盤データフィールドに、サーバからの返信メッセージの新規世代番号基盤データの値を設定する（ステップＳ２０１４）。
【０１１７】
ステップＳ２０１４の処理終了後、または、サーバからの返信メッセージが新規世代番号設定メッセージでない場合（ステップＳ２０１１：Ｎｏ）、車載器１０２は、利用者端末２０１に正常終了メッセージを受信したことを示すメッセージを送信する（ステップＳ２０１５）。ステップＳ２０１５の処理終了後、車載器１０２は、ステップＳ２００２の処理に移行する。このように、サーバからの返信メッセージに対する車載器による処理を実行することにより、通信システム１００は、安全性が向上した鍵を用いてＥＣＵ情報をサーバ１０１に送信することができる。
【０１１８】
図２１は、車載器によるＥＣＵ情報登録要求生成処理手順の一例を示すフローチャートである。ＥＣＵ情報登録要求生成処理は、ＥＣＵ情報登録要求メッセージの生成を行う処理である。車載器１０２は、ＥＣＵ情報を基に、ＥＣＵ情報登録要求メッセージを作成する（ステップＳ２１０１）。次に、車載器１０２は、端末基盤データ管理テーブル６０１内の、世代番号フィールドの値が現使用世代番号と同一となるレコードを選択する（ステップＳ２１０２）。続けて、車載器１０２は、選択したレコードの新規世代番号フィールドが０か否かを判断する（ステップＳ２１０３）。新規世代番号フィールドが０でない場合（ステップＳ２１０３：Ｎｏ）、車載器１０２は、作成したＥＣＵ情報登録要求メッセージの共有済世代番号フィールドに、選択したレコードの新規世代番号フィールドの値を設定する（ステップＳ２１０４）。
【０１１９】
ステップＳ２１０４の終了後、または、新規世代番号フィールドが０である場合（ステップＳ２１０３：Ｙｅｓ）、車載器１０２は、ＥＣＵ情報登録要求メッセージ送信処理を実行する（ステップＳ２１０５）。ＥＣＵ情報登録要求メッセージ送信処理の詳細は、図２２にて後述する。ステップＳ２１０５の処理実行後、車載器１０２は、車載器によるＥＣＵ情報登録要求生成処理を終了する。車載器によるＥＣＵ情報登録要求生成処理を実行することにより、通信システム１００は、ＥＣＵ情報登録要求メッセージの生成を行うことができる。
【０１２０】
図２２は、車載器によるＥＣＵ情報登録要求メッセージ送信処理手順の一例を示すフローチャートである。車載器によるＥＣＵ情報登録要求メッセージ送信処理は、ＥＣＵ情報登録要求メッセージを作成して、サーバ１０１に送信する処理である。車載器１０２は、ＥＣＵ情報登録要求メッセージのメッセージ送信時刻フィールドに、現在時刻を設定する（ステップＳ２２０１）。なお、車載器１０２に現在時刻を取得する方法が無い場合、図２０のステップＳ２００２の処理にて受信したサーバからの返信メッセージの現在時刻フィールドの値を、現在時刻フィールドに設定してもよい。次に、車載器１０２は、ＥＣＵ情報登録要求メッセージの端末ＩＤフィールドに、端末位置付け管理テーブル７０１の端末ＩＤフィールドの値を設定する（ステップＳ２２０２）。
【０１２１】
続けて、車載器１０２は、ＥＣＵ情報登録要求メッセージの現使用世代番号フィールドに、端末位置付け管理テーブル７０１の現使用世代番号フィールドの値を設定する（ステップＳ２２０３）。次に、車載器１０２は、端末基盤データ管理テーブル６０１内の、端末位置付け管理テーブル７０１の現使用世代番号フィールドと同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ２２０４）。続けて、車載器１０２は、選択したレコードの基盤データフィールドの値から、共通鍵を生成する（ステップＳ２２０５）。
【０１２２】
次に、車載器１０２は、生成した共通鍵を用いて、ＥＣＵ情報登録要求メッセージを暗号化する（ステップＳ２２０６）。続けて、車載器１０２は、暗号化したＥＣＵ情報登録要求メッセージを利用者端末２０１に送信する（ステップＳ２２０７）。ステップＳ２２０７の実行終了後、車載器１０２は、車載器によるＥＣＵ情報登録要求メッセージ送信処理を終了する。車載器によるＥＣＵ情報登録要求メッセージ送信処理を実行することにより、通信システム１００は、ＥＣＵ情報登録要求メッセージを生成して、サーバ１０１に送信することができる。
【０１２３】
図２３は、車載器によるサーバからの返信メッセージに対する改ざん検出処理手順の一例を示すフローチャートである。車載器による端末改ざん検出処理は、サーバからの返信メッセージの改ざんを検出する処理である。車載器１０２は、端末基盤データ管理テーブル６０１内の、サーバからの返信メッセージの現使用世代番号フィールドと同一の値が世代番号フィールドに設定されているレコードを検索する（ステップＳ２３０１）。次に、車載器１０２は、検索したレコードの基盤データフィールドの値を用いて、共通鍵を生成する（ステップＳ２３０２）。続けて、車載器１０２は、生成した共通鍵を用いて、受信したサーバからの返信メッセージ内の、暗号化領域を復号する（ステップＳ２３０３）。
【０１２４】
次に、車載器１０２は、受信したサーバからの返信メッセージのメッセージ送信時刻フィールド＿平文と、復号したメッセージ送信時刻フィールドの値が同一か否かを判断する（ステップＳ２３０４）。同一である場合（ステップＳ２３０４：Ｙｅｓ）、車載器１０２は、受信したサーバからの返信メッセージの現使用世代番号フィールド＿平文と、復号した現使用世代番号フィールドの値が同一か否かを判断する（ステップＳ２３０５）。
【０１２５】
同一である場合（ステップＳ２３０５：Ｙｅｓ）、車載器１０２は、サーバからの返信メッセージが改ざんされていないことを出力する（ステップＳ２３０６）。同一でない場合（ステップＳ２３０４：Ｎｏ、ステップＳ２３０５：Ｎｏ）、車載器１０２は、サーバからの返信メッセージが改ざんされていることを出力する（ステップＳ２３０７）。ステップＳ２３０６、またはステップＳ２３０７の実行終了後、車載器１０２は、車載器による端末改ざん検出処理を終了する。車載器によるサーバからの返信メッセージに対する改ざん検出処理を実行することにより、通信システム１００は、サーバからの返信メッセージが改ざんされたか否かを判断することができる。
【０１２６】
図２４は、サーバによるメッセージ処理手順の一例を示すフローチャートである。サーバによるメッセージ処理は、利用者端末２０１から受信したＥＣＵ情報登録要求メッセージに対する処理である。サーバ１０１は、サーバ位置付け管理テーブル５０１から初期共有済世代数、世代番号最大値、１世代有効期間、暗号方式を読み込む（ステップＳ２４０１）。次に、サーバ１０１は、利用者端末２０１からＥＣＵ情報登録要求メッセージを受け付ける（ステップＳ２４０２）。
【０１２７】
続けて、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤに対する処理の排他区間を開始する（ステップＳ２４０３）。次に、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、受信したＥＣＵ情報登録要求メッセージの端末ＩＤ＿平文フィールドと、受信したＥＣＵ情報登録要求メッセージの現使用世代番号＿平文フィールドと同一の値を有する第１のレコードを検索する（ステップＳ２４０４）。続けて、サーバ１０１は、サーバ位置付け管理テーブル５０１内の、受信したＥＣＵ情報登録要求メッセージの端末ＩＤ＿平文と同一の値を有する第２のレコードを検索する（ステップＳ２４０５）。
【０１２８】
次に、サーバ１０１は、第１および第２のレコードが存在するか否かを判断する（ステップＳ２４０６）。第１および第２のレコードが存在する場合（ステップＳ２４０６：Ｙｅｓ）、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの現使用世代番号＿平文フィールドの値が、第２のレコードの現使用世代番号フィールドの値と同一か否かを判断する（ステップＳ２４０７）。異なる場合（ステップＳ２４０７：Ｎｏ）、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤフィールドの値と現使用世代番号＿平文フィールドの値を指定して、サーバ改ざん検出処理を実行する（ステップＳ２４０８）。サーバ改ざん検出処理の詳細は、図３１にて後述する。
【０１２９】
ステップＳ２４０８の実行終了後、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージが改ざんされていると検出されたか否かを判断する（ステップＳ２４０９）。改ざんされていない場合（ステップＳ２４０９：Ｎｏ）、サーバ１０１は、変更後世代番号設定メッセージ送信処理を実行する（ステップＳ２４１０）。
【０１３０】
同一である場合（ステップＳ２４０７：Ｙｅｓ）、サーバ１０１は、第２のレコードの端末ＩＤフィールドの値と現使用世代番号フィールドの値を指定して、サーバ改ざん検出処理を実行する（ステップＳ２４１１）。次に、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージが改ざんされていると検出されたか否かを判断する（ステップＳ２４１２）。改ざんされていない場合（ステップＳ２４１２：Ｎｏ）、サーバ１０１は、通常メッセージ処理を実行する（ステップＳ２４１３）。
【０１３１】
第１または第２のレコードが存在しない場合（ステップＳ２４０６：Ｎｏ）、または改ざんされていると検出した場合（ステップＳ２４０９：Ｙｅｓ、ステップＳ２４１２：Ｙｅｓ）、サーバ１０１は、エラーを示すメッセージを利用者端末２０１に送信する（ステップＳ２４１４）。
【０１３２】
ステップＳ２４１０、ステップＳ２４１３、またはステップＳ２４１４のいずれかの処理を実行終了後、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤに対する処理の排他区間を終了する（ステップＳ２４１５）。ステップＳ２４１５の実行終了後、サーバ１０１は、ステップＳ２４０２の処理に移行する。サーバによるメッセージ処理を実行することにより、通信システム１００は、共通鍵を用いて車載器１０２と通信できる。
【０１３３】
図２５は、サーバによる通常メッセージ処理手順の一例を示すフローチャートである。サーバによる通常メッセージ処理は、ＥＣＵ情報登録要求メッセージが改ざんされていなく、かつ、サーバ１０１の現使用世代番号で指定される鍵で暗号化されたＥＣＵ情報登録要求メッセージに対する処理である。
【０１３４】
なお、図２５〜図３１において、サーバ基盤データ管理テーブル４０１内のレコードを検索する処理については、受信したＥＣＵ情報登録要求メッセージと端末ＩＤフィールドの値が同一であるかという条件が付与されるため、記述を省略する。
【０１３５】
サーバ１０１は、利用者端末２０１からの要求に応じた処理を実行し、返信データを作成する（ステップＳ２５０１）。返信データとは、利用者端末２０１からの要求に応じた処理の戻り値となるデータである。たとえば、ＥＣＵ情報登録要求を利用者端末２０１から受け付けていた場合、返信データは、たとえば、登録成功、登録失敗といった値となる。
【０１３６】
次に、サーバ１０１は、第１のレコードの新規世代番号フィールドが０か否かを判断する（ステップＳ２５０２）。０である場合（ステップＳ２５０２：Ｙｅｓ）、サーバ１０１は、新規世代番号設定処理を実行する（ステップＳ２５０３）。新規世代番号設定処理は、図２６にて後述する。ステップＳ２５０３の処理終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。
【０１３７】
０でない場合（ステップＳ２５０２：Ｎｏ）、サーバ１０１は、現在時刻が、第１のレコードの適用開始時刻＋１世代有効期間より大きいか否かを判断する（ステップＳ２５０４）。大きい場合（ステップＳ２５０４：Ｙｅｓ）、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号フィールドの値が第２のレコードの現使用世代番号以外であり、かつ、共有フラグフィールドの値が完了となる第３のレコードを検索する（ステップＳ２５０５）。
【０１３８】
次に、サーバ１０１は、第３のレコードの切替前世代番号フィールドに、第２のレコードの現使用世代番号フィールドの値を設定する（ステップＳ２５０６）。続けて、サーバ１０１は、第２のレコードの現使用世代番号フィールドに、第３のレコードの世代番号フィールドの値を設定する（ステップＳ２５０７）。次に、サーバ１０１は、変更後世代番号設定メッセージ送信処理を実行する（ステップＳ２５０８）。変更後世代番号設定メッセージ送信処理の詳細は、図２８にて後述する。ステップＳ２５０８の処理終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。
【０１３９】
以下となる場合（ステップＳ２５０４：Ｎｏ）、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの共有済世代番号フィールドの値が０以外であり、受信したＥＣＵ情報登録要求メッセージの共有済世代番号フィールドの値と第１のレコードの新規世代番号の値が一致するか否かを判断する（ステップＳ２５０９）。一致する場合（ステップＳ２５０９：Ｙｅｓ）、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号フィールドの値がＥＣＵ情報登録要求メッセージの共有済世代番号フィールドの値と同一となるレコードの共有フラグフィールドの値を、完了に設定する（ステップＳ２５１０）。なお、ステップＳ２５０９：Ｙｅｓとなる場合、ＥＣＵ情報登録要求メッセージの新規世代番号フィールドの値が示す世代番号で指定される基盤データが、サーバ１０１と車載器１０２で共有できたことを示す。
【０１４０】
次に、サーバ１０１は、返信メッセージ送信処理を実行する（ステップＳ２５１１）。返信メッセージ送信処理の詳細は、図３０にて後述する。ステップＳ２５１１の処理終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。
【０１４１】
一致しない場合（ステップＳ２５０９：Ｎｏ）、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、第１のレコードの新規世代番号フィールドの値と同一の値が世代番号フィールドに設定された第４のレコードを検索する（ステップＳ２５１２）。なお、ステップＳ２５０９：Ｎｏとなる状態とは、ＥＣＵ情報登録要求メッセージの共有済世代番号が設定されていない状態である。このような状態となるケースとしては、たとえば、サーバ１０１から送信した新規世代番号の基盤データが車載器１０２にまだ届いていないときである。したがって、サーバ１０１は、新規世代番号の基盤データを再送する。
【０１４２】
次に、サーバ１０１は、第４のレコードを用いて、新規世代番号設定メッセージ送信処理を実行する（ステップＳ２５１３）。新規世代番号設定メッセージ送信処理の詳細は、図２９にて後述する。ステップＳ２５１３の実行終了後、サーバ１０１は、サーバによる通常メッセージ処理を終了する。サーバによる通常メッセージ処理を実行することにより、通信システム１００は、返信メッセージが改ざんされていなく、かつ、サーバ１０１の現使用世代番号で指定される鍵で暗号化された返信メッセージに対する処理を行える。
【０１４３】
図２６は、サーバによる新規世代番号設定処理手順の一例を示すフローチャートである。サーバによる新規世代番号設定処理は、サーバ基盤データ管理テーブル４０１に、新たな基盤データを設定する処理である。
【０１４４】
サーバ１０１は、第１のレコードの適用開始時刻フィールドに、現在時刻を設定する（ステップＳ２６０１）。次に、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、第１のレコードの切替前世代番号フィールドの値と同一の値が世代番号フィールドに設定された第５のレコードを特定する（ステップＳ２６０２）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、第５のレコードの新規世代番号フィールドの値と同一の値が世代番号フィールドに設定された第６のレコードを特定する（ステップＳ２６０３）。
【０１４５】
次に、サーバ１０１は、第６のレコードの共有フラグフィールドが未完か否かを判断する（ステップＳ２６０４）。未完である場合（ステップＳ２６０４：Ｙｅｓ）、サーバ１０１は、第６のレコードを処理対象として基盤データ生成処理を実行する（ステップＳ２６０５）。基盤データ生成処理の詳細は、図２７にて後述する。ステップＳ２６０５の実行終了後、または、完了である場合（ステップＳ２６０４：Ｎｏ）、サーバ１０１は、第５のレコードの共有フラグフィールドを未完に設定する（ステップＳ２６０６）。
【０１４６】
次に、サーバ１０１は、第５のレコードを処理対象として基盤データ生成処理を実行する（ステップＳ２６０７）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、共有フラグフィールドが未完に設定された第７のレコードを検索する（ステップＳ２６０８）。次に、サーバ１０１は、第７のレコードの世代番号フィールドの値を、第１のレコードの新規世代番号フィールドに設定する（ステップＳ２６０９）。続けて、サーバ１０１は、第７のレコードを用いて、新規世代番号設定メッセージ送信処理を実行する（ステップＳ２６１０）。ステップＳ２６１０の実行終了後、サーバ１０１は、サーバによる新規世代番号設定処理を終了する。サーバによる新規世代番号設定処理を実行することにより、通信システム１００は、有効期間が終了し、用いられなくなった基盤データを消去して、新たな基盤データを用意することになるため、限られたメモリ領域の範囲で、新たな基盤データを次々用意できる。
【０１４７】
図２７は、サーバによる基盤データ生成処理手順の一例を示すフローチャートである。サーバによる基盤データ生成処理は、基盤データを生成する処理である。サーバ１０１は、対象レコードの適用開始時刻、新規世代番号、切替前世代番号の各フィールドの値を消去する（ステップＳ２７０１）。次に、サーバ１０１は、新たな乱数から生成した基盤データを取得する（ステップＳ２７０２）。続けて、サーバ１０１は、対象レコードの基盤データフィールドに、取得した基盤データを格納する（ステップＳ２７０３）。続けて、サーバ１０１は、対象レコードの基盤データ長フィールドに、取得した基盤データのデータサイズを設定する（ステップＳ２７０４）。ステップＳ２７０４の実行終了後、サーバ１０１は、サーバによる基盤データ生成処理を終了する。サーバによる基盤データ生成処理を実行することにより、通信システム１００は、新たな基盤データを用意することができる。
【０１４８】
図２８は、サーバによる変更後世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。サーバによる変更後世代番号設定メッセージ送信処理は、変更後世代番号設定メッセージを生成し、車載器１０２に送信する処理である。サーバ１０１は、返信メッセージのメッセージ送信時刻フィールドに、現在時刻を設定する（ステップＳ２８０１）。次に、サーバ１０１は、返信メッセージの現使用世代番号フィールドに、受信したメッセージの現使用世代番号＿平文フィールドの値を設定する（ステップＳ２８０２）。なお、サーバ１０１は、返信メッセージ内の、メッセージ送信時刻＿平文フィールドと、現使用世代番号＿平文フィールドとについて、メッセージ送信時刻フィールドと現使用世代番号フィールドとの値を設定する。
【０１４９】
続けて、サーバ１０１は、返信メッセージの変更後世代番号フィールドに、第２のレコードの現使用世代番号フィールドの値を設定する（ステップＳ２８０３）。次に、サーバ１０１は、返信メッセージの新規世代番号フィールドに、０を設定する（ステップＳ２８０４）。続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、受信したメッセージの現使用世代番号＿平文フィールドの値と同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ２８０５）。次に、サーバ１０１は、選択したレコードの基盤データフィールドの値から、共通鍵を生成する（ステップＳ２８０６）。
【０１５０】
続けて、サーバ１０１は、生成した共通鍵を用いて、返信メッセージを暗号化する（ステップＳ２８０７）。次に、サーバ１０１は、暗号化した返信メッセージを利用者端末２０１に送信する（ステップＳ２８０８）。ステップＳ２８０８の実行終了後、通信システム１００は、変更後世代番号設定メッセージを車載器１０２に送信することができる。
【０１５１】
図２９は、サーバによる新規世代番号設定メッセージ送信処理手順の一例を示すフローチャートである。サーバによる新規世代番号設定メッセージ送信処理は、新規世代番号設定メッセージを生成し、車載器１０２に送信する処理である。また、図２９のステップＳ２９０１、ステップＳ２９０２、ステップＳ２９０８〜ステップＳ２９１０は、ステップＳ２８０１、ステップＳ２８０２、ステップＳ２８０６〜ステップＳ２８０８と同一の処理であるため、説明を省略する。
【０１５２】
ステップＳ２９０２の実行終了後、サーバ１０１は、返信メッセージの変更後世代番号フィールドに、０を設定する（ステップＳ２９０３）。次に、サーバ１０１は、返信メッセージの新規世代番号フィールドに、対象レコードの世代番号の値を設定する（ステップＳ２９０４）。続けて、サーバ１０１は、返信メッセージの新規世代番号基盤データ長フィールドに、対象レコードの基盤データ長の値を設定する（ステップＳ２９０５）。次に、サーバ１０１は、返信メッセージの新規世代番号基盤データフィールドに、対象レコードの基盤データの値を設定する（ステップＳ２９０６）。
【０１５３】
続けて、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、サーバ位置付け管理テーブル５０１の現使用世代番号フィールドの値と同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ２９０７）。ステップＳ２９０７の実行終了後、サーバ１０１は、ステップＳ２９０８の処理を実行する。サーバによる新規世代番号設定メッセージ送信処理を実行することにより、通信システム１００は、新規世代番号設定メッセージを車載器１０２に送信することができる。
【０１５４】
図３０は、サーバによる返信メッセージ送信処理手順の一例を示すフローチャートである。サーバによる返信メッセージ送信処理は、返信メッセージを生成し、車載器１０２に送信する処理である。また、図３０のステップＳ３００１、ステップＳ３００２、ステップＳ３００５〜ステップＳ３００７は、ステップＳ２８０１、ステップＳ２８０２、ステップＳ２８０６〜ステップＳ２８０８と同一の処理であるため、説明を省略する。
【０１５５】
ステップＳ３００２の実行終了後、サーバ１０１は、返信メッセージの変更後世代番号と、新規世代番号フィールドに、０を設定する（ステップＳ３００３）。次に、サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、受信したメッセージの現使用世代番号＿平文フィールドの値と同一の値が世代番号フィールドに設定されたレコードを選択する（ステップＳ３００４）。ステップＳ３００４の終了後、サーバ１０１は、ステップＳ３００５の処理を実行する。サーバによる返信メッセージ送信処理を実行することにより、通信システム１００は、返信メッセージを車載器１０２に送信することができる。
【０１５６】
図３１は、サーバによるサーバ改ざん検出処理手順の一例を示すフローチャートである。サーバによるサーバ改ざん検出処理は、ＥＣＵ情報登録要求メッセージの改ざんを検出する処理である。また、図３１のステップＳ３１０２〜ステップＳ３１０５、ステップＳ３１０７、ステップＳ３１０８は、ステップＳ２３０２〜ステップＳ２３０７と比較すると、実行主体が車載器１０２からサーバ１０１になり、処理内容は同一であるため、説明を省略する。
【０１５７】
サーバ１０１は、サーバ基盤データ管理テーブル４０１内の、世代番号と同一の値が世代番号フィールドに設定されているレコードを検索する（ステップＳ３１０１）。ステップＳ３１０１の実行終了後、サーバ１０１は、ステップＳ３１０２の処理を実行する。
【０１５８】
ステップＳ３１０５：Ｙｅｓとなった場合、サーバ１０１は、受信したＥＣＵ情報登録要求メッセージの端末ＩＤフィールド＿平文と、復号した端末ＩＤフィールドの値が同一か否かを判断する（ステップＳ３１０６）。同一である場合（ステップＳ３１０６：Ｙｅｓ）、サーバ１０１は、ステップＳ３１０７の処理を実行する。同一でない場合（ステップＳ３１０６：Ｎｏ）、サーバ１０１は、ステップＳ３１０８の処理を実行する。サーバによる端末改ざん検出処理を実行することにより、通信システム１００は、ＥＣＵ情報登録要求メッセージが改ざんされたか否かを判断することができる。
【０１５９】
以上説明したように、サーバ１０１によれば、通信先からの暗号文の受信の度に、いずれかの鍵の次の鍵が無ければ次の鍵を設定して次の鍵をいずれかの鍵で暗号化して送信する。これにより、通信システム１００は、１度のみ暗号化に使われたいずれかの鍵で次の鍵を暗号化するため、安全性を向上できる。たとえば、いずれかの鍵が有効でなくなった場合に、いずれかの鍵を用いて暗号化して次の鍵を送信すると、既にいずれかの鍵が第３者に導出されている場合、次の鍵も第３者が取得することができてしまうことになる。本実施の形態にかかる通信方法では、初めて暗号化に用いられた鍵にて、次の鍵を暗号化して送信するため、第３者によって導出されている可能性を小さくすることができるため、安全性を向上できる。
【０１６０】
また、サーバ１０１によれば、いずれかの鍵が有効でない場合に、次に用いる鍵の識別情報を、いずれかの鍵を用いて暗号化して車載器１０２に送信してもよい。これにより、次に用いる鍵は事前に車載器１０２に送信してあるため、サーバ１０１が次に用いる鍵に切り替える際、次に用いる鍵を送信しなくともよくなり、通信システム１００は、通信の安全性を向上できる。
【０１６１】
また、サーバ１０１によれば、次に用いる鍵の識別情報が記憶されていない場合、前に用いられた前の鍵を特定し、サーバ基盤データ管理テーブル４０１が記憶している複数の鍵のうちの、前の鍵とは異なる鍵を、次の鍵として取得してもよい。これにより、サーバ１０１が過去に用いられた鍵をもう一度暗号化に用いることがなくなり、通信システム１００は、通信の安全性を向上できる。
【０１６２】
また、サーバ１０１によれば、次に用いる鍵の識別情報が記憶されていない場合、前に用いられた前の鍵と前の鍵の識別情報をサーバ基盤データ管理テーブル４０１から削除してもよい。これにより、サーバ１０１は、鍵を記憶する記憶領域を削減できる。また、サーバ１０１は、鍵を検索する場合、検索対象となるレコード数が減少するため、検索にかかる処理時間を短縮することができる。
【０１６３】
また、サーバ１０１は、共通鍵が初めて暗号化に用いられたか否かを、次に用いる鍵の識別情報が記憶されているか否かで判断しているため、共通鍵が何回用いられたか計数しなくてもよい。また、サーバ１０１は、共通鍵が用いられた回数を計数し、特定の回数になったら次に用いる鍵を取得してもよい。また、サーバ１０１は、特定の回数を、鍵ごとに変えてもよい。
【０１６４】
また、共通鍵暗号方式以外の暗号方式として、公開鍵暗号方式もある。しかし、公開鍵暗号方式は、暗号処理のオーバーヘッドが大きいため、車載器１０２のような処理能力が低い装置では、暗号処理に時間がかかってしまう。本実施の形態にかかる通信方法は、共通鍵暗号方式であるため、車載器１０２のような処理能力が低い装置でも、短い処理時間で暗号処理を実行できる。
【０１６５】
また、本実施の形態にかかる通信システム１００は、共通鍵そのものは送信せず、共通鍵の生成元となる基盤データをやり取りする。したがって、第３者が基盤データを導出したとしても、第３者が基盤データから共通鍵を生成する方法が特定できなければ、通信システム１００は、通信の安全性を維持できる。
【０１６６】
また、本実施の形態にかかる通信システム１００は、自動車のＥＣＵ情報のやり取り以外にも、家電機器の情報や、医療器具の情報、または消費者に利用されている機器の動作上の情報をやり取りする際に適用することができる。また、本実施の形態にかかる通信システム１００は、利用者端末２０１を介さないシステムであってもよい。
【０１６７】
なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１６８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６９】
（付記１）コンピュータに、
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行させることを特徴とする通信プログラム。
【０１７０】
（付記２）前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されている場合、前記いずれかの鍵が最初に用いられてからの経過時間または前記いずれかの鍵が用いられた回数に基づいて、前記いずれかの鍵が有効か否かを判断し、
前記いずれかの鍵が有効でない場合、前記次に用いる鍵の識別情報を、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記次に用いる鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行させることを特徴とする付記１に記載の通信プログラム。
【０１７１】
（付記３）前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部の記憶内容に基づいて、前記いずれかの鍵の前に前記通信先装置が用いた前の鍵を特定する処理を実行させ、
前記取得する処理は、
前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵および前記特定した鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得することを特徴とする付記１または２に記載の通信プログラム。
【０１７２】
（付記４）前記コンピュータに、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部の記憶内容に基づいて、前記いずれかの鍵の前に前記通信先装置が用いた前の鍵を特定し、
前記記憶部に記憶されている前記複数の鍵のうちの、特定した前記前の鍵と前記前の鍵の識別情報とを削除する処理を実行させ、
前記取得する処理は、
削除した削除後の前記記憶部に記憶されている鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得することを特徴とする付記１〜３のいずれか一つに記載の通信プログラム。
【０１７３】
（付記５）共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理をコンピュータに実行させる通信プログラムを記録したことを特徴とする記録媒体。
【０１７４】
（付記６）共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付ける受付部と、
前記受付部によって受け付けられた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する判定部と、
前記判定部によって前記次に用いる鍵の識別情報が記憶されていないと判定された場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得する取得部と、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、前記取得部によって取得された前記他の鍵の識別情報を格納する格納部と、
前記取得部によって取得された前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化する暗号化部と、
前記暗号化部によって暗号化された前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する送信制御部と、
を有することを特徴とする通信装置。
【０１７５】
（付記７）共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付ける受付部と、
前記受付部によって受け付けられた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定する判定部と、
前記判定部によって前記次に用いる鍵の識別情報が記憶されていないと判定された場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得する取得部と、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、前記取得部によって取得された前記他の鍵の識別情報を格納する格納部と、
前記取得部によって取得された前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化する暗号化部と、
前記暗号化部によって暗号化された前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する送信制御部と、
を有するコンピュータを含むことを特徴とする通信装置。
【０１７６】
（付記８）コンピュータが、
共通鍵暗号方式に用いられる複数の鍵のうちのいずれかの鍵を用いて暗号化された暗号化データと前記いずれかの鍵の識別情報とを通信先装置から受け付け、
受け付けた前記いずれかの鍵の識別情報から、前記複数の鍵の各々の鍵ごとに前記各々の鍵と前記各々の鍵の識別情報とを記憶する記憶部を参照して、前記いずれかの鍵の識別情報に対応付けて前記いずれかの鍵の次に用いる鍵の識別情報が記憶されているか否かを判定し、
前記次に用いる鍵の識別情報が記憶されていない場合、前記記憶部に記憶されている前記複数の鍵のうちの前記いずれかの鍵とは異なる他の鍵と前記他の鍵の識別情報とを取得し、
前記記憶部に記憶されている前記いずれかの鍵の識別情報に対応付けて、取得した前記他の鍵の識別情報を格納し、
取得した前記他の鍵と前記他の鍵の識別情報とを、前記記憶部に記憶されている前記いずれかの鍵を用いて暗号化し、
暗号化した前記他の鍵と、暗号化した前記他の鍵の識別情報と、前記いずれかの鍵の識別情報とを前記通信先装置に送信する、
処理を実行することを特徴とする通信方法。
【符号の説明】
【０１７７】
１００  通信システム
１０１  サーバ
１０２  車載器
４０１  サーバ基盤データ管理テーブル
１２０１  受付部
１２０２  判定部
１２０３  特定部
１２０４  削除部
１２０５  取得部
１２０６  判断部
１２０７  格納部
１２０８  暗号化部
１２０９  送信制御部
１２１０  通信部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２０
【補正方法】変更
【補正の内容】
【図２０】
2014002280.tif 000034
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図２４
【補正方法】変更
【補正の内容】
【図２４】
2014002280.tif 000035
【国際調査報告】
2014002280.tif 000036
2014002280.tif 000037
2014002280.tif 000038
2014002280.tif 000039