(57)【要約】【課題】キャリア検出型のネットワークにおいて、リアルタイム性が確保された暗号化通信が行えるようにする。【解決手段】ＣＡＮバス５と通信装置から成る車内ＬＡＮ内の通信装置間のパケット通信を暗号化するための鍵を、暗号化される通信に参加する全ての通信装置が共有する暗号化通信方式において、暗号化される通信に参加する全ての通信装置が、パケットがＣＡＮバス５内を流れることを検知し、それに基づいて各通信装置が有する同一の暗号ブロック２２が同期して暗号化／復号のための鍵を変更する。【選択図】　　　　図１
2004015305.tif 000002
【特許請求の範囲】
【請求項１】
キャリア検出型のネットワーク内の通信装置間のパケット通信を暗号化するための鍵を、前記暗号化される通信に参加する全ての通信装置が共有する通信方式であって、
前記暗号化される通信に参加する全ての通信装置が、パケットが前記ネットワーク内を流れることに基づいて、同一の鍵変更規則を用いて同期して前記鍵を変更することを特徴とする暗号化通信方式。
【請求項２】
前記暗号化される通信に参加する通信装置は、所定の複数の鍵変更規則のうち１つを特定する識別子である種を共有しており、
前記通信装置のうち１つが前記暗号化される通信への参加が途絶してのち前記暗号化される通信に復帰すると、前記暗号化される通信に参加する全ての通信装置は、前記同一の鍵変更規則として新たに前記種が特定する鍵変更規則を用いることを特徴とする請求項１に記載の暗号化通信方式。
【請求項３】
前記暗号化される通信に参加する通信装置は、前記共有する種を、同一の種変更規則で同期して変更することを特徴とする請求項２に記載の通信方式。
【請求項４】
キャリア検出型のネットワーク内にあり、前記ネットワーク内の他の通信装置との間のパケット通信を暗号化するための鍵を、前記他の通信装置と共有する通信装置であって、
前記鍵を前記他の通信装置と同一の鍵変更規則で変更する鍵変更手段と、
前記ネットワーク内にパケットが流れることに基づいて、前記鍵変更手段に鍵を変更させる鍵変更制御手段と、を備えたことを特徴とする通信装置。
【請求項５】
複数の鍵変更規則のうち１つを特定する識別子である種を前記他の通信装置と共有し、
前記ネットワークを介して、前記他の通信装置の１つが前記暗号化されたパケット通信への参加の途絶状態から復帰したことの通知を受信すると、前記鍵規則変更手段に、前記種の特定する鍵変更規則を前記同一の鍵変更規則とさせる鍵規則変更制御手段とを備え、
前記鍵変更手段は、前記種の特定する鍵変更規則を前記同一の鍵変更規則とする鍵規則変更手段を有することを特徴とする請求項４に記載の通信装置。
【請求項６】
前記鍵変更手段は、前記種を前記他の通信装置と同一の種変更規則で変更する種変更手段を有することを特徴とする請求項４または５に記載の通信装置。
【請求項７】
前記鍵変更手段は、前記ネットワーク内に流れたパケットを受信すること、前記ネットワーク内の他の無線通信装置にパケットを送信すること、および前記ネットワークのエラーを検知することに基づいて、前記鍵変更手段に鍵を変更させることを特徴とする請求項４ないし６のいずれか１つに記載の通信装置。
【請求項８】
前記ネットワークは、車内ＬＡＮであることを特徴とする請求項４ないし７のいずれか１つに記載の通信装置。
【請求項９】
前記ネットワークで用いられる通信プロトコルは、ＣＡＮであることを特徴とする請求項４ないし８のいずれか１つに記載の通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リアルタイム制御が要求されるキャリア検出型ＬＡＮにおいて、暗号化された信号を送受信する通信装置に関するもので、車内ＬＡＮに用いて好適である。
【０００２】
【従来の技術】
車両内では、多種多様な信号が車内の機器同士でやりとりされている。例えばエンジンを制御し、またエンジンの状態を検知して他の装置に通知するエンジン制御装置、受信した信号に基づいてブレーキを制御するブレーキ制御装置、エアサスペンションを制御し、またエアサスペンションの状態を検知して他の装置に通知するエアサス制御装置等が、車両ＬＡＮと呼ばれるＬＡＮ（ローカルエリアネットワーク）を介して通信をしている。これらエンジン制御装置、エアサス制御装置等の、制御系の機器が接続する車内ＬＡＮにおいては、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）やＬＩＮ（Ｌｏｃａｌ　Ｉｎｔｅｒｃｏｎｎｅｃｔ　Ｎｅｔｗｏｒｋ）等の通信プロトコルが広く利用されている。
【０００３】
従来、車両ＬＡＮは通信範囲が車内だけに限られた、閉じたネットワークであった。したがって、車両の外部から車両ＬＡＮ内の通信内容が盗聴や改竄の危険に晒されることはなかった。
【０００４】
【発明が解決しようとする課題】
しかし、無線通信装置やインターネットの普及、車両のマルチメディア化、およびＩＴＳ（Ｉｎｔｅｌｌｉｇｅｎｔ　Ｔｒａｎｓｐｏｒｔ　Ｓｙｓｔｅｍｓ）技術の進歩に伴い、車両ＬＡＮに車両の外部のネットワークが接続されるようになり、車両ＬＡＮは開かれたネットワークとなりつつある。今後、車両外部のネットワークと車両ＬＡＮとの接続は、車内のカーナビゲーション装置やオーディオ機器等が接続される車両ＬＡＮである情報系ＬＡＮから、制御系の機器の車両ＬＡＮが接続される制御系ＬＡＮまで広範囲に行われるようになることが予想される。
【０００５】
このように車両ＬＡＮが開かれたネットワークとなると、車両ＬＡＮを介してやりとりされる重要な情報が外部のネットワークに不正に漏洩する恐れがある。また、この不正に漏洩した情報を悪用する者に外部から車両をコントロールされる恐れもある。
【０００６】
例えば、車両のドアのロックの開閉を制御するドアロック制御情報やエンジン制御情報等の、車両を制御するための重要な情報を車両ＬＡＮから不正に盗聴し、その情報を外部のネットワークに送信するような機器が何らかの方法で車内に取り付けられ、この機器からの情報を受信した外部のネットワーク上の端末が、この情報を用いてネットワーク越しに車両のドアロックやエンジンを制御するということが考えられる。
【０００７】
このような危険を回避するには、車両ＬＡＮ上を流れる通信データが暗号化されているようにすればよい。なお、この通信データの暗号化のための鍵は、鍵の一時的漏洩によるダメージを最小限に抑えるために、時間的に変化するようにするのが一般的である。しかし、ＣＡＮやＬＩＮ等の制御系ＬＡＮで使用される通信プロトコル自体には、通信データの暗号化を行うための機能は備わっていない。
【０００８】
図１１に、ＴＣＰ／ＩＰのプロトコル群や制御系ＬＡＮのプロトコルを、ネットワークを介した通信装置間の通信の機能を層化して分類するＯＳＩ参照モデルに当てはめたときの対応関係を示す。ＣＡＮやＬＩＮ等の通信プロトコルは、ＯＳＩ参照モデルの物理層、データリンク層に相当するレイヤのプロトコルである。現在のところ、ＣＡＮやＬＩＮの上位層、すなわちデータリンク層より上位のレイヤにおいてＣＡＮやＬＩＮに適した通信データの暗号化を行うようなプロトコル、方式は存在しない。例えば、ＴＣＰ／ＩＰで用いられている暗号化のプロトコルとしては、ネットワーク層のプロトコルであるＩＰＳｅｃ、そしてセッション層のプロトコルであるＳＳＬ、ＴＬＳがある。これらの暗号化プロトコルは暗号化／復号のための鍵を通信装置同士で互いに受け渡しを行うことで、鍵の共有を行っている。しかし、このような方式においては、鍵の受け渡しの際に、受け渡す鍵自体の暗号化のために公開鍵暗号方式が用いられており、処理の負荷が非常に大きくなっている。したがって、このような方式は、制御系ＬＡＮのようなリアルタイム性が要求されるようなＬＡＮには不向きである。
【０００９】
本発明は上記点に鑑みて、キャリア検出型のネットワークにおいて、リアルタイム性が確保された暗号化通信が行えるようにすることを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するための請求項１に記載の発明は、キャリア検出型のネットワーク内の通信装置間のパケット通信を暗号化するための鍵を、暗号化される通信に参加する全ての通信装置が共有する通信方式であって、暗号化される通信に参加する全ての通信装置が、パケットがネットワーク内を流れることに基づいて、同一の鍵変更規則を用いて同期して鍵を変更することを特徴とする暗号化通信方式である。
【００１１】
これによって、キャリア検出型のネットワークにおいて、暗号化される通信に参加する全ての通信装置が、パケットがこのネットワークを流れることに基づいて互いに同期して同一の鍵変更規則で鍵を変更するので、各通信装置で同一の鍵を使用することができ、暗号化通信が行える。また、この暗号化通信方式は、通信装置間のパケット通信を暗号化するための鍵を、暗号化される通信に参加する全ての通信装置が共有するという共有鍵暗号方式であるので、暗号化／復号の処理がすみやかに行われ、暗号化通信のリアルタイム性が確保される。
【００１２】
なお、キャリア検出型ネットワークとは、ネットワーク内の通信装置がネットワーク内を流れるパケットを検知することができるようなネットワークのことである。
【００１３】
また、通信を暗号化するための鍵とは、送信するためのパケットを暗号化するための暗号鍵と受信したパケットを復号するための復号鍵との組を含む概念である。また、暗号鍵と復号鍵とが同一の場合もある。
【００１４】
なお、通信装置が鍵を共有するとは、それぞれの通信装置が互いに同一の鍵のコピーを有しているという概念も含むものである。
【００１５】
また、請求項２に記載の発明は、請求項１に記載の暗号化通信方式において、暗号化される通信に参加する通信装置は、所定の複数の鍵変更規則のうち１つを特定する識別子である種を共有しており、通信装置のうち１つが暗号化される通信への参加が途絶してのち暗号化される通信に復帰すると、暗号化される通信に参加する全ての通信装置は、同一の鍵変更規則として新たに種が特定する鍵変更規則を用いることを特徴としている。
【００１６】
また、請求項３に記載の発明は、請求項２に記載の通信方式において、暗号化される通信に参加する通信装置は、共有する種を、同一の種変更規則で同期して変更することを特徴としている。
【００１７】
また、請求項４に記載の発明は、キャリア検出型のネットワーク内にあり、ネットワーク内の他の通信装置との間のパケット通信を暗号化するための鍵を、他の通信装置と共有する通信装置であって、鍵を他の通信装置と同一の鍵変更規則で変更する鍵変更手段と、ネットワーク内にパケットが流れることに基づいて、鍵変更手段に鍵を変更させる鍵変更制御手段と、を備えたことを特徴とする通信装置である。
【００１８】
これによって、キャリア検出型のネットワークにおいて、暗号化される通信を行う通信装置が、パケットがこのネットワークを流れることに基づいて互いに同期して同一の鍵変更規則で鍵を変更するので、各通信装置で同一の鍵を使用することができ、暗号化通信が行える。また、この暗号化通信方式は、通信装置間のパケット通信を暗号化するための鍵を、暗号化される通信に参加する通信装置が共有するという共有鍵暗号方式であるので、暗号化／復号の処理がすみやかに行われ、暗号化通信のリアルタイム性が確保される。
【００１９】
また、請求項５に記載の発明は、請求項４に記載の通信装置において、複数の鍵変更規則のうち１つを特定する識別子である種を他の通信装置と共有し、ネットワークを介して、他の通信装置の１つが暗号化されたパケット通信への参加の途絶状態から復帰したことの通知を受信すると、鍵規則変更手段に、種の特定する鍵変更規則を同一の鍵変更規則とさせる鍵規則変更制御手段とを備え、鍵変更手段は、種の特定する鍵変更規則を同一の鍵変更規則とする鍵規則変更手段を有することを特徴としている。
【００２０】
また、請求項６に記載の発明は、請求項４または５に記載の通信装置において、鍵変更手段は、種を他の通信装置と同一の種変更規則で変更する種変更手段を有することを特徴としている。
【００２１】
また、請求項７に記載の発明は、請求項４ないし６のいずれか１つに記載の通信装置において、鍵変更手段は、ネットワーク内に流れたパケットを受信すること、ネットワーク内の他の無線通信装置にパケットを送信すること、およびネットワークのエラーを検知することに基づいて、鍵変更手段に鍵を変更させることを特徴としている。
【００２２】
また、請求項８に記載の発明は、請求項４ないし７のいずれか１つに記載の通信装置において、ネットワークは、車内ＬＡＮであることを特徴としている。
【００２３】
また、請求項９に記載の発明は、請求項４ないし８のいずれか１つに記載の通信装置において、ネットワークで用いられる通信プロトコルは、ＣＡＮであることを特徴としている。
【００２４】
【発明の実施の形態】
図１は、本発明の一実施形態に係るネットワークである車内ＬＡＮ１の構成を示すブロック図である。この車内ＬＡＮ１は、ＣＳＭＡ／ＣＤ方式によるキャリア検出型、パケット交換型のネットワークである。また車内ＬＡＮ１における、ＯＳＩ参照モデルの物理層とデータリンク層に対応するレイヤにおける通信プロトコルとしては、ＣＡＮが用いられる。車内ＬＡＮ１は、Ａ通信装置２、Ｂ通信装置３、Ｃ通信装置４、およびその他の複数の通信装置（図示せず）と、これらをバス型のネットワークとして接続するためのＣＡＮバス５とから構成されている。
【００２５】
この車内ＬＡＮ１に接続する通信装置であるＡ通信装置２、Ｂ通信装置３、Ｃ通信装置４、およびその他の複数の通信装置（図示せず）は、車内の制御系の機器である。制御系の機器の具体例としては、エンジンを制御し、またエンジンの状態を検知して他の装置に通知するエンジン制御装置、受信した信号に基づいてブレーキを制御するブレーキ制御装置、エアサスペンションを制御し、またエアサスペンションの状態を検知して他の装置に通知するエアサス制御装置等がある。
【００２６】
また、これら車内ＬＡＮ１に接続する通信装置は、それぞれＣＰＵ２０、暗号ブロック２２、および通信ブロック２３を有している。各通信装置内において、ＣＰＵ２０と暗号ブロック２２との間は制御線２４、アドレス線２５、割り込み線２６、及びローカルバス２７によって接続されている。また各通信装置内において、暗号ブロック２２と通信ブロック２３との間も制御線２４、アドレス線２５、割り込み線２６、及びローカルバス２７によって接続されている。また各通信ブロック２３はＣＡＮバス５に接続されている。
【００２７】
本実施形態においては、これら車内ＬＡＮ１内の通信装置が、互いに同じ暗号化／復号のための鍵を共有し、それを使用して暗号化通信を行うようになっている。この暗号化通信において、通信装置が受信をするときは、ＣＡＮバス５から通信ブロック２３が受信した暗号化されたパケットを暗号ブロック２２が復号してＣＰＵ２０に出力する。また通信装置が送信をするときには、ＣＰＵ２０によって生成されたパケットが暗号ブロック２２によって暗号化され、暗号化されたパケットは通信ブロック２３からＣＡＮバス５に出力されるようになっている。また、この暗号化／復号の鍵は、ＣＡＮバス５をパケットが流れる度に各通信装置で同期して変更されるようになっている。以下、このような通信装置の構成および作動について詳細に説明する。
【００２８】
ＣＰＵ２０は、それを有するそれぞれの通信装置が、エンジン制御、ブレーキ制御、エアサスペンション制御等の制御機器としての作動を行うための各種処理を行い、その処理の結果に基づき、ＣＰＵ２０に接続されている制御用の周辺回路（図示せず）を制御する処理装置である。またＣＰＵ２０は、この制御用の処理以外に、ＣＡＮバス５を介した他の通信装置との通信のためのパケットを生成して暗号ブロック２２に送信し、また暗号ブロック２２からＣＡＮバス５を介した他の通信装置からのパケットを暗号ブロック２２から受信するようになっている。なお、パケット（またはフレーム）とは通信データのまとまりの一単位である。またＣＰＵ２０は、これらの制御、通信の処理のための記憶領域として複数のレジスタを有している。
【００２９】
暗号ブロック２２は、ＣＰＵ２０から受信したパケットを暗号化して通信ブロック２３に送信し、また通信ブロック２３から受信したパケットを復号してＣＰＵ２０に送信するようになっている。
【００３０】
通信ブロック２３は、ＣＡＮのプロトコルに従い、暗号ブロック２２から受信したパケットをＣＡＮバス５に送信し、ＣＡＮバス５から受信したパケットを暗号ブロック２２に送信するようになっている。
【００３１】
図２は、この通信装置における、暗号ブロック２２および通信ブロック２３の構成を示す図である。
【００３２】
通信ブロック２３は、ＣＡＮコントローラ２３１、メッセージボックス２３２、およびドライバ２３３を有している。
【００３３】
ドライバ２３３は、通信ブロック２３とＣＡＮバス５とのパケットのやりとりを媒介するインターフェースである。このドライバ２３３はＣＡＮコントローラ２３１から受信したパケットの電気的な増幅、送出のビットタイミングの同期等の処理を行い、このパケットを電気信号としてＣＡＮバス５に送信するようになっている。またドライバ２３３は、ＣＡＮバス５を流れる電気信号を受信し、受信した電気信号をＣＡＮコントローラ２３１が扱える電気信号に変換し、この変換した信号をＣＡＮコントローラ２３１に送信するようになっている。
【００３４】
メッセージボックス２３２は、データを記憶するための記憶素子（図示せず）から成る記憶装置である。図３に、メッセージボックス２３２の記憶領域の構造を模式的に示す。このメッセージボックス２３２は、ボックスナンバーという数値によって区別される複数のボックスから成る。このボックスには、ＣＡＮバス５や暗号ブロック２２のメモリ２２１から受信したパケットが格納される。
【００３５】
ＣＡＮコントローラ２３１は、ＣＡＮのプロトコルに従って、メッセージボックス２３２に格納されたパケットをドライバ２３３に送信し、またドライバ２３３から受信したパケットをメッセージボックス２３２に格納するようになっている処理装置である。またＣＡＮコントローラ２３１は、ドライバ２３３からパケットを受信することにより、ＣＡＮバス５を流れるパケットをモニターすることができる。このＣＡＮコントローラ２３１は、このモニターしているパケットと自分がそのとき送信している途中のパケットとのデータの食い違いが発生したことを検出することにより、ＣＡＮバス５のエラーを検出できる。このとき、ＣＡＮコントローラ２３１は、エラーが発生したことを他の車内ＬＡＮ１内の通信装置に通知するためのパケットであるエラーフレームをドライバ２３３に出力するようになっている。また、他の通信機器が同様にＣＡＮバス５のエラーを検出した場合に送信するパケットであるエラーフレームを受信することによっても、エラーを検出できる。このエラー検出の場合には、ＣＡＮコントローラ２３１は再度エラーフレームをドライバ２３３に出力することはない。
【００３６】
このＣＡＮコントローラ２３１は、送信要求フラグ、割り込みフラグ、メッセージボックスＩＤレジスタ、受信ボックスレジスタ等の複数のレジスタ（図示せず）を有しており、自己やメッセージボックス２３２等の状態に応じてこれらの値を変化させるようになっている。また、これらのレジスタに対してＣＡＮメモリコントローラ２１４によって読み出し、書き込みが行われるようになっている。
【００３７】
送信要求フラグがオンであると、ＣＡＮコントローラ２３１はメッセージボックス２３２がメモリ２２１から受信したパケットをドライバ２３３に送信するようになっている。また、送信要求フラグがオフであると、ＣＡＮコントローラ２３１はパケットの送信を行わないようになっている。
【００３８】
割り込みレジスタは、割り込み信号の発生原因の種別を格納するようになっている。割り込み信号とは、ＣＡＮコントローラ２３１が割り込み処理部２１２に出力する１ビットの信号である。この割り込み信号は、ＣＡＮコントローラ２３１からＣＡＮバス５への、ドライバ２３３を介したパケットの送信が完了したとき（送信完了）、ＣＡＮコントローラ２３１がドライバ２３３を介してＣＡＮバス５からのパケットの受信を完了したとき（受信完了）、およびＣＡＮバス５のエラー検出をしたとき（エラー検出）にＣＡＮコントローラ２３１から割り込み処理部２１２へ出力されるようになっている。このとき、割り込み信号は送信完了割り込み、受信完了割り込み、またはエラー検出割り込みであることを示す値が、割り込みレジスタに設定される。
【００３９】
メッセージボックスＩＤレジスタは複数有り、図３に示したメッセージボックス２３２が有する複数のボックスのそれぞれに、それらのうち１つが対応している。ＣＡＮコントローラ２３１がドライバ２３３から受信するパケットには、後述するようにＩＤが付加されており、ＣＡＮコントローラ２３１は受信したパケットのＩＤから、このパケットをどのボックスに格納するかを決定するようになっている。
【００４０】
具体的には、ＣＡＮコントローラ２３１はドライバ２３３からパケットを受信すると、ボックスナンバーが０のボックスに対応するメッセージボックスＩＤレジスタの内容と、受信したパケットのＩＤとを比較し、このメッセージボックスＩＤレジスタの内容が示すＩＤの範囲内に受信したパケットのＩＤが含まれていれば、このパケットをこのボックスに格納する。受信したパケットのＩＤがこの範囲内に含まれれていなければ、ボックスナンバー１のボックスについて同様な比較を行う。このようにして、ボックスナンバーが０〜ｎ（ｎは自然数）のボックスについて、受信したパケットのＩＤが対応するメッセージボックスＩＤレジスタの範囲内に入るまで順番に比較を行う。
【００４１】
本実施形態においては、最も優先順位の低いボックス、すなわちボックスナンバーがｎのボックスに対応するメッセージボックスＩＤレジスタの内容は、あらゆる種類のＩＤが範囲内に入るようなものになっている。これによってＣＡＮコントローラ２３１がドライバ２３３から受信したパケットは、それが当該通信装置宛のパケットでなかったとしても、必ずメッセージボックス２３２に格納されるようになる。また、ボックスナンバーが０〜ｎ−１のボックスには、当該通信装置宛のパケットであることを示すＩＤを有するパケットのみが格納されるように、メッセージボックスＩＤレジスタは設定されている。
【００４２】
受信ボックスレジスタは、ＣＡＮコントローラ２３１がドライバ２３３から受信したパケットを格納した先のボックスのボックスナンバーが設定されるレジスタである。
【００４３】
暗号ブロック２２は、制御部２１０と演算部２２０を有している。
【００４４】
暗号ブロック２２の演算部２２０は、メモリ２２１、暗号化／復号部２２４、鍵生成部２２５から構成される。
【００４５】
メモリ２２１は、データを記憶するための記憶素子（図示せず）と、この記憶素子へのデータの書き込み、およびこの記憶素子からのデータの読み出しを行うメモリコントローラ（図示せず）から成る記憶装置である。このメモリ２２１は、記憶素子の特定の領域（アドレス範囲）にＣＰＵ記憶部２２２およびＣＡＮ記憶部部２２３を有している。ＣＰＵ記憶部２２２は、ＣＰＵ２０からローカルバス２７を介してメモリ２２１に出力されるデータ、およびメモリ２２１から受信したデータを格納する領域である。またＣＡＮ記憶部２２３はメッセージボックス２３２からローカルバス２７を介してメモリ２２１に出力されるデータ、およびメモリメッセージボックス２３２から受信したデータを格納する領域である。
【００４６】
暗号化／復号部２２４は、メモリ２２１を制御することにより、ＣＰＵ記憶部２２２からデータを読みとり、このデータを暗号化して、ＣＡＮ記憶部２２３に暗号化されたデータを書き込むことができる処理装置である。また暗号化／復号部２２４は、メモリ２２１を制御することにより、ＣＡＮ記憶部２２３からデータを読みとり、このデータを復号して、ＣＰＵ記憶部２２２に復号されたデータを書き込むことができるようになっている。この暗号化および復号に使用する鍵は、鍵生成部２２５の乱数発生器２２６から受信するようになっている。なお、本実施形態においては、暗号化／復号のアルゴリズムとして、共通鍵暗号方式の１つであるＤＥＳ（Ｄａｔａ　Ｅｎｃｌｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）を用いる。このＤＥＳにおいて使用される暗号化および復号のための鍵は、５６ビットの符号列である。
【００４７】
鍵生成部２２５は、乱数発生器２２６およびランダムシード２２７を有している。
【００４８】
ランダムシード２２７は、記憶素子から成る記憶装置である。このランダムシード２２７は、乱数発生器２２６に対してデータの読み出し、書き込みができるようになっている。また、車内ＬＡＮ１の設置時には、全ての通信装置のランダムシード２２７に同じデータが書き込まれている。
【００４９】
乱数発生器２２６は、所定の規則に従った疑似ランダム数列を生成する装置である。この数列の各要素は、５６ビットの符号列である。この乱数発生器２２６は、デコーダ２１５から新しい鍵を生成するよう要求する信号を受信することで、この数列の要素を順番に１個づつ暗号化／復号部２２４に送信するようになっている。このような乱数発生器２２６は、暗号化／復号部２２４が暗号化および復号に使用するためのための鍵を所定の鍵変更規則で順次生成する装置であると言える。
【００５０】
また乱数発生器２２６は、デコーダ２１５から生成する疑似ランダム数列を新たなものにするよう要求する信号を受信すると、ランダムシード２２７からデータを読み出し、生成する疑似ランダム数列を、受信したデータに基づいた所定の疑似ランダム数列に変更し、この数列の１番目の要素を暗号化／復号部２２４に送信し、またこの１番目の要素をランダムシード２２７に書き込むようになっている。なお、乱数発生器２２６が、デコーダ２１５から生成する疑似ランダム数列を新たなものにするよう要求する信号を受信するのは、後述する通信装置の通信復帰が発生したときである。このとき書き込まれたデータは、乱数発生器２２６が次にデコーダ２１５から通信復帰を通知する信号を受信したときに、乱数発生器２２６が読み出すデータとなる。このような、乱数発生器２２６によってランダムシード２２７に対して読み出し、書き込みされるデータであり、複数の乱数の列のうち１つを特定できるデータは種と呼ばれる。
【００５１】
暗号ブロック２２の制御部２１０は、ＣＰＵメモリコントローラ２１１、割り込み処理部２１２、通信復帰処理部２１３、ＣＡＮメモリコントローラ２１４、およびデコーダ２１５から構成される。
【００５２】
ＣＰＵメモリコントローラ２１１は、ＣＰＵ２０内のレジスタとメモリ２２１との間でデータの授受を行うための要求信号を、ＣＰＵ２０とやりとりするための装置である。要求信号とは、具体的にはリード信号、ライト信号である。ＣＰＵ２０においてＣＰＵ２０内のレジスタからメモリ２２１に対するデータの送信または受信の要求が発生した場合は、ＣＰＵ２０からＣＰＵメモリコントローラ２１１へそれぞれライト信号またはリード信号が送信される。そしてこのライト信号またはリード信号を受信したＣＰＵメモリコントローラ２１１は、それぞれの信号を受信したことをデコーダ２１５に通知する。デコーダ２１５においてメモリ２２１からＣＰＵ２０内のレジスタに対するデータの送信または受信の要求が発生した場合は、デコーダ２１５からＣＰＵメモリコントローラ２１１へその要求を通知する信号が送信され、その信号を受信したＣＰＵメモリコントローラ２１１は、ＣＰＵ２０にそれぞれライト信号またはリード信号を送信する。
【００５３】
割り込み処理部２１２は、ＣＡＮコントローラ２３１から受信割り込み、送信完了割り込み、エラー検出割り込み等の割り込み信号を受信し、受信した割り込み信号をＣＰＵ２０に出力する装置である。また割り込み処理部２１２は、割り込み信号を受信すると、割り込みを受信したことをデコーダ２１５に通知するようになっている。また割り込み処理部２１２は、デコーダ２１５から制御信号を受信することに基づいて、受信した割り込み信号をＣＰＵ２０に出力しない場合もある。
【００５４】
通信復帰処理部２１３は、暗号ブロック２２が後述する通信復帰パケットを受信したことの通知をデコーダ２１５から受信すると、鍵を変更するよう要求する信号をデコーダ２１５に送信する処理装置である。
【００５５】
ＣＡＮメモリコントローラ２１４は、通信ブロック２３内のメッセージボックス２３２とメモリ２２１との間でデータの授受を行うための要求信号を、通信ブロック２３内のＣＡＮコントローラ２３１とやりとりするための装置である。要求信号とは、具体的にはリード信号、ライト信号である。ＣＡＮコントローラ２３１においてメッセージボックス２３２からメモリ２２１に対するデータの送信または受信の要求が発生した場合は、ＣＡＮコントローラ２３１からＣＡＮメモリコントローラ２１４へそれぞれライト信号またはリード信号が送信される。そしてこのライト信号またはリード信号を受信したＣＡＮメモリコントローラ２１４は、それぞれの信号を受信したことをデコーダ２１５に通知する。デコーダ２１５においてメモリ２２１からメッセージボックス２３２に対するデータの送信または受信の要求が発生した場合は、デコーダ２１５からＣＡＮメモリコントローラ２１４へその要求を通知する信号が送信され、その信号を受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１にそれぞれライト信号またはリード信号を送信する。またＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１内のレジスタに対するデータの書き込みおよび読み出しを行うことができるようになっている。
【００５６】
デコーダ２１５は、ソフトウェアに基づいて作動し、暗号化／復号のための各種制御処理を行う装置である。具体的には、デコーダ２１５は、メモリ２２１からパケット等の情報の読み出し、書き込みを行えるようになっている。またデコーダ２１５は、アドレス線２５を介してＣＰＵ２０およびＣＡＮコントローラ２３１から、メモリ２２１中のアドレスの情報を受信し、これに基づいてメモリ２２１の当該アドレス領域にＣＰＵ２０およびメッセージボックス２３２がアクセスできるようにすることができる。またデコーダ２１５は、メモリ２２１からＣＰＵ２０のレジスタへアクセスできるように、アクセスする対象のＣＰＵ２０のレジスタ名をアドレス線２５を介してＣＰＵ２０に出力するようになっている。またデコーダ２１５は、メモリ２２１からメッセージボックス２３２にアクセスできるように、アクセスする対象のメッセージボックス２３２のボックスナンバーをアドレス線２５を介してＣＰＵ２０に出力するようになっている。
【００５７】
またデコーダ２１５は、暗号化／復号部２２４に制御信号を出力することで、暗号化／復号部２２４を制御し、暗号化／復号部２２４に上記したような暗号化／復号化の処理を行わせることができるようになっている。
【００５８】
またデコーダ２１５は、リード／ライト信号をＣＡＮコントローラ２３１に出力するよう要求する制御信号を、ＣＡＮメモリコントローラ２１４に送信できるようになっている。またデコーダ２１５は、ＣＡＮメモリコントローラ２１４がＣＡＮコントローラ２３１からリード／ライト信号を受信したことの通知を、ＣＡＮメモリコントローラ２１４から受信できるようになっている。またデコーダ２１５は、ＣＡＮコントローラ２３１のレジスタに対して読み出し、書き込みを行うよう要求する信号をＣＡＮメモリコントローラ２１４に送信することができるようになっている。またデコーダ２１５は、ＣＡＮメモリコントローラ２１４からＣＡＮコントローラ２３１のレジスタの内容の通知を受けるようになっている。
【００５９】
またデコーダ２１５は、リード／ライト信号をＣＰＵ２０に出力するよう要求する制御信号を、ＣＰＵメモリコントローラ２１１に送信できるようになっている。またデコーダ２１５は、ＣＰＵメモリコントローラ２１１がＣＰＵ２０からリード／ライト信号を受信したことの通知を、ＣＰＵメモリコントローラ２１１から受信できるようになっている。
【００６０】
またデコーダ２１５は、割り込み信号をＣＰＵ２０に出力するよう要求する制御信号を、割り込み処理部２１２に送信できるようになっている。またデコーダ２１５は、デコーダ２１５がＣＰＵ２０から割り込み信号を受信したことの通知を、割り込み処理部２１２から受信できるようになっている。
【００６１】
またデコーダ２１５は、後述する通信パケットをメモリ２２１が受信したことを通信復帰処理部２１３に通知することができるようになっている。またデコーダ２１５は、通信復帰処理部２１３から鍵を変更するよう要求する信号を受信すると、この信号を乱数発生器２２６へ出力することができるようになっている。
【００６２】
以上のような構成の通信装置が、ＣＡＮバス５を介して車内ＬＡＮ１内の他の通信装置と通信を行うときの作動を以下説明する。
【００６３】
図４は、この通信装置からＣＡＮバス５へのパケットの送信を行うときにデコーダ２１５が行う処理を示すフローチャートである。
【００６４】
通信装置からＣＡＮバス５へのパケットの送信においては、まずＣＰＵ２０が送信のためのパケットを作成し、自己内のレジスタへ格納する。図５に、このとき作成されるパケットの構造を示す。この図は、通信装置内でＣＰＵ２０、暗号ブロック２２、通信ブロック２３の間でやりとりされるパケットの構造の変化を示している。
【００６５】
ＣＰＵ２０が作成するパケットは、図５中右側一番上に帯状に示されているように、アドレス、ＩＤ、ＤＬＣおよびデータ（平文）によって構成される。データ（平文）は、このパケット中で通信先に伝えたい情報、すなわちパケットの本体である。ＣＰＵ２０によって生成されるデータは平文、すなわち暗号化されていないデータである。アドレスは、このパケットが格納されるべきメッセージボックス２３２内のボックスのボックスナンバーを示すものである。ＩＤは、このパケット内のデータ（平文）の種別を示すものである。例えば、このパケットが暗号化を必要とするものであるか否かの区別は、このＩＤの特定のビットを参照することによって判別することができる。また、このパケットがメッセージボックス中のどのボックスに格納されるべきかも、このＩＤの特定のビットを参照することで判定される。ＤＬＣは、このパケット内のデータ（平文）のデータ長である。
【００６６】
パケットを作成したＣＰＵ２０は、ＣＰＵメモリコントローラ２１１へライト信号を送信し、またデコーダ２１５へアドレス信号を送信する。このアドレス信号は、ＣＰＵ記憶部２２２内の領域の、このパケットが格納されるべき領域の先頭アドレスを示す信号である。
【００６７】
ＣＰＵメモリコントローラ２１１はＣＰＵ２０からライト信号を受信すると、デコーダ２１５にライト信号を受信したことを通知する。デコーダ２１５はこの通知を受信し（ステップ３０５）、ＣＰＵ２０から受信したアドレス信号に基づいてメモリ２２１に制御信号を送信する（ステップ３１０）。この制御信号は、メモリ２２１がこのアドレス信号の示すアドレスを先頭とする領域にＣＰＵ２０のレジスタからパケットを受信することができるようにするための制御信号である。これにより、ＣＰＵ２０からのパケットはメモリ２２１のＣＰＵ記憶部２２２内に格納される。
【００６８】
次にデコーダ２１５は、ＣＰＵ記憶部２２２からこのパケットを読み出し、読み出したパケットのＩＤを参照し、それによりこのパケットが暗号化を必要とするものであるか否かを判定する（ステップ３２０）。暗号化が必要でないと判定すれば、デコーダ２１５は読み出したデータをそのままＣＡＮ記憶部２２３に書き込む（ステップ３４０）。暗号化が必要であると判定すれば、デコーダ２１５は暗号化／復号部２２４に制御信号を送信し、このパケット内のデータを暗号化するよう要求する制御信号を送信する（ステップ３３０）。この制御信号を受信した暗号化／復号部２２４は、ＣＰＵ記憶部２２２から該当するパケットを読み出し、現在の鍵を使用して、読み出したパケット中のデータ（平文）を暗号化し、データが暗号化されたパケットをＣＡＮ記憶部２２３に書き込む。
【００６９】
ステップ３３０、ステップ３４０の処理の後、デコーダ２１５はＣＡＮ記憶部２２３に書き込まれたパケットがメッセージボックス２３２に移されるための処理を行う（ステップ３５０）。すなわち、デコーダ２１５はＣＡＮメモリコントローラ２１４にリード信号を送信するよう要求し、パケットがこのパケットのアドレスに対応するボックスナンバーのボックスに格納されるように、ＣＡＮコントローラ２３１にアドレス信号を送信し、その後メモリ２２１からメッセージボックス２３２へ当該パケットが送信されるように、メモリ２２１を制御する。これによってＣＡＮ記憶部２２３からメッセージボックス２３２の当該ボックスにパケットが送信される。
【００７０】
この送信されるパケットの構造は、図５の右側中部に示されるように、ＣＰＵ２０が出力したパケットと比べて、データ（平文）がデータ（暗号化）に変化していることが異なっており、他の部分の構造は同じである。なお、データ（暗号化）は暗号化されたデータのことである。
【００７１】
次に、デコーダ２１５はメッセージボックス２３２に格納されたパケットがＣＡＮバス５に送信されるようにするための処理をする（ステップ３６０）。すなわち、ＣＡＮメモリコントローラ２１４に制御信号を送信し、それによってＣＡＮメモリコントローラ２１４がＣＡＮコントローラ２３１に送信要求を行うよう要求する。この制御信号を受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１内の送信要求フラグがオンとなるようＣＡＮコントローラ２３１を制御する。
【００７２】
そしてＣＡＮコントローラ２３１は、送信要求フラグがオンとなったことを検出して、メッセージボックス２３２が受信したパケットを読み出し、このパケットのアドレスを切り取り、先頭部にＳＯＦ（Ｓｔａｒｔ　Ｏｆ　Ｆｉｌｅ）コードを付加し、後端部にＣＲＣ、ＡＣＫおよびＥＯＦ（Ｅｎｄ　Ｏｆ　Ｆｉｌｅ）コードを付加する。なお、ＣＲＣコードはパケットの伝送誤りをチェックためのコードでる。またＡＣＫはパケットの正常受信が行われたか否かを示すためのコードである。これによって、パケットは図５の右側下部に示すような構造になる。
【００７３】
この後、パケットが実際にＣＡＮバス５に送信されるか否かは、ＣＡＮコントローラ２３１およびドライバ２３３のＣＡＮのプロトコルに従った作動に依る。例えば、送信するタイミングにおいて受信が行われていたり、あるいは他の通信装置と同時にパケットを送信してもＣＡＮの規格（ＩＳＯ１１８９８、ＩＳＯ１１５１９−２等）による調停負けとなる場合においては、実際には送信は行われない。この場合には、ＣＡＮコントローラ２３１がドライバ２３３を介し、先行して送信されたパケット、または調停に勝ったパケットの受信を行い、受信したパケットをメッセージボックス２３２に格納する。そしてＣＡＮコントローラ２３１は、自己の割り込みレジスタに受信完了割り込みであることを示す値を設定し、また割り込み処理部２１２に割り込み信号を送信する。
【００７４】
また、パケットが実際にＣＡＮバス５に送信されない別の場合として、ＣＡＮコントローラ２３１がドライバ２３３を介してパケットを送信しようとするときに、ＣＡＮコントローラ２３１がＣＡＮバス５のエラー検出を行う場合がある。この場合には、ＣＡＮコントローラ２３１は、自己の割り込みレジスタにエラー検出割り込みであることを示す値を設定し、また割り込み処理部２１２に割り込み信号を送信する。
【００７５】
また、パケットが実際にＣＡＮバス５に送信される場合には、ＣＡＮコントローラ２３１は送信のために読み込んだパケットをドライバ２３３に送出し、ドライバ２３３はこのパケットを受信して、このパケットに対して増幅等の処理を行った後ＣＡＮバス５に送信する。この場合には、ＣＡＮコントローラ２３１は、自己の割り込みレジスタに送信完了割り込みであることを示す値を設定し、また割り込み処理部２１２に割り込み信号を送信する。
【００７６】
上記のような受信完了割り込み、エラー検出割り込み、送信完了割り込みといった割り込み信号を、割り込み処理部２１２がＣＡＮコントローラ２３１から受信すると、割り込み受信したことをデコーダ２１５に通知する。
【００７７】
図６および図７は、この通知を受信したデコーダ２１５が行う処理を示すフローチャートである。
【００７８】
この図６および図７の処理によって通信装置が行う作動の概要は以下の通りである。
【００７９】
通信装置がパケットを送信したとき（ステップ６３０以降）、鍵を次のものに変更する。
【００８０】
通信装置がエラーを検出したとき、（ステップ６５０以降）、鍵を次のものに変更する。ただし、このとき送信しようとして暗号化したパケットがあれば、このパケットについては再度次の鍵で暗号化し直してから送信しようとする。なお、通信装置がエラーを検出するのは、ＣＡＮバス５からエラー通知のためのエラーパケットを受信するか、あるいは自己の送信時にエラーを検知してエラーパケットを出力するかのいずれかの場合であるので、いずれの場合にもＣＡＮバス５にパケットが流れる。それゆえに鍵の変更を行うようになっている。
【００８１】
通信装置がパケットを受信したとき（ステップ７０５以降）、そのまま受信して鍵を次のものに変更する。ただし、このとき送信しようとして暗号化したパケットがあれば、このパケットについては再度次の鍵で暗号化し直してから送信しようとする。
【００８２】
以下、このれらのフローチャートの詳細について説明する。
【００８３】
まずステップ６１０でデコーダ２１５が割り込み受信の通知を受信する。するとデコーダ２１５は、割り込みの種類を検出するための処理を行い、割り込みが送信完了割り込みであるか、エラー検出割り込みであるか、受信完了割り込みであるかを判定する（ステップ６２０）。具体的には、デコーダ２１５は、ＣＡＮコントローラ２３１の割り込みレジスタの値を読み出すよう要求する制御信号をＣＡＮメモリコントローラ２１４に送信する。ＣＡＮメモリコントローラ２１４はこれに基づいて割り込みレジスタの値を読み出し、それをデコーダ２１５に通知する。そしてデコーダ２１５はこの通知を受信し、この受信した値から割り込みの種類を判定する。
【００８４】
割り込みが送信完了割り込みであると判定すると、デコーダ２１５は、鍵を次のものに進めるよう要求する制御信号を鍵生成部２２５の乱数発生器２２６に出力する（ステップ６３０）。この制御信号を受信した乱数発生器２２６は、現在の数列中の次の値を鍵として暗号化／復号部２２４に送信する。そして暗号化／復号部２２４はこの受信した鍵を新たな鍵として以降使用する。
【００８５】
次にデコーダ２１５は、ＣＰＵ２０に割り込み信号を出力するよう要求する制御信号を割り込み処理部２１２に送信する（ステップ６４０）。割り込み処理部２１２はこの制御信号を受信し、この制御信号に従ってＣＰＵ２０に割り込み信号を送信する。これによって、ＣＰＵ２０は割り込みを検出することができ、それによって次の処理に進むことができるようになる。
【００８６】
ステップ６２０の判定処理において、割り込みがエラー検出割り込みであるとデコーダ２１５が判定すると、デコーダ２１５はＣＡＮコントローラ２３１の送信要求フラグの値を読み出すよう要求する制御信号をＣＡＮメモリコントローラ２１４に送信する。この制御信号を受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１の送信要求フラグを読み出し、読み出した値をデコーダ２１５に通知する。デコーダ２１５はこの通知に基づいて、送信要求フラグがオンであるか否かに基づいて現在送信要求があるか否かを判定する（ステップ６５０）。
【００８７】
送信要求がないと判定すれば、デコーダ２１５は、鍵を次のものに変更するための処理を行う。すなわちデコーダ２１５は、ステップ６９０においてはステップ６３０と同等の処理で鍵を進めさせ、またステップ６９５においてはステップ６４０と同等処理でＣＰＵ２０へ割り込み信号を送信させる。
【００８８】
送信要求があると判定すれば、デコーダ２１５は、現在の送信要求を取り下げて、パケットを新たな鍵で暗号化し直して、再度送信処理を行うための処理をする。このため、デコーダ２１５は、まず送信要求を取り下げる、すなわち送信要求フラグをオフに設定するよう要求する制御信号をＣＡＮメモリコントローラ２１４に送信する（ステップ６６０）。この制御信号を受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１の送信要求フラグをオフにセットする。そしてデコーダ２１５は、ステップ６７０においてはステップ６３０と同等の処理で鍵を進めさせ、またステップ６８０においてはステップ６４０と同等の処理でＣＰＵ２０へ割り込み信号を送信させる。
【００８９】
そしてデコーダ２１５は、再度の送信処理を行うために、図４のステップ３２０の処理以降と同等の送信処理を行う。
【００９０】
また、ステップ６２０の判定処理において、割り込みが受信完了割り込みであるとデコーダ２１５が判定すると、デコーダ２１５はＣＡＮコントローラ２３１の送信要求フラグの値を読み出すよう要求する制御信号をＣＡＮメモリコントローラ２１４に送信する。この制御信号を受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１の送信要求フラグを読み出し、読み出した値をデコーダ２１５に通知する。デコーダ２１５はこの通知に基づいて、送信要求フラグがオンであるか否かに基づいて現在送信要求があるか否かを判定する（ステップ７０５）。
【００９１】
送信要求がないと判定すれば、デコーダ２１５は、通信ブロック２３が受信したパケットがこの通信装置宛のものか、すなわちこのパケットをＣＰＵ２０が必要とするか否かを判定する（ステップ７１０）。この判定の処理においては、まずデコーダ２１５がＣＡＮコントローラ２３１の受信ボックスレジスタの値を読み出すよう要求する制御信号をＣＡＮメモリコントローラ２１４に送信する。この制御信号を受信した受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１の受信ボックスレジスタを読み出し、読み出した値をデコーダ２１５に通知する。デコーダ２１５はこの通知を受けた値がｎであれば、パケットはＣＰＵ２０に必要でないと判定し、またこの値が０〜ｎ−１であれば、パケットはＣＰＵ２０に必要なデータであると判定する。
【００９２】
この判定処理において、ＣＡＮコントローラ２３１が受信したパケットはＣＰＵ２０に必要ないと判定すると、デコーダ２１５は、鍵を次のものに進めるよう要求する制御信号を鍵生成部２２５の乱数発生器２２６に出力する（ステップ７１５）。この制御信号を受信した乱数発生器２２６は、現在の数列中の次の値を鍵として暗号化／復号部２２４に送信する。そして暗号化／復号部２２４はこの受信した鍵を新たな鍵として以降使用する。なおここでは、パケットはＣＰＵ２０が必要とするものではないので、デコーダ２１５は割り込み処理部２１２を制御してＣＰＵ２０へ割り込み信号を送信させることはしない。
【００９３】
またステップ７１０の判定処理において、ＣＡＮコントローラ２３１が受信したパケットはＣＰＵ２０に必要なものであると判定すると、デコーダ２１５はメッセージボックス２３２からメモリ２２１へ受信したパケットを移し、さらにこのパケットの復号が必要であるか否かの判定を行う（ステップ７２５）。
【００９４】
このステップ７２５の処理においては、デコーダ２１５はまずリード信号をＣＡＮコントローラ２３１に送信するよう要求する制御信号をＣＡＮメモリコントローラ２１４に出力し、またＣＡＮコントローラ２３１にステップ７１０で取得したメッセージボックスナンバーを送信する。ＣＡＮメモリコントローラ２１４はデコーダ２１５から受信した制御信号に従い、ＣＡＮコントローラ２３１にリード信号を送信する。リード信号およびボックスナンバーを受信したＣＡＮコントローラ２３１は、メッセージボックス２３２の当該ボックスからローカルバス２７を介してデータが送出されるようにメッセージボックス２３２を制御する。またデコーダ２１５は、ＣＡＮ記憶部２２３でデータを受信するようメモリ２２１を制御する。これによってメッセージボックス２３２からＣＡＮ記憶部２２３に受信パケットが送信される。次にデコーダ２１５は、ＣＡＮ記憶部２２３から受信したパケットのＩＤを読み出し、このＩＤからパケットが復号を必要としているか否かを判定する。
【００９５】
復号を必要としないと判定すれば、デコーダ２１５はＣＡＮ記憶部２２３から受信したパケットを読み出し、読み出したパケットをＣＰＵ記憶部２２２に書き込む（ステップ７３０）。
【００９６】
復号を必要とすると判定すれば、デコーダ２１５は暗号化／復号部２２４に制御信号を送信し、ＣＡＮ記憶部２２３内の当該パケットのデータを復号するよう要求する制御信号を送信する（ステップ７３５）。この制御信号を受信した暗号化／復号部２２４は、ＣＡＮ記憶部２２３から該当するパケットを読み出し、現在の鍵を使用して、読み出したパケット中のデータ（暗号化）を復号し、データが復号されたパケットをＣＰＵ記憶部２２２に書き込む。
【００９７】
ステップ７３０、ステップ７３５の処理の後、デコーダ２１５はステップ７１５と同等の処理で、鍵生成部２２５に新たな鍵を生成させる（ステップ７４０）。そして、デコーダ２１５はＣＰＵ記憶部２２２に書き込まれたパケットがＣＰＵ２０のレジスタに移されるための処理を行う（ステップ７４５）。すなわち、デコーダ２１５は割り込み信号をＣＰＵ２０に送信するよう要求する信号を割り込み処理部２１２に出力する。次にデコーダ２１５は、ライト信号を送信するよう要求する制御信号をＣＰＵメモリコントローラ２１１に出力し、さらにＣＰＵ２０にパケットを送信する先のレジスタ名を通知する。そしてデコーダ２１５がメモリ２２１を制御し、ＣＰＵ記憶部２２２内の当該パケットがローカルバス２７へ送信されるようにする。また、制御信号を受信した割り込み処理部２１２は、ＣＰＵ２０に割り込み信号を送信する。また制御信号を受信したＣＰＵメモリコントローラ２１１は、ライト信号をＣＰＵ２０に送信する。割り込み信号、ライト信号、レジスタ名の通知を受信したＣＰＵ２０はローカルバス２７から当該レジスタにパケットを格納できるように処理を行う。このようにすることで、ＣＰＵ記憶部２２２からＣＰＵ２０へパケットが送信される。
【００９８】
また、ステップ７０５の送信要求の有無の判定処理において、送信要求があると判定すると、デコーダ２１５は、現在の送信要求を取り下げて、パケットを新たな鍵で暗号化し直して、再度送信処理を行おうとする。このため、デコーダ２１５は、まず送信要求を取り下げる、すなわち送信要求フラグをオフに設定するよう要求する制御信号をＣＡＮメモリコントローラ２１４に送信する（ステップ７５０）。この制御信号を受信したＣＡＮメモリコントローラ２１４は、ＣＡＮコントローラ２３１の送信要求フラグをオフにセットする。
【００９９】
そして、デコーダ２１５はまずステップ７１０〜７４５と同等の受信処理を行う。なお、図７中では、これらの処理に対しては、対応するステップ７１０〜７４５のそれぞれと同じステップ番号にダッシュを付加したものをステップの識別子として付与する。
【０１００】
そしてデコーダ２１５は、再度の送信処理を行うために、図４のステップ３２０の処理以降と同等の送信処理を行う。
【０１０１】
以上のような通信装置の作動によって、必要な場合は送信するパケットは暗号ブロック２２において暗号化され、受信したパケットは暗号ブロック２２において復号されるようになるので、ＣＡＮバス５において暗号化されたパケットが流れるので、暗号化された通信を行うことが可能となる。
【０１０２】
また、デコーダ２１５が、送信完了割り込み、受信完了割り込み、エラー割り込みを受信することに基づいて、鍵を新たなものに変更するので、ＣＡＮバス５にパケットが流れたことを起因として鍵を変更するようになる。したがって、車内ＬＡＮ１内のこのような作動を行う通信装置は同期して鍵を変更することが可能となる。また、車内ＬＡＮ１内の各通信装置は全く同じ作動の鍵生成部２２５を有しているので、所定の同一の鍵変更規則で順次鍵が変更され、それぞれで鍵の食い違いが発生しないので、暗号化通信が損なわれることがない。
【０１０３】
また、暗号化アルゴリズムとして共有鍵暗号方式を用いているので、鍵を通信装置間で受け渡す必要がない。従って、鍵の受け渡しのための公開鍵暗号方式を用いる必要がないので、暗号の通知暗号化／復号の処理がすみやかに行われる。
【０１０４】
従って、キャリア検出型のネットワークにおいて、リアルタイム性が確保された暗号化通信が行えるようになる。
【０１０５】
なお、図６および図７に示したようなデコーダ２１５の作動においては、割り込み信号の受信がある度に鍵を変更するようになっているが、必ずしもこのようになっている必要はない。図８は、鍵を変更する他の方法の概略を示す概念図である。デコーダ２１５が、割り込みの通知を受信するたびに保持する数を１増やすカウンタ機能と、このカウンタ機能が保持する数と所定の設定回数とを比較する機能と、この比較において、カウンタ機能が保持する数が所定の設定回数に到達したときにのみ、ステップ６３０等の鍵を変更する処理を行う機能とを備えていてもよい。なおこの場合、カウンタが保持する数が所定の設定回数に達すると、カウンタが保持する数はゼロにリセットされるようになっている。このようになっていることで、デコーダ２１５が割り込みの通知を所定の回数受信することによって鍵を変更するようにすることができる。
【０１０６】
このような暗号化通信を行っている際に、車内ＬＡＮ１内の通信装置のいずれかが故障等の理由でバスオフ状態となった場合、この通信装置は通信に参加できない。すなわち暗号化される通信への参加が途絶する。バスオフとはＣＡＮで規定される通信装置のエラー状態の１つで、ＬＡＮ内の通信に参加することができないような状態のことである。バスオフや通信停止となった通信装置には上記したような割り込みが発生しないので、車内ＬＡＮ１内の他の通信装置と同期して鍵を順次変更していくことができない。それゆえ、この通信装置がバスオフあるいは通信停止から復帰したとき、他の通信装置と使用している鍵が異なっている。
【０１０７】
図９は、バスオフあるいは通信停止以後の鍵と種の変化の様子を模式的に示す図である。設定回数（本実施形態においては１回）ＣＡＮバス５にパケットが流れたことに起因してｋｅｙ１、ｋｅｙ２、ｋｅｙ３と鍵が進んだとき、車内ＬＡＮ１内の通信装置の１つが通信復帰した場合の車内ＬＡＮ１内の各通信装置の作動について以下説明する。
【０１０８】
まず、通信に復帰した通信装置は、ＣＡＮが規定する手順に従って、通信に復帰したことを他の通信装置に通知するための通信復帰パケットを平文でＣＡＮバス５に送信する。図１０は、このパケットを受信した他の通信装置における通信復帰処理部２１３の処理を示すフローチャートである。ＣＡＮコントローラ２３１は、ＣＡＮバス５から通信復帰パケットを受信すると、このパケットをメッセージボックス２３２に格納し、割り込みレジスタに受信完了割り込みであることを示す値を設定し、また割り込み処理部２１２に割り込み信号を送信する。そして、デコーダ２１５は、図７のステップ７０５、７１０、７２５、７３０、７４０、７４５の処理を行う。そしてステップ７４５の次にデコーダ２１５は通信復帰処理部２１３に通信復帰パケットの受信があったことを通知する。
【０１０９】
通信復帰処理部２１３はこの通知を受信し（ステップ９１０）、この受信に基づいて、生成する疑似ランダム数列新たなものにするよう要請する制御信号をデコーダ２１５に送信する（ステップ９２０）。デコーダ２１５はこの制御信号を受信すると、それを乱数発生器２２６に転送する。そして、この制御信号を受信した乱数発生器２２６は、ランダムシード２２７からデータを読み出し、生成する疑似ランダム数列を、受信したデータに基づいた所定の疑似ランダム数列に変更し、この数列の１番目の要素を暗号化／復号部２２４に送信し、またこの１番目の要素をランダムシード２２７に書き込む。
【０１１０】
これによって、通信復帰パケットを受信した通信装置においては、同一のランダムシードを使用して新たな疑似ランダム数列ｋｅｙ’１、ｋｅｙ’２…に変更する。また、通信復帰パケットを送信した通信装置も、均等の作動によって同一のランダムシードを使用して新たな疑似ランダム数列に変更するので、車内ＬＡＮ１内の全ての通信装置において鍵が同期されるようになる。
【０１１１】
このようにすることによって、暗号化される通信の途絶状態から復帰した通信装置についても、再び鍵の同期が行われることによって、暗号化通信が行われるようになる。
【０１１２】
なお、本実施形態においては、疑似ランダム数列を順次暗号化／復号部２２４に出力する乱数発生器２２６が、鍵を他の通信装置と同一の鍵変更規則で変更する鍵変更手段を構成する。
【０１１３】
また、図６および図７に記載のデコーダ２１５のステップ６３０、６７０、６９０、７１５，７１５’、７４０、および７４０’の処理が、ネットワーク内にパケットが流れることに基づいて、鍵変更手段に鍵を変更させる鍵変更制御手段を構成する。
【０１１４】
また、図１０に記載の通信復帰処理部のステップ９１０および９２０の処理が、ットワークを介して、他の通信装置の１つが暗号化されたパケット通信への参加の途絶状態から復帰したことの通知を受信すると、鍵規則変更手段に、種の特定する鍵変更規則を同一の鍵変更規則とさせる鍵規則変更制御手段を構成する。
【０１１５】
また、乱数発生器２２６の、ランダムシード２２７からデータを読み出し、生成する疑似ランダム数列を、受信したデータに基づいた所定の疑似ランダム数列に変更し、この数列の１番目の要素を暗号化／復号部２２４に送信する処理が、種の特定する鍵変更規則を同一の鍵変更規則とする鍵規則変更手段を構成する。
【０１１６】
また、乱数発生器２２６の、上記した数列の１番目の要素をランダムシード２２７に書き込む処理が、種を他の通信装置と同一の種変更規則で変更する種変更手段を構成する。
【０１１７】
また、通信装置間の通信の暗号化／復号のアルゴリズムとしては、ＤＥＳが用いられているが、必ずしもＤＥＳである必要はなく、共有鍵暗号システムであればどのようなアルゴリズムであってもよい。
【０１１８】
また、鍵生成部２２５は複数の乱数発生器２２６を有し、通信装置がバスオフ等から復帰する時に乱数発生器２２６を切り替えることで、新たな疑似ランダム数列を生成するようになっていてもよい。
【０１１９】
所定の鍵変更規則は乱数表でもよいし、乱数発生器でもよいし、所定の数式に従って処理装置が計算しても良い。すなわち、各通信装置で同じ順序で同じ鍵が生成できるようになっていればよい。
【０１２０】
また、本実施形態においては、車内ＬＡＮ１内の通信装置が全て暗号化される通信に参加するようになっているが、必ずしもネットワーク内の通信装置が全て暗号化される通信に参加し、暗号化機能を有している必要はない。暗号化通信に参加する通信装置のみで鍵が同期していれば、発明は実現する。また、本実施形態においては、鍵の変更は、車内ＬＡＮ１を参加するものが流すパケットのみに起因していてもいいし、全てのパケットの受信に起因していても良い。すなわち、鍵が各通信装置間で同期して変更されるようになっていればよいのである。
【図面の簡単な説明】
【図１】本発明の実施形態に係る車内ＬＡＮ１の構成を示すブロック図である。
【図２】車内ＬＡＮ１内の通信装置における、暗号ブロック２２および通信ブロック２３の構成を示す図である。
【図３】メッセージボックス２３２の記憶領域の構造を模式的に示す図である。
【図４】通信装置からＣＡＮバス５へのパケットの送信を行うときにデコーダ２１５が行う処理を示すフローチャートである。
【図５】通信装置内でやりとりされるパケットの構造の変化を示す図である。
【図６】割り込み受信の通知を受信したデコーダ２１５が行う処理を示すフローチャートである。
【図７】割り込み受信の通知を受信したデコーダ２１５が行う処理を示すフローチャートである。
【図８】複数回の割り込み毎に鍵を変更する方法を示す概念図である。
【図９】バスオフあるいは通信停止以後の鍵と種の変化の様子を模式的に示す図である。
【図１０】通信復帰処理部２１３の処理を示すフローチャートである。
【図１１】ＴＣＰ／ＩＰおよび制御系ＬＡＮとＯＳＩ参照モデルとの対応関係を示す図表である。
【符号の説明】
１…車内ＬＡＮ、２…Ａ通信装置、３…Ｂ通信装置、４…Ｃ通信装置、
５…ＣＡＮバス、２０…ＣＰＵ、２２…暗号ブロック、２３…通信ブロック、２４…制御線、２５…アドレス線、２６…割り込み線、２７…ローカルバス、
２１０…制御部、２１１…ＣＰＵメモリコントローラ、
２１２…割り込み処理部、２１３…通信復帰処理部、
２１４…ＣＡＮメモリコントローラ、２１５…デコーダ、２２０…演算部、
２２１…メモリ、２２２…ＣＰＵ記憶部、２２３…ＣＡＮ記憶部、
２２４…暗号化／復号部、２２５…鍵発生部、２２６…乱数発生器、
２２７…ランダムシード、２３１…ＣＡＮコントローラ、
２３２…メッセージボックス、２３３…ドライバ。
【図１】
2004015305.tif 000003
【図２】
2004015305.tif 000004
【図３】
2004015305.tif 000005
【図４】
2004015305.tif 000006
【図５】
2004015305.tif 000007
【図６】
2004015305.tif 000008
【図７】
2004015305.tif 000009
【図８】
2004015305.tif 000010
【図９】
2004015305.tif 000011
【図１０】
2004015305.tif 000012
【図１１】
2004015305.tif 000013