(57)【要約】  従来技術の弱点である、出力差分をメッセージ差分で完全にコントロールできる性質を克服し、任意のプラットフォームで動作可能な、高速で安全性の高いＭＡＣ生成および認証暗号技術を提供する。  入力するメッセージのサイズが出力長の１／２以下となる非線形変換部を備える攪拌装置を採用することにより、出力差分値のコントロール不可能にする。本発明のＭＡＣ生成装置は、上記攪拌装置をメッセージの攪拌処理だけでなく、初期化処理、データ圧縮処理にも採用可能である。【特許請求の範囲】
【請求項１】
送受信するメッセージデータの完全性を検証するためのメッセージ認証子を当該メッセージデータから生成するメッセージ認証子生成装置であって、
第1のパラメータに初期化処理を施し、一定長のランダムなビット列からなるデータを出力する初期化装置と、
前記初期化装置の出力したデータを格納するレジスタと、
入力される前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、攪拌後のデータを前記レジスタに格納するデータ攪拌装置と、
前記レジスタに格納されているデータであって、前記データ攪拌装置において攪拌後のデータを、所定のデータ長に圧縮し、メッセージ認証子として出力する圧縮処理を行うデータ圧縮装置と、
を備え、前記データ攪拌装置は、前記一定長のメッセージデータの２倍以上のサイズの出力を有する非線形変換装置と、を備えること
を特徴とするメッセージ認証子生成装置。
【請求項２】
請求項１記載のメッセージ認証子生成装置であって、
前記レジスタは、前記初期化装置の出力したデータを分割して格納する第１の小レジスタと第２の小レジスタとを備え、
前記第１の小レジスタのサイズは、前記非線形変換装置の出力データのサイズであり、
前記非線形変換装置は、
前記第１の小レジスタに格納されているデータと前記第２の小レジスタに格納されているデータの一部と前記メッセージデータとを非線形に攪拌し、攪拌後のデータを前記第１の小レジスタに格納し、
前記データ攪拌装置は、
前記第２の小レジスタに格納されているデータと前記第１の小レジスタに格納されているデータの一部とを線形に攪拌し、攪拌後のデータを前記第２の小レジスタに格納する線形変換装置を備えること
を特徴とするメッセージ認証子生成装置。
【請求項３】
請求項２記載のメッセージ認証子生成装置であって、
前記データ攪拌装置は、前記メッセージデータの入力を制御するスイッチをさらに備え、
前記非線形変換装置は、
前記スイッチにより前記メッセージデータの入力が制限されている場合または前記メッセージデータの入力が無い場合は、前記第１の小レジスタに格納されているデータと前記第２の小レジスタに格納されているデータの一部とのみを入力として非線形に攪拌し、攪拌後のデータを前記第１の小レジスタに格納すること
を特徴とするメッセージ認証子生成装置。
【請求項４】
請求項３記載のメッセージ認証子生成装置であって、
前記第１の小レジスタは、ｎビット（ｎは、前記一定長のメッセージのサイズを示す数字以上の任意の自然数）サイズのブロック、３ブロック分の容量を備え、
前記第２の小レジスタは、前記ブロック、ｍ（ｍは任意の自然数）ブロック分の容量を備え、
前記非線形変換装置は、
前記１ブロックのデータを処理して、前記１ブロックのデータを出力する第１の非線形置換および第２の非線形置換を備えること
を特徴とするメッセージ認証子生成装置。
【請求項５】
請求項４記載のメッセージ認証子生成装置であって、
前記非線形変換装置は、前記第１の非線形置換および前記第２の非線形置換とを用いて以下の処理を行い
X0←A1, 
X1←A2 XOR G(A1 XOR M), 
X2←A0 XOR F(A1 XOR (B10 <<< 17)),
(ただし、前記第１の小レジスタの記憶内容を上位ブロックから順にA0, A1, A2、前記第２の小レジスタの第iブロックをBi（1<=i<=m）、前記第１の非線形置換をF、前記第２の非線形置換をG、前記スイッチを介して入力されるデータをM、レジスタxのブロック幅での左nビット巡回シフトを(x <<< n)、データの代入を←、前記非線形データ変換装置の出力を上位ブロックからX0, X1, X2と表す。)、
前記X0, X1, X2を、それぞれ、前記小レジスタの上位ブロックから順に格納すること
を特徴とするメッセージ認証子生成装置。
【請求項６】
請求項５記載のメッセージ認証子生成装置であって、
前記ブロックは６４ビットで構成され、
前記第１の非線形置換及び前記第２の非線形置換は、それぞれ、
入力されるブロックを８ビット単位に分けて非線形変換処理を行う変換テーブルと、
３２ビット単位で線形変換処理を行う第１の線形変換および第２の線形変換と、をさらに備え、
前記変換テーブルと前記第１の線形変換および第２の線形変換とを用いて、以下の処理を行うこと
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, 
(ただし、前記第１および第２の非線形置換への入力をp、前記変換テーブルによる変換をS[x]、32×32行列による前記第１の線形変換をL0、32×32行列による前記第２の線形変換をL1、データxとyとの連結をx||yと表す。)
を特徴とするメッセージ認証子生成装置。
【請求項７】
請求項４記載のメッセージ認証子生成装置であって、
前記第２の小レジスタの容量は６４ビットサイズのブロック１６ブロック分であり、
前記線形変換装置は、以下の処理を行うこと
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は排他的論理和、前記第１の小レジスタの記憶内容を上位ブロックから順にA0, A1, A2、前記第２の小レジスタの記憶内容を上位ブロックから順にB0, B1, …, B15、線形変換装置の出力データを上位ブロックからY0, Y1, …, Y15、レジスタxのブロック幅での左nビット巡回シフトを(x <<< n)、とする。)
を特徴とするメッセージ認証子生成装置。
【請求項８】
請求項３記載のメッセージ認証子生成装置であって、
前記初期化装置は、前記レジスタと前記データ攪拌装置と前記スイッチとを備え、当該レジスタと当該データ攪拌装置と当該スイッチとにより、前記初期化処理を行い、
前記データ圧縮装置は、前記レジスタと前記データ攪拌装置と前記スイッチとを備え、当該レジスタと当該データ攪拌装置と当該スイッチとにより、前記圧縮処理を行うこと
を特徴とするメッセージ認証子生成装置。
【請求項９】
請求項１記載のメッセージ認証子生成装置であって、
前記データ攪拌装置の攪拌回数を制御する制御装置を備え、
前記制御装置は、予め与えられる前記メッセージ認証子生成装置の安全性の指標である第２のパラメータにより、前記攪拌回数を決定し、制御すること
を特徴とするメッセージ認証子生成装置。
【請求項１０】
受信するメッセージデータとともに受信する当該メッセージデータの完全性を検証するためのメッセージ認証子を検証するメッセージ認証子検証装置であって、
請求項１記載のメッセージ認証子生成装置と、
前記メッセージ認証子生成装置を用いて、受信したメッセージデータから、第２のメッセージ認証子を生成し、生成した前記第２のメッセージ認証子と、前記受信したメッセージ認証子とを比較し、比較結果を出力する比較手段と、
を備えることを特徴とするメッセージ認証子検証装置。
【請求項１１】
送受信するメッセージデータの完全性を検証するメッセージ検証システムであって、
請求項１記載のメッセージ認証子生成装置を備える送信側通信装置と、
請求項１０のメッセージ認証子検証装置を備える受信側通信装置と、
を備えることを特徴とするメッセージ検証システム。
【請求項１２】
送受信するメッセージデータの完全性を検証するためのメッセージ認証子を生成するメッセージ認証子生成方法であって、
第1のパラメータに初期化処理を施し、一定長のランダムなビット列からなるデータをレジスタに格納する初期化処理ステップと、
入力される前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、攪拌後のデータを前記レジスタに格納するデータ攪拌ステップと、
前記データ攪拌ステップにおいて攪拌後のデータであって、前記レジスタに格納されているデータを、所定のデータ長に圧縮し、メッセージ認証子として出力するデータ圧縮ステップと、を備え、
前記攪拌は、前記一定長のメッセージデータの２倍以上のサイズの出力を有する非線形変換装置を有する攪拌装置により行われること、
を特徴とするメッセージ認証子生成方法。
【請求項１３】
送受信するメッセージデータを暗号化するとともに完全性を検証するためのメッセージ認証子を当該メッセージデータから生成する認証暗号装置であって、
請求項１記載のメッセージ認証子生成装置と、
前記メッセージ認証子生成装置の備える前記レジスタから一定長のビット列を選択して出力する出力フィルタと、
前記出力フィルタから出力される出力ビット列と前記メッセージ認証子生成装置へ入力される一定長のメッセージデータとの排他的論理和をとり暗号文ブロックを生成する暗号化装置と、を備えること
を特徴とする認証暗号装置。
【請求項１４】
一定長の暗号文ブロック単位で受信する暗号化されたメッセージデータを復号するとともに当該メッセージデータの完全性を検証するためのタグを検証する認証復号装置であって、
請求項１０に記載のメッセージ認証子検証装置と、
復号した前記メッセージデータである復号文を蓄えるメモリと、
前記メッセージ認証子検証装置が備える前記メッセージ認証子生成装置の前記レジスタから一定長のビット列を選択して出力する出力フィルタと、
前記出力フィルタから出力される出力ビット列と、前記一定長の暗号文ブロック単位のメッセージデータとの排他的論理和をとることにより前記メッセージデータを復号し復号文として、前記メモリに出力する復号装置と、を備え、
前記メッセージ認証子検証装置が完全性を検証した後に、前記メモリに蓄えられた復号文を出力すること
を特徴とする認証復号装置。
【請求項１５】
送受信するメッセージを暗号化して送信するとともに前記メッセージの完全性を検証するメッセージ検証システムであって、
請求項１３の認証暗号装置を備える送信側通信装置と、
請求項１４の認証復号装置を備える受信側通信装置と、
を備えることを特徴とするメッセージ検証システム。
【発明の詳細な説明】
【参照による取り込み】
【０００１】
本発明は２００４年８月１９日に出願された日本特願２００４−２３９３５９の優先権を主張し、文献の参照による織りみ込みが認められる指定国については、上記出願の開示内容および特開２００３−３７４８２号公報の開示内容は参照により本出願に織り込まれる。
【技術分野】
【０００２】
本発明は、任意長のメッセージ認証子を高速に生成する技術に関する。
【背景技術】
【０００３】
現在、インターネットを代表とする公開通信路を用いた通信は増加の一途をたどっている。このような通信路では、通信路上で、送信されたメッセージが悪意ある第三者によって改ざんされる可能性があり、受信したメッセージの真贋を確認する方法が必要となる。【０００４】
メッセージの真贋を確認する方法として、共通鍵暗号技術を用いたメッセージ認証子(Message Authentication Code: 以下ＭＡＣと呼ぶ。)を用いるものと、公開鍵暗号技術による電子署名を用いるものとがある。電子署名を用いる方法は、ＭＡＣを用いるものに比べて処理に時間を要する。従って、小さなパケットを大量に送受信するＩＰ通信などでは、一般的に電子署名による方法よりもＭＡＣによる方法が用いられている。【０００５】
ＭＡＣを用いる方法は、送信データに所定の処理を施して生成されるＭＡＣを比較することにより、メッセージの改ざんの有無を確認するものである。【０００６】
一般に、ＭＡＣによる受信メッセージへの改ざんの有無の検証は、以下のように行われる。【０００７】
メッセージ送信側とメッセージ受信側とが、同じＭＡＣ生成機能を有する。送信側では、送信するメッセージからＭＡＣ（第１のＭＡＣ）を生成し、メッセージと共に送信する。受信側では、受信したメッセージから同様にＭＡＣ(第２のＭＡＣ)を生成し、上記メッセージと共に受信した第１のＭＡＣと第２のＭＡＣとを比較する。両者が合致すれば、メッセージの改ざんはないものと検証される。
【０００８】
このＭＡＣを生成する方法としては、ブロック暗号を用いたＯＭＡＣ、ハッシュ関数を用いたＨＭＡＣ、擬似乱数生成器を転用したＨｅｌｉｘ、ＳＯＢＥＲ−１２８（非特許文献１参照。）などが知られている。また、ＭＡＣを生成する専用アルゴリズムとして、ＵＭＡＣなどが知られている。また、前記ＳＯＢＥＲ−１２８やＨｅｌｉｘはＭＡＣの生成とデータの暗号化を同時に行うことができる方式である。ＭＡＣの生成とデータの暗号化を同時に行う暗号化方式を認証暗号と呼ぶ。【０００９】
【非特許文献１】P. Hawkes and G. Rose, Primitive Specification for SOBER-128,'' IACR ePrint Archive, http://eprint.iacr.org/2003/81/, 2003.
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記の各方法は、それぞれ問題がある。例えば、ブロック暗号、ハッシュ関数を用いてＭＡＣを生成する方法は、処理速度に問題がある。【００１１】
擬似乱数生成器を用いたＳＯＢＥＲ−１２８は、安全性に懸念があることが報告されている。具体的には、ＳＯＢＥＲ−１２８では、内部に、非線形変換部を有し、その非線形変換部からの出力長と、非線形変換部に対して入力されるメッセージの長さとが同じである。これは、出力差分をメッセージ差分で完全にコントロールできることを意味する。【００１２】
また、Ｈｅｌｉｘや専用アルゴリズムであるＵＭＡＣは、特定のプラットフォームでは高速だが、ハードウェア実装には向かないなど、汎用性に欠ける。さらに、Ｈｅｌｉｘは、出力長が１６０ビットであり、将来的に高い安全性を保証できるＭＡＣ生成アルゴリズムとは言い難い。
【課題を解決するための手段】
【００１３】
本発明は、このような事情に鑑みてなされたもので、小さなデータを大量に送受信するＩＰ通信などを行う任意のプラットフォームに適用可能な、実用に耐え得る性能と安全性とを備えた、ＭＡＣ生成の技術を提供する。また、このＭＡＣ生成装置を備え、ＭＡＣ生成とデータの暗号化を同時に行う技術を提供する。【００１４】
本発明は、このＭＡＣ生成機能であって、ＳＯＢＥＲ−１２８の弱点を克服するものを提供する。【００１５】
本発明では、上記弱点を克服するために、以下の構成をとる。
（１）非線形変換部に入力されるメッセージのサイズを出力長の１／２以下とする。
（２）非線形変換部からの出力をバッファにフィードバックする。【００１６】
具体的には、送受信するメッセージデータの完全性を検証するためのメッセージ認証子を当該メッセージデータから生成するメッセージ認証子生成装置であって、第1のパラメータに初期化処理を施し、一定長のランダムなビット列からなるデータを出力する初期化装置と、前記初期化装置の出力したデータを格納するレジスタと、入力される前記メッセージデータを一定長に分割した後、一定長のメッセージデータ毎に、当該一定長のメッセージデータと前記レジスタに格納されているデータとを攪拌し、攪拌後のデータを前記レジスタに格納するデータ攪拌装置と、前記レジスタに格納されているデータであって、前記データ攪拌装置において攪拌後のデータを、所定のデータ長に圧縮し、メッセージ認証子として出力する圧縮処理を行うデータ圧縮装置と、を備え、前記データ攪拌装置は、前記一定長のメッセージデータの２倍以上のサイズの出力を有する非線形変換装置を備えることを特徴とするメッセージ認証子生成装置を提供する。【００１７】
また、このメッセージ認証子生成装置を備え、メッセージ認証子生成とデータの暗号化とを同時に行う技術を提供するものである。【００１８】
上記態様の、非線形変換部に入力されるメッセージのサイズを出力長の１／２以下とする構成により、出力差分値のコントロールを困難にする。また、本発明の非線形変換部からの出力をバッファにフィードバックする構成により、バッファの状態更新を非線形にすることができ、結果として、暗号学的な強度が増すことが期待できる。【００１９】
また、上記態様によれば、バッファ部と非線形変換部のデータの相関が小さくなることが期待できる。このため、任意のプラットフォームで高速に動作するＭＡＣ生成装置、およびＭＡＣ検証装置を提供することができる。【００２０】
本発明は、特に、特開２００３−３７４８２号公報に開示する擬似乱数生成器（以下、ＭＵＧＩと称す)に、低コストで適用することが可能である。すなわち、本発明は、ＭＵＧＩに、ＭＡＣを生成する機能を安価に提供することができる。また、本発明は、ＭＵＧＩに認証暗号の機能を提供することができる。
【発明の効果】
【００２１】
本発明によれば、任意のプラットフォームに適用可能な、実用に耐え得る性能と安全性とを備えたＭＡＣ生成および認証暗号の技術を提供できる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態のＭＡＣ生成装置の概略構成を例示する図である。
【図２】本実施形態のＭＡＣ生成装置の動作を例示するフローチャートである。
【図３】本実施形態の攪拌装置の概略構成を例示する図である。
【図４】本実施形態の攪拌装置の動作を例示するフローチャートである。
【図５】本実施形態の非線形変換装置の構成を例示する図である。
【図６】本実施形態の非線形置換の構成を例示する図である。
【図７】本実施形態の線形変換装置の構成を例示する図である。
【図８】本実施形態のデータ攪拌装置の構成を例示する図である。
【図９】本実施形態の初期化装置の構成を例示する図である。
【図１０】本実施形態の初期化装置の処理を例示するフローチャートである。
【図１１】本実施形態のデータ圧縮装置の構成を例示する図である。
【図１２】本実施形態のデータ圧縮装置の処理を例示するフローチャートである。
【図１３】本実施形態のＭＡＣ検証装置の概略構成を例示する図である。
【図１４】本実施形態のＭＡＣ検証装置の動作を例示するフローチャートである。
【図１５】本実施形態のメッセージ認証方式を用いた通信システムの構成を例示する図である。
【図１６】本実施形態の認証暗号装置の概略構成を例示する図である。
【図１７】本実施形態の認証暗号装置の動作を例示するフローチャートである。
【図１８】本実施形態の認証復号装置の概略構成を例示する図である。
【図１９】本実施形態の認証復号装置の動作を例示するフローチャートである。
【図２０】本実施形態の認証暗号技術を用いた通信システムの構成を例示する図である。
【図２１】本実施形態の非線形変換装置の他の構成を例示する図である。
【発明を実施するための最良の形態】
【００２３】
以下に、本発明を適用する実施形態を説明する。【００２４】
ここでは、本発明を認証暗号装置に適用した場合を実施形態として説明する。本実施形態の認証暗号装置は、レジスタを持つメッセージ認証子生成装置を利用する。そこでまず、本実施形態の認証暗号装置に最適なメッセージ認証子生成装置を説明する。【００２５】
図１は、本実施形態の認証暗号装置に最適なメッセージ認証子（ＭＡＣ）生成装置のイメージ図である。本図に示すように、本実施形態のＭＡＣ生成装置２０１は、メッセージ入力制御装置２０９を介して入力されたメッセージＭ２０５に、クロック生成装置２０３から入力されるクロック信号に従って処理を施し、メッセージ認証子Ｔ２０７を生成する。【００２６】
本実施形態のＭＡＣ生成装置２０１への外部からの入力は、メッセージ入力制御装置２０９を介して入力されるメッセージＭ２０５の他に、パラメータ入力制御装置２１８を介して入力されるパラメータＫ２０４と、セキュリティパラメータＤ２０６と、クロック生成装置２０３の生成するクロック信号とがある。【００２７】
メッセージ入力制御装置２０９は、任意のサイズのメッセージＭ２０５を、ＭＡＣ生成装置２０１の内部での処理単位に分割して、ＭＡＣ生成装置２０１に入力する。【００２８】
パラメータ入力制御装置２１８は、任意のサイズのパラメータＫ２０４を、ＭＡＣ生成装置２１０の内部での処理単位に分割して、ＭＡＣ生成装置２０１に入力する。【００２９】
クロック生成装置２０３は、クロック信号を生成し、ＭＡＣ生成装置２０１およびメッセージ入力制御装置２０９に入力する。【００３０】
ＭＡＣ生成装置２０１は、初期化装置２１１、レジスタ２１２、メモリ２１０、スイッチ２１５、２１７、データ攪拌装置２０８、制御装置２１４、データ圧縮装置２１６、カウンタ２１３とを備える。【００３１】
初期化装置２１１は、パラメータ入力制御装置２１８を介して入力されたパラメータＫ２０４をレジスタ２１２長毎に切り出して、レジスタ２１２に出力する。【００３２】
レジスタ２１２は、パラメータＫ２０４またはデータ攪拌装置２０８からの出力を一時的に保持する。【００３３】
メモリ２１０は、メッセージ入力制御装置２０９を介して入力されたメッセージＭ２０５を一時的に保持する。【００３４】
スイッチ２１５は、制御装置２１４の指示に従って、レジスタ２１２に保持されているデータを、データ攪拌装置２０８およびデータ圧縮装置２１６のいずれかに入力するよう切り替える。【００３５】
スイッチ２１７は、制御装置２１４の指示に従って、メモリ２１０に保持されているデータを、データ攪拌装置２０８に入力するか否かを切り替える。【００３６】
制御装置２１４は、セキュリティパラメータＤ２０６、カウンタ２１３に従って、スイッチ２１５およびスイッチ２１７を制御する。【００３７】
カウンタ２１３は、クロック生成装置２０３からの入力回数をカウントするもので、クロック生成装置２０３からクロック信号が入力される毎に、保持する値が１ずつ増加する
よう更新される。【００３８】
データ攪拌装置２０８は、データ攪拌装置２０８に入力されたデータを攪拌して出力する。【００３９】
データ圧縮装置２１６は、データ圧縮装置２１６に入力されたデータに所定の処理を施し、メッセージ認証子Ｔ２０７を生成し、出力する。【００４０】
初期化装置２１１、データ攪拌装置２０８、データ圧縮装置２１６の詳細については、後述する。【００４１】
また、入力されるパラメータＫ２０４は、基本的には、秘密鍵といった秘密情報である。しかし、その一部をカウンタのような公開値としてもよい。【００４２】
セキュリティパラメータＤ２０６は、ＭＡＣ生成装置２０１の暗号方式の安全性を表す指標であり、鍵長などをセキュリティパラメータＤ２０６としてもよい。セキュリティパラメータＤ２０６は、初期化装置２１１、データ圧縮装置２１６等のＭＡＣ生成装置２０１内の各機能において行われる、後述する攪拌回数を決定する基礎となるパラメータである。セキュリティパラメータＤ２０６に基づいて、所定の算出方法に従って決定された各機能での攪拌回数に従って、制御装置２１４は、各機能での攪拌回数を制御する。【００４３】
本実施形態では、データ攪拌装置２０８および初期化装置２１１は、予め定められたデータ長（以後、Ｌとする）のデータを受け入れ、処理を行う。上記のメッセージ入力制御装置２０９およびパラメータ入力制御装置２１８は、任意サイズのメッセージＭ２０５およびパラメータＫ２０４を、本実施形態のデータ攪拌装置２０８および初期化装置２１１でそれぞれ処理するために設けられている。【００４４】
メッセージ入力制御装置２０９を代表として説明すると、メッセージ入力制御装置２０９は、クロック生成装置２０３からクロックを受信する毎に、メッセージＭ２０５からＬビット切り出し、メモリ２１０に格納する。メッセージＭ２０５がＬの整数倍でない場合は、予めビット列１００…０などを用いてデータパディングを行い、Ｌの整数倍となるようにする。本実施形態では、メッセージＭ２０５は、メッセージ入力制御装置２０９において、各メッセージブロックＭ１、Ｍ２、…ＭＮに分割される（各メッセージブロックＭ１、Ｍ２…ＭＮのサイズはＬである。また、Ｎは、パディング後のメッセージＭ２０５をＬで割った場合の商である。）。パラメータ入力制御装置２１８の動作も基本的に同様であり、パラメータＫ２０４は、Ｋ１、Ｋ２、…Ｋｎ…ＫＰに分割される（分割後のパラメータのＫｎのサイズはＬである。また、Ｐは、パディング後のパラメータＫ２０４をＬで割った場合の商である。ここで、ｎは自然数であり、ここでは、Ｐ以下の自然数である。）。【００４５】
次に、ＭＡＣ生成装置２０１の動作の概要を説明する。図２は、ＭＡＣ生成装置２０１の動作概要を説明するためのフローチャートである。【００４６】
ステップ３０１：ＭＡＣ生成装置２０１には、パラメータＫ２０４とメッセージＭ２０５とが入力される。パラメータＫ２０４は、パラメータ入力制御装置２１８を介して初期化装置２１１に、メッセージＭ２０５は、メッセージ入力制御装置２０９を介してメモリ２１０に入力される。【００４７】
メッセージ入力制御装置２０９は、メッセージＭ２０５を、一定長Ｌのブロックに分割し、クロック生成装置２０３からクロック信号が入力されるごとにメモリ２１０にむけて出力する。パラメータ入力制御装置２１８も、同様に、パラメータＫ２０４を、一定長Ｌのブロックの分割し、クロック生成装置２０３からクロック信号が入力されるごとに、初期化装置２１１にむけて出力する。【００４８】
ＭＡＣ生成装置２０１は、これらの入力を受けると、クロック生成装置２０３から入力されるクロック信号に従って、以下の処理を行う。【００４９】
ステップ３０２：メッセージＭ２０５を、メッセージブロックＭｎに分割する。【００５０】
ステップ３０３：パラメータ入力制御装置２１８を介して入力されたパラメータＫ２０４（Ｋｎ）を初期化装置２１１に入力する。初期化装置２１１に、入力されたパラメータＫ２０４（Ｋｎ）に後述する初期化処理を施させ、レジスタ２１２長のデータを出力させる。初期化装置２１１から出力されたデータは、レジスタ２１２に格納される。【００５１】
ステップ３０４：カウンタ２１３の値を初期化する。本実施形態では、全てのビット値を０にセットする。【００５２】
ステップ３０５、３０６：クロック信号が入力される毎に、メッセージ入力制御装置２０９を介することにより、メッセージブロックＭｎ（ｎは、Ｎ以下の自然数であり、カウンタ２１３が現在保持している値となる。）として分割されたメッセージＭ２０５が、メモリ２１０に格納される。データ攪拌装置２０８に、メモリ２１０に格納されているメッセージブロックＭｎとレジスタ２１２に格納されているデータとを攪拌させ、レジスタ２１２長のデータを出力させる。出力されたデータは、レジスタ２１２に格納される。そして、カウンタ２１３の値を１増加させる。【００５３】
ステップ３０５、３０６の処理を、全てのメッセージブロックＭｎを処理し終えるまで、すなわち、ｎが１からＮになるまで繰り返す。【００５４】
ステップ３０７：カウンタ２１３の値がＮになると、制御装置２１４に、レジスタ２１２に保持されるデータがデータ圧縮装置２１６に入力されるようにスイッチ２１５を切り替えさせる。そして、その時点でレジスタ２１２に保持されるデータが、データ圧縮装置２１６に入力される。【００５５】
ステップ３０８：データ圧縮装置２１６に、入力されたデータの圧縮を行わせ、セキュリティパラメータＤ２０５に応じて、レジスタ２１２のビット長よりも短いデータを生成させる。そして、生成されたデータをメッセージ認証子Ｔ２０７として出力する。【００５６】
次に、初期化装置２１１、データ攪拌装置２０８、データ圧縮装置２１６について説明する。【００５７】
初期化装置２１１、データ攪拌装置２０８、データ圧縮装置２１６は、それぞれ独立な関数を用いて構成してもよいが、同じ攪拌関数によっても構成が可能である。実装コストを勘案すれば、同じ攪拌関数を用いる方がよい。以下、一つの攪拌関数を定義し、上記３装置を、この攪拌関数により実現する場合を例にあげ、説明する。【００５８】
図３は、上記３装置に適用可能な攪拌関数の処理を実現する攪拌装置６０１の概略を説明するための図である。また、図４は、攪拌装置６０１の動作概要を説明するための図である。【００５９】
図３に示すように、攪拌装置６０１への入力は、レジスタ６０２に格納されているデータと、外部入力６０３に格納されているデータとである。外部入力６０３のデータは、スイッチ６０９により、入力の有無を制御される。すなわち、攪拌装置６０１は、外部入力６０３のデータ入力ありで、レジスタ６０２内のデータを攪拌する処理と、外部入力６０３のデータ入力なしで、レジスタ６０２内のデータを攪拌する処理とを行うことができる。【００６０】
以下、説明のため、レジスタ６０２を、２つのレジスタに分割し、それぞれレジスタＡ６０４、レジスタＢ６０５とする。【００６１】
図３に示すように、本実施形態の攪拌装置６０１は、非線形変換装置６０６と、線形変換装置６０７、および入力フィルタ６１１とを備える。本実施形態では、線形変換装置６０７を実現する関数は、非退化なものを用いる。また、線形変換装置６０６を実現する関数は、レジスタＡ６０４からの入力に関して、可逆なものを用いる。それぞれ詳細は、後述する。【００６２】
図３に示すように、攪拌装置６０１は、スイッチ６０９と制御装置６０８とスイッチ６１０とによって切り替えられるレジスタ６０２からの入力と外部入力６０３からの入力とを受けると、以下の処理を行う。【００６３】
なお、スイッチ６０９は、制御装置６０８からの切り替え指示に従って、入力の切り替えを行う。【００６４】
ステップ７０２：外部入力６０３に格納されているデータの有無および制御装置６０８からの信号を確認する。【００６５】
ステップ７０３、７０４、７０５：外部入力６０３にデータが保持されていない場合、すなわち、外部入力６０３からデータが入力されない場合、もしくは、制御装置６０８から、外部入力６０３からのデータを無視する信号を受信した場合には、スイッチ６０９を、外部入力６０３が入力フィルタ６１１に入力しないように切り替える。一方、外部入力６０３にデータが保持され、かつ、制御装置６０８から無視を指示する信号が出力されていない場合には、スイッチ６０９を、外部入力６０３が保持しているデータが、入力フィルタ６１１に入力されるように切り替える。【００６６】
ステップ７０６：スイッチからの入力およびメモリのデータを入力フィルタ６１０に入力する。入力フィルタ６１１は入力に応じて、一定長のデータを出力する。【００６７】
ここで、入力フィルタ６１１は、スイッチからの入力とメモリのデータとの排他的論理和をとる処理を行う。また、さらに排他的論理和の結果を後述する非線形置換Ａ８０１により置換してもよい。【００６８】
ステップ７０７：レジスタＡ６０４とレジスタＢ６０５とに格納されているデータ、および、スイッチ６０９を介して受け取る外部入力６０３が保持しているデータまたはレジスタＢ６０５に格納されているデータを、非線形変換装置６０６に入力し、データを攪拌する。【００６９】
ステップ７０８：非線形装置６０６の出力およびレジスタＢ６０５が保持しているデータを、線形変換装置６０７に入力する。【００７０】
ステップ７０９：線形変換装置６０７からの出力を、レジスタＡ６０４、レジスタＢ６０５に格納する。【００７１】
ここで、非線形変換装置６０６、線形変換装置６０７の詳細について、説明する。以下において、前記のデータ長Ｌを６４ビットとする。すなわち、外部入力６０３のサイズを６４ビットとする。【００７２】
また、レジスタＡ６０４、レジスタＢ６０５は、それぞれ、３個、１６個の６４ビット小レジスタから構成されるものとして説明する。また、それぞれの小レジスタを、Ａ０、Ａ１、Ａ２、Ｂ０、Ｂ１、…Ｂ１５と表す。【００７３】
図３におけるレジスタＡ６０４、レジスタＢ６０５からの非線形変換装置６０６、線形変換装置６０７への細線は、それぞれ１本の線が６４ビットデータの流れを表す。また、各レジスタとも、上位（左）側から、Ａ０、Ａ１、Ａ２、Ｂ０、Ｂ１、…Ｂ１５とする。【００７４】
また、以下の処理では、各小レジスタが保持するデータは、時刻とともに更新されて行く。時刻ｔに状態更新がなされた時点でのレジスタＡ０を、Ａ０（ｔ）と記述する。これは、状態更新を記述する際に、時刻ｔを明記する必要がある場合のみ採用する。さらに、Ｂ１(t+1)←Ａ０(t)+Ａ１(t)との記述は、矢印の右辺のレジスタＡ０(t)とレジスタＡ１(t)とに格納されているデータを結合し、矢印の左辺のレジスタＢ１(t+1)に代入することを示す。【００７５】
図５は、本実施形態の非線形変換装置６０６の構成を説明するための図である。本図において、丸に十字の記号は、排他的論理和を表す。また、式中では、排他的論理和は、“ＸＯＲ”で表す。【００７６】
非線形装置６０６は、非線形置換Ａ８０１と非線形置換Ｂ８０２と巡回シフト装置８０３とを備える。非線形置換Ａ８０１および非線形置換Ｂ８０２の詳細については、後述する。【００７７】
非線形変換装置６０６には、レジスタＡ６０４に格納されているデータと、レジスタＢ６０５のＢ１０に格納されているデータと、スイッチ６０９により選択される、外部入力６０３またはレジスタＢのＢ４に格納されているデータと、の３つのデータが入力される。非線形変換装置６０６は、時刻ｔにおける、上記３つの入力に処理を施し、その結果を、時刻ｔ+１において、レジスタＡ６０４に格納することにより、レジスタＡ６０４の状態を更新する。【００７８】
非線形変換装置６０６によるレジスタＡ６０４の状態更新の詳細は、以下の式で与えられる。ここでは、非線形置換Ａ８０１をＦ、非線形置換Ｂ８０２をＧ、スイッチ６０９からの入力データをＰ(t)とする。【００７９】
Ａ０(t+1)←Ａ１(t)
Ａ１(t+1)←Ａ２(t) ＸＯＲ Ｇ(Ａ１(t) ＸＯＲ Ｐ(t))
Ａ２(t+1)←Ａ０(t) ＸＯＲ Ｆ(Ａ１(t) ＸＯＲ Ｂ１０(t) <<< １７)
ここで、上記式中の記号“<<<”は、６４ビットレジスタにおけるｎビット左巡回シフトを表す。以下、本明細書中、同様である。【００８０】
レジスタＡ６０４の状態更新の別例を説明する。図２１は、本別例の非線形変換装置６０６の構成を説明するための図である。本図における丸に十字の記号、”ＸＯＲ”は、図５と同様の意味である。本別例の非線形変換装置６０６によるレジスタＡ６０４の状態更新の詳細は以下の式で与えられる。【００８１】
Ａ０(t+1)←Ａ１(t)
Ａ１(t+1)←Ａ２(t) ＸＯＲ Ｇ(Ａ１(t) ＸＯＲ Ｂ４(t))
Ａ２(t+1)←Ａ０(t) ＸＯＲ Ｆ(Ａ１(t) ＸＯＲ Ｐ(t) <<< １７)
以上説明したように、本実施形態および本別例では、非線形変換装置６０６は、６４ビット入力データＰ（ｔ）から、１９２（６４×３）ビットの出力を得ている。すなわち、入力メッセージのサイズを出力長の１/２以下としている。【００８２】
次に、上記の非線形置換Ａ８０１、Ｂ８０２について説明する。【００８３】
図６は、非線形置換Ａ８０１の構成を説明するための図である。非線形置換Ａ８０１は、入力９０４に処理を施し、その結果を出力９０５として出力する。【００８４】
本図において、Ｓｉ（０＜＝ｉ＜８；ｉは自然数）（９０２）は、入力、出力ともに８ビットの変換テーブルであり、非線形変換を行う。また、Ｌｉ（０＜＝ｉ＜＝１；ｉは自然数）（９０３）は、入力、出力ともに３２ビットの線形変換を表す。Ｓｉ、Ｌｉとしては、例えば、ＦＩＰＳ１９７に記述されている８ビットの置換テーブルＳ−ｂｏｘ  Ｓ、ＭｉｘＣｏｌｕｍｎ（）などを用いることができる。【００８５】
本実施形態において、非線形置換Ａ８０１の処理は、次の式で与えられる。【００８６】
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.
ただし、上記式中で、記号"||"はデータの連結を表す。以下、本明細書中、同様である。【００８７】
すなわち、６４ビットの入力９０４を、上位ビットから８ビットずつ、それぞれ、Ｓ０、Ｓ１、…Ｓ７に入力し、処理を施し、その結果、Ｓ０からＳ３はＬ０に、Ｓ４からＳ７はＬ１に入力される。Ｌ０、Ｌ１での処理後、Ｌ０の上位１６ビットとＬ１の上位１６ビットとを入れ替え、出力９０５とする。【００８８】
非線形置換Ｂ８０２も基本的に上記非線形置換Ａ８０１と同様の構成で実現することができる。このように、同様の置換処理を用いることにより、実装規模を小さく抑えることができる。ただし、実装に対する制限が少ない場合には、異なる８ビット変換テーブルＳｉ（０＜＝ｉ＜８；ｉは自然数）（９０２）や、異なる線形変換Ｌｉ（０＜＝ｉ＜＝１；ｉは自然数）（９０３）を用いることで、より高い安全性を実現できる。【００８９】
次に、線形変換装置６０７について説明する。【００９０】
図７は、本実施形態の線形変換装置６０７の構成を説明するための図である。本図において、１本の線は、６４ビットデータの流れを表す。【００９１】
線形変換装置６０７には、レジスタＢ６０５に格納されているデータと、レジスタＡ６０４のＡ０に格納されているデータとの２つの値が入力される。線形変換装置６０７は、時刻ｔにおける、上記２つの入力に処理を施し、その結果を、時刻ｔ+１において、レジスタＢ６０５に格納することにより、レジスタＢ６０５の状態を更新する。【００９２】
線形変換装置６０７によるレジスタＢ６０５の状態更新の詳細は、以下の式で与えられる。【００９３】
Ｂｉ(t+1)←Ｂ（ｉ−１）(t)、（ｉは、０＜ｉ≦１５を満たす自然数、ただし、４、１０を除く）、
Ｂ０(t+1)←Ｂ１５(t) ＸＯＲ Ａ０(t)
Ｂ４(t+1)←Ｂ３(t) ＸＯＲ Ｂ７(t)
Ｂ１０(t+1)←Ｂ９(t) ＸＯＲ (Ｂ１３(t) <<< ３２)
なお、本線形変換装置６０７では、レジスタＡ６０４に保持されているデータは更新しない。【００９４】
次に、以上説明した攪拌装置６０１を、本実施形態のＭＡＣ生成装置内の、初期化、データ攪拌、データ圧縮の各処理に適用する場合を説明する。【００９５】
図８は、データ攪拌装置２０８として、攪拌装置６０１を利用する場合の構成を説明するための図である。【００９６】
本図に示すように、攪拌装置６０１がデータ攪拌装置２０８に、レジスタ６０２がレジスタ２１２に、外部入力６０３がメモリ２１０に、スイッチ６１０がスイッチ２１５に、スイッチ６０９がスイッチ２１７に対応する。【００９７】
上述のように、本実施形態では、メモリ２１０にメッセージブロックＭｎ単位で入力されるデータを、クロック生成装置２０３からのクロック信号に従って動作する制御装置２１４の指示で、データ攪拌装置２０８に入力し、攪拌を行う。メモリ２１０からの入力が完了したら、制御装置２１４がスイッチ２１５を操作し、レジスタ２１２に格納されているデータを、データ圧縮装置２１６に出力する。【００９８】
なお、本実施形態のデータ攪拌装置２０８は、クロック毎に、メモリ２１０に格納されたデータの入力と攪拌とを１回行うよう構成されている。しかし、セキュリティパラメータＤ２０６に応じて、データ攪拌回数を決定し、全てのメッセージブロックＭｎの入力終了後、当該データ攪拌回数、スイッチ２１７の切り替えて外部入力６０３（メモリ２１０からの入力）無しに、データを攪拌するよう構成してもよい。【００９９】
次に、上述の攪拌装置６０１により、初期化装置２１１を実現する構成を説明する。図９に、初期化装置２１１を実現する構成を示す。【０１００】
本図に示すように、本実施形態の初期化装置２１１は、上述の攪拌装置６０１およびレジスタ６０２、スイッチ６０９、スイッチ６１０、入力フィルタ６１１により構成される。【０１０１】
図３に示す制御装置６０８は図１に示す制御装置２１４に対応する。また、外部入力６０３は、パラメータＫ２０４をパラメータ入力制御装置２１８によりデータ長Ｌに分割した後のものである。初期化装置２１１における攪拌の回数は、セキュリティパラメータＤ２０６に基づいて定められる。【０１０２】
図１０は、攪拌装置６０１により初期化装置２１１を実現する場合の、ＭＡＣ生成装置２０１の処理フローである。【０１０３】
ステップ１１０１：入力としてパラメータＫ２０４とセキュリティパラメータＤ２０６とが与えられる。【０１０４】
ステップ１１０２：初期化装置２１１において、パラメータＫ２０４を、攪拌装置６０１（ここでは、初期化装置２１１）の入力サイズにあわせて、Ｐ個のブロックに分割する。必要に応じてパディング処理を行う。各分割後のパラメータＫ２０４を、Ｋｎとする（Ｋ＝Ｋ１、Ｋ２…Ｋｎ…ＫＰ；ｎはＰ以下の自然数。）。また、入力サイズは、外部入力６０３のサイズのＬ、すなわち、本実施形態では、６４ビットである。【０１０５】
ステップ１１０３：レジスタ６０２をゼロクリアする。【０１０６】
ステップ１１０４：カウンタ２１３の値を１にセットする（ｎ＝１）。【０１０７】
ステップ１１０５、１１０６：ｎがＰより大きくなる（ｎ＞Ｐ）まで、Ｋｎを外部入力６０３として、クロック信号が入力される毎に、攪拌装置６０１を動作させ、レジスタ６０２のデータを攪拌し、ｎを１増加させることを繰り返す。【０１０８】
ステップ１１０７：カウンタ２１３の値を再度１にセットする（ｎ＝１）。【０１０９】
ステップ１１０８、１１０９：ｎがＬ（Ｄ）より大きくなる（ｎ＞Ｌ（Ｄ））まで、外部入力６０３無しで、クロック信号が入力される毎に、攪拌装置６０１を動作させ、レジスタ６０２のデータを攪拌し、ｎを１増加させる処理を繰り返す。ここで、Ｌ（Ｄ）は、初期化処理の攪拌回数を示す値であって、セキュリティパラメータＤ２０６に従って定められる。【０１１０】
ステップ１１１０：攪拌終了後、この時点でのレジスタ６０２のデータを出力する。本実施形態では、レジスタ２１２に出力する。【０１１１】
次に、上述の攪拌装置６０１により、データ圧縮装置２１６を実現する構成を説明する。図１１にデータ圧縮装置２１６を実現する構成を示す。なお、データ圧縮装置２１６は、レジスタのデータ以外を入力として持たないため、図中では、入力フィルタ６１１を省略する。【０１１２】
本図に示すように、本実施形態のデータ圧縮装置２１６は、攪拌装置６０１およびレジスタ６０２、スイッチ６０９、スイッチ６１０により構成される。【０１１３】
図３に示す制御装置６０８は図１に示す制御装置２１４に対応する。また、データ圧縮装置２１６の場合、外部入力６０３に相当するものは無い。また、メッセージ認証子Ｔ２０７として最終結果を出力する前に、処理結果を一時的に保持するバッファＴ'２１６ａと、制御装置２１４からの指示し従って、バッファＴ'２１６ａのデータを出力するためのスイッチ２１６ｂとを備える。【０１１４】
データ圧縮装置２１６における攪拌の回数は、セキュリティパラメータＤ２０６に従って定められる。【０１１５】
図１２は、攪拌装置６０１により、データ圧縮装置２１６を実現する場合の、ＭＡＣ生成装置２０１の処理フローである。【０１１６】
ステッ１２０１：入力としてレジスタ２１２のデータと、セキュリティパラメータＤ２０６とが与えられる。レジスタ２１２のデータは、レジスタ６０２に保持される。【０１１７】
ステップ１２０２：カウンタ２１３の値を１にセットする（ｎ＝１）。【０１１８】
ステップ１２０３、１２０４：ｎがＬ'（Ｄ）より大きく（ｎ＞Ｌ'（Ｄ）と）なるまで、クロック毎に、外部入力６０３無しで攪拌装置６０１を動作させ、レジスタ６０２のデータを攪拌し、ｎを１増加させる処理を繰り返す。ここで、Ｌ'（Ｄ）は、データ圧縮処理の第一の攪拌回数を示す値であって、セキュリティパラメータＤ２０６に従って定められる。【０１１９】
ステップ１２０５：ｎがＬ'（Ｄ）より大きくなった時点で、カウンタ２１３の値を１にセットする（ｎ＝１）。また、出力するデータを一時的に格納するバッファＴ'２１６ａをクリアする。【０１２０】
ステップ１２０６、１２０７、１２０８：ｎがＬ''（Ｄ）より大きく（ｎ＞Ｌ''（Ｄ）と）なるまで、クロック信号が入力される毎に、外部入力６０３無しで、攪拌装置６０１を動作させ、ｎを１増加させる処理を繰り返す。ここで、Ｌ''（Ｄ）は、データ圧縮処理の第二の攪拌回数を示す値であって、セキュリティパラメータＤ２０６に従って定められる。そして、各クロック毎、すなわち、攪拌装置６０１を動作させて攪拌する毎に、以下の操作を行う。【０１２１】
Ｔ'←Ｔ'||Ａ２（ｎ）
ステップ１２０９：ｎがＬ''（Ｄ）より大きくなった場合、バッファＴ'２１６ａ内のデータをメッセージ認証子Ｔ２０７として出力する。【０１２２】
これにより、Ｌ''（Ｄ）の値により、すなわち、第二の攪拌回数により、出力されるメッセージ認証子Ｔのデータ長を調整できる。従って、本実施形態のＭＡＣ生成装置２０１では、任意長のメッセージ認証子を生成することができる。【０１２３】
本実施形態では、上記のように、セキュリティパラメータＤ２０６に依存して、攪拌回数が決定されるよう構成されている。しかし、このセキュリティパラメータＤ２０６は、固定値であってもよい。【０１２４】
また、上述のように、本実施形態の攪拌装置６０１では、外部入力６０３は、非線形変換装置６０６への入力とされているが、線形変換装置６０７に入力されるよう構成してもよい。この場合、レジスタＢ６０３の状態更新は、以下の式で表される。【０１２５】
Ｂｉ(ｔ＋1)←Ｂ(ｉ−1)(ｔ)、 （ｉは、０＜ｉ≦１５を満たす自然数、ただし、４、１０を除く）、 
Ｂ０(ｔ＋1)←Ｂ１５(ｔ) ＸＯＲ Ｐ(ｔ)、 
Ｂ４(ｔ＋1)←Ｂ３(ｔ) ＸＯＲ Ｂ7(ｔ)、 
Ｂ１０(ｔ＋1)←Ｂ９(ｔ) ＸＯＲ （Ｂ１３(ｔ) <<< ３２）. 
さらに、外部入力６０３は、非線形変換装置６０６および線形変換装置６０７の両方に入力するよう構成してもよい。この場合は、外部入力６０３を、線形変換装置６０７のＢ０（ｔ）に足しこむように構成する。【０１２６】
次に、本実施形態による、メッセージ認証子検証装置について説明する。メッセージ認証子検証装置は、メッセージ生成装置と同様の構成を有し、受信したメッセージとＭＡＣとの組から、メッセージとＭＡＣとをそれぞれ抽出する。そして、抽出したメッセージからＭＡＣを生成し、生成したＭＡＣと抽出したＭＡＣとを比較することにより検証を行う。【０１２７】
従って、以下に説明するように、受信したメッセージ認証子の真正性を検証する本実施形態のメッセージ認証子検証装置は、上述のＭＡＣ生成装置２０１と基本的に同様の構造を有するＭＡＣ生成処理を行う機能と、受信したＭＡＣとメッセージ認証子検証装置で生成したＭＡＣとを比較する機能とを備える。【０１２８】
図１３は、本実施形態のメッセージ認証子（ＭＡＣ）検証装置４０１の概要を説明するための図であり、図１４は、図１３のＭＡＣ検証装置による処理フローである。【０１２９】
本実施形態のＭＡＣ検証装置４０１は、ＭＡＣ生成装置２０１と、データ比較装置４０２とを備える。ＭＡＣ検証装置４０１への入力は、ＭＡＣ生成装置２０１への入力である、パラメータＫ２０４、メッセージＭ２０５、セキュリティパラメータＤ２０６と、クロック生成装置４０４からの入力信号と、データ比較装置４０２への入力であり、メッセージの真正性を検証するためのタグＴ４０５とである。タグＴ４０５は、受信したメッセージから抽出したＭＡＣである。また、メッセージＭ２０５およびパラメータＫ２０４は、ＭＡＣ生成装置２０１の場合と同様、それぞれメッセージ入力制御装置２０９およびパラメータ入力制御装置２１８を介して、所定長Ｌのブロック単位に分割されて、入力される。【０１３０】
ＭＡＣ検証装置４０１によるメッセージ認証子検証処理について以下に説明する。【０１３１】
ステップ５０２：ＭＡＣ生成装置２０１に、パラメータＫ２０４、メッセージＭ２０５、セキュリティパラメータＤ２０６を入力し、ＭＡＣ生成処理を行い、結果を出力する。【０１３２】
ステップ５０３：ステップ５０２の処理結果である出力とタグＴ４０５の値とを比較する。【０１３３】
ステップ５０４、５０５：ステップ５０３の比較において、両者の値が等しければ０を出力し、それ以外の場合は１を出力する。すなわち、メッセージが真正と検証された場合、０を出力し、それ以外の場合１を検証結果４０６として出力する。【０１３４】
ステップ５０６：処理を終了する。【０１３５】
次に、本実施形態の認証暗号装置について説明する。【０１３６】
図１６は、本実施形態の認証暗号装置１６０１のイメージ図である。本図に示すように、本実施形態の認証暗号装置１６０１は、図１に示すレジスタ２１２を持つメッセージ認証子（ＭＡＣ）生成装置２０１、ビット列出力フィルタ１６０５、レジスタ２１２から出力フィルタ１６０５への入力を制御するスイッチ１６０６、暗号化装置１６０８、暗号化装置１６０８へのメッセージ入力を制御するスイッチ１６０７、暗号化装置１６０８の出力を蓄えるメモリ１６１２を備える。それぞれの構成要素の詳細な構成については後述する。【０１３７】
次に、上記のメッセージ認証子生成装置２０１を備えた認証暗号装１６０１置の処理動作について説明する。【０１３８】
本実施形態の認証暗号装置１６０１は、メッセージ入力制御装置２０９を介して入力されたメッセージＭ２０５に、クロック生成装置２０３から入力されるクロック信号に従って処理を施し、メッセージＭ２０５を暗号化し、暗号文Ｃ１６０９を出力する。また、認証暗号装置１６０１は、全てのメッセージＭ２０５に処理を施した後、メッセージ認証子Ｔ２０７を生成する。【０１３９】
本実施形態で認証暗号装置１６０１への外部からの入力は、メッセージ入力制御装置２０９を介して入力されるメッセージＭ２０５の他に、パラメータ入力制御装置２１８を介して入力されるパラメータＫ２０４と、セキュリティパラメータＤ２０６と、暗号化処理をするか否かを決定する暗号化フラグＦ１６１０と、クロック生成装置２０３が生成するクロック信号とがある。【０１４０】
次に、認証暗号装置１６０１の動作の概要を説明する。図１７は、認証暗号装置１６０１の動作概要を説明するためのフローチャートである。【０１４１】
ステップ１７０１：認証暗号装置１７０１には、パラメータＫ２０４とメッセージＭ２０５とが入力される。パラメータＫ２０４は、パラメータ入力制御装置２１８を介してメッセージ認証子生成装置２０１に入力され、メッセージ認証子生成装置２０１の初期化を行う。メッセージＭ２０５は、メッセージ入力制御装置２０９を介してメッセージ認証子生成装置２０１に、さらに、スイッチ１６０７を介して暗号化装置１６０８に入力される。【０１４２】
メッセージ入力制御装置２０９は、メッセージＭ２０５を、一定長Ｌのブロックに分割し、クロック生成装置２０３からクロック信号が入力されるごとにメッセージ認証子生成装置２０１と暗号化装置１６０８に向けて出力する。パラメータ入力制御装置２１８は、図３で説明したメッセージ認証子生成装置２０１の場合と同様に動作する。【０１４３】
認証暗号装置１６０１は、これらの入力を受けると、クロック生成装置２０３から入力されるクロック信号に従って、以下の処理を行う。【０１４４】
ステップ１７０２：メッセージＭ２０５を、ブロック長ＬビットのメッセージブロックＭ１、Ｍ２、…、ＭＮに分割する。【０１４５】
ステップ１７０３：パラメータ入力制御装置２１８を介して入力されたパラメータＫ２０４（Ｋｎ）を順にメッセージ認証子生成装置２０１に入力し、レジスタ２１２の初期化を行う。【０１４６】
ステップ１７０４：メッセージ認証子生成装置２０１に含まれているカウンタ（２１３；図１６では不図示）の値を初期化する。本実施形態では、全てのビット値を０にセットする。【０１４７】
ステップ１７０５：カウンタ２１３の値がＮになるまでステップ１７０６、１７０７の処理を繰り返す。【０１４８】
ステップ１７０６：クロック信号が入力されるごとに、メッセージ認証子生成装置２０１は図３のステップ３０６に従い処理を行う。【０１４９】
ステップ１７０７：レジスタ２１２の値がスイッチ１６０６を介して出力フィルタ１６０５に入力される。出力フィルタ１６０５は、レジスタ２１２から入力された値から、一定長のビット列Ｒｎ（ｎはＮ以下の自然数であり、カウンタが現在保持している値となる)を生成し、暗号化装置１６０８に向けて出力する。暗号化装置１６０８は、メッセージ入力制御装置２０９およびスイッチ１６０７を介して入力されたメッセージブロックＭｎと前記のビット列Ｒｎとから暗号文ブロックＣｎを生成し、メモリ１６１２に向けて出力する。【０１５０】
ステップ１７０８、１７０９：カウンタ２１３の値がＮになると、メッセージ認証子生成装置２０１は図３におけるステップ３０７、３０８の処理を行い、メッセージ認証子Ｔ２０７を出力する。同時にメモリ１６１２は暗号文Ｃ（暗号文パケット１６１１）=Ｃ１||Ｃ２||…||ＣＮを出力する。【０１５１】
ステップ１７１０：処理を終了する。【０１５２】
以上が認証暗号装置１６０１の構成と動作のフローである。【０１５３】
なお、認証暗号装置１６０１への入力のうち、暗号化フラグＦ１６１０はメッセージを暗号化するか否かを決定するフラグである。暗号化フラグＦ１６１０が暗号化を指示している場合には、スイッチ１６０６、１６０７が接続され、上記の認証暗号装置１６０１として動作する。一方、暗号化フラグが暗号化を指示していない場合には、スイッチ１６０６、１６０７は切断され、暗号化処理は行われない。この場合には、認証暗号装置１６０１は前述のメッセージ認証子生成装置２０１として動作し、メッセージ認証子Ｔ２０７のみを出力する。【０１５４】
上記の構成例では、暗号文ブロックＣｎを一旦メモリ１６１２に格納し、メッセージ認証子Ｔ２０７と同時に暗号文パケット１６１１として出力したが、十分なメモリが確保できない場合などには、暗号文ブロックＣｎは逐次出力しても良い。【０１５５】
認証暗号装置１６０１が備えている出力フィルタ１６０５は、レジスタＡ（６０４）の最下位ブロックＡ２（ｔ）を出力する。上記の構成例は、最も単純な出力フィルタの例であり、レジスタ２１２の複数ブロックにさらに非線形変換を施して安全性を高めることも可能である。【０１５６】
非線形な出力フィルタの例として、図６に挙げた非線形置換Ａ８０１を用いる例を以下に説明する。非線形置換Ａ８０１による変換をＦで、出力フィルタ１６０５をＦｏｕｔで表すとき、
Fout(A0(t), A1(t), A2(t), B0(t), …, B15(t)) = F(A2(t) XOR Bi(t)) XOR Bj(t)
で定義される出力フィルタは、出力されるビット列とレジスタの値との相関を小さくする働きがあり、結果として、より安全な認証暗号装置を実現することができる。【０１５７】
次に、認証暗号装置１６０１で暗号化されたデータの完全性を検証しつつデータを復号する認証復号装置を説明する。【０１５８】
図１８は、本実施形態の認証復号装置１８０１のイメージ図である。認証復号装置１８０１の構成は、基本的に認証暗号装置１６０１と同様であるが、暗号化装置１６０８の代わりに復号装置１８０６を備え、また、タグＴ１８０４とメッセージ認証子生成装置２０１の出力とを比較するタグ比較装置１８０８、復号装置１８０６の出力を保持するメモリ１８０７を備える。【０１５９】
認証復号装置１８０１への入力は、メッセージＭ２０５ではなく暗号文Ｃ１８０３である。暗号文Ｃ１８０３は暗号文入力制御装置１８０５を介してメッセージ認証子生成装置２０１と復号装置１８０６とに入力される。また、付加的な入力として、タグＴ１８０４がある。【０１６０】
次に、認証復号装置１８０１の動作の概要を説明する。図１９は、認証復号装置１８０１の動作概要を説明するためのフローチャートである。【０１６１】
ステップ１９０１：認証復号装置１８０１は、パラメータＫ２０４と暗号文１８０３とタグＴ１８０４とが入力される。【０１６２】
メッセージ入力制御装置２０９は、暗号文Ｃ１８０３を一定長Ｌのブロックに分割し、クロック生成装置２０３からクロック信号が入力されるごとにメッセージ認証子生成装置２０１と復号装置１８０６とに向けて出力する。【０１６３】
パラメータ入力制御装置２１８は、図３で説明したメッセージ認証子生成装置２０１の場合と同様に動作する。【０１６４】
認証復号装置１８０１は、これらの入力を受けると、クロック生成装置２０３から入力されるクロック信号に従って、以下の処理を行う。【０１６５】
ステップ１９０２：暗号文Ｃ１８０３を、ブロック長Ｌビットの暗号文ブロックＣ１、Ｃ２、…、ＣＮに分割する。【０１６６】
ステップ１９０３：パラメータ入力制御装置２１８を介して入力されたパラメータＫ２０４（Ｋｎ）を順にメッセージ認証子生成装置２０１に入力し、レジスタ２１２の初期化を行う。【０１６７】
ステップ１９０４:メッセージ認証子生成装置２０１に含まれているカウンタ（２１３；図１８では不図示）の値を初期化する。本実施形態では、全てのビット値を０にセットする。【０１６８】
ステップ１９０５：カウンタ２１３の値がＮになるまでステップ１７０６、１７０７の処理を繰り返す。【０１６９】
ステップ１９０６：クロック信号が入力されるごとに、レジスタ２１２の値がスイッチ１６０６を介して出力フィルタ１６０５に入力される。出力フィルタ１６０５は、レジスタ２１２から入力された値から、一定長の乱数列Ｒｎ（ｎはＮ以下の自然数であり、カウンタが現在保持している値となる。）を生成し、復号装置１８０６に向けて出力する。復号装置１８０６は、暗号文入力制御装置１８０５、スイッチ１６０７を介して入力された暗号文ブロックＣｎから復号文Ｍｎ’を生成し、出力する。【０１７０】
ステップ１９０７:メッセージ認証子生成装置２０１は図３のステップ３０６に従い処理を行う。【０１７１】
ステップ１９０８、１７０９：カウンタ２１３の値がＮになると、メッセージ認証子生成装置２０１は図３におけるステップ３０７、３０８の処理を行い、復号文Ｍ’に対するメッセージ認証子Ｔ’を出力する。【０１７２】
ステップ１９１０：ステップ１９０９で出力されたメッセージ認証子Ｔ’とタグＴ１８０４の値と比較する。【０１７３】
ステップ１９１１、１９１２：ステップ１９１０の比較において、両者の値が等しければ復号文Ｍ’を出力する。それ以外の場合には、認証が失敗したことを示すエラー信号、たとえば１を出力する。【０１７４】
ステップ１９１３：処理を終了する。【０１７５】
次に、本実施形態のＭＡＣ生成装置２０１およびＭＡＣ検証装置４０１を用いたメッセージ認証方法について説明する。【０１７６】
図１５は、本実施形態のＭＡＣ生成装置２０１およびＭＡＣ検証装置４０１によりメッセージ認証を行う通信システムの構成図である。【０１７７】
ここでは、ＭＡＣ生成装置２０１、ＭＡＣ検証装置４０１を実現するものとして、例えば、ＩＣカード１３０１、１３０９を例にあげて説明する。【０１７８】
本実施形態の通信システムは、ＭＡＣ生成装置２０１、メッセージ入力制御装置２０９およびパラメータ入力制御装置２１８を実現するＩＣカード１３０１と、ＭＡＣ検証装置４０１、メッセージ入力制御装置２０９およびパラメータ入力制御装置２１８を実現するＩＣカード１３１１と、ＩＣカード１３０１で生成したメッセージ認証子とメッセージとをネットワーク１３４０を介して相手装置に送信する送信側通信装置１３２０と、ネットワーク１３４０を介して送信側通信装置１３２０から送信されたメッセージ認証子とメッセージとを受信し、ＩＣカード１３１１に受け渡す受信側通信装置１３３０とを備える。【０１７９】
ＩＣカード１３０１、１３１１は、本図に示すように、ＣＰＵ１３０２、１３１３、メモリ１３０３、１３１３、記憶装置１３０４、１３１４、入出力インタフェース１３０５、１３１５とをそれぞれ備える。【０１８０】
また、記憶装置１３０４、１３１４には、本図に示すように、秘密鍵１３０６、１３１６、メッセージ番号１３０７、１３１７、セキュリティパラメータＤ２０６、メッセージ認証子生成プログラム１３０８、メッセージ認証子検証プログラム１３１８とが、それぞれ格納されている。【０１８１】
メッセージ認証子生成プログラム１３０８は、メモリ１３０３にロードされ、ＣＰＵ１３０２にて実行されることにより、上記のＭＡＣ生成装置２０１、メッセージ入力制御装置２０９およびパラメータ入力制御装置２１８の機能を実現する。また、秘密鍵１３０６とメッセージ番号１３０７との対を、ＭＡＣ生成装置２０１のパラメータＫ２０４として用いる。【０１８２】
メッセージ認証子検証プログラム１３１８は、メモリ１３１３にロードされ、ＣＰＵ１３１２にて実行されることにより、上記のＭＡＣ検証装置４０１、メッセージ入力制御装置２０９およびパラメータ入力制御装置２１８の機能を実現する。また、秘密鍵１３１６とメッセージ番号１３１７との対を、ＭＡＣ検証装置４０１のパラメータＫ２０４として用いる。【０１８３】
なお、クロック信号は、ＩＣカード１３０１、１３１１内のクロック生成機能により生成されるものを利用する。【０１８４】
以下、本通信システムにおける、メッセージ認証の処理手順について、説明する。【０１８５】
ステップ１４０１：データ送信者とデータ受信者は、事前に秘密鍵１３０６、１３１６を秘密裏に共有しておく。また、メッセージ番号１３０７、１３１７およびセキュリティパラメータＤ２０６は、秘密裏である必要はないが、事前に共有しておく。すなわち、ＩＣカード１３０１の秘密鍵１３０６とＩＣカード１３１１の秘密鍵１３１６、および、メッセージ番号１３０７と１３１７とには、それぞれ同じデータが保持される。これらの情報を共有する技術は、例えば、公開鍵暗号技術を用いることで、実現できる。【０１８６】
ステップ１４０２：メッセージ送信者は、Ｉ/Ｏインタフェース１３０５を介して、メッセージＭ２０５をＩＣカード１３０１に入力する。ＩＣカード１３０１（ＭＡＣ生成装置２０１）は、メッセージＭ２０５の入力を受け付けると、秘密鍵１３０６とメッセージ番号１３０７とからなるパラメータ、および、セキュリティパラメータＤ２０６を用いて、入力されたメッセージＭ２０５に対するメッセージ認証子Ｔ２０７を生成し、メッセージＭ２０５とともに送信側通信装置１３２０に受け渡す。【０１８７】
ステップ１４０３：メッセージＭ２０５とメッセージ認証子Ｔ２０７とをＩＣカード１３０１から受け取ると、送信側通信装置１３２０は、それらを、ネットワーク１３４０を介して、受信側通信装置１３３０に送信する。【０１８８】
ステップ１４０４：受信側通信装置１３４０は、メッセージＭ２０５およびメッセージ認証子Ｔ２０７を受信し、Ｉ/Ｏインタフェース１３１５を介して、ＩＣカード１３１１（ＭＡＣ検証装置４０１）に入力する。【０１８９】
ステップ１４０５：ＩＣカード１３１１は、メッセージＭ２０５とメッセージ認証子Ｔ２０７とを受け取ると、共有情報である秘密鍵１３１６とメッセージ番号１３１７とからなるパラメータ、および、セキュリティパラメータＤ２０６とを用いて、メッセージ認証子Ｔ２０７を検証し、入力されたメッセージＭ２０５の真正性を判断し、真正である場合は０、そうでない場合は１を出力することにより、その結果を出力する。【０１９０】
具体的には、受信側でメッセージ認証子Ｔ２０７'を生成し、受け取ったメッセージ認証子Ｔ２０７と比較し、合致すれば、真正、合致しない場合は真正でないものと判断し、上記０、１を出力する。【０１９１】
次に、認証暗号装置１６０１、認証復号装置１８０１を実現するものとして、ＩＣカード２００１、２０１１を例に挙げて説明する。【０１９２】
図２０はＩＣカード２００１、２０１１を含む通信システムの構成例である。図２０のシステムは、図１５で説明したメッセージ認証機能を備えた通信システムとほぼ同様の構成を備える。ただし、ＩＣカード２００１は、メッセージ認証子生成プログラム１３０８の代わりに認証暗号プログラム２００２を、そして、ＩＣカード２０１１は、メッセージ認証子検証装置１３１８の代わりに、認証復号プログラム２０１２を格納する。また、暗号処理を行うかどうかを決定する暗号化フラグ２００３、２０１３をそれぞれ格納する。【０１９３】
以下、本通信システムにおける、データ処理の手順について説明する。【０１９４】
ステップ２２０１：データ送信者とデータ受信者とは、事前に秘密鍵１３０６、１３１６を共有しておく。これはメッセージ認証システムのステップ１４０１と同様であるが、この他に、データ送信者とデータ受信者とは暗号化フラグ２００３と２００４とを同期させ、データの暗号化を行うか否かを予め決定しておく。ただし、暗号化フラグを暗号文パケット１６１１に含めることで、データ通信と同時に暗号化フラグの同期を行うこともできる。【０１９５】
ステップ２２０２：メッセージ送信者は、Ｉ／Ｏインターフェース１３０５を介して、メッセージＭ２０５をＩＣカード２００１に入力する。ＩＣカード２００１(認証暗号装置１６０１)は、メッセージＭ（２０５）の入力を受け付けると、秘密鍵１３０６とメッセージ番号１３０７とからなるパラメータおよびセキュリティパラメータＤ２０６を用い、入力されたメッセージＭ（２０５）に対するデータ処理を行う。暗号化フラグ２００３が暗号化処理を指示していない場合は、ＩＣカード２００１は上記パラメータを用いてメッセージＭ（２０５）に対するメッセージ認証子Ｔ（２０７）を生成し、メッセージＭ（２０５）と共に送信側通信装置１３２０に受け渡す。また、暗号化フラグ２００３が暗号化処理を指示している場合には、ＩＣカード２００１は上記パラメータを用いてメッセージＭ（２０５）に暗号化処理を施し、暗号文Ｃ（１６０９）を生成すると同時に、メッセージＭ（２０５）に対するメッセージ認証子Ｔ（２０７）を生成し、暗号文Ｃ（１６０９）と共に送信側通信装置１３２０に受け渡す。【０１９６】
暗号化処理を行わない場合のＩＣカード２００１、２００２の動作は前記のメッセージ認証システムの処理手順と同じなので、以下では記述を省略する。【０１９７】
ステップ２２０３：暗号文Ｃ（１３０９）とメッセージ認証子Ｔ（２０７）からなる暗号文パケット（１６１１）とをＩＣカード２００１から受け取ると、送信側通信装置１３２０は、それらを、ネットワーク１３４０を介して、受信側通信装置１３３０に送信する。【０１９８】
ステップ２２０４：受信側通信装置１３３０は、暗号文Ｃ（１８０３）およびタグＴ（１８０４）を受信し、Ｉ／Ｏインターフェース１３１５を介して、ＩＣカード２０１１(認証復号装置１８０１)に入力する。【０１９９】
ステップ２２０５：ＩＣカード２０１１は、暗号文Ｃ（１８０３）およびタグＴ（１８０４）を受け取ると、共有情報である秘密鍵１３１６とメッセージ番号１３１７とからなるパラメータ、およびセキュリティパラメータＤ２０６とを用いて、暗号文の復号とタグＴ（１８０４）の検証を行う。検証の結果、暗号文の改ざんが検出されなければ(暗号文Ｃ１８０３から計算したメッセージ認証子の値とタグＴ（１８０４）の値とが一致すれば)、復号したメッセージＭ’（１８０９）を出力する。そうでない場合には、メッセージ認証子の値が一致しなかったことを意味する信号(たとえば０)を出力する。【０２００】
以上説明したように、本実施形態におけるＭＡＣ認証装置２０１およびＭＡＣ検証装置４０１によれば、高速な処理が可能であり、長期間の使用に耐え得る安全なＭＡＣ生成装置およびＭＡＣ検証装置が提供できる。また、本実施形態における認証暗号装置１６０１および認証復号装置１８０１によれば、高速な処理が可能であり、長期間の使用に耐え得る安全な認証暗号装置および認証復号装置が提供できる。さらに、上記各装置で用いられる本実施形態のＭＡＣ生成装置２０１は、攪拌回数を、鍵長などのセキュリティパラメータで決定する構成となっているため、攪拌処理の適用回数の変更が容易である。これは、安全性レベルと処理速度とをフレキシブルに設定できることを意味する。【０２０１】
インターネットのように、公開通信路を用いた通信では、メッセージの真正性検証は、信頼できる通信路を確保するために必須の技術である。【０２０２】
従来から知られているブロック暗号を利用した方式は、高速な処理が困難である。また、ハッシュ関数を用いた構成では、いずれの方式でも、以下の問題点がある。
（１）処理速度が遅い。
（２）出力長が短い（安全性のレベルが低い）。【０２０３】
ブロック暗号技術を利用した方式に比べ、ストリーム暗号技術を利用するメッセージ認証は、安価かつ高速に処理を行うことができるため、広い範囲での応用が見込まれる。【０２０４】
本実施形態のメッセージ認証は、ストリーム暗号技術を用いたものである。従って、本実施形態によるＭＡＣ生成装置、ＭＡＣ検証装置は、任意のメッセージ認証システムにおけるメッセージ認証子生成機能、および認証子検証機能の、より安価で高速な代替として用いることができる。また、本実施形態のＭＡＣ生成装置およびＭＡＣ検証装置によれば、上記ＭＡＣ生成とデータの暗号化とを同時に行う認証暗号の機能を、より安価に提供することができる。【０２０５】
本実施形態におけるＭＡＣ生成装置およびＭＡＣ検証装置によるメッセージの真正性検証機能は、従来方式に比べ、以下の利点を有する。
（１）メッセージの真正性を検証するための実装コストを最小限に抑えられる。
（２）ブロック暗号を用いるものに比べて高速な処理を行うことができ、計算機に対する負荷が少ない。【０２０６】
一般的に、組み込み機器や携帯端末では、実装やコストに制約があり、メッセージの真正性検証は軽視されがちである。このような計算機の能力に制限がある環境における暗号処理では、コストパフォーマンスに優れるストリーム暗号を用いる場合が多い。本実施形態のＭＡＣ生成装置およびＭＡＣ検証装置はこのような環境でのメッセージ検証機能の導入コストを最小限に抑えることができ、今後のユビキタス情報端末での広い応用が期待される。
【図１】
2006019152.tif 000002
【図２】
2006019152.tif 000003
【図３】
2006019152.tif 000004
【図４】
2006019152.tif 000005
【図５】
2006019152.tif 000006
【図６】
2006019152.tif 000007
【図７】
2006019152.tif 000008
【図８】
2006019152.tif 000009
【図９】
2006019152.tif 000010
【図１０】
2006019152.tif 000011
【図１１】
2006019152.tif 000012
【図１２】
2006019152.tif 000013
【図１３】
2006019152.tif 000014
【図１４】
2006019152.tif 000015
【図１５】
2006019152.tif 000016
【図１６】
2006019152.tif 000017
【図１７】
2006019152.tif 000018
【図１８】
2006019152.tif 000019
【図１９】
2006019152.tif 000020
【図２０】
2006019152.tif 000021
【図２１】
2006019152.tif 000022
【国際調査報告】
2006019152.tif 000023
2006019152.tif 000024