JP4256897B2 - マッチング・サービスを提供するための装置、方法及びプログラム - Google Patents

マッチング・サービスを提供するための装置、方法及びプログラム Download PDF

Info

Publication number
JP4256897B2
JP4256897B2 JP2007107778A JP2007107778A JP4256897B2 JP 4256897 B2 JP4256897 B2 JP 4256897B2 JP 2007107778 A JP2007107778 A JP 2007107778A JP 2007107778 A JP2007107778 A JP 2007107778A JP 4256897 B2 JP4256897 B2 JP 4256897B2
Authority
JP
Japan
Prior art keywords
information
identification information
computer
matching
encryption key
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.)
Expired - Fee Related
Application number
JP2007107778A
Other languages
English (en)
Other versions
JP2008021295A (ja
Inventor
俊郎 高瀬
聰 古関
徹 長野
裕治 渡邊
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2007107778A priority Critical patent/JP4256897B2/ja
Priority to US11/755,084 priority patent/US7908374B2/en
Publication of JP2008021295A publication Critical patent/JP2008021295A/ja
Priority to US12/129,858 priority patent/US7962951B2/en
Application granted granted Critical
Publication of JP4256897B2 publication Critical patent/JP4256897B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key

Description

本発明は、マッチング・サービスを提供するための技術に関し、特に、サービスの利用者である2つのグループの各メンバーが相手グループのメンバーを順位付けした優先度リスト及びマッチングの結果の秘匿性を保つことができるようにする技術に関する。
サプライヤーのグループとバイヤーのグループ、就職を希望する学生のグループと採用を希望する企業のグループなど、2つのグループの各メンバーがそれぞれ相手グループの特定のメンバーとペアとなることを希望する場合、自分がペアとなることを一番に希望する相手が同様に自分とペアになることを一番に希望するとは限らない。そのため、なるべく多くのメンバーがより好ましい相手とペアになるための方法として、2つのグループの各メンバーに相手グループのメンバーの順位付けを行わせ、各メンバーの優先度リストに基づいてグループ間でマッチングを行うことが知られている。特に、GaleとShapleyの論文で1962年に提唱された安定マッチング(非特許文献1参照。)を利用すれば、いわゆるブロッキングペアができることはない。
しかし、マッチングを行うためとはいえ、優先度リストの内容や自分のマッチング結果がグループ内の他のメンバーに知られるのは好ましくない。1つの解決策として、第三者がマッチング・サービスを提供することが考えられる。各メンバーは優先度リストをサービス提供者へ送り、サービス提供者は各メンバーの優先度リストに基づいてマッチングを行った後マッチング結果を当事者にのみ通知する。しかし、優先度リストやマッチング結果は、企業にとっては重要な機密情報であり、個人にとってもプライバシーにかかわる情報であるため、第三者に対してもその内容を秘密にしたいという要求がある。
秘匿したい情報を匿名で入手できるようにする従来技術として、情報提供機関と情報の提供を受けるユーザとの間に中継機関を設け、情報提供機関は中継機関を介してユーザに情報を提供し、中継機関で取り扱われる情報は中継機関が復号できないように暗号化する技術がある(特許文献1参照。)。
「College Admissions and the Stability of Marriage」、D.Gale及びL.S.Shapley著、American Mathematical Monthly、第69巻、1962年、9−14頁 特開2003−18142号公報
しかし、上記技術によってサービス提供者からユーザの宛先情報を隠してユーザが匿名で情報を取得できるようにしたとしても、サービス提供者に対しマッチングを行うために必要な優先度リストの内容まで秘密にすることはできず、また、各メンバーから集まった優先度リストから結局は利用者が誰であるかサービス提供者に分かってしまう。そこで、更に、各メンバーに適当なIDを割り当て、メンバーとIDの対応関係をグループ内のメンバーだけが知りえる情報とし、サービス提供者へはIDの優先度リストを送るようにすることが考えられる。
この場合、優先度リストの内容やマッチング結果の秘匿性を維持できるかどうかは、各メンバーにおけるメンバーとIDの対応関係を示す情報の管理にかかっている。そのためメンバーとIDの対応関係を示す情報が一旦グループ内から外へ漏れると、サービス提供者に優先度リストの内容やマッチングの結果、また利用者が誰であるかということが分かってしまう。更にサービス提供者のコンピュータがハッキングされた場合には情報漏洩範囲は第三者へと拡大する。しかしこのような事態を避けるために、グループの全メンバーにセキュリティ管理を徹底させることは難しい。
そこで本発明は、メンバーとそのIDの対応関係が外部に漏れるようなことがあっても、優先度リストの内容やマッチング結果がサービス提供者や第三者に知られることのない、安全性の高いマッチング・サービスを提供するための装置、方法及びプログラムを提供することを目的とする。
上記目的を達成する本発明は、次のようなサービス提供者用コンピュータ上で実行されるマッチング・サービスを提供するためのサービス提供者用プログラムによって実現される。なお本発明が扱うマッチング・サービスは、各メンバーが相手のグループのメンバーを優先度の高い順に順位付けた優先度リストをもつ、互いに素な2つのグループに対するマッチング・サービスである。このサービス提供者用プログラムは、サービス提供者用コンピュータに、次の(a)〜(g)の各ステップを実行させる。
(a)サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータを介して、2つのグループの各メンバーから、2つのグループの全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、優先度リスト及び加工情報はサービス提供者の暗号化鍵で暗号化されている上記セットを受信するステップ。(b)受信した各メンバーの上記セットについて、優先度リスト及び加工情報を共通暗号化鍵で暗号化された本人の識別情報に関連付けてマッチング情報格納部に格納するステップ。(c)マッチング情報格納部から読み出した各メンバーの優先度リストを、サービス提供者の暗号化鍵に対応するサービス提供者用コンピュータが保持する復号鍵で復号するステップ。(d)本人の識別情報及び優先度リスト中の相手グループのメンバーの識別情報は共通暗号化鍵で暗号化された状態のまま、全メンバーの本人の識別情報及び復号された優先度リストに基づいて2つのグループ間のマッチングを実行するステップ。(e)マッチング情報格納部から読み出した各メンバーの加工情報を、サービス提供者用コンピュータが保持する復号鍵で復号するステップ。(f)各メンバーのマッチング結果を、各メンバーの加工情報に基づいて、当事者の利用者用コンピュータのみが復号できる状態に加工するステップ。g)共通暗号化鍵で暗号化された本人の識別情報及び加工済みの本人のマッチング結果を含むセットを、中継用コンピュータに送信するステップ。
好適には、共通暗号化鍵は2つのグループの各メンバーの利用者用コンピュータにおいて保持される。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、本人の利用者用コンピュータが保持する暗号化鍵と同じ鍵である。そして、上記加工するステップ(f)は、各メンバーに対し、共通暗号化鍵で暗号化されているペアになった相手メンバーの識別情報を、更に各メンバーの利用者用コンピュータが保持する暗号化鍵と同じ鍵で暗号化し、共通暗号化鍵で暗号化された各メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
また好適には、共通暗号化鍵は、2つのグループの各メンバーの利用者用コンピュータにおいて暗号化のために使用された後削除される。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、相手グループの各メンバーの識別情報を、本人の利用者用コンピュータが保持する暗号化鍵で暗号化し、本人の優先度リストの優先度順に並べた暗号化済みリストである。そして、加工するステップ(f)は、各メンバーに対し、本人の暗号化済みリストから、各メンバーの優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する相手メンバーの識別情報を取り出し、共通暗号化鍵で暗号化された本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
また好適には、共通暗号化鍵は、2つのグループの各メンバーの利用者用コンピュータにおいて暗号化のために使用された後削除される。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、本人の優先度リストの優先度順に、相手グループの各メンバーの利用者用コンピュータが保持する復号鍵に対応する暗号化鍵で本人の識別情報を暗号化し並べた暗号化済みリストである。そして加工するステップ(f)は、各メンバーに対し、本人の暗号化済みリストから、各メンバーの優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する本人の識別情報を取り出し、共通暗号化鍵で暗号化された上記相手メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
また好適には、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される優先度リストの優先度順は、本人の利用者用コンピュータが保持する並び替え情報に従って並べ替えられている。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、本人の利用者用コンピュータが保持する並べ替え情報に従う並び替えを元に戻す逆並べ替え情報である。そして、サービス提供者用コンピュータが保持する復号鍵で復号する上記ステップ(c)は、各メンバーの加工情報をサービス提供者用コンピュータが保持する復号鍵で復号し、結果得られる各メンバーの逆並べ替え情報に基づいて、各メンバーの優先度リストの優先度順を並び替えて元に戻すステップを含む。また、上記加工するステップ(f)は、各メンバーに対し、本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報の結果リストを作成し、作成した結果リストを本人の逆並び替え情報に基づいて並べ替え、共通暗号化鍵で暗号化された本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
更に好適には、共通暗号化鍵は、中継用コンピュータにおいて保持される。そして、サービス提供者用コンピュータにおいて受信される各メンバーの優先度リスト中の相手グループの各メンバーの識別情報及び本人の識別情報は、中継用コンピュータにより共通暗号化鍵で暗号化される。また、中継用コンピュータに送信される、共通暗号化鍵で暗号化された本人の識別情報及び本人の結果リスト中の共通暗号化鍵で暗号化された相手グループのメンバーの識別情報は、中継用コンピュータにより共通暗号化鍵で復号される。
また好適には、サービス提供者が提供するマッチング・サービスは、安定マッチングを求めるサービスである。
上記目的を達成する本発明はまた、次のようなサービス提供者用プログラムによって実現される。このサービス提供者用プログラムは、サービス提供者用コンピュータに、次の(a)〜(h)の各ステップを実行させる。
(a)サービス提供者に送信される情報を中継する複数の中継用コンピュータを介して、サービスを利用する2つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第1変換関数により変換された本人の識別情報、本人の優先度順に並べられ第1変換関数により変換された相手グループの各メンバーの識別情報を利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、サービス提供者用コンピュータの第1暗号化鍵により暗号化された、第1変換関数の逆関数である変換逆関数を構成するパラメータ及び並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、本人の識別情報及び優先度リストにリストされる相手グループの各メンバーの識別情報は各中継用コンピュータにおいてそれぞれ1つずつ選択された、前記第1変換関数と可換な第2変換関数により変換されている上記セットを受信するステップ。(b)受信した各メンバーの上記セットについて、優先度リスト、変換逆関数を構成するパラメータ及び並び替え逆関数を構成するパラメータ、及び加工情報を本人の識別情報に関連付けてマッチング情報格納部に格納するステップ。(c)マッチング情報格納部から読み出した各メンバーの変換逆関数を構成するパラメータ及び並び替え逆関数を構成するパラメータを、サービス提供者の第1暗号化鍵に対応するサービス提供者用コンピュータが保持する第1復号鍵で復号するステップ。(d)マッチング情報格納部から読み出した各メンバーの本人の識別情報に、変換逆関数を適用するステップ。(e)マッチング情報格納部から読み出した各メンバーの優先度リストに、変換逆関数及び並び替え逆関数を適用するステップ。(f)本人の識別情報及び優先度リスト中の相手グループの各メンバーの識別情報は複数の第2変換関数により変換された状態のまま、全メンバーの本人の識別情報及び優先度リストに基づいて2つのグループ間のマッチングを実行するステップ。(g)マッチングにより求められたペアごとに異なる第2暗号化鍵を生成し、当該第2暗号化鍵とマッチング結果を、ペアとなったメンバーの識別情報に対応付けてマッチング情報格納部に格納されている加工情報に基づいて、ペアとなったメンバーの利用者用コンピュータのみが復号できる状態にそれぞれ加工するステップ。(h)各メンバーの加工済みの第2暗号化鍵とマッチング結果を公開するステップ。
好適には、マッチング結果として各メンバーに返される情報は、当事者の優先度リストにおけるペアとなった相手メンバーの順位である。各メンバーは自身の優先度リストの優先度順を当然知っていることから、自身の優先度リストにおけるペアとなった相手の順位が分ればペアとなった相手を知ることができる。
また好適には、各メンバーは当該メンバーの利用者用コンピュータにおいて復号できた第2暗号化鍵を用いてペアとなった相手メンバーと暗号化通信を試みる。
以上、サービス提供者用コンピュータ上で実行されるサービス提供者用プログラムとして本発明を説明したが、本発明は、上記プログラムを格納した記憶媒体、上記プログラムの各ステップを含む方法、上記プログラムをメモリに読み込んで実行するサービス提供者用コンピュータとして把握することもできる。
上記目的を達成する本発明はまた、サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ上で実行される中継用プログラムによって実現される。本発明の1実施形態では、中継用プログラムは、中継用コンピュータに、次の各ステップを実行させる。(a)各メンバーの利用者用コンピュータから、本人の宛先情報、全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第1セットであって、優先度リスト及び加工情報はサービス提供者の暗号化鍵で暗号化されている第1セットを受信するステップ。(b)受信した各メンバーの第1セットから、本人の宛先情報を抽出し、共通暗号化鍵で暗号化された本人の識別情報に関連付けて宛先情報格納部に格納するステップ。(c)本人の宛先情報が抽出された各メンバーの第1セットをサービス提供者用コンピュータへ送信するステップ。(d)サービス提供者用コンピュータから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報及び加工情報に基づいて加工された本人のマッチング結果を含む第2セットを受信するステップ。(e)各メンバーについて、マッチング結果の宛先情報を、当該マッチング結果と同じ第2セットに含まれる共通暗号化鍵で暗号化された本人の識別情報を索引として宛先情報格納部から読み出し、読み出した宛先情報へ上記マッチング結果を送信するステップ。
上記目的を達成する本発明はまた、サービス提供者が提供するマッチング・サービスを利用する利用者の利用者用コンピュータ上で実行される利用者用プログラムによって実現される。本発明の1実施形態では、利用者用プログラムは、利用者用コンピュータに、次の各ステップを実行させる。(a)サービスを利用する2つのグループの各メンバーと各メンバーの識別情報との対応関係を示す表及び全メンバーに共通な共通暗号化鍵を格納するステップ。(b)相手グループのメンバーの識別情報を利用者の優先度順に並べた優先度リストを作成するステップ。(c)優先度リスト中の相手グループのメンバーの識別情報及び利用者の識別情報を、共通暗号化鍵で暗号化するステップ。(d)マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するためにサービス提供者によって使用される加工情報を、加工鍵を使って作成するステップ。(e)優先度リスト及び加工情報をサービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップ。(f)利用者の宛先情報、共通暗号化鍵で暗号化された利用者の識別情報、相手グループのメンバーの識別情報が共通暗号化鍵で暗号化されている利用者の優先度リスト、及び加工情報を含むセットであって、優先度リスト及び加工情報はサービス提供者の暗号化鍵で暗号化されている上記セットを、サービス提供者と利用者との間でやり取りされる情報を中継する中継用コンピュータへ送信するステップ。(g)中継用コンピュータから、加工情報に基づいて加工された利用者のマッチング結果を受信するステップ。(h)利用者のマッチング結果を、共通暗号化鍵及び加工鍵のうちの少なくとも1つに基づいて復号するステップ。
本発明のもう1つの実施形態では、中継用プログラムは、中継用コンピュータに、次の各ステップを実行させる。(a)各メンバーの利用者用コンピュータから、本人の宛先情報、本人の識別情報、相手グループのメンバーの識別情報を本人の優先度順に並べたものを更に本人が保持する並び替え情報に従って並べ替えた優先度リスト、及びサービス提供者の暗号化鍵で暗号化された、上記並び替え情報に従う並び替えを元に戻す逆並び替え情報の第1のセットを受信するステップ。(b)受信した各メンバーの第1セットから、本人の宛先情報を抽出し、本人の識別情報に関連付けて宛先情報格納部に格納するステップ。(c)共通暗号化鍵を生成するステップ。(d)受信した各メンバーの第1セットについて、本人の識別情報及び本人の優先度リスト中の相手グループのメンバーの識別情報を、共通暗号化鍵で暗号化するステップ。(e)各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報、相手グループのメンバーの識別情報が共通暗号化鍵で暗号化されている優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報の第2のセットを、サービス提供者用コンピュータへ送信するステップ。(f)サービス提供者用コンピュータから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報及び本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストの第3セットであって、結果リストの識別情報は更に本人の逆並び替え情報に基づいて並べ替えられている第3のセットを受信するステップ。(g)各メンバーの受信した第3のセットについて、共通暗号化鍵で暗号化された本人の識別情報及び結果リスト中の共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を、共通暗号化鍵で復号するステップ。(h)各メンバーについて、結果リストの宛先情報を、当該結果リストと同じ第3セットに含まれる本人の識別情報を索引として宛先情報格納部から読み出し、読み出した宛先情報へ上記結果リストを送信するステップ。
本発明のもう1つの実施形態では、利用者用プログラムは、利用者用コンピュータに、次の各ステップを実行させる。(a)サービスを利用する2つのグループの各メンバーとその識別情報の対応関係を示す表を格納するステップ。(b)相手グループのメンバーの識別情報を利用者の優先度順に並べた優先度リストを作成するステップ。(c)優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報を生成するステップ。(d)優先度リストの優先度順を、並び替え情報に従って並び替えるステップ。(e)逆並び替え情報をサービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップ。(f)利用者の宛先情報、利用者の識別情報、優先度順を並び替えられた優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報を含むセットを、サービス提供者と各メンバーとの間でやり取りされる情報を中継する中継用コンピュータへ送信するステップ。(g)中継用コンピュータから、ペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手のグループのメンバーの識別情報の結果リストであって、識別情報が上記逆並び替え情報に基づいて並び替えられた結果リストを受信するステップ。(h)識別情報を並び替え情報に従って並び替えた結果リストにおいて、予め取り決めておいた順位に位置する相手グループのメンバーの識別情報を取り出すステップ。
本発明の更にもう1つの実施形態では、中継用プログラムは、中継用コンピュータに、次の各ステップを実行させる。(a)他の1以上の中継用コンピュータを介して、各メンバーの利用者用コンピュータから、利用者用コンピュータにおいて選択された第1変換関数及び他の1以上の中継用コンピュータにおいてそれぞれ1つずつ選択され、第1変換関数と可換な複数の第2変換関数により変換された本人の識別情報、本人の優先度順に並べられ第1変換関数及び複数の第2変換関数により変換された相手グループのメンバーの識別情報を利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、サービス提供者用コンピュータの第1暗号化鍵及び他の1以上の中継用コンピュータを除く残りの1以上の中継用コンピュータの第2暗号化鍵により暗号化された、第1変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第1セットを受信するステップ。(b)受信した第1セットに含まれる各メンバーの変換逆関数を構成するパラメータ及び並び替え逆関数を構成するパラメータを、本中継用コンピュータの第2暗号化鍵に対応する本中継用コンピュータが保持する第2復号鍵で復号するステップ。(c)受信した各メンバーの本人の識別情報及び優先度リストにリストされる相手グループの各メンバーの識別情報を変換する、第1変換関数と可換な第3変換関数を選択するステップ。(d)受信した第1セットに含まれる各メンバーの本人の識別情報及び優先度リストにリストされる相手グループの各メンバーの識別情報を、選択した第3変換関数を用いて変換するステップ。(e)受信した各メンバーの第1セットに対し、処理済の本人の識別情報、優先度リスト及び変換逆関数及び並び替え逆関数と、加工情報とを含む第2セットを作成し、サービス提供者用コンピュータまたは、まだ残りの中継用コンピュータの1つに送信するステップ。
本発明の更にもう1つの実施形態では、利用者用プログラムは、利用者用コンピュータに、次の各ステップを実行させる。(a)サービスを利用する2つのグループのうち相手グループのメンバーの識別情報を利用者の優先度順に並べた優先度リストを作成するステップ。(b)優先度リストの並び順を並び替える並び替え関数とその逆関数である並び替え逆関数を選択し、優先度リストに並び替え関数を適用するステップ。(c)相手グループの各メンバーの識別情報及び利用者の識別情報を変換する変換関数とその逆関数である変換逆関数を選択し、優先度リストにリストされる各メンバーの識別情報及び利用者の識別情報に変換関数を適用するステップ。(d)並び替え逆関数を構成するパラメータ及び変換逆関数を構成するパラメータを、サービス提供者の公開鍵及びサービス提供者へ送信する情報を中継する複数の中継用コンピュータの公開鍵で暗号化するステップ。(e)マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するためにサービス提供者によって使用される加工情報を作成するステップ。(f)処理済の利用者の識別情報、優先度リスト、及び変換逆関数を構成するパラメータ並びに並び替え逆関数を構成するパラメータと、加工情報とを含むセットを、複数の中継用コンピュータの1つに送信するステップ。(g)サービス提供者が公開する、加工情報に基づき処理されたマッチングの結果を、加工情報に基づき復元するステップ。
本発明によれば、マッチング・サービスを利用する各メンバーの優先度リスト中の相手グループのメンバーの識別情報と本人の識別情報は、全メンバーに共通な共通暗号化鍵で暗号化され、暗号化された状態のままマッチング・サービス提供者によるマッチングに使用されるので、優先度リストの内容やマッチング結果といった情報が外部に漏れることのない安全性の高いマッチング・サービスが提供される。
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
図1は、本発明の1実施形態に係るマッチング・サービスを提供するためのシステム全体の構成を示す図である。図1に示すように、マッチング・サービスを提供するためのシステムは、サービスを利用する2つのグループの各メンバーの利用者用コンピュータ100と、サービス提供者と各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ200と、マッチング・サービスを提供するサービス提供者用コンピュータ300とを含む。サービス提供者用コンピュータ300と中継用コンピュータ200、中継用コンピュータ200と各利用者用コンピュータ100は、それぞれインターネットなどのネットワークを介して接続される。また図1には明示していないが、各利用者用コンピュータ100もまたネットワークを介して互いに接続され、更に各利用者用コンピュータ100とサービス提供者用コンピュータ300もネットワークを介して接続される。更に後述する第5実施形態では、複数の中継用コンピュータ200が、2つのグループの各メンバーの利用者用コンピュータ100からサービス提供者300へ送信される情報を中継する。
図2に、上記各コンピュータ、すなわち利用者用コンピュータ100、中継用コンピュータ200及びサービス提供者用コンピュータ300のハードウェア構成の一例を示す。各コンピュータは、ホストコントローラ405により相互に接続されるCPU400、RAM410及びビデオコントローラ415を含むCPU周辺部と、入出力コントローラ430によりホストコントローラ405に接続される通信インターフェース460、ハードディスクドライブ440、及びCD−ROMドライブ450を含む入出力部と、入出力コントローラ430に接続されるスーパーI/Oコントローラ470及びスーパーI/Oコントローラ470に接続されるフレキシブルディスクドライブ480、フラッシュROM490、ならびにキーボードマウスコントローラ500を有するレガシー入出力部とを備える。
ホストコントローラ405は、RAM410と、高い転送レートでRAM410をアクセスするCPU400及びグラフィックコントローラ415とを接続する。CPU400は、フラッシュROM490やRAM410に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ415は、CPU400等がRAM410内に設けたフレームバッファ上に生成する画像データを取得し、表示装置420上に表示させる。これに代えて、グラフィックコントローラ415は、CPU400等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ430は、比較的高速な入出力装置である通信インターフェース460、ハードディスクドライブ440、及びCD−ROMドライブ450をホストコントローラ405と接続する。通信インターフェース460は、有線ケーブルでイーサネットプロトコルを用いて、通信用のゲートウェイサーバ(図示しない)に接続され、或いは有線LANカードを備え、IEEE802.11gなどの規格に基づく通信プロトコルを使用することで、ネットワークを介して他のコンピュータと通信する。
ハードディスクドライブ440は、コンピュータが使用するプログラム及びデータを格納する。CD−ROMドライブ450は、CD−ROMからプログラム又はデータを読み取り、スーパーI/Oコントローラ470に提供する。
また、入出力コントローラ430には、フレキシブルディスクドライブ480やキーボードマウスコントローラ500等の比較的低速な入出力装置と、フラッシュROM490とが接続される。フラッシュROM490は、コンピュータの起動時にCPU400が実行するブートプログラムや、コンピュータのハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ480は、フレキシブルディスクからプログラムまたはデータを読み取り、RAM410を介してスーパーI/Oコントローラ470に提供する。I/Oコントローラ470は、フレキシブルディスクや、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
次に、各コンピュータのソフトウェア構成について説明する。コンピュータに提供されるコンピュータプログラム(オペレーティング・システム及びアプリケーションプログラム)は、フレキシブルディスク、CD−ROM、DVDやPD等の光学記録媒体、MD等の光磁気記憶媒体、ICカード等の半導体メモリ等の記録媒体に格納されて、或いはWebサイトからダウンロードする等ネットワークを介して利用者によって提供される。プログラムは、記録媒体から読み出されスーパーI/Oコントローラ470を介してコンピュータにインストールされ、又はネットワーク上の他のコンピュータから読み出され通信インターフェース460を介してコンピュータにインストールされ、コンピュータにおいて実行される。
各コンピュータに使用できるオペレーティング・システムとして、Windows (マイクロソフトの商標) XP、Linux (Linus Torvaldsの商標)、Apple ComputerのMAC OS Xなどがあるが、これらに限定されない。これらのオペレーティング・システムは、TCP/IPプロトコルによる通信機能を標準で持ち、本発明が必要とする通信機能を好適に提供できるものである。また、利用者用コンピュータ100には利用者用プログラム、中継用コンピュータ200には中継用プログラム、サービス提供者用コンピュータ300には提供者用プログラムがそれぞれアプリケーションプログラムとしてインストールされる。そして、これらのようなハードウェア構成とソフトウェア構成とが相まって、各コンピュータは各実施形態において説明する機能を発揮する。
ここで最初にサービス提供者用コンピュータ300において実行されるマッチングについて説明しておく。本発明に係るマッチング・サービスの提供は、使用するマッチングのアルゴリズムを制限しない。しかしながら、多くの利用者からサービス利用の申し込みがあることを期待するならば、サービス提供者はできるだけ魅力的なマッチングを求めることが好ましいことは容易に想像できよう。そのような魅力的なマッチングの1つとして安定なマッチングが挙げられる。
安定なマッチングは、複数のメンバーをもつ互いに素な2つのグループの各メンバーが、相手のグループの全メンバーを優先度の高い順に一意に順位付けた優先度リストを持つ場合に求められる。ここで安定なマッチングを説明する前に、先にブロッキングペアを説明する。例えば、サプライヤー企業Aとバイヤー企業BがあるマッチングMにおいてペアとはなっていないけれど、サプライヤー企業Aは、マッチングMにおいてペアになったバイヤー企業Cよりもバイヤー企業Bを好み、またバイヤー企業Bも、マッチングMにおいてペアになったサプライヤー企業Dよりもサプライヤー企業Aを好む場合、サプライヤー企業Aとバイヤー企業Bをブロッキングペアと呼ぶ。そして、安定なマッチングとは、このようなブロッキングペアが存在しないマッチングをいう。
安定なマッチングは必ず存在する。非特許文献1に挙げた論文に記載されるGale−Shapleyのアルゴリズムは、安定なマッチングの1つを求める効率的な解法として知られている。そこで、ここでは安定なマッチングを求めるアルゴリズムとしてGale−Shapleyのアルゴリズムを説明する。しかしながら本発明に係るマッチング・サービスの提供は、上述したように使用するマッチングのアルゴリズムを制限しないことに留意されたい。
サプライヤーとバイヤーの2つのグループ間のマッチングにGale−Shapleyのアルゴリズムを適用する場合について説明する。
1.まず、サプライヤー側の企業はそれぞれ最も取引としたいと望むバイヤー側の企業に取引の申し出をする。
2.バイヤー側の企業は、申し出を受けた中で最も取引したいと望むサプライヤー側の企業を選択し、キープする。
3.申し出を断られたサプライヤー側の企業は、次に取引したいと望むバイヤー側の企業に取引の申し出をする。
4.バイヤー側の企業は、キープしているサプライヤー側の企業よりも好ましい、すなわちより優先度の高いサプライヤー側の企業から取引の申し出を受けた場合、先のキープを解除して新たに申し出をしたサプライヤー側の企業をキープする。
5.サプライヤー側のすべての企業が申し出を断わられなくなるまで、3.と4.を繰り返す。
3.と4.を繰り返すたびに取引の申し出をする候補が減っていくことから明らかなように、Gale−Shapleyのアルゴリズムは有限時間で終了する。
図3は、上記マッチングの処理の流れの一例を示すフローチャートである。ここに示すフローチャートは、サプライヤー側の企業数Nとバイヤー側の企業数Mは同数であるか、またはサプライヤー側の企業数Nがバイヤー側の企業数Mよりも多い場合に適用される。前提として、サプライヤー側の企業には1から順に番号が振られているとする。また各企業がもつ、相手グループの全企業を優先度の高い順に一意に順位付けた優先度リストは、マッチングを実行するコンピュータの記憶装置に格納されているものとする。更に現在のマッチング状況はステータス表で確認できるものとし、ステータス表も同じく記憶装置に格納されるものとする。ここで、ステータス表はバイヤー側の各企業の欄を有し、あるバイヤー側の企業の欄にあるサプライヤー側の企業の識別情報が書き込まれていれば、そのバイヤー側の企業はその識別情報をもつサプライヤー側の企業を現在キープしていることを意味するものとする。
処理はステップ900から開始し、まず初期値としてサプライヤー側の企業の番号iに1を設定する。次に記憶装置からステータス表を読み出し、番号iの企業の識別情報がステータス表に書き込まれているかどうか判断する(ステップ905)。ステータス表に番号iの企業の識別情報がみつかる場合、処理は後述するステップ940へ進む。初めてステップ905を実行する場合、ステータス表の各欄は全て空欄となっているため、処理はステップ910へ進む。ステップ910では、番号iのサプライヤー側の企業の優先度リストから、検討済みでない最も上位のバイヤー側の企業を取り出す。ここで「検討済み」とは、番号iのサプライヤー側の企業とペアになり得るかどうかの検討がなされたことを意味する。そこで後で検討済みであるかどうか判断可能なように、ステップ910でバイヤー側の企業を取り出す際には、優先度リスト内のそのバイヤー側の企業に検討済みであることを示す印をつける。このように、あるサプライヤー側の企業に対し一度候補として検討されたバイヤー側の企業は、そのサプライヤー側の企業に対しては二度と候補として検討されることはない。
次に、取り出したバイヤー側の企業に現在キープしている相手が存在するか確認する(ステップ915)。この確認は、記憶装置に格納されるステータス表の、取り出したバイヤー側の企業の欄を参照することによりなされる。現在キープしている相手が存在する場合(ステップ915:YES)、取り出したバイヤー側の企業の優先度リストを記憶装置から読み出す(ステップ920)。そして、取り出したバイヤー側の企業の優先度リストにおける、現在キープしている相手企業の順位と番号iの企業の順位とを比較する(ステップ925)。現在キープしている相手企業の順位が上の場合(ステップ925:YES)、処理はステップ910へ戻る。ステップ915でNOの場合、すなわち取り出したバイヤー側の企業に現在キープしている相手が存在しない場合、またはステップ925でNOの場合、すなわち現在キープしている相手企業の順位より番号iの企業の順位が上の場合、ステータス表の取り出したバイヤー側の企業の欄に番号iの企業の識別情報を書き込み、ステータス表を更新する(ステップ930)。
処理はステップ940へ進み、iがNであるかどうか判断する。これは、サプライヤー側の全ての企業について、少なくとも一度はステップ910からステップ930が実行されること、言い換えると、その優先度リストが一度も考慮されることなくマッチング処理が終了したというような企業が存在しないこと、を保証するためである。iがNでない場合(ステップ940:NO)、iを1増加してステップ905へ戻る(ステップ945)。iがNである場合(ステップ940:YES)、記憶装置からステータス表を読み出し、ステータス表に空欄が残っているかどうか、すなわち相手が決まっていないバイヤー側の企業が存在するかどうか判断する(ステップ950)。ステータス表に空欄が残っている場合(ステップ950:YES)、ステップ900へ戻り、相手が決まっていないサプライヤー側の企業について上記一連の処理を繰り返す。一方、ステータス表に空欄が残っていない場合(ステップ950:NO)、これは全企業について相手が決まったことを意味するので、処理を終了する。なお、サプライヤー側の企業数Nがバイヤー側の企業数Mよりも少ない場合についても、図3に示すフローチャートを適用できる。但しこの場合、ステップ950の判断を、「ステータス表にN個の、サプライヤー側の企業の識別情報の書き込みがあるかどうか」の判断に代える必要がある。
次に各コンピュータの機能及び動作の説明を行う。本発明では、サービス提供者とサービスを利用する2つのグループの各メンバーとの間の情報のやり取りは、中継用コンピュータ200を介してなされる。そのため、マッチング結果は各メンバーに送信される前に、当事者の利用者用コンピュータのみが復号できる状態に加工される。ところでこのマッチング結果の加工にはいくつかの方法が考えられ、以下では、加工方法が異なる4つの実施形態について説明する。更にその後に、マッチング結果を各メンバーに送信せずに公開する第5の実施形態について説明する。
(第1実施形態)図4は、第1実施形態に係る利用者用コンピュータ100aの機能構成を示す。第1実施形態では、ハードディスクドライブ440のハードディスクに格納された利用者用プログラムは、
例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、利用者用コンピュータ100aを、受信部102、格納部105、優先度リスト作成部140、第1暗号化部145、加工情報作成部150、第2暗号化部155、マッチング情報作成部160、送信部165、及び復号部170として機能させる。格納部105はまた、優先度情報一時格納領域110、識別表格納領域115、共通暗号化鍵格納領域120、暗号化鍵格納領域125、加工鍵格納領域130、及び宛先情報格納領域135を含む。なお、図4では各格納領域は便宜上同じ1つの格納部105内の領域として示されているが、現実には、例えばHDD440、FDドライブ480等の物理的に異なる複数の記憶装置の領域としてもよい。
本実施形態では、2つのグループ全体に対して、単一のまとめ役のメンバーを選出し、選出されたメンバーが各メンバーに識別情報を割り当て、また全メンバーに共通な共通暗号化鍵を各グループの公開鍵で暗号化するなど公知の方法でセキュアに配布するものとする。そこでまとめ役の利用者の利用者用プログラムは、利用者用コンピュータ100aを更に、識別表作成部175、共通暗号化鍵生成部180として機能させる。識別表作成部175は、各メンバーに適当な識別情報を割当て、メンバーとその識別情報の対応関係を示す識別表を作成する。但し識別情報の割当てはまとめ役のメンバーが直接行ってもよい。この場合識別表作成部175は、まとめ役のメンバーがキーボードなどの入力装置を介して入力した各メンバーの識別情報に基づいて識別表を作成する。図7a)に、識別表の一例を示す。ここでIDはメンバーXに割り当てられた識別情報を表す。共通暗号化鍵生成部180は、全メンバーに共通な共通暗号化鍵を生成する。ここで生成される共通暗号化鍵は次の条件を満たす。
すなわち、共通暗号化鍵をKCと表し、また識別情報IDを共通暗号化鍵KCで暗号化した結果をenc_KC(ID)と表わすと、共通暗号化鍵Kは、enc_ KC (ID1)=enc_ KC (ID2)ならばID1=ID2を満たすものとする。このような条件を満たす暗号化方式の一例として、Data Encryption Standard(DES)等の秘密鍵暗号化方式や素のRivestShamir Adleman(RSA)等の公開鍵暗号化方式が挙げられる。しかし本発明の実施例では、暗号化と復号を同じ鍵を用いて行う秘密鍵暗号化方式を使用する。秘密鍵暗号化方式であれば、DES以外、例えばAESなど、DESと同等またはそれ以上にセキュアな任意のものを用いることができる。なお、以下では情報Xを暗号化鍵Yで暗号化した結果をenc_KY(X)と表わす。作成された識別表と生成された共通暗号化鍵は、まとめ役のメンバーの利用者用コンピュータ100aの送信部165によって、各メンバーの利用者用コンピュータ100aへ送信される。各メンバーの利用者用コンピュータ100aの受信部102は、識別表と共通暗号化鍵を受信し、それぞれ識別表格納領域115と共通暗号化鍵格納領域120に格納する。
暗号化鍵格納領域125は、サービス提供者用コンピュータ300aが保持する復号鍵に対応する暗号化鍵を格納する。各メンバーはマッチング・サービスの利用に際し、サービス提供者からサービス提供者の暗号化鍵を入手する。本実施形態では、サービス提供者用コンピュータ300aが保持する復号鍵は、公開鍵暗号化方式の秘密鍵であり、利用者が入手するサービス提供者の暗号化鍵は、その秘密鍵に対応する公開鍵である。なお公開鍵暗号化方式としてはRSAを利用できる他、楕円曲線暗号などの、同等またはそれ以上にセキュアな任意のものを用いることができる。このように、サービス提供者用コンピュータ300aは予め一組の鍵を生成しておき、暗号化に使用する方の鍵をそのホームページ上に公開するなどして、サービス利用者がいつでもサービス提供者の暗号化鍵を入手できるようしておく。他の方法として、サービス提供者用コンピュータ300aは、まとめ役のメンバーからサービスの利用の申し込みを受けたことに応答して一組の鍵を生成し、暗号化に使用する方の鍵をまとめ役のメンバーへ送るようにしてもよい。
優先度情報一時格納領域110は、キーボードなどの入力装置を介して利用者用コンピュータ100aのユーザである利用者から入力された相手グループのメンバーの優先度情報を格納する。図7b)にメンバーAの優先度情報の一例を示す。ここで表中のメンバーE、F、G、…は、メンバーAからみた相手グループに属するメンバーである。優先度リスト作成部140は、優先度情報一時格納領域110から読み出した相手グループのメンバーの優先度情報と、識別表格納領域115から読み出したメンバーとその識別情報の対応関係を示す識別表を使用して、相手メンバーの識別情報を利用者の優先度順に並べた優先度リストを作成する。図7a)及びb)の例を用いて説明すると、メンバーAの優先度リスト作成部140は、図7b)の表をコピーし、コピーした表の優先度順を高いものから順に並ぶようにソートする。次にソート後の表において優先度リスト作成部140は、メンバー名を図7a)の表から読み出した対応する識別情報で更新する。このようにして、最終的に図7c)に示す優先度リストが作成される。なお本実施形態においては、優先度情報一時格納領域110の優先度情報は、優先度リストが作成された後利用者用コンピュータ100aから削除される。
第1暗号化部145は、優先度リスト作成部140から優先度リストと利用者本人の識別情報を受け取り、優先度リスト中の相手グループのメンバーの識別情報と利用者本人の識別情報を、共通暗号化鍵格領域120から読み出した共通暗号化鍵で各々暗号化する。図7d)に、第1暗号化部145によって識別情報を暗号化された後のメンバーAの優先度リストを示す。
加工情報作成部150は、加工鍵格納領域130から加工鍵を読み出し、マッチング結果を当事者の利用者用コンピュータ100aのみが復号できる状態に加工するためにサービス提供者によって使用される加工情報を作成する。本実施形態では、加工鍵は利用者本人の利用者用コンピュータ100aが保持する暗号化鍵であり、加工情報は当該暗号化鍵の複製である。すなわち、第1の実施形態では、暗号化と復号を同じ鍵で行う秘密鍵暗号化方式を利用しマッチング結果を暗号化するようにする。
第2暗号化部155は、暗号化鍵格納領域125からサービス提供者の公開鍵を読み出し、第1暗号化部145から渡された優先度リストと、加工情報作成部150から渡された加工情報を、公開鍵で各々暗号化する。宛先情報格納領域135は、電子メール・アドレスなど、ネットワークを介してデータのやりとりをする場合にデータを送る宛先を指定するために使用される利用者本人の宛先情報を格納する。
マッチング情報作成部160は、宛先情報格納領域135から読み出した利用者本人の宛先情報、第1暗号化部145から渡された共通暗号化鍵で暗号化された利用者本人の識別情報、第2暗号化部155から渡されたサービス提供者の公開鍵で暗号化された優先度リスト、及び同じくサービス提供者の公開鍵で暗号化された加工情報からマッチング情報のセットを作成する。なお、マッチング情報のセットのフォーマットに制限はないが、フォーマットは利用者用コンピュータ100a、中継用コンピュータ200a、サービス提供者用コンピュータ300a間で予め取り決められ、各メンバーは共通のフォーマットを使用するものとする。送信部165は、マッチング情報作成部160から渡されたマッチング情報のセットを中継用コンピュータ200aへ送信する。
受信部102はまた、中継用コンピュータ200aから、加工情報に基づいてサービス提供者によって暗号化された利用者本人のマッチング結果を受信する。復号部170は、受信部102から渡されたマッチング結果を、共通暗号化鍵格納領域120に格納される共通暗号化鍵及び加工鍵格納領域130に格納される加工鍵のうちの少なくとも1つに基づいて復号する。本実施形態では、復号部170はマッチング結果を、加工鍵格納領域130から読み出した加工鍵としての暗号化鍵で復号し、更に共通暗号化鍵格納領域120から読み出した共通暗号化鍵で復号することで、最終的にマッチング結果を取得する。
図5は、第1実施形態に係る中継用コンピュータ200aの機能構成を示す。第1実施形態では、ハードディスクドライブ440のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、中継用コンピュータ200aを、受信部205、マッチング情報一時格納部210、宛先情報抽出部215、宛先情報格納部220、送信部225、マッチング結果一時格納部230、及び宛先情報決定部235として機能させる。上記各格納部としては、一例としてHDD440を利用できる。中継用コンピュータ200aは、サービス提供者からサービス利用者の宛先情報を隠し、サービス利用者の宛先情報を管理するものであるため、好ましくはまとめ役として選ばれたメンバーのコンピュータによって実現される。
受信部205は、各利用者用コンピュータ100aから、マッチング情報のセットを受信する。中継用コンピュータ200aにおいて受信されるマッチング情報のセットには、本人の宛先情報、共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報が含まれる。ここで優先度リスト及び加工情報は、サービス提供者の公開鍵で暗号化されている。
マッチング情報一時格納部210は、受信した各メンバーのマッチング情報のセットを一時的に格納する。宛先情報抽出部215は、マッチング情報一時格納部210から各メンバーのマッチング情報のセットを読み出し、本人の宛先情報を抽出し、読み出したセットに含まれる共通暗号化鍵で暗号化された本人の識別情報に関連付けて宛先情報格納部220に格納する。上述したように中継用コンピュータ200aは、利用者用コンピュータ100aから送信されるマッチング情報のセットのフォーマットを予め知っている。そこで宛先情報の抽出は、一例としてマッチング情報のセットにおける宛先情報の位置やファイル名を利用して行われる。なお位置情報を利用する場合は、宛先情報の抽出により他の情報の位置に変更が生じないようパディングを行う。宛先情報格納部220に格納される宛先情報の一覧表の一例を図8に示す。宛先情報が抽出されたマッチング情報のセットは、送信部225によってサービス提供者用コンピュータ300aへ送信される。
受信部205はまた、サービス提供者用コンピュータ300aから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報及び加工情報に基づいて暗号化された本人のマッチング結果を含むマッチング結果情報のセットを受信する。マッチング結果一時格納部230は、受信した各メンバーのマッチング結果情報のセットを一時的に格納する。
宛先情報決定部235は、マッチング結果一時格納部230からマッチング結果情報のセットを読み出す。そして宛先情報決定部235は、マッチング結果の宛先情報を、当該マッチング結果と同じマッチング結果情報のセットに含まれる共通暗号化鍵で暗号化された本人の識別情報を索引として宛先情報格納部220から読み出す。そして宛先情報決定部235は、その宛先情報とマッチング結果とを送信部225へ渡す。送信部225は、宛先情報決定部235から受け取った宛先情報の利用者用コンピュータ100aへ、受け取ったマッチング結果を送信する。
図6は、第1実施形態に係るサービス提供者用コンピュータ300aの機能構成を示す。第1実施形態では、ハードディスクドライブ440のハードディスクに格納されたサービス提供者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、サービス提供者用コンピュータ300aを、受信部310、マッチング情報格納部320、復号鍵格納部330、リスト復号部340、加工情報復号部350、マッチング実行部360、加工部370、マッチング結果格納部380、及び送信部390として機能させる。上記各格納部としては、一例としてHDD440を利用できる。
受信部310は、中継用コンピュータ200aを介して、各利用者用コンピュータ100aからマッチング情報のセットを受信する。サービス提供者用コンピュータ300aにおいて受信されるマッチング情報のセットには、共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータ100aのみが復号できる状態に加工するために使用される加工情報が含まれる。ここで、優先度リストと加工情報はサービス提供者の公開鍵で暗号化されている。なお、本実施形態では、加工情報は上述したように利用者用コンピュータ100aが保持する秘密鍵と同じ鍵である。
マッチング情報格納部320は、受信した各メンバーのマッチング情報のセットについて、優先度リスト及び加工情報を共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納する。一例としてマッチング情報格納部320は、図9a)に示すように、優先度リスト及び加工情報の格納位置を示すポインタを共通暗号化鍵で暗号化された本人の識別情報の関連付ける、マッチング情報のセットの一覧表を格納する。上述したようにサービス提供者コンピュータ300aは、利用者用コンピュータ100aから送信されるマッチング情報のセットのフォーマットを予め知っている。そこで受信したマッチング情報のセット内の各情報の識別は、一例としてマッチング情報のセットにおける情報の位置やファイル名を利用して行う。復号鍵格納部330は、サービス提供者の公開鍵に対応する秘密鍵を格納する。リスト復号部340は、マッチング情報格納部320から各メンバーの優先度リストと共通暗号化鍵で暗号化された本人の識別情報とを読み出し、復号鍵格納部330から読み出した秘密鍵で各メンバーの優先度リストを復号する。そしてリスト復号部340は、各メンバーの復号した優先度リストを、それぞれ共通暗号化鍵で暗号化された本人の識別情報に関連付けてマッチング実行部360へ渡す。
マッチング実行部360は、リスト復号部340から受け取った、本人の識別情報及び優先度リスト中の相手グループのメンバーの識別情報は共通暗号化鍵で暗号化された状態のままで、全メンバーの本人の識別情報と復号された優先度リストとに基づいてマッチングを実行する。マッチングの具体的な方法は上述したとおりである。なお本発明では優先度リスト中の各メンバーの識別情報は暗号化されている。しかし暗号化は全メンバーに共通な共通暗号化鍵KCを使用して行われており、enc_KC(ID1)=enc_KC(ID2)、すなわち暗号化後の識別情報が同じならば、ID1=ID2、すなわち識別情報も同じであるため、上述したマッチング方法をそのまま利用できる。なおマッチング結果は当然ながら共通暗号化鍵で暗号化された相手の識別情報であり、ペアになった相手の識別情報そのものではない。そしてマッチング実行部360は、各メンバーのマッチング結果を、共通暗号化鍵で暗号化された各メンバーの識別情報に関連付けて加工部370へ渡す。
加工情報復号部350は、マッチング情報格納部320から各メンバーの加工情報と共通暗号化鍵で暗号化された本人の識別情報を読み出し、復号鍵格納部330から読み出した秘密鍵で各メンバーの加工情報を復号する。そして加工情報復号部350は、各メンバーの復号した加工情報を、それぞれ共通暗号化鍵で暗号化された本人の識別情報に関連付けて加工部370へ渡す。加工部370は、マッチング実行部360から受け取った各メンバーのマッチング結果を、各メンバーの復号された加工情報に基づいて、マッチング結果の当事者の利用者用コンピュータ100aのみが復号できる状態に加工する。
すなわち、本実施形態に係る加工部370は、各メンバーのマッチング結果を、それぞれ本人の利用者用コンピュータが保持する秘密鍵と同じ鍵で暗号化する。そして加工部370は、各メンバーについて、加工済みのマッチング結果を共通暗号化鍵で暗号化された本人の識別情報に関連付けてマッチング結果格納部380に格納する。図9b)にマッチング結果格納部380に格納されるマッチング結果の一覧表の一例を示す。ここでKEYはメンバーYの秘密鍵を示す。送信部390は、マッチング結果格納部380から読み出した、共通暗号化鍵で暗号化された本人の識別情報及び加工済みの本人のマッチング結果を含むマッチング結果情報のセットを、中継用コンピュータ200aに送信する。
次に図10のフローチャートを参照して、第1実施形態に係るマッチング・サービスの提供の処理の流れの一例を説明する。まずサービス提供者用コンピュータ300aは、公開鍵KPと秘密鍵Ksの一組の鍵を生成し(ステップ500)、公開鍵Kをそのホームページ上などに公開する(ステップ505)。このとき秘密鍵Ksはサービス提供者用コンピュータ300aの復号鍵格納部330に格納される。利用者コンピュータ100aは、サービス提供者用コンピュータ300aのホームページからダウンロードするなどして公開鍵KPを入手し、利用者コンピュータ100aの暗号化鍵格納領域125に格納する(ステップ510)。
まとめ役の利用者の利用者用コンピュータ100aは、全メンバーに共通な共通暗号化鍵Kcを生成し(ステップ515)、また、メンバーとその識別情報IDの対応関係を示す識別表を作成する(ステップ520)。そしてまとめ役の利用者の利用者用コンピュータ100aは、共通暗号化鍵Kcと識別表を各メンバーの利用者用コンピュータ100aへ送信する(ステップ525)。なお、ここではまとめ役の利用者の利用者用コンピュータ100aが中継用コンピュータ200aとしての役割も果たすものとする。利用者用コンピュータ100aは、識別表と共通暗号化鍵Kcを受信し、それぞれ共通暗号化鍵格納領域120と識別表格納領域115へ格納する(ステップ530)。
利用者用コンピュータ100aは、優先度情報一時格納領域110から読み出した優先度情報と、識別表格納領域115から読み出した識別表を使用して、相手メンバーの識別情報IDを利用者の優先度順に並べた優先度リストを作成する(ステップ535)。そして利用者用コンピュータ100aは、共通暗号化鍵格納領域120から読み出した共通暗号化鍵Kで、優先度リスト中の識別情報IDと利用者本人の識別情報IDとを暗号化する(ステップ540)。
利用者用コンピュータ100aはまた、加工鍵格納領域130から利用者用コンピュータ100aの暗号化鍵を読み出し、その複製を加工情報として作成する(ステップ545)。そして利用者用コンピュータ100は、暗号化鍵格納領域125から読み出したサービス提供者の公開鍵Kで、優先度リストと加工情報とを暗号化する(ステップ550)。最後に利用者用コンピュータ100aは、宛先情報格納領域135から利用者の宛先情報を読み出し、共通暗号化鍵Kで暗号化した本人の識別情報ID、サービス提供者の公開鍵Kで暗号化した優先度リスト、同じくサービス提供者の公開鍵Kで暗号化した加工情報と一緒にしてマッチング情報のセットを作成し、中継用コンピュータ200aへ送信する(ステップ555)。
中継用コンピュータ200aは、各メンバーの利用者用コンピュータ100aからマッチング情報のセットを受信する(ステップ560)。そして中継用コンピュータ200aは、受信した各メンバーのマッチング情報のセットから宛先情報を抽出し、同じマッチング情報のセットに含まれる共通暗号化鍵Kで暗号化された本人の識別情報IDと関連付けて宛先情報格納部220へ格納する(ステップ565)。最後に中継用コンピュータ200aは、宛先情報を抽出したマッチング情報の各セットを、サービス提供者用コンピュータ300aへ送信する(ステップ570)。
サービス提供者用コンピュータ300aは、各メンバーのマッチング情報のセットを受信し、マッチング情報格納部320に格納する(ステップ575)。次にサービス提供者用コンピュータ300aは、復号鍵格納部330から読み出したサービス提供者の秘密鍵Kで、全メンバーの優先度リストを復号する(ステップ580)。そしてサービス提供者用コンピュータ300aは、本人の識別情報ID及び優先度リスト内の相手グループのメンバーの識別情報IDは共通暗号化鍵Kcで暗号化された状態のままで、全メンバーの本人の識別情報IDと復号した優先度リストとに基づいて、2つのグループ間のマッチングを実行する(ステップ585)。マッチング結果である相手の識別情報IDは、上述したように共通暗号化鍵Kcで暗号化された状態で得られる。
サービス提供者用コンピュータ300aはまた、復号鍵格納部330から読み出したサービス提供者の秘密鍵Ksで各メンバーの加工情報を復号し、メンバー本人の暗号化鍵を取得する(ステップ590)。そしてサービス提供者用コンピュータ300aは、各メンバーのマッチング結果をメンバー本人の暗号化鍵で暗号化し、マッチング結果を本人のみが復号できる状態に加工する(ステップ595)。最後にサービス提供者用コンピュータ300aは、共通暗号化鍵Kで暗号化された本人の識別情報IDと本人の加工済みのマッチング結果とを含むマッチング結果情報のセットを中継用コンピュータ200aへ送信する(ステップ600)。
中継用コンピュータ200aは、各メンバーのマッチング結果情報のセットを受信する(ステップ605)。そして中継用コンピュータ200aは、マッチング結果の宛先を、当該マッチング結果と同じセットに含まれる共通暗号化鍵Kcで暗号化された本人の識別情報IDを索引として宛先情報格納部220から読み出し(ステップ610)、読み出した宛先情報の利用者用コンピュータ100aへマッチング結果を送信する(ステップ615)。
利用者用コンピュータ100aは、本人のマッチング結果を受信する(ステップ620)。そして利用者用コンピュータ100aは、マッチング結果を、加工鍵格納領域130から読み出した秘密鍵で復号し、更に共通暗号化鍵格納領域120から読み出した共通暗号化鍵Kで復号することで、最終的にマッチング結果である相手の識別情報IDを取得する(ステップ625)。
以上のように、第1実施形態では、優先度リスト内の相手グループのメンバーの識別情報と本人の識別情報は、メンバーに共通な共通暗号化鍵で暗号化された状態のままでサービス提供者用コンピュータにおけるマッチングに使用される。そのためマッチング結果である相手メンバーの識別情報も共通暗号化鍵で暗号化された状態で得られる。従って、メンバーとその識別情報の対応関係が外部に漏れることがあっても、優先度リストの内容やマッチング結果がサービス提供者や第三者に知られることはない。なお第1実施形態では、加工情報は、利用者用コンピュータ100aが保持する暗号化鍵の複製であり、秘密鍵暗号化方式を利用してマッチング結果を暗号化するようにすると説明した。しかし、加工鍵を利用者用コンピュータ100aが保持する復号鍵とし、また加工情報をその復号鍵に対応する暗号化鍵としてもよい。すなわち、公開鍵暗号化方式を利用してマッチング結果を暗号化するようにしてもよい。
(第2実施形態)第2実施形態及び後述する第3実施形態に係るマッチング・サービスの提供は、加工情報及び加工鍵の内容が異なる以外は、第1実施形態に係るマッチング・サービスの提供と基本的に同じである。そこで、第2実施形態及び後述する第3実施形態では第1実施形態に係るマッチング・サービスの提供と異なる構成及び動作についてのみ説明する。
最初に、第2実施形態に係る加工鍵と加工情報の内容及び加工情報の作成方法を、図4を参照して説明する。第2実施形態に係る利用者用コンピュータ100aの加工鍵格納領域130に格納される加工鍵は、利用者本人の利用者用コンピュータ100aのみが保持する鍵であり、暗号化と復号を同じ鍵で行う秘密鍵暗号化方式の暗号化鍵である。加工情報作成部150は、識別表格納領域115から読み出した相手グループの各メンバーの識別情報を、加工鍵としての暗号化鍵で暗号化し、更にこれを優先度情報一時格納領域110から読み出した各メンバーの優先度の順位に従って並べることで、加工情報としての暗号化済みリストを作成する。図11に、本実施形態に係るメンバーAの加工情報の例を示す。図11a)はメンバーAの優先度リストを示し、図11b)はメンバーAの加工情報の例を示す。ここでKEAはメンバーAの暗号化鍵を表わす。なお第2実施形態では、優先度情報一時格納領域110に格納された優先度情報は、加工情報が作成された後利用者用コンピュータ100aから削除される。
次に加工情報作成後の利用者用コンピュータ100a及びサービス提供者用コンピュータ300aにおける加工情報の取り扱いを、図10を参照して説明する。利用者用コンピュータ100aの加工情報作成部150により作成された暗号化済みリストは、第2暗号化部155によりサービス提供者の公開鍵KPで暗号化された後(ステップ550)、マッチング情報の1つとして中継用コンピュータ200aを介してサービス提供者用コンピュータ300aへ送信される(ステップ555、ステップ570)。なお第2実施形態においては、共通暗号化鍵格納領域120の共通暗号化鍵KCはステップ540の後利用者用コンピュータ100aから削除される。
サービス提供者用コンピュータ300aにおいて受信された各メンバーの暗号化済みリストは、加工情報復号部350によりサービス提供者の秘密鍵KSで復号され(ステップ590)、共通暗号化鍵KCで暗号化されたその本人の識別情報IDに関連付けて加工部370へ渡される。また本実施形態に係るマッチング実行部360は、マッチング結果として、共通暗号化鍵KCで暗号化された本人の識別情報IDと、本人の優先度リストにおけるその本人とペアになった相手メンバーの順位とを加工部370へ渡す。加工部370は、各メンバーについて、本人の暗号化済みリストから、本人の優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する相手メンバーの識別情報を取り出すことにより、マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工する。そして加工部370は、取り出した相手メンバーの識別情報を、共通暗号化鍵KCで暗号化された本人の識別情報に関連付けてマッチング結果格納部380に格納する(ステップ595)。
上記マッチング実行部360と加工部370の処理を、メンバーAを例により具体的に説明する。マッチングの結果、マッチング実行部360が、enc_KC(IDA)のペアとしてenc_KC(IDG)を得たとする。するとマッチング実行部360は、図7d)に示すメンバーAの優先度リストから、enc_KC(IDG)の順位、すなわち順位2を読み出す。加工部370はマッチング実行部360から順位2を受け取り、図11b)に示すメンバーAの加工情報から、順位2に位置する情報、すなわちenc_KEA(IDG)を取り出す。そして加工部370は、enc_KEA(IDG)をenc_KC(IDA)に関連付けてマッチング結果格納部380に格納する。このように本人の暗号化済みリストから取り出された相手メンバーの識別情報は、本人の利用者用コンピュータ100aが保持する暗号化鍵で暗号化されている。
送信部390は、共通暗号化鍵Kで暗号化された本人の識別情報IDと、本人の利用者用コンピュータ100aが保持する暗号化鍵で暗号化された本人とペアになった相手メンバーの識別情報IDとを含むマッチング結果情報のセットを、中継用コンピュータ200aを介して利用者用コンピュータ100aへ送信する(ステップ600、ステップ615)。利用者用コンピュータ100aの受信部102はマッチング結果を受信し(ステップ620)、受信したマッチング結果を復号部170へ渡す。復号部170は、加工鍵格納領域130から読み出した利用者用コンピュータ100aの暗号化鍵でマッチング結果を復号することにより、最終的に相手メンバーの識別情報IDを取得する(ステップ625)。
以上のように、第2実施形態では、マッチング結果となりえる相手グループの全メンバーの識別情報を予め利用者用コンピュータ100aにおいてその利用者の暗号化鍵で暗号化してサービス提供者用コンピュータ300a送る。そのため、利用者用コンピュータ100aの暗号化鍵をサービス提供者用コンピュータ300aに送る必要がない。また、マッチング結果はサービス提供者用コンピュータ300aにおいて暗号化される必要がないので、マッチング結果の暗号化に共通暗号化鍵が使用されることもない。そのため、マッチング結果の復号のために利用者用コンピュータ100aにおいて共通暗号化鍵を保持し続ける必要はなく、マッチング情報を作成した後は共通暗号化鍵を削除できる。言い換えると、利用者用コンピュータ100aは共通暗号化鍵を管理する必要がない。このことは、共通暗号化鍵の使用により優先度リストの内容やマッチング結果の秘匿性を維持するマッチング・サービスの安全性がより一層高まることを意味する。
(第3実施形態)上述したように、ここでは第1実施形態に係るマッチング・サービスの提供と異なる構成及び動作についてのみ説明する。最初に、第3実施形態に係る加工鍵と加工情報の内容及び加工情報の作成方法を、図4を参照して説明する。
第3実施形態に係る利用者用コンピュータ100aの加工鍵格納領域130に格納される加工鍵は、相手グループの各メンバーの利用者用コンピュータ100aが保持する復号鍵に対応する暗号化鍵と、本人の利用者用コンピュータ100aが保持する復号鍵である。本実施形態では、相手グループの各メンバーと本人の利用者用コンピュータ100aが各々保持する復号鍵は公開鍵暗号化方式の秘密鍵であり、加工鍵格納領域130に格納される相手グループの各メンバーの暗号化鍵は、各メンバーの秘密鍵に対応する公開鍵である。加工情報作成部150は、加工鍵格納領域130から読み出した相手グループの各メンバーの公開鍵で識別表格納領域115から読み出した本人の識別情報を暗号化し、これを優先度情報一時格納領域110から読み出したメンバーの優先度情報に従って並べることで、加工情報としての暗号化済みリストを作成する。図12に、本実施形態に係るメンバーAの加工情報の例を示す。図12a)はメンバーAの優先度リストを示し、図12b)はメンバーAの加工情報の例を示す。ここでKpYはメンバーYの公開鍵を表わす。なお第3の実施形態では、優先度情報一時格納領域110に格納された優先度情報は、加工情報が作成された後利用者用コンピュータ100aから削除される。
次に、加工情報作成後の利用者用コンピュータ100a及びサービス提供者用コンピュータ300aにおける加工情報の取り扱いを、図10を参照して説明する。加工情報作成部150により作成された暗号化済みリストは、第2暗号化部155によりサービス提供者の公開鍵KPで暗号化された後(ステップ550)、マッチング情報の1つとして中継用コンピュータ200aを介してサービス提供者用コンピュータ300aへ送信される(ステップ555、ステップ570)。なお第3実施形態においては、共通暗号化鍵格納領域120の共通暗号化鍵Kはステップ540の後利用者用コンピュータ100aから削除される。
サービス提供者用コンピュータ300aにおいて受信された各メンバーの暗号化済みリストは、加工情報復号部350によりサービス提供者の秘密鍵KSで復号され(ステップ590)、共通暗号化鍵KCで暗号化されたその本人の識別情報IDに関連付けて加工部370へ渡される。また本実施形態に係るマッチング実行部360は、マッチング結果として、共通暗号化鍵Kで暗号化された本人の識別情報IDに関連付けて、その本人の優先度リストにおける本人とペアになった相手メンバーの順位と、共通暗号化鍵KCで暗号化された上記相手メンバーの識別情報IDとを加工部370へ渡す。加工部370は、各メンバーについて、本人の暗号化済みリストから、本人の優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する本人の識別情報IDを取り出すことにより、マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工する。そして加工部370は、取り出した本人の識別情報を、共通暗号化鍵KCで暗号化された上記相手メンバーの識別情報と関連付けてマッチング結果格納部380に格納する(ステップ595)。
上記マッチング実行部360と加工部370の処理を、メンバーAを例により具体的に説明する。マッチングの結果、マッチング実行部360が、enc_KC(IDA)のペアとしてenc_KC(IDG)を得たとする。するとマッチング実行部360は、図7d)に示すメンバーAの優先度リストから、enc_KC(IDG)の順位、すなわち順位2を読み出す。加工部370はマッチング実行部360から順位2を受け取り、図12b)に示すメンバーAの加工情報から、順位2に位置する情報、すなわちenc_KPG(IDA)を取り出す。そして加工部370は、enc_ KPG(IDA)をenc_KC(IDG)に関連付けてマッチング結果格納部380に格納する。このように本人の暗号化済みリストから取り出された本人の識別情報は、上記相手メンバーの利用者用コンピュータ100aが保持する秘密鍵に対応する公開鍵で暗号化されている。
送信部390は、共通暗号化鍵KCで暗号化された本人の識別情報IDとその本人の利用者用コンピュータ100aが保持する秘密鍵に対応する公開鍵で暗号化された、本人とペアになった相手メンバーの識別情報IDとを含むマッチング結果情報のセットを、中継用コンピュータ200aを介して利用者用コンピュータ100aへ送信する(ステップ600、ステップ615)。利用者用コンピュータ100aの受信部102は、マッチング結果を受信し(ステップ620)、受信したマッチング結果を復号部170へ渡す。復号部170は、加工鍵格納領域130から読み出した利用者用コンピュータ100aの秘密鍵でマッチング結果を復号し、最終的に相手メンバーの識別情報を取得する(ステップ630)。
以上のように、第3実施形態では、相手グループのメンバーにとってマッチング結果となりえる自分の識別情報を予め本人の利用者用コンピュータ100aにおいて相手が保持する復号鍵に対応する暗号化鍵で暗号化してサービス提供者用コンピュータ300aに送る。そのため利用者用コンピュータ100aの暗号化鍵をサービス提供者用コンピュータ300aに送る必要がない。また、マッチング結果はサービス提供者用コンピュータ300aにおいて暗号化される必要がないので、マッチング結果の暗号化に共通暗号化鍵が使用されることもない。そのため、マッチング結果の復号のために利用者用コンピュータ100aにおいて共通暗号化鍵を保持し続ける必要はなく、マッチング情報を作成した後は共通暗号化鍵を削除できる。言い換えると、利用者用コンピュータ100aは共通暗号化鍵を管理する必要がない。このことは、共通暗号化鍵の使用により優先度リストの内容やマッチング結果の秘匿性を維持するマッチング・サービスの安全性がより一層高まることを意味する。
(第4実施形態)第4実施形態では、第1乃至第3実施形態と異なり、各メンバーの識別情報は中継用コンピュータ200aにおいて暗号化される。そのため利用者用コンピュータ100aは、中継用コンピュータ200aが優先度リスト中の識別情報にアクセスできるような形で優先度リストを暗号化する。図13は、第4実施形態に係る利用者用コンピュータ100bの機能構成を示す。図13に示すように、第4実施形態に係る利用者用コンピュータ100bには、図4に示す優先度情報一時格納領域110、共通暗号化鍵格納領域120及び第1暗号化部は含まれない。また、本実施形態に係る利用者用コンピュータ100bは、図4に示す加工情報作成部150の代わりに並び替え・逆並び替え情報生成部185を、また、図4に示す加工鍵格納領域130の代わりに並び替え・逆並び替え情報格納領域190を、更に図4に示す第2暗号化部155の代わりに暗号化部195を含む。
このように、第4実施形態では、ハードディスクドライブ440のハードディスクに格納された利用者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出すことにより、利用者用コンピュータ100bを、受信部102、格納部105、優先度リスト作成部140、並び替え・逆並び替え情報生成部185、暗号化部195、マッチング情報作成部160、送信部165、及び復号部170として機能させる。格納部105はまた、識別表格納領域115、暗号化鍵格納領域125、並び替え・逆並び替え情報格納領域190、及び宛先情報格納領域135を含む。なお、図13では各格納領域は便宜上同じ1つの格納部105内の領域として示されているが、現実には、例えばHDD440、FDドライブ480等の物理的に異なる複数の記憶装置の領域としてもよい。
本実施形態では、2つのグループのまとめ役として選ばれたメンバーは、各メンバーに識別情報を割り当てるものとする。そこでまとめ役の利用者の利用者用プログラムは、利用者用コンピュータ100bを更に、識別表作成部175として機能させる。識別表作成部175の他、各利用者コンピュータ100bの識別表格納領域115、暗号化鍵格納領域125、宛先情報格納領域135については第1乃至第3実施形態と同じであるのでここでは説明を省略する。なお、本実施形態においても暗号化鍵格納領域125に格納されるサービス提供者の暗号化鍵はサービス提供者の公開鍵とする。
優先度リスト作成部140は、キーボードなどの入力装置を介して利用者用コンピュータ100bのユーザである利用者から入力された相手グループのメンバーの優先度情報と、識別表格納領域115から読み出したメンバーとその識別情報の対応関係を示す識別表とを使用して、相手メンバーの識別情報を利用者の優先度順に並べた優先度リストを作成する。並び替え・逆並び替え情報生成部185は、優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報とを生成する。図14に、4人のメンバーからなるグループについての並び替え・逆並び替え情報の例を示す。図14a)はメンバーAの並び替え情報であり、図14b)はメンバーAの逆並び替え情報である。このように並び替え情報は順番を並び替えるものであればどのようなものでもよい。なお、要素をランダムに並び替えるアルゴリズムは複数存在し、例えばC言語の標準テンプレートライブラリにはrandom_shuffle()が用意されている。そこで本発明においてはこのような既存のアルゴリズムを利用してもよく、または利用者が直接並び替え方法をキーボードなどの入力装置を介して直接入力してもよい。生成された並び替え・逆並び替え情報は並び替え・逆並び替え情報格納領域190に格納される。
暗号化部195は、優先度リスト作成部140から優先度リストと利用者本人の識別情報を受け取る。次に暗号化部195は、優先度リスト中の相手グループのメンバーの識別情報の並び順を、並び替え・逆並び替え情報格納領域190から読み出した並び替え情報に従って並び替える。ここで図14a)に示す並び替え情報を使用して、優先度リスト中の識別情報の並び替えを具体的に説明する。メンバーAからみた相手グループにはメンバーE、F、G、Hが属するとして、図14c)にメンバーAの優先度リストの例を示す。この優先度リストの優先度順を図14a)に示す並び替え情報に従って並び替えると、図14d)に示すようになる。暗号化部195はまた、暗号化鍵格納領域125からサービス提供者の公開鍵を読み出し、当該公開鍵で並び替え・逆並び替え情報格納領域190から読み出した逆並び替え情報を暗号化する。最後に暗号化部195は、利用者本人の識別情報、相手グループのメンバーの識別情報を並び替えた優先度リスト、及び暗号化した逆並び替え情報をマッチング情報作成部160へ渡す。
マッチング情報作成部160は、暗号化部195から渡された上記データに宛先情報格納領域135から読み出した利用者本人の宛先情報をあわせて、マッチング情報のセットを作成する。送信部165は、マッチング情報作成部160から渡されたマッチング情報のセットを中継用コンピュータ200へ送信する。
受信部102はまた、中継用コンピュータ200bから、マッチング結果である相手メンバーの識別情報が予めサービス提供者と利用者との間で取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストであって、識別情報が利用者本人の逆並び替え情報に基づいて並び替えられた結果リストを受信する。復号部170は、受信部102から渡された結果リスト中の識別情報を、並び替え・逆並び替え情報格納領域190から読み出した並び替え情報に従って並び替える。最後に復号部170は、並び順を元に戻した結果リストから、予め取り決めておいた順位に位置する相手グループのメンバーの識別情報を取り出すことで、最終的にマッチング結果を取得する。ここで上述したメンバーAの例を用いて復号部170の復号処理を具体的に説明する。受信部102は、図15a)に示す結果リストを受信したとする。なお結果リスト中の識別情報は中継用コンピュータ200bにおいて既に復号されており、これについては図16に関連して後述する。復号部170は、図14a)に示すメンバーAの並び替え情報に従って、結果リスト中の識別情報を並び替える。並び替えの結果、復号部170は図15b)に示す結果リストを得る。予め利用者とサービス提供者との間で取り決められた位置を順位1とすると、復号部170は順位1に位置するIDをメンバーAとペアになった相手として取り出す。
図16を参照して、第4実施形態に係る中継用コンピュータ200bの機能構成を説明する。図16に示すように、第4実施形態に係る中継用コンピュータ200bは、図5に示す中継用コンピュータ200aの機能構成に加えて、共通暗号化鍵生成部240、共通暗号化鍵格納領域250、マッチング情報暗号化部255、マッチング結果復号部260を含む。このように第4実施形態では、ハードディスクドライブ440のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、中継用コンピュータ200bを、受信部205、マッチング情報一時格納部210、宛先情報抽出部215、格納部245、共通暗号化鍵生成部240、マッチング情報暗号化部255、送信部225、マッチング結果一時格納部230、マッチング結果復号部260、及び宛先情報決定部235として機能させる。格納部245また、宛先情報格納領域220と共通暗号化鍵格納領域250とを含む。上記各格納部としては、一例としてHDD440を利用できる。なお、図16では宛先情報格納領域220と共通暗号化鍵格納領域250は便宜上同じ1つの格納部245内の領域として示しているが、現実には物理的に異なる複数の記憶装置の領域としてよい。以下では新たに追加された構成要素を主として説明する。また第4実施形態においても、中継用コンピュータ200bはサービス提供者からサービス利用者の宛先情報を隠しサービス利用者の宛先情報を管理するものであるため、好ましくはまとめ役として選ばれたサービス利用者のコンピュータによって実現される。
受信部205は、各利用者用コンピュータ100bから、マッチング情報のセットを受信する。中継用コンピュータ200bにおいて受信されるマッチング情報のセットには、本人の宛先情報、本人の識別情報、相手グループのメンバーの識別情報を本人の優先度順に並べたものを本人が保持する並び替え情報に従って並べ替えた優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報が含まれる。宛先情報抽出部215は、マッチング情報一時格納部210から読み出したマッチング情報のセットから本人の宛先情報を抽出し、本人の識別情報に関連付けて宛先情報格納部220へ格納する。
共通暗号化鍵生成部240は、2つのグループの全メンバーに共通な共通暗号化鍵を生成する。なお、生成される共通暗号化鍵は、図4の共通暗号化鍵生成部180が生成する共通暗号化鍵と同じであるため、ここでは説明を省略する。共通暗号化鍵格納領域250は共通暗号化鍵生成部240が生成した共通暗号化鍵を格納する。マッチング情報暗号化部255は、宛先情報抽出部215から宛先情報が抽出された各メンバーのマッチング情報のセットを受け取り、本人の識別情報と優先度リストとを取り出す。そしてマッチング情報暗号化部255は、共通暗号化鍵格納領域250から読み出した共通暗号化鍵で、優先度リスト中のメンバーの識別情報と本人の識別情報とを暗号化する。ここで上述したメンバーAの例を用いてマッチング情報暗号化部255の暗号化処理を具体的に説明する。マッチング情報暗号化部255は、受信した図14d)に示す識別情報を並び替えた後のメンバーAの優先度リストに対し、リスト中の識別情報を共通暗号化鍵Kで暗号化する。結果、マッチング情報暗号化部255は、図14e)に示す優先度リストを得る。
送信部225は、マッチング情報暗号化部255から各メンバーの処理済のマッチング情報のセット、すなわち、共通暗号化鍵で暗号化された本人の識別情報、相手グループのメンバーの識別情報が共通暗号化鍵で暗号化されている優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報のセットを受け取り、サービス提供者用コンピュータ300bへ送信する。
受信部205はまた、サービス提供者用コンピュータ300bから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報、及び本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストであって、識別情報を更に本人の逆並び替え情報に基づいて並べ替えた結果リストを含むマッチング結果情報のセットを受信する。
マッチング結果復号部260は、マッチング結果一時格納部230からマッチング結果情報のセットを受け取り、本人の識別情報と結果リストを取り出す。そして、マッチング結果復号部260は共通暗号化鍵格納領域250から読み出した共通暗号化鍵で、本人の識別情報と結果リスト中のメンバーの識別情報とを復号する。ここで上述したメンバーAの例を用いてマッチング結果復号部260の復号処理を具体的に説明する。マッチング結果復号部260は、図15d)に示す結果リストを受信したとする。なお結果リスト中の識別情報はサービス提供者用コンピュータ300bにおいて並び替えられており、これについては図17に関連して後述する。マッチング結果復号部260は、図15d)に示す結果リストに対し、リスト中の識別情報を共通暗号化鍵で復号する。結果、マッチング情報暗号化部255は、図15a)に示す結果リストを得る。宛先情報決定部235は、結果リストの宛先を、当該結果リストと同じマッチング結果情報のセットに含まれる本人の識別情報IDを索引として宛先情報格納部220から読み出す。送信部225は、宛先情報決定部235が読み出した宛先情報の利用者のコンピュータ100bへ、処理済のマッチング結果を送信する。
図17は、第4実施形態に係るサービス提供者用コンピュータ300bの機能構成を示す。図17に示すように、第4実施形態に係るサービス提供者用コンピュータ300bの構成要素は、図6に示すサービス提供者用コンピュータ300aの構成要素と同じである。従って第4実施形態においても、ハードディスクドライブ440のハードディスクに格納されたサービス提供者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、サービス提供者用コンピュータ300bを、受信部310、マッチング情報格納部320、復号鍵格納部330、リスト復号部340、加工情報復号部350、マッチング実行部360、加工部370、マッチング結果格納部380、及び送信部390として機能させる。また上記各格納部としては、一例としてHDD440を利用できる。
しかしながら本実施形態では、サービス提供者用コンピュータ300bにおいて受信される優先度リストは、第1乃至第3実施形態とは異なり、その優先度順が各メンバーの利用者用コンピュータのみが保持する並び替え情報に従って並べ替えられている。また、マッチング結果を加工する加工情報は各メンバーの優先度リストの優先度順の並べ替えを元に戻す逆並べ替え情報である。そのため、リスト復号部340と加工部370の詳細は図6を参照して説明したのと異なる。そこでここではリスト復号部340と加工部370を主として説明する。
本実施形態に係るリスト復号部340は、マッチング情報格納部320から読み出した各メンバーの優先度リストの優先度順を、加工情報復号部350が復号鍵格納部330から読み出したサービス提供者の公開鍵で復号した加工情報、すなわち各メンバーの逆並び替え情報に基づいて並び替えて元に戻すことで優先度リストを復号する。また本実施形態に係るマッチング実行部360は、共通暗号化鍵で暗号化された本人の識別情報に関連付けて、その本人とペアになった相手メンバーの識別情報と相手グループの残りの他のメンバーの識別情報とを加工部370へ渡す。ここで、相手グループのメンバーの識別情報はすべて共通暗号化鍵で暗号化されている。更にまた加工情報復号部350は、共通暗号化鍵で暗号化された本人の識別情報に関連付けて、その本人の復号された逆並び替え情報を加工部370へ渡す。
本実施形態に係る加工部370は、各メンバーについて、予め利用者とサービス提供者との間で取り決められた位置にペアになった相手メンバーの識別情報が位置するようにして、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報の結果リストを作成する。そして加工部370は、作成した各メンバーの結果リストの識別情報の並びを、それぞれ本人の逆並び替え情報に基づいて並び替える。最後に加工部370は、結果リストを共通暗号化鍵で暗号化された本人の識別情報と関連付けてマッチング結果格納部380に格納する。ここで上述したメンバーAの例を用いて加工部370の加工処理を具体的に説明する。マッチングの結果、マッチング実行部360が、enc_KC(IDA)のペアとしてenc_KC(IDG)を得たとする。また、予め利用者とサービス提供者との間で取り決められた位置は順位1とする。すると加工部370は、enc_KC(IDG)を順位1に置き、相手グループの残りのメンバーの識別情報を適当に並べて、図15c)に示すメンバーAの結果リストを作成する。次に加工部370は、この結果リストの識別情報を図14b)に示すメンバーAの逆並び替え情報に基づいて並び替え、最後に図15d)に示す逆並び替え後の結果リスト得る。
次に図18のフローチャートを参照して、第4実施形態に係るマッチング・サービスの提供の処理の流れの一例を説明する。まず、サービス提供者用コンピュータ300bは、公開鍵Kと秘密鍵Kの一組の鍵を生成し(ステップ700)、公開鍵Kをそのホームページ上などに公開する(ステップ705)。このとき秘密鍵Kはサービス提供者用コンピュータ300bの復号鍵格納部330に格納される。サービスを利用する2つのグループの各メンバーの利用者コンピュータ100bは公開鍵Kをダウンロードするなどして入手し、暗号化鍵格納領域125に格納する(ステップ710)。
まとめ役の利用者の利用者用コンピュータ100bは、メンバーとその識別情報IDの対応関係を示す識別表を作成する(ステップ715)。そして、まとめ役の利用者の利用者用コンピュータ100bは、作成した識別表を各メンバーの利用者用コンピュータ100bへ送信する(ステップ720)。各メンバーの利用者用コンピュータ100bは識別表を受信し、識別表格納領域115へ格納する(ステップ725)。なお、ここではまとめ役の利用者の利用者用コンピュータ100bが中継用コンピュータ200としての役割も果たすものとする。
利用者用コンピュータ100bは、利用者からキーボード等の入力装置を介して相手グループのメンバーの優先度情報を取得し、識別表格納領域115から読み出した識別表を使用して、相手メンバーの識別情報IDを利用者の優先度順に並べた優先度リストを作成する(ステップ730)。また利用者用コンピュータ100bは、優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報を生成し(ステップ735)、並び替え・逆並び替え情報格納領域190に格納する。そして利用者用コンピュータ100bは、優先度リストの優先度順を、並び替え・逆並び替え情報格納領域190から読み出した並び替え情報に従って並び替える(ステップ740)。
更に利用者用コンピュータ100bは、並び替え・逆並び替え情報格納領域190から読み出した逆並び替え情報を、暗号化鍵格納領域125から読み出したサービス提供者の公開鍵KPで暗号化する(ステップ745)。最後に利用者用コンピュータ100bは、宛先情報格納領域135から利用者本人の宛先情報を読み出し、利用者本人の識別情報、優先度順を並び替えた優先度リスト、サービス提供者の公開鍵KPで暗号化された逆並び替え情報と一緒にしてマッチング情報のセットを作成し、中継用コンピュータ200bへ送信する(ステップ750)。
中継用コンピュータ200bは、各メンバーの利用者用コンピュータ100bからマッチング情報のセットを受信する(ステップ755)。次に中継用コンピュータ200bは、受信した各メンバーのマッチング情報のセットから宛先情報を抽出し、本人の識別情報IDと関連付けて宛先情報格納領域220へ格納する(ステップ760)。また中継用コンピュータ200bは、共通暗号化鍵KCを生成し(ステップ765)、共通暗号化鍵格納領域250に格納する。そして中継用コンピュータ200bは、受信した各メンバーのセットについて、本人の識別情報ID及び本人の優先度リスト内の相手グループのメンバーの識別情報IDを、共通暗号化鍵格納領域250から読み出した共通暗号化鍵KCで暗号化する(ステップ770)。最後に中継用コンピュータ200bは、宛先情報が抽出された各メンバーの処理済のマッチング情報のセットを、サービス提供者用コンピュータ300bへ送信する(ステップ775)。
サービス提供者用コンピュータ300bは、各メンバーのマッチング情報のセットを受信し、マッチング情報格納部320に格納する(ステップ780)。またサービス提供者用コンピュータ300bは、復号鍵格納部330から読み出したサービス提供者の秘密鍵KSで、各メンバーの逆並び替え情報を復号する(ステップ785)。そしてサービス提供者用コンピュータ300bは、各メンバーの優先度リストの優先度順を、それぞれ各メンバーの逆並び替え情報に基づいて並び替え元の優先度順に戻す(ステップ790)。次にサービス提供者用コンピュータ300bは、本人の識別情報ID及び優先度リスト内の相手グループのメンバーの識別情報IDは共通暗号化鍵KCで暗号化された状態のままで、全メンバーについての本人の識別情報IDと優先度リストとに基づいて、2つのグループ間のマッチングを実行する(ステップ795)。なおマッチング結果であるペアになった相手の識別情報IDは、共通暗号化鍵Kで暗号化された状態で得られる。
そしてサービス提供者用コンピュータ300bは、各メンバーについて、本人とペアになった相手メンバーの識別情報IDが予め取り決められた順位に位置するようにして、共通暗号化鍵KCで暗号化された相手グループのメンバーの識別情報IDの結果リストを作成する。更にサービス提供者用コンピュータ300bは、作成した各メンバーの結果リストの識別情報IDの並びを、それぞれ各メンバーの逆並び替え情報に基づいて並べ替えることでマッチング結果を加工する(ステップ800)。最後にサービス提供者用コンピュータ300bは、共通暗号化鍵KCで暗号化された本人の識別情報IDと加工済みの本人の結果リストを含むマッチング結果情報のセットを中継用コンピュータ200bへ送信する(ステップ805)。
中継用コンピュータ200bは、各メンバーのマッチング結果情報のセットを受信する(ステップ810)。次に中継用コンピュータ200bは、共通暗号化鍵格納領域250から読み出した共通暗号化鍵Kで、各メンバーについて、本人の識別情報ID及び結果リスト内の相手グループのメンバーの識別情報IDを復号する(ステップ815)。そして中継用コンピュータ200bは、各メンバーのマッチング結果の宛先を、当該マッチング結果と同じマッチング結果情報のセットに含まれる本人の識別情報IDを索引として宛先情報格納領域220から読み出し(ステップ820)、読み出した宛先情報の利用者のコンピュータ100bへ処理済のマッチング結果を送信する(ステップ825)。
利用者用コンピュータ100bは、本人の処理済の結果リストを受信する(ステップ830)。そして、利用者用コンピュータ100bは、並び替え・逆並び替え情報格納領域190から読み出した並び替え情報に従って、受信した結果リスト中の相手グループのメンバーの識別情報IDの並びを並び替える。利用者用コンピュータ100bは、そうして得られた結果リストにおいて、予め取り決めておいた順位に位置するメンバーの識別情報IDを取り出すことにより、最終的にマッチング結果であるペアになった相手の識別情報を取得する(ステップ835)。
以上のように、第4実施形態によれば、優先度リスト内の相手グループのメンバーの識別情報は、中継用コンピュータ200bにおいて全メンバーに共通な共通暗号化鍵で暗号化される。また、マッチング結果である相手メンバーの識別情報も、中継用コンピュータ200bにおいて共通暗号化鍵で復号される。その結果、第4実施形態においては全メンバーの利用者用コンピュータ100bに共通暗号化鍵を配布する必要がなく、共通暗号化鍵の管理が容易になる。このことは、共通暗号化鍵の使用により優先度リストの内容やマッチング結果の秘匿性を維持するマッチング・サービスの安全性がより一層高まることを意味する。
(第5実施形態)第5実施形態では、第4実施形態と同様に優先度リスト中の各メンバーの識別情報は、中継用コンピュータ200cにおいて暗号化される。但し第5実施形態では第4実施形態と異なり、利用者用コンピュータ100cがマッチングのため用意する情報は、複数の中継用コンピュータ200cを介してサービス提供者用コンピュータ300cへ送信される。従って、第4実施形態では中継用コンピュータ200cは信頼できるコンピュータであることが前提となるが、本実施形態では少なくとも1つの中継用コンピュータ200cを信頼できればよい。なお、複数の中継用コンピュータ200cを介して情報が送信されることから、本実施形態ではより安全性を増すため、優先度リスト中の各メンバーの識別情報は利用者用コンピュータ100cにおいて異なる値に変換される。また、マッチング結果は、サービス提供者用コンピュータ300cにより当事者の利用者用コンピュータ100cにおいてのみ復号できる状態に加工された後公開される。
図19は、第5実施形態に係る利用者用コンピュータ100cの機能構成を示す。第5実施形態では、ハードディスクドライブ440のハードディスクに格納された利用者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出すことにより、利用者用コンピュータ100cを、受信部102、格納部105、優先度リスト作成部140、並び替え関数・並び替え逆関数選択部500、変換関数・変換逆関数選択部510、加工情報作成部520、第1適用部530、第2適用部535、暗号化部540、マッチング情報作成部160、送信部165、及び復号部545として機能させる。格納部105はまた、識別表格納領域115、並び替え関数・並び替え逆関数格納領域505、変換関数・変換逆関数格納領域515、暗号化鍵格納領域125、加工情報格納領域525を含む。なお、図19では各格納領域は便宜上同じ1つの格納部105内の領域として示されているが、現実には、例えばHDD440、FDドライブ480等の物理的に異なる複数の記憶装置の領域としてもよい。
本実施形態では、2つのグループのまとめ役として選ばれたメンバーは、各メンバーに識別情報を割り当てるものとする。そこでまとめ役の利用者の利用者用プログラムは、利用者用コンピュータ100bを更に、識別表作成部175として機能させる。なお、受信部102、識別表作成部175、識別表格納領域115、優先度リスト作成部140、暗号化鍵格納領域125は及びマッチング情報作成部160は、第1乃至第4実施形態で説明したのと基本的に同じであるのでここでは説明を省略する。但し本実施形態に係る暗号化鍵格納領域125にはサービス提供者の公開鍵だけでなく、複数の中継者の公開鍵も格納されるものとする。また本実施形態の識別表作成部175が各メンバーに割り当てる識別情報は次のようなものとする。p及びqをp-1がqの倍数である大きな素数であるとする。またZp*={0,…,p-1}における1のq乗根の一つをgとする(すなわち、gq≡1 mod p)。gを生成元として構成される位数qの群をGq={1,g,g2,…gq-1}とする。このとき、各メンバーに割り当てる識別情報SをGqの元とする。なお、以下の説明ではマッチングの参加者数をn人、中継用コンピュータ200cの数をt個とする。
並び替え関数・並び替え逆関数選択部500は、優先度リストの優先度順を並び替える並び替え関数と、当該並び替え関数に従う並び替えを元に戻す並び替え逆関数とを選択する。並び替え関数Aiは、恒等写像でない1対1写像であればどのようなものでもよい。上述したように並び替え関数の選択については、既存のアルゴリズムを利用してもよく、または利用者が直接並び替え方法をキーボードなどの入力装置を介して直接並び替えの方法を入力してもよい。選択された並び替え関数Ai、並び替え逆関数Ai -1は並び替え関数・並び替え逆関数格納領域505に格納される。なお以下では、並び替え関数Aiを優先度リストLiに適用した結果をAi=>Lと表記する。
変換関数・変換逆関数選択部510は、優先度リストLi=<x1,…,xn>の相手グループの各メンバーの識別情報xの値を異なる値に変換する変換関数と、当該変換関数に従う変換を元に戻す変換逆関数とを選択する。変換関数Biは、後述する各中継用コンピュータ200cにおいて選択される変換関数cj(j=1〜t)と順序を入れ替えても同一の結果が得られるもの、すなわちBicj=cjBiが成り立つものであればどのようなものでもよい。そのような変換関数Biの一例として、本実施例ではBi (x) = xk(i) mod pを選択する。ここでk(i)は、Zq={0,…,q-1}の要素である。この場合変換逆関数Bi -1は、k(i)’=1/k(i) mod qとすると、Bi -1=Xk(i)’mod pとなる。選択された変換関数Bi、変換逆関数Bi -1は変換関数・変換逆関数格納領域515に格納される。なお以下では、変換関数Biを優先度リストにリストされる各識別情報に適用した結果をBi=>Liと、更に並び替え関数Aiを適用した結果を、Ai, Bi=>Liと表記する。
加工情報作成部520は、マッチング結果を当事者の利用者用コンピュータ100cのみが復号できる状態に加工するためにサービス提供者用コンピュータ300cによって使用される加工情報を作成する。加工情報は、秘密鍵暗号化方式の暗号化鍵をサービス提供者用コンピュータ300cの公開鍵で暗号化したものでよい。しかし本実施例では、後述する各メンバーのマッチング情報のセットの列のシャッフルのため加工情報として次のようなものを採用する。すなわち加工情報は2つの値を含み、mi (0)=g、ni (0)=gv(i)mod pとする。ここでvは、Zq={0,…,q-1}の要素である。作成された加工情報mi (0)、ni (0)、p、g及びv(i)は加工情報格納領域525に格納され、加工情報mi (0)、ni (0)は、マッチング情報作成部160に渡される。なお以下に記載する加工情報mi等の括弧つきの上付き文字は、例えば値0は利用者用コンピュータにおける処理後の値であることを、値jは、j番目の中継用コンピュータにおける処理後の値であることを示す。
第1適用部530は、並び替え関数・並び替え逆関数格納領域505に格納された並び替え関数Aiを読み出し、優先度リスト作成部140から受け取った優先度リストLiに並び替え関数Aiを適用する。結果の優先度リストAi=>Liは第2適用部535に渡される。第2適用部535は、変換関数・変換逆関数格納領域515から変換関数Biを読み出し、第1適用部530から受け取った優先度リストAi=>Liに変換関数Biを適用する。第2適用部535はまた、識別表格納部115から本人の識別情報xiを読み出し、当該識別情報xiに変換関数Biを適用する。結果の優先度リストLi (0)=Ai, Bi=>Liと本人の識別情報Ii (0) =Bi (xi)はマッチング情報作成部160に渡される。
暗号化部540は、並び替え関数・並び替え逆関数格納領域505から読み出した並び替え逆関数Ai -1と、変換関数・変換逆関数格納領域515から読み出した変換逆関数Bi -1とを、暗号化鍵格納領域120から読み出した各中継用コンピュータ200cの公開鍵E(j)、及びサービス提供者用コンピュータ300cの公開鍵E(Q)で暗号化する。暗号化の順序は、各中継用コンピュータ200c及び提供者用コンピュータ300cが利用者用コンピュータ100cから情報を受信する順序と逆の順序である。すなわち暗号化部540は、並び替え逆関数Ai -1の暗号化の結果としてDi (0)= enc_KE(1) (…(enc_KE(t) (enc_KE(Q) (Ai -1)))…)を、変換逆関数Bi -1の暗号化の結果としてEi (0)= enc_KE(1)(… (enc_KE(t) (enc_KE(Q) (Bi -1)))…)を取得し、マッチング情報作成部160に渡す。なお実際は、変換逆関数Bi -1それ自体を暗号化するのでなく、逆関数を構成するパラメータ、ここではk(i)’やp、を暗号化する。以下では記載を簡単にするため逆関数を構成するパラメータを意味するものとして逆関数を用いる。
マッチング情報作成部160は、受け取った、本人の識別情報Ii (0)、優先度リストLi (0)、並び替え逆関Di (0)、変換逆関Ei (0)、加工情報mi (0)、ni (0)からマッチング情報のセットwi (0)を作成する。送信部165は、受け取ったマッチング情報のセットwi (0)を最初に情報を中継する中継用コンピュータ200cに送信する。
利用者用コンピュータ100cは、サービス提供者によりマッチング結果が公開されると、マッチング結果を取得する。一例として、サービス提供者は各メンバーの加工情報を用いて加工したマッチング結果をそのホームページに公開し、利用者はサービス提供者のホームページからマッチング結果をすべてダウンロードする。受信部102は受信したマッチング結果を復号部545に渡す。復号部545は、加工情報格納領域525から加工情報p、v(i)を読み出し、マッチング結果の復号を試みる。復号できた場合マッチング結果はその利用者に対するマッチング結果である。後述するように、本実施形態に係るマッチング結果には、提出した優先度リストにおけるペアとなった相手メンバーの優先順位と、ペアとなった相手メンバーに送られる暗号化鍵と同一の暗号化鍵が含まれる。利用者は、マッチング結果に含まれる暗号化鍵を用いてペアとなった相手メンバーと暗号化通信を試みることにより、当該通信がマッチングの結果に基づくものであることを確認できる。
図20を参照して、第5実施形態に係る各中継用コンピュータ200cの機能構成を説明する。第5実施形態では、ハードディスクドライブ440のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、中継用コンピュータ200cを、受信部205、マッチング情報一時格納部210、格納部245、変換関数選択部610、適用部620、復号部625、マッチング情報再編成部630、送信部225として機能させる。格納部245また、復号鍵格納領域605と変換関数格納領域615とを含む。上記各格納部としては、一例としてHDD440を利用できる。なお、図20では復号鍵格納領域605と変換関数格納領域615は便宜上同じ1つの格納部245内の領域として示しているが、現実には物理的に異なる複数の記憶装置の領域としてよい。なお、以下ではj番目に情報を中継する中継用コンピュータ200cについて説明する。
受信部205は、各利用者用コンピュータ100cから直接またはひとつ前のj-1番目の中継者用コンピュータ200cから各メンバーのマッチング情報のセットの列Rj-1=< w1 (j-1),w2 (j-1), …, wn (j-1)>を受信し、これをマッチング情報一時格納部210に一時的に格納する。各メンバーのマッチング情報のセットwi (j-1)には、本人の識別情報Ii (j-1)、優先度リストLi (j-1)、並び替え逆関数Di (j-1)、変換逆関数Ei (j-1)、加工情報mi (j-1)、ni (j-1)が含まれる。
復号鍵格納領域605は、利用者用コンピュータ100cにおいて予め取得される上述した中継者の公開鍵暗号化方式の公開鍵に対応する秘密鍵を格納する。なお、中継用コンピュータ200cは予め一組の鍵を生成しておき、暗号化に使用する方の鍵をそのホームページ上に公開するなどして、サービス利用者がいつでも中継者の暗号化鍵を入手できるようしておく。
変換関数選択部610は、受信した各メンバーの優先度リスト中の相手グループの各メンバーの識別情報の値を異なる値に変換する変換関数cjを選択する。変換関数cjは、上述したように各利用者用コンピュータ100cにおいて選択される変換関数Biと順序を入れ替えても同一の結果が得られるもの、すなわちBicj=cjBiが成り立つものであればどのようなものでもよい。そのような変換関数cjの一例として、本実施例ではcj (x) = xu(j)mod pを選択する。ここでu(j)は、Zq={0,…,q-1}の要素である。選択された変換関数cjは変換関数格納領域615に格納される。
適用部620は、各メンバーのマッチング情報のセットwi (j-1)について、マッチング情報一時格納部210から本人の識別情報Ii (j-1)と優先度リストLi (j-1)を読み出し、変換関数格納領域615から読み出した変換関数cjをそれぞれ適用する。適用した結果の本人の識別情報Ii (j) = cj(Ii (j-1))と優先度リストLi (j)=cj=>Li (j-1)はマッチング情報再編成部630に渡される。
復号部625は、各メンバーのマッチング情報のセットwi (j-1)について、マッチング情報一時格納部210から並び替え逆関数Di (j-1)= enc_KE(j) (…( enc_KE(t) (enc_KE(Q) (Ai-1)))…) と、変換逆関数Ei (j-1)= enc_KE(j) (…(enc_KE(t) (enc_KE(Q) (Bi -1)))…)を読み出し、復号鍵格納領域605から読み出した秘密鍵でそれぞれ復号する。復号した結果の並び替え逆関数Di (j)= enc_KE(j+1) (…(enc_KE(t) (enc_KE(Q) (Ai-1)))…)と変換逆関数Ei (j) =enc_KE(j+1) (…(enc_KE(t) (enc_KE(Q) (Bi -1)))…)は、マッチング情報再編成部630に渡される。
マッチング情報再編成部630は、各メンバーのマッチング情報のセットwi (j-1)について、マッチング情報一時格納部210から読み出したmi (j-1)とni (j-1)、適用部620から渡された本人の識別情報Ii (j)と優先度リストLi (j)、復号部625から渡された並び替え逆関数Di (j) 、変換逆関数Ei (j) を用いて、各メンバーのマッチング情報のセットを再編成し新しいマッチング情報のセットwi (j) を作成する。そしてマッチング情報再編成部630は、各メンバーの新たなマッチング情報のセットの列Rj=< w1 (j), w2 (j), …, wn (j)>を作成する。このときマッチング情報再編成部630は、受信したRj-1の要素wi (j-1)の並び順と送信するRjの要素wi (j)の並び順が異なるよう、各メンバーのマッチング情報のセットの列をランダムにシャッフルする。この結果、中継用コンピュータ200cの入出力がモニターされたとしても、マッチング情報のセットがどのメンバーのものであるか分らない。
なお、上記シャッフルが有効であるためには、中継者用コンピュータ200cが受信したRj-1の要素wi (j-1)と送信するRjの要素wi (j)は一部であっても同じであってはならない。例えばRj-1の3番目の要素w3 (j-1)がRjの5番目の要素w5 (j)に対応するとして、w3 (j-1)に含まれる情報とw5 (j)に含まれる情報が一部でも同じであれば、その同一の情報からRj-1の3番目の要素w3 (j-1)がRjの5番目の要素w5 (j)に対応することが分ってしまう。そこでマッチング情報再編成部630は、適当なh(j)(ここでh (j)は、Zq={0,…,q-1}の要素)を選択し、mi (j)= (mi (j-1))h(j)、 ni (j) = (ni (j-1)) h(j) を求める。以上よりマッチング情報再編成部630により作成される各メンバーのマッチング情報のセットwi (j)に含まれるのは、本人の識別情報Ii (j)、優先度リストLi (j) 、並び替え逆関数Di (j) 、変換逆関数Ei (j)、加工情報mi (j)、ni (j)である。
送信部225は、マッチング情報再編成部630から各メンバーのマッチング情報のセットの列Rjを受け取り、次の中継用コンピュータ200cへまたは当該中継用コンピュータ200cが最後の中継用コンピュータ200cである場合はサービス提供者用コンピュータ300cへ送信する。
図21は、第5実施形態に係るサービス提供者用コンピュータ300cの機能構成を示す。第5実施形態では、ハードディスクドライブ440のハードディスクに格納されたサービス提供者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出し、サービス提供者用コンピュータ300cを、受信部310、マッチング情報格納部320、復号鍵格納部700、逆関数復号部705、第1適用部710、第2適用部715、マッチング実行部360、鍵生成部720、加工部370、マッチング結果格納部380、及び送信部390として機能させる。また上記各格納部としては、一例としてHDD440を利用できる。
受信部は、最後のt番目の中継用コンピュータ200cから、各メンバーのマッチング情報のセットの列Rt=< w1 (t), w2 (t), …, wn (t)>を受信し、これをマッチング情報格納部320に格納する。各メンバーのマッチング情報のセットwi (t)には、本人の識別情報Ii (t)、優先度リストLi (t)、並び替え逆関数Di (t)、変換逆関数Ei (t)、加工情報mi (t)、ni (t)が含まれる。
復号鍵格納部700は、利用者用コンピュータ100cにおいて予め取得される上述したサービス提供者の公開鍵暗号化方式の公開鍵E(Q)に対応する秘密鍵を格納する。逆関数復号部705は、マッチング情報格納部320から各メンバーの並び替え逆関数Di (t)=enc_KE(Q) (Ai-1)と、変換逆関数Ei (t)= enc_KE(Q) (Bi -1)とを、本人の識別情報Ii (t) とともに読み出し、復号鍵格納部700から読み出した秘密鍵でそれぞれ復号する。逆関数復号部705は、復号した結果である変換逆関数Bi -1を本人の識別情報Ii (t)に対応付けて第1適用部710に渡す。同様に、逆関数復号部705は復号した結果である並び替え逆関数Ai-1を本人の識別情報Ii (t)に対応付けて第2適用部715に渡す。
第1適用部710は、逆関数復号部705から変換逆関数Bi -1と本人の識別情報Ii (t)とを受け取り、当該本人の識別情報Ii (t)に対応する優先度リストLi (t) をマッチング情報格納部320から読み出す。そして第1適用部710は、本人の識別情報Ii (t)と優先度リストLi (t)にリストされた各メンバーの識別情報に変換逆関数Bi -1をそれぞれ適用する。適用の結果本人の識別情報Ii (t)は、Bi -1(Ii (t)) = Bi -1(ct(…(c1(B(xi))…)) = ct(…(c1(xi)…)となる。また、優先度リストLi (t)は、Bi -1=> Li (t) = (Bi -1, ct ,…, c1)=>Li (0)= (Bi -1, ct,…, c1 , Ai, Bi) =>Li=(Ai, ct ,…, c1)=> Liとなる。第1適用部710は、得られた本人の識別情報ct(…(c1(xi)…)と優先度リスト( Ai, ct ,…, c1)=> Liとを、本人の識別情報Ii (t) に対応付けて第2適用部715に渡す。
第2適用部715は、第1適用部710から受け取った優先度リスト(Ai, ct ,…, c1)=>Liに、逆関数復号部705から受け取った対応する並び替え逆関数Ai-1を適用する。適用の結果、優先度リストLi’ =C=>Liを得る。ここでCはt個の中継用コンピュータ200cの変換関数の合成関数であり、C (x)=ct(…(c1(x)…)である。第2適用部715は、得られた優先度リストLi’と本人の識別情報C(xi)とを本人の識別情報Ii (t)に対応付けてマッチング実行部360へ渡す。
マッチング実行部360は、第2適用部715から受け取った、各メンバーの本人の識別情報C(xi)とその優先度リストLi’=<C(x1),…,C(xn)>とに基づいてマッチングを実行する。本人の識別情報と優先度リストに優先度順にリストされた相手グループの各メンバーの識別情報は、t個の中継用コンピュータ200cの変換関数の合成関数Cにより値を変換されているため、少なくとも1つの中継用コンピュータ200cを信頼できる限り、サービス提供者及び第三者にサービスの利用者や優先度リストの内容が漏れることはない。
その一方で、優先度リストLi’=<C(x1),…,C(xn)>の優先度順は、オリジナルの優先度リストLi=<x1,…,xn>の優先度順と同じであり、かつ合成関数Cは、C(xl)=C(xm)ならばxl = xmを満たすものである。従って、サービス提供者用コンピュータ300cは、各メンバーの本人の識別情報C(xi)と優先度リストLi’から上述したマッチングを実行することが可能である。マッチング実行部360は、マッチングの結果として、ペアとなった相手の優先度リストにおける優先順位を本人の識別情報Ii (t)に対応付けて加工部370へ渡す。
鍵生成部720は、互いに異なる複数の秘密鍵暗号化方式の秘密鍵をペアの数だけ生成し、加工部370へ渡す。本実施形態に係る加工部370は、マッチングにより求められたペアごとに、鍵生成部720から受け取った異なる秘密鍵を1つ選択する。そして加工部370は、選択した秘密鍵とマッチング結果を、そのペアとなったメンバーの識別情報に対応付けてマッチング情報格納部320に格納されている加工情報に基づいて、ペアとなったメンバーの利用者用コンピュータのみが復号できる状態に加工する。
例えばメンバーxlとメンバーxmがペアとなり、メンバーxlは、メンバーxmの優先度リストの3番目にリストされており、メンバーxmは、メンバーxlの優先度リストの1番目にリストされていたとする。すると加工部370は、メンバーxlとメンバーxmのペアに対し秘密鍵を1つ選択し、当該秘密鍵と1番という順位を、メンバーxlの識別情報Il (t) に対応付けてマッチング情報格納部320に格納されている加工情報ml (t)、nl (t) に基づいて、メンバーxlの利用者用コンピュータのみが復号できる状態に加工する。また加工部370は、上記秘密鍵と3番という順位を、メンバーxmの識別情報Im (t) に対応付けてマッチング情報格納部320に格納されている加工情報mm (t)、nm (t) に基づいて、メンバーxmの利用者用コンピュータのみが復号できる状態に加工する。なお、サービス提供者はペアとなった相手メンバーが誰であるかは分らないが、優先度リストの何番目にリストされているかは分る。
加工部370による加工の方法は次の通りである。まず、適当なs(i)(ここでs(i)は、Zq={0,…,q-1}の要素)を選択し、マッチング結果と選択した秘密鍵を暗号化する暗号化鍵Ki=(ni (t))s(i)=gv(i)s(i) h(1)...h(t)mod pを計算する。次にメンバーxiだけが暗号化鍵Kiを計算できるように、返信用秘密鍵(mi (t))s(i)=gs(i) h(1)...h(t) を計算する。各メンバーxiは、p及びv(i)を知っているため、返信用秘密鍵(mi (t))s(i) から、((mi (t))s(i))v(i) mod pを計算することにより暗号化鍵Kiを求めることができる。そして加工部370は、各メンバーxiについて、マッチング結果と選択した秘密鍵を暗号化鍵Kiで暗号化し、これを返信用秘密鍵(mi (t))s(i)と関連付けてマッチング結果格納部380を介して送信部390へ渡す。
送信部390は加工部370から受け取った返信用秘密鍵(mi (t))s(i) と、暗号化鍵Kiで暗号化されたマッチング結果及び秘密鍵とを、互いに関連付けてサービス提供者のホームページ等で公開するために、サーバへ送信する。
次に図22のフローチャートを参照して、第5実施形態に係るマッチング・サービスの提供の処理の流れの一例を説明する。前処理として、各中継者用コンピュータ200cとサービス提供者用コンピュータ300cはそれぞれ公開鍵と秘密鍵の一組の鍵を生成して公開鍵を公開し、秘密鍵はそれぞれ復号鍵格納領域605、700に格納しておくものとする。一方、各利用者用コンピュータ100cはそれら複数の中継者の公開鍵とサービス提供者の公開鍵を入手し、暗号化鍵格納領域125に格納しておくものとする。
また、まとめ役の利用者の利用者用コンピュータ100cは、メンバーとその識別情報の対応関係を示す識別表を作成し、メンバーの利用者用コンピュータ100cはそれぞれ識別表を受信し、識別表格納領域115へ格納しておくものとする。
そして処理は開始し、まず利用者用コンピュータ100cは、利用者からキーボード等の入力装置を介して相手グループのメンバーの優先度情報を取得し、識別表格納領域115から読み出した識別表を使用して、相手メンバーの識別情報を利用者の優先度順に並べた優先度リストを作成する(ステップ1000)。また利用者用コンピュータ100cは、優先度リストの優先度順を並び替える並び替え関数と、並び替え情報に従う並び替えを元に戻す並び替え逆関数を選択し(ステップ1005)、並び替え関数・並び替え逆関数格納領域505に格納する。そして利用者用コンピュータ100cは、優先度リストの優先度順を、並び替え関数・並び替え逆関数格納領域505から読み出した並び替え関数に従って並び替える(ステップ1010)。
また利用者用コンピュータ100cは、優先度リスト中の相手グループの各メンバーの識別情報の値を異なる値に変換する変換関数と、変換関数に従う変換を元に戻す変換逆関数を選択し(ステップ1015)、変換関数・変換逆関数格納領域515に格納する。そして利用者用コンピュータ100cは、優先度リストの各メンバーの識別情報と本人の識別情報を、変換関数・変換逆関数格納領域515から読み出した変換関数に従って変換する(ステップ1020)。なお、上記優先度順の並び替えと識別情報の値の変換はどちらを先に行ってもよい。
次に利用者用コンピュータ100cは、並び替え関数・並び替え逆関数格納領域505から読み出した並び替え逆関数と、変換関数・変換逆関数格納領域515から読み出した変換逆関数とを、暗号化鍵格納領域125から読み出したサービス提供者の公開鍵と複数の中継者の複数の公開鍵で暗号化する(ステップ1025)。利用者用コンピュータ100cはまた、サービス利用者がマッチング結果を当事者の利用者用コンピュータ100cのみが復号できるような状態に加工するために使用する加工情報を作成する(ステップ1030)。
最後に利用者用コンピュータ100cは、処理済の利用者の識別情報、優先度リスト、及び変換逆関数並びに並び替え逆関数と、加工情報とを含むセットwi (0)を作成し、最初の中継用コンピュータ200bへ送信する(ステップ1035)。
j番目(j=1〜t)の中継用コンピュータ200cは、各メンバーの利用者用コンピュータ100cから直接に又はj-1番目の中継用コンピュータ200cを介して、各メンバーのマッチング情報のセットの列Rj-1=< w1 (j-1),w2 (j-1), …, wn (j-1)>を受信する(ステップ1040)。中継用コンピュータ200cは、受信した各メンバーのマッチング情報のセットwi (j-1) に含まれる本人の識別情報と優先度リスト中の相手グループの各メンバーの識別情報とを異なる値に変換する変換関数を選択し(ステップ1045)、それら識別情報の値を選択した変換関数を用いて変換する(ステップ1050)。
中継用コンピュータ200cはまた、受信した各メンバーのマッチング情報のセットwi (j-1)に含まれる各メンバーの変換逆関数及び並び替え逆関数を、復号鍵格納領域605から読み出した、本中継用コンピュータ200cの公開鍵に対応する秘密鍵で復号する(ステップ1055)。最後に中継用コンピュータ200cは、各メンバーについて、処理が終わった、本人の識別情報、優先度リスト、変換逆関数、並び替え逆関数と、加工情報とを含む新たなマッチング情報のセットwi (j)を作成する。そして中継用コンピュータ200cは、j+1番目の中継用コンピュータ200cへ又は本中継用コンピュータ200cが情報を中継する最後の中継用コンピュータ200cである場合はサービス提供者用コンピュータ300cへ、新たなマッチング情報のセットの列Rj=< w1 (j), w2 (j),…, wn (j)>を送信する(ステップ1060)。
ステップ960において中継用コンピュータ200cが送信する各メンバーのマッチング情報のセットの列Rj=< w1 (j), w2 (j),…, wn (j)>は、wi (j)の並び順が受信したRj-1におけるwi (j-1)の並び順と異なるようにランダムにシャッフルされていることが好ましい。この場合シャッフルが有効に機能するように、中継用コンピュータ200cは適切に加工情報を変換し、wi (j-1)に含まれる情報は一部であってもそのままwi (j)に含まれることがないようにする。
サービス提供者用コンピュータ300cは、複数の中継用コンピュータ200cを介して、各メンバーのマッチング情報のセットの列Rt=< w1 (t), w2 (t),…, wn (t)>を受信し、マッチング情報格納部320に格納する(ステップ1065)。受信時において各メンバーのマッチング情報のセットwi (t)に含まれる本人の識別情報と優先度リスト中の相手グループの各メンバーの識別情報は、同一メンバーの識別情報であっても異なる値を示す。これは、各中継用コンピュータ200cが選択した変換関数は、全メンバーの優先度リスト中の識別情報と本人の識別情報とに等しく適用されるが、各利用者用コンピュータ100cが選択した変換関数はその本人の優先度リスト中の識別情報とその本人の識別情報にのみ適用されるからである。
そこでサービス提供者用コンピュータ300cはまず、復号鍵格納部700から読み出したサービス提供者の秘密鍵で、各メンバーのマッチング情報のセットwi (t)に含まれる変換逆関数と並び替え逆関数を復号する(ステップ1070)。そしてサービス提供者用コンピュータ300cは、各メンバーのマッチング情報のセットwi (t)に含まれる本人の識別情報と優先度リスト中の相手グループの各メンバーの識別情報に、対応する変換逆関数を適用する(ステップ1075)。その結果各メンバーの優先度リスト中の識別情報及び本人の識別情報は、各メンバーが選択した変換関数による変換については元に戻されたため、同一の識別情報であれば同一の値を示す。その一方で、各メンバーの優先度リスト中の識別情報及び本人の識別情報は、各中継用コンピュータ200cがそれぞれ選択した複数の変換関数については変換された状態のままであるため、サービス提供者は優先度リストの内容を知ることはできない。
また、サービス提供者用コンピュータ300cは、各メンバーのマッチング情報のセットwi (t)に含まれる優先度リストに、対応する並び替え逆関数を適用する(ステップ1080)。その結果各メンバーの優先度リストの優先度順は各メンバーが決定した元の優先度順に戻される。なお変換逆関数の適用と、並び替え逆関数の適用の順番はどちらが先でもよい。
そしてサービス提供者用コンピュータ300cは、本人の識別情報の値及び優先度リスト中の相手グループの各メンバーの識別情報の値は各中継用コンピュータ200cが選択した変換関数により変換された状態のまま、全メンバーの本人の識別情報と優先度リストに基づいて2つのグループ間のマッチングを実行する(ステップ1085)。
次にサービス提供者用コンピュータ300cは、マッチングにより求められたペアごとに異なる暗号化鍵を生成する(ステップ1090)。暗号化鍵は秘密鍵暗号化方式の鍵でよい。そしてサービス提供者用コンピュータ300cは、生成した暗号化鍵とマッチングの結果を、ペアとなったメンバーの識別情報に対応付けてマッチング情報格納部320に格納されている加工情報に基づいて、そのメンバーの利用者用コンピュータ100cのみが復号できる状態に加工する(ステップ1095)。ここでマッチングの結果は、当事者の優先度リストにおける、ペアとなった相手グループのメンバーの優先順位である。
最後にサービス提供者用コンピュータ300cは、そのホームページに掲載するなどしてマッチング結果を各メンバーに公開するために、各メンバーの加工済みの暗号化鍵とマッチングの結果を公開サーバに送信する(ステップ1100)。
公開サーバによりマッチング結果が公開されると、利用者用コンピュータ100cは公開サーバに全てのマッチング結果を要求し、全てのマッチング結果を受信する(ステップ1105)。そして利用者用コンピュータ100cは、加工情報格納領域525から読み出した加工情報に基づいて、受信したマッチング結果の復号を1つずつ試みる(ステップ1110)。復号できたマッチング結果が、その利用者用コンピュータ100cのマッチング結果となる。
マッチング結果には、本人の優先度リストにおける、ペアとなった相手グループのメンバーの優先順位と、好ましくはペアとなった相手グループのメンバーのマッチング結果に含まれるのと同じ秘密鍵が含まれる。そこで利用者用コンピュータ100cは、復号できたマッチング結果に含まれる優先順位に位置する相手グループのメンバを自身の優先度リストから求め、ペアとなった相手と、マッチング結果に含まれる暗号化鍵を用いて、暗号化通信を試みる(ステップ1115)。
以上のように、第5実施形態によれば、利用者の優先度リスト内の相手グループのメンバーの識別情報は、等しく複数の中継用コンピュータ200bにおいて値を変換される。また、マッチング結果は本人のみが復号できるような状態に加工され公開される。従って、本実施形態では少なくとも1つの中継用コンピュータ200cを信頼できれば、優先度リストの内容やマッチング結果の秘匿性を維持することができ、マッチング・サービスの安全性がより一層高まる。
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。また本発明は、サプライヤーとバイヤー間のマッチングなどの取引相手の決定だけでなく、ゲームにおける対戦相手の決定、パーティでの席順の決定などマッチングでペアを決定し得るものであれば制限なく適用できる。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
本発明の1実施形態に係るマッチング・サービスを提供するためのシステム全体の構成の一例を示す図である。 本実施形態に係る利用者用コンピュータ100、中継用コンピュータ200、サービス提供者用コンピュータ300のハードウェア構成の一例を示す。 Gale−Shapleyのアルゴリズムに従ったマッチングの処理の流れの一例を示すフローチャートである。 第1乃至第3実施形態に係る利用者用コンピュータ100aの機能構成の一例を示す図である。 第1乃至第3実施形態に係る中継用コンピュータ200aの機能構成の一例を示す図である。 第1乃至第3実施形態に係るサービス提供者用コンピュータ300aの機能構成の一例を示す図である。 a)はメンバーとその識別情報の対応関係を示す識別表の一例を示す。b)はメンバーAの優先度情報の一例を示す。c)はメンバーAの優先度リストを示す。d)はリスト中の識別情報を暗号化した後のメンバーAの優先度リストを示す。 中継用コンピュータが保持する、各メンバーの宛先情報を示す表の一例を示す。 a)はサービス提供者用コンピュータが保持する、各メンバーのマッチング情報の一覧表の一例を示す。b)はサービス提供者用コンピュータが保持する、各メンバーのマッチング結果の一覧表の一例を示す。 第1乃至第3実施形態に係るマッチング・サービスの提供する処理の流れの一例を示すフローチャートを示す図である。 a)は第2実施形態に係るマッチング・サービスにおける利用者の優先度リストの一例を示す。b)は第2実施形態に係るマッチング・サービスにおける利用者の加工情報の一例を示す。 a)は第3実施形態に係るマッチング・サービスにおける利用者の優先度リストの一例を示す。b)は第3実施形態に係るマッチング・サービスにおける利用者の加工情報の一例を示す。 第4実施形態に係る利用者用コンピュータ100bの機能構成の一例を示す図である。 a)はメンバーAの並び替え情報の一例を示す。b)はa)に示す並び替え情報と対をなす逆並び替え情報の一例を示す。c)はメンバーAの優先度リストの一例を示す。d)はリスト中の識別情報を並び替えた後のメンバーAの優先度リストを示す。e)リスト中の識別情報を暗号化した後のメンバーAの優先度リストを示す。 a)識別情報復号後のメンバーAの結果リストの一例を示す。b)は順位並び替え後のメンバーAの結果リストの一例を示す。c)はメンバーAの結果リストの一例を示す。d)は順位逆並び替え後のメンバーAの結果リストの一例を示す。 第4実施形態に係る中継用コンピュータ200bの機能構成の一例を示す図である。 第4実施形態に係るサービス提供者用コンピュータ300bの機能構成の一例を示す図である。 第4実施形態に係るマッチング・サービスの提供する処理の流れの一例を示すフローチャートを示す図である。 第5実施形態に係る利用者用コンピュータ100cの機能構成の一例を示す図である。 第5実施形態に係る中継用コンピュータ200cの機能構成の一例を示す図である。 第5実施形態に係るサービス提供者用コンピュータ300cの機能構成の一例を示す図である。 第5実施形態に係るマッチング・サービスの提供する処理の流れの一例を示すフローチャートを示す図である。

