JP2014207717A - 指数難読化 - Google Patents

指数難読化 Download PDF

Info

Publication number
JP2014207717A
JP2014207717A JP2014161511A JP2014161511A JP2014207717A JP 2014207717 A JP2014207717 A JP 2014207717A JP 2014161511 A JP2014161511 A JP 2014161511A JP 2014161511 A JP2014161511 A JP 2014161511A JP 2014207717 A JP2014207717 A JP 2014207717A
Authority
JP
Japan
Prior art keywords
value
exponent
index
obfuscated
bit string
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.)
Pending
Application number
JP2014161511A
Other languages
English (en)
Inventor
ヴィルヘルムス・ペー・アー・イェー・ミヒールス
P A J Michiels Wilhelmus
パウルス・エム・ハー・エム・アー・ゴリッセン
M H M A Gorissen Paulus
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.)
Irdeto BV
Original Assignee
Irdeto BV
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 Irdeto BV filed Critical Irdeto BV
Publication of JP2014207717A publication Critical patent/JP2014207717A/ja
Pending legal-status Critical Current

Links

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/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
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • 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/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】指数を難読化する方法が提供される。
【解決手段】方法は、暗号化プロセスに使用される複数の要素xについて、λ>0及びxλ=1をそれが保持する値λを識別するステップ(304)を具備している。方法は、λより大きい難読化された指数yを識別するステップ(306)と、前記難読化された指数yを示す情報を提供するステップ(308)とをさらに具備している。方法は、a<λである鍵値aを設定するステップと、正の整数bを選択するステップと、y=a+bλを計算するステップとを具備している。
【選択図】図3

Description

