JP6884284B2 - キー付きメッセージ認証コードのホワイトボックス計算 - Google Patents

キー付きメッセージ認証コードのホワイトボックス計算 Download PDF

Info

Publication number
JP6884284B2
JP6884284B2 JP2020535636A JP2020535636A JP6884284B2 JP 6884284 B2 JP6884284 B2 JP 6884284B2 JP 2020535636 A JP2020535636 A JP 2020535636A JP 2020535636 A JP2020535636 A JP 2020535636A JP 6884284 B2 JP6884284 B2 JP 6884284B2
Authority
JP
Japan
Prior art keywords
state
compression
message
hash
compression function
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.)
Active
Application number
JP2020535636A
Other languages
English (en)
Other versions
JP2021507310A (ja
Inventor
ウィレム チャールズ マロン
ウィレム チャールズ マロン
フーフ セバスチアーン ヤコブス アントニウス デ
フーフ セバスチアーン ヤコブス アントニウス デ
アラン ペストリン
アラン ペストリン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2021507310A publication Critical patent/JP2021507310A/ja
Application granted granted Critical
Publication of JP6884284B2 publication Critical patent/JP6884284B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、キー付きメッセージ(keyed message)認証装置、キー付きメッセージ認証方法及びコンピュータ読取可能な媒体に関する。
暗号プリミティブ(cryptographic primitive)は、該プリミティブの入力及び出力の知識しか有さない攻撃者が自身の権利を高める(例えば、秘密キーを得る、メッセージを暗号化する、メッセージを解読する等)ことができないなら、ブラックボックスモデルにおいて安全と考えられる。しかしながら、実際には、攻撃者は、しばしば、ブラックボックスモデルでは振る舞わず、事実、入力及び出力以上の情報を有する。例えば、グレイボックスモデルにおいては、攻撃者はプリミティブの実行に関係する幾らかの情報に対するアクセスを有すると仮定される。これらの追加の情報源は、“サイドチャンネル”と呼ばれる。例えば、サイドチャンネルは演算が掛けた時間量又は消費された電力量等を含む。更に一層強力なモデル(所謂、ホワイトボックスモデル)において、攻撃者は当該プリミティブの全ての内部変数に対する完全なアクセスを有する。攻撃者は、プログラムが実行中である場合でさえ、変数を修正することもできる。そうであっても、ホワイトボックス構成は、当該プログラムからの秘密キーの抽出を防止することを目指す。
キー付きハッシュメッセージ認証コード(HMAC)は、暗号ハッシュ関数及び秘密暗号キーを含む一種のメッセージ認証コード(MAC)である。何れのMACとも同様に、HMACはデータの完全性及びメッセージの真正性の両方を同時に検証するために使用することができる。HMACはメッセージを暗号化することはない。代わりに、メッセージはHMACハッシュと一緒に送信されねばならない。秘密キーを有する受信者は、メッセージのHMACを自身で計算し、該メッセージが真正であるなら、受信されて計算されたHMACは一致するであろう。
HMACがモバイルアプリケーションに組み込まれる場合、これらの装置は潜在的に危殆化され得ると仮定されなければならない。既存のHMAC構成の問題は、秘密暗号キーを保護する手段を提供していないということである。グレイ又はホワイトボックスモデルにおいて高い耐性を有するHMAC装置に対する要望が存在する。
請求項において定義されるようなキー付きメッセージ認証装置が提供される。該装置は、メッセージ認証コードを計算するために状態(state)に圧縮関数を適用する。これら圧縮関数のうちの少なくとも幾つかは、エンコードされた状態を入力として取り込む。状態は、キー材料から導出され、従って秘密であり得る。この情報をエンコードすることにより、この危険性は低減される。例えば、一実施態様において、内側ハッシュ(inner hash)及び外側ハッシュ(outer hash)は状態により初期化され、これら2つの状態の何れかは事前に計算し、エンコードすることができる。このように、初期化された状態に作用する圧縮関数は、エンコードされた状態に対して作用するよう構成することができる。一実施態様において、1以上の圧縮関数は、これらがエンコードされた状態に対して作用するとしても、平文状態(plain state)を生成することができる。このことは、後続の圧縮関数が、より少ないエンコードされた入力を受信するという利点を有する。より少ないエンコードされた入力は、より速い実行及び一層小さなフットプリント(例えば、コードサイズ)を意味する。
当該キー付きMAC装置は、例えば、セットトップボックス、コンピュータ等の電子装置である。該キー付きMAC装置は、例えば、携帯電話、タブレット、スマートカード等のモバイル電子装置であり得る。ここに記載されるキー付きMAC方法は、広範囲の実用的アプリケーションにおいて適用することができる。このような実用的アプリケーションは、通信のためのメッセージの保護、金融取引、センサ測定等を含む。
本発明による方法は、コンピュータ上でコンピュータ実施化方法として、専用のハードウェアで、又は両者の組合せで実施することができる。本発明による方法のための実行可能なコードは、コンピュータプログラム製品に記憶することができる。コンピュータプログラム製品の例は、メモリ装置、光記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行された場合に本発明による方法を実行するためのコンピュータ読取可能な媒体に記憶された非一時的プログラムコードを有する。
好ましい実施態様において、当該コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全てのステップを実行するように構成されたコンピュータプログラムコードを有する。好ましくは、該コンピュータプログラムはコンピュータ読取可能な媒体上で具現化される。
本発明の他の態様は、前記コンピュータプログラムをダウンロードのために利用可能にする方法を提供する。この態様は、当該コンピュータプログラムが例えばアップル社のアップルストア、グーグル社のグーグルストア又はマイクロソフト社のウインドウズストアにアップロードされ、該コンピュータプログラムが斯様なストアからダウンロードのために利用可能にされた場合に用いられる。
本発明の更なる詳細、態様及び実施態様は図面を参照して例示のみとして後述されるであろう。尚、各図における要素は簡略化及び明瞭化のために図示されており、必ずしも実寸では描かれていない。また、各図において、既に記載された要素に対応する要素は同一の符号を有し得る。
図1aは、キー付きメッセージ認証コード装置の実施態様の一例を概略的に示す。 図1bは、キー付きメッセージ認証コード装置の実施態様の一例を概略的に示す。 図2は、完全にエンコードされるキー付きメッセージ認証コード計算の実施態様の一例を概略的に示す。 図3aは、部分的にエンコードされるキー付きメッセージ認証コード計算の実施態様の一例を概略的に示す。 図3bは、部分的にエンコードされるキー付きメッセージ認証コード計算の実施態様の一例を概略的に示す。 図4は、エンコードされる状態初期化計算の実施態様の一例を概略的に示す。 図5は、キー付きMAC方法の実施態様の一例を概略的に示す。 図6aは、一実施態様によるコンピュータプログラムを有する書込可能部分を備えたコンピュータ読取可能な媒体を概略的に示す。 図6bは、一実施態様によるプロセッサシステムの図を概略的に示す。
本発明は多数の異なる形態の実施態様が可能であるが、本開示は本発明の原理の例示として見なされるべきであり、本発明を図示及び記載される特定の実施態様に限定することを意図するものではないとの理解の下で、1以上の特定の実施態様が図面に示されると共に明細書に詳細に記載される。
以下では、理解のために、実施態様の要素は動作時において説明される。しかしながら、各要素は、これら要素により実行されると記載されている機能を果たすように構成されていることは明らかであろう。
更に、本発明は実施態様に限定されるものではなく、本発明は本明細書に記載され又は互いに異なる従属請求項に記載された各及び全ての新規なフィーチャ又はフィーチャの組み合わせに存するものである。
一般的暗号ハッシュ関数は、例えば、一般的マークル・ダンガード構成(Merkle-Darmgard construction)における一方向圧縮関数の繰り返し適用を有する。この構成のための成分は、圧縮関数f:{0,1}sx{0,1}b→{0,1}s及び“初期値”IV∈{0,1}sである。長さb及びsのビット列を、各々、“ブロック”及び“状態(state)”と称する。数bはハッシュ関数のブロック長と呼ばれる。
任意の長さの二進メッセージMは以下のようにしてハッシュ化される。先ず、長さがbの倍数であるビット列M’となるように、Mにビットがパディングされる。典型的なパディングの方法においては、bの倍数である長さのビット列を得るために、先ずMの後に“1”が配置され、続いて一連のゼロが配置される。次いで、Mの長さを表すbビットのブロックが付加される。次に、M’はbビットのブロックに分割される。即ち、
Figure 0006884284
であり、ここで、mi∈{0,1}bであり、
Figure 0006884284
は連結を表す。H(M)により示されるMのハッシュは、
Figure 0006884284
により計算することができる。
言葉で言うと、当該圧縮関数は状態及びメッセージブロックを次の状態にマッピングする。オプションとして、H(M)=g(Sn+1)となるような後処理関数gが存在する。
ハッシュ関数Hが利用可能な場合、該ハッシュ関数を、キー付きメッセージ認証コードを定義するために使用することができる。キー付きハッシュ関数の1つの特定の構成は、HMAC構成である。文献[1]に従えば、HMACは以下のように記述することができる:
Figure 0006884284
この式において、H、K及びmは暗号ハッシュ関数、秘密キー及び認証されるべきメッセージである。更に、K’は、Hのブロック長(Kの長さが該ブロック長より小さい場合は幾つかのビットをパディングし、Kの長さが該ブロック長を超える場合はハッシュ化することにより得られる)に整合するようにKから導出された他のキーを示す。最後に、内側パディング列ipad及び外側パディング列opadは、各々、16進定数0x36(即ち、バイト00110110)及び0x5C(即ち、バイト01011100)の繰り返しを有する(文献[1]参照)。最後に、
Figure 0006884284
はビット単位の排他的ORを示し、
Figure 0006884284
は連結を示す。必要なら、メッセージmは、メッセージ長が当該圧縮関数のブロック長の倍数となるようにゼロでパディングされる。
例えば文献[1]に記載されたようなキー付きHMACの直接的実施化において、当該キーはメモリ内で見えるであろう。従って、このような攻撃はホワイトボックス型の攻撃に対して脆弱であろう。事実、メモリ内のビット列がキーとして試されるメモリスクレイピング(memory scraping)攻撃でさえ、該キーを復元するのに十分であろう。キーがエンコードされ、従ってキーがメモリにおいてそのままでは見えない実施態様が説明される。ハッシュ関数も、エンコードされた形で実行される。このような実施態様は、キーに対しては優れた保護を提供するが、実際には遅いことが分かる。発明者は、HMAC計算の大部分がエンコードされた形態で実行されることを要さないことを理解した。例えば、一実施態様において、ハッシュ関数は圧縮関数を、一度、エンコードされた入力及び平文出力で適用し、続いて当該圧縮関数を通常の高速構成で、即ち平文で適用することにより計算される。
図1aは、キー付きメッセージ認証コード装置100の実施態様の一例を概略的に示す。図2は、装置100上で実行することができる完全にエンコードされたキー付きメッセージ認証コード計算の実施態様の一例を示す。
キー付きメッセージ認証コード装置100は、エンコード表現を用いて入力メッセージに対するキー付きMACを計算するように構成される。ここに記載される原理はHMAC構成の変形例に適用することもできるが、HMAC構成をキー付きMACに対する主たる例として用いる。
装置100における演算の幾つかは、グレイボックス及びホワイトボックス攻撃(例えば、コンピュータメモリの内容に対するアクセスを有することを想定する攻撃)に対する困難性を増加させるためにエンコードされたデータに対して実行される。攻撃者側で相対的に僅かな分析しか要さない特に重要な攻撃タイプは、メモリスクレイピング攻撃である。メモリスクレイピング攻撃において、攻撃者はメモリの多数の区間を試して、たまたま秘密的情報(特に、キー)であるかを調べる。
平文データ(plain data)に作用するコンピュータプログラムコードで具現化された演算は、代わりにエンコードされたデータに作用するように適合化又は変換することができる。この構成は、ホワイトボックス暗号法として知られた技術を用いることができる。平文データは、秘密エンコード法(例えば、攻撃者により未知のエンコード法、例えば装置100にとり秘密の、秘密エンコード法)によりエンコードされていないデータとして参照する。
ホワイトボックス攻撃に抗する構成は、時には、エンコードされたデータに作用するエンコードテーブルネットワーク処理として実施化される。S. Chow他による論文“White-Box Cryptography and an AES Implementation”には、ブロック暗号AES(高度暗号化標準:Advanced Encryption Standard)のホワイトボックス構成が提示されている(以下では、“Chow”と称し、参照により本明細書に組み込まれる)。Chowは、完全にテーブルルックアップ処理からなるAESの構成を形成する。幾つかの中間的方法を経て、通常の暗号は、この形態の構成に変換され、AESを計算するためにテーブルネットワークを使用することができるようにする。テーブルネットワークにおいてテーブルをエンコードすることにより、分析及び攻撃に対する当該システムの耐性は向上される。Chowにおいて使用される技術は、他の暗号プリミティブにも適用することができる。
テーブルの代替として、有限体上の整数多項式を用いることもできる。ビットに対する(例えば、ニブル又はバイトに対する)何れの関数も、標数2の対応する有限体上の多項式として表すことができることが分かっている。エンコードされたデータに対し作用するテーブルを使用する代わりに、エンコードされたデータに対し作用する多項式を適用することもできる。エンコーディングは、コンパイル時に決定することができ、各キー付きMAC装置に対して異なることができる。エンコードされる変数は平文変数よりも大きくすることができる。例えば、エンコーディングは冗長的なものとすることができ、変数が2以上の有効な表現を有するようにする。
キー付きMAC装置100は、入力メッセージを受信するための入力インターフェース130を有する。入力インターフェース130を介して受信されるメッセージは、例えば電子形態で受信される、デジタルメッセージであり得る。例えば、入力インターフェース130はメッセージを受信するためのアプリケーションプログラミングインターフェース(API)とすることができる。例えば、入力インターフェース130は、装置100におけるメッセージが記憶される電子メモリに対するインターフェースとすることができる。当該メッセージは、そうでもあり得るが、エンコードされていないと仮定される。例えば、当該メッセージは、例えば公開されているので、いずれにしても平文で伝送されるので、又はキーよりも秘密的でないと考えられるので、ホワイトボックス攻撃から保護されることを要さないこともあり得る。
入力インターフェース130は、メッセージを受信するように構成された通信インターフェースとすることができる。例えば、装置100はコンピュータネットワークを介して他の電子装置と通信することができる。該コンピュータネットワークは、インターネット、イントラネット、LAN、WLAN等であり得る。コンピュータネットワークはインターネットとすることができる。該コンピュータネットワークは、全体的に若しくは部分的に有線であり得、及び/又は全体的に若しくは部分的に無線であり得る。例えば、該コンピュータネットワークはイーサネット(登録商標)接続を有し得る。例えば、該コンピュータネットワークは、Wi-Fi(登録商標)及びジグビ等の無線接続を有することができる。例えば、当該接続インターフェースは、例えばイーサネット(登録商標)コネクタ等の有線コネクタ、又は例えばアンテナ(例えば、Wi-Fi(登録商標)、4G若しくは5Gアンテナ)等の無線コネクタ等のコネクタを有することができる。当該通信インターフェースは、MACを計算すべくメッセージ又はメッセージの少なくとも一部を受信するために使用することができる。
メッセージは装置100上で発生することができる。例えば、装置100はメッセージング装置、金融装置及び医療装置の一部であり得る。装置100は、(秘密)メッセージ、金融取引及び医療データを、当該データに関してHMACを計算することにより保護することができる。このことは、当該データの変更を、MACを検証することにより検出することができるという利点を有する。更に、攻撃者は、キーを知らないので、該変更されたデータに関するMACを簡単に再計算することはできない。キーを復元することは、エンコードされた表現により困難である。
キー付きMAC装置100及びキー付きMAC装置101(更に後述される)の実行は、プロセッサ回路内で実施され、その例が本明細書に示される。図1a及び図1bは、斯かるプロセッサ回路の機能ユニットであり得る機能ユニットを示す。例えば、図1a及び図1bは、該プロセッサ回路の可能な機能編成の青写真として用いることができる。該プロセッサ回路は、図1a及び図1bにおけるユニットとは別途に示されてはいない。例えば、図1a及び図1bに示される機能ユニットは、装置100に(例えば、該装置100の電子メモリに)記憶され、且つ、該装置100のマイクロプロセッサにより実行することができるコンピュータ命令で実施化することができる。ハイブリッド型実施態様において、機能ユニットは、部分的にハードウェアで(例えば、コプロセッサ(例えば、暗号コプロセッサ)として)実施化され、部分的に装置100上で記憶及び実行されるソフトウェアで実施化される。
キー付きMAC装置100は、前記入力メッセージを1以上のメッセージブロックに分割するよう構成されたメッセージ管理ユニット110を有することができる。メッセージ管理ユニット110は、メッセージにパディングする(必要なら)と共に、該メッセージをブロックに分割するよう構成することもできる。特に、内側ハッシュユニット150(後述する)における圧縮関数は、特定のブロックサイズ及び/又はパディングを期待することができる。これは、メッセージ管理ユニット110により提供することができる。メッセージ管理ユニット110は、例えばハッシュ化のために、当該メッセージにパディングする(必要なら)ことができる。パディングはオプションである(例えば、入力メッセージは既にパディングされていることもあり得る)。
入力インターフェース130において受信されたメッセージが、使用されているキー付きMACの又は該MACに使用されるハッシュ関数の要件に従わない場合、メッセージ管理ユニット110はパディング及び分割を適用することができる。例えば、RFC6234は、HMACで使用するのに適したハッシュ関数を記載している。メッセージがどの様にパディングされるべきか、及びメッセージがどの様に分割されるべきかが記載されている。メッセージ管理ユニット110はオプションである。例えば、インターフェース130において受信されたメッセージは、既に正しい形態であり得る。例えば、該メッセージは正しくパディングされた単一ブロックであり得る。メッセージ管理ユニット110は、メッセージはエンコードされていないので、エンコードされたデータに作用する必要はない。
キー付きMAC装置100は、内側ハッシュユニット150及び外側ハッシュユニット160を有する。内側ハッシュユニット150及び外側ハッシュユニット160は、共に、状態(state)に圧縮関数を適用する。内側ハッシュユニット150は、メッセージ管理ユニット110から受信するメッセージブロックに基づいて状態を繰り返し更新するように構成される。特に、内側ハッシュユニット150は状態に一連の第1圧縮関数を適用する。該第1圧縮関数は、状態及びメッセージブロックを入力として取り込み、新たな状態を生成する。一連のメッセージブロックに圧縮を適用することにより、状態は繰り返し更新される。内側ハッシュユニット150は内側ハッシュを、例えば最後の第1圧縮関数が適用された後の状態の値として生成する。
一般的に、圧縮関数はハッシュ関数の圧縮関数、例えばSHA系の圧縮関数とすることができる。圧縮関数は以下の特性を満たすことができる。即ち、入力状態が分かっても、且つ、平文状態が分かったとしても、状態出力から入力メッセージブロックを計算することができない。圧縮関数が各入力メッセージブロックから同一の新たな状態を生成するような2つの入力メッセージブロック及び入力状態を計算することができない。更に、圧縮関数も状態に関して原像耐性のものであることが望ましい。例えば、出力状態及び入力メッセージが与えられたとして、入力状態を生成することができない。標準の圧縮関数は、これらの要件を満足する。
外側ハッシュユニット160は、1以上の第2圧縮関数を適用するように構成される。第2圧縮関数は、内側ハッシュのブロック及び状態を入力として取り込み、新たな状態を生成する。典型的な実施態様においては、複数のメッセージブロックが、従って複数の第1圧縮関数が存在するが、内側ハッシュは単一のブロックであるので、1つの第2圧縮関数が存在する。圧縮関数の多くは同一とすることができ、例えば、図2において第1圧縮関数の全ては同一の関数であり、共有コードにより実施することもできる。
第1圧縮関数の少なくとも1つ及び第2圧縮関数の少なくとも1つは、状態を、エンコードされた表現の入力として取り込む。
当該状態が内側ハッシュユニット150の第1圧縮関数により又は外側ハッシュユニット160により更新される前に、該状態は初期化される。例えば、状態の初期化は装置100のメモリに記憶することができる。
状態の初期化は種々の方法で実行することができ、これら方法のうちの2つが図1に示されている。例えば、装置100は状態に関する初期化値、即ち内側ハッシュユニット150のための初期化値及び外側ハッシュユニット160のための初期化値、を記憶する状態初期化記憶部120を有することができる。一実施態様において、状態に関する初期化値はエンコードされた形態である。
図2は、装置100がMACをどの様に計算することができるかを示す。例えば、状態の初期化は、図2に示されるように計算することができる。図2、図3a、図3b及び4において、灰色のボックスはエンコードされたデータを示し、点線のボックスは事前計算することができるデータを示す。一実施態様において、図2、図3a及び図3bにおける点線のボックスは装置100においては表されず、何処かで計算される。
図2に示されるものは、初期化ベクトル242(IV)、内側キーブロック212及び圧縮関数220である。例えば、当該状態は、内側ハッシュ計算において、圧縮関数を所定の初期化ブロック(例えば、IV)及び第1キーブロック(例えば、
Figure 0006884284
)に適用することのエンコードされた表現に初期化することができる。結果としての事前計算された状態252(例えば、状態初期化値)は記憶部120に記憶することができる。
図2に示されるものは、初期化ベクトル244(IV)、外側キーブロック214及び圧縮関数270である。例えば、当該状態は、外側ハッシュ計算では、圧縮関数を所定の初期化ブロック(例えば、IV)及び第2キーブロック(例えば、
Figure 0006884284
)に適用することのエンコードされた表現に初期化することができる。結果としての事前計算された状態254(例えば、状態初期化値)は記憶部120に記憶することができる。
これらの計算は、事前に計算することができ、安全な場所で実行することができる。例えば、該計算は、装置100のためのソフトウェアが発生されるコンパイル時に実行することができる。この場合には、エンコードされたデータに対して計算が実行されることを要さない。このような理由で、図2においてキーブロック212及び214は灰色となっていない。装置100に記憶される事前に計算された状態252及び254はエンコードされることに注意されたい。例えば、コンパイル時において、事前計算状態252及び254が計算されるキーは他の装置(例えば、サーバ)に記憶することができ、かくして、当該装置により計算されるキー付きMACは検証することができる。装置100には、製造の間において又は当該キー付きMAC装置を実施化するキー付きMACソフトウェアがインストールされる際に、事前計算状態252及び254を供給することができる。該事前計算状態252及び254は、装置100が別のキーに対してMACを計算することができるように更新することができる。例えば、事前計算状態252及び254は、入力インターフェース130を介して受信することができる。
状態252及び254を事前に計算する代わりに、これらの値は、必要な場合に、装置100において計算することもできる。例えば、装置100は、内側状態計算ユニット142及び外側状態計算ユニット144を備えた状態初期化ユニット140を有することができる。この計算は、図4に示されている。
例えば、内側状態計算ユニット142はエンコードされたキーブロック412(例えば、エンコードされたキーブロック)を受信することができ、圧縮関数420を適用するように構成することができる。圧縮関数420は、エンコードされたキーブロック412を入力として受信すると共に、圧縮関数を該キーブロック及び固定された初期化ベクトル242に適用するように構成される。後者は入力である必要はない。
例えば、外側状態計算ユニット144は、エンコードされたキー412を受信することができ、圧縮関数470を適用するように構成することができる。圧縮関数470は、エンコードされたキー412を入力として受信すると共に、圧縮関数を該キー及び固定された初期化ベクトル244に適用するように構成される。後者は入力である必要はない。エンコードされたキー412は、例えば入力インターフェース130において受信することができる。エンコードされたキー412は装置100で発生することもできる。例えば、ユニット140によってである。例えば、該キーは直にエンコードされた形態で発生することができる。
圧縮関数420及び470は同一のエンコードされたキーを受信する。圧縮関数420及び470は同一ではなく、例えば、これらは様々である。例えば、HMACの場合、圧縮関数420及び470は、これら関数が先ず当該キーに異なるパディング(例えば、ipad又はopad)を付加することを除き、ハッシュ圧縮関数である。
一実施態様において、事前計算状態252は圧縮関数(f)を所定の初期化ブロック(IV)及び第1キーブロック
Figure 0006884284
に適用するエンコードされた表現である。一実施態様において、事前計算状態254は圧縮関数(f)を所定の初期化ブロック(IV)及び第2キーブロック
Figure 0006884284
に適用するエンコードされた表現である。
典型的に、装置100は記憶部120及び状態初期化ユニットの一方のみを有するであろう。以下では、状態初期化ユニット140により置換することができるとの注記の下で、記憶部120が使用されると仮定する。両ユニットを使用することもでき、例えば、ユニット140は当該状態を事前に計算するために使用され、該状態は次いで記憶部120に記憶される。
図2に戻ると、内側ハッシュユニット150及び外側ハッシュユニット160の少なくとも1つの圧縮関数はエンコードされた入力を取り込むように構成される。好ましくは、内側ハッシュユニット150により適用される及び外側ハッシュユニット160の最初の圧縮関数がエンコードされた入力を取り込むように構成される。
図2は、内側ハッシュユニット150の第1圧縮関数のうちの3つ、即ち、メッセージブロック221、222及び223を各々入力として取り込む圧縮関数231、232及び233を示している。3より少ない又は多いメッセージブロックが存在し得る。第1圧縮関数は、各々、エンコードされた状態及び平文メッセージブロックを入力として取り込み、エンコードされた状態を生成する。全ての第1圧縮関数を、装置100内の同一のユニット、例えば内側圧縮ユニット152により実施化することができることに注意されたい。最終の状態は、エンコードされた状態263である。状態252及び261〜263の各々はキー、特にキーブロック212に依存するが、これら状態の何れかを復元する攻撃者は、これらブロックがエンコードされているので、及び/又は、これらがハッシュ圧縮関数の出力であるので、当該キーを復元することはできない。第1圧縮関数の最終の状態、即ち状態263は、内側ハッシュである。ハッシュ構成において、最終関数は最後の圧縮関数の後に適用することができる。もしそうなら、このような関数は圧縮関数233に統合することができる。例えば、fが圧縮関数であり、gが追加の関数である場合、ブロック233は関数g(f())を実施することができる。
内側ハッシュ263は、外側ハッシュの計算のための入力として使用される。このことは、内側ハッシュに対して実行される更なるパディング処理を必要とし得る。このパディングは、圧縮関数233において又は圧縮関数281において実行することができる。例えば、該更なるパディングは追加の関数gにおいて実行することができる。このように、圧縮関数233は最終ブロックをパディングされたエンコード形態で生成するように構成することができる。
図2は、内側ハッシュブロック263を入力として取り込む、外側ハッシュユニット160の第2圧縮関数のうちの1つ、即ち圧縮関数281を示している。例えば内側圧縮関数のブロック長が外側圧縮関数のブロック長より大きい場合、1より多いメッセージブロックが存在し得る。第2圧縮関数は、各々、エンコードされた状態及びエンコードされた内側ハッシュブロックを入力として取り込むと共に、エンコードされていない状態を生成する。エンコーディングは異なるので、圧縮関数281は圧縮関数231〜233とは相違する(これら圧縮関数が、たとえ同一のハッシュ関数から由来するとしても)。より多くの第2圧縮関数が必要とされる場合、これらは内側ハッシュユニットに関して示されたように連鎖させることができる。状態値290はmac値である。圧縮関数281は、外側圧縮ユニット162により実行することができる。ブロック290に対しては更なる処理が存在し得る。該更なる処理は、ブロック290に対して実行される平文非エンコード処理であり得る。該更なる処理は圧縮関数281に含めることができる。内側ハッシュの更なるパディングが圧縮関数233において実行されない場合、該パディングは圧縮関数281により実行することができる。
これらの実施態様においては、圧縮関数281が障害となる。この圧縮関数は2つのエンコードされた入力、即ちエンコードされた内側ハッシュ263及びエンコードされた状態254、を取り込む。エンコードされた入力の数の2倍は、おおよそエンコードされる実施化の大きさを2乗にする。このように、圧縮関数281は、圧縮関数231〜233よりも著しく大きく且つ遅くなる。
図2において、状態は、内側ハッシュに関しては初期状態252、外側ハッシュに関しては初期状態254の両方においてエンコードされた表現に初期化されることに注意されたい。このように、内側ハッシュ及び外側ハッシュに関する最初の圧縮関数231及び281は、エンコードされたハッシュを入力として取り込む。図2において、第1圧縮関数の全ては、エンコードされた状態を入力として取り込むと共に、エンコードされた状態を生成する。外側ハッシュの最終圧縮関数281のみが、平文表現で(即ち、エンコードされていない)状態を生成する。
図1bは、この問題を軽減するキー付きメッセージ認証コード装置101の実施態様の一例を示す。装置101により実行される計算の一例が、図3に示されている。装置101は、ハッシュユニット150及び160が異なる圧縮関数を実施することを除き、装置100と大きく類似している。更に、装置101において、状態は、装置100ではエンコードされる場合に、時には平文となっている。例えば、内側ハッシュユニット150は内側圧縮ユニット154及び156を有することができる。例えば、外側ハッシュユニット160は外側圧縮ユニット164を有することができる。以下に示されるように、ユニット154及び156はハッシュユニット150及び160の間で共有することができる。
図3に示されるものは、内側状態352及び外側状態354の初期化である。これらは、装置100に関するものと同一とすることができる。状態352及び354が平文である場合、当該構成は攻撃に対して脆弱であろう。状態352及び354の平文バージョンの知識は、キー自体が分からなくても、HMACを計算するのに十分である。従って、図3における状態352及び354はエンコードされる。
状態352は、3つが示された第1圧縮関数(即ち、圧縮関数331〜333)により更新される。これら圧縮関数のうちの第1のもの(即ち、圧縮関数331)は、入力としてのエンコードされた事前計算状態352及び平文メッセージブロック321を取り込む。これは図2におけるのと同じである。しかしながら、圧縮関数331の出力(状態361)は平文である。これは、エンコードされた状態352に対してハッシュ関数が適用されるので可能である。攻撃者は圧縮関数331の逆を計算することはできず、従って、状態361の知識はHMACを計算する能力を得るには十分でない。
当該圧縮関数の残り、例えば圧縮関数332及び333は、平文状態及び平文メッセージブロックを入力として取り込み、平文状態を出力として生成する。状態363(内側ハッシュ)も平文である。このように、内側ハッシュユニット154は圧縮関数331を実施することができる一方、内側ハッシュユニット156は当該圧縮関数の残り(332〜333)を実施することができる。
このことは、外側ハッシュ計算が平文の内側ハッシュを受信することを意味する。外側ハッシュ計算の圧縮関数381は、1つのエンコードされた入力(例えば、エンコードされた事前計算状態354)しか受信しない。圧縮関数381は、圧縮関数331と同様に高速で小型となるので、このシステムの障害とならない。更に、平文圧縮関数332及び333の使用は、該システムを大幅に高速にさせる。平文関数は、エンコードされた関数よりも桁違いに速くなる。
一実施態様において、装置101は、例えばメッセージ管理ユニット110において、第1メッセージブロックにタイムスタンプ等の一度しか使用されない情報(例えば、ノンス)を含めることができる。該ノンスは、メッセージ管理ユニット110により発生することができるか、又は例えばチャレンジとして受信することができる。ノンスは受信側により検証することができる。例えば、ノンスはキー付きMAC装置の乱数発生器により発生することができる。例えば、一実施態様において、チャレンジは外部コンピュータから装置101において(例えば、インターフェース130において)受信され、該チャレンジは当該メッセージ(例えば、第1メッセージブロック)に含まれる。装置101がメッセージ及びHMACを外部コンピュータに送信した場合、該外部コンピュータはチャレンジがメッセージ内にあるか及びHMACが正しく計算されているかを検証することができる。
図3aにおいて、状態は内側ハッシュに関しては初期状態352、外側ハッシュに関しては初期状態354の両方において、エンコードされた表現に初期化されることに注意されたい。このように、内側ハッシュ及び外側ハッシュに関する最初の圧縮関数331及び381はエンコードされたハッシュを入力として取り込む。図3aにおいて、内側ハッシュ計算における一連の第1圧縮関数のうちの最初の第1圧縮関数331は、状態をエンコードされた表現の入力として取り込む。これら第1圧縮関数の残りは、エンコードされていない状態を入力として取り込み、エンコードされていない状態を生成する。特に、最後の第1内側圧縮関数333はエンコードされていない状態を生成する。外側ハッシュの最初の圧縮関数381は、エンコードされた状態及び内側ハッシュの平文ブロックを受信し、平文表現の状態を生成する。外側ハッシュに関して複数の圧縮関数が存在する場合、これらは、最初の第2圧縮関数を除き、平文関数である。
図3bは更に他の変形例を示す。図3bは、エンコードされたブロック及び平文メッセージブロックを取り込む最初の内側圧縮関数が使用される点で、図2と殆ど同一である。しかしながら、最後の圧縮関数は圧縮関数233’により置換されている。圧縮関数233’は、エンコードされた状態及び平文メッセージブロックを取り込み、平文状態363を生成する。例えば、圧縮関数233’は、該圧縮関数233’が追加の最終関数又は外側ハッシュのための更なるパディングを計算することができることを除き、圧縮関数331と同一とすることができる。図3bの利点は、圧縮関数281の障害が依然として回避されながら、当該計算の一層多くがエンコードされたデータに対して実行されることである。
図3bにおいて、状態は内側ハッシュに関しては初期状態252、外側ハッシュに関しては初期状態354の両方において、エンコードされた表現に初期化されることに注意されたい。図3bにおける外側ハッシュの計算は、図3aにおけるものと同一である。内側ハッシュ及び外側ハッシュに関する最初の圧縮関数231及び381は、エンコードされたハッシュを入力として取り込む。図3bにおいて、内側ハッシュ計算における一連の第1圧縮関数のうちの最初の第1圧縮関数231は、状態をエンコード表現の入力として取り込み、エンコードされた状態を生成する。これら第1圧縮関数の残り、例えば圧縮関数232もエンコードされた状態を入力として取り込み、エンコードされた状態を生成する。第1圧縮関数のうちの最後の圧縮関数233’は、エンコードされた状態を入力として取り込み、エンコードされていない状態を生成する。
装置100及び101の種々の実施態様において、入力インターフェースは種々の代替案から選択することができる。例えば、該インターフェースは、ローカル又は広域ネットワーク(例えば、インターネット)に対するネットワークインターフェース、内部又は外部データ記憶部に対する記憶部インターフェース、キーボード、アプリケーションインターフェース(API)等とすることができる。
装置100及び101はユーザインターフェースを有することができ、該ユーザインターフェースは1以上の釦、キーボード、ディスプレイ、タッチスクリーン等の良く知られた要素を含むことができる。該ユーザインターフェースは、メッセージを保護するためのMAC動作を実行するためのユーザ対話に対応するように構成することができる。
装置100及び101の記憶部、例えば記憶部120は、例えばフラッシュメモリ等の電子メモリ、又は例えばハードディスク等の磁気メモリとして実施化することができる。該記憶部は、一緒になって当該記憶部を形成する複数の別個のメモリを有することができる。該記憶部は、例えばRAM等の一次的メモリとすることもできる。一次的記憶部120の場合、該記憶部120は、例えばオプションとしてのネットワーク接続(図示略)を介して取得することにより、使用前にデータを取得するための何らかの手段を含む。
典型的に、装置100及び101は、各々、当該装置100及び101に記憶された適切なソフトウェアを実行する例えばCPU、マイクロプロセッサ等(別途図示されてはいない)のプロセッサ回路を有する。例えば、上記ソフトウェアは、ダウンロードされたもの、及び/又はRAM等の揮発性メモリ若しくはフラッシュ等の不揮発性メモリ等の対応するメモリ(別途図示されてはいない)に記憶されたものとすることができる。代わりに、装置100及び101は、全体として又は部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)等のプログラマブルロジックで実施化することもできる。装置100及び101は、全体として又は部分的に、所謂特定用途向け集積回路(ASIC)、即ち特定の用途のためにカスタマイズされた集積回路(IC)として実施化することもできる。例えば、当該回路は、例えばVerilog、VHDL等のハードウェア記述言語を用いてCMOSで実施化することができる。
一実施態様において、装置100及び101は内側ハッシュ回路及び外側ハッシュ回路を有する。これら回路は、本明細書に記載された対応するユニットを構成する。これら回路は、プロセッサ回路及び記憶回路とすることができ、該プロセッサ回路は記憶回路内で電子的に表される命令を実行する。
プロセッサ回路は、分散された態様で(例えば、複数の副プロセッサ回路として)実施化することができる。記憶部は、複数の分散された副記憶部にわたって分散させることができる。当該メモリの一部又は全ては、電子メモリ、磁気メモリ等とすることができる。例えば、当該記憶部は揮発性及び不揮発性部分を有することができる。該記憶部の一部は読み出し専用とすることができる。
以下には、更なる詳細及び/又は更なる実施態様が記載される。
この最初の節においては、暗号アルゴリズム[2]のホワイトボックス構成を形成するために典型的な技術を用いるHMACの完全にエンコードされる構成を説明する。説明を簡単にするために、例えばSHA-256ハッシュ関数[3の第4.1.2節]の場合に当てはまるように、s=256及びb=512と仮定する。
Hを、圧縮関数f、ブロック長b、状態長s及び初期値IVのハッシュ関数とする。s≦tとすると共に、E:{0,1}t→{0,1}sを全射とする。即ち、各y∈{0,1}sに対して、E(x)=yとなるような少なくとも1つのx∈{0,1}tが存在する。関数Eはデコード関数と考えることができる。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)となるようなものとする。
従って、hはエンコードされた状態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はsビットの状態をbビットのメッセージブロックに変化させるための標準のパディング関数である。
以下には、gEを用いてHMAC(K,m)をどの様に計算するかを擬似コードで記載し、ここで、m(恐らくはパディング後の)は長さnbを有し、例えば
Figure 0006884284
である。nは予め知る必要はないことに注意されたい。キーK’はKの後にゼロを付加することにより得られる長さbのキーである。
Figure 0006884284
このアルゴリズムの正しさは、E(Si)が
Figure 0006884284
に適用されるハッシュ関数の計算のi番目の反復における状態に等しいという事実の結果である。この完全に暗号化される構成の欠点は、実験によりそれがかなり遅いことを示したことである。
この節は、部分的にエンコードされる構成を説明する。Hを、圧縮関数f、ブロック長b、状態長s及び初期値IVのハッシュ関数とする。s≦tとすると共に、E:{0,1}t→{0,1}sを全射とする。即ち、各y∈{0,1}sに対して、E(x)=yとなるような少なくとも1つの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を用いてHMAC(K,m)をどの様に計算するかを擬似コードで記載し、ここで、m(恐らくはパディング後の)は長さnbを有し、例えば
Figure 0006884284
である。キーK’はKの後にゼロを付加することにより得られる長さbのキーである。
Figure 0006884284
上記の更なるパディング(further padding)は、最後の内側圧縮関数に又は最初の外側圧縮関数に組み込むことができる。上記アルゴリズムにおいて、高速の平文構成fはn+k-2回適用される一方、より遅いエンコードされる構成gEは2回しか使用されないことに注意されたい。fがSHA-256関数を示す場合、b=512、s=256、k=1である。他のハッシュ関数にも、b、s及びkに対して適切な変更を行うことにより対応することができる。
実際には、上記のものは以下のように適用される。
(1)設計者はt≧s及び全射E:{0,1}t→{0,1}sを選択し、gE(x,m)=f(E(x),m)の計算においてE(x)を内部変数として含まないようなgEの構成を形成する。即ち、Eは該gEの構成に統合される。gEの構成は、内部変数の隠蔽及び内部変数による計算のためにEから独立に選択される追加の全単射を含むことができることに注意されたい。例えば、関数gEはSHA-256ハッシュ関数の圧縮関数を実施することができる。
(2)キーKが与えられたとして(設計者により選択される又は設計者に与えられる)、設計者は
Figure 0006884284
及び
Figure 0006884284
となるようなS1及びT0を含むキーファイルを供給する。
キーファイル及びgEの実施化の分離により、キーは他の変更を行うことを要せずに更新することができる。Eは秘密であるので、S
Figure 0006884284
を暴露させることはなく、
Figure 0006884284
を暴露させることはない。
Figure 0006884284
及び
Figure 0006884284
の事前計算は可能である。
図5は、キー付きMAC方法500の実施態様の一例を概略的に示す。該キー付きメッセージ認証コード(MAC)方法500は、入力メッセージに対するキー付きMACをエンコードされた表現を用いて計算するように構成される。該キー付きMAC方法500は、
− 入力メッセージを受信すると共に、該入力メッセージを1以上のメッセージブロックに分割するステップ(510)と、
− 内側ハッシュの計算を実行するステップ(520)であって、
− 状態を暗号キーに基づいて初期化するステップ(522)、及び
− 一連の第1圧縮関数(h;g)を適用するステップ(523)であって、前記第1圧縮関数は前記状態及びメッセージブロックを入力として取り込むと共に、新たな状態を生成し、これら第1圧縮関数のうちの少なくとも1つが前記状態をエンコードされた表現の入力として取り込むステップ、
を有する、内側ハッシュの計算を実行するステップと、
− 外側ハッシュの計算を実行するステップ(530)であって、
− 状態を前記暗号キーに基づいて初期化するステップ(532)、及び
− 1以上の第2圧縮関数(u;g)を適用するステップ(533)であって、前記第2圧縮関数は前記状態及び前記内側ハッシュのブロックを入力として取り込むと共に、新たな状態を生成し、これら第2圧縮関数のうちの少なくとも1つが前記状態をエンコードされた表現の入力として取り込むステップ、
を有する、外側ハッシュの計算を実行するステップと、
を有する。
当業者にとり明らかなように、当該方法を実行するための多数の異なる態様が可能である。例えば、前記ステップの順序は変更することができ、又は幾つかのステップは並行して実行することができる。更に、ステップの間に他の方法ステップを挿入することもできる。斯かる挿入されるステップは、本明細書に記載されるような当該方法の改良を表すことができ、又は当該方法とは無関係とすることができる。更に、所与のステップは、次のステップが開始される前に完全に完了していなくてもよい。
本発明による方法は、プロセッサシステムに方法500を実行させるための命令を有するソフトウェアを用いて実行することができる。ソフトウェアは、当該システムの特定の副部分によりなされるステップのみを含むことができる。該ソフトウェアは、ハードディスク、フロッピーディスク、メモリ、光ディスク等の適切な記憶媒体に記憶することができる。該ソフトウェアは、有線若しくは無線に沿って、又は例えばインターネット等のデータネットワークを使用して信号として伝送することができる。該ソフトウェアは、ダウンロードのために及び/又はサーバ上での遠隔使用のために利用可能にすることができる。本発明による方法は、該方法を実行するために例えばフィールドプログラマブルゲートアレイ(FPGA)等のプログラマブルロジックを構成するように配されたビットストリームを用いて実行することができる。
本発明はコンピュータプログラムに、特に本発明を実施するように適合化された担体上又は担体内のコンピュータプログラムにも拡張することが理解されるであろう。該プログラムは、ソースコード、オブジェクトコード、中間ソースコード及び部分的にコンパイルされた形態等のオブジェクトコードの形態、又は本発明による方法の実施に使用するのに適した何らかの他の形態とすることができる。コンピュータプログラム製品に関する実施態様は、上述した方法のうちの少なくとも1つの処理ステップの各々に対するコンピュータ実行可能な命令を有する。これらの命令は、サブルーチンに分割することができ、及び/又は静的に又は動的にリンクすることができる1以上のファイルに記憶することができる。コンピュータプログラム製品に関する他の実施態様は、前述したシステム及び/又は製品のうちの少なくとも1つにおける手段の各々に対応するコンピュータ実行可能な命令を有する。
図6aは、コンピュータプログラム1020を含む書込可能部分1010を備えたコンピュータ読取可能な媒体1000を示し、該コンピュータプログラム1020はプロセッサシステムに一実施態様によるキー付きMAC方法を実行させるための命令を有する。コンピュータプログラム1020は、コンピュータ読取可能な媒体1000上に、該コンピュータ読取可能な媒体1000の物理的マークとして又は磁化により具現化することができる。しかしながら、任意の他の好適な具現化も同様に考えられる。更に、ここではコンピュータ読取可能な媒体1000は光ディスクとして示されているが、該コンピュータ読取可能な媒体1000は、ハードディスク、固体メモリ、フラッシュメモリ等の任意の好適なコンピュータ読取可能な媒体とすることもでき、記録不可能な又は記録可能なものとすることもできる。コンピュータプログラム1020は、プロセッサシステムに前記キー付きMAC方法を実行させる命令を有する。
図6bは、キー付きMAC方法の一実施態様によるプロセッサシステム1140の概略図を示す。該プロセッサシステムは、1以上の集積回路1110を有する。該1以上の集積回路1110のアーキテクチャは、図6bに概略的に示されている。回路1110は、一実施態様による方法を実行する及び/又はそのモジュール若しくはユニットを実施化するためのコンピュータプログラム要素を実行する処理ユニット1120(例えば、CPU)を有する。回路1110はプログラムコード、データ等を記憶するためのメモリ1122を有する。メモリ1122の一部は読取専用とすることができる。回路1110は、例えば、アンテナ、コネクタ又は両方等の通信要素1126を有することができる。回路1110は、当該方法において定義された処理の一部又は全てを実行するための専用の集積回路1124を有することができる。プロセッサ1120、メモリ1122、専用のIC1124及び通信要素1126は、相互接続部1130(例えば、バス)を介して相互に接続することができる。プロセッサシステム1110は、アンテナ及び/又はコネクタを各々用いて接触型及び/又は無接触型通信を行うように構成することができる。
例えば、一実施態様において、プロセッサシステム1140、例えば当該キー付きMAC装置は、プロセッサ回路及びメモリ回路を有することができ、プロセッサ回路はメモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、該プロセッサ回路は、インテルのCore i7プロセッサ、ARM Cortex-R8等とすることができる。一実施態様において、該プロセッサ回路はARM Cortex M0とすることができる。当該メモリ回路は、ROM回路又は不揮発性メモリ(例えば、フラッシュメモリ)とすることができる。該メモリ回路は、揮発性メモリ、例えばSRAMメモリとすることができる。後者の場合、当該装置は当該ソフトウェアを供給するように構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェース等を有することができる。
上述した実施態様は本発明を限定するというより解説するものであり、当業者であれば多くの代替実施態様を設計することができることに注意すべきである。
尚、請求項において括弧内に示される何れの符号も当該請求項を限定するものと見なしてはならない。動詞“有する”及びその活用形の使用は、請求項に記載されたもの以外の要素又はステップの存在を排除するものではない。単数形の要素は、複数の斯様な要素の存在を排除するものではない。本発明は、幾つかの別個の要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実施化することができる。幾つかの手段を列挙する装置の請求項において、これら手段の幾つかは1つの同一品目のハードウェアにより具現化することができる。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これら手段の組合せを有利に使用することができないということを示すものではない。
請求項において、括弧内の符号は例示的実施態様の図面における符号又は実施態様の式を示し、かくして、当該請求項の理解容易性を高める。これらの符号は当該請求項を限定するものと見なしてはならない。
参考文献
[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
100,101 キー付きメッセージ認証コード装置
110 メッセージ管理ユニット
120 状態初期化記憶部
130 入力メッセージを受信するための入力インターフェース
140 状態初期化ユニット
142 内側状態計算ユニット
144 外側状態計算ユニット
150 内側ハッシュユニット
152〜156 内側圧縮ユニット
160 外側ハッシュユニット
162〜164 外側圧縮ユニット
212 内側キーブロック
214 外側キーブロック
220 圧縮関数
221〜223 メッセージブロック
231〜233 第1圧縮関数
233’ 圧縮関数
242 初期化ベクトル(IV)
244 初期化ベクトル(IV)
252 事前計算状態
254 事前計算状態
261〜263 状態
270 圧縮関数
281 第2圧縮関数
290 キー付きMAC値
312 内側キーブロック
314 外側キーブロック
320 圧縮関数
321〜323 メッセージブロック
331〜333 第1圧縮関数
342 初期化ベクトル(IV)
344 初期化ベクトル(IV)
352 事前計算状態
354 事前計算状態
361〜363 状態
370 圧縮関数
381 第2圧縮関数
390 キー付きMAC値
412 エンコードされたキー
420 圧縮関数
470 圧縮関数
1000 コンピュータ読取可能な媒体
1010 書込可能部分
1020 コンピュータプログラム
1110 集積回路(複数の集積回路)
1120 処理ユニット
1122 メモリ
1124 専用の集積回路
1126 通信要素
1130 相互接続部
1140 プロセッサシステム

Claims (6)

  1. エンコードされた表現を用いて、入力メッセージのためのキー付きメッセージ認証コードを計算するキー付きメッセージ認証コード装置であって、
    前記入力メッセージを受信するための入力インターフェースと、
    前記入力メッセージを複数のメッセージブロックに分割し、前記複数のメッセージブロックの内側ハッシュの計算を実行し、且つ、外側ハッシュの計算を実行するプロセッサ回路であって、前記内側ハッシュの計算が、
    第1の状態を最初の第1の状態へ暗号キーに基づいて初期化すること、及び
    一連の第1圧縮関数を適用することであって、前記第1圧縮関数は前記最初の第1の状態及び前記複数のメッセージブロックのメッセージブロックを入力として取り込むと共に、新たな第1の状態を生成し、前記新たな第1の状態は前記一連の第1圧縮関数のうちの後続の第1圧縮関数に対する第1の状態として用いられ、前記一連の第1圧縮関数のうちの少なくとも最初の第1圧縮関数が前記最初の第1の状態を、エンコードされた表現の入力として取り込み、前記内側ハッシュの計算において前記一連の第1圧縮関数のうちの前記最初の第1圧縮関数の後の最後の圧縮関数が前記内側ハッシュとしてエンコードされていない表現の第1の状態を生成すること
    を有し、前記外側ハッシュの計算が、
    第2の状態を最初の第2の状態へ前記暗号キーに基づいて初期化すること、及び
    一連の第2圧縮関数を適用することであって、前記第2圧縮関数は前記最初の第2の状態及び前記内側ハッシュのブロックを入力として取り込むと共に、新たな第2の状態を生成し、前記新たな第2の状態は前記一連の第2圧縮関数のうちの後続の第2圧縮関数に対する第2の状態として用いられ、前記一連の第2圧縮関数のうちの少なくとも1つが前記最初の第2の状態を、エンコードされた表現の入力として取り込み、前記第2圧縮関数に統合された第2の状態を復元すること、
    を有するプロセッサ回路と、
    を有し、
    前記第1の状態は前記内側ハッシュの計算において圧縮関数を予め定められた初期化ブロック及び第1キーブロックに適用することのエンコードされた表現に初期化され、
    前記第2の状態は前記外側ハッシュの計算において圧縮関数を予め定められた初期化ブロック及び第2キーブロックに適用することのエンコードされた表現に初期化され、
    前記1以上の第2圧縮関数が、入力として、前記第2の状態をエンコードされた表現で且つ前記内側ハッシュのブロックをエンコードされていない表現で取り込む、
    キー付きメッセージ認証コード装置。
  2. 前記内側ハッシュの計算における前記一連の第1圧縮関数のうちの前記最初の第1圧縮関数の後の最後の圧縮関数が、エンコードされた状態を入力として取り込むと共に、状態をエンコードされていない表現で生成する、請求項1に記載のキー付きメッセージ認証コード装置。
  3. 前記プロセッサ回路が前記メッセージに、例えば第1メッセージブロックに、ノンスを含める、請求項1又は2に記載のキー付きメッセージ認証コード装置。
  4. 前記キー付きメッセージ認証コードがハッシュメッセージ認証コードである、請求項1から3の何れか一項に記載のキー付きメッセージ認証コード装置。
  5. 入力メッセージのためのキー付きメッセージ認証コードをエンコードされた表現を用いて計算するキー付きメッセージ認証コード装置の作動方法であって、
    前記キー付きメッセージ認証コード装置のプロセッサが、前記入力メッセージを受信すると共に、該入力メッセージを複数のメッセージブロックに分割するステップと、
    前記プロセッサが、前記複数のメッセージブロックの内側ハッシュの計算を実行するステップであって、前記内側ハッシュの計算が、
    前記プロセッサが、最初の第1の状態を、暗号キーに基づいて、圧縮関数を予め定められた初期化ブロック及び第1キーブロックに適用することのエンコードされた表現に初期化するステップ、及び
    前記プロセッサが、一連の第1圧縮関数を適用するステップであって、前記第1圧縮関数は前記最初の第1の状態及び前記複数のメッセージブロックのうちのメッセージブロックを入力として取り込むと共に、新たな第1の状態を生成し、前記新たな第1の状態は前記一連の第1圧縮関数のうちの後続の第1圧縮関数に対する第1の状態として用いられ、前記一連の第1圧縮関数のうちの少なくとも最初の第1圧縮関数が前記最初の第1の状態をエンコードされた表現の入力として取り込むステップ、
    を有し、
    前記プロセッサが、前記内側ハッシュの計算における前記一連の第1圧縮関数のうちの前記最初の第1圧縮関数の後の最後の圧縮関数が前記内側ハッシュとして前記新たな第1の状態をエンコードされていない表現で生成する、
    内側ハッシュの計算を実行するステップと、
    前記プロセッサが、外側ハッシュの計算を実行するステップであって、該外側ハッシュの計算が、
    前記プロセッサが、最初の第2の状態を、前記暗号キーに基づいて、圧縮関数を予め定められた初期化ブロック及び第2キーブロックに適用することのエンコードされた表現に初期化するステップ、及び
    前記プロセッサが、一連の第2圧縮関数を適用するステップであって、前記第2圧縮関数は前記最初の第2の状態及びエンコードされていない表現の前記内側ハッシュのブロックを入力として取り込むと共に、新たな第2の状態を生成し、前記新たな第2の状態は前記一連の第2圧縮関数のうちの後続の第2圧縮関数に対する第2の状態として用いられ、前記一連の第2圧縮関数のうちの少なくとも1つが前記第2の状態をエンコードされた表現の入力として取り込み、前記第2圧縮関数に統合された第2の状態を復元するステップ、を有する、
    外側ハッシュの計算を実行するステップと、
    を有する、キー付きメッセージ認証コード装置の作動方法。
  6. プロセッサシステムに請求項5に記載のキー付きメッセージ認証コード装置の作動方法を実行させるための命令を表す一次的又は非一時的データを有する、コンピュータ読取可能な媒体。
JP2020535636A 2017-12-28 2018-12-24 キー付きメッセージ認証コードのホワイトボックス計算 Active JP6884284B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17210820.1 2017-12-28
EP17210820.1A EP3506558A1 (en) 2017-12-28 2017-12-28 Whitebox computation of keyed message authentication codes
PCT/EP2018/086858 WO2019129772A1 (en) 2017-12-28 2018-12-24 Whitebox computation of keyed message authentication codes

Publications (2)

Publication Number Publication Date
JP2021507310A JP2021507310A (ja) 2021-02-22
JP6884284B2 true JP6884284B2 (ja) 2021-06-09

Family

ID=60813716

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020535636A Active JP6884284B2 (ja) 2017-12-28 2018-12-24 キー付きメッセージ認証コードのホワイトボックス計算

Country Status (5)

Country Link
US (1) US11502846B2 (ja)
EP (2) EP3506558A1 (ja)
JP (1) JP6884284B2 (ja)
CN (1) CN111656733A (ja)
WO (1) WO2019129772A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020159328A1 (ko) * 2019-02-01 2020-08-06 주식회사 아이씨티케이 홀딩스 인증 정보 처리 방법 및 장치와 인증 정보 처리 방법 장치를 포함한 사용자 단말
US20220329439A1 (en) * 2019-08-05 2022-10-13 Securify Bilisim Teknolojileri Ve Guvenligi Egt. Dan. San. Ve Tic. Ltd. Sti. Method for generating digital signatures
WO2021201779A1 (en) * 2020-03-31 2021-10-07 Agency For Science, Technology And Research Method and system for generating a hash-based message authentication code (hmac) based on white-box implementation
WO2023081222A1 (en) * 2021-11-03 2023-05-11 Arris Enterprises Llc White-box processing for encoding with large integer values
CN114124480B (zh) * 2021-11-08 2023-12-05 闪捷信息科技有限公司 通信的认证方法、服务器、客户端、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935528B2 (en) * 2008-06-26 2015-01-13 Microsoft Corporation Techniques for ensuring authentication and integrity of communications
WO2010102960A1 (en) * 2009-03-10 2010-09-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
CA2831367C (en) * 2011-03-31 2019-02-12 Irdeto B.V. Method and system for protecting execution of cryptographic hash functions
US9639674B2 (en) * 2014-12-18 2017-05-02 Nxp B.V. Using single white-box implementation with multiple external encodings
US10313129B2 (en) * 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions
US10171234B2 (en) * 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation

Also Published As

Publication number Publication date
WO2019129772A1 (en) 2019-07-04
US11502846B2 (en) 2022-11-15
EP3732822A1 (en) 2020-11-04
CN111656733A (zh) 2020-09-11
US20200366496A1 (en) 2020-11-19
EP3506558A1 (en) 2019-07-03
JP2021507310A (ja) 2021-02-22
EP3732822B1 (en) 2021-07-28

Similar Documents

Publication Publication Date Title
JP6884284B2 (ja) キー付きメッセージ認証コードのホワイトボックス計算
JP5911654B2 (ja) 乱数生成器及びストリーム暗号
CN108352981B (zh) 被布置用于计算目标块加密的密码设备
RU2696334C1 (ru) Устройство и способ вычисления блочного шифра
JP6517436B2 (ja) 暗号化デバイス及び符号化デバイス
JP7123959B2 (ja) 楕円曲線点乗算デバイス及び方法
US11310030B2 (en) Cryptographic device and method
WO2019043921A1 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
RU2710670C2 (ru) Криптографическая система и способ
JP6890589B2 (ja) 計算デバイス及び方法
CN107040370B (zh) 一种用于产生实施模幂运算的代码的装置
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
US20200328876A1 (en) Method for protecting a source of entropy used in countermeasures securing a white-box cryptographic algorithm
CN116094715A (zh) 加密数据的方法及相关产品
JP2021047371A (ja) 情報処理装置、情報処理方法及びプログラム
JP2017129779A (ja) 暗号生成装置、データ伝送システム、暗号生成方法及びデータ伝送方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200625

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200625

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200625

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210318

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210511

R150 Certificate of patent or registration of utility model

Ref document number: 6884284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250