JP2008134821A - 電子ファイル処理プログラムおよび情報処理装置 - Google Patents

電子ファイル処理プログラムおよび情報処理装置 Download PDF

Info

Publication number
JP2008134821A
JP2008134821A JP2006320382A JP2006320382A JP2008134821A JP 2008134821 A JP2008134821 A JP 2008134821A JP 2006320382 A JP2006320382 A JP 2006320382A JP 2006320382 A JP2006320382 A JP 2006320382A JP 2008134821 A JP2008134821 A JP 2008134821A
Authority
JP
Japan
Prior art keywords
electronic file
file
encryption
processing
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006320382A
Other languages
English (en)
Inventor
Kazuo Saito
和雄 齊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2006320382A priority Critical patent/JP2008134821A/ja
Publication of JP2008134821A publication Critical patent/JP2008134821A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】
暗号化対象となる電子ファイル(ファイル)をユーザが意識することなく確実に暗号化できるようにした電子ファイル処理プログラムおよび情報処理装置を提供する。
【解決手段】
暗復号ファイルフックプログラム(電子ファイル処理プログラム)12は、オペレーティングシステム13に設けられたファイル処理に係わるAPI(Application Program Interface)をフックする。暗復号ファイルフックプログラム12は、アプリケーションプログラム11からのファイル処理に係わるAPIの呼び出し指示を検出すると、処理対象となるファイルが暗号化(あるいは復号化)の対象となるか否かを判定し、この判定結果に基づき暗号化(あるいは復号化)を行う。
【選択図】 図1

Description

