【解決手段】情報検索プログラムは、携帯端末1を、検索データを取得する検索データ取得部11と、検索データに対して、ハッシュ関数を適用して検索データハッシュ値を算出する検索データハッシュ値算出部12と、複数のフィールドデータを含むレコードデータの一つのフィールドデータに対して、暗号化情報DB20から、検索データハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化データを検索する暗号化データ検索部13と、暗号化データに対して、共通鍵を適用して復号されたレコードデータを生成する暗号化データ復号部14と、レコードデータに含まれるフィールドデータを出力するフィールドデータ出力部15、として機能させる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に記載の技術では上記の通り、記憶装置に書き込まれたデータを検索する場合には、記憶装置に書き込まれているデータを復号する必要があり、復号処理に時間がかかり、高速な検索処理が行えないという問題がある。
【0006】
そこで、本発明は、かかる課題に鑑みて為されたものであり、検索対象のデータの秘匿性を高めつつ、高速な検索を行うことができる情報検索プログラム、情報検索方法及び情報検索装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明の情報検索プログラムは、コンピュータを、ハッシュ関数と共通鍵暗号方式における共通鍵とを記憶するツール記憶手段と、検索データを取得する検索データ取得手段と、検索データ取得手段によって取得された検索データに対して、ツール記憶手段によって記憶されたハッシュ関数を適用して検索データハッシュ値を算出する検索データハッシュ値算出手段と、複数のフィールドデータを含むレコードデータの一つのフィールドデータに対してツール記憶手段によって記憶されたハッシュ関数を適用して算出されたフィールドデータハッシュ値と、当該レコードデータに対してツール記憶手段によって記憶された共通鍵を適用して暗号化された暗号化データとを対応付けて記憶する暗号化情報データベースから、検索データハッシュ値算出手段によって算出された検索データハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化データを検索する暗号化データ検索手段と、暗号化データ検索手段によって検索された暗号化データに対して、ツール記憶手段によって記憶された共通鍵を適用して復号されたレコードデータを生成する暗号化データ復号手段と、暗号化データ復号手段によって生成されたレコードデータに含まれるフィールドデータを出力するフィールドデータ出力手段、として機能させる。
【0008】
このような情報検索プログラムによれば、暗号化情報データベースでは、ハッシュ値であるフィールドデータハッシュ値と、暗号化された暗号化データとが対応付けて記憶されている。よって、例えば第三者に暗号化情報データベースの内容が漏洩したとしても、元のデータの解読は難しく、秘匿性は高い。また、検索データに対応するレコードデータを検索する際に、検索データのハッシュ値である検索データハッシュ値と、暗号化情報データベースに記憶されているフィールドデータハッシュ値との一致性に基づいて検索される。よって、暗号化情報データベースの内容を復号することなく検索を行うことができ、秘匿性を維持しつつ高速な検索を行うことができる。以上のように、このような情報検索プログラムによれば、検索対象のデータの秘匿性を高めつつ、高速な検索を行うことができる。
【0009】
また、本発明の情報検索プログラムにおいて、暗号化情報データベースは、アカウント情報をさらに対応付けて記憶し、検索データ取得手段は、アカウント情報をさらに取得し、暗号化データ検索手段は、暗号化情報データベースから、検索データハッシュ値算出手段によって算出された検索データハッシュ値と、検索データ取得手段によって取得されたアカウント情報とに基づいて暗号化データを検索することが好ましい。かかる構成を採れば、検索時に、アカウント情報に対応付けられたレコードデータのみを検索することができ、ユーザの利便性が向上する。例えば、異なるユーザが同一の検索データ及び同一のアカウント情報に基づいて検索したり、同一のユーザが異なるコンピュータから同一の検索データ及び同一のアカウント情報に基づいて検索したりする場合においても、同一のレコードデータを検索することができる。
【0010】
また、本発明の情報検索プログラムにおいて、暗号化情報データベースは、当該情報検索プログラムを識別するプログラム識別情報をさらに対応付けて記憶し、検索データ取得手段は、プログラム識別情報をさらに取得し、暗号化データ検索手段は、暗号化情報データベースから、検索データハッシュ値算出手段によって算出された検索データハッシュ値と、検索データ取得手段によって取得されたアカウント情報と、検索データ取得手段によって取得されたプログラム識別情報とに基づいて暗号化データを検索することが好ましい。かかる構成を採れば、検索時に、当該情報検索プログラムに対応付けられたレコードデータのみを検索することができ、ユーザの利便性が向上する。例えば、同一のユーザが異なる情報検索プログラムが実行されている異なるコンピュータから同一のアカウント情報を用いて検索する場合においては、コンピュータごとのレコードデータを検索することができる。
【0011】
また、本発明の情報検索プログラムにおいて、コンピュータを、複数のフィールドデータを含むレコードデータを取得するレコードデータ取得手段と、レコードデータ取得手段によって取得されたレコードデータの一つのフィールドデータに対して、ツール記憶手段によって記憶されたハッシュ関数を適用してフィールドデータハッシュ値を算出するフィールドデータハッシュ値算出手段と、レコードデータ取得手段によって取得されたレコードデータに対して、ツール記憶手段によって記憶された共通鍵を適用して暗号化された暗号化データを生成するレコードデータ暗号化手段と、フィールドデータハッシュ値算出手段によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化手段によって生成された暗号化データとを対応付けて暗号化情報データベースに記憶する暗号化情報登録手段、としてさらに機能させることが好ましい。かかる構成を採れば、暗号化情報データベースに対して、フィールドデータハッシュ値と暗号化データとが対応付いた暗号化情報を登録及び更新することができ、それゆえに当該暗号化情報を検索することができる。
【0012】
また、本発明の情報検索プログラムにおいて、コンピュータを、複数のフィールドデータを含むレコードデータとアカウント情報とを取得するレコードデータ取得手段と、レコードデータ取得手段によって取得されたレコードデータの一つのフィールドデータに対して、ツール記憶手段によって記憶されたハッシュ関数を適用してフィールドデータハッシュ値を算出するフィールドデータハッシュ値算出手段と、レコードデータ取得手段によって取得されたレコードデータに対して、ツール記憶手段によって記憶された共通鍵を適用して暗号化された暗号化データを生成するレコードデータ暗号化手段と、フィールドデータハッシュ値算出手段によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化手段によって生成された暗号化データと、レコードデータ取得手段によって取得されたアカウント情報とを対応付けて暗号化情報データベースに記憶する暗号化情報登録手段、としてさらに機能させることが好ましい。かかる構成を採れば、暗号化情報データベースに対して、フィールドデータハッシュ値と暗号化データとアカウント情報とが対応付いた暗号化情報を登録及び更新することができ、それゆえに当該暗号化情報を検索することができる。
【0013】
また、本発明の情報検索プログラムにおいて、コンピュータを、複数のフィールドデータを含むレコードデータとアカウント情報とプログラム識別情報とを取得するレコードデータ取得手段と、レコードデータ取得手段によって取得されたレコードデータの一つのフィールドデータに対して、ツール記憶手段によって記憶されたハッシュ関数を適用してフィールドデータハッシュ値を算出するフィールドデータハッシュ値算出手段と、レコードデータ取得手段によって取得されたレコードデータに対して、ツール記憶手段によって記憶された共通鍵を適用して暗号化された暗号化データを生成するレコードデータ暗号化手段と、フィールドデータハッシュ値算出手段によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化手段によって生成された暗号化データと、レコードデータ取得手段によって取得されたアカウント情報と、レコードデータ取得手段によって取得されたプログラム識別情報とを対応付けて暗号化情報データベースに記憶する暗号化情報登録手段、としてさらに機能させることが好ましい。かかる構成を採れば、暗号化情報データベースに対して、フィールドデータハッシュ値と暗号化データとアカウント情報とプログラム識別情報とが対応付いた暗号化情報を登録及び更新することができ、それゆえに当該暗号化情報を検索することができる。
【0014】
また、本発明の情報検索プログラムにおいて、コンピュータは、電話機であり、検索データは、電話番号であり、レコードデータは、一つのフィールドデータとして電話番号を含み、別のフィールドデータとして当該電話番号に関連する関連情報を含み、検索データ取得手段は、当該電話機への電話の着信時に着信元の電話番号を取得し、フィールドデータ出力手段は、暗号化データ復号手段によって生成されたレコードデータに含まれるフィールドデータのうち、検索データ取得手段によって取得された着信元の電話番号に関連する関連情報を出力することが好ましい。かかる構成を採れば、例えば、通常は、着信元の電話番号及び関連情報をそれぞれハッシュ化及び暗号化して秘匿性が高いまま暗号化情報データベースに記憶しておき、電話の着信時に、着信元の電話番号に基づく関連情報を検索して出力することができる。それにより、着信元の個人情報等のデータの秘匿性を高めつつ、当該データが必要になった際に高速に検索を行い、利用することができる。
【0015】
ところで、本発明は、上記のようにプログラムの発明として記述できる他に、以下のようにそれぞれ方法及び装置の発明としても記述することができる。これはカテゴリが異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。
【0016】
即ち、本発明に係る情報検索方法は、ハッシュ関数と共通鍵暗号方式における共通鍵とを記憶するツール記憶手段を備えるコンピュータにより実行される情報検索方法であって、検索データを取得する検索データ取得ステップと、検索データ取得ステップにおいて取得された検索データに対して、ツール記憶手段によって記憶されたハッシュ関数を適用して検索データハッシュ値を算出する検索データハッシュ値算出ステップと、複数のフィールドデータを含むレコードデータの一つのフィールドデータに対してツール記憶手段によって記憶されたハッシュ関数を適用して算出されたフィールドデータハッシュ値と、当該レコードデータに対してツール記憶手段によって記憶された共通鍵を適用して暗号化された暗号化データとを対応付けて記憶する暗号化情報データベースから、検索データハッシュ値算出ステップにおいて算出された検索データハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化データを検索する暗号化データ検索ステップと、暗号化データ検索ステップにおいて検索された暗号化データに対して、ツール記憶手段によって記憶された共通鍵を適用して復号されたレコードデータを生成する暗号化データ復号ステップと、暗号化データ復号ステップにおいて生成されたレコードデータに含まれるフィールドデータを出力するフィールドデータ出力ステップと、を含む。
【0017】
また、本発明に係る情報検索装置は、ハッシュ関数と共通鍵暗号方式における共通鍵とを記憶するツール記憶手段と、検索データを取得する検索データ取得手段と、検索データ取得手段によって取得された検索データに対して、ツール記憶手段によって記憶されたハッシュ関数を適用して検索データハッシュ値を算出する検索データハッシュ値算出手段と、複数のフィールドデータを含むレコードデータの一つのフィールドデータに対してツール記憶手段によって記憶されたハッシュ関数を適用して算出されたフィールドデータハッシュ値と、当該レコードデータに対してツール記憶手段によって記憶された共通鍵を適用して暗号化された暗号化データとを対応付けて記憶する暗号化情報データベースから、検索データハッシュ値算出手段によって算出された検索データハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化データを検索する暗号化データ検索手段と、暗号化データ検索手段によって検索された暗号化データに対して、ツール記憶手段によって記憶された共通鍵を適用して復号されたレコードデータを生成する暗号化データ復号手段と、暗号化データ復号手段によって生成されたレコードデータに含まれるフィールドデータを出力するフィールドデータ出力手段と、を備える。
【発明の効果】
【0018】
本発明によれば、検索対象のデータの秘匿性を高めつつ、高速な検索を行うことができる。
【発明を実施するための形態】
【0020】
以下、図面とともに本発明による情報検索プログラム、情報検索方法、及び情報検索装置の好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【0021】
図1は、本発明の実施形態に係る情報検索システム4の概要図である。情報検索システム4は、携帯端末1(情報検索装置)と、外部サーバ2と、発信端末3とを含んで構成される。携帯端末1及び外部サーバ2、携帯端末1及び発信端末3は、電話回線網やインターネットなどのネットワークによって互いに接続されている。
【0022】
携帯端末1は、スマートフォンや携帯電話(電話機)などのコンピュータである。携帯端末1は、通常は、個人情報である電話帳データを格納せず、電話帳データが必要になった際に外部サーバ2に対して検索を行い、外部サーバ2から電話帳データを取得する。そして携帯端末1は、電話帳データを取得後に、当該電話帳データが必要なくなった時点で削除する。それにより、例えば携帯端末1のユーザによって携帯端末1を紛失した際などにおいても、電話帳データ、すなわち個人情報が漏洩する可能性を最小限に抑えることができる。
【0023】
外部サーバ2は、サーバ装置などのコンピュータである。外部サーバ2は、携帯端末1のユーザが所有する電話帳データを暗号化して格納している。外部サーバ2は、携帯端末1からの電話帳データの検索要求に対して、対応する電話帳データを暗号化したまま携帯端末1に返信する。
【0024】
図2は、暗号化されていない、平文の電話帳データのテーブル例を示す図である。
図2に示す通り、電話帳データには、人ごとのデータがレコードデータ(テーブルの行に対応)として複数登録されており、レコードデータには複数のフィールドデータ(テーブルの列に対応)が含まれる。フィールドデータの具体例としては、
図2に示す通り、氏名、氏名カナ、会社名、電話番号(複数登録可能)、メール(複数登録可能)、住所、メモなどが挙げられる。なお、
図2に示すフィールドデータのうち、電話番号以外を、当該電話番号に関連する関連情報と呼ぶ。
【0025】
発信端末3は、一般的な電話機や携帯電話やスマートフォンなどである。発信端末3は、携帯端末1に対して電話をかけることができる。
【0026】
続いて、携帯端末1及び外部サーバ2の機能ブロックについて説明する。
図3は、携帯端末1及び外部サーバ2の機能ブロック図である。
図3に示す通り、携帯端末1は、ツール記憶部10(ツール記憶手段)、検索データ取得部11(検索データ取得手段)、検索データハッシュ値算出部12(検索データハッシュ値算出手段)、暗号化データ検索部13(暗号化データ検索手段)、暗号化データ復号部14(暗号化データ復号手段)、フィールドデータ出力部15(フィールドデータ出力手段)、レコードデータ取得部16(レコードデータ取得手段)、フィールドデータハッシュ値算出部17(フィールドデータハッシュ値算出手段)、レコードデータ暗号化部18(レコードデータ暗号化手段)、及び暗号化情報登録部19(暗号化情報登録手段)を含んで構成される。また、
図3に示す通り、外部サーバ2は、暗号化情報DB20(暗号化情報データベース)を含んで構成される。
【0027】
携帯端末1及び外部サーバ2は、CPU等のハードウェアから構成されているものである。
図4は、携帯端末1及び外部サーバ2のハードウェア構成の一例を示す図である。
図3に示される携帯端末1及び外部サーバ2は、物理的には、
図4に示すように、CPU100、主記憶装置であるRAM101及びROM102、ディスプレイ等の入出力装置103、通信モジュール104、及び補助記憶装置105などを含むコンピュータシステムとして構成されている。
【0028】
図3に示す携帯端末1及び外部サーバ2の各機能ブロックの機能は、
図4に示すCPU100、RAM101等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU100の制御のもとで入出力装置103、通信モジュール104、及び補助記憶装置105を動作させるとともに、RAM101におけるデータの読み出し及び書き込みを行うことで実現される。
【0029】
続いて、上述した携帯端末1の機能ブロックによる処理をコンピュータに実行させるための情報検索プログラム5を説明する。
図5に示すように、情報検索プログラム5は、コンピュータに挿入されてアクセスされる、あるいはコンピュータが備える記録媒体60に形成されたプログラム格納領域61内に格納される。より具体的には、情報検索プログラム5は、携帯端末1が備える記録媒体60に形成されたプログラム格納領域61内に格納される。
【0030】
情報検索プログラム5は、ツール記憶モジュール50、検索データ取得モジュール51、検索データハッシュ値算出モジュール52、暗号化データ検索モジュール53、暗号化データ復号モジュール54、フィールドデータ出力モジュール55、レコードデータ取得モジュール56、フィールドデータハッシュ値算出モジュール57、レコードデータ暗号化モジュール58、及び暗号化情報登録モジュール59を含んで構成される。ツール記憶モジュール50、検索データ取得モジュール51、検索データハッシュ値算出モジュール52、暗号化データ検索モジュール53、暗号化データ復号モジュール54、フィールドデータ出力モジュール55、レコードデータ取得モジュール56、フィールドデータハッシュ値算出モジュール57、レコードデータ暗号化モジュール58、及び暗号化情報登録モジュール59を実行させることにより実現される機能は、上述した携帯端末1のツール記憶部10、検索データ取得部11、検索データハッシュ値算出部12、暗号化データ検索部13、暗号化データ復号部14、フィールドデータ出力部15、レコードデータ取得部16、フィールドデータハッシュ値算出部17、レコードデータ暗号化部18、及び暗号化情報登録部19の機能とそれぞれ同様である。
【0031】
なお、情報検索プログラム5は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記録(インストールを含む)される構成としてもよい。また、情報検索プログラム5の各モジュールは、1つのコンピュータでなく、複数のコンピュータのいずれかにインストールされてもよい。その場合、当該複数のコンピュータによるコンピュータシステムよって一連の情報検索プログラム5の処理が行われる。
【0032】
以下、
図3に示す携帯端末1及び外部サーバ2の各機能ブロックについて説明する。
【0033】
ツール記憶部10は、ハッシュ関数(あるいはハッシュ関数を実現する関数モジュール)と共通鍵暗号方式における共通鍵とを記憶する。ツール記憶部10は、携帯端末1内に設けられた内部アプリケーション領域にハッシュ関数と共通鍵とを記憶してもよい。内部アプリケーション領域に記憶されたデータは、他のアプリケーションや他の装置からアクセスすることはできない。
【0034】
ここで、ハッシュ関数とは、テキストの羅列などのデータを、一定長のデータに要約するための関数である。元のデータに対してハッシュ関数を適用することをハッシュ化と呼び、ハッシュ化により出力されたデータをハッシュ値と呼ぶ。ハッシュ関数は、同じ元のデータを入力する限り、必ず同じハッシュ値が出力される。また、ハッシュ関数では、異なる元のデータから同じハッシュ値が得られることはほとんどなく、出力されたハッシュ値から元のデータを算出することは難しい。よって、ハッシュ化は一種の暗号化でもある。
【0035】
また、共通鍵暗号方式とは、暗号化と復号に同一の鍵である共通鍵を用いる暗号方式である。携帯端末1は、共通鍵を生成する共通鍵生成手段(不図示)を備えてもよい。共通鍵生成手段は、例えば、ユーザやアプリケーションによって共通鍵発行指示を受けると、共通鍵生成アルゴリズム(例:AES(Advanced Encryption Standard))をセットし、乱数ジェネレータ(例:SHA1PRNG)を指定し、キージェネレータを初期化し(例:128bits)、ランダムキーを生成し、キーのバイト列を取得することで共通鍵を生成し、生成された共通鍵はツール記憶部10によって記憶される。
【0036】
(外部サーバ2の)暗号化情報DB20は、複数のフィールドデータを含むレコードデータの一つのフィールドデータに対して、ツール記憶部10によって記憶されたハッシュ関数を適用して算出されたフィールドデータハッシュ値と、当該レコードデータに対してツール記憶部10によって記憶された共通鍵を適用して暗号化された暗号化データとを対応付けて記憶する。
【0037】
図6は、暗号化情報DB20によって記憶される、
図2に示す電話帳データのテーブル例のうち「氏名」が「山田太郎」のレコードデータに基づいて生成されたレコードデータの一例を示す図である。
図6(a)は、「電話番号1」のフィールドデータである「090−XXXX−YYYY」に対してツール記憶部10によって記憶されたハッシュ関数を適用して算出されたフィールドデータハッシュ値(「電話番号1ハッシュ値」)と、「氏名」が「山田太郎」のレコードデータに対してツール記憶部10によって記憶された共通鍵を適用して暗号化された暗号化データ(「暗号化電話帳データ」)とが対応付けられたレコードデータの一例を示す図である。なお、
図6(b)に示すレコードデータの一例のように、暗号化情報DB20は、複数のフィールドデータハッシュ値と、暗号化データとを対応付けて記憶してもよい。
【0038】
検索データ取得部11は、検索データを取得する。検索データの例としては、電話番号や文字列などのテキストデータが挙げられる。検索データ取得部11は、取得した検索データを検索データハッシュ値算出部12に出力する。
【0039】
検索データハッシュ値算出部12は、検索データ取得部11によって取得された検索データに対して、ツール記憶部10によって記憶されたハッシュ関数を適用して検索データハッシュ値を算出する。検索データハッシュ値算出部12は、算出した検索データハッシュ値を暗号化データ検索部13に出力する。
【0040】
暗号化データ検索部13は、外部サーバ2の暗号化情報DB20から、ネットワークを介して、検索データハッシュ値算出部12によって算出された検索データハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化データを検索する(取得する)。暗号化データ検索部13は、検索した暗号化データを暗号化データ復号部14に出力する。
【0041】
例えば、暗号化情報DB20によって
図6(a)に示すレコードデータが記憶されており、暗号化データ検索部13が、検索データハッシュ値として「電話番号1」のハッシュ値である「3fd0c663082bb66a」に基づいて検索が行う場合について説明する。まず、携帯端末1の暗号化データ検索部13は、ネットワークを介して、外部サーバ2の暗号化情報DB20に対して検索データハッシュ値「3fd0c663082bb66a」を送信し、暗号化情報DB20は当該検索データハッシュ値を受信する。
【0042】
次に、暗号化情報DB20は、記憶されたレコードデータのうち、フィールドデータハッシュ値が受信された検索データハッシュ値と一致するレコードデータを検索し、対応付けられている暗号化データ「JA8zfNb+YXl6/UaK+kj1NX6…」を抽出する。次に、外部サーバ2の暗号化情報DB20は、ネットワークを介して、携帯端末1の暗号化データ検索部13に対して抽出した暗号化データを送信し、暗号化データ検索部13は、当該暗号化データを受信する。
【0043】
ここで、
図6(b)に示すレコードデータの一例のように、暗号化情報DB20が、複数のフィールドデータハッシュ値と、暗号化データとを対応付けて記憶している場合、暗号化データ検索部13は、検索データハッシュ値が、複数のフィールドデータハッシュ値のうちいずれか一つのフィールドデータハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化データを検索する。
【0044】
なお、暗号化データ検索部13が行う検索処理の一部は、外部サーバ2が備える暗号化情報DB20が行ってもよい。また、暗号化データ検索部13が行う検索処理の一部は、外部サーバ2が備える、検索データハッシュ値を携帯端末1から受信する検索データハッシュ値受信部(不図示)、検索データハッシュ値受信部によって受信された検索データハッシュ値に基づいて暗号化情報DB20から対応する暗号化データを検索する暗号化データ検索部(不図示)、暗号化データ検索部によって検索された暗号化データを携帯端末1に送信する暗号化データ送信部(不図示)などが行ってもよい。
【0045】
暗号化データ復号部14は、暗号化データ検索部13によって検索された暗号化データに対して、ツール記憶部10によって記憶された共通鍵を適用して復号されたレコードデータを生成する。なお、暗号化データ検索部13によって検索された暗号化データは、暗号化情報DB20によって記憶されていたものであり、上述の通り、暗号化情報DB20に記憶されている暗号化データは、ツール記憶部10によって記憶された共通鍵を適用して暗号化されたものであるため、当該共通鍵で復号することができる。暗号化データ復号部14は、生成したレコードデータをフィールドデータ出力部15に出力する。
【0046】
ここで、暗号化データ復号部14による復号について具体例を用いて説明する。例えば、暗号化データ復号部14は、ブロック暗号方式における初期化ベクトルを取得し、携帯端末1のプログラム実行環境にて提供されている復号ライブラリに対して、暗号アルゴリズム(例:AES)、モード(例:CBC(Cipher Block Chaining))、パディング(例:PKCS5)、ツール記憶部10によって記憶された共通鍵などを設定し、当該復号ライブラリの機能を利用して復号を行う。
【0047】
フィールドデータ出力部15は、暗号化データ復号部14によって生成されたレコードデータに含まれるフィールドデータを出力する。フィールドデータ出力部15は、レコードデータに含まれるフィールドデータ全てを出力してもよいし、レコードデータに含まれる一部フィールドデータのみを出力してもよい。フィールドデータ出力部15は、具体的に、携帯端末1の画面や他のサーバ装置にフィールドデータを出力する。
【0048】
レコードデータ取得部16は、複数のフィールドデータを含むレコードデータを取得する。レコードデータ取得部16によって取得されるレコードデータは、暗号化情報DB20に新たに登録するためのデータ、あるいは、暗号化情報DB20に登録済みのデータの内容を更新するためのデータである。レコードデータ取得部16は、取得したレコードデータをフィールドデータハッシュ値算出部17及びレコードデータ暗号化部18に出力する。
【0049】
フィールドデータハッシュ値算出部17は、レコードデータ取得部16によって取得されたレコードデータの一つのフィールドデータに対して、ツール記憶部10によって記憶されたハッシュ関数を適用してフィールドデータハッシュ値を算出する。フィールドデータハッシュ値算出部17は、算出したフィールドデータハッシュ値を暗号化情報登録部19に出力する。
【0050】
レコードデータ暗号化部18は、レコードデータ取得部16によって取得されたレコードデータに対して、ツール記憶部10によって記憶された共通鍵を適用して暗号化された暗号化データを生成する。レコードデータ暗号化部18は、生成した暗号化データを暗号化情報登録部19に出力する。
【0051】
ここで、レコードデータ暗号化部18による暗号化について具体例を用いて説明する。例えば、レコードデータ暗号化部18は、ブロック暗号方式における初期化ベクトルを取得し、携帯端末1のプログラム実行環境にて提供されている暗号化ライブラリに対して、暗号アルゴリズム(例:AES)、モード(例:CBC(Cipher Block Chaining))、パディング(例:PKCS5)、ツール記憶部10によって記憶された共通鍵などを設定し、当該暗号化ライブラリの機能を利用して暗号化を行う。
【0052】
暗号化情報登録部19は、フィールドデータハッシュ値算出部17によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化部18によって生成された暗号化データとを対応付けて暗号化情報DB20に記憶する。具体的に、暗号化情報登録部19は、フィールドデータハッシュ値算出部17によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化部18によって生成された暗号化データとを暗号化情報DB20に送信し、それらを対応付けて記憶するように暗号化情報DB20に指示し、暗号化情報DB20は当該指示に基づいて記憶する。暗号化情報登録部19は、暗号化情報DB20の記憶処理に基づき、記憶が成功したか否かなどの登録結果情報を暗号化情報DB20から受信し、携帯端末1の画面や他のサーバ装置などに出力してもよい。
【0053】
なお、暗号化情報登録部19が行う登録処理の一部は、外部サーバ2が備える暗号化情報DB20が行ってもよい。また、暗号化情報登録部19が行う登録処理の一部は、外部サーバ2が備える、フィールドデータハッシュ値と暗号化データとを携帯端末1から受信する暗号化情報受信部(不図示)、暗号化情報受信部によって受信されたフィールドデータハッシュ値と暗号化データとを対応付けて記憶する暗号化情報DB20、暗号化情報DB20の記憶処理に基づく登録結果情報を携帯端末1に送信する結果情報送信部(不図示)などが行ってもよい。
【0054】
次に、
図7に示すシーケンス図を用いて、本実施形態に係る情報検索システム4における情報検索処理(情報検索方法)について説明する。なお、外部サーバ2の暗号化情報DB20には、
図6に示すような暗号化電話帳データが記憶されているものとする。
【0055】
まず、発信端末3により、携帯端末1に対して電話が発信される(ステップS1)。次に、携帯端末1により、発信端末3からの電話の発信が着信される(ステップS2)。次に、携帯端末1の検索データ取得部11により、S2の着信に基づき着信元である発信端末3の電話番号が取得される(ステップS3、検索データ取得ステップ)。次に、携帯端末1により、S3にて取得された電話番号が出力される(ステップS4)。
図8(a)は、S4にて電話番号が携帯端末1の画面上に出力(表示)されている例を示す図である。携帯端末1のユーザは、
図8(a)に示す画面を見ることで、出力された電話番号から電話がかかってきていることを知ることができる。
【0056】
次に、携帯端末1の検索データハッシュ値算出部12により、S3にて取得された電話番号に対して、ツール記憶部10によって記憶されたハッシュ関数を適用して電話番号のハッシュ値が算出される(ステップS5、検索データハッシュ値算出ステップ)。次に、暗号化データ検索部13により、S5にて算出された電話番号のハッシュ値が外部サーバ2に送信される(ステップS6、暗号化データ検索ステップ)。
【0057】
次に、外部サーバ2により、S6にて送信された電話番号のハッシュ値が受信される(ステップS7、暗号化データ検索ステップ)。次に、外部サーバ2により、S7にて受信された電話番号のハッシュ値と一致するフィールドデータハッシュ値に対応付けられている暗号化電話帳データが検索される(ステップS8、暗号化データ検索ステップ)。次に、外部サーバ2により、S8にて検索された暗号化電話帳データが携帯端末1に送信される(ステップS9、暗号化データ検索ステップ)。
【0058】
次に、携帯端末1の暗号化レコードデータ検索部13により、S9にて送信された暗号化電話帳データが受信される(ステップS10、暗号化データ検索ステップ)。次に、携帯端末1の暗号化データ復号部14により、S10にて受信された暗号化電話帳データに対して、ツール記憶部10によって記憶された共通鍵を適用して復号された電話帳データが生成される(ステップS11、暗号化データ復号ステップ)。次に、携帯端末1のフィールドデータ出力部15により、S11にて生成された電話帳データが出力される(ステップS12、フィールドデータ出力ステップ)。
図8(b)は、S12にて電話帳データの一部(会社名及び氏名)が携帯端末1の画面上に追加で出力(表示)されている例を示す図である。携帯端末1のユーザは、
図8(b)に示す画面を見ることで、着信元の詳細な情報を知ることができ、着信に対してどのような対応を行うかの判断が行えるなど、ユーザの利便性が向上する。
【0059】
なお、携帯端末1の暗号化データ検索部13は、S6〜S10にて、外部サーバ2の暗号化情報DB20に対して暗号化電話帳データの検索を行っているが、この検索処理の前に、携帯端末1の内部アプリケーション領域に記憶されている暗号化電話帳データを検索してもよい。例えば、携帯端末1の内部アプリケーション領域には、暗号化情報DB20と同様のデータ構成の暗号化電話帳データが記憶されており、暗号化データ検索部13は、S5の直後に当該暗号化電話帳データに対してS8と同様の検索を行う。検索により所望の暗号化電話帳データが取得できた場合、S12に進み、取得できなかった場合はS6に進む。例えば、携帯端末1は、S5にて算出された電話番号のハッシュ値と、S10にて受信された暗号化電話帳データとを対応付けて、携帯端末1の内部アプリケーション領域に一定期間記憶し、上述のように後続の処理においてまずは当該内部アプリケーション領域に記憶された暗号化電話帳データを検索することで、検索をさらに高速化することができる。
【0060】
また、上記情報検索処理は、電話の着信時の検索処理として説明したが、これに限るものではない。例えば、暗号化情報DB20によって記憶されたデータを更新する際に、更新対象のデータを取得する際にも同様の処理で取得することができる。
【0061】
続いて、
図9に示すシーケンス図を用いて、本実施形態に係る情報検索システム4における情報登録処理(情報登録方法)について説明する。
【0062】
まず、携帯端末1のユーザにより、登録したい電話帳データが作成又は更新され、当該電話帳データが携帯端末1のレコードデータ取得部16により取得される(ステップS20)。次に、携帯端末1のフィールドデータハッシュ値算出部17により、S20にて取得された電話帳データに含まれる電話番号に対して、ツール記憶部10によって記憶されたハッシュ関数を適用して電話番号のハッシュ値が算出される(ステップS21)。次に、携帯端末1のレコードデータ暗号化部18により、S20にて取得された電話帳データに対して、ツール記憶部10によって記憶された共通鍵を適用して暗号化された暗号化電話帳データが生成される(ステップS22)。次に、携帯端末1の暗号化情報登録部19により、S21にて算出された電話番号のハッシュ値と、S22にて生成された暗号化電話帳データとを含む暗号化情報が外部サーバ2に送信される(ステップS23)。
【0063】
次に、外部サーバ2により、S23にて送信された暗号化情報が受信される(ステップS24)。次に、外部サーバ2の暗号化情報DB20により、S24にて受信された暗号化情報が記憶される(ステップS25)。次に、外部サーバ2により、S25の記憶処理に基づく登録結果情報が携帯端末1に送信される(ステップS26)。
【0064】
次に、携帯端末1の暗号化情報登録部19により、S26にて送信された登録結果情報が受信される(ステップS27)。次に、携帯端末1により、S27にて受信された登録結果情報が出力される(ステップS28)。例えば、携帯端末1のユーザは、S28にて出力された登録結果情報を見ることで、登録処理又は更新処理が正常に行われたか否かを知ることができる。
【0065】
[変形例1]
続いて、上述の実施形態に係る情報検索システム4の変形例1について説明する。以下の説明では、上述の実施形態との差分のみを説明する。
【0066】
暗号化情報DB20は、アカウント情報をさらに対応付けて記憶する。すなわち、暗号化情報DB20は、フィールドデータハッシュ値と暗号化データとアカウント情報とを対応付けて記憶する。
【0067】
ここでアカウント情報とは、ユーザが特定の領域、例えばコンピュータやネットワーク上のサービスなどにログインするための権利を示す情報である。アカウント情報は、具体的には、ID、又はIDとパスワードの組み合わせ、又は特定のネットワーク上のサービスに対してログインした後に当該サービスから発行される認証用トークン情報などが挙げられる。
図10(a)は、暗号化情報DB20によって記憶される、アカウント情報がさらに対応付けられたレコードデータの一例を示す図である。
【0068】
ツール記憶部10は、アカウント情報ごとに対応する共通鍵を記憶してもよい。
【0069】
検索データ取得部11は、アカウント情報をさらに取得する。すなわち、検索データ取得部11は、検索データとアカウント情報とを取得する。検索データ取得部11は、取得したアカウント情報を暗号化データ検索部13に出力する。
【0070】
暗号化データ検索部13は、暗号化情報DB20から、検索データハッシュ値算出部12によって算出された検索データハッシュ値と、検索データ取得部11によって取得されたアカウント情報とに基づいて暗号化データを検索する。
【0071】
レコードデータ取得部16は、複数のフィールドデータを含むレコードデータとアカウント情報とを取得する。レコードデータ取得部16は、取得したアカウント情報を暗号化情報登録部19に出力する。
【0072】
暗号化情報登録部19は、フィールドデータハッシュ値算出部17によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化部18によって生成された暗号化データと、レコードデータ取得部16によって取得されたアカウント情報とを対応付けて暗号化情報DB20に記憶する。
【0073】
[変形例2]
続いて、上述の実施形態に係る情報検索システム4の変形例2について説明する。以下の説明では、上述の実施形態との差分のみを説明する。
【0074】
暗号化情報DB20は、当該情報検索プログラムを識別するプログラム識別情報をさらに対応付けて記憶する。すなわち、暗号化情報DB20は、フィールドデータハッシュ値と暗号化データとアカウント情報とプログラム識別情報とを対応付けて記憶する。
【0075】
ここで、プログラム識別情報とは、携帯端末1で実行されている情報検索プログラム5の識別情報であり、例えばユニークな値である。
図10(b)は、暗号化情報DB20によって記憶される、プログラム識別情報がさらに対応付けられたレコードデータの一例を示す図である。
【0076】
検索データ取得部11は、プログラム識別情報をさらに取得する。すなわち、検索データ取得部11は、検索データとアカウント情報とプログラム識別情報とを取得する。検索データ取得部11は、取得したプログラム識別情報を暗号化データ検索部13に出力する。
【0077】
暗号化データ検索部13は、暗号化情報DB20から、検索データハッシュ値算出部12によって算出された検索データハッシュ値と一致するフィールドデータハッシュ値と、検索データ取得部11によって取得されたアカウント情報と、検索データ取得部11によって取得されたプログラム識別情報とに基づいて暗号化データを検索する。
【0078】
レコードデータ取得部16は、複数のフィールドデータを含むレコードデータとアカウント情報とプログラム識別情報とを取得する。レコードデータ取得部16は、取得したプログラム識別情報を暗号化情報登録部19に出力する。
【0079】
暗号化情報登録部19は、フィールドデータハッシュ値算出部17によって算出されたフィールドデータハッシュ値と、レコードデータ暗号化部18によって生成された暗号化データと、レコードデータ取得部16によって取得されたアカウント情報と、レコードデータ取得部16によって取得されたプログラム識別情報とを対応付けて暗号化情報DB20に記憶する。
【0080】
次に、本実施形態のように構成された情報検索システム4の作用効果について説明する。
【0081】
本実施形態の情報検索プログラム5によれば、暗号化情報DB20では、ハッシュ値であるフィールドデータハッシュ値と、暗号化された暗号化データとが対応付けて記憶されている。よって、例えば第三者に暗号化情報DB20の内容が漏洩したとしても、元のデータの解読は難しく、秘匿性は高い。また、検索データに対応するレコードデータを検索する際に、検索データのハッシュ値である検索データハッシュ値と、暗号化情報DB20に記憶されているフィールドデータハッシュ値との一致性に基づいて検索される。よって、暗号化情報DB20の内容を復号することなく検索を行うことができ、秘匿性を維持しつつ高速な検索を行うことができる。以上のように、このような情報検索プログラム5によれば、検索対象のデータの秘匿性を高めつつ、高速な検索を行うことができる。
【0082】
また、本実施形態の情報検索プログラム5において、検索時に、アカウント情報に対応付けられたレコードデータのみを検索することができ、ユーザの利便性が向上する。例えば、異なるユーザが同一の検索データ及び同一のアカウント情報に基づいて検索したり、同一のユーザが異なるコンピュータから同一の検索データ及び同一のアカウント情報に基づいて検索したりする場合においても、同一のレコードデータを検索することができる。
【0083】
また、本実施形態の情報検索プログラム5において、検索時に、当該情報検索プログラム5に対応付けられたレコードデータのみを検索することができ、ユーザの利便性が向上する。例えば、同一のユーザが異なる情報検索プログラム5が実行されている異なるコンピュータから同一のアカウント情報を用いて検索する場合においては、コンピュータごとのレコードデータを検索することができる。
【0084】
また、本実施形態の情報検索プログラム5において、暗号化情報DB20に対して、フィールドデータハッシュ値と暗号化データとが対応付いた暗号化情報を登録及び更新することができ、それゆえに当該暗号化情報を検索することができる。
【0085】
また、本実施形態の情報検索プログラム5において、暗号化情報DB20に対して、フィールドデータハッシュ値と暗号化データとアカウント情報とが対応付いた暗号化情報を登録及び更新することができ、それゆえに当該暗号化情報を検索することができる。
【0086】
また、本実施形態の情報検索プログラム5において、暗号化情報DB20に対して、フィールドデータハッシュ値と暗号化データとアカウント情報とプログラム識別情報とが対応付いた暗号化情報を登録及び更新することができ、それゆえに当該暗号化情報を検索することができる。
【0087】
また、本実施形態の情報検索プログラム5において、例えば、通常は、着信元の電話番号及び関連情報をそれぞれハッシュ化及び暗号化して秘匿性が高いまま暗号化情報DB20に記憶しておき、電話の着信時に、着信元の電話番号に基づく関連情報を検索して出力することができる。それにより、着信元の個人情報等のデータの秘匿性を高めつつ、当該データが必要になった際に高速に検索を行い、利用することができる。
【0088】
なお、本実施形態では、暗号化情報DB20は外部サーバ2が備えるものとして説明したが、携帯端末1が備えていてもよい。その場合の検索処理は、ネットワークを介して外部サーバ2にアクセスする以外は同様である。