(57)【要約】  コンピュータは、専用の検証回路またはプロセスを用いて、自己検証するよう設定されている。検証回路は、検証プロセスを作動するためのタイマ回路と、コンピュータが予め決められた条件群に準拠していることを確認する確認回路と、コンピュータが非準拠状態であるときにコンピュータに制裁措置を課す行使回路とを備えている。検証回路は、暗号回路または、ハッシュ及びデジタル署名確認のプロセスを含む。検証回路は、検証回路自体が広範な攻撃にさらされないように、小さくポータブルであることが望ましい。コンピュータによって用いられる自己検証方法も開示されている。
2008527565.tif 000002
【特許請求の範囲】
【請求項１】
自己検証するよう設定されたコンピュータであって、
プロセッサと、
前記プロセッサに連結されたメモリと、
前記プロセッサ及び前記メモリに連結された検証回路であって、前記コンピュータの特性を検証するよう機能しさらに前記検証が失敗すると前記コンピュータの機能を制限するよう機能する検証回路と、
を備えたことを特徴とするコンピュータ。
【請求項２】
前記検証回路にインターバルの間に前記コンピュータの特性を検証させる前記インターバルを決定するトリガ回路を更に有することを特徴とする、請求項１に記載のコンピュータ。
【請求項３】
前記インターバルは統計的である、計時されている、及びランダムのいずれか１つであることを特徴とする、請求項２に記載のコンピュータ。
【請求項４】
前記検証が失敗した後は、前記検証が増加した頻度で行われることを特徴とする、請求項２に記載のコンピュータ。
【請求項５】
前記検証回路は暗号機能を有することを特徴とする、請求項１に記載のコンピュータ。
【請求項６】
前記特性は、デジタル署名されたソフトウェアコードと、メモリ領域のハッシュと、ソフトウェアコードの期限切れと、デジタル署名の取り消しと、期限切れ日とのうちの一つであることを特徴とする、請求項１に記載のコンピュータ。
【請求項７】
前記検証が失敗して前記コンピュータの前記機能を制限するために前記検証回路に応答する、行使回路をさらに備えたことを特徴とする、請求項１に記載のコンピュータ。
【請求項８】
前記プロセッサは前記検証回路を有することを特徴とする、請求項１に記載のコンピュータ。
【請求項９】
コンピュータ内の検証回路であって、
トリガ回路と、
前記トリガ回路に連結され、前記コンピュータの特性を検証するための論理回路と、
前記確認回路に連結された行使回路であって、前記論理回路からの信号に応じて、前記コンピュータのパフォーマンスを制限する行使回路と、
を備えたことを特徴とする検証回路。
【請求項１０】
暗号回路をさらに有し、前記論理回路は前記暗号回路を用いて前記特性を確認することを特徴とする、請求項９に記載の検証回路。
【請求項１１】
前記行使回路は前記コンピュータのパフォーマンスを、周期的なリセットと、プロセッサ能力の減少と、ディスプレイの解像度減少とのうちの一つにより制限することを特徴とする、請求項９に記載の検証回路。
【請求項１２】
前記トリガ回路は、時計と乱数生成器とのうちの一つを有することを特徴とする、請求項９に記載の検証回路。
【請求項１３】
前記検証回路は前記コンピュータの他の構成要素からの改ざんに対して抵抗しえることを特徴とする請求項９に記載の検証回路。
【請求項１４】
コンピュータを認証する方法であって、
検証回路を提供するステップと、
前記検証回路を前記コンピュータの特性に対応する情報によりプログラムするステップと、
前記検証回路をインターバルで作動するようにプログラムするステップと、
前記コンピュータの特性を検証するステップと、
前記コンピュータの前記特性の前記検証が失敗すると、前記コンピュータの機能を制限するステップと、
を有することを特徴とする方法。
【請求項１５】
前記検証回路を暗号シークレットでプログラムするステップをさらに有することを特徴とする、請求項１４に記載の方法。
【請求項１６】
前記検証するステップは、ランダムなインターバルと計時されたインターバルとのいずれか１つで確認するステップをさらに有することを特徴とする、請求項１４に記載の方法。
【請求項１７】
前記検証するステップは、コード機能のデジタル署名を確認するステップとメモリ領域のハッシュを確認するステップとのうちの一つを有することを特徴とする、請求項１４に記載の方法。
【請求項１８】
前記コンピュータの前記特性の確認の失敗をログし、前記コンピュータのリスタート／リセットで評価される不揮発性フラグを設定するステップをさらに有することを特徴とする、請求項１４に記載の方法。
【請求項１９】
前記コンピュータの特徴を制限するステップは、通信メッセージの数を制限することをさらに含むことを特徴とする、請求項１４に記載の方法。
【請求項２０】
前記コンピュータの特徴を制限するステップは、オペレーションの速度を制限することと、利用可能なソフトウェア実行可能コードのサブセットにオペレーションを制限することのうちの一つをさらに含むことを特徴とする、請求項１４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本特許は、コンピュータ一般に関し、特に、ソフトウェア、ファームウェア、マイクロコードの改ざんの保護に適合したコンピュータに関する。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
コンピュータシステムは、ますます複雑になってきている。複雑さが増すに従い、コンピュータの個々のコンポーネントに脆弱さが導入される機会も多くなる。これは、ソフトウェア一般のみでなく、ブートプロセスやマイクロプロセッサのオペレーションに関連するファームウェアやマイクロコードについても言える。このような複雑なシステム構成要素の徹底的なテストはもはや可能ではない。複雑なソフトウェア（ファームウェアやマイクロコードを含む）には、注意深く設計、コード、テストされた場合であっても、意図されない使用方法または副作用があるかもしれない。従って、最初に全ての設計要求事項を満たし厳しいテストプロシージャに合格したコンピュータにさえも、セキュリティギャップがあり得る。このようなセキュリティギャップは、製品の広範なリリースや隠れた脆弱性を明らかにしようという共同の努力があって初めて明らかになることがある。
【０００３】
現代のコンピュータのこのような特徴には、広範な影響がある。個人のコンピュータのセキュリティが侵害されるのみでなく、ネットワーク及びそのネットワークに接続された他のコンピュータも侵害されるかもしれない。コンピュータが侵害され、新しいソフトウェア、ファームウェアまたはマイクロコードがロードされ実行されると、さらに個々のシステム及び関連するシステムも侵害される。エージェンシーや企業への影響は広範なものになりうる。
【０００４】
攻撃に対して特に脆弱なビジネスとして、サービスプロバイダなどのスポンサーが只または助成した金額でコンピュータを売り利用毎に課金するプランがあげられ、スポンサーが将来的な収入によって助成金を取り戻すことを期待しているものである。契約の利用規定へのコンプライアンスを確保するための制御が侵害されると、スポンサーは膨大な損害に面することになる。
【課題を解決するための手段】
【０００５】
上述のように、コンピュータの複雑性と技術の進歩により、１００％効率的な方策は少なくとも２つの理由によりほぼ不可能になる。一つは、上記のように、如何なるシステムでも、明白な欠陥であれかつて発見されたことのない副作用であれ、システムの侵害をもたらし得る特徴を全く持たないと保証することはできない。第２に、技術が進歩するにつれ現在のセキュリティ方策は陳腐化し、かつてはセキュアであったシステムが侵害されることも容易にあり得る。例えば、少し前には４８ビットの鍵を用いたDESアルゴリズムはセキュアであると考えられていた。しかし現在では、コンピュータのパワーとコンピュータ同士をリンクする能力との進歩により、そのようなセキュリティ方策は実質的に役に立たなくなった。ここに記載するように、最終的なコンピュータの保護のために、コンピュータ内に「最後の防衛線」検証回路を備えることが望ましい。理想的には、検証回路は小さく携帯可能で、極めてよくテストされており、検証回路自体が新しい脆弱性を導入しないことを確認されている。さらに、検証回路はコンピュータ内の十分深くに内蔵されており、検証回路の無効化には、仕掛けるのにコンピュータの価値よりも高いコストのかかるハードウェア攻撃を要する。このような検証回路は、プロセッサまたは他の主張な半導体コンポーネント自体に埋め込まれている。検証ルーチンのコードはプロセッサのマイクロコードに埋め込まれている。理想的には最後の防衛線コード及びステートは、マイクロコードまたはファームウェアの他の部分とは離れていることが望ましい。このモジュール性により、プロセッサまたはそのマイクロコード／ファームウェアの他のどの部分が破られても最後の防衛線が侵害されることがないため、全体的なセキュリティが向上する。
【０００６】
検証回路の有効化は長い周期、恐らく数ヶ月でもよい周期で行われるが、コンピュータが「ハイジャック」されたと検証回路が判断したときに利用可能な制裁措置は厳しい。制裁措置により、コンピュータをサポートの場所に戻すまたは元のサービスプロバイダに連絡して、オペレーショナル状態を回復することが要求される。制裁措置には、コンピュータの不能化、プロセッサの厳しい低速化、プログラム実行に必要なインストラクションセットアーキテクチャ（ISA）の減少、または他の方策が含まれる。制裁措置がシンプルであればあるほど、そのセキュリティの強度を確認しやすい。制裁措置は稀有な事象であるので、制裁措置の厳格さは問題ではない。それどころか、厳格である方が、ユーザが制裁措置を単に無視したり、うっかり改ざんされたソフトウェアなどのコンピュータ部品を使ったりしないことを確実にできる。広く報じられた制裁措置が厳格であればあるほど、オリジナル設計のシステムを侵害しようという広範な試みがおきるリスクが低くなる。コンピュータの検証のプロセスには、デジタル署名ソフトウェアのプレゼンテーションや、メモリ領域のハッシュや、有効期限の評価などが含まれるが、これらに限られるものではない。例えば、助成された利用毎課金のコンピュータのユーザは、インターネットで見つけた使用量の計測方法を変えるソフトウェアを使いたくなるかもしれない。しかし、コンピュータがいきなり作動しなくなりサービスコールをするよう要求するとわかっていれば、ユーザはこのような詐欺を試みる前に熟慮するであろう。他の例では、インターネットで繁殖するかもしれない脆弱性が発見されると、広範な詐欺が行われやすい。しかし、検証回路がプロセッサまたは主要なインターフェースチップにホストされていれば、シリコン自体にハードウェア攻撃を試みそうなのは、比較的高機能の機器を有するユーザのみである。
【発明を実施するための最良の形態】
【０００７】
以下の文章は、数々の異なる実施例を詳述するものであるが、該記載の法的範囲はこの開示の最後に記す特許請求の範囲の文言によって定義されるべきであることが理解されよう。可能な実施形態の全てにつき記載することは不可能ではなくても非現実的であるので、本詳述は、例示としてのみ解釈されるべきであり可能な実施形態の全てを記載するものではない。現在の技術または本特許の出願日の後に開発される技術を用いて、本特許請求の範囲に該当する数多くの代替実施例が実施され得、これらは特許請求の範囲のスコープに入る。
【０００８】
また、本特許において「ここで用いられる『＿＿』という用語は、…を意味するとここにおいて定義される」という文章またはこれに類似した文章によって明示的に定義されない限り、その用語の明らかなまたは通常の意味以上にその用語の意味を、明示的にも暗示的にも限定することを意図はなく、そのような用語は、本特許のどの部分（特許請求の範囲を除く）に書かれた如何なる記載によってでも限定的に解釈されるべきではない。本特許の終わりの特許請求の範囲に記載された用語が、如何なる用語であっても一つの意味に一貫して本特許内で言及される限りにおいては、読者を混乱させないように明確さのためになされたものであって、その特許請求の範囲の用語を暗示または他の方法によってその一つの意味に限定することを意図するものではない。最後に、特許請求の範囲の要素が、構造を全く記載することなく「手段」という言葉及び機能によって定義されているのでなければ、如何なる特許請求の範囲の要素も、米国法３５ＵＳＣ１１２条の第６パラグラフを元に解釈されることを意図するものではない。
【０００９】
発明の機能の大部分及び発明の理論の多くは、ソフトウェアプログラムやインストラクションやＡＳＩＣ（Application Specific Integration Circuit）などの集積回路（ＩＣ）と共に、またはこれらによって最良に実施される。通常の能力を有する者は、ここに開示する概念や理論を手引きとすることにより、利用可能な時間や現在の技術や経済的状況などによって動機付けられる多大であるかもしれない努力と多くの設計選択肢にも拘らず、そのようなソフトウェアインストラクションやプログラムやＩＣを最小の実験により作成することが十分に可能であることが期待される。従って、本発明に基づく理論、概念をあいまいにするリスクを最小化し、簡潔化するため、このようなソフトウェア、ＩＣに関する更なる議論は、仮にあるとすれば、望ましい実施形態の理論及び概念に比して必要なものに限定されている。
【００１０】
多くの先行技術の高価値コンピュータ、パーソナルデジタルアシスタント、オーガナイザーなどは、セキュリティ方策の追加がなければ、前払いまたは利用毎課金のビジネスモデルにおける利用には適していないといえる。小さく、よくテストされ、改ざんが難しい検証回路は、コンピュータ変更の試みを減らし、さらに利用毎支払いのコンピュータのサービスプロバイダや、企業情報技術管理者や、インターネットサービスプロバイダやその他に、他のシステムアタックに対する最後の防御線を提供する。
【００１１】
図１は、動的ソフトウェア提供システムを実現するネットワーク１０を図示する。ネットワーク１０は、インターネットでも、バーチャルプライベートネットワーク（VPN）,または、一つまたは複数のコンピュータ、通信機器、データベースなどが通信可能に互いに接続されるようにする如何なるネットワークをも含む。ネットワーク１０は、パーソナルコンピュータ１２及びコンピュータ端末１４にイーサネット１６とルータ１８と地上線２０とを介して接続されている。一方、ネットワーク１０はラップトップコンピュータ２２及びパーソナルデータアシスタント２４にワイヤレス通信局２６及びワイヤレスリンク２８を介してワイヤレスに接続されている。同様に、サーバ３０は通信リンク３２を介してネットワーク１０に接続され、メインフレーム３４は他の通信リンク３６を介してネットワーク１０に接続されている。以下により詳しく記述するように、動的ソフトウェア提供システムの一つまたは複数の構成要素は、ネットワーク１０に接続された様々な端末のいずれにでも格納され操作されてよい。
【００１２】
図２は、ネットワーク１０に接続され動的ソフトウェア提供システムの構成要素の一つまたは複数を実施するために用いられるコンピューティング機器をコンピュータ１１０として図示している。コンピュータ１１０の構成要素には、処理部１２０と、システムメモリ１３０と、システムバス１２１とが含まれるが、これらに限定されるものではない。システムバス１２１は、システムメモリを含む様々なシステム構成要素を処理部１２０に結合する。システムバス１２１は、メモリバスまたはメモリコントローラと、周辺バスと、多様なバスアーキテクチャのいずれかを用いたローカルバスとを含む、いくつかの種類のバス構造のいずれであってもよい。限定でなく例として、そのようなアーキテクチャにはＩＳＡ(Industry Standard Architecture)バスと、マイクロチャネルアーキテクチャ（ＭＣＡ）バスと、ＥＩＳＡ（Enhanced ISA）バスと、ビデオエレクトロニクス標準協会（ＶＥＳＡ）ローカルバスと、メザニンバスとしても知られているＰＣＩ(Peripheral Component Interconnect)バスとが含まれる。
【００１３】
コンピュータ１１０は、定期的にコンピュータ１１０の状態をモニタしてこのような非準拠状態が判断されると関連するポリシーを実行するための検証回路１２５をさらに含む。検証回路１２５は、図３，４に関連して、以下により詳細に記載されている。
【００１４】
コンピュータ１１０は、多様なコンピュータ読み込み可能なメディアを典型的には含む。コンピュータ読み込み可能なメディアは、コンピュータ１１０がアクセス可能な如何なる利用可能なメディアでもよく、揮発性及び不揮発性メディア、取り外し可能及び取り外し不能メディアの両方を含む。限定でなく例として、コンピュータ読み取り可能メディアは、コンピュータ格納メディアと通信メディアとを含む。コンピュータ格納メディアは、コンピュータ読み込み可能インストラクションやデータ構造やプログラムモジュールまたは他のデータなどの情報の格納のための如何なる方法または技術によってでも実施され得る、揮発性及び不揮発性メディア、取り外し可能及び取り外し不能メディアを含む。コンピュータ格納メディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤまたはその他光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気格納デバイス、または望みの情報を格納しコンピュータ１１０でアクセスし得るその他の如何なる媒体をも含むが、これらに限定されるものではない。通信メディアは、典型的には、コンピュータ読み取り可能インストラクション、データ構造、プログラムモジュールまたは他のデータを、搬送波または他のトランスポート機構などの変調されたデータ信号により実現し、如何なる情報伝達メディアをも含む。「変調されたデータ信号」とは、信号中に情報を符号化するようにその特徴の一つまたは複数を設定または変更した信号を意味する。限定でなく例として、通信メディアは有線ネットワークまたは直接有線接続などの有線メディアや、音響、ラジオ周波数、赤外線及び他の無線メディアなどの無線メディアを含む。コンピュータ読み取り可能なメディアの範囲には、上記の如何なる組み合わせも含まれるべきである。
【００１５】
システムメモリ１３０は、リードオンリーメモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性及び／または不揮発性メモリの形をとるコンピュータ格納メディアを含む。スタートアップの間などに、コンピュータ１１０内の要素間の情報伝達を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１３３は、典型的にはＲＯＭ１３１に格納されている。ＲＡＭ１３２は、処理ユニット１２０によってすぐにアクセス可能または処理ユニット１２０に現在用いられているデータ及び／またはプログラムモジュールを典型的に含む。限定でなく例として、図２はオペレーティングシステム１３４、アプリケーションプログラム１３５、その他プログラムモジュール１３６、プログラムデータ１３７を図示している。
【００１６】
コンピュータ１１０は、その他の取り外し可能及び取り外し不能、揮発性及び不揮発性コンピュータ格納メディアも含んでいてよい。例としてのみ、図２は、取り外し不能不揮発性磁気メディアに読み書きするハードディスクドライブ１４０と、取り外し可能揮発性磁気ディスク１５２に読み書きする磁気ディスクドライブ１５１と、ＣＤＲＯＭや他の光メディアなどの取り外し可能不揮発性光ディスクに読み書きする光ディスクドライブ１５５とを図示している。例示のオペレーティング環境において用いることのできる他の取り外し可能及び取り外し不能、揮発性及び不揮発性コンピュータ格納メディアには、磁気テープカセット、フラッシュメモリカード、ＤＶＤ，デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどを含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は、典型的にはインタフェース１４０などの取り外し不能メモリインタフェースを通してシステムバス１２１に接続されており、磁気ディスクドライブ１５１と光ディスクドライブ１５５とは、典型的にはインタフェース１５０などの取り外し可能メモリインタフェースによりシステムバス１２１に接続されている。
【００１７】
上述され図２に図示されたドライブとそれらに関連するコンピュータ格納メディアは、コンピュータ読み取り可能なインストラクション、データ構造、プログラムモジュール、及びコンピュータ１１０のためのその他データの格納部を提供する。図２では、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他プログラムモジュール１４６、プログラムデータ１４７を格納するものとして図示されている。これら構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他プログラムモジュール１３６、プログラムデータ１３７と同じでも異なっていてもよいことに注意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他プログラムモジュール１４６、プログラムデータ１４７は、異なるコピーであることを少なくとも示すために異なる番号を与えられている。ユーザは、キーボード１６２と、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１となどの入力デバイスによって、コンピュータ２０にコマンドや情報を入力する。その他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、または類似にものが含まれる。これらの、またその他の入力デバイスは、システムバスに結合されたユーザインタフェース１６０を介して、処理部１２０に接続されていることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースやバス構造によって接続されていてもよい。モニタ１９１または他の種類のディスプレイデバイスも、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続されている。モニタに加えてコンピュータはさらに、外部周辺インタフェース１９０を介して接続されたスピーカ１９７やプリンタ１９６などの、他の周辺出力デバイスを含んでもよい。
【００１８】
コンピュータ１１０は、ネットワーク化された環境の中で、リモートコンピュータ１８０などの一つまたは複数のリモートコンピュータへの論理接続を用いて作動する。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードでよく、図１にはメモリ格納デバイス１８１しか図示されていないものの、典型的には、コンピュータ１１０に関連して上述された要素の多くまたは全てを含んでいる。図１に図示された論理接続は、構内通信網（ＬＡＮ）１７１と、広域通信網（ＷＡＮ）１７３とを含むが、他のネットワークをさらに含んでも良い。このようなネットワーキング環境は、オフィスや企業ワイドコンピュータネットワーク、イントラネット、インターネットにはよく見られる。
【００１９】
LANネットワーキング環境で用いられるとき、コンピュータ１１０はネットワークインタフェースまたはアダプタ１７０を介してLAN１７１に接続されている。WANネットワーキング環境で用いられるとき、コンピュータ１１０は典型的には、モデム１７２、またはインターネットなどのWAN１７３上で通信を設立するための他の手段を備えている。モデム１７２は、内蔵でも外付けでもよく、ユーザインプットインタフェース１６０または他の適当な機構を介してシステムバス１２１に接続されている。ネットワークされた環境においては、コンピュータ１１０に関連して図示されたプログラムモジュール、またはその一部は、リモートメモリ格納デバイスに格納されていてよい。限定としてではなく例として、図２にはリモートアプリケーションプログラム１８５がメモリデバイス１８１に存するものとして開示されている。図示されたネットワーク接続は例示であり、コンピュータ間で通信リンクを設立する他の手段が用いられてもよいことが理解されよう。
【００２０】
図３は、コンピュータ１１０上のソフトウェア、ファームウェア、またはマイクロコードの正当性を確認するのに適した検証回路１２５を示している。モニタまたはハイパーバイザに比して検証回路１２５は、コンピュータ１１０の残りの部分におけるセキュリティの脆弱性に対する最後のバックアップとしての役目を有する。検証回路１２５に関連するコードまたは回路構成は、十分にテストされ得るに十分な小ささであり、理想的には、公開暗号アルゴリズムのように公開の精査及びテスティングに供されたことがあるものである。検証回路１２５は、断固とした攻撃者に対する最後の利用可能な防御であり、利用回毎支払い(pay per use)やプリペイド(pay as you go)コンピュータ・ディストリビューション／ビジネスモデルの防御において特に有用である。
【００２１】
検証回路１２５は、確認機能２０２と、暗号サービス２０４と、時計またはタイマ２０６と、乱数生成器２０８と、行使機能２１０とを含む、いくつかの標準要素を備えている。検証回路１２５はさらに、メモリ２１２を備えている。メモリ２１２はランダムアクセスメモリ（RAM）２１４と、鍵や証明書や他のシークレットやフラグなどの持続的な情報を格納するのに用いられる不揮発性メモリ（NVM）２１６とをさらに備えている。メモリはさらに、リードオンリーメモリ（ROM）２１８を備えていてよい。ROMは一般的に、改ざんに対して抵抗性が高く、従ってROM２１８は検証回路１２５に関連する実行ルーチンを格納する場所としては理想的である。加えて、例えばルート認証局(root certificate authority)または公開鍵などの絶対変わらない鍵をROM２１８に格納してもよい。確認及び行使機能２０２及び２１０は、正当なオペレーティング状態の確認のタスク及びコンピュータ１１０が非準拠状態であった場合の制裁措置に関連するハードウェア、ファームウェア、またはソフトウェアであってよい。暗号サービス２０４は、SHA-1ハッシュ・アルゴリズムなどのハッシュエンジンを含み、さらにRSA（商標）非対称公開鍵アルゴリズムなどの暗号アルゴリズムをさらに含んでもよい。暗号サービス２０４は、保護すべき対象コードの真正性、整合性の確認などの検証テストを実行／サポートし得るべきである。これは、公開鍵暗号法、暗号ハッシュ、デジタル署名スキーム、またはこれら技術の組み合わせを用いて行われる。タイマは単純なカウンター回路でもよいし、フルのリアルタイム時計として実施されていてもよい。
【００２２】
乱数生成器（RNG）２０８は、第３者にナンス(nonce)またはチャレンジを供給するために統計的に十分な乱数を供給するのに用いられる。RNG２０８は、コンピュータ１１０の確認をトリガするために、予測不能な現象を生成するのにも用いられる。つまり、RNG２０８から生成された可能な乱数の領域から、予め数値または数値集合を選んでおく。RNG２０８は、一定のインターバルで乱数を生成する。生成された数値が選択された数値または数値集合に合致したとき、その合致が確認オペレーションをトリガする。数値生成率と、RMG２０８の最大領域と、数値集合中の数値数が分かっていれば、合致現象と合致現象との間の時間の中間値を求めるのは容易である。例えば、１億個の数字のプールの中から一秒に数字一つ生成すると、合致する数字が１００になるのは、以下の式を用いるとテスト頻度での中間値では１１．５７日である。  
中間合致時間＝（RNG領域）／（集合中の数×頻度）
【００２３】
例示の実施形態では、検証回路１２５は、コンピュータ１１０の日常的なオペレーションに関連するTPM(Trusted Platform Module)や如何なるソフトウェアモニタかも離れている。TPMの適用は米国特許出願「モニタを用いてＴＰＭを常に“オン”にロックする方法及びシステム」、代理人事件番号30835/40478に開示されており、この出願内容はここに統合される。TPMは、ブート及び初期化プログラムの間に信頼される環境(trusted environment)を設立するのに用いられる集積回路である。TPMは、モニタまたはハイパーバイザと共に用いられ、信頼される環境の基礎を築く。TPM及びモニタ／ハイパーバイザを用いた信頼される環境の実施は、コードとしては大きくなりがちである。このようなコンポーネントの全ての可能なセキュリティホールについて網羅的にテストすることは不可能であり、従ってセキュリティのために依存していたコンポーネントが実際には脆弱性を導入することもありうる。しかも、モニタなどのソフトウェア要素は、インターネットで簡単に増殖する攻撃を受けやすく、ビジネススポンサーに広範な損害をもたらしがちである。最後に、TPMやモニタなど、信頼される環境の構成ブロックは、自身の整合性をチェックするには適さず、特に最初のオペレーションの後は、モニタ、または信頼される環境の他の要素を変更する攻撃を阻止することができない。オペレーティングシステムまたはセキュリティ構成ブロックの侵害による攻撃に対する長期的な脆弱性を減少するため、検証回路１２５は他のシステムセキュリティ構成ブロックの整合性をチェックするように設計されている。検証回路１２５自身、特にそのソフトウェアコンポーネントは十分に小さく、整合性を確認するためのテストを容易に行うことができる。一つの実施形態では、暗号サービス２０４などの、検証回路１２５の重要な要素は、自身を攻撃からさらに守るため、ハードウェアで実施される、または異なるプロセッサ及びマイクロコード（図示なし）を使用している。検証回路１２５は、TPM／モニタと異なり、ブートプロセスが終わり通常のオペレーションが進行中となった後でも、自身上のコンポーネントの整合性をチェックするように設計及び実施されている。
【００２４】
さらに、ロジック／コード及びステートをシステムの残りの部分から離すことが望ましい。例えば、CPUマイクロコードが検証回路１２５によって保護されていると仮定すると、CPUマイクロコードが検証回路１２５のロジック／コード及びステートにアクセスする手段がないようにすることが望ましい。もう一つの検討すべき方策としては、検証回路１２５のロジック／コードを例えばROMなどのハードコードにし、上書きの余地がないようにすることである。
【００２５】
正しく設計及び実施されれば、検証回路１２５は様々なデバイス、プラットフォーム上で再利用可能である。つまり、メモリ領域などが、期待された計測値及び関連する基準に準じてプログラムされている限り、検証回路１２５は、パーソナルコンピュータやパーソナルデジタルアシスタントから携帯電話、埋め込まれたシステム(embedded system)、ファームウエア・ベースのコンポーネント、マイクロコード・ベースのCPUなどにまたがるアプリケーションで利用可能である。検証回路１２５がコンピュータ１１０に非準拠の測定をする頃には、コンピュータ１１０は打破され他の防衛線は全て侵害されたと仮定してよい。従って、検証回路１２５が行う制裁措置は厳格であり、従ってプラットフォームまたはオペレーティングシステムに特定のものでは必ずしもない。
【００２６】
検証回路１２５の一実施例では、図４に示すように、検証回路１２５をプロセッサと同じチップに配置している。図４の高度に簡略化したブロック図では、図２の処理部１２０にあるような、プロセッサ３００の主要構成要素が描かれている。プロセッサへのインタフェースはシステムバス３０２及びバスインタフェース３０４を介する。インストラクションはインストラクションデコーダ３０６で評価(evaluate)される。インストラクションは、インストラクション実行ブロック３０８で実行されキャッシュされる。プロセッサまたはプロセッサ／コンピュータマイクロコードのためのプログラムまたはファームウェアインストラクションは、マイクロコードROM３１０に格納されている。データは、整数実行ユニット３１２及び浮動小数点ユニット３１４でさらに操作される。結果は、データキャッシュ３１６中のシステムバス３０２に配置されるよう、格納され配列され(sequenced)る。集積検証回路１２５で実施されるとき、プロセッサ３００は、タイマ３２０と乱数生成器３２２とのいずれかまたは両方、または／及び不揮発性メモリ３２４を含むトリガ回路３１８をさらに有する。タイマ３２０及び乱数生成器３２２の機能は上述のものと同じである、または類似している。トリガ回路３１８は、確認マイクロコード３２４が定期的に実行されることを確実にするために用いられる。
【００２７】
プロセッサ３００に含まれると、別体の検証回路１２５の機能は、システム全体へのアクセスがより良く、さらに攻撃からもより良く防御される。プロセッサなどの高度に集積されたデバイスに対するハードウェア攻撃をしかける技術は存在するが、このような攻撃は通常高機能の機器と高いスキルを要し、大きなスケールでこういった攻撃をしかけることは難しい。
【００２８】
図５を参照しつつ、コンピュータソフトウェア、ファームウェアまたはマイクロコードの真正性及び／または整合性を検証するための方法を示すフローチャートにつき記載及び既述する。設定(４０１)の間、メインコンピュータ全体の初期製造工程または、プロセッサチップまたは回路基板など、メインコンピュータの部品の製造の間、コンピュータ１１０には検証回路１２５が組み込まれる（４０２）。検証回路１２５が一つまたは複数の分離した構成要素を使っているとき、検証回路１２５を回避するまたは取り替えるハードウェア改ざんの困難性を増すため、回路は回路基板に埋め込まれるか、若しくは他の構成要素の下に配置される。
【００２９】
そして検証回路１２５は、テストされる特徴のみでなく如何なる必要とされる暗号シークレットまたはデータをも含めてプログラムされる（４０４）。例えば、信頼された認証局(Certificate Authority)と関連するルート認証や公開鍵や、生成された対称鍵がインストールされる。これは、例えば（検証される）対象のロジックのバージョン情報など、様々なデータの真正性を確認するのに用いられる。もう一つの可能な利用法としては、信頼されたパーティ(trusted party)による検証回路１２５のプログラミングのアップデートを許可することである。さらに、アップデートなど受領した情報を別の暗号スキームを用いての確認するために、一つまたは複数の追加の非対称鍵もプログラムされる。暗号確認は、制裁措置をクリアする際、自動的に行われるのでなければ、要求される。別の例では、期待されたハッシュの値は、該期待されたハッシュに対して計測するためのメモリ領域と共に、プログラムされる。検証回路１２５にプログラムされるさらに別の側面は、制裁措置、または段階的に増大する一連の制裁措置である。
【００３０】
検証回路１２５がプログラムされると（４０４）、検証回路１２５を作動するインターバルがプログラムされる（４０５）。インターバルは、管理者やサービス技術者がテストの頻度を増やすことができるように、他のプログラムとは別にプログラムされている。例えば、前回の検証テストで失敗したシステムの状態を回復した後、（そのシステムまたはユーザに対する減衰した信頼を反映して）技術者はテストの頻度を１年に１回から１月に１回とする。
同様に検証回路１２５は、検証テストの失敗など様々な条件により、テストの頻度を自立的に増加する（４１２）。インターバルは、いくつかの基準のいずれか、またはその基準の組み合わせに基づく。テストは、与えられたカレンダー日に、またはその後に行われる。テストは、電源がオンである時間数など、与えられた利用期間後に行われてもよい。上述の乱数を用いた統計的基準を用いても良い。
【００３１】
リスタートの後、例えば不揮発性メモリ２１６に格納された制裁措置フラグを用いて、コンピュータ１１０が制裁されている最中であることを示してもよい。行使回路２１０は、前回の制裁措置を再作動する（４１４）が、場合によっては、制裁措置は段階的により荒っぽい方策を取るよう進展する。いくつかの実施形態では、制裁措置は急激なものであり、コンピュータ１１０を作動不能にする。利用可能な不揮発性メモリは、制裁措置がどのように行われ、ログされ、修復されるかに影響を及ぼす。例えば制裁措置は、不揮発性メモリ２１６に設定されたフラグビットに応答する。不揮発性メモリ２１６が容易に利用可能ではない、またはそれ自体が改ざんされている場合は、制裁措置を受けた状態を示すために可融リンク(fusible link)を用いてもよい。制裁措置がすでに行われていないことを示すためには、フューズを有するチップを取り替えるか、若しくは追加の可融リンクを「飛ばし」てもよい。
【００３２】
制裁措置フラグがアクティブでなければ、ブロック４０７のNo肢が取られ、検証回路１２５は、４０５でプログラムされたインターバルに対応する、周期的テスト（４０８）のモードに入る。インターバルは、上述のように設計上の選択に基づき、特定の(exact)日付、固定されたまたは変更可能な期間のインターバルに対応し、またはある基準の下でランダムなベースである。
【００３３】
インターバルは、４０８で周期的にチェックされ、インターバルがまだ終了していなければ待ちが課され、４０８のNO肢が取られ、インターバルテスト４０８が繰り返される。インターバルが切れると、４０８からYes肢が取られる。ブロック４１０で検証テストが行われる。検証テスト４１０は、メモリ領域や、プログラムや、ソフトウェアコードや、ソフトウェアコードの断片や、ファームウェアや、マイクコードなど、あらかじめ決められた構成要素のデジタル署名を確認することを含む。デジタル署名は、周辺機器、ドライバ、モニタ、オペレーティングシステム、基本入出力システム(BIOS)、埋め込まれた(embedded)コンピュータファームウェア、CPU、またはコンピュータマイクロコードなどと関連付けられている。より包括的なテストは、これら構成要素の一つ以上をテストまたは確認することを含む。検証テスト４１０は、メモリ領域においてハッシュを計算することを含むまたは伴う。メモリ領域には、例えばRAM及び不揮発性メモリのセグメントなど、メモリの複数の部分が含まれる。テストされるメモリは、製造中に提供された、または保護及び検証の対象であるコード／ファームウェア／プログラムのアップデートに伴うデジタル署名メタデータにより特定される一つまたは複数のメモリ部分を含んでいる。
【００３４】
メタデータは、最終的なルート認証局までの認証ヒエラルキーのチェインを提供する拡張した認証を含む。検証回路１２５が少なくとも時々インターネットにアクセスするときは、証明書の有効性を認証取り消しリスト(CRL: certificate revocation list)を用いてチェックする。同様に、検証回路１２５が少なくとも時々インターネットにアクセスするときは、検証されるコードのバージョン、従って検証ソフトウェアデータのバージョンを確認し、もし必要であれば更新する。
【００３５】
検証テストが失敗すると、４１０からNo肢が取られ、任意である失敗メッセージがログされる（４１２）。ログされた失敗メッセージは、後の分析および復旧に用いられる。再テストのためのインターバルも設定され、特に、コンピュータが準拠状態に回復したか判断するためにインターバルが減少される。回復の後もなお、インターバルは短くなったままである。
【００３６】
そして、コンピュータ１１０の機能を制限するために、制裁措置が課される（４１４）。制裁措置は、コンピュータ１１０を完全に不能化する、ディーラまたは認可されたサービス技術者による保持または修理を要求するなど、厳格なものである。他の、より厳格でない制裁措置が作動されてもよい。コンピュータの機能を制限する他の制裁措置には、通信アクセスを制限する、送受信できるメッセージ数を制限する、オペレーションのスピードを制限する、またはプロセッサ３００のインストラクション・セット・アーキテクチャ(ISA: Instruction Set Architecture)を制限する、などがある。他の制裁措置には、グラフィックの表示の解像度または色の深みを減らすこと、または頻繁かつ周期的なコンピュータ１１０のリセットが含まれる。
【００３７】
検証回路１２５は、４１４で制裁措置が課された後にもテストを続けるようプログラムされている。ループは４１４から４１０に進む。検証テストに合格すると、コンピュータ１１０がスポンサーの要求に再び準拠していることに応じて、如何なる既存の制裁措置もクリアされる。この例では、検証回路１２５自身が制裁措置をクリアする役割を負う。他の実施形態では、制裁措置はサービス技術者によって、または確認された信頼されたソースからのコマンドに応じて取り除かれる。
【図面の簡単な説明】
【００３８】
【図１】コンピュータネットワークの簡単化された代表的なブロック図である。
【図２】図１のネットワークに接続されたコンピュータのブロック図である。
【図３】図２のコンピュータに類似の典型的なコンピュータのブロック図であり、検証回路の詳細を開示する図である。
【図４】検証回路を含む代表的なプロセッサのブロック図である。
【図５】コンピュータソフトウェア、ファームウェア、マイクロコードの真正性及び／または整合性を検証する方法を示すフローチャートである。
【図１】
2008527565.tif 000003
【図２】
2008527565.tif 000004
【図３】
2008527565.tif 000005
【図４】
2008527565.tif 000006
【図５】
2008527565.tif 000007
【国際調査報告】
2008527565.tif 000008