Claims (18)

  1. サービス提供者用コンピュータ上で実行されるマッチング・サービスを提供するためのサービス提供者用プログラムであって、前記サービス提供者用コンピュータに、
    サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータを介して、前記2つのグループの各メンバーから、前記2つのグループの全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記セットを受信するステップと、
    受信した各メンバーの前記セットについて、前記優先度リスト及び前記加工情報を前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて、マッチング情報格納部に格納するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストを、前記サービス提供者の前記暗号化鍵に対応する前記サービス提供者用コンピュータが保持する復号鍵で復号するステップと、
    前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は前記共通暗号化鍵で暗号化された状態のまま、全メンバーの前記本人の識別情報及び復号された前記優先度リストに基づいて前記2つのグループ間のマッチングを実行するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記加工情報を、前記サービス提供者用コンピュータが保持する前記復号鍵で復号するステップと、
    各メンバーのマッチング結果を、各メンバーの復号された前記加工情報に基づいて、前記マッチング結果の当事者の利用者用コンピュータのみが復号できる状態にそれぞれ加工するステップと、
    前記共通暗号化鍵で暗号化された前記本人の識別情報及び加工済みの前記本人のマッチング結果を含むセットを、前記中継用コンピュータに送信するステップと、
    を実行させるサービス提供者用プログラム。
  2. 前記共通暗号化鍵は、前記2つのグループの各メンバーの利用者用コンピュータにおいて保持され、
    前記本人の識別情報に関連付けて格納される前記加工情報は、前記本人の利用者用コンピュータが保持する暗号化鍵と同じ鍵であり、
    前記加工するステップは、各メンバーに対し、前記共通暗号化鍵で暗号化されているペアになった相手メンバーの識別情報を、更に各メンバーの利用者用コンピュータが保持する前記暗号化鍵と同じ鍵で暗号化し、前記共通暗号化鍵で暗号化された各メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む、
    請求項1記載のサービス提供者用プログラム。
  3. 前記共通暗号化鍵は、前記2つのグループの各メンバーの前記利用者用コンピュータにおいて暗号化のために使用された後削除され、
    前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記加工情報は、相手グループの各メンバーの識別情報を、前記本人の利用者用コンピュータが保持する暗号化鍵で暗号化し、前記本人の優先度リストの優先度順に並べた暗号化済みリストであり、
    前記加工するステップは、各メンバーに対し、本人の前記暗号化済みリストから、前記本人の優先度リストにおける前記本人とペアになった相手メンバーの順位と同じ順位に位置する前記相手メンバーの識別情報を取り出し、前記共通暗号化鍵で暗号化された前記本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む、
    請求項1記載のサービス提供者用プログラム。
  4. 前記共通暗号化鍵は、前記2つのグループの各メンバーの前記利用者用コンピュータにおいて暗号化のために使用された後削除され、
    前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記加工情報は、前記本人の優先度リストの優先度順に、相手グループの各メンバーの利用者用コンピュータが保持する復号鍵に対応する暗号化鍵で前記本人の識別情報を暗号化し並べた暗号化済みリストであり、
    前記加工するステップは、各メンバーに対し、本人の前記暗号化済みリストから、前記本人の優先度リストにおける前記本人とペアになった相手メンバーの順位と同じ順位に位置する前記本人の識別情報を取り出し、前記共通暗号化鍵で暗号化された前記相手メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む、
    請求項1記載のサービス提供者用プログラム。
  5. 前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記優先度リストの優先度順は、前記本人の前記利用者用コンピュータが保持する並び替え情報に従って並べ替えられており、
    前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記加工情報は、前記本人の前記利用者用コンピュータが保持する前記並び替え情報に従う並べ替えを元に戻す逆並べ替え情報であり、
    前記サービス提供者用コンピュータが保持する前記復号鍵で復号するステップは、各メンバーの前記加工情報を前記サービス提供者用コンピュータが保持する前記復号鍵で復号し、結果得られる各メンバーの前記逆並べ替え情報に基づいて、各メンバーの前記優先度リストの優先度順をそれぞれ並び替えて元に戻すステップを含み、
    前記加工するステップは、各メンバーに対し、本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報の結果リストを作成し、作成した前記結果リスト中の識別情報を前記本人の前記逆並び替え情報に基づいて並べ替え、前記共通暗号化鍵で暗号化された前記本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む、
    請求項1記載のサービス提供者用プログラム。
  6. 前記共通暗号化鍵は、前記中継用コンピュータにおいて保持され、
    前記サービス提供者用コンピュータにおいて受信される、各メンバーの前記本人の識別情報及び前記優先度リスト中の前記相手グループの各メンバーの識別情報は、前記中継用コンピュータにより前記共通暗号化鍵で暗号化され、
    前記中継用コンピュータに送信される、各メンバーの前記共通暗号化鍵で暗号化された前記本人の識別情報及び前記本人の前記結果リスト中の前記共通暗号化鍵で暗号化された前記相手グループの各メンバーの識別情報は、前記中継用コンピュータにより前記共通暗号化鍵で復号される、
    請求項5記載のサービス提供者用プログラム。
  7. 前記サービス提供者が提供するマッチング・サービスは、安定マッチングを求めるサービスである、請求項1記載のサービス提供者用プログラム。
  8. サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータにネットワークを介して接続された、マッチング・サービスを提供するサービス提供者用コンピュータであって、
    前記中継用コンピュータを介して、前記2つのグループの各メンバーから、全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記セットを受信する受信部と、
    受信した各メンバーの前記セットに含まれる前記優先度リスト及び前記加工情報を、同じ前記セットに含まれる前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納するマッチング情報格納部と、
    前記サービス提供者の前記暗号化鍵に対応する復号鍵を格納した復号鍵格納部と、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストを、前記復号鍵格納部から読み出した前記復号鍵で復号するリスト復号部と、
    前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は前記共通暗号化鍵で暗号化された状態のまま、全メンバーの前記本人の識別情報及び復号された前記優先度リストに基づいて前記2つのグループ間のマッチングを実行するマッチング実行部と、
    前記マッチング情報格納部から読み出した各メンバーの前記加工情報を、前記復号鍵格納部から読み出した前記復号鍵で復号する加工情報復号部と、
    各メンバーのマッチング結果を、各メンバーの復号された前記加工情報に基づいて、前記マッチング結果の当事者の利用者用コンピュータのみが復号できる状態に加工する加工部と、
    前記共通暗号化鍵で暗号化された前記本人の識別情報及び加工済みの前記本人のマッチング結果を含むセットを、前記中継用コンピュータに送信する送信部と、
    を含むサービス提供用コンピュータ。
  9. サービス提供者用コンピュータにおいて、マッチング・サービスを提供する方法であって、
    サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータを介して、前記2つのグループの各メンバーから、全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記セットを受信手段により受信するステップと、
    受信した各メンバーの前記セットについて、前記優先度リスト及び前記加工情報を前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて、マッチング格納手段により格納するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストを、前記サービス提供者の前記暗号化鍵に対応する前記サービス提供者用コンピュータが保持する復号鍵でリスト復号手段により復号するステップと、
    前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は前記共通暗号化鍵で暗号化された状態のまま、全メンバーのセットの前記本人の識別情報及び復号された前記優先度リストに基づいて前記2つのグループ間のマッチングをマッチング実行手段により実行するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記加工情報を、前記サービス提供者用コンピュータが保持する前記復号鍵で加工情報復号手段により復号するステップと、
    各メンバーのマッチング結果を、各メンバーの復号された前記加工情報に基づいて、前記マッチング結果の当事者の利用者用コンピュータのみが復号できる状態に加工手段により加工するステップと、
    前記共通暗号化鍵で暗号化された前記本人の識別情報及び加工済みの前記本人のマッチング果を含むセットを、前記中継用コンピュータに送信手段により送信するステップと、
    を含むマッチング・サービスを提供する方法。
  10. サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ上で実行される、マッチング・サービスを提供するための中継用プログラムであって、前記中継用コンピュータに、
    各メンバーの利用者用コンピュータから、本人の宛先情報、全メンバーに共通な共通暗号化鍵で暗号化された前記本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第1セットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記第1セットを受信するステップと、
    受信した各メンバーの第1セットから、前記本人の宛先情報を抽出し、前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて宛先情報格納部に格納するステップと、
    前記本人の宛先情報が抽出された各メンバーの第1セットをサービス提供者用コンピュータへ送信するステップと、
    前記サービス提供者用コンピュータから、各メンバーについて、前記共通暗号化鍵で暗号化された本人の識別情報及び前記加工情報に基づいて加工された前記本人のマッチング結果を含む第2セットを受信するステップと、
    各メンバーについて、前記マッチング結果の宛先情報を、当該マッチング結果と同じ第2セットに含まれる前記共通暗号化鍵で暗号化された本人の識別情報を索引として前記宛先情報格納部から読み出し、読み出した宛先情報へ前記マッチング結果を送信するステップと、
    を実行させる中継用プログラム。
  11. サービス提供者が提供するマッチング・サービスを利用する利用者の利用者用コンピュータ上で実行される、マッチング・サービスを前記利用者に提供するための利用者用プログラムであって、前記利用者用コンピュータに、
    サービスを利用する2つのグループの各メンバーとその識別情報の対応関係を示す表及び全メンバーに共通な共通暗号化鍵を格納するステップと、
    相手グループのメンバーの識別情報を前記利用者の優先度順に並べた優先度リストを作成するステップと、
    前記優先度リスト中の前記相手グループのメンバーの識別情報及び前記利用者の識別情報を、前記共通暗号化鍵で暗号化するステップと、
    マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために前記サービス提供者によって使用される加工情報を、加工鍵を使って作成するステップと、
    前記優先度リスト及び前記加工情報を前記サービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップと、
    前記利用者の宛先情報、前記共通暗号化鍵で暗号化された前記利用者の識別情報、前記相手グループのメンバーの識別情報が前記共通暗号化鍵で暗号化されている前記利用者の優先度リスト、及び前記加工情報を含むセットであって、前記優先度リストおよび前記加工情報は前記サービス提供者の前記暗号化鍵で暗号化されている前記セットを、サービス提供者と前記利用者との間でやり取りされる情報を中継する中継用コンピュータへ送信するステップと、
    前記中継用コンピュータから、前記加工情報に基づいて加工された前記利用者のマッチング結果を受信するステップと、
    前記利用者のマッチング結果を、前記共通暗号化鍵及び前記加工鍵の少なくとも1つに基づいて復号するステップと、
    を実行させる利用者用プログラム。
  12. サービス提供者とサービスを利用する2つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ上で実行される、マッチング・サービスを提供するための中継用プログラムであって、前記中継用コンピュータに、
    各メンバーの利用者用コンピュータから、本人の宛先情報、前記本人の識別情報、相手グループのメンバーの識別情報を前記本人の優先度順に並べたものを更に前記本人が保持する並び替え情報に従って並べ替えた優先度リスト、及び前記サービス提供者の暗号化鍵で暗号化された、前記並び替え情報に従う並び替えを元に戻す逆並び替え情報を含む第1セットを受信するステップと、
    前記受信した各メンバーの第1セットから、前記本人の宛先情報を抽出し、前記本人の識別情報に関連付けて宛先情報格納部に格納するステップと、
    共通暗号化鍵を生成するステップと、
    前記受信した各メンバーの第1セットについて、前記本人の識別情報及び前記本人の優先度リスト中の前記相手グループのメンバーの識別情報を、前記共通暗号化鍵で暗号化するステップと、
    各メンバーについて、前記共通暗号化鍵で暗号化された前記本人の識別情報、前記相手グループのメンバーの識別情報が前記共通暗号化鍵で暗号化されている前記優先度リスト、及び前記サービス提供者の前記暗号化鍵で暗号化された前記本人の逆並び替え情報を含む第2セットを、サービス提供者用コンピュータへ送信するステップと、
    前記サービス提供者用コンピュータから、各メンバーについて、前記共通暗号化鍵で暗号化された本人の識別情報、及び前記本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストを含む第3セットであって、前記結果リストの識別情報は更に前記本人の前記逆並び替え情報に基づいて並べ替えられている前記第3セットを受信するステップと、 前記受信した各メンバーの前記第3セットについて、前記共通暗号化鍵で暗号化された本人の識別情報及び前記結果リスト中の前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を、前記共通暗号化鍵で復号するステップと、
    各メンバーについて、前記結果リストの宛先情報を、当該結果リストと同じ第3セットに含まれる前記本人の識別情報を索引として前記宛先情報格納部から読み出し、読み出した宛先情報の利用者用コンピュータへ前記結果リストを送信するステップと、
    を実行させる中継用プログラム。
  13. サービス提供者用コンピュータ上で実行されるマッチング・サービスを提供するためのサービス提供者用プログラムであって、前記サービス提供者用コンピュータに、
    サービス提供者に送信される情報を中継する複数の中継用コンピュータを介して、サービスを利用する2つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第1変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第1変換関数により変換された相手グループの各メンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第1暗号化鍵により暗号化された、前記第1変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報は前記各中継用コンピュータにおいてそれぞれ1つずつ選択された、前記第1変換関数と可換な複数の第2変換関数により変換されている前記セットを受信するステップと、
    受信した前記各メンバーの前記セットについて、前記優先度リスト、前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータ、及び前記加工情報を前記本人の識別情報に関連付けてマッチング情報格納部に格納するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、前記サービス提供者の前記第1暗号化鍵に対応する前記サービス提供者用コンピュータが保持する第1復号鍵で復号するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記本人の識別情報に、前記変換逆関数を適用するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストに、前記変換 逆関数及び前記並び替え逆関数を適用するステップと、
    前記本人の識別情報及び前記優先度リスト中の前記相手グループの各メンバーの識別情報は複数の前記第2変換関数により変換された状態のまま、全メンバーの前記本人の識別情報及び前記優先度リストに基づいて前記2つのグループ間のマッチングを実行するステップと、
    マッチングにより求められたペアごとに異なる第2暗号化鍵を生成し、当該第2暗号化鍵とマッチングの結果を、前記ペアとなったメンバーの識別情報に対応付けて前記マッチング情報格納部に格納されている前記加工情報に基づいて、前記メンバーの利用者用コンピュータのみが復号できる状態に加工するステップと、
    前記各メンバーの加工済みの前記第2暗号化鍵と前記マッチング結果を前記各メンバーに返すためのネットワーク上における公開に備えてマッチング結果格納部に格納するステップと、
    を実行させるサービス提供者用プログラム。
  14. 前記マッチングの結果として各メンバーに返される情報は、当事者の前記優先度リストにおけるペアとなった相手メンバーの順位である、請求項に13記載のサービス提供者用プログラム。
  15. サービス利用者用コンピュータから送信される情報を中継する複数の中継用コンピュータにネットワークを介して接続された、マッチング・サービスを提供するサービス提供者用コンピュータであって、
    前記複数の中継用コンピュータを介して、サービスを利用する2つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第1変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第1変換関数により変換された相手グループのメンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第1暗号化鍵により暗号化された、前記第1変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報は前記各中継用コンピュータにおいてそれぞれ1つずつ選択された、前記第1変換関数と可換な複数の第2変換関数により変換されている前記セットを受信する受信部と、
    受信した前記各メンバーの前記セットに含まれる前記優先度リスト、前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータ、及び前記加工情報を、同じ前記セットに含まれる前記本人の識別情報に関連付けて格納するマッチング情報格納部と、
    前記サービス提供者用コンピュータの前記第1暗号化鍵に対応する第1復号鍵を格納する復号鍵格納部と、
    前記マッチング情報格納部から読み出した各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、前記復号鍵格納部から読み出した前記第1復号鍵で復号する復号部と、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストにリストされた相手グループの各メンバーの識別情報及び各メンバーの前記本人の識別情報に、前記変換逆関数を適用する第1適用部と、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストに、前記並び替え逆関数を適用する第2適用部と、
    前記本人の識別情報及び前記優先度リスト中の前記相手グループの各メンバーの識別情報は複数の前記第2変換関数により変換された状態のまま、全メンバーの前記本人の識別情報及び前記優先度リストに基づいて前記2つのグループ間のマッチングを実行するマッチング実行部と、
    マッチングにより求められたペアごとに異なる第2暗号化鍵を生成し、当該第2暗号化鍵とマッチング結果を、前記ペアとなったメンバーの識別情報に対応付けて前記マッチング情報格納部に格納されている前記加工情報に基づいて、前記メンバーの利用者用コンピュータのみが復号できる状態に加工する加工部と、
    前記各メンバーの加工済みの前記第2暗号化鍵と前記マッチング結果をネットワーク上における公開に備えて格納するマッチング結果格納部と
    を含むサービス提供用コンピュータ。
  16. サービス提供者用コンピュータにおいて、マッチング・サービスを提供する方法であって、
    サービス利用者から送信される情報を中継する複数の中継用コンピュータを介して、サービスを利用する2つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第1変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第1変換関数により変換された相手グループの各メンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第1暗号化鍵により暗号化された、前記第1変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報は前記各中継用コンピュータにおいてそれぞれ1つずつ選択され、前記第1変換関数と可換な複数の第2変換関数により変換されている前記セットを受信手段により受信するステップと、
    受信した前記各メンバーの前記セットについて、前記優先度リスト、前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータ、及び前記加工情報を前記本人の識別情報に関連付けてマッチング情報格納手段により格納するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、前記サービス提供者の前記第1暗号化鍵に対応する前記サービス提供者用コンピュータが保持する第1復号鍵で逆関数復号手段により復号するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記本人の識別情報に、前記変換逆関数を第1適用手段により適用するステップと、
    前記マッチング情報格納部から読み出した各メンバーの前記優先度リストに、前記変換逆関数及び前記並び替え逆関数を第2適用手段により適用するステップと、
    前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は複数の前記第2変換関数により変換された状態のまま、全メンバーの前記本人の識別情報及び前記優先度リストに基づいて前記2つのグループ間のマッチングをマッチング実行手段により実行するステップと、
    マッチングにより求められたペアごとに異なる第2暗号化鍵を選択し、当該第2暗号化鍵とマッチング結果を、前記ペアとなったメンバーの識別情報に対応付けて前記マッチング情報格納部に格納されている前記加工情報に基づいて、前記メンバーの利用者用コンピュータのみが復号できる状態に加工手段により加工するステップと、
    前記各メンバーの加工済みの前記第2暗号化鍵と前記マッチング結果をネットワーク上における公開に備えてマッチング結果格納手段により格納するステップと、
    を含むマッチング・サービスを提供する方法。
  17. サービスを利用する2つのグループの各メンバーの利用者用コンピュータからサービス提供者用コンピュータへ送信される情報を中継する複数の中継用コンピュータの各中継用コンピュータ上で実行される、マッチング・サービスを提供するための中継用プログラムであって、前記中継用コンピュータに、
    他の1以上の前記中継用コンピュータを介して、前記各メンバーの前記利用者用コンピュータから、前記利用者用コンピュータにおいて選択された第1変換関数及び前記他の1以上の中継用コンピュータにおいてそれぞれ1つずつ選択され、前記第1変換関数と可換な複数の第2変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第1変換関数及び前記複数の第2変換関数により変換された相手グループの各メンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第1暗号化鍵及び前記他の1以上の中継用コンピュータを除く残りの1以上の前記中継用コンピュータの第2暗号化鍵により暗号化された、前記第1変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第1セットを受信するステップと、
    受信した前記第1セットに含まれる前記各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、本中継用コンピュータの前記第2暗号化鍵に対応する前記本中継用コンピュータが保持する第2復号鍵で復号するステップと、
    受信した前記各メンバーの前記本人の識別情報及び前記優先度リストにリストされる前記相手グループのメンバーの識別情報を変換する、前記第1変換関数と可換な第3変換関数を選択するステップと、
    受信した前記第1セットに含まれる前記各メンバーの前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報を、選択した前記第3変換関数を用いて変換するステップと、
    受信した前記各メンバーの前記第1セットに対し、前記第3変換関数による変換後の前記本人の識別情報、前記優先度リスト及び前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータと、前記加工情報とを含む第2セットを作成し、前記サービス提供者用コンピュータ又は残りの前記中継用コンピュータの1つに送信するステップと、
    を実行させる中継用プログラム。
  18. サービス提供者が提供するマッチング・サービスを利用する利用者の利用者用コンピュータ上で実行される、マッチング・サービスを前記利用者に提供するための利用者用プログラムであって、前記利用者用コンピュータに、
    サービスを利用する2つのグループのうち相手グループの各メンバーの識別情報を前記利用者の優先度順に並べた優先度リストを作成するステップと、
    前記優先度リストの並び順を並び替える並び替え関数とその逆関数である並び替え逆関数を選択し、前記優先度リストに前記並び替え関数を適用するステップと、
    前記相手グループの各メンバーの識別情報及び前記利用者の識別情報を変換する変換関数とその逆関数である変換逆関数を選択し、前記優先度リストにリストされる各メンバーの識別情報及び前記利用者の識別情報に前記変換関数を適用するステップと、
    前記並び替え逆関数を構成するパラメータ及び前記変換逆関数を構成するパラメータを、前記サービス提供者の公開鍵及び前記サービス提供者へ送信する情報を中継する複数の中継用コンピュータの公開鍵で暗号化するステップと、
    マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために前記サービス提供者によって使用される加工情報を作成するステップと、
    前記処理済の前記利用者の識別情報、前記優先度リスト、及び前記変換逆関数を構成するパラメータ並びに前記並び替え逆関数を構成するパラメータと、前記加工情報とを含むセットを、前記複数の中継用コンピュータの1つに送信するステップと、
    前記サービス提供者が公開する、加工情報に基づき処理されたマッチングの結果を、前記加工情報に基づき復号するステップと、
    を実行させる利用者用プログラム。
