JP6517436B2 - 暗号化デバイス及び符号化デバイス - Google Patents

暗号化デバイス及び符号化デバイス Download PDF

Info

Publication number
JP6517436B2
JP6517436B2 JP2018518641A JP2018518641A JP6517436B2 JP 6517436 B2 JP6517436 B2 JP 6517436B2 JP 2018518641 A JP2018518641 A JP 2018518641A JP 2018518641 A JP2018518641 A JP 2018518641A JP 6517436 B2 JP6517436 B2 JP 6517436B2
Authority
JP
Japan
Prior art keywords
shares
input message
encoded
share
states
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
JP2018518641A
Other languages
English (en)
Other versions
JP2018537704A (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 JP2018537704A publication Critical patent/JP2018537704A/ja
Application granted granted Critical
Publication of JP6517436B2 publication Critical patent/JP6517436B2/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/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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Description

本発明は、暗号化デバイス、符号化デバイス、暗号化方法、符号化方法、コンピュータプログラム、及びコンピュータ可読媒体に関する。
暗号化デバイスを構築する場合には、堅固な暗号プリミティブの選択だけでなく、サイドチャネルの防止についても気にかける必要がある。サイドチャネルを通じて、攻撃者は通常の入出力動作を超える暗号計算に関する情報を取得する。サイドチャネル攻撃は、暗号アルゴリズムの解析及び/又は総当たりだけではなく、暗号システムの物理的実装から得られる情報に基づく攻撃である。
特に強力なサイドチャネルは、いわゆるホワイトボックス攻撃モデルである。ホワイトボックス攻撃モデルでは、攻撃者はアルゴリズムの内部に実行中に完全にアクセスすることができる。具体的には、攻撃者は変数を監視することができ、実行中にデータを修正しさえする。秘密鍵などの秘密情報を保護することは、ホワイトボックスモデルでは特に困難である。
Goubin及びPatarinによる論文「DES and the Differential Power Analysis, The “Duplication” method」では、いくつかのサイドチャネル攻撃を防ぐ手法について提案がなされている。この論文では、変数vは、v=Σvとなるようなk個の変数v,...,vによって表される。この論文で検討されるサイドチャネルはマイクロコントローラの電力消費量である。
発明者はこの解決策がホワイトボックスモデルでは十分ではなく破られ得ることを見出した。したがって、ホワイトボックス攻撃モデルの下で暗号化関数の実装の耐性を向上させることが課題である。
入力メッセージについての鍵依存暗号化関数を計算する暗号化デバイスが提供される。暗号化デバイスは、
− 暗号化デバイスが鍵依存暗号化関数を計算するために作用する複数の変数を記憶するように構成されたデータストアであって、変数が複数のシェアに分散され、データストアにおいて複数の符号化済みシェアとして表され、符号化済みシェアがシェアとステートとの符号化であり、同一の変数に対応する複数のステートが、入力メッセージから複数のステートへの単射写像が存在するような、入力メッセージとの関係を有する、データストアと、
− 複数のルックアップテーブルを記憶するテーブルストアであって、ルックアップテーブルが1つ又は複数の変数の1つ又は複数の符号化済みシェアを入力とし、複数のルックアップテーブルが鍵依存暗号化関数を実装するテーブルネットワークを共に形成する、テーブルストアと、
− データストアに表された変数に複数のルックアップテーブルを適用することによって、入力メッセージに鍵依存暗号化関数を適用するように構成された制御ユニットと
を備える。
本明細書においてより完全に説明されるように、暗号化関数の実装に対する可能な攻撃は衝突攻撃である。衝突攻撃では、攻撃者は、2つの異なる入力メッセージであって、その両方について内部変数のいくつかが同一の値を有するようなものを発見しようとする。そのような発生は鍵に関する情報を与える。
符号化済みシェアは、変数のシェアと複数のステートとの両方を表す。入力メッセージから複数のステートへの単射写像が存在するので、2つの異なる入力メッセージであって、対応する2組の複数のステートが同一となるようなものは存在し得ない。ステートは符号化済みシェアの一部であるので、2つの異なる入力メッセージであって、対応する符号化済みシェアが同一となるようなものは存在し得ない。したがって、符号化済みシェアに対する衝突攻撃は回避される。結果として得られる暗号化デバイスは、ホワイトボックスモデルの下での攻撃に対してより弾力性がある。
また、暗号化デバイスは差分電力解析に対する保護メカニズムを提供する。ランダムな符号化は異なる発生値間の関係についての統計的解析の成功を不能にするが、依然として衝突に関する統計の成功を可能にする。後者が防止されるので、差分電力解析型の攻撃によって使用される統計的解析は妨害される。
一実施形態では、
− テーブルストアが、第1の複数のシェアに分散され、データストアに第1の複数の符号化済みシェアとして表される第1の変数と、第2の複数のシェアに分散され、データストアに第2の複数の符号化済みシェアとして表される第2の変数とを乗算するための乗算テーブルネットワークを記憶し、乗算テーブルネットワークが第1及び第2の複数の符号化済みシェアに作用して、第1及び第2の変数の積を表す第3の複数の符号化済みシェアを取得し、
− 乗算テーブルネットワークが、第1の複数のシェアのうちの第1のシェアと第2の複数のシェアのうちの第2のシェアとの積を計算するための1つ又は複数の外積テーブルサブネットワークを有し、外積テーブルサブネットワークが、対応する符号化済みシェアからの第1のシェア及び第2のシェアの積と、入力メッセージからのランダム化関数との和を計算する。
本明細書で説明されるように、変数への計算は、符号化済みシェアへの計算に変換され得る。具体的には、符号化済みシェアとして表される2つの変数が乗算される。乗算の一実施形態では、外積、すなわち、第1の変数(たとえば、xと表される)のシェアと、第2の変数(たとえば、yと表される)のシェアとの積が必要とされる。この計算を難読化するために、ランダム性のソースが使用される。本発明者は、乱数発生器がソフトウェアで容易に識別及び回避されて、この難読化が無効になることを見出した。この問題は、入力メッセージからのランダム化関数を使用することで回避される。入力メッセージからのランダム化関数は、暗号化デバイス内で固定される。ランダム化関数は、暗号化デバイスが作成されるときに、ソフトウェア実装の場合にはソフトウェアのコンパイル時に、決定される。ランダム化関数が固定されているので、他のテーブルネットワーク内で容易に識別することはできない。同一の入力が2回使用される場合、ランダム化関数は同一の結果を生成するので、この関数はテーブルネットワークでは目立たない。
単射写像が存在することを保証する1つの手法は、鍵が使用される前であっても入力メッセージを符号化することである。次いで、単射写像は、変数wが作成される時点までの計算全体にわたって維持される。入力メッセージの符号化は、暗号化デバイスの外部のコンピュータによって行われる。たとえば、入力メッセージは、暗号化デバイスで復号されるように作成されるコンテンツを表す。入力メッセージは、複数組の符号化済みシェアの形態で暗号化デバイスによって受信される。しかしながら、たとえば、衝突攻撃を通じて鍵を公開することを保護するために、符号化は同様に暗号化デバイスにおいて行われる。
請求項1に記載の暗号化デバイスと共に使用するための、入力メッセージを符号化するための符号化デバイスが提供される。符号化デバイスは、
− 入力メッセージを受信するための受信ユニットであって、入力メッセージが複数の入力パートを有する、受信ユニットと、
− 入力メッセージの各パートについて、
− 入力メッセージのパートを複数のシェアに分散させることを、複数の分散関数を入力メッセージに適用して複数のシェアを取得することによって行い、分散関数に適用された結合関数が、入力メッセージのパートに等しく、
− 入力メッセージからの単射写像を適用して複数のステートを取得し、複数のシェア及び複数のステートの数が同一であり、
− 複数のシェアの各シェアを複数のステートの対応するステートと共に符号化して、パートを表す複数の符号化済みシェアを取得する
ように構成された符号化ユニットと
を備える。
符号化デバイスは、必須ではないが、暗号化デバイスに含まれる。
暗号化デバイス及び符号化デバイスは電子デバイスである。たとえば、それらはモバイル電子デバイス、たとえば、電話又はタブレットである。それらは、セットトップボックス、コンピュータ、メディアプレーヤー、テレビなどである。
本明細書に記載の暗号処理及び符号化の方法は、広範囲の実用的なアプリケーションにおいて適用される。そのような実用的なアプリケーションは、デジタルコンテンツ管理、セキュアバンキング、アクセス制御、電子ストレージの保護などを含む。
本発明による方法は、コンピュータ上でコンピュータ実施される方法として、若しくは専用ハードウェアで、又はその両方の組合せで実装される。本発明による方法の実行可能コードは、コンピュータプログラム製品に記憶される。コンピュータプログラム製品の例は、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、前記プログラム製品がコンピュータ上で実行された場合に本発明による方法を実施するためのコンピュータ可読媒体に記憶された非一時的プログラムコード手段を含む。
好ましい一実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全てのステップを実施するように適合されるコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に具現化される。
本発明の別の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様はコンピュータプログラムが、たとえば、AppleのApp Store、GoogleのPlay Store、又はMicrosoftのWindows Storeにアップロードされた場合、及びコンピュータプログラムが、そのようなストアからダウンロード可能である場合に使用される。
本発明のさらなる詳細、態様、及び実施形態が、単なる例として図面を参照して説明される。図中の要素は簡潔かつ明瞭にするように示されており、必ずしも縮尺通りに描かれていない。図中では、説明済みの要素に対応する要素は同一の参照符号を有し得る。
変数を符号化する一例を概略的に示す図である。 暗号化デバイスの一実施形態の一例を概略的に示す図である。 符号化デバイスの一実施形態の一例を概略的に示す図である。 テーブルネットワークの一実施形態の一例を概略的に示す図である。 テーブルネットワークの一実施形態の一例を概略的に示す図である。 暗号化方法のフローチャートを概略的に示す図である。 符号化方法のフローチャートを概略的に示す図である。 DESブロック暗号のフローチャートを概略的に示す図である。 一実施形態によるコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。 一実施形態によるプロセッサシステムの表現を概略的に示す図である。
本発明は多くの異なる形式の実施形態が可能であるが、図面に示され、本明細書で詳細に説明されるのは1つ又は複数の特定の実施形態であって、本開示が本発明の原理の例示と見なされるべきであり、本発明を図示及び説明される特定の実施形態に限定するものではないという了解の下でのものである。
以下では、理解のために、動作中の実施形態の要素が説明される。しかしながら、それぞれの要素が、それらによって実施されるように記載された機能を実施するように構成されることは明らかであろう。
さらに、本発明は実施形態に限定されず、本発明は上述の、又は相異なる従属請求項に記載された各々の新規の特徴又は特徴の組合せの中にある。
図2は暗号化デバイス200の一実施形態の一例を概略的に示す。暗号化デバイス200の態様の可能な実施形態が図1〜図4を参照して説明される。
暗号化デバイス200は、入力メッセージMについて鍵K依存暗号化関数を計算するように構成される。暗号化関数はfと表される。計算の結果は出力メッセージf(M)である。鍵は関数の明示的な入力である必要はなく、たとえば部分評価を使用して内部に埋め込まれることに留意されたい。
鍵依存暗号化関数はいわゆる衝突攻撃に対して脆弱である。そのような攻撃では、攻撃者は、暗号化関数fの計算中のある時点でいくつかの内部鍵依存変数wが同一の値を有する2つの異なる入力メッセージM及びM’を発見することを試みる。
入力メッセージ及び鍵の両方に依存する内部変数wを考える。入力メッセージ、鍵及び変数の間の関係をw=g(M)と表すことにする。攻撃者がg(M)=g(M’)となる2つのメッセージM及びM’を発見したと仮定する。この情報は、たとえば相互情報量解析に基づく相関攻撃を使用して不正利用される。具体的には、攻撃者はこのとき式g(M)=g(M’)を有しており、この式を満たさないいかなるKも鍵ではあり得ない。さらに、鍵Kのみが未知であるので、Kについて解くことは直接、秘密鍵に関する情報を提供する。この攻撃をさらに悪化させるように、多くのブロック暗号は、秘密鍵Kの比較的少数のビットに依存する初期のラウンド中に特に変数を有する。
異なる入力メッセージに対して同一の値を有する内部変数は、サイドチャネルを使用して明らかにされる。たとえば、計算が実行されるハードウェアを探査することによる。暗号化機能がソフトウェアで実行される場合、衝突攻撃は特に強力であり、その理由は、攻撃者はいくつかの内部変数が同一の値を有するか否かをより簡単に検証するためである。攻撃者は、たとえば、スマートフォン又はデスクトップコンピュータなどのコンピューティングデバイス上で動作するソフトウェアに対して完全な制御を取得することができる。
鍵依存暗号化関数は、たとえば、入力メッセージMを暗号化又は復号するためのブロック暗号である。他の例は、鍵付きハッシュ、メッセージ認証機能、ストリーム暗号などを含む。ブロック暗号の一例が図6に与えられている。
図6は、FIPS46−3(引用により本明細書に組み込まれる)からコピーされたものであるが、特にDESブロック暗号を示し、一般にはFeistelブロック暗号を示す。ブロック暗号は、ブロック暗号ラウンドのシーケンスが作用するブロック暗号入力605を受信し、DESの場合は16ラウンドが存在し、トリプルDESでは48である。第1のブロック暗号ラウンドはブロック暗号入力605に作用し、次のラウンドのそれぞれは前のラウンドの出力に作用する。ブロック暗号ラウンドでは、ラウンド関数が前のラウンドの出力の一部に適用される。ブロック暗号入力は、DESの場合、64ビットのデータサイズを有する。各ブロック暗号ラウンドは、そのブロック暗号ラウンド入力を修正して、ブロック暗号ラウンド出力を生成する。全てのブロック暗号ラウンド入力及び出力は同一のデータサイズを有する。データ暗号化規格には、64ビットブロックの鍵付きブロック符号化が記述されている。この鍵は公式には64ビットであるが、実際にはそのうちの56ビットのみがラウンド鍵KからK16が依存する暗号化で使用される。中間データの大部分は入力メッセージ及び鍵の両方に依存し、これが上述のように不正利用されることに留意されたい。たとえば、Sボックスの出力は衝突攻撃に対して脆弱である(Sボックスは図6に別途示されていない)。たとえば、ラウンド関数(図6では「f」として図示)の出力を表す変数は、衝突攻撃に対して脆弱である。
図6のブロック暗号の単純な実装に対する潜在的な改良は、変数wを場合によりステート変数sと共に符号化することである。wを直接計算する代わりに、そのような実装は値x=Enc(w,s)に作用する。しかしながら、それ自体の符号化は衝突を防がない。符号化済み変数xが同一となる2つの入力メッセージM及びM’は、依然として同一の式g(M)=g(M’)を生じさせる。
もう1つの潜在的な改良は、変数wを複数のシェアwに、たとえば、
Figure 0006517436
となるように分散させることである。しかしながら、シェアwの同時衝突は、依然としてwの衝突へとつながり、これは同一の情報量を漏洩する。衝突はより稀になるが、排除はされない。
衝突攻撃が成功するためには、鍵が暗号化されているか、又は実装内に単に暗黙的に存在する、たとえば、部分評価によって埋め込まれているかは関係ないことに留意されたい。衝突攻撃がデータの符号化を迂回する場合、ホワイトボックス暗号にとって特に厄介であり、その理由は、たとえば変数、鍵、及び定数などの内部データの符号化に依存することが多いためである。
本発明者は重要なさらなる問題があることを認識した。ソフトウェア実装では、擬似乱数発生器(RNG:pseudo−random number generator)を使用してwのシェアの一部を生成する傾向があるが、これは賢明ではない。攻撃者は、RNGの出力を非ランダム値に置き換えることによってランダム性を除去することができる。ソフトウェア実装が真性乱数発生器を呼び出す場合であっても、これは傍受される。原理的には、この攻撃はハードウェア実装でも実施され得るが、これはかなり困難になる。
以下の例はこの問題を示す。鍵依存暗号化関数の実装が変数wをn個のシェアに分散させるが、シェアの大部分にはランダム値を使用することを仮定する。たとえば、wからwn−2がソフトウェアの乱数発生器で生成され、
Figure 0006517436
であることを仮定する。情報理論的には変数wがn個のシェアに完全に分散されているように見え、すなわち、wに関する情報を与えるn個のシェアのサブセットはないが、この選択肢は依然として衝突攻撃に対して脆弱である。攻撃者は乱数源を固定して、wからwn−2に定数値を与える。この変更後、wn−1の衝突は、鍵に関する情報を取得するのに十分である。wn−1のみの衝突を得ることは、全てのシェアの同時衝突よりもはるかに稀ではない。
乱数源はソフトウェアで、そのソフトウェアを同一の入力に対して複数回実行することによって簡単に認識されることに留意されたい。相違する実行は乱数発生器を示す。ソフトウェアプログラムのそのような解析も自動化される。
図1は変数wを符号化する手法を示し、これはその変数の衝突を排除することができる。図1は変数110、wを示し、wの衝突が回避されるように、暗号化デバイス200などの暗号化デバイスでの使用のためにwが符号化される手法を示す。
変数110、wは複数のシェアwに分散される。wのビットサイズをkと呼ぶことにする。一実施形態では、シェアwのビットサイズはwのビットサイズに等しい。異なる変数は異なるビットサイズを有し得る。たとえば、kは4以上である。一実施形態では、k=4、5、6、7、8又はそれ以上である。図示されているのはシェア121、122及び123である。
シェアは、
Figure 0006517436
となるように選択される。一実施形態では、この総和はXOR関数を使用して総和をとるが、他の選択肢も可能である。たとえば、総和は、算術加算モジュロ2を使用する。
より一般的には、シェア(w)を変数(w)に写像する結合関数(d(w,...,wn−1)=w)が定義される。結合関数は上述のXOR又は算術加算である。結合関数は、任意の単一のシェア(w)から変数(w)への写像であって、他のシェア(w,...,wk−1,wk+1,...,wn−1)の値を固定することによって得られる写像が全単射であるという特性を有する。すなわち、関数
Figure 0006517436
は全単射であり、要素
Figure 0006517436
は固定値を表す。この特性は、wに関する情報を与えるシェアのサブセットが存在しないことを保証する。多数のそのような結合関数が存在する。たとえば、dはシェアの任意の線形結合
Figure 0006517436
であり、ここで係数αjは奇数であり、総和は算術加算モジュロ2を使用する。結合関数は多項式である。
図1は複数のステートsをさらに示す。図示されているのはステート131、132及び133である。シェア121〜123の数はステート131〜133の数と同一である。ステートは変数の符号化に冗長性を導入する冗長データである。シェアのそれぞれはステートの1つと共に並べられ、符号化済みシェアx=Enc(w,s)に符号化される。一実施形態では、符号化Encは異なる。たとえば、符号化Encはコンパイル時にランダムに選択される。符号化は、wに関して可逆である限り、すなわち、Enc及びxが既知であればシェアwが回復され得る限り、全単射であることは厳密には必須ではない。それにもかかわらず、実施形態では、符号化Encは全単射である。後者は実装においてより現実的な選択肢であり、解析を簡素化する。どの変数がどの符号化によってどの時点で符号化されるかが決定されると、テーブルは符号化を考慮に入れるように単純に適合される。
図1は、シェア121及びステート131が符号化161を介して符号化済みシェア141へと符号化されることを示す。また、シェア122及びステート132は符号化162を介して符号化済みシェア142へと符号化され、シェア123及びステート133は符号化163を介して符号化済みシェア143へと符号化される。変数wを表すために共に符号化されるステート及びシェアを、その変数に対応するものとして参照することにする。
複数の符号化済みシェアが結果であり、そのうち、符号化済みシェア141、142、及び143が図示されている。変数wは暗号化デバイス200において複数の符号化済みシェアとして表される。未符号化シェア121〜123もステート131〜133も暗号化デバイス内に存在してはならない。
本発明者は、ステートを特別な手法で選択することによりwの衝突が回避されることを認識した。すなわち、全ての符号化済みシェア141〜143が同一となるような2つの異なる入力メッセージM及びM’は存在しない。
同一の変数wに対応する複数のステートsは、入力メッセージMから複数のステートへのΣと表される単射写像152が存在するように選択される(Σ(M)=(s,...,sn−1)。単射写像は、M=M’の場合にのみΣ(M)=Σ(M’)となる特性を有する。特に、Σは全単射となるように選択され、その理由は、このより厳しい条件が単射性を含意するためである。図1は、複数のステート131〜133が入力メッセージ100、M及び単射写像Σ、152にどのように依存するかを示す。
ステートが入力メッセージM、100を符号化する場合、異なるMは異なる符号化済み変数x,...,xn−1につながる。これは次のようにして行われ得る:n・l≧bitsize(M)となるような整数lを選択する。ここで、nはステートの数を示し、lはステートのビットサイズである。シェアの数もnである。したがって、同一の変数wに対応する複数のステートsの合計ビットサイズは、少なくとも入力メッセージMのビットサイズと同一の大きさである。符号化Encは、たとえばランダムに、全単射関数
Figure 0006517436
から選択される。ステートのビットサイズはシェアのビットサイズと等しい必要はない。
DESを第1の例として取り上げる。DESでは、入力メッセージは64ビットである。内部変数が4ビット長であり、6個のシェアに分散されると仮定する。この場合、ステートのサイズは少なくとも
Figure 0006517436
ビットでなければならない。この場合、変数は各4+11=15ビットの6つの符号化済みシェアで符号化される。この場合、ステートの合計ビットサイズは6・11=66ビットとなる。66は入力メッセージビットサイズ64よりも大きいので、写像Σは単射となるが全単射ではない。
同様にDESを例として使用して、内部変数が4ビット長であり、16個のシェアに分散されると仮定する。この場合、ステートのサイズは少なくとも
Figure 0006517436
ビットでなければならない。ステートに対してビットを使用すると、この場合、符号化済みシェアは4+4=8ビットになる。同一の変数に対応するステートの合計ビットサイズは16*4=64ビットである。これは入力メッセージのビットサイズに等しいので、単射写像は全単射である。一般に、シェアの合計ビットサイズ、たとえば、nkが、入力メッセージMのビットサイズに等しい場合、シェアのビットサイズはシェアのビットサイズと等しくなる。
さらなる例として、入力メッセージのビットサイズが128のブロック暗号AESを考える。変数が16個のシェアに分散される場合、ステートは128/16=8ビットである。シェアも8ビットである場合、符号化済みシェアは16ビットになる。
写像152は、大部分又は全ての変数について暗号化関数の実装において明示的である必要はない。たとえば、符号化済み変数が入力メッセージとの必要な単射関係を有すると、符号化済み変数のシェア部分wに実施される演算は、単射関係を保存するステート部分に対して冗長な演算を同時に実施する。符号化済み領域で計算が行われるので、ステートへの計算はシェアへの計算から分離することができない。
たとえば、第1及び第2の変数w及びwの両方が上記のように複数の符号化済みシェア
Figure 0006517436
及び
Figure 0006517436
として符号化されることを考える。w及びwへの演算gが第3の変数w=g(w,w)を計算すると仮定する。変数wは符号化済みシェア
Figure 0006517436
と表される。一実施形態では、
Figure 0006517436
に符号化されたステートは、
Figure 0006517436
又は
Figure 0006517436
に符号化されたステートに等しい。この場合、入力が入力メッセージMとの必要な関係を有する場合は、出力wも同様になる。このようにして、必要な関係はその計算全体にわたって保存される。その演算は、その演算を実施するためのテーブルネットワークとして実装され、このテーブルネットワークは暗号化関数を実装するテーブルネットワークのサブネットワークである。
入力のうちの1つのステートに等しい第3の変数のステートを取得する代わりに、さらなる単射写像Σが適用され、たとえば、
Figure 0006517436
であり、ここでiは入力変数の1つを示し、たとえば、i=1又は2である。1つのステートのみを操作するn個の全単射の集合としてΣを構築することによって、これはテーブルネットワークを拡大せず、その理由は、その写像が既存のテーブルと統合されるためである。
したがって、一実施形態では、冗長演算は全単射演算である。全単射関数は、たとえばコンパイル時にランダムに選択される。一実施形態では、入力メッセージのみに依存する変数について、入力メッセージの単射関数としてステートが得られる。シェアが入力メッセージと単射関係を有する符号化済み変数に依存する変数について、新たなシェア
Figure 0006517436
が、全単射関数の集合(g)を符号化済み変数の対応するシェアに適用することによって得られる。
Figure 0006517436
第3の変数のステートを入力変数のステートの両方に依存させ、依然として入力メッセージとの必要な関係を維持させることが可能である。しかしながら、これはテーブルネットワークを拡大する。
初期変数、たとえば、入力メッセージから直接得られるものなどは、正しい符号化された形式で暗号化デバイス200によって受信される。代替的には、デバイス200は後述の符号化デバイスを備える。
変数wの符号化は、暗号化関数の実行中に符号化された値の衝突が存在し得ないことを保証する。したがって、この時点では衝突攻撃は不可能である。入力メッセージだけでなく鍵にも依存する全ての変数が暗号化関数の計算全体にわたってこのように符号化される場合、衝突は完全に回避される。さらに、このシステムは単純で、効率的で、証明可能で、エレガントである。
実際的な一実施形態では、符号化済みシェアによる表現以外のwの表現はない。さらに、より多くの機密変数がこのように保護される場合、保護はより効果的である。鍵及び入力メッセージの両方に依存する全ての変数は保護されることが好ましい。衝突攻撃を防止するために、鍵による演算が実施される前に、入力メッセージが符号化済みシェアとして表される必要はない。しかしながら、単射写像が存在し維持されることを保証することは、鍵が使用される前であっても、入力メッセージを複数組の符号化済みシェアとして符号化させることによって単純化される。
図2に戻ると、暗号化デバイス200は、暗号化デバイスが暗号化関数を計算するために作用する複数の変数を記憶するように構成されるデータストア220を備える。変数240はデータストア220において複数の符号化済みシェアとして表される。図示されているのは符号化済みシェア241、242、及び243である。変数は両方とも複数のシェアに分散され、各シェアはステートと共に符号化される。図1を参照して説明されたように、入力メッセージ(M)から複数のステートへの単射写像(Σ)が存在する。
暗号化デバイス200は、複数のルックアップテーブルを記憶するテーブルストア230を備える。図2に示されているのは、ルックアップテーブル231、232及び233である。ルックアップテーブルの少なくともいくつかは、1つ又は複数の変数の1つ又は複数の符号化済みシェアを入力とする。一実施形態では、ルックアップテーブルは、2つの異なる変数からの少なくとも1つの符号化済みシェアを入力とする。複数のルックアップテーブルは共に、暗号化関数を実装するテーブルネットワークを形成する。
テーブルネットワークは、ホワイトボックス暗号自体から知られている。たとえば、Chowらによる「White−box cryptography and an AES implementation」を参照されたい。テーブルネットワーク420の一例が図4aに示されており、この場合、外積を計算するためのテーブルネットワークである。
テーブルネットワークは、1つ又は複数の入力、たとえば入力410を受信し、1つ又は複数の出力、たとえば出力430を生成する。テーブルネットワーク420には、複数のルックアップテーブルが示されており、図示されているのはテーブル421〜421である。テーブルは、入力410から直接的に、及び/又は他のテーブルの出力から入力を受け取る。テーブルは、1つの入力、2つの入力、又は3つ以上の入力を受け取る。
未符号化変数wへの計算を複数のシェアとして符号化された変数wへの計算に変換する便利な手法が、Carletらによる「Higher−Order Masking Schemes for S−boxes」に提供されている。この論文は、衝突攻撃も、ステートと併せた符号化も論じていない。この論文はさらにCarletと呼ばれる。Carletは、複数のシェアとして符号化された変数の衝突を防がない。
以下、たとえば関数値S(w)を計算するための変数wへの計算が、複数のシェアに符号化された変数wへの計算に変換される手法が説明される。関数Sは暗号化関数の計算の任意の内部ステップ、たとえば加算、乗算、Sボックスなどである。シェアのS(w)を計算するテーブルネットワークを構築する手法を示す。まず、ここではSが単一の入力wを有する場合を考える。複数のステートが同様に扱われ得る。また、最初はステートを無視し、後でステートが追加され得る手法を示す。
wがn個のシェアw,...,wn−1で表される場合、その結果の変数にwと同一の保護を与えるために、S(w)もn個のシェアによって表すようにしたい。これは以下の事実を利用することによって、任意の関数に対して可能である。
説明のために、まず、値S(w)もwのようにkビットの数であると仮定する。kビットの数は有限のガロア体
Figure 0006517436
の要素であり、関数Sは
Figure 0006517436
上の関数であると考えられ得る。有限体の全ての関数は多項式であるため、
Figure 0006517436
上の任意の関数Sに対して、係数
Figure 0006517436
が存在し、これは任意のwについて、
Figure 0006517436
が成立するものである。
多項式は、以下のようなシェアへの計算として表される。シェアがX=(x,...,xn−1)及びY=(y,...,yn−1)によって与えられるとする。簡単のため、シェアの和が未符号化変数と等しいと仮定する。X及びYの和はシェアx+yで符号化され得る。スカラー倍αXはシェアαxで符号化される。最後に、ZをX及びYの積とする。0≦i<j≦n−1について、値ri,j及びrj,iを定義する。
たとえば、ランダムなkビット列を選択することにより、ri,jに対して、
Figure 0006517436
のランダムな要素をとる。一実施形態では、ri,jについての乱数は、コンパイル時に入力メッセージMから
Figure 0006517436
へのランダム化関数Ri,jを選択し、ri,j=Ri,j(M)を設定することによって得られる。後者は実行時に乱数発生器への依存が回避されるという利点を有する。コンパイル時と呼ばれる、テーブルネットワークが構築されるときにのみ、ランダム性のソースが必要とされる。Carletは実行中にランダム性に依存することに留意されたい。これは実行中の乱数源の操作までCarletを開放する。具体的には、乱数発生器は傍受され定数値に置き換えられる。
j,i=(x+ri,j)+xをとり、ここでの計算の順序は重要であり、括弧で示されている。ここで、0≦i≦n−1について、
Figure 0006517436
をとる。
外積テーブルサブネットワークはrj,iを計算する。これらのテーブルは2つの外積x及びxを計算する。
一実施形態では、ri,jを計算するために計算するランダム化関数Ri,jは、入力メッセージを入力とするテーブルネットワークとして実装される。これは実行中に乱数源が必要となるのを回避する。
シェアzはこのときX及びYの積を表す。加算、スカラー乗算及び乗算演算を使用して、Sの多項式表現はシェアへの演算として表される。次いで、シェアへの演算は、1つ又は複数のシェア及び/又は乱数を入力とするルックアップテーブルとして実装される。
j,iを計算するための可能なテーブルネットワーク420が図4aに示されている。テーブル421〜424は協力してrj,iを計算する。テーブルネットワーク420への入力は、参照符号410に示されている。テーブルネットワーク420の出力は、参照符号430に示されている。
たとえば、テーブル421及び422はそれらの入力を乗算するように構成され、テーブル423及び424はそれらの入力を加算するように構成される。各テーブルが異なる符号化を使用し得ることに留意されたい。
図4bは乗算テーブルネットワーク440の一実施形態の一例を概略的に示す。乗算テーブルネットワーク440は、上記で与えられた式を使用してZ=(z,...,zn−1)を計算するように構築される。乗算テーブルネットワーク440は、データストア220に第1の複数の符号化済みシェア(x)として表される変数Xと、データストア220に第2の複数の符号化済みシェア(y)として表される第2の変数Yとを乗算するように構成される。乗算テーブルネットワークは、第1及び第2の複数の符号化済みシェア(x、y)に作用し、第1及び第2の変数の積を表す第3の複数の符号化済みシェア(z)を取得する。乗算テーブルネットワーク440は、暗号化関数を計算するためのテーブルネットワークの一部である。
乗算テーブルネットワーク440は、外積xを計算するための外積テーブルサブネットワークを含む。一実施形態では、外積は2つ一組、x+xyで計算される。たとえば、乗算テーブルネットワーク440はテーブルネットワーク420を含む。乗算テーブルネットワーク440は、1つ又は複数のランダム化関数Ri,jを計算するためのテーブルネットワーク450をさらに含む。図4bにおいて、テーブルネットワーク450は入力メッセージ110に依存する。この依存性は破線で示されており、これはデータストア220に記憶された変数などの中間物を介して依存性が得られることを示す。テーブルネットワーク440はその入力を取得し、その出力をデータストア220に記憶する。
シェアに作用するテーブルは、符号化済みシェアに作用するテーブルに変換される。符号化済みシェアxについて、Enc(t(x),s(x))=xとなるようにs及びtを定義する。関数s及びtは、xからそれぞれステート及びシェアを取得する。t(x)に対するテーブルTを定義する。次いで、Enc’(T(t(x)),P(s(x)))は、xのシェア部分のテーブルTとステート部分の関数Pとを実装するxのテーブルを定義する。関数Pは冗長であり、コンパイル時などにテーブルネットワークを作成する場合に選択される。たとえば、Pは恒等関数である。複数の入力に対して同様の構成が可能である。ここで使用される符号化Encは入力符号化とも呼ばれる。符号化Enc’は出力符号化と呼ばれる。テーブルの出力に使用される出力符号化が、前記出力を入力として使用した次のテーブルの入力符号化と同一である限り、テーブルの入力及び出力符号化は同一である必要はない。
データストア220及びテーブルストア230は電子メモリである。それらは同一のメモリの2つの部分である。テーブルストア230は不揮発性ストレージである。データストア220は揮発性ストレージである。
暗号ユニット200は、複数のルックアップテーブルをデータストアに表された変数に適用することによって、暗号化関数を入力メッセージに適用するように構成される制御ユニット210を備える。たとえば、テーブルストア230は、テーブルがどの順番でどの変数に適用されるかを示す命令を含む。
暗号ユニット200はネットワークインタフェース250を備える。ネットワークインタフェース250は、コンピュータネットワークを介して符号化されたデータを受信するように構成される。たとえば、暗号化デバイス200は、暗号化されたデータ、たとえば、暗号化されたコンテンツを受信し、これは暗号化デバイス200によって復号される。ネットワークインタフェース250を介して受信される入力は、たとえば上述したように、符号化済みシェアとして表される。これは、符号化がデバイス200の内部で行われるので、必要ではない。
図3は符号化デバイス300の一例を示す。符号化デバイス300は、請求項1に記載の暗号化デバイスと共に使用するために入力メッセージMを符号化するように構成される。符号化デバイス300は入力メッセージMを受信するための受信ユニットを備える。入力メッセージは複数の入力パートM=(m,m,...)を含む。たとえば、複数のパートはニブル又はバイトである。一実施形態では、パートのビットサイズは4と8との間である(包含的)。メッセージMはメッセージパートの連結である。
符号化デバイス300は符号化を実施する符号化ユニット320を備える。符号化ユニット320は入力メッセージMの各パートを別々に符号化する。したがって、入力メッセージMの各パートmについて、符号化ユニットは以下を実施する。
入力メッセージMのパートmは複数のシェアに分散され、これは、複数の分散関数
Figure 0006517436
を入力メッセージに適用して、複数のシェアを取得することによって行われる。
Figure 0006517436
Mに適用された分散関数
Figure 0006517436
に適用された結合関数は、入力メッセージのパートmに等しい。
Figure 0006517436
具体的には、結合関数がXOR又は算術和である場合、分散関数
Figure 0006517436
の総和は入力メッセージMのパートmと等しく、したがって、
Figure 0006517436
となる。
たとえば、偶数個のシェアが存在する場合、分散関数はi≠jについて
Figure 0006517436
として選択され、
Figure 0006517436
である。この例では、加算はXORである。他の多くの可能性があり得る。たとえば、所与のパートの分散関数のうちの1つを除く全てがランダムに選択され、最後のものが補正項、たとえば、Mからmへの投射関数から他の分散関数を引いたものとして計算される。
また、符号化ユニット320は、入力メッセージMからの単射写像Σを適用して複数のステート
Figure 0006517436
を取得し、複数のシェア及び複数のステートの数が同一である。一実施形態では、
Figure 0006517436
であり、この選択肢は、入力メッセージMがステートに符号化されることを明確に保証する。全てのシェアの連結は、入力メッセージMの単射写像である。
最後に、複数のシェアの各シェアは、複数のステートの対応するステートと共に符号化され、パートmを表す複数の符号化済みシェア
Figure 0006517436
が得られる。たとえば、符号化ユニット320は、
Figure 0006517436
を計算する。
このステップの後、パートmは複数の符号化済みシェア
Figure 0006517436
に符号化されて、入力メッセージ全体がステートの一部として、符号化済みシェアに符号化される。
暗号化関数を実施するテーブルネットワークは、入力メッセージと、変数に対応する符号化済みシェアのステートとの間の関係を保存するように構成される。符号化済み変数の組の衝突はステートの衝突を意味するので、これは異なる入力メッセージの衝突が不可能であることを意味する。
さらなる例として、符号化ユニットにおいてMをステートに写像するために使用される単射写像Σは、複数のより小さい全単射関数から構成される。たとえば、単射写像Σは複数のステート関数
Figure 0006517436
を含む。複数のステート
Figure 0006517436
を取得することは、複数のステート関数
Figure 0006517436
をそれぞれの複数の入力パートに適用することを含み、
Figure 0006517436
ここで、複数のステート関数は全単射である。たとえば、
Figure 0006517436
である。これは全単射、ひいては単射関数を作成するための特に簡単な手法である。より多くのステートが満たされる必要がある場合、より多くのステート関数が追加され、その場合、関数Σは全単射ではなく厳密に単射になる。
典型的には、デバイス200及び300はそれぞれ、デバイス200及び3000に記憶された適切なソフトウェアを実行するマイクロプロセッサ(図1〜図4には図示せず)を備え、たとえば、そのソフトウェアは対応するメモリ、たとえばRAMなどの揮発性メモリ、又はフラッシュなどの不揮発性メモリ(図1〜図4には図示せず)にダウンロード及び/又は記憶される。或いは、デバイス200及び3000は、たとえばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックに全体的又は部分的に実装される。デバイス200及び300は、いわゆる特定用途向け集積回路(ASIC)、すなわち、それらの特定の用途向けにカスタマイズされた集積回路(IC)として、全体的又は部分的に実装される。たとえば、回路は、たとえば、Verilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装される。
一実施形態では、デバイス200は、データストア回路及びテーブルストア回路、たとえば電子メモリ、及び制御ユニット回路を備える。回路は本明細書に記載された対応するユニットを実装する。回路はプロセッサ回路及び記憶回路であり、プロセッサ回路は記憶回路内で電子的に表される命令を実行する。回路もFPGA、ASICなどである。システムは追加の回路、たとえば、ネットワークインタフェース回路などを備える。
図5aは、入力メッセージMについての鍵K依存暗号化関数f、f(M)を計算するように構成された暗号化方法500を示すフローチャートを示す。暗号化方法500は、
− 暗号化デバイスが鍵K依存暗号化関数を計算するために作用する複数の変数wを記憶するステップ510であって、変数wが複数のシェアwに分散され、データストアにおいて複数の符号化済みシェアxとして表され、符号化済みシェアがシェアwとステートsとの符号化x=Enc(w,s)であり、同一の変数wに対応する複数のステートsが、入力メッセージMから複数のステートへの単射写像Σが存在するようなΣ(M)=(s,...,sn−1)、入力メッセージMとの関係を有する、記憶するステップ510と、
− 複数のルックアップテーブルを記憶するステップ520であって、ルックアップテーブルが1つ又は複数の変数の1つ又は複数の符号化済みシェアを入力とし、複数のルックアップテーブルが鍵K依存暗号化関数を実装するテーブルネットワークを共に形成する、記憶するステップ520と、
− データストアに表された変数に複数のルックアップテーブルを適用することによって、入力メッセージに鍵K依存暗号化関数を適用するステップ530と
を有する。
図5bは、請求項1に記載の暗号化デバイスと共に使用するための、入力メッセージMを符号化するための符号化方法550を示すフローチャートであり、符号化方法が、
− 入力メッセージMを受信するステップ560であって、入力メッセージが複数の入力パートを有するM=(m,m,...)、受信するステップ560と、
− 入力メッセージMの各パートmについて、
− 入力メッセージMのパートmを複数のシェアに分散させることを、複数の分散関数
Figure 0006517436
を入力メッセージに適用して複数のシェアを取得することによって行う、
Figure 0006517436
分散させるステップ570であって、分散関数
Figure 0006517436
に適用された結合関数が、入力メッセージのパートmに等しい、
Figure 0006517436
分散させるステップ570と、
− 入力メッセージMからの単射写像Σを適用して複数のステート
Figure 0006517436
を取得するステップ580であって、複数のシェア及び複数のステートの数が同一である、取得するステップ580と、
− 複数のシェアの各シェアを複数のステートの対応するステートと共に符号化して、パートmを表す複数の符号化済みシェア
Figure 0006517436
を取得するステップ590と
を有する。
方法550には、入力メッセージのパートごとに作業を分散させる手法についていくつかの選択肢がある。たとえば、方法550は、まず全てのパートのシェアを計算し、次いで全てのパートのステートを計算し、最後に全てのパートの符号化を行う。しかしながら、方法550はまた、一度に1つのパートについて、シェア、ステート、及び符号化を計算する。他の組合せも可能である。
当業者には明らかであるように、方法を実行する多くの異なる手法が可能である。たとえば、ステップの順序は変更され得て、又はいくつかのステップは並行して実行される。さらに、ステップの間に、他の方法のステップが挿入される。挿入されたステップは、本明細書に記載されるような方法の改良を表し、又は方法と無関係である。たとえば、ステップ570及び580は、少なくとも部分的に並列に実行される。さらに、所与のステップは、次のステップが開始される前に完全に終了していない。
本発明による方法は、プロセッサシステムに方法500又は550を実施させる命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティによってとられるステップのみを含む。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に記憶される。ソフトウェアは信号としてワイヤに沿って、若しくは無線で、又はインターネットなどのデータネットワークを使用して送信される。ソフトウェアは、ダウンロード及び/又はサーバ上でのリモート使用が可能にされる。本発明による方法は、方法を実施するためにフィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルロジックを構成するようになされるビットストリームを使用して実行される。
本発明が、本発明を実施するように適合されたコンピュータプログラム、特に、キャリア上又は内のコンピュータプログラムにも拡張されることは理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及びオブジェクトコード、たとえば部分的にコンパイルされた形式、又は本発明による方法の実施での使用に適した任意の他の形式のものである。コンピュータプログラム製品に関する一実施形態は、記載された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、及び/又は静的若しくは動的にリンクされる1つ又は複数のファイルに記憶される。コンピュータプログラム製品に関する別の実施形態は、記載されたシステム及び/又は製品のうちの少なくとも1つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。
図7aはコンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムに一実施形態による暗号化方法又は符号化方法を実施させるための命令を含む。コンピュータプログラム1020は、コンピュータ可読媒体1000上に物理的なマークとして、又はコンピュータ可読媒体1000の磁化によって具現化される。しかしながら、任意の他の適切な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であり、記録不可能又は記録可能であることは理解されよう。コンピュータプログラム1020は、プロセッサシステムに一実施形態による前記暗号化方法又は符号化方法を実施させるための命令を含む。
図7bは一実施形態によるプロセッサシステム1140の概略図を示す。プロセッサシステムは1つ又は複数の集積回路1110を備える。1つ又は複数の集積回路1110のアーキテクチャは図7bに概略的に示されている。回路1110は、一実施形態による方法を実行し、及び/又はそのモジュール若しくはユニットを実装するためのコンピュータプログラムコンポーネントを動作させるための、CPUなどの処理ユニット1120を備える。回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は読み出し専用である。回路1110は通信素子1126、たとえば、アンテナ、コネクタ又はその両方などを備える。回路1110は、本方法で定義された処理の一部又は全部を実施するための専用集積回路1124を備える。プロセッサ1120、メモリ1122、専用IC1124及び通信素子1126は相互接続1130、たとえばバスを介して互いに接続される。プロセッサシステム1110は、アンテナ及び/又はコネクタを使用して、それぞれ接触及び/又は非接触通信用に構成される。
上記の実施形態は本発明を限定するものではなく例示するものであり、当業者は多くの代替的実施形態を考案できることに留意されたい。
特許請求の範囲において、括弧内に置かれた任意の参照符号は、特許請求の範囲を限定するものとして解釈されるべきではない。「備える」という動詞及びその活用形の使用は、請求項に記述された以外の要素又はステップの存在を排除するものではない。要素に先行する冠詞「a」又は「an」は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの個別の素子を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装される。いくつかの手段を列挙したデバイスの請求項において、これらの手段のいくつかは、同一のハードウェア項目によって具現化される。特定の対策が相異なる従属請求項に列挙されているという単なる事実は、これらの対策の組合せが有利に使用できないことを示すものではない。
特許請求の範囲において、括弧内の参照は、実施形態の図面における参照符号又は実施形態の式を参照して、請求項の明瞭性を高めている。これらの参照は請求項を限定するものとして解釈されるべきではない。
図1〜図4b及び図6の参照符号のリスト
100 M 入力メッセージ
110 w 変数
121、122、123 w、w、...、wn−1 シェア
131、132、133 s、s、...、sn−1 シェア
141、142、143 x、x,...、xn−1 符号化済みシェア
151 h 分散写像
152 Σ 単射写像
161、162、163 Enc、Enc、...、Encn−1 符号化
200 暗号化デバイス
210 制御ユニット
220 データストア
230 テーブルストア
231、232、233 テーブル
240 変数
250 ネットワークインタフェース
300 符号化デバイス
310 受信ユニット
320 符号化ユニット
410 テーブルネットワーク入力
420 テーブルネットワーク
421〜424 テーブル
430 テーブルネットワーク出力
440 テーブルネットワーク
450 テーブルネットワーク
600 DESブロック暗号のフローチャート
605 入力メッセージ
606 出力メッセージ

Claims (16)

  1. 入力メッセージ(M)についての鍵(K)依存暗号化関数(f)、(f(M))を計算する暗号化デバイスであって、前記暗号化デバイスが、
    前記暗号化デバイスが前記鍵(K)依存暗号化関数を計算するために作用する複数の変数(w)を記憶するデータストアであって、前記変数(w)は、複数のシェア(w)に分散されて、前記データストアにおいて複数の符号化済みシェア(x)として表され、前記符号化済みシェアは前記シェア(w)とステート(s)との符号化したもの(x=Enc(w,s))であり、同一の前記変数(w)に対応する複数のステート(s)が、前記入力メッセージ(M)から前記複数のステートへの単射写像(Σ)が存在するような(Σ(M)=(s,...,sn−1))、前記入力メッセージ(M)との関係を有する、データストアと、
    複数のルックアップテーブルを記憶するテーブルストアであって、前記ルックアップテーブルが1つ又は複数の変数の1つ又は複数の符号化済みシェアを入力とし、前記複数のルックアップテーブルが前記鍵(K)依存暗号化関数を実装するテーブルネットワークを共に形成し、前記テーブルネットワークが前記符号化済み変数(w)の前記複数のシェア(w)に演算を実施し、前記入力メッセージ(M)から前記複数のステートへの単射写像を維持する前記複数のステート(s)に冗長な演算を同時に実施する、テーブルストアと、
    前記データストアに表された前記変数に前記複数のルックアップテーブルを適用することによって、前記入力メッセージに前記鍵(K)依存暗号化関数を適用する制御ユニットと
    を備える、暗号化デバイス。
  2. 同一の前記変数(w)に対応する前記複数のステート(s)の合計ビットサイズが、少なくとも前記入力メッセージ(M)のビットサイズと同一の大きさである、請求項1に記載の暗号化デバイス。
  3. 前記符号化が全単射である、請求項1又は2に記載の暗号化デバイス。
  4. 結合関数(d(w,...,wn−1)=w)が前記シェア(w)を前記変数(w)に写像し、前記結合関数は、任意の単一のシェア(w)から前記変数(w)への写像であって、他のシェア(w,...,wk−1,wk+1,...,wn−1)の値を固定することによって得られる当該写像が全単射であるという特性を有する、請求項1乃至3のいずれか一項に記載の暗号化デバイス。
  5. 前記複数のシェア(w)の総和が対応する変数に等しい
    Figure 0006517436
    請求項1乃至4のいずれか一項に記載の暗号化デバイス。
  6. 前記テーブルストアは、第1の複数のシェア(w)に分散され、前記データストアに第1の複数の符号化済みシェア(x)として表される第1の変数(w)と、第2の複数のシェア(v)に分散され、前記データストアに第2の複数の符号化済みシェア(y)として表される第2の変数(v)とを乗算するための乗算テーブルネットワークを記憶し、前記乗算テーブルネットワークが前記第1及び第2の複数の符号化済みシェア(x、y)に作用して、前記第1及び第2の変数の積を表す第3の複数の符号化済みシェア(z)を取得し、
    前記乗算テーブルネットワークが、前記第1の複数のシェアのうちの第1のシェア(w)と前記第2の複数のシェアのうちの第2のシェア(v)との積を計算するための1つ又は複数の外積テーブルサブネットワークを有し、前記外積テーブルサブネットワークが、対応する前記符号化済みシェアからの前記第1のシェア及び前記第2のシェアの積と、前記入力メッセージ(M)からのランダム化関数(R1,2)との和を計算する、
    請求項1乃至5のいずれか一項に記載の暗号化デバイス。
  7. 前記テーブルストアが、第1の符号化済み変数(w)及び第2の符号化済み変数(w)を入力とし、第3の符号化済み変数(w)を出力として生成する演算を実施するためのテーブルネットワークを記憶し、前記テーブルネットワークが、前記第3の符号化済み変数
    Figure 0006517436
    に符号化された前記複数のステートが、前記第1の符号化済み変数
    Figure 0006517436
    及び前記第2の符号化済み変数
    Figure 0006517436
    のうちの1つに符号化されたステートのみに依存するように構成される、
    請求項1乃至6のいずれか一項に記載の暗号化デバイス。
  8. 入力メッセージ(M)を符号化するための符号化デバイスであって、前記符号化デバイスは、
    前記入力メッセージ(M)を受信するための受信ユニットであって、前記入力メッセージが複数の入力パートを有する(M=(m,m,...))、受信ユニットと、
    前記入力メッセージ(M)の各パート(m)について、
    前記入力メッセージ(M)の前記パート(m)を複数のシェアに分散させることを、複数の分散関数
    Figure 0006517436
    を前記入力メッセージに適用して前記複数のシェア
    Figure 0006517436
    を取得することによって行い、前記分散関数
    Figure 0006517436
    に適用された結合関数が、前記入力メッセージ(M)の前記パート(m)に等しく、
    Figure 0006517436
    前記入力メッセージ(M)からの単射写像(Σ)を適用して複数のステート
    Figure 0006517436
    を取得し、前記複数のシェア及び前記複数のステートの数が同一であり、
    前記複数のシェアの各シェアを前記複数のステートの対応するステートと共に符号化して、前記パート(m)を表す複数の符号化済みシェア
    Figure 0006517436
    を取得する
    符号化ユニットと
    を備える、符号化デバイス。
  9. 前記単射写像(Σ)が複数のステート関数
    Figure 0006517436
    を有し、前記複数のステート
    Figure 0006517436
    を取得することが、前記複数のステート関数
    Figure 0006517436
    をそれぞれの複数の入力パートに適用することを有し、
    Figure 0006517436
    前記複数のステート関数が全単射である、
    請求項8に記載の符号化デバイス。
  10. 請求項8又は9に記載の符号化デバイスを備える、請求項1に記載の暗号化デバイス。
  11. 入力メッセージ(M)についての鍵(K)依存暗号化関数(f)、(f(M))を計算する暗号化方法であって、前記暗号化方法が、
    暗号化デバイスが前記鍵(K)依存暗号化関数を計算するために作用する複数の変数(w)を記憶するステップであって、前記変数(w)は、複数のシェア(w)に分散されて、データストアにおいて複数の符号化済みシェア(x)として表され、前記符号化済みシェアはシェア(w)とステート(s)との符号化したもの(x=Enc(w,s))であり、同一の前記変数(w)に対応する複数のステート(s)が、前記入力メッセージ(M)から前記複数のステートへの単射写像(Σ)が存在するような(Σ(M)=(s,...,sn−1))、前記入力メッセージ(M)との関係を有する、記憶するステップと、
    複数のルックアップテーブルを記憶するステップであって、前記ルックアップテーブルが1つ又は複数の変数の1つ又は複数の符号化済みシェアを入力とし、前記複数のルックアップテーブルが前記鍵(K)依存暗号化関数を実装するテーブルネットワークを共に形成し、前記ルックアップテーブルが符号化済み変数(w)の前記複数のシェア(w)に演算を実施し、前記入力メッセージ(M)から前記複数のステートへの単射写像を維持する前記複数のステート(s)に冗長な演算を同時に実施する、記憶するステップと、
    前記データストアに表された前記変数に前記複数のルックアップテーブルを適用することによって、前記入力メッセージに前記鍵(K)依存暗号化関数を適用するステップと
    を有する、暗号化方法。
  12. 入力メッセージ(M)を符号化するための符号化方法であって、前記符号化方法は、
    符号化デバイスが前記入力メッセージ(M)を受信するステップであって、前記入力メッセージが複数の入力パートを有する(M=(m,m,...))、前記受信するステップと、
    前記符号化デバイスが前記入力メッセージ(M)の各パート(m)について、
    前記入力メッセージ(M)の前記パート(m)を複数のシェアに分散させることを、複数の分散関数
    Figure 0006517436
    を前記入力メッセージに適用して前記複数のシェア
    Figure 0006517436
    を取得することによって行う、分散させるステップであって、前記分散関数
    Figure 0006517436
    に適用された結合関数が、前記入力メッセージ(M)の前記パート(m)に等しい、
    Figure 0006517436
    前記分散させるステップと、
    前記符号化デバイスが前記入力メッセージ(M)からの単射写像(Σ)を適用して複数のステート
    Figure 0006517436
    を取得するステップであって、前記複数のシェア及び前記複数のステートの数が同一である、前記取得するステップと、
    前記符号化デバイスが前記複数のシェアの各シェアを前記複数のステートの対応するステートと共に符号化して、前記パート(m)を表す複数の符号化済みシェア
    Figure 0006517436
    を取得するステップと
    を有する、符号化方法。
  13. コンピュータ上で実行された場合に当該コンピュータに請求項11に記載の方法を実施させる、コンピュータプログラム。
  14. コンピュータ上で実行された場合に当該コンピュータに請求項12に記載の方法を実施させる、コンピュータプログラム。
  15. 請求項13に記載のコンピュータプログラムを備える、コンピュータ可読媒体。
  16. 請求項14に記載のコンピュータプログラムを備える、コンピュータ可読媒体。
JP2018518641A 2015-10-12 2016-10-10 暗号化デバイス及び符号化デバイス Active JP6517436B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
NL2015599A NL2015599B1 (en) 2015-10-12 2015-10-12 A cryptographic device and an encoding device.
NL2015599 2015-10-12
PCT/EP2016/074166 WO2017063986A1 (en) 2015-10-12 2016-10-10 A cryptographic device and an encoding device

Publications (2)

Publication Number Publication Date
JP2018537704A JP2018537704A (ja) 2018-12-20
JP6517436B2 true JP6517436B2 (ja) 2019-05-22

Family

ID=55697415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018518641A Active JP6517436B2 (ja) 2015-10-12 2016-10-10 暗号化デバイス及び符号化デバイス

Country Status (9)

Country Link
US (1) US10567158B2 (ja)
EP (1) EP3363142B1 (ja)
JP (1) JP6517436B2 (ja)
CN (1) CN108141352B (ja)
BR (1) BR112018007132A2 (ja)
NL (1) NL2015599B1 (ja)
RU (1) RU2692419C1 (ja)
TR (1) TR201905769T4 (ja)
WO (1) WO2017063986A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11070358B2 (en) 2015-12-15 2021-07-20 Koninklijke Philips N.V. Computation device and method
EP3407528A1 (en) * 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
EP3413500A1 (en) * 2017-06-09 2018-12-12 Koninklijke Philips N.V. Device and method to compute a block cipher
EP3451214A1 (en) 2017-09-05 2019-03-06 Koninklijke Philips N.V. Computing device with computer program bounded thereto
EP3484093A1 (en) * 2017-11-10 2019-05-15 Koninklijke Philips N.V. A computation device and method
EP3664359A1 (en) 2018-12-07 2020-06-10 Koninklijke Philips N.V. A computation device using shared shares
EP3664356A1 (en) * 2018-12-07 2020-06-10 Koninklijke Philips N.V. White-box computations using shares as randomizing inputs

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001082524A1 (en) * 2000-04-20 2001-11-01 Matchett Noel D Cryptographic system for data encryption standard
JP2003296250A (ja) * 2002-03-29 2003-10-17 Fuji Xerox Co Ltd メーリングリストサーバおよびそのメール送信方法
US20050152539A1 (en) * 2004-01-12 2005-07-14 Brickell Ernie F. Method of protecting cryptographic operations from side channel attacks
FR2871969B1 (fr) * 2004-06-18 2006-12-01 Sagem Procede et dispositif d'execution d'un calcul cryptographique
RU2302085C1 (ru) * 2005-11-16 2007-06-27 Институт физики твердого тела РАН Способ кодирования и передачи криптографических ключей
CA2724793C (en) * 2008-05-23 2018-01-02 Irdeto Canada Corporation System and method for generating white-box implementations of software applications
US8379727B2 (en) * 2008-09-26 2013-02-19 General Instrument Corporation Method and apparatus for scalable motion estimation
WO2010102960A1 (en) * 2009-03-10 2010-09-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
US10447474B2 (en) * 2009-04-20 2019-10-15 Pure Storage, Inc. Dispersed data storage system data decoding and decryption
US8744071B2 (en) * 2009-04-20 2014-06-03 Cleversafe, Inc. Dispersed data storage system data encryption and encoding
US8862879B2 (en) * 2009-10-13 2014-10-14 Sergio Demian LERNER Method and apparatus for efficient and secure creating, transferring, and revealing of messages over a network
PL2520041T3 (pl) * 2009-12-30 2016-09-30 Sposób generowania tabeli korelacji dla białej skrzynki kryptograficznej
JP5930235B2 (ja) * 2011-03-31 2016-06-08 イルデト ビー ヴイIrdeto B.V. 暗号ハッシュ関数の実行を保護する方法とシステム
MX345372B (es) * 2012-11-07 2017-01-27 Koninklijke Philips Nv Dispositivo de computo que almacena tablas de consulta para calculo de una funcion.
BR112015014470A2 (pt) * 2012-12-21 2017-07-11 Koninklijke Philips Nv compilador configurado para compilar um programa de computador, dispositivo de computação configurado para executar um programa de computador compilado por um compilador, método para executar um programa de computador compilado por um compilador e programa de computador
BR112015014469A2 (pt) 2012-12-21 2017-07-11 Koninklijke Philips Nv método de configuração de um dispositivo de rede para compartilhamento de chave, método para um primeiro dispositivo de rede para determinar uma chave compartilhada, dispositivo de rede configurado para determinar uma chave compartilhada, sistema para configurar um dispositivo de rede para compartilhamento de chave e programa de computador
CN103561005B (zh) * 2013-10-24 2016-05-25 桂林电子科技大学 基于映射几何性质的秘密共享方法
WO2015082212A1 (en) * 2013-12-05 2015-06-11 Koninklijke Philips N.V. A computing device for iterative application of table networks
US10628592B2 (en) * 2014-11-25 2020-04-21 Institut Mines-Telecom Methods for recovering secret data of a cryptographic device and for evaluating the security of such a device
WO2016102180A1 (en) * 2014-12-22 2016-06-30 Koninklijke Philips N.V. Hiding of a program execution
US10372886B2 (en) * 2015-05-05 2019-08-06 Nxp B.V. Protecting the input/output of modular encoded white-box RSA/ECC
CN212520589U (zh) 2020-07-06 2021-02-12 江西省鸽鸽食品有限公司 一种面粉制品发酵用揉动装置

Also Published As

Publication number Publication date
CN108141352A (zh) 2018-06-08
TR201905769T4 (tr) 2019-05-21
RU2692419C1 (ru) 2019-06-24
WO2017063986A1 (en) 2017-04-20
CN108141352B (zh) 2020-08-25
JP2018537704A (ja) 2018-12-20
BR112018007132A2 (pt) 2018-11-06
NL2015599B1 (en) 2017-05-02
US20190074959A1 (en) 2019-03-07
EP3363142A1 (en) 2018-08-22
US10567158B2 (en) 2020-02-18
EP3363142B1 (en) 2019-02-27

Similar Documents

Publication Publication Date Title
JP6517436B2 (ja) 暗号化デバイス及び符号化デバイス
US20220141038A1 (en) Method of rsa signature or decryption protected using a homomorphic encryption
JP5646612B2 (ja) 中間データ変更を使用する構成可能な鍵を用いるホワイトボックス暗号システム
JP6517438B2 (ja) ターゲットブロック暗号を計算する暗号デバイス
RU2696334C1 (ru) Устройство и способ вычисления блочного шифра
CN109039596B (zh) 利用加扰电路的白盒实施方案
CN105359450B (zh) 防篡改密码算法实现
CN110663215B (zh) 在白盒场景中的椭圆曲线点乘设备和方法
EP3632032B1 (en) Cryptographic device and method
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
JP6884284B2 (ja) キー付きメッセージ認証コードのホワイトボックス計算
EP3125462A1 (en) Balanced encoding of intermediate values within a white-box implementation
JP6890589B2 (ja) 計算デバイス及び方法
Scripcariu et al. On the substitution method of the AES algorithm
WO2020173662A1 (en) Method secured against side-channel attacks with a new masking scheme protecting linear operations of a cryptographic algorithm

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190228

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: 20190319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190417

R150 Certificate of patent or registration of utility model

Ref document number: 6517436

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250