(57)【要約】【課題】  ファイルデータを持ち出した元のコンピュータ以外のコンピュータでのファイルの操作を防ぐ機密保持コンピュータを提供する。【解決手段】  Ｉ／Ｏマネージャとデバイスドライバの間に設けられたフィルタドライバにより、ファイルをクローズする際に、保存される平文データ１００を暗号化し、その暗号データと当該コンピュータに固有のＭＡＣアドレス１２０を含む混成データ１３０の形式でファイルを保持させ、ファイルのオープンの際に、混成データ１３０に含まれるＭＡＣアドレスが、ファイルオープンを行なうコンピュータ固有のＭＡＣアドレス１３０と一致する場合にのみ、混成データに含まれる暗号データを復号する。【選択図】        図１
2006338136.tif 000002
【特許請求の範囲】
【請求項１】
ディスクドライブデバイスと、当該ディスクドライブデバイスのデバイスドライバと、
当該デバイスドライバに対してファイル操作を指示するＩ／Ｏマネージャを備えるコンピ
ュータであって、更に以下の要素を有するフィルタドライバを備えることを特徴とする機
密保持コンピュータ
（１）Ｉ／Ｏマネージャからデバイスドライバへ送られるファイル操作指示を受信するフ
ァイル操作指示受信部
（２）受信したファイル操作指示に含まれるファンクションを判定するファンクション判
定部
（３）判定したファンクションがファイルクローズの場合に、当該コンピュータに含まれ
るハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報として
取得し、オープン中のファイルデータを暗号化し、暗号したデータとコンピュータ固有情
報からなる混成データを生成し、デバイスドライバへ、当該混成データをファイルデータ
として記憶させるファイルライトの指示を送るファイルクローズ処理部
（４）判定したファンクションが既存ファイルオープンの場合に、当該コンピュータに含
まれるハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報と
して取得し、オープン中のファイルの混成データから、コンピュータ固有情報を復元し、
取得したコンピュータ固有情報と復元したコンピュータ固有情報が一致した場合に、混成
データに含まれる暗号データを復号し、デバイスドライバへ、復号したデータをファイル
データとして記憶させるファイルライトの指示を送る既存ファイルオープン処理部。
【請求項２】
前記コンピュータ固有情報は、コンピュータが備えるネットワーク機器のＭＡＣアドレ
スであることを特徴とする請求項１記載の機密保持コンピュータ。
【請求項３】
ファイルクローズ処理部は、コンピュータ固有情報をパーツに分割し、分割したコンピ
ュータ固有情報パーツを混成データ中にチェーン状に分散させ、
既存ファイルオープン処理部は、混成データ中のチェーン状のコンピュータ固有情報パ
ーツを読み出し、コンピュータ固有情報を復元することを特徴とする請求項１記載の機密
保持コンピュータ。
【請求項４】
ファイルクローズ処理部は、コンピュータ固有情報を暗号化し、暗号化したコンピュー
タ固有情報を混成データに含め、
既存ファイルオープン処理部は、混成データから読み出したコンピュータ固有情報を復
号することを特徴とする請求項１記載の機密保持コンピュータ。
【請求項５】
ディスクドライブデバイスと、当該ディスクドライブデバイスのデバイスドライバと、
当該デバイスドライバに対してファイル操作を指示するＩ／Ｏマネージャを備えるコンピ
ュータに、フィルタドライバとして以下の手順を実行させるためのプログラム
（１）Ｉ／Ｏマネージャからデバイスドライバへ送られるファイル操作指示を受信するフ
ァイル操作指示受信手順
（２）受信したファイル操作指示に含まれるファンクションを判定するファンクション判
定手順
（３）判定したファンクションがファイルクローズの場合に、当該コンピュータに含まれ
るハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報として
取得し、オープン中のファイルデータを暗号化し、暗号したデータとコンピュータ固有情
報からなる混成データを生成し、デバイスドライバへ、当該混成データをファイルデータ
として記憶させるファイルライトの指示を送るファイルクローズ処理手順
（４）判定したファンクションが既存ファイルオープンの場合に、当該コンピュータに含
まれるハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報と
して取得し、オープン中のファイルの混成データから、コンピュータ固有情報を復元し、
取得したコンピュータ固有情報と復元したコンピュータ固有情報が一致した場合に、混成
データに含まれる暗号データを復号し、デバイスドライバへ、復号したデータをファイル
データとして記憶させるファイルライトの指示を送る既存ファイルオープン処理手順。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ内部に保持するファイルデータの秘匿に係り、ファイルを持ち
出したコンピュータ以外のコンピュータによるデータの読み取りなどのファイル操作を防
ぐ機密保持技術に関する。
【背景技術】
【０００２】
個人情報や知的財産などの機密情報の漏洩を防止する手段として、特許文献１及び２の
ように、リムーバブルな記録媒体の容量以上のサイズにデータを膨らませ、コピーできな
いようにする技術などが提案されている。
【０００３】
しかし、この方法によれば、正当な使用目的でファイルデータを保存し、持ち出すこと
も制限することになる。
【０００４】
一般に、機密情報の漏洩を防止する場合、正当な使用を阻害することなく、不正な持ち
出しを禁止する点に、技術的な困難が伴う。
【特許文献１】特開平７−３１９６２８号公報
【特許文献２】特開２００１−１５５４２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、本発明では、特定のコンピュータから持ち出されたファイルデータを、他のコ
ンピュータで読み出すことを防ぐことにより、正当な使用に支障を与えることなく、不正
流出を防止する。
【課題を解決するための手段】
【０００６】
本発明に係る機密保持コンピュータは、ディスクドライブデバイスと、当該ディスクド
ライブデバイスのデバイスドライバと、当該デバイスドライバに対してファイル操作を指
示するＩ／Ｏマネージャを備えるコンピュータであって、更に以下の要素を有するフィル
タドライバを備えることを特徴とする
（１）Ｉ／Ｏマネージャからデバイスドライバへ送られるファイル操作指示を受信するフ
ァイル操作指示受信部
（２）受信したファイル操作指示に含まれるファンクションを判定するファンクション判
定部
（３）判定したファンクションがファイルクローズの場合に、当該コンピュータに含まれ
るハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報として
取得し、オープン中のファイルデータを暗号化し、暗号したデータとコンピュータ固有情
報からなる混成データを生成し、デバイスドライバへ、当該混成データをファイルデータ
として記憶させるファイルライトの指示を送るファイルクローズ処理部
（４）判定したファンクションが既存ファイルオープンの場合に、当該コンピュータに含
まれるハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報と
して取得し、オープン中のファイルの混成データから、コンピュータ固有情報を復元し、
取得したコンピュータ固有情報と復元したコンピュータ固有情報が一致した場合に、混成
データに含まれる暗号データを復号し、デバイスドライバへ、復号したデータをファイル
データとして記憶させるファイルライトの指示を送る既存ファイルオープン処理部。
【０００７】
更に、コンピュータ固有情報は、コンピュータが備えるネットワークカードのＭＡＣア
ドレスであることを特徴とする。
【０００８】
ファイルクローズ処理部は、コンピュータ固有情報をパーツに分割し、分割したコンピ
ュータ固有情報パーツを混成データ中にチェーン状に分散させ、
既存ファイルオープン処理部は、混成データ中のチェーン状のコンピュータ固有情報パ
ーツを読み出し、コンピュータ固有情報を復元することを特徴とする。
【０００９】
ファイルクローズ処理部は、コンピュータ固有情報を暗号化し、暗号化したコンピュー
タ固有情報を混成データに含め、
既存ファイルオープン処理部は、混成データから読み出したコンピュータ固有情報を復
号することを特徴とする。
【００１０】
本発明に係るプログラムは、ディスクドライブデバイスと、当該ディスクドライブデバ
イスのデバイスドライバと、当該デバイスドライバに対してファイル操作を指示するＩ／
Ｏマネージャを備えるコンピュータに、フィルタドライバとして以下の手順を実行させる
ことを特徴とする
（１）Ｉ／Ｏマネージャからデバイスドライバへ送られるファイル操作指示を受信するフ
ァイル操作指示受信手順
（２）受信したファイル操作指示に含まれるファンクションを判定するファンクション判
定手順
（３）判定したファンクションがファイルクローズの場合に、当該コンピュータに含まれ
るハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報として
取得し、オープン中のファイルデータを暗号化し、暗号したデータとコンピュータ固有情
報からなる混成データを生成し、デバイスドライバへ、当該混成データをファイルデータ
として記憶させるファイルライトの指示を送るファイルクローズ処理手順
（４）判定したファンクションが既存ファイルオープンの場合に、当該コンピュータに含
まれるハードウエアモジュールから当該モジュールの個体情報をコンピュータ固有情報と
して取得し、オープン中のファイルの混成データから、コンピュータ固有情報を復元し、
取得したコンピュータ固有情報と復元したコンピュータ固有情報が一致した場合に、混成
データに含まれる暗号データを復号し、デバイスドライバへ、復号したデータをファイル
データとして記憶させるファイルライトの指示を送る既存ファイルオープン処理手順。
【発明の効果】
【００１１】
本発明によれば、ファイルをクローズする際に、保存されるデータを暗号化し、その暗
号データと当該コンピュータに固有のＭＡＣアドレス（コンピュータ固有情報の例）を含
む混成データの形式でファイルを保持し、ファイルのオープンの際に、ファイルとして保
持する混成データに含まれるＭＡＣアドレスが、ファイルオープンを行なうコンピュータ
固有のＭＡＣアドレスと一致する場合にのみ、混成データに含まれる暗号データを復号す
ることにより、持ち出したコンピュータ以外でのファイルの操作を禁止することができる
。
【００１２】
特に、これらの動作をＩ／Ｏデバイスとデバイスドライバの間に設けるフィルタドライ
バを付加することにより実現するので、アプリケーションプログラム等の既存のシステム
に変更を加えることなく、従来の機能全般に対して機密保持を施すことができる点で優れ
ている。
【００１３】
ＭＡＣアドレスをパーツに分割し、混成データ中にチェーン状に分散させるので、ＭＡ
Ｃアドレス部分の解析を困難にし、混成データ中のＭＡＣアドレスの書き換えによる不正
なファイルオープンを阻止できる。
【００１４】
ＭＡＣアドレスを暗号化し、暗号化したＭＡＣアドレスを混成データに含めるので、Ｍ
ＡＣアドレスの解析を困難にし、混成データ中のＭＡＣアドレスの書き換えによる不正な
ファイルオープンを阻止できる。
【発明を実施するための最良の形態】
【００１５】
実施の形態１．
図１は、本発明に係るデータの構造を示す図である。本発明では、ＨＤＤドライブに記
憶される保存データファイルの機密保持を行なう。その為、ファイルオープン状態では、
平文データ１００として操作されているデータを、ファイルクローズの際に、混成データ
１３０に変換してＨＤＤドライブに書き込む。混成データ１３０は、混成データブロック
群１３１〜１３７とＭＡＣアドレスパーツブロック１４１〜１４６を組み合わせて構成さ
れている。混成データ群１３１〜１３７は、平文データ１００を暗号化して得られる暗号
データ１１０を分割した暗号データブロック群１１１〜１１７をコピーしたものである。
ＭＡＣアドレスパーツブロック１４１〜１４６は、当該コンピュータに接続されているネ
ットワークカードに割り当てられているＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃ
ｏｎｔｒｏｌアドレス：イーサカードのようなネットワーク機器に固有の物理アドレス）
を分割し、チェーン状に配置したものである。
【００１６】
図２は、ＭＡＣアドレスパーツブロックの構成例を示す図である。ＭＡＣアドレスパー
ツブロックは、ＭＡＣアドレスを分割したＭＡＣアドレスパーツの数だけ設けられる。こ
の例では、６バイトのＭＡＣアドレスを、１バイトずつの６つのＭＡＣアドレスパーツに
分割している。ＭＡＣアドレスの一部を構成するＭＡＣアドレスパーツ２０１と、当該Ｍ
ＡＣアドレスパーツ２０１の次のＭＡＣアドレスパーツを含むＭＡＣアドレスパーツブロ
ック２００のアドレスを示す次パーツ埋め込みアドレス２０２を含んでいる。この例では
、ブロック全体として８バイトを有し、３バイトの予備領域２０３を含んでいる。次のＭ
ＡＣアドレスパーツとは、ＭＡＣアドレスのデータ配列順における次のパーツを意味する
。
【００１７】
本発明では、Ｉ／Ｏマネージャ３００とデバイスドライバ４００の間に割り込んで動作
するフィルタドライバ６００を設ける。フィルタドライバは、カーネルモードで動作し、
アプリケーションよりもハードウエアよりの動作の変更や追加が可能である。フィルタド
ライバに記述されたプログラムでは、Ｉ／Ｏマネージャ３００からデバイスドライバ４０
０への指示要求に応じた処理を行なう関数を定義する。そして、Ｉ／Ｏマネージャ３００
から送られるＩＲＰ（Ｉ／Ｏ  Ｒｅｑｕｅｓｔ  Ｐａｃｋｅｔ）に応じた関数を実行する
。入出力要求パケットであるＩＲＰは、Ｉ／Ｏマネージャ３００とデバイスドライバ４０
０の間のファンクション毎の処理単位となっており、フィルタドライバは、Ｉ／Ｏマネー
ジャ３００から送られるＩＲＰに含まれるＭａｊｏｒＦｕｎｃｔｉｏｎ（ファンクション
の例）を読み取り、特定のＭａｊｏｒＦｕｎｃｔｉｏｎの場合に、そのＭａｊｏｒＦｕｎ
ｃｔｉｏｎに対応付けられている処理関数を実行する。尚、ＩＲＰは、Ｉ／Ｏマネージャ
３００からデバイスドライバ４００へ送られるファイル操作指示の例である。
【００１８】
図３は、フィルタドライバの構成を示す図である。フィルタドライバ６００は、パケッ
ト受信部（ファイル操作指示受信部の例）６１０、ファンクション判定部６２０、新規フ
ァイルオープン処理部６３０、ファイルライト処理部６４０、ファイルリード処理部６５
０、ファイルクローズ処理部６６０、及び既存ファイルオープン処理部６７０の要素を有
している。
【００１９】
図４は、フィルタドライバの処理フローを示す図である。パケット受信部６１０でＩ／
Ｏマネージャ３００から送られるパケットを受信し（Ｓ４１０）、ファンクション判定部
６２０はそのパケットに含まれるファンクション（ＭａｊｏｒＦｕｎｃｔｉｏｎに相当）
を判定する（Ｓ４２０）。ファンクションが、新規ファイルのオープン、ファイルライト
、あるいはファイルリードである場合には、平文データの状態を扱うので、フィルタドラ
イバ６００により実質的に変更あるいは追加する処理はない。Ｉ／Ｏマネージャ３００か
ら送られるファンクションが、ファイルのクローズ、あるいは既存ファイルのオープンの
場合に、フィルタドライバ６００によりそのファンクションに応じた処理を行なう。
【００２０】
以下では、ＨＤＤデバイスとそのデバイスドライバを例として説明するが、ＦＤＤデバ
イスや他のディスクドライブデバイスとそれらのデバイスドライバの場合にも同様に動作
するように、それぞれ同様のフィルタドライバが設けられる。
【００２１】
図５は、新規ファイルオープンのデータフローを示す図である。Ｉ／Ｏマネージャ３０
０は、保存データファイル名を指定して、デバイスドライバ４００にファイルクリエイト
を指示する。新規ファイルオープン処理部６３０による新規ファイルオープン処理（Ｓ４
３０）では、フィルタドライバを介し内容をデバイスドライバ４００に転送する。転送し
なくてもデバイスドライバ４００でパケットを受信できる場合には、新規ファイルオープ
ン処理部６３０は処理を行なわない。ファイルクリエイトは、デバイスドライバ４００に
おけるファイルオブジェクトのオープンに相当する。デバイスドライバ４００は、保存デ
ータファイルのファイルハンドルを戻す。ファイルハンドルは、所定のアドレスに格納さ
れ、Ｉ／Ｏマネージャ３００は、そのアドレスからファイルハンドルを読み取ることがで
きる。
【００２２】
図６は、ファイルライトのデータフローを示す図である。Ｉ／Ｏマネージャ３００は、
保存データファイルハンドルと、書き込むアドレスと、データサイズを指定して、書き込
む平文データをデバイスドライバ４００に転送し、ファイルライトを指示する。ファイル
ライト処理部６４０によるファイルライト処理（Ｓ４４０）では、フィルタドライバを介
し内容をバイスドライバ４００に転送する。転送しなくてもデバイスドライバ４００でパ
ケットを受信できる場合には、ファイルライト処理部６４０は処理を行なわない。保存デ
ータファイルハンドルと、書き込むアドレスと、データサイズは、パケットに含まれてい
る。平文データは、予め所定のバッファに格納しておく。ファイルライトは、デバイスド
ライバ４００におけるファイルオブジェクトへの書き込みに相当する。デバイスドライバ
４００は、所定のバッファから平文データを読み取り、その平文データをＨＤＤデバイス
５００の保存データファイル５０１に書き込む。バッファリングを行なっている場合には
、デバイスドライバ４００内部のバッファに一時的に保持することもある。
【００２３】
図７は、ファイルリードのデータフローを示す図である。Ｉ／Ｏマネージャ３００は、
保存データファイルハンドルと、読み込むアドレスと、データサイズを指定して、デバイ
スドライバ４００にファイルリードを指示する。ファイルリード処理部６５０によるファ
イルリード処理（Ｓ４５０）では、フィルタドライバを介し内容をデバイスドライバ４０
０に転送する。転送しなくてもデバイスドライバ４００でパケットを受信できる場合には
、ファイルリード処理部６５０は処理を行なわない。保存データファイルハンドルと、読
み込むアドレスと、データサイズは、パケットに含まれている。ファイルリードは、デバ
イスドライバ４００におけるファイルオブジェクトからの読み込みに相当する。デバイス
ドライバ４００は、ＨＤＤデバイス５００の保存データファイル５０１からアドレスで指
定された平文データを読み込む。バッファリングを行なっている場合には、デバイスドラ
イバ４００内部のバッファから読み込むこともある。デバイスドライバ４００は、読み込
んだ平文データを所定のバッファに書き込む。Ｉ／Ｏマネージャ３００は、所定のバッフ
ァからこの平文データを読み取ることができる。
【００２４】
次に、ファイルをクローズする際の動作について説明する。この動作で、平文データを
混成データに変換した上で、ファイルをクローズさせる。
【００２５】
図８は、ファイルクローズのモジュール構成とデータフローを示す図である。Ｉ／Ｏマ
ネージャ３００は、保存データファイルハンドルを指定して、ファイルのクローズを指示
する。保存データファイルハンドルは、パケットに含まれている。フィルタドライバ６０
０は、この指示に応じて動作する。ファイルクローズで動作するファイルクローズ処理部
６６０は、パラメータ入力部６６１、ＭＡＣアドレス取得部６６２、取得ＭＡＣアドレス
記憶部６６３、データ混成部６６４、ファイルオブジェクトクローズ部６６５、及びリタ
ーン値出力部６６６の要素を有している。
【００２６】
フィルタドライバによるファイルクローズ処理について説明する。図９は、フィルタド
ライバのファイルクローズ処理フローを示す図である。まず、パラメータ入力部６６１に
よるパラメータ入力処理（Ｓ９０１）で、パケットに含まれている保存データファイルハ
ンドルを得る。次に、ＭＡＣアドレス取得部６６２によるＭＡＣアドレス取得処理（Ｓ９
０２）を行なう。この処理では、例えばＮＥＴＢＩＯＳ（Ｎｅｔｗｏｒｋ  ＢＩＯＳ）コ
マンドを用いて当該コンピュータに接続されているネットワーク機器（この例では、ネッ
トワークカード）固有であるＭＡＣアドレスを取得する。そして、取得したＭＡＣアドレ
スを取得ＭＡＣアドレス記憶部６６３に記憶させる。取得ＭＡＣアドレス記憶部６６３に
は、ファイルクローズ処理部６６０の内部に設けられた記憶領域を用いる。次に、データ
混成部６６４によるデータ混成処理（Ｓ９０３）を行なう。この処理では、取得ＭＡＣア
ドレス記憶部６６３に記憶している取得ＭＡＣアドレスと、デバイスドライバ４００から
得られる保存データファイルの平文データとから、混成データを生成し、生成した混成デ
ータをデバイスドライバ４００に保存データファイル５０１として書き込む指示をする。
詳しい処理は、図１０及び図１１を用いて後述する。そして、ファイルオブジェクトクロ
ーズ部６６５によるファイルオブジェクトクローズ処理（Ｓ９０４）で、保存データファ
イルハンドルを指定して、ファイルのクローズをデバイスドライバ４００に指示する。例
えば、ファイルクローズのファンクションと保存データファイルハンドルを含むパケット
を生成し、そのパケットをデバイスドライバ４００へ送る。これにより、保存データファ
イル５０１に混成データが保持される。そして、デバイスドライバ４００からリターン値
を取得し、リターン値出力部６６６によるリターン値出力処理（Ｓ９０５）で、このリタ
ーン値をＩ／Ｏマネージャ３００に戻す。デバイスドライバ４００によりリターン値が所
定のバッファに格納され、Ｉ／Ｏマネージャ３００が直接これを読み取れる場合には、リ
ターン値出力処理（Ｓ９０５）は不要である。
【００２７】
ここで、前述のデータ混成部６６４によるデータ混成処理（Ｓ９０３）について詳述す
る。図１０は、データ混成部のモジュール構成を示す図である。データ混成部６６４は、
暗号化部１００１、暗号データファイルハンドル記憶部１００２、及びデータレイアウト
部１００３を有している。また、データ混成部６６４は、処理過程で一次的に暗号データ
ファイル５０２を生成させる。
【００２８】
図１１は、データ混成処理フローを示す図である。まず、暗号化部１００１による暗号
化処理（Ｓ１１０１）を行なう。この処理では、保存データファイル５０１の平文データ
を暗号化して、暗号データを生成し、その暗号データを暗号データファイル５０２に記憶
させる。詳しくは、図１２を用いて後述する。
【００２９】
次に、データレイアウト部１００３によるデータレイアウト処理（Ｓ１１０２）を行な
う。この処理では、暗号データファイル５０２に記憶している暗号データと、取得ＭＡＣ
アドレス記憶部６６３に記憶している取得ＭＡＣアドレスから混成データを生成し、保存
データファイル５０１に書き込む。詳しくは、図１３を用いて後述する。
【００３０】
最後に、暗号データファイル消去部１００４による暗号データファイル消去処理（Ｓ１
１０３）で、暗号データファイル５０２を消去する。詳しくは、図２０を用いて後述する
。
【００３１】
前述の暗号化処理（Ｓ１１０１）について詳述する。図１２は、暗号化処理フローを示
す図である。まず、デバイスドライバ４００に、暗号データファイルのファイル名を指定
して、暗号データファイルクリエイト（デバイスドライバ４００のファイルオブジェクト
のオープンに相当）を指示する（Ｓ１２０１）。例えば、ファイルクリエイトのファンク
ションと所定の暗号データファイル名を含むパケットを生成し、そのパケットをデバイス
ドライバ４００へ送る。そして、デバイスドライバ４００から暗号データファイルのファ
イルハンドルを取得し、暗号データファイルハンドル記憶部１００２に記憶させる。次に
、パラメータ入力部６６１で入力した保存データファイルのファイルハンドルを指定して
、保存データファイルの平文データ全体の読み込みをデバイスドライバ４００に指示する
（Ｓ１２０２）。例えば、ファイルリードのファンクションと、保存データファイルハン
ドルと、開始アドレス（０）から終了アドレス（ＥＯＦ（ファイルの最後））までを含む
パケットを生成し、そのパケットをデバイスドライバ４００へ送る。そして、デバイスド
ライバ４００から平文データ全体を取得し、これを暗号化する（Ｓ１２０３）。平文デー
タは、デバイスドライバ４００により所定のバッファに格納されており、そのバッファか
ら平文データを読み取ることができる。暗号データファイルハンドル記憶部１００２に記
憶している暗号データファイルハンドルを指定して、暗号化により得られた暗号データの
書き込みをデバイスドライバ４００に指示する（Ｓ１２０４）。例えば、ファイルライト
のファンクションと、暗号データファイルハンドルと、開始アドレス（０）から終了アド
レス（ＥＯＦ）までを含むパケットを生成し、そのパケットをデバイスドライバ４００へ
送る。暗号化部１００１は、その前に暗号データを所定のバッファに格納しておき、デバ
イスドライバ４００は、そのバッファから暗号データを読み取る。
【００３２】
前述のデータレイアウト処理（Ｓ１１０２）について詳述する。図１３は、データレイ
アウト処理フローを示す図である。暗号データブロックの決定（Ｓ１３０１）で、暗号デ
ータを分割するブロック（コピーする単位）を決定し、混成データの配置の決定（Ｓ１３
０２）で、暗号データブロックをコピーする混成データブロックとＭＡＣアドレスをチェ
ーン状に格納するＭＡＣアドレスパーツブロックの配置を決定する。混成データの書き込
み（Ｓ１３０３）で、決定した配置に従って、混成データの書き込みをデバイスドライバ
４００に指示する。これらの処理について、以下に詳述する。
【００３３】
暗号データブロックの決定（Ｓ１３０１）について詳述する。図１４は、暗号データブ
ロックの決定処理フローを示す図である。この処理では、暗号データブロックテーブルを
生成する。暗号データブロックテーブルは、ファイルクローズ処理部６６０の内部の記憶
領域に設けられる。図１５は、暗号データブロックテーブルの構成例を示す図である。暗
号データを分割した暗号データブロック毎にレコード１５５１〜１５５７を設け、暗号デ
ータブロックの開始アドレス１５０１と暗号データブロックの終了アドレス１５０２の項
目を対応付けて記憶するように構成されている。
【００３４】
当該処理では、まず、デバイスドライバ４００から暗号データファイルのファイルサイ
ズを特定する（Ｓ１４０１）。暗号データファイルを最後まで読み込むことにより、ファ
イルサイズを特定することができる。あるいは、前述の暗号化の際に、暗号データのサイ
ズを記憶しておき、これを用いてもよい。そして第１の暗号データブロック１１１の開始
アドレス（１５５１：１５０１）を０とする（Ｓ１４０２）。次に、第２の暗号データブ
ロック１１２の開始アドレス（１５５２：１５０１）を所定の起点アドレスとする（Ｓ１
４０３）。この実施例では、第１のＭＡＣアドレスパーツブロック１４１のアドレスを所
定の起点アドレス（この例では、１０００００（Ｈ：１６進数、以下省略））に固定して
いる。また、第１のＭＡＣアドレスパーツブロック１４１は、第１の混合データブロック
１３１と第２の混合データブロック１３２の間に埋め込むので、第２の暗号データブロッ
ク１１２の開始アドレス（１５５２：１５０１）は、必ずこの所定の起点アドレスとなる
。
【００３５】
続いて、第３の暗号データブロック１１３から第７の暗号データブロック１１７の開始
アドレス１５０１を決定する（Ｓ１４０４）。これらの開始アドレスは、その都度任意に
決定する。この例では、所定の起点アドレスとファイルの最後（ファイルサイズー１）の
間に任意のアドレスを、順に５つ設定している。例えば、ファイルサイズ（Ｆ０００００
）から所定の起点アドレス（１０００００）を差し引いて分割対象空間のサイズを求め、
その分割対象空間（Ｅ０００００）を６つに不均等（あるいは均等）に分割し、分割サイ
ズ（２０００００＋２０００００＋１０００００＋３０００００＋２０００００＋４００
０００）を求め、これらの分割サイズを、順次所定の起点アドレスに加えることにより、
これらの開始アドレスを求めることができる。上述の分割対象空間の分割は、乱数等によ
り任意に特定した分割サイズを順に５回差し引くことにより得られる。分割サイズの特定
としては、複数の分割サイズの候補（１０００００、２０００００、３０００００、・・
・）から適当に分割サイズを選択する方法などが考えられる。
【００３６】
次に、第１の暗号データブロック１１１から第６の暗号データブロック１１６の終了ア
ドレス１５０２を決定する（Ｓ１４０５）。この処理では、暗号データブロック毎に、次
の暗号データブロックの開始アドレス１５０１から１を引くことにより、終了アドレス１
５０２を算出する。最後に、第７の暗号データブロックの終了アドレスをファイルサイズ
−１とする（Ｓ１４０６）。
【００３７】
混成データの配置の決定（Ｓ１３０２）について詳述する。図１６は、混成データの配
置の決定処理フローを示す図である。この処理では、ＭＡＣアドレスパーツブロックテー
ブルと混成データブロックテーブルを生成する。これらのテーブルは、ファイルクローズ
処理部６６０の内部の記憶領域に設けられる。
【００３８】
図１７は、ＭＡＣアドレスパーツブロックテーブルの構成例を示す図である。ＭＡＣア
ドレスパーツ毎にレコード１７５１〜１７５６を設け、ＭＡＣアドレスパーツ１７０１と
埋め込みアドレス１７０２との項目を対応付けて記憶するように構成されている。
【００３９】
図１８は、混成データブロックテーブルの構成例を示す図である。混成データブロック
毎にレコード１８５１〜１８５７を設け、混成データブロックの開始アドレス１８０１と
混成データブロックの終了アドレス１８０２の項目を対応付けて記憶するように構成され
ている。
【００４０】
まず、ＭＡＣアドレスをＭＡＣアドレスパーツに分割し、それぞれをＭＡＣアドレスパ
ーツブロックテーブルの各レコードのＭＡＣアドレスパーツ１７０１に配列順に記憶させ
る（Ｓ１６０１）。次に、第１の暗号データブロック１１１の開始アドレスと終了アドレ
ス１５５１を、混成データブロックテーブルの第１の混成データブロック１３１の開始ア
ドレスと終了アドレス１８５１にコピーする（Ｓ１６０２）。次に、第１のＭＡＣアドレ
スパーツ１４１の埋め込みアドレス（１７５１：１７０２）を、所定の起点アドレス（１
０００００）とする（Ｓ１６０３）。そして、対応する暗号データブロックと混成データ
ブロック毎に、順次以下の処理を繰り返す（Ｓ１６０４）。先に割り当てたＭＡＣアドレ
スパーツ埋め込みアドレス１７０２にＭＡＣアドレスパーツブロックサイズ（この例では
、８バイト）を加えて、混成データブロックの開始アドレス１８０１を算出する（Ｓ１６
０５）。算出した開始アドレスを、混成データブロックテーブルの該当する混成データブ
ロックのレコードに書き込む。次に、暗号データブロックの終了アドレス１５０２から開
始アドレス１５０１を差し引いて、その差に１を加えて、暗号データブロックのサイズを
算出する（Ｓ１６０６）。そして、混成データブロックの開始アドレス１８０１に、算出
した暗号データブロックのサイズを加えて、その和から１を差し引いて、混成データブロ
ックの終了アドレス１８０２を算出する（Ｓ１６０７）。算出した終了アドレスを、混成
データブロックテーブルの該当する混成データブロックのレコードに書き込む。すべての
データブロックについて処理した時点で（Ｓ１６０８）、混成データブロックテーブルが
完成する。次に、第２から第６のＭＡＣアドレスパーツブロック１４２〜１４６の埋め込
みアドレスを算出する（Ｓ１６０９）。それぞれ、第２から第６の混成データブロック１
３２〜１３６の開始アドレス（１８５２〜１８５６：１８０１）に、対応する第２から第
６の暗号データブロック１１１〜１１６のサイズを加えることにより得られる。算出した
埋め込みアドレスを、順に埋め込みアドレス未決定のＭＡＣアドレスパーツのいずれかに
割り当て、ＭＡＣアドレスパーツブロックテーブルに記憶させる（Ｓ１６１０）。埋め込
みアドレスを割り当てるレコードの順番は、任意で構わない。乱数を、埋め込みアドレス
が未決定のレコードの数で除して、剰余値によりレコードを特定する方法などが考えられ
る。この例によらず、昇順や降順に埋め込みアドレスを割り当ててもよい。
【００４１】
混成データの書き込み（Ｓ１３０３）について詳述する。図１９は、混成データの書き
込み処理フローを示す図である。対応する暗号データブロックと混合データブロック毎に
以下の処理を繰り返す（Ｓ１９０１）。暗号データファイルハンドルを指定して、暗号デ
ータブロックテーブルの暗号データブロックの開始アドレスから終了アドレスまでの暗号
データの読み込みをデバイスドライバ４００に指示し、暗号データブロックを読み込む（
Ｓ１９０２）。例えば、ファイルリードのファンクションと、暗号データファイルハンド
ルと、開始アドレスと、ブロックサイズを含むパケットを生成し、そのパケットをデバイ
スドライバ４００へ送り、所定のバッファへ暗号データブロックを読み込む。そして、混
合データファイルハンドルを指定して、読み込んだ暗号データブロックを、混合データブ
ロックテーブルの混合データブロックの開始アドレスから終了アドレスまでの混成データ
ブロックとして書き込む（Ｓ１９０３）。例えば、所定のバッファへ暗号データブロック
を書き込み、ファイルライトのファンクションと、保存データファイルハンドルと、開始
アドレスと、ブロックサイズを含むパケットを生成し、そのパケットをデバイスドライバ
４００へ送る。すべてのデータブロックについて処理すると（Ｓ１９０４）、次にＭＡＣ
アドレスパーツ毎に、以下の処理を繰り返す（Ｓ１９０５）。ＭＡＣアドレスパーツと、
次のＭＡＣアドレスパーツの埋め込みアドレスを組み合わせて、ＭＡＣアドレスパーツブ
ロックを生成し（Ｓ１９０６）、生成したＭＡＣアドレスパーツブロックを、当該パーツ
の埋め込みアドレスに書き込む（Ｓ１９０７）。例えば、所定のバッファへＭＡＣアドレ
スパーツブロックを書き込み、ファイルライトのファンクションと、保存データファイル
ハンドルと、開始アドレスと、ブロックサイズを含むパケットを生成し、そのパケットを
デバイスドライバ４００へ送る。すべてのＭＡＣアドレスパーツについて処理した時点で
終了する（Ｓ１９０８）。
【００４２】
図１１の暗号データファイル消去処理（Ｓ１１０３）について詳述する。図２０は、暗
号データファイル消去処理フローを示す図である。暗号データファイルハンドル記憶部１
００２に記憶している暗号データファイルハンドルを指定して、デバイスドライバ４００
に暗号データファイルオブジェクトのクローズを指示する（Ｓ２００１）。例えば、ファ
イルクローズのファンクションと、暗号データファイルハンドルを含むパケットを生成し
、そのパケットをデバイスドライバ４００へ送る。更に、暗号データファイルハンドルを
指定して、デバイスドライバ４００に暗号データファイルオブジェクトのデリートを指示
する（Ｓ２００２）。例えば、ファイルデリートのファンクションと、暗号データファイ
ルハンドルを含むパケットを生成し、そのパケットをデバイスドライバ４００へ送る。
【００４３】
このようにして、平文データが混成データに変換されて、保存データファイルに保持さ
れる。
【００４４】
次に、このようにして保持された保存データファイルをオープンする際の動作について
説明する。この動作では、ファイルをオープンするとともに、ＭＡＣアドレスを検証した
上で、保存データファイルの混成データを平文データに変換する。
【００４５】
図２１は、既存ファイルオープンのモジュール構成とデータフローを示す図である。Ｉ
／Ｏマネージャ３００は、保存データファイル名を指定して、ファイルのオープンを指示
する。フィルタドライバ６００は、この指示を取得して、動作する。ファイルオープンで
動作する既存ファイルオープン処理部６７０は、パラメータ入力部６７１、ファイルオブ
ジェクトオープン部６７２、保存データファイルハンドル記憶部６７３、ＭＡＣアドレス
検証部６７４、データ復元部６７５、パラメータ出力部６７６、ファイルオブジェクトク
ローズ部６７７、及びエラー結果出力部６７８の要素を有している。
【００４６】
フィルタドライバによるファイルオープン処理について説明する。図２２は、フィルタ
ドライバの既存ファイルオープン処理フローを示す図である。まず、パラメータ入力部６
７１によるパラメータ入力処理（Ｓ２２０１）で、パケットに含まれる保存データファイ
ル名を得る。次に、ファイルオブジェクトオープン部６７２によるファイルオブジェクト
オープン処理（Ｓ２２０２）を行なう。この処理では、保存データファイル名を指定して
、デバイスドライバ４００にファイルオブジェクトのオープンを指示する。例えば、ファ
イルオープン（または、ファイルクリエイト）のファンクションと、保存データファイル
名を含むパケットを生成し、デバイスドライバ４００へ送る。次に、ＭＡＣアドレス検証
部６７４によるＭＡＣアドレス検証処理（Ｓ２２０３）を行なう。この処理では、保存デ
ータファイルに保持されている混成データから抽出されるＭＡＣアドレスが、当該コンピ
ュータに固有のＭＡＣアドレスと一致するか否かにより、正当なアクセスであるか否かを
判断する。詳しい処理は、図２３及び図２４を用いて後述する。正当なアクセスである場
合には、データ復元部６７５によるデータ復元処理（Ｓ２２０４）を行なう。この処理で
は、保存データファイルに保持されている混成データから平文データを復元し、保存デー
タファイルに書き戻す。詳しい処理は、図２６及び図２７を用いて後述する。そして、パ
ラメータ出力部６７６によるパラメータ出力処理（Ｓ２２０５）を行なう。この処理では
、保存データファイルハンドルを、出力パラメータとして、Ｉ／Ｏマネージャ３００に戻
す。デバイスドライバ４００によりファイルハンドルが所定のアドレスに格納され、Ｉ／
Ｏマネージャ３００が、そのアドレスから直接ファイルハンドルを読み取ることができる
場合は、パラメータ出力処理（Ｓ２２０５）は省略できる。
【００４７】
一方、正当なアクセスでない場合には、ファイルオブジェクトクローズ部６７７による
ファイルオブジェクトクローズ処理（Ｓ２２０６）で、保存データファイルハンドルを指
定して、保存データファイルのクローズを指示する。例えば、ファイルクローズのファン
クションと、保存データファイルハンドルを含むパケットを生成し、そのパケットをデバ
イスドライバ４００へ送る。そして、エラー結果出力処理（Ｓ２２０７）で、ＭＡＣアド
レスが不正であり正当なアクセスではないために、ファイルオープンに失敗した旨のエラ
ー結果をＩ／Ｏマネージャ３００に返信する。
【００４８】
前述のＭＡＣアドレス検証部６７４によるＭＡＣアドレス検証処理（Ｓ２２０３）につ
いて詳述する。図２３は、ＭＡＣアドレス検証部のモジュール構成を示す図である。ＭＡ
Ｃアドレス検証部６７４は、ＭＡＣアドレス復元部２３０１、復元ＭＡＣアドレス記憶部
２３０２、ＭＡＣアドレス取得部２３０３、取得ＭＡＣアドレス記憶部２３０４、及びＭ
ＡＣアドレス比較部２３０５を有している。
【００４９】
図２４は、ＭＡＣアドレス検証処理フローを示す図である。ＭＡＣアドレス復元部２３
０１によるＭＡＣアドレス復元処理（Ｓ２４０１）を行なう。この処理では、混成データ
からＭＡＣアドレスを復元し、復元したＭＡＣアドレスを復元ＭＡＣアドレス記憶部２３
０２に記憶させる。詳しくは、図２５を用いて詳述する。次に、ＭＡＣアドレス取得部２
３０３によるＭＡＣアドレス取得処理（Ｓ２４０２）で、例えばＮＥＴＢＩＯＳ（Ｎｅｔ
ｗｏｒｋ  ＢＩＯＳ）コマンドを用いてＭＡＣアドレスを取得して、取得ＭＡＣアドレス
記憶部２３０４に記憶させる。そして、ＭＡＣアドレス比較部２３０５によるＭＡＣアド
レス比較処理（Ｓ２４０３）で、復元ＭＡＣアドレス記憶部２３０２に記憶している復元
ＭＡＣアドレスと、取得ＭＡＣアドレス記憶部２３０４に記憶している取得ＭＡＣアドレ
スを比較する。一致する場合は、正当なアクセスであるので終了ステータスを正常として
終了する。一方、一致しない場合は、不正なアクセスであるので終了ステータスをエラー
として終了する。
【００５０】
前述のＭＡＣアドレス復元処理（Ｓ２４０１）について詳述する。図２５は、ＭＡＣア
ドレス復元処理フローを示す図である。まず、保存データファイルハンドルと所定の起点
アドレスとＭＡＣアドレスパーツブロックサイズを指定して、読み込みをデバイスドライ
バ４００に指示し、第一のＭＡＣアドレスパーツブロックを取得する（Ｓ２５０１）。例
えば、ファイルリードのファンクションと、保存データファイルハンドルと、起点アドレ
スと、ブロックサイズを含むパケットを生成し、そのパケットをデバイスドライバ４００
へ送り、所定のバッファからＭＡＣアドレスパーツブロックを読み込む。読み込んだＭＡ
Ｃアドレスパーツブロックから、ＭＡＣアドレスパーツを特定する（Ｓ２５０２）。そし
て、すべてのＭＡＣアドレスパーツを読み込むまで以下の処理を繰り返す（Ｓ２５０３）
。この処理で、ＭＡＣアドレスパーツ数の分のＭＡＣアドレスパーツブロックを読み込む
。先に読み込んだＭＡＣアドレスパーツブロックから、次パーツアドレスを特定し（Ｓ２
５０４）、保存データファイルハンドルと次パーツアドレスとＭＡＣアドレスパーツブロ
ックサイズを指定して、読み込みをデバイスドライバ４００に指示し、次のＭＡＣアドレ
スパーツブロックを読み込む（Ｓ２５０５）。例えば、ファイルリードのファンクション
と、保存データファイルハンドルと、次パーツアドレスと、ブロックサイズを含むパケッ
トを生成し、そのパケットをデバイスドライバ４００へ送り、所定のバッファからＭＡＣ
アドレスパーツブロックを読み込む。このようにして、ＭＡＣアドレスパーツを順に特定
し、特定したＭＡＣアドレスパーツ群を特定した順に配列して、ＭＡＣアドレスを生成す
る（Ｓ２５０６）。
【００５１】
前述のデータ復元部６７５によるデータ復元処理（Ｓ２２０４）について詳述する。図
２６は、データ復元部のモジュール構成を示す図である。データ復元部６７５は、暗号デ
ータ再現部２６０１、暗号データファイルハンドル記憶部２６０２、復号部２６０３、平
文データファイルハンドル記憶部２６０４、暗号データファイル消去部２６０５、平文デ
ータ複製部２６０６、及び平文データファイル消去部２６０７の要素を有している。また
、データ復元部６７５は、処理過程で一次的に暗号データファイル５０３と平文データフ
ァイル５０４を生成させる。
【００５２】
図２７は、データ復元処理フローを示す図である。暗号データ再現部２６０１による暗
号データ再現処理（Ｓ２７０１）を行なう。この処理では、保存データファイル５０１に
保持されている混成データから、暗号データを復元し、復元した暗号データを暗号データ
ファイル５０３に一時的に記憶させる。詳しくは、図２８を用いて詳述する。次に、復号
部２６０３による復号処理（Ｓ２７０２）を行なう。この処理では、暗号データファイル
５０３に保持している暗号データを復号し、復号した平分データを、平文データファイル
５０４に一次的に記憶させる。詳しくは、図３３を用いて詳述する。そして、暗号データ
ファイル消去部２６０５による暗号データファイル消去処理（Ｓ２７０３）で、一時的に
設けた暗号データファイル５０３を消去する。詳しくは、図３４を用いて詳述する。平文
データ複製部２６０６による平文データ複製処理（Ｓ２７０４）では、平文データファイ
ル５０４に一次的に保持している平分データを、保存データファイル５０１に上書きする
。つまり、混成データに代えて平分データを記憶させる（混成データから平文データに更
新する）。詳しくは、図３５を用いて詳述する。平文データファイル消去部２６０７によ
る平文データファイル消去処理（Ｓ２７０５）では、一時的に設けた平文データファイル
５０４を消去する。詳しくは、図３６を用いて詳述する。
【００５３】
図２７の暗号データ再現処理（Ｓ２７０１）について詳述する。図２８は、暗号データ
再現処理フローを示す図である。埋め込みアドレスソートテーブルの生成（Ｓ２８０１）
では、混成データに含まれるＭＡＣアドレスパーツブロックの埋め込みアドレスを昇順に
ソートした埋め込みアドレスソートテーブルを生成する。詳しくは、図２９を用いて後述
する。混成データブロックテーブルの生成（Ｓ２８０２）では、埋め込みアドレスソート
テーブルに基づいて、混成データ上の混成データブロックの配置を特定する混成データブ
ロックテーブルを生成する。詳しくは、図３１を用いて後述する。暗号データの生成（Ｓ
２８０３）では、混成データブロックテーブルに基づいて、混成データブロックを読み込
み、暗号データブロックとして保存データファイルに書き込む。詳しくは、図３２を用い
て後述する。
【００５４】
前述の埋め込みアドレスソートテーブルの生成（Ｓ２８０１）について詳述する。図２
９は、埋め込みアドレスソートテーブルの生成処理フローを示す図である。まず、所定の
起点アドレスを、埋め込みアドレスの一つとして記憶する（Ｓ２９０１）。次に、保存デ
ータファイルハンドルと所定の起点アドレスとＭＡＣアドレスパーツブロックサイズを指
定して、読み込みをデバイスドライバ４００に指示し、第一のＭＡＣアドレスパーツブロ
ックを読み込む（Ｓ２９０２）。読み込んだＭＡＣアドレスパーツブロックから、次パー
ツ埋め込みアドレスを特定し（Ｓ２９０３）、次パーツ埋め込みアドレスを、埋め込みア
ドレスの一つとして記憶する（Ｓ２９０４）。すべてのＭＡＣアドレスパーツブロックを
読み込むまでループ処理を継続し（Ｓ２９０５）、保存データファイルハンドルと次パー
ツ埋め込みアドレスとＭＡＣアドレスパーツブロックサイズを指定して、読み込みをデバ
イスドライバ４００に指示し、次のＭＡＣアドレスパーツブロックを読み込む（Ｓ２９０
６）。すべてのＭＡＣアドレスパーツブロックを読み込み、すべての埋め込みアドレスを
特定すると、特定した埋め込みアドレス群を昇順にソートする（Ｓ２９０７）。このよう
にして、埋め込みアドレスソートテーブルが得られる。図３０は、埋め込みアドレスソー
トテーブルの構成例を示す図である。埋め込みアドレスソートテーブル３０００は、デー
タ復元部６７５の内部の記憶領域に設けられる。
【００５５】
前述の混成データブロックテーブルの生成（Ｓ２８０２）について詳述する。図３１は
、混成データブロックテーブルの生成処理フローを示す図である。この処理では、埋め込
みアドレスソートテーブルに基づいて、前述の図１８と同様の混成データブロックテーブ
ル１８００を生成する。まず、第１の混成データブロックの開始アドレス（１８５１：１
８０１）を０とし（Ｓ３１０１）、順次埋め込みアドレスと混成データブロックについて
、以下の処理を繰り返す（Ｓ３１０２）。埋め込みアドレスから１を差し引いて、当該混
成データブロックの終了アドレス（１８０２）を算出する（Ｓ３１０３）。次に、埋め込
みアドレスにＭＡＣアドレスパーツブロックサイズ（この例では、８バイト）を加えて、
次の混成データブロックの開始アドレス１８０１を算出する（Ｓ３１０４）。すべての埋
め込みアドレスについて上述の処理を繰り返すと（Ｓ３１０５）、保存データファイルの
ファイルサイズを取得し（Ｓ３１０６）、ファイルサイズから１を差し引いて、最後の混
成データブロックの終了アドレスとする（Ｓ３１０７）。最後の混成データブロックの終
了アドレスは、ＥＯＦとしてもよい。ファイルサイズは、例えばファイル全体を読み込む
ことにより特定することができる。
【００５６】
前述の暗号データの生成（Ｓ２８０３）について詳述する。図３２は、暗号データの生
成処理フローを示す図である。まず、デバイスドライバ４００へ暗号データファイル名を
指定して、暗号データファイルオブジェクトのクリエイトを指示し、デバイスドライバ４
００から暗号データファイルのファイルハンドルを取得し、取得した暗号データファイル
ハンドルを暗号データファイルハンドル記憶部２６０２に記憶させる（Ｓ３２０１）。そ
して、混成データブロックテーブルに含まれる混成データブロックのレコード毎に以下の
処理を繰り返す（Ｓ３２０２）。保存データファイルハンドル記憶部６７３に記憶してい
る保存データファイルハンドルと混成データブロックの開始アドレスと終了アドレスを指
定して、読み込みをデバイスドライバ４００に指示し、混成データブロックを読み込む（
Ｓ３２０３）。例えば、ファイルリードのファンクションと、保存データファイルハンド
ルと、開始アドレスと、データサイズ（終了アドレス−開始アドレス＋１）を含むパケッ
トを生成し、そのパケットをデバイスドライバ４００へ送り、所定のバッファから混成デ
ータブロックを読み込む。そして、読み込んだ混成データブロックを、先頭から順に保存
データファイル５０１に暗号データブロックとして書き込む（Ｓ３２０４）。このとき、
暗号データファイルハンドルと暗号データブロックを書き込むアドレスを指定する。例え
ば、所定のバッファへ暗号データブロックを書き込み、ファイルライトのファンクション
と、暗号データファイルハンドルと、書き込むアドレスと、データサイズを含むパケット
を生成し、そのパケットをデバイスドライバ４００へ送る。暗号データブロックを書き込
むアドレスは、０から開始し、順次前回書き込んだ暗号データブロックのデータサイズを
加えることにより求めることができる。すべてのデータブロックについて処理した時点で
終了する（Ｓ３２０５）。これにより、暗号データブロックを連結する。
【００５７】
前述の復号処理（Ｓ２７０２）について詳述する。図３３は、復号処理フローを示す図
である。まず、デバイスドライバ４００へ平文データファイル名を指定して、平文データ
ファイルオブジェクトのクリエイトを指示し、デバイスドライバ４００から平文データフ
ァイルのファイルハンドルを取得する。例えば、ファイルオープン（または、ファイルク
リエイト）のファンクションと、所定の平文データファイル名を含むパケットを生成し、
デバイスドライバ４００へ送る。そして、取得した平文データファイルハンドルを平文デ
ータファイルハンドル記憶部２６０４に記憶させる（Ｓ３３０１）。次に、暗号データフ
ァイルハンドル記憶部２６０２に記憶している暗号データファイルハンドルを指定して、
暗号データの全体の読み込みをデバイスドライバ４００に指示し、暗号データ全体を取得
する（Ｓ３３０２）。取得した暗号データ全体を復号し、平文データを生成する（Ｓ３３
０３）。最後に、平文データファイルハンドル記憶部２６０４に記憶している平文データ
ファイルハンドルを指定して、平文データ全体の書き込みをデバイスドライバ４００に指
示する（Ｓ３３０４）。例えば、所定のバッファへ平文データを書き込み、ファイルライ
トのファンクションと、平文データファイルハンドルと、書き込むアドレスと、データサ
イズを含むパケットを生成し、そのパケットをデバイスドライバ４００へ送る。
【００５８】
前述の暗号データファイル消去処理（Ｓ２７０３）について詳述する。図３４は、暗号
データファイル消去処理フローを示す図である。暗号データファイルハンドル記憶部２６
０２に記憶している暗号データファイルハンドルを指定して、暗号データファイルオブジ
ェクトのクローズをデバイスドライバ４００に指示し（Ｓ３４０１）、更に同じく暗号デ
ータファイルハンドルを指定して、暗号データファイルオブジェクトのデリートをデバイ
スドライバ４００に指示する（Ｓ３４０２）。
【００５９】
前述の平文データ複製処理（Ｓ２７０４）について詳述する。図３５は、平文データ複
製処理フローを示す図である。平文データファイルハンドル記憶部２６０４に記憶してい
る平文データファイルハンドルを指定して、平文データファイルオブジェクトからの平文
データ全体の読み込みを指示し、平文データ全体を取得する（Ｓ３５０１）。そして、デ
バイスドライバ４００へ、保存データファイルハンドル記憶部６７３に記憶している保存
データファイルハンドルを指定して、保存データファイルオブジェクトへの平文データ全
体の書き込みを指示する（Ｓ３５０２）。
【００６０】
前述の平文データファイル消去処理（Ｓ２７０５）について詳述する。図３６は、平文
データファイル消去処理フローを示す図である。平文データファイルハンドル記憶部２６
０４に記憶している平文データファイルハンドルを指定して、デバイスドライバ４００へ
平文データファイルオブジェクトのクローズを指示する（Ｓ３６０１）。例えば、ファイ
ルクローズのファンクションと、平文データファイルハンドルを含むパケットを生成し、
そのパケットをデバイスドライバ４００へ送る。更に同じく平文データファイルハンドル
を指定して、デバイスドライバ４００へ平文データファイルオブジェクトのデリートを指
示する（Ｓ３６０２）。例えば、ファイルデリートのファンクションと、平文データファ
イルハンドルを含むパケットを生成し、そのパケットをデバイスドライバ４００へ送る。
実施の形態２．
ＭＡＣアドレスを分割せずに、ＭＡＣアドレス全体を含む単一のブロックを混成データ
に含めてもよい。その場合、混成データブロックの決定（Ｓ１３０１）では、第１と第２
の暗号データブロックのみを決定する。また、ＭＡＣアドレスパーツブロックを１つとみ
なして、混成データの配置の決定（Ｓ１３０２）及び混成データの書き込み（Ｓ１３０３
）の処理を行なう。
【００６１】
この形態の場合、ＭＡＣアドレスパーツブロックに相当するブロックにはＭＡＣアドレ
ス全体が含まれるので、ＭＡＣアドレスブロックと呼ぶことができる。次パーツ埋め込み
アドレスは、不要となる。
【００６２】
ＭＡＣアドレス復元処理（Ｓ２４０１）では、所定の起点アドレスからＭＡＣアドレス
全体を読み取る。暗号データ再現処理（Ｓ２７０１）では、第１と第２の暗号データブロ
ックを連結して暗号データを再現する。
実施の形態３．
ＭＡＣアドレスを暗号化した上で、混成データに含めることも有効である。
【００６３】
図９のＭＡＣアドレス取得処理（Ｓ９０２）の次に、取得したＭＡＣアドレスを暗号化
する処理を行なうＭＡＣアドレス暗号化部を設ける。データ混成処理（Ｓ９０３）では、
暗号化されたＭＡＣアドレスをパーツに分けて、前述と同様の動作を行なう。
【００６４】
図２４のＭＡＣアドレス復元処理（Ｓ２４０１）の最後、つまり図２５のＳ２５０６の
後に、生成したＭＡＣアドレスを復号する処理を行なう。
【００６５】
実施の形態２に対して、本形態のＭＡＣアドレスの暗号化と復号を施してもよい。
【００６６】
ＭＡＣアドレスも暗号化することにより、ＭＡＣアドレスのかいざんによる成りすまし
を防止できる。
実施の形態４．
上述のＭＡＣアドレスは、ネットワーク機器の個体情報であり、コンピュータ固有情報
の例である。ＭＡＣアドレスパーツ、ＭＡＣアドレスパーツブロック、ＭＡＣアドレスパ
ーツブロックテーブル、ＭＡＣアドレス取得部、取得ＭＡＣアドレス記憶部、ＭＡＣアド
レス復元部、復元ＭＡＣアドレス記憶部、及びＭＡＣアドレス比較部は、それぞれコンピ
ュータ固有情報パーツ、コンピュータ固有情報パーツブロック、コンピュータ固有情報パ
ーツブロックテーブル、コンピュータ固有情報取得部、取得コンピュータ固有情報記憶部
、コンピュータ固有情報復元部、復元コンピュータ固有情報記憶部、及びコンピュータ固
有情報比較部の例である。コンピュータ固有情報として、例えばディスクドライブ等で保
持する個体情報や、チップ等の回路で保持する個体情報や、増設ボード等で保持する個体
情報を用いてもよい。コンピュータ固有情報取得部では、これらディスクドライブ、チッ
プ、あるいは増設ボードなど当該コンピュータに含まれるハードウエアモジュールから個
体情報を、コンピュータ固有情報として取得するように動作する。
【００６７】
上述の動作モジュール要素はプログラムにより処理を実行することができる。また、プ
ログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにするこ
とができる。
【００６８】
図３７は、コンピュータのハードウエア構成を示す図である。バスに、演算装置３７０
１、データ記憶装置３７０２、メモリ３７０３、通信インターフェース（ネットワークカ
ード）３７０４が接続されている。データ記憶装置３７０２は、例えばＲＯＭ（Ｒｅａｄ
Ｏｎｌｙ  Ｍｅｍｏｒｙ）やハードディスクである。メモリ３７０３は、通常ＲＡＭ（
Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。プログラムは、通常データ記憶装
置３７０２に記憶されており、メモリ３７０３にロードされた状態で、順次演算装置３７
０１に読み込まれ処理を行う。通信インターフェース（ネットワークカード）３７０４に
は、ＭＡＣアドレスが記憶されており、演算装置３７０１はバスを介してこのＭＡＣアド
レスを取得できるように構成されている。
【図面の簡単な説明】
【００６９】
【図１】本発明に係るデータの構造を示す図である。
【図２】ＭＡＣアドレスパーツブロックの構成例を示す図である。
【図３】フィルタドライバの構成を示す図である。
【図４】フィルタドライバの処理フローを示す図である。
【図５】新規ファイルオープンのデータフローを示す図である。
【図６】ファイルライトのデータフローを示す図である。
【図７】ファイルリードのデータフローを示す図である。
【図８】ファイルクローズのモジュール構成とデータフローを示す図である。
【図９】フィルタドライバのファイルクローズ処理フローを示す図である。
【図１０】データ混成部のモジュール構成を示す図である。
【図１１】データ混成処理フローを示す図である。
【図１２】暗号化処理フローを示す図である。
【図１３】データレイアウト処理フローを示す図である。
【図１４】暗号データブロックの決定処理フローを示す図である。
【図１５】暗号データブロックテーブルの構成例を示す図である。
【図１６】混成データの配置の決定処理フローを示す図である。
【図１７】ＭＡＣアドレスパーツブロックテーブルの構成例を示す図である。
【図１８】混成データブロックテーブルの構成例を示す図である。
【図１９】混成データの書き込み処理フローを示す図である。
【図２０】暗号データファイル消去処理フローを示す図である。
【図２１】既存ファイルオープンのモジュール構成とデータフローを示す図である。
【図２２】フィルタドライバの既存ファイルオープン処理フローを示す図である。
【図２３】ＭＡＣアドレス検証部のモジュール構成を示す図である。
【図２４】ＭＡＣアドレス検証処理フローを示す図である。
【図２５】ＭＡＣアドレス復元処理フローを示す図である。
【図２６】データ復元部のモジュール構成を示す図である。
【図２７】データ復元処理フローを示す図である。
【図２８】暗号データ再現処理フローを示す図である。
【図２９】埋め込みアドレスソートテーブルの生成処理フローを示す図である。
【図３０】埋め込みアドレスソートテーブルの構成例を示す図である。
【図３１】混成データブロックテーブルの生成処理フローを示す図である。
【図３２】暗号データの生成処理フローを示す図である。
【図３３】復号処理フローを示す図である。
【図３４】暗号データファイル消去処理フローを示す図である。
【図３５】平文データ複製処理フローを示す図である。
【図３６】平文データファイル消去処理フローを示す図である。
【図３７】コンピュータのハードウエア構成を示す図である。
【符号の説明】
【００７０】
１００  平文データ、１１０  暗号データ、１２０  ＭＡＣアドレス、１３０  混成デ
ータ、１１１〜１１７  暗号データブロック、１３１〜１３７  混成データブロック、１
４１〜１４７  ＭＡＣアドレスパーツブロック、２００  ＭＡＣアドレスパーツブロック
、２０１  ＭＡＣアドレスパーツ、２０２  次パーツ埋め込みアドレス、２０３  予備領
域、３００  Ｉ／Ｏマネージャ、４００  デバイスドライバ、５００  ＨＤＤデバイス、
５０１  保存データファイル、５０２  暗号データファイル、５０３  暗号データファイ
ル、５０４  平文データファイル、６１０  パケット受信部、６２０  ファンクション判
定部、６３０  新規ファイルオープン処理部、６４０  ファイルライト処理部、６５０  
ファイルリード処理部、６６０  ファイルクローズ処理部、  ６６１パラメータ入力部、
６６２  ＭＡＣアドレス取得部、６６３  取得ＭＡＣアドレス記憶部、６６４  データ混
成部、６６５  ファイルオブジェクトクローズ部、６６６  リターン値出力部、６７０  
既存ファイルオープン処理部、６７１  パラメータ入力部、６７２  ファイルオブジェク
トオープン部、６７３  保存データファイルハンドル記憶部、６７４  ＭＡＣアドレス検
証部、６７５  データ復元部、６７６  パラメータ出力部、６７７  ファイルオブジェク
トクローズ部、６７８  エラー結果出力部、１００１  暗号化部、１００２  暗号データ
ファイルハンドル記憶部、１００３  データレイアウト部、１００４  暗号データファイ
ル消去部、１５００  暗号データブロックテーブル、１５０１  暗号データブロックの開
始アドレス、１５０２  暗号データブロックの終了アドレス、１７００  ＭＡＣアドレス
パーツブロックテーブル、１７０１  ＭＡＣアドレスパーツ、１７０２  埋め込みアドレ
ス、１８００  混成データブロックテーブル、１８０１  混成データブロックの開始アド
レス、１８０２  混成データブロックの終了アドレス、２３０１  ＭＡＣアドレス復元部
、２３０２  復元ＭＡＣアドレス記憶部、２３０３  ＭＡＣアドレス取得部、２３０４  
取得ＭＡＣアドレス記憶部、２３０５  ＭＡＣアドレス比較部、２６０１  暗号データ再
現部、２６０２  暗号データファイルハンドル記憶部、２６０３  復号部、２６０４  平
文データファイルハンドル記憶部、２６０５  暗号データファイル消去部、２６０６  平
文データ複製部、２６０７  平文データファイル消去部、３０００  Ｉ／Ｏマネージャ、
３７０１  演算装置、３７０２  データ記憶装置、３７０３  メモリ、３７０４  通信イ
ンターフェース（ネットワークカード）。
【図１】
2006338136.tif 000003
【図２】
2006338136.tif 000004
【図３】
2006338136.tif 000005
【図４】
2006338136.tif 000006
【図５】
2006338136.tif 000007
【図６】
2006338136.tif 000008
【図７】
2006338136.tif 000009
【図８】
2006338136.tif 000010
【図９】
2006338136.tif 000011
【図１０】
2006338136.tif 000012
【図１１】
2006338136.tif 000013
【図１２】
2006338136.tif 000014
【図１３】
2006338136.tif 000015
【図１４】
2006338136.tif 000016
【図１５】
2006338136.tif 000017
【図１６】
2006338136.tif 000018
【図１７】
2006338136.tif 000019
【図１８】
2006338136.tif 000020
【図１９】
2006338136.tif 000021
【図２０】
2006338136.tif 000022
【図２１】
2006338136.tif 000023
【図２２】
2006338136.tif 000024
【図２３】
2006338136.tif 000025
【図２４】
2006338136.tif 000026
【図２５】
2006338136.tif 000027
【図２６】
2006338136.tif 000028
【図２７】
2006338136.tif 000029
【図２８】
2006338136.tif 000030
【図２９】
2006338136.tif 000031
【図３０】
2006338136.tif 000032
【図３１】
2006338136.tif 000033
【図３２】
2006338136.tif 000034
【図３３】
2006338136.tif 000035
【図３４】
2006338136.tif 000036
【図３５】
2006338136.tif 000037
【図３６】
2006338136.tif 000038
【図３７】
2006338136.tif 000039