JP4971466B2 - コンピューティング・デバイスの安全なブート - Google Patents

コンピューティング・デバイスの安全なブート Download PDF

Info

Publication number
JP4971466B2
JP4971466B2 JP2009544850A JP2009544850A JP4971466B2 JP 4971466 B2 JP4971466 B2 JP 4971466B2 JP 2009544850 A JP2009544850 A JP 2009544850A JP 2009544850 A JP2009544850 A JP 2009544850A JP 4971466 B2 JP4971466 B2 JP 4971466B2
Authority
JP
Japan
Prior art keywords
code image
code
image
successful
header value
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
JP2009544850A
Other languages
English (en)
Other versions
JP2010515966A (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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2010515966A publication Critical patent/JP2010515966A/ja
Application granted granted Critical
Publication of JP4971466B2 publication Critical patent/JP4971466B2/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本発明は、一般には、電子セキュリティに関する。より詳細には、本発明は、コンピューティング・デバイスを安全にブートすることに関する。
人々の日常生活においてますます多くのコンピューティング・デバイスが使用されるにつれて、セキュリティが、ユーザおよびコンテンツ・プロバイダに広く懸念されるようになっている。ウィルス、ワーム、トロイの木馬、個人情報窃盗、ソフトウェアおよびメディア・コンテンツ著作権侵害、およびデータ破壊の脅威を用いた恐喝が横行している。通常、これらの攻撃は、さもなければシステム、コンテンツ・プロバイダ、ユーザまたはアプリケーションにとって私的なものであるデバイス・リソースへのアクセスを露呈させるために悪意のあるソフトウェア・コードをインストールし実行することを伴う。
例えば、ハッカー・プログラムは、ハリウッド映画や音楽などのオーディオ/ビデオ・コンテンツを再生するために開発された消費者コンピューティング・デバイス内で実行されるとき、A/Vコンテンツをセキュリティ保護するために使用された暗号化を破ることを潜在的に可能にし得る。したがって、こうしたデバイスには、ハイ・レベルのセキュリティが通常必要である。
オペレーティング・システムは、こうした攻撃から保護するためのいくつかのセキュリティ機能を提供し得る。しかし、オペレーティング・システムのセキュリティ機能は、日々生じる新しい攻撃に後れを取ることがよくある。さらに、コンピューティング・デバイスをブートするとき、セキュリティ機能は、まだ初期化されていないことがあり、迂回および/または改ざんに脆弱である。
これらの攻撃から保護する別のやり方は、メーカから出荷された後にいずれかの追加のソフトウェアがインストールされ、かつ/または実行されないようにコンピューティング・デバイスを完全に封印することである。しかし、こうした厳格な対策は、基礎をなすコンピューティング・デバイスの能力および柔軟性を厳しく制限する。それは、コンピューティング・デバイスのアップグレードを高価で難しいものにするだけでなく、デバイスの外部からソフトウェア・コードをダウンロードし実行することを必要とするますます増えているアプリケーションを利用することができない。さらに、迅速な技術進歩は通常、コンピューティング・デバイス内に元来組み込まれたアプリケーションまたは機能性を非常に短期間のうちに陳腐化させる。
したがって、現在のセキュリティ対策は、コンピューティング・デバイス内のアプリケーションおよびコンテンツを保護し、その一方でデバイスのソフトウェアおよび/またはファームウェアを更新する柔軟性を与える堅牢な解決策を提供していない。
デバイスのメモリ内にロードされたコード・イメージを検証するためにデバイス内部に埋め込まれたコードを実行するための方法および装置について、本明細書に述べられる。コード・イメージは、信頼できるコード・イメージであると検証された後に実行され得る。埋め込まれたコードは、デバイスのROM(read only memory:読取り専用メモリ)などの安全な記憶域に格納されてもよい。一実施形態では、コード・イメージの検証は、安全な記憶域内に格納された鍵に基づく。鍵は、各デバイスに一意であってもよい。鍵へのアクセスは、関連する安全な記憶域によって制御されてもよい。デバイスは、検証されたコード・イメージの実行の後に続いて動作環境の確立を完了してもよい。
一代替実施形態では、コード・イメージは、デバイスの動作環境を提供するオペレーティング・システム(OS:operating system)のカーネルを表してもよい。コード・イメージは、デバイスの大容量記憶装置からロードされてもよい。デバイスを一意に識別する、セキュアROM内に格納された鍵を使用してうまく検証されると、コード・イメージは、デバイスの動作環境を確立するために、デバイスのメイン・メモリ内で実行されて、OSのカーネルが設定され得る。一実施形態では、デバイスは携帯型デバイスである。
一代替実施形態では、デバイスに関連する大容量記憶装置を初期化して大容量記憶装置へのアクセスを可能にするために、デバイスのセキュアROM(読取り専用メモリ)からの埋め込まれた第1の実行可能イメージが実行され得る。セキュアROMは、デバイスを一意に識別する一意識別子(ID)を格納してもよい。大容量記憶装置の初期化が成功すると、セキュアROM内に埋め込まれた一意識別子(ID)を使用して、大容量記憶装置内に格納された第2の実行可能イメージが突き止められ検証され得る。うまく検証された後、第2の実行可能イメージは、デバイス上で低レベルのハードウェア初期化を実施するために実行され得る。第2の実行可能イメージは、デバイスのオペレーティング・システム(OS)のカーネル・イメージを検証しロードする第3の実行可能イメージを突き止め実行するためにうまく実行され得る。カーネル・イメージは、デバイスのOSの残りを初期化し構成するためにうまく実行され得る。
本発明の他の特徴は、添付の図面、以下の詳細な説明から明らかになる。
本発明は、限定するためではなく、例示するために、添付の図面の図中に示されている。図面では、同じ参照符号は、類似の要素を示す。
安全なブートのためのシステム・コンポーネントの一実施形態を示すブロック図である。 安全なブートを実行するシステム・コンポーネントの一実施形態を示すブロック図である。 安全なブートを実施するためのプロセスの一実施形態を示すフローチャートである。 UID(一意の識別子)およびシード文字列に基づいてコード・イメージから署名を生成するためのプロセスの一実施形態を示すフローチャートである。 デバイスを安全にブートするためのホストのネットワーク接続の一実施形態を示すブロック図である。 ホストからデバイスまで動作環境を安全に回復するためのプロセスの一実施形態を示すフローチャートである。 ホストからデバイスまで動作環境の最小の安全な回復を実施するためのプロセスの一実施形態を示す状態図である。 ホストからデバイスまでソフトウェア・コンポーネントを安全に復元するためのプロセスの一実施形態を示すフローチャートである。 ホストからデバイスまでアプリケーションを安全に更新するためのプロセスの一実施形態を示すフローチャートである。 検証されないコード・イメージを実行するためのプロセスの一実施形態を示すフローチャートである。 本明細書に述べられた諸実施形態に関連して使用され得る一般的なコンピュータ・システムの一例を示す図である。 本発明の一実施形態で使用され得るデータ処理システムの一例を示す図である。
コンピューティング・デバイスを安全にブートするための方法および装置について、本明細書に述べられる。以下の説明では、本発明の実施形態についての完全な説明を提供するために、複数の具体的な詳細が述べられる。しかし、本発明の実施形態は、これらの具体的な詳細なしに実施できることが当業者には明らかである。他の例では、この説明の理解を曖昧にしないために、よく知られているコンポーネント、構造および技術は、詳細には示されていない。
本明細書中の「一実施形態(one embodiment、an embodiment)」への言及は、その実施形態に関連して述べられた特定の特徴、構造または特性が本発明の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々なところに語句「一実施形態では」が現れることは、必ずしもすべてが同じ実施形態に言及するものではない。
以下の諸図に示されたプロセスは、ハードウェア(例えば回路、専用論理など)、ソフトウェア(汎用コンピュータ・システムまたは専用マシンで実行されるものなど)、あるいは両方の組合せを備える処理論理によって実施される。下記ではプロセスについて、いくつかの順次オペレーションに関して述べられているが、述べられたオペレーションの一部は、異なる順序で実施され得ることを理解されたい。さらに、一部のオペレーションは、順次にではなく、並列に実施され得る。
用語「ホスト」および用語「デバイス」は、デバイスのフォーム・ファクタに対するホストの特定のフォーム・ファクタに具体的に言及するものではなく、データ処理システムに一般的に言及するものである。
一実施形態では、デバイスの安全なブートは、デバイス内の極めて重要なリソースが動作環境内で保護されることを保証するように設計されてもよい。一方、デバイスの安全なブートは、不要な管理、材料および/または実施コストを必要とせずに、デバイス内部で実行されるソフトウェアをそれぞれ異なるポリシーおよび手順の下で更新しインストールすることを可能にする柔軟性を提供することができる。一実施形態では、デバイスのブートのセキュリティは、デバイス内に一緒に組み込まれた、セキュアROMとも呼ばれるROM(読取り専用メモリ)などの安全な記憶域内に格納されたコードおよびデータによって実施されてもよい。セキュアROMの中身は、デバイスの製造段階の間に格納されてもよい。セキュアROMは、デバイスを一意に識別するデバイスのUID(一意識別子)に関連付けられてもよい。デバイス内で実行されるソフトウェア・コードの信頼の根は、UIDに基づいてセキュアROMによって署名されたコード・イメージから生じ得る。
一実施形態によれば、デバイスのセキュアROMは、信頼できるエンティティのルート証明書のフィンガープリントを含んでもよい。信頼できるエンティティによって証明されたコード・イメージは、フィンガープリントに基づいて、セキュアROMによる証明プロセスに従ってデバイス内で実行されると信頼され得る。一実施形態では、デバイスの安全なブートは、セキュアROMに従って信頼できるエンティティと結合されるとき、信頼できるソフトウェア・コードを回復してもよい。セキュアROMは、格納されたデバイスUIDに基づいてフィンガープリントによって証明されたコード・イメージまで信頼を広げることができる。一実施形態では、セキュアROMは、外部接続からダウンロードされたコード・イメージを証明することによってアプリケーション・ソフトウェアの復元を可能にすることができる。別の実施形態では、セキュアROMは、外部接続によってダウンロードされた信頼できるソフトウェア・コードによって、デバイス内に格納されたユーザ・データのクリーン・アップを強制してもよい。
図1は、安全なブートのためのシステム・コンポーネントの一実施形態を示すブロック図である。システム100は、デバイス内部の1つまたは複数のチップ内に常駐してもよい。一実施形態では、システム100は、メモリ・コンポーネント103と結合されたチップ105を含んでもよい。チップ105は、SRAM(Static Random Access Memory:スタティック・ランダム・アクセス・メモリ)やEDRAM(Embedded Dynamic Random Access Memory:埋込みダイナミック・ランダム・アクセス・メモリ)などのRAM(ランダム・アクセス・メモリ)コンポーネント111を含むこともできる。コード・イメージは、デバイスによって実行される前にメモリ・コンポーネント103内にロードされてもよい。実行されるとき、コード・イメージは、ユーザ・アプリケーション、システム・アプリケーション、および/またはユーザまたはシステム・アプリケーションをサポートするデバイスの動作環境(例えばオペレーティング・システム)をイネーブルしてもよい。一実施形態では、メモリ・コンポーネント103は、DDR(Double Data Rate:ダブル・データ・レート)メモリを含む。チップ105は、コード115および関連するデータ117を格納するROM 113を含んでもよい。コード115は、暗号ハッシュ関数SHA−1、SHA−224、SHA−256、SHA−384およびSHA−512などのSHA(Secure Hashing Algorithm:セキュア・ハッシュ・アルゴリズム)ハッシュ関数の実装を含んでもよい。さらに、コード115は、AES(Advanced Encryption Stantdard:高度暗号化規格)暗号化など、データ暗号化アルゴリズムの実装を含んでもよい。一実施形態では、コード115は、デバイスのハードウェア初期化に、USB(Universal Serial Bus:ユニバーサル・シリアル・バス)などの接続または通信インターフェースをサポートさせてもよい。コード115は、デバイスのクロック・レートを変更する命令を含んでもよい。本出願の全体にわたって、SHAとAESは、例示目的のためだけに例として用いられていることに留意されたく、他のハッシングおよび/または暗号化技術も使用され得ることが理解されよう。
一実施形態では、コード115は、メモリ・コンポーネント103やRAM 111などのデバイス・メモリへのコード・イメージのロードを引き起こしてもよい。コード・イメージは、チップ105に結合された記憶コンポーネント109からロードされてもよい。記憶コンポーネント109は、NANDフラッシュ、NORフラッシュまたは他の大容量記憶(例えばハード・ディスク)コンポーネントなど、フラッシュ・メモリであってもよい。別の実施形態では、コード・イメージは、デバイスの外部のソースから接続インターフェース101を介してロードされてもよい。接続インターフェース101は、USB接続、イーサネット(登録商標)接続または無線ネットワーク接続(例えばIEEE 802.1x)などに基づいてもよい。一実施形態では、コード115は、コード・イメージが信頼できるコードだけを含むことを検証した後、デバイス・メモリから記憶コンポーネント109にコード・イメージを格納させてもよい。
デバイスがデバイス・メモリ内にロードされたコード・イメージを実行し始め得る前に、コード115は、コード・イメージが信頼され得ることを保証するために、ロードされたコード・イメージへの検証オペレーションを実施してもよい。一実施形態では、コード115は、ROM内のデータ・セクション117、UID 119および/またはGID(Global Identifier:グローバル識別子)121など、チップ105内に含まれたデータに従って、ロードされたコード・イメージを検証してもよい。UID 119は、各デバイスに一意であってもよい。一実施形態では、すべてのデバイスが、単一のGID 121に関連付けられる。一実施形態では、GIDは、コード検査を防ぐためにコード・イメージを暗号化するのに使用されてもよい。ROM 115のデータ・セクション117は、公開鍵証明書など、信頼できるエンティティからの署名に基づいてフィンガープリント123を格納してもよい。一実施形態では、別個のデバイスが、信頼できる同じエンティティに基づくフィンガープリント123を含んでもよい。
図2は、安全なブートを実行するシステム・コンポーネントの一実施形態を示すブロック図である。システム100は、記憶コンポーネント109からLLB(Low Level Boot:低レベル・ブート)コード・イメージ229を、LLB 225としてRAM 111にロードしてもよい。LLB 225は、システム100の長期電力管理に関連してもよい。一実施形態では、LLB 225は、システム100のバージョンの識別を含んでもよい。コード・イメージLLB 225は、コード115の実行に基づいてロードされてもよい。一実施形態では、コード・イメージLLB 229は、コード115の実行によって、コード・イメージLLB 225に基づいてRAM 111から格納されてもよい。
コード・イメージiBoot 227は、一実施形態によれば、LLB 225の実行に従って、コード・イメージiBoot 231に基づいて記憶装置109からメモリ・コンポーネント111にロードされてもよい。コード・イメージiBoot 231は、システム100を収容するデバイスの動作環境を提供するオペレーティング・システムのためのハードウェア初期化を引き起こしてもよい。デバイスは、ブートが成功した後、動作環境に入ってもよい。動作環境は、デバイス内で実行される様々なユーザおよび/またはシステム・アプリケーションをサポートしてもよい。一実施形態では、コード・イメージiBoot231は、デバイスの大容量記憶コンポーネントをイネーブルし、ユーザ・インターフェースのグラフィック・コンポーネントを初期化し、かつ/またはデバイスの画面コンポーネントなどをアクティブ化してもよい。コード・イメージiBoot 231は、コード・イメージLLB 225の実行によって、コード・イメージiBoot 227に基づいてRAM 111から格納されてもよい。
一実施形態では、コード・イメージKernelcache 223は、コード・イメージKernelcache 233に基づいて記憶装置109からメモリ103にロードされてもよい。コード・イメージKernelcache 223は、デバイスの動作環境をサポートするオペレーティング・システムのカーネルの一部であってもよい。一実施形態では、コード・イメージKernelcache 223は、カーネルおよびオペレーティング・システム・コンポーネント235を記憶装置109からメモリ103にロードさせる。オペレーティング・システム・コンポーネントは、ユーザ・アプリケーション、ライブラリ、グラフィック・ユーザ・インターフェース・コンポーネントおよび/またはユーザ・データ235を含んでもよい。ユーザ・データは、デバイスのユーザに関連する音楽、画像、ビデオまたは他のデジタル・コンテンツを含んでもよい。例えば、こうしたユーザ・データは、制限された使用法を有するDRM(digital rights management:デジタル権利管理)に準拠したデータであってもよい。コード・イメージKernelcache 223は、カーネルおよびオペレーティング・システム・コンポーネント235をメモリ103にロードすることを可能にしてもよい。一実施形態では、コード・イメージKernelcache 223は、メモリ103内で実行される前に、検証プロセスに、カーネルが信頼できることを保証させてもよい。別の実施形態では、コード・イメージKernelcache 223は、メモリ103内で実行される前に、オペレーティング・システム・コンポーネント235が信頼できることを検証プロセスに保証させてもよい。コード・イメージKernelcache 223は、UID 119またはフィンガープリント123に基づいて、オペレーティング・システム・コンポーネント235が信頼できると決定するために実行されてもよい。一実施形態では、コード・イメージKernelcache 223は、GID 121に従ってメモリ103内のオペレーション・システム・コンポーネント235の復号を引き起こしてもよい。一実施形態では、コード・イメージKernelcache 223は、オペレーティング・システム・コンポーネント235をメモリ103から記憶装置109に格納するために実行されてもよい。コード・イメージKernelcache 223は、記憶装置109に格納される前にオペレーティング・システム・コンポーネント235の暗号化を可能にしてもよい。
一実施形態では、UID 119は、特権モードで実行されるいくつかのオペレーティング・システム・コンポーネントにアクセス可能であり得る。オペレーティング・システムのカーネルは、アプリケーションが特権モードで実行されているかどうかに応じて、アプリケーションによるUID 119へのアクセスをアプリケーションに拒否しまたは許可してもよい。一実施形態では、オペレーティング・システムのカーネルは、アプリケーションの対応するコード・イメージが適切に署名された署名を含んでいるかどうかに基づいて、アプリケーションが特権モードで実行され得るかどうか決定してもよい。DRM(デジタル権利管理)システムは、UID 119に基づいてオペレーティング・システム・コンポーネント235のユーザ・データへのアクセスを制御するために特権モードで実行されていることがある。アプリケーションは、DRMシステムを介してユーザ・データにアクセスしてもよい。一部の実施形態では、オペレーション・システムのネットワーク・ユーティリティに、特権が与えられてもよい。ネットワーク・ユーティリティは、デバイスが、ベース・バンド・チップなどのインターフェース・チップによって外部リソースに相互接続することを可能にしてもよい。別の実施形態では、特権モードで実行するために、ウィルス保護ソフトがオペレーティング・システムによって提供されてもよい。
したがって、ソフトウェア・コンポーネントが(例えば信頼ベンダによって、あるいはデバイスの製造やソフトウェア・コンポーネントのテストなどの特定の状況で提供された)特定の所定条件を満たさない限り、システム内で実行されるどんなソフトウェア・コンポーネントをも実行前に検証し、または認証しなければならない。一実施形態では、システム内の安全な記憶域の設定は、所定の条件に関連付けられてもよい。その結果、DRM準拠データなど、どんなデータも、適切な検証または認証なしにはアクセスされず、または漏洩されない(compromise)。
図3は、安全なブートを実施するためのプロセスの一実施形態を示すフローチャートである。例えば、プロセス300は、図1のシステム100によって実施されてもよい。一実施形態によれば、デバイスのブート・プロセスの間、プロセス300の処理論理は、ブロック301で、ROMチップ内で命令を実行することによってデバイス内からコード・イメージを突き止めてもよい。命令は、図1のコード115内にあるようなROMチップのコード・セクションから読み出されてもよい。コード・イメージは、メモリ・コンポーネントまたはデバイスの記憶コンポーネントに格納されてもよい。メモリ・コンポーネントは、RAMであってもよい。記憶コンポーネントは、デバイスにアタッチされたフラッシュ・メモリまたは大容量記憶装置であってもよい。一実施形態では、コード・イメージが突き止められ得ない場合、ブート・プロセスは中断されてもよく、デバイスは、ブロック309で、DFU(Device Firmware Upgrade:デバイス・ファームウェア・アップグレード)モードに入ってもよい。コード・イメージがうまく突き止められる場合、一実施形態によれば、プロセス300の処理論理は、ブロック303で、コード・イメージをメモリにロードしてもよい。別の実施形態では、コード・イメージは、突き止められたときにはメモリ内に既にロードされていることがある。
一実施形態によれば、ブロック305で、プロセス300の処理論理は、図1のUID 119など、デバイスに関連するUIDに基づいて、ロードされたコード・イメージが信頼され得るかどうか検証できる。プロセス300の処理論理は、コード・イメージからヘッダ値を抽出する。コード・イメージ内のヘッダ値の位置は、予め定められてもよい。一実施形態では、ヘッダ値は、コード・イメージ内の属性値対に事前設定された属性に基づいて抽出されてもよい。ヘッダ値は、よく知られているハッシュおよび暗号化アルゴリズムによって、デバイスのUIDに従ってコード・イメージ上に署名された署名値を含んでもよい。一実施形態では、プロセス300の処理論理は、ブロック305で、よく知られている同じハッシュおよび暗号化アルゴリズムによって、UIDに従ってコード・イメージから別の署名値を導出する。プロセス300の処理論理は、コード・イメージが信頼できるかどうか検証するために、導出された署名値と抽出された署名値を比較する。一実施形態では、導出された署名値および抽出された署名が互いに一致する場合は、検証は成功であり得る。そうでない場合は、検証は失敗であり得る。検証が成功しない場合は、プロセス300の処理論理は、ブロック309で、デバイスをDFUモードに入らせてもよい。一実施形態では、プロセス300の処理論理は、ブロック309でデバイスがDFUモードに入る前に、メモリからコード・イメージを取り除いてもよい。
検証が成功の場合は、プロセス300の処理論理は、ブロック311で、コード・イメージを実行し得る。一実施形態では、コード・イメージは、図2の225、227および223に示されるように、LLB、iBootまたはKernelcacheであってもよい。プロセス300の処理論理は、ブロック311で、デバイスのブート・オペレーションを実施する。ブート・オペレーションは、製品識別、デバイス電力管理の開始、大容量記憶コンポーネントのイネーブル、ユーザ・インターフェースのグラフィック・コンポーネントの初期化、画面コンポーネントのアクティブ化、および/またはデバイスのハードウェア初期化などを含んでもよい。一実施形態では、ブート・オペレーションは、カーネル、ならびに図2の235に示されるような特定のオペレーティング・システム・コンポーネントを含めて、オペレーティング・システムをメモリにロードすることを含んでもよい。プロセス300の処理論理は、検証の成功を示すためにメモリ内の信頼できるコード・イメージに信頼の標識を付けてもよい。一実施形態では、メモリ内に置かれた信頼の標識に関連するコード・イメージは、検証なしに、信頼できるコードとして実行されてもよい。ブロック313で、プロセス300の処理論理は、デバイスが完全にブートされるかどうか決定し得る。デバイスは、完全にブートされる場合は、動作可能になり、ブロック315で、通常の動作モードに入り得る。一実施形態では、Kernelcache227は、デバイスが通常オペレーションに入った後、ユーザ・モードで実行されるユーザ・アプリケーションを開始してもよい。ユーザ・モードで実行されるアプリケーションは、図2のUID 119およびGID 121など、デバイス・ハードウェア関連の情報にアクセスし得ない。デバイスは、ブロック313でブート・オペレーションが失敗する場合、DFUモードに入ってもよい。
一実施形態によれば、ブロック313でプロセス300の処理論理がデバイスのブート・プロセスが完了していないと決定する場合、ブロック317で、ブート・プロセスは継続し得る。プロセス300の処理論理は、現在のコード・イメージの実行に基づいて、ブロック313で別のコード・イメージを突き止めてもよい。一実施形態では、コード・イメージLLBを実行すると、図2に示されるようなコード・イメージiBootが突き止められ得る。別の実施形態では、コード・イメージiBootを実行すると、図2に示されるようなコード・イメージKernelcacheが突き止められ得る。一部の実施形態では、コード・イメージKernelcacheを実行すると、図2に示されるようなカーネルおよびオペレーティング・システム・コンポーネントを含むコード・イメージが突き止められ得る。プロセス300の処理論理は、ブロック317で次のコード・イメージを突き止めた結果に従って、ブロック319にループ・バックしてブート・プロセスを続けてもよい。
図4は、UIDおよびシード文字列に基づいてコード・イメージから署名を生成するためのプロセスの一実施形態を示すフローチャートである。例えば、プロセス400は、図1に示されるようなシステムによって実施されてもよい。一実施形態では、プロセス400の処理論理は、図2に示されたLLB 225、iBoot 227またはKernelcache 223など、コード・イメージ411にわたってハッシュ・オペレーション409を実施する。ハッシュ・オペレーションは、暗号ハッシュ関数SHA−1、SHA−224、SHA−256、SHA−384およびSHA−512などのSHA(セキュア・ハッシュ・アルゴリズム)ハッシュ関数に基づいてもよい。一実施形態では、ハッシュ・オペレーション409は、鍵の文字列413を生成してもよい。鍵文字列413は、20バイトの長さを有してもよい。一実施形態では、プロセス400の処理論理は、デバイスに関連する鍵文字列413、UID 401およびシード文字列407に基づいて署名405を生成するために、ブロック403で暗号化オペレーションを実施してもよい。一実施形態では、暗号化オペレーションは、ブロック403で、AES(高度暗号化規格)のアルゴリズムに基づいてもよい。プロセス400の処理論理は、ブロック403で、鍵文字列413の20バイトのうちから4バイトを廃棄するなど、鍵文字列413を切り捨ててもよい。一実施形態では、ブロック403で、AESアルゴリズムは、16バイトに基づく。UID 401は、図1に示されたUID 119としてデバイス内に格納されてもよい。シード文字列407は、デバイスに基づくシード生成関数によって生成されてもよい。一実施形態では、シード文字列407は、シード生成関数が同じデバイスに適用されるたびに同じであってもよい。
図5は、図1のシステムに従ってデバイスを安全にブートするためのホストのネットワーク接続の一実施形態を示すブロック図である。一実施形態では、デバイスは、ホストに接続することによってブートするためにDFUモードに入ってもよい。デバイスは、ユーザからの開始に基づいてDFUモードに入るように強制されてもよい。一実施形態では、デバイスは、デバイスのボタンを押下するなど、ユーザが所定の動作を実施することに応答してDFUモードに入ってもよい。ユーザは、例えばユーザ・データのクリーン・アップ、ハードウェア・ドライバのアップグレード、ユーザ・アプリケーションのアップグレードおよび/または新しいアプリケーションのインストールなどを含めて、デバイスのためのシステム管理タスクを実施するためにDFUモードに入ることをデバイスに要求してもよい。デバイスは、図3のブロック309に示されるように、ブート・シーケンスの少なくとも1つの段階でブートに失敗する場合、自動的にDFUモードに入ってもよい。あるいは、デバイスは、破損したデータ、または損傷を受けたソフトウェア・コンポーネントが検出されるときなど、通常オペレーションの間にオペレーティング・システムに異常が生じる場合、DFUモードに入ってもよい。
一実施形態によれば、ネットワーク500は、ホスト503に結合されたデバイス501を含んでもよい。デバイス501は、例えば、結合されたホスト503からオペレーティング・システム・コンポーネントを復元する復元デーモン・アプリケーションを実行するApple Computer Inc.社からのiPodなどのメディア・プレーヤーであってもよい。デバイス501は、TCP/IPプロトコルをサポートする接続インターフェースを介してホスト503に結合されてもよい。接続インターフェースは、USB、無線ネットワークまたはイーサネットなどに基づいてもよい。一実施形態では、ホスト503は、例えばApple Computer Inc.社からのiTuneアプリケーションなどのアプリケーション・ソフトウェアを実行するMacまたはWindows(登録商標)ベースのコンピュータであり得る。ホスト503は、広域ネットワーク(例えばインターネット)またはローカル・エリア・ネットワーク(例えばイントラネットやピア・ツー・ピア・ネットワーク)などのネットワーク505を介して中央サーバ507に接続されてもよい。一実施形態では、中央サーバ507は、公的にアクセス可能なwebサーバに基づいてもよい。あるいは、サーバ507は、イントラネットまたはローカル・サーバであってもよい。
図6は、ホストからデバイスまで動作環境を安全に回復するためのプロセスの一実施形態を示すフローチャートである。例えば、プロセス600は、図1および/または図5に示されるようなシステムによって実施されてもよい。一実施形態では、プロセス600の処理論理は、ブロック601で、デバイスが回復モードにあることを示すステータスをホスト・コンピュータに送ってもよい。デバイスは、コード・イメージの検証の失敗に応答して回復モードに入ってもよい。ホスト・コンピュータは、図5に示されるように、プロセス600を実施するデバイスに結合されてもよい。一実施形態では、ステータスは、製品IDおよび/またはベンダIDを含んでもよい。ホスト・コンピュータは、受信されたステータスに基づいて、接続されたデバイスを回復するためにコード・イメージを準備してもよい。一実施形態では、コード・イメージは、図5に示されたネットワーク505などのネットワークを介して接続されたホスト・コンピュータによって中央サーバ・コンピュータから取り出されてもよい。ブロック603で、一実施形態によれば、プロセス600の処理論理は、ホスト・コンピュータからコード・イメージを受信して、図1に示されたメモリ103などのデバイスのメモリ・コンポーネントに入れてもよい。プロセス600の処理論理は、ブロック605で、ホスト・コンピュータから、受信されたコード・イメージを実行する命令を受信してもよい。一実施形態では、プロセス600は、MACベースのコンピュータ内で実行されるiTuneなど、ホスト・コンピュータ上で実行される回復ソフトウェアによって制御されてもよい。
一実施形態によれば、ブロック607で、プロセス600の処理論理は、デバイスのメモリ内で受信されたコード・イメージに伴う証明書を抽出してもよい。コード・イメージは、図2に示されるように、LLB、iBootおよび/またはKernelcacheであってもよい。コード・イメージは、RSA(Ralph Shamir Adelman)公開鍵暗号法など、公開鍵暗号法に従って暗号化されてもよい。証明書は、X.509規格に基づいた鍵を含んでもよい。ブロック609で、プロセス600の処理論理は、図1に示されたコード115など、デバイスのセキュアROMに格納されたコードに従って証明書を検証してもよい。一実施形態では、プロセス600の処理論理は、一連の証明書の最後の証明書としてルート証明書を用いて、抽出された証明書の検証のために一連の証明書を証明してもよい。プロセス600の処理論理は、接続されたホスト・コンピュータから証明書を取り出してもよい。一実施形態では、ルート証明書は、図1に示されたフィンガープリント123など、デバイスのセキュアROMに格納されたフィンガープリントに基づいて検証されてもよい。ルート証明書は、Apple Computer Inc.社によって発行されてもよい。検証が失敗する場合は、プロセス600の処理論理は、ブロック613で、回復させるためにデバイスをDFUモードに戻してもよい。
コード・イメージからの証明書がうまく検証される場合は、プロセス600の処理論理は、ブロック615で、回復プロセスを継続して、検証された証明書に含まれた鍵に基づいてコード・イメージを復号してもよい。ブロック617で、プロセス600の処理論理は、図1に示されたUID 119など、デバイスのセキュアROMに格納されたUIDに基づいてコード・イメージからハッシュ署名を導出してもよい。一実施形態では、ハッシュ署名は、例えば図4に示されたプロセスに従って取得されてもよい。ブロック619で、プロセス600の処理論理は、コード・イメージ内に、導出された署名を署名してもよい。一実施形態では、導出された署名は、コード・イメージのヘッダ値として署名されてもよい。プロセス600の処理論理は、ブロック621で、例えば図1に示された記憶装置109など、デバイスの記憶装置内に署名付きのコード・イメージを格納してもよい。一実施形態では、署名付きのコード・イメージは、デバイス内の検証に失敗した別のコード・イメージを修復するために格納されてもよい。一実施形態では、コード・イメージは、デバイスの記憶装置に格納される前に実行されてもよい。別の実施形態では、コード・イメージは、うまく実行された後にデバイスの記憶装置に格納されてもよい。
図7は、ホストからデバイスまで動作環境の安全な回復を実施するためのプロセスの一実施形態を示す状態図である。例えば、状態700は、図1および/または図5に示されるようなシステムの特定の動作状態を表し得る。一実施形態では、デバイスは、ブート・プロセスを開始するために、初期状態Boot 701に入ってもよい。デバイスのセキュアROMに格納された命令は、状態Boot 701の間に実行されてもよい。一実施形態では、状態Boot 701の間、図2に示されたLLB 229などの低レベルのブート・プログラムが、デバイス内で突き止められ得る。低レベル・ブート・プログラムは、突き止められ、デバイスのメモリ・コンポーネントにロードされてもよい。一実施形態では、突き止められた低レベル・ブート・プログラムは、図3のブロック305に示されるようなプロセスに従って、信頼できるコード・イメージであると検証されてもよい。低レベル・ブート・プログラムがうまく突き止められ検証される場合は、状態700は、遷移成功711に従って、状態Boot 701から状態LLB 703に入ってもよい。そうでない場合は、一実施形態によれば、状態700は、デバイスがDFUモードに入る間の遷移DFU713を通って、状態Recovery1 717に入ってもよい。
状態Recovery1 717の間、デバイスは、図5に示されるような回復プロセスを実施するために、ホスト・コンピュータに結合されてもよい。一実施形態では、デバイスは、状態Recovery1 717に基づいてステータスを公開してもよい。ホスト・コンピュータは、デバイスから受信されたステータスに対応するコード・イメージを送信してもよい。一実施形態では、コード・イメージは、図2に示されるようなLLB 229であってもよい。デバイスは、図1のUID 119およびフィンガープリント123など、UIDおよびデバイスのセキュアROM内に格納されたフィンガープリントに基づいて、受信されたコード・イメージが信頼できることを検証するために一連の証明を実施してもよい。一連の証明は、図6のブロック609で、プロセス600に類似のプロセスに基づいて実施されてもよい。一実施形態では、コード・イメージがうまくロードされ検証される場合は、デバイスの状態は、遷移ロード715を通って、状態Recovery1 717から状態LLB 703に遷移されてもよい。
一実施形態では、状態LLB 701の間、デバイスは、デバイス内の図2に示されたiBoot 231などの別のブート・イメージを突き止めるために、検証された低レベル・ブート・プログラム(例えば上述のLLBまたは低レベル・ライブラリ)を実行してもよい。ブート・イメージは、状態LLB 701の間、突き止められ、デバイスのメモリ・コンポーネントにロードされてもよい。一実施形態では、ブート・イメージは、図3のブロック305で述べられたようなプロセスに従って、信頼できるコード・イメージであると検証されてもよい。ブート・イメージがうまく突き止められ検証される場合は、状態700は、状態LLB 703から状態iBoot 705に入ってもよい。そうでない場合は、一実施形態によれば、状態700は、デバイスがDFUモードに入る間、状態Recovery2 719に入ってもよい。
状態Recover2 719の間、デバイスは、図5に示されるような回復プロセスを実施するために、ホスト・コンピュータに結合されてもよい。一実施形態では、デバイスは、状態Recovery2 719に基づいてステータスを公開してもよい。ホスト・コンピュータは、状態Reovery2 719で、デバイスから受信されたステータスに対応するコード・イメージを送信してもよい。一実施形態では、コード・イメージは、図2に示されるようなiBoot 231であってもよい。デバイスは、図1のUID 119およびフィンガープリント123など、UIDおよびデバイスのセキュアROM内に格納されたフィンガープリントに基づいて、受信されたコード・イメージが信頼できることを検証するために一連の証明を実施してもよい。一連の証明は、図6のブロック609で、プロセス600に類似のプロセスに基づいて実施されてもよい。一実施形態では、コード・イメージがうまくロードされ検証される場合、デバイスの状態は、状態Recovery2 719から状態Kernelcache707に遷移されてもよい。
一実施形態によれば、状態iBoot 705の間、デバイスは、デバイス内の図2に示されたKernelcache 233などのカーネル・イメージを突き止めるために、検証されたブート・プログラムを実行してもよい。状態iBoot 705の間、カーネル・イメージが突き止められ、デバイスのメモリ・コンポーネントにロードされてもよい。一実施形態では、カーネル・イメージは、図3のブロック305で述べられたようなプロセスに従って、信頼できるコード・イメージであると検証されてもよい。カーネル・イメージがうまく突き止められ検証される場合は、状態700は、状態iBoot 705から状態Kernelcache 707に入ってもよい。そうでない場合、一実施形態によれば、状態700は、デバイスがDFUモードに入る間、状態Recovery3 721に入ってもよい。
状態Recover3 721の間、デバイスは、図5に示されるような回復プロセスを実施するために、ホスト・コンピュータに結合されてもよい。一実施形態では、デバイスは、状態Recovery3 721に基づいてステータスを公開してもよい。ホスト・コンピュータは、状態Reovery3 721でデバイスから受信されたステータスに対応するコード・イメージを送信してもよい。一実施形態では、コード・イメージは、図2のKernelcache 233など、カーネル・イメージであってもよい。デバイスは、図1のUID 119およびフィンガープリント123など、UIDおよびデバイスのセキュアROM内に格納されたフィンガープリントに基づいて、受信されたコード・イメージが信頼できることを検証するために、一連の証明を実施してもよい。一連の証明は、図6のブロック609で、プロセス600に類似のプロセスに基づいて実施されてもよい。コード・イメージがうまくロードされ検証される場合は、一実施形態では、デバイスの状態は、状態Recovery3 721から状態Kernelcache707に遷移されてもよい。
一実施形態では、状態Kernelcache 707の間、デバイスは、図2の235などのオペレーティング・システム・コンポーネントを突き止めるために、検証されたカーネル・イメージを実行してもよい。突き止められたオペレーティング・システム・コンポーネントは、状態Kernelcache 707の間、検証されたカーネル・イメージの実行に従って信頼できると検証するために、デバイスのメモリ・コンポーネントにロードされてもよい。一実施形態では、カーネル・イメージは、図3のブロック305で述べられたようなプロセスに従って、オペレーティング・システム・コンポーネントが信頼できるかどうか決定してもよい。特権モードは、図2のUID 119またはGID 123など、デバイスのハードウェア・レベルのインターフェースへのアクセスのために、カーネル・イメージに基づいて信頼できるオペレーティング・システム・コンポーネントに割り当てられてもよい。状態Kernelcache 707の間、署名がなされていないオペレーティング・システム・コンポーネントに、ユーザ・モード特権が割り当てられてもよい。一実施形態では、オペレーティング・システム・コンポーネントは、デバイスのハードウェア・レベル・インターフェースにアクセスすることを許されないことがある。オペレーション・システムがデバイスのメモリにうまくロードされた後、状態700は、状態Kernelcache 707から、通常の動作環境に対応する状態OS 709に遷移してもよい。ユーザ・アプリケーションは、状態OS 709の間、割り当てられたユーザ・モードで実行し始めてもよい。一実施形態では、状態Kernelcache 707にあるデバイスは、デバイスのオペレーティング・システム・コンポーネントを復元しまたは更新するために、DFUモードに入って、結合されたホスト・コンピュータからルート・イメージを受信してもよい。
図8は、ホストからデバイスまでソフトウェア・コンポーネントを安全に復元するためのプロセスの一実施形態を示すフローチャートである。例えば、プロセス800は、図1および/または図5に示されるようなシステムによって実施されてもよい。一実施形態では、プロセス800の処理論理は、ブロック801で、デバイスをブート・デバイスとして構成してもよい。ブート・デバイスは、DFUモードにあってもよい。ユーザは、ブート・デバイスをDFUモードへと構成するために、デバイスの通常のブート間、デバイスのボタンを押してもよい。プロセス800の処理論理は、損傷を受けたアプリケーション・ソフトウェアを修復し、古いアプリケーション・ソフトウェアを更新し、ファームウェア・コンポーネントをインストールし、またはデバイスに格納された既存のユーザ・データを管理するために、デバイス・ユーザによって意図的にアクティブ化されてもよい。ブロック803で、一実施形態によれば、プロセス800の処理論理は、ホスト・コンピュータとのネットワーク接続を確立してもよい。デバイスとホスト・コンピュータは、図5に示されるようなネットワーク・インターフェースを介して接続されてもよい。Apple Computer Inc.社からのiTuneなどの復元ソフトウェアが、デバイスと通信するためにホスト・コンピュータ上で実行されていることがある。プロセス800の処理論理は、ブロック805で、ネットワーク接続を介して、復元モードにあるようなデバイスを識別するためのステータスをホスト・コンピュータに公開してもよい。復元モードのデバイスは、DFUモードにもあり得る。一実施形態では、ステータスは、デバイスIDおよび/または製品IDなどの情報を含んでもよい。ステータスは、ホスト・コンピュータからの必要なコード・イメージの表示を含んでもよい。
一実施形態によれば、ブロック807で、プロセス800の処理論理は、接続されたホスト・コンピュータからブート・イメージを受信してもよい。ブート・イメージは、図2に示されたLLB 229やiBoot 231などのブート・ローダを含んでもよい。一実施形態では、ブート・イメージは、図2のKernelcache 233など、カーネル・キャッシュを含んでもよい。ブート・イメージは、ブロック805で、ホスト・コンピュータに公開されたステータスに基づいて受信されてもよい。一実施形態では、ブート・イメージは、図1のメモリ103など、デバイスのメモリ・コンポーネントにロードされてもよい。プロセス800の処理論理は、ブロック809で、接続されたホスト・コンピュータからルート・イメージを受信してもよい。ルート・イメージは、デバイスのオペレーティング・システムのストリップダウン版に基づくRAMディスクであってもよい。一実施形態では、ルート・イメージは、復元アプリケーションを含んでもよい。
一実施形態によれば、ブロック811で、プロセス800の処理論理は、接続されたホスト・コンピュータから、受信されたブート・イメージの実行のコマンドを受信してもよい。ブート・イメージは、ブート・ローダであってもよい。それに応答して、プロセス800の処理論理は、ブロック813で、ブート・イメージが信頼できることを検証してもよい。一実施形態では、プロセス800の処理論理は、図1のチップ105など、セキュアROMチップに基づいてブート・イメージが信頼され得るかどうか決定するために、図6に示されるようなプロセスを実施してもよい。一実施形態では、プロセス800の処理論理は、ブロック815で、信頼できるブート・イメージを実行することによって、接続されたホスト・コンピュータから受信されたKernelcacheが信頼できることを検証してもよい。プロセス800の処理論理は、図1のフィンガープリント123など、デバイスに格納されたルート証明書フィンガープリントに基づいてKernelcacheが信頼され得るかどうか決定するために、図6に示されるようなプロセスを実施してもよい。ブロック817で、プロセス800の処理論理は、信頼できるKernelcacheを実行することによって、ルート・イメージからの復元デーモン・アプリケーションが信頼できることを検証してもよい。一実施形態では、プロセス800の処理論理は、ルート・イメージが信頼できるコード・イメージであることを検証することによって、復元デーモン・アプリケーションが信頼され得ると決定してもよい。プロセス800の処理論理は、ルート・イメージに含まれた復元デーモン・アプリケーションが信頼され得るかどうか決定するために、図6に示されるようなプロセスを実施してもよい。
一実施形態によれば、ブロック819で、プロセス800の処理論理は、ソフトウェア復元オペレーションを実施するために、復元デーモン・アプリケーションを介してホスト・コンピュータからコマンド呼出しを受信し実行してもよい。一実施形態では、ソフトウェア復元オペレーションは、大容量記憶装置のファイル・システムの分割およびフォーマット、デバイス・レベルの復元、または新しいファームウェアのデバイスへのロードを含んでもよい。処理論理は、デバイス内で復元デーモンを起動するために、ルート・イメージに含まれたOSを開始してもよい。一実施形態では、OSの減少した部分または最小部分だけが開始される。このデーモン・アプリケーションは、XML(Extensible Markup Language:拡張可能マークアップ言語)プロトコルに基づいて、接続されたホスト・コンピュータ内で実行される復元ソフトウェアと通信してもよい。一実施形態では、復元デーモンは、ホスト・コンピュータ上で実行される復元ソフトウェアが、デバイスによって実行される任意のコマンドを発行することを可能にしてもよい。コマンドは、RAMディスクに含まれた任意のツールを実行し、かつ/またはライブラリ呼出しを行うことを含んでもよい。一実施形態では、コマンドは、大容量記憶装置に格納されたソフトウェアのセット全体およびデバイスのプログラマブルROMの置換えを引き起こしてもよい。ブロック821で、プロセス800の処理論理は、接続されたホスト・コンピュータから、デバイスを再開するコマンドを受信してもよい。それに応答して、プロセス800の処理論理は、デバイスを再設定してもよい。その後に、デバイスは、デバイスの大容量記憶装置に格納されたオペレーティング・システムからリブートしてもよい。
図9は、ホストからデバイスまでアプリケーションを安全に更新するためのプロセスの一実施形態を示すフローチャートである。例えば、プロセス900は、図1および/または図5に示されるようなシステムによって実施されてもよい。プロセス900の処理論理は、ブロック901で、ホスト・コンピュータとのネットワーク接続を確立してもよい。デバイスとホスト・コンピュータは、図5に示されるようなネットワーク・インターフェースを介して接続されてもよい。Apple Computer Inc.社からのiTuneなどの更新ソフトウェアが、デバイスと通信するためにホスト・コンピュータ上で実行されていることがある。プロセス800の処理論理は、ブロック803で、ネットワーク接続を介して、更新モードにあるようなデバイスを識別するためのステータスをホスト・コンピュータに公開してもよい。更新モードのデバイスは、DFUモードにもあり得る。一実施形態では、ステータスは、デバイスIDおよび/または製品IDなどの情報を含んでもよい。ステータスは、デバイス内に現在常駐しているアプリケーションのバージョンIDの表示を含んでもよい。
ブロック905で、一実施形態によれば、プロセス900の処理論理は、接続されたホスト・コンピュータからのコード・イメージを受信してもよい。コード・イメージは、ブロック903で、ホスト・コンピュータによって受信された、公開されたステータスからのバージョンIDに基づいて、アプリケーションの最新版に関連するソフトウェア・パッケージを含んでもよい。一実施形態では、コード・イメージは、図1に示されるようなメモリ103など、デバイスのメモリ・コンポーネントにロードされてもよい。ブロック907で、一実施形態によれば、プロセス900の処理論理は、コード・イメージが信頼できることを検証してもよい。プロセス900の処理論理は、図1に示されたチップ105内のフィンガープリント123など、セキュアROMチップ内のルート証明書のフィンガープリントに基づいてコード・イメージが信頼され得るかどうか決定するために、図6に示されるようなプロセスを実施してもよい。一実施形態では、プロセス900の処理論理は、ブロック909で、検証されたコード・イメージを実行して、含まれたソフトウェア・パッケージからファイルをアンパックし、デバイスのファイル・システム内にそれらのファイルを置いてもよい。ソフトウェア・パッケージからのファイルは、新しいファイル、またはデバイスの既存ファイルの最新版であってもよい。プロセス900の処理論理は、デバイスのファイル・システム内にファイルを置く前に、ファイルが漏洩されておらず、または破損されていないことを保証するために、ソフトウェア・パッケージからのファイルに対して保全性チェックを実施してもよい。一実施形態では、ファイルの保全性は、ファイルの中身へのハッシュによる署名に基づいてチェックされてもよい。ブロック911で、プロセス900の処理論理は、デバイス内に格納されたオペレーティング・システムからリブートするために、デバイスを再設定してもよい。
図10は、検証されないコード・イメージを実行するプロセスの一実施形態を示すフローチャートである。例えば、プロセス1000は、図1に示されるようなシステムによって実施されてもよい。ブロック1001で、プロセス1000の処理論理は、図1のUID 119など、デバイス内のセキュアROMのUIDへのアクセスをディセーブルしてもよい。一実施形態では、信頼できるコード・イメージは、実行されるとき、UIDへのアクセスをオフにするように構成されてもよい。別の実施形態では、デバイスのハードウェア・スイッチは、UIDへのアクセスをオフにする設定を含んでもよい。UIDのアクセス構成は、デバイスの診断またはテスト要件によって指定されてもよい。信頼できるコード・イメージは、図1のコード115など、デバイスのセキュアROM内のコードによって検証されたブート・イメージであってもよい。一実施形態では、検証は、図6に示されたプロセスに類似のプロセスで実施されてもよい。ブート・イメージは、図2に示されるように、LLB 225またはiBoot 227であってもよい。ブロック1003で、プロセス1000の処理論理は、図1のRAM 111など、デバイスのメモリ・コンポーネントにコード・イメージをロードしてもよい。一実施形態では、プロセス1000の処理論理は、現在実行されている、信頼できるコード・イメージの構成に基づいて、コード・イメージをロードしてもよい。コード・イメージは、外部ネットワーク接続、またはデバイスに結合された大容量記憶装置からロードされてもよい。一実施形態では、コード・イメージは、デバイスの診断ソフトウェアを含んでもよい。
ブロック1005で、プロセス1000の処理論理は、コード・イメージを実行することにより、デバイス・ハードウェアにアクセスするためのプログラミング・インターフェースをアクティブ化してもよい。デバイス・ハードウェアは、デバイス・ハードウェア・パラメータ値を読み取りまたは設定することによってアクセスされてもよい。処理論理は、コード・イメージが漏洩されていないか(例えば破損していないか)どうか決定するために、ロードされたコード・イメージからハッシュ値を導出してもよい。この決定は、導出されたハッシュ値と、コード・イメージからのヘッダ値の比較に基づいてもよい。一実施形態では、プロセス1000の処理論理は、ブロック1007で、UIDが非アクティブであると決定してもよい。デバイス・ハードウェアにアクセスするためのプログラミング・インターフェースは、UIDがアクティブかどうか決定するために、図1のコード115など、セキュアROM内のコードの実行を引き起こしてもよい。ブロック1009で、プロセス1000の処理論理は、デバイス・ハードウェアにアクセスせずに、コード・イメージの実行を続ける。一実施形態では、デバイス・ハードウェアへのアクセスは、関連するUIDがアクティブかどうかに基づいて、デバイスのセキュアROM内のコードによって制御されてもよい。別の実施形態では、ユーザ・データは、UIDがアクティブでない場合は、アクセス可能でないことがある。検証されないアプリケーションがデバイスにロードされ実行されるときでも、UIDがアクティブでない場合には、デバイス・ハードウェアまたはユーザの機密データは漏洩され得ない。
図11は、本発明の一実施形態で使用され得るデータ処理システムの一例を示している。例えば、システム1100は、図5に示されるようなホストを含んで実装されてもよい。図11は、コンピュータ・システムの様々なコンポーネントを示しているが、こうした詳細は本発明に関係しないので、特定のアーキテクチュアまたはコンポーネントの相互接続のやり方を表すものではないことに留意されたい。より少ないコンポーネント、または恐らくより多くのコンポーネントを有するネットワーク・コンピュータおよび他のデータ処理システムも本発明で使用され得ることも理解されよう。
図11に示されるように、データ処理システムの形のコンピュータ・システム1100は、マイクロプロセッサ1105に結合されたバス1103と、ROM(読取り専用メモリ)1107と、揮発性RAM 1109と、不揮発性メモリ1111とを含む。マイクロプロセッサ1105は、メモリ1107、1109、1111から命令を取り出し、上述のオペレーションを実施する命令を実行してもよい。バス1103は、これらの様々なコンポーネントを共に相互接続し、またこれらのコンポーネント1105、1107、1109、1111を表示コントローラおよび表示デバイス1113、ならびにマウス、キーボード、モデム、ネットワーク・インターフェース、プリンタ、および当技術分野でよく知られている他のデバイスであり得る入出力(I/O:input/output)デバイスなどの周辺デバイスにも相互接続する。一般に、入出力デバイス1115は、入出力コントローラ1117を介してシステムに結合される。揮発性RAM(ランダム・アクセス・メモリ)1109は一般に、メモリ内のデータをリフレッシュし、または維持するために継続的に電力を必要とするダイナミックRAM(DRAM)として実装される。
大容量記憶装置1111は一般に、磁気ハード・ドライブ、磁気光ドライブ、光ドライブ、DVD RAM、フラッシュ・メモリ、またはシステムから電力が取り除かれた後でもデータ(例えば大量のデータ)を維持する他のタイプのメモリ・システムである。一般に大容量記憶装置1111はやはりランダム・アクセス・メモリであるが、これは必須ではない。図11は、大容量記憶装置1111がデータ処理システム内のコンポーネントの残りに直接結合されたローカル・デバイスであることを示しているが、本発明は、モデム、イーサネット・インターフェースまたは無線ネットワークなどのネットワーク・インターフェースを介してデータ処理システムに結合されたネットワーク記憶デバイスなど、システムから離れた不揮発性メモリを使用してもよいことが理解されよう。バス1103は、当技術分野ではよく知られているように、様々なブリッジ、コントローラおよび/またはアダプタを介して互いに接続された1つまたは複数のバスを含んでもよい。
図12は、本発明の一実施形態で使用され得る別のデータ処理システムの一例を示している。例えば、システム1200は、図1に示されるようなシステムの一部として実装されてもよい。図12に示されたデータ処理システム1200は、1つまたは複数のマイクロプロセッサとすることもでき、またはチップ集積回路上のシステムとすることもできる処理システム1211を含み、このシステムは、処理システムによって実行するデータおよびプログラムを格納するためのメモリ1201をも含む。システム1200は、オーディオ入出力サブシステム1205をも含み、このオーディオ入出力サブシステムは、例えば音楽を再生し、またはスピーカおよびマイクロホンを介して電話機能性を提供するために、マイクロホンとスピーカとを含んでもよい。
表示コントローラおよび表示デバイス1207は、ユーザへの視覚的なユーザ・インターフェースを提供し、このデジタル・インターフェースは、OS Xオペレーティング・システム・ソフトウェアを実行するとき、Macintoshコンピュータ上に示されるものに類似のグラフィカル・ユーザ・インターフェースを含んでもよい。システム1200は、図11のシステム1100など、別のデータ処理システムと通信するために1つまたは複数の無線トランシーバ1203をも含む。無線トランシーバは、WiFiトランシーバ、赤外線トランシーバ、Bluetoothトランシーバおよび/または無線携帯電話トランシーバであってもよい。追加のコンポーネント(図示せず)は、特定の実施形態ではシステム1200の一部とすることもでき、また特定の実施形態では、図12に示されるのより少ないコンポーネントをデータ処理システム内で使用することもできることが理解されよう。
データ処理システム1200は、ユーザがシステムに入力を提供することを可能にするために設けられる1つまたは複数の入力デバイス1213をも含む。これらの入力デバイスは、キーパッド、キーボード、タッチ・パネルまたはマルチ・タッチ・パネルであってもよい。データ処理システム1200は、ドック用のコネクタであり得るオプションの入出力デバイス1215をも含む。当技術分野においてよく知られているように、様々なコンポーネントを相互接続するために1つまたは複数のバス(図示せず)を使用してもよいことが理解されよう。図12に示されたデータ処理システムは、手持ち式コンピュータ、携帯情報端末(PDA:personal digital assistant)、PDAのような機能性を有する携帯電話、携帯電話を含む手持ち式コンピュータ、iPodなどのメディア・プレーヤー、あるいは1つのデバイス内でPDAおよび携帯電話と組み合わされたメディア・プレーヤーなど、これらのデバイスの側面または機能を組み合わせるデバイスであってもよい。他の実施形態では、データ処理システム1200は、ネットワーク・コンピュータ、別のデバイス内の組込み処理デバイス、あるいは図12に示されるのより少ないコンポーネント、または恐らくより多くのコンポーネントを有する他のタイプのデータ処理システムであってもよい。
本発明の少なくとも特定の実施形態は、携帯型音楽および/またはビデオ・メディア・プレーヤーなどのデジタル・メディア・プレーヤーの一部であってもよく、このデジタル・メディア・プレーヤーは、メディアを提示するためのメディア処理システム、メディアを格納するための記憶デバイスを含んでもよく、アンテナ・システムおよびメディア処理システムに結合された無線周波数(RF:radio frequency)トランシーバ(例えば携帯電話用のRFトランシーバ)をさらに含んでもよい。特定の実施形態では、リモート記憶デバイス内に格納されたメディアは、RFトランシーバを介してメディア・プレーヤーに送信されてもよい。メディアは、例えば、音楽または他のオーディオ、静止画、または動画のうちの1つまたは複数であってもよい。
携帯型メディア・プレーヤーは、カリフォルニア州CupertinoのApple Computer Inc.社からのiPod(登録商標)やiPod Nano(登録商標)メディア・プレーヤー上のクリック・ホイール入力デバイス、タッチスクリーン入力デバイス、押しボタン・デバイス、移動可能なポインティング入力デバイスまた他の入力デバイスなど、メディア選択デバイスを含んでもよい。メディア選択デバイスは、記憶デバイスおよび/またはリモート記憶デバイス内に格納されたメディアを選択するために使用されてもよい。携帯型メディア・プレーヤーは、少なくとも特定の実施形態では、表示デバイスを含んでもよく、この表示デバイスは、入力デバイスによって選択されており、またスピーカまたはイヤホンによって、または表示デバイス上に、あるいは表示デバイスとスピーカもしくはイヤホンの両方に提示されているメディアのタイトルまたは他の標識を表示するために、メディア処理システムに結合される。携帯型メディア・プレーヤーの例は、公開された米国特許出願第2003/0095096号および第2004/0224638号に述べられており、両特許は、参照により本明細書に組み込まれる。
上記に述べられた内容の一部は、専用論理回路などの論理回路で、あるいはマイクロコントローラ、またはプログラム・コード命令を実行する他の形の処理コアで実装されてもよい。したがって、上記の議論によって教示されたプロセスは、これらの命令を実行するマシンに特定の機能を実施させるマシン実行可能命令などのプログラム・コードで実施されてもよい。この文脈では、「マシン」は、中間形式(すなわち「抽象的な」)命令をプロセッサ固有の命令(例えば「仮想マシン」(例えばJava(登録商標)仮想マシン)、インタープリタ、共通言語ランタイム、高水準言語仮想マシンなどの抽象実行環境)に変換するマシン、ならびに/あるいは汎用プロセッサおよび/または専用プロセッサなど、命令を実行するように設計された半導体チップ(例えばトランジスタで実装された「論理回路」)に配置された電子回路であってもよい。上記の議論によって教示されたプロセスは、プログラム・コードの実行なしにプロセス(またはその一部)を実施するように設計された電子回路によって(マシンの代わりに、またはマシンと組み合わせて)実施することもできる。
本発明は、本明細書に述べられたオペレーションを実施するための装置にも関する。この装置は、必要な目的のために特別に構築されてもよく、あるいは、それは、コンピュータに格納されたコンピュータ・プログラムによって選択的にアクティブ化され、または再構成された汎用コンピュータを備えてもよい。こうしたコンピュータ・プログラムは、それだけに限らないが、フロッピー(登録商標)ディスク、光ディスク、CD−ROMおよび光磁気ディスク含めた任意のタイプのディスク、読取り専用メモリ(ROM)、RAM、EPROM、EEPROM、磁気または光カード、あるいは電子命令を格納するのに適しており、それぞれがコンピュータ・システム・バスに接続された任意のタイプのメディアなど、コンピュータ読取り可能記憶媒体に格納されてもよい。
マシン読取り可能媒体は、マシン(例えばコンピュータ)によって読取り可能な形で情報を格納しまたは送信するための任意の機構を含む。例えば、マシン読取り可能媒体には、読取り専用メモリ(「ROM」)、ランダム・アクセス・メモリ(「RAM」);磁気ディスク記憶媒体;光記憶媒体;フラッシュ・メモリ・デバイス;電気、光、音響または他の形の伝搬信号(例えば搬送波、赤外線信号、デジタル信号など)などが含まれる。
プログラム・コードを格納するために、製品が使用されてもよい。プログラム・コードを格納する製品は、それだけに限らないが、1つまたは複数のメモリ(例えば1つまたは複数のフラッシュ・メモリ、ランダム・アクセス・メモリ(スタティック、ダイナミックまたはその他))、光ディスク、CD−ROM、DVD−ROM、EPROM、EEPROM、磁気または光カード、あるいは電子の命令を格納するのに適した他のタイプのマシン読取り可能媒体として具現化され得る。プログラム・コードは、(例えば通信リンク(例えばネットワーク接続)を介して)伝搬媒体内に具現化されたデータ信号を用いて、リモート・コンピュータ(例えばサーバ)から要求元コンピュータ(例えばクライアント)にダウンロードすることもできる。
上記の詳細説明は、コンピュータ・メモリ内のデータ・ビットに対するオペレーションのアルゴリズムおよび記号表現に関して提示されている。これらのアルゴリズムの説明および表現は、データ処理の分野の当業者によって、その仕事の内容を他の当業者に最も有効に伝えるために使用されるツールである。アルゴリズムは、本明細書では、また一般には、所望の結果をもたらす自己一貫性のあるオペレーション・シーケンスと考えられる。これらのオペレーションは、物理量の物理的な操作を必要とするオペレーションである。必ずしもではないが、通常、これらの量は、格納され、転送され、組み合わされ、比較され、他のやり方で操作することができる電気的または磁気的信号の形を取る。主として一般的に使用するために、これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶことが時として好都合であることが分かっている。
しかし、これらのおよび類似の用語はすべて、適切な物理量と関連付けられるものであり、これらの量に適用された便宜的なラベルにすぎないことに留意されたい。上記議論から明らかであるように特に述べられていない限り、「処理(processing)」、「コンピューティング(computing)」、「計算(calculating)」、「決定(determining)」または「表示(displaying)」などの用語を使用した議論は、説明全体を通して、コンピュータ・システムのレジスタおよびメモリ内の物理(電子)量として表されたデータを操作して、コンピュータ・システム・メモリまたはレジスタ、あるいは他のこうした情報記憶装置、伝送または表示デバイス内の物理量として同様に表された他のデータに変換するコンピュータ・システムまたは類似の電子コンピューティング・デバイスの動作およびプロセスを指すことが理解されよう。
本明細書に提示されたプロセスおよび表示は、どんな特定のコンピュータまたは他の装置にも本質的には関係ない。様々な汎用システムは、本明細書の教示に従ってプログラムと共に使用されてもよく、あるいは、述べられたオペレーションを実施するより専門の装置を構築することが好都合であると分かり得る。様々なこれらのシステムに必要な構造は、下記の説明から明らかになる。さらに、本発明について、特定のプログラミング言語に関して述べられていない。本明細書に述べられた本発明の教示を実施するために、様々なプログラミング言語が使用され得ることが理解されよう。
上記議論は、本発明のいくつかの例示的な実施形態について述べるものにすぎない。こうした議論、添付の図面および特許請求の範囲から、本発明の精神および範囲から逸脱せずに様々な修正が行われ得ることが当業者には容易に認識されよう。
101 接続インターフェース; 103 メモリ; 105 チップ;
109 記憶装置(例えばフラッシュ); 113 セキュアROM;
115 コード; 117 データ; 123 フィンガープリント;
235 OSコンポーネント。

Claims (8)

  1. デバイスをブートさせるために、前記デバイスのメインメモリに、第1のヘッダ値を有する第1のコードイメージをロードするステップと、
    前記デバイスのシステムコードを実行し、前記第1のヘッダ値が、前記第1のコードイメージの全体についての第1の署名を有するか否かを、前記デバイスのROM(読取り専用メモリ)内に格納されたキーを用いて検証するステップと、
    前記ロードされた前記第1のコードイメージの検証が成功した場合、前記デバイスの前記メインメモリにロードされ、検証された前記第1のコードイメージを実行するステップと、
    前記ロードされた前記第1のコードイメージの検証が成功しなかった場合、ホストより第2のコードイメージを受信するステップと、
    前記ホストからの前記第2のコードイメージの受信に応じて、前記ROMに根源がある一連の証明書に従って前記第2のコードイメージを認証するステップと、
    前記第2のコードイメージの認証が成功した場合、前記第2のコードイメージ全体に対する第2の署名を、前記キーを用いて前記第2のコードイメージの第2のヘッダ値として署名するステップと、
    前記第2のコードイメージを前記第2のヘッダ値と共に記憶するステップと、
    を有するコンピュータにて実行されることを特徴とする方法。
  2. 前記デバイスのブートには第1の状態、第2の状態、及ぶ第3の状態を含む複数の状態があって、
    前記第1のコードイメージは第1の状態にて検証され、当該第1のコードイメージの検証が成功した場合に前記デバイスは前記第1の状態から前記第2の状態に移行し、
    前記第2のコードイメージが前記第3の状態にて認証され、前記第2のコードイメージの認証が成功した場合には、前記デバイスは前記第3の状態から前記第2の状態に移行し、前記デバイスのブートを継続する
    ことを特徴とする請求項1に記載の方法
  3. コンピュータが読み込み実行することで、前記コンピュータに、
    デバイスをブートさせるために、前記デバイスのメインメモリに、第1のヘッダ値を有する第1のコードイメージをロードするステップと、
    前記デバイスのシステムコードを実行し、前記第1のヘッダ値が、前記第1のコードイメージの全体についての第1の署名を有するか否かを、前記デバイスのROM(読取り専用メモリ)内に格納されたキーを用いて検証するステップと、
    前記ロードされた前記第1のコードイメージの検証が成功した場合、前記デバイスの前記メインメモリにロードされ、検証された前記第1のコードイメージを実行するステップと、
    前記ロードされた前記第1のコードイメージの検証が成功しなかった場合、ホストより第2のコードイメージを受信するステップと、
    前記ホストからの前記第2のコードイメージの受信に応じて、前記ROMに根源がある一連の証明書に従って前記第2のコードイメージを認証するステップと、
    前記第2のコードイメージの認証が成功した場合、前記第2のコードイメージ全体の署名を、前記キーを用いて前記第2のコードイメージの第2のヘッダ値として署名するステップと、
    前記第2のコードイメージを前記第2のヘッダ値と共に記憶するステップ
    を実行させるためのプログラムを格納したコンピュータ可読記憶媒体。
  4. 前記デバイスのブートには第1の状態、第2の状態、及ぶ第3の状態を含む複数の状態があって、
    前記第1のコードイメージは第1の状態にて検証され、当該第1のコードイメージの検証が成功した場合に前記デバイスは前記第1の状態から前記第2の状態に移行し、
    前記第2のコードイメージが前記第3の状態にて認証され、前記第2のコードイメージの認証が成功した場合には、前記デバイスは前記第3の状態から前記第2の状態に移行し、前記デバイスのブートを継続する
    ことを特徴とする請求項3に記載のコンピュータ可読記憶媒体。
  5. デバイスをブートさせるために、前記デバイスのメインメモリに、第1のヘッダ値を有する第1のコードイメージをロードする手段と、
    前記デバイスのシステムコードを実行し、前記第1のヘッダ値が、前記第1のコードイメージの全体についての第1の署名を有するか否かを、前記デバイスのROM(読取り専用メモリ)内に格納されたキーを用いて検証する手段と、
    前記ロードされた前記第1のコードイメージの検証が成功した場合、前記デバイスの前記メインメモリにロードされ、検証された前記第1のコードイメージを実行する手段と、
    前記ロードされた前記第1のコードイメージの検証が成功しなかった場合、ホストより第2のコードイメージを受信する手段と、
    前記ホストからの前記第2のコードイメージの受信に応じて、前記ROMに根源がある一連の証明書に従って前記第2のコードイメージを認証する手段と、
    前記第2のコードイメージの認証が成功した場合、前記第2のコードイメージ全体の第2の署名を、前記キーを用いて前記第2のコードイメージの第2のヘッダ値として署名する手段と、
    前記第2のコードイメージを前記第2のヘッダ値と共に記憶する手段と、
    を有することを特徴とする装置。
  6. 電子デバイスであって、
    システムコードが埋め込まれていると共に、前記電子デバイスを一意に識別するためのキーを記憶しているROM(読取り専用メモリ)と、
    第1のコードイメージを格納するための大容量記憶装置と、
    メインメモリと、
    前記ROM、前記大容量記憶装置および前記メインメモリに接続されたプロセッサとを備え、
    前記プロセッサは、
    前記電子デバイスをブートさせるために、前記電子デバイスの前記メインメモリに、第1のヘッダ値を有する前記第1のコードイメージをロードし、
    前記ROM内に記憶された前記システムコードを実行し、前記第1のヘッダ値が、前記第1のコードイメージの全体についての第1の署名を有するか否かを、前記キーを用いて検証し、
    前記ロードされた前記第1のコードイメージの検証が成功した場合、前記メインメモリ内の、検証された前記第1のコードイメージを実行し、
    前記ロードされた前記第1のコードイメージの検証が成功しなかった場合、ホストより第2のコードイメージを受信し、
    前記ホストからの前記第2のコードイメージの受信に応じて、前記ROMに根源がある一連の証明書に従って前記第2のコードイメージを認証し、
    前記第2のコードイメージの認証が成功した場合、前記第2のコードイメージ全体に対する第2の署名を、前記キーを用いて前記第2のコードイメージの第2のヘッダ値として署名し、
    前記第1のコードイメージの検証が成功しなかった場合の当該第1のコードイメージを修復するため、前記第2のコードイメージを前記第2のヘッダ値ともに前記大容量記憶装置に格納する
    ことを特徴とする電子デバイス。
  7. デバイスをブートさせるために、オペレーティングシステム(OS)のカーネルイメージを位置づけるステップと、
    前記カーネルイメージの位置づけが成功した場合、前記カーネルイメージを実行し、前記デバイスに対する前記OSのシステムコンポーネントをロードするステップとを有し、
    前記カーネルイメージを位置づけるステップは、
    第1のヘッダ値を有する第1のコードイメージを前記デバイスのメインメモリにロードするステップと、
    ここで、前記第1のコードイメージは前記デバイスの大容量記憶装置コンポーネントを有効にする、
    前記デバイスのシステムコードを実行し、前記第1のヘッダ値が、前記第1のコードイメージの全体についての第1の署名を有するか否かを、前記デバイスのROM(読取り専用メモリ)内に格納されたキーを用いて検証するステップと、
    前記ロードされた前記第1のコードイメージの検証が成功した場合、前記デバイスの前記メインメモリにロードされ、検証された前記第1のコードイメージを実行するステップと、
    前記ロードされた前記第1のコードイメージの検証が成功しなかった場合、ホストより第2のコードイメージを受信するステップと、
    前記ホストからの前記第2のコードイメージの受信に応じて、前記ROMに根源がある一連の証明書に従って前記第2のコードイメージを認証するステップと、
    前記第2のコードイメージの認証が成功した場合、前記第2のコードイメージ全体に対する第2の署名を、前記キーを用いて前記第2のコードイメージの第2のヘッダ値として署名するステップと、
    前記認証が成功した前記第2のコードイメージを実行するステップと、
    前記第2のコードイメージを前記第2のヘッダ値と共に記憶するステップと、
    を有するコンピュータにて実行される方法。
  8. データ処理システムであって、
    デバイスをブートするために、オペレーティングシステム(OS)のカーネルイメージを位置づける手段と、
    前記カーネルイメージの位置づけが成功した場合、前記カーネルイメージを実行し、前記デバイスに対する前記OSのシステムコンポーネントをロードする手段とを有し、
    前記カーネルイメージを位置づける手段は、
    第1のヘッダ値を有する第1のコードイメージを前記デバイスのメインメモリにロードし、
    ここで、前記第1のコードイメージは前記デバイスの大容量記憶装置コンポーネントを有効にする、
    前記デバイスのシステムコードを実行し、前記第1のヘッダ値が、前記第1のコードイメージの全体についての第1の署名を有するか否かを、前記デバイスのROM内に格納されたキーを用いて検証し、
    前記ロードされた前記第1のコードイメージの検証が成功した場合、前記デバイスの前記メインメモリにロードされ、検証された前記第1のコードイメージを実行し、
    前記ロードされた前記第1のコードイメージの検証が成功しなかった場合、ホストより第2のコードイメージを受信し、
    前記ホストからの前記第2のコードイメージの受信に応じて、前記ROMに根源がある一連の証明書に従って前記第2のコードイメージを認証し、
    前記第2のコードイメージの認証が成功した場合、前記第2のコードイメージ全体に対する第2の署名を、前記キーを用いて前記第2のコードイメージの第2のヘッダ値として署名し、
    前記認証が成功した前記第2のコードイメージを実行し、
    前記第2のコードイメージを前記第2のヘッダ値と共に記憶する
    ことを特徴とするデータ処理システム。
JP2009544850A 2007-01-07 2007-12-20 コンピューティング・デバイスの安全なブート Active JP4971466B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/620,689 2007-01-07
US11/620,689 US8254568B2 (en) 2007-01-07 2007-01-07 Secure booting a computing device
PCT/US2007/026279 WO2008085449A2 (en) 2007-01-07 2007-12-20 Secure booting a computing device

Publications (2)

Publication Number Publication Date
JP2010515966A JP2010515966A (ja) 2010-05-13
JP4971466B2 true JP4971466B2 (ja) 2012-07-11

Family

ID=39361471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009544850A Active JP4971466B2 (ja) 2007-01-07 2007-12-20 コンピューティング・デバイスの安全なブート

Country Status (6)

Country Link
US (2) US8254568B2 (ja)
EP (2) EP3575999A1 (ja)
JP (1) JP4971466B2 (ja)
KR (2) KR101066727B1 (ja)
CN (1) CN101578609B (ja)
WO (1) WO2008085449A2 (ja)

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) * 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8108856B2 (en) * 2007-03-30 2012-01-31 Intel Corporation Method and apparatus for adaptive integrity measurement of computer software
US8230412B2 (en) * 2007-08-31 2012-07-24 Apple Inc. Compatible trust in a computing device
WO2009044533A1 (ja) * 2007-10-05 2009-04-09 Panasonic Corporation セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US9164925B2 (en) * 2008-01-15 2015-10-20 Samsung Electronics Co., Ltd. Method and apparatus for authorizing host to access portable storage device
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US20090204803A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Handling of secure storage key in always on domain
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
WO2010033497A1 (en) 2008-09-18 2010-03-25 Marvell World Trade Ltd. Preloading applications onto memory at least partially during boot up
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US9955352B2 (en) 2009-02-17 2018-04-24 Lookout, Inc. Methods and systems for addressing mobile communications devices that are lost or stolen but not yet reported as such
US8855601B2 (en) 2009-02-17 2014-10-07 Lookout, Inc. System and method for remotely-initiated audio communication
US9058491B1 (en) * 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
CN102640160B (zh) * 2009-10-09 2015-02-11 诺基亚公司 用于控制资源访问的方法和装置
US8812854B2 (en) 2009-10-13 2014-08-19 Google Inc. Firmware verified boot
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
JP5398845B2 (ja) * 2009-11-24 2014-01-29 三菱電機株式会社 情報処理装置及びプログラム
US9336410B2 (en) 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
US8589667B2 (en) * 2010-04-19 2013-11-19 Apple Inc. Booting and configuring a subsystem securely from non-local storage
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US9544396B2 (en) 2011-02-23 2017-01-10 Lookout, Inc. Remote application installation and control for a mobile device
CN103827881B (zh) * 2011-03-09 2017-12-12 爱迪德技术有限公司 用于设备操作***中的动态平台安全的方法和***
US9032214B2 (en) * 2011-06-30 2015-05-12 Dell Products L.P. System and method for providing an image to an information handling system
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
US9465755B2 (en) 2011-07-18 2016-10-11 Hewlett Packard Enterprise Development Lp Security parameter zeroization
US9141394B2 (en) * 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US9225692B2 (en) * 2011-08-12 2015-12-29 Abb Technology Ag Method and system for protected transmission of files
US8732527B2 (en) * 2011-08-16 2014-05-20 Google Inc. Secure recovery apparatus and method
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US20140173638A1 (en) * 2011-12-05 2014-06-19 Thomas G. Anderson App Creation and Distribution System
JP5476363B2 (ja) * 2011-12-19 2014-04-23 レノボ・シンガポール・プライベート・リミテッド 生体認証装置を利用したコンピュータの起動方法およびコンピュータ
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
CN102722670B (zh) * 2012-05-29 2014-10-22 中国联合网络通信集团有限公司 基于移动存储设备的文件保护方法、设备和***
US9407443B2 (en) 2012-06-05 2016-08-02 Lookout, Inc. Component analysis of software applications on computing devices
US9589129B2 (en) 2012-06-05 2017-03-07 Lookout, Inc. Determining source of side-loaded software
CN103514411A (zh) * 2012-06-25 2014-01-15 联想(北京)有限公司 启动电子设备的方法及电子设备安全***
US8707454B1 (en) 2012-07-16 2014-04-22 Wickr Inc. Multi party messaging
US10586260B2 (en) 2012-07-19 2020-03-10 Apple Inc. Securing in-app purchases
US9141809B2 (en) * 2012-07-23 2015-09-22 Qualcomm Incorporated Method and apparatus for deterring a timing-based glitch attack during a secure boot process
US8898654B2 (en) * 2012-08-29 2014-11-25 Microsoft Corporation Secure firmware updates
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
CN103914658B (zh) * 2013-01-05 2017-02-22 展讯通信(上海)有限公司 终端设备的安全启动方法及终端设备
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9336395B2 (en) * 2013-01-25 2016-05-10 Hewlett-Packard Development Company, L.P. Boot driver verification
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
US10084603B2 (en) 2013-06-12 2018-09-25 Lookout, Inc. Method and system for rendering a stolen mobile communications device inoperative
US10129260B1 (en) 2013-06-25 2018-11-13 Wickr Inc. Mutual privacy management
US9830089B1 (en) 2013-06-25 2017-11-28 Wickr Inc. Digital data sanitization
US9866591B1 (en) 2013-06-25 2018-01-09 Wickr Inc. Enterprise messaging platform
US10567349B2 (en) 2013-06-25 2020-02-18 Wickr Inc. Secure time-to-live
KR20150008546A (ko) * 2013-07-15 2015-01-23 삼성전자주식회사 보안 다운로드 및 기능 실행방법 및 장치
EP3028145A1 (en) 2013-07-31 2016-06-08 Marvell World Trade Ltd. Parallelizing boot operations
EP3061030A4 (en) 2013-10-24 2017-04-19 McAfee, Inc. Agent assisted malicious application blocking in a network environment
US10122747B2 (en) 2013-12-06 2018-11-06 Lookout, Inc. Response generation after distributed monitoring and evaluation of multiple devices
US9753796B2 (en) 2013-12-06 2017-09-05 Lookout, Inc. Distributed monitoring, evaluation, and response for multiple devices
EP3080693B1 (en) * 2013-12-13 2019-07-24 Razer (Asia-Pacific) Pte Ltd. Devices, updaters, methods for controlling a device, and methods for controlling an updater
US9698976B1 (en) 2014-02-24 2017-07-04 Wickr Inc. Key management and dynamic perfect forward secrecy
KR102139546B1 (ko) * 2014-03-11 2020-07-30 삼성전자주식회사 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법
CN103870745B (zh) * 2014-04-01 2017-08-29 联想(北京)有限公司 电子设备和安全启动电子设备的方法
US9195831B1 (en) * 2014-05-02 2015-11-24 Google Inc. Verified boot
WO2015172352A1 (en) * 2014-05-15 2015-11-19 Seagate Technology Llc Storage device tampering detection
CN103955648B (zh) * 2014-05-15 2017-02-01 乐视致新电子科技(天津)有限公司 校验***镜像合法性的方法及装置
JP6188633B2 (ja) * 2014-05-26 2017-08-30 Kddi株式会社 コンピュータシステム、コンピュータ、半導体装置、情報処理方法およびコンピュータプログラム
US9584530B1 (en) 2014-06-27 2017-02-28 Wickr Inc. In-band identity verification and man-in-the-middle defense
TWI526867B (zh) * 2014-09-11 2016-03-21 普易科技股份有限公司 電子裝置與其資訊更新控制模組
CN105765897B (zh) 2014-11-06 2019-06-28 华为技术有限公司 一种安全信息配制方法、安全验证方法以及相关芯片
US9489542B2 (en) 2014-11-12 2016-11-08 Seagate Technology Llc Split-key arrangement in a multi-device storage enclosure
CN104317668A (zh) * 2014-11-18 2015-01-28 深圳市汇顶科技股份有限公司 移动终端中恶意操作的识别方法和装置
US9654288B1 (en) 2014-12-11 2017-05-16 Wickr Inc. Securing group communications
CN105989306B (zh) * 2015-02-13 2020-04-28 中兴通讯股份有限公司 操作***的文件签名方法、文件校验方法及装置
EP3289510B1 (en) 2015-05-01 2020-06-17 Lookout Inc. Determining source of side-loaded software
US9954871B2 (en) 2015-05-06 2018-04-24 Hand Held Products, Inc. Method and system to protect software-based network-connected devices from advanced persistent threat
CN104866343A (zh) * 2015-05-15 2015-08-26 长城信息产业股份有限公司 一种嵌入式设备的安全启动方法及启动安全的嵌入式设备
US9697371B1 (en) * 2015-06-30 2017-07-04 Google Inc. Remote authorization of usage of protected data in trusted execution environments
US10546131B2 (en) * 2015-10-22 2020-01-28 Mcafee, Llc End-point visibility
WO2017087621A1 (en) * 2015-11-17 2017-05-26 James Dooley Security stack for embedded systems
US11386067B2 (en) * 2015-12-15 2022-07-12 Red Hat, Inc. Data integrity checking in a distributed filesystem using object versioning
US9584493B1 (en) 2015-12-18 2017-02-28 Wickr Inc. Decentralized authoritative messaging
US10291607B1 (en) 2016-02-02 2019-05-14 Wickr Inc. Providing real-time events to applications
US10659234B2 (en) 2016-02-10 2020-05-19 Cisco Technology, Inc. Dual-signed executable images for customer-provided integrity
US10037201B2 (en) * 2016-02-26 2018-07-31 Dell Products L.P. Secure live media boot system
EP3427435A1 (en) 2016-03-08 2019-01-16 Marvell World Trade Ltd. Methods and apparatus for secure device authentication
US9596079B1 (en) 2016-04-14 2017-03-14 Wickr Inc. Secure telecommunications
US9590958B1 (en) 2016-04-14 2017-03-07 Wickr Inc. Secure file transfer
US9916452B2 (en) 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10789371B2 (en) * 2016-06-20 2020-09-29 Intel Corporation Technologies for trusted I/O with a channel identifier filter and processor-based cryptographic engine
JP6585019B2 (ja) * 2016-09-13 2019-10-02 株式会社東芝 ネットワーク監視装置、ネットワークシステムおよびプログラム
US10528765B2 (en) * 2016-09-16 2020-01-07 Intel Corporation Technologies for secure boot provisioning and management of field-programmable gate array images
US10212113B2 (en) * 2016-09-19 2019-02-19 Google Llc Uniform resource identifier and image sharing for contextual information display
CN109983465B (zh) * 2016-09-26 2023-05-16 迈可菲公司 增强的安全引导
CN106656502B (zh) * 2016-09-26 2020-09-01 上海兆芯集成电路有限公司 计算机***及安全执行的方法
US10069633B2 (en) * 2016-09-30 2018-09-04 Data I/O Corporation Unified programming environment for programmable devices
EP3542298B1 (en) 2017-01-12 2022-08-03 Google LLC Verified boot and key rotation
US10467416B2 (en) * 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
US10521617B2 (en) 2017-08-14 2019-12-31 Western Digital Technologies, Inc. Non-volatile memory device with secure read
CN109614798B (zh) * 2017-09-30 2022-12-27 华为技术有限公司 安全启动方法、装置及终端设备
CN109725980B (zh) * 2017-10-27 2023-05-16 伊姆西Ip控股有限责任公司 生成镜像标签的方法、设备以及计算机可读介质
US11101999B2 (en) 2017-11-08 2021-08-24 Amazon Technologies, Inc. Two-way handshake for key establishment for secure communications
US10855440B1 (en) 2017-11-08 2020-12-01 Wickr Inc. Generating new encryption keys during a secure communication session
US10778432B2 (en) 2017-11-08 2020-09-15 Wickr Inc. End-to-end encryption during a secure communication session
US10541814B2 (en) 2017-11-08 2020-01-21 Wickr Inc. End-to-end encryption during a secure communication session
IL256042B (en) * 2017-11-30 2018-11-29 Aspir Oren System and method for code protection against cyber threat
CN108287662A (zh) * 2017-12-08 2018-07-17 五八有限公司 获取设备唯一标识的方法、设备及计算机可读存储介质
EP3509003B1 (en) * 2018-01-04 2021-04-21 Shenzhen Goodix Technology Co., Ltd. Method and apparatus to protect code processed by an embedded micro-processor against altering
KR102501695B1 (ko) * 2018-01-15 2023-02-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10984107B2 (en) * 2018-04-24 2021-04-20 Mellanox Technologies, Ltd. Secure boot
US11055105B2 (en) 2018-08-31 2021-07-06 Micron Technology, Inc. Concurrent image measurement and execution
CN113056739B (zh) * 2018-09-27 2024-06-11 兰迪斯+盖尔科技股份有限公司 用于减轻安全漏洞的方法和计算机可读介质及验证文件***的***
US11562073B2 (en) * 2018-11-28 2023-01-24 The Boeing Company Systems and methods of software load verification
CN112292678A (zh) * 2019-01-04 2021-01-29 百度时代网络技术(北京)有限公司 用于验证将要由主机***的数据处理加速器执行的内核对象的方法与***
CN112347481B (zh) * 2019-08-06 2024-04-23 华为技术有限公司 安全启动方法、控制器和控制***
KR20210041932A (ko) * 2019-10-08 2021-04-16 한화테크윈 주식회사 보안 부팅 장치 및 그 동작 방법
CN111125725A (zh) * 2019-11-22 2020-05-08 苏州浪潮智能科技有限公司 一种镜像校验的加解密方法、设备及介质
WO2021118471A1 (en) * 2019-12-11 2021-06-17 Skylab Networks Pte. Ltd. System and method for processing data
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
WO2022055802A1 (en) * 2020-09-08 2022-03-17 Osom Products, Inc. Temporary removal of software programs to secure mobile device
US11741232B2 (en) 2021-02-01 2023-08-29 Mellanox Technologies, Ltd. Secure in-service firmware update
WO2022261865A1 (zh) * 2021-06-16 2022-12-22 华为技术有限公司 一种芯片安全启动方法及芯片
CN117009003B (zh) * 2023-09-28 2024-01-09 飞腾信息技术有限公司 一种安全启动方法及相关装置

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121345A (en) * 1988-11-03 1992-06-09 Lentz Stephen A System and method for protecting integrity of computer data and software
US4975950A (en) * 1988-11-03 1990-12-04 Lentz Stephen A System and method of protecting integrity of computer data and software
US5713024A (en) * 1994-06-10 1998-01-27 Exabyte Corporation Cold boot data backup system
US7124302B2 (en) 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6620047B1 (en) 1995-06-29 2003-09-16 Igt Electronic gaming apparatus having authentication data sets
US7092369B2 (en) * 1995-11-17 2006-08-15 Symbol Technologies, Inc. Communications network with wireless gateways for mobile terminal access
US6260078B1 (en) * 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US7020638B1 (en) 1996-11-18 2006-03-28 Microsoft Corporation System and method for flexible micropayment of low value electronic assets
US6370249B1 (en) 1997-07-25 2002-04-09 Entrust Technologies, Ltd. Method and apparatus for public key management
US6167521A (en) * 1997-08-29 2000-12-26 International Business Machines Corporation Securely downloading and executing code from mutually suspicious authorities
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US5991399A (en) 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
US6532451B1 (en) * 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US6965999B2 (en) * 1998-05-01 2005-11-15 Microsoft Corporation Intelligent trust management method and system
DE69942712D1 (de) 1998-05-29 2010-10-14 Texas Instruments Inc Sichere Rechnervorrichtung
US6473791B1 (en) * 1998-08-17 2002-10-29 Microsoft Corporation Object load balancing
US6330670B1 (en) * 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6587947B1 (en) * 1999-04-01 2003-07-01 Intel Corporation System and method for verification of off-chip processor code
EP1085396A1 (en) 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6715067B1 (en) * 1999-09-21 2004-03-30 Intel Corporation Initializing a processor-based system from a non-volatile re-programmable semiconductor memory
US7080037B2 (en) 1999-09-28 2006-07-18 Chameleon Network Inc. Portable electronic authorization system and method
US6711688B1 (en) 1999-11-30 2004-03-23 International Business Machines Corporation Pre-execution logon (PEL)
US6757824B1 (en) 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US6188602B1 (en) * 2000-01-25 2001-02-13 Dell Usa, L.P. Mechanism to commit data to a memory device with read-only access
US7010691B2 (en) 2000-08-04 2006-03-07 First Data Corporation ABDS system utilizing security information in authenticating entity access
EP1323089A4 (en) 2000-08-04 2006-04-19 First Data Corp ENTITY AUTHENTICATION IN ELECTRONIC COMMUNICATION BY PROVIDING THE VERIFICATION STATUS OF A DEVICE
US20020078380A1 (en) 2000-12-20 2002-06-20 Jyh-Han Lin Method for permitting debugging and testing of software on a mobile communication device in a secure environment
JP2004537083A (ja) * 2001-03-09 2004-12-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 新しいコンポーネントを確認するサーバを有するシステム
US7721110B2 (en) 2001-04-06 2010-05-18 Mcafee, Inc. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US7308715B2 (en) 2001-06-13 2007-12-11 Mcafee, Inc. Protocol-parsing state machine and method of using same
FI114416B (fi) * 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
EP1273996B1 (en) 2001-07-06 2008-08-06 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7178141B2 (en) 2001-07-30 2007-02-13 International Business Machines Corporation Method and system for identifying compatibility between firmware images
US20070277037A1 (en) 2001-09-06 2007-11-29 Randy Langer Software component authentication via encrypted embedded self-signatures
US20030059049A1 (en) * 2001-09-24 2003-03-27 Mihm Thomas J. Method and apparatus for secure mobile transaction
US7345671B2 (en) * 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
US7243230B2 (en) * 2001-11-16 2007-07-10 Microsoft Corporation Transferring application secrets in a trusted operating system environment
CN100530026C (zh) * 2002-01-18 2009-08-19 艾利森电话股份有限公司 移动终端,把数据装入或上载到移动终端的方法和***
US7017004B1 (en) 2002-03-29 2006-03-21 Microsoft Corporation System and method for updating contents of a flash ROM
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
US6907522B2 (en) 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
WO2004015553A1 (en) * 2002-08-13 2004-02-19 Nokia Corporation Computer architecture for executing a program in a secure of insecure mode
US7587600B2 (en) * 2002-09-16 2009-09-08 Telefonaktiebolaget L M Ericsson (Publ.) Loading data onto an electronic device
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot
US20040092310A1 (en) * 2002-11-07 2004-05-13 Igt Identifying message senders
US7440571B2 (en) 2002-12-03 2008-10-21 Nagravision S.A. Method for securing software updates
JP2004265286A (ja) * 2003-03-04 2004-09-24 Fujitsu Ltd 環境に応じて選択されたセキュリティ・ポリシーに従うモバイル機器の管理
US8041957B2 (en) 2003-04-08 2011-10-18 Qualcomm Incorporated Associating software with hardware using cryptography
US7627343B2 (en) * 2003-04-25 2009-12-01 Apple Inc. Media player system
US7257623B2 (en) 2003-05-28 2007-08-14 Oracle International Corporation Method and apparatus for ensuring an allowable client configuration for an application
CN1553315A (zh) 2003-06-06 2004-12-08 微软公司 在安全引导装载程序中使用散列技术
US7313690B2 (en) 2003-06-27 2007-12-25 Microsoft Corporation Three way validation and authentication of boot files transmitted from server to client
US7142891B2 (en) 2003-10-10 2006-11-28 Texas Instruments Incorporated Device bound flashing/booting for cloning prevention
US20050132357A1 (en) 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US20050138409A1 (en) * 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device
WO2005081891A2 (en) * 2004-02-23 2005-09-09 Lexar Media, Inc. Secure compact flash
US8112618B2 (en) * 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
US7805614B2 (en) 2004-04-26 2010-09-28 Northrop Grumman Corporation Secure local or remote biometric(s) identity and privilege (BIOTOKEN)
US8296825B2 (en) * 2004-05-31 2012-10-23 Telecom Italia S.P.A. Method and system for a secure connection in communication networks
WO2006003675A2 (en) 2004-07-12 2006-01-12 Syed Ibrahim Abdul Hameed Khan System, method of generation and use of bilaterally generated variable instant passwords
US20060064488A1 (en) 2004-09-17 2006-03-23 Ebert Robert F Electronic software distribution method and system using a digital rights management method based on hardware identification
US7690033B2 (en) * 2004-09-28 2010-03-30 Exobox Technologies Corp. Electronic computer system secured from unauthorized access to and manipulation of data
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
EP1659472A1 (en) 2004-11-22 2006-05-24 Research In Motion Limited Method and Device for Authenticating Software
US7383438B2 (en) 2004-12-18 2008-06-03 Comcast Cable Holdings, Llc System and method for secure conditional access download and reconfiguration
US7454616B2 (en) * 2005-01-07 2008-11-18 General Instrument Corporation Code authentication upon bootup for cable modems
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
US8024488B2 (en) 2005-03-02 2011-09-20 Cisco Technology, Inc. Methods and apparatus to validate configuration of computerized devices
US7591014B2 (en) * 2005-03-04 2009-09-15 Microsoft Corporation Program authentication on environment
WO2006122228A2 (en) * 2005-05-10 2006-11-16 Angeline Brent J Internet operating system
US7913289B2 (en) * 2005-05-23 2011-03-22 Broadcom Corporation Method and apparatus for security policy and enforcing mechanism for a set-top box security processor
US7702821B2 (en) 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20070136807A1 (en) 2005-12-13 2007-06-14 Deliberato Daniel C System and method for detecting unauthorized boots
SE531992C2 (sv) 2006-02-24 2009-09-22 Oniteo Ab Metod och system för säker programvaruprovisionering
DE602006005220D1 (de) 2006-03-06 2009-04-02 St Microelectronics Res & Dev Schaltungssicherheit
WO2008039870A2 (en) 2006-09-26 2008-04-03 Accoona Corp Apparatuses, methods and systems for an information comparator preview generator
US20080082680A1 (en) 2006-09-29 2008-04-03 Karanvir Grewal Method for provisioning of credentials and software images in secure network environments
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US7788433B2 (en) 2008-05-24 2010-08-31 Via Technologies, Inc. Microprocessor apparatus providing for secure interrupts and exceptions
US8719901B2 (en) 2008-10-24 2014-05-06 Synopsys, Inc. Secure consultation system
US20100161879A1 (en) 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors

