(57)【要約】コンピュータシステム上でデータを暗号化及び復号する方法及びシステムを開示する。一実施例においては、システムは、モディファイドＵＮＩＸ（登録商標）オペレーティングシステムである暗号化オペレーティングシステム（ＥＯＳ）を含む。ＥＯＳは、対称暗号化アルゴリズムと暗号鍵を用いて、物理メモリから、例えば、ディスク、スワップデバイス、ネットワークファイルシステム、ネットワークバッファ、擬似ファイルシステム、又は物理メモリの外部にあって、データを保存できる他の何らかの構造であるセカンダリデバイスに転送されるデータを暗号化する。更に、ＥＯＳは、対称暗号化アルゴリズム及び暗号鍵を用いて、セカンダリデバイスから物理メモリに転送されるデータを復号する。他の実施例において、ＥＯＳは、暗号化されたデータの場所を見つけるために用いられるディレクトリ構造を暗号化することによって更なる機密保護のレイヤを実現する。更なる実施例では、データを暗号化及び復号する１つ以上の鍵へのアクセスを制御する鍵管理機能を用いたファイルへのアクセスが行われる前に、ユーザ又は処理を認証し、認証情報を検査する。
2006510958.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータメモリとセカンダリデバイスの間で転送されるデータを暗号化及び復号するよう構成されたカーネルを備えるコンピュータオペレーティングシステム。
【請求項２】
上記カーネルは、平文データを暗号化して暗号データを生成するよう構成され、及び該暗号データを復号して平文データを生成するよう構成された暗号化エンジンを備えることを特徴とする請求項１記載のコンピュータオペレーティングシステム。
【請求項３】
上記暗号化エンジンに接続され、上記暗号データを保存するよう構成されたメモリ部分を更に備える請求項２記載のコンピュータオペレーティングシステム。
【請求項４】
上記暗号化エンジンは、対称鍵暗号化アルゴリズムに基づいて、平文データを暗号化し及び暗号データを復号するよう構成されていることを特徴とする請求項２記載のコンピュータオペレーティングシステム。
【請求項５】
上記対称鍵暗号化アルゴリズムは、ブロック暗号に基づいていることを特徴とする請求項４記載のコンピュータオペレーティングシステム。
【請求項６】
上記対称鍵暗号化アルゴリズムは、ラインダールアルゴリズムを含むことを特徴とする請求項５記載のコンピュータオペレーティングシステム。
【請求項７】
上記対称鍵暗号化アルゴリズムは、１２８ビット、１９２ビット、２５６ビット、５１２ビット、１０２４ビット又は２０４８ビットのブロックサイズを用いることを特徴とする請求項６記載のコンピュータオペレーティングシステム。
【請求項８】
上記対称鍵暗号化アルゴリズムは、１２８ビット、１９２ビット、２５６ビット、５１２ビット、１０２４ビット又は２０４８ビットの鍵長を用いることを特徴とする請求項６記載のコンピュータオペレーティングシステム。
【請求項９】
上記対称鍵暗号化アルゴリズムは、ＤＥＳアルゴリズムを含むことを特徴とする請求項５記載のコンピュータオペレーティングシステム。
【請求項１０】
上記対称鍵暗号化アルゴリズムは、三重ＤＥＳアルゴリズムを含むことを特徴とする請求項５記載のコンピュータオペレーティングシステム。
【請求項１１】
上記対称鍵暗号化アルゴリズムは、ＩＤＥＡ、ブロウフィッシュ、ツーフィッシュ、ＣＡＳＴ−１２８からなるグループから選択されたアルゴリズムを含むことを特徴とする請求項５記載のコンピュータオペレーティングシステム。
【請求項１２】
上記カーネルは、ＵＮＩＸ（登録商標）オペレーティングシステムを含むことを特徴とする請求項１記載のコンピュータオペレーティングシステム。
【請求項１３】
上記ＵＮＩＸオペレーティングシステムは、システム５リビジョンであることを特徴とする請求項１２記載のコンピュータオペレーティングシステム。
【請求項１４】
上記メモリ部分は、暗号化されたファイルデータを保存するよう構成された、第１の論理的に保護されたメモリと、暗号化された鍵データを保存するよう構成された第２の論理的に保護されたメモリとを備えることを特徴とする請求項３記載のコンピュータオペレーティングシステム。
【請求項１５】
上記暗号化されたファイルデータと暗号化された鍵データへのアクセスを制御するよう構成された暗号鍵管理システムを更に備える請求項１４記載のコンピュータオペレーティングシステム。
【請求項１６】
上記暗号鍵管理システムは、パス鍵とファイル名とを受け取って暗号化されたファイル名鍵を生成し、該暗号化されたファイル名鍵とファイルコンテンツとを用いて暗号化されたファイルコンテンツ鍵を生成し、該暗号化されたファイルコンテンツ鍵を用いてファイルコンテンツを暗号化して暗号化されたファイルコンテンツを生成するよう構成された鍵エンジンを備えることを特徴とする請求項１５記載のコンピュータオペレーティングシステム。
【請求項１７】
上記暗号鍵管理システムは、暗号化されたファイルコンテンツに関連する暗号化されたファイル名を保存するよう構成されていることを特徴とする請求項１６記載のコンピュータオペレーティングシステム。
【請求項１８】
上記暗号鍵管理システムは、ファイルに対応するアクセス許可が所定の値である場合、ファイルへのアクセスを許可するように構成されていることを特徴とする請求項１７記載のコンピュータオペレーティングシステム。
【請求項１９】
上記セカンダリデバイスは、ファイルアブストラクションを用いてアクセスされることを特徴とする請求項１８記載のコンピュータオペレーティングシステム。
【請求項２０】
上記セカンダリデバイスは、バッキングストアであることを特徴とする請求項１９記載のコンピュータオペレーティングシステム。
【請求項２１】
上記セカンダリデバイスは、スワップデバイスであることを特徴とする請求項１９記載のコンピュータオペレーティングシステム。
【請求項２２】
上記セカンダリデバイスは、ソケット接続であることを特徴とする請求項１９記載のコンピュータオペレーティングシステム。
【請求項２３】
上記ソケット接続は、コンピュータネットワークを含むことを特徴とする請求項２２記載のコンピュータオペレーティングシステム。
【請求項２４】
上記コンピュータネットワークは、インターネットを含むことを特徴とする請求項２３記載のコンピュータオペレーティングシステム。
【請求項２５】
上記暗号鍵管理システムは、暗号化されたデータへのパス名を暗号化し、及び暗号化されたファイルコンテンツを読み出す場合、暗号化されたデータへのパス名を復号するように構成されていることを特徴とする請求項１７記載のコンピュータオペレーティングシステム。
【請求項２６】
ａ．暗号鍵を用いて平文データを暗号化し、暗号データを生成するよう構成され、及び暗号鍵を用いて暗号データを復号し、平文データを生成するよう構成されたオペレーティングシステムカーネルを有する第１のデバイスと、
ｂ．上記第１のデバイスに接続され、該第１のデバイスと暗号データを交換するよう構成された第２のデバイスとを備えるコンピュータシステム。
【請求項２７】
上記オペレーティングシステムカーネルは、対称アルゴリズムを用いて平文データを暗号化し及び暗号データを復号するよう構成されていることを特徴とする請求項２６記載のコンピュータシステム。
【請求項２８】
上記対称アルゴリズムは、ブロック暗号を含むことを特徴とする請求項２７記載のコンピュータシステム。
【請求項２９】
上記ブロック暗号は、ラインダールアルゴリズムを含むことを特徴とする請求項２８記載のコンピュータシステム。
【請求項３０】
上記暗号鍵は、少なくとも１０２４ビットを含むことを特徴とする請求項２９記載のコンピュータシステム。
【請求項３１】
上記第２のデバイスは、バッキングストアを含むことを特徴とする請求項２６記載のコンピュータシステム。
【請求項３２】
上記第２のデバイスは、スワップデバイスを含むことを特徴とする請求項２６記載のコンピュータシステム。
【請求項３３】
上記第２のデバイスは、通信チャンネルを含むことを特徴とする請求項２６記載のコンピュータシステム。
【請求項３４】
上記通信チャンネルは、ネットワークを含むことを特徴とする請求項３３記載のコンピュータシステム。
【請求項３５】
上記ネットワークは、インターネットを含むことを特徴とする請求項３４記載のコンピュータシステム。
【請求項３６】
ａ．平文データを受け取るステップと、
ｂ．オペレーティングシステムにおいて、対称鍵を用いて平文データを暗号化して暗号データを生成し、対称鍵を用いて暗号データを復号して平文データを生成するカーネルコードを実行するステップとを有するデータ暗号化方法。
【請求項３７】
上記対称鍵は、ブロック暗号に基づいて、平文データを暗号化して暗号データを生成することを特徴とする請求項３６記載のデータ暗号化方法。
【請求項３８】
上記ブロック暗号は、ラインダールアルゴリズムを含むことを特徴とする請求項３７記載のデータ暗号化方法。
【請求項３９】
上記ブロック暗号は、ＤＥＳ、三重ＤＥＳ、ブロウフィッシュ、ＩＤＥＡからなるグループから選択されるアルゴリズムを含むことを特徴とする請求項３７記載のデータ暗号化方法。
【請求項４０】
上記カーネルコードを実行するステップは、
ａ．パス鍵とファイル名を第１の暗号化処理に入力し、暗号化されたファイル名と暗号化されたファイル名鍵を生成するステップと、
ｂ．上記暗号化されたファイル名鍵を用いてファイルコンテンツを処理し、暗号化されたファイルコンテンツ鍵と暗号化されたファイルコンテンツを生成するステップとを有することを特徴とする請求項３６記載のデータ暗号化方法。
【請求項４１】
ａ．コンピュータストレージの第１の保護領域に上記暗号化されたファイル名鍵と暗号化されたファイルコンテンツ鍵を保存するステップと、
ｂ．コンピュータストレージの第２の保護領域に上記暗号化されたファイル名と暗号化されたファイルコンテンツを保存するステップとを更に有する請求項４０記載のデータ暗号化方法。
【請求項４２】
上記カーネルコードを実行して平文データを暗号化し及び暗号データを復号するステップは、コンピュータメモリとセカンダリデバイスの間でデータを転送する際に実行されることを特徴とする請求項３６記載のデータ暗号化方法。
【請求項４３】
上記セカンダリデバイスは、バッキングストアを含むことを特徴とする請求項４２記載のデータ暗号化方法。
【請求項４４】
上記セカンダリデバイスは、スワップデバイスを含むことを特徴とする請求項４２記載のデータ暗号化方法。
【請求項４５】
上記セカンダリデバイスは、通信チャンネルを含むことを特徴とする請求項４２記載のデータ暗号化方法。
【請求項４６】
上記通信チャンネルは、ネットワークを含むことを特徴とする請求項４５記載のデータ暗号化方法。
【請求項４７】
上記ネットワークは、インターネットを含むことを特徴とする請求項４６記載のデータ暗号化方法。
【請求項４８】
ａ．プロセッサと、
ｂ．物理メモリと、
ｃ．上記物理メモリに接続されたセカンダリデバイスと、
ｄ．上記物理メモリとセカンダリデバイスの間でデータが転送される際に、該データを暗号化及び復号するよう構成されたカーネルを含むオペレーティングシステムとを備えるコンピュータシステム。
【請求項４９】
上記カーネルは、対称鍵暗号化アルゴリズムを用いてデータを暗号化及び復号するよう構成されていることを特徴とする請求項４８記載のコンピュータシステム。
【請求項５０】
上記対称鍵暗号化アルゴリズムは、ブロック暗号に基づいていることを特徴とする請求項４９記載のコンピュータシステム。
【請求項５１】
上記対称鍵暗号化アルゴリズムは、ラインダールアルゴリズムを含むことを特徴とする請求項５０記載のコンピュータシステム。
【請求項５２】
上記カーネルは、ＵＮＩＸオペレーティングシステムを含むことを特徴とする請求項５１記載のコンピュータシステム。
【請求項５３】
ファイルへのアクセスを制御するアクセス制御方法において、
ａ．ユーザを認証するステップと、
ｂ．上記ユーザに対するファイルにアクセスするための許可を検査するステップと、
ｃ．暗号鍵を用いてファイルを暗号化するステップとを有するアクセス制御方法。
【請求項５４】
上記ファイルを暗号化するステップは、
ａ．ファイルを、それぞれが関連するファイルセグメント番号を有する複数のファイルセグメントに分割するステップと、
ｂ．上記各ファイルセグメントを複数の対応するファイルブロックに分割するステップと、
ｃ．上記暗号鍵を複数の対応する暗号鍵セグメントに分割するステップと、
ｄ．上記関連ファイルセグメント番号と第１の順列関数とを用いて対応する暗号鍵セグメントを並べ替え、対応する中間鍵を生成するステップと、
ｅ．暗号化アルゴリズムと対応する中間鍵を用いて対応するファイルブロックを暗号化し、対応する第１の暗号化されたデータを生成するステップと、
ｆ．第２の順列関数と関連ファイル番号を用いて対応する第１の暗号化されたデータを並べ替え、対応する最終的な暗号化されたデータを生成するステップとを有する請求項５３記載のアクセス制御方法。
【請求項５５】
上記暗号化アルゴリズムは、ラインダールアルゴリズムを含むことを特徴とする請求項５４記載のアクセス制御方法。
【請求項５６】
上記第１の順列関数は、上記第２の順列関数と異なっていることを特徴とする請求項５３記載のアクセス制御方法。
【請求項５７】
上記各ファイルセグメントは、少なくとも１０２４ビットのビット長を有することを特徴とする請求項５３記載のアクセス制御方法。
【請求項５８】
上記暗号鍵は、少なくとも２０４８ビットのビット長を有することを特徴とする請求項５３記載のアクセス制御方法。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、米国特許法第１１９条（ｅ）項に基づき、２００２年８月２３日に出願され、同時に係属中の米国仮特許出願第６０／４０５，４５９号、発明の名称「暗号化オペレーティングシステム（ENCRYPTING OPERATING SYSTEM）」に対する優先権を主張する。２００２年８月２３日に出願され、同時に係属中の米国仮特許出願第６０／４０５，４５９号、発明の名称「暗号化オペレーティングシステム（ENCRYPTING OPERATING SYSTEM）」は、参照により本願に援用される。
【技術分野】
【０００２】
本発明は、コンピュータオペレーティングシステムの分野に関する。詳しくは、本発明は、コンピュータメモリとセカンダリデバイス（secondary devices）との間で転送されるデータを自動的に暗号化及び復号するために用いられるオペレーティングシステムに関する。
【背景技術】
【０００３】
コンピュータシステムの形式で実現されている情報技術は、現代社会に広く普及する重要な技術である。これらのシステムが適切且つ正常に動作することは、小さくは個人の活動とって、大きくは大企業や政府にとって重要である。データの安全性は、コンピュータシステムの動作のアクセプタビリティに影響する重要な課題の１つである。データの安全性を保つためには、データへのアクセス及びデータの使用を選択的に制限し、並びに権限のない変更又は破壊からデータを保守及び保護する必要がある。データの安全性は、保存されたデータの使用及び完全性を保護するだけではなく、コンピュータシステム全体の装置の総合的な安全性に影響する。例えば、改竄された許可データ（permissions data）により、コンピュータシステムリソースへの権限のない使用が可能となり、こればかりか、コンピュータシステムの動作に障害が生じることもある。更に、コンピュータシステムと協力して、殆ど全ての大規模な試みが実現されているが、これらの試み自体、データの安全性が低下すると、妨げられ、又は問題が生じる。インターネット及び他の大規模なコンピュータネットワークが著しく普及したことにより、データの安全性の弱点も顕著になっている。
【０００４】
コンピュータデータを保護する手法は、主に、権限のないエンティティによるデータの読み出しを防ぐために、データへのアクセスを制御する手法と、データを暗号化する手法の２つの手法がある。アクセス制御のための手法としては、パスワード又は他の情報に基づく制限及びファイアウォール又は他のハードウェアに基づく入口での制限がある。暗号化に基づく保護技術は、適切な権限のないアクセスによっては、データを認識できようにする技術である。増え続ける大規模な公共の及び個人のネットワークの利益を享受するためには、これらのネットワーク内の及びネットワーク間の実質的な通信量が重要である。これらの通信の速度及び容易さは、通信によって得られる利益に直結し、これは、通信システムのデータの安全性とは、相反する性質である。コンピュータシステム間の通信によって生み出される価値は、あまりにも大きく、実質的なハードウェアベースの制限より、データを保護するための実用的な代替策が求められている。一般的な代替策は、例えば、パスワード等を用いた、情報ベースのアクセス制御である。情報ベースのアクセス制御のセキュリティ侵害に対する脆弱性は明白であり、インターネットを介して広がるコンピュータウイルス及びウェブサイトに対する悪意のある攻撃によって、数十億ドルもの損害が生じている。
【０００５】
コンピュータシステムをより現実的に保護するための第１のステップとして、システムのデータの安全性を確保する必要がある。データを理解する能力は、暗号化によって選択的に制御できる。一般に、暗号化法は、理解可能なデータ（平文）を理解できない暗号化された形式（暗号文）に変換する数学的アルゴリズムを利用する。暗号化された形式は、鍵に関する知識及び鍵を用いなければ復号することができない。データ保護の品質は、アルゴリズムの複雑さと、鍵のサイズと安全な保管とに依存する。１９７２年、連邦標準局、現在の米国標準局（National Institute of Standards and Technology：以下、ＮＩＳＴという。）は、暗号化規格についての最初の公の要求を提示した。これに応じて、データ暗号化規格（Data Encryption Standard：以下、ＤＥＳという。）が作成された。既に３０年来用いられているこの対称アルゴリズム規格では、６４ビットブロック暗号を用いて、５６ビット秘密鍵によりデータを暗号化する。近年の分散型鍵検索技術（distributed key search techniques）の進歩により、ＤＥＳを使用する際の安全性の核であるＤＥＳの５６ビット鍵は、今日のセキュリティアプリケーションには、短か過ぎることが証明されている。
【０００６】
ＤＥＳは、三重ＤＥＳ（Triple-DES）によって改良された。三重ＤＥＳでは、３つの異なる５６ビット鍵に分割される１６８ビット鍵を用いて、ＤＥＳアルゴリズムに基づき、６４ビットのブロックを暗号化し、復号し、最終的に再暗号化する。このようにＤＥＳは改良されたが、三重ＤＥＳは、ＤＥＳに固有の６４ビットブロック長の制限を承継し、これは、同じ鍵を用いて多量のデータが暗号化されている場合、攻撃に晒されやすい。５６ビット鍵の短かさのため、及び多量のデータを扱うために比較的小さい６４ビットブロックを用いて繰り返す必要がある暗号化処理の膨大な回数のために、暗号化のパターンは、自ずと繰り返され、明らかになり、したがって、鍵を解読し、データに不正にアクセスすることが容易になってしまう。
【０００７】
ＤＥＳの改良の必要性に応じて、ＮＩＳＴは、１９９７年に次世代暗号化規格（Advance Encryption Standard：以下、ＡＥＳという。）プログラムを発表した。ＡＥＳプログラムは、より大きなブロック暗号を要求する。ブロック暗号は、様々な同期及びエラー拡張特性、一方向ハッシュ関数、メッセージ認証符号、及び擬似乱数発生器と共に、ストリーム暗号を設計するために用いることができる。この柔軟性のために、ブロック暗号は、現代の暗号化技術の中心的役割を担うようになった。ＮＩＳＴによって指定されている他の設計基準としては、より長い鍵長、より大きなブロックサイズ、より速い実行速度及びより高い柔軟性がある。ＮＩＳＴの意図は、ＡＥＳを次世代の標準対称ブロック暗号アルゴリズムとすることであった。２００１年１０月、ＮＩＳＴは、次世代暗号化規格のための連邦情報処理規格（Federal Information Processing Standard：以下、ＦＩＰＳという。）ＦＩＰＳ−１９７としてヴィンセント・ライメン（Vincent Rijmen）とホアン・ダーメン（Joan Daemen）によって設計されたラインダール暗号（Rijndael cipher）を承認したこと発表した。ラインダールアルゴリズムは、主に、その効率性の高さと、メモリ要求の低さのために採用された。
【０００８】
ラインダール暗号は、１２８、１９２又は２５６ビットの可変長鍵を用いる１２８ビットの対称ブロック暗号である。この暗号は、鍵に依存する４個の８×８ビットのＳボックスと、一般行列（ＧＥ）に対して固定の４×４最大距離分離可能な行列と、擬似アダマール変換と、ビット単位の回転と、注意深く設計された鍵スケジュールとを含む全単射Ｆ関数を用いたラウンド数１６のファイステルネットワーク（Feistel network）である。ラウンド関数と鍵スケジュールの両方の設計により、速度、データサイズ、鍵セットアップ時間、及びメモリ間のトレードオフを柔軟に調整することができる。ラインダールアルゴリズムは、リバースエンジニアリングによって鍵を検出したり、入手可能な限られた量のデータの符号を推定してシステムを破壊する等の行為を困難にする暗号化アルゴリズムである。ラインダールアルゴリズムは、暗号化の分野において周知の技術であり、ＮＩＳＴウェブサイトの「ＡＥＳホームページ」、ワールドワイドウェブＵＲＬ、http://csrc.nist.gov/encryption/aes/において、詳しく説明されている。
【０００９】
近年、コンピュータのデータ保存能力及び処理速度は、益々高くなっている。この処理能力のために、コンピュータは、個人的なデータ、例えばカルテ等の患者データ、信用取引データ、他の重要な情報等を保存及び処理する個人及び企業にとって魅力的なものとなっている。権限があるユーザ以外によるデータへのアクセスを確実に防ぐために、様々な方法でデータを保護することができる。例えば、多くのコンピュータシステムは、ユーザがデータにアクセスする前に、パスワード又はパスフレーズの入力を要求する。更に、コンピュータシステムは、データにアクセスするための許可が与えられた特定のグループにユーザが属することを要求することもできる。
【００１０】
これらの方式には、幾つかの欠点がある。第１に、ストレージデバイスがコンピュータシステムから切り離されると、権限のないユーザでも、パスワード又はパスフレーズに依存するセキュリティメカニズムをバイパスして、補助記憶装置（例えば、ハードディスク）を用いてデータにアクセスできてしまう。第２に、パスワード及びパスフレーズの長さは、限定されている場合が多く、このため、コンピュータプログラムを用いてシンボルの組合せを高速に試し、ユーザが作成したパスワード及びパスフレーズを推測し、ストレージデバイスにアクセスし、すなわち、秘密のデータにアクセスすることができてしまう。
【００１１】
これに対し、幾つかのコンピュータシステムが様々なソリューションを提供している。例えば、ＵＮＩＸ（登録商標）オペレーティングシステムの幾つかのバージョンは、ユーザがストレージデバイスにデータを保存する都度、及びストレージデバイスからデータを読み出す都度、パスワードを入力する必要があるアプリケーションプログラムである「暗号」プログラムをサポートしている。他のコンピュータシステムは、ユーザがデータを保存する都度、及びデータを読み出す都度、パスワードを入力する必要があるアプリケーションプログラムを提供している。また、他のアプリケーションベースの暗号化システムは、全体のファイルを暗号化するとともに、個々のファイルを更に暗号化する。
【００１２】
これらのアプリケーションプログラムは、幾つかの理由で効率が悪い。第１に、これらのアプリケーションプログラムは、コンピュータメモリと補助記憶装置との間でデータを転送する都度、ユーザに対しパスワードの入力を要求し、これは、ユーザにとって煩雑な作業である。第２に、これらのアプリケーションプログラムは、データを保存し及び読み出すための、下位のレベルのハードウェア固有のコードを含むカーネルにトラップする都度、コンテキスト切換（context switch）を要求するため、効率が悪い。コンテキスト切換による付加的なオーバヘッドは、暗号化アプリケーションプログラムを呼び出すプログラムの実行速度を遅めてしまうことがある。更に、これらのアプリケーションプログラムは、カーネルルーチン又は高い優先度を有する他のアプリケーションによって割り込まれてしまうことがある。第３に、これらのアプリケーションプログラムは、必ずしも可搬性を有していない。すなわち、これらのアプリケーションプログラムは、そのアプリケーションプログラムをサポートしていないプラットフォーム上では、適切に実行されない場合がある。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
そこで、本発明の目的は、高速で、ユーザにとってシームレスで、可搬性を有し、効率的な暗号化方法及び暗号化システムを提供することである。
【課題を解決するための手段】
【００１４】
本発明は、コンピュータの物理メモリとセカンダリデバイス、例えば、補助記憶装置との間で転送されるデータを暗号化及び復号するシステム及び方法を提供する。このシステムは、データを暗号化及び復号するよう構成されたカーネルを有するオペレーティングシステムを備える。カーネルにおいて、暗号化及び復号処理を行うことにより、保護モードにおいて、データをより効率的に暗号化及び復号することができる。カーネルは、データへのパスのパス名を更に暗号化するよう構成され、これにより、更に高いレベルの機密保護が実現される。
【００１５】
本発明の第１の実施形態として、コンピュータオペレーティングシステムは、コンピュータメモリとセカンダリデバイスの間で転送されるデータを暗号化及び復号するよう構成されたカーネルを含む。コンピュータオペレーティングシステムは、好ましくはＵＮＩＸオペレーティングシステムに基づいている。一実施例においては、カーネルは、暗号化エンジンを含む。暗号化エンジンは、平文データを暗号化して暗号データを生成し、暗号データを復号して平文データを生成するように構成される。他の実施例においては、コンピュータオペレーティングシステムは、暗号化エンジンに接続され、暗号データを保存するよう構成されたメモリ部分を更に備える。他の実施例においては、暗号化エンジンは、例えばラインダールアルゴリズム等の対称鍵暗号化アルゴリズムに基づいて、平文データを暗号化し及び暗号データを復号するよう構成されている。
【００１６】
本発明の第２の実施形態であるコンピュータシステムは、第１のデバイスと第２のデバイスを備える。第１のデバイスは、暗号鍵を用いて平文データを暗号化し、暗号データを生成するよう構成されたオペレーティングシステムカーネルを有する。第２のデバイスは、第１のデバイスに接続され、第１のデバイスから暗号データを受け取り、暗号データを復号して平文データを生成する。オペレーティングシステムカーネルは、好ましくはＵＮＩＸオペレーティングシステムに基づいている。一実施例においては、オペレーティングシステムカーネルは、対称アルゴリズムを用いて平文データを暗号化するよう構成されている。対称アルゴリズムは、好ましくは、例えば、ラインダールアルゴリズム等のブロック暗号を含む。他の実施形態においては、暗号鍵は、少なくとも２０４８ビットを含む。他の実施形態においては、コンピュータシステムは、第１のデバイスを第２のデバイスに接続する通信チャンネルを更に備える。通信チャンネルは、例えばローカルエリアネットワーク（ＬＡＮ）やインターネット等のネットワークを含むことができる。
【００１７】
本発明の第３の実施形態であるデータ暗号化方法は、平文データを受け取るステップと、オペレーティングシステムにおいて、対称鍵を用いて平文データを暗号化して暗号データを生成するカーネルコードを実行するステップとを有する。一実施例においては、対称鍵は、ブロック暗号に基づいて、平文データを暗号化し、暗号データを生成する。ブロック暗号は、好ましくはラインダールアルゴリズムを含む。
【００１８】
本発明の第４の実施形態であるコンピュータシステムは、プロセッサと、データを保存するメモリ装置と、カーネルを含むオペレーティングシステムとを備える。カーネルは、物理メモリとメモリ装置との間で転送されるデータを暗号化及び復号するよう構成されている。一実施例においては、カーネルは、例えば、ラインダールアルゴリズム等の暗号化アルゴリズムに基づく鍵管理システムを用いて、データを暗号化及び復号するよう構成される。
【００１９】
本発明の第５の実施形態として示すアクセス制御方法は、ユーザを認証するステップと、ユーザに対するファイルにアクセスするための許可を検査するステップと、暗号鍵を用いてファイルを暗号化するステップとを有する。一実施例においては、ファイルを暗号化するステップは、ファイルを、それぞれが関連するファイルセグメント番号を有する複数のファイルセグメントに分割するステップと、各ファイルセグメントを複数の対応するファイルブロックに分割するステップと、暗号鍵を複数の対応する暗号鍵セグメントに分割するステップと、関連ファイルセグメント番号と第１の順列関数とを用いて対応する暗号鍵セグメントを並べ替え、対応する中間鍵を生成するステップと、暗号化アルゴリズムと対応する中間鍵を用いて対応するファイルブロックを暗号化し、対応する第１の暗号化されたデータを生成するステップと、第２の順列関数と関連ファイル番号を用いて対応する第１の暗号化されたデータを並べ替え、対応する最終的な暗号化されたデータを生成するステップとを有する。逆の手順を用いてデータを復号することもできる。一実施例においては、暗号化アルゴリズムは、ラインダールアルゴリズムを含む。他の実施例においては、第１の順列関数は、第２の順列関数とは異なる。好ましくは、各ファイルセグメントは、少なくとも１０２４ビットのビット長を有し、暗号鍵は、少なくとも２０４８ビットのビット長を有する。
【発明を実施するための最良の形態】
【００２０】
以下の記述において、同じ符号は、同じ要素を示す。ここで、ある図面を用いてある要素が説明されており、他の図面におけるその要素の詳細又は関係が変更されていない場合、その要素の説明は、全ての図面について適用されるものとする。
【００２１】
本発明は、暗号化オペレーティングシステム（Encrypting Operating System：以下、ＥＯＳという。）と呼ばれるモディファイドＵＮＩＸオペレーティングシステムを提供する。以下に説明する好適な実施形態は、ＡＴ＆Ｔ  ＵＮＩＸ  ＳＶＲ３．４、ＳＶＲ４、ＳＶＲ４．２及びＳＶＲ５オペレーティングシステムカーネルのアーキテクチャに基づいているがＥＯＳの動作は、特定のＵＮＩＸオペレーティングシステムに制限されない。明瞭で一貫性がある説明のために、以下では、モディファイドＡＴ＆Ｔ  ＵＮＩＸ  ＳＶＲ４オペレーティングシステムカーネルであるＥＯＳに限定した記述を行う。但し、本発明の範囲から逸脱することなく、他のＵＮＩＸオペレーティングシステムを変更してＥＯＳを生成することもできる。
【００２２】
好ましくは、ＥＯＳは、例えば、僅かな例を挙げれば、サンマイクロシステムズ社（Sun Microsystems）のＳｏｌａｒｉｓ（ＳＶＲ４．０）、シリコングラフィックス社（Silicon Graphics）のＩＲＩＸ（ＳＶＲ４．０）、ＩＢＭ社のＡＩＸ（ＳＶＲ３．４）、ヒューレットパッカード社（Hewlett Packard）のＨＰ−ＵＸ（ＳＶＲ３．４）、サンタクルーズオペレーション社（Santa Cruz Operations）のＵＮＩＸＷａｒｅ７（ＳＶＲ５）及びこれらの後継バージョン等を含むＵＮＩＸシステムＶ構成において見出されるマイクロカーネルの一部である。また、本発明は、例えば、リナックス（Linux）やＢＳＤ等のモノリシックカーネルにも適用することができる。
【００２３】
ＥＯＳの変更により、管理又は保存すべきデータのコンテンツと名称の両方を暗号化し、復号することができる。ＥＯＳは、主記憶装置、補助記憶装置及び仮想メモリに保存するデータを選択的に暗号化できる。ＥＯＳは、自らが管理するデータのコンテンツを暗号化できるだけではなく、そのデータコンテンツを含むファイルの位置（又はファイル名）を暗号化できる。このため、ＥＯＳは、必要なデータがどこに保存されているかを知る必要がある。以下では、ＥＯＳを用いて、物理メモリと補助記憶装置の間で転送されるデータを自動的に暗号化及び復号する幾つかの具体例を説明するが、本発明の実施形態に基づき、ＥＯＳは、物理メモリと、スワップ空間、ネットワークバッファ、周辺装置、擬似ファイル、ネットワークファイル、特別なファイル、又は他のあらゆるファイル又はその部分との間で転送されるデータを暗号化及び復号するよう構成することができる。
【００２４】
ＥＯＳは、自らが制御するデータへのアクセスのためのあらゆる要求に対する許可を管理及び認証することによって、暗号化されたデータへアクセスを制御する。一旦、ＥＯＳがアクセスを認証すると、ＥＯＳは、権限が与えられた要求者にデータを提供する前に、暗号化されたデータを復号する。ＥＯＳは、保護されたデータと保護されていないデータの両方について動作することができる。保護されたデータへのアクセスは、上述したように、ＥＯＳによって制御され、保護されていないデータは、従来のＵＮＩＸシステムカーネルによって提供される規則及び保護に基づいて制御される。ＥＯＳは、コンピュータシステム又は従来のオペレーティングシステムを接続するネットワーク内のコンピュータシステムの主オペレーティングシステムとして実行されるように、若しくは、独立したコンピュータシステム又は従来のオペレーティングシステムによって実行されるネットワーク上のコンピュータシステムに接続されるアドオンシステム上で実行されるように構成できる。ＥＯＳは、アドオンシステム上で実行される場合、従来のネットワークによって接続された従来のオペレーティングシステムによって提供される保護されたデータのストレージを監視及び管理する。
【００２５】
保護されたストレージは、ユーザ処理又はユーザによってはアクセスできず、したがって、保護されたストレージに保存されたデータは、保護される。データ金庫（data vault）及び鍵金庫（key vault）は、様々な手法で保護できる。例えば、ＵＮＩＸオペレーティングシステムにおいては、データ金庫と鍵金庫は、カーネルアドレス空間内に保存できる。ＵＮＩＸでは、殆どのオペレーティングシステムと同様に、カーネルアドレス空間にアクセスできるのは、カーネルだけであり、他の処理又はユーザは、カーネルアドレス空間にアクセスすることはできない。
【００２６】
本発明に基づくＥＯＳを形成するために従来のＵＮＩＸオペレーティングシステムに加えられるコンポーネントとしては、例えば、以下に限定されるものではないが、（１）エキスパート管理システム（２）管理用のアクセス制御（３）データ金庫管理（４）エキスパートデータ制御システム（５）データ金庫（６）暗号化ファイル制御システム（７）鍵金庫管理システム（８）データ監査システム（９）鍵金庫等がある。
【００２７】
ＥＯＳカーネルは、例えば、以下の領域において、Ｖ３ＵＮＩＸカーネルと異なっている。ＥＯＳファイルシステムは、ＥＯＳ−ＵＮＩＸカーネル環境の必須コンポーネントであり、複数ファイルの命名のための機能を有する階層化ディレクトリ構造を妨害することなく、全てのファイルデータの安全なストレージ及び検索を実現するための機密保護メカニズムを提供する。ＥＯＳ−ＵＮＩＸカーネルは、各ファイルをアブストラクトデータタイプとして取り扱い、カーネルによってアクセス可能な構造内において、ポインタによって、機密保護されたデータを指示する。したがって、ファイル又はディレクトリは、データへのポインタと同じ構造のアブストラクトとして扱われる。ディレクトリの場合、データは、ファイルであり、ファイルの場合、データは、ユーザに対してセットを定義するために用いられる文字セットを構成するビットのシーケンスである。
【００２８】
ＵＮＩＸでは、ファイルシステムは、オペレーティングシステムが以下のタスクを実行することを可能にする。
１．ファイルの作成及び削除。
２．読出又は書込のためにファイルを開く。
３．ファイル内の検索。
４．ファイルを閉じる。
５．ファイルをグループ化するためにディレクトリを作成する。
６．ディレクトリのコンテンツのリストを作成する。
７．ディレクトリからファイルを削除する。
【００２９】
ファイルシステムは、データを維持し、アプリケーションプログラムからデータにアクセスするための普遍的な形式である。近年の設計においては、ファイルシステムは、ＵＮＩＸシステムの第１のバージョンの開発と並行して作成された。ファイルシステムは、様々なアプリケーションプログラムの間におけるデータ交換の普遍的な形式になった。インターネットとネットワークが商取引で用いられるようになると、この普遍的な特徴は、違反行為の可能性のソースともなった。ＵＮＩＸ設計は、ファイルデータに対してユーザ／処理が読出及び書込を行う権利を特定するための十分に強力なメカニズムを含んでいる。ファイル許可として知られているこのメカニズムは、認証情報の形式に最も強力に拡張されている。しかしながら、例えば、あるコンピュータから他のコンピュータにストレージデバイスを移し替えた場合、これらのメカニズムは、完全には用いられず、又は動作しなくなる。
【００３０】
本発明の一実施形態においては、ファイルシステムは、（１）鍵管理システム（key-management system：以下、ＫＭＳという。）と、（２）認証情報と、（３）暗号化との保護を組み合わせることによって保護される。好ましくは、許可構造は、ＥＯＳを用いる企業の構造に対応する。
【００３１】
本発明の実施形態では、ファイルシステムは、ＥＯＳを用いて、以下のタスクを実行できる：。１．データを暗号化することによって機密保護されたファイルを作成し、認証された権限なしでこのようなファイルが一括して取り出されることを防止する。２．ファイルを開き、ファイルに対する読出及び書込を行うための機密保護されたファイルへのアクセスの認証された権限を提供する。３．ファイルの検索を実行するための認証された権限を提供する。４．ファイルを閉じる前に、データを暗号化することによって機密保護されたファイルを閉じる。５．ＥＯＳの下に機密保護されたディレクトリを作成し、ディレクトリのコンテンツ（ファイル名）を暗号化することによってディレクトリ内のファイルが保護される。６．コンテンツの復号を制御することによって、ディレクトリのコンテンツのリストが権限なく作成されることを防止する。７．ディレクトリのコンテンツである暗号化されたファイル名へのアクセスを制御することによって、暗号化されたファイルに対する認証されていない権限のない取り出しを防止する。
【００３２】
ＥＯＳカーネルは、通常、例えば、ＳＣＳＩディスク等のストレージデバイスである何らかの形式の入出力媒体上に保存されるバイトの線形の範囲を指示するアブストラクションとして、ファイルを使用する。ファイルにアクセスするために、ＥＯＳカーネルは、各ファイルを検索し、暗号化されたデータにランダムアクセスを行う機能を提供する。
【００３３】
メモリ機能を管理し、データファイルを提供するためのコンピュータのリソースは、オペレーティングシステムによって指示される。従来のＵＮＩＸシステムは、ファイルと処理の２つのエンティティを有し、ユーザ処理、カーネル処理、ハードウェアの３つのレベルに組織化される。主制御システムは、カーネルレベルであり、カーネルレベルでは、ファイルシステムの全体、仮想メモリ、ローダ、ブロックドライバ切換及びキャラクタドライバ切換が制御される。ＥＯＳを含む変更は、他のレベルにおいて、他のコンポーネントと密接にインタラクトすることもあるが、主としてカーネルレベルに対する変更である。
【００３４】
ＥＯＳによるＵＮＩＸの主な変更点として、暗号化及びアクセス制御を互いに強制する機能が追加され、これらは、個々に及び組み合わされて、データの安全性を高める。ＥＯＳがデータを保存する場合、コンテンツとデータファイル名の両方が暗号化され、暗号化されたファイルシステムに保存される。ファイルコンテンツは、最大２０４８ビットの対称暗号化鍵を用いて、最大１０２４ビットのブロックサイズの対称ブロック暗号によって暗号化される。これにより、ＥＯＳは、制御されたアクセス暗号（controlled access encryption）について４つのモードを有する保護を提供する。まず、ファイルは、一方がファイルのコンテンツを含み、他方がファイル名を含む２つのデータブロックに分離される。ファイルのコンテンツは、暗号化され、対称暗号化されたファイルコンテンツ鍵が生成され、これとは別に、ファイル名が暗号化され、独立した対称暗号化されたファイル名鍵が生成される。ファイルのコンテンツは、暗号化された正しいファイルコンテンツ鍵がなくては、復号できず、所望のファイルは、ファイル名を復号する暗号化された正しいファイル名鍵がなくては、見つけることができない。データ保護の４つのモードは、以下の通りである。１．データファイルのコンテンツを暗号化する。２．暗号化されたファイルコンテンツ暗号鍵を機密保護する。３．データファイル名を暗号化する。４．暗号化されたファイル名暗号鍵を機密保護する。
【００３５】
ＥＯＳは、ＵＮＩＸと同様、ファイルをアブストラクションとして扱う。このフレームワークは、ファイルシステムから独立した良く定義されたインタフェースの単一の組を提供し、各ファイルシステムのインプリメンテーションの詳細は、これらのインタフェースの後ろに隠される。これらのインタフェースは、２つの主要なオブジェクトによって表現される。２つの主要なオブジェクトとは、仮想ファイル、すなわち、ｖノードと、仮想ファイルシステム、すなわち、ＶＦＳオブジェクトである。ｖノードインタフェースは、ファイル関連の機能を実現し、ＶＦＳインタフェースは、ファイルシステム管理機能を実現する。ｖノードとＶＦＳインタフェースは、動作中のファイルシステムの種類に応じて、適切なファイルシステム機能を呼び出す。ファイル関連の機能は、システムコールによって又は他のカーネルサブシステムから開始され、ｖノード／ＶＦＳ層を介して適切なファイルシステムに向けられる。なお、本発明に基づいて、ＵＮＩＸファイルシステム（例えば、ｓ５ｆｓ及びｕｆｓ）及び非ＵＮＩＸファイルシステム（例えば、ＤＯＳと／ＵＸ）を用いて、例えば、セカンダリデバイス（secondary device）に暗号化されたデータを保存し、及びセカンダリデバイスからデータを読み出すこともできる。
【００３６】
本発明の一実施形態においては、暗号化及び復号機能は、ｖノードメソッドのラッパ機能内に含まれる。例えば、スワップデバイスにファイルを書き込む場合、データを暗号化するための第１のシステムコール又はカーネルトラップ及び暗号化されたデータを書き込むための第２のシステムコール又はカーネルトラップを含むようにｖノードメソッドを変更でき、何れの呼出も単一のラッパ機能又はメソッド内に含まれる。同様に、スワップデバイスからファイルを読み出す場合、ラッパ機能又はメソッドは、暗号化されたデータを読み出すための呼出又はカーネルトラップと、暗号化されたデータを復号するための他の呼出又はカーネルトラップとを含む。但し、本発明は、他の手法で実現することもできる。
【００３７】
好適な実施形態においては、ＵＮＩＸオペレーティングシステムカーネルは、ＥＯＳを生成するように変更される。但し、他のレベルにおいてＵＮＩＸオペレーティングシステムを変更して本発明を実現することもできる。好ましくは、ＥＯＳを実現するためのカーネルの変更は、ｖノード／ＶＦＳインタフェースに対して行われる。暗号化ファイルシステムは、例えば、ＵＦＳファイルシステム等、従来のファイルシステムと同様の手法によってＶＦＳインタフェースに接続されるが、特定のファイルシステムに対して実行され、ＥＯＳカーネルへのサブシステムとして実現される。
【００３８】
ＥＯＳは、ＵＮＩＸが周辺装置をファイルとして扱うという事実を利用する。すなわち、ＥＯＳは、単に、上述のように、データを暗号化し、ファイルに書き込む場合と同様に、周辺装置にデータを書き込むことによって周辺装置に暗号化されたデータを書き込む。同様にＥＯＳは、ファイルからデータを読み出し、データを復号し、データをバッファに格納し、例えば、データの読出を待機する処理によって、バッファにアクセスする処理と同様の処理によって、周辺装置から暗号化されたデータを読み出す。
【００３９】
これにより、後述するように、端末装置、機密保護された端末装置、ストリーム入力装置、ブロック装置、テープ状記録媒体、ＳＣＳＩ機器、又は他のあらゆる種類のデバイスの間でデータを交換する際に、データを暗号化及び復号することができる。
【００４０】
例えば、端末装置を用いる場合、データは、ＥＯＳカーネルへの配信のためのキャラクタデバイスドライバに接続するターミナルサーバに接続された端末装置に手動で入力される。このようなデバイスに入力された全てのデータは、バッファを介してＥＯＳに運ばれる。バッファは、機密保護されたデータ構造であり、カーネルの中において、機密保護された処理によって読み出される。端末装置からカーネルへのデータ転送の間、転送を実行する処理は、カーネル保護モードによって保護される。この転送の間は、バッファにデータを書き込む処理又はバッファからデータを読み出す処理に対して、他の処理が優先してスケジューリングされることはない。
【００４１】
また、ＥＯＳは、安全なデータ転送を確実に行うように変更又は修正されたｔｔｙファイルである機密保護された端末装置から、暗号化ファイルシステムの機密保護された部分にデータを転送するために用いることもできる。機密保護された端末は、ファイルが開かれた際に、まずファイル名を暗号化することによって、転送の間にデータを暗号化する機密保護されたキャラクタドライバを用いる。全てのデータは、機密保護された端末装置を用いて保存される際に、データをディスクに移す前にバッファのコンテンツを暗号化するよう変更されたキャラクタデバイスドライバによって、暗号化される。機密保護された端末装置は、機密保護された情報を手動で入力することができる特別なデバイスである。ファイルを閉じる前にデータが保存されると、ファイルのコンテンツがストレージから取り出され、復号され、復号されたデータに新たなデータが添付され、これらのデータは、再び暗号化され、再び保存される。この処理は、最終的にファイルが完成され、保存されるまで継続される。
【００４２】
また、ＳＴＲＥＡＭＳを用いることによって、ＥＯＳにデータを組み込むことができる。ＳＴＲＥＡＭＳとは、ＳＶＲ４に追加され、例えば、ＳＴＲＥＡＭヘッド及びＳＴＲＥＡＭボディー、及びＥＯＳカーネルへのデータの機密保護された配信を確実に行うために、ＳＶＲ４カーネルにおいて用いられる他の構造を含むソフトウェアドライバを用いるソフトウェア構造である。ＳＴＲＥＡＭ入力は、キャラクタ入力とみなされ、したがって、ＳＴＲＥＡＭデバイスとＥＯＳカーネルとの間のデータ転送には、キャラクタドライバを用いる。ＳＴＲＥＡＭは、機密保護されていないＥＯＳファイルシステムの一部と、機密保護されているＥＯＳの一部とみなされる領域との間でデータをローカルで転送する場合に使用される。ＥＯＳにとってローカルな標準ＵＮＩＸファイルシステムの下で管理されているＥＯＳ上のユーザアカウントは、ファイルシステムを介して、機密保護されたデータをＥＯＳ内の機密保護されたファイルシステムに渡すために、ストリームの使用を選択できる。ＳＴＲＥＡＭＳについては、後に更に詳細に説明する。
【００４３】
例えば、ハードディスク、フロッピィドライブユニット、磁気テープユニット（例えば、デジタルオーディオテープ等）、ＣＤ−ＲＯＭドライブ等のブロックデバイスも、本発明に基づくＥＯＳを用いて、暗号化されたデータを保存することができる。ここで用いる用語「機密保護されたブロックされたデバイスドライバ（Secured Blocked Device drivers）」は、暗号化されたデータを保存するデバイスドライバを意味するものとする。本発明に基づいてブロックデバイスにデータを書き込む場合、ＥＯＳは、まず、データを暗号化し、次に、適切なデバイスドライバを呼び出す。一方、暗号化されたデータを読み出す場合、ＥＯＳは、デバイスドライバを呼び出し、データを復号し、呼び出し処理によって読み出すことができるバッファに復号したデータを転送する。
【００４４】
コンピュータシステムのデバイスに保存されたデータは、必ずしも暗号化されているわけではないので、ＥＯＳは、通常のブロックデバイス及び本発明に基づいて暗号化されたデータを保存する機密保護されたブロックデバイスの両方をサポートするように構成できる。したがって、従来のオペレーティングシステムにおける各デバイスドライバについて、ＥＯＳの下では、このような２つのデバイスドライバが存在していることになる。すなわち、一方は、従来のファイルシステムのためのデバイスドライバであり、他方は、例えば、暗号化ファイルシステム等の機密保護されたファイルシステムのためのデバイスドライバである。
【００４５】
ブロックデバイスがテープ状ストレージユニットである場合、まず、暗号化されたファイルシステムを保存する特定のＥＯＳの下で、テープ状ストレージユニットをフォーマットしなければならない。
【００４６】
一実施例においては、デバイスをフォーマットする場合、ＥＯＳは、デバイスのスーパブロックにデバイスのための暗号化された鍵として、英数字の値保存する。磁気ストレージ装置と同様、テープ状記録媒体上のスーパブロックは、ブロックをフォーマットした特定のＥＯＳがブロックにアクセスするための他の種類の情報を含む。
【００４７】
各テープストレージシステムは、各テープの始めに（スーパブロック内に）テープのフォーマットに関するデータ及びテープの残りの部分にブロックをどのように配置するかに関するデータを保存する。暗号化されたファイルシステムを扱う機密保護されたテープ上の機密保護されたスーパブロックは、従来のオペレーティングシステムによって又はスーパブロックに埋め込まれている暗号化された鍵を所有していない他のＥＯＳによってテープがマウントされることを防ぐための情報を含んでいる。このテープが許可なしでＥＯＳにマウントされると、暗号化アルゴリズムが同じであっても、機密保護されたテープを読み出す適切な鍵がなければ、テープ上のフォーマットを読み出すことはできない。各テープ状ストレージユニットのスーパブロックに書き込まれた固有の暗号化された鍵を生成するために用いられたコンポーネントは、機密保護されたブロックされたデバイスドライバ内に含まれ、このデバイスドライバは、設計上、環境又は特定のサイトにローカルであり、したがって、固有のサイト及び環境変数（例えば、会社名、システムＩＤ、部署及び他のＵＮＩＸ認証情報コンポーネント）並びに所有権を示す鍵のセグメントを含んでいてもよい。このデータの全てが暗号化され、機密保護されたブロックデバイスドライバに保存されると共に、機密保護されたブロックされたデバイスのスーパブロック自体にも含まれる。機密保護されたブロックされたデバイスドライバは、磁気ストレージ装置と同様にテープ状ストレージユニットに対する暗号化されたデータのストレージ及び検索のための読出及び書込動作を行うように設計される。
【００４８】
本発明に基づき、及びコアオペレーティングシステムによって提供される機能に加えてＥＯＳは、以下の付加的な機能を提供する。（１）データを暗号化することによって機密保護されたファイルを作成する。（２）ファイルの一括取り出しを防ぐ。（３）ファイルを開き、データを読み出し及び書き込むための機密保護されたファイルへの認証された許可されたアクセスを提供する。（４）ファイル内を検索するための認証された権限を提供する。（５）ファイルが閉じられ、したがってディスクに再び書き込まれる場合、ファイルを確実に暗号化する。（６）機密保護されたディレクトリを暗号化し、これにより、ディレクトリを機密保護する。（７）ディレクトリに対する権限のないリスト作成を防ぐ。（８）暗号化されたファイル名（すなわち、ディレクトリのコンテンツ）へのアクセスを制御し、これにより、暗号化されたファイルに対する認証されていない権限のない取り出しを防ぐ。
【００４９】
エキスパート管理システムは、データブロックを分割する処理を制御し、暗号化及びストレージ機能を実行する。エキスパート管理システムは、暗号化関数マシン（Encryption Function Machine）によるファイルのコンテンツとファイル名の暗号化を制御する。ファイルが暗号化されると、元のファイルの各ブロックについて、暗号化されたデータの４つの要素が生成される。４つの要素とは、暗号化されたファイルコンテンツと、暗号化されたファイルコンテンツ暗号鍵と、暗号化されたファイル名と、暗号化されたファイル名暗号鍵である。エキスパート管理システムは、元のファイルと、４つの暗号化されたデータエレメントの関連付けを制御する。
【００５０】
機密保護された１５個のストレージ領域の組織化及びこれらのストレージ領域へのアクセスの制御によって、更なる機密保護が実現される。暗号化されたファイルシステムは、暗号化されたファイルコンテンツと暗号化されたファイル名とを個別に格納するデータ金庫（Ｄ金庫）と、暗号化されたファイルコンテンツ鍵と暗号化されたファイル名鍵とを個別に格納する鍵金庫（Ｋ金庫）との２つの主記憶領域に暗号化されたデータを保存する。これらの金庫は、ストレージ媒体の如何なる位置からもファイル及びディレクトリにランダムにアクセスすることを可能にするデータベースプリミティブ及び制御を用いて設計され、構築されている。エキスパートファイル制御システムは、ＥＯＳの他のサブシステムであり、それぞれＤ金庫とＫ金庫へのアクセスを制御するデータ金庫管理サブシステムと鍵金庫管理サブシステムを含んでいる。
【００５１】
本発明の好適な実施形態として、本発明は、ファイル及びディレクトリデータを暗号化するための方法及びシステムを提供する。本発明の一実施形態では、データは、コンピュータメモリから転送される際に、いつでも暗号化できる。例えば、ファイルが閉じられ、プロセッサのバッファがフラッシュされる際、ファイルが補助記憶装置に書き込まれる際、コンピュータシステム上で実行される他の処理のための領域を確保するために、ファイルが補助記憶装置外にスワップされる際、ネットワークを介した伝送のために、ファイルをネットワークインタフェースカードに送る際、又は他のあらゆる適切な時期にデータを暗号化できる。
【００５２】
本発明の好適な実施形態は、カーネルレベルにおいて、データを暗号化及び復号する機能の組合せを用いるカーネルを有するＥＯＳを含む。第１に、ＥＯＳは、ユーザがコンピュータシステムに関するデータにアクセスする前に、ユーザがパスワード又はパスフレーズを入力することを要求する。パスワード又はパスフレーズを入力しなければ、ユーザは、データにアクセスできない。第２に、ユーザは、コンピュータシステムに関するデータへのアクセス権が与えられているグループに属さなければならない。アクセス権がなければ、ユーザは、データにアクセスできない。第３に、ユーザは、データを保存したコンピュータシステムに関するデータにアクセスしなければならない。このように、例えば、ユーザが第１のコンピュータシステムから、データを保存するために用いられたコンピュータストレージ装置を取り外し、このストレージデバイスを第２のコンピュータシステムに接続した場合、ユーザは、使用可能な形式でデータにアクセスできなくなる。すなわち、ユーザは、単にストレージデバイスを取り外し、他のコンピュータシステムにこのストレージデバイスを接続するだけでは、保護メカニズムを回避することができない。
【００５３】
以下で詳細に説明するように、暗号化されたファイルシステムの一部は、暗号化されたディレクトリエントリを有するディレクトリを含む。更に、ｉノードに関連するファイルデータは、暗号化されたデータを含んでいる。したがって、権限のないユーザがファイルのコンテンツを読み出すためには、２段階の処理を行う必要がある。まず、権限のないユーザは、暗号化されたファイル名を復号して、ディレクトリ内の正しいエントリを見つける必要がある。例えば、２０４８ビットの対称鍵等、長い鍵を用いてファイル名を暗号化していれば、この処理は、現実的には不可能である。仮に、権限のないユーザが正しいディレクトリエントリ及びファイルデータの位置（このデータのアドレスは、直接ポインタ、単一間接ポインタ、二重間接ポインタ、三重間接ポインタに含まれる。）を見つけたとしても、このユーザは、更に、ファイルがデータを復号する必要がある。ここで、低レベルのカーネル暗号化機能のみがアクセスでき、ユーザはアクセスできない、例えば、２０４８ビットの対称暗号化鍵等、長い鍵を用いてデータを暗号化していれば、この処理もまた実行不可能である。
【００５４】
機密保護のレベルを更に高めるために、暗号鍵を更に暗号化することが好ましい。
【００５５】
本発明の実施形態は、例えば、ＵＮＩＸシステム５リリース３〜５等、好ましくは、マイクロカーネルを用いたユニックスオペレーティングシステムに基づくＥＯＳを含む。また、本発明は、例えば、以下に限定されるものではないが、ＮｅｔＢＳＤ及びＦｒｅｅＢＳＤをはじめとするリナックスとＢＳＤのバージョン等のモノリシックカーネルに基づいて実現してもよい。
【００５６】
暗号化されたファイルシステム
暗号化されたファイルシステムは、データ金庫とも呼ばれるデータ構造に、ファイルの暗号化されたデータコンテンツを保存するオペレーティングシステムのサブシステムである。暗号化されたファイルシステムは、Ｄ金庫内に、暗号化されたファイルのコンテンツと、暗号化されたファイル名の両方を個別のエントリとして保存する。ファイルのコンテンツは、暗号化されたファイルコンテンツ鍵を生成する対称暗号化処理によって暗号化される。ファイルコンテンツは、最大２０４８ビットの対称鍵を用いて、最大１０２４ビットの対称ブロック暗号により暗号化される。同様に、ファイル名は、最大２０４８ビットの対称暗号化されたファイル名鍵を生成する対称暗号化処理によって暗号化される。
【００５７】
図１は、本発明に基づいて、ファイルを暗号化し、保護的に保存する処理の略図１１０を示している。ユーザ又は処理が提供するシステムファイルは、初期のファイル名ｓｆｎ１１２及び初期のデータコンテンツｓｆｃ１１４を有している。本発明によって保護されるシステムへのエントリ１１６において、ユーザ又は処理が提供するシステムファイルは、最初に、システムメモリ１１８のカーネルによって保存される。ユーザが提供したファイルは、本発明に基づいて、システムメモリ１１８からＥＯＳ１２２への入力データ１２０となる。暗号化ステップ１２４において、ＥＯＳ１２２は、４つの暗号化された情報、すなわち、暗号化されたファイルコンテンツｅｆｃ１２６と、暗号化されたファイルコンテンツ鍵ｅｆｃｋ１２８と、暗号化されたファイル名ｅｆｎ１３０と、暗号化されたファイル名鍵ｅｆｎｋ１３２とを生成する。そして、ＥＯＳは、４つの暗号化された情報を保護されたストレージ１３４に格納する。保護ステップ１３６、１３８において、ｅｆｃとｅｆｎは、それぞれ保護されたストレージ１３４のデータ金庫部分１４０に保存される。また、保護ステップ１４２、１４４において、ｅｆｃｋとｅｆｎｋは、それぞれ保護されたストレージ１３４の鍵金庫部分１４６に保存される。
【００５８】
図１２は、ＥＯＳ１２２が図１に示す暗号化ステップ１２４を実行する場合のより詳細な略図１２１０を示している。ユーザ又は処理が提供するシステムファイルの初期のファイル名ｓｆｎ１１２と、初期のデータコンテンツｓｆｃ１１４と共にユーザ又は処理は、初期のパス鍵１２１２を提供する初期のファイル名ｓｆｎ１１２とパス鍵１２１２は、第１の暗号化処理１２１６に入力され、ここで、ＥＯＳ１２２は、ｅｆｎ１３０とｅｆｎｋ１３２を生成する。ｅｆｎｋ１３２は、次に、第２の暗号化処理１２２０に入力される（１２１８）。また、ｅｆｎｋ１３２は、ｅｆｎ１３０と同様に、保護ステップ１４４、１３８にそれぞれ入力される（１２２２）。ｓｆｃ１１４は、ｅｆｎｋ１３２と共に第２の暗号化処理１２２０に入力される（１２２４）。第２の暗号化処理１２２０は、ｓｆｃ１１４とｅｆｎｋ１３２の両方を用いて、ｅｆｃ１２２６及びｅｆｃｋ１２２８の両方を生成する。次に、ｅｆｃ１２２６及びｅｆｃｋ１２２８は、それぞれ保護ステップ１３６、１４２に入力される（１２２２）。
【００５９】
図２は、本発明に基づいて、保護されたストレージからファイルを読み出し、ファイルを復号する処理の略図２１０を示している。ＥＯＳ１２２は、読出ステップ２１２、２１４において、ｅｆｃｋとｅｆｎｋとを鍵金庫１４６からそれぞれ読み出す。次に、ＥＯＳ１２２は、読出ステップ２１６、２１８において、ｅｆｃとｅｆｎとをデータ金庫１４０からそれぞれ読み出す。ＥＯＳ１２２は、ステップ２２０において、これらのデータコンポーネントを統合して、復号し、新たに再構築された元のデータファイルコンテンツｓｆｃ１１４をシステムメモリ１１８に入力する。ユーザは、ステップ２２４において、システムメモリ１１８からこの再構築されたファイルにアクセスする。
【００６０】
図３は、ＥＯＳを追加するための従来のＵＮＩＸオペレーティングシステムの変更点を明らかにするために、従来のＵＮＩＸのサブシステムコンポーネントカーネル３１０の略図を示している。従来のＵＮＩＸオペレーティングシステムの一般的なサブシステムコンポーネントとしては、ファイルシステム３１２、仮想メモリ３１４、ローダ３１６、ログストリームデバイスドライバ３１８、３２０、３２２、ネットワークデバイスドライバ３２６、テレタイプデバイスドライバ３２８、キャラクタデバイスドライバ３３０等がある。
【００６１】
図４は、ＥＯＳのコンポーネントの略図４１０を示している。図３に示す従来のＵＮＩＸオペレーティングシステムコンポーネントに加えて略図４１０では、この実施形態による従来のＵＮＩＸオペレーティングシステムの変更点を含む更なるＥＯＳのコンポーネントが示されている。すなわち、この変更に含まれるコンポーネントには、データ金庫管理サブシステム４１２、エキスパートデータ制御及び追跡サブシステム４１４、補助的な従来のＵＮＩＸカーネルサービスサブシステム４１６、仮想メモリ管理サブシステム４１８、暗号鍵管理サブシステム４２０、ファイル名管理サブシステム４２２、インテリジェントなファイル制御サブシステム４２４、ディレクトリ名管理サブシステム４２６、管理アクセス制御サブシステム４２８等がある。ここに示されている更なるコンポーネントとしては、ブロックデバイスドライバスイッチ４３０、磁気ストレージデバイスドライバ４３２、テープシステムデバイスドライバ４３４等があり、これらは全て、従来のＵＮＩＸカーネル３１０内に含ませることができる従来のＵＮＩＸコンポーネントを表す。補助的な従来のＵＮＩＸカーネルサービスサブシステム４１６は、データを暗号化し、制御し、並びにＥＯＳ１２２によって保護されるコンピュータシステム又はネットワーク内においてデータが存続する間、データへのアクセス許可を追跡するために必要な機能を提供するために従来のＵＮＩＸカーネル設計に加えられる。
【００６２】
エキスパートデータ制御システム
エキスパートデータ制御システムは、データ金庫管理システムとそのサブシステムに対するインテリジェントな制御を提供する。エキスパートデータ制御システムは、全てのデータの移動を制御し、データに対する全ての要求を解釈及び認証し、並びにディレクトリ名、ディレクトリコンテンツ及び暗号化されたファイルコンテンツに関する全てのアクセス及び管理の権限を認証する。エキスパートデータ制御システムは、人間のユーザによる介在を必要とすることなく、その機能を実行でき、推論、学習、推理、アサーションを含む様々な人工知能の側面を使用する。エキスパートデータ制御システムは、好ましくは、規則依存型のヒューリスティックス（rule-based heuristics）、遺伝的プログラミング、確率的予測に適用されるカルマンフィルタリング理論と組み合わされたニューラルネットワーク法等によって人工知能能力を実現する。
【００６３】
図５は、エキスパートデータ制御システム５１０の動作を抽象的に表現する図である。エキスパートデータ制御システム５１０は、推論エンジン（reasoning engine）５１２、推理エンジン（inference engine）５１４、学習エンジン５１６の３つの主なサブシステムを含んでいる。これらの３つのサブシステムは、それぞれオペレーティングシステム環境５１８から入力を受け取る。オペレーティングシステム環境５１８からの入力は、推論エンジン５１２のコンポーネントである推論オブザーバ５２０に入力される。推論オブザーバ５２０は、ユーザがコマンドを受け取り、システムコマンドのパターンの観測を行う。オブザーバ５２０の出力は、以前に観測されたパターンとマッチングされる。また、推論エンジン５１２への入力は、推理エンジン５１４からの出力である推理５２２と、学習エンジン５１６からの出力であるアサーション５２４とを含む。推論オブザーバ５２０の出力は、推理５２２及びアサーション５２４と共に、推論エンジンの５１２推論アルゴリズムによって処理される。
【００６４】
推論アルゴリズムは、機密保護概念、ヒューリスティックス及び妥当なシステム挙動パターンの定義を用いて、オペレーティングシステム環境５１８の新たな観測に関して推論されたアサーションを定式化する。これらの妥当なシステム挙動パターンは、一般的なシステム動作を行うためのコマンドに基づく一組の規則である。許容できて妥当な挙動は、あるコマンドパターンを解釈し、これらを機密保護に関して認識可能な説明及び予測に翻訳するように予めプログラムされた推理コマンドインタプリタによって認識できるコマンドパターンを構成する。そして、推論アルゴリズムは、安全性を脅かすイベントを導いた、又はセッションの終了時にシステムの安全性を脅かすことがなかったイベントを導いた過去のコマンドパターン及び過去のコマンドパターンに対応する以前のアサートに基づいて、アサーションを定式化する。推論エンジンの観測には、コマンドとコマンドパターンのそれぞれ及びその組合せ、過去のコマンドと期待された応答、システムの応答に関するユーザの期待を理解する試み、及びシステムの応答へのユーザによる反応等が含まれる。推論アルゴリズムによって生成され、推論エンジン５１２から出力され、推理エンジン５１４に入力される推論されたアサーション５２６は、所定の観測された状況に関して、真であると推理するのに十分であると判定された、推論されたアサーションを含んでいる。
【００６５】
推論エンジンによって生成される推論されたアサーション５２６は、所定のユーザからのコマンドの観測に関連するステートメントである。推論エンジン５１２は、特定のコマンドがオペレーティングシステムに対して何を意味するか及び他のコマンドと共に発せられた場合のそのコマンドの分岐を解釈し、システムの安全性に対するこのようなコマンドの効果に関するアサーションを生成する規則に基づいている。推論エンジン５１２のセキュリティ上の脅威に対するコマンドの感度は、学習エンジン５１６から出力されるアサーション５２４によって示される調整に応答して、自己修正可能である。
【００６６】
推理エンジン５１４のコンポーネントであるユーザコマンド及びシステム挙動モニタ５２８は、オペレーティングシステム環境５１８から入力を受け取る。ユーザコマンド及びシステム挙動モニタ５２８は、進行中のユーザコマンド及びアクションを監視及びフィルタリングし、ユーザがどのようなシステムの応答を期待しているかに関する解釈を生成し、生成された解釈と、ユーザが発行する更なるコマンドとを比較する。ユーザコマンド及びシステム挙動モニタ５２８のコンポーネントであるパターンマッチングインタプリタ５３０は、監視されたユーザコマンドとシステム挙動に関して推理されたパターン観測５３２を生成する。また、推理されたパターン観測５３２は、ユーザコマンド及びシステム挙動モニタ５２８に入力される。ユーザコマンド及びシステム挙動モニタ５２８が生成するアサーション５３４は、システム又はそのファイルの安全性を脅かす可能性があるユーザ側のあらゆる試みに対する応答に関する判断である。推論アルゴリズムは、ユーザコマンド及びシステム挙動モニタ５２８からのシステムの安全性、アサーション５３４及び推論されたアサーション５２６に関する情報を処理し、オペレーティングシステムの安全性に関する推理５２２を生成する。
【００６７】
オペレーティングシステム環境５１８の観測結果は、学習エンジン５１６の観測可能コンポーネント（observables component）５３６に供給される。真理システム（truth system）５３８は、学習エンジン５１６が真であると判定した提案及び学習エンジン５１６が提案をどのようにして真であると評価したかに関する情報の集合を表す。真理システム５３８は、オペレーティングシステム環境５１８からの入力との比較のために、観測可能コンポーネント５３６への入力５４０として真理の集合を提供する。これらの比較結果は、真理システム５３６にフィードバック５４０として供給され、進行中の真理の評価に役立てられる。真理システム５３８は、過去の挙動５４４の知識の再評価及び将来の挙動予測５４６に基づいて、ゲイン及び調整コンポーネント５４８によって継続的に更新される。ゲイン及び調整コンポーネント５４８は、図６に示す適用されたカルマンフィルタリングを用いて、新しい知識を生成し、現在の知識を再評価して、真理システム５３８に組み込む。システムセキュリティヒューリスティックスエンジン５５２は、推理５２２と関連するアサーション５２６も考慮に入れた学習アルゴリズムを用いて、観測可能コンポーネント５３６、真理システム５３８及びオペレーティングシステム環境５１８からの情報を処理する。学習アルゴリズムの結果は、学習アサーションエンジン５５４によって生成されるアサーション５２４の基礎となる。アサーション５２４は、特定のユーザによって取られた一組の行動に関してエキスパートシステムが知っていると判断した知識に基づいている。ゲイン及び調整コンポーネント５４８によるこの知識の調整は、知識ベースモデルにおけるゲインであり、これは、オペレーティングシステムを使用する際の特定のユーザ及びそのユーザの意図に関する知識のゲインを含む。
【００６８】
カルマンフィルタリング理論の適用
図６は、ゲイン及び調整コンポーネント５４８によって適用されたカルマンフィルタリングのアプリケーションのゲインアルゴリズム６１０を抽象化して示す略図である。カルマンフィルタリングは、予測を生成するために採用され、ＥＯＳにおいて、様々な用途で利用されるゲインアルゴリズムは、このような用途の１つの具体例である。カルマンフィルタは、現在及び将来のファイルの保護状態に関する予測を生成する。予測は、ファイルが最後に開かれ又は変更された際に、リスクに関する先の評価をそのファイルの保護状態に取り入れ、及びそのファイルが先に開かれ又は変更された際にファイルに対して用いられたコマンドを考慮に入れる。予測モデルは、予測モデルのセキュリティ評価に対するゲインアルゴリズム６１０の動的な変更によって更新される。ゲインアルゴリズム６１０において考慮に入れられる要素としては、例えば、将来の挙動予測５４６によって提供された将来に関する予測６１２、システムの進行中の動作からの動的なゲイン６１４、時刻Ｔ−１での補正に起因するゲイン６１６等がある。
【００６９】
ゲインアルゴリズムは、タイムステップ原理（time step principle）に基づいて動作する。所定の時刻は、変数Ｔによって示される。先の時刻は、変数Ｔ−１によって示され、次の時刻は、変数Ｔ＋１によって示される。将来に関する予測６１２は、時刻Ｔ＋１に基づく真理の評価６１８と、総合的なゲイン及び調整５４８の両方に入力される。時刻Ｔ＋１に基づく真理の評価６１８は、時刻Ｔに基づく真理の評価６２０と、総合的なゲイン及び調整５４８の両方に入力される。また、システムの進行中の動作からの動的なゲイン６１４も時刻Ｔに基づく真理の評価６２０に入力される。時刻Ｔに基づく真理の評価６２０と時刻Ｔ−１での補正に起因するゲイン６１６は、何れも時刻Ｔ−１に基づく真理の評価６２２に入力される。そして、時刻Ｔに基づく真理の評価６２０と、時刻Ｔ−１に基づく真理の評価６２２もまた、総合的なゲイン及び調整５４８に入力される。
【００７０】
鍵管理システム
鍵管理システムは、ファイルのコンテンツとファイル名を暗号化する際に生成された鍵を管理する。また、鍵管理システムは、暗号化されたファイルのコンテンツとファイルを復号する際、暗号化されたファイルコンテンツ及びファイル名鍵を管理するためにも用いられる。鍵管理システムは、ファイル名及びディレクトリ名へのアクセスを制御し、ファイル名とファイルコンテンツをどこに保存するかを制御するカーネルの処理を補助することによって、ファイルのコンテンツへのアクセスの制御に貢献する。暗号化されたファイル名とコンテンツは、それぞれの正しい鍵によってのみ復号することができる。暗号化されたファイル名が復号された場合のみ、暗号化されたファイルのコンテンツを見つけることができる。暗号化されたファイル名が漏洩したとしても、１つの暗号化されたファイルの暗号化されたファイル名は、他の暗号化されたファイル名と区別することができない。ファイルのパス又はその名称の暗号化により、暗号化されたファイルの完全性の保護が強められ及びこれらのファイルのコンテンツの安全性が高められる。
【００７１】
暗号化されたファイル名と暗号化されたファイルコンテンツは、データ金庫と呼ばれるストレージ媒体の保護領域内に格納される。データ金庫は、暗号化されたディレクトリと同様のデータ構造を有するが、データ金庫内では、全てのファイル名が暗号化される点が異なっている。鍵金庫データ構造にＥＯＳが追加される点もストレージを組織化する標準ファイルディレクトリシステムとは異なる点である。鍵金庫は、暗号鍵を含むストレージ媒体の保護領域（ディレクトリ）である。鍵金庫とデータ金庫は、個別のデータ構造である。
【００７２】
なお、本発明の一実施形態では、対称暗号化アルゴリズムが用いられ、すなわち、データの暗号化及び復号に同じ鍵が用いられる。したがって、用語「暗号鍵」は、データの暗号化及び復号の両方に用いられる鍵を示す。また、本発明においては、次のような理由から、対称鍵を用いることが望ましい。（１）データを暗号化及び復号するために単一の鍵を用いることができ、これにより、鍵管理を簡略化することができる。（２）公開鍵暗号スキームを用いる場合と異なり、数を必ずしも素因数分解する必要がないので、鍵を比較的簡単に生成できる。（３）したがって、多数の可能な鍵を速やかに生成することができる。但し、変形例として、本発明において、公開鍵を用いてもよい。
【００７３】
鍵管理システムは、ユニックスファイルシステムに対する安全性の拡張である。システムとファイル認証情報は、安全なパスフレーズ（ユーザ又はシステムが入力する入力文字列）に結合され、これにより、安全な暗号鍵が生成及び管理される。なお、ファイル認証情報は、継承してもよい。例えば、ユーザが処理又はアプリケーションプログラムを呼び出す場合、処理又はアプリケーションプログラムは、ユーザの認証情報を継承してもよい。同様に、第１のアプリケーション又は処理が第２のアプリケーション又は処理（例えば、子プロセス等）を呼び出す場合、第２のアプリケーション又は処理は、第１のアプリケーション又は処理の認証情報を継承する。
【００７４】
従来のＵＮＩＸファイルシステムでは、ファイルは、ファイル名、ファイルコンテンツ、例えば許可と変更の日時等の管理用の認証情報等の幾つかの要素を含んでいる。管理情報は、例えば、ファイルサイズ、ファイル作成情報、ファイルの所有者、及びファイルのコンテンツがディスクのどこに保存されているかに関する情報等の不可欠のシステムデータと共にｉノードに保存される。また、ｉノードには、ファイルのコンテンツが最後に変更された時刻、ファイルが最後に用いられた時刻、及びｉノード自体が最後に変更された時刻の３つの時刻が記録されている。
【００７５】
本発明に基づくＥＯＳでは、ｅノードの構造は、従来のｉノードの役割を満たす。ｅノードの構造は、データを暗号化して、保護的に保存する処理に貢献し、ユーザ操作に対するインテリジェントな評価を実現する。カーネルは、ｅノードを用いて、暗号化されたデータを処理するために、インコアｅノードに（in-core e-node）ｅノードコンテンツを読み出す。ｅノードは、ｅファイル（暗号化されたファイル：encrypted file）、所有者識別子フィールドを含む複数のフィールドを有する。ファイル所有権は、暗号化されたファイルの個々の所有者と、「グループ」所有者とに分割され、ファイルへのアクセス権を有するユーザの組を定義する。コンピュータシステムの所有者は、暗号化された全てのファイルコンテンツにアクセスすることができ、一方、スーパユーザは、特別に権限が与えられたファイルコンテンツのみにしかアクセスすることができない。ｅノード内に含まれる他のフィールドについては、以下、図７及び図８を用いて詳細に説明する。
【００７６】
図７は、本発明の一実施形態に基づく鍵管理手続き７１０の略図である。ユーザが提供したファイル名７１２とファイル鍵７１４は、システムのファイルデータ７１８に入力される（７１６）。また、ユーザが提供したファイル鍵７１４は、許可サブシステム７２２にも入力される（７２０）。許可鍵管理システム７２４は、許可サブシステム７２２の機能を実現するために用いられる暗号鍵を制御する。許可鍵管理システム７２４は、許可機能に関連する鍵を生成及び管理する。これらには、ユーザが提供したファイル鍵７１４からの鍵Ａに対応して生成された鍵１（７２６）と、ユーザＩＤに対応して生成された鍵２（７２８）と、システムＩＤ（例えば、メディアアクセスコントローラ（media access controller：ＭＡＣ）又はイーサネット（登録商標）カード番号）に対応して生成された鍵３（７３０）と、プロジェクト情報に対応して（例えば、変更されたＵＮＩＸグループＩＤを形成する部署、グループ、会社の任意の組合せ）生成された鍵４（７３２）とが含まれる。鍵管理システム７２４とファイルデータ７１８から生成された鍵７２６〜７３２は、暗号化されたファイルシステム７３４に入力される。ファイルシステム７３４は、暗号化されたファイル７３６と暗号化されたファイル鍵セット７３８（例えば、変更されたＵＮＩＸ認証情報）とを生成する。暗号化されたファイル７３６と暗号化されたファイル鍵セット７３８は、ｖノードテーブル７４０に供給される。ｖノードテーブル７４０は、システムの仮想メモリ内のデータに関する変更日時を含む情報を含んでいる。ｖノードテーブル７４０に含まれる情報としては、ｖノード情報７４２、ｉノード情報７４４、現在のファイルサイズ７４６、他のファイル情報７４８等がある。ｅノード構造に含まれる更なる情報要素としては、許可サブシステム７２２、暗号化されたファイルシステム７３４、ｖノードテーブル７４０に含まれる様々な情報要素がある。
【００７７】
ＥＯＳによってユーザを認証するために用いられるコンポーネントは、ファイル名、ファイルコンテンツ及び管理情報である。システムに依存する情報（ＭＡＣアドレス等）を用いてユーザを確認することにより、データを暗号化したマシンでしかデータを復号できないことを確実にすることができる。このように機密保護のレベルを高めることにより、権限のないユーザが第１のコンピュータシステムからストレージ媒体を取り外し、第２のコンピュータシステムに、このストレージ媒体上のデータを読み出させるといった行為が不可能になる。データを暗号化及び保存したコンピュータシステム以外では、そのデータを復号し及び読み出すことができないようにすることが好ましい。
【００７８】
ＥＯＳによって用いられる許可には、暗号化されたファイル情報への所有者の権利、暗号化されたファイル情報へのグループの権利、暗号化されたファイル情報への他の権利等がある。ＥＯＳによって追跡されるファイル変更時刻及び日付としては、ファイルのコンテンツが最後に暗号化され又は変更された日時、ファイルコンテンツが最後に復号された日時、ｉノード自体が最後に変更された日時等がある。まて、本発明では、所有者、グループ及びその他の者に対するファイルへのアクセス権を拡張し、例えば、企業、特定の部門、特定の部署にアクセス権を与えることもできる。更に、アクセス許可は、読出、書込、実行を行う権利から、例えば、復号、削除、移動を行う権利に拡張してもよい。
【００７９】
従来のＵＮＩＸオペレーティングシステム内の全てのファイル及びディレクトリへのアクセスは、許可によって制御される。ＵＮＩＸのＥＯＳ拡張においては、ファイル及びディレクトリへのアクセスは、複数の要素によって制御される。これらの要素としては、例えば、ファイルを閲覧する許可、要求及び要求を出したユーザの両方の認証、ユーザが特定のデータ、処理又はプログラムを要求することの許可、特定の要求に対する個々の許可等がある。許可は、シェルレベルで入力されたコマンド又はプログラムを介してファイルアクセスが呼び出されているかを確認される。許可は、アクセスの読出、書込、実行、暗号化、復号についてそれぞれ個別に定義される。許可は、所有者、グループ及びその他の３つのレベルで与えられる。許可は、有効なユーザＩＤに基づいて、システムにおいて内部的に確認され、また、ユーザＩＤを他の番号に設定する。
【００８０】
ｅノード及びファイル識別
各ファイルは、ｉ番号によって特定されるｅノード構造を有している。ｅノードは、ファイルにアクセスするために必要な情報を含んでおり、この情報には、以下のようなものがある。
ファイルの種類とモード（通常のファイル、ディレクトリ、特別なファイル等）
ファイルへのリンクの数
所有者のユーザＩＤ
所有者のグループＩＤ（部署、会社等）
ファイルアクセス許可
ファイルのバイトサイズ
最大１３ディスクブロックの３バイトアドレス
最後のアクセスの日時
最後の更新の日時
新規作成日時
また、用いられる各ファイルには、他の２つの構造、すなわち、ファイル構造と、「インコア」ｅノードとが関連付けられている。ファイル構造及びファイルテーブルのエントリは、ファイルが開かれ、又は新たなファイルが作成される毎にセットアップされる。ファイルには、２つ以上のファイル構造を関連付けてもよい。インコアｅノードは、ディスクｅノード内にある全ての情報を含むとともに、更に以下のような情報を含んでいる。
ｅノードのアクセス状態フラグ
ｅノードがロックされている（進行中の変更） 
処理が、電子ノードがアンロックされることを待機している
インコアｅノード内のファイル情報が変更されている
ファイルコンテンツ変更、インコアｅノード変更
認証情報
ファイルは、マウント可能なデバイスである
テーブルエントリから取得された参照カウント
ディスクｅノードがあるデバイスＩＤ
ファイルポインタのディスクアドレス
最後に読み出された論理ブロック（ファイル位置）
ｅノードのロックは、正しい認証情報を有する２つの処理が、同時にファイル又はそのｅノードを変更しようとすることを防ぐために用いられる。処理待ちフラグは、「呼出バック」と同等であり、ｅノードがアンロックされると、ファイルが使用可能になったことが処理に知らされる。
【００８１】
図８は、鍵管理手続き７１０に示すデータ構造に加えられる更なるｉノード構造データフラグ８１０を示している。図８の中央及び左側に示す要素は、鍵管理手続き７１０内の同じ要素に対応する。図８の右側に示す要素は、図７に示すｉノード情報７４４の要素である。ｉノードテーブル８１２には、ｉノード情報８１４、８１６、８１８等の複数のエントリが追加されている。これら３つのエントリは、例示的に示しているに過ぎず、これらのエントリの数又は種類はここに説明するものに限定されるわけではない。また、ｉノードテーブル８１２には、現在のファイルサイズ８２０も更なる情報として含ませることができる。ｉノード構造データフラグ８１０の更なるエントリとしては、最後に暗号化された鍵リスト８２２を含ませることができる。ここでは、最近に暗号化された４つの鍵を例示的に示しているが、この数は限定的ではなく、様々な種類の鍵に関する情報をここに含めることができる。また、ｅノード構造には、ｉノードテーブル８１２及び最後の暗号化された鍵リスト８２２内に含まれている様々な情報を更に含ませることができる。ＥＯＳにおける実際のインデックス付与は、ｅノード構造によって実行される。ｅノード構造は、従来のオペレーティングシステムのｉノード機能を含むと共に、暗号化機能、許可、変更日時、使用パターン、知識及び判断、及びＥＯＳが暗号化されたデータブロックの実際のストレージ位置をどのように示すかに関する情報等の情報を含んでいる。
【００８２】
管理監査システム（Administrative Audit System）
管理監査システムは、データ金庫の保護管理下にある全てのファイルに対してオペレーティングシステムによって実行される全ての管理コマンドを記録する。管理監査システムは、データ金庫内のファイルに対して実現されるタスクに対する責任とタスクの性能の両方を追跡及び記録する。各システム管理者は、データ金庫内の暗号化されたファイルの少なくとも幾つかを管理及び維持する固有の鍵の組を有する。多くの場合、特定のシステム管理者には、暗号化されたファイルに関して限定された一組のコマンドを実行することが許可されており、及びデータ金庫内のファイルに対して限定的な一組のタスク又は動作を実行する権限が与えられている。システム管理者がデータ金庫内のファイルに対して行うあらゆる操作は、管理監査システムによってトレース及び記録され、これにより、全ての操作を追跡でき、全てのパーティに対し、それらが実行する操作の責任を負わせることができる。ルート管理者の責任は、ルートパスワードについての管理者の特権（administrator privileges）を含んでいる。ルートパスワードの管理者特権は、鍵管理システムの制御によって暗号化されたファイル名と、それらの保護されたコンテンツに制限されている。
【００８３】
コマンド監査トレース
一旦暗号化されたファイルコンテンツ及びファイル名に対する全てのコマンドは、コマンド監査トレースシステムによる将来の監査とトレースのために記録される。コマンド監査トレースシステムは、これらのファイルが暗号化されていない状態である場合、これらのファイルに対する全てのコマンドを記録し、この情報を収集して、ファイルの機密保護の状態を評価するカルマンフィルタリングプログラムに入力する。コマンド監査トレースシステムが非暗号化されたファイルコマンドを記録する他の機能の内、ファイルのコンテンツの部分又は全てを削除するために用いられたメソッドをトレースし、ファイルのコンテンツデータの完全性を判定する機能がある。暗号化されたファイルに関してコマンド監査トレースシステムによって収集された情報は、通常、必要に応じて様々なプログラムによってアクセスするために、データ金庫内のその暗号化されたファイルのコンテンツと共に保存される。これにより、コマンド監査トレースシステムは、保護管理下の所定のファイルに関する、システム管理者の全ての活動の記録された履歴を提供できる。また、これにより、コマンド監査トレースシステムは、完全には信頼できないと判断された管理者に機密保護を任せる際に、判断の誤りを検出及び補正するための二次的な手段を提供できる。各トレース履歴は、暗号化によってロックされ、鍵管理システム下で保存され、ルート管理者の制御の下で、マスタ鍵によってのみアクセス可能な鍵により、改竄が防止される。
【００８４】
ファイル保護管理システム
ファイル保護管理システムは、ファイル名又はファイルのコンテンツの暗号化と復号に関して保存される情報を管理及び制御する。ファイル保護管理システムは、自らの制御の下で、機密保護された空間に元のファイル名を保存し、元のファイルのコンテンツに関連している元のファイル名を暗号化されたファイルのコンテンツに関連している暗号化されたファイル名に置換する。
【００８５】
インテリジェントファイル制御システム
インテリジェントファイル制御システムは、元のファイル名を保存及び機密保護し、その暗号化されたファイル名に元のファイル名をマッピングすることによって、ファイル保護管理システムデータベースのための鍵インデクスとして機能する。すなわち、インテリジェントファイル制御システムは、暗号化されたファイル名とそれらの元のファイル名との間の関係を制御する。ファイル名、ファイルコンテンツ及びそれらのそれぞれの暗号鍵の管理機能及び許可機能は、何れも、インテリジェントファイル制御システムによって提供される。機密保護されたメモリからどのようにファイルにアクセスし、ファイルを入手するか、及びファイルのコンテンツをどのように変更するかは、インテリジェントファイル制御システムによって制御される。ファイルは、ユーザによってファイルに与えられたシステムファイル名と、ユーザが、特定のファイル又は機密保護されているファイルについて選択した鍵とを用いて、機密保護された手続きを介してアクセスされる。インテリジェントファイル制御システムは、新たなファイルを作成し、現在機密保護されているファイルへのユーザアクセスを管理し、既存のファイルを削除することができる。
【００８６】
Ａ．新たなファイルの作成
ユーザ又は処理が、新たなファイルの作成を試みた場合、インテリジェントファイル制御システムは、ユーザが選択したシステムファイル及び機密保護された鍵を入手することによって、保存されている全てのファイル名をチェックする。インテリジェントファイル制御システムは、暗号化処理を実行し、及びアクセス審査を実行し、ファイル名が機密保護されているユーザ空間内に存在するか否かを判定する。ファイルが存在している場合、ファイルシステムは、元の保存された機密保護されたファイルのコンテンツを妨害することなく、エラーを返す。エラーが修正されない場合、インテリジェントファイル制御システムは、この操作をユーザのファイル権限の機密保護に反する試みとして報告し、レベル１の警戒評価（threat assessment）を設定する。エラーが繰り返された場合、インテリジェントファイル制御システムは、警戒評価をレベル２に引き上げ、この操作をそのユーザのファイル権限の機密保護に反する試みとして報告する。この操作が再び行われる前に、警戒レベル評価が作成され、全体的なシステム警戒レベルを高めることなく、このような操作の継続を容認することができるか否かが判定される。
【００８７】
Ｂ．現在機密保護されているファイルへのユーザ又は処理のアクセスの管理
インテリジェントファイル制御システムは、ファイル名とその鍵を暗号化し、ｅｆｎ（暗号化されたファイル名：encrypted file name）と呼ばれる保存されたファイルの機密保護されたファイル名を生成する。機密保護された名称がストレージから読み出された後に、機密保護された暗号化されたファイルのコンテンツへのアクセスをユーザに許可する前に、最終的な確認としてユーザ又は処理によって提供された機密保護された名称と、保存されている機密保護された名称とが比較される。新たに生成されたｅｆｎと、元のｅｆｎとが一致する場合、機密保護されたファイル名は、関連するファイルの暗号化されたコンテンツにアクセスするために用いられる。これらのｅｆｎが一致しない場合、アクセスは、拒否され、その特定のユーザについて警告が発せられる。そのユーザへの警告は、所定の期間内に繰り返された操作が成功した場合にのみリセットされる。
【００８８】
Ｃ．既存のファイルの削除
機密保護されたメモリからファイルを削除するためには、ユーザは、まず、既存のファイルにアクセスし、及びファイルコンテンツの削除の権利を獲得するための手続きを行わなければならない。ファイルのコンテンツを削除する権利は、そのファイルの所有者又はファイルの所有者のプライベート金庫セクションからコンテンツを削除する権利が与えられたグループ（例えば、部署、会社等）のメンバのみに与えられる。ファイルコンテンツと暗号化されたファイル名が共有金庫セクション内にある場合、暗号化されたファイル及びそのコンテンツの削除を行う権利は、その共有金庫セクション内にある少なくとも幾つかのファイルのファイル削除権が付与されたグループのメンバのみに与えられる。削除権を有さないユーザによってファイルを削除する試みが実行された場合、このような試みは、ファイルの所有者の権限に対する、及びそのファイルの削除権を有しているあらゆるグループの権限に対する機密保護の脅威となる試みとして報告される。このようなファイルを削除する試みが失敗すると、ファイルを作成する試みが失敗した場合と同様、警告が発せられ、警戒レベル評価が設定され、失敗した試みに関する報告が作成される。但し、この場合、機密保護に対する警戒レベルは、４に設定される。削除の試みの失敗は、アクセスを得る試みの失敗よりも重大なものであり、したがって、この場合の警戒レベルは、より高く設定される。このような試みの失敗が繰り返されると、この操作を行ったユーザによるファイルへのアクセスが禁止される。このようなアクセスの禁止は、失敗した試みの対象となったファイルの所有者に属する全てのファイル、及び失敗した試みの対象となったファイルに対する削除権を有するグループが削除権を有している全てのファイルに適用される。ユーザのアクセス禁止をリセットできるのは、システム管理者のみである。
【００８９】
ファイル名管理サブシステム
ファイル名管理サブシステムは、データ金庫内に保存されている各ファイルのファイル名を暗号化及び保存する機密保護されたシステムを含んでいる。ファイル名管理サブシステムは、知識依存学習及び推論を用いて、実際のファイル名へのアクセスについて、誰が適切に認証された権限を有しているかを学習し、ファイルのコンテンツを管理するエキスパートシステムである。また、ファイル名管理サブシステムは、ファイル名ではなく、ファイルのコンテンツへのアクセスについてのみ、誰が正当な権限を有しているかを学習してもよい。
【００９０】
ファイルの内部表現
ＵＮＩＸベースのオペレーティングシステムにおいては、ｉノードは、ＵＮＩＸファイルシステム内の個々のファイルのコンピュータに保存された記述である。ｉノード記述に含まれるファイル情報は、以下の通りである。
・ファイルの所有者識別情報：ファイル所有権は、個人所有者とグループ所有者とに分けられ、ファイルへのアクセス権を有するユーザの組を定義する。
・ファイルの種類：ファイルの種類は、通常（暗号化されていない）、ディレクトリ（暗号化されていない）、暗号化されたファイル、暗号化されたディレクトリ、文字又はブロックスペシャル及びＦＩＦＯ（パイプ）等がある。
・ファイルアクセス：通常の暗号化されていないファイルシステム内のｉノードについては、スーパユーザは、全てのファイルへのアクセス権を有している。暗号化されたファイルシステムについては、スーパユーザは、全ての暗号化されたファイルへのアクセス権を有しているシステム所有者に置換される。スーパユーザは、所有者に次ぐアクセス権を有している。スーパユーザのアクセス権には、ファイルに対する処理の監視及びファイルシステムからの結果の管理が含まれる。また、スーパユーザのアクセス権は、暗号化されたファイルシステムのコンテンツに対して削除、変更するか又はコピーを行う権利を含んでいない。システム所有者は、一般に、有効性が限定されている、例えば、有効期限が設けられている特殊な承諾鍵を提供することによってこれらの権利をスーパユーザに与えることができる。この期間内においては、全ての操作に関する追跡を行うために、スーパユーザによって実行された全ての操作が監視され、報告が作成される。
【００９１】
エキスパートデータ制御システム
エキスパートデータ制御システムは、データ金庫管理システムとそのサブシステムのインテリジェント制御を提供する。エキスパートデータ制御システムは、全てのデータの移動を制御し、データに対する全ての要求を解釈及び認証し、並びにディレクトリ名、ディレクトリコンテンツ及び暗号化されたファイルコンテンツに関する全てのアクセス及び管理の権限を認証する。エキスパートデータ制御システムは、人間のユーザによる介在を必要とすることなく、その機能を実行でき、推論、学習、推理、アサーションを含む様々な人工知能の側面を使用する。エキスパートデータ制御システムは、規則依存型のヒューリスティックス、遺伝的プログラミング、確率的予測に適用されるカルマンフィルタリング理論と組み合わされたニューラルネットワーク法等によって人工知能能力を実現する。
【００９２】
業者／銀行／決済機関の例示的なシナリオ
本発明に基づくＥＯＳの動作の具体例として、本発明を業者サイト／銀行サイト／決済機関サイトへの適用を説明する。この具体例は、ＥＯＳにより、銀行と業者の間の仮説的な決済関係の機密保護がどのようになされるかを説明する。業者及び業者の銀行は、共に、ＥＯＳの制御の下でそれぞれのシステムを実行し、データを暗号化された形式のみで保存する。オプションとして、業者及び業者の銀行がそれぞれ暗号化された形式のデータを伝送することによって、より強力な機密保護が実現される。両者が暗号化された形式のデータのみを伝送すれば、データは、生の（暗号化されていない）の形式でディスクに保存する必要がなくなる。ＥＯＳを実行し、データを復号することができる受信機に標準の伝送鍵と共にデータが送信される場合、このデータは、ディスクに保存される暗号化された形式で伝送することができる。
【００９３】
業者は、毎週、その週のデータについて、独立した暗号化された鍵（例えば、鍵１）を加盟銀行（連邦預金保険機構に加盟している銀行）に送る。鍵１は、業者の機密保護ポリシーに基づいて定義される。その週の全てのデータは、鍵１によって暗号化及び復号することができる。典型的なシナリオでは、以下のような手順が実行される。
ステップ１．業者は、暗号化のために鍵１をＥＯＳに送る。
ステップ２．暗号化された鍵１を加盟銀行に送る 。
ステップ３．加盟銀行が鍵１を復号及び保存する。
ステップ４．業者が営業終了後に加盟銀行に暗号化されたデータを送る。
ステップ５．加盟銀行が暗号化されたデータを受け取り、鍵１を用いてこのデータを復号する。
【００９４】
図９は、ＥＯＳ９１３を利用する業者サイト９１１／銀行サイト９１２の略図９１０を示している。ＥＯＳ９１３は、暗号化された形式のデータの保存、及び各伝送用の合意された鍵を用いる業者とその業者が取引する銀行との間の暗号化されたデータの伝送の両方に使用される。業者サイト９１２は、クレジットカードによる支払い９１４の形式で取引情報を受け取る。クレジットカード取引の非暗号化されたデータ９１６は、業者サイトメインフレーム９１８に送信される。業者サイトメインフレーム９１８上の取引データは、ＥＯＳ９１３の指示に基づいて暗号化／復号される。暗号化されたデータ９２２は、ストレージ９２４に保存され、及び取引ブローカ９２６にルーティングされる。取引ブローカ９２６は、適切な暗号化されたデータを業者の銀行９２８に送る。銀行９２８もＥＯＳ９１３を用いている。また、取引ブローカ９２６は、例えば、インターネット等のネットワーク接続９３０を介して、銀行サイト９１１に適切な暗号化されたデータを送信する。銀行サイト９１１は、ネットワーク接続９３０を介して受信した暗号化されたデータ９２２を、業者のサイト９１２の動作と同様に、保存及び処理する。また、銀行サイト９１１は、決済機関９３２に暗号化されたデータを伝送する。
【００９５】
業者の銀行サイトのコンポーネントは、メインフレームコンピュータ９１８、補助記憶装置アレー９２４及びＥＯＳ９１３を含んでいる。メインフレーム９１８は、コアメモリにおいて、取引データを処理し、これらの取引のバッチファイルを構築し、このデータをＥＯＳ９１３に送り、暗号化した後にディスクに保存する。取引９１６が暗号化されたバッチファイルに加えられる場合、メインフレーム９１８は、取引９１６を処理し、既に暗号化されているバッチファイルに追加する。メインフレーム９１８及びＥＯＳ９１３は、ディスクから暗号化されたバッチファイルを読み出し、このバッチファイルを復号し、新たな取引を追加し、新たなバッチファイルを暗号化し、新たな暗号化されたバッチファイルをディスクに保存する。図１０は、取引データを常に暗号化された形式で保存する手法を示している。図１０に示す手法は、ファイアウォールより安全なデータ保護を提供する。ファイアウォール保護が不十分なために、侵入者がデータに不正にアクセスしたとしても、ディスクに保存されている暗号化されたデータは、最も高度な技術を有する侵入者でも判読することが困難である。
【００９６】
図１０は、バッチデータを暗号化及び復号するメインフレーム９１８とＥＯＳシステム９１３の詳細な構成１０１０を示している。取引を示すデータが供給されると、このデータは、コアメモリ１０１２に蓄積され、バッチファイル１０１４が作成される。バッチファイル１０１４は、ＥＯＳ９１３に送信され、ディスクに保存される前に暗号化される。既に暗号化されているバッチデータ１０１６は、まず、復号し、新たな取引を追加する必要があり、したがって、ディスクから読み出し、ＥＯＳ９１３によって復号する必要がある。一旦、バッチデータ１０１６が復号されると、新たな取引データが追加され、改訂されたバッチファイル１０１８が生成される。改訂されたバッチファイル１０１８が作成されると、改訂されたバッチファイル１０２０は、ＥＯＳ９１３を用いて、暗号化された後、ディスクに再び保存される。第１の暗号化されたバッチデータ１０１６と、改訂された暗号化されたバッチデータ１０２０は、何れもコアメモリに返される。全てのバッチデータは、コアメモリで処理され、ＥＯＳ９１３によって暗号化され、ディスクに保存される。
【００９７】
図９は、銀行サイト９１１からクレジットカード決済機関９３２へのクレジットカード取引データの流れを示している。クレジットカード取引は、全てのデータがＥＯＳ９１３によって暗号化されているため、インターネット等の公衆ネットワークを介して、伝送することができる。取引データは、処理の間、メモリにおいてのみ、暗号化されていない状態で存在する。個々の業者トランザクションファイルは、その業者のパーソナル鍵を用いて復号される。そして、情報が処理され、その加盟銀行の他の取引と合併される。合併されたデータは、ＥＯＳによって、銀行の鍵を用いて暗号化された後、ディスクに保存される。クレジットカード決済機関９３２は、メンバの銀行９１１から暗号化された取引ファイルを受け取る。各メンバの銀行９１１は、それぞれ個別の鍵を用いる。また、クレジットカード決済機関９３２は、アクセスポイントにおいて、ＥＯＳ９１３を用いて、暗号化された取引ファイルを復号し、及び更に必要な処理を実行し、続いて、データを再び暗号化した後、クレジットカード処理センタにファイルを転送する。各業者９１２は、インターネットを介して、加盟銀行９１１から、暗号化された取引データを受け取ることができる。銀行は、加盟銀行９１１と業者９１２のみが知る固有の鍵を用いてデータを暗号化する。業者は、この情報を暗号化された形式でディスクに保存する。オプションとして、暗号化されたデータは、必要に応じて、モデム（図示せず）を用いて、交換網を介して伝送してもよい。
【００９８】
図１１は、業者／銀行／決済機関の通信関係１１１０を示している。この通信関係１１１０は、本発明のＥＯＳによって、ＲＡＩＤシステム又はハードディスクストレージ装置等の補助記憶装置に、生の、暗号化されていない形式でデータを保存する必要がなくなることを示している。決済機関１１１２は、業者の銀行Ａ１１１４、Ｂ１１１６のための鍵を所有している。決済機関１１１２は、各鍵を用いて、業者の銀行と全てのデータ通信を行う。例えば、業者の銀行Ａ１１１４は、決済機関１１１２に暗号化された形式でデータを伝送する。決済機関１１１２は、既に、業者の銀行Ａ１１１４のデータ１１２０を復号するための鍵Ａ１１１８を有しており、したがって、更なる鍵を伝送する必要はない。同様に決済機関１１１２は、既に、業者の銀行Ｂ１１１６のデータ１１２４を復号するための鍵Ｂ１１２２を有しており、したがって、更なる鍵を伝送する必要はない。業者の銀行Ａ１１１４、Ｂ１１１６は、それぞれ個別の鍵を用いて、業者Ａ−１（１１２８）、Ａ−２（１１３０）、Ｂ−１（１１３２）、Ｂ−２（１１３４）とバッチデータ取引を送受信する。例えば、暗号化された形式のバッチデータは、業者Ａ−１（１１２８）から業者の銀行Ａ１１１４に送信される。業者Ａ−１（１１２８）のバッチデータを受信し、処理するために、業者の銀行Ａ１１１４は、業者の鍵Ａ−１（１１３６）を使用する。この業者／銀行／決済機関の通信関係１１１０により、データは、コアメモリにおいて処理することができるとともに、暗号化された形式でディスクに保存でき、及びバッチデータは、ディスクに保存される形式と同じ暗号化された形式で伝送することができる。
【００９９】
このように、本発明の様々な目的と特徴が実現され、他の有益な利点が得られる。なお、ここに示す具体例は、説明のための例示的なものであり、本発明を限定するものではない。
【０１００】
ＥＯＳの機能は、ＥＯＳが用いるファイルシステムに依存している。本発明の一実施形態は、変更されたファイルシステムを用いる、例えば、ＵＮＩＸシステム５、リリース３〜５（例えば、ＳＶＲ３．４ＳＶＲ４ＳＶＲ５）等のＵＮＩＸオペレーティングシステムに基づく。また、本発明は、例えば、リナックス（Linux）やＢＳＤ等の他の様々なＵＮＩＸにも適用することができる。
【０１０１】
モディファイドＵＮＩＸオペレーティングシステムに基づくＥＯＳの一実施形態では、仮想メモリによってメモリを拡張し、コンピュータシステム上に物理メモリにおいて実行される処理に利用する。ここで、ＥＯＳは、図１３に示すように、仮想メモリアドレスを物理メモリアドレスにマッピングする。後に詳細に説明するように、仮想メモリは、処理とユーザから仮想メモリの複雑さを隠すために、アブストラクションを用いる。図１３は、処理２９１０のためのメモリ要求を満たす処理２９１０とメモリシステム２９００のハイレベルの表現を示している。メモリシステム２９００は、メモリ管理ユニット（memory management unit：以下、ＭＭＵという。）２９０５と、マイクロプロセッサ２９１５と、物理メモリ（例えば、ＲＡＭ）２９１０と、補助メモリ又はバッキングストア２９２０とを備える。例えば、動作時には、処理２９１０は、ＭＭＵ２９０５を呼び出し、仮想アドレスを用いてメモリのブロックにアクセスする。ＭＭＵ２９０５は、仮想アドレスを物理アドレスにマッピングする。物理アドレスが物理メモリ２９１０の位置に対応する場合、ＭＭＵ２９０５は、物理メモリ２９１０からデータを読み出し、このデータを処理２９０１に返す。データが物理メモリ２９１０にない場合、ＭＭＵ２９０５は、マイクロプロセッサ２９１５に対してページフォルト（page fault）を生成し、マイクロプロセッサ２９１５は、補助記憶装置２９２０から物理メモリ２９１０にデータをロードする。ここから、データは、処理２９０１に渡される。
【０１０２】
後述するように、本発明においては、補助記憶装置２９２０に保存されたデータは、暗号化されていてもよく、したがって、処理２９０１に渡される前に復号する必要がある。ＭＭＵ２９０５内のテーブルは、読み出されたデータの新たな物理アドレスと、物理メモリ２９１０におけるデータを特定するために用いられるその仮想アドレスの間の関係を反映するように更新される。なお、当業者には明らかであるが、何れも後に詳細に説明する仮想メモリとその関連するマッピングを用いることによって、コンピュータシステム内の処理は、物理メモリ２９１０において利用可能なメモリより多くのメモリにアクセスできる。
【０１０３】
後に詳細に説明するように、ＥＯＳは、物理メモリと、例えば、補助記憶装置（バッキングストア）、スワップデバイス、ネットワークバッファ及びこの他の位置等を含む様々な位置との間で転送されるデータを暗号化及び復号する。また、データは、コンピュータシステムがエラーに遭遇した場合に生じるメモリダンプの結果としてメモリにスワッピングされる際に暗号化してもよい。これは、オペレーティングシステムがデバッグのためのスワップ又は他の空間にメモリ画像をダンプすることを考慮し、権限のないユーザがコンピュータシステムにエラーを導入することを防ぐ効果を有する。このように、本発明に基づき、上述した鍵管理システムを用いて、後に更に詳細に説明するファイル管理機能によってアクセスされるデータを暗号化及び復号することにより、データを機密保護することができる。
【０１０４】
なお、データは、１つの暗号鍵又は複数の暗号鍵を用いて、及び１つ以上の暗号化アルゴリズムを用いて暗号化できる。例えば、データは、一連のブロックに分割することができる。第１のデータブロックは、ラインダールアルゴリズムに基づいて、第１の暗号鍵を用いて暗号化できる。一方、第２のデータブロックは、ラインダールアルゴリズムに基づいて、第２の暗号鍵を用いて暗号化してもよく、これに代えて、第２のデータブロックは、例えば、ＤＥＳ等の他の対称アルゴリズムに基づいて暗号化してもよい。この処理は、全てのデータが暗号化されるまで、繰り返される。また、この処理と逆の処理を行うことにより、暗号化されたデータを復号することができる。なお、以下の説明における暗号鍵という表現は、１つ以上の暗号化アルゴリズムを用いてデータを暗号化及び復号するために用いられる複数の暗号鍵の使用を含むことができる。
【０１０５】
更に、ここで用いる用語「ファイル」は、あらゆる種類のファイルを含むものとし、これらには、以下に限定されるわけではないが、例えば、テキスト、マシンにより読取可能なファイル（実行可能なファイル等）、画像ファイル（例えば、ＪＰＥＧ、ＴＩＦＦ、ＰＤＦ、ＭＰＥＧ）オーディオファイル、圧縮されたファイル、デバイスファイル、擬似ファイル（例えば、／ｐｒｏｃ及び／ｎｆｓ）、ネットワークファイル、又はＵＮＩＸがファイル構造を用いてアクセスする他のあらゆる構造等が含まれる。
【０１０６】
後述するように、ＥＯＳを用いて、物理メモリと、例えば、補助記憶装置、ネットワークファイルシステム等の他の位置との間で伝送されるデータを暗号化及び復号することができる。表１は、本発明の実施形態に基づいて暗号化及び復号することができるファイルシステムを示している。すなわち、例えば、表１のライン８に示すように、ｓｏｃｋｆｓファイルシステムに伝送されたデータ、したがって、ソケット接続を介して伝送されたデータは、コンピュータシステムの物理メモリからソケット接続を介して伝送される前に暗号化される。同様に暗号化されたデータは、ソケット接続を介して伝送され、コンピュータシステム上で実行される処理に渡される。ＥＯＳは、受信処理にデータを渡す前に、このデータを復号する。後に詳細に説明するように、ＥＯＳは、多くのデバイスをファイルとして扱い、これにより、ファイルコマンドを用いて、これらのデバイスにアクセスすることができる。
【０１０７】
図１４は、本発明に基づくＥＯＳのための、仮想メモリインタフェースの下のメモリ割当システム１３０１を示している。メモリ割当システム１３０１は、物理メモリ１３５０に接続されたページレベルアロケータ１３１０と、カーネルメモリアロケータ１３３０と、仮想メモリシステムの一部であるページングシステム１３２０とを含んでいる。ページレベルアロケータ１３１０は、カーネルメモリアロケータ１３３０とページングシステム１３２０の２つのクライアントのサーバとして機能する。カーネルメモリアロケータ１３３０は、後に詳細に説明するように、ネットワークバッファ１３４０と、処理構造１３３５と、後に詳細に説明するｉノード及びファイル記述子１３３６とに接続されている。ページングシステム１３２０は、ユーザ処理１３２５とブロックバッファキャッシュ１３２６とに接続されている。
【０１０８】
【表１】
2006510958.tif 000003
【０１０９】
実際の動作では、例えば、ユーザ処理１３２５は、データを読み出すためにページングシステム１３２０を呼び出す。ページングシステム１３２０は、データが存在するか否かを確認するために、ブロックバッファキャッシュ１３２６を検査し、データが存在する場合、ページングシステム１３２０は、データをユーザ処理１３２５に返す。データがブロックバッファキャッシュ１３２６にない場合、ページングシステム１３２０は、ページレベルアロケータ１３１０を呼び出し、このページレベルアロケータ１３１０が物理メモリ１３５０にアクセスしてデータを読み出す。ページングシステム１３２０は、仮想メモリサブシステムの一部であるので、ページングシステム１３２０は、セカンダリデバイス（図示せず）からデータをページングすることもできる。
【０１１０】
同様にカーネルコマンドは、カーネルサブシステムによって用いられたメモリブロックのためにカーネルメモリアロケータ１３３０を呼び出すことができる。例えば、図１３に示すように、カーネルメモリアロケータ１３３０は、ネットワークバッファ１３４０、処理構造１３３５、ｉノード及びファイル記述子１３３６に小さい、可変サイズのバッファを割り当てるための要求を扱うことができる。また、カーネルメモリアロケータ１３３０は、より大きいサイズメモリブロックのために、ページレベルアロケータ１３１０を呼び出すことができる。
【０１１１】
なお、本発明に基づくＥＯＳカーネルは、コンピュータシステムの意図された用途に応じて、様々に構成できる。構成可能なパラメータの１つは、仮想ページサイズである。例えば、仮想ページサイズは、ページを物理メモリからスワッピングしなくてはならない回数を最小にするよう構成してもよい。ＥＯＳカーネルは、ストレージ装置から主記憶装置にデータをロードする際に用いられる仮想ページのサイズを決定するパラメータを用いる。仮想ページサイズパラメータは、物理メモリのサイズに応じて、カーネル毎に変更してもよい。このパラメータは、オペレーティングシステムが実行されるプラットフォームのためにＥＯＳカーネルを構成する際に設定してもよい。４０９６のバイトの所定の仮想ページサイズについては、後続する各ページは、４０９６のバイトになる。したがって、カーネルは、４０９６バイトの仮想ページサイズにおいて、各常駐ストレージ媒体にアクセスする。仮想ページパラメータ「ｘ」は、各仮想ページのサイズを表しており、各ファイルをロードする毎に、各ファイル間で１ファイルあたりの仮想ページの数は変化し、各ファイルは、各ディレクトリ毎にサイズが異なることが多く、各常駐ストレージ媒体毎に異なる暗号化部分を構成する。
【０１１２】
理論上の仮想ページパラメータｘは、各ＥＯＳカーネルが、物理的な補助ストレージ媒体（例えば、ハードディスク）にデータをロード及びアンロードするそのページサイズをどのように選択するかから独立している。パラメータ「ｘ」は、それぞれのページのパーティションのサイズを示し、各パーティションは、コンピュータプラットフォームのランダムアクセスメモリ（ＲＡＭ、ＤＲＡＭ等）のサイズの物理的限界に基づいて設定される。例えば、パラメータ「ｘ」が各ＥＯＳカーネル毎に異なる場合、補助ストレージ媒体にデータを保存する特定のＥＯＳカーネルは、異なる物理メモリ制限パラメータによって設定されたパラメータ「ｘ」を用いて他のＥＯＳカーネルによって保存された異なる補助ストレージ媒体上のデータストレージを読み出すことができない。
【０１１３】
図１５は、本発明に基づくカーネルメモリアロケータのＳＶＲ４インプリメンテーションのためのメモリプールを有するメモリシステム１４００を示している。メモリシステム１４００は、それぞれｘバイト長を有する第１〜第６ページを含む物理メモリ１４１０を備える。各第１〜第６ページは、好ましくは４０９６バイト長を有する。但し、第１〜第６ページは、他の長さを有していてもよい。物理メモリ１４１０は、第１、第２、第３の常駐ストレージ１４３５、１４４０、１４４５のそれぞれに接続されている。図１５に示すように、第１のファイルＦｉｌｅ１（１４２０）と第２のファイルＦｉｌｅ２（１４２５）は、何れも第１の常駐ストレージ１４３５に保存されている。更に、第２のファイルＦｉｌｅ２（１４２５）のフラグメント１４５２は、仮想ストレージ１４３０上のスワップデバイスにスワッピングされている。
【０１１４】
図１５に示すように、第２のファイルＦｉｌｅ２（１４２５）は、スワップデバイスにスワッピングされる断片化された部分を有している。なお、本発明に基づいてデータを暗号化する場合、ファイルの部分は、様々な理由でスワップデバイスにスワッピングすることができる。例えば、ユーザ要求を満たすために十分な空きメモリがない場合、処理が長期間アクティブ状態にない場合、ページテーブルが一杯になった場合等にファイルデータをスワップデバイスにスワッピングすることができる。
【０１１５】
本発明においては、暗号化ドライバは、ＵＮＩＸシステム５リリース３〜５ソースコードの既存のｖノードインタフェース構造に統合される。この構造は、ｖノードオペレーション（VNODE Operations）又は略して「ｖｏｐｓ」として知られる仮想ファイルシステム（Virtual File System：ＶＦＳ）の動作のグループの統合された部分として知られている。暗号化ドライバは、Ｈ＋１拡張があるシステムファイルとして知られている他のヘッダーファイルとしてインストールされるのではなく、自ら価値のあるシステムリソースとして、ＥＯＳカーネルに統合される。この仮想ノード動作機構は、ＥＯＳカーネルの内部のみで機能し、ページのデータの移動に寄与する。この機構は、カーネル内部のものであるが、ユーザアプリケーションが要求するサービスにも適用できる。本質的には、ＥＯＳ暗号化メカニズムコードは、既存の「ＶＦＳインタフェース動作」に特別に追加され、これらは何れも全てのＥＯＳ「ｖノード」に対する操作を実行するために共に指定される。暗号化ドライバは、データが補助記憶装置からｖノードに読み込まれると各ｖノードに対する動作を実行し、データがディスクに書き戻されると、ｖノードデータに対する動作を実行する。一旦、データがｖノードから読み出されると、データは、仮想メモリページとして知られているメモリページのラインに沿って物理メモリのＥＯＳカーネルによって処理される。これらの仮想メモリページがロードされる前に、ＥＯＳカーネルのみが知っており、補助ディスクドライブに保存されているデータを暗号化及び復号するためにＥＯＳカーネルのみがアクセス可能である（ＫＭＳ鍵に関連するが、ＫＭＳ鍵とは異なる）指定された２０４８ビット暗号化鍵の１つを用いて、カーネルの暗号化ドライバによってデータを復号する必要がある。
【０１１６】
カーネルが全ての物理メモリを管理し、他のカーネルサブシステムとユーザ処理との間でこのメモリの割当を行う場合、カーネルは、自らのテキストと静的なデータ構造のために、物理メモリの一部を予約しなければならない。この場合、物理メモリの一部は、決して解放されず、したがって、他の如何なる目的にも利用できない。（例えば、ＡＩＸ等、近年の多くのＵＮＩＸシステムでは、カーネルの一部をページング可能（pageable）にしている）。メモリの残りの部分は、ダイナミックに管理され、カーネルは、このメモリの部分を様々なクライアント（処理やカーネルサブシステム等）に割り当て、これらは、メモリが必要でなくなると、それ（メモリ）を解放する。
【０１１７】
カーネルは、メモリを固定サイズのフレーム又はページに分割する。上述した、ＥＯＳカーネルが暗号化ドライバを適用するベースとして用いる各フレーム又はページとは、これらのフレーム又はページである。各ページのサイズは、２の累乗に基づいている必要があり、典型的な値としては、４キロバイトである。これはソフトウェアで定義されるページサイズであり、必ずしもハードウェアページサイズとは等しくないが、幾つかの具体例では、ハードウェアページサイズと等しい場合もある。他の具体例では、このページサイズは、ハードウェアページサイズとは等しくないが、メモリ管理ユニットによって課される保護とアドレス変換のための最小単位となる。ＥＯＳは、ＳＶＲ５に基づく仮想メモリシステムを有しているので、処理アドレス空間で論理的に隣接しているページは、必ずしもメモリ内で物理的に隣接している必要はない。メモリ管理サブシステムは、論理的な、この場合、処理の「仮想」のページと、物理メモリにおけるデータの実際の場所との間のマッピングを維持する。これにより、カーネルは、物理的に不連続な幾つかのページを割り当てることによって、論理的に隣接するメモリブロックに対する処理の要求を満たすことができる。この場合、ＥＯＳ暗号化サブシステムは、各論理ページを物理メモリにロードする前に各論理ページを復号し、及び各論理ページをディスクに保存又は書き戻す前に各論理ページを暗号化する必要がある。このページ割当、コンテンツ暗号化及び復号の手続きを簡素化するために、ＵＮＩＸカーネルは、空いているページのリンクされたリスト（以下、空きページリストという。）を維持する。処理が幾つかのページを必要とすると、カーネルは、空きページリストからこれらのページを削除し、これらのページが解放されると、カーネルは、これらのページを空きページリストに戻す。したがって、コンテンツを暗号化及び復号するためには、ＥＯＳカーネルは、ページを解放する前にコンテンツを暗号化し、ページにデータを読み込む際にコンテンツを復号しなければならない。
【０１１８】
図１６は、本発明の一実施形態として、データを保存及び読み出すためにＥＯＳを用いるコンピュータシステム３０００の概要を示す図である。コンピュータシステム３０００は、処理装置３０１５と、ネットワークファイル（ＮＦＳ）サーバ３０７０と、ストレージデバイス３０８０とを備える。処理装置３０１５は、ＮＦＳサーバ３０７０に接続され、ＮＦＳサーバ３０７０は、ストレージデバイス３０８０に接続されている。例えば、パーソナルコンピュータ又は中型のサーバである処理装置３０１５は、ＥＯＳ３０１６を有し、処理３０１０〜３０１２を実行する。ストレージデバイス３０８０は、本発明に基づいて暗号化されたデータを保存するためのデータブロック３０４０、３０４１、３０４２を有する。なお、ＮＦＳサーバ３０７０は、ＥＯＳに付属するファイルシステムを反映するストレージデバイス３０３０に含まれているファイルシステムをエクスポートし、これにより、暗号化ファイルシステムとなる。
【０１１９】
実際の動作においては、処理３０１０は、ＥＯＳ３０１６にトラップされ、データを暗号化する書込コマンドを呼び出し、暗号化されたデータをＮＦＳサーバ３０７０に転送する。処理３０１０は、ローカルな書込コマンドとして書込コマンドを呼び出すが、ＮＦＳサーバ３０７０は、この書込コマンドを非ローカルな書込コマンドに翻訳する。これにより、処理３０１０は、ローカルな書込及び非ローカルな書込について、同じコマンドを用いることができ、したがって、同じインタフェースを用いることができ、ネットワークを介したデータの伝送をＮＦＳサーバ３０７０に任せて、データブロック３０４０に暗号化されたデータを書き込む。処理３０１１は、読出コマンドを呼び出すことができ、読出コマンドは、ＥＯＳ３０１６にトラップされ、ＥＯＳ３０１６は、ＮＦＳサーバ３０７０に読出要求を送る。処理３０１１は、ローカルな読出として読出コマンドを呼び出すが、ＮＦＳサーバ３０７０は、この要求を機密保護されたローカルエリアネットワーク上で行われる読出に翻訳する。これにより、処理３０１１は、ローカルで（付属しているデバイスから直接）データを読み出す場合も、非ローカルでデータを読み出す場合も同じ呼び出し（インタフェース）を用いることができる。続いて、ＮＦＳサーバ３０７０は、データブロック３０４０から暗号化されたデータを読み出し、この暗号化されたデータをＥＯＳ３０１６に送る。そして、ＥＯＳ３０１６は、データを復号し、復号したデータをバッファ（図示せず）に保存する。処理３０１１は、このバッファからデータを読み出すことができる。データブロック３０４２からデータを読み出す場合、処理３０１２は、処理３０１０と同様のデータパスを用いる。なお、読出又は書込コマンドが実行される場合、まず、ユーザ又は処理の認証情報が必ず検査され、データアクセスが許可されていることが確認される。
【０１２０】
後に詳細に説明するように、コンピュータシステム３０００を用いた暗号化と復号は、自動的に、ユーザにとってトランスペアレントに実行される。これは、例えば、ＮＦＳサーバを用いて、ネットワークを介してバッキングストア又はスワップ空間を処理装置３０１５に接続することによって実現できる。
【０１２１】
なお、本発明では、例えば、サーバメッセージブロック（Server Message Block：ＳＭＢ）、ネットワークファイル共有プロトコル、又はコモンインターネットファイルシステム（Common Internet File System：ＣＩＦＳ）等、ＮＦＳ以外のプロトコルを用いて、処理装置と、ネットワークに接続されているセカンダリデバイス（secondary device）との間で暗号化されたデータを交換してもよい。
【０１２２】
更に、後に詳細に説明するように、ＥＯＳを用いて、処理装置と直接付属しているセカンダリデバイスとの間で交換されるデータを暗号化及び復号することもできる。例えば、ファイルオブジェクトに関するＥＯＳへの要求は、仮想ファイルシステム（virtual file system：ＶＦＳ）を通過するが、ＥＯＳは、ＮＳＦサーバが行う処理と同様に、ＶＦＳインタフェースを介してこの要求をローカルなオブジェクトに翻訳する。
【０１２３】
基本的なＵＮＩＸオペレーティングシステムにおいては、ファイルは、ディレクトリファイルを横断することによって見つけられる。ディレクトリファイルは、ファイル名と対応するｉノードエントリを含んでいる。ｉノードエントリは、ファイルに関連するデータを含むデータブロックの位置を含んでいる。権限のないユーザが、一旦、ディレクトリへのアクセスに成功すると、このユーザは、ｉノードにアクセスし、ファイルに関連するデータを復元することができる。ディレクトリ、ｉノード及び他のデータは、例えば、図１７に示すように、ファイルシステムに保存される。図１７は、ブート領域１５０１を含むファイルシステム１５００と、スーパブロック領域１５０２と、ｉノードのリスト１５０３と、ファイルシステム１５００上のファイル名を含むディレクトリファイル１５０４と、データブロック１５０５〜１５０９とを示している。ブート領域１５０１は、ファイルシステム１５００の始まりを示し、通常、コンピュータシステムに電源が投入された際に実行されるブートストラップコードを含んでいる。スーパブロック１５０２は、ファイルシステム１５００の状態について説明する情報を含んでいる。本発明の一実施形態においては、１つ以上の暗号鍵がスーパブロック１５０２に保存される。但し、ＥＯＳによってアクセス可能な他の所定の位置に１つ以上の暗号鍵を保存してもよい。
【０１２４】
なお、ｉノードリスト１５０３は、直接、単一間接、二重間接及び三重間接の位置にあるデータブロックの位置を含むｉノードを含んでいる。更に、ファイルに関連しているデータブロックには、ディレクトリファイル１５０４にアクセスし、そのエントリを読み出すことができる場合にのみアクセスできる。本発明の一実施形態では、ディレクトリファイルは暗号化され、これにより、如何なるユーザも、有効な暗号鍵がなければ、ファイル名、これらに関連するｉノード、したがってファイルに関連するデータにアクセスすることができない。なお、本発明の一実施形態においては、あるユーザがデータブロックにアクセスできたとしても、これらのデータブロックも暗号化されており、適切な１又は複数の暗号鍵がなければ読み取ることができない。
【０１２５】
なお、単一のコンピュータシステムが幾つのファイルシステムを有していてもよい。上述したように、表１は、例えば、ネットワークファイルシステム（ＮＦＳ）、ＵＮＩＸ高速ファイルシステム（ＵＦＳ）、ｓｏｃｋｆｓ等、これらのファイルシステムの幾つかを例示的に示している。本発明では、各ファイルシステムは、１つ以上の固有の暗号鍵を有することができる。
【０１２６】
表２は、本発明の一実施形態に基づいて復号された後のディレクトリファイルの一部を示している。表２において、このディレクトリファイルは、Ｅ金庫と呼ばれる。表２は、幾つかの列を有している。表２の列１は、Ｅ金庫内におけるバイトオフセットを示している（これは、Ｅ金庫の一部ではないが、ここでは、説明を明瞭にするために示している）。表２の列２及び列３は、ｉノード番号と対応するファイル名を示している。表２の列４は、ファイル名が特別なファイル（special file）であるか否かを示している。表２に示すように、各ファイル名は、ｉノードのリスト（例えば、図１６のｉノードのリスト１５０３）のインデクスであるｉノード番号にマッピングされる。Ｅ金庫内において、バイトオフセット０から始まる最初のエントリは、ｉノード番号８３を有するカレントディレクトリに対応するファイル名「ＵＰ  Ｖ」のエントリを含んでいる。バイトオフセット２４から始まる第２のエントリは、ｉノード番号２を有する親ディレクトリに対応するファイル名「Ｃｕｒｒｅｎｔ  Ｖ」のエントリを含んでいる。バイトオフセット４８から始まる第３のエントリは、ファイルシステムのｉノードリストにおける第１８のｉノードにマッピングされるファイルＦｉｌｅ１のエントリを含んでいる。ｉノードエントリと、これらが指示するデータブロックをトレースすることにより、ファイル１のデータを復元することができる。なお、Ｅ金庫内のディレクトリデータは、暗号化によって保護される。同様に、ここに説明するように、データブロックに含まれている暗号化されたデータは、Ｄ金庫内にあり、上述のように暗号化されているため、不正アクセスから保護されている。同様に暗号化された鍵は、Ｋ金庫内にあり、上述のように、これらも暗号化されているため、不正アクセスから保護されている。
【０１２７】
【表２】
2006510958.tif 000004
【０１２８】
本発明では、物理メモリ内のｉノード（インコアｉノードと呼ばれる）は、平文データに対応する。なお、ここでは、平文データとは、暗号化される前のデータを意味し、暗号データは、暗号化された後のデータを意味するものとする。平文データと暗号データとの間には、一対一の対応関係がある。なお、補助メモリにおいて、ファイルに関連しているデータを読み出すためにｉノードを用いることができる。本発明においては、補助メモリ内のｉノード（オンディスクｉノードと呼ばれる）は、暗号化されたデータとも呼ばれる。オンディスクｉノードと暗号化されたデータとの間のこの関係の具体例を図１８に示す。
【０１２９】
図１８は、仮想メモリページ１７１６を保存する仮想メモリ１７１５と、暗号化されたデータブロック１７５１〜１７５６を含む補助ストレージ１７５０との間の関係を示すファイルシステムの一部１７００を示している。図１８に示すように、ｖノードインタフェース１７１０は、ファイルのオンディスクｉノード１７３０と、仮想メモリページ１７１６を含む仮想メモリ１７１５とにアクセスするために使用される。ｉノード１７３０は、直接ブロック１７３１〜１７３８を保存するエントリのテーブルを含んでいる。なお、エントリのテーブルは、単一間接、二重間接及び三重間接ブロックを含むことができる。直接ブロック１７３１は、補助ストレージ１７５０内の暗号化されたブロック１７５１のアドレスを含み、直接ブロック１７３２は、暗号化されたブロック１７５２のアドレスを含み、直接ブロック１７３３は、暗号化されたブロック１７５３のアドレスを含み、直接ブロック１７３４は、暗号化されたブロック１７５４のアドレスを含み、直接ブロック１７３５は、暗号化されたブロック１７５５のアドレスを含み、直接ブロック１７３６は、暗号化されたブロック１７５６のアドレスを含んでいる。すなわち、ｉノード１７３０を用いて、補助ストレージ１７５０上のデータブロックにアクセスすることができる。データブロックは、上述のように、暗号鍵を用いて復号することができ、動作中の処理がデータにアクセスできる仮想メモリに格納することができる。
【０１３０】
本発明の一実施形態では、ＥＯＳは、データを機密保護するための更なる機能を提供する。例えば、ＥＯＳは、従来のオペレーティングシステムにおいて用いられる許可に追加して、更なるな許可を用いることができる。ＥＯＳが暗号化されたデータ及び暗号化されていないデータの両方へのアクセスを提供する場合、ＥＯＳは、暗号化されたデータへの許可と、暗号化されていないデータへの許可との両方を提供することとなる。
【０１３１】
一実施例においては、ＥＯＳは、変更された許可に基づき、ユーザ又は処理が暗号化されたファイルにアクセスできるか否かを判定し、ユーザ又は処理が暗号化されたファイルにアクセスできる場合、ユーザ又は処理がファイルに対して如何なる処理を実行できるかを判定する。ファイルにアクセスする際に許可を用いることは、当業者にとって周知の技術である。変更された許可は、ディスクのｄｉノード構造のｄｉ＿ｍｏｄｅ要素及び物理メモリのｉノード構造に保存される。図１９は、ｄｉ＿ｍｏｄｅ要素１８００内のビットフィールドを示している。ｄｉ＿ｍｏｄｅ要素１８００は、以下のフィールドを含んでいる。（１）通常のファイル、ディレクトリ、ブロック、文字等、ファイルの種類を意味する４バイトの要素であるタイプフィールド１８１０。（２）ファイルが実行可能なファイルである場合、カーネルに対し、ユーザの有効なＩＤをファイルの所有者として設定するよう指示するｓｕｉｄ（set user id：ユーザＩＤ設定）フラグ１８２０。（３）ユーザのグループＩＤの場合と同様の機能を実現するｓｇｉｄ（set group id：グループＩＤ設定）フラグ１８３０。（４）ファイルが実行可能なファイルである場合、実行可能なプログラムが実行された後、カーネルに対し、ファイルの画像をスワップ空間に維持するよう指示するスティッキフラグ（sticky flag）１８４０。（５）所有者がファイルに対する読出許可（ｒ）、書込許可（ｗ）、実行許可（ｘ）、暗号化許可（ｅ）、復号許可（ｄ）及び削除許可（ｆ）を有しているか否かを示す所有者許可１８５０。（６）グループがファイルに対する読出許可、書込許可、実行許可、暗号化許可、復号許可及び削除許可を有しているか否かを示すグループ許可１８６０。（７）この他の者がファイルに対する読出許可、書込許可、実行許可、暗号化許可、復号許可及び削除許可を有しているか否かを示す他者許可１８７０。上述したように、カーネルは、ファイルにアクセスする場合、これらの許可を検査し、ユーザ又は処理がファイルに対して処理（暗号化して書き込む、復号して読み出す、削除する等）を実行できるか否かを決定する。例えば、ファイルに関するグループアクセス許可がビットシーケンス１１１０１０として示されている場合、このグループは、ファイルを読み出し、書き込み、実行し、暗号化することができるが、ファイルを削除及び復号することはできない。
【０１３２】
図２０は、本発明に基づくシステム３６００を用いるユーザ（又は処理）のハイレベルの図面である。システム３６００は、暗号化／復号コンポーネント３６１５に接続された鍵管理コンポーネントが３６１０に接続された認証情報コンポーネント３６０５を備える。暗号化／復号コンポーネント３６１５は、メモリ３６２０とセカンダリデバイス３６２５に接続されている。後に詳細に説明するように、本発明の一実施形態では、ユーザは、ファイルにアクセスするための自らの認証情報を生成するために用いられるデータを入力する。この認証情報は、暗号化／復号コンポーネント３６１５を用いてデータを暗号化及び復号するために用いられる鍵を生成する鍵管理システム３６１０によって使用される。この暗号化／復号コンポーネント３６１５によって、ユーザ又は処理は、メモリ３６２０とセカンダリデバイス３６２５との間で転送されるデータを暗号化及び復号することができる。
【０１３３】
ユーザ又は処理を認証する場合、ＥＯＳは、パスワードファイルから、鍵管理のためにユーザ鍵を構築するために必要なシャドウパスワードファイル情報を抽出する。
【０１３４】
認証情報構造は、ＵＮＩＸ内のメンバグループ構造を用いて、ユーザ処理、アプリケーション処理及びそのユーザに属するシステム内のユーザのファイルを特定する。この手続きはデータへのアクセスに関する適切な許可を有するとして、ファイルデータに対して実行されるユーザによるアプリケーションの処理を認証するために用いられる。ＥＯＳ下では、ＵＮＩＸグループは、例えば、部署、業務単位、所有者等、データに対する制御が任される協同的構造に変換される。この制御は、ユーザ、アプリケーション及びデータに対して動作するコマンドから、データがメモリ内にある場合、ｖノードを介して、カーネルを経由して、データがディスク媒体に返される場合、ｉノードに至るまで実現される。認証情報のパスは、この変化におけるあらゆる点に存在し、ＥＯＳは、システムのヒューマンインタフェース及びシステム内に常駐するデータから分離された全てのデータに対して、システム内において、データを暗号化することによって所定の制御を維持し、このデータへの認証されたアクセスを強制する。ＥＯＳは、以下のような認証情報構造のメンバを用いて、認証情報構造がカーネルにインタフェースする点で、ＵＮＩＸアーキテクチャを変更する。（１）ユーザＩＤ定義「ｕｉｄ＿ｔ」及び有効なユーザＩＤ「ｃｒ＿ｕｉｄ」。（２）グループＩＤ定義「ｇｉｄ＿ｔ」及び有効なグループＩＤ「ｃｒ＿ｇｉｄ」。（３）ユーザＩＤ定義「ｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｒｕｉｄ」。（４）グループＩＤ定義「ｇｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｒｇｉｄ」。（５）保存されたユーザＩＤ定義「ｕｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｓｕｉｄ」。（６）保存されたグループＩＤ定義「ｕｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｓｕｉｄ」。（７）特権ベクトル定義「ｐｖｅｃ＿ｔ」及び保存された特権ベクトル「ｃｒ＿ｓａｖｐｒｉｖ」。（８）特権ベクトル定義「ｐｖｅｃ＿ｔ」及び動作中の特権ベクトル「ｃｒ＿ｗｋｇｐｒｉｖ」。（９）特権ベクトル定義「ｐｖｅｃ＿ｔ」及び最大特権ベクトル「ｃｒ＿ｍａｘｐｒｉｖ」。（１０）レベル識別子定義「ｌｉｄ＿ｔ」及びレベル識別子（ＭＡＣ）メディアアクセスコントローラ「ｃｒ＿ｌｉｄ」。（１１）レベル識別子定義「ｌｉｄ＿ｔ」及びレベル識別子（ＭＡＣ）ＣＭＷのメンバ「ｃｒ＿ｌｉｄ」。
【０１３５】
また、ＥＯＳは、パスワード及びシャドウパスワードファイルを用いて、認証されたユーザ及びアプリケーションのみがデータにアクセスできることを保証する。ＥＯＳは、ユーザＩＤ及び他のパラメータに関連しているパスワードエントリを用いて、鍵管理システム（すなわち、エキスパート鍵管理システム）への入力を生成する。また、ＥＯＳは、シャドウパスワードファイル内のエントリを（この場合、例えば、パスワード等ファイル内のエントリの全てが暗号化される）ＵＮＩＸ認証情報マトリクスを変更するためのへの入力として用いる。ＥＯＳエキスパート鍵管理システムは、許可とユーザ識別情報のマトリクスを用いて、各ユーザ又はオペレーティングシステム上で処理として実行されているアプリケーションのための認証ベクトルを生成する。ベクトルは、ＵＮＩＸ認証情報構造内の資格証明情報を置換し、これにより、各ユーザ、アプリケーション又はＥＯＳ上で動作するデバイスのシステムを認証するための固有のメカニズムを形成し、ＥＯＳによって保護されているストレージ内に保存されている情報へのアクセスを要求する。
【０１３６】
図２１は、本発明の一実施形態に基づいて、ユーザ（又は、処理）がどのようにデータにアクセスするかを説明するハイレベルの概要図である。すなわち、図２１は、データを暗号化及び復号するシステム２６００を示している。システム２６００は、処理２６０１を実行するコンピュータシステム２６０２と、データベース２６３５とを備えている。コンピュータシステム上には、ユーザ空間２６２５とＥＯＳカーネル空間２６３０を含むメモリが存在する。実際の動作では、ＥＯＳからのユーザ名２６０５と、システム鍵２６１０とは、ユーザ鍵構成２６１５を生成するために用いられ、ユーザ鍵構成２６１５は、コンポーネント２６１６、２６１８、２６２０を含む鍵構成２６０３を生成するために用いられる。部分２６１６は、ファイルの所有者２６１７に対する許可を生成するために用いられ、部分２６１８は、特定の部署２６１９に対する許可を生成するために用いられ、部分２６２０は、他者２６２１に対する許可を生成するために用いられる。特定のユーザ（所有者、部署、他者）に対応する許可は、そのユーザがＥＯＳ内のデータにアクセスできるか否かを決定する。ユーザ又は処理がデータにアクセスできる場合、ＥＯＳシステムコール機能２６３０は、ファイルデータ２６３１にアクセスし、このファイルデータ２６３１は、例えば、データベース２６３５からの暗号化されたデータを保存又は読み出すために用いられる。そして、このデータは、ユーザ空間２６２５において、暗号化及び保存でき、又は読出、復号及び保存できる。
【０１３７】
ユーザ又は処理が会社の異なる部署又は課に属する場合、その部署又は課に対応する許可を用いて同様のステップを実行できる。
【０１３８】
図２２は、ディスクにファイルを書き込む場合における、アクセス許可の手順を説明する図である。図２２に示すように、ステップ１９０８において、ユーザ（例えば、端末装置のユーザ、処理又はバッチファイルの何れか）は、ディスクにファイルを書き込むためのシステム機能を呼び出す。システム機能は、例えば、Ｅｎｏｄｅ  ＥＷＲＩＴＥであってもよい。上述のように、Ｅｎｏｄｅは、暗号化されたファイルシステムにおいて、ファイルに対して実行できる処理である。機能ＥＷＲＩＴＥは、カーネルにトラップされ、破線で囲まれたボックス１９１２内に示すタスクを実行する。上述したように、カーネル内において、暗号化／復号タスクを実行する場合、これらのタスクは、ユーザ又は処理にとってトランスペアレントな保護モードにおいて、より効率的に実行される。
【０１３９】
次に、ステップ１９１５に示すように、カーネルは、暗号化されたディレクトリファイルを横断し、各ディレクトリエントリを復号し、復号した各ディレクトリエントリと、書込を行おうとするファイル名（ターゲットファイル名）とを比較する。カーネルは、それらを暗号化するために用いられたアルゴリズムと同じアルゴリズム、好ましくは、ラインダールアルゴリズムを用いて、ファイル名を復号する。処理がファイル名によってファイルを参照する場合、カーネルは、一度に１つのコンポーネントについてファイル名を解析し、パス内のディレクトリを復号する鍵を再び用いることによって、処理が、パスにおいてディレクトリを検索することを許可されていることを確認し、そのファイルのｉノードを読み出す。但し、カーネルは、例えば、ＤＥＳ、三重ＤＥＳ、ブロウフィッシュ（Blowfish）、スキップジャック（Skipjack）、ＩＤＥＡ及びこの他のアルゴリズム、並びにこれらの任意の組合せを含む他のアルゴリズムを用いて、ファイル名を暗号化するか又は復号してもよい。一実施例においては、暗号化／復号アルゴリズムは、１０２４ビット又は２０４８ビット鍵を用いるが、暗号化／復号アルゴリズムは、これより短い又は長い鍵を用いてもよいことは言うまでもない。暗号化による保護を強化する必要がない場合、又は処理速度が重要になる場合には、短い鍵長を用いることができる。この処理は、暗号化されていないディレクトリ名が、ターゲットディレクトリ名に一致するまで続けられる。なお、図１９は、本発明を説明するために必要なステップのみを示しており、例えば、誤り検査等の他のコンポーネントは示していない。例えば、暗号化されたファイル名は、暗号化されたディレクトリにおいて、対応する如何なるエントリも有さない場合がある。この場合、図１９には示していないが、呼び出しプロセス又はメッセージに対し、ユーザディスプレイ上に、例えば「ファイルが見つかりません（FILE NOT FOUND）」といったエラーコードを返すことができる。
【０１４０】
更に、他のシーケンスにおいて実行された他のステップを用いて暗号化されたディレクトリ名をターゲットディレクトリ名に比較することもできる。例えば、まずターゲットディレクトリ名を暗号化し、次に、一致が検出されるまで、暗号化されたディレクトリ名と比較してもよい。この変形例により、暗号化／復号ステップの回数を低減することができる。
【０１４１】
次に、ステップ１９２０において、カーネルは、ユーザ又は処理が、暗号化されたファイルをディスクに書き込むことを許可されているか否かを確認する。例えば、処理がファイルの所有者である場合、カーネルは、所有者の暗号ビット（ｅ）が設定されているか否かを確認する。すなわち、許可が０１００１０である場合は、ファイルを書き込む処理を実行でき、許可が１０１１０１である場合は、この処理を実行できない。処理が正しい許可を有さない場合、カーネルは、ステップ１９２５に進み、ここで不適当な要求をログし、更に、ステップ１９３０に進み、カーネルは、実行処理にエラーコードを返す。
【０１４２】
処理が正しい許可を有する場合、カーネルは、ステップ１９３５に進み、暗号化されたディレクトリにおいて、一致するエントリからｉノードテーブルを読み出す。なお、ｉノードは、絶対的なパス名、相対的なパス名、又はファイル名に対応することができる。暗号化されたファイルに対応するデータブロックが割り当てられていない場合、（例えば、そのファイルが新しいファイルである場合）カーネルは、空きｉノードのリストからｉノードを読み出す。次に、ステップ１９４０において、カーネルは、このｉノードがエントリと暗号鍵に基づき、第２の鍵を用いる処理データを暗号化し、暗号化されたデータを生成する、次に、ｉノードの直接ブロック及び単一、二重又は三重間接ブロックによって示されるデータブロックに、暗号化されたデータを保存する。暗号化されたデータを保存した後、カーネルは、ステップ１９５０に戻る。
【０１４３】
ディスク内のターゲットファイルに保存された暗号化されたデータを読み出す手順を図２３に示す。まず、ステップ２００５において、カーネルは、暗号化されたファイル名ディレクトリを横断し、ファイル名を復号し、一致が検出されるまで、復号されたファイル名とターゲットファイル名とを比較する。次に、ステップ２０１０において、カーネル処理は、許可ビットを検査し、処理がファイルを復号し、したがってファイルにアクセスする許可を有しているか否かを判定する。処理がこのような許可を有さない場合、カーネルは、ステップ２０１５に進み、ここで不適当な要求をログし、更に、ステップ２０２０に進み、好ましくはエラーメッセージを返す。処理がファイルを復号する許可を有している場合、カーネルは、ステップ２０２５に進み、ｉノード番号を読み出し、暗号化されたデータを含むデータブロックにアクセスする。次に、ステップ２０３０において、カーネルは、暗号鍵を用いて暗号化されたデータを復号し、平文データを復元し、ステップ２０３５において、呼出プロセスによってアクセス可能なこの平文データをバッファに保存し、ステップ２０４０に戻る。
【０１４４】
なお、ＥＯＳは、本発明に基づき、カーネルの多くの部分で機能できる。例えば、本発明の一実施形態においては、コンピュータシステムと付属する周辺装置との間でデータを交換する際にデータを確実に暗号化及び復号するようにデバイスドライバインタフェースを変更してもよい。図２４は、本発明に基づくＥＯＳを用いるコンピュータシステム２１００の構成を示している。コンピュータシステム２１００は、処理２１１０〜２１１３をサポートする。各処理２１１０〜２１１３は、システムコールインタフェース２１５０に接続され、システムコールインタフェース２１５０は、各処理２１１０〜２１１３を実行することによって呼び出すことができ、これにより、デバイスｔｔｙ２１８０、ディスク２１８１、テープ２１８２に対する読出及び書込を行うことができる。
【０１４５】
入出力サブシステム２１６０は、システムコールインタフェース２１５０に接続され、システムコールインタフェース２１５０は、デバイスドライバインタフェース２１７０に接続されている。デバイスドライバインタフェース２１７０は、接続する（１）ｔｔｙ２１８０に接続されているｔｔｙドライバ２１７５と、（２）１つ以上のディスク２１８１に接続されているディスクドライバ２１７６と、（３）テープ２１８２に接続されているテープドライバ２１７７とに接続されている。システムコールインタフェース２５０と、入出力サブシステム２１６０とは、ＥＯＳのカーネルの一部を構成している。
【０１４６】
処理（例えば、処理２１１０）が周辺装置（例えば、ディスク２１８１）に書込を行うことを希望する場合、処理は、システムコールインタフェース２１５０を介してカーネル２１０１にトラップされるシステムコールを実行する。カーネル２１０１は、入出力サブシステム２１６０を呼び出す。本発明の一実施形態においては、入出力サブシステム２１６０は、ディスク２１８１に書き込むべきデータを暗号化し、暗号化されたデータを生成する。次に、入出力サブシステム２１６０は、デバイスドライバインタフェース２１７０を呼び出し、ハードウェアに依存するディスクドライバ２１７６を呼び出し、ディスクドライバ２１７６は、ディスク２１８１に暗号化されたデータを書き込む。ディスク２１８１から処理２１１０に移動するデータは、同様のパスを逆方向に移動し、入出力サブシステム２１６０は、データを処理２１１０に送る前に復号する。
【０１４７】
なお、本発明においては、カーネル内（したがって、処理及びデバイス又はデバイスドライバの間）の他のモジュールを用いて、処理とデバイスの間で転送されるデータを暗号化及び復号してもよい。また、本発明に基づいてカーネルモードで暗号化と復号を実行することには、幾つかの利点がある。第１に、例えば、カーネルアドレス空間（及びそのデータ）が非カーネル処理から保護される。したがって、権限のないユーザは、カーネルアドレス空間において処理される平文データを読み出すことができない。第２に、カーネル処理は、通常、保護モードで実行される。したがって、権限のないユーザは、カーネル処理が終了するまで、カーネル処理に割り込みをかけることができず、したがって、カーネルが未だ暗号化していないデータは、読み出すことができない。第３に、カーネル処理は、非カーネル処理とカーネル処理の間でコンテキストを切り換えるためのオーバーヘッドを必要としないので、より効率的なカーネル処理が実現される。
【０１４８】
他のシステムコールの集合体、例えば、ＳＴＲＥＡＭＳを、処理とデバイスの間で転送されるデータを暗号化及び復号するように本発明に基づいて適応化することもできる。本発明に基づく他の暗号化／復号メカニズムとしてＳＴＲＥＡＭＳは、カーネル空間に常駐する。図２５は、ストリーム２２４０に接続されるユーザアプリケーション２２１０を含む通信処理２２００を示している。ストリーム２２４０は、ユーザアプリケーション２２１０に接続されたストリームヘッド２２１５と、ストリームヘッド２２２０に接続された第１のモジュール２２２０と、第１のモジュール２２２０に接続された第２のモジュール２２２５と、第２のモジュール２２２５に接続されたドライバエンド２２３０とを備える。なお、ストリームは、例えば、図２５に示す２つのモジュール２２２０、２２２５のように、ゼロ以上の任意の個数のモジュールを有することができる。
【０１４９】
ストリームヘッド２２１５は、ストリーム２２４０にアクセスするためのユーザアプリケーション２２１０へのインタフェースを提供する。また、ストリームヘッド２２１５は、ユーザアドレス空間から後述するカーネル内のストリームメッセージにユーザデータをコピーする。第１のモジュール２２２０及び第２のモジュール２２２５は、データをドライバエンド２２３０に送る前にこのデータを処理するために用いることができる。例えば、第１のモジュール２２２０は、ＴＣＰ機能を実行でき、第２のモジュール２２２５は、ＩＰ機能を実行でき、これらは協働してＴＣＰ／ＩＰ機能を提供し、これにより、ユーザアプリケーションは、ネットワークを介して通信を行うことができる。ドライバエンド２２３０は、例えば、ディスク、テープドライブ、ネットワークインタフェースカード、ｔｔｙ又は他の何らかのデバイス（図示せず）と通信を行う。ストリームは、メッセージにデータを保存することによってモジュールの間でデータを伝送する。これにより、例えば、本発明に基づき、第１のモジュール２２２０を用いて、データを暗号化及び復号することができる。各モジュール２２２０、２２２５は、後述するように、メッセージを読み出すための読出キューと、メッセージを書き込むための書込キューとを有する。
【０１５０】
具体例としてユーザアプリケーション２２１０は、暗号化すべきデータをデバイス（図示せず）に送ることができる。ユーザアプリケーション２２１０は、ストリームヘッド２２１５にアクセスし、要求を処理する。ストリームヘッド２２１５は、第１のモジュール２２２０を呼び出し、データをメッセージ形式にフォーマットし、要求を書込キューに入れる。第１のモジュール２２１５において、データを処理する準備が整うと、第１のモジュール２２１５は、書込キューからメッセージを受け取り、本発明に基づいてデータを暗号化し、この暗号化されたデータを他のメッセージに保存する。次に、第１のモジュールは、第２のモジュール２２２５を呼び出し、第２のモジュール２２２５は、書込キューを用いて同様にメッセージにアクセスし、データを処理できる。第２のモジュール２２２５は、ドライバエンド２２３０（デバイスドライバ等）を呼び出し、デバイスに暗号化されたデータを書き込むことができる。なお、ストリーム２２４０がデータを暗号化するためだけに使用される場合、第２のモジュール２２２５は、設けなくてもよい。デバイスからユーザアプリケーションに転送されるデータは、逆方向に移動し、第１のモジュール２２２０は、データをユーザアプリケーション２２１０に渡す前に、このデータを復号することができる。
【０１５１】
図２６〜図２８は、本発明に基づくＥＯＳにおいて用いるように変更できる低レベルのコンポーネントを示している。図２６は、仮想メモリサブシステム２３００によって用いられる基本的な構成のアブストラクションを示す。仮想メモリサブシステムは、ｖノードレイヤ２３１０に接続されたファイルシステム２３０５を備え、ファイルシステム２３０５は、ページレイヤ２３１５とアドレス空間レイヤ２３３５の両方に接続されている。当業者に周知のように、ｖノードは、機能とデータを特定のファイルに提供するデータオブジェクトである。ページレイヤ２３１５は、物理メモリ２３２０に接続され、物理メモリ２３２０は、ハードウェアアドレス変換（hardware address translation：以下、ＨＡＴという。）レイヤ２３２５に接続されている。ＨＡＴレイヤ２３２５は、アブストラクトインタフェースと、ハードウェアに依存する機能との間のインタフェースである。ＨＡＴレイヤ２３２５は、仮想アドレス空間２３５５とアドレス空間レイヤ２３３５に接続されている。また、アドレス空間レイヤ２３３５は、ｓｔｒｕｃｔ  ｐｒｏｃ２３３０、ｖノードレイヤ２３１０、仮想アドレス空間２３５５、匿名レイヤ（anonymous layer）２３４５とに接続されている。匿名レイヤ２３４５は、スワップレイヤ２３４０に接続されており、スワップレイヤ２３４０は、スワップデバイス２３５０に接続されている。
【０１５２】
仮想メモリサブシステム２３００のアブストラクションの一般的な機能は、当業者にとって周知である。本発明の一実施形態では、ｖノードレイヤ２３１０は、データを暗号化及び復号するように変更される。例えば、ｖノードレイヤ２３１０は、データをファイルシステム２３０５に移す前に又はデータを匿名レイヤ２３４５に移す前にデータを暗号化するよう構成できる。匿名レイヤ２３４５からは、データをスワップデバイス２３５０に移すことができる。更に、ｖノードレイヤ２３１０は、ファイルシステム２３０５からデータを移した後に、及び物理メモリ２３２０にデータを移す前にデータを復号するように構成できる。なお、本発明では、他のコンポーネント、好ましくはカーネルで実行されるコンポーネントを用いて、データを暗号化及び復号してもよい。
【０１５３】
図２７は、ページにアクセスするために用いられるページ構造２４００を示している。当業者に周知のように、ページ構造２４００は、ｖノードポインタ２４０１と、ｖノードのオフセット２４０２と、ハッシュ連鎖ポインタ２４０３と、ｖノードページリストへのポインタ２４０４と、空きページリスト又は入出力リストへのポインタ２４０５と、フラグ２４０６と、ＨＡＴ関連の情報２４０７と、参照カウント２４０８とを含む。なお、本発明では、このページ構造を用いることができる。例えば、ｖノードページリストを指示するポインタ２４０４は、現在のオブジェクト（例えば、ファイル）によって使用されるメモリ内の全てのページのリストである。すなわち、ファイルが削除されると、カーネルは、このリスト内のページを横断し、このファイル内の全てのページを無効にする。
【０１５４】
物理メモリは、ページ領域（paged region）と非ページ領域（non-paged region）に分割される。ページ領域は、それぞれが１つの論理ページを記述するページ構造のアレーによって記述される。物理メモリは、本質的にはメモリオブジェクトページのキャッシュであるため、ページ構造は、標準のキャッシュ管理情報を含んでいる必要がある。更に、ページ構造は、アドレス変換メカニズムによって要求される情報を含んでいる。
【０１５５】
各ページは、幾つかのメモリオブジェクトにマッピングされ、各オブジェクトは、ｖノードによって表される。したがって、物理ページの名称又はアイデンティティは、ｖノードによって表されるオブジェクト内のページのオフセットを示す＜ｖノード、オフセット＞タプルによって定義される。これにより、ページは、幾つかの処理によって共有されていても、固有の名称を有することができる。ページ構造は、オフセットとｖノードへのポインタとを保存する。
【０１５６】
各ページは、幾つかの二重リンクリスト上にあり、ページ構造は、このため、３対のポインタを用いる。物理ページを高速に見つけるために、ページは、ｖノード及びオフセットに基づいてハッシュされ、各ページは、ハッシュ連鎖の１つに置かれる。また、各ｖノードは、ページ構造において、第２の一対のポインタを用いて、現在、物理メモリ内にあるオブジェクトの全てのページのリストを維持する。このリストは、ファイルのメモリ内の全てのページ上で動作しなければならないルーチンによって用いられる。最後の一対のポインタは、空きページリスト内又はディスクへの書込を待機しているページのリスト内の何れかにページを維持する。ページは、両方のリスト上に同時には存在できない。
【０１５７】
また、ページ構造は、書込時コピーセマンティクス（copy-on-write semantics）を用いて、このページを共有する処理の数の参照カウントを維持する。ここには、同期のためのフラグ（ロックされた、要求された、移転された）及び変更され参照された（ＨＡＴ情報からの）ビットのコピーがある。また、このページの全ての変換の位置を指定するために用いられるＨＡＴに依存するフィールドもある。
【０１５８】
このページ構造は、ｖノード及びオフセットが与えられたページを見つけ出し、このページをハッシュキュー及び空きページリストに、及びハッシュキュー及び空きページリストから移動させ、このページへのアクセスを同期させるルーチンを含む低レベルインタフェースを有する。
【０１５９】
図２８は、ユーザ処理２５１０と、ＶＭサブシステム２５２０と、ファイルサブシステム２５３０と、ディスク２５４０との間に関係を示すファイルシステム２５００を示している。ユーザ処理２５１０は、ファイルサブシステム２５３０に接続され、ファイルサブシステム２５３０は、ＶＭサブシステム２５１０とディスク２５４０に接続されている。
【０１６０】
ユーザ処理２５０１は、データアクセス機能２５０２とファイルアクセス機能２５０３を呼び出す。当業者に周知のように、これにより、ユーザ処理２５０１は、ファイルサブシステム２５３０によって実行されるｖｏｐ＿ｒｅａｄシステムコール及びｖｏｘ＿ｗｒｉｔｅシステムコールを発行するために、カーネルを呼び出す。そして、ファイルサブシステム２５３０は、ハイレベルｖノード処理２５３１を呼び出す。メモリにデータを書き込む場合、ハイレベルｖノードｏｐｓ２５３１は、アドレス空間レイヤ２５２１にａｓ＿ｆａｕｌｔを供給し、ｓｅｇｍａｐ＿ｆａｕｌｔ２５２２を生成する。カーネルは、ｓｅｇｍａｐ＿ｆａｕｌｔ２５２２を処理し、ｓｅｇ＿ｍａｐドライバ２５２３を用いてファイルの一部をカーネル空間にマッピングし、データをフォルト（faulting）し、ユーザのアドレス空間からそれをコピーする。ｓｅｇ＿ｍａｐドライバ２５２３は、データブロックをメモリに読み出す。データをメモリに書き込む場合は、ｓｅｇｖｎ＿ｆａｕｌｔ２５２４と関連するｓｅｇ＿ｖｎドライバ２５２５は、逆の処理を実行する。
【０１６１】
なお、本発明に基づく暗号化と復号は、カーネルによって実行される様々なステップにおいて、実行できる。例えば、暗号化は、ｓｅｇ＿ｍａｐドライバ２５２３がユーザメモリからカーネルメモリにデータをコピーする際に実行してもよい。
【０１６２】
ファイルシステムは、多くのＶＭセグメントにバッキングストアを提供する。したがって、ＶＭサブシステムは、ファイルシステムと継続的にインタラクトし、ファイルとメモリの間でデータを転送する必要がある。逆に、ファイルシステムは、メモリにマッピングされたアクセスを用いて、読出及び書込システムコールを実現する。
【０１６３】
ＶＭアーキテクチャは、ファイルシステムの全ての特定の詳細を、ｖノードの手続きインタフェースを介してのみファイルにアクセスするｖノードレイヤに落とし込む。ＳＶＲ４においては、ｖノードインタフェースのために以下の３つの処理が設計されている。（１）ファイルシステムに依存する初期化及びパラメータ検査を実行するｍｍａｐから呼び出されるＶＯＰ＿ＭＡＰ。（２）ＶＭがファイルからページを入手する必要があるときに必ず呼び出されるＶＯＰ＿ＧＥＴＰＡＧＥ。（３）潜在的なダーティページをファイルにフラッシュするために呼び出されるＶＯＰ＿ＰＵＴＰＡＧＥ。
【０１６４】
メモリとファイルシステムの間の関係は、シンボリックなものである。ファイルシステムは、バッキングストアをＶＭセグメントに提供し、ＶＭは、ファイルアクセスのインプリメンテーションを提供する。読出又は書込システムコールの発行により、カーネルは、ｓｅｇ＿ｍａｐセグメントを用いて、一時的にファイルの一部を自らのアドレス空間にマッピングし、データをフォルトしユーザのアドレス空間に又はユーザのアドレス空間からデータをコピーする。
【０１６５】
更に、本発明の一実施形態では、データは、必ずしも、物理メモリからディスクに転送される際に常に暗号化されるわけではない。例えば、元々ファイルシステム内にあるファイルとデータは、ファイルシステムに既に保存されている。このようなデータには、例えば、共用ライブラリ、実行可能コード等が含まれる。このような暗号化されていないデータを外部にスワッピングする必要がある場合、オペレーティングシステムは、例えば、変更ビット等のビットを検査し、データが変更されているか否かを判定する。データが変更されていない場合、このデータを含むページは、スワップ空間に保存されず、解放される。一方、データが変更されている場合、データは、暗号化され、ファイルシステム（例えば、ディスク）に書き戻される。処理が再びデータを必要とする場合、このデータを含むページは復号され、コンピュータメモリに返される。更に、ファイルシステム（すなわち、匿名メモリ）に由来しないデータは、ディスクには書き込まれず、スワップ空間に保存しなくてはならない。
【０１６６】
図２９は、本発明に基づき、暗号化ドライバによってデータを暗号化する際に実行される処理３３００を更に詳細に示している。暗号化ドライバは、実際のデバイスに関連せず、ファイル又はファイルに類するインタフェースを有する他の構造に関連するため、擬似ドライバとも呼ばれる。ステップ３３０１において、処理又はユーザは、読出又は書込システムコールを呼び出す。次に、ステップ３３０５において、読出又は書込システムコールは、例えば、それぞれｖｈ＿ｒｅａｄコール又はｖｈ＿ｗｒｉｔｅコール等のカーネルルーチン３３０４を呼び出す。ｖノードオブジェクト内のこれら両方のメソッドは、仮想ファイルシステム内の特定のファイルのためのものである。各呼出は、バッファ処理３３１０を含むステップ３３１０において、対応するファイルシステムインタフェースによって提供される。ファイルシステムインタフェースは、例えば、ＮＦＳ、ｔｍｐｆｓ、ｕｆｓ、ｓｏｃｋｆｓ等、マウントされた特定のファイルシステムに対応する。一般に、バッファ処理３３１０は、カーネル（すなわち、保護された）メモリへのデータの書込を含んでいる。
【０１６７】
例えば、バッキングストア、スワップデバイス等のセカンダリデバイスにデータを書き込まれなければならない場合、ページフォルトが生成され、本発明に基づくカーネル暗号化ルーチン３３１５が実行される。カーネル暗号化ルーチン３３１５は、幾つかの処理の１つを呼び出すことができる。セカンダリデバイスからデータを読み出す場合（例えば、ユーザ又は処理が読出コマンドを呼び出した場合）、暗号化処理３３００は、ステップ３３２０に進み、ここでカーネルは、ｖノード上にｖｏｐ＿ｇｅｔｐａｇｅ処理を呼び出し、適切な暗号化されたデータを得る。次に、ステップ３３２５において、データは、復号され、ステップ３３２６において、カーネルは、呼出を行ったユーザ又は処理に制御を返す。（なお、ユーザ又は処理がブロッキングなしで読出又は書込システムコールを呼び出すことができた場合、ユーザ又は処理は、データを受信するために他のステップを選択してもよい。）
セカンダリデバイスにデータを書き込む場合、ステップ３３１５の後に、カーネルは、ステップ３３３０に進み。データを暗号化する。次に、ステップ３３３５において、カーネルは、ｖノード上にｖｏｐ＿ｐｕｔｐａｇｅ動作を呼び出し、ステップ３３３６において、呼出を行ったユーザ又は処理に制御を返す。
【０１６８】
なお、本発明では、ユーザ又は処理がセカンダリデバイスからデータを読み出し又はセカンダリデバイスにデータを書き込む場合以外にデータを暗号化してもよい。例えば、ＥＯＳを用いて、メモリにフラッシュする必要があるダーティページを暗号化してもよい。このように、例えば、本発明の実施形態においては、割込サービスルーチン（interrupt service routine：ＩＳＲ）を用いて、ページに関連しているダーティビットを定期的に検査してもよい。ダーティビットが設定される場合、ＥＯＳは、ページを暗号化し、この暗号化したページを例えば、バッキングストア等のセカンダリデバイスにフラッシュすることができる。
【０１６９】
図３０は、データ暗号化アルゴリズム３９００のハイレベル図である。データ暗号化アルゴリズム３９００は、ＥＯＳシステム固有ＩＤ（ＥＯＳＩＤ）３９０１（例えば、ライセンスコード）、所定のＥＯＳシステム上のファイルシステム固有ＩＤ（ＦＳＩＤ）３９０２（例えば、ｖｆｓ．ｈからのｆｓｉｄ＿ｔ）、保護されたツリーのルートディレクトリ又はファイルのＩＤ（ＲＩＤ）３９０３（例えば、ｖａｔｔｒ．ｖａ＿ｎｏｄｅｉｄ）、ＥＯＳ（鍵管理システム）上の保護されたオブジェクト固有ＩＤ（ＰＯＩＤ）３９０４、２５６ビット暗号化鍵（ＥＯＫ）３９１０（埋め込まれた又はハッシュ生成された）を使用し、例えば、ＡＥＳ等の暗号化アルゴリズム３９１５にこれらを供給し、ＥＯＳ上で保護されたオブジェクト（例えば、暗号化されたファイル）の２０４８ビット暗号化鍵（ＰＯＥＫ）３９３０を生成する。
【０１７０】
一実施例においては、ＥＯＳに基づいてファイルを暗号化及び復号するために用いられるファイル暗号化及び復号アルゴリズム（以下「ＥＯＳ暗号化アルゴリズム」と呼ぶ。）は、好ましくは、１０２４ビットブロック及び２０４８ビット鍵を用いる。但し、本発明では、ブロックサイズと鍵のサイズは、これより大きくても小さくてもよい。例えば、暗号化及び復号の速度が機密保護より重要である場合は、より小さいブロックと鍵のサイズを用いることができ、機密保護が暗号化及び復号の速度より重要である場合は、より大きいブロックと鍵のサイズを用いることができる。更に、本発明では、鍵のサイズとブロックサイズとをどのように組み合わせて用いてもよい。
【０１７１】
本発明の一実施形態では、ＥＯＳ暗号化アルゴリズムは、組合せである（１）標準のＡＥＳブロック暗号、（２）順列関数（permutation function）（１６×６４ビットにマッピングされた１６×６４ビット）、及び（３）ファイルブロック処理技術の組合せとして実現される。図３０は、２０４８ビット鍵の生成を説明するハイレベルの概要図である。
【０１７２】
図３１は、例えば、図２２のステップ１９４０に示すような、本発明に基づいて、データ（例えば、ファイル、ファイルの一部、データバッファ又はデータの他の何らかのセグメント）を暗号化するために用いられるデータ暗号化処理３２００の概要図である。図３２に示すように、及び後に詳細に説明するように、データ暗号化処理３２００は、以下のようなステップを有している。（１）順列関数３２１９を用いて鍵３２０１の一部を再配列し、新たな鍵３２２０を形成する。（２）例えば、ＡＥＳ規格（ラインダール）３２４０等の暗号化アルゴリズム３２４０に基づき、新たな鍵３２２０を用いて、データ３２３０を暗号化し、暗号化されたデータ３２４１を生成する。（３）第１の順列関数ＰＦ０  ３２７０を用いて暗号化されたデータ３２４１を再配列し、最終的な暗号化されたデータ３２９０を生成する。好適な実施形態においては、後述するように、データは、それぞれが異なる鍵で暗号化された１０２４ビットのデータブロックに分割される。
【０１７３】
図３１に示すように、好適な実施形態においては、鍵３２０１は、それぞれ３２１０〜３２１７のラベルが付された８個の２５６ビットのサブ鍵Ｋ０〜Ｋ７に分割される。暗号化するべきファイル又はデータ部分には、番号が与えられ、この番号を順列関数３２１９に入力することにより、新たな鍵３２２０が生成される。したがって、例えば、暗号化するべきファイルが１０２４ビットのブロックに分割される場合、最初のブロックを暗号化するための第１の鍵は、番号「１」（ブロック番号）及び８個の２５６ビットのサブ鍵ＫＯ〜Ｋ７（３２１０〜３２１７）を順列関数３２１９に入力することによって生成され、これにより、それぞれ３２２１〜３２２８のラベルが付された８個の２５６ビットのサブ鍵Ｋｐｆ００〜Ｋｐｆ０７を含む新たな鍵３２２０が生成される。なお、第１の順列関数３２１９は、当業者にとって周知の如何なる順列関数であってもよい。
【０１７４】
ここで、新たな鍵３２２０用いてデータが暗号化される。なお、第１の１０２４ビットのデータブロックは、ここではラベル３２２０が付されている第１の鍵を用いて暗号化される。なお、上述した手順を用いて、３２２０のラベルが付された第２の鍵を生成し、第２の１０２４ビットのデータブロックを暗号化することができ、以下同様の処理を繰り返すことができる。
【０１７５】
暗号化すべきファイルの一部を構成する新たな１０２４ビットデータブロック３２３０は、それぞれ３２３１〜３２３８のラベルが付された１２８ビットサブブロックＤ０〜Ｄ７に分割される。なお、最後データブロックが１２８個のビットを含んでいない場合、ブロックの残りには、ゼロをパッディングし、１２８ビットのデータブロックが生成される。新たな鍵３２２０と、１２８ビットのサブブロック３２３０は、ＡＥＳアルゴリズム３２４０に入力され、これにより、中間的な暗号化されたデータ３２４１が生成される。中間的な暗号化されたデータ３２４１は、それぞれ３２４２〜３２４９のラベルが付された１２８ビットのブロックＥ０〜Ｅ７に分割される。次に、１２８ビットのブロック３２４２〜３２４９は、それぞれ６４ビットのブロック３２５１〜３２６２に分割され、これにより、それぞれ３２５１〜３２６２のラベルが付されると共に、まとめて３２５０のラベルが付された１６個の６４ビットのブロックＵ０〜Ｕ１５が生成される。次に、（上述のように）１０２４ビットのブロックの番号３２１８及びブロック３２５０が第２の順列関数ｐｆｌ３２７０に入力され、最終的な暗号化されたデータ３２９０が生成される。それぞれ３２７１〜３２８２のラベルが付された６４ビットのブロックＵｐｆｌ０〜Ｕｐｆｌ４が生成される。なお、第２の順列関数ｐｆｌ３２７０は、当分野で周知の如何なる順列関数であってもよく、第２の順列関数ｐｆｌ３２７０は、第１の順列関数３２１９とは異なる順列関数であることが好ましい。また第２の順列関数３２７０は、データブロック内でのランダム性を確実にし、これにより強い暗号化を実現するように第１の順列関数３２１９に依存していることが望ましい。
【０１７６】
このように、例えば、図３１に示すように、本発明に基づいてバッキングストアに書き込まれたデータは、データ３２３０に対応する部分に分割される。なお、保存すべきデータを含むデータ部分は、データ暗号化処理３２００に入力され、データブロックのブロック番号に基づいて、データブロックに対応する暗号鍵を用いて暗号化される。また、暗号化されたデータがブロックを復号するための処理は、図３１に示すステップの逆の手順で行われる。
【０１７７】
本発明の原理及び動作の理解を容易にするために、本発明の特定の実施の形態を詳細事項を用いて説明してきたが、ここで参照した特定の実施の形態及びその詳細事項は、本発明の請求の範囲を限定するものではない。本発明の趣旨及び範囲から逸脱することなく、上に例示した実施の形態を変更できることは、当業者にとって明らかである。
【図面の簡単な説明】
【０１７８】
【図１】本発明に基づく暗号化処理システム及びコンピュータメモリ示す図である。
【図２】本発明に基づく暗号化処理システム及びコンピュータメモリ示す図である。
【図３】従来のＵＮＩＸカーネルを構成するソフトウェアコンポーネントを示す図である。
【図４】本発明に基づく暗号化処理システムを構成するソフトウェアコンポーネントを示す図である。
【図５】本発明に基づくエキスパートデータ制御システムによって実行される処理を説明するブロック図である。
【図６】本発明に基づくゲインアルゴリズムのステップを示すブロック図である。
【図７】本発明に基づく鍵管理システムによって実行されるステップを示すブロック図である。
【図８】本発明に基づく鍵管理システムによって実行されるステップ及びｉノードテーブルを示すブロック図である。
【図９】本発明に基づいて、暗号化されたデータを交換するよう構成された銀行サイトと業者サイトの構成を示す概要図である。
【図１０】図９に示す業者サイトのより詳細な概要図である。
【図１１】本発明に基づいて決済機関が、２つの銀行とそれらの対応する業者とに対してどのように通信を行うかを説明する図である。
【図１２】図１に示すステップをより詳細に示す図である。
【図１３】処理及び仮想メモリシステムのハイレベルの概要図である。
【図１４】メモリ割当システムのブロック図である。
【図１５】メモリプールと、仮想ストレージと、常駐ストレージとの間の関係を示す概要図である。
【図１６】本発明に基づくＮＦＳを用いたネットワークにおける暗号化と復号を説明するハイレベルの概要図である。
【図１７】ｉノードリストと関連するデータブロックとを含むファイルシステムを示す図である。
【図１８】本発明の実施形態に基づく仮想メモリ、オンディスクｉノード及びディスク上の暗号化されたデータを示すハイレベルの概要図である。
【図１９】本発明の実施形態に基づくアクセス許可を含むデータ構造を示す図である。
【図２０】本発明に基づくＥＯＳのコンポーネントのハイレベルの概要図である。
【図２１】本発明に基づく認証情報及び許可の使用を説明する図である。
【図２２】本発明の実施形態に基づき、ディスクに暗号化されたデータを保存するために用いられる手順を示すフローチャートである。
【図２３】本発明の実施形態に基づき、ディスクから暗号化されたデータを読み出すために用いられる手順を示すフローチャートである。
【図２４】本発明の実施形態に基づくユーザ処理とデバイスドライバの間の関係を示す概要図である。
【図２５】本発明の実施形態に基づくユーザアプリケーションとストリームを示す概要図である。
【図２６】ファイルシステム、スワップデバイス、物理メモリ及びこれらの間でデータを転送するために用いられる構造のハイレベルの図面である。
【図２７】仮想メモリシステムにおいて用いられるページ構造を示す図である。
【図２８】ユーザ処理、ＶＭサブシステム、ファイルサブシステム及びディスクを示す図である。
【図２９】本発明に基づきページを暗号化及び復号するために用いられる手順を示す図である。
【図３０】本発明に基づくデータ暗号化アルゴリズムのハイレベルの概要図である。
【図３１】本発明に基づくデータ暗号化アルゴリズムの低レベルの概要図である。
【図１】
2006510958.tif 000005
【図２】
2006510958.tif 000006
【図３】
2006510958.tif 000007
【図４】
2006510958.tif 000008
【図５】
2006510958.tif 000009
【図６】
2006510958.tif 000010
【図７】
2006510958.tif 000011
【図８】
2006510958.tif 000012
【図９】
2006510958.tif 000013
【図１０】
2006510958.tif 000014
【図１１】
2006510958.tif 000015
【図１２】
2006510958.tif 000016
【図１３】
2006510958.tif 000017
【図１４】
2006510958.tif 000018
【図１５】
2006510958.tif 000019
【図１６】
2006510958.tif 000020
【図１７】
2006510958.tif 000021
【図１８】
2006510958.tif 000022
【図１９】
2006510958.tif 000023
【図２０】
2006510958.tif 000024
【図２１】
2006510958.tif 000025
【図２２】
2006510958.tif 000026
【図２３】
2006510958.tif 000027
【図２４】
2006510958.tif 000028
【図２５】
2006510958.tif 000029
【図２６】
2006510958.tif 000030
【図２７】
2006510958.tif 000031
【図２８】
2006510958.tif 000032
【図２９】
2006510958.tif 000033
【図３０】
2006510958.tif 000034
【図３１】
2006510958.tif 000035