JP2010541084A - セキュア・カーネル設計による安全基準の差別化 - Google Patents

セキュア・カーネル設計による安全基準の差別化 Download PDF

Info

Publication number
JP2010541084A
JP2010541084A JP2010527399A JP2010527399A JP2010541084A JP 2010541084 A JP2010541084 A JP 2010541084A JP 2010527399 A JP2010527399 A JP 2010527399A JP 2010527399 A JP2010527399 A JP 2010527399A JP 2010541084 A JP2010541084 A JP 2010541084A
Authority
JP
Japan
Prior art keywords
application
key
kernel
secure kernel
supplier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010527399A
Other languages
English (en)
Other versions
JP5285075B2 (ja
Inventor
村瀬、正名
阪本、正治
清水、かんな
ズバルスキー、ヴラディーミル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010541084A publication Critical patent/JP2010541084A/ja
Application granted granted Critical
Publication of JP5285075B2 publication Critical patent/JP5285075B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot

Abstract

【課題】データ処理システムで実行されるアプリケーションが、信用できる供給源だけに由来することを確実にするための方法、コンピュータ・プログラム製品、およびデータ処理システムを開示する。
【解決手段】ある好適な実施形態において、安全オペレーティング・カーネルは、信用できるソフトウエア供給元に対応するキーを包含する「キー・ホルダ」を維持する。該安全カーネルは、供給元キーを使って、所与のアプリケーションが承認された供給元によって署名されていることを検証する。オプションとして、管理者ユーザは、ユーザが独立ソフトウエア開発者からのソフトウエアを実行できるようにするため、前述の供給元キー検証を無効化することができる。
【選択図】図8

Description

本発明は、一般的に、データ処理システムにおける安全なソフトウエア実行に関する。具体的には、本発明は、データ処理システムにおいて実行されるアプリケーションが、信用できる供給源だけに由来することを確実にする方法を対象とする。
オペレーティング・システムまたはランタイム環境にとって基本的なタスクの一つは、コンピュータ・システムの安全および安定を維持することである。理想的には、オペレーティング・システムまたはランタイム環境は、システムの安全および安定が危険にさらされないとの証明が可能な、「安全」なアプリケーションだけが実行を許されることを確実にすべきである。残念な現実は、計算可能性理論の分野におけるコンピュータ科学者および数学者が長年にわたって存知しているように、前もって、ある所与のプログラムが「安全」だと間違いなく予知するのは非常に困難であり、多くの場合不可能だということである。このため、もっと実際的な解決法では、安全に実行可能だと信用できるアプリケーションだけを許可するようにしている。
この「信用」は2つのやり方で確立できる。一つは、コード自体を検査し、安全性問題の特定の徴候を検知することである。これは、ウィルス・スキャン・ソフトウエアが取り入れているアプローチであり、既知のウィルスの形跡をスキャンする。また、この技法は、JAVA(R)仮想マシンのバイトコード検証スキームにも採用されており、危険な、または破損したコードを示すパターンを探索する。JAVAは、カリフォルニア州サンタクララのSunMicrosystems,Inc.によって開発された、オブジェクト指向のプログラミング言語およびランタイム環境規格である。
もう一つのやり方は、「信用できる」アプリケーション、すなわち信用できる供給源から得たアプリケーションだけを実行許可することである。JAVA仮想マシンは、この第二の方法にも同様に対応していて、JAVAは、デベロッパがJAVAコードにデジタル署名を添えることができるようにしており、JAVA仮想マシンが該署名を実行時に検証することができる。JAVA仮想マシンは、特定のセキュリティ・センシティブなオペレーションを、信用できる供給源がデジタル署名したJAVAコードだけに実施させるように設定することができる。
JAVAバイトコードは、仮想マシン中で実行されるので、該仮想マシンが、所与のオペレーションに関連する潜在的安全リスクについて、有害な可能性があるバイトコードがまさに実行されんとする時に「オンザフライ(実行時に)」でランタイム判定を行うことができる。この能力は有利であるが、一部のアプリケーションにおいては、仮想マシンを使うことにより課される付加的な複雑性および計算コストが不利点となる。さらに、仮想マシンはソフトウエアなので、(それがデジタル署名を検証するため使用する)自分の暗号キー群を、ソフトウエアがアクセス可能な記憶装置内に格納しておかなければならない。これらのキーがかく格納されるという事実は、これらが、他の一切のデータと同様に変更や置き換えにさらされていることを意味する。従って、格納されているキー一式を単に変更することによって、JAVA仮想マシンが課す安全規制を迂回することが可能である。
従って、必要とされるのは、信用できるコードだけがコンピュータ・システムで実行されることを確実にする、効率的でありながら高い安全性のある方法である。本発明は、この問題およびその他の問題に対する解決法を提供し、従来の手法に優れる他の利点を提供する。
上記に鑑み、本発明は、データ処理システムで実行されるアプリケーションが、信用できる供給源だけに由来することを確実にするための方法、コンピュータ・プログラム製品、およびデータ処理システムを提供する。ある好適な実施形態において、セキュアな初期化ハードウエアが、メモリ中にセキュア・カーネルをロードして復号し、該セキュア・カーネルは内蔵暗号キー・ペアを包含する。該セキュア・カーネルとは別に、信用できるソフトウエア・ベンダに対応するキー群を包含する「キー・ホルダ(keyring)」が維持され、その各キーには、該内蔵暗号キー・ペアの秘密キーを使ってデジタル署名がされている。セキュア・カーネルによって、アプリケーションが実行のためメモリ中にロードされると、該セキュア・カーネルは、その内蔵暗号キー・ペアの公開キーを使って、自分のキー・ホルダ中のベンダ・キーを検証する。ベンダ・キーの正当性を確証したならば、次いで、そのベンダ・キーを使って、該アプリケーションに関連付けられた公開キーの正当性を検証する。しかる後、このアプリケーションの公開キーを使って、アプリケーション・イメージの完全性を検証する。ユーザが、独立ソフトウエア・デベロッパ(自分に対するベンダ・キーを持たないデベロッパ)からのソフトウエアを実行できるようにするため、オプションとして、前述のベンダ・キー検証機能を無効にすることもできる。
上記は要約であって、従い、必然的に単純化、一般化、および細部の省略が含まれている。それ故、該要約が説明のためだけのものであり、決して限定を意図したものでないことを当業者はよく理解していよう。本発明の他の特徴、発明的特質、および利点は請求項だけによって定義され、これらは以下に記載する非限定的な詳細説明の中で明確になろう。
当業者は、添付の図面を参照することにより、本発明をより良く理解し、その数々の目的、特質および利点を明らかにすることができよう。
本発明の好適な実施形態を実行可能な、典型的データ処理システムのブロック図である。 本発明の好適な実施形態による、二次処理ユニットのブロック図である。 本発明の好適な実施形態により作製されたデータ処理システム中のメモリ使用状況を示す、メモリ・マップである。 本発明の好適な実施形態により作製されたデータ処理システム中で使用するアプリケーション400のメモリ図である。 本発明の好適な実施形態による、セキュア・カーネルの基本的実行フローのフローチャート表現である。 本発明の好適な実施形態による、セキュア・カーネルの基本的実行フローのフローチャート表現である。 本発明の好適な実施形態による、セキュア・カーネルの基本的実行フローのフローチャート表現である。 本発明の好適な実施形態における、アプリケーション・コードの信用性の検証を確実にするためのスキームを示す図である。 本発明の好適な実施形態における、アプリケーション・コードの信用性を検証するプロセスのフローチャート表現である。 本発明の好適な実施形態における、信用できるアプリケーションの事前正当性確認をするプロセスのフローチャート表現である。 本発明の好適な実施形態における、厳格基準モードを無効化する別のプロセスのフローチャート表現である。
以下の記載は、本発明の一例の詳細な説明を提示することを意図したものであって、発明自体を限定するものと取るべきではない。それどころか、その変形は数を問わず本発明の範囲に含めることができ、本明細書の後に添付された請求項中に定義されている。
図1は、本発明の好適な実施形態を実行可能な、典型的データ処理システム100のブロック図である。データ処理システム100は、単一の集積回路にいくつかのプロセッサ・コアを包含するモノリシック・マルチプロセッサ101を含む。モノリシック・マルチプロセッサ101は、内部バス104で連結された、汎用一次処理エレメント102と、もっと特殊化された計算集約的機能を実施するためのいくつかの二次処理ユニット(二次処理ユニット110、112、および114)とを含む。モノリシック・マルチプロセッサ101の外部にある外部バス105は、モノリシック・マルチプロセッサ101を、主メモリ106および二次記憶装置108、並びに他の周辺機器(図示せず)に結合している。
二次処理ユニット110、112、および114の各々は、主メモリ106に加えて、それ自体のローカル・メモリを包含する。これにより、二次処理ユニット110、112、および114は、分離モードにおいて一次処理エレメント102から独立して作動することが可能になり、該モードでは、個別の二次処理ユニットが、そのローカル・メモリを用いて、一次処理エレメント102からの干渉なしに計算を実施する。分離モードでないときは、二次処理ユニット110、112、および114は、一次処理エレメント102がそれらのそれぞれのローカル・メモリ空間にアクセスすることができるようにすればよい。この好適な実施形態において、一次処理エレメント102は、(主メモリ106中の)メモリ保護のためのハードウエア・サポートを含むが、二次処理ユニット110、112、および114は、分離モードの間、二次処理ユニット内のローカル・メモリへの不適切なメモリ・アクセスを防止するためのメモリ保護ハードウエアを含有していない。
本発明の好適な実施形態による、二次処理ユニット110のさらに詳細な描写が、図2に示されている。二次処理ユニット110は、(モノリシック・マルチプロセッサ101の内部の)内部バス104に結合されているが、それ自体の内部にある自分のイントラユニット・バス222も含有する。二次処理ユニット110は、二次処理ユニット110内で格納された命令プログラムを実行するため用いる、制御ロジック、レジスタ、および機能ユニットを含む主データパス220を包含する。二次処理ユニット110は、主データパス220に加え、それ自体のローカル・ランダム・アクセス・メモリ(RAM:randomaccess memory)224、および、各稼動セッション間で持続的に情報を格納しておくための持続記憶メモリ228(これは、フラッシュ・メモリなどの不揮発性メモリ技術を含むものとも含まないものともすることができる)を包含する。
二次処理ユニット110の起動は、セキュアな初期化ハードウエア226によって取り扱われ、該ハードウエアは、主データパス220からは独立している。なお、この文脈において、「初期化」という用語は、二次処理ユニット110の初期化を言及するため大まかに用いられ、データ処理システム100全体の初期化と同時に行われる必要はない。本発明のある好適な実施形態において、二次処理ユニット110の初期化は、二次処理ユニット110が分離モードにされる都度実施され、例えば、実際のシステムの再初期化と再初期化との間に何回も実施されればよい。従って、この文脈において、「初期化ハードウエア」とは、セキュア・カーネルを実行するため使われる特定の処理ユニットまたはデータパス(本明細書で説明する好適な実施形態の場合には、これは二次処理ユニット110である)を初期化するため用いられるハードウエアをいう。
しかしながら、用語「初期化」のこういった使用が、本発明の範囲を、該好適な実施形態の特定のハードウエアに対する初期化に限定するものと理解すべきではない。例えば、本発明の暗号ベースの保護スキームは、単一データパス・プロセッサ(ないしユニ・プロセッサ)に適用することも可能で、この場合、セキュアな初期化ハードウエアによる単一データパスの初期化は、データ処理システム全体の「ウォーム初期化」または「リセット」と基本的には同じことになるであろう。
セキュアな初期化ハードウエア226は、二次処理ユニット110の初期化中に主データパス220をリセットし有効化する機能に加え、該初期化プロセスの一部として、システム・カーネルの暗号マスタ・コピー(マスタ・コピー230)をローカルRAM224中に復号するための復号ハードウエアをも包含する。マスタ・コピー230を復号するための復号キーは、セキュアな初期化ハードウエア226中に内蔵されており、主データパス220からは(付言すればイントラユニット・バス222からも)これを読み取ることはできない。これは、該キーを、セキュアな初期化ハードウエア226の内部の不揮発性メモリに安全に格納するか、あるいは、復号キーを格納するのでなく、セキュアな初期化ハードウエア226のロジック中に復号プロセスを実体配線して、該復号ロジック中に非明示的に組み込むことによって、達成することができる。システム・カーネルが復号されたならば、セキュアな初期化ハードウエア226は、主データパス220をトリガし、復号されたセキュア・カーネルの実行を開始させる。次に、復号されたセキュア・カーネルは、公開キー暗号法とデジタル署名の検証との組み合わせを用いて、二次処理ユニット110に対してローカルであって分離モードにおいて使用可能なソフトウエア・ベースの保護構造を提供する。
公開キー暗号法には、暗号化および復号化のため別のキーが使われる。各当事者は2つのキー、暗号化に使われる「公開キー」と、該公開キーを使って暗号化されたメッセージを復号するのに使われる「秘密キー」とを有する。当事者の公開キーは、その当事者が、その公開キーを、該当事者に暗号メッセージを送信したい一切の人が利用できるようにしているという意味で「公開」されており、一方、秘密キーは秘密に保たれている。複数の当事者が同一の公開キーを所有することはできても、その公開キーで暗号化されたメッセージは、秘密キーを使ってだけ復号することができる。言い換えれば、秘密キーを持たない限り、公開キーで暗号化されたメッセージを復号するのは計算的に実行不可能である。これが、暗号化と復号化の双方に同じ秘密キーを使う従来の秘密キー暗号システムと大きく違う点である。おそらく、最もよく知られもっと広く用いられている暗号システムは、リベスト−シャミア−アドルマンないしRSA(Rivest−Shamir−Adleman)暗号システムであり、これは、米国特許第4,405,829号に記載されている。公開キー暗号法は、第三者による傍受を防止できるので、インターネットを介して安全な取引を行うため広く使われている。
公開キー暗号法は、情報を秘密に保つには非常に有用であるが、公開キー暗号法は、偽造されたまたは破損した情報に対する保護はしない。公開キーは、他の人に配布することができ、公開キーを有するものは誰でも、メッセージを秘密キーを使ってだけ読むことが可能なように暗号化できるので、公開キー暗号法は、メッセージの受信者が、受信されたメッセージが本物か、自称された発信源から来たものかどうかを知るいかなる方法も備えていない。このため、公開キー暗号法は、多くの場合、通信の信頼性を証明しメッセージの完全性を検証するため使用可能な他の暗号化技法と併せて使われる。デジタル署名は、メッセージの発信者の身元を検証するために使用可能な、公開キー暗号法に対するうってつけの補完技法である。デジタル署名の場合、メッセージの送信者は公開/秘密キーのペアを有する。送信者がメッセージを送信するとき、その送信者は、自分の秘密キーとメッセージ自体のテキストとを使って、該メッセージに添付可能なコードを計算する。このコードをデジタル署名という。メッセージの受信者は送信者の公開キーを有しており、これを使って、特定のメッセージに添付されたデジタル署名が当該公開キーに対応する送信者の秘密キーを使って署名されたことを検証することができる。最初期のデジタル署名スキームは、リベスト−シャミア−アドルマンないしRSAデジタル署名スキームで、これもRSA公開キー暗号システムと同様、米国特許第4,405,829号に記載されている。
本発明のある好適な実施形態は、公開キー暗号法およびデジタル署名の双方を広範に使用し、データの秘密性を提供し、データの全体性を保持し、不当な処置を防止する。しかしながら、本発明の実施が、いかなる特定の種類の暗号システムまたはデジタル署名スキームの使用にも依存していないことを当業者は認識しよう。本発明の実施形態には、現在既知のまたは将来開発される、任意の暗号システムまたはデジタル署名スキームを利用することができる。
図3は、本発明のある好適な実施形態により作製されたデータ処理システム中のメモリ使用状況を示す、メモリ・マップである。該システム中で一番の特権ソフトウエア・ピースは、セキュア・カーネル302であり、その主要機能は、カーネル拡張域304に所在するカーネル拡張群を含め、他のソフトウエア・ピースの正当性確認をし信頼性証明をすることである。カーネル拡張群は、システム・ソフトウエアの主たる機能性を提供し、必要に応じまたは所望により、これらを更新、置き換え、または追加することができる。他方、セキュア・カーネル302は、最低限の機能性を与えられており、データ処理システムの寿命期間、同一のままであるよう意図されている。セキュア・カーネル302は、そのセンシティブな内在部分が、データ処理システム中に存在する他のプログラムによる検査またはアクセスから保護されており、「安全」になっている。後記で示すように、この安全性は、秘密情報の選択的削除と、暗号技法の注意深い使用との組み合わせによって維持される。セキュア・カーネル302内に収納された内部情報のセンシティブなピース群のうちには、セキュア・カーネル302の当該特定コピーだけに固有の秘密キーがある。本発明のある好適な実施形態において、セキュア・カーネル302の秘密キーは、当該特定チップだけに固有なものである(同一製造者の同一の種類の同一バージョンの別のチップであっても、違った秘密キーを有することになる)。また、セキュア・カーネル302は、その秘密キーに対応する公開キーを有するが、公開キーは(これは公開のキーなので)秘密にする必要はない。セキュア・カーネル302に収納された情報の他のセンシティブなピース群には、他の暗号キー、および特別に許可されるものと見なされるオペレーションを実施するための命令群が含まれる。
セキュア・カーネル302は、二次処理ユニット110がセキュアな初期化ハードウエア226によって初期化される都度、マスタ・コピーからメモリ中にロードされる。このマスタ・コピーは、暗号形式で格納される。マスタ・コピーを復号するため必要な復号キーは、セキュアな初期化ハードウエア226(図2)中に組み込まれており、ソフトウエアがアクセスすることはできない。従って、セキュア・カーネル302は、セキュアな初期化ハードウエア226が起動されているときにだけ(前述のように、二次処理ユニット110の初期化中に)メモリにロードすることができる。これにより、セキュア・カーネル302のセンシティブな部分を秘密に保つだけでなく、メモリにロードされるとき、セキュア・カーネル302が本物で、改ざんされていないことを確実にする。
アプリケーション・ソフトウエアは、アプリケーション域306にロードされ、そこから実行される。本発明のある好適な実施形態には、ハードウエアのメモリ保護スキームが存在しないので、アプリケーション域306から実行されるアプリケーションは、カーネル拡張域304およびセキュア・カーネル域302を含めた、メモリ空間の他の部分に自由にアクセスすることができる。しかしながら、アプリケーション域306に所在するアプリケーションに制御を渡す前に、セキュア・カーネル域302およびカーネル拡張域304からセンシティブな情報を削除してしまい、カーネル拡張コードの呼び出しが必要なときには、セキュアな初期化ハードウエアを使ってセキュア・カーネル302と任意のカーネル拡張とを再ロードすることによって、メモリ保護の効果が達成される。
アプリケーション域306に所在するアプリケーションがカーネルのサービスを使うためには、該アプリケーションが、まずメールボックス域308に情報を書き込む。この情報は、要求される特定のカーネル・サービスに関する情報と、コールバック・アドレスなど、制御をアプリケーションに戻すために必要な情報とを含むことになる。この情報がメールボックス域308に書き込まれた後、該アプリケーションは、セキュアな初期化ハードウエア226をトリガし、二次処理ユニット110を再初期化させる。これにより、一切のカーネル・サービスが実施される前に、セキュア・カーネル302の新しいコピー(そのセンシティブな部分も含む)がロードされる。メールボックス域308に残された命令に従って、制御をアプリケーションに戻す前に、セキュア・カーネル302のセンシティブな部分および一切のカーネル拡張が削除される。
また、カーネル拡張に対しても同様なメカニズムが使われ、特定のカーネル拡張がセキュア・カーネル302の秘密全てにアクセスすることを防止する。カーネル拡張がタスクを履行するのに必要としない、セキュア・カーネル302のセンシティブな部分は、制御をそのカーネル拡張に渡す前に、セキュア・カーネル302によって削除される。このようなやり方で、セキュア・カーネル302は、その権限および責任の全体または一部だけを所与のカーネル拡張に移譲することができる。カーネル拡張を使ってほとんどのシステム・ソフトウエア・タスクを実施させることによって、セキュア・カーネル302を変更する必要なしに、システム・ソフトウエアを更新することができる。これにより、セキュアな初期化ハードウエア226に組み込まれた回復不可能な復号キーを使って、セキュア・カーネル302のマスタ・コピーを復号することができる。他のシステム・ソフトウエアが更新または置換されても、セキュア・カーネル302は決して変わることはないので、復号キー(または、キーが別の場合は対応する暗号化キー)を、セキュアな初期化ハードウエアの外部のどの場所にも保管する必要がなく、復号プロセスがハードウエアのロジック中に配線されている場合は、全くいかなる場所にも保管しておく必要がない。
さらに、アプリケーションが持続的データを格納できる持続記憶域310が設けられる。持続的データは、一つ以上のアプリケーションの呼び出しの間にも格納され続けるデータである。持続的データの例には、データベース、またはビデオ・ゲーム機の場合は、ゲームの高得点のリストなどがあろう。
前述のように、セキュア・カーネル302は、アプリケーションおよびカーネル拡張を含め、データ処理システム中のソフトウエアの他のピースの完全性を証明し正当性を確認する。図4は、本発明の好適な実施形態によって製作されたデータ処理システムで使われるアプリケーション400のメモリ図である。アプリケーション400は、実際に実行可能なコード自体(コード・イメージ402)に加え、アプリケーション400のデジタル署名406を検証するために使用可能な公開キー404を含む。本発明のある好適な実施形態において、公開キー404は、特定のアプリケーション・タイトルに固有のものではあるが、そのアプリケーションの特定のバージョンに固有なものではなく、同じアプリケーションの複数のバージョンが同一の公開キー404を有する。
さらに、アプリケーション400の完全性を検証可能なように、コード・イメージ402に対して計算された暗号ハッシュ値408が設けられる。ハッシュ値は、データのより大きなブロックを限定された数のビットにマップする関数の計算結果の数値である。暗号ハッシュ値は、一方向性関数(OWF:one−wayfunction)を使って計算され、これは、該関数の逆向き計算が計算的に至難な関数である。暗号ハッシュ値の一例として、米連邦政府関係機関である米国標準技術局(NIST:NationalInstitute of Standards and Technology)により開発された、有名なSHA−1アルゴリズム(Secure Hash Algorithm1(セキュア・ハッシュ・アルゴリズム1))がある。他の暗号ハッシュ・アルゴリズム(SHA−256、MD5[Message Digest 5(メッセージ・ダイジェスト5)]などおよび他に多数)が当該分野で知られており、本発明の範囲および精神から逸脱することなく制限なしに本発明に適用することができる。アプリケーション400の完全性を検証するため、セキュア・カーネル302によって、コード・イメージ402の暗号ハッシュ値を計算し、アプリケーションの一部として格納された暗号ハッシュ値408と対比することができる。2つのハッシュ値が合致すれば、該アプリケーションの完全性が損なわれていない(すなわち、コード・イメージ402は改ざんされたり、破損したりしていない)。
本発明の一つの実施形態において、暗号ハッシュ値は(暗号ハッシュ値408のように)直接アプリケーション400に格納されるのでなく、代わりにデジタル署名406中にコード化される。さらに具体的には、この特定の実施形態では、デジタル署名406は、コード・イメージ402に対して計算された暗号ハッシュ値の暗号化されたコピーである。この場合、公開キー404を使い、デジタル署名406を復号して暗号ハッシュ値を得、次に、その値を、コード・イメージ402に対して計算された計算暗号ハッシュ値と対比することができる。
署名406を検証するため公開キー404が使われるので、該公開キー404が偽造キーでないことが重要である。従って、公開キー404に対して計算されたデジタル署名(公開キー署名410)もアプリケーション400中に含められる。この署名は、セキュア・カーネル302に既知の一つ以上の所定公開キーを使い、セキュア・カーネル302によって検証することができる。
最後に、アプリケーション固有およびアプリケーション・バージョン固有の秘密の生成のためにさらなる記憶スペース412が設けられる。アプリケーションが、当該アプリケーションの他のバージョンまたは該アプリケーションの同一バージョンの他のインスタンスだけが見ることのできる情報を格納または伝達したいことがある。本発明のある好適な実施形態において、セキュア・カーネル302は、アプリケーション400などのアプリケーションがロードされると、アプリケーション固有の秘密、およびアプリケーションのバージョン固有の秘密を生成し、これらは記憶域412に格納される。このアプリケーション固有の秘密は、セキュア・カーネル302の秘密キー(これはセキュア・カーネル302の当該のコピーに固有のものである)と、該アプリケーションに固有の(だがバージョン固有ではない)公開キー404と、の一方向性関数を計算することによって生成され、しかして、セキュア・カーネル302の該特定のコピーの下に実行される該アプリケーションの一切のバージョンのあらゆるインスタンスは、セキュア・カーネル302から、同一のアプリケーション固有秘密を受け取ることになる。
他方、アプリケーション・バージョン固有の秘密は、セキュア・カーネル302の秘密キーとアプリケーション・イメージの暗号ハッシュ値(ハッシュ値408と同一の可能性はあるが必然ではない)との一方向性関数を計算することによって生成される。これは、アプリケーション・タイトルとセキュア・カーネルのインスタンスとに固有なばかりでなく、そのアプリケーション自体の特定のバージョンにも固有な秘密となる。
これらのアプリケーション固有およびアプリケーション・バージョン固有の秘密は、特定のアプリケーション・タイトルまたはアプリケーションの特定のバージョンだけが理解可能な情報の秘密キー(対称キー)暗号に(例えば、不揮発性記憶域310に格納されて)用いることができる。さらに、これら秘密はセキュア・カーネル302の特定のコピーだけが知っている秘密キー情報を使って計算されるので、(セキュア・カーネル302の、相異なる秘密キーを有する2つの異なったコピーを実行する)2つの異なるプロセッサは、違ったアプリケーション固有およびアプリケーション・バージョン固有の秘密を算出することになり、しかして、全体的な暗号スキームの暗号破りをいっそう難しくしている。ロード時に、セキュア・カーネル302にこれらの秘密を計算させるさらなる利点は、これら秘密自体を恒久的に保存しておく必要がないことである。セキュア・カーネル302は、アプリケーションが次回に実行されるとき(同じ値を有する)秘密を再計算するので、アプリケーションが終了したときその秘密を安全に削除することができる。
カーネル拡張は、それらもデジタル署名を含む点でアプリケーションと似ているので、これらも図4のアプリケーション400とほぼ同様なやり方で編成することができる。但し、カーネル拡張とアプリケーションとの重要な違いは、カーネル拡張は、セキュア・カーネル302の秘密キーを使ってだけ復号が可能なように、暗号化された形式で格納され、該キー自体が(セキュアな初期化ハードウエアによる)安全初期化に引き続き、セキュア・カーネル302がロードされ実行されるときにだけ利用可能なことである。公開キー暗号法によって、セキュア・カーネル302の秘密きーが危険にさらされることなく、カーネル拡張を更新、置換、または追加することが可能である。セキュア・カーネル302の当該コピー(それ独自の秘密キーを有する)だけが新規カーネル拡張を復号することができるようにこの新規のカーネル拡張を暗号化するためには、カーネル拡張の供給源(製造者、発行者、ディストリビュータなど)は、該セキュア・カーネル302の公開キー(秘密キーと違って秘密ではない)を供給してもらう必要があるだけである。
前述のように、セキュア・カーネル302は、その権限/責任の一つ以上をカーネル拡張に委譲することができる。このことを、セキュア・カーネル302は、カーネル拡張に制御を引き渡す際に、特定の特権タスクを実行するために必要なセキュア・カーネル302のセンシティブな部分を維持する(すなわち、削除しない)ことによって実施する。セキュア・カーネル302は、該カーネル拡張のデジタル署名の正当性確認をするため使われる公開キーを点検することによって、どの部分を維持するかを決定する。セキュア・カーネル302は、カーネル拡張に署名するため使われた所定の一連の「特権公開キー」を認識する。各特権公開キーは、ある特定の特権レベルと関連付けられている。すなわち、各特権公開キーは、セキュア・カーネル302が該特権公開キーによって署名されたカーネル拡張に制御を引き渡す際に、維持されことになるセキュア・カーネル302の一つ以上のセンシティブな部分に対応している。しかして、カーネル拡張は、カーネル拡張の公開キーによって規定された特権レベルに従い、セキュア・カーネル302の秘密/特権のすべてまたは一部だけの委譲を受けることができる。
図5〜7は、併せて、本発明の好適な実施形態により作製されたあるセキュア・カーネルの実行の基本フローを複数頁に亘ってフローチャート表現したものである。図5〜7は、ある好適な実施形態のさまざまな暗号機能が、いかにして、セキュア・カーネルの命令の下に協働し、専用保護ハードウエアを使用しないで、特権および非特権プログラム・コードのシステムを生成するかを例示する。なお、最初に図5〜7の明細に入る前のことわりとして、デジタル署名およびハッシュ値の検証の各々は、本来、これら動作の各々が正当性確認または検証が合格であるか不合格であるかの判定を伴うものではあるが、表現の簡明化のため、本明細書では判定ステップ(ダイヤモンド形)でなく処理ステップ(矩形)で表している。以下の説明全体を通して、図5〜7中の一切の検証または正当性確認動作の不合格は、図5〜7に表された通常の実行フローを中断するエラーまたは例外状態をトリガすることになるのを理解すべきである。従って、後記で説明する各正当性確認または検証は、該正当性確認または検証の不合格の場合、エラー状態へと分岐する判定ステップを暗黙のうちに含むことも理解すべきである。
ここで、図5を参照すると、(前述のように)セキュアな初期化ハードウエア226が二次処理ユニット110を初期化または再初期化するとき、該セキュアな初期化ハードウエアは、二次処理ユニット110の主データパスが命令処理を開始するに先立って、セキュア・カーネルを、暗号化されたマスタ・コピーからプロセッサ・アクセス可能なメモリ中に復号する(ブロック500)。セキュア・カーネルが復号されると、セキュアな初期化ハードウエアは、データ処理システムの主データパスを起動し、次いで該パスがセキュア・カーネルの実行を開始する(ブロック501)。
このとき、セキュア・カーネルは、メールボックス域308を確認し、特定のカーネル拡張をロード/実行するあるいはウォーム初期化をトリガしたアプリケーションに制御を戻すなど、初期化後に取るべき動作を決定する(ブロック502)。さらに、セキュア・カーネルは、メールボックス域308をチェックすることにより、ウォーム初期化またはコールド初期化が実施されたかどうかを判断することができる。次に、カーネル拡張をロードすべきかどうかの決定が行われる(ブロック504)。ロードする場合(ブロック504がYes)、セキュア・カーネルは、所望のカーネル拡張を、該セキュア・カーネルの秘密キーを使ってプロセッサ・アクセス可能なメモリ中に復号する(ブロック506)。セキュア・カーネルは、該セキュア・カーネルに既知の(すなわち、該セキュア・カーネルの「キー・ホルダ」に格納された)所定の公開キーを使って、該カーネル拡張に併せて供給された公開キーのデジタル署名の正当性確認をする(ブロック507)。次いで、セキュア・カーネルは、カーネル拡張の公開キーを使って該カーネル拡張自体のデジタル署名の正当性を確認する(ブロック508)。次に、セキュア・カーネルは、カーネル拡張のハッシュ値を計算し、計算されたハッシュ値を該カーネル拡張に併せて供給された値と対比することによって、カーネル拡張の完全性を検証する(ブロック510)。
カーネル拡張がこれらの正当性確認/検証の各々に合格した場合、該カーネル拡張に制御を渡す前に、セキュア・カーネルのどのセンシティブな部分も削除し、どの部分を維持すべきかについての決定が行われる(ブロック512)。前述したように、この決定は、カーネル拡張に署名するのにどういった公開キーが使われたかに基づいて行われ、各公開キーは、その公開キーを使って署名されたカーネル拡張に制御を渡す際に、維持しておくべき一連のセンシティブ部分に対応(または、同じことであるが、どのセンシティブな部分を削除すべきかに対応)している。セキュア・カーネルのどのセンシティブな部分を維持すべきかの決定が行われたならば、セキュア・カーネルの残りのセンシティブな部分は削除され(ブロック514)、セキュア・カーネルは制御をロードされたカーネル拡張に渡す(ブロック516)。
(ブロック516の後、)ロードされたカーネル拡張の実行からセキュア・カーネルの実行に戻ったならば、あるいはどのカーネル拡張もロードされなかった場合(ブロック504がNo)、実行のために新しいアプリケーション・コードをメモリ中にロードすべきかどうかの決定が行われる(ブロック518)。ロードする場合(ブロック518がYes)、該アプリケーション・コードは、プロセッサ・アクセス可能なメモリにロードされる(ブロック520)。このとき、新しくロードされたアプリケーション・コードの公開キーの署名が、セキュア・カーネルに既知の所定の公開キーを使って正当性確認される(ブロック521)。次いで、アプリケーションの正当性確認がされた公開キーを使って、アプリケーション自体の署名が正当性確認される(ブロック522)。次に、該アプリケーションのハッシュ値を計算し、計算されたハッシュ値をアプリケーションと併せて供給された値と対比することによって、該アプリケーションの完全性が検証される(ブロック524)。
アプリケーションが正当性確認され検証されたならば、セキュア・カーネルは、セキュア・カーネルの秘密キーとアプリケーションの公開キーとから一方向性関数を計算することによって、該アプリケーション固有の秘密を生成する(ブロック526)。また、セキュア・カーネルは、セキュア・カーネルの秘密キーとアプリケーション自体のバイトから計算されたハッシュ値とから一方向性関数を計算することによって、アプリケーション・バージョン固有の秘密も生成する(ブロック528)。これらの秘密は、ロードされたアプリケーションがアクセス可能なように、セキュア・カーネルによってメモリに(例えば、該アプリケーションの秘密スペース412中に)格納される。
セキュア・カーネルによって、アプリケーション固有およびアプリケーション・バージョン固有の秘密が計算された後、セキュア・カーネルは、(その秘密キー、特権コード部分、および該セキュア・カーネルの他の一切の秘密を含め)それ自体のセンシティブな部分を削除する(ブロック530)。次いで、セキュア・カーネルは、アプリケーションに制御を全面的に移管(分岐)する(ブロック532)(次の安全初期化まで、該セキュア・カーネルによってさらなる処理が行われることはない)。新しいアプリケーションがロードされない場合(ブロック518がNo)の場合、次にセキュア・カーネルは、それ自体のセンシティブな部分を削除し(ブロック534)、次いで、メールボックス域308に指示されたアプリケーション・コード・アドレスに(すなわち、該セキュア・カーネルの実行をトリガするウォーム初期化を起動したアプリケーションに)制御を渡す(ブロック536)。
図5〜7のフローチャート様式に図示されたプロセスは、ロードされたアプリケーションの正当性および完全性の検証を含むが、図示されるように、そのアプリケーションが実際に信用できる供給源からきたことを確実にするメカニズムを何ら含んでいない。この目的を達成するための追加メカニズムが図8に記載されている。
図8において、セキュア・カーネル800が、内蔵のカーネル固有公開キー802(上記のブロック521に関連して言及したのと同じキー)を保有しているのが示されている。内蔵公開キー802に加え、セキュア・カーネル800は、いくつかの供給元関連公開キー(キー804、806、および808)へのアクセスも有し、これらキーはセキュア・カーネル中に内蔵はされていないが、該カーネルがアクセス可能である。公開キー804、806、および808の各々は、(キー802がキー804、806、および808の署名を正当性確認できるように)内蔵のカーネル固有公開キー802に対応する埋め込み秘密キーを使って署名されている。例えば、キー804は、署名812と関連付けられており、該署名は、セキュア・カーネルの公開キー802を使って正当性確認をすることができる。公開キー804、806、および808は、信用できるソフトウエア供給元に対応している。これら信用できる供給元の一つからのアプリケーション(例、アプリケーション816)は、それ自体のアプリケーション固有キー(例、アプリケーション固有キー818)を包含することになる。これは、上記でブロック522に関連して言及したのと同じアプリケーション固有キーである。アプリケーション816は、公開キー804に対応する信用できる供給元に関連しているので、アプリケーション固有キー818は、公開キー804に関連付けられた秘密キー(当該供給元が保有)を使って署名される。従って、この署名(署名820)は、供給元固有の公開キー804を使って正当性確認をすることができる。よって、セキュア・カーネル802からアプリケーション・キー818への「信用の連鎖」が存在する。
他方、信用できない供給源からのアプリケーションの場合、セキュア・カーネル800は、該アプリケーションのキーの正当性を確認するために使用可能な、対応する供給元固有キーを持たないことになる。しかして、信用できないアプリケーションのアプリケーション固有キーの正当性確認は不合格となる。これにより、セキュア・カーネル800を、信用できる供給元に由来するアプリケーションだけを実行することが可能な「厳格基準」に設定することができる。ある好適な実施形態では、この「厳格基準」をオプションとして有効化するようにでき、そのため、無効にした場合、セキュア・カーネル800は、セキュア・カーネルのキー802を使って、アプリケーション固有キーの署名の正当性確認をする。当然ながら、これには、アプリケーション固有キーが、供給元のキー・ペアでなく、該セキュア・カーネルのキー・ペアを使って署名されていることが必要である。
図9は、本発明のある好適な実施形態における、アプリケーション・コードの信用性を検証する基本的プロセスのフローチャート表現である。「厳格基準」が有効化される場合(ブロック900がYes)、セキュア・カーネルは、まず、自分の公開キーを使って、アプリケーションの供給元に関連付けられた供給元キーの署名の正当性確認をする(ブロック902)。これに合格した場合、次にその供給元キーを使って、アプリケーション自体に抱き合わされたアプリケーション固有キーの署名の正当性確認をする(ブロック904)。最後に、図5〜7に示すように、正当性確認されたアプリケーション固有キーを使ってアプリケーション自体の完全性を実行前に検証する(ブロック906)。
他方、厳格基準が無効にされた場合(ブロック900がNo)、このときは、アプリケーションの完全性を検証する(ブロック906)のに先立って、該カーネルの公開キーを使って、アプリケーション固有キーが直接に正当性確認される(ブロック908)。アプリケーションを最初にインストールするとき、常に「事前正当性確認」の技法を用いることにより、この正当性確認プロセスに関連する計算のオーバーヘッドの一部を回避することができる。図10は、本発明のある好適な実施形態による、事前正当性確認を実施するプロセスのフローチャート表現である。アプリケーションが最初にデータ処理システムにインストールされるとき、セキュア・カーネルは、自分の公開キーを使って該アプリケーションの供給元に関連する供給元キーの署名の正当性確認をする(ブロック1002)。これが合格の場合、次にその供給元キーを使って、アプリケーション自体に抱き合わされたアプリケーション固有キーの署名の正当性確認をする(ブロック1004)。最後に、これら両方の正当性確認が合格の場合、セキュア・カーネルは、それ自体のキー・ペアを使って、該アプリケーション固有キーに再署名する(ブロック1006)。
この事前正当性確認が実施された後は、あたかも厳格基準が無効化されているように、各アプリケーションのアプリケーション固有キーは、セキュア・カーネルの公開キーを直接使って正当性確認される。(言い換えれば、図9のブロック908と906との実行が必要なだけである。)これにより、アプリケーションがロードされる都度実施しなければならない、個々の署名正当性確認の回数が削減される。
可逆的「厳格基準」オプションの実施に代わる方法が、図11のフローチャート様式に記載されており、これは、図9に示されたような、「厳格」規準モードと「非厳格」(または「オープン」)基準モードとに対する別個の正当性確認プロセスの必要性を排除している。この方法では、明示された「汎用キー・ペア」(図8の汎用公開キー808を参照)が定義されている。これにおいては、該汎用キー・ペアの公開キーと秘密キーとの双方が公に入手可能である。このスキームにおいて、供給元固有キーに関連付けられていない、全てのアプリケーション固有公開キーは、この汎用キーを使って署名される。例えば、図8において、アプリケーション822(これは、例えば、フリーウエアまたはオープン・ソース・ソフトウエアなどとすることができよう)は、汎用公開キー808に対応する秘密キーを使って署名された(署名824)アプリケーション固有キー824を有する。
次いで、図11に示されるように、「厳格基準」モードの有効化および無効化が実施される。「厳格基準」モードが有効化される場合(ブロック1100)、セキュア・カーネル800の供給元固有キーのキー・ホルダから、汎用公開キー808が除去される(ブロック1102)。他方、「厳格基準」が無効化される(しかして、「オープン基準」モードが有効にされる)場合、このときは、セキュア・カーネル800の供給元固有キーのキー・ホルダに汎用公開キー808が加えられる(ブロック1104)。図11に示されたプロセスが実行された後、あたかも「厳格基準」モードにおけるように、引き続く全ての正当性確認(すなわち、図9のブロック902、904、および906)が実施される。自分に関連付けられた供給元固有キーを持たないアプリケーションは、汎用公開キー808を使って正当性確認されることになり、一方、供給元固有キーがあるアプリケーションは、その供給元固有キーによって正当性確認をされることになる。
本発明の好適な実施形態の一つは、例えばコンピュータのランダム・アクセス・メモリ中に常駐可能な、コンピュータ・プログラムすなわち一連の命令(プログラム・コード)、または、他の、コード・モジュール中の機能的な記述的材料である。一連の命令は、コンピュータが必要とするまで、例えば、ハード・ディスク・ドライブなど別のコンピュータ・メモリ、あるいは、光ディスク(最終的にはCD−ROMで使用するため)またはフレキシブル・ディスク(最終的にはフレキシブル・ディスク・ドライブで使用するため)などのリムーバブル・メモリに格納しておくこともできるし、インターネットまたは他のコンピュータ・ネットワークを介してダウンロードすることもできる。このように、本発明は、コンピュータで使用するコンピュータ・プログラム製品として実装することもできる。さらに、説明したさまざまな方法は、ソフトウエアによって選択的に作動されるか再設定された汎用コンピュータで便利に実施できるが、当業者は、これらの方法が、必要な方法ステップを遂行するよう構築されたハードウエア、ファームウエア、または、もっと専用化された装置で実施できることも認識していよう。機能的な記述的材料とは、マシンに機能を付与する情報である。機能的な記述的材料には、以下に限らないが、コンピュータ・プログラム、命令、規準、事実、計算可能な関数の定義、オブジェクト、およびデータ構造が含まれる。
本発明の特定の実施形態を提示し説明してきたが、当業者にとって、本発明およびそのより広い態様から逸脱することなく、本明細書の教示に基づき、変形および変更を加えるのが可能なことは自明であろう。従って、添付の請求項は、かかる全ての変形および変更を、本発明の実質的精神および範囲内にあるものとして、その請求範囲に包含するものである。さらに、本発明は、添付の請求項によってだけ定義されることを理解すべきである。当業者は、提示された請求項の構成要素に特定の数が意図されている場合、かかる意図は、請求項に明示で記載され、かかる記載のない場合はそういった制限が存在しないことを理解していよう。制限のない例を挙げれば、後記の添付請求項は、理解のための補助として、請求項の構成要素を提示するための導入句「少なくとも一つの」および「一つ以上の」の使用を包含する。しかしながら、かかる語句の使用によって、不定冠詞「a」または「an」による請求項の構成要素の提示が、かかる提示の請求項の構成要素を包含するいかなる特定の請求項に対しても、たとえ同じ請求項に、導入句「少なくとも一つの」または「一つ以上の」と「a」または「an」などの不定冠詞とが含まれているとしても、その請求項をかかる構成要素を一つだけ含む発明に限定することを示唆すると解釈されるべきではなく、請求項中の定冠詞の使用についても同様である。請求項中に「または」という語が使われている場合、それは包括的意味(すなわち、「A、Bのどちらか一方」とは対照的に「AまたはBあるいはAおよびBの両方」)で使われている。

Claims (15)

  1. コンピュータ実行のデータ処理の方法であって、
    前記方法は、
    コンピュータによって、初期化ハードウエアを使い、プロセッサ・データパスがアクセス可能なメモリに格納されるセキュア・カーネルの暗号化コピーを復号するステップと、
    前記コンピュータによって、前記メモリから読み出された前記セキュア・カーネルを実行するステップと、
    を含み、
    前記セキュア・カーネルはセキュア・カーネル暗号キーを包含し、
    前記セキュア・カーネルを実行するステップは、
    前記セキュア・カーネル暗号キーを使って、供給元関連の暗号キーのデジタル署名の正当性確認をするステップと、
    前記供給元関連の暗号キーを使って、アプリケーション関連の暗号キーのデジタル署名の正当性確認をするステップと、
    を含み、
    前記供給元関連の暗号キーはソフトウエア供給元に関連付けられており、
    前記アプリケーション関連の暗号キーはソフトウエア・アプリケーションに関連付けられている、
    前記方法。
  2. 前記アプリケーション関連の暗号キーは、前記ソフトウエア・アプリケーションに併合して格納される、請求項1に記載の方法。
  3. 前記初期化ハードウエアは、前記プロセッサ・データパスから独立して作動する、請求項1または2に記載の方法。
  4. 前記アプリケーション関連の暗号キーが正当性確認に合格したかどうかを判定するステップと、
    前記アプリケーション関連の暗号キーが正当性確認に合格したことの判定を受けて、前記セキュア・カーネルに関連付けられた暗号キーによる署名を使って、前記アプリケーション関連の暗号キーの新規署名を生成するステップと、
    をさらに含む、請求項1、2、または3に記載の方法。
  5. 前記署名に使う暗号キーは、前記セキュア・カーネル暗号キーがその対応公開キーとなる、キー・ペアの秘密キーである、請求項4に記載の方法。
  6. 前記アプリケーション関連の暗号キーを使って前記ソフトウエア・アプリケーションのデジタル署名を検証するステップをさらに含む、請求項1から5のいずれかに記載の方法。
  7. 前記供給元関連の暗号キーを使った、前記アプリケーション関連の暗号キーの前記デジタル署名の前記正当性確認が合格した場合においてだけ、前記ソフトウエア・アプリケーションを実行するステップをさらに含む、
    請求項1から6のいずれかに記載の方法。
  8. プロセッサ・データパスおよび専用の初期化ハードウエアを有するコンピュータで実行するための、有形のコンピュータ可読媒体中のコードのコンピュータ・プログラム製品であって、
    前記コンピュータ・プログラム製品コードは、
    暗号化されたカーネルを含み、前記暗号化カーネルは、前記専用初期化ハードウエアによって復号形式に復号され、前記復号形式が前記プロセッサ・データパスによって実行されるようになされており、
    前記暗号化カーネルは、
    セキュア・カーネル暗号キーと、
    前記セキュア・カーネル暗号キーを使って供給元関連の暗号キーのデジタル署名の正当性確認をするための命令であって、前記供給元関連の暗号キーはソフトウエア供給元に関連付けられている、前記命令と、
    前記供給元関連の暗号キーを使って、アプリケーション関連の暗号キーのデジタル署名の正当性確認をするための命令であって、前記アプリケーション関連の暗号キーは、ソフトウエア・アプリケーションに関連付けられている前記命令と、
    を含む、前記コンピュータ・プログラム製品。
  9. 前記アプリケーション関連の暗号キーは、前記ソフトウエア・アプリケーションに併合して格納されている、請求項8に記載のコンピュータ・プログラム製品。
  10. 前記初期化ハードウエアは、前記プロセッサ・データパスから独立して作動する、請求項8または9に記載のコンピュータ・プログラム製品。
  11. 前記アプリケーション関連の暗号キーが正当性確認に合格したかどうかを判定するための命令と、
    前記アプリケーション関連の暗号キーが前記正当性確認に合格したことの判定を受けて、前記セキュア・カーネルに関連付けられた暗号キーによる署名を使って、前記アプリケーション関連の暗号キーの新規署名を生成するための命令と、
    をさらに含む、請求項8、9、または10に記載のコンピュータ・プログラム製品。
  12. 前記署名に使う暗号キーは、前記セキュア・カーネル暗号キーがその対応公開キーとなる、キー・ペアの秘密キーである、請求項11に記載のコンピュータ・プログラム製品。
  13. 前記アプリケーション関連の暗号キーを使って前記ソフトウエア・アプリケーションのデジタル署名を検証するステップをさらに含む、請求項8から12のいずれかに記載のコンピュータ・プログラム製品。
  14. 前記供給元関連の暗号キーを使った、前記アプリケーション関連の暗号キーの前記デジタル署名の前記正当性確認が合格した場合においてだけ、前記ソフトウエア・アプリケーションの実行を開始するための命令をさらに含む、請求項8から13のいずれかに記載のコンピュータ・プログラム製品。
  15. 初期化ハードウエアと、
    プロセッサ・データパスと、
    前記プロセッサ・データパスおよび前記初期化ハードウエアがアクセス可能なメモリと、
    一つ以上のセンシティブな部分を有するセキュア・カーネルの暗号化されたコピーを包含する不揮発性記憶装置と、
    を含むデータ処理システムであって、
    前記初期化ハードウエアは前記暗号化コピーを前記メモリ中に復号し、前記プロセッサ・データパスは前記メモリ中の前記セキュア・カーネルを実行して、
    前記セキュア・カーネル暗号キーを使って、供給元関連の暗号キーのデジタル署名の正当性確認をするステップと、
    前記供給元関連の暗号キーを使って、アプリケーション関連の暗号キーのデジタル署名の正当性確認をするステップと、
    を含む処置を遂行し、
    前記供給元関連の暗号キーはソフトウエア供給元に関連付けられており、
    前記アプリケーション関連の暗号キーはソフトウエア・アプリケーションに関連付けられている、
    前記データ処理システム。
JP2010527399A 2007-10-02 2008-09-22 セキュア・カーネル設計による安全基準の差別化 Expired - Fee Related JP5285075B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/866,001 US8332636B2 (en) 2007-10-02 2007-10-02 Secure policy differentiation by secure kernel design
US11/866,001 2007-10-02
PCT/EP2008/062590 WO2009043744A1 (en) 2007-10-02 2008-09-22 Secure policy differentiation by secure kernel design

Publications (2)

Publication Number Publication Date
JP2010541084A true JP2010541084A (ja) 2010-12-24
JP5285075B2 JP5285075B2 (ja) 2013-09-11

Family

ID=40086443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010527399A Expired - Fee Related JP5285075B2 (ja) 2007-10-02 2008-09-22 セキュア・カーネル設計による安全基準の差別化

Country Status (5)

Country Link
US (1) US8332636B2 (ja)
JP (1) JP5285075B2 (ja)
KR (1) KR101231561B1 (ja)
CN (1) CN101816004B (ja)
WO (1) WO2009043744A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US8205257B1 (en) * 2009-07-28 2012-06-19 Symantec Corporation Systems and methods for preventing threats originating from a non-process based component hosted by a trusted process
US8555059B2 (en) * 2010-04-16 2013-10-08 Microsoft Corporation Secure local update of content management software
US8527989B2 (en) 2010-07-12 2013-09-03 International Business Machines Corporation Tracking loading and unloading of kernel extensions in isolated virtual space
US8397245B2 (en) 2010-07-12 2013-03-12 International Business Machines Corporation Managing loading and unloading of shared kernel extensions in isolated virtual space
US8448169B2 (en) * 2010-07-12 2013-05-21 International Business Machines Corporation Managing unique electronic identification for kernel extensions in isolated virtual space
US8555369B2 (en) * 2011-10-10 2013-10-08 International Business Machines Corporation Secure firewall rule formulation
US9646153B2 (en) * 2012-08-08 2017-05-09 Intel Corporation Securing content from malicious instructions
US9092581B2 (en) * 2012-10-09 2015-07-28 Intel Corporation Virtualized communication sockets for multi-flow access to message channel infrastructure within CPU
US20140208105A1 (en) * 2013-01-23 2014-07-24 GILBARCO, S.r.I. Automated Content Signing for Point-of-Sale Applications in Fuel Dispensing Environments
US10073966B2 (en) * 2013-04-29 2018-09-11 Sri International Operating system-independent integrity verification
BR112016009725B1 (pt) 2013-10-30 2023-05-02 Gilbarco Inc Dispensador de combustível, e, sistema para geração de conteúdo com marca d água
CN103793633A (zh) * 2014-02-14 2014-05-14 宇龙计算机通信科技(深圳)有限公司 一种sdk校验方法及装置
CN105022952B (zh) * 2014-04-28 2018-03-16 深圳市茁壮网络股份有限公司 一种中间件授权认证方法及装置
US9785577B2 (en) 2014-05-28 2017-10-10 Red Hat, Inc. Kernel key handling
US10560440B2 (en) * 2015-03-12 2020-02-11 Fornetix Llc Server-client PKI for applied key management system and process
US10630686B2 (en) 2015-03-12 2020-04-21 Fornetix Llc Systems and methods for organizing devices in a policy hierarchy
US10965459B2 (en) 2015-03-13 2021-03-30 Fornetix Llc Server-client key escrow for applied key management system and process
US10860086B2 (en) 2016-02-26 2020-12-08 Fornetix Llc Policy-enabled encryption keys having complex logical operations
US10880281B2 (en) 2016-02-26 2020-12-29 Fornetix Llc Structure of policies for evaluating key attributes of encryption keys
US10348485B2 (en) 2016-02-26 2019-07-09 Fornetix Llc Linking encryption key management with granular policy
US10917239B2 (en) 2016-02-26 2021-02-09 Fornetix Llc Policy-enabled encryption keys having ephemeral policies
US10931653B2 (en) 2016-02-26 2021-02-23 Fornetix Llc System and method for hierarchy manipulation in an encryption key management system
US11063980B2 (en) 2016-02-26 2021-07-13 Fornetix Llc System and method for associating encryption key management policy with device activity
US20180004931A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Process management
US10127160B2 (en) * 2016-09-20 2018-11-13 Alexander Gounares Methods and systems for binary scrambling
US10642970B2 (en) * 2017-12-12 2020-05-05 John Almeida Virus immune computer system and method
US11042641B2 (en) 2018-09-11 2021-06-22 Amari.Ai Incorporated Deployment and communications gateway for deployment, trusted execution, and secure communications
WO2020140257A1 (en) * 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
KR20210097379A (ko) 2020-01-30 2021-08-09 삼성전자주식회사 보안 장치, 전자 장치, 보안 부트 관리 시스템, 부트 이미지 생성 방법 및 부트 체인 실행 방법
US11941092B2 (en) * 2020-02-06 2024-03-26 Saturn Licensing Llc Techniques for launching applications based on partial signature validation
US10747875B1 (en) * 2020-03-19 2020-08-18 Cyberark Software Ltd. Customizing operating system kernels with secure kernel modules
CN111756698B (zh) * 2020-05-27 2022-11-18 浪潮电子信息产业股份有限公司 一种消息传递方法、装置、设备和计算机可读存储介质
JP7025510B2 (ja) 2020-11-04 2022-02-24 アイロボット・コーポレーション 清掃ロボット用清掃ローラ
CN113553109A (zh) * 2021-07-12 2021-10-26 华东师范大学 一种用于校验操作系统前置软件的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000138917A (ja) * 1998-05-29 2000-05-16 Texas Instr Inc <Ti> 安全計算システム及び方法
JP2005182774A (ja) * 2003-11-28 2005-07-07 Matsushita Electric Ind Co Ltd データ処理装置
WO2007011001A1 (ja) * 2005-07-22 2007-01-25 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2007034875A (ja) * 2005-07-29 2007-02-08 Sony Computer Entertainment Inc ペリフェラルの使用管理方法、電子システム及びその構成装置
WO2007074565A1 (ja) * 2005-12-27 2007-07-05 Nec Corporation プログラム実行制御方法および装置ならびに実行制御プログラム

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724425A (en) 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
KR19990087103A (ko) * 1996-02-21 1999-12-15 오오노 도시오 암호키 공유방법
US6307936B1 (en) * 1997-09-16 2001-10-23 Safenet, Inc. Cryptographic key management scheme
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6775778B1 (en) * 1998-05-29 2004-08-10 Texas Instruments Incorporated Secure computing device having boot read only memory verification of program code
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6330670B1 (en) * 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6775779B1 (en) * 1999-04-06 2004-08-10 Microsoft Corporation Hierarchical trusted code for content protection in computers
US7073069B1 (en) * 1999-05-07 2006-07-04 Infineon Technologies Ag Apparatus and method for a programmable security processor
US9213836B2 (en) * 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US20010056533A1 (en) * 2000-06-23 2001-12-27 Peter Yianilos Secure and open computer platform
US20030018892A1 (en) * 2001-07-19 2003-01-23 Jose Tello Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
US7243340B2 (en) * 2001-11-15 2007-07-10 Pace Anti-Piracy Method and system for obfuscation of computer program execution flow to increase computer program security
US7890771B2 (en) * 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
EP1495401B1 (en) 2002-04-18 2007-01-24 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
DE60223806T2 (de) * 2002-09-16 2008-10-30 Agilent Technologies, Inc. - a Delaware Corporation -, Santa Clara Messung von Netzwerkparametern wie sie von nicht künstlichem Netzwerkverkehr wahrgenommen werden
US7305564B2 (en) * 2002-12-19 2007-12-04 International Business Machines Corporation System and method to proactively detect software tampering
CN100440774C (zh) * 2002-12-26 2008-12-03 成都卫士通信息产业股份有限公司 硬件加密卡与网络协议栈的绑定方法
US7562214B2 (en) * 2003-03-31 2009-07-14 International Business Machines Corporation Data processing systems
CN1209705C (zh) * 2003-09-28 2005-07-06 中国科学院计算技术研究所 支持软件安全在线升级的网络设备的产品映象设计方法
US7188127B2 (en) * 2003-10-07 2007-03-06 International Business Machines Corporation Method, system, and program for processing a file request
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US7644278B2 (en) * 2003-12-31 2010-01-05 International Business Machines Corporation Method for securely creating an endorsement certificate in an insecure environment
TW200529623A (en) * 2004-01-14 2005-09-01 Nec Corp Communication encryption method, communication encryption system, terminal device, DNS server and program
TW200527870A (en) * 2004-01-14 2005-08-16 Nec Corp Encrypted communication method, encrypted communication system, node device and program
US8085938B2 (en) * 2004-02-10 2011-12-27 Ntt Communications Corporation Secret information management scheme based on secret sharing scheme
US7899184B2 (en) * 2004-09-02 2011-03-01 Pisaramedia Oy Ends-messaging protocol that recovers and has backward security
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US20060182124A1 (en) * 2005-02-15 2006-08-17 Sytex, Inc. Cipher Key Exchange Methodology
US8056138B2 (en) * 2005-02-26 2011-11-08 International Business Machines Corporation System, method, and service for detecting improper manipulation of an application
KR100947213B1 (ko) * 2005-04-06 2010-03-11 브로드콤 코포레이션 멀티미디어 프로세서 내의 보안 조건부 액세스 및 디지털권한 관리 기법
US7735136B2 (en) * 2005-04-18 2010-06-08 Vmware, Inc. 0-touch and 1-touch techniques for improving the availability of computer programs under protection without compromising security
US20060282681A1 (en) * 2005-05-27 2006-12-14 Scheidt Edward M Cryptographic configuration control
US7565641B2 (en) * 2005-06-24 2009-07-21 Microsoft Corporation Securely providing extensible third-party plug-ins
US8689338B2 (en) * 2005-08-03 2014-04-01 St-Ericsson Sa Secure terminal, a routine and a method of protecting a secret key
US20070143223A1 (en) * 2005-12-16 2007-06-21 Microsoft Corporation Caching information for kernel and boot components
JP4795812B2 (ja) * 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US7770213B2 (en) * 2006-04-17 2010-08-03 Oracle America, Inc. Method and apparatus for securely forgetting secrets
US7424398B2 (en) * 2006-06-22 2008-09-09 Lexmark International, Inc. Boot validation system and method
JP4767773B2 (ja) * 2006-06-29 2011-09-07 株式会社日立製作所 コンピュータシステム及びコンピュータシステムの認証情報変更方法
US20080072070A1 (en) * 2006-08-29 2008-03-20 General Dynamics C4 Systems, Inc. Secure virtual RAM
US7624276B2 (en) * 2006-10-16 2009-11-24 Broadon Communications Corp. Secure device authentication system and method
US8200961B2 (en) * 2006-11-19 2012-06-12 Igware, Inc. Securing a flash memory block in a secure device system and method
US20080148061A1 (en) * 2006-12-19 2008-06-19 Hongxia Jin Method for effective tamper resistance
US20080178256A1 (en) * 2007-01-23 2008-07-24 Brian Perrone System and method providing policy based control of interaction between client computer users and client computer software programs
US7886162B2 (en) * 2007-05-29 2011-02-08 International Business Machines Corporation Cryptographic secure program overlays
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8166304B2 (en) * 2007-10-02 2012-04-24 International Business Machines Corporation Support for multiple security policies on a unified authentication architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000138917A (ja) * 1998-05-29 2000-05-16 Texas Instr Inc <Ti> 安全計算システム及び方法
JP2005182774A (ja) * 2003-11-28 2005-07-07 Matsushita Electric Ind Co Ltd データ処理装置
WO2007011001A1 (ja) * 2005-07-22 2007-01-25 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2007034875A (ja) * 2005-07-29 2007-02-08 Sony Computer Entertainment Inc ペリフェラルの使用管理方法、電子システム及びその構成装置
WO2007074565A1 (ja) * 2005-12-27 2007-07-05 Nec Corporation プログラム実行制御方法および装置ならびに実行制御プログラム

Also Published As

Publication number Publication date
JP5285075B2 (ja) 2013-09-11
KR20100085956A (ko) 2010-07-29
KR101231561B1 (ko) 2013-02-12
CN101816004B (zh) 2013-11-20
WO2009043744A1 (en) 2009-04-09
US20090089579A1 (en) 2009-04-02
US8332636B2 (en) 2012-12-11
CN101816004A (zh) 2010-08-25

Similar Documents

Publication Publication Date Title
JP5285075B2 (ja) セキュア・カーネル設計による安全基準の差別化
US8166304B2 (en) Support for multiple security policies on a unified authentication architecture
US8332635B2 (en) Updateable secure kernel extensions
US7886162B2 (en) Cryptographic secure program overlays
KR100996784B1 (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
US8422674B2 (en) Application-specific secret generation
KR101067399B1 (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
KR100611687B1 (ko) 멀티-토큰 실 및 실 해제
US8433927B2 (en) Cryptographically-enabled privileged mode execution
CN101894224B (zh) 保护客户端平台上的内容
US11212095B2 (en) Allowing restricted external access to devices
US10498712B2 (en) Balancing public and personal security needs
JP2004537786A (ja) オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム
US11398906B2 (en) Confirming receipt of audit records for audited use of a cryptographic key
US11405201B2 (en) Secure transfer of protected application storage keys with change of trusted computing base
CA3042984C (en) Balancing public and personal security needs
Cryptographic FIPS 140-2 Security Policy for INTEGRITY Security Services High Assurance Embedded Cryptographic Toolkit Module Version 1.0. 5

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130530

LAPS Cancellation because of no payment of annual fees