Also Published As

Publication number Publication date
KR101066727B1 (ko) 2011-09-21
US20130024677A1 (en) 2013-01-24
KR101066779B1 (ko) 2011-09-21
KR20090108706A (ko) 2009-10-16
EP3575999A1 (en) 2019-12-04
CN101578609B (zh) 2013-08-21
WO2008085449A2 (en) 2008-07-17
JP2010515966A (ja) 2010-05-13
CN101578609A (zh) 2009-11-11
US8254568B2 (en) 2012-08-28
KR20110075050A (ko) 2011-07-05
WO2008085449A3 (en) 2008-10-16
EP2111598A2 (en) 2009-10-28
US8688967B2 (en) 2014-04-01
US20080165952A1 (en) 2008-07-10

Similar Documents

Publication Publication Date Title
US10931451B2 (en) Securely recovering a computing device
JP4971466B2 (ja) コンピューティング・デバイスの安全なブート
US8826405B2 (en) Trusting an unverified code image in a computing device
US8789037B2 (en) Compatible trust in a computing device
US8560820B2 (en) Single security model in booting a computing device
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
US20090259855A1 (en) Code Image Personalization For A Computing Device
Garriss et al. Trustworthy and personalized computing on public kiosks
JP4848458B2 (ja) 永続的セキュリティシステム及び永続的セキュリティ方法
JP2010073193A5 (ja)
JP2010073193A (ja) モバイルインターネットデバイス(mid)でuefiファームウェア及びuefiアウェアなオペレーティングシステムのセキュアなブートのためのシステム及び方法

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100709

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111028

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120130

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120227

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: 20120319

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120405

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150413

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4971466

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250