説明

十分に正当な/最新のコードであることを確実にして行使する最後の防衛線

コンピュータは、専用の検証回路またはプロセスを用いて、自己検証するよう設定されている。検証回路は、検証プロセスを作動するためのタイマ回路と、コンピュータが予め決められた条件群に準拠していることを確認する確認回路と、コンピュータが非準拠状態であるときにコンピュータに制裁措置を課す行使回路とを備えている。検証回路は、暗号回路または、ハッシュ及びデジタル署名確認のプロセスを含む。検証回路は、検証回路自体が広範な攻撃にさらされないように、小さくポータブルであることが望ましい。コンピュータによって用いられる自己検証方法も開示されている。

【発明の詳細な説明】
【背景技術】
【0001】
本特許は、コンピュータ一般に関し、特に、ソフトウェア、ファームウェア、マイクロコードの改ざんの保護に適合したコンピュータに関する。
【発明の開示】
【発明が解決しようとする課題】
【0002】
コンピュータシステムは、ますます複雑になってきている。複雑さが増すに従い、コンピュータの個々のコンポーネントに脆弱さが導入される機会も多くなる。これは、ソフトウェア一般のみでなく、ブートプロセスやマイクロプロセッサのオペレーションに関連するファームウェアやマイクロコードについても言える。このような複雑なシステム構成要素の徹底的なテストはもはや可能ではない。複雑なソフトウェア(ファームウェアやマイクロコードを含む)には、注意深く設計、コード、テストされた場合であっても、意図されない使用方法または副作用があるかもしれない。従って、最初に全ての設計要求事項を満たし厳しいテストプロシージャに合格したコンピュータにさえも、セキュリティギャップがあり得る。このようなセキュリティギャップは、製品の広範なリリースや隠れた脆弱性を明らかにしようという共同の努力があって初めて明らかになることがある。
【0003】
現代のコンピュータのこのような特徴には、広範な影響がある。個人のコンピュータのセキュリティが侵害されるのみでなく、ネットワーク及びそのネットワークに接続された他のコンピュータも侵害されるかもしれない。コンピュータが侵害され、新しいソフトウェア、ファームウェアまたはマイクロコードがロードされ実行されると、さらに個々のシステム及び関連するシステムも侵害される。エージェンシーや企業への影響は広範なものになりうる。
【0004】
攻撃に対して特に脆弱なビジネスとして、サービスプロバイダなどのスポンサーが只または助成した金額でコンピュータを売り利用毎に課金するプランがあげられ、スポンサーが将来的な収入によって助成金を取り戻すことを期待しているものである。契約の利用規定へのコンプライアンスを確保するための制御が侵害されると、スポンサーは膨大な損害に面することになる。
【課題を解決するための手段】
【0005】
上述のように、コンピュータの複雑性と技術の進歩により、100%効率的な方策は少なくとも2つの理由によりほぼ不可能になる。一つは、上記のように、如何なるシステムでも、明白な欠陥であれかつて発見されたことのない副作用であれ、システムの侵害をもたらし得る特徴を全く持たないと保証することはできない。第2に、技術が進歩するにつれ現在のセキュリティ方策は陳腐化し、かつてはセキュアであったシステムが侵害されることも容易にあり得る。例えば、少し前には48ビットの鍵を用いたDESアルゴリズムはセキュアであると考えられていた。しかし現在では、コンピュータのパワーとコンピュータ同士をリンクする能力との進歩により、そのようなセキュリティ方策は実質的に役に立たなくなった。ここに記載するように、最終的なコンピュータの保護のために、コンピュータ内に「最後の防衛線」検証回路を備えることが望ましい。理想的には、検証回路は小さく携帯可能で、極めてよくテストされており、検証回路自体が新しい脆弱性を導入しないことを確認されている。さらに、検証回路はコンピュータ内の十分深くに内蔵されており、検証回路の無効化には、仕掛けるのにコンピュータの価値よりも高いコストのかかるハードウェア攻撃を要する。このような検証回路は、プロセッサまたは他の主張な半導体コンポーネント自体に埋め込まれている。検証ルーチンのコードはプロセッサのマイクロコードに埋め込まれている。理想的には最後の防衛線コード及びステートは、マイクロコードまたはファームウェアの他の部分とは離れていることが望ましい。このモジュール性により、プロセッサまたはそのマイクロコード/ファームウェアの他のどの部分が破られても最後の防衛線が侵害されることがないため、全体的なセキュリティが向上する。
【0006】
検証回路の有効化は長い周期、恐らく数ヶ月でもよい周期で行われるが、コンピュータが「ハイジャック」されたと検証回路が判断したときに利用可能な制裁措置は厳しい。制裁措置により、コンピュータをサポートの場所に戻すまたは元のサービスプロバイダに連絡して、オペレーショナル状態を回復することが要求される。制裁措置には、コンピュータの不能化、プロセッサの厳しい低速化、プログラム実行に必要なインストラクションセットアーキテクチャ(ISA)の減少、または他の方策が含まれる。制裁措置がシンプルであればあるほど、そのセキュリティの強度を確認しやすい。制裁措置は稀有な事象であるので、制裁措置の厳格さは問題ではない。それどころか、厳格である方が、ユーザが制裁措置を単に無視したり、うっかり改ざんされたソフトウェアなどのコンピュータ部品を使ったりしないことを確実にできる。広く報じられた制裁措置が厳格であればあるほど、オリジナル設計のシステムを侵害しようという広範な試みがおきるリスクが低くなる。コンピュータの検証のプロセスには、デジタル署名ソフトウェアのプレゼンテーションや、メモリ領域のハッシュや、有効期限の評価などが含まれるが、これらに限られるものではない。例えば、助成された利用毎課金のコンピュータのユーザは、インターネットで見つけた使用量の計測方法を変えるソフトウェアを使いたくなるかもしれない。しかし、コンピュータがいきなり作動しなくなりサービスコールをするよう要求するとわかっていれば、ユーザはこのような詐欺を試みる前に熟慮するであろう。他の例では、インターネットで繁殖するかもしれない脆弱性が発見されると、広範な詐欺が行われやすい。しかし、検証回路がプロセッサまたは主要なインターフェースチップにホストされていれば、シリコン自体にハードウェア攻撃を試みそうなのは、比較的高機能の機器を有するユーザのみである。
【発明を実施するための最良の形態】
【0007】
以下の文章は、数々の異なる実施例を詳述するものであるが、該記載の法的範囲はこの開示の最後に記す特許請求の範囲の文言によって定義されるべきであることが理解されよう。可能な実施形態の全てにつき記載することは不可能ではなくても非現実的であるので、本詳述は、例示としてのみ解釈されるべきであり可能な実施形態の全てを記載するものではない。現在の技術または本特許の出願日の後に開発される技術を用いて、本特許請求の範囲に該当する数多くの代替実施例が実施され得、これらは特許請求の範囲のスコープに入る。
【0008】
また、本特許において「ここで用いられる『__』という用語は、…を意味するとここにおいて定義される」という文章またはこれに類似した文章によって明示的に定義されない限り、その用語の明らかなまたは通常の意味以上にその用語の意味を、明示的にも暗示的にも限定することを意図はなく、そのような用語は、本特許のどの部分(特許請求の範囲を除く)に書かれた如何なる記載によってでも限定的に解釈されるべきではない。本特許の終わりの特許請求の範囲に記載された用語が、如何なる用語であっても一つの意味に一貫して本特許内で言及される限りにおいては、読者を混乱させないように明確さのためになされたものであって、その特許請求の範囲の用語を暗示または他の方法によってその一つの意味に限定することを意図するものではない。最後に、特許請求の範囲の要素が、構造を全く記載することなく「手段」という言葉及び機能によって定義されているのでなければ、如何なる特許請求の範囲の要素も、米国法35USC112条の第6パラグラフを元に解釈されることを意図するものではない。
【0009】
発明の機能の大部分及び発明の理論の多くは、ソフトウェアプログラムやインストラクションやASIC(Application Specific Integration Circuit)などの集積回路(IC)と共に、またはこれらによって最良に実施される。通常の能力を有する者は、ここに開示する概念や理論を手引きとすることにより、利用可能な時間や現在の技術や経済的状況などによって動機付けられる多大であるかもしれない努力と多くの設計選択肢にも拘らず、そのようなソフトウェアインストラクションやプログラムやICを最小の実験により作成することが十分に可能であることが期待される。従って、本発明に基づく理論、概念をあいまいにするリスクを最小化し、簡潔化するため、このようなソフトウェア、ICに関する更なる議論は、仮にあるとすれば、望ましい実施形態の理論及び概念に比して必要なものに限定されている。
【0010】
多くの先行技術の高価値コンピュータ、パーソナルデジタルアシスタント、オーガナイザーなどは、セキュリティ方策の追加がなければ、前払いまたは利用毎課金のビジネスモデルにおける利用には適していないといえる。小さく、よくテストされ、改ざんが難しい検証回路は、コンピュータ変更の試みを減らし、さらに利用毎支払いのコンピュータのサービスプロバイダや、企業情報技術管理者や、インターネットサービスプロバイダやその他に、他のシステムアタックに対する最後の防御線を提供する。
【0011】
図1は、動的ソフトウェア提供システムを実現するネットワーク10を図示する。ネットワーク10は、インターネットでも、バーチャルプライベートネットワーク(VPN),または、一つまたは複数のコンピュータ、通信機器、データベースなどが通信可能に互いに接続されるようにする如何なるネットワークをも含む。ネットワーク10は、パーソナルコンピュータ12及びコンピュータ端末14にイーサネット16とルータ18と地上線20とを介して接続されている。一方、ネットワーク10はラップトップコンピュータ22及びパーソナルデータアシスタント24にワイヤレス通信局26及びワイヤレスリンク28を介してワイヤレスに接続されている。同様に、サーバ30は通信リンク32を介してネットワーク10に接続され、メインフレーム34は他の通信リンク36を介してネットワーク10に接続されている。以下により詳しく記述するように、動的ソフトウェア提供システムの一つまたは複数の構成要素は、ネットワーク10に接続された様々な端末のいずれにでも格納され操作されてよい。
【0012】
図2は、ネットワーク10に接続され動的ソフトウェア提供システムの構成要素の一つまたは複数を実施するために用いられるコンピューティング機器をコンピュータ110として図示している。コンピュータ110の構成要素には、処理部120と、システムメモリ130と、システムバス121とが含まれるが、これらに限定されるものではない。システムバス121は、システムメモリを含む様々なシステム構成要素を処理部120に結合する。システムバス121は、メモリバスまたはメモリコントローラと、周辺バスと、多様なバスアーキテクチャのいずれかを用いたローカルバスとを含む、いくつかの種類のバス構造のいずれであってもよい。限定でなく例として、そのようなアーキテクチャにはISA(Industry Standard Architecture)バスと、マイクロチャネルアーキテクチャ(MCA)バスと、EISA(Enhanced ISA)バスと、ビデオエレクトロニクス標準協会(VESA)ローカルバスと、メザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスとが含まれる。
【0013】
コンピュータ110は、定期的にコンピュータ110の状態をモニタしてこのような非準拠状態が判断されると関連するポリシーを実行するための検証回路125をさらに含む。検証回路125は、図3,4に関連して、以下により詳細に記載されている。
【0014】
コンピュータ110は、多様なコンピュータ読み込み可能なメディアを典型的には含む。コンピュータ読み込み可能なメディアは、コンピュータ110がアクセス可能な如何なる利用可能なメディアでもよく、揮発性及び不揮発性メディア、取り外し可能及び取り外し不能メディアの両方を含む。限定でなく例として、コンピュータ読み取り可能メディアは、コンピュータ格納メディアと通信メディアとを含む。コンピュータ格納メディアは、コンピュータ読み込み可能インストラクションやデータ構造やプログラムモジュールまたは他のデータなどの情報の格納のための如何なる方法または技術によってでも実施され得る、揮発性及び不揮発性メディア、取り外し可能及び取り外し不能メディアを含む。コンピュータ格納メディアは、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、DVDまたはその他光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気格納デバイス、または望みの情報を格納しコンピュータ110でアクセスし得るその他の如何なる媒体をも含むが、これらに限定されるものではない。通信メディアは、典型的には、コンピュータ読み取り可能インストラクション、データ構造、プログラムモジュールまたは他のデータを、搬送波または他のトランスポート機構などの変調されたデータ信号により実現し、如何なる情報伝達メディアをも含む。「変調されたデータ信号」とは、信号中に情報を符号化するようにその特徴の一つまたは複数を設定または変更した信号を意味する。限定でなく例として、通信メディアは有線ネットワークまたは直接有線接続などの有線メディアや、音響、ラジオ周波数、赤外線及び他の無線メディアなどの無線メディアを含む。コンピュータ読み取り可能なメディアの範囲には、上記の如何なる組み合わせも含まれるべきである。
【0015】
システムメモリ130は、リードオンリーメモリ(ROM)131やランダムアクセスメモリ(RAM)132などの揮発性及び/または不揮発性メモリの形をとるコンピュータ格納メディアを含む。スタートアップの間などに、コンピュータ110内の要素間の情報伝達を助ける基本ルーチンを含む基本入出力システム(BIOS)133は、典型的にはROM131に格納されている。RAM132は、処理ユニット120によってすぐにアクセス可能または処理ユニット120に現在用いられているデータ及び/またはプログラムモジュールを典型的に含む。限定でなく例として、図2はオペレーティングシステム134、アプリケーションプログラム135、その他プログラムモジュール136、プログラムデータ137を図示している。
【0016】
コンピュータ110は、その他の取り外し可能及び取り外し不能、揮発性及び不揮発性コンピュータ格納メディアも含んでいてよい。例としてのみ、図2は、取り外し不能不揮発性磁気メディアに読み書きするハードディスクドライブ140と、取り外し可能揮発性磁気ディスク152に読み書きする磁気ディスクドライブ151と、CDROMや他の光メディアなどの取り外し可能不揮発性光ディスクに読み書きする光ディスクドライブ155とを図示している。例示のオペレーティング環境において用いることのできる他の取り外し可能及び取り外し不能、揮発性及び不揮発性コンピュータ格納メディアには、磁気テープカセット、フラッシュメモリカード、DVD,デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどを含まれるが、これらに限定されるものではない。ハードディスクドライブ141は、典型的にはインタフェース140などの取り外し不能メモリインタフェースを通してシステムバス121に接続されており、磁気ディスクドライブ151と光ディスクドライブ155とは、典型的にはインタフェース150などの取り外し可能メモリインタフェースによりシステムバス121に接続されている。
【0017】
上述され図2に図示されたドライブとそれらに関連するコンピュータ格納メディアは、コンピュータ読み取り可能なインストラクション、データ構造、プログラムモジュール、及びコンピュータ110のためのその他データの格納部を提供する。図2では、例えば、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、その他プログラムモジュール146、プログラムデータ147を格納するものとして図示されている。これら構成要素は、オペレーティングシステム134、アプリケーションプログラム135、その他プログラムモジュール136、プログラムデータ137と同じでも異なっていてもよいことに注意されたい。オペレーティングシステム144、アプリケーションプログラム145、その他プログラムモジュール146、プログラムデータ147は、異なるコピーであることを少なくとも示すために異なる番号を与えられている。ユーザは、キーボード162と、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161となどの入力デバイスによって、コンピュータ20にコマンドや情報を入力する。その他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、または類似にものが含まれる。これらの、またその他の入力デバイスは、システムバスに結合されたユーザインタフェース160を介して、処理部120に接続されていることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などの他のインタフェースやバス構造によって接続されていてもよい。モニタ191または他の種類のディスプレイデバイスも、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続されている。モニタに加えてコンピュータはさらに、外部周辺インタフェース190を介して接続されたスピーカ197やプリンタ196などの、他の周辺出力デバイスを含んでもよい。
【0018】
コンピュータ110は、ネットワーク化された環境の中で、リモートコンピュータ180などの一つまたは複数のリモートコンピュータへの論理接続を用いて作動する。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードでよく、図1にはメモリ格納デバイス181しか図示されていないものの、典型的には、コンピュータ110に関連して上述された要素の多くまたは全てを含んでいる。図1に図示された論理接続は、構内通信網(LAN)171と、広域通信網(WAN)173とを含むが、他のネットワークをさらに含んでも良い。このようなネットワーキング環境は、オフィスや企業ワイドコンピュータネットワーク、イントラネット、インターネットにはよく見られる。
【0019】
LANネットワーキング環境で用いられるとき、コンピュータ110はネットワークインタフェースまたはアダプタ170を介してLAN171に接続されている。WANネットワーキング環境で用いられるとき、コンピュータ110は典型的には、モデム172、またはインターネットなどのWAN173上で通信を設立するための他の手段を備えている。モデム172は、内蔵でも外付けでもよく、ユーザインプットインタフェース160または他の適当な機構を介してシステムバス121に接続されている。ネットワークされた環境においては、コンピュータ110に関連して図示されたプログラムモジュール、またはその一部は、リモートメモリ格納デバイスに格納されていてよい。限定としてではなく例として、図2にはリモートアプリケーションプログラム185がメモリデバイス181に存するものとして開示されている。図示されたネットワーク接続は例示であり、コンピュータ間で通信リンクを設立する他の手段が用いられてもよいことが理解されよう。
【0020】
図3は、コンピュータ110上のソフトウェア、ファームウェア、またはマイクロコードの正当性を確認するのに適した検証回路125を示している。モニタまたはハイパーバイザに比して検証回路125は、コンピュータ110の残りの部分におけるセキュリティの脆弱性に対する最後のバックアップとしての役目を有する。検証回路125に関連するコードまたは回路構成は、十分にテストされ得るに十分な小ささであり、理想的には、公開暗号アルゴリズムのように公開の精査及びテスティングに供されたことがあるものである。検証回路125は、断固とした攻撃者に対する最後の利用可能な防御であり、利用回毎支払い(pay per use)やプリペイド(pay as you go)コンピュータ・ディストリビューション/ビジネスモデルの防御において特に有用である。
【0021】
検証回路125は、確認機能202と、暗号サービス204と、時計またはタイマ206と、乱数生成器208と、行使機能210とを含む、いくつかの標準要素を備えている。検証回路125はさらに、メモリ212を備えている。メモリ212はランダムアクセスメモリ(RAM)214と、鍵や証明書や他のシークレットやフラグなどの持続的な情報を格納するのに用いられる不揮発性メモリ(NVM)216とをさらに備えている。メモリはさらに、リードオンリーメモリ(ROM)218を備えていてよい。ROMは一般的に、改ざんに対して抵抗性が高く、従ってROM218は検証回路125に関連する実行ルーチンを格納する場所としては理想的である。加えて、例えばルート認証局(root certificate authority)または公開鍵などの絶対変わらない鍵をROM218に格納してもよい。確認及び行使機能202及び210は、正当なオペレーティング状態の確認のタスク及びコンピュータ110が非準拠状態であった場合の制裁措置に関連するハードウェア、ファームウェア、またはソフトウェアであってよい。暗号サービス204は、SHA-1ハッシュ・アルゴリズムなどのハッシュエンジンを含み、さらにRSA(商標)非対称公開鍵アルゴリズムなどの暗号アルゴリズムをさらに含んでもよい。暗号サービス204は、保護すべき対象コードの真正性、整合性の確認などの検証テストを実行/サポートし得るべきである。これは、公開鍵暗号法、暗号ハッシュ、デジタル署名スキーム、またはこれら技術の組み合わせを用いて行われる。タイマは単純なカウンター回路でもよいし、フルのリアルタイム時計として実施されていてもよい。
【0022】
乱数生成器(RNG)208は、第3者にナンス(nonce)またはチャレンジを供給するために統計的に十分な乱数を供給するのに用いられる。RNG208は、コンピュータ110の確認をトリガするために、予測不能な現象を生成するのにも用いられる。つまり、RNG208から生成された可能な乱数の領域から、予め数値または数値集合を選んでおく。RNG208は、一定のインターバルで乱数を生成する。生成された数値が選択された数値または数値集合に合致したとき、その合致が確認オペレーションをトリガする。数値生成率と、RMG208の最大領域と、数値集合中の数値数が分かっていれば、合致現象と合致現象との間の時間の中間値を求めるのは容易である。例えば、1億個の数字のプールの中から一秒に数字一つ生成すると、合致する数字が100になるのは、以下の式を用いるとテスト頻度での中間値では11.57日である。
中間合致時間=(RNG領域)/(集合中の数×頻度)
【0023】
例示の実施形態では、検証回路125は、コンピュータ110の日常的なオペレーションに関連するTPM(Trusted Platform Module)や如何なるソフトウェアモニタかも離れている。TPMの適用は米国特許出願「モニタを用いてTPMを常に“オン”にロックする方法及びシステム」、代理人事件番号30835/40478に開示されており、この出願内容はここに統合される。TPMは、ブート及び初期化プログラムの間に信頼される環境(trusted environment)を設立するのに用いられる集積回路である。TPMは、モニタまたはハイパーバイザと共に用いられ、信頼される環境の基礎を築く。TPM及びモニタ/ハイパーバイザを用いた信頼される環境の実施は、コードとしては大きくなりがちである。このようなコンポーネントの全ての可能なセキュリティホールについて網羅的にテストすることは不可能であり、従ってセキュリティのために依存していたコンポーネントが実際には脆弱性を導入することもありうる。しかも、モニタなどのソフトウェア要素は、インターネットで簡単に増殖する攻撃を受けやすく、ビジネススポンサーに広範な損害をもたらしがちである。最後に、TPMやモニタなど、信頼される環境の構成ブロックは、自身の整合性をチェックするには適さず、特に最初のオペレーションの後は、モニタ、または信頼される環境の他の要素を変更する攻撃を阻止することができない。オペレーティングシステムまたはセキュリティ構成ブロックの侵害による攻撃に対する長期的な脆弱性を減少するため、検証回路125は他のシステムセキュリティ構成ブロックの整合性をチェックするように設計されている。検証回路125自身、特にそのソフトウェアコンポーネントは十分に小さく、整合性を確認するためのテストを容易に行うことができる。一つの実施形態では、暗号サービス204などの、検証回路125の重要な要素は、自身を攻撃からさらに守るため、ハードウェアで実施される、または異なるプロセッサ及びマイクロコード(図示なし)を使用している。検証回路125は、TPM/モニタと異なり、ブートプロセスが終わり通常のオペレーションが進行中となった後でも、自身上のコンポーネントの整合性をチェックするように設計及び実施されている。
【0024】
さらに、ロジック/コード及びステートをシステムの残りの部分から離すことが望ましい。例えば、CPUマイクロコードが検証回路125によって保護されていると仮定すると、CPUマイクロコードが検証回路125のロジック/コード及びステートにアクセスする手段がないようにすることが望ましい。もう一つの検討すべき方策としては、検証回路125のロジック/コードを例えばROMなどのハードコードにし、上書きの余地がないようにすることである。
【0025】
正しく設計及び実施されれば、検証回路125は様々なデバイス、プラットフォーム上で再利用可能である。つまり、メモリ領域などが、期待された計測値及び関連する基準に準じてプログラムされている限り、検証回路125は、パーソナルコンピュータやパーソナルデジタルアシスタントから携帯電話、埋め込まれたシステム(embedded system)、ファームウエア・ベースのコンポーネント、マイクロコード・ベースのCPUなどにまたがるアプリケーションで利用可能である。検証回路125がコンピュータ110に非準拠の測定をする頃には、コンピュータ110は打破され他の防衛線は全て侵害されたと仮定してよい。従って、検証回路125が行う制裁措置は厳格であり、従ってプラットフォームまたはオペレーティングシステムに特定のものでは必ずしもない。
【0026】
検証回路125の一実施例では、図4に示すように、検証回路125をプロセッサと同じチップに配置している。図4の高度に簡略化したブロック図では、図2の処理部120にあるような、プロセッサ300の主要構成要素が描かれている。プロセッサへのインタフェースはシステムバス302及びバスインタフェース304を介する。インストラクションはインストラクションデコーダ306で評価(evaluate)される。インストラクションは、インストラクション実行ブロック308で実行されキャッシュされる。プロセッサまたはプロセッサ/コンピュータマイクロコードのためのプログラムまたはファームウェアインストラクションは、マイクロコードROM310に格納されている。データは、整数実行ユニット312及び浮動小数点ユニット314でさらに操作される。結果は、データキャッシュ316中のシステムバス302に配置されるよう、格納され配列され(sequenced)る。集積検証回路125で実施されるとき、プロセッサ300は、タイマ320と乱数生成器322とのいずれかまたは両方、または/及び不揮発性メモリ324を含むトリガ回路318をさらに有する。タイマ320及び乱数生成器322の機能は上述のものと同じである、または類似している。トリガ回路318は、確認マイクロコード324が定期的に実行されることを確実にするために用いられる。
【0027】
プロセッサ300に含まれると、別体の検証回路125の機能は、システム全体へのアクセスがより良く、さらに攻撃からもより良く防御される。プロセッサなどの高度に集積されたデバイスに対するハードウェア攻撃をしかける技術は存在するが、このような攻撃は通常高機能の機器と高いスキルを要し、大きなスケールでこういった攻撃をしかけることは難しい。
【0028】
図5を参照しつつ、コンピュータソフトウェア、ファームウェアまたはマイクロコードの真正性及び/または整合性を検証するための方法を示すフローチャートにつき記載及び既述する。設定(401)の間、メインコンピュータ全体の初期製造工程または、プロセッサチップまたは回路基板など、メインコンピュータの部品の製造の間、コンピュータ110には検証回路125が組み込まれる(402)。検証回路125が一つまたは複数の分離した構成要素を使っているとき、検証回路125を回避するまたは取り替えるハードウェア改ざんの困難性を増すため、回路は回路基板に埋め込まれるか、若しくは他の構成要素の下に配置される。
【0029】
そして検証回路125は、テストされる特徴のみでなく如何なる必要とされる暗号シークレットまたはデータをも含めてプログラムされる(404)。例えば、信頼された認証局(Certificate Authority)と関連するルート認証や公開鍵や、生成された対称鍵がインストールされる。これは、例えば(検証される)対象のロジックのバージョン情報など、様々なデータの真正性を確認するのに用いられる。もう一つの可能な利用法としては、信頼されたパーティ(trusted party)による検証回路125のプログラミングのアップデートを許可することである。さらに、アップデートなど受領した情報を別の暗号スキームを用いての確認するために、一つまたは複数の追加の非対称鍵もプログラムされる。暗号確認は、制裁措置をクリアする際、自動的に行われるのでなければ、要求される。別の例では、期待されたハッシュの値は、該期待されたハッシュに対して計測するためのメモリ領域と共に、プログラムされる。検証回路125にプログラムされるさらに別の側面は、制裁措置、または段階的に増大する一連の制裁措置である。
【0030】
検証回路125がプログラムされると(404)、検証回路125を作動するインターバルがプログラムされる(405)。インターバルは、管理者やサービス技術者がテストの頻度を増やすことができるように、他のプログラムとは別にプログラムされている。例えば、前回の検証テストで失敗したシステムの状態を回復した後、(そのシステムまたはユーザに対する減衰した信頼を反映して)技術者はテストの頻度を1年に1回から1月に1回とする。
同様に検証回路125は、検証テストの失敗など様々な条件により、テストの頻度を自立的に増加する(412)。インターバルは、いくつかの基準のいずれか、またはその基準の組み合わせに基づく。テストは、与えられたカレンダー日に、またはその後に行われる。テストは、電源がオンである時間数など、与えられた利用期間後に行われてもよい。上述の乱数を用いた統計的基準を用いても良い。
【0031】
リスタートの後、例えば不揮発性メモリ216に格納された制裁措置フラグを用いて、コンピュータ110が制裁されている最中であることを示してもよい。行使回路210は、前回の制裁措置を再作動する(414)が、場合によっては、制裁措置は段階的により荒っぽい方策を取るよう進展する。いくつかの実施形態では、制裁措置は急激なものであり、コンピュータ110を作動不能にする。利用可能な不揮発性メモリは、制裁措置がどのように行われ、ログされ、修復されるかに影響を及ぼす。例えば制裁措置は、不揮発性メモリ216に設定されたフラグビットに応答する。不揮発性メモリ216が容易に利用可能ではない、またはそれ自体が改ざんされている場合は、制裁措置を受けた状態を示すために可融リンク(fusible link)を用いてもよい。制裁措置がすでに行われていないことを示すためには、フューズを有するチップを取り替えるか、若しくは追加の可融リンクを「飛ばし」てもよい。
【0032】
制裁措置フラグがアクティブでなければ、ブロック407のNo肢が取られ、検証回路125は、405でプログラムされたインターバルに対応する、周期的テスト(408)のモードに入る。インターバルは、上述のように設計上の選択に基づき、特定の(exact)日付、固定されたまたは変更可能な期間のインターバルに対応し、またはある基準の下でランダムなベースである。
【0033】
インターバルは、408で周期的にチェックされ、インターバルがまだ終了していなければ待ちが課され、408のNO肢が取られ、インターバルテスト408が繰り返される。インターバルが切れると、408からYes肢が取られる。ブロック410で検証テストが行われる。検証テスト410は、メモリ領域や、プログラムや、ソフトウェアコードや、ソフトウェアコードの断片や、ファームウェアや、マイクコードなど、あらかじめ決められた構成要素のデジタル署名を確認することを含む。デジタル署名は、周辺機器、ドライバ、モニタ、オペレーティングシステム、基本入出力システム(BIOS)、埋め込まれた(embedded)コンピュータファームウェア、CPU、またはコンピュータマイクロコードなどと関連付けられている。より包括的なテストは、これら構成要素の一つ以上をテストまたは確認することを含む。検証テスト410は、メモリ領域においてハッシュを計算することを含むまたは伴う。メモリ領域には、例えばRAM及び不揮発性メモリのセグメントなど、メモリの複数の部分が含まれる。テストされるメモリは、製造中に提供された、または保護及び検証の対象であるコード/ファームウェア/プログラムのアップデートに伴うデジタル署名メタデータにより特定される一つまたは複数のメモリ部分を含んでいる。
【0034】
メタデータは、最終的なルート認証局までの認証ヒエラルキーのチェインを提供する拡張した認証を含む。検証回路125が少なくとも時々インターネットにアクセスするときは、証明書の有効性を認証取り消しリスト(CRL: certificate revocation list)を用いてチェックする。同様に、検証回路125が少なくとも時々インターネットにアクセスするときは、検証されるコードのバージョン、従って検証ソフトウェアデータのバージョンを確認し、もし必要であれば更新する。
【0035】
検証テストが失敗すると、410からNo肢が取られ、任意である失敗メッセージがログされる(412)。ログされた失敗メッセージは、後の分析および復旧に用いられる。再テストのためのインターバルも設定され、特に、コンピュータが準拠状態に回復したか判断するためにインターバルが減少される。回復の後もなお、インターバルは短くなったままである。
【0036】
そして、コンピュータ110の機能を制限するために、制裁措置が課される(414)。制裁措置は、コンピュータ110を完全に不能化する、ディーラまたは認可されたサービス技術者による保持または修理を要求するなど、厳格なものである。他の、より厳格でない制裁措置が作動されてもよい。コンピュータの機能を制限する他の制裁措置には、通信アクセスを制限する、送受信できるメッセージ数を制限する、オペレーションのスピードを制限する、またはプロセッサ300のインストラクション・セット・アーキテクチャ(ISA: Instruction Set Architecture)を制限する、などがある。他の制裁措置には、グラフィックの表示の解像度または色の深みを減らすこと、または頻繁かつ周期的なコンピュータ110のリセットが含まれる。
【0037】
検証回路125は、414で制裁措置が課された後にもテストを続けるようプログラムされている。ループは414から410に進む。検証テストに合格すると、コンピュータ110がスポンサーの要求に再び準拠していることに応じて、如何なる既存の制裁措置もクリアされる。この例では、検証回路125自身が制裁措置をクリアする役割を負う。他の実施形態では、制裁措置はサービス技術者によって、または確認された信頼されたソースからのコマンドに応じて取り除かれる。
【図面の簡単な説明】
【0038】
【図1】コンピュータネットワークの簡単化された代表的なブロック図である。
【図2】図1のネットワークに接続されたコンピュータのブロック図である。
【図3】図2のコンピュータに類似の典型的なコンピュータのブロック図であり、検証回路の詳細を開示する図である。
【図4】検証回路を含む代表的なプロセッサのブロック図である。
【図5】コンピュータソフトウェア、ファームウェア、マイクロコードの真正性及び/または整合性を検証する方法を示すフローチャートである。