本発明は、指数値(exponent value)を難読化することに関する。また、本発明は、べき乗演算(exponentiation operation)を実行することに関する。また、本発明は、暗号化アルゴリズムの一部であるべき乗(exponentiation)に関する。
現在、ますます、コンテンツは、例えば、インターネット、ブロードキャスト媒体によって、又は、CD又はDVDなどのデジタルデータキャリアによって、ユーザにデジタル形式で入手可能である。消費家電(CE)製品(例えば、テレビ、セットトップボックス、及びオーディオ設備)は、これらデジタルコンテンツをレンダリングするために、デジタルデータ処理能力を備えている。
著作権のあるコンテンツについてインターネット及び他のデジタル配布媒体の使用が、コンテンツプロバイダの利益を確保する挑戦を作った。特に、コンテンツプロバイダの著作権及びビジネスモデルを実施するのに利用可能な技術的な手段を有することが望ましい。ますます、CE製品は適したソフトウェアをロードされたプロセッサを使用して操作される。そのようなソフトウェアは、デジタルコンテンツ(例えば、オーディオ及び/又はビデオ)のレンダリング(再生)のための機能の主要部分を含んでもよい。再生ソフトウェアの制御は、コンテンツが使用される条件を含むコンテンツ所有者の利益を実施する1つの方法である。従来は、多くのCEプラットフォーム(PC及びPDAを除く)がクローズされ、現在は、さらに多くのプラットフォームが、少なくとも部分的に、オープンにされ、かつ、コンピュータプログラマがソフトウェアを調査し、かつ、ソフトウェアへ変更を加えることを可能にさせる。そのようなオープンシステムでは(パーソナルコンピュータを含む)、一部のユーザが、コンテンツへのアクセスをもたらすハードウェア及びソフトウェアに対して完全な制御を有すると仮定してもよい。また、一部のユーザは、どんなコンテンツ保護メカニズムでも攻撃及びバイパスする多くの時間及びリソースを有してもよい。その結果、コンテンツプロバイダは、コミュニティ(すべてのユーザ又はデバイスを信じることができない)への敵対的なネットワーク上の正規ユーザへコンテンツを配信しなければならない。
デジタル権利管理システムが、正規ユーザへのデジタルコンテンツの配布を制御するために導入されてきた。一般に、デジタル権利管理システムは、正規ユーザだけにコンテンツを復号することを許可する暗号化技術を使用する。消費者装置におけるそのような暗号化技術の実施は、難読化されて、攻撃者が鍵の値を見つけることをさらに困難にさせる。多くの異なる種類のアプリケーションについて一般に使用される暗号の例は、DES、AES、RSA、及び、国際公開第9967918号パンフレットで開示された方法である。
鍵ハンドリングに関連して、再生のため、メディアプレーヤはライセンスデータベースから復号鍵を読み出さなければならない。次いで、暗号化コンテンツの復号のため、メモリのどこかにこの復号鍵を格納しなければならない。これは、鍵に対する攻撃について2つの選択肢を攻撃者に与える。第1に、ライセンスデータベースアクセス機能のリバースエンジニアリングが、攻撃者に、すべてのライセンスデータベースからアセット鍵(asset key)を読み出すことを可能にさせる。第2に、コンテンツ復号中のメモリへのアクセスの観察によって、アセット鍵を読み出すことが可能である。両方の場合で、鍵は危険にさらされると考えられる。
「White-Box Cryptography and an AES Implementation」(Stanley Chow, Philip Eisen, Harold Johnson, Paul C. Van Oorschot著、Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, カナダ、2002年8月15-16日)、及び、「A White-Box DES Implementation for DRM Applications」(Stanley Chow, Phil Eisen, Harold Johnson, Paul C. van Oorschot著、in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, 2002年11月18日)(以降、これら2つの出版物をまとめて「Chow」と称す)が、個別のステップよりもランダム全単射表示成分(random bijections representing composition)でそのテーブルをコード化すること、及び、含んでいるアプリケーションの中にさらに排除することにより暗号境界を拡張することの組合せによって、鍵を隠蔽することを意図した方法を開示している。
Chowに開示された方法は、ソフトウェアを完全にデバックすることができる人に暗号化鍵を露呈させることなく、ソフトウェアにおいて暗号演算を実行することを可能にさせる。Chowのアプローチでは、暗号化鍵は、数学演算よりもルックアップテーブルを使用することによって隠蔽され、その結果、数学演算のオペランドをそれ自体として格納する必要がなくなる。これらテーブルを、ランダム全単射を使用してコード化して、さらにそれらを難読化してもよい。1つのテーブルのコード化を、他のテーブルのコード化によって取消すか、又は、プログラムの他の場所に取消してもよい。しかし、すべての演算が、ルックアップテーブルによって容易に表現されるとは限らない。
国際公開第9967918号パンフレット
White-Box Cryptography and an AES Implementation、Stanley Chow, Philip Eisen, Harold Johnson, Paul C. Van Oorschot著、Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, カナダ、2002年8月15-16日 A White-Box DES Implementation for DRM Applications、Stanley Chow, Phil Eisen, Harold Johnson, Paul C. van Oorschot著、in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, 2002年11月18日
幅広い範囲の演算を難読化する方法を有することは好都合である。この懸念により良く対処するために、本発明の1態様では、指数を難読化する方法が提示され、べき乗の底値(base value)として、暗号化プロセスにおいて使用される複数の要素xについて、λ>0及びxλ=1をそれが保持する値λを識別するステップと、λより大きい難読化された指数yを識別するステップと、前記難読化された指数yを示す情報を提供するステップとを具備している。
したがって、難読化された指数yは、前記べき乗を計算するのに正確に必要とするより大きく提供される。本発明のこの態様は、λより小さい指数について、対応する指数値が存在する(λより大きく、かつ、べき乗を実行するとき同じ成果を与える)という見識を使用する。この特性を使用して、指数値を要望通り大きくしてもよい(それは、調査及び権限のないコピーに対して指数値をより良く難読化させることができるので好都合である)。
前記べき乗xλ=1を有限代数構造で実行してもよく、かつ、例えば、モジュロn(modulo n)(ここで、代数構造は要素{0,0,...n-1}を有する)を実行してもよい。
前記難読化された指数yを示す情報を、暗号化プロセスでの使用のため、提供してもよい。例えば、難読化された指数yを、暗号化システムを備えたデバイスに提供してもよい。デバイスに難読化された指数yを提供することによって、デバイスは、後続のべき乗演算において指数yを使用してもよい。例えば、そのような暗号化システムは、RSAなどの非対称暗号を実装する。態様では、難読化された指数yは、非対称暗号の秘密鍵に依存する。これにより、秘密鍵をより良く保護することができる。
本発明の他の態様では、難読化された指数を有するべき乗を実行するため、システムが提示され、前記べき乗の底xを識別するための底識別手段であって、xはn個の要素を有するセットのうちの要素である手段と、前記セットのすべての要素ξについて、λ>0及びξλ=1をそれが保持する値λより大きい指数yを示すデータを識別するための指数識別手段と、xのy乗の成果を計算することによって少なくとも一部の暗号化アルゴリズムを実行し、それによって、前記べき乗の成果を得るためのべき乗器(exponentiator)とを備えている。
前記指数はそのサイズを増大させることによって難読化されてきた。これは、λより小さい指数aについて、対応する指数値yが見つけられる(λより大きく、かつ、べき乗の同じ成果を与える)という見識に基づいている。したがって、このより大きな値yをaの代わりに使用してもよく、かつ、さらに、べき乗の同じ成果を提供する。したがって、べき乗を実行することができる(比較的小さな値aに対するべき乗を実行するデバイスを提供することなく)。一般に、yのビット表現(bit representation)は、aのビット表現より大きい。さらに、そのような値yを所定サイズより大きく選択することができる(例えば、指数aへ十分多様なλを加算することによって)。値yを要望通り大きく選択してもよいので、べき乗の成果を変えることなく、その対応するビット表現も要望通り大きくすることができる。これは値yをコピーするのをより困難にさせる。それは暗号への鍵においてビット数を増大させ、暗号によって提供されるセキュリティを増大させる。べき乗へのそのようなアプローチを、例えば、非対称暗号のホワイトボックス実装(white-box implementation)を作成するために利用してもよい。
態様では、システムは、底値xに値βを掛け、かつ、べき乗の成果にβ−yを掛けるための手段を備えている。これら2つの乗算を、底xの値及びべき乗xyの成果を難読化するのに使用してもよい。乗算は、攻撃者が、べき乗の入力及び/又は出力を観察することによって、x及び/又はxyの真の値を発見するのを防ぐために、どこで実行してもよい(べき乗演算を使用するデータ処理システムのモジュールにおいて)。
態様では、所定のビットストリングsを、難読化された指数yのビット表現に含めてもよい(指数aに加算される多様なλを適切に選択することによって)。これは、既存情報(例えば、パスワード、ハッシュ値、又はハードウェア識別子)に関する情報を、指数を示す情報の中に組み込ませる。べき乗を実行するシステムを、前記既存情報にアクセスすることによって、ビットストリングsを読み出すようにプログラムしてもよい。指数を示す情報の残りの部分を、例えば、サーバによって提供してもよい。
本発明のさらなる態様が独立請求項に定義される。従属請求項が好ましい態様を定義する。
本発明のこれら及び他の態様がさらに明らかにされ、かつ、図面を参照して説明される。
べき乗を実行するためのシステムを図示している。 べき乗を実行するプロセスを図示している。 指数値を生成するプロセスを図示している。 指数値を生成するためのシステムを図示している。 ハードウェアアーキテクチャを図示している。
暗号化アルゴリズムのホワイトボックス実装は、暗号化鍵が攻撃者から隠蔽されるソフトウェア実装である。攻撃者は、実装への完全なアクセス、及び、実行環境に対する完全な制御を有すると仮定してもよい。x変数に対するべき乗xa mod nを実装するためのアプローチを有することが好ましい(それにより、値aが攻撃者から隠蔽される)。RSAがそのようなべき乗(aが鍵から導出される)を含むので、そのようなアプローチを使用して、例えば、RSAのホワイトボックス実装を導出することができる。
Chowらは、非対称ブロック暗号AES及びDESのためのホワイトボックス実装を提示する。Chowらによって用いられたアイデアを使用して、他の非対称ブロック暗号のホワイトボックス実装を導出するために、一部拡張することもできる。しかし、非対称暗号のホワイトボックス実装(例えば、RSA及びElGamal)を導出するのにChowらに開示された方法を使用するのは困難である。本明細書では、べき乗xa(ここで、aは定数であり、かつ、xは変数であってもよい)のホワイトボックス実装を導出するためのアプローチが開示される。例えば、そのようなべき乗は、ElGamal公開鍵暗号において発生する。最も頻繁に使用される公開鍵暗号RSAも、べき乗に基づいている。メッセージmの暗号化がc=me mod n(ここで、値e及びnは公開鍵によって与えられる)を計算することに対応する。暗号テキストcの復号は、m=cd mod n(ここで、値dは秘密鍵によって与えられ、値nは素数p及びqについてのp・qによって与えられ、かつ、値dはe、及びnの因数分解から計算することができる)を計算することに対応する。両方のべき乗で、底値は定数でないが、メッセージのコンテンツに依存することに注意しなければならない。したがって、アプローチが、x変数でべき乗xaを実装するために必要とされる(それにより、値aが攻撃者から隠蔽される)。これにより、例えば、RSAの暗号化及び復号の側の両方のホワイトボックス実装を導出することができる。また、RSA署名体系の署名生成及び署名照合ルーチンを、このアプローチに基づきホワイトボックス化することができる。
図1は、べき乗を実行するためのシステム100の実施例を図示している。システム100によって実行されるべき乗は、難読化された指数を有してもよい。例えば、そのようなシステムを、デジタル著作権管理(DRM)又は暗号法を使用して保護されるコンテンツを処理することができるデバイスの中に構築してもよい。例のデバイスは、音楽プレーヤ、セットトップボックス、デジタルチューナ、デジタルテレビ、DVDプレーヤである。実施例は、べき乗の指数を、比較的大きなデータ表現(例えば、多数のビット)によって表すことを可能にし、一方では、システムを危険にさらすことを意図する人が、大きなデータ表現をより小さなものに置き換えるのを困難にさせる。例えば、システムを、ソフトウェアによって、パーソナルコンピュータに実装してもよい。
システムは、べき乗演算の底を示すデータを受信するため、底入力108を具備してもよい。例えば、この底入力108は、暗号化されたコンテンツのデジタルコンテンツストリームを受信するように構成してもよい。しかし、これに限定されない。代わりに、底入力108は、例えば、デジタル署名データを含む暗号トランザクションデータ又は識別子データを受信するように構成してもよい。底入力108は、受信されたデータへ前処理演算を実行してもよく、例えば、データが解析され、かつ、暗号化されていないデータ部分を暗号化されたデータ部分とは異なって扱ってもよい。例えば、データを、取り外し可能な媒体、内部記憶手段から(例えば、ハードディスク、フラッシュメモリ、又はRAM)、又は、ネットワーク接続から(例えば、ケーブル、衛星(例えば、DVB-Sを使用して)、又はインターネット)読み出してもよい。暗号化されていないデータを、他のモジュール(図示せず)に転送してもよい。暗号化されたデータを、底識別手段102へ転送してもよい。
底識別手段102は、底入力108から底値xを示すデータを受信する。このデータを使用して、べき乗の底xを識別する。例えば、底識別手段102は、底入力108からそのような値xを受信する。代わりに、底識別手段は、底入力108から受信されたデータを解析して、底値xを含むデータフィールドを識別する。一般に、底値xは、代数構造(通常は、有限構造)からのメンバである(乗算演算が定義される)。また、この乗算演算は、べき乗を実行するとき適用する。
システムは、指数入力110をさらに備えている。この入力110は、底入力108と類似の方法でデータを読み出す。指数入力110は、底入力108と同じデータソースから、又は、異なるデータソースからその入力を得てもよい。これはアプリケーションに依存する。例えば、個別の鍵サーバを設けてもよい(指数入力110に更新された鍵を時々送信する)。指数入力110はいくつかの前処理ステップを実行してもよく、かつ、本明細書で説明されるより多くの機能を有してもよい。しかし、指数入力110は、その入力に基づく指数に関するデータを作成し、かつ、このデータを指数識別手段104に転送する。
指数識別手段104が、指数yを示すデータを識別するように構成される。データを指数入力110から、及び/又は、1又は複数の他のソース112から、受信されたデータにおいて識別してもよい(以降により詳細に論じられる)。また、指数識別手段104は、識別されたデータから、指数yの実際の値を抽出してもよい。例えば、指数識別手段104から受信されたデータを、所定の方法で、他のソース(1又は複数)112から取得されたデータと組み合わせてもよい。指数識別手段104は、比較的大きな指数値yを識別するように構成される。この場合、値λが存在する(それが、底識別手段102によって識別される底値xについて、xλ=1を保持する)と仮定される。指数識別手段104は、指数値y(値λより大きい)を識別するように構成されている。このため、十分に大きな記憶場所を、大きな指数値yを格納するために設けてもよい。さらに、識別手段104は、そのような大きな値を受信可能であってもよい(指数入力110及び/又は他のソース112から、λより大きい指数yの値を受信することができるによって、)。これら値yは、λの10倍以上も大きくてもよい(暗号セキュリティを考慮して、指数値を大きくすることは好都合であるので)。識別された指数値yのビット長でさえも、λのビット長の10倍以上も大きくてもよい。
底識別手段102によって識別された底x、及び、指数識別手段104によって識別された指数yを、べき乗器(exponentiator)106に提供してもよい。そのようなべき乗器は、底値xのy乗を計算してもよい。この計算は当技術分野で既知の方法で実行してもよい。例えば、二乗及び乗算アルゴリズム(当技術分野で既知の)を、効率的な方法で、比較的大きな指数値yに対するべき乗を計算するのに利用してもよい。また、べき乗器106は、λより大きな指数値yを取り扱うのに適している。べき乗器106がこれら大きな指数値を扱うことに適するように、より大きな記憶場所を使用してもよく、かつ/又は、アルゴリズムを利用してもよい(大きな指数yを有するべき乗を計算するのに特に適する)。べき乗の結果(xyの成果)は後処理ユニット114に提供される(べき乗の成果に追加的な処理を適用してもよい)。そのような後処理ユニット114は、アプリケーション依存であり、かつ、システムにおけるさらなる処理のため、べき乗器106から取得されたデータを準備してもよい。例えば、べき乗の成果が復号されたマルチメディアコンテンツを含む場合、そのようなさらなる処理が、ディスプレイ及び/又はオーディオシステムに関して、ビデオ及び/又はオーディオコンテンツのレンダリングを含んでもよい。後処理ユニット114は、フォーマットの中にべき乗演算の1又は複数の成果を構成してもよい(例えば、システムのリマインダによって取り扱われて、そのようなレンダリングを実行する)。
実施例では、指数識別手段104によって識別されたデータが、1又は複数の値y1,...,ymを示してもよい。ここで、
であり、かつ、ここで、べき乗器は、値y1,...,ymに従って複数のべき乗を実行するように構成され、ここで、複数のべき乗は、xのy乗の計算の中間ステップを形成する。例えば、データは、1又は複数の指数y1,...,ymのシーケンスを示してもよく、ここで、
であり、指数のシーケンスの積
はyと等しい。そのような場合には、べき乗器は、少なくとも2つの異なる方法でべき乗を計算してもよい。第1に、積
を計算して、yを取得し、次いで、単一のべき乗xyを実行して、所望の結果を取得する。この場合、比較的大きな指数値yに対するべき乗を計算しなければならない。第2に、z1=x、及び、
に従って、複数のべき乗を計算してもよい。これは、大きな指数値に対するべき乗を実際に計算することなく、zm+1=xyを結果的にもたらす。
実施例では、底入力108で、又は、底入力108にデータを提供するのに関与するシステムの一部で、所定の値gに値βを掛けることによってxを計算するため、手段が提供される。例えば、所定の値gは、復号される暗号化されたコンテンツに依存してもよい。このように、システムのデータフローを観察している攻撃者が(特にユニット102,104,106)値gを見ない。同様に、後処理ユニット114で、又は、システムの他の場所で、べき乗の成果にβ-yを掛けるための手段を設けてもよい。これは、値β-y(βg)y=gyを結果的にもたらす。故に、底識別手段102、指数識別手段104、及び、べき乗器106で、値g又はgyを露呈させず、gyを計算してもよい。
指数yを示すデータの少なくとも一部を情報(特定のデバイス及び/又はユーザに固有であるか、又は、デバイス及び/又はユーザのグループに固有である)から導出してもよい。例えば、そのような情報は、ハードウェア識別子、ユーザ識別子、又は、ハードウェア特徴(例えば、プロセッサのクロック周波数、又は、ディスクアクセス時間)に基づいてよい。手段112は、指数yを示すデータの少なくとも一部を提供するため、設けてもよい。手段112は、そのようなデータが格納され、かつ、指数識別手段104にデータを提供するメモリ場所にアクセスするように構成してもよい。また、手段112は、関連データのハッシュ値を計算し、かつ、指数識別手段104にハッシュ値を提供するように構成してもよい。例えば、ハッシュ値は、復号される一部のコンテンツの、又は、コンピュータプログラムコードのハッシュ値であってよい。これにより、指数データは比較的大きなデータ塊に依存させることが可能となる。手段112は、例えば、デバイスへ送信された制御コマンドを介して、ハードウェアデバイス(例えば、ハードディスク又はプロセッサ)のハードウェアIDを含んだメモリ場所にアクセスするように構成してもよい。これは、他のシステムに対してべき乗を成功裏に実行することをより困難にさせる(他のシステムは他のハードウェア識別子を有し、べき乗で使用される間違った指数yを発生させるので)。
べき乗演算は、RSA復号及び暗号化において重要なステップである。これらステップを説明された方法を使用して難読化してもよい。さらに、RSAにおける鍵は指数値yと密接に関係している。説明された方法により、より大きな値を使用して、かつ/又は、複数の値を使用して、指数を表すことができる(指数を格納するのに必要とされるビットの合計数をより大きくさせる)。さらに、鍵を知らない攻撃者が、対応する指数値(より小さく、かつ、同じべき乗結果を提供する)を見つけるのは困難である。したがって、より大きなデータビットを含むより大きな鍵を、RSA及び他の暗号化アルゴリズムとの関連で使用してもよい。RSAなどで、多くの場合、復号鍵は、最も秘密であり、かつ、大きなサイズが有利である鍵であり、説明されたべき乗演算を、RSA復号システムにおいて有利に実行してもよい。
説明された方法は、家庭用電子機器(例えば、PDA、音楽プレーヤ、デジタルチューナなど)に含まれてもよい。それらは、デジタル著作権管理方法(解析して模倣することが困難であり、かつ、権限のないコピー及び/又は配布を防止する)を提供する。また、説明された方法を、トランザクション処理、デジタル署名、及び、他の暗号化プロセス及びシステムにおいて使用してもよい。
図2は、難読化された指数を有するべき乗を実行する方法を図示している。方法はステップ200で開始される(例えば、暗号化されたデータパケットの受信に応じて、又は、ユーザコマンドに応じて)。ステップ202では、べき乗の底xが識別される。ステップ204では、指数yを示すデータが識別される。指数yは値λより大きい(それはλ>0及びxλ=1を保持する)。ステップ206では、暗号化アルゴリズムの少なくとも一部がxのy乗を計算することによって実行され、それにより、べき乗の成果を得る。プロセスはステップ208で終了し、かつ、新しい底値xを処理するため、繰り返してもよい(ステップ200で開始する)。
図3は、暗号化プロセスに使用するため、指数を難読化する方法を図示している。ステップ302では、暗号化プロセスのべき乗演算の指数値aを識別してもよい。例えば、鍵生成器(当技術分野で周知である)を使用して、暗号化鍵を選択してもよい。指数値aは鍵に依存してもよい。例えば、指数値aは鍵と等しくてもよい。
ステップ304では、値λが設定される(それは、代数構造の複数の要素xについて、λ>0及びxλ=1を保持する)。xλ=1である複数の要素xが潜在的な値(暗号化されたメッセージにおいて使用される)を含む。サポートすることができるメッセージにおいて高い柔軟性を可能とするためには、値λを設定してもよい(代数構造のすべてのxについてxλ=1が真であり、ここで、代数構造は乗算モジュロN(multiplication modulo N)を有するセット{0,1,2,3,...,N-1}であってよい)。そのような値λを当技術分野で既知の方法で計算してもよい。
ステップ306では、難読化された指数yが識別される(ここでy=a+bλであり、ここでbは正の整数である)。例えば、a及びλをステップ302及びステップ304によって設定してもよく、かつ、bが値の範囲(難読化された指数yの所望のおよそのビット長に対応する)からランダムに選択された正の整数であってよい。
ステップ308では、難読化された指数yを示す情報が提供される。例えば、それは暗号化されたコンテンツと共に取り外し可能な媒体に格納されるか、又は、それはデジタルネットワークを介してクライアントデバイスに転送される。また、底値を示す情報(例えば、暗号化されたコンテンツ)をクライアントデバイスに提供してもよい。
ステップ310では、プロセスが終了する。例えば、それは、新しい鍵が生成されるとき、ステップ300で再び開始してもよい。
1又は複数の値y1,...,ymを設定することができる(ここで、
かつ、ここで、値y1,...,ymが、値y1,...,ymに従って複数のべき乗を実行することによって、べき乗のy乗を計算することを可能にし、ここで、複数のべき乗が、xのy乗の計算の中間ステップを形成する。)。このように、難読化を、比較的小さな指数値y1,...,ymを使用することで実行することができる。例えば、複数の値y1,...,ymが選択される(ここで、
であり、ここで、指数のシーケンスの積
がyに等しい。)。難読化された指数yを示す情報は、複数の値y1,...,ymの少なくとも一部を示してもよい。他の例では、値y1,...,ym及び値z1,...,zmが提供される(ここで、
である。)。
ビットストリングsを識別し、かつ、bを選択することが可能である(難読化された指数yのビット表現がビットストリングsを含むように)。これは以降により詳細に説明される。例えば、クライアントデバイスのハードウェア識別子(又は、ユーザ名又はパスワード)を、このクライアント又はユーザのために特に準備された指数値の中に組み込ませるのに使用することができる。
クライアントのハードウェア識別子がクライアントデバイスで既に分かっているので、ユーザ名又はパスワードがユーザによって提供され、それに対応するデータの一部をクライアントデバイスへ転送することは必要とされない。したがって、指数値を示す情報を転送するとき、ビットストリングsを省略してもよい。
実施例では、難読化された指数yを識別するステップのステップ306は、λの倍数k(例えば、kλ)を設定するステップを含み、かつ、yがλよりはむしろkλに基づき決定される。例えば、yの値がkλまでの範囲でランダムに(使用された暗号化暗号文(cryptographic cipher)によって与えられた制約の中で)選択される。RSAの場合では、暗号化鍵eを所与として、復号鍵dが、e・d=1 mod λを解くことによって通常は見つけられる。しかし、本実施例では、λはkλによって置き換えられ、したがって、復号鍵dは、e・d=1 mod kλを解くことによって見つけられる。これはより大きな値dを結果として生じさせ、RSAにおける指数yとして使用される。
図4は、暗号化プロセスに使用するため、指数yを難読化するためのシステムを図示している。そのようなシステムは、暗号化プロセスのべき乗演算の指数値aを識別するための指数値識別手段402を備えてもよい。システムは、値λ(それが、暗号化プロセスに使用される複数の要素xについて、λ>0及びxλ=1を保持する)を識別するための指数下限識別手段(図示せず)を備えてもよい。システムは、難読化された指数y(ここで、y=a+bλであり、ここで、bは正の整数である)を設定するための難読化ツール(obfuscator)404を備えてもよい。システムは、デバイスに難読化された指数yを示す情報を提供するための指数プロバイダ(exponent provider)406をさらに備えてもよい。例えば、そのような指数プロバイダ406は、指数値yをデバイスへ転送されるデータストリームの中に含めてもよい。難読化ツール404は、鍵プロバイダ408から、指数値a及び/又は値λを受信するように構成してもよい。そのような鍵プロバイダ408は、例えば、各ユーザ又はクライアントデバイスのための鍵を保持したデータベースを備えてもよい。難読化ツールは、例えば、ランダム生成器410から、値bを受信するように構成してもよい。
代わりに、大きな指数を直接生成し、かつ、この大きな指数及びλからaを計算することも可能である。
図5は、ソフトウェアプログラムとして、方法及びシステムのうちの1又は複数を実施するのに適した例のハードウェアアーキテクチャを図示している。プログラムは、メモリ506に格納される複数の機械可読命令を含んでいる。実行中、これら命令はプロセッサ502にロードされ、かつ、実行される。通信ポート508が、サーバとの通信のために設けられて、例えば、指数及び/又は底を示すデータを交換する。代わりに、データを、取り外し可能な媒体510(例えば、フラッシュメモリ又はDVDディスク)から読み取るか、又は、それに書き込んでもよい。入力504が、例えば、暗号化されたコンテンツの一部の再生を開始及び停止するため、ユーザからのコマンドを受信するように構成されている。そのようなコマンドは、本明細書に説明された方法のうちの1又は複数の開始をトリガしてもよい。ディスプレイ512、及び/又は、増幅器(図示せず)を、例えば、プログラムの状態に関してユーザへフィードバックを提供するために、及び/又は、ユーザに復号されたコンテンツをレンダリングするために設けてもよい。
図面の略図は、単に、本明細書に説明されたシステム及び方法の可能性のある設計のスケッチを表している。これらは限定されない。例えば、処理ステップは、同じ機能を提供しながら、複数のモジュール及び/又はユニットに異なって分散してよい。
乗法演算を有する一部の代数構造Gにおけるべき乗xa(例えば、RSAについてのリング)を検討する。このべき乗では、xが変数であってよい。簡潔さのため、xはGのどんな要素であってもよいと仮定する。本発明は、xがGのサブセットから取られる場合にまで容易に及ぶ。さらに、Ωが、すべての
について、xΩ=1であるとする。例えば、Gがグループである場合(RSAについての場合ではない)、ΩをグループGの順序として定義することができる。次いで、べき乗xaは、整数bについてべき乗xa+bΩと等しい。
また、
について、値a1,a2, ...,amが、一部の整数bについて
を満たすとする。xa
を介して計算することが可能である。
a1,a2,...,amが、必ずしもaと同じビット長でないことに注意しなければならない。
指数aを格納するのに要求されたビット長が、
から、長さ
まで増加されるような方法で、a1,a2,...,amを選択することができる。ここに、
である。aが鍵から導出された場合、これは、鍵がどんなサイズにでも拡大されることを意味する。しかし、これは、指数及び/又は鍵のサイズを増大させるための唯一の方法でない。
α(a1,a2,...,am)が値a1,a2,...,amを指定するビットストリングであるとする。値a1,a2,...,amを適切に選択することが可能であり、それにより、予め指定されたストリング(例えば、ハードウェア又はユーザ識別子)がα(a1,a2,...,am)に含まれる。
攻撃者がソフトウェアプログラムからxaの計算について知識を抽出するのを防ぐために、隔離されたプログラムとして計算を有する代わりに、計算をプログラムの剰余に結合するのが望ましい。好ましくは、この結合は、べき乗演算の入力及び/又は出力をコード化するステップを具備している。このように、それが組み込まれるアプリケーションのコンテキストの外に、べき乗演算をうまく適用するのはより困難である。また、例えば、デバッガを有するべき乗の入力及び/又は出力値を観察することによって、有用な情報を導出するのはより困難である。z=xa(又は、同様に、
)を計算するためのべき乗ルーチンは、この意味で、例えば、以下の方法で周囲プログラムに結合される。周囲プログラムでは、β・xが、任意値βについて計算される。次いで、べき乗ルーチンは、zの代わりに、βa・zを計算する。これを補うため、周囲プログラムは、べき乗ルーチンの成果に定数β−aを掛ける。これら乗算を難読化された方法で実行してもよい(例えば、Chowらの入力及び出力符号化と同様に、乗算と他の処理ステップとを結合するルックアップテーブルを使用して)。
上記した特性はmの値に拘わらず適用される。即ち、それらは、
について適用される。
以下には、RSAの復号アルゴリズムのホワイトボックス実装が説明される。本明細書では、RSA復号の例が最も詳細に説明されるが、これは限定でない。開示される方法は、同様の方法で、例えば、RSA暗号化を実行するのに適用してもよい。また、方法を、異なる種類の暗号化、復号、及び、デジタル署名アプリケーションを含む他の暗号化アルゴリズムに適用してもよい。
RSA公開鍵暗号は、鍵生成、暗号化、及び復号のため、いくつかのプロセスを定義する。これらプロセスは以下のようにまとめられる。
鍵生成は以下のステップを具備してもよい。
1.2つの大きなランダム(かつ、互いに異なる)素数p及びq(それぞれが概ね同じサイズ)を生成する。
2.n=p・qを計算する。
3.Φ=(p-1)(q-1)を計算する。
4.gcd(e,Φ)=1となるように、ランダム整数e(1<e<Φ)を選択する。この記述で、gcdは最大公約数を意味する。
5.e・d=1 mod Φとなるように、固有の整数d(1<d<Φ)を計算する。
6.公開鍵が(n,e)によって与えられる。
7.秘密鍵がdによって与えられる。
暗号化は以下のステップを具備してもよい。
8.平文メッセージmを識別する。
9.整数x(
)として、メッセージmを表す。
10.暗号テキストが、c=xe mod nによって与えられる。
復号は以下のステップを具備してもよい。
11.暗号テキストメッセージcを識別する。
12.整数xが、x=cd mod nによって与えられる。
13.平文メッセージmは、xによって表されたメッセージである。
上記したステップ3のΦの定義を所与とする(
についてxΦ=1 mod n)。例として、Φ=(p-1)(q-1)が1024ビット値であると仮定する。次いで、指数dが最大で1024ビットを有する。Ω=Φを使用して、指数dを、任意サイズK>1024のストリングに隠蔽してもよい。第1に、これはm=1の場合について説明される。次いで、m=2の場合が説明される。m=1及びm=2の場合の説明を考慮すればm>2の場合を実施する方法が当業者には明らかである。
m=1の場合には、条件
をa1=d+bΩとして書くことができる。単純化のため、y=a1と定義する。これは、xd mod nをxy mod nを介して実装してもよいことを意味する。所定のビット長Kに対して表現(representation)を有するyを見つけることが可能である。(ここで、表現は最上位部における先行ゼロを含まず、かつ、Kはdのビット長より大きい。)値yは、bが
を満足する場合、Kビット値である。
これを見るには、bのこの選択によって、指数d+bΩが
を満足することを観察する。
故に、値y=d+bΩに関連付けられたバイナリストリングがKビットからなる。したがって、指数dが、より大きなKビットストリングyに隠蔽されている。
yに任意ビットストリングを包含することが可能である。
に対するlビットの予め指定されたストリングを検討する。そのようなストリングlを、指数yを指定するビットストリングの中に包含してもよい。仮に、sが、我々が包含することを所望するlビットのビットストリングに関連付けられた数であるとする。l=K-rと仮定する。l<K-rの場合、いくつかの任意ビットを、例えば、ストリングの前、及び/又は、後に追加してもよい。
値Sは、sの最下位側にrゼロビットを加えることにより、Kビット値にそれを拡張することによってsから得られる(即ち、これらrゼロビットは、Sの最下位ビットとなる)。x<Ωに対する値S+xのバイナリ表現が、sについてのバイナリストリングで開始してもよいことに注意しなければならない(即ち、我々が包含することを所望するバイナリストリング)。
を定義する。したがって、
であり、故に、x<Ωについてd+bΩ=S+xである。故に、指数y=d+bΩのバイナリ表現はバイナリストリングsで開始する。
m=2の場合、条件
を、a1・a2=d+bΩとして書くことができる。これは、xd mod nを以下のように計算してもよいことを意味する。
第1に、
を計算する。次いで、
を計算する。結果はxd mod nである。
に対するKへa1及びa2の合計ビット長を増加させることを望むと仮定する。これは、
を満足する値a1及びa2を選択することによって実現してもよい。例えば、これは、以下のステップを使用して実行することができる。
gcd(a1,Ω)=1を満足する任意K-rビット値としてa1を選択する。この説明を考慮すれば、そのような値a1を見つけることは当業者にとって実現可能な範囲内である。
a1・a2=d mod Ωを満足する値a2を計算する。値a2は以下のように計算することができる。ユークリッドのアルゴリズムを使用して、a1・c=1 mod Ωを満足する値cを計算する。このようにして得られた値a1及びa2がa1・a2=d mod Ωを満足するので、値a2を、a2=c・d mod Ωとして計算してもよい。
値a1はK-rビット値であり、かつ、a2はrビット値であってもよい。故に、xd mod nの計算に使用された指数を格納するための記憶要求がKに増大している。
上記したステップは、m=2の場合について、より大きなストリングに指数dを隠蔽するための方法を説明する。
実施例では、予め指定されたビットストリングが、ホワイトボックス実装の指数に包含される。a1及びa2を指定するビットストリングの中にa1及びa2を変換する関数として、α(a1,a2)を定義する。明らかに、α(a1,a2)の選択は関数である(a1及びa2に関連付けられたビットストリングを単に連結させる)。α(a1,a2)では、gcd(s,Ω)=1に対して長さK-rビットのビットストリングsを、sと等しいようにa1を選択することによって包含してもよい。
(ここで、ΩがxΩ=1 mod nを満足する)に対する値a1,a2,…,amに指数aを隠蔽することができる。この方法では、
ビットから
ビットまで、指数を格納するのに必要とされる記憶スペースを増大させることができる。一部のアプリケーションでは、いったんKビットベクトル(a1,a2,…,am)を有すれば、攻撃者が、このKビットベクトルの記憶サイズを減少させることが困難であることが好ましい(例えば、攻撃者が下部のkビット指数aを抽出することを望まない)。この特性を、ホワイトボックス実装は「コンパクションに耐性がある」と言うことで言及してもよい。(a+bΩ) mod (c・Ω)がa+bΩより小さいが、機能的に等しいので、Kビットベクトル(a1,a2,…,am)を格納するのに必要とされる記憶スペースを減少させるために、それが、
に対する値c・Ωを見つけるのに十分であることに注意しなければならない。
攻撃者(より少ないビットを有する指数の表現を見つけることを意図する)が、Kビットベクトル(a1,a2,…,am)の他に、攻撃者のディスポーザルに追加的な情報も有する。例えば、(a1,a2,…,am)を使用して、RSAの秘密(復号)指数dを隠蔽する場合を検討する。次いで、一般に、攻撃者は公開(暗号化)指数eへのアクセスも有する。これら値が
を満足する。
故に、上記から、コンパクションに耐性があるためには、RSAホワイトボックス実装の所望の特性は以下のとおりという結果になる。公開値e及び
に対するプライベート値a1,a2,…,amを有すると、次いで、攻撃者が、
に対する値c・Ωを見つけるのは依然として困難である。
より一般的な設定では、RSAとの関連外で、以下が観察される。
指数aが値a1,a2,…,amに隠蔽されると仮定する(故に、
)。さらに、攻撃者が、f(a1,a2,…,am)=α・Ωに対する関数fを計算することができると仮定する。次いで、コンパクションに耐性があるためには、攻撃者がα・Ωから
に対する値α・Ωを導出するのが困難であることが望ましい特性である。
上記したRSAの例では、関数fを
によって与えてもよいことに注意しなければならない。
一般的な設定に戻れば、2つのアプローチが、攻撃者が
に対するそのような値c・Ωを導出することができることを識別される。
c・Ωを見つけるための第1のアプローチは以下のとおりである。仮定によって、攻撃者は、値f(a1,a2,…,am)=α・Ωを導出することができる。ここで、次のように、攻撃者は値β1,β2を導出可能であると仮定する。
α・Ω=β1・β2 (1)
及び
β1|α (2)
これは、値cについて、β2=c・Ωを生じさせる。ここで、値β1,β2
であるような場合、β2は、
に対する値c・Ωである。即ち、β2を、指数
(ここで、
)を見つけるのに使用することができる。
に対するc・Ωを見つけるための第2のアプローチは以下のとおりである。第2のアプローチでは、2つの異なる(しかし、機能的に等しい)ホワイトボックス実装
及び、
を、
に対する値c・Ωを見つけるのに使用してもよい。これら機能的に等しいホワイトボックス実装は、
及び、
を生じさせる。
関数fを
及び、
に適用することが、α1及びα2について、値α1・Ω及びα2・Ωをそれぞれ結果として生じさせてもよい。これら2つの値について、それは、値cについて、
gcd(α1・Ω, α1・Ω)=gcd(α1, α2)・Ω=c・Ω
を保持する。
の場合、ホワイトボックス実装のさらなるリダクションが得られる。RSAの例について、有効である攻撃について、b2=b1+kαを満足するkが存在しないことに注意しなければならない。故に、
が、
への多数倍の値α・Ωを加算することによって得られない。
上記した2つの攻撃アプローチは、以下のように対抗される。攻撃者が、(1)及び(2)を満足する値β1,β2を導出することを可能にすることを防ぐ(これら値を有することが攻撃のベースである)。そのようなβ1,β2を見つけることを難しくさせるためのアプローチは、αの素因数分解が、大きな素数だけを含む(好ましくは、値αは素数である)よう気をつけることである。さらに、Ωの因数分解が少なくとも1つの大きな素数を含む場合に都合がよい。この点では、素数は、それが暗号的にセキュアである場合に、十分に大きいように考慮される(即ち、前記大きな素数のサイズに課される制約が、暗号化アルゴリズム(例えば、RSA)に使用される暗号的にセキュアな素数に共通に課される制約と似ている)。
より一般的な用語では、要素x(暗号化プロセスに使用される)が、n個の要素を有する代数構造の要素であってよい。例えば、RSAでは、復号(decrypter)指数として使用されるとき、指数yは、値eについて、e・y=1 mod nを満足してもよい。この場合、値αについて、e・y-1=α・λである。そのような値αλは攻撃者によって見つけられる。難読化された指数yを識別するステップ(306)は、λの素因数分解が少なくとも1つの大きな素数を含み、かつ、αの素因数分解が大きな素数だけを含むことを満足するyを選択するステップを具備してもよい。例えば、そのような大きな素数は、共通のコンピュータシステムにおいて、徹底的なサーチを防ぐのに十分に大きい素数である(例えば、素数は少なくとも64ビットを含む)。
本発明がコンピュータプログラム(特に、キャリア上、又は中のコンピュータプログラム)にも拡張され、本発明を実現するように構成されることが理解される。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形式などの中間ソース及びオブジェクトコードの形式で、又は、本発明による方法の実施における使用に適した他の形式であってよい。また、そのようなプログラムは多くの異なるアーキテクチャデザインを有してよいことが理解される。例えば、本発明による方法又はシステムの機能を実行するプログラムコードを、1又は複数のサブルーチンに分割してもよい。これらサブルーチンの中に機能を分散するための多くの異なる方法を当業者なら理解する。サブルーチンは、1つの実行ファイルに一緒に格納されて、自己完結したプログラムを形成してもよい。そのような実行ファイルは、コンピュータ実行命令を具備してよい(例えば、プロセッサ命令、及び/又は、インタプリタ命令(例えば、Java(登録商標)インタプリタ命令))。代わりに、1又は複数、又は、すべてのサブルーチンを、少なくとも1つの外部ライブラリファイルに格納し、かつ、静的又は動的に主プログラムとリンクしてもよい(例えば、ランタイムで)。主プログラムは、サブルーチンのうちの少なくとも1つへの少なくとも1つの呼び出しを含む。また、サブルーチンは相互に関数呼び出しを具備する。コンピュータプログラム製品に関する実施例は、説明された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行命令を具備している。これら命令を、サブルーチンに分割し、かつ/又は、静的又は動的にリンクされる1又は複数のファイルに格納してもよい。コンピュータプログラム製品に関する他の実施例は、説明されたシステム及び/又は製品のうちの少なくとも1つの手段のそれぞれに対応するコンピュータ実行命令を具備している。これら命令を、サブルーチンに分割し、かつ/又は、静的又は動的にリンクされる1又は複数のファイルに格納してもよい。
コンピュータプログラムのキャリアは、プログラムを運ぶことが可能なエンティティ又はデバイスであってよい。例えば、キャリアは、ROMなどの記憶媒体(例えば、CD ROM又は半導体ROM)、又は、磁気記録媒体(例えば、フロッピー(登録商標)ディスク、又はハードディスク)を含んでよい。さらに、キャリアは電気又は光信号などの転送可能なキャリアであってよい(電気又は光ケーブルを介して、又は、無線又は他の手段によって伝えられる)。プログラムがそのような信号に具体化されるとき、キャリアを、そのようなケーブル又は他のデバイス又は手段によって構成してもよい。代わりに、キャリアは、プログラムが埋め込まれる集積回路であってよく、集積回路は、関連する方法を実行するように(又は、実行における使用のために)構成される。
上記した実施例は本発明を制限するよりむしろ説明し、かつ、当業者は特許請求の範囲から逸脱することなく多くの変形例を設計可能であることに注意しなければならない。請求項において、丸括弧間の参照符号が、請求項を制限するものと解釈されてはならない。動詞「含む(comprise)」及びその活用の使用により、請求項に記載された要素又はステップ以外の要素又はステップの存在を除外しない。要素に先行する冠詞「a」又は「an」により、そのような要素の複数の存在を除外しない。本発明は、いくつかの別々の要素を備えたハードウェアの手段によって、及び、適切にプログラムされたコンピュータによって、実施してもよい。いくつかの手段を列挙する装置の請求項では、これら手段のうちのいくつかを、ハードウェアの同一のアイテムによって具体化してもよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実が、これら手段の組合せが有利に使用されることができないことを示さない。
102 底識別手段
104 指数識別手段
106 べき乗器
404 難読化ツール
406 指数プロバイダ

