(57)【特許請求の範囲】
【請求項１】
命令をランダム化してコンピュータセキュリティを高める方法であって、
処理回路上で起動する内部処理システム（ＩＰＳ）において命令を暗号化するステップであって、前記処理回路は、前記処理回路で起動している外部処理システム（ＯＰＳ）と、第１部分へのアクセスが制限されているメモリへの内部処理システム（ＩＰＳ）のアクセスと、前記ＩＰＳの帯域外であり前記ＩＰＳによりアクセスできない前記メモリの第２部分を少なくとも使用する前記ＯＰＳとを含むステップと、
前記ＩＰＳから、前記暗号化された命令を前記ＯＰＳへと送信するステップと、
前記ＯＰＳによって、受信した前記暗号化された命令を復号するステップであって、復号された命令は、前記ＩＰＳの帯域外であって、かつ、前記ＩＰＳによるアクセスが不可能であるステップと、
前記復号された命令を難読化して前記ＯＰＳの命令セットの予測可能性を低下させる２レベル文法を使用して、前記復号された命令を前記ＯＰＳの命令セットへと変換するステップと、
前記ＩＰＳではない仮想マシン（ＶＭ）で前記ＯＰＳの命令セットを実行するステップと、
を備え、
前記ＯＰＳの命令セットを実行する前記ＶＭは、前記メモリの前記第１部分に格納されているデータにアクセスして前記メモリの前記第２部分にはアクセスせず、前記ＩＰＳ内で命令を実行して前記ＩＰＳによって実現する結果と同じ結果を実現する、
方法。
【請求項２】
前記２レベル文法は、ワインハールデン文法である、請求項１に記載の方法。
【請求項３】
前記ワインハールデン文法に基づいて、前記ＶＭのためのメモリレジスタおよびポインタをランダムに生成するステップ
をさらに備える、請求項２に記載の方法。
【請求項４】
前記ＯＰＳによって、ＲＣ４、ＲＣ５、ＳＨＡ−１、およびＭＤ５アルゴリズムを備えるグループから選択された対称暗号化アルゴリズムに基づくセマンティック辞書暗号化を生成するステップ
をさらに備える、請求項１に記載の方法。
【請求項５】
前記ＯＰＳの命令セットを実行するステップにおける前記ＩＰＳではない前記ＶＭは、前記ＶＭの前記ＯＰＳに含まれ、前記ＩＰＳによって実行される前記暗号化は、非対称暗号化であり、
前記非対称暗号化は、ＲＳＡ暗号化および楕円曲線暗号（ＥＣＣ）暗号化のうちの１つである、
請求項１に記載の方法。
【請求項６】
前記ＯＰＳによって、前記実行された命令を別の仮想マシンへと送信するステップ
をさらに備え、
前記別の仮想マシンは、仮想マシンの階層における前記ＶＭの直後の仮想マシンであり、
前記仮想マシンの階層における各々の仮想マシンは、固有の２レベル文法を使用して変換された復号された命令の一部を提供される、
請求項１に記載の方法。
【請求項７】
前記仮想マシンの階層に含まれる仮想マシンの総数が、アプリケーションの実行中にランダムに選択される、請求項６に記載の方法。
【請求項８】
前記仮想マシンの階層に含まれるべきランダムな数の追加の仮想マシンを生成するステップ
をさらに備え、
前記追加の仮想マシンの数は、一様なランダム分布に基づいて生成される、請求項７に記載の方法。
【請求項９】
コンピュータによって実行されたときに命令をランダム化してコンピュータセキュリティを高める方法を該コンピュータに実行させるプログラムを記憶した非一時的なコンピュータ可読媒体であって、
前記方法は、
内部処理システム（ＩＰＳ）においてメモリの第１部分にのみアクセスする命令を暗号化するステップと、
前記ＩＰＳから、前記暗号化された命令を、前記ＩＰＳの帯域外であり前記ＩＰＳによりアクセスできない前記メモリの第２部分を少なくとも使用する外部処理システム（ＯＰＳ）へと送信するステップと、
前記ＯＰＳによって、受信した前記暗号化された命令を復号するステップであって、復号された命令は、前記ＩＰＳの帯域外であり前記ＩＰＳによるアクセスが不可能であるステップと、
前記復号された命令を難読化して前記ＯＰＳの命令セットの予測可能性を低下させる２レベル文法を使用して、前記復号された命令を前記ＯＰＳの命令セットへと変換するステップと、
前記ＩＰＳではない仮想マシン（ＶＭ）で前記ＯＰＳの命令セットを実行するステップと、
を備え、
前記ＯＰＳの命令セットを実行する前記ＶＭは、前記メモリの前記第１部分に格納されているデータにアクセスして前記メモリの前記第２部分にはアクセスせず、前記ＩＰＳ内で命令を実行して前記ＩＰＳによって実現する結果と同じ効果を実現する、
方法である、非一時的なコンピュータ可読媒体。
【請求項１０】
命令をランダム化してコンピュータセキュリティを高める装置であって、
内部処理システム（ＩＰＳ）がアクセス可能である第１部分と、
外部処理システム（ＯＰＳ）により使用され、前記ＩＰＳの帯域外であり前記ＩＰＳによりアクセス不可能である第２部分と、
を含む、メモリと、
前記ＩＰＳおよび前記ＯＰＳを実行する回路であり、
前記ＩＰＳにおいて命令を暗号化し、
前記ＩＰＳから、前記暗号化された命令を前記ＯＰＳへと送信し、
前記ＯＰＳによって、受信した前記暗号化された命令を復号し、この復号された命令は、前記ＩＰＳの帯域外であって、かつ、前記ＩＰＳによるアクセスが不可能であり、
前記復号された命令を難読化して前記ＯＰＳの命令セットの予測可能性を低下させる２レベル文法を使用して、前記復号された命令を前記ＯＰＳの命令セットへと変換し、
前記ＩＰＳではない仮想マシン（ＶＭ）で前記ＯＰＳの命令セットを実行する、
回路と、
を備え、
前記ＯＰＳの命令セットを実行する前記ＶＭは、前記メモリの前記第１部分に格納されているデータにアクセスして前記メモリの前記第２部分にはアクセスせず、前記ＩＰＳ内で命令を実行して前記ＩＰＳによって実現する結果と同じ結果を実現する、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願との相互参照
本出願は、２０１４年１２月１６日に出願された米国特許仮出願第６２／０９２，５７０号に基づくとともに、この米国特許仮出願の優先権の利益を主張し、この米国特許仮出願の全内容が、参照によって本明細書に組み込まれる。
【０００２】
本明細書に記載される実施形態は、広くには、コンピューティングシステムの命令セット、メモリレジスタ、およびポインタをランダム化するためのフレームワークに関する。
【背景技術】
【０００３】
本明細書において提示される背景の説明は、本開示の文脈を大まかに提示することを目的とするものである。現時点の記名発明者の研究のうち、この背景技術の項に記載される範囲の研究、ならびに本明細書の態様のうち、出願の時点における先行技術に該当し得ない態様は、明示的にも、黙示的にも、本開示に対する先行技術として同意されるものではない。
【０００４】
大多数のコンピューティングシステムにおいて使用される命令セット、メモリレジスタ、およびポインタは、かなり標準化されている。標準化されたマシン命令セットは、ソフトウェアとハードウェアとの間の一貫したインタフェースを提供するが、両刃の剣でもある。ハードウェアとソフトウェアとの独立した開発を可能にすることで、大きな生産性向上がもたらされるが、周知の命令セットが至る所に存在することで、ソフトウェアの悪用可能な欠陥を狙って設計された単一の攻撃によって、数千または数百万のシステムを支配することも可能になる。したがって、標準化された命令セットを有することは、知的財産の窃盗、コンピュータの不当な利用、ハッキング、などを容易にする。
【０００５】
アドレス空間レイアウトのランダム化（ＡＳＬＲ）が、システム実行可能ファイルのメモリへのロードの場所をランダム化することによってバッファオーバーフロー攻撃に備えるオペレーティングシステム（ＯＳ）のメモリ保護プロセスである。ＡＳＬＲは、ライブラリコード内の命令アドレスをランダム化するために実行され、ライブラリインジェクションコード攻撃を阻止するオントロジエンコーディングの一形態であるが、ＡＳＬＲは、バイナリコードの静的命令アドレスに基づくクラウドアプリケーションが直面する課題に対処していない。
【発明の概要】
【課題を解決するための手段】
【０００６】
したがって、上述の技術的欠点に対処し、コードをサイドチャネルによって復号または攻撃することができないようなソフトウェア保護をさらに提供する技術が、必要とされる。
【０００７】
コンピュータシステムは、使用されるチップセットにかかわらず、標準化された命令セットを利用し、程度の差こそあれ、メモリレジスタおよびポインタについても同様である。このような業界標準は、ソフトウェア開発の促進に役立つ。本開示の一態様は、命令セット、メモリレジスタ、およびポインタのランダム化を提供することにより、リバースエンジニアリング、サイドチャネルインターセプトおよび解析、ならびにデータ解析の他の方法に対するセキュリティを提供する。本開示の一態様は、ソフトウェア開発においても、チップセットの設計または製造においても変更を必要とせずに、命令セット、メモリレジスタ、およびポインタのランダム化を提供する。したがって、本明細書において説明されるセキュリティ技術は、ランダム化およびキーインデックス管理の両方における技術的限界を克服する。
【０００８】
本開示の一態様は、ソフトウェアコードをサイドチャネルによって復号または攻撃することが不可能であるようにソフトウェアを保護するための方法および装置を提供する。さらに、一実施形態によれば、本開示は、標準化された命令セット、メモリレジスタ、およびポインタに関連する制限を、それらのそれぞれの生成にランダム性の概念を導入することによって克服する。さらに、本開示は、典型的な実行時の呼び出しごとに行われる復号に対する改善を提供し、そこでは、典型的には、コードの本体が、とりわけ全オントロジカル暗号化（ＦＯＥ）、人工知能、機械学習、準自律エージェントのネットワーク、自己修正命令ランダム化コード（ＳＭＩＲＣ）、およびセマンティック辞書暗号化（ＳＤＥ）の分野における新たな発見を利用する点で、暗号化されたままである。
【０００９】
以上の段落は、全体的な紹介として提示されており、以下の特許請求の範囲を限定しようとするものではない。記載される実施形態は、さらなる利点とともに、以下の詳細な説明を添付の図面と併せて参照することによって、最もよく理解されるであろう。
【００１０】
本開示および本開示に付随する多数の利点のより完全な理解が、本開示が以下の詳細な説明を参照し、添付の図面と併せて検討することによってよりよく理解されるときに、容易に得られるであろう。
【図面の簡単な説明】
【００１１】
【図１】プロセスの典型的な階層を一実施形態に従って示している。
【図２】プロセッサによって実行されるランダム化を表す例を示している。
【図３】本発明によるフレームワークの一実施形態を示している。
【図４】本発明によるプロセスの一実施形態を示している。
【図５】一実施形態によるコンピューティングデバイスのブロック図を示している。
【発明を実施するための形態】
【００１２】
ここで図面を参照すると、類似の参照番号は、いくつかの図面を通して、同一または対応する部分を示している。したがって、上述の検討は、あくまでも本開示の典型的な実施形態の開示および説明にすぎない。当業者であれば理解できるとおり、本開示は、本開示の精神または本質的な特徴から逸脱することなく、他の具体的形態で具現化可能である。したがって、本開示は、例示であることが意図されているが、本発明の範囲および他の請求項を限定するものではない。本明細書における教示の容易に認識可能な変種を含む本開示は、本発明の主題が公衆に捧げられることがないように、上述の特許請求の範囲の用語の範囲を一部分において定義する。
【００１３】
図１を参照すると、典型的な連動するプロセッサの組を示している。一実施形態によれば、アプリケーションプログラムを、本明細書においてサブルーチンまたはタスクと称される種々のジョブに分割することができる。各々のタスクを、マスタプロセッサによって従属プロセッサへと分配することができる。その後に、従属プロセッサは、自身がマスタプロセッサになることを選択でき、自身に割り当てられたタスクを種々のサブタスクへとさらに分割し、各々のサブタスクを自身の従属プロセッサに割り当てることができる。したがって、このやり方で、プログラムを、多数の異なるタスクへと分割でき、各々のタスクを従属プロセッサに割り当てることができる。各々の従属プロセッサは、その従属プロセッサによってタスクが割り当てられるプロセッサにとってマスタプロセッサであることを、理解すべきである。したがって、プログラムの実行を、図１に示されるとおりのプロセッサの階層によって実行されると考えることができる。
【００１４】
文法が、実装されている文法の種類に依存する一連の規則に基づくセンテンス構造を説明するために使用される。例えば、文脈自由文法（ＣＦＧ：Context-free Grammar）は、文字列のパターンを生成するために使用される再帰的書き換え規則（または、プロダクション）の集合である。ＣＦＧは、以下のコンポーネントを含み、すなわち文法によって生成された文字列に現れるアルファベットの文字である終端記号の組と、非終端記号によって生成され得る終端記号のパターンのためのプレースホルダである非終端記号の組と、文字列の非終端記号（プロダクションの左側）を他の非終端記号または終端記号（プロダクションの右側）で置き換える（または、書き換える）ための規則である一連のプロダクションの組と、文法によって生成された最初の文字列に現れる特殊な非終端記号である開始記号とを含む。
【００１５】
本開示の一実施形態によれば、マスタプロセッサは、アプリケーションプログラムを実行するプロセッサの階層を生成する。具体的には、すでに述べたように、マスタプロセッサは、乱数のサブプロセスを生成する。次いで、各々のサブプロセッサは、マスタプロセッサとして振る舞い、自身のサブプロセスを生成することができる。各々のサブプロセッサには、そのマスタプロセッサによって、固有のランダム命令セット、メモリレジスタ、およびポインタが割り当てられる。一実施形態によれば、各々のサブプロセッサのためのランダム化された命令セット、メモリレジスタ、およびポインタを決定するために、文法を使用することができる。そのようにする際に、本開示は、プログラムの潜在的な悪用の脅威に対するセキュリティ機構を提供する好都合な能力をもたらす。
【００１６】
したがって、プログラムの脆弱性を悪用すべく行われる悪意のあるソフトウェアプログラムまたはリバースエンジニアリング技術による企ては、防止される。具体的には、プログラムを実行するために使用されるプロセッサの数がランダムであり、各々のプロセッサへと割り当てられる命令セットがランダムなやり方で（文法に基づいて）決定されるがゆえに、現在および将来のリバースエンジニアリングプログラムが、命令セットの変換テーブルあるいはポインタおよびメモリレジスタの位置を取得する機構を持たない。
【００１７】
さらに、セキュリティの追加層として、アプリケーションが起動されるたびに、新しい変換テーブルが上位層のプロセッサによって提供され、プロセッサにおいて実行中の種々のアプリケーションが標準化された命令セット、メモリレジスタ、またはポインタに固執しないため、プロセッサを危うくする企ては成功しない。このように、一実施形態によれば、使用されるプロセッサの数がランダムであり、したがって、リバースエンジニアまたは悪意のあるソフトウェアは、各々のプロセッサの脱獄を何回企てなければならないかを知り得ず、プロセッサの脱獄の企ては、監視プロセッサによるサブプロセッサのシャットダウンおよび完全に新しいランダム化された命令セット、メモリレジスタ、およびポインタでの再ブートを生じさせる。
【００１８】
本開示の一実施形態によれば、各々のサブプロセッサに割り当てられるランダム命令セット、メモリレジスタ、およびポインタを生成するために、Ｖａｎ  Ｗｉｊｎｇａａｒｄｅｎ（ＶＷ）文法が使用される。ＶＷ文法を、２つの文脈自由文法の合成として視覚化することができる（すなわち、ＶＷは２レベル文法である）。第１の文脈自由文法は、第２の文脈自由文法のための非終端として機能する終端記号の組を生成するために使用される。
【００１９】
オントロジ暗号化は、データの特定の要素についてそれらの要素の内容を露わにすることなく操作を実行することができるようなやり方で、データの内容を見えなくする暗号システムである。準同型暗号化（homomorphic encryption）技術は、データ群の構造を維持するデータマップとして定義することができ、すなわち単一の文法に関してデータをシフトさせる準同型写像（homomorphism）に頼る。対照的に、オントロジ暗号化は、複数の文法に関してデータをシフトさせる点で相違する。具体的には、本開示の一実施形態によれば、データを、単一の文法、２層文法（ＶＷ文法）、および／またはＮ個の文法のうちのＭ個においてシフトさせることができる。Ｎ個の文法のうちのＭ個は、並列、直列、またはカスケードであってよい。したがって、オントロジ暗号化を、多数の方法を使用することによって行うことができ、本開示の実施形態は、オントロジ暗号化のすべての形態を取り入れ、利用することができる。
【００２０】
図１は、プロセッサ１００の階層を説明する例（ただし、これに限られるわけではない）を示している。図１に示されるとおり、アプリケーションプログラム１０１は、プロセッサの３つのレベルからなる階層において実行される。階層の一連のプロセッサ１００は、サブプロセッサ１２１、１２２、および１２３を制御するマスタプロセッサ１１０を含む。各々のプロセッサには、リバースエンジニアリングを企て、理解を試み、あるいは許可されていない手順をプロセッサに実行させ、もしくは自身の選んだやり方で自身を助けるようにプロセッサを動作させることを企てる敵（ａｄｖｅｒｓａｒｙ）からデータ、命令セット、メモリポインタ、およびレジスタを守ることを可能にするランダム化された命令セット、メモリポインタ、およびレジスタが割り当てられる。
【００２１】
図１に示すように、マスタプロセッサ１１０は、ランダム化された命令セット、メモリレジスタ、およびポインタを第１のサブプロセッサ１２１へと割り当てる変換テーブル１４１（命令セットの変換テーブル）を生成するためのマスタランダム化プロセス１３１（すなわち、文法の生成）を実行する。同様のやり方で、サブプロセッサ１２１は、自身がマスタプロセッサとして動作し、マスタプロセッサ１１０によって割り当てられたタスクの一部またはすべてを第２のサブプロセッサ１２２に割り当てることができる。そのようにする際に、サブプロセッサ１２１も、第２のサブプロセッサ１２２用の変換テーブル１４２を生成するために、（サブランダム化プロセス１３２を実行することによって）ランダム化された命令セット、メモリレジスタ、およびポインタを割り当てる。
【００２２】
さらに、第２のサブプロセッサ１２２は、第３の変換テーブル１４３によって、ランダム化された命令セット、メモリレジスタ、およびポインタを第３のサブプロセッサ１２３に割り当てるために、サブランダム化プロセス（すなわち、ＶＷ文法に基づく文法の生成）を実行する。さらに、図１に描かれた図は、サブプロセッサの生成の３つのレベル（反復）しか含んでいないが、本明細書に記載の技術が、任意の数の階層プロセッサに適用可能であることを、理解すべきである。
【００２３】
図１においては、各々のサブプロセッサに、そのサブプロセッサを制御するそれぞれの管理プロセッサによって、ランダム化された命令セット、メモリレジスタ、およびポインタが提供される。例えば、サブプロセッサについて、加算Ｘ＋Ｙを要求する代わりに、Ｚ  ｍｏｄ  ＸをＡ  ｍｏｄ  Ｙと合計するタスクが考えられる。真のアルゴリズムを知り、（サブプロセッサによる）解答がもたらされたときにアルゴリズム（変換）を適用して正しい解を導き出すことが、制御プロセッサ（すなわち、サブプロセッサの管理プロセッサ／マスタプロセッサ）のタスクである。したがって、このやり方で、各々のプロセッサは、プログラムの一部分だけを処理し、プログラムのそれらの部分の各々は、いくつかの難読化ステップを経ていると考えられる。さらに、一実施形態によれば、プログラムの対応する部分が実行されるたびに、その部分は、別の仮想マシン内の異なるプロセッサ上で実行されてもよい。具体的には、特定のプログラムの実行に使用されるプロセッサの数の決定におけるランダム性ゆえに、プログラムの各部分は、アプリケーションの実行の反復の各々において、異なるプロセッサ上で実行され得る。
【００２４】
このやり方で、敵は、特定の瞬間において処理されている正確なデータを知らなければならず、完全なプログラムがどこにあるのかも突き止めなければならない。さらに、敵は、暗号化されていないデータがどこに存在するか（命令セット、メモリポインタ、またはレジスタ）を知らず、あるいは自身がその瞬間において調べている難読化の層すら知らず、もしくはどの層においてマスタプロセッサがマスタ変換テーブルを生成し、マスタプロセッサの直下の制御下のプロセッサのためのキー管理およびランダム化の方法を保存しているのかも、知らないと考えられる。
【００２５】
さらに、各々のプロセッサが、その一時的な制御のもとでサブプロセッサを動作させるとき、プロセッサは、制御されたプロセスにランダム化を注入し、そのプロセッサについて生成されたマスタインデックスを保持する。したがって、プログラムの全体が、より完全に保護される。マスタプロセッサによって制御されるサブプロセッサ自身も、自身の下方のさらに別のサブプロセッサを制御し、それらのサブプロセッサのマスタプロセッサとして動作する。このように、プログラムは、ランダムなやり方で膨張および収縮し、各々の膨張は、新たに指定されるマスタ制御プロセッサに割り当てられる。このようにして、プログラムは状態を維持するが、コンピュータシステム内のその位置は、それ自身によってのみ知られており、その各部分は、プログラムが再び後退し、再公式化し、新たなマスタコントローラプロセッサを割り当て、膨張サイクルを繰り返すためだけにコンピュータシステムの全体に膨張するとき、保護されたスタブ状態にて含まれる。
【００２６】
プロセッサの数のランダム化の実行、ならびに命令セット、メモリレジスタ、およびポインタのランダム化においてもたらされる好都合な能力は、悪意のあるソフトウェアまたはリバースエンジニアが、特定の瞬間において実行されているコマンドが例えば２＋２であると決定することしかできない点にある。敵は、このコマンドを認識しても、数字の２が暗号化およびランダム化された数であるかどうかを知らず、加算の命令が実際に真の命令であるかどうかを知らず、コンピュータシステムのどのプロセッサが現在のマスタ制御部、サブプロセッサ、などであるかを知らないと考えられる。最後に、敵は、この命令セットが特定の瞬間において実行されている理由を知らないと考えられる。敵は、コンピュータシステムの各プロセッサを襲い、分析を企てるとき、プロセッサの数自体がランダムに選ばれているがゆえに、コンピュータシステムに実際に存在するプロセッサの数を依然として知らないと考えられる。さらに、一実施形態によれば、有効な処理であるように見えるが、プログラムによって無視されるノイズを生成するために、ランダムな数の追加のプロセッサが導入される。
【００２７】
さらに、悪意のあるソフトウェアまたはリバースエンジニアは、マスタプロセッサによって変換されているがゆえに、コマンド２＋２が何を指しているのかを知らないと考えられる。さらに、それは、次回のコマンド実行時には、実行のサイクルのたびに（特定のサブプロセッサの）マスタプロセッサが命令セットをランダム化するため、５／６として現れるかもしれない。
【００２８】
本明細書に記載の実施形態が、単一のコンピュータシステムに限定されず、分散ストレージを有するネットワークコンピュータシステムおよび処理コンピュータシステムなどにも適用可能であることを、理解されたい。さらに、上述の実施形態は、「クラウドネットワーク」と呼ばれる分散処理およびストレージシステムにも等しく適用可能である。
【００２９】
さらに、分散処理およびストレージシステムを利用するか否かにかかわらず、上述の実施形態のプロセスは、依然として適用可能であり、すなわちランダムな数のプロセッサがマスタプロセッサによって選択され、タスクに必要なプロセッサの一時的な集団へと割り当てられる。このようなＮ個のうちのＭ個という構造（すなわち、各々がランダムな数の処理サイクルを有するランダムな数のプロセッサ）は、敵がプロセスおよびデータを完全に分析するために調べなければならないプロセッサの数を知ることができないよう、プロセスおよびデータをさらに難読化する。マスタプロセッサは、各層１プロセッサにタスクを割り当て、その層の下に追加の層を作成し、サブマスタプロセッサとして動作させることができる。このようなプロセスは、プロセッサの集団が新しいマスタプロセッサおよび新しい層で自らを再構成するように指示されるまで続く。
【００３０】
ここで図２を見ると、上記の実施形態で説明したランダム化プロセスを示す例（ただし、これに限られるわけではない）が示されている。図２は、プロセッサ／仮想マシン２２０に接続されたプログラムローダ２１０のインスタンスおよびコンピュータ・オブジェクト・コードに対応するバイトコードファイル２３０を示している。本開示のランダム化プロセスによってバイトコードファイル２３０に対して実行される処理が、２４０に示されている。
【００３１】
ローダ２１０は、オフラインのストレージ（ハードディスクなど）における所与のプログラム（アプリケーションであってよく、場合によってはコンピュータ自体のオペレーティングシステムの一部であってよい）の位置を特定し、実行のために主記憶装置（例えば、パーソナルコンピュータ内のランダムアクセスメモリ）へとロードするコンポーネントである。
【００３２】
さらに、バイトコードファイル２３０は、プログラム（例えば、仮想マシン）によって処理されるコンピュータ・オブジェクト・コードを含む。図２に示されるように、バイトコードファイルは、ヘッダおよび命令のための一連のインデックス２５０を含む。本開示の一実施形態によれば、各々のインデックス（命令に対応する）について、特別なキー２６０（すなわち、オペコード）がランダムなやり方で生成される。命令について生成されるオペコードが、実行すべき動作を指定することに留意されたい。したがって、命令セットについてオペコードをランダムに生成することによって、本開示は、悪意のあるソフトウェアまたはリバースエンジニアによるアプリケーションの正確な実行の追跡を防止する。換言すれば、バイトコードファイルが（実行時にランダムなやり方で）暗号化され、ファイルが復号されるときにランタイム処理が再構成される。
【００３３】
本開示の一実施形態によれば、各々のプロセッサがランダム化プロセスにおいて遂行するステップは、以下のとおりであり、すなわち１）バイナリコードが自己修正命令ランダム化コード（ＳＭＩＲＣ）およびセマンティック辞書暗号化（ＳＤＥ）（すなわち、ＳＭＩＲＣ＋ＳＤＥ）表現へと変換され、２）ＳＭＩＲＣ＋ＳＤＥ表現は、小さなバイナリ実行可能ファイルを生成するジェネレータスタブ（命令のブロック）をライトバックプロセスによって生成するワインハールデン文法シンセサイザ（ＶＷＧＳ）へとさらに変換される。スタブが、実行時の呼び出しごとに行われる復号によって保護される一方で、コードの本体は暗号化されたままであることに、注意すべきである。プロセスは、元のアプリケーションをバイナリ形式でさらに再生成することができる。したがって、完全なオントロジ暗号化が、スタブから生成されたオントロジ的な暗号化を使用するバイナリのランダムな時点におけるランタイムのランダム化を介して、本明細書に記載の実施形態によって使用される。
【００３４】
暗号法のプロトコル
処理システム（例えば、仮想マシン（ＶＭ））は、２つの部分で構成され、すなわち実ＣＰＵハードウェア上で動作する外部処理システム（ＯＰＳ）ＯＰＳホストと、仮想化仮想マシンコンテナ（すなわち、例えばｑｅｍｕ）などの内部処理システム（ＩＰＳ）内で動作する内部のゲスト部分とで構成される。ユーザおよびユーザのプロセス（すなわち、コンピュータ）の実際のアイデンティティに関するすべての情報は、ＯＰＳによって維持される。すべてのアプリケーションサブルーチンは、ＩＰＳから実行される。書き込み可能なアクセス制御は、ＯＰＳによって提供される仮想デバイスなどの従属プロセッサとしてのＩＰＳによってのみ許可される。暗号化はＯＰＳ上で実行され、内部マシンは、キーへのアクセスを有していない。
【００３５】
このようにして、ＯＰＳはマスタプロセッサとして機能し、ＩＰＳは従属プロセッサとして機能する（また、自身の従属プロセッサのマスタプロセッサとしても機能する）。ＯＰＳ（例えば、ＩＰＳＯＰＳ仮想マシンイメージ）は、ＯＰＳの各インスタンスが内部から見ることができるあらゆるやり方（すなわち、ユーザ名、ｍａｃアドレス、およびＩＰアドレス）において同一に見えるように、ＩＰＳ（例えば内部ＯＰＳ  ＶＭ）を収容するホストＶＭの一部である。外部マシンによって内部マシンへと提示されるインタフェースも、常に同じであり、例えば、内部マシンは、常に同じ名前を使用して外部マシンを参照する。
【００３６】
外部マシンは、ハイパーバイザおよび「実際の」ネットワークと通信しなければならないすべてのコードから実行される。内部マシンは、外部マシンの割り当てられた暗号ポートにのみ接続可能である。外部マシンは、いかなるトラフィックも内部マシンからネットワークへと直接中継されることができないように構成されたファイアウォールを有する。内部マシンが別のプロセッサと通信できる唯一のやり方は、外部マシンによって割り当てられたポートを経由しなければならない。
【００３７】
暗号には、以下の２つの種類がある。
【００３８】
１．対称暗号（ＲＣ４、ＲＣ５、ＳＨＡ−１、およびＭＤ５など）
２．非対称暗号（ＲＳＡおよびＥＣＣなど）
ＯＰＳは、図４に示されるように、暗号化メカニズムを介してＳＭＩＲＣ＋ＳＤＥを生成する。この例では、対称ＲＣ５アルゴリズムが使用されるが、任意の対称暗号化アルゴリズムをアプリケーションサブルーチン間の通信のために使用および採用することができる、（すなわち、これらはマスタアプリケーションのコンポーネントとして動作するコルーチンまたはリソース制約付きノードである）。非対称暗号（ＲＳＡアルゴリズムなど）が、ＯＰＳとＩＰＳと間の通信に適用される。
【００３９】
２つの保護メカニズムは、信頼できないシステム（すなわち、エミュレートされているシステム）の帯域外に留まりながら、信頼できるエミュレータ内で実行される。システムの完全性および信頼性は、エミュレートされた環境内のサンドボックスに攻撃者を保つことに依存する。ＯＰＳ）およびＩＰＳ）は、以下のルールを使用して対話する。
【００４０】
１．ＯＰＳが、ＩＰＳ命令をＩＰＳメモリからＯＰＳメモリにコピーする。
【００４１】
２．ＩＰＳ命令が、ＯＰＳ命令の組へと変換される。この変換されたＯＰＳ命令の組が、ＩＰＳメモリの状態を実行し、レジスタが、あたかも元のＩＰＳ命令が実行されたかのように変更される。
【００４２】
３．変換プロセスは、ＩＰＳ命令による排他的なＩＰＳメモリの読み取りおよび書き込みを保証する。ＯＰＳメモリは、ＩＰＳ命令ではアクセス不可能であり、ＯＰＳ命令の変換された組では、ＯＰＳメモリの読み取りまたは書き込みが不可能である。結果として、変換された命令の組は、決して自身を読み取ることがない。ＩＰＳ命令サンドボックスは、制限されたメモリ空間である。
【００４３】
エンド・ツー・エンドの暗号化は、クラウドフレームワークにおける通信ノードの数の多さゆえに、多数の暗号キーを管理し、記憶し、呼び出す必要があるため、実用的でない。現在の方法において、計算ノードの数をＮと仮定し、各々のＩＰＳサブノードが隣接ノードと共有される暗号キーを格納するＩＰＳノードとのホップバイホップ暗号化をＯＰＳに実行させる。ＯＰＳノードに格納されるキーは、隣のノードおよびＩＰＳノードと共有されるキーを含み、ＩＰＳノードは、自身のサブノードとの共有キーおよびＯＰＳとの１つのキーを有する。この方法は、キーに必要なメモリおよびキーの送信の消費電力を最小限に抑える。
【００４４】
方法のプロトコル
１．ＯＰＳが、暗号化されたＩＰＳ  ＳＭＩＲＣ＋ＳＤＥ命令をＯＰＳメモリへと複製する。暗号化されたＩＰＳが、ＯＰＳメモリにおいて復号される。したがって、これらの命令は、依然としてＩＰＳの帯域外であり、ＩＰＳによるアクセスは不可能である。
【００４５】
２．復号されたＩＰＳ  ＳＭＩＲＣ＋ＳＤＥ命令が、対象ＩＰＳの単純な２層トランスレータ（図４を参照）として指定されたワインハールデン文法を使用してＯＰＳ命令の組へと変換（または、解釈）される。
【００４６】
３．変換されたＯＰＳ命令の組が、あたかも元のＩＰＳ命令が実行されたかのように見えるように、ＩＰＳの状態を実行する。変換プロセスは、ＩＰＳ命令が復号されたＩＰＳ命令を決して読み取らないように保証する。
【００４７】
４．暗号化された命令が、ＯＰＳルーチンを使用してＯＰＳメモリにおいて復号される。エミュレーションサンドボックスは、ＩＰＳによるＯＰＳメモリへのアクセスが不可能である（すなわち、復号された命令および復号ルーチンが帯域外である）ことを保証する。暗号化されたＩＰＳ実行可能ファイルは、いかなる復号プロセスも有さず、命令の復号に必要なキーを目にすることがなく、復号は常に帯域外のままである。
【００４８】
５．ＯＰＳの変換メカニズムは、２レベルの文法を使用して実行された命令をＩＰＳへと書き直し、すなわちＩＰＳは、同じイメージを２回連続して有することがなく、したがって攻撃面が再び同じになることが決してない。
【００４９】
方法：キー−コードハッシュ・ペアリング・ホワイトリスト
暗号化キー自体は、ＩＰＳコードが相互にＯＰＳハッシュを持つため、サブルーチンまたはＩＰＳコードのハッシュ（例えば、ＭＤ５）に単純なハッシュマップを使用して関連付けられ、このエンコーディングは、ペアのサインのＯＰＳとＩＰＳおよびＩＰＳとそのサブノードだけを実行する実行モデルを定義し、したがって、ルートキット（ｒｏｏｔｋｉｔ）およびエクスプロイット（ｅｘｐｌｏｉｔ）などのペアでない未サインの悪意のあるコードは決して実行されず、主な理由は、新たな変換が完了するたびにハッシュ（例えば、ＭＤ５）を再計算しなければならないからであり、これは不正の証拠ならびに不正の防止を提供する。
【００５０】
Ｖａｎ  Ｗｉｊｎｇａａｒｄｅｎ（ＶＷ）文法ルール
ＶＷ文法は、文脈依存型であり、したがって当業者にとって、（例えば、ｘ８６命令セットの）或る形式のコードを、その文脈の情報であるその意味を保持しながら、別の形式へと変換するルールを書き表すために使用することができる。ＶＷは、長距離の関係を定義することができ、すなわち情報は、コードの表現の文形式（例えば、ｘ８６アセンブラ）を介して文脈的に流れる。ＶＷがＯＰＳおよびＩＰＳの文脈において使用されるとき、情報は、或るコード形式を別のコード形式へと書き換えるために隣接するサブノードに目を向けるサブノードへと流れなければならない。このように、ＶＷ文法をコード翻訳エンジンとして使用することは、ほぼすべてのルールが、他のルールのほぼすべてについて何かを知るために必要であることを意味し、これは攻撃面をきわめて困難にする。
【００５１】
第１レベルのトランスレータ文法
第１レベルの文法は、コンピュータコードを生成する。具体的な例として、ｘ８６命令セットに関する第１レベルの文法は、記号Ｓ、Ｔ、Ｕ、およびＶを用いて以下のように与えられ得る。
【００５２】
Ｓ−＞ｍｏｖ  ｅａｘ，ｋｅｙ  Ｔ
Ｔ−＞ｘｏｒ［ｅｂｘ］，ｅａｘ  Ｕ
Ｕ−＞ｉｎｃ  ｅｂｘ  Ｖ
この第１レベルの文法は、以下の実行可能命令コードを生成する。
【００５３】
ｍｏｖ  ｅａｘ，ｋｅｙ
ｘｏｒ［ｅｂｘ］，ｅａｘ
ｉｎｃ  ｅｂｘ
コードは、非終端記号のシーケンスＳ−＞Ｔ−＞Ｕ−＞Ｖによって生成される。具体的には、Ｓなどの非終端を、“ｍｏｖ  ｅａｘ，ｋｅｙ  Ｔ”と書き換えることができ、これを“ｍｏｖ  ｅａｘ，ｋｅｙ  ｘｏｒ［ｅｂｘ］，ｅａｘ  Ｕ”と再び書き換えることができる、などである。定義されたプロダクションルールは、任意のプログラムについて等価な命令シーケンスを生成することができる。
【００５４】
Ｓ−＞ｍｏｖ  ｅａｘ，ｋｅｙ  Ｔ｜ｐｕｓｈ  ｋｅｙ；ｐｏｐ  ｅａｘ  Ｔ
Ｔ−＞ｘｏｒ［ｅｂｘ］，ｅａｘ  Ｕ｜ｍｏｖ  ｅｃｘ，［ｅｂｘ］；
ａｎｄ  ｅｃｘ，ｅａｘ；ｎｏｔ  ｅｃｘ；ｏｒ［ｅｂｘ］，ｅａｘ；
ａｎｄ［ｅｂｘ］，ｅｃｘ  Ｕ
Ｕ−＞ｉｎｃ  ｅｂｘ  Ｖ｜ａｄｄ  ｅｂｘ，１  Ｖ
同様に、機能的効果を持たないコードを、ＯＰＳによってＩＰＳを変更するために追加することができる。これを、Ｓ−＞Ｇ  ｍｏｖ  ｅａｘ，ｋｅｙ  Ｔ｜Ｇ  ｐｕｓｈ  ｋｅｙ；ｐｏｐ  ｅａｘ  Ｔなど、小さなオーバーヘッドで「非動作シーケンス」命令を生成する新しい非終端を追加することによって行うことができる。
【００５５】
これらは、ＩＰＳおよびサブノードにおける分散を増やすために生成できる命令シーケンスの数を増加させる。
【００５６】
第２レベルのトランスレータ文法
本特許において、使用される方法は、以下のＶＷメタルールを用いて意味および文脈を保存するコードシーケンスをランダムに生成するためのプロダクションを可能にするプロダクションプロセスにおけるランダム発生器である（メタルール、ハイパールール、およびプロダクションルールの間の区別のために、通常のＢａｃｋｕｓ−Ｎａｕｒ構文‘−＞’をメタルールについての‘；’および：：ならびにハイパールールについてのコロン（‘：’）に変え、ルールの種々の選択肢を分離するために‘｜’の代わりにセミコロン‘；’を使用する）。
【００５７】
Ｎ：：０；１；２；…；９；０Ｎ；…９Ｎ；
ＨＥＸＩＤＥＣＩＭＡＬ：：Ｎ；ａ；ｂ；ｆ；ａ  ＨＥＸＩＤＥＣＩＭＡＬ；ｂ  ＨＥＸＩＤＥＣＩＭＡＬ；…；ｆ  ＨＥＸＩＤＥＣＩＭＡＬ．
ＡＤＤＲＥＳＳ：：０ｘＮ．
ＮＵＭＢＥＲ：：ＭＥＭＯＲＹ  ＡＤＤＲＥＳＳ；ＨＥＸＩＤＥＣＩＭＡＬ．
ＩＮＳＴＲＵＣＴＩＯＮ：：ｍｏｖ；ｐｕｓｈ；ｐｏｐ．
ＭＥＭＯＲＹ  ＲＥＧＩＳＴＥＲ：：ｅａｘ；ｅｂｘ；ｅｄｘ．
ＳＴＡＣＫ：：ｅｓｐ．
ＭＥＭＯＲＹ  ＲＥＧＩＳＴＥＲＳ：：ＳＴＡＣＫ；ＲＥＧＩＳＴＥＲ．
ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ：：ＲＥＧＩＳＴＥＲ；ＮＵＭＢＥＲ．
ＭＥＭＯＲＹ：：［ＲＥＧＩＳＴＥＲ］；［ＡＤＤＲＥＳＳ］．
ＴＯ：：‘，’．
以下の表で、オントロジ暗号化が、バイナリレベルで行われるがゆえに、どのようにチップアーキテクチャとは無関係に機能するかを、一般的な用語にて示す。
【００５８】
【表１】
0006788160.tif 000002
メタ表記ＮＵＭが、アドレスまたは１６進数を表す一方で、ＩＮＳＴＲＵＣＴＩＯＮは、ただの単一の命令（例えば、ｍｏｖ、ｐｕｓｈ、およびｐｏｐ）ではなく、いくつかの命令を表す。以下の変換は、命令を、以下のハイパールールによって与えられるそのサブルーチンと同等であるとして実行することができる読み取り可能かつ書き換え可能な文へと変更する。
【００５９】
ｍｏｖ  ＲＥＧＩＳＴＥＲＳ  ＴＯ  ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ：
ｍｏｖｅ  ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ  ｉｎ  ＲＥＧＩＳＴＥＲＳ．
ｐｕｓｈ  ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ：
ｓａｖｅ  ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ．
ｐｏｐ  ＲＥＧＩＳＴＥＲＳ：
ｒｅｓｔｏｒｅ  ＲＥＧＩＳＴＥＲＳ．
短いサブルーチンの具体的な例として、コード“ｍｏｖ  ｅａｘ，０”は、第１のハイパールールゆえに、“ｍｏｖｅ  ０  ｉｎ  ｅａｘ”によって置き換えられる。さらに高度な複雑さを生み出すために、コードを他の同等のコードへと変換するハイパールールを追加することができる。
【００６０】
ｍｏｖｅ  ＲＥＧＳＴＥＲ  ＮＵＭＢＥＲ  ｉｎ  ＭＥＭＯＲＹ：
ｍｏｖ，ＭＥＭＯＲＹ，ＴＯ，ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ；
ｍｏｖｅ  ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ  ｉｎ  ＲＥＧＩＳＴＥＲＳ：
ｍｏｖ，ＲＥＧＩＳＴＥＲＳ，ＴＯ，ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ；
ｓａｖｅ  ＲＥＧＩＳＴＥＲ  ＮＵＭＢＥＲ，ｒｅｓｔｏｒｅ  ＲＥＧＩＳＴＥＲＳ．
例えば、以前に得られたコード（“ｍｏｖｅ  ０  ｉｎ  ｅａｘ”）を、“ｍｏｖ，ｅａｘ，‘，’，０”へと変更することができ、あるいは“ｓａｖｅ  ０，ｒｅｓｔｏｒｅ  ｅａｘ”によって変更することができる。最初の選択肢は、生成プロセスを停止する。しかしながら、いずれもハイパールールの左側に一致しないコード“ｍｏｖ”、“ｅａｘ”、“‘，’”、および“０”は停止する。しかしながら、他の選択肢は生成を続け、コードの両方の部分、すなわち“ｓａｖｅ  ０”および“ｒｅｓｔｏｒｅ  ｅａｘ”は、互いに独立して置き換えられる。したがって、“ｓａｖｅ  ０”を、“ｐｕｓｈ，０”または“ｓｕｂｔｒａｃｔ  ４  ｆｒｏｍ  ｅｓｐ，ｍｏｖｅ  ０  ｉｎ［ｅｓｐ］”などによって置き換えることができる。上記で定義されたメタルールは、バイナリ変換によって実行され、すなわち本発明はただ１つのバイナリ命令チップアーキテクチャに限定されず、むしろ任意のチップアーキテクチャ（ＡＲＭ、Ｉｎｔｅｌ、または他のハードウェア）によって使用されることができるため、異なるプロセッサ（例えば、ＡＲＭ、Ｉｎｔｅｌ、または他のハードウェア）に対応する同等の命令文法のテーブルを生成することによって、さらに拡張可能である。ＶＷ文法は、可変性のために命令の無限の組を生成することができ、したがってハイパールールは、無限の数のプロダクションルールを生成するが、実際には、その量は、多様性を確保しつつランタイムのオーバーヘッドを最小限に抑えるように、ＩＰＳ単位で固定のカウンタを設定することによって制限される。ＶＷによって生成されたターゲットコードシーケンスの各々は、「スタブ」と呼ばれる。
【００６１】
ＩＰＳの種々のサブルーチンの各々を、別々のＶＷ文法によって定義することができる。文法の開始記号は、それ自体、各々のプログラムをスタブからなる構成として記述する文法の開始記号である。ＶＷ文法は、ターゲットマシンＣＰＵのそれらのコードを自動的に生成する構築法を生成する。ＯＰＳは、動作可能なプログラムの全体を提供するが、ＯＰＳ自体を、ＩＰＳの同じプロセスによって再定義することができる。このように、ワインハールデン文法を、ＩＰＳのすべての部分を生成する開始ＯＰＳからＩＰＳを定義するために使用することができ、その後にＯＰＳ自体を、ランタイム複製またはコピープロセスによって変換することができる。一例として、４つのレベルを有するＯＰＳにおいて、親ＯＰＳが継続的に書き換えるＶＷ文法定義は、
ＯＰＳ：ＩＰＳ−ＳＴＵＢ０１、ＩＰＳ−ＳＴＵＢ０２、ＩＰＳ−ＳＴＵＢ０３、ＩＰＳ−ＳＴＵＢ０４
ＩＰＳ−ＳＴＵＢ０１：ＯＰＳ−ＣＨＩＬＤへとペアにされてサインされたＳＴＵＢ０１のＶＷ文法
ＩＰＳ−ＳＴＵＢ０２：ＯＰＳ−ＣＨＩＬＤへとペアにされてサインされたＳＴＵＢ０２のＶＷ文法
ＩＰＳ−ＳＴＵＢ０３：ＯＰＳ−ＣＨＩＬＤへとペアにされてサインされたＳＴＵＢ０３のＶＷ文法
ＩＰＳ−ＳＴＵＢ０４：ＯＰＳ−ＣＨＩＬＤへとペアにされてサインされたＳＴＵＢ０４のＶＷ文法
ＯＰＳ−ＣＨＩＬＤ：ＯＰＳへとペアにされてサインされたＯＰＳ−ＣＨＩＬＤ
である。
【００６２】
例えば、本明細書に援用されるＤｉｃｋ  Ｇｒｕｎｅ，Ｈｏｗ  ｔｏ  ｐｒｏｄｕｃｅ  ａｌｌ  ｓｅｎｔｅｎｃｅｓ  ｆｒｏｍ  ａ  ｔｗｏ−ｌｅｖｅｌ  ｇｒａｍｍａｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｌｅｔｔｅｒｓ  Ｖｏｌｕｍｅ  １９，Ｉｓｓｕｅ  ４，１２  Ｎｏｖｅｍｂｅｒ  １９８４，Ｐａｇｅｓ  １８１−１８５を参照されたい。具体的には、各スタブは、例えばクラウド環境または他の何らかのコンピュータシステム（図５を参照して説明される）において、異なるプロセッサに割り当てられ、処理され、監督プロセッサに報告される。このようにして、敵は、コード構造全体を集めなければならず、コードが実行されるたびに命令セット、メモリポインタ、レジスタ、およびデータ暗号化が異なる。
【００６３】
図３が、上述したように、外部処理システム（ＯＰＳ）（３０１）と、内部処理システム（ＩＰＳ）（３０２）において動作する内部ゲスト部分とから構成される仮想マシン（ＶＭ）を含む処理システムの一例を示している。ＯＰＳ３０１は、メタデータ２層文法トランスレータを含む。ＯＰＳ３０１とＩＰＳ３０２との間の通信に、非対称暗号が適用される。さらに、対称暗号が、アプリケーションサブルーチン間の通信に使用される。
【００６４】
図４が、コンピューティングシステムの命令セット、メモリレジスタ、およびポインタをランダム化するためのプロセスを示している。（実際にプログラムを実行するために）ＳＴＵＢを実行する実行ＶＭは、ランダムに生成されたコードを使用し、言い換えれば、実行コードは常に１回だけ現れ、その後にコードは去る一方で、スタック（スタブの一部）は計算を続けるために次のＶＭのために残る。
【００６５】
ステップ１において、命令は、内部プロセスのＯＰ−Ｈａｓｈを使用して暗号化される。ステップ２において、暗号化された命令が、外部プロセスへと送信される。ステップ３において、命令は、ＯＰＳメモリへと復号され、ＳＴＵＢを実行するＶＭによって実行される。これらの復号された命令は、依然としてＩＰＳの帯域外であり、ＩＰＳによるアクセスは不可能である。暗号化された命令は、ＯＰＳルーチンを使用してＯＰＳメモリにおいて復号される。エミュレーションサンドボックスは、ＩＰＳによるＯＰＳメモリへのアクセスが不可能である（すなわち、復号された命令および復号ルーチンが帯域外である）ことを保証する。暗号化されたＩＰＳ実行可能ファイルは、いかなる復号プロセスも有さず、命令の復号に必要な秘密キーを目にすることがなく、復号は常に帯域外のままである。
【００６６】
ステップ４において、復号された命令は、対象ＩＰＳの単純な２層トランスレータとして指定されたワインハールデン文法を使用してＯＰＳ命令の組へと変換（または、解釈）される。変換されたＯＰＳ命令の組が、あたかも元のＩＰＳ命令が実行されたかのように見えるように、ＩＰＳの状態を実行する。変換プロセスは、ＩＰＳ命令が復号されたＩＰＳ命令を決して読み取らないように保証する。
【００６７】
ステップ５において、ＯＰＳの変換メカニズムは、２レベルの文法を使用して実行した命令をＩＰＳへと再び書き込む。この書き込みは、ＩＰＳが同じイメージを２回連続して有することが決してなく、したがって攻撃面が再び同じになることが決してないことを保証する。
【００６８】
システムの動作に、図４に示したプロセスチェーンの全体は必要でないことに、注意すべきである。例えば、システムは、一実施形態においてはこれらのステップのすべてを通過するが、別の実施形態においては、ステップを入れ替え（並べ替え）てもよく、あるいはどのステップも必要とされないかもしれない（いくつかのステップを省略してもよい）。
【００６９】
すでに述べたとおり、上述した実施形態の各機能は、１つ以上の処理回路によって実現されてよい。処理回路は、プロセッサが回路を含むので、プログラムされたプロセッサ（例えば、図５のプロセッサ５０３）を含む。さらに、処理回路は、特定用途向け集積回路（ＡＳＩＣ）などのデバイスと、上述の機能を実行するように構成された従来の回路構成要素とを含む。一実施形態によれば、図５で説明したとおりの回路を使用して、命令セット、メモリレジスタ、およびポインタのランダム化を実行して、本明細書に記載のセキュリティ機能を提供することができる。したがって、ランダム化プロセスを実施する際の回路は、アプリケーションを実行するための安全なフレームワークを提供することができ、それによってコンピュータの全体的な機能を向上させることができる。
【００７０】
上述の種々の特徴は、コンピュータシステム（または、プログラマブルロジック）などのコンピューティングデバイスによって実装されてもよい。回路を、回路の処理を改善し、人間では不可能であり、あるいは本実施形態の特徴を欠いた汎用コンピュータでも不可能であるやり方でデータを処理することを可能にする上述の機能および特徴を実現するようにとくに設計またはプログラムすることができる。図５は、このようなコンピュータシステム５０１を示す。図５のコンピュータシステム５０１は、特定の専用マシンであってよい。一実施形態において、プロセッサ５０３がベクトル収縮を計算するようにプログラムされている場合、コンピュータシステム５０１は、特定の特殊目的マシンである。
【００７１】
コンピュータシステム５０１は、磁気ハードディスク５０７およびリムーバブルメディア駆動装置５０８（例えば、フロッピーディスクドライブ、読み出し専用コンパクトディスクドライブ、読み／書きコンパクトディスクドライブ、コンパクトディスクジュークボックス、テープドライブ、およびリムーバブル光磁気ドライブ）などの情報および命令を格納するための１つ以上の記憶装置を制御するためのバス５０２へと接続されたディスクコントローラ５０６を含む。ストレージデバイスを、適切なデバイスインタフェース（例えば、スモールコンピュータシステムインタフェース（ＳＣＳＩ）、統合デバイスエレクトロニクス（ＩＤＥ）、拡張ＩＤＥ（Ｅ−ＩＤＥ）、ダイレクトメモリアクセス（ＤＭＡ）、またはｕｌｔｒａ−ＤＭＡなど）を使用してコンピュータシステム５０１に追加することができる。
【００７２】
さらに、コンピュータシステム５０１は、専用の論理デバイス（例えば、特定用途向け集積回路（ＡＳＩＣ））あるいは設定可能な論理デバイス（例えば、シンプルプログラマブル論理デバイス（ＳＰＬＤ）、コンプレックスプログラマブル論理デバイス（ＣＰＬＤ）、およびフィールドプログラマブルゲートアレイ（ＦＰＧＡ））を含むことができる。
【００７３】
また、コンピュータシステム５０１は、コンピュータユーザに情報を表示するために、ディスプレイ５１０を制御するためにバス５０２に接続されたディスプレイコントローラ５０９を含むことができる。コンピュータシステムは、コンピュータユーザと対話し、プロセッサ５０３に情報を提供するために、キーボード５１１およびポインティングデバイス５１２などの入力デバイスを含む。ポインティングデバイス５１２は、例えば、方向情報およびコマンド選択をプロセッサ５０３に伝達し、ディスプレイ５１０上のカーソル移動を制御するマウス、トラックボール、タッチスクリーンセンサ用の指、またはポインティングスティックであってよい。
【００７４】
プロセッサ５０３は、メインメモリ５０４などのメモリに含まれる１つ以上の命令の１つ以上のシーケンスを実行する。そのような命令を、ハードディスク５０７またはリムーバブルメディア駆動装置５０８などの別のコンピュータ可読媒体からメインメモリ５０４に読み込むことができる。マルチプロセッシング構成の１つ以上のプロセッサを使用して、メインメモリ５０４に含まれる命令のシーケンスを実行することもできる。別の実施形態においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤード回路を使用することができる。したがって、実施形態は、ハードウェア回路およびソフトウェアの特定の組み合わせに限定されない。
【００７５】
上述したように、コンピュータシステム５０１は、本開示の教示のいずれかに従ってプログラムされた命令を保持し、本明細書に記載のデータ構造、テーブル、レコード、または他のデータを格納するための少なくとも１つのコンピュータ可読媒体またはメモリを含む。コンピュータ可読媒体の例は、コンパクトディスク、ハードディスク、フロッピーディスク、テープ、光磁気ディスク、ＰＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュＥＰＲＯＭ）、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、または任意の他の磁気媒体、コンパクトディスク（例えば、ＣＤ−ＲＯＭ）または任意の他の光学媒体、あるいはパンチカード、紙テープ、または穴のパターンを有する他の物理的媒体である。
【００７６】
本開示は、コンピュータシステム５０１を制御し、本発明を実施するために１つ以上のデバイスを駆動し、コンピュータシステム５０１が人間のユーザと対話できるようにするコンピュータ可読媒体のいずれか１つまたは組み合わせに格納されたソフトウェアを含む。そのようなソフトウェアは、これらに限られるわけではないが、デバイスドライバ、オペレーティングシステム、およびアプリケーションソフトウェアを含む。そのようなコンピュータ可読媒体は、本発明の任意の部分を実施する際に実行される処理の全部または一部（処理が分散されている場合）を実行するための本開示のコンピュータプログラム製品をさらに含む。
【００７７】
本実施形態のコンピュータコードデバイスは、これらに限られるわけではないが、スクリプト、解釈可能プログラム、ダイナミックリンクライブラリ（ＤＬＬ）、Ｊａｖａ（登録商標）クラス、および完全な実行可能プログラムを含む任意の解釈可能または実行可能コード機構であってよい。さらに、本実施形態の処理の一部は、より良い性能、信頼性、および／またはコストのために分散されてもよい。
【００７８】
本明細書において使用されるとき、「コンピュータ可読媒体」という用語は、実行のためにプロセッサ５０３に命令を提供することに関与する任意の非一時的媒体を指す。コンピュータ可読媒体は、これらに限られるわけではないが不揮発性媒体または揮発性媒体など、多くの形態を取ることができる。不揮発性媒体は、例えば、ハードディスク５０７またはリムーバブルメディア駆動装置５０８など、光学ディスク、磁気ディスク、および光磁気ディスクを含む。揮発性媒体は、メインメモリ５０４などのダイナミックメモリを含む。反対に、伝送媒体は、バス５０２を構成する配線など、同軸ケーブル、銅線、および光ファイバを含む。また、伝送媒体は、電波および赤外線データ通信において生成されるような音響波または光波の形態をとってもよい。
【００７９】
様々な形態のコンピュータ可読媒体が、実行のためのプロセッサ５０３への１つ以上の命令の１つ以上のシーケンスの実行に関与することができる。例えば、命令は、当初は遠隔コンピュータの磁気ディスク上に担持されてよい。遠隔コンピュータは、本開示のすべてまたは一部を実施するための命令をダイナミックメモリに遠隔でロードし、モデムを使用して電話回線を介して命令を送信することができる。コンピュータシステム５０１のローカルなモデムが、電話回線上のデータを受信し、データをバス５０２上に置くことができる。バス５０２は、メインメモリ５０４にデータを運び、そこからプロセッサ５０３が命令を取り出して実行する。メインメモリ５０４によって受信された命令を、随意により、プロセッサ５０３による実行の前または後のいずれかにおいて記憶装置５０７または５０８に保存することができる。
【００８０】
コンピュータシステム５０１は、バス５０２に接続された通信インタフェース５１３も含む。通信インタフェース５１３は、例えばローカルエリアネットワーク（ＬＡＮ）５１５またはインターネットなどの別の通信ネットワーク５１６に接続されたネットワークリンク５１４に結合する双方向データ通信を提供する。例えば、通信インタフェース５１３は、任意のパケット交換ＬＡＮに接続するためのネットワークインタフェースカードであってよい。別の例として、通信インタフェース５１３は、統合サービスデジタルネットワーク（ＩＳＤＮ）カードであってよい。無線リンクを実装することも可能である。任意のそのような実装において、通信インタフェース５１３は、様々な種類の情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送信および受信する。
【００８１】
ネットワークリンク５１４は、典型的には、１つ以上のネットワークを介する他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク５１４は、ローカルネットワーク５１５（例えば、ＬＡＮ）を介し、あるいは通信ネットワーク５１６を介して通信サービスを提供するサービスプロバイダによって操作される機器を介して、別のコンピュータへの接続を提供することができる。ローカルネットワーク５１４および通信ネットワーク５１６は、例えば、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号、ならびに関連する物理層（例えば、ＣＡＴ５ケーブル、同軸ケーブル、光ファイバ、など）を使用する。種々のネットワークを通る信号、ならびにコンピュータシステム５０１との間でデジタルデータを搬送するネットワークリンク５１４上および通信インタフェース５１３経由の信号は、ベースバンド信号または搬送波ベースの信号で実現されてよい。
【００８２】
ベースバンド信号は、デジタルデータビットのストリームを記述する非変調の電気パルスとしてデジタルデータを搬送し、ここで用語「ビット」は、シンボルを意味するように広義に解釈されるべきであり、各シンボルは少なくとも１つ以上の情報ビットを搬送する。デジタルデータは、伝導性媒体上を伝播する振幅、位相、および／または周波数シフト暗号化信号などで搬送波を変調するために使用されてもよく、あるいは伝播媒体を介して電磁波として送信されてもよい。したがって、デジタルデータを、「有線」通信チャネルを介して非変調ベースバンドデータとして送信でき、さらには／あるいは搬送波を変調することによってベースバンドとは異なる所定の周波数帯域において送信することができる。コンピュータシステム５０１は、ネットワーク５１５および５１６、ネットワークリンク５１４、ならびに通信インタフェース５１３を介して、プログラムコードを含むデータを送信および受信することができる。さらに、ネットワークリンク５１４は、ＬＡＮ５１５を介して携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、または携帯電話機などのモバイルデバイス５１７への接続を提供することができる。
【００８３】
一実施形態によれば、命令をランダム化してコンピュータのセキュリティを高めるための方法および装置が記載される。このプロセスは、外部処理システム（ＯＰＳ）と内部処理システム（ＩＰＳ）とからなる仮想マシン（ＶＭ）を含む処理システムのＩＰＳにおいて命令を暗号化するステップと、暗号化された命令を外部処理システムへと送信するステップと、復号された命令がＩＰＳの帯域外であって、ＩＰＳによるアクセスが不可能であるように、ＯＰＳにおいて暗号化された命令を復号するステップと、仮想マシン内のスタブルーチンを介して復号されたコードを実行するステップと、復号された命令を、ＩＰＳのための単純な２層トランスレータとして指定されたワインハールデン文法を使用してＯＰＳ命令の組へと変換するステップと、変換された命令をＩＰＳへと送信するステップとを含む。
【００８４】
本開示の態様は、実施例として提案されるその特定の実施形態と関連して記載されているが、実施例に対する代替、変更、および変形がなされてもよい。さらに、本明細書および添付の特許請求の範囲で使用されるとき、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上他に明確に指示されない限り、複数の指示対象を含むことに、留意すべきである。
【図１】
0006788160.tif 000003
【図２】
0006788160.tif 000004
【図３】
0006788160.tif 000005
【図４】
0006788160.tif 000006
【図５】
0006788160.tif 000007