(57)【特許請求の範囲】
【請求項１】
暗号化を実施する方法であって、
プロセッサが、コンピューティング装置の非暗号化ボリュームを暗号化するための要求をユーザから受け取り、
前記プロセッサが、前記非暗号化ボリュームを暗号化するためのボリュームキーを取得し、
前記プロセッサが、非暗号化データを含む複数の非暗号化部分及び一時的なオフセットスペースに前記非暗号化ボリュームを分割することによって、前記非暗号化ボリュームを暗号化可能なボリュームに変換し、前記一時的なオフセットスペースは、前記非暗号化部分を暗号化するのに使用されるスクラッチデータを記憶し、かつ前記暗号化可能なボリューム上の暗号化部分と非暗号化部分との間の位置に配置され、
前記プロセッサが、前記ボリュームキーに基づいて、前記複数の非暗号化部分を１つずつ順次暗号化し、暗号化された各暗号化部分は、現在暗号化対象となっている非暗号化部分とは異なる非暗号化部分を以前に保持していた前記暗号化可能なボリューム上の位置に記憶され、
前記複数の非暗号化部分の１つを暗号化した後ごとに、前記プロセッサが、前記暗号化可能なボリューム上の前記一時的なオフセットスペースを、前記暗号化部分と、まだ暗号化対象となっていない非暗号化部分との間の新しい位置にシフトし、現在暗号化対象となっている非暗号化部分の一時的なコピーがワーキングスペースに記憶され、前記ユーザは、現在暗号化対象となっている非暗号化部分の代わりに、前記一時的なコピーにアクセスする、方法。
【請求項２】
前記プロセッサが、暗号化進行状態を維持し、及び
前記プロセッサが、暗号化進行状態をユーザに表示する、
段階を更に含む請求項１に記載の方法。
【請求項３】
前記プロセッサが、前記非暗号化ボリュームへのユーザディスクアクセスをモニタリングする段階をさらに含み、
前記ユーザディスクアクセスの数が第１の閾値を超えたとき、前記ユーザディスクアクセスの数が、第２の閾値未満に下がるまで、暗号化を一時的に停止するバックオフアルゴリズムを前記プロセッサが適用する、請求項１に記載の方法。
【請求項４】
前記プロセッサが、前記非暗号化ボリュームに前記ワーキングスペースを予約する段階を更に含む、請求項１に記載の方法。
【請求項５】
前記ワーキングスペースは、ファイルシステムメタデータを更に記憶する、請求項４に記載の方法。
【請求項６】
前記非暗号化ボリュームを暗号化可能なボリュームに変換する段階は、前記非暗号化ボリュームを収縮させて、現在暗号化対象となっている非暗号化部分の一時的なコピーを記憶する前記ワーキングスペースのための余地を作ることを更に含む、請求項４に記載の方法。
【請求項７】
前記複数の非暗号化部分を１つずつ順次暗号化する前記段階は、
前記プロセッサが、各非暗号化部分を読み取り、
前記プロセッサが、前記各非暗号化部分のコピーをメモリに記憶し、
前記プロセッサが、メモリにおける前記各非暗号化部分の前記コピーを暗号化して、各暗号化部分を生じさせ、
前記プロセッサが、前記各非暗号化部分の前記一時的なコピーを生成し、及び
前記プロセッサが、前記各暗号化部分を一時的な位置に記憶する、
ことを更に含み、前記一時的な位置は、前記各暗号化部分の永久的な位置となり、そして先の非暗号化部分は、次の非暗号化部分を暗号化したものを保持するための新たな一時的な位置となる、請求項１に記載の方法。
【請求項８】
前記暗号化部分は、均一サイズである、請求項１に記載の方法。
【請求項９】
前記複数の非暗号化部分を１つずつ順次暗号化する前記段階は、コンピューティング装置の再ブート、コンピューティング装置の停電、又はコンピューティング装置の致命的システムエラーのうちの少なくとも１つの後にデータロスなしに一貫した状態で続ける、請求項１に記載の方法。
【請求項１０】
前記暗号化部分は、非暗号化ボリュームの物理的特性、非暗号化ボリュームで実行されるオペレーティングシステムの属性、ユーザアクション、性能事項、電力消費事項、ノイズ事項、熱スレッシュホールド事項、又はコンピューティング装置のスリープ状態、の少なくとも１つに基づいて適応するサイズとされる、請求項９に記載の方法。
【請求項１１】
プロセッサと、
少なくとも１つの区画を有する記憶装置と、
前記記憶装置の少なくとも１つの区画の少なくとも一部分に存在して前記プロセッサを制御するオペレーティングシステムと、
前記記憶装置の非暗号化区画を暗号化するように前記プロセッサを制御するように構成された暗号化モジュールと、を備えるコンピューティング装置であって、
前記プロセッサが、
ユーザから暗号化要求を受け取り、
暗号化ボリュームキーを取得し、
非暗号化データを含む複数の非暗号化領域及び一時的なオフセットスペースに前記非暗号化区画を分割することによって、前記非暗号化区画を暗号化可能な区画に変換し、前記一時的なオフセットスペースは、前記非暗号化領域を暗号化するのに使用されるスクラッチデータを記憶し、かつ前記暗号化可能な区画上の暗号化領域と非暗号化領域との間の位置に配置され、
前記ボリュームキーに基づいて、前記複数の非暗号化領域を１つずつ順次暗号化し、暗号化された各暗号化領域は、現在暗号化対象となっている非暗号化領域とは異なる非暗号化領域を以前に保持していた前記暗号化可能な区画上の位置に記憶され、
前記複数の非暗号化領域の１つを暗号化した後ごとに、前記暗号化可能な区画上の前記一時的なオフセットスペースを、前記暗号化領域と、まだ暗号化対象となっていない非暗号化領域との間の新しい位置にシフトし、現在暗号化対象となっている非暗号化領域の一時的なコピーがワーキングスペースに記憶され、前記ユーザは、現在暗号化対象となっている非暗号化領域の代わりに、前記一時的なコピーにアクセスし、
前記コンピューティング装置は、さらに、前記記憶装置の暗号化区画を解読するように前記プロセッサを制御するように構成された解読モジュールを備え、
前記プロセッサが、
解読要求を受け取り、
前記暗号化区画に関連した解読ボリュームキーを検索し、及び
前記解読ボリュームキーに基づいて、前記暗号化区画を領域ごとに解読して、ユーザが解読中に前記暗号化区画が既に解読されたかのように前記コンピューティング装置を使用できるようにする、コンピューティング装置。
【請求項１２】
前記暗号化モジュールは、更に、非暗号化区画を暗号化する進行の指示を表示するように前記プロセッサを制御するよう構成された、請求項１１に記載のコンピューティング装置。
【請求項１３】
前記コンピューティング装置のオペレーティングシステムと前記非暗号化区画との間に存在する中間レイヤが前記非暗号化区画を暗号化する、請求項１１に記載のコンピューティング装置。
【請求項１４】
コンピューティング装置により実行されたときに、コンピューティング装置が、
コンピューティング装置のボリュームにおける非暗号化区画を暗号化するための要求をユーザから受け取り、
前記要求に基づいて、前記非暗号化区画を暗号化するためのボリュームキーを発生し、
非暗号化データを含む複数の非暗号化チャンク及び一時的なオフセットスペースに前記非暗号化区画を分割することによって、前記非暗号化区画を暗号化可能な区画に変換し、前記一時的なオフセットスペースは、前記非暗号化チャンクを暗号化するのに使用されるスクラッチデータを記憶し、かつ前記暗号化可能な区画上の暗号化チャンクと非暗号化チャンクとの間の位置に配置され、
前記ボリュームキーに基づいて、前記複数の非暗号化チャンクを１つずつ順次暗号化し、暗号化された各暗号化チャンクは、現在暗号化対象となっている非暗号化チャンクとは異なる非暗号化チャンクを以前に保持していた前記暗号化可能な区画上の位置に記憶され、
前記複数の非暗号化チャンクの１つを暗号化した後ごとに、前記暗号化可能な区画上の前記一時的なオフセットスペースを、前記暗号化チャンクと、まだ暗号化対象となっていない非暗号化チャンクとの間の新しい位置にシフトし、現在暗号化対象となっている非暗号化チャンクの一時的なコピーがワーキングスペースに記憶され、前記ユーザは、現在暗号化対象となっている非暗号化チャンクの代わりに、前記一時的なコピーにアクセスする、
ことを含む方法を遂行するようにさせるインストラクションを記憶する非一時的コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置の暗号化に関するもので、より詳細には、ユーザがコンピュータを使用し続ける間にコンピュータの記憶装置をインプレース暗号化することに関する。
【０００２】
（関連出願の相互参照）
本願は、２０１１年１月５日に出願された“SYSTEM AND METHOD FOR IN-PLACE ENCRYPTION”と題する米国特許出願第１２／９８５，１９０号の優先権を主張するものであり、この出願は、参考としてここにそのまま援用される。
【背景技術】
【０００３】
記憶装置の容量や遍在性が高まるにつれて、多くのユーザや組織では、当然、記憶されたデータの安全性に関心が集まった。ユーザがデータの安全性を希望するところの幾つかの脅威は、アイデンティティの盗用、会社のスパイ活動、プライバシーの侵害、ハッカー等を含む。記憶装置に記憶されたデータは、物理的な記憶装置の盗難や、ネットワークベースの攻撃を経ての無断アクセスを受け易い。会社は、典型的に、秘密のユーザデータや取引上の機密事項の安全確保を心配し、一方、個々のユーザは、典型的に、銀行口座情報、個人的データ、等の個人的情報の偶発的な漏洩を心配する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データを安全確保する１つの解決策は、暗号である。暗号は、物理的な記憶装置の盗難を防止するものではないが、暗号パスワードがなければ、物理的な記憶装置に記憶されたデータを無効にする。今日の市場には、ＴｒｕｅＣｒｙｐｔ、ＦｒｅｅＯＴＦＥ及びＣｒｏｓｓＣｒｙｐｔのような多数の商業的、一体型及びオープンソースの暗号オプションが存在する。そのような暗号、特に、より安全なフル・ディスク暗号の採用に対する最大の障壁は、非暗号型ドライブの暗号化に必要な時間及びそれに関連した不便さである。記憶装置のサイズ、プロセッサの速度及び暗号化アルゴリズムにもよるが、パーソナルコンピュータは、ドライブを暗号化するのに８時間又はそれ以上を要する。この時間中、ユーザは、コンピュータを他のコンピューティングタスクに使用することができない。例えば、ＴｒｕｅＣｒｙｐｔの１つのオンラインチュートリアル（http://www.randyjensenonline.com/blog/using-truecrypt-to-encrypt-your-entire-hard-driveに見られる）は、次のように言うことで記憶装置の暗号化の現状を要約している。即ち、「‘暗号化’ボタンをクリックするだけで、ワイプモード及び暗号アルゴリズムに基づき、カップ一杯のコーヒーを飲みに行くか又はベッドに行ってそれを夜通し走らせよう」。従って、多くのユーザは、記憶装置を暗号化する必要性を感じているが、記憶装置の暗号化に関連した時間及び苦労のために、そのようにしていない。
【課題を解決するための手段】
【０００５】
本開示の付加的な特徴及び効果は、以下の説明に述べられ、又、一部分は、以下の説明から明らかとなり、又、ここに開示する原理を実施することにより学習できるであろう。本開示の特徴及び効果は、特許請求の範囲に特に指摘された手段及びその組み合わせにより実現され、得ることができよう。本開示のそれら及び他の特徴は、以下の説明及び特許請求の範囲から充分に明らかとなるであろうし、又はここに開示する原理を実施することにより学習できるであろう。
【０００６】
記憶ボリュームを暗号化するためのシステム、方法、及び非一時的なコンピュータ読み取り可能な記憶媒体が開示される。方法を実施するように構成されたシステムは、先ず、コンピューティング装置の非暗号化ボリュームを暗号化するための要求をユーザから受け取る。システムは、ボリュームキーを識別し、発生し、及び／又はランダムに選択し、そして非暗号化ボリュームを暗号化可能なフォーマットへと変換して、各部分に分割される暗号化可能なボリュームを生成する。次いで、システムは、ボリュームキーに基づいて、暗号化可能なボリュームを部分ごとに暗号化し、ユーザが暗号化中にコンピューティング装置を使用できるようにする。システムは、直線的解決策、ランダム解決策、未使用部分解決策、及び／又は重要順解決策を使用して、暗号化可能なボリュームを部分ごとに暗号化することができる。システムは、暗号化可能なボリュームにワークスペースを予約し、そして各部分が暗号化されるときに各部分のコピーをワークスペースに記憶することができる。又、ワークスペースは、ファイルシステムメタデータも記憶できる。あるケースでは、システムは、非暗号化ボリュームを収縮して、ワークスペースのための余地を作る。従って、記憶装置が暗号化される間にユーザがコンピュータを通常に使用できるとの新たな結果が得られ、暗号化の広範囲な採用を妨げている最大の障害の１つを取り除くことができる。別の新たな結果は、予定の又は偶発的な停電又は再始動事象の後にデータロスなくシステムが一貫した状態で装置の暗号化を再開できることである。
【０００７】
システムは、暗号化の進行状態をシステム再ブートにわたって均一に維持しそして暗号化の進行状態をユーザに表示することができる。暗号化中に通常の使用を促進し、そして記憶装置の過剰負担を回避するために、システムは、暗号化可能なボリュームへのユーザディスクアクセスを監視し、そしてユーザディスクアクセスが第１スレッシュホールドを越えたときには、バックオフアルゴリズムを適用して、ユーザディスクアクセスが第２スレッシュホールドより下がるまで、或いは他の所定の又はランダムな期間中に、暗号化を一時的に停止する。システムは、各部分が暗号化される間にコンピューティング装置が各部分との情報トランザクションを要求するときに、その情報トランザクションを各部分の一時的コピーへリダイレクトする。任意であるが、システムは、各部分が首尾良く暗号化されるまで（又は解読の場合には解読されるまで）情報トランザクションを遅延することができる。この解決策により導入される遅延は、ユーザにとって見掛け上最小に過ぎないか、ユーザが遅延に全く気付かないかである。
【０００８】
システムは、各部分を読み取り、各部分のコピーをメモリに記憶し、メモリ内の各部分のコピーを暗号化して各暗号化部分を生じさせ、各部分の一時的コピーを生成し、そして各部分のアクセス結果を各部分の一時的コピーへ一時的にリダイレクトすることにより、暗号化可能なボリュームを部分ごとに暗号化することができる。暗号化部分は、一時的な位置に記憶され、この一時的な位置は、各暗号化部分の永久的な位置となり、そして古い非暗号化部分は、別の部分の暗号化形態を保持するための一時的な位置となる。それらの部分は、セグメント、セクタ、トラック、シリンダ、ヘッドのような均一サイズでもよいし、又は適応サイズでもよい。それらの部分は、非暗号化ボリュームの物理的特性、非暗号化ボリュームで実行されるオペレーティングシステムの属性、ユーザアクション、性能事項、電力消費事項、ノイズ事項、熱スレッシュホールド事項、及びコンピューティング装置のスリープ状態、の少なくとも１つに基づいて適応するサイズとすることができる。１つの観点では、システムは、低電力状態へいつ移動するか決定するためにシステムがどれほど長く「アイドル」であったか考慮するときにインプレース暗号化又は解読のためになされるディスクアクセスを無視する。
【０００９】
システムは、プロセッサと、少なくとも１つの区画（partition）を有する記憶装置と、該記憶装置の少なくとも１つの区画の少なくとも一部分に存在してプロセッサを制御するオペレーティングシステムとを備えている。システムは、ユーザから暗号化要求を受け取り、暗号化ボリュームキーを識別し、非暗号化区画を暗号化可能なフォーマットへ変換して、領域へ分割される暗号化可能な区画を生じさせ、そして暗号化ボリュームキーに基づき、暗号化可能な区画を領域ごとに暗号化して、ユーザが暗号化の間にコンピューティング装置を使用できるようにすることにより、少なくとも１つの区画の非暗号化区画を暗号化するようにプロセッサを制御するよう構成された暗号化モジュールを備えている。システムは、解読要求を受け取り、暗号化区画に関連した解読ボリュームキーを検索し、そしてその解読ボリュームキーに基づき、暗号化区画をブロックごとに解読して、ユーザが解読中に暗号化区画が既に解読されたかのようにコンピューティング装置を使用できるようにすることにより、少なくとも１つの区画の暗号化区画を解読するようにプロセッサを制御するよう構成された解読モジュールを備えている。
【００１０】
ここに述べる解決策は、ユーザが、データ一貫性で且つデータロスなく暗号化プロセス中にオペレーティングシステムを通常の形態で使用できる能力を保持しながら、オペレーティングシステムを記憶している記憶装置の暗号化を開始できるようにする。
【００１１】
本開示の前記及び他の効果及び特徴を得ることのできる仕方を説明するために、前記で簡単に述べた原理を、添付図面に示された特定の実施形態を参照して、より詳細に説明する。添付図面が本開示の例示的実施形態のみを描き、それ故、本開示の範囲を限定するものでないことを理解して、添付図面を使用することにより、ここに原理を更に特定に且つ詳細に説明する。
【図面の簡単な説明】
【００１２】
【図１】例示的なシステムの実施形態を示す。
【図２】非暗号化記憶ボリューム及び暗号化記憶ボリュームを示す。
【図３】インプレース暗号化中にファイルシステムのオペレーティングシステム要求をインターセプトするレイヤを示す。
【図４】インプレース暗号化中のボリュームの例示的な変換を示す。
【図５】インプレース暗号化を遂行するための例示的方法の実施形態を示す。
【発明を実施するための形態】
【００１３】
本開示の種々の実施形態を以下に詳細に述べる。特定の実施形態について述べるが、それは、例示に過ぎないことを理解されたい。当業者であれば、本開示の精神及び範囲から逸脱せずに他のコンポーネント及び構成も使用できることが明らかであろう。
【００１４】
本開示は、暗号化をイネーブルし及びディスエイブルするためのユーザの経験を合理化し及び簡単化する技術の必要性に向けられる。その概念を実施するのに使用できる図１の基本的な汎用システム又はコンピューティング装置の簡単な前置きの説明を行う。それに続いて、インプレース暗号化のための方法及び解決策の詳細な説明を行う。複数の変形例を種々の実施形態として説明する。先ず、図１について説明する。
【００１５】
図１を参照すれば、例示的システム１００は、処理ユニット（ＣＰＵ又はプロセッサ）１２０及びシステムバス１１０を備えた汎用コンピューティング装置１００であり、システムバス１１０は、リードオンリメモリ（ＲＯＭ）１４０及びランダムアクセスメモリ（ＲＡＭ）１５０のようなシステムメモリ１３０を含む種々のシステムコンポーネントをプロセッサ１２０に結合する。システム１００は、プロセッサ１２０に直結されるか、その付近にあるか又はその一部分として一体化される高速メモリのキャッシュ１２２を備えている。システム１００は、メモリ１３０及び／又は記憶装置１６０からのデータを、プロセッサ１２０によって急速にアクセスするためにキャッシュへコピーする。このように、キャッシュは、データを待機する間のプロセッサ１２０の遅れを回避する性能向上を与える。これら及び他のモジュールは、種々のアクションを遂行するようにプロセッサ１２０を制御するか、又は制御するように構成される。他のシステムメモリ１３０も使用することができる。メモリ１３０は、性能特性の異なる複数の異なる形式のメモリを含む。本開示は、２つ以上のプロセッサ１２０を伴うコンピューティング装置１００において動作するか、或いはより高い処理能力を与えるように一緒にネットワーク化されたコンピューティング装置のグループ又はクラスターにおいて動作することが明らかであろう。プロセッサ１２０は、汎用プロセッサを含み、そして記憶装置１６０に記憶されたモジュール１  １６２、モジュール２  １６４及びモジュール３  １６６のようなハードウェアモジュール又はソフトウェアモジュールは、プロセッサ１２０、及びソフトウェアインストラクションが実際にプロセッサ設計に合体された特殊目的プロセッサを制御するように構成される。プロセッサ１２０は、本質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ、等を含む完全な自蔵型コンピューティングシステムである。マルチコアプロセッサは、対称的でも非対称的でもよい。
【００１６】
システムバス１１０は、種々のバスアーキテクチャーのいずれかを使用するメモリバス又はメモリコントローラ、周辺バス、及びローカルバスを含む多数の形式のバス構造のいずれかである。ＲＯＭ１４０等に記憶される基本的な入力／出力（ＢＩＯＳ）は、例えば、始動中に、コンピューティング装置１００内の要素間に情報を転送する上で助けとなる基本的なルーチンを与える。コンピューティング装置１００は、ハードディスクドライブ、磁気ディスクドライブ、光学的ディスクドライブ、テープドライブ、等の記憶装置１６０を更に備えている。記憶装置１６０は、プロセッサ１２０を制御するためのソフトウェアモジュール１６２、１６４、１６６を含む。他のハードウェア又はソフトウェアモジュールも意図される。記憶装置１６０は、ドライブインターフェイスによりシステムバス１１０に接続される。ドライブ及びそれに関連したコンピュータ読み取り可能な記憶媒体は、コンピューティング装置１００のためのコンピュータ読み取り可能なインストラクション、データ構造体、プログラムモジュール及び他のデータの不揮発性記憶を与える。１つの態様において、特定のファンクションを遂行するハードウェアモジュールは、そのファンクションを遂行するために、プロセッサ１２０、バス１１０、ディスプレイ１７０、等の必要なハードウェアコンポーネントに関連して、非一時的コンピュータ読み取り可能な媒体に記憶されたソフトウェアコンポーネントを含む。基本的なコンポーネントは、当業者に知られており、そして装置１００が小型のハンドヘルドコンピューティング装置であるか、デスクトップコンピュータであるか、又はコンピュータサーバーであるかといった装置の形式に基づいて適当な変更が意図される。
【００１７】
ここに述べる例示的な実施形態は、ハードディスク１６０を使用しているが、当業者であれば、コンピュータによりアクセス可能なデータを記憶する他の形式のコンピュータ読み取り可能な媒体、例えば、磁気カセット、フラッシュメモリカード、デジタル多様性ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）１５０、リードオンリメモリ（ＲＯＭ）１４０、ビットストリーム等を含むケーブル又はワイヤレス信号も、例示的なオペレーティング環境に使用できることが明らかであろう。非一時的なコンピュータ読み取り可能な記憶媒体は、エネルギー、搬送波信号、電磁波、信号それ自体のような媒体を明確に除外する。
【００１８】
ユーザがコンピューティング装置１００と相互作用できるようにするために、入力装置１９０は、スピーチ用のマイクロホン、ジェスチャー又はグラフィック入力用のタッチ感知スクリーン、キーボード、マウス、モーション入力、スピーチ、等の多数の入力メカニズムを表わす。又、出力装置１７０は、当業者に知られた多数の出力メカニズムの１つ以上である。ある例において、マルチモードシステムは、ユーザがコンピューティング装置１００と通信するための多数の形式の入力を与えることができるようにする。通信インターフェイス１８０は、一般的に、ユーザ入力及びシステム出力を支配し管理する。特定のハードウェア構成における動作には制約がなく、それ故、ここに述べる基本的な特徴は、改良されたハードウェア又はファームウェア構成が開発されたときにそれに容易に置き換えることができる。
【００１９】
説明を明瞭にするために、ここに示すシステムの実施形態は、「プロセッサ」又はプロセッサ１２０として示された機能的ブロックを含む個々の機能的ブロックを包含するものとして提示される。これらのブロックが表わす機能は、共用又は専用ハードウェアの使用を通して与えられ、そのハードウェアは、汎用プロセッサ上で実行されるソフトウェアと同等のものとして動作するために特別に作られたプロセッサ１２０のようなソフトウェア及びハードウェアを実行できるハードウェアを含むが、それに限定されない。例えば、図１に示す１つ以上のプロセッサの機能は、単一の共用プロセッサ又は複数のプロセッサにより与えられる。（「プロセッサ」という語の使用は、ソフトウェアを実行できるハードウェアを排他的に指すものと解釈してはならない。）ここに示す実施形態は、マイクロプロセッサ及び／又はデジタル信号プロセッサ（ＤＳＰ）ハードウェア、以下に述べる動作を遂行するためのソフトウェアを記憶するリードオンリメモリ（ＲＯＭ）１４０、及び結果を記憶するためのランダムアクセスメモリ（ＲＡＭ）１５０を備えている。超大規模集積（ＶＬＳＩ）ハードウェア実施形態や、汎用ＤＳＰ回路と組み合わされたカスタムＶＬＳＩ回路も設けられる。
【００２０】
種々の実施形態の論理的動作は、（１）一般的使用のコンピュータ内のプログラム可能な回路で実行されるコンピュータ実施ステップ、動作又は手順のシーケンス、（２）特殊使用のプログラム可能な回路で実行されるコンピュータ実施ステップ、動作又は手順のシーケンス、及び／又は（３）プログラム可能な回路内の相互接続されたマシンモジュール又はプログラムエンジン、として実施される。図１に示すシステム１００は、ここに示す方法の全部又は一部分を実施することができ、ここに示すシステムの一部分であり、及び／又はここに示す非一時的コンピュータ読み取り可能な記憶媒体のインストラクションに従って動作することができる。そのような論理的動作は、モジュールのプログラミングに従って特定の機能を遂行するためにプロセッサ１２０を制御するよう構成されたモジュールとして実施される。例えば、図１は、３つのモジュールＭｏｄ１  １６２、Ｍｏｄ２  １６４及びＭｏｄ３  １６６を示しており、これらは、プロセッサ１２０を制御するように構成されたモジュールである。これらのモジュールは、記憶装置１６０に記憶されて、ランタイムにＲＡＭ１５０又はメモリ１３０にロードされてもよいし、或いは当業者に良く知られたように、他のコンピュータ読み取り可能なメモリ位置に記憶されてもよい。
【００２１】
幾つかの基本的なシステムコンポーネントを開示したが、ここで、インプレース暗号化の説明に戻る。高いレベルで、インプレース暗号化及び解読がコンピューティング装置において「背景で」遂行され、その間に、ユーザ、オペレーティングシステム及び他のプログラムは、コンピューティング装置を繋ぎ目のない通常の形態で使用し続けることができる。ハードドライブのための全暗号化又は解読プロセスは、数時間続くが、ここに述べるインプレース解決策は、データの完全性を維持しながら安全で且つ一貫したアトミックな仕方で暗号化又は解読を遂行し、そして暗号化又は解読を遂行する間にユーザを中断させたり又は著しく妨げたりすることはない。
【００２２】
図２は、非暗号化記憶ボリューム２０２及び暗号化記憶ボリューム２０４を示す。各々のケースにおいて、記憶ボリュームは、ユーザがユーザデータを記憶する第１部分と、オペレーティングシステム及び／又は記憶ボリュームがメタデータを記憶する第２部分とを含む。システムは、非暗号化記憶ボリューム２０２をリアルタイムで暗号化記憶ボリューム２０４へ変換できるが、この解決策は、一時的オフセットスペースの生成を考慮に入れるために、暗号化記憶ボリュームの利用可能なサイズを非暗号化記憶ボリュームより若干小さくする必要がある。一時的オフセットスペースは、データが失われないように、且つそのボリュームが暗号化されている間にユーザがそのボリュームのデータへのアクセスを続けられるように、アトミック暗号化動作を促進する。
【００２３】
図３は、インプレース暗号化３００中にファイルシステム３１０のオペレーティングシステム３０２要求をインターセプトするレイヤ３０６を示す。ファイルシステムが暗号化される間に、オペレーティングシステム３０２は、ファイルシステムレイヤ３０６及びインプレース暗号化レイヤ３１０又は同様のアプリケーションプログラミングインターフェイス（ＡＰＩ）を経てファイルシステムＩ／Ｏ要求３０４を送信する。ファイルシステム３０６は、特定ファイルの所与の位置に読み取り／書き込みを行うためのファイルＩ／Ｏ３０４要求を、ディスク上の特定ブロック／セクタに読み取り／書き込みを行うためのブロックＩ／Ｏ要求３０８へと変換し、次いで、暗号化レイヤ３１０は、その要求３０８をディスク／区画上の異なるブロックへと変換し、必要な暗号化又は解読を任意に遂行する。暗号化レイヤは、変換された要求３１２を記憶装置区画（storage device partition）３１４に与える。暗号化レイヤ３１０は、ファイルシステム３０６について何も知らない。次いで、データは、ファイルシステム３０６及びインプレース暗号化レイヤ３１０を通してオペレーティングシステム３０２へ返送される。インプレース暗号化レイヤ３１０は、各記憶装置動作又は記憶装置へのアクセス要求をインターセプトする。暗号化レイヤ３１０は、任意の望ましい構成においてＩ／Ｏコールをインターセプトしそして変換する。例えば、システムは、インプレース暗号化プロセスの一部分としてデータをシフトし、シャフルし、さもなければ、再順序付けすることができる。
【００２４】
図４は、インプレース暗号化中のボリュームの例示的変換４００を示す。上部ドライブ４０２は、暗号化されている中間部におけるドライブの概念的レイアウトであり、暗号化部分、非暗号化部分、及び予約メタデータ部分を有する。下部ドライブ４０４は、同じドライブの概念的レイアウトの実際の表現である。矢印は、オフセット４０６が暗号化部分と非暗号化部分との間のスペースを占有することを示す。オフセット４０６は、ファイルシステムメタデータと、インプレース暗号化に使用される「スクラッチ」データとを記憶する。オペレーティングシステムは、ドライブに、それが概念的レイアウト４０２であるかのようにコールを発し、そして変換レイヤは、それらコールを実際の表現４０４へ変換する。オフセット４０６は、システムが特定の区分を暗号化するよう動作する間に、ドライブ４０４を通して区分ごとにシフトする。直線的解決策では、オフセット４０６は、全ドライブ上の各単一ブロックが暗号化されるか又はオーバーライトされるまで、左から右へシフトする。システムは、次の非暗号化ブロックを読み取り、そのブロックをメモリにおいて暗号化し、そしてその新たに暗号化されたブロックをドライブ上の新たな位置へ書き戻す。次いで、システムは、キャッシュをフラッシュすると共に、それに対応するメタデータをフラッシュする。
【００２５】
図４に示すレイアウトの１つの変形例では、暗号化データが右側にあり、そして非暗号化データが左側にあり、インプレース暗号化が進行するにつれて、スクラッチオフセット部分が右から左へシフトする。インプレース暗号化解決策は、記憶装置を任意の方向に処理し、そして装置の開始、装置の終了、及びそれらの間の点を含めて、任意に点でスタートすることができる。
【００２６】
１つの態様において、システムは、暗号化をイネーブルするためにドライブ区画形式を変更しなければならず、例えば、ＨＦＳ＋ドライブをＣｏｒｅＳｔｏｒａｇｅドライブへと変換しなければならない。又、システムは、ファイルアクセス又はファイルコピーのようなユーザ動作（又は「通常」Ｉ／Ｏ）にプライオリティを与えるために暗号化動作を中止することもできる。ユーザは、システムが暗号化動作をどのように、いつ、そしてどの程度長く中止するか支配する暗号化のための望ましいプライオリティ又はスケジュールをセットすることができる。暗号化動作が他の「背景」Ｉ／Ｏ動作と競合する場合には、望ましい結果に基づき、システムが両方を実行することもできるし、又は暗号化動作を止めて他の「背景」Ｉ／Ｏ動作を待機することもできる。暗号化動作よりも全ての他のＩ／Ｏ動作を先行して行うのを許すと、ドライブを暗号化するのに全体的に非常に長い時間を要するようになり、一方、より積極的な暗号化解決策は、所要時間が短くなるが、暗号化が行われている間にコンピューティング装置で遂行される他の動作が低速になる。
【００２７】
更に、暗号化されたドライブを解読するのに同じ原理を適用することができる。ユーザは、ドライブ解読要求を提出し、暗号化されたドライブに関連したパスワードを入力する。次いで、システムは、インプレース解読を背景において少しづつ行うが、ドライブの部分がまだ暗号化されていても、インプレース解読が完了するまで、ユーザは、パスワードを再び入力しなくてよい。解読時に、システムは、それが再ブートするときでも、ドライブを解読するためにユーザのパスワードにアクセスする必要が依然ある。パスワードを数回又はシステム再ブートごとにユーザに入力を促すことを回避するために、システムは、パスワードを得た後に、パスワードを特定のフォーマットで任意にエンコードし、そしてそのパスワードをブータのための特定位置に記憶する。しかしながら、システムは、パスワードを記憶しなくてもよい。この変形例では、ディスクを解読するのに暗号キーが必要とされる。その暗号キーは、通常、ユーザのパスワードを使用して暗号化される。ユーザが解読をスタートするとき、システムは、その暗号キーを、暗号化されていないが暗号化できるフォーマットでディスク上に記憶し、ボリュームにアクセスするのにユーザのパスワードがそれ以上必要とされないようにする。これは、悪意のあるソフトウェア又は他のユーザがパスワードにアクセスできるところのディスクにユーザのパスワードを記憶しないという利益がある。この解決策は、多くのユーザが同じパスワードを他の目的に使用し且つそのパスワードを秘密に保ちたいことから有益である。
【００２８】
ブータは、その特定の位置にロックし、パスワードを見、そしてシステムは、再ブート後でもデータロスなく、突然の停電なく、オペレーティングシステムのクラッシュなく、ハードウェアで生じるシステムエラーなく、及び／又はコンピューティング装置における他の致命的なシステムエラーなく、背景において一貫した状態で自動的に解読を続けることができる。マイクロソフトウインドウズのマシンでは、致命的なシステムエラーの一例は、ブルースクリーン・オブ・デス（ＢＳｏＤ）として一般的に知られているストップエラースクリーンである。Ｍａｃ  ＯＳ  Ｘマシン及び他のＢＳＤ  Ｕｎｉｘ（登録商標）ベースのシステムでは、致命的システムエラーの一例は、カーネルパニックである。Ｌｉｎｕｘ（登録商標）マシンでは、致命的システムエラーの一例は、カーネルウップスである。システムは、ログインフォワーディングを使用して、暗号パスワードをオペレーティングシステム又は他のパスワードに同期させることができる。
【００２９】
システムは、システムがドライブをインプレース暗号化又は解読している間に、ユーザが暗号化をスタート、ストップ及び再スタートできるようにする。システムは、ユーザがアクセスする間にユーザがアンラップのボリュームキーを得た（又は少なくともそれにアクセスした）との仮定に基づいて、ボリュームへのユーザアクセスが無効にされたときにドライブを新たな暗号キーで「再キーイング(rekey)」することができる。この再キーイングは、潜在的な漏洩キーによる困ったデータのおそれを軽減する。システムは、ボリュームキーをキー暗号化キーでラップすると共に、キー暗号化キーをゼロでラップすることができる。
【００３０】
幾つかの基本的システムコンポーネント及び暗号化の原理を開示したが、インプレース暗号化を遂行するための図５に示す例示的な方法実施形態について開示する。簡単化のために、この方法は、方法を実施するように構成された図１に示すような例示的システムに関して述べる。システム１００は、コンピューティング装置の非暗号化ボリュームを暗号化するための要求をユーザから受け取る（５０２）。この要求は、ボリュームの暗号化を直接的ターゲットとすることもできるし、ユーザアカウントの設定又はパスワードの変更のような別の要求の明示的又は暗示的部分であってもよい。システム１００は、ボリュームキーを識別し（５０４Ａ）、要求に基づいてボリュームキーを発生し（５０４Ｂ）、暗号化に関連した暗号キーをランダムに選択し、さもなければ、取得する。
【００３１】
システム１００は、非暗号化ボリュームを暗号化可能なフォーマットへ変換して、部分に分割される暗号化可能なボリュームを生じさせる。それらの部分は、均一なサイズであるか、又は適応サイズである。適応サイズの部分は、非暗号化ボリュームの物理的特性、非暗号化ボリュームで実行されるオペレーティングシステムの属性、ユーザアクション、性能的な事柄、電力消費の事柄、ノイズの事柄、熱スレッシュホールドの事柄、及び／又はコンピューティング装置のスリープ状態に基づくものである。
【００３２】
システム１００は、ボリュームキーに基づいて、暗号化可能なボリュームを部分ごとに暗号化し、ユーザが暗号化中にコンピューティング装置を使用できるようにする（５０８）。システムは、各部分が暗号化される間にコンピューティング装置が各部分との情報トランザクションを要求するときに、その情報トランザクションを各部分の一時的コピーへリダイレクトすることにより、ユーザがコンピューティング装置を通常の形態で使用できるようにする。システムは、直線的解決策、ランダム解決策、未使用部分解決策、及び／又は重要順解決策により、暗号化可能なボリュームを暗号化することができる。システムは、暗号化可能なボリュームにワークスペースを予約することができ、そして各部分が暗号化されるときに各部分のコピーをワークスペースに記憶することにより暗号化可能なボリュームを部分ごとに暗号化することができる。又、ワークスペースは、ファイルシステムメタデータも記憶できる。非暗号化ボリュームを暗号化可能なフォーマットに変換することは、非暗号化ボリュームを収縮して、ワークスペースのための余地を作ることを含む。システムは、各部分を読み取り、各部分のコピーをメモリに記憶し、メモリ内の各部分のコピーを暗号化して各暗号化部分を生じさせ、各部分の一時的コピーを生成することにより、暗号化可能なボリュームを部分ごとに暗号化することができる。システムは、暗号化された部分を一時的な位置に記憶し、この一時的な位置は、各暗号化部分の永久的な位置となり、そして古い非暗号化部分は、別の部分の暗号化形態を保持するための一時的な位置となる。
【００３３】
システムは、暗号化進行状態を維持し、そして進行バー、パーセンテージ、ドライブにおける暗号化対非暗号化部分の代表的な物理的レイアウトのグラフィックチャート、残りのブロック、暗号化されたバイト、等の暗号化進行状態をユーザに表示することができる。又、暗号化進行状態は、推定完了時間、暗号化に費やすＣＰＵ時間、及び／又は他の統計値も含む。
【００３４】
ユーザがコンピューティング装置を通常の状態で使用し続けるのを許すため、システムは、暗号化可能なボリュームへのユーザディスクアクセスを監視し、そしてユーザディスクアクセスが第１のスレッシュホールドを越えたときに、バックオフアルゴリズムを適用して、ユーザディスクアクセスが第２のスレッシュホールドより下がるまで暗号化を一時的にストップすることができる。これが有用であるのは、暗号化動作が非常にディスクＩ／Ｏ集中であり、ユーザ開始動作を低速化するためである。
【００３５】
別の実施形態では、システムは、プロセッサと、少なくとも１つの区画をもつ記憶装置と、記憶装置の少なくとも１つの区画の少なくとも一部分上にあってプロセッサをコントロールするオペレーティングシステムとを有するコンピューティング装置である。このコンピューティング装置は、ユーザから暗号化要求を受け取り、暗号化ボリュームキーを識別し、非暗号化区画を暗号化可能なフォーマットへ変換して、領域に分割される暗号化可能な区画を生じさせ、そして暗号化ボリュームキーに基づいて、暗号化可能な区画を領域ごとに暗号化して、ユーザが暗号化中にコンピューティング装置を使用できるようにすることにより、少なくとも１つの区画の非暗号化区画を暗号化するようにプロセッサを制御するよう構成された暗号化モジュールを備えている。又、コンピューティング装置は、解読要求を受け取り、暗号化区画に関連した解読ボリュームキーを検索し、そしてその解読ボリュームキーに基づき、暗号化区画をブロックごとに解読して、ユーザが解読中に暗号化区画が既に解読されたかのようにコンピューティング装置を使用できるようにすることにより、少なくとも１つの区画の暗号化区画を解読するようにプロセッサを制御するよう構成された解読モジュールを備えている。
【００３６】
少なくとも部分的に暗号化されそして部分に分割される記憶ボリュームを有するインプレース解読遂行システムが開示される。このシステムは、記憶ボリュームに関連したボリュームキーを受け取るようにプロセッサを制御するよう構成された第１のモジュールと、ボリュームキーに基づき、記憶ボリュームを部分ごとに解読して、ユーザが解読中に記憶ボリュームが既に解読されたかのように記憶ボリュームを使用できるようにプロセッサを制御するよう構成された第２のモジュールとを備えている。又、システムは、ブートローダにより読み取られる記憶装置にボリュームキーを記憶するようにプロセッサをコントロールするよう構成された第３のモジュールを備えていて、ブートローダがシステムブート時に最初に動作するとき、ブートローダがボリュームキーを読み取り、ボリュームキーに基づき記憶ボリュームの残りの暗号化部分へのアクセスを与え、そしてシステムがシャットダウンの前に解読をストップした同じ位置でシステムを再開させ、記憶ボリュームの残りの暗号化部分をボリュームキーに基づいて部分ごとに解読するようにする。
【００３７】
ここに開示する解決策は、ユーザが記憶装置の暗号化を開始し、そしてシステムが記憶装置を暗号化するプロセスにある間に記憶装置に記憶されたオペレーティングシステム又は他のアプリケーションのようなソフトウェアを使用し続けるのを許す。この解決策は、暗号化ドライブの設定に対する最初の障壁を緩和し、ユーザが全ディスク暗号化のセキュリティ及びプライバシーの利益の効果を容易に取り入れることができるようにする。
【００３８】
又、本開示の範囲内の実施形態は、コンピュータ実行可能なインストラクション又はデータ構造体を保持し又は記憶するための有形の及び／又は非一時的コンピュータ読み取り可能な記憶媒体も備えている。そのような非一時的コンピュータ読み取り可能な記憶媒体は、上述した特殊目的プロセッサの機能的設計を含めて汎用又は特殊目的コンピュータによりアクセスできる入手可能な媒体である。例えば、これに限定されないが、そのような非一時的コンピュータ読み取り可能な記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、又は他の光学的ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、或いはコンピュータ実行可能なインストラクション、データ構造体又はプロセッサチップ設計の形態で望ましいプログラムコード手段を保持し又は記憶するのに使用できる他の媒体を含む。情報がネットワーク又は別の通信接続（ハードワイヤード、ワイヤレス又はその組み合わせ）を経てコンピュータへ転送され又は供給されるときに、コンピュータは、接続をコンピュータ読み取り可能な媒体として適切に見る。従って、そのような接続は、コンピュータ読み取り可能な媒体と適切に称される。コンピュータ読み取り可能な媒体の範囲には、上述したことの組み合わせも含まれる。
【００３９】
コンピュータ実行可能なインストラクションは、例えば、汎用コンピュータ、特殊目的コンピュータ、又は特殊目的処理装置が、ある機能又は機能のグループを遂行するようにさせるインストラクション及びデータを含む。又、コンピュータ実行可能なインストラクションは、スタンドアローン又はネットワーク環境においてコンピュータにより実行されるプログラムモジュールも含む。一般的に、プログラムモジュールは、特定のタスクを遂行し又は特定のアブストラクトデータ形式を具現化する特殊目的プロセッサ等の設計に固有のルーチン、プログラム、コンポーネント、データ構造体、オブジェクト、及び機能を含む。コンピュータ実行可能なインストラクション、関連データ構造体、及びプログラムモジュールは、ここに開示する方法のステップを実行するためのプログラムコード手段の例を表わす。そのような実行可能なインストラクション又は関連データ構造体は、そのようなステップにおいて述べた機能を具現化するための対応するアクションの例を表わす。
【００４０】
当業者であれば、本開示の他の実施形態が、ネットワークコンピューティング環境において、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者向け電子装置、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、等を含む多数の形式のコンピュータシステム構成で具現化できることが明らかであろう。又、通信ネットワークを通して（ハードワイヤードリンク、ワイヤレスリンク、又はその組み合わせにより）リンクされたローカル及びリモート処理装置によりタスクが遂行される分散型コンピューティング環境において実施形態を具現化することもできる。分散型コンピューティング環境では、プログラムモジュールは、ローカル及びリモートの両メモリ記憶装置に配置される。
【００４１】
以上に述べた種々の実施形態は、単なる例示に過ぎず、本開示の範囲を限定するものではない。当業者であれば、ここに述べた原理に対して、ここに図示して説明した例示的な実施形態に従うことなく且つ本開示の精神及び範囲から逸脱せずに種々の変更や修正がなされ得ることが容易に認識されよう。
【符号の説明】
【００４２】
１００：コンピューティング装置
１１０：システムバス
１２０：プロセッサ
１２２：キャッシュ
１３０：メモリ
１４０：ＲＯＭ
１５０：ＲＡＭ
１６０：記憶装置
１７０：出力装置
１８０：通信インターフェイス
１９０：入力装置
【図１】
0005875601.tif 000002
【図２】
0005875601.tif 000003
【図３】
0005875601.tif 000004
【図４】
0005875601.tif 000005
【図５】
0005875601.tif 000006