JP6095796B2 - 「ブリング・ユア・オウン」管理のための起動機構 - Google Patents

「ブリング・ユア・オウン」管理のための起動機構 Download PDF

Info

Publication number
JP6095796B2
JP6095796B2 JP2015547211A JP2015547211A JP6095796B2 JP 6095796 B2 JP6095796 B2 JP 6095796B2 JP 2015547211 A JP2015547211 A JP 2015547211A JP 2015547211 A JP2015547211 A JP 2015547211A JP 6095796 B2 JP6095796 B2 JP 6095796B2
Authority
JP
Japan
Prior art keywords
computer
operating system
storage medium
physical storage
host operating
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.)
Expired - Fee Related
Application number
JP2015547211A
Other languages
English (en)
Other versions
JP2015537323A (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 JP2015537323A publication Critical patent/JP2015537323A/ja
Application granted granted Critical
Publication of JP6095796B2 publication Critical patent/JP6095796B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Description

本発明は一般的に、コンピュータを起動するために用いられるユーザ・ポータブル・デバイスの分野に関する。加えて本発明は、いわゆる「ブリング・ユア・オウン(bring your own)」(BYO)コンピューティング作業環境に関する。
BYOは一般的に、「ブリング・ユア・オウン・デバイス(Bring your own device)」(BYOD)、「ブリング・ユア・オウン・テクノロジ(bring your own technology)」(BYOT)、または密接に関係する「ブリング・ユア・オウン・ビヘイビア(bring your own behavior)」(BYOB)に関するものである。BYODまたはBYOTは、従業員が仕事に個人のモバル・デバイスを持ち込んで使用し、雇用者のeメール、データベースおよびファイルにアクセスし、一方でこうしたデバイスを家庭でも用いるために、同じデバイスを通じて個人のアプリケーション/データにアクセスすることをいかにしてなし得るかという企業/ビジネス・ポリシに関わるものである。BYOBは、このことをハードウェアを越えてデバイス上で用いられるソフトウェアにも広げたものである。
現在、多くの従業員は、自身のホーム・コンピュータ(例、ラップトップ)と、雇用者によって割り当てられたコンピュータとの両方を有する。従業員が自身のホーム・コンピュータの維持に慣れてきているため、雇用者は単一のコンピュータのみを必要とするコンピュータ所有権のモデルに移行している。従業員は、仕事に彼/彼女のホーム・コンピュータを使用するよう命じられることがある。コンピュータのシステム管理の大部分が従業員に委ねられて節約につながるため、これは雇用者にとって魅力的である。従業員にとっても、自分自身の好みに従って選択できる単一のコンピュータしか必要ないため、これは魅力的である。加えて、従業員はしばしば雇用者から補償を受取る。
しかし、同じマシン上で企業の計算と個人の計算とを混合することは、何が雇用者に属し、何が従業員に属するものかの境界を曖昧にする。もしこのコンピュータで実行されるソフトウェアに制約が設けられていなければ、企業の機密情報が損なわれるおそれがある。なぜなら、非企業のアプリケーションがそれを分散または破損するためである。もし雇用者がコンピュータを厳格に制御する必要があれば、従業員に対する魅力が失われ、従業員は企業のモニタリング・ツールによって自身のプライバシが損なわれることを懸念するだろう。何が誰に属するものかを容易に識別できるようにした、事項の明確な分離が必要である。
この分離を規定するために、仮想マシン(Virtual Machines:VM)を使用することがしばしば行われ、ここでVMは実行可能環境全体をカプセル化する。VMはしばしばゲスト・オペレーティング・システムと呼ばれ、それが実行されているオペレーティング・システム(operating system:OS)はホストOSと呼ばれる。簡単な動作モードの1つにおいて、会社は企業イメージを規定し、これをVMの形で従業員に利用可能にする。次いでそのVMが従業員のホーム・マシンで実行される。VM内で実行されるものは会社によって規定される一方で、好適なVMマネージャ(例、VMWare(R)、バーチャル・ボックス(Virtual Box))が存在する限り、従業員が物理的マシンで何を実行するかに関しては従業員の自由が保たれる。
しかし、これは雇用者から従業員を保護するものであるが、逆は当てはまらない。本発明は、従業員から雇用者を保護することも行う解決策を提供することを目的とする。
加えて、外部起動媒体がしばしば(セキュアな耐タンパ・デバイスを含む)トラステッド・デバイス上に提供され、このタイプのデバイスは一般的に公知である。たとえば、オンラインのトランザクションに対して開発された解決策は、いわゆるゾーン・トラステッド情報チャネル(Zone Trusted Information Channel)(または略してZTIC)である。ZTICは、トランザクション・データの認証のためのセキュアな非プログラマブル・デバイスである。ZTICはサーバに対するセキュアなエンド・ツー・エンドのネットワーク接続を維持するため、ZTIC自体が悪意あるソフトウェアの攻撃に対して耐タンパであり、かつZTICはそれが接続するホストとは独立した自身の入力および出力コンポーネントを有するため、ZTICディスプレイに示されるデータは本物である。より詳細なことは、たとえば非特許文献1などに見出され得る。
"The Zurich Trusted Information Channel−An Efficient Defence against Man−in−the−Middle and Malicious Software Attacks",Thomas Weigold,Thorsten Kramp,Reto Hermann,Frank Hoering,Peter Buhler,Michael Baentsch.In P.Lipp,A.−R.SadeghiおよびK.−M.Koch(編):TRUST 2008,LNCS 4968,p.75−91,2008.Springer−Verlag Berlin Heidelberg 2008
本発明は、従業員から雇用者を保護することも行う解決策を提供することを目的とする。
第1の局面に従うと、本発明はユーザ・ポータブル・デバイス、好ましくはセキュアな耐タンパ・デバイスとして具現化され、このユーザ・ポータブル・デバイスは、
コンピュータとの接続を可能にする接続インタフェースと、
永続的メモリと、
前記永続的メモリ、好ましくはデバイスのセキュア・メモリに保存されたブートローダとを含み、
このブートローダは、
前記接続インタフェースを介したデバイスと前記コンピュータとの接続の際に、コンピュータのファームウェアによって検出可能であり、かつ
前記ファームウェアがブートローダを以後の実行のためにコンピュータのメモリにロードするための命令と、
コンピュータにおける実行の際にファームウェアと対話することによって、
第1のホスト・オペレーティング・システムおよび第2のホスト・オペレーティング・システムをそれぞれ第1の部分および第2の部分に保存する前記コンピュータの物理記憶媒体において、前記物理記憶媒体の区画情報から前記第2の部分を定めることであって、この区画情報は第1のホスト・オペレーティング・システムは知らせるが第2のホスト・オペレーティング・システムは知らせない、定めることと、
第2の部分内の第2のホスト・オペレーティング・システムの一部分を位置付けることと、
前記部分を実行することによって、ホスト・オペレーティング・システムのうち第2のものだけがユーザ・ポータブル・デバイスから起動し得るようにすることとを行うための命令とを含む。
実施形態において、ユーザ・ポータブル・デバイスはさらに、前記セキュア・メモリに保存された保全性チェック・データを含み、ブートローダはさらに、前記保全性チェック・データに基づいて前記部分の保全性をチェックするように構成される。
好ましくは、ブートローダは、前記部分の内容をハッシュし、結果として得られたハッシュ値を前記保全性チェック・データに対してチェックすることによって第2のホスト・オペレーティング・システムの前記部分の保全性をチェックするように構成される。
好ましい実施形態において、ブートローダはさらに、前記コンピュータにおける実行の際に、前記物理記憶媒体に保存される、第1のオペレーティング・システムによって使用される最終セクタの後、好ましくは直後に始まる物理記憶媒体の所与のセクタから前記部分を探索することによって、前記部分を位置付けるように構成される。
好ましくは、ブートローダはさらに、前記コンピュータにおける実行の際に、物理記憶媒体の区画情報に基づいて第1の部分のサイズを算出し、かつどのセクタが第1のオペレーティング・システムによって使用される最終セクタであるかを推定するように構成される。
実施形態において、ブートローダはさらに、前記コンピュータにおける実行の際に、
−前記所与のセクタと、
−前記第2の部分に保存された前記第2のホスト・オペレーティング・システム内の前記部分の相対的位置のデータと
に基づいて、間接的に前記部分を位置付けるように構成される。
ブートローダはさらに、前記コンピュータにおける実行の際に、第1のホスト・オペレーティング・システムによって占有された前記物理記憶媒体の部分をマスクするために、前記物理記憶媒体の上にオーバーレイ・ディスクを構築させるように構成され、このオーバーレイ・ディスクは、前記物理記憶媒体によって支えられた物理記憶媒体のソフトウェア表現であり、
ブートローダはさらに、前記コンピュータにおける実行の際に、オーバーレイ・ディスクが第1のホスト・オペレーティング・システムによって占有された最終セクタの後、直後の物理記憶媒体のセクタから始まるようにオーバーレイ・ディスクを構築させるように構成される。
本発明の局面はさらに、上記の実施形態のいずれか1つに従うユーザ・ポータブル・デバイスと、前記接続インタフェースを介してユーザ・ポータブル・デバイスを接続可能なコンピュータとを含むシステムに関し、このコンピュータは、前記第1の部分および第2の部分にそれぞれ保存された第1のホスト・オペレーティング・システムおよび第2のホスト・オペレーティング・システムを有し、コンピュータの物理記憶媒体の区画情報は、第1のホスト・オペレーティング・システムは知らせるが第2のホスト・オペレーティング・システムは知らせない。
好ましくは、第2のホスト・オペレーティング・システムの前記部分は、
第2のオペレーティング・システムのカーネル、および
前記コンピュータを起動する際に関与するソフトウェアのみを含む。
別の局面に従うと、本発明は、上記の実施形態のいずれかに従うシステムにおいてコンピュータを起動する方法として具現化され、この方法は、ユーザ・ポータブル・デバイスとコンピュータとの接続の際に、
ホスト・コンピュータのファームウェアによってユーザ・ポータブル・デバイスのブートローダが検出されるようにすることによって、ファームウェアに対するブートローダの命令に従って、ブートローダがコンピュータに移ってコンピュータにおいて実行することによって、
第2のホスト・オペレーティング・システムが起動し、かつ前記ホスト・オペレーティング・システムのうち第2のものだけがユーザ・ポータブル・デバイスから起動し得るように、
第2のホスト・オペレーティング・システムの一部分を位置付けし、かつ実行するステップを含む。
この方法はさらに、
第1のホスト・オペレーティング・システムによって占有された前記物理記憶媒体の部分をマスクするために、前記物理記憶媒体の上にオーバーレイ・ディスクを構築するステップであって、前記物理記憶媒体は物理ディスクであり、このオーバーレイ・ディスクは前記物理記憶媒体によって支えられた物理記憶媒体のソフトウェア表現である、ステップと、
構築されたオーバーレイ・ディスクにおいて第2のホスト・オペレーティング・システムを実行するステップと、
実行中の第2のホスト・オペレーティング・システムにおいてソフトウェアを実行するステップとを含む。
好ましい実施形態において、この方法はさらに、オーバーレイ・ディスクを構築するステップの前に、
物理記憶媒体の区画情報を読取るステップと、
前記区画情報から、好ましくは前記物理記憶媒体における第1のホスト・オペレーティング・システムによって占有された第1の部分のサイズを算出することによって、前記物理記憶媒体のどこに第2のホスト・オペレーティング・システムが位置するかを推定するステップと、
オーバーレイ・ディスクが
第1のホスト・オペレーティング・システムによって占有された最終セクタの後、好ましくは直後の物理記憶媒体のセクタから始まり、かつ
好ましくは物理記憶媒体の端部まで続く
ようにオーバーレイ・ディスクを構築するステップとを含む。
好ましくは、第2のホスト・オペレーティング・システムにおいてソフトウェアを実行するステップはさらに、
第2のホスト・オペレーティング・システムにおいて仮想マシンをゲスト・オペレーティング・システムとして実行するステップを含み、このゲスト・オペレーティング・システムは実行可能環境をカプセル化する。
実施形態において、第1のホスト・オペレーティング・システムは個人のオペレーティング・システムであり、第2のオペレーティング・システムは企業のオペレーティング・システムであり、仮想マシンを実行するステップの結果として、所与のユーザに属するデスクトップを表示するステップが得られる。
最後の局面に従うと、本発明は、ともに具現化されるブートローダを有するコンピュータ読取り可能記憶媒体を含むコンピュータ・プログラム製品として具現化され、このブートローダは、
コンピュータのファームウェアによって検出可能であり、かつ
前記ファームウェアがブートローダを以後の実行のためにコンピュータのメモリにロードするための命令と、
コンピュータにおける実行の際にファームウェアと対話することによって、
第1のホスト・オペレーティング・システムおよび第2のホスト・オペレーティング・システムをそれぞれ第1の部分および第2の部分に保存する前記コンピュータの物理記憶媒体において、前記物理記憶媒体の区画情報から前記第2の部分を定めることであって、この区画情報は第1のホスト・オペレーティング・システムは知らせるが第2のホスト・オペレーティング・システムは知らせない、定めることと、
第2の部分内の第2のホスト・オペレーティング・システムの一部分を位置付けることと、
前記部分を実行することによって、コンピュータにおけるブートローダの実行の際に第2のホスト・オペレーティング・システムだけが起動し得るようにすることとを行うための命令とを含む。
添付の図面を参照して、限定的でない実施例として、本発明を具現化するデバイス、システムおよび方法を説明する。
本発明の実施形態を実装するのに好適な、一般的コンピュータ・システムを概略的に表す図である。 実施形態に従うユーザ・ポータブル・デバイスの選択されたコンポーネント、およびこれらのコンポーネントが機能的に相互関係する様子を簡略化して表す図である。 図1のコンピュータ・システムの選択されたコンポーネントを、実施形態に従う方法のステップを示す流れ図とともに概略的に示す図である。 実施形態に従う、コンピュータがユーザ・デバイスからセキュアに起動することを可能にするための方法の高レベル・ステップを示す流れ図である。 実施形態に含まれる、物理記憶媒体の上に構築されたオーバーレイ・ディスクの構成を概略的に示す図である。
以下の説明は、次のように構成されている。最初に一般的な実施形態および高レベルの変形について説明する(セクション1)。次のセクションは、より特定的な実施形態および技術的実装の詳細に向けられたものである(セクション2)。
1.一般的な実施形態および高レベルの変形
導入部において考察したとおり、家庭/仕事環境の分離を規定するために、VMがしばしば用いられる。しかし、もしホストOSが損なわれれば、企業VMも損なわれることが認識され得る。VM内で実行される管理ツールは(少なくともすばやく)これを検出できず、したがってそれらはなおもホストOSで実行される必要がある。そのため、雇用者は従業員の環境においてソフトウェアを制御する必要がある。よって、雇用者はVMだけでなく、それが実行されるホストOSも制御しなければならない。よって、雇用者に対するものと従業員に対するものとの2つのホストOSが必要とされる。各々のホストOSはディスク上の区画に割り当てられてもよいし、まったく別の2つのディスクが用いられてもよい。
しかし、これでは問題を解決するために十分ではないことも認識され得る。なぜなら、各OSが他方のディスクにアクセスできるため、いずれかのホストOSが他方によって損なわれ得るためである。暗号化ディスクは、キーを所有する者のみによって読取られ得る。しかし、OSのディスク内容全体を暗号化することはできない。なぜなら、OSのある部分はユーザからパスワードが得られる時点までに実行される必要があるからである。ディスクのこの部分の内容は「ブート・イメージ」と呼ばれる。暗号化されないブート・イメージは、たとえばブートローダによって読取られて実行されてもよい。次いでブート・イメージは、キーを入手して復号化することにより、残りのディスクへのアクセスを可能にする。そのコンピュータを得た者はそれを起動できるが、適切なパスワードなしにデータを含むディスクを読取ることはできない。しかし、彼女がディスクを再フォーマットしてそこに別のOSをインストールすることは可能であり、もしそれが前のOSと類似のものであれば、検出されないままとなる可能性がある。同じマシン上で2つのホストOSを実行させることは、第三者がマシンを得る状況と類似の状況である。一方のOSが他方のディスクを上書きするかもしれない。結果として、損なわれたホームOSが次いで企業OSを損なうおそれがある。
本発明は、企業環境がホームOSによって損なわれ得ないこと、より一般的には第1のホストOSが第2のOSを損なうことができないことを確実にすることによって、この問題を解決するものである。同時に、設計された解決策は、第1の(ホーム、ネイティブ)OSにおいて何が実行されるかに制限を設けない。それは第1のOSにおける、たとえばデュアル・ブート能力の追加または区画テーブルの変更などのいかなる変更も必要としない。
本発明者らによる以下の本発明のアプローチは、次のように要約できる。
−コンピュータ管理の古典的BYOモデルのほとんどは、家庭/仕事環境の分離を規定するためにVMに依拠することを提案する。
−損なわれたホストOSが企業VMを損ない得るため、このアプローチは満足できるものではないことが見出されていた。
−よって、各々がディスク上の区画またはまったく別の2つのディスクに割り当てられた2つのホストOSに同時に依拠する試みがなされた。
−しかし、これらのOSのうちの一方が他方のディスクを上書きし得るために、損なわれたホームOSが企業OSを損ない得るため、発明者らは、このアプローチにも欠点があることを認識した。
−したがって本発明者らのアイデアは、第1のOSに対して第2のOSを「隠す」ことであり、たとえば第1のOSが第2のOSを見ることができないためにそれを損なうことができないように、記憶媒体の区画情報において企業OSが知らされない。
−しかし次いで次の問題が起こる。どのようにして第2のOSを起動するか?実際のところ、第2のOSは自己を意識していないために、単純に起動できない。
−よって本発明者らの別のアイデアは、それを外部デバイスから(セキュアに)起動させることであり、そのデバイスは、(区画情報に第2のOSのトレースが見出されないために)このOSがどこにあるかを知ることなくOSを位置付けるという課題に直面する。
−次の手法のおかげでこの困難を克服できる。区画情報は第1のOSの特性を知らせるため、記憶媒体のどこに第1のOSが位置するかを定めることができ、したがって第2のOSは第1のOSによって空のまま残された部分に位置するものと想定できる。
−よって、たとえば第2のOSのブート・イメージなどの実行可能な部分を位置付けることができ、起動プロセスを開始できる。
−よって最初に必要とされることは、区画テーブルから第1のOSに関する情報を抽出して、そこから第2のOSの位置を推定することだけである。
−より効果的に、第2のOSによって占有された部分の上にオーバーレイ・ディスクが構築されることによって、第1のOSに対する危険なしにこのオーバーレイ・ディスクにおいて第2のOSが実行され得るようにしてもよい。
本発明のこれらの態様(およびさらに多くの態様)を以下に詳細に説明する。最初に図1は、本発明の実施形態を実装するのに好適な、一般的コンピュータ・システムを表す。
本明細書に記載される方法はほとんど非対話型であり、たとえばユーザ・デバイス、パーソナル・コンピュータ、サーバ、もしくは埋込みシステム、またはその組み合わせなどのコンピュータ・システムによって自動化されることが認識されるだろう。例示的実施形態において、本明細書に記載される方法は、部分的に対話型または非対話型のシステムにおいて実装されてもよい。さらに、これらの方法はソフトウェア(例、ファームウェア)、ハードウェア、またはその組み合わせにおいて実装されてもよい。例示的実施形態において、本明細書に記載される方法は、実行可能プログラムとしてソフトウェアにおいて実装され、特定目的または汎用のデジタル・コンピュータ、たとえばパーソナル・コンピュータ、ワークステーション、ミニコンピュータ、またはメインフレーム・コンピュータなどによって実行される。したがって、最も一般的なシステム100は、たとえばパーソナル・コンピュータ101などの汎用コンピュータを含む。
図1に示されるとおりのハードウェア・アーキテクチャに関する例示的実施形態において、コンピュータ101はプロセッサ105と、メモリ・コントローラ115に結合されたメモリ110と、ローカル入力/出力コントローラ135を介して通信的に結合された1つまたはそれ以上の入力もしくは出力またはその両方の(input and/or output)(I/O)デバイス(または周辺装置)10、145とを含む。当該技術分野において公知であるとおり、入力/出力コントローラ135は、1つもしくはそれ以上のバス、またはその他の有線もしくはワイヤレス接続であってもよいが、それに限定されない。入力/出力コントローラ135は、通信を可能にするために、たとえばコントローラ、バッファ(キャッシュ)、ドライバ、リピータおよび受信機などの付加的な構成要素を有してもよく、それらは簡潔のために省略されている。さらに、ローカル・インタフェースは、前述のコンポーネント間の適切な通信を可能にするためのアドレス、制御、もしくはデータ接続、またはその組み合わせを含んでもよい。本明細書に記載されるとおり、I/Oデバイス10、145は一般的に、当該技術分野において公知である任意の汎用暗号カードまたはスマート・カードを含んでもよい。こうしたデバイスの1つは、特に図2を参照して以下に詳細に考察されるユーザ・トラステッド・デバイス10である。
プロセッサ105は、ソフトウェア、特にメモリ110に保存(またはロード)されるソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ105は、任意の特注プロセッサまたは商業的に入手可能なプロセッサ、中央処理ユニット(central processing unit:CPU)、コンピュータ101に関連するいくつかのプロセッサの中の補助プロセッサ、(マイクロチップまたはチップ・セットの形の)半導体に基づくマイクロプロセッサ、マクロプロセッサ、または一般的にソフトウェア命令を実行するための任意のデバイスであってもよい。よってそれはいくつかのコア/プロセッサからなっていてもよい。
メモリ110は、揮発性記憶素子(例、ランダム・アクセス・メモリ(random access memory)(RAM、たとえばDRAM、SRAM、SDRAMなど))および不揮発性(永続的)記憶素子(例、ROM、消去可能プログラマブル・リード・オンリ・メモリ(erasable programmable read only memory:EPROM)、電気的消去可能プログラマブル・リード・オンリ・メモリ(electronically erasable programmable read only memory:EEPROM)、プログラマブル・リード・オンリ・メモリ(programmable read only memory:PROM)、テープ、コンパクト・ディスク・リード・オンリ・メモリ(compact disc read only memory:CD−ROM)、ディスク、ディスケット、カートリッジ、カセットまたはその類似物など)のいずれか1つまたはその組み合わせを含んでもよい。さらに、メモリ110は電子、磁気、光学、もしくはその他のタイプの記憶媒体、またはその組み合わせを組み込んでもよい。なおメモリ110は、さまざまなコンポーネントが互いに離れた位置にあるがプロセッサ105によってアクセス可能であるような分散型アーキテクチャを有してもよい。特に、メモリ110は所与のメモリ部分121を含み、そのメモリ部分121にブートローダ16(およびおそらくは外部デバイス10に最初に保存されていたその他のモジュール)が以後の実行のために移されてもよい。
メモリ110内のソフトウェアは1つまたはそれ以上の別個のプログラムを含んでもよく、そのプログラムの各々は、論理関数、特に本発明の実施形態に関与する関数を実装するために実行可能な命令のリストを含む。図1の実施例において、いくつかの条件が満たされたときにコンピュータ101がユーザ・トラステッド・デバイス10からの起動を開始および完了することを可能にするための命令がメモリ110にロードされてもよい。
以下に考察される実施形態において、メモリ110にはさらに、別様にたとえば物理ディスクなどの物理記憶媒体120に保存された2つの好適なオペレーティング・システム(OS)111−1および111−2の一方がロードされてもよい。しかし、本明細書において考察される新規の方法は、ホスト101のいずれのOSよりも「前に」少なくとも部分的に動作することに留意されたい(それらはハードウェアにより近い別のレベルで動作し、それによってコンピュータ101の正常な挙動が影響を受ける)。典型的に、2つのオペレーティング・システムが存在する。すなわち、たとえば主に家庭で用いられることが意図されたネイティブOSなどの第1のOS111−1と、たとえば企業OSなどの第2のOS111−2とである。一旦(もし)ロードされると、OS111−1または111−2は他のコンピュータ・プログラムの実行を本質的に制御して、スケジューリング、入力−出力制御、ファイルおよびデータ管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。これら2つのOSは典型的に、特に他のコンピュータ・プログラムのどれを制御するか、ならびにどの程度のファイルおよびデータ管理が可能かに関して異なっている。
本明細書に記載される方法の少なくとも一部は、ソース・プログラム、実行可能プログラム(オブジェクト・コード)、スクリプト、または実行されるべき命令のセットを含むあらゆるその他のエンティティの形であってもよい。ソース・プログラムのとき、次いでそのプログラムは、デバイス10もしくはホスト101またはその両方のメモリ(単数または複数)に含まれても含まれなくてもよいコンパイラ、アセンブラ、またはインタープリタなどを介して変換される必要がある。さらに、これらの方法は、データおよび方法のクラスを有するオブジェクト指向プログラミング言語として書かれてもよいし、ルーチン、サブルーチン、もしくは関数、またはその組み合わせを有する手続き型プログラミング言語として書かれてもよい。すべての場合に、本明細書において考察される新規の方法は、ファームウェア122に関連し、かつ必要に応じてデバイスのCPU11に関連して適切に動作するように設計される。
例示的実施形態において、入力/出力コントローラ135には従来のキーボード150およびマウス155が結合されてもよい。たとえばI/Oデバイス145などのその他の出力デバイスは、たとえばプリンタ、スキャナ、およびマイクロホンなどであるがそれに限定されない入力デバイスを含んでもよい。最後に、I/Oデバイス10、145は入力および出力の両方と通信するデバイスをさらに含んでもよく、それはたとえば(他のファイル、デバイス、システムまたはネットワークにアクセスするための)ネットワーク・インタフェース・カード(network interface card:NIC)または変調器/復調器、無線周波数(radio frequency:RF)またはその他のトランシーバ、電話インタフェース、ブリッジ、およびルータなどであるが、これらに限定されない。本明細書において説明されるとおり、I/Oデバイス10、145は、当該技術分野において公知である任意の汎用暗号カードまたはスマート・カードであってもよい。システム100はさらに、ディスプレイ130に結合されたディスプレイ・コントローラ125を含んでもよい。例示的実施形態において、システム100はさらに、ネットワーク165に結合するためのネットワーク・インタフェース124(例、NIC)を含んでもよい。ネットワーク165は、コンピュータ101と、任意の外部サーバおよびクライアントなどとの間の広帯域接続を介した通信のための、IPに基づくネットワークであってもよい。ネットワーク165は、コンピュータ101と、たとえばサーバ30などの外部システムとの間でデータを送受信する。例示的実施形態において、ネットワーク165は、サービス・プロバイダによって管理されるマネージドIPネットワークであってもよい。ネットワーク165は、たとえばWiFi(R)、WiMax(R)などのワイヤレス・プロトコルおよび技術を用いるなどして、ワイヤレス方式で実現されてもよい。加えてネットワーク165は、たとえばローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット・ネットワーク、またはその他の類似のタイプのネットワーク環境などのパケット交換ネットワークであってもよい。ネットワーク165は、固定ワイヤレス・ネットワーク、ワイヤレス・ローカル・エリア・ネットワーク(local area network:LAN)、ワイヤレス広域ネットワーク(wide area network:WAN)、パーソナル・エリア・ネットワーク(personal area network:PAN)、仮想プライベート・ネットワーク(virtual private network:VPN)、イントラネット、またはその他の好適なネットワーク・システムであってもよく、信号を受信および送信するための機器を含む。
コンピュータ101がPC、ワークステーション、またはインテリジェント・デバイスなどであるとき、メモリ110内のソフトウェアは、基本入出力システム(basic input output system:BIOS)122をさらに含んでもよい。BIOSは、始動時にハードウェアを初期化およびテストし、OSを始動し、ハードウェア・デバイス間でデータを移すことを支援する基本的ソフトウェア・ルーチンのセットである。コンピュータ101が活動化されるときにBIOSが実行され得るように、BIOSは典型的にROMに保存される。
本明細書に記載される方法を実現する目的のために、BIOS122は隠されたOSを定めるようブートローダに促されて、そのためにブートローダと対話する。しかしより一般的には、その目的のために、あらゆる好適なファームウェア122またはファームウェアに対するインタフェース(すなわち、ソフトウェア・スタックにおいて任意のオペレーティング・システムの「下で」動作する、永続的メモリならびにそこに保存されるプログラム・コードおよびデータの組み合わせ)が用いられてもよい。これは典型的にはBIOSである。しかし、好適なファームウェア122またはそれに対するインタフェースの例は、いわゆるエクステンシブル・ファームウェア・インタフェース(Extensible Firmware Interface:EFI)BIOS、またはユニファイド・エクステンシブル・ファームウェア・インタフェース(Unified Extensible Firmware Interface:UEFI)を含む。後者は、オペレーティング・システムとプラットフォーム・ファームウェアとの間のソフトウェア・インタフェースを規定する仕様である。UEFIはBIOSファームウェア・インタフェースに取って代わることが意図されており、今日すべてのIBM(IBM社の登録商標)のPC準拠コンピュータに存在する。実際には、ほとんどのUEFIイメージがBIOSサービスに対するレガシ・サポートを有する。より一般的には、BIOSサービスまたは同等のサービスに対するレガシ・サポートを有するあらゆるファームウェアが、本明細書に記載される方法を実装する目的のために予期され得る。さらにより一般的には、ソフトウェア・スタックにおいてオペレーティング・システムの下で動作するあらゆる初期化ファームウェアは、本発明を実装する目的のために集められ得る。
コンピュータ101が動作中であるとき、プロセッサ105は、メモリ110内に保存されたソフトウェアを実行し、メモリ110とデータを通信し、かつソフトウェアに従ってコンピュータ101の動作を広く制御するように構成される。本明細書に記載される方法の全体または一部、典型的に後者は、プロセッサ105によって読取られ、おそらくはプロセッサ105内にバッファされ、次いで実行される。
ソフトウェアにおいて実装され得る、本明細書に記載される方法の部分は、任意のコンピュータ関連のシステムもしくは方法による使用、またはそれに関連する使用のための任意のコンピュータ読取り可能媒体に保存されてもよい。
当業者に認識されるとおり、本発明の局面はシステム、方法またはコンピュータ・プログラム製品として具現化されてもよい。したがって本発明の局面は、完全にハードウェアの実施形態、完全にファームウェアもしくはソフトウェアまたはその両方の実施形態(ファームウェア/ソフトウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはファームウェア/ソフトウェアおよびハードウェアの局面を組み合わせた実施形態の形を取ってもよく、本明細書においてこれらはすべて一般的に「モジュール」、「システム」、または「プロセス」、「スキーム」などと呼ばれることがある。さらに、本発明の局面は、コンピュータ読取り可能プログラム・コードが具現化されている1つまたはそれ以上のコンピュータ読取り可能媒体(単数または複数)において具現化されるコンピュータ・プログラム製品の形を取ってもよい。
1つまたはそれ以上のコンピュータ読取り可能媒体(単数または複数)の任意の組み合わせが用いられてもよい。コンピュータ読取り可能媒体は、コンピュータ読取り可能信号媒体またはコンピュータ読取り可能記憶媒体であってもよい。コンピュータ読取り可能記憶媒体は、たとえば電子、磁気、光学、電磁気、赤外、または半導体のシステム、装置、もしくはデバイス、または前述のもののあらゆる好適な組み合わせなどであってもよいがそれに限定されない。コンピュータ読取り可能記憶媒体のより特定的な例(非網羅的なリスト)は以下を含む。すなわち、1つまたはそれ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、光学記憶装置、磁気記憶装置、または前述のもののあらゆる好適な組み合わせである。本文書の状況において、コンピュータ読取り可能記憶媒体は、命令実行システム、装置またはデバイスによる使用、またはそれに関連する使用のためのプログラムを含有または保存し得るあらゆる有形の媒体であってもよい。
コンピュータ読取り可能信号媒体は、たとえばベースバンド内で、または搬送波の部分などとして媒体内で具現化されるコンピュータ読取り可能プログラム・コードを有する伝播データ信号を含んでもよい。こうした伝播信号は、電磁気信号、光学信号、またはそのあらゆる好適な組み合わせを含むがそれに限定されないさまざまな形のいずれかを取ってもよい。コンピュータ読取り可能信号媒体は、コンピュータ読取り可能記憶媒体ではなく、かつ命令実行システム、装置またはデバイスによる使用、またはそれに関連する使用のためのプログラムを通信、伝播または移送できる任意のコンピュータ読取り可能媒体であってもよい。
コンピュータ読取り可能媒体において具現化されるプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、RFなど、または前述のもののあらゆる好適な組み合わせを含むがそれに限定されない任意の適切な媒体を用いて送信されてもよい。
本発明の局面のための動作を行うためのコンピュータ・プログラム・コードは、オブジェクト指向プログラミング言語、たとえばJava(R)、Smalltalk(R)、またはC++など、および従来の手続き型プログラミング言語、たとえば「C」プログラミング言語または類似のプログラミング言語などを含む、1つまたはそれ以上のプログラミング言語のあらゆる組み合わせで書かれていてもよい。プログラム・コードは、すべてがユーザのコンピュータで実行されてもよいし、(スタンド・アロン・ソフトウェア・パッケージとして)部分的にユーザのコンピュータで実行されてもよいし、さらに部分的に次のうちの2つまたはそれ以上で実行されてもよい。すなわち、ユーザのコンピュータ、ユーザ・トラステッド・デバイス、およびリモート・コンピュータである。ホスト・コンピュータおよびサーバは、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、外部コンピュータへの接続(インターネット・サービス・プロバイダを使用するインターネット)を含むあらゆるタイプのネットワークを通じて接続されてもよい。
本発明の実施形態に従う方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の局面を以下に説明する。流れ図もしくはブロック図またはその両方の各ブロック、および流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるだろう。これらのコンピュータ・プログラム命令が、コンピュータ(汎用コンピュータもしくは特定目的のコンピュータ、またはその他のプログラマブル・データ処理装置)、もしくはユーザ・ポータブル・デバイス、またはその両方のプロセッサ(単数または複数)に与えられることによって、前記プロセッサ(単数または複数)を介して実行された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能/動作を実装するための手段を作成するようにマシンを生成してもよい。
さらに、これらのコンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置またはその他のデバイスに特定の態様で機能するよう指示できるコンピュータ読取り可能媒体に保存されることによって、コンピュータ読取り可能媒体に保存された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能/動作を実装する命令を含む製造品を生成するようにしてもよい。
さらに、コンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置またはその他のデバイスにロードされて、コンピュータ・デバイスにおいて一連の動作ステップを行わせることにより、そのコンピュータ・デバイスにおいて実行された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能/動作を実装するような、コンピュータに実装されるプロセスを生成してもよい。
図面中の流れ図およびブロック図は、本発明のさまざまな実施形態に従うシステム、方法およびコンピュータ・プログラム製品の実装可能なアーキテクチャ、機能および動作を例示するものである。これに関して、流れ図またはブロック図における各ブロックは、指定された論理関数(単数または複数)を実装するための1つまたはそれ以上の実行可能な命令を含むモジュール、セグメント、またはコードの部分を表していてもよい。さらに、いくつかの代替的な実装においては、ブロック中に示される機能が図面に示される以外の順序で起こってもよいことに留意すべきである。たとえば、連続して示される2つのブロックは、伴われる機能に依存して、実際には実質的に同時に実行されてもよいし、それらのブロックがときには逆の順序で実行されてもよい。さらに、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能もしくは動作を行う特定目的のハードウェアに基づくシステム、または特定目的のハードウェアとコンピュータ命令との組み合わせによって実装され得ることを注記する。
図1から図5を広く参照して、ユーザ・ポータブル・デバイス10に関する本発明の局面を最初に説明する。このデバイスは本質的に以下を含む。
−パーソナル・コンピュータ101との接続を可能にする、たとえばUSB接続インタフェースなどの接続インタフェース12、
−好ましくはセキュア・メモリ141を含む永続的メモリ14、および
−新規のコンピュータ化された方法が提供され、かつ前記永続的メモリ14に保存されるブートローダ16。
ブートローダ16は、たとえばコンピュータ101を再始動するときなど、前記接続インタフェース12を介したデバイス10とコンピュータ101との接続の際に、たとえばコンピュータ101のBIOSなどの初期化ファームウェア122によって検出可能であるように設計される。この機能はたとえば、それ自体が公知であるとおり、(簡便にはデバイス10に保存された)ブートローダ自体のデータ構造に従って提供されてもよい。ブートローダはさらに、前記ファームウェア122に対して、ブートローダ(またはそのモジュールもしくはサブパート)16を以後のコンピュータにおける実行のためにコンピュータ101のメモリ121にロードするよう指示するための命令を含む。
さらにブートローダ16は、たとえ2つのOSのうちの一方が隠されていても、すなわちコンピュータ101の物理記憶媒体120の区画情報によって知らされなくても、コンピュータ101上に共存する2つのOSのうち前記一方のみがセキュア・デバイス10から起動できることを確実にすることを目的としたいくつかの特殊なタスクを行うために、(コンピュータ101における実行中に)ファームウェア122と対話するように特定的に設計される。
想定される状況は以下のとおりである。コンピュータ101の物理記憶媒体120は、第1のホストOS111−1、たとえばネイティブOSなど(「ホーム」OSとも呼ばれる)と、第2のホストOS111−2(例、「企業」OS)とを保存する。オペレーティング・システム111−1および111−2(または少なくともその一部)は、それぞれ物理記憶媒体120の第1の部分120−1および第2の部分120−2に保存される。加えて、媒体120の区画情報111−1pは、第2のOS111−2を知らせないことが想定される。言換えると、第2のOSは(第1のOSに対して)隠される。この想定状況とは独立して、以下に説明される本ブートローダの特定の機能は、区画情報111−1p内の第2のOSに関する何らかの情報がたとえ利用できたとしても(そうでないことが好ましいが)、こうした情報を利用しない(さらに好ましくは無視する)。
正確には、コンピュータ101における実行の際に、ブートローダ16は以下の動作を行うように設計される。
−最初に、ブートローダ16は媒体120の第2の部分120−2、すなわち第2のOS111−2によって使用される部分、特に第2の部分が始まるところを定める。しかし、ブートローダが用いる区画情報111−1pは第2のOS111−2を知らせない(一般的に知らせないことが想定される)ため、ブートローダは、OSのうち第1のものだけを知らせるこの区画情報111−1pのみを用いて第2の部分を間接的に定める必要がある。
−2番目に、ブートローダは第2の部分120−2における第2のOS111−2の所与の部分(添付の図面における「BI」)を位置付ける。この部分は好ましくはブート・イメージであり、より一般的には、実行の際に第2のOSに起動を継続させるために寄与する任意の実行可能部分である。
−最後に、位置付けられた部分BIを実行することによって、OSのうち第2のものだけがユーザ・ポータブル・デバイス10から効果的に起動できる。
反対に、別の局面に従うと、本発明はパーソナル・コンピュータ101を起動する方法として具現化されてもよく、これは図3および図4に示される。最初のステップS1において、上述のものなどのポータブル・デバイス10およびコンピュータ101が提供されると想定するとき、次いでこの方法は、ポータブル・デバイス10とコンピュータ101との接続の際に(S2)、以下のステップを含む。
−ステップS3:ファームウェア122によってブートローダ16を検出させることによって、ブートローダ16のファームウェアに対する命令に従って、
○ブートローダがコンピュータ101に移り(ステップS4)、そこで実行される(ステップS5)ことによって、
■その後、第2のOS111−2の部分BIを位置付け(ステップS6)、それを実行する(S8)ことによって、
●第2のOSが起動し(ステップS8〜S11)、かつ前記OSのうち第2のものだけがユーザ・ポータブル・デバイス10から起動し得るようにする。
ブートローダ16は、さまざまな種類の動作を行うために、たとえばBIOSなどのファームウェア122と対話する。ファームウェアは基本的な動作を行うために必要であるため、ブートローダ16はさらに何らかの形で継続的にファームウェアと対話する。
本発明は、上で考察されたユーザ・ポータブル・デバイス10およびコンピュータ101を含むシステムに拡張される。
(i)第2のOSだけがユーザ・ポータブル・デバイス10から起動し得ること、および(ii)そのプロセスに第1のOSは関与しないことから、本解決策はたとえば企業OSなどの第2のOSを始動することを可能にし、かつ第2のOSがホーム・コンピュータにおいてネイティブOSを実行する必要なしに実行されることを可能にする。後で詳細に説明するとおり、必要な構成要素には区画情報からアクセスでき、この情報は本質的にネイティブOSとは独立のものである。よってネイティブOSを始動させる必要がないため、第2のOSが改ざんされる危険性が低くなる。
妥当な想定として、ディスク上に第2のOSを保存するために十分な空きスペースを利用可能にするために、ユーザはネイティブOSの区画を縮小させてもよい。これはたとえば、ウィンドウズ(Windows)(R)7およびOSXなどのOSにおいて簡単なマウス・クリックによって達成できる。
ここで図2、図3および図4をより特定的に参照すると、実施形態において、ユーザ・ポータブル・デバイス10はさらに、メモリ14に保存された保全性チェック・データ13を含んでもよい。ブートローダはさらに、前記保全性チェック・データ13を用いて、先にブートローダによって位置付けられた部分BIの保全性をチェックする(ステップS7)ように構成されてもよい。
部分BIの保全性をチェックするステップは、トラストのチェーンの第1のステップとみなされてもよく、ここでトラステッド・ブートローダ16は、予め定められて予め保存された情報を通じて、たとえばブート・イメージ(暗号化されていてもいなくても)など、位置付けられた部分の保全性を確認する。次に、当該技術分野における通常どおり、ブート・イメージがユーザとの対話を通じて残りのOSの保全性を確認してもよい。
その場合、デバイス10は好ましくはセキュアな耐タンパ・デバイスであり、すなわち保全性チェック・データ13はセキュア・メモリ141に保存されることが好ましい。実際に、位置付けられた部分BIの保全性をセキュア・デバイスによって確認することに意味がある。なぜなら、そうでなければブートローダが改ざんされている危険があるためである。
実施形態において、ブートローダ16は、前記部分の内容をハッシュして、結果として得られたハッシュ値を前記保全性チェック・データ13に対してチェックすることによって、第2のホスト・オペレーティング・システム111−2の位置付け部分BIの保全性をチェックするように構成されてもよい。その場合には、たとえば非暗号化ブート・イメージなどの部分BIの内容のハッシュをデバイス10に保存して、それを起動のたびにディスク上に見出されるものと比較することで十分である。なお、好ましくはブート・イメージはOS111−2のカーネルおよび、たとえば起動プロセスの際に必要なものなどのいくつかのライブラリだけを含むため、ブート・イメージはかなり小さくてもよい。
代替的には、もし部分BIが暗号化されていれば、前記保全性チェック・データに含まれるキー13を用いて前記部分BIを復号化することが要求されてもよく、それは位置付け部分の保全性をテストする別の手段を提供する。これは単純に内容の保全性を確実にすることよりも良好なセキュリティを提供するが、ソフトウェアの更新の複雑性を増大させる。
変形において、ブート・イメージはトラステッド・デバイスに保存されて、その位置付け(ステップS6)および実行(ステップS8)が行われる前にコンピュータ101に移されてもよい。これはブート・イメージの保全性を確実にするが、デバイス10におけるより多くの記憶装置およびより頻繁な更新を必要とする。
ここで図5を参照すると、第2のOS111−2は好ましくは隠されているため、ブートローダ16は第1のOS111−1の区画情報111−1pを読取る(ステップS10a)ことによって、前記区画情報から物理記憶媒体120のどこに第2のOS111−2が位置するかを推定(ステップS10b)してもよい。これは、前記物理記憶媒体120において第1のOS111−1によって占有された第1の部分120−1のサイズs1を算出することを必要としてもよい。
たとえば、第1のホストOS111−1および第2のホストOS111−2が、コンピュータ101の同じ物理記憶媒体120、たとえば物理ディスクなどに存在すると想定すると、ブートローダ16は前記コンピュータ101における実行の際に、物理記憶媒体120の所与のセクタfs2から前記部分BIを探索することによって前記部分BIを位置付けるように構成されてもよく、このセクタfs2は、(前記物理記憶媒体120に保存された)第1のOS111−1によって使用される最終セクタ(last sector)ls1の後(例、直後)に始まる。どのセクタls1が第1のOS111−1によって使用される最終セクタであるかは、少なくともいくつかの状況においては区画情報111−1pから直接入手可能であるか、または容易に計算できてもよく、この情報はステップS10aにおいてブートローダによって読取られる。第2のOS111−2が第1のOS111−1の後(例、直後)に保存されると想定するとき、図5に示されるとおり、ブートローダはそれをセクタfs2から探索し始めてもよい、ステップS10b。
ここで、区画情報から入手可能なその他の構成情報に依存して、ブートローダは第2のOS111−2の探索を、セクタls1の直後ではなく、ls1から離れたセクタfs2から開始してもよい。なぜなら、いくつかの中間セクタが第1または第2のOS以外の目的に使用されていることを区画情報が明らかにすることがあるためである。
デフォルト(コンテキスト依存)によって想定されるか、または区画情報111−1pから直接入手可能な情報の量に依存して、ブートローダはさらに、物理記憶媒体において第1のOS111−1によって占有された第1の部分のサイズs1を算出する必要があってもよい。サイズs1を知ることによって、どのセクタls1が第1のOSによって使用される最終セクタであるかが容易に推定される。なぜなら、セクタのサイズは既知であるか、またはたとえばコンピュータの仕様などから入手可能だからである。なお、いくつかの特定の状況においては、OSのサイズがデフォルトで既知になり得るように、いくつかのポリシ要求は許可されるネイティブOSの選択を1つまたはいくつかのOSバージョンに制限することがあり、そのために場合によっては第1のOSのサイズを算出するステップがスキップされ得る。
次に、部分BIは、必ずしも第2のOS111−2によって占有される第1のセクタに保存されていないため、ブートローダ16は前記部分BIを間接的に位置付ける必要があるかもしれない。これは、前記セクタls1を識別するデータに加えて、前記第2の部分120−2内の部分BIの相対的位置(relative location)rlに関する情報のおかげで達成できる。部分BIの相対的位置rlは、デバイス10によって既知であっても(そこに保存されていても)よいし、デバイス10が接続し得るサーバ30において(直接的または間接的に)別様に入手可能であってもよい。
これらの後ろ2つの実施形態はより特定的に、PC101に単一の記憶ディスクが設けられていて、両方のOSがこのディスクを共有する場合に関するものである。第2のOSの起動プロセスの間に第1の(ネイティブ)OSを変更する必要がないように、ディスク上のどこに第2のOSが位置するかをブートローダから認識する必要がある。通常、この情報はディスク120の最初の区画テーブル111−1p内に保存されるが、次いでこの情報はネイティブOSから通知される可能性があり、それは本発明の状況において望ましくない。よって本発明に従うシステムにおいては、反対にこの情報が存在することを避けることが好ましい。その代わりにブートローダは、ディスクの最初に見出されるネイティブOSの区画テーブルを読取り、たとえばネイティブOSがディスク上でどれほどのスペースを取っているかを算出する。本質的に、第1のOSのサイズは、既存の区画によってカバーされたディスクの部分である。次いでブートローダは、ディスクにおけるホームOSの後のセクタから第2のOSが始まることが見出されるものと想定する。次に、ブートローダは前述の機構を用いて部分BIを位置付け、その保全性を定め、かつそれを実行してもよい。
興味深いことに、ブートローダはさらに、第1のOS111−1によって占有された前記物理媒体120の部分をマスクするために、物理記憶媒体120(例、物理ディスク)
の上にオーバーレイ・ディスク120oを構築させる(ステップS10c)ように構成されてもよい。こうしたオーバーレイ・ディスクは、前記物理記憶媒体によって支えられた物理記憶媒体のソフトウェア表現であり、この物理記憶媒体は(a)実際の物理記憶装置、たとえばディスクなど、または(b)複数のこうした記憶装置、または(c)1つの物理記憶装置の一部であってもよい。
オーバーレイ・ディスクの構成は、すでに抽出された情報から利益を得てもよい。たとえばブートローダは、オーバーレイ・ディスクがセクタfs2から、すなわちセクタls1の直後から始まるようにオーバーレイ・ディスクを構築してもよい。
したがって、本方法はさらに次のステップを含んでもよい。
−S10c:物理記憶媒体120の上にオーバーレイ・ディスク120oが構築される。
−S11:構築されたオーバーレイ・ディスク120oにおいて、第2のホストOS111−2eが実行される。これによって、
−S12:第2のホストOS111−2eの実行中に、第2のホストOS111−2eのフレームワーク内でソフトウェア112が実行され得る。
なお、参照番号111−2は媒体120に保存された第2のOSを表すのに対し、参照番号111−2eは実行中の、すなわちメモリにロードされて実行されている第2のOSを示す。
オーバーレイ・ディスク構成がなければ、たとえば第2のOSに対する区画またはディスク全体が必要となる。しかし、どちらの場合にも第2のOSが第1のOSによって検出可能となり、よって第1のOSが第2のOSを損ない得ることとなる。そこでもし第2のOSが暗号化されれば、第1のOSは第2のOSにアクセスできなくなるが、なおもそれを上書きすることはできる。よって、オーバーレイ・ディスクを構築することが好ましい。
コンピュータ記憶装置の分野において公知であるとおり、大容量記憶装置のスペースを割り当てることを可能にする論理ボリューム管理(logical volume management)(すなわちLVM)の方法が公知である。こうした方法は、従来の分配スキームよりも柔軟である。特に、ボリューム・マネージャは複数の区画を連結するか、ともにストライプするか、または別様に組み合わせてより大きな仮想区画にすることができ、管理者はおそらくはシステム使用を妨げることなくそれをサイズ変更したり移動したりできる。たとえば、Wikipedia(R)のページhttp://en.wikipedia.org/wiki/Logical_volume_managementなどを参照されたい。本発明の場合、第2のOSがそのメイン「ディスク」として使用する仮想メモリ部分を作成するために、記憶媒体120の一部を割り当てるためにボリューム・マネージャが依拠されてもよい。それに関して用いられ得るいくつかのボリューム・マネージャ技術が利用可能である。
ブートローダには、オーバーレイ・ディスクを構築するための方法が備えられてもよい。しかし好ましくは、オーバーレイ・ディスクを直接構築するのはブートローダではなく、ブートローダが位置付けてメモリにロードするブート・イメージ、たとえば第2のOSのカーネルおよび初期RAMディスクなどである。すべての場合に、ブートローダは、コンピュータ101における実行の際に(例、ブート・イメージ(boot image)BIに)物理記憶媒体120の上にオーバーレイ・ディスク120oを構築させるように設計されてもよい。
ソフトウェア112はたとえば、実行可能環境をカプセル化した、ゲストOSとして実行される仮想マシンであってもよい。これは、第1のホストOS111−1がネイティブOSであり、第2のOS111−2が企業OSであるような本明細書で予期される状況において、セキュアなBYOモデルの管理を可能にするために特に有利である。ゲストOSは特に、所与の企業ポリシに従って所与のユーザに属するデスクトップを表示するステップをもたらしてもよい。
デバイス10を説明するときにすでに述べたとおり、好ましい方法は、オーバーレイ・ディスクを構築するステップの前に、さらに以下のステップを含んでもよい。
−S10a:区画情報111−1pを読取るステップ、
−S10b:前記区画情報から、前記物理記憶媒体のどこに第2のホストOS111−2が位置するかを推定するステップであって、これは好ましくは、前記物理記憶媒体120において第1のホストOSによって占有された第1の部分のサイズs1を算出することによって達成される、ステップ、および、
−S10c:オーバーレイ・ディスクが第1のホストOSによって占有された最終セクタls1の後、好ましくは直後に位置するセクタfs2から始まるようにオーバーレイ・ディスクを構築するステップ。
オーバーレイ・ディスク構成のおかげで、第2のOSが起動を継続すること、すなわち第2のOSが自身のディスクを見出すこと、つまり自身が用いるディスクの部分を見出すことが容易に可能にされる。さらに、実行中の第2のOSは、ディスクの構成のために自身がディスク全体を有するものと「信じて」いる(オーバーレイ・ディスクは、好ましくは記憶媒体の端部まで続く)。こうしたオーバーレイ・ディスクを構築するさまざまなやり方が存在する。好ましい実施形態は、たとえばオーバーレイ・ディスクを作成するためにハイパーバイザによって利用可能なデバイス・マッパ構成を用いることである。しかし、VM内で第2のOSが実行される必要がない限り、ハイパーバイザは関与しないことを注記する(ハイパーバイザはオーバーレイとは無関係であり、オーバーレイはハイパーバイザの有無にかかわらずOSによって実装されてもよい)。
一方で、ネイティブOSは第2のOSが使用するスペースのことを、自身の使用範囲の外側の単なる空きスペースとして認識する。よって、ネイティブOSは第2のOSの存在をまったく知らない。第2のOSのすべてのトレースを除去するためには、この「空き」スペースを取り戻すことで十分である。
ここで図1、図2および図5をともに参照すると、前に触れたとおり、本発明はさらに、ポータブル・デバイス10およびコンピュータ101を含むシステム100として具現化されてもよい。第1のホストOS111−1および第2のホストOS111−2は、それぞれ記憶媒体120の第1の部分120−1および第2の部分120−2に保存される。パーソナル・コンピュータの物理記憶媒体の区画情報は、第1のホスト・オペレーティング・システム111−1は知らせるが、第2のホスト・オペレーティング・システム111−2は知らせない。
上に考察したとおり、好ましくは、第2のホストOSの部分BIは、第2のオペレーティング・システムのカーネル、およびコンピュータを起動する際に関与するソフトウェアすなわち起動に必要なソフトウェア・ライブラリだけを含み、このソフトウェアはオーバーレイ・ディスクを構築するために必要なソフトウェアを含んでもよい。
加えて、前に述べたとおり、ファームウェア122は好ましくは次のうちの1つである。
−BIOS、
−エクステンシブル・ファームウェア・インタフェースEFI、または
−ユニファイド・エクステンシブル・ファームウェア・インタフェースUEFI。
次に、図2に戻って、永続的メモリ14は好ましくは以下を含む。
−好ましくはブートローダ16の第1の部分161(または所与の部分)(もしくはデバイス10の付加的なモジュール、またはその両方)を保存するセキュア・メモリ141、および
−ブートローダの第2の部分162(またはその他の部分)を保存する非セキュア・メモリ142、たとえばSDカードなど。
セキュア・メモリの存在によって、ユーザ・トラステッド・デバイスはセキュア・デバイスとなる。たとえば、モジュール16の一部は暗号化されて非セキュア・メモリ142に存在してもよく、一方で対応する暗号化キーがセキュア・メモリ141に保存されてもよい。セキュア・メモリは典型的に、コスト上の理由から128koまたは256koに制限される。よってそれは、主にたとえばハッシュ/シグネチャ13などの暗号化データを保存するために用いられることが好ましい。しかし、ブートローダの一部分161がセキュア・メモリ141に存在してもよく、一方でブートローダの他の部分162は暗号化されて非セキュア・メモリに存在してもよい。変形において、ブートローダ16はセキュア・メモリ141に存在するシグネチャによって暗号化されて、SDカードに存在する。コンピュータ101がブートローダ16の所与のブロックまたは任意のデータ・チャンクを要求するとき、デバイスのCPU11はメモリ14内に存在するソフトウェアによって、たとえばセキュア・メモリ141に保存される暗号化データを用いるなどして要求されたブロックを復号化するように促されてもよい。
デバイス10の接続インタフェース12は、たとえば次のタイプのものであってもよい。
−ユニバーサル・シリアル・バス(Universal Serial Bus)すなわちUSB、
−外部の小型コンピュータ・システム・インタフェース(Small Computer System Interface)すなわちSCSI、
−外部のシリアル・アドバンスト・テクノロジ・アタッチメント(Serial Advanced Technology Attachment)すなわちSATA、
−Firewire(R)、または
−Thunderbolt(R)。
しかし、より一般的にこれは、コンピュータが外部デバイス10から起動することを可能にするあらゆる現行または将来のコネクタであってもよい。加えて、その同じインタフェース12が、たとえばプロジェクタ、プリンタ、または任意のその他の出力デバイスなどの任意の外部デバイスと、ユーザ・トラステッド・デバイス10とが通信することを可能にしてもよい。
通常どおり、ユーザ・トラステッド・デバイス10には、メモリに結合されたたとえば暗号プロセッサなどの処理手段(またはコンピューティング手段、すなわちCPU)11が提供されてもよく、メモリはより一般的には永続的メモリ14を含み、好ましくは非永続的メモリも含む(明確に示されていないが、非永続的メモリは処理手段11の一部と考えられ得る)。
この状況において、永続的メモリは特に、上述したブートローダを超えて、処理手段11によって少なくとも部分的に実行されるコンピュータ化された方法を保存する。もちろん、本明細書に記載されるデバイスのさまざまな機能は、異なる機能が提供され、かつコンピュータ101において実行可能であるか、またはコンピュータ101およびデバイス10において部分的に実行可能な1つの同じ(スーパー)モジュールとして考えられてもよい。
必要であれば、セキュア・デバイス10は、たとえば非セキュア・メモリ142または任意のスマート・カードなどのメモリ・カードに保存されたユーザの信用証明を読取るためのカード・リーダを有する。好適な使用は、たとえばカードに保存されたユーザの信用証明などのこうしたデータから安全に行われ得る。特に、ホスト101を介し、かつこうしたデータを用いて、ユーザ(または厳密にいえばデバイス10)と、たとえばサーバ30などの第三者との間に信頼できる接続を確立できる。変形において、ユーザの信用証明はセキュア・デバイスに直接保存されてもよい。ユーザとの対話を可能にするために、さらなるインタフェース(制御ボタンおよびディスプレイなど)が提供されてもよい。
最後に、前に触れたとおり、デバイス10またはブートローダ16はさらに、たとえばサーバなどの外部エンティティ30に接続するように設計されてもよい。この機能は、たとえばデバイス10の特定の接続モジュールによって提供されてもよい。このモジュールは、好ましくはコンピュータ101を介してサーバ30に接続するよう指示するために、デバイス10またはコンピュータ101において実行されてもよい。サーバ30への接続は、いくつかのやり方で実現され得る。最も有利なのは、第2のOSの助けを伴うか、または伴わずに、コンピュータ101を介してサーバ30に接続することである。サーバに送られるデータはデバイス10において暗号化され、サーバ30から受信されるデータはデバイス10によって復号される。これによって、通信チャネルのエンド−エンド・セキュリティが確実になる。
たとえば、接続モジュールはファームウェア122と対話することによって、その後コンピュータ101のネットワーク・カード124と対話してもよく、これはサーバ30に接触できるようにネットワーク・カード124によって可能にされるネットワーク165を通じた通信を開始するためである。よってその場合、接続モジュールは外部エンティティとの通信を可能にするためにホスト・コンピュータのファームウェアに依拠するため、このデバイスは組み込みネットワーク・カードもネットワーク・イネーブル・デバイスも必要としないし、ホスト101のネットワーク・カード124に対するドライバを保存する必要もない。なお、ネットワーク・カード124を初期化するためにファームウェア122を用いる代わりに、接続モジュールはデバイス10に保存されたネットワーク・カード・ドライバにアクセスして、ネットワーク・カード124と直接対話することによって、外部エンティティ30と接触してもよい。しかし、その場合にはデバイス10において好適なネットワーク・カード・ドライバを保存し、かつおそらくは更新する必要がある。さらに、より「根本的な」代替形として、たとえばサーバに直接接続するために、たとえばネットワーク・デバイス(有線またはワイヤレス)などを有するネットワーク・アクセス手段をデバイス10に備えることが好ましいことがある。その場合、接続モジュールはデバイスにおいて実行される。こうした解決策は、多少高価になる。しかし、サーバに接触するためにコンピュータ101と付加的な対話を行う必要がないため、待ち時間が低減される。
上記の実施形態は添付の図面を参照しながら簡潔に説明されており、いくつかの変形に適応してもよい。上記の機能のいくつかの組み合わせが予期されてもよい。その例を次のセクションに示す。
2.特定的実施形態/技術的実装の詳細
本セクションにおいては特定的実施形態を説明し、ここでは以下の選択肢が想定される。
−第1のOSはネイティブ(ホーム)OSであり、第2のOSは企業OSである。かつ、
−ブートローダによって位置付けられる実行可能部分BIはブート・イメージである。
前セクションで詳細に説明したとおり、本アプローチは外部デバイス10に存在するブートローダ16に依拠するものである。便利であるように、このデバイスはUSBコネクタ12を有する。なぜなら、現代のすべてのファームウェアはこうしたデバイスを認識できるからである。ブートローダは、デバイス上の耐タンパ記憶装置141に少なくとも部分的161に保存されており、これは許可されたエンティティ以外のエンティティには変更できないことを意味する。
ステップS1において、ユーザ・デバイス10およびコンピュータ101が提供される。マシン101にトラステッド・デバイスが挿入され、マシンがオンにされる(ステップS2)。マシンのファームウェア122はトラステッド・デバイス10を認識し、かつそれが起動可能であることを識別する(ステップS3)。ファームウェアによって、マシンのメモリ121にブートローダ16がロードされ(ステップS4)、かつ実行される(ステップS5)。
前に考察したとおり、ブートローダは、コンピュータ101のディスク120のブート・イメージBIを含む部分にアクセスするように構成される。ディスクにおいてブート・イメージが位置付けられるとき(ステップS6)、ブートローダは単純に非暗号化ブート・イメージの内容の保全性をテストしてもよいし、トラステッド・デバイス10に保存されたキー13を用いてブート・イメージを復号してもよい(ステップS7)。
前者の場合には、完全なブート・イメージの内容のハッシュ13をデバイス10に保存して、起動のたびにディスクに見出されるものをこれと比較することで十分である。ブート・イメージは、OSのカーネル、および起動の際に有用ないくつかのライブラリだけを含んでもよく、結果としてかなり小さくなる。
後者の場合には、ブートローダは保存されたキー13を用いてブート・イメージを復号してもよい。これは単純に内容の保全性を確実にすることよりも良好なセキュリティを提供するが、ソフトウェアの更新の複雑性を増大させる。代替的に、ブート・イメージ自体がトラステッド・デバイスに保存されてもよい。これはブートローダの保全性を確実にするが、トラステッド・デバイスにおけるより多くの記憶装置を必要とし、加えて実際にはより頻繁な更新を必要とする。
デバイス10には、好ましくはスクリーンと、要求を承認または拒絶する手段とが備えられる。よってユーザは、ブートローダもしくはキーまたはその両方が利用可能にされるべきであることを確認するように促されてもよい。その環境は2つのホストOS111−1、111−2からなり、その一方は家庭(ホーム)用、他方は企業用である。しかし、(雇用者によって提供される)デバイス10が存在するときには、第2のOS111−2のみが起動可能である。もしホームOSがマシン101の第2のディスクに新たなOSをインストールすれば、これはトラステッド・デバイスによって起動可能にならない。本スキームはトラストのチェーンを含み、ここではトラステッド・ブートローダ16が予め保存された情報または別様に取得可能な情報を通じてブート・イメージの保全性を確認し、さらにブート・イメージがユーザとの対話を通じて残りのOSの保全性を確認する。トラステッド・デバイスは、ブートローダ16と、たとえばハッシュ値またはキー、すなわち保全性チェック・データなどの何らかの付加的情報13とを保存することが要求される。それは数百キロバイトのデータに符号化されてもよく、めったに変化しないことが予期されてもよい。ディスクに存在するブート・イメージは、企業OSのカーネルならびにいくつかの有用なドライバおよびアプリケーションを含む。それは数十メガバイトに符号化されてもよく、かつカーネルおよび重要なライブラリがパッチされる必要があるたびに変化することが予期されてもよい。これらのコンポーネントの更新はリモートに行われる。ステップS8において、ブート・イメージが実行される。トラステッド企業環境111−2eが実行されるとき(ステップS11)、それらのコンポーネントが最新のものであるか、最新のものでない場合はそれらが変更され得ないかを確認してもよい。
好ましい実施形態においては、全従業員に単一の一意のイメージが配置され得るように、雇用者のホストOS111−2は従業員によって変更不可能であり、これによってセキュリティが高められ、かつシステムの更新が単純化される。次いで、企業ホストOS111−2は、従業員に割り当てられた企業VMを安全に実行するための単純な手段となる。このVMは、それが実行するソフトウェアに関して従業員に対してカスタマイズされてもよく、かつ通常のデスクトップ・マシンと同じやり方でユーザによって変更されてもよい。そのマシンが家庭用に用いられるとき、マシンは単純にオンにされて、対応するディスクまたはディスク区画を起動する。そのマシンが会社用に用いられるとき、会社から供給されたトラステッド・デバイス10がユーザによって挿入される。ファームウェアは、このデバイスに保存されたブートローダをメモリに読込み、このブートローダはディスクに保存されたブート・イメージを読取り、かつその保全性をテストする。もしブート・イメージが完全であれば、次いでブート・イメージは、会社ホストOSの暗号化ルート・ファイル・システムをマウントする。次いでVMはこのファイル・システムのファイルとして保存され、次いで実行されてもよい、ステップS12。
企業VMは企業ホストOSにおいて実行されるため、会社は、任意のOSが適切な仮想マシン・マネージャを支援してさえいればそれをホストOSとして自由に選択できる。たとえば、企業VMはウィンドウズ(R)7デスクトップ・マシンであってもよく、一方で企業ホストOSはリナックス(Linux)(R)であってもよい。
好ましい実施形態において、ホストOS111−2は明示的なブート・イメージBIを支援する。そうでない場合は、イメージが作成されるときに実行されるイメージ生成フェーズを用いてOSからブート・イメージが抽出されてもよいし、別のOSがブート・イメージとして使用されてもよい。
ブートローダには付加的な機能がさらに提供されてもよく、それらの機能は、マシン101が単一のディスク120を有し、ホームOSおよび企業OSの両方がこのディスクを共有するときに特に有利である。企業OSの起動プロセスの間にホームOSを変更しないためには、ディスクのどこに企業OSが位置するかをブートローダから認識できる必要がある。通常この情報は、ディスクの最初の区画テーブルに保存されているが、これは次いでホームOSから通知され得るために、本発明の状況においては容認できない。代わりにブートローダは、ディスクの最初に見出されるホームOSの区画テーブルを読取って、ホームOSがディスク上でどれほどのスペースを取っているかを算出する(本質的に、ホームOSのサイズは既存の区画によってカバーされたディスクの部分である)。次いでブートローダは、ディスク上のホームOSの後のセクタから企業OSが始まることが見出されるものと想定して、企業OSを位置付ける(ステップS6)。ブートローダは前述のハッシュ機構を用いて、企業OSのブート・イメージの保全性をチェックし(ステップS7)、起動のためにそれをメモリにロードする、ステップS8。ブート・イメージは、企業OSディスク内の何らかの予め定められた位置に保存される。
加えて、企業OSが自身のディスク(すなわちそれが使用するディスクの部分)を見出して起動を続けるために、起動プロセスはより効果的に実際の物理ディスク120の上にオーバーレイ・ディスク120oを構築し(ステップS10a〜c)、それによってネイティブ・ホームOSに使用されるディスクの部分をマスクする。これを行うために、起動プロセスはネイティブ区画テーブルを読取り(S10a)、オーバーレイ・ディスクがネイティブOSによって使用される最終セクタの後のセクタから始まりかつディスクの端部まで続くように、オーバーレイ・ディスクを構築する(S10c)。企業OSを保存するためにディスク上の十分な空きスペースが利用可能となるように、ユーザはネイティブOSの区画を縮小させたものと想定する。ネイティブOSは、企業OSが使用するスペースのことを、自身の使用範囲の外側の単なる空きスペースとして認識する。さもなければ、ネイティブOSは企業OSの存在をまったく知らない。企業OSのすべてのトレースを除去するためには、この空きスペースを取り戻すことで十分である。オーバーレイ・ディスクの構成によって、実行時の企業OSは、自身がディスク全体を有するものと信じている。オーバーレイ・ディスクの構成は図5に示される。
限られた数の実施形態、変形および添付の図面を参照して本発明を説明したが、本発明の範囲から逸脱することなく、さまざまな変更が加えられてもよいし、同等物が置換されてもよいことが当業者に理解されるだろう。特に、所与の実施形態、変形において述べられるか、または図面に示される特徴(デバイスまたは方法の形)は、本発明の範囲から逸脱することなく、別の実施形態、変形または図面における別の特徴と組み合わされるか、または置き換えられてもよい。したがって、上記の実施形態または変形のいずれかに関して記載された特徴のさまざまな組み合わせが予期されてもよく、それらは添付の請求項の範囲内にとどまる。加えて、本発明の範囲から逸脱することなく、特定の状況または材料を本発明の教示に適合させるために、多くの微細な修正が加えられてもよい。したがって、本発明は開示される特定の実施形態に限定されず、本発明は添付の請求項の範囲内にあるすべての実施形態を含むことが意図される。さらに、上記において明確に触れられたもの以外の多くのその他の変形が予期され得る。たとえば、デバイス10は太陽電池またはあらゆるその他の好適なバッテリなどによって電力供給されてもよい。前に触れたとおり、本明細書に記載されるコンピュータ化された方法は、その主要な機能によって分類されている。すなわち、ブートローダをコンピュータ(101)に移し(ステップS4)、かつそこで実行させて(ステップS5)、第2のホスト・オペレーティング・システムの実行可能部分BIを位置付け(ステップS6)、かつそれを実行する(ステップS8)。これらの主要な機能はブートローダに割り当てられるものとして記載されている。しかし、これらの機能のうちの1つまたはそれ以上を各々が提供することが意図された2つまたはそれ以上のモジュールに分散された同じ機能によって、本発明の実施形態が同等に説明され得る。
10 ユーザ・トラステッド・デバイス
11 セキュア・デバイスのCPU
12 接続インタフェース
14 永続的メモリ
16 ブートローダ/起動イネーブル・データ構造
30 サーバ
100 一般的コンピュータ・システム
101 ホスト・コンピュータ
105 プロセッサ
110 メモリ
111 オペレーティング・システム(OS)
115 メモリ・コントローラ
120 物理記憶媒体(物理ディスク)
120−1 物理記憶媒体120の第1の部分
s1 物理記憶媒体の第1の部分のサイズ
ls1 物理記憶媒体の第1の部分の最終セクタ
120−2 物理記憶媒体の第2の部分
fs2 物理記憶媒体の第2の部分の第1のセクタ
122 ホスト・コンピュータのファームウェア(BIOS)
124 ネットワーク・カード
125 ディスプレイ・コントローラ
130 ディスプレイ
141 セキュア・メモリ
142 非セキュア・メモリ
145 I/Oデバイス(または周辺装置)
150 キーボード
155 マウス
161 ブートローダの第1の部分
162 ブートローダの第2の部分
165 ネットワーク

Claims (15)

  1. ユーザ・ポータブル・デバイス(10)であって
    コンピュータ(101)との接続(S2)を可能にする接続インタフェース(12)と、
    永続的メモリ(14)と、
    前記永続的メモリ(14)のセキュア・メモリ(141)に保存されたブートローダ(16)とを含み、
    前記ブートローダ(16)は、
    前記接続インタフェースを介した前記デバイス(10)と前記コンピュータ(101)との接続(S2)の際に、前記コンピュータ(101)のファームウェア(122)によって検出可能(S3)であり、かつ
    前記ファームウェア(122)が前記ブートローダ(16)を以後の実行(S5)のために前記コンピュータ(101)のメモリ(121)にロードする(S4)ための命令と、
    前記コンピュータ(101)における実行の際に前記ファームウェアと対話することによって、
    第1のホスト・オペレーティング・システム(111−1)および第2のホスト・オペレーティング・システム(111−2)をそれぞれ第1の部分(120−1)および第2の部分(120−2)に保存する前記コンピュータ(101)の物理記憶媒体(120)において、前記物理記憶媒体の区画情報(111−1p)から前記第2の部分(120−2)を定めることであって、前記区画情報は前記第1のホスト・オペレーティング・システムは知らせるが前記第2のホスト・オペレーティング・システムは知らせない、定めることと、
    前記第2の部分(120−2)内の前記第2のホスト・オペレーティング・システム(111−2)の一部分(ブート・イメージ:BI)を位置付けることと、
    前記部分(BI)を実行することによって、前記ホスト・オペレーティング・システムのうち前記第2のものだけが前記ユーザ・ポータブル・デバイス(10)から起動し得る(S6〜S8)ようにすることとを行うための命令とを含む、ユーザ・ポータブル・デバイス(10)。
  2. 前記ユーザ・ポータブル・デバイスはさらに、前記セキュア・メモリ(141)に保存された保全性チェック・データ(13)を含み、前記ブートローダはさらに、前記保全性チェック・データ(13)に基づいて前記部分(BI)の保全性をチェックする(S7)ように構成される、請求項1に記載のユーザ・ポータブル・デバイス(10)。
  3. 前記ブートローダ(16)は、前記部分の内容をハッシュし、結果として得られたハッシュ値を前記保全性チェック・データ(13)に対してチェックすることによって前記第2のホスト・オペレーティング・システム(111−2)の前記部分(BI)の前記保全性をチェックするように構成される、請求項2に記載のユーザ・ポータブル・デバイス。
  4. 前記ブートローダはさらに、前記コンピュータ(101)における実行の際に、前記物理記憶媒体に保存される、前記第1のオペレーティング・システムによって使用される最終セクタ(ls1)の後、直後に始まる前記物理記憶媒体(120)の所与のセクタ(fs2)から前記部分(BI)を探索することによって、前記部分(BI)を位置付けるように構成される、請求項1から3のいずれか1項に記載のユーザ・ポータブル・デバイス(10)。
  5. 前記ブートローダはさらに、前記コンピュータ(101)における実行の際に、前記物理記憶媒体の区画情報(111−1p)に基づいて前記第1の部分のサイズを算出し、かつどのセクタ(ls1)が前記第1のオペレーティング・システムによって使用される前記最終セクタであるかを推定するように構成される、請求項4に記載のユーザ・ポータブル・デバイス(10)。
  6. 前記ブートローダはさらに、前記コンピュータ(101)における実行の際に、
    前記所与のセクタ(ls1)と、
    前記第2の部分(120−2)に保存された前記第2のホスト・オペレーティング・システム(111−2)内の前記部分(BI)の相対的位置(rl)のデータと
    に基づいて、間接的に前記部分(BI)を位置付けるように構成される、請求項5に記載のユーザ・ポータブル・デバイス(10)。
  7. 前記ブートローダはさらに、前記コンピュータ(101)における実行の際に、前記第1のホスト・オペレーティング・システム(111−1)によって占有された前記物理記憶媒体の部分をマスクするために、前記物理記憶媒体(120)の上にオーバーレイ・ディスク(120o)を構築させる(S10a〜b)ように構成され、前記オーバーレイ・ディスクは、前記物理記憶媒体によって支えられた物理記憶媒体のソフトウェア表現であり、
    前記ブートローダはさらに、前記コンピュータ(101)における実行の際に、前記オーバーレイ・ディスクが前記第1のホスト・オペレーティング・システムによって占有された最終セクタの後、直後の前記物理記憶媒体のセクタから始まるように前記オーバーレイ・ディスクを構築させるように構成される、請求項1から6のいずれか1項に記載のユーザ・ポータブル・デバイス(10)。
  8. 請求項1から7のいずれか1項に記載のユーザ・ポータブル・デバイス(10)と、前記接続インタフェース(12)を介して前記ユーザ・ポータブル・デバイスを接続可能な前記コンピュータ(101)とを含むシステム(1)であって、前記コンピュータ(101)は、前記第1の部分および第2の部分にそれぞれ保存された前記第1のホスト・オペレーティング・システム(111−1)および前記第2のホスト・オペレーティング・システム(111−2)を有し、前記コンピュータの前記物理記憶媒体の区画情報は、前記第1のホスト・オペレーティング・システム(111−1)は知らせるが前記第2のホスト・オペレーティング・システム(111−2)は知らせない、システム。
  9. 前記第2のホスト・オペレーティング・システムの前記部分(BI)が非暗号化ブート・イメージであり、当該部分(BI)は、
    前記第2のオペレーティング・システムのカーネル、および
    前記コンピュータを起動する際に関与するソフトウェアのみを含む、請求項8に記載のシステム。
  10. 請求項8または9に記載のシステムにおいてコンピュータ(101)を起動する方法であって、前記方法は、前記ユーザ・ポータブル・デバイスと前記コンピュータ(101)との接続(S2)の際に、
    前記コンピュータ(101)の前記ファームウェア(122)によって前記ユーザ・ポータブル・デバイス(10)の前記ブートローダ(16)が検出される(S3)ようにすることによって、前記ファームウェアに対する前記ブートローダ(16)の命令に従って、前記ブートローダが前記コンピュータ(101)に移って(S4)前記コンピュータ(101)において実行する(S5)ことによって、
    前記第2のホスト・オペレーティング・システムが起動し、かつ前記ホスト・オペレーティング・システムのうち前記第2のものだけが前記ユーザ・ポータブル・デバイス(10)から起動し得る(S8〜S11)ように、
    前記第2のホスト・オペレーティング・システム(111−2)の一部分(BI)を位置付けし(S6)、かつ実行する(S8)ステップを含む、方法。
  11. 前記第1のホスト・オペレーティング・システム(111−1)によって占有された前記物理記憶媒体の部分をマスクするために、前記物理記憶媒体(120)の上にオーバーレイ・ディスク(120o)を構築するステップ(S10a〜b)であって、前記物理記憶媒体(120)は物理ディスクであり、前記オーバーレイ・ディスクは前記物理記憶媒体によって支えられた物理記憶媒体のソフトウェア表現である、ステップと、
    構築された前記オーバーレイ・ディスク(120o)において前記第2のホスト・オペレーティング・システム(111−2e)を実行するステップ(S11)と、
    実行中の前記第2のホスト・オペレーティング・システム(111−2e)においてソフトウェア(112)を実行するステップ(S12)と
    をさらに含む、請求項10に記載の方法。
  12. 前記オーバーレイ・ディスクを構築するステップの前に、
    前記物理記憶媒体(120)の区画情報(111−1p)を読取るステップ(S10a)と、
    前記区画情報から、前記物理記憶媒体における前記第1のホスト・オペレー
    ティング・システムによって占有された第1の部分のサイズ(s1)を算出することによって、前記物理記憶媒体のどこに前記第2のホスト・オペレーティング・システム(111−2)が位置するかを推定するステップ(S10b)と、
    前記オーバーレイ・ディスクが
    前記第1のホスト・オペレーティング・システムによって占有された最終セクタ(ls1)の後、直後の前記物理記憶媒体のセクタ(fs2)から始まり、かつ
    前記物理記憶媒体の端部まで続く
    ように前記オーバーレイ・ディスクを構築するステップ(S10c)と
    をさらに含む、請求項11に記載の方法。
  13. 前記第2のホスト・オペレーティング・システムにおいてソフトウェアを実行するステップはさらに、
    前記第2のホスト・オペレーティング・システム(111−2e)において仮想マシン(112)をゲスト・オペレーティング・システムとして実行するステップ(S12)を含み、前記ゲスト・オペレーティング・システムは実行可能環境をカプセル化する、請求項11または12に記載の方法。
  14. 前記第1のホスト・オペレーティング・システム(111−1)は個人のオペレーティング・システムであり、
    前記第2のオペレーティング・システム(111−2)は企業のオペレーティング・システムであり、
    前記仮想マシン(112)を実行するステップの結果として、所与のユーザに属するデスクトップを表示するステップが得られる、請求項13に記載の方法。
  15. 請求項10〜14の何れか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
JP2015547211A 2012-12-14 2013-11-26 「ブリング・ユア・オウン」管理のための起動機構 Expired - Fee Related JP6095796B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1222584.3A GB2508895A (en) 2012-12-14 2012-12-14 Bootloader for booting a computer into a second operating system that is hidden from a first host operating system
GB1222584.3 2012-12-14
PCT/IB2013/060409 WO2014091344A1 (en) 2012-12-14 2013-11-26 Boot mechanisms for 'bring your own' management

Publications (2)

Publication Number Publication Date
JP2015537323A JP2015537323A (ja) 2015-12-24
JP6095796B2 true JP6095796B2 (ja) 2017-03-15

Family

ID=47630747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015547211A Expired - Fee Related JP6095796B2 (ja) 2012-12-14 2013-11-26 「ブリング・ユア・オウン」管理のための起動機構

Country Status (5)

Country Link
US (1) US9721102B2 (ja)
JP (1) JP6095796B2 (ja)
CN (1) CN104871174B (ja)
GB (1) GB2508895A (ja)
WO (1) WO2014091344A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201525858A (zh) * 2013-12-31 2015-07-01 Ibm 基板管理控制器與其韌體載入方法
GB2525409B (en) 2014-04-24 2016-11-02 Ibm Enabling an external operating system to access encrypted data units of a data storage system
US9672361B2 (en) * 2014-04-30 2017-06-06 Ncr Corporation Self-service terminal (SST) secure boot
CN107544925B (zh) * 2016-06-24 2020-05-08 爱思开海力士有限公司 存储器系统及加速引导时间的方法
CN107273769A (zh) * 2017-07-11 2017-10-20 北京洋浦伟业科技发展有限公司 一种电子设备的保护方法和装置
CN108804034B (zh) * 2018-05-22 2021-03-02 上海鲲鲸云股份有限公司 一种基于读写分离的云终端处理方法及系统
US11200066B2 (en) * 2018-05-30 2021-12-14 Ncr Corporation Secure device for bypassing operating system (OS) security
CN109997140B (zh) * 2018-09-10 2023-03-24 深圳市汇顶科技股份有限公司 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备
EP3620944B1 (en) * 2018-09-10 2023-06-07 Shenzhen Goodix Technology Co., Ltd. Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device
US11574055B2 (en) * 2018-09-27 2023-02-07 Landis+Gyr Innovations, Inc. Validation and installation of a file system
JP7428049B2 (ja) * 2020-03-30 2024-02-06 大日本印刷株式会社 デバイス、セキュアエレメント及びデバイスのセキュアブート方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1274009A3 (en) * 2001-07-03 2003-12-03 Hewlett-Packard Company System and method to enable a legacy BIOS system to boot from a disk that includes EFI GPT partitions
CN1261869C (zh) * 2002-02-08 2006-06-28 联想(北京)有限公司 计算机单功能模式的启动方法
JP2003345654A (ja) * 2002-05-23 2003-12-05 Hitachi Ltd データ保護システム
TWI220955B (en) * 2003-03-11 2004-09-11 Acer Inc Computer system being operated under multiple operation modes and operation method thereof
KR100673681B1 (ko) * 2004-03-25 2007-01-24 엘지전자 주식회사 개인용 컴퓨터에서의 인스턴트 온 기능 실행방법
JP2006301771A (ja) 2005-04-18 2006-11-02 Toshiba Corp 情報処理装置および動作制御方法
JP4767129B2 (ja) * 2006-08-17 2011-09-07 株式会社エヌ・ティ・ティ・ドコモ Os切替装置及びos切替方法
US7721078B2 (en) * 2006-10-31 2010-05-18 Dell Products, Lp Method and system to dynamically boot to a non-visible partition
CN101222697A (zh) * 2007-01-09 2008-07-16 上海晨兴电子科技有限公司 使用移动终端作为计算机扩展应用的实现方法
US8171275B2 (en) * 2007-01-16 2012-05-01 Bally Gaming, Inc. ROM BIOS based trusted encrypted operating system
JP2008234220A (ja) * 2007-03-19 2008-10-02 Ricoh Co Ltd 情報処理装置、ソフトウェア起動方法及び画像処理装置
JP2009043133A (ja) * 2007-08-10 2009-02-26 Hitachi Software Eng Co Ltd 情報処理装置
US9003173B2 (en) 2007-09-28 2015-04-07 Microsoft Technology Licensing, Llc Multi-OS (operating system) boot via mobile device
KR101288700B1 (ko) * 2008-03-14 2013-08-23 미쓰비시덴키 가부시키가이샤 멀티 오퍼레이팅 시스템(os) 기동 장치, 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
CN101751519B (zh) * 2008-12-09 2013-01-02 纬创资通股份有限公司 提升一计算机系统的信息安全的方法及其相关计算机系统
US20110112819A1 (en) 2009-11-11 2011-05-12 Sony Corporation User interface systems and methods between a portable device and a computer
JP5250573B2 (ja) * 2010-02-08 2013-07-31 株式会社日立製作所 シンクライアントマスタの書換システム、およびシンクライアントマスタの書換方法
JPWO2011145199A1 (ja) 2010-05-20 2013-07-22 順子 杉中 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム
US8578443B2 (en) 2011-06-01 2013-11-05 Mobileasap, Inc. Real-time mobile application management

Also Published As

Publication number Publication date
CN104871174B (zh) 2017-06-13
JP2015537323A (ja) 2015-12-24
CN104871174A (zh) 2015-08-26
GB201222584D0 (en) 2013-01-30
US9721102B2 (en) 2017-08-01
US20150332050A1 (en) 2015-11-19
WO2014091344A1 (en) 2014-06-19
GB2508895A (en) 2014-06-18

Similar Documents

Publication Publication Date Title
JP6095796B2 (ja) 「ブリング・ユア・オウン」管理のための起動機構
US10318724B2 (en) User trusted device for detecting a virtualized environment
US9176752B1 (en) Hardware-based mechanisms for updating computer systems
JP5970141B2 (ja) コンピュータでソフトウェア・モジュールを実行するための方法、ブートローダ、ユーザ信頼デバイス、およびシステム
US9256442B2 (en) Network updatable user trusted device
US10055593B2 (en) Updating processor microcode
US20180046809A1 (en) Secure host operating system running a virtual guest operating system
TWI734379B (zh) 用於使用初始程式載入機制啟動安全客體之電腦實施方法、電腦系統及電腦程式產品
EP2859438A1 (en) Operating system
WO2020183278A1 (en) Transparent interpretation of guest instructions in secure virtual machine environment
EP3935494B1 (en) Inject interrupts and exceptions into secure virtual machine
JP7388804B2 (ja) セキュア仮想マシンのディスパッチ
US9940461B2 (en) Enabling an external operating system to access encrypted data units of a data storage system
US20180089415A1 (en) User trusted device for detecting a virtualized environment
GB2508892A (en) Updating a trusted device by booting update software and downloading the update over a network

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170214

R150 Certificate of patent or registration of utility model

Ref document number: 6095796

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees