説明

認証装置および方法、並びに通信装置および方法

【課題】機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができるようにする。
【解決手段】データM1は、通信相手が発生した乱数Raのうちの16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1を除いた16バイト分のデータとされる。データM3は、自身が発生した乱数Rbとされる。復号により得られたデータM3が、自身が生成した乱数Rbと等しいと判定され、かつデータC1に対応して得られたデータM1と、データC4に対応して得られたデータM1が等しいと判定された場合、通信相手が正当な機器であると認証される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証装置および方法、並びに通信装置および方法に関し、特に、機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができる認証装置および方法、並びに通信装置および方法に関する。
【背景技術】
【0002】
従来、ICカードとリーダライタ間での暗号化メッセージの完全性を保証するためには、MAC(Message Authentication Code)などの方式が採用されていた。
【0003】
国際標準の相互認証方式(ISO/IEC9798−2)では、ICカードとリーダライタ間で送受信される認証メッセージに冗長情報を付加し、冗長情報の正当性を検証するなどして、認証メッセージの完全性を確保するなどの規定がなされている。ISO/IEC9798−2)では、冗長情報の例として、MACを用いる方式が記載されている。
【0004】
また、コンピューティングシステムにおいて、その次の動作においてそのコードが変わっていないことを保証するためにプログラムの完全性をチェックする方式も提案されている(例えば、特許文献1参照)。
【0005】
特許文献1の技術では、実行前にプログラムが修正されたか、あるいは改ざんされたかを決定するための公開鍵/秘密鍵などを使用し、完全性をチェックする。チェックの結果、プログラムが変わっていない場合には、そのプログラムは実行され、ブートプロセスの間、プログラムは実行制御が次のレベルに転送されることを許可する。チェックの結果、プログラムは修正されていた場合には、コンピューティングシステムはそのプログラムの実行を許可しない。
【0006】
【特許文献1】特表2008−537224号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、非接触ICカードとリーダライタ間で送受信されるメッセージの認証において、公開鍵/秘密鍵を用いた電子署名などが利用されることは稀である。非接触ICカードとリーダライタ間で行われる処理は、例えば、鉄道の改札の処理、コンビニエンスストアなどの小額の買い物の決済の処理などに適用されるため、極めて高速に実行されることを要するからである。
【0008】
そこで、上述したISO/IEC9798−2においても、ICカードとリーダライタ間で送受信される認証メッセージに冗長情報の生成に、MACを用いる方式の例が記載されている。この方式であれば、公開鍵/秘密鍵を用いた電子署名などを用いることなく、メッセージの完全性をチェックすることができる。
【0009】
しかしながら、MAC方式を採用する場合、例えば、ICカードやリーダライタなどに予め記憶されている共通鍵とは別に、MAC用の鍵を設ける必要がある。この場合、システムのセキュリティを確実なものとすべく、MAC用の鍵の管理や保存などを適切に行なわなければならない。
【0010】
このため、例えば、特にメッセージが短い場合、上記のようにMAC方式を採用した認証メッセージの完全性の確保の方式は、非効率的といわざるを得ない。
【0011】
本発明はこのような状況に鑑みてなされたものであり、機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができるようにするものである。
【課題を解決するための手段】
【0012】
本発明の第1の側面は、通信相手に送信された第1の乱数に対応して前記通信相手から送信されるデータを受信する受信手段と、前記データを分割することで得られる複数のブロック暗号化データを、CBCモードの暗号アルゴリズムに対応する復号方式で復号するCBC復号手段と、前記CBC復号手段の復号結果として得られる複数のブロック復号データのうちの1のブロック復号データが前記第1の乱数と等しいか否かを判定する第1の判定手段と、前記複数のブロック復号データのうちの第1のブロック復号データが、前記第1の判定手段により前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第2のブロック復号データと等しいか否かを判定する第2の判定手段と、前記第2の判定手段により、前記2つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証する認証手段とを備える認証装置である。
【0013】
前記通信相手から送信されるデータは、前記第1の乱数および前記通信相手が発生した第2の乱数を組み合わせてCBCモードで暗号化したブロック暗号化データとされ、前記CBC復号手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のブロック暗号化データを復号するようにすることができる。
【0014】
前記認証手段が前記通信相手を正当な機器であると認証した場合、前記複数のブロック復号データを組み合わせて得られる前記第2の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用するようにすることができる。
【0015】
前記第2の判定手段により、前記2つのブロック復号データが等しいと判定された場合、前記複数のブロック復号データのうちの第3のブロック復号データが、前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第4のブロック復号データをさらに得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第5のブロック復号データと等しいか否かを判定する第3の判定手段をさらに備え、前記認証手段は、前記第3の判定手段により、前記2つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証するようにすることができる。
【0016】
非接触ICカード機能を有する機器として構成される前記通信相手を認証するようにすることができる。
【0017】
本発明の第1の側面は、受信手段が、通信相手に送信された第1の乱数に対応して前記通信相手から送信されるデータを受信し、CBC復号手段が、前記データを分割することで得られる複数のブロック暗号化データを、CBCモードの暗号アルゴリズムに対応する復号方式で復号し、第1の判定手段が、前記復号結果として得られる複数のブロック復号データのうちの1のブロック復号データが前記第1の乱数と等しいか否かを判定し、第2の判定手段が、前記複数のブロック復号データのうちの第1のブロック復号データが、前記第1の判定手段により前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第2のブロック復号データと等しいか否かを判定し、認証手段が、前記2つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証するステップを含む認証方法である。
【0018】
本発明の第1の側面においては、通信相手に送信された第1の乱数に対応して前記通信相手から送信されるデータが受信され、前記データを分割することで得られる複数のブロック暗号化データが、CBCモードの暗号アルゴリズムに対応する復号方式で復号され、前記復号結果として得られる複数のブロック復号データのうちの1のブロック復号データが前記第1の乱数と等しいか否が判定され、前記複数のブロック復号データのうちの第1のブロック復号データが、前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第2のブロック復号データと等しいか否かが判定され、認証手段が、前記2つのブロック復号データが等しいと判定された場合、前記通信相手が正当な機器であると認証される。
【0019】
本発明の第2の側面は、通信相手から送信された第1の乱数を受信する受信手段と、第2の乱数を発生する発生手段と、前記第2の乱数を複数のデータに分割する分割手段と、前記第2の乱数、および前記第1の乱数から成るデータに、前記分割された複数の前記データのうち、第1のデータを、冗長データとして付加して処理対象データを生成する処理対象データ生成手段と、前記処理対象データを、複数のデータに分割してCBCモードで暗号化するCBC暗号化手段と、前記暗号化されたデータを、前記通信相手に送信する送信手段とを備える通信装置である。
【0020】
前記データは、前記通信相手によりCBCモードで復号され、前記CBC暗号化手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のデータを暗号化するようにすることができる。
【0021】
前記第2の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用するようにすることができる。
【0022】
非接触ICカード機能を有する機器として構成されるようにすることができる。
【0023】
本発明の第2の側面は、受信手段が、通信相手から送信された第1の乱数を受信し、発生手段が、第2の乱数を発生し、分割手段が、前記第2の乱数を複数のデータに分割し、処理対象データ生成手段が、前記第2の乱数、および前記第1の乱数から成るデータに、前記分割された複数の前記データのうち、第1のデータを、冗長データとして付加して処理対象データを生成し、CBC暗号化手段が、前記処理対象データを、複数のデータに分割してCBCモードで暗号化し、送信手段が、前記暗号化されたデータを、前記通信相手に送信するステップを含む通信方法である。
【0024】
本発明の第2の側面においては、通信相手から送信された第1の乱数が受信され、第2の乱数が発生され、前記第2の乱数が複数のデータに分割され、前記第2の乱数、および前記第1の乱数から成るデータに、前記分割された複数の前記データのうち、第1のデータを、冗長データとして付加して処理対象データが生成され、前記処理対象データが、複数のデータに分割されてCBCモードで暗号化され、前記暗号化されたデータが、前記通信相手に送信される。
【発明の効果】
【0025】
本発明によれば、機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができる。
【図面の簡単な説明】
【0026】
【図1】本発明の一実施の形態に係る情報処理システムの構成例を示す図である。
【図2】リーダライタの構成例を示すブロック図である。
【図3】非接触ICカードの構成例を示すブロック図である。
【図4】図1の機器Aと機器Bとの間で行われる相互認証の処理の流れを説明するアローチャートである。
【図5】図4を参照した相互認証処理における機器Aと機器Bの内部の処理を説明する図である。
【図6】AES−CBCモードの暗号化の処理を説明する図である。
【図7】冗長データRedの生成を説明する図である。
【図8】AES−CBCモードの復号の処理を説明する図である。
【図9】乱数RaのうちのデータC1に対応する部分が改竄された場合の影響を説明する図である。
【図10】データM1を冗長データとして用いる場合のAES−CBCモードの暗号化の処理を説明する図である。
【図11】データM1を冗長データとして用いる場合のAES−CBCモードの復号の処理を説明する図である。
【図12】Aut2送信処理の例を説明するフローチャートである。
【図13】機器認証処理の例を説明するフローチャートである。
【図14】データM1およびデータM2を冗長データとして用いる場合のAES−CBCモードの復号の処理を説明する図である。
【図15】データM1およびデータM2を冗長データとして用いる場合のAES−CBCモードの復号の処理を説明する図である。
【図16】パーソナルコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【0027】
以下、図面を参照して、本発明の実施の形態について説明する。
【0028】
図1は、本発明の一実施の形態に係る情報処理システムの構成例を示すブロック図である。同図に示されるように、情報処理システム1においては、機器Aと機器Bとが通信を行い、機器Aと機器Bとがお互いに認証し合う相互認証を行ったあと、トランザクション処理が行われる。
【0029】
機器Aは、例えば、非接触ICカード用のリーダライタなどの機器とされる。機器Bは、例えば、非接触ICカードなどの機器とされる。機器Aと機器Bは、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【0030】
図2は、機器A(リーダライタ)の内部構成例を示すブロック図である。同図に示されるリーダライタ11は、例えば、非接触ICカードに近接されることにより、非接触ICカードに記憶されたデータを読み出したり、更新したりする処理を実行するようになされている。リーダライタ11は、例えば、非接触ICカードを利用する改札機やPOSレジスタなどに組み込まれる構成としてもよいし、改札機やPOSレジスタなどに接続される構成としてもよい。
【0031】
制御部201は、CPU211、ROM212、RAM213、SCC(Serial Communication Controller)214、SPU(Signal Processing Unit)216、並びに、これらのCPU211乃至SPU216を相互に接続するバス215から構成されている。
【0032】
CPU211は、ROM212に格納されている制御プログラムをRAM213に展開し、例えば、非接触ICカードから送信されてきた応答データや、外部のプロセッサなどから供給されてきた制御信号に基づいて、各種の処理を実行する。例えば、CPU211は、非接触ICカードに送信するコマンドを生成し、それを、バス215を介してSPU216に出力したり、非接触ICカードから送信されてきたデータの認証処理などを行ったりする。
【0033】
SCC214は、バス200を介して接続される外部のプロセッサなどから供給されてきたデータを、バス215を介してCPU211に供給する。また、SCC214は、CPU211から、バス215を介して供給されてきたデータを、バス200を介して接続される外部のプロセッサなどに出力する。
【0034】
SPU216は、非接触ICカードからの応答データが復調部204から供給されてきたとき、そのデータに対して、例えば、BPSK復調(マンチェスターコードのデコード)などを施し、取得したデータをCPU211に供給する。また、SPU216は、非接触ICカードに送信するコマンドがバス215を介して供給されてきたとき、そのコマンドにBPSK(Binary Phase Shift Keying)変調(マンチェスターコードへのコーディング)を施し、取得したデータを変調部202に出力する。
【0035】
変調部202は、発振回路(OSC)203から供給される所定の周波数の搬送波を、SPU216より供給されるデータに基づいて、ASK(Amplitude Shift Keying)変調し、生成された変調波を、電磁波としてアンテナ205から出力する。一方、復調部204は、アンテナ205を介して取得した変調波(ASK変調波)を復調し、復調されたデータをSPU216に出力する。
【0036】
アンテナ205は、所定の電磁波を輻射し、それに対する負荷の変化に基づいて、非接触ICカードが近接されたか否かを検出する。そして、例えば、非接触ICカードが近接されたとき、アンテナ205は、非接触ICカードと各種のデータを送受信する。
【0037】
図3は、機器B(非接触ICカード)の内部構成例を示すブロック図である。同図に示される非接触ICカード21は、例えば、カード状の構成としてもよいし、携帯電話機などに組み込まれる構成としてもよい。
【0038】
非接触ICカードは、例えば、図に示すアンテナ(ループアンテナ)230およびコンデンサ231と、それ以外の構成が1チップに格納されたICから構成され、電磁誘導を利用してリーダライタなどと各種のデータを半二重通信するものであって、必ずしもカード状のものとして構成されるわけではない。
【0039】
CPU221は、ROM222に格納されている制御プログラムをRAM223に展開し、非接触ICカードの全体の動作を制御する。例えば、CPU221は、リーダライタから輻射されている電磁波がアンテナ230において受信されたとき、それに応じて、非接触ICカードに設定されているカード識別番号等を含むICカード情報をリーダライタに通知したり、リーダライタからの要求に応じて、トランザクション処理に必要となる情報をリーダライタに供給したりする。
【0040】
アンテナ230とコンデンサ231により構成されるLC回路は、近傍に配置されたリーダライタから輻射される所定の周波数の電磁波と共振する。インタフェース部229は、ASK復調部243において、アンテナ230を介して受信した変調波(ASK変調波)を包絡線検波して復調し、復調後のデータをBPSK(Binary Phase Shift Keying)復調部232に出力する。
【0041】
また、インタフェース部229は、アンテナ230において励起された交流磁界をASK復調部243により整流し、それを電圧レギュレータ241において安定化し、各部に直流電源として供給する。リーダライタから輻射される電磁波の電力は、非接触ICカードに必要な電力を賄う磁界を発生させるように調整されている。
【0042】
また、インタフェース部229の発振回路244はPLL(Phase Locked Loop)回路を内蔵し、受信信号のクロック周波数と同一の周波数のクロック信号を発生する。
【0043】
さらに、インタフェース部229は、所定の情報をリーダライタに送信する場合、BPSK変調部228から供給されるデータに対応して、例えば、所定のスイッチング素子(図示せず)をオン/オフさせるようになされている。そして、インタフェース部229は、スイッチング素子がオン状態であるときだけ、所定の負荷をアンテナ230に並列に接続させることにより、アンテナ230の負荷を変動させる。
【0044】
ASK変調部242は、アンテナ230の負荷の変動により、BPSK変調部228より供給されたBPSK変調波をASK変調し、その変調成分を、アンテナ230を介してリーダライタに送信する。
【0045】
BPSK復調部232は、ASK復調部243で復調されたデータがBPSK変調されている場合、図示せぬPLL回路から供給されるクロック信号に基づいて、そのデータの復調(マンチェスターコードのデコード)を行う。BPSK復調部232は、復調したデータをデータ受信部233に出力する。
【0046】
データ受信部233は、供給されてきたデータをCPU221に適宜出力する。CPU221はこのデータをRAM223またはEEPROM224に記憶させる。
【0047】
EEPROM224に記憶されたデータは、CPU221により読み出され、データ送信部227に供給される。BPSK変調部228は、データ送信部227から供給されてきたデータにBPSK変調(マンチェスターコードへのコーディング)を行い、それをASK変調部242に出力する。
【0048】
EEPROM224には、例えば、相互認証において必要となる情報、トランザクション処理において必要となる情報などが適宜記憶される。
【0049】
ここでは、機器Aを非接触ICカード用のリーダライタ、機器Bを非接触ICカードにより構成する例について説明したが、機器Aを接触型ICカード用のリーダライタ、機器Bを接触型ICカードにより構成するようにすることも勿論可能である。さらに、機器AがPOSレジスタ、機器BがICカード用のリーダライタとして構成されるようにしてもよい。あるいはまた、機器Aと機器Bとが、それぞれパーソナルコンピュータ、PDA(Personal Digital Assistants)、携帯電話機などとして構成される場合であっても、本発明を適用することが可能である。
【0050】
図4は、機器Aと機器Bとの間で行われる相互認証の処理の流れを説明するアローチャートである。
【0051】
ステップS11において、機器Aは、機器Bを認証するための認証メッセージのデータAut1を送信し、ステップS21において、機器Bによりこれが受信される。
【0052】
ステップS22において、機器Bは、機器Aから送信された認証メッセージに対する応答、および機器Bを認証するための認証メッセージを含むデータAut2を送信し、ステップS12で機器Aによりこれが受信される。
【0053】
ステップS13において、機器Aは、ステップS12で受信したデータAut2に基づいて、機器Bを認証する。認証に失敗した場合、処理はここで終了する。認証が成功した場合、処理は、ステップS14に進む。
【0054】
ステップS14において、機器Aは、機器Bから送信された認証メッセージに対する応答のデータAut3を機器Bに送信し、ステップS23において、機器Aによりこれが受信される。
【0055】
ステップS24において、機器Bは、ステップS23で受信したデータAut3に基づいて機器Aを認証し、ステップS25において認証結果を機器Aに送信する。そして、ステップS15において、機器Aによりこれが受信されることになる。
【0056】
ステップS13の機器Bの認証の処理、またはステップS23の機器Aの認証の処理は、それぞれ、AES(Advanced Encryption Standard)暗号アルゴリズムを用いた暗号化、復号の処理により行われるようになされている。
【0057】
本発明では、機器Aおよび機器BがそれぞれAES−CBC(Cipher Block Chaining)モードでの暗号化処理および復号処理を実行できるようになされているものとする。
【0058】
また、非接触ICカードとリーダライタ間で行われる処理は、例えば、鉄道の改札の処理、コンビニエンスストアなどの小額の買い物の決済の処理などに適用されるため、図4を参照して上述した処理は、極めて高速に実行されることを要する。
【0059】
さらに、図4の処理により相互認証が成功した場合、機器Aと機器Bとの間でのトランザクション処理などが実行されることになる。トランザクション処理は、例えば、ICカード内のデータを検証して更新することなどにより改札の処理を実行したり、買い物の代金を、電子マネーにより決済する処理を実行するなどのものとされる。
【0060】
なお、トランザクション処理における機器Aと機器Bとの間の通信は、例えば、トランザクション処理が実行される都度、機器Aと機器Bとの間で交換されるセッション鍵を用いて暗号化される。このようにすることで、情報処理システム1は、高度のセキュリティ性能を有するようになされている。
【0061】
図5は、図4を参照した相互認証処理における機器Aと機器Bの内部の処理を説明する図である。この例では、256ビット鍵のAES−CBCモードの暗号化処理を用いて相互認証処理を行う例について説明する。
【0062】
なお、AES−CBCモードの暗号化処理において、鍵長は必ずしも256ビットに限られるものではない。例えば、鍵長が短いほど、高速な処理が可能となるが、セキュリティ上の耐性が劣ることになる。また、鍵長が長いほど、セキュリティ上の耐性に優れることになるが、高速に処理を行うことが困難となる。非接触ICカードとリーダライタ間で行われる処理の高速性とセキュリティ上の耐性を考慮すると、AES−CBCモードの暗号化処理を256ビット長の鍵を用いて行うことが望ましいと考えられる。
【0063】
同図に示されるように、機器Aは、16バイトの乱数Rbを生成し、これをデータAut1として機器Bに送信する。なお、同図において、カッコ内に記された数値は、データのサイズ(バイト数)を表している。
【0064】
ここで送信されるデータAut1は、例えば、SSH(Secure Shell)などで用いられているチャレンジ/レスポンス方式の認証におけるチャレンジデータに対応するものとなる。すなわち、機器Aは、この後、機器Bが、チャレンジデータに対応して送信してくるレスポンスデータを確認することで、機器Bが正当な機器であるか否かを認証するのである。
【0065】
機器Bは、機器Aから送信された乱数Rbおよび機器B自身が生成した32バイトの乱数Raを組み合わせて、機器Aから送信されたチャレンジデータに対するレスポンスデータを生成する。なお、このレスポンスデータは、上述したように、機器Aが機器Bを認証するために用いられるとともに、機器Bが機器Aを正当な機器であるか否かを認証するためのチャレンジデータとしても用いられる。
【0066】
なお、後述する国際標準に適合させるべく、データAut2には、乱数Raおよび乱数Rbに加えて冗長データRedが付加されるようになされている。
【0067】
256ビット鍵のAES−CBCモードの暗号化処理を用いて相互認証処理を行う場合、乱数Raは32バイトのデータとされ、冗長データRedは、16バイトのデータとされる。
【0068】
なお、高速な処理を要するICカードとリーダライタ間の相互認証処理においては、相互認証を行うと同時に、通信路の暗号化に用いられるセッション鍵の交換を行なうことが一般的に行なわれている。例えば、相互認証処理におけるチャレンジデータとして、セッション鍵を送信するようにすれば、通信相手を認証することができるとともに、その後に用いるセッション鍵を、暗号化されて秘匿された状態で通信相手に渡すことができるからである。
【0069】
例えば、相互認証が成功し、トランザクション処理などが開始される際には、機器Bが生成する乱数Raが通信路のセッション鍵として用いられるようになされている。すなわち、いまの場合、機器Bが生成する乱数Raは、機器Bが機器Aを認証するためのチャレンジデータであると同時に、セッション鍵としても利用されるものである。
【0070】
機器Bは、乱数Ra、および乱数Rbからなるデータを、共通鍵Kabを用いて暗号化する。共通鍵Kabは、予め機器Aと機器Bのそれぞれが記憶している暗号鍵であって、256ビット(32バイト)のデータとされる。
【0071】
すなわち、機器Bは、暗号化の対象となるデータとして、上位32ビットを乱数Raとし、下位16ビットを乱数Rbとした48バイトのデータを生成する。そして、この48バイトのデータを後述するように、AES−CBCモードで暗号化して得られたデータを、上位48バイトとし、下位16バイトを冗長データRedとして64バイトのデータCiph1を生成するのである。
【0072】
図6は、AES−CBCモードの暗号化の処理を説明する図である。AES−CBCモードでは、16バイト単位にデータが暗号化されるようになされている。このため、暗号化の対象となるデータ(いまの場合、乱数Ra、および乱数Rbからなるデータ)が、それぞれ16バイトのデータM1乃至データM3に分割される。すなわち、データM1は、乱数Raのうちの16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1を除いた16バイト分のデータとされる。そして、データM3は、16バイトの乱数Rbとされる。
【0073】
また、図中に「ENC」で表された機能ブロックであって、暗号化処理部312、暗号化処理部322、および暗号化処理部332は、それぞれ共通鍵Kabを用いてデータを暗号化するようになされている。
【0074】
AES−CBCモードの暗号化の処理では、まず、データM1と初期ベクトルIVとの排他的論理和が演算器311により演算される。そして、演算器311の出力が、暗号化処理部312に供給され、暗号化された16バイトのデータC1が出力される。
【0075】
なお、初期ベクトルIVは、0ベクトルとされるようにしてもよい。
【0076】
データC1は、演算器321にも供給され、データM2とデータC1の排他的論理和が演算される。そして、演算器321の出力が、暗号化処理部322に供給され、暗号化された16バイトのデータC2が出力される。
【0077】
データC2は、演算器331にも供給され、データM3とデータC2の排他的論理和が演算される。そして、演算器331の出力が、暗号化処理部332に供給され、暗号化された16バイトのデータC3が出力される。
【0078】
このように、AES−CBCモードの暗号化の処理では、最初のブロックの暗号化処理により得られたデータが、次のブロックの暗号化処理により得られるデータに影響を与えるようになされている。すなわち、AES−CBCモードの暗号化の処理では、暗号化処理の結果が次々と伝搬していくのである。
【0079】
つまり、仮にデータM1が異なるデータとされた場合、異なるデータとしてのデータC1が出力されるだけでなく、データC2も異なるデータとなる。
【0080】
なお、冗長データRedは、暗号化されずに付加される。
【0081】
このようにして生成されたデータC1乃至データC3に、冗長データRedが付加されることで、64バイトのデータCiph1が生成される。データCiph1は、データAut2として機器Aに送信される。
【0082】
図7は、冗長データRedの生成を説明する図である。
【0083】
図4を参照して上述した相互認証の処理は、例えば、機器Aと機器Bのベンダーが異なる場合でも、適切に行われる必要がある。国際標準の相互認証方式(ISO/IEC9798−2)では、ICカードとリーダライタ間で送受信される認証メッセージに冗長データを付加し、冗長データの正当性を検証するなどして、認証メッセージの完全性を確保するなどの規定がなされている。ISO/IEC9798−2では、冗長データの例として、MAC(Message Authentication Code)を用いる方式が記載されている。図7では、冗長データRedがCBC−MAC方式により生成される場合の例について説明する。
【0084】
ここでは、AES−CBCモードの暗号アルゴリズムを用いたCBC−MAC方式の例について説明する。なお、CBC−MAC方式において暗号化処理を施す場合、図6を参照して上述した場合とは、異なる鍵を用いる必要がある。例えば、CBC−MACで用いる鍵Kmを生成し、予め機器Aと機器Bのそれぞれに記憶させておく必要がある。
【0085】
図7においても、図6の場合と同様に、16バイト単位にデータが暗号化されるようになされている。このため、暗号化の対象となるデータ(いまの場合、乱数Ra、および乱数Rbからなるデータ)が、それぞれ16バイトのデータM1乃至データM3に分割される。すなわち、データM1は、乱数Raのうちの16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1を除いた16バイト分のデータとされる。そして、データM3は、16バイトの乱数Rbとされる。
【0086】
また、図中に「ENC」で表された機能ブロックであって、暗号化処理部372、暗号化処理部382、および暗号化処理部392は、それぞれ鍵Kmを用いてデータを暗号化するようになされている。
【0087】
まず、データM1が、暗号化処理部372に供給され、暗号化された16バイトのデータC´1が出力される。
【0088】
データC´1は、演算器381にも供給され、データM2とデータC´1の排他的論理和が演算される。そして、演算器381の出力が、暗号化処理部382に供給され、暗号化された16バイトのデータC´2が出力される。
【0089】
データC´2は、演算器391にも供給され、データM3とデータC´2の排他的論理和が演算される。そして、演算器391の出力が、暗号化処理部392に供給され、暗号化された16バイトのデータtagが出力される。
【0090】
このデータtagが冗長データRedとして付加されることになる。
【0091】
図5に戻って、機器Aは、機器BからデータAut2として送信されたデータCiph1を受信して、復号する。
【0092】
図8は、AES−CBCモードの復号の処理を説明する図である。AES−CBCモードでは、16バイト単位にデータが復号されるようになされている。このため、復号の対象となるデータ(いまの場合、データCiph1)が、それぞれ16バイトのデータC1乃至データC3に分割される。
【0093】
また、図中に「DEC」で表された機能ブロックであって、復号処理部412、復号処理部422、および復号処理部432は、それぞれ共通鍵Kabを用いてデータを復号するようになされている。
【0094】
まず、データC1が復号処理部412に供給され、復号結果のデータと初期ベクトルIVとの排他的論理和が演算器411により演算される。演算器411の出力が、復号により得られたデータM1となる。
【0095】
データC2は、復号処理部422に供給され、復号結果のデータとデータC1との排他的論理和が演算器421により演算される。演算器421の出力が、復号により得られたデータM2となる。
【0096】
データC3は、復号処理部432に供給され、復号結果のデータとデータC2との排他的論理和が演算器431により演算される。演算器431の出力が、復号により得られたデータM3となる。
【0097】
このように、AES−CBCモードの復号の処理では、最初のブロックの復号処理の対象となるデータが、次のブロックの復号処理により得られるデータに影響を与えるようになされている。すなわち、AES−CBCモードの復号の処理では、復号処理の対象が、復号結果に次々と伝搬していくのである。
【0098】
つまり、仮にデータC1が異なるデータとされた場合、異なるデータとしてのデータM1が出力されるだけでなく、データM2も異なるデータとなる。
【0099】
上述したように、データM1は、乱数Raのうちの16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1を除いた16バイト分のデータとされる。そして、データM3は、16バイトの乱数Rbとされる。よって、機器Aは、データCiph1を復号して得られたデータM3が、自身が生成した乱数Rbと等しいか否かを判定することにより、機器Bが正当な機器であるか否かを認証することができる。
【0100】
例えば、機器Aと機器Bとの通信路上に、機器Bになりすました機器Cがあったとする。機器Cは、機器Bから送信されたデータAut2の一部を改竄し、通信路のセッション鍵を勝手に変更することを図ったものとする。
【0101】
ここで、AES−CBCモードの復号の処理では、16バイトのデータに分割された各ブロックのデータ(データC1乃至データC3)が、次のブロックの復号結果に伝搬するため、改竄の有無の検知に優れているといえる。
【0102】
しかし、図9に示されるように、乱数RaのうちのデータC1に対応する部分が改竄された場合、改竄を検知することができない。
【0103】
図9は、図8と同様に、AES−CBCモードの復号の処理を説明する図である。図9の場合、データC1に「×」印が付されており、データC1が改竄されたことを表している。すなわち、図9において、データC1は、本来のデータC1、すなわち、機器Bが生成したデータCiph1(データAut2)の最上位16バイトのデータではない。
【0104】
データAut2のうち、データC3に対応する部分が改竄された場合、当然にデータM3(すなわち乱数Rb)を復号できないので、改竄を検知できる。データAut2のうち、データC2に対応する部分が改竄された場合、データC2の改竄が、データC3の復号結果に伝搬するので、やはりデータM3を復号することができない。
【0105】
一方、データAut2のうち、データC1に対応する部分が改竄された場合、データC1の改竄が、データC2の復号結果に伝搬するので、データM2を復号することができない。しかし、データC1の改竄は、データC3の復号結果には伝搬しないので、データM3を復号することができる。この場合、機器Aは、乱数Rbのみを既知のデータとして通信相手が正当な機器であるか否かを認証するので、誤って、機器Cを正当な機器であると認証してしまうおそれがある。
【0106】
このため、上述した冗長データRedが用いられる。すなわち、復号により得られたデータM1乃至データM3に基づいて、機器Aにおいて、図7を参照して上述したように、CBC−MAC方式により冗長データRedを生成するのである。このようにすれば、例えば、データAut2のうち、データC1に対応する部分が改竄された場合であっても、機器Aでは、機器Bにより生成された冗長データRedとは異なるデータが得られることとなり、改竄を検知することができる。
【0107】
図5に戻って、機器AによるデータCiph1の復号が完了したところから、説明を続ける。なお、いまの場合、データの改竄などは行われず、機器Aは、機器Bを正当な機器と認証したこととする。
【0108】
機器Aは、データCiph1の復号の結果得られた32バイトの乱数Raと、16バイトの乱数Rbとを並べ替えて、48(=16+32)バイトのデータを生成する。そして、そのデータを暗号化する。ここでの暗号化処理は、やはりAES−CBCモードの暗号化処理であり、図6を参照して上述した場合と同様に行なわれるものであるため、詳細な説明は省略する。
【0109】
機器Aは、上述した48バイトのデータを暗号化して得られたデータCiph2を、データAut3として機器Bに送信する。ここで送信されるデータAut3は、機器Bが機器Aを正当な機器であるか否かを認証するためのレスポンスデータとして用いられる。
【0110】
機器Bは、機器AからデータAut3として送信されたデータCiph2を受信して、復号する。ここでの復号処理は、やはりAES−CBCモードの復号処理であり、図8を参照して上述した場合と同様に行なわれるものであるため、詳細な説明は省略する。
【0111】
機器Bは、データCiph2の復号の結果として、16バイトの乱数Rbと、32バイトの乱数Raを得て、自信が生成した乱数Raと等しいか否かを判定することにより、機器Aが正当な機器であるか否かを認証する。
【0112】
このように、機器Aと機器Bとの間の通信は、なりすましなどの攻撃にも耐えうるセキュリティ性能を発揮できるようになされている。
【0113】
しかしながら、上述したように、非接触ICカードとリーダライタ間で行われる相互認証処理は、極めて高速に実行されることを要する。上述したCBC−MAC方式により生成される冗長データRedは、情報処理システム1のセキュリティ性能を高めるために有用であるものの、機器Aと機器Bのそれぞれに演算負荷を課すものとなる。
【0114】
このため、CBC−MAC方式により生成される冗長データRedに代えて、別の冗長データを簡単に生成することができれば、非接触ICカードとリーダライタ間で行われる相互認証処理において、極めて有利な効果を発揮するものとなる。
【0115】
そこで、本発明では、CBC−MAC方式により生成される冗長データRedに代えて、別の冗長データを簡単に生成することができるようにする。本発明では、冗長データRedに代えて、乱数Raの一部である16バイトのデータ、すなわち、データM1を冗長データとして用いることとする。なお、データM1は、32バイトの乱数Raのうちの上位16バイト分のデータとされる。
【0116】
本発明においては、機器Bが、乱数Ra、乱数Rbおよび冗長データとして付加されたデータM1からなるデータを、共通鍵Kabを用いて暗号化することで64バイトのデータCiph1が生成される。すなわち、最上位32バイトが乱数Ra、その次の16バイトが乱数Rb、最下位16バイトがデータM1として構成される64バイトのデータがAES−CBCモードで暗号化されてデータCiph1が生成される。
【0117】
いまの場合、AES−CBCモードの暗号化の処理は、図6に替えて、図10のように行なわれることになる。図10は、データM1を冗長データとして用いる場合のAES−CBCモードの暗号化の処理を説明する図である。上述したように、AES−CBCモードでは、16バイト単位にデータが暗号化されるようになされている。このため、暗号化の対象となるデータが、それぞれ16バイトのデータM1乃至データM3、および冗長データとして付加されたデータM1に分割される。すなわち、データM1は、乱数Raのうちの上位16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1を除いた16バイト分のデータとされる。そして、データM3は、16バイトの乱数Rbとされる。
【0118】
また、図中に「ENC」で表された機能ブロックであって、暗号化処理部312、暗号化処理部322、暗号化処理部332、および暗号化処理部342は、それぞれ共通鍵Kabを用いてデータを暗号化するようになされている。
【0119】
AES−CBCモードの暗号化の処理では、まず、データM1と初期ベクトルIVとの排他的論理和が演算器311により演算される。そして、演算器311の出力が、暗号化処理部312に供給され、暗号化された16バイトのデータC1が出力される。
【0120】
データC1は、演算器321にも供給され、データM2とデータC1の排他的論理和が演算される。そして、演算器321の出力が、暗号化処理部322に供給され、暗号化された16バイトのデータC2が出力される。
【0121】
データC2は、演算器331にも供給され、データM3とデータC2の排他的論理和が演算される。そして、演算器331の出力が、暗号化処理部332に供給され、暗号化された16バイトのデータC3が出力される。
【0122】
データC3は、演算器341にも供給され、データM1とデータC3の排他的論理和が演算される。そして、演算器341の出力が、暗号化処理部342に供給され、暗号化された16バイトのデータC4が出力される。
【0123】
このようにして生成されたデータC1乃至データC4によって、64バイトのデータCiph1が生成される。データCiph1は、データAut2として機器Aに送信される。
【0124】
機器Aは、機器BからデータAut2として送信されたデータCiph1を受信して、復号する。
【0125】
いまの場合、機器AにおけるAES−CBCモードの復号の処理は、図8に替えて、図11のように行なわれることになる。図11は、図8と同様に、AES−CBCモードの復号の処理を説明するものであって、データM1を冗長データとして用いる場合のAES−CBCモードの復号の処理を説明する図である。上述したように、AES−CBCモードでは、16バイト単位にデータが復号されるようになされている。このため、復号の対象となるデータ(いまの場合、データCiph1)が、それぞれ16バイトのデータC1乃至C4に分割される。
【0126】
また、図中に「DEC」で表された機能ブロックであって、復号処理部412、復号処理部422、復号処理部432、および復号処理部442は、それぞれ共通鍵Kabを用いてデータを復号するようになされている。
【0127】
図11の場合、データC1に「×」印が付されており、データC1が改竄されたことを表している。つまり、図11において、データC1は、本来のデータC1、すなわち、機器Bが生成したデータCiph1(データAut2)の最上位16バイトのデータではない。
【0128】
まず、データC1が復号処理部412に供給され、復号結果のデータと初期ベクトルIVとの排他的論理和が演算器411により演算される。演算器411の出力が、復号により得られたデータM1となる。
【0129】
データC2は、復号処理部422に供給され、復号結果のデータとデータC1との排他的論理和が演算器421により演算される。演算器421の出力が、復号により得られたデータM2となる。
【0130】
データC3は、復号処理部432に供給され、復号結果のデータとデータC2との排他的論理和が演算器431により演算される。演算器431の出力が、復号により得られたデータM3となる。
【0131】
データC4は、復号処理部442に供給され、復号結果のデータとデータC3との排他的論理和が演算器441により演算される。演算器441の出力が、復号により得られたデータM1となる。
【0132】
上述したように、データM1は、乱数Raのうちの16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1を除いた16バイト分のデータとされる。そして、データM3は、16バイトの乱数Rbとされる。よって、機器Aは、データCiph1を復号して得られたデータM3が、自身が生成した乱数Rbと等しいか否かを判定することにより、機器Bが正当な機器であるか否かを認証することができる。
【0133】
例えば、機器Aと機器Bとの通信路上に、機器Bになりすました機器Cがあったとする。機器Cは、機器Bから送信されたデータAut2の一部を改竄し、通信路のセッション鍵を勝手に変更することを図ったものとする。
【0134】
図11の例の場合、データAut2のうちのどの部分が改竄されたとしても、改竄を検知することができる。特に、図9を参照して上述した場合と異なり、データC1の改竄も検知することができるようになされている。
【0135】
すなわち、データAut2のうち、データC3に対応する部分が改竄された場合、当然にデータM3(すなわち乱数Rb)を復号できないので、改竄を検知できる。データAut2のうち、データC2に対応する部分が改竄された場合、データC2の改竄が、データC3の復号結果に伝搬するので、やはりデータM3を復号することができない。
【0136】
よって、データAut2のうち、データC3またはデータC4に対応する部分が改竄された場合、機器Aは改竄を検知できる。
【0137】
また、データAut2のうち、データC1に対応する部分が改竄された場合、データC1の改竄が、データC2の復号結果に伝搬するので、データM2を復号することができないが、データC3の復号結果には伝搬しないので、データM3を復号することができる。ここで、データM3は、乱数Rbと等しいものとなる。
【0138】
本発明において、機器Aは、データCiph1を復号して得られたデータM3が、自身が生成した乱数Rbと等しいと判定された場合、データC1を復号して得られたデータM1と、データC4を復号して得られたデータM1とが等しいか否かをさらに判定する。そして、データC1を復号して得られたデータM1と、データC4を復号して得られたデータM1とが等しいと判定されたとき、機器Bを正当な機器であると認証するようになされている。
【0139】
データAut2のうち、データC1に対応する部分が改竄された場合、データC1を復号して得られたデータM1と、データC4を復号して得られたデータM1とが異なるものとなる。換言すれば、データC1に対応する部分が改竄された場合、演算器411から出力されるデータは、データM1とはならないのである。
【0140】
一方、データC4は、復号処理部442に供給され、復号結果のデータとデータC3との排他的論理和が演算器441により演算される。データC3は改竄されていないので、データC4を復号して得られたデータM1は、本来のデータM1(乱数Raのうちの16バイト分のデータ)となる。
【0141】
また、データAut2のうち、データC4に対応する部分が改竄された場合も、データC1を復号して得られたデータM1と、データC4を復号して得られたデータM1とが異なるものとなる。
【0142】
なお、データAut2のうち、データC1に対応する部分とデータC4に対応する部分とが同時に改竄されることも考えられる。しかし、データC1を復号して得られたデータM1と、データC4を復号して得られたデータM1とが等しくなるように、データC1に対応する部分とデータC4に対応する部分とが同時に改竄される可能性は極めて低い。
【0143】
このように、図11の図中最も左側のデータM1と最も右側のデータM1とを比較することにより、データの改竄を確実に検知できるようになるのである。すなわち、データAut2のうちのどの部分が改竄されたとしても、改竄を検知することができる。
【0144】
次に、図12のフローチャートを参照して、機器BによるAut2送信処理の例について説明する。なお、図12のフローチャートは、例えば、図4におけるステップS22とステップS22の処理を詳細に説明するものとなる。ここでは、機器Aが図2のリーダライタに対応するものとし、機器Bが図3の非接触ICカードに対応するものとして説明する。
【0145】
ステップS101において、機器BのCPU221(図3)は、機器Aから送信されてきたデータAut1を受信する。
【0146】
ステップS102において、CPU221は、乱数Raを発生(生成)する。なお、上述したように、乱数Raは、トランザクション処理において、通信路を暗号化するためのセッション鍵としても用いられる。生成された乱数Raは、例えば、RAM223、EEPROM224などに記憶される。
【0147】
ステップS103において、CPU221は、乱数Raを16バイトのデータに分割する。すなわち、図10のデータM1とデータM2に分割する。
【0148】
ステップS104において、CPU221は、乱数Ra、およびステップS101の処理でデータAut1として得られた乱数Rbに、データM1を冗長データとして付加する。これにより、図10のデータM1乃至データM3、およびデータM1から成るデータが得られたことになる。
【0149】
ステップS105において、CPU221は、ステップS104の処理の結果得られたデータを、AES−CBCモードで暗号化する。このとき、図10を参照して上述したように、暗号化が行なわれ、暗号化されたデータとして、データC1乃至データC4が得られることになる。
【0150】
ステップS106において、CPU221は、ステップS105の処理結果として得られた64バイトのデータ(データCiph1)を得る。すなわち、データC1乃至データC4からなる64バイトのデータを得るのである。
【0151】
ステップS107において、CPU221は、ステップS106の処理により得られたデータを、データAut2として機器Aに送信する。
【0152】
このようにして、Aut2送信処理が実行される。
【0153】
次に、図13のフローチャートを参照して、機器Aによる機器認証処理の例について説明する。なお、図13のフローチャートは、例えば、図4におけるステップS12とステップS13の処理を詳細に説明するものとなる。ここでは、機器Aが図2のリーダライタに対応するものとし、機器Bが図3の非接触ICカードに対応するものとして説明する。
【0154】
ステップS121において、機器AのCPU211(図2)は、機器Aから送信されてきたデータAut1を受信する。
【0155】
ステップS122において、CPU211は、ステップS121で受信したデータを、16バイトのデータに分割する。これにより、例えば、図11を参照して上述した、それぞれ16バイトのデータC1乃至データC4が得られることになる。
【0156】
ステップS123において、CPU211は、ステップS122の処理で分割したデータを、AES−CBCモードで復号する。このとき、例えば、図11を参照して上述したように復号が行われる。そして、データC1に対応してデータM1が出力され、データC2に対応してデータM2が出力され、データC3に対応してデータM3が出力され、データC4に対応してデータM1が出力されることになる。
【0157】
ステップS124において、CPU211は、データM3と乱数Rbとを比較する。なお、乱数Rbは、RAM213に格納されているものとする。
【0158】
ステップS125において、CPU211は、ステップS124の比較の結果、データM3と乱数Rbとが一致したか否かを判定する。ステップS125において、データM3と乱数Rbとが一致したと判定された場合、処理は、ステップS126に進む。
【0159】
ステップS126において、CPU211は、ステップS123の処理結果として得られた最初のデータM1と最後のデータM1とを比較する。すなわち、図11の図中最も左側のデータM1と最も右側のデータM1とが比較される。
【0160】
換言すれば、ステップS126では、AES−CBCモードで復号の結果得られた複数のデータのうちの最初のデータが、乱数Rbと等しいと判定されたデータ(いまの場合、データM3)の次のデータと等しいか否かが判定されるのである。
【0161】
ステップS127において、CPU211は、ステップS126の比較の結果、最初のデータM1と最後のデータM1とが一致したか否かを判定する。ステップS127において、最初のデータM1と最後のデータM1とが一致したと判定された場合、処理は、ステップS128に進む。
【0162】
ステップS128において、CPU211は、認証フラグをONに設定する。認証フラグは、通信相手の機器を認証したか否かを表す情報とされる。例えば、図4のステップS14において、認証フラグがONであるときにのみ、データAut3が機器Bに送信され、認証フラグがOFFであるときは、処理が中止されるようになされている。
【0163】
すなわち、いまの場合、機器Bの認証に成功したことになる。
【0164】
一方、ステップS125において、データM3と乱数Rbとが一致しなかったと判定された場合、または、ステップS127において、最初のデータM1と最後のデータM1とが一致しなかったと判定された場合、処理は、ステップS129に進む。
【0165】
ステップS129において、CPU211は、認証フラグをOFFに設定する。
【0166】
すなわち、いまの場合、機器Bの認証に失敗したことになる。
【0167】
このようにして、機器認証処理が実行される。
【0168】
上述したように、非接触ICカードとリーダライタ間で行われる相互認証処理は、極めて高速に実行されることを要する。CBC−MAC方式により生成される冗長データRedは、情報処理システム1のセキュリティ性能を高めるために有用であるものの、機器Aと機器Bのそれぞれに多大な演算負荷を課すものとなる。
【0169】
例えば、図6に示される暗号化処理部312、暗号化処理部322、および暗号化処理部332は、実際には、CPU221で実行されるソフトウェアの機能ブロックとして構成されるものである。暗号化処理部312、暗号化処理部322、および暗号化処理部332に暗号化の処理を実行させるためには、鍵をロードする必要がある。
【0170】
しかしながら、冗長データRedを生成するCBC−MAC方式の暗号化において用いられる鍵Kmと、データM1乃至データM3を暗号化してデータC1乃至データC3を得るための暗号化において用いられる共通鍵Kabは異なるものとしなければならない。
【0171】
従って、CBC−MAC方式により生成される冗長データRedを用いる場合、CPU221で実行されるソフトウェアの処理において、共通鍵Kabと鍵Kmとをそれぞれ1回ずつロードしなければならないこととなる。また、鍵のロードに伴って、初期化設定なども行なわれることになるので、処理の高速化を考慮すると、鍵のロードに費やされる時間は無視できないものとなる。
【0172】
これに対して、本発明では、冗長データRedに代えて、乱数Raの一部である16バイトのデータを用いることにしたので、冗長データRedを生成するために、鍵Kmをロードする必要がない。すなわち、本発明によれば、鍵のロード回数を削減して、処理負荷を軽減し、処理時間を短縮することができるのである。
【0173】
また、CBC−MAC方式により生成される冗長データRedを用いる場合、冗長データRedを生成するために、16バイトのデータを3回暗号化する必要があり、さらに、データC1乃至データC3を得るために、16バイトのデータを3回暗号化する必要がある。すなわち、CBC−MAC方式により生成される冗長データRedを用いる場合、データAut2の送信を行なうために、16バイトのデータの暗号化の処理を、6回実行する必要がある。
【0174】
これに対して、本発明では、冗長データを、CBC−MAC方式により生成する必要がないので、データC1乃至データC4を得るために、16バイトのデータを4回暗号化するだけで足りる。すなわち、本発明によれば、暗号化の処理回数を削減して、処理負荷を軽減し、処理時間を短縮することができるのである。
【0175】
また、例えば、国際標準において、共通鍵Kabに予め決められた演算を施すことなどにより鍵Kmを生成することで、鍵管理の負担を軽減することも記載されている。しかしながら、このようにすると、何らかの原因で、上記の予め決められた演算が外部に漏洩した場合、共通鍵Kabまたは鍵Kmの推測が、かえって容易になってしまうおそれがある。
【0176】
このため、望ましくは、共通鍵Kabと鍵Kmを別々に生成して、予め機器Aと機器Bに記憶させておく必要がある。しかしながら、極めて厳重な管理を要する暗号アルゴリズムの鍵を、2種類以上記憶させることは、そもそも記憶容量や利用可能な電力量が制限されている非接触ICカードなどにとって容易なことではない。
【0177】
これに対して、本発明では、冗長データRedに代えて、乱数Raの一部である16バイトのデータを用いることにしたので、冗長データRedを生成するために、鍵Kmを記憶する必要がない。すなわち、本発明によれば、鍵の管理負担を軽減し、非接触ICカードなどのリソースを有効に活用することができるのである。
【0178】
さらに、本発明の方式は、ICカードとリーダライタ間で送受信される認証メッセージに冗長データを付加し、冗長データの正当性を検証して認証メッセージの完全性を確保するものである。よって、本発明の方式は、国際標準の相互認証方式(ISO/IEC9798−2)に適合するものとなる。
【0179】
従って、本発明を適用すれば、例えば、機器Aと機器Bのベンダーが異なる場合でも、国際標準に適合する相互認証を適切に行うことが可能となる。
【0180】
なお、ここでは、主に、ICカードとリーダライタ間で送受信される認証メッセージを例として説明しているが、上述したように、本発明は、例えば、リーダライタとPOSレジスタなどの機器との間での認証にも適用することが可能である。すなわち、本発明は、リーダライタとコントローラ間の処理にも適用することができるものである。
【0181】
以上においては、主に256ビット鍵のAES−CBCモードの暗号化処理を用いて相互認証処理を行う例について説明したが、これは、相互認証処理の後のトランザクション処理においても256ビット長の鍵を用いて通信路を暗号化することが多いからである。すなわち、非接触ICカードとリーダライタ間で行われる処理の高速性とセキュリティ上の耐性を考慮すると、機器Bが生成する乱数Raのデータ長は256ビット(=32バイト)であることが多いと考えられるからである。
【0182】
しかしながら、仮に鍵長が長くなった場合であっても、本発明を適用することが可能である。例えば、384ビット鍵のAES−CBCモードの暗号化処理を用いて相互認証処理を行う場合、機器Bが生成する乱数Raのデータ長は384ビット(=48バイト)の場合を考える。この場合、機器Bは、48バイトの乱数Raを、それぞれ16バイトのデータM1乃至データM3に分割し、16バイトの乱数RbをデータM4とし、冗長データとしてデータM1およびデータM2を付加する。そして、機器Bは、データM1乃至データM4に、データM1およびデータM2が付加されたデータを暗号化して、96バイトのデータCiph1を生成し、これをデータAut2として機器Aに送信する。
【0183】
この場合の機器AにおけるAES−CBCモードの復号の処理は、図14と図15に示されるように行なわれることになる。図14と図15は、機器Bが48バイトの乱数Raを生成する場合であって、データM1およびデータM2を冗長データとして用いる場合のAES−CBCモードの復号の処理を説明する図である。上述したように、AES−CBCモードでは、16バイト単位にデータが復号されるようになされている。このため、復号の対象となるデータ(いまの場合、データCiph1)が、それぞれ16バイトのデータC1乃至データC6に分割される。
【0184】
また、復号処理部412、復号処理部422、復号処理部432、復号処理部442、復号処理部452、および復号処理部462は、それぞれ共通鍵Kabを用いてデータを復号するようになされている。
【0185】
まず、データC1が復号処理部412に供給され、復号結果のデータと初期ベクトルIVとの排他的論理和が演算器411により演算される。演算器411の出力が、復号により得られたデータM1となる。
【0186】
データC2は、復号処理部422に供給され、復号結果のデータとデータC1との排他的論理和が演算器421により演算される。演算器421の出力が、復号により得られたデータM2となる。
【0187】
データC3は、復号処理部432に供給され、復号結果のデータとデータC2との排他的論理和が演算器431により演算される。演算器431の出力が、復号により得られたデータM3となる。
【0188】
データC4は、復号処理部442に供給され、復号結果のデータとデータC3との排他的論理和が演算器441により演算される。演算器441の出力が、復号により得られたデータM4となる。
【0189】
データC5は、復号処理部452に供給され、復号結果のデータとデータC4との排他的論理和が演算器451により演算される。演算器451の出力が、復号により得られたデータM1となる。
【0190】
データC6は、復号処理部462に供給され、復号結果のデータとデータC5との排他的論理和が演算器461により演算される。演算器461の出力が、復号により得られたデータM2となる。
【0191】
上述したように、データM1は、乱数Raのうちの最上位16バイト分のデータとされ、データM2は、乱数RaのうちのデータM1に続く16バイト分のデータとされ、データM3は、乱数RaのうちのデータM1とデータM2を除く16バイト分のデータとされる。そして、データM4は、16バイトの乱数Rbとされる。よって、機器Aは、データCiph1を復号して得られたデータM4が、自身が生成した乱数Rbと等しいか否かを判定することにより、機器Bが正当な機器であるか否かを認証することができる。
【0192】
例えば、機器Aと機器Bとの通信路上に、機器Bになりすました機器Cがあったとする。機器Cは、機器Bから送信されたデータAut2の一部を改竄し、通信路のセッション鍵を勝手に変更することを図ったものとする。
【0193】
図14と図15の例の場合もやはり、データAut2のうちのどの部分が改竄されたとしても、改竄を検知することができる。いまの場合、機器Aは、データCiph1を復号して得られたデータM4が、自身が生成した乱数Rbと等しいと判定された場合、データC1を復号して得られたデータM1と、データC5を復号して得られたデータM1とが等しいか否かをさらに判定する。また、データC2を復号して得られたデータM2と、データC6を復号して得られたデータM2とが等しいか否かをさらに判定する。そして、データC1の復号、データC5の復号によるデータM1が等しいと判定され、かつ、データC2の復号、データC6の復号によるデータM2とが等しいと判定された場合、機器Bを正当な機器であると認証する。
【0194】
なお、図14の場合、データC1に「×」印が付されており、データC1が改竄されたことを表している。すなわち、図14において、データC1は、本来のデータC1、すなわち、機器Bが生成したデータCiph1(データAut2)の最上位16バイトのデータではない。
【0195】
また、図15の場合、データC2に「×」印が付されており、データC2が改竄されたことを表している。すなわち、図15において、データC2は、本来のデータC2、すなわち、機器Bが生成したデータCiph1(データAut2)の最上位16バイトの次の16バイト分のデータではない。
【0196】
データAut2のうち、データC4に対応する部分が改竄された場合、当然にデータM4(すなわち乱数Rb)を復号できないので、改竄を検知できる。データAut2のうち、データC3に対応する部分が改竄された場合、データC3の改竄が、データC4の復号結果に伝搬するので、やはりデータM4を復号することができない。
【0197】
よって、データAut2のうち、データC3またはデータC4に対応する部分が改竄された場合、機器Aは改竄を検知できる。
【0198】
図14に示されるように、データAut2のうち、データC1に対応する部分が改竄された場合、データC1の改竄が、データC2の復号結果に伝搬するので、データM2を復号することができない。しかし、データC3、データC4の復号結果には伝搬しないので、データM3とデータM4を復号することができる。ここで、データM4は、乱数Rbと等しいものとなる。
【0199】
データAut2のうち、データC1に対応する部分が改竄された場合、データC1を復号して得られたデータM1と、データC5を復号して得られたデータM1とが異なるものとなる。換言すれば、データC1に対応する部分が改竄された場合、演算器411から出力されるデータは、データM1とはならないのである。
【0200】
一方、データC5は、復号処理部442に供給され、復号結果のデータとデータC4との排他的論理和が演算器441により演算される。データC4は改竄されていないので、データC5を復号して得られたデータM1は、本来のデータM1(乱数Raのうちの最上位16バイト分のデータ)となる。
【0201】
また、データAut2のうち、データC5に対応する部分が改竄された場合も、データC1を復号して得られたデータM1と、データC5を復号して得られたデータM1とが異なるものとなる。
【0202】
なお、データAut2のうち、データC1に対応する部分とデータC5に対応する部分とが同時に改竄されることも考えられる。しかし、データC1を復号して得られたデータM1と、データC5を復号して得られたデータM1とが等しくなるように、データC1に対応する部分とデータC5に対応する部分とが同時に改竄される可能性は極めて低い。
【0203】
また、図15に示されるように、データAut2のうち、データC2に対応する部分が改竄された場合、データC2の改竄が、データC3の復号結果に伝搬するので、データM3を復号することができない。しかし、データC4の復号結果には伝搬しないので、データM4を復号することができる。ここで、データM4は、乱数Rbと等しいものとなる。
【0204】
データAut2のうち、データC2に対応する部分が改竄された場合、データC2を復号して得られたデータM2と、データC6を復号して得られたデータM2とが異なるものとなる。換言すれば、データC2に対応する部分が改竄された場合、演算器421から出力されるデータは、データM2とはならないのである。
【0205】
一方、データC6は、復号処理部462に供給され、復号結果のデータとデータC5との排他的論理和が演算器461により演算される。データC5は改竄されていないので、データC6を復号して得られたデータM2は、本来のデータM2(乱数RaのうちのデータM1に続く16バイト分のデータ)となる。
【0206】
また、データAut2のうち、データC6に対応する部分が改竄された場合も、データC2を復号して得られたデータM2と、データC6を復号して得られたデータM2とが異なるものとなる。
【0207】
なお、データAut2のうち、データC2に対応する部分とデータC6に対応する部分とが同時に改竄されることも考えられる。しかし、データC2を復号して得られたデータM2と、データC6を復号して得られたデータM2とが等しくなるように、データC2に対応する部分とデータC6に対応する部分とが同時に改竄される可能性は極めて低い。
【0208】
さらに、データC1、データC2、データC5、およびデータC6に対応する部分が同時に改竄されることも考えられる。しかし、復号により得られた最初のデータM1と最後のデータM1とが等しくなり、かつ最初のデータM2と最後のデータM2とが等しくなるように、上述の部分が同時に改竄される可能性は極めて低い。
【0209】
すなわち、機器Bが48バイトの乱数Raを生成する場合、機器Aは、データCiph1を復号して得られたデータM4が、自身が生成した乱数Rbと等しいか否かを判定された場合、さらに次の判定を行なうようにすればよい。すなわち、データC1を復号して得られたデータM1(最初のデータM1)と、データC5を復号して得られたデータM1(最後のデータM1)とが等しいか否かをさらに判定する。また、データC2を復号して得られたデータM2(最初のデータM2)と、データC6を復号して得られたデータM2(最後のデータM2)とが等しいか否かをさらに判定する。そして、最初のデータM1と最後のデータM1が等しいと判定され、かつ最初のデータM2と最後のデータM2が等しいと判定されたとき、機器Bを正当な機器であると認証するようにすればよい。
【0210】
このようにすることで、機器Bが48バイトの乱数Raを生成する場合であっても、やはり、データの改竄を確実に検知できるようになるのである。すなわち、データAut2のうちのどの部分が改竄されたとしても、改竄を検知することができるのである。
【0211】
なお、機器Bが48バイト(=128ビット)の乱数Raを生成する場合は、冗長データを付加しなくとも、改竄を検知することは可能である。すなわち、この場合、機器Aで復号されるデータは、16バイトのデータC1とデータC2のみとなるので、いずれか一方が改竄されれば、復号により乱数Rb(いまの場合データM2)を得ることはできないからである。
【0212】
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータにネットワークや記録媒体からインストールされる。また、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば図16に示されるような汎用のパーソナルコンピュータ700などに、ネットワークや記録媒体からインストールされる。
【0213】
図16において、CPU(Central Processing Unit)701は、ROM(Read Only Memory)702に記憶されているプログラム、または記憶部708からRAM(Random Access Memory)703にロードされたプログラムに従って各種の処理を実行する。RAM703にはまた、CPU701が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0214】
CPU701、ROM702、およびRAM703は、バス704を介して相互に接続されている。このバス704にはまた、入出力インタフェース705も接続されている。
【0215】
入出力インタフェース705には、キーボード、マウスなどよりなる入力部706、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部707が接続されている。また、入出力インタフェース705には、ハードディスクなどより構成される記憶部708、モデム、LANカードなどのネットワークインタフェースカードなどより構成される通信部709が接続されている。通信部709は、インターネットを含むネットワークを介しての通信処理を行う。
【0216】
入出力インタフェース705にはまた、必要に応じてドライブ710が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア711が適宜装着されている。そして、それらのリムーバブルメディアから読み出されたコンピュータプログラムが、必要に応じて記憶部708にインストールされる。
【0217】
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、インターネットなどのネットワークや、リムーバブルメディア711などからなる記録媒体からインストールされる。
【0218】
なお、この記録媒体は、図16に示される、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フロッピディスク(登録商標)を含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア711により構成されるものだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM702や、記憶部708に含まれるハードディスクなどで構成されるものも含む。
【0219】
なお、本明細書において上述した一連の処理は、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0220】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【0221】
1 情報処理システム, 11 リーダライタ, 21 非接触ICカード, 200 バス, 201 制御部,202 変調部, 203 発振回路, 204 復調部, 205 アンテナ, 211 CPU, 212 ROM, 213 RAM, 221 CPU, 222 ROM, 223 RAM, 224 EEPROM, 229 インタフェース部, 230 アンテナ

