説明

中間データ変更を使用する構成可能な鍵を用いるホワイトボックス暗号システム

AESなどの鍵依存の暗号操作を実行するためのホワイトボックスシステム(600)が提示される。このシステムは、暗号操作を一緒になって実行するために構成された複数のルックアップテーブル(640)のネットワークを備え、このネットワークは、特定の暗号鍵に適合される。ネットワークに対して、さらなる暗号鍵を表現する鍵代替(664)を送ることによって、鍵変換ユニットが、暗号操作に対するネットワークの効果をさらなる暗号鍵に適合させることができる。このようにして、システムは、その特定の鍵ではなく、さらなる鍵を使用するように更新され得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、出力メッセージに入力メッセージをマップする鍵による暗号操作を実行するためのホワイトボックス暗号システムに関し、このシステムは、暗号操作を一緒になって実行するために構成された複数のルックアップテーブルのネットワークを備え、このネットワークは、特定の暗号鍵に適合される。
【0002】
本発明は、鍵による暗号操作を実行するための暗号法、および対応するコンピュータプログラムにさらに関する。
【背景技術】
【0003】
インターネットは、デジタルコンテンツへの便利で、ユビキタスなアクセスをユーザに提供する。強力な流通経路としてのインターネットの潜在性のため、多くのCE(家庭用電子機器)製品が、インターネットに直接にアクセスしようと、またはインターネットに対する最も有力なポータルであるPCプラットフォームと相互動作しようと努めている。CE製品には、デジタルセットトップボックス、デジタルTV、ゲームコンソール、PCが含まれ、さらに、PDA、モバイル電話機などのハンドヘルドデバイス、およびアップル社のiPodなどのモバイルストレージデバイス-レンダリングデバイスがますます含まれるが、以上には限定されない。著作権で保護されたコンテンツのための流通媒体としてインターネットの使用は、コンテンツプロバイダの権益をセキュリティで保護する逼迫した課題を生じさせる。特に、コンテンツプロバイダの著作権およびビジネスモデルを保証することが要求される。ますます、CEプラットフォームは、適切なソフトウェアをロードされたプロセッサを使用して動作させられている。そのようなソフトウェアは、オーディオおよび/またはビデオなどのデジタルコンテンツのレンダリング(再生)のための機能の主要な部分を含むことが可能である。再生ソフトウェアの制御が、コンテンツが使用されてもよい契約条件を含め、コンテンツ所有者の権益を執行する1つの方法である。従来、多くのCEプラットフォームが非公開であったのに対して(PCおよびPDAを例外として)、今日では、ますます多くのプラットフォームが、少なくとも部分的に公開されている。特にPCプラットフォームの場合、一部のユーザは、コンテンツへのアクセスをもたらすハードウェアおよびソフトウェアを完全に支配するとともに、いずれのコンテンツ保護機構も攻撃し、迂回する大量の時間およびリソースを有するものと想定され得る。その結果、コンテンツプロバイダは、正当なユーザに対するコンテンツを、敵対的なネットワークを介して、すべてのユーザもしくはデバイスが信頼され得るわけではないコミュニティに配信しなければならない。
【0004】
通常、デジタル権利管理システムは、ラウンドと呼ばれる、暗号化/復号のシーケンスを使用して、ブロック単位でデータストリームを処理するブロック暗号に基づく暗号化技術を使用する。各ラウンド中、ラウンド特有の機能が実行される。ラウンド特有の機能は、ラウンド特有の副鍵の制御下で実行される同一のラウンド機能に基づくことが可能である。
【0005】
コンテンツプロバイダは、正当なユーザに対するコンテンツを、敵対的なネットワークを介して、すべてのユーザもしくはデバイスが信頼され得るわけではないコミュニティに配信しなければならない。特にPCプラットフォームの場合、ユーザは、コンテンツへのアクセスをもたらすハードウェアおよびソフトウェアを完全に支配するとともに、いずれのコンテンツ保護機構も攻撃し、迂回する無制限の時間およびリソースを有するものと想定されなければならない。コンテンツが使用されてもよい契約条件を執行するソフトウェアコードは、改ざんされてはならない。PCに配信される保護されたコンテンツに関するデジタル権利管理における一般的なアプローチは、デジタルコンテンツを暗号化すること、例えば、DES(デジタル暗号化標準)、AES(高度暗号化標準)、または特許文献1において開示される方法を使用すること、および解読鍵を使用することである。
【0006】
暗号化に依拠するデジタル権利管理の脆弱性の2つの主要な領域は、コンテンツが使用されてもよい契約条件を執行するソフトウェアプラグイン、および鍵の配布と扱いである。
【0007】
コンテンツを暗号化するのに使用される鍵は、漏洩した後、比較的容易にインターネットを介して配布され得る。このことを回避する1つの方法は、ホワイトボックス暗号法を使用することであり、鍵依存の暗号操作が、実装に完全なアクセスを有する攻撃者によってさえ、その鍵が回復され得ないように実行される。ホワイトボックス暗号法において、攻撃者は、実装に対する完全なアクセスを有するものと想定される。システムの入力挙動および出力挙動を分析することの他に、ホワイトボックスコンテンツにおいて、攻撃者は、システムの内部挙動を分析することも可能である。通常、特定の暗号化操作または解読操作に対応する鍵を使用可能な形態で回復することが、ホワイトボックス攻撃の目標である。
【0008】
ほとんどのホワイトボックス実装は、ランダムな符号化などのランダム性の覆いを加えるとともに、ソフトウェアアプリケーションの制御パスとデータパスの両方の複雑度を増すことによって、暗号鍵を隠すことに基づく技術を使用する。このことの背後にある着想は、単にコードを詳しく調べることだけによって情報を抽出することが、より困難になることである。
【0009】
以降、「Chow 1」と呼ばれる、非特許文献1および以降、「Chow 2」と呼ばれる、非特許文献2が、ランダムな全単射でテーブルを符号化することと、暗号境界を、包含するアプリケーションにまでさらに入り込ませることによって、暗号境界を拡大することの組合せによって、暗号を隠すことを意図する方法を開示する。
【0010】
Chowのホワイトボックス実装において、鍵は、実装に明示的には存在しない。このことは、実装を詳しく調べることによって鍵が見出されるリスクを低減する。そうではなく、鍵は、暗黙にしか存在しない。Chowは、部分的評価の方法を使用して、鍵を暗号システムの中に隠し、このシステムにおいて、鍵入力を必要とするルックアップテーブルが、その鍵に依存する限りにおいて評価され、入力メッセージには依存しない。例えば、基本的演算、入力値、鍵値、ならびに入力メッセージに依存しないマスキング値、例えば、排他的論理和演算される必要があるsボックスからの値が、鍵値とマスキング値を前もって一緒に排他的論理和演算することによって、部分的に評価されることが可能である。このようにして、鍵値は、実装に明示的には存在しないものの、操作は、依然として、鍵値に依存する。代わりに、鍵値とマスキング値の排他的論理和演算だけが、実装に存在する。
【0011】
Chow1およびChow2で採られるアプローチの問題は、鍵がホワイトボックス実装に埋め込まれていることである。鍵に依存するすべての操作は、1つの特定の鍵に依存するように単純化される。このようにして、その特定の鍵が、実装全体にわたって広められて、難読化を介して鍵を隠すことがより容易にされる。実装における鍵スケジュールを有する代わりに、Chow1およびChow1で採られるアプローチは、すべてのラウンド鍵を事前計算する。したがって、別個の鍵スケジュールの必要性は全くなく、そのような鍵スケジュールもなしで済ませられる。
【0012】
このアプローチの欠点は、ホワイトボックス実装が、1つの暗号鍵に関してしか使用され得ないことである。このことは、一部のアプリケーションに関して欠点であると考えられる。例えば、セキュリティ上の理由で、使用される鍵を頻繁に更新することを所望する可能性がある。何らかの時点で、何らかの理由で、その特定の鍵が漏洩した場合、その鍵が攻撃者の役に立つのは、次の鍵更新までの限られた時間の間だけである。さらに、複数の鍵を使用する可能性を有することは、鍵管理を行うことをより容易にする。例えば、第1のグループの人々に向けられた第1のコンテンツが、第1の鍵で暗号化されることが可能であり、第2のグループの人々に向けられた第2のコンテンツが、第2の鍵で暗号化されることが可能である。第1のグループと第2のグループの共通部分に入るユーザは、第1の鍵と第2の鍵の両方として鍵が再構成された単一のホワイトボックスシステムを使用して、第1のコンテンツと第2のコンテンツの両方にアクセスすることが可能である。さらに、使用される鍵を事前に固定することを不可能にする、または実行不可能にする、いくつかのプロトコルおよび暗号標準が存在する。例えば、鍵ネゴシエーションプロトコルは、固定鍵を使用する暗号操作と一緒に使用され得ない。また、OMA DRMなどのDRM標準も、コンテンツ鍵、権利鍵などのために異なる鍵が使用されることを想定する。
【0013】
ホワイトボックス実装において使用される鍵を更新する1つのソリューションは、ホワイトボックス実装全体、または少なくとも、ホワイトボックス実装のテーブルのすべてを更新することであるが、そうすることは、ホワイトボックス実装のサイズが、特に、通常の鍵のサイズと比較した場合、しばしば、かなり大きいので、実際的ではない可能性がある。例えば、ホワイトボックス実装は、数十キロバイト、または数百キロバイトでさえある可能性があるのに対して、単一のAES鍵は、16バイトでしかない。対応するラウンド鍵にまで拡大されるAES鍵さえ、160バイトでしかない。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】国際出願公開WO9967918号
【非特許文献】
【0015】
【非特許文献1】Stanley Chow、Philip Eisen、Harold Johnson、およびPaul C. Van Oorschot著、「White-Box Cryptography and an AES Implementation」、Selected Areas in Cryptography: 9th Annual International Workshop、SAC 2002、カナダ国、ニューファンドランド州、セントジョンズ、2002年8月15〜16日
【非特許文献2】Stanley Chow、Philip Eisen、Harold Johnson、およびPaul C. van Oorschot著、「A White-Box DES Implementation for DRM Applications」、Digital Rights Management: ACM CCS-9 Workshop、DRM 2002、米国、ワシントンDC、2002年11月18日
【発明の概要】
【発明が解決しようとする課題】
【0016】
入力メッセージを出力メッセージにマップする鍵による暗号操作を実行するための改良されたホワイトボックス暗号システムを得ることが有利である。このシステムは、暗号操作を一緒になって実行するために構成された複数のルックアップテーブルのネットワークを備え、このネットワークは、特定の暗号鍵に適合される。このネットワークは、単一のAES鍵から鍵スケジュールを介して獲得されることはない、独立したラウンド鍵と一緒に使用されることも可能であることに留意されたい。このようにして、操作が依存する鍵材料の量が、大幅に増加させられることが可能である。例えば、AESの場合、128ビットではなく、128ビットの10倍の独立した鍵材料を得ることが可能である。このシステムは、ネットワークに対してさらなる暗号鍵を表現する鍵代替を受け取るように構成される。このシステムは、ネットワークにおける中間暗号結果に依存する第1の入力と、鍵代替に依存する第2の入力とを受け取るために構成された少なくとも1つの鍵変換ユニットを備える。このシステムは、ネットワークおよび鍵変換ユニットを介して入力メッセージを出力メッセージにマップして、暗号操作に対するネットワークの効果が、そのさらなる暗号鍵に適合されるために構成される。
【課題を解決するための手段】
【0017】
この暗号システムは、ルックアップテーブルを使用して、入力メッセージを中間処理データにマップし、さらに最終的に出力メッセージにマップすることによって、鍵依存の暗号操作を実行する。マッピングを行うのに使用されるルックアップテーブルは、暗号操作が依存する鍵を表す。このシステムは、鍵変換ユニットを介して入力メッセージを出力メッセージにマップする。鍵変換ユニットの入力うちの1つは、暗号操作を一緒になって実行するために構成されたネットワークにおける中間暗号結果である。マッピングは、鍵変換ユニットを介して実行されるので、鍵変換ユニットは、暗号操作が実行される仕方に影響を与える機会を有する。ネットワークにおけるルックアップテーブルは、変更される必要がないものの、ルックアップテーブルが暗号操作に与える効果は、ネットワークにおける中間結果に影響を与えることによって、鍵変換ユニットによって変更され得る。暗号操作に対するネットワークの効果は、ネットワークがさらに暗号鍵に適合されるように構成されることが可能である。
【0018】
鍵変換ユニットの第2の入力は、鍵代替である。鍵代替は、システムに対して、さらなる暗号鍵を表現するので、システムは、暗号操作に対するルックアップテーブルのネットワークの効果を、そのネットワークが、このさらなる暗号鍵に適合されるように適合させることができる。
【0019】
1つまたは複数の鍵変換ユニットによって挙動が変更されることが可能な、特定の鍵に適合される複数のルックアップテーブルが存在することが可能である。例えば、特定の鍵に特有であるルックアップテーブルごとに鍵変換ユニットが存在することが可能である。
【0020】
システムは、鍵代替を受け取ることができるので、鍵は、システムの外部から、特に、暗号操作がホワイトボックスとして実装された後でさえ、更新されることが可能である。
【0021】
前述したとおり、多くの暗号操作に関して、ホワイトボックス実装を得ることが所望される。本発明は、例えば、対称暗号操作および非対称暗号操作に適用されることが可能である。また、本発明は、テーブル暗号、ストリーム暗号、メッセージ認証スキーム、署名スキームなどに適用されることも可能である。また、本発明は、ハッシュ関数に適用されることも可能であることに留意されたい。このことは、ハッシュ関数が、秘密の情報、例えば、秘密鍵、秘密データなどを処理する構築テーブルとして使用される場合に、特に役立つ。例えば、本発明は、鍵によるハッシュメッセージ認証コード(HMACまたはKHMAC)において使用されるハッシュ関数に適用されることが可能である。よく知られたテーブル暗号には、AES(高度暗号化標準)、SAFER(セキュアで高速な暗号化ルーチン、およびその変種、SAFER+およびSAFER++)、Blowfish、DES(データ暗号化標準)などが含まれる。よく知られたストリーム暗号が、RC4である。さらに、任意のテーブル暗号が、適切な動作モード、例えば、CFB(暗号フィードバック)、CTR(カウンタモード)などを使用してストリーム暗号として使用され得る。
【0022】
入力メッセージは、例えば、オーディオデータおよび/またはビデオデータを含め、マルチメディアデータなどの、例えば、暗号化されたコンテンツデータであることが可能である。また、暗号化されたコンテンツデータは、暗号化されたソフトウェア、例えば、何らかのコンピュータアプリケーション、例えば、コンピュータゲーム、またはオフィスアプリケーションを表す、暗号化されたコンピュータコードを備えることも可能である。また、入力メッセージは、さらなる暗号操作において使用するための鍵であることも可能である。さらなる暗号操作は、例えば、鍵交換プロトコルにおいて使用される可能性があり、本発明によるホワイトボックス実装が、新たな鍵を表すデータの暗号化および/または解読を行う。また、入力データは、平文データ、例えば、平文ユーザデータであることも可能である。このことは、メッセージ認証スキームにおいて特に有利である。本発明によるホワイトボックス実装は、この実装が暗号化のためだけに使用されること、解読のためだけに使用されることが可能であるが、暗号化と解読の両方のためには使用され得ないという特性を有することが可能である。例えば、この特性は、この実装が、全単射ではないルックアップテーブル、例えば、出力ビットより多くの入力ビットを有するルックアップテーブルを使用する場合に、実現され得る。したがって、或るユーザが、ホワイトボックスディスクリプタだけしか有さない場合、そのユーザは、MACコードを検証することは可能であるが、新たなMACを作成することは可能でない。このことは、そのようなメッセージ認証スキームの否認防止特性を強化する。
【0023】
それらの複数のルックアップテーブルは、一部のルックアップテーブルから獲得された出力のいくつかが、他のルックアップテーブルの入力として、または入力の一部として使用されるという意味で、互いに接続される。ルックアップテーブルマネージャが、ルックアップテーブルからの中間結果の受信、またはルックアップテーブルへの中間結果の転送を管理するのに使用されることが可能である。したがって、ルックアップテーブルは、前のテーブルの1つまたは複数のテーブルの結果をベースにする。このようにして、ルックアップテーブルは、暗号操作を一緒に表すルックアップテーブルのネットワークを形成すると言うことができる。ルックアップテーブルは、例えば、中間結果をもたらすように、暗号操作の一部分を計算するのに使用され得るある種の基本ブロックである。このシステムは、このネットワークと一緒に使用されることも可能である、さらなる基本計算ブロック、例えば、コンピュータソフトウェアで実装された公式を備えることが可能である。ルックアップテーブルのネットワークは、互いに直接に依存することが可能であり、例えば、何らかのルックアップテーブルが、別のルックアップテーブルの出力を入力として直接に受け取ることが可能である。また、この依存関係は、間接的であっても、例えば、2つのルックアップテーブルの中間に配置された何らかのタイプの基本ブロックを介してもよい。例えば、ホワイトボックス暗号システムは、いくつかの、場合により、並行の、テーブルルックアップを備え、その後に、テーブルルックアップとしては実装されない排他的論理和演算が行われ、その後に、さらなるテーブルルックアップが行われることが可能である。
【0024】
ルックアップテーブルは、ハードウェアで、例えば、コンピュータチップとして実装されることが可能である。ルックアップテーブルは、スイッチボード、状態マシン、あるいはコンピュータハードウェアにおいて機能を実施するための他の任意の適切な構造を使用することが可能である。また、ルックアップテーブルは、汎用コンピュータチップ上、例えば、マイクロプロセッサ上で実行されているソフトウェアで実施されることも可能である。例えば、ルックアップテーブルは、ルックアップテーブルの機能を一緒になって実施する、算術命令を含む複数のコンピュータ命令を使用することが可能である。ソフトウェアとハードウェアの両方において使用され得る鍵変換ユニットに関する好ましい実装が、ルックアップテーブルである。ルックアップテーブル実装は、可能な入力値として出力値をリストアップするリストを備える。入力値は、ルックアップテーブルの中で明示的であることが可能である。その状況において、ルックアップテーブル実装は、特定の入力を特定の出力にマップすることを、入力値のリストの中でその特定の入力を探索することによって行うことも可能である。その特定の入力が見出された場合、その特定の出力も見出される。例えば、その特定の出力は、その特定の入力と一緒に格納されることが可能である。好ましくは、それらの入力値は、明示的には格納されず、暗示的にだけ格納される。例えば、可能な入力が、或る連続した範囲の、例えば、数値またはビット文字列である場合、ルックアップテーブルは、出力値のリストを格納することに制限されることが可能である。特定の入力数値が、その数値によって示されるロケーションに格納された特定の出力にマップされることが可能である。ルックアップテーブルは、ルックアップテーブルをブール関数に変換することによって、ハードウェアゲートとして実装されることも可能であることに留意されたい。例えば、カルノー図を使用して、これを行ういくつかの技術が知られている。
【0025】
ルックアップテーブルを使用することは、ルックアップテーブルが比較的単純明快な仕方で難読化され得るという利点を有する。例えば、テーブルの出力値は、符号化されていない値を符号化された値で置き換えることによって、何らかの仕方で符号化されることが可能である。
【0026】
或る関数に関するルックアップテーブルが、例えば、その関数の可能な入力値に関して、その関数の出力値を計算して、それらの出力をリストの中に格納することによって、作成されることが可能である。その関数が複数の入力に依存する場合、出力は、その複数の入力の可能なすべての組合せに関して計算され、格納されることが可能である。ルックアップテーブルは、入力を出力に不規則な仕方でマップする、非線形関数を実装するのに特に適している。ホワイトボックス実装は、後段で説明されるとおり、その実装のルックアップテーブルの1つまたは複数に、固定の難読化入力符号化、および固定の出力符号化を適用することによって、さらに難読化されることが可能である。固定の難読化入力符号化および出力符号化を適用したことの結果が、次に、完全に事前評価される。この技術を使用して、ルックアップテーブルは、同一のサイズを有することが可能であり、さらに同一の数の出力ビットをもたらすのに同一の数の入力ビットを取り入れることが可能な、難読化されたルックアップテーブルによって置き換えられる。そのような難読化において使用される入力符号化および出力符号化は、最終のホワイトボックス実装において明示的ではない。
【0027】
ルックアップテーブルのネットワークは、それらのルックアップテーブルに入力メッセージが提示された場合に出力メッセージを計算するように構成される。通常、それらの入力メッセージは、いくつかの基本入力テーブルによって操作される。いくつかのさらなるルックアップテーブルが、基本入力テーブルの1つまたは複数から、さらに/または入力メッセージから入力を取り入れることが可能である。さらなるルックアップテーブルが、入力メッセージ、基本入力テーブルの出力、および前述のさらなるルックアップテーブルの出力の任意の組合せで入力を取り入れることが可能である。最後に基本出口テーブルの何らかのセット、すなわち、少なくとも1つの基本出口テーブルが、出力として、出力メッセージのすべて、または一部をもたらす。このようにして、入力メッセージから出力メッセージへのマッピングを一緒になって計算するルックアップテーブルのネットワークが、出現する。
【0028】
使用される鍵は、好ましくは、暗号鍵であり、好ましくは、予期される総当たり攻撃に耐えるのに十分なだけのエントロピーを含む。この鍵は、ラウンド鍵のコレクションと考えられることが可能である。
【0029】
暗号結果の計算中に使用される中間結果、例えば、ネットワークにおける中間結果、の1つまたは複数は、1つまたは複数の内部符号化を使用して符号化される。中間結果の符号化は、ホワイトボックス実装の強度に寄与する。つまり、内部符号化は、特に、これらの符号化が、ランダムに選択される場合、および/または或る特定のホワイトボックス実装のために特別に選択される場合、その特定の鍵、および/またはシステムの構成が合わされる、さらなる鍵を回復することを、より困難にする。
【0030】
或る実施形態において、その複数のルックアップテーブルの少なくとも1つの特定のルックアップテーブルは、その特定の暗号鍵に適合される。システムは、その特定のルックアップテーブルを介して入力メッセージを出力メッセージにマップして、暗号操作に対するその特定のルックアップテーブルの効果が、そのさらなる暗号鍵に適合されるために構成される。
【0031】
それらのルックアップテーブルのうちいくつかのルックアップテーブルの内容は、その特定の鍵に依存する。例えば、ホワイトボックス実装の構築中、それらのルックアップテーブルは、その特定の鍵に特に適合される、例えば、それらのルックアップテーブルは、鍵加算を、場合により、鍵加算が組み合わされる他の操作と一緒に含むことが可能である。このことは、特定の鍵変換テーブルを、その特定のルックアップテーブルに特に適合させる可能性をもたらす。このことは、その特定の鍵変換テーブルの複雑度を低減する。
【0032】
その鍵に依存する特定のルックアップテーブルは、その特定のルックアップテーブルが依存する鍵ビットの数、すなわち、鍵データの量が、鍵ビットの総数より少ないことが可能であるという利点を有する。例えば、ブロック暗号DESは、768鍵ビット(48ビットのラウンド鍵を使用して16ラウンド)を必要とする。しかし、1回の鍵加算は、6ビットという小さいものであることが可能である。そのような小さい鍵加算に適合された鍵変換テーブルは、より大きい(副)鍵に関する鍵加算と比べて、複雑度がより低い。DESおよびAESを含め、多くのブロック暗号は、1つの、より小さい鍵からラウンド鍵を計算する鍵スケジュールを使用して規定され得ることが注目される。例えば、DESに関するラウンド鍵の768ビットは、単一の56ビット鍵から計算され得る。しかし、ラウンド鍵としての表現は、そのような表現が鍵スケジュールを難読化するという問題を回避するので、ホワイトボックス暗号法のために、より好都合であり得る。さらに、鍵スケジュールは、攻撃者に新たな攻撃ベクトルを与える可能性がある、さらなるロジックである。しかし、このことは、必ずしも当てはまるわけではなく、ホワイトボックスシステムは、難読化された鍵スケジュールを使用して、鍵の長さをさらに短縮することも可能であることに留意されたい。
【0033】
或る実施形態において、特定のルックアップテーブルは、さらなる鍵に適合された特定のルックアップテーブルが、入力に、場合により、符号化された、オフセットを加算することによって、さらに/またはその入力の出力に、場合により、符号化された、オフセットを加算することによって獲得され得るという特性を有する。つまり、特定のルックアップテーブルのすべての入力に、入力がその特定のルックアップテーブルを使用して処理される前に、固定の数値を加算すること、および/または特定のルックアップテーブルのすべての出力に、その特定のルックアップテーブルがその特定のルックアップテーブルの入力を処理した後に、固定の数値を加算することによって、その特定のルックアップテーブルが、そのさらなる暗号鍵に適合された、異なるルックアップテーブルで置き換えられたとした場合と同一の効果が実現される。
【0034】
鍵変換ユニットは、様々な仕方で実現され得る。例えば、鍵変換ユニットは、1つまたは複数のルックアップテーブルを備えることが可能である。例えば、鍵変換テーブルは、排他的論理和テーブル、例えば、タイプIVテーブルを備えることが可能である。より大きい鍵を排他的論理和演算するのに、鍵変換ユニットは、これらのテーブルの2つ以上であることも可能である。さらに、鍵変換ユニットは、ソフトウェアで実施されることが可能である。その特定の鍵、またはさらなる鍵に適合された中間データの間の、より複雑な関係を表すのに、このタイプの鍵変換テーブルは、よく適している。また、鍵変換ユニットは、1つまたは複数の公式として表されることも可能である。例えば、鍵変換ユニットは、ルックアップテーブルとしては表されず、例えば、ハードウェアゲート、あるいはマイクロプロセッサのためのコマンドを使用して行われる加算であることが可能である。
【0035】
或る実施形態において、鍵変換ユニットの第1の入力は、複数のルックアップテーブルのうち1つまたは複数による入力メッセージに依存し、さらにシステムは、鍵変換ユニットの出力に依存する入力を受け取る特定のルックアップテーブルに合わせて構成される。例えば、特定のルックアップテーブルの入力は、鍵変換ユニットの出力を備えることが可能である。
【0036】
特定のルックアップテーブルの入力を鍵変換ユニットの出力に依存させることによって、特定のテーブルへの入力に直接に影響が与えられるという効果が実現される。このようにして、特定のルックアップテーブルに向けられた入力は、鍵変換ユニットとその特定のルックアップテーブルの総合効果が、その特定のルックアップテーブルがさらなる鍵に適合されているかのようになるように、事前に変換されることが可能である。
【0037】
例えば、第1の入力値が、特定のルックアップテーブルによって第1の出力値にマップされ、このことが、特定の鍵に対応するマッピングと合致するものと想定されたい。さらに、さらなる鍵に対応するマッピングにより、第1の入力値は、第2の出力値にマップされなければならないものと想定されたい。次に、鍵変換ユニットが、第1の入力値を第2の入力値にマップすることが可能であり、このことは、特定のルックアップテーブルが、特定の鍵に対応するマッピングにより、第2の入力値を第2の出力値にマップするように選択される。鍵変換ユニットと特定のルックアップテーブルが組み合わされる場合に実現される効果は、暗号操作に対する特定のルックアップテーブルの効果が、少なくとも、第1の入力値に関する限り、さらなる暗号鍵に適合されることである。要約すると、第1の入力値が、鍵変換ユニットによって第2の入力値にマップされ、第2の入力値は、特定のルックアップテーブルによって第2の出力値にマップされる。合わせると、このマッピングは、第1の入力値を第2の出力値にマップすることになる。このマッピングは、その特定のテーブルのその他の入力値に関しても行われることが可能であり、つまり、さらなる暗号鍵に向けられた入力値が、その特定の暗号鍵のための入力値に変換される。つまり、その特定のテーブル自体は、その特定の鍵、そのネットワーク、およびそのシステムに適合されるものの、その特定のテーブルが、さらなる鍵に適合されるように見える。
【0038】
鍵代替は、さらなる暗号鍵との直接の関係を有さなくてもよい。そうではなく、鍵代替は、特定の鍵に適合された操作を、さらなる鍵に適合された操作として再使用するのにシステムをどのように再構成すべきかをシステムに指示する。したがって、攻撃者にとっての鍵代替の価値は、限定される。さらに、鍵変換ユニットが、鍵代替符号化により符号化された、第2の入力、すなわち、鍵代替を受け取るように構成されることが可能である。鍵代替符号化は、任意の仕方で、例えば、線形および/または非線形で、例えば、ランダム符号化として選択され得るので、このことが、鍵代替とさらなる暗号鍵の間の関係をさらに難読化する。
【0039】
好ましい実施形態において、鍵変換ルックアップテーブルは、出力符号化を使用して構成され、さらに特定のルックアップテーブルは、その出力符号化に対応する入力符号化を使用して構成される。
【0040】
特定のルックアップテーブルの入力が符号化されないとした場合、攻撃者は、鍵更新が行われても、行われなくても、暗号システムの処理を理論的に比較することができることになる。すると、攻撃者は、特定のルックアップテーブルへの入力がどのように変化するかを観察することができることになる。この観察から、攻撃者は、その特定の鍵とさらなる鍵の差に関する情報を導き出すことが可能である。その特定の鍵は秘密であり、攻撃者には知られていないはずであるものの、この情報を明かすことは、望ましくない状況である可能性がある。このことを回避するのに、鍵変換ユニットと特定のルックアップテーブルの間のインターフェースが、符号化を使用してさらに難読化する。鍵代替符号化と同様に、この符号化は、任意の所望される仕方で選択されることが可能である。このことは、鍵変換ユニットによって導入されるオフセットが符号化を介して難読化されるという効果を有する。
【0041】
或る実施形態において、システムは、第1の入力に関して、特定のルックアップテーブルの出力データに依存するように構成される。例えば、第1の入力は、特定のルックアップテーブルの出力データを備えることが可能である。
【0042】
出力メッセージは、特定のルックアップテーブルの出力データを処理する鍵変換ユニットに依存する。したがって、出力メッセージが特定のルックアップテーブルの出力に依存する仕方は、鍵変換ユニットを介して変更されることが可能であり、このため、鍵代替を介して変更されることが可能である。
【0043】
前述した例と類似した例が、鍵変換ユニットが、特定のルックアップテーブルの出力データを処理することによって、特定のルックアップテーブルの効果をどのように変更することができるかを明らかにすることができる。例えば、第1の入力値が、特定のルックアップテーブルによって第1の出力値にマップされ、このことは、その特定の鍵に対応するマッピングと合致するものと想定されたい。また、さらなる鍵に対応するマッピングにより、第1の入力値が第2の出力値にマップされるべきものと想定されたい。すると、鍵変換ユニットが、第1の出力値を第2の出力値にマップすることが可能である。その特定のルックアップテーブルと鍵変換ユニットが組み合わされる場合の効果は、暗号操作に対するその特定のルックアップテーブルの効果が、さらなる暗号鍵に適合されることである。要約すると、第1の入力値は、第2の出力値にマップされる第1の出力値にマップされる。合わせると、このマッピングは、第1の入力値を第2の出力値にマップすることになる。鍵変換ユニットは、特定の鍵に適合されている特定のテーブルの出力の、すべての出力値に関するさらなる鍵に対応する出力への、この変換を実行することが可能である。つまり、その特定のテーブル自体は、その特定の鍵、そのネットワーク、およびそのシステムに適合されるものの、その特定のテーブルが、さらなる鍵に適合されるように見える。
【0044】
好ましい実施形態において、特定のルックアップテーブルは、出力符号化を使用して構成され、さらに鍵変換ユニットは、その特定のルックアップテーブルの出力符号化に対応する入力符号化を使用して構成される。
【0045】
また、その特定のルックアップテーブルの出力と鍵変換ユニットの間のインターフェースが、さらに難読化されることが可能である。このことは、異なる鍵に関する複数の特定のルックアップテーブルの出力の間の関係が、その関係が攻撃者によって観察されたとした場合でも、出力符号化が攻撃者には知られていないので、全く情報を漏らさないという利点を有する。
【0046】
好ましい実施形態において、鍵代替は、さらなる暗号鍵とその特定の暗号鍵の間の差を備える。
【0047】
鍵代替は、ネットワークに対して、さらなる暗号鍵を表現する。この表現は、ネットワークの特定の実装に固有であることが可能である。つまり、異なるネットワークに同一の鍵代替を送ることが、異なるネットワークの鍵を更新する効果を有さないことが可能である。このことを実現する1つの方法は、鍵代替において、特定の鍵とさらなる鍵の差を表現することによってである。その他のネットワークの特定のルックアップテーブルが、異なる特定の鍵に対応する場合、鍵代替は、予期される鍵更新効果を有さない。他方のネットワークが、異なる鍵符号化を使用して実装される場合、鍵代替符号化の使用も、この利点を実現することに留意されたい。両方の方策を使用することは、鍵代替と、鍵代替が向けられる特定のホワイトボックスシステムの間の結合をさらに強化する。
【0048】
好ましい実施形態において、鍵変換ルックアップテーブルは、第2の入力を第1の入力に加算するために構成される。
【0049】
特定のテーブルの入力値および/または出力値に関して鍵変換ユニットが実行するマッピングが、効率的な仕方で表現され得ると、有利である。このことは、その特定のテーブルの可能な多くの入力が存在することが可能であるので、鍵変換および鍵代替の空間要件を大幅に低減する。例えば、値をマップする特定の効率的な仕方は、オフセットを導入することによってである。第1の入力は、鍵変換ユニットが符号化された入力を受け取ることが予期される場合、符号化されなければならない可能性があることに留意されたい。
【0050】
例えば、入力を加算すること、および差を計算することは、場合により、2つの補数表現を使用して、様々なタイプの加算、例えば、整数演算に関して行われ得る。加算および減算は、好ましくは、排他的論理和演算を使用して行われる。2つのビット文字列の合計と差は、排他的論理和が使用される場合、同一の仕方で計算され、同一の結果をもたらすことに留意されたい。
【0051】
好ましい実施形態において、特定のルックアップテーブルは、その特定の鍵に依存する副鍵の暗号鍵加算操作を備える。特定のルックアップテーブルは、様々な操作を一緒に構成することによって構築されることが可能である。例えば、AESの場合、特定のルックアップテーブルは、鍵加算、ならびにMixColumn操作の一部から構成されることが可能である。さらに、通常、入力符号化および出力符号化が使用される。特定のルックアップテーブルが鍵加算を備える場合、入力および/または出力の変更は、鍵代替によって、鍵加算に対するオフセットとして表現されることが可能である。このことは、鍵代替と鍵変換ユニットの両方に関して、複雑度およびサイズ要件を低減する。
【0052】
好ましい実施形態において、暗号副鍵加算操作、ならびに鍵変換ルックアップテーブルの中で第1の入力に第2の入力を加算することは、さらなる暗号鍵に依存するさらなる副鍵を暗号鍵加算操作に組み入れるように構成される。
【0053】
鍵変換ユニットによって、鍵変換ユニットの第1の入力に対して、鍵変換ユニットの第2の入力に依存して実行される操作が、特定のルックアップテーブルの操作を使用して関数合成として構成される場合、鍵変換ユニットにおける加算と、特定のルックアップテーブルにおける加算という、2つの加算が、意図される鍵の鍵加算をもたらすように組み合わされると、効率的である。鍵変換ルックアップテーブルは、単一のテーブルとして実装されることが可能である。しかし、鍵変換ユニットは、複数のルックアップテーブルにわたって分散されることも可能である。例えば、鍵変換ユニットは、その特定のルックアップテーブルの入力に影響を与えるテーブルと、その特定のルックアップテーブルの出力に影響を与えるテーブルにわたって分散されることが可能である。
【0054】
或る実施形態において、鍵変換ルックアップテーブルは、第2の入力符号化を使用して符号化された第2の入力を受け取るように構成され、さらにシステムは、少なくとも一部が第2の入力符号化を使用して符号化された鍵代替を受け取るように構成される。
【0055】
前述したとおり、鍵代替と、非ホワイトボックス実装において同一の暗号操作をもたらす、難読化されていない鍵との関係が可能な限り希薄であると、好ましい。このことを実現する1つの方法は、さらなる暗号鍵自体ではなく、その特定の暗号鍵とさらなる暗号鍵の差、例えば、オフセットを表現することによってである。このことを実現するさらなる方法は、鍵変換ユニットに埋め込まれた秘密の符号化を使用して鍵代替を符号化することである。この目的を達する1つのさらなる方法は、その特定のルックアップテーブルの入力符号化に応じて、難読化された仕方で入力および/または出力を変更することを必要にする、その特定のルックアップテーブルに対する入力符号化および/または出力符号化を得ることである。
【0056】
本発明のさらなる態様は、入力メッセージを出力メッセージにマップする鍵による暗号操作を実行するための暗号法である。
【0057】
この方法は、暗号操作のために構成された複数のルックアップテーブルのネットワークを使用して暗号操作を実行することを備え、このネットワークは、特定の暗号鍵に適合される。この方法は、ネットワークに対して、さらなる暗号鍵を表現する鍵代替を受け取ること、およびネットワークの中間暗号結果に依存する第1の入力と、鍵代替に依存する第2の入力とを鍵変換ユニットに供給することを備える。ネットワークを使用して暗号操作を実行することは、ネットワークおよび鍵変換ユニットを介して入力メッセージを出力メッセージにマップして、暗号操作に対するネットワークの効果をさらなる暗号鍵に適合させることを備える。
【0058】
本発明による方法は、コンピュータによって実施される方法として、または専用ハードウェアとして、あるいはその方法とそのようなハードウェアの組合せとして実施されることが可能である。本発明による方法のための実行可能コードは、コンピュータプログラム製品上に格納されることが可能である。コンピュータプログラム製品の例には、メモリデバイス、光ストレージデバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。
【0059】
好ましい実施形態において、コンピュータプログラムは、このコンピュータプログラムがコンピュータ上で実行された場合に、本発明による方法のすべてのステップを実行するように適合されたコンピュータプログラムコード手段を備える。好ましくは、このコンピュータプログラムは、コンピュータ可読媒体上で実現される。
【0060】
AESなどの鍵依存の暗号操作を実行するためのホワイトボックス暗号システムが提示される。このシステムは、暗号操作を一緒になって実行するために構成された複数のルックアップテーブルのネットワークを備え、このネットワークは、特定の暗号鍵に適合される。ネットワークに対して、さらなる暗号鍵を表現する鍵代替を送ることによって、鍵変換ユニットが、暗号操作に対するネットワークの効果をさらなる暗号鍵に適合させることができる。このようにして、システムは、その特定の鍵ではなく、さらなる鍵を使用するように更新され得る。
【0061】
更新可能な鍵を使用する別のホワイトボックスが、参照により本明細書に組み込まれている、2009年6月19日に最初に出願した、整理番号PH013580が付けられ、「White-box cryptographic system with configurable key using block selection」という名称の、本出願と同一の出願者および同一の発明者の特許出願において与えられている。
【0062】
本発明のこれら、およびその他の態様が、図面を参照して後段で説明される。
【図面の簡単な説明】
【0063】
【図1】AESのラウンドにおける操作を示す図である。
【図2】テーブルを難読化することの例を示す図である。
【図3】ホワイトボックスAES実装における列に関するラウンドを示す図である。
【図4】タイプIaテーブルに組み込まれたマッピングを示す図である。
【図5】タイプIIテーブルに組み込まれたマッピングを示す図である。
【図6】タイプIIIテーブルに組み込まれたマッピングを示す図である。
【図7】タイプIVテーブルに組み込まれたマッピングを示す図である。
【図8】タイプIbテーブルに組み込まれたマッピングを示す図である。
【図9】更新可能な鍵を用いるホワイトボックス実装を示す図である。
【図10a】鍵依存のルックアップテーブルおよび鍵変換ユニットを示す図である。
【図10b】鍵依存のルックアップテーブルおよび鍵変換ユニットを示す図である。
【図10c】鍵依存のルックアップテーブルおよび鍵変換ユニットを示す図である。
【図11】ホワイトボックスAESのラウンドを示す図である。
【図12】或る実施形態を示す図である。
【発明を実施するための形態】
【0064】
本発明の働きを、例として、1つのブロック暗号、ブロック暗号AESを使用して説明する。しかし、このことは、本発明が、より一般的に、その他のブロック暗号、例えば、DESにも適用され得るが、より一般的には、他の暗号プリミティブ、例えば、ハッシュ関数にも適用され得るので、単に説明的な例示として行われる。
【0065】
概略として、以下が行われることが可能である。ブロック暗号AESが最初に、ブロック暗号AESの計算のためのルックアップテーブルのネットワークだけを使用して、或る形態に変換される。すべての暗号プリミティブをルックアップテーブルに変換することは、必要ない。実際、その計算のいくらかは、ルックアップテーブル以外の他の形態のプリミティブを使用して行われることが可能である。後段で、AESが、ルックアップテーブルだけを使用してどのように実行され得るかを示すが、すべての変換が採用される必要はない。ルックアップテーブルのネットワークへの変換は、特定の鍵に関して行われる。正確な鍵は、すべてが0の鍵、または任意のランダムな鍵であるように選択され得る。鍵に対する明示的な参照は、このプロセスにおいては消えるものの、一部のルックアップテーブルの内容は、鍵に依存することが判明する。一部のルックアップテーブルは、実施上の選択、例えば、使用される難読化する符号化だけに依存するのに対して、他のルックアップテーブルは、鍵にも依存する。
【0066】
ホワイトボックス実装が適合される鍵を更新可能にする1つの方法は、鍵変換ユニットを導入することによってである。鍵変換ユニットは、ルックアップテーブルの前に置かれることが可能である。鍵依存のルックアップテーブルに送られるべき入力は、鍵変換ユニットがそれらの入力を変更することが可能であるように、鍵変換ユニットを経由させられる。データが鍵依存のルックアップテーブルに送られるまでに、データに対して実行される変更は、鍵代替に依存する。鍵ルックアップテーブルは、同一のマッピングを実行しつづけることが可能であるが、いわば、このマッピングは、ルックアップテーブルのネットワークの残りのルックアップテーブルに変換される。
【0067】
鍵代替は、少なくともネットワークに対して、さらなる暗号鍵を表現する。鍵代替は、同一のさらなる暗号鍵を、ただし、暗号実装の別のホワイトボックス実装に対して表現する別の鍵代替とは完全に異なることが可能である。このことの背後にある理由は、鍵代替が、ネットワークが適合される特定の暗号鍵に関して表現されることが可能なことであり、特定の暗号鍵は、異なるホワイトボックスネットワークに関して異なるように選択され得ることである。さらに、鍵代替は、符号化を使用して難読化されることが可能であり、符号化が、他方のホワイトボックスにおいて異なるように選択されることも可能である。最後に、鍵代替は、特定のルックアップテーブルの入力および/または出力に関して使用される符号化を考慮に入れなければならない可能性がある。
【0068】
別の可能性は、鍵依存のルックアップテーブルの後に鍵変換ユニットを位置付けることである。ルックアップテーブルのネットワークの残りのルックアップテーブルに送られるべき鍵依存のルックアップテーブルの出力は、鍵変換ユニットがそれらの出力を変更することが可能であるように鍵変換ユニットを経由させられる。データが鍵依存のルックアップテーブルを通過させられた後に、データに対して実行される変更は、鍵代替に依存する。
【0069】
鍵依存のルックアップテーブルの入力および出力を変更することは、組み合わされることが可能である。更新可能であるべき各鍵依存のルックアップテーブルにつき、1つの鍵変換ユニットが使用されることが可能である。しかし、1つの鍵変換ユニットが、複数の鍵依存のルックアップテーブルに関して再使用されてもよい。例えば、2つのテーブルが同一の鍵、例えば、ラウンド鍵の同一の部分に適応させられ、同一の符号化を使用する場合、再使用が可能である。実装を完全に鍵更新可能にするのに、すべての鍵依存のルックアップテーブルが、更新可能でなければならない。しかし、すべてのテーブルが、本明細書で説明される仕方で更新可能にされる必要はない。他の技術が組み合わされることが可能であり、例えば、一部のルックアップテーブルは、それらのルックアップテーブルを完全に置き換えることによって、新たな鍵に適合されてもよい。また、異なる鍵にそれぞれが適合された、いくつかの鍵依存のルックアップテーブルの複数のコピーを前もって構築することも可能である。後に、使用されるべき鍵依存のテーブルを選択するテーブル選択文字列が、受け取られることが可能である。異なる技術を組み合わせることは、鍵更新手順をさらに難読化するという利点を有する。
【0070】
AESは、128ビット、つまり、16バイトのブロックサイズを有するブロック暗号である。平文が、符号化アルゴリズムの初期状態を形成する16バイトのブロックに分割され、符号化アルゴリズムの最終状態は、暗号文である。AESを概念的に説明すると、状態のバイトが、4×4バイトの行列として編成される。AESは、いくつかのラウンドから成る。各ラウンドは、状態行列のバイト、行、または列に対して操作する同様の処理ステップから構成され、各ラウンドは、これらの処理ステップにおいて異なるラウンド鍵を使用する。
【0071】
図1は、AESのラウンドのいくつかの主要な処理ステップを示す。処理ステップは、以下を含む。すなわち、
AddRoundKey 802 状態の各バイトが、ラウンド鍵のバイトと排他的論理和演算される。
SubBytes 804 ルックアップテーブルを使用するバイト間の置換。
ShiftRows 806 状態の各行が、固定数のバイトだけ回転させられる。
MixColumns 808 各列が、GF(28)におけるモジュロ乗算を使用して処理される。
ステップSubBytes 804、ShiftRows 806、およびMixColumns 808は、使用される特定の鍵とは独立である。鍵は、ステップAddRoundKey 802において適用される。ステップShiftRows 806を除いて、これらの処理ステップは、その他の列の知識なしに4×4状態行列の各列に対して実行されることが可能である。したがって、これらの処理ステップは、各列が4つの8ビット値から成るので、32ビット操作と見なされ得る。破線810は、プロセスが、要求される数のラウンドが実行されるまで繰り返されることを示す。
【0072】
これらのステップのそれぞれ、またはステップの組合せは、ルックアップテーブルによって、またはルックアップテーブルのネットワークによって表されることが可能である。AddRoundKeyステップが、ラウンド鍵と排他的論理和演算することによって実施された場合、この鍵は、ホワイトボックス攻撃コンテキストにおいて攻撃者の目に見える。また、AddRoundKeyステップは、ルックアップテーブルに埋め込まれることも可能であり、このことは、その鍵を見出すことをそれほど明白でないようにする。実際、AESの完全なラウンドをルックアップテーブルのネットワークによって置き換えることが可能である。例えば、SubBytesステップ、ShiftRowsステップ、およびMixColumnsステップが、テーブルルックアップを使用して実施されることが可能である。後段で、AESの可能なホワイトボックス実装について、より完全に説明する。第1に、固定鍵に関してホワイトボックス実施技術を提示し、次に、その実装を更新可能な実装にどのように拡張すべきかを説明する。単一の固定鍵に適合されたホワイトボックス実装をもたらす中間ステップを経ることなしに、更新可能な実装を直接にもたらすことを選択することも可能であることに留意されたい。
【0073】
図2は、鍵を抽出することをさらにより困難にする仕方を示す。AES暗号化などの暗号操作が、基本操作のネットワークに変換された後、さらなる難読化が可能である。XおよびYを2つの関数、すなわち、基本操作とする。図812に示される合成操作Y○X=Y(X(c))、つまり、この合成操作を得るのに、YがXの後に実行されることを考慮されたい。この場合、cは、入力値、例えば、4バイトの状態行列である。しかし、このアプローチは、任意のタイプの入力値cに適用される。マッピングXおよびYは、メモリの中に格納され得るルックアップテーブルとして実施され得るが、マッピングXおよびYがメモリの中に格納されると、これらの値は、攻撃者によって読み取られる可能性がある。図814は、ルックアップテーブルの内容が、入力符号化Fおよび出力符号化Hを使用することによって、どのように難読化され得るかを示す。X○F-1およびH○Yに対応するルックアップテーブルが、例示されるとおり、XおよびYの代わりに格納されて、XおよびYを抽出することを、より困難にする。図816は、2つのテーブルの中間結果も符号化されるように、さらなる、例えば、ランダムな全単射関数Gをどのように追加すべきかを示す。この場合、2つのテーブル、すなわち、X’=G○X○F-1およびY’=H○Y○G-1がメモリの中に格納される。このことが、図18で再び示される。
Y’○X’=(H○Y○G-1)○(G○X○F-1)=H○(Y○X)○F-1
ただし、○は、通常どおり関数合成を表し(すなわち、任意の2つの関数f(x)およびg(x)に関して、定義により、f○g(x)=f(g(x))である)、XおよびYは、ルックアップテーブルによる実施に適した関数である。同様に、2つ以上の関数から成るネットワークが符号化され得る。XおよびYを符号化する実際のテーブルは、H○Y○G-1を単一のルックアップテーブルの中に組み合わせること、およびG○X○F-1を単一のルックアップテーブルの中に組み合わせることによって難読化される。F、G、および/またはHが知られていないままである限り、攻撃者は、ルックアップテーブルからXおよび/またはYについての情報を抽出することはできず、したがって、攻撃者は、Xおよび/またはYの基礎である鍵を抽出することができない。DESおよびラインデール(AESが、特定のインスタンス化である)を含む他の暗号アルゴリズムが、前述したのと同様の仕方で難読化され得るルックアップテーブルのカスケードまたはネットワークとして符号化されることも可能である。本発明は、前述した例示的な暗号アルゴリズムに限定されない。
【0074】
Chow1は、個々のステップではなく、合成を表すランダムな全単射を使用してテーブルを符号化することによって鍵を隠すことを意図する方法を開示する。秘密鍵抽出を防止することは、攻撃者が、ソフトウェア保護目的が他のマシン上で迂回されることを許す鍵材料を抽出すること、または鍵材料を公開して、インストールされたソフトウェアの大きいユーザベース全体にわたってセキュリティ対策を無効にする「グローバルクラック」を実質的に生じさせることが防止されるという利点を有する。Chow1は、ソフトウェアのみのソリューション、および敵対的なホストの現実という制約を所与として、より高い度合いの保護をもたらす。Chow1のアプローチにおいて、鍵は、(1)個々のステップではなく、合成のためのテーブルを使用すること、(2)これらのテーブルを、ランダムな全単射を使用して符号化すること、および(3)暗号境界を、暗号アルゴリズム自体を超えて、包含するアプリケーションに入り込むようにさらに広げて、攻撃者(リバースエンジニア)が、目的を達するのに、相当により大きいコードセグメントを理解することを余儀なくすることによって隠される。Chow1は、固定鍵アプローチを説明し、すなわち、鍵は、鍵に関する部分的評価によって実装に埋め込まれ、したがって、鍵入力は不必要である。部分的評価とは、鍵が関与する表現が、合理的に可能な限り、評価され、完全な表現ではなく、その結果がコードに入れられることを意味する。この場合、鍵が実装全体にわたって存在するので、このことは、それ自体、鍵を隠すが、さらに、ルックアップテーブルを難読化する効率的な技術が適用されて、鍵を隠すことが可能である。
【0075】
1つの可能な攻撃シナリオは、攻撃者が、鍵特有の実装を抽出して、その鍵特有の実装を鍵の代わりに使用することである。この問題は、より大きい包含するシステムの構成要素として機能するようにあつらえられた鍵特有の実装を設計することによって軽減され得る。その、より大きいシステムは、その構成要素に、操作された、または符号化された形態で入力を供給するように構成され得る。鍵固有の実装が、攻撃者によって取り除かれ、異なる、より大きいシステムに挿入されると、その鍵特有の実装は、その異なる、より大きいシステムが、その鍵特有の実装によって予期される、操作された形態で入力を供給しないので、適切に機能しない。
【0076】
符号化テーブルのステップを参照すると、符号化は恣意的であるので、結果は、1つのステップの出力符号化が次のステップの入力符号化と合致する場合に限って、有意である。例えば、ステップXの後にステップYが続く場合(Y○Xという計算をもたらして)、この計算は、以下のとおり符号化されることが可能である。
Y’○X’=(H○Y○G-1)○(G○X○F-1)=H○(Y○X)○F-1
【0077】
このようにして、Y○Xは、入力がFを使用して符号化される必要があり、出力がH-1を使用して復号される必要があるとはいえ、適切に計算される。これらのステップは、Y’およびX’に対応するテーブルとして別々に表され、したがって、F、G、およびHは、隠され、XおよびYも隠される。
【0078】
そのような混乱ステップとは別に、Chow1は、線形変換による拡散ステップを使用して、基礎をなす操作をさらに偽装する。全単射という用語は、前述した意味で使用される線形全単射を表すのに使用される。Chow1の実装は、操作された形態で入力をとり、異なる仕方で操作された形態で出力をもたらして、ホワイトボックスAES実装を、その実装を包含するアプリケーションから分離することを困難にする。混合全単射は、さらなる難読化手段を表し、AES機能を実施するのに必要ではないことに留意されたい。さらなる難読化が必要である場合、本発明によるホワイトボックスは、他の難読化技術と組み合わされることも可能である。
【0079】
Chow2は、プログラムから秘密鍵を抽出することを目的とするホワイトボックス攻撃に耐えるように設計されたDESの暗号実装を説明する。ルックアップテーブルネットワークを難読化することについて、この論文において説明される技術は、大部分、AESおよびその他を含む、他の暗号アルゴリズムにも適用される。実行環境を支配する攻撃者は、鍵を明示的に抽出することなしに、ソフトウェア自体を(例えば、解読のために)明らかに利用することができるが、攻撃者が手元のインストールされたインスタンスを使用することを余儀なくすることは、DRM(デジタル権利管理)システムプロバイダにとって、しばしば、価値がある。一般に、Chow2におけるアプローチは、完全に置換ボックスだけから成る実装に向けて取り組むことであり、置換ボックスのいずれも、アフィン変換は実施しない。Chow2において説明されるいくつかの技術は、一般的なアプローチをサポートする。これらの技術のいくつかが、I/Oブロック型の符号化、複合関数符号化、バイパス符号化、スプリットパス符号化、および出力分割である。
【0080】
部分的評価とは、実施の時点で知られている値に(部分的に)基づく表現が事前評価されることを意味する。簡略化された例において、鍵が「5」であり、「2*5」を実装に組み込むのではなく、元の実装が「2*鍵」という表現を含む場合、事前評価された表現「10」が実装に入れられる。このようにして、鍵「5」は、コードの中に直接には存在しない。固定鍵を用いるDESの場合、このことは、標準のSボックスを、例えば、コンパイル時に、またはコンパイル時より前に鍵から計算された、鍵特有の事前評価されたSボックスで置き換えることを含む。Chow2による混合全単射は、各出力ビットが多数の入力ビットに依存するように設計された全単射線形変換である。I/Oブロック型の符号化は、多数の入力ビットおよび出力ビットを扱うための符号化方法である。この場合、符号化/復号は、符号化の連結として形成されることが可能であり、各符号化は、入力/出力ビットのサブセットを扱う。複合関数符号化とは、2つ以上の操作が並行に処理され得る場合、単一の符号化関数が、並行の操作の入力(それぞれ、出力)の連結に適用されることを意味する。それは、多かれ少なかれI/Oブロック型の符号化の反対である。バイパス符号化とは、符号化変換が、或る数の余分なビットのエントロピーを、難読化されるべき変換の入力および/または出力に追加し、それらの余分なビットが手順の最終的な出力に影響を与えないように、それらのビットを「飛ばす」ように変換が難読化されるように再設計することを意味する。スプリットパス符号化とは、基本的な情報ビットを難読化するためにさらなる出力ビットをもたらすように変更された関数を意味する。出力分割とは、或る関数の出力が、いくつかの部分的関数にわたって分散されることを意味し、すべての部分的関数の出力は、関数の元の出力を獲得するために、好ましくは、明白ではない仕方で組み合わされなければならない。
【0081】
Chow2は、例えば、32ビットの、または96ビットさえもの広い入力を有するSボックスを構築するように符号化されたネットワークを構築することを提案する。そのような広い入力のSボックスは、より狭い入力、およびより狭い出力をそれぞれが有するSボックスのネットワークに分割され、Sボックスのそれぞれは、Sボックスに符号化関数を組み込むことによって符号化される。符号化関数の逆関数が、Sボックスの出力を処理する、さらなるSボックスに組み込まれる。言い換えると、そのさらなるSボックスは、Sボックスの出力符号化の逆である入力符号化を有する。
【0082】
(AESのホワイトボックス実装)
説明を簡明にするように改善するのに、この場合は、AESである、ブロック暗号の可能なホワイトボックス実装をまず説明する。後段で、ホワイトボックスが実行する正確な暗号操作が、ホワイトボックスに更新文字列を送ることによって、その後、変更され得るように、ホワイトボックスがどのように適合され得るかを示す。本発明が解決しようとする問題は、後段で与えられる特定の実装だけに限定されず、ホワイトボックス実装全般にみられることに留意されたい。知られているホワイトボックス実装についてのさらなる詳細に関して、Chow1、特に、セクション2.2からセクション3.6までを参照する。
【0083】
ホワイトボックスAES実装は、以下のとおり概説されることが可能である。AES暗号化-解読アルゴリズムへの入力は、単一の128ビットブロックである。このブロックは、16バイトから成る4×4行列によって表される。AESは、通常、AES-128のための10ラウンドから成る。各ラウンドは、AESの状態を形成する16バイトのセットを更新し、このため、各AESラウンドは、128ビットを処理する。AES-128は、128ビットの鍵を使用する。この鍵は、この鍵を128ビットの異なるラウンド鍵に変換するアルゴリズムのための入力の役割をする。基本ラウンドは、以下の4つの部分から成る。すなわち、
SubBytes
ShiftRows
MixColumns
AddRoundKey
【0084】
操作の、この順序は、AES暗号化に適用される。AES解読における操作の標準の順序は異なるものの、AES暗号化の場合と同一の、操作の順序を有するようにAES解読アルゴリズムを書き換えることが可能である。
【0085】
第1のラウンドより前に、追加のAddRoundKey操作が行われ、ラウンド10から、MixColumns操作が省かれる。鍵を使用する唯一の部分は、AddRoundKeyであり、その他の3つの部分は、鍵に対して何も行わない。この実施形態において、これらのラウンドの境界は、AddRoundKeyステップ、ならびに次のラウンドのSubBytesステップを1つのステップに統合するように変更される。ラウンドは、AddRoundKeyおよびSubBytesから始まり、その後にShiftRowsが続き、最後にMixColumnsが来る。
【0086】
第1に、鍵は、SubBytesステップとAddRoundKeyを一緒に1つのステップに合成することによって隠される。このことは、鍵が鍵単独でもはや目に見えないようにする。鍵は前もって知られているため、鍵が関与する操作は、事前評価され得る。このことは、ステップSubBytesにおいて使用される標準のSボックスが、鍵固有のSボックスで置き換えられることが可能であることを意味する。AES-128の鍵特有のインスタンスを生成するのに、鍵は、以下のとおり定義される16の8×8(すなわち、8ビット入力、8ビット出力)ルックアップテーブル
【0087】
【数1】

