以下、本発明を図示する実施形態に基づいて説明する。
<<< §1.第1の実施形態の基本構成 >>>
図1は、本発明の第1の実施形態に係るファイルの暗号処理システムの構成を示すブロック図である。図示のとおり、このシステムの大きな2つの構成要素は、データファイルを暗号化する処理を行う暗号化処理部100(図の上段部分)と、暗号化されたデータファイルを復号化する処理を行う復号化処理部200(図の下段部分)である。
暗号化処理部100の基本機能は、ユーザから与えられた暗号化用パスワードP1を暗号化キーとして利用して、暗号化の対象となる元ファイルF1を暗号化することである。このとき、ユーザが指定した任意のヒント画像Hを合成する点が本発明の特徴である。
図示のとおり、暗号化処理部100は、暗号化用入力ユニット110、暗号化処理ユニット120、ファイル合成ユニット130という3つのユニットによって構成されている。
ここで、暗号化用入力ユニット110は、ユーザの指示に基づいて、暗号化の対象となる元ファイルF1と、暗号化用パスワードP1と、復号化の段階で提示すべきヒント画像Hと、を取り込む機能を果たす。ユーザは、ヒント画像Hとして、任意の画像を指定することができるが、ここでヒント画像Hを指定する目的は、復号化を行う際にパスワードP1を思い出すための手がかりとして利用するためである。したがって、ユーザは、パスワードP1を連想するための手がかりに適した画像を、ヒント画像Hとして指定することになる。
暗号化用入力ユニット110で取り込まれた元ファイルF1および暗号化用パスワードP1は、暗号化処理ユニット120へ引き渡され、ヒント画像Hは、ファイル合成ユニット130へ引き渡される。なお、ヒント画像Hは、実用上は、画像ファイルの形式で暗号化用入力ユニット110に取り込まれ、この画像ファイルがファイル合成ユニット130へ引き渡されることになる。
暗号化処理ユニット120は、暗号化用入力ユニット110から引き渡された元ファイルF1および暗号化用パスワードP1に基づいて暗号化処理を実行する。すなわち、元ファイルF1に対して、暗号化用パスワードP1を用いた所定の暗号化アルゴリズムに基づく暗号化処理を施して暗号ファイルF2を作成する。暗号化処理ユニット120内には、所定の暗号化アルゴリズムを実行するプログラムルーチンが組み込まれており、暗号化用パスワードP1として与えられたテキストデータ(たとえば、英数字の組み合わせ)を暗号化キーとして用い、元ファイルF1を構成するデータに対して当該暗号化アルゴリズムを適用して暗号データに変換し、これを暗号ファイルF2として出力する処理が行われる。もちろん、暗号化処理を行う際には、パスワードP1をそのまま暗号化キーとして用いる代わりに、パスワードP1に基づいて何らかの方法で導出されたキーを暗号化キーとして用いるようにしてもかまわない。
暗号化アルゴリズムとしては、たとえば、AESやDESなど、様々な方式のものが公知であり、与えられたパスワードP1を暗号化キーとして用いて、元ファイルF1を暗号ファイルF2に一義的に変換可能であり、かつ、パスワードP1を用いた復号化アルゴリズムによって、暗号ファイルF2を元ファイルF1に復元することが可能なアルゴリズムであれば、どのようなものを用いてもかまわない。したがって、この暗号化処理ユニット120自体は、既に公知の構成要素である。
これに対して、ファイル合成ユニット130は、本発明に固有の構成要素であり、暗号化用入力ユニット110から引き渡されたヒント画像Hを構成するデータと、暗号化処理ユニット120で作成された暗号ファイルF2を構成するデータと、を合成して、合成画像ファイルF3を作成する機能を果たす。ここで、合成画像ファイルF3は、後に例示するとおり、「ヒント画像H」と、「暗号ファイルF2を構成するデータの情報をもった画素の集合体からなる暗号画像E」と、を含む合成画像Cを表示するための画像ファイルである。
結局、暗号化処理部100は、元ファイルF1、暗号化用パスワードP1、ヒント画像Hに基づいて、合成画像ファイルF3を生成する機能を果たす。ユーザから見れば、元ファイルF1が、暗号化処理部100によって、合成画像ファイルF3に変換されたように見える。この合成画像ファイルF3のファイルフォーマットは、一般的なコンピュータで閲覧可能な画像ファイルのフォーマットになっており、ここに示す実施形態の場合、後述するように、ファイル名に画像ファイルの拡張子が付加されている。
ユーザは、こうして得られた合成画像ファイルF3を、任意の格納場所に保管することができる。暗号化が行われているため、保管中に第三者によって合成画像ファイルF3が不正に取得されたとしても、暗号が破られない限り、十分なセキュリティが確保される。また、正規のユーザであれば、必要なときに、保管中の合成画像ファイルF3から、元ファイルF1を復元することが可能である。
復号化処理部200は、このような元ファイルF1の復元処理を行うための構成要素であり、合成画像ファイルF3と復号化用パスワードP2とを与えることにより、元ファイルF1を復元して出力する処理を行う。本発明の特徴は、この復号化処理部200が、合成画像Cを提示する機能を有している点である。ユーザは、提示された合成画像Cに含まれているヒント画像Hを目にすることにより、復号化用パスワードP2を連想することができる。
なお、ここに示す実施形態の場合、復号化用パスワードP2は、暗号化用パスワードP1と全く同一のパスワードである。暗号化用パスワードP1は、暗号化アルゴリズムにおいて暗号化キーとして利用されるデータであり、復号化用パスワードP2は、復号化アルゴリズムにおいて復号化キーとして利用されるデータである。暗号化アルゴリズムと復号化アルゴリズムとは、互いに逆の論理アルゴリズムであり、復号化に用いる復号化キーは、通常、暗号化に用いた暗号化キーと全く同一のキーになる。
ただ、必要に応じて、両者を異ならせる運用も可能である。たとえば、「復号化用パスワードP2」として、「暗号化用パスワードP1の文字列」+「現在の日付を示す文字列」という取り決めを行っておき、復号化処理部200内では、まず、与えられた「復号化用パスワードP2」内の「現在の日付を示す文字列」の部分をチェックし、正しい日付である場合に限り、「暗号化用パスワードP1の文字列」の部分を用いて復号化処理を実行する、という運用を採ることも可能である。このような運用を採れば、万一、「暗号化用パスワードP1」が盗用されたとしても、盗用者が「復号化用パスワードP2」=「暗号化用パスワードP1の文字列」+「現在の日付を示す文字列」という取り決めを知らなければ、元ファイルの復元を行うことができず、より安全性を高めることができる。したがって、復号化用パスワードP2は、何らかの取り決めに基づいて、暗号化用パスワードP1に対して対応するパスワードであれば、必ずしも暗号化用パスワードP1と同一である必要はない。
図示のとおり、復号化処理部200は、復号化用入力ユニット210、合成画像表示ユニット220、ファイル分離ユニット230、復号化処理ユニット240という4つのユニットによって構成されている。
ここで、復号化用入力ユニット210は、ユーザの指示に基づいて、復号化の対象となる合成画像ファイルF3と、暗号化用パスワードP1に対応した復号化用パスワードP2と、を取り込む機能を果たす。上述したとおり、ここで述べる実施形態の場合、暗号化用パスワードP1と復号化用パスワードP2とは同一のパスワードである。ユーザは、復号化用入力ユニット210に対して、復号化の対象となる合成画像ファイルを指定する操作を行うとともに、復号化用パスワードP2を入力する操作を行う。復号化用入力ユニット210が取り込んだ合成画像ファイルF3は、合成画像表示ユニット220およびファイル分離ユニット230へ引き渡され、復号化用パスワードP2は、復号化処理ユニット240へ引き渡される。
合成画像表示ユニット220は、引き渡された合成画像ファイルF3に基づいて、ディスプレイ画面上に合成画像Cを表示する機能を果たす。前述したとおり、合成画像Cは、「ヒント画像H」と、「暗号ファイルF2を構成するデータの情報をもった画素の集合体からなる暗号画像E」と、を含む画像であり、ユーザは、この合成画像Cに含まれるヒント画像Hの部分を見て、復号化用パスワードP2(暗号化用パスワードP1)を思い出すことができる。なお、合成画像ファイルF3のファイルフォーマットは、一般的なコンピュータで閲覧可能な画像ファイルのフォーマットであるため、実際には、合成画像表示ユニット220の機能は、一般的なコンピュータに組み込まれている画像ファイルの閲覧機能によって実現できる。
ファイル分離ユニット230は、合成画像ファイルF3から、暗号ファイルF2を分離抽出する処理を行う。上述したとおり、合成画像ファイルF3は、ファイル合成ユニット130によって、ヒント画像Hを構成するデータと暗号ファイルF2を構成するデータとを合成することによって得られたファイルであるので、この合成処理と逆の処理を行えば、暗号ファイルF2を分離することができる。こうして分離された暗号ファイルF2は、復号化処理ユニット240へ引き渡される。
復号化処理ユニット240は、ファイル分離ユニット230によって抽出された暗号ファイルF2に対して、復号化用パスワードP2を用いた所定の復号化アルゴリズムに基づく復号化処理を施し、元ファイルF1を復元して出力する。もちろん、ここで用いられる復号化アルゴリズムは、暗号化処理ユニット120で用いられた暗号化アルゴリズムに対応するアルゴリズムであり、暗号化のプロセスと論理的に逆のプロセスを行うことにより、元ファイルF1の復号化が行われる。
以上、図1のブロック図を参照しながら、本発明の第1の実施形態に係るファイルの暗号処理システムの基本構成を説明したが、実用上、このシステムは、パソコン等の汎用コンピュータに専用のアプリケーションプログラムを組み込むことにより実現することができる。たとえば、暗号化処理ユニット120および復号化処理ユニット240は、市販の暗号化/復号化アプリケーションソフトウエアをインストールすることによって実現可能である。また、合成画像表示ユニット220は、上述したように、一般的なコンピュータに組み込まれている画像ファイルの閲覧機能によって実現できる。一方、暗号化用入力ユニット110および復号化用入力ユニット210は、コンピュータに用意されているキーボードやマウスなどの入力用ハードウエア機器と連携するプログラムにより実現可能であり、ファイル合成ユニット130およびファイル分離ユニット230は、後に例示するような所定の規則に基づいて、ファイルの合成や分離を行うプログラムにより実現可能である。
<<< §2.第1の実施形態の具体的な実施例 >>>
ここでは、図2〜図7を参照しながら、§1で述べた暗号処理システムのより具体的な実施例を説明する。
図2は、図1に示す暗号化用入力ユニット110によって表示される暗号化処理用操作画面10の初期状態を示す平面図である。上述したとおり、本発明に係るシステムは、実用上は、パソコンに特定のプログラムを組み込むことによって実現できる。そこで、ここで述べる実施例のシステムでは、暗号化処理部100を起動すると、暗号化用入力ユニット110によって、このパソコン用ディスプレイの画面上に、図2に示すような暗号化処理用操作画面10が初期画面として表示される。
図示のとおり、暗号化処理用操作画面10には、元ファイル指定欄11、パスワード入力欄12、ヒント画像指定欄13、ヒント画像表示欄14、ファイル選択欄15が配置されている。ファイル選択欄15には、このパソコンに接続されているハードディスクなどの記憶装置内に格納されている所定フォルダ内のファイルのリストが表示される。ユーザは、このファイル選択欄15に表示されたリストから、所望のファイルを選択して、元ファイルもしくはヒント画像ファイルとして指定することができる。
たとえば、ファイル選択欄15内の任意のファイル名を、元ファイル指定欄11へドラッグする操作により、元ファイルの指定操作を行い、ヒント画像指定欄13へドラッグする操作により、ヒント画像の指定操作を行うことができるように構成しておけば、ユーザは一覧リストからのドラッグ操作で、所望のファイルを指定することができる。もちろん、元ファイル指定欄11やヒント画像指定欄13に対して、所望のファイル名をキーボードから直接入力することにより、ファイルを指定できるようにしてもよい。
一方、パスワード入力欄12には、キーボードを利用して任意の文字列を暗号化用パスワードP1として入力することができる。ここで入力したパスワードP1は、§1で述べたとおり、暗号化処理における暗号化キーとして用いられるとともに、復号化処理における復号化キーとしても用いられる。このため、ユーザは、入力したパスワードP1を記憶しておく必要がある。ヒント画像Hは、このパスワードP1を思い出させるためにユーザによって指定された画像である。この実施例では、ヒント画像指定欄13に、ヒント画像Hの画像ファイル名を入力すると、ヒント画像表示欄14に当該ヒント画像Hが表示されるので、ユーザは、どの画像をヒント画像Hとして指定したかを直観的に認識することができる。ヒント画像表示欄14は必須のものではないが、実用上は、ヒント画像Hの取り違えを避けるために、設けるのが好ましい。
図3は、図2の操作画面上にユーザが入力操作を行った状態を示す平面図である。この例では、ファイル選択欄15に表示されているリストの中から、「FF003.doc」なるファイル名をもつ文書ファイルが元ファイルとして指定され、「FF006.jpg」なるファイル名をもつ画像ファイルがヒント画像ファイルとして指定されており、各ファイル名は、それぞれ元ファイル指定欄11およびヒント画像指定欄13に表示されている。また、パスワード入力欄12には、「White John」なる文字列が暗号化用パスワードとして入力されている。なお、ヒント画像表示欄14に表示されている画像は、「FF006.jpg」なるファイル名をもつ画像ファイルの画像、すなわち、ユーザが指定したヒント画像Hである。
ユーザは、ヒント画像Hとして、任意の画像を指定することができるが、本来の趣旨に準ずれば、パスワード入力欄12に入力したパスワードを連想することができる画像を指定することになる。もちろん、パスワードとは無関係な画像を指定しても、システムは正常動作するが、そのようなヒント画像は、復号時にパスワードを思い出すための役には立たない。
ここでは、説明の便宜上、ユーザが、自分が飼っている犬の名前「White John」を暗号化用パスワードP1として入力し、その犬の写真をヒント画像Hに指定したものとしよう。犬の写真は、必要があれば、デジカメなどで撮影した画像ファイルをパソコンに取り込めばよい。もちろん、ヒント画像Hは、実際に飼っている犬の写真である必要はないので、たとえば、インターネットなどからダウンロードした任意の犬の写真やイラストをヒント画像Hとして利用してもかまわない。
以上で、暗号化用入力ユニット110に対する入力操作は完了である。すなわち、コンピュータに対して、暗号化の対象となる元ファイルF1と、暗号化用パスワードP1と、復号化の段階で提示すべきヒント画像Hと、が入力されたことになる。ここで、ユーザが、処理を更に進める指示を与えると(たとえば、図示されていない「暗号化開始」ボタンをクリックすると)、暗号化処理ユニット120およびファイル合成ユニット130による処理が実行される。
図4は、図1に示す暗号化処理部100における合成画像ファイルF3の作成処理手順を示すブロック図である。まず、第1段階として、暗号化処理ユニット120において、元ファイルF1(この例の場合、ファイル名「FF003.doc」なる文書ファイル)に対して、暗号化用パスワードP1(この例の場合、「White John」なる文字列)を用いた所定の暗号化アルゴリズムに基づく暗号化処理が施され、暗号ファイルF2を作成する処理が行われる。続く第2段階では、ファイル合成ユニット130において、ヒント画像Hを構成するデータ(この例の場合、ファイル名「FF006.jpg」なる画像ファイル内のデータ)と、暗号ファイルF2を構成するデータと、を合成し、「ヒント画像H」と、「暗号ファイルF2を構成するデータの情報をもった画素の集合体からなる暗号画像E」と、を含む合成画像Cを表示するための合成画像ファイルF3が作成される。
合成画像ファイルF3は、画像ファイルとしてのフォーマットをもったファイルであり、図示の実施例の場合、「FF003.jpg」なるファイル名をもったファイルになる。これは、ファイル合成ユニット130が、元ファイルF1のファイル名の本体部「FF003」に、ヒント画像Hのファイル名の拡張子「jpg」を加える、という規則で、合成画像ファイルF3のファイル名を自動付与する機能をもっているためである。
もっとも、このような規則では、元ファイルF1が画像ファイルであったような場合、合成画像ファイルF3のファイル名が元ファイルF1のファイル名と同一になってしまう可能性がある。たとえば、元ファイルF1が「FF003.jpg」なるファイル名であった場合、上述の規則では、合成画像ファイルF3のファイル名も同じ「FF003.jpg」になってしまう。このように、ファイル名が同一になってしまう場合には、たとえば、元ファイルF1のファイル名の本体部「FF003」に「X」を付加し、拡張子としてヒント画像Hのファイル名の拡張子「jpg」を加える、というような規則を定めておけば、合成画像ファイルF3には「FF003X.jpg」なる新たなファイル名が付与されることになり、元ファイルと同一のファイル名が付与されてしまうことを避けることができる。
また、必要に応じて、合成画像ファイルF3を作成する際に、元ファイルF1のファイル属性とは異なる属性設定が自動的に行われるようにしてもよい。たとえば、一般的なOSでは、個々のファイルについて「ロック状態(書き込み禁止状態)」か否かを示すファイル属性を設定する機能が備わっている。「ロック状態」を示す属性が設定されたファイルについては、上書き保存が禁止されることになる。特に、元ファイルF1のファイル名と類似したファイル名をもつ合成画像ファイルF3が作成される実施例の場合、合成画像ファイルF3に対して誤って上書き保存操作がなされる危険性があるので、作成する合成画像ファイルF3に「ロック状態」を示す属性を自動設定することは有用である。
こうして作成された合成画像ファイル「FF003.jpg」を、パソコン用の一般的な画像閲覧プログラム(拡張子「jpg」で示される画像フォーマットに対応した画像閲覧プログラム)で開くと、図4の下段に示すような合成画像Cが表示される。ここで、合成画像Cの左上部分には、ヒント画像Hが配置されているが、その余のハッチングを施して示す部分は暗号画像Eになる。この暗号画像Eは、暗号ファイルF2を構成するデータによって表示される画像である。もちろん、暗号ファイルF2は、そもそも画像を表示するためのファイルではないので、暗号ファイルF2を構成するデータによって表示される暗号画像Eは、人間にとっては無意味な画像ということになり、いわば「砂嵐」のようなノイズ画像として認識されることになる。
なお、図示の例の場合、元ファイルF1として「FF003.doc」なる文書ファイルを指定した例が示されているが、元ファイルF1には、どのようなタイプのファイルを指定してもかまわない。もちろん、画像ファイルを元ファイルF1として指定することも可能である。この場合、暗号ファイルF2は、画像ファイルを暗号化することによって得られるファイルになるが、暗号化が行われているため、そのままの状態では、意味のある画像ファイルの形態をなさない。したがって、元ファイルF1が画像ファイルであったとしても、合成画像C内の暗号画像Eの部分は、「砂嵐」のようなノイズ画像として認識されることになり、元ファイルF1を開いたときに得られる本来の画像が暗号画像Eの部分に表示されることはない。
本発明に係るシステムの暗号化処理部100によって作成される合成画像ファイルF3は、次のような特徴を有している。まず、第1に、全体として画像ファイルとしてのフォーマットをもっており、一般的な画像閲覧用アプリケーションで開くと、合成画像Cが表示される。第2に、この合成画像Cの一部には、ヒント画像Hが含まれており、ユーザにパスワードを連想させることができる。第3に、暗号ファイルF2の情報が含まれており、この暗号ファイルF2の部分を分離して復号化すれば、元ファイルF1を復元することができる。
このような特徴を有しているため、合成画像ファイルF3は、一般の画像ファイルと同等に取り扱うことができる。既に述べたとおり、現在、インターネット経由のデータ保管サービスが広く普及しており、世界中のどこからでもデータファイルを預けることができ、また、世界中のどこからでもデータファイルを取り出すことができる。特に、画像ファイルを保管するサービス(いわゆる、Webの画像アーカイブサービス)は、個人レベルのユーザにも広く普及しており、世界中の多くのユーザが、このようなサービスを利用して、デジカメの撮影画像などを保管用サーバにアップロードしている。
これは本発明の有用性が極めて高いことを示している。すなわち、暗号化処理部100によって作成される合成画像ファイルF3は、コンピュータのシステム側から見れば、一般の画像ファイルと全く同等のファイルであるため、上述したような画像ファイルの保管サービスを利用して、世界中のどこからでも預けることができ、また、世界中のどこからでも取り出すことができる。その上、元ファイルF1の情報は、暗号化されているため、万一、合成画像ファイルF3が第三者の手に渡ったとしても、暗号が破られない限り安全である。
しかも、正規のユーザに対しては、暗号化に用いたパスワードに関するヒントを、簡便な方法で提示することが可能である。すなわち、元ファイルF1を復元する際には、暗号化に用いたパスワードが必要になるが、ユーザは、合成画像ファイルF3を画像ファイルとして開く操作を行うだけで、ヒント画像Hの提示を受けることができる。暗号ファイルの情報とヒント画像の情報とが、合成画像ファイルF3という同一のファイル内に組み込まれており、しかも、この合成画像ファイルF3が画像ファイルの形式を採るため、画像閲覧用プログラムで開く操作を行うだけで、ヒント画像Hを確認することができ、ユーザにとっての復号化作業は極めて簡便になる。
図5は、図1に示す復号化用入力ユニット210によって表示される復号化処理用操作画面20の初期状態を示す平面図である。ここで述べる実施例のシステムでは、復号化処理部200を起動すると、復号化用入力ユニット210によって、パソコン用ディスプレイの画面上に、図5に示すような復号化処理用操作画面20が初期画面として表示される。
図示のとおり、復号化処理用操作画面20には、対象ファイル指定欄21、パスワード入力欄22、合成画像表示欄23、ファイル選択欄24が配置されている。ファイル選択欄24には、このパソコンに接続されているハードディスクなどの記憶装置内に格納されている所定フォルダ内のファイル名のリストが表示される。ユーザは、このファイル選択欄24に表示されたリストから、所望のファイルを対象ファイルとして指定することができる。
たとえば、ファイル選択欄24内の任意のファイル名を、対象ファイル指定欄21へドラッグする操作により、対象ファイルの指定操作を行うことができる。あるいは、ファイル選択欄24内の任意のファイル名をクリックする操作により、当該ファイル名が対象ファイル指定欄21に自動的にコピーされるようにしてもよい。もちろん、対象ファイル指定欄21に対して、所望のファイル名をキーボードから直接入力することにより、ファイルを指定できるようにしてもよい。
この対象ファイル指定欄21で指定すべきファイルは、かつて暗号化処理部100で作成され、今回、復号化処理の対象となる合成画像ファイルF3である。もし、当該合成画像ファイルF3を、前述したインターネット経由のデータ保管サービスなどに預けている場合には、復号化処理部200を構成するパソコンの記憶装置内にダウンロードしておくようにする。もちろん、ファイル選択欄24内に、このデータ保管サービスに保管中のファイルのファイル名リストを表示できるようにしておき、ファイル選択欄24で選択したファイルが、自動的にダウンロードされるような構成にしてもかまわない。
一方、パスワード入力欄22には、キーボードを利用して任意の文字列を復号化用パスワードP2として入力することができる。ここで入力したパスワードP2は、§1で述べたとおり、復号化処理における復号化キーとして用いられる。本来、この復号化用パスワードP2は、ユーザが記憶に基づいて入力すべき情報であるが、本発明に係るシステムでは、合成画像表示ユニット220の機能によって、ユーザの記憶を呼び覚ますためのヒント画像Hを表示する処理が実行される。すなわち、ユーザが、対象ファイルを指定する処理を行い、特定の合成画像ファイルF3が決定すると、合成画像表示ユニット220によって、合成画像表示欄23内に、当該合成画像ファイルF3に基づく画像表示が行われる。
図6は、図5の操作画面上において、ユーザが「FF003.jpg」なるファイル名をもつ特定の合成画像ファイルを、対象ファイルとして指定する入力操作を行った状態を示す平面図である。図示のとおり、対象ファイル指定欄21には、指定されたファイル名「FF003.jpg」が表示され、合成画像表示欄23には、当該ファイルに基づく合成画像Cが表示されている。ユーザは、この合成画像C内の一部分に、ヒント画像Hを認識することができる。前述したとおり、合成画像C内のその余の部分(ハッチング部分)は、「砂嵐」のように見える暗号画像Eであるから、ヒント画像Hの視認性は極めて良好である。
この図6に示す復号化処理用操作画面20を見たユーザは、ヒント画像Hからの連想により、現在、復号化の対象となっている「FF003.jpg」なるファイルについてのパスワードが「White John」なる文字列であることを思い出すことができる。そこで、ユーザは、パスワード入力欄22に、「White John」なる文字列を復号化用パスワードP2として入力することができる。
以上で、復号化用入力ユニット210に対する入力操作は完了である。すなわち、コンピュータに対して、復号化の対象となる合成画像ファイルF3と、復号化用パスワードP2と、が入力されたことになる。ここで、ユーザが、処理を更に進める指示を与えると(たとえば、図示されていない「復号化開始」ボタンをクリックすると)、ファイル分離ユニット230および復号化処理ユニット240による処理が実行される。
図7は、図1に示す復号化処理部200におけるファイル分離処理および復号化処理の手順を示すブロック図である。まず、第1段階として、ファイル分離ユニット230において、合成画像ファイルF3(この例の場合、ファイル名「FF003.jpg」なる文書ファイル)から、暗号ファイルF2を分離抽出する処理が行われる。この処理は、ファイル合成ユニット130で行われたプロセスと逆のプロセスの処理ということになる。
続く第2段階では、分離された暗号ファイルF2に対して、復号化用パスワードP2(この例の場合、「White John」なる文字列)を用いた所定の復号化アルゴリズムに基づく復号化処理が実行され、元ファイルF1が復元される。この処理は、暗号化処理ユニット120で行われたプロセスと逆のプロセスの処理ということになる。もちろん、与えられた復号化用パスワードP2が正しいパスワードであれば、正しい復号化が行われ、復元された元ファイルF1は、暗号化の対象となった元ファイルF1と同一のものになる。
なお、ここに示す例の場合、復号化処理ユニット240は、元ファイルF1の拡張子を含めたファイル名「FF003.doc」を復元する機能を有しており、復元された元ファイルF1は、「FF003.doc」なるファイル名が付されたファイルとして、このシステムを構成するパソコンの記憶装置へ出力される。なお、元ファイルF1のファイル名を復元するための具体的な方法については、§3で述べる。
<<< §3.補助情報を付加する実施例 >>>
§1,§2で述べたとおり、図1に示す暗号化処理部100では、暗号ファイルF2のデータとヒント画像Hのデータとを合成することにより、合成画像ファイルF3が作成される。ここでは、更に、復号化処理部に伝達すべき補助情報を付加した合成画像ファイルF3を作成する実施例を述べることにする。
図8は、補助情報が付加された合成画像Cの詳細構成を示す平面図である。具体的には、ここに示す合成画像Cは、960×1280画素のサイズをもった画像であり、その左上部分に、480×640画素のサイズをもったヒント画像Hが配置されている。図に斜線のハッチングを施して示す部分は暗号画像Eである。既に述べたとおり、この暗号画像Eは、暗号ファイルF2を構成するデータの情報をもった画素の集合体からなり、人間にとっては、無意味な「砂嵐」のような画像として把握される。
図8の右下部分に示す補助情報画像Aは、この§3で述べる補助情報に対応する画像であり、後述する補助情報を構成するデータに対応する画素の集合体からなり、人間にとっては、やはり無意味な「砂嵐」のような画像として把握される。なお、図にドットのハッチングを施して示す部分はダミー画像Dである。このダミー画像Dは無意味なダミーデータに対応する画素の集合体からなる。ダミーデータを付加するのは、合成画像Cのサイズを所定の定型サイズ(この例では、960×1280画素のサイズ)に維持するためである。すなわち、ヒント画像H、暗号画像E、補助情報画像Aの画素数を合計しても、960×1280画素に満たない場合、残りを無意味なダミーデータからなるダミー画像Dで埋めることになる。
図9は、一般的なラスター形式の画像ファイルにおける画素構成を示す平面図である。図示のとおり、多数の画素が縦横に二次元マトリックス状に配置されており、カラー画像の場合、個々の画素は、たとえば、三原色R,G,Bの画素値を有している。ここでは、説明の便宜上、個々の画素が、それぞれR値,G値,B値という3種類の画素値を有しており、1つの画素値が1バイトの情報(0〜255の階調値)で表されるものとしよう。この場合、1つの画素は3バイトのデータに対応する。
図9に示すとおり、第i行目第j列目の画素をP(i,j)とすれば、図8に示す合成画像Cの左上の画素はP(1,1)、右下の画素はP(960,1280)ということになる。実際の画像ファイルのフォーマットは様々であるが、たとえば、1つの画素の3バイトの画素値を、R値,G値,B値の順に並べることとし、画素の順序として、まず第1行目の画素をP(1,1),P(1,2),P(1,3),... ,P(1,1280)と行方向に並べ、次に第2行目の画素をP(2,1),P(2,2),P(2,3),... ,P(2,1280)と行方向に並べてゆく方式を採ることにすれば、合成画像ファイルF3のデータ構造は、たとえば、図10に示すようなものになる。
図示のとおり、合成画像ファイルF3を構成するデータは、ヘッダ部hから始まり、フッタ部fで終わり、ヘッダ部hとフッタ部fとによって挟まれた中間部分が、合成画像Cを構成する画素データということになる。合成画像Cを構成する個々の画素の並び順を上述のとおりに定めた場合、図示のとおり、画素データの先頭は「画素P(1,1)のR値,G値,B値」の3バイトのデータになる。ここで、画素P(1,1)は、ヒント画像Hの左上の画素である。以下、「画素P(1,2)のR値,G値,B値」,「画素P(1,3)のR値,G値,B値」,... ,「画素P(1,1280)のR値,G値,B値」と続き、最後は、「画素P(960,1279)のR値,G値,B値」,「画素P(960,1280)のR値,G値,B値」で終わる。
上述の画素データの並び順は、図8に示す合成画像を水平方向に走査したものに対応するので、ヒント画像Hを構成するデータと暗号画像Eを構成するデータとは、入り乱れた順序で配列されることになる。図10において、右側に「H&E」と標記した部分は、このようにヒント画像Hを構成するデータと暗号画像Eを構成するデータとが入り乱れて配置された部分である。ファイル合成ユニット130は、ヒント画像Hを構成するデータと、暗号画像Eを構成するデータとを所定の規則で合成し、この「H&E」と標記した部分のデータを作成する。そして、その次にダミー画像Dに対応するダミーデータを配置し、最後に補助情報画像Aに対応する補助情報データを配置する。こうして作成された合成画像Cを構成する画素データを挟むように、ヘッダ部hとフッタ部fとを付加すれば、合成画像ファイルF3が出来上がる。
なお、補助情報データは、たとえば、「データ容量を300バイトとし、合成画像Cを構成する最後の画素データとなるように配置する」というように予め決めておくのが好ましい。この場合、図8に示す合成画像Cのうち、画素P(960,1181)〜画素P(960,1280)の100画素分が補助情報画像Aということになる。ダミーデータは、「H&E」と標記した部分と「A」と標記した部分との間の空白部分を埋めるデータということになる。
このように、暗号化処理部100内のファイル合成ユニット130に、補助情報を合成画像C内に埋め込んで合成画像ファイルF3を作成する機能をもたせておくようにし、復号化処理部200内のファイル分離ユニット230に、合成画像ファイルF3から、この補助情報を分離抽出する処理を行う機能をもたせておくようにすれば、暗号化処理部100から復号化処理部200に対して、補助情報を伝達することができる。
具体的には、図8に示す例のように、ファイル合成ユニット130は、所定の補助情報をもった画素の集合体からなる補助情報画像Aを作成した上で、ヒント画像Hと、暗号画像Eと、補助情報画像Aと、を含む合成画像Cを表示するための合成画像ファイルF3を作成すればよい。このとき、n行m列の画素配列(n,mは整数)を形成することが可能な合成画像Cを作成することとし、合成画像Cを構成するために用意されたデータの総量が、この画素配列を定義するために必要なデータの総量に満たない場合には、不足部分にダミーデータを付加することにより、合成画像Cの作成を行えばよい。
一方、ファイル分離ユニット230には、当該合成画像Cから、補助情報画像Aを切り出すことにより補助情報の分離抽出を行う機能を設けておくようにする。上例のように、「データ容量を300バイトとし、合成画像Cを構成する最後の画素データとなるように配置する」というように、位置とサイズを予め定めておけば、ファイル分離ユニット230は、合成画像Cを構成する画素データの末尾の300バイトを切り出す処理を行うことにより、補助情報の分離抽出を容易に行うことができる。
なお、図10に示す例において、合成画像Cを構成する画素データ(いわば、合成画像Cの本体部)の前後にヘッダ部hおよびフッタ部fを付加しているのは、「jpg」形式をはじめとする多くの画像ファイルのフォーマットが、そのようなデータ構造を採っているためである。たとえば、「jpg」形式のファイルフォーマットの場合、ヘッダ部hの先頭の2バイトは「FF D8」で始まり、続いて、ファイルフォーマットや画像サイズなどの情報が配置されることが決められており、また、フッタ部fの最後には、ファイルの末尾を示す末尾符号「EOF」(「jpg」形式の場合、「EOI」(End of Image)マーカと呼ばれており、具体的には「FF D9」なる2バイトのデータと定められている)を置くことが決められている。別言すれば、このような規則に基づくヘッダ部hおよびフッタ部fによって挟まれた部分のデータは、「jpg」形式の画像を示すデータとして取り扱われることになるので、「jpg」形式の画像データに対応した画像閲覧用アプリケーションプログラムであれば、合成画像Cとして表示することが可能になる。
なお、図8および図10に示す実施例の場合、補助情報を合成画像Cの右下部分に補助情報画像Aとして組み込んでいるが、補助情報の組み込み位置は、必ずしもこの位置に限定されるものではない。ただ、ファイル分離ユニット230による補助情報の分離抽出処理を単純化するためには、図示の例のように、合成画像Cを構成する画素データの最後の部分に補助情報を組み込むのが好ましい。
また、別な方法として、ファイル合成ユニット130が、補助情報をヒント画像H内に潜像として埋め込む処理を行うようにし、ファイル分離ユニット230が、このヒント画像H内に潜像として埋め込まれている補助情報を読み出すことにより分離抽出を行うようにしてもよい。暗号画像Eの部分は、暗号ファイルF2を構成する重要なデータであるため、潜像の埋め込み処理によってデータが改変されてしまうと、後の復号化処理に支障が生じてしまう。これに対して、ヒント画像Hの部分は、ユーザの視覚的認識を妨げない程度であれば、潜像の埋め込み処理によってデータが改変されても支障は生じない。
実際、480×640画素程度のサイズをもったヒント画像Hであれば、300バイト程度の補助情報を潜像として埋め込んでも、人間の眼で観察する限り、画像の変化は感じとれない。なお、デジタル画像中に何らかのデジタルデータを潜像として埋め込む技術および潜像として埋め込まれているデジタルデータを読み出す技術は、既に様々な方法が公知であるため、ここでは詳しい説明は省略する。
続いて、上述した補助情報の様々な利用形態を述べる。そもそもこの補助情報は、暗号化処理部100から復号化処理部200へ伝達されるべき情報として利用されるものである。しかも、あたかも蝶によって運ばれる花粉の如く、合成画像ファイルF3内の一情報として、合成画像ファイルF3の移動によって伝達される情報ということになる。
この補助情報のもうひとつの特徴は、「合成画像Cを構成する画素データ内に組み込まれる情報である」という点である。換言すれば、「ヘッダ部hやフッタ部fに組み込まれる情報ではない」という点である。ヘッダ部hやフッタ部fのデータ構造は、個々の画像ファイルのフォーマット規則によって定められているため、この規則に反するような情報をヘッダ部hやフッタ部fに書き込むことはできない。ところが、本発明における補助情報は、合成画像C内の部分画像として組み込まれるため、ヘッダ部hやフッタ部fに組み込む情報のような制限を受けることはない。このため、補助情報の利用形態は多岐にわたる。以下の§4では、この補助情報の具体的な利用形態をいくつか例示する。
<<< §4.補助情報の具体的な利用形態 >>>
(1) ファイル名の伝達
補助情報の代表的な利用形態は、元ファイルのファイル名の復元に利用する利用形態である。まず、ファイル合成ユニット130には、元ファイルF1のファイル名を含む補助情報を作成する機能をもたせておく。また、作成した合成画像ファイルF3には、新たなファイル名を付与するようにする。たとえば、図4に示す例の場合、元ファイルF1のファイル名「FF003.doc」がそのまま補助情報として合成画像ファイルF3内に組み込まれることになり、当該合成画像ファイルF3に対しては、新たなファイル名「FF003.jpg」が付与される。新たなファイル名は、たとえば、前述したように、原則として「元ファイルF1のファイル名の本体部にヒント画像のファイル名の拡張子を加える」という規則を定めておき、もし、ファイル名の重複が生じる場合には、たとえば、元ファイルF1のファイル名の本体部「FF003」に「X」を追加する、というような規則を定めておけばよい。
一方、復号化処理ユニット240には、ファイル分離ユニット230によって分離抽出した補助情報に含まれているファイル名「FF003.doc」を、復元した元ファイルにそのまま付与する機能をもたせておけばよい。そうすれば、図7に示す例のように、元ファイルF1が、ファイル名とともに復元されることになる。そうすれば、暗号化前の元ファイルF1と復元した元ファイルF1とは、「FF003.doc」という完全に同一のファイル名になり、また、暗号ファイルを含む合成画像ファイルF3には、「FF003.jpg」という関連したファイル名(拡張子のみが異なるファイル名)が付与されるため、ファイル相互間の関連づけが容易に把握できるようになる。
もっとも、ファイル名の関連づけを把握する必要がない場合は、それぞれ任意の規則でファイル名を付与するようにしてもかまわない。実際、図1に示すシステムにおいて、暗号化前の元ファイルF1のファイル名と、復元された元ファイルF1のファイル名とは、必ずしも同一である必要はなく、また、合成画像ファイルF3のファイル名も関連したファイル名である必要はない。ただ、拡張子の部分は、ファイルフォーマットを示す情報として利用されるので、少なくとも拡張子の部分に関しては、暗号化前の元ファイルF1のファイル名の拡張子と、復元された元ファイルF1のファイル名の拡張子とが同一となるようにし、合成画像ファイルF3のファイル名の拡張子は、当該画像ファイルのフォーマットを示す拡張子になるようにするのが好ましい。
この場合、ファイル合成ユニット130には、元ファイルF1のファイル名に含まれている拡張子を利用して、当該拡張子を含む補助情報を作成し、合成画像ファイルF3には、当該合成画像ファイルF3のファイルフォーマットを示す新たな拡張子を含むファイル名を付与する機能をもたせておくようにする。一方、復号化処理ユニット240には、少なくとも、ファイル分離ユニット230によって分離抽出した補助情報に含まれている拡張子を含むファイル名を、復元した元ファイルに付与する機能をもたせておけばよい。
なお、元ファイルのファイル名を復号化処理部200に伝達する方法は、補助情報を利用する方法に限定されるものではない。たとえば、合成画像ファイルF3のファイル名の中に、元ファイルF1のファイル名(拡張子まで含めた全ファイル名)を含ませる方法でも、元ファイルのファイル名を復号化処理部200に伝達することが可能である。
たとえば、ファイル合成ユニット130が、「元ファイルのファイル名の末尾に『.jpg』を付加する」という規則で合成画像ファイルF3のファイル名を命名するようにすれば、元ファイルのファイル名は、合成画像ファイルF3のファイル名にすっぽりと収容された形で復号化処理部200に伝達されることになる。具体例で示せば、元ファイルF1のファイル名が「FF003.doc」であった場合、合成画像ファイルF3には、「FF003.doc.jpg」というファイル名が付与されることになる。この場合、当該ファイルの真の拡張子は「.jpg」ということになり、「FF003.doc」の部分が、当該ファイルのファイル名本体部ということになる。そこで、復号化処理部200側では、「合成画像ファイルF3に付されているファイル名の末尾の『.jpg』を除去する」という規則で、復元した元ファイルのファイル名を命名するようにすれば、元ファイルのファイル名「FF003.doc」が復元されることになる。
(2) サイズ・位置等の伝達
補助情報の別な利用形態は、暗号ファイルF2のデータ量を伝達する形態である。すなわち、ファイル合成ユニット130に、暗号ファイルF2のデータ量を含む補助情報を作成し、当該補助情報を組み込んだ合成画像ファイルF3を出力する機能をもたせておくようにする。そうすれば、ファイル分離ユニット230は、まず合成画像ファイルF3から補助情報を抽出することにより、暗号ファイルF2のデータ量を認識することができるので、当該データ量を参照して暗号ファイルF2を分離抽出することが可能になる。
たとえば、図8に示す例の場合、ヒント画像Hのサイズを常に480×640画素とし左上に配置するように定めておき、補助情報画像Aのサイズを常に1×100画素(300バイト)とし右下に配置するように定めておけば、暗号ファイルF2のデータ量(暗号画像Eのデータ量)が判明すれば、暗号画像Eの部分を、ヒント画像H,ダミー画像D,補助情報画像Aから分離することが可能になり、暗号ファイルF2の分離抽出が可能になる。
もっとも、暗号ファイルF2の分離抽出処理を行う際に、暗号ファイルF2のデータ量は必ずしも必要な情報ではない。たとえば、ダミー画像Dとして、「FF」といった特別なバイトコード(少なくとも暗号画像Eの部分には現れないコード)の羅列によって構成することができれば、暗号画像Eとダミー画像Dとを区別することができるので、暗号ファイルF2のデータ量が不明でも、暗号ファイルF2の分離抽出が可能である。
もちろん、ヒント画像Hのサイズを、ユーザの便宜に応じて可変とするような運用も可能である。この場合は、ヒント画像Hのサイズも補助情報として伝達するようにすればよい。すなわち、暗号化用入力ユニット110に、ユーザの指示に基づいて、合成画像ファイルF3内に組み込むヒント画像Hのサイズを入力する機能をもたせておくようにし、ファイル合成ユニット130に、指定されたヒント画像Hのサイズを含む補助情報を作成し、当該補助情報を含む合成画像ファイルを出力する機能をもたせておくようにする。そうすれば、ファイル分離ユニット230は、補助情報として伝達されてきたヒント画像Hのサイズを参照して、暗号ファイルF2を分離抽出することができる。
なお、ヒント画像Hとして利用するためにユーザが用意した画像ファイル内の画像の実際のサイズと、ユーザが指定したヒント画像Hのサイズ(合成画像ファイルF3内に組み込むヒント画像Hのサイズ)とが一致しない場合には、ファイル合成ユニット130が、ユーザが用意したヒント画像に対して、指定されたサイズに適合するような変倍処理を実行し、変倍処理後のヒント画像を合成画像ファイルF3内に組み込む処理を実行するようにすればよい。
また、ヒント画像の配置を、ユーザの便宜に応じて可変とするような運用も可能である。図8に示す例の場合、ヒント画像Hは合成画像Cの左上に配置されているが、ユーザの好みに応じて、右上、左下、右下などの配置をとるようにしてもかまわない。
この場合、暗号化用入力ユニット110に、ユーザの指示に基づいて、ヒント画像の位置を入力する機能をもたせるようにする。そして、ファイル合成ユニット130が、このヒント画像の位置を含む補助情報を作成するとともに、当該ヒント画像の位置を参照して合成画像ファイルを作成するようにする。ヒント画像の位置は、補助情報としてファイル分離ユニット230へ伝達されるので、ファイル分離ユニット230は、このヒント画像の位置を参照して暗号ファイルを分離抽出することができる。
このようなヒント画像の位置指定機能は、ユーザが利用するパスワードをより堅固にする特典を与えることができる。たとえば、§2では、「White John」というペットの犬の名前をパスワードとして用いる例を述べたが、ヒント画像の位置指定機能を利用すれば、パスワードに「White John 左上」,「White John 右上」,「White John 左下」,「White John 右下」のような4通りのバリエーションを与えることができるようになる。
すなわち、ユーザは、ヒント画像Hから連想される「White John」という文字列に、更に、ヒント画像Hの配置を示す「左上」の文字列を付加した「White John 左上」という形のより長い文字列からなるパスワードを暗号化用パスワードP1として利用することができるようになる。もちろん、復号化の際には、図8に示すような合成画像Cが提示されるので、ヒント画像Hから「White John」という文字列を連想することができ、更に、その配置から「左上」なる文字列を連想することができるので、「White John 左上」という正しいパスワードを復号化用パスワードP2として入力することができる。
図11は、図1に示す暗号化用入力ユニット110によって提示される暗号化処理用操作画面10の変形例を示す平面図である。この図11に示す例においても、元ファイル指定欄11、パスワード入力欄12、ヒント画像指定欄13、ヒント画像表示欄14、ファイル選択欄15が設けられている点は、図3に示す例と全く同じである。ただ、この変形例では、更に、合成画像サイズ指定欄16、ヒント画像サイズ指定欄17、ヒント画像位置指定欄18が付加されており、ユーザは、合成画像サイズ、ヒント画像サイズ、ヒント画像位置をいくつかの候補から選択することにより指定することができる。いずれも黒丸が付された候補が選択された候補である。
たとえば、合成画像Cのサイズに関しては、合成画像サイズ指定欄16に用意されている3通りのサイズ(720×960画素、960×1280画素、1920×2560画素の3通り)の中の1つをマウスクリック操作などによって選択することにより、所望のサイズの指定が可能である。
また、ヒント画像のサイズに関しては、ヒント画像サイズ指定欄17に用意されている3通りのサイズの中の1つをマウスクリック操作などによって選択することにより、所望のサイズの指定が可能である。図示の例の場合、ヒント画像のサイズは、縦横の画素数ではなく、合成画像サイズに対する面積比で示されている。具体的には、「全体の1/16」,「全体の1/9」,「全体の1/4」という3通りのサイズが候補として用意されている。たとえば、「全体の1/4」というサイズを選択した場合、ヒント画像Hのサイズは、合成画像Cを全体画像としたときに、面積が全体の1/4となるようなサイズ(縦横がそれぞれ1/2)に指定される。もちろん、ヒント画像のサイズを、縦横の画素数で指定させることも可能であるが、実用上は、合成画像Cに対する面積比で指定させる方が、ユーザにとってより直観的な指定が可能になる。
一方、ヒント画像の位置に関しては、ヒント画像位置指定欄18に用意されている4通りの位置(「左上」,「右上」,「左下」,「右下」)の中の1つをマウスクリック操作などによって選択することにより、所望の位置指定が可能である。
図11に示す例の場合、合成画像サイズとして「960×1280」、ヒント画像サイズとして「全体の1/4」、ヒント画像の位置として「左上」という指定がなされている。この場合、図8に示すような合成画像Cが作成されることになる。なお、ヒント画像として「FF006.jpg」なる画像ファイルが選択されているが、当該画像ファイルのサイズが、指定されたサイズ(図8に示すとおり480×640画素になる)に不一致である場合には、前述したとおり、ファイル合成ユニット130によって、指定されたサイズに適合するような変倍処理が実行され、変倍処理後のヒント画像が合成画像ファイルF3内に組み込まれることになる。
この他、ユーザの便宜を考慮して、作成される合成画像ファイルF3のファイルフォーマットをユーザに選択させることも可能である。これまでは、「jpg」形式のファイルフォーマットをもった合成画像ファイルF3を作成する例のみを述べてきたが、合成画像ファイルF3のファイルフォーマットは、画像ファイルのフォーマットであればどのようなものでもかまわない。したがって、暗号化用入力ユニット110に、複数通りのファイルフォーマットをユーザに提示して選択させる機能を付加しておき、ファイル合成ユニットが、ユーザが選択したファイルフォーマットをもった合成画像ファイルF3を作成する機能をもたせておけば、ユーザは所望のファイルフォーマットをもった合成画像ファイルF3を得ることができるようになる。
(3) パスワードの伝達
補助情報の更に別な利用形態は、暗号化用パスワードもしくはその一部を復号化処理部200へ伝達するための利用形態である。これまで述べた例では、復号化処理部200側で、与えられた復号化用パスワードP2が正しいパスワード(暗号化用パスワードP1と同一のパスワード)であるか否かの判断が直接行われることはない。すなわち、復号化用パスワードP2が誤ったパスワードであったとしても、通常どおりの復号化処理プロセスが実行され、元ファイルF1の復元が行われる。ただ、誤ったパスワードを用いて復号化処理を行った場合、得られるファイルも誤った内容のファイルになり、正しい元ファイルF1が復元されることはない。したがって、元ファイルF1が復元されることはない、という観点からは、復号化処理部200側で、復号化用パスワードP2の正否を判定する必要はない。
しかしながら、復号化処理部200側で、復号化用パスワードP2の正否判定を行うことなしに復号化処理が実行されることは、全体的なセキュリティを低下させる要因になる。すなわち、復号化処理部200に対して、任意のデータファイルを合成画像ファイルF3として与え、任意の文字列を復号化用パスワードP2として与えても、復号化処理が実行され、何らかのファイルが復元ファイルとして出力されることになると、不正利用者は、様々なデータファイルとパスワードの組み合わせを与え、得られる復元ファイルの内容を統計的に分析することにより、復号化処理ユニット240で実行される復号化処理のアルゴリズムの解析が可能になる。
このような問題を解決するには、ファイル合成ユニット130に、暗号化用パスワードP1もしくはその一部を含む補助情報を作成し、これを合成画像ファイルF3に組み込む機能をもたせておき、暗号化処理部100から復号化処理部200へ、補助情報としてパスワードを伝達させるようにすればよい。この場合、ファイル分離ユニット230が、復号化用パスワードP2もしくはその一部が、補助情報に含まれている暗号化用パスワードもしくはその一部に合致するか否かの判定を行うようにし、当該判定において、合致の判定結果が得られた場合にのみ、復号化処理ユニット240における復号化処理が実行されるようにすればよい。
実用上は、ファイル分離ユニット230が、上記判定において合致の判定結果が得られることを条件として、暗号ファイルの分離抽出を行うようにしておけばよい。不一致の場合は、暗号ファイルの分離抽出が行われないので、当然、暗号化処理ユニット240による復号化処理が実行されることはない。
このように、暗号化処理部100から復号化処理部200に対して、補助情報としてパスワードを伝達すれば、復号化処理部200側において、与えられた復号化用パスワードP2の正否を判定することが可能になるメリットが得られる。その反面、合成画像ファイルF3内にパスワードが組み込まれてしまうため、合成画像ファイルF3を不正に入手した者が、パスワードを読み取ってしまう危険性が生じる。したがって、実用上は、パスワードを2つの部分に分け、第1の部分を暗号化/復号化処理に利用し、第2の部分を合致判定処理に利用するのが好ましい。
たとえば、前述した実施例では、暗号化用パスワードP1として「White John」なるパスワードを用いる例を述べた。この場合、スペースを境として、第1の部分「White」と第2の部分「John」とに分け(あるいは、先頭から所定の文字数までを第1の部分、残りを第2の部分というように分けてもよい)、第1の部分「White」を暗号化/復号化処理に利用し、第2の部分「John」を合致判定処理に利用すればよい。
より具体的に説明すれば、暗号化の際に、暗号化処理ユニット120は、与えられた暗号化用パスワードP1の第1の部分「White」を用いて暗号化処理を行うようにする。また、ファイル合成ユニット130は、暗号化用パスワードの第2の部分「John」を含む補助情報を作成し、これを合成画像ファイルF3に組み込むようにする。一方、復号化の際には、復号化処理ユニット240が、復号化用パスワードP2の第1の部分「White」を用いて復号化処理を行うようにする。但し、ファイル分離ユニット230は、復号化用パスワードP2の第2の部分「John」が、補助情報に含まれている暗号化用パスワードP1の第2の部分「John」に合致することを条件として、暗号ファイルF2の分離抽出を行うようにする。
このような方法を採れば、復号化用パスワードP2として、任意の文字列を与えたとしても、正規のパスワードの第2の部分「John」との合致が得られないため、暗号ファイルF2の分離抽出が行われず、当然、復号化処理は実行されない。また、万一、合成画像ファイルF3が不正者に取得され、補助情報が読み取られたとしても、補助情報には第2の部分「John」が含まれているだけであり、暗号化/復号化処理に必要な「White」の部分は含まれていないので、合成画像ファイルF3に基づく復号化までが不正に行われる危険性は低い。
(4) 補助情報の具体的構成例
これまで述べたとおり、暗号化処理部100から復号化処理部200へと伝達される補助情報には、様々な利用形態が考えられる。最後に、このような様々な利用形態を組み入れた補助情報の具体的構成例を示しておく。
図12は、このような補助情報の具体的な構成例を示す図である。図示の表の左欄は、補助情報の内容を示すタイトルであり、右欄が実際の補助情報を構成するデータである。したがって、本来の補助情報は、表の右欄に示す情報であり、表の左欄の情報は、必ずしも補助情報の一部として組み込む必要はない。また、ここでは説明の便宜上、「全体の1/4」,「左上」などの日本語の文字列からなる補助情報が含まれているが、実用上は、これら日本語の文字列の代わりに、何らかの記号を用いるのが好ましい。図には、全体が300バイトからなる補助情報の例が示されている。実際、この程度の情報であれば、300バイトの容量があれば十分であり、図8に示す合成画像Cの中で、補助情報画像Aが占める割合は極めて小さい(この例では、たかだか100画素分)。
図示の補助情報は、全7項目の情報から構成されている。以下、これら7項目の内容およびその利用形態をそれぞれ説明する。
「元ファイルのファイル名(本体部)」:元ファイルF1のファイル名「FF003.doc」の本体部「FF003」の部分のテキストデータである。§4(1)で説明したように、元ファイルのファイル名の復元に利用される。
「元ファイルのファイル名(拡張子)」:元ファイルF1のファイル名「FF003.doc」の拡張子「.doc」の部分のテキストデータである。§4(1)で説明したように、元ファイルのファイル名の復元に利用される。
「ヒント画像サイズ」:図11に示すヒント画像サイズ指定欄17で選択されたサイズである。図示の例では、「全体の1/4」なるサイズが選択されている。もちろん、実際の画素数でサイズを指定してもかまわない。§4(2)で説明したように、暗号ファイルF2の分離抽出処理に利用される。
「ヒント画像の位置」:図11に示すヒント画像位置指定欄18で選択された位置である。図示の例では、「左上」なる位置が選択されている。§4(2)で説明したように、暗号ファイルF2の分離抽出処理に利用される。また、パスワードを「White John 左上」のように複雑化できるメリットも得られる。
「暗号ファイルデータ量」:暗号ファイルF2のデータ量である。§4(2)で説明したように、暗号ファイルF2の分離抽出処理に利用される。
「パスワードの後半」:暗号化用パスワードP1の後半部分である。§4(3)で説明した例の場合、「White John」なるパスワードP1のうちの前半部分「White」は暗号化/復号化処理に利用され、後半部分「John」が補助情報に組み込まれ、復号化処理部200における合致判定処理に利用される。
「分割情報」:後述する実施例で利用される補助情報である。暗号ファイルF2の容量が大きいため、1枚の合成画像に収容しきれない場合、複数のブロックに分割して収容することになる。この分割数を復号化処理部200に伝達するための補助情報である。詳細は、§5(1)参照。
なお、図11の合成画像サイズ指定欄16で指定された合成画像サイズは、図12の補助情報に含まれていないが、これは、図10に示すように、合成画像C自体のサイズは、「jpg」形式などの一般的な画像ファイルのフォーマットでは、ヘッダ部hに格納されるためである。もちろん、必要があれば、補助情報に合成画像C自体のサイズを組み入れてもかまわない。
<<< §5.その他の実施例 >>>
(1) 暗号ファイルF2を分割して収容する実施例
これまで述べてきた実施例では、図8に示す例のように、暗号ファイルF2を構成するデータは、暗号画像Eとして、1枚の合成画像C内に組み込まれている。したがって、暗号ファイルF2のデータ容量が大きい場合でも、それに見合うだけ大きなサイズの合成画像Cを用意できれば支障は生じない。しかしながら、合成画像Cがあまり大きくなると、一般的なディスプレイ画面には表示しきれなくなる。したがって、実用上は、1枚の合成画像C内に暗号画像Eとして収容可能な最大収容データ量を設定しておき、合成画像Cのサイズに上限が設けられるようにするのが好ましい。
このように、1枚の合成画像C内に収容可能な最大収容データ量を設定した場合、データの総量が当該最大収容データ量を超える暗号ファイルについては、これを複数n個のブロックに分割し、複数n枚の合成画像にそれぞれ別個に収容する対応をとればよい。また、暗号化用入力ユニット110が、図11に示す例のように、サイズ指定欄16,17上でのユーザの指示に基づいて、合成画像やヒント画像のサイズを入力する機能を有している場合には、ファイル合成ユニット130が、指定された各画像のサイズを考慮して、最大収容データ量の認識を行うようにすればよい。具体的には、個々の合成画像サイズおよびヒント画像サイズの組み合わせごとに、それぞれ最大収容データ量を予め設定しておけばよい。
図13は、作成された暗号ファイルF2を分割して複数の合成画像ファイルに収容する実施例を示すブロック図である。この実施例では、ファイル合成ユニット130が、1枚の合成画像C内に暗号画像Eとして収容可能な最大収容データ量を認識しており、暗号化処理ユニット120から与えられる暗号ファイルF2を構成するデータの総量が、この最大収容データ量を超える場合には、暗号ファイルF2を構成するデータを、それぞれが最大収容データ量以下となる複数n個のブロックに分割する処理を行う。そして、各ブロックのデータをそれぞれ暗号画像として収容する複数n枚の合成画像を表示するための複数n個の分割合成画像ファイルを作成する。
図示の例は、ファイル合成ユニット130によって、暗号ファイルF2を3つに分割する必要があると判断された場合の例である。暗号ファイルF2は、3つのブロックF2−1,F2−2,F2−3に分割されている。ブロック分割の方法は任意であり、たとえば、暗号ファイルF2を構成するデータ列を、先頭から順に、前段部、中段部、後段部の3つに分け、これをブロックF2−1,F2−2,F2−3とするような分割を行ってもよいし、先頭から1,4,7,... バイト目のデータをブロックF2−1に収容し、先頭から2,5,8,... バイト目のデータをブロックF2−2に収容し、先頭から3,6,9,... バイト目のデータをブロックF2−3に収容する、という方法で分割を行ってもよい。
こうして、最大収容データ量以下のブロックが形成できたら、それぞれを別個独立した分割合成画像ファイルF3−1,F3−2,F3−3に組み込むようにすればよい。個々の分割合成画像ファイルF3−1,F3−2,F3−3の構成方法は、これまで述べてきた実施例と同様である。ここでは、各分割合成画像ファイルには、元ファイルのファイル名本体部「FF003」に、「X1」,「X2」,「X3」,...という枝番を付加し、更に拡張子を付加したファイル名を付与する、という規則で、個々の分割合成画像ファイルのファイル名を決定した例が示されている。このため、図13には、ファイル名「FF003X1.jpg」,「FF003X2.jpg」,「FF003X3.jpg」という3つの分割合成画像ファイルが生成される例が示されており、これら各画像ファイルを表示して得られる合成画像C1,C2,C3が例示されている。ここで、暗号画像E1,E2,E3は、それぞれブロックF2−1,F2−2,F2−3を構成するデータからなる画像である。
図示の例では、合成画像C1,C2,C3には、いずれもヒント画像Hが含まれているが、ヒント画像Hはいずれか1つの合成画像にのみ組み込むようにしてもかまわない。すなわち、ファイル合成ユニット130は、複数n枚の合成画像のいずれにも「ヒント画像」が含まれるように、複数n個の分割合成画像ファイルを作成してもよいし、複数n枚の合成画像の一部には「ヒント画像」が含まれるが、別な一部には「ヒント画像」が含まれないように、複数n個の分割合成画像ファイルを作成してもよい。なお、この場合、個々のファイルごとに、ヒント画像が含まれているか否かを示す情報を補助情報として組み込んでおくようにする。
また、図13の例では、合成画像C1,C2,C3のすべてについて、それぞれ補助情報画像A1,A2,A3が組み込まれているが、補助情報画像A1,A2,A3として収容される補助情報の内容は、A1,A2,A3について共通のものであってもよいし、それぞれ異なるものであってもよい。もちろん、補助情報は、いずれか1つの合成画像にのみ組み込むようにしてもかまわない。
なお、図13の例では、ダミー画像Dは、3番目の合成画像C3にのみ含まれているが、これは、合成画像C1およびC2に組み込まれている暗号画像E1,E2のデータ容量が、いずれも最大収容データ量に等しくなるように、暗号ファイルF2の分割が行われたためである。もちろん、暗号ファイルF2をほぼ3等分し、各合成画像C1,C2,C3のそれぞれにダミー画像が含まれるようにしてもかまわない。
このように、暗号化処理部100によって、複数n個の分割合成画像ファイルが作成された場合、復号化処理部200では、この複数n個のファイルすべてを用いて復号化を行う必要がある。
そこで、復号化用入力ユニット210には、ユーザの指示に基づいて、このn個の分割合成画像ファイルを一群の関連ファイルとして入力する機能をもたせておく。図13に示す例の場合、ユーザが、「FF003X1.jpg」,「FF003X2.jpg」,「FF003X3.jpg」という3つのファイル名を指定した場合に、この3つのファイルが、復号化処理部200の内部で一群の関連ファイルとして取り扱われるようにすればよい。具体的には、たとえば、図5に示すファイル選択欄24において、ユーザが同時に複数n個のファイルを選択した場合に、これら複数n個のファイルを一群の関連ファイルとして入力するようにすればよい。あるいは、ユーザが、対象ファイル指定欄21に「FF003X」のように、複数n個のファイルのファイル名に共通する文字列を入力した場合に、この「FF003X」なる文字列を含むファイル名が付与された複数n個のファイルを一群の関連ファイルとして入力するようにしてもよい。
一方、合成画像表示ユニット220には、こうして入力された一群の関連ファイルのうちの少なくとも1つの分割合成画像ファイルに基づいて、ヒント画像が含まれている合成画像を表示する機能をもたせておく。たとえば、図13に示す例のように、3つのファイルF3−1,F3−2,F3−3のすべてにヒント画像Hが含まれている場合には、いずれか1つのファイルを任意選択し、図6に示す合成画像表示欄23に合成画像を表示させればよい。ファイルF3−1が選択された場合には合成画像C1が表示され、ファイルF3−2が選択された場合には合成画像C2が表示され、ファイルF3−3が選択された場合には合成画像C3が表示されることになるが、いずれの場合も、ヒント画像Hが提示されることになる。
なお、ヒント画像Hが、複数n枚の合成画像の一部にしか含まれていない場合は、図6に示す合成画像表示欄23に、任意選択されたファイルの合成画像Cを表示させても、そこにはヒント画像Hが含まれていないこともあるが、このような場合は、たとえば、ユーザのマウスクリック操作などを受けて、表示対象となるファイルを順送りで変更する機能を設けておけばよい。ユーザは、合成画像表示欄23にヒント画像Hが提示されるまで、クリック操作を繰り返すことになる。
あるいは、個々のファイルには、ヒント画像Hが含まれているか否かを示す情報が補助情報として組み込まれているので、合成画像表示ユニット220には、この補助情報を参照して、ヒント画像Hが含まれているファイルを自動選択して表示する機能をもたせておいてもよい。
一方、ファイル分離ユニット230は、このn個の分割合成画像ファイルから、それぞれ収容されていたブロックを分離抽出した上で、これらn個のブロックを合成することにより暗号ファイルF2を復元する処理を行えばよい。前述したように、複数n個の分割合成画像ファイルは、復号化用入力ユニット210において、一群の関連ファイルとして入力されるので、ファイル分離ユニット230は、与えられたn個の分割合成画像ファイルが一群の関連ファイルである旨を認識することができ、各ブロックを分離抽出した上で、これらを合成する処理を行うことができる。
もっとも、実用上は、ファイル合成ユニット130でn個の分割合成画像ファイルを作成する際に、個々のファイルのそれぞれに補助情報を組み込むようにし、この補助情報内に、図12に示す例のような分割情報を含ませておくのが好ましい。図示の例の場合、「1/3」なる分割情報は、当該ファイルが、全3分割された第1番目のブロックを含むファイルであることを示す情報である。ファイル分離ユニット230は、このような分割情報を参照することにより、一群の関連ファイルとして3つのファイルが入力されていることを確認することができ、また、分離抽出したブロックをどのような順序で合成すればよいかを認識することができる。
(2) 暗号化アルゴリズムを選択する実施例
既に述べたとおり、図1に示すシステムにおいて、暗号化処理ユニット120で実行される暗号化のアルゴリズムと、復号化処理ユニット240で実行される復号化のアルゴリズムとは、相互に対応している必要がある。換言すれば、暗号化アルゴリズムと復号化アルゴリズムとが対応している限り、どのような暗号化/復号化アルゴリズムを用いてもかまわないことになる。そこで、システム内に予め複数の暗号化/復号化アルゴリズムを用意しておき、ユーザが好みに応じて任意のアルゴリズムを選択できるようにすることも可能である。
図14は、複数のアルゴリズムを選択して暗号化および復号化を行う実施例を示すブロック図である。この実施例では、暗号化処理ユニット120が、複数通りの暗号化アルゴリズムに基づく暗号化処理機能を有し、ユーザが選択した特定の暗号化アルゴリズムを用いた暗号化処理を実行し、復号化処理ユニット240が、この複数通りの暗号化アルゴリズムに対応した複数通りの復号化アルゴリズムに基づく復号化処理機能を有し、ユーザが選択した特定の復号化アルゴリズムを用いた復号化処理を実行することになる。
このため、暗号化用入力ユニット110は、ユーザの指示に基づいて、特定の暗号化アルゴリズムを選択する入力を行う機能を有している。この機能は、たとえば、図3に示す暗号化処理用操作画面10上に、アルゴリズム選択ボタンを配置し、マウスクリック操作などでいずれかを選択させるような仕組によって実現できる。一方、復号化用入力ユニット210は、ユーザの指示に基づいて、特定の復号化アルゴリズムを選択する入力を行う機能を有している。この機能は、たとえば、図6に示す復号化処理用操作画面20上に、アルゴリズム選択ボタンを配置し、マウスクリック操作などでいずれかを選択させるような仕組によって実現できる。
図示の例では、暗号化処理ユニット120内には、暗号化アルゴリズム1に基づいて暗号化処理を行う第1の暗号化処理部121と、暗号化アルゴリズム2に基づいて暗号化処理を行う第2の暗号化処理部122と、暗号化アルゴリズム3に基づいて暗号化処理を行う第3の暗号化処理部123と、が設けられている。ユーザは、暗号化用入力ユニット120に対して、元ファイルF1、暗号化用パスワードP1、ヒント画像Hを指定する入力を行うとともに、暗号化アルゴリズムを指定する入力を行うことになる。
結局、暗号化処理ユニット120には、暗号化の対象となる元ファイルF1(図示の例では、ファイル名「FF003.doc」なる文書ファイル)と、暗号化用パスワードP1(図示の例では、「White John」なる文字列)と、アルゴリズム選択の指示(暗号化アルゴリズム1,2,3のいずれかを選択する指示)と、が与えられ、暗号化処理は、選択されたアルゴリズムに対応する暗号化処理部(図示の例では、121,122,123のいずれか)によって実行され、暗号ファイルF2が作成されることになる。
一方、復号化処理ユニット240内には、復号化アルゴリズム1(暗号化アルゴリズム1に対応したアルゴリズム)に基づいて復号化処理を行う第1の復号化処理部241と、復号化アルゴリズム2(暗号化アルゴリズム2に対応したアルゴリズム)に基づいて復号化処理を行う第2の復号化処理部242と、復号化アルゴリズム3(暗号化アルゴリズム3に対応したアルゴリズム)に基づいて復号化処理を行う第3の復号化処理部243と、が設けられている。ユーザは、復号化用入力ユニット210に対して、合成画像ファイルF3および復号化用パスワードP2を指定する入力を行うとともに、復号化アルゴリズムを指定する入力を行うことになる。
結局、復号化処理ユニット240には、復号化の対象となる暗号ファイルF2(ファイル分離ユニット230によって分離されたもの)と、復号化用パスワードP2(図示の例では、「White John」なる文字列)と、アルゴリズム選択の指示(復号化アルゴリズム1,2,3のいずれかを選択する指示)と、が与えられ、復号化処理は、選択されたアルゴリズムに対応する復号化処理部(図示の例では、241,242,243のいずれか)によって実行され、元ファイルF1(図示の例では、ファイル名「FF003.doc」なる文書ファイル)が復元されることになる。
このように、任意のアルゴリズムを選択できるようにしておけば、ユーザは、安全性などを考慮して、その都度、好みのアルゴリズムを用いた暗号化を行うことができるようになるので、暗号化の自由度が向上する。また、第三者から見ると、暗号化にどのアルゴリズムが用いられたのかを特定することができないため、暗号が破られるリスクを低減するメリットも得られる。
現在、暗号化/復号化処理を行う商用アプリケーションプログラムが多数販売されており、採用する暗号化/復号化アルゴリズムも多岐に渡っている。したがって、実用上、図1に示すシステムにおける暗号化処理ユニット120および復号化処理ユニット240の部分は、個々のユーザが、それぞれパソコンなどに好みの暗号化/復号化用アプリケーションプログラムをインストールすることによって構築することが可能である。したがって、図14に例示するシステムは、ユーザが3種類の暗号化/復号化用アプリケーションプログラムをインストールすることによって構成することができる。
もっとも、このように利用するアルゴリズムに複数の選択肢が存在すると、ユーザは、暗号化にどのアルゴリズムを用いたかを記憶しておく必要が生じる。たとえば、図14に示す例において、暗号化を行う際に、暗号化アルゴリズム2を選択することにより暗号ファイルF2が作成された場合、この暗号ファイルF2に対する復号化を行う際には、暗号化アルゴリズム2に対応する復号化アルゴリズム2を選択する必要がある。誤って復号化アルゴリズム1や3を選択した場合には、元ファイルの正しい復元を行うことができない。
本発明において復号化の際にユーザに提示されるヒント画像Hは、このような点においても有用である。すなわち、ヒント画像Hは、パスワードの連想に有用なだけでなく、選択したアルゴリズムの連想にも有用である。利用するアルゴリズムに複数の選択肢が存在する環境では、ユーザは、選択したアルゴリズムを思い出すためのヒントとなる画像をヒント画像Hとして指定することが可能である。
(3) 複数のヒント画像を用いる実施例
これまで述べてきた実施例では、1つの合成画像ファイル内に1つのヒント画像Hを組み込んでいるが、必要に応じて、複数のヒント画像を組み込むことも可能である。
図15は、複数のヒント画像を用いた実施例における合成画像Cの詳細構成を示す平面図である。この合成画像Cは、図8に示す例と同様に、暗号画像E,ダミー画像D,補助情報画像Aに、ヒント画像を合成したものであるが、2種類のヒント画像H1,H2が用いられている点が特徴である。このように複数のヒント画像を用いると、ユーザの連想をより活発化することができ、より複雑なパスワードの利用を促進させることができる。
特に、図14に例示したような複数のアルゴリズムを選択的に用いる実施例の場合、複数種類のヒント画像を利用すると効果的である。たとえば、ペットの名前「White John」をパスワードとして用い、3種類の暗号化アルゴリズムのうち、2番目のアルゴリズムを選択して暗号化を行う場合を考えてみよう。この場合、図15に示す例のように、ペットの写真をヒント画像H1として指定し、次女の写真をヒント画像H2として指定することにより、ヒント画像H1から「White John」なるパスワードを連想させ、ヒント画像H2から「2番目」というアルゴリズムの番号を連想させることが可能になる。
なお、図15に示す例では、合成画像Cの1/4のサイズのヒント画像H1を左上位置に配置し、これより小さなサイズのヒント画像H2を、ヒント画像H1の右上位置に重ねて配置するような設定を行っているが、個々のヒント画像のサイズや配置は任意に設定可能である。もちろん、2枚のヒント画像を互いに重ならないように並べて配置するようにしてもかまわない。
(4) ダミーデータからなる境界画像を用いる実施例
図16は、ダミーデータからなる境界画像Dを含む合成画像Cの詳細構成を示す平面図である。合成画像Cの一部にダミー画像Dを含ませる例は、既に図8で説明した。ただ、図8で説明した実施例の場合、ダミー画像Dは、合成画像Cのサイズを所定の定型サイズ(960×1280画素のサイズ)に維持する目的のために設けられたものである。すなわち、ヒント画像H、暗号画像E、補助情報画像Aの画素数を合計しても、960×1280画素に満たない場合、残りを無意味なダミーデータからなるダミー画像Dで埋めるという考え方に基づくものである。
一方、図16における境界画像Dは、やはり無意味なダミーデータから構成される画像であり、そのような観点からは、ダミー画像Dと呼べるものである。したがって、もちろん、この境界画像Dは、定型サイズの合成画像Cを構成するために不足する画素を埋めるという効果も持ち合わせている。ただ、ここで述べる実施例における境界画像Dには、セキュリティを向上させるという固有の効果が期待できる。
境界画像Dが、セキュリティを向上させる効果を奏する理由は、合成画像C上における配置にある。すなわち、図16に示すとおり、「境界画像D」は、「ヒント画像H」と「暗号画像E」との境界部分に配置されている。このように、「境界画像D」を「ヒント画像H」と「暗号画像E」との境界部分に配置すれば、合成画像Cから暗号画像Eを抽出する作業を困難にすることができ、セキュリティの向上を図ることができる。
その効果は、図8の実施例と図16の実施例とを比べてみれば、容易に理解できよう。たとえば、図8に示す合成画像Cをディスプレイ画面上に表示すれば、観察者は、ヒント画像Hの部分を「意味のある1枚の画像」として認識することができる。具体的には、図示の例の場合、480×640画素の部分を「犬の絵」として把握することができ、それ以外の部分を「砂嵐の絵」として把握することができるので、両者の境界線を認識することができる。したがって、合成画像ファイルのデータを解析すれば、ヒント画像Hを構成するデータと、暗号画像Eを構成するデータとの境界を認識することができ、当該境界からデータを分けることにより、暗号ファイルを分離抽出する作業が行いやすくなる。これは、合成画像ファイルが不正者の手に渡った場合を考えると、セキュリティ上、問題である。
これに対して、図16に示す合成画像Cをディスプレイ画面上に表示すれば、やはり観察者は、ヒント画像Hの部分を「犬の絵」として把握することができ、それ以外の部分を「砂嵐の絵」として把握することができるので、両者の境界線を認識することができる。しかしながら、「境界画像D」と「暗号画像E」とは、いずれも「砂嵐の絵」として把握されるだけであり、これら両者の境界線を把握することはできない。したがって、合成画像ファイルから、ヒント画像Hを構成するデータの部分を切り分けることができたとしても、ダミーデータDと暗号ファイルを構成するデータとを切り分けることはできないので、不正者が、暗号ファイルのみを分離抽出することは困難である。このような点において、図16の実施例は、セキュリティの向上を図る上で有用である。
このように、ダミーデータからなる境界画像Dを用いるのであれば、ファイル合成ユニット130に、「ヒント画像H」と「暗号画像E」との境界部分に配置された「ダミーデータからなる境界画像D」を含む合成画像Cを表示するための合成画像ファイルを作成する機能をもたせておけばよい。具体的には、たとえば、「ヒント画像Hの右辺および下辺に幅20画素のL字状の帯からなる境界画像Dを配置する」というように、予め境界画像Dの大きさや配置の規則を定めておけば、ファイル合成ユニット130は、当該規則に基づいて、境界画像Dを含む合成画像Cを作成することができる。また、ファイル分離ユニット230は、当該規則に基づいて、暗号ファイルの分離抽出が可能である。
もちろん、ファイル合成ユニット130が、境界画像Dの大きさや配置を、その都度、ランダムに決定するようにしてもかまわない。この場合、合成画像Cのうちのどの部分が境界画像Dであるかを示す情報を、補助情報Aの一部として記録しておくようにすれば、ファイル分離ユニット230は、この補助情報Aに記録された情報に基づいて、境界画像Dの位置を認識することができ、暗号ファイルを分離抽出することが可能である。
<<< §6.第2の実施形態 >>>
これまで述べてきた§1〜§5の実施例は、いずれも本発明の第1の実施形態に係るファイルの暗号処理システムである。ここでは、本発明の第2の実施形態を説明する。
本発明の基本的な考え方は、元ファイルを所定のパスワードを使って暗号化して暗号ファイルを作成し、この暗号ファイルにパスワードを連想させるヒント画像を添付し、復号化時にヒント画像を提示する、というものである。これまで述べた第1の実施形態も、これから述べる第2の実施形態も、上記基本的な考え方は共通である。両者の相違は、ヒント画像の添付の仕方にある。
すなわち、第1の実施形態では、「暗号ファイルを構成するデータを暗号画像Eとして、ヒント画像Hと合成し、合成画像ファイルを作成する」という方法を採るのに対して、第2の実施形態では、「ヒント画像Hの画像ファイルを構成するデータの末尾に、暗号ファイルを構成するデータを結合する」という方法を採る。以下、その具体的な方法を、実施例を参照しながら説明する。
図17は、本発明の第2の実施形態に係るファイルの暗号処理システムの構成を示すブロック図である。図示のとおり、このシステムの大きな2つの構成要素は、データファイルを暗号化する処理を行う暗号化処理部105(図の上段部分)と、暗号化されたデータファイルを復号化する処理を行う復号化処理部205(図の下段部分)である。
暗号化処理部105の基本機能は、ユーザから与えられた暗号化用パスワードP1を暗号化キーとして利用して、暗号化の対象となる元ファイルF1を暗号化することである。図示のとおり、暗号化処理部105は、暗号化用入力ユニット110、暗号化処理ユニット120、ファイル結合ユニット135という3つのユニットによって構成されている。ここで、暗号化用入力ユニット110および暗号化処理ユニット120の実質的な機能は、図1に示す第1の実施形態に係るシステムの暗号化用入力ユニット110および暗号化処理ユニット120の実質的な機能と同じである。
したがって、図1に示す暗号化処理部100と図17に示す暗号化処理部105との相違は、前者におけるファイル合成ユニット130が、後者ではファイル結合ユニット135に置き換わっている点である。ここで、ファイル結合ユニット135は、暗号化用入力ユニット110によって入力されたヒント画像ファイルFHを構成するデータの末尾に、暗号ファイルF2のデータを含む付加データを結合することにより、結合画像ファイルF4を作成する機能を有する。
図18は、図17に示す暗号化処理部105における結合画像ファイルF4の作成処理手順を示すブロック図である。まず、第1段階として、暗号化処理ユニット120において、元ファイルF1(この例の場合、ファイル名「FF003.doc」なる文書ファイル)に対して、暗号化用パスワードP1(この例の場合、「White John」なる文字列)を用いた所定の暗号化アルゴリズムに基づく暗号化処理が施され、暗号ファイルF2を作成する処理が行われる。続く第2段階では、ファイル結合ユニット135において、ヒント画像ファイルFH(この例の場合、ファイル名「FF006.jpg」なる画像ファイル)を構成するデータ(図示のとおり、ヘッダ部hおよびフッタ部fを含めた画像ファイルFHを構成する全データ)の末尾に、暗号ファイルF2のデータを含む付加データφを結合することにより、結合画像ファイルF4(この例の場合、ファイル名「FF003.jpg」なる画像ファイル)が作成される。
ここで、結合画像ファイルF4は、ヒント画像ファイルFHと同一のファイルフォーマットをもった画像ファイルになる。すなわち、図18に示す例の場合、ヒント画像ファイルFHが、「FF006.jpg」なるファイル名が付されている「jpg」形式の画像ファイルであるため、ファイル結合ユニット135によって作成される結合画像ファイルF4も、「FF003.jpg」なるファイル名が付されているとおり、「jpg」形式の画像ファイルである。
ただ、ヒント画像ファイルFHが正規の「jpg」形式の画像ファイル(フォーマットの規定どおりのファイル)であるのに対して、結合画像ファイルF4は、「jpg」形式のフォーマットからは若干逸脱した画像ファイルになる。「jpg」形式のフォーマットをはじめとして、一般的な画像ファイルのフォーマットでは、画像ファイルは、ヘッダ部と、画像データ本体部(画素データ)と、フッタ部と、によって構成される。図18に示すヒント画像ファイルFHも、このフォーマットに従って、ヘッダ部hと、画像データ本体部(ヒント画像Hを構成するデータ)と、フッタ部fと、によって構成されている。これに対して、図18に示す結合画像ファイルF4は、ヒント画像ファイルFHを構成するデータの末尾(すなわち、フッタ部fの末尾)に、付加データφをそのまま結合した形式をとる。
したがって、厳密に言えば、この結合画像ファイルF4は、「jpg」形式の画像ファイルではないが、画像閲覧用アプリケーションプログラムでは、「jpg」形式の画像ファイルとして開くことができる。その第1の理由は、ファイル名に「.jpg」なる拡張子が付加されているため、アプリケーションプログラムが、当該ファイルが「jpg」形式の画像ファイルであるとの前提で、メモリ空間にデータを展開する処理を行うためである。そして第2の理由は、画像閲覧用アプリケーションプログラムでは、ヘッダ部hとフッタ部fとによって挟まれた部分を画像データ本体部と認識し、当該画像データ本体部を画像表示用のメモリ空間に展開する処理を行うためである。
このため、図18に示す結合画像ファイルF4を、画像閲覧用アプリケーションプログラムで開くと、画像データ本体部に相当するヒント画像Hの部分が画像表示用のメモリ空間に展開され、ディスプレイ画面上に表示されることになる。別言すれば、ヒント画像ファイルFHも、結合画像ファイルF4も、画像閲覧用アプリケーションプログラムで開く限りは、ディスプレイ画面上に同じヒント画像Hが表示されるという点で共通する。両ファイルの相違点は、結合画像ファイルF4には、フッタ部fの末尾に、本来は不要な付加データφが連結されているという点である。
もちろん、画像閲覧用アプリケーションプログラムで、「jpg」形式の画像ファイルを開くと、ヘッダ部hやフッタ部fも読み込まれる。ただ、フッタ部fの最後には、ファイルの末尾を示す末尾符号「EOF」を置くことが決められており、プログラムの処理ルーチンは、この末尾符号「EOF」を当該ファイルの末尾のデータとして認識する。このため、画像閲覧用アプリケーションプログラムは、結合画像ファイルF4を取り扱う場合でも、そのフッタ部fの末尾をファイルの末尾と認識することになるので、後続する付加データφの部分は無視される。
結局、結合画像ファイルF4には、付加データφという余分なデータが連結しているものの、画像閲覧用アプリケーションプログラムで開く限り、通常の「jpg」形式の画像ファイルと同様に、画像データ本体部(すなわち、ヒント画像H)がディスプレイ画面上に表示されることになる。一方、データファイルとしては、付加データφを含めた全体が1ファイルとしての構造をとっているため、OSプログラムやファイルを取り扱うプログラム(ファイルのコピーや転送などを行うプログラム)では、付加データφという余分な部分を含めた全体が、「FF003.jpg」なるファイル名をもった「jpg」形式の画像ファイルとして取り扱われることになる。
このように、ファイル結合ユニット135で作成された結合画像ファイルF4は、次のような特徴を有している。まず、第1に、全体として独立した1つのファイルとしての構造をなし、OSプログラムやファイルを取り扱うプログラム(ファイルのコピーや転送などを行うプログラム)では、あくまでも1つのファイルとして認識される。このため、インターネット経由のデータ保管サービスなどを利用して、ファイルを預けたり、取り出したりすることができる。
第2に、データを先頭から順に読み込んでゆくと、ヘッダ部h、画像データ本体部(ヒント画像Hを構成する画素データ)、フッタ部fという順序で並んでいるため、画像閲覧用アプリケーションプログラムで開くと、ヒント画像Hが表示される。この特徴を利用して、復号化の際には、パスワードを連想させるためのヒント画像Hを提示させることができる。
そして、第3に、フッタ部fの末尾には、暗号ファイルF2のデータを含む付加データφが連結されているため、この暗号ファイルF2の部分を分離して復号化すれば、元ファイルF1を復元することができる。
なお、図18に示す例では、付加データφは、補助情報Aと暗号ファイルF2のデータによって構成されている。ここで、補助情報Aは、ファイル結合ユニット135によって作成され、付加されたものである。この補助情報Aは、暗号化処理部105から復号化処理部205へ情報を伝達する目的で利用されるものであり、その具体的な利用形態は、既に§4で述べたとおりである。したがって、必要に応じて、ここで述べる第2の実施形態においても、§4で述べた利用形態をそのまま適用することができる。もちろん、補助情報Aを利用する必要がない場合には、暗号ファイルF2のデータのみを付加データφとして結合すれば足りる。
続いて、図17に示す復号化処理部205についての説明を行う。復号化処理部205は、暗号化処理部105で作成された結合画像ファイルF4に基づいて、元ファイルF1の復元処理を行うための構成要素であり、結合画像ファイルF4と復号化用パスワードP2とを与えることにより、元ファイルF1を復元して出力する処理を行う。このとき、復号化処理部205は、ヒント画像Hを提示する機能を有している。既に述べた第1の実施形態と同様に、ユーザは、提示されたヒント画像Hを目にすることにより、復号化用パスワードP2を連想することができる。
図示のとおり、復号化処理部205は、復号化用入力ユニット215、ヒント画像表示ユニット225、ファイル分離ユニット235、復号化処理ユニット240という4つのユニットによって構成されている。
復号化用入力ユニット215は、ユーザの指示に基づいて、結合画像ファイルF4と、暗号化用パスワードに対応した復号化用パスワードP2と、を取り込む機能を果たす。この復号化用入力ユニット215は、実質的には、図1に示す復号化用入力ユニット210と同等の構成要素である。両者の相違は、前者が結合画像ファイルF4を取り込むのに対して、後者が合成画像ファイルF3を取り込む点だけである。
一方、ヒント画像表示ユニット225は、復号化用入力ユニット215が取り込んだ結合画像ファイルF4に基づいて、ヒント画像Hを表示する機能を果たす。すなわち、ヘッダ部hとフッタ部fとによって挟まれた画像データ本体部に含まれる画像情報をヒント画像として提示することになる。上述したとおり、結合画像ファイルF4は、画像閲覧用アプリケーションプログラムで開くことが可能なので、ヒント画像表示ユニット225は、実際には、一般的なコンピュータに組み込まれている画像ファイルの閲覧機能によって実現できる。
なお、復号化用入力ユニット215による入力操作の操作画面としては、既に述べた第1の実施形態と同様に、図5に示すような操作画面20を用いることができる。この場合、対象ファイル指定欄21に入力するファイル名は、結合画像ファイルF4のファイル名ということになる。また、画像表示欄23には、合成画像Cが表示される代わりに、ヒント画像表示ユニット225によって、ヒント画像Hが表示されることになる。第1の実施形態で表示される合成画像Cは、図6に示す例のように、その一部にヒント画像Hが含まれているものの、その他の部分はいわゆる「砂嵐」のように見える画像である。これに対して、ここで述べる第2の実施形態では、ヒント画像Hのみが表示されることになるので、ユーザから見れば、より好ましい態様でヒント画像Hの提示が行われることになる。
ファイル分離ユニット235は、結合画像ファイルF4から、暗号ファイルF2を分離抽出する処理を行う。すなわち、図18に示すように、結合画像ファイルF4には、フッタ部fが含まれているので、このフッタ部fの末尾を認識すれば、当該末尾とこれに後続する部分との間で、結合画像ファイルF4を2つに分離することにより、付加データφの部分を切り離すことができ、この付加データに基づいて、暗号ファイルF2を分離抽出することができる。
もし、付加データφに補助情報Aが含まれている場合には、この補助情報Aの部分を除去することにより、暗号ファイルF2を分離抽出することができる。補助情報Aの除去は、たとえば、「付加データφの先頭から300バイトの部分を補助情報Aとする」というような取り決めを行っておけば、容易に行うことができる。こうして分離された暗号ファイルF2は、復号化処理ユニット240へ引き渡される。
なお、暗号化処理部105における暗号化の際に、フッタ部fの末尾に、ファイルの末尾を示す末尾符号「EOF」を配置するファイルフォーマット(たとえば、「jpg」形式のフォーマット)をとるヒント画像ファイルFHを用いるようにすれば、ファイル分離ユニット235は、この末尾符号「EOF」に後続する部分を付加データφと容易に認識することができる。
復号化処理ユニット240は、ファイル分離ユニット235によって抽出された暗号ファイルF2に対して、復号化用パスワードP2を用いた所定の復号化アルゴリズムに基づく復号化処理を施し、元ファイルF1を復元して出力する構成要素であり、図1に示す復号化処理ユニット240と全く同一の構成要素である。
なお、画像閲覧/編集用アプリケーションプログラムで結合画像ファイルF4を開いた後、これを同一のファイル名で上書き保存すると、付加データφの部分は消えてしまうことになる。たとえば、図18に示す「FF003.jpg」なるファイルを、画像閲覧用アプリケーションプログラムで開くと、ヘッダ部hとフッタ部fとの間に挟まれたヒント画像Hの部分が、画像表示用のメモリ空間に展開され、ディスプレイ画面上に表示されることになる。この状態で、同プログラムによって、現在開いているファイルを、「FF003.jpg」なる同一ファイル名で上書き保存すると、同プログラムは、画像表示用のメモリ空間に展開されているヒント画像Hの部分をヘッダ部hとフッタ部fとに挟んで、新たな画像ファイルとして保存する処理を行うことになる。このため、新たな画像ファイルは、「FF006.jpg」なるヒント画像ファイルFHと同じ内容になり、付加データφの部分は逸失する。
このように、本発明に係るファイルの暗号処理システムの存在を知らない第三者が、通常の画像閲覧/編集用アプリケーションプログラムで結合画像ファイルF4を開いた後、これを同一のファイル名で上書き保存すると、付加データφの部分が逸失するため、暗号ファイルF2の部分が無関係な者へと拡散してゆくことを防ぐことができ、不正な解析対象にさらされる危険性を低減できる。また、一般的な画像閲覧/編集用アプリケーションプログラムの中には、上書き保存しなくても、ファイルを開いて閲覧しただけで、付加データφの部分を削除する処理を行う機能をもったものもある。そのようなアプリケーションプログラムによる閲覧操作を経た場合には、たとえ上書き保存が行われなかった場合でも、上記効果が得られることになる。
なお、この第2の実施形態によって作成された結合画像ファイルF4の上記特徴は、セキュリティの観点からはメリットになるが、ユーザは、復号化を行う前に、誤って付加データφが失われることのないように留意する必要がある。そのためには、ファイル結合ユニット135が、結合画像ファイルF4を作成する際に、§2で述べたように、「ロック状態(書き込み禁止状態)」を示す属性を自動設定するようにするのが好ましい。
さて、以上述べてきた図17に示すファイルの暗号処理システムの特徴をまとめると、次のようになる。まず、このシステムは、暗号化の段階において、暗号化の対象となる元ファイルF1と暗号化用パスワードP1とをコンピュータに入力し、元ファイルF1に対して暗号化用パスワードP1を用いた所定の暗号化アルゴリズムに基づく暗号化処理を施して暗号ファイルF2を作成し、その一方で、復号化の段階で提示すべきヒント画像のデータを含むヒント画像ファイルFHをコンピュータに入力し、このヒント画像ファイルFHを構成するデータの末尾に、暗号ファイルF2のデータを含む付加データを結合する処理をコンピュータに実行させることにより、結合画像ファイルF4を作成する。
一方、復号化の段階では、復号化の対象となる結合画像ファイルF4をコンピュータに取り込み、この結合画像ファイルF4に基づいて、ヒント画像Hをディスプレイ上に表示させ、ユーザは、このヒント画像Hにより連想した復号化用パスワードP2をコンピュータに入力することになる。更に、コンピュータに、結合画像ファイルF4から、暗号ファイルF2を分離抽出する処理を実行させ、この暗号ファイルF2に対して、復号化用パスワードP2を用いた所定の復号化アルゴリズムに基づく復号化処理を実行させ、元ファイルF1を復元することになる。
最後に、この第2の実施形態の変形例を述べておく。図19は、図18に示す結合画像ファイルF4の変形例を示す図である。この変形例は、暗号ファイルF2を構成するデータの一部をヒント画像Hへ移動してセキュリティを向上させることを意図したものである。この変形例を実施する場合、ファイル結合ユニット135には、所定の移動規則に基づいて、暗号ファイルF2を構成するデータの一部を移動対象データとして選別し、この暗号ファイルF2内の移動対象データを別なデータに置換もしくは削除する処理を施し、かつ、移動対象データをヒント画像H内に潜像として埋め込む処理を施し、「置換もしくは削除処理後の暗号ファイルF2′」および「埋込処理後のヒント画像ファイルFH′」を用いて結合画像ファイルF4を作成する機能をもたせておく。
たとえば、図19に示す例の場合、図にハッチングを施して示す小さな正方形内のデータd1〜d4が移動対象データである。これら移動対象データd1〜d4は、暗号ファイルF2内からヒント画像Hへと移動させられることになる。ファイル結合ユニット135は、まず、所定の移動規則に基づいて、暗号ファイルF2を構成するデータの一部を移動対象データとして選別する。たとえば、「暗号ファイルF2を構成するデータ列の先頭から1000バイト目ごとに位置する1バイトのデータを移動対象データとして選別する」という規則を定めておけば、暗号ファイルF2を構成するデータ列の1000バイト目、2000バイト目、3000バイト目、... のデータがそれぞれ移動対象データとして選別されることになる。
こうして選別された移動対象データd1〜d4は、ヒント画像H内に潜像として埋め込まれる。たとえば、「ヒント画像Hを構成するデータ列の先頭から1000バイト目ごとに位置する1バイトのデータを移動対象データに置換する」という規則を定めておけば、ヒント画像Hを構成するデータ列の1000バイト目、2000バイト目、3000バイト目、... のデータがそれぞれ移動対象データd1,d2,d3,... に置換されることになる。もちろん、このような置換を行えば、ヒント画像Hは改変されることになり、提示すべき本来の画像ではなくなってしまう。図19に示す例において、「埋込処理後のヒント画像H′」の上に、移動対象データd1〜d4をハッチングを施した小さな正方形として描いているのは、このような改変が行われたことを示すためである。
もっとも、実際には、1バイト程度のデータ置換を数カ所に渡って行ったとしても、ヒント画像の全体構成に大きな変化が生じるわけではないので、ヒント画像Hに対して行われた改変が観察者に認識される可能性は低い。上記説明において「移動対象データd1〜d4をヒント画像H内に潜像として埋め込む」という表現を用いたのは、このように、ヒント画像Hを構成するデータに対して行われた置換処理が、ヒント画像の全体構成に大きな変化を生じさせる処理ではないことを示すためである。
このように、移動対象データd1〜d4をヒント画像H内に潜像として埋め込む処理を行う一方で、暗号ファイルF2からは、当該移動対象データd1〜d4の情報が消去されるような処理を行う。具体的には、移動対象データd1〜d4を別なデータに置換する処理(たとえば、強制的に「FF」なるバイトに置き換える処理)を行ってもよいし、あるいは、移動対象データd1〜d4を削除する処理(削除した部分には、後続データを詰める処理を行う)を行ってもよい。前者の置換処理の場合(図19に示す例は、この場合である)は、処理後の暗号ファイルF2′のデータ長は、元の暗号ファイルF2のデータ長と等しくなるが、後者の削除処理の場合は、処理後の暗号ファイルF2′のデータ長は、元の暗号ファイルF2のデータ長よりも移動対象データのデータ長だけ短くなる。
ファイル結合ユニット135が、このような処理によって結合画像ファイルF4を作成すれば、万一、結合画像ファイルF4が不正者の手に渡り、フッタ部fに後続する暗号ファイルF2′が抽出されたとしても、当該暗号ファイルF2′には、移動対象データd1〜d4が脱落しているため、正しい復号化を行うことはできない。このため、セキュリティの向上を図ることができる。
一方、この変形例によって作成された結合画像ファイルF4に基づいて元ファイルF1を復元するには、復号化処理ユニット215にも、これに対応する機能を設けておく必要がある。すなわち、復号化処理ユニット215には、上記移動規則に基づいて、「埋込処理後のヒント画像ファイルFH′」内に埋め込まれている移動対象データd1〜d4を抽出し、抽出した移動対象データd1〜d4を用いて、「置換もしくは削除処理後の暗号ファイルF2′」を元の暗号ファイルF2に戻す機能をもたせておくようにする。たとえば、上例の移動規則で作成された結合画像ファイルF4については、「埋込処理後のヒント画像H′」を構成するデータ列の1000バイト目、2000バイト目、3000バイト目、... から、それぞれ移動対象データd1〜d4を読み出し、これらを暗号ファイルF2′の1000バイト目、2000バイト目、3000バイト目、... へ戻す処理を行えばよい。
もちろん、移動規則は必ずしも固定にしておく必要はなく、ファイル結合ユニット135は、その都度、任意の移動規則を採用して、上述の処理を行うことも可能である。この場合、ファイル結合ユニット135は、採用した移動規則を示す補助情報Aを付加データφに含ませる処理を行い、当該移動規則を復号化処理部205へ伝達するようにすればよい。図19には、各移動対象データd1〜d4のそれぞれについて、移動元(暗号ファイルF2上での位置)と移動先(ヒント画像H上での位置)とを示す移動規則を、補助情報Aとして記録した例(この例では、Aをφの末尾に配置)が示されている。
この場合、復号化処理部205側では、まず、ファイル分離ユニット235が、結合画像ファイルF4から、補助情報Aを分離抽出する処理を行い、復号化処理ユニット240が、この補助情報Aによって示される移動規則に基づいて、「置換もしくは削除処理後の暗号ファイルF2′」を元の暗号ファイルF2に戻す処理を行うようにすればよい。
以上、図17のブロック図を参照しながら、本発明の第2の実施形態に係るファイルの暗号処理システムの基本構成を説明したが、このシステムも、前述した第1の実施形態に係るシステムと同様に、パソコン等の汎用コンピュータに専用のアプリケーションプログラムを組み込むことにより実現することができる。
最後に、本発明に係る暗号処理システムに付随的な効果を生じさせる利用形態を簡単に述べておく。本発明の本来の効果は、「パスワードに関するヒントを提示する」ことにあり、そのような効果の恩恵に浴するためには、ユーザは、ヒント画像として、パスワードを連想することができる画像を指定する必要がある。ただ、ユーザは、必要に応じて、ヒント画像Hとして、元ファイルに関連した画像を指定することも可能である。この場合、「パスワードに関するヒントを提示する」という本発明の本来の効果を得ることはできないが、「暗号化処理後のファイル管理を容易にする」という別な効果を得ることができる。
通常、個々のファイルの識別は、そのファイル名によって行うのが一般的であるが、ヒント画像Hとして、元ファイルに関連した画像を指定すると、合成画像ファイルF3を、そのファイル名で識別するだけでなく、ヒント画像によっても識別することが可能になる。ヒント画像は、復号化処理の際にディスプレイ画面上に表示されるので、ヒント画像Hとして、元ファイルに関連した画像を指定しておけば、復号化処理の際に、当該ファイルがどのファイルであるかを、表示されたヒント画像によって直観的に認識することができるようになる。
たとえば、四半期の売上データのファイルを暗号化する場合を考えてみよう。この場合、ファイル名のみで管理すると、ユーザは、「2009年第1四半期」のようなファイル名を見て、ファイルの内容を理解することになる。これに対して、第1四半期のファイルについては、暗号化の際に「桜の画像」をヒント画像に指定し、第2四半期のファイルについては、暗号化の際に「海の画像」をヒント画像に指定する、という利用形態を採れば、ユーザは、春期の売上ファイルなのか、夏期の売上ファイルなのかを、ヒント画像を見るだけで直観的に認識することができるようになる。したがって、たとえファイル名が意味のない文字列であったとしても、ファイルの内容を把握することが可能になる。
特に、第2の実施形態の場合には、個々の合成画像ファイルに含まれているヒント画像を、様々なアプリケーションプログラムによってサムネイルの形式で一覧表示させることが可能なので、上述のような利用形態を採れば、「極めて直観的なファイル管理が実現できる」という付随的な効果の恩恵を十分に受けることができる。