JP2007107778A 2006-06-16 2007-04-17 マッチング・サービスを提供するための装置、方法及びプログラム Expired - Fee Related JP4256897B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007107778A JP4256897B2 (ja) 2006-06-16 2007-04-17 マッチング・サービスを提供するための装置、方法及びプログラム
US11/755,084 US7908374B2 (en) 2006-06-16 2007-05-30 Device, method and program for providing matching service
US12/129,858 US7962951B2 (en) 2006-06-16 2008-05-30 Device, method and program for providing matching service

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006167087 2006-06-16
JP2007107778A JP4256897B2 (ja) 2006-06-16 2007-04-17 マッチング・サービスを提供するための装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2008021295A JP2008021295A (ja) 2008-01-31
JP4256897B2 true JP4256897B2 (ja) 2009-04-22

Family

ID=38862828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007107778A Expired - Fee Related JP4256897B2 (ja) 2006-06-16 2007-04-17 マッチング・サービスを提供するための装置、方法及びプログラム

Country Status (2)

Country Link
US (2) US7908374B2 (ja)
JP (1) JP4256897B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4256897B2 (ja) * 2006-06-16 2009-04-22 インターナショナル・ビジネス・マシーンズ・コーポレーション マッチング・サービスを提供するための装置、方法及びプログラム
US8010782B2 (en) * 2008-01-18 2011-08-30 Sap Ag Method and system for mediated secure computation
EP2369477B1 (en) * 2010-02-22 2017-10-11 Telefonaktiebolaget LM Ericsson (publ) Technique for providing task priority related information intended for task scheduling in a system
JP5567414B2 (ja) 2010-06-30 2014-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報漏洩のリスクを極小化しながらデータを外部で保管できるようにデータを処理する方法
US8943331B2 (en) * 2012-12-28 2015-01-27 Alcatel Lucent Privacy-preserving database system
CN103235912B (zh) * 2013-04-12 2015-12-02 福建伊时代信息科技股份有限公司 可信进程识别装置和可信进程识别方法
CN104240012B (zh) * 2014-08-22 2018-03-13 武汉理工大学 基于物联网的电动汽车充电调度方法及系统
JP6318980B2 (ja) 2014-08-26 2018-05-09 富士通株式会社 データ配置プログラム、データ配置方法およびデータ配置装置
CN104346699A (zh) * 2014-11-06 2015-02-11 上海电机学院 临床医学毕业生就业匹配系统
JP6435939B2 (ja) * 2015-03-18 2018-12-12 富士通株式会社 データ分類プログラム、データ分類方法およびデータ分類装置
US11741220B2 (en) * 2020-08-14 2023-08-29 Nec Corporation Mining and integrating program-level context information into low-level system provenance graphs

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2048306A1 (en) * 1990-10-02 1992-04-03 Steven P. Miller Distributed configuration profile for computing system
US7890581B2 (en) * 1996-12-16 2011-02-15 Ip Holdings, Inc. Matching network system for mobile devices
GB2329499B (en) * 1997-09-19 2001-05-30 Ibm Method for controlling access to electronically provided services and system for implementing such method
WO2000016209A1 (en) * 1998-09-15 2000-03-23 Local2Me.Com, Inc. Dynamic matchingtm of users for group communication
US6795860B1 (en) * 1999-04-05 2004-09-21 Cisco Technology, Inc. System and method for selecting a service with dynamically changing information
JP3540698B2 (ja) 1999-12-22 2004-07-07 日本電信電話株式会社 パケットスケジューリング方式及び方法及びこの方法を実行するプログラムを記録した記録媒体。
US7240202B1 (en) * 2000-03-16 2007-07-03 Novell, Inc. Security context sharing
US6816907B1 (en) * 2000-08-24 2004-11-09 International Business Machines Corporation System and method for providing differentiated services on the web
US6678793B1 (en) * 2000-09-27 2004-01-13 International Business Machines Corporation User-based selective cache content replacement technique
JP4294879B2 (ja) * 2001-02-05 2009-07-15 株式会社日立製作所 サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム
US7120691B2 (en) * 2002-03-15 2006-10-10 International Business Machines Corporation Secured and access controlled peer-to-peer resource sharing method and apparatus
JP3977197B2 (ja) 2002-08-16 2007-09-19 三井住友海上火災保険株式会社 個人情報管理サーバ及びプログラム
US7587491B2 (en) * 2002-12-31 2009-09-08 International Business Machines Corporation Method and system for enroll-thru operations and reprioritization operations in a federated environment
GB2398713B (en) * 2003-02-22 2005-11-30 Hewlett Packard Development Co Limiting service provision to group members
JP4395611B2 (ja) 2003-10-28 2010-01-13 独立行政法人情報通信研究機構 暗号化データベース検索装置および方法ならびに暗号化データベース検索プログラム
JP2005141401A (ja) 2003-11-05 2005-06-02 Mitsubishi Electric Corp 双方向マッチングシステムおよび双方向マッチングプログラム
JP2005182275A (ja) 2003-12-17 2005-07-07 Suntory Shopping Club Ltd データ管理方法
US7461149B2 (en) * 2004-01-13 2008-12-02 International Business Machines Corporation Ordering provisioning request execution based on service level agreement and customer entitlement
US7549054B2 (en) * 2004-08-17 2009-06-16 International Business Machines Corporation System, method, service method, and program product for managing entitlement with identity and privacy applications for electronic commerce
JP4121132B2 (ja) * 2005-01-04 2008-07-23 インターナショナル・ビジネス・マシーンズ・コーポレーション サービス処理割当装置、制御方法、及びプログラム
US7672440B2 (en) * 2005-01-20 2010-03-02 International Business Machines Corporation Single point of contact personal communication system
US7793333B2 (en) * 2005-06-13 2010-09-07 International Business Machines Corporation Mobile authorization using policy based access control
US7496566B2 (en) * 2005-08-03 2009-02-24 Intenational Business Machines Corporation Priority based LDAP service publication mechanism
JP4256897B2 (ja) * 2006-06-16 2009-04-22 インターナショナル・ビジネス・マシーンズ・コーポレーション マッチング・サービスを提供するための装置、方法及びプログラム
US7805529B2 (en) * 2006-07-14 2010-09-28 International Business Machines Corporation Method and system for dynamically changing user session behavior based on user and/or group classification in response to application server demand
US9135322B2 (en) * 2006-09-18 2015-09-15 Emc Corporation Environment classification
US7765312B2 (en) * 2007-03-12 2010-07-27 Telefonaktiebolaget L M Ericsson (Publ) Applying policies for managing a service flow