を作成することによって、SubBytes変換に組み込まれる。すなわち、
【0088】
【数2】

ただし、Sは、AES Sボックス(反転可能な8ビットマッピング)であり、
【0089】
【数3】

は、ラウンドrに関するラウンド鍵を表す4×4行列の位置i,jにおけるAES副鍵バイトである。これらのTボックスは、SubBytesステップを前のラウンドのAddRoundKeyステップと合成する。ラウンド10のTボックスは、ホワイトニング後の鍵を以下のとおり吸収する。すなわち、
【0090】
【数4】

ただし、sr(i,j)は、ShiftRowsステップの後のセルi,jの新たなロケーションを表す。Tボックスの総数は、10×16=160である。しかし、鍵は、Sが公開で知られているため、Tボックスから容易に回復され得る。このことが、追加の符号化を必要にする。線形変換が、入力をそれらのTボックスに拡散させるために使用される。これらの線形変換は、混合全単射と呼ばれ、GF(2)上の8×8行列として表され得る。混合全単射は、これらの全単射の効果を元に戻す、より前の計算によって逆にされる。
【0091】
図3は、状態(ShiftRowsを適用した後の)の1つの32ビット列に関するホワイトボックスAESのラウンドにかかわるテーブルを示す。その他の3つの32ビット列は、それらの列に関して、異なる鍵値が使用される可能性があるので、それらのテーブルが異なる内容を有するものの、同一の仕方で扱われる。さらに、異なる符号化が、その他の列に適用されることが可能である。
【0092】
ここで、テーブルの異なるタイプの名前について述べる。これらの名前は、後段で、より詳細に説明される。ラウンドの前に、128ビット状態の各バイトが、それぞれのタイプIaテーブルに適用される。このことは、タイプIVテーブルのネットワークを使用して排他的論理和演算されて、4つの32ビット値に分割される128ビット出力をもたらす、それぞれの128ビット値をもたらす。各32ビット値の処理ステップが、ここで概説される。32ビット値の4バイトは、4つのそれぞれのタイプIIテーブル20に入力される。4つのタイプIIテーブル20のそれぞれは、32ビット出力をもたらす。これらの出力は、タイプIVテーブル22を使用して、ビット単位で排他的論理和演算される。各タイプIVテーブル22が、4ビットのビット単位の排他的論理和を実行する。タイプIVテーブルの入力と出力を適切に結び付けることによって、当業者には理解されるとおり、4つの32ビット出力のビット単位の排他的論理和が実現されることが可能である。このステップの結果は、32ビット値である。この値の4バイトのそれぞれが、それぞれのタイプIIIテーブル24に適用される。各タイプIIIテーブルが、32ビット出力をもたらす。これらの出力が、タイプIVテーブル22のネットワークと同様のタイプIVテーブル26のネットワークを使用して、再び、ビット単位で排他的論理和演算される。その出力は、状態の列を示す32ビット値である。このことが、各ラウンドに関して繰り返される。
【0093】
4つの32ビット値のそれぞれに関してそれらのラウンドが実行された後、出力が組み合わされて、128ビット値にされる。128ビット値の各バイトが、タイプIbテーブルに適用され、結果が、タイプIVテーブルのネットワークを使用して排他的論理和演算される。
【0094】
図4は、タイプIaテーブル100を示す。図5は、タイプIIテーブル200を示す。図6は、タイプIIIテーブル300を示す。図7は、タイプIVテーブル400を示す。図8は、タイプIbテーブル500を示す。
【0095】
AES状態が、複数のバイトから成る4×4行列によって表される。MixColumnsステップが、一度に1つの列(4つの8ビットセル)に対して作用する。MixColumns操作を実施する32×32行列MCを考慮されたい。このことがテーブルによって表される場合、このテーブルは、232×32=137438953472ビット=16GBを要する。そのような大きいテーブルを回避するため、行列は、4つのセクションにブロック化される。
【0096】
MCは、4つの32×8セクション、MC0、MC1、MC2、MC3にブロック化される(ブロック208)。32ビットベクトルx=(x0,...,x31)にMCを掛ける乗算が、xのビットを4バイトに分け、MCのセクションのそれぞれに、それらのバイトのうち1つを掛けることによって行われて、4つの32ビットベクトル(z0,...,z3)がもたらされる。このことの後に、3つの32ビット排他的論理和が続き、最終的な32ビット結果zがもたらされる。これら4つのテーブルは合わせて、4×28×32=32768ビット=4KBしか要さない。
【0097】
これら3つの排他的論理和は、適切な連結(例えば、((z[0,0],z[0,1],z[0,2],z[0,3])+(z[1,0],z[1,1],z[1,2],z[1,3]))‖(z[0,4],z[0,5],z[0,6],z[0,7]+(z[1,4],z[1,5],z[1,6],z[1,7]))‖...)で、場合により、暗号化されたルックアップテーブルによってそれぞれが表される、24の4ビット排他的論理和に分割され、ただし、‖は、連結を表し、+は、排他的論理和を表す。これらのストリップ、および細分された排他的論理和を使用することによって、各ステップは、小さいルックアップテーブルによって表される。詳細には、i=0,...,3に関して、ziが、8×32ビットテーブルを使用して計算される。8×32ビットテーブルは、8ビット入力と、32ビット出力とを有する。そのようなテーブルは、それぞれ32ビットの28出力値をリストアップすることによって実施されることが可能である。4ビット排他的論理和は、24の8×4ビットテーブルになる。図7は、入力復号402および出力符号化406がどのように排他的論理和404の周りに置かれ得るかを示す。これらの符号化は、通常、ランダムに選択された非線形の4×4全単射である。これらの排他的論理和テーブルは、タイプIVテーブル400と呼ばれる。タイプIVテーブルは、前の2つの計算のそれぞれから入力4ビットをとる。それらの計算の出力符号化212は、互いを元に戻すようにタイプIVテーブルに関する入力復号402と合わせられる。4×4の非線形全単射の選択は、テーブルのサイズに依存する。この状況において、タイプIVテーブルは、28×4ビット=128バイトでしかない。合わせて3KBを要する、24のテーブルが必要とされる。それらの排他的論理和が分割されなかったとした場合、32ビット排他的論理和を計算する3つの排他的論理和テーブルが、必要とされることになる。Tボックス206および8×32ビットテーブル208は、別々のルックアップテーブルとして表されることも可能である。代わりに、Tボックス206および8×32ビットテーブル208は、SubBytes変換およびAddRoundKey変換、ならびにMixColumnsの一部を計算する新たな8×32ビットテーブル200を作成して、合成さ
れることが可能である。このことは、空間(Tボックスを格納する)と時間(テーブルルックアップを実行する)の両方を節約する。
【0098】
前述したとおり、MCをMCiに分割する前に、MCは、最大階数の4×4部分行列を有する正則行列として選択された、参照符号210で図5に例示される、32×32の混合全単射MBによって左乗算される。混合全単射の使用は、特定のテーブルに関する可能な構造の数を増加させる。
【0099】
図5は、4×4入力復号202と、4×4出力符号化212とを含む8×32タイプIIテーブル200を示す。これらの出力符号化および入力復号は、タイプIVテーブル400の入力復号および出力符号化と合わなければならない非線形4×4全単射である。タイプIIテーブル200の後に、タイプIVテーブル400が続く。MBを逆にするために、テーブルの追加のセットが、MB-1を計算するために使用される。(x’0,...,x’31)を、MixColumnsに対する入力とし、(z’0,...,z’31)を、MixColumnsの後の出力とする。(z’0,...,z’31)Tを、MBとの乗算の後の結果とする。(z’0,...,z’31)Tは、タイプIIIテーブル300に対する入力の役割をする。入力復号および出力符号化は、テーブルの出力符号化が、次のテーブルの入力復号によって元に戻されるため、この場合、考慮されなくてもよいことに留意されたい。タイプIIIテーブル300において、MB-1が適用され(304)、次のラウンドの4つのタイプIIテーブル200の4つの入力混合全単射の逆308。
【0100】
図6は、4×4非線形入力復号と、4×4非線形出力符号化とを含む8×32タイプIIIテーブル300を示す。これらのテーブルの後には、対応するタイプIVテーブル400が続く。
【0101】
1ラウンドのデータ操作は、128ビット状態行列に対する操作を含む。128ビット状態行列の32ビットの4つのストリップのそれぞれに対して実行されるデータ操作は、以下のとおりである。32ビットストリップが、4つの8ビットバイトに分割される。これらの4バイトの各バイトが、異なるタイプIIテーブル200に供給されて、4つの32ビット出力値がもたらされる。これらの値は、難読化されたタイプIVテーブル400を使用して排他的論理和演算されなければならない。その目的で、各32ビット出力値は、8つの4ビットニブルに分割され、ニブルの適切なペアが、それぞれのタイプIVテーブルに入力されて、4つの32ビット出力値の排他的論理和が、符号化された形態で獲得されるようになる。
【0102】
この32ビットの、もたらされる符号化された、排他的論理和演算された結果は、バイトに再び分割され、各バイトが、異なるタイプIIIテーブル300に入力される。タイプIIIテーブルの各ニブルの入力復号は、最後に適用されたタイプIVテーブルの出力符号化に対応する。タイプIIIテーブルは、難読化されたタイプIVテーブル400を使用して再び排他的論理和演算される4つの32ビット出力値を再びもたらす。
【0103】
要するに、これらのラウンドは、ルックアップテーブルによって実施される。単一のラウンドのルックアップテーブルは、以下のとおりネットワーク化される。データが、タイプIIテーブルに供給される。これらのテーブルの出力が、符号化された排他的論理和を表すタイプIVテーブルのネットワークに供給される。このネットワークの出力が、タイプIIIテーブルに供給されて、タイプIIテーブルによって挿入された混合全単射符号化が取り消される。ラウンドの符号化された出力は、最後に、タイプIIIテーブルの出力を、符号化された排他的論理和を表すタイプIVテーブルのネットワークに再び供給することによって導き出される。
【0104】
さらに、ホワイトボックス実装は、外部符号化をそれぞれ、打ち消すため、および挿入するために、初め(タイプIaテーブル100)と終わり(タイプIbテーブル500)にタイプIテーブルを含む。タイプIaテーブル100は、単一のテーブルルックアップを適用することによって、図4に示されるマッピングの連結を適用するように使用され得る。この連結において、4ビットニブル入力復号102が最初に現れる。次に、8ビット-128ビットマッピング104が現れ、このマッピングは、ネットワークの入力および出力の符号化の一部であり、このマッピングは、プログラム内の別の場所で取り消され得る。線形8ビット-128ビットマッピングの他に、他のテーブルも、外部符号化の一部であることが可能である。例えば、テーブル100が第1のラウンドに含まれる場合、102が含められることが可能である。同様に、テーブル500が最後のラウンドに入っている場合、符号化212が含められることが可能である。マッピング104の結果は、それぞれの8ビット全単射が適用される16の8ビット部分に分割される。最後に、出力ニブル符号化108が適用される。前述したとおり、マッピング102、104、106、および108のカスケードが、事前評価され、最終結果が、ルックアップテーブルとして表される。このことは、それぞれ128ビットのせいぜい256エントリを有するテーブルをもたらす。タイプIbテーブル500に組み込まれたマッピングの連結が、図8に概略で示される。第1のマッピングは、入力ニブル復号502であり、その後に、8ビット全単射504、rが最後のラウンドに対応するTボックスTri,j506、出力符号化をもたらすための8ビット-128ビットマッピング、および出力ニブル符号化510が続く。この種類のテーブルの128ビット出力は、ニブル入力、および出力符号化されたタイプIVテーブル400をやはり利用して、他のタイプIbテーブルの出力と排他的論理和演算される。出力符号化508は、プログラム内の別の場所で、すなわち、プログラムの暗号部分の外部で元に戻される。このことは、攻撃者が、プログラムの暗号部分の入力および出力だけを分析することによって、テーブルの符号化を破ることを、より困難にする。
【0105】
(AESの改良されたホワイトボックス実装)
前述したような、例えば、Chow1およびChow2におけるホワイトボックス技術が、様々な仕方で互いに組み合わされて、ブロック暗号、特に、置換アフィン変換暗号、ストリーム暗号、MAC(メッセージ認証符号)などを含む、多種多様な暗号操作のホワイトボックス実装が獲得されることが可能である。AESをルックアップテーブルに変換するのに、部分的評価の技術が使用された。その結果、鍵は、実装の全体に広がった。ホワイトボックス実装を更新可能にするのに、以下の変更が行われ得る。
【0106】
図3を再び参照すると、タイプIIテーブルおよびタイプIbテーブルだけが、これらのテーブルがTボックスを組み込むので、鍵に依存する。その他のテーブルは、暗号アルゴリズム(この場合は、AES)の詳細、および選択された符号化に依存する。
【0107】
図3は、AESの1ラウンドの中間データの1つの列、すなわち、32ビットに必要とされるすべてのタイプIIテーブルを示す。1つのタイプIIテーブルは、8鍵ビットに、つまり、1つのAESラウンド鍵の8ビットに依存する。関数合成として見られる場合、この鍵依存は、符号化直後の、関数列の最初に行われる(図5を参照)。この理由で、タイプIIテーブルを更新可能にする好都合な位置は、鍵変換ユニットをタイプIIテーブルより前に置くことである。この場合、タイプIIにおける鍵加算は、その鍵加算が鍵変換ユニットにおける加算と組み合わされ得るように配置されるので、排他的論理和演算を実行する鍵変換ユニットで十分である。鍵変換ユニットは、第1の入力として、タイプIIテーブルの入力に送られるべき、テーブルの出力をとり、第2の入力として、タイプIIテーブルに対応する鍵代替のバイトをとる。テーブル、特に、タイプIIテーブルの入力は、複数のテーブルから来ることが可能であることに留意されたい。例えば、或る実施形態において、タイプIIテーブルの入力は、2つのタイプIVテーブルの出力から来る。この場合、タイプIIテーブルの両方の入力は、鍵変換ユニット経由で送られることが可能である。鍵変換ユニットは、2つの入力に対して排他的論理和加算を実行する。排他的論理和を実行することは、2つのタイプIVテーブルを使用すること、または再使用することによって行われ得る。各タイプIVテーブルは、第1の入力と第2の入力の入力のニブルに対して排他的論理和を実行することが可能である。
【0108】
図9は、暗号システム600を示す。このシステムは、複数のルックアップテーブル640を備える。複数640のうち、ルックアップテーブル610、620、および630が示される。ルックアップテーブル630は、特定の鍵に適合された特定のルックアップテーブルである。例えば、ルックアップテーブル630は、Tボックスを他の1つまたは複数の操作と合成することによって構築されることが可能である。ルックアップテーブル620は、鍵変換ユニットである。ルックアップテーブル610は、例えば、ルックアップテーブル630のための入力を供給することが可能である。ルックアップテーブルは、1つまたは複数の入力をとり、1つまたは複数の出力をもたらす。暗号システム600は、複数640におけるブロックにアクセスを有するルックアップテーブルマネージャ650を備える。テーブル640は、マネージャ650がアクセスを有するメモリの中に格納されることが可能である。代替として、これらのテーブルは、例えば、CMOS技術を使用して、ハードウェアチップとして実施されることも可能である。マネージャ650は、例えば、バスを介してルックアップテーブルにアクセスを有することが可能である。マネージャ650自体は、メモリの中に格納され、汎用プロセッサ(図示せず)を使用して実行されるソフトウェアプログラムとして実装されることが可能である。代替として、マネージャ650は、ハードウェアで有限状態マシンとして実施されることが可能である。マネージャ650は、暗号操作の実行中に、他の暗号プリミティブ、例えば、ソフトウェアで実装される公式にアクセスを有することが可能である。
【0109】
マネージャ650は、入力メッセージ662および鍵代替664を受け取るように適合される。鍵代替664は、ネットワークに対して、計算中に使用されるべき鍵を表現する。例えば、鍵代替664は、複数640の鍵依存のルックアップテーブルに各部分が対応する、複数の部分を備えることが可能である。マネージャ650は、鍵代替664を解析し、異なる鍵変換ユニットの異なる部分を使用するように構成されることが可能である。例えば、鍵代替664は、16掛ける1の副鍵代替を備えることが可能である。AESホワイトボックス実装において使用されることが可能である各Tボックスにつき1つの副鍵代替。鍵代替664は、ビット文字列として表現されることが可能であり、あるいはそうすることが好都合である場合、ASCII文字列に変換されることが可能である。
【0110】
使用される最終的な鍵と鍵代替664の間に直接の関係は、存在しなくてもよい。テーブルと鍵代替の組合せだけが、鍵を決定する。鍵代替664へのアクセス単独では、鍵代替664によって暗号システム600の構成が合わせられる暗号操作において使用される鍵を導き出すのに十分ではない。
【0111】
動作中、マネージャ650が、鍵代替664および入力メッセージ662を受け取る。マネージャ650は、鍵代替664を解析し、鍵代替664のいずれの部分がいずれの鍵変換ユニットに必要とされるかを特定する。ルックアップテーブルが、中間結果、および/または出力メッセージ(図示せず)の全部または一部を備える出力をもたらす。出力メッセージは、複数の特定のルックアップテーブルの出力を組み合わせること、例えば、連結することによって形成されることが可能である。中間データ、および中間データの組合せが、さらなるルックアップテーブルへの入力として、それらのルックアップテーブルが一緒に、暗号操作、または暗号操作の少なくとも実質的な部分を実行してしまうまで、反復して使用される。鍵代替664の少なくとも一部分を有する鍵変換テーブルがもたらされる。
【0112】
鍵変換ユニットは、様々な仕方で鍵依存のルックアップテーブルと統合され得る。いくつかの例が、図10a、図10b、および図10cに示される。
【0113】
図10aは、鍵依存のテーブル630より前のルックアップテーブルのネットワーク内に配置された2つのルックアップテーブル612および614を示す。例えば、テーブル612および614は、タイプIVテーブルであり、ルックアップテーブル630は、タイプIIテーブルである。テーブル612および614の出力は、鍵変換ユニット620への第1の入力として使用される。鍵変換ユニットは、鍵代替664から導き出される鍵代替665を第2の入力として受け取る。鍵代替665は、ネットワークに対して、テーブル630が依存する鍵を表現する。テーブル620が612および614の出力を転送する前に、これらの出力は、テーブル620とテーブル630の組合せが一緒になって、テーブル630と同一の暗号化操作を、ただし、異なる鍵に関して実行するように変換される。
【0114】
図10bは、図10aにおける状況を詳しく示す。鍵変換ユニット620が、第2の入力として鍵代替666および667をそれぞれ受け取る2つの、より小さい鍵変換ユニット622および624にわたって分散される。例えば、テーブル622および624は、タイプIVテーブルであり、テーブル622は、鍵代替666と、テーブル612の出力を一緒に排他的論理和演算する。例えば、テーブル624は、鍵代替667と、テーブル614の出力を一緒に排他的論理和演算する。
【0115】
図10cは、さらなる可能性を示す。この場合、鍵依存のテーブル630は、入力をテーブル612および614から直接に受け取る。鍵変換ユニット620が、第1の入力としてテーブル630の出力を受け取り、第2の入力として鍵代替668を受け取って、新たな鍵に関するテーブル620の結果を変換するように配置される。
【0116】
鍵変換ユニットを、鍵依存のルックアップテーブルの後に配置することが好ましい。このことは、鍵加算の効果がさらなる中間結果に影響を与えるという利点を有する。より多くのビットが、訂正することを所望する鍵加算に依存するにつれ、鍵依存がどのように機能するかを攻撃者が突き止めることがより困難になる。例えば、一部のネットワークは、以下のようであることが可能である。すなわち、タイプIIテーブル、その後にタイプIVネットワーク、その後に鍵変換ユニット、その後にタイプIIIテーブルである。タイプIVネットワークの後の1バイトの中間データは、タイプIIネットワークの直後の1鍵バイトではなく、4鍵バイトに依存する。完全なラウンド鍵へのアクセスを有する操作者は、タイプIVネットワークが線形であるので、そのバイトに対する必要な変更をそれでも、1バイトだけのオフセットとして表現することができる。
【0117】
図9に関する説明を続ける。マネージャ650が入力メッセージおよび鍵代替664を受け取った後、マネージャ650は、メッセージのいくつかの部分をルックアップテーブルに転送する。それらのルックアップテーブルの結果は、さらなる新たなルックアップテーブルのための入力である。鍵依存のルックアップテーブルが必要とされる場合、対応する鍵変換ユニットに、対応する鍵代替、例えば、鍵代替664の一部が供給される。何らかの時点で、ルックアップテーブルの出力が、システム600の出力メッセージ(図示せず)として収集される。
【0118】
図5から、タイプIIテーブルは、Tボックスから始まり、Tボックスは、鍵加算から始まることを想い起こされたい。このことが、図10aまたは図10bに示されるタイプの鍵変換ユニットを効率的に作成するのに活用され得る。第1の入力にオフセットを追加することにより、そのオフセットは、Tボックスにおける鍵加算と組み合わされる。タイプIIテーブルが適合される特定の鍵と、所望されるさらなる暗号鍵の差となるようにオフセットを選択することによって、タイプIIブロックが、任意の鍵のために使用されることが可能である。図5に示されるタイプIIブロックは、入力符号化も有する。オフセットは、符号化の逆を使用して符号化されることが可能である。また、オフセットは、異なる符号化を使用して符号化されることも可能であり、鍵変換ユニットは、その異なる符号化を取り除く、または再符号化するように構成されることが可能である。
【0119】
示されるAES実装における最後の鍵依存のテーブルは、タイプIbテーブルである。このテーブルは、2鍵バイトに依存する。第1の鍵加算が、Sボックスより前に行われ、第2の鍵加算が、Sボックスの後に行われる。第1の鍵は、例えば、図10aまたは図10bにおけるとおり、タイプIbテーブルより前に鍵変換ユニットを導入することによって更新され得る。第2の鍵は、例えば、図10cにおけるとおり、タイプIbブロックの後に鍵変換ユニットを導入することによって更新され得る。
【0120】
また、説明される技術の組合せも可能である。例えば、システム600は、タイプIIテーブルを置き換えることなどによって、何らかの鍵値に合わせて構成されることが可能である。システム600が可能なすべてのAES鍵をサポートすることは必要ない。例えば、ラウンド鍵の一部だけが更新可能にされることが可能である。このことは、暗号操作が多少、カスタマイズされ得るが、それでも、鍵代替の長さをさらに短縮するという利点を有する。
【0121】
操作は、データ依存関係が許す限りで、少なくとも部分的に、並行に行われてもよいことに留意されたい。
【0122】
(改良されたホワイトボックス実装の詳細な説明)
ホワイトボックス実装の或る実施形態のより詳細な説明を続ける。ホワイトボックス実装によって実装される暗号鍵を置き換えるための効率的なアプローチを説明する。実施される暗号の可能なすべての鍵Kに関して、鍵代替を備える小さい証明書を指定して、この証明書に基づき、デバイスが、その暗号に関する鍵Kを実装するホワイトボックス実装を導き出すことができるようにすることが可能である。この証明書は、ホワイトボックス実装のサイズと比べて小さく、わずか数分の1キロバイトにされ得る。
【0123】
本明細書で、この完全なホワイトボックス実装を説明することはせず、本発明を説明するために最も関係のある部分だけを説明する。図11を参照する。ホワイトボックス実装における鍵を再構成するアプローチが、ラウンド鍵の符号化を使用して、ホワイトボックス実装をパラメータ化することが可能である。つまり、ホワイトボックス実装の入力は、ペア(x,y)として表されることが可能であり、ただし、xは、暗号化/解読されるべきデータを表し、yは、データを暗号化/解読するのに使用される必要がある鍵を表す。xとyはともに、ホワイトボックス実装におけるルックアップテーブルに対する入力として使用される。このため、yは、ルックアップテーブルの内容の指定を含まなくてもよい。
【0124】
初期変換または前のラウンドなどの、オプションの先行する変換の後、AESのラウンドが開始する。AESラウンドの始まりは、以下のとおりである。ラウンドrへの入力が、16バイトに分割され、16バイトのうち最初の2バイトが、910および911で示される。バイト910は、先行するラウンド、または初期変換におけるブロック980の結果である。各バイトiが、16バイトのラウンド鍵k(r)のバイトki(r)と排他的論理和演算される。最初のそのような加算が、920で示される。この排他的論理和の結果が、Sボックスの入力として使用される。バイト910に関するSボックスは、930で示される。ホワイトボックス実装の構造において、これら2つの操作はマージされて、単一の、いわゆるTボックス操作になる。このことは、ラウンドに対する各入力バイトiに関して、以下
【0125】
【数5】

