JP7169042B2 - ハードウェアを使用してオペレーティング・システム構成をセキュアにすること - Google Patents

ハードウェアを使用してオペレーティング・システム構成をセキュアにすること Download PDF

Info

Publication number
JP7169042B2
JP7169042B2 JP2019568055A JP2019568055A JP7169042B2 JP 7169042 B2 JP7169042 B2 JP 7169042B2 JP 2019568055 A JP2019568055 A JP 2019568055A JP 2019568055 A JP2019568055 A JP 2019568055A JP 7169042 B2 JP7169042 B2 JP 7169042B2
Authority
JP
Japan
Prior art keywords
operating system
computing system
system configuration
configuration
receiving
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.)
Active
Application number
JP2019568055A
Other languages
English (en)
Other versions
JP2020523685A (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 JP2020523685A publication Critical patent/JP2020523685A/ja
Application granted granted Critical
Publication of JP7169042B2 publication Critical patent/JP7169042B2/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Description

本開示は、オペレーティング・システムのセキュア・ブートを用いるコンピューティング・システムに関する。より詳細には、本開示は、ハードウェアを使用してコンピューティング・システムのオペレーティング・システム構成をセキュアにすることに関する。
コンピューティング・システムは、ファイル・システムのオブジェクトに対してユーザが行えるアクセスを制限することができるアクセス制御ポリシを有する。アクセス制御ポリシは、例えば、ユーザが修正できるファイルを制約することができ、またこれらは、所与のオペレーティング・システムのモジュールをユーザがロードするのを禁止することができる。アクセス制御ポリシは、コンピューティング・システムにおいて実行するオペレーティング・システムの構成によって実施されることが可能である。オペレーティング・システム構成は、カーネルを使用して、コンピューティング・システムをブートしてユーザ・アプリケーションを実行するのに適した状態にする前に、オペレーティング・システム・カーネルの所与の構成に対応するカーネル・パラメータを設定することによって決定されることが可能である。所与のオペレーティング・システム構成を使用してコンピューティング・システムがブートされると、構成によって実施されるアクセス制御ポリシは、事実上、コンピューティング・システムによって許可される場合、異なるオペレーティング・システム構成の下でコンピューティング・システムがブートされるまで残る可能性がある。
コンピューティング・システムの中には、様々なオペレーティング・システム構成のセットの中からユーザが選べるようにするものもある。これらのコンピューティング・システムに対する有効アカウントを有するユーザは、現在ブートされている構成とは異なるアクセス制御ポリシを有するオペレーティング・システム構成を選択してブートすることによって、コンピューティング・システムのアクセス制御ポリシ(またはアクセス制御ポリシの実施)を変更することができる。
アカウント資格証明書(例えばユーザ名およびパスワード)を使用してコンピューティング・システムにユーザがリモートにアクセスすることは一般的である。コンピューティング・システムにリモートにアクセスするユーザは通常、ローカル端末からコンピューティング・システムにアクセスするユーザと同じアクセス制御ポリシに従っている。コンピューティング・システムの権限を与えられたユーザは結果として、前述の処理を用いて、コンピューティング・システムのアクセス制御ポリシをリモートに変更することができる。しかし、この管理体制の1つのアーチファクトは、コンピューティング・システムへの、権限を与えられたユーザのアクセス資格証明書を入手することができる、権限のないユーザが、コンピューティング・システムのアクセス制御ポリシをリモートに変更すること、場合によっては、コンピューティング・システムに対する、権限のないユーザのアクセス権を引き上げることもできるというものである。
前述を考慮すると、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいて選ばれた構成がブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証するための技法が必要である。
本開示の実施形態は、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいて選ばれた構成がブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証する方法、システム、およびコンピュータ・プログラム製品を含む。本明細書で開示された実施形態は、セキュリティ、アクセスの柔軟性、およびコンピューティング・システムの管理における利点をもたらす。
本開示の実施形態によれば、方法は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、コンピューティング・システムを再起動することをさらに含む。コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、を含む。
本開示の様々な実施形態によれば、システムは、ユーザ・インターフェース端末と、ユーザ・インターフェース端末に物理的に連結され、メモリ、プロセッサを有するコンピューティング・システムと、プログラム命令を具体化するコンピュータ可読ストレージ媒体と、を含む。プログラム命令は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることをシステムに行わせるようにプロセッサによって実行可能である。プログラム命令は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをシステムに行わせるようにプロセッサによってさらに実行可能である。コンピューティング・システムは、その後、再起動される。
コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、プログラム命令は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ること、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証すること、および認証することに応答して、オペレーティング・システム構成をブートすること、をシステムに行わせるようにプロセッサによってさらに実行可能である。
様々な実施形態が、コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラム製品を対象とする。コンピュータ・プログラム製品は、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含み、コンピュータ可読ストレージ媒体は、一時的な信号ではなく、プログラム命令は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む方法を行うことをコンピューティング・システムに行わせるようにプロセッサによって実行可能である。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、その後、コンピューティング・システムを再起動することを含む。
コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、をさらに含む。
本開示の代替実施形態によれば、方法は、コンピューティング・デバイスにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることを含む。第2のオペレーティング・システム構成は、公開鍵と秘密鍵のペアの秘密鍵によって署名され、第2のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされた少なくともオペレーティング・システム・カーネルを含む。方法は、リクエストを受け取ることに応答して、秘密鍵に対応する公開鍵をコンピューティング・デバイスの不揮発性メモリに格納することをさらに含む。方法は、不揮発性メモリに格納された公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、コンピューティング・デバイスへのローカル・インターフェースから、受け取ったリクエストを確認する信号を受け取ること、信号がリクエストを確認するとき、公開鍵を保護メモリに移すこと、ならびに保護メモリに格納された公開鍵を使用して第2のオペレーティング・システムを認証すること、および認証することに応答して第2のオペレーティング・システム構成をブートすること、を行うように保護メモリにアクセスできるブートローダを実行すること、を行うように、コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することをさらに含む。
本開示の代替実施形態によれば、システムは、ユーザ・インターフェース端末と、ユーザ・インターフェース端末に物理的に連結され、メモリ、プロセッサを有するコンピューティング・システムと、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含む。プログラム命令は、コンピューティング・デバイスにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることをシステムに行わせるようにプロセッサによって実行可能である。第2のオペレーティング・システム構成は、公開鍵と秘密鍵のペアの秘密鍵によって署名され、第2のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされた少なくともオペレーティング・システム・カーネルを含む。
プログラム命令は、リクエストを受け取ることに応答して、秘密鍵に対応する公開鍵をコンピューティング・デバイスの不揮発性メモリに格納することをシステムに行わせるようにプロセッサによってさらに実行可能である。プログラム命令は、不揮発性メモリに格納された公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、受け取ったリクエストを確認する信号をユーザ・インターフェース端末から受け取ること、信号がリクエストを確認するとき、公開鍵を保護メモリに移すこと、ならびに保護メモリに格納された公開鍵を使用して第2のオペレーティング・システムを認証すること、および認証することに応答して第2のオペレーティング・システム構成をブートすること、を行うように保護メモリにアクセスできるブートローダを実行すること、を行うように、コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することをシステムに行わせるようにプロセッサによってさらに実行可能である。
上記の概要は、本開示のそれぞれの示された実施形態またはあらゆる実装形態を説明することを意図するものではない。
本出願に含まれる図面は、本明細書に組み込まれ、本明細書の一部を形成する。これらは、本開示の実施形態を示し、説明と共に、本開示の原理を説明するのに役立つ。図面は、一定の実施形態の例証にすぎず、本開示を限定するものではない。
様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャートである。 様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットの例のフローチャートである。 様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのシステムの例のブロック図である。 様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットからユーザが選択したオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャートである。 様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするための、ユーザと、コンピュータ実行動作のセットを実行するコンピューティング・システムとの間の相互作用の相互作用図である。 様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのハードウェアおよびソフトウェア構成要素を有するコンピュータ・システムのブロック図である。
本発明は、様々な修正および代替形態に対応可能であるが、これらの細目は、図面に例として示されており、詳細に説明されることになる。しかし、趣旨は、説明される特定の実施形態に本発明を限定するものではないということを理解されたい。反対に、趣旨は、本発明の思想および範囲に含まれる全ての修正、均等物、および代替を含めることである。
本開示の態様は、オペレーティング・システムのセキュア・ブートを用いるコンピューティング・システムに関し、より詳細には、態様は、ハードウェアを使用してブートする前に、コンピューティング・システムのオペレーティング・システム構成をセキュアにすることに関する。本開示は、このような適用に必ずしも限定されないが、本開示の様々な態様は、本背景を使用する様々な例の議論を通じて正しく認識されることが可能である。
本開示の実施形態は、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいてブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証できる方法、システム、およびコンピュータ・プログラム製品を含む。本明細書で開示された実施形態は、セキュリティ、アクセスの柔軟性、およびコンピューティング・システムの管理における利点をもたらす。
本開示の実施形態は、ブート前環境において、特に、コンピューティング・システムに格納されたオペレーティング・システム構成のセットから選択されたオペレーティング・システム構成の真正性を保証するために、セキュア・ブート技法が、本明細書で説明される技法を使用して拡張されるか、そうでなければ拡大されることが可能であるという認識に基づく。統合拡張可能ファームウェア・インターフェース・セキュア・ブート(Unified Extensible Firmware Interface Secure Boot)(以下、「UEFIセキュア・ブート」)などのセキュア・ブート技法は、オペレーティング・システムをブートする前に、保護されていないコンピュータ実行可能コード(以下、「コード」)の実行を防ぐことによって、ブート前環境におけるコンピューティング・システムのセキュリティを向上させる。1つの例において、セキュア・ブート技法は、コンピューティング・システムの製造中に、コンピューティング・システムの保護された不揮発性メモリ内の変数のセットに、非対称鍵のペア(例えば公開鍵と秘密鍵のペア)のセットのうちの公開鍵のセット(例えば1つまたは複数)を格納する。コンピューティング・システムにおいて実行することを承認される(または権限を与えられる)各アプリケーション(例えばコンピュータ・プログラム)は、格納された公開鍵のセットの中に対応する公開鍵を有する秘密鍵を使用して署名される。コンピューティング・システムがブート前状態にある間、アプリケーションを実行する前に、信頼できるアプリケーションは、格納された公開鍵のセット内の公開鍵のうちの1つに対応する秘密鍵でアプリケーションがデジタル的に署名されていることを検証することによって、実行されることになるアプリケーションの実行可能コードの整合性を検証する。このセキュア・ブート技法に関する1つの問題は、権限を与えられた署名者のセット(または秘密鍵のセット)が、コンピューティング・システムの製造より前に、または同時に決定されるというものである。新しいオペレーティング・システムをセキュアにできるが、コンピューティング・システムは、例えば、オペレーティング・システムをコンピューティング・システムにディプロイする前に、所定の権限を与えられた署名者のセットのうちの1つが、オペレーティング・システムにデジタル的に署名することを必要とし得る。
セキュア・ブート技法は、コンピューティング・システムにおいてブートされ得るアプリケーションを認証するための追加の公開鍵をエンド・ユーザが追加できるようにするための信頼できるアプリケーションのセットを提供することができる。UEFIセキュア・ブートは、例えば、製造中に設定された公開鍵のセットにユーザが公開鍵を追加できるようにするための「mokutil」、「shim」、および「grub」アプリケーションを提供する。新しい公開鍵(例えば、コンピューティング・システムに追加されることになる新しいオペレーティング・システム・カーネル・イメージに対応する)が追加されることになるコンピューティング・システムにおいてブートされるオペレーティング・システムにログインしたユーザは、mokutilを実行して新しい公開鍵を設定する。mokutilアプリケーションは、コンピューティング・システムが次にブートされる時に、shimによってのみアクセスされることが可能な不揮発性メモリに新しい公開鍵を書き込む。shimアプリケーションは、例えばコンピューティング・システムの保護メモリに組み込まれた信頼できるアプリケーションであることが可能である。さらに、コンピューティング・システムは、shimが、コンピューティング・システムが再起動された後に実行される最初のアプリケーションであることを保証するように構成されることが可能である。コンピューティング・システムが次に再起動されるとき、mokutilによる更新に続いて、UEFIセキュア・ブート・システムは、shimアプリケーションを検証して実行する。shimアプリケーションは次に、mokutilによって書かれた不揮発性メモリの領域を読み込み、新しい公開鍵が格納されたかどうかを判断する。shimは、新しい公開鍵を検出することに応答して、格納された公開鍵のセットまたはデータベースに新しい公開鍵がコミットされるべきかどうかを確認するように、ローカル・コンソールにおいてユーザに促すことができる。shimは、ユーザが肯定確認を行わない場合、新しい公開鍵を消去(または削除)する。一方、shimは、ユーザが肯定確認を行うと、shimアプリケーションへのコールを介して、grubによって排他的に使用される不揮発性メモリの別の領域(例えば受け入れられた公開鍵全てを格納するデータベース)に新しい公開鍵を移す。新しい公開鍵はその後、新しいカーネル・イメージを認証するのに利用可能である。
オペレーティング・システム・カーネルをセキュアにブートするために、shimは、任意の新しい鍵をコンピューティング・システムにコミットした後、grubを認証して実行する。grubは、grubの構成ファイルを使用して、どのカーネル・イメージをブートすべきかを判断する。ブートすべきオペレーティング・システム・カーネルを識別した後、grubは、shimアプリケーションをコールして、コンピューティング・システムの公開鍵データベースに格納された公開鍵のうちの1つに対応する秘密鍵によってカーネル・イメージが署名されていることを検証することによって、カーネル・イメージを認証してブートする。ブートされると、オペレーティング・システム・カーネルは、コンピューティング・システムにカーネル・モジュールがロードされることをリクエストされるときに、カーネル・モジュールを同様に認証することができる。
これらのセキュア・ブート技法は、ユーザが、オペレーティング・システムの正しく署名されたバージョンにアクセスでき、オペレーティング・システムに署名するために使用された秘密鍵に対応する公開鍵を維持する場合、コンピューティング・システムに新しいオペレーティング・システムをユーザがロードすることを可能にすることができる。しかし既知のセキュア・ブート技法は、コンピューティング・システムにおいてブートするために、コンピューティング・システムに格納されたオペレーティング・システム構成のセットからオペレーティング・システム構成をユーザが選択できるようにはしない。さらに、既知のセキュア・ブート技法は、修正も、そうでなければ改ざんも行われることなく、選択されたオペレーティング・システム構成がブートされることをコンピューティング・システムが保証できるようにしない。
本開示の実施形態は、非対称鍵のペアの秘密鍵によってデジタル署名され、システムに格納された1つ以上のオペレーティング・システム構成から成るセットから1つのオペレーティング・システム構成をブートするリクエストを受け取ることと、公開鍵の保護されたデータベースを更新するように構成された信頼できるアプリケーションに非対称鍵のペアの公開鍵を自動的に提供することと、コンピューティング・システムにユーザが物理的に存在することを利用して、オペレーティング・システム構成をロードするリクエストを検証することと、オペレーティング・システム構成を認証してブートすることと、によって、既知のセキュア・ブート技法を改善する方法、システム、およびコンピュータ・プログラム製品を提供する。
本明細書で使用されるように、信頼できるアプリケーションは、その実行可能コードが認証されているか、そうでなければ、実行可能コードを改変する権限のない者によって改変されないことが保証されているアプリケーションである。実行可能コードは、既知のデジタル署名および検証技法を使用して認証されることが可能である。実行可能コードは、例えば、非対称鍵のペアの秘密鍵を使用してコードを暗号化することによって署名されることが可能である。コードの整合性は、その後、非対称鍵のペアの公開鍵を使用して、署名されたコードの署名を検証することによって認証されることが可能である。例えば、署名されたコードへの署名後の変更により、署名されたコードの署名を検証できないとき、認証は失敗する。
本明細書で使用されるように、鍵データベースは、デジタル鍵(例えば非対称鍵のペアの公開鍵)のセットを格納するように構成された保護メモリの領域であることが可能である。保護メモリは、信頼できるアプリケーション、またはアプリケーションの選択されたグループに対してのみアクセス可能な(例えば読込み可能または書込み可能な)メモリであることが可能である。
本明細書で使用されるように、コンピューティング・システムのブート前状態は、コンピューティング・システムが再起動した後、かつコンピューティング・システムがオペレーティング・システムをブートする前の、コンピューティング・システムの状態であることが可能である。オペレーティング・システムのブート状態は、オペレーティング・システムがコンピューティング・システムにおいてブートされた後のコンピューティング・システムの状態である。
本明細書で使用されるように、オペレーティング・システム構成は、ブート可能なオペレーティング・システム・カーネル・イメージ(以下、「オペレーティング・システム・カーネル」または「カーネル」)、および1つまたは複数のカーネル・パラメータ値(例えばパラメータ値)の関連付けられたセットを有するデータ・オブジェクトであることが可能である。いくつかの実施形態において、カーネル・パラメータ値は、ハードコードされた(例えばオペレーティング・システム・カーネルの実行可能コードにコンパイルされた)固定コマンド・ライン・パラメータ値であっても良い。カーネル・パラメータ値をハードコードすることは、オペレーティング・システム・カーネルがコンパイルされるときに、1つまたは複数のコンパイラ・オプションを使用してコンパイラにパラメータ値を設定することを含むことができる。カーネル・パラメータ値をハードコードすることは、ハードコードされたカーネル・パラメータ値をブートローダまたは他のアプリケーションがオーバーライドするのを防ぐために、コンパイル・オプションを使用して、オペレーティング・システム・カーネルをコンパイルすることをさらに含むことができる。一定の実施形態において、カーネル・パラメータ値は、オペレーティング・システム・カーネルとは別のデータ・オブジェクトにおいて設定されることが可能である。
データ・オブジェクトは、本明細書で使用されるように、単一のカーネル・イメージであることが可能である。データ・オブジェクトは、オペレーティング・システム・カーネル、および追加のデータ・オブジェクトのセットを有するデータ構造であることも可能である。オペレーティング・システムに署名することは、データ・オブジェクトまたはデータ・オブジェクトの各構成要素あるいはその両方に署名することを含むことができる。
カーネル・パラメータがハードコードされるコンピューティング・システムにおいてオペレーティング・システム構成をブートすることは、オペレーティング・システム・カーネルをブートローダに渡すことと、コンピューティング・システムにおいてオペレーティング・システム・カーネルをロードして実行することをブートローダに行わせることと、を含むことができる。同様に、オペレーティング・システム・カーネルとは別のデータ・オブジェクトに1つまたは複数のカーネル・パラメータ値が格納されるオペレーティング・システム構成をブートすることは、オペレーティング・システム・カーネルと1つまたは複数のカーネル・パラメータ値の両方をブートローダに渡すことと、1つまたは複数のカーネル・パラメータ値を有するオペレーティング・システム・カーネルをロードして実行することをブートローダに行わせることと、を含むことができる。
所与のオペレーティング・システム・カーネルについて、オペレーティング・システム構成は、オペレーティング・システム構成の、アクセス制御ポリシの実施によって特徴付けられることが可能である。これは、構成のセキュリティ・レベルと呼ばれることが可能である。コンピューティング・システムは、例えば、アクセス制御ポリシを実施するための、特に、SELinux(Security Enhanced Linux)モジュールと共にインストールされたLinux(登録商標)カーネルのディストリビューションを有することができる。例を続けると、コンピューティング・システムは、低、中、および高という、オペレーティング・システム構成の3つのタイプ(例えばセキュリティ・レベル)をサポートするように構成されることも可能である。低構成を使用してブートされたLinuxカーネルは、SELinuxを無効にして、アクセス制御ポリシの実施を防ぐことができる一方で、中構成を使用してブートされたLinuxカーネルは、パーミッシブ・モードまたはデバッグ・モードの状態にあるSELinuxが、アクセス制御ポリシを実施するのではなく監視することを可能にすることができる。さらに、高構成を使用してブートされたLinuxカーネルは、コンピューティング・システムがブートされる間、強制アクセス制御ポリシを、実施モードの状態にあるSELinuxが実施することを可能にすることができる。この例のコンピューティング・システムは、したがって、3つの別個のオペレーティング・システム構成をサポートすることができ、各構成は、例えば、特定のアクセス・ポリシの実施レベル、すなわちセキュリティ・レベルを可能にするようにセットされたカーネル・パラメータ値でコンパイルされた、Linuxカーネル、および関連付けられたSELinuxモジュールを有する。
ここから図を参照すると、図1は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャート100を示している。本明細書で説明されるように、フローチャート100の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・システムによって実行されることが可能である。いくつかの実施形態において、コンピューティング・システムは、コンピュータ305(図3)またはコンピューティング・デバイス600(図6)であることが可能である。一定の実施形態において、コンピューティング・システムは、1つまたは複数の計算ノードまたはコンピューティング・デバイスを含むことができる。フローチャート100に図示された様々な動作は、コンピューティング・システムのソフトウェア、ファームウェア、およびハードウェア構成要素を使用して実行されることが可能である。コンピューティング・システム全体を含め、これらの構成要素は、本明細書において、まとめてコンピューティング・システムと呼ばれる。フローチャート100に示される各動作は、コンピューティング・システムによって、または1つもしくは複数のイベント(例えばユーザ・アクションまたはリクエスト)に応答して、自動的に実行されることが可能である。
コンピューティング・システムは動作105を実行し、オペレーティング・システム構成をブートするリクエストを受け取ることができる。リクエストは、リモート・ユーザ・インターフェース端末(例えば、例えばデータ通信ネットワークを通じてコンピューティング・システムに連結されたユーザ・インターフェース端末)から受け取られることが可能である。リクエストは、ローカル・ユーザ・インターフェース端末(例えば、コンピューティング・システムに物理的に接続されたユーザ・インターフェース端末)から受け取られることも可能である。ローカル・ユーザ・インターフェース端末を使用して、リクエストを出す、またはコンピューティング・システムと相互作用するユーザは、コンピューティング・システムの物理的な存在下にいること、またはコンピューティング・システムを物理的に保有しているとユーザが仮定され得るほどコンピューティング・システムに極めて接近していること、を要求される。
本明細書で説明されるように、コンピューティング・システムは、動作110を実行し、リクエストされたオペレーティング・システム構成を認証するためのデジタル鍵を格納することができる。デジタル鍵は、リクエストされたオペレーティング・システム構成を署名するために個々の秘密鍵が使用された、非対称鍵のペアの公開鍵であることが可能である。実施形態において、デジタル鍵は、不揮発性メモリに格納されることが可能である。不揮発性メモリは、永続性ランダム・アクセス・メモリ(RAM)、フラッシュ・メモリ、システム・ストレージを含むことができるがこれらに限定されない。いくつかの実施形態において、コンピューティング・システムは、再起動後に、デジタル鍵があるか不揮発性メモリを自動的にチェックするように構成されることが可能である。
コンピューティング・システムは動作115を実行し、コンピューティング・システムを再起動させることができる。いくつかの実施形態において、コンピューティング・システムは、動作110の実行に応答して自動的に再起動することができる。様々な実施形態において、コンピューティング・システムは、ユーザ・インターフェース端末から、再起動させるリクエストを受け取ることに応答して、再起動することができる。
コンピューティング・システムがブート前状態にある間、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認するために、ローカル・ユーザ・インターフェース端末においてリクエストをユーザに送信することができる。コンピューティング・システムは次に動作120を実行し、リクエストされたオペレーティング・システム構成をブートするリクエストを確認する信号を、ローカル・ユーザ・インターフェース端末から受け取ることができる。動作120を実行することは、コンピューティング・システムにおいてブートされるオペレーティング・システム構成の変更(例えば、アクセス制御ポリシの実施レベル、すなわちセキュリティ・レベルへの起こり得る変更)をリクエストしているユーザが、コンピューティング・システムに物理的にアクセスできることを保証することができる。この動作は、コンピューティング・システムのアクセス制御ポリシの実施レベル、すなわちセキュリティ・レベルを、権限のないユーザがリモートに変更するという可能性を制限することができる。
まだブート前状態にある間、コンピューティング・システムは動作125を実行し、デジタル鍵を使用して、リクエストされたオペレーティング・システム構成を認証することができる。コンピューティング・システムは次に動作130を実行し、リクエストされたオペレーティング・システム構成をブートすることができる。
いくつかの実施形態において、コンピューティング・システムは、再起動することに応答して、動作110の中で格納されたデジタル鍵が、コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に対応することを検証する(例えば実証する)か、判断することができる。この検証は、コンピューティング・システムに格納され、実行する権限を与えられたオペレーティング・システム構成が、デジタル鍵に対応する秘密鍵によって署名されたかどうかを判断することを含むことができる。検証動作は、既知のまたは承認された構成だけがブートするために考慮されるということを保証することによってブート前環境、およびブートされたシステムの整合性を保証するのに役立つ。
いくつかの実施形態において、コンピューティング・システムは、動作120の中で確認を受け取ることに応答して、デジタル鍵を保護メモリに移すことができる。ストレージ・システムは、例えば、特定の信頼できる(例えば、セキュアな、または認証された)アプリケーションによってのみ書込み可能な鍵データベースまたはリポジトリにデジタル鍵を移すことができる。これらの実施形態は、リクエストされたオペレーティング・システム構成の有効性および真正性を、信頼できるアプリケーションが検証できるようにするために、セキュア・ブート技法の既存のアーキテクチャを活用するといった利点をもたらすことができる。これはまた、ローカル・ユーザ・インターフェース端末にユーザがアクセスできることを必要とせずに、再起動後に、リクエストされたオペレーティング・システム構成をコンピューティング・システムがブートできるようにする。
いくつかの実施形態において、保護メモリ(例えば鍵データベース)は、(例えば保護メモリに格納されたデジタル鍵を使用して)コンピューティング・システムのハードウェア構成要素によって実行可能コードの整合性が認証されたソフトウェア・アプリケーションによる書込みだけが可能である。これらの実施形態は、新しく、場合によっては不正な鍵をコンピューティング・システムに追加できる当事者の数を制限することによって、リクエストされたオペレーティング・システム構成の真正性を強化するといった利点をもたらすことができる。
いくつかの実施形態において、リクエストされたオペレーティング・システム構成を認証することは、保護メモリからデジタル鍵を取得することと、取得した鍵を使用して、リクエストされたオペレーティング・システム構成の署名を検証することと、を含む。これらの実施形態は、構成がブートされる前に、オペレーティング・システム構成が修正されていないことを保証するために、セキュア・ブート技法の既存のアーキテクチャを活用するといった利点をもたらすことができる。
様々な実施形態によれば、動作105の中でリクエストされたオペレーティング・システム構成は、オペレーティング・システム・カーネル、およびオペレーティング・システム・カーネルのアクセス制御ポリシの実施レベル、すなわちセキュリティ・レベル(例えばアクセス制御ポリシ)を強化するためのカーネル・パラメータ値のセットを含むことができる。一定の実施形態において、本明細書で説明されるように、カーネル・パラメータ値のセットは、オペレーティング・システム・カーネルの実行可能コードにコンパイルされる。
図2は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットの例のフローチャート200を示している。本明細書で説明されるように、フローチャート200の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・システムによって実行されることが可能である。フローチャート200に示された各動作は、コンピューティング・システムによって、または1つもしくは複数のイベント(例えばユーザ・アクションもしくはリクエスト)に応答して、自動的に実行されることが可能である。
コンピューティング・システムは、例えば、コンピューティング・システムにおいてブートできるオペレーティング・システム構成のセットを生成することによって動作205を実行することができる。オペレーティング・システム構成は、カーネル・パラメータ値のセットと共にオペレーティング・システム・カーネルを含むことができる。カーネル・パラメータ値は、関連付けられたオペレーティング・システム・カーネルのアクセス制御ポリシの実施レベル(すなわちセキュリティ・レベル)を構成することができる。各構成は、さらに、例えば、オペレーティング・システム構成の実行可能コードの整合性を保証するために、非対称の公開鍵と秘密鍵のペアの異なる秘密鍵で、デジタル的に署名されることが可能である。各秘密鍵に対応する公開鍵は、コンピューティング・システムに格納されることも可能である。
コンピューティング・システムは、動作210を実行して、選択されたオペレーティング・システム構成をブートするリクエスト(例えばブート・リクエスト)を受け取ることができる。本明細書で説明されるように、リクエストは、リモート・ユーザ・インターフェース端末またはローカル・ユーザ・インターフェース端末から受け取られることが可能である。
動作215において、コンピューティング・システムは、リクエストされたオペレーティング・システム構成に署名するために使用された秘密鍵と関連付けられたデジタル鍵(例えば公開鍵)を格納することができる。本明細書で説明されるように、デジタル鍵は、コンピューティング・システムの不揮発性メモリに格納されることが可能である。いくつかの実施形態において、コンピューティング・システムは、コンピューティング・システムが次に再起動されるときに、リクエストされたオペレーティング・システム構成をブートすることをブートローダに行わせるために、ブートローダの構成(例えば構成ファイル)をさらに更新することができる。
動作220において、コンピューティング・システムは、再起動すること(例えばリブートすること)ができる。本明細書で説明されるように、コンピューティング・システムは次に、コンピューティング・システムがブート前状態にある間、以下の動作を実行することができる。
動作225において、本明細書で説明されるように、コンピューティング・システムは、デジタル鍵を検証して、コンピューティング・システムにおいてブートする権限を与えられている既知の(例えば格納済みの)オペレーティング・システム構成にデジタル鍵が対応するかどうかを判断することができる。コンピューティング・システムは、公開鍵が検証されると動作230に進むことができ、また一方で、コンピューティング・システムは、リクエストされたオペレーティング・システム構成を検証できないと判断することに応答して、動作250に進むことができる。
動作230において、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認することができる。動作230を実行することは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認するように、ローカル・ユーザ・インターフェース端末において、リクエストしているユーザに促すことを含むことができる。コンピューティング・システムは次に、ローカル・ユーザ・インターフェース端末から確認信号またはメッセージを受け取ることができる。受け取った確認信号は、電圧、またはデジタル文字のセットを含む任意の電子信号を含むことができる。受け取った確認信号は、肯定確認または否定確認であることが可能である。受け取った確認信号が肯定確認であるとき、コンピューティング・システムは動作235に続くことができるが、受け取った確認信号が否定確認であるとき、コンピューティング・システムは動作250に進むことができる。さらに、本明細書で説明されるように、コンピューティング・システムは、肯定確認を受け取ることに応答して、(例えば動作235を実行する代わりに)デジタル鍵を保護メモリに移すことができる。
動作235において、本明細書で説明されるように、コンピューティング・システムは、コンピューティング・システムの保護メモリにデジタル鍵を移すことができる。いくつかの実施形態において、コンピューティング・システムは、動作230を実行する前に、動作235を実行することができる。
動作240において、本明細書で説明されるように、コンピューティング・システムは、保護メモリからデジタル鍵を取得するか読み込み、デジタル鍵を使用して、リクエストされたオペレーティング・システム構成を認証することができる。リクエストされたオペレーティング・システム構成を認証することは、リクエストされたオペレーティング・システム構成が秘密鍵を使用して署名された後、リクエストされたオペレーティング・システム構成が修正されなかったと判断することを含むことができる。リクエストされたオペレーティング・システム構成が正当なものとして認証された場合には、コンピューティング・システムは動作245に続くことができるが、リクエストされたオペレーティング・システム構成が正当なものとして認証されない場合には、コンピューティング・システムは動作250に続くことができる。
動作245において、本明細書で説明されるように、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートすることができる。コンピューティング・システムは、動作255においてフローチャート200の動作を終えることができる。
動作250において、コンピューティング・システムは、不揮発性メモリまたは保護メモリあるいはその両方からデジタル鍵を削除または消去することができる。コンピューティング・システムは次に、リクエストされたオペレーティング・システム構成がブートされることが不可能であることを提示することができる。いくつかの実施形態において、他の動作(例えば、動作225、動作230、および動作240)から動作250に達することに応答して、コンピューティング・システムは、秘密鍵を削除しなくともよい。これらの実施形態では、コンピューティング・システムは、リクエストされたオペレーティング・システム構成がブートされることが不可能であることを提示することによってブート処理を中止することができる。
図3は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのシステム300の例のブロック図を示している。本明細書で説明されるように、システム300は、本開示の動作を実行するように構成されたコンピューティング・システムであることが可能である。システム300は、コンピューティング・デバイス305およびローカル・ユーザ・インターフェース380(例えばローカル・ユーザ・インターフェース端末)を含む。いくつかの実施形態において、システム300は、リモート・ユーザ・インターフェース370(例えばリモート・ユーザ・インターフェース端末)およびデータ通信ネットワーク375を含むことができる。
コンピューティング・デバイス305は、プロセッサ310、メモリ315、ストレージ320、およびセキュリティ構成要素325を含むことができる。本明細書で説明されるように、コンピューティング・デバイス305は、選択されたオペレーティング・システム構成をセキュアにロードするように構成されたコンピューティング・デバイスであることが可能である。プロセッサ310は、メモリ315にロードされる、ユーザ・アプリケーション330および信頼できるアプリケーション360を含むアプリケーションを実行することができる。
ストレージ320は、ストレージ・デバイス628(図6)などのストレージ・デバイスであることが可能である。ストレージ320は、コンピューティング・デバイス305における実行のためのオペレーティング・システム構成を含むアプリケーションを格納することができる。ストレージ・デバイスは、例えば、ユーザ・アプリケーション330、ブートローダ335、オペレーティング・システム構成A340、およびオペレーティング・システム構成B345を格納することができる。
ユーザ・アプリケーション330は、コンピューティング・デバイス305にログインしたユーザによって実行可能なソフトウェア・アプリケーションであることが可能である。いくつかの実施形態において、ユーザ・アプリケーション330は、図4において論じられるユーザ・アプリケーションと実質的に同じであることが可能であり、同じ動作を実行することができる。ユーザ・アプリケーション330は、例えば、コンピューティング・デバイス305におけるオペレーティング・システム構成を変更するリクエストをユーザが送信できるようにするために実行されることが可能である。いくつかの実施形態において、本明細書で説明されるように、ユーザ・アプリケーション330は、ブートローダ335の構成を更新するために実行されることが可能である。
ブートローダ335は、オペレーティング・システム構成A340およびオペレーティング・システム構成B345などの、オペレーティング・システム構成をブートするために、コンピューティング・デバイス305において実行する権限を与えられたソフトウェア・アプリケーションであることが可能である。いくつかの実施形態において、ブートローダ335は、ブートローダ335の実行可能コードの整合性を保証するために、公開鍵と秘密鍵のペアの秘密鍵によって署名されることが可能である。コンピューティング・デバイス305の再起動後、ブートローダ335は、ブートローダの構成に基づいて、事前に選択されたオペレーティング・システム構成を認証してブートするために、信頼できるアプリケーション(例えば信頼できるアプリケーション360)によって実行されることが可能である。
オペレーティング・システム構成A340およびオペレーティング・システム構成B345は、コンピューティング・デバイス305に格納された2つの別個のブート可能なオペレーティング・システム構成であることが可能である。本明細書で説明されるように、各オペレーティング・システム構成は署名されることが可能であり、オペレーティング・システム・カーネル、および関連付けられたカーネル・パラメータ値のセットを含むことができる。いくつかの実施形態において、オペレーティング・システム構成A340およびオペレーティング・システム構成B345は両方、同じオペレーティング・システム・カーネル、および異なるカーネル・パラメータ値のセットを有することができる。一定の実施形態において、オペレーティング・システム構成A340およびオペレーティング・システム構成B345は、異なるオペレーティング・システム・カーネル、および類似のカーネル・パラメータ値を有することができる(例えば、カーネル・パラメータ値は、同じアクセス・ポリシの実施レベルを有するように各構成がブートされることを保証することができる)。
セキュリティ構成要素325は、コンピューティング・デバイス305においてブートするアプリケーションの実行可能コードの整合性または真正性を保証するためのハードウェアおよびソフトウェア構成要素を含むことができる。いくつかの実施形態において、セキュリティ構成要素325は、ユーザ・アクセス可能な不揮発性メモリ350、保護された不揮発性メモリ355、信頼できるアプリケーション360、およびデータベース365を含むことができる。個別の構成要素として示されるが、セキュリティ構成要素325の全てまたは一部は、コンピューティング・デバイス305の1つまたは複数の他の構成要素に含まれることが可能である。
本明細書で説明されるように、ユーザ・アクセス可能な不揮発性メモリ350は、コンピューティング・デバイス305のユーザによって実行可能なアプリケーションによって少なくとも書き込むためにアクセス可能な任意の不揮発性メモリであることが可能である。ユーザ・アクセス可能な不揮発性メモリ350は、例えば、バッテリ・バックアップ式のランダム・アクセス・メモリ、フラッシュ・メモリ、またはストレージ320の領域であることが可能である。一定の実施形態において、本明細書で説明されるように、ユーザ・アクセス可能な不揮発性メモリは、コンピューティング・デバイス305においてブートするために選択されたオペレーティング・システム構成に対応する公開鍵を一時的に格納するためのステージング領域としての役割を果たすことができる。
保護された不揮発性メモリ355は、アプリケーションの選択されたセット(例えば信頼できるアプリケーション360およびブートローダ335)のみからアクセス可能な不揮発性メモリの領域であることが可能である。いくつかの実施形態において、メモリ355は、信頼できるアプリケーション360によってのみ、またコンピューティング・デバイス305のブート前状態の間にのみ、書き込まれることが可能である。一定の実施形態において、保護された不揮発性メモリ355は、コンピューティング・デバイス305においてブートすることができるアプリケーションを認証するための検証された公開鍵のセット、すなわちデータベースを格納する。
信頼できるアプリケーション360は、コンピューティング・デバイス305によって認証された実行可能コードを有し、コンピューティング・デバイス305が再起動するときに自動的に実行するように構成されたアプリケーションであることが可能である。いくつかの実施形態において、信頼できるアプリケーション360は、ユーザ・アクセス可能な不揮発性メモリ350の所定の場所に格納された新しい公開鍵を自動的にチェックすること、および新しい公開鍵の有効性を検証すること、を行うように構成されることが可能である。信頼できるアプリケーション360は、本明細書において論じられる信頼できるアプリケーションの動作を実行するように構成されることも可能である。
データベース365は、コンピューティング・デバイス305においてブートすることができるアプリケーションを認証するための公開鍵のリポジトリであることが可能である。いくつかの実施形態において、データベース365は、保護された不揮発性メモリ355の一部であることが可能である。一定の実施形態において、データベース365に格納された1つまたは複数の公開鍵は、コンピューティング・デバイス305の製造中に書き込まれ、デジタル的に署名されることが可能である。
ローカル・ユーザ・インターフェース380は、コンピューティング・デバイス305に対する入出力動作をユーザが実行することを可能にするように構成されたユーザ・インターフェース端末であることが可能である。ローカル・ユーザ・インターフェース380は、コネクタ(例えば、データ・ケーブル、映像ケーブル、または他の入出力ケーブルもしくはバス)によってコンピューティング・デバイス305に物理的に接続されることが可能である。様々な実施形態によれば、ローカル・ユーザ・インターフェース380は、信頼できるアプリケーション360と、コンピューティング・デバイス305の物理的な保有状態にあるか、物理的な存在下にあるユーザとの間の相互作用を可能にすることができる。
図4は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットからユーザが選択したオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャート400を示している。本明細書で説明されるように、フローチャート400の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・デバイスによって実行されることが可能である。フローチャート400に示された各動作は、コンピューティング・デバイスによって、または1つもしくは複数のイベント(例えばユーザ・アクションもしくはリクエスト)に応答して、自動的に実行されることが可能である。
動作405において、コンピューティング・デバイスは、第1のオペレーティング・システム構成(O/S構成A)の下で実行しているユーザ・アプリケーションから、第2のオペレーティング・システム構成(O/S構成B)をブートするリクエストを受け取ることができる。リクエストは、ユーザがコンピューティング・デバイスにアクセスすること、およびユーザ・アプリケーションを実行することを可能にする任意の端末またはデバイスから受け取られることが可能である。いくつかの実施形態において、ユーザは、資格証明書のセット(例えば、権限を与えられたユーザ・アカウントと関連付けられたユーザ名およびパスワード)を使用して、コンピューティング・デバイスにアクセスし、ユーザ・アプリケーションを実行することができる。
本明細書で説明されるように、オペレーティング・システム構成Bは、カーネル・パラメータ値のセットを有するオペレーティング・システム・カーネルを含むことができる。オペレーティング・システム構成Bは、公開鍵と秘密鍵のペア(例えば非対称鍵のペア)の秘密鍵によって署名されることが可能である。いくつかの実施形態において、O/S構成Bは、O/S構成Aに含まれるオペレーティング・システム・カーネルと同じオペレーティング・システム・カーネルを含むことができる。しかしO/S構成Bは、O/S構成Aに含まれるカーネル・パラメータ値のセットとは異なるカーネル・パラメータ値のセットを有することができる。上述のオペレーティング・システム構成の例を思い出すと、O/S構成AとO/S構成Bの両方は、SELinuxモジュールを有するLinuxカーネルを含むことができる。しかし、O/S構成Aが、高アクセス制御実施セキュリティ・レベルでLinuxカーネルをブートするためのカーネル・パラメータ値を含むことができる一方で、O/S構成Bは、中アクセス制御実施セキュリティ・レベルでLinuxカーネルをブートするためのカーネル・パラメータ値を含むことができる。
本明細書で説明されるように、動作410において、コンピューティング・デバイスは、O/S構成Bに署名するために使用された秘密鍵に対応する公開鍵を不揮発性メモリに格納することができる。いくつかの実施形態において、ユーザ・アプリケーションまたは別のアプリケーションが、コンピューティング・デバイスに動作410を実行させることができる。
動作415において、コンピューティング・デバイスは、再起動することができる。再起動後に、コンピューティング・デバイスは、動作420と一致してブート前状態にある間、動作425および動作430を実行することができる。
動作425において、コンピューティング・デバイスは、信頼できる(例えば、セキュアな、または修正されていないことが保証された)アプリケーションを実行して、O/S構成Bをブートするリクエストを確認する信号を受け取ることができる。いくつかの実施形態において、信頼できるアプリケーションは、UEFIのshimプログラムに実質的に似ていることが可能である。コンピューティング・システムは、コンピューティング・システムが再起動した後、信頼できるアプリケーションを自動的にロード、認証、および実行するように構成されることが可能である。信頼できるアプリケーションは、不揮発性メモリの特定の領域(例えば動作410の中で書き込まれた不揮発性メモリの領域)を読み込み、コンピューティング・システムに新しい公開鍵が追加されたかどうかを判断するように構成されることが可能である。信頼できるアプリケーションは、新しい公開鍵を検出することに応答して、その公開鍵が既知のオペレーティング・システム構成(例えばコンピューティング・システムにおいてブートする権限を与えられたオペレーティング・システム構成)に対応することを検証するようにさらに構成されることが可能である。本明細書で説明されるように、公開鍵を検証することに応答して、信頼できるアプリケーションは、コンピューティング・デバイスの保護メモリに公開鍵をコピーすること、移送すること、または移すことができる。いくつかの実施形態において、保護メモリは、信頼できるアプリケーションによってのみ書込み可能である。さらに、保護メモリは、コンピューティング・デバイスがブート前状態にある間のみ、書き込まれることが可能である。
動作430において、コンピューティング・デバイスは、ブートローダを実行して、O/S構成Bを認証してブートすることができる。いくつかの実施形態において、信頼できるアプリケーションは、コンピューティング・システムに代わって、ブートローダをロードして、認証し、その後、実行することができる。認証されたブートローダは、ブートする前に、保護メモリから公開鍵を読み込み、公開鍵を使用して、O/S構成Bを認証することができる。ブートローダは、認証が成功するとO/S構成Bをブートすることができる一方で、ブートローダは、認証が成功しないと(例えば、署名された後にO/S構成Bが変更されたことをブートローダが検出すると)ブート処理を中止することができる。
フローチャート400の動作は、動作435で終わることができる。
いくつかの実施形態において、O/S構成Bにおけるカーネル・パラメータ値のセットは、コンピューティング・システムにおいてO/S構成Bがブートされる間にロード可能なソフトウェア・モジュールを決定する。さらに、様々な実施形態において、パラメータ値のセットは、O/S構成Bの下でのアクセス制御権の実施(例えばアクセス制御ポリシの実施レベル)を決定することができる。本明細書で説明されるように、これらの実施形態は、コンピューティング・システムにユーザが物理的にアクセスできない限り、コンピューティング・システムの構成、およびアクセス制御ポリシが、コンピューティング・システムを使用するユーザによって変更される可能性がないこと、ならびにコンピューティング・システムを変更するために選択されたオペレーティング・システム構成の整合性が認証されることを保証するという利点をもたらす。
様々な実施形態によれば、本明細書で説明されるように、保護された不揮発性メモリは、コンピューティング・システムのハードウェア構成要素によって実行可能コードの整合性が認証される、信頼できるアプリケーションを含む、アプリケーションのセットによってのみ書込み可能である。これらの実施形態は、不正な公開鍵がコンピューティング・システムに追加される可能性がないことを保証するという利点をもたらす。これは、不正なオペレーティング・システム構成がコンピューティング・システムにおいてブートされる可能性があるという見込みを低減させる。
図5は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするための、ユーザと、コンピュータ実行動作のセットを実行するコンピューティング・システムとの間の相互作用の相互作用図500を示している。本明細書で説明されるように、相互作用図500は、ユーザ505と、オペレーティング・システム構成をセキュアにブートするように構成されたコンピューティング・システムの要素との間の相互作用を示す。相互作用図の構成要素は、ユーザ505、コンピューティング・システムの実行環境510、およびコンピューティング・システムのシステム状態515を含む。実行環境510は、ユーザ・アプリケーション530を実行するオペレーティング・システム構成A525、信頼できるアプリケーション550、ブートローダ560、およびオペレーティング・システム構成B570であることが可能である。システム状態515は、図5の状況で使用されているように、コンピューティング・デバイスに格納された不揮発性データを読み込むか、修正する動作の対象を示す。ユーザ505は、ユーザ・インターフェース520(例えばローカルもしくはリモート・ユーザ・インターフェース端末)を通じて、またはローカル・ユーザ・インターフェース545を通じて(例えばコンピューティング・システムにユーザが物理的にアクセスできる間に)、実行環境510と相互作用することができる。
相互作用の第1のセットは、参照要素535によって示されるように、オペレーティング・システム構成A(O/S構成A)がコンピューティング・システムにおいてブートされている間に実行されることが可能である。
様々な実施形態によれば、ユーザ・アプリケーション530は、オペレーティング・システム構成B(O/S構成B)をロードするリクエスト531を受け取ることができる。リクエスト531は、ユーザ・インターフェース520を通じてユーザ505から受け取られることが可能である。ユーザ・アプリケーション530は次に、動作532のセットを実行して、O/S構成Bに署名するために使用された秘密鍵に関連付けられた公開鍵を格納することができる。公開鍵は、コンピューティング・システムの不揮発性メモリに格納されることが可能である。ユーザ・アプリケーション530は、動作533をさらに実行して、コンピューティング・システムの次の再起動後にO/S構成Bをブートするために、コンピューティング・システムのブートローダの構成を更新することができる。O/S構成Aは次に、コンピューティング・システムを再起動させるリクエスト534を受け取ることができる。
参照要素540によって示されるように、コンピューティング・システムは次に、再起動することができる。
参照要素565によって示されるように、コンピューティング・システムがブート前状態にある間、以下の相互作用が実行される。
様々な実施形態によれば、信頼できるアプリケーション550は、動作551を実行して、不揮発性メモリから、格納された公開鍵を取得し、既知の(例えば有効な)署名されたオペレーティング・システム構成に、取得した公開鍵が対応することを検証する(例えば実証する)。信頼できるアプリケーション550は、動作552をさらに実行して、O/S構成Bをブートするリクエストを確認するように、ローカル・ユーザ・インターフェース端末545を通じて、ユーザ505に促すことができる。信頼できるアプリケーション550は次に、動作553を実行して、ユーザ505から確認を受け取ることができる。信頼できるアプリケーションは、動作554および動作555をさらに実行して、公開鍵を保護メモリに移し、ブートローダ560を認証して実行することができる。ブートローダ560は、動作561および動作562を実行して、保護メモリから公開鍵を取得し、O/S構成Bを認証してブートすることができる。いくつかの実施形態において、ブートローダ560は、動作561および動作562を実行し、認証(または検証)が成功すると、O/S構成B570をブートすることを、信頼できるアプリケーション550に行わせることができる。
コンピューティング・システムは次に、参照要素575によって示されるように、O/S構成Bの下でブート状態に入ることができる。
図6は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのハードウェアおよびソフトウェア構成要素を有するコンピューティング・デバイス600のブロック図を示している。
コンピューティング・デバイス600の構成要素は、1つまたは複数のプロセッサ606、メモリ612、端末インターフェース618、ストレージ・インターフェース620、入力/出力(「I/O」)デバイス・インターフェース622、およびネットワーク・インターフェース624を含むことができ、これらの全てが、メモリ・バス610、I/Oバス616、バス・インターフェース・ユニット(「IF」)608、およびI/Oバス・インターフェース・ユニット614を介して、構成要素間通信のために直接的または間接的に通信可能に連結される。
コンピューティング・デバイス600は、本明細書において総称的にプロセッサ606と呼ばれる、1つまたは複数の汎用プログラマブル中央処理装置(CPU)606Aおよび606Bを含むことができる。一実施形態において、コンピューティング・デバイス600は、複数のプロセッサを収めることができるが、別の実施形態において、コンピューティング・デバイス600は、一方で、単一のCPUデバイスであることが可能である。各プロセッサ606は、メモリ612に格納された命令を実行する。
コンピューティング・デバイス600は、プロセッサ606、メモリ612、ディスプレイ・システム604、およびI/Oバス・インターフェース・ユニット614の間の通信を行うためのバス・インターフェース・ユニット608を含むことができる。I/Oバス・インターフェース・ユニット614は、様々なI/Oユニットとの間でデータを移送するためにI/Oバス616と連結されることが可能である。I/Oバス・インターフェース・ユニット614は、I/Oバス616を通じて、I/Oプロセッサ(IOP)またはI/Oアダプタ(IOA)としても知られる複数のI/Oインターフェース・ユニット618、620、622、および624と通信することができる。ディスプレイ・システム604は、ディスプレイ・コントローラ、ディスプレイ・メモリ、または両方を含むことができる。ディスプレイ・コントローラは、映像、音声、または両方のタイプのデータをディスプレイ・デバイス602に提供することができる。ディスプレイ・メモリは、映像データをバッファするための専用メモリであることが可能である。ディスプレイ・システム604は、スタンドアロン・ディスプレイ画面、コンピュータ・モニタ、テレビ、タブレットもしくはハンドヘルド・デバイスのディスプレイ、または別の他の表示可能デバイスなどのディスプレイ・デバイス602と連結されることが可能である。一実施形態において、ディスプレイ・デバイス602は、音声を再生するための1つまたは複数のスピーカを含むことができる。一方、音声を再生するための1つまたは複数のスピーカは、I/Oインターフェース・ユニットと連結されることが可能である。代替実施形態において、ディスプレイ・システム604によって提供される1つまたは複数の機能は、プロセッサ606も含むオンボードの集積回路であることが可能である。さらに、バス・インターフェース・ユニット608によって提供される機能の1つまたは複数は、プロセッサ606も含むオンボードの集積回路であることが可能である。
I/Oインターフェース・ユニットは、様々なストレージ・デバイスおよびI/Oデバイスとの通信をサポートする。例えば、端末インターフェース・ユニット618は、ユーザ出力デバイス(映像表示デバイス、スピーカ、またはテレビ・セット、あるいはその組合せなど)ならびにユーザ入力デバイス(キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、ライト・ペン、または他のポインティング・デバイスなど)を含むことができる、1つまたは複数のユーザI/Oデバイスの接続をサポートする。ユーザは、入力データおよびコマンドをユーザI/Oデバイス626およびコンピューティング・デバイス600に提供するために、ユーザ・インターフェースを使用してユーザ入力デバイスを操作することができ、ユーザ出力デバイスを介して出力データを受け取ることができる。例えば、ユーザ・インターフェースは、ディスプレイ・デバイス上に表示されること、スピーカを介して再生されること、またはプリンタを介して印刷されることなど、ユーザI/Oデバイス626を介して提示されることが可能である。
ストレージ・インターフェース620は、1つまたは複数のディスク・ドライブ、すなわちダイレクト・アクセス・ストレージ・デバイス628の接続をサポートする(これらは、一方で、ホスト・コンピュータに対して単一の大きいストレージ・デバイスのように見えるように構成されたディスク・ドライブ、またはフラッシュ・メモリなどのソリッドステート・ドライブのアレイを含む他のストレージ・デバイスである可能性もあるが、典型的には、回転式の磁気ディスク・ドライブ・ストレージ・デバイスである)。別の実施形態において、ストレージ・デバイス628は、任意のタイプの2次ストレージ・デバイスを介して実装されることが可能である。メモリ612、またはメモリ612の任意の部分の内容は、必要に応じて、ストレージ・デバイス628に格納されること、およびストレージ・デバイス628から取得されることが可能である。I/Oデバイス・インターフェース622は、他の様々なI/Oデバイスのいずれか、またはプリンタもしくはファックス・マシンなどの他のタイプのデバイスへのインターフェースを行う。ネットワーク・インターフェース624は、コンピューティング・デバイス600から他のデジタル・デバイスおよびコンピュータ・システムへの1つまたは複数の通信経路を提供する。
セキュリティ構成要素631は、セキュリティ構成要素325(図3)に実質的に似ており、セキュリティ構成要素325の同じ機能を含むことができる。セキュリティ構成要素631は、コンピューティング・デバイス600においてブートする実行可能コードの整合性またはアプリケーションの真正性を保証するためのハードウェアおよびソフトウェア構成要素を含むことができる。
図6に示されたコンピューティング・デバイス600は、プロセッサ606、メモリ612、バス・インターフェース608、ディスプレイ・システム604、およびI/Oバス・インターフェース・ユニット614の間の直接の通信経路を提供する特定のバス構造を示すが、代替実施形態において、コンピューティング・デバイス600は、階層式のポイント・ツー・ポイント・リンク、スター型もしくはウェブ型構成、複数階層式のバス、並列および冗長経路、または他の任意の妥当なタイプの構成など、様々な形式のいずれかで配置されることが可能な様々なバスまたは通信経路を含むことができる。さらに、I/Oバス・インターフェース・ユニット614およびI/Oバス608は単一の個々のユニットとして示されるが、コンピューティング・デバイス600は、複数のI/Oバス・インターフェース・ユニット614または複数のI/Oバス616あるいはその両方を含むことができる。様々なI/Oデバイスに通じている様々な通信経路からI/Oバス616を分離する複数のI/Oインターフェース・ユニットが示されるが、他の実施形態において、I/Oデバイスのいくつかまたは全ては、1つまたは複数のシステムI/Oバスに直接的に接続される。
様々な実施形態において、コンピューティング・デバイス600は、マルチ・ユーザ・メインフレーム・コンピュータ・システム、シングル・ユーザ・システム、または直接のユーザ・インターフェースがほとんどないか、全くないが、他のコンピュータ・システム(クライアント)からリクエストを受け取るサーバ・コンピュータもしくは類似のデバイスである。他の実施形態において、コンピューティング・デバイス600は、デスクトップ・コンピュータ、携帯型コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット型コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、または他の任意の適切なタイプの電子デバイスとして実装されることが可能である。
一実施形態において、メモリ612は、データおよびプログラムを格納またはエンコードするためのランダム・アクセス半導体メモリ、ストレージ・デバイス、またはストレージ媒体(揮発性または不揮発性)を含むことができる。別の実施形態において、メモリ612は、コンピューティング・デバイス600の仮想メモリ全体を表し、コンピューティング・デバイス600に連結されるか、ネットワーク630を介して接続される、他のコンピュータ・システムの仮想メモリを含むこともできる。メモリ612は、単一のモノリシック・エンティティであることが可能であるが、他の実施形態において、メモリ612は、キャッシュおよび他のメモリ・デバイスの階層を含むことができる。例えば、メモリは、複数レベルのキャッシュに存在することができ、これらのキャッシュは、1つのキャッシュが命令を保持する一方で、別のキャッシュが、プロセッサによって使用される非命令データを保持するべく、機能によってさらに分割されることが可能である。メモリ612は、任意の様々な、いわゆる不均一メモリ・アクセス(Non-Uniform Memory Access、NUMA)コンピュータ・アーキテクチャにおいて知られているように、さらに分散されること、および様々なCPUまたはCPUのセットと関連付けられることが可能である。
メモリ612は、図1~図5に示された構成要素およびデータの全てまたは一部を格納することができる。特に、ユーザ・アプリケーション、信頼できるアプリケーション、ブートローダ、およびオペレーティング・システム構成の1つまたは複数は、本明細書で説明される動作を行うために認証され、実行されるように、ストレージ・デバイス628またはセキュリティ構成要素631からメモリ612にロードされることが可能である。コンピュータ実行可能コードは、プロセッサ606によって実行されることが可能である。図1~図5に示された構成要素およびデータのいくつかまたは全ては、様々なコンピュータ・システム上にあることが可能であり、リモートに、例えばネットワーク630を介して、アクセスされることが可能である。コンピューティング・デバイス600は、コンピューティング・デバイス600のプログラムが、複数の、より小さいストレージ・エンティティにアクセスする代わりに、大きい単一のストレージ・エンティティにアクセスしているだけのように振る舞うことを可能にする仮想アドレス・メカニズムを使用することができる。したがって、図1~図5に示された構成要素およびデータは、メモリ612に含まれるように示されるが、これらの構成要素およびデータは、必ずしも、同じストレージ・デバイスに同時に全て完全に収められるわけではない。図1~図5に示された構成要素およびデータは個別のエンティティとして示されるが、他の実施形態において、これらのうちのいくつか、これらのうちのいくつかの一部、またはこれらの全ては、まとめてパッケージ化されることが可能である。
一実施形態において、図1~図5に示された構成要素およびデータは、プロセッサ606において実行する命令もしくは文、またはプロセッサ606を実行して下記でさらに説明されるような機能を行う命令もしくは文によって解釈される命令もしくは文を含むことができる。別の実施形態において、図1~図5に示された構成要素は、プロセッサ・ベースのシステムの代わりに、または加えて、半導体デバイス、チップ、論理ゲート、回路、回路カード、または他の物理的なハードウェア・デバイス、あるいはその組合せを介してハードウェアの中に実装されることが可能である。一実施形態において、図1~図5に示された構成要素は、命令または文に加えてデータを含むことができる。
図6は、コンピューティング・デバイス600の代表的な構成要素を図示することを意図するものである。しかし個々の構成要素は、図6に表されたものより大きな複雑性を有する可能性がある。図6において、示された構成要素以外の、または加えた構成要素が存在することが可能であり、このような構成要素の数、タイプ、および構成は変化することが可能である。さらなる複雑性またはさらなる変形形態のいくつかの特定の例が本明細書で開示されるが、これらは、ほんの一例としてのものであり、必ずしも唯一のこのような変形形態ではない。図6に含まれるものとして説明される様々なプログラム構成要素は、様々な実施形態において、本明細書において「ソフトウェア」、「コンピュータ・プログラム」、または単に「プログラム」と呼ばれる可能性もある、様々なコンピュータ・アプリケーション、ルーチン、構成要素、プログラム、オブジェクト、モジュール、データ構造、等を使用することを含むいくつかの異なる方式で実装されることが可能である。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、本発明の態様をプロセッサに行わせるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形のデバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであることが可能であるがこれらに限定されない。コンピュータ可読ストレージ媒体の多くの具体例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、記録された命令を有するパンチ・カード、または溝の中の隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的な信号それ自体であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング/処理デバイスに、あるいは例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含めることができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、個々のコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語、もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであることが可能である。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして、全面的にユーザのコンピュータ上、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上、または全面的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む、任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われることが可能である。いくつかの実施形態において、例えば、プログラマブル・ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を行うためにコンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら本明細書で説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行されることが可能であるということが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/作用を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて機械を生み出すことが可能である。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/作用の態様を実行する命令を含む製品を備えるべく、特定の手法で機能するようにコンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指示することができるコンピュータ可読ストレージ媒体に格納されることも可能である。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/作用を実行するべく、コンピュータ実行処理を生み出すコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを行わせるために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされることも可能である。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートおよびブロック図の中の各ブロックは、指定された論理機能を実行するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態において、ブロックに記述された機能は、図に記述された順序とは異なる順序で発生させることができる。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されることが可能であり、または、それらのブロックは、時には、関連する機能に応じて、逆の順序で実行されることが可能である。ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能または作用を行うか、専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実行されることが可能であるということにも留意されたい。
本開示の様々な実施形態の説明は例証のために提示されたが、開示された実施形態に対して網羅的または限定的であることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正形態および変形形態が当業者に明らかになるであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な用途、もしくは市場において見つかる技術に対する技術的な改善を説明するため、または本明細書で開示された実施形態を当業者が理解できるようにするために選ばれた。

Claims (22)

  1. コンピューティング・システムが、
    前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
    前記リクエストを受け取ることに応答して、前記オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することと、
    前記コンピューティング・システムを再起動することと、
    前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
    格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、
    前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、
    前記信号を受け取ることに応答して、前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
    前記認証することに応答して、前記オペレーティング・システム構成をブートすることと
    を実行する、方法。
  2. 前記信号を受け取ることの前に、前記コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に前記デジタル鍵が対応すると判断すること
    をさらに含む、請求項1に記載の方法。
  3. 前記信号を受け取ることに応答して、前記コンピューティング・システムの保護メモリに前記デジタル鍵を移すことをさらに含み、前記保護メモリは、前記コンピューティング・システムがブート前状態にある間だけ書込み可能である、請求項1または請求項2に記載の方法。
  4. 前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行コード整合性を有するソフトウェア・アプリケーションによってのみ書込み可能である、請求項3に記載の方法。
  5. 前記認証することが、前記保護メモリから前記デジタル鍵を取得することと、前記取得したデジタル鍵を使用して、前記オペレーティング・システム構成のデジタル署名を検証することと、を含む、請求項3または請求項4に記載の方法。
  6. 前記オペレーティング・システム構成が、
    オペレーティング・システム・カーネルと、
    前記オペレーティング・システム・カーネルのアクセス制御ポリシを実施するためのパラメータのセットと
    を含む、請求項1~請求項5のいずれか一項に記載の方法。
  7. 前記パラメータのセットが、前記オペレーティング・システム・カーネルの実行可能コードにコンパイルされる、請求項6に記載の方法。
  8. 前記オペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によってデジタル的に署名され、
    前記デジタル鍵が、前記公開鍵と秘密鍵のペアの公開鍵である、
    請求項1~請求項7のいずれか一項に記載の方法。
  9. ユーザ・インターフェース端末と、
    前記ユーザ・インターフェース端末に物理的に連結されたコンピューティング・システムと、を備えたシステムであって、
    前記コンピューティング・システムが、プログラム命令を記憶したコンピュータ可読ストレージ媒体を備え、
    前記プログラム命令が、請求項1~8のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させる、システム。
  10. コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラムであって、請求項1~8のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させるためのコンピュータ・プログラム。
  11. 請求項10に記載のコンピュータ・プログラムを記憶したコンピュータ可読ストレージ媒体。
  12. コンピューティング・システムが、
    前記コンピューティング・システムにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第2のオペレーティング・システム構成が、
    公開鍵と秘密鍵のペアの秘密鍵によって署名され、
    前記第2のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされたオペレーティング・システム・カーネルを少なくとも含む、
    受け取ることと、
    前記リクエストを受け取ることに応答して、前記秘密鍵に対応する公開鍵を前記コンピューティング・システムの不揮発性メモリに格納することと、
    前記コンピューティング・システムのブート前状態の間に、信頼できるアプリケーションを実行することによって、
    格納された前記公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、
    前記コンピューティング・システムへのローカル・インターフェースから、前記受け取ったリクエストを確認する信号を受け取ること、
    前記信号が前記リクエストを確認するとき、前記公開鍵を保護メモリに移すこと、および
    前記保護メモリに格納された公開鍵を使用して前記第2のオペレーティング・システム構成を認証し、前記認証することに応答して前記第2のオペレーティング・システム構成をブートするように前記保護メモリにアクセスできるブートローダを実行すること
    を行うことと
    を実行する、方法。
  13. 前記パラメータのセットが、前記第2のオペレーティング・システム構成の下でロード可能なソフトウェア・モジュールを決定する、請求項12に記載の方法。
  14. 前記パラメータのセットが、前記アクセス制御ポリシの実施を決定する、請求項12または請求項13に記載の方法。
  15. 前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行可能コード整合性を有する前記信頼できるアプリケーションを含むアプリケーションのセットによる書込みだけが可能である、請求項12~請求項14のいずれか一項に記載の方法。
  16. ユーザ・インターフェース端末と、
    前記ユーザ・インターフェース端末に物理的に連結されたコンピューティング・システムと、を備えたシステムであって、
    前記コンピューティング・システムが、プログラム命令を記憶したコンピュータ可読ストレージ媒体を備え、
    前記プログラム命令が、請求項12~15のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させる、システム。
  17. コンピューティング・システムが、
    前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
    前記オペレーティング・システム構成を認証するためのデジタル鍵を格納することと、
    前記コンピューティング・システムを再起動することと、
    前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
    前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
    前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに連結されたユーザ・インターフェース端末から受け取ることと、
    前記認証することおよび前記確認する信号を受け取ることに応答して、前記オペレーティング・システム構成をブートすることと
    を実行する、方法。
  18. ユーザ・インターフェース端末に連結されると共にメモリおよびプロセッサを有するコンピューティング・システムであって、
    前記メモリが、プログラム命令を含み、
    前記プログラム命令が、前記プロセッサに実行されると、
    前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
    前記オペレーティング・システム構成を認証するためのデジタル鍵を格納することと、
    前記コンピューティング・システムを再起動することと、
    前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
    前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
    前記受け取ったリクエストを確認する信号を、前記ユーザ・インターフェース端末から受け取ることと、
    前記認証することおよび前記確認する信号を受け取ることに応答して、前記オペレーティング・システム構成をブートすることと
    を前記コンピューティング・システムに実行させる、コンピューティング・システム。
  19. コンピューティング・システムが、
    前記コンピューティング・システムにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第2のオペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によって署名されている、受け取ることと、
    前記コンピューティング・システムのブート前状態の間に、
    前記コンピューティング・システムに連結されたユーザ・インターフェース端末から、前記受け取ったリクエストを確認する信号を受け取ること、
    前記リクエストを確認する信号を受け取ることに応答して、前記公開鍵を保護メモリに移すこと、および
    前記保護メモリに格納された前記公開鍵を使用して前記第2のオペレーティング・システム構成を認証し、前記認証することに応答して前記第2のオペレーティング・システム構成をブートするように、前記保護メモリにアクセスできるブートローダを実行すること
    を行うことと
    を実行する、方法。
  20. ユーザ・インターフェース端末に連結されると共にメモリおよびプロセッサを有するコンピューティング・システムであって、
    前記メモリが、プログラム命令を含み、
    前記プログラム命令が、前記プロセッサに実行されると、
    前記コンピューティング・システムにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第2のオペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によって署名されている、受け取ることと、
    前記コンピューティング・システムのブート前状態の間に、
    前記ユーザ・インターフェース端末から、前記受け取ったリクエストを確認する信号を受け取ること、
    前記リクエストを確認する信号を受け取ることに応答して、前記公開鍵を保護メモリに移すこと、および
    前記保護メモリに格納された前記公開鍵を使用して前記第2のオペレーティング・システム構成を認証し、前記認証することに応答して前記第2のオペレーティング・システム構成をブートするように、前記保護メモリにアクセスできるブートローダを実行すること
    を行うことと
    を前記コンピューティング・システムに実行させる、コンピューティング・システム。
  21. コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラムであって、請求項12~15、請求項17および請求項19のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させるためのコンピュータ・プログラム。
  22. 請求項21に記載のコンピュータ・プログラムを記憶したコンピュータ可読ストレージ媒体。
JP2019568055A 2017-06-16 2018-06-12 ハードウェアを使用してオペレーティング・システム構成をセキュアにすること Active JP7169042B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/624,970 2017-06-16
US15/624,970 US10467416B2 (en) 2017-06-16 2017-06-16 Securing operating system configuration using hardware
PCT/IB2018/054226 WO2018229640A1 (en) 2017-06-16 2018-06-12 Securing operating system configuration using hardware

Publications (2)

Publication Number Publication Date
JP2020523685A JP2020523685A (ja) 2020-08-06
JP7169042B2 true JP7169042B2 (ja) 2022-11-10

Family

ID=64656210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019568055A Active JP7169042B2 (ja) 2017-06-16 2018-06-12 ハードウェアを使用してオペレーティング・システム構成をセキュアにすること

Country Status (6)

Country Link
US (4) US10467416B2 (ja)
JP (1) JP7169042B2 (ja)
CN (1) CN110663027B (ja)
DE (1) DE112018002031B4 (ja)
GB (1) GB2576469B (ja)
WO (1) WO2018229640A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11277412B2 (en) * 2018-05-28 2022-03-15 Royal Bank Of Canada System and method for storing and distributing consumer information
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
US20210006412A1 (en) * 2018-03-05 2021-01-07 Quanta Networks Inc. Communications system and devices for routing data
US10802834B2 (en) * 2018-06-11 2020-10-13 Google Llc Enabling multiple secure boot paths on a hardware platform
US10778444B2 (en) * 2018-07-11 2020-09-15 Verizon Patent And Licensing Inc. Devices and methods for application attestation
EP3794772A4 (en) 2019-01-04 2021-12-29 Baidu.com Times Technology (Beijing) Co., Ltd. Data processing accelerator having security unit to provide root trust services
US11693970B2 (en) 2019-01-04 2023-07-04 Baidu Usa Llc Method and system for managing memory of data processing accelerators
CN112262546B (zh) * 2019-01-04 2024-04-23 百度时代网络技术(北京)有限公司 用于数据处理加速器的密钥分配和交换的方法和系统
US11328075B2 (en) 2019-01-04 2022-05-10 Baidu Usa Llc Method and system for providing secure communications between a host system and a data processing accelerator
US11609766B2 (en) 2019-01-04 2023-03-21 Baidu Usa Llc Method and system for protecting data processed by data processing accelerators
CN112236972B (zh) 2019-01-04 2023-06-16 百度时代网络技术(北京)有限公司 用于导出会话密钥以确保主机系统和数据处理加速器之间的信息交换信道的方法和系统
US11616651B2 (en) 2019-01-04 2023-03-28 Baidu Usa Llc Method for establishing a secure information exchange channel between a host system and a data processing accelerator
EP3794477B1 (en) * 2019-01-04 2023-05-10 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
US11409534B2 (en) 2019-01-04 2022-08-09 Baidu Usa Llc Attestation protocol between a host system and a data processing accelerator
US11281251B2 (en) 2019-01-04 2022-03-22 Baidu Usa Llc Data processing accelerator having a local time unit to generate timestamps
KR20210026215A (ko) * 2019-08-29 2021-03-10 삼성에스디에스 주식회사 온라인 회의 관리 장치 및 방법
EP3798886A1 (en) 2019-09-26 2021-03-31 General Electric Company Devices, systems, and methods for securely initializing an embedded system
US11409541B2 (en) * 2020-02-18 2022-08-09 Dell Products L.P. Systems and methods for binding secondary operating system to platform basic input/output system
EP3916600A1 (en) * 2020-05-27 2021-12-01 Mettler-Toledo (Albstadt) GmbH Method for operating an electronic data processing system and electronic data processing system
US11822664B2 (en) 2020-06-22 2023-11-21 Apple Inc. Securely signing configuration settings
US11379212B2 (en) * 2020-08-31 2022-07-05 Microsoft Technology Licensing, Llc Systems and methods for disaggregating system firmware configuration data into a management subsystem for seamless updates
DE102020211413A1 (de) 2020-09-11 2022-03-17 Siemens Aktiengesellschaft Betriebsverfahren für eine Ladesäule
US11809568B2 (en) * 2021-05-12 2023-11-07 International Business Machines Corporation Hypervisor having local keystore
CN114138362B (zh) * 2021-11-18 2024-03-01 武汉深之度科技有限公司 一种内核模块防卸载方法、防卸载装置及计算设备
CN114546501B (zh) * 2022-01-28 2023-10-24 郑州信大捷安信息技术股份有限公司 一种物理只读磁盘中启动Linux操作系统的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011138298A (ja) 2009-12-28 2011-07-14 Ntt Data Corp アクセス制御設定装置、方法及びコンピュータプログラム
JP2015102989A (ja) 2013-11-25 2015-06-04 沖電気工業株式会社 周辺機器制御障害回避方法、周辺機器制御障害回避プログラム、処理装置、及び処理システム
JP2015118454A (ja) 2013-12-17 2015-06-25 キヤノンマーケティングジャパン株式会社 情報処理システム、その制御方法、及びプログラム、並びに情報処理装置、その制御方法、及びプログラム
JP2015537322A (ja) 2012-12-14 2015-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想化環境を検出するためのユーザ・トラステッド・デバイス
US20160012232A1 (en) 2014-07-11 2016-01-14 Dell Products L.P. Systems and methods for secure delivery of public keys for operating system drivers
JP2016021220A (ja) 2014-07-14 2016-02-04 レノボ・シンガポール・プライベート・リミテッド 退避ファイルの一貫性を検証する方法、コンピュータおよびコンピュータ・プログラム

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10336170A (ja) * 1997-05-29 1998-12-18 Mitsubishi Electric Corp 公開鍵検証装置
US7073069B1 (en) 1999-05-07 2006-07-04 Infineon Technologies Ag Apparatus and method for a programmable security processor
US8140683B2 (en) * 2000-12-07 2012-03-20 International Business Machines Corporation Method and system for selecting an operating system at user login on a target device
US6961941B1 (en) 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US20030115443A1 (en) * 2001-12-18 2003-06-19 Cepulis Darren J. Multi-O/S system and pre-O/S boot technique for partitioning resources and loading multiple operating systems thereon
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
US7328340B2 (en) 2003-06-27 2008-02-05 Intel Corporation Methods and apparatus to provide secure firmware storage and service access
US7475247B2 (en) * 2004-12-16 2009-01-06 International Business Machines Corporation Method for using a portable computing device as a smart key device
US8533845B2 (en) * 2005-02-15 2013-09-10 Hewlett-Packard Development Company, L.P. Method and apparatus for controlling operating system access to configuration settings
SE531992C2 (sv) * 2006-02-24 2009-09-22 Oniteo Ab Metod och system för säker programvaruprovisionering
CN101336411B (zh) * 2006-03-04 2012-12-12 英特尔公司 Os运行前阶段中计算系统的访问控制的方法和系统
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8984265B2 (en) * 2007-03-30 2015-03-17 Intel Corporation Server active management technology (AMT) assisted secure boot
CN101256608B (zh) * 2008-03-25 2010-04-07 北京飞天诚信科技有限公司 安全操作方法和系统
US20100082960A1 (en) * 2008-09-30 2010-04-01 Steve Grobman Protected network boot of operating system
CN102033761A (zh) * 2009-09-30 2011-04-27 鸿富锦精密工业(深圳)有限公司 电子装置及其多重开机方法
US8966657B2 (en) 2009-12-31 2015-02-24 Intel Corporation Provisioning, upgrading, and/or changing of hardware
US9721101B2 (en) * 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications
US8904190B2 (en) 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
US8560845B2 (en) * 2011-01-14 2013-10-15 Apple Inc. System and method for tamper-resistant booting
US9256745B2 (en) * 2011-03-01 2016-02-09 Microsoft Technology Licensing, Llc Protecting operating system configuration values using a policy identifying operating system configuration settings
CN102184352A (zh) * 2011-03-16 2011-09-14 东南大学 基于蓝牙设备认证的计算机系统自动防护方法
CN102726028A (zh) * 2011-12-31 2012-10-10 华为技术有限公司 一种加密方法、解密方法和相关装置及系统
CN103294499A (zh) 2012-03-05 2013-09-11 联想(北京)有限公司 一种信息处理的方法及电子设备
US9503268B2 (en) * 2013-01-22 2016-11-22 Amazon Technologies, Inc. Securing results of privileged computing operations
US9349009B2 (en) * 2013-07-15 2016-05-24 Paul A. Rivera Method and apparatus for firmware based system security, integrity, and restoration
CN103490895B (zh) * 2013-09-12 2016-09-14 电小虎能源科技(北京)有限公司 一种应用国密算法的工业控制身份认证方法及装置
CN104008342B (zh) * 2014-06-06 2017-12-15 山东超越数控电子股份有限公司 一种通过bios和内核实现安全可信认证的方法
GB2527569B (en) * 2014-06-26 2016-06-08 Ibm Booting a computer from a user trusted device with an operating system loader stored thereon
WO2016073411A2 (en) * 2014-11-03 2016-05-12 Rubicon Labs, Inc. System and method for a renewable secure boot
CN104572093A (zh) * 2014-12-30 2015-04-29 北京工业大学 使用usb控制器实现终端设备双操作系统启动的方法
US9674158B2 (en) * 2015-07-28 2017-06-06 International Business Machines Corporation User authentication over networks
CN105608347A (zh) * 2015-07-29 2016-05-25 宇龙计算机通信科技(深圳)有限公司 操作系统切换方法、操作系统切换装置和终端
US10313121B2 (en) * 2016-06-30 2019-06-04 Microsoft Technology Licensing, Llc Maintaining operating system secrets across resets
US10242196B2 (en) * 2016-07-29 2019-03-26 Vmware, Inc. Secure booting of computer system
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011138298A (ja) 2009-12-28 2011-07-14 Ntt Data Corp アクセス制御設定装置、方法及びコンピュータプログラム
JP2015537322A (ja) 2012-12-14 2015-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想化環境を検出するためのユーザ・トラステッド・デバイス
JP2015102989A (ja) 2013-11-25 2015-06-04 沖電気工業株式会社 周辺機器制御障害回避方法、周辺機器制御障害回避プログラム、処理装置、及び処理システム
JP2015118454A (ja) 2013-12-17 2015-06-25 キヤノンマーケティングジャパン株式会社 情報処理システム、その制御方法、及びプログラム、並びに情報処理装置、その制御方法、及びプログラム
US20160012232A1 (en) 2014-07-11 2016-01-14 Dell Products L.P. Systems and methods for secure delivery of public keys for operating system drivers
JP2016021220A (ja) 2014-07-14 2016-02-04 レノボ・シンガポール・プライベート・リミテッド 退避ファイルの一貫性を検証する方法、コンピュータおよびコンピュータ・プログラム

Also Published As

Publication number Publication date
DE112018002031T5 (de) 2020-01-16
CN110663027B (zh) 2023-05-16
US20200019709A1 (en) 2020-01-16
WO2018229640A1 (en) 2018-12-20
GB201918518D0 (en) 2020-01-29
JP2020523685A (ja) 2020-08-06
US20180365427A1 (en) 2018-12-20
CN110663027A (zh) 2020-01-07
US20180365426A1 (en) 2018-12-20
GB2576469A (en) 2020-02-19
US11080405B2 (en) 2021-08-03
US20200019710A1 (en) 2020-01-16
US10467416B2 (en) 2019-11-05
GB2576469B (en) 2020-07-15
US11113404B2 (en) 2021-09-07
US10482259B2 (en) 2019-11-19
DE112018002031B4 (de) 2022-08-11

Similar Documents

Publication Publication Date Title
JP7169042B2 (ja) ハードウェアを使用してオペレーティング・システム構成をセキュアにすること
US10831886B2 (en) Virtual machine manager facilitated selective code integrity enforcement
CN107683479B (zh) 基于nand的验证引导
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
CN109416720B (zh) 跨重置维护操作系统秘密
US9836601B2 (en) Protecting anti-malware processes
US9858422B2 (en) Securely booting a computer from a user trusted device
US11165780B2 (en) Systems and methods to secure publicly-hosted cloud applications to run only within the context of a trusted client application
US10592661B2 (en) Package processing
US11194913B2 (en) Unsecure to secure transition of mutable core root of trust
US10255438B2 (en) Operating system agnostic validation of firmware images
JP2016539405A (ja) 読み出し専用のシステムイメージ内のシステムレベルサービスを更新するためのシステム及び方法
CN111158771B (zh) 处理方法、装置及计算机设备
CN114691157A (zh) 基于云的fpga管理控制系统、方法及电子设备
JP2023026017A (ja) 起動検証プログラム、情報処理装置および起動検証方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200612

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220322

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20220526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220613

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221018

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20221019

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R150 Certificate of patent or registration of utility model

Ref document number: 7169042

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150