本発明は、電子ファイル処理プログラムおよび情報処理装置に関する。
アプリケーションプログラムが扱う文書などは、アプリケーションプログラムが暗号化などのセキュリティ機能を提供していても、ユーザが自分自身の手でセキュリティを適用しない限りセキュリティのかかっていない状態で保存されてしまう。そのため、ユーザのセキュリティに対する意識が低かったり、事故(例えば、操作ミス)などが発生したりした場合には、セキュリティのかかっていない状態で生の文書が漏洩してしまう恐れがある。
そこで、特許文献1や特許文献2のような技術が提案されている。ここに記載された技術では、オペレーティングシステムのファイルアクセスをフックすることで、アプリケーションプログラムに手を入れることなく、また、ユーザに意識させずにディスク上のファイルを暗号化することができるので、情報漏洩の防止と言う観点からセキュリティを向上させることができる。
ここに提案された技術では、ファイルの格納場所によって暗号化を行うか否かを決定している。
ここで、ファイルの格納場所によって暗号化を行うか否かを決定する場合、
1)当該格納場所に格納された全てのファイルに対して暗号化を行うように設定した場合には、アプリケーションプログラムが生成した一時ファイルのようなファイルが暗号化の対象となる。
2)当該格納場所に格納されたファイルの内、特定のファイルのみ暗号化を行うように設定した場合には、予め定められたファイル以外のファイルは暗号化されない。
という事象が発生する。
特開平10−301856号 特開2001−027964号
ところで、特定の格納場所に格納された全てのファイルに対して暗号化を行うように設定した場合には、当該格納場所に格納された任意のファイルを暗号化対象外の格納場所に格納してしまうと、当該ファイルは暗号化されないこととなる。また、特定の格納場所に格納された特定のファイルのみ暗号化を行うように設定した場合には、ファイル名を指定して設定を行うため、当該特定のファイルの名前を変更して格納すると、名前を変更した後のファイルは暗号化されないこととなる。
このように、ユーザの過失により、本来暗号化されるべきファイルが暗号化されずに格納されてしまうという課題があった。
本発明は、暗号化対象となる電子ファイルをユーザが意識することなく確実に暗号化できるようにした電子ファイル処理プログラムおよび情報処理装置を提供することを目的とする。
上記目的を達成するため、請求項1の電子ファイル処理プログラムの発明は、コンピュータを、電子ファイル処理に係わるプログラムに対する呼び出し指示を検出する検出手段、前記検出手段による検出に対応して前記電子ファイル処理に係わるプログラムの処理対象となる電子ファイルの内容に基づき当該電子ファイルが暗号化対象であるか否かを判定する暗号化判定手段、前記暗号化判定手段による判定結果に基づき前記電子ファイルを暗号化する暗号化処理手段として機能させる。
また、請求項2の電子ファイル処理プログラムの発明は、コンピュータを、電子ファイル処理に係わるプログラムに対する呼び出し指示を検出する検出手段、前記検出手段による検出に対応して前記電子ファイル処理に係わるプログラムの処理対象となる電子ファイルの拡張子に基づき当該電子ファイルが暗号化対象であるか否かを判定する暗号化判定手段、前記暗号化判定手段による判定結果に基づき前記電子ファイルを暗号化する暗号化処理手段として機能させる。
また、請求項3の発明は、請求項1または2の発明において、前記コンピュータを、前記検出手段により検出した呼び出し指示に対応する処理の実行を制御する制御手段として更に機能させる。
また、請求項4の発明は、請求項1または2の発明において、前記暗号化判定手段は、前記検出手段により電子ファイルを閉じる機能を有する電子ファイル処理に係わるプログラムに対する呼び出し指示を検出した場合に、当該処理対象となる電子ファイルが暗号化対象であるか否かを判定する。
また、請求項5の発明は、請求項1または2の発明において、前記コンピュータを、前記検出手段による検出に対応して当該処理対象となる電子ファイルの内容に基づき当該電子ファイルが復号化対象であるか否かを判定する復号化判定手段、前記復号化判定手段による判定結果に基づき前記電子ファイルを復号化する復号化処理手段として更に機能させる。
また、請求項6の発明は、請求項5の発明において、前記暗号化処理手段は、前記電子ファイルの暗号化に際して該電子ファイルに所定の文字列を書き込み、前記復号化判定手段は、前記電子ファイルに所定の文字列が書き込まれているか否かにより該電子ファイルが復号化対象であるか否かを判定する。
また、請求項7の発明は、請求項1または2の発明において、前記コンピュータを、前記検出手段による検出に対応して当該処理対象となる電子ファイルの拡張子に基づき当該電子ファイルが復号化対象であるか否かを判定する復号化判定手段、前記復号化判定手段による判定結果に基づき前記電子ファイルを復号化する復号化処理手段として更に機能させる。
また、請求項8の発明は、請求項5または7の発明において、前記復号化判定手段は、前記検出手段により電子ファイルを開く機能を有する電子ファイル処理に係わるプログラムに対する呼び出し指示を検出した場合に、当該処理対象となる電子ファイルが復号化対象であるか否かを判定する。
また、請求項9の発明は、請求項1から8のいずれかの発明において、前記検出手段は、オペレーティングシステムの電子ファイル処理に係わるプログラムに対するアプリケーションプログラムからの呼び出し指示を検出する。
また、請求項10の情報処理装置の発明は、電子ファイル処理に係わるプログラムに対する呼び出し指示を検出する検出手段と、前記検出手段による検出に対応して前記電子ファイル処理に係わるプログラムの処理対象となる電子ファイルの内容に基づき当該電子ファイルが暗号化対象であるか否かを判定する暗号化判定手段と、前記暗号化判定手段による判定結果に基づき前記電子ファイルを暗号化する暗号化処理手段とを具備する。
また、請求項11の発明は、請求項10の発明において、前記検出手段による検出に対応して当該処理対象となる電子ファイルの内容に基づき当該電子ファイルが復号化対象であるか否かを判定する復号化判定手段と、前記復号化判定手段による判定結果に基づき前記電子ファイルを復号化する復号化処理手段とを更に具備する。
請求項1の電子ファイル処理プログラムによれば、暗号化が必要な電子ファイルだけを電子ファイルの内容に応じてユーザが意識することなく暗号化できるため、本構成を有さない場合に比較して、必要な電子ファイルの暗号化を確実に行うことができる。
また、請求項2の電子ファイル処理プログラムによれば、暗号化が必要な電子ファイルだけを電子ファイルの拡張子に応じてユーザが意識することなく暗号化できるため、本構成を有さない場合に比較して、必要な電子ファイルの暗号化を確実に行うことができる。
また、請求項3の電子ファイル処理プログラムによれば、本構成を有さない場合に比較して、呼び出し指示に対応した処理の実行が制御されることになる。
また、請求項4の電子ファイル処理プログラムによれば、電子ファイルへのアクセスの都度、暗号化が行われるわけではないため、本構成を有さない場合に比較して、暗号化によるオーバーヘッドを減らすことができる。
また、請求項5の電子ファイル処理プログラムによれば、復号化が必要な電子ファイルだけを電子ファイルの内容に応じてユーザが意識することなく復号化できるため、本構成を有さない場合に比較して、必要な電子ファイルの復号化を確実に行うことができる。
また、請求項6の電子ファイル処理プログラムによれば、電子ファイルの内容に応じて電子ファイルを復号化するため、本構成を有さない場合に比較して、電子ファイルの保存場所に拘わらず確実に必要な電子ファイルだけを選択的に復号化することができる。
また、請求項7の電子ファイル処理プログラムによれば、復号化が必要な電子ファイルだけを電子ファイルの拡張子に応じてユーザが意識することなく復号化できるため、本構成を有さない場合に比較して、必要な電子ファイルの復号化を確実に行うことができる。
また、請求項8の電子ファイル処理プログラムによれば、電子ファイルへのアクセスの都度、復号化が行われるわけではないため、本構成を有さない場合に比較して、復号化によるオーバーヘッドを減らすことができる。
また、請求項9の電子ファイル処理プログラムによれば、既存のアプリケーションプログラムに手を加える必要がないため、本構成を有さない場合に比較して、導入が容易である。
また、請求項10の情報処理装置によれば、暗号化が必要な電子ファイルだけを電子ファイルの内容に応じてユーザが意識することなく暗号化できるため、本構成を有さない場合に比較して、必要な電子ファイルの暗号化を確実に行うことができる。
また、請求項11の情報処理装置によれば、復号化が必要な電子ファイルだけを電子ファイルの内容に応じてユーザが意識することなく復号化できるため、本構成を有さない場合に比較して、必要な電子ファイルの復号化を確実に行うことができる。
以下、本発明に係わる電子ファイル処理プログラムおよび情報処理装置の実施例について添付図面を参照して詳細に説明する。
図1は、コンピュータ10の機能的な構成の一部を示す図である。このコンピュータ10には、本発明に係わる電子ファイル処理プログラムが適用された暗復号ファイルフックプログラム12がインストールされている。なお、このプログラムは、ネットワーク等の通信手段により提供することは勿論、CD−ROM等の記録媒体に格納して提供することも可能である。
コンピュータ10は、各種処理機能部として、アプリケーションプログラム11と、暗復号ファイルフックプログラム12と、オペレーティングシステム13と、記憶装置14とを具備し、主制御手段としてのCPU(Central Processing Unit)、主記憶手段としてのROM(Read Only Memory)やRAM(Random Access Memory)、補助記憶手段としてのハードディスク、入出力インターフェースとしてのキーボードやマウス、およびディスプレイ、通信インターフェースとしてのLAN(Local Area Network)ボード、等から構成される。
アプリケーションプログラム11は、文書の作成、編集などを行うための一般的なソフトウェアであり、オペレーティングシステム13は、コンピュータ10を統括管理するソフトウェアである。オペレーティングシステム13には、例えば、Windows(登録商標)、Linux等が該当する。
暗復号ファイルフックプログラム12は、オペレーティングシステム13上のファイル(電子ファイル)処理に係わるプログラムをフックするソフトウェアである。具体的には、オペレーティングシステム13に設けられたファイル処理に係わるAPI(Application Program Interface)をフックする。そのため、アプリケーションプログラム11によるAPIを用いたファイル処理は、この暗復号フックプログラム12を経由して行われる。フックの実現方法は、従来知られている手法を用いればよい。なお、本実施例においては、ファイル処理に係わるAPIとしてWindows(登録商標)に設けられた「CreateFile()」、「ReadFile()」、「WriteFile()」、「SetFilePointer()」、「GetFileSize()」、「CloseHandle()」をフックする場合について説明する。
ここで、これらAPIを用いたファイル処理の大まかな流れについて説明すると、最初に、「CreateFile()」が呼び出されファイルがオープンされるとともに、ファイルハンドルと呼ばれる識別子が取得されることになる。次に、このファイルハンドルを指定して「ReadFile()」、「WriteFile()」等が呼び出されファイルの読み込み、書き込み等が行われる。そして最後に、「CloseHandle()」が呼び出されファイルが閉じられ、ファイル処理が終了することになる。
記憶装置14は、ファイル等を含む各種データを記憶する機能を果たす。記憶装置14は、例えば、HDD(Hard Disk Drive)等で実現される。以上が、コンピュータ10を構成する各種処理機能の説明である。
ここで、図2を用いて、上述した暗復号ファイルフックプログラム12の機能的な構成の一部について説明する。
暗復号ファイルフックプログラム12は、各種処理機能部として、API監視部21と、暗号化判定部22と、復号化判定部23と、暗号化処理部24と、復号化処理部25と、ファイル管理情報保持部26と、制御部27とを具備して構成される。
API監視部21は、ファイル処理に係わるAPIを監視する機能を果たす。API監視部21には、API呼び出し指示検出部21aが設けられ、監視対象のAPIに対するアプリケーションプログラム11からの呼び出し指示を検出する。
暗号化判定部22は、API呼び出し指示検出部21aによる呼び出し指示の検出に対応して処理対象となるファイルが暗号化の対象となるか否かを判定する機能を果たし、復号化判定部23は、API呼び出し指示検出部21aによる呼び出し指示の検出に対応して処理対象となるファイルが復号化の対象となるか否かを判定する機能を果たす。ここで、処理対象となるファイルとは、APIの引数に設定されたファイル名に対応するファイル、APIの引数に設定されたファイルハンドルに対応するファイル等を指す。
暗号化処理部24は、暗号化判定部22の判定結果を受けて処理対象となるファイルに対して暗号化処理を行う機能を果たし、復号化処理部25は、復号化判定部23の判定結果を受けて処理対象となるファイルに対して復号化処理を行う機能を果たす。
ファイル管理情報保持部26は、処理対象となるファイルに係わる情報を保持する機能を果たす。ファイル管理情報保持部26では、図3に示すファイル管理テーブルを用いて処理対象となるファイルに係わる情報を保持する。ファイル管理テーブルには、ファイル識別子としての機能を果たす「ファイルハンドル」に対応して、バッファ内におけるファイルの先頭アドレスを示す「先頭位置情報」と、ファイルの読み出し位置を示す「現在位置情報」と、ファイルの大きさを示す「ファイルサイズ」とが保持される。
制御部27は、暗復号ファイルフックプログラム12における処理を統括制御する機能を果たす。この暗復号ファイルフックプログラム12上に構成される各種処理機能は、この制御部27からの指示に従って動作する。また、制御部27では、各処理機能間で発生するデータの入出力も制御する。以上が、暗復号ファイルフックプログラム12を構成する各種処理機能の説明である。
ここで、図4から図9を用いて、暗復号ファイルフックプログラム12によるAPIフック処理について、いくつか例を挙げて説明する。
まず、図4を用いて、ファイルオープン時におけるフック処理について説明する。この処理では主に、「CreateFile()」をフックする。なお、「CreateFile()」は、ファイルをオープンする機能を果たす。
アプリケーションプログラム11から「CreateFile()」の呼び出しが指示されると、暗復号ファイルフックプログラム12のAPI呼び出し指示検出部21aにおいて、その呼び出し指示が検出される(ステップS101)。なお、この「CreateFile()」の呼び出し指示時には、処理対象となるファイルのファイル名等が引数として設定される。
呼び出し指示が検出されると、暗復号ファイルフックプログラム12の制御部27は、「CreateFile()」を呼び出し、処理対象となるファイルをオープンする(ステップS102)。この「CreateFile()」の戻り値としてファイルハンドルが取得される。
ファイルオープンが済むと、暗復号ファイルフックプログラム12は、復号化判定部23において、当該処理対象となるファイルが復号化の対象となるか否かの判定を行う(ステップS103)。この判定は、ファイルヘッダに「FXENCDAT(文字列)」が設定されてるか否かに基づき行われ、当該文字列が設定されていれば、復号化の対象であると判定されることになる。なお、ファイルヘッダの参照は、「ReadFile()」等を用いることで行える。
判定の結果、復号化の対象でないと判定された場合には(ステップS104でNO)、この結果を受けた制御部27が、ファイル内からデータ本体を読み出しこれをバッファに展開する(ステップS105)。そして、当該ファイルに係わる情報をファイル管理テーブルに設定した後(ステップS111)、アプリケーションプログラム11にファイルハンドルを返し(ステップS112)、この処理を終了する。
一方で、復号化の対象になると判定された場合には(ステップS104でYES)、この結果を受けた復号化処理部25は、ファイル内から暗号化されたAES(Advanced Encryption Standard)鍵を読み出し(ステップS106)、ユーザの秘密鍵を用いてAES鍵を復号する(ステップS107)。なお、秘密鍵がなかった場合には、AES鍵を復号化できないため復号失敗となり(ステップS108でYES)、ファイルオープンエラーがアプリケーションプログラム11に返される(ステップS110)。
秘密鍵によりAES鍵が復号されると(ステップS108でNO)、復号化処理部25は次に、ファイル内からデータ本体を読み出しこれをバッファに展開するとともに、復号されたAES鍵を用いて当該データ本体を復号する(ステップS109)。そして、当該ファイルに係わる情報をファイル管理テーブルに設定した後(ステップS111)、アプリケーションプログラム11にファイルハンドルを返し(ステップS112)、この処理を終了する。なお、この復号化されたデータ本体は、メインメモリ上、あるいはシステムのみアクセス可能な安全な領域等に展開されるのが望ましい。
次に、図5を用いて、ファイル読み出し時におけるフック処理について説明する。この処理では主に、「ReadFile()」をフックする。なお、「ReadFile()」は、オープンされているファイルからデータを読み出す機能を果たす。
アプリケーションプログラム11から「ReadFile()」の呼び出しが指示されると、暗復号ファイルフックプログラム12のAPI呼び出し指示検出部21aにおいて、その呼び出し指示が検出される(ステップS201)。なお、この「ReadFile()」の呼び出し指示時には、処理対象となるファイルに割り当てられたファイルハンドル、読み出しバイト数等が引数として設定される。
呼び出し指示が検出されると、暗復号ファイルフックプログラム12の制御部27において、当該処理対象となるファイルがファイル管理テーブルに登録済みであるか否かの確認が行われる(ステップS202)。この登録済みであるか否かの確認は、「ReadFile()」の引数に設定されたファイルハンドルがファイル管理テーブルに登録されているか否かに基づき行われる。
確認の結果、当該処理対象となるファイルがファイル管理テーブルに登録されていなかった場合には(ステップS203でNO)、制御部27において、「ReadFile()」が呼び出されバッファからデータの読み出しが行われる(ステップS207)。そして、その結果がアプリケーションプログラム11に返された後(ステップS208)、この処理は終了する。
また、当該処理対象となるファイルがファイル管理テーブルに登録済みであった場合には(ステップS203でYES)、制御部27において、バッファ内の所定の位置(ファイル管理テーブルの「現在位置情報」)からデータが読み出され(ステップS204)、その読み出されたデータがアプリケーションプログラム11に返される(ステップS205)。そして、ファイル管理テーブルの「現在位置情報」が当該読み出されたバイト数分進められた後(ステップS206)、この処理は終了する。なお、ステップS204において、指定されたバイト数に相当するデータがバッファに存在していなかった場合には、ファイルの最後までデータを読み出し、それをアプリケーションプログラム11に返すことになる。この場合、ファイル管理テーブルの「現在位置情報」はファイルサイズと同じ値に更新される。
次に、図6を用いて、ファイル書き込み時におけるフック処理について説明する。この処理では主に、「WriteFile()」をフックする。なお、「WriteFile()」は、オープンされているファイルにデータを書き込む機能を果たす。
アプリケーションプログラム11から「WriteFile()」の呼び出しが指示されると、暗復号ファイルフックプログラム12のAPI呼び出し指示検出部21aにおいて、その呼び出し指示が検出される(ステップS301)。なお、この「WriteFile()」の呼び出し指示時には、処理対象となるファイルに割り当てられたファイルハンドル、書き込みバイト数、書き込みデータ内容等が引数として設定される。
呼び出し指示が検出されると、暗復号ファイルフックプログラム12の制御部27において、当該処理対象となるファイルがファイル管理テーブルに登録済みであるか否かの確認が行われる(ステップS302)。この登録済みであるか否かの確認は、「WriteFile()」の引数に設定されたファイルハンドルがファイル管理テーブルに登録されているか否かに基づき行われる。
確認の結果、当該処理対象となるファイルがファイル管理テーブルに登録されていなかった場合には(ステップS303でNO)、制御部27において、「WriteFile()」が呼び出されバッファにデータが書き込まれる(ステップS307)。そして、その結果がアプリケーションプログラム11に返された後(ステップS308)、この処理は終了する。
また、当該処理対象となるファイルがファイル管理テーブルに登録済みであった場合には(ステップS303でYES)、制御部27において、バッファ内の所定の位置(ファイル管理テーブルの「現在位置情報」)からデータが書き込まれ(ステップS304)、その書き込み結果がアプリケーションプログラム11に返される(ステップS305)。そして、ファイル管理テーブルの「現在位置情報」が当該書き込まれたバイト数分進められた後(ステップS306)、この処理は終了する。なお、ステップS304におけるデータの書き込みによりファイルサイズが拡張した場合には、その拡張した分だけ、ファイルサイズを加算して更新しておく。この場合、ファイル管理テーブルの「現在位置情報」はファイルサイズと同じ値に更新される。
次に、図7を用いて、ファイル位置指定時におけるフック処理について説明する。この処理では主に、「SetFilePointer()」をフックする。なお、「SetFilePointer()」はオープンされているファイルのファイルポインタを移動させる機能を果たす。
アプリケーションプログラム11から「SetFilePointer()」の呼び出しが指示されると、暗復号ファイルフックプログラム12のAPI呼び出し指示検出部21aにおいて、その呼び出し指示が検出される(ステップS401)。なお、この「SetFilePointer()」の呼び出し指示時には、処理対象となるファイルに割り当てられたファイルハンドル、位置情報を指定した情報等が引数として設定される。
呼び出し指示が検出されると、暗復号ファイルフックプログラム12の制御部27において、当該処理対象となるファイルがファイル管理テーブルに登録済みであるか否かの確認が行われる(ステップS402)。この登録済みであるか否かの確認は、「SetFilePointer()」の引数に設定されたファイルハンドルがファイル管理テーブルに登録されているか否かに基づき行われる。
確認の結果、当該処理対象となるファイルがファイル管理テーブルに登録されていなかった場合には(ステップS403でNO)、制御部27において、「SetFilePointer()」が呼び出されファイルポインタの位置が変更される(ステップS406)。そして、その結果がアプリケーションプログラム11に返された後(ステップS407)、この処理は終了する。
また、当該処理対象となるファイルがファイル管理テーブルに登録済みであった場合には(ステップS403でYES)、制御部27において、ファイル管理テーブルの「現在位置情報」が指定された値に変更される(ステップS404)。そして、その結果がアプリケーションプログラム11に返された後(ステップS405)、この処理は終了する。なお、指定された位置情報がファイルサイズより大きい場合には、ファイル管理テーブルの「現在位置情報」はファイルサイズと同じ値に変更される。
次に、図8を用いて、ファイルサイズ取得時におけるフック処理について説明する。この処理では主に、「GetFileSize()」をフックする。なお、「GetFileSize()」はオープンされているファイルのサイズを取得する機能を果たす。
アプリケーションプログラム11から「GetFileSize()」の呼び出しが指示されると、暗復号ファイルフックプログラム12のAPI呼び出し指示検出部21aにおいて、その呼び出し指示が検出される(ステップS501)。なお、この「GetFileSize()」の呼び出し指示時には、処理対象となるファイルに割り当てられたファイルハンドル等が引数として設定される。
呼び出し指示が検出されると、暗復号ファイルフックプログラム12の制御部27において、当該処理対象となるファイルがファイル管理テーブルに登録済みであるか否かの確認が行われる(ステップS502)。この登録済みであるか否かの確認は、「GetFileSize()」の引数に設定されたファイルハンドルがファイル管理テーブルに登録されているか否かに基づき行われる。
確認の結果、当該処理対象となるファイルがファイル管理テーブルに登録されていなかった場合には(ステップS503でNO)、制御部27において、「GetFileSize()」が呼び出されファイルサイズが取得される(ステップS505)。そして、その結果がアプリケーションプログラム11に返された後(ステップS506)、この処理は終了する。
また、当該処理対象となるファイルがファイル管理テーブルに登録済みであった場合には(ステップS503でYES)、制御部27において、ファイル管理テーブルの「ファイルサイズ」が取得され、この値がアプリケーションプログラム11に返された後(ステップS504)、この処理は終了する。
次に、図9を用いて、ファイルクローズ時におけるフック処理について説明する。この処理では主に、「CloseHandle()」をフックする。なお、「CloseHandle()」はオープンされているファイルをクローズする機能を果たす。
アプリケーションプログラム11から「CloseHandle()」の呼び出しが指示されると、暗復号ファイルフックプログラム12のAPI呼び出し指示検出部21aにおいて、その呼び出し指示が検出される(ステップS601)。なお、この「CloseHandle()」の呼び出し指示時には、処理対象となるファイルに割り当てられたファイルハンドル等が引数として設定される。
呼び出し指示が検出されると、暗復号ファイルフックプログラム12の制御部27において、当該処理対象となるファイルがファイル管理テーブルに登録済みであるか否かの確認が行われる(ステップS602)。この登録済みであるか否かの確認は、「CloseHandle()」の引数に設定されたファイルハンドルがファイル管理テーブルに登録されているか否かに基づき行われる。
確認の結果、当該処理対象となるファイルがファイル管理テーブルに登録されていなかった場合には(ステップS603でNO)、制御部27において、「CloseHandle()」が呼び出されファイルがクローズされる(ステップS604)。そして、その結果がアプリケーションプログラム11に返された後(ステップS605)、この処理は終了する。
また、当該処理対象となるファイルがファイル管理テーブルに登録済みであった場合には(ステップS603でYES)、制御部27において、「SetFilePointer()」が呼び出され、バッファ内におけるデータの読み出し位置がデータの先頭に移される(ステップS606)。
読み出し位置が移されると、暗復号ファイルフックプログラム12は次に、暗号化判定部22において、処理対象ファイルが暗号化の対象となるか否かを判定する(ステップS607)。暗号化の対象となるか否かは、例えば、データが特定フォーマット(例えば、MS−WORD)に該当するか否かを判定することで行われる。なお、データのフォーマットがMS−WORDであるか否かを特定する場合には、データの先頭8バイト(ヘッダ部分)が「0xD0 0xCF 0x11 0xE0 0xA1 0xB1 0x1A 0xE1」に一致するか否かを判定すればよい。
判定の結果、暗号化の対象でないと判定された場合には(ステップS608でNO)、制御部27において、バッファの内容がそのままファイルに書き込まれた後(ステップS609)、「CloseHandle()」が呼び出されファイルがクローズされるとともに、ファイル管理テーブル上の対応する情報が削除され(ステップS614)、この処理は終了する。
一方で、暗号化の対象となると判定された場合には(ステップS608でYES)、暗号化処理部24による暗号化処理が開始される。この暗号化処理ではまず、所定の文字列が書き込まれたヘッダがファイルに書き込まれる(ステップS610)。なお、本実施例においては、ファイルが暗号化されていることを示すために、ヘッダに「FXENCDAT」という文字列を書き込む場合について説明するが、この文字列は識別性を有していればよく、任意の文字列に変更可能である。
ヘッダの書き込みが終了すると次に、AES鍵が生成され、このAES鍵がユーザの公開鍵を用いて暗号化される(ステップS611)。また、この生成されたAES鍵を用いてバッファ内のデータ本体が暗号化される(ステップS612)。すると、公開鍵を用いて暗号化されたAES鍵と、AES鍵を用いて暗号化されたデータ本体とがファイルに書き込まれる(ステップS613)。この一連の暗号化処理が終了すると、制御部27において、「CloseHandle()」が呼び出されファイルがクローズされるとともに、ファイル管理テーブル上の対応する情報が削除され(ステップS614)、この処理は終了する。
以上が、実施例1についての説明である。なお、実施例1においては、Windows(登録商標)に設けられたAPIをフックする場合について説明したが、他のオペレーティングシステムにもこれと同等のAPIが用意されているので、他のオペレーティングシステムの場合には、それら同等のAPIをフックすれば上記同様の処理が行えることになる。
次に、実施例2について説明する。実施例2においては、上記実施例1の構成に加えて、所望のファイルを予め暗号化しておく場合の実施例について説明する。
図10は、実施例2に係わるコンピュータ10の機能的な構成の一部を示す図である。なお、上記実施例1を説明した図1と同一の符号が付してあるものは、略同様に動作するため、ここでは相違点についてのみ説明する。
コンピュータ10には、上記実施例1の構成に加えて、暗号化処理プログラム15が設けられる。暗号化処理プログラム15は、所定のファイルだけを選択的に暗号化する機能を果たす。暗号化処理プログラム15では、所定のファイルだけを選択的に暗号化するために、予め設定された設定情報に基づき暗号化処理を行う。なお、本実施例における暗号化処理プログラム15においては、ファイルが暗号化されていることを示すために、暗号化に際して「FXENCDAT」という文字列をヘッダに書き込む。
ここで、図11を用いて、暗号化処理プログラム15による暗号化処理の動作について説明する。
ユーザにより複数ファイルの暗号化が指示されると、暗号化処理プログラム15は、まず、当該複数ファイルの中から1つ目のファイルについて暗号化の対象となるか否かの判定を行う。この判定は設定情報に基づき行われる。ここで、設定情報には例えば、データの先頭から何バイト目までのデータに所定の文字列が含まれていれば、暗号化の対象となる等の情報が設定されている。
判定の結果、当該ファイルが暗号化の対象とならない場合には(ステップS701でNO)、次のファイルについて暗号化の対象となるか否かの判定を行うことになる(ステップS702の後、ステップS703でNO)。なお、処理対象となるファイルがなければ(ステップS703でYES)、この処理は終了する。
また、ステップS701における判定の結果、暗号化の対象となると判定された場合には(ステップS701でYES)、暗号化処理プログラム15は、所定の文字列(FXENCDAT)をファイルのヘッダに書き込むとともに(ステップS704)、ユーザの公開鍵で暗号化されたAES鍵を書き込む(ステップS705)。なお、この公開鍵には、第三者機関による証明書の発行を受けているものを用いるのが望ましい。
最後に、暗号化処理プログラム15は、AES鍵でデータの本体を暗号化しそれをファイルに書き込む(ステップS706)。そして、この処理は終了する。
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記および図面に示す実施例に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。ここで、変形例について下記にいくつか列挙する。
[暗号化、復号化対象となるか否かの判定方法バリエーション]
上記実施例1および2においては、暗号化、復号化の対象となるファイルであるか否かを判定する際に、データのヘッダを参照していたが、これに限られることなく、下記に例示列挙する方法で代用できる。
1)ファイルがあるフォーマットに従ったものであるかパーズ(構文解析)して判定する。例えば、XML(Extensible Markup Language)の場合は、あるスキーマやDTD(Document Type Definition)に従っているか等を判定することになる。
2)データ内(上記実施例で言うデータ本体)に特定の文字列を含んでいるか否かに基づき判定する。例えば、データ内に「confidential(機密)」という文字列が含まれているか否か等に基づき判定を行う。あるいは、自然言語処理の結果を用いても良い。姓名に関する情報が含まれていたら、個人情報と判定する。
3)画像ファイルであるか否かに基づき判定する。例えば、画像であれば暗号化する等の判定を行う。
4)画像の解像度に基づき判定する。例えば、画像の解像度が高解像度(300dpi以上)ならば暗号化する等の判定を行う。
5)画像処理の結果に基づき判定する。例えば、画像処理によって指定された画像内に人間の顔に合致する画像が含まれているかどうかを判定する。あるいは、セキュリティ上クリティカルな別の画像を予めデータベース化しておき、それらと比較し、データベース上の画像が含まれるかどうかの判定を行う。
6)拡張子に基づき判定する。例えば、図12(a)に示すように、拡張子が「.doc」であるファイルを暗号化対象であると判定し、拡張子が「.jpg」であるファイルは暗号化対象ではないと判定する等である。
7)これら説明した判定方法の一部または全てを組み合わせて判定を行う。例えば、拡張子とデータ内の特定の文字列とに基づき暗号化対象であるか否かを判定してもよい。図12(b)に示すように、ファイル内に特定の文字列として「confidential」が含まれ、且つ拡張子が「.doc」であるファイルを暗号化対象であると判定し、拡張子は「.doc」であるがファイル内に特定の文字列として「confidential」が含まれていないファイルは暗号化対象ではないと判定する等である。勿論、復号化の対象となるか否かの判定もこれと同様に行える。
[公開鍵のバリエーション]
上記実施例1および2においては、ユーザの公開鍵を用いてAES鍵を暗号化する場合について説明したが、ここで用いる公開鍵は、ユーザの公開鍵に限られることはなく、下記に例示列挙する公開鍵で代用できる。
1)データ送信先となる相手方の公開鍵。この場合、S/MIMEのように相手方のみが利用できることになる。勿論、複数の公開鍵で暗号化しておけば複数人が利用できることになる。
2)コンピュータのシステム情報に依存した公開鍵。この場合、他のコンピュータにコピーされても見えないようにすることができることになる。
3)DRM(Digital Rights Management)技術(例えば、アクセスチケット、WRMS(Windows(登録商標) Rights Management Services))の公開鍵。この場合、DRMシステムと連携させることができることになる(当該DRMシステム上で権限を持つ人のみ利用できることになる)。
4)この他、上述した公開鍵をサーバ上で管理するようにしてもよい。この場合、ネットワークに接続されているときだけ公開鍵を提供する等の運用を行う。
[その他権利の制御(閲覧権、保存権)]
上記図6において説明したファイル書込み時におけるフック処理を変形し、「WriteFile()」の処理を必ず失敗させるように構成してもよい。この場合、ファイルの書込みができないことになるため、当該ファイルは閲覧専用となる。
また、例えば、暗号化ファイルを生成する際にAES鍵を公開鍵で暗号化するが、そのときに保存権フラグを設けて、この値によって閲覧専用、保存可否を選択できるようにしてもよい。
また、DRM技術と連携する場合は、それらのDRM技術上で権利を扱えばよい。例えば、アクセスチケットの場合は、権利をアクセスチケット側に記述し、権利認証処理が正しく行えればそのチケットに記述された権利を行使できるようにする。
[その他権利の制御(印刷権)]
また、上記実施例1および2において、ファイル処理に係わるAPIをいくつか例示し、そのフック処理の動作について説明したが、上述したAPIに加えて、印刷処理に係わるAPIをフックしてもよい。例えば、Windows(登録商標)の場合、「OpenPrinter():プリンタをオープンする」、「StartDoc():印刷を開始する」、「StartPage():次のページを印刷する」などのAPIをフックすればよい。この場合、ユーザに印刷権があればそのまま処理を行うことになるが、印刷権がなければ、APIを呼び出さずに処理を失敗させるようにする。
[その他権利の制御(複製権)]
また、上記実施例1および2において、ファイル処理に係わるAPIをいくつか例示し、そのフック処理の動作について説明したが、上述したAPIに加えて、複製処理に係わるAPIをフックしてもよい。例えば、Windows(登録商標)の場合、「GetClipboardData():クリップボードの内容を取得する」、「SetClipboardData():クリップボードに内容をセットする」、「DoDragDrop():ドラッグ/ドロップする」などのAPIをフックすればよい。この場合、ユーザに複製権があればそのまま処理を行うことになるが、複製権がなければ、APIを呼び出さずに処理を失敗させるようにする。
本発明の電子ファイル処理プログラムおよび情報処理装置は、各種処理をコンピュータに実行させる電子ファイル処理プログラム、および情報処理装置全般に適用可能である。
コンピュータ10の機能的な構成の一部を示す図である。 図1に示す暗復号ファイルフックプログラム12の機能的な構成の一部を示す図である。 ファイル管理テーブルのテーブルレイアウトの一例を示す図である。 ファイルオープン時におけるフック処理の動作を示すフローチャートである。 ファイル読み出し時におけるフック処理の動作を示すフローチャートである。 ファイル書き込み時におけるフック処理の動作を示すフローチャートである。 ファイル位置指定時におけるフック処理の動作を示すフローチャートである。 ファイルサイズ取得時におけるフック処理の動作を示すフローチャートである。 ファイルクローズ時におけるフック処理の動作を示すフローチャートである。 実施例2に係わるコンピュータ10の機能的な構成の一部を示す図である。 図1に示す暗号化処理プログラム15による暗号化処理の動作を示すフローチャートである。 変形例の一例を示す図である。
符号の説明
10 コンピュータ
11 アプリケーションプログラム
12 暗復号ファイルフックプログラム
13 オペレーティングシステム
14 記憶装置
14a 暗号化ファイル
14b 通常ファイル(非暗号化)
15 暗号化処理プログラム
21 API監視部
21a API呼び出し指示検出部
22 暗号化判定部
23 復号化判定部
24 暗号化処理部
25 復号化処理部
26 ファイル管理情報保持部
27 制御部