によって8対8ビット全単射マッピング
【0126】
【数6】

を定義することを意味する。
【0127】
ホワイトボックス実装の構造において、このTボックスは、ルックアップテーブルによって実装される。このルックアップテーブルは、Tボックス操作を実施するだけでなく、関数
【0128】
【数7】

も実施し、ただし、
【0129】
【数8】

は、全単射8対8ビットマッピングであり、さらに
【0130】
【数9】

は、必ずしも全単射ではない8対32ビットマッピングである。関数
【0131】
【数10】

と関数
【0132】
【数11】

は、異なるTボックスに関して異なることが可能である。関数a1-1が925で示され、例えば、入力符号化を表すことが可能である。Tボックスを実装するルックアップテーブルだけが、この実装においてAES鍵に依存するルックアップテーブルである。Tボックスの後に続き、Tと一緒になって操作Uを形成する操作が、950でバイト910に関して示される。基本ブロック950は、少なくともMixColumn操作を実施する。
【0133】
Ikを、AES鍵Kに関するChow他によるホワイトボックスAES実装とする。このホワイトボックスAES実装の構造は、2つの部分に分割され得る。第1の部分において、実装を難読化するのに線形符号化だけを使用するホワイトボックス実装が構築される。この実施形態は、そのような難読化だけを使用する。しかし、第2の部分において、非線形符号化が追加されることも可能であることに留意されたい。例えば、非線形符号化を使用する、さらなる難読化が好ましいが、説明を簡略化するため、これらの符号化は、本明細書には含められない。このため、この説明において、非線形符号化は、全く適用されないものと想定することができる。その結果、関数
【0134】
【数12】