【特許請求の範囲】
【請求項1】
通信相手に送信された第1の乱数に対応して前記通信相手から送信されるデータを受信する受信手段と、
前記データを分割することで得られる複数のブロック暗号化データを、CBCモードの暗号アルゴリズムに対応する復号方式で復号するCBC復号手段と、
前記CBC復号手段の復号結果として得られる複数のブロック復号データのうちの1のブロック復号データが前記第1の乱数と等しいか否かを判定する第1の判定手段と、
前記複数のブロック復号データのうちの第1のブロック復号データが、前記第1の判定手段により前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第2のブロック復号データと等しいか否かを判定する第2の判定手段と、
前記第2の判定手段により、前記2つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証する認証手段と
を備える認証装置。
【請求項2】
前記通信相手から送信されるデータは、前記第1の乱数および前記通信相手が発生した第2の乱数を組み合わせてCBCモードで暗号化したブロック暗号化データとされ、
前記CBC復号手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のブロック暗号化データを復号する
請求項1に記載の認証装置。
【請求項3】
前記認証手段が前記通信相手を正当な機器であると認証した場合、
前記複数のブロック復号データを組み合わせて得られる前記第2の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用する
請求項2に記載の認証装置。
【請求項4】
前記第2の判定手段により、前記2つのブロック復号データが等しいと判定された場合、
前記複数のブロック復号データのうちの第3のブロック復号データが、前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第4のブロック復号データをさらに得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第5のブロック復号データと等しいか否かを判定する第3の判定手段をさらに備え、
前記認証手段は、前記第3の判定手段により、前記2つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証する
請求項1に記載の認証装置。
【請求項5】
非接触ICカード機能を有する機器として構成される前記通信相手を認証する
請求項1に記載の認証装置。
【請求項6】
受信手段が、通信相手に送信された第1の乱数に対応して前記通信相手から送信されるデータを受信し、
CBC復号手段が、前記データを分割することで得られる複数のブロック暗号化データを、CBCモードの暗号アルゴリズムに対応する復号方式で復号し、
第1の判定手段が、前記復号結果として得られる複数のブロック復号データのうちの1のブロック復号データが前記第1の乱数と等しいか否かを判定し、
第2の判定手段が、前記複数のブロック復号データのうちの第1のブロック復号データが、前記第1の判定手段により前記第1の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第2のブロック復号データと等しいか否かを判定し、
認証手段が、前記2つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証するステップ
を含む認証方法。
【請求項7】
通信相手から送信された第1の乱数を受信する受信手段と、
第2の乱数を発生する発生手段と、
前記第2の乱数を複数のデータに分割する分割手段と、
前記第2の乱数、および前記第1の乱数から成るデータに、前記分割された複数の前記データのうち、第1のデータを、冗長データとして付加して処理対象データを生成する処理対象データ生成手段と、
前記処理対象データを、複数のデータに分割してCBCモードで暗号化するCBC暗号化手段と、
前記暗号化されたデータを、前記通信相手に送信する送信手段と
を備える通信装置。
【請求項8】
前記データは、前記通信相手によりCBCモードで復号され、
前記CBC暗号化手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のデータを暗号化する
請求項7に記載の通信装置。
【請求項9】
前記第2の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用する
請求項8に記載の通信装置。
【請求項10】
非接触ICカード機能を有する機器として構成される
請求項7に記載の通信装置。
【請求項11】
受信手段が、通信相手から送信された第1の乱数を受信し、
発生手段が、第2の乱数を発生し、
分割手段が、前記第2の乱数を複数のデータに分割し、
処理対象データ生成手段が、前記第2の乱数、および前記第1の乱数から成るデータに、前記分割された複数の前記データのうち、第1のデータを、冗長データとして付加して処理対象データを生成し、
CBC暗号化手段が、前記処理対象データを、複数のデータに分割してCBCモードで暗号化し、
送信手段が、前記暗号化されたデータを、前記通信相手に送信するステップ
を含む通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−66636(P2011−66636A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−214766(P2009−214766)
【出願日】平成21年9月16日(2009.9.16)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】