Claims (11)

  1. コンピュータを、
    電子ファイル処理に係わるプログラムに対する呼び出し指示を検出する検出手段、
    前記検出手段による検出に対応して前記電子ファイル処理に係わるプログラムの処理対象となる電子ファイルの内容に基づき当該電子ファイルが暗号化対象であるか否かを判定する暗号化判定手段、
    前記暗号化判定手段による判定結果に基づき前記電子ファイルを暗号化する暗号化処理手段
    として機能させるための電子ファイル処理プログラム。
  2. コンピュータを、
    電子ファイル処理に係わるプログラムに対する呼び出し指示を検出する検出手段、
    前記検出手段による検出に対応して前記電子ファイル処理に係わるプログラムの処理対象となる電子ファイルの拡張子に基づき当該電子ファイルが暗号化対象であるか否かを判定する暗号化判定手段、
    前記暗号化判定手段による判定結果に基づき前記電子ファイルを暗号化する暗号化処理手段
    として機能させるための電子ファイル処理プログラム。
  3. 前記コンピュータを、
    前記検出手段により検出した呼び出し指示に対応する処理の実行を制御する制御手段
    として更に機能させるための請求項1または2記載の電子ファイル処理プログラム。
  4. 前記暗号化判定手段は、
    前記検出手段により電子ファイルを閉じる機能を有する電子ファイル処理に係わるプログラムに対する呼び出し指示を検出した場合に、当該処理対象となる電子ファイルが暗号化対象であるか否かを判定する
    請求項1または2記載の電子ファイル処理プログラム。
  5. 前記コンピュータを、
    前記検出手段による検出に対応して当該処理対象となる電子ファイルの内容に基づき当該電子ファイルが復号化対象であるか否かを判定する復号化判定手段、
    前記復号化判定手段による判定結果に基づき前記電子ファイルを復号化する復号化処理手段
    として更に機能させるための請求項1または2記載の電子ファイル処理プログラム。
  6. 前記暗号化処理手段は、
    前記電子ファイルの暗号化に際して該電子ファイルに所定の文字列を書き込み、
    前記復号化判定手段は、
    前記電子ファイルに所定の文字列が書き込まれているか否かにより該電子ファイルが復号化対象であるか否かを判定する
    請求項5記載の電子ファイル処理プログラム。
  7. 前記コンピュータを、
    前記検出手段による検出に対応して当該処理対象となる電子ファイルの拡張子に基づき当該電子ファイルが復号化対象であるか否かを判定する復号化判定手段、
    前記復号化判定手段による判定結果に基づき前記電子ファイルを復号化する復号化処理手段
    として更に機能させるための請求項1または2記載の電子ファイル処理プログラム。
  8. 前記復号化判定手段は、
    前記検出手段により電子ファイルを開く機能を有する電子ファイル処理に係わるプログラムに対する呼び出し指示を検出した場合に、当該処理対象となる電子ファイルが復号化対象であるか否かを判定する
    請求項5または7記載の電子ファイル処理プログラム。
  9. 前記検出手段は、
    オペレーティングシステムの電子ファイル処理に係わるプログラムに対するアプリケーションプログラムからの呼び出し指示を検出する
    請求項1から8のいずれかに記載の電子ファイル処理プログラム。
  10. 電子ファイル処理に係わるプログラムに対する呼び出し指示を検出する検出手段と、
    前記検出手段による検出に対応して前記電子ファイル処理に係わるプログラムの処理対象となる電子ファイルの内容に基づき当該電子ファイルが暗号化対象であるか否かを判定する暗号化判定手段と、
    前記暗号化判定手段による判定結果に基づき前記電子ファイルを暗号化する暗号化処理手段と
    を具備する情報処理装置。
  11. 前記検出手段による検出に対応して当該処理対象となる電子ファイルの内容に基づき当該電子ファイルが復号化対象であるか否かを判定する復号化判定手段と、
    前記復号化判定手段による判定結果に基づき前記電子ファイルを復号化する復号化処理手段と
    を更に具備する請求項10記載の情報処理装置。