における関数
【0135】
【数13】

と関数
【0136】
【数14】

はともに線形であるものとする。
【0137】
ホワイトボックス実装が、AES鍵Kではなく、鍵
【0138】
【数15】

を使用してAESを実装することを所望するものと想定されたい。その場合、このことは、以下のとおり実現され得る。Kおよび
【0139】
【数16】

に関する第r番のラウンド鍵が、それぞれ、k(r)および
【0140】
【数17】

によって与えられるものとし、ラウンドrの各入力iバイトに関して、
【0141】
【数18】

および
【0142】
【数19】

が、排他的論理和を実施する2つのルックアップテーブル、例えば、タイプIVテーブルであるものとする。さらに、バイト
【0143】
【数20】

が、
【0144】
【数21】

というホワイトボックス実装の入力に加算されるものとする。r=1に関して、ラウンド鍵k(r)および
【0145】
【数22】

は、AESの初期鍵加算に関連付けられる。テーブル
【0146】
【数23】

に関する鍵代替の役割をするtの加算が、符号900で示される。次に、テーブル
【0147】
【数24】

を使用して、
【0148】
【数25】

の第1のニブルを
【0149】
【数26】

の第1のニブルと排他的論理和演算し、テーブル
【0150】
【数27】

が、
【0151】
【数28】

