(57)【特許請求の範囲】
【請求項１】
暗号化方法であって、
データ処理システムの入力において、キーを受ける段階であって、前記キーが拡散演算子を表す情報を具備するものである段階と、
前記データ処理システムのプロセッサを用いて複数の変換を適用する段階であって、夫々の変換が各々の入力ワードを各々の出力ワードによって置換する段階；及び
前記データ処理システムの前記プロセッサを用いて、複数の前記出力ワードの連なりに前記キーの前記情報によって表される前記拡散演算子を適用して、前記出力ワードの中で該出力ワードによって表される情報を拡散する段階；
を有する、暗号化方法。
【請求項２】
前記拡散演算子は、該拡散演算子への入力での１つのビットの変化が、該拡散演算子の出力での１つよりも多いビットの変化に対応するという特性を満足する、請求項１記載の暗号化方法。
【請求項３】
前記拡散演算子は非線形演算子である、請求項１記載の暗号化方法。
【請求項４】
前記拡散演算子の入力は、Ｓボックスのｋ個の出力のシーケンスによって与えられ、夫々のＳボックスの出力はｎビット値であり、ｋ及びｎは所定の正の整数値であり、
前記拡散演算子の出力は、前記ホワイトボックスの実施の非線形出力コーディングへのｌ個の入力のシーケンスに相当し、夫々の出力コーディングへの入力はｍビット値であり、ｌ及びｍは所定の正の整数値であり、
前記拡散演算子は、ｍ×ｎ個の要素のｋ個のサブマトリクスのｌ個の行に分けられる可逆マトリクスとしての表示を有する線形演算子であり、夫々の行は、その行を形成するサブマトリクスの第１のサブセットの連なりによって形成されるマトリクスと、その行を形成するサブマトリクスの第２のサブセットの連なりによって形成されるマトリクスとがいずれもｍの階数を有さないという特性を満足し、前記第１のサブセット及び前記第２のサブセットは分離している、請求項１記載の暗号化方法。
【請求項５】
前記キーは、前記可逆マトリクスの表示を有する、請求項４記載の暗号化方法。
【請求項６】
ＭｉｘＣｏｌｕｍｎｓ演算子が前記拡散演算子によって置換されるラインダール法を有する、請求項１記載の暗号化方法。
【請求項７】
拡散演算子を表す情報を有するキーを受ける入力部；及び
複数の変換を適用する段階であって、夫々の変換が各々の入力ワードを各々の出力ワードによって置換する段階と、複数の前記出力ワードの連なりに前記キーの前記情報が表わす拡散演算子を適用して、前記出力ワードの中で該出力ワードによって表される情報を拡散する段階とを有する暗号化方法の実施；
を有するシステム。
【請求項８】
前記キーは、入力符号化及び出力符号化によりぼかされた拡散演算子を表す１又はそれ以上のルックアップテーブルを有する、請求項７記載のシステム。
【請求項９】
拡散演算子を表す情報を有するキーを受ける入力部を有し、暗号化方法の実施を更に有し、該暗号化方法は、複数の変換を適用する段階であって、夫々の変換が各々の入力ワードを各々の出力ワードによって置換する段階と、複数の前記出力ワードの連なりに拡散演算子を適用して、前記出力ワードの中で該出力ワードによって表される情報を拡散する段階とを有するクライアント；
前記キーに依存して、前記クライアントで実施される前記暗号化方法に対応する暗号化方法を提供するサーバ；及び
前記キーを生成する手段；
を有するクライアントサーバシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホワイトボックス実施で実施される暗号化方法に関する。
【背景技術】
【０００２】
インターネットは、ユーザに、デジタルコンテンツへの便利で且つ偏在するアクセスを提供する。暗号化されているコンテンツのための配布媒体としてのインターネットの使用は、コンテンツプロバイダの関心を得る、やむ得ない難問を生み出す。特に、コンテンツプロバイダの著作権及びビジネスモデルを保証することが必要とされる。ますます、家庭用電化製品（ＣＥ（consumer  electronics））プラットフォームは、適切なソフトウェアを搭載しているプロセッサを用いて動かされる。かかるソフトウェアは、例えば、音声及び／又は映像のようなデジタルコンテンツのレンダリング（再生）のための機能の主要部を含みうる。再生ソフトウェアの制御は、コンテンツが使用され得る期間及び状態を含むコンテンツ所有者の関心を強化する１つの方法である。旧来（ＰＣ及びＰＤＡを例外として）多数のＣＥプラットフォームは閉じられるよう使用されてきたが、今日ではますますプラットフォームは少なくとも部分的にオープンである。特に、ＰＣプラットフォームに関しては、一部のユーザは、コンテンツへのアクセスを提供するハードウェア及びソフトウェアを介する完全な制御と、如何なるコンテンツ保護メカニズムも攻撃し迂回する多大な時間及びリソースとを有すると考えられている。結果として、コンテンツプロバイダは、全てのユーザ又は装置が信頼できるわけではないコミュニティへの敵対的なネットワークをわたって正規のユーザへコンテンツを伝送しなければならない。
【０００３】
通常、デジタル権利管理システムは、ラウンド（round）と呼ばれる、暗号化／復号化ステップのシーケンスを用いてブロックでデータストリームを処理するブロックサイファに基づく暗号化技術を使用する。夫々のラウンドの間、ラウンド特有の機能が実行される。ラウンド特有の機能は、ラウンド特有のサブキーの制御下で実行される同じラウンド機能に基づいてよい。多くの暗号化システムに関し、ラウンド特有の機能は、マッピングテーブル又はルックアップテーブルを用いて特定され得る。たとえ明示的なテーブルが使用されなかったとしても、いずれにせよ頻繁にテーブルは、暗号化／復号化機能のソフトウェアでの有効な実行のために、機能の様々な部分について使用される。コンピュータコードは、テーブル値にアクセスし、又はテーブル値をその機能の範囲値に結合する。キーを配布することに代えて、暗号化又は復号化のアルゴリズムのためのキーではなくユーザ固有のアルゴリズムを配布することに一層関心が持たれている。かかるアルゴリズム、ほとんどの場合に機能（マッピング）は、キーのような要素の再設計を防ぎ、又は再計算を禁じるために、ぼかされる（隠される）必要がある。コンピュータにおいて、あるコンピュータコードに付随するテーブルは、しばしば、かかる機能を表す。
【０００４】
コンテンツプロバイダは、全てのユーザ又は装置が信頼できるわけではないコミュニティへの敵対的なネットワークをわたって正規のユーザへコンテンツを伝送しなければならない。特に、ＰＣプラットフォームに関して、ユーザは、コンテンツへのアクセスを提供するハードウェア及びソフトウェアを介する完全な制御と、如何なるコンテンツ保護メカニズムも攻撃し迂回する多大な時間及びリソースとを有すると考えられなければならない。コンテンツが使用されうる期間及び状況を強化するソフトウェアコードはみだりに変更されてはならない。ＰＣへ配布される保護コンテンツのためのデジタル権利管理での一般的なアプローチは、例えば、ＤＥＳ（Data  Encryption  Standard）、ＡＥＳ（Advanced  Encryption  Standard）、又は国際公開第９９／６７９１８号（特許文献１）に開示されている方法の使用のようにデジタルコンテンツを暗号化すること、及び暗号解読キーを使用することである。
【０００５】
キーの処理に関して、再生のために、メディアプレーヤーは、ライセンスデータベースから暗号解読キーを取り出す必要がある。次いで、それは、暗号化されているコンテンツの復号化のために、この暗号解読キーをメモリのどこかに格納する必要がある。これは、攻撃する者に、キーに対する攻撃のための２つの選択肢を残す。第１に、ライセンスデータベースアクセス機能のリバースエンジニアリングは、ブラックボックスソフトウェアをもたらし（すなわち、攻撃する者は、ソフトウェア機能の内部演算を理解する必要はない。）、攻撃する者が全てのライセンスデータベースからアセット（asset）キーを取り出すことを可能にする。第２に、コンテンツの復号化の間のメモリへのアクセスの監視によって、アセットキーを取り出すことが可能である。どちらの場合も、キーは危険にさらされると考えられる。
【０００６】
「White-Box  Cryptograph  and  an  AES  Implementation」、Stanley  Chow、Philip  Eisen、Harold  Johnson、及びPaul  C.  Van  Oorschot著、Selected  Areas  in  Cryptograph：9th  Annual  International  Workshop、SAC2002、カナダニューファンドランド州セントジョンズ、２００２年８月１５〜１６日（非特許文献１）及び「A  White-Box  DES  Implementation  for  DRM  Applications」、Stanley  Chow、Philip  Eisen、Harold  Johnson、及びPaul  C.  Van  Oorschot著、Digital  Rights  Management：ACM  CCS-9  Workshop、DRM2002、アメリカ合衆国ワシントンＤＣ、２００２年１１月１８日（非特許文献２）は、個々のステップよりむしろ合成を表すランダム全単射（bijections）を有するキーテーブルの符号化と、暗号化境界を、包含するアプリケーションにそれを更に押し出すことによって拡大することとの組合せによってキーを隠すことを目的とする方法を開示する。
【０００７】
「Cryptanalysis  of  a  White  Box  AES  Implementation」、Oliver  Billet、Henri  Gilbert、及びCharaf  Ech-Chatbi著、SAC2004、LNCS3357、227〜240頁、２００５年（非特許文献３）は、キーの公開に対するホワイトボックス・コンテキストで動作するＡＥＳソフトウェアを保護する手段としてＳＡＣ２００２で提案された曖昧化ＡＥＳ実施に対する攻撃について記載する。非特許文献３は、無視できるほどのメモリ及び最悪の時間コスト２３０を有して、このようなホワイトボックスＡＥＳ実施に埋め込まれているＡＥＳシークレットキー全体を取り出す方法を説明する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第９９／６７９１８号
【非特許文献】
【０００９】
【非特許文献１】「White-Box  Cryptograph  and  an  AES  Implementation」、Stanley  Chow、Philip  Eisen、Harold  Johnson、及びPaul  C.  Van  Oorschot著、Selected  Areas  in  Cryptograph：9th  Annual  International  Workshop、SAC2002、カナダニューファンドランド州セントジョンズ、２００２年８月１５〜１６日
【非特許文献２】「A  White-Box  DES  Implementation  for  DRM  Applications」、Stanley  Chow、Philip  Eisen、Harold  Johnson、及びPaul  C.  Van  Oorschot著、Digital  Rights  Management：ACM  CCS-9  Workshop、DRM2002、アメリカ合衆国ワシントンＤＣ、２００２年１１月１８日
【非特許文献３】「Cryptanalysis  of  a  White  Box  AES  Implementation」、Oliver  Billet、Henri  Gilbert、及びCharaf  Ech-Chatbi著、SAC2004、LNCS3357、227〜240頁、２００５年
【発明の概要】
【発明が解決しようとする課題】
【００１０】
改善された暗号化方法を有することが有利でありうる。
【課題を解決するための手段】
【００１１】
かかる関心事により良く対処すべく、本発明の第１の側面は、ホワイトボックスで実施される暗号化方法であって、
夫々が入力ワードを出力ワードによって置換する複数の変換を適用する段階；及び
複数の前記出力ワードの連なりに拡散演算子（diffusion  operator）を適用して、前記出力ワードの中で該出力ワードによって表される情報を広める段階；
を有し、
当該暗号化方法へのキーは、前記拡散演算子を表す情報を有する、暗号化方法が提示される。
【００１２】
ホワイトボックス実施は、それらの入力及び出力を符号化することによってぼかされるルックアップテーブルのネットワークを有してよい。本発明者は、拡散演算子が、比較的攻撃に対して弱い暗号化方法のホワイトボックス実施を行うと認識していた。このような脆弱性を軽減する１つ方法は、攻撃する者がどんな拡散演算子がホワイトボックス実施で使用されているのかを見つけ出すことを難しくすることである。拡散演算子を暗号化方法のキーに組み込むことによって拡散演算子に方法の変数を作ることは、攻撃する者がどの拡散演算子が使用されているかを先天的に知らないことを確かにする。このように、攻撃する者は、攻撃を成功させるべく更なる情報を見つける必要がある。特に、ホワイトボックス実施への幾つかの公になっている攻撃は、この予防措置を取ることによって困難にされる。
【００１３】
拡散演算子は、ワード境界を尊重しない。このことは、それがデータのより長い部分にビットエラーを広めることを意味する。例えばＳボックスのような、暗号化方法の部分である他の演算は、ワード値を異なるワード値にマッピングする。ここで、ワードは有限な数のビットを有し、例えば、ワードは４ビットニブル（nibble）、８ビットバイト、又は１６ビットワードであってよい。ワードにおけるビットの数は、このようなＳボックスで使用されるワードサイズによって決定されてよい。拡散演算子は、例えば２又は４ワードといった、１よりも大きいワードである出力を有する。暗号化方法がブロックサイファである場合は、通常、拡散演算子の出力ワードは、ブロックサイファの１データブロックよりも大きくない。ＡＥＳの例で、Ｓボックスは８ビットワードで動作し、一方、拡散演算子は３２ビット値、すなわち、４つの８ビットワードを有する値で動作する。ＡＥＳのブロックサイズは１２８ビットであり、これは拡散演算子の出力のサイズよりも大きい。拡散演算子を表す情報は、目的とする拡散演算子を一意に識別するのに十分な情報を有し、例えば、情報はマトリクス演算子の要素を有することができ、あるいは、それは、適用される入力及び出力符号化とともに拡散演算子を実施するためにホワイトボックス実施で使用される必要がある多数のルックアップテーブルを有することができる。
【００１４】
実施例で、前記拡散演算子は、該拡散演算子への入力での１つのビットの変化が、該拡散演算子の出力での１つよりも多いビットの変化に対応するという特性を満足する。
【００１５】
拡散演算子の目的は、完全なデータブロックを使用できないようにするために、単一ビットにおける復号化エラーの作用をデータブロックの他のビットへ広めることである。これはまた、ホワイトボックス実施に埋め込まれている暗号化キーを見つけることを困難にする。この特性を実現する最小限のステップは、ビットエラーが１よりも多いビットに広められることを確かにすることである。この特性を満足する演算子を見つける方法は当該技術で知られている。理想的に、線形拡散演算子が使用される場合は、それは分離できる最大距離である。出力ワードの１つでの少なくとも１ビットの変化は、拡散演算子によって出力ワードの少なくとも２つの変化をもたらす（その少なくとも２つの出力ワードの夫々は、少なくとも１つの変化したビットを有する。）。
【００１６】
実施形態で、拡散演算子は非線形演算子である。
【００１７】
非線形演算子は、攻撃をより難しいものとする。
【００１８】
実施形態で、
前記拡散演算子の入力は、Ｓボックスのｋ個の出力のシーケンスによって与えられ、夫々のＳボックスの出力はｎビット値であり、ｋ及びｎは所定の正の整数値であり、
前記拡散演算子の出力は、前記ホワイトボックスの実施の非線形出力コーディングへのｌ個の入力のシーケンスに相当し、夫々の出力コーディングへの入力はｍビット値であり、ｌ及びｍは所定の正の整数値であり、
前記拡散演算子は、ｍ×ｎ個の要素のｋ個のサブマトリクスのｌ個の行に分けられる可逆マトリクスとしての表示を有する線形演算子であり、夫々の行は、その行を形成するサブマトリクスの第１のサブセットの連なりによって形成されるマトリクスと、その行を形成するサブマトリクスの第２のサブセットの連なりによって形成されるマトリクスとがいずれもｍの階数を有さないという特性を満足し、前記第１のサブセット及び前記第２のサブセットは分離している。
【００１９】
この実施例で使用される線形演算子の階数を用いる暗号化方法は、比較的壊すことが困難である。
【００２０】
実施形態で、キーは可逆マトリクスの表示を有する。
【００２１】
この表示は、線形拡散演算子を表す有効な方法である。
【００２２】
実施形態で、ＭｉｘＣｏｌｕｍｎｓ演算子が前記拡散演算子によって置換されるラインダール（Rijndael）法を有する。他の実施形態で、暗号化方法はＦｅｉｓｔｅｌ法に基づく。
【００２３】
他の実施形態は、
拡散演算子を表す情報を有するキーを受ける入力部；及び
夫々が入力ワードを出力ワードによって置換する複数の変換を適用する段階と、複数の前記出力ワードの連なりに拡散演算子を適用して、前記出力ワードの中で該出力ワードによって表される情報を広める段階とを有する暗号化方法のホワイトボックス実施；
を有する。
【００２４】
実施形態で、前記キーは、入力符号化及び出力符号化によりぼかされた拡散演算子を表す１又はそれ以上のルックアップテーブルを有する。
【００２５】
実施形態は、
拡散演算子を表す情報を有するキーを受ける入力部を有し、暗号化方法のホワイトボックス実施を更に有し、該暗号化方法は、夫々が入力ワードを出力ワードによって置換する複数の変換を適用する段階と、複数の前記出力ワードの連なりに拡散演算子を適用して、前記出力ワードの中で該出力ワードによって表される情報を広める段階とを有するクライアント；
前記キーに依存して、前記クライアントで実施される前記暗号化方法に対応する暗号化方法を提供するサーバ；及び
前記キーを生成する手段；
を有する。
【図面の簡単な説明】
【００２６】
【図１】ＡＥＳのラウンドでの動作を表す図である。
【図２】ぼかし（obfuscating）テーブルの例を表す図である。
【図３】ホワイトボックスＡＥＳ実施における列のラウンドを表す図である。
【図４】タイプＩａのテーブルに組み込まれているマッピングを表す図である。
【図５】タイプＩＩのテーブルに組み込まれているマッピングを表す図である。
【図６】タイプＩＩＩのテーブルに組み込まれているマッピングを表す図である。
【図７】タイプＩＶのテーブルに組み込まれているマッピングを表す図である。
【図８】タイプＩｂのテーブルに組み込まれているマッピングを表す図である。
【図９】処理ステップを表すフローチャートである。
【図１０】更なる処理ステップを表すフローチャートである。
【図１１】実施例を表す図である。
【図１２】実施例を表す図である。
【発明を実施するための形態】
【００２７】
本発明の上記及び他の側面は、図面を参照して更に明らかにされ且つ記載されうる。
【００２８】
ＡＥＳは、１２８ビット又は１６バイトのブロックサイズを有するブロックサイファ（block  cipher）である。プレーンテキスト（plaintext）は、符号化アルゴリズムの初期状態を形成する１６バイトのブロックに分けられ、符号化アルゴリズムの最終状態はサイファテキスト（ciphertext）である。ＡＥＳを概念的に説明するために、状態のバイトは、４×４バイトのマトリクスとして編成される。ＡＥＳは多数のラウンドから成る。各ラウンドは、状態マトリクスのバイト、行、又は列で動作する同様の処理ステップから構成される。各ラウンドは、それらの処理ステップにおいて異なるラウンドキーを用いる。
【００２９】
図１は、ＡＥＳのラウンドの幾つかの主要な処理ステップを表す。処理ステップは、
−  ＡｄｄＲｏｕｎｄＫｅｙ２・・・状態の各バイトは、ラウンドキーのバイトと排他的論理和（ＸＯＲ）をとられる。
−  ＳｕｂＢｙｔｅｓ４・・・バイト毎の順列はルックアップテーブルを用いる。
−  ＳｈｉｆｔＲｏｗｓ６・・・状態の各行は、固定数のバイトを循環する。
−  ＭｉｘＣｏｌｕｍｎｓ８・・・各列は、ＧＦ（２８）での乗算を法として処理される。
【００３０】
ステップＳｕｂＢｙｔｅｓ４、ＳｈｉｆｔＲｏｗｓ６、及びＭｉｘＣｏｌｕｍｎｓ８は、使用される特定のキーとは無関係である。キーは、ステップＡｄｄＲｏｕｎｄＫｅｙ２で適用される。ステップＳｈｉｆｔＲｏｗｓ６を除き、処理ステップは、他の列を知らなくとも４×４状態マトリクスの各列に対して実行され得る。従って、それらは、夫々の列が４つの８ビット値から成る場合に、３２ビット演算として考えられる。破線１０は、必要とされる数のラウンドが実行されるまで処理が繰り返されることを示す。これらのステップの夫々又はステップの組み合わせは、ルックアップテーブルによって、又はルックアップテーブルのネットワーク（Ｓボックス）によって表され得る。また、ルックアップテーブルのネットワークによってＡＥＳの全てのラウンドを置換することも可能である。例えば、ＡｄｄＲｏｕｎｄＫｅｙステップは、単純にラウンドキーとの排他的論理和をとることによって実施され、一方、ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、及びＭｉｘＣｏｌｕｍｎｓステップは、テーブルルックアップを用いて実施される。しかし、これは、キーがホワイトボックスの攻撃時に攻撃する者に対して依然として可視的であることを意味する。ＡｄｄＲｏｕｎｄＫｅｙステップは、また、ルックアップテーブルに埋め込まれ得る。これは、キーを見つけ出すのをより難解とする。
【００３１】
図２は、キーを取り出すのをより困難なものとする方法を表す。仮にＸ及びＹを２つの関数とする。図２で図式１２として表される演算
（外１）
0005485694.tif 000002
を考える。ここで、ｃは、例えば４バイトの状態列である入力値である。なお、かかるアプローチは、如何なるタイプの入力値ｃにも適用する。Ｘ及びＹをマッピングすることは、メモリに記憶され得るルックアップテーブルとして実施され得るが、それらがメモリに記憶されている場合、値は攻撃する者によって読み出され得る。図式１４は、どのようにルックアップテーブルの中身が入力符号化Ｆ及び出力符号化Ｈを使用することによってぼかされ得るかを表す。
（外２）
0005485694.tif 000003
に対応するルックアップテーブルは、Ｘ及びＹに代えて、表されるように記憶され、Ｘ及びＹを取り出すことをより困難にする。図式１６は、２つのテーブルの中間結果も符号化されるように、どのように、付加的な、例えばランダムな、全単射関数Ｇを付加するかを示す。この場合に、かかる２つのテーブル、すなわち、
（外３）
0005485694.tif 000004
は、メモリに記憶されている。これは、図式１８でもう一度表される：
【数１】
0005485694.tif 000005
ここで、
（外４）
0005485694.tif 000006
は、従来通り関数合成を表し（すなわち、何らかの２つの関数ｆ（ｘ）及びｇ（ｘ）に関し、定義により
（外５）
0005485694.tif 000007
）、Ｘ及びＹは、ルックアップテーブルによる実施に適した関数である。同様に、２よりも多い関数から成るネットワークが符号化され得る。Ｘ及びＹを符号化する実際のテーブルは、単一のルックアップテーブルで
（外６）
0005485694.tif 000008
を結合し、単一のルックアップテーブルで
（外７）
0005485694.tif 000009
を結合することによって、ぼかされる。Ｆ、Ｇ及び／又はＨが未知なままである限り、攻撃する者は、Ｘ及び／又はＹに関する情報をルックアップテーブルから取り出すことができず、従って、攻撃する者は、Ｘ及び／又はＹの根拠であるキーを取り出すことができない。ＤＥＳ及びラインダール（そのＡＥＳは特定のインスタンス化である。）を含む他の暗号化アルゴリズムは、また、上記アルゴリズムに類似する方法でぼかされ得るルックアップテーブル（のカスケード又はネットワーク）として符号化されてもよい。これはまた、例えば、置換順列（substitution-permutation）ネットワーク又はＦｅｉｓｔｅｌネットワークに基づいてサイファのために保つ。本発明は、記載されている例となる暗号化アルゴリズムに限られない。
【００３２】
非特許文献１は、個々のステップよりむしろ合成を表すランダム全単射（bijections）を有するキーテーブルの符号化によってキーを隠すことを目的とする方法を開示する。秘密キーの取り出しを防ぐことは、攻撃する者が、ソフトウェア保護の目的が他のマシンで回避されることを可能とするキー材料を取り出し、又はインストールされているソフトウェアの大規模なユーザ基地局をわたって安全対策を無にする「グローバルクラック（global  crack）」を有効に生ずるキー材料を発することを防ぐという利点を有する。それは、ソフトウェアのみの解決法及び敵対ホストの実態の制約を前提として、増大した保護の程度を提供する。非特許文献１のアプローチで、キーは、（１）個々のステップよりむしろ合成のためにテーブルを用いること、（２）かかるテーブルをランダム全単射により符号化すること、及び（３）暗号化境界を、暗号化アルゴリズム自体を越えて更に、包含するアプリケーションに拡大することによって隠され、攻撃する者に彼らの目的に達するには有意により大きい符号セグメントを理解するよう強いる。非特許文献１は、固定キーアプローチについて論じている。キーは、キーに対する部分計算によって実施に埋め込まれる。これにより、キー入力は必要でない。部分計算は、キーを伴う表現が可能な限り合理的に評価されることを意味し、その結果は、全体の表現よりむしろコードに置かれる。攻撃する者は、キー特有の実施を取り出し、それをキーに代えて使用するが、暗号化は、通常、操作又は符号化された形で暗号化コンポーネントに入力を与えることができるより大きな包含システムのコンポーネントである。このためにコンポーネントは設計されるが、これを見つけることを敵は困難に感じる。符号化テーブルのステップを参照すると、符号化は任意であるから、結果は、１つのステップの出力符号化が次の入力符号化を整合させる場合にのみ意味がある。例えば、ステップＸの後にステップＹが続く（計算
（外８）
0005485694.tif 000010
をもたらす）場合は、計算は
【数２】
0005485694.tif 000011
として符号化され得る。このようにして、
（外９）
0005485694.tif 000012
は、入力がＦにより符号化される必要があり且つ出力がＨ−１により復号化される必要があるにもかかわらず適切に計算される。ステップは、Ｙ’及びＸ’に対応するテーブルとして別々に表され、これにより、Ｆ、Ｇ及びＨはＸ及びＹと同様に隠される。
【００３３】
このような混同（confusion）ステップと離れて、非特許文献１は、基礎をなす演算を更に区別するよう線形変換を用いて拡散ステップを使用する。語「混合全単射（mixing  bijection）」は、上記の点で使用される線形全単射を記載するために使用される。非特許文献１の実施は、操作された形で入力をとり、別なふうに操作された形で出力を生成し、それによって、ホワイトボックス攻撃状況（ＷＢＡＣ（White-Box  Attack  Context））に耐性を有するＡＥＳがその包含アプリケーションから分離することを困難にする。
【００３４】
ホワイトボックスＡＥＳ実施は、以下のように述べられ得る。ＡＥＳ暗号化及び復号化アルゴリズムへの入力は、単一の１２８ビットブロックである。このブロックは、１６バイトから成る４×４マトリクスによって表される。ＡＥＳは、通常、ＡＥＳ−１２８のための１０個のラウンドから成る。各ラウンドは、ＡＥＳの状態を形成する１６個のバイトの組を更新し、故に、各ＡＥＳラウンドは１２８ビットを処理する。ＡＥＳ−１２８は、１２８ビットのキーを使用する。このキーは、キーを１２８ビットの異なるラウンドキーに変換するアルゴリズムのための入力として働く。基本のラウンドは、４つの部分、すなわち、
・ＳｕｂＢｙｔｅｓ
・ＳｈｉｆｔＲｏｗｓ
・ＭｉｘＣｏｌｕｍｎｓ
・ＡｄｄＲｏｕｎｄＫｅｙ
を有する。
【００３５】
この動作順序はＡＥＳ暗号化に適用する。ＡＥＳ復号化における標準的な動作順序は異なるが、ＡＥＳ暗号化に関して同じ動作順序を有するようＡＥＳ復号化アルゴリズムを書き換えることが可能である。
【００３６】
最初のラウンドの前に、余分のＡｄｄＲｏｕｎｄＫｅｙ動作が起こり、ラウンド１０ではＭｉｘＣｏｌｕｍｎｓ動作が省略される。キーを使用する唯一の部分はＡｄｄＲｏｕｎｄＫｅｙであり、残りの３つの部分はキーを有しては何もしない。実施において、ラウンドの境界は、ＡｄｄＲｏｕｎｄＫｅｙステップ及び次のラウンドのＳｕｂＢｙｔｅｓステップを１つのステップにまとめるよう変更される。ラウンドはＡｄｄＲｏｕｎｄＫｅｙから始まり、ＳｕｂＢｙｔｅｓが後に続き、最後にＭｉｘＣｏｌｕｍｎｓがくる。
【００３７】
最初に、キーは、ＳｕｂＢｙｔｅｓステップ及びＡｄｄＲｏｕｎｄＫｅｙをともに１ステップにすることによって隠される。これにより、キーはもはや単独で可視的でない。キーは予め知られているので、キーを伴う演算は予め計算され得る。これは、ステップＳｕｂＢｙｔｅｓで使用される標準的なＳボックスがキー特有のＳボックスにより置換され得ることを意味する。ＡＥＳ−１２８のキー固有のインスタンスを生成するよう、キーは、１６個の８×８（すなわち、８ビット入力、８ビット出力）ルックアップテーブルＴｉ，ｊｒを作ることによって、ＳｕｂＢｙｔｅｓ変換に組み入れられる。これは、以下：
【数３】
0005485694.tif 000013
のように定義される。ここで、ＳはＡＥＳのＳボックス（可逆な８ビットマッピング）であり、ｋｉ，ｊｒは、ラウンドｒのためのラウンドキーを表す４×４マトリクスの位置ｉ、ｊでのＡＥＳサブキーバイトである。かかるＴボックスは、ＳｕｂＢｙｔｅｓステップを前のラウンドのＡｄｄＲｏｕｎｄＫｅｙステップを有して構成する。ラウンド１０のＴボックスは、以下：
【数４】
0005485694.tif 000014
のようなホワイトニング後のキーを取り入れる。ここで、ｓｒ（ｉ，ｊ）は、ＳｈｉｆｔＲｏｗｓステップ後のセルｉ、ｊの新しい場所を表す。Ｔボックスの総数は１０×１６＝１６０である。しかし、キーは、Ｓ−１が公に知られているので、Ｔボックスから容易に回復され得る。これは、更なる符号化の必要性を生じさせる。線形変換は、入力をＴボックスに広めるために使用される。かかる線形変換は混合全単射と呼ばれ、ＧＦ（２）に対して８×８マトリクスとして表され得る。混合全単射は、より容易な計算によって反転されて、その効果を取り消す。
【００３８】
図３は、（ＳｈｉｆｔＲｏｗｓを適用後の）状態の１つの３２ビット列のためのホワイトボックスＡＥＳのラウンドに含まれるテーブルを表す。様々なタイプのテーブルの名称がここでは紹介される。それらは、以降でより詳細に論じられる。ラウンドの前に、１２８ビット状態の各バイトは、各々のタイプＩａテーブルに適用される。これは、４つの３２ビット値に分けられる１２８ビット出力を提供するためにタイプＩＶテーブルのネットワークを用いて排他的論理和をとられる各々の１２８ビット値をもたらす。この場合に、最初のラウンドが始まる。各３２ビット値の処理ステップがここでは説明される。３２ビット値の４つのバイトは、４つの各々のタイプＩＩテーブル２０へ入力される。４つのタイプＩＩテーブル２０の夫々は３２ビット出力をもたらす。かかる出力は、タイプＩＶテーブル２２を用いてビットごとに排他的論理和をとられる。各タイプＩＶテーブル２２は、４ビット単位の排他的論理和を実行する。タイプＩＶテーブルの入力及び出力を適切に接続することによって、４つの３２ビット出力のビット単位の排他的論理和は、当業者によって理解されうるように実現され得る。かかるステップの結果は３２ビット値である。この値の４バイトの夫々は、各々のタイプＩＩＩテーブル２４に適用される。夫々のタイプＩＩＩテーブル２４は３２ビット出力を提供する。かかる出力は、先と同じく、タイプＩＶテーブル２２のネットワークと同様のタイプＩＶテーブル２６のネットワークを用いてビットごとに排他的論理和をとられる。出力は、状態の列を示す３２ビット値である。ラウンド２乃至９は、この最初のラウンドと同様である。１２８ビット値の各バイトは、タイプＩｂテーブルに適用される。その結果は、タイプＩＶテーブルのネットワークを用いて排他的論理和をとられる。最後のラウンド（通常１０番目のラウンド）は、外部の符号化によって取り入れられてよい。
【００３９】
図４は、タイプＩａテーブル１００を表す。図５は、タイプＩＩテーブル２００を表す。図６は、タイプＩＩＩテーブル３００を表す。図７は、タイプＩＶテーブル４００を表す。図８は、タイプＩｂテーブル５００を表す。
【００４０】
混合全単射は以下のように使用される。ＡＥＳ状態は、複数バイトを有する４×４マトリクスによって表される。ＭｉｘＣｏｌｕｍｎｓステップは、１度に１列（４つの８ビットセル）に対して動作する。３２×３２マトリクスＭＣを考える。これがテーブルによって繰り返される場合は、このテーブルは２３２×３２＝１３７４３８９５３４７２ビット＝１６ＧＢを要する。このような大きなテーブルを回避するために、マトリクスは４つのセクションにブロック化される。
【００４１】
ＭＣは、４つの３２×８のセクション、ＭＣ０、ＭＣ１、ＭＣ２、ＭＣ３にブロック化される（ブロック２０８）。ＭＣによる３２ビットベクトルｘ＝（ｘ０，．．．，ｘ３１）の乗算は、ｘのビットを４バイトに分けて、ＭＣのセクションの夫々にバイトの１つを乗じることによって行われ、４つの３２ビットベクトル（ｚ０，．．．，ｚ３）をもたらす。この後に、３つの３２ビット排他的論理和は最終的な３２ビットの結果ｚを与える。４つのテーブルは共に、４×２８×３２＝３２７６８ビット＝４ＫＢしか要さない。
【００４２】
３つの排他的論理和は、適切な連なり（例えば、（（ｚ［０，０］，ｚ［０，１］，ｚ［０，２］，ｚ［０，３］）＋（ｚ（１，０），ｚ［１，１］，ｚ［１，２］，ｚ［１，３］））‖（（ｚ［０，４］，ｚ［０，５］，ｚ［０，６］，ｚ［０，７］）＋（ｚ［１，４］，ｚ［１，５］，ｚ［１，６］，ｚ［１，７］））‖．．．）を有して、場合により符号化されるルックアップテーブルにより夫々表される２４個の４ビット排他的論理和（ＸＯＲ）に分けられる。ここで、‖は連なり（concatenation）を表し、＋はＸＯＲを表す。これらのストリップ（strips）及び細分されたＸＯＲを用いることによって、各ステップは小さいルックアップテーブルによって表される。特に、ｉ＝０，．．．，３に関して、ｚｉは８×３２テーブルを用いて計算され、一方、４ビットＸＯＲは２４個の８×４テーブルになる。図７は、どのように入力復号化４０２及び出力符号化４０６がＸＯＲ４０４の周りに置かれ得るかを表す。かかる符号化は、通常、ランダムに選択された非線形な４×４全単射である。ＸＯＲテーブルは、タイプＩＶテーブル４００と呼ばれる。タイプＩＶテーブルは、２つの前の計算の夫々から入力として４ビットを受け取る。かかる計算の出力符号化２１２は、タイプＩＶテーブルが互いを元通りにするための入力復号化４０２と整合する。４×４の非線形全単射のための選択は、テーブルのサイズに依存した。この状況で、タイプＩＶテーブルは、たったの２８×４ビット＝１２８バイトである。２４のテーブルが必要とされ、これらのテーブルは共に３ＫＢを要する。ＸＯＲが分けられなかった場合は、３つのＸＯＲテーブルが必要とされ、これらのテーブルは３２ビットＸＯＲを計算する。Ｔボックス２０６及び８×３２テーブル２０８は、別々のルックアップテーブルとして表され得る。代わりに、それらは、ＭｉｘＣｏｌｕｍｎｓの一部と共にＳｕｂＢｙｔｅｓ及びＡｄｄＲｏｕｎｄＫｅｙ変換を計算する新たな８×３２テーブル２００を作り出すよう構成され得る。これは、（Ｔボックスを記憶するための）空間及び（テーブルルックアップを実行するための）時間の両方を節約する。ＭＣを上記のようにＭＣｉに分ける前に、ＭＣは、最大階数の４×４サブマトリクスを有する非特異マトリクスとして選択される、参照番号２１０で図５に図式的に示されている３２×３２混合全単射ＭＢを左かけ算されうる。混合全単射の使用は、特定のテーブルのための可能な構成の数を増大させる。
【００４３】
図５は、４×４入力復号化２０２及び４×４出力符号化２１２を有する８×３２のタイプＩＩテーブル２００を表す。これらの出力符号化及び入力復号化は、タイプＩＶテーブル４００の入力復号化及び出力符号化を整合させるべき非線形な４×４全単射である。タイプＩＩテーブル２００の後にはタイプＩＶテーブル４００が続く。ＭＢを反転させるために、余分の組のテーブルがＭＢ−１を計算するために使用される。（ｘ’０，．．．，ｘ’３１）をＭｉｘＣｏｌｕｍｎｓへの入力とし、（ｚ０，．．．，ｚ３１）をＭｉｘＣｏｌｕｍｎｓ後の出力とする。（ｚ’０，．．．，ｚ’３１）をＭＢとの乗算後の結果とする。（ｚ’０，．．．，ｚ’３１）Ｔは、タイプＩＩＩテーブル３００への入力として働く。留意すべきは、入力復号化及び出力符号化は、テーブルの出力符号化が次のテーブルの入力復号化によって元に戻されないので、ここで考えられる必要はないことである。タイプＩＩＩテーブル３００で、ＭＢ−１は、次のラウンドの４つのタイプＩＩテーブル２００の４つの入力混合全単射２０４の３０４及び反転３０８を適用される。
【００４４】
図６は、４×４の非線形な入力復号化及び４×４の非線形な出力符号化を有する８×３２のタイプＩＩＩテーブル３００を表す。かかるテーブルの後には、対応するタイプＩＶテーブル４００が続く。
【００４５】
データ演算の１つのラウンドは、１２８ビット状態マトリクスでの演算を伴う。１２８ビット状態マトリクスの３２ビットの４つのストリップの夫々で実行されるデータ演算は以下の通りである。３２ビットストリップは、４つの３２ビット出力値に分けられる。４バイトの夫々は、区別可能なタイプＩＩテーブル２００に入力されて、４つの３２ビット出力値をもたらす。これらの値は、ぼかされているタイプＩＶテーブル４００を用いて排他的論理和を取られる必要がある。そのために、各３２ビット出力値は、８個の４ビットニブルに分けられ、ニブルの適切な対が各々のタイプＩＶテーブルへ入力される。これにより、４つの３２ビット出力値のＸＯＲは、符号化された状態で取得される。
【００４６】
この３２ビットの現れた符号化された排他的論理和を取られた結果は、先と同じくバイトに分けられ、各バイトは、区別可能なタイプＩＩＩテーブル３００へ入力される。タイプＩＩＩテーブルの各ニブルの入力復号化は、最後に適用されるタイプＩＶテーブルの出力符号化に対応する。タイプＩＩＩテーブルは、先と同じく、ぼかされているタイプＩＶテーブル４００を用いて排他的論理和を取られる４つの３２ビット出力値をもたらす。
【００４７】
要約すると、ラウンドは、ルックアップテーブルによって実施される。単一ラウンドのルックアップテーブルは、以下のようにネットワーク化される。データは、タイプＩＩテーブルへ入力される。かかるテーブルの出力は、符号化されたＸＯＲを表すタイプＩＶテーブルのネットワークへ供給される。このネットワークの出力は、タイプＩＩテーブルによって挿入された混合全単射符号化を相殺するタイプＩＩＩテーブルへ供給される。ラウンドの符号化された出力は、最終的に、タイプＩＩＩテーブルの出力を、再び、符号化されたＸＯＲを表すタイプＩＶテーブルのネットワークに入力することによって、得られる。
【００４８】
更に、ホワイトボックス実施は、外部符号化の無効化及び挿入の夫々のための開始（タイプＩａテーブル１００）及び終了（タイプＩｂテーブル５００）でのタイプＩテーブルを含む。タイプＩａテーブル１００は、単一のテーブルルックアップを適用することによって、図４に表されるようにマッピングの連なりを適用するために使用され得る。連なりにおいて、４ビットニブル入力復号化１０２が最初に現れる。次いで、８ビットから１２８ビットへの全単射１０４が現れる。この全単射は、ネットワークの入力及び出力の符号化を達成する。このマッピングは、プログラムの他の場所で元に戻され得る。全単射１０４の結果は１６個の８ビット片に分けられ、これらに、各々の８ビット全単射１０６が適用される。最後に、出力ニブル符号化１０８が適用される。記載されるように、マッピング１０２、１０４、１０６及び１０８のカスケードは予め計算され、最終的な結果はルックアップテーブルに示されている。これは、夫々１２８ビットの多くとも２５６エントリを有するテーブルをもたらす。タイプＩｂテーブル５００に組み込まれるマッピングの連なりは、図８で概略的に表示される。最初のマッピングは、入力ニブル復号化５０２である。その後に８ビット全単射５０４、ＴボックスＴｒｉ，ｊ５０６（ｒが最後のラウンドに対応する。）、出力符号化を提供する８ビットから１２８ビットへのマッピング５０８、及び出力ニブル符号化５１０が続く。このようなテーブルの１２８ビット出力は、他のタイプＩｂテーブルの出力と排他的論理和をとられ、再び、ニブル入力及び出力符号化タイプＩＶテーブルの使用をする。出力符号化５０８は、プログラムの他の場所、すなわち、プログラムの暗号化部分の外側で元に戻される。これは、攻撃する者が、プログラムの暗号化部分の入力及び出力のみを解析することによってテーブルの符号化を壊すことをより困難にする。
【００４９】
ホワイトボックス暗号化は、ソフトウェアでのブロックサイファの実施を含む。これにより、攻撃する者は、ホワイトボックス攻撃モデルでキーを取り出すことさえできない。ホワイトボックス攻撃モデルは、攻撃する者が実行環境上で実施への完全アクセス、及び完全制御を有すると考えられるので、最強の考えられる攻撃モデルの１つである。ホワイトボックス実施は、ＡＥＳ、ＤＥＳ及び他の暗号化スキームのために存在する。かかるホワイトボックス実施は、上述される同様の考えに基づき、当業者は、暗号化スキームのホワイトボックス実施を作り出すためにホワイトボックス実施の原理を適用することができる。
【００５０】
近年、幾つかの攻撃が公にされており、これらは、特定のホワイトボックス実施の幾つかの弱点を明らかにする。例えば、非特許文献３は、ＡＥＳのホワイトボックス実施に対する攻撃について記載する。ホワイトボックス・コンテキストにおいてこのような攻撃をより困難なものとする特性を有する改善されたブロックサイファの必要性が生じている。例えばソフトウェアの不正な妨害を強めるような、ホワイトボックス実施の適用は、このような改善されたブロックサイファから恩恵を受けうる。すなわち、それらは、ホワイトボックス実施が存在する、安全であって且つ速度及び記憶に関して良好な性能を有するブロックサイファから恩恵を受けうる。
【００５１】
ＡＥＳ及びＤＥＳ等のブロックサイファは、ホワイトボックス実施で使用される場合に幾つかの欠点を伴う。これはまた、それらのホワイトボックス実施で公にされた攻撃によって反映される。これまで公にされている攻撃のためのパッチが存在しているが、既知のブロックサイファの弱点を有さず、又は少なくとも弱点の幾つかを減らす目的に合ったブロックサイファを有することが望ましい。
【００５２】
ブロックサイファの拡散演算子は、通常、固定マトリクス乗算として特定され得る。これは、例えば、ＡＥＳ及びＤＥＳの場合である。このようなブロックサイファのホワイトボックス実施は、ブロックサイファが固定された線形の拡散演算子を有する場合に、非特許文献３で記載されるような攻撃に対して弱いことがある。このことは以降で説明される。
【００５３】
記載されるホワイトボックス実施は、自身の入力及び出力を符号化することによってぼかされるルックアップテーブルを有する。非特許文献１及び２では、非線形符号化を使用することが提案されている。しかし、非特許文献３で記載される攻撃を考慮して、符号化の非線形部分は十分にはキーをぼかさず、且つ、基礎を成す暗号化スキームで生ずる線形演算子はホワイトボックス実施において弱点のままであると反論することができる。例えば、キーの線形演算子部分の定義を行うことによって、線形演算子の選択を変更可能とすることが提案される。
【００５４】
実施例で、ＡＥＳは、拡散演算子が可変であるように変更される。ＡＥＳの拡散演算子はＭｉｘＣｏｌｕｍｎｓである。この演算は、マトリクス乗算：
【数５】
0005485694.tif 000015
を介して、４バイトａ０、ａ１、ａ２、ａ３を４バイトｂ０、ｂ１、ｂ２、ｂ３に変換する。マトリクスの要素は１６進法で与えられる。マトリクスは、マトリクス要素が異なる値によって置換される場合に、その定義をキーに含めることによって可変にされ得る。ＡＥＳで、キーは、ＡｄｄＲｏｕｎｄＫｅｙ変換で用いられる１２８ビット列（string）によって形成される。この実施例に従う変形例で、それは、かかる１２８ビット列と、ＭｉｘＣｏｌｕｍｎｓ変換で用いられる係数との組み合わせである。暗号化スキームの全体を通して式（１）を置換するために使用されるべき単一のＭｉｘＣｏｌｕｍｎｓ変換を表すようひと組の係数を使用することが可能である。攻撃する者は、どの変換が使用されているのかを知らないので、更に、異なる未知の変換を含む異なるキーが分配されるので、有効な攻撃を設計することはより難しい。また、異なるＭｉｘＣｏｌｕｍｎｓ変換を夫々表す更なる組の係数を使用することも可能である。この場合に、異なるＭｉｘＣｏｌｕｍｎｓ変換は、暗号化スキームにおける異なる場所で使用される。このことは、攻撃を更に複雑にする。例えば、異なる変換は、異なるラウンドで及び／又は異なる列へ適用される。
【００５５】
ブロックサイファは、ホワイトボックス実施を用いて実施され得る。このようなホワイトボックス実施は、符号化されたルックアップテーブルの形で（キー依存の）ＭｉｘＣｏｌｕｍｎｓ動作を有する。（変更されたＭｉｘＣｏｌｕｍｎｓ動作の定義を有する）キーが更新又は変更される必要がある場合に、新しい組のルックアップテーブルは、既存のルックアップテーブル（の幾つか）を置換する必要がある。このために、新しい係数が、場合により符号化又は暗号化をされた形でホワイトボックス実施へ提供されてよい。
【００５６】
記載される方法は、ブロックサイファの安全なホワイトボックス実施を得るために適用され得る。このホワイトボックス実施は、ブロックサイファのキーを保護するためである（これは、ホワイトボックス暗号化の共通の目的である。）が、更に、関連するソフトウェア不正妨害技術を適用するためにも使用され得る。
【００５７】
留意すべきは、ホワイトボックス実施で実行される動作は、２つのタイプに分けられ得ることである。第１のタイプの動作は、ホワイトボックス実施の基礎にある暗号化スキームの部分である。おおよそ、かかる動作は、それらが暗号化されたデータにおける値を決定するという事実によって認識され得る。「符号化」と呼ばれる第２のタイプの動作は、第１のタイプの動作の中間結果をぼかすようホワイトボックス実施に含まれる。通常、第１のタイプの動作の出力は、出力符号化を用いて符号化される。この出力符号化は、対応する入力復号化動作によって第１のタイプの次なる動作を適用する前に元に戻される。通常、１又はそれ以上の入力復号化、第１のタイプの１又はそれ以上の動作、及び１又はそれ以上の出力符号化は、単一の動作、通常はルックアップテーブル、に結合される。これにより、符号を検査することによって又は他のホワイトボックス攻撃を実行することによって第１のタイプの動作に関する情報を取り出すことは困難である。
【００５８】
公にされている攻撃から得られる１つの結論は、入力及び出力符号化が第１のタイプの動作を十分に隠さないことである。これは、特に、第１のタイプの多数の変換が公知情報であって、且つ、幾つかの動作又はただ１つの動作のみが可変又はキー依存する場合である。例えば、ＡＥＳは、１ラウンドに４つの動作を有する。うち１つの動作のみがキー依存する（ＡｄｄＲｏｕｎｄＫｅｙステップは、キーから得られたビットを有してＸＯＲ演算を行う。）。残り３つの動作（ＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、及びＭｉｘＣｏｌｕｍｎｓ）は、標準の仕様において完全に固定されている。これは、第二のタイプの動作、すなわち、これらの動作を囲む入力及び出力符号化を壊すことを比較的容易にする。ホワイトボックス実施を攻撃に対して脆弱化する１つのステップは、ＭｉｘＣｏｌｕｍｎｓステップである。このステップは、復号化の間に導入されるビットエラーが３２出力ビット、すなわち、複数バイトを介して伝播（拡散）されることを確かにするので、拡散動作として認識され、一方、ＳｕｂＢｙｔｅｓステップ（Ｓボックス）は単一バイトで動作する。結果として、ホワイトボックス実施は、ＡＥＳに代えて、ＭｉｘＣｏｌｕｍｎｓステップが秘密マトリクスによって管理されるところのＡＥＳの変形を用いることによって、攻撃に対してより良く保護され得る。この秘密マトリクスは、ホワイトボックス実施にハードコード化されても、あるいは、ホワイトボックス実施がＭｉｘＣｏｌｕｍｎｓステップをデータに適用することを可能にするのに十分な、マトリクスに関する情報（新しい組のルックアップテーブル）を提供することによって伝えられてもよい。
【００５９】
目下可変な拡散演算子がある望ましい特性を満足することを確かにするよう注意が払われてよい。かかる望ましい特性は、拡散演算子が可逆であることを含む。また、演算子の入力での１（又は数）ビットの変化は、演算子の出力ビットの多くに対して影響を有するべきである。より正確には、２つの入力値ｘ及びｙを考えると、ｘ及びｙで異なるビットの数及びｘ及びｙに対応する出力値で異なるビットの数の和は大きくなければならない。特に、入力値ｘ及びｙの全ての組み合わせを考えた場合のこの和の最小値は大きくなければならない。例えば、これは、分離した最大距離である拡散演算子を用いることによって実現され得る。また、システムを壊すことをより困難にするために非線形な拡散演算子を使用することも可能である。所望の特性を実施する簡単な方法は、大きなクラスの演算子の中でランダムな演算子を選択し、選択された演算子が所望の特性を有するより小さなクラスの演算子に属するかどうかを検証することである。検証により、選択された演算子がより小さなクラスの演算子には属さないことが示される場合は、より小さなクラスの演算子に属する演算子が見つけられるまで、新しいランダムな演算子が大きなクラスの演算子から選択されて検証される。
【００６０】
このような拡散演算子の他の望ましい特性が以下で述べられている。拡散を扱うマトリクスＭとのマトリクス乗算が後に続くＳボックスを有するラウンドのブロックサイファを考える。更に、ホワイトボックス実施によってこのブロックサイファを実施するとする。ｎはＳボックスの入力ビットの数を表し、ｍはラウンドの非線形な出力符号化の細かさであるとする。すなわち、ラウンドの出力は、ｍビットの非線形関数（例えば、記載される例となるホワイトボックスＡＥＳ実施、ｎ＝８及びｍ＝４）によって符号化される。ｂｉをｉ番目のＳボックスの出力とし、ｋをＳボックスの数とし、ｌを符号化された出力ワードの数とする（留意すべきは、これは、拡散演算子の入力サイズ及び出力サイズがｋｎ＝ｌｍビットによって与えられることを暗に示すことである。）。その場合に、ラウンドの出力は：
【数６】
0005485694.tif 000016
によって与えられる。ｂｉは全てのｉ＝１，．．．，ｋに対するｎビット値であり、ｘｉは全てのｉ＝１，．．．，ｋに対するｍビット値である。Ｍｉ，ｊを、行（ｉ−１）ｍ及び列（ｊ−１）ｎで開始するＭのｍ×ｎサブマトリクスとして定義する。行及び列は０から進んでカウントされる。その場合に、上記式は：
【数７】
0005485694.tif 000017
と書き換えられ得る。Ｍにおいてｋ個のサブマトリクスＭｉ１，Ｍｉ２，．．．，Ｍｉｋの１つの行を考える。サブセットＶ＝｛ｖ１，ｖ２，．．．，ｖｒ｝は、ある正の整数ｒに関するこれらのマトリクスのサブセットであるとする。Ｍ（Ｖ）を、Ｖでマトリクスを連結させることによって得られるｍ×ｎｒマトリクスとして定義する。すなわち、ある正の整数ｐに関して、Ｍ（Ｖ）の行ｐは、Ｖからの全てのマトリクスのｐ番目の行を順序付けることによって得られる。例えば、
【数８】
0005485694.tif 000018
に関して、マトリクスＭ（Ｖ）は：
【数９】
0005485694.tif 000019
によって与えられる。拡散演算子の望ましい特性は、サブマトリクスＭｉ１，Ｍｉ２，．．．，Ｍｉｋの行ｉ（ｉ＝１，．．．，ｋ）のいずれについても、Ｍ（Ｖ１）及びＭ（Ｖ２）の両方がｍの階数を有するように、｛Ｍｉ１，Ｍｉ２，．．．，Ｍｉｋ｝の２つの互いに素なサブセットは存在しないことである。
【００６１】
図９は、本発明の実施例に従う処理ステップを表すフローチャートを示す。ステップ６０２で、拡散演算子は、ブロックサイファに対するキーの部分であるようランダムに選択される。ランダム化は、（疑似）乱数生成器を用いて実現されてよい。それはまた、事実上ランダムな人間入力によって実現されてもよい。選択された演算子が基本的にランダムな順序で異なるユーザへ割り当てられる逐次選択もまたランダム選択である。演算子のクラスは、乱数生成器を用いて埋められたパラメータを有する式の組により定義されてよい。ステップ６０６で、暗号化アルゴリズムの実施は、ステップ６０２のキーに従って設定される。これは、拡散演算子を、キーによって特定される値に設定することを有する。このようにして、拡散演算子は、ブロックサイファにおいて自身の場所を与えられる。ステップ６０８で、暗号化アルゴリズムに対応する復号化アルゴリズムの実施は、キーに従って設定される。これは、暗号化アルゴリズムの実施の設定と同様の方法で行われ得る。必要に応じて、拡散演算子は、ブロックサイファに従って、２つの実施のいずれか一方で反転されるべきである。
【００６２】
２つの実施のうちの少なくとも一方はホワイトボックス実施である。ホワイトボックス実施の設定に関して、拡散演算子は、安全上の理由により、ホワイトボックス実施へ明示的に伝えられないことがある。代わりに、それは、適切に選択された入力及び／又は出力符号化によってぼかされ得る。次いで、ぼかされた拡散演算子を表すルックアップテーブルは、ホワイトボックス実施へ送られて、暗にそれがキーを使用することを可能にする。ルックアップテーブルは、また、暗号化アルゴリズムの１又はそれ以上の他の動作と組み合わされてよい。拡散演算子は、また、幾つかのより小さい動作に分けられてよい。通常、ホワイトボックス実施では、かかるぼかされた演算子は、ルックアップテーブルを用いて導入される。
【００６３】
ステップ６１０で、２つの実施は、暗号化されたデータの交換のために使用される。そのために、暗号化アルゴリズムの実施によって暗号化されるデータは、復号化アルゴリズムの実施へ受け渡される。通常、２つの実施は、異なる端末で使用される。データ交換は、インターネット接続又は他のタイプのネットワーク接続を用いて、更に、例えばＣＤ又はＤＶＤのような記憶媒体を用いて実現されてよい。
【００６４】
動作は、特定の順序でこのような及び他の実施例で与えられてきた。これは、ステップが多くの異なる順序で実行されてよいと当業者が認識しうるように、単なる例と考えられるべきである。
【００６５】
図１０は本発明の実施例を表す。図１０は、ステップ７０２で、暗号化キーメッセージが、選択された拡散演算子に関する情報を含んで生成されることを示す。このメッセージは、それ自体を適切に構成するようホワイトボックス実施のための十分な情報を含むべきである。通常、メッセージは、明示的に拡散演算子を含まないが、むしろ、入力及び出力符号化を提供される拡散演算子のバージョンを含む。暗号化キーメッセージは、部分的に又は完全に暗号化されてよい。メッセージは更なるキー情報を含んでよい。例えば、ＡＥＳのようなブロックサイファが用いられる場合に、キーは、１２８ビットＡＥＳキーを更に含みうる。ステップ７０４で、暗号化キーメッセージは、例えばデジタルネットワーク又はデジタル記憶媒体のような如何なる既知の媒体を用いてもホワイトボックス実施へ提供される。ステップ７０６で、ホワイトボックス実施は、メッセージ内の情報に依存して設定される。例えば、キーがルックアップテーブルの形で拡散演算子を含む場合は、かかるルックアップテーブルは、所定の方法でホワイトボックス実施に含まれる。ホワイトボックス実施が備わっている端末は、ホワイトボックス実施を設定するよう暗号化キーメッセージを受け取って処理することが可能なソフトウェア及び／又はハードウェアを有する。
【００６６】
図１１は暗号化方法を表す。暗号化方法は、ホワイトボックス実施で実施されるのに適している。方法は、入力ワードを出力ワードによって夫々置換する複数の変換を適用するステップ（ブロック８０２）を有する。ＡＥＳに基づく例で、このような変換は、ＡｄｄＲｏｕｎｄＫｅｙ、ＳｕｂＢｙｔｅｓ、及び（入力ワードを行において隣接する入力ワードによって置換する）ＳｈｉｆｔＲｏｗｓを有する。これらの動作は、各バイトにおける情報が１より多い他のバイトへ広められるという共通点を有する。
【００６７】
方法は、拡散演算子を複数の出力ワードの連なりに適用するステップ（ブロック８０４）を更に有する。拡散演算子は、出力ワードの間で出力ワードによって表される情報を拡散するという効果を有する。ＡＥＳの例では、このような拡散演算子はＭｉｘＣｏｌｕｍｎｓである。ＭｉｘＣｏｌｕｍｎｓは、４バイトの連なりである３２ビット列のビットの間でバイト内の情報を広める。拡散演算子を表す情報は、暗号化方法へのキーに含まれる（ブロック８０６）。このキーは、拡散演算子を当該方法の変数とする。
【００６８】
図１２は本発明の実施例を表す。図は、例えば、デジタルコンテンツのプロバイダとの通信のためのインターネットへの接続のような、通信部９５を示す。コンテンツは、また、例えばＤＶＤ又はＣＤ等の媒体９６からも取得され得る。ＰＣ上でのデジタルコンテンツは、通常、メモリ９１を用いてプロセッサ９２によって実行されるメディアプレーヤーを用いてレンダリングされる。かかるプレーヤーは、特定のコンテンツフォーマットに関して、通信部９５及び／又は媒体９６を介して取得されるコンテンツに対応してフォーマット特有の復号化を実行するよう各々のプラグインを実行することができる。かかるコンテンツフォーマットには、ＡＶＩ、ＤＶ、モーションＪＰＥＧ、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、ＷＭＶ、オーディオＣＤ、ＭＰ３、ＷＭＡ、ＷＡＶ、ＡＩＦＦ／ＡＩＦＣ、ＡＵ等が含まれる。デジタル権利管理の目的のために、コンテンツを復号化するだけでなくコンテンツを解読する安全なプラグインが使用されてよい。このプラグインは、メモリ９１に記憶されているプロセッサ命令及びパラメータ（例えば、ぼかされたルックアップテーブル）を有する。ぼかされたルックアップテーブルは、挙げられているランダムに選択される拡散演算子を有してホワイトボックス実施を形成する。任意に、暗号化キーメッセージが通信部９５及び／又は媒体９６を介して受け取られてよい。ユーザ入力９４が、レンダリングされるコンテンツを指示するようユーザからのコマンドを得るべく設けられてよい。ディスプレイ９３及び／又はスピーカが、復号化及び／又は解読をされたコンテンツをレンダリングするために設けられる。
【００６９】
当然のことながら、本発明は、また、本発明の具体化を図るよう適合されたコンピュータプログラム、具体的には、媒体上又は内のコンピュータプログラムにまで及ぶ。プログラムは、部分的に適合する形態等のソースコード、オブジェクトコード、コード中間ソース及びオブジェクトコードの形、又は本発明に従う方法の実施での使用に適したいずれかの他の形であってよい。媒体は、プログラムを搬送することができる如何なるエンティティ（entity）又はデバイスであってもよい。例えば、媒体には、ＲＯＭ、例えばＣＤ  ＲＯＭ又は半導体ＲＯＭ、あるいは、磁気記録媒体、例えばフロッピーディスク（登録商標）又はハードディスクのような記憶媒体が含まれる。更に、媒体は、電気又は光の信号等の伝送可能な媒体であってよく、電気若しくは光ケーブルを介して又は無線若しくは他の手段によって搬送されてよい。プログラムがこのような信号で具現される場合に、媒体は、このようなケーブル又は他の装置若しくは手段によって構成されてよい。代替的に、媒体は、プログラムが埋め込まれている集積回路であってよい。集積回路は、関連する方法を実行し、又はその実行で使用されるよう適合される。
【００７０】
留意すべきは、上記の実施例は本発明を限定するよりむしろ説明しており、当業者は添付の特許請求の範囲の適用範囲から逸脱することなく多数の代替の実施例を設計することができることである。特許請求の範囲で、括弧内の如何なる参照符号も請求項を限定するよう解されるべきではない。語「有する」及びその活用形の使用は、請求項に挙げられている以外の要素又はステップの存在を除くわけではない。要素の前にある冠詞「１つの」は、このような要素の複数個の存在を除くわけではない。本発明は、幾つかの個別の要素を有するハードウェアによって、及び適切にプログラミングされたコンピュータによって実施され得る。幾つかの手段を列挙する装置クレームで、かかる手段のうちの幾つかは、ハードウェアの同一アイテムによって具現されてよい。或る手段が相互に異なる従属請求項で挙げられているという単なる事実は、これらの手段の組み合わせが有利に使用され得ないことを示しているわけではない。
【図１】
0005485694.tif 000020
【図２】
0005485694.tif 000021
【図３】
0005485694.tif 000022
【図４】
0005485694.tif 000023
【図５】
0005485694.tif 000024
【図６】
0005485694.tif 000025
【図７】
0005485694.tif 000026
【図８】
0005485694.tif 000027
【図９】
0005485694.tif 000028
【図１０】
0005485694.tif 000029
【図１１】
0005485694.tif 000030
【図１２】
0005485694.tif 000031