(57)【特許請求の範囲】
【請求項１】
暗号処理用のシステムであって、
メッセージの表現である第１のメッセージ表現を与えるためのメッセージユニットと、
キー表現を与えるためのキーユニットであって、前記キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの組合せを一意であり且つ無作為に決定されるビット列にマップして得られる暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なるとともに、キー空間に対して区分的に前記第２の暗号アルゴリズムと等価の暗号である、キーユニットと、
第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行するためのステップユニットであって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップユニットと
を含む、システム。
【請求項２】
前記ステップユニットがルックアップテーブル又は当該ルックアップテーブルのネットワーク内の第２の暗号化表現を探索するためのルックアップユニットを含み、前記ルックアップテーブル又は当該ルックアップテーブルの前記ネットワークは、前記第１のメッセージ表現及び前記キー表現の組合せから対応する前記第２のメッセージ表現へのマッピングを含む、請求項１に記載のシステム。
【請求項３】
前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップが同じ操作を含み、前記第１の暗号アルゴリズムのステップの操作の少なくとも１つのパラメータが前記第２の暗号アルゴリズムのステップの対応するパラメータと異なる、請求項１に記載のシステム。
【請求項４】
前記第１の暗号アルゴリズムは一連の第１のステップを含み、前記第２の暗号アルゴリズムは対応する一連の第２のステップを含み、前記メッセージユニットは前記第１のメッセージ表現を与え、前記第１のメッセージ表現は、前記第１の暗号アルゴリズムの前のステップ及び前記第２の暗号アルゴリズムの前のステップをメッセージ表現及びキー表現に基づいて実行するための更なるステップユニットから得られる、前記第１の暗号アルゴリズムの前記前のステップの結果及び前記第２の暗号アルゴリズムの前記前のステップの結果の暗号化表現である、請求項１に記載のシステム。
【請求項５】
暗号処理用のシステムであって、
メッセージの表現である第１のメッセージ表現を与えるためのメッセージユニットと、
キー表現を与えるためのキーユニットであって、前記キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、前記第１の暗号アルゴリズムは前記第２の暗号アルゴリズムと異なる、キーユニットと、
第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行するためのステップユニットであって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップユニットと、
前記第２の暗号アルゴリズムの結果に基づいて前記キー表現を検証するための検証ユニットと、を含む、システム。
【請求項６】
前記検証ユニットは、前記第２の暗号アルゴリズムの出力を入力メッセージと比較する、請求項５に記載のシステム。
【請求項７】
前記検証ユニットは、前記第２の暗号アルゴリズムの出力を更なる第１のメッセージ表現と暗号ブロックモードで組み合わせる、請求項５に記載のシステム。
【請求項８】
前記ステップユニットは、ホワイトボックス暗号実装の中に隠される、請求項１に記載のシステム。
【請求項９】
メッセージの表現である第１のメッセージ表現を与えるためのメッセージユニットと、
キー表現を与えるためのキーユニットであって、前記キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なるとともに、キー空間に対して区分的に前記第２の暗号アルゴリズムと等価の暗号である、キーユニットと、
第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行するためのステップユニットであって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップユニットと、含む第１のシステム及び第２のシステムを備え、
前記第１のシステムの第１の暗号アルゴリズムは前記第２のシステムの第１の暗号アルゴリズムと同一であり、前記第１のシステムの第２の暗号アルゴリズムは前記第２のシステムの第２の暗号アルゴリズムと異なり、前記第１のシステムの前記第２の暗号アルゴリズム及び前記第２のシステムの前記第２の暗号アルゴリズムが同じ結果を有する複数の第２のキーが存在し、前記第１のシステムの前記第２の暗号アルゴリズム及び前記第２のシステムの前記第２の暗号アルゴリズムが異なる結果を与える複数の第２のキーが存在する、システム。
【請求項１０】
前記第１のシステム及び前記第２のシステムの前記メッセージユニットは、
前記第１のシステム及び前記第２のシステムの両方がメッセージへのアクセスを許可されている場合、前記第１のシステムの前記第２の暗号アルゴリズム及び前記第２のシステムの前記第２の暗号アルゴリズムが同じ結果を有する第２のキーを使用してメッセージを与え、
前記第１のシステム又は前記第２のシステムの何れかがメッセージへのアクセスを許可されていない場合、前記第１のシステムの前記第２の暗号アルゴリズム及び前記第２のシステムの前記第２の暗号アルゴリズムが異なる結果を有する第２のキーを使用してメッセージを与える、請求項９に記載のシステム。
【請求項１１】
暗号処理用のステップユニットであって、前記ステップユニットは、
第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行し、前記第２のメッセージ表現は、前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現であり、
前記第１のメッセージ表現は、メッセージの表現であり、
前記キー表現は、前記第１の暗号アルゴリズムの第１のキー及び前記第２の暗号アルゴリズムの第２のキーの組合せを一意であり且つ無作為に決定されるビット列にマップして得られる暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なるとともに、キー空間に対して区分的に前記第２の暗号アルゴリズムと等価の暗号である、ステップユニット。
【請求項１２】
メッセージユニット、キーユニット及びステップユニットを備える暗号処理用のシステムの作動方法であって、
前記メッセージユニットが、メッセージの表現である第１のメッセージ表現を与えるステップと、
前記キーユニットが、キー表現を与えるステップであって、前記キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの組合せを一意であり且つ無作為に決定されるビット列にマップして得られる暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なるとともに、キー空間に対して区分的に前記第２の暗号アルゴリズムと等価の暗号である、キー表現を与えるステップと、
前記ステップユニットが、第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行するステップであって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、実行するステップと、
を含む、暗号処理用のシステムの作動方法。
【請求項１３】
メッセージユニット、キーユニット、ステップユニット及び検証ユニットを備える暗号処理用のシステムの作動方法であって、
前記メッセージユニットが、メッセージの表現である第１のメッセージ表現を与えるステップと、
前記キーユニットが、キー表現を与えるステップであって、前記キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なる、キー表現を与えるステップと、
前記ステップユニットが、第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行するステップであって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、実行するステップと、
前記検証ユニットが、前記第２の暗号アルゴリズムのステップの結果に基づいて前記キー表現を検証するステップと、
を含む、暗号処理用のシステムの作動方法。
【請求項１４】
メッセージの表現である第１のメッセージ表現を与える手段、
キー表現を与える手段であって、前記キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの組合せを一意であり且つ無作為に決定されるビット列にマップして得られる暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なるとともに、キー空間に対して区分的に前記第２の暗号アルゴリズムと等価の暗号である、キー表現を与える手段、及び、
第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行する手段であって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、実行する手段として、コンピュータを機能させるためのコンピュータプログラム。
【請求項１５】
メッセージの表現である第１のメッセージ表現を与える手段、
キー表現を与える手段であって、前記キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、前記第１の暗号アルゴリズムは、前記第２の暗号アルゴリズムと異なる、キー表現を与える手段、
第２のメッセージ表現を得るために、前記第１の暗号アルゴリズムのステップ及び前記第２の暗号アルゴリズムのステップを前記第１のメッセージ表現及び前記キー表現に基づいて実行する手段であって、前記第２のメッセージ表現は前記第１の暗号アルゴリズムのステップの結果及び前記第２の暗号アルゴリズムのステップの結果の暗号化表現である、実行する手段、及び、
前記第２の暗号アルゴリズムのステップの結果に基づいて前記キー表現を検証する手段として、コンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号のシステム及び方法に関する。
【背景技術】
【０００２】
例えばソフトウェアの購入、評価トライアル、又はソフトウェアアップグレードに鑑みて顧客にソフトウェアパッケージを配布する場合、ソフトウェアの所有者との結付きを確立することが知られている。更に、許可された顧客だけがソフトウェアパッケージにアクセスできることを確実にするための予防策を取ることが知られている。これを行うための知られている方法は、パッケージ又はそのインタフェースを標準化された暗号、例えばＡＥＳやＤＥＳによって暗号化することによる。この手法の不利点は、悪意ある利用者が公式キーを使用してパッケージを復号し、その後（悪意ある利用者は使用されている暗号のキースケジュールを知るので）自分が選んだ別のキーでパッケージを容易に再び暗号化できることであり、極端な事例では、悪意ある利用者がパッケージを再び暗号化した後であたかもプログラムが自分のものであるかのようにそのアプリケーションを再販売し得る。
【０００３】
Proceeding SAC 2002 Revised Papers from the 9th Annual International Workshop on Selected Areas in Cryptography, pages 250-270, Springer-Verlag London, UKの中のS. Chow、P.A. Eisen、H. Johnson、及びP.C. van Oorschotによる「White-Box Cryptography and an AES Implementation」はホワイトボックス暗号と呼ばれる方法を開示し、ホワイトボックス暗号ではキーが暗号実装の不可欠な部分である１つ又は複数のルックアップテーブル内に拡張される。ルックアップテーブルが表すプロセスステップを理解するのをより困難にするために、これらのルックアップテーブルの入出力はことによると様々な符号化を使用して符号化される。
【発明の概要】
【課題を解決するための手段】
【０００４】
改善された暗号システムを有することが有利である。この関心事により上手く対処するために、本発明の第１の態様は
メッセージの表現である第１のメッセージ表現を与えるためのメッセージユニットと、
キー表現を与えるためのキーユニットであって、キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なり得る、キーユニットと、
第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行するためのステップユニットであって、第２のメッセージ表現は第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップユニットと
を含む、システムを提供する。
【０００５】
第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現を得ることによって２つの暗号アルゴリズムを織り交ぜるこのやり方はキー空間を広げることを可能にし、それは両方のキーがキー空間に寄与するからである。更にこのシステムは、結果を暗号化形式に保ちながら、データに対して２つの暗号アルゴリズムを同時に行うことを可能にする。
【０００６】
ステップユニットはルックアップテーブル又はルックアップテーブルのネットワーク内の第２の暗号化表現を探索するためのルックアップユニットを含むことができ、ルックアップテーブル又はルックアップテーブルのネットワークは、第１のメッセージ表現及びキー表現の組合せから対応する第２のメッセージ表現へのマッピングを含む。これは、結果の暗号化表現を伴い、両方の暗号アルゴリズムのステップがどのように同時に行われ得るのかについての一実施例である。
【０００７】
第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップは同じ操作を含むことができ、第１の暗号アルゴリズムのステップの操作の少なくとも１つのパラメータが第２の暗号アルゴリズムのステップの対応するパラメータと異なる。これは第１の暗号アルゴリズムの暗号に比べ、第２の暗号アルゴリズムについて異なる暗号を作成する便利なやり方である。
【０００８】
第１の暗号アルゴリズムは第１の複数のステップを含むことができ、第２の暗号アルゴリズムは対応する第２の複数のステップを含むことができ、第１の複数のステップのステップ（又は各ステップ）は、第２の複数のステップの対応する各ステップと多くて１つ又は複数のパラメータ値の分だけ異なる。これは第１の暗号アルゴリズムの暗号に比べ、第２の暗号アルゴリズムについて異なる暗号を作成する便利なやり方である。
【０００９】
第１の暗号アルゴリズムは一連の第１のステップを含むことができ、第２の暗号アルゴリズムは対応する一連の第２のステップを含むことができ、メッセージユニットは第１のメッセージ表現を与えるように構成され、第１のメッセージ表現は、第１の暗号アルゴリズムの前のステップ及び第２の暗号アルゴリズムの前のステップをメッセージ表現及びキー表現に基づいて実行するための更なるステップユニットから得られる、第１の暗号アルゴリズムの前のステップの結果及び第２の暗号アルゴリズムの前のステップの結果の暗号化表現である。このことは両方の暗号アルゴリズムの一連のステップを暗号化された領域内で行うことを可能にする。
【００１０】
このシステムは、第２の暗号アルゴリズムの結果に基づいてキー表現を検証するための検証ユニットを含み得る。第２の暗号アルゴリズムの結果は、キー表現が一定の条件を満たすかどうかを判定するために使用され得る。
【００１１】
検証ユニットは、第２の暗号アルゴリズムの出力を入力メッセージと比較するように構成され得る。これはキー表現を検証するやり方の一実施例である。例えば第２の暗号アルゴリズムは、第２のキーが１組の所定の許可されたキーの要素である場合は入力メッセージの複製又は入力メッセージの単純な変換を出力し、第２のキーがその１組の所定の許可されたキーの要素でない場合は他のものを出力するように構成され得る。検証ユニットは、第２の暗号アルゴリズムの出力を入力メッセージと比較することにより、第２の暗号アルゴリズムの出力が入力メッセージ又は入力メッセージの単純な変換と等しいかどうかを検査するように構成され得る。悪意ある利用者はこの１組の許可されたキーを知らないので、この１組の許可されたキーの要素を見つけるのは困難である。
【００１２】
検証ユニットは、第２の暗号アルゴリズムの出力を更なる第１のメッセージ表現と暗号ブロックモードで組み合わせるように構成され得る。この更なる第１のメッセージ表現は、暗号ブロックモードで処理される次のデータブロックであり得る。暗号ブロック連鎖のモードを作るために、第２の暗号アルゴリズムの出力が次のブロックと組み合わせられても良い。
【００１３】
ステップユニットは、ホワイトボックス暗号実装の中に隠され得る。このことはステップの内部構造を隠すことを可能にする。例えば「許可された」１組のキーがこのようにして隠される。
【００１４】
別の態様では、上記のシステムの２つ、つまり第１のシステム及び第２のシステムが提供される。第１のシステムの第１の暗号アルゴリズムは第２のシステムの第１の暗号アルゴリズムと同一とすることができ、第１のシステムの第２の暗号アルゴリズムは第２のシステムの第２の暗号アルゴリズムと異なり得る。第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する複数の第２のキーが存在することができ、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を与える複数の第２のキーが存在し得る。このことは異なるキーを有する様々なオーディエンスを対象にすることを可能にする。これらの様々なオーディエンスは、そのオーディエンスによって使用される第２の暗号アルゴリズムによって許可される１組のキーに対応する第２のキーを使用することによって対処される。
【００１５】
別の態様によれば、暗号処理方法が提供される。この方法は、
メッセージの表現である第１のメッセージ表現を与えるステップと、
キー表現を与えるステップであって、キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる、キー表現を与えるステップと、
第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行するステップであって、第２のメッセージ表現は第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である、実行するステップと
を含む。
【００１６】
別の態様では、暗号処理用システムを提供する方法が与えられる。この方法は、
メッセージの表現である第１のメッセージ表現を与えるためのユニットを提供するステップと、
キー表現を与えるためのユニットを提供するステップであって、キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる、キー表現を与えるためのユニットを提供するステップと、
第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行するためのステップユニットを提供するステップであって、第２のメッセージ表現は第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップ手段を提供するステップと、
第２のアルゴリズムの少なくとも一部を秘密にしておくステップと
を含む。
【００１７】
第２のアルゴリズムの少なくとも一部が秘密に保たれるので、提供されるシステムが機能し得る別のキーを見つけるのが攻撃者にとって困難である。
【００１８】
この方法は、暗号処理用の第２のシステムを提供するステップを更に含むことができ、第１のシステムの第１の暗号アルゴリズムは第２のシステムの第１の暗号アルゴリズムと同一であり、第１のシステムの第２の暗号アルゴリズムは第２のシステムの第２の暗号アルゴリズムと異なり、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する複数の第２のキーが存在し、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を有する複数の第２のキーが存在する。このことは異なるシステムを有する様々なオーディエンスを対象にすることを可能にする。このシステム及び第２のシステムの両方の第２のアルゴリズムが秘密に保たれるので、どのキーがどのシステムによって使用され得るのかを見出すのが攻撃者にとって困難である。
【００１９】
この方法は、両方のシステムがメッセージへのアクセスを許可されている場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する第２のキーを使用してメッセージを与え、第１のシステム又は第２のシステムの何れかがメッセージへのアクセスを許可されていない場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を有する第２のキーを使用してメッセージを与えるステップを含み得る。
【００２０】
本明細書に記載の方法は、関連する方法を処理システムに実行させるための命令を含むコンピュータプログラム製品によって実装され得る。例えばコンピュータによって実施される方法としてコンピュータ上に実装されることに加え、本明細書に記載の方法は専用ハードウェア又はその両方の組合せによっても実装され得る。本発明による方法のための実行コードがコンピュータプログラム製品上に記憶され得る。コンピュータプログラム製品の例はメモリ装置、光学記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、コンピュータプログラム製品は、前述のプログラム製品がコンピュータ上で実行されるときに本発明による方法を実行するための、コンピュータ可読媒体上に記憶される非一時的プログラムコード手段を含む。好ましい実施形態では、コンピュータプログラムがコンピュータ上で実行されるとき、本発明による方法の全てのステップを実行するように適合されるコンピュータプログラムコードをコンピュータプログラムが含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に実装される。
【００２１】
本発明の上記の実施形態、実装形態、及び／又は態様の２つ以上が、有用と見なされる任意のやり方で組み合わせられ得ることが当業者によって理解されよう。
【００２２】
記載される本システムの修正形態及び改変形態に対応する、画像取得機器、ワークステーション、システム、方法、及び／又はコンピュータプログラム製品の修正形態及び改変形態が、この説明に基づいて当業者によって実行され得る。
【００２３】
本発明のこれらの及び他の態様が以下に記載の実施形態から明らかになり、かかる実施形態に関して説明される。
【図面の簡単な説明】
【００２４】
【図１】暗号処理用システムのブロック図である。
【図２】暗号処理方法の流れ図である。
【図３】暗号システムを提供する方法の流れ図である。
【発明を実施するための形態】
【００２５】
本開示の中で明らかにされる実施例は専ら例示目的で与えられる多くの詳細を含む。これらの詳細が本開示の範囲を限定することは意図されない。本明細書で開示されるユニットの幾つかは、例えば計算装置用のプログラムの一部であるソフトウェアユニットによって実装され得る。
【００２６】
図１は、暗号処理用のシステムの一実施例を示す。このシステムは、メッセージ表現３を与えるように構成されるメッセージユニット１を含む。例えば、メッセージ表現３は暗号化メッセージである。メッセージユニット１は、例えばそれ自体が当技術分野で知られている通信技術及び／又は記憶技術を使用し、外部の情報源からメッセージ表現を受信し又は取得するように構成され得る。更に、このシステムはキーユニット２を含む。キーユニット２は、キー表現４を与えるように構成される。このキー表現４は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現である。
【００２７】
これらの暗号アルゴリズムは、典型的には異なる暗号アルゴリズムである。特定の実施例では、第１の暗号アルゴリズムがメッセージ表現を復号するように構成されても良く、第２の暗号アルゴリズムがその復号の追加の検証を行うように構成され得る。第２の暗号アルゴリズムは、ＤＥＳやＡＥＳ等の暗号化又は復号アルゴリズムと同様の又は同一の構造を有する意味で暗号アルゴリズムである。「構造」という用語は、アルゴリズム内で行われるＸＯＲ演算や任意のS-box等の演算を指す。S-boxによって行われる特定の並べ替え等、第２のアルゴリズムのパラメータは暗号アルゴリズムの「構造」の一部と見なされるべきではない。
【００２８】
キー表現４は、第１のキー及び第２のキーを暗号化形式で表し得る。例えば、第１のキー及び第２のキーの任意の組合せを一意であり且つ無作為に決定されるビット列にマップして暗号化形式のキー表現４を得るために、ランダム全単射が使用され得る。このようにして、第１のキーに関係するビットを第２のキーに関係するビットと区別することが攻撃者にとってとりわけ困難である。キー表現４を得るために、第１のキー及び第２のキーの他の暗号化も使用され得る。
【００２９】
ステップユニット５は、暗号アルゴリズム両方の第１のステップを行うように構成される。両方の暗号アルゴリズムのステップの実施例は、例えばS-box又はＸＯＲ演算を適用することを含む。ステップユニット５はメッセージ表現３及びキー表現４を入力として取り、中間メッセージ表現６を出力として与える。中間メッセージ表現６は、第１の暗号アルゴリズムのステップの出力と第２の暗号アルゴリズムのステップの出力とを含む。中間メッセージ表現６は、これらの出力を暗号化形式で含む。第１のキーに関係するビットを第２のキーに関係するビットと区別するのを困難にするやり方でキーが暗号化されるやり方と同様に、これらの出力は、第１のアルゴリズムのステップの出力に関係する情報が第２のアルゴリズムのステップの出力に関係する情報と容易に区別できないやり方で符号化され得る。例えば、第１のアルゴリズムのステップのあり得る出力と第２のアルゴリズムのステップのあり得る出力との任意の組合せを一意であり且つ無作為に決定されるビット列にマップして中間メッセージ表現６を得るために、ランダム全単射が使用され得る。
【００３０】
このプロセスは、暗号アルゴリズムの次のステップについて繰り返されても良い。但し入力は僅かに異なり、それは第１のステップでは、メッセージユニット１が入力メッセージのメッセージ表現３を与え、ステップユニット５が、第１の暗号アルゴリズムのステップの出力及び第２の暗号アルゴリズムのステップの出力の両方を表す中間メッセージ表現６を暗号化形式で出力するからである。
【００３１】
メッセージユニット７は、この中間メッセージ表現６をステップユニット１０に与える。ステップユニット１０は、両方の暗号アルゴリズムの第２のステップを実行し、従って第１の暗号アルゴリズムの第１のステップの出力及び第２の暗号アルゴリズムの第１のステップの出力を必要とする。この情報は、中間メッセージ表現６により、暗号化形式でメッセージユニット７によって与えられる。更にステップユニット１０は、各暗号アルゴリズムのキー、例えばラウンドキーを必要とし得る。これらのキーは、キー表現９の形でキーユニット２によって与えられ得る。キー表現９は、それらの（ラウンド）キーを暗号化形式で表す。任意選択的に、キー表現９はステップユニット５によって生成され、キーユニット２に転送される。
【００３２】
ステップユニット１０は、更なる中間メッセージ表現１１を出力する。この中間メッセージ表現１１は、第１の暗号アルゴリズムの第２のステップ及び第２の暗号アルゴリズムの第２のステップの出力を表す。
【００３３】
点２１によって全体的に表わされているように、両方の暗号アルゴリズムの次のステップを実施するために、更なるメッセージユニット及びステップユニットが設けられても良い。これらのステップは、メッセージユニット７及びステップユニット１０と同じやり方で実施され得る。更に、キーユニット２が、キー表現９及びキー表現１４をステップユニット１０及びステップユニット１５への入力として与え得る。これらのキー表現９、１４は両方のアルゴリズムに関するラウンドキーを例えば符号化形式で含み得る。当然ながら、各ユニットは第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを実施するので、各ユニットの実際のコンテンツは異なり得る。しかし、２つのアルゴリズムのステップが組み合わせられるやり方、及び中間結果が例えば全単射によって暗号化されるやり方は同じである。
【００３４】
メッセージユニット１２が、かかるステップユニットによって生成される中間メッセージ表現を受信し、それを両方の暗号アルゴリズムの最後のステップを実施するステップユニット１５に与える。ステップユニット１５は、キー表現１４（例えば上記のように両方の暗号アルゴリズムのラウンドキーを表す）をキーユニット２から更に受信する。ステップユニット１５が最終的なメッセージ表現１６を出力する。最終的なメッセージ表現１６は、第１の暗号アルゴリズムの最後のステップの出力及び第２の暗号アルゴリズムの最後のステップの出力を表し得る。最終的なメッセージ表現１６は、上記で開示されたようにこれらの出力を暗号化形式で表し得る。
【００３５】
検証ユニット１７は、最終的なメッセージ表現１６の検証を行う。この検証は、最終的なメッセージ表現内で暗号化形式にて入手可能な第２の暗号アルゴリズムの最後のステップの出力に基づいて行われる。ステップユニット５、１０、１５によって実装される第２の暗号アルゴリズムは、検証が所定の１組の第２のキーについて成功し、所定の１組の別の第２のキーについて失敗するように、検証ユニットと共同するように構成される。（検証が成功する）１組の有効なキーが１組のあり得る全てのキーに比べて少ない場合、有効なキーを推測することが攻撃者にとって困難である。より詳細には、システムで機能するキー表現４を推測することが困難である。検証は幾つかのやり方で行われ得る。従って、検証ユニット１７を実装するやり方について幾つかの異なる可能性がある。
【００３６】
第１の実施例では、検証ユニット１７が（矢印１９で示される）メッセージ表現３を受信し、メッセージ表現３と第２の暗号アルゴリズムの出力との比較を行う。この事例では、比較が適切な結果を有する場合、検証ユニット１７は、ことによると上記で説明された全単射によって暗号化される第１の暗号アルゴリズムの出力を処理済みメッセージ１８として送るように構成され得る。比較が適切な結果を有さない場合、検証ユニット１７はエラーメッセージを処理済みメッセージ１８として送るように構成され得る。このエラーメッセージは、例えばランダムビットで構成されても良く、又は所定の列を含み得る。この比較及び適切な出力（処理済みメッセージ１８）の生成は、例えばルックアップテーブル又はルックアップテーブルのネットワークとして実装され得る。ルックアップテーブルは、メッセージ表現３と最終的なメッセージ表現１６との組合せを対応する処理済みメッセージ１８にマップすることができる。
【００３７】
第２の実施例では、矢印２０によって示されているように、検証ユニット１７が第２のアルゴリズムの出力をメッセージユニット１に与える。メッセージユニット１は、検証ユニット１７から受信されるデータを次の入力データブロックと組み合わせるように構成され得る。この次の入力データブロックは、上記のようにシステムによって同じやり方で処理され得る。つまり、メッセージユニット１が次の入力データブロックを第２のアルゴリズムの出力と組み合わせた後、その組合せの結果がメッセージ表現３としてステップユニット５に与えられ、その後も同様に続く。それ自体が当技術分野で知られている暗号ブロック連鎖スキームに基づき、第２のアルゴリズムの出力を次のデータブロックにフィードバックする他の可能性が当業者に明らかになる。従って検証ユニット１７は、第１の暗号アルゴリズムの出力を第２の暗号アルゴリズムの出力と区別するように構成され得る。第１の暗号アルゴリズムの出力は、処理済みメッセージ１８として出力され得る。処理済みメッセージ１８は、上記のように全単射を使用して暗号化され得る。処理済みメッセージ１８は、検証に関係なく第１の暗号アルゴリズムの出力を含み得るが、第２の暗号アルゴリズムの出力が予期されるものではない場合、第２の暗号アルゴリズムの出力が次のデータブロックと組み合わせられることにより、次のデータブロックの暗号処理は失敗する。組み合わせるやり方の一実施例は、ＸＯＲ演算によって組み合わせることである。
【００３８】
ステップユニット５、１０、１５はルックアップテーブルによって実装され得る。例えば、それぞれのステップユニットは、ルックアップテーブル又はルックアップテーブルのネットワーク内の第２の暗号化表現を探索するためのルックアップユニットを含み、ルックアップテーブル又はルックアップテーブルのネットワークは、第１のメッセージ表現及びキー表現の組合せから対応する第２のメッセージ表現へのマッピングを含む。これらのルックアップテーブルは、その入力及び出力が例えばランダム全単射によって符号化（暗号化）され得る。ランダム全単射はルックアップ操作ごとに変わり得る。このようにして、キー表現及びメッセージ表現の両方がランダム全単射によって暗号化され得る。この手順はホワイトボックス実装と呼ばれる。操作のホワイトボックス実装は、Chowらによりそれ自体が知られている。
【００３９】
一実施例では、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップが同じ操作を含むが、第１の暗号アルゴリズムのステップの操作の少なくとも１つのパラメータが第２の暗号アルゴリズムのステップの対応するパラメータと異なる。例えば、両方のアルゴリズムの操作がS-boxを適用することであり得るが、両方のアルゴリズム内で使用されるS-boxの内容（パラメータ値である）は異なり得る。
【００４０】
上記の実施例の中で開示されたように、第１の暗号アルゴリズムは一連の第１のステップを含むことができ、第２の暗号アルゴリズムは対応する一連の第２のステップを含み得る。両方のアルゴリズムのステップは同一、同様とすることができ、或いは異なっても良い。例えば、第１のアルゴリズムはＸＯＲを適用するステップを含むことができ、第２のアルゴリズムはS-boxを適用するステップを含み得る。メッセージユニット７、１２は、メッセージ表現を自らのステップユニット１０、１５に与えるように構成され、メッセージ表現は、前のステップユニットから得られる、第１の暗号アルゴリズムの前のステップの結果及び第２の暗号アルゴリズムの前のステップの結果の暗号化表現である。例えば、ステップユニット５は、ステップユニット１０によって実行されるステップに対して前のステップを実行するステップユニットである。暗号アルゴリズムの連続したステップが複数のステップユニット５、１０、１５によって実行され得る。
【００４１】
上記の複数のシステムが提供され得る。例えば、これらのシステムは様々な利用者に分散され得る。システムのホワイトボックス符号化は異なっても同じでも良い。第１のシステムによって実装される第１の暗号アルゴリズムは、第２のシステムによって実装される第１の暗号アルゴリズムと同一である。しかし、第１のシステムの第２の暗号アルゴリズムは第２のシステムの第２の暗号アルゴリズムと異なり得る。第１のシステムの第２の暗号アルゴリズムは第２のシステムと僅かに異なるように作られ、そのため、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を与える複数の第２のキーが存在し、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を与える複数の第２のキーが存在する。
【００４２】
特定の実施例では、所定の１組の第２のキーについてのみ検証が成功するやり方で各分散システムの第２の暗号アルゴリズムが修正される。この所定の組はシステムごとに異なり得る。或いは利用者のグループに（同じ１組のキーで機能する）同じシステムが提供されても良く、他の利用者のグループにはそれぞれの異なるシステムが提供されても良く、それにより利用者の各グループは機能する１組の固有の第２のキーを有する。第２のキーのこれらの組は重複する場合がある。そのようにして、コンテンツ配布者はコンテンツへのアクセスを許可された１つ又は複数のグループで機能するキーを用いてコンテンツを暗号化することができる。
【００４３】
典型的には、暗号処理用システムは、システム装置内に記憶される適切なソフトウェアを実行するマイクロプロセッサ（別個に図示していない）を含み、例えばそのソフトウェアは対応するメモリ、例えばＲＡＭ等の揮発性メモリやフラッシュ等の不揮発性メモリ（別個に図示していない）内にダウンロードされており且つ／又は記憶されている可能性がある。メッセージユニット、キーユニット、ステップユニット、ルックアップユニット、及び検証ユニットの１つ又は複数がマイクロプロセッサ及びメモリ（別個に図示していない）を備えることもできる。
【００４４】
一実施形態では、このシステムがメッセージユニット回路、キーユニット回路、ステップユニット回路を含む。このシステムは追加の回路、例えばルックアップユニット回路や検証ユニット回路を含み得る。これらの回路は本明細書に記載の対応するユニットを実装する。これらの回路はプロセッサ回路及び記憶域回路とすることができ、プロセッサ回路は記憶域回路内で電子的に表わされる命令を実行する。
【００４５】
図２は、暗号処理方法を示す。ステップ２０１で、第１のメッセージ表現が与えられる。第１のメッセージ表現はメッセージの表現である。ステップ２０２で、キー表現が与えられる。キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる。ステップ２０３で、第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップが第１のメッセージ表現及びキー表現に基づいて実行される。第２のメッセージ表現は、第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である。この方法は例えばコンピュータプログラムによって実装され得る。
【００４６】
図３は、暗号処理用システムを提供する方法を示す。ステップ３０１で、配布者が第１のメッセージ表現を与えるためのユニットを利用者に提供する。第１のメッセージ表現はメッセージの表現である。ステップ３０２で、配布者がキー表現を与えるためのユニットを利用者に提供する。キー表現は、第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる。ステップ３０３で、第２のメッセージ表現を得るために、配布者が第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行するためのステップユニットを提供する。第２のメッセージ表現は、第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である。ステップ３０１、３０２、及び３０３は、図１に関して上記で説明されたシステムを提供することによって実現され得ることを指摘しておく。ステップ３０４で、配布者が第２のアルゴリズムの少なくとも一部を秘密にしておく。従って、潜在的な攻撃者は第２のアルゴリズムのキースケジュールが分からず、機能する代替キーを見つけるのをより困難にする。
【００４７】
この方法はステップ３０５で、暗号処理用の第２のシステムが提供されるべきかどうかを判定するステップを含み得る。提供されるべき場合、この方法はステップ３０１から続行してその第２のシステムを提供する。第１のシステムの第１の暗号アルゴリズムは、第２のシステムの第１の暗号アルゴリズムと同一である。第２のシステムが第１のシステムと同じキーを使用可能であるべき場合、第１のシステムの第２の暗号アルゴリズムは第２のシステムの第２の暗号アルゴリズムと同じであり得る。但し配布者は、第１のシステムの第２の暗号アルゴリズムが第２のシステムの第２の暗号アルゴリズムと異なる第２のシステムを提供することもできる。後者の場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する複数の第２のキーが存在し、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を有する複数の第２のキーが存在するように第２の暗号アルゴリズム及び検証ユニットが選択され又は設計される。更なるシステムが提供される必要がない場合、この方法はステップ３０６に進む。
【００４８】
この方法はステップ３０６で、両方のシステムがメッセージへのアクセスを許可されている場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する第２のキーを使用してメッセージを与え、第１のシステム又は第２のシステムの何れかがメッセージへのアクセスを許可されていない場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を有する第２のキーを使用してメッセージを与えるステップを更に含み得る。ステップ３０６は、メッセージと第１のキー及び使用される第２のキーを表すキー表現とを被提供システムに伝送するステップを更に含み得る。
【００４９】
ＡＥＳやＤＥＳ等の暗号が良く知られており、従ってそのキースケジュールも広く知られていることにより、悪意ある顧客が（それらの顧客を公式に対象とするキーを使用してパッケージを復号した後）自分が選んだ異なるキーでパッケージを再び暗号化することができ、そのパッケージが自分から生じたとさえ主張し得る問題が発生する。本開示は、特定のソフトウェア配布について機能するキーの数を制限するやり方について説明する。キーの数を制限することは、使用される暗号アルゴリズムの有効キー空間を減らすことなしに、機能する代替キーを悪意ある利用者が見つけるのを暗号的により困難にする。
【００５０】
ホワイトボックス暗号では、キーが暗号実装の不可欠な部分である１つ又は複数のルックアップテーブル内に拡張される。特定のキーを有する暗号アルゴリズムは、データの異なるランダム符号化を使用してルックアップテーブル内に拡張され得るので区別は可能である。しかし、悪意ある利用者によって行われるChowの列内の別の難読化は、ソフトウェア製造業者がソフトウェアを自らのものとして認識するのを既に困難にし得る。キー又はハッシングを用いて署名することは可能だがそれはソフトウェアの出所を必ずしも十分に保護せず、その理由はそのソフトウェアが開封及び再梱包され、異なる方法及びキーを使って署名されることをそれらの方法が可能にするからである。
【００５１】
本開示の一態様は、パターンを秘密にしておきながら、キー内の特定のパターンを有するキーだけが機能するやり方で暗号を操作することである。ローダは、例えば非標準のS-boxを用いて僅かに修正された暗号を含み、その修正された暗号は一致するキーについてのみ正しく復号する。例えば、ソフトウェアパッケージの製造業者は、機能するにはキーの最後の４ビットが０１０１であることを課すことができる。製造業者は、例えば１組の別の顧客にパターン１００１を使用することができるので、このメカニズムを使用して自らのオーディエンスを区別することさえできる。パターンが秘密のままである限り、このことは悪意ある利用者が有効な代替キーを生成するのを困難にする。しかし、この手続き（有効なキーのパターンを含む）が知られる場合、暗号のキー空間が事実上減らされる。一部の暗号ではその結果生じるキー空間が、全数探索が可能な程に小さくなり、そのため一度は標準化され最初にアプリケーションに組み込まれたセキュリティをもはや提供しない場合がある。
【００５２】
本開示によれば、知られている暗号が未知の暗号と暗号的に不可分に対にされ、それと同時に知られている暗号のキーを未知の暗号のキーで拡張し得る。これらの２つのキーは不可分に対にされても良く、それにより不可分に対にされたキーから個々のキーの値を抽出することができない。対にされる２つの暗号の組合せは、追加されるキーが特定の条件を満たす場合にのみ、その暗号機能（例えば不可分のキーの対に基づいて暗号文を復号すること）を実行するために使用され得るように作られる。追加される暗号は未知なのでそのキースケジュールも未知であり、従って攻撃者が正しい代替キーを推測することは暗号的に難しい。このようにしてパッケージ全体が暗号化され得る。このスキームをパッケージのインタフェースに組み込むことにより、一貫性がほぼ継続的に検査され得る。
【００５３】
これは、例えばセキュア仮想マシン（ＳＶＭ：secure virtual machine）テクノロジ及び区分的に等価の暗号を使用して実装され得る。まず後者について詳しく述べ、その後、これらの機能がＳＶＭ設定内でどのように適用され得るのかを示す。
【００５４】
本開示の全体を通して、「区分的に等価の暗号」は以下のように定義される。下位領域内の全てのキーについて暗号Ａ及び暗号Ｂが同一の出力を与え、この下位領域内にない全てのキーについて暗号Ａ及び暗号Ｂが異なる出力を与えるように暗号のあり得る全てのキー領域の下位領域がある場合、暗号Ａと暗号Ｂとは区分的に等価と呼ばれる。
【００５５】
つまり区分的に等価の暗号とは、キー空間の特定のサブセット上で等価の暗号である。暗号Ａのソフトウェア実装を第１のオーディエンスに配布し、暗号Ｂのソフトウェア実装を第２のオーディエンスに配布することにより、これらの暗号を適用して意図されるオーディエンスと通信することができる。メッセージが両方のオーディエンスに宛てられる場合、暗号が等価である下位領域内のキーが使用される。第１のオーディエンスだけ又は第２のオーディエンスだけがメッセージへのアクセスを許可されている場合、この下位領域外のキーが使用される。特定の実施例では、キー及びメッセージの両方をブロードキャストすることさえでき、意図されるオーディエンス、即ち正しい資格情報を有するオーディエンスだけがそれをキーによって復号することができる。このスキームはオーディエンス（顧客）、アップデートソフトウェア、キー、及び区分的に等価の暗号（取消し）を識別するために使用され得る。
【００５６】
キーｋを有する暗号Ｃを検討されたい。本開示の一態様によれば、Ｃ’が正しく機能する場合にのみＣが正しく機能するように、Ｃが別の暗号Ｃ’と混合される。より形式的には、暗号Ｃが別の暗号Ｃ’と混合される一方、それと同時にキーｋ’が特定の条件を満たすとき且つそのときに限り組合せＣ｜Ｃ’が暗号Ｃ単独と機能的に等価である（つまりＣ｜Ｃ’を使用して特定の暗号操作を行うことができる）ようにキーｋがキーｋ’によって拡張される。
【００５７】
特定の実施例では、任意のテキストＸについて次式が成立する。
等式１：
【数１】
0006423100.tif 000002
【００５８】
次に、１つ又は複数の暗号Ｃｉ（ｉ＝１，．．．，ｎであり、ｎは正の整数である）が設計されても良く、各ＣｉはＣ’に対して区分的に等価である。つまり、Ｃｉ＝Ｃ’が成立するキー空間のサブセットがある。このサブセットは暗号Ｃｉごとに異なるように選択されても良く、それにより（特定のｉ値の）特定の暗号Ｃｉでのみ機能するキーが生成され得る。配布者はこれらの暗号Ｃ｜Ｃｉ及びキーｋ｜ｋｉのソフトウェア実装を配布することができ、Ｃｉ（ｉ＝１，．．．，ｎである）はＣ’と区分的に等価であるように選択される。
【００５９】
暗号Ｃ’及びＣｉ（ｉ＝１，．．．，ｎである）は、等式１の「所与の条件」を満たす代替キー、例えばｋａ｜ｋａ’を推測することがｋ｜ｋｉからｋを推測するのと少なくとも同程度難しい特徴を、あり得るキーｋ｜ｋ’によって形成されるキー空間が有するやり方で設計することができる。本開示の一態様によれば、暗号及びキー空間のこの拡張により、元の暗号が影響を受けないこと又は何かを推測するのが容易になっていないことにも留意されたい。
【００６０】
以下、関数Ｃ｜Ｃ’のあり得る構成が示される。暗号Ｃを混同−拡散暗号と仮定する。適切な混同−拡散暗号の例は、これだけに限定されないがＤＥＳ、３ＤＥＳ、及びＡＥＳを含む。Ｃと構造的に等価だが幾らか修正されている構造的に等価の暗号Ｃ’を利用する。例えばＣ’は、ＣのS-boxの少なくとも１つにより混同を変えることによって作られ得る。
【００６１】
Ｃ｜Ｃ’ｋ｜ｋ’（Ｘ）をデカルト積、即ち＜Ｃｋ（Ｘ），Ｃ’ｋ’（Ｘ）＞だと仮定し、即ち出力サイズが２倍になる。出力＜Ｃｋ（Ｘ），Ｃ’ｋ’（Ｘ）＞は、Ｃ’ｋ’（Ｘ）の出力が予期されるものである（即ち特定の条件を満たす）とき且つそのときに限り、出力をＣｋ（Ｘ）に限定することによって減らされ得る。
【００６２】
この点に関して、条件の一例はＣ’ｋ’（Ｘ）＝Ｘであること、又はより広くはＣ’ｋ’（Ｘ）がＸの所定の関数だということである。或いは、Ｃ’ｋ’（Ｘ）が条件を満たすかどうかの検査は、例えばＣ’ｋ’（Ｘ）を暗号操作が加えられる次のデータブロックと組み合わせることによりＣ’ｋ’（Ｘ）の結果を使用する暗黙的検査とすることができる。かかる手順は、例えば暗号ブロック連鎖（ＣＢＣ：cipher-block-chaining）モードとして知られている。このようにして、Ｃ’ｋ’（Ｘ）の結果がナンスとして使用され得る。Ｃ’ｋ’（Ｘ）の結果は、それ自体が当技術分野で知られているやり方でセッションキーとして使用され得る。S-Boxの変更によりＣ’が「未知」の関数になったので、どの（サブ）キーについて条件が満たされているのかを推測することは攻撃者にとって困難である。
【００６３】
キー空間に対して区分的に等価の暗号を作成することは、キーのマテリアルを区分的に等価に操作する関数を設計することによって行われ得る。ＡＥＳ及びＤＥＳの両方で、キーのマテリアルを操作する関数の１つはｘｏｒであり、ｘｏｒに対する１つの引数はこの段落ではｋで示される（ラウンド）キーであり、他方の引数は処理されているデータ／メッセージに関する。この関数を
【数２】
0006423100.tif 000003
として言及することができる。暗号Ｃ’が操作
【数３】
0006423100.tif 000004
を含むと見なし、何らかのｉに関する区分的に等価の暗号Ｃｉが
【数４】
0006423100.tif 000005
に対する区分的に等価の関数を作成することによってＣ’から導出され得る。
【数５】
0006423100.tif 000006
に対する区分的に等価の関数の一実施例は次式の通りである。
【数６】
0006423100.tif 000007
【００６４】
これは一実施例に過ぎず、
【数７】
0006423100.tif 000008
（ｘ）は４を除くｋの全ての値について
【数８】
0006423100.tif 000009
に等しいことに留意されたい。単に１つの
【数９】
0006423100.tif 000010
で
【数１０】
0006423100.tif 000011
をラウンド内でＣｉを置換する場合、この新たな暗号Ｃｉは関連する（サブ）キーマテリアルがｋに等しい場合にのみＣ’と機能的に等価であることに留意されたい。キースケジュールは可逆的なので、暗号Ｃｉ及びＣ’が区分的に等価である全てのキーｋ’を当業者は明らかにすることができる。
【００６５】
セキュア仮想マシン（ＳＶＭ）の実装では、ＣとＣｉとの間の結び付きを単一のテーブル内に確立することにより、ＣとＣｉとの間の結び付きが完全に隠され得る。当技術分野で知られているように、このテーブルはその入出力の符号化を含み得る。例えばホワイトボックス技術が例えばChowらから知られていることを参照されたい。
【００６６】
この状況を実現するために、暗号Ｃｉの各ステップは暗号Ｃのステップと組み合わせられ得る。ステップの中間結果が符号化されても良く、つまり暗号Ｃのステップの入出力に関する情報が、暗号Ｃｉの対応するステップの入出力それぞれに関する情報と混合され得る。Ｃｉの出力に関する条件の検査もこの符号化領域内で実行されても良く、そのため攻撃者は条件が満たされていない場合Ｃの出力を容易に抽出することができない。ここではＣ’がＣｉと構造的に等しいことが役立つ。同様に、キーｋ及びｋ’が暗号化／符号化によって混合され、そのように混合することは推測している組み合わさったキーｋ｜ｋ’内のビットと構成キーｋ及びｋ’のビットとの間の関係が何なのか攻撃者の見当がつかないことを確実にする。ｋ及びｋ’を暗号化することにより、これらの値が攻撃者にとって非分離的になる。
【００６７】
今日のクレジットカード又は電話上の支払アプリケーションでは、平文で使用される検証キーがある。この検証キーが上記の拡張キーｋ｜ｋ’で置換される場合、クレジットカードの他の側面を複製することなしにキーを他のカード上で容易に使用することはできない。ホワイトボックスの技法と同様に、検証キーは全員にとって異なり得るが、本明細書で開示される解決策の少なくとも一部は使用される記憶空間の観点から、既存のホワイトボックス実装に比べて小さいフットプリントを有し得る。更に、本明細書で開示される解決策の少なくとも一部は、攻撃者に知られておらず且つ毎回異なるランダム機能を有する。
【００６８】
バイオメトリク照合のための有利な実施形態が以下の条項に記載されている。本願又は本願から導き出される任意の更なる出願の登録出願中、出願人はかかる条項、かかる条項の組合せ、及び／又は説明から理解される特徴に対して新たな請求項が考案され得ることを本明細書によって通知する。以下の条項の中で紹介される手段は、例えば本明細書に記載のそれぞれの対応するユニットとして実装され得る。
【００６９】
１．メッセージの表現である第１のメッセージ表現（３、６、１１）を与えるためのメッセージ手段（１、７、１２）と、
キー表現（４、９、１４）を与えるためのキー手段（２）であって、キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる、キー手段（２）と、
第２のメッセージ表現（６、１１、１６）を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現（３、６、１１）及びキー表現に基づいて実行するためのステップ手段（５、１０、１５）であって、第２のメッセージ表現は第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップ手段（５、１０、１５）と
を含む、暗号処理用システム。
【００７０】
２．ステップ手段（５、１０、１５）がルックアップテーブル又はルックアップテーブルのネットワーク内の第２の暗号化表現を探索するためのルックアップ手段を含み、ルックアップテーブル又はルックアップテーブルのネットワークは、第１のメッセージ表現及びキー表現の組合せから対応する第２のメッセージ表現へのマッピングを含む、条項１のシステム。
【００７１】
３．第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップが同じ操作を含み、第１の暗号アルゴリズムのステップの操作の少なくとも１つのパラメータが第２の暗号アルゴリズムのステップの対応するパラメータと異なる、条項１のシステム。
【００７２】
４．第１の暗号アルゴリズムは一連の第１のステップを含み、第２の暗号アルゴリズムは対応する一連の第２のステップを含み、メッセージ手段（７）は第１のメッセージ表現（６）を与えるように構成され、第１のメッセージ表現（６）は、第１の暗号アルゴリズムの前のステップ及び第２の暗号アルゴリズムの前のステップをメッセージ表現（３）及びキー表現（４）に基づいて実行するための更なるステップ手段（５）から得られる、第１の暗号アルゴリズムの前のステップの結果及び第２の暗号アルゴリズムの前のステップの結果の暗号化表現である、条項１のシステム。
【００７３】
５．第２の暗号アルゴリズムの結果に基づいてキー表現を検証するための検証手段（１７）を更に含む、条項１のシステム。
【００７４】
６．検証手段（１７）が第２の暗号アルゴリズムの出力を入力メッセージと比較するように構成される、条項５のシステム。
【００７５】
７．検証手段（１７）が第２の暗号アルゴリズムの出力を更なる第１のメッセージ表現（３）と暗号ブロックモードで組み合わせるように構成される、条項５のシステム。
【００７６】
８．ステップ手段（５、１０、１５）がホワイトボックス暗号実装の中に隠される、条項１のシステム。
【００７７】
９．第１のシステムの第１の暗号アルゴリズムは第２のシステムの第１の暗号アルゴリズムと同一であり、第１のシステムの第２の暗号アルゴリズムは第２のシステムの第２の暗号アルゴリズムと異なり、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する複数の第２のキーが存在し、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を与える複数の第２のキーが存在する、条項１によるシステムである第１のシステム及び第２のシステムからなる、２つのシステム。
【００７８】
１０．メッセージの表現である第１のメッセージ表現を与えるステップ（２０１）と、
キー表現を与えるステップ（２０２）であって、キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる、キー表現を与えるステップ（２０２）と、
第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行するステップ（２０３）であって、第２のメッセージ表現は第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である、実行するステップ（２０３）と
を含む、暗号処理方法。
【００７９】
１１．メッセージの表現である第１のメッセージ表現を与えるための手段を提供するステップ（３０１）と、
キー表現を与えるための手段を提供するステップ（３０２）であって、キー表現は第１の暗号アルゴリズムの第１のキー及び第２の暗号アルゴリズムの第２のキーの暗号化表現であり、第１の暗号アルゴリズムは第２の暗号アルゴリズムと異なる、キー表現を与えるための手段を提供するステップ（３０２）と、
第２のメッセージ表現を得るために、第１の暗号アルゴリズムのステップ及び第２の暗号アルゴリズムのステップを第１のメッセージ表現及びキー表現に基づいて実行するためのステップ手段を提供するステップ（３０３）であって、第２のメッセージ表現は第１の暗号アルゴリズムのステップの結果及び第２の暗号アルゴリズムのステップの結果の暗号化表現である、ステップ手段を提供するステップ（３０３）と、
第２のアルゴリズムの少なくとも一部を秘密にしておくステップ（３０４）と
を含む、暗号処理用システムを提供する方法。
【００８０】
１２．暗号処理用の第２のシステムを提供するステップを含み（３０５）、第１のシステムの第１の暗号アルゴリズムは第２のシステムの第１の暗号アルゴリズムと同一であり、第１のシステムの第２の暗号アルゴリズムは第２のシステムの第２の暗号アルゴリズムと異なり、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する複数の第２のキーが存在し、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を有する複数の第２のキーが存在する、条項１１の方法。
【００８１】
１３．両方のシステムがメッセージへのアクセスを許可されている場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが同じ結果を有する第２のキーを使用してメッセージを与え、第１のシステム又は第２のシステムの何れかがメッセージへのアクセスを許可されていない場合、第１のシステムの第２の暗号アルゴリズム及び第２のシステムの第２の暗号アルゴリズムが異なる結果を有する第２のキーを使用してメッセージを与えるステップ（３０６）を更に含む、条項１２の方法。
【００８２】
１４．条項１０の方法を処理システムに実行させるための命令を含む、コンピュータプログラム製品。
【００８３】
本発明はコンピュータプログラム、とりわけ本発明を実践するように適合される担体上の又は担体内のコンピュータプログラムにも当てはまることが理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及び部分的にコンパイルされた形式等にあるオブジェクトコード形式、又は本発明による方法を実施する際の使用に適した他の任意の形式を取ることができる。かかるプログラムは多くの異なる方式設計を有し得ることも理解されよう。例えば、本発明による方法又はシステムの機能を実装するプログラムコードは１つ又は複数のサブルーチンに細分され得る。これらのサブルーチンの間で機能を分散させる多くの異なる方法が当業者には明らかである。サブルーチンは、独立プログラムを形成するように１つの実行可能ファイル内に一緒に記憶され得る。そのような実行可能ファイルは、コンピュータ実行可能命令、例えばプロセッサ命令及び／又はインタプリタ命令（例えばJava（登録商標）インタプリタ命令）を含み得る。或いは、サブルーチンの１つ、複数、又は全てが少なくとも１つの外部ライブラリファイル内に記憶され、例えば実行時に主プログラムに静的に又は動的にリンクされても良い。主プログラムは、サブルーチンの少なくとも１つに対する少なくとも１つの呼出しを含む。サブルーチンは、互いへの呼出しを含むこともできる。コンピュータプログラム製品に関する一実施形態は、本明細書に記載した方法の少なくとも１つの各処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、且つ／又は静的に若しくは動的にリンクされ得る１つ又は複数のファイル内に記憶され得る。コンピュータプログラム製品に関する別の実施形態は、本明細書に記載したシステム及び／又は製品の少なくとも１つの各ユニットに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、且つ／又は静的に若しくは動的にリンクされ得る１つ又は複数のファイル内に記憶され得る。
【００８４】
コンピュータプログラムの担体は、プログラムを運ぶことができる任意のエンティティ又は装置とすることができる。例えば担体は、ＲＯＭ、例えばＣＤ  ＲＯＭや半導体ＲＯＭ、又は磁気記録媒体、例えばフラッシュドライブやハードディスク等の記憶媒体を含み得る。更に担体は、電気ケーブル若しくは光ケーブルにより、又は無線若しくは他の手段によって伝えられ得る電気信号や光信号等の伝送可能担体とすることができる。プログラムがかかる信号内に具体化される場合、担体はかかるケーブル又は他の装置若しくは手段によって構成され得る。或いは担体は、プログラムが埋め込まれる集積回路とすることができ、集積回路は関連する方法を実行するように適合され、又は関連する方法を実行する際に使用されるように適合される。
【００８５】
本発明の一態様は、コンピュータプログラムを含む書込み可能部分を有するコンピュータ可読媒体に関し、コンピュータプログラムは実施形態による暗号処理方法をプロセッサシステムに実行させるための命令を含む。コンピュータプログラムは、物理的な印として又はコンピュータ可読媒体を磁化することによってコンピュータ可読媒体上に実装され得る。但し、他の任意の適切な実施形態も考えられる。コンピュータ可読媒体は光ディスク、又はハードディスク、ソリッドステートメモリ、フラッシュメモリ等の任意の適切なコンピュータ可読媒体とすることができ、記録不能又は記録可能であり得る。コンピュータプログラムは、前述の方法を処理システムに実行させるための命令を含む。
【００８６】
一実施形態では、このシステム又はステップユニットがプロセッサシステムである。プロセッサシステムは１つ又は複数の集積回路を含む。例えば回路は、実施形態による方法を実行するために且つ／又はそのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するための処理ユニット、例えばＣＰＵと、プログラミングコードやデータ等を記憶するためのメモリとを含み得る。メモリの一部は読取専用であり得る。回路は通信素子、例えばアンテナ、コネクタ、その両方等を含み得る。回路は、方法の中で定められる処理の一部又は全てを実行するための専用集積回路を含み得る。プロセッサ、メモリ、任意選択的な専用ＩＣ及び通信素子は相互接続、例えばバスによって互いに接続され得る。プロセッサシステムは、アンテナ及び／又はコネクタのそれぞれを使用して接触通信及び／又は非接触通信用に構成され得る。
【００８７】
上記の実施形態は本発明を限定するのではなく例示し、当業者は添付の特許請求の範囲から逸脱することなく多くの代替的実施形態を設計できることに留意すべきである。特許請求の範囲では、括弧の間に配置される如何なる参照符号も請求項を限定するものとして解釈されるべきでない。動詞「含む」及びその活用形を使用することは、請求項の中で述べられるもの以外の要素又はステップがあることを排除しない。或る要素の前にくる冠詞「a」又は「an」は、その要素が複数存在することを排除しない。本発明は、幾つかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。幾つかのユニットを列挙する装置の請求項では、それらのユニットの幾つかがハードウェアの同一アイテムによって具体化され得る。或る手段が互いに異なる従属項の中で引用されるという単なる事実は、それらの手段の組合せが有利に使用されてはならないことを示すものではない。
【図１】
0006423100.tif 000012
【図２】
0006423100.tif 000013
【図３】
0006423100.tif 000014