JP2006320382A 2006-11-28 2006-11-28 電子ファイル処理プログラムおよび情報処理装置 Pending JP2008134821A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006320382A JP2008134821A (ja) 2006-11-28 2006-11-28 電子ファイル処理プログラムおよび情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006320382A JP2008134821A (ja) 2006-11-28 2006-11-28 電子ファイル処理プログラムおよび情報処理装置

Publications (1)

Publication Number Publication Date
JP2008134821A true JP2008134821A (ja) 2008-06-12

Family

ID=39559640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006320382A Pending JP2008134821A (ja) 2006-11-28 2006-11-28 電子ファイル処理プログラムおよび情報処理装置

Country Status (1)

Country Link
JP (1) JP2008134821A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039837A (ja) * 2008-08-06 2010-02-18 Hitachi Communication Technologies Ltd メーラプログラム
JP4538838B1 (ja) * 2009-08-18 2010-09-08 システムインテリジェント株式会社 仮想シンクライアント化装置、仮想シンクライアント化システム、仮想シンクライアント化プログラム、及び仮想シンクライアント化方法
CN101980160A (zh) * 2010-10-28 2011-02-23 北京飞天诚信科技有限公司 一种.net程序加密后的执行方法
JP2014017826A (ja) * 2013-08-09 2014-01-30 Digital Arts Inc 電子ファイル送信方法
US8793507B2 (en) 2012-03-13 2014-07-29 Nec Corporation Information processing apparatus, file encryption determination method and authority determination method
JP2015207081A (ja) * 2014-04-18 2015-11-19 株式会社日立ソリューションズ クラウド・ストレージ・システム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005222155A (ja) * 2004-02-03 2005-08-18 Nec System Technologies Ltd 機密文書管理装置、機密文書管理方法および機密文書管理プログラム
JP2006209649A (ja) * 2005-01-31 2006-08-10 Nec Corp 機密文書検索システム、機密文書検索方法、および機密文書検索プログラム
JP2006256221A (ja) * 2005-03-18 2006-09-28 Seiko Epson Corp 印刷処理装置、印刷処理方法、印刷処理プログラム、および記録媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005222155A (ja) * 2004-02-03 2005-08-18 Nec System Technologies Ltd 機密文書管理装置、機密文書管理方法および機密文書管理プログラム
JP2006209649A (ja) * 2005-01-31 2006-08-10 Nec Corp 機密文書検索システム、機密文書検索方法、および機密文書検索プログラム
JP2006256221A (ja) * 2005-03-18 2006-09-28 Seiko Epson Corp 印刷処理装置、印刷処理方法、印刷処理プログラム、および記録媒体

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039837A (ja) * 2008-08-06 2010-02-18 Hitachi Communication Technologies Ltd メーラプログラム
JP4538838B1 (ja) * 2009-08-18 2010-09-08 システムインテリジェント株式会社 仮想シンクライアント化装置、仮想シンクライアント化システム、仮想シンクライアント化プログラム、及び仮想シンクライアント化方法
JP2011039953A (ja) * 2009-08-18 2011-02-24 System Intelligent Kk 仮想シンクライアント化装置、仮想シンクライアント化システム、仮想シンクライアント化プログラム、及び仮想シンクライアント化方法
CN101980160A (zh) * 2010-10-28 2011-02-23 北京飞天诚信科技有限公司 一种.net程序加密后的执行方法
CN101980160B (zh) * 2010-10-28 2013-02-13 飞天诚信科技股份有限公司 一种.net程序加密后的执行方法
US8793507B2 (en) 2012-03-13 2014-07-29 Nec Corporation Information processing apparatus, file encryption determination method and authority determination method
JP2014017826A (ja) * 2013-08-09 2014-01-30 Digital Arts Inc 電子ファイル送信方法
JP2015207081A (ja) * 2014-04-18 2015-11-19 株式会社日立ソリューションズ クラウド・ストレージ・システム