Also Published As

Publication number Publication date
US7908374B2 (en) 2011-03-15
JP2008021295A (ja) 2008-01-31
US20070294432A1 (en) 2007-12-20
US20080240445A1 (en) 2008-10-02
US7962951B2 (en) 2011-06-14

Similar Documents

Publication Publication Date Title
JP4256897B2 (ja) マッチング・サービスを提供するための装置、方法及びプログラム
US11100082B2 (en) Secure information retrieval and update
JP2008103936A (ja) 秘密情報管理装置および秘密情報管理システム
WO2006118171A1 (ja) 電子情報保存方法及び装置、電子情報分割保存方法及び装置、電子情報分割復元処理方法及び装置並びにそれらのプログラム
WO2015060157A1 (ja) 属性情報提供方法および属性情報提供システム
JP2004336702A (ja) データ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラム
JP2008527866A (ja) 識別情報に基づく暗号鍵方法及びデバイス
JP2008259139A (ja) 鍵管理システム及び鍵管理方法
AU2017231835A1 (en) Secure file sharing over multiple security domains and dispersed communication networks
Backes et al. Anonymous ram
JP4539952B2 (ja) 情報分散保管システム、その装置、プログラム及び記録媒体
JP2001211156A (ja) 共通鍵生成方法、共通鍵生成器、暗号通信方法、暗号通信システム及びプログラムを記録した記録媒体
JP2005141436A5 (ja)
JP5269984B2 (ja) 暗号鍵生成装置
JP6703706B2 (ja) 暗号文管理方法、暗号文管理装置及びプログラム
JP5396352B2 (ja) データ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラム
WO2010067660A1 (ja) 通信装置、通信方法及びプログラム
Thilagavathy et al. Cloud computing: A survey on security issues and DNA, ID-base cryptography
WO2022137668A1 (ja) データファイル暗号化送受信システム及びデータファイル暗号化送受信方法
JP6693503B2 (ja) 秘匿検索システム、サーバ装置、秘匿検索方法、検索方法、およびプログラム
JP2001211157A (ja) 秘密鍵登録方法、秘密鍵登録器、秘密鍵発行方法、暗号通信方法、暗号通信システム及び記録媒体
WO2013080290A1 (ja) データ分割装置およびデータ分割プログラム
Kaur et al. Implementation of DES and AES Cryptographic Algorithms in Accordance with Cloud Computing
WO2023243141A1 (ja) 連合学習システム及び連合学習方法
Sharma et al. An enhanced data storage technique on cloud computing

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080819

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090120

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090130

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees