JPWO2006019152A1 - メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法 - Google Patents
メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法 Download PDFInfo
- Publication number
- JPWO2006019152A1 JPWO2006019152A1 JP2006531866A JP2006531866A JPWO2006019152A1 JP WO2006019152 A1 JPWO2006019152 A1 JP WO2006019152A1 JP 2006531866 A JP2006531866 A JP 2006531866A JP 2006531866 A JP2006531866 A JP 2006531866A JP WO2006019152 A1 JPWO2006019152 A1 JP WO2006019152A1
- Authority
- JP
- Japan
- Prior art keywords
- message
- data
- register
- message authenticator
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
従来技術の弱点である、出力差分をメッセージ差分で完全にコントロールできる性質を克服し、任意のプラットフォームで動作可能な、高速で安全性の高いMAC生成および認証暗号技術を提供する。入力するメッセージのサイズが出力長の1/2以下となる非線形変換部を備える攪拌装置を採用することにより、出力差分値のコントロール不可能にする。本発明のMAC生成装置は、上記攪拌装置をメッセージの攪拌処理だけでなく、初期化処理、データ圧縮処理にも採用可能である。
Description
本発明は2004年8月19日に出願された日本特願2004−239359の優先権を主張し、文献の参照による織りみ込みが認められる指定国については、上記出願の開示内容および特開2003−37482号公報の開示内容は参照により本出願に織り込まれる。
本発明は、任意長のメッセージ認証子を高速に生成する技術に関する。
現在、インターネットを代表とする公開通信路を用いた通信は増加の一途をたどっている。このような通信路では、通信路上で、送信されたメッセージが悪意ある第三者によって改ざんされる可能性があり、受信したメッセージの真贋を確認する方法が必要となる。
メッセージの真贋を確認する方法として、共通鍵暗号技術を用いたメッセージ認証子(Message Authentication Code: 以下MACと呼ぶ。)を用いるものと、公開鍵暗号技術による電子署名を用いるものとがある。電子署名を用いる方法は、MACを用いるものに比べて処理に時間を要する。従って、小さなパケットを大量に送受信するIP通信などでは、一般的に電子署名による方法よりもMACによる方法が用いられている。
MACを用いる方法は、送信データに所定の処理を施して生成されるMACを比較することにより、メッセージの改ざんの有無を確認するものである。
一般に、MACによる受信メッセージへの改ざんの有無の検証は、以下のように行われる。
メッセージ送信側とメッセージ受信側とが、同じMAC生成機能を有する。送信側では、送信するメッセージからMAC(第1のMAC)を生成し、メッセージと共に送信する。受信側では、受信したメッセージから同様にMAC(第2のMAC)を生成し、上記メッセージと共に受信した第1のMACと第2のMACとを比較する。両者が合致すれば、メッセージの改ざんはないものと検証される。
このMACを生成する方法としては、ブロック暗号を用いたOMAC、ハッシュ関数を用いたHMAC、擬似乱数生成器を転用したHelix、SOBER−128(非特許文献1参照。)などが知られている。また、MACを生成する専用アルゴリズムとして、UMACなどが知られている。また、前記SOBER−128やHelixはMACの生成とデータの暗号化を同時に行うことができる方式である。MACの生成とデータの暗号化を同時に行う暗号化方式を認証暗号と呼ぶ。
P. Hawkes and G. Rose, Primitive Specification for SOBER-128,'' IACR ePrint Archive, http://eprint.iacr.org/2003/81/, 2003.
上記の各方法は、それぞれ問題がある。例えば、ブロック暗号、ハッシュ関数を用いてMACを生成する方法は、処理速度に問題がある。
擬似乱数生成器を用いたSOBER−128は、安全性に懸念があることが報告されている。具体的には、SOBER−128では、内部に、非線形変換部を有し、その非線形変換部からの出力長と、非線形変換部に対して入力されるメッセージの長さとが同じである。これは、出力差分をメッセージ差分で完全にコントロールできることを意味する。
また、Helixや専用アルゴリズムであるUMACは、特定のプラットフォームでは高速だが、ハードウェア実装には向かないなど、汎用性に欠ける。さらに、Helixは、出力長が160ビットであり、将来的に高い安全性を保証できるMAC生成アルゴリズムとは言い難い。
本発明は、このような事情に鑑みてなされたもので、小さなデータを大量に送受信するIP通信などを行う任意のプラットフォームに適用可能な、実用に耐え得る性能と安全性とを備えた、MAC生成の技術を提供する。また、このMAC生成装置を備え、MAC生成とデータの暗号化を同時に行う技術を提供する。
本発明は、このMAC生成機能であって、SOBER−128の弱点を克服するものを提供する。
本発明では、上記弱点を克服するために、以下の構成をとる。
(1)非線形変換部に入力されるメッセージのサイズを出力長の1/2以下とする。
(2)非線形変換部からの出力をバッファにフィードバックする。
(1)非線形変換部に入力されるメッセージのサイズを出力長の1/2以下とする。
(2)非線形変換部からの出力をバッファにフィードバックする。
具体的には、送受信するメッセージデータの完全性を検証するためのメッセージ認証子を当該メッセージデータから生成するメッセージ認証子生成装置であって、第1のパラメータに初期化処理を施し、一定長のランダムなビット列からなるデータを出力する初期化装置と、前記初期化装置の出力したデータを格納するレジスタと、入力される前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、攪拌後のデータを前記レジスタに格納するデータ攪拌装置と、前記レジスタに格納されているデータであって、前記データ攪拌装置において攪拌後のデータを、所定のデータ長に圧縮し、メッセージ認証子として出力する圧縮処理を行うデータ圧縮装置と、を備え、前記データ攪拌装置は、前記一定長のメッセージデータの2倍以上のサイズの出力を有する非線形変換装置を備えることを特徴とするメッセージ認証子生成装置を提供する。
また、このメッセージ認証子生成装置を備え、メッセージ認証子生成とデータの暗号化とを同時に行う技術を提供するものである。
上記態様の、非線形変換部に入力されるメッセージのサイズを出力長の1/2以下とする構成により、出力差分値のコントロールを困難にする。また、本発明の非線形変換部からの出力をバッファにフィードバックする構成により、バッファの状態更新を非線形にすることができ、結果として、暗号学的な強度が増すことが期待できる。
また、上記態様によれば、バッファ部と非線形変換部のデータの相関が小さくなることが期待できる。このため、任意のプラットフォームで高速に動作するMAC生成装置、およびMAC検証装置を提供することができる。
本発明は、特に、特開2003−37482号公報に開示する擬似乱数生成器(以下、MUGIと称す)に、低コストで適用することが可能である。すなわち、本発明は、MUGIに、MACを生成する機能を安価に提供することができる。また、本発明は、MUGIに認証暗号の機能を提供することができる。
本発明によれば、任意のプラットフォームに適用可能な、実用に耐え得る性能と安全性とを備えたMAC生成および認証暗号の技術を提供できる。
以下に、本発明を適用する実施形態を説明する。
ここでは、本発明を認証暗号装置に適用した場合を実施形態として説明する。本実施形態の認証暗号装置は、レジスタを持つメッセージ認証子生成装置を利用する。そこでまず、本実施形態の認証暗号装置に最適なメッセージ認証子生成装置を説明する。
図1は、本実施形態の認証暗号装置に最適なメッセージ認証子(MAC)生成装置のイメージ図である。本図に示すように、本実施形態のMAC生成装置201は、メッセージ入力制御装置209を介して入力されたメッセージM205に、クロック生成装置203から入力されるクロック信号に従って処理を施し、メッセージ認証子T207を生成する。
本実施形態のMAC生成装置201への外部からの入力は、メッセージ入力制御装置209を介して入力されるメッセージM205の他に、パラメータ入力制御装置218を介して入力されるパラメータK204と、セキュリティパラメータD206と、クロック生成装置203の生成するクロック信号とがある。
メッセージ入力制御装置209は、任意のサイズのメッセージM205を、MAC生成装置201の内部での処理単位に分割して、MAC生成装置201に入力する。
パラメータ入力制御装置218は、任意のサイズのパラメータK204を、MAC生成装置210の内部での処理単位に分割して、MAC生成装置201に入力する。
クロック生成装置203は、クロック信号を生成し、MAC生成装置201およびメッセージ入力制御装置209に入力する。
MAC生成装置201は、初期化装置211、レジスタ212、メモリ210、スイッチ215、217、データ攪拌装置208、制御装置214、データ圧縮装置216、カウンタ213とを備える。
初期化装置211は、パラメータ入力制御装置218を介して入力されたパラメータK204をレジスタ212長毎に切り出して、レジスタ212に出力する。
レジスタ212は、パラメータK204またはデータ攪拌装置208からの出力を一時的に保持する。
メモリ210は、メッセージ入力制御装置209を介して入力されたメッセージM205を一時的に保持する。
スイッチ215は、制御装置214の指示に従って、レジスタ212に保持されているデータを、データ攪拌装置208およびデータ圧縮装置216のいずれかに入力するよう切り替える。
スイッチ217は、制御装置214の指示に従って、メモリ210に保持されているデータを、データ攪拌装置208に入力するか否かを切り替える。
制御装置214は、セキュリティパラメータD206、カウンタ213に従って、スイッチ215およびスイッチ217を制御する。
カウンタ213は、クロック生成装置203からの入力回数をカウントするもので、クロック生成装置203からクロック信号が入力される毎に、保持する値が1ずつ増加する
よう更新される。
よう更新される。
データ攪拌装置208は、データ攪拌装置208に入力されたデータを攪拌して出力する。
データ圧縮装置216は、データ圧縮装置216に入力されたデータに所定の処理を施し、メッセージ認証子T207を生成し、出力する。
初期化装置211、データ攪拌装置208、データ圧縮装置216の詳細については、後述する。
また、入力されるパラメータK204は、基本的には、秘密鍵といった秘密情報である。しかし、その一部をカウンタのような公開値としてもよい。
セキュリティパラメータD206は、MAC生成装置201の暗号方式の安全性を表す指標であり、鍵長などをセキュリティパラメータD206としてもよい。セキュリティパラメータD206は、初期化装置211、データ圧縮装置216等のMAC生成装置201内の各機能において行われる、後述する攪拌回数を決定する基礎となるパラメータである。セキュリティパラメータD206に基づいて、所定の算出方法に従って決定された各機能での攪拌回数に従って、制御装置214は、各機能での攪拌回数を制御する。
本実施形態では、データ攪拌装置208および初期化装置211は、予め定められたデータ長(以後、Lとする)のデータを受け入れ、処理を行う。上記のメッセージ入力制御装置209およびパラメータ入力制御装置218は、任意サイズのメッセージM205およびパラメータK204を、本実施形態のデータ攪拌装置208および初期化装置211でそれぞれ処理するために設けられている。
メッセージ入力制御装置209を代表として説明すると、メッセージ入力制御装置209は、クロック生成装置203からクロックを受信する毎に、メッセージM205からLビット切り出し、メモリ210に格納する。メッセージM205がLの整数倍でない場合は、予めビット列100…0などを用いてデータパディングを行い、Lの整数倍となるようにする。本実施形態では、メッセージM205は、メッセージ入力制御装置209において、各メッセージブロックM1、M2、…MNに分割される(各メッセージブロックM1、M2…MNのサイズはLである。また、Nは、パディング後のメッセージM205をLで割った場合の商である。)。パラメータ入力制御装置218の動作も基本的に同様であり、パラメータK204は、K1、K2、…Kn…KPに分割される(分割後のパラメータのKnのサイズはLである。また、Pは、パディング後のパラメータK204をLで割った場合の商である。ここで、nは自然数であり、ここでは、P以下の自然数である。)。
次に、MAC生成装置201の動作の概要を説明する。図2は、MAC生成装置201の動作概要を説明するためのフローチャートである。
ステップ301:MAC生成装置201には、パラメータK204とメッセージM205とが入力される。パラメータK204は、パラメータ入力制御装置218を介して初期化装置211に、メッセージM205は、メッセージ入力制御装置209を介してメモリ210に入力される。
メッセージ入力制御装置209は、メッセージM205を、一定長Lのブロックに分割し、クロック生成装置203からクロック信号が入力されるごとにメモリ210にむけて出力する。パラメータ入力制御装置218も、同様に、パラメータK204を、一定長Lのブロックの分割し、クロック生成装置203からクロック信号が入力されるごとに、初期化装置211にむけて出力する。
MAC生成装置201は、これらの入力を受けると、クロック生成装置203から入力されるクロック信号に従って、以下の処理を行う。
ステップ302:メッセージM205を、メッセージブロックMnに分割する。
ステップ303:パラメータ入力制御装置218を介して入力されたパラメータK204(Kn)を初期化装置211に入力する。初期化装置211に、入力されたパラメータK204(Kn)に後述する初期化処理を施させ、レジスタ212長のデータを出力させる。初期化装置211から出力されたデータは、レジスタ212に格納される。
ステップ304:カウンタ213の値を初期化する。本実施形態では、全てのビット値を0にセットする。
ステップ305、306:クロック信号が入力される毎に、メッセージ入力制御装置209を介することにより、メッセージブロックMn(nは、N以下の自然数であり、カウンタ213が現在保持している値となる。)として分割されたメッセージM205が、メモリ210に格納される。データ攪拌装置208に、メモリ210に格納されているメッセージブロックMnとレジスタ212に格納されているデータとを攪拌させ、レジスタ212長のデータを出力させる。出力されたデータは、レジスタ212に格納される。そして、カウンタ213の値を1増加させる。
ステップ305、306の処理を、全てのメッセージブロックMnを処理し終えるまで、すなわち、nが1からNになるまで繰り返す。
ステップ307:カウンタ213の値がNになると、制御装置214に、レジスタ212に保持されるデータがデータ圧縮装置216に入力されるようにスイッチ215を切り替えさせる。そして、その時点でレジスタ212に保持されるデータが、データ圧縮装置216に入力される。
ステップ308:データ圧縮装置216に、入力されたデータの圧縮を行わせ、セキュリティパラメータD205に応じて、レジスタ212のビット長よりも短いデータを生成させる。そして、生成されたデータをメッセージ認証子T207として出力する。
次に、初期化装置211、データ攪拌装置208、データ圧縮装置216について説明する。
初期化装置211、データ攪拌装置208、データ圧縮装置216は、それぞれ独立な関数を用いて構成してもよいが、同じ攪拌関数によっても構成が可能である。実装コストを勘案すれば、同じ攪拌関数を用いる方がよい。以下、一つの攪拌関数を定義し、上記3装置を、この攪拌関数により実現する場合を例にあげ、説明する。
図3は、上記3装置に適用可能な攪拌関数の処理を実現する攪拌装置601の概略を説明するための図である。また、図4は、攪拌装置601の動作概要を説明するための図である。
図3に示すように、攪拌装置601への入力は、レジスタ602に格納されているデータと、外部入力603に格納されているデータとである。外部入力603のデータは、スイッチ609により、入力の有無を制御される。すなわち、攪拌装置601は、外部入力603のデータ入力ありで、レジスタ602内のデータを攪拌する処理と、外部入力603のデータ入力なしで、レジスタ602内のデータを攪拌する処理とを行うことができる。
以下、説明のため、レジスタ602を、2つのレジスタに分割し、それぞれレジスタA604、レジスタB605とする。
図3に示すように、本実施形態の攪拌装置601は、非線形変換装置606と、線形変換装置607、および入力フィルタ611とを備える。本実施形態では、線形変換装置607を実現する関数は、非退化なものを用いる。また、線形変換装置606を実現する関数は、レジスタA604からの入力に関して、可逆なものを用いる。それぞれ詳細は、後述する。
図3に示すように、攪拌装置601は、スイッチ609と制御装置608とスイッチ610とによって切り替えられるレジスタ602からの入力と外部入力603からの入力とを受けると、以下の処理を行う。
なお、スイッチ609は、制御装置608からの切り替え指示に従って、入力の切り替えを行う。
ステップ702:外部入力603に格納されているデータの有無および制御装置608からの信号を確認する。
ステップ703、704、705:外部入力603にデータが保持されていない場合、すなわち、外部入力603からデータが入力されない場合、もしくは、制御装置608から、外部入力603からのデータを無視する信号を受信した場合には、スイッチ609を、外部入力603が入力フィルタ611に入力しないように切り替える。一方、外部入力603にデータが保持され、かつ、制御装置608から無視を指示する信号が出力されていない場合には、スイッチ609を、外部入力603が保持しているデータが、入力フィルタ611に入力されるように切り替える。
ステップ706:スイッチからの入力およびメモリのデータを入力フィルタ610に入力する。入力フィルタ611は入力に応じて、一定長のデータを出力する。
ここで、入力フィルタ611は、スイッチからの入力とメモリのデータとの排他的論理和をとる処理を行う。また、さらに排他的論理和の結果を後述する非線形置換A801により置換してもよい。
ステップ707:レジスタA604とレジスタB605とに格納されているデータ、および、スイッチ609を介して受け取る外部入力603が保持しているデータまたはレジスタB605に格納されているデータを、非線形変換装置606に入力し、データを攪拌する。
ステップ708:非線形装置606の出力およびレジスタB605が保持しているデータを、線形変換装置607に入力する。
ステップ709:線形変換装置607からの出力を、レジスタA604、レジスタB605に格納する。
ここで、非線形変換装置606、線形変換装置607の詳細について、説明する。以下において、前記のデータ長Lを64ビットとする。すなわち、外部入力603のサイズを64ビットとする。
また、レジスタA604、レジスタB605は、それぞれ、3個、16個の64ビット小レジスタから構成されるものとして説明する。また、それぞれの小レジスタを、A0、A1、A2、B0、B1、…B15と表す。
図3におけるレジスタA604、レジスタB605からの非線形変換装置606、線形変換装置607への細線は、それぞれ1本の線が64ビットデータの流れを表す。また、各レジスタとも、上位(左)側から、A0、A1、A2、B0、B1、…B15とする。
また、以下の処理では、各小レジスタが保持するデータは、時刻とともに更新されて行く。時刻tに状態更新がなされた時点でのレジスタA0を、A0(t)と記述する。これは、状態更新を記述する際に、時刻tを明記する必要がある場合のみ採用する。さらに、B1(t+1)←A0(t)+A1(t)との記述は、矢印の右辺のレジスタA0(t)とレジスタA1(t)とに格納されているデータを結合し、矢印の左辺のレジスタB1(t+1)に代入することを示す。
図5は、本実施形態の非線形変換装置606の構成を説明するための図である。本図において、丸に十字の記号は、排他的論理和を表す。また、式中では、排他的論理和は、“XOR”で表す。
非線形装置606は、非線形置換A801と非線形置換B802と巡回シフト装置803とを備える。非線形置換A801および非線形置換B802の詳細については、後述する。
非線形変換装置606には、レジスタA604に格納されているデータと、レジスタB605のB10に格納されているデータと、スイッチ609により選択される、外部入力603またはレジスタBのB4に格納されているデータと、の3つのデータが入力される。非線形変換装置606は、時刻tにおける、上記3つの入力に処理を施し、その結果を、時刻t+1において、レジスタA604に格納することにより、レジスタA604の状態を更新する。
非線形変換装置606によるレジスタA604の状態更新の詳細は、以下の式で与えられる。ここでは、非線形置換A801をF、非線形置換B802をG、スイッチ609からの入力データをP(t)とする。
A0(t+1)←A1(t)
A1(t+1)←A2(t) XOR G(A1(t) XOR P(t))
A2(t+1)←A0(t) XOR F(A1(t) XOR B10(t) <<< 17)
ここで、上記式中の記号“<<<”は、64ビットレジスタにおけるnビット左巡回シフトを表す。以下、本明細書中、同様である。
A1(t+1)←A2(t) XOR G(A1(t) XOR P(t))
A2(t+1)←A0(t) XOR F(A1(t) XOR B10(t) <<< 17)
ここで、上記式中の記号“<<<”は、64ビットレジスタにおけるnビット左巡回シフトを表す。以下、本明細書中、同様である。
レジスタA604の状態更新の別例を説明する。図21は、本別例の非線形変換装置606の構成を説明するための図である。本図における丸に十字の記号、”XOR”は、図5と同様の意味である。本別例の非線形変換装置606によるレジスタA604の状態更新の詳細は以下の式で与えられる。
A0(t+1)←A1(t)
A1(t+1)←A2(t) XOR G(A1(t) XOR B4(t))
A2(t+1)←A0(t) XOR F(A1(t) XOR P(t) <<< 17)
以上説明したように、本実施形態および本別例では、非線形変換装置606は、64ビット入力データP(t)から、192(64×3)ビットの出力を得ている。すなわち、入力メッセージのサイズを出力長の1/2以下としている。
A1(t+1)←A2(t) XOR G(A1(t) XOR B4(t))
A2(t+1)←A0(t) XOR F(A1(t) XOR P(t) <<< 17)
以上説明したように、本実施形態および本別例では、非線形変換装置606は、64ビット入力データP(t)から、192(64×3)ビットの出力を得ている。すなわち、入力メッセージのサイズを出力長の1/2以下としている。
次に、上記の非線形置換A801、B802について説明する。
図6は、非線形置換A801の構成を説明するための図である。非線形置換A801は、入力904に処理を施し、その結果を出力905として出力する。
本図において、Si(0<=i<8;iは自然数)(902)は、入力、出力ともに8ビットの変換テーブルであり、非線形変換を行う。また、Li(0<=i<=1;iは自然数)(903)は、入力、出力ともに32ビットの線形変換を表す。Si、Liとしては、例えば、FIPS197に記述されている8ビットの置換テーブルS−box S、MixColumn()などを用いることができる。
本実施形態において、非線形置換A801の処理は、次の式で与えられる。
x0||x1||...||x7←入力(904)、
yi←Si(xi)、 (0<=i<8)、
(z0, z1, z2, z3)←L0(y0, y1, y2, y3),
(z4, z5, z6, z7)←L1(y4, y5, y6, y7),
出力(905)←z4||z5||z2||z3||z0||z1||z6||z7.
ただし、上記式中で、記号"||"はデータの連結を表す。以下、本明細書中、同様である。
yi←Si(xi)、 (0<=i<8)、
(z0, z1, z2, z3)←L0(y0, y1, y2, y3),
(z4, z5, z6, z7)←L1(y4, y5, y6, y7),
出力(905)←z4||z5||z2||z3||z0||z1||z6||z7.
ただし、上記式中で、記号"||"はデータの連結を表す。以下、本明細書中、同様である。
すなわち、64ビットの入力904を、上位ビットから8ビットずつ、それぞれ、S0、S1、…S7に入力し、処理を施し、その結果、S0からS3はL0に、S4からS7はL1に入力される。L0、L1での処理後、L0の上位16ビットとL1の上位16ビットとを入れ替え、出力905とする。
非線形置換B802も基本的に上記非線形置換A801と同様の構成で実現することができる。このように、同様の置換処理を用いることにより、実装規模を小さく抑えることができる。ただし、実装に対する制限が少ない場合には、異なる8ビット変換テーブルSi(0<=i<8;iは自然数)(902)や、異なる線形変換Li(0<=i<=1;iは自然数)(903)を用いることで、より高い安全性を実現できる。
次に、線形変換装置607について説明する。
図7は、本実施形態の線形変換装置607の構成を説明するための図である。本図において、1本の線は、64ビットデータの流れを表す。
線形変換装置607には、レジスタB605に格納されているデータと、レジスタA604のA0に格納されているデータとの2つの値が入力される。線形変換装置607は、時刻tにおける、上記2つの入力に処理を施し、その結果を、時刻t+1において、レジスタB605に格納することにより、レジスタB605の状態を更新する。
線形変換装置607によるレジスタB605の状態更新の詳細は、以下の式で与えられる。
Bi(t+1)←B(i−1)(t)、(iは、0<i≦15を満たす自然数、ただし、4、10を除く)、
B0(t+1)←B15(t) XOR A0(t)
B4(t+1)←B3(t) XOR B7(t)
B10(t+1)←B9(t) XOR (B13(t) <<< 32)
なお、本線形変換装置607では、レジスタA604に保持されているデータは更新しない。
B0(t+1)←B15(t) XOR A0(t)
B4(t+1)←B3(t) XOR B7(t)
B10(t+1)←B9(t) XOR (B13(t) <<< 32)
なお、本線形変換装置607では、レジスタA604に保持されているデータは更新しない。
次に、以上説明した攪拌装置601を、本実施形態のMAC生成装置内の、初期化、データ攪拌、データ圧縮の各処理に適用する場合を説明する。
図8は、データ攪拌装置208として、攪拌装置601を利用する場合の構成を説明するための図である。
本図に示すように、攪拌装置601がデータ攪拌装置208に、レジスタ602がレジスタ212に、外部入力603がメモリ210に、スイッチ610がスイッチ215に、スイッチ609がスイッチ217に対応する。
上述のように、本実施形態では、メモリ210にメッセージブロックMn単位で入力されるデータを、クロック生成装置203からのクロック信号に従って動作する制御装置214の指示で、データ攪拌装置208に入力し、攪拌を行う。メモリ210からの入力が完了したら、制御装置214がスイッチ215を操作し、レジスタ212に格納されているデータを、データ圧縮装置216に出力する。
なお、本実施形態のデータ攪拌装置208は、クロック毎に、メモリ210に格納されたデータの入力と攪拌とを1回行うよう構成されている。しかし、セキュリティパラメータD206に応じて、データ攪拌回数を決定し、全てのメッセージブロックMnの入力終了後、当該データ攪拌回数、スイッチ217の切り替えて外部入力603(メモリ210からの入力)無しに、データを攪拌するよう構成してもよい。
次に、上述の攪拌装置601により、初期化装置211を実現する構成を説明する。図9に、初期化装置211を実現する構成を示す。
本図に示すように、本実施形態の初期化装置211は、上述の攪拌装置601およびレジスタ602、スイッチ609、スイッチ610、入力フィルタ611により構成される。
図3に示す制御装置608は図1に示す制御装置214に対応する。また、外部入力603は、パラメータK204をパラメータ入力制御装置218によりデータ長Lに分割した後のものである。初期化装置211における攪拌の回数は、セキュリティパラメータD206に基づいて定められる。
図10は、攪拌装置601により初期化装置211を実現する場合の、MAC生成装置201の処理フローである。
ステップ1101:入力としてパラメータK204とセキュリティパラメータD206とが与えられる。
ステップ1102:初期化装置211において、パラメータK204を、攪拌装置601(ここでは、初期化装置211)の入力サイズにあわせて、P個のブロックに分割する。必要に応じてパディング処理を行う。各分割後のパラメータK204を、Knとする(K=K1、K2…Kn…KP;nはP以下の自然数。)。また、入力サイズは、外部入力603のサイズのL、すなわち、本実施形態では、64ビットである。
ステップ1103:レジスタ602をゼロクリアする。
ステップ1104:カウンタ213の値を1にセットする(n=1)。
ステップ1105、1106:nがPより大きくなる(n>P)まで、Knを外部入力603として、クロック信号が入力される毎に、攪拌装置601を動作させ、レジスタ602のデータを攪拌し、nを1増加させることを繰り返す。
ステップ1107:カウンタ213の値を再度1にセットする(n=1)。
ステップ1108、1109:nがL(D)より大きくなる(n>L(D))まで、外部入力603無しで、クロック信号が入力される毎に、攪拌装置601を動作させ、レジスタ602のデータを攪拌し、nを1増加させる処理を繰り返す。ここで、L(D)は、初期化処理の攪拌回数を示す値であって、セキュリティパラメータD206に従って定められる。
ステップ1110:攪拌終了後、この時点でのレジスタ602のデータを出力する。本実施形態では、レジスタ212に出力する。
次に、上述の攪拌装置601により、データ圧縮装置216を実現する構成を説明する。図11にデータ圧縮装置216を実現する構成を示す。なお、データ圧縮装置216は、レジスタのデータ以外を入力として持たないため、図中では、入力フィルタ611を省略する。
本図に示すように、本実施形態のデータ圧縮装置216は、攪拌装置601およびレジスタ602、スイッチ609、スイッチ610により構成される。
図3に示す制御装置608は図1に示す制御装置214に対応する。また、データ圧縮装置216の場合、外部入力603に相当するものは無い。また、メッセージ認証子T207として最終結果を出力する前に、処理結果を一時的に保持するバッファT'216aと、制御装置214からの指示し従って、バッファT'216aのデータを出力するためのスイッチ216bとを備える。
データ圧縮装置216における攪拌の回数は、セキュリティパラメータD206に従って定められる。
図12は、攪拌装置601により、データ圧縮装置216を実現する場合の、MAC生成装置201の処理フローである。
ステッ1201:入力としてレジスタ212のデータと、セキュリティパラメータD206とが与えられる。レジスタ212のデータは、レジスタ602に保持される。
ステップ1202:カウンタ213の値を1にセットする(n=1)。
ステップ1203、1204:nがL'(D)より大きく(n>L'(D)と)なるまで、クロック毎に、外部入力603無しで攪拌装置601を動作させ、レジスタ602のデータを攪拌し、nを1増加させる処理を繰り返す。ここで、L'(D)は、データ圧縮処理の第一の攪拌回数を示す値であって、セキュリティパラメータD206に従って定められる。
ステップ1205:nがL'(D)より大きくなった時点で、カウンタ213の値を1にセットする(n=1)。また、出力するデータを一時的に格納するバッファT'216aをクリアする。
ステップ1206、1207、1208:nがL''(D)より大きく(n>L''(D)と)なるまで、クロック信号が入力される毎に、外部入力603無しで、攪拌装置601を動作させ、nを1増加させる処理を繰り返す。ここで、L''(D)は、データ圧縮処理の第二の攪拌回数を示す値であって、セキュリティパラメータD206に従って定められる。そして、各クロック毎、すなわち、攪拌装置601を動作させて攪拌する毎に、以下の操作を行う。
T'←T'||A2(n)
ステップ1209:nがL''(D)より大きくなった場合、バッファT'216a内のデータをメッセージ認証子T207として出力する。
ステップ1209:nがL''(D)より大きくなった場合、バッファT'216a内のデータをメッセージ認証子T207として出力する。
これにより、L''(D)の値により、すなわち、第二の攪拌回数により、出力されるメッセージ認証子Tのデータ長を調整できる。従って、本実施形態のMAC生成装置201では、任意長のメッセージ認証子を生成することができる。
本実施形態では、上記のように、セキュリティパラメータD206に依存して、攪拌回数が決定されるよう構成されている。しかし、このセキュリティパラメータD206は、固定値であってもよい。
また、上述のように、本実施形態の攪拌装置601では、外部入力603は、非線形変換装置606への入力とされているが、線形変換装置607に入力されるよう構成してもよい。この場合、レジスタB603の状態更新は、以下の式で表される。
Bi(t+1)←B(i−1)(t)、 (iは、0<i≦15を満たす自然数、ただし、4、10を除く)、
B0(t+1)←B15(t) XOR P(t)、
B4(t+1)←B3(t) XOR B7(t)、
B10(t+1)←B9(t) XOR (B13(t) <<< 32).
さらに、外部入力603は、非線形変換装置606および線形変換装置607の両方に入力するよう構成してもよい。この場合は、外部入力603を、線形変換装置607のB0(t)に足しこむように構成する。
B0(t+1)←B15(t) XOR P(t)、
B4(t+1)←B3(t) XOR B7(t)、
B10(t+1)←B9(t) XOR (B13(t) <<< 32).
さらに、外部入力603は、非線形変換装置606および線形変換装置607の両方に入力するよう構成してもよい。この場合は、外部入力603を、線形変換装置607のB0(t)に足しこむように構成する。
次に、本実施形態による、メッセージ認証子検証装置について説明する。メッセージ認証子検証装置は、メッセージ生成装置と同様の構成を有し、受信したメッセージとMACとの組から、メッセージとMACとをそれぞれ抽出する。そして、抽出したメッセージからMACを生成し、生成したMACと抽出したMACとを比較することにより検証を行う。
従って、以下に説明するように、受信したメッセージ認証子の真正性を検証する本実施形態のメッセージ認証子検証装置は、上述のMAC生成装置201と基本的に同様の構造を有するMAC生成処理を行う機能と、受信したMACとメッセージ認証子検証装置で生成したMACとを比較する機能とを備える。
図13は、本実施形態のメッセージ認証子(MAC)検証装置401の概要を説明するための図であり、図14は、図13のMAC検証装置による処理フローである。
本実施形態のMAC検証装置401は、MAC生成装置201と、データ比較装置402とを備える。MAC検証装置401への入力は、MAC生成装置201への入力である、パラメータK204、メッセージM205、セキュリティパラメータD206と、クロック生成装置404からの入力信号と、データ比較装置402への入力であり、メッセージの真正性を検証するためのタグT405とである。タグT405は、受信したメッセージから抽出したMACである。また、メッセージM205およびパラメータK204は、MAC生成装置201の場合と同様、それぞれメッセージ入力制御装置209およびパラメータ入力制御装置218を介して、所定長Lのブロック単位に分割されて、入力される。
MAC検証装置401によるメッセージ認証子検証処理について以下に説明する。
ステップ502:MAC生成装置201に、パラメータK204、メッセージM205、セキュリティパラメータD206を入力し、MAC生成処理を行い、結果を出力する。
ステップ503:ステップ502の処理結果である出力とタグT405の値とを比較する。
ステップ504、505:ステップ503の比較において、両者の値が等しければ0を出力し、それ以外の場合は1を出力する。すなわち、メッセージが真正と検証された場合、0を出力し、それ以外の場合1を検証結果406として出力する。
ステップ506:処理を終了する。
次に、本実施形態の認証暗号装置について説明する。
図16は、本実施形態の認証暗号装置1601のイメージ図である。本図に示すように、本実施形態の認証暗号装置1601は、図1に示すレジスタ212を持つメッセージ認証子(MAC)生成装置201、ビット列出力フィルタ1605、レジスタ212から出力フィルタ1605への入力を制御するスイッチ1606、暗号化装置1608、暗号化装置1608へのメッセージ入力を制御するスイッチ1607、暗号化装置1608の出力を蓄えるメモリ1612を備える。それぞれの構成要素の詳細な構成については後述する。
次に、上記のメッセージ認証子生成装置201を備えた認証暗号装1601置の処理動作について説明する。
本実施形態の認証暗号装置1601は、メッセージ入力制御装置209を介して入力されたメッセージM205に、クロック生成装置203から入力されるクロック信号に従って処理を施し、メッセージM205を暗号化し、暗号文C1609を出力する。また、認証暗号装置1601は、全てのメッセージM205に処理を施した後、メッセージ認証子T207を生成する。
本実施形態で認証暗号装置1601への外部からの入力は、メッセージ入力制御装置209を介して入力されるメッセージM205の他に、パラメータ入力制御装置218を介して入力されるパラメータK204と、セキュリティパラメータD206と、暗号化処理をするか否かを決定する暗号化フラグF1610と、クロック生成装置203が生成するクロック信号とがある。
次に、認証暗号装置1601の動作の概要を説明する。図17は、認証暗号装置1601の動作概要を説明するためのフローチャートである。
ステップ1701:認証暗号装置1701には、パラメータK204とメッセージM205とが入力される。パラメータK204は、パラメータ入力制御装置218を介してメッセージ認証子生成装置201に入力され、メッセージ認証子生成装置201の初期化を行う。メッセージM205は、メッセージ入力制御装置209を介してメッセージ認証子生成装置201に、さらに、スイッチ1607を介して暗号化装置1608に入力される。
メッセージ入力制御装置209は、メッセージM205を、一定長Lのブロックに分割し、クロック生成装置203からクロック信号が入力されるごとにメッセージ認証子生成装置201と暗号化装置1608に向けて出力する。パラメータ入力制御装置218は、図3で説明したメッセージ認証子生成装置201の場合と同様に動作する。
認証暗号装置1601は、これらの入力を受けると、クロック生成装置203から入力されるクロック信号に従って、以下の処理を行う。
ステップ1702:メッセージM205を、ブロック長LビットのメッセージブロックM1、M2、…、MNに分割する。
ステップ1703:パラメータ入力制御装置218を介して入力されたパラメータK204(Kn)を順にメッセージ認証子生成装置201に入力し、レジスタ212の初期化を行う。
ステップ1704:メッセージ認証子生成装置201に含まれているカウンタ(213;図16では不図示)の値を初期化する。本実施形態では、全てのビット値を0にセットする。
ステップ1705:カウンタ213の値がNになるまでステップ1706、1707の処理を繰り返す。
ステップ1706:クロック信号が入力されるごとに、メッセージ認証子生成装置201は図3のステップ306に従い処理を行う。
ステップ1707:レジスタ212の値がスイッチ1606を介して出力フィルタ1605に入力される。出力フィルタ1605は、レジスタ212から入力された値から、一定長のビット列Rn(nはN以下の自然数であり、カウンタが現在保持している値となる)を生成し、暗号化装置1608に向けて出力する。暗号化装置1608は、メッセージ入力制御装置209およびスイッチ1607を介して入力されたメッセージブロックMnと前記のビット列Rnとから暗号文ブロックCnを生成し、メモリ1612に向けて出力する。
ステップ1708、1709:カウンタ213の値がNになると、メッセージ認証子生成装置201は図3におけるステップ307、308の処理を行い、メッセージ認証子T207を出力する。同時にメモリ1612は暗号文C(暗号文パケット1611)=C1||C2||…||CNを出力する。
ステップ1710:処理を終了する。
以上が認証暗号装置1601の構成と動作のフローである。
なお、認証暗号装置1601への入力のうち、暗号化フラグF1610はメッセージを暗号化するか否かを決定するフラグである。暗号化フラグF1610が暗号化を指示している場合には、スイッチ1606、1607が接続され、上記の認証暗号装置1601として動作する。一方、暗号化フラグが暗号化を指示していない場合には、スイッチ1606、1607は切断され、暗号化処理は行われない。この場合には、認証暗号装置1601は前述のメッセージ認証子生成装置201として動作し、メッセージ認証子T207のみを出力する。
上記の構成例では、暗号文ブロックCnを一旦メモリ1612に格納し、メッセージ認証子T207と同時に暗号文パケット1611として出力したが、十分なメモリが確保できない場合などには、暗号文ブロックCnは逐次出力しても良い。
認証暗号装置1601が備えている出力フィルタ1605は、レジスタA(604)の最下位ブロックA2(t)を出力する。上記の構成例は、最も単純な出力フィルタの例であり、レジスタ212の複数ブロックにさらに非線形変換を施して安全性を高めることも可能である。
非線形な出力フィルタの例として、図6に挙げた非線形置換A801を用いる例を以下に説明する。非線形置換A801による変換をFで、出力フィルタ1605をFoutで表すとき、
Fout(A0(t), A1(t), A2(t), B0(t), …, B15(t)) = F(A2(t) XOR Bi(t)) XOR Bj(t)
で定義される出力フィルタは、出力されるビット列とレジスタの値との相関を小さくする働きがあり、結果として、より安全な認証暗号装置を実現することができる。
Fout(A0(t), A1(t), A2(t), B0(t), …, B15(t)) = F(A2(t) XOR Bi(t)) XOR Bj(t)
で定義される出力フィルタは、出力されるビット列とレジスタの値との相関を小さくする働きがあり、結果として、より安全な認証暗号装置を実現することができる。
次に、認証暗号装置1601で暗号化されたデータの完全性を検証しつつデータを復号する認証復号装置を説明する。
図18は、本実施形態の認証復号装置1801のイメージ図である。認証復号装置1801の構成は、基本的に認証暗号装置1601と同様であるが、暗号化装置1608の代わりに復号装置1806を備え、また、タグT1804とメッセージ認証子生成装置201の出力とを比較するタグ比較装置1808、復号装置1806の出力を保持するメモリ1807を備える。
認証復号装置1801への入力は、メッセージM205ではなく暗号文C1803である。暗号文C1803は暗号文入力制御装置1805を介してメッセージ認証子生成装置201と復号装置1806とに入力される。また、付加的な入力として、タグT1804がある。
次に、認証復号装置1801の動作の概要を説明する。図19は、認証復号装置1801の動作概要を説明するためのフローチャートである。
ステップ1901:認証復号装置1801は、パラメータK204と暗号文1803とタグT1804とが入力される。
メッセージ入力制御装置209は、暗号文C1803を一定長Lのブロックに分割し、クロック生成装置203からクロック信号が入力されるごとにメッセージ認証子生成装置201と復号装置1806とに向けて出力する。
パラメータ入力制御装置218は、図3で説明したメッセージ認証子生成装置201の場合と同様に動作する。
認証復号装置1801は、これらの入力を受けると、クロック生成装置203から入力されるクロック信号に従って、以下の処理を行う。
ステップ1902:暗号文C1803を、ブロック長Lビットの暗号文ブロックC1、C2、…、CNに分割する。
ステップ1903:パラメータ入力制御装置218を介して入力されたパラメータK204(Kn)を順にメッセージ認証子生成装置201に入力し、レジスタ212の初期化を行う。
ステップ1904:メッセージ認証子生成装置201に含まれているカウンタ(213;図18では不図示)の値を初期化する。本実施形態では、全てのビット値を0にセットする。
ステップ1905:カウンタ213の値がNになるまでステップ1706、1707の処理を繰り返す。
ステップ1906:クロック信号が入力されるごとに、レジスタ212の値がスイッチ1606を介して出力フィルタ1605に入力される。出力フィルタ1605は、レジスタ212から入力された値から、一定長の乱数列Rn(nはN以下の自然数であり、カウンタが現在保持している値となる。)を生成し、復号装置1806に向けて出力する。復号装置1806は、暗号文入力制御装置1805、スイッチ1607を介して入力された暗号文ブロックCnから復号文Mn’を生成し、出力する。
ステップ1907:メッセージ認証子生成装置201は図3のステップ306に従い処理を行う。
ステップ1908、1709:カウンタ213の値がNになると、メッセージ認証子生成装置201は図3におけるステップ307、308の処理を行い、復号文M’に対するメッセージ認証子T’を出力する。
ステップ1910:ステップ1909で出力されたメッセージ認証子T’とタグT1804の値と比較する。
ステップ1911、1912:ステップ1910の比較において、両者の値が等しければ復号文M’を出力する。それ以外の場合には、認証が失敗したことを示すエラー信号、たとえば1を出力する。
ステップ1913:処理を終了する。
次に、本実施形態のMAC生成装置201およびMAC検証装置401を用いたメッセージ認証方法について説明する。
図15は、本実施形態のMAC生成装置201およびMAC検証装置401によりメッセージ認証を行う通信システムの構成図である。
ここでは、MAC生成装置201、MAC検証装置401を実現するものとして、例えば、ICカード1301、1309を例にあげて説明する。
本実施形態の通信システムは、MAC生成装置201、メッセージ入力制御装置209およびパラメータ入力制御装置218を実現するICカード1301と、MAC検証装置401、メッセージ入力制御装置209およびパラメータ入力制御装置218を実現するICカード1311と、ICカード1301で生成したメッセージ認証子とメッセージとをネットワーク1340を介して相手装置に送信する送信側通信装置1320と、ネットワーク1340を介して送信側通信装置1320から送信されたメッセージ認証子とメッセージとを受信し、ICカード1311に受け渡す受信側通信装置1330とを備える。
ICカード1301、1311は、本図に示すように、CPU1302、1313、メモリ1303、1313、記憶装置1304、1314、入出力インタフェース1305、1315とをそれぞれ備える。
また、記憶装置1304、1314には、本図に示すように、秘密鍵1306、1316、メッセージ番号1307、1317、セキュリティパラメータD206、メッセージ認証子生成プログラム1308、メッセージ認証子検証プログラム1318とが、それぞれ格納されている。
メッセージ認証子生成プログラム1308は、メモリ1303にロードされ、CPU1302にて実行されることにより、上記のMAC生成装置201、メッセージ入力制御装置209およびパラメータ入力制御装置218の機能を実現する。また、秘密鍵1306とメッセージ番号1307との対を、MAC生成装置201のパラメータK204として用いる。
メッセージ認証子検証プログラム1318は、メモリ1313にロードされ、CPU1312にて実行されることにより、上記のMAC検証装置401、メッセージ入力制御装置209およびパラメータ入力制御装置218の機能を実現する。また、秘密鍵1316とメッセージ番号1317との対を、MAC検証装置401のパラメータK204として用いる。
なお、クロック信号は、ICカード1301、1311内のクロック生成機能により生成されるものを利用する。
以下、本通信システムにおける、メッセージ認証の処理手順について、説明する。
ステップ1401:データ送信者とデータ受信者は、事前に秘密鍵1306、1316を秘密裏に共有しておく。また、メッセージ番号1307、1317およびセキュリティパラメータD206は、秘密裏である必要はないが、事前に共有しておく。すなわち、ICカード1301の秘密鍵1306とICカード1311の秘密鍵1316、および、メッセージ番号1307と1317とには、それぞれ同じデータが保持される。これらの情報を共有する技術は、例えば、公開鍵暗号技術を用いることで、実現できる。
ステップ1402:メッセージ送信者は、I/Oインタフェース1305を介して、メッセージM205をICカード1301に入力する。ICカード1301(MAC生成装置201)は、メッセージM205の入力を受け付けると、秘密鍵1306とメッセージ番号1307とからなるパラメータ、および、セキュリティパラメータD206を用いて、入力されたメッセージM205に対するメッセージ認証子T207を生成し、メッセージM205とともに送信側通信装置1320に受け渡す。
ステップ1403:メッセージM205とメッセージ認証子T207とをICカード1301から受け取ると、送信側通信装置1320は、それらを、ネットワーク1340を介して、受信側通信装置1330に送信する。
ステップ1404:受信側通信装置1340は、メッセージM205およびメッセージ認証子T207を受信し、I/Oインタフェース1315を介して、ICカード1311(MAC検証装置401)に入力する。
ステップ1405:ICカード1311は、メッセージM205とメッセージ認証子T207とを受け取ると、共有情報である秘密鍵1316とメッセージ番号1317とからなるパラメータ、および、セキュリティパラメータD206とを用いて、メッセージ認証子T207を検証し、入力されたメッセージM205の真正性を判断し、真正である場合は0、そうでない場合は1を出力することにより、その結果を出力する。
具体的には、受信側でメッセージ認証子T207'を生成し、受け取ったメッセージ認証子T207と比較し、合致すれば、真正、合致しない場合は真正でないものと判断し、上記0、1を出力する。
次に、認証暗号装置1601、認証復号装置1801を実現するものとして、ICカード2001、2011を例に挙げて説明する。
図20はICカード2001、2011を含む通信システムの構成例である。図20のシステムは、図15で説明したメッセージ認証機能を備えた通信システムとほぼ同様の構成を備える。ただし、ICカード2001は、メッセージ認証子生成プログラム1308の代わりに認証暗号プログラム2002を、そして、ICカード2011は、メッセージ認証子検証装置1318の代わりに、認証復号プログラム2012を格納する。また、暗号処理を行うかどうかを決定する暗号化フラグ2003、2013をそれぞれ格納する。
以下、本通信システムにおける、データ処理の手順について説明する。
ステップ2201:データ送信者とデータ受信者とは、事前に秘密鍵1306、1316を共有しておく。これはメッセージ認証システムのステップ1401と同様であるが、この他に、データ送信者とデータ受信者とは暗号化フラグ2003と2004とを同期させ、データの暗号化を行うか否かを予め決定しておく。ただし、暗号化フラグを暗号文パケット1611に含めることで、データ通信と同時に暗号化フラグの同期を行うこともできる。
ステップ2202:メッセージ送信者は、I/Oインターフェース1305を介して、メッセージM205をICカード2001に入力する。ICカード2001(認証暗号装置1601)は、メッセージM(205)の入力を受け付けると、秘密鍵1306とメッセージ番号1307とからなるパラメータおよびセキュリティパラメータD206を用い、入力されたメッセージM(205)に対するデータ処理を行う。暗号化フラグ2003が暗号化処理を指示していない場合は、ICカード2001は上記パラメータを用いてメッセージM(205)に対するメッセージ認証子T(207)を生成し、メッセージM(205)と共に送信側通信装置1320に受け渡す。また、暗号化フラグ2003が暗号化処理を指示している場合には、ICカード2001は上記パラメータを用いてメッセージM(205)に暗号化処理を施し、暗号文C(1609)を生成すると同時に、メッセージM(205)に対するメッセージ認証子T(207)を生成し、暗号文C(1609)と共に送信側通信装置1320に受け渡す。
暗号化処理を行わない場合のICカード2001、2002の動作は前記のメッセージ認証システムの処理手順と同じなので、以下では記述を省略する。
ステップ2203:暗号文C(1309)とメッセージ認証子T(207)からなる暗号文パケット(1611)とをICカード2001から受け取ると、送信側通信装置1320は、それらを、ネットワーク1340を介して、受信側通信装置1330に送信する。
ステップ2204:受信側通信装置1330は、暗号文C(1803)およびタグT(1804)を受信し、I/Oインターフェース1315を介して、ICカード2011(認証復号装置1801)に入力する。
ステップ2205:ICカード2011は、暗号文C(1803)およびタグT(1804)を受け取ると、共有情報である秘密鍵1316とメッセージ番号1317とからなるパラメータ、およびセキュリティパラメータD206とを用いて、暗号文の復号とタグT(1804)の検証を行う。検証の結果、暗号文の改ざんが検出されなければ(暗号文C1803から計算したメッセージ認証子の値とタグT(1804)の値とが一致すれば)、復号したメッセージM’(1809)を出力する。そうでない場合には、メッセージ認証子の値が一致しなかったことを意味する信号(たとえば0)を出力する。
以上説明したように、本実施形態におけるMAC認証装置201およびMAC検証装置401によれば、高速な処理が可能であり、長期間の使用に耐え得る安全なMAC生成装置およびMAC検証装置が提供できる。また、本実施形態における認証暗号装置1601および認証復号装置1801によれば、高速な処理が可能であり、長期間の使用に耐え得る安全な認証暗号装置および認証復号装置が提供できる。さらに、上記各装置で用いられる本実施形態のMAC生成装置201は、攪拌回数を、鍵長などのセキュリティパラメータで決定する構成となっているため、攪拌処理の適用回数の変更が容易である。これは、安全性レベルと処理速度とをフレキシブルに設定できることを意味する。
インターネットのように、公開通信路を用いた通信では、メッセージの真正性検証は、信頼できる通信路を確保するために必須の技術である。
従来から知られているブロック暗号を利用した方式は、高速な処理が困難である。また、ハッシュ関数を用いた構成では、いずれの方式でも、以下の問題点がある。
(1)処理速度が遅い。
(2)出力長が短い(安全性のレベルが低い)。
(1)処理速度が遅い。
(2)出力長が短い(安全性のレベルが低い)。
ブロック暗号技術を利用した方式に比べ、ストリーム暗号技術を利用するメッセージ認証は、安価かつ高速に処理を行うことができるため、広い範囲での応用が見込まれる。
本実施形態のメッセージ認証は、ストリーム暗号技術を用いたものである。従って、本実施形態によるMAC生成装置、MAC検証装置は、任意のメッセージ認証システムにおけるメッセージ認証子生成機能、および認証子検証機能の、より安価で高速な代替として用いることができる。また、本実施形態のMAC生成装置およびMAC検証装置によれば、上記MAC生成とデータの暗号化とを同時に行う認証暗号の機能を、より安価に提供することができる。
本実施形態におけるMAC生成装置およびMAC検証装置によるメッセージの真正性検証機能は、従来方式に比べ、以下の利点を有する。
(1)メッセージの真正性を検証するための実装コストを最小限に抑えられる。
(2)ブロック暗号を用いるものに比べて高速な処理を行うことができ、計算機に対する負荷が少ない。
(1)メッセージの真正性を検証するための実装コストを最小限に抑えられる。
(2)ブロック暗号を用いるものに比べて高速な処理を行うことができ、計算機に対する負荷が少ない。
一般的に、組み込み機器や携帯端末では、実装やコストに制約があり、メッセージの真正性検証は軽視されがちである。このような計算機の能力に制限がある環境における暗号処理では、コストパフォーマンスに優れるストリーム暗号を用いる場合が多い。本実施形態のMAC生成装置およびMAC検証装置はこのような環境でのメッセージ検証機能の導入コストを最小限に抑えることができ、今後のユビキタス情報端末での広い応用が期待される。
Claims (15)
- 送受信するメッセージデータの完全性を検証するためのメッセージ認証子を当該メッセージデータから生成するメッセージ認証子生成装置であって、
第1のパラメータに初期化処理を施し、一定長のランダムなビット列からなるデータを出力する初期化装置と、
前記初期化装置の出力したデータを格納するレジスタと、
入力される前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、攪拌後のデータを前記レジスタに格納するデータ攪拌装置と、
前記レジスタに格納されているデータであって、前記データ攪拌装置において攪拌後のデータを、所定のデータ長に圧縮し、メッセージ認証子として出力する圧縮処理を行うデータ圧縮装置と、
を備え、前記データ攪拌装置は、前記一定長のメッセージデータの2倍以上のサイズの出力を有する非線形変換装置と、を備えること
を特徴とするメッセージ認証子生成装置。 - 請求項1記載のメッセージ認証子生成装置であって、
前記レジスタは、前記初期化装置の出力したデータを分割して格納する第1の小レジスタと第2の小レジスタとを備え、
前記第1の小レジスタのサイズは、前記非線形変換装置の出力データのサイズであり、
前記非線形変換装置は、
前記第1の小レジスタに格納されているデータと前記第2の小レジスタに格納されているデータの一部と前記メッセージデータとを非線形に攪拌し、攪拌後のデータを前記第1の小レジスタに格納し、
前記データ攪拌装置は、
前記第2の小レジスタに格納されているデータと前記第1の小レジスタに格納されているデータの一部とを線形に攪拌し、攪拌後のデータを前記第2の小レジスタに格納する線形変換装置を備えること
を特徴とするメッセージ認証子生成装置。 - 請求項2記載のメッセージ認証子生成装置であって、
前記データ攪拌装置は、前記メッセージデータの入力を制御するスイッチをさらに備え、
前記非線形変換装置は、
前記スイッチにより前記メッセージデータの入力が制限されている場合または前記メッセージデータの入力が無い場合は、前記第1の小レジスタに格納されているデータと前記第2の小レジスタに格納されているデータの一部とのみを入力として非線形に攪拌し、攪拌後のデータを前記第1の小レジスタに格納すること
を特徴とするメッセージ認証子生成装置。 - 請求項3記載のメッセージ認証子生成装置であって、
前記第1の小レジスタは、nビット(nは、前記一定長のメッセージのサイズを示す数字以上の任意の自然数)サイズのブロック、3ブロック分の容量を備え、
前記第2の小レジスタは、前記ブロック、m(mは任意の自然数)ブロック分の容量を備え、
前記非線形変換装置は、
前記1ブロックのデータを処理して、前記1ブロックのデータを出力する第1の非線形置換および第2の非線形置換を備えること
を特徴とするメッセージ認証子生成装置。 - 請求項4記載のメッセージ認証子生成装置であって、
前記非線形変換装置は、前記第1の非線形置換および前記第2の非線形置換とを用いて以下の処理を行い
X0←A1,
X1←A2 XOR G(A1 XOR M),
X2←A0 XOR F(A1 XOR (B10 <<< 17)),
(ただし、前記第1の小レジスタの記憶内容を上位ブロックから順にA0, A1, A2、前記第2の小レジスタの第iブロックをBi(1<=i<=m)、前記第1の非線形置換をF、前記第2の非線形置換をG、前記スイッチを介して入力されるデータをM、レジスタxのブロック幅での左nビット巡回シフトを(x <<< n)、データの代入を←、前記非線形データ変換装置の出力を上位ブロックからX0, X1, X2と表す。)、
前記X0, X1, X2を、それぞれ、前記小レジスタの上位ブロックから順に格納すること
を特徴とするメッセージ認証子生成装置。 - 請求項5記載のメッセージ認証子生成装置であって、
前記ブロックは64ビットで構成され、
前記第1の非線形置換及び前記第2の非線形置換は、それぞれ、
入力されるブロックを8ビット単位に分けて非線形変換処理を行う変換テーブルと、
32ビット単位で線形変換処理を行う第1の線形変換および第2の線形変換と、をさらに備え、
前記変換テーブルと前記第1の線形変換および第2の線形変換とを用いて、以下の処理を行うこと
p0||p1||...||p7←p,
ti←S[pi] (0 <= i <= 7),
u0||u1||u2||u3←L0(t0, t1, t2, t3),
u4||u5||u6||u7←L1(t4, t5, t6, t7),
c←u4||u5||u2||u3||u0||u1||u6||u7,
(ただし、前記第1および第2の非線形置換への入力をp、前記変換テーブルによる変換をS[x]、32×32行列による前記第1の線形変換をL0、32×32行列による前記第2の線形変換をL1、データxとyとの連結をx||yと表す。)
を特徴とするメッセージ認証子生成装置。 - 請求項4記載のメッセージ認証子生成装置であって、
前記第2の小レジスタの容量は64ビットサイズのブロック16ブロック分であり、
前記線形変換装置は、以下の処理を行うこと
Yi←B(i-1), (1<=i<=15, i!= 4, 10)
Y0←B15 XOR A0,
Y4←B3 XOR B7,
Y10←B9 XOR (B13 <<< 32),
(ただし、iは自然数、XORは排他的論理和、前記第1の小レジスタの記憶内容を上位ブロックから順にA0, A1, A2、前記第2の小レジスタの記憶内容を上位ブロックから順にB0, B1, …, B15、線形変換装置の出力データを上位ブロックからY0, Y1, …, Y15、レジスタxのブロック幅での左nビット巡回シフトを(x <<< n)、とする。)
を特徴とするメッセージ認証子生成装置。 - 請求項3記載のメッセージ認証子生成装置であって、
前記初期化装置は、前記レジスタと前記データ攪拌装置と前記スイッチとを備え、当該レジスタと当該データ攪拌装置と当該スイッチとにより、前記初期化処理を行い、
前記データ圧縮装置は、前記レジスタと前記データ攪拌装置と前記スイッチとを備え、当該レジスタと当該データ攪拌装置と当該スイッチとにより、前記圧縮処理を行うこと
を特徴とするメッセージ認証子生成装置。 - 請求項1記載のメッセージ認証子生成装置であって、
前記データ攪拌装置の攪拌回数を制御する制御装置を備え、
前記制御装置は、予め与えられる前記メッセージ認証子生成装置の安全性の指標である第2のパラメータにより、前記攪拌回数を決定し、制御すること
を特徴とするメッセージ認証子生成装置。 - 受信するメッセージデータとともに受信する当該メッセージデータの完全性を検証するためのメッセージ認証子を検証するメッセージ認証子検証装置であって、
請求項1記載のメッセージ認証子生成装置と、
前記メッセージ認証子生成装置を用いて、受信したメッセージデータから、第2のメッセージ認証子を生成し、生成した前記第2のメッセージ認証子と、前記受信したメッセージ認証子とを比較し、比較結果を出力する比較手段と、
を備えることを特徴とするメッセージ認証子検証装置。 - 送受信するメッセージデータの完全性を検証するメッセージ検証システムであって、
請求項1記載のメッセージ認証子生成装置を備える送信側通信装置と、
請求項10のメッセージ認証子検証装置を備える受信側通信装置と、
を備えることを特徴とするメッセージ検証システム。 - 送受信するメッセージデータの完全性を検証するためのメッセージ認証子を生成するメッセージ認証子生成方法であって、
第1のパラメータに初期化処理を施し、一定長のランダムなビット列からなるデータをレジスタに格納する初期化処理ステップと、
入力される前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、攪拌後のデータを前記レジスタに格納するデータ攪拌ステップと、
前記データ攪拌ステップにおいて攪拌後のデータであって、前記レジスタに格納されているデータを、所定のデータ長に圧縮し、メッセージ認証子として出力するデータ圧縮ステップと、を備え、
前記攪拌は、前記一定長のメッセージデータの2倍以上のサイズの出力を有する非線形変換装置を有する攪拌装置により行われること、
を特徴とするメッセージ認証子生成方法。 - 送受信するメッセージデータを暗号化するとともに完全性を検証するためのメッセージ認証子を当該メッセージデータから生成する認証暗号装置であって、
請求項1記載のメッセージ認証子生成装置と、
前記メッセージ認証子生成装置の備える前記レジスタから一定長のビット列を選択して出力する出力フィルタと、
前記出力フィルタから出力される出力ビット列と前記メッセージ認証子生成装置へ入力される一定長のメッセージデータとの排他的論理和をとり暗号文ブロックを生成する暗号化装置と、を備えること
を特徴とする認証暗号装置。 - 一定長の暗号文ブロック単位で受信する暗号化されたメッセージデータを復号するとともに当該メッセージデータの完全性を検証するためのタグを検証する認証復号装置であって、
請求項10に記載のメッセージ認証子検証装置と、
復号した前記メッセージデータである復号文を蓄えるメモリと、
前記メッセージ認証子検証装置が備える前記メッセージ認証子生成装置の前記レジスタから一定長のビット列を選択して出力する出力フィルタと、
前記出力フィルタから出力される出力ビット列と、前記一定長の暗号文ブロック単位のメッセージデータとの排他的論理和をとることにより前記メッセージデータを復号し復号文として、前記メモリに出力する復号装置と、を備え、
前記メッセージ認証子検証装置が完全性を検証した後に、前記メモリに蓄えられた復号文を出力すること
を特徴とする認証復号装置。 - 送受信するメッセージを暗号化して送信するとともに前記メッセージの完全性を検証するメッセージ検証システムであって、
請求項13の認証暗号装置を備える送信側通信装置と、
請求項14の認証復号装置を備える受信側通信装置と、
を備えることを特徴とするメッセージ検証システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004239359 | 2004-08-19 | ||
JP2004239359 | 2004-08-19 | ||
PCT/JP2005/015124 WO2006019152A1 (ja) | 2004-08-19 | 2005-08-19 | メッセージ認証装置及び認証暗号装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2006019152A1 true JPWO2006019152A1 (ja) | 2008-05-08 |
Family
ID=35907535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006531866A Withdrawn JPWO2006019152A1 (ja) | 2004-08-19 | 2005-08-19 | メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2006019152A1 (ja) |
WO (1) | WO2006019152A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4857230B2 (ja) * | 2007-03-30 | 2012-01-18 | 株式会社日立製作所 | 疑似乱数生成装置及びそれを用いた暗号化処理装置 |
JP5006770B2 (ja) * | 2007-11-28 | 2012-08-22 | 日本電信電話株式会社 | メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体 |
US8452984B2 (en) * | 2008-08-28 | 2013-05-28 | Alcatel Lucent | Message authentication code pre-computation with applications to secure memory |
WO2011155039A1 (ja) * | 2010-06-10 | 2011-12-15 | 三菱電機株式会社 | メッセージ認証コード演算装置、メッセージ認証コード演算方法およびメッセージ認証コード演算プログラム |
JP6273223B2 (ja) * | 2015-02-26 | 2018-01-31 | 日本電信電話株式会社 | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム |
JP6273224B2 (ja) * | 2015-02-26 | 2018-01-31 | 日本電信電話株式会社 | 暗号化システム、暗号化装置、復号装置、暗号化方法 |
JP6273226B2 (ja) * | 2015-02-26 | 2018-01-31 | 日本電信電話株式会社 | 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法 |
JP6273225B2 (ja) * | 2015-02-26 | 2018-01-31 | 日本電信電話株式会社 | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム |
-
2005
- 2005-08-19 JP JP2006531866A patent/JPWO2006019152A1/ja not_active Withdrawn
- 2005-08-19 WO PCT/JP2005/015124 patent/WO2006019152A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2006019152A1 (ja) | 2006-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mitali et al. | A survey on various cryptography techniques | |
US6950517B2 (en) | Efficient encryption and authentication for data processing systems | |
US7945049B2 (en) | Stream cipher using multiplication over a finite field of even characteristic | |
US5623549A (en) | Cipher mechanisms with fencing and balanced block mixing | |
EP2197144A1 (en) | Methods and devices for a chained encryption mode | |
WO2015015702A1 (ja) | 認証暗号装置、認証暗号方法および認証暗号用プログラム | |
US20090080647A1 (en) | Method and System for Usage of Block Cipher Encryption | |
EP1319280A2 (en) | Parallel bock encryption method and modes for data confidentiality and integrity protection | |
WO2007105709A1 (ja) | 情報処理システム、情報処理方法および情報処理プログラム | |
US8122075B2 (en) | Pseudorandom number generator and encryption device using the same | |
JPWO2006019152A1 (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法 | |
US10148425B2 (en) | System and method for secure communications and data storage using multidimensional encryption | |
JPH0918469A (ja) | 暗号通信装置、システム及び暗号装置 | |
JP2007316614A (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
Joshy et al. | Text to image encryption technique using RGB substitution and AES | |
KR100551992B1 (ko) | 어플리케이션 데이터의 암호화 및 복호화 방법 | |
JP4857230B2 (ja) | 疑似乱数生成装置及びそれを用いた暗号化処理装置 | |
JP3358954B2 (ja) | 擬似ランダムビット列生成器及びそれを使用する暗号通信方法 | |
CN108616351B (zh) | 一种全动态加密解密方法及加密解密装置 | |
JPH1091066A (ja) | 擬似ランダムビット列生成器及びそれを使用する暗号通信方法 | |
JP2002215026A (ja) | 署名付き暗号通信方法及びその装置 | |
KR102626974B1 (ko) | 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템 | |
JPH0736673A (ja) | 乱数発生器、及びそれを用いた通信システム及びその方法 | |
Sharma et al. | TEXCEL: text encryption with elliptic curve cryptography for enhanced security | |
Luu et al. | VARIANT OF OTP CIPHER WITH SYMMETRIC KEY SOLUTION |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080811 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20100108 |