(57)【特許請求の範囲】
【請求項１】
暗号データファイルを格納する第１の論理的に保護されたメモリ部分と、暗号鍵データを格納する第２の論理的に保護されたメモリ部分とを有し、該暗号データファイルを含むメモリと、
当該コンピュータシステムに固有のシステム識別子を用いてユーザを確認し、上記暗号データファイルに対するアクセスを制御するカーネルを有するオペレーティングシステムと、
上記暗号データファイル及び上記暗号鍵データに対するアクセスを制御する暗号化鍵管理システムとを備え、
上記暗号化鍵管理システムは、鍵エンジンを有し、該鍵エンジンは、
パス鍵及びデータファイル名が供給され、暗号データファイル名鍵を生成し、
上記暗号データファイル名鍵及び上記データファイルコンテンツを用いて、暗号データファイルコンテンツ鍵を生成し、
上記データファイルコンテンツを、上記暗号データファイルコンテンツ鍵によって暗号化して、上記暗号データファイルを生成し、
上記データファイル名を、上記暗号データファイル名鍵によって暗号化して、暗号データファイル名を生成し、
上記カーネルは、仮想ノード有し、該仮想ノードは、
（ａ）上記暗号データファイルの位置を決定する暗号ディレクトリエントリを復号し、
（ｂ）上記暗号データファイルを復号して、該暗号データファイルに含まれるデータファイルコンテンツにアクセスすることを特徴とするコンピュータシステム。
【請求項２】
上記カーネルは、平文データファイルを暗号化して、暗号データファイルを生成するとともに、該暗号データファイルを復号して、該平文データファイルを生成する暗号化エンジンを有することを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
上記メモリは、上記暗号化エンジンに接続されており、上記暗号データファイルを格納することを特徴とする請求項２記載のコンピュータシステム。
【請求項４】
上記暗号化エンジンは、対称鍵暗号化アルゴリズムに基づいて、上記平文データファイルを暗号化するとともに、上記暗号データファイルを復号することを特徴とする請求項２記載のコンピュータシステム。
【請求項５】
上記対称鍵暗号化アルゴリズムは、ブロック暗号に基づいていることを特徴とする請求項４記載のコンピュータシステム。
【請求項６】
上記対称鍵暗号化アルゴリズムは、ラインダールアルゴリズムからなることを特徴とする請求項５記載のコンピュータシステム。
【請求項７】
上記対称鍵暗号化アルゴリズムは、１２８ビット、１９２ビット、２５６ビット、５１２ビット、１０２４ビット又は２０４８ビットのブロックサイズを用いることを特徴とする請求項６記載のコンピュータシステム。
【請求項８】
上記対称鍵暗号化アルゴリズムは、１２８ビット、１９２ビット、２５６ビット、５１２ビット、１０２４ビット又は２０４８ビットの鍵長を用いることを特徴とする請求項６記載のコンピュータシステム。
【請求項９】
上記対称鍵暗号化アルゴリズムは、ＤＥＳアルゴリズムからなることを特徴とする請求項５記載のコンピュータシステム。
【請求項１０】
上記対称鍵暗号化アルゴリズムは、トリプルＤＥＳアルゴリズムからなることを特徴とする請求項５記載のコンピュータシステム。
【請求項１１】
上記対称鍵暗号化アルゴリズムは、ＩＤＥＡ、ブロウフィッシュ、ツーフィッシュ、ＣＡＳＴ−１２８からなるグループから選択されたアルゴリズムからなることを特徴とする請求項５記載のコンピュータシステム。
【請求項１２】
上記カーネルは、ＵＮＩＸ（登録商標）オペレーティングシステムからなることを特徴とする請求項１記載のコンピュータシステム。
【請求項１３】
上記ＵＮＩＸオペレーティングシステムは、システム５リビジョンであることを特徴とする請求項１２記載のコンピュータシステム。
【請求項１４】
上記データファイル名は、上記暗号データファイルに関連しており、
上記暗号化鍵管理システムは、上記暗号データファイル名を格納することを特徴とする請求項１記載のコンピュータシステム。
【請求項１５】
上記暗号化鍵管理システムは、データファイルの対応するアクセス許可が所定の値である場合、該データファイルへのアクセスを許可することを特徴とする請求項１４記載のコンピュータシステム。
【請求項１６】
上記メモリに接続された補助装置を更に備え、
上記補助装置は、上記暗号データファイルを保存し、該暗号データファイルは、ファイル抽象名称を用いてアクセスされることを特徴とする請求項１記載のコンピュータシステム。
【請求項１７】
上記補助装置は、補助記憶装置であることを特徴とする請求項１６記載のコンピュータシステム。
【請求項１８】
上記補助装置は、スワップデバイスであることを特徴とする請求項１６記載のコンピュータシステム。
【請求項１９】
上記補助装置は、ソケット接続を有するインタフェースポートであることを特徴とする請求項１６記載のコンピュータシステム。
【請求項２０】
）
上記ソケット接続は、コンピュータネットワークであることを特徴とする請求項１９記載のコンピュータシステム。
【請求項２１】
上記コンピュータネットワークは、インターネットであることを特徴とする請求項２０記載のコンピュータシステム。
【請求項２２】
上記暗号化鍵管理システムは、上記暗号データファイルへのパス名を暗号化するとともに、上記暗号データファイルコンテンツを読み出すときに、該暗号データファイルへのパス名を復号することを特徴とする請求項１４記載のコンピュータシステム。
【請求項２３】
ａ．ファイルシステム内の暗号データファイルにアクセスするための暗号データファイル名及び対応する暗号データファイル位置を含むディレクトリ情報を有するディレクトリ構造と、該暗号データファイル名及び該暗号データファイル位置を、１つ以上の暗号化鍵を用いて復号して、該暗号データファイル名、該暗号データファイル位置及び該暗号データファイルに対応した平文データを再生するオペレーティングシステムカーネルとを有する第１の装置と、
ｂ．当該コンピュータシステムに固有の及び当該コンピュータシステム上の暗号データファイルに固有の識別子から、上記１つ以上の暗号化鍵を生成する鍵生成器と、
ｃ．上記第１の装置に接続され、該第１の装置と暗号データを交換する第２の装置とを備え、
上記オペレーティングシステムカーネルは、上記平文データを、上記１つ以上の暗号化鍵を用いて暗号化して、上記ディレクトリ情報及び上記暗号データファイルに対応した暗号データを生成する仮想ノードを有することを特徴するコンピュータシステム。
【請求項２４】
上記オペレーティングシステムカーネルは、対称アルゴリズムを用いて、平文データを暗号化するとともに、暗号データを復号することを特徴とする請求項２３記載のコンピュータシステム。
【請求項２５】
上記対称アルゴリズムは、ブロック暗号からなることを特徴とする請求項２４記載のコンピュータシステム。
【請求項２６】
上記ブロック暗号は、ラインダールアルゴリズムからなることを特徴とする請求項２５記載のコンピュータシステム。
【請求項２７】
上記１つ以上の暗号化鍵のうちの１つは、少なくとも１０２４ビットからなることを特徴とする請求項２６記載のコンピュータシステム。
【請求項２８】
上記第２の装置は、補助記憶装置であることを特徴とする請求項２３記載のコンピュータシステム。
【請求項２９】
上記第２の装置は、スワップデバイスであることを特徴とする請求項２３記載のコンピュータシステム。
【請求項３０】
上記第２の装置は、通信チャンネルの一部を構成することを特徴とする請求項２３記載のコンピュータシステム。
【請求項３１】
上記通信チャンネルは、ネットワークであることを特徴とする請求項３０記載のコンピュータシステム。
【請求項３２】
上記ネットワークは、インターネットであることを特徴とする請求項３１記載のコンピュータシステム。
【請求項３３】
暗号データファイルを、ディレクトリを有するコンピュータファイルシステムに保存するデータ保存方法において、
ａ．ファイル名を有する平文データファイルが供給されるステップと、
ｂ．上記平文データファイルを、対称鍵を用いて暗号化して、上記暗号データファイルを生成するドライバと、該暗号データファイルを、上記コンピュータファイルシステムのある位置に保存するドライバと、上記ファイル名の暗号及び該位置の暗号を含むエントリを、上記ディレクトリに保存するドライバとを有する仮想ノードを備えるカーネルコードを、オペレーティングシステムにおいて実行するステップとを有し、
上記カーネルコードを実行するステップは、
パス鍵及び上記ファイル名が供給され、暗号データファイル名鍵を生成するステップと、
上記暗号データファイル名鍵及び上記平文データファイルを用いて、暗号ファイルコンテンツ鍵を生成するステップと、
上記平文データファイルを、上記暗号ファイルコンテンツ鍵によって暗号化して、上記暗号データファイルを生成するステップと、
上記データファイル名を、上記暗号データファイル名鍵によって暗号化して、暗号データファイル名を生成するステップとを有し、
上記対称鍵は、第１の鍵を、上記平文データファイルのブロックにそれぞれ対応したサブ鍵に分割し、該サブ鍵のそれぞれを、対応するブロックの識別子に基づいて変更して、変更サブ鍵を生成し、該変更サブ鍵を結合することによって、部分的に生成されることを特徴とするデータ保存方法。
【請求項３４】
上記対称鍵は、上記平文データファイルを、ブロック暗号に基づいて暗号化して、上記暗号データファイルを生成することを特徴とする請求項３３記載のデータ保存方法。
【請求項３５】
上記ブロック暗号は、ラインダールアルゴリズムからなることを特徴とする請求項３４記載のデータ保存方法。
【請求項３６】
上記ブロック暗号は、ＤＥＳ、トリプルＤＥＳ、ブロウフィッシュ、ＩＤＥＡからなるグループから選択されたアルゴリズムからなることを特徴とする請求項３４記載のデータ保存方法。
【請求項３７】
上記暗号データファイル名鍵及び上記暗号ファイルコンテンツ鍵を、コンピュータ記憶装置の第１の保護領域に保存するステップと、
上記暗号データファイル名及び上記暗号ファイルコンテンツを、上記コンピュータ記憶装置の第２の保護領域に保存するステップとを更に有する請求項３３記載のデータ保存方法。
【請求項３８】
上記カーネルコードを実行して平文データファイルを暗号化するステップは、データをコンピュータメモリと補助装置間で転送するときに、実行されることを特徴とする請求項３３記載のデータ保存方法。
【請求項３９】
上記補助装置は、補助記憶装置であることを特徴とする請求項３８記載のデータ保存方法。
【請求項４０】
上記補助装置は、スワップデバイスであることを特徴とする請求項３８記載のデータ保存方法。
【請求項４１】
上記補助装置は、複数の装置のネットワークの一部を構成することを特徴とする請求項３８記載のデータ保存方法。
【請求項４２】
上記ネットワークは、インターネットであることを特徴とする請求項４１記載のデータ保存方法。
【請求項４３】
ａ．暗号データファイルと、データファイルの暗号名に対応した第１の要素及び該データファイルの暗号位置に対応した第２の要素を有する記録を含むディレクトリとを記憶した物理メモリと、
ｂ．上記物理メモリに接続された補助装置と、
ｃ．上記データファイルを上記物理メモリから上記補助装置に転送するときは、上記第１及び第２の要素を直接復号して、該物理メモリから上記暗号データファイルを呼び出し、該データファイルを該補助装置から該物理メモリに転送するときは、該第１及び第２の要素を直接再暗号化するドライバが組み込まれた仮想ノードを有するカーネルを有するオペレーティングシステムと、
ｄ．上記カーネルを実行するプロセッサとを備え、
上記ドライバは、上記第１及び第２の要素を、上記データファイルの１つ以上の識別子から生成された１つ以上の鍵と、該データファイルを含むルートディレクトリと、該ルートディレクトリを含むファイルシステムとを用いて、直接復号及び再暗号化することを特徴とするコンピュータシステム。
【請求項４４】
上記カーネルは、対称鍵暗号化アルゴリズムを用いて、データを暗号化及び復号することを特徴とする請求項４３記載のコンピュータシステム。
【請求項４５】
上記対称鍵暗号化アルゴリズムは、ブロック暗号に基づいていることを特徴とする請求項４４記載のコンピュータシステム。
【請求項４６】
上記対称鍵暗号化アルゴリズムは、ラインダールアルゴリズムからなることを特徴とする請求項４５記載のコンピュータシステム。
【請求項４７】
上記カーネルは、ＵＮＩＸオペレーティングシステムからなることを特徴とする請求項４６記載のコンピュータシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、米国特許法第１１９条（ｅ）項に基づき、２００２年８月２３日に出願され、同時に係属中の米国仮特許出願第６０／４０５，４５９号、発明の名称「暗号化オペレーティングシステム（ENCRYPTING OPERATING SYSTEM）」に対する優先権を主張する。２００２年８月２３日に出願され、同時に係属中の米国仮特許出願第６０／４０５，４５９号、発明の名称「暗号化オペレーティングシステム（ENCRYPTING OPERATING SYSTEM）」は、参照により本願に援用される。
【技術分野】
【０００２】
本発明は、コンピュータオペレーティングシステムの分野に関する。詳しくは、本発明は、コンピュータメモリと補助装置（secondary devices）との間で転送されるデータを自動的に暗号化及び復号するために用いられるオペレーティングシステムに関する。
【背景技術】
【０００３】
コンピュータシステムの形式で実現されている情報技術は、現代社会に広く普及した重要な技術である。これらのコンピュータシステムが適切且つ正常に動作することは、小さくは個人の活動とって、大きくは大企業や政府にとって重要である。データ保護（Data security）は、コンピュータシステムの動作のアクセプタビリティに影響する重要な課題の１つである。データの安全性を保つためには、データへのアクセス及びデータの使用を選択的に制限し、並びに権限のない変更又は破壊からデータを保守及び保護する必要がある。データ保護は、保存されたデータの使用及び完全性（integrity）を単に保護するだけではなく、コンピュータシステム全体の総合的な安全性に影響する。例えば、改竄された許可データ（permissions data）により、コンピュータシステムリソースの不正使用（unauthorized use）が可能となり、こればかりか、コンピュータシステムの動作に障害が生じることもある。更に、コンピュータシステムと協力して、殆ど全ての大規模な試みが実現されているが、これらの試み自体、データ保護が低下すると、妨げられ、又は問題が生じる。インターネット及び他の大規模なコンピュータネットワークが著しく普及したことにより、データ保護の弱点も顕著になっている。
【０００４】
コンピュータデータを保護する手法は、主に、権限のないエンティティによるデータの読出を防ぐために、データに対するアクセスを制御する手法と、データを暗号化する手法の２つの手法がある。アクセス制御のための手法としては、パスワード又は他の情報に基づく制限及びファイアウォール又は他のハードウェアに基づく入口での制限がある。暗号化に基づく保護技術は、適切な権限のないアクセスによっては、データを認識できないようにする技術である。増え続ける大規模な公共の及び個人のネットワークの利益を享受するためには、これらのネットワーク内の及びネットワーク間の実質的な通信量が重要である。これらの通信の速度及び容易さは、通信によって得られる利益に直結し、通信速度は、通信システムのデータの保護と相反する性質がある。コンピュータシステム間の通信によって生み出される価値は、余りにも大きく、実質的なハードウェアベースの制限より、データを保護するための実用的な代替策が求められている。一般的な代替策は、例えば、パスワード等を用いた、情報ベースのアクセス制御である。情報ベースのアクセス制御のセキュリティ侵害に対する脆弱性は明白であり、インターネットを介して広がるコンピュータウイルス及びウェブサイトに対する悪意のある攻撃によって、数十億ドルもの損害が生じている。
【０００５】
コンピュータシステムをより現実的に保護するための第１のステップとして、コンピュータシステムのデータの保護を確実する必要がある。データを理解する能力は、暗号化によって選択的に制御できる。一般に、暗号化方法は、理解可能なデータ（平文（plain text））を理解できない暗号形式（encrypted form、暗号文（cipher text））に変換する数値計算用アルゴリズム（mathematical algorithm）を利用する。暗号形式は、鍵に関する知識及び鍵を用いないと、復号することができない。データ保護の品質は、アルゴリズムの複雑さと、鍵のサイズと、鍵の保管とに依存する。１９７２年、米国標準局（National Bureau of Standards）、現在の米国連邦標準技術局（National Institute of Standards and Technology：以下、ＮＩＳＴという。）は、暗号化規格について最初の公募を行った。これに応じて、データ暗号化規格（Data Encryption Standard：以下、ＤＥＳという。）が作成された。既に３０年来用いられているこの対称アルゴリズム規格では、６４ビットのブロック暗号（block cipher）を用いて、５６ビットの秘密鍵によりデータを暗号化する。近年の分散型鍵検索技術（distributed key search techniques）の進歩により、ＤＥＳを使用する際の安全性の核であるＤＥＳの５６ビットの鍵は、今日のセキュリティアプリケーションには、短か過ぎることが証明されている。
【０００６】
ＤＥＳは、トリプルＤＥＳ（Triple-DES）によって改良された。トリプルＤＥＳでは、３つの異なる５６ビットの鍵に分割される１６８ビットの鍵を用いて、ＤＥＳアルゴリズムにより、６４ビットのブロック（blocks）を連続して暗号化し、そして復号し、最終的に再暗号化する。このようにＤＥＳは改良されたが、トリプルＤＥＳは、ＤＥＳ特有の６４ビットのブロック長の制限を承継し、これは、同じ鍵を用いて多量のデータ暗号化されている場合、攻撃に晒されやすい。５６ビットの鍵の短かさのために、及び多量のデータを扱うために、比較的短い６４ビットのブロックを用いて繰り返す必要がある暗号化プロセスの膨大な回数のために、暗号化のパターンは、自ずと繰り返され、明らかになり、したがって、鍵を解読し、データに不正にアクセスすることが容易になってしまう。
【０００７】
ＤＥＳの改良の必要性に応じて、ＮＩＳＴは、１９９７年に次世代暗号化規格（Advance Encryption Standard：以下、ＡＥＳという。）プログラムを発表した。ＡＥＳプログラムは、より大きなブロック暗号を要求する。ブロック暗号を、様々な同期及びエラー拡張特性（synchronization and error extension properties）、一方向ハッシュ関数（one-way hash functions）、メッセージ認証コード（message authentication codes）及び擬似乱数発生器によって用いることにより、ストリーム暗号（stream ciphers）を設計することができる。この柔軟性のために、ブロック暗号は、現代の暗号化技術の中心的役割を担うようになった。ＮＩＳＴによって指定されている他の設計基準としては、より長い鍵長、より大きなブロックサイズ、より速い実行速度及びより高い柔軟性がある。ＮＩＳＴの意図は、ＡＥＳを次世代の標準対称ブロック暗号アルゴリズムとすることであった。２００１年１０月、ＮＩＳＴは、次世代暗号化規格のための連邦情報処理規格（Federal Information Processing Standard：以下、ＦＩＰＳという。）ＦＩＰＳ−１９７としてヴィンセント・ライメン（Vincent Rijmen）及びホアン・ダーメン（Joan Daemen）によって設計されたラインダール暗号（Rijndael cipher）を承認したこと発表した。ラインダールアルゴリズムは、主に、その効率性の高さと、メモリ要求の低さのために採用された。
【０００８】
ラインダール暗号は、１２８、１９２又は２５６ビットの可変長鍵を用いる１２８ビットの対称ブロック暗号（symmetric block cipher）である。この暗号は、鍵に依存した４個の８×８ビットのＳボックスと、一般行列（ＧＥ）に対して固定の４×４最大距離分割可能な行列（fixed 4 by 4 maximum distance separable matrix）と、擬似アダマール変換と、ビット毎の回転と、注意深く設計された鍵決定（key schedule）とを含む全単射Ｆ関数（bijective F function）によるラウンド数が１６のファイステルネットワーク（Feistel network）である。ラウンド関数と鍵決定の両方の設計により、速度と、データサイズと、鍵設定時間と、メモリとの間のトレードオフを柔軟に調整することができる。ラインダールアルゴリズムは、リバースエンジニアリングによって鍵を検出する、又は入手可能な限られたデータ量からコードを推測してシステムを破ることの両方を困難にする暗号解析アルゴリズム（crypto analyzed algorithm）である。ラインダールアルゴリズムは、暗号化の分野において周知の技術であり、ＮＩＳＴのウェブサイト「ＡＥＳホームページ」、ワールドワイドウェブＵＲＬ、http://csrc.nist.gov/encryption/aes/において、詳しく説明されている。
【０００９】
近年、コンピュータのデータ保存能力及び処理速度は、益々高くなっている。この処理能力のために、コンピュータは、個人的なデータ、患者の病歴のような病院記録、秘密取引データ（confidential business data）、他の重要な情報等を保存及び処理する個人及び企業にとって魅力的なものとなっている。許可ユーザ（authorized users）ユーザ以外によるデータへのアクセスを確実に防ぐために、様々な方法でデータを保護することができる。例えば、多くのコンピュータシステムは、ユーザがデータにアクセスする前に、パスワード又はパスフレーズ（pass phrase）の入力を要求する。更に、コンピュータシステムは、データにアクセスするための許可が与えられた特別なグループに、ユーザが属することを要求することができる。
【００１０】
これらの方式には、幾つかの欠点がある。第１に、記憶装置（storage device）がコンピュータシステムから取り外されると、無許可ユーザ（unauthorized user）でも、パスワード又はパスフレーズに依存するセキュリティ機構をバイパスして、コンピュータの補助記憶装置（secondary computer storage、例えばハードディスク）上のデータにアクセスすることができる。第２に、パスワード及びパスフレーズの長さは、多くの場合、限定されているので、コンピュータプログラムを用いて、シンボルの組合せを高速に試して、ユーザが作成したパスワード及びパスフレーズを推測し、記憶装置に、すなわち秘密データにアクセスすることができる。
【００１１】
これに対して、幾つかのコンピュータシステムは、様々な解決策を提供している。例えば、ＵＮＩＸ（登録商標）オペレーティングシステムの幾つかのバージョンでは、ユーザが記憶装置にデータを保存する毎に、及び記憶装置からデータを読み出す毎に、パスワードを入力することを要求するアプリケーションプログラム、すなわち「クリプト（crypt）」プログラムをサポートしている。他のコンピュータシステムは、ユーザがデータを保存する毎に、及びデータを読み出す毎に、パスワードを入力することができるアプリケーションプログラムを提供している。また、他のアプリケーションベースの暗号化装置では、ファイル全体のパーティションを暗号化するとともに、個々のファイルを暗号化できるようにしている。
【００１２】
これらのアプリケーションプログラムは、幾つかの理由で効率が悪い。第１に、これらのアプリケーションプログラムは、コンピュータメモリと２次記憶装置（secondary memory）間でデータを転送するとき、ユーザに対してパスワードの入力を要求し、これは、時間がかかるプロセスである。第２に、これらのアプリケーションプログラムは、カーネルに割り込む（traps）毎に、データを保存し及び読み出す下位のレベルのハードウェア特有のコードを含むコンテキスト切換（context switch）を要求するために、効率が悪い。コンテキスト切換による余分のオーバヘッドは、暗号化アプリケーションプログラム（encryption application program）を呼び出すプログラムの実行速度を遅くしまうことがある。更に、これらのアプリケーションプログラムは、カーネルルーチン又はより高い優先度を有する他のアプリケーションによって先取り（pre-empted）されることがある。第３に、これらのアプリケーションプログラムは、必ずしも移植可能（portable）ではない。すなわち、これらのアプリケーションプログラムは、暗号化アプリケーションプログラムをサポートしていないプラットフォーム上では、適切に実行することができない。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
そこで、本発明の目的は、高速で、ユーザにとってシームレスで、移植可能で、効率的にデータを暗号化して保存するデータ保存方法及びコンピュータシステムを提供することである。
【課題を解決するための手段】
【００１４】
本発明は、コンピュータの物理メモリと、補助装置、例えば補助記憶装置との間で転送されるデータを暗号化及び復号するコンピュータシステム及び方法を提供する。このコンピュータシステムは、暗号データファイル（encrypted data file）を含むメモリと、固有のシステム識別子を用いてユーザを確認し、暗号データファイルに対するアクセスを制御するカーネルを有するオペレーティングシステムとを備える。カーネルは、（ａ）暗号データファイル位置を決定する暗号ディレクトリエントリを復号し、（ｂ）暗号データファイルを復号して、暗号データファイルに含まれるデータファイルコンテンツにアクセスする仮想ノードを備える。カーネルにおいて暗号化及び復号処理を行うことにより、データを保護モード（protected mode）で、より効率的に暗号化及び復号することができる。カーネルは、データへのパスのパス名を更に暗号化し、これにより、更に高いレベルの保護（additional level of security）を提供する。
【００１５】
本発明の第１の実施の形態として、コンピュータシステムは、暗号データファイル（encrypted data file）を格納する第１の論理的に保護されたメモリ部分と、暗号鍵データを格納する第２の論理的に保護されたメモリ部分とを有し、暗号データファイルを含むメモリと、固有のシステム識別子を用いてユーザを確認し、暗号データファイルに対するアクセスを制御するカーネルを有するオペレーティングシステムと、暗号データファイル及び暗号鍵データに対するアクセスを制御する暗号化鍵管理システムとを備える。暗号化鍵管理システムは、鍵エンジンを有し、鍵エンジンは、パス鍵及びデータファイル名が供給され、暗号データファイル名鍵を生成し、暗号データファイル名鍵及びデータファイルコンテンツを用いて、暗号データファイルコンテンツ鍵を生成し、データファイルコンテンツを、暗号データファイルコンテンツ鍵によって暗号化して、暗号データファイルを生成し、データファイル名を、暗号データファイル名鍵によって暗号化して、暗号データファイル名を生成する。カーネルは、（ａ）暗号データファイルの位置を決定する暗号ディレクトリエントリを復号し、（ｂ）暗号データファイルを復号して、暗号データファイルに含まれるデータファイルコンテンツにアクセスする仮想ノードを備える。コンピュータシステムは、好ましくはＵＮＩＸ（登録商標）オペレーティングシステムに基づいている。一実施の形態においては、カーネルは、暗号化エンジンを備える。暗号化エンジンは、平文データファイル（clear data files）を暗号化して、暗号データファイルを生成するとともに、暗号データファイルを復号して、平文データファイルを生成する。他の実施の形態においては、コンピュータシステムは、暗号化エンジンに接続され、暗号データファイルを格納するメモリ部分を更に備える。他の実施の形態においては、暗号化エンジンは、例えばラインダールアルゴリズム等の対称鍵暗号化アルゴリズムに基づいて、平文データファイルを暗号化するとともに、暗号データファイルを復号する。
【００１６】
本発明の第２の実施の形態であるコンピュータシステムは、第１の装置（first device）と、第２の装置（second device）とを備える。第１の装置は、ファイルシステム（file system）内の暗号データファイルにアクセスするための暗号データファイル名（encrypted data file names）及び対応する暗号データファイル位置（encrypted data file locations）を含むディレクトリ情報を有するディレクトリ構造と、暗号データファイル名及び暗号データファイル位置を、１つ以上の暗号化鍵（encryption key）を用いて復号して、暗号データファイル名、暗号データファイル位置及び暗号データファイルに対応した平文データを再生するオペレーティングシステムカーネルであって、平文データを、１つ以上の暗号化鍵を用いて暗号化して、ディレクトリ情報及び暗号データファイルに対応した暗号データを生成する仮想ノードを有するオペレーティングシステムカーネルとを有する。第２の装置は、第１の装置に接続され、第１の装置と暗号データを交換する。オペレーティングシステムカーネルは、好ましくはＵＮＩＸオペレーティングシステムに基づいている。一実施の形態においては、オペレーティングシステムカーネルは、対称アルゴリズムを用いて、平文データを暗号化する。対称アルゴリズムは、好ましくは、例えば、ラインダールアルゴリズム等のブロック暗号からなる。他の実施の形態においては、１つ以上の暗号化鍵のうちの１つは、少なくとも２０４８ビットからなる。他の実施の形態においては、第２の装置は、通信チャンネルに一部を構成している。通信チャンネルは、例えばローカルエリアネットワーク（ＬＡＮ）又はインターネット等のネットワークである。
【００１７】
本発明の第３の実施の形態であるデータ保存方法は、暗号データファイル（encrypted data file）を、ディレクトリを有するコンピュータファイルシステムに保存する。このデータ保存方法は、ファイル名を有する平文データファイルが供給されるステップと、平文データファイルを、対称鍵を用いて暗号化して、暗号データファイルを生成するドライバと、暗号データファイルを、コンピュータファイルシステムのある位置に保存するドライバと、ファイル名の暗号及び位置の暗号を含むエントリを、ディレクトリに保存するドライバとを有する仮想ノードを備えるカーネルコードを、オペレーティングシステムにおいて実行するステップとを有する。カーネルコードを実行するステップは、パス鍵及びファイル名が供給され、暗号データファイル名鍵を生成するステップと、暗号データファイル名鍵及び平文データファイルを用いて、暗号ファイルコンテンツ鍵を生成するステップと、平文データファイルを、暗号ファイルコンテンツ鍵によって暗号化して、暗号データファイルを生成するステップと、データファイル名を、暗号データファイル名鍵によって暗号化して、暗号データファイル名を生成するステップとを有する。対称鍵は、第１の鍵（first key）を、データファイルのブロックにそれぞれ対応したサブ鍵に分割し、サブ鍵のそれぞれを、対応するブロックの識別子に基づいて変更して、変更サブ鍵を生成し、変更サブ鍵を結合することによって、部分的に生成される。一実施の形態においては、対称鍵は、平文データファイルを、ブロック暗号に基づいて暗号化して、暗号データファイルを生成する。ブロック暗号は、好ましくはラインダールアルゴリズムからなる。
【００１８】
本発明の第４の実施の形態であるコンピュータシステムは、ａ．暗号データファイル（encrypted data file）と、データファイルの暗号名に対応した第１の要素及びデータファイルの暗号位置（encrypted location）に対応した第２の要素を有する記録を含むディレクトリを記憶した物理メモリ（physical memory）と、ｂ．物理メモリに接続された補助装置と、ｃ．データファイルを物理メモリから補助装置に転送するときは、第１及び第２の要素を直接復号して、物理メモリから暗号データファイルを呼び出し、データファイルを補助装置から物理メモリに転送するときは、第１及び第２の要素を直接再暗号化するドライバが組み込まれた仮想ノードを有するカーネルを有するオペレーティングシステムと、ｄ．カーネルを実行するプロセッサとを備える。ドライバは、第１及び第２の要素を、データファイルの１つ以上の識別子から生成された１つ以上の鍵と、データファイルを含むルートディレクトリと、ルートディレクトリを含むファイルシステムとを用いて、直接復号及び再暗号化する。一実施の形態においては、カーネルは、例えば、ラインダールアルゴリズム等の対称鍵暗号化アルゴリズムに用いて、データを暗号化及び復号する。
【発明を実施するための最良の形態】
【００１９】
以下の説明において、同じ符号は、同じ要素を示す。ここで、ある図面を用いてある要素が説明されており、他の図面におけるその要素の詳細又は関係が変更されていない場合、その要素の説明は、全ての図面について適用されるものとする。
【００２０】
本発明は、暗号化オペレーティングシステム（Encrypting Operating System：以下、ＥＯＳという。）と呼ばれるモディファイドＵＮＩＸ（登録商標）オペレーティングシステム（modified UNIX operating system）を提供する。以下に説明する好ましい実施の形態は、ＡＴ＆Ｔ ＵＮＩＸ ＳＶＲ３．４、ＳＶＲ４、ＳＶＲ４．２及びＳＶＲ５オペレーティングシステムカーネルのアーキテクチャに基づいているが、ＥＯＳの動作は、特定のＵＮＩＸオペレーティングシステムに限定されない。明瞭で一貫性がある説明のために、以下では、モディファイドＡＴ＆Ｔ ＵＮＩＸ ＳＶＲ４オペレーティングシステムカーネルであるＥＯＳに限定した説明を行う。なお、本発明の範囲から逸脱することなく、他のＵＮＩＸオペレーティングシステムを変更して、ＥＯＳを形成することもできる。
【００２１】
好ましくは、ＥＯＳは、例えば、僅かな例を挙げれば、サンマイクロシステムズ社（Sun Microsystems）のＳｏｌａｒｉｓ（ＳＶＲ４．０）、シリコングラフィックス社（Silicon Graphics）のＩＲＩＸ（ＳＶＲ４．０）、ＩＢＭ社のＡＩＸ（ＳＶＲ３．４）、ヒューレットパッカード社（Hewlett Packard）のＨＰ−ＵＸ（ＳＶＲ３．４）、サンタクルーズオペレーション社（Santa Cruz Operations）のＵＮＩＸＷａｒｅ７（ＳＶＲ５）及びこれらの後継バージョン等を含むＵＮＩＸオペレーティングシステムＶ構成において見出されるマイクロカーネルの一部である。また、本発明は、例えば、Ｌｉｎｕｘ及びＢＳＤ等のモノリシックカーネルにも適用することができる。
【００２２】
ＥＯＳの変更により、管理又は保存するデータのコンテンツ及び名前の両方を暗号化するとともに、復号することができる。ＥＯＳは、主記憶装置、補助記憶装置又は仮想メモリに保存するデータを選択的に暗号化することができる。ＥＯＳは、それが管理するデータのコンテンツを暗号化できるだけではなく、データコンテンツを含むファイルの位置（又はファイル名）を暗号化することができ、ＥＯＳは、所望のデータが保存されている位置を見つける必要がある。以下では、ＥＯＳを用いて、物理メモリと補助記憶装置間で転送されるデータを自動的に暗号化及び復号する幾つかの具体例を説明するが、本発明の実施の形態に基づき、ＥＯＳは、物理メモリと、スワップ空間（swap space）、ネットワークバッファ（network buffers）、周辺装置、擬似ファイル（pseudo files）、ネットワークファイル（network files）、特別なファイル（special files）、あるいは他のあらゆるファイル又はパーティション（partitions）との間で転送されるデータを、暗号化及び復号することができる。
【００２３】
ＥＯＳは、それが制御するデータへのアクセスのためのあらゆる要求に対する許可を管理及び認証することによって、暗号データ（encrypted data）へのアクセスを制御する。一旦、ＥＯＳがアクセスを認証すると、ＥＯＳは、許可リクエスタ（authorized requester）にデータを供給する前に、暗号データを復号する。ＥＯＳは、保護データ（protected data）と非保護データ（unprotected data）の両方に対して動作することができる。保護データへのアクセスは、上述したように、ＥＯＳによって制御され、非保護データは、従来のＵＮＩＸオペレーティングシステムカーネルによって提供される同じ規則及び保護に基づいて制御される。ＥＯＳは、コンピュータシステム、又は従来のオペレーティングシステムを接続するネットワーク上のコンピュータシステムの主オペレーティングシステム（primary operating system）として実行されるように、若しくは、独立したコンピュータシステム又は従来のオペレーティングシステムによって実行されるネットワーク上のコンピュータシステムに接続されるアドオンシステム（add-on system）上で実行されるように構成することができる。ＥＯＳは、アドオンシステム上で実行されるときは、従来のネットワークによって接続された従来のオペレーティングシステムによって供給される保護データの記憶を監視及び管理する。
【００２４】
保護記憶領域（Protected storage）は、ユーザプロセス（user processes）又はユーザによってアクセスすることができず、したがって、保護記憶領域に記憶されたデータは、保護される。データ金庫（data vault）及び鍵金庫（key vault）は、様々な手法で保護することができる。例えば、ＵＮＩＸオペレーティングシステムにおいては、データ金庫と鍵金庫は、カーネルアドレス空間（kernel address space）内に保存することができる。ＵＮＩＸでは、殆どのオペレーティングシステムと同様に、カーネルアドレス空間にアクセスできるのは、カーネルだけであり、他のプロセス又はユーザは、カーネルアドレス空間にアクセスすることはできない。
【００２５】
本発明に基づくＥＯＳを形成するために従来のＵＮＩＸオペレーティングシステムに加えられるコンポーネントとしては、例えば、以下に限定されるものではないが、（１）エキスパート管理システム（Expert Management System）、（２）管理アクセス制御（Administrative Access Controls）、（３）データ金庫管理（Data Vault Management）、（４）エキスパートデータ制御システム（Expert Data Control System）、（５）データ金庫、（６）暗号ファイル制御システム（Encrypted File Control System）、（７）鍵金庫管理システム（Key Vault Management System）、（８）データ監査システム（Data Audit System）、（９）鍵金庫がある。
【００２６】
ＥＯＳカーネルは、例えば、以下の領域において、Ｖ３ＵＮＩＸカーネルと異なっている。ＥＯＳファイルシステムは、ＥＯＳ−ＵＮＩＸカーネル環境の必須コンポーネントであり、複数のファイルを命名する機能を有する階層化ディレクトリ構造（hierarchical directory structure）を妨害することなく、全てのファイルデータの安全な保存及び検索を実行するための保護機構（secured mechanism）を提供する。ＥＯＳ−ＵＮＩＸカーネルは、各ファイルを抽象データ型（abstract data type）として取り扱い、カーネルによってアクセス可能な構造内において、ポインタによるデータの保護（securing of data）を行う。したがって、ファイル又はディレクトリは、データへのポインタと同じ構造の抽象名称（abstract）として扱われる。ディレクトリの場合、データは、ファイルであり、ファイルの場合、データは、ユーザの組（set for the user）を定義するために用いられる文字セットを構成するビットのシーケンスである。
【００２７】
ＵＮＩＸの下のファイルシステム（file system）により、オペレーティングシステムは、以下のタスクを実行することができる。
１．ファイルを生成及び削除する。
２．読出又は書込のためにファイルを開く。
３．ファイル内の検索。
４．ファイルを閉じる。
５．ファイルグループ（groups of files）を保持するディレクトリを生成する。
６．ディレクトリのコンテンツのリストを生成する。
７．ディレクトリからファイルを削除する。
【００２８】
ファイルシステムは、アプリケーションプログラムからのデータを維持し、アクセスするための汎用形式である。近年の設計においては、ファイルシステムは、ＵＮＩＸオペレーティングシステムの最初のバージョンが開発されたときに、作成された。ファイルシステムは、様々なアプリケーションプログラム間におけるデータ交換のための汎用形式になっている。インターネット及びネットワークが商取引で用いられるようになると、この汎用的な特徴は、違反行為の可能性の原因ともなった。ＵＮＩＸ設計は、ファイルデータに対してユーザ／プロセスが読出及び書込を行う権利を指定するための十分に強力な機構を含んでいる。ファイルアクセス許可（file permissions）として知られているこの機構は、認証（credentials）の形で最も強力に拡張されている。しかしながら、例えば、あるコンピュータから他のコンピュータに記憶装置を移し替えたとき、これらの機構は、完全には用いられず、又は動作しなくなる。
【００２９】
本発明の一実施の形態においては、ファイルシステムは、（１）鍵管理システム（key-management system：以下、ＫＭＳという。）と、（２）認証と、（３）暗号化との保護を組み合わせることによって、保護される。好ましくは、許可構造（authorization structure）は、ＥＯＳを用いる企業の構造に対応する。
【００３０】
本発明の実施の形態では、ファイルシステムは、ＥＯＳを用いて、以下のタスクを実行することができる。１．データを暗号化することによって、保護ファイル（secured files）を生成し、認証された権限なしで、このようなファイルが大量に削除されることを防止する。２．ファイルを開き、ファイルに対する読出及び書込を行うための保護ファイルへのアクセスの認証された権限を提供する。３．ファイルの検索を実行するための認証された権限を提供する。４．ファイルを閉じる前にデータを暗号化することによって、保護ファイルを閉じる。５．ＥＯＳの下の保護ディレクトリ（secured directories）を生成し、ディレクトリのコンテンツ（ファイル名）を暗号化することによって、ディレクトリ内のファイルを保護する。６．コンテンツの復号を制御することによって、ディレクトリのコンテンツのリストが権限なく生成されることを防止する。７．ディレクトリのコンテンツである暗号ファイル名（encrypted file names）へのアクセスを制御することによって、暗号データファイル（encrypted files）に対する認証されていない及び権限のない削除を防止する。
【００３１】
ＥＯＳカーネルは、通常、例えばＳＣＳＩディスク等の記憶装置である何らかの形式の入出力媒体上に保存されるバイトの線形範囲を指示する抽象名称（abstraction）として、ファイルを使用する。ファイルにアクセスするために、ＥＯＳカーネルは、各ファイルを検索し、暗号データにランダムアクセスすることを可能にする機能を提供する。
【００３２】
メモリ機能を管理し、データファイルを提供するコンピュータのリソースは、オペレーティングシステムによって指示される。従来のＵＮＩＸオペレーティングシステムは、ファイルとプロセスの２つのエンティティを有し、ユーザプロセス、カーネルプロセス（Kernel processes）、ハードウェアの３つのレベルに組織化される。主制御システムは、カーネルレベルであり、カーネルレベルでは、全ファイルシステム、仮想メモリ、ローダ、ブロックドライバスイッチ（block driver switch）及びキャラクタドライバスイッチ（character driver switch）が制御される。ＥＯＳを含む変更は、他のレベルの他のコンポーネントと密接にインタラクトすることもあるが、主としてカーネルレベルに対する変更である。
【００３３】
ＥＯＳによるＵＮＩＸの主な変更点として、暗号化及びアクセス制御システムを互いに強制する機能が追加され、これらは、個々に及び組み合わされて、データの安全性を高める。ＥＯＳがデータを保存するとき、コンテンツ及びデータファイル名の両方が暗号化され、暗号ファイルシステム（Encrypted File System）に保存される。ファイルコンテンツは、最大２０４８ビットの対称暗号化鍵（symmetric encryption key）を用いて、対称ブロック暗号（symmetric block cipher）により、最大１０２４ビットのブロックサイズに暗号化される。これにより、ＥＯＳは、アクセス制御暗号化（controlled access encryption）の４つのモードを有する保護を提供する。最初に、ファイルは、一方がファイルのコンテンツを含み、他方がファイル名を含む２つのデータブロックに分割される。ファイルのコンテンツは、暗号化され、対称暗号データファイルコンテンツ鍵（symmetric encrypted file contents key）が生成され、これとは別に、ファイル名が暗号化され、異なる対称暗号ファイル名鍵（symmetric encrypted file name key）が生成される。ファイルのコンテンツは、正しい暗号ファイルコンテンツ鍵（correct encrypted file contents key）がなくては、復号できず、所望のファイルは、ファイル名を復号する正しい暗号ファイル名鍵（correct encrypted file contents key）がなくては、見つけることができない。データ保護の４つのモードは、以下の通りである。１．データファイルのコンテンツを暗号化する。２．暗号ファイルコンテンツの暗号化鍵（encrypted file contents encryption key）を保護する。３．データファイルの名前を暗号化する。４．暗号ファイル名の暗号化鍵（encrypted file name encryption key）を保護する。
【００３４】
ＥＯＳは、ＵＮＩＸと同様、ファイルを抽象名称（abstraction）として扱う。このフレームワークは、ファイルシステムから独立した明確なインタフェースの１つのセットを提供し、各ファイルシステムの実行の詳細は、これらのインタフェースの後ろに隠される。これらのインタフェースは、２つの主要なオブジェクト（key objects）によって表現される。２つの主要なオブジェクトとは、仮想ファイル（virtual file）、すなわちｖノード（vnode）と、仮想ファイルシステム（virtual file system）、すなわちＶＦＳオブジェクト（vfs objects）である。ｖノードインタフェース（vnode interfaces）は、ファイル関連の機能を実行し、ＶＦＳインタフェース（vfs interfaces）は、ファイルシステム管理機能を実行する。ｖノード及びＶＦＳインタフェースは、動作中のファイルシステムの種類に応じて、適切なファイルシステム機能を呼び出す。ファイル関連の機能は、システムコール（system call）によって、又は他のカーネルサブシステム（kernel subsystem）から開始され、ｖノード／ＶＦＳ層を介して適切なファイルシステムに向けられる。なお、本発明に基づくＵＮＩＸファイルシステム（例えばｓ５ｆｓ及びｕｆｓ）及び非ＵＮＩＸファイルシステム（例えばＤＯＳ及びＡ／ＵＸ）は、例えば補助装置（secondary device）に暗号データを保存し、補助装置から暗号データを読み出すために用いることができる。
【００３５】
本発明の一実施の形態においては、暗号化及び復号機能は、ラッパ機能（wrapper function）、すなわちｖノードメソッド（vnode methods）に含まれる。例えば、スワップデバイス（swap device）にファイルを書き込むとき、第１のシステムコール、すなわちデータを暗号化するためのカーネル割込（kernel trap）、及び第２のシステムコール、すなわち暗号データを書き込むためのカーネル割込を含むようにｖノードメソッドを変更でき、両方のシステムコールは、１つのラッパ機能、すなわち１つのメソッド内に含まれる。同様に、スワップデバイスからファイルを読み出すとき、ラッパ機能、すなわちメソッドは、暗号データを読み出すためのコール、すなわちカーネル割込と、暗号データを復号するための他のコール、すなわちカーネル割込とを含む。なお、本発明は、他の手法で実現することもできる。
【００３６】
好ましい実施の形態において、ＵＮＩＸオペレーティングシステムカーネルは、ＥＯＳを形成するように変更されている。なお、ＵＮＩＸオペレーティングシステムを他のレベルで変更して、本発明を実現することもできる。好ましくは、ＥＯＳを実現するためのカーネルの変更は、ｖノード／ＶＦＳインタフェースに対して行われる。暗号化ファイルシステム（Encryption File System）は、例えばＵＦＳファイルシステム等の従来のファイルシステムと同様の手法によって、ＶＦＳインタフェースに接続されるが、特定のファイルシステムに対して実行され、ＥＯＳカーネルに対するサブシステムとして実行される。
【００３７】
ＥＯＳは、ＵＮＩＸが周辺装置をファイルとして扱うという事実を利用する。すなわち、ＥＯＳは、上述したように、データを暗号化することにより、及びファイルに書き込む場合と同様に、周辺装置に書き込むことによって、暗号データを周辺装置に送信する。同様に、ＥＯＳは、ファイルからを読み出す場合と同様に、周辺装置から暗号データを読み出し、データを復号して、データをバッファに送り、例えばデータの読出を待っているプロセスによって、バッファからデータにアクセスすることができる。
【００３８】
これにより、後述するように、端末装置（terminal device）、保護端末装置（secured terminal device）、ストリーム入力装置（stream input device）、ブロック装置（block device）、テープ記憶装置（tape storage unit）、ＳＣＳＩ装置又は他のあらゆる種類の装置間でデータを交換するときに、データを暗号化及び復号することができる。
【００３９】
したがって、例えば、端末装置を用いるとき、データは、ＥＯＳカーネルへの配信のためにキャラクタデバイスドライバ（character device driver）に接続するターミナルサーバ（terminal server）に接続された端末装置に、手動で入力される。このような装置に入力された全てのデータは、バッファを介してＥＯＳに運ばれる。バッファは、保護データ構造（secured data structure）であり、カーネル内の保護プロセス（secured process）によって読み出される。端末装置からカーネルへのデータ転送中に、転送を実行するプロセスは、カーネル保護モードによって保護されなければならない。転送の間は、バッファにデータを書き込むプロセス又はバッファからデータを読み出すプロセスに対して、他のプロセスが優先してスケジューリングされることはない。
【００４０】
また、ＥＯＳを用いて、保護端末装置から、安全なデータ転送を保証するように変更又は修正されたｔｔｙファイル（tty files）であるデータを、暗号化ファイルシステムの保護された部分（secured portions）に転送することができる。保護端末装置は、ファイルが開かれた時点で、最初にファイル名を暗号化することにより、保護キャラクタドライバ（secured character driver）を用いて、データを、転送中に暗号化する。全てのデータは、保護端末装置を用いて保存されるときに、バッファのコンテンツを暗号化するように変更されたキャラクタデバイスドライバによって、データをディスクに転送する前に暗号化される。保護端末装置は、保護情報（secured information）を手動で入力することができる特別な装置である。ファイルを閉じる前にデータが保存されるときには、ファイルのコンテンツが記憶装置から取り出され、復号され、この復号データ（decrypted data）に新たなデータが付加され、これらのデータは、再び暗号化され、再び保存される。この処理は、最終的にファイルが完成され、保存されるまで継続される。
【００４１】
また、データは、ＳＴＲＥＡＭＳの展開（deployment of STREAMS）によって、ＥＯＳに入力することができ、ＳＴＲＥＡＭＳは、ＳＶＲ４に追加されたソフトウェア構成要素（software construct）であり、ＳＶＲ４カーネルの下に用いられる他の構成要素と同様に、ソフトウェアドライバ、例えばＳＴＲＥＡＭヘッド（STREAM HEADs）及びＳＴＲＥＡＭボディ（STREAMS Bodies）を用いて、ＥＯＳカーネルへのデータの安全な配信（secured delivery）を保証する。ＳＴＲＥＡＭ入力（STREAM input）は、文字入力とみなされ、したがって、ＳＴＲＥＡＭデバイス（STREAM device）とＥＯＳカーネル間でデータを転送するキャラクタドライバを用いる。ＳＴＲＥＡＭは、ＥＯＳファイルシステムの非保護部分（unsecured portions）と、ＥＯＳの保護部分とみなされる領域との間でデータを局所的に（locally）転送するときに、用いられる。標準ＵＮＩＸファイルシステムの下に管理されるＥＯＳ上のユーザアカウントは、ＥＯＳに対して局所的（local）であり、ＳＴＲＥＡＭを使用することを選択することができ、保護データ（secured data）を、ファイルシステムを介してＥＯＳ内の保護ファイルシステム（secured file systems）に表明する（purport）。ＳＴＲＥＡＭＳについては、以下に更に詳細に説明する。
【００４２】
また、ブロック装置（Block devices）、例えばハードディスク、フロッピィドライブ、磁気テープ装置（例えばデジタルオーディオテープ）、ＣＤ−ＲＯＭドライブは、本発明に基づくＥＯＳを用いて、暗号データ（encrypted data）を保存することができる。ここで用いる用語「保護ブロックデバイスドライバ（Secured Blocked Device drivers）」は、暗号データを保存するデバイスドライバを意味するものとする。本発明に基づいて、データをブロック装置に書き込むとき、ＥＯＳは、最初に、データを暗号化し、そして、適切なデバイスドライバを呼び出す。一方、暗号データを読み出すとき、ＥＯＳは、デバイスドライバを呼び出し、データを復号し、復号データを、呼出プロセス（calling process）によって読み出すことができるバッファに転送する。
【００４３】
コンピュータシステムのブロック装置に保存されているデータは、常に暗号化されているとは限らないので、ＥＯＳは、通常のブロック装置と、本発明に基づいて暗号データを保存する保護ブロック装置（secured block devices）との両方をサポートするように構成することができる。したがって、従来のオペレーティングシステムに基づく全てのデバイスドライバに対して、ＥＯＳに基づくこのような２つのデバイスドライバが存在していることになる。すなわち、一方は、従来のファイルシステム用のデバイスドライバであり、他方は、保護ファイルシステム、例えば暗号化ファイルシステム（encrypting file system）用のデバイスドライバである。
【００４４】
ブロック装置がテープ記憶装置であるとき、テープ記憶装置は、最初に、暗号ファイルシステムを保存するように、特定のＥＯＳの下でフォーマットしなければならない。
【００４５】
一実施の形態において、ブロック装置をフォーマットするとき、ＥＯＳは、ブロック装置のスーパブロック（super block）に、そのブロック装置用の英数字値からなる暗号鍵（encrypted key）を保存する。ディスク装置（disk storage unit）と同様に、テープ上のスーパブロックは、そのスーパブロックをフォーマットした特定のＥＯＳによって、ブロック（blocks）がアクセスできるようにする他の種類の情報を含んでいなければならない。
【００４６】
全てのテープ記憶装置は、各テープの始めに（スーパブロック内に）、テープのフォーマットに関する及びテープの残りの部分にブロックをどのようにマッピングするかに関するデータを保存する。暗号ファイルシステムを取り扱う保護テープ（secured tape）上の保護スーパブロック（secured super block）は、従来のオペレーティングシステムによって、又はスーパブロックに埋め込まれている暗号鍵を所有していない他のＥＯＳによって、テープがマウントされることを防ぐための情報を含んでいる。このテープが許可なしでＥＯＳにマウントされた場合、暗号化アルゴリズムが同じであっても、保護テープを読み出す適切な鍵がないと、テープ上のフォーマットを読み出すことはできない。各テープ記憶装置のスーパブロックに書き込まれた固有の暗号鍵を生成するために用いられたコンポーネントは、保護ブロックデバイスドライバ（secured blocked device drivers）内に含まれ、この保護ブロックデバイスドライバは、環境又は特定のサイトに対して局所的に設計されており、したがって、固有のサイト及び環境変数（例えば会社名、システムＩＤ、部署及び他のＵＮＩＸコンポーネント）並びに所有権鍵の部分（segments of the ownership keys）を含むことができる。これらのデータの全ては、暗号化されて、保護ブロック装置のスーパブロック自体に含まれるだけではなく、保護ブロックデバイスドライバにも保存される。保護ブロックデバイスドライバは、ディスク記憶装置と同様に、テープ記憶装置に対する暗号データの保存及び検索のための読出及び書込動作を行うように設計されている。
【００４７】
本発明に基づき、及びコアのオペレーティングシステムによって提供される機能に加えて、ＥＯＳは、以下の追加機能を提供する。（１）ＥＯＳは、データを暗号化することによって、保護ファイルを生成する。（２）ＥＯＳは、ファイルの大量削除（mass removal）を防止する。（３）ＥＯＳは、ファイルを開き、データを読み出し及び書き込むための、保護ファイルに対する認証された許可アクセス（authenticated authorized access）を提供する。（４）ＥＯＳは、ファイル内を検索するための認証された権限を提供する。（５）ＥＯＳは、ファイルが閉じられるとき、したがってディスクに再び書き込まれるときに、ファイルが暗号化されることを保証する。（６）ＥＯＳは、保護ディレクトリを暗号化し、これにより、ディレクトリを保護する。（７）ＥＯＳは、ディレクトリの許可されていないリスト生成を防止する。（８）ＥＯＳは、暗号ファイル名（すなわちディレクトリのコンテンツ）へのアクセスを制御し、したがって、暗号ファイルの認証されていない及び権限のない削除を防止する。
【００４８】
エキスパート管理システム（Expert Management System）は、データブロックを分割し、暗号化及び保存の機能を実行するプロセスを制御する。エキスパート管理システムは、ファイルのコンテンツ及び名前の暗号化を、暗号化機能マシン（Encryption Function Machine）によって制御する。ファイルが一旦暗号化されると、元のファイルの各ブロック毎に、暗号データの４つの要素が生成される。４つの要素とは、暗号ファイルコンテンツと、暗号ファイルコンテンツの暗号化鍵（encrypted file contents encryption key）と、暗号ファイル名と、暗号ファイル名の暗号化鍵（encrypted file name encryption key）である。エキスパート管理システムは、元のファイルと、４つの暗号データ要素との関係を制御する。
【００４９】
保護された１５個の記憶領域の組織化及びこれらの記憶領域に対するアクセス制御によって、更なる保護が得られる。暗号ファイルシステム（Encrypted File System）は、暗号データを２つの主記憶領域に保存し、すなわち暗号ファイルコンテンツと暗号ファイル名とを別々にデータ金庫（data vault：Ｄ金庫という。）に保存し、暗号ファイルコンテンツ鍵（encrypted file contents key）と暗号ファイル名鍵（encrypted file name key）とを別々に鍵金庫（key vault：Ｋ金庫という。）に保存する。これらの金庫は、記憶媒体（storage medium）のあらゆる位置から、ファイル及びディレクトリにランダムにアクセスすることを可能にするデータベースの基本及び制御を用いて設計され、構成されている。エキスパートファイル制御システム（Expert File Control System）は、ＥＯＳの他のサブシステムであり、Ｄ金庫とＫ金庫に対するそれぞれのアクセスを制御するデータ金庫管理サブシステム（Data Vault Management Subsystem）と鍵金庫管理サブシステム（Key Vault Management Sub-System）を含んでいる。
【００５０】
本発明の好ましい実施の形態として、本発明は、ファイル及びディレクトリデータを暗号化するための方法及び方法を提供する。本発明の一実施の形態では、データは、コンピュータメモリから転送されるときには、常に暗号化することができる。例えば、ファイルが閉じられ、プロセッサのバッファが消去（flushed）されるとき、データが補助記憶装置に書き込まれるとき、コンピュータシステム上で実行される他のプロセスのための領域を空けるために、データが補助記憶装置にスワップアウトされるとき、ネットワークを介して伝送するためにデータをネットワークインタフェースカードに送るとき、又は他のあらゆる適切なときに、データを暗号化することができる。
【００５１】
本発明の好ましい実施の形態では、ＥＯＳは、カーネルレベルでデータを暗号化及び復号する手段の組合せを用いるカーネルを構成する。第１に、ＥＯＳは、ユーザがコンピュータシステム上のデータにアクセスする前に、ユーザがパスワード又はパスフレーズを入力することを要求する。パスワード又はパスフレーズなしで、ユーザは、データにアクセスすることはできない。第２に、ユーザは、コンピュータシステム上のデータに対するアクセス権（access privileges）が与えられたグループに属さなければならない。アクセス権なしで、ユーザは、データにアクセスすることはできない。第３に、ユーザは、データを保存したコンピュータシステム上のデータにアクセスしなければならない。したがって、例えば、ユーザが第１のコンピュータシステムから、データを保存するために用いられたコンピュータ記憶装置（computer storage device）を取り外し、この記憶装置を第２のコンピュータシステムに取り付けた場合、ユーザは、利用可能な形式でデータにアクセスできなくなる。したがって、ユーザは、単に記憶装置を取り外し、他のコンピュータシステムにこの記憶装置を取り付けるだけでは、保護機構（protection mechanism）を無効にすることができない。
【００５２】
以下に詳細に説明するように、ファイルシステムの暗号化された部分（encrypted portion）は、暗号ディレクトリエントリ（encrypted directory entries）を有するディレクトリを含んでいる。更に、ｉノード（i- nodes）に関連するファイルデータは、暗号データを含んでいる。したがって、無許可ユーザ（unauthorized user）がファイルのコンテンツを読み出すためには、２段階のステップを行う必要がある。第１に、無許可ユーザは、ディレクトリへの正しいエントリを見つけるためには、暗号ファイル名を復号しなければならない。このステップは、ファイル名が長い鍵、例えば２０４８ビットの対称鍵を用いて暗号化されているときには、実行することができない。無許可ユーザが正しいディレクトリエントリ及びファイルデータの位置（それらのアドレスが、直接ポインタ（direct）、単一間接ポインタ（single- indirect pointer）、二重間接ポインタ（double- indirect pointer）、三重間接ポインタ（triple-indirect pointer）に含まれる。）を見つけた場合でも、このユーザは、それから、ファイルデータを復号しなければならない。また、このステップも、データが、長い鍵、例えば低レベルのカーネル暗号化機能によってのみアクセスでき、ユーザによってはアクセスできない２０４８ビットの対称暗号化鍵を用いて暗号化されているときには、実行することができない。
【００５３】
機密保護のレベルを更に高めるために、暗号化鍵を更に暗号化することが好ましい。
【００５４】
本発明の実施の形態は、好ましくは、マイクロカーネルベースのＵＮＩＸオペレーティングシステム（based on micro-kernel based Unix operating systems）、例えばＵＮＩＸオペレーティングシステム５リリース３〜５に基づいたＥＯＳを含んでいる。また、本発明は、モノリシックカーネル（monolithic kernels）、例えば、これらに限定されるものではないが、ＮｅｔＢＳＤ及びＦｒｅｅＢＳＤを含むＬｉｎｕｘ及びＢＳＤのバージョンに基づくことができる。
【００５５】
暗号ファイルシステム（Encrypted File System）
暗号ファイルシステムは、ファイルの暗号データコンテンツ（encrypted data contents）を、データ金庫とも呼ばれるデータ構造に保存するオペレーティングシステムのサブシステムである。暗号ファイルシステムは、ファイルの暗号コンテンツとファイルの暗号名（encrypted name）の両方を、Ｄ金庫の別々のエントリに保存する。ファイルのコンテンツは、暗号ファイルコンテンツ鍵を生成する対称暗号化動作（symmetric encryption operation）によって暗号化される。ファイルコンテンツは、最大２０４８ビットの対称鍵によって、最大１０２４ビットの対称ブロック暗号（symmetric block ciphers）に暗号化される。同様に、ファイル名は、最大２０４８ビットの対称暗号ファイル名鍵を生成する対称暗号化プロセスによって暗号化される。
【００５６】
図１は、本発明に基づいて、ファイルを暗号化して、保護的に保存する処理１１０を示す概略図である。ユーザ又はプロセスが供給したシステムファイル（system file）は、初期のファイル名ｓｆｎ１１２と、初期のデータコンテンツｓｆｃ１１４とを有している。本発明によって保護するシステムへのエントリ１１６において、ユーザ又はプロセスが供給したシステムファイルは、最初に、カーネルによってシステムメモリ１１８に記憶される。システムメモリ１１８からのユーザが供給したシステムファイルは、本発明に基づくＥＯＳ１２２に対する入力１２０である。暗号化ステップ１２４において、ＥＯＳ１２２は、４つの暗号結果（encrypted results）、すなわち暗号ファイルコンテンツｅｆｃ１２６と、暗号ファイルコンテンツ鍵ｅｆｃｋ１２８と、暗号ファイル名ｅｆｎ１３０と、暗号ファイル名鍵ｅｆｎｋ１３２とを生成する。そして、ＥＯＳ１２２は、４つの暗号結果を保護記憶領域（protective storage）１３４に格納する。保護ステップ１３６、１３８において、暗号ファイルコンテンツｅｆｃ１２６と暗号ファイル名ｅｆｎ１３０は、それぞれ保護記憶領域１３４のデータ金庫部１４０に保存される。また、保護ステップ１４２、１４４において、暗号ファイルコンテンツ鍵ｅｆｃｋ１２８と暗号ファイル名鍵ｅｆｎｋ１３２は、それぞれ保護記憶領域１３４の鍵金庫部１４６に保存される。
【００５７】
図１２は、ＥＯＳ１２２が図１に示す暗号化ステップ１２４を実行する場合のより詳細な処理１２１０を示している。ユーザ又はプロセスが供給したシステムファイルの初期のファイル名ｓｆｎ１１２及び初期のデータコンテンツｓｆｃ１１４と共に、ユーザ又はプロセスは、初期のパス鍵１２１２を供給する。初期のファイル名ｓｆｎ１１２とパス鍵１２１２は、第１の暗号化プロセス１２１６に入力され、ここで、ＥＯＳ１２２は、初期のファイル名ｓｆｎ１１２及びパス鍵１２１２を用いて、暗号ファイル名鍵ｅｆｎｋ１３２を生成し、初期のファイル名ｓｆｎ１１２をこの暗号ファイル名鍵ｅｆｎｋ１３２によって暗号化して、暗号ファイル名ｅｆｎ１３０を生成する。そして、暗号ファイル名鍵ｅｆｎｋ１３２は、入力ステップ１２１８において、第２の暗号化プロセス１２２０に入力される（１２１８）。また、暗号ファイル名鍵ｅｆｎｋ１３２は、入力ステップ１２２２において、暗号ファイル名ｅｆｎ１３０と同様に、保護ステップ１４４、１３８にそれぞれ入力される。初期のデータコンテンツｓｆｃ１１４は、入力ステップ１２２４において、暗号ファイル名鍵ｅｆｎｋ１３２と共に、第２の暗号化プロセス１２２０に入力される。第２の暗号化プロセス１２２０は、データコンテンツｓｆｃ１１４と暗号ファイル名鍵ｅｆｎｋ１３２の両方を用いて、暗号ファイルコンテンツ鍵ｅｆｃｋ１２２８を生成し、初期のデータコンテンツｓｆｃ１１４をこの暗号ファイルコンテンツ鍵ｅｆｃｋ１２２８によって暗号化して、暗号ファイルコンテンツｅｆｃ１２２６を生成する。そして、暗号ファイルコンテンツｅｆｃ１２２６と暗号ファイルコンテンツ鍵ｅｆｃｋ１２２８は、入力ステップ１２２２において、それぞれ保護ステップ１３６、１４２に入力される。
【００５８】
図２は、本発明に基づいて、保護記憶領域１３４からファイルを読み出し、ファイルを復号する処理２１０を示している。ＥＯＳ１２２は、読出ステップ２１２、２１４において、鍵金庫部１４６から、暗号ファイルコンテンツ鍵ｅｆｃｋ及び暗号ファイル名鍵ｅｆｎｋをそれぞれ読み出す。次に、ＥＯＳ１２２は、読出ステップ２１６、２１８において、データ金庫部１４０から、暗号ファイルコンテンツｅｆｃ及び暗号ファイル名ｅｆｎをそれぞれ読み出す。ＥＯＳ１２２は、ステップ２２０において、これらのデータ要素（data components）を組み合わせて（integrates）復号し、新たに再生された元のデータコンテンツｓｆｃ１１４をシステムメモリ１１８に入力する。そして、ユーザは、ステップ２２４において、システムメモリ１１８からこの再生ファイル（reconstituted file）にアクセスする。
【００５９】
図３は、ＥＯＳを構成する従来のＵＮＩＸオペレーティングシステムに対する変更点を明らかにするために、従来のＵＮＩＸカーネル３１０のサブシステムコンポーネントの略図を示している。従来のＵＮＩＸオペレーティングシステムの一般的なサブシステムコンポーネントとしては、ファイルシステム３１２と、仮想メモリ３１４と、ローダ３１６と、ログストリームデバイスドライバ（log streams device drivers）３１８、３２０、３２２と、プリンタデバイスドライバ３２４と、ネットワークデバイスドライバ３２６と、テレタイプデバイスドライバ（teletype device driver）３２８と、キャラクタデバイスドライバ３３０とがある。
【００６０】
図４は、ＥＯＳのコンポーネント４１０の略図を示している。図３に示す従来のＵＮＩＸオペレーティングシステムのコンポーネントに加えて、この実施の形態では、従来のＵＮＩＸオペレーティングシステムに対する変更点を含む更なるＥＯＳのコンポーネント４１０を示している。すなわち、この変更に含まれるコンポーネントには、データ金庫管理サブシステム（data vault management sub-system）４１２と、エキスパートデータ制御及び追跡サブシステム（expert data control and tracking sub-system）４１４と、補助的な従来のＵＮＩＸカーネルサービスサブシステム４１６と、仮想メモリ管理サブシステム４１８と、暗号化鍵管理サブシステム４２０と、ファイル名管理サブシステム４２２と、インテリジェントファイル制御サブシステム（intelligent file control sub-system）４２４と、ディレクトリ名管理サブシステム４２６と、管理アクセス制御サブシステム（administration access control sub-system）４２８とがある。ここに示す更なるコンポーネントとしては、ブロックデバイスドライバスイッチ（block device driver switch）４３０と、ディスク記憶装置デバイスドライバ４３２と、テープ装置デバイスドライバ４３４とがあり、これらは全て、従来のＵＮＩＸカーネル３１０内に含ませることができる従来のＵＮＩＸコンポーネントを表している。補助的な従来のＵＮＩＸカーネルサービスサブシステム４１６は、データを暗号化し、制御し、並びにＥＯＳ１２２によって保護するコンピュータシステム又はネットワーク内のデータの寿命に亘って、データに対するアクセス許可を追跡するために必要な機能を提供する従来のＵＮＩＸカーネル設計に加えられている。
【００６１】
エキスパートデータ制御システム（Expert Data Control System）
エキスパートデータ制御システムは、データ金庫管理システム（Data Vault Management System）及びそのサブシステムのインテリジェントな制御を行う。エキスパートデータ制御システムは、全てのデータ移動を制御し、データに対する全ての要求を解釈及び認証し、並びに全てのディレクトリ名、ディレクトリコンテンツ及び暗号ファイルコンテンツのアクセス及び管理に対する許可を認証する。エキスパートデータ制御システムは、人間の介在（intervention）、及び推論（reasoning）、学習（learning）、推理（inferences）、表明（assertions）を含む様々な人工知能の特徴（aspects）なしで、その機能を実行することができる。エキスパートデータ制御システムは、好ましくは、規則に基づくヒューリスティックス（rule-based heuristics）、遺伝的プログラミング（genetic programming）、確率予測（stochastic predictions）に適用されるカルマンフィルタ理論（Kalman Filtering Theory）が組み合わされたニューラルネットワーク方法によって、その人工知能能力を発揮する。
【００６２】
図５は、エキスパートデータ制御システム５１０の動作を抽象的表現を示す図である。エキスパートデータ制御システム５１０は、推論エンジン（reasoning engine）５１２と、推理エンジン（inference engine）５１４と、学習エンジン５１６との３つの重要なサブシステムを含んでいる。これらの３つのサブシステムのそれぞれは、オペレーティングシステム環境５１８からの入力が供給される。オペレーティングシステム環境５１８からの入力は、推論エンジン５１２のコンポーネントである推論オブザーバ（reasoning observer）５２０に入力される。推論オブザーバ５２０は、入力のうちのユーザコマンドが供給され、システムコマンドのパターンの観測（observations）を行う。推論オブザーバ５２０の出力のうちの１つは、以前に観測されたパターンとマッチングされる。また、推論エンジン５１２への入力は、推理エンジン５１４からの出力である推理５２２と、学習エンジン５１６からの出力である表明５２４とを含む。推論オブザーバ５２０の出力は、推理５２２及び表明５２４と共に、推論エンジン５１２の推論アルゴリズム（reasoning algorithm）によって処理される。
【００６３】
推論アルゴリズムは、機密保護概念（security concepts）、ヒューリスティックス、及びオペレーティングシステム環境５１８の新たな観測に関する推論表明（reasoned assertions）を定式化する妥当なシステム挙動パターン（reasonable system behavior patterns）の定義を用いる。これらの妥当なシステム挙動パターンは、一般的なシステム動作を行わせるコマンドに基づく規則のセットである。許容できる妥当な挙動は、あるコマンドパターンを解釈し、これらを機密保護に関して認識可能な説明及び予測に変換するように予めプログラムされた推理コマンドインタプリタ（reasoning command interpreter）によって認識できるコマンドパターンから構成される。そして、推論アルゴリズムは、安全性を脅かすイベントの原因となった、又はセッションの終了時にシステムの安全性を脅かすことがなかったイベントに導いた過去のコマンドパターンに応じて以前にアサートされたことだけではなく、過去のコマンドパターンに基づいて、表明を定式化する。推論エンジンの観測の１つは、コマンド及びコマンドパターンであり、両方は別のものであり、コマンドパターンは、過去のコマンドとそれらの期待される応答、システムの応答に関するユーザの期待を理解する試み、及びシステムの応答に対するユーザによる反応の組合せである。推論アルゴリズムによって生成され、推論エンジン５１２から出力され、推理エンジン５１４に入力される推論表明（Reasoned assertions）５２６は、所定の観測された状況に関して真（truths）であると推理するのに十分であると判定された推論表明を含んでいる。
【００６４】
推論エンジン５１２によって生成される推論表明５２６は、所定のユーザからのコマンドの観測に関するステートメント（statements）である。推論エンジン５１２は、特定のコマンドがオペレーティングシステムに対して何を意味するか、及びそのコマンドの結果が他のコマンドと一緒に何時発せられるかを解釈し、システムの安全性に対するこのようなコマンドの効果に関する表明を生成する規則に基づいている。推論エンジン５１２のセキュリティ上の脅威に対するコマンドの感度は、学習エンジン５１６からの出力表明（output assertions）５２４によって示される調整に応答して、それ自身を変更する（self-modifying）ことができる。
【００６５】
推理エンジン５１４のコンポーネントであるユーザコマンド及びシステム挙動モニタ（user commands and system behavior monitor）５２８は、オペレーティングシステム環境５１８から入力が供給される。ユーザコマンド及びシステム挙動モニタ５２８は、進行中のユーザコマンド及び動作（ongoing user commands and actions）を監視及びフィルタリングし、ユーザがシステムの応答が何であるかと期待しているかに関する解釈を生成し、生成された解釈と、ユーザが発行する更なるコマンドとを比較する。ユーザコマンド及びシステム挙動モニタ５２８のコンポーネントであるパターンマッチングインタプリタ５３０は、監視されたユーザコマンド及びシステム挙動に関する推理パターン観測（inferred pattern observation）５３２を生成する。また、推理パターン観測５３２は、ユーザコマンド及びシステム挙動モニタ５２８に入力される。ユーザコマンド及びシステム挙動モニタ５２８によって生成される表明５３４は、システム又はそのファイルの安全性を脅かす可能性があるユーザ側のあらゆる試みに対する応答及びそれに関する判定である。推理アルゴリズム（inference algorithm）は、ユーザコマンド及びシステム挙動モニタ５２８からのシステムの安全性、表明５３４及び推論表明５２６に関する情報を処理して、オペレーティングシステムの安全性に関する推理５２２を生成する。
【００６６】
オペレーティングシステム環境５１８の観測は、学習エンジン５１６の観測可能コンポーネント（observables component）５３６に供給される。真理システム（truth system）５３８は、学習エンジン５１６が真であると判定した命題（propositions）及び学習エンジン５１６が命題をどのようにして真であると評価したかに関する情報のコンパイル（compilation）を表す。真理システム５３８は、真理のコンパイルを、オペレーティングシステム環境５１８からの入力と比較する観測可能コンポーネント５３６に、入力５４０として供給する。これらの比較結果は、進行中の真理評価（truth evaluation）を容易にするフィードバック５４２として真理システム５３８に供給される。真理システム５３８は、過去の挙動（past behaviors）５４４のその知識の再評価及び将来の挙動予測（future behavior predictions）５４６により、ゲイン及び調整コンポーネント（gains and adjustments component）５４８によって連続して更新される。ゲイン及び調整コンポーネント５４８は、図６に示す応用カルマンフィルタ（applied Kalman filtering）を用いて、新しい知識を発展させ、現在の知識を再評価して、真理システム５３８に組み込む。システムセキュリティヒューリスティックスエンジン（system security heuristics engine）５５２は、観測可能コンポーネント５３６、真理システム５３８及びオペレーティングシステム環境５１８からの情報を、推理５２２及び関連する推論表明５２６を考慮した学習アルゴリズム（learning algorithm）によって処理する。学習アルゴリズムの結果は、学習表明エンジン５５４（learning assertion engine）によって生成される表明５２４の基礎となる。表明５２４は、特定のユーザによってなされる動作のあるセットに関してエキスパートシステム（expert system）が知っていると思われる知識に基づいている。ゲイン及び調整コンポーネント５４８からのこの知識の調整は、知識ベースモデルのゲインであり、このゲインは、オペレーティングシステムを用いたとき際の特定のユーザ及びそのユーザの意図に関する知識のゲインを含む。
【００６７】
カルマンフィルタ理論のアプリケーション（Application of Kalman Filtering Theory）
図６は、ゲイン及び調整コンポーネント５４８による応用カルマンフィルタのアプリケーションのゲインアルゴリズム（gains algorithm）６１０の抽象的な略図である。カルマンフィルタは、予測を生成するために採用され、ＥＯＳによって様々な方法で利用され、ゲインアルゴリズム６１０は、このような用途の１つの具体例である。カルマンフィルタは、現在及び将来のファイルの保護状態に関する予測を生成する。予測は、ファイルが最後に開かれ又は変更されたときに、リスクに関する前の評価をそのファイルの保護状態に取り入れ、及びそのファイルが前に開かれ又は変更されたときに、ファイルに対して用いられたコマンドを考慮する。予測モデル（prediction model）は、予測モデルのセキュリティ評価に対するゲインアルゴリズム６１０の動的な変更によって更新される。ゲインアルゴリズム６１０によって考慮される要素としては、例えば将来の挙動予測５４６によって供給される将来に関する予測６１２と、システムの進行中の動作からの動的なゲイン６１４と、時刻Ｔ−１における補正のためのゲイン６１６とがある。
【００６８】
ゲインアルゴリズム６１０は、時間ステップの原理（time step principle）に基づいて動作する。所定の時点（given point in time）は、変数Ｔによって表される。前の時点は、変数Ｔ−１によって表され、次の時点は、変数Ｔ＋１によって表される。将来に関する予測６１２は、時刻Ｔ＋１に基づく真理の評価６１８と、総合的なゲイン及び調整コンポーネント５４８との両方に入力される。時刻Ｔ＋１に基づく真理の評価６１８は、時刻Ｔに基づく真理の評価６２０と、総合的なゲイン及び調整コンポーネント５４８との両方に入力される。また、システムの進行中の動作からの動的なゲイン６１４も、時刻Ｔに基づく真理の評価６２０に入力される。時刻Ｔに基づく真理の評価６２０と時刻Ｔ−１における補正のためのゲイン６１６の両方は、時刻Ｔ−１に基づく真理の評価６２２に入力される。最後に、また、時刻Ｔに基づく真理の評価６２０と時刻Ｔ−１に基づく真理の評価６２２の両方は、総合的なゲイン及び調整コンポーネント５４８に入力される。
【００６９】
鍵管理システム（Key Management System）
鍵管理システムは、ファイルのコンテンツ及び名前（file's contents and name）を暗号化するときに生成された鍵を管理する。また、鍵管理システムは、暗号ファイルのコンテンツ及び名前（encrypted file's contents and name）を復号するときに、暗号ファイルのコンテンツ及び名前鍵を管理するためにも用いられる。鍵管理システムは、ファイルの名前及びディレクトリの名前に対するアクセスを制御することによって、ファイルのコンテンツへのアクセスを制御することに貢献し、ファイル名及びファイルコンテンツをどこに保存するかを制御することについて、カーネルを補助する。暗号ファイルの名前及びコンテンツは、それぞれの正しい鍵によってのみ復号することができる。ファイルの暗号名（file's encrypted name）が一旦復号されただけで、暗号ファイルのコンテンツの位置を見つけることができる。暗号ファイル名（encrypted file names）が漏洩したとしても、１つの暗号ファイルの暗号名は、他の暗号名と区別することができない。ファイルのパス又はその名前の暗号化により、暗号ファイルの完全性（integrity）の保護及びこれらのファイルのコンテンツの安全保護対策（safeguarding）が強化される。
【００７０】
暗号ファイル名及び暗号ファイルコンテンツは、データ金庫と呼ばれる記憶媒体の保護領域（protected area）内に格納される。データ金庫は、暗号ディレクトリと同様のデータ構造を有するが、データ金庫内では、全てのファイル名が暗号化される点が異なっている。鍵金庫データ構造にＥＯＳが追加される点も記憶媒体を組織化する標準ファイルディレクトリシステムとは異なる点である。鍵金庫は、暗号化鍵を含む記憶媒体の保護領域（ディレクトリ）である。鍵金庫とデータ金庫は、別々のデータ構造である。
【００７１】
なお、本発明の一実施の形態では、対称暗号化アルゴリズムが用いられ、すなわち、データの暗号化及び復号には同じ鍵が用いられる。したがって、用語「暗号化鍵（encryption key）」は、データの暗号化及び復号の両方に用いられる鍵を指す。また、本発明においては、次のような理由から、対称鍵を用いることが好ましい。（１）データを暗号化及び復号するために単一の鍵を用いることができ、鍵管理を簡単にすることができる。（２）公開鍵暗号方式（public-key encryption schemes）を用いるときに、必要に応じて素数（prime numbers）に考慮する必要がないので、鍵を生成するのが比較的簡単である。（３）したがって、多数の可能な鍵を速やかに生成することができる。なお、他の実施の形態では、本発明に基づいて、公開鍵を用いることができる。
【００７２】
鍵管理システムは、ＵＮＩＸファイルシステムに対する安全性の拡張である。システム認証及びファイル認証（System and file credentials）は、安全なパスフレーズ（secure pass phrase、ユーザ又はシステムが入力する入力文字列）に組み合わされ、安全な暗号化鍵が生成及び管理される。なお、ファイル認証は、継承することができる。例えば、ユーザがプロセス又はアプリケーションプログラムを呼び出すとき、プロセス又はアプリケーションプログラムは、ユーザの認証を継承する。同様に、第１のアプリケーション又はプロセスが第２のアプリケーション又はプロセス（例えば子プロセス）を呼び出す場合、第２のアプリケーション又はプロセスは、第１のアプリケーション又はプロセスの認証を継承する。
【００７３】
従来のＵＮＩＸファイルシステムでは、ファイルは、ファイル名、ファイルコンテンツ及び管理上の認証情報（administrative credentials information）、例えば許可及び更新の日時を含む幾つかの要素を有する。管理情報（administrative information）は、不可欠のシステムデータ、例えばファイルサイズ、ファイル作成情報、ファイル所有者、及びファイルのコンテンツが保存されているディスクの位置と共に、ｉノードに保存される。また、ｉノードには、ファイルのコンテンツが最後に変更された時刻、ファイルが最後に用いられた時刻、及びｉノード自体が最後に変更された時刻の３つの時刻が記録されている。
【００７４】
本発明に基づくＥＯＳでは、ｅノード構造（e-node structure）は、従来のｉノードの役割を果たす。ｅノード構造は、データを暗号化し、保護して保存するプロセスに貢献し、ユーザアクションに対するインテリジェントな評価を容易にする。カーネルは、ｅノードを用いて、暗号データを処理するために、ｅノードのコンテンツを主記憶装置上のｅノードに（in-core e-node）読み出す。ｅノードは、ｅファイル（暗号ファイル：encrypted file）所有者の識別子フィールドを含む多数のフィールドを有する。ファイル所有権（File ownership）は、暗号ファイルの個々の所有者と、「グループ」所有者とに分割され、ファイルのアクセス権（access rights）を有するユーザの組を定義する。コンピュータシステムの所有者は、全ての暗号ファイルコンテンツにアクセスし、一方、スーパユーザ（super user）は、特別に許可された権限が与えられたファイルコンテンツのみにアクセスする。ｅノード内に含まれる他のフィールドについては、以下、図７及び図８を用いて詳細に説明する。
【００７５】
図７は、本発明の一実施の形態に基づく鍵管理手順（key management procedure）７１０の略図である。ユーザが供給したファイル名（file name）７１２及びファイル鍵（file key）７１４は、システムのファイルデータ（file data）７１８に入力される（７１６）。また、ユーザが供給したファイル鍵７１４は、許可サブシステム（permissions subsystem）７２２にも入力される（７２０）。許可鍵管理システム（permissions key management system）７２４は、許可サブシステム７２２の機能を達成するために用いられる暗号化鍵（encryption keys）を制御する。許可鍵管理システム７２４は、許可機能に関連する鍵を生成及び管理する。これらには、ユーザから供給されたファイル鍵７１４の鍵Ａに対応して生成された鍵１（７２６）と、ユーザＩＤに対応して生成された鍵２（７２８）と、システムＩＤ（例えば媒体アクセス制御（media access controller：ＭＡＣ）、すなわちイーサネット（登録商標）カード番号）に対応して生成された鍵３（７３０）と、プロジェクト情報（例えば、モディファイドＵＮＩＸグループＩＤ（modified UNIX group ID）を形成する部署、グループ、会社、それらの任意の組合せ）に対応して生成された鍵４（７３２）とが含まれる。許可鍵管理システム７２４とファイルデータ７１８から生成された鍵７２６〜７３２は、暗号ファイルシステム（encrypted file system）７３４に入力される。暗号ファイルシステム７３４は、暗号ファイル（encrypted file）７３６と、暗号ファイル鍵セット（encrypted file key set）７３８（例えば、モディファイドＵＮＩＸ認証）とを生成する。暗号ファイル７３６及び暗号ファイル鍵セット７３８は、ｖノードテーブル（v-node table）７４０に入力される。ｖノードテーブル７４０は、システムの仮想メモリ内のデータに関する更新日時を含む情報を含んでいる。ｖノードテーブル７４０に含まれる情報としては、ｖノード情報（v-node information）７４２と、ｉノード情報（i-node information）７４４と、現在のファイルサイズ（current file size）７４６と、他のファイル情報７４８とがある。ｅノード構造に含まれる更なる情報要素としては、許可サブシステム７２２、暗号ファイルシステム７３４及びｖノードテーブル７４０に含まれる様々な情報要素がある。
【００７６】
ＥＯＳによってユーザを認証するために用いられるコンポーネントは、ファイル名、ファイルコンテンツ及び管理情報である。システム依存情報（system-dependent information、例えばＭＡＣアドレス）を用いてユーザを確認することにより、データを暗号化したマシン上でしかデータを復号できないことを保証することができる。このように機密保護のレベルを高めることにより、無許可ユーザが、第１のコンピュータシステムから記憶媒体を取り外し、第２のコンピュータシステムに取り付け、この記憶媒体上のデータを読み出すことができないことを保証する。データを暗号化し及び保存したコンピュータシステム以外では、そのデータを復号し及び読み出すことができないようにすることが好ましい。
【００７７】
ＥＯＳによって用いられる許可には、暗号ファイル情報（encrypted file information）に対する所有者権利と、暗号ファイル情報に対するグループ権利と、暗号ファイル情報に対する他の権利とがある。ＥＯＳによって追跡されるファイル更新日時としては、ファイルのコンテンツが最後に暗号化され又は更新された日時と、ファイルコンテンツが暗号化されていない状態で最後に用いられた日時と、ｉノード自体が最後に変更された日時とがある。また、本発明では、所有者、グループ及びその他の者に対するファイルのアクセス権を拡張し、例えば、企業、特定の部門、特定の部署にアクセス権を与えることもできる。更に、アクセス許可は、読出、書込及び実行を行う権利から、例えば復号、削除、移動を行う権利に拡張することができる。
【００７８】
従来のＵＮＩＸオペレーティングシステム内の全てのファイル及びディレクトリへのアクセスは、許可によって制御される。ＵＮＩＸのＥＯＳ拡張により、ファイル及びディレクトリへのアクセスは、多数の要素によって制御され、これらの要素には、ファイルを閲覧する許可、要求及び要求を出したユーザの両方の認証、ユーザが特定のデータ、プロセス又はプログラムを要求することの許可、特定の要求に対する個々の許可が含まれる。許可は、ファイルアクセス（file access）が、シェルレベル（shell level）で入力されたコマンドによって又はプログラムによって呼び出されたかが調べられる。許可は、読出、書込、実行、暗号化、復号アクセスに対して別々に定義される。許可は、所有者、グループ及びその他の３つのレベルで与えられる。許可は、有効なユーザＩＤに基づき、システムにおいて内部的に調べられ、また、ユーザＩＤを他の番号に設定する。
【００７９】
ｅノード及びファイル識別（E-nodes and File Identification）
各ファイルは、ｉ番号によって識別されるｅノード構造を有している。ｅノードは、ファイルにアクセスするために必要な情報を含んでおり、この情報には、以下のようなものが含まれる。
ファイルタイプ（File type）及びモード（通常、ディレクトリ、特別な等）
ファイルへのリンクの数
所有者のユーザＩＤ
所有者のグループＩＤ（部署、会社等）
ファイルアクセス許可（File access permissions）
ファイルのバイトサイズ
最大１３個のディスクブロックの３バイトのアドレス
最終アクセスの日時
最終更新の日時
新規作成日時
また、使用中の全てのファイルは、そのファイルに関連した２つの他の構造、すなわち、ファイル構造（file structure）と、「主記憶装置上の」ｅノードとを有する。ファイル構造及びファイルテーブルのエントリは、ファイルが開かれ、又は新たなファイルが生成される毎に設定される。ファイルは、それに関連した２つ以上のファイル構造を有することができる。主記憶装置上のｅノードは、ディスク上のｅノード（disk e-node）内にある全ての情報を含むとともに、更に以下のような情報を含んでいる。
ｅノードのアクセス状態フラグ（e-node access status flags）
ｅノードがロックされている（進行中の変更）
プロセスが、ｅノードがアンロックされることを待っている場合
主記憶装置上の変更されたｅノードのファイル情報が変更されている
ファイルコンテンツ変更、主記憶装置上のｅノード変更
認証（Credentials）
ファイルは、マウント可能なデバイス（mountable device）である
テーブルエントリから取得された参照カウント
ｅノードが存在するディスクのデバイスＩＤ
ファイルポインタのディスクアドレス（Disk address for file pointer）
読み出された最終論理ブロック（ファイル位置）
ｅノードのロックは、正しい認証を有する２つのプロセスが、同時にファイル又はそのｅノードを変更しようとすることを防ぐために用いられる。プロセス待機フラグ（process waiting flag）は、ｅノードがアンロックされたときに、ファイルが利用可能になったことがプロセスに知らされる「コールバック（call back）」と等価である。
【００８０】
図８は、鍵管理手順７１０に示すデータ構造に加えられる更なるｉノード構造データフラグ（i-node structure data flags）８１０を示している。図８の中央及び左側に示す要素は、鍵管理手順７１０の同じ要素に対応している。図８の右側に示す要素は、図７に示すｉノード情報７４４の要素である。ｉノードテーブル（i-node table）８１２には、ｉノード情報８１４、８１６、８１８の複数のエントリが追加されている。これらの３つのエントリは、例示的に示しているに過ぎず、これらのエントリの数又は種類は、ここに説明するものに限定されるものではない。また、現在のファイルサイズ８２０は、ｉノードテーブル８１２に含ませることができる追加情報の１つである。ｉノード構造データフラグ８１０の更なるエントリとして、最後の暗号鍵ロスタ（last encrypted key roster）８２２を含ませることができる。ここでは、最後の４つの暗号鍵を例示的に示しているが、この数は限定的ではなく、様々な種類の暗号化鍵をここに含めることができる。また、ｅノード構造の更なる情報要素には、ｉノードテーブル８１２及び最後の暗号鍵ロスタ８２２内に含まれている様々な情報要素を更に含ませることができる。ＥＯＳにおける実際のインデックス修飾（indexing）は、ｅノード構造によって実行され、ｅノード構造は、従来のオペレーティングシステムのｉノード機能を含むとともに、暗号化機能（encryption functions）、許可、更新日時、使用パターン、知識及び判定、及びＥＯＳが暗号データブロックの実際の記憶位置をどのように示すかの情報を含んでいる。
【００８１】
管理監査システム（Administrative Audit System）
管理監査システムは、データ金庫の保護管理（protective custody）下にある全てのファイルに対してオペレーティングシステムによって実行された全ての管理コマンド（administrative commands）を記録する。また、管理監査システムは、データ金庫内のファイルに対して実行されたタスクの応答性と、タスクの性能との両方を追跡及び記録する。各システム管理者（System Administrator）は、データ金庫内の暗号ファイルの少なくとも幾つかを管理及び維持する固有の鍵のセットを有する。通常、特定のシステム管理者は、暗号ファイルに対してコマンドの限られたセットを実行することが許可されており、及びデータ金庫内のファイルに対してタスク又は動作の限られたセットを実行する権限が与えられている。システム管理者がデータ金庫内のファイルに対して行う全ての動作は、管理監査システムによって追跡及び記録され、全ての動作は追跡することができ、全てのパーティは、それらが実行する動作の責任を負わせることができる。ルート管理者（Root Administrator）の責任は、ルートパスワード（Root password）に対する管理者特権（administrator privileges）を含んでいる。ルートパスワードの管理者特権は、鍵管理システムの制御によって、暗号ファイル名と、それらの保護されたコンテンツとに制限されている。
【００８２】
コマンド監査追跡（Command Audit Trace）
一旦暗号化されたファイルのコンテンツ及び名前に対する全てのコマンドは、コマンド監査追跡システム（Command Audit Trace system）による将来の監査及び追跡のために記録される。コマンド監査追跡システムは、ファイルが暗号化されていない状態のときに、これらのファイルに対して実行される全てのコマンドを記録し、この情報を収集して、ファイルの機密保護の状態を評価するカルマンフィルタプログラムに入力する。ファイルのコンテンツの一部又は全部を削除するために用いられたメソッド（method）を追跡し、ファイルのコンテンツデータの完全性を判定する機能は、コマンド監査追跡システムが非暗号ファイルコマンド（unencrypted file commands）を記録する他の機能の１つである。コマンド監査追跡システムによって収集される暗号ファイルに関する情報は、必要に応じて様々なプログラムによってアクセスするために、通常、その暗号ファイルのコンテンツと共に、データ金庫に保存される。これにより、コマンド監査追跡システムは、システム管理者の保護下の所定のファイルに対する全ての活動の記録された履歴（recorded history）を提供することができる。したがって、コマンド監査追跡システムは、信頼できないと分かった管理者に機密保護を任せる際の判定の誤りを検出及び補正する二次的な手段（secondary means）を提供することができる。各追跡履歴（trace history）は、暗号化によってロックされ、鍵管理システムによって保存され、ルート管理者の制御の下で、マスタ鍵によってのみアクセス可能な鍵により、改竄（tampering）が防止される。
【００８３】
ファイル保護管理システム（File Security Management System）
ファイル保護管理システムは、ファイルの名前又はコンテンツの暗号化及び復号に関して保存された情報を管理及び制御する。ファイル保護管理システムは、ファイルの元の名前を、その制御の下の保護空間（secured space）に保存し、そのファイルの元のコンテンツに関連した名前を、ファイルの暗号コンテンツに関連した暗号名に置換する。
【００８４】
インテリジェントファイル制御システム（Intelligent File Control System）
インテリジェントファイル制御システムは、元のファイル名を、保存及び機密保護するとともに、そのファイルの暗号名にマッピングすることによって、ファイル保護管理システムのデータベース（File Security Management System database）の鍵インデックス（key index）として機能する。インテリジェントファイル制御システムは、ファイルの暗号名とそれらのファイルの元の名前との間の関係を制御する。ファイル名、ファイルコンテンツ及びそれらのそれぞれの暗号化鍵の管理機能及び許可機能は、何れも、インテリジェントファイル制御システムによって提供される。保護メモリ（secured memory）からどのようにファイルにアクセスし、ファイルを入手するか、及びファイルのコンテンツをどのように変更するかは、インテリジェントファイル制御システムによって制御される。ファイルは、ユーザによってファイルに与えられたシステムファイル名（system file name）と、ユーザが特定のファイル又は保護するファイルに対して選択した鍵とを用いた保護手順（secured procedure）によって、アクセスされる。インテリジェントファイル制御システムは、新たなファイルを生成し、現在保護されているファイルへのユーザアクセスを管理し、既存のファイルを削除することができる。
【００８５】
Ａ．新たなファイルの生成（Creating New Files）
ユーザ又はプロセスが、新たなファイルの生成を試みるとき、インテリジェントファイル制御システムは、ユーザが選択したシステムファイル及び機密保護された鍵を入手することによって、保存されている全てのファイル名を調べる。インテリジェントファイル制御システムは、暗号化動作を実行し、及びアクセス検査（access examination）を実行して、ファイル名が保護ユーザ空間（secured user space）に存在するか否かを判定する。ファイルが存在している場合、ファイルシステムは、元の保存された保護ファイルのコンテンツを妨害することなく、エラーを返す。エラーが修正されない場合、インテリジェントファイル制御システムは、この動作をユーザのファイル主権（file sovereignty）の機密保護を攻撃する試みとして報告し、レベル１の脅威評価（threat assessment）を設定する。エラーが繰り返される場合、インテリジェントファイル制御システムは、セキュリティ脅威をレベル２に引き上げ、この動作を、そのユーザのファイル主権の機密保護を攻撃する試みとして報告する。この動作が再び繰り返される前に、脅威レベル（threat level）が評価され、全体システムの脅威レベルを高めることなく、このような動作の継続を容認することができるか否かが判定される。
【００８６】
Ｂ．現在保護されているファイルに対するユーザアクセス又はプロセスアクセスの管理（Managing User or Process Access To Currently Secured Files）
インテリジェントファイル制御システムは、ファイル名とその鍵を暗号化し、ｅｆｎ（暗号ファイル名：encrypted file name）と呼ばれる、保存されているファイルの保護名前（secured name）を生成する。記憶装置から保護名前が読み出された後に、保護されているファイルの暗号コンテンツへのアクセスをユーザに許可する前に、最終的な確認として、ユーザ又はプロセスによって提供された保護名前と、保存されている保護名前とが比較される。新たに生成された暗号ファイル名ｅｆｎと、元の暗号ファイル名ｅｆｎとが一致する場合、保護ファイル名は、関連するファイルの暗号コンテンツにアクセスするために用いられる。これらの暗号ファイル名ｅｆｎが一致しない場合、アクセスは、拒否され、その特定のユーザに対して警告（alarm）が発せられる。そのユーザへの警告は、所定の時間内に繰り返された動作が成功した場合にのみリセットされる。
【００８７】
Ｃ．既存のファイルの削除（Removing An Existing File）
保護メモリからファイルを削除するためには、ユーザは、最初に、既存のファイルにアクセスし、及びファイルコンテンツの削除の権利を獲得するための手順を行わなければならない。ファイルのコンテンツを削除する権利は、そのファイルの所有者又はファイル所有者の専用金庫部分（private vault section）からコンテンツを削除する権利が与えられたグループ（例えば部署、会社等）のメンバのみに与えられる。ファイルコンテンツ及び暗号ファイル名が共用金庫部分（shared vault section）にある場合、暗号ファイル名及びそのコンテンツの削除を行う権利は、その共用金庫部分内に存在する少なくとも幾つかのファイルのファイル削除権（file removal rights）が付与されたグループのメンバのみに与えられる。それらの削除権を有さないユーザによってファイルを削除する試みが行われた場合、このような試みは、そのファイルの所有者の主権に対する、及びそのファイルの削除権を有するあらゆるグループの主権に対するセキュリティ脅威の試み（security threatening attempt）として報告される。このようなファイルを削除する試みが失敗すると、ファイルを生成する試みが失敗した場合と同様に、警告を設定し、脅威レベルを評価し、失敗した試みに関する報告を行うが、機密保護に対する脅威レベルは、４に設定される。削除の試みの失敗は、アクセスを得る試みの失敗よりも重大なものであり、脅威レベルは、それに対応して、より高く設定される。このような試みの失敗が繰り返されると、この動作を行ったユーザによるファイルへのアクセスが禁止される（locked out）。このようなアクセス禁止（access lock out）は、失敗した試みの対象となったファイルの所有者に属する全てのファイル、及び失敗した試みの対象となったファイルに対する削除権を有するグループが削除権を有している全てのファイルに適用される。ユーザのアクセス禁止をリセットできるのは、システム管理者のみである。
【００８８】
ファイル名管理サブシステム（File Name Management Sub-System）
ファイル名管理サブシステムは、データ金庫内に保存されている各ファイルの名前を暗号化及び保存する保護システム（secured system）を含んでいる。ファイル名管理サブシステムは、知識ベース学習及び推論（knowledge-based learning and reasoning）を用いて、実際のファイル名にアクセスすることについて、誰が適切に認証された権限を有しているかを学習し、ファイルのコンテンツを管理するエキスパートシステムである。また、ファイル名管理サブシステムは、ファイルの名義ではなく、誰が、ファイルのコンテンツに対するアクセスについてのみ正当な権限（authentic authorization）を有しているかを学習する。
【００８９】
ファイルの内部表現（Internal Representation Of Files）
ＵＮＩＸベースのオペレーティングシステムにおいては、ｉノードは、ＵＮＩＸファイルシステム内の個々のファイルのコンピュータに保存された記述である。ｉノード記述（i-node descriptions）に含まれるファイル情報は、以下の通りである。
・ファイル所有者の識別情報：ファイル所有権は、個人所有者とグループ所有者とに分けられ、ファイルに対するアクセス権を有するユーザの組を定義する。
・ファイルタイプ：ファイルタイプは、通常（暗号化されていない）、ディレクトリ（暗号化されていない）、暗号ファイル、暗号ディレクトリ、文字又はブロック専用のファイル（character or block special）及びＦＩＦＯ（パイプ）がある。
・ファイルアクセス：通常の暗号化されていないファイルシステムのｉノードによって、スーパユーザ（super user）は、全てのファイルにアクセスする。暗号ファイルシステムでは、スーパユーザは、全ての暗号ファイルにアクセスするシステム所有者（system owner）によって置換される。スーパユーザは、アクセス権においてシステム所有者に次ぐものである。スーパユーザのアクセスには、ファイルが受けるプロセスの監視及びファイルシステムからの結果の管理が含まれる。また、スーパユーザのアクセスには、暗号ファイルシステムのコンテンツを削除、変更又はコピーする権利は含まれない。システム所有者は、一般的には有効性が限定されている、例えば有効期限が設けられている明示の同意鍵（express consent key）を提供することによって、これらの権利をスーパユーザに与えることができる。これらの時間内において、全ての動作に監視され、スーパユーザによって実行された全ての動作の追跡記録（audit trail）を提供する報告が生成される。
【００９０】
エキスパートデータ制御システム（Expert Data Control System）
エキスパートデータ制御システムは、データ金庫管理システム及びそのサブシステムのインテリジェントな制御を行う。エキスパートデータ制御システムは、全てのデータ移動を制御し、データに対する全ての要求を解釈及び認証し、並びに全てのディレクトリ名、ディレクトリコンテンツ及び暗号ファイルコンテンツのアクセス及び管理に対する許可を認証する。エキスパートデータ制御システムは、人間の介在、及び推論、学習、推理、表明を含む様々な人工知能の特徴なしで、その機能を実行することができる。エキスパートデータ制御システムは、規則に基づくヒューリスティックス、遺伝的プログラミング、確率予測に適用されるカルマンフィルタ理論が組み合わされたニューラルネットワーク方法によって、その人工知能能力を発揮する。
【００９１】
業者／銀行／決済機関の例示的なシナリオ（Merchant/Banking/Clearing House Exemplary Scenario）
本発明に基づくＥＯＳの動作の具体例として、本発明を業者サイト／銀行サイト／決済機関サイトへの適用を説明する。この具体例は、ＥＯＳにより、銀行と業者の間の仮説的な決済関係の機密保護がどのようになされるかを説明する。業者及び業者の銀行は、共に、ＥＯＳの制御の下でそれぞれのシステムを動作させ、データを暗号形式のみで保存する。オプションとして、業者及び業者の銀行がそれぞれデータを暗号形式で伝送するとき、より強力な機密保護を達成することができる。両者がデータを暗号形式のみで伝送する場合、データは、生の（暗号化されていない）形式でディスクに保存する必要がなくなる。そして、テータは、ディスクに保存されている暗号形式で、標準伝送鍵（standard transmission key）と共に、データを復号することができるＥＯＳを実行している受信機に伝送することができる。
【００９２】
業者は、毎週、その週のデータ用の別々の暗号鍵（encrypted key、例えば鍵１）を加盟銀行（Member Bank、連邦準備制度加盟銀行）に送る。鍵１は、業者の機密保護方針（security policies）によって定義される。その週の全てのデータは、鍵１によって暗号化及び復号することができる。典型的なシナリオでは、以下のようなステップが含まれる。
ステップ１．業者は、鍵１を暗号化するためにＥＯＳに送る。
ステップ２．暗号鍵１（encrypted keyl）を加盟銀行に送る。
ステップ３．加盟銀行は、鍵１を復号して、保存する。
ステップ４．業者は、結局のところ（at the end of the day）、暗号データ（encrypted data）を加盟銀行に送る。
ステップ５．加盟銀行は、暗号データを受信して、暗号データを鍵１によって復号する。
【００９３】
図９は、ＥＯＳ９１３を利用する業者サイト９１２／銀行サイト９１１の略図９１０を示している。ＥＯＳ９１３は、データを暗号形式で保存する、及び業者とその業者の銀行間で暗号データを、各伝送用の合意された鍵を用いて伝送する両方に使用される。業者サイト９１２は、クレジットカード支払（credit card payments）９１４の形式で取引を受け取る。クレジットカード取引（credit card transactions）の非暗号データ（Unencrypted data）９１６は、業者サイト９１２のメインフレーム９１８に送信される。業者サイト９１２のメインフレーム９１８上の取引データは、ＥＯＳ９１３の指示に基づいて暗号化／復号される。暗号データ（encrypted data）９２２は、補助記憶装置アレー９２４に保存されるとともに、取引ブローカ９２６にルーティングされる。取引ブローカ９２６は、適切な暗号データを業者の銀行９２８に送る。銀行９２８もＥＯＳ９１３のもとに動作している。また、取引ブローカ９２６は、適切な暗号データを、ネットワーク接続９３０、例えばインターネットを介して銀行サイト９１１に送信する。銀行サイト９１１は、ネットワーク接続９３０を介して受信した暗号データ９２２を、業者サイト９１２の動作と同様に、保存及び処理する。また、銀行サイト９１１は、暗号データをクレジットカード決済機関９３２に伝送する。
【００９４】
業者サイト９１２の構成要素として、メインフレームコンピュータ（以下、単にメインフレームともいう。）９１８と、補助記憶装置アレー９２４と、ＥＯＳ９１３とが含まれる。メインフレーム９１８は、取引データをそのコアメモリにおいて処理して、これらの取引のバッチファイルを生成し、このデータをＥＯＳ９１３に送り、暗号化した後に、ディスクに保存する。クレジットカード取引の非暗号データ９１６が暗号バッチファイル（encrypted batch file）に加えられるとき、メインフレーム９１８は、既に暗号化されているバッチファイルに追加するために、クレジットカード取引の非暗号データ９１６を処理する。メインフレーム９１８及びＥＯＳ９１３は、補助記憶装置アレー（以下、単にディスクともいう。）９２４から暗号バッチファイルを読み出して、暗号バッチファイルを復号し、新たなクレジットカード取引の非暗号データ９１６を追加し、新たなバッチファイルを暗号化して、新たな暗号バッチファイルをディスク９２４に保存する。図１０は、取引データを常に暗号形式で保存する方法を示している。図１０に示す方法は、ファイアウォールよりも安全なデータ保護を提供する。ファイアウォール保護（firewall protection）が不十分なために、データが侵入者（intruders）によって危険に晒された場合、ディスクに保存されている暗号データは、最も高度な侵入者であっても殆ど使うことができない。
【００９５】
図１０は、バッチデータを暗号化及び復号するメインフレーム９１８及びＥＯＳ９１３の詳細な構成１０１０を示している。取引を示すデータが供給されると、このデータは、コアメモリ１０１２に蓄積され、バッチファイル１０１４が生成される。バッチファイル１０１４は、ＥＯＳ９１３に送られ、ディスクに保存される前に暗号化される。既に暗号化されているバッチデータ１０１６は、新たな取引を追加するために、先ず復号しなければならず、したがって、ディスクから読み出されて、ＥＯＳ９１３によって復号される。一旦、暗号バッチデータ１０１６が復号されると、新たな取引データが追加されて、修正バッチファイル（revised batch file）１０１８が生成される。修正バッチファイル１０１８が一旦生成されると、ＥＯＳ９１３を用いて暗号化された後、暗号修正バッチデータ１０２０（revised encrypted batch data）１０２０が、ディスクに再び保存される。最初の暗号バッチデータ１０１６と、暗号修正バッチデータ１０２０との両方は、コアメモリ１０１２に返される。全てのバッチデータは、コアメモリ１０１２で処理され、ＥＯＳ９１３によって暗号化され、そして、ディスクに保存される。
【００９６】
図９は、銀行サイト９１１からクレジットカード決済機関９３２へのクレジットカード取引データの流れを示している。クレジットカード取引は、データの全てがＥＯＳ９１３によって暗号化されるので、公衆網（public networks）、例えばインターネットを介して伝送することができる。取引データは、処理の間、コアメモリにおいてのみ、暗号化されていない状態で存在する。個々の業者の取引ファイル（transaction files）は、その業者の個人鍵（personal key）を用いて復号される。情報は処理され、そして、銀行サイト（以下、加盟銀行ともいう。）９１１の他の取引と統合される。統合データ（consolidated data）は、ＥＯＳ９１３により、加盟銀行９１１の鍵によって暗号化された後、ディスクに保存される。クレジットカード決済機関９３２は、加盟銀行９１１から暗号取引ファイル（encrypted transaction files）を受信する。各加盟銀行９１１は、別々の鍵を用いる。また、クレジットカード決済機関９３２は、そのアクセスポイントにおいて、ＥＯＳ９１３を用いて、暗号取引ファイルを復号し、更なる必要な処理を行い、そして、データを再び暗号化し、ファイルをクレジットカード処理センタ、すなわちクレジットカード決済機関９３２に転送する。逆に、各業者サイト（以下、単に業者ともいう。）９１２は、加盟銀行９１１からインターネットを介して、暗号取引データ（encrypted transaction data）を受信することができる。加入銀行９１１は、加盟銀行９１１と業者９１２のみが知っている固有の鍵によって、取引データを暗号化している。業者９１２は、この情報を暗号形式でディスクに保存する。オプションとして、暗号取引データは、必要に応じて、モデム（図示せず）を用いて、交換網（switched network）を介して伝送するようにしてもよい。
【００９７】
図１１は、業者／銀行／決済機関の通信関係１１１０を示している。この通信関係１１１０は、本発明のＥＯＳを用いることによって、補助記憶装置、すなわちＲＡＩＤ装置又はハードディスク記憶装置のいずれかに、データを生の形式、すなわち暗号化されていない形式で保存する必要がなくなることを示している。決済機関１１１２は、業者の銀行Ａ１１１４、Ｂ１１１６用のそれぞれの鍵を保持している。決済機関１１１２は、業者の銀行Ａ１１１４、Ｂ１１１６との全てのデータ通信を、それぞれの鍵を用いて行う。例えば、業者の銀行Ａ１１１４は、データを暗号形式で決済機関１１１２に伝送する。決済機関１１１２は、既に、業者の銀行Ａ１１１４のデータ１１２０を復号するための鍵Ａ１１１８を有しており、したがって、鍵を更に伝送する必要はない。また同様に、決済機関１１１２は、既に、業者の銀行Ｂ１１１６のデータ１１２４を復号するための鍵Ｂ１１２２を有しており、したがって、鍵を更に伝送する必要はない。業者の銀行Ａ１１１４、Ｂ１１１６は、業者Ａ−１（１１２８）、Ａ−２（１１３０）、Ｂ−１（１１３２）、Ｂ−２（１１３４）と、バッチデータ取引（batch data transactions）を、それらのそれぞれの鍵を用いて送受信する。例えば、バッチデータは、その暗号形式で業者Ａ−１（１１２８）から業者の銀行Ａ１１１４に伝送される。業者Ａ−１（１１２８）のバッチデータを受信して、処理するために、業者の銀行Ａ１１１４は、業者の鍵Ａ−１（１１３６）を使用する。この業者／銀行／決済機関の通信関係１１１０により、データを、コアメモリにある間に処理することができるとともに、暗号形式でディスクに保存することができ、及びバッチデータは、ディスクに保存される形式と同じ暗号形式で伝送することができる。
【００９８】
このように、本発明の様々な目的及び特徴が達成され、他の有益な結果が得られる。なお、ここに示す具体例は、説明のための例示的なものであり、本発明を限定するものではない。
【００９９】
ＥＯＳの機能は、ＥＯＳが用いるファイルシステムに依存している。本発明の一実施の形態では、ＵＮＩＸオペレーティングシステムに基づくモディファイドファイルシステム（modified file system）、例えばＵＮＩＸオペレーティングシステム５、リリース３〜５（例えばＳＶＲ３．４、ＳＶＲ４、ＳＶＲ５）を用いる。また、本発明は、ＵＮＩＸの他の様々なバージョン、例えばＬｉｎｕｘ及びＢＳＤ、及び他のオペレーティングシステムに用いることができる。
【０１００】
モディファイドＵＮＩＸオペレーティングシステムに基づくＥＯＳの一実施の形態では、コンピュータシステム上の物理メモリにおいて実行されるプロセスに利用可能なメモリを増やすために、仮想メモリを用いる。したがって、ＥＯＳは、図１３に示すように、仮想メモリアドレスを物理メモリアドレスにマッピングする。以下に詳細に説明するように、仮想メモリは、プロセス及びユーザから仮想メモリの複雑さを隠す抽象化（abstractions）を用いる。図１３は、プロセス２９０１と、プロセス２９０１のメモリ要求を満たすメモリシステム２９００とのハイレベルの概略図を示している。メモリシステム２９００は、メモリ管理ユニット（memory management unit：以下、ＭＭＵという。）２９０５と、マイクロプロセッサ２９１５と、物理メモリ（例えばＲＡＭ）２９１０と、２次記憶装置（secondary memory）又は補助記憶装置（backing store）２９２０とを備える。例えば動作において、プロセス２９０１は、ＭＭＵ２９０５を呼び出し、仮想アドレスを用いてメモリブロックにアクセスする。ＭＭＵ２９０５は、仮想アドレスを物理アドレスにマッピングする。物理アドレスが物理メモリ２９１０の位置に対応する場合、ＭＭＵ２９０５は、物理メモリ２９１０からデータを読み出し、このデータをプロセス２９０１に返す。データが物理メモリ２９１０にない場合、ＭＭＵ２９０５は、ページフォルト（page fault）をマイクロプロセッサ２９１５に対して生成し、マイクロプロセッサ２９１５は、補助記憶装置２９２０からデータを物理メモリ２９１０に読み込む。ここから、データは、プロセス２９０１に渡される。
【０１０１】
後述するように、補助記憶装置２９２０に保存されるデータは、本発明に基づいて暗号化することができ、したがって、プロセス２９０１に渡す前に復号する必要がある。ＭＭＵ２９０５内のテーブルは、読み出されたデータの新たな物理アドレスと、物理メモリ２９１０内でデータの位置を決めるために用いられるその仮想アドレスとの間の関係を反映するように更新される。なお、当業者には明らかであるが、何れも以下に詳細に説明する仮想メモリとその関連するマッピングを用いることによって、コンピュータシステム内のプロセス２９０１は、物理メモリ２９１０で利用可能なメモリより多くのメモリにアクセスすることができる。
【０１０２】
以下に詳細に説明するように、ＥＯＳは、物理メモリと様々な場所、例えば２次記憶装置（補助記憶装置）、スワップデバイス（swap device）、ネットワークバッファ及び他の場所との間で転送されるデータを、暗号化及び復号する。また、データは、コンピュータシステムにエラーが生じたときに起きるメモリダンプの結果として、２次記憶装置にスワッピングされるときに、暗号化することができる。これにより、オペレーティングシステムが、デバッグのために、メモリイメージをスワップ空間又は他の空間にダンプすることを期待して、無許可ユーザがコンピュータシステムにエラーを起こすことを防止する。このように、上述した鍵管理システムを用いて、以下に更に詳細に説明するファイル管理機能によってアクセスされるデータを暗号化及び復号することにより、本発明に基づいて、データを機密保護することができる。
【０１０３】
なお、データは、１つの暗号化鍵又は複数の暗号化鍵を用いて、及び１つ以上の暗号化アルゴリズムを用いて暗号化することができる。例えば、データは、一連のブロックに分割することができる。第１のデータブロックは、ラインダールアルゴリズムに基づき、第１の暗号化鍵を用いて暗号化することができる。一方、第２のデータブロックは、ラインダールアルゴリズムに基づき、第２の暗号化鍵を用いて暗号化することができ、あるいは、第２のデータブロックは、他の対称アルゴリズム、例えばＤＥＳを用いて暗号化することができる。そして、このプロセスは、全てのデータが暗号化されるまで、続けられる。また、このプロセスと逆のプロセスを行うことにより、暗号データを復号することができる。なお、以下の説明における暗号化鍵という表現は、１つ以上の暗号化アルゴリズムを用いて、データを暗号化及び復号するために用いられる複数の暗号化鍵の使用を含むことができる。
【０１０４】
更に、ここで用いる用語「ファイル」は、あらゆる種類のファイルを含むものとし、これらには、以下に限定されるものではないが、例えば、テキスト、マシンにより読取可能なファイル（例えば実行可能ファイル）、画像ファイル（例えばＪＰＥＧ、ＴＩＦＦ、ＰＤＦ、ＭＰＥＧ）、オーディオファイル、圧縮ファイル、デバイスファイル、擬似ファイル（例えば／ｐｒｏｃ及び／ｎｆｓ）、ネットワークファイル、又はＵＮＩＸがファイル構造を用いてアクセスする他のあらゆる構造が含まれる。
【０１０５】
後述するように、ＥＯＳを用いて、物理メモリと、他の位置、例えば補助記憶装置、ネットワークファイルシステム（network file systems）等との間で伝送するデータを暗号化及び復号することができる。表１は、本発明の実施の形態に基づいて暗号化及び復号することができるファイルシステムを示している。すなわち、例えば、表１の第９行に示すように、ｓｏｃｋｆｓファイルシステムに伝送されるデータ、すなわちソケット接続（socket connection）を介して伝送されるデータは、コンピュータシステムの物理メモリからソケット接続を介して伝送される前に、暗号化される。同様に、暗号データは、ソケット接続を介して、コンピュータシステム上で実行されるプロセスに伝送される。ＥＯＳは、データを受信プロセス（receiving process）に渡す前に、この暗号データを復号する。以下に詳細に説明するように、ＥＯＳは、多くのデバイスをファイルとして処理し、したがってファイルコマンド（file commands）を用いて、これらのデバイスにアクセスすることができる。
【０１０６】
図１４は、本発明に基づくＥＯＳの仮想メモリインタフェースの下におけるメモリ割当システム（memory allocation system）１３０１を示している。メモリ割当システム１３０１は、物理メモリ１３５０に接続されたページレベルアロケータ（page-level allocator）１３１０と、カーネルメモリアロケータ（kernel memory allocator）１３３０と、仮想メモリシステムの一部であるページングシステム（paging system）１３２０とを含んでいる。ページレベルアロケータ１３１０は、カーネルメモリアロケータ１３３０とページングシステム１３２０の２つのクライアントのサーバとして機能する。カーネルメモリアロケータ１３３０は、以下に詳細に説明するように、ネットワークバッファ（network buffers）１３４０と、プロセス構造（process structures）１３３５と、以下に詳細に説明するｉノード及びファイル記述子（i-nodes and file descriptors）１３３６とに接続されている。ページングシステム１３２０は、ユーザプロセス１３２５と、ブロックバッファキャッシュ（block buffer caches）１３２６とに接続されている。
【０１０７】
【表１】
0004777651.tif 000002
【０１０８】
動作において、例えば、ユーザプロセス１３２５は、データを読み出すためにページングシステム１３２０を呼び出す。ページングシステム１３２０は、ブロックバッファキャッシュ１３２６にデータが存在するか否かを確認するために、ブロックバッファキャッシュ１３２６を調べることができ、データが存在する場合、ページングシステム１３２０は、データをユーザプロセス１３２５に返す。データがブロックバッファキャッシュ１３２６にない場合、ページングシステム１３２０は、ページレベルアロケータ１３１０を呼び出すことができ、ページレベルアロケータ１３１０は、物理メモリ１３５０にアクセスして、データを読み出すことができる。ページングシステム１３２０は、仮想メモリシステムの一部であるので、ページングシステム１３２０は、補助装置（secondary device、図示せず）からデータをページングすることもできる。
【０１０９】
同様に、カーネルコマンド（kernel command）は、カーネルサブシステムによって用いられるメモリブロック用のカーネルメモリアロケータ１３３０を呼び出すことができる。例えば図１４に示すように、カーネルメモリアロケータ１３３０は、ネットワークバッファ１３４０と、プロセス構造１３３５と、ｉノード及びファイル記述子１３３６とに小さい可変サイズのバッファを割り当てる要求を、処理することができる。また、カーネルメモリアロケータ１３３０は、より大きいサイズのメモリブロック用のページレベルアロケータ１３１０を呼び出すことができる。
【０１１０】
なお、本発明に基づくＥＯＳカーネルは、コンピュータシステムの意図されたアプリケーションに応じて、様々に設定することができる。このような設定可能なパラメータの１つは、仮想ページサイズ（virtual page size）である。例えば、仮想ページサイズは、ページを物理メモリにスワップアウトしなくてはならない回数を最小にするように、設定することができる。ＥＯＳカーネルは、永久記憶装置（permanent storage）からデータをメインメモリ（main memory）にローディングするときに用いられる仮想ページのサイズを決定するパラメータを用いる。仮想ページサイズパラメータ（virtual page size parameter）は、物理メモリのサイズに応じて、ＥＯＳカーネル毎に変えなければならない。この仮想ページサイズパラメータは、オペレーティングシステムが実行されるプラットフォーム用のＥＯＳカーネルを構成するときに、設定される。４０９６バイトの所定の仮想ページサイズに対して、後続する各ページは、４０９６バイトとなり、したがって、ＥＯＳカーネルは、各永久記憶媒体（permanent storage medium）に４０９６バイトの仮想ページサイズでアクセスしなければならない。仮想ページパラメータ「ｘ」は、各仮想ページのサイズを表しており、各ファイルをローディングするときの１ファイル当たりの仮想ページの数は、各ファイル毎に異なり、また、仮想ページの数は、各ディレクトリ毎に異なることが多く、各永久記憶媒体毎に異なる暗号化パーティション（encryption partition）を構成する。
【０１１１】
理論的な仮想ページパラメータ「ｘ」は、各ＥＯＳカーネルが、物理的な補助記憶媒体（例えばハードディスク）からデータをローディング及びアンロードするそのページサイズをどのように選択しなければならないかから独立している。仮想ページパラメータ「ｘ」は、各ページパーティション（page partition）のサイズを表し、各パーティションは、コンピュータプラットフォームのランダムアクセスメモリ（ＲＡＭ、ＤＲＡＭ等）のサイズの物理的限界に基づいていなければならない。例えば、仮想ページパラメータ「ｘ」が各ＥＯＳカーネル毎に異なる場合、補助記憶媒体にデータを保存する特定のＥＯＳカーネルは、異なる物理メモリ制限パラメータによって設定された仮想ページパラメータ「ｘ」を用いて他のＥＯＳカーネルによって保存された異なる補助記憶媒体上のデータを読み出すことができない。
【０１１２】
図１５は、本発明に基づくカーネルメモリアロケータを実装したＳＶＲ４用のメモリプール（memory pool）を有するメモリシステム１４００を示している。メモリシステム１４００は、それぞれｘバイト長を有する第１〜第６ページを含む物理メモリ１４１０を備える。第１〜第６ページのそれぞれは、好ましくは、４０９６バイト長を有する。なお、第１〜第６ページは、他の長さを有していてもよい。物理メモリ１４１０は、第１の永久記憶装置１４３５と、第２の永久記憶装置１４４０と、第３の永久記憶装置１４４５とにそれぞれに接続されている。図１５に示すように、第１のファイルＦｉｌｅ１（１４２０）と第２のファイルＦｉｌｅ２（１４２５）の両方は、第１の永久記憶装置１４３５に保存されている。更に、第２のファイルＦｉｌｅ２（１４２５）のフラグメント１４５２は、仮想記憶装置（virtual storage）１４３０上のスワップデバイス（swap device）にスワッピングされている。
【０１１３】
図１５に示すように、第２のファイルＦｉｌｅ２（１４２５）は、スワップデバイスにスワッピングされた断片化された部分を有している。なお、ファイルの一部は、様々な理由でスワップデバイスにスワッピングすることができ、そのとき、データは、本発明に基づいて暗号化される。例えば、ユーザ要求を満たす十分な空きメモリがないとき、プロセスが長い間アクティブでないとき、ページテーブル（page tables）が余りにも一杯になったとき、ファイルのデータは、スワップデバイスにスワッピングすることができる。
【０１１４】
本発明に基づく暗号化ドライバ（encryption drivers）は、ＵＮＩＸオペレーティングシステム５リリース３〜５ソースコードの既存のｖノードインタフェース構造に組み込まれる。このｖノードインタフェース構造は、ｖノード動作（VNODE Operations）又は略して「ｖｏｐｓ」として知られている動作のその仮想ファイルシステム（Virtual File System：ＶＦＳ）のグループの不可欠な部分として知られている。暗号化ドライバは、他のヘッダファイル（header file）としてインストールされるのではなく、自ら価値のあるシステムリソース（self valuable system resource）としてＥＯＳカーネルに組み込まれ、ｈ＋１拡張（h+1 extension）を有するシステムファイルとして知られている。この仮想ノード動作機構（virtual node operation mechanism）だけが、データのページの移動をサービスするために、ＥＯＳカーネルの内部に組み込まれる。この仮想ノード動作機構は、カーネルの内部にあるが、ユーザアプリケーションの要求をサービスするのにも適用することができる。本質的には、ＥＯＳ暗号化機構コード（EOS encryption mechanism code）は、既存の「ＶＦＳインタフェース動作（VFS interface operations）」に特別に追加され、これらは、両方とも全てのＥＯＳ「ｖノード」上で動作を実行するように指定される。暗号化ドライバは、データが補助記憶装置からｖノードに読み込まれるときに、各ｖノード上で動作を実行し、データがディスクに書き込まれるときに、ｖノードデータ（vnode data）上で動作を実行する。一旦、データがｖノードに読み込まれると、データは、仮想メモリページ（virtual memory pages）として知られているメモリページのラインに沿って、物理メモリのＥＯＳカーネルによって処理される。これらの仮想メモリページがロードされる前に、ＥＯＳカーネルのみが知っており、補助ディスクドライブ（secondary disk drive）に保存されているデータを暗号化及び復号するためにＥＯＳカーネルのみがアクセス可能である（ＫＭＳ鍵に関連するが、ＫＭＳ鍵とは異なる）指定された２０４８ビットの暗号化鍵の１つを用いて、カーネルの暗号化ドライバによってデータを復号する必要がある。
【０１１５】
カーネルが全ての物理メモリを管理し、この物理メモリを他のカーネルサブシステムとユーザプロセス間に割り当てるとき、カーネルは、それ自体のテキスト及び静的データ構造のために、物理メモリの一部を確保（reserve）しなければならない。この場合、物理メモリの一部は、決して解放されず、したがって、他のあらゆる目的にも利用することができない。（多くの最新のＵＮＩＸオペレーティングシステム、例えばＡＩＸでは、カーネルの一部をページング可能（pageable）にしている）。メモリの残りの部分は、動的に管理され、カーネルは、このメモリの一部を様々なクライアント（例えばプロセス及びカーネルサブシステム）に割り当て、これらのクライアントは、メモリが最早必要でなくなったときに、それ（メモリ）を解放する。
【０１１６】
カーネルは、メモリを固定サイズのフレーム又はページに分割する。上述した、ＥＯＳカーネルが暗号化ドライバを適用するベースとして用いる各フレーム又はページとは、これらのフレーム又はページである。各ページのサイズは、２の累乗に基づいている必要があり、適切な標準値（fairly typical value）は、４Ｋバイトである。これは、ソフトウェアで定義されるページサイズであり、必ずしもハードウェアページサイズとは等しくないが、幾つかの具体例では、ハードウェアページサイズと等しい場合もある。しかしながら、他の具体例では、このページサイズは、ハードウェアページサイズとは等しくなく、メモリ管理ユニットによって課される保護及びアドレス変換の単位（granularity）となる。ＥＯＳは、ＳＶＲ５に基づく仮想メモリシステムを有しているので、プロセスアドレス空間（process address space）で論理的に連続しているページは、必ずしもメモリ内で物理的に隣接している必要はない。メモリ管理ユニットは、論理的な、この場合プロセスの「仮想」ページと、データの物理メモリにおける実際の位置との間のマッピングを維持する。この結果、カーネルは、物理的に不連続な幾つかのページを割り当てることによって、ブロックが論理的に連続したメモリでなければならないというプロセスの要求を満たすことができる。この場合、ＥＯＳ暗号化サブシステム（EOS encryption subsystem）は、各論理ページを物理メモリにロードする前に、各論理ページを復号し、及び各論理ページをディスクに保存又は書き込む前に、各論理ページを暗号化する必要がある。このページの割当、コンテンツの暗号化及び復号の手順を簡単にするために、ＵＮＩＸカーネルは、空きページ（free pages）のリンクリスト（linked list、以下、空きページリスト（free list）という。）を維持する。プロセスがページを必要とするとき、カーネルは、空きページリストからこれらのページを削除し、ページが解放されるとき、カーネルは、これらのページを空きページリストに戻す。したがって、コンテンツを暗号化及び復号するためには、ＥＯＳカーネルは、ページを解放する前に、コンテンツを暗号化し、ページにデータを読み込むときに、コンテンツを復号しなければならない。
【０１１７】
図１６は、本発明の一実施の形態に基づいて、データを保存及び読み出すＥＯＳを用いたコンピュータシステム３０００の概要を示す図である。コンピュータシステム３０００は、処理装置（processing device）３０１５と、ネットワークファイル（network file server：ＮＦＳ）サーバ３０７０と、記憶装置３０８０とを備える。処理装置３０１５は、ＮＦＳサーバ３０７０に接続されており、ＮＦＳサーバ３０７０は、記憶装置３０８０に接続されている。処理装置３０１５、例えばパーソナルコンピュータ又は中型のサーバは、ＥＯＳ３０１６を有し、プロセス３０１０〜３０１２をその上で実行する。記憶装置３０８０は、本発明に基づいて暗号データを保存するデータブロック３０４０、３０４１、３０４２を有する。なお、ＮＦＳサーバ３０７０は、ＥＯＳ３０１６に取り付けられたファイルシステムを反映した記憶装置３０３０に含まれるファイルシステムをエクスポートし、これにより、暗号化ファイルシステムとなる。
【０１１８】
動作において、プロセス３０１０は、書込コマンド（write command）を呼び出すことができ、この書込コマンドは、ＥＯＳ３０１６に割り込み（trap）、ＥＯＳ３０１６は、データを暗号化し、暗号データをＮＦＳサーバ３０７０に転送する。プロセス３０１０は、書込コマンドを、ローカル書込コマンドとして呼び出すが、ＮＦＳサーバ３０７０は、この書込コマンドを非ローカル書込コマンドに変換し、このように、プロセス３０１０は、ローカル書込と非ローカル書込に対して同じコマンドを用いることができ、したがって、同じインタフェースを用い、このインタフェースをＮＦＳサーバ３０７０に任せ、ＮＦＳサーバ３０７０は、データをネットワークを介して伝送し、暗号データをデータブロック３０４０に書き込む。プロセス３０１１は、読出コマンドを呼び出すことができ、この読出コマンドは、ＥＯＳ３０１６に割り込み、ＥＯＳ３０１６は、読出要求をＮＦＳサーバ３０７０に送る。プロセス３０１１は、読出コマンドを、ローカル読出コマンドとして呼び出すが、ＮＦＳサーバ３０７０は、この要求を機密保護されたローカルエリアネットワーク上で行われる読出コマンドに変換する。このように、プロセス３０１１は、データを、ローカル的に（直接取り付けられた装置から）読み出す場合も、非ローカル的に読み出す場合も、同じ呼出（インタフェース）を用いる。そして、ＮＦＳサーバ３０７０は、データブロック３０４０から暗号データを読み出し、この暗号データをＥＯＳ３０１６に送る。そして、ＥＯＳ３０１６は、暗号データを復号して、復号したデータをバッファ（図示せず）に保存し、プロセス３０１１は、このバッファからデータを読み出すことができる。データブロック３０４２からデータを読み出すとき、プロセス３０１２は、プロセス３０１０と同様のデータパスを用いる。なお、読出コマンド又は書込コマンドが実行されるときには常に、データアクセスが許可されていることを保証するために、先ず、ユーザ又はプロセスの認証が調べられる。
【０１１９】
以下に詳細に説明するように、コンピュータシステム３０００を用いた暗号化及び復号は、自動的に行われ、ユーザに対してトランスペアレントである。これは、例えば、ＮＦＳサーバを用いて、補助記憶装置又はスワップ空間がネットワークを介して処理装置３０１５に接続されたときに、起こることができる。
【０１２０】
なお、暗号データは、本発明に基づき、処理装置と、ネットワークを介して接続された補助装置（secondary device）間で、これらに限定されるものではないが、サーバメッセージブロック（Server Message Block：ＳＭＢ）、ネットワークファイル共有プロトコル（network file-sharing protocol）又は共通インターネットファイルシステム（Common Internet File System：ＣＩＦＳ）を含む、ＮＦＳ以外のプロトコルを用いて、交換することができる。
【０１２１】
更に、以下に詳細に説明するように、ＥＯＳを用いることによって、処理装置と、直接取り付けられた補助装置との間で交換するデータを暗号化及び復号することができる。例えば、ＥＯＳに対するファイルオブジェクトの要求は、仮想ファイルシステム（virtual file system：ＶＦＳ）を通過するが、ＥＯＳは、ＮＳＦサーバが行うと同様に、この要求を、ＶＦＳインタフェースを介したローカルオブジェクトに変換する。
【０１２２】
基本的なＵＮＩＸオペレーティングシステムにおいて、ファイルは、ディレクトリファイル（directory file）を横断することによって見つけられる。ディレクトリファイルは、ファイル名と、対応するｉノードエントリ（i-node entry）とを含んでいる。ｉノードエントリは、ファイルに関連したデータを含むデータブロックの位置を含んでいる。無許可ユーザが、一旦、ディレクトリに対するアクセスに成功すると、このユーザは、ｉノードにアクセスし、ファイルに関連したデータを再生する（recover）ことができる。ディレクトリ、ｉノード及び他のデータは、例えば図１７に示すように、ファイルシステム１５００上に保存される。図１７は、ファイルシステム１５００を示しており、ファイルシステム１５００は、ブート領域１５０１と、スーパブロック１５０２と、ｉノードリスト１５０３と、ファイルシステム１５００上のファイル名を含むディレクトリファイル１５０４と、データブロック１５０５〜１５０９とを含んでいる。ブート領域１５０１は、ファイルシステム１５００の開始を示し、通常、コンピュータシステムの電源が投入されたときに実行されるブートストラップコード（bootstrap code）を含んでいる。スーパブロック１５０２は、ファイルシステム１５００の状態を記述した情報を含んでいる。本発明の一実施の形態において、１つ以上の暗号化鍵がスーパブロック１５０２に保存されている。なお、１つ以上の暗号化鍵は、ＥＯＳによってアクセス可能な他の所定の位置に保存することもできる。
【０１２３】
なお、ｉノードリスト１５０３は、データブロック１５０５〜１５０９の直接位置（direct location）、単一間接位置（single-indirect location）、二重間接位置（double-indirect location）及び三重間接位置（triple-indirect location）を含むｉノードを含んでいる。更に、ファイルに関連したデータブロック１５０５〜１５０９には、ディレクトリファイル１５０４にアクセスし、そのエントリを読み出すことができる場合にのみアクセスすることができる。本発明の一実施の形態では、ディレクトリファイル１５０４は暗号化されており、したがって、あらゆるユーザは、有効な暗号化鍵がないと、ファイル名、これらに関連したｉノード、したがってファイルに関連したデータにアクセスすることはできない。なお、本発明の一実施の形態において、データブロック１５０５〜１５０９にアクセスできたとしても、これらのデータブロック１５０５〜１５０９は、余りにも暗号化されており、適切な１又は複数の暗号化鍵がないと、読み出すことができない。
【０１２４】
なお、単一のコンピュータシステムは、多数のファイルシステムを有することができる。上述したように、表１は、これらのファイルシステムの幾つかを、名前を挙げると、例えばネットワークファイルシステム（ＮＦＳ）、ＵＮＩＸ高速ファイルシステム（ＵＦＳ）、ｓｏｃｋｆｓを例示的に示している。本発明に基づく各ファイルシステムは、１つ以上の固有の暗号化鍵を有することができる。
【０１２５】
表２は、本発明の一実施の形態に基づいて復号された後のディレクトリファイルの一部を示している。表２において、このディレクトリファイルは、Ｅ金庫（E-Vault）と呼ばれる。表２は、幾つかの列を有している。表２の第１列は、Ｅ金庫内におけるバイトオフセットを示している（これは、Ｅ金庫の一部ではないが、ここでは、説明を容易にするために示している）。表２の第２列と第３列は、ｉノード番号（i-node number）と、対応するファイル名とを示している。表２の第４列は、ファイル名が特別なファイル（special file）であるか否かを示している。表２に示すように、各ファイル名は、ｉノードリスト（例えば図１６のｉノードリスト１５０３）に対するインデックスであるｉノード番号にマッピングされる。Ｅ金庫内のバイトオフセットが０から始まる第１のエントリは、ｉノード番号８３を有する現在のディレクトリに対応したファイル名「ＵＰ Ｖ」のエントリを含んでいる。バイトオフセットが２４から始まる第２のエントリは、ｉノード番号２を有する親ディレクトリに対応したファイル名「Ｃｕｒｒｅｎｔ Ｖ」のエントリを含んでいる。バイトオフセットが４８から始まる第３のエントリは、ファイルシステムのｉノードリストにおける第１８のｉノードにマッピングされるファイルＦｉｌｅ１のエントリを含んでいる。ｉノードエントリと、これらが指すデータブロックを追跡することにより、ファイル１のデータを再生することができる。なお、Ｅ金庫内のディレクトリデータは、暗号化によって保護される。同様に、ここに説明するように、データブロックに含まれている暗号データは、Ｄ金庫内にあり、上述したように、暗号化されているので、無許可アクセス（unauthorized access）から保護されている。同様に、暗号鍵は、Ｋ金庫内にあり、上述したように、これらも暗号化されているので、無許可アクセスから保護されている。
【０１２６】
【表２】
0004777651.tif 000003
【０１２７】
物理メモリ内の本発明に基づくｉノード（主記憶装置上のｉノード（in-core i-nodes）と呼ばれる）は、平文データ（clear data）に対応している。なお、ここでは、平文データとは、暗号化される前のデータを意味し、暗号データ（cipher data）は、暗号化された後のデータを意味するものとする。平文データと暗号データとの間には、一対一の対応関係がある。なお、ｉノードを２次記憶装置（secondary memory）内で用いて、ファイルに関連したデータを読み出すことができる。２次記憶装置内の本発明に基づくｉノード（ディスク上のｉノード（on-disk i-nodes）と呼ばれる）は、暗号データとも呼ぶことができる。ディスク上のｉノードと暗号データとの間のこの関係の具体例を図１８に示す。
【０１２８】
図１８は、仮想メモリページ（virtual memory page）１７１６を保存する仮想メモリ１７１５と、暗号データブロック（encrypted data block）１７５１〜１７５６を含む補助記憶装置１７５０との間の関係を示すファイルシステム１７００の一部を示している。図１８に示すように、ｖノードインタフェース１７１０は、ファイルのディスク上のｉノード１７３０と、仮想メモリページ１７１６を含む仮想メモリ１７１５とにアクセスするために使用される。ｉノード１７３０は、直接ブロック（direct block）１７３１〜１７３８を保存するエントリのテーブルを含んでいる。なお、エントリのテーブルは、また、単一間接ブロック（single-indirect block）、二重間接ブロック（double-indirect block）及び三重間接ブロック（triple-indirect block block）を含むことができる。直接ブロック１７３１は、補助記憶装置１７５０上の暗号データブロック１７５１のアドレスを含み、直接ブロック１７３２は、暗号ブロック１７５２のアドレスを含み、直接ブロック１７３３は、暗号ブロック１７５３のアドレスを含み、直接ブロック１７３４は、暗号ブロック１７５４のアドレスを含み、直接ブロック１７３５は、暗号ブロック１７５５のアドレスを含み、直接ブロック１７３６は、暗号ブロック１７５６のアドレスを含んでいる。したがって、ｉノード１７３０を用いて、補助記憶装置１７５０上のデータブロックにアクセスすることができる。そして、データブロックは、上述したように、暗号化鍵を用いて復号することができ、実行プロセス（running processes）がデータにアクセスできる仮想メモリ１７１５に格納することができる。
【０１２９】
本発明の一実施の形態に基づくＥＯＳは、データを機密保護するための更なる機能を提供する。例えば、ＥＯＳは、従来のオペレーティングシステムにおいて用いられている許可に追加して、更なる許可を用いることができる。ＥＯＳが暗号データ（encrypted data）と非暗号データ（unencrypted data）の両方にアクセスすることができるとき、ＥＯＳは、暗号データに対する許可と、非暗号データに対する許可とを備える。
【０１３０】
一実施の形態において、ＥＯＳは、変更された許可（modified permission）に用いて、ユーザ又はプロセスが暗号ファイルにアクセスできるか否かを判定し、ユーザ又はプロセスが暗号ファイルにアクセスできる場合には、ユーザ又はプロセスがファイルに対してどのような機能を実行することができるかを判定する。ファイルにアクセスするときに許可を用いることは、当業者にとって周知の技術である。変更された許可は、ディスク上のｄｉノード構造（structure dinode）のｄｉ＿ｍｏｄｅ要素（dimode element）及び物理メモリのｉノード構造（structure inode）に保存される。図１９は、ｄｉ＿ｍｏｄｅ要素１８００内のビットフィールドを示している。ｄｉ＿ｍｏｄｅ要素１８００は、（１）通常、ディレクトリ、ブロック、文字等のファイルタイプを表す４バイトの要素であるタイプフィールド１８１０と、（２）ファイルが実行可能ファイルである場合、カーネルに対し、ユーザの有効なＩＤをファイルの所有者として設定するように指示するｓｕｉｄ（set user id：ユーザＩＤ設定）フラグ１８２０と、（３）ユーザのグループＩＤと同様の機能を実行するｓｇｉｄ（set group id：グループＩＤ設定）フラグ１８３０と、（４）実行可能なプログラムが実行された後、ファイルが実行可能ファイルである場合、カーネルに対し、ファイルのイメージをスワップ空間に維持するように指示するスティッキフラグ（sticky flag）１８４０と、（５）所有者がファイルに対する読出許可（ｒ）、書込許可（ｗ）、実行許可（ｘ）、暗号化許可（ｅ）、復号許可（ｄ）及び削除許可（ｆ）を有しているか否かを判定する所有者許可１８５０と、（６）グループがファイルに対する読出許可、書込許可、実行許可、暗号化許可、復号許可及び削除許可を有しているか否かを判定するグループ許可１８６０と、（７）他の者がファイルに対する読出許可、書込許可、実行許可、暗号化許可、復号許可及び削除許可を有しているか否かを判定する他者許可１８７０とを含んでいる。上述したように、カーネルは、ファイルにアクセスするときに、これらの許可を調べ、ユーザ又はプロセスがファイルに対して機能（書き込むための暗号化、読み出すための復号、削除等）を実行できるか否かを判定する。したがって、例えば、ファイルに対するグループアクセス許可がビットシーケンス１１１０１０であるとき、このグループは、ファイルを読み出し、書き込み、実行し、暗号化することができるが、ファイルを削除及び復号することはできない。
【０１３１】
図２０は、本発明に基づくシステム３６００を用いるユーザ（又はプロセス）のハイレベルの概略図である。システム３６００は、認証コンポーネント（credentials component）３６０５を備え、認証コンポーネント３６０５は、鍵管理コンポーネント（key-management component）３６１０に接続されており、鍵管理コンポーネント３６１０は、暗号化／復号コンポーネント（encryption/decryption component）３６１５に接続されている。暗号化／復号コンポーネント３６１５は、メモリ３６２０と、補助装置３６２５とに接続されている。以下に詳細に説明するように、本発明の一実施の形態では、ユーザは、ファイルにアクセスするための自らの認証を生成するために用いられるデータを入力する。認証は、鍵管理コンポーネント３６１０によって用いられ、鍵管理コンポーネント３６１０は、暗号化／復号コンポーネント３６１５を用いてデータを暗号化及び復号するために用いられる鍵を生成する。この暗号化／復号コンポーネント３６１５によって、ユーザ又はプロセスは、メモリ３６２０と補助装置３６２５間で転送されるデータを暗号化及び復号することができる。
【０１３２】
ユーザ又はプロセスを認証するとき、ＥＯＳは、パスワードファイル（password file）から、鍵管理のためのユーザ鍵（user key）を組み立てる（assemble）ために必要なシャドウパスワードファイル情報（shadow password file information）を抽出する。
【０１３３】
認証構造（credentials structure）は、ＵＮＩＸのグループ構造のメンバを用いて、ユーザプロセス、アプリケーションプロセス及びそのユーザに属するシステム内のユーザのファイルを識別する。この手順は、ファイルデータに対して、データにアクセスするための適切な許可を有するものとして動作するユーザのアプリケーションによるプロセスを認証するために、用いられる。ＥＯＳ下では、ＵＮＩＸのグループは、データによって制御（control）を命令する法人組織（corporate structure）、例えば部署、事業体（business units）、所有者等に変換される。この制御は、ユーザ、アプリケーション及びデータに対して動作するコマンドから、データがメモリ内にあるときは、ｖノードによるカーネルに至るまで、データがディスク媒体に返されるときには、ｉノードに至るまでによって実行される。認証のパスは、この変化におけるあらゆる点に存在し、ＥＯＳは、システムのヒューマンインタフェース及びシステム内に常駐するデータから分離された全てのデータに対して、システム内のデータを暗号化し、暗号データへの認証されたアクセスを強制することによって、所定の制御を維持する。ＥＯＳは、認証構造が、認証構造の以下のメンバを用いて、カーネルにインタフェースする点で、ＵＮＩＸアーキテクチャを変更する。
（１）ユーザＩＤ定義「ｕｉｄ＿ｔ」及び有効なユーザＩＤ「ｃｒ＿ｕｉｄ」。
（２）グループＩＤ定義「ｇｉｄ＿ｔ」及び有効なグループＩＤ「ｃｒ＿ｇｉｄ」。
（３）ユーザＩＤ定義「ｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｒｕｉｄ」。
（４）グループＩＤ定義「ｇｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｒｇｉｄ」。
（５）保存されたユーザＩＤ定義「ｕｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｓｕｉｄ」。
（６）保存されたグループＩＤ定義「ｕｉｄ＿ｔ」及び実際のユーザＩＤ「ｃｒ＿ｓｕｉｄ」。
（７）特権ベクトル定義「ｐｖｅｃ＿ｔ」及び保存された特権ベクトル「ｃｒ＿ｓａｖｐｒｉｖ」。
（８）特権ベクトル定義「ｐｖｅｃ＿ｔ」及び動作中の特権ベクトル「ｃｒ＿ｗｋｇｐｒｉｖ」。
（９）特権ベクトル定義「ｐｖｅｃ＿ｔ」及び最大特権ベクトル「ｃｒ＿ｍａｘｐｒｉｖ」。
（１０）レベル識別子定義「ｌｉｄ＿ｔ」及びレベル識別子（ＭＡＣ）媒体アクセス制御「ｃｒ＿ｌｉｄ」。
（１１）レベル識別子定義「ｌｉｄ＿ｔ」及びレベル識別子（ＭＡＣ）ＣＭＷのメンバ「ｃｒ＿ｌｉｄ」。
【０１３４】
また、ＥＯＳは、パスワードファイル及びシャドウパスワードファイルを用いて、認証されたユーザ及びアプリケーションのみがデータにアクセスできることを保証する。ＥＯＳは、ユーザＩＤ及び他のパラメータに関連したパスワードエントリを用いて、その鍵管理システム（すなわち、エキスパート鍵管理システム（expert key management system））への入力を生成する。また、ＥＯＳは、シャドウパスワードファイル内のエントリ（この中の全てのエントリ、例えば全てのパスワードは暗号化されている）を、ＵＮＩＸ認証マトリクス（UNIX credentials matrix）のその変更に対する入力として用いる。ＥＯＳのエキスパート鍵管理システムは、許可とユーザ識別情報のマトリクスを用いて、各ユーザ又はオペレーティングシステム上でプロセスとして実行されるアプリケーションの用の認証ベクトル（authentication vector）を生成する。認証ベクトルは、ＵＮＩＸ認証構造内の認証情報（credential information）を置換し、したがって、各ユーザ、アプリケーション又はＥＯＳ上で実行されるアプリケーションのシステムを認証し、ＥＯＳの保護記憶領域に保存されている情報にアクセスすることを要求する固有の機構を形成している。
【０１３５】
図２１は、本発明の一実施の形態に基づいて、ユーザ（又はプロセス）がどのようにデータにアクセスすることができるかを示すハイレベルの概略図である。すなわち、図２１は、データを暗号化及び復号するシステム２６００を示している。システム２６００は、その上でプロセス２６０１を実行するコンピュータシステム２６０２と、データベース２６３５とを備えている。コンピュータシステム２６０２上には、ユーザ空間２６２５と、ＥＯＳカーネル空間２６３０とを含むメモリが存在する。動作において、ＥＯＳからのユーザ名（user name）２６０５及びシステム鍵（system key）２６１０は、ユーザ鍵合成（user key composition）２６１５を生成するために用いられ、ユーザ鍵合成２６１５は、コンポーネント（component）２６１６、２６１８、２６２０を含む鍵構成要素（key construct）２６０３を生成するために用いられる。コンポーネント２６１６は、ファイルの所有者２６１７に対する許可を生成するために用いられ、コンポーネント２６１８は、特定の部署２６１９に対する許可を生成するために用いられ、コンポーネント２６２０は、他者２６２１に対する許可を生成するために用いられる。そして、特定のユーザ（所有者、部署、他者）に対応する許可は、そのユーザがＥＯＳ内のデータにアクセスできるか否かを決定する。ユーザ又はプロセスがデータにアクセスできる場合、ＥＯＳカーネル空間２６３０内のＥＯＳシステムコール機能（EOS System call facility）は、ファイルデータ２６３１にアクセスするために用いられ、ファイルデータ２６３１は、暗号データを、例えばデータベース２６３５に保存し、又はデータベース２６３５から読み出すために用いられる。そして、データは、ユーザ空間２６２５において、暗号化及び保存することができ、又は読出、復号及び保存することができる。
【０１３６】
ユーザ又はプロセスが会社の異なる部署又は課（sub-division）に属するとき、部署又は課に対応する許可によって、同様のステップを実行することができる。
【０１３７】
図２２は、ファイルをディスクに書き込むときのアクセス許可を用いるステップを説明する図である。図２２に示すように、ステップ１９０８において、ユーザ（例えば、端末装置のユーザ、プロセス又はバッチファイルの何れか）は、ファイルをディスクに書き込むシステム機能（system function）を呼び出す。システム機能は、例えばｅノードのＥＷＲＩＴＥである。上述したように、ｅノードは、暗号ファイルシステムにおいて、ファイルに対して実行できる動作（operation）である。機能ＥＷＲＩＴＥは、カーネルに割り込み、破線で囲まれたボックス１９１２内に示すタスクを実行する。上述したように、暗号化／復号タスクをカーネル内で実行することにより、これらのタスクは、ユーザ又はプロセスに対してトランスペアレントな保護モード（protected mode）において、より効率的に実行される。
【０１３８】
次に、ステップ１９１５において、カーネルは、暗号ディレクトリファイル（encrypted directory file）を横断して、各ディレクトリエントリ（directory entry）を復号し、復号した各ディレクトリエントリを、書き込むファイル名（ターゲットファイル名（the target file name））と比較する。カーネルは、ファイル名を、それらを暗号化するために用いられたアルゴリズムと同じアルゴリズム、好ましくはラインダールアルゴリズムを用いて、復号する。プロセスがファイル名によってファイルを参照するとき、カーネルは、一度に１つのコンポーネントについてファイル名を解析し（parse）、パス内のディレクトリを復号する鍵を再び用いることによって、プロセスが、パス内のディレクトリを検索することが許可されていることを調べ、そのファイルのｉノードを読み出す。なお、カーネルは、ファイル名を他のアルゴリズム、例えばＤＥＳ、トリプルＤＥＳ、ブロウフィッシュ（Blowfish）、スキップジャック（Skipjack）、ＩＤＥＡ等、及びこれらの任意の組合せを含む用いて、暗号化／復号することができる。一実施の形態において、暗号化／復号アルゴリズムは、１０２４ビット又は２０４８ビットの鍵を用いるが、暗号化／復号アルゴリズムは、これよりも短い又は長い鍵を用いてもよいことは言うまでもない。暗号化による保護を強化する必要がないとき、又は処理速度が重要なときには、短い鍵長を用いることができる。このプロセスは、暗号化されていないディレクトリ名が、ターゲットディレクトリ名（target directory name）に一致するまで続けられる。なお、図１９は、本発明を説明するために必要なステップのみを示しており、他のコンポーネント、例えば誤り検査（error checks）は示していない。例えば、暗号ファイル名は、暗号ディレクトリにおいて、対応するエントリも有さない場合もある。この場合、図１９には示していないが、エラーコード（error code）を呼出プロセス（calling process）に返し、又はメッセージ、例えば「ファイルが見つかりません（FILE NOT FOUND）」を、ユーザの表示画面上に表示することができる。
【０１３９】
更に、他のシーケンスにおいて実行される他のステップを用いて、暗号ディレクトリ名（encrypted directory name）をターゲットディレクトリ名に比較することもできる。例えば、先ず、ターゲットディレクトリ名を暗号化し、そして、暗号ターゲットディレクトリ名を、一致が検出されるまで、暗号ディレクトリ名と比較するようにしてもよい。この他の実施の形態により、暗号化／復号ステップの回数を低減することができる。
【０１４０】
次に、ステップ１９２０において、カーネルは、ユーザ又はプロセスが、暗号ファイルをディスクに書き込むことを許可されているか否かを調べる。例えば、プロセスがファイルの所有者である場合、カーネルは、所有者の暗号ビット（ｅ）が設定されているか否かを調べる。したがって、許可が０１００１０である場合は、プロセスは、ファイルを書き込むことができ、許可が１０１１０１である場合は、プロセスは、フィルを書き込むことができない。プロセスが正しい許可を有さない場合、カーネルは、ステップ１９２５に進み、ステップ１９２５において、カーネルは、不正な要求（improper request）を記録し（log）、そして、ステップ１９３０に進み、ステップ１９３０において、カーネルは、実行プロセス（executing process）にエラーコードを返す。
【０１４１】
プロセスが正しい許可を有する場合、カーネルは、ステップ１９３５に進み、ステップ１９３５において、カーネルは、暗号ディレクトリの一致したエントリから、ｉノードテーブルを読み出す。なお、ｉノードは、絶対パス名（absolute pathname）、相対パス名（relative pathname）又はファイル名に対応することができる。暗号ファイルは、それにデータブロックが割り当てられていない場合（例えば、暗号ファイルが新しいファイルであるので）、カーネルは、空きｉノード（free i-nodes）のリストから、ｉノードを読み出す。次に、ステップ１９４０において、カーネルは、このｉノードエントリ及び暗号化鍵を用いて、第２の鍵を用いるプロセスデータ（process data）を暗号化し、暗号データを生成し、そして、カーネルは、暗号データを、ｉノードの直接ブロック及び単一、二重又は三重間接ブロックによってアドレスされるデータブロックに保存する。暗号データを保存した後、ステップ１９５０において、カーネルは戻る。
【０１４２】
同様に、図２３は、ディスク内のターゲットファイルに保存された暗号データを読み出すために用いられるステップを示す。最初に、ステップ２００５において、カーネルは、暗号ファイル名のディレクトリ（encrypted file name directory）を横断して、ファイル名を復号し、復号されたファイル名を、一致が検出されるまで、ターゲットファイル名と比較する。次に、ステップ２０１０において、カーネルは、許可ビットを調べて、プロセスが、ファイルを復号し、すなわちファイルにアクセスする許可を有しているか否かを判定する。プロセスがこのような許可を有さない場合、ステップ２０１５において、カーネルは、不正な要求を記録し、ステップ２０２０において、カーネルは、戻り、好ましくはエラーメッセージを返す。プロセスがファイルを復号する許可を有している場合、カーネルは、ステップ２０２５に進み、ステップ２０２５において、カーネルは、ｉノード番号を読み出し、すなわち暗号データを含むデータブロックにアクセスする。次に、ステップ２０３０において、カーネルは、暗号化鍵を用いて、暗号データを復号し、平文データ（clear data）を再生し、ステップ２０３５において、カーネルは、平文データを、呼出プロセスによってアクセス可能なバッファに保存し、そして、ステップ２０４０において、戻る。
【０１４３】
なお、ＥＯＳは、本発明に基づき、カーネルの多くの部分で機能することができる。例えば、本発明の一実施の形態において、デバイスドライバインタフェース（device driver interface）は、コンピュータシステムとそれに取り付けられた周辺装置との間でデータを交換するときに、データが暗号化及び復号されることを保証するように変更されている。図２４は、本発明に基づくＥＯＳを用いるコンピュータシステム２１００の構成を示している。コンピュータシステム２１００は、プロセス２１１０〜２１１３をサポートしている。各プロセス２１１０〜２１１３は、システムコールインタフェース（device driver interface）２１５０に接続されており、システムコールインタフェース２１５０は、各プロセス２１１０〜２１１３が、後述するように、ｔｔｙ２１８０、ディスク２１８１及びテープ２１８２に対する読出及び書込を実行することによって、呼び出すことができる。
【０１４４】
システムコールインタフェース２１５０は、入出力サブシステム２１６０に接続されており、入出力サブシステム２１６０は、次に、デバイスドライバインタフェース２１７０に接続されている。デバイスドライバインタフェース２１７０は、（１）ｔｔｙ２１８０に接続されているｔｔｙドライバ２１７５と、（２）１つ以上のディスク２１８１に接続されているディスクドライバ２１７６と、（３）テープ２１８２に接続されているテープドライバ２１７７とに接続されている。システムコールインタフェース２５０と、入出力サブシステム２１６０とは、ＥＯＳのカーネルの一部を構成している。
【０１４５】
プロセス（例えばプロセス２１１０）が周辺装置（例えばディスク２１８１）に書込をしたい場合、プロセスは、システムコールインタフェース２１５０によって、カーネル２１０１に割り込むシステムコールを実行する。カーネル２１０１は、入出力サブシステム２１６０を呼び出す。本発明の一実施の形態において、入出力サブシステム２１６０は、ディスク２１８１に書き込むデータを暗号化して、暗号データを生成する。そして、入出力サブシステム２１６０は、デバイスドライバインタフェース２１７０を呼び出し、デバイスドライバインタフェース２１７０は、ハードウェアに依存したディスクドライバ２１７６を呼び出し、ディスクドライバ２１７６は、暗号データをディスク２１８１に書き込む。ディスク２１８１からプロセス２１１０に移動するデータは、同様のパスを逆方向に移動され、プロセス２１１０に送られる前に、入出力サブシステム２１６０によって復号される。
【０１４６】
なお、カーネル内（すなわち、プロセスとデバイス又はデバイスドライバ間）の本発明に基づく他のモジュールも、プロセスとデバイス間で転送されるデータを暗号化及び復号するために、用いることができる。また、暗号化及び復号を、本発明に基づいてカーネルモードで実行することには、幾つかの利点がある。第１に、例えば、カーネルアドレス空間（kernel address space、すなわちデータ）は、非カーネル動作（non-kernel operation）から保護される。したがって、無許可ユーザは、カーネルアドレス空間で処理された平文データを読み出すことができない。第２に、カーネル動作（kernel operation）は、一般的に、保護モードで実行される。したがって、無許可ユーザは、カーネルプロセス（kernel process）が終了する前に、それに割込をかけることができず、したがって、カーネルが未だ暗号化していないデータを読み出す試みを行うことができない。第３に、カーネルプロセスは、非カーネルプロセスとカーネルプロセス間でコンテキストを切り換えるためのオーバヘッドを必要としないので、より効率的である。
【０１４７】
また、システムコールの他の集合（Other collections of systems calls）、例えばＳＴＲＥＡＭＳは、本発明に基づいてプロセスとデバイス間で転送されるデータを暗号化及び復号するように適応することもできる。本発明に基づく他の暗号化／復号機構として、ＳＴＲＥＡＭＳが、カーネル空間に常駐する。図２５は、ストリーム（stream）２２４０に接続されたユーザアプリケーション２２１０を含む通信プロセス（communication process）２２００を示している。ストリーム２２４０は、ユーザアプリケーション２２１０に接続されたストリームヘッド（stream head）２２１５と、ストリームヘッド２２１５に接続された第１のモジュール２２２０と、第１のモジュール２２２０に接続された第２のモジュール２２２５と、第２のモジュール２２２５に接続されたドライバエンド２２３０とを備える。なお、ストリーム２２４０は、０又は１つ以上の任意の個数のモジュール、例えば図２５に示す２つのモジュール２２２０、２２２５を有することができる。
【０１４８】
ストリームヘッド２２１５は、ストリーム２２４０にアクセスするためのインタフェースを、ユーザアプリケーション２２１０に提供する。また、ストリームヘッド２２１５は、ユーザデータを、カーネルにおいて、ユーザアドレス空間から後述するストリームメッセージ（STREAM messages）にコピーする。第１のモジュール２２２０及び第２のモジュール２２２５を用いて、データをドライバエンド２２３０に送る前に、データを処理することができる。例えば、第１のモジュール２２２０は、ＴＣＰ機能を実行することができ、第２のモジュール２２２５は、ＩＰ機能を実行することができ、これらは一緒に、ユーザアプリケーションがネットワークを介して通信できるようにするＴＣＰ／ＩＰ機能を提供する。ドライバエンド２２３０は、デバイス（図示せず）、例えばディスク、テープドライブ、ネットワークインタフェースカード、ｔｔｙ又は他のデバイスと通信する。ストリーム２２４０は、メッセージにデータを保存することによって、第１のモジュール２２２０と第２のモジュール２２２５間でデータを伝送する。したがって、例えば、本発明に基づく第１のモジュール２２２０を用いて、データを暗号化及び復号することができる。各モジュール２２２０、２２２５は、後述するように、メッセージを読み出す読出キューと、メッセージを書き込む書込キューとを有する。
【０１４９】
例えば、ユーザアプリケーション２２１０は、暗号化するデータをデバイス（図示せず）に送ることができる。ユーザアプリケーション２２１０は、ストリームヘッド２２１５にアクセスし、要求を処理する。ストリームヘッド２２１５は、第１のモジュール２２２０を呼び出し、データをメッセージにフォーマットし、要求を書込キューに入れる。第１のモジュール２２２０は、データを処理する準備できたときに、書込キューからメッセージを取り出し、メッセージのデータを、本発明に基づいて暗号化し、この暗号データを他のメッセージに保存する。次に、第１のモジュール２２２０は、第２のモジュール２２２５を呼び出し、第２のモジュール２２２５は、また、メッセージに同様な方法でアクセスする書込キューを用いて、データを処理することができる。そして、第２のモジュール２２２５は、ドライバエンド２２３０（例えばデバイスドライバ）を呼び出して、暗号データをデバイスに書き込むことができる。なお、ストリーム２２４０がデータを暗号化するためにだけ使用される場合、第２のモジュール２２２５は、設けなくてもよい。デバイスからユーザアプリケーション２２１０に転送されるデータは、逆方向に移動し、第１のモジュール２２２０によって復号された後、ユーザアプリケーション２２１０に渡すことができる。
【０１５０】
図２６〜図２８は、本発明に基づくＥＯＳで用いるように変更できる低レベルのコンポーネントを示している。図２６は、仮想メモリサブシステム２３００によって用いられる主要な概念（fundamental abstraction）を示す。仮想メモリサブシステム２３００は、
ｖノードレイヤ２３１０に接続されたファイルシステム２３０５を備え、ｖノードレイヤ２３１０は、ページレイヤ２３１５とアドレス空間レイヤ２３３５の両方に接続されている。当業者に周知のように、ｖノードは、機能及びデータを特定のファイルに提供するデータオブジェクトである。ページレイヤ２３１５は、物理メモリ２３２０に接続されており、物理メモリ２３２０は、ハードウェアアドレス変換（hardware address translation：以下、ＨＡＴという。）レイヤ２３２５に接続されている。ＨＡＴレイヤ２３２５は、抽象インタフェース（abstract interface）とハードウェア依存機能（hardware-dependent functionality）間のインタフェースである。ＨＡＴレイヤ２３２５は、仮想アドレス空間２３５５とアドレス空間レイヤ２３３５に接続されている。また、アドレス空間レイヤ２３３５は、ｓｔｒｕｃｔ ｐｒｏｃ２３３０と、ｖノードレイヤ２３１０と、仮想アドレス空間２３５５と、匿名レイヤ（anonymous layer）２３４５とに接続されている。匿名レイヤ２３４５は、スワップレイヤ２３４０に接続されており、スワップレイヤ２３４０は、スワップデバイス２３５０に接続されている。
【０１５１】
仮想メモリサブシステム２３００の抽象化（abstraction）の一般的な機能は、当業者にとって周知である。本発明の一実施の形態では、ｖノードレイヤ２３１０は、データを暗号化及び復号するように変更されている。すなわち、例えば、ｖノードレイヤ２３１０は、データをファイルシステム２３０５に転送する前に、又はデータを匿名レイヤ２３４５に移す前に、データを暗号化するように構成することができ、匿名レイヤ２３４５からは、暗号データをスワップデバイス２３５０に転送することができる。更に、ｖノードレイヤ２３１０は、ファイルシステム２３０５からデータを転送した後に、及び物理メモリ２３２０にデータを転送する前に、暗号データを復号するように構成することができる。なお、本発明に基づいて、他のコンポーネント、好ましくはカーネルで実行されるコンポーネントを用いて、データを暗号化及び復号するようにしてもよい。
【０１５２】
図２７は、ページにアクセスするために用いられるページ構造（page structure）２４００を示している。当業者に周知のように、ページ構造２４００は、ｖノードポインタ２４０１と、ｖノードのオフセット２４０２と、ハッシュチェーンポインタ（hash chain pointer）２４０３と、ｖノードページリストへのポインタ２４０４と、空きページリスト又は入出力リストへのポインタ２４０５と、フラグ２４０６と、ＨＡＴ関連情報２４０７と、参照カウント２４０８とを含んでいる。なお、本発明に基づいて、このページ構造２４００を用いることができる。例えば、ｖノードページリストへのポインタ２４０４は、現在のオブジェクト（例えばファイル）によって使用されるメモリ内の全てのページのリストである。すなわち、ファイルが削除されるとき、カーネルは、このリスト内のページを横断して、このファイル内の全てのページを無効にしなければならない。
【０１５３】
物理メモリは、ページ領域（paged region）と非ページ領域（non-paged region）に分割される。ページ領域は、それぞれが１つの論理ページを記述するページ構造のアレーによって記述される。物理メモリは、基本的には、メモリオブジェクトページ（memory object pages）のキャッシュであるので、ページ構造は、標準のキャッシュ管理情報（standard cache management information）を含んでいる必要がある。また、ページ構造は、アドレス変換機構によって要求される情報を含んでいる。
【０１５４】
各ページは、幾つかのメモリオブジェクトにマッピングされ、各オブジェクトは、ｖノードによって表される。したがって、物理ページの名前、すなわち識別（identity）は、ｖノードによって表されるオブジェクト内のページのオフセットを指定する＜ｖノード、オフセット＞タプルによって定義される。これにより、ページは、幾つかのプロセスによって共有されているとしても、固有の名前を有することができる。ページ構造は、オフセットと、ｖノードへのポインタとを保存する。
【０１５５】
各ページは、幾つかの二重リンクリスト（doubly linked lists）上にあり、ページ構造は、この目的のために、３対のポインタを用いる。物理ページを高速に見つけるために、ページは、ｖノード及びオフセットに基づいてハッシュされており、各ページは、ハッシュチェーンのうちの１つの上にある。また、各ｖノードは、現在、物理メモリ内にあるオブジェクトの全てのページのリストを、ページ構造の第２の一対のポインタを用いて、維持する。このリストは、ファイルのメモリ内の全てのページ上で動作しなければならないルーチンによって用いられる。最後の一対のポインタは、空きページリストと、又はディスクに書き込まれることを待っているページのリストとのどちらかのリスト上に、ページを維持する。ページは、両方のリスト上に、同時存在することはできない。
【０１５６】
また、ページ構造は、このページを共有するプロセスの数の参照カウントを、書込時コピーセマンティクス（copy-on-write semantics）を用いて維持する。ここには、同期のためのフラグ（ロックされた（locked）、要求された（wanted）、転送中（in-transit））と、（ＨＡＴ情報から）変更されて参照されたビットのコピーとがある。また、このページの全ての移動を見つけるために用いられるＨＡＴ依存フィールド（HAT-dependent field）もある。
【０１５７】
このページ構造は、ｖノード及びオフセットが与えられたページを見つけて、このページを、ハッシュキュー（hash queues）及び空きページリストに及びハッシュキュー及び空きページリストから移動させ、このページへのアクセスを同期させるルーチンを含む低レベルインタフェースを有する。
【０１５８】
図２８は、ファイルシステム２５００の概略図であり、ファイルシステム２５００は、ユーザプロセス２５１０と、ＶＭサブシステム２５２０と、ファイルサブシステム２５３０と、ディスク２５４０との間の関係を示している。ユーザプロセス２５１０は、ファイルサブシステム２５３０に接続されており、ファイルサブシステム２５３０は、ＶＭサブシステム２５２０とディスク２５４０とに接続されている。
【０１５９】
ユーザプロセス２５１０は、データにアクセスするファンクションコール（function call to access data）２５０２と、ファイルにアクセスするファンクションコール２５０３とを呼び出す。したがって、当業者に周知のように、ユーザプロセス２５１０は、カーネルを呼び出し、ファイルサブシステム２５３０によって実行されるｖｏｐ＿ｒｅａｄシステムコール及びｖｏｘ＿ｗｒｉｔｅシステムコールを発行する。そして、ファイルサブシステム２５３０は、ハイレベルｖノード動作２５３１を呼び出す。そして、ハイレベルｖノード動作２５３１は、データをメモリに書き込むときに、ａｓ＿ｆａｕｌｔをアドレス空間レイヤ２５２１に発行し、アドレス空間レイヤ２５２１は、ｓｅｇｍａｐ＿ｆａｕｌｔ２５２２を生成する。そして、ｓｅｇｍａｐ＿ｆａｕｌｔ２５２２を処理するカーネルは、ファイルの一部を、ｓｅｇ＿ｍａｐドライバ２５２３を用いてカーネル空間にマッピングし、データをフォルト（faulting）し、そのデータを、ユーザのアドレス空間からコピーする。ｓｅｇ＿ｍａｐドライバ２５２３は、データブロックを、ページ化されたメモリに読み込む。ｓｅｇｖｎ＿ｆａｕｌｔ２５２４及び関連したｓｅｇ＿ｖｎドライバ２５２５は、データをメモリに書き込むときに、逆のプロセスを実行する。
【０１６０】
なお、本発明に基づく暗号化及び復号は、カーネルによって実行される様々なステップで実行することができる。例えば、暗号化は、ｓｅｇ＿ｍａｐドライバ２５２３がユーザメモリからカーネルメモリにデータをコピーするときに実行するようにしてもよい。
【０１６１】
ファイルシステムは、多くのＶＭの部分（VM segments）に補助記憶装置（backing store）を提供する。したがって、ＶＭサブシステムは、ファイルシステムと絶えずインタラクトして、ファイルとメモリ間でデータを転送しなければならない。逆に、ファイルシステムは、メモリにマッピングされたアクセスを用いて、読出及び書込システムコールを実行する。
【０１６２】
ＶＭアーキテクチャは、全てのファイルシステムの特別な詳細をｖノードレイヤに任せ、単にｖノードの手順インタフェース（procedural interface）だけを介して、ファイルにアクセスする。ＳＶＲ４の下では、ｖノードインタフェースに対して以下の３つの動作が設計されている。（１）ファイルシステムに依存する初期化及びパラメータ検査を実行するｍｍａｐから呼び出されるＶＯＰ＿ＭＡＰ。（２）ＶＭがファイルからページを得なければならないときはいつでも呼び出されるＶＯＰ＿ＧＥＴＰＡＧＥ。（３）潜在的なダーティページ（dirty pages）をファイルにフラッシュバック（flush back）するために呼び出されるＶＯＰ＿ＰＵＴＰＡＧＥ。
【０１６３】
メモリとファイルシステム間の関係は、シンボリックなもの（symbolic one）である。ファイルシステムは、ＶＭの部分に補助記憶装置を提供し、ＶＭは、ファイルアクセスの実行を行う。読出システムコール又は書込システムコールの発行により、カーネルは、ファイルの一部を、ｓｅｇ＿ｍａｐ部を用いて、それ自体のアドレス空間に一時的にマッピングし、データをフォルトし、そして、そのデータを、ユーザのアドレス空間に又はユーザのアドレス空間からコピーする。
【０１６４】
更に、本発明の一実施の形態では、データは、物理メモリからディスクに転送されるときに、常に暗号化される必要はない。例えば、ファイルシステム上に元々あるファイル及びデータは、ファイルシステム上に既に保存されている。このようなデータには、例えば、共用ライブラリ、実行可能コード等が含まれる。このような非暗号データ（unencrypted data）をスワップアウトしなければならないとき、オペレーティングシステムは、ビット、例えば変更されたビットを調べ、データが変えられているか否かを判定する。データが変わっていない場合、このデータを含むページは、スワップ空間に保存されるのではなく、解放される。一方、データが変わっている場合、このデータを含むページは、暗号化され、ファイルシステム（例えばディスク）に書き戻される。プロセスが再びデータを必要としたとき、このデータを含むページは復号されて、コンピュータメモリに戻される。また、ファイルシステム（すなわち、匿名メモリ）に由来していないデータは、ディスクには書き込まれずに、スワップ空間に保存しなくてはならない。
【０１６５】
図２９は、本発明に基づいてデータを暗号化するときに、暗号化ドライバによって実行される暗号化プロセス３３００を更に詳細に示している。暗号化ドライバは、本当の装置（true device）実際のデバイスに関連せず、ファイル、又はファイルに似たようなインタフェースを有する他の構成要素（construct）に関連するので、時々、擬似ドライバ（pseudo driver）と呼ばれる。ステップ３３０１において、プロセス又はユーザは、読出システムコール又は書込システムコールを呼び出す。次に、ステップ３３０５において、読出システムコール又は書込システムコールは、カーネルルーチン３３０４、例えばｖｈ＿ｒｅａｄコール又はｖｈ＿ｗｒｉｔｅコールをそれぞれ呼び出し、これらの両方のメソッドは、仮想ファイルシステムの特定のファイル用のｖノードオブジェクト内にある。ステップ３３１０において、ｖｈ＿ｒｅａｄコールとｖｈ＿ｗｒｉｔｅコールのそれぞれコールは、バッファ動作を含む対応したファイルシステムインタフェース（file system interface）によってサービスが提供される。ファイルシステムインタフェースは、実装されている特定のファイルシステム、例えばＮＦＳ、ｔｍｐｆｓ、ｕｆｓ、ｓｏｃｋｆｓ等に対応している。ステップ３３１０のバッファ動作は、通常、カーネル（すなわち、保護された）メモリへのデータ書込を含んでいる。
【０１６６】
データを補助装置、例えば補助記憶装置、スワップデバイス等に書き込まれなければならないとき、ページフォルト（page fault）が発生し、本発明に基づくカーネル暗号化ルーチン３３１５が実行される。カーネル暗号化ルーチン３３１５は、幾つかの動作のうちの１つを呼び出すことができる。補助装置からデータを読み出すとき（例えば、ユーザ又はプロセスが読出コマンドを呼び出したとき）、暗号化プロセス３３００は、ステップ３３２０に進み、ステップ３３２０において、カーネルは、ｖノード上のｖｏｐ＿ｇｅｔｐａｇｅを呼び出して、適切な暗号データを得る。次に、ステップ３３２５において、データが復号され、ステップ３３２６において、カーネルは、呼出ユーザ（calling user）又は呼出プロセスに制御を返す（なお、ユーザ又はプロセスが、阻止される（blocking）ことなく、読出システムコール又は書込システムコールを呼び出すことができた場合、ユーザ又はプロセスは、データを受信する他のステップを行う。）。補助装置にデータを書き込むとき、カーネルは、カーネル暗号化ルーチン３３１５の後に、ステップ３３３０に進み、データを暗号化する。次に、ステップ３３３５において、カーネルは、ｖノード上のｖｏｐ＿ｐｕｔｐａｇｅ動作を呼び出し、そして、ステップ３３３６において、呼出ユーザ又は呼出プロセスに制御を返す。
【０１６７】
なお、ユーザ又はプロセスが補助装置からデータを読み出す又は補助装置にデータを書き込むとき以外のときにも、データは、本発明に基づいて暗号化することができる。例えば、ＥＯＳを用いて、メモリに書き出さ（flushed）なければならないダーティページを暗号化することができる。このように、例えば、本発明の実施の形態において、割込サービスルーチン（interrupt service routine：ＩＳＲ）を用いて、ページに関連したダーティビット（dirty bit）を定期的に検査するころができる。ダーティビットが設定されるとき、ＥＯＳは、ページを暗号化して、この暗号化したページを補助装置、例えば補助記憶装置にフラッシュすることができる。
【０１６８】
図３０は、データ暗号化アルゴリズム３９００のハイレベルの概略図である。データ暗号化アルゴリズム３９００は、ＥＯＳシステム固有ＩＤ（ＥＯＳＩＤ）３９０１（例えばライセンスコード）と、所定のＥＯＳシステム上のファイルシステム固有ＩＤ（ＦＳＩＤ）３９０２（例えばｖｆｓ．ｈからのｆｓｉｄ＿ｔ）と、保護されたツリーのルートディレクトリ又はルートファイルのＩＤ（ＲＩＤ）３９０３（例えばｖａｔｔｒ．ｖａ＿ｎｏｄｅｉｄ）と、ＥＯＳ（鍵管理システム）上の保護されたオブジェクトの固有ＩＤ（ＰＯＩＤ）３９０４と、２５６ビットの暗号化鍵（ＥＯＫ）３９１０（埋め込まれた又はハッシュ生成された）とを用い、及びこれらを暗号化アルゴリズム、例えばＡＥＳ３９１５に供給して、ＥＯＳ上の保護されたオブジェクト（例えば暗号ファイル）の２０４８ビットの暗号化鍵（ＰＯＥＫ）３９３０を生成する。
【０１６９】
一実施の形態において、ＥＯＳに基づいてファイルを暗号化及び復号するために用いられるファイルの暗号化及び復号アルゴリズム（以下「ＥＯＳ暗号化アルゴリズム」という。）は、好ましくは、１０２４ビットのブロック及び２０４８ビットの鍵を用いる。なお、本発明では、ブロックのサイズ及び鍵のサイズは、これより大きくても小さくてもよい。暗号化及び復号の速度が機密保護よりも重要であるときは、より小さいブロック及び鍵のサイズを用いることができ、機密保護が暗号化及び復号の速度よりも重要であるときは、より大きいブロック及び鍵のサイズを用いることができる。更に、本発明では、鍵のサイズとブロックのサイズとをどのように組み合わせて用いてもよい。
【０１７０】
本発明の一実施の形態では、ＥＯＳ暗号化アルゴリズムは、（１）標準のＡＥＳブロック暗号と、（２）順列関数（permutation function、１６×６４ビットにマッピングされた１６×６４ビット）と、（３）ファイルブロック処理技術（file block manipulation technique）との組合せである。図３０は、２０４８ビットの鍵の生成を説明するハイレベルの概略図である。
【０１７１】
図３１は、例えば、図２２のステップ１９４０に示すような本発明に基づいて、データ（例えば、ファイル、ファイルの一部、データバッファ又はデータの他の部分）を暗号化するために用いられるデータ暗号化プロセス３２００を示す概略図である。図３２に示すように及び以下に詳細に説明するように、データ暗号化プロセス３２００は、以下のようなステップを有している。（１）鍵３２０１の一部を、第１の順列関数３２１９を用いて再配列し、新たな鍵３２２０を形成する。（２）新たな鍵３２２０を用い、データ３２３０を、暗号化アルゴリズム３２４０、例えばＡＥＳ規格（ラインダール）３２４０を用いて暗号化し、暗号データ３２４１を生成する。（３）暗号データ３２４１を、第２の順列関数ＰＦ０３２７０を用いて再配列し、最終的な暗号データ３２９０を生成する。好ましい実施の形態において、後述するように、データは、１０２４ビットのデータブロックに分割され、データブロックのそれぞれは、異なる鍵によって暗号化される。
【０１７２】
図３１に示すように、好ましい実施の形態では、鍵３２０１は、８個の２５６ビットのサブ鍵Ｋ０〜Ｋ７に分割され、これらには符号３２１０〜３２１７を付している。暗号化するファイル又はデータの部分には、番号が与えられ、この番号を第１の順列関数３２１９に入力して、新たな鍵３２２０を生成する。したがって、例えば、暗号化するファイルを１０２４ビットのブロックに分割する場合は、第１のブロックを暗号化するための第１の鍵は、番号（ブロック番号）「１」及び８個の２５６ビットのサブ鍵ＫＯ〜Ｋ７（３２１０〜３２１７）を第１の順列関数３２１９に入力して、新たな鍵３２２０を生成することによって、生成され、新たな鍵３２２０は、８個の２５６ビットのサブ鍵Ｋｐｆ００〜Ｋｐｆ０７からなり、これらには符号３２２１〜３２２８を付している。なお、第１の順列関数３２１９は、当業者にとって周知のあらゆる順列関数であってもよい。
【０１７３】
次に、新たな鍵３２２０用いて、データが暗号化される。なお、第１の１０２４ビットのデータブロックは、符号３２２０が付された第１の鍵を用いて暗号化される。なお、上述したステップを用いて、符号３２２０が付された第２の鍵を生成して、第２の１０２４ビットのデータブロックを暗号化し、以下、同様に繰り返すことができる。
【０１７４】
暗号化するファイルの一部を構成する新たな１０２４ビットのデータ３２３０は、１２８ビットのサブブロックＤ０〜Ｄ７に分割され、これらには符号３２３１〜３２３８を付している。なお、最後のデータブロックが１２８個のビットを含んでいない場合、データブロックの残りの部分にゼロをパッディングして、１２８ビットのデータブロックを形成することができる。新たな鍵３２２０と、１２８ビットのサブブロックに分割されたデータ３２３０は、ＡＥＳアルゴリズム３２４０に入力され、ＡＥＳアルゴリズム３２４０は、中間暗号データ（intermediary encrypted data）３２４１を生成する。中間暗号データ３２４１は、１２８ビットのブロックＥ０〜Ｅ７に分割され、これらには、符号３２４２〜３２４９を付している。次に、１２８ビットのブロック３２４２〜３２４９は、それぞれ１６個の６４ビットのブロックＵ０〜Ｕ１５に分割され、これらには、符号３２５１〜３２６２を付すとともに、まとめて符号３２５０を付している。次に、（上述したように）１０２４ビットのブロックの番号３２１８及びブロック３２５０を、第２の順列関数ｐｆｌ３２７０に入力して、最終的な暗号データ３２９０を生成する。この暗号データ３２９０は、６４ビットのブロックＵｐｆｌ０、Ｕｐｆｌ１、Ｕｐｆｌ２、Ｕｐｆｌ３、Ｕｐｆｌ４・・・からなり、これらには符号３２７１〜３２８２を付している。なお、第２の順列関数ｐｆｌ３２７０は、当該分野で周知のあらゆる順列関数であってもよく、第２の順列関数ｐｆｌ３２７０は、好ましくは、第１の順列関数３２１９とは異なる順列関数である。また、第２の順列関数ｐｆｌ３２７０は、好ましくは、データブロック間のランダム性を保証し、暗号化を強化する形で、第１の順列関数３２１９に依存している。
【０１７５】
このように、例えば図３１に示すように、本発明に基づいて補助記憶装置に書き込まれるデータは、データ３２３０に対応する部分に分割される。なお、補助記憶装置に書き込む暗号データは、最終的な暗号データ３２９０に対応している。なお、保存するデータを構成するデータの部分は、データ暗号化プロセス３２００にそれぞれ入力され、データブロックのブロック番号に基づき、データブロックに対応する暗号化鍵を用いて暗号化される。また、暗号データブロックを復号するプロセスは、図３１に示すステップとは逆のステップで行われる。
【０１７６】
本発明の原理及び動作の理解を容易にするために、本発明の特定の実施の形態を詳細事項を用いて説明してきたが、ここで参照した特定の実施の形態及びその詳細事項は、本発明の請求の範囲を限定するものではない。本発明の趣旨及び範囲から逸脱することなく、上に例示した実施の形態を変更できることは、当業者にとって明らかである。
【図面の簡単な説明】
【０１７７】
【図１】本発明に基づく暗号化オペレーティングシステム及びコンピュータメモリ示す図である。
【図２】本発明に基づく暗号化オペレーティングシステム及びコンピュータメモリ示す図である。
【図３】従来のＵＮＩＸカーネルを構成するソフトウェアコンポーネントを示す図である。
【図４】本発明に基づく暗号化オペレーティングシステムを構成するソフトウェアコンポーネントを示す図である。
【図５】本発明に基づくエキスパートデータ制御システムによって実行される機能を示すブロック図である。
【図６】本発明に基づくゲインアルゴリズムのステップを示すブロック図である。
【図７】本発明に基づく鍵管理システムによって実行されるステップを示すブロック図である。
【図８】本発明に基づく鍵管理システムによって実行されるステップ及びｉノードテーブルを示すブロック図である。
【図９】本発明に基づいて、暗号データを交換する銀行サイトと業者サイトの構成を示す概略図である。
【図１０】図９に示す業者サイトのより詳細な概略図である。
【図１１】本発明に基づいて、決済機関が、２つの銀行とそれらの対応する業者とに対してどのように通信するかを示す概略図である。
【図１２】図１に示すステップをより詳細に示す図である。
【図１３】プロセス及び仮想メモリシステムのハイレベルの概略図である。
【図１４】メモリ割当システムのブロック図である。
【図１５】メモリプールと、仮想記憶装置と、永久記憶装置との間の関係を示す概略図である。
【図１６】本発明に基づくＮＦＳを用いたネットワークにおける暗号化と復号を説明するハイレベルの概略図である。
【図１７】ｉノードリストと関連するデータブロックとを含むファイルシステムを示す図である。
【図１８】本発明の実施の形態に基づく仮想メモリ、ディスク上のｉノード及びディスク上の暗号データを示すハイレベルの概略図である。
【図１９】本発明の実施の形態に基づくアクセス許可を含むデータ構造を示す図である。
【図２０】本発明に基づくＥＯＳのコンポーネントのハイレベルの概略図である。
【図２１】本発明に基づく認証（credentials）及び許可（permissions）の使用を説明する図である。
【図２２】本発明の実施の形態に基づいて、ディスクに暗号データを保存するために用いられるステップを示すフローチャートである。
【図２３】本発明の実施の形態に基づき、ディスクから暗号データを読み出すために用いられるステップを示すフローチャートである。
【図２４】ユーザプロセスと、本発明の実施の形態に基づくデバイスドライバとの間の関係を示す概略図である。
【図２５】ユーザアプリケーションと、本発明の実施の形態に基づくストリームとを示す概略図である。
【図２６】ファイルシステム、スワップデバイス、物理メモリ及びこれらの間でデータを転送するために用いられる構造のハイレベルの図面である。
【図２７】仮想メモリシステムにおいて用いられるページ構造を示す図である。
【図２８】ユーザプロセス、ＶＭサブシステム、ファイルサブシステム及びディスクを示す図である。
【図２９】本発明に基づきページを暗号化及び復号するために用いられるステップを示す図である。
【図３０】本発明に基づくデータ暗号化アルゴリズムのハイレベルの概略図である。
【図３１】本発明に基づくデータ暗号化アルゴリズムの低レベルの概略図である。
【図１】
0004777651.tif 000004
【図２】
0004777651.tif 000005
【図３】
0004777651.tif 000006
【図４】
0004777651.tif 000007
【図５】
0004777651.tif 000008
【図６】
0004777651.tif 000009
【図７】
0004777651.tif 000010
【図８】
0004777651.tif 000011
【図９】
0004777651.tif 000012
【図１０】
0004777651.tif 000013
【図１１】
0004777651.tif 000014
【図１２】
0004777651.tif 000015
【図１３】
0004777651.tif 000016
【図１４】
0004777651.tif 000017
【図１５】
0004777651.tif 000018
【図１６】
0004777651.tif 000019
【図１７】
0004777651.tif 000020
【図１８】
0004777651.tif 000021
【図１９】
0004777651.tif 000022
【図２０】
0004777651.tif 000023
【図２１】
0004777651.tif 000024
【図２２】
0004777651.tif 000025
【図２３】
0004777651.tif 000026
【図２４】
0004777651.tif 000027
【図２５】
0004777651.tif 000028
【図２６】
0004777651.tif 000029
【図２７】
0004777651.tif 000030
【図２８】
0004777651.tif 000031
【図２９】
0004777651.tif 000032
【図３０】
0004777651.tif 000033
【図３１】
0004777651.tif 000034