(57)【要約】  幾つかの実施態様は、入力メッセージのためのキー付きメッセージ認証コード（ＭＡＣ）をエンコードされた表現を用いて計算するキー付きＭＡＣ装置１００に関するものである。該キー付きＭＡＣ装置は、一連の圧縮関数を適用するように構成することができ、これら圧縮関数のうちの少なくとも１つは状態をエンコードされた表現の入力として取り込む。
2021507310.tif 000002
【特許請求の範囲】
【請求項１】
エンコードされた表現を用いて、入力メッセージのためのキー付きメッセージ認証コードを計算するキー付きメッセージ認証コード装置であって、
前記入力メッセージを受信するための入力インターフェースと、
前記入力メッセージを１以上のメッセージブロックに分割し、内側ハッシュの計算を実行し、且つ、外側ハッシュの計算を実行するプロセッサ回路であって、前記内側ハッシュの計算が、
状態を暗号キーに基づいて初期化すること、及び
一連の第１圧縮関数を適用することであって、前記第１圧縮関数は前記状態及びメッセージブロックを入力として取り込むと共に、新たな状態を生成し、これら第１圧縮関数のうちの少なくとも１つが前記状態をエンコードされた表現の入力として取り込むこと、
を有し、前記外側ハッシュの計算が、
状態を前記暗号キーに基づいて初期化すること、及び
一連の第２圧縮関数を適用することであって、前記第２圧縮関数は前記状態及び前記内側ハッシュのブロックを入力として取り込むと共に、新たな状態を生成し、これら第２圧縮関数のうちの少なくとも１つが前記状態を、エンコードされた表現の入力として取り込むこと、
を有するプロセッサ回路と、
を有し、
前記状態は前記内側ハッシュの計算において圧縮関数を予め定められた初期化ブロック及び第１キーブロックに適用することのエンコードされた表現に初期化され、
前記状態は前記外側ハッシュの計算において圧縮関数を予め定められた初期化ブロック及び第２キーブロックに適用することのエンコードされた表現に初期化され、
前記内側ハッシュの計算における前記一連の第１圧縮関数のうちの最初の第１圧縮関数の後の最後の圧縮関数は状態を、エンコードされていない表現で生成し、前記１以上の第２圧縮関数が、入力として、前記状態をエンコードされた表現で且つ前記内側ハッシュのブロックをエンコードされていない表現で取り込む、
キー付きメッセージ認証コード装置。
【請求項２】
前記内側ハッシュの計算における前記一連の第１圧縮関数のうちの前記最初の第１圧縮関数の後の最後の圧縮関数が、エンコードされた状態を入力として取り込むと共に、状態をエンコードされていない表現で生成する、請求項１に記載のキー付きメッセージ認証コード装置。
【請求項３】
前記プロセッサ回路が前記メッセージに、例えば第１メッセージブロックに、ノンスを含める、請求項１又は２に記載のキー付きメッセージ認証コード装置。
【請求項４】
前記キー付きメッセージ認証コードがハッシュメッセージ認証コードである、請求項１から３の何れか一項に記載のキー付きメッセージ認証コード装置。
【請求項５】
入力メッセージのためのキー付きメッセージ認証コードをエンコードされた表現を用いて計算するキー付きメッセージ認証コード方法であって、
前記入力メッセージを受信すると共に、該入力メッセージを１以上のメッセージブロックに分割するステップと、
内側ハッシュの計算を実行するステップであって、前記内側ハッシュの計算が、
状態を、暗号キーに基づいて、圧縮関数を予め定められた初期化ブロック及び第１キーブロックに適用することのエンコードされた表現に初期化するステップ、及び
一連の第１圧縮関数を適用するステップであって、前記第１圧縮関数は前記状態及びメッセージブロックを入力として取り込むと共に、新たな状態を生成し、これら第１圧縮関数のうちの少なくとも１つが前記状態をエンコードされた表現の入力として取り込むステップ、
を有し、
前記内側ハッシュの計算における前記一連の第１圧縮関数のうちの最初の第１圧縮関数の後の最後の圧縮関数が状態をエンコードされていない表現で生成する、
内側ハッシュの計算を実行するステップと、
外側ハッシュの計算を実行するステップであって、該外側ハッシュの計算が、
状態を、前記暗号キーに基づいて、圧縮関数を予め定められた初期化ブロック及び第２キーブロックに適用することのエンコードされた表現に初期化するステップ、及び
一連の第２圧縮関数を適用するステップであって、前記第２圧縮関数は前記状態及びエンコードされていない表現の前記内側ハッシュのブロックを入力として取り込むと共に、新たな状態を生成し、これら第２圧縮関数のうちの少なくとも１つが前記状態をエンコードされた表現の入力として取り込むステップ、を有する、
外側ハッシュの計算を実行するステップと、
を有する、キー付きメッセージ認証コード方法。
【請求項６】
プロセッサシステムに請求項７に記載の方法を実行させるための命令を表す一次的又は非一時的データを有する、コンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キー付きメッセージ（keyed message）認証装置、キー付きメッセージ認証方法及びコンピュータ読取可能な媒体に関する。
【背景技術】
【０００２】
暗号プリミティブ（cryptographic primitive）は、該プリミティブの入力及び出力の知識しか有さない攻撃者が自身の権利を高める（例えば、秘密キーを得る、メッセージを暗号化する、メッセージを解読する等）ことができないなら、ブラックボックスモデルにおいて安全と考えられる。しかしながら、実際には、攻撃者は、しばしば、ブラックボックスモデルでは振る舞わず、事実、入力及び出力以上の情報を有する。例えば、グレイボックスモデルにおいては、攻撃者はプリミティブの実行に関係する幾らかの情報に対するアクセスを有すると仮定される。これらの追加の情報源は、“サイドチャンネル”と呼ばれる。例えば、サイドチャンネルは演算が掛けた時間量又は消費された電力量等を含む。更に一層強力なモデル（所謂、ホワイトボックスモデル）において、攻撃者は当該プリミティブの全ての内部変数に対する完全なアクセスを有する。攻撃者は、プログラムが実行中である場合でさえ、変数を修正することもできる。そうであっても、ホワイトボックス構成は、当該プログラムからの秘密キーの抽出を防止することを目指す。
【０００３】
キー付きハッシュメッセージ認証コード（ＨＭＡＣ）は、暗号ハッシュ関数及び秘密暗号キーを含む一種のメッセージ認証コード（ＭＡＣ）である。何れのＭＡＣとも同様に、ＨＭＡＣはデータの完全性及びメッセージの真正性の両方を同時に検証するために使用することができる。ＨＭＡＣはメッセージを暗号化することはない。代わりに、メッセージはＨＭＡＣハッシュと一緒に送信されねばならない。秘密キーを有する受信者は、メッセージのＨＭＡＣを自身で計算し、該メッセージが真正であるなら、受信されて計算されたＨＭＡＣは一致するであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＨＭＡＣがモバイルアプリケーションに組み込まれる場合、これらの装置は潜在的に危殆化され得ると仮定されなければならない。既存のＨＭＡＣ構成の問題は、秘密暗号キーを保護する手段を提供していないということである。グレイ又はホワイトボックスモデルにおいて高い耐性を有するＨＭＡＣ装置に対する要望が存在する。
【課題を解決するための手段】
【０００５】
請求項において定義されるようなキー付きメッセージ認証装置が提供される。該装置は、メッセージ認証コードを計算するために状態（state）に圧縮関数を適用する。これら圧縮関数のうちの少なくとも幾つかは、エンコードされた状態を入力として取り込む。状態は、キー材料から導出され、従って秘密であり得る。この情報をエンコードすることにより、この危険性は低減される。例えば、一実施態様において、内側ハッシュ（inner hash）及び外側ハッシュ（outer hash）は状態により初期化され、これら２つの状態の何れかは事前に計算し、エンコードすることができる。このように、初期化された状態に作用する圧縮関数は、エンコードされた状態に対して作用するよう構成することができる。一実施態様において、１以上の圧縮関数は、これらがエンコードされた状態に対して作用するとしても、平文状態（plain state）を生成することができる。このことは、後続の圧縮関数が、より少ないエンコードされた入力を受信するという利点を有する。より少ないエンコードされた入力は、より速い実行及び一層小さなフットプリント（例えば、コードサイズ）を意味する。
【０００６】
当該キー付きＭＡＣ装置は、例えば、セットトップボックス、コンピュータ等の電子装置である。該キー付きＭＡＣ装置は、例えば、携帯電話、タブレット、スマートカード等のモバイル電子装置であり得る。ここに記載されるキー付きＭＡＣ方法は、広範囲の実用的アプリケーションにおいて適用することができる。このような実用的アプリケーションは、通信のためのメッセージの保護、金融取引、センサ測定等を含む。
【０００７】
本発明による方法は、コンピュータ上でコンピュータ実施化方法として、専用のハードウェアで、又は両者の組合せで実施することができる。本発明による方法のための実行可能なコードは、コンピュータプログラム製品に記憶することができる。コンピュータプログラム製品の例は、メモリ装置、光記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行された場合に本発明による方法を実行するためのコンピュータ読取可能な媒体に記憶された非一時的プログラムコードを有する。
【０００８】
好ましい実施態様において、当該コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全てのステップを実行するように構成されたコンピュータプログラムコードを有する。好ましくは、該コンピュータプログラムはコンピュータ読取可能な媒体上で具現化される。
【０００９】
本発明の他の態様は、前記コンピュータプログラムをダウンロードのために利用可能にする方法を提供する。この態様は、当該コンピュータプログラムが例えばアップル社のアップルストア、グーグル社のグーグルストア又はマイクロソフト社のウインドウズストアにアップロードされ、該コンピュータプログラムが斯様なストアからダウンロードのために利用可能にされた場合に用いられる。
【００１０】
本発明の更なる詳細、態様及び実施態様は図面を参照して例示のみとして後述されるであろう。尚、各図における要素は簡略化及び明瞭化のために図示されており、必ずしも実寸では描かれていない。また、各図において、既に記載された要素に対応する要素は同一の符号を有し得る。
【図面の簡単な説明】
【００１１】
【図１ａ】図１ａは、キー付きメッセージ認証コード装置の実施態様の一例を概略的に示す。
【図１ｂ】図１ｂは、キー付きメッセージ認証コード装置の実施態様の一例を概略的に示す。
【図２】図２は、完全にエンコードされるキー付きメッセージ認証コード計算の実施態様の一例を概略的に示す。
【図３ａ】図３ａは、部分的にエンコードされるキー付きメッセージ認証コード計算の実施態様の一例を概略的に示す。
【図３ｂ】図３ｂは、部分的にエンコードされるキー付きメッセージ認証コード計算の実施態様の一例を概略的に示す。
【図４】図４は、エンコードされる状態初期化計算の実施態様の一例を概略的に示す。
【図５】図５は、キー付きＭＡＣ方法の実施態様の一例を概略的に示す。
【図６ａ】図６ａは、一実施態様によるコンピュータプログラムを有する書込可能部分を備えたコンピュータ読取可能な媒体を概略的に示す。
【図６ｂ】図６ｂは、一実施態様によるプロセッサシステムの図を概略的に示す。
【発明を実施するための形態】
【００１２】
本発明は多数の異なる形態の実施態様が可能であるが、本開示は本発明の原理の例示として見なされるべきであり、本発明を図示及び記載される特定の実施態様に限定することを意図するものではないとの理解の下で、１以上の特定の実施態様が図面に示されると共に明細書に詳細に記載される。
【００１３】
以下では、理解のために、実施態様の要素は動作時において説明される。しかしながら、各要素は、これら要素により実行されると記載されている機能を果たすように構成されていることは明らかであろう。
【００１４】
更に、本発明は実施態様に限定されるものではなく、本発明は本明細書に記載され又は互いに異なる従属請求項に記載された各及び全ての新規なフィーチャ又はフィーチャの組み合わせに存するものである。
【００１５】
一般的暗号ハッシュ関数は、例えば、一般的マークル・ダンガード構成（Merkle-Darmgard construction）における一方向圧縮関数の繰り返し適用を有する。この構成のための成分は、圧縮関数f:{0,1}sx{0,1}b→{0,1}s及び“初期値”IV∈{0,1}sである。長さｂ及びｓのビット列を、各々、“ブロック”及び“状態（state）”と称する。数ｂはハッシュ関数のブロック長と呼ばれる。
【００１６】
任意の長さの二進メッセージＭは以下のようにしてハッシュ化される。先ず、長さがｂの倍数であるビット列Ｍ’となるように、Ｍにビットがパディングされる。典型的なパディングの方法においては、ｂの倍数である長さのビット列を得るために、先ずＭの後に“１”が配置され、続いて一連のゼロが配置される。次いで、Ｍの長さを表すｂビットのブロックが付加される。次に、Ｍ’はｂビットのブロックに分割される。即ち、
【数１】
2021507310.tif 000003
であり、ここで、ｍｉ∈｛０，１｝ｂであり、
【数２】
2021507310.tif 000004
は連結を表す。Ｈ（Ｍ）により示されるＭのハッシュは、
【数３】
2021507310.tif 000005
により計算することができる。
【００１７】
言葉で言うと、当該圧縮関数は状態及びメッセージブロックを次の状態にマッピングする。オプションとして、Ｈ(Ｍ)＝ｇ(Ｓn+1)となるような後処理関数ｇが存在する。
【００１８】
ハッシュ関数Ｈが利用可能な場合、該ハッシュ関数を、キー付きメッセージ認証コードを定義するために使用することができる。キー付きハッシュ関数の１つの特定の構成は、ＨＭＡＣ構成である。文献［１］に従えば、ＨＭＡＣは以下のように記述することができる：
【数４】
2021507310.tif 000006
【００１９】
この式において、Ｈ、Ｋ及びｍは暗号ハッシュ関数、秘密キー及び認証されるべきメッセージである。更に、Ｋ’は、Ｈのブロック長（Ｋの長さが該ブロック長より小さい場合は幾つかのビットをパディングし、Ｋの長さが該ブロック長を超える場合はハッシュ化することにより得られる）に整合するようにＫから導出された他のキーを示す。最後に、内側パディング列ipad及び外側パディング列opadは、各々、１６進定数０ｘ３６（即ち、バイト００１１０１１０）及び０ｘ５Ｃ（即ち、バイト０１０１１１００）の繰り返しを有する（文献［１］参照）。最後に、
【数５】
2021507310.tif 000007
はビット単位の排他的ＯＲを示し、
【数６】
2021507310.tif 000008
は連結を示す。必要なら、メッセージｍは、メッセージ長が当該圧縮関数のブロック長の倍数となるようにゼロでパディングされる。
【００２０】
例えば文献［１］に記載されたようなキー付きＨＭＡＣの直接的実施化において、当該キーはメモリ内で見えるであろう。従って、このような攻撃はホワイトボックス型の攻撃に対して脆弱であろう。事実、メモリ内のビット列がキーとして試されるメモリスクレイピング（memory scraping）攻撃でさえ、該キーを復元するのに十分であろう。キーがエンコードされ、従ってキーがメモリにおいてそのままでは見えない実施態様が説明される。ハッシュ関数も、エンコードされた形で実行される。このような実施態様は、キーに対しては優れた保護を提供するが、実際には遅いことが分かる。発明者は、ＨＭＡＣ計算の大部分がエンコードされた形態で実行されることを要さないことを理解した。例えば、一実施態様において、ハッシュ関数は圧縮関数を、一度、エンコードされた入力及び平文出力で適用し、続いて当該圧縮関数を通常の高速構成で、即ち平文で適用することにより計算される。
【００２１】
図１ａは、キー付きメッセージ認証コード装置１００の実施態様の一例を概略的に示す。図２は、装置１００上で実行することができる完全にエンコードされたキー付きメッセージ認証コード計算の実施態様の一例を示す。
【００２２】
キー付きメッセージ認証コード装置１００は、エンコード表現を用いて入力メッセージに対するキー付きＭＡＣを計算するように構成される。ここに記載される原理はＨＭＡＣ構成の変形例に適用することもできるが、ＨＭＡＣ構成をキー付きＭＡＣに対する主たる例として用いる。
【００２３】
装置１００における演算の幾つかは、グレイボックス及びホワイトボックス攻撃（例えば、コンピュータメモリの内容に対するアクセスを有することを想定する攻撃）に対する困難性を増加させるためにエンコードされたデータに対して実行される。攻撃者側で相対的に僅かな分析しか要さない特に重要な攻撃タイプは、メモリスクレイピング攻撃である。メモリスクレイピング攻撃において、攻撃者はメモリの多数の区間を試して、たまたま秘密的情報（特に、キー）であるかを調べる。
【００２４】
平文データ（plain data）に作用するコンピュータプログラムコードで具現化された演算は、代わりにエンコードされたデータに作用するように適合化又は変換することができる。この構成は、ホワイトボックス暗号法として知られた技術を用いることができる。平文データは、秘密エンコード法（例えば、攻撃者により未知のエンコード法、例えば装置１００にとり秘密の、秘密エンコード法）によりエンコードされていないデータとして参照する。
【００２５】
ホワイトボックス攻撃に抗する構成は、時には、エンコードされたデータに作用するエンコードテーブルネットワーク処理として実施化される。S. Chow他による論文“White-Box Cryptography and an AES Implementation”には、ブロック暗号ＡＥＳ（高度暗号化標準：Advanced Encryption Standard）のホワイトボックス構成が提示されている（以下では、“Chow”と称し、参照により本明細書に組み込まれる）。Chowは、完全にテーブルルックアップ処理からなるＡＥＳの構成を形成する。幾つかの中間的方法を経て、通常の暗号は、この形態の構成に変換され、ＡＥＳを計算するためにテーブルネットワークを使用することができるようにする。テーブルネットワークにおいてテーブルをエンコードすることにより、分析及び攻撃に対する当該システムの耐性は向上される。Chowにおいて使用される技術は、他の暗号プリミティブにも適用することができる。
【００２６】
テーブルの代替として、有限体上の整数多項式を用いることもできる。ビットに対する（例えば、ニブル又はバイトに対する）何れの関数も、標数２の対応する有限体上の多項式として表すことができることが分かっている。エンコードされたデータに対し作用するテーブルを使用する代わりに、エンコードされたデータに対し作用する多項式を適用することもできる。エンコーディングは、コンパイル時に決定することができ、各キー付きＭＡＣ装置に対して異なることができる。エンコードされる変数は平文変数よりも大きくすることができる。例えば、エンコーディングは冗長的なものとすることができ、変数が２以上の有効な表現を有するようにする。
【００２７】
キー付きＭＡＣ装置１００は、入力メッセージを受信するための入力インターフェース１３０を有する。入力インターフェース１３０を介して受信されるメッセージは、例えば電子形態で受信される、デジタルメッセージであり得る。例えば、入力インターフェース１３０はメッセージを受信するためのアプリケーションプログラミングインターフェース（ＡＰＩ）とすることができる。例えば、入力インターフェース１３０は、装置１００におけるメッセージが記憶される電子メモリに対するインターフェースとすることができる。当該メッセージは、そうでもあり得るが、エンコードされていないと仮定される。例えば、当該メッセージは、例えば公開されているので、いずれにしても平文で伝送されるので、又はキーよりも秘密的でないと考えられるので、ホワイトボックス攻撃から保護されることを要さないこともあり得る。
【００２８】
入力インターフェース１３０は、メッセージを受信するように構成された通信インターフェースとすることができる。例えば、装置１００はコンピュータネットワークを介して他の電子装置と通信することができる。該コンピュータネットワークは、インターネット、イントラネット、ＬＡＮ、ＷＬＡＮ等であり得る。コンピュータネットワークはインターネットとすることができる。該コンピュータネットワークは、全体的に若しくは部分的に有線であり得、及び／又は全体的に若しくは部分的に無線であり得る。例えば、該コンピュータネットワークはイーサネット（登録商標）接続を有し得る。例えば、該コンピュータネットワークは、Wi-Fi（登録商標）及びジグビ等の無線接続を有することができる。例えば、当該接続インターフェースは、例えばイーサネット（登録商標）コネクタ等の有線コネクタ、又は例えばアンテナ（例えば、Wi-Fi（登録商標）、４Ｇ若しくは５Ｇアンテナ）等の無線コネクタ等のコネクタを有することができる。当該通信インターフェースは、ＭＡＣを計算すべくメッセージ又はメッセージの少なくとも一部を受信するために使用することができる。
【００２９】
メッセージは装置１００上で発生することができる。例えば、装置１００はメッセージング装置、金融装置及び医療装置の一部であり得る。装置１００は、（秘密）メッセージ、金融取引及び医療データを、当該データに関してＨＭＡＣを計算することにより保護することができる。このことは、当該データの変更を、ＭＡＣを検証することにより検出することができるという利点を有する。更に、攻撃者は、キーを知らないので、該変更されたデータに関するＭＡＣを簡単に再計算することはできない。キーを復元することは、エンコードされた表現により困難である。
【００３０】
キー付きＭＡＣ装置１００及びキー付きＭＡＣ装置１０１（更に後述される）の実行は、プロセッサ回路内で実施され、その例が本明細書に示される。図１ａ及び図１ｂは、斯かるプロセッサ回路の機能ユニットであり得る機能ユニットを示す。例えば、図１ａ及び図１ｂは、該プロセッサ回路の可能な機能編成の青写真として用いることができる。該プロセッサ回路は、図１ａ及び図１ｂにおけるユニットとは別途に示されてはいない。例えば、図１ａ及び図１ｂに示される機能ユニットは、装置１００に（例えば、該装置１００の電子メモリに）記憶され、且つ、該装置１００のマイクロプロセッサにより実行することができるコンピュータ命令で実施化することができる。ハイブリッド型実施態様において、機能ユニットは、部分的にハードウェアで（例えば、コプロセッサ（例えば、暗号コプロセッサ）として）実施化され、部分的に装置１００上で記憶及び実行されるソフトウェアで実施化される。
【００３１】
キー付きＭＡＣ装置１００は、前記入力メッセージを１以上のメッセージブロックに分割するよう構成されたメッセージ管理ユニット１１０を有することができる。メッセージ管理ユニット１１０は、メッセージにパディングする（必要なら）と共に、該メッセージをブロックに分割するよう構成することもできる。特に、内側ハッシュユニット１５０（後述する）における圧縮関数は、特定のブロックサイズ及び／又はパディングを期待することができる。これは、メッセージ管理ユニット１１０により提供することができる。メッセージ管理ユニット１１０は、例えばハッシュ化のために、当該メッセージにパディングする（必要なら）ことができる。パディングはオプションである（例えば、入力メッセージは既にパディングされていることもあり得る）。
【００３２】
入力インターフェース１３０において受信されたメッセージが、使用されているキー付きＭＡＣの又は該ＭＡＣに使用されるハッシュ関数の要件に従わない場合、メッセージ管理ユニット１１０はパディング及び分割を適用することができる。例えば、ＲＦＣ６２３４は、ＨＭＡＣで使用するのに適したハッシュ関数を記載している。メッセージがどの様にパディングされるべきか、及びメッセージがどの様に分割されるべきかが記載されている。メッセージ管理ユニット１１０はオプションである。例えば、インターフェース１３０において受信されたメッセージは、既に正しい形態であり得る。例えば、該メッセージは正しくパディングされた単一ブロックであり得る。メッセージ管理ユニット１１０は、メッセージはエンコードされていないので、エンコードされたデータに作用する必要はない。
【００３３】
キー付きＭＡＣ装置１００は、内側ハッシュユニット１５０及び外側ハッシュユニット１６０を有する。内側ハッシュユニット１５０及び外側ハッシュユニット１６０は、共に、状態（state）に圧縮関数を適用する。内側ハッシュユニット１５０は、メッセージ管理ユニット１１０から受信するメッセージブロックに基づいて状態を繰り返し更新するように構成される。特に、内側ハッシュユニット１５０は状態に一連の第１圧縮関数を適用する。該第１圧縮関数は、状態及びメッセージブロックを入力として取り込み、新たな状態を生成する。一連のメッセージブロックに圧縮を適用することにより、状態は繰り返し更新される。内側ハッシュユニット１５０は内側ハッシュを、例えば最後の第１圧縮関数が適用された後の状態の値として生成する。
【００３４】
一般的に、圧縮関数はハッシュ関数の圧縮関数、例えばＳＨＡ系の圧縮関数とすることができる。圧縮関数は以下の特性を満たすことができる。即ち、入力状態が分かっても、且つ、平文状態が分かったとしても、状態出力から入力メッセージブロックを計算することができない。圧縮関数が各入力メッセージブロックから同一の新たな状態を生成するような２つの入力メッセージブロック及び入力状態を計算することができない。更に、圧縮関数も状態に関して原像耐性のものであることが望ましい。例えば、出力状態及び入力メッセージが与えられたとして、入力状態を生成することができない。標準の圧縮関数は、これらの要件を満足する。
【００３５】
外側ハッシュユニット１６０は、１以上の第２圧縮関数を適用するように構成される。第２圧縮関数は、内側ハッシュのブロック及び状態を入力として取り込み、新たな状態を生成する。典型的な実施態様においては、複数のメッセージブロックが、従って複数の第１圧縮関数が存在するが、内側ハッシュは単一のブロックであるので、１つの第２圧縮関数が存在する。圧縮関数の多くは同一とすることができ、例えば、図２において第１圧縮関数の全ては同一の関数であり、共有コードにより実施することもできる。
【００３６】
第１圧縮関数の少なくとも１つ及び第２圧縮関数の少なくとも１つは、状態を、エンコードされた表現の入力として取り込む。
【００３７】
当該状態が内側ハッシュユニット１５０の第１圧縮関数により又は外側ハッシュユニット１６０により更新される前に、該状態は初期化される。例えば、状態の初期化は装置１００のメモリに記憶することができる。
【００３８】
状態の初期化は種々の方法で実行することができ、これら方法のうちの２つが図１に示されている。例えば、装置１００は状態に関する初期化値、即ち内側ハッシュユニット１５０のための初期化値及び外側ハッシュユニット１６０のための初期化値、を記憶する状態初期化記憶部１２０を有することができる。一実施態様において、状態に関する初期化値はエンコードされた形態である。
【００３９】
図２は、装置１００がＭＡＣをどの様に計算することができるかを示す。例えば、状態の初期化は、図２に示されるように計算することができる。図２、図３ａ、図３ｂ及び４において、灰色のボックスはエンコードされたデータを示し、点線のボックスは事前計算することができるデータを示す。一実施態様において、図２、図３ａ及び図３ｂにおける点線のボックスは装置１００においては表されず、何処かで計算される。
【００４０】
図２に示されるものは、初期化ベクトル２４２（ＩＶ）、内側キーブロック２１２及び圧縮関数２２０である。例えば、当該状態は、内側ハッシュ計算において、圧縮関数を所定の初期化ブロック（例えば、ＩＶ）及び第１キーブロック（例えば、
【数７】
2021507310.tif 000009
）に適用することのエンコードされた表現に初期化することができる。結果としての事前計算された状態２５２（例えば、状態初期化値）は記憶部１２０に記憶することができる。
【００４１】
図２に示されるものは、初期化ベクトル２４４（ＩＶ）、外側キーブロック２１４及び圧縮関数２７０である。例えば、当該状態は、外側ハッシュ計算では、圧縮関数を所定の初期化ブロック（例えば、ＩＶ）及び第２キーブロック（例えば、
【数８】
2021507310.tif 000010
）に適用することのエンコードされた表現に初期化することができる。結果としての事前計算された状態２５４（例えば、状態初期化値）は記憶部１２０に記憶することができる。
【００４２】
これらの計算は、事前に計算することができ、安全な場所で実行することができる。例えば、該計算は、装置１００のためのソフトウェアが発生されるコンパイル時に実行することができる。この場合には、エンコードされたデータに対して計算が実行されることを要さない。このような理由で、図２においてキーブロック２１２及び２１４は灰色となっていない。装置１００に記憶される事前に計算された状態２５２及び２５４はエンコードされることに注意されたい。例えば、コンパイル時において、事前計算状態２５２及び２５４が計算されるキーは他の装置（例えば、サーバ）に記憶することができ、かくして、当該装置により計算されるキー付きＭＡＣは検証することができる。装置１００には、製造の間において又は当該キー付きＭＡＣ装置を実施化するキー付きＭＡＣソフトウェアがインストールされる際に、事前計算状態２５２及び２５４を供給することができる。該事前計算状態２５２及び２５４は、装置１００が別のキーに対してＭＡＣを計算することができるように更新することができる。例えば、事前計算状態２５２及び２５４は、入力インターフェース１３０を介して受信することができる。
【００４３】
状態２５２及び２５４を事前に計算する代わりに、これらの値は、必要な場合に、装置１００において計算することもできる。例えば、装置１００は、内側状態計算ユニット１４２及び外側状態計算ユニット１４４を備えた状態初期化ユニット１４０を有することができる。この計算は、図４に示されている。
【００４４】
例えば、内側状態計算ユニット１４２はエンコードされたキーブロック４１２（例えば、エンコードされたキーブロック）を受信することができ、圧縮関数４２０を適用するように構成することができる。圧縮関数４２０は、エンコードされたキーブロック４１２を入力として受信すると共に、圧縮関数を該キーブロック及び固定された初期化ベクトル２４２に適用するように構成される。後者は入力である必要はない。
【００４５】
例えば、外側状態計算ユニット１４４は、エンコードされたキー４１２を受信することができ、圧縮関数４７０を適用するように構成することができる。圧縮関数４７０は、エンコードされたキー４１２を入力として受信すると共に、圧縮関数を該キー及び固定された初期化ベクトル２４４に適用するように構成される。後者は入力である必要はない。エンコードされたキー４１２は、例えば入力インターフェース１３０において受信することができる。エンコードされたキー４１２は装置１００で発生することもできる。例えば、ユニット１４０によってである。例えば、該キーは直にエンコードされた形態で発生することができる。
【００４６】
圧縮関数４２０及び４７０は同一のエンコードされたキーを受信する。圧縮関数４２０及び４７０は同一ではなく、例えば、これらは様々である。例えば、ＨＭＡＣの場合、圧縮関数４２０及び４７０は、これら関数が先ず当該キーに異なるパディング（例えば、ipad又はopad）を付加することを除き、ハッシュ圧縮関数である。
【００４７】
一実施態様において、事前計算状態２５２は圧縮関数（ｆ）を所定の初期化ブロック（ＩＶ）及び第１キーブロック
【数９】
2021507310.tif 000011
に適用するエンコードされた表現である。一実施態様において、事前計算状態２５４は圧縮関数（ｆ）を所定の初期化ブロック（ＩＶ）及び第２キーブロック
【数１０】
2021507310.tif 000012
に適用するエンコードされた表現である。
【００４８】
典型的に、装置１００は記憶部１２０及び状態初期化ユニットの一方のみを有するであろう。以下では、状態初期化ユニット１４０により置換することができるとの注記の下で、記憶部１２０が使用されると仮定する。両ユニットを使用することもでき、例えば、ユニット１４０は当該状態を事前に計算するために使用され、該状態は次いで記憶部１２０に記憶される。
【００４９】
図２に戻ると、内側ハッシュユニット１５０及び外側ハッシュユニット１６０の少なくとも１つの圧縮関数はエンコードされた入力を取り込むように構成される。好ましくは、内側ハッシュユニット１５０により適用される及び外側ハッシュユニット１６０の最初の圧縮関数がエンコードされた入力を取り込むように構成される。
【００５０】
図２は、内側ハッシュユニット１５０の第１圧縮関数のうちの３つ、即ち、メッセージブロック２２１、２２２及び２２３を各々入力として取り込む圧縮関数２３１、２３２及び２３３を示している。３より少ない又は多いメッセージブロックが存在し得る。第１圧縮関数は、各々、エンコードされた状態及び平文メッセージブロックを入力として取り込み、エンコードされた状態を生成する。全ての第１圧縮関数を、装置１００内の同一のユニット、例えば内側圧縮ユニット１５２により実施化することができることに注意されたい。最終の状態は、エンコードされた状態２６３である。状態２５２及び２６１〜２６３の各々はキー、特にキーブロック２１２に依存するが、これら状態の何れかを復元する攻撃者は、これらブロックがエンコードされているので、及び／又は、これらがハッシュ圧縮関数の出力であるので、当該キーを復元することはできない。第１圧縮関数の最終の状態、即ち状態２６３は、内側ハッシュである。ハッシュ構成において、最終関数は最後の圧縮関数の後に適用することができる。もしそうなら、このような関数は圧縮関数２３３に統合することができる。例えば、ｆが圧縮関数であり、ｇが追加の関数である場合、ブロック２３３は関数g(f())を実施することができる。
【００５１】
内側ハッシュ２６３は、外側ハッシュの計算のための入力として使用される。このことは、内側ハッシュに対して実行される更なるパディング処理を必要とし得る。このパディングは、圧縮関数２３３において又は圧縮関数２８１において実行することができる。例えば、該更なるパディングは追加の関数ｇにおいて実行することができる。このように、圧縮関数２３３は最終ブロックをパディングされたエンコード形態で生成するように構成することができる。
【００５２】
図２は、内側ハッシュブロック２６３を入力として取り込む、外側ハッシュユニット１６０の第２圧縮関数のうちの１つ、即ち圧縮関数２８１を示している。例えば内側圧縮関数のブロック長が外側圧縮関数のブロック長より大きい場合、１より多いメッセージブロックが存在し得る。第２圧縮関数は、各々、エンコードされた状態及びエンコードされた内側ハッシュブロックを入力として取り込むと共に、エンコードされていない状態を生成する。エンコーディングは異なるので、圧縮関数２８１は圧縮関数２３１〜２３３とは相違する（これら圧縮関数が、たとえ同一のハッシュ関数から由来するとしても）。より多くの第２圧縮関数が必要とされる場合、これらは内側ハッシュユニットに関して示されたように連鎖させることができる。状態値２９０はmac値である。圧縮関数２８１は、外側圧縮ユニット１６２により実行することができる。ブロック２９０に対しては更なる処理が存在し得る。該更なる処理は、ブロック２９０に対して実行される平文非エンコード処理であり得る。該更なる処理は圧縮関数２８１に含めることができる。内側ハッシュの更なるパディングが圧縮関数２３３において実行されない場合、該パディングは圧縮関数２８１により実行することができる。
【００５３】
これらの実施態様においては、圧縮関数２８１が障害となる。この圧縮関数は２つのエンコードされた入力、即ちエンコードされた内側ハッシュ２６３及びエンコードされた状態２５４、を取り込む。エンコードされた入力の数の２倍は、おおよそエンコードされる実施化の大きさを２乗にする。このように、圧縮関数２８１は、圧縮関数２３１〜２３３よりも著しく大きく且つ遅くなる。
【００５４】
図２において、状態は、内側ハッシュに関しては初期状態２５２、外側ハッシュに関しては初期状態２５４の両方においてエンコードされた表現に初期化されることに注意されたい。このように、内側ハッシュ及び外側ハッシュに関する最初の圧縮関数２３１及び２８１は、エンコードされたハッシュを入力として取り込む。図２において、第１圧縮関数の全ては、エンコードされた状態を入力として取り込むと共に、エンコードされた状態を生成する。外側ハッシュの最終圧縮関数２８１のみが、平文表現で（即ち、エンコードされていない）状態を生成する。
【００５５】
図１ｂは、この問題を軽減するキー付きメッセージ認証コード装置１０１の実施態様の一例を示す。装置１０１により実行される計算の一例が、図３に示されている。装置１０１は、ハッシュユニット１５０及び１６０が異なる圧縮関数を実施することを除き、装置１００と大きく類似している。更に、装置１０１において、状態は、装置１００ではエンコードされる場合に、時には平文となっている。例えば、内側ハッシュユニット１５０は内側圧縮ユニット１５４及び１５６を有することができる。例えば、外側ハッシュユニット１６０は外側圧縮ユニット１６４を有することができる。以下に示されるように、ユニット１５４及び１５６はハッシュユニット１５０及び１６０の間で共有することができる。
【００５６】
図３に示されるものは、内側状態３５２及び外側状態３５４の初期化である。これらは、装置１００に関するものと同一とすることができる。状態３５２及び３５４が平文である場合、当該構成は攻撃に対して脆弱であろう。状態３５２及び３５４の平文バージョンの知識は、キー自体が分からなくても、ＨＭＡＣを計算するのに十分である。従って、図３における状態３５２及び３５４はエンコードされる。
【００５７】
状態３５２は、３つが示された第１圧縮関数（即ち、圧縮関数３３１〜３３３）により更新される。これら圧縮関数のうちの第１のもの（即ち、圧縮関数３３１）は、入力としてのエンコードされた事前計算状態３５２及び平文メッセージブロック３２１を取り込む。これは図２におけるのと同じである。しかしながら、圧縮関数３３１の出力（状態３６１）は平文である。これは、エンコードされた状態３５２に対してハッシュ関数が適用されるので可能である。攻撃者は圧縮関数３３１の逆を計算することはできず、従って、状態３６１の知識はＨＭＡＣを計算する能力を得るには十分でない。
【００５８】
当該圧縮関数の残り、例えば圧縮関数３３２及び３３３は、平文状態及び平文メッセージブロックを入力として取り込み、平文状態を出力として生成する。状態３６３（内側ハッシュ）も平文である。このように、内側ハッシュユニット１５４は圧縮関数３３１を実施することができる一方、内側ハッシュユニット１５６は当該圧縮関数の残り（３３２〜３３３）を実施することができる。
【００５９】
このことは、外側ハッシュ計算が平文の内側ハッシュを受信することを意味する。外側ハッシュ計算の圧縮関数３８１は、１つのエンコードされた入力（例えば、エンコードされた事前計算状態３５４）しか受信しない。圧縮関数３８１は、圧縮関数３３１と同様に高速で小型となるので、このシステムの障害とならない。更に、平文圧縮関数３３２及び３３３の使用は、該システムを大幅に高速にさせる。平文関数は、エンコードされた関数よりも桁違いに速くなる。
【００６０】
一実施態様において、装置１０１は、例えばメッセージ管理ユニット１１０において、第１メッセージブロックにタイムスタンプ等の一度しか使用されない情報（例えば、ノンス）を含めることができる。該ノンスは、メッセージ管理ユニット１１０により発生することができるか、又は例えばチャレンジとして受信することができる。ノンスは受信側により検証することができる。例えば、ノンスはキー付きＭＡＣ装置の乱数発生器により発生することができる。例えば、一実施態様において、チャレンジは外部コンピュータから装置１０１において（例えば、インターフェース１３０において）受信され、該チャレンジは当該メッセージ（例えば、第１メッセージブロック）に含まれる。装置１０１がメッセージ及びＨＭＡＣを外部コンピュータに送信した場合、該外部コンピュータはチャレンジがメッセージ内にあるか及びＨＭＡＣが正しく計算されているかを検証することができる。
【００６１】
図３ａにおいて、状態は内側ハッシュに関しては初期状態３５２、外側ハッシュに関しては初期状態３５４の両方において、エンコードされた表現に初期化されることに注意されたい。このように、内側ハッシュ及び外側ハッシュに関する最初の圧縮関数３３１及び３８１はエンコードされたハッシュを入力として取り込む。図３ａにおいて、内側ハッシュ計算における一連の第１圧縮関数のうちの最初の第１圧縮関数３３１は、状態をエンコードされた表現の入力として取り込む。これら第１圧縮関数の残りは、エンコードされていない状態を入力として取り込み、エンコードされていない状態を生成する。特に、最後の第１内側圧縮関数３３３はエンコードされていない状態を生成する。外側ハッシュの最初の圧縮関数３８１は、エンコードされた状態及び内側ハッシュの平文ブロックを受信し、平文表現の状態を生成する。外側ハッシュに関して複数の圧縮関数が存在する場合、これらは、最初の第２圧縮関数を除き、平文関数である。
【００６２】
図３ｂは更に他の変形例を示す。図３ｂは、エンコードされたブロック及び平文メッセージブロックを取り込む最初の内側圧縮関数が使用される点で、図２と殆ど同一である。しかしながら、最後の圧縮関数は圧縮関数２３３’により置換されている。圧縮関数２３３’は、エンコードされた状態及び平文メッセージブロックを取り込み、平文状態３６３を生成する。例えば、圧縮関数２３３’は、該圧縮関数２３３’が追加の最終関数又は外側ハッシュのための更なるパディングを計算することができることを除き、圧縮関数３３１と同一とすることができる。図３ｂの利点は、圧縮関数２８１の障害が依然として回避されながら、当該計算の一層多くがエンコードされたデータに対して実行されることである。
【００６３】
図３ｂにおいて、状態は内側ハッシュに関しては初期状態２５２、外側ハッシュに関しては初期状態３５４の両方において、エンコードされた表現に初期化されることに注意されたい。図３ｂにおける外側ハッシュの計算は、図３ａにおけるものと同一である。内側ハッシュ及び外側ハッシュに関する最初の圧縮関数２３１及び３８１は、エンコードされたハッシュを入力として取り込む。図３ｂにおいて、内側ハッシュ計算における一連の第１圧縮関数のうちの最初の第１圧縮関数２３１は、状態をエンコード表現の入力として取り込み、エンコードされた状態を生成する。これら第１圧縮関数の残り、例えば圧縮関数２３２もエンコードされた状態を入力として取り込み、エンコードされた状態を生成する。第１圧縮関数のうちの最後の圧縮関数２３３’は、エンコードされた状態を入力として取り込み、エンコードされていない状態を生成する。
【００６４】
装置１００及び１０１の種々の実施態様において、入力インターフェースは種々の代替案から選択することができる。例えば、該インターフェースは、ローカル又は広域ネットワーク（例えば、インターネット）に対するネットワークインターフェース、内部又は外部データ記憶部に対する記憶部インターフェース、キーボード、アプリケーションインターフェース（ＡＰＩ）等とすることができる。
【００６５】
装置１００及び１０１はユーザインターフェースを有することができ、該ユーザインターフェースは１以上の釦、キーボード、ディスプレイ、タッチスクリーン等の良く知られた要素を含むことができる。該ユーザインターフェースは、メッセージを保護するためのＭＡＣ動作を実行するためのユーザ対話に対応するように構成することができる。
【００６６】
装置１００及び１０１の記憶部、例えば記憶部１２０は、例えばフラッシュメモリ等の電子メモリ、又は例えばハードディスク等の磁気メモリとして実施化することができる。該記憶部は、一緒になって当該記憶部を形成する複数の別個のメモリを有することができる。該記憶部は、例えばＲＡＭ等の一次的メモリとすることもできる。一次的記憶部１２０の場合、該記憶部１２０は、例えばオプションとしてのネットワーク接続（図示略）を介して取得することにより、使用前にデータを取得するための何らかの手段を含む。
【００６７】
典型的に、装置１００及び１０１は、各々、当該装置１００及び１０１に記憶された適切なソフトウェアを実行する例えばＣＰＵ、マイクロプロセッサ等（別途図示されてはいない）のプロセッサ回路を有する。例えば、上記ソフトウェアは、ダウンロードされたもの、及び／又はＲＡＭ等の揮発性メモリ若しくはフラッシュ等の不揮発性メモリ等の対応するメモリ（別途図示されてはいない）に記憶されたものとすることができる。代わりに、装置１００及び１０１は、全体として又は部分的に、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラマブルロジックで実施化することもできる。装置１００及び１０１は、全体として又は部分的に、所謂特定用途向け集積回路（ＡＳＩＣ）、即ち特定の用途のためにカスタマイズされた集積回路（ＩＣ）として実施化することもできる。例えば、当該回路は、例えばVerilog、ＶＨＤＬ等のハードウェア記述言語を用いてＣＭＯＳで実施化することができる。
【００６８】
一実施態様において、装置１００及び１０１は内側ハッシュ回路及び外側ハッシュ回路を有する。これら回路は、本明細書に記載された対応するユニットを構成する。これら回路は、プロセッサ回路及び記憶回路とすることができ、該プロセッサ回路は記憶回路内で電子的に表される命令を実行する。
【００６９】
プロセッサ回路は、分散された態様で（例えば、複数の副プロセッサ回路として）実施化することができる。記憶部は、複数の分散された副記憶部にわたって分散させることができる。当該メモリの一部又は全ては、電子メモリ、磁気メモリ等とすることができる。例えば、当該記憶部は揮発性及び不揮発性部分を有することができる。該記憶部の一部は読み出し専用とすることができる。
【００７０】
以下には、更なる詳細及び／又は更なる実施態様が記載される。
【００７１】
この最初の節においては、暗号アルゴリズム［２］のホワイトボックス構成を形成するために典型的な技術を用いるＨＭＡＣの完全にエンコードされる構成を説明する。説明を簡単にするために、例えばSHA-256ハッシュ関数［３の第4.1.2節］の場合に当てはまるように、ｓ＝２５６及びｂ＝５１２と仮定する。
【００７２】
Ｈを、圧縮関数ｆ、ブロック長ｂ、状態長ｓ及び初期値ＩＶのハッシュ関数とする。ｓ≦tとすると共に、E:{0,1}t→{0,1}sを全射とする。即ち、各y∈{0,1}sに対して、E(x)=yとなるような少なくとも１つのx∈{0,1}tが存在する。関数Ｅはデコード関数と考えることができる。hE:{0,1}tx{0,1}b→{0,1}tを、全てのx∈{0,1}t,m∈{0,1}bに対してE(hE(x,m))=f(E(x),m)となるようなものとする。
【００７３】
従って、ｈＥはエンコードされた状態ｘ及びメッセージブロックｍを入力として有し、エンコードされた状態を出力として供給する。関数uE:{0,1}tx{0,1}t:|{0,1}sを、全てのx∈{0,1}t,m∈{0,1}tに対してuE(x,m)=f(E(x),pad(E(m)))であると定義することができ、ここで、padはｓビットの状態をｂビットのメッセージブロックに変化させるための標準のパディング関数である。
【００７４】
以下には、gEを用いてＨＭＡＣ(K,m)をどの様に計算するかを擬似コードで記載し、ここで、ｍ（恐らくはパディング後の）は長さnbを有し、例えば
【数１１】
2021507310.tif 000013
である。ｎは予め知る必要はないことに注意されたい。キーＫ’はＫの後にゼロを付加することにより得られる長さｂのキーである。
【００７５】
【数１２】
2021507310.tif 000014
【００７６】
このアルゴリズムの正しさは、E(Si)が
【数１３】
2021507310.tif 000015
に適用されるハッシュ関数の計算のｉ番目の反復における状態に等しいという事実の結果である。この完全に暗号化される構成の欠点は、実験によりそれがかなり遅いことを示したことである。
【００７７】
この節は、部分的にエンコードされる構成を説明する。Ｈを、圧縮関数ｆ、ブロック長ｂ、状態長ｓ及び初期値ＩＶのハッシュ関数とする。ｓ≦tとすると共に、E:{0,1}t→{0,1}sを全射とする。即ち、各y∈{0,1}sに対して、E(x)=yとなるような少なくとも１つのx∈{0,1}tが存在する。関数gE:{0,1}tx{0,1}b→{0,1}sは、全てのx∈{0,1}t,m∈{0,1}bに対してgE(x,m)=f(E(x),m)であると定義される。
【００７８】
以下には、gEを用いてＨＭＡＣ(K,m)をどの様に計算するかを擬似コードで記載し、ここで、ｍ（恐らくはパディング後の）は長さnbを有し、例えば
【数１４】
2021507310.tif 000016
である。キーＫ’はＫの後にゼロを付加することにより得られる長さｂのキーである。
【００７９】
【数１５】
2021507310.tif 000017
【００８０】
上記の更なるパディング（further padding）は、最後の内側圧縮関数に又は最初の外側圧縮関数に組み込むことができる。上記アルゴリズムにおいて、高速の平文構成ｆはn+k-2回適用される一方、より遅いエンコードされる構成ｇEは２回しか使用されないことに注意されたい。ｆがSHA-256関数を示す場合、ｂ＝５１２、ｓ＝２５６、ｋ＝１である。他のハッシュ関数にも、ｂ、ｓ及びｋに対して適切な変更を行うことにより対応することができる。
【００８１】
実際には、上記のものは以下のように適用される。
【００８２】
（１）設計者はｔ≧ｓ及び全射E:{0,1}t→{0,1}sを選択し、gE(x,m)=f(E(x),m)の計算においてE(x)を内部変数として含まないようなｇEの構成を形成する。即ち、Ｅは該ｇEの構成に統合される。ｇEの構成は、内部変数の隠蔽及び内部変数による計算のためにＥから独立に選択される追加の全単射を含むことができることに注意されたい。例えば、関数gEはSHA-256ハッシュ関数の圧縮関数を実施することができる。
【００８３】
（２）キーＫが与えられたとして（設計者により選択される又は設計者に与えられる）、設計者は
【数１６】
2021507310.tif 000018
及び
【数１７】
2021507310.tif 000019
となるようなS1及びT0を含むキーファイルを供給する。
【００８４】
キーファイル及びｇEの実施化の分離により、キーは他の変更を行うことを要せずに更新することができる。Ｅは秘密であるので、Ｓ１は
【数１８】
2021507310.tif 000020
を暴露させることはなく、
【数１９】
2021507310.tif 000021
を暴露させることはない。
【数２０】
2021507310.tif 000022
及び
【数２１】
2021507310.tif 000023
の事前計算は可能である。
【００８５】
図５は、キー付きＭＡＣ方法５００の実施態様の一例を概略的に示す。該キー付きメッセージ認証コード（ＭＡＣ）方法５００は、入力メッセージに対するキー付きＭＡＣをエンコードされた表現を用いて計算するように構成される。該キー付きＭＡＣ方法５００は、
−  入力メッセージを受信すると共に、該入力メッセージを１以上のメッセージブロックに分割するステップ（５１０）と、
−  内側ハッシュの計算を実行するステップ（５２０）であって、
−  状態を暗号キーに基づいて初期化するステップ（５２２）、及び
−  一連の第１圧縮関数（ｈＥ；ｇＥ）を適用するステップ（５２３）であって、前記第１圧縮関数は前記状態及びメッセージブロックを入力として取り込むと共に、新たな状態を生成し、これら第１圧縮関数のうちの少なくとも１つが前記状態をエンコードされた表現の入力として取り込むステップ、
を有する、内側ハッシュの計算を実行するステップと、
−  外側ハッシュの計算を実行するステップ（５３０）であって、
−  状態を前記暗号キーに基づいて初期化するステップ（５３２）、及び
−  １以上の第２圧縮関数（ｕＥ；ｇＥ）を適用するステップ（５３３）であって、前記第２圧縮関数は前記状態及び前記内側ハッシュのブロックを入力として取り込むと共に、新たな状態を生成し、これら第２圧縮関数のうちの少なくとも１つが前記状態をエンコードされた表現の入力として取り込むステップ、
を有する、外側ハッシュの計算を実行するステップと、
を有する。
【００８６】
当業者にとり明らかなように、当該方法を実行するための多数の異なる態様が可能である。例えば、前記ステップの順序は変更することができ、又は幾つかのステップは並行して実行することができる。更に、ステップの間に他の方法ステップを挿入することもできる。斯かる挿入されるステップは、本明細書に記載されるような当該方法の改良を表すことができ、又は当該方法とは無関係とすることができる。更に、所与のステップは、次のステップが開始される前に完全に完了していなくてもよい。
【００８７】
本発明による方法は、プロセッサシステムに方法５００を実行させるための命令を有するソフトウェアを用いて実行することができる。ソフトウェアは、当該システムの特定の副部分によりなされるステップのみを含むことができる。該ソフトウェアは、ハードディスク、フロッピーディスク、メモリ、光ディスク等の適切な記憶媒体に記憶することができる。該ソフトウェアは、有線若しくは無線に沿って、又は例えばインターネット等のデータネットワークを使用して信号として伝送することができる。該ソフトウェアは、ダウンロードのために及び／又はサーバ上での遠隔使用のために利用可能にすることができる。本発明による方法は、該方法を実行するために例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラマブルロジックを構成するように配されたビットストリームを用いて実行することができる。
【００８８】
本発明はコンピュータプログラムに、特に本発明を実施するように適合化された担体上又は担体内のコンピュータプログラムにも拡張することが理解されるであろう。該プログラムは、ソースコード、オブジェクトコード、中間ソースコード及び部分的にコンパイルされた形態等のオブジェクトコードの形態、又は本発明による方法の実施に使用するのに適した何らかの他の形態とすることができる。コンピュータプログラム製品に関する実施態様は、上述した方法のうちの少なくとも１つの処理ステップの各々に対するコンピュータ実行可能な命令を有する。これらの命令は、サブルーチンに分割することができ、及び／又は静的に又は動的にリンクすることができる１以上のファイルに記憶することができる。コンピュータプログラム製品に関する他の実施態様は、前述したシステム及び／又は製品のうちの少なくとも１つにおける手段の各々に対応するコンピュータ実行可能な命令を有する。
【００８９】
図６ａは、コンピュータプログラム１０２０を含む書込可能部分１０１０を備えたコンピュータ読取可能な媒体１０００を示し、該コンピュータプログラム１０２０はプロセッサシステムに一実施態様によるキー付きＭＡＣ方法を実行させるための命令を有する。コンピュータプログラム１０２０は、コンピュータ読取可能な媒体１０００上に、該コンピュータ読取可能な媒体１０００の物理的マークとして又は磁化により具現化することができる。しかしながら、任意の他の好適な具現化も同様に考えられる。更に、ここではコンピュータ読取可能な媒体１０００は光ディスクとして示されているが、該コンピュータ読取可能な媒体１０００は、ハードディスク、固体メモリ、フラッシュメモリ等の任意の好適なコンピュータ読取可能な媒体とすることもでき、記録不可能な又は記録可能なものとすることもできる。コンピュータプログラム１０２０は、プロセッサシステムに前記キー付きＭＡＣ方法を実行させる命令を有する。
【００９０】
図６ｂは、キー付きＭＡＣ方法の一実施態様によるプロセッサシステム１１４０の概略図を示す。該プロセッサシステムは、１以上の集積回路１１１０を有する。該１以上の集積回路１１１０のアーキテクチャは、図６ｂに概略的に示されている。回路１１１０は、一実施態様による方法を実行する及び／又はそのモジュール若しくはユニットを実施化するためのコンピュータプログラム要素を実行する処理ユニット１１２０（例えば、ＣＰＵ）を有する。回路１１１０はプログラムコード、データ等を記憶するためのメモリ１１２２を有する。メモリ１１２２の一部は読取専用とすることができる。回路１１１０は、例えば、アンテナ、コネクタ又は両方等の通信要素１１２６を有することができる。回路１１１０は、当該方法において定義された処理の一部又は全てを実行するための専用の集積回路１１２４を有することができる。プロセッサ１１２０、メモリ１１２２、専用のＩＣ１１２４及び通信要素１１２６は、相互接続部１１３０（例えば、バス）を介して相互に接続することができる。プロセッサシステム１１１０は、アンテナ及び／又はコネクタを各々用いて接触型及び／又は無接触型通信を行うように構成することができる。
【００９１】
例えば、一実施態様において、プロセッサシステム１１４０、例えば当該キー付きＭＡＣ装置は、プロセッサ回路及びメモリ回路を有することができ、プロセッサ回路はメモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、該プロセッサ回路は、インテルのCore i7プロセッサ、ARM Cortex-R8等とすることができる。一実施態様において、該プロセッサ回路はARM Cortex M0とすることができる。当該メモリ回路は、ＲＯＭ回路又は不揮発性メモリ（例えば、フラッシュメモリ）とすることができる。該メモリ回路は、揮発性メモリ、例えばＳＲＡＭメモリとすることができる。後者の場合、当該装置は当該ソフトウェアを供給するように構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェース等を有することができる。
【００９２】
上述した実施態様は本発明を限定するというより解説するものであり、当業者であれば多くの代替実施態様を設計することができることに注意すべきである。
【００９３】
尚、請求項において括弧内に示される何れの符号も当該請求項を限定するものと見なしてはならない。動詞“有する”及びその活用形の使用は、請求項に記載されたもの以外の要素又はステップの存在を排除するものではない。単数形の要素は、複数の斯様な要素の存在を排除するものではない。本発明は、幾つかの別個の要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実施化することができる。幾つかの手段を列挙する装置の請求項において、これら手段の幾つかは１つの同一品目のハードウェアにより具現化することができる。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これら手段の組合せを有利に使用することができないということを示すものではない。
【００９４】
請求項において、括弧内の符号は例示的実施態様の図面における符号又は実施態様の式を示し、かくして、当該請求項の理解容易性を高める。これらの符号は当該請求項を限定するものと見なしてはならない。
【参考文献】
【００９５】
[1] HMAC: Keyed-Hashing for Message Authentication, IETF RFC 2014,
http://www.ietf.org/rfc/rfc2104.txt
[2] S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot. "White-Box Cryptography and an AES Implementation" In 9th Annual Workshop on Selected Areas in Cryptography (SAC 2002), Aug.15-16 2002, St. John's, Canada. Proceedings: pp.250-270, Springer LNCS 2595 15 (2003)
[3] Secure Hash Standard, FIPS PUB 180-4,
http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
【符号の説明】
【００９６】
１００，１０１  キー付きメッセージ認証コード装置
１１０          メッセージ管理ユニット
１２０          状態初期化記憶部
１３０          入力メッセージを受信するための入力インターフェース
１４０          状態初期化ユニット
１４２          内側状態計算ユニット
１４４          外側状態計算ユニット
１５０          内側ハッシュユニット
１５２〜１５６  内側圧縮ユニット
１６０          外側ハッシュユニット
１６２〜１６４  外側圧縮ユニット
２１２          内側キーブロック
２１４          外側キーブロック
２２０          圧縮関数
２２１〜２２３  メッセージブロック
２３１〜２３３  第１圧縮関数
２３３’        圧縮関数
２４２          初期化ベクトル（ＩＶ）
２４４          初期化ベクトル（ＩＶ）
２５２          事前計算状態
２５４          事前計算状態
２６１〜２６３  状態
２７０          圧縮関数
２８１          第２圧縮関数
２９０          キー付きＭＡＣ値
３１２          内側キーブロック
３１４          外側キーブロック
３２０          圧縮関数
３２１〜３２３  メッセージブロック
３３１〜３３３  第１圧縮関数
３４２          初期化ベクトル（ＩＶ）
３４４          初期化ベクトル（ＩＶ）
３５２          事前計算状態
３５４          事前計算状態
３６１〜３６３  状態
３７０          圧縮関数
３８１          第２圧縮関数
３９０          キー付きＭＡＣ値
４１２          エンコードされたキー
４２０          圧縮関数
４７０          圧縮関数
１０００        コンピュータ読取可能な媒体
１０１０        書込可能部分
１０２０        コンピュータプログラム
１１１０        集積回路（複数の集積回路）
１１２０        処理ユニット
１１２２        メモリ
１１２４        専用の集積回路
１１２６        通信要素
１１３０        相互接続部
１１４０        プロセッサシステム
【図１ａ】
2021507310.tif 000024
【図１ｂ】
2021507310.tif 000025
【図２】
2021507310.tif 000026
【図３ａ】
2021507310.tif 000027
【図３ｂ】
2021507310.tif 000028
【図４】
2021507310.tif 000029
【図５】
2021507310.tif 000030
【図６ａ】
2021507310.tif 000031
【図６ｂ】
2021507310.tif 000032
【手続補正書】
【提出日】令和2年6月25日(2020.6.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
エンコードされた表現を用いて、入力メッセージのためのキー付きメッセージ認証コードを計算するキー付きメッセージ認証コード装置であって、
前記入力メッセージを受信するための入力インターフェースと、
前記入力メッセージを複数のメッセージブロックに分割し、前記複数のメッセージブロックの内側ハッシュの計算を実行し、且つ、外側ハッシュの計算を実行するプロセッサ回路であって、前記内側ハッシュの計算が、
第１の状態を最初の第１の状態へ暗号キーに基づいて初期化すること、及び
一連の第１圧縮関数を適用することであって、前記第１圧縮関数は前記最初の第１の状態及び前記複数のメッセージブロックのメッセージブロックを入力として取り込むと共に、新たな第１の状態を生成し、前記新たな第１の状態は前記一連の第１圧縮関数のうちの後続の第１圧縮関数に対する第１の状態として用いられ、前記一連の第１圧縮関数のうちの少なくとも最初の第１圧縮関数が前記最初の第１の状態を、エンコードされた表現の入力として取り込み、前記内側ハッシュの計算において前記一連の第１圧縮関数のうちの前記最初の第１圧縮関数の後の最後の圧縮関数が前記内側ハッシュとしてエンコードされていない表現の第１の状態を生成すること
を有し、前記外側ハッシュの計算が、
第２の状態を最初の第２の状態へ前記暗号キーに基づいて初期化すること、及び
一連の第２圧縮関数を適用することであって、前記第２圧縮関数は前記最初の第２の状態及び前記内側ハッシュのブロックを入力として取り込むと共に、新たな第２の状態を生成し、前記新たな第２の状態は前記一連の第２圧縮関数のうちの後続の第２圧縮関数に対する第２の状態として用いられ、前記一連の第２圧縮関数のうちの少なくとも１つが前記最初の第２の状態を、エンコードされた表現の入力として取り込み、前記第２圧縮関数に統合された第２の状態を復元すること、
を有するプロセッサ回路と、
を有し、
前記第１の状態は前記内側ハッシュの計算において圧縮関数を予め定められた初期化ブロック及び第１キーブロックに適用することのエンコードされた表現に初期化され、
前記第２の状態は前記外側ハッシュの計算において圧縮関数を予め定められた初期化ブロック及び第２キーブロックに適用することのエンコードされた表現に初期化され、
前記１以上の第２圧縮関数が、入力として、前記第２の状態をエンコードされた表現で且つ前記内側ハッシュのブロックをエンコードされていない表現で取り込む、
キー付きメッセージ認証コード装置。
【請求項２】
前記内側ハッシュの計算における前記一連の第１圧縮関数のうちの前記最初の第１圧縮関数の後の最後の圧縮関数が、エンコードされた状態を入力として取り込むと共に、状態をエンコードされていない表現で生成する、請求項１に記載のキー付きメッセージ認証コード装置。
【請求項３】
前記プロセッサ回路が前記メッセージに、例えば第１メッセージブロックに、ノンスを含める、請求項１又は２に記載のキー付きメッセージ認証コード装置。
【請求項４】
前記キー付きメッセージ認証コードがハッシュメッセージ認証コードである、請求項１から３の何れか一項に記載のキー付きメッセージ認証コード装置。
【請求項５】
入力メッセージのためのキー付きメッセージ認証コードをエンコードされた表現を用いて計算するキー付きメッセージ認証コード方法であって、
前記入力メッセージを受信すると共に、該入力メッセージを複数のメッセージブロックに分割するステップと、
前記複数のメッセージブロックの内側ハッシュの計算を実行するステップであって、前記内側ハッシュの計算が、
最初の第１の状態を、暗号キーに基づいて、圧縮関数を予め定められた初期化ブロック及び第１キーブロックに適用することのエンコードされた表現に初期化するステップ、及び
一連の第１圧縮関数を適用するステップであって、前記第１圧縮関数は前記最初の第１の状態及び前記複数のメッセージブロックのうちのメッセージブロックを入力として取り込むと共に、新たな第１の状態を生成し、前記新たな第１の状態は前記一連の第１圧縮関数のうちの後続の第１圧縮関数に対する第１の状態として用いられ、前記一連の第１圧縮関数のうちの少なくとも最初の第１圧縮関数が前記最初の第１の状態をエンコードされた表現の入力として取り込むステップ、
を有し、
前記内側ハッシュの計算における前記一連の第１圧縮関数のうちの前記最初の第１圧縮関数の後の最後の圧縮関数が前記内側ハッシュとして前記新たな第１の状態をエンコードされていない表現で生成する、
内側ハッシュの計算を実行するステップと、
外側ハッシュの計算を実行するステップであって、該外側ハッシュの計算が、
最初の第２の状態を、前記暗号キーに基づいて、圧縮関数を予め定められた初期化ブロック及び第２キーブロックに適用することのエンコードされた表現に初期化するステップ、及び
一連の第２圧縮関数を適用するステップであって、前記第２圧縮関数は前記最初の第２の状態及びエンコードされていない表現の前記内側ハッシュのブロックを入力として取り込むと共に、新たな第２の状態を生成し、前記新たな第２の状態は前記一連の第２圧縮関数のうちの後続の第２圧縮関数に対する第２の状態として用いられ、前記一連の第２圧縮関数のうちの少なくとも１つが前記第２の状態をエンコードされた表現の入力として取り込み、前記第２圧縮関数に統合された第２の状態を復元するステップ、を有する、
外側ハッシュの計算を実行するステップと、
を有する、キー付きメッセージ認証コード方法。
【請求項６】
プロセッサシステムに請求項５に記載の方法を実行させるための命令を表す一次的又は非一時的データを有する、コンピュータ読取可能な媒体。
【国際調査報告】
2021507310.tif 000033
2021507310.tif 000034
2021507310.tif 000035