の第2のニブルを
【0152】
【数29】

の第2のニブルと排他的論理和演算するのに使用される。このため、これらのルックアップテーブルは、
【0153】
【数30】

から
【0154】
【数31】

を計算する。Ikにおける各ルックアップテーブル
【0155】
【数32】

にルックアップテーブル
【0156】
【数33】

および
【0157】
【数34】

を先行させる場合、AES鍵
【0158】
【数35】

が、AES鍵Kの代わりに実施されることが検証される。上記で使用される入力表記(x,y)を考慮する場合、yは、すべてのバイト
【0159】
【数36】

によって与えられる。
【0160】
図12は、本発明の或る実施形態を示す。この図は、デジタルコンテンツのプロバイダと接続するためのインターネットに対する接続などの通信ポート895を示す。コンテンツは、DVDまたはCDなどの媒体896から獲得されることも可能である。PC上のデジタルコンテンツは、通常、メモリ891を使用してプロセッサ892によって実行されているメディアプレーヤを使用してレンダリングされる。そのようなプレーヤは、特定のコンテンツフォーマットに関して、通信ポート895および/または媒体896を介して獲得されるコンテンツに対応するフォーマット特有の復号を実行するための、それぞれプラグインを実行することが可能である。それらのコンテンツフォーマットには、AVI、DV、Motion JPEG、MPEG-1、MPEG-2、MPEG-4、WMV、オーディオCD、MP3、WMA、WAV、AIFF/AIFC、AUなどが含まれることが可能である。デジタル権利管理目的で、コンテンツを復号するだけでなく、コンテンツの解読も行うセキュアなプラグインが、使用されることが可能である。このプラグインは、メモリ891の中に格納されたプロセッサ命令およびパラメータを備える。プロセッサ命令は、プロセッサに本発明による方法を実行させることが可能である。これらのパラメータは、ルックアップテーブル、および/または本明細書で説明されるルックアップテーブルを備える。レンダリングされるべきコンテンツを示すユーザからのコマンドを獲得するユーザ入力894が、提供されることが可能であり、さらに復号され、さらに/または解読されたコンテンツをレンダリングするためのディスプレイ893および/またはスピーカが、提供される。
【0161】
本発明は、本発明を実施するために適合されたコンピュータプログラムに、特に、キャリア上の、またはキャリアにおけるコンピュータプログラムにも拡張されることが認識されよう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形態などのコード中間ソースおよびオブジェクトコード、あるいは本発明による方法の実施において使用するのに適した他の任意の形態であることが可能である。キャリアは、プログラムを担持することができる任意のエンティティまたはデバイスであることが可能である。例えば、キャリアには、ROM、例えば、CD ROMまたは半導体ROMなどの記憶媒体、あるいは磁気記録媒体、例えば、フロッピー(登録商標)ディスクまたはハードディスクなどの磁気記録媒体が含まれることが可能である。さらに、キャリアは、電気ケーブルもしくは光ケーブルを介して、または無線もしくはその他の手段によって伝送されることが可能な、電気信号もしくは光信号などの伝送可能なキャリアであることが可能である。プログラムがそのような信号において実現される場合、キャリアは、そのようなケーブル、または他のデバイスもしくは手段によって構成されることが可能である。代替として、キャリアは、プログラムが埋め込まれた集積回路であることが可能であり、その集積回路が、関係のある方法を実行するために、またはそのような方法の実行の際に使用されるように適合される。
【0162】
前述した実施形態は、本発明を限定するのではなく、本発明を例示すること、ならびに当業者は、添付の特許請求の範囲を逸脱することなく、多数の代替の実施形態を設計することができることに留意されたい。特許請求の範囲において、括弧に入れられたいずれの参照符号も、クレームを限定するものと解釈されるべきではない。「備える」という動詞、およびこの動詞の活用形の使用は、クレームに記載される要素またはステップ以外の要素またはステップの存在を排除しない。要素の前に付けられた「或る」という冠詞は、複数のそのような要素の存在を排除しない。本発明は、いくつかの別々の要素を備えるハードウェアによって、さらに適切にプログラミングされたコンピュータによって実施されることが可能である。いくつかの手段を列挙するデバイスクレームにおいて、これらの手段のいくつかは、同一のハードウェアアイテムによって実現されることが可能である。いくつかの手段が、互いに異なる従属クレームに記載されているという単なる事実が、これらの手段の組合せが有利に使用され得ないことを示すことはない。
【符号の説明】
【0163】
600 ホワイトボックス暗号システム
640 ルックアップテーブル
662 入力メッセージ
664 鍵代替
891 メモリ
892 プロセッサ
893 ディスプレイ
894 ユーザ入力
895 通信ポート
896 媒体

