(57)【要約】      （修正有）【課題】プログラム自体およびプログラムが存在する環境の両方の観点から、コンピュータプログラムを認証できるようにする。【解決手段】コンピューティングデバイス１６上のプログラムを、コンピューティングデバイス１６に対しローカルまたはリモートのリソースに対して認証するために、プログラムに対応する格納されたプログラムセキュリティ識別子（ＰＳＩＤ）が取り出され、格納されたＰＳＩＤは、プログラム自体、プログラムの実行設定、ならびに、プログラムに提供される任意の入力および初期化を考慮に入れた情報を含んでいる。ＰＳＩＤは、ローカルソースから得られたのと同じ情報に基づいて再構成され、格納されたＰＳＩＤと再構成されたＰＳＩＤは、一致が存在するかどうかを決定するために比較される。その場合、プログラムは、承認されたセットの条件に従って信頼される方法で動作すると結論付けられうる。【選択図】図２
2006244508.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上で動作するプログラムと組み合わせた方法において、前記コンピューティングデバイスに対しローカルまたはリモートのリソースに対して前記プログラムを認証するための方法であって、
前記プログラムに対応する格納されたプログラムセキュリティ識別子（ＰＳＩＤ）を取り出すステップであって、前記格納されたＰＳＩＤは、前記プログラム自体、前記プログラムの実行設定、および前記プログラムに提供される任意の入力および初期化を考慮に入れた情報を含み、それにより、前記ＰＳＩＤは、信頼される方法で前記プログラムを動作するための承認されたセットの条件を表すステップと、
ローカルソースから得られるのと同じ情報に基づいて前記ＰＳＩＤを再構成するステップと、
前記格納されたＰＳＩＤと再構成されたＰＳＩＤとを一致が存在するかどうかを決定するために比較するステップと、
一致が存在すると決定された場合、前記承認されたセットの条件に従って前記信頼される方法で前記プログラムが動作すると結論付けるステップと、
一致が存在しないと決定された場合、前記承認されたセットの条件に従って前記信頼される方法で前記プログラムが動作しないと結論付けるステップとを含むことを特徴とする方法。
【請求項２】
認証される前記プログラムは、前記コンピューティングデバイスを表すハードウェアに最終的に依存する複数の層の他のプログラムによってホストされることを特徴とする請求項１に記載の方法。
【請求項３】
認証される前記プログラムは、前記コンピューティングデバイスを表すハードウェアに最終的に依存する複数の層の他のプログラムによってホストされ、前記方法は、認証される前記プログラムをホストし、かつ前記ハードウェアに向かって次の層にあるプログラムによって実行されることを特徴とする請求項１に記載の方法。
【請求項４】
前記プログラム自体を考慮に入れた情報を含む前記格納されたＰＳＩＤを取り出すステップを含み、前記情報は、前記プログラムに対応するデジタル証明書と前記プログラムに対応するマニホールドの少なくとも一方を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記プログラムの前記実行設定を考慮に入れた情報を含む前記格納されたＰＳＩＤを取り出すステップを含み、前記情報は、認証される前記プログラムを直接的または間接的にホストしている他のプログラム、前記コンピューティングデバイス上で動作することになっている他のプログラム、および、前記コンピューティングデバイス上で動作しないことになっている他のプログラムの識別情報のうち少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記プログラムに対する前記入力を考慮に入れた情報を含む前記格納されたＰＳＩＤを取り出すステップを含み、前記情報は、前記プログラムに対する承認されたセットの入力のうち少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項７】
リストとハッシュのうち一方として示された前記情報を含む前記格納されたＰＳＩＤを取り出すステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
ローカルソースから得られるのと同じ情報、および、実行される一連のステップとこのような一連のステップを実行する実行可能ファイルとのうち少なくとも一方を含む再構成命令のセットに基づいて、前記ＰＳＩＤを再構成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
コンピューティングデバイス上で動作するプログラムと組み合わせた方法において、前記コンピューティングデバイスに対しローカルまたはリモートのリソースに対して前記プログラムを認証し、認証される前記プログラムは、前記コンピューティングデバイスを表すハードウェアに最終的に依存するホストプログラムの複数の層によってホストされる方法であって、
認証される各前記プログラムおよび少なくともいくつかの層のそれぞれにある前記ホストプログラムについて、前記プログラムに対応するプログラムセキュリティ識別子（ＰＳＩＤ）を確立するステップであって、前記確立されたＰＳＩＤは、前記プログラム自体、前記プログラムの実行設定、および前記プログラムに提供される任意の入力および初期化を考慮に入れた情報を含み、それにより、前記ＰＳＩＤは、信頼される方法で前記プログラムを動作するための承認されたセットの条件を表すステップと、
認証される前記プログラムのセキュリティ環境全体を表す合成ＰＳＩＤ（ＣＰＳＩＤ）を作成するために、前記確立されたＰＳＩＤのすべてを組み合わせるステップと、
前記作成されたＣＰＳＩＤを前記リソースに送達し、それにより、前記リソースが、前記送達されたＣＰＳＩＤを検討し、前記検討に少なくとも部分的に基づいて、認証される前記プログラムを信頼するかどうかを決定するステップとを含むことを特徴とする方法。
【請求項１０】
特定のプログラムに対するＰＳＩＤを、前記特定のプログラムから前記ハードウェアに向かって次の層にあるホストプログラムによって確立するステップを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
特定のプログラムに対する前記ＰＳＩＤを確立するステップは、前記プログラムに対応する格納されたＰＳＩＤを取り出すステップと、ローカルソースから得られるのと同じ情報に基づいて前記取り出したＰＳＩＤを再構成するステップと、一致が存在することを決定するために、前記格納されたＰＳＩＤと再構成されたＰＳＩＤとを比較するステップを含むことを特徴とする請求項９に記載の方法。
【請求項１２】
認証される各前記プログラムおよび各層にある前記ホストプログラムについて、前記プログラムに対応するプログラムセキュリティ識別子（ＰＳＩＤ）を確立するステップであって、前記格納されたＰＳＩＤは、前記プログラム自体、前記プログラムの実行設定、および前記プログラムに提供される任意の入力および初期化を考慮に入れた情報を含み、それにより、前記ＰＳＩＤは、信頼される方法で前記プログラムを動作するための承認されたセットの条件を表すステップと、
認証される前記プログラムのセキュリティ環境全体を表す前記ＣＰＳＩＤを作成するために、前記確立されたＰＳＩＤのすべてを組み合わせるステップとを含むことを特徴とする請求項９に記載の方法。
【請求項１３】
前記確立されたＰＳＩＤの順序付きリストと、前記確立されたＰＳＩＤのハッシュと、前記確立されたＰＳＩＤに基づいた数列の結果とのうち１つとして、ＣＰＳＩＤを作成するために、前記確立されたＰＳＩＤのすべてを組み合わせるステップを含むことを特徴とする請求項９に記載の方法。
【請求項１４】
前記プログラム自体を考慮に入れる情報を含むように各プログラムの前記ＰＳＩＤを確立するステップを含み、前記情報は、前記プログラムに対応するデジタル証明書と前記プログラムに対応するマニホールドの少なくとも一方を含むことを特徴とする請求項９に記載の方法。
【請求項１５】
前記プログラムの前記実行設定を考慮に入れる情報を含むように各プログラムの前記ＰＳＩＤを確立するステップを含み、前記情報は、認証される前記プログラムを直接的または間接的にホストしている他のプログラム、前記コンピューティングデバイス上で動作することになっている他のプログラム、および、前記コンピューティングデバイス上で動作しないことになっている他のプログラムの識別情報のうち少なくとも１つを含むことを特徴とする請求項９に記載の方法。
【請求項１６】
前記プログラムに対する前記入力を考慮に入れる情報を含むように各プログラムの前記ＰＳＩＤを確立するステップを含み、前記情報は、前記プログラムに対する承認されたセットの入力のうち少なくとも１つを含むことを特徴とする請求項９に記載の方法。
【請求項１７】
前記ハードウェアは、前記ＣＰＳＩＤを作成するために前記確立されたＰＳＩＤのすべてを組み合わせ、前記作成されたＣＰＳＩＤを前記リソースに送達する信頼モジュールを含むことを特徴とする請求項９に記載の方法。
【請求項１８】
前記ＣＰＳＩＤを作成するために前記確立されたＰＳＩＤのすべてを組み合わせるステップは、
前記ＣＰＳＩＤを保持するために指定されたメモリ位置をクリアするステップと、
順序立って、前記ＣＰＳＩＤに対する各確立されたＰＳＩＤを受け取るステップと、
各受け取られるＰＳＩＤに対して、反復的方法で、
前記受け取られたＰＳＩＤを、前記メモリ位置の現在の内容を取り出す関数ｆに適用し、
前記受け取られたＰＳＩＤを、所定の方法で、前記メモリ位置の前記取り出された現在の内容と組み合わせ、
前記組合せに対して数学的操作を実行して結果を生成し、
前記操作の前記結果を前記メモリ位置に配置するステップとを含み、
したがって、すべてのＰＳＩＤの処理後に、前記メモリ位置は前記ＣＰＳＩＤを含むことを特徴とする請求項９に記載の方法。
【請求項１９】
前記受け取られたＰＳＩＤを、前記メモリ位置の前記取り出された現在の内容と連結によって組み合わせるステップを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記結果を生成するために、前記組合せに対してハッシュ関数を実行するステップを含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム自体だけでなくそのプログラムが存在する環境に基づいてプログラムが認証されることを可能にするためのアーキテクチャおよび方法に関する。より具体的には、本発明は、プログラムの認証が、プログラムとコンピューティングデバイスのような基礎をなすハードウェアの部分との間のソフトウェアの各層の認証を含む、アーキテクチャおよび方法に関する。
【背景技術】
【０００２】
コンピューティングデバイスなどのために開発されたようなソフトウェアプログラムまたはアプリケーションなど（以下に「プログラム」と呼ぶ）は、時には、そのコンピューティングデバイスに対してローカルまたはリモートの他のエンティティ（ｅｎｔｉｔｙ）に認証されることを必要とすることがある。一例では、リモートバンキングサーバ（ｒｅｍｏｔｅ  ｂａｎｋｉｎｇ  ｓｅｒｖｅｒ）と対話するバンキングプログラムは、悪意ある、または極悪な目的のためにバンキングプログラムを装う何らかの他のプログラムではなく、実際にバンキングプログラムであるとしてバンキングサーバに認証される必要があることがある。もう１つの例では、コンピューティングデバイス上の権利管理プログラムと対話するオーディオレンダリング（ｒｅｎｄｅｒｉｎｇ）プログラムは、悪意ある、または極悪な目的のためにオーディオプログラムを装おう何らかの他のプログラムではなく、実際にオーディオレンダリングプログラムとして権利管理プログラムに認証される必要があることがある。
【０００３】
プログラム認証が多くの他の状況においても重要であることは理解されるだろう。例として、次のような状況がある。ローカルユーザは、自身が、パスワードを正当なプログラムに入力しており、パスワードを盗むように設計されたプログラムに入力しているのではないという保証を必要とする。プログラムを走らせるプラットフォームは、プログラムを実行前に、例えばそのプログラムに対する証明書などの認証トークン（ｔｏｋｅｎ）を要求することがある。組織は、その各従業員または他の個人が、特定の承認された構成を備えたオペレーティングシステムと共にコンピューティングデバイスを使用することを要求することがある。そのようなオペレーティングシステムは、特定の管理者ポリシに従うドライバまたはプログラムのみをロードおよび実行するように構成されることがある。
【０００４】
プログラム認証のための多数の技術が存在し、認証データが、多くの異なるアクセスコントロールの目的に使用できることは理解されるだろう。しかしながら、そして重要なことであるが、プログラム自体を認証することは、プログラムに信頼を与えるかどうかを決定する目的のためには、常に十分なわけではない。特に、プログラムに信頼を与える目的でプログラムを認証することは、プログラムが存在する設定を認証することも含むべきであり、さらに、プログラムが動作する基礎となるプラットフォームを認証することを含むべきである。たとえば、コンピューティングデバイスのハードウェア上で直接実行されているオペレーティングシステムのセキュリティ状態は、そうしたハードウェア上で直接実行されるバーチャルマシン上で実行されているようなオペレーティングシステムのセキュリティ状態とは異なる。
【０００５】
特に、バーチャルマシン上で実行されているオペレーティングシステムのセキュリティ状態は、バーチャルマシン上で実行されている他のオペレーティングシステムが、当該オペレーティングシステムおよびそれの実行フローを検査し修正することが可能でありうる事実を考慮に入れるすべきである。このような状況では、当該オペレーティングシステムに信頼を付与すべきかどうかの決定は、バーチャルマシンに信頼を与えるかどうかの決定を含むべきである。より一般的には、プログラムに信頼を与えるかどうかの決定は、プログラムの実行環境に信頼を与えるかどうかの決定を含むべきであり、それは、実行環境がプログラムの実行状態に影響を与えるためである。実行環境は、ハードウェアであっても、他のプログラムによって確立されるものでも、またはその両方でもよいことは理解されるだろう。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、プログラム自体およびそのようなプログラムが存在する環境の両方の観点から、コンピュータプログラムを認証することができる、方法およびメカニズムが求められる。より具体的には、プログラム自体の認証は、プログラム自体が実行される設定および状況、ならびにプログラムに供給される入力についての考慮を含む、方法およびメカニズムが求められる。さらに、プログラムの認証は、プログラムが動作する基礎となるプラットフォームの認証を含む、方法およびメカニズムが求められる。
【課題を解決するための手段】
【０００７】
上述の必要は、本発明によって少なくとも部分的に満たされ、本発明では、方法が、コンピュータデバイス上で動作するプログラムと組み合わされて提供され、この方法は、そのコンピュータデバイスにとってローカルまたはリモートのリソースに対して、プログラムを認証する。この方法では、プログラムに対応する格納されたＰＳＩＤ（ｐｒｏｇｒａｍ  ｓｅｃｕｒｉｔｙ  ｉｄｅｎｔｉｆｉｅｒ）が取り出され、格納されたＰＳＩＤは、プログラム自体、プログラムの実行設定、ならびにプログラムに提供される任意の入力および初期設定を考慮に入れた情報を含む。したがって、ＰＳＩＤは、信頼される方法でプログラムを動作させるための承認されたセットの条件を表す。
【０００８】
ＰＳＩＤは、ローカルソースから得られるのと同じ情報に基づいて再構成され、格納されたＰＳＩＤと再構築されたＰＳＩＤが、一致が存在するかどうかを決定するために比較される。一致が存在すると決定された場合、プログラムは、承認されたセットの条件に従って、信頼される形で動作すると結論付けることができる。同様に、一致が存在しないと決定された場合、プログラムは、承認されたセットの条件に従って、信頼されるやり方で動作していないと結論付けることができる。
【０００９】
さらに、認証されるプログラムが、コンピューティングデバイスを表すハードウェアに最終的に依存するホスティングプログラムの複数の層によってホストされている、プログラムを認証するための方法が提供される。このような方法では、認証されるプログラムおよび少なくともいくつかの層のそれぞれのホスティングプログラムごとに、プログラムに対応するＰＳＩＤが確立され、認証されるプログラムのセキュリティ環境全体を表す合成ＰＳＩＤ（ＣＰＳＩＤ）を作成するために、確立されたＰＳＩＤのすべてが組み合わされる。作成されたＣＰＳＩＤは、リソースに送達され、それにより、かかるリソースは、このような送達されたＣＰＳＩＤを検討し、このような検討に少なくとも部分的に基づいて、認証されるプログラムを信頼するかどうかを決定する。
【００１０】
上記の要約および以下の本発明の実施形態の詳細な説明は、添付の図面と併せて読むことでより良く理解されるだろう。本発明を例示する目的で、図面では、現在のところ好ましい実施形態を示している。しかしながら、本発明は、図示の厳密な構成および手段に限定されないことが理解されるだろう。
【発明を実施するための最良の形態】
【００１１】
コンピュータ環境
図１および以下の議論は、本発明および／またはその部分を実装することができる適切なコンピューティング環境の簡潔な一般的説明を与えるものである。必須ではないが、本発明は、クライアントワークステーションまたはサーバなどのコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈で記述される。一般に、プログラムモジュールには、特定のタスクを実行しまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。さらに、本発明および／またはその部分は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、およびメインフレームコンピュータなどを含む他のコンピュータシステム構成で実施することもできることが理解されるだろう。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、リモートとローカルの両方のメモリ記憶装置に配置することができる。
【００１２】
図１に示すように、例示的汎用コンピューティングシステムは、処理装置１２１、システムメモリ１２２、およびシステムメモリを含む様々なシステムコンポーネントを処理装置１２１に結合するシステムバス１２３を含む、従来のパーソナルコンピュータ１２０または同様のものを含む。システムバス１２３は、任意の様々なバスアーキテクチャを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のいずれかとすることができる。システムメモリは、ＲＯＭ（読取り専用メモリ）１２４、およびＲＡＭ（ランダムアクセスメモリ）１２５を含む。始動時などにパーソナルコンピュータ１２０内の要素間で情報を転送する助けとなる基本ルーチンを含むＢＩＯＳ（基本入出力システム）１２６は、ＲＯＭ１２４に格納されている。
【００１３】
パーソナルコンピュータ１２０はさらに、ハードディスク（図示せず）から読み取りまたそれに書き込むハードディスクドライブ１２７、リムーバブル磁気ディスク１２９から読み取りまたはそれに書き込む磁気ディスクドライブ１２８、ＣＤ‐ＲＯＭまたは他の光媒体のようなリムーバブル光ディスク１３１から読み取りまたはそれに書き込む光ディスクドライブ１３０を含むことができる。ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０はそれぞれ、ハードディスクドライブインターフェース１３２、磁気ディスクドライブインターフェース１３３、および、光ディスクドライブインターフェース１３４によって、システムバス１２３に接続される。これらのドライブおよび関連するコンピュータ可読媒体は、パーソナルコンピュータ１２０のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。
【００１４】
本明細書に記載の例示的環境では、ハードディスク、リムーバブル磁気ディスク１２９、およびリムーバブル光ディスク１３１を使用するが、コンピュータによってアクセス可能なデータを格納することができる他のタイプのコンピュータ可読媒体も、例示的動作環境で使用することができることが理解されるだろう。そのような他のタイプの媒体には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ（Ｂｅｒｎｏｕｌｌｉ  ｃａｒｔｒｉｄｇｅ）、ＲＡＭ（ランダムアクセスメモリ）、およびＲＯＭ（読取り専用メモリ）などが含まれる。
【００１５】
オペレーティングシステム１３５、１つまたは複数のアプリケーションプログラム１３６、他のプログラムモジュール１３７、およびプログラムデータ１３８を含めて多数のプログラムモジュールを、ハードディスク、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４、またはＲＡＭ１２５に格納することができる。ユーザは、キーボード１４０およびポインティングデバイス１４２などの入力装置を介して、コマンドおよび情報をパーソナルコンピュータ１２０に入力することができる。他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、サテライトディスク（ｓａｔｅｌｌｉｔｅ  ｄｉｓｋ）、またはスキャナなどが含まれうる。上記および他の入力装置は、システムバスに結合されたシリアルポートインターフェース１４６を介して処理装置１２１に接続されることが多いが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）など他のインターフェースによっても接続されうる。モニタ１４７または他のタイプの表示装置も、ビデオアダプタ１４８などのインターフェースを介してシステムバス１２３に接続される。モニタ１４７に加え、パーソナルコンピュータは、通常、スピーカやプリンタなど他の出力周辺装置（図示せず）を含む。図１の例示的システムはまた、ホストアダプタ１５５、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）バス１５６、および、ＳＣＳＩバス１５６に接続された外部記憶装置１６２も含む。
【００１６】
パーソナルコンピュータ１２０は、リモートコンピュータ１４９など１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ１４９は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的ネットワークノードとすることができ、図１では、メモリ記憶装置１５０のみを示しているが、通常、パーソナルコンピュータ１２０に関係する上記の要素の多くまたは全てを含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１５１、およびＷＡＮ（広域ネットワーク）１５２を含む。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
【００１７】
ＬＡＮネットワーク環境で使用する場合、パーソナルコンピュータ１２０は、ネットワークインターフェースまたはアダプタ１５３を介してＬＡＮ１５１に接続される。ＷＡＮネットワーク環境で使用する場合、パーソナルコンピュータ１２０は、通常、モデム１５４、または、インターネットなどのＷＡＮ１５２を介して通信を確立する他の手段を含む。モデム１５４は、内蔵モデムでも外部のモデルでもよく、シリアルポートインターフェース１４６を介してシステムバス１２３に接続することができる。ネットワーク環境では、パーソナルコンピュータ１２０に関して示されたプログラムモジュールまたはその部分を、リモートメモリ記憶装置に格納することができる。ここに示したネットワーク接続は、例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することもできることが理解されるだろう。
【００１８】
環境に基づくプログラム認証
本発明は、少なくとも部分的にプログラムの環境に基づいてコンピューティングデバイス上のプログラムを認証することに関する。先に言及したように、このような認証は、例えば、コンピューティングデバイス上で実行されているオペレーティングシステム、およびプログラムに対する入力のような、設定のタイプの考慮を含み、例えば、プログラムとコンピューティングデバイスのハードウェアの間にあるソフトウェアの基礎となる層のそれぞれを認証することによる、プログラムが動作する基礎にあるプラットフォームの認証を含むこともできる。
【００１９】
特に、認証は、コンピューティングデバイスに対してローカルまたはリモートの他のエンティティに提供することができる。したがって、認証は、例えば、プログラムがデータを要求した先のリモートサーバ、または、当該プログラムがリソースを要求した先のローカルプログラムに対して与えることができる。当該プログラム自体が、本発明の精神および範囲から逸脱せずに認証を提供することができるが、認証は、他のプログラムまたはコンピューティングデバイスのハードウェアによって提供される可能性が高く、このような他のプログラムまたはハードウェアは、あるレベルの信頼を認証のターゲットと既に確立している。
【００２０】
図２に見られるように、ターゲットまたはリソース１２（以下に「リソース１２」とする）に認証されるべきプログラム１０は、実際は、特定のコンピューティングデバイス１６を表すハードウェア１４に最終的に依存する１つまたは複数の層の他のプログラム１０によってホストされるプログラム１０である場合が多いことが理解できるだろう。例えば、図示のように、コンピューティングデバイス１６のハードウェア１４は、最初に、第１層または最下層においてプログラム１０としてバーチャルマシンをインスタンス化する（ｉｎｓｔａｎｔｉａｔｅ）ことができ、バーチャルマシン１０は、２番目の上位層におけるプログラム１０としての、２つのインスタンス化されたオペレーティングシステムおよびサービスシステムをサポートするプラットフォームと見なすことができる。同様に、オペレーティングシステム１０の１つは、３番目の上位層におけるプログラム１０としての、ゲーミングシステムおよびネットワークブラウジングシステムをサポートするプラットフォームと見なすことができ、ゲーミングシステム１０は、４番目の最上層におけるプログラム１０としての、特定のゲームをサポートするプラットフォームと見なすことができる。
【００２１】
したがって、ゲーム１０に信頼を与える際に、リソース１２は、ゲーム１０自体だけでなく、ゲーム１０をサポートしているゲーミングシステム１０、ゲーミングシステム１０をサポートしているオペレーティングシステム１０、オペレーティングシステム１０をサポートしているバーチャルマシン１０、およびバーチャルマシン１０をサポートしているハードウェア１４も考慮に入れるべきであることを理解されたい。たとえば、そのようなリソース１２は、ゲーミングシステム１０をサポートしているオペレーティングシステム１０が、リソース１２によってゲーム１０に提供されたリソースのいずれに対しても、他のサポートされたプログラム１０がアクセスするのを防止することを信頼できることを決定したい場合がある。同様に、そのようなリソース１２は、ゲーム１０をサポートしているゲーミングシステム１０が、入力の所定のセットのみにより動作することを信頼できることを決定したい場合がある。
【００２２】
必須ではないが一般的に、ハードウェア１４は特に信頼でき、認証されたブートプロトコルなどによって各プログラム１０を認証することができる信頼されるプラットフォームなどを含む。このような信頼されるハードウェア１４は、関連のある公衆には既知または明白であるはずなので、詳細に説明する必要はない。したがって、本発明の精神および範囲から逸脱することなく、任意のタイプのこのような信頼されるハードウェア１４を用いることができる。
【００２３】
したがって、リソース１２は、ハードウェア１４が信頼できるという決定に少なくとも部分的に基づいて、リソース１２に認証される特定のプログラム１０が信頼できるかどうかを決定する。しかし、ハードウェア１４が特には信頼できない場合、リソース１２は、本発明の精神および範囲から逸脱することなく、コンピューティングデバイス上の特定のプログラム１０に対し他の形で信頼を確立することができることに留意されたい。例えば、図２に見られるように、プログラム１０は、特定のコンピューティングデバイス１６を表すハードウェア１４に最終的に依存する１つまたは複数の層の他のプログラム１０によってやはりホストされることができるが、下位層にあるプログラム１０が特に信頼することができ、認証されたブートプロトコルなどによって各プログラム１０を認証することができる前述の信頼されるプラットフォームなどを含むことができる。
【００２４】
一般に、ハードウェア１４または特定のプログラム１０のような要素が、リソース１２によって信頼される場合、リソースは、このような要素が、このような要素によってサポートされる各プログラム１０について認証を与えることを信頼する。したがって、図２を参照すると、信頼されているハードウェア１４は、バーチャルマシン１０に対する認証を提供することができ、ハードウェア１４からの認証に基づき信頼されているバーチャルマシン１０は、オペレーティングシステム１０に対する認証を提供することができ、バーチャルマシン１０からの認証に基づき信頼されているオペレーティングシステム１０は、ゲーミングシステム１０に対する認証を提供することができ、オペレーティングシステム１０からの認証に基づき信頼されているゲーミングシステム１０は、ゲーム１０に対する認証を提供することができる。認証を提供するためには、それぞれの特定の要素が、このような認証に必要な情報を収集し、認証を構成し、それを送達することができるポリシエンジン（ｐｏｌｉｃｙ  ｅｎｇｉｎｅ）または同様のものを有すべきであることに留意されたい。認証は、場合によって、リソース１２に直接送達しても、プログラム１０または１つ下位層のハードウェアに送達してもよいことにも留意されたい。
【００２５】
本発明の一実施形態では、任意の特定のプログラム１０の認証は、プログラム１０自体、プログラム１０の実行設定、および、プログラム１０に提供される任意の入力および初期設定（以下に「入力」とする）を考慮に入れる。特に、図２の層化されたシステムは、プログラム１０、または、当該プログラム１０を１つ上位層においてインスタンス化しその設定を制御している、下位層のハードウェア１４を伴うため、下位層のインスタンス化エンティティ１０／１４は、そのようなアイテムの知識を有するために特に適しており、したがって、そのようなインスタンス化エンティティ１０／１４のポリシエンジンによって、インスタンス化されたプログラム１０を認証するために特に適している。さらに、そのようなインスタンス化エンティティ１０／１４およびそのポリシエンジンは、場合により、定期的にまたは要求に応じて、このようなインスタンス化されたプログラム１０を再認証することもできる。
【００２６】
プログラム１０の認証の際のプログラム１０自体を考慮に入れるとき、インスタンス化エンティティは、例えばプログラム１０に対応するデジタル証明書を参照し、それのデジタル署名を検証することができ、そしてその証明書が許容可能な信頼のルート（ｒｏｏｔ  ｏｆ  ｔｒｕｓｔ）に由来することを確認することもできる。追加または代替として、プログラム１０が、マニホールド（ｍａｎｉｆｏｌｄ）または他のリストを伴う場合、このマニホールドは、関連するファイルおよびデータが存在すること、プログラム１０の任意のハッシュが確かめられることなどを決定するために検査されるべきである。また、プログラム１０自体は、ファイル名、プログラム１０のファイル内のメタデータ、名前パラメータ、または同様のものなどのいずれかによって識別することができる。
【００２７】
プログラム１０の認証の際のプログラム１０の設定を考慮に入れるとき、インスタンス化エンティティは、例えば、前述の証明書、および／またはマニホールドもしくは同様のものを参照して、プログラムに対する承認された設定を決定し、承認された設定が確かに存在することを実際に確認することができる。必須ではないが通常は、承認された設定は、当該プログラム１０とハードウェア１４の間の層における他のプログラム１０の識別情報を含み、おそらく、コンピューティングデバイス１６上で動作しているべき他のプログラム１０、および／または、コンピューティングデバイス１６上で動作しているべきではない他のプログラム１０などのような他の情報を含むことがある。さらに、この設定は、プログラム１０に対して確立された特定の実行モード、プログラム１０に対して確立された任意の特別の特権または制限、および同様のものを含むことができる。
【００２８】
プログラム１０の認証の際のプログラム１０に対する入力を考慮に入れるとき、インスタンス化エンティティは、例えば、前述の証明書、および／またはマニホールドもしくは同様のものをやはり参照して、プログラムに対する承認されたセットの入力を決定することができ、承認されたセットの入力がプログラム１０をインスタンス化するために確かに使用されることを実際に確かめることができる。必須ではないが通常は、承認されたセットの入力は、プログラム１０のインスタンス化に供給されうる任意のもの、例えば、コマンドストリング、実行スクリプト、インスタンス化の際にロードされるライブラリまたは実行可能ファイル、インスタンス化の際にプログラム１０によって使用されるレジストリキー、インスタンス化の際にプログラム１０によって提示されるユーザインターフェース、および同様のものを含む。
【００２９】
本発明の一実施形態では、前述のプログラム１０自体、プログラム１０の実行設定、プログラム１０に提供される入力に関係する情報は、プログラム１０の発行者または同様のものによって、プログラムセキュリティ識別子（ＰＳＩＤ）にパラメータ化され、ＰＳＩＤは、そのようなプログラム１０をインスタンス化する、インスタンス化プログラム１０に使用可能になされる。したがって、ＰＳＩＤは、発行者または同様のものによって示されるような、信頼される方法でプログラム１０を動作させるための承認されたセットの条件を表す。発行者または同様のものによって提供される、プログラム１０に対するこのようなＰＳＩＤは、本発明の精神および範囲から逸脱することなく、かかるプログラム１０と一緒に格納することも、インスタンス化プログラム１０に利用可能な他の位置に格納することもできる。
【００３０】
格納されたＰＳＩＤの実際の形は、格納されたＰＳＩＤが、プログラム１０自体、プログラム１０の実行設定、およびプログラム１０に提供される入力に関係する前述の情報を実際に記憶する限り、本発明の精神および範囲から逸脱することなく、実際に任意の適切な形にすることができる。例えば、このような情報は、格納されたＰＳＩＤ内でリストとして示すことができ、または、このような情報は、ＰＳＩＤを形成するために、適切な方法で連結しハッシュすることができる。
【００３１】
重要なことに、ここで図３を参照すると、本発明の一実施形態では、プログラム１０またはハードウェア１４は、プログラム１０に対する格納されたＰＳＩＤを取り出し（ステップ３０１）、ローカルソースから得られたのと同じ情報に基づいてＰＳＩＤを再構成し（ステップ３０３）、次いで、格納されたＰＳＩＤと再構成されたＰＳＩＤとを、一致が存在するかどうかを決定するために比較する（ステップ３０５）ことによって、１つ上位層におけるプログラム１０（図２）を認証する。一致が実際に存在すると推定すると、対応するプログラム１０は、発行者または同様のものによって示された前述の承認されたセットの条件に従って前述の信頼される方法で動作すると見込まれ、したがって、プログラム１０を認証することができる（ステップ３０７）と結論付けることができる。しかし、もし一致が存在しないならば、承認されたセットの条件における何らかの要件が満たされておらず、その結果、プログラム１０は、信頼される方法で動作せず、したがって、プログラム１０を認証することができない（ステップ３０９）とのみ結論付けることができる。
【００３２】
とりわけ、ステップ３０３としてＰＳＩＤを再構成するために、格納されたＰＳＩＤが、どのように同じものを再構成するかについての命令のセットを伴うことが必要である。もちろん、そのような命令は、ローカルで得られるそれぞれの情報の識別情報、そのような情報に対するローカルソース、および同様のものを含むべきである。さらに、そのような命令は、必要に応じて、情報をどのようにフォーマットするか、およびどのように情報を連結しハッシュするかを含むべきである。そのような命令は、認証を実行するプログラム１０もしくはハードウェア１４によって実行される一連のステップを含んでも、または、そのような一連のステップをそれ自体で実行する実行可能ファイルもしくは同様のものを含んでもよい。
【００３３】
層ｎにおける第１のプログラム１０は、リソース１２から下って次の層（ｎ−１）における第２のプログラム１０によって認証されうるが、リソース１２に対して、第２のプログラム１０自体が信頼できることを確立するものがない。したがって、第２のプログラム１０は、リソース１２から下って次の層（ｎ−２）における第３のプログラム１０によって認証されるべきであり、そして、最下位の層１におけるプログラム１０が、リソース１２に対して信頼されたハードウェア１４によって認証されるまで同様に行われる。より単純に、本発明の一実施形態では、リソース１２に対して当該プログラム１０のセキュリティ環境全体を表すために、当該プログラム１０から最下層におけるプログラム１０までのすべてのＰＳＩＤの合成が、合成ＰＳＩＤ（ＣＰＳＩＤ）として以下のように構成される。
【００３４】
ＣＰＳＩＤ＝ＰＳＩＤ１，ＰＳＩＤ２，…，ＰＳＩＤｎ
これにより、ＣＰＳＩＤを、例えば、リソース１２に対する要求の部分として、および当該プログラム１０の認証として、リソース１２に提示することができる。通常、ハードウェア１４がリソース１２によって信頼されるので、ＣＰＳＩＤの提供元は、このようなハードウェア１４である。
【００３５】
しかし、中間の層におけるプログラム１０が、リソース１２により信頼されている場合、本発明の精神および範囲から逸脱することなく、信頼された中間のプログラムが、代わりに提供元となることができる。このような場合、ＣＰＳＩＤは、以下のように、当該プログラム１０から、信頼された中間のプログラム１０より上の層ｘのプログラム１０までのすべてのＰＳＩＤの合成となる。
【００３６】
ＣＰＳＩＤ＝ＰＳＩＤｘ，ＰＳＩＤ（ｘ＋１），…，ＰＳＩＤｎ
前述のように、ＣＰＳＩＤの実際の形は、このような格納されたＰＳＩＤが、その中の個々のＰＳＩＤのすべてを合わせたものを、再生可能な方法で実際に記憶する限り、本発明の精神および範囲から逸脱することなく実際に任意の適切な形とすることができる。例えば、ＣＰＳＩＤは、その中のＰＳＩＤのすべての順序付きリストの連結としても、そのような連結のハッシュとしても、このようなＰＳＩＤに基づいた数列の結果としてもよい。
【００３７】
重要なことに、ここで図４を参照すると、本発明の一実施形態では、リソース１２に至るまでの１つまたは複数の層における当該プログラム１０（図２）を認証しているプログラム１０またはハードウェア１４は、各上位層におけるプログラム１０のＰＳＩＤを、図３に関連して示された方法で再構成および確認させる（ステップ４０１）。ここで、オーセンティケータ（ａｕｔｈｅｎｔｉｃａｔｏｒ）１０／１４は、このような再構成および確認をそれ自体で実行するか、または、各プログラム１０ごとのこのような再構成および確認を、すぐ下の層におけるプログラム１０によって実行させ、次いで、このような再構成され確認されたＰＳＩＤをそのようなオーセンティケータ１０／１４に送達させるかのいずれかができることに留意されたい。いずれの場合においても、オーセンティケータ１０／１４は、適切な方法で再構成され確認されたＰＳＩＤのすべてを組み合わせて、ＣＰＳＩＤを作成し（ステップ４０３）、次いで、作成されたＣＰＳＩＤをリソース１２に送達する（ステップ４０５）。おそらく、そのようなリソース１２は、そのような送達されたＣＰＳＩＤを検討し（ステップ４０７）、このような検討に少なくとも部分的に基づいて、当該プログラム１０を信頼するかどうかを決定する（ステップ４０９）。
【００３８】
とりわけ、リソース１２によってＣＰＳＩＤが理解されるためには、リソース１２およびオーセンティケータ１０／１４は、このようなＣＰＳＩＤをどのように構成するかについて事前に合意するか、または、リソースが、オーセンティケータ１０／１４に、このようなＣＰＳＩＤをどのように構成するかについての命令のセットを提供する。もちろん、このような命令は、ＣＰＳＩＤ内に期待される構成要素である各ＰＳＩＤの識別情報、ならびに、必要に応じてＰＳＩＤの連結、ハッシュ、および／または計算の仕方を含む、ＰＳＩＤのフォーマットの仕方を含む。前述のように、このような命令は、オーセンティケータ１０／１４によって実行される一連のステップを含むことができる、または、このような一連のステップをそれ自体で実行する実行可能ファイルもしくは同様のものを含むことができる。
【００３９】
本発明の一実施形態において、リソース１２がコンピューティングデバイス１６のハードウェア１４に信頼を与えるとすると、このような信頼は、少なくとも、ＰＳＩＤを認証し、第１層におけるプログラム１０に割り当てる信頼モジュール１８（図２）を含むハードウェア１４に少なくとも部分的に基づく。このような信頼モジュール１８は、関連のある公衆には既知または明白であるはずなので、本明細書では詳細に説明する必要はない。したがって、任意の適切な信頼モジュール１８は、本発明の精神および範囲から逸脱せずに使用されることができる。
【００４０】
信頼モジュール１８は、通常、第１層におけるプログラム１０がそれ自体を初期化することができる、アーキテクチャとして定義された実行設定を提供するように働き、このような設定は、外部の乱れから免れることが保証されている。また、信頼モジュール１８には、通常、ＰＳＩＤレジスタ２０が設けられ、その中に、このような信頼モジュール１８は、第１層におけるプログラム１０に対するＰＳＩＤを格納することができる。
【００４１】
少なくともいくつかの状況で、リソース１２は、何らかのプログラム１０によってではなく、信頼されたハードウェア１４およびその信頼モジュール１８によって提供された、プログラム１０に対するＣＰＳＩＤを、受け入れようとする場合があることを理解されたい。上述のＰＳＩＤレジスタ２０は、そのようなＣＰＳＩＤを格納するために使用されることができるが、このＰＳＩＤレジスタ２０に対する変更は、特にハードウェア１４に与えられる信頼という観点から通常は行われるべきではないことが理解されるべきである。したがって、本発明の一実施形態においては、信頼モジュール１８によるそのような提供を達成するために、このような信頼モジュール１８には、ＣＰＳＩＤレジスタ２２も設けられ、その中に、このような信頼モジュール１８は、任意の層における特定のプログラム１０に対応するＣＰＳＩＤを格納することができる。さらに、重要なことに、信頼モジュール１８は、このようなＣＰＳＩＤを計算するまたは構成する過程で、このようなＣＰＳＩＤレジスタ２２を使用することができる。
【００４２】
ＣＰＳＩＤが、単に複数のＰＳＩＤの連結の場合、ＣＰＳＩＤは、様々な長さを有することができ、実際にかなり大きくなりうることに留意されたい。しかし、ハードウェア１４およびその上にある信頼モジュール１８は、それらの性質として、ＣＰＳＩＤレジスタ２２のための空間としてそれほど多くを含んでおらず、したがって、このようなＣＰＳＩＤレジスタ２２は、比較的小さいサイズに保たれなければならないことが理解されるべきである。したがって、任意のＣＰＳＩＤを収容するために、本発明の一実施形態では、信頼モジュール１８は、ＣＰＳＩＤを、その構成要素である各ＰＳＩＤに基づいて反復的方法で数学的に構築し、それにより、構築されるＣＰＳＩＤの長さは、ＣＰＳＩＤレジスタ２２内に収まるよう十分に短くなる。実際、本発明の一実施形態では、上述の反復的方法は、ＣＰＳＩＤをＣＰＳＩＤレジスタ２２の大きさに合わせることをその１つとする機能の適用を含む。
【００４３】
ＣＰＳＩＤレジスタ２２に関して、信頼モジュール１８は、折に触れて、最下位層における認証されたプログラム１０が、このようなＣＰＳＩＤレジスタ２２にアクセスすることを可能にし、また、このような認証されたプログラム１０がＣＰＳＩＤを構成することも可能にすることができることに留意されたい。そうすることによりセキュリティリスクが提起されるが、認証されたプログラム１０のアクセスをそうしたＣＰＳＩＤレジスタ２２のみに限定するための適切な防御措置がとられるとすると、そのリスクは、実質的にわずかである。いずれにしても、リスクは、信頼モジュール１８が、認証されたプログラム１０にＰＳＩＤレジスタ２０へのアクセスを可能にした場合ほど深刻ではなく、信頼モジュール１８は、認証されたプログラム１０に直接的に信頼を与えたのである。
【００４４】
次に図５を参照すると、本発明の一実施形態においては、ＣＰＳＩＤレジスタ２２内にＣＰＳＩＤを構築するために、信頼モジュール１８または認証されたプログラム１０が、まず、ＣＰＳＩＤレジスタ２２をクリアし（ステップ５０１）、次いで、ＣＰＳＩＤに対する構成要素の各ＰＳＩＤを順序立って受け取る（ステップ５０３）。このような受け取ったＰＳＩＤに関して、信頼モジュール１８または認証されたプログラム１０は、ＣＰＳＩＤレジスタ２２の現在の内容を取り出し（ステップ５０３ａ）、取り出したＣＰＳＩＤレジスタ２２の現在の内容を、何らかの方法でＰＳＩＤと組み合わせ（ステップ５０３ｂ）、この組合せに対してある種の数学的操作を実行し（ステップ５０３ｃ）、この操作の結果をＣＰＳＩＤレジスタ２２内に配置する（ステップ５０３ｄ）関数ｆに、受け取ったＰＳＩＤを適用する。したがって、最後のＰＳＩＤを処理した後、ＣＰＳＩＤレジスタ２２の内容は、ＣＰＳＩＤを含み、ＣＰＳＩＤは、この場合では、それの構成要素のＰＳＩＤのすべてに基づくが、このような構成要素のＰＳＩＤに分解することができないことが見込まれる（ステップ５０５）。しかしながら、このようなＣＰＳＩＤは、図４のステップ４０５におけるようにリソース１２に送達される（ステップ５０７）ために有効な形として用いることができる。
【００４５】
ほとんどの任意の組合せの形が、本発明の精神および範囲から逸脱することなく、ステップ５０３ｂで使用されうることを理解されたい。例えば、単純な連結を使用することができる。このような連結は、ＣＰＳＩＤレジスタ２２内に収まらないことがあるために、このような連結は、代替の場所に格納されうることに留意されたい。また、ほとんどの任意の数学的操作が、ステップ５０３ｃで使用されうることは理解されよう。例えば、数学的操作は、ＳＨＡハッシュ関数などのハッシュ関数を含むことができ、さらに、そのハッシュ関数は、ステップ５０３ｄにおいてＣＰＳＩＤレジスタ２２内に収まるために好都合なサイズの固定長の出力を生成するように選択されうる。
【００４６】
結論
本発明は、層化されたプログラム１０を有する任意の適切なコンピューティングデバイス１６に関連して実施することができ、いくつかのプログラム１０のそれぞれは、ローカルまたはリモートのリソース１２に認証されることになる。本明細書に示された本発明では、認証は、プログラム１０自体だけではなく、プログラム１０に対する設定および入力、ならびに、プログラム１０が動作する基礎にあるプラットフォームに基づくことは理解されるべきである。そのような設定および入力ならびにプログラム１０自体は、ＰＳＩＤとして表すことができ、そのような基礎にあるプラットフォームは、このようなプログラム１０のＰＳＩＤのすべての合成を成すＣＰＳＩＤとして表すことができる。
【００４７】
本発明と関連して実行されるプロセスを達成するために必要なプログラミングは、比較的単純であり、プログラミングに関連する公衆には明白なはずである。したがって、このようなプログラミングについては本明細書に添付しない。つまり、本発明の精神および範囲から逸脱することなく本発明を達成するために、任意の特定のプログラミングを用いることができる。
【００４８】
以上の説明において、本発明は、新規の有用な方法およびメカニズムを含み、それにより、コンピュータプログラム１０を、プログラム１０自体と、プログラム１０が動作する基礎になるプラットフォームの両方の面から認証することができることが分かる。プログラム１０自体の認証は、プログラム１０が実行される設定、およびプログラム１０に提供される入力の考慮を含む。プログラム１０の認証は、プログラム１０が動作する基礎にあるプラットフォームの認証を含む。
【００４９】
上記の実施形態に、その独創的な概念から逸脱せずに変更を加えることができることは理解されるであろう。したがって、一般に、本発明は、開示の特定の実施形態に限定されないが、添付の特許請求の範囲によって定義される本発明の精神および範囲における修正を包含していることは理解されるであろう。
【図面の簡単な説明】
【００５０】
【図１】本発明の態様および／またはその部分が実装されうる汎用コンピュータを示すブロック図である。
【図２】本発明が動作するアーキテクチャ、および特に、コンピューティングデバイス上で動作し、コンピューティングデバイスのハードウェアに依存する基礎をなすプラットフォームを形成する複数の層化されたプログラムによってホストされるプログラムを示すブロック図である。
【図３】本発明の一実施形態による、図２のプログラムを認証するにあたって、そのプログラムセキュリティ識別子（ＰＳＩＤ）を介して行われる主要ステップを示す流れ図である。
【図４】本発明の一実施形態による、図２のプログラムを認証するにあたって、その合成プログラムセキュリティ識別子（ＣＰＳＩＤ）を介して行われる主要ステップを示す流れ図である。
【図５】本発明の一実施形態による、すべてのＰＳＩＤに基づいて図４のＣＰＳＩＤを計算するにあたって行われる主要ステップを示す流れ図である。
【符号の説明】
【００５１】
１０  ゲーム
ゲーミングシステム
プログラム
オペレーティングシステム
オペレーティングシステム
バーチャルマシン
１２  リソース
１４  ハードウェア
１６  コンピューティングデバイス
１８  信頼モジュール
２０  ＰＳＩＤレジスタ
２２  ＣＰＳＩＤレジスタ
１２０  コンピュータ
１２１  処理装置
１２２  システムメモリ
１２３  システムバス
１２７  ハードドライブ
１２８  フロッピー（登録商標）ドライブ
１２９  ストレージ
１３０  光ドライブ
１３１  ストレージ
１３２  ハードディスクドライブインターフェース
１３３  磁気ディスクドライブインターフェース
１３４  光ディスクドライブインターフェース
１３６  アプリケーションプログラム
１３７  他のプログラム
１３８  プログラムデータ
１４０  キーボード
１４２  マウス
１４６  シリアルポートインターフェース
１４７  モニタ
１４８  ビデオアダプタ
１４９  リモートコンピュータ
１５０  メモリ
１５３  ネットワークインターフェース
１５４  モデム
１５５  ホストアダプタ
１５６  ＳＣＳＩバス
１６２  記憶装置
【図１】
2006244508.tif 000003
【図２】
2006244508.tif 000004
【図３】
2006244508.tif 000005
【図４】
2006244508.tif 000006
【図５】
2006244508.tif 000007