説明

クライアント装置、サーバ装置、通信システム、及び通信方法

【課題】検索サービスの汎用性を確保すると共に、検索サービスの利用者の興味が特定されにくいクライアント装置、サーバ装置、通信システム及び通信方法を提供する。
【解決手段】検索語にハッシュ関数を適用してハッシュ値を求めるハッシュ演算部103と、マスク値を用いてハッシュ値をマスクしたインデックスを求めるマスク演算部105と、インデックス及びマスク値をサーバ装置20に送信すると共に、インデックスに対応するデータの一覧をサーバ装置20から受信する通信インタフェース部107と、当該データの一覧から、ハッシュ値に対応するデータを特定する特定部109とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明に係るいくつかの態様は、クライアント装置、サーバ装置、通信システム、及び通信方法に関する。
【背景技術】
【0002】
近年、さまざまなデータが電子データで管理されており、その中から必要な電子データを検索する検索サービスや検索システムが広く普及しつつある。このような検索サービスや検索システムは極めて便利ではあるが、情報が漏洩しかねないという課題がある。
【0003】
そこで、特許文献1には、暗号化された文書をデータセンタに登録すると共に、その登録した文書の検索に用いるインデックスを安全に生成する、機密性向上を目的とした技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−052698号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、検索システムを用いた情報漏洩の類型として、検索サービスを利用する利用者の興味の対象が、検索に用いられる検索語により検索サービスを提供する提供者に漏れるという形がある。例えば株式情報や特許などの分野では、アクセスログの解析により「どの組織が」「どの分野に」興味を持っているかといった情報(サービス利用者の興味の対象)がサービス提供者に把握されることにより、当該サービス提供者がビジネス上有利になる場合がある。このような情報漏洩のリスクは、検索サービス利用を躊躇させる1つの要因となっている。
【0006】
また、特許文献1記載の手法は、検索語そのものではなくインデックスを送信するシステムではあるが、あくまで暗号化された文書に対する検索を対象としているため、汎用性に欠ける。
【0007】
本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、検索サービスの汎用性を確保すると共に、検索サービスの利用者の興味が特定されにくいクライアント装置、サーバ装置、通信システム及び通信方法を提供することを目的の1つとする。
【課題を解決するための手段】
【0008】
本発明に係るクライアント装置は、検索語にハッシュ関数を適用してハッシュ値を求める演算手段と、マスク値を用いて前記ハッシュ値をマスクしたインデックスを求めるマスク手段と、前記インデックス及び前記マスク値をサーバ装置に送信する送信手段と、前記インデックスに対応するデータの一覧を前記サーバ装置から受信する受信手段と、当該データの一覧から、前記ハッシュ値に対応するデータを特定する特定手段とを備える。
【0009】
本発明に係るサーバ装置は、クライアント装置から、ハッシュ値がマスク値でマスクされたインデックス及び前記マスク値を受信する受信手段と、前記マスク値でマスクされると受信したインデックスとなるハッシュ値に対応するデータの一覧を生成する検索手段と、当該データの一覧を前記クライアント装置に送信する送信手段とを備える。
【0010】
本発明に係る通信システムは、クライアント装置及びサーバ装置が通信する通信システムであって、前記クライアント装置は、検索語にハッシュ関数を適用してハッシュ値を求める演算手段と、マスク値を用いて当該ハッシュ値をマスクしたインデックスを求めるマスク手段と、前記インデックス及び前記マスク値を前記サーバ装置に送信する送信手段と、前記インデックスに対応するデータの一覧を前記サーバ装置から受信する受信手段と、当該データの一覧から、前記ハッシュ値に対応するデータを特定する特定手段とを備え、前記サーバ装置は、前記クライアント装置から、前記インデックス及び前記マスク値を受信する受信手段と、前記データの一覧を生成する検索手段と、当該データの一覧を前記クライアント装置に送信する送信手段とを備える。
【0011】
本発明に係る通信方法は、クライアント装置が、検索語にハッシュ関数を適用してハッシュ値を求めるステップと、マスク値を用いて当該ハッシュ値をマスクしたインデックスを求めるステップと、前記インデックス及び前記マスク値を前記クライアント装置がサーバ装置に送信するステップと、前記マスク値でマスクされると受信した前記インデックスとなるハッシュ値に対応するデータの一覧を生成するステップと、当該データの一覧を前記サーバ装置が前記クライアント装置に送信するステップと、当該データの一覧から、前記検索語のハッシュ値に対応するデータを特定するステップとを備える。
【0012】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、1つの「部」が有する機能が2つ以上の物理的手段や装置により実現されても、2つ以上の「部」の機能が1つの物理的手段や装置により実現されても良い。
【発明の効果】
【0013】
本発明によれば、検索サービスの汎用性を確保すると共に、検索サービスの利用者の興味が特定されにくいクライアント装置、サーバ装置、通信システム及び通信方法を提供することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態における通信システムの構成を示す図である。
【図2】本発明の実施形態におけるクライアント装置及び検索サーバの概略構成を示す機能ブロック図である。
【図3】図2に示した検索サーバが持つインデックス表の具体例を示す図である。
【図4】図2に示したクライアント装置及び検索サーバによる検索処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0015】
以下に本発明の実施形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
【0016】
(実施形態)
図1乃至図4は、本発明の実施形態を説明するための図である。以下、これらの図を参照しながら実施形態を詳細に説明する。
【0017】
(概要)
図1は、本発明に係る実施形態の通信システム1の概略構成を示す図である。図1に係る通信システム1は、例えばパーソナルコンピュータ等であるクライアント装置10と、検索サーバ20と、文書を格納するファイルサーバ30とから構成される。クライアント装置10、検索サーバ20、及びファイルサーバ30は、それぞれネットワークNに接続されており、相互にTCP(Transmission Control Protocol)/IP(Internet Protocol)等により通信する。
【0018】
尚ここで、図1の例では、クライアント装置10は1台しか示されていないがこれに限るものではなく、また、ファイルサーバ30の数も、3台に限られるものではない。また、ネットワークNへの接続方法は、有線であるか無線であるかを問わない。
【0019】
検索サーバ20は、クライアント装置10からの要求に応じて検索サービスを提供するサーバである。ユーザ(利用者)は、クライアント装置10のユーザインタフェースを利用して検索語を入力する。クライアント装置10は、当該検索語に係る情報を検索サーバ20に送信し、検索サーバ20は当該情報に合致するデータをクライアント装置10に返す。
【0020】
以下に説明する実施形態では、ファイルサーバ30a乃至30cがそれぞれ文書を管理しており、検索サーバ20はそれらの文書にアクセスするためのURL(Uniform Resource Locator)に関するデータの検索サービスを提供しているものする。
【0021】
つまり、通信システム1は、ユーザがクライアント装置10に検索語を入力し、当該検索語からそれを含む文書を検索サーバ20で検索し、ファイルサーバ30から当該文書を取得することのできるシステムである。
【0022】
ここで、もし、クライアント装置10が検索語を直接検索サーバ20に送信すると、ユーザ(利用者)の興味が、検索サービスの提供者に漏洩してしまう。よって、特に株式情報や特許に関する検索サービスでは、ユーザが利用を躊躇する可能性がある。
【0023】
そこで、本実施液体の通信システム1では、利用者であるユーザが興味のある検索語そのものを検索サーバ20に提供しないことで、情報漏洩を抑制し、結果として検索サーバ20が提供する検索サービスの利用促進を図っている。
通信システム1の動作の概要を、以下簡単に説明する。
【0024】
検索サーバ20は、後述するインデックス表205bを有している。このインデックス表205bは、各種検索語を予め定められたハッシュ関数205a(後述)に掛けたハッシュ値をキーとし、検索語と関連づいたデータ(本実施形態では、各ファイルサーバ30が提供する文書の位置)を値とするテーブルである。また検索サーバ20は、インデックス表205bのキーとなるハッシュ値を生成する為に使用するハッシュ関数205aをクライアント装置10に提供(送信)可能である。
【0025】
ユーザが検索したい検索語を入力すると、クライアント装置10は、検索サーバ20から取得したハッシュ関数205aを用いて、入力された検索語のハッシュ値を計算する。そして、クライアント装置10は、得られたハッシュ値を任意のマスク値を使ってマスクすることにより、検索に用いるインデックスを生成する。当該インデックス(マスクされた検索語のハッシュ値)は、マスク値と共に検索サーバ20に送信される。
【0026】
検索サーバ20は、インデックス表205bを参照して、テーブルのキー(ハッシュ値)の中から、受信したインデックスと一致する複数の行のデータを利用者に返す。クライアント装置10は、当該複数行のデータのうち、検索語のハッシュ値にキーが一致する行のデータを最終検索結果とすることで、当該データが示す文書(ファイルサーバ30が提供)にアクセス可能となる。
また、検索サーバ20で管理するデータは特に暗号化されたデータに特化したものではないので、各種検索サービスに汎用的に適用可能である。
【0027】
(システム構成)
以下、通信システム1を構成する各装置のうち、特にクライアント装置10及び検索サーバ20の機能構成を、図2を参照しながら説明する。図2は、クライアント装置10及び検索サーバ20の概略構成を示す機能ブロック図である。
【0028】
前述の通り、ユーザの使用するクライアント装置10(クライアントコンピュータ)と、検索サービスを提供する検索サーバ20とは、ネットワークNに接続されている。
【0029】
クライアント装置10は、ユーザインタフェース部101、ハッシュ演算部103、マスク演算部105、通信インタフェース部107、及びハッシュ値照合部109を含んでいる。ここで、クライアント装置10では、図示しないCPU(Central Processing Unit)等の演算処理装置上で、Webブラウザが動作する。ユーザインタフェース部101やハッシュ演算部103等の各構成は、当該Webブラウザが提供する機能(読込んだスクリプトにより実行される機能も含む)として実現され得る。
【0030】
ここで、クライアント装置10を構成する各機能ブロックの実現方法は、本実施形態の方法に限られるものではなく、それぞれCPU等の演算処理装置上で動作するソフトウェア(プログラム)としても、専用の半導体等で実現しても、或いはソフトウェアとハードウェアとを組み合わせて実現しても良い。更に、検索サーバ20から読込んだスクリプトにより実現される機能でも良い。この点、後述する検索サーバ20の各構成についても同様である。
【0031】
ユーザインタフェース部101は、検索サーバ20から通信インタフェース部107で受信した、HTML(HyperText Markup Language)等で記載された文書情報に基づき、表示画面の生成や、ユーザから検索語の入力を受け付ける。
【0032】
この、検索サーバ20から受信する文書情報には、JavaScript(登録商標)等のスクリプトが埋め込まれており、本実施例では、検索サーバ20によってハッシュ関数205aがJavaScriptコードとして埋め込まれる。
【0033】
ハッシュ演算部103は、当該検索サーバ20から受信した情報に埋め込まれるJavaScriptコードとして受信したハッシュ関数205aに基づき、検索語(検索に用いるキーワード)をハッシュ化したハッシュ値を算出する。
【0034】
マスク演算部105は、ハッシュ演算部103で得られたハッシュ値を、任意のマスク値を用いてマスクする。通信インタフェース部107は、検索語のハッシュ値をマスク値でマスクして得られたインデックスと、マスクに用いたマスク値とを検索サーバ20へ送信する。
【0035】
また、通信インタフェース部107は、インデックス及びマスク値に基づく検索サーバ20への検索要求に対する応答として、検索結果であるデータの一覧を受信する。
【0036】
ハッシュ値照合部109は、得られたデータの一覧(検索結果)から、ハッシュ演算部103で算出したハッシュ値をキーとするデータを特定し、当該データを出力する。このとき、合わせて当該データに対応するURLにアクセスしてユーザインタフェース部101に出力するようにしても良い。
【0037】
検索サーバ20は、通信インタフェース部201と、検索部203と、記憶媒体205と、スクリプト生成部207とを有する。例えばHDD(Hard Disk Drive)等である不揮発性の記憶媒体205には、ハッシュ関数205aとインデックス表205bとが記憶される。
【0038】
スクリプト生成部207は、記憶媒体205に格納されるハッシュ関数205aをJavaScriptコードとして文書情報に埋め込んで、通信インタフェース部201から送信する機能を有する。このハッシュ関数205aは、任意の文字列から無作為なハッシュ値を作り出す関数である。
【0039】
また、スクリプト生成部207は、検索部203で得られた検索結果(データの一覧)を、通信インタフェース部201を介してクライアント装置10へ送信する機能も有する。
検索部203は、クライアント装置10から受信したインデックス及びマスク値を用いて、インデックス表205bを検索する。
【0040】
ここで、インデックス表205bは、検索に使用するキーワードをハッシュ関数205aによりハッシュ化したものをキーとし、キーワードを含むデータ(本実施形態では、文書のURL)を値とするテーブルである。インデックス表205bの具体例は、図3に示す。
【0041】
検索部203は、インデックス表205bの各キーのうち、受信したマスク値でマスクした結果が、受信したインデックスと一致する全てのデータ(データの一覧)を、検索結果としてスクリプト生成部207に出力する。
【0042】
(検索の処理の流れ)
以下、図4を参照しながら、通信システム1における検索処理の流れを説明する。図4は、通信システム1における検索時の処理の流れを示すフローチャートである。尚、図4は一般化したフローチャートであるが、以下ではより具体的に、文字列「NEC」を含む文書を検索する場合を例に説明する。
【0043】
まず、クライアント装置10は、検索サーバ20からハッシュ関数205aを取得する。すなわち、検索サーバ20は、ハッシュ関数205aをJavaScriptコードとして埋め込んだ文書情報をスクリプト生成部207で生成して通信インタフェース部201から送信し(S401)、クライアント装置10は当該文書情報を受信する(S403)。これにより、クライアント装置10はハッシュ関数205aを得られるので、ユーザインタフェース部101によりユーザから入力された検索語(「NEC」)に対するハッシュ値をハッシュ演算部103で算出する(S405)。ここでは、検索語「NEC」に対するハッシュ値を“0x00012D6C”とする。
【0044】
マスク演算部105は、得られたハッシュ値(“0x00012D6C”)に、任意のマスク値を用いてマスクしてインデックスを生成する(S407)。ここで、マスク値を“0xFFFFFFF0”とすると、マスク演算部105は、ハッシュ値”0x00012D6C”とマスク値“0xFFFFFFF0”とのAND演算を行うことにより、インデックス“0x00012D60”を得ることができる。
【0045】
通信インタフェース部107は、S407での結果得られたインデックス(“0x00012D60”と、マスク値(“0xFFFFFFF0”)とを検索サーバ20に送信する(S409)。
【0046】
検索サーバ20は、通信インタフェース部201で当該インデックスとマスク値とを受信すると(S411)、検索部203が、当該インデックスでインデックス表205bを検索する(S413)。より具体的に述べると、図3に例を示したインデックス表205bの各行のうち、マスク値“0xFFFFFFF0”でマスクする(AND演算する)と“0x00012D60”となるのは“0x00012D60”から“0x00012D6F”までの行である。これらの行を検索結果であるデータ一覧として、検索部203はスクリプト生成部207に渡す。スクリプト生成部207は当該データの一覧をHTML等の言語で書かれた文書情報に埋め込み、通信インタフェース部201から当該文書情報をクライアント装置10へ返信する(S415)。
【0047】
クライアント装置10の通信インタフェース部107が検索結果であるデータ一覧を受信すると(S417)、ハッシュ値照合部109は、当該一覧(複数のデータ)の中から、ハッシュ演算部103でのハッシュ値に合致したデータを検索する(S419)。検索サーバ20から受信したデータ一覧には、“0x00012D60”から“0x00012D6F”までの行が含まれていたが、ハッシュ値照合部109はこの中から“0x00012D6C”を含むデータを特定する。これにより、検索語を含む文書の位置(URL)が特定され、アクセス可能となるので、通信インタフェース部107は、当該文書を取得する(S421)。
【0048】
(本実施形態の効果)
以上説明したように、本実施形態の通信システム1では、クライアント装置10は、ユーザが興味のある検索語そのものを検索サーバ20に送信することはない。よって、検索サービスを提供するサービス提供者に、ユーザが興味のある事項を知られることが無い。
【0049】
また、検索サーバ20からダウンロードしたハッシュ関数コードを読込むことにより、クライアント装置10はハッシュ関数205aが安全なものであることを検証することができる。
【0050】
そして、本実施形態では、検索語(キーワード)に対するハッシュ関数205aの計算を検索サーバ20側ではなくクライアント装置10側で行っているが、これは、元々検索サーバ20側で行っていた検索語のハッシュ値化をクライアント装置10側で行っているだけであるので、通信システム1全体としての計算負荷の増大はない。
更に、本実施形態の通信システム1が提供する検索サービスは暗号化された文書に限るものではないので、本実施形態の手法は汎用性が高い。
【0051】
(他の実施形態)
上述の実施形態では、検索サービスを例に説明を行ったが、これに限られるものではない。例えば、KVS(Key Value Store)のようなデータストアサービスにもそのまま適用することが可能である。
【0052】
また、上述の実施形態では、1の検索語を用いる場合を例に説明したが、複数の検索語を指定して全てを含む文書を検索するAND検索に応用することもできる。この場合には、それぞれの検索語に対応するインデックスを含む行を検索サーバ20で検索し、クライアント装置10側でAND計算を行えばよい。この場合、AND計算のための関数は、ハッシュ関数205aと同様に検索サーバ20から提供可能である。
【0053】
(付記事項)
なお、前述の各実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
尚、前述の各実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0054】
(付記1)
検索語にハッシュ関数を適用してハッシュ値を求める演算手段と、マスク値を用いて前記ハッシュ値をマスクしたインデックスを求めるマスク手段と、前記インデックス及び前記マスク値をサーバ装置に送信する送信手段と、前記インデックスに対応するデータの一覧を前記サーバ装置から受信する受信手段と、当該データの一覧から、前記ハッシュ値に対応するデータを特定する特定手段とを備えるクライアント装置。
【0055】
(付記2)
前記受信手段は、前記ハッシュ関数を前記サーバ装置から受信する、付記1記載のクライアント装置。
【0056】
(付記3)
前記受信手段は、ブラウザに読込まれるスクリプトとして前記ハッシュ関数を受信する、付記2記載のクライアント装置。
【0057】
(付記4)
クライアント装置から、ハッシュ値がマスク値でマスクされたインデックス及び前記マスク値を受信する受信手段と、前記マスク値でマスクされると受信したインデックスとなるハッシュ値に対応するデータの一覧を生成する検索手段と、当該データの一覧を前記クライアント装置に送信する送信手段とを備えるサーバ装置。
【0058】
(付記5)
前記送信手段は、ハッシュ値を生成するためのハッシュ関数を前記クライアント装置に送信する、付記4記載のサーバ装置。
【0059】
(付記6)
各検索語に関するハッシュ値と、当該検索語に対応するデータとを管理する管理手段を更に備える、付記4又は付記5記載のサーバ装置。
【0060】
(付記7)
クライアント装置及びサーバ装置が通信する通信システムであって、前記クライアント装置は、検索語にハッシュ関数を適用してハッシュ値を求める演算手段と、マスク値を用いて当該ハッシュ値をマスクしたインデックスを求めるマスク手段と、前記インデックス及び前記マスク値を前記サーバ装置に送信する送信手段と、前記インデックスに対応するデータの一覧を前記サーバ装置から受信する受信手段と、当該データの一覧から、前記ハッシュ値に対応するデータを特定する特定手段とを備え、前記サーバ装置は、前記クライアント装置から、前記インデックス及び前記マスク値を受信する受信手段と、前記データの一覧を生成する検索手段と、当該データの一覧を前記クライアント装置に送信する送信手段とを備える、通信システム。
【0061】
(付記8)
クライアント装置が、検索語にハッシュ関数を適用してハッシュ値を求めるステップと、マスク値を用いて当該ハッシュ値をマスクしたインデックスを求めるステップと、前記インデックス及び前記マスク値を前記クライアント装置がサーバ装置に送信するステップと、前記マスク値でマスクされると受信した前記インデックスとなるハッシュ値に対応するデータの一覧を生成するステップと、当該データの一覧を前記サーバ装置が前記クライアント装置に送信するステップと、当該データの一覧から、前記検索語のハッシュ値に対応するデータを特定するステップとを備える、通信方法。
【符号の説明】
【0062】
10・・・クライアント装置、20・・・検索サーバ、101・・・ユーザインタフェース部、103・・・ハッシュ演算部、105・・・マスク演算部、107・・・通信インタフェース部、109・・・ハッシュ値照合部(特定部)、201・・・通信インタフェース部、203・・・検索部、207・・・スクリプト生成部、205a・・・ハッシュ関数、205b・・・インデックス表

【特許請求の範囲】
【請求項1】
検索語にハッシュ関数を適用してハッシュ値を求める演算手段と、
マスク値を用いて前記ハッシュ値をマスクしたインデックスを求めるマスク手段と、
前記インデックス及び前記マスク値をサーバ装置に送信する送信手段と、
前記インデックスに対応するデータの一覧を前記サーバ装置から受信する受信手段と、
当該データの一覧から、前記ハッシュ値に対応するデータを特定する特定手段と
を備えるクライアント装置。
【請求項2】
前記受信手段は、前記ハッシュ関数を前記サーバ装置から受信する、
請求項1記載のクライアント装置。
【請求項3】
前記受信手段は、ブラウザに読込まれるスクリプトとして前記ハッシュ関数を受信する、
請求項2記載のクライアント装置。
【請求項4】
クライアント装置から、ハッシュ値がマスク値でマスクされたインデックス及び前記マスク値を受信する受信手段と、
前記マスク値でマスクされると受信したインデックスとなるハッシュ値に対応するデータの一覧を生成する検索手段と、
当該データの一覧を前記クライアント装置に送信する送信手段と
を備えるサーバ装置。
【請求項5】
前記送信手段は、ハッシュ値を生成するためのハッシュ関数を前記クライアント装置に送信する、
請求項4記載のサーバ装置。
【請求項6】
各検索語に関するハッシュ値と、当該検索語に対応するデータとを管理する管理手段
を更に備える、請求項4又は請求項5記載のサーバ装置。
【請求項7】
クライアント装置及びサーバ装置が通信する通信システムであって、前記クライアント装置は、
検索語にハッシュ関数を適用してハッシュ値を求める演算手段と、
マスク値を用いて当該ハッシュ値をマスクしたインデックスを求めるマスク手段と、
前記インデックス及び前記マスク値を前記サーバ装置に送信する送信手段と、
前記インデックスに対応するデータの一覧を前記サーバ装置から受信する受信手段と、
当該データの一覧から、前記ハッシュ値に対応するデータを特定する特定手段と
を備え、前記サーバ装置は、
前記クライアント装置から、前記インデックス及び前記マスク値を受信する受信手段と、
前記データの一覧を生成する検索手段と、
当該データの一覧を前記クライアント装置に送信する送信手段と
を備える通信システム。
【請求項8】
クライアント装置が、検索語にハッシュ関数を適用してハッシュ値を求めるステップと、
マスク値を用いて当該ハッシュ値をマスクしたインデックスを求めるステップと、
前記インデックス及び前記マスク値を前記クライアント装置がサーバ装置に送信するステップと、
前記マスク値でマスクされると受信した前記インデックスとなるハッシュ値に対応するデータの一覧を生成するステップと、
当該データの一覧を前記サーバ装置が前記クライアント装置に送信するステップと、
当該データの一覧から、前記検索語のハッシュ値に対応するデータを特定するステップと
を備える、通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−97592(P2013−97592A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−240163(P2011−240163)
【出願日】平成23年11月1日(2011.11.1)
【出願人】(000004237)日本電気株式会社 (19,353)