(57)【要約】      （修正有）【課題】信頼されていないプラットフォーム上においても、アプリケーションが不正に実行されることがないようにする。【解決手段】ホスト１１０は、予め暗号化された命令Ｊを読み取り（Ｓ１０）、キーｋ１を使用し、Ｊ及びランダムｋ２を暗号化してＬを取得し（Ｓ１１）、これを回路１２０に転送する（Ｓ１２）。回路１２０は、ｋ１を使用し、Ｌを復号してＪおよびｋ２を取得し（Ｓ１３）、Ｊを復号してＩを取得する（Ｓ１４）。そしてＭ＝ｋ２でＩを暗号化し、これをホスト１１０に転送する（Ｓ１６）。ホスト１１０はｋ２を使用し、Ｍを復号し、Ｉを取得し（Ｓ１７）、Ｉを実行する（Ｓ１８）。【選択図】図１
2013175179.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションの協調実行に関与する第１の方法であって、前記ソフトウェアアプリケーションは、暗号化されていない命令の暗号化である少なくとも１つの暗号化された命令を備え、第１のデバイスで、
第１の暗号化された命令を取得するステップと、
セッションキーを生成するステップと、
対称暗号化アルゴリズムおよび第１のキーを使用し、前記セッションキーを暗号化するステップと、
前記第１の暗号化された命令および前記暗号化されたセッションキーを第２のデバイスに転送するステップと、
前記第２のデバイスから第２の暗号化された命令を受信するステップであって、前記第２の暗号化された命令は、前記セッションキーを使用する前記暗号化されていない命令の暗号化である、ステップと、
前記対称暗号化アルゴリズムおよび前記セッションキーを使用し、前記第２の暗号化された命令を復号して、前記暗号化されていない命令を取得するステップと、
前記暗号化されていない命令を実行するステップと、
を備える、前記方法。
【請求項２】
前記第１の暗号化された命令をスーパー暗号化するステップをさらに備え、前記第１の暗号化された命令は、スーパー暗号化されて前記第２のデバイスに転送される、請求項１に記載のソフトウェアアプリケーションの協調実行に関与する第１の方法。
【請求項３】
ソフトウェアアプリケーションの協調実行に関与する第２の方法であって、前記ソフトウェアアプリケーションは、少なくとも１つの暗号化された命令を備え、第２のデバイスで、
第１の暗号化された命令および暗号化されたセッションキーを第１のデバイスから受信するステップであって、前記セッションキーは、対称暗号化アルゴリズムおよび第１のキーを使用して暗号化される、ステップと、
前記第１のキーを使用して前記暗号化されたセッションキーを復号するステップと、
前記対称暗号化アルゴリズムおよび第３のキーを使用し、前記第１の暗号化された命令を復号して、命令を取得するステップと、
前記対称暗号化アルゴリズムおよび前記セッションキーを使用し、前記命令を暗号化して、第２の暗号化された命令を取得するステップと、
前記第２の暗号化された命令を前記第１のデバイスに転送するステップと、
を備える、前記方法。
【請求項４】
前記第１の暗号化された命令は、スーパー暗号化されて受信され、前記第２のデバイスは、前記暗号化された第１の暗号化された命令の前記スーパー暗号化をさらに復号する、請求項３に記載のソフトウェアアプリケーションの協調実行に関与する第２の方法。
【請求項５】
暗号化されていない命令の暗号化である少なくとも１つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行に関与する第１のデバイスであって、
第１の暗号化された命令を取得する手段と、
セッションキーを生成する手段と、
対称暗号化アルゴリズムおよび第１のキーを使用して前記セッションキーを暗号化する手段と、
前記第１の暗号化された命令および前記暗号化されたセッションキーを第２のデバイスに転送する手段と、
前記第２のデバイスから第２の暗号化された命令を受信する手段であって、前記第２の暗号化された命令は、前記セッションキーを使用する前記暗号化されていない命令の暗号化である、手段と、
前記対称暗号化アルゴリズムおよび前記セッションキーを使用し、前記第２の暗号化された命令を復号して、前記命令を取得する手段と、
前記命令を実行する手段と、
を備える、前記第１のデバイス。
【請求項６】
前記第１の暗号化された命令をスーパー暗号化する手段をさらに備え、前記第１の暗号化された命令は、前記第２のデバイスにスーパー暗号化されて転送される、請求項５に記載の第１のデバイス。
【請求項７】
少なくとも１つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行に関与する第２のデバイスであって、
第１の暗号化された命令および暗号化されたセッションキーを第１のデバイスから受信する手段であって、前記セッションキーは、対称暗号化アルゴリズムおよび第１のキーを使用して暗号化される、手段と、
前記第１のキーを使用して前記暗号化されたセッションキーを復号する手段と、
前記対称暗号化アルゴリズムおよび第３のキーを使用し、前記第１の暗号化された命令を復号して、命令を取得する手段と、
前記対称暗号化アルゴリズムおよび前記セッションキーを使用し、前記命令を暗号化して、第２の暗号化された命令を取得する手段と、
前記第２の暗号化された命令を前記第１のデバイスに転送する手段と、
を備える、前記第２のデバイス。
【請求項８】
スーパー暗号化された前記第１の暗号化された命令を受信する手段と、前記暗号化された第１の暗号化された命令のスーパー暗号化を復号して前記第１の暗号化された命令を取得する手段と、をさらに備える、請求項７に記載の第２のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して暗号化に関し、特に、協調処理のための安全なプロトコルに関する。
【背景技術】
【０００２】
本セクションは、以下に記載されるおよび／または請求される本発明の様々な態様に関連し得る当技術分野の様々な態様を読者に紹介するものである。本論は、本発明の様々な態様のより深い理解を促進するための背景情報を読者に提供するために役立つと考えられる。したがって、これらの記述は、この観点から読まれ、先行技術の承認として読まれるものではないことを理解されたい。
【０００３】
知られているセキュリティの問題は、ソフトウェアアプリケーションが、そのソフトウェアアプリケーションを記憶するオリジナルのサポートの保有なしには適切に実行できないことをいかにして確保するかである。
【０００４】
通常の先行技術の保護は、その配布に使用されるサポートにソフトウェアアプリケーションを結び付けることからなる。結び付けのメカニズムは、一般に、そのサポート（サポートＩＤ、サポートキーなど）に特有の何らかの情報に基づく。しかし、これは、特にそのアプリケーションが信頼されていないプラットフォーム上で実行されることを意図するときは十分でない。
【０００５】
したがって、何らかの共有データの協調処理中に第２のデバイスの存在を第１のデバイスがチェックできるようにするプロトコル、すなわち、たとえばアプリケーションを走らせるコンピュータが、そのアプリケーションの適切な実行に必要とされる一種のドングルの存在下にあることを確保するプロトコル、が必要であることが理解されよう。
【０００６】
国際公開第２００９／０９５４９３号パンフレットは、小さなデバイスの存在をチェックするための以下のプロトコルを説明する：
１．ソフトウェア製造会社は、アルゴリズム、および、そのソフトウェア製造会社のみに知られているキー、すなわちＪ＝Ｅｐｒｅ｛ｋｐｒｅ｝（Ｉ）、を使用し、ソフトウェアアプリケーションの少なくともいくつかの命令を事前に暗号化する。次いで、その暗号化されたソフトウェアアプリケーションが、その配布サポートにコピーされる。
【０００７】
２．対応する復号モジュールＥｐｒｅ−１およびキーｋｐｒｅは、その配布サポートに結合された回路に知られているが、そのソフトウェアアプリケーションには知られていない。したがって、命令Ｊ＝Ｅｐｒｅ｛ｋｐｒｅ｝（Ｉ）は、ホスト上で実行されるアプリケーションによって復号することはできず、そのままで実行されると、誤った不適切な動作をもたらす。これは、たとえば、コピーの場合である。
【０００８】
３．アプリケーションは、そのサポートにデータを送信し、それが保護された命令Ｊを実行する必要があるときには都度その回路を使用する。
【０００９】
このプロトコルは、興味深いが、辞書攻撃に依然として弱い。攻撃者が、ホストと配布サポートの間の通信バスをスパイすることができる場合、これは特に言えることである。
【００１０】
可能な代替は、標準公開キー暗号化メカニズムの使用である。たとえば、安全な認証されたチャネルが、ゲーム機と回路の間に構成可能であり、通信スパイを防ぐことになる。しかし、それは、公開キー暗号化アルゴリズムを安全且つ効率的に実装することを必要とするので、回路のコストを劇的に増やすことになる。具体的には、公開キー暗号化の使用は、ハードウェアのみを使用する実装を妨げる。
【００１１】
記載された２つの間にある解決法は、国際公開第２００５／０６４４３３号パンフレットにあり、そこでは、コンピュータは、ドングルの公開キーを使用して暗号化された静的データを検索し、その公開キーを使用して暗号化された乱数値を生成し、その暗号化された静的データおよび乱数値をドングルに送信する。ドングルは、そのプライベートキーを使用してこれらの項目を復号し、暗号化キーとしてその乱数値を使用して静的データを暗号化し、その再暗号化された静的データを、その静的データを復号および使用するコンピュータに返す。本解決法は、上手く機能するが、非対称暗号化を使用するだけではなく、各ドングル専用に静的データの暗号化も行うので、それは非常にリソースを消費することが理解されよう。
【００１２】
したがって、先行技術の欠点を克服することができる解決法が必要とされ得る。本発明は、そのような解決法を提供する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第２００９／０９５４９３号パンフレット
【特許文献２】国際公開第２００５／０６４４３３号パンフレット
【発明の概要】
【課題を解決するための手段】
【００１４】
第１の態様において、本発明は、暗号化されていない命令の暗号化である少なくとも１つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行に関与する第１の方法を対象とする。第１のデバイスは、第１の暗号化された命令を取得し、セッションキーを生成し、対称暗号化アルゴリズムおよび第１のキーを使用してそのセッションキーを暗号化し、第１の暗号化された命令およびその暗号化されたセッションキーを第２のデバイスに転送し、セッションキーを使用する暗号化されていない命令の暗号化である第２の暗号化された命令を第２のデバイスから受信し、その対称暗号化アルゴリズムおよびセッションキーを使用して第２の暗号化された命令を復号して、暗号化されていない命令を取得し、その暗号化されていない命令を実行する。
【００１５】
第１の好ましい実施形態では、第１のデバイスは、第２のデバイスへの転送の前に、第１の暗号化された命令をスーパー暗号化する。
【００１６】
第２の態様において、本発明は、少なくとも１つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行に関与する第２の方法を対象とする。第２のデバイスは、第１の暗号化された命令と、対称暗号化アルゴリズムおよび第１のキーを使用して暗号化されている暗号化されたセッションキーとを第１のデバイスから受信し、第１のキーを使用してその暗号化されたセッションキーを復号し、その対称暗号化アルゴリズムおよび第３のキーを使用して第１の暗号化された命令を復号して命令を取得し、その対称暗号化アルゴリズムおよびそのセッションキーを使用してその命令を暗号化して第２の暗号化された命令を取得し、第２の暗号化された命令を第１のデバイスに転送する。
【００１７】
第１の好ましい実施形態では、第１の暗号化された命令は、スーパー暗号化されて受信され、そして、第２のデバイスは、その暗号化された第１の暗号化された命令のスーパー暗号化をさらに復号する。
【００１８】
第３の態様において、本発明は、暗号化されていない命令の暗号化である少なくとも１つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行に関与するように構成された第１のデバイスを対象とする。第１のデバイスは、第１の暗号化された命令を取得するための手段と、セッションキーを生成するための手段と、対称暗号化アルゴリズムおよび第１のキーを使用してセッションキーを暗号化するための手段と、第１の暗号化された命令およびその暗号化されたセッションキーを第２のデバイスに転送するための手段と、セッションキーを使用する暗号化されていない命令の暗号化である第２の暗号化された命令を第２のデバイスから受信するための手段と、その対称暗号化アルゴリズムおよびそのセッションキーを使用して第２の暗号化された命令を復号して命令を取得するための手段と、その命令を実行するための手段とを備える。
【００１９】
第１の好ましい実施形態では、第１のデバイスは、第２のデバイスへの転送の前に第１の暗号化された命令をスーパー暗号化するための手段をさらに備える。
【００２０】
第４の態様において、本発明は、少なくとも１つの暗号化された命令を備えるソフトウェアアプリケーションの協調実行に関与するように構成された第２のデバイスを対象とする。本第２のデバイスは、セッションキーが対称暗号化アルゴリズムおよび第１のキーを使用して暗号化され、第１の暗号化された命令およびその暗号化されたセッションキーを第１のデバイスから受信するための手段と、第１のキーを使用し、暗号化されたセッションキーを復号するための手段と、対称暗号化アルゴリズムおよび第３のキーを使用し、第１の暗号化された命令を復号して、命令を取得するための手段と、その対称暗号化アルゴリズムおよびそのセッションキーを使用し、その命令を暗号化して、第２の暗号化された命令を取得するための手段と、その第２の暗号化された命令を第１のデバイスに転送するための手段とを備える。
【００２１】
第１の好ましい実施形態では、第２のデバイスは、スーパー暗号化された第１の暗号化された命令を受信するための手段と、その暗号化された第１の暗号化された命令のスーパー暗号化を復号して第１の暗号化された命令を取得するための手段とをさらに備える。
【図面の簡単な説明】
【００２２】
本発明の好ましい特徴は、添付の図面を参照し、非限定的な例を用いて説明される。
【図１】本発明によるソフトウェアアプリケーションを実行するための包括的方法を示す図である。
【図２】本発明の好ましい実施形態にしたがってソフトウェアアプリケーションを実行するための方法を示す図である。
【図３】本発明の好ましい実施形態によるソフトウェアアプリケーションの協調実行のためのシステムを示す図である。
【図４】本発明の好ましい実施形態によるプロセッサのブロック図である。
【図５】本発明の好ましい実施形態によるブロック暗号回路のブロック図である。
【発明を実施するための形態】
【００２３】
本発明の主要な考え方は、事前暗号化メカニズムに適合するライブ保護メカニズムを使用することである。
【００２４】
言い換えれば、保護メカニズムが、データ転送中にバスを保護するために使用される。ホストによって実行されるこのデータバス保護メカニズムは、非保護動作（やはりホストによって部分的に実行される）が、配布サポートに好ましくは結合された、回路の存在下でのみ機能するという方法で設計される。そのために、保護メカニズムの一部がホストと回路によって実装されたハードウェアモジュールとの間で共用される、すなわち、その回路はソフトウェアアプリケーションに知られていない復号方法を備える。提案される保護は、性能およびハードウェア／ソフトウェア実装に関して、実際に効率的である。
【００２５】
ホストＣＰＵによって実行されることを意図されたソフトウェアアプリケーションは、第１のバス暗号化モジュールＥ１および（好ましくは対称）キーｋ１と、第２のバス復号モジュールＤ２とを備える。本ソフトウェアアプリケーションはまた、それが実行され得る前に復号される必要がある少なくとも１つの暗号化された命令Ｊ（事前暗号化されたものも）を備える。ソフトウェアアプリケーションを記憶する配布サポートは、第１のバス復号モジュールＤ１、および、第１のバス暗号化モジュールのキー（すなわち、対称暗号化の場合には同一であり、非対称暗号化の場合にはキーのペアの「他方の」キー）に対応するキーｋ１と、第２のバス暗号化モジュールＥ２とを有する回路を備える。本回路は、第３の復号モジュールＤｐｒｅおよび固定の第３のキーｋｐｒｅを備え、これらは、事前暗号化の復号を可能にする。少なくとも１つの暗号化された命令Ｊは、第３のキーｋｐｒｅに対応する暗号化キーを使用してソフトウェアプロバイダによってそのソフトウェアアプリケーションの配布の前に暗号化されており、そのソフトウェアプロバイダは暗号化および復号の両方の能力を有し、一方、その回路は復号する能力のみをもつことが望ましいことが理解されよう。
【００２６】
キーｋ１は、好ましくは、その回路およびホストによって予め定められ、共用される。それは、好ましくは、ホストＣＰＵによって実行されることになるソフトウェアアプリケーション内で不明瞭化される。そのホストおよび回路は暗号化アルゴリズム−すなわち暗号化または復号−を１つの「方向」でのみ実行することができ、その「方向」はホストおよび回路によって異なることもまた好ましい。
【００２７】
図１は、本発明によるソフトウェアアプリケーションを実行するための包括的方法を示す。ソフトウェアアプリケーションが暗号化された命令Ｊを実行しようとするとき、ホストＣＰＵ１１０（そのソフトウェアアプリケーションを実行する）は：
ａ．暗号化された命令Ｊを読み取るＳ１０、
ｂ．第１のバス暗号化モジュールＥ１およびそのキーｋ１を使用してランダムｋ２およびその暗号化された命令Ｊの組合せを暗号化して、第１の転送値Ｌ、すなわちＬ＝Ｅ１｛ｋ１｝（Ｊ｜｜ｋ２）、を取得するＳ１１、
ｃ．第１の転送値Ｌを回路１２０に送信するＳ１２、
第１の転送値Ｌを受信したときに、回路１２０は：
ｄ．第１のバス復号モジュールＤ１およびそのキーｋ１を使用し、Ｌを復号して、ランダムｋ２およびその暗号化された命令Ｊを取得するＳ１３、
ｅ．第３の復号モジュールＤｐｒｅおよび第３のキーｋｐｒｅを使用し、Ｊを復号して、命令Ｉを取得するＳ１４、
ｆ．第２のバス暗号化モジュールＥ２およびそのランダムｋ２（キーとして機能する）を使用し、命令Ｉを暗号化して、第２の転送値Ｍ、すなわちＭ＝Ｅ２｛ｋ２｝（Ｉ）、を取得するＳ１５、そして、
ｇ．第２の転送値Ｍをホスト１１０に送信するＳ１６。
【００２８】
最後に、ソフトウェアアプリケーションは、ｋ２を知っており、バス復号モジュールＤ２をさらに備えるので、それは、Ｉ＝Ｄ２｛ｋ２｝（Ｍ）を計算することによって、プレーンテキストで命令Ｉを取得することＳ１７ができ、その後にホストは命令Ｉを実行するＳ１８ことができる。
【００２９】
以上のように、ランダムｋ２は、その暗号化された形態およびその再暗号化された形態の両方で、その命令のセッションキーとして機能すると言うことができる。本包括的方法は、その場合にはプレーンテキストで（好ましくは、暗号化されたランダムｋ２とともに）送信され、暗号化された命令Ｊのスーパー暗号化なしで実行することができ、同様にステップｄでの復号はランダムｋ２のみを提供することを意味することが、理解されよう。
【００３０】
本暗号化は、各反復で生成される新しいランダムに基づき、これはリプレイ攻撃が阻止されることを意味するので、本発明のプロトコルはセキュリティを有意に改善することができる。
【００３１】
ホストアプリケーション環境が信頼されないとき、ソフトウェアアプリケーションの第１の暗号化動作はホワイトボックスで実装されて、そのコードからのキーｋ１の抽出に対抗することが好ましい。また、ｋ２は、好ましくは、敵が妥当なコストでそれを検索することを防ぐ方法で保護される。例示的手段は、オンチップハードウェア乱数ジェネレータを使用して、ＣＰＵのために新しいキー値を生成し（電源投入時に）、それを不正使用防止（ｔａｍｐｅｒ−ｐｒｏｏｆ）キーレジスタで記憶することになろう。
【００３２】
ソフトウェアアプリケーションは、そのプロトコルが、たとえば複数の保護された命令を有することによって、そのソフトウェアアプリケーションの実行中に定期的に使用されるという方法で保護されることが好ましい。
【００３３】
ホストが外部回路を使用していないときには必ず、バス観測分析を困難にするために、ランダムなダミーアクセスを生成することもまた好ましい。
【００３４】
第１の好ましい実施形態
図２は、本発明によるソフトウェアアプリケーションを実行するための例示的方法を示す。本ソフトウェアアプリケーションは、たとえば、指定されたアドレスにまたはソフトウェアコードのデータセクション内に置かれた、少なくとも１つの暗号化されたソフトウェア命令を備える。ソフトウェアアプリケーションが暗号化された命令Ｊを実行しようとするとき、そのソフトウェアアプリケーションを実行するホストＣＰＵ１１０が、
ａ．ランダムｋ２を生成しＳ２０、
ｂ．ｋ２とＪの排他的論理和をとって、第１の転送値
【００３５】
【数１】
2013175179.tif 000003
【００３６】
を取得し、ステップＳ２１、
ｃ．第１のバス暗号化モジュールＥ１およびキーｋ１を使用し、そのランダムｋ２を暗号化して、第２の転送値、すなわちＬ２＝Ｅ１｛ｋ１｝（ｋ２）、を取得しＳ２２、
ｄ．第１の転送値、第２の転送値の対（Ｌ１、Ｌ２）を回路１２０に送信するＳ２３。
【００３７】
その対（Ｌ１、Ｌ２）を受信したとき、回路１２０は：
ｅ．第１のバス復号モジュールＤ１およびｋ１を使用してＬ２を復号して、ランダムｋ２を取得しＳ２４、
ｆ．
【００３８】
【数２】
2013175179.tif 000004
【００３９】
を計算しＳ２５、
ｇ．第３の復号モジュールＤｐｒｅおよび第３のキーｋｐｒｅを使用してＪを復号して、命令Ｉを取得しＳ２６、
ｈ．命令Ｉとｋ２の間の排他的論理和を計算して、第３の転送値Ｍ
【００４０】
【数３】
2013175179.tif 000005
【００４１】
を取得しＳ２７、そして、
ｉ．第３の転送値Ｍをホストに送信するＳ２８。
【００４２】
最後に、アプリケーションはｋ２を知っているので、それは、
【００４３】
【数４】
2013175179.tif 000006
【００４４】
を計算することによって、プレーンテキストで命令Ｉを取得することができＳ２９、その後に、ホストはその命令Ｉを実行することができるＳ３０。
【００４５】
一変形実施形態では、その暗号化された命令Ｊは、ホストから回路にプレーンテキストで送信され、これは、Ｌ１＝Ｊであり、ステップｂおよびｆは実行されないことを意味する。
【００４６】
図３は、本発明の好ましい実施形態によるソフトウェアアプリケーションの協調実行のためのシステムを示す。本システム２００は、ホスト２１０および補助デバイス２２０を備える。
【００４７】
ホスト２１０は、実際には、任意のタイプの処理デバイス、好ましくは、パーソナルコンピュータまたはゲームコンソールでもよい。ホスト２１０は、好ましくは、ＲＯＭ２１１、ＲＡＭ２１２、少なくとも１つのプロセッサ２１３、および、補助デバイス２２０とのインタラクションに適合されたインターフェース２１４を備える。ＲＯＭ２１１はネイティブソフトウェア２１１１を記憶し、一方、ＲＡＭ２１２は、ＡＥＳなどのブロック暗号２１５１およびいくつかの暗号化された命令２１５２のホワイトボックス実装を備えるソフトウェアアプリケーション２１５（有利には補助デバイス２２０からダウンロードされる）を記憶する。プロセッサ２１３は、ネイティブソフトウェア２１１１およびソフトウェアアプリケーション２１５を実行するように適合される。
【００４８】
補助デバイス２２０、有利にはＲＦＩＤ、は、ホスト２１０との通信のためのインターフェース２２１と、少なくとも前述の２つのキーｋ１およびｋｐｒｅへのアクセスを有するプロセッサ（「ブロック暗号回路」）２２２と、不揮発性メモリ２２３とを備える。補助デバイス２２０は、２つの異なるブロック暗号を、各キーに１つ、実装することもできることに留意されたい。ブロック暗号回路２２２は、インターフェース２２１および不揮発性メモリ２２３に機能的に接続される。
【００４９】
実行中、ソフトウェアアプリケーション２１５は、不揮発性メモリ２２３から、データを記憶、またはデータを検索することができる。
【００５０】
図４に示すように、ホストＣＰＵ２１３は、ソフトウェアを実行するためのコアＣＰＵ２１３１を備える。そのデータバス保護機能は、ランダムｋ２を生成するＣＰＵキャッシュ２１３２にロードされ、Ｅ１を使用してｋ２およびＪを暗号化し、その暗号をインターフェース２１４に送信する。本データバス復号機能は、ＣＰＵレジスタ２１３３にロードされ、ＣＰＵキャッシュ２１３２からのｋ２およびインターフェース２１４からの暗号化された命令
【００５１】
【数５】
2013175179.tif 000007
【００５２】
を受信し、次いで、それは、
【００５３】
【数６】
2013175179.tif 000008
【００５４】
を計算することによって、プレーンテキストで命令Ｉを取得し、その後、コアＣＰＵ２１３１が、命令Ｉを実行することができる。
【００５５】
ソフトウェアアプリケーションの配布の前に、少なくとも１つの命令が暗号化される。これは、好ましくは、同一キーの下で同一入力のための２つの異なる暗号化を有するために、確率的暗号化を使用することによって、達成される。
【００５６】
本ソフトウェアアプリケーションは、任意の適切な配布メカニズム（たとえば、インターネット、光媒体、または補助デバイス２２０内部）を使用して、ホスト２１０に配信され得る。ソフトウェアアプリケーションが、たとえばインターネットを介して、配布される場合、補助デバイス２２０は、そのソフトウェアアプリケーションが適切に動作するために、ユーザに何らかの形で引き渡されなければならない。
【００５７】
本ソフトウェアアプリケーションは、好ましくは、秘密キーｋ１を有するＡＥＳ復号モジュールのホワイトボックス実装を備える。本アプリケーションは、暗号化された命令のセットも含む。
【００５８】
第２の好ましい実施形態
本明細書において、命令は、暗号化された乱数値Ｅ（Ｒｉ）と各命令Ｉｉの排他的論理和をとる、すなわち、
【００５９】
【数７】
2013175179.tif 000009
【００６０】
によって、暗号化される。その暗号化された命令は、対応する乱数値とともに記憶され、暗号化された命令のセットを与える：
【００６１】
【数８】
2013175179.tif 000010
【００６２】
ホストプロトコルは、命令Ｉが６４ビット長であり、その乱数値Ｒｉ、ｋ２およびｋ３もまた６４ビット長であると仮定し、以下のように実装することができる。アルゴリズムＥ１およびＥｐｒｅは、ＥＣＢモードで実装された１２８ビットのＡＥＳ暗号化である。キーｋ１の下でのＥ１は、ホワイトボックス実装され、暗号化アルゴリズムＥ２（ならびに、復号アルゴリズムＤ２）は、２つの乱数値ｋ２およびｋ３を使用する排他的論理和演算として実装される。
【００６３】
【表１】
2013175179.tif 000011
【００６４】
対応する補助デバイスプロトコルは、以下のように実装される：
【００６５】
【表２】
2013175179.tif 000012
【００６６】
その変数は異なる名をもつが、プロトコル部は一致し、これは、たとえば、プロトコルがそれがすべきように機能するとき、ｋ２およびｋ’２が同一であることを反映するものであるが、これが当てはまるかどうかを知る方法が補助デバイスにはないことが理解されよう。（以下、図５についても同じことが言える。）
補助デバイスに関して、不揮発性メモリ２２３は、ホストによって容易に読み取ることができるが、ブロック暗号回路２２３は不正使用が防止されると仮定される。
【００６７】
図５は、本発明の第２の好ましい実施形態によるブロック暗号回路のブロック図である。
【００６８】
Ｍｅｎｅｚｅｓ、ｖａｎ  ＯｏｒｓｃｈｏｔおよびＶａｎｓｔｏｎｅによって説明されたＡＥＳ実装は、３５９５ゲートを有するチップである。１２８ビットの暗号化は、約１０００クロックサイクルを必要とする。２つの暗号化ステップが本プロトコルでは必要とされるので、与えられるラウンドは、そのデータを処理するために、約２０００クロックサイクルを必要とする。
【００６９】
したがって、本発明は、補助デバイスの存在を認証およびチェックするための軽量プロトコルを提供することが、理解されよう。
【００７０】
性能の観点からは、その利点は、以下を備える。
【００７１】
−  交換されるメッセージの数およびそれらの内容が最小限である。６４ビットの命令およびＡＥＳブロック暗号で、交換されるバイト数は３２バイト（Ｌ１＋Ｌ２＋Ｍ）である。
【００７２】
−  そのプロトコル内には２つのみのパスがある。そして、
−  計算の複雑性は、両側で低い：ホストについて１ブロック暗号化、および、補助デバイスについて２ブロック暗号化。
【００７３】
セキュリティの観点からは、
−  本プロトコルは、そのプロトコルキーおよびそのホワイトボックス実装がソフトウェアアプリケーション間で異なり得るという意味で、更新可能であり得る。
【００７４】
−  さらに重要なことには、本プロトコルは、データ転送中にバスをスパイする敵とともにリプレイおよび辞書攻撃に対抗することができるので、安全である。本プロトコルは、そうして、バス観測分析に対して免疫がある。
【００７５】
−  本プロトコルは、優れた価格／セキュリティのトレードオフを提供し、したがって、現在のアプリケーションを保護するために使用され得る。
【００７６】
本明細書に記載の暗号化された命令は、有利には、ＤＶＤまたはＣＤ−ＲＯＭなどの配布サポートから読み取られるが、それはまた、インターネット上のサーバなどの外部ソースから受信される信号から読み取ることもできる。さらに、本明細書で、暗号化される命令は、たとえば、「普通の暗号化（セッションキーｋ２を保護するために使用されるものなど）および不明瞭化（たとえば、オペコードの順列による）を含む、広い意味の表現式での暗号化を使用して暗号化され、そのキーは、どのようにしてその不明瞭化を取り消すかについての「命令」に相当する。
【００７７】
本明細書と（適当な場合には）本特許請求の範囲および図面で開示される各機能は、独立して、または任意の適切な組合せで、提供することができる。ハードウェアに実装されるものとして記載された機能は、ソフトウェアに実装することもでき、その逆もまた同様である。本特許請求に現れる参照符号は、単に例としてであり、本特許請求の範囲に限定的な効果を有さない。
【図１】
2013175179.tif 000013
【図２】
2013175179.tif 000014
【図３】
2013175179.tif 000015
【図４】
2013175179.tif 000016
【図５】
2013175179.tif 000017
【外国語明細書】
2013175179000001.pdf