Claims (7)

  1. 指数を難読化する方法であって、
    第1の決定手段を用いて、λ > 0と、a < λ、と、暗号化処理においてべき乗の底値として使用される、乗法群からの、複数の要素xについてxλ = 1と、をみたす値λを決定するステップであって、aは暗号化処理における指数としての利用のための鍵値である、ステップと、
    第2の決定手段を用いて、ビットストリングsを決定するステップと、
    難読化ツールを用いて、λより大きく、正の整数bについてy = a + bλをみたす難読化された指数yを決定するステップであって、前記難読化された指数yのビット表現が前記ビットストリングsを具備するものである、ステップと、
    提供手段を用いて、前記暗号化処理での使用のための前記難読化された指数yを示す情報を提供し、これによって前記鍵値aを攻撃者から隠蔽するステップと、
    を具備する
    方法。
  2. 前記難読化された指数yを示す情報が前記ビットストリングsを省略する、請求項1に記載の方法。
  3. 前記ビットストリングsがtビットを有し、前記難読化された指数yのための与えられたビット長であるKと、
    とについて、
    であって、前記方法が、前記第2の決定手段を使用して、
    t < K - rである場合には、前記ビットストリングsの前、及び/もしくは、後に任意のビットを追加することによって前記ビットストリングsを長さがK - rビットとなるよう拡張するステップと、
    r個のゼロビットを前記ビットストリングsの最下位側に追加することによって、前記ビットストリングsから値Sを得るステップと、
    を定義するステップと、
    を具備する、請求項1もしくは2に記載の方法。
  4. デバイスにおいて鍵値aを用いて暗号化処理を行う方法であって、
    第1の受信手段を用いて、底値xを受信するステップであって、前記底値xが前記暗号化処理においてべき乗の底値として用いられる、乗法群からの、複数の要素の一つであり、
    第2の受信手段を用いて、前記暗号化処理における利用のための難読化された指数yの部分を示す情報を受信するステップと、
    組み合わせ手段を用いて、前記難読化された指数yを得るために受信した前記情報とビットストリングsを組み合わせるステップであって、前記鍵値aに対してy = a + bλであり、a < λ、かつ、bが正の自然数であり、難読化された指数yのビット表現が前記ビットストリングsを有し、これによって攻撃者から前記鍵値aを隠蔽するものである、ステップと、
    べき乗器(exponentiator)を用いて、xyを計算することにより、前記暗号化処理の少なくとも部分を行う、方法。
  5. 前記ビットストリングsが
    (a)前記暗号化処理を行うためのデバイスの識別子
    (b)前記暗号化処理を行うためのデバイスのユーザのパスワード
    (c)前記暗号化処理を行うためのデバイスのユーザのユーザ名
    のいずれかを表すものである、請求項1〜4のいずれか1に記載の方法。
  6. 前記暗号化処理で用いられる前記複数の要素が、前記乗法群のすべての要素である、請求項1〜5のいずれか1に記載の方法。
  7. 請求項1〜6のいずれか1に記載の方法を実行するよう構成されたシステム。