【特許請求の範囲】
【請求項1】
入力メッセージ(662)を出力メッセージにマップする鍵による暗号操作を実行するホワイトボックス暗号システム(600)であって、
前記システムは、前記暗号操作を一緒になって実行するように構成された複数のルックアップテーブル(640)のネットワークを備え、前記ネットワークは、特定の暗号鍵に適合され、
前記システムは、前記ネットワークに対して、さらなる暗号鍵を表現する鍵代替(664)を受け取るように構成され、
前記システムは、前記ネットワークにおける中間暗号結果に依存する第1の入力と、前記鍵代替に依存する第2の入力とを受け取るために構成された少なくとも1つの鍵変換ユニット(620)を備え、
前記システムは、前記ネットワークおよび前記鍵変換ユニットを介して前記入力メッセージを前記出力メッセージにマップして、前記暗号操作に対する前記ネットワークの効果を前記さらなる暗号鍵に適合させるように構成されるホワイトボックス暗号システム。
【請求項2】
前記複数のルックアップテーブルの少なくとも1つの特定のルックアップテーブルは、前記特定の暗号鍵に適合され、
前記システムは、少なくとも前記特定のルックアップテーブルおよび前記鍵変換ユニットを介して前記入力メッセージを前記出力メッセージにマップして、前記暗号操作に対する前記特定のルックアップテーブルの効果が、前記さらなる暗号鍵に適合されるように構成される請求項1に記載のホワイトボックス暗号システム。
【請求項3】
前記第1の入力は、前記複数のルックアップテーブルの1つまたは複数によって前記入力メッセージに依存し、
前記システムは、前記鍵変換ユニットの出力に依存する入力として受け取る特定のルックアップテーブルに合わせて構成される請求項2に記載のホワイトボックス暗号システム。
【請求項4】
前記鍵変換ユニットは、出力符号化を使用して構成され、さらに前記特定のルックアップテーブルは、前記出力符号化に対応する入力符号化を使用して構成される請求項3に記載のホワイトボックス暗号システム。
【請求項5】
前記特定のルックアップテーブルの出力データに依存する前記第1の入力に合わせて構成される請求項2に記載のホワイトボックス暗号システム。
【請求項6】
前記特定のルックアップテーブルは、出力符号化を使用して構成され、さらに前記鍵変換ユニットは、前記特定のルックアップテーブルの前記出力符号化に対応する入力符号化を使用して構成される請求項5に記載のホワイトボックス暗号システム。
【請求項7】
前記鍵代替は、前記さらなる暗号鍵と前記特定の暗号鍵の差を備える請求項1から6のいずれか一項に記載のホワイトボックス暗号システム。
【請求項8】
前記鍵変換ユニットは、前記第2の入力を前記第1の入力に加算するために構成される請求項7に記載の暗号システム。
【請求項9】
前記特定のルックアップテーブルは、前記特定の鍵に依存する副鍵の暗号鍵加算操作を備える請求項2から8のいずれか一項に記載の暗号システム。
【請求項10】
前記暗号副鍵加算操作、および前記鍵変換ユニットにおける前記第1の入力への前記第2の入力の前記加算は、前記さらなる暗号鍵に依存するさらなる副鍵の暗号鍵加算操作に合成されるように構成される請求項8および9に記載の暗号システム。
【請求項11】
前記鍵変換ユニットは、鍵代替符号化を使用して符号化された前記第2の入力を受け取るように構成され、
前記システムは、少なくとも一部が前記第2の入力符号化を使用して符号化される鍵代替を受け取るように構成される請求項1から10のいずれか一項に記載の暗号システム。
【請求項12】
入力メッセージを出力メッセージにマップする鍵による暗号操作を実行する暗号方法であって、
前記方法は、暗号操作のために構成された複数のルックアップテーブルのネットワークを使用して前記暗号操作を実行するステップを備え、前記ネットワークは、特定の暗号鍵に適合され、
前記方法は、
前記ネットワークに対して、さらなる暗号鍵を表現する鍵代替を受け取るステップと、
鍵変換ユニットに、前記ネットワークの中間暗号結果に依存する第1の入力と、前記鍵代替に依存する第2の入力とを供給するステップとを備え、
前記ネットワークを使用して前記暗号操作を実行するステップは、前記ネットワークおよび前記鍵変換ユニットを介して前記入力メッセージを前記出力メッセージにマップして、前記暗号操作に対する前記ネットワークの効果を前記さらなる暗号鍵に適合させるステップを備える暗号方法。
【請求項13】
コンピュータプログラムがコンピュータ上で実行されると、請求項12の暗号方法のすべてのステップを実行するように適合されたコンピュータプログラムコード手段を備えるコンピュータプログラム。
【請求項14】
コンピュータ可読媒体上に実現された請求項13に記載のコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図9】
image rotate

【図10a】
image rotate

【図10b】
image rotate

【図10c】
image rotate

【図11】
image rotate

【図12】
image rotate

【図3】
image rotate

【図4】
image rotate

【図8】
image rotate


【公表番号】特表2012−530269(P2012−530269A)
【公表日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2012−515504(P2012−515504)
【出願日】平成22年6月17日(2010.6.17)
【国際出願番号】PCT/EP2010/058590
【国際公開番号】WO2010/146139
【国際公開日】平成22年12月23日(2010.12.23)
【出願人】(500232617)イルデト・ベー・フェー (24)
【Fターム(参考)】