(57)【要約】【課題】  メッセージデータを分割した通信パケット毎にデータの改竄検出を行って通信データの改竄検出時間を短縮できるようにする。【解決手段】  送信側装置が送信対象のメッセージデータを分割して複数のパケットとして受信側装置へ送信する通信システムにおいて、通信パケットのデータ領域を、伝達対象のデータ（メッセージデータを１パケット分に分割したデータ又はメッセージデータ自体）が配置されるオリジナルデータ領域Ｄ［ｎ］と、その領域Ｄ［ｎ］のデータについての改竄検出を行うための認証用データが配置される認証用データ領域Ｐ［ｎ］と、制御情報が配置される制御領域Ｃとに分けて使用する。これによれば、どのような通信プロトコルであっても、メッセージデータを分割したパケット毎にデータの改竄検出を行って、改竄検出時間を短縮できる。【選択図】  図２
2005167942.tif 000002
【特許請求の範囲】
【請求項１】
送信側装置がメッセージデータを分割し複数のパケットとして受信側装置へ送信する通信システムにおいて、
前記送信側装置は、
送信するパケットのデータ領域を、前記メッセージデータを１パケット分に分割した伝達対象データと、その伝達対象データの改竄検出を行うための認証用情報と、当該データ領域内の前記伝達対象データが前記メッセージデータのどの様な構成要素であるかを少なくとも示す制御情報とから構成し、
前記受信側装置は、
前記送信側装置から受信したパケット毎に、その受信したパケットのデータ領域（以下、受信データ領域という）に含まれている前記認証用情報を用いて、該受信データ領域に含まれている前記伝達対象データが前記送信側装置から送信された正常なデータであるか否かの改竄検出を行うと共に、該受信データ領域に含まれている前記制御情報に基づいて、該受信データ領域に含まれている前記伝達対象データから前記メッセージデータを再構成すること、
を特徴とする通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記送信側装置は、
前記メッセージデータのデータ長が１つのパケットで送信可能な長さである場合には、前記伝達対象データを前記メッセージデータとし、前記制御情報を前記伝達対象データ自体が前記メッセージデータである旨を示すものとして、前記パケットのデータ領域を構成し、
前記受信側装置は、
前記受信データ領域に含まれている前記制御情報が、前記伝達対象データ自体が前記メッセージデータである旨を示すものであったならば、前記受信データ領域に含まれている前記伝達対象データをメッセージデータとして扱うこと、
を特徴とする通信システム。
【請求項３】
請求項１又は請求項２に記載の通信システムにおいて、
前記認証用情報は、前記伝達対象データに依存しない固定値のデータであり、
前記送信側装置は、
前記認証用情報と暗号鍵とを記憶する送信側記憶手段を備えると共に、前記伝達対象データと、前記送信側記憶手段に記憶されている前記認証用情報と、前記制御情報とを、予め定められた順番に配置したデータ列を、前記送信側記憶手段に記憶されている前記暗号鍵を用いて暗号化することにより、前記パケットのデータ領域を作成し、
前記受信側装置は、
復号鍵と、前記送信側記憶手段に記憶される前記認証用情報と同一の認証用情報とを記憶する受信側記憶手段を備え、更に、前記受信データ領域を、前記受信側記憶手段に記憶されている前記復号鍵を用いて復号して、その復号した受信データ領域から前記伝達対象データ、前記認証用情報、及び前記制御情報を抽出すると共に、その抽出した認証用情報と、前記受信側記憶手段に記憶されている前記認証用情報とを比較して、両認証用情報が同一であれば、前記復号した受信データ領域内の伝達対象データは前記送信側装置から送信された正常なデータであると判定し、前記両認証用情報が同一でなければ、前記復号した受信データ領域内の伝達対象データは異常なデータであると判定すること、
を特徴とする通信システム。
【請求項４】
請求項３に記載の通信システムにおいて、
前記送信側記憶手段と前記受信側記憶手段とに記憶される前記認証用情報は、ランダム関数を用いて生成されたデータであること
を特徴とする通信システム。
【請求項５】
請求項１ないし請求項４の何れか１項に記載の通信システムにおいて、
前記制御情報には、前記データ領域の構成を示す情報も含まれていること、
を特徴とする通信システム。
【請求項６】
請求項５に記載の通信システムにおいて、
前記データ領域の構成を示す情報は、前記データ領域における前記伝達対象データのサイズ、または、前記伝達対象データ以外であるパディングのサイズを示す情報であること、
を特徴とする通信システム。
【請求項７】
送信側装置がメッセージデータを分割し複数のパケットとして受信側装置へ送信する通信システムに用いられる前記パケットの構造であって、
当該パケットのデータ領域には、
前記送信側装置から前記受信側装置へ前記メッセージデータを伝達させるために当該データ領域に含まれることとなる伝達対象データの他に、その伝達対象データの改竄検出を行うための認証用情報と、当該データ領域内の前記伝達対象データが前記メッセージデータのどの様な構成要素であるかを少なくとも示す制御情報と、が含まれていること、
を特徴とするパケット構造。
【請求項８】
請求項７に記載のパケット構造において、
前記認証用情報は、前記伝達対象データに依存しない固定値のデータであること、
を特徴とするパケット構造。
【請求項９】
請求項８に記載のパケット構造において、
前記認証用情報は、予めランダム関数を用いて生成されたデータであること、
を特徴とするパケット構造。
【請求項１０】
請求項７ないし請求項９の何れか１項に記載のパケット構造において、
前記制御情報には、前記データ領域の構成を示す情報も含まれていること、
を特徴とするパケット構造。
【請求項１１】
請求項１０に記載のパケット構造において、
前記データ領域の構成を示す情報は、前記データ領域における前記伝達対象データのサイズ、または、前記伝達対象データ以外であるパディングのサイズを示す情報であること、
を特徴とするパケット構造。
【請求項１２】
請求項７ないし請求項１１の何れか１項に記載のパケット構造において、
前記制御情報には、同じメッセージデータを分割したデータが前記伝達対象データとしてデータ領域に含まれるパケットのグループを識別可能な情報も含まれていること、
を特徴とするパケット構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ認証を行う通信に関するものである。
【背景技術】
【０００２】
従来より、通信ネットワークを介してメッセージデータを通信する際の第三者による改竄を検出するための技術として、メッセージ認証がある。
そして、一般的なメッセージ認証では、送信側が、メッセージデータとそのメッセージデータの特徴を圧縮して暗号化した認証子とを送信し、受信側は、これらのデータをすべて受信した後に、受信した認証子を用いて、受信したメッセージデータが本当に送信側から送信されたものであるか否かの改竄検出を行う。
【０００３】
例えば、図９に示すように、送信側では、送信すべきメッセージデータ（この例では、データＡとデータＢからなるデータ）に対して一方向関数であるハッシュ関数の処理を施してハッシュ値１０１を生成し、更に、そのハッシュ値１０１を暗号化して認証子（メッセージ認証子）１０３を生成する。そして、送信側は、メッセージデータを１パケット分ずつに分割した各データＡ，Ｂと、上記のようにして生成した認証子１０３との各々に、通信プロトコルに合ったヘッダやフッダを付けてパケット（通信パケット）を生成し、その各通信パケットを受信側へと順次送信する。尚、図９では、認証子が１個のパケット分しか示されていないが、認証子のデータ量が大きい場合には、その認証子も複数のパケットに分けて送信される。
【０００４】
一方、受信側では、送信側からの全てのデータ（この例では、データＡ，Ｂと認証子）を受信した後、受信したデータＡ，Ｂをつなげたメッセージデータに対してハッシュ関数の処理を施してハッシュ値１０５を生成すると共に、受信した認証子１０７を復号してハッシュ値１０９を生成し、その両ハッシュ値１０５，１０９を比較する。
【０００５】
そして、両ハッシュ値１０５，１０９が同一であれば、受信したメッセージデータ（データＡ，Ｂ）は通信途中に改竄されていない（つまり、送信側から送信されたもの）と判断するが、両ハッシュ値１０５，１０９が同一でなければ、受信したメッセージデータが通信途中に改竄されている（つまり、送信側から送信されたものではない）と判断して、送信側へ再送要求を送信する。すると、送信側は、再び、メッセージデータと認証子とを送信することとなる。
【０００６】
このように、従来からの一般的なメッセージ認証では、送信側が、メッセージデータと認証子とを送信し、受信側は、これらのデータを全て受信した後に、同じ認証子を生成可能か否かで改竄の検出を行っている。
【０００７】
尚、上記のようなメッセージ認証子の生成方法については、例えば特許文献１に記載されている。また、上記のようなメッセージ認証の手順については、例えば非特許文献１に記載されている。
【特許文献１】特開２００１−３１８６００号公報（［０００３］）
【非特許文献１】“メッセージ認証の仕組み”、［online］、［２００３年１０月２０日検索］、インターネット、＜ＵＲＬ：http://www5d.biglobe.ne.jp/~engineer/doc/security/security_ch3_01.htm＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記従来の方法では、受信側が全データを受信するまでは改竄検出を行うことができない。このため、通信データが改竄されてから、その改竄を検出するまでの遅れ時間（改竄検出時間）が長くなってしまうという問題がある。
【０００９】
そこで、本発明は、メッセージデータを分割した通信パケット毎にデータの改竄検出を行って通信データの改竄検出時間を短縮できるようにすることを目的としている。
【課題を解決するための手段】
【００１０】
上記目的を達成するためになされた請求項１に記載の通信システムでは、送信側装置がメッセージデータを分割し複数のパケットとして受信側装置へ送信するようになっており、特に、送信側装置は、送信するパケット（いわゆる通信パケット）のデータ領域を、メッセージデータを１パケット分に分割した伝達対象データ（つまり、本来送信すべきデータ）と、その伝達対象データの改竄検出を行うための認証用情報と、当該データ領域内の前記伝達対象データがメッセージデータのどの様な構成要素であるかを少なくとも示す制御情報とから構成する。そして、受信側装置は、送信側装置から受信したパケット毎に、その受信したパケットのデータ領域（受信データ領域）に含まれている認証用情報を用いて、該受信データ領域に含まれている伝達対象データが送信側装置から送信された正常なデータであるか否かの改竄検出を行うと共に、該受信データ領域に含まれている制御情報に基づいて、該受信データ領域に含まれている伝達対象データからメッセージデータを再構成する。
【００１１】
尚、メッセージデータは、送信側装置から受信側装置へ伝達させたい内容のデータであり、例えば文字データ，写真データ，音声データ，及び映像データや、電子制御装置が制御対象の制御に用いる制御用データ等が考えられる。
【００１２】
このような請求項１の通信システムによれば、下記（１）及び（２）の効果を得ることができる。
（１）：メッセージデータを分割して送信する通信パケット毎にデータの改竄検出を行うため、通信データの改竄検出時間（通信データが改竄されてから該改竄を検出するまでの遅れ時間）を短縮することができる。
【００１３】
また、受信側装置は、通信データの改竄を検出した場合に、その改竄を検出したパケットについてのみ、送信側装置へ再送要求を出せば良いため、通信データの改竄が生じた場合に、データを再送するための通信回数や通信データ量を減らすことができ、伝送路のトラフィックを増大させることを防ぐことができる。
【００１４】
（２）：一般に、車両用に開発された通信プロトコル（例えばＣＡＮ（Controller Area Network）プロトコル）など）の通信パケットでは、データ領域の前に付されるヘッダ領域に、本案の制御情報の様な情報が無く、また、データ領域も比較的小さいため、インターネットなどで利用されている一般的な手法のメッセージ認証を行うことが難しかったが、請求項１の通信システムによれば、そのような車両用に開発された通信プロトコルでも、メッセージ認証（通信データの改竄検出）を行うことができる。このため、本通信システムを車両用の電子制御装置に適用することにより、その電子制御装置のセキュリティ性能を向上させることができる。
【００１５】
次に、請求項２に記載の通信システムでは、請求項１の通信システムにおいて、送信側装置は、メッセージデータのデータ長が１つのパケットで送信可能な長さである場合には、前記伝達対象データを前記メッセージデータとし、前記制御情報を伝達対象データ自体がメッセージデータである旨を示すものとして、パケットのデータ領域を構成するようになっている。そして、受信側装置は、受信データ領域（受信したパケットのデータ領域）に含まれている制御情報が、伝達対象データ自体がメッセージデータである旨を示すものであったならば、その受信データ領域に含まれている伝達対象データをメッセージデータとして扱うになっている。
【００１６】
つまり、請求項２の通信システムでは、メッセージデータのデータ長が１つのパケットで送信可能な長さである場合には、そのメッセージデータを無理に分割せずに、１つのパケットで送信するようにしている。よって、１つのパケットで送信可能なデータ長のメッセージデータを効率的にやり取りすることができる。
【００１７】
次に、請求項３に記載の通信システムでは、請求項１，２の通信システムにおいて、前記認証用情報を、前記伝達対象データに依存しない固定値のデータとしている。
そして、送信側装置は、そのような固定値のデータである認証用情報と、暗号鍵とを記憶する送信側記憶手段を備えている。そして更に、送信側装置は、伝達対象データと、送信側記憶手段に記憶されている認証用情報と、制御情報とを、予め定められた順番に配置し、その配置により生成したデータ列を、送信側記憶手段に記憶されている暗号鍵を用いて暗号化することにより、パケットのデータ領域を作成するようになっている。
【００１８】
また、受信側装置は、復号鍵と、送信側記憶手段に記憶される認証用情報と同一の認証用情報とを記憶する受信側記憶手段を備えている。
そして、受信側装置は、送信側装置から受信したパケットのデータ領域を、受信側記憶手段に記憶されている復号鍵を用いて復号して、その復号したデータ領域から、伝達対象データ、認証用情報、及び制御情報を抽出すると共に、その抽出した認証用情報と、受信側記憶手段に記憶されている認証用情報とを比較して、両認証用情報が同一であれば、前記復号したデータ領域内の伝達対象データは送信側装置から送信された正常なデータであると判定し、両認証用情報が同一でなければ、前記復号したデータ領域内の伝達対象データは異常なデータであると判定する。尚、伝達対象データが異常なデータであると判定した場合には、データ領域からの伝達対象データの抽出自体を止めるか、或いは、抽出した伝達対象データを破棄すれば良い。そして、このことは請求項１，２の通信システムについても同様である。
【００１９】
このような請求項３の通信システムによれば、従来の技術のようにハッシュ関数の処理を行わない（つまり、認証用情報として、伝達対象データの特徴を圧縮して暗号化した一般的な認証子を用いるのではなく、固定値のデータを用いている）ため、通信のための処理量や処理時間を小さくすることができ、必要なハードウェアの要求性能を下げることができる。また、通信パケットのデータ領域は暗号化されているので秘匿性も高い。
【００２０】
尚、送信側記憶手段が記憶する認証用情報と受信側記憶手段が記憶する認証用情報とは、完全同一でなくても良く、実質的に同一または同一であると確かめることができるものであれば良い。例えば「１２３４５６７８９」という送信側記憶手段が記憶する認証用情報に対し、受信側記憶手段が記憶する認証用情報は「１から９までの数字を昇順に並べたデータ」といった内容を意味するものでも良い。
【００２１】
また、暗号化及び復号の手法は、例えば公開鍵を用いた公開鍵手法を用いるようになっていても良いが、例えばＤＥＳ（Data Encryption Standard）やＦＥＡＬ（Fast Encryption Algorithm）などの共通鍵ブロック暗号手法、または、ＲＣ４（Rivest's Cipher 4）などの共通鍵ストリーム暗号手法を用いることが好ましい。
【００２２】
共通鍵ブロック暗号手法を用いれば、暗号化対象のデータサイズが大きければ大きいほど効率良くブロック単位で暗号化できるため、暗号化対象のデータサイズの大きさの割には処理時間が短く済み、必要なハードウェアの要求性能も低いからである。また、共通鍵ストリーム暗号手法を用いれば、処理が単純であるため、高速化が容易であり、必要なハードウェアの要求性能も低い。
【００２３】
ところで、請求項３の通信システムにおいて、認証用情報としては、好ましくは送信側と受信側しか知り得ないようなビット列のデータが良い。
そこで、請求項４に記載の通信システムでは、請求項３の通信システムにおいて、送信側記憶手段と受信側記憶手段とに記憶される認証用情報が、ランダム関数を用いて生成されたデータとなっている。そして、このような請求項４の通信システムによれば、第三者が認証用情報を推測し難く、セキュリティの強度を上げることができる。
【００２４】
また、請求項１〜４の通信システムにおいて、メッセージデータのデータ長が一定ではなく、パケット毎に、そのデータ領域に含まれる伝達対象データのデータ長が変わって、そのデータ領域の構成が変化するのであれば、請求項５に記載の如く、前記制御情報には、データ領域の構成を示す情報も含まれるようにすれば良い。
【００２５】
このような請求項５の通信システムによれば、受信側装置は、データ領域の構成を示す情報から、今回受信したパケットのデータ領域の構成を知ることができる。このため、パケットのデータ領域における伝達対象データのデータ長が変わっても、対応することができる。
【００２６】
尚、データ領域の構成を示す情報としては、請求項６に記載のように、データ領域における伝達対象データのサイズ、または、データ領域におけるパディング（伝達対象データ以外）のサイズを示す情報とすることができる。つまり、データ領域における伝達対象データと認証用情報と制御情報との並び順が固定であると共に、データ領域全体と制御情報とのデータ長が一定であれば、受信側装置は、伝達対象データのサイズとパディングのサイズとの何れか一方が分かりさえすれば、受信データ領域の何処に何が配置されているのかを知ることができるからである。
【００２７】
一方、前述した請求項１，２の通信システムで用いられる通信パケットの構造としては、請求項７に記載のようなパケット構造が考えられる。
このパケット構造は、当該パケットのデータ領域に、送信側装置から受信側装置へメッセージデータを伝達させるために当該データ領域に含まれることとなる伝達対象データの他に、その伝達対象データの改竄検出を行うための認証用情報と、当該データ領域内の伝達対象データが前記メッセージデータのどの様な構成要素であるかを少なくとも示す制御情報と、が含まれていることを特徴としている。
【００２８】
そして、このような請求項７のパケット構造であれば、請求項１，２の通信システムについて述べた効果を得ることができる。
尚、伝達対象データがメッセージデータを分割したデータである場合には、制御情報としては、伝達対象データがメッセージデータを分割した何番目のデータであるかを示すものとすれば良く、また、請求項２に記載の如く、１つのデータ領域内の伝達対象データがメッセージデータの全てである場合には、制御情報としては、伝達対象データ自体がメッセージデータであることを示すものとすれば良い。
【００２９】
次に、請求項８に記載のパケット構造は、請求項７のパケット構造において、認証用情報は、伝達対象データに依存しない固定値のデータであることを特徴としている。
このような請求項８のパケット構造によれば、請求項３の通信システムで用いることができるため、その請求項３の通信システムについて述べた効果を得ることができる。
【００３０】
次に、請求項９に記載のパケット構造は、請求項８のパケット構造において、認証用情報は、予めランダム関数を用いて生成されたデータであることを特徴としている。
そして、このような請求項９のパケット構造によれば、請求項４の通信システムについて述べた効果を得ることができる。
【００３１】
次に、請求項１０に記載のパケット構造は、請求項７〜９のパケット構造において、制御情報には、データ領域の構成を示す情報も含まれていることを特徴としている。
このような請求項１０のパケット構造によれば、請求項５の通信システムで用いることができ、その請求項５の通信システムについて述べた効果を得ることができる。
【００３２】
また、データ領域の構成を示す情報としては、請求項１１に記載のように、データ領域における伝達対象データのサイズ、または、データ領域におけるパディングのサイズを示す情報とすることができる。そして、このような請求項１１のパケット構造によれば、請求項６の通信システムで用いることができる。
【００３３】
次に、請求項１２に記載のパケット構造では、請求項７〜１１のパケット構造において、制御情報には、同じメッセージデータを分割したデータが伝達対象データとしてデータ領域に含まれるパケットのグループを識別可能な情報（以下、グループ識別情報という）も含まれている。
【００３４】
この請求項１２のパケット構造によれば、受信側装置は、あるメッセージデータのパケットを全て受信できていないのに、他のメッセージデータのパケットを受信したことを、上記グループ識別情報から確実に検知することができるようになる。つまり、受信側装置は、あるメッセージデータＭａのパケットを全て受信できていないのに、グループ識別情報が異なるパケット（他のメッセージデータのパケット）を受信したならば、少なくともメッセージデータＭａのパケットの一部が何らかの原因で無くなって受信できなかったと判断することができ、延いては、通信の確実性を向上させることができる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明が適用された実施例について、図面を用いて説明する。
まず図１は、本実施例の通信システム１０の構成を表すブロック図である。
図１に示すように、本実施例の通信システム１０は、送信側装置１１と受信側装置２１とを備える。
【００３６】
そして、送信側装置１１は、操作部１３と制御部１４と記憶部１５と表示部１６と通信部１７とを備える。
操作部１３は、タッチパネルやキースイッチ等から構成され、使用者から各種の操作指示を受け付ける。
【００３７】
記憶部１５は、ＲＡＭやＥＥＰＲＯＭやハードディスク等のデータの読み出し及び書き込みが可能な記憶媒体を備え、制御部１４から渡されたデータを記憶したり、逆に制御部１４から指定されたデータを制御部１４に渡したりする。
【００３８】
表示部１６は、液晶ディスプレイや有機ＥＬディスプレイ等から構成され、制御部１４からの指令により様々な情報を表示させることができる。
通信部１７は、通信線Ｌによって受信側装置２１に接続され、受信側装置２１との通信の際のプロトコル処理等の通信機能を担う。
【００３９】
制御部１４は、周知のＣＰＵ、ＲＯＭ、ＲＡＭ及びそれらを結ぶバス等から構成され、例えば上記ＲＯＭに記憶されたプログラムに基づいて後述する送信処理等を実行する。
一方、受信側装置２１は、操作部２３と制御部２４と記憶部２５と通信部２７と表示部２６とを備える。
【００４０】
操作部２３は、タッチパネルやキースイッチ等から構成され、使用者から各種の操作指示を受け付ける。
記憶部２５は、ＲＡＭやＥＥＰＲＯＭやハードディスク等のデータの読み出し及び書き込みが可能な記憶媒体を備え、制御部２４から渡されたデータを記憶したり、逆に制御部２４から指定されたデータを制御部２４に渡したりする。
【００４１】
表示部２６は、液晶ディスプレイや有機ＥＬディスプレイ等から構成され、制御部２４からの指令により様々な情報を表示させることができる。
通信部２７は、上記通信線Ｌによって送信側装置１１の通信部１７に接続され、送信側装置１１との通信の際のプロトコル処理等の通信機能を担う。
【００４２】
制御部２４は、周知のＣＰＵ、ＲＯＭ、ＲＡＭ及びそれらを結ぶバス等から構成され、例えば上記ＲＯＭに記憶されたプログラムに基づいて後述する受信処理等を実行する。
そして、このようなハードウェア構成の通信システム１０において、送信側装置１１は、記憶部１５に記憶されている送信対象のメッセージデータを必要に応じて１パケット分ずつに分割し、通信パケットのデータ領域に含ませて受信側装置２１へと順次送信する。
【００４３】
尚、本実施例の通信システム１０において、１つのメッセージデータのデータ長は、１〜８バイトである。そして、本実施例におけるメッセージデータは、予め使用者が操作部１３を操作することによって入力されて記憶部１５に記憶された文字データであるが、他の装置から送信されて記憶部１５に記憶されたものであっても良く、また、文字データに限らず、画像データや動画データや制御対象を制御するための制御用データ等であっても良い。
【００４４】
次に、送信側装置１１から受信側装置２１へ送信されるパケット（通信パケット）の構造について、図２を用い説明する。
まず、本実施例の通信システム１０では、通信プロトコルとして、車載装置で広く使用されているＣＡＮを用いている。
【００４５】
このため、図２（Ａ）に示すように、通信パケットは、最大８バイト（＝６４ビット）のデータ領域と、そのデータ領域の前に付されるヘッダ領域と、データ領域の後に付されるフッダ領域とからなる。そして、ヘッダ領域には、データ領域のサイズ（長さ）を示すデータ長情報と、そのデータ領域内のデータの種類を示すＩＤ情報とが含まれる。
【００４６】
但し、本実施例では、データ領域を常に最大の８バイトに設定して使用するため、ヘッダ領域内のデータ長情報は、常に８バイトを示す値に設定される。
また、その８バイトのデータ領域には、送信側装置１１から受信側装置２１へ伝達したい本来の伝達対象データ（即ち、メッセージデータの一部あるいは全部であり、以下、オリジナルデータという）だけでなく、メッセージ認証（改竄検出）と通信制御に必要な他の情報も含ませるようにしている。そして、この点において、ＣＡＮを用いる一般の通信システムとは大きく異なっている。
【００４７】
即ち、図２（Ｂ）に示すように、８バイトのデータ領域は、ＬＳＢ側からＭＳＢ側への順に、オリジナルデータが配置されるオリジナルデータ領域Ｄ［ｎ］と、そのオリジナルデータについての改竄検出を行うための認証用データが配置される認証用データ領域Ｐ［ｎ］と、制御情報が配置される制御領域Ｃとに分けられている。そして、オリジナルデータ領域Ｄ［ｎ］のサイズは、１〜４バイトの範囲で１バイト単位で可変であり、認証用データ領域Ｐ［ｎ］のサイズは、２６ビット〜５０ビットの範囲で可変であるが、制御領域Ｃのサイズは、常に６ビットで固定されている。つまり、オリジナルデータのサイズによって、認証用データのビット数は変わるが、制御情報は常に６ビットである。
【００４８】
ここで、送信側装置１１の記憶部１５と、受信側装置２１の記憶部２５には、認証用データの元となるデータとして、予め、ランダム関数を用いて生成された５０ビットの同じ疑似乱数が記憶されている。そして、送信側装置１１では、オリジナルデータのビット数をＤＳ（＝８〜３２ビット）とすると、記憶部１５に記憶された５０ビットの上記疑似乱数のうち、ＭＳＢ側から「５８−ＤＳ」ビットを、認証用データとして通信パケットのデータ領域に填め込むようになっている。
【００４９】
尚、本実施例では、送信側装置１１と受信側装置２１とが同時に電源供給を受けて起動するようになっており、その起動時に、例えば、送信側装置１１の制御部１４がランダム関数により５０ビットの疑似乱数を生成して記憶部１５に記憶すると共に、その疑似乱数を受信側装置２１へ送信することにより、上記記憶部１５に記憶されたのと同じ疑似乱数が受信側装置２１の記憶部２５にも記憶されるようになっている。また例えば、送信側装置１１の記憶部１５と受信側装置２１の記憶部２５とがＥＥＰＲＯＭ等のデータ書込可能な不揮発性メモリを有するのであれば、送信側装置１１及び受信側装置２１の製造時や出荷時などにおいて、各記憶部１５，２５の上記不揮発性メモリに、予め生成した疑似乱数を固定値として記憶させておくようにしても良い。
【００５０】
また、図２（Ｃ）に示すように、上記制御領域Ｃに配置される６ビットの制御情報は、下位ビット側から順に、そのパケットのデータ領域におけるオリジナルデータのサイズ（即ち、オリジナルデータ領域Ｄ［ｎ］のサイズ）を示す２ビット（以下、データサイズ情報という）と、パケットの構成を示す２ビット（以下、パケット構成情報という）と、シーケンス番号の２ビット（以下、シーケンス番号情報という）とからなっている。
【００５１】
そして、データサイズ情報は、オリジナルデータが１バイトならば“０１”に、オリジナルデータが２バイトならば“１０”に、オリジナルデータが３バイトならば“１１”に、オリジナルデータが４バイトならば“００”に設定される。
【００５２】
尚、“”内の１又は０の数字列は、２進数表現のビット列を表している。また、本実施例では、前述したように、パケットのデータ領域におけるオリジナルデータ領域Ｄ［ｎ］と認証用データ領域Ｐ［ｎ］と制御領域Ｃとの並び順が固定であると共に、データ領域全体と制御領域Ｃとの長さが一定であるため、受信側装置２１では、オリジナルデータ領域Ｄ［ｎ］のサイズさえ分かれば、データ領域の何処に何が配置されているのかが分かる。このため、データサイズ情報は、データ領域の構成を示す情報であると言える。
【００５３】
また、パケット構成情報は、そのパケットが２パケット構成なのか１パケット構成なのかと、２パケット構成であるならば１パケット目なのか２パケット目なのかを示す情報である。尚、メッセージデータが４バイト未満ならば、そのメッセージデータは１つのパケットで送信可能であるため、そのメッセージデータを送信するためのパケットは、１パケット構成（詳しくは、１パケットのみの構成）となる。また、メッセージデータが５バイト以上ならば、そのメッセージデータは、ＭＳＢ側のデータとＬＳＢ側のデータとの２つに分けられて、ＭＳＢ側のデータを含んだ１パケット目と、ＬＳＢ側のデータを含んだ２パケット目との、２つのパケットで送信される。よって、その５バイト以上のメッセージデータを送信するためのパケットは、２パケット構成となる。
【００５４】
そして、パケット構成情報は、そのパケットが１パケット構成ならば“０１”に、そのパケットが２パケット構成の１パケット目ならば“１０”に、そのパケットが２パケット構成の２パケット目ならば“１１”に設定される。
【００５５】
このようなことから、パケット構成情報は、そのパケットのオリジナルデータ領域Ｄ［ｎ］のデータ（オリジナルデータ）が、メッセージデータのどの様な構成要素であるかを示す情報であると言える。また、パケット構成情報が“０１”であるということは、そのパケットのオリジナルデータ領域Ｄ［ｎ］のデータ自体がメッセージデータそのものである（メッセージデータを分割したものではない）ということを意味している。
【００５６】
一方、シーケンス番号情報は、１パケット構成のパケットについては、そのパケットを１つのグループとし、２パケット構成のパケットについては、その２つのパケットを１つのグループとして、各グループ毎に付される識別番号である。
【００５７】
そして、送信側装置１１は、各グループのパケットについて、シーケンス番号情報を、“００”→“０１”→“１０”→“１１”→“００”の順に、４通りを１サイクルとして変化させる。
【００５８】
このため、例えば、送信側装置１１から受信側装置２１へ２パケット構成のパケットが連続して送信される場合には、図６（Ａ）に示すように、受信側装置２１は、シーケンス番号情報が同じパケットを２個ずつ受信することとなる。尚、図６は、２パケット構成である３つのグループのパケットに対して、シーケンス番号情報が最初のグループから“００”→“０１”→“１０”の順に付けられた場合を例示している。
【００５９】
このようなことから、シーケンス番号情報は、同じメッセージデータを分割したデータがデータ領域に含まれるパケットのグループを識別可能な情報であると言える。
次に、送信側装置１１の制御部１４で実行される送信処理について、図３に示すフローチャートを用いて説明する。尚、この送信処理は、例えば、使用者によって送信側装置１１の操作部１３にメッセージデータを送信する旨の指令が入力されたときなど、といった送信イベントの発生時に実行される。また、記憶部１５に記憶される送信対象のメッセージデータが定期的に更新されるのであれば、この送信処理は、一定時間毎に実行されても良い。
【００６０】
図３に示すように、送信側装置１１の制御部１４が送信処理を開始すると、まずＳ１１０にて、記憶部１５から送信すべきメッセージデータを読み出す。
そして、続くＳ１２０にて、Ｓ１１０で読み出したメッセージデータのデータ長が５バイト以上であるか否かを判定し、５バイト以上であれば、Ｓ１３０に進む。
【００６１】
Ｓ１３０では、Ｓ１１０で読み出したメッセージデータを、ＬＳＢから４バイト分であるＬＳＢ側のデータと、それ以外であるＭＳＢ側のデータとに分け、そのＭＳＢ側のデータを伝達対象のオリジナルデータとして、それに前述した認証用データと制御情報（データサイズ情報、パケット構成情報、及びシーケンス番号情報）とを付加することにより、通信パケットの８バイトのデータ領域を作成する。
【００６２】
尚、この場合、制御情報中のパケット構成情報は、２パケット構成の１パケット目を示す“１０”（＝０ｘ２：０ｘは、その数が１６進数表現であることを示す）となり、制御情報中のデータサイズ情報は、伝達対象であるＭＳＢ側のデータのサイズに応じて、“０１”，“１０”，“１１”，“００”の何れかに設定される。また、制御情報中のシーケンス番号情報は、“００”“０１”，“１０”，“１１”の何れかに設定される。一方、認証用データとしては、前述したように、伝達対象であるＭＳＢ側のデータのビット数をＤＳ（＝８〜３２ビット）とすると、記憶部１５に記憶された５０ビットの疑似乱数のうち、ＭＳＢ側から「５８−ＤＳ」ビット分のデータが用いられる。
【００６３】
次に、Ｓ１４０にて、上記Ｓ１３０で生成したデータ領域（詳しくは、そのデータ領域を成す８バイトのデータ列）を、予め記憶部１５に記憶されている鍵（暗号鍵）を用いてブロック暗号化手法（例えばＤＥＳやＦＥＡＬ等）により暗号化する。尚、記憶部１５に記憶されている鍵は、受信側装置２１の制御部２４で実行される後述の受信処理で用いられる鍵（復号鍵）と同一（つまり共通鍵）である。
【００６４】
そして、次のＳ１５０にて、上記Ｓ１４０で暗号化したデータ領域（暗号データ）と、そのデータ領域に付けるべきヘッダ領域及びフッダ領域の内容とを、通信部１７へ出力する。すると、上記Ｓ１４０で暗号化されたデータ領域にヘッダ領域とフッダ領域とが付けられた通信パケット（即ち、２パケット構成の１パケット目）が、通信部１７から受信側装置２１へと送信されることとなる。
【００６５】
次に、Ｓ１６０にて、上記Ｓ１３０でメッセージデータを分割した２つのデータのうち、ＬＳＢ側のデータを伝達対象のオリジナルデータとして、それに前述した認証用データと制御情報（データサイズ情報、パケット構成情報、及びシーケンス番号情報）とを付加することにより、通信パケットの８バイトのデータ領域を作成する。
【００６６】
尚、この場合、制御情報中のパケット構成情報は、２パケット構成の２パケット目を示す“１１”（＝０ｘ３）となり、制御情報中のデータサイズ情報は、伝達対象であるＬＳＢ側のデータが４バイトであるため、“００”に設定される。また、制御情報中のシーケンス番号情報は、上記Ｓ１３０で１パケット目に対して設定したのと同じ値に設定される。一方、認証用データとしては、伝達対象であるＬＳＢ側のデータが４バイトであるため、記憶部１５に記憶された５０ビットの疑似乱数のうち、ＭＳＢ側から２６（＝５８−３２）ビット分のデータが用いられる。
【００６７】
次に、Ｓ１７０に進んで、上記Ｓ１４０と同様に、上記Ｓ１６０で生成した８バイトのデータ領域を、予め記憶部１５に記憶されている鍵（暗号鍵）を用いて暗号化する。
そして、次のＳ１８０にて、上記Ｓ１７０で暗号化したデータ領域（暗号データ）と、そのデータ領域に付けるべきヘッダ領域及びフッダ領域の内容とを、通信部１７へ出力する。すると、上記Ｓ１７０で暗号化されたデータ領域にヘッダ領域とフッダ領域とが付けられた通信パケット（即ち、２パケット構成の２パケット目）が、通信部１７から受信側装置２１へと送信されることとなる。尚、Ｓ１３０〜Ｓ１８０の処理によって２パケット構成の１パケット目と２パケット目とを送信する場合、その各パケットのヘッダ領域には、同じＩＤ情報が含まれることとなる。同じメッセージデータを送信するためのパケットであるからである。
【００６８】
一方、上記Ｓ１２０にて、Ｓ１１０で読み出したメッセージデータのデータ長が５バイト以上ではない（１〜４バイトである）と判定した場合には、Ｓ１９０に移行する。
Ｓ１９０では、Ｓ１１０で読み出したメッセージデータを、そのまま伝達対象のオリジナルデータとして、それに前述した認証用データと制御情報（データサイズ情報、パケット構成情報、及びシーケンス番号情報）とを付加することにより、通信パケットの８バイトのデータ領域を作成する。
【００６９】
尚、この場合、制御情報中のパケット構成情報は、１パケット構成を示す“０１”（＝０ｘ１）となり、制御情報中のデータサイズ情報は、伝達対象であるメッセージデータのサイズに応じて、“０１”，“１０”，“１１”，“００”の何れかに設定される。また、制御情報中のシーケンス番号情報は、“００”“０１”，“１０”，“１１”の何れかに設定される。一方、認証用データとしては、前述したように、伝達対象であるメッセージデータのビット数をＤＳ（＝８〜３２ビット）とすると、記憶部１５に記憶された５０ビットの疑似乱数のうち、ＭＳＢ側から「５８−ＤＳ」ビット分のデータが用いられる。
【００７０】
次に、前述したＳ１７０に進み、この場合には、上記Ｓ１９０で生成した８バイトのデータ領域を、予め記憶部１５に記憶されている鍵（暗号鍵）を用いて暗号化する。そして、続くＳ１８０にて、上記Ｓ１９０で暗号化したデータ領域（暗号データ）と、そのデータ領域に付けるべきヘッダ領域及びフッダ領域の内容とを、通信部１７へ出力する。すると、上記Ｓ１９０で暗号化されたデータ領域にヘッダ領域とフッダ領域とが付けられた通信パケット（即ち、１パケット構成のパケット）が、通信部１７から受信側装置２１へと送信されることとなる。
【００７１】
そして、上記Ｓ１８０の処理を終了した時点で、記憶部１５内に送信すべきメッセージデータが未だあれば、上記Ｓ１１０から処理を再び実行するが、送信すべきメッセージデータがなければ、当該送信処理を終了する。
【００７２】
次に、受信側装置２１の制御部２４で実行される受信処理について、図４に示すフローチャートを用いて説明する。尚、この受信処理は、通信部２７によって送信側装置１１からの通信パケットが１つ受信される毎に実行される。
【００７３】
図４に示すように、受信側装置２１の制御部２４が受信処理を開始すると、まずＳ２１０にて、通信部２７から受信データ（即ち、今回受信した通信パケット）を取り込む。
そして、続くＳ２２０にて、今回受信した通信パケットのデータ領域を、予め記憶部２５に記憶されている鍵（復号鍵）を用いて復号する。尚、記憶部２５に記憶されている鍵は、前述したように、送信側装置１１の記憶部１５に記憶されている鍵と同一である。
【００７４】
次に、Ｓ２３０にて、上記Ｓ２２０で復号したデータ領域から、その上位６ビットである制御情報（データサイズ情報、パケット構成情報、及びシーケンス番号情報）を抽出し、更に、その抽出した制御情報中のパケット構成情報を判別する。
【００７５】
ここで、パケット構成情報が“０１”であったならば、今回受信した通信パケットは１パケット構成であると判断することができ、この場合には、Ｓ２４０に進む。
そして、Ｓ２４０にて、上記Ｓ２２０で復号したデータ領域から、認証用データと、伝送対象のオリジナルデータとを抽出する。尚、オリジナルデータは、Ｓ２３０で抽出した制御情報中のデータサイズ情報に基づいて抽出する。そして、制御情報とオリジナルデータ以外の部分を、認証用データとして抽出する。
【００７６】
次に、続くＳ２５０にて、記憶部２５に記憶されている５０ビットの疑似乱数のうち、それのＭＳＢ側から、上記Ｓ２４０で抽出した認証用データと同じビット数分のデータを、当該受信側装置２１で既知の認証用データとして読み出し、その読み出した既知の認証用データと、上記Ｓ２４０で抽出した認証用データとが一致しているか否かを判定する。
【００７７】
そして、上記両認証用データが一致していると判定した場合には（Ｓ２５０：ＹＥＳ）、上記Ｓ２２０で復号したデータ領域内のオリジナルデータは送信側装置１１から送信された正常なデータである（改竄されていない）と判断してＳ２６０に進む。そして、Ｓ２６０にて、上記Ｓ２４０で抽出したオリジナルデータを、送信側装置１１からのメッセージデータとして、制御部２４内のメモリ（例えばＲＡＭ）又は記憶部１５に格納し、その後、当該受信処理を終了する。
【００７８】
また、Ｓ２５０にて、上記両認証用データが一致していないと判定した場合には（Ｓ２５０：ＮＯ）、上記Ｓ２２０で復号したデータ領域内のオリジナルデータは異常なデータである（改竄されている）と判断して、エラー終了する。そして、このエラー終了時には、送信側装置１１へ、同じ通信パケットを再度送信してもらうための再送要求を送信する。すると、送信側装置１１は、前回送信した通信パケットと同じ通信パケットを再度送信することとなる。
【００７９】
一方、上記Ｓ２３０にて、抽出した制御情報中のパケット構成情報が“１０”であると判定したならば、今回受信した通信パケットは２パケット構成の１パケット目であると判断することができ、この場合には、Ｓ２７０に移行する。
【００８０】
そして、Ｓ２７０では、Ｓ２４０と同様に、上記Ｓ２２０で復号したデータ領域から、認証用データと、伝送対象のオリジナルデータとを抽出する。
次に、続くＳ２８０にて、Ｓ２５０と同様に、記憶部２５に記憶されている５０ビットの疑似乱数のうち、それのＭＳＢ側から、上記Ｓ２７０で抽出した認証用データと同じビット数分のデータを、当該受信側装置２１で既知の認証用データとして読み出し、その読み出した既知の認証用データと、上記Ｓ２７０で抽出した認証用データとが一致しているか否かを判定する。
【００８１】
そして、上記両認証用データが一致していると判定した場合には（Ｓ２８０：ＹＥＳ）、Ｓ２９０に進んで、上記Ｓ２７０で抽出したオリジナルデータを、送信側装置１１からのメッセージデータのＭＳＢ側のデータとして、制御部２４内のメモリ（例えばＲＡＭ）又は記憶部１５に格納し、その後、当該受信処理を終了する。
【００８２】
また、Ｓ２８０にて、上記両認証用データが一致していないと判定した場合には（Ｓ２８０：ＮＯ）、エラー終了する。そして、この場合にも、送信側装置１１へ、同じ通信パケットを再度送信してもらうための再送要求を送信する。
【００８３】
一方また、上記Ｓ２３０にて、抽出した制御情報中のパケット構成情報が“１１”であると判定したならば、今回受信した通信パケットは２パケット構成の２パケット目であると判断することができ、この場合には、Ｓ３００に移行する。
【００８４】
そして、Ｓ３００では、Ｓ２４０，Ｓ２７０と同様に、上記Ｓ２２０で復号したデータ領域から、認証用データと、伝送対象のオリジナルデータとを抽出する。
次に、続くＳ３１０にて、Ｓ２５０，Ｓ２８０と同様に、記憶部２５に記憶されている５０ビットの疑似乱数のうち、それのＭＳＢ側から、上記Ｓ３００で抽出した認証用データと同じビット数分のデータを、当該受信側装置２１で既知の認証用データとして読み出し、その読み出した既知の認証用データと、上記Ｓ３００で抽出した認証用データとが一致しているか否かを判定する。
【００８５】
そして、上記両認証用データが一致していると判定した場合には（Ｓ３１０：ＹＥＳ）、Ｓ３２０に進んで、前回にＳ２７０〜Ｓ２９０の処理を行い、且つ、前回受信した通信パケットのヘッダ領域のＩＤ情報と今回受信した通信パケットのヘッダ領域のＩＤ情報とが同じであるか否かを判定する。つまり、このＳ３２０では、前回に今回と同じＩＤ情報の１パケット目を受信しているか否かを判定している。
【００８６】
そして、上記Ｓ３２０で肯定判定した場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０に進んで、上記Ｓ３００で抽出したオリジナルデータを、送信側装置１１からのメッセージデータのＬＳＢ側のデータとして、制御部２４内のメモリ（例えばＲＡＭ）又は記憶部１５に格納する。このＳ３３０の処理と上記Ｓ２９０の処理とにより、送信側装置１１から２つのパケットに分けて送信されてきた５バイト以上のメッセージデータが、当該受信側装置２１にて再構成される（換言すれば、結合される）こととなる。そして、その後、当該受信処理を終了する。
【００８７】
また、上記Ｓ３２０で否定判定した場合（Ｓ３２０：ＮＯ）、或いは、上記Ｓ３１０にて、上記両認証用データが一致していないと判定した場合には（Ｓ３１０：ＮＯ）、エラー終了する。そして、この場合にも、送信側装置１１へ、同じ通信パケットを再度送信してもらうための再送要求を送信する。
【００８８】
次に、受信側装置２１の制御部２４で実行されるパケット消失検出処理について、図５に示すフローチャートを用いて説明する。尚、このパケット消失検出処理は、図４の受信処理におけるＳ２３０と並行して実行される。
【００８９】
図５に示すように、受信側装置２１の制御部２４がパケット消失検出処理を開始すると、まずＳ４１０にて、図４のＳ２３０で抽出した制御情報中のパケット構成情報に基づいて、今回受信した通信パケットが２パケット構成の２パケット目であるか否かを判定する。つまり、今回抽出したパケット構成情報が“１１”であるか否かを判定する。尚、このＳ４１０では、前回受信した通信パケットが２パケット構成の１パケット目であったか否かを判定するようにしても良い。
【００９０】
そして、上記Ｓ４１０で肯定判定した場合（今回受信した通信パケットが２パケット構成の２パケット目であった場合）には、Ｓ４２０に進み、今回受信した通信パケットと前回受信した通信パケットとで、図４のＳ２３０で抽出した制御情報中のシーケンス番号が一致しているか否かを判定する。
【００９１】
そして、上記Ｓ４２０で否定判定した場合（今回受信した通信パケットと前回受信した通信パケットとでシーケンス番号が一致していない場合）には、Ｓ４３０に進んで、エラー処理を行い、その後、当該パケット消失検出処理を終了する。尚、Ｓ４３０のエラー処理では、例えば、送信側装置１１に対して、前回受信した通信パケットと同じシーケンス番号の２パケット目（つまり、前回受信した通信パケットと同じメッセージデータのＬＳＢ側を含む通信パケット）から順次送信し直すことを要求する要求信号を送信する。また、このＳ４３０のエラー処理が行われる場合には、図４におけるＳ２４０以降の各処理（詳しくは、Ｓ３００〜Ｓ３３０の処理）は行われない。
【００９２】
一方、上記Ｓ４１０で否定判定した場合（Ｓ４１０：ＮＯ）、或いは、上記Ｓ４２０で肯定判定した場合には（Ｓ４２０：ＹＥＳ）、そのまま当該パケット消失検出処理を終了する。
【００９３】
このようなパケット消失検出処理により、例えば図６（Ｂ）の楕円内に示すように、送信側装置１１から、シーケンス番号が“００”である２パケット構成の通信パケットの次に、シーケンス番号が“０１”である２パケット構成の通信パケットが送信された場合に、何らかの原因でシーケンス番号が“００”である通信パケットの２パケット目と、シーケンス番号が“０１”である通信パケットの１パケット目とが消失して受信できなかったとしても、そのことを確実に検知してエラー処理を行うことができる。尚、この例の場合、エラー処理では、例えば、送信側装置１１に対して、シーケンス番号が“００”である２パケット目から順次送信し直すことを要求することとなる。
【００９４】
つまり、送信側装置１１からＩＤ情報が同一の２パケット構成の通信パケットが連続して送信されたとすると、もし、シーケンス番号が無ければ、図６（Ｂ）のような２パケット目と１パケット目の消失が発生した場合に、それを検知することができず、先に送信された２パケット構成の１パケット目（シーケンス番号＝“００”の１パケット目）と、後に送信された２パケット構成の２パケット目（シーケンス番号＝“０１”の２パケット目）とから、１つのメッセージデータを再構成してしまうが、シーケンス番号を設けることで、そのようなパケットの消失を確実に検知できるようになる。
【００９５】
尚、本実施例では、認証用データが認証用情報に相当し、また、図４のＳ２５０，Ｓ２８０，及びＳ３１０の各処理が改竄検出の処理に相当している。そして、送信側装置１１の記憶部１５が送信側記憶手段に相当し、受信側装置２１の記憶部２５が受信側記憶手段に相当している。
【００９６】
次に、本実施例の通信システム１０の動作の一例を、図７を用いて説明する。
例えば、送信側装置１１が５バイト以上のメッセージデータ１を送信する場合、送信側装置１１では、（ａ）に示すように、そのメッセージデータ１をＭＳＢ側のデータ１ａとＬＳＢ側のデータ１ｂとに分割し、まず、ＭＳＢ側のデータ１ａの方に、認証用データと制御情報とを付加して、１パケット目のデータ領域を作成し、更に、そのデータ領域を暗号化することとなる（Ｓ１３０，Ｓ１４０）。そして、（ｂ）に示すように、その暗号化したデータ領域にヘッダ領域とフッダ領域とを付けた通信パケット（２パケット構成の１パケット目）を送信することとなる（Ｓ１５０）。
【００９７】
次いで、ＬＳＢ側のデータ１ｂの方に、認証用データと制御情報とを付加して、２パケット目のデータ領域を作成し、更に、そのデータ領域を暗号化することとなる（Ｓ１６０，Ｓ１７０）。そして、（ｃ）に示すように、その暗号化したデータ領域にヘッダ領域とフッダ領域とを付けた通信パケット（２パケット構成の２パケット目）を送信することとなる（Ｓ１８０）。
【００９８】
一方、受信側装置２１では、送信側装置１１からの１パケット目を受信すると、（ｄ）に示すように、その受信したパケットのデータ領域を復号し（Ｓ２２０）、その復号したデータ領域から、制御情報を抽出して、その抽出した制御情報中のパケット構成情報から、今回受信したパケットが２パケット構成か１パケット構成か及び２パケット構成ならば１パケット目か２パケット目かを判別することとなるが（Ｓ２３０）、この場合には、２パケット構成の１パケット目であると判別することとなる（Ｓ２３０→Ｓ２７０）。
【００９９】
そして、受信側装置２１は、今回復号したデータ領域から、制御情報中のデータサイズ情報に基づいて、データ１ａと認証用データとを抽出し（Ｓ２７０）、（ｅ）に示すように、その抽出した認証用データと、記憶部２５に記憶されている認証用データとを比較する（Ｓ２８０）。そして、認証用データが一致したならば（Ｓ２８０：ＹＥＳ）、上記抽出したデータ１ａをメッセージデータ１のＭＳＢ側のデータとして保存することとなる（Ｓ２９０）。
【０１００】
同様に、受信側装置２１では、送信側装置１１からの２パケット目を受信すると、（ｆ）に示すように、その受信したパケットのデータ領域を復号し（Ｓ２２０）、その復号したデータ領域から、制御情報を抽出して、その抽出した制御情報中のパケット構成情報から、今回受信したパケットが２パケット構成か１パケット構成か及び２パケット構成ならば１パケット目か２パケット目かを判別することとなるが（Ｓ２３０）、この場合には、２パケット構成の２パケット目であると判別することとなる（Ｓ２３０→Ｓ３００）。
【０１０１】
そして、受信側装置２１は、今回復号したデータ領域から、制御情報中のデータサイズ情報に基づいて、データ１ｂと認証用データとを抽出し（Ｓ３００）、（ｇ）に示すように、その抽出した認証用データと、記憶部２５に記憶されている認証用データとを比較する（Ｓ３１０）。そして、両認証用データが一致し（Ｓ３１０：ＹＥＳ）、且つ、前回に今回と同じＩＤ情報の１パケット目を受信していたならば（Ｓ３２０：ＹＥＳ）、上記抽出したデータ１ｂをメッセージデータ１のＬＳＢ側のデータとして保存し（Ｓ３３０）、これにより、送信側装置１１からのメッセージデータ１が受信側装置２１にて結合されることとなる。
【０１０２】
一方、例えば、図７の（ｇ）にて、両認証用データを比較した際に一致していなければ（Ｓ３１０：ＮＯ）、今回受信したデータ領域内のデータ１ｂは改竄されていると判断して、そのデータ１ｂは破棄し、（ｈ）に示すように、送信側装置１１へ、同じ通信パケットを再度送信してもらうための再送要求を送信する。すると、送信側装置１１は、（ｉ）に示すように、前回送信したのと同じ通信パケット（つまり、データ１ｂを含む通信パケット）を再度送信することとなる。
【０１０３】
尚、図７に示すように、送信側装置１１が５バイト以上のメッセージデータ２を送信する場合にも、上記メッセージデータ１が送信される場合と同様の動作が行われることとなる。また、送信側装置１１が４バイト以下のメッセージデータを送信する場合には、そのメッセージデータが分割されないだけであり、上記データ１ａについて述べたのと同様の手順で送受信が行われることとなる。
【０１０４】
以上のような本実施例の通信システム１０によれば、メッセージデータを分割して送信する通信パケット毎にデータの改竄検出を行うため、通信データの改竄検出時間（通信データが改竄されてから該改竄を検出するまでの遅れ時間）を短縮することができる。
【０１０５】
また、受信側装置２１は、通信データの改竄を検出した場合に、その改竄を検出したパケットについてのみ、送信側装置１１へ再送要求を出せば良いため、通信データの改竄が生じた場合に、データを再送するための通信回数や通信データ量を減らすことができる。このため、通信線Ｌにおけるトラフィックの増大を防ぐことができ、例えば、その通信線Ｌが他の装置間の通信伝送路としても用いられる場合に非常に有利である。
【０１０６】
そして特に、ＣＡＮの通信パケットでは、ヘッダ領域に図２（Ｂ），（Ｃ）に示した制御情報の様なものが無く、データ領域も小さいため、インターネットなどで利用されている一般的な手法のメッセージ認証を行うことが難しかったが、本実施例によれば、そのような車両用のＣＡＮプロトコルでも、メッセージ認証（通信データの改竄検出）を行うことができる。
【０１０７】
つまり、本実施例の通信システム１０では、通信パケットのデータ領域を、伝達対象のデータ（メッセージデータを１パケット分に分割したデータ又はメッセージデータ自体）が配置されるオリジナルデータ領域Ｄ［ｎ］と、その領域Ｄ［ｎ］のデータについての改竄検出を行うための認証用データが配置される認証用データ領域Ｐ［ｎ］と、制御情報が配置される制御領域Ｃとに分けて使用しているため、どのような通信プロトコルであっても、メッセージデータを分割したパケット毎にデータの改竄検出を行って、改竄検出時間を短縮できる。
【０１０８】
更に、本実施例の通信システム１０によれば、従来技術のようにハッシュ関数の処理を行わず、認証用情報として、伝達対象データに依存しない固定値の認証用データを用いているため、通信のための処理量や処理時間を小さくすることができる。また、通信パケットのデータ領域は暗号化されているので秘匿性は十分である。しかも、認証用データを、ランダム関数を用いて生成するようにしているため、その認証用データを第三者が推測し難く、セキュリティの強度を上げることができる。
【０１０９】
以上、本発明の一実施例について説明したが、本発明は上記実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１１０】
［変形例１］
例えば、上記実施例では、通信パケットのデータ領域に含ませる制御情報中に、データ領域の構成を示す情報として、オリジナルデータのデータサイズを示すデータサイズ情報を含ませるようにしたが、そのデータサイズ情報に代えて、データ領域におけるオリジナルデータ以外であるパディングのサイズを示すパディングサイズ情報を含ませるようにしても良い。つまり、データ領域におけるオリジナルデータと認証用データと制御情報との並び順が固定であると共に、データ領域全体と制御情報とのデータ長が一定であれば、受信側装置２１では、パディングのデータサイズからでも、受信したデータ領域の何処に何が配置されているのかを知ることができるからである。
【０１１１】
［変形例２］
また、暗号化及び復号の手法は共通鍵ストリーム暗号手法であってもよい。例えば、ＲＣ４等が考えられる。
【０１１２】
［変形例３］
一方、上記実施例では、通信パケットのデータ領域に含ませる認証用情報として、伝達対象データ（オリジナルデータ）に依存しない固定値のデータ（認証用データ）を用いたが、認証用情報は、伝達対象データの特徴を圧縮して暗号化した一般的な認証子であっても良い。
【０１１３】
例えば、送信側装置１１では、送信処理のＳ１３０，Ｓ１６０，及びＳ１９０のそれぞれにて、伝達対象のオリジナルデータに対しハッシュ関数の処理を施してハッシュ値を生成すると共に、その生成したハッシュ値の一部（ここでは、オリジナルデータのビット数をＤＳ（＝８〜３２ビット）とすると、生成したハッシュ値のうち、ＭＳＢ側から「５８−ＤＳ」ビット分とする）を暗号化する。そして、その「５８−ＤＳ」ビットの暗号データを前述の認証用データに代わる認証子として用いて、その認証子と制御情報とをオリジナルデータに付加することにより、８バイトのデータ領域を作成すれば良い。尚、この場合、Ｓ１４０及びＳ１７０での暗号化は省略しても良く、また、Ｓ１４０及びＳ１７０では、データ領域のうち、オリジナルデータの部分或いはオリジナルデータ及び制御情報の部分だけを暗号化するようにしても良い。
【０１１４】
そして、受信側装置２１では、受信処理のＳ２４０及びＳ２５０と、Ｓ２７０及びＳ２８０と、Ｓ３００及びＳ３１０とのそれぞれにて、下記の処理を行えば良い。
即ち、まず、今回受信したパケットのデータ領域から認証子とオリジナルデータとを抽出して、その抽出した認証子を復号すると共に、上記抽出したオリジナルデータに対しハッシュ関数の処理を施してハッシュ値を生成する。そして、その生成したハッシュ値のうち、ＭＳＢ側から、上記抽出した認証子を復号した復号データと同じビット数分だけ取り出して、その取り出したデータと上記復号データとを比較し、両データが一致していれば、データ改竄無しであると判断して、Ｓ２６０，Ｓ２９０，Ｓ３２０のそれぞれに進むようにすれば良い。
【０１１５】
そして、このように変形しても、多少処理が複雑になるが、前述した実施例と同様の効果を得ることができる。
［変形例４］
図５のパケット消失検出処理は、図４の受信処理と別個にではなく、受信処理の中で実施するようにしても良い。具体的には、図８に示すように、受信処理において、Ｓ３２０で肯定判定した場合に（Ｓ３２０：ＹＥＳ）、前述したＳ４２０の判定（即ち、今回受信した通信パケットと前回受信した通信パケットとで、Ｓ２３０で抽出した制御情報中のシーケンス番号が一致しているか否かの判定）を行って、そのＳ４２０でシーケンス番号が一致していると判定したならば（Ｓ４２０：ＹＥＳ）、Ｓ３３０へ進むが、上記Ｓ４２０でシーケンス番号が一致していないと判定した場合には（Ｓ４２０：ＮＯ）、前述したＳ４３０のエラー処理を行った後、当該受信処理を終了するようにしても良い。
【０１１６】
尚、上記実施例及び各変形例の通信システムを、車両に適用すれば、その車両内通信のセキュリティ性能を向上させることができる。例えば、送信側装置１１と受信側装置２１とのうち、少なくとも受信側装置２１が車両に搭載された電子制御装置であれば、その受信側装置２１である電子制御装置に対して、改竄した情報を与えようとする不正行為を防ぐことができる。
【図面の簡単な説明】
【０１１７】
【図１】実施例の通信システムの構成を表すブロック図である。
【図２】通信パケットの構造を説明する説明図である。
【図３】送信側装置で実行される送信処理を表すフローチャートである。
【図４】受信側装置で実行される受信処理を表すフローチャートである。
【図５】受信側装置で実行されるパケット消失検出処理を表すフローチャートである。
【図６】制御情報中のシーケンス番号情報とパケット消失検出処理の作用とを説明する説明図である。
【図７】実施例の通信システムの作用を説明する説明図である。
【図８】変形例を表すフローチャートである。
【図９】従来技術を説明する説明図である。
【符号の説明】
【０１１８】
１０・・・通信システム、１１・・・送信側装置、１３・・・操作部、１４・・・制御部、１５・・・記憶部、１６・・・表示部、１７・・・通信部、２１・・・受信側装置、２３・・・操作部、２４・・・制御部、２５・・・記憶部、２６・・・表示部、２７・・・通信部、Ｌ・・・通信線
【図１】
2005167942.tif 000003
【図２】
2005167942.tif 000004
【図３】
2005167942.tif 000005
【図４】
2005167942.tif 000006
【図５】
2005167942.tif 000007
【図６】
2005167942.tif 000008
【図７】
2005167942.tif 000009
【図８】
2005167942.tif 000010
【図９】
2005167942.tif 000011