JP2014161511A 2008-05-07 2014-08-07 指数難読化 Pending JP2014207717A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP08155798.5 2008-05-07
EP08155798 2008-05-07

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011508041A Division JP2011520150A (ja) 2008-05-07 2009-05-05 指数難読化

Publications (1)

Publication Number Publication Date
JP2014207717A true JP2014207717A (ja) 2014-10-30

Family

ID=40745816

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011508041A Pending JP2011520150A (ja) 2008-05-07 2009-05-05 指数難読化
JP2014161511A Pending JP2014207717A (ja) 2008-05-07 2014-08-07 指数難読化

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011508041A Pending JP2011520150A (ja) 2008-05-07 2009-05-05 指数難読化

Country Status (7)

Country Link
US (1) US8600047B2 (ja)
EP (2) EP2286330A1 (ja)
JP (2) JP2011520150A (ja)
KR (1) KR20110014630A (ja)
CN (1) CN102099780B (ja)
CA (1) CA2736898A1 (ja)
WO (1) WO2009136361A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2255317B1 (en) 2008-03-05 2013-05-15 Irdeto B.V. Cryptographic system
US20100150343A1 (en) * 2008-12-15 2010-06-17 Nxp B.V. System and method for encrypting data based on cyclic groups
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US10235506B2 (en) 2015-05-05 2019-03-19 Nxp B.V. White-box modular exponentiation
US10089500B2 (en) 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
KR101933649B1 (ko) * 2016-05-27 2018-12-28 삼성에스디에스 주식회사 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법
US10270598B2 (en) 2016-08-26 2019-04-23 Intel Corporation Secure elliptic curve cryptography instructions
FR3063857B1 (fr) * 2017-03-08 2020-02-14 Safran Identity & Security Procede de signature electronique d'un document avec une cle secrete predeterminee
US11895230B2 (en) * 2019-01-24 2024-02-06 Nec Corporation Information processing apparatus, secure computation method, and program
WO2023081222A1 (en) * 2021-11-03 2023-05-11 Arris Enterprises Llc White-box processing for encoding with large integer values

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121107A (ja) * 1993-10-28 1995-05-12 Nec Corp 鍵生成方法および装置
JP2004004341A (ja) * 2002-05-31 2004-01-08 Toshiba Corp べき乗剰余計算装置、べき乗剰余計算方法及びプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2101124T3 (es) * 1991-11-05 1997-07-01 Thomson Multimedia Sa Metodo, aparatos emisor y receptor para explotacion por modulo.
US5991415A (en) * 1997-05-12 1999-11-23 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for protecting public key schemes from timing and fault attacks
ATE325478T1 (de) 1998-01-02 2006-06-15 Cryptography Res Inc Leckresistentes kryptographisches verfahren und vorrichtung
EP1038370B1 (en) 1998-06-25 2006-09-06 Koninklijke Philips Electronics N.V. Synchronous stream cipher
FR2800478B1 (fr) * 1999-10-28 2001-11-30 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique
DE10042234C2 (de) 2000-08-28 2002-06-20 Infineon Technologies Ag Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
FR2818846B1 (fr) 2000-12-22 2004-03-05 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
US8479016B2 (en) * 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121107A (ja) * 1993-10-28 1995-05-12 Nec Corp 鍵生成方法および装置
JP2004004341A (ja) * 2002-05-31 2004-01-08 Toshiba Corp べき乗剰余計算装置、べき乗剰余計算方法及びプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6013038869; Thomas S. Messerges, et al.: 'Power Analysis Attacks of Modular Exponentiation in Smartcards' Lecture Notes in Computer Science Vol.1717, 1999 *
JPN6013038871; 本田洋之,松本勉: '署名生成ソフトウェアのランタイムデータ探索による耐タンパー性評価' 2005年暗号と情報セキュリティシンポジウム講演論文集 , 200501 *
JPN6013038873; 門田暁人,Clark Thomborson: 'ソフトウェアプロテクションの技術動向(前編)-ソフトウェア単体での耐タンパー化技術-' 情報処理 Vol.46 No.4, 20050415, p.431-437 *

Also Published As

Publication number Publication date
WO2009136361A1 (en) 2009-11-12
EP2286330A1 (en) 2011-02-23
US20110064215A1 (en) 2011-03-17
CN102099780B (zh) 2015-08-12
CN102099780A (zh) 2011-06-15
JP2011520150A (ja) 2011-07-14
US8600047B2 (en) 2013-12-03
EP2669789A2 (en) 2013-12-04
EP2669789A3 (en) 2014-06-25
CA2736898A1 (en) 2009-11-12
KR20110014630A (ko) 2011-02-11

Similar Documents

Publication Publication Date Title
CA2717622C (en) White-box implementation
US20220141038A1 (en) Method of rsa signature or decryption protected using a homomorphic encryption
JP2014207717A (ja) 指数難読化
US7634091B2 (en) System and method of hiding cryptographic private keys
JP6017501B2 (ja) 暗号システム
JP5249053B2 (ja) データ処理システムの完全性
KR101226167B1 (ko) 암호 함수 모호화 방법 및 시스템
JP5496880B2 (ja) データセキュリティ

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20141217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151207

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160328