Similar Documents

Publication Publication Date Title
US6185684B1 (en) Secured document access control using recipient lists
CA2367778C (en) Secure content objects
US7917771B2 (en) Method for selective encryption within documents
JP4630800B2 (ja) 印刷管理システムおよび印刷管理方法とプログラム
KR101473452B1 (ko) 기업 내부 정보 보안을 강화하기 위한 방법, 시스템 및 장치
EP1662356A2 (en) Information leakage prevention method and apparatus and program for the same
US20090222500A1 (en) Information storage device and method capable of hiding confidential files
JP2007065857A (ja) ファイル処理装置ならびにファイル処理の方法およびプログラム
JP4593549B2 (ja) ファイル自動復号暗号化システムおよびプログラム
JP4662138B2 (ja) 情報漏洩防止方法及びシステム
JP2003345654A (ja) データ保護システム
US20050246526A1 (en) Method for permanent decryption of selected sections of an encrypted document
JP2006323503A (ja) 文書管理装置及びその制御方法、コンピュータプログラム、記憶媒体
JP2008134821A (ja) 電子ファイル処理プログラムおよび情報処理装置
US8793507B2 (en) Information processing apparatus, file encryption determination method and authority determination method
JP4516598B2 (ja) 文書のコピーを制御する方法
US9811675B2 (en) Generation and use of a modified protected file
JP2003242015A (ja) 指定場所を介したファイルアクセス管理
US7900260B2 (en) Method for lifetime tracking of intellectual property
JP3765145B2 (ja) 電子情報配布方法
JP2008134820A (ja) 印刷制限処理プログラムおよび情報処理装置
JP2005165900A (ja) 情報漏洩防止装置
JP2007188307A (ja) データファイル監視装置
JPH10340232A (ja) ファイル複写防止装置及びファイル読込装置
JP2004220400A (ja) ファイル保護方法及びファイル保護プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110816

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111220