明 細 書
メッセージ認証装置及び認証暗号装置 参照による取り込み
[0001] 本発明は 2004年 8月 19曰に出願された曰本特願 2004— 239359の優先権を主 張し、文献の参照による織りみ込みが認められる指定国については、上記出願の開 示内容および特開 2003— 37482号公報の開示内容は参照により本出願に織り込 まれる。
技術分野
[0002] 本発明は、任意長のメッセージ認証子を高速に生成する技術に関する。
背景技術
[0003] 現在、インターネットを代表とする公開通信路を用いた通信は増加の一途をたどつ ている。このような通信路では、通信路上で、送信されたメッセージが悪意ある第三 者によって改ざんされる可能性があり、受信したメッセージの真贋を確認する方法が 必要となる。
[0004] メッセージの真贋を確認する方法として、共通鍵暗号技術を用いたメッセージ認証 子 (Message Authentication Code:以下 MACと呼ぶ。)を用いるものと、公開鍵暗号 技術による電子署名を用いるものとがある。電子署名を用いる方法は、 MACを用い るものに比べて処理に時間を要する。従って、小さなパケットを大量に送受信する IP 通信などでは、一般的に電子署名による方法よりも MACによる方法が用いられてい る。
[0005] MACを用いる方法は、送信データに所定の処理を施して生成される MACを比較 することにより、メッセージの改ざんの有無を確認するものである。
[0006] 一般に、 MACによる受信メッセージへの改ざんの有無の検証は、以下のように行 われる。
[0007] メッセージ送信側とメッセージ受信側とが、同じ MAC生成機能を有する。送信側で は、送信するメッセージ力も MAC (第 1の MAC)を生成し、メッセージと共に送信す
る。受信側では、受信したメッセージから同様に MAC (第 2の MAC)を生成し、上記メ ッセージと共に受信した第 1の MACと第 2の MACとを比較する。両者が合致すれば 、メッセージの改ざんはないものと検証される。
[0008] この MACを生成する方法としては、ブロック暗号を用いた OMAC、ノ、ッシュ関数を 用いた HMAC、擬似乱数生成器を転用した Helix、 SOBER— 128 (非特許文献 1 参照。)などが知られている。また、 MACを生成する専用アルゴリズムとして、 UMA Cなどが知られている。また、前記 SOBER— 128や Helixは MACの生成とデータの 暗号ィ匕を同時に行うことができる方式である。 MACの生成とデータの暗号化を同時 に行う暗号化方式を認証暗号と呼ぶ。
[0009] 非特許文献 1 : P. Hawkes and G. Rose, Primitive Specification for SOBER- 128," IA CR ePrint Archive, http://eprint.iacr.org/2003/81/, 2003.
発明の開示
発明が解決しょうとする課題
[0010] 上記の各方法は、それぞれ問題がある。例えば、ブロック暗号、ハッシュ関数を用 Vヽて MACを生成する方法は、処理速度に問題がある。
[0011] 擬似乱数生成器を用いた SOBER— 128は、安全性に懸念があることが報告され ている。具体的には、 SOBER— 128では、内部に、非線形変換部を有し、その非線 形変換部からの出力長と、非線形変換部に対して入力されるメッセージの長さとが同 じである。これは、出力差分をメッセージ差分で完全にコントロールできることを意味 する。
[0012] また、 Helixや専用アルゴリズムである UMACは、特定のプラットフォームでは高速 だ力 ハードウ ア実装には向かないなど、汎用性に欠ける。さらに、 Helixは、出力 長が 160ビットであり、将来的に高い安全性を保証できる MAC生成アルゴリズムとは 言い難い。
課題を解決するための手段
[0013] 本発明は、このような事情に鑑みてなされたもので、小さなデータを大量に送受信 する IP通信などを行う任意のプラットフォームに適用可能な、実用に耐え得る性能と 安全性とを備えた、 MAC生成の技術を提供する。また、この MAC生成装置を備え、
MAC生成とデータの暗号ィ匕を同時に行う技術を提供する。
[0014] 本発明は、この MAC生成機能であって、 SOBER— 128の弱点を克服するものを 提供する。
[0015] 本発明では、上記弱点を克服するために、以下の構成をとる。
(1)非線形変換部に入力されるメッセージのサイズを出力長の 1Z2以下とする。
(2)非線形変換部からの出力をバッファにフィードバックする。
[0016] 具体的には、送受信するメッセージデータの完全性を検証するためのメッセージ認 証子を当該メッセージデータ力も生成するメッセージ認証子生成装置であって、第 1 のパラメータに初期化処理を施し、一定長のランダムなビット列力 なるデータを出力 する初期化装置と、前記初期化装置の出力したデータを格納するレジスタと、入力さ れる前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、 当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、 攪拌後のデータを前記レジスタに格納するデータ攪拌装置と、前記レジスタに格納さ れているデータであって、前記データ攪拌装置において攪拌後のデータを、所定の データ長に圧縮し、メッセージ認証子として出力する圧縮処理を行うデータ圧縮装置 と、を備え、前記データ攪拌装置は、前記一定長のメッセージデータの 2倍以上のサ ィズの出力を有する非線形変換装置を備えることを特徴とするメッセージ認証子生成 装置を提供する。
[0017] また、このメッセージ認証子生成装置を備え、メッセージ認証子生成とデータの暗 号化とを同時に行う技術を提供するものである。
[0018] 上記態様の、非線形変換部に入力されるメッセージのサイズを出力長の 1Z2以下 とする構成により、出力差分値のコントロールを困難にする。また、本発明の非線形 変換部からの出力をバッファにフィードバックする構成により、バッファの状態更新を 非線形にすることができ、結果として、暗号学的な強度が増すことが期待できる。
[0019] また、上記態様によれば、ノッファ部と非線形変換部のデータの相関が小さくなるこ とが期待できる。このため、任意のプラットフォームで高速に動作する MAC生成装置 、および MAC検証装置を提供することができる。
[0020] 本発明は、特に、特開 2003— 37482号公報に開示する擬似乱数生成器 (以下、
MUGIと称す)に、低コストで適用することが可能である。すなわち、本発明は、 MUG Iに、 MACを生成する機能を安価に提供することができる。また、本発明は、 MUGI に認証暗号の機能を提供することができる。
発明の効果
[0021] 本発明によれば、任意のプラットフォームに適用可能な、実用に耐え得る性能と安 全性とを備えた MAC生成および認証暗号の技術を提供できる。
図面の簡単な説明
[0022] [図 1]本実施形態の MAC生成装置の概略構成を例示する図である。
[図 2]本実施形態の MAC生成装置の動作を例示するフローチャートである。
[図 3]本実施形態の攪拌装置の概略構成を例示する図である。
[図 4]本実施形態の攪拌装置の動作を例示するフローチャートである。
[図 5]本実施形態の非線形変換装置の構成を例示する図である。
[図 6]本実施形態の非線形置換の構成を例示する図である。
[図 7]本実施形態の線形変換装置の構成を例示する図である。
[図 8]本実施形態のデータ攪拌装置の構成を例示する図である。
[図 9]本実施形態の初期化装置の構成を例示する図である。
[図 10]本実施形態の初期化装置の処理を例示するフローチャートである。
[図 11]本実施形態のデータ圧縮装置の構成を例示する図である。
[図 12]本実施形態のデータ圧縮装置の処理を例示するフローチャートである。
[図 13]本実施形態の MAC検証装置の概略構成を例示する図である。
[図 14]本実施形態の MAC検証装置の動作を例示するフローチャートである。
[図 15]本実施形態のメッセージ認証方式を用いた通信システムの構成を例示する図 である。
[図 16]本実施形態の認証暗号装置の概略構成を例示する図である。
[図 17]本実施形態の認証暗号装置の動作を例示するフローチャートである。
[図 18]本実施形態の認証復号装置の概略構成を例示する図である。
[図 19]本実施形態の認証復号装置の動作を例示するフローチャートである。
[図 20]本実施形態の認証暗号技術を用いた通信システムの構成を例示する図であ
る。
[図 21]本実施形態の非線形変換装置の他の構成を例示する図である。
発明を実施するための最良の形態
[0023] 以下に、本発明を適用する実施形態を説明する。
[0024] ここでは、本発明を認証暗号装置に適用した場合を実施形態として説明する。本実 施形態の認証暗号装置は、レジスタを持つメッセージ認証子生成装置を利用する。 そこでまず、本実施形態の認証暗号装置に最適なメッセージ認証子生成装置を説 明する。
[0025] 図 1は、本実施形態の認証暗号装置に最適なメッセージ認証子 (MAC)生成装置 のイメージ図である。本図に示すように、本実施形態の MAC生成装置 201は、メッセ ージ入力制御装置 209を介して入力されたメッセージ M205に、クロック生成装置 20 3から入力されるクロック信号に従って処理を施し、メッセージ認証子 T207を生成す る。
[0026] 本実施形態の MAC生成装置 201への外部からの入力は、メッセージ入力制御装 置 209を介して入力されるメッセージ M205の他に、パラメータ入力制御装置 218を 介して入力されるパラメータ K204と、セキュリティパラメータ D206と、クロック生成装 置 203の生成するクロック信号とがある。
[0027] メッセージ入力制御装置 209は、任意のサイズのメッセージ M205を、 MAC生成 装置 201の内部での処理単位に分割して、 MAC生成装置 201に入力する。
[0028] パラメータ入力制御装置 218は、任意のサイズのパラメータ K204を、 MAC生成装 置 210の内部での処理単位に分割して、 MAC生成装置 201に入力する。
[0029] クロック生成装置 203は、クロック信号を生成し、 MAC生成装置 201およびメッセ ージ入力制御装置 209に入力する。
[0030] MAC生成装置 201は、初期化装置 211、レジスタ 212、メモリ 210、スィッチ 215、
217、データ攪拌装置 208、制御装置 214、データ圧縮装置 216、カウンタ 213とを 備える。
[0031] 初期化装置 211は、パラメータ入力制御装置 218を介して入力されたパラメータ K 204をレジスタ 212長毎【こ切り出して、レジスタ 212【こ出力する。
[0032] レジスタ 212は、パラメータ K204またはデータ攪拌装置 208からの出力を一時的 に保持する。
[0033] メモリ 210は、メッセージ入力制御装置 209を介して入力されたメッセージ M205を 一時的に保持する。
[0034] スィッチ 215は、制御装置 214の指示に従って、レジスタ 212に保持されているデ ータを、データ攪拌装置 208およびデータ圧縮装置 216のいずれかに入力するよう 切り替える。
[0035] スィッチ 217は、制御装置 214の指示に従って、メモリ 210に保持されているデータ を、データ攪拌装置 208に入力する力否かを切り替える。
[0036] 制御装置 214は、セキュリティパラメータ D206、カウンタ 213に従って、スィッチ 21
5およびスィッチ 217を制御する。
[0037] カウンタ 213は、クロック生成装置 203からの入力回数をカウントするもので、クロッ ク生成装置 203からクロック信号が入力される毎に、保持する値が 1ずつ増加する よう更新される。
[0038] データ攪拌装置 208は、データ攪拌装置 208に入力されたデータを攪拌して出力 する。
[0039] データ圧縮装置 216は、データ圧縮装置 216に入力されたデータに所定の処理を 施し、メッセージ認証子 T207を生成し、出力する。
[0040] 初期化装置 211、データ攪拌装置 208、データ圧縮装置 216の詳細については、 後述する。
[0041] また、入力されるパラメータ K204は、基本的には、秘密鍵と ヽつた秘密情報である 。しかし、その一部をカウンタのような公開値としてもよい。
[0042] セキュリティパラメータ D206は、 MAC生成装置 201の暗号方式の安全性を表す 指標であり、鍵長などをセキュリティパラメータ D206としてもよい。セキュリティパラメ ータ D206は、初期化装置 211、データ圧縮装置 216等の MAC生成装置 201内の 各機能において行われる、後述する攪拌回数を決定する基礎となるパラメータである 。セキュリティパラメータ D206に基づいて、所定の算出方法に従って決定された各 機能での攪拌回数に従って、制御装置 214は、各機能での攪拌回数を制御する。
[0043] 本実施形態では、データ攪拌装置 208および初期化装置 211は、予め定められた データ長(以後、 Lとする)のデータを受け入れ、処理を行う。上記のメッセージ入力 制御装置 209およびパラメータ入力制御装置 218は、任意サイズのメッセージ M20 5およびパラメータ K204を、本実施形態のデータ攪拌装置 208および初期化装置 2 11でそれぞれ処理するために設けられて ヽる。
[0044] メッセージ入力制御装置 209を代表として説明すると、メッセージ入力制御装置 20 9は、クロック生成装置 203からクロックを受信する毎に、メッセージ M205力 Lビット 切り出し、メモリ 210に格納する。メッセージ M205が Lの整数倍でない場合は、予め ビット列 100· · ·0などを用いてデータパディングを行 、、 Lの整数倍となるようにする。 本実施形態では、メッセージ Μ205は、メッセージ入力制御装置 209において、各メ ッセージブロック Ml、 Μ2、〜ΜΝに分割される(各メッセージブロック Μ1、 Μ2· ··Μ Νのサイズは Lである。また、 Nは、パディング後のメッセージ M205を Lで割った場合 の商である。 ) oパラメータ入力制御装置 218の動作も基本的に同様であり、パラメ一 タ K204は、 Κ1、 Κ2、〜Κη· ··ΚΡに分割される(分割後のパラメータの Κηのサイズ は Lである。また、 Ρは、パディング後のパラメータ Κ204を Lで割った場合の商である 。ここで、 ηは自然数であり、ここでは、 Ρ以下の自然数である。 ) ο
[0045] 次に、 MAC生成装置 201の動作の概要を説明する。図 2は、 MAC生成装置 201 の動作概要を説明するためのフローチャートである。
[0046] ステップ 301: MAC生成装置 201には、パラメータ K204とメッセージ M205とが入 力される。パラメータ K204は、パラメータ入力制御装置 218を介して初期化装置 21 1に、メッセージ M205は、メッセージ入力制御装置 209を介してメモリ 210に入力さ れる。
[0047] メッセージ入力制御装置 209は、メッセージ M205を、一定長 Lのブロックに分割し 、クロック生成装置 203からクロック信号が入力されるごとにメモリ 210にむけて出力 する。パラメータ入力制御装置 218も、同様に、パラメータ K204を、一定長 Lのプロ ックの分割し、クロック生成装置 203からクロック信号が入力されるごとに、初期化装 置 211にむけて出力する。
[0048] MAC生成装置 201は、これらの入力を受けると、クロック生成装置 203から入力さ
れるクロック信号に従って、以下の処理を行う。
[0049] ステップ 302 :メッセージ M205を、メッセージブロック Mnに分割する。
[0050] ステップ 303 :パラメータ入力制御装置 218を介して入力されたパラメータ K204 (K η)を初期化装置 211に入力する。初期化装置 211に、入力されたパラメータ Κ204 ( Κη)に後述する初期化処理を施させ、レジスタ 212長のデータを出力させる。初期化 装置 211から出力されたデータは、レジスタ 212に格納される。
[0051] ステップ 304 :カウンタ 213の値を初期化する。本実施形態では、全てのビット値を 0 にセットする。
[0052] ステップ 305、 306 :クロック信号が入力される毎に、メッセージ入力制御装置 209 を介することにより、メッセージブロック Μη (ηは、 Ν以下の自然数であり、カウンタ 21 3が現在保持している値となる。)として分割されたメッセージ Μ205が、メモリ 210に 格納される。データ攪拌装置 208に、メモリ 210に格納されているメッセージブロック Μηとレジスタ 212に格納されているデータとを攪拌させ、レジスタ 212長のデータを 出力させる。出力されたデータは、レジスタ 212に格納される。そして、カウンタ 213 の値を 1増カロさせる。
[0053] ステップ 305、 306の処理を、全てのメッセージブロック Μηを処理し終えるまで、す なわち、 ηが 1から Νになるまで繰り返す。
[0054] ステップ 307 :カウンタ 213の値が Νになると、制御装置 214に、レジスタ 212に保 持されるデータがデータ圧縮装置 216に入力されるようにスィッチ 215を切り替えさ せる。そして、その時点でレジスタ 212に保持されるデータ力 データ圧縮装置 216 に入力される。
[0055] ステップ 308 :データ圧縮装置 216に、入力されたデータの圧縮を行わせ、セキユリ ティパラメータ D205に応じて、レジスタ 212のビット長よりも短いデータを生成させる 。そして、生成されたデータをメッセージ認証子 Τ207として出力する。
[0056] 次に、初期化装置 211、データ攪拌装置 208、データ圧縮装置 216について説明 する。
[0057] 初期化装置 211、データ攪拌装置 208、データ圧縮装置 216は、それぞれ独立な 関数を用いて構成してもよいが、同じ攪拌関数によっても構成が可能である。実装コ
ストを勘案すれば、同じ攪拌関数を用いる方がよい。以下、一つの攪拌関数を定義し
、上記 3装置を、この攪拌関数により実現する場合を例にあげ、説明する。
[0058] 図 3は、上記 3装置に適用可能な攪拌関数の処理を実現する攪拌装置 601の概略 を説明するための図である。また、図 4は、攪拌装置 601の動作概要を説明するため の図である。
[0059] 図 3に示すように、攪拌装置 601への入力は、レジスタ 602に格納されているデー タと、外部入力 603に格納されているデータとである。外部入力 603のデータは、スィ ツチ 609により、入力の有無を制御される。すなわち、攪拌装置 601は、外部入力 60 3のデータ入力ありで、レジスタ 602内のデータを攪拌する処理と、外部入力 603の データ入力なしで、レジスタ 602内のデータを攪拌する処理とを行うことができる。
[0060] 以下、説明のため、レジスタ 602を、 2つのレジスタに分割し、それぞれレジスタ A6 04、レジスタ B605とする。
[0061] 図 3に示すように、本実施形態の攪拌装置 601は、非線形変換装置 606と、線形変 換装置 607、および入力フィルタ 611とを備える。本実施形態では、線形変換装置 6 07を実現する関数は、非退ィ匕なものを用いる。また、線形変換装置 606を実現する 関数は、レジスタ A604からの入力に関して、可逆なものを用いる。それぞれ詳細は、 後述する。
[0062] 図 3に示すように、攪拌装置 601は、スィッチ 609と制御装置 608とスィッチ 610と によって切り替えられるレジスタ 602からの入力と外部入力 603からの入力とを受ける と、以下の処理を行う。
[0063] なお、スィッチ 609は、制御装置 608からの切り替え指示に従って、入力の切り替え を行う。
[0064] ステップ 702:外部入力 603に格納されて!、るデータの有無および制御装置 608か らの信号を確認する。
[0065] ステップ 703、 704、 705 :外部入力 603にデータが保持されていない場合、すな わち、外部入力 603からデータが入力されない場合、もしくは、制御装置 608から、 外部入力 603からのデータを無視する信号を受信した場合には、スィッチ 609を、外 部入力 603が入力フィルタ 611に入力しないように切り替える。一方、外部入力 603
にデータが保持され、かつ、制御装置 608から無視を指示する信号が出力されてい ない場合には、スィッチ 609を、外部入力 603が保持しているデータ力 入力フィル タ 611に入力されるように切り替える。
[0066] ステップ 706 :スィッチからの入力およびメモリのデータを入力フィルタ 610に入力 する。入力フィルタ 611は入力に応じて、一定長のデータを出力する。
[0067] ここで、入力フィルタ 611は、スィッチからの入力とメモリのデータとの排他的論理和 をとる処理を行う。また、さらに排他的論理和の結果を後述する非線形置換 A801に より置換してちょい。
[0068] ステップ 707 :レジスタ A604とレジスタ B605とに格納されているデータ、および、ス イッチ 609を介して受け取る外部入力 603が保持しているデータまたはレジスタ B60 5に格納されているデータを、非線形変換装置 606に入力し、データを攪拌する。
[0069] ステップ 708 :非線形装置 606の出力およびレジスタ B605が保持しているデータを 、線形変換装置 607に入力する。
[0070] ステップ 709 :線形変換装置 607からの出力を、レジスタ A604、レジスタ B605に 格納する。
[0071] ここで、非線形変換装置 606、線形変換装置 607の詳細について、説明する。以 下において、前記のデータ長 Lを 64ビットとする。すなわち、外部入力 603のサイズ を 64ビットとする。
[0072] また、レジスタ A604、レジスタ B605は、それぞれ、 3個、 16個の 64ビット小レジス タカも構成されるものとして説明する。また、それぞれの小レジスタを、 AO、 Al、 A2、 BO、 Bl、 "·Β15と表す。
[0073] 図 3におけるレジスタ Α604、レジスタ Β605からの非線形変換装置 606、線形変換 装置 607への細線は、それぞれ 1本の線が 64ビットデータの流れを表す。また、各レ ジスタとも、上位(左 Μ則力ら、 AO, Al、 A2、 BO、 Bl、 - --:615とする。
[0074] また、以下の処理では、各小レジスタが保持するデータは、時刻とともに更新されて 行く。時刻 tに状態更新がなされた時点でのレジスタ AOを、 AO (t)と記述する。これ は、状態更新を記述する際に、時刻 tを明記する必要がある場合のみ採用する。さら に、 1^+1) 八0(1:)+八1(1:)との記述は、矢印の右辺のレジスタ AO(t)とレジスタ Al(t)
とに格納されているデータを結合し、矢印の左辺のレジスタ Bl(t+1)に代入することを 示す。
[0075] 図 5は、本実施形態の非線形変換装置 606の構成を説明するための図である。本 図において、丸に十字の記号は、排他的論理和を表す。また、式中では、排他的論 理和は、 "XOR"で表す。
[0076] 非線形装置 606は、非線形置換 A801と非線形置換 B802と巡回シフト装置 803と を備える。非線形置換 A801および非線形置換 B802の詳細については、後述する
[0077] 非線形変換装置 606には、レジスタ A604に格納されているデータと、レジスタ B60 5の B10に格納されているデータと、スィッチ 609により選択される、外部入力 603ま たはレジスタ Bの B4に格納されているデータと、の 3つのデータが入力される。非線 形変換装置 606は、時刻 t〖こおける、上記 3つの入力に処理を施し、その結果を、時 刻 t+1において、レジスタ A604に格納することにより、レジスタ A604の状態を更新 する。
[0078] 非線形変換装置 606によるレジスタ A604の状態更新の詳細は、以下の式で与え られる。ここでは、非線形置換 A801を F、非線形置換 B802を G、スィッチ 609からの 入力データを P(t)とする。
[0079] AO(t+l)^Al(t)
Al(t+1 A2(t) XOR G(Al(t) XOR P(t》
A2(t+l)^A0(t) XOR F(Al(t) XOR B10(t) «< 17)
ここで、上記式中の記号"〈くぐ,は、 64ビットレジスタにおける nビット左巡回シフトを 表す。以下、本明細書中、同様である。
[0080] レジスタ A604の状態更新の別例を説明する。図 21は、本別例の非線形変換装置 606の構成を説明するための図である。本図における丸に十字の記号、 "XOR"は、 図 5と同様の意味である。本別例の非線形変換装置 606によるレジスタ A604の状態 更新の詳細は以下の式で与えられる。
[0081] A0(t+l)^Al(t)
Al(t+1 A2(t) XOR G(Al(t) XOR B4(t》
A2(t+l)^A0(t) XOR F(Al(t) XOR P(t) «< 17)
以上説明したように、本実施形態および本別例では、非線形変換装置 606は、 64 ビット入力データ P ( から、 192 (64 X 3)ビットの出力を得ている。すなわち、入カメ ッセージのサイズを出力長の 1/2以下としている。
[0082] 次に、上記の非線形置換 A801、 B802について説明する。
[0083] 図 6は、非線形置換 A801の構成を説明するための図である。非線形置換 A801は 、入力 904に処理を施し、その結果を出力 905として出力する。
[0084] 本図において、 Si (0く =i< 8 ;iは自然数)(902)は、入力、出力ともに 8ビットの変 換テーブルであり、非線形変換を行う。また、 Li(0く =i< = 1 ;iは自然数) (903)は 、入力、出力ともに 32ビットの線形変換を表す。 Si、 Liとしては、例えば、 FIPS197 に記述されている 8ビットの置換テーブル S— box S、 MixColumn Oなどを用いる ことができる。
[0085] 本実施形態において、非線形置換 A801の処理は、次の式で与えられる。
[0086] x0||xl||...||x7 入力 (904)、
yi Si(xi)、 (0 =i 8)、
(z4, z5, z6, z7 Ll(y4, y5, y6, y7),
出力 (905)— Z4||z5||z2||z3||z0||zl||z6||z7.
ただし、上記式中で、記号' ΊΓΊまデータの連結を表す。以下、本明細書中、同様であ る。
[0087] すなわち、 64ビットの入力 904を、上位ビットから 8ビットずつ、それぞれ、 SO、 Sl、 •••S7に人力し、処理を施し、その結果、 SO力ら S3iま LOに、 S4力ら S7iま L1に人力 される。 L0、 L1での処理後、 L0の上位 16ビットと L1の上位 16ビットとを入れ替え、 出力 905とする。
[0088] 非線形置換 B802も基本的に上記非線形置換 A801と同様の構成で実現すること ができる。このように、同様の置換処理を用いることにより、実装規模を小さく抑えるこ とができる。ただし、実装に対する制限が少ない場合には、異なる 8ビット変換テープ ル Si (0 < =i< 8; iは自然数) (902)や、異なる線形変換 Li (0< =i< = 1; iは自然
数)(903)を用いることで、より高い安全性を実現できる。
[0089] 次に、線形変換装置 607について説明する。
[0090] 図 7は、本実施形態の線形変換装置 607の構成を説明するための図である。本図 において、 1本の線は、 64ビットデータの流れを表す。
[0091] 線形変換装置 607には、レジスタ B605に格納されているデータと、レジスタ A604 の AOに格納されているデータとの 2つの値が入力される。線形変換装置 607は、時 刻 tにおける、上記 2つの入力に処理を施し、その結果を、時刻 t+1において、レジス タ B605に格納することにより、レジスタ B605の状態を更新する。
[0092] 線形変換装置 607によるレジスタ B605の状態更新の詳細は、以下の式で与えら れる。
[0093] Bi(t+l)^B (i—l) (t)、(iは、 0<i≤15を満たす自然数、ただし、 4、 10を除く)、
BO(t+l B15(t) XOR AO(t)
B4(t+1 B3(t) XOR B7(t)
B10(t+1 B9(t) XOR (B13(t) «< 32)
なお、本線形変換装置 607では、レジスタ A604に保持されているデータは更新し ない。
[0094] 次に、以上説明した攪拌装置 601を、本実施形態の MAC生成装置内の、初期化 、データ攪拌、データ圧縮の各処理に適用する場合を説明する。
[0095] 図 8は、データ攪拌装置 208として、攪拌装置 601を利用する場合の構成を説明す るための図である。
[0096] 本図に示すように、攪拌装置 601がデータ攪拌装置 208に、レジスタ 602がレジス タ 212に、外咅人力 603力 Sメモリ 210に、スィッチ 610力 Sスィッチ 215に、スィッチ 609 がスィッチ 217に対応する。
[0097] 上述のように、本実施形態では、メモリ 210にメッセージブロック Mn単位で入力さ れるデータを、クロック生成装置 203からのクロック信号に従って動作する制御装置 2 14の指示で、データ攪拌装置 208に入力し、攪拌を行う。メモリ 210からの入力が完 了したら、制御装置 214がスィッチ 215を操作し、レジスタ 212に格納されているデー タを、データ圧縮装置 216に出力する。
[0098] なお、本実施形態のデータ攪拌装置 208は、クロック毎に、メモリ 210に格納された データの入力と攪拌とを 1回行うよう構成されている。しかし、セキュリティパラメータ D 206に応じて、データ攪拌回数を決定し、全てのメッセージブロック Mnの入力終了 後、当該データ攪拌回数、スィッチ 217の切り替えて外部入力 603 (メモリ 210からの 入力)無しに、データを攪拌するよう構成してもよい。
[0099] 次に、上述の攪拌装置 601により、初期化装置 211を実現する構成を説明する。図 9に、初期化装置 211を実現する構成を示す。
[0100] 本図に示すように、本実施形態の初期化装置 211は、上述の攪拌装置 601および レジスタ 602、スィッチ 609、スィッチ 610、入力フィルタ 611により構成される。
[0101] 図 3に示す制御装置 608は図 1に示す制御装置 214に対応する。また、外部入力 6 03は、パラメータ K204をパラメータ入力制御装置 218によりデータ長 Lに分割した 後のものである。初期化装置 211における攪拌の回数は、セキュリティパラメータ D2 06に基づいて定められる。
[0102] 図 10は、攪拌装置 601により初期化装置 211を実現する場合の、 MAC生成装置 201の処理フローである。
[0103] ステップ 1101 :入力としてパラメータ K204とセキュリティパラメータ D206とが与え られる。
[0104] ステップ 1102:初期化装置 211にお 、て、パラメータ K204を、攪拌装置 601 (ここ では、初期化装置 211)の入力サイズにあわせて、 P個のブロックに分割する。必要 に応じてパディング処理を行う。各分割後のパラメータ K204を、 Knとする (Κ=Κ1、 !^…!^!…!^?;!!は?以下の自然数。;)。また、入力サイズは、外部入力 603のサイ ズの L、すなわち、本実施形態では、 64ビットである。
[0105] ステップ 1103:レジスタ 602をゼロクリアする。
[0106] ステップ 1104:カウンタ 213の値を 1にセットする(n= 1)。
[0107] ステップ 1105、 1106 :n力 より大きくなる(n>P)まで、 Knを外部入力 603として、 クロック信号が入力される毎に、攪拌装置 601を動作させ、レジスタ 602のデータを 攪拌し、 nを 1増加させることを繰り返す。
[0108] ステップ 1107:カウンタ 213の値を再度 1にセットする(n= 1)。
[0109] ステップ 1108、 1109 :nが L (D)より大きくなる(n>L (D) )まで、外部入力 603無 しで、クロック信号が入力される毎に、攪拌装置 601を動作させ、レジスタ 602のデー タを攪拌し、 nを 1増加させる処理を繰り返す。ここで、 L (D)は、初期化処理の攪拌 回数を示す値であって、セキュリティパラメータ D206に従って定められる。
[0110] ステップ 1110 :攪拌終了後、この時点でのレジスタ 602のデータを出力する。本実 施形態では、レジスタ 212に出力する。
[0111] 次に、上述の攪拌装置 601により、データ圧縮装置 216を実現する構成を説明す る。図 11にデータ圧縮装置 216を実現する構成を示す。なお、データ圧縮装置 216 は、レジスタのデータ以外を入力として持たないため、図中では、入力フィルタ 611を 省略する。
[0112] 本図に示すように、本実施形態のデータ圧縮装置 216は、攪拌装置 601およびレ ジスタ 602、スィッチ 609、スィッチ 610により構成される。
[0113] 図 3に示す制御装置 608は図 1に示す制御装置 214に対応する。また、データ圧 縮装置 216の場合、外部入力 603に相当するものは無い。また、メッセージ認証子 T 207として最終結果を出力する前に、処理結果を一時的に保持するノ ッファ T'216a と、制御装置 214からの指示し従って、バッファ T'216aのデータを出力するためのス イッチ 216bとを備える。
[0114] データ圧縮装置 216における攪拌の回数は、セキュリティパラメータ D206に従って 定められる。
[0115] 図 12は、攪拌装置 601により、データ圧縮装置 216を実現する場合の、 MAC生成 装置 201の処理フローである。
[0116] ステツ 1201 :入力としてレジスタ 212のデータと、セキュリティパラメータ D206とが 与えられる。レジスタ 212のデータは、レジスタ 602に保持される。
[0117] ステップ 1202:カウンタ 213の値を 1にセットする(n= 1)。
[0118] ステップ 1203、 1204 :n力 f (D)より大きく(n>L' (D)と)なるまで、クロック毎に、 外部入力 603無しで攪拌装置 601を動作させ、レジスタ 602のデータを攪拌し、 nを 1増加させる処理を繰り返す。ここで、 V (D)は、データ圧縮処理の第一の攪拌回数 を示す値であって、セキュリティパラメータ D206に従って定められる。
[0119] ステップ 1205 :nが L' (D)より大きくなつた時点で、カウンタ 213の値を 1にセットす る(n= l)。また、出力するデータを一時的に格納するノ ッファ T'216aをクリアする。
[0120] ステップ 1206、 1207、 1208 :nが L" (D)より大きく(n>L" (D)と)なるまで、クロッ ク信号が入力される毎に、外部入力 603無しで、攪拌装置 601を動作させ、 nを 1増 加させる処理を繰り返す。ここで、 L" (D)は、データ圧縮処理の第二の攪拌回数を 示す値であって、セキュリティパラメータ D206に従って定められる。そして、各クロッ ク毎、すなわち、攪拌装置 601を動作させて攪拌する毎に、以下の操作を行う。
[0121] T'^T'||A2 (n)
ステップ 1209: nが L" (D)より大きくなつた場合、バッファ T' 216a内のデータをメッ セージ認証子 T207として出力する。
[0122] これにより、 L" (D)の値により、すなわち、第二の攪拌回数により、出力されるメッセ ージ認証子 Tのデータ長を調整できる。従って、本実施形態の MAC生成装置 201 では、任意長のメッセージ認証子を生成することができる。
[0123] 本実施形態では、上記のように、セキュリティパラメータ D206に依存して、攪拌回 数が決定されるよう構成されている。しかし、このセキュリティパラメータ D206は、固 定値であってもよい。
[0124] また、上述のように、本実施形態の攪拌装置 601では、外部入力 603は、非線形変 換装置 606への入力とされているが、線形変換装置 607に入力されるよう構成しても よい。この場合、レジスタ B603の状態更新は、以下の式で表される。
[0125] Bi(t+ 1) B(i— l)(t)、 (iは、 0<i≤ 15を満たす自然数、ただし、 4、 10を除く)、
BO(t+ l 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)に足しこむように構成する。
[0126] 次に、本実施形態による、メッセージ認証子検証装置について説明する。メッセ一 ジ認証子検証装置は、メッセージ生成装置と同様の構成を有し、受信したメッセージ
と MACとの組から、メッセージと MACとをそれぞれ抽出する。そして、抽出したメッセ ージ力 MACを生成し、生成した MACと抽出した MACとを比較することにより検証 を行う。
[0127] 従って、以下に説明するように、受信したメッセージ認証子の真正性を検証する本 実施形態のメッセージ認証子検証装置は、上述の MAC生成装置 201と基本的に同 様の構造を有する MAC生成処理を行う機能と、受信した MACとメッセージ認証子 検証装置で生成した MACとを比較する機能とを備える。
[0128] 図 13は、本実施形態のメッセージ認証子 (MAC)検証装置 401の概要を説明する ための図であり、図 14は、図 13の MAC検証装置による処理フローである。
[0129] 本実施形態の MAC検証装置 401は、 MAC生成装置 201と、データ比較装置 40 2とを備える。 MAC検証装置 401への入力は、 MAC生成装置 201への入力である 、ノ ラメータ K204、メッセージ Μ205、セキュリティパラメータ D206と、クロック生成 装置 404からの入力信号と、データ比較装置 402への入力であり、メッセージの真正 性を検証するためのタグ Τ405とである。タグ Τ405は、受信したメッセージカゝら抽出 した MACである。また、メッセージ M205およびパラメータ K204は、 MAC生成装置 201の場合と同様、それぞれメッセージ入力制御装置 209およびパラメータ入力制 御装置 218を介して、所定長 Lのブロック単位に分割されて、入力される。
[0130] MAC検証装置 401によるメッセージ認証子検証処理について以下に説明する。
[0131] ステップ 502: MAC生成装置 201に、ノ ラメータ K204、メッセージ Μ205、セキュ リティパラメータ D206を入力し、 MAC生成処理を行い、結果を出力する。
[0132] ステップ 503:ステップ 502の処理結果である出力とタグ T405の値とを比較する。
[0133] ステップ 504、 505 :ステップ 503の比較〖こおいて、両者の値が等しければ 0を出力 し、それ以外の場合は 1を出力する。すなわち、メッセージが真正と検証された場合、 0を出力し、それ以外の場合 1を検証結果 406として出力する。
[0134] ステップ 506 :処理を終了する。
[0135] 次に、本実施形態の認証暗号装置について説明する。
[0136] 図 16は、本実施形態の認証暗号装置 1601のイメージ図である。本図に示すように 、本実施形態の認証暗号装置 1601は、図 1に示すレジスタ 212を持つメッセージ認
証子(MAC)生成装置 201、ビット列出力フィルタ 1605、レジスタ 212から出力フィ ルタ 1605への入力を制御するスィッチ 1606、暗号化装置 1608、暗号化装置 1608 へのメッセージ入力を制御するスィッチ 1607、暗号化装置 1608の出力を蓄えるメモ リ 1612を備える。それぞれの構成要素の詳細な構成については後述する。
[0137] 次に、上記のメッセージ認証子生成装置 201を備えた認証暗号装 1601置の処理 動作について説明する。
[0138] 本実施形態の認証暗号装置 1601は、メッセージ入力制御装置 209を介して入力 されたメッセージ M205に、クロック生成装置 203から入力されるクロック信号に従つ て処理を施し、メッセージ M205を暗号化し、暗号文 C1609を出力する。また、認証 暗号装置 1601は、全てのメッセージ M205に処理を施した後、メッセージ認証子 T2 07を生成する。
[0139] 本実施形態で認証暗号装置 1601への外部からの入力は、メッセージ入力制御装 置 209を介して入力されるメッセージ M205の他に、パラメータ入力制御装置 218を 介して入力されるパラメータ K204と、セキュリティパラメータ D206と、暗号化処理を する力否かを決定する暗号ィ匕フラグ F1610と、クロック生成装置 203が生成するクロ ック信号とがある。
[0140] 次に、認証暗号装置 1601の動作の概要を説明する。図 17は、認証暗号装置 160 1の動作概要を説明するためのフローチャートである。
[0141] ステップ 1701:認証暗号装置 1701には、パラメータ K204とメッセージ M205とが 入力される。パラメータ K204は、ノ ラメータ入力制御装置 218を介してメッセージ認 証子生成装置 201に入力され、メッセージ認証子生成装置 201の初期化を行う。メッ セージ M205は、メッセージ入力制御装置 209を介してメッセージ認証子生成装置 2 01に、さらに、スィッチ 1607を介して暗号化装置 1608に入力される。
[0142] メッセージ入力制御装置 209は、メッセージ M205を、一定長 Lのブロックに分割し 、クロック生成装置 203からクロック信号が入力されるごとにメッセージ認証子生成装 置 201と暗号ィ匕装置 1608に向けて出力する。パラメータ入力制御装置 218は、図 3 で説明したメッセージ認証子生成装置 201の場合と同様に動作する。
[0143] 認証暗号装置 1601は、これらの入力を受けると、クロック生成装置 203から入力さ
れるクロック信号に従って、以下の処理を行う。
[0144] ステップ 1702 :メッセージ M205を、ブロック長 Lビットのメッセージブロック Ml、 M
2、 · ··、 MNに分割する。
[0145] ステップ 1703 :パラメータ入力制御装置 218を介して入力されたパラメータ K204 (
Κη)を順にメッセージ認証子生成装置 201に入力し、レジスタ 212の初期化を行う。
[0146] ステップ 1704 :メッセージ認証子生成装置 201に含まれているカウンタ(213 ;図 1
6では不図示)の値を初期化する。本実施形態では、全てのビット値を 0にセットする
[0147] ステップ 1705 :カウンタ 213の値が Νになるまでステップ 1706、 1707の処理を繰り 返す。
[0148] ステップ 1706 :クロック信号が入力されるごとに、メッセージ認証子生成装置 201は 図 3のステップ 306に従い処理を行う。
[0149] ステップ 1707 :レジスタ 212の値がスィッチ 1606を介して出力フィルタ 1605に入 力される。出力フィルタ 1605は、レジスタ 212から入力された値から、一定長のビット 列 Rn(nは Ν以下の自然数であり、カウンタが現在保持している値となる)を生成し、 暗号ィ匕装置 1608に向けて出力する。暗号化装置 1608は、メッセージ入力制御装 置 209およびスィッチ 1607を介して入力されたメッセージブロック Mnと前記のビット 列 Rnとから暗号文ブロック Cnを生成し、メモリ 1612に向けて出力する。
[0150] ステップ 1708、 1709 :カウンタ 213の値が Nになると、メッセージ認証子生成装置 201は図 3におけるステップ 307、 308の処理を行い、メッセージ認証子 T207を出 力する。同時にメモリ 1612は暗号文 C (暗号文パケット 1611) =C1||C2|卜 -IICNを出 力する。
[0151] ステップ 1710 :処理を終了する。
[0152] 以上が認証暗号装置 1601の構成と動作のフローである。
[0153] なお、認証暗号装置 1601への入力のうち、暗号化フラグ F1610はメッセージを暗 号ィ匕する力否かを決定するフラグである。暗号ィ匕フラグ F1610が暗号ィ匕を指示して いる場合には、スィッチ 1606、 1607力 S接続され、上記の認証暗号装置 1601として 動作する。一方、暗号ィ匕フラグが暗号ィ匕を指示していない場合には、スィッチ 1606、
1607は切断され、暗号化処理は行われない。この場合には、認証暗号装置 1601 は前述のメッセージ認証子生成装置 201として動作し、メッセージ認証子 T207のみ を出力する。
[0154] 上記の構成例では、暗号文ブロック Cnをー且メモリ 1612に格納し、メッセージ認 証子 T207と同時に暗号文バケツト 1611として出力した力 十分なメモリが確保でき な 、場合などには、暗号文ブロック Cnは逐次出力しても良 、。
[0155] 認証暗号装置 1601が備えている出力フィルタ 1605は、レジスタ A (604)の最下 位ブロック A2 (t)を出力する。上記の構成例は、最も単純な出力フィルタの例であり、 レジスタ 212の複数ブロックにさらに非線形変換を施して安全性を高めることも可能 である。
[0156] 非線形な出力フィルタの例として、図 6に挙げた非線形置換 A801を用いる例を以 下に説明する。非線形置換 A801による変換を Fで、出力フィルタ 1605を Foutで表 すとき、
Fout(A0(t), Al(t), A2(t), B0(t), · ··, B15(t》 = F(A2(t) XOR Bi(t》 XOR Bj(t) で定義される出力フィルタは、出力されるビット列とレジスタの値との相関を小さくする 働きがあり、結果として、より安全な認証暗号装置を実現することができる。
[0157] 次に、認証暗号装置 1601で暗号ィ匕されたデータの完全性を検証しつつデータを 復号する認証復号装置を説明する。
[0158] 図 18は、本実施形態の認証復号装置 1801のイメージ図である。認証復号装置 18 01の構成は、基本的に認証暗号装置 1601と同様である力 暗号化装置 1608の代 わりに復号装置 1806を備え、また、タグ T1804とメッセージ認証子生成装置 201の 出力とを比較するタグ比較装置 1808、復号装置 1806の出力を保持するメモリ 1807 を備える。
[0159] 認証復号装置 1801への入力は、メッセージ M205ではなく暗号文 C1803である。
暗号文 C1803は暗号文入力制御装置 1805を介してメッセージ認証子生成装置 20 1と復号装置 1806とに入力される。また、付カ卩的な入力として、タグ T1804がある。
[0160] 次に、認証復号装置 1801の動作の概要を説明する。図 19は、認証復号装置 180 1の動作概要を説明するためのフローチャートである。
[0161] ステップ 1901:認証復号装置 1801は、パラメータ K204と暗号文 1803とタグ T18 04と力人力される。
[0162] メッセージ入力制御装置 209は、暗号文 C1803を一定長 Lのブロックに分割し、ク ロック生成装置 203からクロック信号が入力されるごとにメッセージ認証子生成装置 2
01と復号装置 1806とに向けて出力する。
[0163] ノ ラメータ入力制御装置 218は、図 3で説明したメッセージ認証子生成装置 201の 場合と同様に動作する。
[0164] 認証復号装置 1801は、これらの入力を受けると、クロック生成装置 203から入力さ れるクロック信号に従って、以下の処理を行う。
[0165] ステップ 1902 :暗号文 C1803を、ブロック長 Lビットの暗号文ブロック Cl、 C2、 · ··、
CNに分割する。
[0166] ステップ 1903 :パラメータ入力制御装置 218を介して入力されたパラメータ K204 ( Κη)を順にメッセージ認証子生成装置 201に入力し、レジスタ 212の初期化を行う。
[0167] ステップ 1904:メッセージ認証子生成装置 201に含まれているカウンタ(213 ;図 18 では不図示)の値を初期化する。本実施形態では、全てのビット値を 0にセットする。
[0168] ステップ 1905 :カウンタ 213の値が Νになるまでステップ 1706、 1707の処理を繰り 返す。
[0169] ステップ 1906 :クロック信号が入力されるごとに、レジスタ 212の値がスィッチ 1606 を介して出力フィルタ 1605に入力される。出力フィルタ 1605は、レジスタ 212から入 力された値から、一定長の乱数列 Rn (nは Ν以下の自然数であり、カウンタが現在保 持している値となる。)を生成し、復号装置 1806に向けて出力する。復号装置 1806 は、暗号文入力制御装置 1805、スィッチ 1607を介して入力された暗号文ブロック C nから復号文 Mn'を生成し、出力する。
[0170] ステップ 1907:メッセージ認証子生成装置 201は図 3のステップ 306に従い処理を 行う。
[0171] ステップ 1908、 1709 :カウンタ 213の値が Nになると、メッセージ認証子生成装置 201は図 3〖こおけるステップ 307、 308の処理を行い、復号文 M,に対するメッセージ 認証子 T'を出力する。
[0172] ステップ 1910 :ステップ 1909で出力されたメッセージ認証子 T'とタグ T1804の値 と比較する。
[0173] ステップ 1911、 1912 :ステップ 1910の比較において、両者の値が等しければ復 号文 M'を出力する。それ以外の場合には、認証が失敗したことを示すエラー信号、 たとえば 1を出力する。
[0174] ステップ 1913 :処理を終了する。
[0175] 次に、本実施形態の MAC生成装置 201および MAC検証装置 401を用いたメッセ ージ認証方法にっ 、て説明する。
[0176] 図 15は、本実施形態の MAC生成装置 201および MAC検証装置 401によりメッセ ージ認証を行う通信システムの構成図である。
[0177] ここでは、 MAC生成装置 201、 MAC検証装置 401を実現するものとして、例えば 、 ICカード 1301、 1309を例にあげて説明する。
[0178] 本実施形態の通信システムは、 MAC生成装置 201、メッセージ入力制御装置 209 およびパラメータ入力制御装置 218を実現する ICカード 1301と、 MAC検証装置 40 1、メッセージ入力制御装置 209およびパラメータ入力制御装置 218を実現する IC力 ード 1311と、 ICカード 1301で生成したメッセージ認証子とメッセージとをネットワーク 1340を介して相手装置に送信する送信側通信装置 1320と、ネットワーク 1340を介 して送信側通信装置 1320から送信されたメッセージ認証子とメッセージとを受信し、 ICカード 1311に受け渡す受信側通信装置 1330とを備える。
[0179] ICカード 1301、 1311ίま、本図【こ示すよう【こ、 CPU1302、 1313、メモリ 1303、 13 13、記憶装置 1304、 1314、入出力インタフェース 1305、 1315とをそれぞれ備える
[0180] また、記憶装置 1304、 1314には、本図に示すように、秘密鍵 1306、 1316、メッセ ージ番号 1307、 1317、セキュリティパラメータ D206、メッセージ認証子生成プログ ラム 1308、メッセージ認証子検証プログラム 1318と力 それぞれ格納されている。
[0181] メッセージ認証子生成プログラム 1308は、メモリ 1303にロードされ、 CPU1302に て実行されることにより、上記の MAC生成装置 201、メッセージ入力制御装置 209 およびパラメータ入力制御装置 218の機能を実現する。また、秘密鍵 1306とメッセ
ージ番号 1307との対を、 MAC生成装置 201のパラメータ K204として用いる。
[0182] メッセージ認証子検証プログラム 1318は、メモリ 1313にロードされ、 CPU1312に て実行されること〖こより、上記の MAC検証装置 401、メッセージ入力制御装置 209 およびパラメータ入力制御装置 218の機能を実現する。また、秘密鍵 1316とメッセ ージ番号 1317との対を、 MAC検証装置 401のパラメータ K204として用いる。
[0183] なお、クロック信号は、 ICカード 1301、 1311内のクロック生成機能により生成され るものを利用する。
[0184] 以下、本通信システムにおける、メッセージ認証の処理手順にっ 、て、説明する。
[0185] ステップ 1401:データ送信者とデータ受信者は、事前に秘密鍵 1306、 1316を秘 密裏に共有しておく。また、メッセージ番号 1307、 1317およびセキュリティパラメ一 タ D206は、秘密裏である必要はないが、事前に共有しておく。すなわち、 ICカード 1 301の秘密鍵 1306と ICカード 1311の秘密鍵 1316、および、メッセージ番号 1307 と 1317とには、それぞれ同じデータが保持される。これらの情報を共有する技術は、 例えば、公開鍵暗号技術を用いることで、実現できる。
[0186] ステップ 1402 :メッセージ送信者は、 I/Oインタフェース 1305を介して、メッセージ M205を ICカード 1301に入力する。 ICカード 1301 (MAC生成装置 201)は、メッセ ージ M205の入力を受け付けると、秘密鍵 1306とメッセージ番号 1307とからなるパ ラメータ、および、セキュリティパラメータ D206を用いて、入力されたメッセージ M20 5に対するメッセージ認証子 T207を生成し、メッセージ M205とともに送信側通信装 置 1320に受け渡す。
[0187] ステップ 1403 :メッセージ M205とメッセージ認証子 T207とを ICカード 1301から 受け取ると、送信側通信装置 1320は、それらを、ネットワーク 1340を介して、受信側 通信装置 1330に送信する。
[0188] ステップ 1404:受信側通信装置 1340は、メッセージ M205およびメッセージ認証 子 T207を受信し、 I/Oインタフェース 1315を介して、 ICカード 1311 (MAC検証装 置 401)に入力する。
[0189] ステップ 1405 :ICカード 1311は、メッセージ M205とメッセージ認証子 T207とを 受け取ると、共有情報である秘密鍵 1316とメッセージ番号 1317とからなるパラメータ
、および、セキュリティパラメータ D206とを用いて、メッセージ認証子 T207を検証し 、入力されたメッセージ M205の真正性を判断し、真正である場合は 0、そうでない場 合は 1を出力することにより、その結果を出力する。
[0190] 具体的には、受信側でメッセージ認証子 T207'を生成し、受け取ったメッセージ認 証子 T207と比較し、合致すれば、真正、合致しない場合は真正でないものと判断し 、上記 0、 1を出力する。
[0191] 次に、認証暗号装置 1601、認証復号装置 1801を実現するものとして、 ICカード 2 001、 2011を例に挙げて説明する。
[0192] 図 20は ICカード 2001、 2011を含む通信システムの構成例である。図 20のシステ ムは、図 15で説明したメッセージ認証機能を備えた通信システムとほぼ同様の構成 を備える。ただし、 ICカード 2001は、メッセージ認証子生成プログラム 1308の代わり に認証暗号プログラム 2002を、そして、 ICカード 2011は、メッセージ認証子検証装 置 1318の代わりに、認証復号プログラム 2012を格納する。また、暗号処理を行うか どうかを決定する暗号ィ匕フラグ 2003、 2013をそれぞれ格納する。
[0193] 以下、本通信システムにおける、データ処理の手順について説明する。
[0194] ステップ 2201:データ送信者とデータ受信者とは、事前に秘密鍵 1306、 1316を 共有しておく。これはメッセージ認証システムのステップ 1401と同様である力 この他 に、データ送信者とデータ受信者とは暗号ィ匕フラグ 2003と 2004とを同期させ、デー タの暗号ィ匕を行うか否かを予め決定しておく。ただし、暗号ィ匕フラグを暗号文パケット 1611に含めることで、データ通信と同時に暗号ィ匕フラグの同期を行うこともできる。
[0195] ステップ 2202 :メッセージ送信者は、 I/Oインターフェース 1305を介して、メッセ ージ M205を ICカード 2001に入力する。 ICカード 2001(認証暗号装置 1601)は、メ ッセージ M (205)の入力を受け付けると、秘密鍵 1306とメッセージ番号 1307と力ら なるパラメータおよびセキュリティパラメータ D206を用い、入力されたメッセージ M (2 05)に対するデータ処理を行う。暗号ィ匕フラグ 2003が暗号ィ匕処理を指示していない 場合は、 ICカード 2001は上記パラメータを用いてメッセージ M (205)に対するメッセ ージ認証子 T(207)を生成し、メッセージ Μ (205)と共に送信側通信装置 1320に 受け渡す。また、暗号ィ匕フラグ 2003が暗号ィ匕処理を指示している場合には、 ICカー
ド 2001は上記パラメータを用いてメッセージ M (205)に暗号化処理を施し、暗号文
C (1609)を生成すると同時に、メッセージ M (205)に対するメッセージ認証子 T (20
7)を生成し、暗号文 C (1609)と共に送信側通信装置 1320に受け渡す。
[0196] 暗号化処理を行わない場合の ICカード 2001、 2002の動作は前記のメッセージ認 証システムの処理手順と同じなので、以下では記述を省略する。
[0197] ステップ 2203:暗号文 C (1309)とメッセージ認証子 T (207)力もなる暗号文バケツ ト(1611)とを ICカード 2001から受け取ると、送信側通信装置 1320は、それらを、ネ ットワーク 1340を介して、受信側通信装置 1330に送信する。
[0198] ステップ 2204 :受信側通信装置 1330は、暗号文 C (1803)およびタグ T(1804)を 受信し、 ΙΖΟインターフェース 1315を介して、 ICカード 2011(認証復号装置 1801) に入力する。
[0199] ステップ 2205 :ICカード 2011は、暗号文 C (1803)およびタグ T(1804)を受け取 ると、共有情報である秘密鍵 1316とメッセージ番号 1317とからなるパラメータ、およ びセキュリティパラメータ D206とを用いて、暗号文の復号とタグ Τ( 1804)の検証を 行う。検証の結果、暗号文の改ざんが検出されなければ (暗号文 C1803から計算し たメッセージ認証子の値とタグ Τ( 1804)の値とがー致すれば)、復号したメッセージ Μ,(1809)を出力する。そうでない場合には、メッセージ認証子の値が一致しなかつ たことを意味する信号 (たとえば 0)を出力する。
[0200] 以上説明したように、本実施形態における MAC認証装置 201および MAC検証装 置 401によれば、高速な処理が可能であり、長期間の使用に耐え得る安全な MAC 生成装置および MAC検証装置が提供できる。また、本実施形態における認証暗号 装置 1601および認証復号装置 1801によれば、高速な処理が可能であり、長期間 の使用に耐え得る安全な認証暗号装置および認証復号装置が提供できる。さらに、 上記各装置で用いられる本実施形態の MAC生成装置 201は、攪拌回数を、鍵長な どのセキュリティパラメータで決定する構成となって 、るため、攪拌処理の適用回数 の変更が容易である。これは、安全性レベルと処理速度とをフレキシブルに設定でき ることを意味する。
[0201] インターネットのように、公開通信路を用いた通信では、メッセージの真正性検証は
、信頼できる通信路を確保するために必須の技術である。
[0202] 従来力 知られているブロック暗号を利用した方式は、高速な処理が困難である。
また、ハッシュ関数を用いた構成では、いずれの方式でも、以下の問題点がある。
(1)処理速度が遅い。
(2)出力長が短 、(安全性のレベルが低 、)。
[0203] ブロック暗号技術を利用した方式に比べ、ストリーム暗号技術を利用するメッセージ 認証は、安価かつ高速に処理を行うことができるため、広い範囲での応用が見込ま れる。
[0204] 本実施形態のメッセージ認証は、ストリーム暗号技術を用いたものである。従って、 本実施形態による MAC生成装置、 MAC検証装置は、任意のメッセージ認証システ ムにおけるメッセージ認証子生成機能、および認証子検証機能の、より安価で高速 な代替として用いることができる。また、本実施形態の MAC生成装置および MAC検 証装置によれば、上記 MAC生成とデータの暗号化とを同時に行う認証暗号の機能 を、より安価に提供することができる。
[0205] 本実施形態における MAC生成装置および MAC検証装置によるメッセージの真正 性検証機能は、従来方式に比べ、以下の利点を有する。
(1)メッセージの真正性を検証するための実装コストを最小限に抑えられる。
(2)ブロック暗号を用いるものに比べて高速な処理を行うことができ、計算機に対する 負荷が少ない。
[0206] 一般的に、組み込み機器や携帯端末では、実装やコストに制約があり、メッセージ の真正性検証は軽視されがちである。このような計算機の能力に制限がある環境に おける暗号処理では、コストパフォーマンスに優れるストリーム暗号を用いる場合が多 V、。本実施形態の MAC生成装置および MAC検証装置はこのような環境でのメッセ ージ検証機能の導入コストを最小限に抑えることができ、今後のュビキタス情報端末 での広、応用が期待される。