(57)【特許請求の範囲】
【請求項１】
ユーザが、ハッシュ・プロバイダを包含する検索エンジンを用いる前記ハッシュ・プロバイダを介して検索を保護する安全な検索方法であって、前記ハッシュ・プロバイダは、
ソルト、暗号化キーおよび一意の番号の一組を生成し、
前記ソルトを使って、検索エンジン・データのソルト処理されたハッシュ化索引を作成し、
前記暗号化キーを使って、検索エンジン・データの暗号化結果データベースを作成し、
前記ソルト、暗号化キーおよび一意の番号、の一組を前記ユーザに送信し、
前記ハッシュ化索引、前記暗号化結果データベースおよび一意の番号を検索エンジンに送信する、
前記方法。
【請求項２】
前記ユーザが少なくとも一つの検索語句を入力するステップと、
前記ソルトを使い、前記ユーザに入力された前記少なくとも一つの検索語句をハッシュ化するステップと、
前記ハッシュ化された少なくとも一つの検索語句および前記一意の番号を前記検索エンジンに提出するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
検索を実行する方法であって、前記方法は、検索プロバイダを包含する検索エンジンを用いて検索を実行するステップを含み、前記検索プロバイダは、
ハッシュ・プロバイダから、ハッシュ化索引、暗号化結果データベース、および一意の番号を受信し、
前記一意の番号に関連付けられた前記ハッシュ化索引および暗号化結果データベースを格納し、
ユーザから少なくとも一つのハッシュ化検索語句と一意の番号とを受信し、
前記一意の番号に関連付けられた前記ハッシュ化索引および暗号化結果データベースを選定し、
前記ハッシュ化検索語句を使って前記ハッシュ化索引を検索し、前記暗号化結果データベースからのデータを暗号化された結果セットとして前記ユーザに返信する、
前記方法。
【請求項４】
前記暗号化された結果セットを受信し、
キーを使って前記暗号化された結果セットを解読し、
通常テキストの検索結果を表示する、
前記ユーザをさらに含む、請求項３に記載の方法。
【請求項５】
ハッシュ・プロバイダからハッシュ化索引、暗号化結果データベースおよび一意の番号を受信するステップに先立って、
ソルト、暗号化キーおよび一意の番号の一組を生成し、
前記ソルトを使って、検索エンジン・データのソルト処理されたハッシュ化索引を作成し、
前記暗号化キーを使って、検索エンジン・データの暗号化結果データベースを作成し、
前記ソルト、暗号化キーおよび一意の番号の一組を前記ユーザに送信し、
前記ハッシュ化索引、前記暗号化結果データベースおよび一意の番号を検索エンジンに送信する、
前記ハッシュ・プロバイダをさらに含む、請求項３に記載の方法。
【請求項６】
請求項１から５の何れか１つに記載の方法の全ステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は検索エンジンに関し、さらに具体的には、ハッシュ・アルゴリズムを用いる検索エンジンに関する。
【背景技術】
【０００２】
ウェブ検索エンジンを運営する組織は、個々人が検索エンジンに入力する検索語句に基づいて個々人に関する大量の情報を取得する。検索語句は、個人の日常の活動、事業内容、個人的見解を露呈する。この大規模で非常に詳細な個人の検索の蓄積は、幾多のプライバシ問題を引き起こす。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一部の検索エンジンは、自社検索サービスのプライバシ保護強化を進めることをその事業戦略の一部にすることを決めている。既存の「プライバシ保護強化」検索エンジンのインプリメンテーションは、それらのエンジンが検索語句および結果を記録しない、あるいはその運営組織が記録を最小の期間だけ維持するという点で、大方の検索エンジンとは異なる。しかしながら、この種のインプリメンテーションでは、まだなお、検索エンジンを運営する組織はこれら検索語句および結果へのアクセスを有している。
【課題を解決するための手段】
【０００４】
上記を鑑み、本発明は、ユーザが、検索エンジンを使うハッシュ・プロバイダを介して検索を保護するための安全な検索方法を提供することを目指している。ユーザはハッシュ・プロバイダに登録する。該ハッシュ・プロバイダは、一意の番号、暗号化結果データベース、およびハッシュ化索引を検索エンジンに送信する。ユーザは、検索対象となる少なくとも一つの検索語句を入力する。ユーザは、検索語をハッシュ化し、該検索語を一意の番号とともに検索エンジンに送信する。検索エンジンは、検索し、一意の番号に基づいてハッシュ化索引および暗号化された結果データベースを選定する。暗号化された結果データベースから採取された暗号化結果データのセットがユーザに送信される。ユーザはその結果セットを解読する。
【０００５】
以降に、単なる例示として、添付の図面を参照しながら本発明の実施形態を説明する。
【図面の簡単な説明】
【０００６】
【図１】登録ステップのブロック図を示す。
【図２】本発明の実施形態の検索エンジン組織のブロック図を示す。
【図３】本発明の実施形態の検索エンジン組織のブロック図を示す。
【発明を実施するための形態】
【０００７】
図１〜図３は、本発明の検索エンジン・システムのブロック図を示す。本発明においては、例えば索引語を介して、検索される検索エンジン・データにハッシュ・アルゴリズムが適用される。検索が要求されるとき、ユーザに入力される検索語句もハッシュ化され、検索エンジンに送信された語はユーザだけが知っている。さらに、対称キー暗号を用いて検索エンジンの結果も暗号化され、これもユーザだけが自分の検索の結果を知ることができ、プライベートで匿名の検索が可能になる。
【０００８】
本発明の検索エンジン・システムは、検索エンジン組織が、分離された職務を明瞭に順守する少なくとも２つの区別されたグループ、例えば、ハッシュ・プロバイダおよび検索プロバイダなど、２つの完全に独立した組織を有することを必要とする。
【０００９】
ハッシュ・プロバイダは、ユーザが、ブラウザの「アドオン」など、修正されたクライアントを介して可能な、ソルト、暗号化キー、および一時的な一意の番号を獲得するためのサインアップまたは登録を提供し維持する。該一意の番号は、一時的な性質のものとし、限られた期間一意であるようにすることができる。登録は、ユーザが登録を実行時に容易に、且つ何回でもユーザが望むだけできるような簡単な手段によって提供することができる。登録の都度、新しい一意のＩＤ番号、ソルト、およびキー、の一組が割り当てられることになる。ソルトおよびキーは、分散されたユーザに亘って再使用することができる。登録を容易にするため最小限必要な情報だけを交換すること、および登録されたユーザを定期的に解約することが望ましい。この登録は、一意のソルト（またはランダム文字列）および一意の暗号化キーをユーザに割り当てる目的を果たす。
【００１０】
ハッシュ・プロバイダは、検索エンジン・データのソルト処理されたハッシュを生成することによってハッシュ化データ・セットを生成する。これには、必ずしも全フレーズまたは文書でなく、検索索引中に使われる語のハッシュを生成することが含まれる。また、ハッシュ・プロバイダは、例えばウェブ・サイトをクローリングおよびインデキシングして、検索エンジン・データを収集し維持する機能を遂行することができ、あるいはこういった活動は、別の組織が遂行し、そのデータをハッシュ・プロバイダに提供することもできる。
【００１１】
また、ハッシュ・プロバイダは、ＵＲＬと、例えばページの記述およびイメージなど、検索エンジンが結果または結果データベースとして返信してきた他のデータと、を対称的に暗号化する。暗号化キーは、ユーザまたはユーザの組に前もって提供されたものである。索引付けされたあらゆるページに対して、検索されたデータと結果として提供されたデータとはセットとして組み合わされ、また、ソルトおよびキーも組みにされて相互に対応している。
【００１２】
例えば、あるウェブページが語句「屋外」、「犬」および「小屋」に対して索引付けされる場合、これらの語はソルトｎを使って各別個にハッシュ化される。このウェブページは、のＵＲＬおよび「金で買える最高の犬小屋」という記述を有する。このＵＲＬおよび記述はキーｎを使って暗号化される。ソルトｎとキーｎとは組み合わされる。
【００１３】
別の独立したグループである検索プロバイダは、検索エンジン・インタフェースを運営し、ハッシュ化された検索エンジン・データベースに対して、ハッシュ化検索語句（語群）の検索を遂行するソフトウエアを維持する。ハッシュ群は語群として取り扱われ、その各々が単一の語に相当し、従って、新規のまたは追加の検索アルゴリズムは不要である。
【００１４】
検索プロバイダおよびハッシュ・プロバイダは、ユーザがどんな語句を検索エンジンに提示したのかも検索の結果も全く分からないことになる。
【００１５】
図１を参照すると、ユーザがハッシュ・プロバイダのインタフェースに登録する１００。ハッシュ・プロバイダは、ソルト、暗号化キー、および一時的な一意の番号、の一組を生成する１０１。
【００１６】
ハッシュ・プロバイダは、検索エンジン・データ（データ１）の索引を作成し１０２、アルゴリズムまたは暗号ハッシュ関数（ｆ１）およびソルトを使って該検索エンジン・データをハッシュ化して、ユーザの検索語句の検索対象となる検索エンジン・データ（データ１’）のソルト処理されたハッシュ化索引を得る。また、ハッシュ・プロバイダは、結果データベース（データ２）を作成し１０２、アルゴリズムまたは対称キー暗号関数（ｆ２）およびキーを使って該結果データベース（データ２）を暗号化して、該結果データベース中に備えられたデータが暗号化された、暗号化結果データベース（データ２’）を得る。該結果データベースは、望ましくは、ウェブ・サイトのＵＲＬと簡単な記述またはイメージとを含む。該ウェブ・サイトのＵＲＬと簡単な記述またはイメージとは、関連する索引語句に遭遇したとき、結果データベースから選択される。ハッシュ・プロバイダは、ソルト、暗号化キー、および一意の番号、の組をユーザに送信し１０３、該ハッシュ・プロバイダは、検索エンジン・データのハッシュ化索引（データ１’）、暗号化結果データベース（データ２’）、および一意の番号を検索エンジンに送信する１０４。
【００１７】
ハッシュ化索引（データ１’）、暗号化結果データベース（データ２’）および一意の番号が、検索プロバイダに送信された１０４ならば、ユーザは、検索プロバイダによって維持される「アドオン」または「プラグイン」を備えたウェブ・ブラウザなどの修正クライアントに、ユーザが検索を所望する検索語句（ワードｎ）を入力する１０６ことができる。修正クライアントは、アルゴリズムまたは暗号ハッシュ関数（ｆ１）を使い、ユーザのソルトを用いて該検索語句（ワードｎ）をハッシュ化して１０８（ワードｎ’）を得ることになる。次いで、修正クライアントは、検索語句（ワードｎ’）および一意の番号を、検索プロバイダによって運営される検索エンジン・インタフェースに提出する１１０。
【００１８】
検索プロバイダによって運営される検索エンジンは、ハッシュ化値（ワードｎ’）を受信し、ユーザの一意の番号を使って、ハッシュ化索引（データ１’）および対応する暗号化結果データベース（データ２’）を選定する１１２。検索エンジンは、適切なハッシュ化索引セット中のハッシュ化検索語句（ワードｎ’）を検索して１１４、暗号化結果データベース（データ２’）から採取された暗号化データによって暗号化結果セット（データ３’）を作成する。次いで、該暗号化データ（データ３’）がユーザに送信される１１８。
【００１９】
ユーザが検索エンジンからデータ３’を受信した１２０後、修正クライアントは、返信された暗号化検索結果データ３’を解読し１２２、解読された結果データ３をユーザに提示する１２４。ユーザがさらなる語句の検索をする１２６ことを決めれば、該ユーザは、戻って別の検索を入力する１０６。ユーザが、さらなる語句の検索をすることを決めなければこの方法は終了する。
【００２０】
望ましくは、各々のユーザまたはユーザの組に対して一意のソルトが用いられる。検索エンジン・データの全てを非常に迅速にハッシュ化する能力があれば、あらゆる（またはほとんどあらゆる）検索またはセッションに対し新規のソルトを生成することができるが、これはインプリメンテーションを成功裏に実現するため必須ではない。ソルトが使われなければ、検索語句の導出が可能となりインプリメンテーションは不備のあるものとなろう。
【００２１】
上記のハッシュ関数は、任意の反復暗号ハッシュ関数とすることができる。得られるハッシュ化の強度、例えば原像計算困難性などは、選択されたハッシュ関数の特性に依存する。十分なハッシュ・アルゴリズムの一例に、安全なハッシュアルゴリズムであるＳＨＡ−２５６があり、該アルゴリズムは米国国家安全保障局によって設計され、米国標準技術局（ＮＩＳＴ：Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ）によって、米国連邦情報処理規格として発行されている。
【００２２】
任意の対称キー暗号化アルゴリズムを用いることができる。十分なキー・アルゴリズムの一例に、米国政府によって暗号化規格として採用されている、１２８または２５６ビット長さを使う先進暗号化規格（ＡＥＳ：ａｄｖａｎｃｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｓｔａｎｄａｒｄ）がある。
【００２３】
ソルトおよび対称キーの両方に対して同じランダム文字列を使用することもできようが、関係ありそうなコンテントに対する２つの異なるアルゴリズムに同一のキーが使用されている場合に、そのキーの値を解明することができるような将来の潜在的アタックを避ける上から、かかる使用は薦められない。
【００２４】
ハッシュ・プロバイダと検索プロバイダとの間での職務の分離は、任意の一般的責務の分離（ＳＯＤ：ｓｅｐａｒａｔｉｏｎ  ｏｆ  ｄｕｔｙ）要求事項のように、監査が可能なようにすべきである。
【００２５】
ハッシュ・プロバイダからユーザへのキーの配布は、ユーザのクライアント、またはクライアントのアドオンに向けて、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（セキュア・ソケット・レイヤ））（Ｒ）またはＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ（トランスポート・レイヤ・セキュリティ））を介する自動化された方式で、あるいはＳＳＬまたはＴＬＳを介した手動によるダウンロードで行うことができる。ユーザの一意の公開キーを使って上記のキーを暗号化するため、例えばＰＫＩ（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ（公開キー・インフラストラクチャ））の使用など、ユーザを一意に識別する能力のありそうなもっと複雑なキー配布スキームは、これを使う必要もなければ薦めもしない。
【００２６】
本明細書で使用する用語は、特定の実施形態を説明する目的のためだけのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（ａ、ａｎ）」、および「該（ｔｈｅ）」は、文脈上別途明確に示されているものを除き、複数形も同じように含むことが意図されている。さらに、本明細書で用いられる「含む（ｃｏｍｐｒｉｓｅ）」または「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方は、述べられた機能、完全体、ステップ、オペレーション、エレメント、またはコンポーネント、あるいはこれらの複数の存在を特定するが、一つ以上の他の機能、完全体、ステップ、オペレーション、エレメント、コンポーネント、またはこれらの群、あるいは前記の複数の存在または追加を排除するものではない。
【００２７】
任意の適したコンピュータ可用またはコンピュータ可読媒体を用いることができる。該コンピュータ可用またはコンピュータ可読の媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁的、赤外的もしくは半導体のシステム、装置、デバイス、または伝播媒体とすることができる。コンピュータ可読媒体のさらに具体的な例（限定的リスト）には、一つ以上の配線を有する電気接続、携帯コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光記憶デバイス、インターネットもしくはイントラネットを支えているような伝送媒体、または磁気記憶デバイスが含まれよう。なお、コンピュータ可用またはコンピュータ可読媒体は、プログラムを紙または別の適切な媒体としてその上にプログラムを印刷することもできよう。そのプログラムを、例えば、紙または他の媒体のオプティカル・スキャニングを介して電子的に捕捉し、必要に応じ、コンパイルし、解釈し、または他の適切な仕方で別途処理し、しかる後コンピュータ・メモリに格納することができる。本文書の文脈において、コンピュータ可用またはコンピュータ可読媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含、格納、通信、伝播、または伝送できる任意の媒体とすることができる。コンピュータ可用媒体には、ベースバンドあるいは搬送波の一部として、信号中に具現されたコンピュータ可用プログラム・コードを有する伝播データ信号を含めることができる。コンピュータ可用プログラム・コードは、以下に限らないが、インターネット、有線ライン、光ファイバ・ケーブル、ＲＦなどを含め、任意の適切な媒体を用いて送信することができる。
【００２８】
本発明のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語で書くことができる。また一方、本発明のオペレーションを実行するためのコンピュータ・プログラム・コードを“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語で書くこともできる。該プログラム・コードは、全体をユーザのコンピュータで、一部をユーザのコンピュータで単独型ソフトウエア・パッケージとして実行することができ、一部をユーザのコンピュータで他の部分を遠隔コンピュータで、または全体を遠隔コンピュータまたはサーバで実行することもできる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことができる。
【００２９】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート説明図またはブロック図あるいはその両方を参照しながら本発明を説明している。フローチャート説明図またはブロック図あるいはその両方の各ブロック、および、フローチャート説明図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、または他のプログラム可能データ処理装置、のプロセッサに供給してマシンを形成し、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、該フローチャートまたはブロック図あるいはその両方のブロックまたはブロック群中に規定された機能／処理を実施するための手段を生成するようにすることができる。
【００３０】
また、これらのコンピュータ・プログラム命令を、コンピュータまたは他のプログラム可能データ処理装置に対し特定の仕方で機能するよう命令できるコンピュータ可読メモリに格納し、該コンピュータ可読メモリに格納された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたはブロック群中に規定された機能／処理を実施する命令手段を包含する製品を形成するようにすることができる。
【００３１】
さらに、該コンピュータ・プログラム命令を、コンピュータ、または他のプログラム可能データ処理装置にロードして、該コンピュータ、または他のプログラム可能装置上で一連のオペレーション・ステップを実施させてコンピュータ実行のプロセスを生成し、該コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたはブロック群中に規定された機能／処理を実施するためのステップを提供するようにすることもできる。
【００３２】
これら図面中のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるアーキテクチャ、機能、並びにシステム、方法、およびコンピュータ・プログラム製品の可能な実装のオペレーションを例示している。これに関し、フローチャートまたはブロック図中の各ブロックは、規定された論理機能（群）を実施するための一つ以上の実行可能命令を含むコードの、モジュール、セグメント、または部分を表し得る。また、ある代替的な実装においては、ブロックに記載された機能が図に記載されたのと違った順序で実施され得ることに留意すべきである。例えば、必要とされる機能性によっては、連続して示された２つのブロックが、実際は実質上同時に実行され得、またはブロック群が時として逆の順序で実行され得る。さらに、ブロック図またはフローチャート説明図あるいはその両方の各ブロック、および、フローチャート説明図またはブロック図あるいはその両方のブロックの組み合わせは、特定の機能もしくは処理を遂行する特別用途のハードウエア・ベース・システム、または特別用途ハードウエアとコンピュータ命令との組み合わせによって実施できることにも留意する。
【００３３】
後記の請求項中の全ての手段またはステップおよび機能エレメントの、対応構造、材料、処理および同等事項は、具体的に請求された各種の請求エレメントと組み合わせて該機能を遂行するための一切の構造、材料または処置を含むことを意図されている。本発明の記述は、例示および説明目的で提示されたもので、網羅的であること、または本発明を開示した形態に限定することは意図されていない。当業者には、本発明の範囲および精神から逸脱することなく、多くの修改および変形が可能なことは明白であろう。本実施形態は、本発明の原理および実際的な応用を最善に説明し、いろいろな当業者が、意図する特定の用途に適したさまざまな修改を加えたさまざまな実施形態の遂行のため、本発明を理解できるように選択され記述されたものである。
【００３４】
上記のように、本出願の発明を、その実施形態を参照しながら詳細に説明してきたが、添付の請求項に定義された本発明の範囲から逸脱することなく、修改および変形が可能なのは自明であろう。
【要約】【課題】ユーザが、検索エンジンを用いるハッシュ・プロバイダを介して、検索を保護する安全な検索方法を提供する。
【解決手段】ユーザはハッシュ・プロバイダに登録する。ハッシュ・プロバイダは、一意の番号、暗号化結果データベース、およびハッシュ化索引を検索エンジンに送信する。ユーザが、検索対象となる少なくとも一つの検索語句を入力する。ユーザが、検索語句をハッシュ化し、該検索用語を一意の番号とともに検索エンジンに送信する。検索エンジンは検索を行い、該一意の番号に基づいてハッシュ化索引および暗号化結果データベースを選定する。暗号化結果データベースから採取された暗号化結果データ・セットがユーザに送信され、ユーザは該結果セットを解読する。
【選択図】図１【図１】
0004898979.tif 000002
【図２】
0004898979.tif 000003
【図３】
0004898979.tif 000004