(57)【要約】      （修正有）【課題】従来回避できなかったコンピュータ攻撃の阻止のためのオペレーティング・システムのための方法を提供する。【解決手段】暗号化されたアーキテクチャ化命令をフェッチするステップと、前記暗号化されたアーキテクチャ化命令を１以上の暗号化されたオペコードと命令ビットのセットに分離するステップと、複数のモードの一つを使って前記暗号化されたオペコードを解読して、１以上の解読されたオペコードを形成する、解読するステップと、前記解読されたオペコードと前記命令ビットのセットとを組合わせて、解読されたアーキテクチャ化命令を形成する、組合わせステップと、前記解読されたアーキテクチャ化命令を命令実行ユニットに渡すステップと、を備える。【選択図】図５
2006309766.tif 000002
【特許請求の範囲】
【請求項１】
攻撃を阻止するためのデータ処理システムおける方法であって、
暗号化されたアーキテクチャ化命令をフェッチするステップと、
前記暗号化されたアーキテクチャ化命令を１以上の暗号化されたオペコードと命令ビットのセットに分離するステップと、
複数のモードの一つを使って前記暗号化されたオペコードを解読して、１以上の解読されたオペコードを形成する、解読するステップと、
前記解読されたオペコードと前記命令ビットのセットとを組合わせて、解読されたアーキテクチャ化命令を形成する、組合わせステップと、
前記解読されたアーキテクチャ化命令を命令実行ユニットに渡すステップと、
を備える方法。
【請求項２】
前記１以上の暗号化されたオペコードは、第１の暗号化されたオペコードを含み、
複数のモードの１つを使用して前記暗号化されたオペコードを解読するステップは、第1のメモリ解読アレイを使用して前記第1の暗号化されたオペコードを解読して第1の解読されたオペコードを形成するステップを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記暗号化されたオペコードは、更に第２の暗号化されたオペコードを含み、
複数のモードの１つを使用して前記暗号化されたオペコードを解読するステップは、更に第２のメモリ解読アレイを使用して前記第２の暗号化されたオペコードを解読して第２の解読されたオペコードを形成するステップを含むことを特徴とする請求項２記載の方法。
【請求項４】
前記解読されたオペコードと前記命令ビットのセットとを組合わせるステップは、
前記第１の解読されたオペコードと前記第２の解読されたオペコードと前記命令ビットのセットとを組合わせて前記解読されたアーキテクチャ化命令を形成する、組合わせステップを含む請求項３に記載の方法。
【請求項５】
前記複数のモードは、ハイパーバイザ・モード、スーパーバイザ・モード、及びユーザ・モード、またはデフォルト・モードの少なくとも１つのである請求項１に記載の方法。
【請求項６】
前記命令実行ユニットは、プロセッサまたはメモリの少なくとの１つであることを特徴とする請求項１記載の方法。
【請求項７】
前記暗号化されたオペコードは、アドレス線であることを特徴とする請求項１記載の方法。
【請求項８】
更に、前記複数のモードの１つがデフォルト・モードの場合に前記分離するステップ、前記解読するステップ、及び前記組合わせるステップをバイパスすることを特徴とする請求項１記載の方法。
【請求項９】
バス・システムと、
前記バス・システムに接続された通信システムと、
前記バス・システムに接続された、命令セットを含むメモリと、
命令実行ユニットと、
前記バス・システムに接続された処理ユニットとを備え、
前記処理ユニットは、前記命令セットを実行して、暗号化されたアーキテクチャ化命令をフェッチし、前記暗号化されたアーキテクチャ化命令を１以上の暗号化されたオペコードと命令ビットのセットに分離し、複数のモードの一つを使って前記暗号化されたオペコードを解読して１以上の解読されたオペコードを形成し、前記解読されたオペコードと前記命令ビットのセットとを組合わせて解読されたアーキテクチャ化命令を形成し、前記解読されたアーキテクチャ化命令を命令実行ユニットに渡す、ことを特徴とするデータ処理システム。
【請求項１０】
前記暗号化されたオペコードは第１の暗号化されたオペコードを含み、前記命令セットを実行して複数のモードの１つを使用して前記暗号化されたオペコードを解読するステップは、第1のメモリ解読アレイ使用して前記第1の暗号化されたオペコードを解読し第1の解読されたオペコードを形成することを特徴とする請求項９記載のデータ処理システム。
【請求項１１】
前記暗号化されたオペコードは更に第２の暗号化されたオペコードを含み、前記命令セットを実行して複数のモードの１つを使用して解読された前記暗号化されたオペコードを解読するステップは更に、第２のメモリ解読アレイ使用して前記第２の暗号化されたオペコードを解読し第２の解読されたオペコードを形成することを特徴とする請求項１０記載のデータ処理システム。
【請求項１２】
前記命令セットを実行して前記解読されたオペコードと前記命令ビットのセットを組合わるステップは、前記第１の解読されたオペコードと前記第２の解読されたオペコードと前記命令ビットのセットとを組合わせて、前記解読されたアーキテクチャ化命令を形成することを特徴とする請求項１１に記載のデータ処理システム。
【請求項１３】
攻撃を阻止するための装置であって、
暗号化されたアーキテクチャ化命令をフェッチするフェッチ手段と、
前記暗号化されたアーキテクチャ化命令を１以上の暗号化オペコードと命令ビットにセットとに分離する分離手段と、
複数のモードの一つを使って前記暗号化されたオペコードを解読して、１以上の解読されたオペコードを形成する解読手段と、
前記解読されたオペコードと前記命令ビットのセットを組合わせて、解読されたアーキテクチャ化命令を形成する組合わせ手段と、
前記解読されたアーキテクチャ化命令を命令実行ユニットに渡すパス手段と、
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には改良されたデータ処理システム（data processing system）に関する。特に、暗号解読プロセッサ命令（decrypting processor instructions）のための方法及び装置に関するものである。より詳しくは、本発明は、暗号化命令パワーTMアーキテクチャの暗号化命令における、プロセッサ命令の高速な暗号解読を提供する。
【背景技術】
【０００２】
インターネット（“インターネットワーク”（internetwork）とも呼ばれる）は、コンピュータ・ネットワークのセット（集合）である。インターネットは、データ転送と、送信ネットワークのプロトコルから受信ネットワークによって使用されるプロトコルへのメッセージ変換とを処理（handle）するゲートウエイによって、たぶん類似しないもの（dissimilar）を一体に結合させている。大文字（capitalized）にすると、語句「インターネット（Internet）」は、TCP／IP方式のプロトコルを使用するネットワークとゲートウエイの集合を意味する。
【０００３】
インターネットは、情報と娯楽としての文化的な基盤（fixture）になっている。多くの企業が、かれらのマーケット努力と、消費者にその企業が提供する製品やサービスを知らせことと、または、ブランドロイヤリティ（brand loyalty）を生むようにさせる他の情報を提供すること、などの統合部分として、インターネット・サイトを形成しつつある。多くの政府、州、地方政府機関も、情報通知の目的のために、インターネット・サイトを利用する。特に、それらの機関（例えばアメリカ政府及州の税徴収機関：Internal Revenue Service and secretaries of state）は、社会の現実の全てのセグメントと対話しなければならない。情報通知案内及びオンラインの公共記録（レコード）のサーチ可能なデータベースを提供することは、処理コストを削減し得る。更に、インターネットは、商業取引のための媒体として増加的に普及しつつある。
【０００４】
現在、インターネットを介するデータ転送の最も普通に使われる方法は、World Wide Web 環境（単に「ウェブ」とも呼ばれる）を使用することである。他のインターネット資源（例えば、ＦＴＰプロトコル（File Transfer Protocol）とゴーファー（Gopher））が情報を転送するために存在するが、ウェブの普及を達成してきてはいない。ウェブ環境において、サーバ及びクライアントは、ＨＴＴＰ（Hypertext Transfer Protocol）、様々なデータファイル（例えば、テキスト、グラフィックイメージ、音声（オーディオ）、動画ビデオ）の転送を扱うための既知のプロトコルを使用して、データトランザクションを有効にさせる。
様々なデータファイルの中の情報は、標準のページ表現言語（page description language）、ＨＴＭＬ（Hypertext Markup Language）により、ユーザへのプレゼンテーションのために、フォーマットされる。基本的なプレゼンテーション・フォーマッティング（presentation formatting）に追加して、ＨＴＭＬは、開発者がＵＲＬ（Uniform Resource Locator）により指定される他のウェブに「リンク」するのを可能とする。ＵＲＬは、特定の情報への通信経路を規定する構文識別子（syntax identifier）である。クライアントにアクセス可能な情報の論理ブロックの各々（ページまたはウェブ・ページ（Web page）と呼ばれる）は、URLにより特定される。必ずしもユーザのためというわけではなく、ユーザのウェブ「ブラウザー（browser）」のために、ＵＲＬはこの情報を見つけ出しアクセスするための普遍的な一貫した方法を与える。ブラウザーは、識別子（例えばＵＲＬ）により特定される情報の要求を発行することを可能にするプログラムである。ユーザは、ドメイン名をＧＵＩ（graphical user interface）を介して入力して、ブラウザーがコンテンツのソース（source of content）にアクセスしてもよい。ドメイン名は、ＤＮＳ（domain name system）により自動的にＩＰ（Internet Protocol）アドレスに変換される。ＤＮＳは、ユーザがＩＰアドレスに入力したシンボル名（symbolic name）をデータベース内のドメイン名を見つけ出すことによりＩＰアドレスに翻訳するサービスである。
【０００５】
インターネットを介した接続性が増加するにつれて、コンピュータ・システムは、洗練さ増した攻撃方法を使用して、個人により多くの攻撃を受けている。多くのシステムが安全でないネットワーク（イントラネット及びインターフェース）に接続されるにつれて、ダメッジに対する潜在性が増加する。益々の単一オペレーティング・システム（マイクロソフト  ウインドウズ）及び莫大なシステムに対する単一プロセッサ・アーキテクチャ（インテル）へ強い依存性は、この問題を悪化させ世界規模の攻撃を可能にして大規模なコンピュータ・システムを麻痺させる。
【０００６】
現在確保可能な解決方法は、例えば、ウイルス検出ソフトウエア、ファイアオール、政府政策（government initiatives）、セキュリティ政策、評価システムを含む。ウイルス検出ソフトウエアは、６４０００以上の既知のウイルスにして対してネットワーク接続とファイル・システムを介してインプットされたデータをスキャンし、及び、ウイルスのようなプログラム（“virus like” programs）に対して規則ベースのツール（rules based tools）を適用してスキャンする、プログラムまたはコードである。ファイアオールを使用して、特別に許可されているわけではないリソースへのネットワーク・アクセスを阻止する。
【０００７】
米国政府機関からの広範な政策（例えば、ＮＳＡ，ＮＩＡＰ、ＮＩＳＴ、ＦＩＰＳ）が実行されている。ＮＳＴＩＳＳＰ  Ｎｏ．１１は、米国政府によるＩＴ製品の取得を管理する安全政策（セキュリティ）である。更に、国際共同体の支持が、情報セキュリティ国際評価基準共通基準（ＣＣ：Common Criteria）に存在する。
【０００８】
１９８０年代の初めから、米国政府は、コンピュータ・システムのセキュリティ・レベルを高めることを目的とする政策を制定した。ＮＳＡの始まった「オレンジ  ブック」として広く知られる初期の努力において、「レインボー  シリーズ」（Rainbow Series）は、他の政府及び情報セキュリティ国際評価基準共通基準（ＣＣ）として知られ、「コモン」のセキュリティ基準へと発展し、ＣＣはメンバー国の政府により評価された。現在のところ、この努力は、主要の西側メンバー国から急激に支持を受けている。メンバー構成は、日本、中国、韓国、他のアジア諸国により示された追加の利益により７から１３に増えている。
【０００９】
ＣＣｖ1.0として知られる標準（スタンダード）は、最初は１９９６にリリースされ、現在はｖ2.2（２００４）であり、ＩＳＯ承認（ＩＳＯ／ＩＥＣ15408、１９９９）と同時に広く広範に受入れられている。この標準は、コンシューマ、開発者、評価者、認定者、検察官の観点からセキュリティ概念と語句を使用して階層化されたフレームワークセキュリティの包括的な議論 を与えている。この標準は、設計において始まり、展開（deployment.）まで実行する広範囲なセキュリティの手順を概説している。この標準は、国際的なセキュリティの変化する要求に対応して、急激に標準を発展させている。
【００１０】
セキュリティ標準の承認（acceptance）最も影響力あるイベントは、ＮＳＴＩＳＳＰの議長からのディレクション  NSTISSP no. 11である。２０００年２月、情報保障（ＩＡ：information Assurance）を必要とする、２００２年７月以降の確保された全てのＩＴ  システムは、ＣＣまたはＦＩＰＳ暗号モジュール検証プログラム（Cryptomodule Validation Program）により、認証（certified）される。これが、ＩＴ装置を米国政府に販売している多くの会社に認証プログラムのスタートをさせる結果となっている。更に、Presidential Decision Directive on Critical Infrastructure Protection (PDD-63)は、重要なインフラストラクチャーのオペレーションに関連してどのITシステムにもCC認証（CC certification）を奨励している。
【００１１】
これら現在の解決方法は、問題がある。例えば、ウイルス検出プログラムは、単に既知のウイルスに対して有効である。規則に基礎をおく方法（rules based techniques）は殆ど完全には有効ではないため、新しいウイルスの大部分は検出されない。それ故、一つのウイルスの検出は、事件がおきてからなされる。この状況において、その検出前に攻撃は既に進行中であり、通常）既にダメージを受けている。
【００１２】
ウイルス予防（virus protection）を販売している会社は、新規なウイルスまたは古いウイルスの変種を検出し、潜在的ダメージをアセスし、互換性のある検出アルゴリズムを開発し、ユーザに告知し、その予防を更新することを要求する。この手続き（プロシジャー）は、時間消費プロセスであり、実行を完了するのに２時間から１週間かかる。
【００１３】
ウイルス予防のユーザは、インターネットに接続して新規なウイルス予防をダウンロードして、攻撃されるコンピュータを晒さなければならない。その予防をダウンロードして、ウイルス予防プログラムを更新し、システムはウイルスを求めてスキャンされる。コンピュータをスキャンするプロセスは数時間ほどのもの時間がかかり、ワークフォースの生産性を制限する。感染していないコンピュータのユーザでさえ、コンピュータ・システムのかなりの利用損失となる。感染したシステムのユーザは、数時間から数週間の損失を被る。
【００１４】
ファイアウォールは、ＩＰアドレスを使用するネットワーク・トラフィックを阻止して信頼されるリソースを選択して実行するため、ＩＰアドレスを使用するネットワーク・トラフィックを阻止することに依存するために、脆弱性を有する。ｅメールやブラウザーによるダウンロードされるファイルなどの信頼されるリソースを介して配布（delivered）される攻撃は、ファイアウォール・プロテクションによっては、悪影響はない。ファイアウォールは、攻撃者（attackers）が品質の悪いプログラミングの実施によって与えられた未使用（left open）のネットワーク・ポートなどの脆弱性（vulnerability）をスキャンするのを阻止するのは効果的でない。
【００１５】
イニシアティブ（政策）、取得政策（acquisition policies）及びＣＣに関しては、これらのプログラムは、脆弱性を有する。例えば、ＣＣの広範な認証は、STISSP no. 11により強く奨励されているこれども、処理コストは非常に多大であり、時間の無駄である。その標準はさらに進展して、特化した専門的知識が認証を実行することが要求される。その結果は、相対的に証明されておらず、最近の攻撃の成功が特に脆弱性分析、特にモデルにおける弱さを示している。認証（certification）確保するプロセスは、低い保障レベルのためで６月から高度の保証レベルのためで３年以上をかかる。
【００１６】
攻撃の阻止する努力するコンピュータ・システムの脆弱性分析は、攻撃が成功しないであろう保証レベルを単に与えるに過ぎないことがよく認識されている。この分析は、攻撃潜在性ｖｓシステムに設計されているセキュリティ機能の強さ、の概念に強く依存する。このような評価（ measures）は、定義（definition）の初期の頃の積極的な方法であり、せいぜいよくても主観的（subjective）であり、現在の成功的なワールドワイドな攻撃が存在することから効果的でないセキュリティ方法である。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
従って、ウイルス及びワームの攻撃に対する脆弱性の阻止を改善する解決方法は、以前は阻止できなかったある種類のコンピュータ攻撃を回避するための独立のオペレーティング・システム方法、装置、コンピュータ・インストラクション（命令）を要求する。
【課題を解決するための手段】
【００１８】
本発明は、攻撃を阻止するためのデータ処理システムおける方法であって、暗号化されたアーキテクチャ化命令をフェッチするステップと、前記暗号化されたアーキテクチャ化命令を１以上の暗号化されたオペコードと命令ビットのセットに分離するステップと、複数のモードの一つを使って前記暗号化されたオペコードを解読して、１以上の解読されたオペコードを形成する、解読するステップと、  前記解読されたオペコードと前記命令ビットのセットとを組合わせて、解読されたアーキテクチャ化命令を形成する、組合わせステップと、前記解読されたアーキテクチャ化命令を命令実行ユニットに渡すステップと、を備える方法である。
【００１９】
上記方法において、前記１以上の暗号化されたオペコードは、第１の暗号化されたオペコードを含み、複数のモードの１つを使用して前記暗号化されたオペコードを解読するステップは、第1のメモリ解読アレイを使用して前記第1の暗号化されたオペコードを解読して第1の解読されたオペコードを形成するステップを含むことを特徴とする。
また、上記方法において、前記暗号化されたオペコードは、更に第２の暗号化されたオペコードを含み、複数のモードの１つを使用して前記暗号化されたオペコードを解読するステップは、更に第２のメモリ解読アレイを使用して前記第２の暗号化されたオペコードを解読して第２の解読されたオペコードを形成するステップを含むことを特徴とする。
また、上記方法において、前記解読されたオペコードと前記命令ビットのセットとを組合わせるステップは、前記第１の解読されたオペコードと前記第２の解読されたオペコードと前記命令ビットのセットとを組合わせて前記解読されたアーキテクチャ化命令を形成する、組合わせステップを含むことを特徴とする。
また、上記方法において、前記複数のモードは、ハイパーバイザ・モード、スーパーバイザ・モード、及びユーザ・モード、またはデフォルト・モードの少なくとも１つのであることを特徴とする。
また、上記方法において、前記命令実行ユニットは、プロセッサまたはメモリの少なくとの１つであることを特徴とする。
また、上記方法において、前記暗号化されたオペコードは、アドレス線であることを特徴とする。
また、上記方法において、前記複数のモードの１つがデフォルト・モードの場合に前記分離するステップ、前記解読するステップ、及び前記組合わせるステップをバイパスすることを特徴とする。
【００２０】
更に本発明は、バス・システムと、前記バス・システムに接続された通信システムと、前記バス・システムに接続された、命令セットを含むメモリと、命令実行ユニットと、前記バス・システムに接続された処理ユニットとを備え、前記処理ユニットは、前記命令セットを実行して、暗号化されたアーキテクチャ化命令をフェッチし、前記暗号化されたアーキテクチャ化命令を１以上の暗号化されたオペコードと命令ビットのセットに分離し、複数のモードの一つを使って前記暗号化されたオペコードを解読して１以上の解読されたオペコードを形成し、前記解読されたオペコードと前記命令ビットのセットとを組合わせて解読されたアーキテクチャ化命令を形成し、前記解読されたアーキテクチャ化命令を命令実行ユニットに渡すことを特徴とするデータ処理システムである。
また、上記システムにおいて、前記暗号化されたオペコードは第１の暗号化されたオペコードを含み、前記命令セットを実行して複数のモードの１つを使用して前記暗号化されたオペコードを解読するステップは、第1のメモリ解読アレイ使用して前記第1の暗号化されたオペコードを解読し第1の解読されたオペコードを形成することを特徴とする。
また、上記システムにおいて、前記暗号化されたオペコードは更に第２の暗号化されたオペコードを含み、前記命令セットを実行して複数のモードの１つを使用して解読された前記暗号化されたオペコードを解読するステップは更に、第２のメモリ解読アレイ使用して前記第２の暗号化されたオペコードを解読し第２の解読されたオペコードを形成することを特徴とする。
また、上記システムにおいて、前記命令セットを実行して前記解読されたオペコードと前記命令ビットのセットを組合わるステップは、前記第１の解読されたオペコードと前記第２の解読されたオペコードと前記命令ビットのセットとを組合わせて、前記解読されたアーキテクチャ化命令を形成することを特徴とする。
【００２１】
更に、本発明は、暗号化されたアーキテクチャ化命令をフェッチするフェッチ手段と、前記暗号化されたアーキテクチャ化命令を１以上の暗号化オペコードと命令ビットにセットとに分離する分離手段と、複数のモードの一つを使って前記暗号化されたオペコードを解読して、１以上の解読されたオペコードを形成する解読手段と、前記解読されたオペコードと前記命令ビットのセットを組合わせて、解読されたアーキテクチャ化命令を形成する組合わせ手段と、前記解読されたアーキテクチャ化命令を命令実行ユニットに渡すパス手段とを備える攻撃を阻止するための装置である。
【００２２】
本発明の特徴と考えられる新規な構成は添付された特許請求の範囲に示されている。しかしながら、本発明自身は、最適な使用形態、更に目的及びその利点とともに、続く詳細な説明を参照して、添付図面に関連して読むと最もよく理解できる。
【発明を実施するための最良の形態】
【００２３】
特に図１を参照すると、本発明を実行するデータ処理システムの図は、本発明の好ましい実施例に従って描かれている。コンピュータ１００は、システム１０２、ビデオ表示端末１０４、キーボード１０６、フロッピー・ドライブ及び他の永久的記録かつ取出し可能なストレージ媒体、ストレッジ・デバイス１０８、マウス１１０を含むように示されている。追加的な入力デバイス、例えば、ジョイスティク、タッチパッド、タッチ・スクリーン、トラックボール、マイクロフォーンなどを、パーソナル・コンピュータ１００が含んでもよい。コンピュータ１００は、適切などんなコンピュータ（IBMの製品である例えばIBM eServerTM またはインテリステーション（IntelliStation?））を使用して、を実行してもよい。図は１つのコンピュータを示しているけれども、本発明の他の実施例が、他のタイプのデータ処理システム（data processing system）、例えばネットワーク・コンピュータにおいて実行されてもよい。コンピュータ１００は好ましくは、コンピュータ１００内にオペレーション内にコンピュータ可読可能な媒体に存在するシステム・ソフトウエアによって実行されるGUI（graphical user interface）を含んでもよい。
【００２４】
図２を参照と、本発明を実装できるデータ処理システムのブロック図が示される。データ処理システム２００は、本発明の処理を実行するコードまたは命令が存在する（locate）例えば図１のコンピュータ１００の１つの実施例である。データ処理システム２００は、PCI（peripheral component interconnect）バス・アーキテクチャを使用する。図示された実施例は、PCIバスを使用するが、AGP（Accelerated Graphics Port）やISA（Industry Standard Architecture）など他のバス・アーキテクチャを使用できる。プロセッサ２０２とメイン・メモリ２０４は、PCIブリッジ２０８を介してPCIローカル・バス２０６に接続される。PCIブリッジ２０８は、プロセッサ２０２のために統合メモリ・コントローラ（integrated memory controller）とキャッシュ・メモリを含んでもよい。PCIローカル・バス２０６への追加の接続を、直接コンポーネント相互接続を介して、または、増設（add-in）コネクタを介して、行うことができる。
【００２５】
図示された実施例において、LAN（local area network）アダプタ２１０、SCSI（small computer system interface）ホスト・バス・アダプタ２１２、及び、拡張バス・インターフェース２１４は、直接コンポーネント接続により、ＰＣＩローカル・バス２０６に接続される。対照的に、オーディオ・アダプタ２１６、グラフィック・アダプタ２１８、及び、オーディオ／ビデオ・アダプタ２１９は、ＰＣＩローカル・バス２０６に、増設（add-in）ボードにより、拡張スロットに接続される。拡張バス・インターフェース２１４は、キーボード＆マウス・アダプタ２２０、モデム２２２、及び、追加メモリ２２４のための接続を与える。ＳＣＳＩホスト・バス２１２は、ハードディスク・ドライブ２２６、テープ・ドライブ２２８、ＣＤ−ＲＯＭドライブ２３０のための接続を与える。典型的なＰＣＩローカル・バスの実装（implementations）は、３又は４つのＰＣＩ接続拡張スロット又は増設（add-in）コネクタをサポートする。
【００２６】
オペレーティング・システムは、プロセッサ２０２上で駆動し、図２のデータ処理システム２００内で様々なコンポーネントを調整してその制御を提供するために使用される。オペレーティング・システムは商業的にはWindows XP（登録商標）  （マイクロソフト社から提供される）を確保してもよい。オブジェクト指向プログラミング・システム（例えばＪａｖａ（登録商標）プログラミング・システム）は、オペレーティング・システムに関連して駆動（ラン）してもよく、Ｊａｖａ（登録商標）プログラミング又はアプリケーションから、データ処理システム２００条で実行されているオペレーティング・システムをコールしてもよい。オペレーティング・システムのための命令、オブジェクト指向プログラミング・システム、及び、アプリケーション又はプログラムは、記憶デバイス（例えばディスク・ドライブ２２６）に配置されて、プロセッサ２０２による実行のためにメイン・メモリ２０４にロードされてもよい。
【００２７】
当業者なら図２のハードウエアは本発明の実装に応じて変更可能である評価できるはずである。他の内部ハードウエア又は周辺デバイス（例えばフラッシュＲＯＭに同等な不揮発性メモリ又は光ディスクなど）が、図２のハードに追加又はその代わりとして使用できる。また、本発明の処理は、マルチプロセッサ・データ処理システムにも適用できる。
【００２８】
例えば、データ処理システム２００は、選択的にネットワーク・コンピュータとして構成される場合、ＳＣＳＩホスト・バス・アダプタ２１２、ハードディスク・ドライブ２２６、テープ・ドライブ２２８、及びＣＤ−ＲＯＭ２３０を含まなくてもよい。この場合、コンピュータは、クライアント・コンピュータと呼ばれるために、幾つかのタイプのネットワーク通信インターフェース（例えば、ＬＡＮアダプタ２１０、モデム２２２など）を含む。別の実施例として、データ処理システム２００は、幾つかのタイプのネットワーク通信インターフェースを含むかどうかに拘わらず、幾つかのタイプのネットワーク通信インターフェースに依存せずにブート可能（bootable）に構成されたスタンドアロン（stand-alone）システムであってもよい。更なる実施例として、データ処理システム２００は、オペレーティング・システムのファイル及び／又はユーザ生成データを保管するための不揮発性メモリＲＯＭ及び／又はフラッシュＲＯＭを有するように構成されたＰＤＡ（personal digital assistant）であってもよい。
【００２９】
図２に示された実施例及び上述の実施例は、アーキテクチャ的限定（architectural limitations.）を意味しない。例えば、データ処理システム２００は、ＰＤＡの形態をとるものの追加してノートブック・コンピュータ又はハンドヘルド・コンピュータであってもよい。データ処理システム２００は、キオスク（kiosk）またはウェブ装置（Web appliance）でも可能である。
【００３０】
本発明の処理（processes）は、コンピュータに実装された命令（instructions）を使用してプロセッサ２０２により実行される。その命令は、メモリ（例えばメイン・メモリ２０４、メモリ２２４、または複数の周辺デバイス２２６―２３０）に置かれている。
【００３１】
図３を参照すると、本発明を実行するデータ処理システムのブロック図が示される。データ処理システム３００は、本発明の処理を実行するコードまたは命令を内部に配置する例えば図１のコンピュータの実施例である。図示された実施例において、データ処理システム３００は、ノース・ブリッジとメモリコントローラ・ハブ（ＭＣＨ）３０８及びサウス・ブリッジとＩ／Ｏコントローラ・ハブ（ＩＣＨ）３１０を含むハブ・アーキテクチャ（hub architecture）を使用する。
プロセッサ３０２、メイン・メモリ３０４、グラフィック・プロセッサ３１８はＭＣＨ３０８に接続される。グラフィック・プロセッサ３１８はそのＭＣＨに、ＡＧＰ（accelerated graphics port ）を介して接続できる。
【００３２】
図示した実施例において、ＬＡＮアダプタ３１２、オーディオ・アダプタ３１６、キーボード＆マウス・アダプタ３２０、モデム３２２、ＲＯＭ３２４、ハードディスク・ドライブ（ＨＤＤ）３２６、ＣＤ−ＲＯＭドライブ３３０、ＵＳＢ（universal serial bus）ポート３３２、他の通信ポート３３２、及び、ＰＣＩ／ＰＣＩｅデバイス３３４がＩＣＨに接続できる。ＰＣＩ／ＰＣＩｅデバイスは、例えば、イーサネット（登録商標）アダプタ、ノートブックのための増設（add-in）カードを含むことができる。ＰＣＩｅ使用しないが、ＰＣＩは、カードバス・コントローラを使用する。ＲＯＭ３２４は、例えば、フラッシュ・バイナリＩ／Ｏシステム（ＢＯＩＳ）でもよい。ハードディスク・ドライブ３２６及びＣＤ−ＲＯＭドライブ３３０は、例えば、ＩＤＥ（integrated drive electronics）またはＳＡＴＡ（serial advanced technology attachment）インターフェースを使用できる。  ＳＩＯ（super I/O）デバイスをＩＣＨ３１０に接続できる。
【００３３】
オペレーティング・システムは、プロセッサ２０２上で駆動し、図３のデータ処理システム３００内で様々なコンポーネントを調整（coordinate）してその制御を提供する（provide control）ために使用される。オペレーティング・システムは、商業的にはWindows XP（登録商標）  （マイクロソフト社から提供される）を確保してもよい。オブジェクト指向プログラミング・システム（例えばＪａｖａ（登録商標） プログラミング・システム）は、オペレーティング・システムに関連して駆動でき、Ｊａｖａ（登録商標）プログラミング又はアプリケーションから、データ処理システム３００上で実行されているオペレーティング・システムをコールできる。
【００３４】
オペレーティング・システムのための命令（Instructions）、オブジェクト指向プログラミング・システム、及び、アプリケーション又はプログラムは、記憶デバイス（例えばディスク・ドライブ２２６）に配置されて、プロセッサ３０２による実行のためにメイン・メモリ３０４にロードされてもよい。本発明の処理は、コンピュータに実装された命令（instructions）を使用してプロセッサ３０２により実行される。その命令は、メモリ（例えばメイン・メモリ３０４、メモリ３２４、または複数の周辺デバイス３２６及び３３０）に置かれている。
【００３５】
当業者なら図３のハードウエアは本発明の実装に応じて変更可能である評価できる。他の内部ハードウエア又は周辺デバイス（例えばフラッシュ・メモリに同等な不揮発性メモリ又は光ディスクなど）が、図２のハードに追加又はその代わりとして使用できる。また、本発明の処理は、マルチプロセッサ・データ処理システムにも適用できる。
【００３６】
例えば、データ処理システム３００は、オペレーティング・システムのファイル及び／又はユーザ生成データを保管するための不揮発性メモリＲＯＭ及び／又はフラッシュ・メモリを有するように構成されたＰＤＡ（personal digital assistant）であってもよい。図３に示された実施例及び上述の実施例は、アーキテクチャ的限定（architectural limitations.）を意味しない。例えば、データ処理システム３００は、ＰＤＡの形態をとるものの追加としてタブレット・コンピュータ、ラップトップ・コンピュータ、又はテレフォン・デバイスであってもよい。
【００３７】
本発明は、攻撃を開始するウイルスまたはワームの能力（ability）はオペレーティング・システムや命令アーキテクチャに依存と、認識している。これらのコンポーネントのどれかを変えることにより、攻撃方法を妥協させる。このような攻撃の顕著な依存性はプロセッサ命令アーキテクチャに関するものであるから、非インテルアーキテクチャを使用するデータ処理システムは、直接的はインテルアーキテクチャに対して開始された攻撃の影響を受け（susceptible）ない。好ましい実施例として、この発明はプログラム可能な暗号解読ユニット（decryption unit）をＬ２とＬ１命令キャッシュの間の命令パイプライン（instruction pipeline）の中に与える。このプログラム可能な暗号解読ユニットは、アーキテクチャ化された命令がＬ１命令キャッシュに入ると、解読命令（instruction decryption）を実行する。
【００３８】
図４を参照すると、本発明の好ましい実施例に従って、プログラム可能暗号解読ユニットに使用されるコンポーネントを図示したダイアグラムが描かれている。図示されているように、信頼させるコンピュータ・ベース（ＴＣＢ：trusted computer base）４００はトラステッド・ローダ（trusted loader）４０２を含み、そのローダは通常ディスク４０８に配置されたコード・イメージ４１０に基づいてロード／リンクのオペレーション４０４を実行する。トラステッド・コンピュータ・ベース（ＴＣＢ）は、信頼されるコンピュータ・システムの部分である。  トラステッド・コンピュータ・ベース４００は、悪質なコード（例えばウイルス、ワームなど）のいない、信頼されるコンピュータ処理システムの部分である。
【００３９】
命令（インストラクション）が暗号解読（decryption）のために選択された時、その命令は、ＴＣＢ４００のリロケーション・マップ４０６介して配置される。この典型的な実施例において、命令がメモリ４１２中のＬ２データと命令キャッシュ４１６からフェチされ、メモリ暗号解読アレイ（memory decryption array）４１４を使って暗号解読される。メモリ暗号アレイ４１４は図６及び７において説明される方法を使用して、その命令（インストラクション）を解読する。つぎに、暗号化された命令（encrypted instructions）が、命令実行ユニット（例えばプロセッサ４１８またはＬ１キャシュ４２０）により受取られる。しかし、命令実行ユニットは暗号解読された命令（decrypted instruction）を受取ることができる。 トラステッド・ローダ４０２によりロードされない命令ストリーム（any instruction stream）は、正しい符号化（encoding）を受けることはできず、暗号解読が不法な命令割込み（illegal instruction interrupt.）を引き起こすになる。 これは、セキュリティ・モデル（即ちシステム脆弱性の開発（exploitation of system vulnerability）を通してロードされたコードコード）の外側で落ちた、ロードされ実行されたどんなコードからＴＣＢ４００を保護する。更に、本発明は、権限レベル（privilege level）を変更する脆弱性を開発するコードである権限エスカレーション（privilege escalation）を阻止する。
【００４０】
図５を参照すると、第１のオペコードのための簡単化したプログラム可能暗号解読ユニット（decryption unit ）５００は、本発明の好適な実施例に従って描かれる。 第１のメモリアレイは、プログラムされてＬメモリ・アレイキャッシュ５０４からフェッチされた命令（instructions）をＬ１命令・キャッシュ５０２に暗号解読されて送られる。命令が命令Ｌ２データと命令キャッシュ５０４からＬ１命令・キャッシュ５０２へフェッチされると、第１のオペコード５０８のためのオペコード・ビット０−５が第１のメモリ・アレイのためのアドレス・ビット０−５として使われる。第１のメモリ・アレイ５０６はアドレス・ビット０−５を受取るように構成され、そのビットを暗号解読し、アウトプット・データビット０−５を暗号解読された第１のオペコード５１０に与える。命令・ビット６−３１（５１４）に直接渡される。
【００４１】
第１のメモリ・アレイ５０６は、より大きなメモリ・アレイの一部分でもよい。
大きなメモリ・アレイの一部分として、第１のメモリ・アレイ５０６はハイパーバイザ（hypervisor）モード、スーパーバイザ（supervisor）モードまたは、ユーザ・モードにおいて動作し得る。これらのモードまたはレベルは、オペレーティング・システムとハイパーバイザ脆弱性（vulnerability）の開発（exploitation）を介して権限拡大（privilege escalation）を阻止する権限レベル暗号解読（privilege level decryption）を可能にする。更に、デフォルト・モード（図示せず）は、命令が暗号解読なしに渡（pass）することを可能にする。第１のメモリ・アレイ５０６が異なる時間でプログラムされ、各々権限（privilege）モードまたはレベルが上記のレベルによりプログラム可能である。ハイパーバイザ・モードはＳＣＯＭ（Serial COMmunications）ポートを介してして、ハイパーバイザの実行の前にＦｉｐＳ（Flexible i&p Series）コードによりプログラムされる。スーパーバイザ・モードは、オペレーティング・システムがプロセッサ上で実行される前に、プログラムされる。そして、ユーザ・モードは、ユーザ・モードの実施の前に、スーパーバイザから、プログラムされる。第１のメモリ・アレイ５０６はどのモードで動作してもよい。命令が、Ｌ１命令キャッシュ５０２に入る前に、暗号解読されるから、その命令キャッシュの動作の有利点は維持される。
【００４２】
図６を参照すると、第１及び第２のオペコード暗号解読ユニットを示すダイアグラムが本発明の好適な実施例に従って描かれている。  例えば、密な第１のオペコード空間（例えばPowerTMアーキテクチャ）を有するアーキテクチャにおいて、洗練された攻撃を阻止するために必要なSOF（Strength of Function）を増加させることをマッピングする（mapping）第２のオペコードを使用することは必要である。
【００４３】
オペコード暗号解読ユニット６００の第１のメモリ・アレイ６０６及び第２のメモリ・アレイ６０８は、プログラムされてＬ2データと命令・キャッシュ６０４からフェッチされた命令を解読（decrypt）してＬ１命令・キャッシュ６０２に送る。命令がＬ２データと命令キャッシュ６０４からフェッチされると、 第１のオペコード６１０のためのオペコード・ビット０−５と第２のオペコード６１２のためのオペコード６１２が、第１のメモリ・アレイ６０６と第２のメモリ・アレイ６０８のためのアドレス・ビットとして使用される。第１のメモリ・アレイ６０６はアドレス・ビット０−５を受取り、そのビットを解読し、アウトプット・データビット０−５を解読し第１のオペコード６１４に与えるように構成される。 第２のメモリ・アレイ６０８は、アドレス・ビット２１−３０を受取り、そのビットを解読し、アウトプット・データビット２１−３０を解読し第２のオペコード６１６に与えるように構成される。この例において、第２のオペコード６１２は、第１のオペコード６１０がオペコードの１６進表示である0x31と等しいときにのみ使用される。第２のオペコード６１２は、第２のオペコード６１２空間が非常にわずか（sparse）であり、５０％以下で命令が多くの順列（permutations）を与える時にのみ使用できる。命令ビット６１８及び６２０は解読（decrypted）されず、直接に暗号化ビット（encryption bits）６２２及び６２４に渡される。
【００４４】
図６はメモリ・アレイイを描く。それはアドレス線、第１のオペコード６１０及び第２オペコード６１２を有し、Ｌ２と命令・キャッシュ６０４により提示される（presented）データにより駆動される。そのデータがアドレス線上にラッチされるときに、データ・バスが暗号解読命令（decrypt instructions）を提示する。これら暗号解読命令の提示（presentation）は、第１のオペコード６１０ビット０―５が第１のメモリ・アレイ６０６に、及び第２オペコード６１２ビット２１−３０が第２のメモリ・アレイ６０８に駆動されるように図示されている。
【００４５】
これら図の実施例において、第１のメモリ・アレイ６０６及び第２のメモリ・アレイ６０８は、３つの部分（セクション）、即ち、ハイパーバイザ・モード、スーパーバイザ・モード、ユーザ・モードとして、配置される。これが、オペレーティング・システムまたはハイパーバイザ脆弱性（vulnerability）の  開拓exploitation）を通しての権限拡大（privilege escalation）を阻止する権限レベル暗号解読（privilege level decryption）を可能にする。更に、デフォルト・モード（図示せず）は、命令を解読しないでパス（ｐａｓｓ）することを可能にする。 
第１のメモリ・アレイ６０６及び第２のメモリ・アレイ６０８が異なる時間でプログラムされ、各々権限（privilege）レベルが上記のレベルによりプログラム可能である。 ハイパーバイザ・モードはＳＣＯＭポートを経由（via）して、ハイパーバイザの実行の前にＦｉｐＳ（Flexible i&p Series）コードによりプログラムされる。スーパーバイザ・モードは、オペレーティング・システムがプロセッサ上で実行する前に、プログラムされる。そして、ユーザ・モードは、ユーザ・モードの実施の前に、スーパーバイザからプログラムされる。第１のメモリ・アレイ６０６及び第２のメモリ・アレイ６０８は、どのモードまたはそのモードの組合せにおいて動作できる。命令がＬ１命令（インストラクション）キャッシュ６０２に入る前に、解読される（decrypted）から、その命令キャッシュの動作の有利点は維持される。
【００４６】
従って、本発明は従来回避できなかったある種のコンピュータ攻撃の阻止のためのオペレーティング・システムのための方法及び装置を提供する。プロセッサに対して現行の命令セット（instruction set）を使用して命令解読（instruction decryption）を実装するための効果的な方法が提供される。プロセッサ・アーキテクチャにおいて、プロセッサ実行時間へ影響を制限するような 実質的な障害を解決するために取り組んでいる。 命令実行時間は、プロセッサ・コアにおいて変更はない。追加の処理が既存のオペレーションにオーバラップされ、それ故プロセッサのスループットへの影響（impact on processor throughput）は最小化（minimal）される。
【００４７】
本発明の説明は図式化と説明の目的のために示されたが、開示された形式に本発明を限定するものではない。多くの修正及び変更は当業者ならあきらかである。
本発明の原理、実際的な適用、及び、予期される特定使用に適する様々な変更を最善に説明するために、実施例は選択され説明されたにすぎない。
【図面の簡単な説明】
【００４８】
【図１】本発明を実施するデータ処理システムを示した図である。
【図２】本発明の好ましい実施例に従うサーバとして実施され得るデータ処理システムである。
【図３】本発明を実施するデータ処理システムのブロック図である。
【図４】命令パイプラインのプログラマブルム暗号解読ユニットにおいて使用されるコンポーネントを示した図である。
【図５】本発明の好ましい実施例に従って示された、第１のオペコードのための簡単化したプログラマブル暗号解読ユニットを示したダイアグラムである。
【図６】本発明の好ましい実施例に従って示された、第１の（primary）及び第２の（secondary ）オペコード暗号解読ユニットを示したダイアグラムである。
【符号の説明】
【００４９】
１００  コンピュータ
２００  データ処理システム
２０２  プロセッサ
３００  データ処理システム
３０２  プロセッサ
４００  トラステッド・コンピュータ・ベース
４１８  プロセッサ
５００プログラム可能暗号解読ユニット
５０４  Ｌ２データと命令キャッシュ
５０６  第１のオペコード
５１０  暗号解読オペコード・ビット０―５
６００  オペコード解読ユニット
６０４  Ｌ２データと命令キャッシュ
６０６  第１のオペコード・メモリ暗号解読アレイ
６１０  第１のオペコード・ビット０−５
【図１】
2006309766.tif 000003
【図２】
2006309766.tif 000004
【図３】
2006309766.tif 000005
【図４】
2006309766.tif 000006
【図５】
2006309766.tif 000007
【図６】
2006309766.tif 000008