(57)【要約】【課題】ＡＥＳ暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができるデータ変換装置及びデータ変換方法及び通信システムを提供する。【解決手段】ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを、これらに対応し且つ３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つにより表されるルックアップテーブルＴｉを使用して３２ビットの中間データｈ（ｊ）ｉに変換する。当該中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより、変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を施すことで得られる変換後データｄｊを一括して求める。【選択図】図５
2009276458.tif 000002
【特許請求の範囲】
【請求項１】
４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求めるデータ変換装置であって、
ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを次式に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求め、この求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより前記変換後データｄｊを求めるデータ変換装置。
ｈ（ｊ）ｉ＝Ｔｉ[ａｉ，ｊ−ｃｉ]
ただし、
Ｔｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブル、
ａｉ，ｊは、変換対象データにおけるｉ行ｊ列目（ｉ，ｊ＝０，１，２，３）の８ビットの部分データ、
ａｉ，ｊ−ｃｉは、ＳｈｉｆｔＲｏｗｓを施すことによりｉ行ｊ列目へ移動する変換対象データにおける８ビットの部分データ、である。
【請求項２】
４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求めるデータ変換方法であって、
ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを次式に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求め、この求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより前記変換後データｄｊを求めるデータ変換方法。
ｈ（ｊ）ｉ＝Ｔｉ[ａｉ，ｊ−ｃｉ]
ただし、
Ｔｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブル、
ａｉ，ｊは、変換対象データにおけるｉ行ｊ列目（ｉ，ｊ＝０，１，２，３）の８ビットの部分データ、
ａｉ，ｊ−ｃｉは、ＳｈｉｆｔＲｏｗｓを施すことによりｉ行ｊ列目へ移動する変換対象データにおける８ビットの部分データ、である。
【請求項３】
２つの通信装置間で共通の暗号鍵を持ち合って、少なくとも一方の通信装置から送信される乱数情報を他方の通信装置が自身の暗号鍵を使用して暗号化した暗号化結果を前記一方の通信装置へ返信し、当該一方の通信装置では、自身が送信した前記乱数情報を自身の暗号鍵を使用して暗号化した暗号化結果と他方の通信装置から送られてきた暗号化結果との比較を通じて当該他方の通信装置の認証を行う通信システムにおいて、
前記２つの通信装置の双方に請求項１に記載のデータ変換装置が組み込まれてなる通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＥＳ暗号化方式を使用してデータを暗号化するデータ変換装置及びデータ変換方法及び通信システムに関するものである。
【背景技術】
【０００２】
従来、データを暗号化するための様々な暗号方式が知られている。近年では、米国連邦標準技術局（ＮＩＳＴ）により、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）と呼ばれる共通暗号方式が規格化され普及しつつある。この暗号方式は、コンピュータ間のデータ通信等、各種の技術分野で採用されつつある。
【０００３】
＜ＡＥＳ概要＞
ここでまず、ＡＥＳ暗号方式の概要を説明する。図６に示すように、ＡＥＳ暗号方式は、ブロック長が１２８ビットのブロック暗号である。この１２８ビットのブロックデータは、１バイト（８ビット）単位のデータ（以下、「部分データ」という。）に分割され、４×４、すなわち４行４列の正方行列として表現される。なお、図６では、ブロックデータにおけるｉ行目（ｉ＝０，１，２，３）のｊ列目（ｊ＝０，１，２，３）の部分データを、ａｉ，ｊと表す。また、図７に示すように、ＡＥＳ暗号方式の暗号化処理に際して使用される鍵（共通鍵）の鍵長は１２８ビット、１９２ビット、２５６ビットの３種類である。この鍵も、１バイト単位のデータに分割され、４×Ｎｋ（Ｎｋ＝４，６，８）の長方形行列として表現される。
【０００４】
そして、ＡＥＳ暗号方式では、次のような手順でブロックデータを暗号化する。すなわち、図８に示すように、まず、ＡｄｄＲｏｕｎｄＫｅｙ（ラウンドキー加算）を１回行う。次に、ＳｕｂＢｙｔｅｓ（バイト置換）、ＳｈｉｆｔＲｏｗｓ（行シフト）、ＭｉｘＣｏｌｕｍｎｓ（列ミックス）及び前記ＡｄｄＲｏｕｎｄＫｅｙの４種類の変換を順に行うＲｏｕｎｄＦｕｎｃｔｉｏｎ（ラウンド変換）を複数のラウンド、正確には（Ｎｒ−１）回にわたって繰り返す。ここで、Ｎｒは、定められたラウンド数である。そして最後に、ＲｏｕｎｄＦｕｎｃｔｉｏｎの中からＭｉｘＣｏｌｕｍｎｓだけを除いたＦｉｎａｌＲｏｕｎｄＦｕｎｃｔｉｏｎ（最終ラウンド変換）を１回だけ行う。なお、図８の右上に示されるように、ラウンド数Ｎｒは、鍵長Ｎｋに対応して決められている。鍵長Ｎｋが１２８，１９６，２５６ビット、すなわちＮｋ＝４，６，８のとき、ラウンド数Ｎｒ＝１０，１２，１４となる。
【０００５】
＜各変換の説明＞
次に、ＡＥＳ暗号方式を使用してデータを暗号化するための前述した４種類の変換について、それぞれ説明する。
【０００６】
＜ＳｕｂＢｙｔｅｓ＞
図９（ａ）に示すように、ＳｕｂＢｙｔｅｓは、ブロックデータの各単位である各部分データを、１バイト入出力のルックアップテーブル（Ｓ−ＢＯＸ）を使用して１対１に変換する処理である。すなわち、１バイトのデータである各部分データは１バイトの別のデータに変換される。８ビット２５６語のルックアップテーブルの内容は、入力値のガロア体ＧＦ（２８）上の逆数をとり、その結果にビット間の排他的論理和によるアフィン変換を施した結果を予め計算しておいたものである。
BM609347BM609347  ＜ＳｈｉｆｔＲｏｗｓ＞
図９（ｂ）に示すように、ＳｈｉｆｔＲｏｗｓでは、４×４行列の各行のデータをバイト単位で特定回数だけ循環左シフトする。すなわち、鍵長が１２８ビット又は１９２ビットの場合には、０行目はシフトなし、１行目は左に１つシフト、２行目は左に２つシフト、３行目は左に３つシフトする。このように、ＳｈｉｆｔＲｏｗｓでは、各行に対応する引数Ｃｉ（ｉ＝１，２，３）を使用して、ブロックデータを行単位（３２ビット単位）で変換する。
【０００７】
＜ＭｉｘＣｏｌｕｍｎｓ＞
ＭｉｘＣｏｌｕｍｎｓでは、前述したＳｈｉｆｔＲｏｗｓによる変換後のブロックデータにおける各列に対して、多項式「Ｃ（ｘ）＝３ｘ３＋ｘ２＋ｘ＋２」を掛け算する。すなわち、図９（ｃ）に示すように、ＭｉｘＣｏｌｕｍｎｓでは、前述の多項式Ｃ（ｘ）を使用して、ＳｈｉｆｔＲｏｗｓによる変換後のブロックデータを列単位で変換する。
【０００８】
＜ＡｄｄＲｏｕｎｄＫｅｙ＞
ＡｄｄＲｏｕｎｄＫｅｙでは、図９（ｄ）に示すように、ブロックデータと図７に示される元の鍵から生成されるＲｏｕｎｄＫｅｙとのXOR（排他論理和）をビット単位でとる。すなわち、ＡｄｄＲｏｕｎｄＫｅｙでは、ＲｏｕｎｄＫｅｙを使用して、ブロックデータを１ビット単位で変換する。具体的には、ＭｉｘＣｏｌｕｍｎｓによる変換後のデータｄｉ，ｊ（０≦ｉ≦３、０≦ｊ≦３）と、ラウンドキーＫｉ，ｊとのXORをとり、結果としてｅｉ，ｊを得る。これは、次式で示される。
【０００９】
ｄｉ，ｊ  XOR  ｋｉ，ｊ＝ｅｉ，ｊ
ここで、ＲｏｕｎｄＫｅｙは次のようにして生成される。すなわち、図１０に示すように、元の鍵を特定の拡張アルゴリズムに従って拡張し、その拡張した鍵をブロックデータのブロック長（１２８ビット）で順番に区切ることにより、図８に示されるブロックデータの暗号化手順に含まれるＡｄｄＲｏｕｎｄＫｅｙの回数分（「ラウンド数Ｎｒ＋１」回分）だけＲｏｕｎｄＫｅｙを生成する。こうして生成した複数のＲｏｕｎｄＫｅｙは、データの暗号化のために複数回行われるＡｄｄＲｏｕｎｄＫｅｙで順に使用される。なお、ＦｉｎａｌＲｏｕｎｄＦｕｎｃｔｉｏｎでのＡｄｄＲｏｕｎｄＫｅｙでは、同じくＦｉｎａｌＲｏｕｎｄＦｕｎｃｔｉｏｎでのＳｈｉｆｔＲｏｗｓによる変換後のデータが入力データとされる。
【００１０】
ところで、このようなデータの暗号化処理では、処理速度を向上させるための手法として、ルックアップテーブルを使用することが考えられる。しかし、ＡＥＳ暗号化方式では、１２８ビットのブロックデータ毎に変換が行われるため、これを１つのルックアップテーブルを使用して変換しようとすると、「２１２８×１６バイト」といった膨大な大きさのルックアップテーブルが必要となることから、これは現実的ではない。すなわち、データを暗号化するデータ変換装置において非常に大きなデータ記憶容量を確保する必要がある。そこで、当該データ記憶容量を縮小するべく、例えば特許文献１に示されるようなデータ変換装置が従来提案されている。
【００１１】
同文献１のデータ変換装置は、次のようにしてデータを暗号化する。すなわち、前述したように、ＲｏｕｎｄＦｕｎｃｔｉｏｎは、入力されるブロックデータに対して、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓ及びＡｄｄＲｏｕｎｄＫｅｙの各変換を順に施す処理である。しかし、同文献１では、各変換をそれぞれ行うのではなく、４行４列の行列で表される１２８ビットの変換対象データに対してＲｏｕｎｄＦｕｎｃｔｉｏｎを行うことで得られる変換後データを、８ビット入力３２ビット出力の４つのルックアップテーブル及びXOR演算のみを使用して求める。
【００１２】
具体的には、図１１（ａ）に示すように、まず変換対象データを構成する部分データ（８ビット）の中から、ＳｈｉｆｔＲｏｗｓの変換を施すことにより同列に移動する４つの部分データ（ａ０，ｊ、ａ１，ｊ−ｃ１、ａ２，ｊ−ｃ２、ａ３，ｊ−ｃ３）を選択する。例えばＳｈｉｆｔＲｏｗｓの変換を施すことにより１列目に移動する４つの部分データは、図１１（ａ）に太線の枠で示されるように、「ａ０，０、ａ１，１、ａ２，２、ａ３，３」である。
【００１３】
そして同図１１（ａ）に示されるように、この選択した４つの部分データからなる３２ビットのブロックデータを、各部分データに対応するルックアップテーブルＴ０〜Ｔ３を使用してそれぞれ変換後データにおける同列の４つの部分データからなる３２ビットのデータに変換し、これら変換後の４つのデータの排他論理和をとる。これにより、変換対象データに対して、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓを順に施すことで得られる図１１（ｂ）に示される変換後データが得られる。例えば前述したＳｈｉｆｔＲｏｗｓの変換を施すことにより１列目に移動する４つの部分データ「ａ０，０、ａ１，１、ａ２，２、ａ３，３」は、４つの部分データ「ｄ０，０、ｄ１，０、ｄ２，０、ｄ３，０」からなる３２ビットのデータに変換される。
【００１４】
さらに、図１１（ａ）に示されるように、このように求めたデータに、ＡｄｄＲｏｕｎｄＫｅｙによる変換を施すことにより、変換対象データに対してＲｏｕｎｄＦｕｎｃｔｉｏｎを行うことで得られる変換後データｅjが求められる。例えば１列目となる４つの部分データ「ｄ０，０、ｄ１，０、ｄ２，０、ｄ３，０」からなる３２ビットのデータは、「ｅ０，０、ｅ１，０、ｅ２，０、ｅ３，０」となる。なお、変換対象データにＳｈｉｆｔＲｏｗｓの変換を施すことにより２列目、３列目及び４列目に移動する４つの部分データからなる３２ビットのブロックデータについても、前述と同様にして変換される。
【００１５】
このように、８ビット入力３２ビット出力の４つのルックアップテーブルＴ０〜Ｔ３を使用して暗号化を行うことにより、データ変換装置におけるデータ記憶容量の縮小化が図られる。すなわち、特許文献１の各ルックアップテーブルＴ０〜Ｔ３は、処理対象データの部分データ（８ビット）を３２ビットのデータに変換するものである。このため、各ルックアップテーブルＴ０〜Ｔ３の情報量は、それぞれ「４バイト×２８＝１０２４バイト」であることから、４つのルックアップテーブルＴ０〜Ｔ３の情報量の合計は４０９６バイトとなる。この値は、前述した１つのルックアップテーブルを使用してデータの変換を行うようにした場合に必要とされる情報量（２１２８×１６バイト）に比べて小さい。
【特許文献１】特開２００３−１９５７４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
前述したようなデータ変換処理は、所定のデータ変換プログラムに従って実行されるところ、当該プログラムは、携帯電話、家電機器、自動車及び産業機器等のコンピュータを組み込んだ機器である組み込みシステムを実現するための組み込みソフトウェアとして使用されることも多い。しかし、近年では、データ変換プログラムの搭載対象である各種機器のハードウェア性能の向上及び機能要求の高度化とあいまって、当該データ変換プログラムを含む各種の組み込みソフトウェアは飛躍的に規模が大きくなり複雑になってきている。特に、量産品の場合には、製品コストが重要視されるため、メモリ等のリソースの制約が厳しく、限られた記憶容量又はメモリ性能で動作する必要がある。このため、データ変換プログラム、特にそれを組み込みソフトウェアとして使用する場合には、その情報量は小さいほどよい。このような実状から、ＡＥＳ暗号方式を使用してデータを変換するために必要とされるルックアップテーブル等の情報の量のさらなる縮小が望まれていた。
【００１７】
本発明は上記問題点を解決するためになされたものであって、その目的は、ＡＥＳ暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができるデータ変換装置及びデータ変換方法及び通信システムを提供することにある。
【課題を解決するための手段】
【００１８】
請求項１に記載の発明は、４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求めるデータ変換装置であって、ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを次式に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求め、この求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより前記変換後データｄｊを求めることをその要旨とする。
【００１９】
ｈ（ｊ）ｉ＝Ｔｉ[ａｉ，ｊ−ｃｉ]
ただし、Ｔｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブル、ａｉ，ｊは、変換対象データにおけるｉ行ｊ列目（ｉ，ｊ＝０，１，２，３）の８ビットの部分データ、ａｉ，ｊ−ｃｉは、ＳｈｉｆｔＲｏｗｓを施すことによりｉ行ｊ列目へ移動する変換対象データにおける８ビットの部分データ、である。
【００２０】
本発明によれば、４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求めるに際して使用されるルックアップテーブルの情報量は５１２ビットとなる。これは、前述したように、当該ルックアップテーブルは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブルであることから、ＡＥＳ暗号方式によるデータ変換処理を行うに際して、２種類のルックアップテーブルを用意すればよい。ここで、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）で使用されるルックアップテーブルは、いずれも８ビット入力８ビット出力のものである。このため、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のいずれについても、その情報量は「１バイト×２８＝２５６バイト」であり、２つのルックアップテーブルの情報量の合計は５１２バイト（０．５ｋＢ）となる。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量（４０９６Ｂ）との比較からも分かるように、本発明のデータ変換装置において必要とされるテーブルデータの情報量は、従来装置に比べて格段に少ない。したがって、ＡＥＳ暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができる。ひいては、データ変換装置に確保するべきデータ記憶領域を少なくすることができる。
【００２１】
請求項２に記載の発明は、４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求めるデータ変換方法であって、ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを次式に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求め、この求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより前記変換後データｄｊを求めることをその要旨とする。
【００２２】
ｈ（ｊ）ｉ＝Ｔｉ[ａｉ，ｊ−ｃｉ]
ただし、Ｔｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブル、ａｉ，ｊは、変換対象データにおけるｉ行ｊ列目（ｉ，ｊ＝０，１，２，３）の８ビットの部分データ、ａｉ，ｊ−ｃｉは、ＳｈｉｆｔＲｏｗｓを施すことによりｉ行ｊ列目へ移動する変換対象データにおける８ビットの部分データ、である。
【００２３】
本発明によれば、請求項１に記載の発明と同様に、ＡＥＳ暗号方式によるデータ変換処理を行うに際して、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つに対応する２種類のルックアップテーブルを用意すればよい。したがって、ＡＥＳ暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができる。
【００２４】
請求項３に記載の発明は、２つの通信装置間で共通の暗号鍵を持ち合って、少なくとも一方の通信装置から送信される乱数情報を他方の通信装置が自身の暗号鍵を使用して暗号化した暗号化結果を前記一方の通信装置へ返信し、当該一方の通信装置では、自身が送信した前記乱数情報を自身の暗号鍵を使用して暗号化した暗号化結果と他方の通信装置から送られてきた暗号化結果との比較を通じて当該他方の通信装置の認証を行う通信システムにおいて、前記２つの通信装置の双方に請求項１に記載のデータ変換装置が組み込まれてなることをその要旨とする。
【００２５】
本発明によれば、２つの通信装置では暗号化のみが行われる。このため、データ変換プログラムとして、暗号化用のルックアップテーブル等の情報を含む暗号化プログラムのみを用意すればよい。したがって、復号化が必要とされる認証方式を採用した場合と異なり、復号化用のルックアップテーブル等の情報を含む復号化プログラムの情報量の分だけ、２つの通信装置に確保するべきデータ記憶領域を少なくすることができる。
【発明の効果】
【００２６】
本発明によれば、ＡＥＳ暗号方式を使用してデータを変換するために必要とされる情報量を低減することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を車両の電子キーシステムに具体化した一実施の形態を図１〜図５に基づいて説明する。この電子キーシステムは、ユーザにより所持される電子キーと車両との間の無線通信を通じてドアの施解錠及びエンジンの始動を行うものである。
【００２８】
＜電子キーシステムの概要＞
まず電子キーシステムの概要を説明する。図１に示すように、電子キーシステム１１は、ユーザに所持される電子キー１２、及び車両Ｃａｒに搭載される車載機１３を備えてなる。
【００２９】
電子キー１２の制御回路２１には、ＬＦ帯の無線信号を受信するＬＦ受信回路２２、及び当該制御装置からの指令に従いＲＦ帯の無線信号を送信するＲＦ送信回路２３が接続されている。ＬＦ受信回路２２は、受信したＬＦ信号を復調するとともに、その復調後の信号を受信データとして制御回路２１に出力する。また、ＲＦ送信回路２３は、制御回路２１からの指令に従い、電子キーに固有のＩＤコードを乗せたＲＦ帯の応答信号Ｓｒｅｐを送信する。
【００３０】
車載機１３は、電子キー１２との間の相互無線通信を通じて当該電子キー１２の妥当性を判断する照合制御装置３１を備えてなる。この照合制御装置３１には、車室外へＬＦ帯の無線信号を送信する車室外ＬＦ送信機３２、車室内へＬＦ帯の無線信号を送信する車室内ＬＦ送信機３３、及びＲＦ帯の無線信号を受信するＲＦ受信機３４が接続されている。また、照合制御装置３１には、ドア錠を施解錠するべくドアロックモータＭを駆動制御するドア制御装置３５、ユーザによるエンジンスイッチＳＷの操作に応じて車両Ｃａｒの電源位置を切換制御する電源制御装置３６、及びエンジンＥの駆動制御を行うエンジン制御装置３７が、バス（多重通信線）Ｂを介して接続されている。
【００３１】
さて、エンジンＥが停止状態且つドアが施錠状態である車両Ｃａｒの駐車状態において、照合制御装置３１は、電子キー１２に応答を要求する車室外照合用のＬＦ帯の応答要求信号Ｓｒｅｑを所定の制御周期で車室外ＬＦ送信機３２を通じて車室外に送信する。これにより、車両Ｃａｒのドアの周辺には、電子キー１２の図示しない検知領域が形成される。そして、ユーザが電子キー１２を所持して車両Ｃａｒに接近して前記検知領域内に入ると、電子キー１２の制御回路２１は、前記応答要求信号Ｓｒｅｑを受けて自身の記憶装置２１ａに格納された識別コードを含む応答信号Ｓｒｅｐを、ＲＦ送信回路２３を通じて送信する。
【００３２】
照合制御装置３１は、ＲＦ受信機３４を通じて電子キー１２からの応答信号Ｓｒｅｐを受信すると、当該応答信号Ｓｒｅｐに含まれる電子キー１２に固有の識別コードと、自身の記憶装置３１ａに記憶された識別コードとを比較する車室外照合を行う。そして照合制御装置３１は、この車室外照合が成立した場合には、図示しないドアハンドルノブに内蔵されたタッチセンサを起動し、当該センサを通じてユーザによるドアハンドルノブのタッチ操作を検出すると、ドア制御装置３５にドアアンロック要求信号を出力する。ドア制御装置３５は、照合制御装置３１からのドアアンロック要求信号を受けて、ドアロックモータＭを駆動して車両のドアを解錠する。
【００３３】
この後、電子キー１２を所持するユーザが車両に乗り込んだとき、ドア制御装置３５は図示しないドアセンサを通じてこれを検出して当該検出信号を照合制御装置３１へ出力する。ドア制御装置３５からユーザが乗車した旨示す検出信号が入力されると、照合制御装置３１は、車室内ＬＦ送信機３３を通じて車室内照合用の応答要求信号Ｓｒｅｑを送信することにより、車室内に電子キー１２の検知領域を形成する。電子キー１２は、ＬＦ受信回路２２を通じて車室内照合用の応答要求信号Ｓｒｅｑを受信すると、ＲＦ送信回路２３を通じて識別コードを含む応答信号Ｓｒｅｐを送信する。
【００３４】
照合制御装置３１は、ＲＦ受信機３４を通じて電子キー１２からの応答信号Ｓｒｅｐを受信すると、当該応答信号Ｓｒｅｐに含まれる電子キー１２に固有の識別コードと、自身の記憶装置３１ａに記憶された識別コードとを比較する車室内照合を行う。そして照合制御装置３１は、この車室外照合の照合結果を記憶装置３１ａに記憶し、当該照合結果を各種の車載システムの実行機能に応じてこれらシステムの制御装置、例えば電源制御装置３６及びエンジン制御装置３７へ送信する。
【００３５】
すなわち、電源制御装置３６は、シフトレバーが駐車位置に保持されるとともに図示しないブレーキペダルが踏み込まれた状態で、エンジンスイッチＳＷがオン操作された旨検出すると、照合制御装置３１に対して車室内照合の照合結果を確認する。電源制御装置３６は、照合制御装置３１を通じて取得した車室内照合の照合結果が照合成立を示すものであった場合には、図示しないアクセサリリレー及びイグニッションリレーをオン動作させて、車両Ｃａｒの各部に動作電力を供給する。
【００３６】
そして、電源制御装置３６は、エンジンＥの始動を要求する始動要求信号を、バスＢを通じてエンジン制御装置３７へ出力する。エンジン制御装置３７は、電源制御装置３６からの始動要求信号が入力されると、照合制御装置３１に対して車室内照合の照合結果を確認するとともに、互いが対を成す制御装置同士であるか否かの確認（ペアリング）を行う。エンジン制御装置３７は、車室内照合及びペアリングの双方が成立している場合にのみ、エンジンＥを始動させる。
【００３７】
そして、ユーザが降車するべくエンジンスイッチＳＷの操作を通じてエンジンＥを停止した後に、解錠状態のドアを開けて車室外に出て、前記ドアハンドルノブに設けられる図示しないロックスイッチをオン操作した場合には、これが照合制御装置３１により検出される。すると、照合制御装置３１は、車室外ＬＦ送信機３２を通じて車室外照合用の検知領域を再度形成して車室外照合を行い、当該車室外照合が成立したときには、ドアロック要求信号をドア制御装置３５へ出力する。ドア制御装置３５は、照合制御装置３１からのドアロック要求信号が入力されると、ドアロックモータＭを駆動してドアを施錠する。
【００３８】
＜電子キー及び車載機の相互認証＞
ここで、前述した電子キーシステム１１においては、電子キー１２と車載機１３との相互認証が無線通信により行われることから、これら電子キー１２と車載機１３との間で送受信される情報（電子キー１２に固有の識別情報等）が傍受され、この情報を使用して車両Ｃａｒが不正に使用されることが特に懸念される。このため、電子キー１２と車載機１３との間では、これらの間で授受する情報を所定の暗号アルゴリズムにより暗号化して送受信する暗号化通信を利用した認証が行われる。本実施の形態では、認証を実施する装置間、すなわち電子キー１２と車載機との間で互いに共通の暗号鍵を持ち合い、乱数データ（チャレンジコード）を暗号鍵で暗号化した結果を交換することにより認証を行う、いわゆるチャレンジ・レスポンス認証方式が採用されている。
【００３９】
以下に、電子キーシステム１１におけるチャレンジ・レスポンス認証方式の暗号化通信について、図２に示される動作シーケンスに図に従って説明する。なお、ここでは、乗車時等に行われる車室外照合が行われるものとする。また、車載機１３と電子キー１２とは、同じ暗号鍵Ｋを持っている。
【００４０】
さて、車両Ｃａｒの駐車状態にあっては、車載機１３は、応答要求信号Ｓｒｅｑとして、電子キー１２を起動させるＷＡＫＥコードを含む起動信号Ｓｗａｋｅを所定の制御周期で送信する。これにより、車両Ｃａｒのドアの周辺には、電子キー１２の検知領域が形成される。
【００４１】
そして、ユーザが電子キー１２を携帯して前記検知領域に入った際、当該電子キー１２が車両Ｃａｒからの起動信号Ｓｗａｋｅを受信すると、当該電子キー１２は、まず起動信号Ｓｗａｋｅに含まれるＷＡＫＥコードの妥当性、すなわち、当該ＷＡＫＥコードが登録された正規の信号パターンかどうかを判定する。次に、電子キー１２は、前記ＷＡＫＥコードが正規の信号パターンである旨判定したときには、自身の動作が安定するのを待って、正常に認識した旨の応答信号であるＡＣＫ信号Ｓａｃｋを車両側へ返信する。
【００４２】
車載機１３は、電子キー１２からのＡＣＫ信号Ｓａｃｋを受信することにより、電子キー１２が前記検知領域内にあると判断し、登録された自身の車両コードを含む車両識別信号Ｓｃａｒを発信する。
【００４３】
そして、電子キー１２は、車載機１３からの車両識別信号Ｓｃａｒを受信すると、それに含まれる車両コードと自身に登録された車両コードとの照合を行う。そして、その照合が成立した場合には、電子キー１２は、ＲＦ送信回路２３を通じてＡＣＫ信号Ｓａｃｋを車両側へ再び返信する。
【００４４】
＜チャレンジ・レスポンス認証＞
車載機１３は、電子キー１２からのＡＣＫ信号Ｓａｃｋを再度受信すると、電子キー１２との間でチャレンジ・レスポンス認証を行う。
【００４５】
＜Ｓ−１＞
すなわち、車載機１３は、まず乱数を生成し、この乱数を電子キー１２に対するチャレンジコードＲａとする。そして車載機１３は、このチャレンジコードＲａに特定のキーコードを付加した情報を含む認証信号Ｓｃｈａを送信する。ここで、チャレンジコードＲａは、１２８ビットの情報量を有してなる。また、キーコードは、当該車載機１３に予め登録された電子キー１２に固有の情報である。
【００４６】
＜Ｓ−２＞
電子キー１２は、車載機１３からの認証信号Ｓｃｈａを受信すると、これに含まれるキーコードと自身に登録されたキーコードとの照合を行う。電子キー１２は、当該照合が成立した場合には、自身のキーコードが当該車両Ｃａｒに登録されたコードである旨判断する。そして、電子キー１２は、受信した認証信号Ｓｃｈａに含まれるチャレンジコードＲａを自分の持つ暗号鍵Ｋにより暗号化する。この暗号化結果をＥＫ（Ｒａ）と示す。また、電子キー１２は、車載機１３に対するチャレンジコードＲｂとして乱数を生成する。そして電子キー１２は、これら暗号化結果ＥＫ（Ｒａ）及びチャレンジコードＲｂを含む暗号化信号Ｓｃｉｐ−ｋｅｙを車載機１３に送信する。
【００４７】
＜Ｓ−３＞
車載機１３では、自らが生成したチャレンジコードＲａを自分の持つ暗号鍵Ｋで暗号化した結果と受信した暗号化信号Ｓｃｉｐ−ｋｅｙに含まれる暗号化結果ＥＫ（Ｒａ）とを比較し、その値が一致すれば電子キー１２が正常に認証されたと判断する。また、車載機１３は、受信した暗号化信号Ｓｃｉｐ−ｋｅｙに含まれるチャレンジコードＲｂを自分の持つ暗号鍵Ｋにより暗号化し、その暗号化結果を含む暗号化信号Ｓｃｉｐ−ｃａｒを電子キー１２に送信する。なお、チャレンジコードＲｂの暗号化結果をＥＫ（Ｒｂ）と示す。
【００４８】
＜Ｓ−４＞
電子キー１２では、自らが生成したチャレンジコードＲｂを自分の持つ暗号鍵Ｋで暗号化した結果と受信した暗号化信号Ｓｃｉｐ−ｃａｒに含まれる暗号化結果ＥＫ（Ｒｂ）とを比較し、その値が一致すれば車載機１３が正常に認証されたと判断する。
【００４９】
以上で車載機１３と電子キー１２との間のチャレンジ・レスポンス認証は完了となる。ここで、チャレンジ・レスポンス認証においては、認証のたびに異なる乱数を生成してチャレンジコードとされることから、いわゆるリプレイアタックが抑制される。このリプレイアタックとは、前述した暗号鍵Ｋ等を傍受して、そのまま再利用することにより正規のユーザになりすます攻撃をいう。
【００５０】
そして、前述したチャレンジ・レスポンス認証が完了、すなわち前記＜Ｓ−４＞において、電子キー１２が車載機１３を正常に認証した場合には、電子キー１２は、前記応答信号Ｓｒｅｐとして、自身に固有のキーコードを含む識別信号Ｓｉｄを車載機１３に送信する。車載機１３は、電子キー１２からの識別信号Ｓｉｄに含まれるキーコードと自身に登録されたキーコードとの照合を行い、当該照合が成立したことをもって電子キー１２との間の車室外照合が成立した旨判断する。この後、車両のドアが解錠されて、電子キー１２を所持するユーザが乗車した際には、前述した車室外照合と同様にして車載機１３と電子キー１２との相互認証を行うべく車室内照合が行われる。ここでは、車室内照合の手順についての詳細な説明を省略する。
【００５１】
＜ＡＥＳ暗号化処理＞
本実施の形態では、前述したチャレンジ・レスポンス認証方式の暗号化通信における暗号アルゴリズムとして、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式を採用している。
【００５２】
ここで、電子キー１２の記憶装置２１ａには、車載機１３との間の相互無線通信を制御回路２１に実行させるための通信制御プログラム、及びＡＥＳ暗号方式を使用して車載機１３へ送信する情報を暗号化する処理を制御回路２１に実行させるためのデータ変換プログラムが記憶されている。また、当該記憶装置２１ａには、前記データ変換プログラムが実行された際に使用される暗号鍵Ｋ及びルックアップテーブルＴｉが格納されている。
【００５３】
また、車載機１３の記憶装置３１ａには、電子キー１２との間の相互無線通信を照合制御装置３１に実行させるための通信制御プログラム、及びＡＥＳ暗号方式を使用して電子キー１２へ送信する情報を暗号化する処理を制御回路２１に実行させるためのデータ変換プログラムが記憶されている。また、当該記憶装置３１ａには、データ変換プログラムが実行された際に使用される暗号鍵Ｋ及びルックアップテーブルＴｉが記憶されている。なお、両記憶装置２１ａ，３１ａに格納される暗号鍵Ｋ及びルックアップテーブルＴｉは、同じものである。
【００５４】
さて、前述したチャレンジ・レスポンス認証の実行中におけるＡＥＳ暗号方式による暗号化処理について、図３に示すフローチャートに従って詳細に説明する。このフローチャートは、電子キー１２又は車載機１３におけるチャレンジ・レスポンス認証の実行中において、暗号化されていない平文データであるチャレンジコードＲａ，Ｒｂを通信対象へ送信する場合に、電子キー１２及び車載機１３に格納されたデータ変換プログラムに従い実行される。なお、当該暗号化処理は、電子キー１２と車載機１３とで同様の手順で実行されることから、ここでは、電子キー１２を例にとって説明する。電子キー１２では、前述した＜Ｓ−２＞において、車載機１３からのチャレンジコードＲａを暗号化して返信する。
【００５５】
＜ＲｏｕｎｄＫｅｙの生成＞
当該暗号化処理が開始されると、まず電子キー１２は、自身の記憶装置２１ａに格納されている暗号鍵Ｋを使用してＲｏｕｎｄＫｅｙを生成する（ステップＳ１０１）。
【００５６】
すなわち、電子キー１２は、元の暗号鍵Ｋを特定の拡張アルゴリズムに従って拡張し、その拡張した鍵を平文データであるチャレンジコードＲａのデータ長（ここでは、１２８ビット）で順番に区切ることにより、ＡｄｄＲｏｕｎｄＫｅｙの回数分（「ラウンド数Ｎｒ＋１」回分）だけＲｏｕｎｄＫｅｙを生成する（図１０参照。）。そして電子キー１２は、この生成した複数のＲｏｕｎｄＫｅｙを記憶装置２１ａ（正確には、その一時記憶領域）に格納する。このＲｏｕｎｄＫｅｙは、平文データを暗号化する際に行う後述のＡｄｄＲｏｕｎｄＫｅｙで使用される。
【００５７】
＜ＡｄｄＲｏｕｎｄＫｅｙ＞
次に、電子キー１２は、平文データであるチャレンジコードＲａに対して、ＡｄｄＲｏｕｎｄＫｅｙを１回だけ行う（ステップＳ１０２）。
【００５８】
すなわち、電子キー１２は、チャレンジコードＲａと前述したステップＳ１０１で生成されたＲｏｕｎｄＫｅｙとのXOR（排他論理和）をビット単位でとる。
＜ＲｏｕｎｄＦｕｎｃｔｉｏｎ＞
次に、電子キー１２は、ＲｏｕｎｄＦｕｎｃｔｉｏｎ（ステップＳ１０３）を行う。ここで、ＲｏｕｎｄＦｕｎｃｔｉｏｎは、背景技術で説明したように、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓ及びＡｄｄＲｏｕｎｄＫｅｙの各変換を順に施す処理である。しかし、本実施の形態では、これら変換をそれぞれ行うのではなく、次のようにして行う。すなわち、４行４列の正方行列で表される１２８ビットの処理対象データであるチャレンジコードＲａにＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことにより得られる変換後データｄｉ，ｊを前述したルックアップテーブルＴｉを使用して求める。そして、この求められた変換後データｄｉ，ｊにＡｄｄＲｏｕｎｄＫｅｙを行うことにより、従来のＲｏｕｎｄＦｕｎｃｔｉｏｎを行うことにより得られる変換後データｅｉ，ｊを求める。このステップＳ１０３で実行されるＲｏｕｎｄＦｕｎｃｔｉｏｎについては、後に詳述する。
【００５９】
＜ＦｉｎａｌＲｏｕｎｄＦｕｎｃｔｉｏｎ＞
次に、電子キー１２は、ステップＳ１０３Ｓの処理を「Ｎｒ−１」回だけ行ったか否かを判定する（ステップＳ１０４）。
【００６０】
ここで、Ｎｒは、前述したように、予め定められたラウンド数である。そして電子キー１２は、このステップＳ１０４において、ステップＳ１０３の処理を「Ｎｒ−１」回だけ行っていないと判定した場合（ステップＳ１０４でＮＯ）には、ステップＳ１０３へ処理を移行する。
【００６１】
一方、電子キー１２は、ステップＳ１０４で、ステップＳ１０３の処理を「Ｎｒ−１」回だけ行ったと判定した場合（ステップＳ１０４でＹＥＳ）には、ＦｉｎａｌＲｏｕｎｄＦｕｎｃｔｉｏｎを行う。すなわち、電子キー１２は、ステップＳ１０５へ処理を移行してＳｕｂＢｙｔｅｓを行い、次にステップＳ１０６へ処理を移行してＳｈｉｆｔＲｏｗｓを行い、さらにステップＳ１０７へ処理を移行してＡｄｄＲｏｕｎｄＫｅｙを行い、当該ＡＥＳ暗号化処理を終了する。
【００６２】
＜ＲｏｕｎｄＦｕｎｃｔｉｏｎの詳細＞
次に、図３に示されるフローチャートにおいて、ステップＳ１０３へ処理が移行したときに電子キー１２の制御回路２１により実行されるＲｏｕｎｄＦｕｎｃｔｉｏｎについて、図４に示すフローチャートに従って詳細に説明する。
【００６３】
＜第１の処理＞
さて、ＲｏｕｎｄＦｕｎｃｔｉｏｎが開始されると、電子キー１２は、まずＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データ（チャレンジコードＲａ）の８ビットの部分データａｉ，ｊ−ｃｉを次式（Ａ）に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求める（ステップＳ２０１）。この中間データｈ（ｊ）ｉは、変換前のデータである前述の部分データａｉ，ｊ−ｃｉのｉ行目（ｉ＝０，１，２，３）から生成されるデータであって、かつ後述する変換後データｄｉ，ｊのｊ列目（ｄｊ）の生成に寄与する３２ビットのデータである。なお、この中間データを示す符号「ｈ（ｊ）ｉ」の上付きの添え字「（ｊ）」は、中間データｈ（ｊ）ｉが、変換後データｄｉ，ｊのｊ列目（ｄｊ）に寄与するものである旨を明確にするべく、説明の便宜上、付加したものである。
【００６４】
ｈ（ｊ）ｉ＝Ｔｉ[ａｉ，ｊ−ｃｉ]              …式（Ａ）
ただし、
Ｔｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブル、
ａｉ，ｊは、変換対象データにおけるｉ行ｊ列目（ｉ，ｊ＝０，１，２，３）の８ビットの部分データ、
ａｉ，ｊ−ｃｉは、ＳｈｉｆｔＲｏｗｓを施すことによりｉ行ｊ列目へ移動する変換対象データにおける８ビットの部分データ、である。
【００６５】
すなわち、前記式（Ａ）では、処理対象データから処理後データへの変換を３２ビット単位で行う。具体的には、図５に示すように、電子キー１２は、処理対象データであるチャレンジコードＲａを構成する８ビットの部分データａｉ，ｊの中から、ＳｈｉｆｔＲｏｗｓの変換を施すことにより同列に移動する４つの部分データａ０，ｊ，ａ１，ｊ−Ｃ１，ａ２，ｊ−Ｃ２，ａ３，ｊ−Ｃ３を選択する。なお、図５では、ＳｈｉｆｔＲｏｗｓの変換を施すことにより１列目に移動する４つの部分データａ０，０，ａ１，１，ａ２，２，ａ３，３が選択されている。そしてこの選択した４つの８ビットの部分データａ０，ｊ，ａ１，ｊ−Ｃ１，ａ２，ｊ−Ｃ２，ａ３，ｊ−Ｃ３を、記憶装置２１ａに格納されているルックアップテーブルＴｉ（ｉ＝０，１，２，３）を使用して４つの３２ビットの中間データｈ（ｊ）ｉ（ｉ＝０，１，２，３）に変換する。ここで、ルックアップテーブルＴｉ（ｉ＝０，１，２，３）は、前記選択した４つの部分データに対応する８ビット入力３２ビット出力の４つのルックアップテーブルＴ０，Ｔ１，Ｔ２，Ｔ３からなる。そして、前記選択した４つの部分データａ０，ｊ，ａ１，ｊ−Ｃ１，ａ２，ｊ−Ｃ２，ａ３，ｊ−Ｃ３を、これらに対応する各ルックアップテーブルＴ０，Ｔ１，Ｔ２，Ｔ３により変換した後の３２ビットの中間データｈ（ｊ）ｉ（ｉ＝０，１，２，３）において、８ビットの４つの部分データｈ（ｊ）ｉ，ｋ（ｋ＝０，１，２，３）は、３種類のＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）を使用して表すことができる。
【００６６】
さらにＳｕｂＢｙｔｅｓ変換においては、次式（Ｂ）で示される関係がある。
３ｓ（ｘ）＝２ｓ（ｘ）  XOR  ｓ（ｘ）          …式（Ｂ）
ここで、XORは排他的論理和を示す。
【００６７】
したがって、部分データａ０，ｊをこれに対応するルックアップテーブルＴ０により変換した後の中間データｈ（ｊ）０における４つの部分データｈ（ｊ）０，ｋ（ｋ＝０，１，２，３）は次のように表すことができる。
【００６８】
ｈ（ｊ）０，０＝２ｓ（ａ０，ｊ）
ｈ（ｊ）０，１＝  ｓ（ａ０，ｊ）
ｈ（ｊ）０，２＝  ｓ（ａ０，ｊ）
ｈ（ｊ）０，３＝３ｓ（ａ０，ｊ）＝２ｓ（ａ０，ｊ）  XOR  ｓ（ａ０，ｊ）
部分データａ１，ｊ−Ｃ１をこれに対応するルックアップテーブルＴ１により変換した後の中間データｈ（ｊ）１における４つの部分データｈ（ｊ）１，ｋ（ｋ＝０，１，２，３）は次のように表すことができる。
【００６９】
ｈ（ｊ）１，０＝３ｓ（ａ１，ｊ−ｃ１）＝２ｓ（ａ１，ｊ−ｃ１）  XOR  ｓ（ａ１，ｊ−ｃ１）
ｈ（ｊ）１，１＝２ｓ（ａ１，ｊ−ｃ１）
ｈ（ｊ）１，２＝  ｓ（ａ１，ｊ−ｃ１）
ｈ（ｊ）１，３＝  ｓ（ａ１，ｊ−ｃ１）
部分データａ２，ｊ−Ｃ２をこれに対応するルックアップテーブルＴ２により変換した後の中間データｈ（ｊ）２における４つの部分データｈ（ｊ）２，ｋ（ｋ＝０，１，２，３）は次のように表すことができる。
【００７０】
ｈ（ｊ）２，０＝  ｓ（ａ２，ｊ−ｃ２）
ｈ（ｊ）２，１＝３ｓ（ａ２，ｊ−ｃ２）＝２ｓ（ａ２，ｊ−ｃ２）  XOR  ｓ（ａ２，ｊ−ｃ２）
ｈ（ｊ）２，２＝２ｓ（ａ２，ｊ−ｃ２）
ｈ（ｊ）２，３＝  ｓ（ａ２，ｊ−ｃ２）
部分データａ３，ｊ−Ｃ３をこれに対応するルックアップテーブルＴ３により変換した後の中間データｈ（ｊ）３における４つの部分データｈ（ｊ）３，ｋ（ｋ＝０，１，２，３）は次のように表すことができる。
【００７１】
ｈ（ｊ）３，０＝  ｓ（ａ３，ｊ−Ｃ３）
ｈ（ｊ）３，１＝  ｓ（ａ３，ｊ−Ｃ３）
ｈ（ｊ）３，２＝３ｓ（ａ３，ｊ−Ｃ３）＝２ｓ（ａ３，ｊ−Ｃ３）  XOR  ｓ（ａ３，ｊ−Ｃ３）
ｈ（ｊ）３，３＝  ２（ａ３，ｊ−Ｃ３）
このように、中間データｈ（ｊ）ｉ（ｉ＝０，１，２，３）は、２種類のＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ）を使用することにより求められる。すなわち、前述のルックアップテーブルＴｉ（ｉ＝０，１，２，３）による変換は、前述した各演算式に基づき行われる２種類のＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ）を行うことと同義である。
【００７２】
なお、ＳｕｂＢｙｔｅｓ変換には、前記式（Ｂ）で示した以外にも、次式（Ｃ），（Ｄ）に示される関係がある。
２ｓ（ｘ）＝ｓ（ｘ）  XOR  ３ｓ（ｘ）          …式（Ｃ）
ｓ（ｘ）＝２ｓ（ｘ）  XOR  ３ｓ（ｘ）          …式（Ｄ）
したがって、中間データｈ（ｊ）ｉ（ｉ＝０，１，２，３）は、ＳｕｂＢｙｔｅｓ変換ｓ（ｘ），３ｓ（ｘ）、又はＳｕｂＢｙｔｅｓ変換２ｓ（ｘ），３ｓ（ｘ）を使用して求めることも可能である。すなわち、中間データｈ（ｊ）ｉ（ｉ＝０，１，２，３）は、ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つを使用して求めることができる。
【００７３】
＜第２の処理＞
そして次に、電子キー１２は、前述のようにして求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより変換後データｄｊを求める（ステップＳ２０２）。
【００７４】
ここで、変換後データｄｊは、ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉに、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことにより得られる変換後データｄｉ，ｊにおけるｊ列目の３２ビットのデータである。
【００７５】
すなわち、このステップＳ２０２の処理は次のように表すことができる。
（ｄｊ＝ｈ（ｊ）０    XOR  ｈ（ｊ）１    XOR  ｈ（ｊ）２    XOR  ｈ（ｊ）３）
ｄ０，ｊ＝ｈ（ｊ）０，０  XOR  ｈ（ｊ）１，０  XOR  ｈ（ｊ）２，０  XOR  ｈ（ｊ）３，０
ｄ１，ｊ＝ｈ（ｊ）０，１  XOR  ｈ（ｊ）１，１  XOR  ｈ（ｊ）２，１  XOR  ｈ（ｊ）３，１
ｄ２，ｊ＝ｈ（ｊ）０，２  XOR  ｈ（ｊ）１，２  XOR  ｈ（ｊ）２，２  XOR  ｈ（ｊ）３，２
ｄ３，ｊ＝ｈ（ｊ）０，３  XOR  ｈ（ｊ）１，３  XOR  ｈ（ｊ）２，３  XOR  ｈ（ｊ）３，３
そして前述したように、中間データｈ（ｊ）ｉの４つの部分データｈ（ｊ）ｉ、ｋ（ｋ＝０，１，２，３）は、ＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ）で表せることから、このステップＳ２０２の処理はさらに次のように表すことができる。
【００７６】
ｄ０，ｊ＝２ｓ（ａ０，ｊ）  XOR  ｛２ｓ（ａ１，ｊ−ｃ１）  XOR  ｓ（ａ１，ｊ−ｃ１）｝  XOR  ｓ（ａ２，ｊ−Ｃ２）  XOR  ｓ（ａ３，ｊ−Ｃ３）
ｄ１，ｊ＝ｓ（ａ０，ｊ）  XOR  ２ｓ（ａ１，ｊ−ｃ１）  XOR  ｛２ｓ（ａ２，ｊ−Ｃ２）  XOR  ｓ（ａ２，ｊ−Ｃ２）｝  XOR  ｓ（ａ３，ｊ−Ｃ３）
ｄ２，ｊ＝ｓ（ａ０，ｊ）  XOR  ｓ（ａ１，ｊ−ｃ１）  XOR  ２ｓ（ａ２，ｊ−Ｃ２）  XOR  ｛２ｓ（ａ３，ｊ−Ｃ３）  XOR  ｓ（ａ３，ｊ−Ｃ３）｝
ｄ３，ｊ＝｛２ｓ（ａ０，ｊ）  XOR  ｓ（ａ０，ｊ）｝  XOR  ｓ（ａ１，ｊ−ｃ１）  XOR  ｓ（ａ２，ｊ−Ｃ２）  XOR  ２（ａ３，ｊ−Ｃ３）
このように、ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉに、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことにより得られる変換後データｄｊを求めるためには、ＳｕｂＢｙｔｅｓ変換ｓ（ｘ）及び２ｓ（ｘ）に対応する２つのルックアップテーブルだけを用意すればよい。
【００７７】
そして、これらルックアップテーブルは、変換対象データの８ビットの部分データを、これとは異なる８ビットのデータに変換するものである。このため、各ルックアップテーブルの情報量は「１バイト×２８＝２５６バイト」であり、２つのルックアップテーブルを合わせても５１２バイト（０．５ｋＢ）である。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量（４ｋＢ）と比較してみても、本実施の形態で必要とされるテーブルデータ（ルックアップテーブルＴｉ）の情報量は格段に少ない。
【００７８】
本実施の形態では、ルックアップテーブルＴｉによる変換処理として、前述のような２つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ）及び２ｓ（ｘ）で表される各種の演算式に基づく演算により、部分データａｉ，ｊ−ｃｉに、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことにより得られる変換後データｄｊを一括して求めることができる。
【００７９】
なお、ｓ（ｘ），２ｓ（ｘ），３（ｘ）間には、前述した式（Ｃ），（Ｄ）で示される関係があることから、使用するルックアップテーブルは、ｓ（ｘ），２ｓ（ｘ）に対応する２種類だけに限られず、ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つを選択して使用することも可能である。
【００８０】
＜第３の処理＞
次に、電子キー１２は、次式（Ｅ）で示されるように、ステップＳ２０２により得られた変換後データｄｊにＡｄｄＲｏｕｎｄＫｅｙを行うことにより従来のＲｏｕｎｄＦｕｎｃｔｉｏｎを行うことにより得られる変換後データｅｉ，ｊにおける同列の４つの部分データからなる３２ビットのデータｅjに変換する。
【００８１】
ｄｊ  XOR  Ｋｊ＝ｅｊ                    …式（Ｅ）
以上で、１回のＲｏｕｎｄＦｕｎｃｔｉｏｎは完了となる。
＜実施の形態の効果＞
従って、本実施の形態によれば、以下の効果を得ることができる。
【００８２】
（１）ＡＥＳ暗号方式により変換対象データを変換するに際して、４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊにおいて、ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを前記式（Ａ）に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求めるようにした。そして、この求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより、４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｉを一括して求めるようにした。
【００８３】
そして、前述したように、ルックアップテーブルＴｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブルであることから、ＡＥＳ暗号方式により変換対象データの変換を行うに際して、２種類のルックアップテーブルを用意すればよい。ここで、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）で使用されるルックアップテーブルは、いずれも８ビット入力８ビット出力のものである。このため、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のいずれも、その情報量は「１バイト×２８＝２５６バイト」であり、２つのルックアップテーブルの情報量の合計は５１２バイト（０．５ｋＢ）となる。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量（４ｋＢ）との比較からも分かるように、本実施の形態のデータ変換装置において必要とされるテーブルデータ（ルックアップテーブルＴｉ）の情報量は、従来装置に比べて格段に少ない。
【００８４】
（２）また、このように、ＡＥＳ暗号方式を使用してデータを変換するために必要とされるルックアップテーブルの情報量の縮小化が図られることから、組み込みソフトウェアとしての使用にも好適である。すなわち、前述したように、近年では、組み込みソフトウェアにおいては、ハードウェア性能の向上及び機能要求の高度化とあいまって、飛躍的に規模が大きくなり複雑になってきている。こうした傾向は、電子化の傾向が著しい自動車等の車両にあっても顕著である。データ変換に必要とされるルックアップテーブルの情報量が０．５ｋＢ程度である本実施の形態によれば、こうした実情に好適に対応することができる。
【００８５】
（３）電子キー１２と車載機１３との間の認証方式として、チャレンジ・レスポンス認証方式を採用した。このため、電子キー１２及び車載機１３では、暗号化のみが行われる。このため、データ変換プログラムとして、暗号化プログラム（ルックアップテーブル等の情報を含む。）のみ用意すればよい。したがって、復号化が必要とされる認証方式を採用した場合と異なり、復号化プログラムの情報量の分だけ、記憶装置２１ａ，３１ａに確保するべき記憶容量を少なくすることができる。
【００８６】
＜他の実施の形態＞
なお、本実施の形態は、次のように変更して実施してもよい。
・本実施の形態では、電子キー１２と車載機１３との間の認証方式としてチャレンジ・レスポンス認証方式を採用し、電子キー１２と車載機１３との間で相互に認証するようにしたが、いずれか一方が他方の認証を行うのみとしてもよい。電子キー１２と車載機１３との間で共通の暗号鍵を持ち合うことは、前述した本実施の形態と同様である。そして例えば車載機１３側で電子キー１２を認証するようにした場合、車載機１３は電子キー１２の認証を行うに際して、まずその都度変化する乱数情報であるチャレンジコードを電子キー１２へ送信する。電子キー１２では、車載機１３から送られてきたチャレンジコードを自身の暗号鍵で暗号化し、その暗号化結果を車載機１３へ返信する。車載機１３は、自身の暗号鍵で元のチャレンジコードを暗号化し、その暗号化結果と電子キー１２から送信されてきた暗号化結果とを比較する。車載機１３は自身が演算した暗号化結果と電子キー１２からの暗号化結果とが一致した旨判定したときには認証成立、すなわち当該電子キー１２を正当な通信相手である旨判断する。なお、電子キー１２側で車載機１３を認証するようにした場合も前述と同様にして認証が行われる。このようにした場合であれ、電子キー１２及び車載機１３では、暗号化のみが行われるだけであることから、データ変換プログラムとして、復号化プログラムは用意する必要はなく、暗号化プログラムのみ用意すればよい。
【００８７】
・本実施の形態では、電子キー１２と車載機１３との間の認証方式として、チャレンジ・レスポンス認証方式を採用したが、他の認証方式を採用することも可能である。
・本実施の形態では、電子キー１２と車載機１３との間の暗号化通信について説明したが、車載される各種の電子制御装置間の暗号化通信にも適用可能である。この場合には、各電子制御装置にデータ変換プログラムを格納することにより、各電子制御装置はデータ変換装置としても機能する。このように、有線通信及び無線通信を問わず、暗号化通信が行われる通信機器全般について本発明を適用することができる。
【００８８】
・本実施の形態では、車両用の電子キーシステムを構成する電子キー１２及び車載機１３をＡＥＳ暗号方式によるデータ変換装置として機能させるようにしたが、携帯電話、家電機器及び産業機器等のコンピュータを組み込んだ機器であれば、前述のデータ変換機能（データ変換プログラム）を適宜組み込むことができる。
【００８９】
・本実施の形態では、電子キー１２と車載機１３との相互無線通信を通じて特定の車両機能を作動制御する電子キーシステム１１に本発明を具体化したが、例えば特定の情報を暗号化して特定の通信対象へ一方的に送信する単方向通信を行う通信システムに具体化することも可能である。例えば、電子キーに設けられる施解錠釦の操作を通じて施解錠要求信号を車両Ｃａｒに送信することによりドアを施解錠する、いわゆる電波キーシステムに本発明を具体化することもできる。この場合には、情報を暗号化して送信する側の電子機器である電子キーのみに前述のデータ変換機能を持たせればよい。このように、双方向通信及び単方向通信のいずれを行う場合であれ、本発明を適用することができる。
【００９０】
・本実施の形態では、暗号化処理のみを行うチャレンジ・レスポンス認証方式の暗号化処理に係る暗号アルゴリズムとして、ＡＥＳ暗号方式を採用した例について説明したが、復号化処理を必要とする認証方式に適用することも可能である。復号化処理は、暗号化処理と逆の処理が実行されることで成立する。この際には、復号化用のルックアップテーブルを用意する。
【００９１】
・本実施の形態では、前記式（Ａ）に示されるルックアップテーブルＴｉ、すなわち３つのＳｕｂＢｙｔｅｓ変換を示すｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つに対応するルックアップテーブルを記憶装置２１ａ，３１ａに記憶させておくようにしが、次のようにすることも可能である。すなわち、ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つに対応するルックアップテーブルは、変換対象データの変換処理中において生成する。このようにすれば、ルックアップテーブルＴｉを記憶装置２１ａ，３１ａに予め格納する必要がない。このため、ＡＥＳ暗号方式を使用したデータの暗号化を、より小さなデータ記憶容量で実現することができる。またこの場合には、ルックアップテーブルＴｉ、すなわち２種類のＳｕｂＢｙｔｅｓ変換に対応するルックアップテーブルを生成するだけでよいので、データ変換の処理速度への影響も少ない。
【００９２】
・前述したＡＥＳ暗号方式を使用して所定の情報を暗号化する処理をコンピュータに実行させるためのデータ変換プログラムは、コンピュータ読み取り可能な記録媒体に格納して流通させるようにしてもよい。この記録媒体としては、携帯可能とされた不揮発性半導体メモリ（例えば、フラッシュメモリ）、フレキシブルディスク、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）、光磁気ディスク（例えば、ＭＯ、ＭＤ）等、種々のものが採用可能である。
【００９３】
＜他の技術的思想＞
次に、前記実施の形態より把握できる技術的思想について以下に記載する。
（イ）４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求める処理をコンピュータに実行させるためのデータ変換プログラムであって、
ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを次式に基づき変換することにより３２ビットの中間データｈ（ｊ）ｉを求め、この求められた中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより前記変換後データｄｊを求める処理をコンピュータに実行させるためのデータ変換プログラム。
【００９４】
ｈ（ｊ）ｉ＝Ｔｉ[ａｉ，ｊ−ｃｉ]
ただし、Ｔｉは、３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つで表される８ビット入力３２ビット出力のルックアップテーブル、ａｉ，ｊは、変換対象データにおけるｉ行ｊ列目（ｉ，ｊ＝０，１，２，３）の８ビットの部分データ、ａｉ，ｊ−ｃｉは、ＳｈｉｆｔＲｏｗｓを施すことによりｉ行ｊ列目へ移動する変換対象データにおける８ビットの部分データ、である。
【００９５】
この（イ）項に記載の技術的思想は、４行４列の行列で表される１２８ビットの変換対象データに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを、請求項２に記載のデータ変換方法を使用して求める機能をコンピュータに実現させるためのものである。このようなデータ変換プログラムを、ＡＥＳ暗号方式の暗号化を行うために使用すれば、ＡＥＳ暗号方式を用いてデータを暗号化するデータ変換装置に確保するべきデータ記憶容量を小さくすることができる。
【００９６】
（ロ）前記（イ）項に記載のデータ変換プログラムが記録されたコンピュータ読み取り可能な記録媒体。
このように、前記（イ）項のデータ変換プログラムは、コンピュータ読み取り可能な記録媒体に記録することも可能である。
【００９７】
（ハ）４行４列の行列で表される１２８ビットの変換対象データａｉ，ｊに、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの各変換を順に施すことで得られる変換後データｄｊを一括して求めるデータ変換装置であって、
ＳｈｉｆｔＲｏｗｓを施すことにより同列となる変換対象データの８ビットの部分データａｉ，ｊ−ｃｉを、これらに対応し且つ３つのＳｕｂＢｙｔｅｓ変換ｓ（ｘ），２ｓ（ｘ），３ｓ（ｘ）のうちいずれか２つにより表されるルックアップテーブルＴｉを使用して３２ビットの中間データｈ（ｊ）ｉに変換し、当該中間データｈ（ｊ）ｉの排他的論理和をビット単位でとることにより、前記変換後データｄｊを求めるデータ変換装置。
【００９８】
この技術的思想によれば、請求項１に記載の発明と同様の作用効果を得ることができる。
（ニ）互いに共通の暗号鍵を持ち合って、無線通信を通じて交換される通信相手側の乱数情報を自身の暗号鍵で暗号化した結果を交換することにより相互認証を行う２つの通信装置を備えてなる通信システムにおいて、これら２つの通信装置の双方に請求項１に記載のデータ変換装置が組み込まれてなる通信システム。この構成によれば、請求項３と同様の作用効果を得ることができる。
【図面の簡単な説明】
【００９９】
【図１】本実施の形態の電子キーシステムの概略構成を示すブロック図。
【図２】同じく電子キーと車載機との相互認証手順を示す動作シーケンス図。
【図３】同じくＡＥＳ暗号化処理の手順を示すフローチャート。
【図４】同じくＲｏｕｎｄＦｕｎｃｔｉｏｎの処理手順を示すフローチャート。
【図５】同じくＲｏｕｎｄＦｕｎｃｔｉｏｎの処理手順を示す模式図。
【図６】ＡＥＳ暗号方式で使用されるブロックデータの概略構成図。
【図７】ＡＥＳ暗号方式に使用される鍵（共通鍵）の概略構成図。
【図８】ＡＥＳ暗号方式による暗号化手順を示すフローチャート。
【図９】（ａ）は、ＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ変換の説明図、（ｂ）は、同じくＳｈｉｆｔＲｏｗｓ変換の説明図、（ｃ）は、同じくＭｉｘＣｏｌｕｍｎｓ変換の説明図、（ｄ）は、同じくＡｄｄＲｏｕｎｄＫｅｙ変換の説明図。
【図１０】ＡＥＳ暗号方式で使用されるＲｏｕｎｄＫｅｙの生成方法の説明図。
【図１１】（ａ）は、従来のＡＥＳ暗号方式における暗号化の手順を示す模式図、（ｂ）は、同じくＡＥＳ暗号方式におけるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓを順に施すことで得られる変換後データの概略構成図。
【符号の説明】
【０１００】
１１…電子キーシステム（通信システム）、１２…電子キー（通信装置）、１３…車載機（通信装置）、２１…制御回路（データ変換装置）、３１…照合制御装置（データ変換装置）。
【図１】
2009276458.tif 000003
【図２】
2009276458.tif 000004
【図３】
2009276458.tif 000005
【図４】
2009276458.tif 000006
【図５】
2009276458.tif 000007
【図６】
2009276458.tif 000008
【図７】
2009276458.tif 000009
【図８】
2009276458.tif 000010
【図９】
2009276458.tif 000011
【図１０】
2009276458.tif 000012
【図１１】
2009276458.tif 000013