(57)【特許請求の範囲】
【請求項１】
暗号鍵を送信する鍵配信ＥＣＵと、前記暗号鍵を受信する鍵受信ＥＣＵと、を有する暗号鍵配信システムにおいて、
前記鍵配信ＥＣＵは、
前記鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに、暗号鍵を送信する送信部と、
自装置内に保持する共通鍵と、前記暗号鍵の送信先である前記複数の鍵受信ＥＣＵの識別子とから前記暗号鍵の検証データを算出して、前記複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶する算出部と
を有し、
前記複数の鍵受信ＥＣＵは、受信した前記暗号鍵を自装置内に記録し、受信した前記暗号鍵の検証データを自装置内に保持する前記共通鍵と同一の共通鍵と自装置の識別子とから算出して前記鍵配信ＥＣＵへ送信する送信部を有し、
前記鍵配信ＥＣＵは、前記複数の鍵受信ＥＣＵから送信された検証データと、記憶された前記検証データと、が一致するかを判定した結果に基づいて、送信された前記検証データが、前記鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定することにより該鍵受信ＥＣＵへの前記暗号鍵の送信完了を判定し、前記複数の鍵受信ＥＣＵから送信された検証データと、記憶された前記検証データとが一致すると判定した場合に、前記検証データ記憶部から一致した前記検証データを削除する判定部をさらに有する
ことを特徴とする暗号鍵配信システム。
【請求項２】
前記鍵配信ＥＣＵの判定部は、前記検証データ記憶部に記憶された前記検証データが全て削除されたと判定した場合に、前記鍵要求を送信した複数の鍵受信ＥＣＵにおいて前記暗号鍵の受信が完了したと判定することを特徴とする請求項１に記載の暗号鍵配信システム。
【請求項３】
前記鍵受信ＥＣＵの送信部は、前記暗号鍵のデータセットを前記鍵配信ＥＣＵに送信しないことを特徴とする請求項２に記載の暗号鍵配信システム。
【請求項４】
暗号鍵を鍵受信ＥＣＵに送信する鍵配信ＥＣＵにおいて、
前記鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに前記暗号鍵を送信する送信部と、
自装置内に保持する共通鍵と、前記暗号鍵の送信先である前記複数の鍵受信ＥＣＵの識別子とから前記暗号鍵の検証データを算出して、前記複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶する算出部と、
前記複数の鍵受信ＥＣＵから、前記鍵受信ＥＣＵが保持する前記共通鍵と同一の共通鍵と前記鍵受信ＥＣＵの識別子とから算出される、送信した前記暗号鍵の検証データを受信する受信部と、
受信した前記検証データと、記憶された前記検証データとが一致するかを判定した結果に基づいて、受信した前記検証データが、前記鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定することにより該鍵受信ＥＣＵへの前記暗号鍵の送信完了を判定し、受信した前記検証データと、記憶された前記検証データとが一致すると判定した場合に、前記検証データ記憶部から一致した前記検証データを削除する判定部と
を有することを特徴とする鍵配信ＥＣＵ。
【請求項５】
暗号鍵を鍵受信ＥＣＵに送信する鍵配信ＥＣＵに、
前記鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに前記暗号鍵を送信し、
自装置内に保持する共通鍵と、前記暗号鍵の送信先である前記複数の鍵受信ＥＣＵの識別子とから前記暗号鍵の検証データを算出して、前記複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶し、
前記複数の鍵受信ＥＣＵから、前記鍵受信ＥＣＵが保持する前記共通鍵と同一の共通鍵と前記鍵受信ＥＣＵの識別子とから算出される、送信した前記暗号鍵の検証データを受信し、
受信した前記検証データと、記憶された前記検証データとが一致するかを判定した結果に基づいて、受信した前記検証データが、前記鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定することにより該鍵受信ＥＣＵへの前記暗号鍵の送信完了を判定し、受信した前記検証データと、記憶された前記検証データとが一致すると判定した場合に、前記検証データ記憶部から一致した前記検証データを削除する
処理を実行させることを特徴とする鍵配信プログラム。
【請求項６】
暗号鍵を送信する鍵配信ＥＣＵと、前記暗号鍵を受信する鍵受信ＥＣＵと、を有する暗号鍵配信システムにおいて、
前記鍵配信ＥＣＵは、
前記鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに、暗号鍵を送信し、
自装置内に保持する共通鍵と、前記暗号鍵の送信先である前記複数の鍵受信ＥＣＵの識別子とから前記暗号鍵の検証データを算出して、前記複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶する
処理を実行し、
前記複数の鍵受信ＥＣＵは、受信した前記暗号鍵を自装置内に記録し、受信した前記暗号鍵の検証データを自装置内に保持する前記共通鍵と同一の共通鍵と自装置の識別子とから算出して前記鍵配信ＥＣＵへ送信し、
前記鍵配信ＥＣＵは、前記複数の鍵受信ＥＣＵから送信された検証データと、記憶された前記検証データと、が一致するかを判定した結果に基づいて、送信された前記検証データが、前記鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定することにより該鍵受信ＥＣＵへの前記暗号鍵の送信完了を判定し、前記複数の鍵受信ＥＣＵから送信された検証データと、記憶された前記検証データとが一致すると判定した場合に、前記検証データ記憶部から一致した前記検証データを削除する
処理を実行することを特徴とする暗号鍵配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号鍵配信システム、鍵配信ＥＣＵ、鍵配信プログラム、及び暗号鍵配信方法に関する。
【背景技術】
【０００２】
自動車等に搭載される、ＣＡＮ（Controller  Area  Network）を通じて接続された複数のＥＣＵ（Electronic  Control  Unit）の間で、セキュアなデータ転送を行う技術が知られている。例えば、送信側ＥＣＵが、メッセージのデータフィールド及びメッセージＩＤと、メッセージが送信された回数を示すカウント値とから生成されるＭＡＣ（Message  Authentication  Code）を送信する技術が知られている。【０００３】
また、ＥＣＵ間で暗号鍵を共有する技術も知られている。暗号鍵を更新する場合、暗号鍵を配信するマスタＥＣＵは、鍵更新のターゲットＥＣＵのＩＤ（Identifier）であるＵＩＤ及び鍵のスロットを示すメッセージであるＭ１を送信する。また、マスタＥＣＵは、リプレイ防止カウンタと各種フラグ、及び暗号化した新しい鍵を暗号化で構成されるメッセージであるＭ２と、Ｍ１、Ｍ２に対して演算されたＭＡＣであるＭ３とをさらに送信する。【０００４】
この場合において、暗号鍵を受信するターゲットＥＣＵは、Ｍ１、Ｍ２及びＭ３を受信すると、まずＭ３を用いてＭ１及びＭ２のＭＡＣ検証を行う。ＭＡＣ検証の結果がＯＫであった場合、ターゲットＥＣＵは、暗号鍵を復号して、暗号鍵のスロットに記憶する。また、ターゲットＥＣＵは、自装置のＵＩＤと、暗号鍵のスロットと、暗号化したリプレイ防止カウンタで構成されるメッセージであるＭ４を生成し、Ｍ４のＭＡＣであるＭ５と併せてマスタＥＣＵに送信する。マスタＭＣＵは、受信したＭ５を用いて、受信したＭ４のＭＡＣ検証を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−０９８７１９号公報
【非特許文献】
【０００６】
【非特許文献１】菅島、岡、ヴィオム，「セキュアかつ効率的な車載鍵管理の提案」電子情報通信学会論文２０１６
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、上記技術においては、暗号鍵を受信したことを示す情報はデータサイズが大きいため、鍵更新に要する通信量が増大する場合がある。例えば、上記技術において、ターゲットＥＣＵからマスタＥＣＵに送信されるＭ４は３２バイト、Ｍ５は１６バイトであり、ＣＡＮの１パケットで送信できるサイズである８バイトよりも大きい。【０００８】
一つの側面では、鍵更新に要するデータ量を削減できる暗号鍵配信システム、鍵配信ＥＣＵ、鍵配信プログラム、及び暗号鍵配信方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一つの態様において、暗号鍵を送信する鍵配信ＥＣＵと、暗号鍵を受信する鍵受信ＥＣＵとを有する暗号鍵配信システムにおいて、鍵配信ＥＣＵは、鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに、暗号鍵を送信する。また、鍵配信ＥＣＵは、自装置内に保持する共通鍵と、暗号鍵の送信先である複数の鍵受信ＥＣＵの識別子とから暗号鍵の検証データを算出して、複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶する。また、複数の鍵受信ＥＣＵは、受信した暗号鍵を自装置内に記録し、受信した暗号鍵の検証データを自装置内に保持する共通鍵と自装置の識別子とから算出して鍵配信ＥＣＵへ送信する。そして、鍵配信ＥＣＵは、複数の鍵受信ＥＣＵから送信された検証データと、記憶された検証データと、が一致するかを判定した結果に基づいて、送信された検証データが、鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定することにより該鍵受信ＥＣＵへの暗号鍵の送信完了を判定し、複数の鍵受信ＥＣＵから送信された検証データと、記憶された検証データとが一致すると判定した場合に、検証データ記憶部から一致した検証データを削除する。
【発明の効果】
【００１０】
一つの態様によれば、鍵更新に要するデータ量を削減できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１における暗号鍵配信システムの一例を示す図である。
【図２Ａ】図２Ａは、実施例１における暗号鍵配信処理の一例を示す図である。
【図２Ｂ】図２Ｂは、実施例１における暗号鍵配信処理の一例を示す図である。
【図２Ｃ】図２Ｃは、実施例１における暗号鍵配信処理の一例を示す図である。
【図２Ｄ】図２Ｄは、実施例１における暗号鍵配信処理の一例を示す図である。
【図２Ｅ】図２Ｅは、実施例１における暗号鍵配信処理の一例を示す図である。
【図２Ｆ】図２Ｆは、実施例１における暗号鍵配信処理の一例を示す図である。
【図３】図３は、実施例１における暗号鍵配信処理の一例を示すシーケンス図である。
【図４】図４は、実施例１における暗号鍵送信処理の一例を示すフローチャートである。
【図５】図５は、実施例１における暗号鍵受信処理の一例を示すフローチャートである。
【図６】図６は、実施例１における配信検証処理の一例を示すフローチャートである。
【図７】図７は、実施例１における総当たり比較処理の一例を示す図である。
【図８】図８は、ＥＣＵのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する暗号鍵配信システム、鍵配信ＥＣＵ、鍵配信プログラム、及び暗号鍵配信方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【実施例１】
【００１３】
まず、本実施例における暗号鍵配信システムの一例について、図１を用いて説明する。図１は、実施例１における暗号鍵配信システムの一例を示す図である。図１に示すように、本実施例における暗号鍵配信システム１は、マスタＥＣＵ１００と、ターゲットＥＣＵ２００ａと、ターゲットＥＣＵ２００ｂと、ターゲットＥＣＵ２００ｃとを含む。なお、以下において、ターゲットＥＣＵ２００ａ、ターゲットＥＣＵ２００ｂ及びターゲットＥＣＵ２００ｃを区別せずに表現する場合に「ターゲットＥＣＵ２００」と表記する場合がある。マスタＥＣＵ１００と、ターゲットＥＣＵ２００とは、例えばＣＡＮなどのネットワークＮによって相互に通信可能に接続されている。【００１４】
本実施例におけるマスタＥＣＵ１００は、ターゲットＥＣＵに対して暗号鍵を配信する装置である。マスタＥＣＵ１００は、例えばプロセッサとメモリとを有するコンピュータにより実現できる。なお、マスタＥＣＵ１００は、鍵配信ＥＣＵの一例である。【００１５】
本実施例におけるターゲットＥＣＵ２００は、マスタＥＣＵ１００が配信した暗号鍵を受信する装置である。ターゲットＥＣＵ２００も、マスタＥＣＵ１００と同様に、例えばプロセッサとメモリとを有するコンピュータにより実現できる。図１に示すように、ターゲットＥＣＵ２００は、通信部２１０と、記憶部２２０と、制御部２３０とを有する。なお、ターゲットＥＣＵ２００は、鍵受信ＥＣＵの一例である。また、以下において、各ターゲットＥＣＵ２００の各機能ブロックを区別して表現する場合に、例えば「記憶部２２０ａ」、「記憶部２２０ｃ」と表記する場合がある。【００１６】
［暗号鍵配信処理］
次に、暗号鍵配信システム１において、マスタ鍵を配信する処理について、図２Ａ乃至図２Ｆを用いて説明する。図２Ａ乃至図２Ｆは、実施例１における暗号鍵配信処理の一例を示す図である。図２Ａに示すように、マスタＥＣＵ１００（MASTER  ＥＣＵ）は、ターゲットＥＣＵ２００ａ（ＥＣＵ  Ａ）、ターゲットＥＣＵ２００ｂ（ＥＣＵ  Ｂ）及びターゲットＥＣＵ２００ｃ（ＥＣＵ  Ｃ）と、ネットワークＮを通じて通信可能に接続されている。なお、マスタ鍵は、暗号鍵の一例である。【００１７】
なお、各ターゲットＥＣＵ２００には、ターゲットＥＣＵ２００を一意に識別するＩＤ（Identifier）であるＵＩＤが付与されている。例えば、図２Ａに示すように、ターゲットＥＣＵ２００ａのＵＩＤは「ＵＩＤ＿Ａ」であり、ターゲットＥＣＵ２００ｃのＵＩＤは「ＵＩＤ＿Ｃ」である。また、ＵＩＤは、例えば各ターゲットＥＣＵ２００の記憶部２２０ａ及び２２０ｃに記憶される。なお、ＵＩＤは、鍵受信ＥＣＵの識別子の一例である。【００１８】
また、各ターゲットＥＣＵ２００は、マスタＥＣＵ１００から配信されたマスタ鍵を、所定の鍵スロットに格納する。さらに、本実施例において、マスタＥＣＵ１００及びターゲットＥＣＵ２００は、再送攻撃を検知するための情報であるリプレイ用カウンタ値をそれぞれ格納する。【００１９】
まず、図２Ａに示すように、ターゲットＥＣＵ２００のうち、ターゲットＥＣＵ２００ａ及びターゲットＥＣＵ２００ｃの２つが、マスタＥＣＵ１００に対してマスタ鍵更新要求を送信する（１．マスタ鍵更新要求）。なお、図２Ａに示すように、ターゲットＥＣＵ２００ｂはマスタ鍵更新要求を送信しない。また、この場合において、マスタ鍵更新要求を送信するターゲットＥＣＵ２００と、マスタＥＣＵ１００とは、新しいマスタ鍵の配信に用いる仮マスタ鍵を予め共有する。なお、仮マスタ鍵は、共通鍵の一例である。【００２０】
マスタＥＣＵ１００は、マスタ鍵更新要求を受信すると、マスタ鍵更新要求を送信したターゲットＥＣＵ２００であるターゲットＥＣＵ２００ａ及びターゲットＥＣＵ２００ｃを特定する。次に、マスタＥＣＵ１００は、ターゲットＥＣＵ２００ａ及びターゲットＥＣＵ２００ｃのそれぞれについて、新しいマスタ鍵を生成する（２．新しいマスタ鍵生成）。なお、マスタＥＣＵ１００は、生成したメッセージ等を、ＥＣＵリスト格納部１２１に逐次記憶する。【００２１】
次に、マスタＥＣＵ１００は、マスタ鍵更新要求を送信したターゲットＥＣＵ２００のＵＩＤと、各ターゲットＥＣＵ２００の鍵スロットを用いて、メッセージＭ１を生成する。また、マスタＥＣＵ１００は、リプレイ用カウンタ値と、その他のマスタ鍵配信処理に用いる各種のフラグと、仮マスタ鍵で暗号化された新しいマスタ鍵とを用いて、メッセージＭ２を生成する（３．Ｍ１、Ｍ２生成）。メッセージＭ１は、例えば図２Ａに示す「★」印を付された情報を用いて生成される。また、メッセージＭ２は、例えば図２Ａに示す「●」印を付された情報を用いて生成される。【００２２】
図２Ｂに移って、マスタＥＣＵ１００は、メッセージＭ１とメッセージＭ２とを連結したデータＭ１＋Ｍ２のＭＡＣを生成する（４．Ｍ１＋Ｍ２のＭＡＣ生成（Ｍ３））。マスタＥＣＵ１００は、事前に保持する仮マスタ鍵であるMASTER_ECU_KEYを用いてＭＡＣを生成する。そして、マスタＥＣＵ１００は、生成したメッセージＭ１及びメッセージＭ２、並びに生成したＭＡＣであるＭ３（ＭＡＣ＿Ａ）をターゲットＥＣＵ２００ａに送信する（５．Ｍ１、Ｍ２、Ｍ３送信）。なお、以下においては、マスタＥＣＵ１００とターゲットＥＣＵ２００ａとの間の処理について説明するが、マスタＥＣＵ１００とターゲットＥＣＵ２００ｃとの間についても、同様の処理を行うものとする。【００２３】
図２Ｃに移って、マスタＥＣＵ１００は、自らが保持するターゲットＥＣＵ２００ａのＵＩＤ「ＵＩＤ＿Ａ」と「鍵スロットＡ」と「カウンタ値Ａ」とを用いて、ターゲットＥＣＵ２００ａに対応するＭ４を生成する。次に、マスタＥＣＵ１００は、MASTER_ECU_KEYを用いて、生成したＭ４のＭＡＣであるＭ５（ＭＡＣ＿Ａ）を生成する（６．Ｍ４のＭＡＣ生成（Ｍ５））。【００２４】
マスタＥＣＵ１００は、マスタ鍵更新要求を送信した全てのターゲットＥＣＵ２００について、同様にＭ５を生成し、生成した全てのＭ５を比較候補表格納部１２２に格納する（７．比較候補表生成）。【００２５】
次に、ターゲットＥＣＵ２００によるマスタ鍵受信処理について説明する。なお、以下においてはターゲットＥＣＵ２００ａにおける処理について説明するが、ターゲットＥＣＵ２００ｃについても同様の処理を行うものとする。また、マスタ鍵更新要求を送信していないターゲットＥＣＵ２００ｂは、マスタ鍵を受信しないため、同様の処理は行わない。【００２６】
まず、ターゲットＥＣＵ２００ａは、マスタＥＣＵ１００からＭ１、Ｍ２及びＭ３を受信すると、まず、Ｍ２に含まれるカウンタ値が正当であるかを検証する（８．カウンタ値検証）。カウンタ値が正当であることを検証した場合、ターゲットＥＣＵ２００は、受信したＭ１とＭ２とを連結したデータＭ１＋Ｍ２のＭＡＣであるＭ３（ＭＡＣ＿Ａ’）を生成する（９．Ｍ１＋Ｍ２のＭＡＣ生成）。なお、ターゲットＥＣＵ２００も、マスタＥＣＵ１００と同様に、事前に保持する仮マスタ鍵であるMASTER_ECU_KEYを用いて、ＭＡＣを生成する。【００２７】
図２Ｄに移って、ターゲットＥＣＵ２００ａは、マスタＥＣＵ１００から受信したＭ３（ＭＡＣ＿Ａ）と、生成したＭ３（ＭＡＣ＿Ａ’）とが一致するか否かを検証する（１０．生成したＭ３と、受信したＭ３とを検証）。Ｍ３（ＭＡＣ＿Ａ）とＭ３（ＭＡＣ＿Ａ’）とは、いずれも同一のMASTER_ECU_KEYを用いて生成されているため、２つのＭ３が一致しない場合、ターゲットＥＣＵ２００ａは、受信したＭ３が正当ではないことを検証できる。ターゲットＥＣＵ２００ａは、Ｍ３が正当であることを検証した場合、受信したＭ２を仮マスタ鍵で復号して、新しいマスタ鍵を鍵スロットＡに記憶する（１１．マスタ鍵格納（仮マスタ鍵でＭ２を復号））。【００２８】
図２Ｅに移って、ターゲットＥＣＵ２００ａは、自装置のＵＩＤである「ＵＩＤ＿Ａ」と、鍵スロットである「鍵スロットＡ」と、カウンタ値Ａとを用いて、メッセージＭ４を生成する。次に、ターゲットＥＣＵ２００ａは、MASTER_ECU_KEYを用いて、生成したＭ４のＭＡＣであるＭ５（ＭＡＣ＿Ａ’）を生成する（１２．Ｍ４のＭＡＣ生成（Ｍ５））。なお、メッセージＭ４は、暗号鍵のデータセットの一例であり、Ｍ５は暗号鍵の検証データの一例である。【００２９】
そして、ターゲットＥＣＵ２００ａは、Ｍ５だけをマスタＥＣＵ１００に送信する（１３．Ｍ５送信）。この際、ターゲットＥＣＵ２００ａは、Ｍ４は送信しない。【００３０】
図２Ｆに移って、Ｍ５を受信したマスタＥＣＵ１００は、受信したＭ５（ＭＡＣ＿Ａ’）をＥＣＵリスト格納部１２１に記憶する。このとき、マスタＥＣＵ１００は、メッセージＭ４をターゲットＥＣＵ２００から受信しないので、Ｍ５を送信したターゲットＥＣＵ２００がどのＵＩＤに対応するターゲットＥＣＵ２００であるかを特定できない。そこで、マスタＥＣＵ１００は、ターゲットＥＣＵ２００から受信したＭ５（ＭＡＣ＿Ａ’）と、比較候補表に格納されたＭ５のいずれかとが一致するか否かを検証する（１４．生成したＭ５と、受信したＭ５とを検証）。すなわち、マスタＥＣＵ１００は、受信したＭ５を、比較候補表格納部１２２に格納された比較候補表のＭ５と総当たり比較で比較する。【００３１】
受信したＭ５（ＭＡＣ＿Ａ’）と、比較候補表のＭ５（ＭＡＣ＿Ａ）とは、Ｍ３（ＭＡＣ＿Ａ）及びＭ３（ＭＡＣ＿Ａ’）と同様に、いずれも事前に保持するマスタ鍵であるMASTER_ECU_KEYを用いて生成されている。このため、マスタＥＣＵ１００は、受信したＭ５（ＭＡＣ＿Ａ’）と一致するＭ５（ＭＡＣ＿Ａ）が比較候補表に格納されていない場合、すなわち受信したＭ５が比較候補表のいずれのＭ５とも一致しない場合、受信したＭ５が正当ではないことを検証できる。【００３２】
マスタＥＣＵ１００は、受信したＭ５（ＭＡＣ＿Ａ’）と一致するＭ５（ＭＡＣ＿Ａ）が比較候補表に格納されている場合、すなわち受信したＭ５（ＭＡＣ＿Ａ’）が正当であることを検証した場合、比較候補表からＭ５（ＭＡＣ＿Ａ）を削除する。これにより、マスタＥＣＵ１００は、ターゲットＥＣＵ２００ａに対するマスタ鍵配信処理が正常に完了したことを確認できる（１５．検証されたＭ５を比較候補表から削除）。マスタＥＣＵ１００は、マスタ鍵更新要求を送信した全てのターゲットＥＣＵ２００から受信したＭ５が正当であることが検証されるまで、処理１４．及び１５．を繰り返す。すなわち、マスタＥＣＵ１００は、比較候補表に格納された全てのＭ５が削除された場合、処理を完了する。【００３３】
このように、本実施例における暗号鍵配信システムにおいて、ＣＡＮの暗号鍵更新の配信先ＥＣＵは、配信された暗号鍵に対応するデータセットを送信せず検証データのみを送信し、配信元ＥＣＵは受信した検証データを自ら保持する検証データと照合する。これにより、通信量を削減できる。【００３４】
［機能ブロック］
次に、図１に戻って、各装置の機能ブロックについて説明する。図１に示すように、マスタＥＣＵ１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。通信部１１０は、制御部１３０から出力されたデータを、ネットワークＮを通じてターゲットＥＣＵ２００に送信する。また、通信部１１０は、ネットワークＮを通じてターゲットＥＣＵ２００から受信したデータを、制御部１３０に出力する。【００３５】
記憶部１２０は、例えば制御部１３０が実行するプログラム、仮マスタ鍵などの各種データなどを記憶する。また、記憶部１２０は、ＥＣＵリスト格納部１２１、比較候補表格納部１２２及びログ格納部１２３を有する。記憶部１２０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。【００３６】
ＥＣＵリスト格納部１２１は、図２Ａに示すように、各ターゲットＥＣＵ２００に関する情報を記憶する。図２Ａに示すように、ＥＣＵリスト格納部１２１は、ターゲットＥＣＵ２００のＵＩＤと、鍵スロットに関する情報と、カウンタ値とを対応付けて記憶する。また、ＥＣＵリスト格納部１２１は、図２Ｅに示すように、各ターゲットＥＣＵ２００について、Ｍ３と、Ｍ５とをさらに記憶する。なお、図２Ａに示すように、ＥＣＵリスト格納部１２１は、マスタ鍵更新要求を送信していないターゲットＥＣＵ２００の情報を記憶してもよい。ＥＣＵリスト格納部１２１に記憶される情報は、後に説明する取得部１３１により事前に登録され、また取得部１３１及び後に説明する生成部１３２により順次更新される。【００３７】
比較候補表格納部１２２は、図２Ｅに示すように、マスタＥＣＵ１００が生成した、マスタ鍵更新要求を送信したターゲットＥＣＵ２００それぞれに対応するＭ５を記憶する。また、図２Ｆに示すように、比較候補表格納部１２２に記憶されたＭ５は、後に説明する検証部１３４が、受信したＭ５（ＭＡＣ＿Ａ’）が正当であることを検証した場合に削除される。比較候補表格納部１２２に記憶される情報は、後に説明する生成部１３２により登録され、また検証部１３４により順次削除される。【００３８】
ログ格納部１２３は、暗号鍵配信処理における各種のイベントに関する情報などのログを記憶する。例えば、ログ格納部１２３は、受信したＭ５の正当性の検証結果などを記憶する。ログ格納部１２３に記憶される情報は、例えば検証部１３４により登録される。ログ格納部１２３については、詳細な図示を省略する。【００３９】
図１に戻って、制御部１３０は、マスタＥＣＵ１００の全体的な処理を司る処理部であり、例えばプロセッサなどである。この制御部１３０は、取得部１３１、生成部１３２、暗号鍵出力部１３３及び検証部１３４を有する。なお、取得部１３１、生成部１３２、暗号鍵出力部１３３及び検証部１３４は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。【００４０】
取得部１３１は、通信部１１０を通じて、ターゲットＥＣＵ２００からマスタ鍵更新要求を受信し、生成部１３２に暗号鍵の生成指示を出力する。また、取得部１３１は、通信部１１０を通じて、ターゲットＥＣＵ２００からＭ５を受信し、検証部１３４に受信したＭ５の検証指示を出力する。【００４１】
生成部１３２は、取得部１３１から暗号鍵の生成指示の出力を受けると、暗号鍵を生成する。また、生成部１３２は、予めＥＣＵリスト格納部１２１に記憶されたターゲットＥＣＵ２００のＵＩＤ及び鍵スロットに関する情報を用いて、メッセージＭ１を生成する。生成部１３２は、仮マスタ鍵を用いてマスタ鍵を暗号化し、カウンタ値と、各種のフラグと、暗号化されたマスタ鍵とを用いて、メッセージＭ２を生成する。生成部１３２は、生成したＭ１とＭ２を連結したデータのＭＡＣであるＭ３を生成する。そして、生成部１３２は、生成したＭ１、Ｍ２及びＭ３を、暗号鍵出力部１３３に出力する。【００４２】
さらに、生成部１３２は、予めＥＣＵリスト格納部１２１に記憶されたターゲットＥＣＵ２００のＵＩＤ、鍵スロットに関する情報及びカウンタ値を用いて、ターゲットＥＣＵ２００に関するＭ４を生成する。そして、生成部１３２は、生成したＭ４のＭＡＣであるＭ５を生成し、比較候補表格納部１２２に記憶する。【００４３】
暗号鍵出力部１３３は、生成部１３２から出力されたＭ１、Ｍ２及びＭ３を、通信部１１０を通じて、ターゲットＥＣＵ２００に送信する。【００４４】
検証部１３４は、取得部１３１から検証指示の出力を受けると、受信したＭ５が、比較候補表格納部１２２に記憶されたＭ５のいずれかと一致するか否かを検証する。検証部１３４は、受信したＭ５が、比較候補表格納部１２２に記憶されたＭ５のいずれにも一致しない場合、受信したＭ５が正当ではないことを検証し、受信したＭ５を破棄する。検証部１３４は、受信したＭ５が、比較候補表格納部１２２に記憶されたＭ５のいずれに一致した場合、受信したＭ５が正当であることを検証し、比較候補表格納部１２２から受信したＭ５と一致するＭ５を削除する。なお、検証部１３４は、受信したＭ５の検証結果を、ログ格納部１２３に記憶する。【００４５】
次に、図１に示すように、ターゲットＥＣＵ２００は、通信部２１０と、記憶部２２０と、制御部２３０とを有する。通信部２１０は、制御部１３０から出力されたデータを、ネットワークＮを通じてマスタＥＣＵ１００に送信する。また、通信部２１０は、ネットワークＮを通じてマスタＥＣＵ１００から受信したデータを、制御部２３０に出力する。【００４６】
記憶部２２０は、例えば制御部２３０が実行するプログラム、仮マスタ鍵などの各種データなどを記憶する。また、記憶部２２０は、カウンタ２２１及び鍵スロット２２２を有する。記憶部２２０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。【００４７】
カウンタ２２１は、図２Ｃの符号２２１ａに示すように、再送攻撃を検知するための情報であるリプレイ用カウンタ値を記憶する。鍵スロット２２２は、図２Ｄの符号２２２ａに示すように、マスタＥＣＵ１００から配信されたマスタ鍵を記憶する。【００４８】
制御部２３０は、ターゲットＥＣＵ２００の全体的な処理を司る処理部であり、例えばプロセッサなどである。この制御部２３０は、出力部２３１、暗号鍵取得部２３２及び暗号鍵検証部２３３を有する。なお、出力部２３１、暗号鍵取得部２３２及び暗号鍵検証部２３３は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。【００４９】
出力部２３１は、通信部２１０を通じて、マスタＥＣＵ１００にマスタ鍵更新要求を送信する。出力部２３１は、例えば図示しないターゲットＥＣＵ２００のユーザによる指示があった、所定のイベントが発生した、又は所定の時間が経過したなどのタイミングで、マスタ鍵更新要求を出力する。また、出力部２３１は、通信部２１０を通じて、マスタＥＣＵ１００に、暗号鍵検証部２３３から出力されるＭ５を送信する。【００５０】
暗号鍵取得部２３２は、マスタＥＣＵ１００から送信されるＭ１、Ｍ２及びＭ３を、通信部２１０を通じて取得し、暗号鍵検証部２３３に出力する。【００５１】
暗号鍵検証部２３３は、暗号鍵取得部２３２からＭ１、Ｍ２及びＭ３の出力を受けると、Ｍ２を仮マスタ鍵で復号し、カウンタ２２１を参照して、カウンタ値が正当であるか検証する。暗号鍵検証部２３３は、カウンタ値が正当ではないことを検証した場合、受信したＭ１、Ｍ２及びＭ３を破棄する。【００５２】
暗号鍵検証部２３３は、カウンタ値が正当であることを検証した場合、Ｍ１及びＭ２のＭＡＣを生成する。そして、暗号鍵検証部２３３は、生成したＭＡＣと、受信したＭ３とが一致するか否かを判定する。【００５３】
暗号鍵検証部２３３が生成するＭＡＣと、マスタＥＣＵ１００から受信するＭ３とは、いずれも同じＭ１及びＭ２並びに仮マスタ鍵を用いて生成されている。これにより、暗号鍵検証部２３３は、生成したＭＡＣと、受信したＭ３とが一致しない場合、受信したＭ３が正当ではないことを検証できる。【００５４】
暗号鍵検証部２３３は、生成したＭＡＣと、受信したＭ３とが一致しない場合、受信したＭ１、Ｍ２及びＭ３を破棄する。一方、暗号鍵検証部２３３は、生成したＭＡＣと、受信したＭ３とが一致する場合、Ｍ２から新しいマスタ鍵を復号して、鍵スロット２２２に記憶する。また、暗号鍵検証部２３３は、自装置のＵＩＤと、カウンタ２２１のカウンタ値と、鍵スロット２２２に関する情報とを用いて、メッセージＭ４を生成する。そして、暗号鍵検証部２３３は、生成したメッセージＭ４のＭＡＣであるＭ５を生成し、出力部２３１に出力する。【００５５】
［処理の流れ］
次に、本実施例における暗号鍵配信システム１による暗号鍵配信処理について説明する。図３は、実施例１における暗号鍵配信処理の一例を示すシーケンス図である。図３に示すように、ターゲットＥＣＵ２００であるＥＣＵ＿Ａ及びＥＣＵ＿Ｃの出力部２３１は、マスタＥＣＵ１００に鍵更新要求を送信する（Ｓ１）。【００５６】
マスタＥＣＵ１００の取得部１３１は、鍵更新要求を受信すると、生成部１３２に暗号鍵の生成指示を出力する。生成部１３２は、ＥＣＵリスト格納部１２１を参照して鍵更新要求を送信したターゲットＥＣＵ２００を特定する（Ｓ２）。また、生成部１３２は、ターゲットＥＣＵ２００に配信する新たなマスタ鍵を生成する（Ｓ３）。【００５７】
次に、生成部１３２は、ＥＣＵリスト格納部１２１に記憶された情報を用いて、メッセージＭ１及びＭ２を生成する（Ｓ４）。そして、生成部１３２は、生成したＭ１とＭ２を連結したデータのＭＡＣであるＭ３を生成し、生成したＭ１、Ｍ２及びＭ３を、暗号鍵出力部１３３に出力する（Ｓ５）。暗号鍵出力部１３３は、生成部１３２から出力されたＭ１、Ｍ２及びＭ３を、鍵更新要求を送信したターゲットＥＣＵ２００であるＥＣＵ＿Ａ及びＥＣＵ＿Ｃに送信する（Ｓ６）。【００５８】
また、生成部１３２は、ＥＣＵリスト格納部１２１に記憶されたターゲットＥＣＵ２００のＵＩＤと、暗号鍵のスロットと、カウンタ値とを用いて、メッセージＭ４を生成する。そして、生成部１３２は、Ｍ４のＭＡＣ（Ｍ５）を生成して、比較候補表格納部１２２に記憶する（Ｓ７）。【００５９】
ターゲットＥＣＵ２００の暗号鍵取得部２３２は、マスタＥＣＵ１００からＭ１、Ｍ２及びＭ３を受信し、暗号鍵検証部２３３に出力する。暗号鍵検証部２３３は、暗号鍵取得部２３２から出力されたＭ２を復号し、カウンタ２２１を参照して、カウンタ値が正当であるか否かを検証する（Ｓ８）。暗号鍵検証部２３３は、カウンタ値が正当であることを検証した場合、出力されたＭ１及びＭ２のＭＡＣを生成する（Ｓ９）。そして、暗号鍵検証部２３３は、生成したＭＡＣと、出力されたＭ３とが一致するか否かを検証する（Ｓ１０）。【００６０】
暗号鍵検証部２３３は、生成したＭＡＣと、出力されたＭ３とが一致することを検証した場合、Ｍ２を復号して得られる新たなマスタ鍵を鍵スロット２２２に格納する（Ｓ１１）。次に、暗号鍵検証部２３３は、自装置のＵＩＤと、暗号鍵のスロットと、カウンタ値とを用いて、メッセージＭ４を生成する。そして、暗号鍵検証部２３３は、Ｍ４のＭＡＣであるＭ５を生成し（Ｓ１２）、出力部２３１に出力する。出力部２３１は、暗号鍵検証部２３３から出力されたＭ５を、マスタＥＣＵ１００に送信する（Ｓ１３）。なお、この際、出力部２３１は、メッセージＭ４は送信しない。【００６１】
マスタＥＣＵ１００の取得部１３１は、ターゲットＥＣＵ２００からＭ５を受信し、検証部１３４に出力する。次に、検証部１３４は、取得部１３１から出力されたＭ５と一致するか否かを検証する（Ｓ１４）。検証部１３４は、生成したＭ４のＭＡＣ（Ｍ５）と、取得部１３１から出力されたＭ５とが一致することを検証した場合、比較候補表格納部１２２に記憶されたＭ４のＭＡＣ（Ｍ５）を削除する（Ｓ１５）。【００６２】
次に、各装置における処理について、図４乃至図６を用いて説明する。図４は、実施例１における暗号鍵送信処理の一例を示すフローチャートである。図４に示すように、マスタＥＣＵ１００の取得部１３１は、ターゲットＥＣＵ２００から鍵更新要求を受信するまで待機する（Ｓ１００：Ｎｏ）。取得部１３１は、通信部１１０を通じて鍵更新要求を受信すると（Ｓ１００：Ｙｅｓ）、生成部１３２に暗号鍵の生成指示を出力する。生成部１３２は、ＥＣＵリスト格納部１２１を参照して、鍵更新要求を送信したターゲットＥＣＵ２００のＵＩＤ及び鍵スロットを特定する（Ｓ１０１）。【００６３】
次に、生成部１３２は、ＥＣＵリスト格納部１２１を参照して、ターゲットＥＣＵ２００のカウンタ値を取得する（Ｓ１０２）。次に、生成部１３２は、新しいマスタ鍵を生成し（Ｓ１０３）、仮マスタ鍵を用いて新しいマスタ鍵を暗号化する（Ｓ１０４）。【００６４】
次に、生成部１３２は、ＥＣＵリスト格納部１２１を参照して、メッセージＭ１及びＭ２を生成する（Ｓ１０５）。さらに、生成部１３２は、生成したメッセージＭ１及びＭ２のＭＡＣであるＭ３を生成する（Ｓ１０６）。そして、生成部１３２は、生成したＭ１及びＭ２並びにＭ３を、暗号鍵出力部１３３に出力する。暗号鍵出力部１３３は、生成部１３２から出力されたＭ１及びＭ２並びにＭ３を、通信部１１０を通じて鍵更新要求を送信したターゲットＥＣＵ２００に送信する（Ｓ１０７）。【００６５】
次に、生成部１３２は、ＥＣＵリスト格納部１２１を参照して、Ｍ５を送信したターゲットＥＣＵ２００のＵＩＤと、暗号鍵のスロットと、カウンタ値とを用いて、メッセージＭ４を生成する。次に、生成部１３２は、生成したＭ４のＭＡＣを生成する（Ｓ１０８）。そして、生成部１３２は、生成したＭ４のＭＡＣを比較候補表格納部１２２に記憶し、比較候補表を生成する（Ｓ１０９）。以上の処理により、マスタＥＣＵ１００から、鍵更新要求を送信したターゲットＥＣＵ２００に対して、新しいマスタ鍵が送信される。【００６６】
次に、ターゲットＥＣＵ２００によるデータ受信処理について、図５を用いて説明する。図５は、実施例１における暗号鍵受信処理の一例を示すフローチャートである。図５に示すように、鍵更新要求を送信したターゲットＥＣＵ２００の暗号鍵取得部２３２は、マスタＥＣＵ１００からＭ１及びＭ２並びにＭ３を受信するまで待機する（Ｓ２００：Ｎｏ）。暗号鍵取得部２３２は、Ｍ１及びＭ２並びにＭ３を受信すると（Ｓ２００：Ｙｅｓ）、Ｍ１及びＭ２並びにＭ３を暗号鍵検証部２３３に出力する。【００６７】
暗号鍵検証部２３３は、暗号鍵取得部２３２から出力されたＭ２を復号する。次に、暗号鍵検証部２３３は、カウンタ２２１を参照し、復号したＭ２に含まれるカウンタ値が正当であるか否かを検証する（Ｓ２０１）。暗号鍵検証部２３３は、カウンタ値が正当ではないことを検証した場合（Ｓ２０１：Ｎｏ）、メッセージＭ１、Ｍ２及びＭ３を破棄し（Ｓ２１１）、処理を終了する。【００６８】
暗号鍵検証部２３３は、カウンタ値が正当であることを検証した場合（Ｓ２０１：Ｙｅｓ）、Ｍ１及びＭ２のＭＡＣを生成する。そして、暗号鍵検証部２３３は、生成したＭＡＣとＭ３とが一致するか否かを検証する（Ｓ２０２）。暗号鍵検証部２３３は、生成したＭＡＣとＭ３とが一致しないことを検証した場合（Ｓ２０２：Ｎｏ）、メッセージＭ１、Ｍ２及びＭ３を破棄し（Ｓ２１１）、処理を終了する。【００６９】
暗号鍵検証部２３３は、生成したＭＡＣとＭ３とが一致することを検証した場合（Ｓ２０２：Ｙｅｓ）、Ｍ２を復号して得られる新しいマスタ鍵を鍵スロット２２２に格納する（Ｓ２０３）。次に、暗号鍵検証部２３３は、自装置のＵＩＤと、暗号鍵のスロットと、カウンタ値とを用いて、メッセージＭ４を生成する。そして、暗号鍵検証部２３３は、Ｍ４のＭＡＣであるＭ５を生成し（Ｓ２０４）、出力部２３１に出力する。出力部２３１は、暗号鍵検証部２３３から出力されたＭ５を、マスタＥＣＵ１００に送信する（Ｓ２０５）。以上の処理により、ターゲットＥＣＵ２００は、マスタＥＣＵ１００から送信された新しいマスタ鍵を記憶するとともに、マスタＥＣＵ１００に検証データであるＭ５を送信する。【００７０】
次に、マスタＥＣＵ１００における検証処理について、図６を用いて説明する。図６は、実施例１における配信検証処理の一例を示すフローチャートである。図６に示すように、マスタＥＣＵ１００の取得部１３１は、ターゲットＥＣＵ２００から検証データであるＭ５を受信するまで待機する（Ｓ３００：Ｎｏ）。取得部１３１は、通信部１１０を通じてＭ５を受信すると（Ｓ３００：Ｙｅｓ）、検証部１３４にＭ５の検証指示を出力する。【００７１】
次に、検証部１３４は、比較候補表格納部１２２を参照して、取得部１３１から出力されたＭ５と一致するＭ４のＭＡＣが記憶されているか否かを総当たり比較で検証する（Ｓ３０１）。検証部１３４は、Ｍ５と一致するＭ４のＭＡＣが記憶されていないことを検証した場合（Ｓ３０２：Ｎｏ）、受信したＭ５に関する検証が失敗したことを示す情報をログ格納部１２３に記憶する（Ｓ３１１）。そして、検証部１３４は、受信したＭ５を破棄し（Ｓ３１２）、Ｓ２００に戻って新たなＭ５を受信するまで待機する。【００７２】
検証部１３４は、Ｍ５と一致するＭ４のＭＡＣが記憶されていることを検証した場合（Ｓ３０２：Ｙｅｓ）、受信したＭ５に関する検証が成功したことを示す情報をログ格納部１２３に記憶する（Ｓ３０３）。そして、検証部１３４は、比較候補表格納部１２２から、受信したＭ５と一致するＭ４のＭＡＣを削除する（Ｓ３０４）。【００７３】
次に、検証部１３４は、比較候補表格納部１２２に残っているＭ４のＭＡＣがないか否かを判定する（Ｓ３２１）。検証部１３４は、残っているＭ４のＭＡＣがあると判定した場合（Ｓ３２１：Ｎｏ）、Ｓ２００に戻って新たなＭ５を受信するまで待機する。一方、検証部１３４は、残っているＭ４のＭＡＣがないと判定した場合（Ｓ３２１：Ｙｅｓ）、比較候補表格納部１２２に記憶された比較候補表を削除する（Ｓ３２２）。そして、検証部１３４は、鍵更新要求を送信したターゲットＥＣＵ２００への鍵配信処理が完了したことを示す情報をログ格納部１２３に記憶し（Ｓ３２３）、処理を終了する。このような処理により、マスタＥＣＵ１００は、ターゲットＥＣＵ２００への鍵配信が完了したか否かを検証できる。この際、ターゲットＥＣＵ２００はＭ４を送信せず、Ｍ４のＭＡＣであるＭ５だけをマスタＥＣＵ１００に送信するので、鍵更新に要するデータ量を４８バイトから１６バイトに削減できる。【００７４】
なお、本実施例において、検証部１３４は、ターゲットＥＣＵ２００から受信したＭ５の検証を、比較候補表格納部１２２に記憶されたＭ４のＭＡＣとの総当たり比較により行う。本実施例における総当たり比較処理について、図７を用いて説明する。図７は、実施例１における総当たり比較処理の一例を示す図である。図７は、「ＵＩＤ＿Ｄ」乃至「ＵＩＤ＿Ｈ」の５つのターゲットＥＣＵ２００から鍵更新要求を受信した場合に生成される比較候補表を用いた総当たり比較処理の一例を示す。この場合において、比較候補表には、ＭＡＣ値「Ｄ’」乃至ＭＡＣ値「Ｈ’」までの５つのＭＡＣ値が記憶される。【００７５】
まず、検証部１３４は、「ＵＩＤ＿Ｄ」のターゲットＥＣＵ２００から、ＭＡＣ値が「Ｄ」であるＭ５を受信した場合、比較候補表に記憶された５つのＭＡＣ値と、受信したＭＡＣ値「Ｄ」とを総当たり比較する。すなわち、検証部１３４は、ＭＡＣ値「Ｄ」についての総当たり比較処理を、最大で「５回」行う。その結果、検証部１３４は、ＭＡＣ値「Ｄ’」が受信したＭＡＣ値と一致する、すなわち正当なＭＡＣ値を受信したことを検証する。この場合、検証部１３４は、比較候補表から、ＭＡＣ値「Ｄ’」を削除する。すなわち、この時点において、比較候補表には、４つのＭＡＣ値が記憶されている。【００７６】
次に、検証部１３４は、「ＵＩＤ＿Ｅ」のターゲットＥＣＵ２００から、ＭＡＣ値が「Ｅ」であるＭ５を受信した場合、比較候補表に記憶された４つのＭＡＣ値と、受信したＭＡＣ値「Ｅ」とを総当たり比較する。すなわち、検証部１３４は、ＭＡＣ値「Ｅ」についての総当たり比較処理は、最大で「４回」行えばよく、ＭＡＣ値「Ｄ」の場合に比べて処理時間を削減できる。【００７７】
上記の場合と同様に、検証部１３４は、ＭＡＣ値「Ｅ’」が、受信したＭＡＣ値と一致することを検証する。この場合、検証部１３４は、比較候補表から、ＭＡＣ値「Ｅ’」を削除するので、比較候補表に記憶されるＭＡＣ値は３つに減少する。【００７８】
このように、比較候補表に記憶されるＭＡＣ値の数は、正当なＭＡＣ値を受信する度に減少していく。これにより、検証部１３４は、本来は「２５回」行うＭＡＣ値の総当たり比較処理を「１５回」に削減できるので、総当たり比較に要する時間を削減できる。【００７９】
［効果］
以上説明したように、暗号鍵を送信する鍵配信ＥＣＵと、暗号鍵を受信する鍵受信ＥＣＵとを有する暗号鍵配信システムにおいて、鍵配信ＥＣＵは、鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに、暗号鍵を送信する。また、鍵配信ＥＣＵは、自装置内に保持する共通鍵と、暗号鍵の送信先である複数の鍵受信ＥＣＵの識別子とから暗号鍵の検証データを算出して、複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶する。また、暗号鍵配信システムにおいて、複数の鍵受信ＥＣＵは、受信した暗号鍵を自装置内に記録し、受信した暗号鍵の検証データを自装置内に保持する共通鍵と自装置の識別子とから算出して鍵配信ＥＣＵへ送信する。そして、鍵配信ＥＣＵは、複数の鍵受信ＥＣＵから送信された検証データと、記憶された検証データと、が一致するかを判定した結果に基づいて、送信された検証データが、鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定することにより該鍵受信ＥＣＵへの暗号鍵の送信完了を判定し、複数の鍵受信ＥＣＵから送信された検証データと、記憶された検証データとが一致すると判定した場合に、検証データ記憶部から一致した検証データを削除する。これにより、鍵更新に要するデータ量を削減できる。
【００８０】
また、鍵配信ＥＣＵは、鍵受信ＥＣＵのうち、鍵要求を送信した複数の鍵受信ＥＣＵに対して、暗号鍵を送信し、受信した検証データが、鍵要求を送信した複数の鍵受信ＥＣＵのうち、どの鍵受信ＥＣＵから送信されたものであるかを判定する。これにより、鍵配信ＥＣＵは、鍵更新が完了した鍵受信ＥＣＵを特定できる。【００８１】
また、鍵配信ＥＣＵは、共通鍵と、暗号鍵の送信先である複数の鍵受信ＥＣＵの識別子とから暗号鍵の検証データを算出して、複数の鍵受信ＥＣＵの識別子に対応付けて検証データ記憶部に記憶する。そして、鍵配信ＥＣＵは、記憶された検証データと、鍵受信ＥＣＵから受信された検証データとが一致すると判定した場合に、検証データ記憶部から一致した検証データを削除する。これにより、鍵更新が成功したか否かの検証に要する時間を削減できる。【００８２】
また、鍵配信ＥＣＵは、検証データ記憶部に記憶された検証データが全て削除されたと判定した場合に、鍵要求を送信した複数の鍵受信ＥＣＵにおいて暗号鍵の受信が完了したと判定する。これにより、鍵配信ＥＣＵは、全ての鍵受信ＥＣＵにおいて暗号鍵の受信が完了したことを容易に特定できる。【００８３】
さらに、鍵受信ＥＣＵは、暗号鍵のデータセットを鍵配信ＥＣＵに送信しない。これにより、鍵更新に要するデータ量を削減できる。【００８４】
なお、鍵更新に要するデータ量を削減する方法として、メッセージＭ４の一部を送信しない方法や、Ｍ５のデータ長を削減する方法も考えられる。しかし、メッセージＭ４の一部を送信しない方法ではデータ量の削減量が小さく、またＭ５のデータ長を削減すると、保証空間が狭くなるのでセキュリティ強度が劣化する。本実施例によれば、セキュリティ強度を劣化させることなく、鍵更新に要するデータ量を削減できる。
【実施例２】
【００８５】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。例えば、暗号鍵配信システム１におけるマスタＥＣＵ１００及びターゲットＥＣＵ２００の数は、図１に示す例に限られず、複数のマスタＥＣＵ１００や、４以上のターゲットＥＣＵ２００を有するような構成であってもよい。また、ターゲットＥＣＵ２００の一部が、マスタＥＣＵ１００を兼ねるような構成であってもよい。【００８６】
また、実施例１においては、マスタ鍵を配信する構成について説明したが、これに限られず、マスタ鍵以外の暗号鍵を配信するような構成であってもよい。この場合、生成部１３２は、配信対象の鍵を暗号化する際に、仮マスタ鍵を用いることなく、既存のマスタ鍵を用いてもよい。【００８７】
また、生成部１３２が、メッセージＭ１に含まれるＵＩＤの代わりに、ＵＩＤのハッシュ値をＭ１に含めるような構成であってもよい。これにより、鍵更新に要するデータ量をさらに削減することができる。【００８８】
なお、暗号鍵検証部２３３は、カウンタ値が正当か否かを検証する処理において、カウンタ２２１の値と受信したカウンタ値とが一致する場合に限らず、差異が所定の許容範囲内にある場合においても、カウンタ値が正当であることを検証するように実現してもよい。この場合、暗号鍵検証部２３３は、カウンタ２２１の値を、受信したカウンタ値に応じて補正してもよい。【００８９】
また、本実施例は、一つのＣＡＮにおいて実現される暗号鍵配信システム１について説明したが、これに限られず、複数のＣＡＮにまたがって暗号鍵配信システム１が実現されてもよい。この場合において、マスタＥＣＵ１００は複数存在していてもよい。また、各マスタＥＣＵ１００、又はマスタＥＣＵ１００とターゲットＥＣＵ２００とが、異なるＣＡＮに属してもよい。また、各ターゲットＥＣＵ２００は、ＣＡＮを一意に識別するＩＤである「ＣＡＮ  ＩＤ」を、他のターゲットＥＣＵ２００と共有してもよい。これにより、有限である「ＣＡＮ  ＩＤ」の利用数を削減できる。【００９０】
［システム］
また、図示した各部の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部１３１と暗号鍵出力部１３３とを統合してもよい。また、出力部２３１を、暗号鍵更新要求を出力する処理部と検証データを出力する処理部とに分散してもよい。さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。【００９１】
［ハードウェア］
また、上述の各実施例にて説明したターゲットＥＣＵ２００は、例えば、車両に搭載されるマイコンなどの電子機器により実現される。図８は、ＥＣＵのハードウェア構成の一例を示す図である。なお、以下においては、ターゲットＥＣＵ２００を例として説明するが、マスタＥＣＵ１００についても同様のハードウェア構成により実現できる。【００９２】
図８に示すように、電子機器９０００は、プロセッサ９００１、ＣＡＮ通信インタフェース９００２、ＲＡＭ９００３、不揮発メモリ９００４及び外部インタフェース９００５を有する。プロセッサ９００１、ＣＡＮ通信インタフェース９００２、ＲＡＭ９００３、不揮発メモリ９００４及び外部インタフェース９００５は、例えばワンチップ上に実装される。【００９３】
プロセッサ９００１の一例としては、ＣＰＵ、ＤＳＰ（Digital  Signal  Processor）、ＦＰＧＡ、ＰＬＤ（Programmable  Logic  Device）等が挙げられる。ＣＡＮ通信インタフェース９００２は、他のＥＣＵとの通信を制御する有線インタフェースなどである。ＲＡＭ９００３及び不揮発メモリ９００４の一例としては、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のＲＡＭ、ＲＯＭ、フラッシュメモリ等が挙げられる。外部インタフェース９００５は、例えばターゲットＥＣＵ２００が制御する外部機器との通信を制御する有線又は無線インタフェースである。【００９４】
プロセッサ９００１は、例えば、出力部２３１、暗号鍵取得部２３２及び暗号鍵検証部２３３と同様の機能を実行するプログラムを実行する。これにより、プロセッサ９００１は、出力部２３１、暗号鍵取得部２３２及び暗号鍵検証部２３３と同様の機能を実行するプロセスを動作させる。【００９５】
なお、上述の各実施例にて説明したマスタＥＣＵ１００も、同様の電子機器９０００により実現できる。この場合において、例えばマスタＥＣＵ１００を実現するプロセッサ９００１は、取得部１３１、生成部１３２、暗号鍵出力部１３３及び検証部１３４と同様の機能を実行するプログラムを実行する。これにより、プロセッサ９００１は、取得部１３１、生成部１３２、暗号鍵出力部１３３及び検証部１３４と同様の機能を実行するプロセスを動作させる。
【符号の説明】
【００９６】
１  暗号鍵配信システム
１００  マスタＥＣＵ
２００  ターゲットＥＣＵ
１１０、２１０  通信部
１２０、２２０  記憶部
１２１  ＥＣＵリスト格納部
１２２  比較候補表格納部
１２３  ログ格納部
２２１  カウンタ
２２２  鍵スロット
１３０、２３０  制御部
１３１  取得部
１３２  生成部
１３３  暗号鍵出力部
１３４  検証部
２３１  出力部
２３２  暗号鍵取得部
２３３  暗号鍵検証部
【図１】
0006693577.tif 000002
【図２Ａ】
0006693577.tif 000003
【図２Ｂ】
0006693577.tif 000004
【図２Ｃ】
0006693577.tif 000005
【図２Ｄ】
0006693577.tif 000006
【図２Ｅ】
0006693577.tif 000007
【図２Ｆ】
0006693577.tif 000008
【図３】
0006693577.tif 000009
【図４】
0006693577.tif 000010
【図５】
0006693577.tif 000011
【図６】
0006693577.tif 000012
【図７】
0006693577.tif 000013
【図８】
0006693577.tif 000014