【特許請求の範囲】
【請求項1】
自己検証するよう設定されたコンピュータであって、
プロセッサと、
前記プロセッサに連結されたメモリと、
前記プロセッサ及び前記メモリに連結された検証回路であって、前記コンピュータの特性を検証するよう機能しさらに前記検証が失敗すると前記コンピュータの機能を制限するよう機能する検証回路と、
を備えたことを特徴とするコンピュータ。
【請求項2】
前記検証回路にインターバルの間に前記コンピュータの特性を検証させる前記インターバルを決定するトリガ回路を更に有することを特徴とする、請求項1に記載のコンピュータ。
【請求項3】
前記インターバルは統計的である、計時されている、及びランダムのいずれか1つであることを特徴とする、請求項2に記載のコンピュータ。
【請求項4】
前記検証が失敗した後は、前記検証が増加した頻度で行われることを特徴とする、請求項2に記載のコンピュータ。
【請求項5】
前記検証回路は暗号機能を有することを特徴とする、請求項1に記載のコンピュータ。
【請求項6】
前記特性は、デジタル署名されたソフトウェアコードと、メモリ領域のハッシュと、ソフトウェアコードの期限切れと、デジタル署名の取り消しと、期限切れ日とのうちの一つであることを特徴とする、請求項1に記載のコンピュータ。
【請求項7】
前記検証が失敗して前記コンピュータの前記機能を制限するために前記検証回路に応答する、行使回路をさらに備えたことを特徴とする、請求項1に記載のコンピュータ。
【請求項8】
前記プロセッサは前記検証回路を有することを特徴とする、請求項1に記載のコンピュータ。
【請求項9】
コンピュータ内の検証回路であって、
トリガ回路と、
前記トリガ回路に連結され、前記コンピュータの特性を検証するための論理回路と、
前記確認回路に連結された行使回路であって、前記論理回路からの信号に応じて、前記コンピュータのパフォーマンスを制限する行使回路と、
を備えたことを特徴とする検証回路。
【請求項10】
暗号回路をさらに有し、前記論理回路は前記暗号回路を用いて前記特性を確認することを特徴とする、請求項9に記載の検証回路。
【請求項11】
前記行使回路は前記コンピュータのパフォーマンスを、周期的なリセットと、プロセッサ能力の減少と、ディスプレイの解像度減少とのうちの一つにより制限することを特徴とする、請求項9に記載の検証回路。
【請求項12】
前記トリガ回路は、時計と乱数生成器とのうちの一つを有することを特徴とする、請求項9に記載の検証回路。
【請求項13】
前記検証回路は前記コンピュータの他の構成要素からの改ざんに対して抵抗しえることを特徴とする請求項9に記載の検証回路。
【請求項14】
コンピュータを認証する方法であって、
検証回路を提供するステップと、
前記検証回路を前記コンピュータの特性に対応する情報によりプログラムするステップと、
前記検証回路をインターバルで作動するようにプログラムするステップと、
前記コンピュータの特性を検証するステップと、
前記コンピュータの前記特性の前記検証が失敗すると、前記コンピュータの機能を制限するステップと、
を有することを特徴とする方法。
【請求項15】
前記検証回路を暗号シークレットでプログラムするステップをさらに有することを特徴とする、請求項14に記載の方法。
【請求項16】
前記検証するステップは、ランダムなインターバルと計時されたインターバルとのいずれか1つで確認するステップをさらに有することを特徴とする、請求項14に記載の方法。
【請求項17】
前記検証するステップは、コード機能のデジタル署名を確認するステップとメモリ領域のハッシュを確認するステップとのうちの一つを有することを特徴とする、請求項14に記載の方法。
【請求項18】
前記コンピュータの前記特性の確認の失敗をログし、前記コンピュータのリスタート/リセットで評価される不揮発性フラグを設定するステップをさらに有することを特徴とする、請求項14に記載の方法。
【請求項19】
前記コンピュータの特徴を制限するステップは、通信メッセージの数を制限することをさらに含むことを特徴とする、請求項14に記載の方法。
【請求項20】
前記コンピュータの特徴を制限するステップは、オペレーションの速度を制限することと、利用可能なソフトウェア実行可能コードのサブセットにオペレーションを制限することのうちの一つをさらに含むことを特徴とする、請求項14に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2008−527565(P2008−527565A)
【公表日】平成20年7月24日(2008.7.24)
【国際特許分類】
【出願番号】特願2007−551270(P2007−551270)
【出願日】平成17年12月20日(2005.12.20)
【国際出願番号】PCT/US2005/046223
【国際公開番号】WO2006/076134
【国際公開日】平成18年7月20日(2006.7.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】