JP2009521020A - 高リスクアプリケーション用の実用的プラットフォーム - Google Patents

高リスクアプリケーション用の実用的プラットフォーム Download PDF

Info

Publication number
JP2009521020A
JP2009521020A JP2008544001A JP2008544001A JP2009521020A JP 2009521020 A JP2009521020 A JP 2009521020A JP 2008544001 A JP2008544001 A JP 2008544001A JP 2008544001 A JP2008544001 A JP 2008544001A JP 2009521020 A JP2009521020 A JP 2009521020A
Authority
JP
Japan
Prior art keywords
component
operating system
network
computer
system environment
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.)
Pending
Application number
JP2008544001A
Other languages
English (en)
Inventor
アロン アール. スワーツ,
リラツ シリ,
Original Assignee
アロン アール. スワーツ,
リラツ シリ,
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 アロン アール. スワーツ,, リラツ シリ, filed Critical アロン アール. スワーツ,
Publication of JP2009521020A publication Critical patent/JP2009521020A/ja
Pending legal-status Critical Current

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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • 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

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)
  • Storage Device Security (AREA)

Abstract

本発明は、高リスクアプリケーションに対して安全で、信頼でき、使いやすい実用的なプラットフォームを提供するために、使い勝手を最大にしながらセキュリティに優先順序を付けるように設計されている、既成の独立したオペレーティングシステム環境を含み、コンピュータを起動できる携帯可能な装置である。本発明の一つの実施例は、軍レベルのセキュリティの強固さと同等のデジタル方式のターンキー型機能ソリューションを内包し、普通のコンピュータを一時的に安価な論理装置に変えることができる。これにより、既存のハードウェアを手軽に活用して、人数が少なく高価なシステムインテグレーション並びにセキュリティ専門家の現場作業に依存せずに済む自給型システムを提供することができる。

Description

発明の属する分野
本発明は、コンピュータ、コンピュータセキュリティ、およびオンライン処理のセキュリティに関するものである。特に本発明は、上で実行しているアプリケーションに対してセキュリティを提供するプラットフォームに関するものである。
関連技術
セキュリティはコンピュータシステムの共通の目標である。不幸にしてコンピュータセキュリティの現在の状況は、厳密な科学や工学の一分野というよりは、むしろ黒魔術に近い。当業者の間でさえ、この分野を巡って混乱が広がっている。コンピュータセキュリティの本質に関する基本的な理解に代わり、誤解や半端な真実が広まっている。
こうした混乱の実際面での影響として、現実世界のコンピュータシステムは一般に攻撃に対する耐性が低くなっている。
このため、問題、従来技術、および本発明をより良く理解するために、コンピュータセキュリティとは何かを説明する必要がある。
セキュリティは、脆弱性の逆と定義される。コンピュータセキュリティの目的は、コンピュータシステムのデータ、リソースおよびサービスの機密性、完全性および有効性を防御することである。これは、コンピュータシステムの攻撃への脆弱性を軽減することで達成される。
コンピュータシステムの安全性が不十分なときは、攻撃者は機密データに無許可にアクセスし、何らかの方法(たとえば、バックドアを埋め込む)で機密データを変更してシステムの完全性を乱し、あるいはコンピュータシステムが提供するサービスやリソースの有効性に干渉し得る。
無許可のアクセスは名が示す通り、望まれていないアクセスであるため、攻撃者の目的は、ゼロサム式に防御(システムの正規ユーザ)側の目的と直接対立する。
機能コンポーネントのようにセキュリティを既存システムに簡単に追加するにあたり、セキュリティの本質が妨げになっているということは明らかである。セキュリティはシステム全体の総体的創発特性である。セキュリティは、基盤から慎重に構成される必要があり、システムのセキュリティアーキテクチャ、プラットフォームの選択、コンポーネント、部分がどのように統合されるか、どのように組み立てられるか、そしてシステムが結局はどう使われるのかにかかっている。
いずれのコンピュータシステムのセキュリティも相対的であり、防御側の目的と対立する攻撃者の目的の達成がいかに困難であるかに基づき測定することができる。
最少攻撃コスト
ある特定の攻撃に消費される全てのリソース(時間、専門的労働力、装置、資金など)の合計を攻撃コストと呼ぶ。
セキュリティアーキテクチャは相互に依存性をもつことがある。この場合に、セキュリティは鎖のようであると言われ、鎖全体の強さは、中の最も弱い輪によって決まる。
たとえば、オンライン銀行取引を考えてみる。最高レベルでは、銀行のシステム、暗号化されたトランスポート層、PCを使って銀行取引を行うエンドユーザ等のクライアントサイドという相互依存する3つのセキュリティのリンクがある。
当然ながら、資金を盗むためにオンライン銀行取引を阻害する攻撃者は、彼の悪意ある目的を遂行するための最も容易な方法を探す。
第一のリンクである銀行システムは、通常、数百万ドルの価値のある、装置、専門的なセキュリティコンサルタント会社や模擬侵入テストで十分に防御されている。
第二のリンクであるトランスポート層は、ほとんど解読不能な暗号法で暗号化されている。
第三のリンクであるクライアントサイドは、おそらく、オンラインバンキングのような高リスクアプリケーションを意図していないメインストリームオペレーティングシステム環境を持つPCを使っている。さらに、このPCは、通常、セキュリティ専門家ではない誰かによってインストールされ、設定され、保守され、そして操作されている。おそらく脅威を理解さえしていないこの誰かは、脅威に対する防御に必要な技術やリソースを持っていないことは確実である。
この例では、クライアントサイドに対する攻撃が、通常、銀行システムや暗号化されたトランスポート層に対する攻撃よりもはるかに易しいため、クライアントサイドがチェーンの中で最も弱いリンクとなる。
クライアントサイドへの攻撃を選択する結果、攻撃コストはより少なくなる。
任意の悪意のある目的とコンピュータシステムに関する最小攻撃コストとは、コンピュータシステムに対する悪意ある目的を遂行するための最も容易で、最も費用のかからない経路(すなわち、最小コスト経路)のコストをいう。
攻撃者の知識レベル、位置(内部者対外部者)および自由に使えるリソースは多様である。
ここで注意したいのは、最小攻撃コストは、時間、攻撃者の位置、および攻撃者が自由に使えるリソースによって大きく異なることである。たとえば、都合の良い立場にある内部攻撃者に比較して、外部の攻撃者がコンピュータシステムのセキュリティを破ることははるかに困難に(つまり、最小攻撃コストがはるかに高く)なり得る。同様に、コンピュータシステムに使われているソフトウェアの脆弱性が修復前に攻撃者に知られると(例えば、情報公開や裏社会で口を滑らすなど)、最小攻撃コストは、突然下がるかもしれない。
安全なシステムの定義
抽象的な経済学の表現では、最小攻撃コストが攻撃者の思い通りに出来るリソースよりも高いか、システムをうまく侵害することにより攻撃者が得る価値よりも高いとき、システムは安全であると言うことができる。
たとえば、機密情報を盗む目的でコンピュータシステムを侵害するのに数百万ドルを使うことや、攻撃者に百万ドル未満の価値しかない取引を行うことは、攻撃者にとって経済的に意味がないことになる。
その上、たとえ成功する攻撃の成果が最小攻撃コストよりも高い価値を持つとしても、攻撃コストが潜在的脅威を及ぼす者の資力を超えている限りは、システムはまだ安全である。したがって、もし仮に貴方が侵害するには少なくとも1億ドルのコストがかかる安全な施設に保存されている10億ドルの価値を持つ資産を持っているとした場合に、攻撃コストが潜在的攻撃者の資力を超えている限りは、資産は安全である。
実際には、最小攻撃コストやどのような攻撃者にとっての侵害の採算性、あるいは潜在的攻撃者にとって思い通りになるリソースとは何かに関して、精度の高い定量的な推計を行うことは難しい。
システムのセキュリティを分析するには、このように相当な規模の定量的判断が要求される。専門家は概算の推計に対して確率を割り当て、誤差の範囲を大きめにとらなければならない。
セキュリティの脆弱性の原因
コンピュータシステムが脆弱である理由は第一に、コンピュータシステムが非常に複雑で不完全な構造を持ち、且つ十分にそれらを理解していない人間によって作り出されて使用されていることにある。
セキュリティの脆弱性は、要求されるものと実際のものとの間の差異に起因する。
コンピュータの動きは、コンピュータが実行するソフトウェアコンポーネントによって制御される。コンピュータシステムのセキュリティは、ソフトウェアコンポーネントがどのように設計され、導入され、互いに統合され、組み立てられ、使用されるか、そして結果として生じたシステムに係るセキュリティ目的に関し求められている動作と当該システムの実際の動作との整合性がどれだけ密接にとれているかによって決まる。
問題の大部分はソフトウェアの本質による。
ソフトウェアは、相互に作用する部分の大多数(たとえば、ルーチン、オブジェクト、ライブラリ)が個々にユニークであるという意味で、ほぼ間違いなく人間による創造物の中で最も複雑な部類に属する。理由は、任意に与えられたソフトウェアタスクに対して一度だけソリューションを開発し、当該ソリューションを必要とする他の部分において当該ソリューションを具体化するソフトウェア部分を呼び出すことにより、当該ソリューションを必要とする場所で再利用することが最も効率的であるためである。この原理を順守しないソフトウェアはプログラミングの質が悪く、再分解が必要と考えられる。
これに対して、ハードウェアは、仕様は多少異なるが、一般的に生産と運用原理は標準的である同一部品あるいは類似部品のグループを組み合わせて設計される(例:ホイール、スプリング、ネジ、ギア)。
ソフトウェアは、ソフトウェア工学と呼ばれる多層の工程で、ある定義済みの目的を満足するために作成される。
ソフトウェアはコンピュータシステムの運用にとって非常に重大であるため、セキュリティの脆弱性が何に起因するのか、そしてセキュリティの脆弱性の対策として何ができるかを理解するために、ソフトウェアがどのように作成されるのかを一般論として理解する必要がある。
最上位レベルでは、ソフトウェア工学はしばしば目的を抽象的なシステムアーキテクチャ(ソフトウェアシステムの基本部分とそれらの相関関係を記述するもの)に翻訳する設計プロセスから始まる。
次のレベルでは、アーキテクチャはアーキテクチャとインプリメンテーションの間の差異を埋める仕様に翻訳される。この仕様は、プログラマーが意図された目的(通常は機能要求)を満足するようにソフトウェアをインプリメントできるレベルの詳細さで、コンポーネント、機能、インターフェース、および相互作用を記述したものである。
最下位のレベルでは、プログラマーは仕様の各コンポーネントをコンピュータ言語による命令(コード)に翻訳してソフトウェアをインプリメントし、当該命令は、コンピュータが実行できる最下位のネイティブあるいは仮想のマシンコードに自動的にコンパイルされる。
残念ながら、ソフトウェア工学プロセスの各段階で行われる翻訳は、ソフトウェアロジックに特有の複雑さと、この複雑さを十分に理解する上での人間の知能の限界により、不完全である。人間には一度に記憶にとどめることのできる量に限界があり、しばしばソフトウェアプロジェクトを細分化し、個々の部分を別々の人間に割り当てる必要がある。
不完全な翻訳は、望んでいることと実際の結果の間に、各レベルで差異が生じる。
工学プロセスの全てのレベルで生じた差異が合わさり、任意の状況の中で、ソフトウェアに求められる動作と実際の動作との間に著しい差異を生む結果となる。
これは、多くのプログラミングプロジェクトが完全に失敗する理由であり、プログラマーが一般に、新しいコードを書くより誤動作しているコードのデバッグ作業に大部分の時間を割く理由になっている。
デバッグ作業は、望む動作内容と比較しながらソフトウェアが結果として行う機能的な動作をテストするプロセスである。デバッグ作業はしばしば反復されるがこうして、ソフトウェアは使うに足りる信頼性を持つに至るのである。
しかし、デバッグ作業による検証が可能なのは機能要件のみであり、セキュリティ要件は検証できない。プログラムが全ての機能要件を満足できても、あるシナリオにおける攻撃には依然として脆弱である可能性がある(つまり安全ではない)。
機能要件の肯定確認は可能であるが、脆弱性の欠如を肯定的に確認することはできない。これは、あるプログラムが脆弱であると証明することはできても、それが安全であると証明することは不可能であることを意味する。
セキュリティを検証する唯一の方法は、自ら攻撃者の役割を演じ、システムの実際動作の意図しない面を悪用してシステムを欺き不当なアクセスを得ようとする潜在的な攻撃者に匹敵する高度な知識とリソースをもって、システムの最も弱いリンクを繰り返し攻撃することである。
システムのセキュリティは、システムへの最少攻撃コストが増えた場合にだけ、改善されたと言うことができる。
防御側の役割は本来、攻撃者の役割よりも困難である。なぜなら、防御側のセキュリティ目的は、成功につながる全ての攻撃経路を見つけて塞ぐことであるのに対し、本物の攻撃者は、目的を達成するための経路をただ一つ必要とするだけだからだ。
これは、セキュリティ目的範囲において求められるものと現実との差異を狭めることをさらに複雑にしている。
差異の度合は、工学プロセスの方向性を定める機能目的によって決まる。
機能性対セキュリティ
機能目的とセキュリティ目的は必然的に対立的に働く。
この理由は、システムが満足させる必要のある機能目的が多くなればなるほど、システムが全ての工学レベルで持つ部分が増えるためである。
多くの部分を持つことはシステムの複雑性を増し、こうした部分間で可能な相互作用を全部理解することがさらに難しくなる。これは、求めるものと実際の結果の差異を広げる。
機能性よりもセキュリティを評価することの方が難しいために、システムが満足させようとする機能目的が増えるほど、セキュリティ目的を満足することがより難しくなる。
複雑性がシステムの相互に依存する部分の間で可能な相互作用全ての合計であると定義した場合、部分の追加によって相互作用の可能な組み合わせ、従って複雑性が、どのように指数関数的に増加するかを数学的に実証することが可能である。
こうした指数関数的に比例する関係は、システムに期待される機能性と同システムに対するセキュリティの与えられたレベル(最少攻撃コスト)を達成する困難さとの間に存在するのではないかと推測される。すなわち、機能性の増加は、同一レベルのセキュリティを達成する困難さ(あるいは関連づけられる価格)を明らかに指数関数的に増大させる。
繰り返すが、具体的な詳細はともあれ、1000行のソフトウェアプログラムは本質的に100万行のソフトウェアシステムよりもはるかに守りやすい。同様に、大きなコンピュータネットワークは小さなコンピュータネットワークよりも本質的に安全性の確保は難しい。
最少の部分を使って機能目的を遂行するようなシステムを設計し、さらに部分間の相互作用が最小限に抑えられるように可能な限り部分を独立させて結合すれば、システムの複雑性は緩和し、システムは理解しやすくなり、期待するものと現実の間の差異が減り、一般的にシステムは守りやすくなる。.
しかし、与えられたレベルの機能性には、避けることのできない最少対価としての複雑性が常に存在する。機能性を増加させれば、複雑性は必然的に増加する。
機能性とセキュリティの間のこの関係は、コンピュータセキュリティの核心において根本的に避けられない対立である。この関係を理解することは、従来技術の欠点と本発明の設計原理を理解するために重要となる。
米国特許第5,361,359 米国特許第5,307,497 米国特許第5,386,552 米国特許第5,596,718 米国特許第5,655,148 米国特許第5,720,033 米国特許第5,748,980 米国特許第5,787,246 米国特許第5,826,012 米国特許第5,832,228 米国特許第5,903,732 米国特許第5,949,973 米国特許第6,035,395 米国特許第6,134,616 米国特許第6,141,771 米国特許第6,161,176 米国特許第6,182,212 米国特許第6,289,462 米国特許第6,317,845 米国特許第6,347,375 米国特許第6,370,646 米国特許第6,546,404 米国特許第6,629,244 米国特許第6,748,538 Froscher, Kang, McDermott, Costich, Landwehr et al. "A Practical Approach to High Assurance Multilevel Secure Computing Service", Proc.10th Annual Computer Security Applications Conference, IEEE CS Press, ISBN 0-8186-6795-8, 1994, pp.2-11. Blakley, et al., "The Emperor’s Old Armor", Proc. of the New Security Paradigms Workshop, 1996. Baker, et al., "Fortresses Built Upon Sand", Proc. of the New Security Paradigms Workshop, 1996. Loscocco, Smalley, Muckelbauer, Taylor, Turner, Farrell, et al., "The Inevitability of Failure: The Flawed Assumption of Security in Modern Computing Environments", Proc. of the 21st Natl. Information Systems Security Conf., 1998, pp. 303-314. Schneier, Shostack, et al., "Breaking Up Is Hard to Do: Modeling Security Threats for Smart Cards", USENIX Workshop on Smartcard Technology, 1999. Rankin, et al., "Knoppix Hacks - 100 Industrial-Strength Tips and Tools" First Edition. ISBN: 0-596-00787-6, O’Reilly Media, Inc., 2004. Fox, Giordano, Stotler, Thomas, et al., "SELinux and grsecurity: A Case Study Comparing Linux Security Kernel Enhancements", 2004. Krahmer, et al., "Hardened OS exploitation techniques", 2004.
今日のコンピュータシステムに蔓延する不安感
今日のコンピュータシステムは、これらへの攻撃が有利かどうかは多様な潜在的攻撃者がとる手段次第であるために全般的に安全ではない。
コンピュータシステムへの攻撃の成功に関するマスコミの報道は共通して、これは単なる潜在的な問題ではなくなったと伝え、人々の認識は極めて少数の発覚した成功攻撃例のみに影響される。
実際には、コンピュータシステムのセキュリティは秘密裏に侵害できるため、大多数の攻撃の成功例は検知されない。それでも、極めて少数の攻撃例は発覚して氷山の一角が、報道を通じて国民一般の関心を引くことになる。
この危機の大きさは、最も多く広く報道されている数十億ドルの企業、政府および軍のネットワークのコンピュータシステムに対するセキュリティの侵害の多くが、退屈したティーンエイジャーにより行われているという事実がよく示している。セキュリティの侵害があまりに多発するために、セキュリティメカニズムを出し抜き、意のままにコンピュータシステムへ無許可のアクセスをするという殆ど魔力の域に達する能力を持つ、変わっていて超人類的な十代の「天才」ハッカーに関する神話が生まれている。
最も基本的な装置だけを使い、ほとんど資金も使わず、比較的単純なアマチュアが余暇に繰り広げる攻撃は、犠牲者側から見た攻撃の最少コストがどれほど低いかを考えて欲しい。
コンピュータシステムが広範囲にわたって安全でない主な理由は、コンピュータシステムが、セキュリティ以上に機能性を優先した汎用目的のプラットフォームの上に構築されていることから、セキュリティアーキテクチャーが弱いためである。
弱いセキュリティアーキテクチャーは、抵抗を最小限に抑え、利用可能範囲を最大限とするシステム設計の必然的な結果である。なぜならば、セキュリティと使い勝手は目指すものが必然的に相反するからである。セキュリティは、システムの機能性と柔軟性を制限しようとするのに対し、利用性はすべてのものをできるだけ容易に実現することを目指す。
使い勝手を優先すると必然的に複雑化し、プラットフォームの上に構築されたシステムについて有意レベルのセキュリティを施すことは非常に困難になる。
セキュリティを犠牲にした使い勝手の圧倒的な優先度は、両者間の認知度の相違とプラットフォーム開発過程における両者の重要度を相対させてきた歴史による。
つまり、市場の圧力は、消費者の最も認知し易い改善範囲に沿って開発の優先順位を付ける傾向を生む。
使い勝手はすぐに簡単に評価できるのに対し、不良なセキュリティ性能は、それが壊れ始めるまでは、目に見えない。
その上、今日の主流プラットフォームの中核をなす設計は、防ぐべき脅威の種類に関する様々な認識に導かれながら開発されたという歴史的背景がある。
たとえば、最も普及している消費者用オペレーティングシステムプラットフォームであるMicrosoft Windows XPは、Microsoft Windows NTとセキュリティアーキテクチャ及び大部分の生成発達過程を共有する。Microsoft Windows NT用のセキュリティアーキテクチャは、インターネットの広範な開発とそれに関連する脅威が開花する前に、設計されたものである。
同様に、インターネット自体のアーキテクチャは、元々、学術研究機関に対してネットワーク上の接続性を供給するという研究的背景の中で開発されたものである。当時はセキュリティにはほとんど関心が払われなかった。インターネットがゆくゆくは電子商取引のような高リスクアプリケーション用の標準的なグローバルネットワークのプラットフォームに発展するとは予期しなかったためである。
今日ではコンピュータシステムは、上に構築されたプラットフォームがもともと取り扱うように設計された内容をはるかに超えた厳しいネットワーク環境で生き残る必要がある。インターネット接続性は、システムを地球上の文字通り誰からの攻撃にもさらすが、これらのシステムをさらに広範囲でより危険な脅威の的となる高リスクアプリケーション用に使うようにと圧力が高まっている。
セキュリティアーキテクチャ
セキュリティアーキテクチャは、任意の攻撃戦略に対するセキュリティを定める要素のパターンである。
最も弱い要素を破壊すると全体のセキュリティ目的を破壊するほどセキュリティが依存する要素が相互に依存している場合には、セキュリティアーキテクチャは相互依存であると言われる。この意味で、相互依存型のセキュリティアーキテクチャはチェーン(最も弱いリンクの強度を持つ)、あるいはトランプの家(一枚のカードを引き出すと、全体構造が倒れる)のようである。
セキュリティアーキテクチャの相互依存型要素の場合、攻撃の最少コストは最も弱い要素を破壊するコストである。
現代のメインストリームプラットフォームは、明らかに弱いセキュリティで悩んでいる。なぜならば、使用性を優先する結果として自然と弱い相互依存のセキュリティアーキテクチャが出現するためである。
逆にセキュリティアーキテクチャは、要素が互いに独立してシステムのセキュリティに寄与するように構造化されれば、独立型となる。これは多層セキュリティアーキテクチャとも呼ばれる。
セキュリティアーキテクチャの個々に独立した要素に対する最少攻撃コストは、定められた攻撃戦略の範囲において有効な要素に対する攻撃コストの合計となる。
言い換えれば、もしコンピュータシステムのセキュリティ目的を侵害する攻撃者が一連の重複するセキュリティ障害物に打ち勝たなければいけないとしたら、セキュリティアーキテクチャは攻撃の領域で多層化される。これは、他の場所の潜在的失敗を埋め合わせる方法で、期待する動作を重複させて各層を強化するよう設計することにより実現する。
たとえばMAC (Mandatory Access Control:強制アクセス制御)は、多層セキュリティを実現するように設計されたオペレーティングシステムプラットフォームがサポートする共通セキュリティメカニズムである。MACは、MACポリシーと呼ばれる世界共通のルールに基づいて、どのプログラムがアクセス可能なリソースできるかすることが規制できる。
MACは、各プログラムの特権を、機能の実行に必要な最小限に注意深く制限することにより、プログラムが内部的にどのように実行されるかは関係なく、プログラムが騙されて実行する可能性のある対象を制限している。
注意深く構成されたMACポリシーは、個別プログラムに対する侵害がシステムの他の部分に与えるかもしれない潜在的な損害を隔離し、システムの完全性とセキュリティコントロールを改ざんから防御し、望まない動作とコンポーネント間の相互作用を起す可能性を減らしてシステムの複雑性を本質的に減少させる。
さらに、オペレーティングシステムにMACをインプリメントするソフトウェアは、それが制限するソフトウェアよりも何倍も複雑度が低く、システムの他の部分と単純明快に相互作用する。これにより理解しやすく、監査をしやすくなり、それゆえに、脆弱性の可能性は低くなる。
多層にわたり希望する動作を十分に独立させて強化することだけが、十分に複雑なシステムにおける高レベルのセキュリティを達成する現実的かつ有効な戦略である。
多層セキュリティは、ソフトウェアの単独層が、最終的に攻撃への抵抗に失敗する可能性を前提として機能する為、システムのセキュリティ目的を防御するに当たり他の層はこうした潜在的な失敗を補う準備を整えていなければならない。
こうした仮定をすることは必要である。前述のように、人間の知能には限界があるため、十分に複雑なソフトウェアを完全にインプリメントすることは不可能であり、結果 不完全なソフトウェアが成し得る現実の動作とソフトウェアのプログラマーとユーザが期待する動作との間に差異が生じるからである。状況によっては、攻撃者はこの差異を利用してソフトウェアを欺き、本来すべきでないあるいは期待されていない動作をさせることもあり得る。
ソフトウェアにおける複数の層は、集合的な効果として希望するセキュリティ目的を個別に強化することで、攻撃コストを大幅に高めることができる。
言い換えれば、多層化されたセキュリティは、信頼性に欠くソフトウェアから信頼できるセキュリティをもたらす唯一の現実的な戦略である。
これはまた失敗の必然性の原理と呼ばれ、国防軍事機関に認知されている。、多層化されたセキュリティをインプレメントする多くの仕組みはこれらの機関で最初に研究開発されており、多層化されたセキュリティアーキテクチャが今日もっとも一般的に利用されているのもこれらの機関である。
これは、軍事システムがしばしば防衛の対象とする脅威の大きさ、すなわち敵対する国家による脅威に相対しなければならず、失敗の代償が人命であることを考えれば、別段驚くことではない。
しかし、明らかに優れたセキュリティ性能を提供するにもかかわらず、多層化されたセキュリティアーキテクチャの現実での利用度は、元来目的のために開発された軍事的な環境においてさえも、驚くほど少ない。
多層化されたセキュリティの拡大普及を阻む数多くの要因が共同展開されている。
既に説明したように、セキュリティと使い勝手は目指すものが相反する。
限られた範囲の予算をコンピュータシステムのインプリメントに利用できる時、セキュリティを優先すれば、必然的に使い勝手、システムの機能性、柔軟性、および最高の有用性を犠牲にすることになる。
目標とするセキュリティ要件(すなわち、最少攻撃コスト)が高ければ高いほど、一定レベルの有用性を実現するコストも高くなる。
このことから、実際面においては、従来技術は安全なシステムの機能性を、軍事用管理統制、証券取引、およびオンラインバンキングのような極めて高いリスクアプリケーション(サーバー側)における特定の専門的タスクに対してのみに固定される傾向にあった。これらのタスクに固有の安全なシステムを仕上げるには、ハイエンドなセキュリティでの労働集約的な努力とシステムの専門家に頼る傾向があった。したがって、これらのセキュリティシステムは規模の経済から大きな利益を得ることは無く、法外に高価になった。
多くの利用方法において、非常に高価で柔軟性の欠けたタスク固有のコンピュータシステムはユーザが慣れ親しみ目下活用している安価で、ユーザーフレンドリーな汎用コンピュータに取って代わる見通しはない。
汎用の低リスクアプリケーションについてはうまく作動するシステムが、高リスクアプリケーションになると、十分なセキュリティを確保するためにはシステムを改変して、結果として既存の汎用コンピュータに期待される動作を犠牲にするという妥協を強いられるという事実を受け入れるのは、セキュリティの基礎的な理解なしには難しい。
優先順位を管理する意思決定者達は、この必要とされる妥協の対価を明確に理解していない。優先順位を実行している技術レベルにおいてさえも明確に理解されておらず、当然悪影響の犠牲となるユーザレベルにおいては言わずもがなである。
機能コンポーネントのようにセキュリティを既存システムに単純に追加するにあたり、セキュリティの本質が妨げになっているということは明らかである。セキュリティはシステム全体の総体的創発特性である。セキュリティは、基盤から上に向かって注意深く構築されなければならず、システムのセキュリティアーキテクチャ、プラットフォームの選択、コンポーネント、部分がどのように互いに統合されるか、部分がどのように構成されるか、システムが結局はどのように使われるかで決まってくる。
セキュリティアーキテクチャが相互に依存する限り、セキュリティが依存する要素のどれを強化しても、最小攻撃コストには目立った効果がない可能性がある。
たとえば、オンラインバンキングアプリケーションのセキュリティをもう一度考えてみよう。ハードウェア暗号化トークンを用いて銀行に対する認証の実施は、一般にパスワードを用いた認証より安全性は高い。そのため、いくつかの銀行は顧客にようなトークンを供与し始めた。
しかし、セキュリティはまた、ユーザに銀行へのインターフェースを供与するクライアント側のソフトウェアの完全性に依存する。クライアントの完全性が攻撃に対して脆弱である限りは、強力な認証も攻撃者による無許可の取引を防ぐことはできない。
侵害されたクラアイアントは、認証されたオンラインバンキングセッションへ無許可取引の要求を割り込ませるか、無許可取引の要求が起こったことさえ隠蔽するように再プログラムされる可能性がある。
プラットフォームの選び方次第で、システムがサポートできるセキュリティアーキテクチャが限定される。既に説明したように、現代のメインストリームプラットフォームはセキュリティ用に設計されていない。結果、システムを多層セキュリティ用に組み立てる際に有用なセキュリティメカニズムの多く、たとえば強制アクセス制御、をこうしたプラットフォームは通常はサポートしないという弊害がある。
本質的に弱いセキュリティメカニズム
その代わり、メインストリームプラットフォーム上に作られたシステムは、多くの場合本質的に弱い受動型セキュリティメカニズムであるパッチサイクル、アンチウイルスおよびアンチスパイウェアのソフトウェアに最も多く依存する。
パッチングサイクル
なぜパッチングが弱いセキュリティメカニズムであるのかを理解するには、セキュリティホールがどのようにして見つけられ、実際に利用されるかのかを理解する必要がある。
ソフトウェアを不完全にインプリメトすると、攻撃者がプログラムを欺いて望まない作業をさせることのできるセキュリティホールが生じる。
特定のセキュリティホールを悪用するルーチンをエクスプロイトと呼び、しばしばエクスプロイトプログラムとしてソフトウェア化されている。
セキュリティのパッチはインストールされると、ソフトウェアの動作を変更して、セキュリティホールが利用されるのを防ぐので、セキュリティホールの原因となる特定のソフトウェアの不完全さは少なくとも補修される。
セキュリティホールを発見し、利用の仕方を理解し、そしてプロセスを自動化するエクスプロイトプログラムを書くのは、技術と努力を要する。
現実問題として、多くのセキュリティホールとエクスプロイトルーチンは予想できる承知のパターンに従っているので、人が別な方法を使った場合に想像するほど達成は難しくはない。また、一部の仕事は各種の方法で自動化できるので、残りは、プロセスの異なる部分に専門化した人々のグル−プの間で容易に分けることができる。これはさらにセキュリティホールを発見し、エクスプロイトを開発するコストを引き下げる。
現代の侵入テストフレームワーク(Core Impact, Metasploit framework, Cortex - SecurityForest framework)が提供する、特に使いやすいグラフィカルユーザーインターフェースを使えば、実際にエクスプロイトを使うのにそれほど高い技能と努力はいらない。言い換えれば、作業用エクスプロイトを持つことは、脆弱なシステムに対する連続的な最小攻撃コストをほぼゼロまで引き下げることができる。ただ的を絞って撃つだけで済む。
アマチュアのエクスプロイト開発者は一般的に彼らの労力の成果を発表して、セキュリティコミュニティに名をはせようとする。最初は私的に情報を伝え合い、うち拡大する友達の輪の中で公開し、ついにはセキュリティメールリストやウェブサイトなどを通じて広く一般に公開する結果となる。
アマチュアの開発者がエクスプロイトを共有しようとする動機の一つは、ベンダーが自らの製品にセキュリティホールが存在することを、時として公的に認めたがらないからである。一度公開されたエクスプロイトにより製品の脆弱性に対する攻撃の可能性を顧客自身が検証できるようになると、セキュリティホールの波及効果を否定も軽視もできなくなり、ベンダーはセキュリティホールの存在を認めてパッチを開発するしか選択の余地がなくなる。
セキュリティコミュニティに属する一部の者は、ベンダーは新しく発見されたセキュリティホールを出来るだけ長い間秘密にし、次のバージョンで秘密裏に修復する傾向があるため、セキュリティホールとエクスプロイトの一般公開は必要であると反論する。
これに対して、プロの攻撃者は彼らが調査し、開発した内容は秘密にしておきたいと願う動機がある。突破可能なセキュリティホールをできるだけ長く秘密にしておき、ベンダーが助言勧告とパッチを出すまでの時間が長ければ長いほど、エクスプロイトを使い脆弱なシステムを思い通りに欺いて利益を得る期間が長くなるからだ。
プロの攻撃者はアマチュアに比べてきわめて強力な動機を持ち、知的でリソースに富んでいるため、セキュリティホールの大多数は、ベンダーが公開してパッチを提供するかなり以前(時には何年も前)に秘密裏に発見されて突破されているのではないかと思われる。
皮肉にも、ベンダーとプロの攻撃者は、セキュリティホールとエクスプロイトを一般公開するということに関して心情は共通するものがある。
しばしば、セキュリティホールとそれに関連したエクスプロイトの一般公開がベンダーによるパッチの供与よりも先に行われることがある。これは、例えば、プライベートな「裏社会」のエクスプロイトが野放しに使われていたのが見つかったようなときなどに起こる。
パッチが供与された後でも、システム管理者またはMicrosoft Windows Updateなどの自動化パッチ導入メカニズムによりパッチが実際にインストールされるまでは、脆弱さの公開期間(パブリックウインドウ)は続く。
この脆弱性の公開期間は、最も広範囲の脅威がほぼ何の努力もせずに脆弱システムをうまく攻撃することができる。この段階で、日和見主義の攻撃者は時間と勝負し、システム管理者、攻撃者同士で競争しながら、脆弱システムからできるだけ多く陥落しようとする。すでに陥落したシステムをプラットフォームとして活用して以降の攻撃を行えば、攻撃をは完全に自動化し大幅に加速することができる。
自動パッチ設定メカニズムが脆弱性の継続期間を短縮できるとしても、システムはしばしばユーザとシステム管理者によって使用出来なくされている。
パッチは時として大規模で、ダイアル接続のような基本的インターネットの接続性を持つユーザにはダウンロードしづらい。プライベートネットワークでは、インターネットの接続性が全くない可能性もあり、この場合パッチは手動で取得して適用しなければならない。
汎用コンピュータシステムのあらゆる可能な設定において、予めパッチの効果をテストするのはほぼ不可能に近いため、パッチがシステムを壊したり、やり方によってはシステムを不安定にさせることが全くないわけではない。コンポーネントの多くが相互に繊細に依存しているオペレーションシステムコンポーネントへのパッチの場合は特にそうである。
システム管理者は生産システムを停止してもリスクはないため、自動パッチングをしばしば停止させる。手動でパッチをテストし、適用させる作業は労力のいる工程であり、脆弱性の一般公開期間が延長されて経費をさらに増やし、パッチサイクルに関連する不便性を大きくすることがある。
さらに、一つの脆弱性へのパッチが他の脆弱性を引き起すというリスクは常にある。このようなソフトウェアの内在的な不完全性は、再帰的にソフトウェアパッチにもあてはまる。
セキュリティメカニズムとしてのパッチへの依存は、エクスプロイトが見つかってソフトウェアが攻撃に脆弱になるまでは、ソフトウェアはある程度安全であることを示唆するものであり、好ましくない。
事実、ソフトウェアが望まれる動作に合致するよう完璧にインプリメントできない限り、失敗は避けられないと想定するべきである。強力なセキュリティが要求されるときには、ソフトウェアが本来持つ信頼性の欠如を補完するように構築されたソフトウェアを使わなければならない。
メインストリームプラットフォームがサポートする脆弱なセキュリティを、何の方向性を与えられることもなく歴史的な状況と市場の圧力により生じた結果として説明することもできるが、一部の人たちはプラットフォームベンダーとの利害対立が問題をさらに複雑化させた一因だという。
メインストリームプラットフォームの脆弱なセキュリティは、顧客のベンダーに対する依存度を高め、ベンダーは弱点を市場への管理をさらに強化するために使うことができることから、プラットフォームベンダーにとっては実際にはビジネスの好機になるという見方がされている。
例えば、指定日以降は旧バージョン用のセキュリティパッチを提供しないと通知することにより、ベンダーは製品を新バージョンにアップグレードするように顧客に対し圧力をかけられる。これは、最近MicrosoftがWindowsの特定旧バージョンについてセキュリティパッチを供与しないことを発表したときに実際に起きた。
これは効果的にユーザにアップグレード用の費用を払うように強制するものだ。というのも、メインストリームプラットフォームのユーザは、最低限のセキュリティを確保するにあたりパッチサイクルに依存しているからである。パッチされていないシステムを攻撃するコストは、公開されたエクスプロイトによる攻撃コストと同じ位に低く、結果、一番知的でないクラスの攻撃者の場合でさえ、大容量の自動化に最適な時期の攻撃コストはしばしば最小限度で済む。
例えば、最近の調査は、悪意ある者が常時インターネットを自動スキャンして、パッチなしの機器から悪用しようとしているため、インストールされたばかりのパッチなしのMicrosoft Windows XPは、インターネットに接続した瞬間から平均数分のうちに攻撃されると指摘している。
同様に、パッチの利用をソフトウェアのライセンス契約をした正規のユーザだけに限定すると、ソフトウェアの著作権侵害を抑止することができ、ひいてはベンダーの収益を増やすことになる。
さらに、パッチサイクルによりベンダーは、機能更新をセキュリティの修正と統合することにより、既存のソフトウェアインストレーションの機能特徴を変更したり拡張できる。独自のプラットフォームについては、パッチの内容は大抵不透明であり、ユーザは必要なセキュリティフィックスの恩恵を得るには使用しているソフトウェアへの独断的な変更を受け入れる以外に選択の余地がほとんどない。ベンダーはこの力を利用して、彼らの目下の事業利益に合致するよう、プラットフォームに依存するコンピュータシステムの機能性を常に調整している。例えば、プラットフォームベンダーは、潜在的競合他社の製品との相互運用性を低下させることで、当該他社を弱体化させたり、新しい機能性を追加することにより競合他社の製品に対するニーズを排除することもできる。
アンチマルウェア
もう一つ極めて一般的に利用されているセキュリティメカニズムは各種のアンチウイルス、アンチスパイウェアソフトウェアである。どちらも標的とする迷惑行為の種類を除けば、技術的には同じであるため、アンチマルウェアと総称されている。
現代の製品は歴史的な背景のみに基づき、別々に分類されてきたが、すでに急速に一つの分類に収束しつつある。
アンチマルウェアは、自己増殖するウイルス、ワーム、トロイの木馬、バックドア、アドウェアなどの悪質と思われソフトウェアの存在に反応するように設計された全てのソフトウェアと定義することができる。
パッチサイクルと異なり、アンチマルウェア はセキュリティホールを実際に修復したり、脆弱性を軽減することはしないが、保護されるコンピュータのオペレーションシステムレベルで悪質と思われる署名の存在に反応する。
アンチマルウェアは脆弱性を実際に軽減するものではないことから、最小攻撃コストへの効果はない。
多くの攻撃のシナリオ上、アンチマルウェアは何の効果もなく、アマチュアの攻撃者でさえ他のシナリオにおいて効果を容易、且つ日常茶飯事的に回避している。
アンチマルウェアの弱点は設計に内在しており、どのようなアンチマルウェアプログラムがインプリメントされても、同じことが言える。
アンチマルウェアがなぜ弱いのかを理解するには、アンチマルウェアがどのように機能するのかを一般論として知ることが有効である。
簡単に言えば、アンチマルウェアは三つの主要部分から成る。
第一は、ブラックリストに載った署名を含むデータベースである。このデータベースは、通常は新たな脅威に係る署名をネットワークから得て継続的に更新されている。
第二は、イベントを妨害する為にシステムソフトウェアに接続されたモニターである。これはファイルの読出し、実行を試みたり、(Microsoft Windows上の)レジストリに書き込みを試みたりする低レベルのOSイベントであったり、Eメールを受信するような高レベルのイベントであったりする。モニターは接続されているソフトウェアの動作に対話形式で介入し、イベントの属性がブラックリストのデータベースの署名と一致する場合は反応する。
モニターの目的は悪質なプログラムの実行を防ぎ、ユーザに警告することである。
第三は、ブラックリストのデータベースにある署名を探してシステムをスキャンするスキャナーである。スキャナーは、ファイル、実行プロセスおよび各種のシステム記録(例えば、Microsoft Windowsレジストリ)を点検して悪質なソフトウェアの痕跡を探す。
スキャナーの目的は、プログラムが実行された後にシステム上の悪質プログラムの存在を検出して、システムから悪質プログラムを取り除けるようにすることである。
アンチマルウェアプログラムはモニターおよびスキャナーの両方あるいは片方だけを持つ。例えば、最も人気のあるアンチウイルスプログラムはモニターとスキャナーの両方を持つが、一部のアンチスパイウェアとアンチアドウェアプログラムはスキャナー部分だけを持っている。
スキャナーとモニター部分はどちらもブラックリストデータベースに基づいて、善悪の違いを見分けている。
ブラックリストに依存するアンチマルウェアは幾つかの理由で極めて弱いセキュリティメカニズムを持つが、それについて以下に説明していく。
概念レベルでソフトウェアは白黒、善悪で分けられるという想定はあまりにも単純化し過ぎている。ほとんどの場合、ソフトウェアが悪質であるかどうかの判断はプログラム開発者の主観的意図に基づく。これは自己増殖型のウイルスやワームなどの明確なケースにはうまく作用する。しかし単純な暴力を超えた領域になるとこの概念は機能しない。
ソフトウェアプログラムはほとんどの場合、ツールとして利用される目的で開発されている。ツールはそれ自体に意思はない。何を望むのかを理解せずして、それが正規の目的に使われているのかどうかを判断することは不可能である。正しい背景に照らし何が正規であるかを理解するには人間の知能を必要とすることから、自動化された手段では成しえない。
言い換えれば、良いツールでも悪意の目的で使うことはでき、逆も成り立つ。例えば、アンチマルウェアは不当なトロイの木馬プログラムを検出する目的を持つが、攻撃者が正規の遠隔管理ツール(Microsoft Windows RDP、 SMS、 PcAnyWhere)を同じ目的のために使うことをほとんど防げない。
別の例では、FBIがトロイの木馬プログラム(Magic Lantern)を犯罪調査の中で遠隔調査に使うために開発したことが公表された例がある。コメントを求められた大手ベンダー各社は、犯罪と戦うFBIの努力を妨害しないために、FBIのプログラムをデータベースに追加することはしないと述べた。
しかし、もし犯罪者の手にプログラムが漏れた場合はどうなるのだろう。トロイの木馬プログラムを使うには、FBIは容疑者が有するコンピュータにソフトウェアをインストールしなければならないが、インストールによって、当然ソフトウェアは潜在的犯罪者の手の届く範囲に置かれることは想像に難くない。Magic Lanternの不正使用を何が防止できるだろうか。
正しいソフトウェアと悪質なソフトウェアの違いの少なさは市販の攻撃フレームワーク(例:Core Impact)でさえ、アンチマルウェアのブラックリストにはしばしば載っていない事実から分かる。犯罪者が正規の侵入テスト以外の目的に市販の海賊版攻撃ソフトウェアを使用することを、一体なにをもって防止できるのだろうか。
同様に、悪質とされるツールを正しい目的に使用することも可能である。例えば、アンチマルウェアのベンダーが彼らのブラックリストにエクスプロイトとネットワーク脆弱性スキャナーを含めるのは極めて一般的だ。根拠は、攻撃者がしばしば攻撃されたコンピュータを活用して、後の攻撃を行うことがあり、そのために、彼らのツールを検出することで、攻撃者の存在を警告できるというわけだ。
この主張の問題点は、悪質とされるプログラムにも完全に正規の使用法がある点である。例えば、システム管理者はこうしたプログラムを使って担当するシステムの脆弱さを正規に評価することがある。
ソフトウェアが正規かどうかという独断的になりがちな判断について第三者のアンチマルウェアベンダーに依存することがどれほど望ましいかということはさておき、悪者は常に悪質なツールを使い、良い者は常に良いツールを使い、さらにはこの世界をこのように明確に白と黒とに分けることが可能であるという設定に依存するセキュリティメカニズムの強度について考えてもらいたい。
ブラックリストは別のレベルで弱さがある。有用ではあっても、アマチュアでさえ簡単に回避できる。
それでは、一部のアプリケーションで、特定のソフトウェアと悪意のある目的の間に厳密な連携があれば、ブラックリストは実際に有用であるという主張を仮定してみよう。
このような関連付けは、ソフトウェア開発者が攻撃者でもある場合には最も簡単にできる。これは、従来から重大な脅威であり、もともとアンチマルウェアプログラムがそれらに対する防衛のために開発されたという自己増殖ウイルスやワームの場合に当てはまる、
ソフトウェアプログラムのサンプル(例:実行可能なファイル)が与えられた場合、特有の署名を計算して、パターン照合アルゴリズムにより、サンプルされたプログラムの他のインスタンスを抽出された署名に照らし個々に特定させることができる。.
署名に対するマッチングは、破壊者が書き込む自己増殖プログラムに関してはもっとも理にかなっている。というのも、こうしたプログラムは同一であるか、またはプログラムが人間のプログラマの関与なく自己変化させることが可能な無理のない簡単な方法で規制されているからだ。したがって、一部の自己増殖するプログラムが自己を変化させて署名を避けようと試みる一方で、アンチマルウェア開発者は偽装を見抜く技術を開発してきた。
アンチマルウェアは破壊行為からの保護に充分に効果があったために、当然、ベンダーはブラックリストのパターン照合の拡張を試み、トロイの木馬やスパイウェアなどの望ましくないソフトウェアをブラックリストに載せようとしてきた。
しかし、残念ながら、もっとも単純なアマチュアでさえ簡単に一番高度な自動パターン照合アルゴリズムの裏をかくことが可能であるため、効果があまりない。
一般的なアンチマルウェアプログラム全てを網羅する環境を設定することにより、攻撃者はアンチマルウェアプログラムのブラックリストで駆動されるパターンマッチャーを通過できるものについてフィードバックを受けることができる。
攻撃者は、決まった警戒手順として、攻撃を開始する前に一般的なアンチマルウェアプログラムに攻撃手段(例:トロイの木馬)が識別されないことを確認する。
攻撃者は手始めに、ブラックリストに載っていないツールを選択するか、あるいは既存のツールを変更または再パッケージ化して、署名にマッチしないようにすることでブラックリストを回避することができる。
ソースコードが利用できる場合は、元のサンプルの署名にマッチしないよう主導で簡単にプログラムを変更できる。それが本来の目的ではなものの、プログラムのソースコードを混乱させて、自動的にこれと同じ効果を達成する市販のツールもある。
ソースコードがない時は、正規のソフトウェア暗号ツールが作成した保護エンベロープ内のプログラムを再パッケージすれば同じ効果を生む。
ソフトウェア暗号化ツールはリバースエンジニアリングや、無許可変更を行いライセンス規制や著作権保護強化を回避することをさらに困難にするためにある。アンチマルウェアプログラムは正規のソフトウェア暗号化プログラムが作成する保護エンベロープの中を覗くことはできない。また、時に署名が多くの正規プログラムにもマッチするために、エンベロープ自体をブラックリストに載せることはできない。ソフトウェア暗号化プログラムの開発者はソフトウェア著作権侵害者のリバースエンジニアリングに対抗して競争を続けるため、エンベロープを弱めてアンチマルウェアプログラムが中を覗くようにする余裕が出来ない。
ブラックリストは、サンプルがないと署名を作成できないという別のレベルでの弱さが依然としてある。
したがって、署名(実証では回避が容易)を作成する前にブラックリストに載せるソフトウェアのサンプルを収集する必要がある。
アンチマルウェアの顧客は時として自ら確保したサンプルを解析用にベンダーの研究室に送ることがあるが、大抵の場合は、ベンダーはおとりを仕掛けてサンプルを収集する。
特別に設定されたコンピュータ(「センサー」あるいは「ハニーポット」と呼ばれる)を統計的に有効な方法でネットワーク全体に配布することにより、脅威の調査をし、サンプルを確保して解析する。
これは無差別に自己増殖する多種類のソフトウェア破壊及び自動化手段により日和見的にコンピュータ数千台から数100万台を標的とする粗野で暴力的な攻撃を捕らえるには最善の方法である。
末端の脅威については、ベンダーの調査グループはネットワーク全体を統計的にほぼ正確にあらわす縮小モデルである。サンプルの収集は、生成された署名を使って悪質なソフトウェアをスキャンし感染したシステムから取り除き、まだ感染していないシステムにおける実行を防ぐことができるので有効である。
他の脅威については、最初からサンプルが収集される可能性は低く、収集したとしても、わずかに有効である程度である。
前述した通り、攻撃者の攻撃手段は、攻撃者が特定の定常的警戒をすれば一般的なアンチマルウェアプログラムでは識別されない。
これは、必然的にアンチマルウェアモニターが攻撃者のソフトウェアの実行を防止しないことを意味する。
結果として、もし攻撃者のソフトウェアが手動で検出されて分析のために送られる、あるいは攻撃者がアンチマルウェアベンダーが仕掛けたおとりを知らずに標的にした場合は、攻撃者のソフトウェアのサンプルから署名が生成されることになる。
より高度な攻撃の場合は、攻撃者のツールが巧妙に隠されているか偽装されており、稀有なシステム専門家であっても具体的に見つける対象が正確に掴めていない限り、手動で検出することは困難であるため、手動でサンプルが収集される可能性は少ない。
さらに、攻撃者が知らずにおとりを標的とするほど無差別に多数のコンピュータを攻撃するのでない限り、サンプルが自動的に収集されることはありそうもない。
たとえ、サンプルが収集されても、必然的に脅威への反応は実際の攻撃よりも遅れることが常である。署名が生成されて、ブラックリストのデータベースへの更新が出来るようになるが、前にある悪質なソフトウェアがすでに最初に攻撃されたコンピュータにおいて実行され、損害がすでに出ている可能性がある。
更新されたブラックリストデータベースに基づきシステムをスキャンすることにより、悪質なフトウェアを検出し、それを取り除くことができるかもしれないが、それは、アンチマルウェアプログラム自体の完全性とそれが依存するソフトウェアの完全性がまだ改ざんされていない場合に限る。例えば、攻撃者がアンチマルウェアプログラムの能力を無効にして、ブラックリストを更新できなくしたら、アンチマルウェアプログラムが攻撃者のソフトウェアを遡及的に検出し、取り除くことはない。システムの侵害に続いて、攻撃者は文字通り無数の方法でアンチマルウイルスソフトウェアを改ざんして効果を出し抜くことができる。
アンチマルウェアベンダーにとって、すでにシステムを侵害した攻撃者による改ざんからアンチマルウェアメカニズムの完全性を有効に保護することはきわめて困難である、というのは、アンチマルウェアの完全性はオペレーシングシステムのセキュリティに依存し、メインストリームオペレーティングシステムのセキュリティは、先に記述した理由(セキュリティより利用性を優先することによるセキュリティアーキテクチャの相互依存性)から本質的に弱いからである。
たとえ、アンチマルウェアの完全性を当然としても、理論的には依然として攻撃者にとって新しい署名のあるソフトウェアを自動的に生成し、アンチマルウェアのユーザーが彼らのブラックリストデータベースを更新して、彼らのシステムをスキャンするよりも速くブラックリストに載っていた前のソフトウェアを入れ替えることは可能だ。システムを十二分にスキャンすることは、時間を要する集中作業であるため、ユーザは頻繁に行うのを嫌がる。攻撃者は積極的な行動により、防衛側の受動的対応に対し著しい優位に立つことができる。
一般に普及しているセキュリティメカニズムの中で、アンチマルウェアだけがブラックリストに依存し、結果として概念的弱点を有すわけではない。
特に、IPS(不正侵入防止システム)は極めて似た動作原理およびほぼ同じ弱点を含め、多くの概念的類似性をアンチマルウェアと共有する。
主要な違いは、IPSは、ブラックリストに載ったソフトウェアの存在をシステムレベルで検出して攻撃を試みる代わりに、ネットワークをモニターして、エクスプロイトルーチンが生成する署名などのブラックリストに載ったトラフィック署名を検出して反撃するように設計されている。
結論としては、ブラックリストへの依存がアンチマルウェアを弱体化させる理由は分かりやすい。従って、セキュリティメカニズムとしては、盲目的な暴力及び最も弱い機会便乗型の対抗者からの攻撃に対してシステムの利用性を維持する場合のみに統計上は効果を発揮している。
多くのアプリケーションにおいて、アンチマルウェアは、大規模なブラックリストにてらしてシステム状況を継続的にモニターし、スキャンすることによる大きなパフォーマンスヒットを含め、関連するコストに見合わないことがある。
さらに、市販されているアンチマルウェアのベンダーの誤解を招くような広告に基づく偽りの安心感も、顧客が不適切に保護されたコンピュータシステムを高リスクアプリケーションに用い、多大な損失を被る可能性を増やす危険がある。
広まるアンチマルウェアへの依存性は、コンピュータセキュリティに関する全般的混乱と、アンチマルウェアベンダーが事業利益を優先して行う積極的な市場拡大努力を示すものである。
アンチマルウェアは、それにより提供されるセキュリティが技術的に極めて脆弱である一方、定期的にブラックリストの更新を必要とするアンチマルウェア利用客とのサービス契約(加入)からの安定した収益を供給する実入りの良いビジネスモデルを支援している。このビジネスは過去何年もの間拡大を続け、数十億ドルの巨大な世界的産業になっている。今日、世界の大手コンピュータセキュリティ会社の大部分がアンチマルウェアのベンダーである。
アンチマルウェアの利用はMicrosoft Windowsプラットフォームを基盤とするコンピュータだけに限定されてきた経緯がある。
アンチマルウェアベンダーにとって残念ことには、他のプラットフォームのユーザはまだアンチマルウェアの必要性を認識していない。
これは一部には、Apple Macintoshなどの他のプラットフォームは、スパイウェアや自己増殖型ソフトウェア攻撃の一般的弊害に大きな影響を受けていないことに起因するが、スパイウェアや自己増殖型ソフトウェアはMicrosoft Windowsのアンチマルウェア業界にとっては生活の糧である。
一部の人は、どのプラットフォームでも、デスクトップを独占してオペレーティングシステム市場の大部分を占めるWindowsほどに普及すれば、状況は変わるだろうと言う。
しかし、普及度だけがWindowsが暴力やスパイウェアの肥沃な繁殖場である唯一の理由ではない。
歴史的な状況により、Microsoft Windowsの使用者は、彼らのコンピュータに信頼の置けないソフトウェアを実行させて恩恵に浴してきた傾向がある。Windowsベースコンピュータの機能性はむしろ限られている。そこでユーザはインターネットからダウンロードした各種の無料やシェアウェアソフトウェアで限られた機能性を補充する傾向がある。ユーザはすべてのものをアドミニストレーターの特権を十二分に使って実行することにより、恒常的に問題を悪化させる。これは当然ながら、セキュリティコミュニティではルール違反とされているが、大多数のユーザはセキュリティモデルや危険を理解しておらず、ソフトウェアはこのような形態でインストールし実行するほうがずっと容易である。
これらの無料とされているプログラムの多くに関するビジネスモデルは、望ま何ら疑いを持たないユーザのコンピュータに、望まれるプログラムとともに多様な望まれないプログラムをもに入れ込むものである。
これに対して、Unix相当システムのユーザはより技術的知識がある。Unix同等システムはまず、より完全な機能性があり、無料ソフトが必要な場合は、暗号化署名ソースコードとして大手ベンダーからダウンロードする場合が多く、このやり方の方が、実行可能バイナリーに比較して変更や望まない機能性を点検するのに楽である。さらにUNIX同等システムのユーザはセキュリティ上の用心として、またシステムへの偶発的損傷を防止するために限定特権のソフトウェアを実行する傾向がより強い。
これが、Unixの長い歴史にもかかわらず、Microsoftのオペレーティングシステムファミリに比べてUnix同等システム上でスパイウェア及び自己増殖型バンダルウェアが一般化しない理由である。
アンチマルウェアの必要性は脆弱なセキュリティデザインから起こる。信頼できないコードの実行を防止し、特権を充分に規制することにより、アンチマルウェアの誕生の原因となった問題を根元から取り除くことは可能である。
簡単ではあるが、多少制約的な対策としては、ブラックリストではなくホワイトリストを用いてソフトウェアの実行を制限するという方法が挙げられる。
言い換えれば、実行を許可できないプログラム全部をブラックリスト化するという勝ち目のない猫と鼠の追いかけっこをする代わりに、ホワイトリストを用いて許可されたプログラムのみを限定実行するものだ。
もう一つの良く知られるアプローチとしては、信用できないソフトウェアの特権を限定して、システムのセキュリティ目的に違反できないようにする方法だ。これは信頼できないソフトウェアをジェイルあるいはサンドボックスで実行し、論理的にシステムの他の部分から分離する方法である。大部分のオペレーティングシステムのプラットフォームは、ある程度は特権制限に対応しているが、大抵のセキュリティコントロールは提案された論理的分離を強化できるほど精度が高くない。
残念なことに、上記の解決法はメインストリームプラットフォームと一緒に使うようにインプリメントする場合にどれも実際的でなくなる。というのはユーザがシステムに希望するタスクを実現させるために、あまりにも多くの他の事柄が同時に変更する必要があるからである。ユーザが期待するシステム機能、普及度の高いソフトがどのような特権化で動作するように開発されているか、コンピュータシステムの構成要素を統合して設定するにはどのような技術が求められるか、等である。
たとえばユーザは、彼ら所有のコンピュータ上に望むソフトウェアをインストールできないとなると、たいがい異議を申し立てる。ソフトウェア開発者は彼らのプログラムがある種のジェイルあるいはサンドボックスの中で走るとは予想していない。ためシステムにフルにアクセスせざるを得ない既存のソフトウェアは、正常に動かなくなる。そして多層セキュリティコントロールが突然にメインストリームプラットフォームでサポートされるようになってさえも、なぜそれらが必要かを理解する者は少なく、そしてそれらを実際に正確に使用する技能をもつ者はさらに少ない為、それらは無視される可能性が高い。
アンチマルウェアをあまり使わないようにコンピュータシステムを十分に安全にすることは、Apple Macintoshによりこれまでのところ実証されてきたように、恐らく可能である。この理由は、そもそもアンチマルウェアが技術的にしっかりしていないからである。
しかし、使い勝手に関する期待を再調整し、システムが依存するあらゆるレベル、特にコンポーネントのアーキテクチャ、設計、インプリメント及びそれらがどのように相互に統合され、構成されて使用されるかにおいて、セキュリティを優先するようコンピュータシステムを根本から設計し直さなければ、高リスクアプリケーションを安全に使えるようにコンピュータシステムを十分に安全にすることは不可能である。
理想的なシステム
既に説明したように、今日のコンピュータシステムは広範囲にわたり安全ではない。なぜならそれらは、セキュリティよりも機能性と柔軟性を優先し、相互に依存する弱いセキュリティアーキテクチャからなり、それに対応する弱い反応型のセキュリティメカニズムに依存する汎用目的のツールとして設計されてきたためである。
理想的にはコンピュータシステムは、攻撃者の資力よりも高い、あるいは攻撃者がシステムの侵害により得る対価よりも大きい最少攻撃コストを保証する独立した多層セキュリティアーキテクチャに基づく基礎から設計されるセキュリティを持ち、必要とされるだけの機能性を確実に提供する。
理想的には安全なシステムは、不正操作を許さず、且つ無停止型であり、セキュリティの保守におけるパッチサイクル、あるいはアンチマルウェアやIntrusion Prevention Systems(侵入防止システム)のようなブラックリスト起動の各種セキュリティメカニズムのいずれにも依存しない。従って、セキュリティは、高リスクアプリケーションを当然のこととして安全に動作することができるコンピュータシステムの信頼でき、且つ、予測可能な特性である。
他方、現代のコンピュータシステムを、セキュリティを優先するために根本から設計されたシステムと置き換えることは非現実であると考えられている。なぜなら、安全なシステムの機能性は、コンピュータシステムに期待される機能性と相容れない形で制限される傾向にあるからである。
安全なシステムの幅広い採用を妨害するもう一つの要因はコストである。安全なシステムは現段階では非常に少なく高価である。なぜならそれらの開発は、規模の経済から利益が得られないクライアント別の手動プロセスによるものであり、最上級のセキュリティとシステムインテグレーションを専門とする数少ない技術者の労働集約型の努力を必要とするためである。
従って、少なくとも最上級のセキュリティを要求する高リスクアプリケーション(たとえばオンラインバンキング)については、これらの障害にどうにか克服し、タスク固有の安全なシステムの広く普及させることが望ましい。
広く普及させる為には、規模の経済からさらに有意に利益を得るよう、そしてハードウェアにおける既存の投資を活用するように、設計されることにより、ソリューションを手ごろな価格で提供するのが理想的である。
ユーザは決してセキュリティとシステムの専門家にはなり得ないため、ソリューションは設定および使用に特別な専門知識を要するものであってはならない。
ソリューションは、可能な限り簡単で便利に使用できることが理想である。なぜならユーザは、自らが使用を避けようと努めるソリューションによって提供されるセキュリティからなんら利益は得られるところがないためである。ユーザにとってセキュリティは、それが破られるまでは実体のないものである。ところが、セキュリティ要件によってもたらされる不便さは、ユーザが多くの場合に避けたいと努めるはっきりと認識できる重荷である。
ソリューションの利益を享受するために消費者に新コンピュータを購入したり既存のハードウェアを交換する必要がないよう、ソリューションは理想的には既存のコモデティハードウェアアーキテクチャをうまく利用すべきである。
いくつかのアプリケーションにおいては、ユーザが必要とする高リスクタスクについてのみ高セキュリティモードに切り替えられるようにすることが望ましい。結果、セキュリティと引き換えを要する機能性と柔軟性は、一時的に犠牲にするだけでよく、セキュリティ要件により正当化された場合にのみ侵害が可能となる。ユーザは、絶対に必要な場合には、セキュリティの名の下に不便さを我慢するかもしれない。しかし、ユーザが慣れ親しみ依存しきっている機能的に豊富で柔軟な汎用コンピュータを完全に放棄するようユーザに期待することは現実的ではない。
また、ソリューションがサービスプロバイダーによって容易に配布されるようにすることは望ましい。たとえば、銀行はソリューションをオンラインバンキングのクライアントに配布でき、結果、クライアントサイドはもはや、オンラインバンキングの急所となる弱いリンクではなくなる。同様に、企業はソリューションを従業員に配布でき、結果、彼らは、攻撃者が機密データを傍受するためにインストールしたトロイの木馬により以前に侵害されたかどうかを心配することなく、どのPCからでも安全に会社のリソースに遠隔地からアクセスできる。
さらに、本発明の目的と利点は、図と後の説明を考慮することから明白になる。
発明の要約
安全で、信頼性があり、そして使いやすい高リスクアプリケーション用の現実的なプラットフォームを提供する為に、使い勝手を最大にしながらセキュリティを優先するために根本から設計される既成型の独立なオペレーティングシステム環境を用意するための、発明の原理と整合した方法や必要な装置。
本発明の実施例は、一時的に普通のコンピュータを当然に安価な論理装置に変身させる。この論理装置は、軍用級のセキュリティ強度と同等なデジタル範囲内で、ターンキー式の機能的なソリューションを埋め込んでいる。これは、既存のハードウェアを便利に活用して内蔵型システムを提供できるようにする。この内蔵型システムは希少かつ高価なシステムインテグレーションとセキュリティの専門家の現場での労働には頼らない。
発明の一面によれば、装置は、少なくとも携帯可能な不揮発性メモリー要素、メモリー要素に記憶されたオペレーティングシステム環境、そして独立なオペレーティングシステム環境を用意するためにメモリー要素からオペレーティングシステム環境をロードするためのブート手段を提供する。
一つの実施例において、本発明は、オペレーティングシステム環境がサービスプロバイダーとのインタフェース手段を含む装置をクライアントに提供することで、ネットワークを通してクライアントおよびサービスプロバイダー間の取引においてクライアント側の安全を確保する為に使用できる。サービスプロバイダーは、クライアントが信頼性が低く潜在的に不確かなコンピュータから信頼性の低いネットワークを通じて機密性の高いサービス(例:オンラインバンキング、企業のイントラネット、医療データベース等)に安全にアクセスすることを可能にするポータブル装置を簡便に経済的に配布することができる。
発明の別の面によれば、高リスクアプリケーションの厳しいセキュリティ要件を満足するために、本発明により提供される装置は独立したオペレーティングシステム環境に含まれたセキュリティメカニズムと物理的なセキュリティ用ハードウェアを統合できる。統合されたセキュリティメカニズムは、実質的に無停止型の多層セキュリティアーキテクチャを提供するように構成される。各セキュリティ層は、特定のコンポーネントにおける地域的なセキュリティ障害の可能性をグローバルに補償するかたちで、独立にセキュリティ目的を強化する。
発明の別の面によれば、当該装置が提供する独立したオペレーティングシステム環境は、独立したオペレーティングシステム環境へ切り替る時間を短縮するためのブートプロセスの最適化、新型の自動化されたハードウェア構成、メインストリームプラットフォームのユーザになじみのあるユーザーフレンドリーなグラフィカルインタフェース、最小限のユーザーのやりとりで各種のシナリオに応じてネットワーク接続を補助する接続エージェントメカニズム、および主流のオペレーティングシステム環境からのユーザーのアプリケーションデータの移行を補助する移行エージェントメカニズムのような使用の簡便さと容易さを促進する機能を含むことができる。
発明の別の面によれば、一つの実施例において、装置が提供する独立したオペレーティングシステム環境は、主流のオペレーティングシステム環境のファイルシステム、あるいは規定のネットワーク内の記憶場所のどちらかで存在している不透明なコンテナの内部にデータを記憶するための永続性のある安全な記憶要素を作りアクセスするためのサポートを含むことができる。永続性のある安全な記憶メカニズムは読み出し専用(論理的あるいは物理的に)の記憶要素からオペレーティングシステム環境をロードする際に、本来備わっている明らかな制限に打ち勝つために使用できる。データが潜在的に安全でない主流のオペレーティングシステムのファイルシステムあるいはネットワーク内に保存されている間は、このメカニズムを使ってデータの完全性と機密性を保護する。
専用のコンピュータハードウェア用に最適化された別の実施例において、装置が提供する独立したオペレーティングシステム環境は、永続性のある安全な記憶メカニズムと比較して、コンピュータの内部記憶装置の記憶容量をより効率的かつ柔軟に活用できる論理ボリューム要素を作りアクセスするためのサポートを含むことができる。
発明の別の面によれば、一つの独立したオペレーティングシステム環境を提供するために、コンピュータのブート用装置をクライアントを含むネットワークを通して、クライアントおよびサービスプロバイダー間の取引においてクライアント側の安全を確保するための方法を提供する。装置は、可搬型の不揮発性記憶要素と不揮発性記憶要素に記憶されたオペレーティングシステム環境から成る。オペレーティングシステムは、取引を行うためにサービスプロバイダーとインタフェースするクライアントソフトウェアを含む環境を持つ。取引において、クライアントソフトウェアはサービスプロバイダーとの通信を暗号化するように構成され、可搬型の不揮発性記憶要素からオペレーティングシステム環境をブートするブートローダーを持つ。
発明の別の面によれば、独立したオペレーティングシステム環境を提供する為に、可搬型の不揮発性記憶要素と不揮発性記憶要素に記憶されたオペレーティングシステム環境、および可搬型の不揮発性記憶要素からオペレーティングシステム環境をブートするブートローダーから成るコンピュータのブート用装置が提供される。
発明の別の面によれば、コンピュータ上の1独立した安全なオペレーティングシステム環境を提供するための方法が提供される。方法は、可搬型の不揮発性記憶要素の提供、不揮発性記憶要素に記憶されたオペレーティングシステム環境の保存、可搬型の不揮発性記憶要素からオペレーティングシステム環境を最初にブートストラップするためのブートローダーの提供を含む。ブートストラップにおいては、オペレーティングシステム環境の初期化は、ブートローダーを使って、可搬型の不揮発性記憶要素からコンピュータをブートして開始される。
発明の別の面によれば、コンピュータのブート用装置をコンピュータに挿入し、装置から当該コンピュータをブートすることを含む、コンピュータ上に独立した安全なオペレーティングシステム環境を提供するための方法を提供する。ブートにおいては、前述の装置は可搬型の不揮発性記憶要素、不揮発性記憶要素に保存されたオペレーティングシステム環境、そして可搬型の不揮発性記憶要素からオペレーティングシステム環境をブートするためのブートローダーから成る。
発明の別の面によれば、ネットワーク、ネットワークとインタフェースするサービスプロバイダー、ネットワークとインタフェースするクライアントコンピュータ、クライアントコンピュータのブート用装置から構成されて提供する。ブートにおいては、装置は可搬型の不揮発性記憶要素、不揮発性記憶要素に記憶されたオペレーティングシステム環境、そして可搬型の不揮発性記憶要素からオペレーティングシステム環境をブートするためのブートローダーから成るコンピュータシステムが提供される。ブートにおいては、クライアントコンピュータはネットワーク上でサービスプロバイダーと通信する。
発明の別の面によれば、クライアントコンピュータとサービスプロバイダーとの間の通信方法が提供される。この方法は、サービスプロバイダーとネットワークのインタフェース、クライアントコンピュータとネットワークのインタフェース、クライアントコンピュータのブート用装置のクライアントコンピュータへの挿入、および当該装置からのクライアントコンピュータのブートを含む。
ブートにおいては、装置は可搬型の不揮発性記憶要素、不揮発性記憶要素に保存されたオペレーティングシステム環境、そして可搬型の不揮発性記憶要素からオペレーティングシステム環境をブートするためのブートローダーから成る。ブートにおいては、クライアントコンピュータはネットワーク上でサービスプロバイダーと通信する。
好ましい実施例の詳細説明
本発明は既存のコンピュータ環境条件の中で、利用性を最大化しながらセキュリティを優先化できる特定のタスクを実行するコンピュータシステムを実際的に取り込むことを可能にする新規の方式と装置を含む。
以下の説明は当業者が本発明を作成して使用することができるよう、特定アプリケーションとその要件に関し提供するものである。開示される実施例への各種の改変は当業者には明らかであり、以下に設定された一般原則は他の具体例およびアプリケーションに適用可能である。したがって、この発明は以下に示す実施例に限定されず、本発明の発明者は以下に開示する方法、装置、製造メーカーの製品、データ構造、その他いかなる特許性を持つ対象事項について、それが特許性を持つ限り本発明者の発明とみなす。
概要
以下は特定アプリケーション及び要件における好ましい実施例の簡単な概要である。
多くの高リスクアプリケーションでは、前述したように、クライアント側がセキュリティチェーンにおける弱いリンクである。例えば、インターネットバンキングでは、サーバー側とトランスポート層は大抵よく保護されているが、クライアント側は大抵の場合、攻撃には極めて弱い。
しばしば特別なセキュリティ装置、ソフトウェア保護及び技術力を持つ専門技術者へ多額の投資をして保護されるサーバ側に対して、クライアント側のコンピュータは大抵の場合、セキュリティの専門家ではなく、セキュリティ専門家になることも期待できない一般ユーザがインストールし、設定、維持、使用している。
クライアント側は大抵の場合、現在デスクトップでは市場の90%以上を占めるMicrosoft Windowsなどのメインストリームグラフィックオペレーションシステムを実行するコンピュータである。
さらに悪いことには、Microsoft Windowsのようなメインストリームプラットフォームは、当初から高リスクアプリケーション用プラットフォームとして設計されておらず、これらのプラットフォームの現行バージョンはこうした特性の多くを引き継いでいる。
例えば、これはWindows PCの最低攻撃コストは、最新セキュリティパッチ、アンチウイルス、アンチスパイウェアプログラムを持つ相対的に安全なWindows PCにおいてさえ、攻撃者にとって攻撃する価値がある最小コストよりずっと低く、組織犯罪を含む潜在的脅威の範囲に充分に収まることを意味する。
高リスククライアントサーバーアプリケーションのセキュリティを侵害しようする攻撃者は当然、目的を達成するために一番楽なパスを探し、結果としてクライアント側を標的としたがるため、クライアント側が弱いリンクであると言える。
理想としては、ユーザごとに、高リスクアプリケーションで安全な特殊用途セキュアコンピュータを個別に提供するのが実用的である。
不幸にも、多くのアプリケーションについては、こうした方法は経済的だと考えられていない。
実用面では、大多数のユーザがすでに所有しているPC(パーソナルコンピュータ)を使って、充分なセキュリティを提供することが一番好ましい。
好ましい実施例は個人使用に最適化された本発明の実際例である
大多数のユーザが一般のPCを継続して使い、より慣れ親しんでいると想定した場合、好ましい実施例は潜在的に安全でないメインストリームPCオペレーティングシステムに共生して存在するように最適化されて、ユーザが、通常のPCオペレーティングシステムのセキュリティと独立した一時的高セキュリティモードに瞬時に切り替えができることだ。
言い換えれば、本発明が提供するセキュリティは、巧妙なトロイの木馬、鍵ロガー、バックドア、ウイルス、スパイウェア、あるいは他の任意のソフトウェアに侵害されているユーザPCによって弱体化されることがない。
個人利用を目的としているため、好ましい実施例も、平均的なコンピュータユーザにとって便利で使い勝手が良くなるように最適化されている。
これは一部には、本発明の原則に一致する装置から、独立に安全なオペレーションシステム環境を直接ブートすることで達成できるので、ハードドライブへのインストレーションが不要になる。さらに、本発明が提供するコンピュータシステムは、装置の生産工程の間に専門家により前設定されているため、コンピュータシステムが最小の設定で済む。
これにより、ユーザは本発明の好ましい実施例はより使い易くなり、技術に精通しないユーザが、充分なセキュリティが提供されるような形でコンピュータシステムをインストールしたり設定するようには期待していないため、使い易さは本発明が提供するセキュリティにとっても重要である
その上、本発明が提供する高セキュリティモードへの切り替え時間を短縮したり、ユーザのアプリケーションデータを安全でないPC環境から自動移行するサポートを提供したり、メインストリームプラットフォームの利用者が親しみを持てるユーザフレンドリなグラフィックユーザインタフェースを提供したり、ユーザとの最小の相互作用で、様々なシナリオにおいてネットワークへの接続性達成を支援するメカニズムを提供すれば、便利性と使い勝手はさらに向上する。
一つの実施例では、暗号化コンポーネントを本発明の原理に一致する装置と統合することができる。暗号化コンポーネントはより強力な認証を供給してセキュリティを向上させることができ、またユーザが記憶しなければならないパスワードの数を減らして本発明をさらに使いやすくなる。
当然、インターネットバンキングのような最も要求基準の高い高リスクアプリケーションだけでなく、セキュリティをようするアプリケーションであれば何れも本発明の好ましい実施例が提供するソリューションが役に立つことだろう。
他のアプリケーションの例を挙げれば、商用、政府、軍等の設定でどのような高度の機密性のあるコンピュータサービスやリソースにもユーザが安全にアクセスができるようになる。こうしたアクセスは、ネットワークとの接続性を持つコンピュータであればどれでも好ましい実施例を使うことにより、高度の安全性を有し、安全に提供されるだろう。
好ましい実施例は、実用的なクライエント側のセキュリティソリューションとして最適化すれば、サービスの提供者によって簡単に、経済的に配布できる。
例えば、銀行が本発明の原理に一致する装置をクライアント企業に提供し、同社のIT部門がそれを従業員または第三者機関に配布することもできる。政府がそれを市民に配布し、政府施設やインターネット投票のような機密性の高いサービスに安全に遠隔アクセスすることもできる。
こうした利点を達成するには、小型軽量な物理的形状ファクタ、既存のハードウェア組み合わせとシームレスに機能する能力、規模の経済から大きな利益を得る生産工程による相対的に低い目標コストの実現が必要である。
以下に好ましい実施例を、図を加えてさらに詳しく説明する。代替実施例についても解説する。図面中のPEは好ましい実施例を示し、AEは代替実施例を示す。
本発明が使用される典型的な環境
本発明が操作される一つの典型的な環境に係る以下の説明は、本発明の用途および本発明がもちいられる状況の例を図解例示する為のものである。
しかしながら、本発明は他の環境でも使用でき、そしてその使用は典型的なサービスプロバイダー、ネットワーク環境、コンピュータハードウェア、セキュリティ装置および図1,図2,図3A,図3Bおよび図4Aのそれぞれに参照して以下に紹介されたユーザ相互作用ステップ0401に限定される意図は無い。
図1は、本発明の少なくとも数個の側面が使用される典型的な環境0100の高レベル概観を図解している図である。この環境0100において、その発明の原理に合致したセキュリティ装置0101実施例に関連して使用されるコンピュータ0102(クライアント)は、相互に接続されているネットワーク0103(たとえば、インターネット、またはイントラネット)を通してサービスプロバイダー0104(サーバ)が提供するサービスあるいはリソースに安全にアクセスするために使用される。
たとえば、サービスプロバイダー0104はインターネット銀行のようなインターネット金融サービスプロバイダーであるかもしれない。その銀行のクライアントは、安全にバンキング情報にアクセスする、あるいは安全なインターネットバンキング取引を行うために、そのセキュリティ装置0101をかれらの家庭あるいは職場のコンピュ−タ0102に接続する。
サービスプロバイダー0104の別の例は、インターネット0103を通して信用できない家庭のコンピュータからでさえ会社のネットワークリソース(たとえば、電子メール、インスタントメッセージング、IP電話、ファイルサーバ、プロジェクト協働、ターミナルクライアントサーバ、データベース、ソースコードリポジトリー、あるいはカスタムなアプリケーション)に従業員を安全にアクセスできるようにしたい企業である。その家庭のコンピュータは従業員の子供がそれを使って遊んでいるかもしれない。
他の例の環境0100は、どんな商業的、政府あるいは軍用の場面において機密事項を扱うサービスやリソースへ安全なアクセスを提供することを含む。一人の患者の機密性の高い医療記録へアクセスする一人の医者、依頼人と弁護士間の秘匿特権で保護された機密性の高い法的資料で働く必要のある一人の弁護士、1社の顧客のサプライチェーンネットワークとインタフェースする1社のサプライヤ、価値のある技術的なブレエクスルーを開発している1社の研究開発機関など。どのクライアント−サーバシナリオもセキュリティが要件である。
ネットワーク0103はローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワイヤレスローカルエリアネットワーク(WLAN)、公衆交換電話網(PSTN)のような電話ネットワーク、イントラネット、インターネット、別のタイプのネットワークあるいはネットワーク群の組み合わせを含む。
コンピュータ0102は、たとえば、X86互換のハードウェア上で走るMicrosoft Windowsデスクトップコンピュータ、Apple Macintosh、Linuxワークステーション、ラップトップ、PDA、」先進的なワイヤレスフォン、ゲームコンソル(たとえば、Sony Playstation または Microsoft Xbox)、あるいはコンピュータとして使用できるその他の装置である。
図2は、セキュリティ装置0101が連動して使用される典型的なコンピュータ0102のそのコンピュータハードウェアを抽象的に図解した高レベル図である。代表的なコンピュータのそのハードウェアは、BIOS0206により部分的に制御されるプロセスでオペレーティングシステムソフトウェアが通常主記憶装置装置0204に保存されロードされる永続性内部記憶0208メカニズムに対してバスあるいはほかのインタフェース0209で結合されたプロセッサあるいはCPU 0205を含む。当該コンピュータは入力装置0201と出力装置0202を通してユーザとインタフェースし、ネットワークインタフェース0203を通してネットワークとインタフェースする。コンピュータハードウェアは通常、付加的な周辺装置をそのデバイスインタフェース0207に接続することにより拡張できる。通常、コンピュータハードウェアは、外部のリムーバブル記憶メディアへの読み出しと書き込みに対するメディアR/Wインタフェースを含む。
プロセッサ0205は、たとえば、Intel が作ったPentium TM or Xscaleマイクロプロセッサ、Advanced Micro Devices (AMD)の作ったAthlonマイクロプロセッサ系列、IBMが作ったCell または PowerPCマイクロプロセッサのようなマイクロプロセッサである。
主記憶装置0204は、たとえば、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、仮想記憶、およびプロセッサ0205によるアクセスが可能なその他の作動記憶メディアである。
永続性内部記憶0208は、たとえば、ハードドライブ、フラッシュメモリ、ROMまたはEPROMチップ、永続性記憶のその他のタイプ、あるいは異なるタイプの組み合わせのような永続性の磁気式あるいは光学式の内部記憶メカニズムを含む。それらの上で、オペレーティングシステムとアプリケーションソフトウェアは永続的にユーザデータと共に記憶される。
BIOS 0206 は、たとえば、Phoenix Technologiesが作ったPhoenix BIOS、オープンソースのOpenBIOS、あるいはコンピュータのハードウェアとブートプロセスの最初の初期化用のその他の要素である。
入力装置0201は、たとえば、ファンクションキーとカーソル制御キーを持つ英数字キーボード、マウスのようなポインティングデバイス、トラックボール、タッチパッド、スタイラス、ジョイスティック及びその類似品を含む。
出力装置0202は、たとえば、CRTあるいはフラットパネルディスプレイ、プリンター、サウンドカード、あるいはほかのヒューマンインタフェースデバイスを含む。
ネットワークインタフェース0203は、たとえば、モデム、有線イーサネット、ギガイーサネット、トークンリングネットワークインタフェースカード、802.11a、 802.11b、 802.11gを使うワイヤレスネットワークインタフェースカード、WiMaxまたは携帯電話のワイヤレスネットワーク、あるいはコンピュータがネットワークとインタフェースできるようにするその他の装置を含む。
デバイスインタフェース0207は、たとえば、USB、 FireWire、 PCMCIA、 SDIO、ブルーツースのようなワイヤレス装置インタフェース、そしてコンピュータが周辺装置と通信できるための他の装置インタフェースを含む。
メディア読み出し/書き込みインタフェース0210は、たとえば、フロッピードライブ、SuperDisk、 IOMega ZIP ドライブ、その他のような高容量リムーバブル磁気記憶メディア用のドライブ、リムーバブルなCDROM、DVD、 HD−DVD、ブルーレイディスクメディア用の光学式記憶メディア、フラッシュ用リーダー、メモリスティック、セキュアディジタル(SD)、マルチメディアメモリカード(MMC)、スマートメディア、XD、および、標準あるいはメーカ固有のリムーバブル記憶メディアフォーマットをアクセスするためのその他のインタフェースを含む他のメモリーチップメディアを含む。
セキュリティ装置の典型的な物理的実施例
図3Aと3Aは、コンピュータ0102に関連して使うように設計された、ポータブルな改竄防止セキュリティ装置0101としての本発明の典型的実施例の物理的ハードウェアアーキテクチャを示す図である。これはセキュリティ装置0101のインタフェース0301を、コンピュータ0102上の互換性のあるデバイスインタフェースポート0207に物理的に接続することを含む。
インタフェース0301の種類は、たとえば、USB、 FireWire、 PCMCIA または SDIOインタフェース、別種類のインタフェース、あるいは複数のインタフェースの組み合わせを含む。
どの特定のコンピュータ0102とも関連して作動するために、セキュリティ装置0101は、対応するコンピュータ装置インタフェース0207との互換性を有し少なくとも1つのインタフェース0301を備える。そのコンピュータのBIOS 0206 が上記セキュリティ装置のインタフェース型から直接にオペレーティングシステムをブートストラップすることをサポートするならば、それはむしろ好ましい。さもなければ、別個のブートストラップ要素(たとえば、ブートフロッピーまたはブートCD)が要する。
たとえば、ユーザは、USB装置からのブートをサポートするBIOSを持つコンピュータ0102のUSBポート0207と接続するUSBインタフェース0301を装備する典型的なセキュリティ装置0101を使う。
留意すべきは、複数個のインタフェースを提供することにより、セキュリティ装置0101の特定の実施例との互換性を有するコンピュータ0102ハードウェアの幅が広がるということである。しかしながら、複数のインタフェースを持つ装置は物理的に大きく、また製造もより高価となる。互換性を追求する一つの代替アプローチは、異なるタイプのインタフェース0301を各々のそのセキュリティ装置0101の複数の実施例を作り、そして少なくとも彼らの主たるコンピュータと互換であるインタフェース0301を持つセキュリティ装置0101をユーザに供給することであろう。
また、技術的には広く知られているが、インタフェース型は、インタフェース対象のコンピュータとデバイスとの通信速度などの特性が異なる。
特定のコンピュータ0102について、BIOS 0206 がオペレーティングシステムをブートストラップすることをサポートする対応する互換性のある装置インタフェース0207を含むことが仮定されている最適な性能を提供するために、特定のコンピュータ0102と連動して使用することを意図したセキュリティ装置0101は、当該コンピュータに関し最大通信帯域と最短待ち時間の提供に最も適したインタフェース0301と併用することが好ましい。
図3Aはそのセキュリティ装置の半透明の正面図である。
その典型的なセキュリティ装置0101の物理的なケーシング0304の正面図はホログラム0305を含むことを示す。そのセキュリティ装置0101の信頼性の目に見えるマークを提供する目的は、攻撃者に対してセキュリティ装置を納得のいくように偽造する困難さを増大させることである。
もしも攻撃者がセキュリティ装置を、バックドアまたはトロイの木馬を含む、表面上は同一で機能的に同等な装置と物理的交換することができたならば、セキュリティは明らかに侵害される。
たとえば、攻撃者が、ユーザに向けた装置の輸送を物理的に妨害してその装置を交換することで、あるいは、ユーザが既に所有しているセキュリティ装置を何らかの方法で盗んで交換することなどにより、この脅威を実現化しようとするかもしれない。
ホログラムが提案されている理由は、ホログラムを作成し装置に埋め込むには特別な知識と製造設備を要する為、真正に見えるセキュリティ装置の偽造コストを、潜在的な攻撃者の資力を超えるか、割が合わないほどに増大させるからである。
留意すべきは、信頼性の目に見えるマークを備えるための他の手段、図3Aに示されるホログラム0305の代わりに用いることができるということである。物理的ケーシング0304上に特別な可視的な特性を埋め込むための代替技術であって、ホログラム同様に、製造が困難または高価なものは、ホログラムと同等あるいはそれ以上に優れた偽造対策となる。
その署名エリア0307、偽造のその脅威を削減する追加的な対策は、セキュリティ装置0101の不透明な背面図である図3Aに示される。署名エリアは、ユーザがセキュリティ装置0101受領時にサインするように指示される、適切な表示を有する空欄である。ユーザが自身の署名の偽物を識別できると仮定すると、署名エリア0307にサインをすることは、攻撃者によるセキュリティ装置0101の偽造困難度をさらに増加させる。
一つの実施例において、セキュリティ装置0101の物理的なケーシング0304は、周知の技術を用い、改竄への耐性を提供する。改竄耐性ケーシングは、攻撃者がセキュリティ装置
0101へ物理的にアクセスし、疑いを持たないユーザのセキュリティを侵害する形で密かに行うセキュリティ装置改変の困難度を増加させる。改竄耐性を有する物理的なケーシング0304の改竄は、たとえば、暗号化コンポーネント0302に保存されたプラオベート鍵の破壊を引き起こし、永久的にセキュリティ装置0101を無効化し、そしてセキュリティ装置0101を改竄することでセキュリティを侵害しようとする一人の攻撃者の試みを妨げることを意図する他の効果を引き起こす。
図3Aに戻ってみると、セキュリティ装置0101は、コンピュータ0102がブートする独立し安全なオペレーティングシステムを永続的に保存する為に使われる不揮発性メモリー0303をふくむことが示されている。
セキュリティ上の配慮により、不揮発性メモリー0303は物理的に読み出し専用のメモリータイプ(たとえば、ROMチップ)であることが好ましい。これは、潜在的攻撃者の知能と資力に関わりなく、読み出し専用メモリー上のソフトウェアの完全性を遠隔操作で改竄することは物理的に不可能であるため、よりよいセキュリティを提供する。これは、セキュリティ装置0101によるブート後、コンピュ−タ0102の初期の論理的な完全性を確保するものであるが、ランタイムにおけるコンピュータシステムの完全性は確保されない。これは、コンピュータシステムが、動作中のコンピュータ0102の主記憶装置(RAM)0204にロードされたオペレーティングシステムを注意深く部分的に覆すことにより、理論的には、たとえ一時であっても完全性を侵害しうる高度に知能的な攻撃からの防御に関し、まだソフトウェアセキュリティメカニズムに依存しているからである。
安全度は低下するが明白な読み出し専用メモリー(ROM)の代替品は、フラッシュメモリーのような不揮発性ランダムアクセスメモリー(RAM)である。RAMはROMよりも、提供されるセキュリティは相対的に低いが、それは、セキュリティと引き換えに、変更可能なメモリーにより柔軟性を増したいとする低リスクアプリケーションにより適している。
図3Aに戻って参照すると、セキュリティ装置0101はハードウェア暗号化コンポーネント0302を含むと示されている。
一つの実施例において、暗号化コンポーネント0302は、プライベート鍵、公開鍵暗号化と公開鍵復号化の操作の安全な生成と保存を含む、幅のある公開鍵方式の暗号化サービスを提供するように機能できる。
セキュリティを考慮することで、改竄に耐えるように設計された暗号化コンポーネント0302の一つのタイプを使うことが好ましい。これは、たとえば、セキュリティ装置0101に物理的にアクセスした(たとえば、それを盗むことで)攻撃者による、セキュリティ装置内に保存されたプライベート暗号化鍵をより引き出し難くするかもしれない。留意すべきは、暗号化ハードウェアでの改竄耐性を成し遂げるための技術が周知のものであるということである。
公開鍵暗号とそれを促進するために使われる暗号化ハードウェアの実用性と利点もまた周知の技術である。
暗号化コンポーネント0302をセキュリティ装置0101に統合することに、セキュリティと使いやすさの両面で大きな利点がある。
留意すべきは、セキュリティ装置0101からの取り外しが可能な暗号化コンポーネントの組み込みが可能であることである。たとえば、SIMカードがGSM携帯電話機から取り出して別のものに移動ができるという方法である。これは一方通行で、古いあるいは壊れたセキュリティ装置と関連したプライベート識別鍵を容易に新しい改良されたセキュリティ装置に移動できるようにする。これは費用も安くより簡便にセキュリティ装置を更新する。他方、これがセキュリティに与える影響度合いは、攻撃にさらなる機会を与えるようなセキュリティを弱めるデバイス間で暗号化コンポーネントの移動を可能にするような、特定アプリケーションのコンテキストで、注意深く考慮されなければならない。
暗号化コンポーネントは、最もポピュラーな認証メカニズムであるパスワードを補強あるいは代替する認証メカニズムとして使用される。
セキュリティの大きな部分はアクセス制御に依存する。アクセス制御メカニズムは、一式の規則に基づき誰が何をアクセスできるかを制御する。しかしながら、ある人物が特定の資源(たとえば、ファイル、銀行口座、医療記録)へのアクセスを許可されているかを判断はする為には、まず当該人物の身元を確立することが必要である。認証は身元確立のプロセスであり、そして強度は一人の無許可の攻撃者が一人の認可されたユーザとみなされることの困難度によって測定される。
ユーザの観点から見ると、身元の確立をするには3つの原理がある。すなわち、知っている何か(秘密、パスワード)、持っている何か(一つのトークン、スマートカード)、自身の一部(声、指紋、虹彩)である。
認証プロセスは、セキュリティのより高度なレベルを達成するために、これらの原理に基づくいくつかの要因を組み合わせる。これはN要因認証と呼ばれる。3のうちの2、あるいは2要因認証は大部分のアプリケーション用に十分に安全と考えられている。
パスワードは、知っている何かである。ひとたび攻撃者が秘密のパスワードを発見するや、攻撃者はその何かを知ることになる。ひとつの認証プロセスがパスワードに頼っているだけであれば、攻撃者はユーザの身元を騙り、無許可のアクセスを得るためにパスワードを使用できる。
パスワード(知っている何か)は本質的に認証トークン(持っている何か)あるいは生体認証(自身の一部)よりも弱いと考えられている。なぜならば、セキュリティが侵害されていることをユーザが知るすべがない方法で、攻撃者がこっそりと秘密パスワードを途中で盗むことが可能であるためである。たとえば、インターネットバンキングに使われているコンピュータのセキュリティを侵害する攻撃者は、ユーザのインターネットバンキングの信用証明書をこっそりと途中で盗むトロイの木馬をリモートでインストールできる。あるコンピュータへの物理的アクセスを得た攻撃者は、ハードウェアキーロガーを接続することでパスワードを途中で盗むことができる。ピンホールカメラは同様に同じ効果を成し遂げる状況にある。会社の同僚は、キーボードが入力されるときにキーボードを単に見るだけで(“ショルダーサーフィング”)、パスワードを知るかもしれない。等々。
さらに、多くのユーザにとっては、パスワードを覚えることが困難であるため、できるならば、非常に簡単なパスワードを選びがちになる、ほとんど全てのものに対して同じパスワードを使う、あるいはその両方である。
これは問題をさらに悪化させる。一人の攻撃者がパスワードを推測しやすくすることになる。また、いくつかの条件で、自動化パスワード推測ソフトウェアが使われて、一人の攻撃者が、たとえば、辞書にある全ての単語を試す(パスワード辞書攻撃)、あるいはパスワードのほとんど全ての可能な組み合わせを試す(パスワード暴力)ことができる。
思い出すのがより難しく、しかしまた攻撃者も推測がより困難になる複雑なパスワードを使うことをユーザに強制することは、いくつかの条件下で、逆効果となり、かえって攻撃者がパスワードを盗みやすくする。これは、たとえば、ユーザ達が複雑なパスワードをいたるところで使ったり、かれらのモニターの上やキーボードの下に張り付けた付箋にパスワードを書くことで自分自身で覚えやすくすることが、攻撃者がパスワードを盗む機会を与えることになる。.
ひとたびパスワードが盗まれてしまうと、攻撃者はそれを使ってパスワードが変更されるまで無許可アクセスを行うことができる。
従って、認証をパスワードに頼ることは別の安全なシステムに対する最少攻撃コストを大きく引き下げることができる。
逆に、暗号化認証トークン(あなたが持っている何か)のような物理的なアイテムを盗むことは通常、パスワードを盗むよりははるかに困難である。そして、トークンと認可されたユーザの身元の結合を無効にすることで、見つからずには済まない。
事実上、暗号化コンポーネント0302を組み込むことは、従来型の暗号化認証トークン(あるいはスマートキー)の能力をセキュリティ装置0101に統合する。それは本発明の一つの実施例のセキュリティと簡便さを大きく増やす。
一つの実施例において、暗号化コンポーネント0302を組み込むことは、さらにセキュリティ装置0101に対して、たとえば、RSA Securityの作ったRSA USB認証符号、あるいはAladdin Knowledge Systemsが作ったeToken USBトークンのような、従来型の暗号化認証トークンと同じ使用コンテキストで同じ機能性を備えることができる。このコンテキストの中で、セキュリティ装置0101が、部分的にも全体的にも、Cryptoki (PKCS 11)、あるいは ISO 7816のような標準に適合できるように設計することが好ましい。標準の認証トークンインタフェースプロトコルをサポートすることは、各種の他の装置(たとえば、物理的ペリメータゲートウェア、Windows PC)をより容易にセキュリティ装置0101の暗号化機能群とインタフェースできるようにすることで相互運用性を促進する。セキュリティ装置0101を従来型の認証トークンとして二倍にできることは、認証のために個別装置を購入して持ち歩く必要を終わらせることで、コストを低減し、利便性を増す。これは、たとえば、物理的ファシリティへのアクセスを認証する必要があるユーザ達にとって別な方法で必要であった。
同様に、コストと環境が可能ないくつかのアプリケーションにとって、生体認証センサー(図には示していない)をセキュリティ装置0101の一つの実施例に組み込むことはさらに利点を提供する。
生体認証センサーは、たとえば、指紋読取機(UPEKが作るようなもの)、虹彩スキャナー、あるいはユニークな生体認証(あなたである何か)を測定する他の手段であるかもしれない。
生体認証センサーと暗号化コンポーネントの両方をセキュリティ装置に統合することは、セキュリティ装置0101が、ユーザに安全なパスワードを作成し、保存し、入力する必要性を無くして、2要因認証(あなたが持つ何か、あなたである何か)をサポートできるようにする。これは、十分なセキュリティを提供しながら、ユーザにより高い利便性を提供する。
実際に、認証手段のどの組み合わせが備えるセキュリティと利便性はコンポーネントの品質に依存する。たとえば、生体認証センサーは、正常を不良と間違えたり、不良を正常と間違えるという信頼性の低さが問題となっている。これは、組み込まれるセキュリティ装置0101のセキュリティと使いやすさのそれぞれに大きな影響を与える。
当業者がそれは明らかだと考える間は、完全性のために、図3Aのセキュリティ装置0101実施例は必然的にコンポーネント(すなわち、暗号化コンポーネント0302、不揮発性記憶0303、インタフェース0301))の間での通信手段を含むことに注意することは有益である。そのような手段はコンピュータバス0209と原理的に互換性がある。
図3Bは、改竄耐性のある記憶メディア0308としてセキュリティ装置0101の代替実施例を示した図である。それはコンピュータ0102のメディア読み出し/書き込みインタフェース0210と互換性がある。
特定のコンピュータ0102と関連して作動するセキュリティ装置0101’’’のメディア実施例について、そのタイプのメディアからのブートをサポートすることがBIOS 0206に望まれている。さもないと、別個のブートローダー要素(たとえば、ブートフロッピーあるいはブートCD)が必要となる。ほとんど全ての現代のBIOS 0206は最低限でもCDROM光学式記憶メディアからのブートをサポートする。
留意すべきは、図3Bのホログラム0305’と署名エリア0307’要素は、図3Aと3A’の対応するホログラム0305と署名エリア0307要素と同じ目的を満足する。
記憶メディア0308の種類は、たとえば、CDROM、 DVD、 HD-DVD、 Blu-rayあるいは光記憶メディアの他のタイプ、SuperDiskフロッピードライブ、IOMega ZIPドライブ、あるいは磁気記憶メディアの他のタイプ、Sonyメモリースティック、Secure Digital (SD)メモリーカード、MMC、 SmartMedia、 XDあるいは別種類のソリッドステート記憶メディアを含む。
メディアの種類は、主にコスト、物理的寸法、容量、性能、および最も重要な特定のコンピュータ0102のメディア読み出し/書き込みインタフェース0210との互換性において異なる。これらの相違は、よく適合した特定セキュリティ装置0101メディアタイプを特定アプリケーションに関連させて具体的なコンピュータ0102と組み合わせて利用する方法に影響する。
留意すべきは、光学式メディアのいくつかのタイプをより小さな物理フォームに形作ることは可能である。たとえば、CDROMはほぼ名刺1枚分に形作ることができる。このようなミニチュアディスクは持ち運びにより便利であるが、提供される記憶容量はより少ない。この引き換え条件が好ましいかどうかは、セキュリティ装置0101’’’の特定の実施例において、ソフトウェアの保存にようする記憶容量によって決まる。
図3Aの不揮発性記憶0303を参照して既に説明されたように、物理的に読み出し専用メディアタイプ0308を使うことにセキュリティの利点がある。
図3Aと図3Bのセキュリティ装置実施例を比較する。
図3Bの典型的セキュリティ装置実施例の利点。
図3Bに示される記憶メディア0308としてのセキュリティ装置0101’’’の典型的実施例は、一般的には製造がより簡単で価格も大きく下がる。なぜなら、図3Aのセキュリティ装置0101はより多くの部品を持つためである。これらの部品はまた、規模の経済から大きな利益となる記憶メディアよりは、製造がより高価である。
消費者の観点からは、これは、いずれ要求される将来のアップグレードと同様に、セキュリティ装置0101の初期コストに影響する。
身元が関連付けられる統合された暗号化コンポーネント0302を持つセキュリティ装置0101と比較して、身元は、セキュリティ装置 0101’’’の量産された記憶メディア実施例と通常は関連付けられないので、セキュリティ装置 0101’’’の記憶メディア実施例のアップグレードはサポートがより容易になろう。
留意すべきは、記憶メディア実施例を持つ関連する身元は、記憶メディア自身に暗号化プライベート鍵を記憶することにより、可能となる。しかし、一人の攻撃者にとっては、最適に保護された暗号化コンポーネント0302と比較して、記憶メディア0308から秘密のプライベート鍵を引き出す方がはるかに容易であろう。
その代わり、別個の暗号化トークン(示されていない)は、図3Aのセキュリティ装置0101にある統合化された暗号化コンポーネント0302が備える記憶メディアに類似したセキュリティ上の利点から利益を得る記憶メディア実施例に関連して使用される。この処理において、記憶メディア0308は、プライベート鍵とユーザの身元の間の関連を更新せずに、用意のリプレースあるいはアップグレードされる。
別個の暗号化トークンは、たとえば、RSA Securityが作ったRSA USB認証符号あるいはRSA Smart Card、あるいはAladdin Knowledge Systemsが作ったeTokenスマートカードあるいはUSBトークンである。
別個の暗号化トークンは、コンピュータ0102は、要求された周辺装置と共に両方の装置を提供するに十分な装置インタフェーススロット0207を持つと仮定して、統合化された暗号化コンポーネント0302を含んでいない図3Aのセキュリティ装置0101実施例のバリエーションと同じ効果を成し遂げるために使用される。
他方、何人かのユーザにとっては、たった1個よりはむしろセキュリティ装置を使うために2個のアイテムを持ち歩かなければならないのでは利便性が大きく損なわれるかもしれない。
いくつかのコンピュータは、利用できる装置インタフェース0207のどれかに取り付けられた周辺装置からオペレーティングシステムをブートストラップするためのBIOS 0206 でのサポートが不足する。この場合には、図3Aのセキュリティ装置0101実施例は、コンピュータが記憶メディアのこのタイプからのブートをサポートすると仮定して、記憶メディア0308としてのセキュリティ装置0101の実施例がまだ使われている間は、この特定のコンピュータと連動しては作動しない。実際には、USB装置のような周辺装置よりは、CDROMのような記憶メディアからのブートをサポートすることは、コンピュータ、特に旧式のコンピュータには最もありふれている。
一方、古いBIOSでさえもオペレーティングシステムをブートすることをサポートするタイプの、個別に適切に構成された記憶メディア(たとえば、ブートフロッピーあるいはブートCDROM)を使って古い非互換のBIOS 0206に対処することが可能になる。この場合、ブート作業は個別の記憶メディアにあるオペレーティングシステム初期化ソフトウェアから起動し、そして、ひとたび必要とされるドライバーがロードされると、制御はセキュリティ装置0101上のソフトウェアへ渡される。これは、セキュリティ装置0101が幅広いコンピュータ、特に旧式のコンピュータと連動して使われるようにする。フロッピーブートドライブを使う不利な点は、たとえば、1枚のフロッピーを読み込むのが法外に遅いこと、およびフロッピーディスクが信頼性に劣りがちであることである。それらの理由は、それは非常に初期の技術に基づくためである。より新しく、より早く、より信頼性が高いメディアである光学式記憶メディア(たとえば、CDROM)からのブート作業は、したがって可能であるときは優先される。ユーザの観点からは、セキュリティ装置0101が作動させるために追加のアイテム(たとえば、フロッピーディスクあるいはブートCD)を要することは不便である。
要約すれば、図3Aのセキュリティ装置実施例に関連して、セキュリティ装置0101の図3Bの記憶メディア実施例の第一の利点は、第一に、製造し、アップグレードし、サポートする費用がより少ないことである。第二に、特に旧式のコンピュータに見られる、幅広いコンピュータBIOS 0206 タイプと互換性があることである。
他方、いくつかの欠点も同様に考えられるべきである。
第一に、受動的な記憶メディアは本質的にハードウェア装置よりも柔軟性に劣る。
たとえば、暗号化ハードウェアあるいは生体認証センサーをCDROMのような光学式記憶メディアの中に組み込むことは可能ではない。したがって、N要因認証を成し遂げるためには、追加のハードウェアが要求され、コストを増加させ、ユーザに一つのコンピュータに縛り付けるか、あるいは複数の装置を持ち運ぶことを要求して利便性を大きく損なうことになる。
また、記憶メディアのどの特定タイプがサポートする物理的な形状と寸法に厳密な制限がある。たとえば、図3Aのセキュリティ装置のハードウェア実施例は、キーチェーン、ベルト、ネックレス、あるいは着物の他の部分のように毎日取り付けができるような形状にする。これは、セキュリティ装置0101を持ち運びやすくし、盗まれにくくし、事故で置き忘れにくくする。他方、上記で詳しく記述された小型フォーム要因を除いては、CDROMのような光学式記憶メディアと同じ効果を達成する可能性は少なくなる
セキュリティ装置0101の最適な利便性と使いやすさが本発明の広範囲な採用と安全システム一般に決定的に重要であるとは疑わしい。平均的なユーザは、それが自分のやり方に合っている時は、忍耐強くはないことがよく知られている。
第二に、いくつかのタイプの記憶メディア0308は物理的な損傷により敏感である。CDROM や DVDメディアのような光学式メディアディスクは特に引っかき傷を防止するために注意深い取扱いを要求する。
セキュリティ装置0101’’’の記憶メディア実施例を毎日使用する間に累積した損傷は、結局は、比較的短期間で使用できない装置を廃棄する。
第三に、装置の記憶メディア実施例からライブでオペレーティングシステム環境を走らせることは、他の目的で使用されることからメディアインタフェース0210を防止する1つの方法でメディアインタフェース0210を占有する。しかしながら、十分な主記憶装置0204が利用できるならば、ブートのに主記憶装置0204に記憶メディアの要求された内容をロードすることにより、メディアR/Wインタフェース0210を開放できる。可能であれば、主記憶装置0204にシステムをロードすることはまた、システム性能(主記憶装置は記憶メディアよりも非常に早くアクセスされる)を増加させ、電力消費(主記憶装置をアクセスすることは、CDROMのような記憶メディアをアクセスするよりははるかに少ない電力を消費する)を低減させる。後者は特にラップトップの電池寿命を延ばすことに特に役立つ。
典型的なユーザ相互作用
図4Aは、発明の実施例を使う典型的なユーザ相互作用の概観を示すフロー図である。
本発明の実施例の各種の典型的な局面の構造と操作を詳細に記述する前にユーザが発明の実施例とどのように相互作用するかを説明することは有益である。
最初に、ユーザはセキュリティ装置0101をコンピュータ0102の装置インタフェース0207あるいはメディアR/Wインタフェース0210のどちらかに挿入する(ステップ0402)。図3Aのセキュリティ装置0101実施例は装置インタフェース0207に取り付ける。この間に、図3Bに示す記憶メディアとして セキュリティ装置0101’’’がメディアR/Wインタフェース0210に挿入される。
コンピュータ0102のBIOS 0206がセキュリティ装置0101からブートするように既に設定されていなければ(条件0403)、BIOS 0206が特定のセキュリティ装置0101実施例のデバイスインターフェースまたはメディアの種類を用いてのブート作業をサポートすると仮定し、ユーザはBIOS 0206をセキュリティ装置0101からブートするように指示する(ステップ0404)。
其々のBIOS 0206は、ユーザが一時的な(ちょうど次のセッション用に)あるいはデフォルトの(全セッション)ブートソースとしてセキュリティ装置0101を選べるように異なるインタフェースを提供する(ステップ0404)。
ひとたびBIOS 0206が適切に設定されると、コンピュータは図3Aのセキュリティ装置実施例、あるいは場合によっては、図3Bの記憶メディアセキュリティ装置実施例の不揮発性記憶0303要素の内部に含まれる安全なオペレーティングシステムソフトウェアをブートし始める。
次に、安全なオペレーティングシステムがブートしている間、ユーザはブートプロセスに影響を与え(ステップ0405)、たとえば、手動でキーボード上のファンクションキーを押すことにより、永続性安全記憶(PSS)を消去することを選択する。ユーザには、たとえば、スクリーンに目に見える通知メッセージを表示することにより、コンピュータ0102の出力装置0202を通してこのオプションが通知される。
ユーザが、たとえば、キーボード上の適切なファンクションキーを押すことにより、PSSを消去することを要求すれば(ステップ0405)、確認ダイアログ(ステップ0407)は、この行為の派生的影響を説明し、事故的な取り外しを防止するために、ユーザにさらなる確認を促すように機能する。
同様に、ユーザはPSSの作成をキャンセルするためにブートプロセスに影響を与えるか、初めてセキュリティ装置0101がブートされる、あるいはPSS消去後直ちに、PSSの作成はデフォルトで実行される。
留意すべきは、上記で記述されたユーザ相互作用は、典型的なシステム初期化セクションでさらに記述される特殊な状況に対してのみ要する。
ブートプロセスの後の方で、接続性エージェントがユーザに意思決定、あるいはネットワーク構成パラメータを提供すること(条件1014/1016)を要求した場合、ユーザは接続性エージェントウィザードと相互作用することが要求される(ステップ0408)。接続性エージェントソフトウェアが自動的にネットワーク接続性を構成し確立することに失敗した場合のみ、デフォルトで、接続性エージェントウィザードがユーザと相互作用する可能性があることに留意すべきである。
この点で、ユーザは、たとえば、ダイアルアップあるいはADSLモデム接続の要求された設定を手動で用意する、どちらのワイヤレスネットワークを使うか選択する、またはネットワークの要求されたプロキシー設定を構成することが要求される。
次に、ネットワーク0103への接続性の確立が成功した後で、ユーザはサービスプロバイダーへのに認証が要求されるかもしれない(ステップ0409)。たとえば、ユーザはパスワードを備え、生体認証センサーと相互作用する等々が要求されるかもしれない。
留意すべきことは、いくつかの実施例で、ユーザはプロセスにおけるより早い時期に認証を要求されるかもしれない。たとえば、一つの実施例で、ユーザはPSSにアクセスするために、パスワードを提供する、あるいは生体認証センサーと相互作用することを要求されるかもしれない。
いくつかの実施例で、ユーザは、ブートプロセスにおける早い時期と、その後はサービスプロバイダーに対して、複数回認証を要求されるかもしれない。別のもっと便利な実施例において、ユーザは一度だけ認証を行うことを要し、安全なオペレーティングシステムはサービスプロバイダー0104と通信しこの認証についての証拠を提供する。
最後に、ユーザはサービスプロバイダーと安全に相互作用できる。たとえば、Webブラウザーを使って、インターネット銀行のようなサービスプロバイダーとインタフェースする。
さらに、この時点は、発明の一つの実施例において、たとえば、セキュリティ装置0101からブートされている安全なオペレーティングシステムは、コンピュータ0102のハードドライブ、光メディアディスク、USBキードライブ、フロッピーディスク、ネットワークファイル共有、あるいは企業のウェブサイトに保存された参照資料(たとえば、金融スプレッドシート)をユーザが簡単にアクセスできるよるに十分な機能性を持つ1個のGUIワークスペースをそのユーザに提供する(ステップ0415)。
一つの実施例において、ユーザは、コンピュータ0102の内部記憶装置0208にインストールされたローカルオペレーティングシステムのファイルから、有益なクライアント側アプリケーション内容(たとえば、ブラウザーブックマーク、電子メールの電文)や構成データ(たとえば、電子メール構成、インスタントメッセージングとVoIP口座)を移動させるための移行エージェントと相互作用するかもしれない。
移行エージェントは、システム初期化の間に自動的に、あるいはユーザが手動で(たとえば、GUIメニュー項目、デスクトップアイコン、あるいは管理コンソールを通して)立ち上げられるかのどちらかである。
典型的な外部ファイルシステム
図5は図3A、3Bに示される各種のセキュリティ装置の内部に記憶される典型的な外部ファイルシステムを示す図である。
外部ファイルシステムは図3Aに示されるセキュリティ装置のバリエーションの不揮発性記憶0303要素内に保存される。あるいは、図3Bに示されるセキュリティ装置のバリエーション用の記憶メディア0308に書き込まれる。
外部ファイルシステム0500のタイプは、たとえば、ISO9660(CDROMファイルシステム)、ext2、 ext3、 reiserfs、 vfat、 NTFS、あるいは他のタイプのファイルシステムである。CDROM光記憶メディアのようなセキュリティ装置のバリエーション用に好ましいファイルシステムタイプはISO9660 CDROMファイルシステム標準である。
図5に示すように、外部ファイルシステム0500の内容は、たとえば、ブートローダー0501、オペレーティングシステムカーネル0503、initrd 0502、内部ファイルシステムイメージ0504、およびオートラン要素0505を含む。
コンピュータ0102がブートされるとき、ブーロローダー0501はコンピュータ0102のBIOS 0206 からカーネル0503へ制御を渡すために使用される。ブートローダーのタイプは、たとえば、ISO9660ファイルシステムと互換性のあるisolinuxブートローダー、ext2/3ファイルシステムと互換性があるextlinuxブートローダー、複数タイプのファイルシステムと互換性があるsyslinuxブートローダー、複数タイプのファイルシステムと互換性があるgrubブートローダー、あるいは別のタイプのブートローダーである。
カーネル0503は、たとえばMandatory Access Control (MAC)、 Role Based Access Control (RBAC)、 Trusted Path Execution (TPE)、記憶保護、突破口対策、Virtual Private Network (VPN)ドライバー、あるいは他のセキュリティメカニズムを含む、多層セキュリティアーキテクチャ用のセキュリティメカニズムを含む。
オペレーティングシステムカーネル0503は、たとえば、grsecurityパッチが適用されるLinuxカーネル、NSA SELinux と PAXパッチが適用されるLinuxカーネル、RSBAC パッチと PAXパッチが適用されるLinuxカーネル、openwall硬化パッチが適用されるLinuxカーネルである。オペレーティングシステムカーネル0503の他の例は、たとえば、信頼されているSolarisカーネル、信頼されているHP-UXカーネル、あるいは多層化されたセキュリティアーキテクチャをサポートするためのセキュリティメカニズムを含む別タイプのカーネルを含む。
initrd 0502は、オペレーティングシステムカーネルのいくつかのタイプ(たとえば、Linux)がサポートする2フェーズドシステムブートアップメカニズム用に、カーネル0503が起動される前にブートローダー0501が初期化する初期化スクリプトと基本的な一組のドライバーを含むRAMディスクのイメージである。
最初のブートアップフェーズで、カーネル0503は、ブートローダー0501が初期化するinitrd 0502 RAMディスクの内容から初期ルートファイルシステムを起動しマウントする。第二フェーズで、カーネル0503は、新しいルートファイルシステムとして内部ファイルシステムイメージ0504をマウントしブートプロセスを続けるために、必要なドライバーをロードし装置を調べる初期ルートファイルシステム上のユーザーランド初期化プログラム(例えば、/linuxrc)をコールする。
カーネル0503の他のタイプは、類似の結果を成し遂げるために異なるブートストラッピング技術を使う。
内部ファイルシステムイメージ0504は通常は大きな圧縮ファイルで、外部ファイルシステム0500の内部にあるスペースの大分を占有する。
内部ファイルシステムイメージ0504は、本発明の一つの実施例が備える安全に組み立てられたコンピュータシステム用の機能コンポーネントの大部分を互いに構成する、追加のドライバー、システムソフトウェア、アプリケーションソフトウェア、構成ファイル、およびデータを含む。内部ファイルシステムの内容は典型的な機能概要セクションでさらに詳しく記述される。
内部ファイルシステムは、たとえば、ISO9660、 ext2、 ext3、 reiserfs、 vfat、 NTFS、あるいは別タイプのファイルシステムを含むカーネル0503がサポートするどのタイプでもよい。たとえば、cramfsのような間接費削減用に最適化されたファイルシステムが好ましい。内部ファイルシステムイメージ0504は、セキュリティ装置0101の不揮発性記憶0303あるいは記憶メディア0308の限られた記憶容量を最適に使用するために圧縮される。
オートラン要素0505は、オペレーティングシステムの特定のオートランプロトコルに適合させることで、外部ファイルシステム0500に含まれるユーザ支援ソフトウェアを自動的に走らせるために、Microsoft Windowsのようないくつかのタイプのメインストリームオペレーティングシステムを指示するためにセキュリティ装置0101により使用されるソフトウェアと特別な構成ファイルを含む。
オートラン要素0505は、たとえば、セキュリティ装置0101からソフトウェア0102をリブートする前に、走らせているアプリケーションの状態を保持する(すなわち、ハイバネーションモード)ようにコンピュータのローカルなオペレーティングシステムに指示するスマートリブートソフトウェアを走らせるために使用される。これは、ユーザが走らせているアプリケーションの全てを終了させた後で再度起動するトラブルを起こすことなく、彼のコンピュータの内部記憶装置にインストールされたローカルなオペレーティングシステムからセキュリティ装置0101と背部が備える独立した安全なオペレーティングシステム環境へユーザが切り替えできるようにすることで、利便性を増加させることができる。
オートラン要素0505はまた、たとえば、セキュリティ装置0101用の1冊のユーザマニュアルを提出する、ユーザが彼のコンピュータ0102のBIOS 0206を再構成しやすくする、ブートディスク(たとえば、ブートフロッピー、ブートCD)を作成する、インターネットサポートをWebブラウザーで始める、あるいは、セキュリティ装置0101に実際にブートする前にユーザのコンピュータにあるどの他の有益なソフトウェアを走らせるために使用される。
留意すべきは、オートラン要素0505が、攻撃者により既に侵害されて、十分には信頼できない安全なオペレーティングシステム環境で実行されるかもしれないことである。たとえば、ユーザのWindows PCのセキュリティを侵害した攻撃者は、オートラン要素により実施される機能のいくつかをはっきりと堕落させるように設計された特別なソフトウェアをインストールするかもしれない。ユーザのコンピュータ0102をリブートするオートラン要素に依存する特定の実施例は、攻撃者によりインストールされた特別なソフトウェアが、セキュリティ装置0101が(たとえば、Windowsがまだ作動している間に)コンピュータに挿入されたと認識し、そしてセキュリティ装置を用いてリブートする代わりにセキュリティ装置のシミュレーションを用いてリブートするように攻撃者がシステムを再設定するといった、知的に洗練された攻撃に対して脆弱である。シミュレーションは、攻撃者の目的を実現することによりユーザのセキュリティを侵害できる特別に精巧な悪意のあるソフトウェアを含む。
結果として、非常にリスクが高いアプリケーションに対して、オートラン要素を少しも含まないことが好ましい。他のアプリケーションに対しては、知的に洗練された攻撃用の潜在的な方法を対応して最小化するために、オートラン要素への依存度を少なくとも最小化することが好ましい。
典型的な機能概要
図6Aは、発明の実施例に対する典型的なマルチレベルの機能概要を示す図である。
最上位の物理レベルでは、発明は、ブートストラップ作業0621、プラットフォーム初期化0622、ワークスペースインフラストラクチャ0623およびワークスペースレベル0415での機能を実行するためのソフトウェア要素を含むセキュリティ装置0101として組み込まれている。これらの機能は連携して、使いやすく、しかし高リスクアプリケーション用にさえ十分に安全な、タスク固有の組立型コンピュータシステムを提供する。
セキュリティ装置0101の典型的な物理的な実施例は、上記の図3A、 3A’ と 3Bに基づきセキュリティ装置の典型的な物理的な実施例の項で既に記述されている。
典型的なブートストラップ作業0621要素、ブートローダー0501とオペレーティングシステムカーネル0503は、図5に関連して上記の典型的な外部ファイルシステムの項で既に記述されている。
プラットフォーム初期化0622、ワークスペースインフラストラクチャ0623およびワークスペースレベル0415での他の典型的な要素は、同じセクションで同様に紹介された内部ファイルシステムイメージ0504の内部に含まれる。
典型的なプラットフォーム初期化要素0622は、たとえば、初期化マネージャ0601、永続性安全記憶メカニズム0602およびドライバー0630を含む。実施例の典型的なプラットフォーム初期化はさらに、図7A、 8A、 9A-I と 9A-IIに基づき典型的なシステム初期化セクションで既に記述されている。
ブートプロセスの制御は、結局は初期化マネージャ0601に回される。初期化マネージャは、たとえば、ブートプロセスを最適化し、ハードウェア構成パラメータを決定し、ドライバーをロードし、検知したハードウェアプロファイルをキャッシュし、システムサービスをロードし、初期化されたシステム状態の記録を保守し、あるいは他の初期化操作を実行するように機能する。
一つの実施例において、ドライバー0630はモジュラー型のオペレーティングシステムコンポーネントである。コンポーネントは、たとえば、ハードウェア抽出、ファイルシステム、セキュリティメカニズム、ネットワークプロトコルスタックなどのような幅広いモジュラー型のカーネルレベルのオペレーティングシステム機能性をサポートする。
この機能性の小さな部分のみがあるコンピュータ0120に要求されることがありそうな時、主カーネル0503の範囲内で幅広いハードウェア周辺装置をサポートする機能性を統合することは、通常は効果がないと考えられる。ドライバー0630を使って、幅広いカーネルレベルの機能性はオンデマンドでロードされることが可能となり、メモリーのような価値のあるコンピュータリソースを節約する。
ワークスペースインフラストラクチャ0623要素は、ユーザインタフェースワークスペースレベル0415要素が作動するコンテキストを確立するために必要なサポートを備える。
典型的なワークスペースインフラストラクチャ0623要素は、たとえば、グラフィックスサブシステム0603、接続性エージェント0604、VPNクライアント0605、移動エージェント1101、およびワークスペース0415用に操作コンテキストを確立することを支援する他の要素を含む。
グラフィックスサブシステム0603は、たとえば、コンピュータ0102の出力装置0202ハードウェアへ高位レベルインタフェースを提供し、したがって、他のプログラムがグラフィカルユーザインタフェース(GUI)を提供することができる共有コンテキストを作成するように機能する。
グラフィックスサブシステム0603は、たとえば、Xorgグラフィックスサーバー、XFree86グラフィックスサーバー、kdriveグラフィックスサーバー、フレームバッファーベースのグラフィックスサーバー、あるいは別タイプのグラフィックスサーバーを含む。
グラフィックスサブシステム0603はさらに、たとえば、KDE、 GNOME、 XFCE、 Enlightenment、 Fluxbox,、あるいは他のウィンドウ/デスクトップ管理ソフトウェアのようなウィンドウ/デスクトップ管理ソフトウェアを含む。
VPNクライアント0605は、たとえば、PSTN、イントラネット、インターネット、あるいは別タイプのネットワークまたはネットワークの組み合わせのような別のネットワーク0103を通して、仮想プライベートネットワーク(VPN)への安全な接続を確立するために使用される。最初に、これは、VPN接続は、外部からいくつかのセキュリティセンティティブネットワークとインタフェースする唯一の方法である。第二に、仮想プライベートネットワークは、潜在的に敵対的な公衆ネットワーク上の幅広い脅威から仮想プライベートネットワークにあるコンピュータシステムを論理的に孤立化させることにより、追加したセキュリティ層を提供するために使われる。
各種の状況のいたるところでネットワーク接続性を確立する際にユーザを支援するために使われる接続性エージェント0604は、図10−I、 10−II と 10−IIIに基づき以下の典型的な接続性エージェントセクションでさらに詳しく記述される。
たとえば、コンピュータ0102の内部記憶装置にインストールされたローカルなオペレーティングシステム環境のファイルから有益なアプリケーション内容と設定データを移行する際にユーザを支援するために使われる移動エージェント1101は、図11−I、 11−II、 11−III と 11−IVに基づき以下の典型的な移行エージェントセクションでさらに詳しく記述される。
ユーザは、特定の実施例の最適化の対象である特定のタスクの実行に要する機能を提供するワークスペース0415レベル要素と主に相互作用する。
典型的なワークスペース要素0415は、たとえば、クライアントアプリケーション0606、ファイル/ネットワークエクスプローラー0607、生産性スイート0608、管理コンソール0609、アドバンストオプション0610、終了オプション0611、コンソールロック0613および各種ウィザード0612を含む。
クライアントアプリケーション0606は、たとえば、Mozilla Firefox あるいはr OperaのようなWebブラウザー、rdesktopのようなシン端末クライアント、 thunderbird または evolutionのような電子メールクライアント、OpenSSHのようなsshクライアント、あるいはサービスのどのような標準あるいは企業固有のタイプ用の別タイプのクライアントを含む。
ファイル/ネットワークエクスプローラー0607は、たとえば、コンピュータ0102のハードドライブ0208、光学式メディアディスク、USBキードライブ、フロッピーディスク、ネットワークファイル共有、Webサイトあるいはデータの他のソースに保存された参考資料(たとえば、金融スプレッドシート)を便利にユーザがアクセスできるようにする手段を提供する。
ファイル/ネットワークエクスプローラー0607は、たとえば、KDEの Konqueror、 GNOMEの nautilus、 Midnight Commander、Webブラウザー、あるいはファイルとネットワークエクスプローラーの他のタイプを含む。
生産性スイート0608は、たとえば、ユーザがファイル/ネットワークエクスプローラー0607を通してアクセスするファイル用のファイル形式の読み出しと書き込みを可能にするOpenOffice または AbiWordのようなソフトウェアを含む。いくつかのアプリケーションについて、Microsoft Office生産性スイート(たとえば、Word、 Excel、 PowerPoint)で作成されるような多く出回っているファイル形式と多少互換性があるOpenOfficeのような生産性スイート0608を含むことが好ましい。
いくつかのアプリケーションにおいては、たとえば、リモートデスクトップ共有、SSHデーモン、あるいはネットワークファイル共有のようなシステムサービスの構成を設定する為に使われる管理コンソール0609(たとえば、webmin)を含むことが好ましい。
しかしながら留意すべきは、提案されたサービスを最小化し、非常にリスクの高いアプリケーションに向けて最適化された実施例に対する複雑性に対応して縮小することが好ましい。
ひとつの実施例において、アドバンストオプション0610要素は、たとえば、妥当なデフォルトに正常に設定されたアドバンスト設定を構成するために、より上級あるいは専門家のユーザにより使用される。いくつかのアプリケーションに対して、平均的な専門家でないユーザに混乱を与えることを避けるために、このようなアドバンストオプション0610を隠す、あるいは分離することが好ましい。
ひとつの実施例において、ユーザは、終了オプション0611を使って安全なセッションをパワーオフする、一時停止する、リブートする、あるいは、終了できる。
ひとつの実施例において、ユーザはコンソールロック0613要素を使ってセッションをロックする。ユーザは、たとえば、GUIオプション(メニュー項目、アイコン等)を選択する、あるいはコンピュータ0102からセキュリティ装置0101の接続を断つことで、セッションをロックする。これは、たとえば、会議へ参加する、あるいは昼食で外出するなどの理由により、コンピュータ0102からユーザが離れることを可能にするので便利である。
ひとつの実施例において、ウィザード0612は、ユーザが初めてシステムをブートした後、特別に直ちに、システムの設定と構成の際にユーザを支援する。一部のユーザは、一度に全てのオプション設定をするよりも威圧感が著しく少ない為、2,3の関連した設定オプションとそれらに係る短い説明を含む一連のダイアログを提示するウィザード0612を好む。
典型的なシステム初期化
図7Aは、発明の実施例に対するブートプロセス0701への展開的なステップの概観を示すフローチャートである。
図7Aで図解された典型的なブートプロセス0701の結果は、動作中のオペレーティングシステム環境である。これについてはさらに詳しく図12を参照しながら以下の典型的なランタイムOSアーキテクチャの項で説明する。
典型的なブートプロセス0701を通じて、ユーザは、先に図4Aを基づいて説明した典型的なユーザ相互作用の項の好ましい実施例と対話することができる。
以下で記述する典型的なブートプロセス0701ステップのコンテキスト及び関与する要素は既に先の項で紹介済みである。
コンピュータ0102が起動またはリブートされた直後、プロセッサー0205はBIOS 0206にある特別なソフトウェアにより制御される。BIOSは、OSオペレーティングシステムをブートストラップする準備としてハードウェアの基本的な初期化を実行する。
第一に、セキュリティデバイス0101からブートするようにユーザが指示したBIOS 0206は、ブートローダー0501に制御を渡す。
次に、ブートローダーは制御をOSカーネル0503へ渡す。
一つの実施例において、カーネル0503は、ブートローダーにより初期化されたinitrd 0502 RAMディスクの内容から初期のルートファイルシステムを起動しマウントする。この場合に、カーネル0503は初期のルートファイルシステム上のuserland初期化プログラム(例えば /linuxrc)を呼び出す。ファイルシステムは、新しいルートファイルシステムとして内部ファイルシステムイメージ0504をマウントし、ブートプロセス0701を続けるために、必要なドライバーをロードしデバイスを調べることができる。
一つの実施例において、十分なメモリーが利用可能ならば、外部ファイルシステム0500上の内部ファイルシステムイメージ0504を、この時点で、主記憶0204で作成された一時的なRAMファイルシステム(ramfs)にロードすることができる(ステップ0702)。既に記述したように、これにより性能を大きく向上させ、電力消費を低減する。
次に、外部ファイルシステム0500上の内部ファイルシステムイメージ0504は、ルートファイルシステムとして再度マウントされる(ステップ0703)。
注意点は、一つの特定の実施例において、内部ファイルシステムイメージ0504がアクセス(ステップ0702とステップ0703)される前に、initrd 0502 RAMディスクイメージにある初期化スクリプトは、必要なドライバーをロードし、セキュリティデバイス0101用コンピュータ0102のハ−ドウェアを調べ、そして内部ファイルシステムイメージが含む外部ファイルシステム0500をマウントする必要があることである。例えば、セキュリティデバイス0101の特定の実施例がUSB周辺装置としてコンピュータ0102に接続されるならば、initrd 0502 RAMディスクにある初期化スクリプトは、セキュリティデバイス0101と再度インタフェースし、当該デバイスが含む外部ファイルシステムにアクセスするために、USBドライバーをロードしてUSBバスを調べる必要がある。同様に、例えば、内部ファイルシステムイメージ0504が圧縮され、そしてカーネルがこの種の圧縮用のサポートを内蔵していないならば、初期化スクリプトはそれをサポートするドライバーをロードする必要がある。
次に、ブートプロセス0701の制御は、以下にさらに記述される内部ファイルシステム0504の内部に含まれる典型的な初期化マネージャ0601ソフトウェアに渡される。
典型的な機能概要の項で既に記述したが、初期化マネージャ0601は、例えば、ブートプロセス0701を最適化し、ハードウェア設定パラメータを決定し、ドライバーをロードし、ハードウェア設定をキャッシュし、システムサービスをロードし、初期化されたシステム状態の記録を保守し、あるいはほかの初期化操作を実行するように機能する。
一つの実施例において、典型的な初期化マネージャ0601は、コンピュータ0102の内部記憶0208デバイス上のローカルオペレーティングシステムのファイルシステム内で存在している安全で不透明な(例えば、暗号化された)コンテナファイルの内部に永続的に有用なデータを記憶するために、上記の典型的な機能概要の項で紹介された永続性安全記憶(PSS)メカニズムを使う。
初期化マネージャ0601は、物理的に読み出し専用記憶要素0303/0308からオペレーティングシステム環境をロードする際に特有の明らかな制限を克服するためにPSSメカニズム0602を使用する
例えば、ユ−ザが、Microsoft Windowsがインストールされているコンピュータ0102をセキュリティデバイス0101に基づいて最初にブートするとき、初期化マネージャ0601は固定磁気ディスク装置0208’上のローカルNTFS (または FAT32) Microsoft Windowsタイプのパーティション内でPSS要素を作成する。
PSS要素はそれから、例えば、ネットワーク設定パラメータ、ユーザ設定、アプリケーション内容と設定データ、および雑多なユーザが作成したデータを安全に記憶するために使用される。さらに、初期化マネージャ0601は、前回のブートの際に自動検出して、あるいは手動で設定されたハードウェア設定パラメータ、初期化されたシステム状態、あるいはブートプロセスの間に作成される他のデータをPSS要素に保存する。
これにより、初期化マネージャ0601はブートプロセス0701の速度、効率および利便性を最適化できるようになる。
言い換えれば、最初にユーザがセキュリティデバイス0101を基づいてコンピュータ0102をブートする際は、ブートプロセスにおいてハードウェアの検出および設定、初回のシステムサービス初期化、その他のブート作業を実行する必要があるため、ブートプロセス0701の速度は比較的遅く、ユーザとの手動の相互作用をある程度要する場合がある。対照的に、次にユーザが同じくコンピュータ0102をセキュリティデバイス0101に基づいてブートするとき、それが現行のオペレーティングシステム環境をロードする時間は大きく縮小され、そしてPSSメカニズム0602が作動させるブートプロセス0701最適化のお蔭でユーザ相互作用はほとんどかまったく要求されない。
結果として、発明の一つの実施例では、PSSメカニズム0602は典型的な初期化マネージャ0601の操作において大きな役割を担う。
図8Aは、図7Aのブートプロセス0701の間、初期化マネージャ0601の操作での典型的なステップを示すフローチャートである。
まず、初期化マネージャは、図9A−IIを基づいて以下にさらに記述されるPSS要素0841’をアクセスするための典型的な方法を使って、永続性安全記憶(PSS)要素のアクセスを試みる(ステップ0841’)。
この操作(ステップ0841’)はしかしながら、例えば、ユーザが初めてセキュリティデバイス0101によるブートを行うという理由でPSS要素が作成されなかった場合、あるいは既存のPSS要素がどういうわけか改竄された場合には、失敗する。
初期化マネージャ0601がPSS要素へのアクセス(ステップ0841’)に失敗すると、それからハードウェア設定パラメータを決定するように機能し(ステップ0820)、ドライバーをロードし(ステップ0815)、そして、PSS要素がユーザにキャンセルされない限り(ステップ0406)、PSSを作成(または再作成)する(ステップ0823)。
ハードウェア設定パラメータを決定するためのソフトウェアは、図2を基づいて発明が使用される典型的な環境の項で既に記述したコンピュータ0102ハードウェアを調べるように機能し(ステップ0820)、パラメータをサポートするためにロードしなければならないオペレーティングシステムドライバーおよび当該ドライバーに要するパラメータを自動的に決定する。
例えば、ハードウェア設定パラメータを決定するためのソフトウェアは、接続されたハードウェアの種類、型およびベンダーに関する情報についてコンピュータ0102の BUS 0209に対してクエリーを行い、次いでBUSハードウェア署名をデバイスドライバーおよびデバイスパラメータと関連付ける特別なデータベースにある、対応したハードウェア設定パラメータを調べる機能性を有する。ハードウェア設定パラメータを決定するためのソフトウェアはさらに、例えば、望ましいスクリーン解像度のようなパラメータを取り決めるために、ビジュアルディスプレイデバイス0202を制御するグラフィックスカード、および別タイプのハードウェア設定パラメータを含むハードウェアの特定タイプとインタフェースする機能を有する。
一つの実施例において、ハードウェア設定パラメータを決定するためのソフトウェアはさらに、コンピュータ0102の内部記憶0208デバイス上にインストールされたローカルオペレーティングシステムの設定ファイルフォーマットからハードウェア設定パラメータをインポートするための機能を含む。オペレーティングシステム(例えば、Microsoft Windows)が既にコンピュータ0102の固定磁気ディスク装置0208にインストールされていると仮定して、コンピュータのハードウェアと相互運用するようにほとんど場合に設定されている。それ自体は、いくつかのアプリケーションに対して、さらにハードウェア検出と設定の操作をさらに自動化するために、これらの既存の設定パラメータを活用するソフトウェア機能を含むことが望ましい。この機能をサポートするために、initrd 0502はメインストリームのオペレーティングシステム(例えば、NTFS、 VFAT)の固有のファイルフォーマットへのアクセスに要する適切なドライバーを含む必要がある。
それ故に、ハードウェア設定パラメータを決定するためのソフトウェアは、自動的なハードウェア設定に有益な情報を抽出するためにメインストリームのオペレーティングシステム(例えば、Microsoft Windows)の設定ファイルフォーマット(例えば、レポジトリー)を構文解析するルーティンを含む。例えば、CRTモニターのような多くのビジュアルディスプレイデバイス0202は複数のモード(例えば、解像度、リフレッシュレート、色の深み)で操作できる。多くの異なるモニター設定が可能であるが、一人のユーザがあるモニターについて特定の設定を好む可能性が高い。客観的に見て、ある有効なモニター設定が他の設定に比べより正しいということはない。ユーザが正しいと認識するモニター設定は、必ずしもハードウェアを調べることにより検出することはできない。そのため、固定磁気ディスク装置へインストールされたローカルオペレーティングシステムの設定ファイルからこの情報を抽出するための機能を含むことは有益である。
一つの実施例において、ハードウェア設定パラメータを決定するためのソフトウェアが自動的にハードウェア設定パラメータを見つけられなければ、それは手動あるいは半自動で設定を実行するためにユーザと相互作用する。しかしながら一般には、可能な限りユーザの相互作用を最小化することが望まれる。なぜなら、平均的なユーザは通常、コンピュータ0102のハードウェア設定の詳細を熟知しておらず、そのため、このような情報を提供するように求めることは、ユーザを挫折、混乱させるなどの不便を生じるためである。
ハードウェア設定パラメータを決定するためのソフトウェアは、例えば、Knoppixのハードウェア自動検出ソフトウェア、kudzu、あるいはハードウェアを検出し、調査し、設定するためのその他のソフトウェアを含む。
図4Aを基づいて上記の典型的なユーザ相互作用の項で既に記述しているように、いくつかのアプリケーションに対して、ユーザが、例えば、ブートの最中にキーボードにある特別なファンクションキーを押すことにより、PSS要素(条件0406)の作成をキャンセルする初期化マネージャ0601と相互作用できるようにすることが望まれる。
図に示されているように、ほとんどのアプリケーションに対して、ユーザが特殊な状況によりはっきりと介在しない限り、PSS要素はデフォルトで作成される。
例えば、ユーザが将来に再び使うようなことはありそうもないコンピュータ0102(例えば、空港でのインターネットキオスク)をセキュリティデバイス0101に基づいてブートする場合、PSS要素の作成につきキャンセルを選択することは、本来多くの時間をとるブートプロセス0701での不要なステップを排除する上で望ましい。同様に、コンピュータ0102がセキュリティデバイス0101のユーザに所有にかからない場合、ユーザが当該コンピュータ0102の固定磁気ディスク装置0208上で大きな暗号化されたファイルを作成しないことをコンピュータの所有者が望む可能性がある。
条件0406を参照し直すと、ユーザがPSS要素の作成をキャンセルしない限り、初期化マネージャ0601は、図9A-Iを基づいて以下にさらに記述される永続性安全記憶要素0823を作成する典型的な方法を使って、PSS要素を作成する(ステップ0823)。
次に、初期化マネージャ0601はPSS要素をアクセスする(ステップ0841')。
PSS要素が作成され(ステップ0823)、そしてアクセスされた(ステップ0841')あと、初期化マネージャは、早くに自動検出あるいは手動で設定された(ステップ0820)ハードウェアプロファイルと設定パラメータをPSS要素に保存する(ステップ0824)。
PSS要素に保存された(ステップ0824)ハードウェアプロファイルと設定パラメータは、例えば、その後ブートプロセスを上述のように最適化するために使用される。
次に、初期化マネージャ0601はシステムサービスを開始する(ステップ0821)。
一つの特定の実施例において、初期化マネージャ0601は、初期化スクリプトがどのように相互に依存しているかにより決定される順番で、ディレクトリーに記憶された初期化スクリプトのグループを実行することにより、システムサービスを開始する(ステップ0821)。可能な時は、ブートプロセス0701のステップの速度と効率を増加させるため、並行的に初期化スクリプトを実行させることが望ましい。
システムサービスは、例えば、パーソナルファイアウォールと強制アクセス制御(Mandatory Access Control)ポリシーのようなセキュリティメカニズムを可能にするスクリプトを含む。他の例は印刷サービス、フォントサーバー、ネットワーク近傍モニター、取り外し可能なデバイスとインタフェースするヘルパーデーモン、および他の有益なサービスを含む。
他方、図13を基づいて以下に記述する典型的なセキュリティ層の項でさらに説明するセキュリティ上の理由により、特定の実施例に含まれるシステムサービスであって、特にその実行に特別な特権を要するシステムサービスを最小限に抑え、より単純なサービスをもって必要とされる機能を提供し、可能な限り少ない特権でサービスを実行することにより、当該実施例の複雑性を削減することが好ましい。
次に、初期化マネージャは、上記典型的な機能概要の項で図6Aにおけるワークスペースインフラレベル0623のグラフィックスサブシステム0603として既に紹介されたグラフィカルユーザインタフェース(GUI)を開始する(ステップ0816)。
注意すべきは、一つの実施例において、GUIの開始(ステップ0816)は、グラフィックスサブシステム0603の設定ファイルと初期化スクリプトによって特定される他のプロセスを開始するよう機能することである。
次に、PSS要素が初期化されたシステム状態の記録を保存するに十分なほど大きいならば(条件0843)、初期化マネージャ0601はPSS要素へ初期化されたシステム状態の記録を書き込むように機能する(ステップ0844)。技術的に、この操作は時折ディスクへのサスペンド作業(サスペンディング)と呼ばれ、サスペンドされた携帯コンピュータ(例えば、ラップトップあるいはPDA)のランタイム状態を、後で相対的に素早くリストアできる方法で、固定磁気ディスク装置にフリーズするために通常は使われる。携帯コンピュータでは、ディスクへのサスペンド作業は有益である。なぜなら、電池の節約と共に、使用の利便性得られる為である。当然ながら、発明の好ましい実施例において、このステップ(0844)は、ブートプロセス0701の最中にシステムを実際にサスペンドあるいはフリーズすることを意図するものではない。
初期化されたシステム状態記録(ステップ0844)を保存することは、その後のブートで現行オペレーティングシステム環境をロードするためにかかる時間量を大きく削減できるようにする点で有益である。なぜなら、特定の状況下では、事前に初期化されたシステムの状態をディスクからロードすることは、初期化した状態を従来型のブートプロセスで再作成するよりも効率的であるためである。
他方、ディスクへの状態の保存は、保存を要する状態の程度に直接比例し大量の時間と、固定磁気ディスク装置上のスペースを消費する。
例えば、初期化したシステム状態を保存する一つの方法においては、主記憶0204の内容すべてのイメージをPSS 要素に収めることを要するかもしれない。例えば1ギガバイトのメモリーを持つコンピュータ0102の場合、メモリーの完全なイメージをディスクに保存することは大きな時間量と内部記憶0208装置上のスペースを要する。
結果として、いくつかのアプリケーションにおいては、ディスクへ保存を要するより状態が少ない、より効率的な初期化されたシステム状態記録(ステップ0844)の方法を用いることが好ましい。例えば、この方法の一つのバリエーションにおいては、ディスクに保存されたオペレーティングシステムのVM(仮想記憶)メカニズムによって割り振られるメモリーページのみを要する。同様にまた、キャッシュ/バッファーとして使用されるVMページは必要としない。このバリエーションでは、割り当てられていない(フリーな)キャッシュ/バッファーメモリーページは保存されないため、相当の時間と内部記憶0208装置上のスペースの節約になる。
前述の条件0843によれば、PSS要素が初期化したシステム状態の記録を保持するに十分でなければ、初期化マネージャ0601はこの操作を実行する(ステップ0844)ことなしに終了する(ステップ0845)。
PSS要素のサイズに影響を及ぼす状況については、図9A−Iを基づいて以下の典型的なPSSを作成する方法の項でさらに記述する。
図8Aのトップに戻ると、初期化マネージャ0601がうまくPSS要素にアクセスできた場合、例えば、ブートの最中に、キーボード上の特別なファンクションキーを押すことにより、ユーザがPSS要素を消去する(条件0405)ために初期化マネージャ0601と相互作用できるようにすることが望ましい。
このユーザ相互作用ステップ0405は、図4Aに基づいて上記の典型的なユーザ相互作用の項で既に記述している。
ユーザは、コンピュータ0102の出力デバイス0202を介し、例えば、スクリーンに表示された視覚的通知メッセージにより、このオプションについて知らされる。
既に説明したように、ユーザが、例えば、キーボード上の特別なファンクションキーを押すことにより、PSS要素の消去要求を出した場合(条件0405)、確認ダイアログ(条件0407)が作動し、過失による消去を防止するためにこの行為の派生的影響を説明し、ユーザにさらに確認を促す。
ユーザが確認すれば(条件0407)、PSS要素は消去され(ステップ0805)、初期化マネージャ0601は、まるでPSS要素へのアクセスが成功しなかった(条件0841)かのように、ステップ0820から記述した流れに沿って実行を続ける。
注意点は、PSS要素の消去(ステップ0805)は、作成されたファイルシステムからPSS要素に関連したファイル(例えば、キーファイル、コンテナ)を削除することにより、内部に保存されたデータの全てを永続的に破壊するかもしれないことである。
PSS要素の消去は、望ましくないデータ消失につながる不可逆的な破壊的操作であるので、その実行を正当化できる理由は限定される。ユーザは、例えば、工場出荷時のデフォルト設定に基づくオペレーティングシステム環境の最新インスタンスを再度初期化するために、PSS要素の消去(ステップ0805)望むかもしれない。例えばユーザがPSS 0602での設定を激しく変更してしまった場合、新たなオペレーティングシステム環境への再初期化は、手動による再設定の試みよりも好ましい代替案に思えるかもしれない。別の例としては、新入従業員が、退職した古い従業員のセキュリティデバイス0101とコンピュータ0102を受け継ぐ場合がある。
ユーザがPSS要素の消去を要求しない場合(条件0405)、初期化マネージャ0601は次にコンピュータ0102のハードウェアプロファイルに変更があったか(条件0826)を調べようとする。
一つの実施例において、このステップは、コンピュータBUSに接続されたハードウェアの識別情報(例えば、種類、型およびベンダーなど)についてコンピュータ0102 BUS 0209に問い合わせ、それから、当該ハードウェアプロファイルとPSS要素に既に保存されているハードウェアプロファイルを比較することにより実施される。
ハードウェアプロファイルは、ユーザが新しいハードウェアを自身のコンピュータ0102にインストールするとき、あるいは既存のハードウェアを更新するときに変更される。例えばユーザは、古いグラフィックスカードを新しくさらに強力なグラフィックスカードにアップグレードし、新しいワイヤレスネットワークインタフェース0203カードおよび追加的な固定磁気ディスク装置0208を加え、主記憶0204量を変更し、CPU 0205 をアップグレードし、あるいはハードウェアプロファイルに反映されるその他の変更をコンピュータハードウェアについて行う。
ハードウェアプロファイルが変更されている(条件0826)ならば、初期化マネージャ0601はハードウェア設定パラメータを決定し(ステップ0820)、PSS要素へ新しいハードウェアプロファイルと設定パラメータを保存し(ステップ0824)、PSS要素に初期化されたシステム状態の記録がある場合はそれを削除する(ステップ0806)。この動作の論理的根拠は、ハードウェアプロファイルが変更されている(条件0826)ならば、以前のブートプロセスでPSS要素に保存され既に検出されたハードウェア設定パラメータは、もはや新しいハードウェアには適用されない。従って、この場合、ハードウェア設定パラメータを再度決めることが望ましい(ステップ0820)。
同様に、ハードウェアプロファイルが変更されている(条件0826)ならば、PSS要素に既に保存された初期化されたシステム状態の記録(ステップ0844)は、もはや新しいハードウェアとの互換性を持たないかもしれない。従って、この場合は、それを削除することが望ましい(ステップ0806)。
一つの実施例において、新しいハードウェア設定パラメータは、最新のハードウェアプロファイルと既に保存されているハードウェアプロファイルとの比較に基づき変更されたハードウェアコンポーネントについてのみ決定される(ステップ0820)。新しい、あるいは更新されたハードウェアについてのみハードウェア設定パラメータを決定することにより、より迅速かつ効率的な実行が可能となる。
条件0826に戻り、ハードウェアプロファイルに変更がない場合、初期化マネージャ0601は、事前に初期化されたシステム状態の記録がPSS要素に存在する(条件0827)かどうか、そして存在している場合は、事前に初期化されたシステム状態を回復するかどうかを確認する。
既に記述されたように、事前に初期化されたシステム状態からシステムを回復すること(ステップ0814)は、従来型のブートプロセスで再度その初期化されたシステム状態を再作成することよりも効率的である。したがって、次のブートにおいて現行オペレーティングシステム環境をロードする時間の長さを大きく削減できるようになる。ブート時間の短縮は、いくつかのアプリケーションにおける発明の一つの実施例のユーザに対する利便性を大きく改善する。
示されているように、初期化されたシステム状態の記録がPSS 要素に存在する(条件0827)か、あるいは実行がステップ0806から続いているならば、初期化マネージャ0601は適切なドライバーをロードするように機能し(ステップ0815)、システムサービスを開始し(ステップ0821)、グラフィカルユーザインタフェースを起動し(ステップ0816)、そして、PSS要素がそれを保持するために十分な大きさであれば、(条件0843)、最後にPSS要素に初期化したシステム状態の記録を保存する(ステップ0844)。
PSS要素にうまくアクセスできないこと(条件0841‘)を受けて、これらのステップは図8Aの上段右手側に描写されたステップの流れに関する説明の中で、既に説明している。
言い換えれば、それらのステップは、コンテキスト上の理由からバリエーションが相対的に小さいことを除き、同じ番号が示すように機能的には同じである。
図7Aを再度みてみると、ブートプロセス0701で行われたシステム初期化ステップは、ひとつの実施例において、既に紹介された接続性エージェント0604ソフトウェアの起動を含む場合がある。ソフトウェアは各種の状況にわたりネットワークへの接続性を確立するにあたりユーザを補助するために使用され、図10-I、 10-II と 10-IIIに基づき下記の典型的な接続性エージェントの項でさらに説明される。
例えば、接続性エージェント0604はそれ自身が初期化マネージャ0601により起動されるグラフィックスサブシステム0603の初期化スクリプトにより起動される。これは、グラフィカルインターフェースを用いて、接続性エージェント0604が容易にユーザと相互作用できるようにするので、いくつかの実施例においては望ましい。
典型的な永続性安全記憶方法
既に説明したように、永続性安全記憶(PSS)メカニズム0602は、コンピュータ0102の内部記憶0208装置上のローカルオペレーティングシステムのファイルシステム内に常駐している安全で不透明な(すなわち、暗号化済み)のコンテナファイルの中に永続的にデータを保存する為に使用される。
永続性安全記憶要素を作成する典型的な方法
図9A-IはPSS(永続性安全記憶)要素を作成する一つの方法での典型的なステップを図解するフローチャートである。
まず、方法0823は、PSS要素の作成(ステップ0919)に望ましいパーティションを選ぶ。
注意点は、さらにパーティションに分割される複数の内部記憶装置0208有するコンピュータ0102は珍しくないということである。例えば、固定磁気ディスク記憶装置は、ブートローダーとオペレーティングシステムカーネルファイル用に一番目のパーティション、システムとアプリケーションソフトウェア用に二番目のパーティション、ユーザデータ用に三番目のパーティション、およびスワップ用の四番目のパーティションを有する場合がある。
優先パーティションは、例えば、利用可能な空き領域が最も多く、サポートを有するタイプのファイルシステムを持ったパーティションである。
一つの実施例において、ブロック0919のステップで示されるように、優先パーティションを選ぶにあたり、利用できる空き領域をまず初期化し(ステップ0901)、既存パーティションのリストをコンパイルするために内部記憶0208装置を調べ(ステップ0902)、各パーティションについて(ループ0903)ファイルシステムタイプがサポートされる(条件0904)ならば、特定のパーティション内に含まれるファイルシステムに利用できる空き領域(ステップ0905)がどの程度存在するかをの追跡記録を管理するために更新される。
利用できる空き領域は、例えば、最大の空き領域を持つパーティションの識別値を保存し、当該パーティションにある利用できる空き領域の量を表す別の値を保存する為に使用される。
言い換えれば、該当パーティションにあるファイルシステムがサポートされていると仮定して(条件0904)、ループ0903の反復を行う度に、ループの終了までに最も空き領域が多いパーティションの詳細が保存されるように、利用できる空き領域は更新する(ステップ0905)。
代替実施例において、ユーザの好みに基づいてパーティションを選ぶために、方法0823はユーザと相互作用する。例えば、方法0823は、検出したパーティションのリストと各々の利用できる空き領域をユーザに示し、PSS要素をどのパーティションで作成するかをユーザが選択できるようにする。
条件0907に戻り、どのパーティションにも十分な空き領域がない場合は、方法0823はPSS要素を作成することなしに終了する0916。
上記の場合を除いて、方法0823は次にPSS指紋を計算するように機能する(ステップ0917)。
PSS指紋は一つのコンピュータ0102に複数のPSS要素が共存できるようにするために使用される。これは、特定のコンピュータ0102を個人的なセキュリティ装置0101を用いてブートしている各ユーザに対して作成される。
各ユーザ用のプライベートPSS要素を作成することは、各ユーザが安全に個人の設定、個人の好みと機密データを共有コンピュータ0102上の自身の個人用PSS要素に保存できるようにすることで、いくつかのアプリケーションにおける使用のセキュリティと利便性は向上される。
例えば、個人用PSS要素は、複数の家族や従業員が個人用セキュリティ装置0101と接続して使っている自宅や職場のコンピュータ0102を共有できるようにする際に有用である。このためにはコンピュータは、各家族や従業員が彼らの個人的な好みに従って個人用にオペレーティングシステム環境設定を微調整し、さらに他の家族や従業員はアクセスできない個人用PSS要素の内部に機密データを保存できるようにする。
一つの実施例においては、計算されたPSS指紋の一部または全て(ステップ0917)をPSSファイル(例えば、コンテナ、キーファイル)の名前に組み込むことができる。別のバリエーションでは、PSS指紋を、例えば、適切にフォーマットされたヘッダーの一部としてPSSファイルの内容に組み込むことができる。
PSS指紋は、任意の2つの個別PSS要素も衝突を防止するために、各ユーザあるいはセキュリティ装置0101に対して固有となるように計算する(ステップ0917)ことができる。
例えば、図3Aのセキュリティ装置0101要素では、計算されたPSS指紋は、セキュリティ装置の暗号化コンポーネント0302に保存された暗号化身元証明鍵の指紋とすることができる。技術的によく知られているように、暗号化身元認証あるいは鍵の指紋を計算する一つの手法は、それを一方向ハッシング機能を介すことを含む。
統合された0302あるいは外部の暗号化コンポーネント(すなわち、暗号化トークン)無しに使用されるように意図されたセキュリティ装置0101の実施例では、ブートプロセスにおいてユーザが提供する認証証明書からPSS指紋を計算することができる。
次に、方法0823はランダム秘密鍵を生成し(ステップ0908)、秘密鍵を暗号化し(ステップ0909)、そしてそれをPSS鍵ファイルに保存する(ステップ0910)よう機能することができる。
秘密鍵は後で完全性と内容の機密性を保護するためにPSS要素を暗号化するために使用することができる。秘密鍵は、PSS要素をアクセスする方法が鍵ファイルにアクセスし、以下に記述するようにそれを復号しなければならないように、ファイルに暗号化されて保存される。
エントロピーの暗号化品質源はランダム秘密鍵を生成するために使用する(ステップ0908)ことができる。エントロピー源は、例えば、暗号化品質のランダム性を提供する特別な運転設備(Linuxでのランダム装置)、ユーザが提供するランダム入力の値と正確なタイミング(例えば、ランダム鍵を押す、あるいはマウスを動かす)、別のエントロピー源、あるいは異なる源の組み合わせを含むことができる。
エントロピー源からのランダム入力はさらにハッシュすることができ、先進的な暗号解読手法を使って秘密鍵を予測あるいは推測する困難度をさらに増加させることができる。
図3Aのセキュリティ装置0101の実施例において、秘密鍵は、内蔵された暗号化コンポーネント0302により、当該特定暗号化コンポーネント0302のみにより復号可能となるように暗号化する(ステップ0909)ことができる。例えば、非対称の公開鍵操作を実行できる暗号化コンポーネント0302を含む一つの実施例において、公開鍵を用い、当該特定暗号化コンポーネント0302内に安全に保存された対応するプライベート鍵を使ってのみ復号できるようなかたちで、秘密鍵を暗号化する(ステップ0909)ことができる。
別の実施例においては、同等なメカニズムを、セキュリティ装置0101がコンピュータとインタフェースできるような形でコンピュータ0102に同時に接続される別個の(外部の)暗号化トークン(例えば、認証トークン)と併用することができる。
統合された0302あるいは外部の暗号化コンポーネント(すなわち、暗号化トークン)無しに使用されるように意図されたセキュリティ装置0101の実施例では、秘密鍵をユーザが提供する対称性を持つ暗号化の暗号解読鍵とパスワードを使って暗号化する(ステップ0909)ことができる。秘密鍵としてパスワードを用いてPSS要素を直接暗号化することは、後にパスワードを変更する場合、単に新しいPSS鍵ファイルを再暗号化するのではなく、PSSコンテナ全体を完全に復号化し、それから再暗号化しなければならない可能性があるため、望ましいくない。
暗号化された秘密鍵は、選択されたパーティションのファイルシステム内にあるファイルに保存する(ステップ0910)ことができる。鍵ファイルの名前は、例えば、記述式接頭辞(例えば、KEY−)、既に計算されたPSS指紋の一部あるいは全部(ステップ0917)および記述式接尾辞(例えば、.PSS)で設定することができる。
一部の種類のファイルシステムでは、例えば、ファイル名の長さが制限される、ファイル名について一部のキャラクターの使用が制限される、あるいはローカルオペレーティングシステムがファイル名の構成から特別な意味が読み取る(すなわち、UNIXファイルは、ファイル名の頭にドットが付いていると、慣習により隠しファイルと解される)ため、異なる命名規則が望ましい場合がある。
ファイルシステム内の適切なタイトルが付けられたディレクトリー内にPSSファイルを保存することが望ましい。例えば、Windows NTFS あるいは FAT32ファイルシステムパーティションが優先パーティションとして選択された場合、PSSファイルは“SAFESTORAGE”とタイトルが付けられたディレクトリーに保存することができる。これは、PSSファイルが後でユーザにより誤って削除される、あるいは改竄される(例えば、Microsoft Windowsによりブートされるとき)リスクを低減できるので、ファイルが隠され、不変であり、この機能をサポートする種類のファイルシステムにおける特別なシステム系ファイルとして認識されるようにディレクトリーとファイル属性を設定することがさらに望ましい。
次に、初期化されたシステム状態の記録を保存するために(条件0911)十分な空き領域が選択されたパーティションのファイルシステムにある場合、この記録を保持するに十分な大きさのPSSコンテナを作成する(ステップ0913)ことができ、ない場合は、より小さなPSSコンテナ作成する(ステップ0912)ことができる。
初期化されたシステム状態の記録を保存するには小さすぎるPSSコンテナは、例えば、ハードウェア設定パラメータ、ネットワーク設定、ユーザの好み、および他のデータを保存する為に使うことができる。
一つの実施例においては、任意の値を有する十分量のバイトを適切な名前が付けられたファイルに書き込むことにより、PSSコンテナファイルを作成することができる。鍵ファイルと同様に、コンテナファイルの名前は、例えば、記述式接頭辞(例えば、CONTAINER -)、既に計算されたPSS指紋の一部あるいは全部(ステップ0917)および記述式接尾辞(例えば、.PSS)で設定される。
暗号化された秘密鍵と暗号化されたコンテナを別個のファイルに保存する代案として、両方の要素を含む一つのファイルを使用し。しかしながら、これはより複雑なファイルフォーマットを要求し、そしてオペレーティングシステムでこのファーマットのサポートが要求される。
次に、方法は、暗号化された仮想ブロック装置としてPSSコンテナを設定する(ステップ0914)。
いくつかのオペレーティングシステムカーネル(例えば、Linux)は、仮想ブロック装置インタフェースをファイルに備えるために使われるループ装置メカニズム用に固有のサポートを含む。これは、仮想ブロック装置として、標準サイズのファイルにファイルシステムのイメージをマウントできるようにする。同じ方法で、固定磁気ディスク装置にあるファイルシステムがマウントされる。
Linuxでは、対称性を持つ暗号化の付加的な層は、例えば、ループ装置メカニズムおよび予備のシステムユーティリティ(例えば、losetup)へのloop-aesパッチの適用により仮想ブロック装置が備える。
代わりに、Linuxカーネル(2.6)の最新バージョンは装置マッパードライバーを使って論理装置作成に対する広範囲なサポートを含む。このメカニズムはまた、losetupユーティリティ(例えば)を使うファイルへ転写されるループ装置の上部に暗号化の1層を転写するためにcryptsetupユーティリティ(例えば)を使うことで、暗号化された仮想ブロック装置としてファイルを設定するために使用される。
一つの実施例において、暗号化層は、例えば、AESのような対称性を持つ暗号を使う。暗号は暗号化と復号化の両方の操作に対称的に同じ鍵を使うならば対称的である。逆に、暗号は、例えば、一つの鍵が暗号化に使われ、別の鍵が復号化に使われる(例えば、公開鍵暗号法)ならば非対称である。
仮想ブロック装置の暗号化層用の鍵は、PSS鍵ファイル(ステップ0910)へ暗号化されて保存された既に生成された秘密鍵である。(ステップ0908)。
最後に、ファイルシステムは既に設定された仮想ブロック装置上に作成される(ステップ0915)。仮想ブロック装置は優先パーティション上のファイルシステム内で作成されたコンテナに転写される。
ファイルシステムは、例えば、ext2、 ext3、 reiserfs、 fat32 (vfat)、 JFS、 NTFS、あるいは別タイプの書き込み可能なファイルシステムである。
永続性安全記憶要素をアクセスする典型的な方法
以下の典型的な方法の操作は、上記の永続性安全記憶要素を作成する典型的な方法の項で記述された典型的な対応する部分の操作を参照することにより、より良く理解される。
図9A-IIはPSS要素をアクセスする一方法での典型的なステップを図解するフローチャートである。
最初に、方法0841はPSS指紋を計算する(ステップ0917)。
次に、方法0841は、既に記述されたPSS要素を作成する典型的な方法0823により、既に作成されたPSS要素を配置するように努める。
一つの実施例において、既に作成されたPSS要素を特定する為に、内部記憶装置0208は全てのディスクドライブで存在するパーティションのリストをコンパイルするために調べられる(ステップ0920)。それから、各パーティション(ループ0921)に対して、パーティション内に含まれるファイルシステムタイプがサポートされる(条件0922)ならば、方法0841は、既に記述されたPSS要素を作成する典型的な方法0823によりPSSファイルが作成される同じファイルシステムの位置で、ファイルシステム内でPSS鍵ファイルの存在(条件0923)を確認する。
PSS要素が検出されたパーティションのどれにも配置されていなければ、方法0841は文字列failureを戻す(ステップ0928)。
さもなければ、PSS要素が、例えば、PSS鍵ファイルの存在を発見する(条件0923)ことにより配置されるならば、PSS鍵ファイルに記憶された暗号化された秘密鍵は復号化され(ステップ0925)、PSSコンテナファイルに転写される(ステップ0926)仮想ブロック装置に対して暗号化層を設定するために使用される。最後に、仮想ブロック装置はPSSコンテナファイル内に含まれるファイルシステムにアクセスできるようにするためにマウントされる。
方法は、それ以前のいずれのステップの実行にも失敗した場合、例えば、PSSファイルが破壊され、エラー例外が発生しているため(ステップ0930)、文字列failureを戻す(ステップ0928)。
ネットワークPSS要素のバリエーション
一つの実施例において、PSS要素は規定のネットワーク位置で記憶され(例えば、ネットワークファイル共有)、コンピュータの内部記憶装置に記憶された既に記述されたPSS要素を取り換える、あるいは補強する。
ネットワークを通してPSS要素にアクセスすることは、例えば、内部記憶装置を持たない安価なコンピュータ(例えば、ディスクレスシンクライアント)上でさえデータ永続性を実現可能にするため、いくつかの状況において望ましい。
また、ユーザのデータと個別のオペレーティングシステム環境設定は、セキュリティ装置からブートされたネットワーク接続を有するどのコンピュータからもユーザに意識させることなく普遍的にアクセス可能である。
注意点は、ネットワーク上にPSS要素を保存することは、ある任意のPSS要素と特定のコンピュータのハードウェアの間の自然な関連を壊す。なぜなら、内部記憶装置上のPSS要素と違い、ネットワークPSS要素は潜在的にセキュリティ装置からブートされたどのハードウェアからもアクセスされることである。
したがって、ハードウェア固有データ(例えば、ハードウェアプロファイル、初期化されたシステム状態の記録)を、可能ならば、コンピュータ0102の内部記憶装置0208上に保存されたPSS要素へ保存することが望まれる。
典型的な接続性エージェント
図10−Iは、接続性エージェントソフトウェアの操作での典型的なステップを図解するフローチャートである。ソフトウェアは、実施例において、各種の状況を超えてネットワーク接続性を確立しようとするユーザを支援するために使用される。
注意すべきは、原則として、既に典型的なユーザ相互作用の項で既述したように、使いやすさの最大化を達成するために、デフォルトで接続性エージェントがネットワーク接続性を自動的に設定し確立することに失敗した場合のみ、接続性エージェント0604はユーザと相互作用する。この場合に、ユーザ相互作用は、例えば、ダイアルアップあるいはADSLモデム接続用に要求された設定を手動で提供し、どちらのワイヤレスネットワークを使用するかを選択し、ネットワークの要求されたプロキシー設定を設定し、あるいは任意の状況でネットワークを設定するために要する他の情報を備えることが要求される。
しかしながら、ユーザを含める前に、以下で記述される典型的なネットワーク接続性エージェント9604は、ネットワーク接続性の自動検出と設定を行う為に各種の操作を実行する。
これがどのように成し遂げられるかをより理解しやすくするために、接続性エージェント9604の操作での典型的なステップは以下に記述する。
最初に接続性エージェント0604は、コンピュータ0102にインストールされたネットワークインタフェースハードウェア0203の各種タイプを検出するために、ネットワーク装置を調べる(ステップ1001)。図2と関連する典型的な発明が使用される環境の項で既に記述されたように、ネットワークインタフェースは、例えば、モデム、有線のイーサネット、ギガイーサネット、トークンリングネットワークインタフェースカード、802.11a、 802.11b、 802.11gを使うワイヤレスネットワークインタフェースカード、WiMaxあるいは携帯電話ネットワーク、あるいはコンピュータがネットワークとインターフェースできるなにか別装置を含む。
次に、接続性エージェント0604は、既に上記で記述されたように、初期化マネージャ0601によりPSS要素へのアクセスが成功した(条件0841’)か、そして前回のネットワーク設定リストがPSS要素に存在する(条件1050)かを確認する。存在すれば、前回のネットワーク設定リストはPSS要素から検索され(ステップ1051)、そして、図10-IIに関連して以下でさらに記述されるテスト設定手順1030に対して引数として引き渡される(ステップ1002)。
一つの実施例において、前回のネットワーク設定リストは前回成功したネットワーク設定のリストである。一部のアプリケーションの場合、履歴パターンに基づき、各ネットワーク設定の作動しやすさに従って当該リストが優先順位付けされているのであればリストは望ましい。例えば、ユーザがラップトップのネットワーク接続時間のうち70%を自宅のネットワークに、30%を職場のネットワークに接続しているならば、接続性エージェント0604にとって、最初に自宅のネットワーク設定パラメータに基づいて設定を試みることはより能率的である。同様に、接続性エージェント0604はさらに、ネットワーク接続の時間とデータ依存パターンを認識するために最適化される。従って、一つの実施例において、接続性エージェントは時間あるいは日付に関する成功確立に基づいてネットワーク設定の試みをに係る優先順位を付ける。例えば、接続性エージェント0604は最初に勤務時間中は企業のネットワーク設定を試み、そして週末ではいつも最初に自宅のネットワーク設定を試みる。
注意点は、一部のアプリケーションについては、状況が許せば、ワイヤレスネットワーク接続の前に有線のネットワーク接続を試みることが望ましい。なぜならば、有線のネットワークはワイヤレスネットワークよりも多くの場合に信頼性がより高いためである。他のアプリケーションについては、逆が望ましいかもしれない。一つの実施例において、ユーザは自身の好みを選択することができる。
図10−IIはテスト設定手順1030での典型的なステップを図解する。手順は引数としてネットワーク設定のリストを受け入れる。引数として手順に渡された(ループ1008)リストにある各ネットワーク設定に対して、ネットワーク設定とテスト接続性を適用する試みが試される(ステップ1003)。接続性の確立が成功するならば、接続性が確立された手順1040がそのとき呼び出される。さもなければ、そのループは次のネットワーク設定を試み続ける。ネットワーク設定のどれも成功しないならば、手順はそれがループ作業を終了する後に戻る(ステップ1031)。
図10−Iを参照しなおすと、PSSへのアクセスが成功しなければ(条件0841’)、あるいは前回のネットワーク設定がまだPSSへ保存されていなければ(条件1050)、接続性エージェント0604は、ユーザのコンピュータ0102にある内部記憶装置0208へインストールされた(条件1052)ローカルオペレーティングシステムにより作成された(条件1053)設定ファイルからネットワーク設定をインポートしよう(ステップ1048)と試みる。
例えば、セキュリティ装置0101がハイリスクアプリケーションに対してのみユーザのコンピュータ0102との関連で使われると仮定すれば、ユーザはまたあらゆることに対して彼の正規のオペレーティングシステム(例えば、Microsoft Windows)を使っている。この場合には、一人のユーザの任意の状況に適用される特定のネットワーク接続性設定に対してWindowsが既に設定されていることはありそうである。そして、接続性エージェントが、通常のローリスクアプリケーションに対してユーザが使用しているローカルオペレーティングシステムの固有ファイルシステムの内部のどこかに配置されたこれらの設定をインポートするように機能するならば、従ってWindowsは役に立つ。
これらの設定のインポートが成功すれば、接続性エージェントはテスト設定手順に引数としてそれらを引き渡すことで、接続性を確立するように試みる(ステップ1007)。
接続性エージェント0604は、ネットワークの初期の自動化あるいは手動の設定のどちらが成功するかを決定し(ステップ1003、 1006、 1009、 1015、 1016)、そしてさらに、ネットワークへの前回の確立された接続がまだ存在するかをテストする(ステップ1006)ために、ネットワーク接続性テスト1003を実行する。
ネットワーク接続性は、例えば、事前指定されたホスト名あるいはIPアドレスにピンを送信する、WebサーバへHTTP要求をする、あるいはネットワーク接続性を成功させる要求を出すどのような他の事前指定された信頼できる操作を実行することで、テストされる。
ネットワーク接続性テストが成功すれば、接続性エージェント0604は接続性が確立された手順1040を呼び出す。
図10−IIIは接続性が確立された手順1040での典型的なステップを図解する。手順は、例えば、既に記述された接続性テストにより決定される接続性の確立が成功した後に、接続性エージェントにより呼び出される。最初に、手順は、PSS要素に維持された前回のネットワーク設定リストに対し、成功した設定のパラメータを追加あるいは更新する(ステップ1004)。次に、手順は、ネットワーク接続性について周期的にテストを行う(条件1006)継続的モニタリングモードへの切り替えを行う(ループ1005)。接続性テストの最中(条件1006)、手順は一定の時間の経過を待つ(すなわち、スリープ)(ステップ1048)。接続性テスト(条件1006)が文字列failureを戻すならば、手順1040は、例えば、ステップ1001から接続性エージェント0604の操作を再開始させることにより、ネットワーク接続性を再確立させようとする(ステップ1041−1001へ行く)。
図10−Iを参照しなおすと、前回のネットワーク設定リストとインポートされたネットワーク設定が存在しない、あるいはアクセスできない(条件1050と条件1053)ならば、あるいは接続性エージェント0604が前回の、あるいはインポートされたネットワーク設定の確立に失敗するならば、接続性エージェント0604は妥当なデフォルトを使ってネットワークへの接続性を設定しようとする。
例えば、有線のネットワーク装置が存在(条件1010)すれば、接続性エージェント0604はDHCPプロトコルを使ってそれを自動的に設定しようとする(ステップ1011)。プロトコルは複雑性を低減し、ネットワーク管理者の要求事項をサポートするので、多くのネットワークによって広くさポートされている。
同様に、ワイヤレスネットワーク装置が存在(条件1012)すれば、接続性エージェントは0604、最も強力な信号を持ち、DHCPに基づいて自分自身を設定する(ステップ1049)ワイヤレスネットワークと自動的に結び付くようにそれを設定する。
一つの実施例において、複数のワイヤレスネットワークが存在し、そして前回のネットワーク設定が見つからないならば、接続性エージェント0604は、ユーザが接続を望むネットワークを選ぶようにユーザに促す(ステップ1014/0408)。ユーザはまた暗号化されたワイヤレスネットワーク(WEP)をアクセスするためのパスワードを提供するように要求される。
注意点は、ネットワーク上でDHCPがサポートされていない場合であっても、接続性エージェント0604は、状況によってはネットワークトラフィックを傍受(スニッフィング)して解析し、試行錯誤により、ネットワークを自動的に設定することが可能である。しかしながら、そのような非標準的な方法は慎重に使われるべきである。なぜなら、これらの方法のいくつかは、例えば、ネットワーク上に既に割り当てられたIPアドレスを使う、あるいは、トラフィック妨害手法としてのARP中毒を使う時に、誤ってローカルゲートウェイへのトラフィックを遮断することにより、ネットワークトラフィックを妨害する潜在的可能性を持つからである。
要約すれば、ネットワーク設定が見つからない、しかし複数のネットワーク装置が存在するならば、接続性エージェント0604は、実施例が最適化される特定のアプリケーションに対して望まれる順番でそれらのいくつかとネットワーク接続性を確立させようとする。
接続性エージェント0604は、装置がネットワークとインタフェースしていないことを探知した場合、装置を設定する試みを省略する。例えば、物理的にネットワークに接続されていない有線のNICインタフェースを設定しようとの試み、あるいは、ワイヤレスネットワークが検出されない設定でのワイヤレスカードの設定の試みは、ほとんど意味をなさない。
最後に、接続性エージェント0604が上記で記述された自動化のいずれの方法に基づいてもネットワーク接続性の確立に失敗した時は、手動設定ウィザードをもってユーザを促す(ステップ1016/0408)。
ネットワーク接続の設定が自動であるか手動であるかに関わらず、既に記述した接続性が確立された手順1040は、以降類似状況下でユーザとの相互作用を要することがないよう、PSS内の成功するネットワーク接続性設定を保存あるいは更新する(ステップ1004)。
一つの実施例において、接続性エージェント0604は、ネットワークを自動的に設定する試みの最中に、ユーザの目に見えるフィードバックを提供し、そしてまた、ユーザが自動ネットワーク設定の試みをキャンセルし、ネットワークの迅速な手動設定を実行できる手動のオーバーライドオプションを提供する。このオプションは上級者のユーザがいくつかの状況で時間を節約できるようにする。
図7Aに戻ってみた場合、一つの実施例において、接続性エージェント0604がネットワークとの接続性の確立に成功した後に、接続性を要する、例えばVPNへの接(ステップ0707)、サービスプロバイダーへの認証する(ステップ0705)、クライアントアプリケーションの起動(スレップ0706)等、実施例が最適化された特定のアプリケーションにおいて適切な他の操作を実行することができる。
これらの操作における相互の依存性は操作の実施順序に影響する。
例えば、クライアントアプリケーション(例えば、Webブラウザー)がプライベートネットワークでのみ利用できる資源(例えば、Webサーバ)にアクセスできるようにするため、VPNへ接続(ステップ0707)された後に当該クライアントアプリケーションを起動する(ステップ0706)。
同様に、あるアプリケーションにおいて、サービスプロバイダーへの認証の成功は(ステップ0705)、VPNへの接続(ステップ0707)にあたり最初に要求される。別のアプリケーションにおいて、VPNへの接続はサービスプロバイダーへの認証の前に確立される(ステップ0707)必要がある。なぜなら、この特定のアプリケーションにおける認証プロセスは、VPN内でのみアクセス可能な資源へのアクセスに依存しているかであである(例えば、ディレクトリーサーバー)。
典型的な移行エージェント
移行エージェント1101の操作を支配している根本的な原理は、セキュリティ装置が提供するオペレーティングシステム環境へ統合されたアプリケーションソフトウェアの機能性は、移行されたアプリケーションソフトウェアに実質的には同一構造であると仮定する。
実質的には同一構造である2つのソフトウェアアプリケーションの間でアプリケーション内容と個性データを移行することは、一つのアプリケーションが提供する機能性の大きな部分がもう一方に備えられるようにできる。
あるアプリケーションのセキュリティは、構築された根本的なオペレーティングシステムのセキュリティと同様に、設計とインプリメンテーションに依存する。セキュリティの大きな増加は従って、一つのソフトウェアアプリケーションの機能性を本質的に同等の機能性を提供することができる別の潜在的により安全性の高いソフトウェアアプリケーションへ移行させることで成し遂げられ、そしてセキュリティ装置0101が提供する独立した安全なオペレーティングシステムへ統合される。
一つの移行シナリオにおいて、そこでは一人のユーザがセキュリティ装置からコンピュータの内部記憶装置へインストールされたメインストリームのオペレーティングシステム環境により既に操作されたコンピュータをブートする。移行エージェント1101は、コンピュータの内部記憶装置上のファイルシステム内に配置されたアプリケーション内容と設定データを移行することにユーザを支援する。
別のシナリオでは、一人のユーザは、移行されたソフトウェアアプリケーション自身で作成されたバックアップアーカイブからアプリケーション内容と設定データを移行する。多くのソフトウェアアプリケーションは、移行エージェント1101が必要なデータを引き抜くアーカイブを生成する機能性をエクスポートするデータあるいはバックアップを提供する。
移行されたソフトウェアアプリケーションは、例えば、ブラウザ、(例えば、Microsoft Internet Explorer、 Opera、 Mozilla Firefox)、メールクライアント(例えば、Microsoft Outlook、Thunderbird)、インスタントメッセンジャークライアント(例えば、ICQ、 AIM、 MSNメッセンジャー)、VoIPクライアント(例えば、skype)あるいはその他のクライアント側アプリケーションのようなクライアント側アプリケーションを含む。
一つの実施例において、移行エージェント1101は、移行できるアプリケーションが存在する場所にあるローカルオペレーティングシステムを内部記憶装置が含むことを検出すれば、セキュリティ装置のブートプロセスの間、自動的に呼び出される。ユーザがブートの間移行エージェント1101の自動実行をキャンセルすることを選べば、移行エージェント1101は代わりに、例えば、GUIオプション(例えば、メニュー項目、デスクトップアイコン、管理用コンソール)を使ってユーザがオンデマンドで呼び出す。
図11−Iは移行エージェント1101ソフトウェアの操作での典型的なステップを図解するフローチャートである。ソフトウェアは、一つの実施例において、別のオペレーティングシステム(すなわち、汎用目的のメインストリームプラットフォーム)セキュリティ装置0101が提供する独立した安全なオペレーティングシステム環境へアプリケーションの機能性を移行しているユーザを支援するために使われる。
最初に、移行候補を見つける手順1102が呼び出される。
図11−IIは移行候補を見つける手順1102での典型的なステップを図解する。手順は移行されうるアプリケーションを特定するために使われる。
一つの実施例において、移行候補を特定するように試みる前に、手順1102は、最初に空の移行候補リストを初期化し(ステップ1120)、セキュリティ装置、ネットワーク、あるいは記憶メディアから移行署名をロードする(ステップ1121)。
移行署名が信頼できない源(例えば、ネットエアーク)からロードされるならば、署名の完全性は関連した暗号化署名を検証することにより正当であると確認される。
移行署名は内部記憶装置上に移行されたアプリケーションを特定するために使われる。そして、アプリケーション内容と設定データの対応した位置を決定することを支援するために使われる。
次に、ユーザはダイアログ−1と相互作用し(ステップ1122)、そして内部記憶装置上に自動的に移行候補を検索する(オプション1123)か、あるいはエクスポートされたアプリケーションとバックアップアーカイブに対して手動でブラウズする(ステップ1160)かのどちかを選ぶ。
一つの実施例において、ユーザが自動的に移行候補を検索する(オプション1123)ことを選択すれば、内部記憶0208装置は、全てのディスクドライブに存在するパーティションのリストをコンパイルするために調べられる(ステップ1124)。それから、各パーティションに対して(ループ1125)、パーティション内に含まれるファイルシステムタイプがサポートされる(条件1126)ならば、パーティションファイルシステムはマウントされ(ステップ1127)、そしてリストがマウントされたファイルシステムの情報で更新される(ステップ1128)。
次に、署名用パーティション検索手順1130が呼ばれる。
図11−IIIは署名用パーティション検索手順1130での典型的なステップを図解する。手順は、既にロードされた(ステップ1121)移行署名を使って、移行候補用パーティション検索を呼び出す。
原則として、手順1130は、コンピュータ0102の内部記憶装置に保存されたローカルオペレーティングシステムの資源を列挙する、およびこれらの列挙された資源を既にロードされた移行署名に対して照合することにより、自動的に移行候補を特定するように試みる。
最初に、既にマウントされたパーティション(ループ1140)の各々に対して、手順1130は既にロードされた移行署名を通して反復する(ループ1141)。
一つの実施例において、手順1130は複数の署名を使って各移行候補を特定するように試みる。署名はまた互いにタイプが異なる。例えば、特定のアプリケーションを特定するために、レジストリーは最初に検索され、それからGUIインタフェース、そして最後にファイルシステム内のファイルとフォルダーの名前が検索される。各移行候補に対して検索する署名のリストを使うと、各署名が異なるアプリケーションバージョンあるいはインストールした場所との照合を行って、各資源に対する可能な署名のある幅に対して複数タイプの資源を通して検索できるようにする。
各移行候補に対する署名リストにある各署名(ループ1142)に対して、アプリケーション署名照合(ステップ1146)は、署名の関連した署名タイプに従って試みられる。署名タイプは署名がどのタイプの資源に対する照合を要するかを指定する。
署名タイプがレジストリーを検索すべき(条件1143)と指定するならば、署名照合が、例えば、パーティション内で(条件1144)Microsoft Windowsレジストリーを特定するように試み、レジストリー鍵と値を抜き出す(ステップ1145)ためにMicrosoft Windowsレジストリーを列挙し、そして署名に対して抜き出されたレジストリー鍵と値を照合するように試みることにより、実行される(ステップ1146)。
署名タイプがGUIを検索すべき(条件1150)と指定するならば、署名照合が、例えば、パーティションに保存されるローカルオペレーティングシステムのGUIインタフェースの要素を指定するファイルとフォルダーを特定する(条件1151)ように試みる、GUI要素(例えば、デスクトップアイコン、メニュー項目など)を抜き出すために指定されたGUIインタフェース(ステップ1152)を列挙する、そして署名に対して抜き出されたGUI要素を照合する(ステップ1146)ように試みることにより、実行される。
署名タイプがファイルとフォルダーの名前を検索すべき(条件1154)と指定するならば、署名照合が、例えば、パーティションのファイルシステム内で再帰的にディレクトリーとファイル名を列挙する、および署名に対してファイルとディレクトリーの名前を列挙する(ステップ1146)ことにより、実行される。
別タイプの署名がまた使われ、例えば、一つの実施例においては、metabase.bin、 metabase.xml と mbschema.xmlのようなMicrosoftメタベース設定およびスキーマファイルの内容に対して署名を照合させる、あるいはパーティション内で他の資源の構造を列挙して内容に対してパターン照合を試みることが有益であるかもしれない。
注意点は、図解されたステップは、主として操作の原理を図解する意図を持ち、そして既に説明されたように本質的に典型的である。例えば、各署名に対して再列挙する場合、ファイルシステム内にあるレジストリーあるいはファイルとフォルダーの名前のような資源は、多くの署名があるので時間の無駄使いであり非効率である。実際に、この手順のより効率的な改良型が使われる。改良型はレジストリーあるいはファイルシステムが再列挙されパターン照合されなければならない回数を最少化するために最適化される。この手順のより効率的な改良型はまた性能を改善するためによく知られたキャッシング戦略(例えば、記憶領域と速度のトレードオフ)を採用することである。
移行候補署名が照合される(条件1146)ならば、移行候補アプリケーションが特定され、そして移行候補のリストは置かれたアプリケーションの属性(例えば、アプリケーションタイプ、名前、バージョン、アプリケーション内容と設定データのファイルシステム位置)で更新される(ステップ1147)。
最後に、手順1130は置かれている移行候補のリストを戻す(ステップ1159)。
図11−IIを参照し直すと、逆に、ユーザがダイアログ−1でエクスポートされたアプリケーションデータあるいはバックアップアーカイブをブラウズする(オプション1160)ことを選ぶ(ステップ1122)ならば、ブラウズダイアログ(ステップ1161)は、ローカルメモリ(例えば、CDROM、 DVDROM、固定磁気ディスク装置、USBフラッシュディスク)あるいはリモートメモリ(例えば、ネットワークファイル共有、FTPサイト)にあるエクスポートされたアプリケーションデータあるいはバックアップアーカイブのその位置を識別するためにユーザが相互作用するナビゲーションインタフェースをユーザに提供するように機能する。
注意点は、ブラウズダイアログ(ステップ1161)はまた、身元不明のファイルとフォルダー、あるいは、移行エージェント1101がまだサポートしていないソフトウェアアプリケーションのエクスポートされたアプリケーションデータをユーザが選ばないように防止するためにユーザがナビゲートして、そのファイル名とファイルの内容に対して基本的なパターン照合を行うことである。
次に、その移行候補リストは、ユーザにより識別されたエクスポートされたアプリケーションデータを含めるために更新される(ステップ1162)。
その操作の最後で、その手順1102は移行候補のリストを戻す(ステップ1131またはステップ1163)。
図11−Iを参照し直すと、デフォルトの移行構成設定が存在するならば(条件1103)、デフォルトの移行構成設定が次に、後でユーザがダイアログ−2 1105とダイアログ−3 1180で調整する構成設定用のデフォルト値を識別して、規定の保存位置(例えば、PSS要素)からロードされる(ステップ1104)。
デフォルトの移行構成設定は、例えば、どちらのアプリケーションがダイアログ−2 1105の中でデフォルトで移行用に選択される、ダイアログ−3 1180の中で各アプリケーションに対するデフォルトの同期化オプション、および他のアプリケーション固有の設定パラメータを含む。
次に、ユーザはダイアログ−2と相互作用し(ステップ1105)、既に記述した手順1102で作成された移行候補のリストからどちらのアプリケーションを移行させるかを選択する(オプション1106)。
次に、ダイアログ−2で移行用に既に選択された(ループ1107)各アプリケーションに対して、アプリケーションデータを移行する手順1108が呼び出され、選択された移行されるアプリケーションの属性を受け渡す。
図11−IVはアプリケーションデータを移行する手順での典型的なステップを図解する。手順は引数として移行されたアプリケーションの属性を受け入れる。
最初に、ユーザはダイアログ−3と相互作用する(ステップ1180)。ダイアログ−3は、例えば、アプリケーションタイプ、名前、バージョン、および内容と設定データのファイルシステム位置を含む基本的なアプリケーション情報1181を表示する。
一つの実施例において、ダイアログ−3はさらに、ユーザが移行されたアプリケーションの内容と設定データに対して同期化オプション1182を設定し、そしてほかのアプリケーション固有移行構成設定を設定できるようにする。
ユーザは同期化オプション1182を設定して、内部記憶装置にインストールされた移行されたアプリケーションソフトウェアのファイルとセキュリティ装置0101が提供する独立した安全なオペレーティングシステムの間でアプリケーションの内容と設定データを同期化させるために使用する同期化メカニズムを制御する。
同期化の後、同期化されたアプリケーションのデータファイル内のアプリケーションの内容と設定データは、実質的には意味的に同等である。言い換えれば、データは各アプリケーションがサポートする異なる固有の構文(例えば、バイナリーデータフォーマット)でコード化されるけれども、同期化されたアプリケーションのコンテクストでのデータの意味(すなわち、意味論)はユーザによりおおよそ同等として理解される。
その効果は、コンピュータの内部記憶装置にインストールされたローカルオペレーティングシステム環境、あるいはセキュリティ装置が提供する独立したオペレーティングシステム環境のどちらかのコンテクスト内でアプリケーションの内容と設定データに行われた変更は、アプリケーションの内容と設定データに不整合に悩むこと無しに、その二つのオペレーティングシステム環境の間でより便利にユーザが切り替えられるように融合されていることである。
ユーザは同期化オプションを設定する。故にアプリケーションの内容と設定データの同期化は、ユーザによりオンデマンドで実行される、あるいは規定のスケジュールに従い、あるいはシステムイベント(例えば、システム初期化とシャットダウンスクリプトでのステップとして含まれる)に従い自動的に引き起こされるかのいずれかである。
規定のスケジュールに従ってアプリケーションデータの同期化を引き起こすことは、例えば、そのUNIX cronデーモンのような年代順のスケジューリング法を使って実行される。
一つの実施例において、同期化オプション1182はさらにユーザが望ましい同期化対立解決行動を識別できるようにする。同期化対立は、アプリケーションの内容あるいは設定データの2個のバージョンが相互に互換性がなく、そのためにそれらを一つのバージョンに融合する試みが不可能あるいは安全ではないような時に発生する。同期化対立に対する特定の基準はアプリケーションと関連データの異なるタイプの間で変化する。
ユーザは対立の場合に、例えば、内部記憶にインストールされたアプリケーションソフトウェアのアプリケーション内容と設定データ、あるいは逆の方を選ぶことを特定する。同期化対立解決はまた、対立が発生するときに決定を行うために、ユーザと相互作用するように設定される。
次に、ダイアログ−3でユーザが設定した、既に指定の移行パラメータ(ステップ1180)のどれでもデフォルトの移行構成設定を更新するために使用される(ステップ1183)。
次に、アプリケーション内容と設定データは移行されたアプリケーションのデータファイルからセキュリティ装置が提供するオペレーティングシステム環境に統合された目標のアプリケーションのデータファイルへ移行される。
移行されたアプリケーションのファイルからアプリケーション内容と設定データを移行することは、望ましいアプリケーション内容と設定データを読み出すために、移行されたアプリケーションのファイルフォーマットを構文解析する(すなわち、解読する)機能を提供するソフトウェアルーチンを要求する。他方、逆の方向へ(すなわち、1回の同期化の間、移行されたアプリケーションのファイルへ)のアプリケーション内容と設定データの移行は、移行されたアプリケーションのファイルフォーマットを編集あるいはリライトする機能をさらに提供するソフトウェアルーチンを要求する。
メーカ固有のファイルフォーマットをリバースエンジニアリングするための選択肢として、いくつかの場合では、ソフトウェアライブラリーのソフトウェアAPIをリバースエンジニアリングすることが好まれる。ライブラリーは移行されたアプリケーションに対して要求された機能を実行し、移行アプリケーション固有の構文解析ソフトウェアのルーチンを呼び出すことで移行されたアプリケーション自身のソフトウェア機能性を活用する。このアプローチの実行は、例えば、内部記憶にインストールされたローカルオペレーティングシステムがセキュリティ装置の提供するオペレーティングシステムとこの観点で互換性が無いならば、バイナリー実行形式とソフトウェアライブラリー用の翻訳あるいはエミュレーション層を含む。そして移行されたアプリケーションのソフトウェアアーカイブス(例えば、ライブラリー、実行形式)をダイナミックローディングする。
注意点は、移行されたアプリケーションから固有の構文解析ソフトウェア(例えば、ソフトウェアライブラリー)を使うことは、バイナリー完全性が検証されなければ、セキュリティリスクを呼び入れることである。移行されたアプリケーションがインストールされた場所の上部にあるローカルオペレーティングシステムのセキュリティの侵害をやってのける一人の攻撃者はまた、例えば、それらをトロイの木馬バージョンに入れ替える、あるいはそれらに悪いあるコードを挿入することにより、移行されたアプリケーションのソフトウェアライブラリーの完全性を侵害する。この脅威を緩和するために、ソフトウェアライブラリーのハッシュが計算され、そして問題なしと知られているハッシュのホワイトリストと比較される。ハッシュホワイトリスト自身は、更新されたソフトウェアバージョン用の新しいハッシュを基づいてネットワーク上で定期的に更新される。
これらの原則に従って、一つの実施例において、移行されたアプリケーション固有の構文解析ソフトウェアを活用することへのサポートが利用可能(条件1184)ならば、手順1108は、問題なしと知られているハッシュのホワイトリストをロード(ステップ1185)し、固有の構文解析ソフトウェア用のハッシュを計算し(ステップ1186)、そして既にロードされたホワイトリストにそれらを探すことで計算されたハッシュの完全性を検証する。
計算されたハッシュがホワイトリストに対して(条件1187)検証されないならば、固有の構文解析ソフトウェアの完全性は、既に記述したように、一人の攻撃者により侵害され、そして例外が生起される(ステップ1193)。
他方、ハッシュが問題なし(条件1187)と検証されるならば、手順1108は固有の構文解析ソフトウェアをロード(ステップ1188)し、そして移行されたアプリケーションのデータファイルを構文解析するためのルーチンを呼び出す(ステップ1189)。
条件1184を参照し直して、固有の構文解析ソフトウェアを活用することへのサポートが利用可能でなければ、移行されたアプリケーションのデータファイルはローカルルーチンを使って構文解析される(ステップ1194)。いくつかの場合で、これらのルーチンを開発することは、既に記述したように、メーカ固有のファイルフォーマットをリバースエンジニアリングすることを要求する。
移行されたアプリケーションのファイルからのデータが、メモリーにロードされるデータ要素のリストの中に構文解析される(すなわち、復号される)。
次に、ステップ1189(すなわち、固有の構文解析ソフトウェアを使ってデータファイルを構文解析する)あるいはステップ1194(すなわち、ローカルルーチンを使ってデータファイルを構文解析する)から実行を続けると、移行されたアプリケーションのデータファイルから構文解析されたデータの要素はそれから翻訳され(ステップ1190)、あるいは、データが移行される先の目標とするソフトウェアアプリケーションがサポートする最も近い類似物の中に転写される。
最後に、翻訳されたデータは固定の保存場所(例えば、PSS要素)で保存された目標とするアプリケーションのデータファイルへ保存される(ステップ1191)。
データは、目標とするアプリケーションが提供する異なる構文(すなわち、バイナリーデータフォーマット)にコード化されるけれども、目標とするアプリケーションのコンテクストでのデータの意味(すなわち、意味論)はユーザがおおよそ同等と理解される。
一つの実施例において、既に記述された操作を実行するためのソフトウェアは、ネットワーク越しに暗号化された方法で署名されたパッケージで更新される。
移行されたアプリケーション内容と設定データの正確な性質は、アプリケーションのタイプに従って大きく変わる。
アプリケーション内容は、例えば、ファイルとフォルダー、電子メールの内容、データベースの表、およびデジタル証明書を含む。
アプリケーション設定データは、例えば、ユーザアカウント、電子メールアカウント、アクセス制御リスト、割当設定、処理能力絞り設定、ロギング設定、データベース接続性設定を含む。
発明の一つの実施例において、目標とするアプリケーションは、翻訳不可能なアプリケーション内容と設定データに対して特別なサポートを基づいて拡張される。
例えば、Linuxアプリケーション(例えば、SHA1 または MD5)により、Microsoft SAM (Security Accounts Manager)データベースから固有にサポートされるパスワードハッシュフォーマットにパスワードハッシュを翻訳することは、ハッシュが可逆性のない一方通行の機能を使って計算されるために、実際的ではない。この場合に、元のパスワードを保っている間、ユーザアカウントを移行することは、SAMパスワードハッシュに対するサポートを含むように、目標とするアプリケーションの認証メカニズムを拡張することが要求される。
典型的なランタイムOSアーキテクチャ
図7A、図8A、図9A−I、図9A−II、図10−I、図10−II および図10−IIIに関連した上記の典型的なシステム初期化の項で既に記述されたシステム初期化プロセスが完了すると、操作上で安全なオペレーティングシステム環境は特定の実施例が最適化された特定のタスクに要求される機能をユーザに提供させる。
図12は、上記の典型的なシステム初期化の項で既に記述されているブートプロセスにより初期化された典型的なランタイムオペレーティングシステムアーキテクチャの概観を示すブロック図である。
技術的によく知られているように、オペレーティングシステム環境のハイレベルランタイムアーキテクチャは、オペレーティングシステムAPI1220を通してユーザ−ランド1230とインタフェースするカーネル−ランド1210ソフトウェア要素を侵害する。
カーネル−ランド1210要素は、図5に関連した典型的な外部ファイルシステムの項で既に紹介されたオペレーティングシステムカーネル0503内に含まれる。それは、ドライバーのようなモジュラー型のカーネル−ランド1210要素と一緒にメモリーにロードされる。ドライバーは、ブートプロセスの間、あるいはオンデマンドでさえも、基本的なカーネル0503よりも遅くロードされる。
カーネル−ランド1210要素は、例えば、ハードウェア抽象化、メモリー管理、マルチタスキングあるいはリアルタイムプロセススケジューラ、ファイルシステムサポート、インタープロセスコミュニケーション、ネットワークプロトコルスタック、セキュリティメカニズムなどのような、ユーザ−ランド要素1230の機能が依存するオペレーティングシステムインフラサービスを提供する。
技術的によく知られているように、カーネル−ランド要素1210は、ユーザ−ランド要素が操作する共有型コンテキストを提供する。このコンテキスト無しに、各ソフトウェアプログラムは、それが当該プログラム自体に依存する機能の全てを垂直に統合しなければならない。機能はプログラム作成が非常に難しく、非常に非効率であり、そして、単一コンピュータ上で複数のソフトウェアプログラムが同時に共存することを難しくする。
カーネル−ランド1210はまたセキュリティプログラムのいくつかのタイプを統合するには理想的な場所である。なぜなら、カーネル−ランド1210で実行されるセキュリティメカニズムは全体システムのセキュリティに、そして、それらのユーザ−ランド1230要素が変更される要求を出すこと無しにユーザ−ランド1230要素のセキュリティに影響を与える。例えば、PAX 1336は記憶境界違反活用対策である。対策は、許可されていない記憶領域(すなわち、共通活用手法)で恣意的なコードの実行を防止する。カーネル0503でPAX 1336をサポートすることは、不完全に実行されたユーザ−ランド1230ソフトウェアにあるセキュリティの脆弱性のいくつかのタイプを一人の攻撃者が活用する場合の困難度を大きく増加させる。
図12を参照し直すと、カーネル−ランド1210多層セキュリティメカニズムは、例えば、必須アクセス制御(MAC)1335、PAX 1336、信頼されているパス実行1337、PIE-ASLR 1330、および他のセキュリティメカニズムを含む。
これらのメカニズムと他のものは、図13に関連して以下の典型的なセキュリティ層の項でさらに記述される。
ユーザ−ランド1230要素は、例えば、上記の典型的な機能概要の項で図6Aに関連して既に記述されたワーク領域インフラ0623とワーク領域0415レベル要素を含む。それらの要素は、GUI 0603を提供するグラフィックスサブシステム、接続性エージェント0604、移行エージェント1101、クライアント0606、生産性スイート0608、ファイル/ネットワークイクスプローラー0607、アドバンストオプション0610、管理コンソール0609、終了オプション0611、およびウィザード0612のようなものである。
典型的なセキュリティ層
本発明の主なる目的は、セキュリティ要件が厳しい高リスクアプリケーション用の安全なプラットフォームを提供することである。
本発明の背景の項で解説したように、与えられたコンピュータシステムのセキュリティは、攻撃者が防衛の目的と対立する目的を成し遂げることがいかに困難かで計測できる。
具体的な攻撃で消費するリソース全部(時間、専門家の労働、機械、資金など)を攻撃コストと呼ぶ。
悪意のある目的とコンピュータシステムにとって、攻撃の最小コストはコンピュータシステムに対して悪意のある目的を成し遂げるために一番容易(一番安価)な経路である。
具体的な脅威モデルについて言えば、攻撃者が自由にできるリソースよりも攻撃の最小コストが大きいか、攻撃者にとってシステムをうまく侵害する価値よりも最小コストが大きい場合は、システムは安全であると言える。
実際には、最小攻撃コスト、攻撃者にとってどの侵害がする価値があるのか、潜在的攻撃者はどのようなリソースを自由に使えるのかについて正確な定性的予測をすることは難しい。したがって、システムのセキュリティの分析には、相当量の定性的判断が必要である。専門家は概算については確立を考慮する必要があり、エラーについては余裕のあるエラー領域を提供しなければならない。
図13は本発明の一つの実施例として典型的な多層セキュリティ層を示す。
高リスクアプリケーションの厳しいセキュリティ要件を満足させる攻撃の最小コストを達成するために、本発明の具体例は適切な設計の仮定と原理1340を適用させ、作成した保証(1350)及び生産(1320)プロセス、物理的(1321)プロパティ及びネットワーク(1322)にある余剰ソフトウェア、オペレーティングシステム(1323)、アプリケーション(1324)、ヒューマンインタフェース(1325)を注意深く組み合わせて耐障害性独立型セキュリティアーキテクチャ1342に構築できる。
先に述べたように、セキュリティは適切な原理に従って基礎から注意深く構築する必要がある全体システムの全体的緊急プロパティである。コンピュータシステムのセキュリティは設定要素がどのように設計され、インプリメントされ、一緒に統合され、設定されて使われるか、そして結果システムの実際の動作がどのようにシステムのセキュリティ目的に関して望まれる内容と密接に配列されるかにより決まる。
設計レベル 1340
したがって、セキュリティの達成は設計レベル1340から始まる。設計工程で具体的な過程が考察され、具体的な方針に適合させることができる。本発明の実施例が提供する安全はこれらの仮定と方針を反映する。
設計1340の仮定には例えば、本来の複雑性とその結果としてのソフトウェアの不完全性から、攻撃者は個人的に活用できるリソースを持っている、そして、このことが一般には知られていない脆弱性を思い通りに利用する状況を加えてもよい。仮定にはさらに、例えば、攻撃者がネットワークを完全に掌握する、すなわち、ネットワークのトラフィックに相互作用し、操作する能力を持つ状況や、攻撃者が自分のラボラトリで攻撃目標の完全なミラーに対する実験を行い、うまい攻撃ルーチンの開発を試みている、などを加えてもよい。また、攻撃者の思い通りになるレベルの高さ、リソースについて一般的な仮定を行うのは賢明である。例えば、攻撃者が個人である代わりに、情報技術に同等に優れるセキュリティリサーチャーを雇用する資金を助成された団体であるなど。
設計1340原理は、例えば、Keep It Simple Stupid (KISS) 1341、独立セキュリティアーキテクチャ1342においてシステム要素を設定する原理及びその他のセキュリティ原理を含むことができる。
セキュリティのコンテキストにおいて、KISS 1341は実施例が極力シンプルであることを意味する。この原理は例えば、実施例の最適化の対象である、具体的なタスクに求められる内容に与えられる機能を最小限にする、汎用で使用される部品の量を減らす、特にセキュリティが依存する要素を減らす、よりシンプルな部品を使う、部品間の相互作用を最小限に抑えるなどにより適用できる。
例えば、Unix同等のオペレーションシステムをベースとする具体的な実施例においては、KISS 1341原理は、ネットワークと相互作用可能なクライエントとサーバープログラムを最小化する、SUID root(Set−ID to root)プログラムのような特権昇格メカニズムを最小限にする、機密性の高いプログラムをJAILS 1332 に入れて分離する、与えるソフトウェア機能の量を最小限にする(例:インタラプタ、コンパイラなし)、さらに簡単なプログラムを使って必要な機能を提供する、TPE 1337等を使って気まぐれなソフトウェアの実行を制限するなどの方法で、適用できる。
KISS 1341原理を適用すると、実施例の複雑性を著しく軽減できる。既出の通り、あるものが複雑になればなるほど、それをよく理解するのは難しくなる。したがって、複雑性が高くなれば、システムの安全目的について望まれる内容を結果システムに配列しにくくなることから、攻撃の最小コストを下げがちである。
先に本発明の背景の項でも説明した通り、セキュリティアーキテクチャは与えられた任意の攻撃戦略に関連してセキュリティが依存する一連の要素のパターンを示す。
相互依存型セキュリティアーキテクチャでは攻撃の最小コストはもっとも弱い要素を攻撃するコストである。
一番弱い要素を壊すと全体のセキュリティ目的が壊れるほどにセキュリティの依存する要素が相互依存している場合、セキュリティアーキテクチャは相互依存型であると言う。この意味において、相互依存型セキュリティアーキテクチャは鎖(鎖の強度はそのもっとも弱いリンクによって決まる)あるいは、トランプで作った家(一枚のカードを抜くと家全体が壊れる)に似ている。
逆に、独立型セキュリティアーキテクチャ1342では、最小攻撃コストは与えられた攻撃戦略の範囲に沿って効果の出るすべての要素についての攻撃コストを合計したものである。
もしシステムセキュリティの要素が互いに独立してシステムのセキュリティに作用するように構築されているならば、セキュリティアーキテクチャは独立型である。これも、多層セキュリティアーキテクチャ1342と呼ばれる。
もし、コンピュータシステムのセキュリティ目的を侵害するために攻撃者が一連の重なったセキュリティ障害を個別に克服しなければならないとしたら、セキュリティアーキテクチャは攻撃の範囲において多層である。これは他の場所で起こる潜在的な失敗を保証する形で望まれる動作を強化するように各層を設計することにより実現する。
高いレベルのセキュリティを達成するには、システムの設定要素を慎重に構築し、多層において望まれる動作が潜在的攻撃のシナリオに対応して個別に再強化されていることが必要である。これは、十分に複雑なソフトウェアがその潜在的動作を望まれる内容に合わせて完全にインプリメントできないために必要である。
言い換えれば、多層セキュリティアーキテクチャ1342は、信頼できるコンピュータセキュリティを提供する上での唯一の実際的な方策といえよう。
保証レベル1350
セキュリティは脆弱性の逆であると定義できる。明確なテストが可能な機能的要件とは異なり、セキュリティを評価することは、脆弱性の欠如が明確に試験できないために難しい。つまり、プログラムが脆弱であると証明できても、安全だと証明できないことを意味する。
セキュリティをテストする唯一の方法は、攻撃者の役割を仮定し、システムの実際の動作の意図されていない要素を巧みに利用して騙し、許可されていないアクセスを得ようとする潜在的攻撃者に相当する高度な知識とリソースで繰り返してシステムの最も弱いリンクを攻撃することである。
脆弱性の試験は保証1350を与えるが、例えばソースコード監査1351、脆弱性評価1352、侵入テスト1353として知られる技術を含めることができる。
ソースコード監査1351は、セキュリティの穴として利用可能な不完全性(バグ)を見つけるソースコード監査のプロセスである。ソースコード1351の監査の目的は脆弱性を直し、実際と望まれるものとの差を狭めるために脆弱性を明確にすることである。最も見つけやすいクラスの脆弱性は予想できる脆弱性、すなわちバッファオーバフローなどの良く知られているパターンである。一番分かりやすいセキュリティの脆弱性を見つけて修正することにより、攻撃の最小コストを大幅に高めるだけでなく、攻撃者はさらに高度な脆弱性を見つけるためにリソースをもっと消費しなければいけなくなる。もっとも一般的な脆弱性を見つけるには、作業の一部を自動化する特別用途のツール、例えばSPIKEなどのプロトコルfuzzerが支援ソフトとして利用できる。
脆弱性評価1352の目的は、何が保護されるのか(アセット)、誰から保護されるのか(脅威モデル)、違った攻撃戦略を使って攻撃する場合の関連する攻撃コストの予測を反映する脆弱性の総合的な調査を行うことである。意図するアプリケーションでの与えられたコンピュータシステムについてうまく総合的脆弱性評価1352プロセスを行うと、設計、仕様、インプリメンテーション、設定、コンピュータシステムの利用レベルにおいて、現実と望まれる(セキュリティの領域における)内容の違いについて概算の試算ができる。脆弱性評価1352は、透過性を作り、どこに投資をすればより高度のセキュリティ(より高い攻撃最小コスト)を最も効果的に達成できるか判断するための情報を提供するので有用である。
侵入テスト1353は純粋攻撃に最も類似する保証プロセス1350である。侵入テスト1353の目的は実際にセキュリティ目的を破ることであり、これにより、セキュリティの脆弱性の実際的な波及効果が分かる。攻撃に成功する全経路を体系的に発見する脆弱性評価1352とは異なり、侵入テストは純粋な攻撃者と同様に、その目的を達成するための経路を一つ見つけさえすればよい。侵入テスト1353はセキュリティ脆弱性の意味合いが不明確である場合に最も有効である。侵入テスト1353では、セキュリティに必要な投資をするように奨励されるが、投資をしなければ、次の時期は純粋攻撃が起きた後になる。
上記で述べた保証1350プロセスを本発明の実施例に適用すると、本発明の実際例が提供するセキュリティを大幅に向上するのを助ける。
生産レベル1320
もし本発明の実施例が安全に作成されなければセキュリティは侵害される可能性がある。
この種のリスクを緩和するために、生産プロセスレベル1320のセキュリティ対策には例えば、ソース検証1301、高リスクアプリケーション開発環境1302、安全な引渡し1303及び信頼性検証1304を含めることができる。
ソース検証1301はトロイの木馬、バックドア、スパイウェア他の悪意のある機能を検出するために、例えば、設定要素に対するソフトウェア開発者の評判の検証、システムに統合された設定要素のソフトウェアソースコードのマニュアル検査を含めることができる。2進表現のソフトウェアは検査がかなり難しいため、ソースコードが使えない設定要素の利用を最小限にするのが好ましい。2進表現でのソフトウェアの検査は、リバースエンジニアリング、明瞭化(de-obfuscation)、分解、システムコールの追跡などを含めることができる。
ソースコード(パッチヒストリ)への一連の斬新的な変化を検査するのは、新バージョンがリリースされる度にソフトウェアコンポーネントのソースコード全体を再検査することより極めて容易である。
ソース検証1301は、本発明の実際例が提供するセキュリティを悪意のある機能性を持つソフトウェアコンポーネントが侵害する脅威を緩和できる。こうした 状況は、例えば、コンポーネントが悪辣なプログラマーが開発あるいは維持する内容を含んだり、攻撃者が含まれているコンポーネントのソースコードの置き場を侵害するように働きかけたり、あるいは攻撃者が開発環境に移動中のコンポーネントの完全性の妨害や侵害を試みるときに起こる。
攻撃者がソフトウェアの完全性を侵害する困難さの程度を引き上げるセキュリティ対策のもう一つの方法は信頼性検証1304である。
一部のソフトウェア開発者はソフトウェアリリースに署名して、ファイル信頼性を技術的に良く知られる暗号化手段より確認できるようにしている。例えば、ソフトウェア開発者はソフトウェアリリースを含むファイルのハッシュを計算して、自分の秘密鍵を使い暗号化手段でハッシュに署名することができる。署名されたハッシュはソフトウェアリリースにより普及する。これにより、開発者の公開鍵は署名済みハッシュの認証の確認に使うことができる。この署名済みハッシュは、さらに主レポジトリまたはミラーからダウンロードされて個別に計算されたファイルのハッシュと比較してファイルの信頼性を決定することができる。
注意したいのは、ソフトウェアリリースの認証を確認するために公開鍵暗号方式を使うためには、まず開発者の公開鍵のコピーを取得して確認をする必要があることだ。すべてのソフトウェア開発者が彼らのソフトウェアリリースに暗号方式で署名するわけではないため、これはいつも可能というわけではない。公開鍵自体の完全性が攻撃者から侵害される可能性があるので、公開鍵に依存する前には、望ましくは専用チャネルで公開鍵の信頼性を検証する必要がある。PGP のような公開鍵暗号方式の一部には、具体的な公開鍵の認証性を確認する困難さを軽減する一連のトラストモデルを支援するものがある。
セキュリティ装置0101の実施例を作成して輸送することに関わるリスクは少なくとも、セキュリティ装置0101が使われるアプリケーションに関わるリスクと同程度に高い(間違いなくもっと高い)。このため、セキュリティ装置0101は、高リスクアプリケーション1302の開発用に安全な環境を作るように最適化された安全な施設で開発し、出来上がった製品を高リスクアプリケーションに適する安全な配信プロセス1320で配布することが望ましい。
そうしないと、万一攻撃者が生産施設を侵害したり、セキュリティ装置0101の出荷を妨害するときに、セキュリティ装置0101の完全性を侵害されて製品の意図するセキュリティが出し抜かれる可能性がある。
したがって、望むセキュリティ目標を重複して強化する多層構造の耐障害型相互依存型セキュリティ構造で提供される出荷プロセス及びセキュリティの生産環境を注意深く最適化することが望ましい。
物理的レベル1321
物理的レベル1321セキュリティ手段は、例えば、外部ファイルシステム0500を含む物理的読取専用メディア0303/0308と、ホログラム0305及び署名0307などの認証のマークを含めることができる。これらのセキュリティ手段は典型的なセキュリティ装置の物理的実施例で図3A 3A’、3Bを参照しながら説明する。
ネットワークレベル1322
ネットワークレベル1322のセキュリティ手段には、例えば、仮想プライベートネットワーク(VPN)のクライアント0605、パーソナルファイアウォール1306が含まれる。
VPNクライアント0605は例えば、IPSpecプロトコルに対して支援するカーネルドライバとして統合できる。すでに図6Aを参照しながら典型的な機能の概観で述べたとおり、VPNクライアント0605は一例として、仮想プライベートネットワーク(VPN)に対する安全な接続を、イントラネット、インターネット、その他のネットワークあるいはネットワークの組合せを通じて他のネットワーク0103を確立するように機能できる。第一に、VPNの接続が外部からのセキュリティに高感度のネットワークの一部とインタフェースする唯一の方法であるために有用である。第二に仮想プライベートネットワークは、仮想プライベートネットワークのコンピュータシステムを潜在的に敵意のある公衆網から論理的に分離することで、セキュリティ層を追加するように利用できる。
パーソナルファイアウォール1306は、アプリケーション用のネットワークアクセスコントロールを強化し、ネットワークとの不許可アクセス防止するのに使える。例えば、パーソナルファイアウォールを使うことで、攻撃者がプリンティングデーモンなどのネットワークとインタフェースを持つプログラムにインタフェース接続を行うのを防止する。ファイアウォール原理は、プログラムのうち所有することを要求されているプログラムについてのみ、ネットワークへのアクセスを許可する。これによって、攻撃者がコンピュータシステムの中でトロイの木馬を実行しようとしても、ネットワークへアクセスがないので、トロイの馬が攻撃者と交信できないことから、セキュリティ目的を重ねて強化することができる。
パーソナルファイウォール1306は例えば、カーネルのネットワークレベルで運用するLinux iptableファイアウォールでも、適切な強制アクセスコントロール原理、プロセスグループとの関連(grsecurityはこの特徴を持つ)に従いネットワークソケットへのアクセスを制限するためのカーネルパッチでも、他の形式のネットワークアクセスコントロールメカニズムでも良い。
注意したいのは、ネットワークとのインタフェースからアプリケーションを保護するためにはパーソナルファイアウォールに依存しないほうがよいということである。例えば、一部のプログラムは、ネットワークを介してクライアントプログラムに遠隔接続を提供する必要がない場合でもデフォルトでネットワークスタックを使いプロセス間通信を行う。パーソナルファイアウォールは設定により、これらのプログラムが接続されている可能性のあるネットワークポートに対して試みられるネットワークからのアクセスをブロックすることはできるが、これらのプログラムがネットワークインタフェースをまったく使わず、代わりにファイルシステムパイプやソケットなどのプロセス間コミュニケーションのhost-only方式を介して通信しあうほうが望ましい。
オペレーティングシステムレベル1323
先に図12を参照しながら典型的なランタイムオペレーティングシステムのアーキテクチャの項でも説明した通り、オペレーティングシステムカーネル1503などのカーネル−ランド要素1210は、ユーザ−ランド要素1230が実行できる共有コンテキストを提供することができる。したがって、カーネル0503はある種のオペレーションシステムレベル1323セキュリティメカニズムを統合するのに最適な場所である。というのも、このオペレーティングシステムレベル1323でのセキュリティメカニズムは一般的にはシステム全体のセキュリティに影響し、個別的にはユーザ−ランド1230アプリケーションに影響するからである。
オペレーティングシステムレベル1323のセキュリティメカニズムには例えば、強制アクセスコントロール(MAC)1335、PAX 1336、Trusted Path Execution (TPE) 1337、Position Independent Code-Address Space Layout Randomization (PIE-ASLR) 1330、Discretionary Access Control 1331、 Jails 1332, Exploit countermeasures (ECM) 1333、及び ロウ IO/Memory 保護 1334を含めることができる。
強制的アクセスコントロール(MAC)1335を使うとMAC方式と呼ぶグローバルルールセットに基づいてプログラムがアクセスするのを許可するリソースを規制することができる。
これは、例えば、各プログラムの特権を機能を遂行するだけの最小限に規制して、内部的にインプリメントされた方法に関係なく、プログラムが欺かれる可能性のあるものを制限することを可能にする。
注意深く設定されたMAC方針は個別プログラムの侵害がシステムの残りに与えたかもしれない潜在的破壊を分離し、システムの完全性とセキュリティコントロールの改変を防ぎ、望まれない動作やコンポーネント間の相互作用の可能性を減らすことにより、システムの複雑性を本質的に減らす。
さらに、MAC 1335をオペレーティングシステムカーネル0503にインプリメントするソフトウェアは、OSが規制するソフトウェアよりかなり複雑性が低く、整理された明確な方法でシステムの残りの部分と相互作用する。これにより、分かりやすく監査しやすくなり、潜在的脆弱性を軽減することができる。
MAC 1335は例えば、grsecurityパッチ、RSBACパッチ、NSAのSecurity Enhanced Linux、その他の強制アクセスコントロールをインプリメントするパッチを適用すれば、Linuxカーネルに統合できる。
MAC1335はtrusted Solaris、 trusted HP−UX、他のMAC 1335 を支援するオペレーティングシステムカーネルからも提供される。
Jails1332はプログラムを論理的コンパートメントに収容してシステムの残りの部分から少なくともファイルシステムレベルで分離されるように働く。MAC 1335同様に、Jails 1332はjailシステムが潜在的損害から被る被害をそのプログラムがjailされている論理的コンパートメントに封じ込める助けをする。
Jails 1332として使うのに適する論理的コンパートメントのタイプには例えば、UNIX chrootメカニズム、User Mode Linux、XEN及びその他が含まれる。
MAC 1335に反して、Jails 1332をシステム上の全てのプログラムにグローバルに適用するのは実際的ではないかもしれない。個別にJailされたプログラムは、大抵の場合、同システムの実行に必要なライブラリや依存関係全部のコピーを含める固有の仮想ルートファイルシステムを要求する。したがって、Jails 1332は相対的に効率が低く、実際の運用ではJails 1332の利用はネットワークサーバソフトウェア(BIND DNSサーバが良く知られている)高リスクプログラムの具体的クラスに限定される。
過去の進入を成功させた特定状態の下で従来のUNIX chroot jailに侵入しようとする高度技術は存在するので注意を促したい。Jail1強化パッチはこれらの技術が機能するのを防ぎ、例えば、grsecurityやオープンウォールLinuxカーネルパッチに統合されている。
PAX 1336はメモリ境界違反開拓対策であり、これは不許可メモリ領域での勝手なコードの実行(例:共通搾取技術)を防ぐ。PAX 1336をカーネル0503で支援すると、不完全にインプリメントされたユーザ−ランド1230ソフトウェアにおいて攻撃者が幾つかのメモリ境界違反脆弱性を展開する困難さを高める。
PAX 1336パッチはLinuxを含む数種類のオペレーティングシステムカーネル0503用に利用できる。
PAX 1336へ同様あるいは対等の保護を提供する他のメモリ境界違反イクスプロイト対策は代替対策として利用可能である。
例えば、Java仮想マシンランタイムあるいはXグラフィックスサブシステムのような一部のプログラムには、通常はデータ記憶域(例:ヒープやスタック)として確保されるメモリ領域でコードを実行する能力を持つことを要求するものがある。これらのプログラムについては、PAX 1336が提供するメモリ保護機能の一部または全部を使用停止にする必要がある。
PIE−ASLR 1330は類似クラスの共通イクスプロイットのための無料の対策である。PIE−ASLR 1330は特別にコンパイルされた実行可能コード(位置独立コードとしてコンパイルされたもの)のアドレス領域レイアウトをランダム化し、攻撃者がメモリ領域違反脆弱性タイプを利用する困難さを著しく高める。PIE−ALSRはPAX 1336が防止できない可能性のある一部のタイプ(例:return −to−libc)の高度な利用に対する効果的な対策を提供することができる。
Address Space Layout RandomizationへのサポートはPAX 1336パッチ自体が提供できるが、前述のようにこの恩恵を享受するにはプログラムが特別にポジション独立コード(PIC)としてコンパイルされる必要があるかもしれない。
Trusted Path Execution (TPE) 1337は信頼されたファイルシステム経路にないプログラムの実行を防止するセキュリティメカニズムである。例えば、TPE 1337はユーザがトロイの木馬や他のマルウェアを偶発的に実行することを防止し、ローカルアクセスに成功した攻撃者がカーネル内の脆弱性を利用して多層セキュリティメカニズムを機能停止させるカーネルエクスプロイットなどの特権昇格エクスプロイットを実行するのを防止できる。
Linuxカーネルは例えば、grsecurityパッチ、オープンウォールパッチ、その他のセキュリティを強化するカーネルパッチを適用してTPE 1337を支援するように出来る。
ロウIO/メモリ保護1334はメモリやハードウェアIOに対する直接生アクセスを防止することができる。ロウアクセスを許可すると、コンピュータシステムに対してホストレベルで十分な特権を獲得した攻撃者は、フライ上のメモリ内容を変更する、例えばカーネル内のMAC 1335などの多層セキュリティメカニズムを無効にしたり、バックドアを直接に実行カーネルのランタイムメモリにインストールしてコンピュータシステムが提供するセキュリティを侵害することを許す可能性がある。
ロウIO/メモリ保護1334の支援は例えば、オープンウォールとLinuxカーネルのためのgrsecurityパッチ内に含めることができる。
例えば、グラフィックサブシステムのような一部のプログラムは効率動作のためにメモリに対して直接生アクセスを求める。こうしたプログラムに対しては、ロウIO/メモリ保護1334は停止する必要があるかもしれない。
エクスプロイト対策 ECM1333は、攻撃者が不完全にインプリメントされたカーネル−ランド1210及びユーザ−ランド1230ソフトウェアをエクスプロイト(違法攻撃)する困難度を高めるために機能する。
エクスプロイト対策(ECM)1333は、例えば、world writable directoriesでのリンクに従うプログラムを不許可にするような具体的クラスのレース状態の脆弱性を強化すること、フォーク/メモリボムなどのリソーススタベーション攻撃に対する強化、あるいは共通クラスのエクスプロイットが機能するのを防ぐメカニズムの強化が含まれる。他の例としては、プロセス情報(/procなど)、dmesg、ネットワークスタックフィンガープリント、予測可能なスケジューラプロセスID、カーネルシンボル値、その他の攻撃者に有用な情報などの脆弱性を識別してエクスプロイト(違法攻撃)し易くするシステム情報の漏洩に対する強化が含まれる。
エクスプロイト対策 1333は特定オペレーティングシステムカーネルの標準版に組み込んだり、パッチとしてこの機能をデフォルとして組み込んだことのないソースカーネルコードに適用できる。
例えば、一部のエクスプロイトカウンタメジャー1333はgrsecurityとLinuxカーネル用のオープンウォールカーネルパッチを一緒に組み込むことができる。
任意アクセス制御 DAC 1331は、大部分のオペレーションシステムがデフォルトとしてサポートする標準タイプのアクセスコントロールである。.
名前の示す通り、MAC 1335とは逆に、DAC 1331におけるアクセスコントロールは任意である。これは各リソース(例:ファイル)がそれに関連するオーナーユーザアカウントを持ち、アクセスコントロールがオーナーの裁量でリソースごとに別個に設定されることを意味する。DAC 1331では、リソースへのアクセスはプロセスに関連するオーナーに基づき幅広くオペレーションシステムに許容されている。言い換えれば、特権はユーザアカウントに付随するのであって、特定のプログラムやプロセスに付随しない。
DAC 1331の大きな問題は、DAC1331に依存することで弱い相互依存型のセキュリティアーキテクチャが出来上がり、コンピュータシステムのセキュリティ目的を強く強化する上で頼りにできない。
基本的オペレーティングシステムコンポーネントは大抵の場合、all-powerfulルーツまたは管理者アカウントによって所有されており、一般ユーザアカウントが持つのは不適切と考えられる。非ルート/アドミニストレータユーザが所有するリソースへのアクセスコントロール制限をバイパスする能力を含めて、各種の特別特権がオペレーティングシステムデザイナーから与えられている。
ルート/アドミニストレータが所有するリソースまたはルート/アドミニストレータアカウントに与えられる任意の特別特権にアクセスを要求するプログラムは、ルート/アドミニストレータアカウントの全特権を持って実行しなければならない。
残念ながら、ルート/アドミニストレータとしてプログラムを実行させるとプログラムを必要以上に強力にする。
したがって、DAC 1331モデルに基づき、システム全体のセキュリティはルート/アドミニストレータ許可により実行する各プログラムの完全なインプリメンテーションに依存する。これは、先に述べた通り、高リスクアプリケーションでは不適当な本質的に弱い相互依存型セキュリティアーキテクチャを生む。
DAC 1331のもう一つの問題は、そのアクセスコントロール方針が各リソースに対して別々に定義されて、ファイルシステムを介して配布されることである。MAC 1335とは逆に、簡単に定義し、レビューし、監査できる集中化した方針がない。このため、DAC効果を充分に理解するが難しくなり、結果として実際と望まれる内容との差が拡大する傾向がある。
独立した多層セキュリティアーキテクチャ1342において、DAC 1331はこの節ですでに説明したMAC 1335などの他のセキュリティメカニズムと組み合わせて使えば、追加されたセキュリティ層として有用である。
アプリケーションレベル1324
アプリケーションレベル1324でのセキュリティ手段には、一例としてコンパイラ保護1308、暗号化1309、n−ファクター認証0302、組込み認証1305及び他のアプリケーションレベルセキュリティ手段を含む。
コンパイラ保護1308は、バッファオーバーフローなどの特定クラスの共通セキュリティ脆弱性に対してアプリケーションを強化するように機能する。
コンパイラ保護1308の恩恵を得るには、ソフトウェアをそのような保護を支援するコンパイラツールチェインでコンパイルする必要がある。
例えば、GNUコンパイラツールチェインをSSPまたはスタックガードパッチでパッチすると、境界オーバーランチェッキング技術を(例:バッファの境界でランダム値のキャナリーを挿入する)使い、バッファオーバーフローのエクスプロイット(違法利用)に対する追加のランタイム保護を提供することができる。
暗号1309をアプリケーションで使うことにより、妨害を防止したり、メディアに保存されるあるいはメディアを通して対話するデータの完全性を保存することができる。例えば、ブラウザはSSL暗号プロトコルを使って、エンドツーエンドトランスポート層暗号をそれを支援するウェブサーバーに提供できる。EメールクライアントはS/MIMEを使ってEメールメッセージに署名して送信者のアイデンティティが暗号で確認できるようにし、メッセージを暗号化して、意図する受信者が秘密鍵によってメッセージを解読するようにできる。秘密鍵は、Eメールのトラフィックを単に妨害している攻撃者がアクセスできないようにする。
先に図3Aと図3Bを参照しながら典型的セキュリティ装置の実施例の項で述べたように、N−ファクタ認証0302はもう一つの有用なアプリケーションレベルのセキュリティメカニズムである。
具体的なセキュリティ装置0101の具体的実施例からユーザがサービスプロバイダー0104に接続しているかどうかをサービスプロバイダー0104に知らせるために、組込み認証1305をブラウザのようなクライアントアプリケーション0606に統合することができる。具体的には、サービスプロバイダー0104が利用し、適切なセキュリティ装置0101を使うサービスプロバイダーに接続するクライアントへのサービスを排他的に制限を行う。例えば、オンラインバンクはユーザがセキュリティ装置0101の適切に安全な具体例を使って銀行に接続しない限り、特定タイプのアカウントが高リスクの銀行取引を行うのを許可しないことがある。
組込み認証1305は、例えばMozilla FirefoxなどのウェブブラウザにコンパイルされるX509 認証と秘密鍵の組合せであるから、ブラウザがサービスプロバイダー0104にSSLなどのトランスポート層暗号プロトコルを使って接続するときに、組込み認証1305をクライアント側の認証として識別し、チャレンジ応答の交換をすることができる。
知的なユーザは、リバースエンジニアリングを使い、セキュリティ装置0101から組込み認証1305を取り出すことが可能なため、セキュリティがこのメカニズムにあまり強く依存しないことが望ましい。
図3Aのセキュリティ装置0101の実施例に関しては、より強い代替のほうが、セキュリティ装置0101にブートされていないときに統合された暗号コンポーネント0302に保存されている識別鍵が使われることを予防し、セキュリティ装置0101の利用をこれらの識別鍵で認証する能力に連携させる。
同様あるいは同等の機能を達成するその他の安全性の低い手段としては、クライエントソフトウェア0606をセキュリティ装置0101内で変更し、サービスプロバイダ0104に対して、何らかの方法で自己を識別するものである。例えば、ブラウザがその要求の中で固有のユーザエージェントアドレス、秘密のクッキー、あるいは特別HTTPヘッダを送る。しかし、こうした技術は簡単に克服される可能性がある。
ヒューマンインタフェース1325
一部のアプリケーションでは、攻撃者がユーザに対して社会的な工学技術を行うのを難しくするヒューマンインタフェースレベル1225のセキュリティ対策が実施例に含まれるのが好ましい。社会的な工学技術とは攻撃者がコンピュータのユーザを騙して攻撃者の協力をさせるテクニックをいう。当然、ユーザは信じるのが自然で、充分な認識とトレーニングを受けていないことから、社会的工学技術に影響されやすい。
例えば、フィッシング(phishing)攻撃は、ユーザに攻撃者が管理する銀行の複製のウェブサイトにログオンするよう説得する意図を持つ虚偽のEメ−ルを送り、ユーザを騙して認証(例:ユーザ名/パスワード)を銀行アカウントに提供させるものだ。
そして、高リスクアプリケーションの状況下で使われる目的のセキュリティ構造はユーザをセキュリティが依存する弱いリンクになることから保護する耐社会的工学技術メカニズム1311を含む。
一つの実施例では、これはユーザに排他的に安全な選択を与えてユーザ自身を保護することを意味する。例えば、もしユーザが恣意的なウェブサイトにアクセスするのを許可されなければ、攻撃者はユーザを騙してオンラインバンクのウェブサイトの偽装の複製にログインさせることはできない(フィッシング攻撃)。本発明の一つの実施例はユーザが仮想プライベートネットワークだけと交信し、公衆網と交信するのを一切許可しない。同様に、もし、ユーザが恣意的ソフトウェアプログラムを実行することが許可されなければ、攻撃者はユーザを騙してトロイの馬を実行させることができない。
追加の耐社会的工学技術1311メカニズムには、例えば、教育訓練資料をコンピュータシステムに組み込んで潜在的攻撃へのユーザの認識を向上させることが含まれる。例えば、ユーザに対して潜在的リスクを警告するトレーニングビデオをユーザがセキュリティ装置0101にブートした最初の段階で実行させる、問題のあるインタフェースの論理的近接位置に警告的通告を埋め込み、ユーザに対して危険な選択が起こしうる成り行きを警告することもできる。
さらに別の耐社会的工学技術1311メカニズムには、例えば、ユーザに社会的工学技術による攻撃が進行中である(例:誰かが騙そうとしている)ことを示す疑わしい署名を識別できる情報のビジビリティを向上させることができる。
例えば、ブラウザはオンラインバンクに成りすましているウェブサイトが暗号を使っているかどうか、誰の暗号認証が登録されているのか、誰がネットワークブロックを所有するのか、ウェブサイトをホストしている国(例:ウェブサイトはアメリカのオンライン銀行が東ヨーロッパのウェブサーバでホストされている)、ユーザに社会的工学技術の攻撃が試みられていることを暗示する他の情報を強調できる。
典型的な安全生産プロセス
図14は本発明の一つの実施例における安全な生産プロセスの典型的なステップの概観を示すフローチャートである。
まず、セキュリティ装置1302を安全に開発する状況に適した充分に安全な環境を設定する(ステップ1410)。
図13に基づき典型的なセキュリティ層の項で述べたように、セキュリティ装置0101の実施例を生産して輸送することに関するリスクは、少なくともセキュリティ装置0101の使用対象であるアプリケーションに関るリスクと同程度に高い(おそらくもっと高い)。したがって、セキュリティ装置0101は、高リスクアプリケーション1302用セキュリティソリューションの開発に適する安全な環境として設計された、安全な施設で開発することが望ましい。
こうした環境を設定するには、例えば、適切に安全な開発施設1411を使う、安全な開発システムをブートストラップする(ステップ1412)、パッチ済みのコンパイラツールチェインを設定する(ステップ1413)、必要とされるソフトウェアコンポーネントを確実に得る(ステップ1414)、ソフトウェアコンポーネントをバイナリパッケージレポジトリに組み込む(ステップ1415)などする。
適切に安全な開発施設1411は物理的に例えば、周辺防衛(フェンス、壁など)、武装警備兵、広範囲の屋外及び屋内に設置された監視ビデオ、ネスト化レベルの規制区域(コンパートメント)などのような複数の物理的セキュリティ多層で保護された場所に物理的に配置することができる。
物理的施設及び施設内の規制区域へのアクセスは承認された信頼できる人だけに厳しく限定され、その人は強力なN−ファクター認証手段(例:バイオメトリクス、トークン、パスワード/ピンコード)で識別することができる。
同様に、施設のIT(情報技術)基盤(例:コンピュータネットワーク)は潜在的攻撃のシナリオに関連するセキュリティの多層構造により十分に保護されなければならない。
開発に使われるコンピュータシステムは、本発明の実施例が提供するセキュリティと同等以上のレベルで保護することが望ましい。
最終的に、生産プロセス1401の開発作業用に特に最適化されたセキュリティ装置0101の実施例は、他のアプリケーション用に最適化されるセキュリティ装置0101の実施例の開発に使うことができる。
最初、生産プロセス1401での利用を目的として最適化された実施例をが具体化されるまでは、この目的のために特にカスタム化された従来型の安全なコンピュータシステム上で開発作業を実施する(ステップ1412)ことができる。
一つの実施例でコンパイラ保護1308の利点を利用するために、典型的なセキュリティ層の項で先に述べたように、適切にパッチしコンパイルしたツールチェインを開発システム(ステップ1413)にインストールできる。
要求されたソフトウェアコンポーネントを安全に獲得する(ステップ1414)には、例えば、典型的なセキュリティ層の項で解説した通り、ソース検証1301、信頼性検証1304手段を用いることができる。
ソフトウェアコンポーネントを、安全な開発環境にある集中型パッケージレポジトリへの収納が可能なように(ステップ1415)管理しやすいバイナリパッケージへと組み立てる作業の自動化を補助する為に、パッケージ管理を使いシステム構築を用いることが望ましい。
システム構築は、CあるいはC++のようなコンパイル言語で書かれたソフトウェアコンポーネントのコンパイルの最中にパッチしコンパイルされたツールチェインによりサポートされるコンパイラ保護1308を起動するように設定できる。
パッケージ管理及びシステム構築は例えば、gentoo portage、RPM、debian apt、その他のパッケージ管理またはシステム構築とすることができる。
暗号署名ができ、パッケージ形成後に検証可能なパッケージ管理及びシステム構築を使うのが望ましい。これにより、レポジトリ内のパッケージの完全性が潜在的攻撃者により侵害されるリスクに対し、強化した保護を与えることができる。
次に、リリース品質、外部ファイルシステム0500のマスターイメージが開発されるが(ステップ1420)、これは例えば、マスターイメージを最初に形成し(ステップ1421)、それからマスターイメージのテスト、問題解決、再形成(ステップ1422)をし、リリース品質(条件的1423)のバージョンが作られて、特定のアプリケーション用に最適化した一つの実施例の機能上及びセキュリティ上の目的を十分に満足するリリース品質が達成できるまで行う。
一つの実施例において、マスターイメージの開発(ステップ1421)には例えば、カーネル0503の形成、適切なinitrdの形成0502、内部ファイルシステムイメージの作成0504、これらの要素と適切に設定したブートローダー0501との統合、および先に典型的な外部ファイルシステムの項で述べたように要素をオートラン0505させることによる外部ファイルシステム0500の形成が含まれる。
内部ファイルシステムイメージの形成0504には、例えば、新しいファイルシステムを作成する、ステップ1415で作成されたパッケージレポジトリから必要とされるソフトウェアコンポーネントをファイルシステムに展開する。これらのコンポーネントを設定する。そして先に述べた通り、外部ファイルシステム0500に位置する内部ファイルシステムのイメージをコンパイルすることなどが含まれる。
ここで注意したいのは、必要とされるソフトウェアコンポーネントを展開した場合、プラットフォームの初期化0622、ワーク領域インフラストラクチャー0623、典型的な機能の概観で図6Aに基づき説明したワーク領域0415レベルの機能要素及び関連する依存関係で内部ファイルシステムを満たすことになる可能性があることだ。
さらに、内部ファイルシステムには例えば、典型的なセキュリティ層の項で図13に基づき説明したソフトウェアセキュリティメカニズムをネットワーク1322、オペレーティングシステム1323、アプリケーション1324及びインタフェース1325レベルで有効にすることができるソフトウェア、データ及び構成設定などが含まれる。
次に、マスターイメージはその信頼性を暗号で検証することができるよう暗号で署名される(ステップ1424)。これにより、製造中に(ステップ1430)セキュリティ装置0101にインプリントされるマスターイメージの完全性の攻撃者による侵害は、困難度を増す。
最後に、製造段階(ステップ1430)では、マスターイメージの信頼性は暗号方式で検証され(ステップ1431)、マスターイメージを不揮発性メモリ要素0303または記憶メディアにインプリントしながらセキュリティ装置は量産(ステップ1432)され、製造されたセキュリティ装置の完全性が検証される(ステップ1433)。
状況に応じて、量産の前にマスターイメージの認証を確認する追加のセキュリティが提供される(ステップ1431)。例えば、製造(ステップ1430)は異なる国や開発施設から地理的に離れた他の場所にある第三者製造施設で行われる(ステップ1430)かもしれず、この場合、充分なリソースを有する攻撃者は移送中のマスターイメージを妨害してすり替える機会を得るかも知れない。とくに内部の関係者が関与している場合は、攻撃のコストは高くなるかも知れないが、妨害のリスクは単一の安全な開発施設の中でも同様に存在する。
一つの実施例における一部のアプリケーションでは、規模の経済の効率を高めることから、具体的マスターイメージがインプリントされるセキュリティ装置(ステップ1432)を量産することが好ましい。
他方、別の実施例では、固有のマスターイメージを個別のセキュリティ装置0101にインプリントするのが望ましい(図示なし)。例えば、これは独自の識別情報を認証目的に使われるマスターイメージに組み込む、セキュリティ装置が騙された(例:トロイの木馬に入れ替える)ことをユーザが簡単に識別できるようにブートプロセス中に表示可能な独自の視覚的認証マークを組み込む、またはシングルユーザの特別要件に特化したあるいは他の目的に使われるマスターイメージの形成に使うことが出来る。
生産後にセキュリティ装置1433にインプリントされたマスターイメージの完全性を検証することは、攻撃者が他のセキュリティ手段を通過して実際にユーザに引き渡されるセキュリティ装置0101の完全性を侵害する困難さを大きくすることが防衛の目的であることから有用である。例えば、もし攻撃者が巧みにセキュリティ装置の引渡しを分離した製造施設から侵害して装置を侵害されたセキュリティ装置と入れ替えるとしたら、セキュリティ装置の完全性を受け取り次第独立して検証すれば、このセキュリティ違反を検出できる。
別の例として、セキュリティ装置の量産プロセスを管理するコンピュータを侵害して、コンピュータをプログラミングして認証されたマスターイメージの代わりにトロイの木馬のマスターイメージをインプリントするなどがある。
一部のアプリケーションでは、製造されたセキュリティ装置の統計的に有意義な任意のサンプルの完成度を検証すれば十分であるかもしれない。完全性をサンプリングするのは比較的低いコストでインテグリティが侵害されないという納得できる保証を提供する。
暗号化署名を使ってファイルの信頼性を確認することは、技術的には良く知られたオペレーションであり、典型的なセキュリティ層の項ですでに述べた。
代替実施例の詳細説明
概要
代替実施例は、主として個人用途に最適化された既に説明した実施例と比較して、非個人用途に最適化された本発明の実施例である。代替実施例は、専用のコンピュータハードウェアを使っているクライアント側とサーバ側で用いるプラットフォームを提供する。
非個人用途のクライアント側とサーバ側に使用される現代のコンピュータシステムはしばしば安全ではない。なぜならば、ソリューションは汎用目的のプラットフォームの上部に作り込まれている。プラットフォームは決してセキュリティ用に設計されていない。したがって、コンピュータシステムはセキュリティよりも機能性を優先し、結果として、最善でも不断の保守(パッチング等)を要する中程度のセキュリティを提供する脆弱なセキュリティアーキテクチャになる。
さらにシステムは、職業としてセキュリティの専門家ではなく、セキュリティの専門家になることは合理的に期待できないIT専門家(たとえば、ネットワークとシステム管理者)によって、インストールされ、設定され、保守される可能性が最も高い。
さらに現代のコンピュータシステムはしばしば、比較的高価なシステム導入サービスを含む労働集約型のプロセスとなる。そして、結果と提供するセキュリティの品質を向上させながら、この費用を何らかの方法で低減することが望ましい。
代替実施例は、ユーザが素早く一時的な高セキュリティモードに切り替えられる。あるいは別のオペレーティングシステムと共存することができるように最適化されていないことを除いて、好ましい実施例に類似している。その代わり、代替実施例は、非個人用途シナリオとして最も可能性が高い、専用のコンピュータハードウェア上で主たるオペレーティングシステム環境としての実行用に最適化される。
これはたとえば、初期化されたシステム状態の記録を保存するようなブートプロセス最適化が代替実施例には必要ではないかもしれないことを意味する。なぜならば、それは好ましい実施例ほど頻繁なリブートは予想されないため、ブートの実行時間はほとんど問題とならない。
同様に、代替実施例は接続性エージェントを提供する必要がないかもしれない。専用のコンピュータハードウェアは通常、安定した物理的ネットワーク環境を用いて物理的な固定位置に置かれる。そしてこの場合に、管理者が手動でネットワーク設定パラメータを提供できることが好ましい。
さらに、代替実施例は、専用コンピュータハードウェア上でデータを保存する場合により提供しやすい性能と拡張性の利点を生かすために、データを記憶するための永続性安全記憶要素の代わりに、論理ボリューム要素を使うことができる。こうして、代替実施例は、専用コンピュータハードウェアの内部記憶デバイスの記憶容量をさらに効率的かつ柔軟に活用でき、一部のアプリケーションが求めるデータ記憶能力の拡大が可能になる。
代替実施例の目的は、高リスクアプリケーション用として十分に安全なシステムを、代替実施例を実施する特定製品の市場価格だけではなく、主に高セキュリティコンピュータシステムの統合、設定ならびに保守に要する時間、労働及び技術の軽減に基づき計測される、より低い全体コストにて提供することである。
部分的にはこれは、ハードドライブへのインストールが要求されないような、専門家達が多層化されたセキュリティに機能性を注意深くバランスさせるように事前に統合されている独立したオペレーティングシステム環境を提供するために、セキュリティデバイスからコンピュータを直接にブートすることで遂行される。
ある実施例においては、既存サーバーの機能性は、セキュリティデバイスが移行エージェントを用いて提供する独立した安全なオペレーティングシステム環境へ容易に移行しえるため、既存アプリケーションを高セキュリティ環境へ実用的に変換できる。
企業内での代替実施例となるアプリケーション例はシンクライアント、シンクライアント端末サーバー、ネットワーク管理コンソールと安全なサーバーを含む。
他のアプリケーションは、たとえば、電子投票端末のようなキオスク型アプリケーション、安全なインターネットアクセスステーション、そして、学校や大学のような教育環境で既に利用できる日用品的なコンピュータを、学生の試験を自動化するための規格準拠の安全な試験用端末機に変化させることも含む。
代替実施例はまた、多くの非個人用のサーバ側あるいはクライアント側アプリケーション用の実用的なターンキーソリューションを提供するために、たとえば、サービスプロバイダー、政府あるいはインテグレーターにより容易かつ経済的に配布可能になるように最適化されている。
たとえば、インテグレーター企業がクライアントに本発明の原理に合致したセキュリティデバイスを配布できる。教育省は学校にデバイスを配布して、学校の生徒が安全な方法で全国レベルのコンピュータ化された試験に参加できるようにするかもしれない。
代替実施例と好ましい実施例の間の違いについて、図を参照しながら詳細をさらに記述していく。
典型的なユーザの相互作用
以下の典型的なユーザ相互作用ステップは、以下の代替実施例の典型的なシステム初期化セクションで記述された操作を参照するとより理解しやすくなる。
図4Bは、本発明の代替実施例を用いて典型的なユーザ相互作用ステップの概観を示す流れ図である。
代替実施例におけるユーザ相互作用は、永続性安全記憶(PSS)メカニズムの代わりにデータ記憶用の論理ボリュームメカニズムの使用に関連する変更を除いて、既に記述した実施例におけるユーザ相互作用とほとんど類似している。理由は以下の典型的なシステム初期化セクションでさらに説明される。
たとえば、コンピュータが初めてセキュリティデバイス0101からブートしており、論理ボリューム要素がまだ作られていないという理由で論理ボリューム要素が存在しない(条件文0851’)ならば、論理ボリューム構成ダイアログが開始され(ステップ0951)、ユーザは新しい論理ボリューム要素を構成するために相互作用を行う。
オペレーティングシステムがコンピュータ0102の内部記憶デバイス0208に含まれるならば、オペレーティングシステムが含まれる古いパーティションを破壊するか、あるいは、バックアップもしくはそれらからアプリケーション内容や設定データの移行を可能にするためにそれらを保存するかを、論理ボリューム構成ダイアログとの相互作用の際にユーザが選択できる。ユーザが古いパーティションを保存することを選択するならば、論理ボリューム要素は、デフォルトで割り当てられていないディスクスペース上、あるいは空の(たとえば、最近フォーマットされた)ファイルシステムを含むパーティション上に作成される。
ある実施例の中で、論理ボリューム要素の存在は、代替実施例が提供するオペレーティングシステム環境の操作に必要とされる。そのため、ユーザは、論理ボリューム要素がまだ存在していない場合は、論理ボリューム要素の作成をスキップするオプションを与えられない。
同様に、異なる利用コンテキストにより、好ましい実施例用のユーザ相互作用セクションで記述されているように、それはサービスプロバイダー0409に対する認証のステップでありうる。
専用のコンピュータハードウェアは通常、安定的な物理ネットワーク環境を用いて永続的な物理配置で維持される。そしてこの場合、管理者あるいは技術に精通したユーザがネットワーク設定パラメータを手動でウィザード0612’を用いて提供できるようにすることは、好ましい実施例が用いる接続性エージェントの操作に依存するよりも望ましい。
ブートプロセスの最後で、ある実施例は、特定の実施例に統合されているオペレーティングシステム環境とターゲットのアプリケーション(たとえば、ネットワークサービス、キオスクアプリケーション)をユーザがモニターし、制御し設定できるに十分な機能性を含むGUIワークスペース0415を通してアクセス可能な管理インタフェースをユーザに提供する。
実施例において、GUIワークスペース0415’は、たとえば、各種のアプリケーション固有の設定ウィザード0612’、管理コンソール0609’、およびコンソールロッキング0613メカニズムを含められる。ユーザはそれらとローカルに(すなわち、物理的なコンソール上で)、あるいは遠隔で(すなわち、ネットワークを通して)相互作用できる。
いくつかのアプリケーションについて、たとえば、暗号化されたWebインタフェース、セキュアシェル(SSH)、VNC、あるいはMicrosoft Terminal Servicesのようなネットワークサービスを通して、ユーザが遠隔地から管理インタフェースにアクセスできるようにすることは望ましく、かつ便利かもしれない。
ある実施例において、ユーザは移行エージェントと相互作用して、エクスポートされたアプリケーションデータのアーカイブ(たとえば、バックアップアーカイブ)から、あるいはコンピュータ0102の内部記憶デバイス0208の保存されたパーティション上にあるファイルから、主たるサーバー側アプリケーション内容(たとえば、電子メールアカウント、ユーザアカウント、Web内容、データベース内容)と設定データ(たとえば、アクセス制御リスト、割当)を移行する。
移行エージェントは、システムの初期化中に自動で、あるいはユーザによって手動で、(例えば GUIメニュー項目、デスクトップアイコンあるいは管理コンソールを介して)起動される。
最後に、セキュリティの理由により、システムが規定の時間内でユーザの相互作用がない場合、物理的コンソールを自動的にロックするようコンソールロッキングメカニズム0613を設定することが望ましい。代替方式として、ユーザはGUIオプション(メニュー項目、アイコン等)を選択することにより、コンソールを手動でロックできる。
コンソールロッキングは、無許可の、あるいは偶発的なGUIワークスペースとユーザとの相互作用を防止できる。同様に、たとえば、スクリーンを隠す、あるいはそれを画像あるいはアニメーションで覆うことにより、詮索好きな目からGUIワークスペースの内容を保護できる。
コンソールは、たとえば、パスワードを入力する、認証トークンを挿入する、あるいは生体認証を通すことにより、ユーザがシステムの認証を得ることに成功するまで、ロックされた状態が続くようにすることができる。
典型的な機能概要
図6Bは、本発明の代替実施例用の典型的な多層機能概要を示す図である。
機能概要レベルにおいて、代替実施例は、専用ハードウェア上で非個人用アプリケーションを走らせることができるように最適化された本発明の実施例用の使用コンテキストに関連する異なる仮定に従って代替実施例の機能性が設計されていることを除き、既に記述された実施例(すなわち図6A)と類似している。
プラットフォーム初期化0622’レベルでのいくつかの要素は、好ましい実施例に関連して、異なって実施例されるかもしれない。
たとえば、さらに以下で記述された初期化マネージャ0601’の代替的な実行が、永続性安全記憶(PSS)メカニズム0602の代わりに論理ボリュームメカニズム0631と同様に、使用できる。
論理ボリュームメカニズム0631と永続性安全記憶(PSS)メカニズム0602は両方ともにデータ記憶用に設計されている。それらは、しかしながら、異なる事情に合わせて最適化されてしまっている。これらの違いはさらに以下の典型的なシステム初期化セクションで記述される。
実施例において、好ましい実施例の接続性エージェント0604は要求されない。なぜなら、専用のコンピュータハードウェアは通常、安定した物理的ネットワーク環境を用いて永久物理位置を維持する。そしてこの場合に、管理者が手動でネットワーク設定パラメータを提供できることが好まれる。
実施例において、移行エージェント1101’は、クライアント側アプリケーション内容と設定データの代わりに、サーバ側を主に移行させるサポートを含められる。
典型的なワークスペース要素0415’はあらかじめ統合されたターゲットアプリケーション0708(ネットワークサーバーアプリケーションを含む)とアプリケーション固有の設定ウィザード0612’を含められる。
あらかじめ統合されたターゲットアプリケーションとネットワークサービス0708は、たとえば、リモートデスクトップ共有サービス、セキュアシェル(SSH)サービス、ファイルサーバ、Webサーバ、データベースサーバ、メールサーバ、アンチスパムサービス、ディレクトリーサービス、認証局サーバ、キャッシュィングアクセラレーター、プロクシーサーバ、ファイアウォール、VPNサーバ、侵入検知サーバまたはノード、侵入防止サーバ、DNSサーバ、DHCPサーバ、VoIPサーバ、インスタントメッセージングサーバ、負荷調整サーバ、学生試験アプリケーション、電子投票キオスクアプリケーション、カスタムベンダーソフトウェア、あるいは他のタイプのサービスとアプリケーションを含むことができる。
典型的なシステム初期化
図7Bは、本発明の代替実施例のブートプロセスにおける典型的なステップ0710’を示す図である。
典型的なブートプロセス0701’の結果は、図11を参照して、以下の典型的なOSアーキテクチャセクションでさらに記述されるアーキテクチャを用いて走らせているオペレーティングシステム環境である。
ユーザは、図4Bを参照して、上記の典型的なユーザ相互作用セクションで記述されているように、典型的なブートプロセス0701’と相互作用できる。
ある実施例におけるブートプロセスは、たとえば、アプリケーション固有の設定ウィザード0612’の呼び出し、管理用コンソール0609’、およびターゲットアプリケーション0708を含む既に記述された望ましい実施例のブートプロセス(例:図7A)に類似している。
さらにまた、データ記憶用の論理ボリュームメカニズムを使用する初期化マネージャ0601‘の代替的実行が可能である。
論理ボリューム管理(LVM)は機能強化された高レベルディスク記憶管理を提供し、より管理が難しい物理的なディスクのパーティションの範囲内で従来からの直接的なデータ記憶とは対照的に、抽象的な論理ボリュームのフレキシブルな記憶スペース割当が複数の物理的なディスクとパーティションを橋渡しできるようにする。
LVMは物理的なディスクを記憶ユニットに分割できるようにする。複数のディスクからの記憶ユニットは、論理ボリュームが作成できる範囲内でボリュームグループに互いにプールできる。論理ボリュームは、ファイルシステムを記憶するために使用できるという意味で、抽象機能的には従来のハードドライブパーティションと同等である。さらに、論理ボリュームの記憶ユニットは記憶容量要件が変わると再割り当てできる(すなわち、追加あるいは除去)。
相対的に、物理的なハードドライブパーティションのサイズを変えようとすることは、時間の無駄であり危険であると分かる(すなわち、結果としてデータ損失となる)。そして通常は、パーティションへのハードドライブの割当は固定である。これは、あるパーティション上の記憶容量が満杯であれば、利用可能といえども、他のパーティションからフリーな記憶容量を再割り当てすることはあまり実用的とは考えられないことを意味する。
他方、LVMを使って、全体のディスクあるいはディスクグループは容易に、論理ボリュームが割当てられ、要求されて再割り当てされる範囲内で単一ボリュームグループに割り当てできる。
たとえば、一つの記憶管理戦略は各々の要求された論理ボリュームから最小限の記憶容量を割り当て、残りを割り当て不能な記憶容量(すなわち、記憶ユニット)として残しておくかもしれない。また、論理ボリュームが規定容量の閾値(たとえば、70%で満杯)に達した場合、管理者は論理ボリュームを拡張し割り当て不能な記憶ユニットを含めることができる。
ボリュームグループにある空き記憶容量が使いきられた場合、追加の物理的ディスクは機械にインストールしてボリュームグループに追加することにより、必要に応じて容量を増加させることができる。
さらに、損傷したディスクは、LVMメカニズムを使って記憶ユニットを別の物理的ディスクに自動的に移行させながらボリュームグループから損傷ディスクを除去することにより、システムサービスを中断させることなく段階的に損傷した物理的ディスクの使用を止めていくことができる。
PSSメカニズムの上でのLVMメカニズムの利点は明確である。しかしながら、LVMメカニズムを使うことは非専用コンピュータ用に最適化された実施例(たとえば、好ましい実施例)に対しては実用的とは言えない。なぜなら、コンピュータの内部記憶デバイス0208は既にパーティションで区切られ、ローカルオペレーティングシステムによって作成され使われているファイルシステム含んでいる可能性が高いからである。
一般的に、論理的ボリューム管理は物理的なハードドライブを従来型で区分することよりもより良い記憶管理ソリューションであると考えられるため、LVMメカニズムの使用は、実用的であるときは推奨される。
図8Bは、代替実施例のブートプロセス0701’に使用される初期化マネージャ0601’の代替的な実行の操作における典型的なステップを示すフローチャートである。
代替実施例の初期化マネージャは、代替の初期化マネージャ0601’は永続性安全記憶(PSS)要素の代わりに論理ボリューム要素を使うことを除き、好ましい実施例の既に記述した初期化マネージャに類似している。理由は上記で既に記述されている。
初期化マネージャ0601’の論理ボリューム要素へのアクセスが成功する(条件文0851’)ならば、初期化マネージャ0601’は、コンピュータ0102のハードウェアプロファイルが変更された(条件文0854’)ならば、次に検知するように試みる。そうであるならば、それからハードウェア設定パラメータを決定し(ステップ0870)、そして新しいハードウェアプロファイルと設定パラメータを論理ボリュームに保存する(ステップ0871)。ステップ0854またはステップ0871から実行を継続すると、適切なドライバーはそれから既に決定された(ステップ0870で)ハードウェア設定パラメータに基づいてロードされる(ステップ0872)。
さもなければ、たとえば論理ボリューム要素がまだ存在しないという理由で、初期化マネージャ0601’が論理ボリューム要素をアクセスすることに失敗するならば(条件文0851’)、ハードウェア設定パラメータを決定し(ステップ0820)、ドライバーをロードし(ステップ0815)、図9B−Iを参照して下記に記述される論理ボリューム要素を作成するための典型的な方法を使って論理ボリューム要素を作成し(ステップ0861)、そしてそれから決定されたハードウェア設定パラメータを論理ボリュームに保存する(ステップ0855)。
次に、ステップ0855(すなわち、論理ボリュームが存在せず、作成しなければならないならば到達)あるいはステップ0872(すなわち、論理ボリュームへのアクセスが成功したならば到達)からの実行を継続し、システムサービスが開始できる(ステップ0821)。
初期化マネージャ0601’の操作を計算し、グラフィカルユーザインタフェースが開始できる(ステップ0816)。
注意すべきは、論理ボリューム要素の作成(ステップ0861)が、永続性安全記憶(PSS)のオプションでの作成とは異なり、代替実施例では必須であり、初期化されたシステム状態の記録を保存するようなブートプロセス最適化は、好ましい実施例ほど頻繁にリブートされるとは代替実施例は期待されないために、必要とされない。それで発行のブート時間性能はそれほど問題とならない。
図7Bに戻ると、代替実施例のブートプロセス0701’は管理用コンソール(ステップ0609’)、アプリケーション固有の設定ウィザード(ステップ0612’)、およびターゲットアプリケーション(ステップ0708)の開始を含む。
たとえばWebminユーティリティのような管理用コンソール(ステップ0609’)は、たとえば、論理ボリューム管理、リモートデスクトップ共有、SSHデーモン、ネットワークファイル共有、Webサーバー、メールサーバー、データベースサーバー、DNSサーバー、およびほかのシステムサービスのようなシステムとサービスを設定し構成するためのユーザインタフェースを提供することで、ユーザを支援するために使用できる。
典型的な論理ボリューム方法
既に記述したように、論理ボリュームメカニズム0631はコンピュータ0102の内部記憶デバイス0208の高レベル記憶管理を提供するために使用でき、抽象的な論理ボリュームの柔軟な記憶スペース割り当てが複数の物理的なディスクとパーティションを橋渡しできるようにする。
注意すべきは、異なる脅威モデルに従い、代替実施例は、PSS要素の好ましい実施例の暗号化とは違い、論理ボリューム要素を保護するにあたりファイルシステムレベルの暗号化を使用しない。好ましい実施例はファイルシステムレベルの暗号化を必要とする。なぜならば、既に記述したように、好ましい実施例は、異なるタイミングで同じ物理的なコンピュータハードウェア上で走るローカルオペレーティングシステムと共存するように最適化されているためである。ローカルオペレーティングシステムのセキュリティが侵害されるならば、攻撃者はPSS要素ファイルへアクセスできるようになるため、暗号化がPSSの範囲内で記憶されたデータの機密性と完全性を保護するために要求される。この脅威は代替実施例には適用されない。それは専用コンピュータ上で主たるオペレーティングシステムを使用するために最適化されている。
論理ボリューム要素を作成するための典型的な方法
図9B−Iは論理ボリューム要素の作成方法での典型的なステップを示すフローチャートである。
既に記述したように、論理ボリューム要素の作成はこの実施例では必須である。
できれば、全ての利用可能な内部記憶容量を橋渡しする単一の論理ボリューム要素が、各PSS要素を識別するために使用されるユニークな指紋を計算することにより、複数のPSS要素0602が単一コンピュータ上で作成され使用される好ましい実施例と対照的に、各コンピュータに対して作成される。
注意すべきは、いくつかのオペレーティングシステムカーネル(たとえばLinux)は論理ボリュームの作成およびアクセス支援の提供に使用可能な組込論理ボリューム管理サポートを含む。
最初に、内部記憶デバイス0208は物理的なディスクドライブとパーティションのリストをコンパイルする(ステップ0950)ために精査される。
ある実施例において、ユーザは、論理ボリュームとブートストラップパーティションの作成(ステップ0958)にプールされる物理ディスクとパーティションを構成するために論理ボリューム設定ダイアログ0951と相互作用するよう要求される場合がある。
論理ボリューム設定ダイアログ0951は、たとえば、空の(すなわち、最近フォーマットされた)ファイルシステムを含むパーティションを削除すること、各ディスクドライブの利用可能な記憶容量を最大化するパラメータに従って新しいパーティションを作成すること、およびすべての内部記憶ドライブでのフリーなディスクスペースの全てを橋渡しする論理ボリュームにこれらの新しいパーティションをプールする等して、論理ボリューム設定ダイアログ0951は論理ボリュームの作成0952用の推奨設定を計算して表示できる。 この設定は、バックアップ目的で、あるいは、それらからアプリケーション内容と設定データの移行を可能とするために、前回使われたオペレーティングシステムとアプリケーションソフトウェアを含む古いパーティションを保存する。典型的な推奨設定は、一人のユーザがセキュリティデバイスを使用するために既存のコンピュータ(たとえば、サーバ)を返還する、そして、古い環境からアプリケーション内容と設定データを移行させることに関心を持ち、たとえば、追加のディスクドライブをインストールする。あるいは既存のディスクドライブ上でパーティションを空にしてフォーマット化することで論理ボリューム要素用に要求された追加の記憶容量を準備することを仮定している。
論理ボリューム設定ダイアログ0951はさらに、よりアドバンスユーザがカスタムな論理ボリューム構成を作成できるようにするためのアドバンスオプション0953を含む。
アドバンスオプション0953は、たとえば、パーティション管理(すなわち、パーティションの削除と作成)ダイアログ0954、およびカスタムな論理ボリューム設定0955にプールするための物理的なディスクとパーティションを選択するためのダイアログを含む。
実施例において、パーティションたとえば、パーティションサイズ、ラベル、ファイルシステムタイプ、およびファイルシステムの内容(たとえば、ディレクトリーとファイル構造)を含むパーティション情報を表示することで、古いパーティションを識別しようとするユーザを支援できる。
さらに、パーティション管理ダイアログはこの行動(たとえば、移行されうるデータを解き放つ)の副産物の価値のあるデータを潜在的に含んでいる既存のパーティションを削除しようとする一人のユーザに警告でき、そしてそれから確認をユーザに要求する。
ユーザがアドバンスオプションを使ってカスタム論理ボリューム設定を作成するならば、論理ボリューム設定ダイアログ0951は、カスタム設定を表すために最新の設定0952のグラフィック描写を更新することができる。
ユーザはそれから、推奨された設定0957あるいはもし存在するならカスタム設定0956を使って、論理ボリューム要素0958を作成することができる。
ボリューム要素の作成は、たとえば、推奨あるいはカスタムの設定に従って利用できるドライブ(たとえば、Linux上のfdiskユーティリティを使って)上でパーティションを再設定することにより、開始できる。
次に、物理ボリュームが前回に設定された物理的パーティション上で作成される(たとえば、Linux上のpvcreateユーティリティを使って)、ボリュームグル−プにプールされる(たとえば、Linux上のvgcreateユーティリティを使って)。個別のブートストラップパーティションも作成される。
次に、論理ボリュームがボリュームグル−プの満杯の容量を橋渡しして作成される(たとえば、Linux上のlvcreateユーティリティを使って)。
次に、ファイルシステムは、論理ボリュームの範囲内で作成されたファイルシステムがアクセス/マウントされる0960後に、論理ボリュームとブートストラップパーティション0959上で作成される。
最後に、方法0861は、ブートストラップパーティション上で論理ボリューム設定ファイルを作成するように機能する(ステップ0961)。相対的に小さいパーティションは論理ボリューム設定ファイルを記憶するために使用される。
さらに下記で記述される論理ボリューム0851をアクセスするための典型的な方法は、ブートストラップパーティション上に記憶された論理ボリューム構成ファイルの中の論理ボリューム要素へのアクセスに必要な所要の設定パラメータを読み出すことができる。
他の論理ボリューム管理(LVM)実行上で論理ボリューム要素を作成するには(すなわちLinuxではない)、異なる操作を要する場合があることに留意する。
論理ボリューム要素にアクセスするための典型的なメソッド
以下の典型的なメソッドの操作は、上記の論理ボリューム要素を作成するための典型的な方法の項で既に記述されているが、典型的な相手方の対応する操作を参照することでよりよく理解できる。
図9B−IIは論理ボリューム要素をアクセスするためのメソッドにおける典型的なステップを示すフローチャートである。
最初に、メソッド0851はブートストラップパーティション上に記憶された前回作成された論理ボリューム設定ファイルを特定するようにする。
ある実施例においては、論理ボリューム設定ファイルを特定するために、内部記憶0208デバイスは全てのディスクドライブ上に存在するパーティションのリストをコンパイルする(ステップ0950)ために精査される。それから、各パーティションに対して(ループ0970)、パーティションに含まれるファイルシステムの種類がサポートされるならば、メソッド0851は、既に記述された論理ボリューム要素を作成するための典型的なメソッドにより作成された同じ位置で、ファイルシステム(条件0971)内の論理ボリューム設定ファイルの存在をチェックできる。
論理ボリューム設定ファイルが、たとえば、論理ボリューム要素がまだ作成されていたいために、パーティションのサポートされるファイルシステムのどれにおいても特定できないならば、メソッドは「失敗」を戻す(ステップ0976)。
そうでなければ、論理ボリューム設定ファイルが存在すると、論理ボリューム設定ファイルから検索されたパラメータに従って、論理ボリュームがアクセスされる。それが含むファイルシステムはマウントされ(ステップ0961)、メソッドは「成功」を戻す(ステップ0975)。
たとえば、論理ボリュームが破損した、物理ディスクが除去された、あるいは物理ディスク障害発生した等の理由により論理ボリュームがマウントに失敗した場合、例外が発生し「メソッド」は失敗を戻す。
さらに、関連するエラーメッセージが表示され、ユーザがトラブルシュート、診断、そして修復できるよう適切なユーティリティ一式が提供される。
典型的な移行エージェント
代替実施例で使用される移行エージェント1101’は、結果として利用状況の違い(すなわち、PSS要素の代わりに論理ボリューム要素にデータを保存する)と移行されるアプリケーションの種類の違い(すなわち、大部分はサーバ側)を生じる変更を除いて、既に記述された好ましい実施例の移行エージェント1101と原理および操作において本質的に同等である。
代替実施例では、移行エージェント1101は、たとえば、Webサーバ(たとえば、Microsoft IIS、 Apache)、メールサーバ(たとえば、Microsoft Exchange、 sendmail。、 qmail)、データベースサーバ(たとえば、Microsoft SQL、 Oracle、 MySQL、 postgresql)、ファイアウォール(たとえば、Microsoft ISA、 Checkpoint firewall-1)、ファイルサーバ(たとえば、SMB, NFS, FTP プロトコル)、DNSサーバ、およびほかのサーバ側アプリケーションを含む、主にサーバ側アプリケーションの機能性を移行するために使用される。
典型的なランタイムOSアーキテクチャ
代替実施例のランタイムオペレーティングシステムアーキテクチャは、異なる仮定利用状況を反映するユーザ−ランドの変更を除いて、図12を用いて既に説明されている好ましい実施例のランタイムオペレーティングシステムアーキテクチャとほとんど同じである。
代替実施例において、オペレーティングシステムは、システム管理者のような非常に技術知識の豊富なユーザにより設定された、安定したネットワーク環境で専用コンピュータハードウェア上で走る主として非個人アプリケーションに対してコンテクストを提供する。
これらの違いは、図6Bを参照する上記の典型的な機能概要の項で既に記述されている。
結論
前記からも理解できるように、本発明は、セキュリティが安全に供与できうる信頼でき、無停止型で、予見できる財産であるところのコンピュータシステムを広範囲に採用可能な実用的なソリューションを提供する。
セキュリティと使い勝手の間の必然的に相反する目的間での理想的なバランスは、本発明の実施例が最適に対応する特定のタスクの機能条件を参考にして、本発明の原理に基づきセキュリティデバイスが提供する独立したオペレーティングシステム環境を注意深く事前に作成することにより達成できる。
意図した利用状況の範囲内で、本発明の実施例は、利便性と使いやすさを同時に最大化しながら、要求された機能性に対して最大のセキュリティを提供する。
軍用品質基準のセキュリティ強度とデジタル的に同等な範囲内で、通常のコンピュータを、一時的にターンキー機能的なソリューションを内包し必然的に安価な論理装置に変身させるために必要とされるのは、本発明の実施例からのブートのみである。
これにより、既存のハードウェアを便利に活用し、希少で高価なシステムインテグレーションとセキュリティの専門家の現場での労働に依存しない自己完結型システムを提供することができる。
これらの利点を実現する支援のために、本発明の実施例は、物理的デバイスハードウェア、多層セキュリティアーキテクチャ、接続性エージェント、移行エージェント、永続性安全記憶メカニズム、論理ボリュームメカニズム、ブートプロセス最適化、オートラン要素、およびユーザにやさしいグラフィカルユーザインタフェースを含む、好ましい実施例と代替実施例における既に記述された機能を、いかなる組み合わせにおいても採用できる。
注意すべきは、前述の事例は単に説明を目的とした記載であり、決して本発明を制限するものとして解釈されるものではない。本発明は実施例を用いて説明されたが、ここで使われている文言は、限定ではなく、解説および説明を目的とするものである。
さらに、本発明はここで特定の手段と実施例を用いて説明されているが、本発明はここで開示された特定物に限定されるものではなく、むしろ、本発明は、付記された請求範囲内の全ての機能的に同等な構造、方法および使用網羅する。本仕様に係る教示の利益を有する当業者は、本発明の範囲および趣旨から逸脱することなく、本仕様に多数の改良および変更を施すことができるものとする。
図1は、発明の一つの実施例が使用できる一つの典型的環境の概観を示す図である。 図2は、本発明がインタフェースする一つの典型的コンピュータシステムのコンピュータハードウェアアーキテクチャを示す図である。 図3Aは、図2に示すコンピュータハードウェアのデバイスインタフェースに接続できる、発明の原理と整合のとれた、可搬型の改竄防止セキュリティデバイスの典型的な物理的コンピュータハードウェアアーキテクチャを示す図である。 図3Bは、図2のコンピュータハードウェアの媒体インタフェースにより読み出しができる可搬型の改竄防止記憶媒体として、発明の原理と整合のとれた、セキュリティデバイスの一つの典型的な実施例を示す図である。 図4Aと4Bは、発明の好ましい実施例および代替実施例とユーザが相互作用する典型的なステップの概観を示すフローチャートである。 図4Aと4Bは、発明の好ましい実施例および代替実施例とユーザが相互作用する典型的なステップの概観を示すフローチャートである。 図5は、図3Aと図3Bで示す異なるタイプのセキュリティデバイス内部に保存された外部ファイルシステムを示す図である。 図6Aと6Bは、発明の好ましい実施例および代替実施例における典型的多層機能概観を示す図である。 図6Aと6Bは、発明の好ましい実施例および代替実施例における典型的多層機能概観を示す図である。 図7Aと7Bは、発明の好ましい実施例および代替実施例におけるブートプロセスの典型的なステップの概観を示すフローチャートである。 図7Aと7Bは、発明の好ましい実施例および代替実施例におけるブートプロセスの典型的なステップの概観を示すフローチャートである。 図8Aと8Bは、発明の好ましい実施例および代替実施例における図7Aと図7Bのブートプロセス実行中の初期化管理ソフトウェアの操作に係る典型的なステップを示すフローチャートである。 図8Aと8Bは、発明の好ましい実施例および代替実施例における図7Aと図7Bのブートプロセス実行中の初期化管理ソフトウェアの操作に係る典型的なステップを示すフローチャートである。 図9A−Iと9A−IIは、図7Aに示す好ましい実施例の初期化管理ソフトウェアで使用される永続性安全記憶装置の作成とアクセスにおける典型的なステップを示すフローチャートである。 図9A−Iと9A−IIは、図7Aに示す好ましい実施例の初期化管理ソフトウェアで使用される永続性安全記憶装置の作成とアクセスにおける典型的なステップを示すフローチャートである。 図9B−Iと9B−IIは、図7Aに示す代替実施例の初期化管理ソフトウェアで使用される論理ボリューム要素の作成とアクセスにおける典型的なステップを示すフローチャートである。 図9B−Iと9B−IIは、図7Aに示す代替実施例の初期化管理ソフトウェアで使用される論理ボリューム要素の作成とアクセスにおける典型的なステップを示すフローチャートである。 図10−I、10−IIと10−IIIは、最小限のユーザの相互作用で各種の環境でネットワーク接続性を確立し維持するために、発明の一つの実施例において、接続エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図10−I、10−IIと10−IIIは、最小限のユーザの相互作用で各種の環境でネットワーク接続性を確立し維持するために、発明の一つの実施例において、接続エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図10−I、10−IIと10−IIIは、最小限のユーザの相互作用で各種の環境でネットワーク接続性を確立し維持するために、発明の一つの実施例において、接続エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図11−I 、11−II、11−IIIと11−IVは、セキュリティデバイスに備わる独立したオペレーティングシステム環境に統合されたアプリケーションソフトウェアへのアプリケーション内容と設定データの移行を補助する為に、発明の一つの実施例において、使用される移行エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図11−I 、11−II、11−IIIと11−IVは、セキュリティデバイスに備わる独立したオペレーティングシステム環境に統合されたアプリケーションソフトウェアへのアプリケーション内容と設定データの移行を補助する為に、発明の一つの実施例において、使用される移行エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図11−I 、11−II、11−IIIと11−IVは、セキュリティデバイスに備わる独立したオペレーティングシステム環境に統合されたアプリケーションソフトウェアへのアプリケーション内容と設定データの移行を補助する為に、発明の一つの実施例において、使用される移行エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図11−I 、11−II、11−IIIと11−IVは、セキュリティデバイスに備わる独立したオペレーティングシステム環境に統合されたアプリケーションソフトウェアへのアプリケーション内容と設定データの移行を補助する為に、発明の一つの実施例において、使用される移行エージェントソフトウェアの操作における典型的なステップを示すフローチャートである。 図12は、図7Aと図7Bのブートプロセスにより初期化された典型的なランタイムオペレーティングシステムのアーキテクチャの概観を示すブロック図である。 図13は、発明の一つの実施例における典型的な多層セキュリティ層を示すブロック図である。 図14は、発明の一つの実施例の安全手続プロセスにおける典型的なステップの概観を示すフローチャートである。

Claims (318)

  1. ネットワークを通してクライアントとサービスプロバイダとの間のトランザクションの前記クライアント側を保護し、独立したオペレーションシステム環境を提供するためにコンピュータを起動することができる装置をクライアントに提供する方法であって、前記装置は以下を備える:
    (a)可搬型不揮発性記憶要素;
    (b)前記可搬型不揮発性記憶要素に記憶されたオペレーティングシステム環境;
    (c)前記トランザクションを実行するため前記サービスプロバイダとインタフェースするためのクライアントソフトウェアを含み、前記クライアントはサービスプロバイダとの通信を暗号化するように構成されている前記オペレーティングシステム環境;および
    (d)前記可搬型不揮発性記憶要素から前記オペレーティングシステム環境を起動するためのブートローダ。
  2. 請求項1の方法であって、ネットワークが以下のものからなるグループから選択されたコンピュータ通信コンポーネントを含む方法:
    ローカルエリアネットワーク;
    ワイヤレスローカルエリアネットワーク(WLAN);
    ワイドエリアネットワーク(WAN);
    電話回線;
    イントラネット;および
    インターネット。
  3. 請求項1の方法であって、クライアントおよびサービスプロバイダ間のトランザクションが以下からなるグループから選択されたオペレーションを含む方法:
    金融取引の実行;
    金融情報のアクセス;
    医療記録のアクセス;
    仮想プライベートネットワークのアクセス;
    ウェブサイトのアクセス;
    イントラネットポータルのアクセス;
    ファイルサーバのアクセス;
    データベースのアクセス;
    電子メールサービスのアクセス;
    インスタントメッセージングサービスのアクセス;
    ip電話サービスのアクセス;
    プロジェクトコラボレーションサービスのアクセス;
    ソースコードリポジトリのアクセス;
    ターミナルクライアントサーバのアクセス;および
    カスタムアプリケーションのアクセス。
  4. 請求項1の方法であって、サービスプロバイダはオンライン金融サービスプロバイダであり、クライアントはオンライン金融サービスプロバイダの顧客であり、オンライン金融サービスプロバイダの顧客は金融情報に安全にアクセスし、あるいはオンライン取引を行うために当該装置からコンピュータを起動することができる方法。
  5. 請求項1の方法であって、サービスプロバイダは雇用者であり、クライアントは従業員であり、従業員は雇用者のネットワークリソースに安全にアクセスする為、当該装置から信用に欠く家庭用コンピュータを起動することができる方法。
  6. 請求項1の方法であって、サービスプロバイダは政府であり、クライアントは市民であり、市民は政府の情報および市民サービスとを安全にアクセスする為に当該装置からコンピュータをブートすることができる方法。
  7. 請求項1の方法であって、オペレーティングシステム環境は、オペレーティングシステム環境を初期化するための第一初期化コンポーネント、当該第一初期化コンポーネントがオペレーティングシステム環境の所定の部分をコンピュータの主記憶装置にロードするための第二初期化コンポーネントを含む方法。
  8. 請求項7の方法であって、第二初期化コンポーネントはオペレーティングシステム環境の十分に大きな部分をコンピュータの主記憶装置にロードするため、コンピュータはもはや可搬型不揮発性記憶要素から読み出しを行う必要がない方法。
  9. 請求項1の方法であって、コンピュータのブート用装置はさらに以下を備える方法:
    (a)コンピュータ上でローカルオペレーティングシステムを走らせている間に当該装置がコンピュータに最初に挿入された場合、自動的にユーザ支援コンポーネントを実行するためのオートランコンポーネントであって、可搬型不揮発性記憶要素に保存されているオートランコンポーネント。
  10. 請求項9の方法であって、ユーザ支援コンポーネントは以下からなるグループから選択されたコンポーネントを含む方法:
    (i)当該装置用のユーザマニュアルを提供するユーザマニュアルコンポーネント;
    (ii)ユーザによるコンピュータのBIOS再設定を補助するためのBIOS再設定コンポーネント;および
    (iii)ユーザによるブートディスクの作成を補助する為のブートディスク作成コンポーネント。
  11. 請求項9の方法であって、ユーザ支援コンポーネントはローカルオペレーティングシステムの休止状態モードを引き起こすためのスマートリブートコンポーネントを含み、休止状態モードにより当該装置からコンピュータをリブートする前に、ローカルオペレーティングシステムが走らせているアプリケーションの状態が保存される方法。
  12. 請求項1の方法であって、ブートローダは可搬型不揮発性記憶要素上に保存されており、コンピュータは当該装置から直接ブートできる方法。
  13. 請求項1の方法であって、ブートローダはコンピュータのBIOSがブート用媒体としてサポートする種類である別の記憶媒体に保存され、オペレーティングシステム環境は当該オペレーティングシステム環境を初期化するための主たる初期化コンポーネントを含み、上記別の記憶媒体は、可搬型不揮発性記憶要素上に保存されたオペレーティングシステム環境にアクセスし主たる初期化コンポーネントを起動する第一初期化コンポーネントを含む方法。
  14. 請求項1の方法であって、コンピュータのブート用装置がさらに以下を備える方法:
    (a)周辺装置としてコンピュータのデバイスを当該装置とやりとり可能なようにインタフェースするための可搬型不揮発性記憶要素に連結している第一インタフェースコンポーネント。
  15. 請求項14の方法であって、コンピュータのブート用装置はさらに以下を備える方法:
    暗号化サービスを提供するための、少なくとも第一インタフェースコンポーネントに連結されている暗号化コンポーネント。
  16. 請求項1の方法であって、可搬型不揮発性記憶要素が、コンピュータの媒体読み込み/書き出しインタフェースとの互換性を有する記憶媒体である方法。
  17. 請求項16の方法であって、記憶媒体が小型の光媒体である方法。
  18. 請求項16の方法であって、記憶媒体が目に見える認証マークを提供するコンポーネントを含む方法。
  19. 請求項16の方法であって、記憶媒体が署名エリアを提供する方法。
  20. 請求項1の方法であって、オペレーティングシステム環境は以下を含む方法:
    実質的に無停止型多重セキュリティアーキテクチャを提供するように設定される複数個のセキュリティメカニズム。
  21. 請求項20の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境の個々のソフトウェアコンポーネントに対する侵害が、オペレーティングシステム環境が提供するセキュリティ全体に及ぼす潜在的損害を実質的に制限する、所定のオペレーティングシステムレベルアクセス制御方針を強化するための必須のアクセス強制制御コンポーネント。
  22. 請求項20の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境のソフトウェアコンポーネントにある所定のグループの脆弱性タイプを不正に利用することの困難度を実質的に増加させるための不正利用対策コンポーネント。
  23. 請求項1の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)仮想プライベートネットワーク接続を確立するための仮想プライベートネットワークコンポーネント、および
    (ii)ネットワーク接続を確立するための、ネットワーク接続後に仮想プライベートネットワーク接続を行う仮想プライベートネットワークコンポーネントを起動するコンポーネントを含むネットワーク設定コンポーネント。
  24. 請求項1の方法であって、クライアントコンポーネントが以下を含む方法:
    当該装置によって提供されるオペレーティングシステム環境からネットワークサービスが安全にアクセスされていることを、サービスプロバイダに十分明確に示すためのコンポーネント。
  25. 請求項24の方法であって、クライアントコンポーネントが以下を含む方法:
    クライアント暗号化証明書を使って、サービスプロバイダにより提供された暗号化証明要求に対する応答を算出するためのコンポーネント。
  26. 請求項1の方法であって、オペレーティングシステム環境が以下を含む方法:
    最小限のユーザのやりとりにより各種の環境にわたってネットワーク接続性を確立するための接続性エージェントコンポーネント。
  27. 請求項26の方法であって、接続性エージェントコンポーネントが以下を含む方法:
    所定の記憶場所にある過去のネットワーク設定のリストを維持するためのコンポーネント;
    ネットワーク接続性が成功裏に確立されるネットワーク設定のパラメータに従って過去のネットワーク設定のリストを更新するためのコンポーネント、および
    過去のネットワーク設定のリストからネットワーク設定を適用することにより、ネットワーク接続を試みるためのコンポーネント。
  28. 請求項26の方法であって、接続性エージェントコンポーネントが以下を含む方法:
    コンピュータの内部記憶デバイスにインストールされたオペレーティングシステムのファイルからネットワーク設定のパラメータをインポートするためのコンポーネント。
  29. 請求項1の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)少なくとも一つの永続性安全記憶要素の内部に永続的にデータを保存する為の不透明なコンテナを備えた永続性安全記憶コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (ii1)永続性安全記憶要素を特定しアクセスするためのアクセスコンポーネント、および
    (ii2)アクセスコンポーネントが永続性安全記憶要素を特定しアクセスすることに失敗した場合に、永続性安全記憶要素を生成するための作成コンポーネント。
  30. 独立したオペレーティングシステム環境を提供するための、以下を備えるコンピュータのブート用装置:
    (a)可搬型不揮発性記憶要素;
    (b)可搬型不揮発性記憶要素に保存されたオペレーティングシステム環境;
    (c)可搬型不揮発性記憶要素からオペレーティングシステム環境をブートするためのブートローダ。
  31. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    実質的に無停止型多重セキュリティアーキテクチャを提供するように設定された複数個のセキュリティメカニズム。
  32. 請求項31の装置であって、以下から構成される装置:
    (d)周辺デバイスとしてコンピュータのデバイスインタフェースポートおよび当該装置をやりとり可能なようにインタフェースするための、可搬型不揮発性記憶要素に連結される第一インタフェースコンポーネント。
  33. 請求項32の装置であって、第一インタフェースコンポーネントのタイプがユニバーサルシリアルバス(USB)、firewire、パーソナルコンピュータメモリカード国際協会(PCMCIA)および安全デジタル入出力(SDIO)のインタフェースタイプから構成されるグループから選択される装置。
  34. 請求項32の装置であって、さらに
    (e)周辺デバイスとしてコンピュータのデバイスインタフェースポートと当該装置を動作可能に接続するための少なくとも一つの追加的インタフェースコンポーネントを備える装置であって、追加的インタフェースコンポーネントの種類は前記第一インタフェースコンポーネントとは異なり、
    それにより、当該装置は多種類のデバイスインタフェースポートとの互換性を有する。
  35. 請求項32の装置であって、さらに以下からな構成される装置:
    (e)暗号化デバイスを提供する、少なくとも第一インタフェースコンポーネントに連結している暗号化コンポーネント。
  36. 請求項35の装置であって、さらに以下からな構成される装置:
    (f)少なくとも暗号化コンポーネントを囲む、改竄を防止する手段を含む物理的なケーシングであって、物理的なケーシングの改竄が暗号化コンポーネントに保存された秘密の暗号化データの破壊を引き起こすケーシング。
  37. 請求項35の装置であって、暗号化コンポーネントが実質的に改竄を防止する手段を含む装置。
  38. 請求項35の装置であって、暗号化コンポーネントが公開鍵暗号化サービスを提供する手段を含む装置。
  39. 請求項38の装置であって、公開鍵暗号化サービスを提供する手段により提供されるサービスが以下を含む装置:
    プライベートキーの安全な生成と保存、および
    公開鍵の暗号化と解読の各操作。
  40. 請求項35の装置であって、暗号化コンポーネントが秘密の暗号化データを保存する為の暗号化記憶コンポーネントを含み、当該暗号化記憶コンポーネントを当該装置から取り外すことが可能である装置。
  41. 請求項35の装置であって、暗号化コンポーネントが標準承認トークンインタフェースプロトコルに適合させるための暗号化インタフェースプロトコルコンポーネントを含み、当該暗号化インタフェースプロトコルコンポーネントをもって従来の承認トークンと同じ使用状況において同等の機能性を提供する装置。
  42. 請求項41の装置であって、暗号化インタフェースプロトコルコンポーネントがCryptoki(PKCS 11)トークン標準に適合させるための手段を含む装置。
  43. 請求項41の装置であって、暗号化インタフェースプロトコルコンポーネントがISO7816標準に適合させるための手段を含む装置。
  44. 請求項32の装置であって、さらに以下からな構成される装置:
    (e)固有生体認証を計測するための、少なくとも第一インタフェースコンポーネントに連結している生物測定センサコンポーネント。
  45. 請求項44の装置であって、生物測定センサーコンポーネントが指紋を読み取るためのコンポーネントから構成される装置。
  46. 請求項44の装置であって、さらに以下からな構成される装置:
    (f)暗号化サービスを提供するための、少なくとも第一インタフェースコンポーネントに連結している暗号化コンポーネントであって、当該暗号化コンポーネントにより、当該装置はパスワードを使用せずに2因子承認をサポートすることできる。
  47. 請求項32の装置であって、さらに以下からな構成される装置:
    (e)少なくとも可搬型不揮発性記憶要素を囲む物理的なケーシング。
  48. 請求項47の装置であって、物理的なケーシングは以下を含む装置:
    目に見える認証マークを提供するためのコンポーネント。
  49. 請求項48の装置であって、目に見える認証マークを提供するためのコンポーネントはホログラムを提供する装置。
  50. 請求項47の装置であって、物理的なケーシングが署名を含む装置。
  51. 請求項47の装置であって、物理的なケーシングが実質的に改竄を防止するための手段を含む装置。
  52. 請求項51の装置であって、物理的なケーシングを改竄により動作不能になる装置。
  53. 請求項31の装置であって、可搬型不揮発性記憶要素が、コンピュータの媒体読み出し/書き込みインタフェースとの互換性を有する記憶媒体である装置。
  54. 請求項53の装置であって、記憶媒体が光式、磁気式およびソリッドステート式の記憶媒体から構成されるグループから選択される装置。
  55. 請求項53の装置であって、記憶媒体が小型の光式媒体である装置。
  56. 請求項53の装置であって、記憶媒体が目に見える認証マークを提供する手段を含む装置。
  57. 請求項53の装置であって、記憶媒体が署名エリアを提供する装置。
  58. 請求項31の装置であって、可搬型不揮発性記憶要素が物理的読み出し専用である装置。
  59. 請求項31の装置であって、ブートローダが可搬型不揮発性記憶要素に保存されており、コンピュータを当該装置から直接ブートできる装置。
  60. 請求項31の装置であって、コンピュータのBIOSがブート用媒体としてサポートする種類である別の記憶媒体にブートローダが保存されており、オペレーティングシステム環境はオペレーティングシステム環境を初期化するための主たる初期化コンポーネントを起動するための第一初期化コンポーネントを含み、上記別の記憶媒体は可搬型不揮発性記憶要素に保存されたオペレーティングシステム環境にアクセスし、次いで初期化コンポーネントを起動する装置。
  61. 請求項31の装置であって、さらに以下を含む。
    (e)別の暗号化トークン
  62. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    (i)仮想プライベートネットワークに接続するための仮想プライベートネットワークコンポーネント;および
    (ii)ネットワーク接続性を確立するためのネットワーク設定コンポーネントであって、ネットワーク接続後に仮想プライベートネットワークを確立するために仮想プライベートネットワークコンポーネントを起動するコンポーネントを含むネットワーク設定コンポーネント。
  63. 請求項62の装置であって、オペレーティングシステム環境が以下を含む装置:
    発信と受信のネットワークトラフィックを制限し、接続した仮想プライベートネットワークからのトラフィックのみを可能にするコンポーネントであって、当該コンポーネントにより、オペレーティングシステム環境は、仮想プライベートネットワークに接続するために経由した公衆ネットワーク上にあるセキュリティに対する脅威から論理的に隔離されている。
  64. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステム環境にあるクライアント側とサーバ側の間におけるアプリケーションと無許可の双方向のネットワークトラフィックを実質的に防止する所定のネットワークアクセス制御方針を強化するための個人用ファイアウォールコンポーネント。
  65. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステム環境の個々のソフトウェアコンポーネントに対する侵害が、オペレーティングシステム環境が提供するセキュリティ全体に及ぼす潜在的損害を実質的に制限する、所定のオペレーティングシステムレベルアクセス制御方針を強化するための必須のアクセス強制制御コンポーネント。
  66. 請求項65の装置であって、所定のオペレーティングシステムレベルアクセス制御方針が以下を行うよう設定されている装置:
    個々のソフトウェアコンポーネントが機能を実行するために必要な特権一式を縮小するよう、オペレーティングシステム環境の個々のソフトウェアコンポーネントの特権を大幅に削減する。
  67. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    所定の信頼できるファイルシステムパスに無い実行ファイルのソフトウェアプログラムの実行を防止するための信頼できるパス実行コンポーネント。
  68. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    少なくとも一つの論理的区画に所定の区画化されたソフトウェアプログラムを含むための論理的な区画コンポーネントであって、所定の区画化されたソフトウェアプログラムをオペレーティングシステム環境の他の部分から論理的に隔離するコンポーネント。
  69. 請求項68の装置であって、論理的区画コンポーネントが以下を含む装置:
    unix chrootおよびユーザモードlinuxおよびvmwareおよびxenの論理的区画タイプからなるグループから選択される論理的区画化セキュリティメカニズムのタイプ。
  70. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステムの仮想記憶およびオペレーティングシステムのハードウェア入出力インタフェースに対する直接、且つロウアクセスを防止するためのロウ入出力およびメモリ用コンポーネント。
  71. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステム環境のソフトウェアコンポーネントにおける所定の脆弱性タイプのグループを不正に利用することの困難さを実質的に増加させるための不正利用対策コンポーネント。
  72. 請求項71の装置であって、不正利用対策コンポーネントが以下を含む装置:
    オペレーティングシステム環境のソフトウェアコンポーネントにおける記憶限界違反型脆弱性を不正に利用することの困難さを増加させるためのコンポーネント。
  73. 請求項71の装置であって、エクスプロイト対策コンポーネントが以下を含む装置:
    オペレーティングシステム環境のソフトウェアコンポーネントにおける競合条件型脆弱性を不正に利用することの困難さを増加させるためのコンポーネント。
  74. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    所定のグループのソフトウェアコンポーネントのにおける脆弱性タイプの所定のグループの不正利用を防止するための所定のグループのソフトウェアコンポーネントを堅固にするコンパイラツールチェーンを使ってコンパイルされる所定のグループのソフトウェアコンポーネント。
  75. 請求項74の装置であって、所定のグループのソフトウェアコンポーネントを堅固にするために使われるコンパイラツールチェーンが、適用されたsspパッチを持つgnuコンパイラツールチェーンと適用されたスタックガードパッチを持つgnuコンパイラツールチェーンから構成されるグループから選択される装置。
  76. 請求項74の装置であって、所定のグループののを堅固にするために使われるコンパイラツールチェーンが、所定のグループのソフトウェアコンポーネントにおけるバッファオーバーフロー型脆弱性の不正利用に対する実質的なランタイム保護を提供する。
  77. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    サービスプロバイダが提供するネットワークサービスにアクセスするためのクライアントコンポーネントであって、ネットワークサービスが当該装置により提供されるオペレーティングシステム環境から安全にアクセスされていることを、サービスプロバイダに十分明確に示すコンポーネントを含む装置。
  78. 請求項77の装置であって、クライアントコンポーネントが以下を含む装置:
    クライアント暗号化証明書;および
    クライアント暗号化証明書を使ってサービスプロバイダにより提供された暗号化証明要求に対する応答を算出するためのコンポーネント。
  79. 請求項78の装置であって、クライアントコンポーネントが、安全なソケット層暗号化プロトコルをサポートするウェブブラウザを含み、当該ウェブブラウザは以下を含む装置:
    i)x509クライアント証明書、および
    (ii)x509クライアント証明書を使って、サービスプロバイダにより提供された暗号化証明要求に対する応答を算出し、暗号化証明要求および算出された応答が安全なソケット層暗号化プロトコルに定義された暗号化証明要求応答メカニズムに準拠するコンポーネント。
  80. 請求項31の装置であって、オペレーティングシステム環境が以下を含む装置:
    ユーザにセキュリティリスクの警告をするための統合されたトレーニングコンポーネント。
  81. 請求項80の装置であって、オペレーティングシステム環境が以下を含む装置:
    問題を有するインタフェースの論理的近接に組み込まれた、警戒的注意喚起手段。
  82. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    (i)仮想プライベートネットワークに接続するための仮想プライベートネットワークコンポーネント;
    (ii)ネットワーク接続性を確立するための、ネットワーク接続後に仮想プライベートネットワークを確立するために仮想プライベートネットワークコンポーネントを起動するためのコンポーネントを含むネットワーク設定コンポーネント
  83. 請求項82の装置であって、オペレーティングシステム環境が発信と受信のネットワークトラフィックを制限し、接続した仮想プライベートネットワークからのトラフィックのみを可能にするコンポーネントを含み、それによって仮想プライベートネットワークに接続するために経由した公衆ネットワーク上にあるセキュリティに対する脅威からオペレーティングシステム環境が論理的に隔離される装置。
  84. 請求項30の装置であって、オペレーティングシステム環境は以下を含む装置:
    最小限のユーザやりとりにより各種の状況にわたってネットワーク接続性を確立するための接続性エージェント。
  85. 請求項84の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステム環境を初期化するための、接続性エージェントを起動するための第二初期化コンポーネントを含む初期化コンポーネント。
  86. 請求項84の装置であって、接続性エージェントが以下を含む装置:
    コンピュータのネットワークインタフェースハードウェアを決めるためのコンポーネント、および
    決定されたネットワークインタフェースを介し、当該ネットワークインタフェースを種類別に分類し所定の順番で反復することによりネットワークへの接続性の確立を試み、そして各々の決定されたネットワークインタフェースに既定のデフォルト設定パラメータを割り当てるようにするためのコンポーネント。
  87. 請求項86の装置であって、接続性エージェントが以下を含む装置:
    ワイヤレスネットワークインタフェースで検知されたワイヤレスネットワークのリストを決定することによりワイヤレスネットワークインタフェースの設定を試み、ワイヤレスネットワークのリストにある各々のワイヤレスネットワークについてワイヤレスネットワークとワイヤレスネットワークインタフェースを連結することによりネットワークへの接続性の確立を試み、ワイヤレスネットワークインタフェースに既定のデフォルト設定パラメータを割り当てるようにするためのワイヤレス設定コンポーネント。
  88. 請求項87の装置であって、ワイヤレスネットワークインタフェースで検知されたワイヤレスネットワークのリストを、各々のワイヤレスネットワークの信号強度に従ってワイヤレス設定コンポーネントが分類する装置。
  89. 請求項86の装置であって、接続性エージェントが以下を含む装置:
    ワイヤレスネットワークインタフェースで検知されたワイヤレスネットワークのリストを決定するためのコンポーネント;および
    ワイヤレスネットワークインタフェースに連結するワイヤレスネットワークを選ぶためにユーザとやりとりするためのコンポーネント。
  90. 請求項84の装置であって、接続性エージェントが以下を含む装置:
    所定の記憶場所にある過去のネットワーク設定のリストを維持するためのコンポーネント;
    ネットワークへの接続性確立が成功したネットワーク設定リストに従って、過去のネットワーク設定リストを維持するためのコンポーネント;および
    過去のネットワーク設定リストからネットワーク設定を適用することにより、ネットワークへの接続性を確立しようとするためのコンポーネント。
  91. 請求項90の装置であって、ネットワークへの接続性確立コンポーネントが以下を含む装置:
    各々のネットワーク設定が過去のパターンに基づいて動作する可能性を算出することにより、過去のネットワーク設定リスト上のネットワーク設定の適用順位を付すためのコンポーネント。
  92. 請求項84の装置であって、接続性エージェントが以下を含む装置:
    コンピュータの内部記憶デバイスにインストールされたオペレーティングシステムのファイルからネットワーク設定パラメータをインポートするためのコンポーネント。
  93. 請求項84の装置であって、接続性エージェントが以下を含む装置:
    ネットワークへの接続性を要する所定の信頼できる操作を行うことにより、試みられたネットワーク設定が成功したかどうかを確認する為のコンポーネント。
  94. 請求項84の装置であって、接続性エージェントが以下を含む装置:
    手動でネットワーク設定パラメータを設定するためにユーザとやりとりするための手動設定コンポーネント;および
    自動のネットワーク設定の試みが失敗した場合に、手動設定コンポーネントを起動するためのコンポーネント。
  95. 請求項84の装置であって、接続性エージェントが以下を含む装置:
    ユーザが自動のネットワーク設定の試みをキャンセルし、直ちにネットワークの手動設定を実行できるようにするための手動優先実行コンポーネント。
  96. 請求項84の装置であって、オペレーティングシステム環境がサービスプロバイダによって提供されたネットワークサービスにアクセスするためのクライアントコンポーネントを含み、当該クライアントコンポーネントは、当該装置が提供するオペレーティングシステム環境からネットワークサービスが安全にアクセスされていることを、サービスプロバイダに十分明確に示すコンポーネントを含む装置。
  97. 請求項96の装置であって、クライアントコンポーネントが以下を含む装置:
    クライアント暗号化証明書;および
    クライアント暗号化証明書を使用して、サービスプロバイダにより提供された暗号化証明要求に対する応答を算出するためのコンポーネント。
  98. 請求項97の装置であって、クライアントコンポーネントは安全なソケット層暗号化プロトコルをサポートするウェブブラウザを含み、当該ウェブブラウザは以下を含む装置:
    (i)x509クライアント証明書;
    (ii)x509クライアント証明書を使って、サービスプロバイダからの暗号化証明要求に対する応答を算出するためのコンポーネント。暗号化証明要求と算出された応答は、安全なソケット層暗号化プロトコルに定義された暗号化証明要求応答メカニズムに準拠する。
  99. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    (i)少なくとも一つの永続性安全記憶要素の内部に永続的にデータを保存するための、不透明なコンテナを備えた永続性安全記憶コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための以下を含む第一初期化コンポーネント:
    (ii1)永続性安全記憶要素を特定しアクセスするためのアクセスコンポーネント;および
    (ii2)アクセスコンポーネントが永続性安全記憶要素を特定しアクセスすることに失敗した場合に、永続性安全記憶要素を生成するための作成コンポーネント。
  100. 請求項99の装置であって、永続性安全記憶コンポーネントは以下を含む装置:
    ファイルシステムを含んでいる仮想ブロックデバイスとして不透明なコンテナをセットするためのコンポーネント。
  101. 請求項99の装置であって、アクセスコンポーネントが、コンピュータの内部記憶デバイス上でローカルオペレーティングシステムにおけるファイルシステム内の永続性安全記憶要素の特定およびアクセスを試み、作成コンポーネントが、コンピュータの内部記憶デバイス上でローカルオペレーティングシステムにおけるファイルシステム内で永続性安全記憶要素を作成する装置。
  102. 請求項101の装置であって、作成コンポーネントが以下を含む装置:
    どの内部記憶パーティションが最も多い空き領域を持つかを決めるためのコンポーネント;および
    最も多い空き領域を持つと決定された内部記憶パーティション上に自動的に永続性安全記憶要素を作成するためのコンポーネント。
  103. 請求項101の装置であって、作成コンポーネントが以下を含む装置:
    永続性安全記憶要素が作成されるパーティションを選択するためにユーザとやりとりするためのコンポーネント。
  104. 請求項99の装置であって、第一初期化コンポーネントが以下を含む装置:
    永続性安全記憶要素の作成をキャンセルするかをユーザが選べるようにする為のコンポーネント。
  105. 請求項99の装置であって、第一初期化コンポーネントが以下を含む装置:
    永続性安全記憶要素を取り除くかをユーザが選べるようにするためのコンポーネント。
  106. 請求項99の装置であって、アクセスコンポーネントはネットワーク上の所定の記憶場所において永続性安全記憶要素の特定およびアクセスを試み;および
    作成コンポーネントはネットワーク上の所定記憶場所で永続性安全記憶要素を作成する。
  107. 請求項99の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    秘密鍵で不透明なコンテナを暗号化するためのコンポーネント。
  108. 請求項107の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    永続性安全記憶要素がさらに暗号化された秘密鍵を記憶するための鍵ファイルを含む秘密鍵暗号化コンポーネント。
  109. 請求項107の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    秘密鍵を暗号化するためのコンポーネント。
    不透明なコンテナ内に暗号化された秘密鍵を組み込むためのコンポーネント。
  110. 請求項107の装置であって、さらに
    (d)周辺装置としてコンピュータのデバイスインタフェースポートおよび当該装置をやりとり可能なようにインタフェースするための、可搬型不揮発性記憶要素と連結している第一インタフェースコンポーネント;および
    (e)暗号化サービスを提供するための、少なくとも第一インタフェースコンポーネントと連結している暗号化コンポーネントを含む装置であって;
    およびそこでは、
    当該永続性安全記憶コンポーネントは、暗号化コンポーネントを使って秘密鍵を暗号化するためのコンポーネントを含む。
  111. 請求項107の装置であって、さらに
    (d)別の暗号化トークンを含む装置であって、
    およびそこでは、
    永続性安全記憶コンポーネントが、別の暗号化トークンを使って秘密鍵を暗号化するためのコンポーネントを含む。
  112. 請求項107の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    ユーザが提供するパスワードを受信するためのコンポーネント、
    パスワードを使って秘密鍵を暗号化するためのコンポーネント。
  113. 請求項99の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    永続性安全記憶要素のインスタンスをユニークに識別するための指紋を計算するための指紋計算コンポーネント。
  114. 請求項113の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    永続性安全記憶要素のファイル名に指紋の所定部分を組み込むためのコンポーネント。
  115. 請求項113の装置であって、永続性安全記憶コンポーネントが以下を含む装置:
    永続性安全記憶要素のファイルの内容に指紋の所定部分を組み込むためのコンポーネント。
  116. 請求項113の装置であって、さらに
    (d)周辺装置としてコンピュータのデバイスインタフェースポートと当該装置とをやりとり可能なようにインタフェースするための、可搬型不揮発性記憶要素と連結している第一インタフェースコンポーネント、および
    (e)暗号化サービスを提供するための、少なくとも第一インタフェースコンポーネントと連結している暗号化コンポーネントを含み、
    指紋計算コンポーネントが、暗号化コンポーネントに記憶された固有のデータの所定の部分のハッシュとして指紋を計算するためのコンポーネントを含む装置。
  117. 請求項113の装置であって、さらに
    (d)別の暗号化トークンを含み、
    指紋計算コンポーネントが、別の暗号化トークンに記憶された固有データの所定部分のハッシュとして指紋を計算するためのコンポーネントを含む装置。
  118. 請求項113の装置であって、指紋計算コンポーネントは以下を含む装置:
    ユーザが提供する固有識別情報を使って指紋を計算するためのコンポーネント。
  119. 請求項99の装置であって、第一初期化コンポーネントが以下を含む装置:
    ブートプロセスの最適化に役立つ、ブートプロセス中に作成されたブートデータを永続性安全記憶要素内に保持する為のブートデータコンポーネント。
  120. 請求項119の装置であって、ブートデータコンポーネントが以下を含む装置:
    永続性安全記憶要素内にハードウェア設定パラメータを保持する為のコンポーネント。
  121. 請求項119の装置であって、ブートデータコンポーネントが以下を含む装置:
    永続性安全記憶要素内に初期化されたシステム状態の記録を保持する為のコンポーネント。
  122. 請求項99の装置であって、オペレーティングシステム環境が以下を含む装置:
    ネットワーク接続性を確立するための、永続性安全記憶要素内にネットワーク設定パラメータを保持する為のコンポーネントを含むネットワーク設定コンポーネント。
  123. 請求項122の装置であって、ネットワーク設定コンポーネントは最小限のユーザのやりとりを使い各種の状況にわたってネットワーク接続性を確立するための接続性エージェントコンポーネントを含み、当該接続性エージェントコンポーネントは以下を含む装置:
    永続性記憶要素内に過去のネットワーク設定のリストを保持する為のコンポーネント;
    ネットワークへの接続性確立が成功したネットワーク設定パラメータに従って過去のネットワーク設定のリストを更新するためのコンポーネント;および
    過去のネットワーク設定のリストからネットワーク設定を適用することによりネットワークへの接続性の確立を試みるためのコンポーネント。
  124. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (i)コンピュータの最新のハードウェアプロファイルを決定するためのハードウェアプロファイリングコンポーネント;
    (ii)ハードウェアパラメータ設定の必要性を決定するための以下を含むコンポーネント:
    (ii1)所定の記憶場所に前回のハードウェアプロファイルが事前に保存されているかどうかを特定する為のコンポーネント、および
    (ii2)前回のハードウェアプロファイルの存在が認められた場合に、前回のハードウェアプロファイルと最新のハードウェアプロファイルとを比較することで、ハードウェアプロファイルは変更されたかどうかを決定するためのコンポーネント;および
    (iii)ハードウェアパラメータの設定が必要であると決定された場合に、ハードウェアパラメータを設定して保存するための以下を含むコンポーネント:
    (iii1)ハードウェア設定パラメータを決定するためのハードウェア設定コンポーネント
    (iii2)所定の記憶場所に決定されたハードウェア設定パラメータを保存するためのコンポーネント、および
    (iii3)所定の記憶場所のに最新のハードウェアプロファイルを保存するためのコンポーネント;および
    (iv)保存されたハードウェア設定パラメータに基づくハードウェアドライバをロードするためのコンポーネント。
  125. 請求項124の装置であって、ハードウェアプロファイリングコンポーネントが以下を含む装置:
    コンピュータのバスに対しハードウェア識別情報に関する問い合わせ/検索要求を行う為のコンポーネント。
  126. 請求項124の装置であって、ハードウェア設定コンポーネントが以下を含む装置:
    コンピュータの内部記憶デバイス上にインストールされたオペレーティングシステムのファイルからハードウェア設定パラメータをインポートするためのコンポーネント。
  127. 請求項124の装置であって、ハードウェア設定コンポーネントが以下を含む装置:
    最新のハードウェアプロファイルから得られるハードウェア情報をハードウェア設定パラメータに関連付けるデータベース内のハードウェア設定パラメータを調べるためのコンポーネント。
  128. 請求項124の装置であって、ハードウェア設定コンポーネントが以下を含む装置:
    ハードウェア設定パラメータを手動で提供するために、ユーザとやりとりするためのコンポーネント。
  129. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    オペレーティングシステム環境用の初期化コンポーネントであり、所定の記憶場所に初期化されたシステム状態の記録を保持するための状態保持コンポーネントを含む第一初期化コンポーネント。
  130. 請求項129の装置であって、状態保持コンポーネントが以下を含む装置:
    (i)コンピュータの最新のハードウェアプロファイルを決定するためのハードウェアプロファイリングコンポーネント;
    (ii)コンピュータのハードウェアプロファイルが変更されたかどうかを決定するための以下を含むコンポーネント:
    (ii1)所定の記憶場所に前回のハードウェアプロファイルが事前に保存されているかどうかを決定するためのコンポーネント;および
    (ii2)前回のハードウェアプロファイルの存在が認められる場合には、前回のハードウェアプロファイルおよび最新のハードウェアプロファイルを比較することで、ハードウェアプロファイルが変更されたかどうかを特定する為のコンポーネント;および
    (iii)所定の記憶場所に初期化されたシステム状態の記録が保存されているかを特定するためのコンポーネント。
    (iv)前回に保存された初期化されたシステム状態の記録が存在し、且つ前回に保存された初期化されたシステム状態の記録が作成されてからコンピュータのハードウェアプロファイルが変更されていないと判断された場合、コンピュータの状態を前回に保存された初期化されたシステム状態に戻すするためのコンポーネント;
    (v)前回に保存されたハードウェアプロファイルが存在しない、あるいはハードウェアプロファイルが変更されていると判断された場合、初期化されたシステム状態の記録を作成し、現行のハードウェアプロファイルに加えて所定の記憶場所にそれを保存する為のコンポーネント。
  131. 請求項129の装置であって、状態維持コンポーネントが以下を含む装置:
    保存用に割り当てられたメモリページのみを要する、初期化されたシステム状態の効率的な記録を作成するためのコンポーネント;および
    初期化されたシステム状態の効率的な記録から維持状態を戻すためのコンポーネント。
  132. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    (i)論理ボリューム要素を記憶するための論理ボリューム管理コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための、以下を含む第一期化コンポーネント:
    (ii1)コンピュータの内部記憶デバイス上で論理ボリューム要素の特定およびアクセスを試みる為のアクセスコンポーネント;および
    (ii2)アクセスコンポーネントが論理ボリューム要素を特定しアクセスすることに失敗した場合、コンピュータの内部記憶デバイス上に論理ボリューム要素を作成するための作成コンポーネント。
  133. 請求項132の装置であって、作成コンポーネントが以下を含む装置:
    コンピュータの内部記憶デバイスにおけるどのパーティションを論理ボリューム要素の作成用にプールするかを設定にするために、ユーザとやりとりするための設定ダイアログコンポーネント。
  134. 請求項133の装置であって、設定ダイアログコンポーネントが以下を含む装置:
    論理ボリューム要素用の推奨設定を計算するための作成コンポーネント;および
    計算された推奨設定に従って論理ボリューム要素を設定するようにユーザが選択できるようにするための作成コンポーネント。
  135. 請求項134の装置であって、推奨設定計算コンポーネントが以下を含む装置:
    データを失うことなく論理ボリューム要素の作成に安全にプールされうる空のパーティションを検知するためのコンポーネント。
  136. 請求項133の装置であって、設定ダイアログコンポーネントが以下を含む装置:
    パーティションの識別情報を表示するためのパーティション識別コンポーネント。
  137. 請求項136の装置であって、パーティション識別コンポーネントが以下から構成されるグループから選択されるコンポーネントを含む装置:
    パーティションのファイルシステム内容を表示するためのコンポーネント;
    パーティションに含まれるファイルシステムのタイプを表示するためのコンポーネント;
    パーティションのラベルを表示するためのコンポーネント;
    パーティションのサイズを表示するためのコンポーネント;および
    パーティションのタイプを表示するためのコンポーネント。
  138. 請求項132の装置であって、アクセスコンポーネントは論理ボリューム要素の設定パラメータを含むパーティションの特定を試みるコンポーネントを有し、
    作成コンポーネントは論理ボリューム要素の設定パラメータを含むパーティションを作成するためのコンポーネントを有する装置。
  139. 請求項30の装置であって、オペレーティングシステム環境が以下を含む装置:
    (i)第一ソフトウェアアプリケーション、および
    (ii)第一ソフトウェアアプリケーションと、第一ソフトウェアアプリケーションと実質的に同一構造の第二ソフトウェアアプリケーションとの間でアプリケーションデータを移行するための移行エージェントコンポーネント。
  140. 請求項139の装置であって、オペレーティングシステム環境が、オペレーティングシステム環境を初期化するための第一初期化コンポーネントを含み、当該第一初期化コンポーネントは以下を含む装置:
    ローカルオペレーティングシステムがコンピュータの内部記憶デバイスに保存されているかどうかを特定する為のコンポーネント;および
    ローカルオペレーティングシステムが存在する判断された場合、移行エージェントを実行するためのコンポーネント。
  141. 請求項139の装置であって、移行エージェントにより移行されたアプリケーションデータが所定の種類のアプリケーション内容およびアプリケーション設定データを含む装置。
  142. 請求項139の装置であって、第一ソフトウェアアプリケーションが以下から構成されるグループから選択される装置:
    ウェブブラウザ;
    電子メールクライアント;および
    インスタントメッセンジャークライアント。
  143. 請求項139の装置であって、第一ソフトウェアアプリケーションが以下から構成されるグループから選択される装置:
    ウェブサーバ;
    電子メールサーバ;
    データベースサーバ;
    ファイルサーバ;
    ネームサーバ;および
    ファイヤウォール。
  144. 請求項139の装置であって、移行エージェントが以下を含む装置:
    第二ソフトウェアアプリケーションのデータファイルから第一ソフトウェアアプリケーションのデータファイルにアプリケーションデータを移行させるための、以下を含むデータ移行コンポーネント:
    (i)複数個のデータ要素を抽出するために第二ソフトウェアアプリケーションのデータファイルを構文解析するためのデータ構文解析コンポーネント;
    (ii)データ構文解析コンポーネントにより抽出されたデータ要素を、第一ソフトウェアアプリケーションがサポートする、当該データ要素に最も近似したアナログデータに翻訳するための翻訳コンポーネント;および
    (iii)翻訳コンポーネントにより第一ソフトウェアアプリケーションのデータファイルに翻訳されたデータ要素を保存するためのコンポーネント。
  145. 請求項144の装置であって、データ解釈エージェントが以下を含む装置:
    (i1)第二ソフトウェアアプリケーションのデータファイルを読みだすための所定のソフトウェアルーチンを含む、第二ソフトウェアアプリケーションの所定部分をロードするためのコンポーネント;および
    (i2)第二ソフトウェアアプリケーションが提供するデータ構文分析機能を活用して定所定のソフトウェアルーチンを呼びだすするためのコンポーネント。
  146. 請求項145の装置であって、データ解釈エージェントがさらに以下を含む装置:
    (i3)第二ソフトウェアアプリケーションのデータファイルを読みだすための所定のソフトウェアルーチンを含む、第二ソフトウェアアプリケーションの所定部分のハッシュを計算するためのコンポーネント;および
    (i4)既知の良ハッシュのホワイトリスト掲載の計算済みハッシュを調べることで、第二ソフトウェアアプリケーションの所定部分の完全性を検証するためのハッシュ検証コンポーネント。
  147. 請求項146の装置であって、ハッシュ検証エージェントがさらに以下を含む装置:
    ネットワーク上で既知の良ハッシュのホワイトリストを更新するためのコンポーネント。
  148. 請求項139の装置であって、移行エージェントが以下を含む装置:
    エクスポートされたアプリケーションデータあるいは第二ソフトウェアアプリケーションにより作成されたバックアップアーカイブの場所を特定するナビゲーションインタフェースをユーザに提供するようにするためのコンポーネント。
  149. 請求項139の装置であって、移行エージェントが以下を含む装置:
    コンピュータの内部記憶デバイス上のファイルシステム内で、第二ソフトウェアアプリケーションを特定するための自動検索を選択肢としてユーザに提供するためのコンポーネント。
  150. 請求項139の装置であって、移行エージェントが以下を含む装置:
    第二ソフトウェアアプリケーションを特定するための自動検索を行う為の、以下を含むアプリケーション検索コンポーネント:
    (i)コンピュータの内部記憶デバイス上に保存されたローカルオペレーティングシステムのリソースを列挙するための列挙コンポーネント;および
    (ii)第二ソフトウェアアプリケーションを識別するための少なくとも一種類の署名パターンを提供するリストと、列挙コンポーネントにより列挙されたリソースとの照合を試みるパターンマッチングコンポーネント。
  151. 請求項150の装置であって、列挙エージェントは
    (i1)コンピュータの内部記憶デバイス上のファイルシステム内でmicrosoft windowsレジストリを特定するためのコンポーネント;および
    (i2)レジストリ鍵および値を抽出するためにmicrosoft windowsレジストリを列挙するためのレジストリ列挙コンポーネントを含み、
    パターン照合コンポーネントは、第二ソフトウェアアプリケーションを識別するための少なくとも一種の所定のレジストリ署名パターンから構成されるリストに、レジストリ列挙コンポーネントが抽出するレジストリ鍵および値の商号を試みるためのコンポーネントを含む装置。
  152. 請求項150の装置であって、列挙エージェントは、コンピュータの内部記憶デバイス上のローカルオペレーティングシステム環境におけるファイルシステム内で、ディレクトリおよびファイル名を再帰的に列挙するためのファイルシステム列挙コンポーネントを含み、
    パターン照合コンポーネントは、第二ソフトウェアアプリケーションを識別するための少なくとも規定のレジストリ署名パターンを提供するリストと、ファイルシステム列挙コンポーネントが列挙するファイルおよびディレクトリ名との照合を試みるためのパターン照合コンポーネントを含む装置。
  153. 請求項150の装置であって、列挙エージェントが、GUI要素抽出するためにコンピュータの内部記憶デバイス上に保存されたローカルオペレーティングシステム環境のGUIインタフェースを列挙するためのGUI列挙コンポーネントを含み、
    パターン照合コンポーネントは、第二ソフトウェアアプリケーションを識別するための少なくとも所定のGUI要素署名パターンを提供するリストと、GUI列挙コンポーネントにより抽出されたGUI要素との照合を試みるためのコンポーネントを含む装置。
  154. 請求項150の装置であって、さらにアプリケーション検索コンポーネントが、ネットワーク上の第二ソフトウェアアプリケーションを識別するための署名パターンのリストを更新するためのコンポーネントを含む装置。
  155. 請求項139の装置であって、移行エージェントが、第一ソフトウェアアプリケーションおよび第二ソフトウェアアプリケーション間でアプリケーションデータを同期化させるための同期化コンポーネントを含む装置であって、
    同期化コンポーネントは第一ソフトウェアアプリケーションおよび第二ソフトウェアアプリケーションのデータファイルを調整するためのコンポーネントを含み、結果、両者の意味論的内容は実質的に等価である。
  156. 請求項155の装置であって、同期化コンポーネントは同期の衝突が発生したことを決定するための衝突検知コンポーネントを含む装置であって、
    およびそこでは、移行コンポーネントは、衝突検知コンポーネントが同期の衝突が発生したことを決定するときに、第一ソフトウェアアプリケーションまたは第二ソフトウェアアプリケーションのどちらからデータを選ぶかを決めるためにユーザとやりとりするためのコンポーネントを含む。
  157. 請求項155の装置であって、移行エージェントはさらに、どちらのアプリケーションデータの同期化が自動的に実行されるかに従って、トリガ基準を特定するためにユーザとやりとりするための同期化トリガコンポーネントを含む装置であって、
    およびそこでは、オペレーティングシステム環境はさらに、同期化トリガコンポーネントにおいてユーザが特定したトリガ基準に従って、同期化コンポーネントをトリガするためのコンポーネントを含む。
  158. 請求項157の装置であって、同期化トリガコンポーネントは、どちらのアプリケーションデータ同期化が自動的に実行されるかに従って、トリガ基準としてシステムのイベントを特定するためにユーザとやりとりするためのイベント設定コンポーネントを含む装置であって、
    およびそこでは、オペレーティングシステム環境はさらに、イベント設定コンポーネントにおいてユーザが特定したシステムのイベントに従って、同期化コンポーネントをトリガするためのコンポーネントを含む。
  159. 請求項157の装置であって、同期化トリガコンポーネントは、どちらのアプリケーションデータ同期化が自動的に実行されるかに従って、トリガ基準として論理的なスケジュールを特定するためにユーザとやりとりするための同期化スケジューリングコンポーネントを含む装置であって、
    およびそこでは、オペレーティングシステム環境はさらに、同期化スケジューリングコンポーネントにおいてユーザが特定化した同期化スケジュールに従って、同期化コンポーネントをトリガするためのコンポーネントを含む。
  160. コンピュータ上で独立した安全なオペレーティングシステム環境を提供するための方法であって、以下から構成される方法:
    (a)可搬型不揮発性記憶要素を備えている;
    (b)可搬型不揮発性記憶要素にオペレーティングシステム環境を保存している;および
    (c)可搬型不揮発性記憶要素からオペレーティングシステム環境の初期のブートストラップするためのブートローダを備えており、オペレーティングシステム環境の初期化は、ブートローダを使って可搬型不揮発性記憶要素からコンピュータをブートすることで開始される。
  161. 請求項160の方法であって、オペレーティングシステム環境は以下を含む方法:
    実質的に無停止型多重セキュリティアーキテクチャを提供するように設定された複数個のセキュリティメカニズム。
  162. 請求項161の方法であって、さらに以下を含む方法:
    (e)コンピュータのデバイスインタフェースポートおよび互換性のある第一インタフェースを提供し、第一インタフェースは、可搬型不揮発性記憶要素に連結され、当該可搬型不揮発性記憶要素は周辺デバイスとしてコンピュータのデバイスインタフェースポートに動作可能なように接続できる。
  163. 請求項162の方法であって、第一インタフェースの種類が、ユニバーサルシリアルバス(USB)、firewire、パーソナルコンピュータメモリカード国際協会(PCMCIA)および安全デジタル入出力(SDIO)というインタフェースの種類から構成されるグループから選択される方法。
  164. 請求項162の方法であって、さらに以下を含む方法:
    (g)少なくとも一つの第一インタフェースとは異なる種類の追加的インタフェースを提供すること。
  165. 請求項162の方法であって、さらに以下を含む方法:
    (f)少なくとも第一インタフェースに動作可能なように接続されたハードウェア暗号化コンポーネントの提供。
  166. 請求項165の方法であって、さらに以下を含む方法:
    (g)少なくともハードウェア暗号化コンポーネントを囲み、実質的に改竄を防止する物理的なケーシングを提供し、当該物理的なケーシングの改竄は、ハードウェア暗号化コンポーネントに保存された秘密の暗号化データの破壊を引き起こす。
  167. 請求項165の方法であって、ハードウェア暗号化コンポーネントの改竄が実質的に防止されている方法。
  168. 請求項165の方法であって、ハードウェア暗号化コンポーネントは公衆鍵暗号化サービスを提供するように設定されている方法。
  169. 請求項168の方法であって、ハードウェア暗号化コンポーネントが提供するように設定されている公開鍵暗号化サービスが以下を含む方法:
    プライベート鍵の安全な生成および記憶;および
    公開鍵暗号化および復号化の操作。
  170. 請求項165の方法であって、ハードウェア暗号化コンポーネントに含まれるハードウェア要素内に、秘密の暗号化データが保存されている方法。
  171. 請求項165の方法であって、ハードウェア暗号化コンポーネントが、標準認証トークンインタフェースプロトコルに適合するように設定され、その他の標準認証トークンインタフェースプロトコルはハードウェア暗号化コンポーネントの暗号化機能とのインタフェースが可能である方法。
  172. 請求項171の方法であって、ハードウェア暗号化コンポーネントが、cryptoki(pkcs 11)トークン標準に適合するように設定さている方法。
  173. 請求項171の方法であって、ハードウェア暗号化コンポーネントが、iso 7816標準に適合するように設定されている方法。
  174. 請求項162の方法であって、さらに以下を含む方法:
    (f)固有生体計測を測定するための生体センサの提供。
  175. 請求項174の方法であって、生体計測センサが指紋読取機である方法。
  176. 請求項174の方法であって、さらに以下を含む方法:
    (g)少なくとも第一インタフェースと連結している、ハードウェア暗号化コンポーネントの提供、およびパスワードを使用せずに2因子認証のサポートが可能なオペレーティングシステム環境。
  177. 請求項162の方法であって、さらに以下を含む方法:
    (f)少なくとも可搬型不揮発性記憶要素を囲む物理的なケーシングの提供。
  178. 請求項177の方法であって、物理的なケーシングが目に見える認証マークを含む方法。
  179. 請求項178の方法であって、目に見える認証マークがホログラムから構成される方法。
  180. 請求項177の方法であって、物理的なケーシングは署名を含む方法。
  181. 請求項177の方法であって、物理的なケーシングが実質的に改竄を防止する方法。
  182. 請求項181の方法であって、物理的なケーシングの改竄により可搬型不揮発性記憶要素が動作不能になる方法。
  183. 請求項161の方法であって、可搬型不揮発性記憶要素は、コンピュータの媒体読み出し/書き込みインタフェースとの互換性を有する記憶媒体である方法。
  184. 請求項183の方法であって、記憶媒体の種類は、光式および磁気式およびソリッドステート式の記憶媒体から構成されるグループから選択される方法。
  185. 請求項183の方法であって、記憶媒体が小型の光式媒体である方法。
  186. 請求項183の方法であって、記憶媒体が目に見える認証マークを提供する方法。
  187. 請求項183の方法であって、記憶媒体が署名エリアを提供する方法。
  188. 請求項161の方法であって、可搬型不揮発性記憶要素が物理的に読み取り専用である方法。
  189. 請求項161の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為は、十分な主記憶が利用できるならば、コンピュータの主記憶にオペレーティングシステム環境の所定部分を読み込むことを含む方法。
  190. 請求項189の方法であって、オペレーティングシステム環境の所定部分をコンピュータの主記憶に読み込むための行為が、主記憶にオペレーティングシステム環境の十分に大きな部分を読み込むことにより、コンピュータがもはや可搬型不揮発性記憶要素からの読み込みを必要としなくなる方法。
  191. 請求項161の方法であって、ブートローダが可搬型不揮発性記憶要素に含まれ、コンピュータ上のオペレーティングシステム環境の初期化が、可搬型不揮発性記憶要素から直接にコンピュータをブートすることにより開始される方法。
  192. 請求項161の方法であって、ブートローダは別の記憶媒体に含まれ、コンピュータのBIOSがブート用媒体としてサポートする種類である別の記憶媒体にブートローダが保存されており、オペレーティングシステム環境はオペレーティングシステム環境を初期化するための主たる初期化コンポーネントを起動するための第一初期化コンポーネントを含み、上記別の記憶媒体は可搬型不揮発性記憶要素に保存されたオペレーティングシステム環境にアクセスし、次いで初期化コンポーネントを起動する方法。
  193. 請求項161の方法であって、さらに以下を含む方法:
    (e)別の暗号化トークンの提供
  194. 請求項161の方法であって、さらに以下を含む方法:
    (e)コンピュータがコンピュータ上でローカルオペレーティングシステムを走らせている間に、可搬型不揮発性記憶要素がコンピュータとインタフェースされる際に行われる、可搬型不揮発性記憶要素上にある所定のソフトウェアプログラムを自動的に実行するための自動実行要素の保存。
  195. 請求項194の方法であって、自動実行要素が実行する所定のソフトウェアプログラムは、以下から構成されるグループから選択されるソフトウェアを含む方法:
    (i)ユーザマニュアルを提供するソフトウェア;
    (ii)ユーザによるコンピュータのBIOS再設定を補助するソフトウェア;および
    (iii)ユーザによるブートディスクの作成を補助するソフトウェア。
  196. 請求項194の方法であって、自動実行要素が実行する所定のソフトウェアプログラムが、可搬型不揮発性記憶要素からコンピュータをリブートする前に、ローカルオペレーティングシステムの休止状態モードを引き起こし、ローカルオペレーティングシステムが走らせているアプリケーションの状態を保存する方法。
  197. 請求項161の方法であって、オペレーティングシステム環境は:
    (i)ネットワークへの接続性を確立するためのネットワーク設定ソフトウェア;および
    (ii)仮想プライベートネットワークへの接続を確立するための仮想プライベートネットワークソフトウェアを含み;
    ネットワーク設定ソフトウェアは、ネットワーク接続後に、仮想プライベートネットワークへ接続するための仮想プライベートネットワークソフトウェアを起動する方法。
  198. 請求項197の方法であって、オペレーティングシステム環境が以下を行うように設定された方法:
    仮想プライベートネットワークソフトウェアにより接続された仮想プライベートネットワークのみについて発信および受信のネットワークトラフィックを可能にすることにより、仮想プライベートネットワークに接続するために経由した公衆ネットワーク上にあるセキュリティに対する脅威からオペレーティングシステム環境を論理的に隔離する。
  199. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境にあるクライアント側およびサーバ側間におけるアプリケーションおよび無許可の双方向のネットワークトラフィックを実質的に防止する所定のネットワークアクセス制御方針を強化するために設定されたパーソナルファイアウォールソフトウェア。
  200. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境の個々のソフトウェアコンポーネントに対する侵害が、オペレーティングシステム環境が提供するセキュリティ全体に及ぼす潜在的損害を実質的に制限する、所定のオペレーティングシステムレベルアクセス制御方針を強化するために設定される必須のアクセス制御コンポーネント。
  201. 請求項200の方法であって、既定のオペレーティングシステムレベルアクセス制御方針が以下を提供する方法:
    個々のソフトウェアコンポーネントが機能を実行するために必要な特権一式を縮小するよう、オペレーティングシステム環境の個々のソフトウェアコンポーネントの特権を大幅に削減する。
  202. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    実行可能なファイルが所定の信頼できるファイルシステムパスにないソフトウェアプログラムの実行を防止するように設定された信頼されているパス実行セキュリティメカニズム。
  203. 請求項161の方法であって、オペレーティングシステム環境は以下を含む方法:
    少なくとも一つの論理的区画に所定の区画化したソフトウェアプログラムを含むよう設定され、所定の区画化されたソフトウェアプログラムはオペレーティングシステム環境の他の部分から論理的に隔離された論理的区画セキュリティメカニズム。
  204. 請求項203の方法であって、論理的区画セキュリティメカニズムの種類が、unix chrootおよびユーザモードlinuxおよびvmwareおよびxenの論理区画タイプから構成されるグループから選択される方法。
  205. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステムの仮想記憶およびオペレーティングシステムのハードウェア入出力インタフェースに対する直接、且つのロウアクセスを防止するために設定されたロウ入出力および記憶保護用コンポーネント。
  206. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境のソフトウェアコンポーネントにおける所定の脆弱性タイプのグループを不正な目的に利用することを防止するために、オペレーティングシステム環境を堅くするように設定されたエクスプロイト対策コンポーネント。
  207. 請求項206の方法であって、エクスプロイト対策コンポーネントは以下を含む方法:
    オペレーティングシステム環境のソフトウェアコンポーネントにある記憶限界違反型脆弱性を不正な目的に利用することの困難さを増加させるための記憶限界違反エクスプロイト対策。
  208. 請求項206の方法であって、エクスプロイト対策コンポーネントが以下を含む方法:
    オペレーティングシステム環境のソフトウェアコンポーネントにある競合条件型脆弱性タイプを不正利用することの困難さを増加させるための競合条件エクスプロイト対策。
  209. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    所定のグループのソフトウェアコンポーネントにおける所定のグループの脆弱性タイプの不正利用を防止するためのソフトウェアコンポーネントの所定のグループを堅固にするコンパイラツールチェーンを使ってコンパイルされるソフトウェアコンポーネントの所定のグループ。
  210. 請求項209の方法であって、ソフトウェアコンポーネントの所定のグループを堅固にするために使用されるコンパイラツールチェーンが、適用されたsspパッチを有するgnuコンパイラツーチェーンおよび適用されたスタックガードパッチを有するgnuコンパイラツーチェーンから構成されるグループから選択される方法。
  211. 請求項209の方法であって、ソフトウェアコンポーネントの所定のグループを堅固にするために使用されるコンパイラツールチェーンが、ソフトウェアコンポーネントの所定のグループにおけるバッファーオーバーフロー型脆弱性の不正利用に対する実質的なランタイム保護を提供する方法。
  212. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    サービスプロバイダの提供するネットワークサービスをアクセスするためのクライアントアプリケーションであって、ネットワークサービスが当該装置によって提供されるオペレーティングシステム環境から安全にアクセスされていることを、サービスプロバイダに十分明確に示す設定。
  213. 請求項212の方法であって、クライアントアプリケーションがクライアント側暗号化証明書を含み、クライアントアプリケーションがクライアント側暗号化証明書を使って、サービスプロバイダがからの暗号化証明要求に対する応答を算出する方法。
  214. 請求項213の方法であって、クライアントアプリケーションが、安全なソケット層暗号化プロトコルをサポートするウェブブラウザにより使用され、当該ウェブブラウザはx509クライアント側証明書を含み、当該x509クライアント側証明書はサービスプロバイダからの暗号化証拠要求に対する応答を算出するためにウェブブラウザにより使用され、暗号化証拠要求および算出された応答は、安全なソケット層暗号化プロトコルにより定義された証拠要求応答メカニズムに準拠する。
  215. 請求項161の方法であって、オペレーティングシステム環境が以下を含む方法:
    ユーザにセキュリティリスクの警告をするための統合されたトレーニング教材。
  216. 請求項215の方法であって、統合されたトレーニング教材が以下を含む方法:
    問題を有するインタフェースの論理的近接に組み込まれた、警戒的な注意喚起。
  217. 請求項160の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)仮想プライベートネットワーク接続を確立するための仮想プライベートネットワークソフトウェア、および
    (ii)ネットワーク接続性を確立するための、ネットワーク接続後に仮想プライベートネットワーク接続を確立するために仮想プライベートネットワークコンポーネントを起動するネットワーク設定ソフトウェア。
  218. 請求項217の方法であって、仮想プライベートネットワークソフトウェアにより接続された仮想プライベートネットワークのみについて発信および受信のネットワークトラフィックを可能にすることにより、仮想プライベートネットワークに接続するために経由した公衆ネットワーク上にあるセキュリティに対する脅威からオペレーティングシステム環境を論理的に隔離する方法。
  219. 請求項160の方法であって、オペレーティングシステム環境が以下を含む方法:
    ユーザとの最小限のやりとりにより各種の状況にわたってネットワークへの接続性を確立するための接続性エージェントソフトウェア。
  220. 請求項219の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為が、接続性エージェントソフトウェアの実行を含む方法。
  221. 請求項219の方法であって、接続性エージェントソフトウェアが以下を実行するように設定されている方法:
    コンピュータのネットワークインタフェースハードウェアを決定し、および
    決定されたネットワークインタフェースを介し、コンピュータのネットワークインタフェースハードウェアを決定し、当該ネットワークインタフェースを種類別に分類し所定の順番で反復することによりネットワークへの接続性の確立を試み、そして各々の決定されたネットワークインタフェースに既定のデフォルト設定パラメータを適用することによりネットワークへの接続性の確立を試みる。
  222. 請求項221の方法であって、接続性エージェントソフトウェアがさらに以下を行うように設定された方法:
    ワイヤレスネットワークインタフェースにより検知されるワイヤレスネットワークのリストを決定することにより、ワイヤレスネットワークインタフェースを使ってネットワーク接続性を確立し、ワイヤレスネットワークのリストにある各々のワイヤレスネットワークについてワイヤレスネットワークインタフェースとワイヤレスネットワークとを関連付けし、ワイヤレスネットワークインタフェースに適切な所定のデフォルト設定パラメータを適用することによりネットワークへの接続性の確立を試みる。
  223. 請求項222の方法であって、接続性エージェントソフトウェアがさらに以下を行うように設定されている方法:
    ワイヤレスネットワークインタフェースで検知されたワイヤレスネットワークのリストを、各々のワイヤレスネットワークの信号強度に従ってワイヤレスネット分類する。
  224. 請求項221の方法であって、接続性エージェントソフトウェアがさらに以下を行うように設定されている方法:
    ワイヤレスネットワークインタフェースにより検知されたワイヤレスネットワークのリストを決定することによりワイヤレスネットワークインタフェースとネットワーク接続性とを確立し、ワイヤレスネットワークインタフェースをどのワイヤレスネットワークに関連付けるかについて影響を与えることができるよう、接続性エージェントソフトウェアとユーザとのやりとりを可能にする。
  225. 請求項219の方法であって、接続性エージェントソフトウェアは
    所定の記憶場所に保存された過去のネットワーク設定のリストを保持し、ネットワークへの接続性の確立が成功したネットワーク設定のパラメータに従って過去のネットワーク設定のリストを更新し、また、
    当該接続性エージェントソフトウェアは、ネットワークへの接続性を確立するために、過去のネットワーク設定のリストのネットワーク設定の適用を試みる。
  226. 請求項225の方法であって、前回のネットワーク設定のリストからネットワーク設定を適用しようとする接続性エージェントソフトウェアの順番は、各々のネットワーク設定が動作する可能性を過去のパターンに基づいて計算することにより、前回のネットワーク設定リスト上のネットワーク設定の適用順位を付ける方法。
  227. 請求項219の方法であって、接続性エージェントソフトウェアが以下を行うように設定された方法:
    コンピュータの内部記憶デバイスにインストールされたオペレーティングシステムのファイルからネットワーク設定パラメータをインポートする。
  228. 請求項219の方法であって、接続性エージェントソフトウェアは以下を行うように設定されている方法:
    試みられたネットワーク設定が成功したかどうかを判断するためのテストとしてネットワークへの接続性を要する所定の信頼できる操作を実行する。
  229. 請求項219の方法であって、接続性エージェントソフトウェアは以下を行うように設定されている方法:
    自動的なネットワーク設定の試みが失敗した場合には、手動でネットワーク設定パラメータを提供するようにユーザとやりとりする。
  230. 請求項219の方法であって、接続性エージェントソフトウェアが以下を行うように設定されている方法:
    ユーザに対して、自動的なネットワーク設定の試みをキャンセルし、ネットワークの即時の手動設定を実施できるようにする手動オーバーライドオプションを提供する。
  231. 請求項219の方法であって、オペレーティングシステム環境はサービスプロバイダが提供するネットワークサービスをアクセスするためのクライアントアプリケーションを含み、サ当該クライアントアプリケーションは、オペレーティングシステム環境からネットワークサービスが安全にアクセスされていることを、サービスプロバイダに十分明確に示すように設定されている方法。
  232. 請求項231の方法であって、クライアントアプリケーションはクライアント側暗号化証明書を含み、当該クライアント側暗号化証明書は、サービスプロバイダがからの暗号化証拠要求への応答を算出するためにクライアントアプリケーションにより使用される方法。
  233. 請求項232の方法であって、クライアントアプリケーションは、安全なソケット層暗号化プロトコルをサポートするウェブブラウザを提供し、当該ウェブブラウザはx509クライアント側暗号化証明書を含み、当該x509クライアント側暗号化証明書は、サービスプロバイダからの暗号化証拠要求への応答を算出するためにウェブブラウザにより使用され、暗号化証拠要求および算出された応答は、安全なソケット層暗号化プロトコルにより定義された証拠要求応答メカニズムに準拠する。
  234. 請求項160の方法であって、オペレーティングシステム環境は
    少なくとも不透明なコンテナから構成される永続性安全記憶要素内に永続的にデータを保存する為の永続性安全記憶メカニズムを定義するソフトウェアを含み、
    コンピュータ上のオペレーティングシステム環境を初期化する行為は以下を含む方法:
    (i) 永続性安全記憶要素を特定してアクセスする試み;および
    (ii)永続性安全記憶要素が特定できない、あるいはアクセスできない場合には、永続性安全記憶要素の作成。
  235. 請求項234の方法であって、永続性安全記憶メカニズムを定義するソフトウェアは、ファイルシステムを含む仮想ブロックデバイスとして不透明なコンテナを設けるように設定されている方法。
  236. 請求項234の方法であって、永続性安全記憶要素を特定してアクセスする試みは、コンピュータの内部記憶デバイスにあるローカルオペレーティングシステムのファイルシステム内で、永続性安全記憶要素を特定してアクセスする試みから成り、永続性安全記憶要素が特定できない、あるいはアクセスできない場合の永続性安全記憶要素の作成は、コンピュータの内部記憶デバイスにあるローカルオペレーティングシステムのファイルシステム内における、永続性安全記憶要素の作成から構成される。
  237. 請求項236の方法であって、コンピュータの内部記憶デバイスにあるローカルオペレーティングシステムのファイルシステム内で永続性安全記憶要素を作成する行為が以下を含む方法:
    最も多くの空き領域を持つ内部記憶パーティション上における永続性安全記憶要素の自動作成。
  238. 請求項236の方法であって、コンピュータの内部記憶デバイスにあるローカルオペレーティングシステムのファイルシステム内で永続性安全記憶要素を作成する行為が以下を含む方法:
    永続性安全記憶要素わ作成されるパーティション選択のためのユーザとのやりとり。
  239. 請求項234の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為が以下を含む方法:
    永続性安全記憶要素が特定できない、あるいはアクセスできない場合に、永続性安全記憶要素の作成をキャンセルするという選択肢をユーザに対し提供する。
  240. 請求項234の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為が以下を含む方法:
    永続性安全記憶要素の作成を消去するという選択肢をユーザに対し提供する。
  241. 請求項234の方法であって、永続性安全記憶要素を特定してアクセスする試みがネットワーク上の所定記憶場所にある永続性安全記憶要素を特定してアクセスする試みから成り、
    永続性安全記憶要素が特定できない、あるいはアクセスできない場合、ネットワーク上の所定の記憶場所において永続性安全記憶要素を作成することから構成される方法
  242. 請求項234の方法であって、永続性安全記憶メカニズムを定義するソフトウェアは以下をするために設定される:
    機密鍵を用いて不透明なコンテナを暗号化する。
  243. 請求項242の方法であって、永続性安全記憶メカニズムを定義するソフトウェアはさらに以下をするために設定される:
    機密鍵を暗号化し、
    およびそこでは、永続性安全記憶要素は、暗号化された機密鍵が記憶される鍵ファイルを提供する。
  244. 請求項242の方法であって、永続性安全記憶メカニズムを定義するソフトウェアはさらに以下を行うように設定されている方法:
    機密鍵を暗号化する;および
    不透明なコンテナ内に暗号化された機密鍵を組み込む。
  245. 請求項242の方法であって、さらに以下を備える方法:
    (e)コンピュータのデバイスインタフェースポートと互換性のある、少なくとも可搬型不揮発性記憶要素と連結された第一インタフェースであって、
    上記可搬型不揮発性記憶要素は周辺デバイスとしてコンピュータのデバイスインタフェースポートに動作可能なように接続可能な第一インタフェースの提供、および
    (f)少なくとも可搬型不揮発性記憶要素と連結されてハードウェア暗号化コンポーネント提供;
    ならびに上記ハードウェア暗号化コンポーネントを用いてセキュリティ鍵を暗号化するように設定された永続性安全記憶メカニズムを定義するソフトウェア。
  246. 請求項242の方法であって、さらに以下から構成される方法:
    (e)個別の暗号化トークンの提供、および
    個別の暗号化トークンを使ってセキュリティ鍵を暗号化するように設定された永続性安全記憶メカニズムを定義するソフトウェア。
  247. 請求項242の方法であって、永続性安全記憶メカニズムを定義するソフトウェアがさらに以下を行うように設定されている方法:
    ユーザが提供するパスワードを使ってセキュリティ鍵を暗号化する。
  248. 請求項234の方法であって、永続性安全記憶メカニズムを定義するソフトウェアが以下を行うように設定されている方法:
    永続性安全記憶要素を固有識別するために指紋を計算する。
  249. 請求項248の方法であって、指紋の規定部分は永続性安全記憶要素のファイル名の中に組み込まれる方法。
  250. 請求項248の方法であって、指紋の所定部分が永続性安全記憶要素のファイルの内容内に組み込まれる方法。
  251. 請求項248の方法であって、さらに以下から構成される方法:
    (e)コンピュータのデバイスインタフェースポートと互換性のある、少なくとも可搬型不揮発性記憶要素と連結された第一インタフェースであって、当該可搬型不揮発性記憶要素は、周辺デバイスとしてコンピュータのデバイスインタフェースポートに動作可能なように接続可能であるインターフェースの提供;および
    (f)少なくとも第一インタフェースと連結されたハードウェア暗号化コンポーネントの提供;指紋は当該ハードウェア暗号化コンポーネントに保存された固有データの所定部分の指紋として計算される。
  252. 請求項248の方法であって、さらに以下から構成される方法。
    (e)個別の暗号化トークンの提供
    指紋は個別の暗号化トークンに保存された固有データの所定部分の指紋として計算される。
  253. 請求項248の方法であって、指紋が、ユーザが提供する固有識別情報に基づき計算される方法。
  254. 請求項234の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為が以下を含む方法:
    ブートプロセスの最適化を可能にするために有用な、ブートプロセス中に作成された第一ブートデータを永続性安全記憶要素内に保持する。
  255. 請求項254の方法であって、第一ブートデータが以下を含む方法:
    ハードウェア設定パラメータ。
  256. 請求項254の方法であって、第一ブートデータが以下を含む方法:
    初期化されたシステム状態の記録。
  257. 請求項234の方法であって、オペレーティングシステム環境が以下を含む方法:
    ネットワーク接続性を確立するための、永続性安全記憶要素内でネットワーク設定パラメータを保持たするように設定されネットワーク設定ソフトウェア。
  258. 請求項257の方法であって、ネットワーク設定ソフトウェアが、ユーザとの最小限のやりとりにより、各種の状況にわたってネットワーク接続性を確立するための接続性エージェントソフトウェアを含み、当該接続性エージェントソフトウェアは、永続性安全記憶要素に保存された過去のネットワーク設定のリストを保持するように設定されており、過去ののネットワーク設定のリストは、ネットワークへの接続性の確立が成功するネットワーク設定のパラメータに従って調整されており、接続性エージェントソフトウェアは、ネットワークへの接続性を確立するために過去のネットワーク設定のリストに掲載されたネットワーク設定を適用しようと試みる方法。
  259. 請求項160の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為が以下を含む方法:
    (i)コンピュータの最新のハードウェアプロファイルを決定する;
    (ii)規定の記憶場所に前回に記憶された前回のハードウェアプロファイルが存在する場合に、最新のハードウェアプロファイルと前回のハードウェアプロファイルとを比較する;次に
    (iii)最新のハードウェアプロファイルが前回のハードウェアプロファイルに等しくないか、あるいは、前回のハードウェアプロファイルが存在しない場合に:
    (iii1)ハードウェア設定パラメータを決定し、
    (iii2)決定されたハードウェア設定パラメータを所定の記憶場所に保存し、および
    (iii3)最新のハードウェア設定パラメータを所定の記憶場所に保存する;および
    (iv)保存されたハードウェア設定パラメータに基づいてハードウェアドライバをロードする。
  260. 請求項259の方法であって、コンピュータ上の最新のハードウェア設定パラメータを決定する行為が以下より構成される方法:
    ハードウェア識別情報用について、コンピュータのバスに対しクエリーを行う。
  261. 請求項259の方法であって、ハードウェア設定パラメータを決定する行為が以下を含む方法:
    コンピュータの内部記憶デバイス上のオペレーティングシステムのファイルからハードウェア設定パラメータをインポートする。
  262. 請求項259の方法であって、ハードウェア設定パラメータを決定する行為が以下を含む方法:
    最新のハードウェアプロファイルから導き出されうるハードウェア情報とハードウェア設定パラメータとを関係付けるデータベースで、ハードウェア設定パラメータを調べる。
  263. 請求項259の方法であって、ハードウェア設定パラメータを決定する行為が以下を含む方法:
    ハードウェア設定パラメータを手動で提供するためにユーザとやりとりする。
  264. 請求項160の方法であって、コンピュータ上でオペレーティングシステム環境を初期化する行為が以下を含む方法:
    初期化されたシステム状態の記録を維持する。
  265. 請求項264の方法であって、初期化されたシステム状態の記録を維持する行為が以下から構成される:
    (i)コンピュータの最新のハードウェアプロファイルを決定する;
    (ii)所定の記憶場所に前回記憶された前回のハードウェアプロファイルが存在するときは、最新のハードウェアプロファイルと前回のハードウェアプロファイルとを比較する;
    (iii)最新のハードウェアプロファイルが前回のハードウェアプロファイルと等しく、しかも初期化されたシステム状態が予め既定した場所に前回保存されていたときは、前回保存されている初期化されたシステム状態の記録からコンピュータの状態を復旧する;
    (iv)最新のハードウェアプロファイルが前回のハードウェアプロファイルに等しくないか、あるいは、前回のハードウェアプロファイルが存在しないときは:
    (iv1)初期化されたシステム状態の記録を所定の記憶場所に保存する;および
    (iv2)最新のハードウェアプロファイルを所定の記憶場所に保存する。
  266. 請求項264の方法であって、初期化されたシステム状態の記録に、初期化されたシステム状態の記録の部分として保存されるように割り当てられた記憶用ぺージのみを要する方法。
  267. 請求項160の方法であって、オペレーティングシステム環境は
    論理ボリューム要素内にデータを記憶するための論理ボリューム管理ソフトウェアを含み、
    コンピュータ上の当該オペレーティングシステム環境の初期化が以下を含む方法:
    (i)コンピュータの内部記憶デバイス内で論理ボリューム要素を特定しアクセスしする試み;および
    (ii)論理ボリューム要素が特定できない、あるいはアクセスできない場合、コンピュータの内部記憶デバイス内における論理ボリューム要素を作成する。
  268. 請求項267の方法であって、論理ボリューム要素が特定できない、あるいはアクセスできない場合に論理ボリューム要素を作成する行為が以下を含む方法:
    コンピュータの内部記憶デバイスのどのパーティションが論理ボリューム要素の作成にプールできないかを設定するためにユーザとやりとりする。
  269. 請求項268の方法であって、コンピュータの内部記憶デバイスのどのパーティションが論理ボリューム要素の作成にプールできないかを設定するためのユーザとのやりとりが以下を含む方法:
    所定の利用状況に最適化された所定のルールに従って、論理ボリューム要素の推奨設定を計算し、
    計算された推奨設定に従った論理ボリューム要素設定をユーザが選択できるようにする。
  270. 請求項269の方法であって、論理ボリューム要素用に推奨設定を計算する行為が以下から構成される方法:
    コンピュータの内部記憶デバイスのどのパーティションが空でないファイルシステムを含むかを決める。
  271. 請求項268の方法であって、コンピュータの内部記憶デバイスのどのパーティションが論理ボリューム要素の作成にプールされないかを設定するためにユーザとやりとりする行為が以下を含む方法:
    各々のパーティションの識別情報を表示する。
  272. 請求項271の方法であって、各パーティション用に表示される識別情報が、以下の設定から構成されるグループから選択されるパーティション情報を含む方法:
    パーティションファイルシステムの内容;
    パーティションファイルシステムの種類;
    パーティションラベル;
    パーティションサイズ;および
    パーティションの種類。
  273. 請求項267の方法であって、論理ボリューム要素を特定しアクセスしようとする作行為は、論理ボリューム要素用の設定パラメータを含むブートストラップパーティションを特定しようとする試み、および
    論理ボリューム要素が特定できない、あるいはアクセスできないならば、論理ボリューム要素の作成する行為は論理ボリューム要素用に設定パラメータを含むブートストラップパーティションを作成することを含む。
  274. 請求項160の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)所定の記憶場所にデータファイルを保持する為に設定された第一ソフトウェアアプリケーション;および
    (ii)第一ソフトウェアアプリケーションのデータファイルおよび、第一ソフトウェアアプリケーションと実質的に同一構造である第二ソフトウェアアプリケーションのデータファイル間でアプリケーションデータを移行させるための移行エージェントソフトウェア。
  275. 請求項274の方法であって、コンピュータ上のオペレーティングシステム環境を初期化する行為が以下を含む方法:
    ローカルオペレーティングシステムがコンピュータの内部記憶デバイスに保存されているかどうかを判断し、
    移行エージェントソフトウェアはオペレーティングシステムが存在すると判断した場合、移行エージェントソフトウェアを実行する。
  276. 請求項274の方法であって、移行エージェントソフトウェアにより移行されたアプリケーションデータが、アプリケーション内容および設定に関する所定の種類のデータを含む方法。
  277. 請求項274の方法であって、第一ソフトウェアアプリケーションが以下から構成されるグループから選択される方法:
    ウェブブラウザ;
    電子メールクライアント;
    インスタントメッセーンジャークライアント;および
    ip電話(VoIP)クライアント。
  278. 請求項274の方法であって、第一ソフトウェアアプリケーションが以下から構成されるグループから選択される方法:
    ウェブサーバ;
    電子メールサーバ;
    データベースサーバ;
    ファイルサーバ;
    ネームサーバ;
    ファイヤウォール;
    侵入検知システム;および
    侵入防止システム。
  279. 請求項274の方法であって、移行エージェントソフトウェアが、第二ソフトウェアアプリケーションのデータファイルから第一ソフトウェアアプリケーションのデータファイルへ以下の方法でアプリケーションデータを移行させるように設定されている方法:
    (i)複数個のデータ要素を抽出する為に第二ソフトウェアアプリケーションのデータファイルを構文解析する;
    (ii)抽出された、データ要素を第一ソフトウェアアプリケーションがサポートする最も類似したアナログデータに翻訳する;および
    (iii)翻訳されたデータ要素を第一ソフトウェアアプリケーションのデータファイルに保存する。
  280. 請求項279の方法であって、移行エージェントソフトウェアが、第二ソフトウェアアプリケーションのデータファイルから以下の方法で構文解析するように設定されている方法:
    (i1)第二ソフトウェアアプリケーションのデータファイルを読み込むための所定のソフトウェアルーチンを含む第二ソフトウェアアプリケーションの所定部分をロードする;および
    (i2)第二ソフトウェアアプリケーションの提供する、必要とされるソフトウェア機能性を活用する為に所定のソフトウェアルーチンを呼び出す。
  281. 請求項280の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    第二ソフトウェアアプリケーションのデータファイルを読み出すための所定のソフトウェアルーチンを含む第二ソフトウェアアプリケーションの所定部分のハッシュを計算し、
    既知の良ハッシュのホワイトリストに掲載された計算済みハッシュを参照することにより、第二ソフトウェアアプリケーションの所定部分の完全性を検証する。
  282. 請求項281の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    ネットワーク上で既知の良ハッシュのホワイトリストを更新する。
  283. 請求項274の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    エクスポートされたアプリケーションデータの位置を特定するためにナビゲーションインタフェースをユーザに提供し、第二ソフトウェアアプリケーションにより作成されたアーカイブをバックアップする。
  284. 請求項274の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    コンピュータの内部記憶デバイスに保存されたローカルオペレーティングシステムのファイルシステム内における第二ソフトウェアアプリケーションを特定するための自動検索を、選択肢としてユーザに提供する。
  285. 請求項274の方法であって、移行エージェントソフトウェアが以下の手段で第二ソフトウェアアプリケーションを特定するために自動検索を行うように設定されている方法:
    (i)コンピュータの内部記憶デバイスに保存されたローカルオペレーティングシステムの資源を列挙し;
    (ii)第二ソフトウェアアプリケーションを識別する少なくとも一つの署名パターンからなるリストと、列挙された資源とを照合する。
  286. 請求項285の方法であって、移行エージェントソフトウェアが以下の手段で第二ソフトウェアアプリケーションを特定するための自動検索を行うように設定されている方法:
    (i)コンピュータの内部記憶デバイス上のファイルシステム内でmicrosoft windowsレジストリを特定し;
    (ii)レジストリ鍵および値を抽出するためにmicrosoft windowsレジストリを列挙し;および
    (iii)第二ソフトウェアアプリケーションを識別するための少なくとも一つの所定のレジストリ署名パターンからなるリストと列挙された資源とを照合する。
  287. 請求項285の方法であって、移行エージェントソフトウェアが以下の手段で第二ソフトウェアアプリケーションを特定するための自動的検索を行うように設定されている方法:
    (i)コンピュータの内部記憶デバイス上のファイルシステム内でディレクトリとファイル名を特定し;
    (ii)第二ソフトウェアアプリケーションを識別するための少なくとも一つの規定所定の署名パターンからなるリストと、ファイル名およびディレクトリーとを照合する。
  288. 請求項285の方法であって、移行エージェントソフトウェアが以下の手段で第二ソフトウェアアプリケーションを特定するための自動検索を行うように設定されている方法:
    (i)GUI要素を抽出するためにコンピュータの内部記憶デバイス上に保存されたローカルオペレーテッィングシステムのGUIインタフェースを列挙し;
    (ii)第二ソフトウェアアプリケーションを識別するための少なくとも一つの所定のgui要素から構成されるリストと、抽出されたGUI要素を照合する。
  289. 請求項285の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    ネットワーク上で第二ソフトウェアアプリケーションを識別するための署名パターンのリストを更新する。
  290. 請求項274の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    第一ソフトウェアアプリケーションおよび第二ソフトウェアアプリケーション間におけるアプリケーションデータの同期化をサポートし、当該アプリケーションデータの同期化においては、第一ソフトウェアアプリケーションのデータファイルおよび第二ソフトウェアアプリケーションのデータファイルが調整され、両者の意味論的内容は実質的に同等となる。
  291. 請求項290の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    同期化において不一致が生じた際に、第一ソフトウェアアプリケーションおよび第二ソフトウェアアプリケーションのいずれデータを選ぶかを決めるためにユーザとやりとりする。
  292. 請求項290の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    アプリケーションデータのいずれの同期化が自動的に実行されるかによって、トリガ基準をユーザが特定できるようにする。
  293. 請求項292の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    アプリケーションデータのいずれの同期化が自動的に実行されるかによって、トリガ基準としてのシステムイベントをユーザが特定できるようにする。
  294. 請求項292の方法であって、移行エージェントソフトウェアが以下のように設定されている方法:
    アプリケーションデータのいずれの同期化が自動的に実行されるかによって、トリガ基準としての年代順スケジュールをユーザが特定できるようにする。
  295. コンピュータに独立したオペレーティングシステム環境を提供する方法であって、以下を備える方法:
    (a)以下から構成されるコンピュータのブート用装置をコンピュータに挿入する
    (a1)可搬型不揮発性記憶要素、
    (a2)可搬型不揮発性記憶要素に保存されたオペレーティングシステム環境、および
    (a3)可搬型不揮発性記憶要素からオペレーティングシステム環境をブートするブートローダ;および
    (b)当該装置からのコンピュータのブート。
  296. 請求項295の方法であって、コンピュータのブート用装置がさらに以下を備える方法される:
    (i)周辺デバイスとしてコンピュータのデバイスインタフェースポートに当該装置を動作可能なようにインタフェースするための第一インタフェースコンポーネント;および
    (ii)少なくとも第一インタフェースコンポーネントに連結された、暗号化サービスを提供するための暗号化コンポーネント。
  297. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    ユーザとの最小限のやりとりをもって各種の状況にわたってネットワークへの接続性を確立するための接続性エージェントコンポーネント。
  298. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    実質的に無停止型多重セキュリティアーキテクチャを提供するように設定された複数個のセキュリティメカニズム。
  299. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)仮想プライベートネットワークへ接続するための仮想プライベートネットワークコンポーネント、および
    (ii)ネットワークへの接続性確立後に、仮想プライベートネットワーク接続を確立するために仮想プライベートネットワークコンポーネントを起動するためのコンポーネントを含む、ネットワークへの接続性を確立するためのネットワーク設定コンポーネント。
  300. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)第一ソフトウェアアプリケーション、および
    (ii)第一ソフトウェアアプリケーションと、第一ソフトウェアアプリケーションに実質的に同一構造である第二ソフトウェアアプリケーションの間でアプリケーションデータを移行させるための移行エージェント。
  301. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)論理ボリューム要素の内部にデータを保存するための論理ボリューム管理コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (ii1)コンピュータの内部記憶デバイス上の論理ボリューム要素を特定しアクセスするためのアクセスコンポーネント、および
    (ii2)アクセスコンポーネントが論理ボリューム要素の特定あるいはアクセスに失敗した場合に、コンピュータの内部記憶デバイス上に論理ボリューム要素を作成するための作成コンポーネント。
  302. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)少なくとも永続性安全記憶要素の内部に永続的にデータを記憶するためのものであり、不透明なコンテナを提供する永続性安全記憶コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (ii1)永続性安全記憶要素を特定しアクセスを試みるためのアクセスコンポーネント;および
    (ii2)アクセスコンポーネントが永続性安全記憶要素を特定しアクセスすることに失敗した場合に永続性安全記憶要素を生成するための作成コンポーネント。
  303. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (i)コンピュータの最新のハードウェアプロファイルを決定するためのハードウェアプロファイリングコンポーネント;
    (ii)ハードウェアパラメータが設定されることが必要かどうかを決定するための、以下を含むコンポーネント:
    (ii1)所定の記憶場所に前回のハードウェアプロファイルが事前に保存されているかどうかを判断する為のコンポーネント、および
    (ii2)前回のハードウェアプロファイルが存在すると判断された場合には、前回のハードウェアプロファイルと最新のハードウェアプロファイルとを比較することで、ハードウェアプロファイルが変更されたかどうかを判断する為のコンポーネント;および
    (iii)ハードウェアパラメータが設定される必要があると判断された場合に、ハードウェアパラメータを設定して保存するための以下を含むコンポーネント:
    (iii1)ハードウェア設定パラメータを決定するためのハードウェア設定コンポーネント、
    (iii2)決定されたハードウェア設定パラメータを、所定の記憶場所において保存するためのコンポーネント、および
    (iii3)所定の所において最新のハードウェアプロファイルを保存するためのコンポーネント、および
    (iv)保存されたハードウェア設定パラメータに基づくハードウェアドライバを、読み込むためのコンポーネント。
  304. 請求項295の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境を初期化するための以下を含む第一初期化コンポーネント:
    所定の記憶場所において初期化されたシステム状態の記録を保持する為の状態補助コンポーネント。
  305. 以下を備えるコンピュータシステム:
    (a)ネットワーク;
    (b)ネットワークとインタフェースするサービスプロバイダ;
    (c)ネットワークとインタフェースするクライアントコンピュータ;および
    (d)クライアントコンピュータがブートできる以下を備える装置:
    (d1)可搬型不揮発性記憶要素、
    (d2)可搬型不揮発性記憶要素に記憶されたオペレーティングシステム環境、
    (d3)可搬型不揮発性記憶要素からオペレーティングシステム環境をブートするためのブートローダ、
    当該コンピュータシステムにおいて、クライアントコンピュータはネットワーク上でサービスプロバイダと通信する。
  306. 請求項305のシステムであって、オペレーティングシステム環境が以下を含むシステム:
    実質的な無停止型多重セキュリティアーキテクチャを提供するように設計された複数個のセキュリティメカニズム。
  307. 請求項305のシステムであって、オペレーティングシステム環境が以下を含むシステム:
    (i)仮想プライベートネットワークへ接続するための仮想プライベートネットワークコンポーネント、および
    (ii)ネットワークへの接続性を確立するための、ネットワークへの接続確立後に仮想プライベートネットワークへの接続を確立するために仮想プライベートネットワークコンポーネントを起動するコンポーネントを含むネットワーク設定コンポーネント。
  308. 請求項305のシステムであって、オペレーティングシステム環境が以下を含むシステム:
    ユーザとの最小限のやりとりをもって各種の状況においてネットワークへの接続性を確立するための接続性エージェントコンポーネント。
  309. 請求項305のシステムであって、オペレーティングシステム環境が以下を含むシステム:
    (i)少なくとも一つの不透明なコンテナを提供する永続性安全記憶要素内に永続的にデータを保存する為の永続性安全記憶コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント
    (ii1)永続性安全記憶要素を特定しアクセスを試みるアクセスコンポーネント、および
    (ii2)アクセスコンポーネントが永続性安全記憶要素を特定しアクセスすることに失敗した場合に、永続性安全記憶要素を生成する作成コンポーネント。
  310. 請求項305のシステムであって、オペレーティングシステム環境が以下を含むシステム:
    オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (i)コンピュータの最新のハードウェアプロファイルを決定するためのハードウェアプロファイリングコンポーネント;
    (ii)ハードウェアパラメータが設定されることが必要かどうかを決定するための以下を含むコンポーネント:
    (ii1)所定の記憶場所に前回のハードウェアプロファイルが事前に保存されているかどうかを判断する為のコンポーネント、および
    (ii2)前回のハードウェアプロファイルが存在する判断される場合には、前回のハードウェアプロファイルと最新のハードウェアプロファイルとを比較することで、ハードウェアプロファイルが変更されたかどうかを判断する為のコンポーネント、および
    (iii)ハードウェアパラメータが設定される必要があると判断された場合に、ハードウェアパラメータを設定して保存するための以下を含むコンポーネント:
    (iii1)ハードウェア設定パラメータを決定するためのハードウェア設定コンポーネント、
    (iii2)決定されたハードウェア設定パラメータを所定の記憶場所において保存するためのコンポーネント、および
    (iii3)所定の記憶場所において最新のハードウェアプロファイルを保存するためのコンポーネント;および
    (iv)保存されたハードウェア設定パラメータに基づくハードウェアドライバを読み込むためのコンポーネント。
  311. 請求項305のシステムであって、オペレーティングシステム環境が以下を含むシステム:
    所定の記憶場所において初期化されたシステム状態の記録を保持する為の状態保持コンポーネント。
  312. 以下を備える、クライアントコンピュータとサービスプロバイダとの間の通信方法:
    (a)ネットワークとサービスプロバイダとのインタフェース;
    (b)ネットワークとクライアントコンピュータとのインタフェース;
    (c)クライアントコンピュータのブート用装置であり以下から構成される当該装置のクライアントコンピュータへの挿入:
    (c1)可搬型不揮発性記憶要素、
    (c2)可搬型不揮発性記憶要素に保存されたオペレーティングシステム環境、および
    (c3)可搬型不揮発性記憶要素からオペレーティングシステム環境をブートするブートローダ
    この場合において、クライアントコンピュータはネットワーク上でサービスプロバイダと通信する、および
    (d)当該装置からクライアントコンピュータのブート。
  313. 請求項312の方法であって、オペレーティングシステム環境が以下を含む方法:
    実質的に無停止型多重セキュリティアーキテクチャを提供するように設定された複数個のセキュリティメカニズム。
  314. 請求項312の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)仮想プライベートネットワークへ接続するための仮想プライベートネットワークコンポーネント、および
    (ii)ネットワーク接続性を確立するための、ネットワークへの接続性確立後に、仮想プライベートネットワーク接続を確立するために仮想プライベートネットワークコンポーネントを起動するためのコンポーネントを含むネットワーク設定コンポーネント
  315. 請求項312の方法であって、オペレーティングシステム環境が以下を含む方法:
    ユーザとの最小限のやりとりをもって各種の状況においてネットワークへの接続性を確立するための接続性エージェントコンポーネント。
  316. 請求項312の方法であって、オペレーティングシステム環境が以下を含む方法:
    (i)少なくとも一つの不透明なコンテナを提供する永続性安全記憶要素内に永続的にデータを保存する為の永続性安全記憶コンポーネント、および
    (ii)オペレーティングシステム環境を初期化するための、以下を備える第一初期化コンポーネン:
    (ii1)永続性安全記憶要素を特定しアクセスを試みる為のアクセスコンポーネント;および
    (ii2)アクセスコンポーネントが永続性安全記憶要素を特定しアクセスすることに失敗した場合に、永続性安全記憶要素を生成するための作成コンポーネント。
  317. 請求項312の方法であって、オペレーティングシステム環境が以下を含む:
    オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネント:
    (i)コンピュータの最新のハードウェアプロファイルを決定するためのハードウェアプロファイリングコンポーネント;
    (ii)ハードウェアパラメータが設定されることが必要かどうかを決定するための以下を含むコンポーネント:
    (ii1)所定の記憶場所に前回のハードウェアプロファイルが事前に保存されているかどうかを判断する為のコンポーネント、および
    (ii2)前回のハードウェアプロファイルが存在すると判断された場合に、前回のハードウェアプロファイルと最新のハードウェアプロファイルとを比較することで、ハードウェアプロファイルが変更されたかどうかを決定するためのコンポーネント;および
    (iii)ハードウェアパラメータが設定される必要があると判断された場合に、ハードウェアパラメータを設定して保存するための以下を含むコンポーネント:
    (iii1)ハードウェア設定パラメータを決定するためのハードウェア設定コンポーネント、
    (iii2)決定されたハードウェア設定パラメータを所定の記憶場所において保存するためのコンポーネント、および
    (iii3)所定の記憶場所において最新のハードウェアプロファイルを保存するためのコンポーネント;および
    (iv)保存されたハードウェア設定パラメータに基づくハードウェアドライバをロードするためのコンポーネント。
  318. 請求項312の方法であって、オペレーティングシステム環境が以下を含む方法:
    オペレーティングシステム環境を初期化するための、以下を含む第一初期化コンポーネントであり、所定の記憶場所において、初期化されたシステム状態の記録を保持する為の状態保持コンポーネント。
JP2008544001A 2005-12-07 2006-12-06 高リスクアプリケーション用の実用的プラットフォーム Pending JP2009521020A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US74853505P 2005-12-07 2005-12-07
US11/330,697 US20070180509A1 (en) 2005-12-07 2006-01-11 Practical platform for high risk applications
PCT/IL2006/001402 WO2007066333A1 (en) 2005-12-07 2006-12-06 A practical platform for high risk applications

Publications (1)

Publication Number Publication Date
JP2009521020A true JP2009521020A (ja) 2009-05-28

Family

ID=37769392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008544001A Pending JP2009521020A (ja) 2005-12-07 2006-12-06 高リスクアプリケーション用の実用的プラットフォーム

Country Status (5)

Country Link
US (1) US20070180509A1 (ja)
EP (1) EP1958116A1 (ja)
JP (1) JP2009521020A (ja)
IL (1) IL191687A0 (ja)
WO (1) WO2007066333A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011122580A1 (ja) * 2010-03-29 2011-10-06 ヤマハ株式会社 中継装置及びファイル共有方法
JP2012530987A (ja) * 2009-06-24 2012-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・データ資産を要求するための装置、方法、およびコンピュータ・プログラム(コンピュータ・データ資産の要求)
CN102918511A (zh) * 2010-05-27 2013-02-06 富士通株式会社 中继装置、中继系统、中继方法、程序以及记录了程序的计算机可读取的记录介质
KR101463462B1 (ko) * 2013-04-05 2014-11-21 국방과학연구소 다중 네트워크 디바이스를 지원하는 파티션 기반 시스템의 통신 관리 장치
JP2015162225A (ja) * 2014-02-28 2015-09-07 セコムトラストシステムズ株式会社 ウェブ中継サーバ装置、及びウェブページ閲覧システム

Families Citing this family (266)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302164B2 (en) 2000-02-11 2007-11-27 Datcard Systems, Inc. System and method for producing medical image data onto portable digital recording media
US20020046061A1 (en) 2000-02-11 2002-04-18 Wright Kenneth L. Personal information system
US7698744B2 (en) * 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US8438647B2 (en) * 2005-07-14 2013-05-07 Imation Corp. Recovery of encrypted data from a secure storage device
US8321953B2 (en) * 2005-07-14 2012-11-27 Imation Corp. Secure storage device with offline code entry
US8015606B1 (en) 2005-07-14 2011-09-06 Ironkey, Inc. Storage device with website trust indication
US8335920B2 (en) * 2005-07-14 2012-12-18 Imation Corp. Recovery of data access for a locked secure storage device
US20070067620A1 (en) * 2005-09-06 2007-03-22 Ironkey, Inc. Systems and methods for third-party authentication
US7844675B2 (en) * 2005-12-15 2010-11-30 At&T Intellectual Property I, L.P. Accessing web services
US8166166B2 (en) * 2005-12-15 2012-04-24 International Business Machines Corporation Apparatus system and method for distributing configuration parameter
US7882562B2 (en) * 2005-12-15 2011-02-01 International Business Machines Corporation Apparatus, system, and method for deploying iSCSI parameters to a diskless computing device
US8001267B2 (en) * 2005-12-15 2011-08-16 International Business Machines Corporation Apparatus, system, and method for automatically verifying access to a multipathed target at boot time
US8639873B1 (en) 2005-12-22 2014-01-28 Imation Corp. Detachable storage device with RAM cache
US8266378B1 (en) 2005-12-22 2012-09-11 Imation Corp. Storage device with accessible partitions
US8443442B2 (en) * 2006-01-31 2013-05-14 The Penn State Research Foundation Signature-free buffer overflow attack blocker
EP1818844B1 (de) * 2006-02-10 2013-03-13 Secunet Security Networks Aktiengesellschaft Verfahren zur Benutzung von Sicherheitstoken
US7747831B2 (en) * 2006-03-20 2010-06-29 Emc Corporation High efficiency portable archive and data protection using a virtualization layer
US20070289019A1 (en) * 2006-04-21 2007-12-13 David Lowrey Methodology, system and computer readable medium for detecting and managing malware threats
US9235477B1 (en) 2006-04-24 2016-01-12 Emc Corporation Virtualized backup solution
US9317222B1 (en) * 2006-04-24 2016-04-19 Emc Corporation Centralized content addressed storage
US7933472B1 (en) * 2006-04-26 2011-04-26 Datcard Systems, Inc. System for remotely generating and distributing DICOM-compliant media volumes
US8888585B1 (en) * 2006-05-10 2014-11-18 Mcafee, Inc. Game console system, method and computer program product with anti-malware/spyware and parental control capabilities
US8065273B2 (en) * 2006-05-10 2011-11-22 Emc Corporation Automated priority restores
US9684739B1 (en) 2006-05-11 2017-06-20 EMC IP Holding Company LLC View generator for managing data storage
US7751339B2 (en) * 2006-05-19 2010-07-06 Cisco Technology, Inc. Method and apparatus for simply configuring a subscriber appliance for performing a service controlled by a separate service provider
GB2439103B (en) * 2006-06-15 2011-01-12 Symbian Software Ltd Implementing a process-based protection system in a user-based protection environment in a computing device
US20070300031A1 (en) * 2006-06-22 2007-12-27 Ironkey, Inc. Memory data shredder
US8065664B2 (en) * 2006-08-07 2011-11-22 Webroot Software, Inc. System and method for defining and detecting pestware
US20080077638A1 (en) * 2006-09-21 2008-03-27 Microsoft Corporation Distributed storage in a computing environment
US8353031B1 (en) * 2006-09-25 2013-01-08 Symantec Corporation Virtual security appliance
US8473701B2 (en) * 2006-10-11 2013-06-25 International Business Machines Corporation Storage media to storage drive centric security
US8087065B2 (en) * 2006-11-17 2011-12-27 Mcafee, Inc. Method and system for implementing mandatory file access control in native discretionary access control environments
US20080148046A1 (en) * 2006-12-07 2008-06-19 Bryan Glancey Real-Time Checking of Online Digital Certificates
US7934197B2 (en) * 2006-12-19 2011-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Maintaining code integrity in a central software development system
US20080226069A1 (en) * 2007-03-14 2008-09-18 Encrypted Shields Pty Ltd Apparatus and Method for Providing Protection from Malware
US20080244689A1 (en) * 2007-03-30 2008-10-02 Curtis Everett Dalton Extensible Ubiquitous Secure Operating Environment
GB0706810D0 (en) * 2007-04-05 2007-05-16 Becrypt Ltd System for providing a secure computing environment
JP5138359B2 (ja) * 2007-12-27 2013-02-06 エヌ・ティ・ティ アイティ株式会社 リモートアクセス方法
US7844903B2 (en) * 2007-05-25 2010-11-30 Dell Products, Lp System and method of automatically generating animated installation manuals
EP2019363A3 (en) * 2007-07-23 2009-03-25 Huawei Technologies Co., Ltd. Method and device for communication
US7991824B2 (en) * 2007-08-28 2011-08-02 Teletech Holdings, Inc. Secure computer working environment utilizing a read-only bootable media
US8312518B1 (en) * 2007-09-27 2012-11-13 Avaya Inc. Island of trust in a service-oriented environment
CA2625274C (en) 2007-12-13 2018-11-20 Kevin Gerard Boyce Method and system for protecting a computer system during boot operation
US20090164775A1 (en) * 2007-12-19 2009-06-25 Andrew Holmes Broadband computer system
US20090164701A1 (en) * 2007-12-20 2009-06-25 Murray Thomas J Portable image indexing device
CA2707934C (en) * 2007-12-21 2015-10-06 General Instrument Corporation System and method for preventing unauthorised use of digital media
US20100023783A1 (en) * 2007-12-27 2010-01-28 Cable Television Laboratories, Inc. System and method of decrypting encrypted content
US8266518B2 (en) * 2008-01-16 2012-09-11 Raytheon Company Anti-tamper process toolset
US8418170B2 (en) * 2008-01-29 2013-04-09 Flexera Software Llc Method and system for assessing deployment and un-deployment of software installations
US20090196417A1 (en) * 2008-02-01 2009-08-06 Seagate Technology Llc Secure disposal of storage data
US7870321B2 (en) * 2008-02-06 2011-01-11 Broadcom Corporation Extended computing unit with stand-alone application
US8793477B2 (en) * 2008-02-12 2014-07-29 Mcafee, Inc. Bootstrap OS protection and recovery
EP2090999A1 (de) * 2008-02-18 2009-08-19 PG Consulting Unternehmens- und DV- Organisations Beratung GmbH Speichermedium zur Verwendung mit einer Recheneinheit zur gesicherten Nutzung serverbasierter Anwendungen und Verfahren beziehungsweise System zum gesicherten Anbieten serverbasierter Anwendungen
US20090216784A1 (en) * 2008-02-26 2009-08-27 Branda Steven J System and Method of Storing Probabilistic Data
US20090235357A1 (en) * 2008-03-14 2009-09-17 Computer Associates Think, Inc. Method and System for Generating a Malware Sequence File
US8850569B1 (en) * 2008-04-15 2014-09-30 Trend Micro, Inc. Instant messaging malware protection
US8510805B2 (en) * 2008-04-23 2013-08-13 Samsung Electronics Co., Ltd. Safe and efficient access control mechanisms for computing environments
WO2009135196A1 (en) * 2008-05-02 2009-11-05 Ironkey, Inc. Enterprise device policy management
US8549657B2 (en) * 2008-05-12 2013-10-01 Microsoft Corporation Owner privacy in a shared mobile device
US9208118B2 (en) * 2008-06-10 2015-12-08 Lg Electronics Inc. Communication device, a method of processing signal in the communication device and a system having the communication device
US7530106B1 (en) * 2008-07-02 2009-05-05 Kaspersky Lab, Zao System and method for security rating of computer processes
US8826005B1 (en) * 2008-08-21 2014-09-02 Adobe Systems Incorporated Security for software in a computing system
EP2329424B1 (en) 2008-08-22 2016-12-07 Datcard Systems, Inc. System and method of encryption for dicom volumes
TW201011551A (en) * 2008-09-03 2010-03-16 Inventec Corp Method for adding hardware
US8788519B2 (en) 2008-10-24 2014-07-22 John C. Canessa System and methods for metadata management in content addressable storage
CN101441566B (zh) * 2008-11-18 2012-04-25 腾讯科技(深圳)有限公司 一种在嵌入式平台上动态链接程序的方法
US8386757B1 (en) * 2009-02-13 2013-02-26 Unidesk Corporation Managed desktop system
US8250652B1 (en) * 2009-02-24 2012-08-21 Symantec Corporation Systems and methods for circumventing malicious attempts to block the installation of security software
WO2010097090A2 (en) * 2009-02-25 2010-09-02 Aarhus Universitet Controlled computer environment
US20100228906A1 (en) * 2009-03-06 2010-09-09 Arunprasad Ramiya Mothilal Managing Data in a Non-Volatile Memory System
TW201040678A (en) * 2009-05-13 2010-11-16 Acrosser Technology Co Ltd Multi-point universal encryption transmission interface apparatus
US7640589B1 (en) 2009-06-19 2009-12-29 Kaspersky Lab, Zao Detection and minimization of false positives in anti-malware processing
WO2011007017A1 (es) * 2009-07-13 2011-01-20 Zitralia Seguridad Informática, S.L. Dispositivo electrónico de generación de entorno seguro
US8712968B1 (en) * 2009-07-15 2014-04-29 Symantec Corporation Systems and methods for restoring images
US8015284B1 (en) * 2009-07-28 2011-09-06 Symantec Corporation Discerning use of signatures by third party vendors
US8745365B2 (en) * 2009-08-06 2014-06-03 Imation Corp. Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system
US8683088B2 (en) 2009-08-06 2014-03-25 Imation Corp. Peripheral device data integrity
US8997077B1 (en) * 2009-09-11 2015-03-31 Symantec Corporation Systems and methods for remediating a defective uninstaller during an upgrade procedure of a product
US8662997B1 (en) 2009-09-30 2014-03-04 Amazon Technologies, Inc. Systems and methods for in-game provisioning of content
US8676759B1 (en) * 2009-09-30 2014-03-18 Sonicwall, Inc. Continuous data backup using real time delta storage
US8414390B1 (en) * 2009-09-30 2013-04-09 Amazon Technologies, Inc. Systems and methods for the electronic distribution of games
US9770654B1 (en) 2009-09-30 2017-09-26 Amazon Technologies, Inc. Cross device operation of games
US7743419B1 (en) 2009-10-01 2010-06-22 Kaspersky Lab, Zao Method and system for detection and prediction of computer virus-related epidemics
US8572740B2 (en) 2009-10-01 2013-10-29 Kaspersky Lab, Zao Method and system for detection of previously unknown malware
US8566943B2 (en) 2009-10-01 2013-10-22 Kaspersky Lab, Zao Asynchronous processing of events for malware detection
US8464038B2 (en) * 2009-10-13 2013-06-11 Google Inc. Computing device with developer mode
US9003517B2 (en) 2009-10-28 2015-04-07 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US20110113230A1 (en) * 2009-11-12 2011-05-12 Daniel Kaminsky Apparatus and method for securing and isolating operational nodes in a computer network
US20110145786A1 (en) * 2009-12-15 2011-06-16 Microsoft Corporation Remote commands in a shell environment
US9639347B2 (en) * 2009-12-21 2017-05-02 International Business Machines Corporation Updating a firmware package
US20110173377A1 (en) * 2010-01-13 2011-07-14 Bonica Richard T Secure portable data storage device
US8407244B2 (en) 2010-04-23 2013-03-26 Datcard Systems, Inc. Management of virtual packages of medical data in interconnected content-addressable storage systems
FR2960668A1 (fr) * 2010-05-27 2011-12-02 Airbus Operations Sas Procede et dispositif de configuration incrementale de modules de type ima
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US20120079275A1 (en) * 2010-09-23 2012-03-29 Canon Kabushiki Kaisha Content filtering of secure e-mail
US9027117B2 (en) 2010-10-04 2015-05-05 Microsoft Technology Licensing, Llc Multiple-access-level lock screen
US9607155B2 (en) 2010-10-29 2017-03-28 Hewlett Packard Enterprise Development Lp Method and system for analyzing an environment
WO2012078898A2 (en) 2010-12-10 2012-06-14 Datcard Systems, Inc. Secure portable medical information access systems and methods related thereto
US8726387B2 (en) * 2011-02-11 2014-05-13 F-Secure Corporation Detecting a trojan horse
CN103430147B (zh) * 2011-03-18 2016-03-30 富士通株式会社 信息处理装置及信息处理装置的控制方法
AU2011363943A1 (en) * 2011-03-31 2013-10-24 Irdeto B.V. Method of securing non-native code
US9449010B2 (en) * 2011-04-02 2016-09-20 Open Invention Network, Llc System and method for managing sensitive data using intelligent mobile agents on a network
ES2402977B1 (es) * 2011-04-15 2014-02-11 Telefónica, S.A. Método y sistema para generar y gestionar aplicaciones nativas
US9880604B2 (en) 2011-04-20 2018-01-30 Microsoft Technology Licensing, Llc Energy efficient location detection
US9047313B2 (en) * 2011-04-21 2015-06-02 Red Hat Israel, Ltd. Storing virtual machines on a file system in a distributed environment
US9473527B1 (en) * 2011-05-05 2016-10-18 Trend Micro Inc. Automatically generated and shared white list
US20120317410A1 (en) * 2011-06-08 2012-12-13 Cirque Corporation Protecting data from data leakage or misuse while supporting multiple channels and physical interfaces
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9306954B2 (en) * 2011-06-30 2016-04-05 Cloud Security Corporation Apparatus, systems and method for virtual desktop access and management
US9311126B2 (en) 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
US8898459B2 (en) * 2011-08-31 2014-11-25 At&T Intellectual Property I, L.P. Policy configuration for mobile device applications
US8918841B2 (en) 2011-08-31 2014-12-23 At&T Intellectual Property I, L.P. Hardware interface access control for mobile applications
US8984609B1 (en) * 2012-02-24 2015-03-17 Emc Corporation Methods and apparatus for embedding auxiliary information in one-time passcodes
US9143530B2 (en) 2011-10-11 2015-09-22 Citrix Systems, Inc. Secure container for protecting enterprise data on a mobile device
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US8813210B2 (en) * 2011-11-29 2014-08-19 Samsung Electronics Co., Ltd. Enhancing network controls in mandatory access control computing environments
US8601580B2 (en) * 2011-12-14 2013-12-03 Robert S. Hansen Secure operating system/web server systems and methods
KR20130068630A (ko) * 2011-12-15 2013-06-26 한국전자통신연구원 임베디드 디바이스의 초기화 방법 및 장치
US8732822B2 (en) 2011-12-16 2014-05-20 Microsoft Corporation Device locking with hierarchical activity preservation
US8874162B2 (en) 2011-12-23 2014-10-28 Microsoft Corporation Mobile device safe driving
US20130305354A1 (en) 2011-12-23 2013-11-14 Microsoft Corporation Restricted execution modes
US9710982B2 (en) 2011-12-23 2017-07-18 Microsoft Technology Licensing, Llc Hub key service
US9325752B2 (en) 2011-12-23 2016-04-26 Microsoft Technology Licensing, Llc Private interaction hubs
US9467834B2 (en) 2011-12-23 2016-10-11 Microsoft Technology Licensing, Llc Mobile device emergency service
US9420432B2 (en) 2011-12-23 2016-08-16 Microsoft Technology Licensing, Llc Mobile devices control
US10965742B2 (en) 2012-02-13 2021-03-30 SkyKick, Inc. Migration project automation, e.g., automated selling, planning, migration and configuration of email systems
US9077622B2 (en) * 2012-02-16 2015-07-07 Blackberry Limited Method and apparatus for automatic VPN login on interface selection
JP5689429B2 (ja) * 2012-02-27 2015-03-25 株式会社日立製作所 認証装置、および、認証方法
US9177171B2 (en) * 2012-03-11 2015-11-03 International Business Machines Corporation Access control for entity search
US9817951B2 (en) 2012-04-06 2017-11-14 Comcast Cable Communications, Llc System and method for analyzing a device
IL219499B (en) * 2012-04-30 2019-02-28 Verint Systems Ltd A system and method for detecting malicious software
US9779260B1 (en) 2012-06-11 2017-10-03 Dell Software Inc. Aggregation and classification of secure data
US9578060B1 (en) 2012-06-11 2017-02-21 Dell Software Inc. System and method for data loss prevention across heterogeneous communications platforms
US8856519B2 (en) 2012-06-30 2014-10-07 International Business Machines Corporation Start method for application cryptographic keystores
US9230076B2 (en) 2012-08-30 2016-01-05 Microsoft Technology Licensing, Llc Mobile device child share
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9286051B2 (en) * 2012-10-05 2016-03-15 International Business Machines Corporation Dynamic protection of one or more deployed copies of a master operating system image
US9208041B2 (en) 2012-10-05 2015-12-08 International Business Machines Corporation Dynamic protection of a master operating system image
US9311070B2 (en) 2012-10-05 2016-04-12 International Business Machines Corporation Dynamically recommending configuration changes to an operating system image
US9251354B2 (en) * 2012-10-15 2016-02-02 Imprivata, Inc. Secure access supersession on shared workstations
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
WO2014062804A1 (en) 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US8990772B2 (en) 2012-10-16 2015-03-24 International Business Machines Corporation Dynamically recommending changes to an association between an operating system image and an update group
IL224482B (en) 2013-01-29 2018-08-30 Verint Systems Ltd System and method for keyword spotting using representative dictionary
SG11201506642PA (en) * 2013-02-25 2015-09-29 Beyondtrust Software Inc Systems and methods of risk based rules for application control
US9467465B2 (en) 2013-02-25 2016-10-11 Beyondtrust Software, Inc. Systems and methods of risk based rules for application control
US9298925B1 (en) * 2013-03-08 2016-03-29 Ca, Inc. Supply chain cyber security auditing systems, methods and computer program products
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US9355223B2 (en) 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US9058504B1 (en) * 2013-05-21 2015-06-16 Malwarebytes Corporation Anti-malware digital-signature verification
IL226747B (en) 2013-06-04 2019-01-31 Verint Systems Ltd A system and method for studying malware detection
US9225714B2 (en) * 2013-06-04 2015-12-29 Gxm Consulting Llc Spatial and temporal verification of users and/or user devices
US9998866B2 (en) 2013-06-14 2018-06-12 Microsoft Technology Licensing, Llc Detecting geo-fence events using varying confidence levels
US9820231B2 (en) 2013-06-14 2017-11-14 Microsoft Technology Licensing, Llc Coalescing geo-fence events
US9721116B2 (en) 2013-06-24 2017-08-01 Sap Se Test sandbox in production systems during productive use
WO2015026971A2 (en) * 2013-08-20 2015-02-26 Shanklin Steven Dale Application trust-listing security service
JP6117068B2 (ja) * 2013-09-20 2017-04-19 株式会社東芝 情報処理装置、およびプログラム
RU2587423C2 (ru) * 2013-09-26 2016-06-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обеспечения безопасности онлайн-транзакций
US9246935B2 (en) 2013-10-14 2016-01-26 Intuit Inc. Method and system for dynamic and comprehensive vulnerability management
KR102125923B1 (ko) * 2013-10-24 2020-06-24 삼성전자 주식회사 전자 장치의 운영체제 업그레이드 방법 및 장치
JP6202999B2 (ja) * 2013-11-08 2017-09-27 株式会社東芝 情報処理装置、制御方法およびプログラム
US9313281B1 (en) 2013-11-13 2016-04-12 Intuit Inc. Method and system for creating and dynamically deploying resource specific discovery agents for determining the state of a cloud computing environment
US9501345B1 (en) 2013-12-23 2016-11-22 Intuit Inc. Method and system for creating enriched log data
US9772855B1 (en) * 2013-12-23 2017-09-26 EMC IP Holding Company LLC Discovering new backup clients
US9323926B2 (en) 2013-12-30 2016-04-26 Intuit Inc. Method and system for intrusion and extrusion detection
US9763173B2 (en) * 2014-01-15 2017-09-12 Cisco Technology, Inc. Regulatory domain identification for network devices
US20150304343A1 (en) 2014-04-18 2015-10-22 Intuit Inc. Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment
US9325726B2 (en) 2014-02-03 2016-04-26 Intuit Inc. Method and system for virtual asset assisted extrusion and intrusion detection in a cloud computing environment
US9866581B2 (en) 2014-06-30 2018-01-09 Intuit Inc. Method and system for secure delivery of information to computing environments
US10757133B2 (en) 2014-02-21 2020-08-25 Intuit Inc. Method and system for creating and deploying virtual assets
US9276945B2 (en) 2014-04-07 2016-03-01 Intuit Inc. Method and system for providing security aware applications
US9245117B2 (en) 2014-03-31 2016-01-26 Intuit Inc. Method and system for comparing different versions of a cloud based application in a production environment using segregated backend systems
US8997226B1 (en) * 2014-04-17 2015-03-31 Shape Security, Inc. Detection of client-side malware activity
US11294700B2 (en) 2014-04-18 2022-04-05 Intuit Inc. Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets
US9374389B2 (en) 2014-04-25 2016-06-21 Intuit Inc. Method and system for ensuring an application conforms with security and regulatory controls prior to deployment
US9319415B2 (en) 2014-04-30 2016-04-19 Intuit Inc. Method and system for providing reference architecture pattern-based permissions management
US9900322B2 (en) 2014-04-30 2018-02-20 Intuit Inc. Method and system for providing permissions management
US9330263B2 (en) * 2014-05-27 2016-05-03 Intuit Inc. Method and apparatus for automating the building of threat models for the public cloud
US10586047B2 (en) 2014-06-30 2020-03-10 Hewlett-Packard Development Company, L.P. Securely sending a complete initialization package
IL233776B (en) 2014-07-24 2019-02-28 Verint Systems Ltd A system and method for adjusting domains
US9473481B2 (en) 2014-07-31 2016-10-18 Intuit Inc. Method and system for providing a virtual asset perimeter
US10102082B2 (en) 2014-07-31 2018-10-16 Intuit Inc. Method and system for providing automated self-healing virtual assets
US10037286B2 (en) * 2014-08-26 2018-07-31 Red Hat, Inc. Private partition with hardware unlocking
WO2016036387A1 (en) * 2014-09-05 2016-03-10 Hewlett-Packard Development Company, L.P. Memory device redundancy
US10114627B2 (en) * 2014-09-17 2018-10-30 Salesforce.Com, Inc. Direct build assistance
US9288050B1 (en) 2014-09-25 2016-03-15 International Business Machines Corporation Unified storage and management of cryptographic keys and certificates
US10560842B2 (en) 2015-01-28 2020-02-11 Verint Systems Ltd. System and method for combined network-side and off-air monitoring of wireless networks
US10326748B1 (en) 2015-02-25 2019-06-18 Quest Software Inc. Systems and methods for event-based authentication
US10771452B2 (en) * 2015-03-04 2020-09-08 SkyKick, Inc. Autonomous configuration of email clients during email server migration
US10417613B1 (en) 2015-03-17 2019-09-17 Quest Software Inc. Systems and methods of patternizing logged user-initiated events for scheduling functions
IL238001B (en) 2015-03-29 2020-05-31 Verint Systems Ltd System and method for identifying communication conversation participants based on communication traffic patterns
US9990506B1 (en) 2015-03-30 2018-06-05 Quest Software Inc. Systems and methods of securing network-accessible peripheral devices
US10592483B2 (en) 2015-04-05 2020-03-17 SkyKick, Inc. State record system for data migration
US9842218B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9569626B1 (en) 2015-04-10 2017-02-14 Dell Software Inc. Systems and methods of reporting content-exposure events
US9641555B1 (en) * 2015-04-10 2017-05-02 Dell Software Inc. Systems and methods of tracking content-exposure events
US9842220B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US10102073B2 (en) * 2015-05-20 2018-10-16 Dell Products, L.P. Systems and methods for providing automatic system stop and boot-to-service OS for forensics analysis
US10757104B1 (en) 2015-06-29 2020-08-25 Veritas Technologies Llc System and method for authentication in a computing system
US10536352B1 (en) 2015-08-05 2020-01-14 Quest Software Inc. Systems and methods for tuning cross-platform data collection
US9942268B1 (en) * 2015-08-11 2018-04-10 Symantec Corporation Systems and methods for thwarting unauthorized attempts to disable security managers within runtime environments
US10176329B2 (en) 2015-08-11 2019-01-08 Symantec Corporation Systems and methods for detecting unknown vulnerabilities in computing processes
US10157358B1 (en) 2015-10-05 2018-12-18 Quest Software Inc. Systems and methods for multi-stream performance patternization and interval-based prediction
US10218588B1 (en) 2015-10-05 2019-02-26 Quest Software Inc. Systems and methods for multi-stream performance patternization and optimization of virtual meetings
US10387636B2 (en) 2015-10-20 2019-08-20 Vivint, Inc. Secure unlock of a device
IL242219B (en) 2015-10-22 2020-11-30 Verint Systems Ltd System and method for keyword searching using both static and dynamic dictionaries
IL242218B (en) 2015-10-22 2020-11-30 Verint Systems Ltd A system and method for maintaining a dynamic dictionary
CN105262777A (zh) * 2015-11-13 2016-01-20 北京奇虎科技有限公司 一种基于局域网的安全检测方法和装置
TWI708900B (zh) * 2016-01-20 2020-11-01 奧地利商奧羅科技有限公司 旋轉式滑動軸承、具有旋轉式滑動軸承之裝置、具有旋轉式滑動軸承之裝置的用途及高爾夫球車
US10224967B2 (en) * 2016-02-10 2019-03-05 ScaleFlux Protecting in-memory immutable objects through hybrid hardware/software-based memory fault tolerance
US10142391B1 (en) 2016-03-25 2018-11-27 Quest Software Inc. Systems and methods of diagnosing down-layer performance problems via multi-stream performance patternization
IL245299B (en) 2016-04-25 2021-05-31 Verint Systems Ltd A system and method for decoding communication transmitted in a wireless local communication network
WO2017209876A1 (en) * 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
US10402577B2 (en) * 2016-06-03 2019-09-03 Honeywell International Inc. Apparatus and method for device whitelisting and blacklisting to override protections for allowed media at nodes of a protected system
US11120106B2 (en) * 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
CN106407753A (zh) * 2016-09-30 2017-02-15 郑州云海信息技术有限公司 一种设备安全保护方法及系统
IL248306B (en) 2016-10-10 2019-12-31 Verint Systems Ltd System and method for creating data sets for learning to recognize user actions
US10929346B2 (en) 2016-11-14 2021-02-23 Tuxera, Inc. Systems and methods for storing large files using file allocation table based file systems
US10838913B2 (en) * 2016-11-14 2020-11-17 Tuxera, Inc. Systems and methods for storing large files using file allocation table based file systems
KR20180095409A (ko) * 2017-02-17 2018-08-27 삼성전자주식회사 전자 장치 및 전자 장치의 화면 표시 방법
IL252041B (en) 2017-04-30 2020-09-30 Verint Systems Ltd System and method for tracking computer application users
IL252037B (en) 2017-04-30 2021-12-01 Verint Systems Ltd System and method for identifying relationships between computer application users
US10977361B2 (en) 2017-05-16 2021-04-13 Beyondtrust Software, Inc. Systems and methods for controlling privileged operations
US10345780B2 (en) * 2017-06-16 2019-07-09 International Business Machines Corporation Dynamic threshold parameter updates based on periodic performance review of any device
US10896622B2 (en) * 2017-06-20 2021-01-19 Global Tel*Link Corporation Educational content delivery system for controlled environments
US11151251B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for validating in-memory integrity of executable files to identify malicious activity
US11151247B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for detecting malware injected into memory of a computing device
US11487868B2 (en) * 2017-08-01 2022-11-01 Pc Matic, Inc. System, method, and apparatus for computer security
US10489585B2 (en) 2017-08-29 2019-11-26 Red Hat, Inc. Generation of a random value for a child process
US11068353B1 (en) * 2017-09-27 2021-07-20 Veritas Technologies Llc Systems and methods for selectively restoring files from virtual machine backup images
US11093617B2 (en) * 2017-10-04 2021-08-17 Servicenow, Inc. Automated vulnerability grouping
EP3711279A1 (en) * 2017-11-15 2020-09-23 XM Cyber Ltd. Selectively choosing between actual-attack and simulation/evaluation for validating a vulnerability of a network node during execution of a penetration testing campaign
US10885193B2 (en) * 2017-12-07 2021-01-05 Microsoft Technology Licensing, Llc Method and system for persisting untrusted files
US11074323B2 (en) 2017-12-07 2021-07-27 Microsoft Technology Licensing, Llc Method and system for persisting files
IL256690B (en) 2018-01-01 2022-02-01 Cognyte Tech Israel Ltd System and method for identifying pairs of related application users
US10631168B2 (en) * 2018-03-28 2020-04-21 International Business Machines Corporation Advanced persistent threat (APT) detection in a mobile device
US11709946B2 (en) 2018-06-06 2023-07-25 Reliaquest Holdings, Llc Threat mitigation system and method
US10735443B2 (en) 2018-06-06 2020-08-04 Reliaquest Holdings, Llc Threat mitigation system and method
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
CN110780926B (zh) * 2018-07-30 2022-11-15 中兴通讯股份有限公司 一种操作系统的切换方法、终端和计算机存储介质
IL260986B (en) 2018-08-05 2021-09-30 Verint Systems Ltd A system and method for using a user action log to study encrypted traffic classification
US11425170B2 (en) 2018-10-11 2022-08-23 Honeywell International Inc. System and method for deploying and configuring cyber-security protection solution using portable storage device
US11184386B1 (en) * 2018-10-26 2021-11-23 United Services Automobile Association (Usaa) System for evaluating and improving the security status of a local network
US10977095B2 (en) 2018-11-30 2021-04-13 Microsoft Technology Licensing, Llc Side-by-side execution of same-type subsystems having a shared base operating system
EP3942740A1 (en) 2019-03-20 2022-01-26 Verint Systems Ltd. System and method for de-anonymizing actions and messages on networks
US11030298B2 (en) * 2019-04-08 2021-06-08 Microsoft Technology Licensing, Llc Candidate user profiles for fast, isolated operating system use
US11528149B2 (en) * 2019-04-26 2022-12-13 Beyondtrust Software, Inc. Root-level application selective configuration
CN110190987B (zh) * 2019-05-08 2022-02-01 南京邮电大学 基于备份收益与重映射的虚拟网络功能可靠性部署方法
CN110162438B (zh) * 2019-05-30 2024-03-26 上海市信息网络有限公司 仿真调试装置和仿真调试方法
USD926809S1 (en) 2019-06-05 2021-08-03 Reliaquest Holdings, Llc Display screen or portion thereof with a graphical user interface
USD926810S1 (en) 2019-06-05 2021-08-03 Reliaquest Holdings, Llc Display screen or portion thereof with a graphical user interface
USD926200S1 (en) 2019-06-06 2021-07-27 Reliaquest Holdings, Llc Display screen or portion thereof with a graphical user interface
USD926811S1 (en) 2019-06-06 2021-08-03 Reliaquest Holdings, Llc Display screen or portion thereof with a graphical user interface
USD926782S1 (en) 2019-06-06 2021-08-03 Reliaquest Holdings, Llc Display screen or portion thereof with a graphical user interface
US11263295B2 (en) * 2019-07-08 2022-03-01 Cloud Linux Software Inc. Systems and methods for intrusion detection and prevention using software patching and honeypots
EP4046337A1 (en) 2019-11-03 2022-08-24 Cognyte Technologies Israel Ltd System and method for identifying exchanges of encrypted communication traffic
CN111104664B (zh) * 2019-11-29 2022-03-15 北京云测信息技术有限公司 一种电子设备的风险识别方法及服务器
KR102357698B1 (ko) * 2020-02-24 2022-02-14 황순영 부분 해시값을 이용한 개인키 관리 방법
US11727126B2 (en) * 2020-04-08 2023-08-15 Avaya Management L.P. Method and service to encrypt data stored on volumes used by containers
CN111478978A (zh) * 2020-05-18 2020-07-31 北京时代凌宇科技股份有限公司 一种LoRa节点设备的配置装置及配置方法
CN115617256A (zh) * 2021-07-12 2023-01-17 戴尔产品有限公司 基于指定虚拟机引导条件的确定可能性在存储集群的存储节点中移动虚拟卷
CN114244823B (zh) * 2021-10-29 2024-02-02 北京中安星云软件技术有限公司 一种基于Http请求自动变形的渗透测试方法及系统
CN116915516B (zh) * 2023-09-14 2023-12-05 深圳市智慧城市科技发展集团有限公司 软件跨云交付方法、中转服务器、目标云及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10220460A1 (de) * 2002-05-07 2003-11-20 Simon Pal Verfahren zur sicheren Netzwerkverbindung
US7293166B2 (en) * 2004-03-05 2007-11-06 Hewlett-Packard Development Company, L.P. Method of indicating a format of accessing an operating system contained on a USB memory device

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012530987A (ja) * 2009-06-24 2012-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・データ資産を要求するための装置、方法、およびコンピュータ・プログラム(コンピュータ・データ資産の要求)
US9147006B2 (en) 2009-06-24 2015-09-29 International Business Machines Corporation Requesting computer data assets
WO2011122580A1 (ja) * 2010-03-29 2011-10-06 ヤマハ株式会社 中継装置及びファイル共有方法
JP2011209868A (ja) * 2010-03-29 2011-10-20 Yamaha Corp 中継装置
CN102696040A (zh) * 2010-03-29 2012-09-26 雅马哈株式会社 中继装置及文件共享方法
CN102918511A (zh) * 2010-05-27 2013-02-06 富士通株式会社 中继装置、中继系统、中继方法、程序以及记录了程序的计算机可读取的记录介质
KR101463462B1 (ko) * 2013-04-05 2014-11-21 국방과학연구소 다중 네트워크 디바이스를 지원하는 파티션 기반 시스템의 통신 관리 장치
JP2015162225A (ja) * 2014-02-28 2015-09-07 セコムトラストシステムズ株式会社 ウェブ中継サーバ装置、及びウェブページ閲覧システム

Also Published As

Publication number Publication date
WO2007066333A1 (en) 2007-06-14
US20070180509A1 (en) 2007-08-02
EP1958116A1 (en) 2008-08-20
IL191687A0 (en) 2009-02-11

Similar Documents

Publication Publication Date Title
JP2009521020A (ja) 高リスクアプリケーション用の実用的プラットフォーム
US10516533B2 (en) Password triggered trusted encryption key deletion
Parno et al. Bootstrapping trust in modern computers
Challener et al. A practical guide to trusted computing
KR101176646B1 (ko) 상태 검증을 사용하는 보호된 오퍼레이팅 시스템 부팅을 위한 시스템 및 방법
US11947688B2 (en) Secure computing system
US10162975B2 (en) Secure computing system
US8474032B2 (en) Firewall+ storage apparatus, method and system
US9455955B2 (en) Customizable storage controller with integrated F+ storage firewall protection
US8335931B2 (en) Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments
US8505103B2 (en) Hardware trust anchor
US8122256B2 (en) Secure bytecode instrumentation facility
Lindqvist et al. A map of security risks associated with using COTS
Martin The ten-page introduction to Trusted Computing
Freeman et al. Programming. NET Security: Writing Secure Applications Using C# or Visual Basic. NET
Yao et al. Building secure firmware
Safford et al. A trusted linux client (tlc)
Sisinni Verification of software integrity in distributed systems
Paulus et al. Security architecture for device encryption and VPN
Sharp Security in Operating Systems
Safford et al. Trusted computing and open source
Zhao Authentication and Data Protection under Strong Adversarial Model
Rabaiotti Counter intrusion software: Malware detection using structural and behavioural features and machine learning
Rossow TPM 2.0, UEFI and their Impact on Security and Users’ Freedom
Rabaiotti Counter Intrusion Software

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110712

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111207