説明

ファイル管理システム

【課題】アプリケーション・プログラムを改変せずに、暗号化ファイルの操作を、ファイル単位で行う。
【解決手段】アプリケーションプログラム32は、ファイルを操作するためのAPI呼出コード321を備える。監視層34は、アプリケーションプログラム32からのAPI呼び出しをフックし、暗号化ファイル14を復号化するための復号命令を復号制御モジュール36に送る。復号制御モジュール36は、監視層34から送られた復号命令に基づいて、OSカーネル37に復号処理を依頼する。OSカーネル37は、復号制御モジュール36からの依頼に基づいて、ファイル14を復号処理して、復号済みファイルを生成し、さらに、この復号済みファイルを復号制御モジュール36に返す。さらに、復号制御モジュール36は、OSカーネル37から返された復号済みファイルをアプリケーションプログラム32に返す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化されたファイルをコンピュータにより安全に操作するための技術に関するものである。
【背景技術】
【0002】
情報共有のために、文書や画像、動画などのデータを関係者のみが安全に閲覧したいという要望がある。
【0003】
このような情報を保護するためには、データに対して暗号化処理を施し、権利のある人のみが復号用の鍵を取得して閲覧するという対応方法がある。そのためには、従来、暗号化されたデータを復号する処理をアプリケーション・プログラム(以下「アプリケーション」ということがある)に組み込むことで対応していた。この場合は、アプリケーションを起動すると、そこに組み込まれた復号化処理によってデータを復号して、アプリケーションによる処理(例えばファイルを開いたり印刷する等)が可能になる。
【0004】
一方、アプリケーションによっては、改変が困難な場合が存在する。この場合は、ユーザ自身が、別のアプリケーションを用いて、暗号化ファイルの復号処理を行う必要がある。この方法によっても、復号されたファイルを当初のアプリケーションで利用することが可能である。しかしながら、この場合は、復号済みのデータが流出したり、改ざんされる危険があるという問題があった。また、このような処理は、ユーザの手間が非常にかかるという問題もあった。
【0005】
さらに、データを保存するためのHDD(ハードディスクドライブ)全体を暗号化するというソリューションも存在する。この場合では、ユーザがデータを利用する時には、HDDに記録された全てのデータファイルが復号化された状態となる。つまり、この状態では、全てのファイルに対する操作が可能となる。すると、この技術においては、ファイル交換ソフトの利用などに起因して、復号済みのデータファイルが外部に流出するという問題を生じる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明は、前記した状況に鑑みてなされたものである。本発明は、アプリケーション・プログラムを改変せずに、暗号化ファイルの操作を、ファイル単位で行うことができる技術を提供するものである。
【課題を解決するための手段】
【0007】
前記した課題を解決するために、本発明は、以下のいずれかの項目に記載される構成を備えている。
【0008】
(項目1)
以下の(a)〜(d)を備えるファイル管理システム:
(a)アプリケーションプログラム、
(b)監視層、
(c)復号制御モジュール、
(d)OSカーネル、
ここで、
前記アプリケーションプログラムは、ファイルを操作するためのAPI呼出コードを備えており、
前記監視層は、前記アプリケーションプログラムからのAPI呼び出しをフックし、前記ファイルを復号化するための復号命令を前記復号制御モジュールに送るようになっており、
前記復号制御モジュールは、前記監視層から送られた前記復号命令に基づいて、OSカーネルに復号処理を依頼するようになっており、
前記OSカーネルは、前記復号制御モジュールからの依頼に基づいて、前記ファイルを復号処理して、復号済みファイルを生成し、さらに、この復号済みファイルを復号制御モジュールに返すようになっており、
さらに、前記復号制御モジュールは、前記OSカーネルから返された前記復号済みファイルを前記アプリケーションプログラムに返す構成となっている。
【0009】
本発明によれば、ファイル操作のためのAPI呼出コードをフックして、当該ファイルを復号し、アプリケーションプログラムに返すことができる。本発明では、API呼出コードを操作するだけなので、アプリケーションプログラム本体を改変する必要がない。また、操作が必要なファイル毎に復号しているので、HDD全体を復号する場合に比べて、情報漏洩の危険性が低い。なお、本発明において、復号されるファイルとは、ファイル中の一部のデータである場合を含む。つまり、ファイル単位の復号とは、必ずしも、ファイル全部の復号を意味せず、ファイル中における必要なデータのみの復号を含む。
【0010】
(項目2)
さらに、
(e)監視制御モジュール、
を備えた、項目1に記載のファイル管理システムであって、
前記監視制御モジュールは、前記アプリケーションプログラムが備えている前記API呼出コードを書き換えることにより、前記アプリケーションプログラムからのAPI呼び出しをフックできる構成となっている。
【0011】
このようにAPI呼出コードを書き換えることにより、API呼出コードのフックを簡便かつ確実に実装できる。
【0012】
(項目3)
さらに、
(f)二次記憶装置
を備えた、項目1又は2に記載のファイル管理システムであって、
前記二次記憶装置は、暗号化された前記ファイルを格納している。
【0013】
(項目4)
さらに、
(g)鍵送信サーバ
を備えた、項目1〜3のいずれか1項に記載のファイル管理システムであって、
前記復号制御モジュールは、前記鍵送信サーバから受け取った鍵を用いて、前記復号処理を行う構成となっている、項目1〜3のいずれか1項に記載のファイル管理システム。
【0014】
(項目5)
前記API呼出コードは、ファイルを開くためのものである、項目1〜4のいずれか1項に記載のファイル管理システム。
【0015】
(項目6)
前記API呼出コードは、さらに、ファイルの印刷を行うためのものを含む、項目5に記載のファイル管理システム。
【0016】
(項目7)
さらに、
(h)暗号処理モジュール
を備えた、項目1〜6に記載のファイル管理システムであって、
前記監視層は、前記フックしたAPI呼び出しに基づいて、暗号化命令を、前記暗号処理モジュールに送るようになっており、
前記暗号処理モジュールは、前記暗号化命令を受け取った後、前記アプリケーションプログラムの動作に必要なデータを、暗号化した上でテンポラリファイルに書き出す処理を行う構成となっている。
【0017】
(項目8)
以下の(a)〜(d)を備えるファイル管理システムを用いた、ファイル管理方法:
(a)アプリケーションプログラム、
(b)監視層、
(c)復号制御モジュール、
(d)OSカーネル、
ここで、
前記アプリケーションプログラムは、ファイルを操作するためのAPI呼出コードを備えている;
この方法は、以下のステップを備える:
前記監視層が、前記アプリケーションプログラムからのAPI呼び出しをフックし、前記ファイルを復号化するための復号命令を前記復号制御モジュールに送るステップ、
前記復号制御モジュールが、前記監視層から送られた復号命令に基づいて、OSカーネルに復号処理を依頼するステップ、
前記OSカーネルが、前記復号制御モジュールからの依頼に基づいて、前記ファイルを復号処理して、復号済みファイルを生成し、さらに、この復号済みファイルを復号制御モジュールに返すステップ、
さらに、前記復号制御モジュールが、前記OSカーネルから返された前記復号済みファイルを前記アプリケーションプログラムに返すステップ。
【0018】
(項目9)
項目8に記載の方法をコンピュータに実行させるためのコンピュータプログラム。
【発明の効果】
【0019】
本発明によれば、本発明は、アプリケーション・プログラムを改変せずに、暗号化ファイルの操作を、ファイル単位で行うことが可能になる。
【発明を実施するための最良の形態】
【0020】
以下、本発明の一実施形態を、添付図面を参照して説明する。
【0021】
(システムの構成例)
まず、本発明の一実施形態に係るファイル管理システムを、図1に基づいて説明する。このシステムは、コンテンツ提供者の内部環境1と、公開サーバ環境2と、ユーザコンピュータ3と、インターネット4とを、機能要素として備えている。
【0022】
(内部環境)
内部環境1は、コンテンツ暗号化システム11と、コンテンツ用ストレージ12とを備えている。
【0023】
コンテンツ暗号化システム11は、コンテンツファイル13を暗号化するものである。また、コンテンツ暗号化システム11は、コンテンツIDと復号鍵とを生成して、公開サーバ環境2に送るようになっている。ここで、コンテンツファイル13としては、文書、画像、動画、実行ファイルなど、各種のものが利用できる。つまり、本実施形態のシステムで対象となるファイルの形式は制約されない。
【0024】
また、コンテンツ暗号化システム11は、暗号化されたコンテンツファイル14を、ストレージ12に格納するようになっている。
【0025】
コンテンツ用ストレージ12は、暗号化されたコンテンツファイル14を、公開サーバ環境2に受け渡すことができるようになっている。
【0026】
(公開サーバ環境)
公開サーバ環境2は、コンテンツ配布サーバ21と、鍵送信サーバ22と、鍵記録用のストレージ23とを備えている。
【0027】
コンテンツ配布サーバ21は、コンテンツ用ストレージ12から、暗号化されたファイル14を受け取り、インターネット4を経由して、ユーザコンピュータ3に送るようになっている。
【0028】
鍵送信サーバ22は、コンテンツ暗号化システム11から、コンテンツIDと復号鍵とを受け取り、ユーザコンピュータ3に送ることができるようになっている。
【0029】
鍵記録用のストレージ23は、鍵送信サーバ22が受け取ったコンテンツIDと復号鍵とを対応させて、保存しておくものである。
【0030】
(ユーザコンピュータ)
ユーザコンピュータ3は、コンテンツダウンローダ31と、アプリケーションプログラム(アプリケーション)32と、監視制御モジュール33と、監視層34と、標準API35と、復号制御/暗号処理モジュール36と、OSカーネル37と、デバイスドライバ38と、二次記憶装置39とを備えている。
【0031】
コンテンツダウンローダ31は、コンテンツ配布サーバ21から、インターネット4を介して、暗号化されたコンテンツファイル14を受け取るものである。このような機能は、ブラウザなど適宜のコンピュータソフトウエアにより提供することができる。ただし、ユーザコンピュータ3がコンテンツファイル14を受け取る手段としては、インターネット経由に限らず、例えば、CDやDVDなどの媒体経由であってもよい。この場合は、コンテンツダウンローダ31に代えて、記録媒体の読み出し装置を用いることができる。
【0032】
アプリケーションプログラム32は、ファイル操作や印刷などの機能を実行するためのコンピュータソフトウエアである。この実施形態では、アプリケーションプログラム32として、各種のビューアアプリケーションを想定しているが、これのみに制約されるものではない。アプリケーションプログラム32の例としては、インターネット・エクスプローラー、Flashプレイヤー、PDFビューア、MS-Officeなどである。なお、これらは商標あるいは登録商標である。アプリケーションプログラム32は、ファイルを操作するためのAPI呼出コード321(図2参照)を備えている。
【0033】
監視制御モジュール33は、アプリケーションプログラム32におけるAPI呼出コードを書き換えることにより、APIフックを実現する機能を有するコンピュータプログラムである。
【0034】
さらに、監視制御モジュール33は、ユーザ側から、
・復号許可アプリケーション
・暗号化書き出し可能フォルダ
・アプリケーションによる印刷の制限
・画面キャプチャの制限
についてのデータを受け付けるようになっている。
【0035】
監視制御モジュール33についての詳しい動作は後述する。
【0036】
監視層34は、アプリケーションプログラム32からのAPI呼び出しをフックし、ファイルを復号するための復号命令を復号制御モジュール36に送るようになっている。なお、本実施形態では、ファイル中のデータの復号も、ファイルの復号という概念に含まれるものとする。もちろん、ファイル全体を復号することも可能である。また、アプリケーションプログラム32からのAPI呼び出しの結果として複数のファイルを復号することも可能である。監視層34についても詳しい動作は後述する。
【0037】
標準API35は、OS(例えばWindows(登録商標))に付随して備えられた、標準的なAPI群である。このようなAPIは既によく知られているので、詳しい説明は省略する。
【0038】
復号制御/暗号処理モジュール36は、復号制御モジュールと、暗号制御モジュールとが組み合わされた機能ブロックである。実際のプログラムコードとしては、両モジュールが一体のファイルになっていてもよいし、別のファイルであってもよい。要するに両方の機能を発揮できる構成であればよい。
【0039】
復号制御/暗号処理モジュール36は、復号制御の機能として、監視層34から送られた復号命令に基づいて、OSカーネル37に復号処理を依頼するようになっている。さらに、復号制御/暗号処理モジュール36は、OSカーネル37から返された復号済みファイルをアプリケーションプログラム32に返す構成となっている。
【0040】
また、復号制御/暗号処理モジュール36は、暗号処理の機能として、監視層34から暗号化命令を受け取った後、アプリケーションプログラムの動作に必要なデータを、暗号化した上でテンポラリファイルに書き出す処理を行う構成となっている。
【0041】
復号制御/暗号処理モジュール36の詳しい動作も後述する。
【0042】
OSカーネル37は、復号制御モジュール36からの依頼に基づいて、ファイルから必要な部分のデータを逐次復号処理し、その結果を復号制御モジュール36に返すようになっている。
【0043】
(本実施形態に係るファイル管理方法)
次に、前記したシステムを用いたファイル管理方法の一例を、図2〜図6に基づいて説明する。なお、以下に説明する方法は、コンピュータを動作させるためのコンピュータプログラムにより実行することができる。
【0044】
(図2のステップ0)
まず、ユーザの操作により、
・対象復号許可アプリケーション(具体的にはそのバイナリハッシュ値)、
・暗号化書き出し可能フォルダ、
・印刷およびキャプチャに対する制限の有効、無効
という情報を、一覧のリスト331として、制御監視モジュール33に登録する。この登録は、アプリケーションの動作前に行われる。
【0045】
ここで、「対象復号許可アプリケーション」とは、復号処理が許可されているアプリケーションである。この情報は、アプリケーションのバイナリハッシュ値を用いて記録されている。アプリケーションの情報としては、例えば、アプリケーションの名称やバイナリパスも可能であるが、これらは一般に環境依存なので、本実施形態では使用しない。つまり、アプリケーションをそのバイナリハッシュ値で特定することにより、環境依存性を低減させることができる。。ここでバイナリハッシュ値とは、アプリケーションのファイル(実行ファイル)から、適宜なハッシュ関数を用いて生成されたハッシュ値である。
【0046】
「暗号化書き出し可能フォルダ」とは、後述する暗号化書き出し処理において使用されるフォルダの情報である。この実施形態では、二次記憶装置39におけるフォルダであるが、他の適宜な記憶装置におけるフォルダであってもよい。
【0047】
「印刷およびキャプチャに対する制限の有効、無効」とは、当該アプリケーションによる印刷や、システムによる画面キャプチャを許すかどうかの情報である。以下の例では、キャプチャに対する制限は有効として説明する。制限が無効であれば、キャプチャに対する制限は行われない。
【0048】
(図2のステップ1)
監視制御モジュール33は、開くべきファイルに対応した復号許可アプリケーション32を起動する。具体的には、例えば、開くべきファイル(暗号化されたファイル)と復号許可アプリケーションとを関連付けておき、ファイルがダブルクリックされると、復号許可アプリケーション32を起動するようになっている。このような関連付けは、OSでのサービスを利用することで容易に実現できる。
【0049】
さらに、監視制御モジュール33は、復号許可アプリケーション32の起動時に、この復号許可アプリケーション32が改ざんされていないかを、ハッシュ値を元にチェックする。また、同時に、ハッシュ値を用いることで、一覧リスト331に登録されている復号許可アプリケーション32の特定も可能である。チェックの結果、問題がない場合のみ、復号許可アプリケーション32を起動する。また、一覧リスト331に登録されていないアプリケーションや、ハッシュ値があわないアプリケーションは起動しない。
【0050】
また、アプリケーション32を起動した後は、監視制御モジュール33はデスクトップ全体のイベントを監視し、画面キャプチャイベントが発生した場合はエラーを返す。
【0051】
さらに、監視制御モジュール33は、アプリケーション32が起動した後、メモリ上のアプリーション・コードをチェックする。具体的には、監視制御モジュール33は、起動したアプリケーション32が、リスト331に記録されている復号処理アプリケーションである場合に、そのアプリケーションにおけるファイル操作API呼出コードおよび印刷操作API呼出コードを、監視層34のコードを呼び出すように書き換える。ここで、起動したアプリケーションが、復号処理アプリケーションではない場合、このようなAPIの書き換えは行われない。このため、本実施形態によれば、復号処理アプリケーション以外のアプリケーションは、監視層34を呼び出すことができない。その結果、そのようなアプリケーションによる、暗号化ファイルの復号を防ぐことができ、暗号化ファイルへの不正なアクセスを防止できるという利点がある。
【0052】
(図2のステップ2)
ついで、アプリケーション32がAPI呼出を行う。ここで、API呼出コードが、ファイル操作又は印刷操作の場合は、前記したステップ1においてコードが書き換えられているので、実際には、監視層34が呼び出される。この例では、ファイル操作のAPIとは、ファイルを開くためのAPIである。
【0053】
監視層34は、書き換えられたコードを読み取ることにより、アプリケーション32からの要求が印刷操作であるか、あるいはファイル操作であるかをチェックする。
【0054】
印刷操作の場合は、印刷が許可されているアプリケーション32からの呼び出しであれば、そのまま標準の印刷用APIを呼び出す。これにより、ファイルの印刷が可能である。ここで、印刷の前提としては、後述するファイル操作により、ファイルが既に開かれているものとする。一方、印刷が不許可とされているアプリケーション32からの呼び出しの場合は、エラーをアプリケーション32に返すことで印刷を禁止することができる。
【0055】
(図2のステップ3)
ファイル操作のAPIである場合は、監視層34は、書き換えられる前のAPI呼出のパラメータをチェックし、実際に復号処理または暗号化書き出しが必要かどうかを判断する(暗号化書き出しについては後述する)。例えばファイルをオープンするAPIの場合、APIのパラメータにファイルのアクセス方式が指定されている。アクセス方式の指定は、以下の種類がある。
・読み込みのみ
・書き込みのみ
・読み書き
・読み書きなし(ファイル属性取得のために利用される)
【0056】
パラメータが「読み書きなし」の場合は、暗号関連の処理(復号を含む)は一切行わず、監視層34は、標準APIの呼び出しを行う。「読み込みのみ」を指定している場合は、復号のための処理を行う。
【0057】
パラメータが「書き込みのみ」、後述する暗号化書き込みのための処理を行う。パラメータが「読み書き」を指定している場合は、復号及び暗号化書き込みのための処理を行う。
【0058】
パラメータに基づいて復号処理または暗号化書き出しが必要である場合、監視層34は、復号制御/暗号処理モジュール36を呼び出す。つまり、監視層34は、暗号化ファイルから処理に必要なデータを復号するための復号命令を、復号制御/暗号処理モジュール36に送る。
【0059】
(図2のステップ4〜9)
ついで、復号制御/暗号処理モジュール36は、監視層34からの復号命令に基づいて、OSカーネル37を呼び出す。OSカーネル37は、暗号化コンテンツ14(復号対象となるファイル)を、デバイスドライバ38を介して、二次記憶装置39から取得する。また、復号制御/暗号処理モジュール36は、暗号化コンテンツ14に埋め込まれたコンテンツIDを取得する。
【0060】
ここで、復号制御/暗号処理モジュール36は、「監視制御モジュール33から起動されたアプリケーションから呼び出される監視層34」とのみ通信を行う。監視層34と監視制御モジュール33は、アプリケーション起動時に個別の通信路(パイプ)を用いて接続されており、この通信路を用いてのみ、相互間の通信を行う。監視層34は、DLLとして実装できるので、この監視層34を不正に組み込むアプリケーションも予想できる。しかし、監視制御モジュール33から起動されていない(つまり復号許可アプリケーションでない)他のアプリケーションに仮に監視層(DLL)を組み込んでも、その監視層は、上記理由により、復号制御/暗号処理モジュール36との通信ができない。このため、本実施形態によれば、監視層34を不正利用されることはない。
【0061】
ついで、復号制御/暗号処理モジュール36は、取得したコンテンツIDに対応した復号鍵を、鍵送信サーバ22から送られた復号鍵表231とマッチングすることにより取得する。この実施形態では、復号処理/暗号処理モジュール36は、鍵送信サーバ22から、セキュアな手順を用いて、復号鍵を取得することができる。また、復号鍵を、インターネット以外の他の手段で(例えば記録媒体を介して)取得することも可能である。
【0062】
(図2のステップ11)
復号制御/暗号処理モジュール36は、復号対象データと復号鍵とを、OSカーネル37の復号機能を呼び出すことによって復号する。つまり、OSカーネル37は、復号制御モジュール36からの依頼に基づいて、ファイル14から処理に必要なデータを逐次復号処理して(いわゆる「on-the-fly」)、復号済みデータを生成し、さらに、この復号済みデータを復号制御モジュール36に返すようになっている。また、このモジュール36は、復号した結果を監視層34に返す。このように、本実施形態では、復号を、ファイル中のデータブロックの単位で行っている。これにより、本実施形態によれば、ファイル中において必要な部分のみを復号することができる。
【0063】
(図2のステップ12)
監視層34は、復号した結果(つまり復号化したファイル)を、アプリケーション32に対して、API呼び出しの結果として返す。これによりアプリケーション32は、安全にファイルの内容を取得することができる。したがって、ユーザは、アプリケーション32により、暗号化されたファイルを開いて、ディスプレイ装置により閲覧することができる。
【0064】
本実施形態の方法によれば、ファイル単位で、暗号化されたファイルを開いたり、印刷する等の処理を行うことができる。HDD全体を復号してファイルを処理する方法では、ファイル交換ソフトウエアなどによってファイルが流出するおそれがあった。これに対して、本実施形態の方法では、ファイル単位で復号するので、そのような心配がなく、ファイルの安全性を高めることができる。
【0065】
さらに、本実施形態の方法では、プログラムに対する改変を行うことなく、API呼出コードの書き換えだけで、前記したような復号処理が可能になる。このため多様なプログラムに対応することができる。また、取り扱うファイルの種類に制約がないという利点がある。
【0066】
(一時的なファイルの書き出し処理)
つぎに、復号化されたファイル中のデータを一時的に書き出すための手順を、図3をさらに参照して説明する。ただし、前記した処理と同様の処理については、説明を省略あるいは簡略化する。
【0067】
(図3のステップ0)
まず、ユーザは、復号許可アプリケーション及び暗号化書き出し可能フォルダを一覧リストに事前に登録する。これは図2におけるステップ0と同様である。
【0068】
(図3のステップ1)
さらに、監視制御モジュール33は、アプリケーション実行時に、メモリ上のアプリーション・コードをチェックする。さらに監視制御モジュール33は、復号処理又は暗号化書き出しが必要となる一覧リストに登録されているアプリケーションにおける、ファイル操作用のAPI呼出コードを、監視層34のコードを呼び出すように書き換える。この操作は、図2のステップ1と基本的に同様である。ただし、図3の例では、コードが書き換えられた結果、呼び出されるようになった監視層34にて、書き出しの可否を制御することができる。
【0069】
(図3のステップ1')
さらに図3の処理においては、復号制御/暗号処理モジュール36に対して、監視制御モジュール33が
・暗号化書き出しを許可するフォルダの情報と、
・この暗号化書き出しでの暗号化において利用する鍵情報と
を渡す。
【0070】
(図3のステップ2)
アプリケーション32がAPI呼び出しを行う。ただし、ステップ1でコードが書き換えられているので、実際には監視層34が呼び出される。
【0071】
(図3のステップ3)
監視層34は、書き換えられる前のAPI呼出コードのパラメータ(図2のステップ3において説明したもの)をチェックし、暗号化書き出しが必要かどうかを判断する。これらの処理が必要である場合、復号制御/暗号処理モジュール36を呼び出す。つまり、監視層34は、暗号化命令を、復号制御/暗号処理モジュール36に送る。
【0072】
(図3のステップ4〜10)
暗号化命令を受け取った復号制御/暗号処理モジュール36では、アプリケーションから求められた書き出し処理における保存先フォルダが、予め一覧表331として渡されている暗号化書き出し許可フォルダと一致するかどうかを判断する。一致した場合は、復号制御/暗号処理モジュール36は、OSカーネル37を呼び出して、書き出しの対象となるデータを取得する。さらに、復号制御/暗号処理モジュール36は、許可された保存先に、取得したデータを暗号化して保存する。この暗号化のための鍵は、プロセスおよびファイルごとに異なるものを生成して用いる(すなわち、同じファイルでも、プロセスが異なれば鍵が異なる。また、プロセスが同じでも、ファイルが異なれば鍵が異なる。)。
【0073】
もし、アプリケーション32が指定する保存先フォルダが、暗号化書き出し許可フォルダと一致しない場合は、復号制御/暗号処理モジュール36は、エラーをアプリケーション32に返す。本実施形態では、この処理により、アプリケーション32による任意フォルダへのデータの保存を禁止することができる。これにより、ファイル中のデータの安全性を高めることができる。
【0074】
本実施形態の方法によれば、アプリケーションプログラム32の動作に必要な動作であるテンポラリファイルの書き出しを実現することができる。また、データは、暗号化された状態で書き出されるので、ファイル内容の安全性を高めることができる。
【0075】
(図3のステップ11)
ついで、監視層34は、保存した結果(具体的には、例えば「保存完了」のメッセージ)を、アプリケーション32に、API呼出の結果として返す。
【0076】
(復号処理を必要としないAPI呼び出しの処理)
次に、復号処理を必要としないAPI呼び出しの処理手順について、図4に基づいて概略的に説明する。この処理は、基本的に、通常のAPI呼び出しと同じである。また、既に述べた処理と同様の処理については説明を省略する。
【0077】
(図4のステップ1)
復号許可アプリケーション32におけるAPI呼出コードのうち、復号処理や印刷に関係しないコードについては、監視制御モジュール33は、コードの書き換えを行わない。このようなコードをアプリケーション32が呼び出した場合、標準のAPIコード35が通常通りに呼び出される。この場合、監視層34は呼び出されない。つまり、API呼出コードが監視層34を透過することになる。
【0078】
(図4のステップ2〜7)
呼び出された標準のAPI35は、通常どおり、OSカーネル37を呼び出し、処理結果を取得する。
【0079】
(図4のステップ8)
処理結果を取得した後、標準のAPI35は、アプリケーション32にAPI呼び出しの結果を返す。
【0080】
本実施形態では、このようにして、ファイルの復号処理や印刷に関係しないAPI呼出コードについては、標準のAPIを通常通りに呼び出すことが可能である。呼び出された標準のAPIは、通常通りに動作して、処理結果をアプリケーション32に返すことができる。
【0081】
(復号処理を必要としないAPIパラメータの処理)
次に、復号処理を必要としないAPIパラメータの処理手順について、図5に基づいて概略的に説明する。この処理も、基本的に、通常のAPI呼び出しと同じである。また、既に述べた処理と同様の処理については説明を省略する。
【0082】
(図5のステップ1)
監視制御モジュール33は、復号許可アプリケーション32の実行時に、メモリ上のアプリケーション・コードをチェックする。さらに、監視制御モジュール33は、ファイル操作API呼出コードを、監視層34のコードを呼び出すように書き換える。この点は前記の例と同様である。
【0083】
(図5のステップ2及び3)
ついで、アプリケーション32がAPI呼出を行う。ただし、前記のステップ1においてコードが書き換えられているので、実際には監視層34が呼び出される。
【0084】
監視層34は、API呼出のパラメータをチェックし、実際に復号処理が必要かどうかを判断する。パラメータの例は、図2のステップ3で説明した通りである。復号処理が実際には不要であった場合、標準のAPIを呼び出す。
【0085】
(図5のステップ4〜9)
標準のAPIは、通常どおりにOSカーネル37を呼び出し、処理結果を取得する。その後、標準APIは、監視層34に、API呼出の結果を返す。
【0086】
(図5のステップ10及び11)
監視層34は、標準のAPI35から受け取った処理結果を、アプリケーション32に対して、API呼び出しの結果として返す。
【0087】
(復号対象アプリケーションでないアプリケーションからのAPI呼び出しの処理)
次に、一覧表331において復号対象アプリケーションとして記載されていないアプリケーションからのAPI呼び出しの処理について、図6に基づいて概略的に説明する。この処理は、基本的に、通常のAPI呼び出しと同じである。また、既に述べた処理と同様の処理については説明を省略する。
【0088】
(図6のステップ1)
復号対象アプリケーションとして一覧表331に記載されていないアプリケーションからのファイル操作(印刷を含む)のAPIについては、監視制御モジュール34はコードの書き換えを行わない。したがって、アプリケーション32におけるファイル操作のためのAPI呼出コードは、そのまま、標準のAPI35を呼び出す。
【0089】
(図6のステップ2〜7)
呼び出された標準のAPI35は、通常どおりにOSカーネル37を呼び出し、処理結果を取得する。
【0090】
(図6のステップ8)
標準のAPI35は、アプリケーション32に、API呼び出しの結果を返す。
【0091】
本実施形態のファイル管理方法によれば、監視制御モジュール33に書き込む内容(例えば復号許可アプリケーション、暗号化書き出し可能フォルダ、書き換えの対象となるAPI呼出コード、書き換えの内容など)を変更することで、各種のアプリケーションに対応することができ、非常に汎用性が高いという利点がある。
【0092】
なお、本発明の範囲は、前記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることはもちろんである。
【0093】
例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良い。本発明における複数の機能要素が一つの機能要素により実現されても良い。
【0094】
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。
【図面の簡単な説明】
【0095】
【図1】本発明の一実施形態に係るファイル管理装置の全体的な機能ブロック図である。
【図2】本発明の一実施形態に係るファイル管理方法の手順(復号処理)を説明するための説明図である。
【図3】本発明の一実施形態に係るファイル管理方法の手順(暗号化書き出し処理)を説明するための説明図である。
【図4】本発明の一実施形態に係るファイル管理方法の手順(対象外API呼び出しの処理)を説明するための説明図である。
【図5】本発明の一実施形態に係るファイル管理方法の手順(対象外APIパラメータの処理)を説明するための説明図である。
【図6】本発明の一実施形態に係るファイル管理方法の手順(対象外アプリケーションの処理)を説明するための説明図である。
【符号の説明】
【0096】
1 内部環境(コンテンツ提供者社内環境)
11 コンテンツ暗号化システム
12 コンテンツ用ストレージ
13 コンテンツのファイル
14 暗号化コンテンツ
2 公開サーバ環境
21 コンテンツ配布サーバ
22 鍵送信サーバ
23 鍵記録用のストレージ
231 コンテンツID及び復号鍵
3 ユーザコンピュータ
31 コンテンツダウンローダ
32 アプリケーションプログラム
321 API呼出コード
33 監視制御モジュール
331 一覧表
34 監視層
35 標準のAPI
36 復号処理/暗号処理モジュール
37 OSカーネル
38 デバイスドライバ
39 ローカルディスク(二次記憶装置)
4 インターネット

【特許請求の範囲】
【請求項1】
以下の(a)〜(d)を備えるファイル管理システム:
(a)アプリケーションプログラム、
(b)監視層、
(c)復号制御モジュール、
(d)OSカーネル、
ここで、
前記アプリケーションプログラムは、ファイルを操作するためのAPI呼出コードを備えており、
前記監視層は、前記アプリケーションプログラムからのAPI呼び出しをフックし、前記ファイルを復号化するための復号命令を前記復号制御モジュールに送るようになっており、
前記復号制御モジュールは、前記監視層から送られた前記復号命令に基づいて、OSカーネルに復号処理を依頼するようになっており、
前記OSカーネルは、前記復号制御モジュールからの依頼に基づいて、前記ファイルを復号処理して、復号済みファイルを生成し、さらに、この復号済みファイルを復号制御モジュールに返すようになっており、
さらに、前記復号制御モジュールは、前記OSカーネルから返された前記復号済みファイルを前記アプリケーションプログラムに返す構成となっている。
【請求項2】
さらに、
(e)監視制御モジュール、
を備えた、請求項1に記載のファイル管理システムであって、
前記監視制御モジュールは、前記アプリケーションプログラムが備えている前記API呼出コードを書き換えることにより、前記アプリケーションプログラムからのAPI呼び出しをフックできる構成となっている。
【請求項3】
さらに、
(f)二次記憶装置
を備えた、請求項1又は2に記載のファイル管理システムであって、
前記二次記憶装置は、暗号化された前記ファイルを格納している。
【請求項4】
さらに、
(g)鍵送信サーバ
を備えた、請求項1〜3のいずれか1項に記載のファイル管理システムであって、
前記復号制御モジュールは、前記鍵送信サーバから受け取った鍵を用いて、前記復号処理を行う構成となっている、請求項1〜3のいずれか1項に記載のファイル管理システム。
【請求項5】
前記API呼出コードは、ファイルを開くためのものである、請求項1〜4のいずれか1項に記載のファイル管理システム。
【請求項6】
前記API呼出コードは、さらに、ファイルの印刷を行うためのものを含む、請求項5に記載のファイル管理システム。
【請求項7】
さらに、
(h)暗号処理モジュール
を備えた、請求項1〜6に記載のファイル管理システムであって、
前記監視層は、前記フックしたAPI呼び出しに基づいて、暗号化命令を、前記暗号処理モジュールに送るようになっており、
前記暗号処理モジュールは、前記暗号化命令を受け取った後、前記アプリケーションプログラムの動作に必要なデータを、暗号化した上でテンポラリファイルに書き出す処理を行う構成となっている。
【請求項8】
以下の(a)〜(d)を備えるファイル管理システムを用いた、ファイル管理方法:
(a)アプリケーションプログラム、
(b)監視層、
(c)復号制御モジュール、
(d)OSカーネル、
ここで、
前記アプリケーションプログラムは、ファイルを操作するためのAPI呼出コードを備えている;
この方法は、以下のステップを備える:
前記監視層が、前記アプリケーションプログラムからのAPI呼び出しをフックし、前記ファイルを復号化するための復号命令を前記復号制御モジュールに送るステップ、
前記復号制御モジュールが、前記監視層から送られた復号命令に基づいて、OSカーネルに復号処理を依頼するステップ、
前記OSカーネルが、前記復号制御モジュールからの依頼に基づいて、前記ファイルを復号処理して、復号済みファイルを生成し、さらに、この復号済みファイルを復号制御モジュールに返すステップ、
さらに、前記復号制御モジュールが、前記OSカーネルから返された前記復号済みファイルを前記アプリケーションプログラムに返すステップ。
【請求項9】
請求項8に記載の方法をコンピュータに実行させるためのコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−59008(P2009−59008A)
【公開日】平成21年3月19日(2009.3.19)
【国際特許分類】
【出願番号】特願2007−223406(P2007−223406)
【出願日】平成19年8月30日(2007.8.30)
【出願人】(599118414)日本SGI株式会社 (6)
【Fターム(参考)】