以下、実施形態につき、図面を参照して説明する。
(第1実施形態)
図1から図10は、第1実施形態に係る図である。図1は、本実施形態の通信システムの構成例を示す図である。本実施形態の通信システム1は、複数の通信装置100及び少なくとも1つの認証装置200を含み、各装置は通信線等のネットワークNWを介して接続される。
本実施形態の通信システム1は、通信装置100がメッセージを送信する際に、送信するメッセージのデータフィールドの空き領域を検出する。空き領域が検出された場合に当該通信装置100が送信する複数のメッセージを入力データとして送信側メッセージ認証子を生成して送信側メッセージ認証子を空き領域に格納したメッセージを送信する。ネットワークNWを介して接続する認証装置は、1つの認証子を用いた複数のメッセージを対象とするメッセージ認証処理を遂行する。
図2は、本実施形態の通信システム1で送受信されるメッセージのデータ構造の一例を示す図である。図2(a)に示すように、本実施形態のメッセージ構造は、へッダ、データフィールド、トレーラの各フィールドから構成される。
ヘッダには、メッセージの種類を一意に識別するメッセージID、データフィールドのデータ長などが格納される。
データフィールドには、アプリケーション部107が処理するデータ本体(送信データ)Dが格納される。データフィールドは、最大で格納可能なデータ長d1が予め設定されており、このデータ長d1の範囲内でデータ本体Dが格納される。例えば、CAN通信の場合、データフィールドは0〜8バイトのフィールドである。最大で8バイトのデータ本体Dを格納することができ、データ本体Dは、1〜8バイトのデータ長d2を有することになる。
本実施形態のメッセージは、データ本体Dのデータ長d2がデータフィールドのデータ長d1よりも小さい場合、データフィールド内に未使用領域が含まれ、例えば、データ本体Dが1バイトであれば、データフィールドの残り7バイトは、利用可能な領域(空き領域)となる。
本実施形態では、この利用可能なデータフィールドの空き領域を利用し、複数のメッセージデータを対象とした1つのメッセージ認証子Tが当該空き領域に格納される。データ本体D及びメッセージ認証子Tを含むメッセージは、送信元である通信装置100から送信先の通信装置100と認証装置200とに伝送され、認証装置200においてメッセージ認証子Tを用いたメッセージ認証が遂行される。
なお、データフィールドは、メッセージ毎にそのデータ長が異なる可変長のデータ領域であってもよい。例えば、データ本体Dが5バイトである場合、データフィールドの最大で利用可能なデータ長d1の範囲内で、当該データ本体Dのデータ長d2に合わせたデータ長にデータフィールドに可変したメッセージを生成することもできる。
トレーラには、データの整合性を確認するための情報などが格納される。例えば、CAN通信の場合、誤り検出用のエラー検出情報としてCRC(Cyclic Redundancy Check)が格納される。
図2(b)に示すメッセージM1は、データ本体Dのデータ長d2がデータフィールドのデータ長d1と同じあるメッセージデータである。また、図2(c)に示すメッセージM2は、データ本体Dのデータ長d2がデータフィールドのデータ長d1よりも短い小さいメッセージであり、データフィールドの一部がデータ本体Dによって使用され、残りの一部が空き領域となっている。
図2(d)は、認証子付きメッセージM3の一例を示す図である。認証子付きメッセージM3は、例えば、図2(c)で示したデータフィールド内の空き領域にメッセージ認証子Tが格納されたメッセージである。空き領域には、当該空き領域のデータ長以下のデータ長のメッセージ認証子Tが格納され、空き領域のデータ長よりも短いメッセージ認証子Tも格納される。
通信装置100は、通信システム1に接続される他の通信装置100に伝送するメッセージデータを生成してネットワークNWに出力する送信機能、及び他の通信装置100からネットワークNWに出力されたメッセージを受信する受信機能を備える。なお、本実施形態の通信装置100は、受信機能を備えずに、所定のメッセージを生成して他の通信装置に送信する送信機能のみを具備するものが含まれてもよい。
通信装置100は、通信部101、制御部102、記憶部103、鍵管理部104、認証子生成部105、認証子付与部106、及びアプリケーション部107を含んで構成される。これらの各部は、制御部102によって制御される。また、記憶部103、鍵管理部104、認証子生成部105、及び認証子付与部106は、本実施形態のメッセージ認証子処理手段として機能する。
通信部101は、ネットワークNWとの間の通信インタフェース制御を遂行し、ネットワークNWに生成されたメッセージデータを出力して他の通信装置100及び認証装置200に伝送したり、他の通信装置100からネットワークNWに出力されたメッセージを受信する通信制御を行う。
記憶部103は、制御部102を介して読出/書込可能なハードウェア資源としての記憶装置であり、他の通信装置100に伝送するメッセージに関する情報を記憶する。
鍵管理部104は、認証子生成部105によるメッセージ認証子Tの生成処理で使用する鍵情報である共通鍵Kを管理(記憶)する。本実施形態では、該共通鍵Kを用いたアルゴリズムを利用したメッセージ認証を行う。一例として、MAC(MassageAuthenticaionCode)アルゴリズムを利用することができ、MACアルゴリズムは、ブロック暗号を利用したCMACや鍵付きハッシュ関数を利用したHMACなどがある。
なお、鍵管理部104で管理される共通鍵Kは、認証装置200と予め共有されている。また、共通鍵Kは、通信システム100を構成する各通信装置100間で共通であってもよく、また、各通信装置100で異なる共通鍵を適用することができる。この場合、各通信装置100それぞれの複数の異なる共通鍵は、同様に認証装置200と予め共有され、認証装置が各通信装置それぞれの複数の共通鍵を保持する。
また、通信装置100は、鍵管理部104を含まない構成であってもよい。例えば、認証装置200の鍵管理部204で管理される(記憶される)共通鍵Kを、認証装置200から所定のタイミングで取得し、記憶部103や所定の記憶領域に記憶するように構成することも可能である。この場合においても、認証装置200の鍵管理部204が各通信装置100それぞれで異なる複数の共通鍵を管理するように構成することもできる。
認証子生成部105は、アプリケーション部107で生成されたメッセージに含まれるデータ本体D及び共通鍵Kを用いてメッセージ認証子Tを生成する。このとき、認証子生成部105は、データ圧縮機能を含むことができ、生成したメッセージ認証子Tを所定のデータ長に圧縮処理して圧縮メッセージ認証子σを生成することができる。
認証子付与部106は、アプリケーション部107で生成されるデータ本体Dのデータ長d2からデータ本体Dが格納されるメッセージのデータフィールドの空き領域を検出する。認証子付与部106は、データ本体Dのデータ長d2がデータフィールドのデータ長d1に基づく所定値よりも小さいか否かを判別する処理を遂行し、当該データ本体Dに対応するメッセージのデータフィールドに所定値以上の空き領域が存在するか否かを検出する。
認証子付与部106は、データフィールドに所定値以上の空き領域が検出された場合に、認証子生成部105に制御部102を介してメッセージ認証子生成命令を送信する。また、認証子付与部106は、認証子生成部105で生成されたメッセージ認証子Tを、空き領域が所定値以上と判別されたデータフィールドの当該空き領域に格納する。
アプリケーション部107は、通信装置100が備える不図示のタイマー部からの時刻通知や他の通信装置100からのメッセージ受信などのイベントを契機として、送信するメッセージに含まれるデータ本体Dを生成する機能を遂行する。例えばCAN通信の場合、このデータ本体Dは、他の通信装置100に送信する制御データである。
ここで、図3及び図4を参照して、本実施形態のメッセージ送信処理について詳細に説明する。図3は、本実施形態のメッセージ送信処理例を説明する模式図であり、図4は、記憶部103に記憶されるメッセージに関する情報の一例を示す図である。
通信装置100は、アプリケーション部107でデータ本体Dが生成されると、メッセージ送信処理を遂行し、生成されたデータ本体Dをデータフィールドに含むメッセージデータを生成してネットワークNWに出力するが、通信装置100は、メッセージ認証子付与処理を含むメッセージ送信処理を遂行し、メッセージデータを他の通信装置100及び認証装置200に送信する。
まず、通信装置100の制御部102は、アプリケーション部107で生成されたデータ本体Dをデータフィールドに含む図2で示したデータ構造の送信メッセージを生成して送信する前に、アプリケーション部107で生成された全てのデータ本体Dを一旦記憶部103に送信順に記憶する。
図4に示すように、制御部102は、生成されたデータ本体DのメッセージID、データ本体D、メッセージ送信時刻Ts、メッセージステータスSm、認証子ステータスStを記憶部103に記憶する。これら記憶部103に記憶される情報は、通信装置100が送信するメッセージに関する情報であり、送信する各メッセージ別のデータ本体Dを含むメッセージ送信履歴情報である。なお、メッセージの送信状況Smは、“未送信”、“送信済”、“送信成功”又は“送信失敗”の順に遷移するステータス情報であり、認証子TステータスStは、“未送信”、“送信済”の順に遷移するステータス情報である。
認証子付与部106は、記憶部103に記憶されたデータ本体Dを参照し、データ本体Dのデータ長d2及びデータフィールドのデータ長d1に基づいて、データ本体Dが格納された際のデータフィールドの空き領域を検出する。この空き領域検出処理は、データ本体Dに対してデータフィールドに所定値以上の空き領域が存在するか、つまり、データ本体Dのデータ長d2がデータフィールドのデータ長d1に基づく所定値以下のデータ長であるか否かの判別処理を含むことができる。
本実施形態では、データ本体Dのデータ長d2が、「データフィールドの最大データ長d1−データ本体のデータ長d2≧有効認証子データ長da」を満たすか否か(データ本体Dのデータ長d2が、「データ本体Dのデータ長d2≦データフィールドの最大データ長d1−有効認証子データ長da」を満たす否か)を判別し、データフィールドに所定データ長以上の空き領域があるか否かを検出する。なお、データフィールドに空き領域が存在するか否かの検出と、空き領域が所定データ長以上であるか否かの検出とを、個別に行うことも可能であり、空き領域が存在しない場合には空き領域が所定データ長以上であるか否かを検出する処理を行わないように構成することができる。
認証子付与部106は、アプリケーション部107でその都度生成される送信メッセージに含まれるデータ本体Dに対するデータフィールドの空き領域検出処理を遂行し、空き領域が検出されない場合は、通信装置100(制御部102)は、データ本体Dを含むメッセージを生成してネットワークNWに出力する。
図3の例ではメッセージ送信時刻の古い順に、データ本体D(n−2)が格納されるメッセージM(n−2)のデータフィールドには、空き領域が検出されなかったので、データ本体D(n−2)を含むメッセージM(n−2)は、ネットワークNWにそのまま出力される。データ本体D(n−2)の次に生成されたデータ本体D(n−1)が格納されるメッセージM(n−1)のデータフィールドには、空き領域が検出されたものの、所定データ長以上の空き領域が検出されなかった、言い換えれば、データフィールドに空き領域は存在するが、メッセージ認証子Tを格納するに十分な空き領域は存在しないので、データ本体D(n−1)を含むメッセージM(n−1)も、ネットワークNWにそのまま出力される。
データ本体D(n−1)の次に生成されたデータ本体D(n)が格納されるメッセージM(n)のデータフィールドには、所定データ長以上の空き領域が検出されたので、認証子付与部106は、メッセージ認証子Tを含むメッセージM(n)を生成し、メッセージM(n)は、認証子付きメッセージとしてネットワークNWに出力される。
認証子付与部106は、所定データ長以上の空き領域が検出されると、認証子生成部105に制御部102を介してメッセージ認証子生成命令を送信し、認証子生成部105は、メッセージ認証子生成命令に基づいて認証子生成処理を遂行する。
認証子生成部105は、記憶部103を参照し、所定データ長以上の空き領域が検出されたメッセージM(n)を基準に、当該メッセージM(n)を含む認証子対象メッセージを識別する。
本実施形態では、メッセージM(n)の送信順を基準に、通信装置100が送信したメッセージのうちメッセージ認証子Tを含まないで過去に送信された複数のメッセージM(m),・・・,M(n−1)を、記憶部103を参照して識別する。ここで、nは、送信時刻に基づく送信順を示すものであり、nが小さいほど送信順が古く、大きいほど最近送信されたものである。メッセージM(n)は、送信順で最も最近に送信される未送信のメッセージである。
認証子生成部105は、認証子ステータスStを参照することで、メッセージM(n)の送信順を基準に、通信装置100が送信したメッセージのうちメッセージ認証子Tを含まないで過去に送信された複数のメッセージM(m),・・・,M(n−1)を識別することができる。例えば、通信システム1が起動してから通信装置100が最初に送信するメッセージからn回目に送信するメッセージM(n)のデータフィールドに初めて空き領域が検出された場合、メッセージM(n)の送信順を基準に過去に送信したメッセージに対する認証子ステータスStは、全て”未送信”となっているので、最初に送信されたメッセージをM(m)とすると、メッセージM(n)を加えたメッセージM(m),・・・M(n−2),M(n−1),M(n)のメッセージ群を認証子対象メッセージとして識別することができる(ただし、m≦nである)。例えば、図4の例では、送信時刻順に4番目に送信されるメッセージに空き領域が検出されたので、通信装置100が最初に送信した一番目のメッセージから空き領域が検出された4番目に送信されるメッセージまでの複数のメッセージ(4つのメッセージ)を、認証子対象メッセージとして識別する。
また、過去にメッセージ認証子Tを含むメッセージデータが送信されている場合、メッセージ認証子Tを含むメッセージに対応する認証子ステータスStは”送信済”となっているので、認証子生成部105は、メッセージM(n)の送信順を基準に、前回送信した認証子付きメッセージ、言い換えれば、最も最近の認証子ステータスStが”送信済”となっているメッセージM(m+1)を識別し、メッセージM(m+1)の次に送信されたメッセージM(m+2),・・・・M(n−2),M(n−1)を、通信装置100が送信したメッセージのうちメッセージ認証子Tを含まないで過去に送信された複数のメッセージとして識別する。そして、メッセージM(n)を加えたメッセージM(m+2),・・・・M(n−2),M(n−1),M(n)のメッセージ群を認証子対象メッセージとして識別することができる。例えば、図4の例では、送信順で最も最近に送信される8番目の未送信のメッセージを基準に、最も最近の認証子ステータスStが”送信済”となっている5番目のメッセージを識別し、5番目のメッセージの次に送信された6番目のメッセージから空き領域が検出された8番目に送信される複数のメッセージ(3つメッセージ)を、認証子対象メッセージとして識別する。
認証子生成部105は、認証子対象メッセージとして識別された各メッセージのデータ本体Dそれぞれを抽出し、複数のメッセージを対象にした1つのメッセージ認証子Tを、これら複数のデータ本体D及び共通鍵Kを用いて生成(計算)する。データ本体Dを入力データとし、データ本体D(m),…,D(n)及び共通鍵Kを用い、「メッセージ認証子T=MAC(K,D(m)‖…‖D(n))」を計算し、メッセージ認証子Tを生成する。ここで、「‖」は連接を表す記号である。
次に、認証子生成部105は、生成されたメッセージ認証子Tを圧縮処理して圧縮メッセージ認証子σを生成する。
本実施形態のメッセージ認証子Tは、通信装置100が送信したメッセージのうちメッセージ認証子Tを含まないで過去に送信された複数メッセージ、言い換えれば、空き領域が検出されない又は検出された空き領域が所定データ長未満であった過去の複数のメッセージに対する認証子であり、メッセージ認証子を含む認証子付きメッセージの送信間隔が短ければ短いほど、言い換えれば、空き領域検出処理において検出される所定値以上のデータ長を有する空き領域が検出される頻度が高ければ高いほど、メッセージの完全性を検出する効率(不正メッセージの検出効率)が向上する。
本実施形態では、生成されたメッセージ認証子を圧縮処理によりメッセージ認証子Tのデータ容量(データ長)を低減し、圧縮メッセージ認証子σをデータフィールドの空き領域に格納した認証子付きメッセージを生成する。
有効認証子データ長daは、メッセージの完全性を保証する上で必要となる圧縮メッセージ認証子σのデータ長の下限値であり、空き領域には有効認証子データ長da以上の長さが必要となる。このため、有効認証子データ長daが長ければ、不正メッセージの検出率は向上するが、有効認証子データ長daより大きい空き領域は少ないため、圧縮メッセージ認証子σを格納する頻度は少なくなる(つまり、不正メッセージの検出効率が悪くなる)。逆に、有効認証子データ長daが短ければ、不正メッセージの検出率は低下するが、有効認証子データ長daより大きい空き領域は多いため、圧縮メッセージ認証子σを格納する頻度は高くなる(つまり、不正メッセージの検出効率が良くなる)。
本実施形態の圧縮処理の一例としては、例えば、データフィールドの空き領域のデータ長をLとした場合、メッセージ認証子Tをデータ長Lに圧縮する関数f(圧縮メッセージ認証子σ=f(L,T))を適用して圧縮メッセージ認証子σを生成することができ、このデータ長Lは有効認証子データ長daよりも大きくなければならない。有効認証子データ長daは、システムパラメータであり、メッセージの完全性を保証する際の不正メッセージの検出率や検出効率等を考慮して設定(決定)される。
圧縮関数fは、メッセージ認証子Tのデータ内容を保持したままデータ容量を削減してデータ長Lに圧縮したり、メッセージ認証子Tを先頭からデータ長L分だけ切り出してデータ長Lに圧縮することもできる。以下の説明では、メッセージ認証子Tを先頭からデータ長L分だけ切り出してデータ長Lに圧縮する圧縮処理を適用した態様を一例に説明している。
なお、メッセージの完全性を保証する上でメッセージ認証子Tのデータ長は、そのデータ長が長いほど、不正メッセージの検出率は高くなるので、メッセージ認証子Tを先頭からデータ長L分だけ切り出してデータ長Lに圧縮する場合のデータ長L(圧縮率)の値は、メッセージの完全性を保証するセキュリティ強度(不正メッセージの検出率及び検出効率等)を考慮して設定(決定)される。
また、メッセージ認証子Tを先頭からデータ長L分だけ切り出してデータ長Lに圧縮する圧縮処理には、実質的にメッセージ認証子Tが圧縮されない(メッセージ認証子Tのデータ長が変わらない)圧縮も含まれる。つまり、メッセージ認証子Tのデータ長がデータ長Lと同じか小さければ、メッセージ認証子Tを先頭からデータ長L分だけ切り出しても、メッセージ認証子Tの圧縮前のデータ長と変わらないので、この場合、メッセージ認証子T=圧縮メッセージ認証子σとなる。
なお、データフィールドの空き領域を十分確保できる場合、例えば、データフィールドのデータ長が長かったり、データフィールドに格納されるデータ本体Dのデータ長が短い場合など、メッセージ認証子Tを圧縮処理せずに、メッセージ認証子Tのデータ長に関係なくそのままデータフィールドの空き領域に格納した認証子付きメッセージを生成することも可能である。
認証子付与部106は、認証子生成部105で圧縮メッセージ認証子σが生成されると、圧縮メッセージ認証子σをメッセージM(n)の空き領域に格納する。このとき、圧縮メッセージ認証子σをデータフィールドに含まれるデータ本体Dの直後に格納するが、データフィールドにおける圧縮メッセージ認証子σの開始位置が特定される必要がある。データフィールドに含まれるデータ本体Dのメッセージ種類(メッセージID)によって当該データ本体Dのデータ長が一意に定まっている場合には、データフィールドに含まれる圧縮メッセージ認証子σの開始位置が特定できる。一方、メッセージ種別によってデータ本体Dのデータ長が一意に定まらない場合、認証子付与部106は、圧縮メッセージ認証子σの開始位置を示す情報を圧縮メッセージ認証子σの直前(データ本体Dと圧縮メッセージ認証子σの間)に挿入することで、データフィールドにおける圧縮メッセージ認証子σの開始位置を特定することができる。
制御部102は、メッセージM(n)のデータフィールド以外の部分であるヘッダ及びトレーラを付与し、データ本体D及び圧縮メッセージ認証子Tを含んだデータフィールドを有する認証子付きメッセージデータを生成する。制御部102は、通信部101のインタフェースを通じてネットワークNWに認証子付きメッセージであるメッセージM(n)を出力する。
図3の例では、メッセージM(n−2)、メッセージM(n−1)、メッセージM(n)のデータ本体D(n−2)、D(n−1)、D(n)をまとめて、メッセージ認証子Tを生成し、生成されたメッセージ認証子TをメッセージM(n)のデータフィールドの空き領域に格納可能なデータ長Lまで圧縮し、圧縮メッセージ認証子σをメッセージM(n)のデータフィールドの空き領域に格納して、認証子付きメッセージデータとしてメッセージM(n)が送信される。
なお、本実施形態では、1つのメッセージを対象にした1つのメッセージ認証子Tを生成して、データフィールドの空き領域にメッセージ認証子Tを格納した認証子付きメッセージデータも送信する。
例えば、システム起動後に一番最初に送信されるメッセージのデータフィールドに空き領域が検出された場合や、メッセージM(n)の送信順を基準に、最も最近の認証子ステータスStが”送信済”となっているメッセージが送信順で1つ前のメッセージである場合(図4の例では送信順で5番目のメッセージ)は、メッセージM(n)の送信順を基準に、過去にメッセージ認証子Tを含むメッセージデータが送信されていないので(認証子ステータスStが”未送信”のメッセージがないので)、データフィールドに空き領域が検出されたメッセージM(n)自身のみを対象にしたメッセージ認証子Tが生成され、データフィールドの空き領域に1つのメッセージを対象とするメッセージ認証子Tを格納した認証子付きメッセージデータが送信される。
図5は、本実施形態の通信装置100のメッセージ送信処理の動作フローの一例を示す図である。また、図6は認証子付与処理、図7は認証子生成処理の動作フローの一例を示す図であり、本実施形態のメッセージ送信処理は、認証子付与処理及び認証子生成処理が含まれる。
図5に示すように、通信装置100は、アプリケーション部107が制御部102にメッセージM(n)のデータ本体D(n)を出力することを契機として、メッセージ送信処理を開始する(S101)。
制御部102は、アプリケーション部107によって生成されたメッセージM(n)のデータ本体D(n)を記憶部103に記憶する。制御部102は、データ本体D(n)、メッセージM(n)のメッセージID、メッセージステータスSm(“未送信”)、及び認証子ステータスSt(“未送信”)を記憶部103に記憶する(S102)。
制御部102は、記憶部103へのデータ本体D(n)の記憶処理を契機に、認証子付与命令を認証子付与部106に送信する(S103)。認証子付与命令を受信した認証子付与部106は、図6に示すように認証子付与処理を開始する。
図6に示すように、認証子付与部106は、記憶部103からメッセージステータスSmが“未送信”のデータ本体D(n)を取得し、メッセージM(n)のデータフィールドの最大データ長d1、データ本体D(n)のデータ長d2及び有効認証子データ長daに基づいて、メッセージM(n)のデータフィールドにメッセージ認証子Tを格納する空き領域があるか否かの空き領域検出処理を遂行する(S201)。
認証子付与部106は、メッセージM(n)のデータフィールドに有効認証子データ長da以上の空き領域がないと判別された場合、認証子付与処理を終了して制御部102に空き領域がないと判別された旨の通知を送信する(S202のNO)。一方、メッセージM(n)のデータフィールドに有効認証子データ長da以上の空き領域があると判別された場合、認証子付与部106は、制御部102を介して認証子生成部105にメッセージ認証子生成命令を送信する(S203)。メッセージ認証子生成命令を受信した認証子生成部105は、図7に示すように認証子生成処理を開始する。
図7に示すように、認証子生成部105は、メッセージ認証子生成命令を受信すると、認証子生成対象メッセージを識別し(S302)、識別された認証子生成対象メッセージのデータ本体D(m),…,D(n)を記憶部103から取得する(S303)。また、認証子生成部105は、認証装置200と事前に共有された共通鍵Kを鍵管理部104から取得する(S304)。
認証子生成部105は、取得した複数のデータ本体Dと共通鍵Kを用いて、複数のメッセージを対象にした1つのメッセージ認証子Tを生成し(S305)、生成したメッセージ認証子Tをさらに圧縮処理して圧縮メッセージ認証子σを生成し(S306)、制御部102を介して認証子付与部106に圧縮メッセージ認証子σを出力する(S307)。認証子生成部105は、圧縮メッセージ認証子σを出力した後、認証子生成処理を終了する。
認証子生成部105から圧縮メッセージ認証子σが出力されると、図6において認証子付与部106は、圧縮メッセージ認証子σをメッセージM(n)のデータフィールドにおけるデータ本体D(n)の直後に格納する(S204)。認証子付与部106は、圧縮メッセージ認証子σを格納した後、認証子付与処理を終了し、メッセージM(n)のデータフィールドを認証子付与部106から制御部102へ出力する。
制御部102は、図5においてメッセージM(n)のデータフィールド以外の部分であるヘッダH及びトレーラCを生成し(S104)、通信部101のインタフェースを通じてネットワークNWに、認証子付きメッセージとしてメッセージM(n)を送信する(S105)。制御部102は、メッセージM(n)の記憶部103に記憶されているメッセージ送信履歴情報を、送信時刻Tsに現在時刻を書き込み確認し、メッセージM(n)のメッセージステータスSmを“送信済”に更新する(S106)。
なお、本実施形態の通信装置100は、他の通信装置100及び認証装置200に対してメッセージを同時に送信し、ブロードキャスト又はマルチキャストでメッセージを送信する。マルチキャストの場合、送信先として認証装置200及び1つ又は複数の他の通信装置100が含まれ、他の通信装置100に送信されるメッセージは、同時に認証装置200にも送信される。
また、図6のステップS202において、メッセージM(n)のデータフィールドに有効認証子データ長da以上の空き領域がないと判別された場合、認証子付与部106から受信する空き領域がない旨の通知を契機に、メッセージM(n)のデータフィールド以外の部分であるヘッダH及びトレーラCを生成し(S104)、通信部101のインタフェースを通じてネットワークNWに、データ本体D(n)のみを含むメッセージM(n)を出力する(S105)。
次に、制御部102は、メッセージM(n)の送信が成功したか否かを確認し、成功した場合、メッセージM(n)のメッセージステータスSmを“送信成功”に更新する(S106)。メッセージM(n)の送信成功の確認手段としては、例えば、メッセージM(n)送信後の一定期間内に送信先の通信装置100からエラーメッセージを受信しなかったこと、又は送信先の通信装置100から送信成功を示す応答メッセージを受信することで、メッセージM(n)の送信成功の有無を確認することができる。
また、制御部102は、送信に成功したメッセージM(n)が圧縮メッセージ認証子σを含んだ認証子付きメッセージである場合、圧縮メッセージ認証子σの対象メッセージとなったデータ本体D(m),…,D(n)に対応する全ての認証子ステータスStを“送信済”に更新する。また、制御部102は、認証子ステータスStが“送信済”に更新された時点で、任意のタイミングでデータ本体D(m),…,D(n)を記憶部103から削除することもできる。この場合、記憶部103に記憶される情報は、メッセージ送信ログとなるので、認証子ステータスStが“送信済”のデータ本体D(m),…,D(n)のみを記憶部103から削除するようにしてもよい。
制御部102では、その後、メッセージ送信処理が終了する。
次に、本実施形態の認証装置200について説明する。
図1に示すように、認証装置200は、通信部201、制御部202、記憶部203、鍵管理部204、認証子検証部205を含んで構成される。これらの各部は、制御部202によって制御される。また、記憶部203、鍵管理部204、認証子検証部205は、本実施形態の認証手段として機能する。
通信部201は、ネットワークNWとの間の通信インタフェース制御を遂行し、通信システム1の各通信装置100から送信されるメッセージデータをネットワークNWを介して受信する通信制御を行う通信インタフェースである。
記憶部203は、制御部202を介して読出/書込可能なハードウェア資源としての記憶装置である。記憶部203には、通信部201が受信するメッセージMに含まれるデータフィールドのデータ本体Dが記憶される。
図8は、記憶部203に記憶されるデータ例を示す図であり、認証検証情報が記憶される。本実施形態では、通信部201が受信するメッセージMのメッセージの種類を一意に識別するメッセージID、送信元の通信装置100を特定する情報Is、メッセージMを受信した時刻Tr、メッセージ認証子Tの検証のステータスSvを、受信する各メッセージ別に記憶する。検証ステータスSvは、“未検証”、“検証成功”又は“検証失敗”の順に、ステータスが遷移する。
記憶部203に記憶されるメッセージID及びデータ本体Dは、図4で示した通信装置100の記憶部103に記憶されるメッセージID及びデータ本体Dと同じである。メッセージの送信元の通信装置100を特定する情報Isは、複数の各通信装置100をユニークに識別する識別情報であり、例えば、メッセージMのヘッダに含まれる情報である。
鍵管理部204は、通信装置100の認証子生成部105によって生成されるメッセージ認証子Tの生成処理で使用する共通鍵Kを管理(記憶)する。
認証子検証部205は、通信装置100の認証子生成部105と同様の認証子生成処理を遂行する。すなわち、認証子生成部105によるメッセージ認証子T及び圧縮メッセージ認証子σの生成過程と、同じアルゴリズム及び同じ圧縮処理を通じて受信したメッセージM(n)に含まれる圧縮メッセージ認証子σに対応する圧縮メッセージ認証子σ’を生成し、認証装置200側で生成した圧縮メッセージ認証子σ’と、受信メッセージMに含まれる通信装置100側で生成された圧縮メッセージ認証子σとを比較する。比較の結果、不一致である場合にメッセージの改ざんやなりすましの可能性があると判断する認証処理を行う。
認証子検証部205は、通信装置100から受信したメッセージM(n)に圧縮メッセージ認証子σが含まれているか否かを判別し、含まれていると判別された場合に、記憶部203を参照し、メッセージM(n)の受信時を基準として、メッセージM(n)を送信した同じ通信装置100から過去に受信した圧縮メッセージ認証子σが含まれない複数のメッセージM(m),…,M(n−1)(ただし、m≦n)を識別し、メッセージM(n)を加えたメッセージM(m),・・・・M(n−2),M(n−1),M(n)のメッセージ群を、メッセージM(n)に含まれる圧縮メッセージ認証子σの認証対象メッセージとして識別する。
認証子検証部205は、検証ステータスSvを参照することで、メッセージM(n)の受信順を基準に、送信元の通信装置100を特定する情報Isが同じ通信装置100から受信したメッセージのうち圧縮メッセージ認証子σを含まないで過去に受信した複数のメッセージM(m),・・・,M(n−1)を識別することができる。例えば、通信システム1が起動してから通信装置100から最初に受信したメッセージからn回目に受信するメッセージM(n)のデータフィールド内に圧縮メッセージ認証子を検出した場合、メッセージM(n)の受信順を基準に過去に受信したメッセージに対する検証ステータスSvは、全て”未検証”となっているので、最初に受信したメッセージM(m)とすると、メッセージM(n)を加えたメッセージM(m),・・・M(n−2),M(n−1),M(n)のメッセージ群を認証対象メッセージとして識別することができる(ただし、m≦nである)。例えば、図8の例では、送信元の通信装置100を特定する情報Isが同じメッセージであって、受信時刻順に4番目に受信したメッセージに圧縮メッセージ認証子σが検出されたので、認証装置200が最初に受信した一番目のメッセージから圧縮メッセージ認証子σが検出された4番目に受信したメッセージまでの複数のメッセージ(4つのメッセージ)を、認証対象メッセージとして識別する。
また、過去に圧縮メッセージ認証子σを含むメッセージデータを受信している場合、圧縮メッセージ認証子σを含むメッセージに対応する検証ステータスSvは”検証成功”又は”検証失敗”となっているので、認証子検証部205は、メッセージM(n)の受信順を基準に、前回受信した認証子付きメッセージ、言い換えれば、最も最近の検証ステータスSvが”検証成功”又は”検証失敗”となっているメッセージM(m+1)を識別し、メッセージM(m+1)の次に受信したメッセージM(m+2),・・・・M(n−2),M(n−1)を、認証装置200が受信したメッセージのうち圧縮メッセージ認証子σを含まない過去に受信した複数のメッセージとして識別する。そして、メッセージM(n)を加えたメッセージM(m+2),・・・・M(n−2),M(n−1),M(n)のメッセージ群を認証対象メッセージとして識別することができる。例えば、図8の例では、送信元の通信装置100を特定する情報Isが「1」で受信順で最も最近に送信される10番目の未検証の認証子付きメッセージを基準に、最も最近の検証ステータスSvが”検証失敗”となっている5番目のメッセージを識別し、5番目のメッセージの次に送信された6番目のメッセージ、7番目のメッセージ及び圧縮メッセージ認証子σが検出された10番目に受信した複数の各メッセージ(3つのメッセージ)を、認証対象メッセージとして識別する。
また、システム起動後に一番最初に受信したメッセージのデータフィールドに圧縮メッセージ認証子σが検出された場合や、メッセージM(n)の受信順を基準に、最も最近の検証ステータスSvが”検証成功”又は”検証失敗”となっているメッセージが受信順で1つ前のメッセージである場合(図8の例では受信順で8番目のメッセージ)は、メッセージM(n)の受信順を基準に、過去に圧縮メッセージ認証子σを含むメッセージデータを受信していないので(検証ステータスSvが”検証成功”又は”検証失敗”の受信メッセージがないので)、データフィールドに圧縮メッセージ認証子σが検出されたメッセージM(n)自身のみを対象にした認証処理が遂行される。
なお、通信装置100から受信したメッセージM(n)に圧縮メッセージ認証子σが含まれているか否かは、データフィールドを参照して上述したようにメッセージIDから一意に定まるデータ本体Dのデータ長、又はデータ本体Dの直後に付与された識別情報に基づいてデータフィールド内の圧縮メッセージ認証子σの開始位置を識別し、メッセージM(n)に圧縮メッセージ認証子σが含まれているか否かを判別できる。
認証子検証部205は、認証対象メッセージとして識別された各メッセージのデータ本体Dそれぞれを記憶部203から抽出し、抽出された複数のデータ本体D及び鍵管理部204から取得する当該通信装置100と共有する共通鍵Kを用い、通信装置100の認証子生成部105と同様の認証子生成処理を遂行して、メッセージ認証子T’及び生成されたメッセージ認証子T’をデータ長Lまで圧縮した圧縮メッセージ認証子σ’を生成する。
認証子検証部205は、当該認証子検証部205が生成した圧縮メッセージ認証子σ’と、受信メッセージMに含まれる圧縮メッセージ認証子σを比較し、1つの認証子を用いた複数のメッセージ全体の完全性に対する認証チェックを遂行する。比較の結果、不一致である場合には、複数のメッセージのうち少なくとも1つ以上のメッセージに改ざんやなりすましの可能性があると判断する。改ざんやなりすましの可能性があると判断された場合、認証子検証部205は、制御部202に検証失敗を通知する。
図9は、本実施形態の認証装置200のメッセージ受信処理の動作フローの一例を示す図である。また、図10は認証子生成処理を含む認証子検証処理の動作フローの一例を示す図である。本実施形態のメッセージ受信処理は、認証子検証処理が含まれる。
図9に示すように、認証装置200は、通信装置201を介してネットワークNWから通信装置100から送信されるメッセージを受信し、メッセージM(n)を受信したことを契機に、メッセージ受信処理を開始する(S401)。
制御部202は、受信したメッセージM(n)のデータ本体D(n)を記憶部203に記憶する。制御部202は、データ本体D(n)、メッセージM(n)のメッセージID、メッセージM(n)の送信元の通信装置100を特定する情報Is、メッセージMを受信した時刻Tr、メッセージ認証子Tの検証のステータスSv(未検証)を、記憶部203に記憶する(S402)。なお、送信元の通信装置100は、例えば、メッセージID、データ本体D、メッセージ周期などから特定できる。
制御部202は、記憶部103へのデータ本体D(n)の記憶処理を契機に、認証子検証命令を認証子検証部205に送信する(S403)。認証子検証命令を受信した認証子検証部205は、図10に示すように認証子検証処理を開始する。
図10に示すように、認証子検証部205は、受信したメッセージM(n)のデータフィールド内の圧縮メッセージ認証子σを検出する(S501)。認証子検証部205は、メッセージM(n)のデータフィールドに圧縮メッセージ認証子σがないと判別された場合、認証子検証処理を終了して制御部202に受信したメッセージM(n)のデータフィールド内の圧縮メッセージ認証子σがない旨の通知を出力する(S501のNO)。
一方、メッセージM(n)のデータフィールドに圧縮メッセージ認証子σがあると判別された場合、認証子検証部205は、圧縮メッセージ認証子σ’を生成する。認証子検証部205は、認証対象メッセージを識別し(S502)、記憶部203から圧縮メッセージ認証子σが検出されたメッセージM(n)のデータ本体D(n)及びデータ本体D(n)と同じ送信元情報Isのデータ本体D(m),…,D(n−1)を取得する(S503)。また、認証子検証部205は、鍵管理部204から送信元情報Isで特定される通信装置100と認証装置200が共有する共通鍵Kを取得する(S504)。
認証子検証部205は、取得した複数のデータ本体Dと共通鍵Kを用いて、メッセージ認証子T’を生成し(S505)、メッセージM(n)のデータフィールドの空き領域の長さLにメッセージ認証子T’を圧縮処理して(S506)、圧縮メッセージ認証子σ’を生成する。
認証子検証部205は、メッセージM(n)のデータフィールドに格納されている圧縮メッセージ認証子σと、生成した圧縮メッセージ認証子σ’とを比較し、両者が一致する場合には、制御部202に検証成功の旨の検証結果を通知し、一致しない場合には、制御部202に検証失敗の旨の検証結果を通知する(S507)。
制御部202は、認証子検証部205からの検証結果に基づいて、検証成功の場合には(S404のYES)、記憶部203のメッセージM(m),…,M(n)の全ての検証ステータスSvを“検証成功”に更新し(S406)、検証失敗の場合には(S404のNO)、記憶部203のメッセージM(m),…,M(n)の全ての検証ステータスSvをエラー処理(S405)をして“検証失敗”に更新する(S406)。圧縮メッセージ認証子σ’が検出されたメッセージM(n)のデータ本体D(n)に対応する検証ステータスSvのみを“検証成功”又は“検証失敗”に更新してもよい。
制御部202は、検証失敗の場合(S404のNO)、関連する通信装置100、ステップS405のエラー処理として、例えば、記憶部203の送信元情報Isから特定されるメッセージ送信元の通信装置100に通信部201のインタフェースを介してエラーメッセージ(例えば、再送メッセージ)を送信したり、記憶部203のメッセージIDから特定されるメッセージ送信先の通信装置100に通信部201のインタフェースを介してエラーメッセージ(例えば、該当メッセージに関する処理中止メッセージなど)を送信する、エラー処理を遂行できる。
制御部202は、その後、メッセージ受信処理が終了する。
なお、認証子検証部205は、認証子検証処理を終えた際に、記憶部203から認証対象メッセージの全データ本体Dを削除することもできる。
このように本実施形態の通信システム1は、通信負荷を抑制したメッセージ認証を行うことができる。
すなわち、複数のメッセージを入力データとしてメッセージ認証子を生成し、メッセージ認証子をデータフィールドに空き領域があるメッセージにのみ付与するので、ネットワークの通信負荷を最小限に抑えつつ、メッセージの完全性を保証した通信環境を実現できる。
送受信されるメッセージに格納可能なデータのデータ長が短い通信、例えば、自動車の制御システムなどに利用されるCAN通信(Controller Area Network)通信のような、データを格納するデータフィールドが8バイトと短く、リアルタイム制御を要求される場合であっても、本実施形態の通信システムを車両用の電子制御装置(ECU)に適用することで、メッセージの種別を問わずに複数のメッセージを入力データとする1つのメッセージ認証子を生成してデータ量を低減させつつ、データ本体Dを含むメッセージのデータフィールドの空き領域を利用してメッセージ認証子を送信することで、ネットワークの通信負荷を最小限に抑えたメッセージ認証を実現することが可能となる。
なお、CAN通信(プロトコル)以外にも、LIN通信、FlexRay通信、I2C通信などの、メッセージに格納可能なデータのデータ長が短い通信においても本実施形態の通信システム1は、ネットワークの通信負荷を最小限に抑えたメッセージ認証を実現することができ、これらの通信規格以外の通信プロトコルの通信システムでも同様である。
また、本実施形態では、空き領域が検出されたメッセージMのデータ本体Dを含むメッセージ認証子を生成しているが、これに限らず、例えば、空き領域が検出されたメッセージMのデータ本体Dを含まないメッセージ認証子を生成し、空き領域が検出されたメッセージMのデータ本体Dに対するメッセージ認証子は、次の送信するメッセージにおいて空き領域が検出された際のメッセージ認証子の対象となるようにしてもよい。
(第2実施形態)
図11から図14は、第2実施形態に係る図である。
本実施形態は、上記第1実施形態に対し、メッセージ認証子を用いたメッセージ認証の対象となるメッセージを、メッセージ種別毎に予め割り当てられたメッセージ重要度を用いてフィルタリングし、メッセージの完全性を保証するセキュリティ上の重要度の高いメッセージのみを認証対象としたメッセージ認証を行う実施態様である。
例えば、システムの状況に応じてメッセージ認証子を付与するメッセージの重要度を選択することで、必要最低限の安全性(メッセージに対する完全性の保証)を確保する観点からセキュリティ上の重要度の高いメッセージのみを選別してメッセージ認証子を用いた認証対象を減らし、ネットワークの通信負荷をより抑制したメッセージ認証を行う通信システムを実現する。
図11は、本実施形態の通信システム1Aの構成例を示す図である。以下の説明では、第1実施形態との相違点を中心に述べ、各図における同一の図番が付された同一の構成及び処理についての説明は省略する。本実施形態の通信システム1Aの通信装置100及び認証装置200それぞれには、メッセージ重要度記憶部108、206が設けられ、同じメッセージ別重要度情報を共有している。
メッセージ重要度記憶部108は、制御部102から読出/書込可能なハードウェア資源としての記憶装置であり、図12に示す通信装置100が送信するメッセージのメッセージID別の重要度と、メッセージ認証子を用いたメッセージ認証の対象メッセージ(メッセージ認証子Tがデータフィールドに格納される対象となるメッセージ)の重要度のしきい値とを記憶している。メッセージ重要度記憶部206も同様である。
本実施形態のメッセージの重要度は、例えば、1(低)〜5(高)段階で定義することができ、各メッセージの特性に応じた重要度がメッセージID別に関連付けられる。CAM通信を一例に説明すると、例えば、車両の制御システムにおいて、ブレーキやエンジンに関連するメッセージの重要度を高く設定し、ドア施錠に関連するメッセージの重要度を低く設定することができる。
また、図12に示すように、各メッセージに関連付けられる重要度は、メッセージの種類別に固定的(静的)に関連付けることもできが、可変的(動的)に各メッセージに対する重要度を決定して関連付けることもできる。例えば、不正メッセージ検出の必要性が変化する場合、各メッセージの重要度を動的に決定してもよく、車両の制御システムにおいて、走行中はブレーキやエンジンに関連するメッセージに対する重要度のみ高くし、停車中はドア施錠に関連するメッセージに対する重要度のみ高くすることができる。このような動的な各メッセージに対する重要度の決定は、制御部102が遂行することができ、走行中のメッセージ別重要度情報と、停車中のメッセージ別重要度情報と個別にメッセージ重要度記憶部108に予め記憶しておき、制御部102が走行中である場合には走行中のメッセージ別重要度情報を、停車中である場合には停車中のメッセージ別重要度情報を選択して、各メッセージの重要度を識別可能に制御することができる。
重要度のしきい値は、メッセージ認証子を用いたメッセージ認証の対象となるメッセージを選別する基準であり、本実施形態では、しきい値以上の重要度のメッセージのみがメッセージ認証子を用いたメッセージ認証の対象となるメッセージ、言い換えれば、メッセージ認証子Tを付与する対象となるメッセージとなる。しきい値未満の重要度が割り当てられたメッセージは、メッセージ認証子を用いたメッセージ認証の対象外のメッセージとなる。
なお、重要度のしきい値は、システムパラメータとして固定的(静的)に決定することもでき、また、可変的(動的)に決定することもできる。例えば、不正メッセージ検出の必要性が変化するシステムの場合、重要度のしきい値を動的に決定してもよく、システムが通常動作しているときは、しきい値を低く設定してメッセージの通信負荷よりも不正メッセージの検出率を高くし、システムの緊急時には、しきい値を高く設定して不正メッセージの検出率よりもメッセージの通信負荷を抑えて、システムの動作を優先することができる。この場合も予め通常動作時の第1しきい値及び緊急動作時の第2しきい値を個別にメッセージ重要度記憶部108に記憶しておき、制御部102は、通常動作時は第1しきい値を、緊急動作時は第2しきい値を選択して、重要度のしきい値を可変に制御できる。
図13は、本実施形態のメッセージ送信処理の動作フローの一例を示す図であり、通信装置100の制御部102は、アプリケーション部107からデータ本体Dが出力されると(S101)、メッセージ重要度記憶部108を参照し、生成されたデータ本体Dをデータフィールドに含むメッセージMの重要度を当該データ本体Dから特定されるメッセージIDに基づいて識別し、識別されたデータ本体Dに対応する重要度がしきい値以上であるか否かを判別して(S1011)、しきい値以上の重要度のデータ本体Dのみを記憶部103に記憶する(S102)。
通信装置100は、メッセージMの重要度がしきい値以上であると判別し、メッセージ認証子Tを付与する対象メッセージであると判断された場合、第1実施形態と同様に、メッセージMに含まれるデータフィールドのデータ本体DをD(n)として記憶部103に記憶し、メッセージMに対する認証子付与処理及び認証子生成処理を含むメッセージ送信処理が遂行される。
一方、ステップS1011において、メッセージMの重要度がしきい値未満であると判別された場合、制御部102は、データ本体DをD(n)として記憶部103に記憶せずに、かつ認証子付与処理の命令出力及び認証子生成処理の命令出力を経ずに、ステップS104に進み、制御部102は、メッセージM(n)のデータフィールド以外の部分であるヘッダH及びトレーラCを生成し、通信部101のインタフェースを通じてネットワークNWにメッセージM(n)を送信する(S105)。
なお、制御部102は、ステップS106においてメッセージM(n)送信後の一定期間内に送信先の通信装置100からエラーメッセージを受信したり、送信先の通信装置100から送信失敗を示す応答メッセージを受信した場合は、アプリケーション部107にメッセージ再送命令を出力し、ステップS101に戻ってメッセージM(n)に対するメッセージ送信処理を再度遂行する。このとき、制御部102は、重要度がしきい値未満であると判断されたメッセージMに対しては、メッセージ送信のみを行い、記憶部103への送信時刻Ts及びメッセージステータスSm等の送信ログ情報の記憶は行わなくてもよい。
図14は、制御部202における本実施形態のメッセージ受信処理の動作フローの一例を示す図である。認証装置200の制御部202は、通信装置201を介してネットワークNWから通信装置100から送信されるメッセージを受信し、メッセージM(n)を受信したことを契機に、メッセージ受信処理を開始する(S401)。
制御部202は、メッセージ重要度記憶部206を参照し、受信したメッセージM(n)の重要度をメッセージIDに基づいて識別し、識別されたデータ本体Dに対応する重要度がしきい値以上であるか否かを判別して(S4011)、しきい値以上の重要度のメッセージM(n)のみを記憶部203に記憶する(S402)。制御部202は、しきい値以上の重要度のメッセージM(n)、言い換えれば、記憶部203に記憶されるメッセージM(n)に対してのみ、認証子検証部205による認証子検証処理を含むメッセージ受信処理を遂行する。
一方、ステップS4011において、メッセージMの重要度がしきい値未満であると判別された場合、制御部202は、メッセージ受信処理(メッセージ認証処理)を終了する。
本実施形態は、メッセージの種類別に重要度付けを行い、メッセージ認証子を用いたメッセージ認証の対象となるメッセージを、メッセージ重要度を用いてフィルタリングすることで、メッセージの完全性を保証するセキュリティ上の重要度の高いメッセージのみを認証対象としたメッセージ認証を行うことができる。
このため、本実施形態では、重要度の高い必要最低限のメッセージに対する完全性の保証しつつ、しきい値未満の重要度のメッセージに対するメッセージ認証を行わないことで、ネットワークの通信負荷をより抑制したメッセージ認証を行う通信システムを実現することができる。
(第3実施形態)
図15から図23は、第3実施形態に係る図である。以下の説明でも、第1実施形態との相違点を中心に述べ、各図における同一の図番が付された同一の構成及び処理についての説明は省略する。
本実施形態は、第1実施形態のメッセージ送信処理において、メッセージ認証子を用いたメッセージ認証の対象となるメッセージが所定の条件を満たす場合に、メッセージ認証子を生成してメッセージ認証専用メッセージを送信する実施形態である。
第1実施形態のメッセージ送信処理では、認証子付与処理を通じてデータフィールドにメッセージ認証子Tを格納可能な空き領域を検出し、その空き領域にメッセージ認証子Tを格納し、データフィールドにデータ本体D及びメッセージ認証子を含むメッセージを生成してメッセージ送信を行うが、本実施形態では、認証子付与処理においてデータフィールドにメッセージ認証子Tを格納可能な空き領域を検出されない場合、認証子付与条件マッチングを行い、認証子付与条件にマッチングする場合に、複数のメッセージに対する1つのメッセージ認証子を強制的に発生させ、アプリケーション部107で生成されるデータ本体Dをデータフィールドに含むメッセージとは個別に、メッセージ認証子のみを含む認証専用メッセージを生成して送信する。
図15は、本実施形態の通信システム1Bの構成例を示す図であり、図1に示した通信装置100が認証子付与条件記憶部109をさらに含んで構成される。認証子付与条件記憶部109は、制御部102を介して読出/書込可能なハードウェア資源としての記憶装置であり、通信装置100が送信するメッセージのメッセージID別に認証子付与条件情報を記憶している。
図16は、認証子付与条件情報の一例を示す図であり、認証子付与条件は、送信するメッセージに対するメッセージ認証子の生成条件である。図16に示すようにメッセージの種類(メッセージID)別に、未付与メッセージ数、未付与時間、認証子有無等の条件情報を記憶している。例えば、未付与メッセージ数は、送信順で最も最新に送信されるデータ本体Dに対応するメッセージM(n)のメッセージIDが「10000000010」の場合、送信順を基準に、過去に同じメッセージIDのメッセージが、メッセージ認証子の認証子生成対象メッセージとなっておらず、そのメッセージ数(認証子ステータスStが”未送信”の同じメッセージIDのメッセージ数)が記憶部103に10個存在する場合に、メッセージ認証子を生成して認証専用メッセージを送信する。
未付与時間(msec)は、送信順で最も最新に送信されるデータ本体Dに対応するメッセージM(n)のメッセージIDが「10000000010」の場合、過去に同じメッセージIDのメッセージが、前回メッセージ認証子を含む認証子付きメッセージ又は認証専用メッセージが送信されてから起算して(送信順で最も最近の認証子ステータスStが”送信済”のメッセージの送信時刻から起算して)、データ本体Dに対応するメッセージM(n)の送信時刻までにメッセージ認証子を含む認証子付きメッセージ又は認証専用メッセージが送信されていない時間が1000msecを超える場合、メッセージ認証子を生成して認証専用メッセージを送信する。
図16の例では、メッセージM(n)のメッセージIDが「10000000011」の場合、認証子付与条件が設定されていないので、認証専用メッセージを生成しない。
また、認証子有無は、データフィールドの空き領域の検出有無に関係なく、認証子付与処理を経ずに必ずメッセージ認証子を生成して認証専用メッセージを送信する。図16の例では、メッセージID「10000000100」に認証子有無の「MUST」が設定され、メッセージM(n)のメッセージIDが「10000000100」を送信する場合、当該メッセージM(n)のデータフィールドの空き領域の有無に関係なく、必ずメッセージ認証子を生成して認証専用メッセージを送信する。
なお、本実施形態の未付与メッセージ数、未付与時間、認証子有無等の各条件情報は、1つのメッセージに対してOR条件又はand条件とすることができ、図16の例では、メッセージM(n)のメッセージIDが「10000000010」に、未付与メッセージ数と未付与時間がそれぞれOR条件で、設定されている。
また、図16の例では、各メッセージの種類毎に各認証子付与条件が設定されているが、これに限らずに、メッセージの種類に関係なく、通信装置100が送信する全メッセージを対象とした、メッセージ認証子の生成間隔やメッセージ認証子の対象メッセージとなっていないメッセージ数を、認証子付与条件として設定することもできる。さらに、このような各認証子付与条件は、認証装置200で管理することもでき、認証装置200の認証子検証処理が所定時間以上行われてない場合、認証装置200が通信装置100に対してメッセージ認証子の生成命令を送信し、通信装置が認証装置200から受信するメッセージ認証子の生成命令を認証子付与条件として、メッセージ認証子を生成して認証専用メッセージを送信することができる。
図17は、本実施形態のメッセージ送信処理例の説明図である。図18は、記憶部103に記憶されるメッセージに関する情報の一例を示す図であり、図4と同様に、アプリケーション部107で生成されたデータ本体DのメッセージID、データ本体D、メッセージ送信時刻Ts、メッセージステータスSm、認証子ステータスStを記憶している。
通信装置100の制御部102は、アプリケーション部107で生成されたデータ本体Dをデータフィールドに含む送信メッセージを生成して送信する前に、アプリケーション部107で生成された全てのデータ本体Dを一旦記憶部103に送信順に記憶する。
本実施形態では、第1実施形態同様、認証子付与部106及び認証子生成部107による認証子付与処理及び認証子生成処理を経て、データフィールドにデータ本体D及びメッセージ認証子Tを含む認証子付きメッセージを送信するメッセージ送信処理を遂行するとともに、認証子付与処理においてデータフィールド内にメッセージ認証子を格納するための空き領域の検出とは関係なく(認証子付きメッセージではなく)、アプリケーション部107で生成されたデータ本体Dをデータフィールドに含む送信メッセージの送信処理を契機に、認証子付与条件に基づいて強制的に個別の認証専用メッセージを送信する処理を遂行する。なお、データフィールドにデータ本体D及びメッセージ認証子Tを含む認証子付きメッセージを送信するメッセージ送信処理は、第1実施形態と同様である。
図17の例ではメッセージ送信時刻の古い順に、メッセージM(n−2)、メッセージM(n−1)及び最も送信順が新しいメッセージM(n)に空き領域検出処理に基づく空き領域が検出されなかった場合、認証子付与条件記憶部109を参照し、認証子付与条件マッチング処理を遂行する。
本実施形態では、各メッセージM(n−2)、メッセージM(n−1)及び最も送信順が新しいメッセージM(n)のそれぞれの空き領域検出処理において、空き領域が検出されなかった場合、それぞれ認証子付与条件マッチング処理を遂行する、図17では、各メッセージM(n−2)、メッセージM(n−1)の各認証子付与条件マッチング処理では、認証子付与条件にマッチングせず、メッセージM(n)の認証子付与条件マッチング処理で認証子付与条件にマッチングした例を示している。
認証子付与部106は、認証子付与条件にマッチングすると、認証子生成部105に制御部102を介して認証専用メッセージの認証子生成命令を送信し、認証子生成部105は、該命令に基づいて認証専用メッセージの認証子生成処理を遂行する。なお、制御部102は、空き領域が検出されなかった時点で認証子付与条件マッチング処理とは関係なく、メッセージ作成処理及びメッセージ送信処理を通じて当該メッセージMを、認証専用メッセージとは別に、ネットワークNWに出力する送信処理を遂行する。
認証子生成部105は、送信順で最も新しく空き領域が検出されなかったメッセージM(n)を基準に、当該メッセージM(n)を含むメッセージ認証子対象メッセージを識別する。
本実施形態では、メッセージM(n)の送信順を基準に、通信装置100が送信したメッセージのうちメッセージ認証子の対象メッセージとならず、空き領域検出処理に基づく空き領域が検出されなかった過去に送信された複数のメッセージM(m),・・・,M(n−1)と、メッセージM(n)とを記憶部103を参照して認証専用メッセージのメッセージ認証子の対象メッセージとして識別する。
認証子生成部105は、認証子ステータスStを参照することで、メッセージM(n)の送信順を基準に、通信装置100が送信したメッセージのうちメッセージ認証子Tを含まないで過去に送信された複数のメッセージM(m),・・・,M(n−1)を識別することができる。図18の例では、送信時刻順に3番目のメッセージ以降、空き領域検出処理に基づく空き領域が検出されず、9番目のメッセージに空き領域が検出されなかったものの、認証子付与条件にマッチングしたので(未付与時間が条件値を超えたので)、3番目から8番目の各メッセージと、9番目のメッセージとを認証対象メッセージとして識別する。
認証子生成部105は、認証対象メッセージとして識別された各メッセージのデータ本体Dそれぞれを抽出し、第1実施形態同様に、複数のメッセージを対象にした1つのメッセージ認証子Tを、これら複数のデータ本体D及び共通鍵Kを用いて生成(計算)する。データ本体Dを入力データとし、データ本体D(m),…,D(n)及び共通鍵Kを用い、「メッセージ認証子T=MAC(K,D(m)‖…‖D(n))」を計算し、メッセージ認証子Tを生成する。
また、本実施形態の認証対象メッセージは、図2で示した同様のデータ構造を有し、データフィールドにメッセージ認証子のみを含むメッセージであるので、メッセージ認証子を格納する十分な空き領域が存在する。このため、認証子生成部105は、第1実施形態のように生成されたメッセージ認証子Tを圧縮しなくてもよい。
認証子付与部106は、認証生成部105でメッセージ認証子Tが生成されると、メッセージ認証子TをメッセージM(n)のデータフィールドに格納し、制御部102は、メッセージM(n)のデータフィールド以外の部分であるヘッダ及びトレーラを付与し、メッセージ認証子Tのみを含んだデータフィールドを有する認証専用メッセージを生成する。制御部102は、通信部101のインタフェースを通じてネットワークNWに認証専用メッセージを出力する。
図19は、本実施形態の通信システム1Bの認証子付与部106における認証子付与処理の動作フローを示す図である。図20は、同じく通信システム1Bの認証子生成部105における本実施形態の認証専用メッセージの認証子生成処理の動作フローを示す図である。
認証子付与部106は、ステップS202の空き領域検出処理において空き領域が検出されなかった場合に、認証子付与条件記憶部109を参照して認証子付与条件マッチング処理を遂行する(S2011)。認証子付与部106は、認証子付与条件にマッチングすると判別された場合、認証子生成部105に制御部102を介して認証専用メッセージの認証子生成命令を送信した後(S2012)、認証子付与処理を終了する。
認証子付与部106は、ステップS202の空き領域検出処理において空き領域が検出されなかった場合に、制御部102は、認証子付与条件マッチング処理とは個別に、メッセージ作成処理(S105)及びメッセージ送信処理(S106)を通じて空き領域が検出されなかったメッセージMを、ネットワークNWに出力する送信処理を遂行する。
認証子生成部105は、認証専用メッセージの認証子生成命令を受信すると(S301)、記憶部103を参照して、認証子生成対象メッセージを識別し(S3012)、識別された認証子生成対象メッセージのデータ本体D(m),…,D(n)を記憶部103から取得する(S303)。また、認証子生成部105は、認証装置200と事前に共有された共通鍵Kを鍵管理部104から取得する(S3014)。
認証子生成部105は、取得した複数のデータ本体Dと共通鍵Kを用いて、複数のメッセージを対象にした1つのメッセージ認証子Tを生成し(S3015)、生成したメッセージ認証子Tを制御部102に出力した後(S3016)、認証子生成処理を終了する。
認証子付与部106は、認証生成部105でメッセージ認証子Tが生成されると、メッセージ認証子Tをデータフィールドに格納し、制御部102は、データフィールド以外の部分であるヘッダ及びトレーラを付与し、メッセージ認証子Tのみを含んだデータフィールドを有する認証専用メッセージを生成する(S104)。制御部102は、通信部101のインタフェースを通じてネットワークNWに認証専用メッセージを出力する(S105)。
制御部102は、データ本体D(m),…,D(n)に対応する各メッセージのメッセージ送信履歴情報における認証子ステータスStを“送信済”に更新する(S106)。
図21は、本実施形態の通信システム1Bの制御部102におけるメッセージ送信処理の変形例を示す図である。本実施形態の認証子付与条件マッチング処理は、認証子付与処理及びメッセージMの空き領域に格納される認証子の生成処理とは個別に、遂行することができる。
図21に示すように、通信装置100の制御部102は、記憶部103へのデータ本体D(n)の記憶処理を契機に、認証子付与命令を認証子付与部106に送信(S103)する前に、認証子付与条件マッチング処理を遂行(S1012)し、認証子付与条件にマッチングすると判別された場合に、図20の認証専用メッセージの認証子生成処理を経て、認証専用メッセージを生成(S1013)して送信する。また、ステップS1012において認証子付与条件にマッチングしないと判別された場合、制御部102は、認証子付与命令を認証子付与部106に出力し、認証子付与部106及び認証子生成部105を通じたデータフィールドの空き領域を利用したメッセージ認証子の送信処理を行う(S104〜S106)。
図22は、本実施形態の認証装置200のメッセージ受信処理の動作フローの一例を示す図である。また、図23は認証専用メッセージを用いた認証子検証処理の動作フローの一例を示す図である。
図22に示すように、認証装置200は、通信装置201を介してネットワークNWから通信装置100から送信されるメッセージを受信し、メッセージM(n)を受信したことを契機に、メッセージ受信処理を開始する(S401)。このとき、受信したメッセージが認証専用メッセージであるか否かを判別し(S4012)、認証専用メッセージでない場合は、ステップS402に進んで、第1実施形態と同様の認証子検証処理を含むメッセージ受信処理を遂行する。
制御部202は、ステップS4012において、受信したメッセージが認証専用メッセージであると判別された場合、認証子検証部205に、認証専用メッセージを用いた認証子検証処理命令を送信し、認証子検証部205が認証専用メッセージを用いた認証子検証処理を遂行する。
認証子検証部205は、認証専用メッセージを用いた認証子検証処理命令を受信すると、認証対象メッセージを識別し(S5011)、記憶部203から識別された認証対象メッセージのM(n)のデータ本体D(n)及びデータ本体D(n)と同じ送信元情報Isのデータ本体D(m),…,D(n−1)を取得する(S5012)。また、認証子検証部205は、鍵管理部204から送信元情報Isで特定される通信装置100と認証装置200が共有する共通鍵Kを取得する(S5013)。
認証子検証部205は、取得した複数のデータ本体Dと共通鍵Kを用いて、メッセージ認証子T’を生成し(S5014)、認証専用メッセージのデータフィールドに格納されているメッセージ認証子Tと、生成したメッセージ認証子T’とを比較し、両者が一致する場合には、制御部202に検証成功の旨の検証結果を通知し、一致しない場合には、制御部202に検証失敗の旨の検証結果を通知する(S5015)。
制御部202は、認証子検証部205からの検証結果に基づいて、検証成功の場合には(S404のYES)、記憶部203のメッセージM(m),…,M(n)の全ての検証ステータスSvを“検証成功”に更新し(S406)、検証失敗の場合には(S404のNO)、エラー処理(S405)をして記憶部203のメッセージM(m),…,M(n)の全ての検証ステータスSvを“検証失敗”に更新する(S406)。制御部202では、その後、メッセージ受信処理が終了する。
本実施形態では、複数のメッセージを入力データとしてメッセージ認証子を生成し、メッセージ認証子を通信装置100が送信するデータ本体Dを含むメッセージとは個別の認証専用メッセージに格納して送信することにより、通信装置100が送信するメッセージに空き領域が検出されなくても、通信負荷を抑制した認証子を用いたメッセージ認証を実現することができる。
以上、本発明の実施形態を説明したが、当該実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。