データ変換装置及びデータ変換方法及び通信システム
【課題】AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができるデータ変換装置及びデータ変換方法及び通信システムを提供する。
【解決手段】ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを、これらに対応し且つ3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つにより表されるルックアップテーブルTiを使用して32ビットの中間データh(j)iに変換する。当該中間データh(j)iの排他的論理和をビット単位でとることにより、変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を施すことで得られる変換後データdjを一括して求める。
【解決手段】ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを、これらに対応し且つ3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つにより表されるルックアップテーブルTiを使用して32ビットの中間データh(j)iに変換する。当該中間データh(j)iの排他的論理和をビット単位でとることにより、変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を施すことで得られる変換後データdjを一括して求める。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、AES暗号化方式を使用してデータを暗号化するデータ変換装置及びデータ変換方法及び通信システムに関するものである。
【背景技術】
【0002】
従来、データを暗号化するための様々な暗号方式が知られている。近年では、米国連邦標準技術局(NIST)により、AES(Advanced Encryption Standard)と呼ばれる共通暗号方式が規格化され普及しつつある。この暗号方式は、コンピュータ間のデータ通信等、各種の技術分野で採用されつつある。
【0003】
<AES概要>
ここでまず、AES暗号方式の概要を説明する。図6に示すように、AES暗号方式は、ブロック長が128ビットのブロック暗号である。この128ビットのブロックデータは、1バイト(8ビット)単位のデータ(以下、「部分データ」という。)に分割され、4×4、すなわち4行4列の正方行列として表現される。なお、図6では、ブロックデータにおけるi行目(i=0,1,2,3)のj列目(j=0,1,2,3)の部分データを、ai,jと表す。また、図7に示すように、AES暗号方式の暗号化処理に際して使用される鍵(共通鍵)の鍵長は128ビット、192ビット、256ビットの3種類である。この鍵も、1バイト単位のデータに分割され、4×Nk(Nk=4,6,8)の長方形行列として表現される。
【0004】
そして、AES暗号方式では、次のような手順でブロックデータを暗号化する。すなわち、図8に示すように、まず、AddRoundKey(ラウンドキー加算)を1回行う。次に、SubBytes(バイト置換)、ShiftRows(行シフト)、MixColumns(列ミックス)及び前記AddRoundKeyの4種類の変換を順に行うRoundFunction(ラウンド変換)を複数のラウンド、正確には(Nr−1)回にわたって繰り返す。ここで、Nrは、定められたラウンド数である。そして最後に、RoundFunctionの中からMixColumnsだけを除いたFinalRoundFunction(最終ラウンド変換)を1回だけ行う。なお、図8の右上に示されるように、ラウンド数Nrは、鍵長Nkに対応して決められている。鍵長Nkが128,196,256ビット、すなわちNk=4,6,8のとき、ラウンド数Nr=10,12,14となる。
【0005】
<各変換の説明>
次に、AES暗号方式を使用してデータを暗号化するための前述した4種類の変換について、それぞれ説明する。
【0006】
<SubBytes>
図9(a)に示すように、SubBytesは、ブロックデータの各単位である各部分データを、1バイト入出力のルックアップテーブル(S−BOX)を使用して1対1に変換する処理である。すなわち、1バイトのデータである各部分データは1バイトの別のデータに変換される。8ビット256語のルックアップテーブルの内容は、入力値のガロア体GF(28)上の逆数をとり、その結果にビット間の排他的論理和によるアフィン変換を施した結果を予め計算しておいたものである。
BM609347BM609347 <ShiftRows>
図9(b)に示すように、ShiftRowsでは、4×4行列の各行のデータをバイト単位で特定回数だけ循環左シフトする。すなわち、鍵長が128ビット又は192ビットの場合には、0行目はシフトなし、1行目は左に1つシフト、2行目は左に2つシフト、3行目は左に3つシフトする。このように、ShiftRowsでは、各行に対応する引数Ci(i=1,2,3)を使用して、ブロックデータを行単位(32ビット単位)で変換する。
【0007】
<MixColumns>
MixColumnsでは、前述したShiftRowsによる変換後のブロックデータにおける各列に対して、多項式「C(x)=3x3+x2+x+2」を掛け算する。すなわち、図9(c)に示すように、MixColumnsでは、前述の多項式C(x)を使用して、ShiftRowsによる変換後のブロックデータを列単位で変換する。
【0008】
<AddRoundKey>
AddRoundKeyでは、図9(d)に示すように、ブロックデータと図7に示される元の鍵から生成されるRoundKeyとのXOR(排他論理和)をビット単位でとる。すなわち、AddRoundKeyでは、RoundKeyを使用して、ブロックデータを1ビット単位で変換する。具体的には、MixColumnsによる変換後のデータdi,j(0≦i≦3、0≦j≦3)と、ラウンドキーKi,jとのXORをとり、結果としてei,jを得る。これは、次式で示される。
【0009】
di,j XOR ki,j=ei,j
ここで、RoundKeyは次のようにして生成される。すなわち、図10に示すように、元の鍵を特定の拡張アルゴリズムに従って拡張し、その拡張した鍵をブロックデータのブロック長(128ビット)で順番に区切ることにより、図8に示されるブロックデータの暗号化手順に含まれるAddRoundKeyの回数分(「ラウンド数Nr+1」回分)だけRoundKeyを生成する。こうして生成した複数のRoundKeyは、データの暗号化のために複数回行われるAddRoundKeyで順に使用される。なお、FinalRoundFunctionでのAddRoundKeyでは、同じくFinalRoundFunctionでのShiftRowsによる変換後のデータが入力データとされる。
【0010】
ところで、このようなデータの暗号化処理では、処理速度を向上させるための手法として、ルックアップテーブルを使用することが考えられる。しかし、AES暗号化方式では、128ビットのブロックデータ毎に変換が行われるため、これを1つのルックアップテーブルを使用して変換しようとすると、「2128×16バイト」といった膨大な大きさのルックアップテーブルが必要となることから、これは現実的ではない。すなわち、データを暗号化するデータ変換装置において非常に大きなデータ記憶容量を確保する必要がある。そこで、当該データ記憶容量を縮小するべく、例えば特許文献1に示されるようなデータ変換装置が従来提案されている。
【0011】
同文献1のデータ変換装置は、次のようにしてデータを暗号化する。すなわち、前述したように、RoundFunctionは、入力されるブロックデータに対して、SubBytes、ShiftRows、MixColumns及びAddRoundKeyの各変換を順に施す処理である。しかし、同文献1では、各変換をそれぞれ行うのではなく、4行4列の行列で表される128ビットの変換対象データに対してRoundFunctionを行うことで得られる変換後データを、8ビット入力32ビット出力の4つのルックアップテーブル及びXOR演算のみを使用して求める。
【0012】
具体的には、図11(a)に示すように、まず変換対象データを構成する部分データ(8ビット)の中から、ShiftRowsの変換を施すことにより同列に移動する4つの部分データ(a0,j、a1,j−c1、a2,j−c2、a3,j−c3)を選択する。例えばShiftRowsの変換を施すことにより1列目に移動する4つの部分データは、図11(a)に太線の枠で示されるように、「a0,0、a1,1、a2,2、a3,3」である。
【0013】
そして同図11(a)に示されるように、この選択した4つの部分データからなる32ビットのブロックデータを、各部分データに対応するルックアップテーブルT0〜T3を使用してそれぞれ変換後データにおける同列の4つの部分データからなる32ビットのデータに変換し、これら変換後の4つのデータの排他論理和をとる。これにより、変換対象データに対して、SubBytes、ShiftRows及びMixColumnsを順に施すことで得られる図11(b)に示される変換後データが得られる。例えば前述したShiftRowsの変換を施すことにより1列目に移動する4つの部分データ「a0,0、a1,1、a2,2、a3,3」は、4つの部分データ「d0,0、d1,0、d2,0、d3,0」からなる32ビットのデータに変換される。
【0014】
さらに、図11(a)に示されるように、このように求めたデータに、AddRoundKeyによる変換を施すことにより、変換対象データに対してRoundFunctionを行うことで得られる変換後データejが求められる。例えば1列目となる4つの部分データ「d0,0、d1,0、d2,0、d3,0」からなる32ビットのデータは、「e0,0、e1,0、e2,0、e3,0」となる。なお、変換対象データにShiftRowsの変換を施すことにより2列目、3列目及び4列目に移動する4つの部分データからなる32ビットのブロックデータについても、前述と同様にして変換される。
【0015】
このように、8ビット入力32ビット出力の4つのルックアップテーブルT0〜T3を使用して暗号化を行うことにより、データ変換装置におけるデータ記憶容量の縮小化が図られる。すなわち、特許文献1の各ルックアップテーブルT0〜T3は、処理対象データの部分データ(8ビット)を32ビットのデータに変換するものである。このため、各ルックアップテーブルT0〜T3の情報量は、それぞれ「4バイト×28=1024バイト」であることから、4つのルックアップテーブルT0〜T3の情報量の合計は4096バイトとなる。この値は、前述した1つのルックアップテーブルを使用してデータの変換を行うようにした場合に必要とされる情報量(2128×16バイト)に比べて小さい。
【特許文献1】特開2003−195749号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
前述したようなデータ変換処理は、所定のデータ変換プログラムに従って実行されるところ、当該プログラムは、携帯電話、家電機器、自動車及び産業機器等のコンピュータを組み込んだ機器である組み込みシステムを実現するための組み込みソフトウェアとして使用されることも多い。しかし、近年では、データ変換プログラムの搭載対象である各種機器のハードウェア性能の向上及び機能要求の高度化とあいまって、当該データ変換プログラムを含む各種の組み込みソフトウェアは飛躍的に規模が大きくなり複雑になってきている。特に、量産品の場合には、製品コストが重要視されるため、メモリ等のリソースの制約が厳しく、限られた記憶容量又はメモリ性能で動作する必要がある。このため、データ変換プログラム、特にそれを組み込みソフトウェアとして使用する場合には、その情報量は小さいほどよい。このような実状から、AES暗号方式を使用してデータを変換するために必要とされるルックアップテーブル等の情報の量のさらなる縮小が望まれていた。
【0017】
本発明は上記問題点を解決するためになされたものであって、その目的は、AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができるデータ変換装置及びデータ変換方法及び通信システムを提供することにある。
【課題を解決するための手段】
【0018】
請求項1に記載の発明は、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換装置であって、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めることをその要旨とする。
【0019】
h(j)i=Ti[ai,j−ci]
ただし、Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0020】
本発明によれば、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるに際して使用されるルックアップテーブルの情報量は512ビットとなる。これは、前述したように、当該ルックアップテーブルは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブルであることから、AES暗号方式によるデータ変換処理を行うに際して、2種類のルックアップテーブルを用意すればよい。ここで、3つのSubBytes変換s(x),2s(x),3s(x)で使用されるルックアップテーブルは、いずれも8ビット入力8ビット出力のものである。このため、3つのSubBytes変換s(x),2s(x),3s(x)のいずれについても、その情報量は「1バイト×28=256バイト」であり、2つのルックアップテーブルの情報量の合計は512バイト(0.5kB)となる。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量(4096B)との比較からも分かるように、本発明のデータ変換装置において必要とされるテーブルデータの情報量は、従来装置に比べて格段に少ない。したがって、AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができる。ひいては、データ変換装置に確保するべきデータ記憶領域を少なくすることができる。
【0021】
請求項2に記載の発明は、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換方法であって、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めることをその要旨とする。
【0022】
h(j)i=Ti[ai,j−ci]
ただし、Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0023】
本発明によれば、請求項1に記載の発明と同様に、AES暗号方式によるデータ変換処理を行うに際して、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つに対応する2種類のルックアップテーブルを用意すればよい。したがって、AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができる。
【0024】
請求項3に記載の発明は、2つの通信装置間で共通の暗号鍵を持ち合って、少なくとも一方の通信装置から送信される乱数情報を他方の通信装置が自身の暗号鍵を使用して暗号化した暗号化結果を前記一方の通信装置へ返信し、当該一方の通信装置では、自身が送信した前記乱数情報を自身の暗号鍵を使用して暗号化した暗号化結果と他方の通信装置から送られてきた暗号化結果との比較を通じて当該他方の通信装置の認証を行う通信システムにおいて、前記2つの通信装置の双方に請求項1に記載のデータ変換装置が組み込まれてなることをその要旨とする。
【0025】
本発明によれば、2つの通信装置では暗号化のみが行われる。このため、データ変換プログラムとして、暗号化用のルックアップテーブル等の情報を含む暗号化プログラムのみを用意すればよい。したがって、復号化が必要とされる認証方式を採用した場合と異なり、復号化用のルックアップテーブル等の情報を含む復号化プログラムの情報量の分だけ、2つの通信装置に確保するべきデータ記憶領域を少なくすることができる。
【発明の効果】
【0026】
本発明によれば、AES暗号方式を使用してデータを変換するために必要とされる情報量を低減することができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明を車両の電子キーシステムに具体化した一実施の形態を図1〜図5に基づいて説明する。この電子キーシステムは、ユーザにより所持される電子キーと車両との間の無線通信を通じてドアの施解錠及びエンジンの始動を行うものである。
【0028】
<電子キーシステムの概要>
まず電子キーシステムの概要を説明する。図1に示すように、電子キーシステム11は、ユーザに所持される電子キー12、及び車両Carに搭載される車載機13を備えてなる。
【0029】
電子キー12の制御回路21には、LF帯の無線信号を受信するLF受信回路22、及び当該制御装置からの指令に従いRF帯の無線信号を送信するRF送信回路23が接続されている。LF受信回路22は、受信したLF信号を復調するとともに、その復調後の信号を受信データとして制御回路21に出力する。また、RF送信回路23は、制御回路21からの指令に従い、電子キーに固有のIDコードを乗せたRF帯の応答信号Srepを送信する。
【0030】
車載機13は、電子キー12との間の相互無線通信を通じて当該電子キー12の妥当性を判断する照合制御装置31を備えてなる。この照合制御装置31には、車室外へLF帯の無線信号を送信する車室外LF送信機32、車室内へLF帯の無線信号を送信する車室内LF送信機33、及びRF帯の無線信号を受信するRF受信機34が接続されている。また、照合制御装置31には、ドア錠を施解錠するべくドアロックモータMを駆動制御するドア制御装置35、ユーザによるエンジンスイッチSWの操作に応じて車両Carの電源位置を切換制御する電源制御装置36、及びエンジンEの駆動制御を行うエンジン制御装置37が、バス(多重通信線)Bを介して接続されている。
【0031】
さて、エンジンEが停止状態且つドアが施錠状態である車両Carの駐車状態において、照合制御装置31は、電子キー12に応答を要求する車室外照合用のLF帯の応答要求信号Sreqを所定の制御周期で車室外LF送信機32を通じて車室外に送信する。これにより、車両Carのドアの周辺には、電子キー12の図示しない検知領域が形成される。そして、ユーザが電子キー12を所持して車両Carに接近して前記検知領域内に入ると、電子キー12の制御回路21は、前記応答要求信号Sreqを受けて自身の記憶装置21aに格納された識別コードを含む応答信号Srepを、RF送信回路23を通じて送信する。
【0032】
照合制御装置31は、RF受信機34を通じて電子キー12からの応答信号Srepを受信すると、当該応答信号Srepに含まれる電子キー12に固有の識別コードと、自身の記憶装置31aに記憶された識別コードとを比較する車室外照合を行う。そして照合制御装置31は、この車室外照合が成立した場合には、図示しないドアハンドルノブに内蔵されたタッチセンサを起動し、当該センサを通じてユーザによるドアハンドルノブのタッチ操作を検出すると、ドア制御装置35にドアアンロック要求信号を出力する。ドア制御装置35は、照合制御装置31からのドアアンロック要求信号を受けて、ドアロックモータMを駆動して車両のドアを解錠する。
【0033】
この後、電子キー12を所持するユーザが車両に乗り込んだとき、ドア制御装置35は図示しないドアセンサを通じてこれを検出して当該検出信号を照合制御装置31へ出力する。ドア制御装置35からユーザが乗車した旨示す検出信号が入力されると、照合制御装置31は、車室内LF送信機33を通じて車室内照合用の応答要求信号Sreqを送信することにより、車室内に電子キー12の検知領域を形成する。電子キー12は、LF受信回路22を通じて車室内照合用の応答要求信号Sreqを受信すると、RF送信回路23を通じて識別コードを含む応答信号Srepを送信する。
【0034】
照合制御装置31は、RF受信機34を通じて電子キー12からの応答信号Srepを受信すると、当該応答信号Srepに含まれる電子キー12に固有の識別コードと、自身の記憶装置31aに記憶された識別コードとを比較する車室内照合を行う。そして照合制御装置31は、この車室外照合の照合結果を記憶装置31aに記憶し、当該照合結果を各種の車載システムの実行機能に応じてこれらシステムの制御装置、例えば電源制御装置36及びエンジン制御装置37へ送信する。
【0035】
すなわち、電源制御装置36は、シフトレバーが駐車位置に保持されるとともに図示しないブレーキペダルが踏み込まれた状態で、エンジンスイッチSWがオン操作された旨検出すると、照合制御装置31に対して車室内照合の照合結果を確認する。電源制御装置36は、照合制御装置31を通じて取得した車室内照合の照合結果が照合成立を示すものであった場合には、図示しないアクセサリリレー及びイグニッションリレーをオン動作させて、車両Carの各部に動作電力を供給する。
【0036】
そして、電源制御装置36は、エンジンEの始動を要求する始動要求信号を、バスBを通じてエンジン制御装置37へ出力する。エンジン制御装置37は、電源制御装置36からの始動要求信号が入力されると、照合制御装置31に対して車室内照合の照合結果を確認するとともに、互いが対を成す制御装置同士であるか否かの確認(ペアリング)を行う。エンジン制御装置37は、車室内照合及びペアリングの双方が成立している場合にのみ、エンジンEを始動させる。
【0037】
そして、ユーザが降車するべくエンジンスイッチSWの操作を通じてエンジンEを停止した後に、解錠状態のドアを開けて車室外に出て、前記ドアハンドルノブに設けられる図示しないロックスイッチをオン操作した場合には、これが照合制御装置31により検出される。すると、照合制御装置31は、車室外LF送信機32を通じて車室外照合用の検知領域を再度形成して車室外照合を行い、当該車室外照合が成立したときには、ドアロック要求信号をドア制御装置35へ出力する。ドア制御装置35は、照合制御装置31からのドアロック要求信号が入力されると、ドアロックモータMを駆動してドアを施錠する。
【0038】
<電子キー及び車載機の相互認証>
ここで、前述した電子キーシステム11においては、電子キー12と車載機13との相互認証が無線通信により行われることから、これら電子キー12と車載機13との間で送受信される情報(電子キー12に固有の識別情報等)が傍受され、この情報を使用して車両Carが不正に使用されることが特に懸念される。このため、電子キー12と車載機13との間では、これらの間で授受する情報を所定の暗号アルゴリズムにより暗号化して送受信する暗号化通信を利用した認証が行われる。本実施の形態では、認証を実施する装置間、すなわち電子キー12と車載機との間で互いに共通の暗号鍵を持ち合い、乱数データ(チャレンジコード)を暗号鍵で暗号化した結果を交換することにより認証を行う、いわゆるチャレンジ・レスポンス認証方式が採用されている。
【0039】
以下に、電子キーシステム11におけるチャレンジ・レスポンス認証方式の暗号化通信について、図2に示される動作シーケンスに図に従って説明する。なお、ここでは、乗車時等に行われる車室外照合が行われるものとする。また、車載機13と電子キー12とは、同じ暗号鍵Kを持っている。
【0040】
さて、車両Carの駐車状態にあっては、車載機13は、応答要求信号Sreqとして、電子キー12を起動させるWAKEコードを含む起動信号Swakeを所定の制御周期で送信する。これにより、車両Carのドアの周辺には、電子キー12の検知領域が形成される。
【0041】
そして、ユーザが電子キー12を携帯して前記検知領域に入った際、当該電子キー12が車両Carからの起動信号Swakeを受信すると、当該電子キー12は、まず起動信号Swakeに含まれるWAKEコードの妥当性、すなわち、当該WAKEコードが登録された正規の信号パターンかどうかを判定する。次に、電子キー12は、前記WAKEコードが正規の信号パターンである旨判定したときには、自身の動作が安定するのを待って、正常に認識した旨の応答信号であるACK信号Sackを車両側へ返信する。
【0042】
車載機13は、電子キー12からのACK信号Sackを受信することにより、電子キー12が前記検知領域内にあると判断し、登録された自身の車両コードを含む車両識別信号Scarを発信する。
【0043】
そして、電子キー12は、車載機13からの車両識別信号Scarを受信すると、それに含まれる車両コードと自身に登録された車両コードとの照合を行う。そして、その照合が成立した場合には、電子キー12は、RF送信回路23を通じてACK信号Sackを車両側へ再び返信する。
【0044】
<チャレンジ・レスポンス認証>
車載機13は、電子キー12からのACK信号Sackを再度受信すると、電子キー12との間でチャレンジ・レスポンス認証を行う。
【0045】
<S−1>
すなわち、車載機13は、まず乱数を生成し、この乱数を電子キー12に対するチャレンジコードRaとする。そして車載機13は、このチャレンジコードRaに特定のキーコードを付加した情報を含む認証信号Schaを送信する。ここで、チャレンジコードRaは、128ビットの情報量を有してなる。また、キーコードは、当該車載機13に予め登録された電子キー12に固有の情報である。
【0046】
<S−2>
電子キー12は、車載機13からの認証信号Schaを受信すると、これに含まれるキーコードと自身に登録されたキーコードとの照合を行う。電子キー12は、当該照合が成立した場合には、自身のキーコードが当該車両Carに登録されたコードである旨判断する。そして、電子キー12は、受信した認証信号Schaに含まれるチャレンジコードRaを自分の持つ暗号鍵Kにより暗号化する。この暗号化結果をEK(Ra)と示す。また、電子キー12は、車載機13に対するチャレンジコードRbとして乱数を生成する。そして電子キー12は、これら暗号化結果EK(Ra)及びチャレンジコードRbを含む暗号化信号Scip−keyを車載機13に送信する。
【0047】
<S−3>
車載機13では、自らが生成したチャレンジコードRaを自分の持つ暗号鍵Kで暗号化した結果と受信した暗号化信号Scip−keyに含まれる暗号化結果EK(Ra)とを比較し、その値が一致すれば電子キー12が正常に認証されたと判断する。また、車載機13は、受信した暗号化信号Scip−keyに含まれるチャレンジコードRbを自分の持つ暗号鍵Kにより暗号化し、その暗号化結果を含む暗号化信号Scip−carを電子キー12に送信する。なお、チャレンジコードRbの暗号化結果をEK(Rb)と示す。
【0048】
<S−4>
電子キー12では、自らが生成したチャレンジコードRbを自分の持つ暗号鍵Kで暗号化した結果と受信した暗号化信号Scip−carに含まれる暗号化結果EK(Rb)とを比較し、その値が一致すれば車載機13が正常に認証されたと判断する。
【0049】
以上で車載機13と電子キー12との間のチャレンジ・レスポンス認証は完了となる。ここで、チャレンジ・レスポンス認証においては、認証のたびに異なる乱数を生成してチャレンジコードとされることから、いわゆるリプレイアタックが抑制される。このリプレイアタックとは、前述した暗号鍵K等を傍受して、そのまま再利用することにより正規のユーザになりすます攻撃をいう。
【0050】
そして、前述したチャレンジ・レスポンス認証が完了、すなわち前記<S−4>において、電子キー12が車載機13を正常に認証した場合には、電子キー12は、前記応答信号Srepとして、自身に固有のキーコードを含む識別信号Sidを車載機13に送信する。車載機13は、電子キー12からの識別信号Sidに含まれるキーコードと自身に登録されたキーコードとの照合を行い、当該照合が成立したことをもって電子キー12との間の車室外照合が成立した旨判断する。この後、車両のドアが解錠されて、電子キー12を所持するユーザが乗車した際には、前述した車室外照合と同様にして車載機13と電子キー12との相互認証を行うべく車室内照合が行われる。ここでは、車室内照合の手順についての詳細な説明を省略する。
【0051】
<AES暗号化処理>
本実施の形態では、前述したチャレンジ・レスポンス認証方式の暗号化通信における暗号アルゴリズムとして、AES(Advanced Encryption Standard)暗号方式を採用している。
【0052】
ここで、電子キー12の記憶装置21aには、車載機13との間の相互無線通信を制御回路21に実行させるための通信制御プログラム、及びAES暗号方式を使用して車載機13へ送信する情報を暗号化する処理を制御回路21に実行させるためのデータ変換プログラムが記憶されている。また、当該記憶装置21aには、前記データ変換プログラムが実行された際に使用される暗号鍵K及びルックアップテーブルTiが格納されている。
【0053】
また、車載機13の記憶装置31aには、電子キー12との間の相互無線通信を照合制御装置31に実行させるための通信制御プログラム、及びAES暗号方式を使用して電子キー12へ送信する情報を暗号化する処理を制御回路21に実行させるためのデータ変換プログラムが記憶されている。また、当該記憶装置31aには、データ変換プログラムが実行された際に使用される暗号鍵K及びルックアップテーブルTiが記憶されている。なお、両記憶装置21a,31aに格納される暗号鍵K及びルックアップテーブルTiは、同じものである。
【0054】
さて、前述したチャレンジ・レスポンス認証の実行中におけるAES暗号方式による暗号化処理について、図3に示すフローチャートに従って詳細に説明する。このフローチャートは、電子キー12又は車載機13におけるチャレンジ・レスポンス認証の実行中において、暗号化されていない平文データであるチャレンジコードRa,Rbを通信対象へ送信する場合に、電子キー12及び車載機13に格納されたデータ変換プログラムに従い実行される。なお、当該暗号化処理は、電子キー12と車載機13とで同様の手順で実行されることから、ここでは、電子キー12を例にとって説明する。電子キー12では、前述した<S−2>において、車載機13からのチャレンジコードRaを暗号化して返信する。
【0055】
<RoundKeyの生成>
当該暗号化処理が開始されると、まず電子キー12は、自身の記憶装置21aに格納されている暗号鍵Kを使用してRoundKeyを生成する(ステップS101)。
【0056】
すなわち、電子キー12は、元の暗号鍵Kを特定の拡張アルゴリズムに従って拡張し、その拡張した鍵を平文データであるチャレンジコードRaのデータ長(ここでは、128ビット)で順番に区切ることにより、AddRoundKeyの回数分(「ラウンド数Nr+1」回分)だけRoundKeyを生成する(図10参照。)。そして電子キー12は、この生成した複数のRoundKeyを記憶装置21a(正確には、その一時記憶領域)に格納する。このRoundKeyは、平文データを暗号化する際に行う後述のAddRoundKeyで使用される。
【0057】
<AddRoundKey>
次に、電子キー12は、平文データであるチャレンジコードRaに対して、AddRoundKeyを1回だけ行う(ステップS102)。
【0058】
すなわち、電子キー12は、チャレンジコードRaと前述したステップS101で生成されたRoundKeyとのXOR(排他論理和)をビット単位でとる。
<RoundFunction>
次に、電子キー12は、RoundFunction(ステップS103)を行う。ここで、RoundFunctionは、背景技術で説明したように、SubBytes、ShiftRows、MixColumns及びAddRoundKeyの各変換を順に施す処理である。しかし、本実施の形態では、これら変換をそれぞれ行うのではなく、次のようにして行う。すなわち、4行4列の正方行列で表される128ビットの処理対象データであるチャレンジコードRaにSubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdi,jを前述したルックアップテーブルTiを使用して求める。そして、この求められた変換後データdi,jにAddRoundKeyを行うことにより、従来のRoundFunctionを行うことにより得られる変換後データei,jを求める。このステップS103で実行されるRoundFunctionについては、後に詳述する。
【0059】
<FinalRoundFunction>
次に、電子キー12は、ステップS103Sの処理を「Nr−1」回だけ行ったか否かを判定する(ステップS104)。
【0060】
ここで、Nrは、前述したように、予め定められたラウンド数である。そして電子キー12は、このステップS104において、ステップS103の処理を「Nr−1」回だけ行っていないと判定した場合(ステップS104でNO)には、ステップS103へ処理を移行する。
【0061】
一方、電子キー12は、ステップS104で、ステップS103の処理を「Nr−1」回だけ行ったと判定した場合(ステップS104でYES)には、FinalRoundFunctionを行う。すなわち、電子キー12は、ステップS105へ処理を移行してSubBytesを行い、次にステップS106へ処理を移行してShiftRowsを行い、さらにステップS107へ処理を移行してAddRoundKeyを行い、当該AES暗号化処理を終了する。
【0062】
<RoundFunctionの詳細>
次に、図3に示されるフローチャートにおいて、ステップS103へ処理が移行したときに電子キー12の制御回路21により実行されるRoundFunctionについて、図4に示すフローチャートに従って詳細に説明する。
【0063】
<第1の処理>
さて、RoundFunctionが開始されると、電子キー12は、まずShiftRowsを施すことにより同列となる変換対象データ(チャレンジコードRa)の8ビットの部分データai,j−ciを次式(A)に基づき変換することにより32ビットの中間データh(j)iを求める(ステップS201)。この中間データh(j)iは、変換前のデータである前述の部分データai,j−ciのi行目(i=0,1,2,3)から生成されるデータであって、かつ後述する変換後データdi,jのj列目(dj)の生成に寄与する32ビットのデータである。なお、この中間データを示す符号「h(j)i」の上付きの添え字「(j)」は、中間データh(j)iが、変換後データdi,jのj列目(dj)に寄与するものである旨を明確にするべく、説明の便宜上、付加したものである。
【0064】
h(j)i=Ti[ai,j−ci] …式(A)
ただし、
Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、
ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、
ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0065】
すなわち、前記式(A)では、処理対象データから処理後データへの変換を32ビット単位で行う。具体的には、図5に示すように、電子キー12は、処理対象データであるチャレンジコードRaを構成する8ビットの部分データai,jの中から、ShiftRowsの変換を施すことにより同列に移動する4つの部分データa0,j,a1,j−C1,a2,j−C2,a3,j−C3を選択する。なお、図5では、ShiftRowsの変換を施すことにより1列目に移動する4つの部分データa0,0,a1,1,a2,2,a3,3が選択されている。そしてこの選択した4つの8ビットの部分データa0,j,a1,j−C1,a2,j−C2,a3,j−C3を、記憶装置21aに格納されているルックアップテーブルTi(i=0,1,2,3)を使用して4つの32ビットの中間データh(j)i(i=0,1,2,3)に変換する。ここで、ルックアップテーブルTi(i=0,1,2,3)は、前記選択した4つの部分データに対応する8ビット入力32ビット出力の4つのルックアップテーブルT0,T1,T2,T3からなる。そして、前記選択した4つの部分データa0,j,a1,j−C1,a2,j−C2,a3,j−C3を、これらに対応する各ルックアップテーブルT0,T1,T2,T3により変換した後の32ビットの中間データh(j)i(i=0,1,2,3)において、8ビットの4つの部分データh(j)i,k(k=0,1,2,3)は、3種類のSubBytes変換s(x),2s(x),3s(x)を使用して表すことができる。
【0066】
さらにSubBytes変換においては、次式(B)で示される関係がある。
3s(x)=2s(x) XOR s(x) …式(B)
ここで、XORは排他的論理和を示す。
【0067】
したがって、部分データa0,jをこれに対応するルックアップテーブルT0により変換した後の中間データh(j)0における4つの部分データh(j)0,k(k=0,1,2,3)は次のように表すことができる。
【0068】
h(j)0,0=2s(a0,j)
h(j)0,1= s(a0,j)
h(j)0,2= s(a0,j)
h(j)0,3=3s(a0,j)=2s(a0,j) XOR s(a0,j)
部分データa1,j−C1をこれに対応するルックアップテーブルT1により変換した後の中間データh(j)1における4つの部分データh(j)1,k(k=0,1,2,3)は次のように表すことができる。
【0069】
h(j)1,0=3s(a1,j−c1)=2s(a1,j−c1) XOR s(a1,j−c1)
h(j)1,1=2s(a1,j−c1)
h(j)1,2= s(a1,j−c1)
h(j)1,3= s(a1,j−c1)
部分データa2,j−C2をこれに対応するルックアップテーブルT2により変換した後の中間データh(j)2における4つの部分データh(j)2,k(k=0,1,2,3)は次のように表すことができる。
【0070】
h(j)2,0= s(a2,j−c2)
h(j)2,1=3s(a2,j−c2)=2s(a2,j−c2) XOR s(a2,j−c2)
h(j)2,2=2s(a2,j−c2)
h(j)2,3= s(a2,j−c2)
部分データa3,j−C3をこれに対応するルックアップテーブルT3により変換した後の中間データh(j)3における4つの部分データh(j)3,k(k=0,1,2,3)は次のように表すことができる。
【0071】
h(j)3,0= s(a3,j−C3)
h(j)3,1= s(a3,j−C3)
h(j)3,2=3s(a3,j−C3)=2s(a3,j−C3) XOR s(a3,j−C3)
h(j)3,3= 2(a3,j−C3)
このように、中間データh(j)i(i=0,1,2,3)は、2種類のSubBytes変換s(x),2s(x)を使用することにより求められる。すなわち、前述のルックアップテーブルTi(i=0,1,2,3)による変換は、前述した各演算式に基づき行われる2種類のSubBytes変換s(x),2s(x)を行うことと同義である。
【0072】
なお、SubBytes変換には、前記式(B)で示した以外にも、次式(C),(D)に示される関係がある。
2s(x)=s(x) XOR 3s(x) …式(C)
s(x)=2s(x) XOR 3s(x) …式(D)
したがって、中間データh(j)i(i=0,1,2,3)は、SubBytes変換s(x),3s(x)、又はSubBytes変換2s(x),3s(x)を使用して求めることも可能である。すなわち、中間データh(j)i(i=0,1,2,3)は、s(x),2s(x),3s(x)のうちいずれか2つを使用して求めることができる。
【0073】
<第2の処理>
そして次に、電子キー12は、前述のようにして求められた中間データh(j)iの排他的論理和をビット単位でとることにより変換後データdjを求める(ステップS202)。
【0074】
ここで、変換後データdjは、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciに、SubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdi,jにおけるj列目の32ビットのデータである。
【0075】
すなわち、このステップS202の処理は次のように表すことができる。
(dj=h(j)0 XOR h(j)1 XOR h(j)2 XOR h(j)3)
d0,j=h(j)0,0 XOR h(j)1,0 XOR h(j)2,0 XOR h(j)3,0
d1,j=h(j)0,1 XOR h(j)1,1 XOR h(j)2,1 XOR h(j)3,1
d2,j=h(j)0,2 XOR h(j)1,2 XOR h(j)2,2 XOR h(j)3,2
d3,j=h(j)0,3 XOR h(j)1,3 XOR h(j)2,3 XOR h(j)3,3
そして前述したように、中間データh(j)iの4つの部分データh(j)i、k(k=0,1,2,3)は、SubBytes変換s(x),2s(x)で表せることから、このステップS202の処理はさらに次のように表すことができる。
【0076】
d0,j=2s(a0,j) XOR {2s(a1,j−c1) XOR s(a1,j−c1)} XOR s(a2,j−C2) XOR s(a3,j−C3)
d1,j=s(a0,j) XOR 2s(a1,j−c1) XOR {2s(a2,j−C2) XOR s(a2,j−C2)} XOR s(a3,j−C3)
d2,j=s(a0,j) XOR s(a1,j−c1) XOR 2s(a2,j−C2) XOR {2s(a3,j−C3) XOR s(a3,j−C3)}
d3,j={2s(a0,j) XOR s(a0,j)} XOR s(a1,j−c1) XOR s(a2,j−C2) XOR 2(a3,j−C3)
このように、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciに、SubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdjを求めるためには、SubBytes変換s(x)及び2s(x)に対応する2つのルックアップテーブルだけを用意すればよい。
【0077】
そして、これらルックアップテーブルは、変換対象データの8ビットの部分データを、これとは異なる8ビットのデータに変換するものである。このため、各ルックアップテーブルの情報量は「1バイト×28=256バイト」であり、2つのルックアップテーブルを合わせても512バイト(0.5kB)である。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量(4kB)と比較してみても、本実施の形態で必要とされるテーブルデータ(ルックアップテーブルTi)の情報量は格段に少ない。
【0078】
本実施の形態では、ルックアップテーブルTiによる変換処理として、前述のような2つのSubBytes変換s(x)及び2s(x)で表される各種の演算式に基づく演算により、部分データai,j−ciに、SubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdjを一括して求めることができる。
【0079】
なお、s(x),2s(x),3(x)間には、前述した式(C),(D)で示される関係があることから、使用するルックアップテーブルは、s(x),2s(x)に対応する2種類だけに限られず、s(x),2s(x),3s(x)のうちいずれか2つを選択して使用することも可能である。
【0080】
<第3の処理>
次に、電子キー12は、次式(E)で示されるように、ステップS202により得られた変換後データdjにAddRoundKeyを行うことにより従来のRoundFunctionを行うことにより得られる変換後データei,jにおける同列の4つの部分データからなる32ビットのデータejに変換する。
【0081】
dj XOR Kj=ej …式(E)
以上で、1回のRoundFunctionは完了となる。
<実施の形態の効果>
従って、本実施の形態によれば、以下の効果を得ることができる。
【0082】
(1)AES暗号方式により変換対象データを変換するに際して、4行4列の行列で表される128ビットの変換対象データai,jにおいて、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを前記式(A)に基づき変換することにより32ビットの中間データh(j)iを求めるようにした。そして、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdiを一括して求めるようにした。
【0083】
そして、前述したように、ルックアップテーブルTiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブルであることから、AES暗号方式により変換対象データの変換を行うに際して、2種類のルックアップテーブルを用意すればよい。ここで、3つのSubBytes変換s(x),2s(x),3s(x)で使用されるルックアップテーブルは、いずれも8ビット入力8ビット出力のものである。このため、3つのSubBytes変換s(x),2s(x),3s(x)のいずれも、その情報量は「1バイト×28=256バイト」であり、2つのルックアップテーブルの情報量の合計は512バイト(0.5kB)となる。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量(4kB)との比較からも分かるように、本実施の形態のデータ変換装置において必要とされるテーブルデータ(ルックアップテーブルTi)の情報量は、従来装置に比べて格段に少ない。
【0084】
(2)また、このように、AES暗号方式を使用してデータを変換するために必要とされるルックアップテーブルの情報量の縮小化が図られることから、組み込みソフトウェアとしての使用にも好適である。すなわち、前述したように、近年では、組み込みソフトウェアにおいては、ハードウェア性能の向上及び機能要求の高度化とあいまって、飛躍的に規模が大きくなり複雑になってきている。こうした傾向は、電子化の傾向が著しい自動車等の車両にあっても顕著である。データ変換に必要とされるルックアップテーブルの情報量が0.5kB程度である本実施の形態によれば、こうした実情に好適に対応することができる。
【0085】
(3)電子キー12と車載機13との間の認証方式として、チャレンジ・レスポンス認証方式を採用した。このため、電子キー12及び車載機13では、暗号化のみが行われる。このため、データ変換プログラムとして、暗号化プログラム(ルックアップテーブル等の情報を含む。)のみ用意すればよい。したがって、復号化が必要とされる認証方式を採用した場合と異なり、復号化プログラムの情報量の分だけ、記憶装置21a,31aに確保するべき記憶容量を少なくすることができる。
【0086】
<他の実施の形態>
なお、本実施の形態は、次のように変更して実施してもよい。
・本実施の形態では、電子キー12と車載機13との間の認証方式としてチャレンジ・レスポンス認証方式を採用し、電子キー12と車載機13との間で相互に認証するようにしたが、いずれか一方が他方の認証を行うのみとしてもよい。電子キー12と車載機13との間で共通の暗号鍵を持ち合うことは、前述した本実施の形態と同様である。そして例えば車載機13側で電子キー12を認証するようにした場合、車載機13は電子キー12の認証を行うに際して、まずその都度変化する乱数情報であるチャレンジコードを電子キー12へ送信する。電子キー12では、車載機13から送られてきたチャレンジコードを自身の暗号鍵で暗号化し、その暗号化結果を車載機13へ返信する。車載機13は、自身の暗号鍵で元のチャレンジコードを暗号化し、その暗号化結果と電子キー12から送信されてきた暗号化結果とを比較する。車載機13は自身が演算した暗号化結果と電子キー12からの暗号化結果とが一致した旨判定したときには認証成立、すなわち当該電子キー12を正当な通信相手である旨判断する。なお、電子キー12側で車載機13を認証するようにした場合も前述と同様にして認証が行われる。このようにした場合であれ、電子キー12及び車載機13では、暗号化のみが行われるだけであることから、データ変換プログラムとして、復号化プログラムは用意する必要はなく、暗号化プログラムのみ用意すればよい。
【0087】
・本実施の形態では、電子キー12と車載機13との間の認証方式として、チャレンジ・レスポンス認証方式を採用したが、他の認証方式を採用することも可能である。
・本実施の形態では、電子キー12と車載機13との間の暗号化通信について説明したが、車載される各種の電子制御装置間の暗号化通信にも適用可能である。この場合には、各電子制御装置にデータ変換プログラムを格納することにより、各電子制御装置はデータ変換装置としても機能する。このように、有線通信及び無線通信を問わず、暗号化通信が行われる通信機器全般について本発明を適用することができる。
【0088】
・本実施の形態では、車両用の電子キーシステムを構成する電子キー12及び車載機13をAES暗号方式によるデータ変換装置として機能させるようにしたが、携帯電話、家電機器及び産業機器等のコンピュータを組み込んだ機器であれば、前述のデータ変換機能(データ変換プログラム)を適宜組み込むことができる。
【0089】
・本実施の形態では、電子キー12と車載機13との相互無線通信を通じて特定の車両機能を作動制御する電子キーシステム11に本発明を具体化したが、例えば特定の情報を暗号化して特定の通信対象へ一方的に送信する単方向通信を行う通信システムに具体化することも可能である。例えば、電子キーに設けられる施解錠釦の操作を通じて施解錠要求信号を車両Carに送信することによりドアを施解錠する、いわゆる電波キーシステムに本発明を具体化することもできる。この場合には、情報を暗号化して送信する側の電子機器である電子キーのみに前述のデータ変換機能を持たせればよい。このように、双方向通信及び単方向通信のいずれを行う場合であれ、本発明を適用することができる。
【0090】
・本実施の形態では、暗号化処理のみを行うチャレンジ・レスポンス認証方式の暗号化処理に係る暗号アルゴリズムとして、AES暗号方式を採用した例について説明したが、復号化処理を必要とする認証方式に適用することも可能である。復号化処理は、暗号化処理と逆の処理が実行されることで成立する。この際には、復号化用のルックアップテーブルを用意する。
【0091】
・本実施の形態では、前記式(A)に示されるルックアップテーブルTi、すなわち3つのSubBytes変換を示すs(x),2s(x),3s(x)のうちいずれか2つに対応するルックアップテーブルを記憶装置21a,31aに記憶させておくようにしが、次のようにすることも可能である。すなわち、s(x),2s(x),3s(x)のうちいずれか2つに対応するルックアップテーブルは、変換対象データの変換処理中において生成する。このようにすれば、ルックアップテーブルTiを記憶装置21a,31aに予め格納する必要がない。このため、AES暗号方式を使用したデータの暗号化を、より小さなデータ記憶容量で実現することができる。またこの場合には、ルックアップテーブルTi、すなわち2種類のSubBytes変換に対応するルックアップテーブルを生成するだけでよいので、データ変換の処理速度への影響も少ない。
【0092】
・前述したAES暗号方式を使用して所定の情報を暗号化する処理をコンピュータに実行させるためのデータ変換プログラムは、コンピュータ読み取り可能な記録媒体に格納して流通させるようにしてもよい。この記録媒体としては、携帯可能とされた不揮発性半導体メモリ(例えば、フラッシュメモリ)、フレキシブルディスク、光ディスク(例えば、CD−ROM、DVD−ROM)、光磁気ディスク(例えば、MO、MD)等、種々のものが採用可能である。
【0093】
<他の技術的思想>
次に、前記実施の形態より把握できる技術的思想について以下に記載する。
(イ)4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求める処理をコンピュータに実行させるためのデータ変換プログラムであって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求める処理をコンピュータに実行させるためのデータ変換プログラム。
【0094】
h(j)i=Ti[ai,j−ci]
ただし、Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0095】
この(イ)項に記載の技術的思想は、4行4列の行列で表される128ビットの変換対象データに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを、請求項2に記載のデータ変換方法を使用して求める機能をコンピュータに実現させるためのものである。このようなデータ変換プログラムを、AES暗号方式の暗号化を行うために使用すれば、AES暗号方式を用いてデータを暗号化するデータ変換装置に確保するべきデータ記憶容量を小さくすることができる。
【0096】
(ロ)前記(イ)項に記載のデータ変換プログラムが記録されたコンピュータ読み取り可能な記録媒体。
このように、前記(イ)項のデータ変換プログラムは、コンピュータ読み取り可能な記録媒体に記録することも可能である。
【0097】
(ハ)4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換装置であって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを、これらに対応し且つ3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つにより表されるルックアップテーブルTiを使用して32ビットの中間データh(j)iに変換し、当該中間データh(j)iの排他的論理和をビット単位でとることにより、前記変換後データdjを求めるデータ変換装置。
【0098】
この技術的思想によれば、請求項1に記載の発明と同様の作用効果を得ることができる。
(ニ)互いに共通の暗号鍵を持ち合って、無線通信を通じて交換される通信相手側の乱数情報を自身の暗号鍵で暗号化した結果を交換することにより相互認証を行う2つの通信装置を備えてなる通信システムにおいて、これら2つの通信装置の双方に請求項1に記載のデータ変換装置が組み込まれてなる通信システム。この構成によれば、請求項3と同様の作用効果を得ることができる。
【図面の簡単な説明】
【0099】
【図1】本実施の形態の電子キーシステムの概略構成を示すブロック図。
【図2】同じく電子キーと車載機との相互認証手順を示す動作シーケンス図。
【図3】同じくAES暗号化処理の手順を示すフローチャート。
【図4】同じくRoundFunctionの処理手順を示すフローチャート。
【図5】同じくRoundFunctionの処理手順を示す模式図。
【図6】AES暗号方式で使用されるブロックデータの概略構成図。
【図7】AES暗号方式に使用される鍵(共通鍵)の概略構成図。
【図8】AES暗号方式による暗号化手順を示すフローチャート。
【図9】(a)は、AES暗号方式におけるSubBytes変換の説明図、(b)は、同じくShiftRows変換の説明図、(c)は、同じくMixColumns変換の説明図、(d)は、同じくAddRoundKey変換の説明図。
【図10】AES暗号方式で使用されるRoundKeyの生成方法の説明図。
【図11】(a)は、従来のAES暗号方式における暗号化の手順を示す模式図、(b)は、同じくAES暗号方式におけるSubBytes、ShiftRows及びMixColumnsを順に施すことで得られる変換後データの概略構成図。
【符号の説明】
【0100】
11…電子キーシステム(通信システム)、12…電子キー(通信装置)、13…車載機(通信装置)、21…制御回路(データ変換装置)、31…照合制御装置(データ変換装置)。
【技術分野】
【0001】
本発明は、AES暗号化方式を使用してデータを暗号化するデータ変換装置及びデータ変換方法及び通信システムに関するものである。
【背景技術】
【0002】
従来、データを暗号化するための様々な暗号方式が知られている。近年では、米国連邦標準技術局(NIST)により、AES(Advanced Encryption Standard)と呼ばれる共通暗号方式が規格化され普及しつつある。この暗号方式は、コンピュータ間のデータ通信等、各種の技術分野で採用されつつある。
【0003】
<AES概要>
ここでまず、AES暗号方式の概要を説明する。図6に示すように、AES暗号方式は、ブロック長が128ビットのブロック暗号である。この128ビットのブロックデータは、1バイト(8ビット)単位のデータ(以下、「部分データ」という。)に分割され、4×4、すなわち4行4列の正方行列として表現される。なお、図6では、ブロックデータにおけるi行目(i=0,1,2,3)のj列目(j=0,1,2,3)の部分データを、ai,jと表す。また、図7に示すように、AES暗号方式の暗号化処理に際して使用される鍵(共通鍵)の鍵長は128ビット、192ビット、256ビットの3種類である。この鍵も、1バイト単位のデータに分割され、4×Nk(Nk=4,6,8)の長方形行列として表現される。
【0004】
そして、AES暗号方式では、次のような手順でブロックデータを暗号化する。すなわち、図8に示すように、まず、AddRoundKey(ラウンドキー加算)を1回行う。次に、SubBytes(バイト置換)、ShiftRows(行シフト)、MixColumns(列ミックス)及び前記AddRoundKeyの4種類の変換を順に行うRoundFunction(ラウンド変換)を複数のラウンド、正確には(Nr−1)回にわたって繰り返す。ここで、Nrは、定められたラウンド数である。そして最後に、RoundFunctionの中からMixColumnsだけを除いたFinalRoundFunction(最終ラウンド変換)を1回だけ行う。なお、図8の右上に示されるように、ラウンド数Nrは、鍵長Nkに対応して決められている。鍵長Nkが128,196,256ビット、すなわちNk=4,6,8のとき、ラウンド数Nr=10,12,14となる。
【0005】
<各変換の説明>
次に、AES暗号方式を使用してデータを暗号化するための前述した4種類の変換について、それぞれ説明する。
【0006】
<SubBytes>
図9(a)に示すように、SubBytesは、ブロックデータの各単位である各部分データを、1バイト入出力のルックアップテーブル(S−BOX)を使用して1対1に変換する処理である。すなわち、1バイトのデータである各部分データは1バイトの別のデータに変換される。8ビット256語のルックアップテーブルの内容は、入力値のガロア体GF(28)上の逆数をとり、その結果にビット間の排他的論理和によるアフィン変換を施した結果を予め計算しておいたものである。
BM609347BM609347 <ShiftRows>
図9(b)に示すように、ShiftRowsでは、4×4行列の各行のデータをバイト単位で特定回数だけ循環左シフトする。すなわち、鍵長が128ビット又は192ビットの場合には、0行目はシフトなし、1行目は左に1つシフト、2行目は左に2つシフト、3行目は左に3つシフトする。このように、ShiftRowsでは、各行に対応する引数Ci(i=1,2,3)を使用して、ブロックデータを行単位(32ビット単位)で変換する。
【0007】
<MixColumns>
MixColumnsでは、前述したShiftRowsによる変換後のブロックデータにおける各列に対して、多項式「C(x)=3x3+x2+x+2」を掛け算する。すなわち、図9(c)に示すように、MixColumnsでは、前述の多項式C(x)を使用して、ShiftRowsによる変換後のブロックデータを列単位で変換する。
【0008】
<AddRoundKey>
AddRoundKeyでは、図9(d)に示すように、ブロックデータと図7に示される元の鍵から生成されるRoundKeyとのXOR(排他論理和)をビット単位でとる。すなわち、AddRoundKeyでは、RoundKeyを使用して、ブロックデータを1ビット単位で変換する。具体的には、MixColumnsによる変換後のデータdi,j(0≦i≦3、0≦j≦3)と、ラウンドキーKi,jとのXORをとり、結果としてei,jを得る。これは、次式で示される。
【0009】
di,j XOR ki,j=ei,j
ここで、RoundKeyは次のようにして生成される。すなわち、図10に示すように、元の鍵を特定の拡張アルゴリズムに従って拡張し、その拡張した鍵をブロックデータのブロック長(128ビット)で順番に区切ることにより、図8に示されるブロックデータの暗号化手順に含まれるAddRoundKeyの回数分(「ラウンド数Nr+1」回分)だけRoundKeyを生成する。こうして生成した複数のRoundKeyは、データの暗号化のために複数回行われるAddRoundKeyで順に使用される。なお、FinalRoundFunctionでのAddRoundKeyでは、同じくFinalRoundFunctionでのShiftRowsによる変換後のデータが入力データとされる。
【0010】
ところで、このようなデータの暗号化処理では、処理速度を向上させるための手法として、ルックアップテーブルを使用することが考えられる。しかし、AES暗号化方式では、128ビットのブロックデータ毎に変換が行われるため、これを1つのルックアップテーブルを使用して変換しようとすると、「2128×16バイト」といった膨大な大きさのルックアップテーブルが必要となることから、これは現実的ではない。すなわち、データを暗号化するデータ変換装置において非常に大きなデータ記憶容量を確保する必要がある。そこで、当該データ記憶容量を縮小するべく、例えば特許文献1に示されるようなデータ変換装置が従来提案されている。
【0011】
同文献1のデータ変換装置は、次のようにしてデータを暗号化する。すなわち、前述したように、RoundFunctionは、入力されるブロックデータに対して、SubBytes、ShiftRows、MixColumns及びAddRoundKeyの各変換を順に施す処理である。しかし、同文献1では、各変換をそれぞれ行うのではなく、4行4列の行列で表される128ビットの変換対象データに対してRoundFunctionを行うことで得られる変換後データを、8ビット入力32ビット出力の4つのルックアップテーブル及びXOR演算のみを使用して求める。
【0012】
具体的には、図11(a)に示すように、まず変換対象データを構成する部分データ(8ビット)の中から、ShiftRowsの変換を施すことにより同列に移動する4つの部分データ(a0,j、a1,j−c1、a2,j−c2、a3,j−c3)を選択する。例えばShiftRowsの変換を施すことにより1列目に移動する4つの部分データは、図11(a)に太線の枠で示されるように、「a0,0、a1,1、a2,2、a3,3」である。
【0013】
そして同図11(a)に示されるように、この選択した4つの部分データからなる32ビットのブロックデータを、各部分データに対応するルックアップテーブルT0〜T3を使用してそれぞれ変換後データにおける同列の4つの部分データからなる32ビットのデータに変換し、これら変換後の4つのデータの排他論理和をとる。これにより、変換対象データに対して、SubBytes、ShiftRows及びMixColumnsを順に施すことで得られる図11(b)に示される変換後データが得られる。例えば前述したShiftRowsの変換を施すことにより1列目に移動する4つの部分データ「a0,0、a1,1、a2,2、a3,3」は、4つの部分データ「d0,0、d1,0、d2,0、d3,0」からなる32ビットのデータに変換される。
【0014】
さらに、図11(a)に示されるように、このように求めたデータに、AddRoundKeyによる変換を施すことにより、変換対象データに対してRoundFunctionを行うことで得られる変換後データejが求められる。例えば1列目となる4つの部分データ「d0,0、d1,0、d2,0、d3,0」からなる32ビットのデータは、「e0,0、e1,0、e2,0、e3,0」となる。なお、変換対象データにShiftRowsの変換を施すことにより2列目、3列目及び4列目に移動する4つの部分データからなる32ビットのブロックデータについても、前述と同様にして変換される。
【0015】
このように、8ビット入力32ビット出力の4つのルックアップテーブルT0〜T3を使用して暗号化を行うことにより、データ変換装置におけるデータ記憶容量の縮小化が図られる。すなわち、特許文献1の各ルックアップテーブルT0〜T3は、処理対象データの部分データ(8ビット)を32ビットのデータに変換するものである。このため、各ルックアップテーブルT0〜T3の情報量は、それぞれ「4バイト×28=1024バイト」であることから、4つのルックアップテーブルT0〜T3の情報量の合計は4096バイトとなる。この値は、前述した1つのルックアップテーブルを使用してデータの変換を行うようにした場合に必要とされる情報量(2128×16バイト)に比べて小さい。
【特許文献1】特開2003−195749号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
前述したようなデータ変換処理は、所定のデータ変換プログラムに従って実行されるところ、当該プログラムは、携帯電話、家電機器、自動車及び産業機器等のコンピュータを組み込んだ機器である組み込みシステムを実現するための組み込みソフトウェアとして使用されることも多い。しかし、近年では、データ変換プログラムの搭載対象である各種機器のハードウェア性能の向上及び機能要求の高度化とあいまって、当該データ変換プログラムを含む各種の組み込みソフトウェアは飛躍的に規模が大きくなり複雑になってきている。特に、量産品の場合には、製品コストが重要視されるため、メモリ等のリソースの制約が厳しく、限られた記憶容量又はメモリ性能で動作する必要がある。このため、データ変換プログラム、特にそれを組み込みソフトウェアとして使用する場合には、その情報量は小さいほどよい。このような実状から、AES暗号方式を使用してデータを変換するために必要とされるルックアップテーブル等の情報の量のさらなる縮小が望まれていた。
【0017】
本発明は上記問題点を解決するためになされたものであって、その目的は、AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができるデータ変換装置及びデータ変換方法及び通信システムを提供することにある。
【課題を解決するための手段】
【0018】
請求項1に記載の発明は、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換装置であって、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めることをその要旨とする。
【0019】
h(j)i=Ti[ai,j−ci]
ただし、Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0020】
本発明によれば、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるに際して使用されるルックアップテーブルの情報量は512ビットとなる。これは、前述したように、当該ルックアップテーブルは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブルであることから、AES暗号方式によるデータ変換処理を行うに際して、2種類のルックアップテーブルを用意すればよい。ここで、3つのSubBytes変換s(x),2s(x),3s(x)で使用されるルックアップテーブルは、いずれも8ビット入力8ビット出力のものである。このため、3つのSubBytes変換s(x),2s(x),3s(x)のいずれについても、その情報量は「1バイト×28=256バイト」であり、2つのルックアップテーブルの情報量の合計は512バイト(0.5kB)となる。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量(4096B)との比較からも分かるように、本発明のデータ変換装置において必要とされるテーブルデータの情報量は、従来装置に比べて格段に少ない。したがって、AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができる。ひいては、データ変換装置に確保するべきデータ記憶領域を少なくすることができる。
【0021】
請求項2に記載の発明は、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換方法であって、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めることをその要旨とする。
【0022】
h(j)i=Ti[ai,j−ci]
ただし、Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0023】
本発明によれば、請求項1に記載の発明と同様に、AES暗号方式によるデータ変換処理を行うに際して、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つに対応する2種類のルックアップテーブルを用意すればよい。したがって、AES暗号方式を使用してデータを変換するために必要とされる情報の量を低減することができる。
【0024】
請求項3に記載の発明は、2つの通信装置間で共通の暗号鍵を持ち合って、少なくとも一方の通信装置から送信される乱数情報を他方の通信装置が自身の暗号鍵を使用して暗号化した暗号化結果を前記一方の通信装置へ返信し、当該一方の通信装置では、自身が送信した前記乱数情報を自身の暗号鍵を使用して暗号化した暗号化結果と他方の通信装置から送られてきた暗号化結果との比較を通じて当該他方の通信装置の認証を行う通信システムにおいて、前記2つの通信装置の双方に請求項1に記載のデータ変換装置が組み込まれてなることをその要旨とする。
【0025】
本発明によれば、2つの通信装置では暗号化のみが行われる。このため、データ変換プログラムとして、暗号化用のルックアップテーブル等の情報を含む暗号化プログラムのみを用意すればよい。したがって、復号化が必要とされる認証方式を採用した場合と異なり、復号化用のルックアップテーブル等の情報を含む復号化プログラムの情報量の分だけ、2つの通信装置に確保するべきデータ記憶領域を少なくすることができる。
【発明の効果】
【0026】
本発明によれば、AES暗号方式を使用してデータを変換するために必要とされる情報量を低減することができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明を車両の電子キーシステムに具体化した一実施の形態を図1〜図5に基づいて説明する。この電子キーシステムは、ユーザにより所持される電子キーと車両との間の無線通信を通じてドアの施解錠及びエンジンの始動を行うものである。
【0028】
<電子キーシステムの概要>
まず電子キーシステムの概要を説明する。図1に示すように、電子キーシステム11は、ユーザに所持される電子キー12、及び車両Carに搭載される車載機13を備えてなる。
【0029】
電子キー12の制御回路21には、LF帯の無線信号を受信するLF受信回路22、及び当該制御装置からの指令に従いRF帯の無線信号を送信するRF送信回路23が接続されている。LF受信回路22は、受信したLF信号を復調するとともに、その復調後の信号を受信データとして制御回路21に出力する。また、RF送信回路23は、制御回路21からの指令に従い、電子キーに固有のIDコードを乗せたRF帯の応答信号Srepを送信する。
【0030】
車載機13は、電子キー12との間の相互無線通信を通じて当該電子キー12の妥当性を判断する照合制御装置31を備えてなる。この照合制御装置31には、車室外へLF帯の無線信号を送信する車室外LF送信機32、車室内へLF帯の無線信号を送信する車室内LF送信機33、及びRF帯の無線信号を受信するRF受信機34が接続されている。また、照合制御装置31には、ドア錠を施解錠するべくドアロックモータMを駆動制御するドア制御装置35、ユーザによるエンジンスイッチSWの操作に応じて車両Carの電源位置を切換制御する電源制御装置36、及びエンジンEの駆動制御を行うエンジン制御装置37が、バス(多重通信線)Bを介して接続されている。
【0031】
さて、エンジンEが停止状態且つドアが施錠状態である車両Carの駐車状態において、照合制御装置31は、電子キー12に応答を要求する車室外照合用のLF帯の応答要求信号Sreqを所定の制御周期で車室外LF送信機32を通じて車室外に送信する。これにより、車両Carのドアの周辺には、電子キー12の図示しない検知領域が形成される。そして、ユーザが電子キー12を所持して車両Carに接近して前記検知領域内に入ると、電子キー12の制御回路21は、前記応答要求信号Sreqを受けて自身の記憶装置21aに格納された識別コードを含む応答信号Srepを、RF送信回路23を通じて送信する。
【0032】
照合制御装置31は、RF受信機34を通じて電子キー12からの応答信号Srepを受信すると、当該応答信号Srepに含まれる電子キー12に固有の識別コードと、自身の記憶装置31aに記憶された識別コードとを比較する車室外照合を行う。そして照合制御装置31は、この車室外照合が成立した場合には、図示しないドアハンドルノブに内蔵されたタッチセンサを起動し、当該センサを通じてユーザによるドアハンドルノブのタッチ操作を検出すると、ドア制御装置35にドアアンロック要求信号を出力する。ドア制御装置35は、照合制御装置31からのドアアンロック要求信号を受けて、ドアロックモータMを駆動して車両のドアを解錠する。
【0033】
この後、電子キー12を所持するユーザが車両に乗り込んだとき、ドア制御装置35は図示しないドアセンサを通じてこれを検出して当該検出信号を照合制御装置31へ出力する。ドア制御装置35からユーザが乗車した旨示す検出信号が入力されると、照合制御装置31は、車室内LF送信機33を通じて車室内照合用の応答要求信号Sreqを送信することにより、車室内に電子キー12の検知領域を形成する。電子キー12は、LF受信回路22を通じて車室内照合用の応答要求信号Sreqを受信すると、RF送信回路23を通じて識別コードを含む応答信号Srepを送信する。
【0034】
照合制御装置31は、RF受信機34を通じて電子キー12からの応答信号Srepを受信すると、当該応答信号Srepに含まれる電子キー12に固有の識別コードと、自身の記憶装置31aに記憶された識別コードとを比較する車室内照合を行う。そして照合制御装置31は、この車室外照合の照合結果を記憶装置31aに記憶し、当該照合結果を各種の車載システムの実行機能に応じてこれらシステムの制御装置、例えば電源制御装置36及びエンジン制御装置37へ送信する。
【0035】
すなわち、電源制御装置36は、シフトレバーが駐車位置に保持されるとともに図示しないブレーキペダルが踏み込まれた状態で、エンジンスイッチSWがオン操作された旨検出すると、照合制御装置31に対して車室内照合の照合結果を確認する。電源制御装置36は、照合制御装置31を通じて取得した車室内照合の照合結果が照合成立を示すものであった場合には、図示しないアクセサリリレー及びイグニッションリレーをオン動作させて、車両Carの各部に動作電力を供給する。
【0036】
そして、電源制御装置36は、エンジンEの始動を要求する始動要求信号を、バスBを通じてエンジン制御装置37へ出力する。エンジン制御装置37は、電源制御装置36からの始動要求信号が入力されると、照合制御装置31に対して車室内照合の照合結果を確認するとともに、互いが対を成す制御装置同士であるか否かの確認(ペアリング)を行う。エンジン制御装置37は、車室内照合及びペアリングの双方が成立している場合にのみ、エンジンEを始動させる。
【0037】
そして、ユーザが降車するべくエンジンスイッチSWの操作を通じてエンジンEを停止した後に、解錠状態のドアを開けて車室外に出て、前記ドアハンドルノブに設けられる図示しないロックスイッチをオン操作した場合には、これが照合制御装置31により検出される。すると、照合制御装置31は、車室外LF送信機32を通じて車室外照合用の検知領域を再度形成して車室外照合を行い、当該車室外照合が成立したときには、ドアロック要求信号をドア制御装置35へ出力する。ドア制御装置35は、照合制御装置31からのドアロック要求信号が入力されると、ドアロックモータMを駆動してドアを施錠する。
【0038】
<電子キー及び車載機の相互認証>
ここで、前述した電子キーシステム11においては、電子キー12と車載機13との相互認証が無線通信により行われることから、これら電子キー12と車載機13との間で送受信される情報(電子キー12に固有の識別情報等)が傍受され、この情報を使用して車両Carが不正に使用されることが特に懸念される。このため、電子キー12と車載機13との間では、これらの間で授受する情報を所定の暗号アルゴリズムにより暗号化して送受信する暗号化通信を利用した認証が行われる。本実施の形態では、認証を実施する装置間、すなわち電子キー12と車載機との間で互いに共通の暗号鍵を持ち合い、乱数データ(チャレンジコード)を暗号鍵で暗号化した結果を交換することにより認証を行う、いわゆるチャレンジ・レスポンス認証方式が採用されている。
【0039】
以下に、電子キーシステム11におけるチャレンジ・レスポンス認証方式の暗号化通信について、図2に示される動作シーケンスに図に従って説明する。なお、ここでは、乗車時等に行われる車室外照合が行われるものとする。また、車載機13と電子キー12とは、同じ暗号鍵Kを持っている。
【0040】
さて、車両Carの駐車状態にあっては、車載機13は、応答要求信号Sreqとして、電子キー12を起動させるWAKEコードを含む起動信号Swakeを所定の制御周期で送信する。これにより、車両Carのドアの周辺には、電子キー12の検知領域が形成される。
【0041】
そして、ユーザが電子キー12を携帯して前記検知領域に入った際、当該電子キー12が車両Carからの起動信号Swakeを受信すると、当該電子キー12は、まず起動信号Swakeに含まれるWAKEコードの妥当性、すなわち、当該WAKEコードが登録された正規の信号パターンかどうかを判定する。次に、電子キー12は、前記WAKEコードが正規の信号パターンである旨判定したときには、自身の動作が安定するのを待って、正常に認識した旨の応答信号であるACK信号Sackを車両側へ返信する。
【0042】
車載機13は、電子キー12からのACK信号Sackを受信することにより、電子キー12が前記検知領域内にあると判断し、登録された自身の車両コードを含む車両識別信号Scarを発信する。
【0043】
そして、電子キー12は、車載機13からの車両識別信号Scarを受信すると、それに含まれる車両コードと自身に登録された車両コードとの照合を行う。そして、その照合が成立した場合には、電子キー12は、RF送信回路23を通じてACK信号Sackを車両側へ再び返信する。
【0044】
<チャレンジ・レスポンス認証>
車載機13は、電子キー12からのACK信号Sackを再度受信すると、電子キー12との間でチャレンジ・レスポンス認証を行う。
【0045】
<S−1>
すなわち、車載機13は、まず乱数を生成し、この乱数を電子キー12に対するチャレンジコードRaとする。そして車載機13は、このチャレンジコードRaに特定のキーコードを付加した情報を含む認証信号Schaを送信する。ここで、チャレンジコードRaは、128ビットの情報量を有してなる。また、キーコードは、当該車載機13に予め登録された電子キー12に固有の情報である。
【0046】
<S−2>
電子キー12は、車載機13からの認証信号Schaを受信すると、これに含まれるキーコードと自身に登録されたキーコードとの照合を行う。電子キー12は、当該照合が成立した場合には、自身のキーコードが当該車両Carに登録されたコードである旨判断する。そして、電子キー12は、受信した認証信号Schaに含まれるチャレンジコードRaを自分の持つ暗号鍵Kにより暗号化する。この暗号化結果をEK(Ra)と示す。また、電子キー12は、車載機13に対するチャレンジコードRbとして乱数を生成する。そして電子キー12は、これら暗号化結果EK(Ra)及びチャレンジコードRbを含む暗号化信号Scip−keyを車載機13に送信する。
【0047】
<S−3>
車載機13では、自らが生成したチャレンジコードRaを自分の持つ暗号鍵Kで暗号化した結果と受信した暗号化信号Scip−keyに含まれる暗号化結果EK(Ra)とを比較し、その値が一致すれば電子キー12が正常に認証されたと判断する。また、車載機13は、受信した暗号化信号Scip−keyに含まれるチャレンジコードRbを自分の持つ暗号鍵Kにより暗号化し、その暗号化結果を含む暗号化信号Scip−carを電子キー12に送信する。なお、チャレンジコードRbの暗号化結果をEK(Rb)と示す。
【0048】
<S−4>
電子キー12では、自らが生成したチャレンジコードRbを自分の持つ暗号鍵Kで暗号化した結果と受信した暗号化信号Scip−carに含まれる暗号化結果EK(Rb)とを比較し、その値が一致すれば車載機13が正常に認証されたと判断する。
【0049】
以上で車載機13と電子キー12との間のチャレンジ・レスポンス認証は完了となる。ここで、チャレンジ・レスポンス認証においては、認証のたびに異なる乱数を生成してチャレンジコードとされることから、いわゆるリプレイアタックが抑制される。このリプレイアタックとは、前述した暗号鍵K等を傍受して、そのまま再利用することにより正規のユーザになりすます攻撃をいう。
【0050】
そして、前述したチャレンジ・レスポンス認証が完了、すなわち前記<S−4>において、電子キー12が車載機13を正常に認証した場合には、電子キー12は、前記応答信号Srepとして、自身に固有のキーコードを含む識別信号Sidを車載機13に送信する。車載機13は、電子キー12からの識別信号Sidに含まれるキーコードと自身に登録されたキーコードとの照合を行い、当該照合が成立したことをもって電子キー12との間の車室外照合が成立した旨判断する。この後、車両のドアが解錠されて、電子キー12を所持するユーザが乗車した際には、前述した車室外照合と同様にして車載機13と電子キー12との相互認証を行うべく車室内照合が行われる。ここでは、車室内照合の手順についての詳細な説明を省略する。
【0051】
<AES暗号化処理>
本実施の形態では、前述したチャレンジ・レスポンス認証方式の暗号化通信における暗号アルゴリズムとして、AES(Advanced Encryption Standard)暗号方式を採用している。
【0052】
ここで、電子キー12の記憶装置21aには、車載機13との間の相互無線通信を制御回路21に実行させるための通信制御プログラム、及びAES暗号方式を使用して車載機13へ送信する情報を暗号化する処理を制御回路21に実行させるためのデータ変換プログラムが記憶されている。また、当該記憶装置21aには、前記データ変換プログラムが実行された際に使用される暗号鍵K及びルックアップテーブルTiが格納されている。
【0053】
また、車載機13の記憶装置31aには、電子キー12との間の相互無線通信を照合制御装置31に実行させるための通信制御プログラム、及びAES暗号方式を使用して電子キー12へ送信する情報を暗号化する処理を制御回路21に実行させるためのデータ変換プログラムが記憶されている。また、当該記憶装置31aには、データ変換プログラムが実行された際に使用される暗号鍵K及びルックアップテーブルTiが記憶されている。なお、両記憶装置21a,31aに格納される暗号鍵K及びルックアップテーブルTiは、同じものである。
【0054】
さて、前述したチャレンジ・レスポンス認証の実行中におけるAES暗号方式による暗号化処理について、図3に示すフローチャートに従って詳細に説明する。このフローチャートは、電子キー12又は車載機13におけるチャレンジ・レスポンス認証の実行中において、暗号化されていない平文データであるチャレンジコードRa,Rbを通信対象へ送信する場合に、電子キー12及び車載機13に格納されたデータ変換プログラムに従い実行される。なお、当該暗号化処理は、電子キー12と車載機13とで同様の手順で実行されることから、ここでは、電子キー12を例にとって説明する。電子キー12では、前述した<S−2>において、車載機13からのチャレンジコードRaを暗号化して返信する。
【0055】
<RoundKeyの生成>
当該暗号化処理が開始されると、まず電子キー12は、自身の記憶装置21aに格納されている暗号鍵Kを使用してRoundKeyを生成する(ステップS101)。
【0056】
すなわち、電子キー12は、元の暗号鍵Kを特定の拡張アルゴリズムに従って拡張し、その拡張した鍵を平文データであるチャレンジコードRaのデータ長(ここでは、128ビット)で順番に区切ることにより、AddRoundKeyの回数分(「ラウンド数Nr+1」回分)だけRoundKeyを生成する(図10参照。)。そして電子キー12は、この生成した複数のRoundKeyを記憶装置21a(正確には、その一時記憶領域)に格納する。このRoundKeyは、平文データを暗号化する際に行う後述のAddRoundKeyで使用される。
【0057】
<AddRoundKey>
次に、電子キー12は、平文データであるチャレンジコードRaに対して、AddRoundKeyを1回だけ行う(ステップS102)。
【0058】
すなわち、電子キー12は、チャレンジコードRaと前述したステップS101で生成されたRoundKeyとのXOR(排他論理和)をビット単位でとる。
<RoundFunction>
次に、電子キー12は、RoundFunction(ステップS103)を行う。ここで、RoundFunctionは、背景技術で説明したように、SubBytes、ShiftRows、MixColumns及びAddRoundKeyの各変換を順に施す処理である。しかし、本実施の形態では、これら変換をそれぞれ行うのではなく、次のようにして行う。すなわち、4行4列の正方行列で表される128ビットの処理対象データであるチャレンジコードRaにSubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdi,jを前述したルックアップテーブルTiを使用して求める。そして、この求められた変換後データdi,jにAddRoundKeyを行うことにより、従来のRoundFunctionを行うことにより得られる変換後データei,jを求める。このステップS103で実行されるRoundFunctionについては、後に詳述する。
【0059】
<FinalRoundFunction>
次に、電子キー12は、ステップS103Sの処理を「Nr−1」回だけ行ったか否かを判定する(ステップS104)。
【0060】
ここで、Nrは、前述したように、予め定められたラウンド数である。そして電子キー12は、このステップS104において、ステップS103の処理を「Nr−1」回だけ行っていないと判定した場合(ステップS104でNO)には、ステップS103へ処理を移行する。
【0061】
一方、電子キー12は、ステップS104で、ステップS103の処理を「Nr−1」回だけ行ったと判定した場合(ステップS104でYES)には、FinalRoundFunctionを行う。すなわち、電子キー12は、ステップS105へ処理を移行してSubBytesを行い、次にステップS106へ処理を移行してShiftRowsを行い、さらにステップS107へ処理を移行してAddRoundKeyを行い、当該AES暗号化処理を終了する。
【0062】
<RoundFunctionの詳細>
次に、図3に示されるフローチャートにおいて、ステップS103へ処理が移行したときに電子キー12の制御回路21により実行されるRoundFunctionについて、図4に示すフローチャートに従って詳細に説明する。
【0063】
<第1の処理>
さて、RoundFunctionが開始されると、電子キー12は、まずShiftRowsを施すことにより同列となる変換対象データ(チャレンジコードRa)の8ビットの部分データai,j−ciを次式(A)に基づき変換することにより32ビットの中間データh(j)iを求める(ステップS201)。この中間データh(j)iは、変換前のデータである前述の部分データai,j−ciのi行目(i=0,1,2,3)から生成されるデータであって、かつ後述する変換後データdi,jのj列目(dj)の生成に寄与する32ビットのデータである。なお、この中間データを示す符号「h(j)i」の上付きの添え字「(j)」は、中間データh(j)iが、変換後データdi,jのj列目(dj)に寄与するものである旨を明確にするべく、説明の便宜上、付加したものである。
【0064】
h(j)i=Ti[ai,j−ci] …式(A)
ただし、
Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、
ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、
ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0065】
すなわち、前記式(A)では、処理対象データから処理後データへの変換を32ビット単位で行う。具体的には、図5に示すように、電子キー12は、処理対象データであるチャレンジコードRaを構成する8ビットの部分データai,jの中から、ShiftRowsの変換を施すことにより同列に移動する4つの部分データa0,j,a1,j−C1,a2,j−C2,a3,j−C3を選択する。なお、図5では、ShiftRowsの変換を施すことにより1列目に移動する4つの部分データa0,0,a1,1,a2,2,a3,3が選択されている。そしてこの選択した4つの8ビットの部分データa0,j,a1,j−C1,a2,j−C2,a3,j−C3を、記憶装置21aに格納されているルックアップテーブルTi(i=0,1,2,3)を使用して4つの32ビットの中間データh(j)i(i=0,1,2,3)に変換する。ここで、ルックアップテーブルTi(i=0,1,2,3)は、前記選択した4つの部分データに対応する8ビット入力32ビット出力の4つのルックアップテーブルT0,T1,T2,T3からなる。そして、前記選択した4つの部分データa0,j,a1,j−C1,a2,j−C2,a3,j−C3を、これらに対応する各ルックアップテーブルT0,T1,T2,T3により変換した後の32ビットの中間データh(j)i(i=0,1,2,3)において、8ビットの4つの部分データh(j)i,k(k=0,1,2,3)は、3種類のSubBytes変換s(x),2s(x),3s(x)を使用して表すことができる。
【0066】
さらにSubBytes変換においては、次式(B)で示される関係がある。
3s(x)=2s(x) XOR s(x) …式(B)
ここで、XORは排他的論理和を示す。
【0067】
したがって、部分データa0,jをこれに対応するルックアップテーブルT0により変換した後の中間データh(j)0における4つの部分データh(j)0,k(k=0,1,2,3)は次のように表すことができる。
【0068】
h(j)0,0=2s(a0,j)
h(j)0,1= s(a0,j)
h(j)0,2= s(a0,j)
h(j)0,3=3s(a0,j)=2s(a0,j) XOR s(a0,j)
部分データa1,j−C1をこれに対応するルックアップテーブルT1により変換した後の中間データh(j)1における4つの部分データh(j)1,k(k=0,1,2,3)は次のように表すことができる。
【0069】
h(j)1,0=3s(a1,j−c1)=2s(a1,j−c1) XOR s(a1,j−c1)
h(j)1,1=2s(a1,j−c1)
h(j)1,2= s(a1,j−c1)
h(j)1,3= s(a1,j−c1)
部分データa2,j−C2をこれに対応するルックアップテーブルT2により変換した後の中間データh(j)2における4つの部分データh(j)2,k(k=0,1,2,3)は次のように表すことができる。
【0070】
h(j)2,0= s(a2,j−c2)
h(j)2,1=3s(a2,j−c2)=2s(a2,j−c2) XOR s(a2,j−c2)
h(j)2,2=2s(a2,j−c2)
h(j)2,3= s(a2,j−c2)
部分データa3,j−C3をこれに対応するルックアップテーブルT3により変換した後の中間データh(j)3における4つの部分データh(j)3,k(k=0,1,2,3)は次のように表すことができる。
【0071】
h(j)3,0= s(a3,j−C3)
h(j)3,1= s(a3,j−C3)
h(j)3,2=3s(a3,j−C3)=2s(a3,j−C3) XOR s(a3,j−C3)
h(j)3,3= 2(a3,j−C3)
このように、中間データh(j)i(i=0,1,2,3)は、2種類のSubBytes変換s(x),2s(x)を使用することにより求められる。すなわち、前述のルックアップテーブルTi(i=0,1,2,3)による変換は、前述した各演算式に基づき行われる2種類のSubBytes変換s(x),2s(x)を行うことと同義である。
【0072】
なお、SubBytes変換には、前記式(B)で示した以外にも、次式(C),(D)に示される関係がある。
2s(x)=s(x) XOR 3s(x) …式(C)
s(x)=2s(x) XOR 3s(x) …式(D)
したがって、中間データh(j)i(i=0,1,2,3)は、SubBytes変換s(x),3s(x)、又はSubBytes変換2s(x),3s(x)を使用して求めることも可能である。すなわち、中間データh(j)i(i=0,1,2,3)は、s(x),2s(x),3s(x)のうちいずれか2つを使用して求めることができる。
【0073】
<第2の処理>
そして次に、電子キー12は、前述のようにして求められた中間データh(j)iの排他的論理和をビット単位でとることにより変換後データdjを求める(ステップS202)。
【0074】
ここで、変換後データdjは、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciに、SubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdi,jにおけるj列目の32ビットのデータである。
【0075】
すなわち、このステップS202の処理は次のように表すことができる。
(dj=h(j)0 XOR h(j)1 XOR h(j)2 XOR h(j)3)
d0,j=h(j)0,0 XOR h(j)1,0 XOR h(j)2,0 XOR h(j)3,0
d1,j=h(j)0,1 XOR h(j)1,1 XOR h(j)2,1 XOR h(j)3,1
d2,j=h(j)0,2 XOR h(j)1,2 XOR h(j)2,2 XOR h(j)3,2
d3,j=h(j)0,3 XOR h(j)1,3 XOR h(j)2,3 XOR h(j)3,3
そして前述したように、中間データh(j)iの4つの部分データh(j)i、k(k=0,1,2,3)は、SubBytes変換s(x),2s(x)で表せることから、このステップS202の処理はさらに次のように表すことができる。
【0076】
d0,j=2s(a0,j) XOR {2s(a1,j−c1) XOR s(a1,j−c1)} XOR s(a2,j−C2) XOR s(a3,j−C3)
d1,j=s(a0,j) XOR 2s(a1,j−c1) XOR {2s(a2,j−C2) XOR s(a2,j−C2)} XOR s(a3,j−C3)
d2,j=s(a0,j) XOR s(a1,j−c1) XOR 2s(a2,j−C2) XOR {2s(a3,j−C3) XOR s(a3,j−C3)}
d3,j={2s(a0,j) XOR s(a0,j)} XOR s(a1,j−c1) XOR s(a2,j−C2) XOR 2(a3,j−C3)
このように、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciに、SubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdjを求めるためには、SubBytes変換s(x)及び2s(x)に対応する2つのルックアップテーブルだけを用意すればよい。
【0077】
そして、これらルックアップテーブルは、変換対象データの8ビットの部分データを、これとは異なる8ビットのデータに変換するものである。このため、各ルックアップテーブルの情報量は「1バイト×28=256バイト」であり、2つのルックアップテーブルを合わせても512バイト(0.5kB)である。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量(4kB)と比較してみても、本実施の形態で必要とされるテーブルデータ(ルックアップテーブルTi)の情報量は格段に少ない。
【0078】
本実施の形態では、ルックアップテーブルTiによる変換処理として、前述のような2つのSubBytes変換s(x)及び2s(x)で表される各種の演算式に基づく演算により、部分データai,j−ciに、SubBytes、ShiftRows、MixColumnsの各変換を順に施すことにより得られる変換後データdjを一括して求めることができる。
【0079】
なお、s(x),2s(x),3(x)間には、前述した式(C),(D)で示される関係があることから、使用するルックアップテーブルは、s(x),2s(x)に対応する2種類だけに限られず、s(x),2s(x),3s(x)のうちいずれか2つを選択して使用することも可能である。
【0080】
<第3の処理>
次に、電子キー12は、次式(E)で示されるように、ステップS202により得られた変換後データdjにAddRoundKeyを行うことにより従来のRoundFunctionを行うことにより得られる変換後データei,jにおける同列の4つの部分データからなる32ビットのデータejに変換する。
【0081】
dj XOR Kj=ej …式(E)
以上で、1回のRoundFunctionは完了となる。
<実施の形態の効果>
従って、本実施の形態によれば、以下の効果を得ることができる。
【0082】
(1)AES暗号方式により変換対象データを変換するに際して、4行4列の行列で表される128ビットの変換対象データai,jにおいて、ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを前記式(A)に基づき変換することにより32ビットの中間データh(j)iを求めるようにした。そして、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより、4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdiを一括して求めるようにした。
【0083】
そして、前述したように、ルックアップテーブルTiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブルであることから、AES暗号方式により変換対象データの変換を行うに際して、2種類のルックアップテーブルを用意すればよい。ここで、3つのSubBytes変換s(x),2s(x),3s(x)で使用されるルックアップテーブルは、いずれも8ビット入力8ビット出力のものである。このため、3つのSubBytes変換s(x),2s(x),3s(x)のいずれも、その情報量は「1バイト×28=256バイト」であり、2つのルックアップテーブルの情報量の合計は512バイト(0.5kB)となる。したがって、例えば前述した従来のデータ変換装置において必要とされるルックアップテーブルの情報量(4kB)との比較からも分かるように、本実施の形態のデータ変換装置において必要とされるテーブルデータ(ルックアップテーブルTi)の情報量は、従来装置に比べて格段に少ない。
【0084】
(2)また、このように、AES暗号方式を使用してデータを変換するために必要とされるルックアップテーブルの情報量の縮小化が図られることから、組み込みソフトウェアとしての使用にも好適である。すなわち、前述したように、近年では、組み込みソフトウェアにおいては、ハードウェア性能の向上及び機能要求の高度化とあいまって、飛躍的に規模が大きくなり複雑になってきている。こうした傾向は、電子化の傾向が著しい自動車等の車両にあっても顕著である。データ変換に必要とされるルックアップテーブルの情報量が0.5kB程度である本実施の形態によれば、こうした実情に好適に対応することができる。
【0085】
(3)電子キー12と車載機13との間の認証方式として、チャレンジ・レスポンス認証方式を採用した。このため、電子キー12及び車載機13では、暗号化のみが行われる。このため、データ変換プログラムとして、暗号化プログラム(ルックアップテーブル等の情報を含む。)のみ用意すればよい。したがって、復号化が必要とされる認証方式を採用した場合と異なり、復号化プログラムの情報量の分だけ、記憶装置21a,31aに確保するべき記憶容量を少なくすることができる。
【0086】
<他の実施の形態>
なお、本実施の形態は、次のように変更して実施してもよい。
・本実施の形態では、電子キー12と車載機13との間の認証方式としてチャレンジ・レスポンス認証方式を採用し、電子キー12と車載機13との間で相互に認証するようにしたが、いずれか一方が他方の認証を行うのみとしてもよい。電子キー12と車載機13との間で共通の暗号鍵を持ち合うことは、前述した本実施の形態と同様である。そして例えば車載機13側で電子キー12を認証するようにした場合、車載機13は電子キー12の認証を行うに際して、まずその都度変化する乱数情報であるチャレンジコードを電子キー12へ送信する。電子キー12では、車載機13から送られてきたチャレンジコードを自身の暗号鍵で暗号化し、その暗号化結果を車載機13へ返信する。車載機13は、自身の暗号鍵で元のチャレンジコードを暗号化し、その暗号化結果と電子キー12から送信されてきた暗号化結果とを比較する。車載機13は自身が演算した暗号化結果と電子キー12からの暗号化結果とが一致した旨判定したときには認証成立、すなわち当該電子キー12を正当な通信相手である旨判断する。なお、電子キー12側で車載機13を認証するようにした場合も前述と同様にして認証が行われる。このようにした場合であれ、電子キー12及び車載機13では、暗号化のみが行われるだけであることから、データ変換プログラムとして、復号化プログラムは用意する必要はなく、暗号化プログラムのみ用意すればよい。
【0087】
・本実施の形態では、電子キー12と車載機13との間の認証方式として、チャレンジ・レスポンス認証方式を採用したが、他の認証方式を採用することも可能である。
・本実施の形態では、電子キー12と車載機13との間の暗号化通信について説明したが、車載される各種の電子制御装置間の暗号化通信にも適用可能である。この場合には、各電子制御装置にデータ変換プログラムを格納することにより、各電子制御装置はデータ変換装置としても機能する。このように、有線通信及び無線通信を問わず、暗号化通信が行われる通信機器全般について本発明を適用することができる。
【0088】
・本実施の形態では、車両用の電子キーシステムを構成する電子キー12及び車載機13をAES暗号方式によるデータ変換装置として機能させるようにしたが、携帯電話、家電機器及び産業機器等のコンピュータを組み込んだ機器であれば、前述のデータ変換機能(データ変換プログラム)を適宜組み込むことができる。
【0089】
・本実施の形態では、電子キー12と車載機13との相互無線通信を通じて特定の車両機能を作動制御する電子キーシステム11に本発明を具体化したが、例えば特定の情報を暗号化して特定の通信対象へ一方的に送信する単方向通信を行う通信システムに具体化することも可能である。例えば、電子キーに設けられる施解錠釦の操作を通じて施解錠要求信号を車両Carに送信することによりドアを施解錠する、いわゆる電波キーシステムに本発明を具体化することもできる。この場合には、情報を暗号化して送信する側の電子機器である電子キーのみに前述のデータ変換機能を持たせればよい。このように、双方向通信及び単方向通信のいずれを行う場合であれ、本発明を適用することができる。
【0090】
・本実施の形態では、暗号化処理のみを行うチャレンジ・レスポンス認証方式の暗号化処理に係る暗号アルゴリズムとして、AES暗号方式を採用した例について説明したが、復号化処理を必要とする認証方式に適用することも可能である。復号化処理は、暗号化処理と逆の処理が実行されることで成立する。この際には、復号化用のルックアップテーブルを用意する。
【0091】
・本実施の形態では、前記式(A)に示されるルックアップテーブルTi、すなわち3つのSubBytes変換を示すs(x),2s(x),3s(x)のうちいずれか2つに対応するルックアップテーブルを記憶装置21a,31aに記憶させておくようにしが、次のようにすることも可能である。すなわち、s(x),2s(x),3s(x)のうちいずれか2つに対応するルックアップテーブルは、変換対象データの変換処理中において生成する。このようにすれば、ルックアップテーブルTiを記憶装置21a,31aに予め格納する必要がない。このため、AES暗号方式を使用したデータの暗号化を、より小さなデータ記憶容量で実現することができる。またこの場合には、ルックアップテーブルTi、すなわち2種類のSubBytes変換に対応するルックアップテーブルを生成するだけでよいので、データ変換の処理速度への影響も少ない。
【0092】
・前述したAES暗号方式を使用して所定の情報を暗号化する処理をコンピュータに実行させるためのデータ変換プログラムは、コンピュータ読み取り可能な記録媒体に格納して流通させるようにしてもよい。この記録媒体としては、携帯可能とされた不揮発性半導体メモリ(例えば、フラッシュメモリ)、フレキシブルディスク、光ディスク(例えば、CD−ROM、DVD−ROM)、光磁気ディスク(例えば、MO、MD)等、種々のものが採用可能である。
【0093】
<他の技術的思想>
次に、前記実施の形態より把握できる技術的思想について以下に記載する。
(イ)4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求める処理をコンピュータに実行させるためのデータ変換プログラムであって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求める処理をコンピュータに実行させるためのデータ変換プログラム。
【0094】
h(j)i=Ti[ai,j−ci]
ただし、Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【0095】
この(イ)項に記載の技術的思想は、4行4列の行列で表される128ビットの変換対象データに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを、請求項2に記載のデータ変換方法を使用して求める機能をコンピュータに実現させるためのものである。このようなデータ変換プログラムを、AES暗号方式の暗号化を行うために使用すれば、AES暗号方式を用いてデータを暗号化するデータ変換装置に確保するべきデータ記憶容量を小さくすることができる。
【0096】
(ロ)前記(イ)項に記載のデータ変換プログラムが記録されたコンピュータ読み取り可能な記録媒体。
このように、前記(イ)項のデータ変換プログラムは、コンピュータ読み取り可能な記録媒体に記録することも可能である。
【0097】
(ハ)4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換装置であって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを、これらに対応し且つ3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つにより表されるルックアップテーブルTiを使用して32ビットの中間データh(j)iに変換し、当該中間データh(j)iの排他的論理和をビット単位でとることにより、前記変換後データdjを求めるデータ変換装置。
【0098】
この技術的思想によれば、請求項1に記載の発明と同様の作用効果を得ることができる。
(ニ)互いに共通の暗号鍵を持ち合って、無線通信を通じて交換される通信相手側の乱数情報を自身の暗号鍵で暗号化した結果を交換することにより相互認証を行う2つの通信装置を備えてなる通信システムにおいて、これら2つの通信装置の双方に請求項1に記載のデータ変換装置が組み込まれてなる通信システム。この構成によれば、請求項3と同様の作用効果を得ることができる。
【図面の簡単な説明】
【0099】
【図1】本実施の形態の電子キーシステムの概略構成を示すブロック図。
【図2】同じく電子キーと車載機との相互認証手順を示す動作シーケンス図。
【図3】同じくAES暗号化処理の手順を示すフローチャート。
【図4】同じくRoundFunctionの処理手順を示すフローチャート。
【図5】同じくRoundFunctionの処理手順を示す模式図。
【図6】AES暗号方式で使用されるブロックデータの概略構成図。
【図7】AES暗号方式に使用される鍵(共通鍵)の概略構成図。
【図8】AES暗号方式による暗号化手順を示すフローチャート。
【図9】(a)は、AES暗号方式におけるSubBytes変換の説明図、(b)は、同じくShiftRows変換の説明図、(c)は、同じくMixColumns変換の説明図、(d)は、同じくAddRoundKey変換の説明図。
【図10】AES暗号方式で使用されるRoundKeyの生成方法の説明図。
【図11】(a)は、従来のAES暗号方式における暗号化の手順を示す模式図、(b)は、同じくAES暗号方式におけるSubBytes、ShiftRows及びMixColumnsを順に施すことで得られる変換後データの概略構成図。
【符号の説明】
【0100】
11…電子キーシステム(通信システム)、12…電子キー(通信装置)、13…車載機(通信装置)、21…制御回路(データ変換装置)、31…照合制御装置(データ変換装置)。
【特許請求の範囲】
【請求項1】
4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換装置であって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めるデータ変換装置。
h(j)i=Ti[ai,j−ci]
ただし、
Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、
ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、
ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【請求項2】
4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換方法であって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めるデータ変換方法。
h(j)i=Ti[ai,j−ci]
ただし、
Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、
ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、
ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【請求項3】
2つの通信装置間で共通の暗号鍵を持ち合って、少なくとも一方の通信装置から送信される乱数情報を他方の通信装置が自身の暗号鍵を使用して暗号化した暗号化結果を前記一方の通信装置へ返信し、当該一方の通信装置では、自身が送信した前記乱数情報を自身の暗号鍵を使用して暗号化した暗号化結果と他方の通信装置から送られてきた暗号化結果との比較を通じて当該他方の通信装置の認証を行う通信システムにおいて、
前記2つの通信装置の双方に請求項1に記載のデータ変換装置が組み込まれてなる通信システム。
【請求項1】
4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換装置であって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めるデータ変換装置。
h(j)i=Ti[ai,j−ci]
ただし、
Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、
ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、
ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【請求項2】
4行4列の行列で表される128ビットの変換対象データai,jに、AES暗号方式におけるSubBytes、ShiftRows及びMixColumnsの各変換を順に施すことで得られる変換後データdjを一括して求めるデータ変換方法であって、
ShiftRowsを施すことにより同列となる変換対象データの8ビットの部分データai,j−ciを次式に基づき変換することにより32ビットの中間データh(j)iを求め、この求められた中間データh(j)iの排他的論理和をビット単位でとることにより前記変換後データdjを求めるデータ変換方法。
h(j)i=Ti[ai,j−ci]
ただし、
Tiは、3つのSubBytes変換s(x),2s(x),3s(x)のうちいずれか2つで表される8ビット入力32ビット出力のルックアップテーブル、
ai,jは、変換対象データにおけるi行j列目(i,j=0,1,2,3)の8ビットの部分データ、
ai,j−ciは、ShiftRowsを施すことによりi行j列目へ移動する変換対象データにおける8ビットの部分データ、である。
【請求項3】
2つの通信装置間で共通の暗号鍵を持ち合って、少なくとも一方の通信装置から送信される乱数情報を他方の通信装置が自身の暗号鍵を使用して暗号化した暗号化結果を前記一方の通信装置へ返信し、当該一方の通信装置では、自身が送信した前記乱数情報を自身の暗号鍵を使用して暗号化した暗号化結果と他方の通信装置から送られてきた暗号化結果との比較を通じて当該他方の通信装置の認証を行う通信システムにおいて、
前記2つの通信装置の双方に請求項1に記載のデータ変換装置が組み込まれてなる通信システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2009−276458(P2009−276458A)
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願番号】特願2008−126098(P2008−126098)
【出願日】平成20年5月13日(2008.5.13)
【出願人】(000003551)株式会社東海理化電機製作所 (3,198)
【Fターム(参考)】
【公開日】平成21年11月26日(2009.11.26)
【国際特許分類】
【出願日】平成20年5月13日(2008.5.13)
【出願人】(000003551)株式会社東海理化電機製作所 (3,198)
【Fターム(参考)】
[ Back to top ]