(57)【要約】【課題】優先度リストの内容やマッチングの結果がサービス提供者や第三者に知られることのない、安全性の高いマッチング・サービスを提供する。【解決手段】サービス提供者用コンピュータは、中継用コンピュータを介してサービス利用者である２つのグループの各メンバーから、中継用コンピュータが復号できないように暗号化された、相手グループのメンバーＩＤを利用者の優先度順に並べた優先度リストと加工情報とを受信する。優先度リスト中のＩＤは全メンバーに共通な暗号化鍵で暗号化されており、サービス提供者用コンピュータは、優先度リストを復号するとリスト中のＩＤは暗号化された状態のまま、マッチングを実行する。サービス提供者用コンピュータは、加工情報を復号し、マッチング結果を加工情報に基づいて当事者のみが復号できる状態にして中継用コンピュータを介して各メンバーへ送信する。【選択図】  図１０
2008021295.tif 000002
【特許請求の範囲】
【請求項１】
サービス提供者用コンピュータ上で実行されるマッチング・サービスを提供するためのサービス提供者用プログラムであって、前記サービス提供者用コンピュータに、  
サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータを介して、前記２つのグループの各メンバーから、前記２つのグループの全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記セットを受信するステップと、
受信した各メンバーの前記セットについて、前記優先度リスト及び前記加工情報を前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて、マッチング情報格納部に格納するステップと、
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストを、前記サービス提供者の前記暗号化鍵に対応する前記サービス提供者用コンピュータが保持する復号鍵で復号するステップと、  
前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は前記共通暗号化鍵で暗号化された状態のまま、全メンバーの前記本人の識別情報及び復号された前記優先度リストに基づいて前記２つのグループ間のマッチングを実行するステップと、  
前記マッチング情報格納部から読み出した各メンバーの前記加工情報を、前記サービス提供者用コンピュータが保持する前記復号鍵で復号するステップと、
各メンバーのマッチング結果を、各メンバーの復号された前記加工情報に基づいて、前記マッチング結果の当事者の利用者用コンピュータのみが復号できる状態にそれぞれ加工するステップと、
前記共通暗号化鍵で暗号化された前記本人の識別情報及び加工済みの前記本人のマッチング結果を含むセットを、前記中継用コンピュータに送信するステップと、
を実行させるサービス提供者用プログラム。
【請求項２】
前記共通暗号化鍵は、前記２つのグループの各メンバーの利用者用コンピュータにおいて保持され、
前記本人の識別情報に関連付けて格納される前記加工情報は、前記本人の利用者用コンピュータが保持する暗号化鍵と同じ鍵であり、
前記加工するステップは、各メンバーに対し、前記共通暗号化鍵で暗号化されているペアになった相手メンバーの識別情報を、更に各メンバーの利用者用コンピュータが保持する前記暗号化鍵と同じ鍵で暗号化し、前記共通暗号化鍵で暗号化された各メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む、  
請求項１記載のサービス提供者用プログラム。
【請求項３】
前記共通暗号化鍵は、前記２つのグループの各メンバーの前記利用者用コンピュータにおいて暗号化のために使用された後削除され、
前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記加工情報は、相手グループの各メンバーの識別情報を、前記本人の利用者用コンピュータが保持する暗号化鍵で暗号化し、前記本人の優先度リストの優先度順に並べた暗号化済みリストであり、
前記加工するステップは、各メンバーに対し、本人の前記暗号化済みリストから、前記本人の優先度リストにおける前記本人とペアになった相手メンバーの順位と同じ順位に位置する前記相手メンバーの識別情報を取り出し、前記共通暗号化鍵で暗号化された前記本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む、
請求項１記載のサービス提供者用プログラム。  
【請求項４】
前記共通暗号化鍵は、前記２つのグループの各メンバーの前記利用者用コンピュータにおいて暗号化のために使用された後削除され、
前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記加工情報は、前記本人の優先度リストの優先度順に、相手グループの各メンバーの利用者用コンピュータが保持する復号鍵に対応する暗号化鍵で前記本人の識別情報を暗号化し並べた暗号化済みリストであり、
前記加工するステップは、各メンバーに対し、本人の前記暗号化済みリストから、前記本人の優先度リストにおける前記本人とペアになった相手メンバーの順位と同じ順位に位置する前記本人の識別情報を取り出し、前記共通暗号化鍵で暗号化された前記相手メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む、  
請求項１記載のサービス提供者用プログラム。  
【請求項５】
前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記優先度リストの優先度順は、前記本人の前記利用者用コンピュータが保持する並び替え情報に従って並べ替えられており、
前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納される前記加工情報は、前記本人の前記利用者用コンピュータが保持する前記並び替え情報に従う並べ替えを元に戻す逆並べ替え情報であり、
前記サービス提供者用コンピュータが保持する前記復号鍵で復号するステップは、各メンバーの前記加工情報を前記サービス提供者用コンピュータが保持する前記復号鍵で復号し、結果得られる各メンバーの前記逆並べ替え情報に基づいて、各メンバーの前記優先度リストの優先度順をそれぞれ並び替えて元に戻すステップを含み、
前記加工するステップは、各メンバーに対し、本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報の結果リストを作成し、作成した前記結果リスト中の識別情報を前記本人の前記逆並び替え情報に基づいて並べ替え、前記共通暗号化鍵で暗号化された前記本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む、  
請求項１記載のサービス提供者用プログラム。
【請求項６】
前記共通暗号化鍵は、前記中継用コンピュータにおいて保持され、
前記サービス提供者用コンピュータにおいて受信される、各メンバーの前記本人の識別情報及び前記優先度リスト中の前記相手グループの各メンバーの識別情報は、前記中継用コンピュータにより前記共通暗号化鍵で暗号化され、
前記中継用コンピュータに送信される、各メンバーの前記共通暗号化鍵で暗号化された前記本人の識別情報及び前記本人の前記結果リスト中の前記共通暗号化鍵で暗号化された前記相手グループの各メンバーの識別情報は、前記中継用コンピュータにより前記共通暗号化鍵で復号される、
請求項５記載のサービス提供者用プログラム。
【請求項７】
前記サービス提供者が提供するマッチング・サービスは、安定マッチングを求めるサービスである、請求項１記載のサービス提供者用プログラム。
【請求項８】
サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータにネットワークを介して接続された、マッチング・サービスを提供するサービス提供者用コンピュータであって、
前記中継用コンピュータを介して、前記２つのグループの各メンバーから、全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記セットを受信する受信部と、
受信した各メンバーの前記セットに含まれる前記優先度リスト及び前記加工情報を、同じ前記セットに含まれる前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて格納するマッチング情報格納部と、
前記サービス提供者の前記暗号化鍵に対応する復号鍵を格納した復号鍵格納部と、
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストを、前記復号鍵格納部から読み出した前記復号鍵で復号するリスト復号部と、
前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は前記共通暗号化鍵で暗号化された状態のまま、全メンバーの前記本人の識別情報及び復号された前記優先度リストに基づいて前記２つのグループ間のマッチングを実行するマッチング実行部と、
前記マッチング情報格納部から読み出した各メンバーの前記加工情報を、前記復号鍵格納部から読み出した前記復号鍵で復号する加工情報復号部と、
各メンバーのマッチング結果を、各メンバーの復号された前記加工情報に基づいて、前記マッチング結果の当事者の利用者用コンピュータのみが復号できる状態に加工する加工部と、
前記共通暗号化鍵で暗号化された前記本人の識別情報及び加工済みの前記本人のマッチング結果を含むセットを、前記中継用コンピュータに送信する送信部と、
を含むサービス提供用コンピュータ。
【請求項９】
サービス提供者用コンピュータにおいて、マッチング・サービスを提供する方法であって、
サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータを介して、前記２つのグループの各メンバーから、全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記セットを受信するステップと、
受信した各メンバーの前記セットについて、前記優先度リスト及び前記加工情報を前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて、マッチング情報格納部に格納するステップと、
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストを、前記サービス提供者の前記暗号化鍵に対応する前記サービス提供者用コンピュータが保持する復号鍵で復号するステップと、  
前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は前記共通暗号化鍵で暗号化された状態のまま、全メンバーのセットの前記本人の識別情報及び復号された前記優先度リストに基づいて前記２つのグループ間のマッチングを実行するステップと、  
前記マッチング情報格納部から読み出した各メンバーの前記加工情報を、前記サービス提供者用コンピュータが保持する前記復号鍵で復号するステップと、
各メンバーのマッチング結果を、各メンバーの復号された前記加工情報に基づいて、前記マッチング結果の当事者の利用者用コンピュータのみが復号できる状態に加工するステップと、
前記共通暗号化鍵で暗号化された前記本人の識別情報及び加工済みの前記本人のマッチング結果を含むセットを、前記中継用コンピュータに送信するステップと、
を含むマッチング・サービスを提供する方法。
【請求項１０】
サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ上で実行される、マッチング・サービスを提供するための中継用プログラムであって、前記中継用コンピュータに、  
各メンバーの利用者用コンピュータから、本人の宛先情報、全メンバーに共通な共通暗号化鍵で暗号化された前記本人の識別情報、前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を前記本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第１セットであって、前記優先度リスト及び前記加工情報は前記サービス提供者の暗号化鍵で暗号化されている前記第１セットを受信するステップと、
受信した各メンバーの第１セットから、前記本人の宛先情報を抽出し、前記共通暗号化鍵で暗号化された前記本人の識別情報に関連付けて宛先情報格納部に格納するステップと、
前記本人の宛先情報が抽出された各メンバーの第１セットをサービス提供者用コンピュータへ送信するステップと、
前記サービス提供者用コンピュータから、各メンバーについて、前記共通暗号化鍵で暗号化された本人の識別情報及び前記加工情報に基づいて加工された前記本人のマッチング結果を含む第２セットを受信するステップと、
各メンバーについて、前記マッチング結果の宛先情報を、当該マッチング結果と同じ第２セットに含まれる前記共通暗号化鍵で暗号化された本人の識別情報を索引として前記宛先情報格納部から読み出し、読み出した宛先情報へ前記マッチング結果を送信するステップと、
を実行させる中継用プログラム。
【請求項１１】
サービス提供者が提供するマッチング・サービスを利用する利用者の利用者用コンピュータ上で実行される、マッチング・サービスを前記利用者に提供するための利用者用プログラムであって、前記利用者用コンピュータに、  
サービスを利用する２つのグループの各メンバーとその識別情報の対応関係を示す表及び全メンバーに共通な共通暗号化鍵を格納するステップと、
相手グループのメンバーの識別情報を前記利用者の優先度順に並べた優先度リストを作成するステップと、
前記優先度リスト中の前記相手グループのメンバーの識別情報及び前記利用者の識別情報を、前記共通暗号化鍵で暗号化するステップと、
マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために前記サービス提供者によって使用される加工情報を、加工鍵を使って作成するステップと、
前記優先度リスト及び前記加工情報を前記サービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップと、
前記利用者の宛先情報、前記共通暗号化鍵で暗号化された前記利用者の識別情報、前記相手グループのメンバーの識別情報が前記共通暗号化鍵で暗号化されている前記利用者の優先度リスト、及び前記加工情報を含むセットであって、前記優先度リストおよび前記加工情報は前記サービス提供者の前記暗号化鍵で暗号化されている前記セットを、サービス提供者と前記利用者との間でやり取りされる情報を中継する中継用コンピュータへ送信するステップと、
前記中継用コンピュータから、前記加工情報に基づいて加工された前記利用者のマッチング結果を受信するステップと、
前記利用者のマッチング結果を、前記共通暗号化鍵及び前記加工鍵の少なくとも１つに基づいて復号するステップと、
を実行させる利用者用プログラム。
【請求項１２】
サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ上で実行される、マッチング・サービスを提供するための中継用プログラムであって、前記中継用コンピュータに、    
各メンバーの利用者用コンピュータから、本人の宛先情報、前記本人の識別情報、相手グループのメンバーの識別情報を前記本人の優先度順に並べたものを更に前記本人が保持する並び替え情報に従って並べ替えた優先度リスト、及び前記サービス提供者の暗号化鍵で暗号化された、前記並び替え情報に従う並び替えを元に戻す逆並び替え情報を含む第１セットを受信するステップと、
前記受信した各メンバーの第１セットから、前記本人の宛先情報を抽出し、前記本人の識別情報に関連付けて宛先情報格納部に格納するステップと、
共通暗号化鍵を生成するステップと、
前記受信した各メンバーの第１セットについて、前記本人の識別情報及び前記本人の優先度リスト中の前記相手グループのメンバーの識別情報を、前記共通暗号化鍵で暗号化するステップと、
各メンバーについて、前記共通暗号化鍵で暗号化された前記本人の識別情報、前記相手グループのメンバーの識別情報が前記共通暗号化鍵で暗号化されている前記優先度リスト、及び前記サービス提供者の前記暗号化鍵で暗号化された前記本人の逆並び替え情報を含む第２セットを、サービス提供者用コンピュータへ送信するステップと、
前記サービス提供者用コンピュータから、各メンバーについて、前記共通暗号化鍵で暗号化された本人の識別情報、及び前記本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストを含む第３セットであって、前記結果リストの識別情報は更に前記本人の前記逆並び替え情報に基づいて並べ替えられている前記第３セットを受信するステップと、
前記受信した各メンバーの前記第３セットについて、前記共通暗号化鍵で暗号化された本人の識別情報及び前記結果リスト中の前記共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を、前記共通暗号化鍵で復号するステップと、
各メンバーについて、前記結果リストの宛先情報を、当該結果リストと同じ第３セットに含まれる前記本人の識別情報を索引として前記宛先情報格納部から読み出し、読み出した宛先情報の利用者用コンピュータへ前記結果リストを送信するステップと、
を実行させる中継用プログラム。
【請求項１３】
サービス提供者が提供するマッチング・サービスの利用者の利用者用コンピュータ上で実行される、マッチング・サービスを前記利用者に提供するための利用者用プログラムであって、前記利用者用コンピュータに、  
サービスを利用する２つのグループの各メンバーとその識別情報の対応関係を示す表を格納するステップと、
相手グループのメンバーの識別情報を前記利用者の優先度順に並べた優先度リストを作成するステップと、
前記優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報を生成するステップと、
前記優先度リストの優先度順を、前記並び替え情報に従って並び替えるステップと、
前記逆並び替え情報を前記サービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップと、
前記利用者の宛先情報、前記利用者の識別情報、優先度順を並び替えられた前記優先度リスト、及び前記サービス提供者の前記暗号化鍵で暗号化された前記逆並び替え情報を含むセットを、サービス提供者と前記利用者との間でやり取りされる情報を中継する中継用コンピュータへ送信するステップと、
前記中継用コンピュータから、ペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手のグループのメンバーの識別情報を含む結果リストであって、識別情報が前記逆並び替え情報に基づいて並び替えられた前記結果リストを受信するステップと、
前記結果リストを前記並び替え情報に従って並び替えた結果リストにおいて、前記予め取り決められた順位に位置する相手グループのメンバーの識別情報を取り出すステップと、
を実行させる利用者用プログラム。
【請求項１４】
サービス提供者用コンピュータ上で実行されるマッチング・サービスを提供するためのサービス提供者用プログラムであって、前記サービス提供者用コンピュータに、  
サービス提供者に送信される情報を中継する複数の中継用コンピュータを介して、サービスを利用する２つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第１変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第１変換関数により変換された相手グループの各メンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第１暗号化鍵により暗号化された、前記第１変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報は前記各中継用コンピュータにおいてそれぞれ１つずつ選択された、前記第１変換関数と可換な複数の第２変換関数により変換されている前記セットを受信するステップと、
受信した前記各メンバーの前記セットについて、前記優先度リスト、前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータ、及び前記加工情報を前記本人の識別情報に関連付けてマッチング情報格納部に格納するステップと、
前記マッチング情報格納部から読み出した各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、前記サービス提供者の前記第１暗号化鍵に対応する前記サービス提供者用コンピュータが保持する第１復号鍵で復号するステップと、  
前記マッチング情報格納部から読み出した各メンバーの前記本人の識別情報に、前記変換逆関数を適用するステップと、
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストに、前記変換逆関数及び前記並び替え逆関数を適用するステップと、
前記本人の識別情報及び前記優先度リスト中の前記相手グループの各メンバーの識別情報は複数の前記第２変換関数により変換された状態のまま、全メンバーの前記本人の識別情報及び前記優先度リストに基づいて前記２つのグループ間のマッチングを実行するステップと、  
マッチングにより求められたペアごとに異なる第２暗号化鍵を生成し、当該第２暗号化鍵とマッチングの結果を、前記ペアとなったメンバーの識別情報に対応付けて前記マッチング情報格納部に格納されている前記加工情報に基づいて、前記メンバーの利用者用コンピュータのみが復号できる状態に加工するステップと、
前記各メンバーの加工済みの前記第２暗号化鍵と前記マッチング結果を公開するステップと、
を実行させるサービス提供者用プログラム。
【請求項１５】
前記マッチングの結果として各メンバーに返される情報は、当事者の前記優先度リストにおけるペアとなった相手メンバーの順位である、請求項に１４記載のサービス提供者用プログラム。
【請求項１６】
前記各メンバーは当該メンバーの利用者用コンピュータにおいて復号できた前記第２暗号化鍵を用いて前記ペアとなった相手メンバーと暗号化通信を試みる、請求項１４に記載のサービス提供者用プログラム。
【請求項１７】
サービス利用者用から送信される情報を中継する複数の中継用コンピュータにネットワークを介して接続された、マッチング・サービスを提供するサービス提供者用コンピュータであって、  
前記複数の中継用コンピュータを介して、サービスを利用する２つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第１変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第１変換関数により変換された相手グループのメンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第１暗号化鍵により暗号化された、前記第１変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報は前記各中継用コンピュータにおいてそれぞれ１つずつ選択された、前記第１変換関数と可換な複数の第２変換関数により変換されている前記セットを受信する受信部と、
受信した前記各メンバーの前記セットに含まれる前記優先度リスト、前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータ、及び前記加工情報を、同じ前記セットに含まれる前記本人の識別情報に関連付けて格納するマッチング情報格納部と、
前記サービス提供者用コンピュータの前記第１暗号化鍵に対応する第１復号鍵を格納する復号鍵格納部と、
前記マッチング情報格納部から読み出した各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、前記復号鍵格納部から読み出した前記第１復号鍵で復号する復号部と、  
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストにリストされた相手グループの各メンバーの識別情報及び各メンバーの前記本人の識別情報に、前記変換逆関数を適用する第１適用部と、
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストに、前記並び替え逆関数を適用する第２適用部と、  
前記本人の識別情報及び前記優先度リスト中の前記相手グループの各メンバーの識別情報は複数の前記第２変換関数により変換された状態のまま、全メンバーの前記本人の識別情報及び前記優先度リストに基づいて前記２つのグループ間のマッチングを実行するマッチング実行部と、  
マッチングにより求められたペアごとに異なる第２暗号化鍵を生成し、当該第２暗号化鍵とマッチング結果を、前記ペアとなったメンバーの識別情報に対応付けて前記マッチング情報格納部に格納されている前記加工情報に基づいて、前記メンバーの利用者用コンピュータのみが復号できる状態に加工する加工部と、
前記各メンバーの加工済みの前記第２暗号化鍵と前記マッチング結果を公開するため送信する送信部と、
を含むサービス提供用コンピュータ。
【請求項１８】
サービス提供者用コンピュータにおいて、マッチング・サービスを提供する方法であって、
サービス利用者から送信される情報を中継する複数の中継用コンピュータを介して、サービスを利用する２つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第１変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第１変換関数により変換された相手グループの各メンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第１暗号化鍵により暗号化された、前記第１変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報は前記各中継用コンピュータにおいてそれぞれ１つずつ選択され、前記第１変換関数と可換な複数の第２変換関数により変換されている前記セットを受信するステップと、
受信した前記各メンバーの前記セットについて、前記優先度リスト、前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータ、及び前記加工情報を前記本人の識別情報に関連付けてマッチング情報格納部に格納するステップと、
前記マッチング情報格納部から読み出した各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、前記サービス提供者の前記第１暗号化鍵に対応する前記サービス提供者用コンピュータが保持する第１復号鍵で復号するステップと、  
前記マッチング情報格納部から読み出した各メンバーの前記本人の識別情報に、前記変換逆関数を適用するステップと、
前記マッチング情報格納部から読み出した各メンバーの前記優先度リストに、前記変換逆関数及び前記並び替え逆関数を適用するステップと、
前記本人の識別情報及び前記優先度リスト中の前記相手グループのメンバーの識別情報は複数の前記第２変換関数により変換された状態のまま、全メンバーの前記本人の識別情報及び前記優先度リストに基づいて前記２つのグループ間のマッチングを実行するステップと、  
マッチングにより求められたペアごとに異なる第２暗号化鍵を選択し、当該第２暗号化鍵とマッチング結果を、前記ペアとなったメンバーの識別情報に対応付けて前記マッチング情報格納部に格納されている前記加工情報に基づいて、前記メンバーの利用者用コンピュータのみが復号できる状態に加工するステップと、
前記各メンバーの加工済みの前記第２暗号化鍵と前記マッチング結果を公開するステップと、
を含むマッチング・サービスを提供する方法。
【請求項１９】
サービスを利用する２つのグループの各メンバーの利用者用コンピュータからサービス提供者用コンピュータへ送信される情報を中継する複数の中継用コンピュータの各中継用コンピュータ上で実行される、マッチング・サービスを提供するための中継用プログラムであって、前記中継用コンピュータに、  
他の１以上の前記中継用コンピュータを介して、前記各メンバーの前記利用者用コンピュータから、前記利用者用コンピュータにおいて選択された第１変換関数及び前記他の１以上の中継用コンピュータにおいてそれぞれ１つずつ選択され、前記第１変換関数と可換な複数の第２変換関数により変換された本人の識別情報、前記本人の優先度順に並べられ前記第１変換関数及び前記複数の第２変換関数により変換された相手グループの各メンバーの識別情報を前記利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、前記サービス提供者用コンピュータの第１暗号化鍵及び前記他の１以上の中継用コンピュータを除く残りの１以上の前記中継用コンピュータの第２暗号化鍵により暗号化された、前記第１変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第１セットを受信するステップと、
受信した前記第１セットに含まれる前記各メンバーの前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータを、本中継用コンピュータの前記第２暗号化鍵に対応する前記本中継用コンピュータが保持する第２復号鍵で復号するステップと、  
受信した前記各メンバーの前記本人の識別情報及び前記優先度リストにリストされる前記相手グループのメンバーの識別情報を変換する、前記第１変換関数と可換な第３変換関数を選択するステップと、
受信した前記第１セットに含まれる前記各メンバーの前記本人の識別情報及び前記優先度リストにリストされる前記相手グループの各メンバーの識別情報を、選択した前記第３変換関数を用いて変換するステップと、
受信した前記各メンバーの前記第１セットに対し、処理済の前記本人の識別情報、前記優先度リスト及び前記変換逆関数を構成するパラメータ及び前記並び替え逆関数を構成するパラメータと、前記加工情報とを含む第２セットを作成し、前記サービス提供者用コンピュータ又は残りの前記中継用コンピュータの１つに送信するステップと、
を実行させる中継用プログラム。
【請求項２０】
サービス提供者が提供するマッチング・サービスを利用する利用者の利用者用コンピュータ上で実行される、マッチング・サービスを前記利用者に提供するための利用者用プログラムであって、前記利用者用コンピュータに、  
サービスを利用する２つのグループのうち相手グループの各メンバーの識別情報を前記利用者の優先度順に並べた優先度リストを作成するステップと、
前記優先度リストの並び順を並び替える並び替え関数とその逆関数である並び替え逆関数を選択し、前記優先度リストに前記並び替え関数を適用するステップと、  
前記相手グループの各メンバーの識別情報及び前記利用者の識別情報を変換する変換関数とその逆関数である変換逆関数を選択し、前記優先度リストにリストされる各メンバーの識別情報及び前記利用者の識別情報に前記変換関数を適用するステップと、
前記並び替え逆関数を構成するパラメータ及び前記変換逆関数を構成するパラメータを、前記サービス提供者の公開鍵及び前記サービス提供者へ送信する情報を中継する複数の中継用コンピュータの公開鍵で暗号化するステップと、
マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために前記サービス提供者によって使用される加工情報を作成するステップと、
前記処理済の前記利用者の識別情報、前記優先度リスト、及び前記変換逆関数を構成するパラメータ並びに前記並び替え逆関数を構成するパラメータと、前記加工情報とを含むセットを、前記複数の中継用コンピュータの１つに送信するステップと、
前記サービス提供者が公開する、加工情報に基づき処理されたマッチングの結果を、前記加工情報に基づき復号するステップと、
を実行させる利用者用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マッチング・サービスを提供するための技術に関し、特に、サービスの利用者である２つのグループの各メンバーが相手グループのメンバーを順位付けした優先度リスト及びマッチングの結果の秘匿性を保つことができるようにする技術に関する。
【背景技術】
【０００２】
サプライヤーのグループとバイヤーのグループ、就職を希望する学生のグループと採用を希望する企業のグループなど、２つのグループの各メンバーがそれぞれ相手グループの特定のメンバーとペアとなることを希望する場合、自分がペアとなることを一番に希望する相手が同様に自分とペアになることを一番に希望するとは限らない。そのため、なるべく多くのメンバーがより好ましい相手とペアになるための方法として、２つのグループの各メンバーに相手グループのメンバーの順位付けを行わせ、各メンバーの優先度リストに基づいてグループ間でマッチングを行うことが知られている。特に、ＧａｌｅとＳｈａｐｌｅｙの論文で１９６２年に提唱された安定マッチング（非特許文献１参照。）を利用すれば、いわゆるブロッキングペアができることはない。
【０００３】
しかし、マッチングを行うためとはいえ、優先度リストの内容や自分のマッチング結果がグループ内の他のメンバーに知られるのは好ましくない。１つの解決策として、第三者がマッチング・サービスを提供することが考えられる。各メンバーは優先度リストをサービス提供者へ送り、サービス提供者は各メンバーの優先度リストに基づいてマッチングを行った後マッチング結果を当事者にのみ通知する。しかし、優先度リストやマッチング結果は、企業にとっては重要な機密情報であり、個人にとってもプライバシーにかかわる情報であるため、第三者に対してもその内容を秘密にしたいという要求がある。
【０００４】
秘匿したい情報を匿名で入手できるようにする従来技術として、情報提供機関と情報の提供を受けるユーザとの間に中継機関を設け、情報提供機関は中継機関を介してユーザに情報を提供し、中継機関で取り扱われる情報は中継機関が復号できないように暗号化する技術がある（特許文献１参照。）。
【０００５】
【非特許文献１】「Ｃｏｌｌｅｇｅ  Ａｄｍｉｓｓｉｏｎｓ  ａｎｄ  ｔｈｅ  Ｓｔａｂｉｌｉｔｙ  ｏｆ  Ｍａｒｒｉａｇｅ」、Ｄ．Ｇａｌｅ及びＬ．Ｓ．Ｓｈａｐｌｅｙ著、Ａｍｅｒｉｃａｎ  Ｍａｔｈｅｍａｔｉｃａｌ Ｍｏｎｔｈｌｙ、第６９巻、１９６２年、９−１４頁
【特許文献１】特開２００３−１８１４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記技術によってサービス提供者からユーザの宛先情報を隠してユーザが匿名で情報を取得できるようにしたとしても、サービス提供者に対しマッチングを行うために必要な優先度リストの内容まで秘密にすることはできず、また、各メンバーから集まった優先度リストから結局は利用者が誰であるかサービス提供者に分かってしまう。そこで、更に、各メンバーに適当なＩＤを割り当て、メンバーとＩＤの対応関係をグループ内のメンバーだけが知りえる情報とし、サービス提供者へはＩＤの優先度リストを送るようにすることが考えられる。
【０００７】
この場合、優先度リストの内容やマッチング結果の秘匿性を維持できるかどうかは、各メンバーにおけるメンバーとＩＤの対応関係を示す情報の管理にかかっている。そのためメンバーとＩＤの対応関係を示す情報が一旦グループ内から外へ漏れると、サービス提供者に優先度リストの内容やマッチングの結果、また利用者が誰であるかということが分かってしまう。更にサービス提供者のコンピュータがハッキングされた場合には情報漏洩範囲は第三者へと拡大する。しかしこのような事態を避けるために、グループの全メンバーにセキュリティ管理を徹底させることは難しい。
【０００８】
そこで本発明は、メンバーとそのＩＤの対応関係が外部に漏れるようなことがあっても、優先度リストの内容やマッチング結果がサービス提供者や第三者に知られることのない、安全性の高いマッチング・サービスを提供するための装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成する本発明は、次のようなサービス提供者用コンピュータ上で実行されるマッチング・サービスを提供するためのサービス提供者用プログラムによって実現される。なお本発明が扱うマッチング・サービスは、各メンバーが相手のグループのメンバーを優先度の高い順に順位付けた優先度リストをもつ、互いに素な２つのグループに対するマッチング・サービスである。このサービス提供者用プログラムは、サービス提供者用コンピュータに、次の（ａ）〜（ｇ）の各ステップを実行させる。
【００１０】
（ａ）サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータを介して、２つのグループの各メンバーから、２つのグループの全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、優先度リスト及び加工情報はサービス提供者の暗号化鍵で暗号化されている上記セットを受信するステップ。（ｂ）受信した各メンバーの上記セットについて、優先度リスト及び加工情報を共通暗号化鍵で暗号化された本人の識別情報に関連付けてマッチング情報格納部に格納するステップ。（ｃ）マッチング情報格納部から読み出した各メンバーの優先度リストを、サービス提供者の暗号化鍵に対応するサービス提供者用コンピュータが保持する復号鍵で復号するステップ。（ｄ）本人の識別情報及び優先度リスト中の相手グループのメンバーの識別情報は共通暗号化鍵で暗号化された状態のまま、全メンバーの本人の識別情報及び復号された優先度リストに基づいて２つのグループ間のマッチングを実行するステップ。（ｅ）マッチング情報格納部から読み出した各メンバーの加工情報を、サービス提供者用コンピュータが保持する復号鍵で復号するステップ。（ｆ）各メンバーのマッチング結果を、各メンバーの加工情報に基づいて、当事者の利用者用コンピュータのみが復号できる状態に加工するステップ。ｇ）共通暗号化鍵で暗号化された本人の識別情報及び加工済みの本人のマッチング結果を含むセットを、中継用コンピュータに送信するステップ。  
【００１１】
好適には、共通暗号化鍵は２つのグループの各メンバーの利用者用コンピュータにおいて保持される。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、本人の利用者用コンピュータが保持する暗号化鍵と同じ鍵である。そして、上記加工するステップ（ｆ）は、各メンバーに対し、共通暗号化鍵で暗号化されているペアになった相手メンバーの識別情報を、更に各メンバーの利用者用コンピュータが保持する暗号化鍵と同じ鍵で暗号化し、共通暗号化鍵で暗号化された各メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
【００１２】
また好適には、共通暗号化鍵は、２つのグループの各メンバーの利用者用コンピュータにおいて暗号化のために使用された後削除される。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、相手グループの各メンバーの識別情報を、本人の利用者用コンピュータが保持する暗号化鍵で暗号化し、本人の優先度リストの優先度順に並べた暗号化済みリストである。そして、加工するステップ（ｆ）は、各メンバーに対し、本人の暗号化済みリストから、各メンバーの優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する相手メンバーの識別情報を取り出し、共通暗号化鍵で暗号化された本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
【００１３】
また好適には、共通暗号化鍵は、２つのグループの各メンバーの利用者用コンピュータにおいて暗号化のために使用された後削除される。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、本人の優先度リストの優先度順に、相手グループの各メンバーの利用者用コンピュータが保持する復号鍵に対応する暗号化鍵で本人の識別情報を暗号化し並べた暗号化済みリストである。そして加工するステップ（ｆ）は、各メンバーに対し、本人の暗号化済みリストから、各メンバーの優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する本人の識別情報を取り出し、共通暗号化鍵で暗号化された上記相手メンバーの識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
【００１４】
また好適には、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される優先度リストの優先度順は、本人の利用者用コンピュータが保持する並び替え情報に従って並べ替えられている。また、共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納される加工情報は、本人の利用者用コンピュータが保持する並べ替え情報に従う並び替えを元に戻す逆並べ替え情報である。そして、サービス提供者用コンピュータが保持する復号鍵で復号する上記ステップ（ｃ）は、各メンバーの加工情報をサービス提供者用コンピュータが保持する復号鍵で復号し、結果得られる各メンバーの逆並べ替え情報に基づいて、各メンバーの優先度リストの優先度順を並び替えて元に戻すステップを含む。また、上記加工するステップ（ｆ）は、各メンバーに対し、本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報の結果リストを作成し、作成した結果リストを本人の逆並び替え情報に基づいて並べ替え、共通暗号化鍵で暗号化された本人の識別情報と関連付けてマッチング結果格納部に格納するステップを含む。
【００１５】
更に好適には、共通暗号化鍵は、中継用コンピュータにおいて保持される。そして、サービス提供者用コンピュータにおいて受信される各メンバーの優先度リスト中の相手グループの各メンバーの識別情報及び本人の識別情報は、中継用コンピュータにより共通暗号化鍵で暗号化される。また、中継用コンピュータに送信される、共通暗号化鍵で暗号化された本人の識別情報及び本人の結果リスト中の共通暗号化鍵で暗号化された相手グループのメンバーの識別情報は、中継用コンピュータにより共通暗号化鍵で復号される。
【００１６】
また好適には、サービス提供者が提供するマッチング・サービスは、安定マッチングを求めるサービスである。
【００１７】
上記目的を達成する本発明はまた、次のようなサービス提供者用プログラムによって実現される。このサービス提供者用プログラムは、サービス提供者用コンピュータに、次の（ａ）〜（ｈ）の各ステップを実行させる。
【００１８】
（ａ）サービス提供者に送信される情報を中継する複数の中継用コンピュータを介して、サービスを利用する２つのグループの各メンバーの利用者用コンピュータから、当該利用者用コンピュータにおいて選択された第１変換関数により変換された本人の識別情報、本人の優先度順に並べられ第１変換関数により変換された相手グループの各メンバーの識別情報を利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、サービス提供者用コンピュータの第１暗号化鍵により暗号化された、第１変換関数の逆関数である変換逆関数を構成するパラメータ及び並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含むセットであって、本人の識別情報及び優先度リストにリストされる相手グループの各メンバーの識別情報は各中継用コンピュータにおいてそれぞれ１つずつ選択された、前記第１変換関数と可換な第２変換関数により変換されている上記セットを受信するステップ。（ｂ）受信した各メンバーの上記セットについて、優先度リスト、変換逆関数を構成するパラメータ及び並び替え逆関数を構成するパラメータ、及び加工情報を本人の識別情報に関連付けてマッチング情報格納部に格納するステップ。（ｃ）マッチング情報格納部から読み出した各メンバーの変換逆関数を構成するパラメータ及び並び替え逆関数を構成するパラメータを、サービス提供者の第１暗号化鍵に対応するサービス提供者用コンピュータが保持する第１復号鍵で復号するステップ。（ｄ）マッチング情報格納部から読み出した各メンバーの本人の識別情報に、変換逆関数を適用するステップ。（ｅ）マッチング情報格納部から読み出した各メンバーの優先度リストに、変換逆関数及び並び替え逆関数を適用するステップ。（ｆ）本人の識別情報及び優先度リスト中の相手グループの各メンバーの識別情報は複数の第２変換関数により変換された状態のまま、全メンバーの本人の識別情報及び優先度リストに基づいて２つのグループ間のマッチングを実行するステップ。（ｇ）マッチングにより求められたペアごとに異なる第２暗号化鍵を生成し、当該第２暗号化鍵とマッチング結果を、ペアとなったメンバーの識別情報に対応付けてマッチング情報格納部に格納されている加工情報に基づいて、ペアとなったメンバーの利用者用コンピュータのみが復号できる状態にそれぞれ加工するステップ。（ｈ）各メンバーの加工済みの第２暗号化鍵とマッチング結果を公開するステップ。
【００１９】
好適には、マッチング結果として各メンバーに返される情報は、当事者の優先度リストにおけるペアとなった相手メンバーの順位である。各メンバーは自身の優先度リストの優先度順を当然知っていることから、自身の優先度リストにおけるペアとなった相手の順位が分ればペアとなった相手を知ることができる。
【００２０】
また好適には、各メンバーは当該メンバーの利用者用コンピュータにおいて復号できた第２暗号化鍵を用いてペアとなった相手メンバーと暗号化通信を試みる。
【００２１】
以上、サービス提供者用コンピュータ上で実行されるサービス提供者用プログラムとして本発明を説明したが、本発明は、上記プログラムを格納した記憶媒体、上記プログラムの各ステップを含む方法、上記プログラムをメモリに読み込んで実行するサービス提供者用コンピュータとして把握することもできる。
【００２２】
上記目的を達成する本発明はまた、サービス提供者とサービスを利用する２つのグループの各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ上で実行される中継用プログラムによって実現される。本発明の１実施形態では、中継用プログラムは、中継用コンピュータに、次の各ステップを実行させる。（ａ）各メンバーの利用者用コンピュータから、本人の宛先情報、全メンバーに共通な共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第１セットであって、優先度リスト及び加工情報はサービス提供者の暗号化鍵で暗号化されている第１セットを受信するステップ。（ｂ）受信した各メンバーの第１セットから、本人の宛先情報を抽出し、共通暗号化鍵で暗号化された本人の識別情報に関連付けて宛先情報格納部に格納するステップ。（ｃ）本人の宛先情報が抽出された各メンバーの第１セットをサービス提供者用コンピュータへ送信するステップ。（ｄ）サービス提供者用コンピュータから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報及び加工情報に基づいて加工された本人のマッチング結果を含む第２セットを受信するステップ。（ｅ）各メンバーについて、マッチング結果の宛先情報を、当該マッチング結果と同じ第２セットに含まれる共通暗号化鍵で暗号化された本人の識別情報を索引として宛先情報格納部から読み出し、読み出した宛先情報へ上記マッチング結果を送信するステップ。
【００２３】
上記目的を達成する本発明はまた、サービス提供者が提供するマッチング・サービスを利用する利用者の利用者用コンピュータ上で実行される利用者用プログラムによって実現される。本発明の１実施形態では、利用者用プログラムは、利用者用コンピュータに、次の各ステップを実行させる。（ａ）サービスを利用する２つのグループの各メンバーと各メンバーの識別情報との対応関係を示す表及び全メンバーに共通な共通暗号化鍵を格納するステップ。（ｂ）相手グループのメンバーの識別情報を利用者の優先度順に並べた優先度リストを作成するステップ。（ｃ）優先度リスト中の相手グループのメンバーの識別情報及び利用者の識別情報を、共通暗号化鍵で暗号化するステップ。（ｄ）マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するためにサービス提供者によって使用される加工情報を、加工鍵を使って作成するステップ。（ｅ）優先度リスト及び加工情報をサービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップ。（ｆ）利用者の宛先情報、共通暗号化鍵で暗号化された利用者の識別情報、相手グループのメンバーの識別情報が共通暗号化鍵で暗号化されている利用者の優先度リスト、及び加工情報を含むセットであって、優先度リスト及び加工情報はサービス提供者の暗号化鍵で暗号化されている上記セットを、サービス提供者と利用者との間でやり取りされる情報を中継する中継用コンピュータへ送信するステップ。（ｇ）中継用コンピュータから、加工情報に基づいて加工された利用者のマッチング結果を受信するステップ。（ｈ）利用者のマッチング結果を、共通暗号化鍵及び加工鍵のうちの少なくとも１つに基づいて復号するステップ。
【００２４】
本発明のもう１つの実施形態では、中継用プログラムは、中継用コンピュータに、次の各ステップを実行させる。（ａ）各メンバーの利用者用コンピュータから、本人の宛先情報、本人の識別情報、相手グループのメンバーの識別情報を本人の優先度順に並べたものを更に本人が保持する並び替え情報に従って並べ替えた優先度リスト、及びサービス提供者の暗号化鍵で暗号化された、上記並び替え情報に従う並び替えを元に戻す逆並び替え情報の第１のセットを受信するステップ。（ｂ）受信した各メンバーの第１セットから、本人の宛先情報を抽出し、本人の識別情報に関連付けて宛先情報格納部に格納するステップ。（ｃ）共通暗号化鍵を生成するステップ。（ｄ）受信した各メンバーの第１セットについて、本人の識別情報及び本人の優先度リスト中の相手グループのメンバーの識別情報を、共通暗号化鍵で暗号化するステップ。（ｅ）各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報、相手グループのメンバーの識別情報が共通暗号化鍵で暗号化されている優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報の第２のセットを、サービス提供者用コンピュータへ送信するステップ。（ｆ）サービス提供者用コンピュータから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報及び本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストの第３セットであって、結果リストの識別情報は更に本人の逆並び替え情報に基づいて並べ替えられている第３のセットを受信するステップ。（ｇ）各メンバーの受信した第３のセットについて、共通暗号化鍵で暗号化された本人の識別情報及び結果リスト中の共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を、共通暗号化鍵で復号するステップ。（ｈ）各メンバーについて、結果リストの宛先情報を、当該結果リストと同じ第３セットに含まれる本人の識別情報を索引として宛先情報格納部から読み出し、読み出した宛先情報へ上記結果リストを送信するステップ。
【００２５】
本発明のもう１つの実施形態では、利用者用プログラムは、利用者用コンピュータに、次の各ステップを実行させる。（ａ）サービスを利用する２つのグループの各メンバーとその識別情報の対応関係を示す表を格納するステップ。（ｂ）相手グループのメンバーの識別情報を利用者の優先度順に並べた優先度リストを作成するステップ。（ｃ）優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報を生成するステップ。（ｄ）優先度リストの優先度順を、並び替え情報に従って並び替えるステップ。（ｅ）逆並び替え情報をサービス提供者が保持する復号鍵に対応する暗号化鍵で暗号化するステップ。（ｆ）利用者の宛先情報、利用者の識別情報、優先度順を並び替えられた優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報を含むセットを、サービス提供者と各メンバーとの間でやり取りされる情報を中継する中継用コンピュータへ送信するステップ。（ｇ）中継用コンピュータから、ペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手のグループのメンバーの識別情報の結果リストであって、識別情報が上記逆並び替え情報に基づいて並び替えられた結果リストを受信するステップ。（ｈ）識別情報を並び替え情報に従って並び替えた結果リストにおいて、予め取り決めておいた順位に位置する相手グループのメンバーの識別情報を取り出すステップ。
【００２６】
本発明の更にもう１つの実施形態では、中継用プログラムは、中継用コンピュータに、次の各ステップを実行させる。（ａ）他の１以上の中継用コンピュータを介して、各メンバーの利用者用コンピュータから、利用者用コンピュータにおいて選択された第１変換関数及び他の１以上の中継用コンピュータにおいてそれぞれ１つずつ選択され、第１変換関数と可換な複数の第２変換関数により変換された本人の識別情報、本人の優先度順に並べられ第１変換関数及び複数の第２変換関数により変換された相手グループのメンバーの識別情報を利用者用コンピュータにおいて選択された並び替え関数により並べ替えた優先度リスト、サービス提供者用コンピュータの第１暗号化鍵及び他の１以上の中継用コンピュータを除く残りの１以上の中継用コンピュータの第２暗号化鍵により暗号化された、第１変換関数の逆関数である変換逆関数を構成するパラメータ及び前記並び替え関数の逆関数である並び替え逆関数を構成するパラメータ、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報を含む第１セットを受信するステップ。（ｂ）受信した第１セットに含まれる各メンバーの変換逆関数を構成するパラメータ及び並び替え逆関数を構成するパラメータを、本中継用コンピュータの第２暗号化鍵に対応する本中継用コンピュータが保持する第２復号鍵で復号するステップ。（ｃ）受信した各メンバーの本人の識別情報及び優先度リストにリストされる相手グループの各メンバーの識別情報を変換する、第１変換関数と可換な第３変換関数を選択するステップ。（ｄ）受信した第１セットに含まれる各メンバーの本人の識別情報及び優先度リストにリストされる相手グループの各メンバーの識別情報を、選択した第３変換関数を用いて変換するステップ。（ｅ）受信した各メンバーの第１セットに対し、処理済の本人の識別情報、優先度リスト及び変換逆関数及び並び替え逆関数と、加工情報とを含む第２セットを作成し、サービス提供者用コンピュータまたは、まだ残りの中継用コンピュータの１つに送信するステップ。
【００２７】
本発明の更にもう１つの実施形態では、利用者用プログラムは、利用者用コンピュータに、次の各ステップを実行させる。（ａ）サービスを利用する２つのグループのうち相手グループのメンバーの識別情報を利用者の優先度順に並べた優先度リストを作成するステップ。（ｂ）優先度リストの並び順を並び替える並び替え関数とその逆関数である並び替え逆関数を選択し、優先度リストに並び替え関数を適用するステップ。（ｃ）相手グループの各メンバーの識別情報及び利用者の識別情報を変換する変換関数とその逆関数である変換逆関数を選択し、優先度リストにリストされる各メンバーの識別情報及び利用者の識別情報に変換関数を適用するステップ。（ｄ）並び替え逆関数を構成するパラメータ及び変換逆関数を構成するパラメータを、サービス提供者の公開鍵及びサービス提供者へ送信する情報を中継する複数の中継用コンピュータの公開鍵で暗号化するステップ。（ｅ）マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するためにサービス提供者によって使用される加工情報を作成するステップ。（ｆ）処理済の利用者の識別情報、優先度リスト、及び変換逆関数を構成するパラメータ並びに並び替え逆関数を構成するパラメータと、加工情報とを含むセットを、複数の中継用コンピュータの１つに送信するステップ。（ｇ）サービス提供者が公開する、加工情報に基づき処理されたマッチングの結果を、加工情報に基づき復元するステップ。
【発明の効果】
【００２８】
本発明によれば、マッチング・サービスを利用する各メンバーの優先度リスト中の相手グループのメンバーの識別情報と本人の識別情報は、全メンバーに共通な共通暗号化鍵で暗号化され、暗号化された状態のままマッチング・サービス提供者によるマッチングに使用されるので、優先度リストの内容やマッチング結果といった情報が外部に漏れることのない安全性の高いマッチング・サービスが提供される。
【発明を実施するための最良の形態】
【００２９】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００３０】
図１は、本発明の１実施形態に係るマッチング・サービスを提供するためのシステム全体の構成を示す図である。図１に示すように、マッチング・サービスを提供するためのシステムは、サービスを利用する２つのグループの各メンバーの利用者用コンピュータ１００と、サービス提供者と各メンバーとの間でやり取りされる情報を中継する中継用コンピュータ２００と、マッチング・サービスを提供するサービス提供者用コンピュータ３００とを含む。サービス提供者用コンピュータ３００と中継用コンピュータ２００、中継用コンピュータ２００と各利用者用コンピュータ１００は、それぞれインターネットなどのネットワークを介して接続される。また図１には明示していないが、各利用者用コンピュータ１００もまたネットワークを介して互いに接続され、更に各利用者用コンピュータ１００とサービス提供者用コンピュータ３００もネットワークを介して接続される。更に後述する第５実施形態では、複数の中継用コンピュータ２００が、２つのグループの各メンバーの利用者用コンピュータ１００からサービス提供者３００へ送信される情報を中継する。
【００３１】
図２に、上記各コンピュータ、すなわち利用者用コンピュータ１００、中継用コンピュータ２００及びサービス提供者用コンピュータ３００のハードウェア構成の一例を示す。各コンピュータは、ホストコントローラ４０５により相互に接続されるＣＰＵ４００、ＲＡＭ４１０及びビデオコントローラ４１５を含むＣＰＵ周辺部と、入出力コントローラ４３０によりホストコントローラ４０５に接続される通信インターフェース４６０、ハードディスクドライブ４４０、及びＣＤ−ＲＯＭドライブ４５０を含む入出力部と、入出力コントローラ４３０に接続されるスーパーＩ／Ｏコントローラ４７０及びスーパーＩ／Ｏコントローラ４７０に接続されるフレキシブルディスクドライブ４８０、フラッシュＲＯＭ４９０、ならびにキーボードマウスコントローラ５００を有するレガシー入出力部とを備える。
【００３２】
ホストコントローラ４０５は、ＲＡＭ４１０と、高い転送レートでＲＡＭ４１０をアクセスするＣＰＵ４００及びグラフィックコントローラ４１５とを接続する。ＣＰＵ４００は、フラッシュＲＯＭ４９０やＲＡＭ４１０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ４１５は、ＣＰＵ４００等がＲＡＭ４１０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置４２０上に表示させる。これに代えて、グラフィックコントローラ４１５は、ＣＰＵ４００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００３３】
入出力コントローラ４３０は、比較的高速な入出力装置である通信インターフェース４６０、ハードディスクドライブ４４０、及びＣＤ−ＲＯＭドライブ４５０をホストコントローラ４０５と接続する。通信インターフェース４６０は、有線ケーブルでイーサネットプロトコルを用いて、通信用のゲートウェイサーバ（図示しない）に接続され、或いは有線ＬＡＮカードを備え、ＩＥＥＥ８０２．１１ｇなどの規格に基づく通信プロトコルを使用することで、ネットワークを介して他のコンピュータと通信する。
ハードディスクドライブ４４０は、コンピュータが使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ４５０は、ＣＤ−ＲＯＭからプログラム又はデータを読み取り、スーパーＩ／Ｏコントローラ４７０に提供する。
【００３４】
また、入出力コントローラ４３０には、フレキシブルディスクドライブ４８０やキーボードマウスコントローラ５００等の比較的低速な入出力装置と、フラッシュＲＯＭ４９０とが接続される。フラッシュＲＯＭ４９０は、コンピュータの起動時にＣＰＵ４００が実行するブートプログラムや、コンピュータのハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ４８０は、フレキシブルディスクからプログラムまたはデータを読み取り、ＲＡＭ４１０を介してスーパーＩ／Ｏコントローラ４７０に提供する。Ｉ／Ｏコントローラ４７０は、フレキシブルディスクや、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００３５】
次に、各コンピュータのソフトウェア構成について説明する。コンピュータに提供されるコンピュータプログラム（オペレーティング・システム及びアプリケーションプログラム）は、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記憶媒体、ＩＣカード等の半導体メモリ等の記録媒体に格納されて、或いはＷｅｂサイトからダウンロードする等ネットワークを介して利用者によって提供される。プログラムは、記録媒体から読み出されスーパーＩ／Ｏコントローラ４７０を介してコンピュータにインストールされ、又はネットワーク上の他のコンピュータから読み出され通信インターフェース４６０を介してコンピュータにインストールされ、コンピュータにおいて実行される。
【００３６】
各コンピュータに使用できるオペレーティング・システムとして、Ｗｉｎｄｏｗｓ (マイクロソフトの商標) ＸＰ、Ｌｉｎｕｘ (Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標）、Ａｐｐｌｅ  ＣｏｍｐｕｔｅｒのＭＡＣ  ＯＳ  Ｘなどがあるが、これらに限定されない。これらのオペレーティング・システムは、ＴＣＰ／ＩＰプロトコルによる通信機能を標準で持ち、本発明が必要とする通信機能を好適に提供できるものである。また、利用者用コンピュータ１００には利用者用プログラム、中継用コンピュータ２００には中継用プログラム、サービス提供者用コンピュータ３００には提供者用プログラムがそれぞれアプリケーションプログラムとしてインストールされる。そして、これらのようなハードウェア構成とソフトウェア構成とが相まって、各コンピュータは各実施形態において説明する機能を発揮する。
【００３７】
ここで最初にサービス提供者用コンピュータ３００において実行されるマッチングについて説明しておく。本発明に係るマッチング・サービスの提供は、使用するマッチングのアルゴリズムを制限しない。しかしながら、多くの利用者からサービス利用の申し込みがあることを期待するならば、サービス提供者はできるだけ魅力的なマッチングを求めることが好ましいことは容易に想像できよう。そのような魅力的なマッチングの１つとして安定なマッチングが挙げられる。
【００３８】
安定なマッチングは、複数のメンバーをもつ互いに素な２つのグループの各メンバーが、相手のグループの全メンバーを優先度の高い順に一意に順位付けた優先度リストを持つ場合に求められる。ここで安定なマッチングを説明する前に、先にブロッキングペアを説明する。例えば、サプライヤー企業Ａとバイヤー企業ＢがあるマッチングＭにおいてペアとはなっていないけれど、サプライヤー企業Ａは、マッチングＭにおいてペアになったバイヤー企業Ｃよりもバイヤー企業Ｂを好み、またバイヤー企業Ｂも、マッチングＭにおいてペアになったサプライヤー企業Ｄよりもサプライヤー企業Ａを好む場合、サプライヤー企業Ａとバイヤー企業Ｂをブロッキングペアと呼ぶ。そして、安定なマッチングとは、このようなブロッキングペアが存在しないマッチングをいう。
【００３９】
安定なマッチングは必ず存在する。非特許文献１に挙げた論文に記載されるＧａｌｅ−Ｓｈａｐｌｅｙのアルゴリズムは、安定なマッチングの１つを求める効率的な解法として知られている。そこで、ここでは安定なマッチングを求めるアルゴリズムとしてＧａｌｅ−Ｓｈａｐｌｅｙのアルゴリズムを説明する。しかしながら本発明に係るマッチング・サービスの提供は、上述したように使用するマッチングのアルゴリズムを制限しないことに留意されたい。
【００４０】
サプライヤーとバイヤーの２つのグループ間のマッチングにＧａｌｅ−Ｓｈａｐｌｅｙのアルゴリズムを適用する場合について説明する。
１．まず、サプライヤー側の企業はそれぞれ最も取引としたいと望むバイヤー側の企業に取引の申し出をする。
２．バイヤー側の企業は、申し出を受けた中で最も取引したいと望むサプライヤー側の企業を選択し、キープする。
３．申し出を断られたサプライヤー側の企業は、次に取引したいと望むバイヤー側の企業に取引の申し出をする。
４．バイヤー側の企業は、キープしているサプライヤー側の企業よりも好ましい、すなわちより優先度の高いサプライヤー側の企業から取引の申し出を受けた場合、先のキープを解除して新たに申し出をしたサプライヤー側の企業をキープする。
５．サプライヤー側のすべての企業が申し出を断わられなくなるまで、３．と４．を繰り返す。
３．と４．を繰り返すたびに取引の申し出をする候補が減っていくことから明らかなように、Ｇａｌｅ−Ｓｈａｐｌｅｙのアルゴリズムは有限時間で終了する。
【００４１】
図３は、上記マッチングの処理の流れの一例を示すフローチャートである。ここに示すフローチャートは、サプライヤー側の企業数Ｎとバイヤー側の企業数Ｍは同数であるか、またはサプライヤー側の企業数Ｎがバイヤー側の企業数Ｍよりも多い場合に適用される。前提として、サプライヤー側の企業には１から順に番号が振られているとする。また各企業がもつ、相手グループの全企業を優先度の高い順に一意に順位付けた優先度リストは、マッチングを実行するコンピュータの記憶装置に格納されているものとする。更に現在のマッチング状況はステータス表で確認できるものとし、ステータス表も同じく記憶装置に格納されるものとする。ここで、ステータス表はバイヤー側の各企業の欄を有し、あるバイヤー側の企業の欄にあるサプライヤー側の企業の識別情報が書き込まれていれば、そのバイヤー側の企業はその識別情報をもつサプライヤー側の企業を現在キープしていることを意味するものとする。
【００４２】
処理はステップ９００から開始し、まず初期値としてサプライヤー側の企業の番号ｉに１を設定する。次に記憶装置からステータス表を読み出し、番号ｉの企業の識別情報がステータス表に書き込まれているかどうか判断する（ステップ９０５）。ステータス表に番号ｉの企業の識別情報がみつかる場合、処理は後述するステップ９４０へ進む。初めてステップ９０５を実行する場合、ステータス表の各欄は全て空欄となっているため、処理はステップ９１０へ進む。ステップ９１０では、番号ｉのサプライヤー側の企業の優先度リストから、検討済みでない最も上位のバイヤー側の企業を取り出す。ここで「検討済み」とは、番号ｉのサプライヤー側の企業とペアになり得るかどうかの検討がなされたことを意味する。そこで後で検討済みであるかどうか判断可能なように、ステップ９１０でバイヤー側の企業を取り出す際には、優先度リスト内のそのバイヤー側の企業に検討済みであることを示す印をつける。このように、あるサプライヤー側の企業に対し一度候補として検討されたバイヤー側の企業は、そのサプライヤー側の企業に対しては二度と候補として検討されることはない。
【００４３】
次に、取り出したバイヤー側の企業に現在キープしている相手が存在するか確認する（ステップ９１５）。この確認は、記憶装置に格納されるステータス表の、取り出したバイヤー側の企業の欄を参照することによりなされる。現在キープしている相手が存在する場合（ステップ９１５：ＹＥＳ）、取り出したバイヤー側の企業の優先度リストを記憶装置から読み出す（ステップ９２０）。そして、取り出したバイヤー側の企業の優先度リストにおける、現在キープしている相手企業の順位と番号ｉの企業の順位とを比較する（ステップ９２５）。現在キープしている相手企業の順位が上の場合（ステップ９２５：ＹＥＳ）、処理はステップ９１０へ戻る。ステップ９１５でＮＯの場合、すなわち取り出したバイヤー側の企業に現在キープしている相手が存在しない場合、またはステップ９２５でＮＯの場合、すなわち現在キープしている相手企業の順位より番号ｉの企業の順位が上の場合、ステータス表の取り出したバイヤー側の企業の欄に番号ｉの企業の識別情報を書き込み、ステータス表を更新する（ステップ９３０）。
【００４４】
処理はステップ９４０へ進み、ｉがＮであるかどうか判断する。これは、サプライヤー側の全ての企業について、少なくとも一度はステップ９１０からステップ９３０が実行されること、言い換えると、その優先度リストが一度も考慮されることなくマッチング処理が終了したというような企業が存在しないこと、を保証するためである。ｉがＮでない場合（ステップ９４０：ＮＯ）、ｉを１増加してステップ９０５へ戻る（ステップ９４５）。ｉがＮである場合（ステップ９４０：ＹＥＳ）、記憶装置からステータス表を読み出し、ステータス表に空欄が残っているかどうか、すなわち相手が決まっていないバイヤー側の企業が存在するかどうか判断する（ステップ９５０）。ステータス表に空欄が残っている場合（ステップ９５０：ＹＥＳ）、ステップ９００へ戻り、相手が決まっていないサプライヤー側の企業について上記一連の処理を繰り返す。一方、ステータス表に空欄が残っていない場合（ステップ９５０：ＮＯ）、これは全企業について相手が決まったことを意味するので、処理を終了する。なお、サプライヤー側の企業数Ｎがバイヤー側の企業数Ｍよりも少ない場合についても、図３に示すフローチャートを適用できる。但しこの場合、ステップ９５０の判断を、「ステータス表にＮ個の、サプライヤー側の企業の識別情報の書き込みがあるかどうか」の判断に代える必要がある。
【００４５】
次に各コンピュータの機能及び動作の説明を行う。本発明では、サービス提供者とサービスを利用する２つのグループの各メンバーとの間の情報のやり取りは、中継用コンピュータ２００を介してなされる。そのため、マッチング結果は各メンバーに送信される前に、当事者の利用者用コンピュータのみが復号できる状態に加工される。ところでこのマッチング結果の加工にはいくつかの方法が考えられ、以下では、加工方法が異なる４つの実施形態について説明する。更にその後に、マッチング結果を各メンバーに送信せずに公開する第５の実施形態について説明する。
【００４６】
（第１実施形態）図４は、第１実施形態に係る利用者用コンピュータ１００ａの機能構成を示す。第１実施形態では、ハードディスクドライブ４４０のハードディスクに格納された利用者用プログラムは、
例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、利用者用コンピュータ１００ａを、受信部１０２、格納部１０５、優先度リスト作成部１４０、第１暗号化部１４５、加工情報作成部１５０、第２暗号化部１５５、マッチング情報作成部１６０、送信部１６５、及び復号部１７０として機能させる。格納部１０５はまた、優先度情報一時格納領域１１０、識別表格納領域１１５、共通暗号化鍵格納領域１２０、暗号化鍵格納領域１２５、加工鍵格納領域１３０、及び宛先情報格納領域１３５を含む。なお、図４では各格納領域は便宜上同じ１つの格納部１０５内の領域として示されているが、現実には、例えばＨＤＤ４４０、ＦＤドライブ４８０等の物理的に異なる複数の記憶装置の領域としてもよい。
【００４７】
本実施形態では、２つのグループ全体に対して、単一のまとめ役のメンバーを選出し、選出されたメンバーが各メンバーに識別情報を割り当て、また全メンバーに共通な共通暗号化鍵を各グループの公開鍵で暗号化するなど公知の方法でセキュアに配布するものとする。そこでまとめ役の利用者の利用者用プログラムは、利用者用コンピュータ１００ａを更に、識別表作成部１７５、共通暗号化鍵生成部１８０として機能させる。識別表作成部１７５は、各メンバーに適当な識別情報を割当て、メンバーとその識別情報の対応関係を示す識別表を作成する。但し識別情報の割当てはまとめ役のメンバーが直接行ってもよい。この場合識別表作成部１７５は、まとめ役のメンバーがキーボードなどの入力装置を介して入力した各メンバーの識別情報に基づいて識別表を作成する。図７ａ）に、識別表の一例を示す。ここでＩＤＸはメンバーＸに割り当てられた識別情報を表す。共通暗号化鍵生成部１８０は、全メンバーに共通な共通暗号化鍵を生成する。ここで生成される共通暗号化鍵は次の条件を満たす。
【００４８】
すなわち、共通暗号化鍵をKCと表し、また識別情報IDを共通暗号化鍵KCで暗号化した結果をenc_KC(ID)と表わすと、共通暗号化鍵ＫＣは、enc_ KC (ID1)=enc_ KC (ID2)ならばID1=ID2を満たすものとする。このような条件を満たす暗号化方式の一例として、Data  Encryption  Standard(DES)等の秘密鍵暗号化方式や素のRivestShamir Adleman(RSA)等の公開鍵暗号化方式が挙げられる。しかし本発明の実施例では、暗号化と復号を同じ鍵を用いて行う秘密鍵暗号化方式を使用する。秘密鍵暗号化方式であれば、DES以外、例えばAESなど、DESと同等またはそれ以上にセキュアな任意のものを用いることができる。なお、以下では情報Ｘを暗号化鍵Yで暗号化した結果をenc_KY(X)と表わす。作成された識別表と生成された共通暗号化鍵は、まとめ役のメンバーの利用者用コンピュータ１００ａの送信部１６５によって、各メンバーの利用者用コンピュータ１００ａへ送信される。各メンバーの利用者用コンピュータ１００ａの受信部１０２は、識別表と共通暗号化鍵を受信し、それぞれ識別表格納領域１１５と共通暗号化鍵格納領域１２０に格納する。
【００４９】
暗号化鍵格納領域１２５は、サービス提供者用コンピュータ３００ａが保持する復号鍵に対応する暗号化鍵を格納する。各メンバーはマッチング・サービスの利用に際し、サービス提供者からサービス提供者の暗号化鍵を入手する。本実施形態では、サービス提供者用コンピュータ３００ａが保持する復号鍵は、公開鍵暗号化方式の秘密鍵であり、利用者が入手するサービス提供者の暗号化鍵は、その秘密鍵に対応する公開鍵である。なお公開鍵暗号化方式としてはＲＳＡを利用できる他、楕円曲線暗号などの、同等またはそれ以上にセキュアな任意のものを用いることができる。このように、サービス提供者用コンピュータ３００ａは予め一組の鍵を生成しておき、暗号化に使用する方の鍵をそのホームページ上に公開するなどして、サービス利用者がいつでもサービス提供者の暗号化鍵を入手できるようしておく。他の方法として、サービス提供者用コンピュータ３００ａは、まとめ役のメンバーからサービスの利用の申し込みを受けたことに応答して一組の鍵を生成し、暗号化に使用する方の鍵をまとめ役のメンバーへ送るようにしてもよい。
【００５０】
優先度情報一時格納領域１１０は、キーボードなどの入力装置を介して利用者用コンピュータ１００ａのユーザである利用者から入力された相手グループのメンバーの優先度情報を格納する。図７ｂ）にメンバーＡの優先度情報の一例を示す。ここで表中のメンバーＥ、Ｆ、Ｇ、…は、メンバーＡからみた相手グループに属するメンバーである。優先度リスト作成部１４０は、優先度情報一時格納領域１１０から読み出した相手グループのメンバーの優先度情報と、識別表格納領域１１５から読み出したメンバーとその識別情報の対応関係を示す識別表を使用して、相手メンバーの識別情報を利用者の優先度順に並べた優先度リストを作成する。図７ａ）及びｂ）の例を用いて説明すると、メンバーＡの優先度リスト作成部１４０は、図７ｂ）の表をコピーし、コピーした表の優先度順を高いものから順に並ぶようにソートする。次にソート後の表において優先度リスト作成部１４０は、メンバー名を図７ａ）の表から読み出した対応する識別情報で更新する。このようにして、最終的に図７ｃ）に示す優先度リストが作成される。なお本実施形態においては、優先度情報一時格納領域１１０の優先度情報は、優先度リストが作成された後利用者用コンピュータ１００ａから削除される。
【００５１】
第１暗号化部１４５は、優先度リスト作成部１４０から優先度リストと利用者本人の識別情報を受け取り、優先度リスト中の相手グループのメンバーの識別情報と利用者本人の識別情報を、共通暗号化鍵格領域１２０から読み出した共通暗号化鍵で各々暗号化する。図７ｄ）に、第１暗号化部１４５によって識別情報を暗号化された後のメンバーＡの優先度リストを示す。
【００５２】
加工情報作成部１５０は、加工鍵格納領域１３０から加工鍵を読み出し、マッチング結果を当事者の利用者用コンピュータ１００ａのみが復号できる状態に加工するためにサービス提供者によって使用される加工情報を作成する。本実施形態では、加工鍵は利用者本人の利用者用コンピュータ１００ａが保持する暗号化鍵であり、加工情報は当該暗号化鍵の複製である。すなわち、第１の実施形態では、暗号化と復号を同じ鍵で行う秘密鍵暗号化方式を利用しマッチング結果を暗号化するようにする。
【００５３】
第２暗号化部１５５は、暗号化鍵格納領域１２５からサービス提供者の公開鍵を読み出し、第１暗号化部１４５から渡された優先度リストと、加工情報作成部１５０から渡された加工情報を、公開鍵で各々暗号化する。宛先情報格納領域１３５は、電子メール・アドレスなど、ネットワークを介してデータのやりとりをする場合にデータを送る宛先を指定するために使用される利用者本人の宛先情報を格納する。
【００５４】
マッチング情報作成部１６０は、宛先情報格納領域１３５から読み出した利用者本人の宛先情報、第１暗号化部１４５から渡された共通暗号化鍵で暗号化された利用者本人の識別情報、第２暗号化部１５５から渡されたサービス提供者の公開鍵で暗号化された優先度リスト、及び同じくサービス提供者の公開鍵で暗号化された加工情報からマッチング情報のセットを作成する。なお、マッチング情報のセットのフォーマットに制限はないが、フォーマットは利用者用コンピュータ１００ａ、中継用コンピュータ２００ａ、サービス提供者用コンピュータ３００ａ間で予め取り決められ、各メンバーは共通のフォーマットを使用するものとする。送信部１６５は、マッチング情報作成部１６０から渡されたマッチング情報のセットを中継用コンピュータ２００ａへ送信する。
【００５５】
受信部１０２はまた、中継用コンピュータ２００ａから、加工情報に基づいてサービス提供者によって暗号化された利用者本人のマッチング結果を受信する。復号部１７０は、受信部１０２から渡されたマッチング結果を、共通暗号化鍵格納領域１２０に格納される共通暗号化鍵及び加工鍵格納領域１３０に格納される加工鍵のうちの少なくとも１つに基づいて復号する。本実施形態では、復号部１７０はマッチング結果を、加工鍵格納領域１３０から読み出した加工鍵としての暗号化鍵で復号し、更に共通暗号化鍵格納領域１２０から読み出した共通暗号化鍵で復号することで、最終的にマッチング結果を取得する。
【００５６】
図５は、第１実施形態に係る中継用コンピュータ２００ａの機能構成を示す。第１実施形態では、ハードディスクドライブ４４０のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、中継用コンピュータ２００ａを、受信部２０５、マッチング情報一時格納部２１０、宛先情報抽出部２１５、宛先情報格納部２２０、送信部２２５、マッチング結果一時格納部２３０、及び宛先情報決定部２３５として機能させる。上記各格納部としては、一例としてＨＤＤ４４０を利用できる。中継用コンピュータ２００ａは、サービス提供者からサービス利用者の宛先情報を隠し、サービス利用者の宛先情報を管理するものであるため、好ましくはまとめ役として選ばれたメンバーのコンピュータによって実現される。
【００５７】
受信部２０５は、各利用者用コンピュータ１００ａから、マッチング情報のセットを受信する。中継用コンピュータ２００ａにおいて受信されるマッチング情報のセットには、本人の宛先情報、共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工するために使用される加工情報が含まれる。ここで優先度リスト及び加工情報は、サービス提供者の公開鍵で暗号化されている。
【００５８】
マッチング情報一時格納部２１０は、受信した各メンバーのマッチング情報のセットを一時的に格納する。宛先情報抽出部２１５は、マッチング情報一時格納部２１０から各メンバーのマッチング情報のセットを読み出し、本人の宛先情報を抽出し、読み出したセットに含まれる共通暗号化鍵で暗号化された本人の識別情報に関連付けて宛先情報格納部２２０に格納する。上述したように中継用コンピュータ２００ａは、利用者用コンピュータ１００ａから送信されるマッチング情報のセットのフォーマットを予め知っている。そこで宛先情報の抽出は、一例としてマッチング情報のセットにおける宛先情報の位置やファイル名を利用して行われる。なお位置情報を利用する場合は、宛先情報の抽出により他の情報の位置に変更が生じないようパディングを行う。宛先情報格納部２２０に格納される宛先情報の一覧表の一例を図８に示す。宛先情報が抽出されたマッチング情報のセットは、送信部２２５によってサービス提供者用コンピュータ３００ａへ送信される。
【００５９】
受信部２０５はまた、サービス提供者用コンピュータ３００ａから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報及び加工情報に基づいて暗号化された本人のマッチング結果を含むマッチング結果情報のセットを受信する。マッチング結果一時格納部２３０は、受信した各メンバーのマッチング結果情報のセットを一時的に格納する。
【００６０】
宛先情報決定部２３５は、マッチング結果一時格納部２３０からマッチング結果情報のセットを読み出す。そして宛先情報決定部２３５は、マッチング結果の宛先情報を、当該マッチング結果と同じマッチング結果情報のセットに含まれる共通暗号化鍵で暗号化された本人の識別情報を索引として宛先情報格納部２２０から読み出す。そして宛先情報決定部２３５は、その宛先情報とマッチング結果とを送信部２２５へ渡す。送信部２２５は、宛先情報決定部２３５から受け取った宛先情報の利用者用コンピュータ１００aへ、受け取ったマッチング結果を送信する。
【００６１】
図６は、第１実施形態に係るサービス提供者用コンピュータ３００ａの機能構成を示す。第１実施形態では、ハードディスクドライブ４４０のハードディスクに格納されたサービス提供者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、サービス提供者用コンピュータ３００ａを、受信部３１０、マッチング情報格納部３２０、復号鍵格納部３３０、リスト復号部３４０、加工情報復号部３５０、マッチング実行部３６０、加工部３７０、マッチング結果格納部３８０、及び送信部３９０として機能させる。上記各格納部としては、一例としてＨＤＤ４４０を利用できる。
【００６２】
受信部３１０は、中継用コンピュータ２００ａを介して、各利用者用コンピュータ１００ａからマッチング情報のセットを受信する。サービス提供者用コンピュータ３００ａにおいて受信されるマッチング情報のセットには、共通暗号化鍵で暗号化された本人の識別情報、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報を本人の優先度順に並べた優先度リスト、及びマッチング結果を当事者の利用者用コンピュータ１００ａのみが復号できる状態に加工するために使用される加工情報が含まれる。ここで、優先度リストと加工情報はサービス提供者の公開鍵で暗号化されている。なお、本実施形態では、加工情報は上述したように利用者用コンピュータ１００ａが保持する秘密鍵と同じ鍵である。
【００６３】
マッチング情報格納部３２０は、受信した各メンバーのマッチング情報のセットについて、優先度リスト及び加工情報を共通暗号化鍵で暗号化された本人の識別情報に関連付けて格納する。一例としてマッチング情報格納部３２０は、図９ａ）に示すように、優先度リスト及び加工情報の格納位置を示すポインタを共通暗号化鍵で暗号化された本人の識別情報の関連付ける、マッチング情報のセットの一覧表を格納する。上述したようにサービス提供者コンピュータ３００ａは、利用者用コンピュータ１００ａから送信されるマッチング情報のセットのフォーマットを予め知っている。そこで受信したマッチング情報のセット内の各情報の識別は、一例としてマッチング情報のセットにおける情報の位置やファイル名を利用して行う。復号鍵格納部３３０は、サービス提供者の公開鍵に対応する秘密鍵を格納する。リスト復号部３４０は、マッチング情報格納部３２０から各メンバーの優先度リストと共通暗号化鍵で暗号化された本人の識別情報とを読み出し、復号鍵格納部３３０から読み出した秘密鍵で各メンバーの優先度リストを復号する。そしてリスト復号部３４０は、各メンバーの復号した優先度リストを、それぞれ共通暗号化鍵で暗号化された本人の識別情報に関連付けてマッチング実行部３６０へ渡す。
【００６４】
マッチング実行部３６０は、リスト復号部３４０から受け取った、本人の識別情報及び優先度リスト中の相手グループのメンバーの識別情報は共通暗号化鍵で暗号化された状態のままで、全メンバーの本人の識別情報と復号された優先度リストとに基づいてマッチングを実行する。マッチングの具体的な方法は上述したとおりである。なお本発明では優先度リスト中の各メンバーの識別情報は暗号化されている。しかし暗号化は全メンバーに共通な共通暗号化鍵KCを使用して行われており、enc_KC(ID1)=enc_KC(ID2)、すなわち暗号化後の識別情報が同じならば、ID1=ID2、すなわち識別情報も同じであるため、上述したマッチング方法をそのまま利用できる。なおマッチング結果は当然ながら共通暗号化鍵で暗号化された相手の識別情報であり、ペアになった相手の識別情報そのものではない。そしてマッチング実行部３６０は、各メンバーのマッチング結果を、共通暗号化鍵で暗号化された各メンバーの識別情報に関連付けて加工部３７０へ渡す。
【００６５】
加工情報復号部３５０は、マッチング情報格納部３２０から各メンバーの加工情報と共通暗号化鍵で暗号化された本人の識別情報を読み出し、復号鍵格納部３３０から読み出した秘密鍵で各メンバーの加工情報を復号する。そして加工情報復号部３５０は、各メンバーの復号した加工情報を、それぞれ共通暗号化鍵で暗号化された本人の識別情報に関連付けて加工部３７０へ渡す。加工部３７０は、マッチング実行部３６０から受け取った各メンバーのマッチング結果を、各メンバーの復号された加工情報に基づいて、マッチング結果の当事者の利用者用コンピュータ１００ａのみが復号できる状態に加工する。
【００６６】
すなわち、本実施形態に係る加工部３７０は、各メンバーのマッチング結果を、それぞれ本人の利用者用コンピュータが保持する秘密鍵と同じ鍵で暗号化する。そして加工部３７０は、各メンバーについて、加工済みのマッチング結果を共通暗号化鍵で暗号化された本人の識別情報に関連付けてマッチング結果格納部３８０に格納する。図９ｂ）にマッチング結果格納部３８０に格納されるマッチング結果の一覧表の一例を示す。ここでKEYはメンバーＹの秘密鍵を示す。送信部３９０は、マッチング結果格納部３８０から読み出した、共通暗号化鍵で暗号化された本人の識別情報及び加工済みの本人のマッチング結果を含むマッチング結果情報のセットを、中継用コンピュータ２００ａに送信する。
【００６７】
次に図１０のフローチャートを参照して、第１実施形態に係るマッチング・サービスの提供の処理の流れの一例を説明する。まずサービス提供者用コンピュータ３００ａは、公開鍵KPと秘密鍵Ksの一組の鍵を生成し（ステップ５００）、公開鍵ＫＰをそのホームページ上などに公開する（ステップ５０５）。このとき秘密鍵Ksはサービス提供者用コンピュータ３００ａの復号鍵格納部３３０に格納される。利用者コンピュータ１００ａは、サービス提供者用コンピュータ３００ａのホームページからダウンロードするなどして公開鍵KPを入手し、利用者コンピュータ１００ａの暗号化鍵格納領域１２５に格納する（ステップ５１０）。
【００６８】
まとめ役の利用者の利用者用コンピュータ１００ａは、全メンバーに共通な共通暗号化鍵Kcを生成し（ステップ５１５）、また、メンバーとその識別情報ＩＤの対応関係を示す識別表を作成する（ステップ５２０）。そしてまとめ役の利用者の利用者用コンピュータ１００ａは、共通暗号化鍵Kcと識別表を各メンバーの利用者用コンピュータ１００ａへ送信する（ステップ５２５）。なお、ここではまとめ役の利用者の利用者用コンピュータ１００ａが中継用コンピュータ２００ａとしての役割も果たすものとする。利用者用コンピュータ１００ａは、識別表と共通暗号化鍵Kcを受信し、それぞれ共通暗号化鍵格納領域１２０と識別表格納領域１１５へ格納する（ステップ５３０）。  
【００６９】
利用者用コンピュータ１００ａは、優先度情報一時格納領域１１０から読み出した優先度情報と、識別表格納領域１１５から読み出した識別表を使用して、相手メンバーの識別情報ＩＤを利用者の優先度順に並べた優先度リストを作成する（ステップ５３５）。そして利用者用コンピュータ１００ａは、共通暗号化鍵格納領域１２０から読み出した共通暗号化鍵ＫＣで、優先度リスト中の識別情報ＩＤと利用者本人の識別情報ＩＤとを暗号化する（ステップ５４０）。
【００７０】
利用者用コンピュータ１００ａはまた、加工鍵格納領域１３０から利用者用コンピュータ１００ａの暗号化鍵を読み出し、その複製を加工情報として作成する（ステップ５４５）。そして利用者用コンピュータ１００は、暗号化鍵格納領域１２５から読み出したサービス提供者の公開鍵ＫＰで、優先度リストと加工情報とを暗号化する（ステップ５５０）。最後に利用者用コンピュータ１００ａは、宛先情報格納領域１３５から利用者の宛先情報を読み出し、共通暗号化鍵ＫＣで暗号化した本人の識別情報ＩＤ、サービス提供者の公開鍵ＫＰで暗号化した優先度リスト、同じくサービス提供者の公開鍵ＫＰで暗号化した加工情報と一緒にしてマッチング情報のセットを作成し、中継用コンピュータ２００ａへ送信する（ステップ５５５）。
【００７１】
中継用コンピュータ２００ａは、各メンバーの利用者用コンピュータ１００ａからマッチング情報のセットを受信する（ステップ５６０）。そして中継用コンピュータ２００ａは、受信した各メンバーのマッチング情報のセットから宛先情報を抽出し、同じマッチング情報のセットに含まれる共通暗号化鍵ＫＣで暗号化された本人の識別情報ＩＤと関連付けて宛先情報格納部２２０へ格納する（ステップ５６５）。最後に中継用コンピュータ２００ａは、宛先情報を抽出したマッチング情報の各セットを、サービス提供者用コンピュータ３００ａへ送信する（ステップ５７０）。
【００７２】
サービス提供者用コンピュータ３００ａは、各メンバーのマッチング情報のセットを受信し、マッチング情報格納部３２０に格納する（ステップ５７５）。次にサービス提供者用コンピュータ３００ａは、復号鍵格納部３３０から読み出したサービス提供者の秘密鍵ＫＳで、全メンバーの優先度リストを復号する（ステップ５８０）。そしてサービス提供者用コンピュータ３００ａは、本人の識別情報ＩＤ及び優先度リスト内の相手グループのメンバーの識別情報ＩＤは共通暗号化鍵Kcで暗号化された状態のままで、全メンバーの本人の識別情報ＩＤと復号した優先度リストとに基づいて、２つのグループ間のマッチングを実行する（ステップ５８５）。マッチング結果である相手の識別情報ＩＤは、上述したように共通暗号化鍵Kcで暗号化された状態で得られる。
【００７３】
サービス提供者用コンピュータ３００ａはまた、復号鍵格納部３３０から読み出したサービス提供者の秘密鍵Ksで各メンバーの加工情報を復号し、メンバー本人の暗号化鍵を取得する（ステップ５９０）。そしてサービス提供者用コンピュータ３００ａは、各メンバーのマッチング結果をメンバー本人の暗号化鍵で暗号化し、マッチング結果を本人のみが復号できる状態に加工する（ステップ５９５）。最後にサービス提供者用コンピュータ３００ａは、共通暗号化鍵ＫＣで暗号化された本人の識別情報ＩＤと本人の加工済みのマッチング結果とを含むマッチング結果情報のセットを中継用コンピュータ２００ａへ送信する（ステップ６００）。
【００７４】
中継用コンピュータ２００ａは、各メンバーのマッチング結果情報のセットを受信する（ステップ６０５）。そして中継用コンピュータ２００ａは、マッチング結果の宛先を、当該マッチング結果と同じセットに含まれる共通暗号化鍵Kcで暗号化された本人の識別情報ＩＤを索引として宛先情報格納部２２０から読み出し（ステップ６１０）、読み出した宛先情報の利用者用コンピュータ１００aへマッチング結果を送信する（ステップ６１５）。
【００７５】
利用者用コンピュータ１００ａは、本人のマッチング結果を受信する（ステップ６２０）。そして利用者用コンピュータ１００ａは、マッチング結果を、加工鍵格納領域１３０から読み出した秘密鍵で復号し、更に共通暗号化鍵格納領域１２０から読み出した共通暗号化鍵ＫＣで復号することで、最終的にマッチング結果である相手の識別情報ＩＤを取得する（ステップ６２５）。
【００７６】
以上のように、第１実施形態では、優先度リスト内の相手グループのメンバーの識別情報と本人の識別情報は、メンバーに共通な共通暗号化鍵で暗号化された状態のままでサービス提供者用コンピュータにおけるマッチングに使用される。そのためマッチング結果である相手メンバーの識別情報も共通暗号化鍵で暗号化された状態で得られる。従って、メンバーとその識別情報の対応関係が外部に漏れることがあっても、優先度リストの内容やマッチング結果がサービス提供者や第三者に知られることはない。なお第１実施形態では、加工情報は、利用者用コンピュータ１００ａが保持する暗号化鍵の複製であり、秘密鍵暗号化方式を利用してマッチング結果を暗号化するようにすると説明した。しかし、加工鍵を利用者用コンピュータ１００ａが保持する復号鍵とし、また加工情報をその復号鍵に対応する暗号化鍵としてもよい。すなわち、公開鍵暗号化方式を利用してマッチング結果を暗号化するようにしてもよい。
【００７７】
（第２実施形態）第２実施形態及び後述する第３実施形態に係るマッチング・サービスの提供は、加工情報及び加工鍵の内容が異なる以外は、第１実施形態に係るマッチング・サービスの提供と基本的に同じである。そこで、第２実施形態及び後述する第３実施形態では第１実施形態に係るマッチング・サービスの提供と異なる構成及び動作についてのみ説明する。
【００７８】
最初に、第２実施形態に係る加工鍵と加工情報の内容及び加工情報の作成方法を、図４を参照して説明する。第２実施形態に係る利用者用コンピュータ１００ａの加工鍵格納領域１３０に格納される加工鍵は、利用者本人の利用者用コンピュータ１００ａのみが保持する鍵であり、暗号化と復号を同じ鍵で行う秘密鍵暗号化方式の暗号化鍵である。加工情報作成部１５０は、識別表格納領域１１５から読み出した相手グループの各メンバーの識別情報を、加工鍵としての暗号化鍵で暗号化し、更にこれを優先度情報一時格納領域１１０から読み出した各メンバーの優先度の順位に従って並べることで、加工情報としての暗号化済みリストを作成する。図１１に、本実施形態に係るメンバーＡの加工情報の例を示す。図１１ａ）はメンバーＡの優先度リストを示し、図１１ｂ）はメンバーＡの加工情報の例を示す。ここでKEAはメンバーＡの暗号化鍵を表わす。なお第２実施形態では、優先度情報一時格納領域１１０に格納された優先度情報は、加工情報が作成された後利用者用コンピュータ１００ａから削除される。
【００７９】
次に加工情報作成後の利用者用コンピュータ１００ａ及びサービス提供者用コンピュータ３００ａにおける加工情報の取り扱いを、図１０を参照して説明する。利用者用コンピュータ１００ａの加工情報作成部１５０により作成された暗号化済みリストは、第２暗号化部１５５によりサービス提供者の公開鍵KPで暗号化された後（ステップ５５０）、マッチング情報の１つとして中継用コンピュータ２００ａを介してサービス提供者用コンピュータ３００ａへ送信される（ステップ５５５、ステップ５７０）。なお第２実施形態においては、共通暗号化鍵格納領域１２０の共通暗号化鍵KCはステップ５４０の後利用者用コンピュータ１００ａから削除される。
【００８０】
サービス提供者用コンピュータ３００ａにおいて受信された各メンバーの暗号化済みリストは、加工情報復号部３５０によりサービス提供者の秘密鍵KSで復号され（ステップ５９０）、共通暗号化鍵KCで暗号化されたその本人の識別情報ＩＤに関連付けて加工部３７０へ渡される。また本実施形態に係るマッチング実行部３６０は、マッチング結果として、共通暗号化鍵KCで暗号化された本人の識別情報ＩＤと、本人の優先度リストにおけるその本人とペアになった相手メンバーの順位とを加工部３７０へ渡す。加工部３７０は、各メンバーについて、本人の暗号化済みリストから、本人の優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する相手メンバーの識別情報を取り出すことにより、マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工する。そして加工部３７０は、取り出した相手メンバーの識別情報を、共通暗号化鍵KCで暗号化された本人の識別情報に関連付けてマッチング結果格納部３８０に格納する（ステップ５９５）。
【００８１】
上記マッチング実行部３６０と加工部３７０の処理を、メンバーＡを例により具体的に説明する。マッチングの結果、マッチング実行部３６０が、enc_KC(IDA)のペアとしてenc_KC(IDG)を得たとする。するとマッチング実行部３６０は、図７ｄ）に示すメンバーＡの優先度リストから、enc_KC(IDG)の順位、すなわち順位２を読み出す。加工部３７０はマッチング実行部３６０から順位２を受け取り、図１１ｂ）に示すメンバーＡの加工情報から、順位２に位置する情報、すなわちenc_KEA(IDG)を取り出す。そして加工部３７０は、enc_KEA(IDG)をenc_KC(IDA)に関連付けてマッチング結果格納部３８０に格納する。このように本人の暗号化済みリストから取り出された相手メンバーの識別情報は、本人の利用者用コンピュータ１００ａが保持する暗号化鍵で暗号化されている。
【００８２】
送信部３９０は、共通暗号化鍵ＫＣで暗号化された本人の識別情報ＩＤと、本人の利用者用コンピュータ１００ａが保持する暗号化鍵で暗号化された本人とペアになった相手メンバーの識別情報ＩＤとを含むマッチング結果情報のセットを、中継用コンピュータ２００ａを介して利用者用コンピュータ１００ａへ送信する（ステップ６００、ステップ６１５）。利用者用コンピュータ１００ａの受信部１０２はマッチング結果を受信し（ステップ６２０）、受信したマッチング結果を復号部１７０へ渡す。復号部１７０は、加工鍵格納領域１３０から読み出した利用者用コンピュータ１００ａの暗号化鍵でマッチング結果を復号することにより、最終的に相手メンバーの識別情報ＩＤを取得する（ステップ６２５）。
【００８３】
以上のように、第２実施形態では、マッチング結果となりえる相手グループの全メンバーの識別情報を予め利用者用コンピュータ１００ａにおいてその利用者の暗号化鍵で暗号化してサービス提供者用コンピュータ３００ａ送る。そのため、利用者用コンピュータ１００ａの暗号化鍵をサービス提供者用コンピュータ３００ａに送る必要がない。また、マッチング結果はサービス提供者用コンピュータ３００ａにおいて暗号化される必要がないので、マッチング結果の暗号化に共通暗号化鍵が使用されることもない。そのため、マッチング結果の復号のために利用者用コンピュータ１００ａにおいて共通暗号化鍵を保持し続ける必要はなく、マッチング情報を作成した後は共通暗号化鍵を削除できる。言い換えると、利用者用コンピュータ１００ａは共通暗号化鍵を管理する必要がない。このことは、共通暗号化鍵の使用により優先度リストの内容やマッチング結果の秘匿性を維持するマッチング・サービスの安全性がより一層高まることを意味する。  
【００８４】
（第３実施形態）上述したように、ここでは第１実施形態に係るマッチング・サービスの提供と異なる構成及び動作についてのみ説明する。最初に、第３実施形態に係る加工鍵と加工情報の内容及び加工情報の作成方法を、図４を参照して説明する。
【００８５】
第３実施形態に係る利用者用コンピュータ１００ａの加工鍵格納領域１３０に格納される加工鍵は、相手グループの各メンバーの利用者用コンピュータ１００ａが保持する復号鍵に対応する暗号化鍵と、本人の利用者用コンピュータ１００ａが保持する復号鍵である。本実施形態では、相手グループの各メンバーと本人の利用者用コンピュータ１００ａが各々保持する復号鍵は公開鍵暗号化方式の秘密鍵であり、加工鍵格納領域１３０に格納される相手グループの各メンバーの暗号化鍵は、各メンバーの秘密鍵に対応する公開鍵である。加工情報作成部１５０は、加工鍵格納領域１３０から読み出した相手グループの各メンバーの公開鍵で識別表格納領域１１５から読み出した本人の識別情報を暗号化し、これを優先度情報一時格納領域１１０から読み出したメンバーの優先度情報に従って並べることで、加工情報としての暗号化済みリストを作成する。図１２に、本実施形態に係るメンバーＡの加工情報の例を示す。図１２ａ）はメンバーＡの優先度リストを示し、図１２ｂ）はメンバーＡの加工情報の例を示す。ここでＫｐＹはメンバーＹの公開鍵を表わす。なお第３の実施形態では、優先度情報一時格納領域１１０に格納された優先度情報は、加工情報が作成された後利用者用コンピュータ１００ａから削除される。
【００８６】
次に、加工情報作成後の利用者用コンピュータ１００ａ及びサービス提供者用コンピュータ３００ａにおける加工情報の取り扱いを、図１０を参照して説明する。加工情報作成部１５０により作成された暗号化済みリストは、第２暗号化部１５５によりサービス提供者の公開鍵KPで暗号化された後（ステップ５５０）、マッチング情報の１つとして中継用コンピュータ２００ａを介してサービス提供者用コンピュータ３００ａへ送信される（ステップ５５５、ステップ５７０）。なお第３実施形態においては、共通暗号化鍵格納領域１２０の共通暗号化鍵ＫＣはステップ５４０の後利用者用コンピュータ１００ａから削除される。
【００８７】
サービス提供者用コンピュータ３００ａにおいて受信された各メンバーの暗号化済みリストは、加工情報復号部３５０によりサービス提供者の秘密鍵KSで復号され（ステップ５９０）、共通暗号化鍵KCで暗号化されたその本人の識別情報ＩＤに関連付けて加工部３７０へ渡される。また本実施形態に係るマッチング実行部３６０は、マッチング結果として、共通暗号化鍵ＫＣで暗号化された本人の識別情報ＩＤに関連付けて、その本人の優先度リストにおける本人とペアになった相手メンバーの順位と、共通暗号化鍵KCで暗号化された上記相手メンバーの識別情報ＩＤとを加工部３７０へ渡す。加工部３７０は、各メンバーについて、本人の暗号化済みリストから、本人の優先度リストにおける本人とペアになった相手メンバーの順位と同じ順位に位置する本人の識別情報ＩＤを取り出すことにより、マッチング結果を当事者の利用者用コンピュータのみが復号できる状態に加工する。そして加工部３７０は、取り出した本人の識別情報を、共通暗号化鍵KCで暗号化された上記相手メンバーの識別情報と関連付けてマッチング結果格納部３８０に格納する（ステップ５９５）。
【００８８】
上記マッチング実行部３６０と加工部３７０の処理を、メンバーＡを例により具体的に説明する。マッチングの結果、マッチング実行部３６０が、enc_KC(IDA)のペアとしてenc_KC(IDG)を得たとする。するとマッチング実行部３６０は、図７ｄ）に示すメンバーＡの優先度リストから、enc_KC(IDG)の順位、すなわち順位２を読み出す。加工部３７０はマッチング実行部３６０から順位２を受け取り、図１２ｂ）に示すメンバーＡの加工情報から、順位２に位置する情報、すなわちenc_KPG(IDA)を取り出す。そして加工部３７０は、enc_ KPG(IDA)をenc_KC(IDG)に関連付けてマッチング結果格納部３８０に格納する。このように本人の暗号化済みリストから取り出された本人の識別情報は、上記相手メンバーの利用者用コンピュータ１００ａが保持する秘密鍵に対応する公開鍵で暗号化されている。
【００８９】
送信部３９０は、共通暗号化鍵KCで暗号化された本人の識別情報ＩＤとその本人の利用者用コンピュータ１００ａが保持する秘密鍵に対応する公開鍵で暗号化された、本人とペアになった相手メンバーの識別情報ＩＤとを含むマッチング結果情報のセットを、中継用コンピュータ２００ａを介して利用者用コンピュータ１００ａへ送信する（ステップ６００、ステップ６１５）。利用者用コンピュータ１００ａの受信部１０２は、マッチング結果を受信し（ステップ６２０）、受信したマッチング結果を復号部１７０へ渡す。復号部１７０は、加工鍵格納領域１３０から読み出した利用者用コンピュータ１００ａの秘密鍵でマッチング結果を復号し、最終的に相手メンバーの識別情報を取得する（ステップ６３０）。
【００９０】
以上のように、第３実施形態では、相手グループのメンバーにとってマッチング結果となりえる自分の識別情報を予め本人の利用者用コンピュータ１００ａにおいて相手が保持する復号鍵に対応する暗号化鍵で暗号化してサービス提供者用コンピュータ３００ａに送る。そのため利用者用コンピュータ１００ａの暗号化鍵をサービス提供者用コンピュータ３００ａに送る必要がない。また、マッチング結果はサービス提供者用コンピュータ３００ａにおいて暗号化される必要がないので、マッチング結果の暗号化に共通暗号化鍵が使用されることもない。そのため、マッチング結果の復号のために利用者用コンピュータ１００ａにおいて共通暗号化鍵を保持し続ける必要はなく、マッチング情報を作成した後は共通暗号化鍵を削除できる。言い換えると、利用者用コンピュータ１００ａは共通暗号化鍵を管理する必要がない。このことは、共通暗号化鍵の使用により優先度リストの内容やマッチング結果の秘匿性を維持するマッチング・サービスの安全性がより一層高まることを意味する。  
【００９１】
（第４実施形態）第４実施形態では、第１乃至第３実施形態と異なり、各メンバーの識別情報は中継用コンピュータ２００aにおいて暗号化される。そのため利用者用コンピュータ１００aは、中継用コンピュータ２００aが優先度リスト中の識別情報にアクセスできるような形で優先度リストを暗号化する。図１３は、第４実施形態に係る利用者用コンピュータ１００ｂの機能構成を示す。図１３に示すように、第４実施形態に係る利用者用コンピュータ１００ｂには、図４に示す優先度情報一時格納領域１１０、共通暗号化鍵格納領域１２０及び第１暗号化部は含まれない。また、本実施形態に係る利用者用コンピュータ１００ｂは、図４に示す加工情報作成部１５０の代わりに並び替え・逆並び替え情報生成部１８５を、また、図４に示す加工鍵格納領域１３０の代わりに並び替え・逆並び替え情報格納領域１９０を、更に図４に示す第２暗号化部１５５の代わりに暗号化部１９５を含む。
【００９２】
このように、第４実施形態では、ハードディスクドライブ４４０のハードディスクに格納された利用者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出すことにより、利用者用コンピュータ１００ｂを、受信部１０２、格納部１０５、優先度リスト作成部１４０、並び替え・逆並び替え情報生成部１８５、暗号化部１９５、マッチング情報作成部１６０、送信部１６５、及び復号部１７０として機能させる。格納部１０５はまた、識別表格納領域１１５、暗号化鍵格納領域１２５、並び替え・逆並び替え情報格納領域１９０、及び宛先情報格納領域１３５を含む。なお、図１３では各格納領域は便宜上同じ１つの格納部１０５内の領域として示されているが、現実には、例えばＨＤＤ４４０、ＦＤドライブ４８０等の物理的に異なる複数の記憶装置の領域としてもよい。
【００９３】
本実施形態では、２つのグループのまとめ役として選ばれたメンバーは、各メンバーに識別情報を割り当てるものとする。そこでまとめ役の利用者の利用者用プログラムは、利用者用コンピュータ１００ｂを更に、識別表作成部１７５として機能させる。識別表作成部１７５の他、各利用者コンピュータ１００ｂの識別表格納領域１１５、暗号化鍵格納領域１２５、宛先情報格納領域１３５については第１乃至第３実施形態と同じであるのでここでは説明を省略する。なお、本実施形態においても暗号化鍵格納領域１２５に格納されるサービス提供者の暗号化鍵はサービス提供者の公開鍵とする。
【００９４】
優先度リスト作成部１４０は、キーボードなどの入力装置を介して利用者用コンピュータ１００ｂのユーザである利用者から入力された相手グループのメンバーの優先度情報と、識別表格納領域１１５から読み出したメンバーとその識別情報の対応関係を示す識別表とを使用して、相手メンバーの識別情報を利用者の優先度順に並べた優先度リストを作成する。並び替え・逆並び替え情報生成部１８５は、優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報とを生成する。図１４に、４人のメンバーからなるグループについての並び替え・逆並び替え情報の例を示す。図１４ａ）はメンバーＡの並び替え情報であり、図１４ｂ）はメンバーＡの逆並び替え情報である。このように並び替え情報は順番を並び替えるものであればどのようなものでもよい。なお、要素をランダムに並び替えるアルゴリズムは複数存在し、例えばＣ言語の標準テンプレートライブラリにはｒａｎｄｏｍ＿ｓｈｕｆｆｌｅ（）が用意されている。そこで本発明においてはこのような既存のアルゴリズムを利用してもよく、または利用者が直接並び替え方法をキーボードなどの入力装置を介して直接入力してもよい。生成された並び替え・逆並び替え情報は並び替え・逆並び替え情報格納領域１９０に格納される。
【００９５】
暗号化部１９５は、優先度リスト作成部１４０から優先度リストと利用者本人の識別情報を受け取る。次に暗号化部１９５は、優先度リスト中の相手グループのメンバーの識別情報の並び順を、並び替え・逆並び替え情報格納領域１９０から読み出した並び替え情報に従って並び替える。ここで図１４ａ）に示す並び替え情報を使用して、優先度リスト中の識別情報の並び替えを具体的に説明する。メンバーＡからみた相手グループにはメンバーＥ、Ｆ、Ｇ、Ｈが属するとして、図１４ｃ）にメンバーＡの優先度リストの例を示す。この優先度リストの優先度順を図１４ａ）に示す並び替え情報に従って並び替えると、図１４ｄ）に示すようになる。暗号化部１９５はまた、暗号化鍵格納領域１２５からサービス提供者の公開鍵を読み出し、当該公開鍵で並び替え・逆並び替え情報格納領域１９０から読み出した逆並び替え情報を暗号化する。最後に暗号化部１９５は、利用者本人の識別情報、相手グループのメンバーの識別情報を並び替えた優先度リスト、及び暗号化した逆並び替え情報をマッチング情報作成部１６０へ渡す。
【００９６】
マッチング情報作成部１６０は、暗号化部１９５から渡された上記データに宛先情報格納領域１３５から読み出した利用者本人の宛先情報をあわせて、マッチング情報のセットを作成する。送信部１６５は、マッチング情報作成部１６０から渡されたマッチング情報のセットを中継用コンピュータ２００へ送信する。
【００９７】
受信部１０２はまた、中継用コンピュータ２００ｂから、マッチング結果である相手メンバーの識別情報が予めサービス提供者と利用者との間で取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストであって、識別情報が利用者本人の逆並び替え情報に基づいて並び替えられた結果リストを受信する。復号部１７０は、受信部１０２から渡された結果リスト中の識別情報を、並び替え・逆並び替え情報格納領域１９０から読み出した並び替え情報に従って並び替える。最後に復号部１７０は、並び順を元に戻した結果リストから、予め取り決めておいた順位に位置する相手グループのメンバーの識別情報を取り出すことで、最終的にマッチング結果を取得する。ここで上述したメンバーＡの例を用いて復号部１７０の復号処理を具体的に説明する。受信部１０２は、図１５ａ）に示す結果リストを受信したとする。なお結果リスト中の識別情報は中継用コンピュータ２００ｂにおいて既に復号されており、これについては図１６に関連して後述する。復号部１７０は、図１４ａ）に示すメンバーＡの並び替え情報に従って、結果リスト中の識別情報を並び替える。並び替えの結果、復号部１７０は図１５ｂ）に示す結果リストを得る。予め利用者とサービス提供者との間で取り決められた位置を順位１とすると、復号部１７０は順位１に位置するＩＤＧをメンバーＡとペアになった相手として取り出す。
【００９８】
図１６を参照して、第４実施形態に係る中継用コンピュータ２００ｂの機能構成を説明する。図１６に示すように、第４実施形態に係る中継用コンピュータ２００ｂは、図５に示す中継用コンピュータ２００ａの機能構成に加えて、共通暗号化鍵生成部２４０、共通暗号化鍵格納領域２５０、マッチング情報暗号化部２５５、マッチング結果復号部２６０を含む。このように第４実施形態では、ハードディスクドライブ４４０のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、中継用コンピュータ２００ｂを、受信部２０５、マッチング情報一時格納部２１０、宛先情報抽出部２１５、格納部２４５、共通暗号化鍵生成部２４０、マッチング情報暗号化部２５５、送信部２２５、マッチング結果一時格納部２３０、マッチング結果復号部２６０、及び宛先情報決定部２３５として機能させる。格納部２４５また、宛先情報格納領域２２０と共通暗号化鍵格納領域２５０とを含む。上記各格納部としては、一例としてＨＤＤ４４０を利用できる。なお、図１６では宛先情報格納領域２２０と共通暗号化鍵格納領域２５０は便宜上同じ１つの格納部２４５内の領域として示しているが、現実には物理的に異なる複数の記憶装置の領域としてよい。以下では新たに追加された構成要素を主として説明する。また第４実施形態においても、中継用コンピュータ２００ｂはサービス提供者からサービス利用者の宛先情報を隠しサービス利用者の宛先情報を管理するものであるため、好ましくはまとめ役として選ばれたサービス利用者のコンピュータによって実現される。  
【００９９】
受信部２０５は、各利用者用コンピュータ１００ｂから、マッチング情報のセットを受信する。中継用コンピュータ２００ｂにおいて受信されるマッチング情報のセットには、本人の宛先情報、本人の識別情報、相手グループのメンバーの識別情報を本人の優先度順に並べたものを本人が保持する並び替え情報に従って並べ替えた優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報が含まれる。宛先情報抽出部２１５は、マッチング情報一時格納部２１０から読み出したマッチング情報のセットから本人の宛先情報を抽出し、本人の識別情報に関連付けて宛先情報格納部２２０へ格納する。
【０１００】
共通暗号化鍵生成部２４０は、２つのグループの全メンバーに共通な共通暗号化鍵を生成する。なお、生成される共通暗号化鍵は、図４の共通暗号化鍵生成部１８０が生成する共通暗号化鍵と同じであるため、ここでは説明を省略する。共通暗号化鍵格納領域２５０は共通暗号化鍵生成部２４０が生成した共通暗号化鍵を格納する。マッチング情報暗号化部２５５は、宛先情報抽出部２１５から宛先情報が抽出された各メンバーのマッチング情報のセットを受け取り、本人の識別情報と優先度リストとを取り出す。そしてマッチング情報暗号化部２５５は、共通暗号化鍵格納領域２５０から読み出した共通暗号化鍵で、優先度リスト中のメンバーの識別情報と本人の識別情報とを暗号化する。ここで上述したメンバーＡの例を用いてマッチング情報暗号化部２５５の暗号化処理を具体的に説明する。マッチング情報暗号化部２５５は、受信した図１４ｄ）に示す識別情報を並び替えた後のメンバーＡの優先度リストに対し、リスト中の識別情報を共通暗号化鍵ＫＣで暗号化する。結果、マッチング情報暗号化部２５５は、図１４ｅ）に示す優先度リストを得る。
【０１０１】
送信部２２５は、マッチング情報暗号化部２５５から各メンバーの処理済のマッチング情報のセット、すなわち、共通暗号化鍵で暗号化された本人の識別情報、相手グループのメンバーの識別情報が共通暗号化鍵で暗号化されている優先度リスト、及びサービス提供者の暗号化鍵で暗号化された逆並び替え情報のセットを受け取り、サービス提供者用コンピュータ３００ｂへ送信する。
【０１０２】
受信部２０５はまた、サービス提供者用コンピュータ３００ｂから、各メンバーについて、共通暗号化鍵で暗号化された本人の識別情報、及び本人とペアになった相手メンバーの識別情報が予め取り決められた順位に位置するようにして作成された相手グループのメンバーの識別情報の結果リストであって、識別情報を更に本人の逆並び替え情報に基づいて並べ替えた結果リストを含むマッチング結果情報のセットを受信する。
【０１０３】
マッチング結果復号部２６０は、マッチング結果一時格納部２３０からマッチング結果情報のセットを受け取り、本人の識別情報と結果リストを取り出す。そして、マッチング結果復号部２６０は共通暗号化鍵格納領域２５０から読み出した共通暗号化鍵で、本人の識別情報と結果リスト中のメンバーの識別情報とを復号する。ここで上述したメンバーＡの例を用いてマッチング結果復号部２６０の復号処理を具体的に説明する。マッチング結果復号部２６０は、図１５ｄ）に示す結果リストを受信したとする。なお結果リスト中の識別情報はサービス提供者用コンピュータ３００ｂにおいて並び替えられており、これについては図１７に関連して後述する。マッチング結果復号部２６０は、図１５ｄ）に示す結果リストに対し、リスト中の識別情報を共通暗号化鍵で復号する。結果、マッチング情報暗号化部２５５は、図１５ａ）に示す結果リストを得る。宛先情報決定部２３５は、結果リストの宛先を、当該結果リストと同じマッチング結果情報のセットに含まれる本人の識別情報ＩＤを索引として宛先情報格納部２２０から読み出す。送信部２２５は、宛先情報決定部２３５が読み出した宛先情報の利用者のコンピュータ１００ｂへ、処理済のマッチング結果を送信する。
【０１０４】
図１７は、第４実施形態に係るサービス提供者用コンピュータ３００ｂの機能構成を示す。図１７に示すように、第４実施形態に係るサービス提供者用コンピュータ３００ｂの構成要素は、図６に示すサービス提供者用コンピュータ３００ａの構成要素と同じである。従って第４実施形態においても、ハードディスクドライブ４４０のハードディスクに格納されたサービス提供者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、サービス提供者用コンピュータ３００ｂを、受信部３１０、マッチング情報格納部３２０、復号鍵格納部３３０、リスト復号部３４０、加工情報復号部３５０、マッチング実行部３６０、加工部３７０、マッチング結果格納部３８０、及び送信部３９０として機能させる。また上記各格納部としては、一例としてＨＤＤ４４０を利用できる。
【０１０５】
しかしながら本実施形態では、サービス提供者用コンピュータ３００ｂにおいて受信される優先度リストは、第１乃至第３実施形態とは異なり、その優先度順が各メンバーの利用者用コンピュータのみが保持する並び替え情報に従って並べ替えられている。また、マッチング結果を加工する加工情報は各メンバーの優先度リストの優先度順の並べ替えを元に戻す逆並べ替え情報である。そのため、リスト復号部３４０と加工部３７０の詳細は図６を参照して説明したのと異なる。そこでここではリスト復号部３４０と加工部３７０を主として説明する。
【０１０６】
本実施形態に係るリスト復号部３４０は、マッチング情報格納部３２０から読み出した各メンバーの優先度リストの優先度順を、加工情報復号部３５０が復号鍵格納部３３０から読み出したサービス提供者の公開鍵で復号した加工情報、すなわち各メンバーの逆並び替え情報に基づいて並び替えて元に戻すことで優先度リストを復号する。また本実施形態に係るマッチング実行部３６０は、共通暗号化鍵で暗号化された本人の識別情報に関連付けて、その本人とペアになった相手メンバーの識別情報と相手グループの残りの他のメンバーの識別情報とを加工部３７０へ渡す。ここで、相手グループのメンバーの識別情報はすべて共通暗号化鍵で暗号化されている。更にまた加工情報復号部３５０は、共通暗号化鍵で暗号化された本人の識別情報に関連付けて、その本人の復号された逆並び替え情報を加工部３７０へ渡す。
【０１０７】
本実施形態に係る加工部３７０は、各メンバーについて、予め利用者とサービス提供者との間で取り決められた位置にペアになった相手メンバーの識別情報が位置するようにして、共通暗号化鍵で暗号化された相手グループのメンバーの識別情報の結果リストを作成する。そして加工部３７０は、作成した各メンバーの結果リストの識別情報の並びを、それぞれ本人の逆並び替え情報に基づいて並び替える。最後に加工部３７０は、結果リストを共通暗号化鍵で暗号化された本人の識別情報と関連付けてマッチング結果格納部３８０に格納する。ここで上述したメンバーＡの例を用いて加工部３７０の加工処理を具体的に説明する。マッチングの結果、マッチング実行部３６０が、enc_KC(IDA)のペアとしてenc_KC(IDG)を得たとする。また、予め利用者とサービス提供者との間で取り決められた位置は順位１とする。すると加工部３７０は、enc_KC(IDG)を順位１に置き、相手グループの残りのメンバーの識別情報を適当に並べて、図１５ｃ）に示すメンバーＡの結果リストを作成する。次に加工部３７０は、この結果リストの識別情報を図１４ｂ）に示すメンバーＡの逆並び替え情報に基づいて並び替え、最後に図１５ｄ）に示す逆並び替え後の結果リスト得る。
【０１０８】
次に図１８のフローチャートを参照して、第４実施形態に係るマッチング・サービスの提供の処理の流れの一例を説明する。まず、サービス提供者用コンピュータ３００ｂは、公開鍵ＫＰと秘密鍵ＫＳの一組の鍵を生成し（ステップ７００）、公開鍵ＫＰをそのホームページ上などに公開する（ステップ７０５）。このとき秘密鍵ＫＳはサービス提供者用コンピュータ３００ｂの復号鍵格納部３３０に格納される。サービスを利用する２つのグループの各メンバーの利用者コンピュータ１００ｂは公開鍵ＫＰをダウンロードするなどして入手し、暗号化鍵格納領域１２５に格納する（ステップ７１０）。
【０１０９】
まとめ役の利用者の利用者用コンピュータ１００ｂは、メンバーとその識別情報ＩＤの対応関係を示す識別表を作成する（ステップ７１５）。そして、まとめ役の利用者の利用者用コンピュータ１００ｂは、作成した識別表を各メンバーの利用者用コンピュータ１００ｂへ送信する（ステップ７２０）。各メンバーの利用者用コンピュータ１００ｂは識別表を受信し、識別表格納領域１１５へ格納する（ステップ７２５）。なお、ここではまとめ役の利用者の利用者用コンピュータ１００ｂが中継用コンピュータ２００としての役割も果たすものとする。
【０１１０】
利用者用コンピュータ１００ｂは、利用者からキーボード等の入力装置を介して相手グループのメンバーの優先度情報を取得し、識別表格納領域１１５から読み出した識別表を使用して、相手メンバーの識別情報ＩＤを利用者の優先度順に並べた優先度リストを作成する（ステップ７３０）。また利用者用コンピュータ１００ｂは、優先度リストの優先度順を並び替える並び替え情報と、当該並び替え情報に従う並び替えを元に戻す逆並び替え情報を生成し（ステップ７３５）、並び替え・逆並び替え情報格納領域１９０に格納する。そして利用者用コンピュータ１００ｂは、優先度リストの優先度順を、並び替え・逆並び替え情報格納領域１９０から読み出した並び替え情報に従って並び替える（ステップ７４０）。
【０１１１】
更に利用者用コンピュータ１００ｂは、並び替え・逆並び替え情報格納領域１９０から読み出した逆並び替え情報を、暗号化鍵格納領域１２５から読み出したサービス提供者の公開鍵KPで暗号化する（ステップ７４５）。最後に利用者用コンピュータ１００ｂは、宛先情報格納領域１３５から利用者本人の宛先情報を読み出し、利用者本人の識別情報、優先度順を並び替えた優先度リスト、サービス提供者の公開鍵KPで暗号化された逆並び替え情報と一緒にしてマッチング情報のセットを作成し、中継用コンピュータ２００ｂへ送信する（ステップ７５０）。  
【０１１２】
中継用コンピュータ２００ｂは、各メンバーの利用者用コンピュータ１００ｂからマッチング情報のセットを受信する（ステップ７５５）。次に中継用コンピュータ２００ｂは、受信した各メンバーのマッチング情報のセットから宛先情報を抽出し、本人の識別情報ＩＤと関連付けて宛先情報格納領域２２０へ格納する（ステップ７６０）。また中継用コンピュータ２００ｂは、共通暗号化鍵KCを生成し（ステップ７６５）、共通暗号化鍵格納領域２５０に格納する。そして中継用コンピュータ２００ｂは、受信した各メンバーのセットについて、本人の識別情報ＩＤ及び本人の優先度リスト内の相手グループのメンバーの識別情報ＩＤを、共通暗号化鍵格納領域２５０から読み出した共通暗号化鍵KCで暗号化する（ステップ７７０）。最後に中継用コンピュータ２００ｂは、宛先情報が抽出された各メンバーの処理済のマッチング情報のセットを、サービス提供者用コンピュータ３００ｂへ送信する（ステップ７７５）。  
【０１１３】
サービス提供者用コンピュータ３００ｂは、各メンバーのマッチング情報のセットを受信し、マッチング情報格納部３２０に格納する（ステップ７８０）。またサービス提供者用コンピュータ３００ｂは、復号鍵格納部３３０から読み出したサービス提供者の秘密鍵KSで、各メンバーの逆並び替え情報を復号する（ステップ７８５）。そしてサービス提供者用コンピュータ３００ｂは、各メンバーの優先度リストの優先度順を、それぞれ各メンバーの逆並び替え情報に基づいて並び替え元の優先度順に戻す（ステップ７９０）。次にサービス提供者用コンピュータ３００ｂは、本人の識別情報ＩＤ及び優先度リスト内の相手グループのメンバーの識別情報ＩＤは共通暗号化鍵KCで暗号化された状態のままで、全メンバーについての本人の識別情報ＩＤと優先度リストとに基づいて、２つのグループ間のマッチングを実行する（ステップ７９５）。なおマッチング結果であるペアになった相手の識別情報ＩＤは、共通暗号化鍵ＫＣで暗号化された状態で得られる。
【０１１４】
そしてサービス提供者用コンピュータ３００ｂは、各メンバーについて、本人とペアになった相手メンバーの識別情報ＩＤが予め取り決められた順位に位置するようにして、共通暗号化鍵KCで暗号化された相手グループのメンバーの識別情報ＩＤの結果リストを作成する。更にサービス提供者用コンピュータ３００ｂは、作成した各メンバーの結果リストの識別情報ＩＤの並びを、それぞれ各メンバーの逆並び替え情報に基づいて並べ替えることでマッチング結果を加工する（ステップ８００）。最後にサービス提供者用コンピュータ３００ｂは、共通暗号化鍵KCで暗号化された本人の識別情報ＩＤと加工済みの本人の結果リストを含むマッチング結果情報のセットを中継用コンピュータ２００ｂへ送信する（ステップ８０５）。
【０１１５】
中継用コンピュータ２００ｂは、各メンバーのマッチング結果情報のセットを受信する（ステップ８１０）。次に中継用コンピュータ２００ｂは、共通暗号化鍵格納領域２５０から読み出した共通暗号化鍵ＫＣで、各メンバーについて、本人の識別情報ＩＤ及び結果リスト内の相手グループのメンバーの識別情報ＩＤを復号する（ステップ８１５）。そして中継用コンピュータ２００ｂは、各メンバーのマッチング結果の宛先を、当該マッチング結果と同じマッチング結果情報のセットに含まれる本人の識別情報ＩＤを索引として宛先情報格納領域２２０から読み出し（ステップ８２０）、読み出した宛先情報の利用者のコンピュータ１００ｂへ処理済のマッチング結果を送信する（ステップ８２５）。
【０１１６】
利用者用コンピュータ１００ｂは、本人の処理済の結果リストを受信する（ステップ８３０）。そして、利用者用コンピュータ１００ｂは、並び替え・逆並び替え情報格納領域１９０から読み出した並び替え情報に従って、受信した結果リスト中の相手グループのメンバーの識別情報ＩＤの並びを並び替える。利用者用コンピュータ１００ｂは、そうして得られた結果リストにおいて、予め取り決めておいた順位に位置するメンバーの識別情報ＩＤを取り出すことにより、最終的にマッチング結果であるペアになった相手の識別情報を取得する（ステップ８３５）。
【０１１７】
以上のように、第４実施形態によれば、優先度リスト内の相手グループのメンバーの識別情報は、中継用コンピュータ２００ｂにおいて全メンバーに共通な共通暗号化鍵で暗号化される。また、マッチング結果である相手メンバーの識別情報も、中継用コンピュータ２００ｂにおいて共通暗号化鍵で復号される。その結果、第４実施形態においては全メンバーの利用者用コンピュータ１００ｂに共通暗号化鍵を配布する必要がなく、共通暗号化鍵の管理が容易になる。このことは、共通暗号化鍵の使用により優先度リストの内容やマッチング結果の秘匿性を維持するマッチング・サービスの安全性がより一層高まることを意味する。
【０１１８】
（第５実施形態）第５実施形態では、第４実施形態と同様に優先度リスト中の各メンバーの識別情報は、中継用コンピュータ２００ｃにおいて暗号化される。但し第５実施形態では第４実施形態と異なり、利用者用コンピュータ１００ｃがマッチングのため用意する情報は、複数の中継用コンピュータ２００ｃを介してサービス提供者用コンピュータ３００ｃへ送信される。従って、第４実施形態では中継用コンピュータ２００ｃは信頼できるコンピュータであることが前提となるが、本実施形態では少なくとも１つの中継用コンピュータ２００ｃを信頼できればよい。なお、複数の中継用コンピュータ２００ｃを介して情報が送信されることから、本実施形態ではより安全性を増すため、優先度リスト中の各メンバーの識別情報は利用者用コンピュータ１００ｃにおいて異なる値に変換される。また、マッチング結果は、サービス提供者用コンピュータ３００ｃにより当事者の利用者用コンピュータ１００ｃにおいてのみ復号できる状態に加工された後公開される。
【０１１９】
図１９は、第５実施形態に係る利用者用コンピュータ１００ｃの機能構成を示す。第５実施形態では、ハードディスクドライブ４４０のハードディスクに格納された利用者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出すことにより、利用者用コンピュータ１００ｃを、受信部１０２、格納部１０５、優先度リスト作成部１４０、並び替え関数・並び替え逆関数選択部５００、変換関数・変換逆関数選択部５１０、加工情報作成部５２０、第１適用部５３０、第２適用部５３５、暗号化部５４０、マッチング情報作成部１６０、送信部１６５、及び復号部５４５として機能させる。格納部１０５はまた、識別表格納領域１１５、並び替え関数・並び替え逆関数格納領域５０５、変換関数・変換逆関数格納領域５１５、暗号化鍵格納領域１２５、加工情報格納領域５２５を含む。なお、図１９では各格納領域は便宜上同じ１つの格納部１０５内の領域として示されているが、現実には、例えばＨＤＤ４４０、ＦＤドライブ４８０等の物理的に異なる複数の記憶装置の領域としてもよい。
【０１２０】
本実施形態では、２つのグループのまとめ役として選ばれたメンバーは、各メンバーに識別情報を割り当てるものとする。そこでまとめ役の利用者の利用者用プログラムは、利用者用コンピュータ１００ｂを更に、識別表作成部１７５として機能させる。なお、受信部１０２、識別表作成部１７５、識別表格納領域１１５、優先度リスト作成部１４０、暗号化鍵格納領域１２５は及びマッチング情報作成部１６０は、第１乃至第４実施形態で説明したのと基本的に同じであるのでここでは説明を省略する。但し本実施形態に係る暗号化鍵格納領域１２５にはサービス提供者の公開鍵だけでなく、複数の中継者の公開鍵も格納されるものとする。また本実施形態の識別表作成部１７５が各メンバーに割り当てる識別情報は次のようなものとする。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人、中継用コンピュータ２００ｃの数をt個とする。
【０１２１】
並び替え関数・並び替え逆関数選択部５００は、優先度リストの優先度順を並び替える並び替え関数と、当該並び替え関数に従う並び替えを元に戻す並び替え逆関数とを選択する。並び替え関数Aiは、恒等写像でない１対１写像であればどのようなものでもよい。上述したように並び替え関数の選択については、既存のアルゴリズムを利用してもよく、または利用者が直接並び替え方法をキーボードなどの入力装置を介して直接並び替えの方法を入力してもよい。選択された並び替え関数Ai、並び替え逆関数Ai-1は並び替え関数・並び替え逆関数格納領域５０５に格納される。なお以下では、並び替え関数Aiを優先度リストＬiに適用した結果をAi=>Lと表記する。
【０１２２】
変換関数・変換逆関数選択部５１０は、優先度リストLi=<x1,…,xn>の相手グループの各メンバーの識別情報xの値を異なる値に変換する変換関数と、当該変換関数に従う変換を元に戻す変換逆関数とを選択する。変換関数Biは、後述する各中継用コンピュータ２００ｃにおいて選択される変換関数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は変換関数・変換逆関数格納領域５１５に格納される。なお以下では、変換関数Biを優先度リストにリストされる各識別情報に適用した結果をBi=>Liと、更に並び替え関数Aiを適用した結果を、Ai, Bi=>Liと表記する。 
【０１２３】
加工情報作成部５２０は、マッチング結果を当事者の利用者用コンピュータ１００ｃのみが復号できる状態に加工するためにサービス提供者用コンピュータ３００ｃによって使用される加工情報を作成する。加工情報は、秘密鍵暗号化方式の暗号化鍵をサービス提供者用コンピュータ３００ｃの公開鍵で暗号化したものでよい。しかし本実施例では、後述する各メンバーのマッチング情報のセットの列のシャッフルのため加工情報として次のようなものを採用する。すなわち加工情報は２つの値を含み、mi(0)=g、ni(0)=gv(i)mod pとする。ここでvは、Zq={0,…,q-1}の要素である。作成された加工情報mi(0)、ni(0)、p、g及びv(i)は加工情報格納領域５２５に格納され、加工情報mi(0)、ni(0)は、マッチング情報作成部１６０に渡される。なお以下に記載する加工情報mi等の括弧つきの上付き文字は、例えば値０は利用者用コンピュータにおける処理後の値であることを、値jは、j番目の中継用コンピュータにおける処理後の値であることを示す。
【０１２４】
第１適用部５３０は、並び替え関数・並び替え逆関数格納領域５０５に格納された並び替え関数Aiを読み出し、優先度リスト作成部１４０から受け取った優先度リストLiに並び替え関数Aiを適用する。結果の優先度リストAi=>Liは第２適用部５３５に渡される。第２適用部５３５は、変換関数・変換逆関数格納領域５１５から変換関数Biを読み出し、第１適用部５３０から受け取った優先度リストAi=>Liに変換関数Biを適用する。第２適用部５３５はまた、識別表格納部１１５から本人の識別情報xiを読み出し、当該識別情報xiに変換関数Biを適用する。結果の優先度リストLi(0)=Ai, Bi=>Liと本人の識別情報Ii (0) =Bi (xi)はマッチング情報作成部１６０に渡される。 
【０１２５】
暗号化部５４０は、並び替え関数・並び替え逆関数格納領域５０５から読み出した並び替え逆関数Ai-1と、変換関数・変換逆関数格納領域５１５から読み出した変換逆関数Bi-1とを、暗号化鍵格納領域１２０から読み出した各中継用コンピュータ２００ｃの公開鍵E(j)、及びサービス提供者用コンピュータ３００ｃの公開鍵E(Q)で暗号化する。暗号化の順序は、各中継用コンピュータ２００ｃ及び提供者用コンピュータ３００ｃが利用者用コンピュータ１００ｃから情報を受信する順序と逆の順序である。すなわち暗号化部５４０は、並び替え逆関数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)))…)を取得し、マッチング情報作成部１６０に渡す。なお実際は、変換逆関数Bi-1それ自体を暗号化するのでなく、逆関数を構成するパラメータ、ここではk(i)’やp、を暗号化する。以下では記載を簡単にするため逆関数を構成するパラメータを意味するものとして逆関数を用いる。
【０１２６】
マッチング情報作成部１６０は、受け取った、本人の識別情報Ii (0)、優先度リストLi(0)、並び替え逆関Di(0)、変換逆関Ei(0)、加工情報mi(0)、ni(0)からマッチング情報のセットwi(0)を作成する。送信部１６５は、受け取ったマッチング情報のセットwi(0)を最初に情報を中継する中継用コンピュータ２００ｃに送信する。
【０１２７】
利用者用コンピュータ１００ｃは、サービス提供者によりマッチング結果が公開されると、マッチング結果を取得する。一例として、サービス提供者は各メンバーの加工情報を用いて加工したマッチング結果をそのホームページに公開し、利用者はサービス提供者のホームページからマッチング結果をすべてダウンロードする。受信部１０２は受信したマッチング結果を復号部５４５に渡す。復号部５４５は、加工情報格納領域５２５から加工情報p、v(i)を読み出し、マッチング結果の復号を試みる。復号できた場合マッチング結果はその利用者に対するマッチング結果である。後述するように、本実施形態に係るマッチング結果には、提出した優先度リストにおけるペアとなった相手メンバーの優先順位と、ペアとなった相手メンバーに送られる暗号化鍵と同一の暗号化鍵が含まれる。利用者は、マッチング結果に含まれる暗号化鍵を用いてペアとなった相手メンバーと暗号化通信を試みることにより、当該通信がマッチングの結果に基づくものであることを確認できる。
【０１２８】
図２０を参照して、第５実施形態に係る各中継用コンピュータ２００ｃの機能構成を説明する。第５実施形態では、ハードディスクドライブ４４０のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、中継用コンピュータ２００ｃを、受信部２０５、マッチング情報一時格納部２１０、格納部２４５、変換関数選択部６１０、適用部６２０、復号部６２５、マッチング情報再編成部６３０、送信部２２５として機能させる。格納部２４５また、復号鍵格納領域６０５と変換関数格納領域６１５とを含む。上記各格納部としては、一例としてＨＤＤ４４０を利用できる。なお、図２０では復号鍵格納領域６０５と変換関数格納領域６１５は便宜上同じ１つの格納部２４５内の領域として示しているが、現実には物理的に異なる複数の記憶装置の領域としてよい。なお、以下ではj番目に情報を中継する中継用コンピュータ２００ｃについて説明する。
【０１２９】
受信部２０５は、各利用者用コンピュータ１００ｃから直接またはひとつ前のj-1番目の中継者用コンピュータ２００ｃから各メンバーのマッチング情報のセットの列Rj-1=< w1(j-1),w2(j-1), …, wn(j-1)>を受信し、これをマッチング情報一時格納部２１０に一時的に格納する。各メンバーのマッチング情報のセットwi(j-1)には、本人の識別情報Ii (j-1)、優先度リストLi(j-1)、並び替え逆関数Di (j-1)、変換逆関数Ei (j-1)、加工情報mi(j-1)、ni(j-1)が含まれる。
【０１３０】
復号鍵格納領域６０５は、利用者用コンピュータ１００ｃにおいて予め取得される上述した中継者の公開鍵暗号化方式の公開鍵に対応する秘密鍵を格納する。なお、中継用コンピュータ２００ｃは予め一組の鍵を生成しておき、暗号化に使用する方の鍵をそのホームページ上に公開するなどして、サービス利用者がいつでも中継者の暗号化鍵を入手できるようしておく。
【０１３１】
変換関数選択部６１０は、受信した各メンバーの優先度リスト中の相手グループの各メンバーの識別情報の値を異なる値に変換する変換関数cjを選択する。変換関数cjは、上述したように各利用者用コンピュータ１００ｃにおいて選択される変換関数Biと順序を入れ替えても同一の結果が得られるもの、すなわちBicj=cjBiが成り立つものであればどのようなものでもよい。そのような変換関数cjの一例として、本実施例ではcj (x) = xu(j)mod pを選択する。ここでu(j)は、Zq={0,…,q-1}の要素である。選択された変換関数cjは変換関数格納領域６１５に格納される。 
【０１３２】
適用部６２０は、各メンバーのマッチング情報のセットwi(j-1)について、マッチング情報一時格納部２１０から本人の識別情報Ii (j-1)と優先度リストLi(j-1)を読み出し、変換関数格納領域６１５から読み出した変換関数cjをそれぞれ適用する。適用した結果の本人の識別情報Ii (j) = cj(Ii(j-1))と優先度リストLi(j)=cj=>Li(j-1)はマッチング情報再編成部６３０に渡される。
【０１３３】
復号部６２５は、各メンバーのマッチング情報のセットwi(j-1)について、マッチング情報一時格納部２１０から並び替え逆関数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)))…)を読み出し、復号鍵格納領域６０５から読み出した秘密鍵でそれぞれ復号する。復号した結果の並び替え逆関数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)))…)は、マッチング情報再編成部６３０に渡される。
【０１３４】
マッチング情報再編成部６３０は、各メンバーのマッチング情報のセットwi(j-1)について、マッチング情報一時格納部２１０から読み出したmi(j-1)とni(j-1)、適用部６２０から渡された本人の識別情報Ii(j)と優先度リストLi(j)、復号部６２５から渡された並び替え逆関数Di (j) 、変換逆関数Ei (j) を用いて、各メンバーのマッチング情報のセットを再編成し新しいマッチング情報のセットwi(j) を作成する。そしてマッチング情報再編成部６３０は、各メンバーの新たなマッチング情報のセットの列Rj=< w1(j), w2(j), …, wn(j)>を作成する。このときマッチング情報再編成部６３０は、受信したRj-1の要素wi(j-1)の並び順と送信するRjの要素wi(j)の並び順が異なるよう、各メンバーのマッチング情報のセットの列をランダムにシャッフルする。この結果、中継用コンピュータ２００ｃの入出力がモニターされたとしても、マッチング情報のセットがどのメンバーのものであるか分らない。  
【０１３５】
なお、上記シャッフルが有効であるためには、中継者用コンピュータ２００ｃが受信したRj-1の要素wi(j-1)と送信するRjの要素wi(j)は一部であっても同じであってはならない。例えばRj-1の３番目の要素w3(j-1)がRjの５番目の要素w5(j)に対応するとして、w3(j-1)に含まれる情報とw5(j)に含まれる情報が一部でも同じであれば、その同一の情報からRj-1の３番目の要素w3(j-1)がRjの５番目の要素w5(j)に対応することが分ってしまう。そこでマッチング情報再編成部６３０は、適当なh(j)（ここでh (j)は、Zq={0,…,q-1}の要素）を選択し、mi(j)= (mi(j-1))h(j)、 ni(j) = (ni(j-1)) h(j) を求める。以上よりマッチング情報再編成部６３０により作成される各メンバーのマッチング情報のセットwi(j)に含まれるのは、本人の識別情報Ii (j)、優先度リストLi(j) 、並び替え逆関数Di (j) 、変換逆関数Ei (j)、加工情報mi(j)、ni(j)である。
【０１３６】
送信部２２５は、マッチング情報再編成部６３０から各メンバーのマッチング情報のセットの列Rjを受け取り、次の中継用コンピュータ２００ｃへまたは当該中継用コンピュータ２００ｃが最後の中継用コンピュータ２００ｃである場合はサービス提供者用コンピュータ３００ｃへ送信する。
【０１３７】
図２１は、第５実施形態に係るサービス提供者用コンピュータ３００ｃの機能構成を示す。第５実施形態では、ハードディスクドライブ４４０のハードディスクに格納されたサービス提供者用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出し、サービス提供者用コンピュータ３００ｃを、受信部３１０、マッチング情報格納部３２０、復号鍵格納部７００、逆関数復号部７０５、第１適用部７１０、第２適用部７１５、マッチング実行部３６０、鍵生成部７２０、加工部３７０、マッチング結果格納部３８０、及び送信部３９０として機能させる。また上記各格納部としては、一例としてＨＤＤ４４０を利用できる。
【０１３８】
受信部は、最後のt番目の中継用コンピュータ２００ｃから、各メンバーのマッチング情報のセットの列Rt=< w1(t), w2(t), …, wn(t)>を受信し、これをマッチング情報格納部３２０に格納する。各メンバーのマッチング情報のセットwi(t)には、本人の識別情報Ii (t)、優先度リストLi(t)、並び替え逆関数Di (t)、変換逆関数Ei (t)、加工情報mi(t)、ni(t)が含まれる。
【０１３９】
復号鍵格納部７００は、利用者用コンピュータ１００ｃにおいて予め取得される上述したサービス提供者の公開鍵暗号化方式の公開鍵E(Q)に対応する秘密鍵を格納する。逆関数復号部７０５は、マッチング情報格納部３２０から各メンバーの並び替え逆関数Di (t)=enc_KE(Q) (Ai-1)と、変換逆関数Ei (t)= enc_KE(Q) (Bi-1)とを、本人の識別情報Ii (t) とともに読み出し、復号鍵格納部７００から読み出した秘密鍵でそれぞれ復号する。逆関数復号部７０５は、復号した結果である変換逆関数Bi-1を本人の識別情報Ii (t)に対応付けて第１適用部７１０に渡す。同様に、逆関数復号部７０５は復号した結果である並び替え逆関数Ai-1を本人の識別情報Ii (t)に対応付けて第２適用部７１５に渡す。
【０１４０】
第１適用部７１０は、逆関数復号部７０５から変換逆関数Bi-1と本人の識別情報Ii (t)とを受け取り、当該本人の識別情報Ii(t)に対応する優先度リストLi(t) をマッチング情報格納部３２０から読み出す。そして第１適用部７１０は、本人の識別情報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となる。第１適用部７１０は、得られた本人の識別情報ct(…(c1(xi)…)と優先度リスト( Ai, ct ,…, c1)=> Liとを、本人の識別情報Ii (t) に対応付けて第２適用部７１５に渡す。
【０１４１】
第２適用部７１５は、第１適用部７１０から受け取った優先度リスト(Ai, ct ,…, c1)=>Liに、逆関数復号部７０５から受け取った対応する並び替え逆関数Ai-1を適用する。適用の結果、優先度リストLi’ =C=>Liを得る。ここでCはt個の中継用コンピュータ２００ｃの変換関数の合成関数であり、C (x)=ct(…(c1(x)…)である。第２適用部７１５は、得られた優先度リストLi’と本人の識別情報C(xi)とを本人の識別情報Ii (t)に対応付けてマッチング実行部３６０へ渡す。
【０１４２】
マッチング実行部３６０は、第２適用部７１５から受け取った、各メンバーの本人の識別情報C(xi)とその優先度リストLi’=<C(x1),…,C(xn)>とに基づいてマッチングを実行する。本人の識別情報と優先度リストに優先度順にリストされた相手グループの各メンバーの識別情報は、t個の中継用コンピュータ２００ｃの変換関数の合成関数Cにより値を変換されているため、少なくとも１つの中継用コンピュータ２００ｃを信頼できる限り、サービス提供者及び第三者にサービスの利用者や優先度リストの内容が漏れることはない。
【０１４３】
その一方で、優先度リストLi’=<C(x1),…,C(xn)>の優先度順は、オリジナルの優先度リストLi=<x1,…,xn>の優先度順と同じであり、かつ合成関数Cは、C(xl)=C(xm)ならばxl = xmを満たすものである。従って、サービス提供者用コンピュータ３００ｃは、各メンバーの本人の識別情報C(xi)と優先度リストLi’から上述したマッチングを実行することが可能である。マッチング実行部３６０は、マッチングの結果として、ペアとなった相手の優先度リストにおける優先順位を本人の識別情報Ii (t)に対応付けて加工部３７０へ渡す。
【０１４４】
鍵生成部７２０は、互いに異なる複数の秘密鍵暗号化方式の秘密鍵をペアの数だけ生成し、加工部３７０へ渡す。本実施形態に係る加工部３７０は、マッチングにより求められたペアごとに、鍵生成部７２０から受け取った異なる秘密鍵を１つ選択する。そして加工部３７０は、選択した秘密鍵とマッチング結果を、そのペアとなったメンバーの識別情報に対応付けてマッチング情報格納部３２０に格納されている加工情報に基づいて、ペアとなったメンバーの利用者用コンピュータのみが復号できる状態に加工する。
【０１４５】
例えばメンバーxlとメンバーxmがペアとなり、メンバーxlは、メンバーxmの優先度リストの３番目にリストされており、メンバーxmは、メンバーxlの優先度リストの１番目にリストされていたとする。すると加工部３７０は、メンバーxlとメンバーxmのペアに対し秘密鍵を１つ選択し、当該秘密鍵と１番という順位を、メンバーxlの識別情報Il (t) に対応付けてマッチング情報格納部３２０に格納されている加工情報ml (t)、nl (t) に基づいて、メンバーxlの利用者用コンピュータのみが復号できる状態に加工する。また加工部３７０は、上記秘密鍵と３番という順位を、メンバーxmの識別情報Im (t) に対応付けてマッチング情報格納部３２０に格納されている加工情報mm (t)、nm (t) に基づいて、メンバーxmの利用者用コンピュータのみが復号できる状態に加工する。なお、サービス提供者はペアとなった相手メンバーが誰であるかは分らないが、優先度リストの何番目にリストされているかは分る。
【０１４６】
加工部３７０による加工の方法は次の通りである。まず、適当な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を求めることができる。そして加工部３７０は、各メンバーxiについて、マッチング結果と選択した秘密鍵を暗号化鍵Kiで暗号化し、これを返信用秘密鍵(mi(t))s(i)と関連付けてマッチング結果格納部３８０を介して送信部３９０へ渡す。
【０１４７】
送信部３９０は加工部３７０から受け取った返信用秘密鍵(mi(t))s(i) と、暗号化鍵Kiで暗号化されたマッチング結果及び秘密鍵とを、互いに関連付けてサービス提供者のホームページ等で公開するために、サーバへ送信する。
【０１４８】
次に図２２のフローチャートを参照して、第５実施形態に係るマッチング・サービスの提供の処理の流れの一例を説明する。前処理として、各中継者用コンピュータ２００ｃとサービス提供者用コンピュータ３００ｃはそれぞれ公開鍵と秘密鍵の一組の鍵を生成して公開鍵を公開し、秘密鍵はそれぞれ復号鍵格納領域６０５、７００に格納しておくものとする。一方、各利用者用コンピュータ１００ｃはそれら複数の中継者の公開鍵とサービス提供者の公開鍵を入手し、暗号化鍵格納領域１２５に格納しておくものとする。
【０１４９】
また、まとめ役の利用者の利用者用コンピュータ１００ｃは、メンバーとその識別情報の対応関係を示す識別表を作成し、メンバーの利用者用コンピュータ１００ｃはそれぞれ識別表を受信し、識別表格納領域１１５へ格納しておくものとする。
【０１５０】
そして処理は開始し、まず利用者用コンピュータ１００ｃは、利用者からキーボード等の入力装置を介して相手グループのメンバーの優先度情報を取得し、識別表格納領域１１５から読み出した識別表を使用して、相手メンバーの識別情報を利用者の優先度順に並べた優先度リストを作成する（ステップ１０００）。また利用者用コンピュータ１００ｃは、優先度リストの優先度順を並び替える並び替え関数と、並び替え情報に従う並び替えを元に戻す並び替え逆関数を選択し（ステップ１００５）、並び替え関数・並び替え逆関数格納領域５０５に格納する。そして利用者用コンピュータ１００ｃは、優先度リストの優先度順を、並び替え関数・並び替え逆関数格納領域５０５から読み出した並び替え関数に従って並び替える（ステップ１０１０）。
【０１５１】
また利用者用コンピュータ１００ｃは、優先度リスト中の相手グループの各メンバーの識別情報の値を異なる値に変換する変換関数と、変換関数に従う変換を元に戻す変換逆関数を選択し（ステップ１０１５）、変換関数・変換逆関数格納領域５１５に格納する。そして利用者用コンピュータ１００ｃは、優先度リストの各メンバーの識別情報と本人の識別情報を、変換関数・変換逆関数格納領域５１５から読み出した変換関数に従って変換する（ステップ１０２０）。なお、上記優先度順の並び替えと識別情報の値の変換はどちらを先に行ってもよい。
【０１５２】
次に利用者用コンピュータ１００ｃは、並び替え関数・並び替え逆関数格納領域５０５から読み出した並び替え逆関数と、変換関数・変換逆関数格納領域５１５から読み出した変換逆関数とを、暗号化鍵格納領域１２５から読み出したサービス提供者の公開鍵と複数の中継者の複数の公開鍵で暗号化する（ステップ１０２５）。利用者用コンピュータ１００ｃはまた、サービス利用者がマッチング結果を当事者の利用者用コンピュータ１００ｃのみが復号できるような状態に加工するために使用する加工情報を作成する（ステップ１０３０）。
【０１５３】
最後に利用者用コンピュータ１００ｃは、処理済の利用者の識別情報、優先度リスト、及び変換逆関数並びに並び替え逆関数と、加工情報とを含むセットwi(0)を作成し、最初の中継用コンピュータ２００ｂへ送信する（ステップ１０３５）。  
【０１５４】
j番目（j=1〜t）の中継用コンピュータ２００ｃは、各メンバーの利用者用コンピュータ１００ｃから直接に又はj-1番目の中継用コンピュータ２００ｃを介して、各メンバーのマッチング情報のセットの列Rj-1=< w1(j-1),w2(j-1), …, wn(j-1)>を受信する（ステップ１０４０）。中継用コンピュータ２００ｃは、受信した各メンバーのマッチング情報のセットwi(j-1) に含まれる本人の識別情報と優先度リスト中の相手グループの各メンバーの識別情報とを異なる値に変換する変換関数を選択し（ステップ１０４５）、それら識別情報の値を選択した変換関数を用いて変換する（ステップ１０５０）。
【０１５５】
中継用コンピュータ２００ｃはまた、受信した各メンバーのマッチング情報のセットwi(j-1)に含まれる各メンバーの変換逆関数及び並び替え逆関数を、復号鍵格納領域６０５から読み出した、本中継用コンピュータ２００ｃの公開鍵に対応する秘密鍵で復号する（ステップ１０５５）。最後に中継用コンピュータ２００ｃは、各メンバーについて、処理が終わった、本人の識別情報、優先度リスト、変換逆関数、並び替え逆関数と、加工情報とを含む新たなマッチング情報のセットwi(j)を作成する。そして中継用コンピュータ２００ｃは、j+1番目の中継用コンピュータ２００ｃへ又は本中継用コンピュータ２００ｃが情報を中継する最後の中継用コンピュータ２００ｃである場合はサービス提供者用コンピュータ３００ｃへ、新たなマッチング情報のセットの列Rj=< w1(j), w2(j),…, wn(j)>を送信する（ステップ１０６０）。
【０１５６】
ステップ９６０において中継用コンピュータ２００ｃが送信する各メンバーのマッチング情報のセットの列Rj=< w1(j), w2(j),…, wn(j)>は、wi(j)の並び順が受信したRj-1におけるwi(j-1)の並び順と異なるようにランダムにシャッフルされていることが好ましい。この場合シャッフルが有効に機能するように、中継用コンピュータ２００ｃは適切に加工情報を変換し、wi(j-1)に含まれる情報は一部であってもそのままwi(j)に含まれることがないようにする。  
【０１５７】
サービス提供者用コンピュータ３００ｃは、複数の中継用コンピュータ２００ｃを介して、各メンバーのマッチング情報のセットの列Rt=< w1(t), w2(t),…, wn(t)>を受信し、マッチング情報格納部３２０に格納する（ステップ１０６５）。受信時において各メンバーのマッチング情報のセットwi(t)に含まれる本人の識別情報と優先度リスト中の相手グループの各メンバーの識別情報は、同一メンバーの識別情報であっても異なる値を示す。これは、各中継用コンピュータ２００ｃが選択した変換関数は、全メンバーの優先度リスト中の識別情報と本人の識別情報とに等しく適用されるが、各利用者用コンピュータ１００ｃが選択した変換関数はその本人の優先度リスト中の識別情報とその本人の識別情報にのみ適用されるからである。
【０１５８】
そこでサービス提供者用コンピュータ３００ｃはまず、復号鍵格納部７００から読み出したサービス提供者の秘密鍵で、各メンバーのマッチング情報のセットwi(t)に含まれる変換逆関数と並び替え逆関数を復号する（ステップ１０７０）。そしてサービス提供者用コンピュータ３００ｃは、各メンバーのマッチング情報のセットwi(t)に含まれる本人の識別情報と優先度リスト中の相手グループの各メンバーの識別情報に、対応する変換逆関数を適用する（ステップ１０７５）。その結果各メンバーの優先度リスト中の識別情報及び本人の識別情報は、各メンバーが選択した変換関数による変換については元に戻されたため、同一の識別情報であれば同一の値を示す。その一方で、各メンバーの優先度リスト中の識別情報及び本人の識別情報は、各中継用コンピュータ２００ｃがそれぞれ選択した複数の変換関数については変換された状態のままであるため、サービス提供者は優先度リストの内容を知ることはできない。
【０１５９】
また、サービス提供者用コンピュータ３００ｃは、各メンバーのマッチング情報のセットwi(t)に含まれる優先度リストに、対応する並び替え逆関数を適用する（ステップ１０８０）。その結果各メンバーの優先度リストの優先度順は各メンバーが決定した元の優先度順に戻される。なお変換逆関数の適用と、並び替え逆関数の適用の順番はどちらが先でもよい。  
【０１６０】
そしてサービス提供者用コンピュータ３００ｃは、本人の識別情報の値及び優先度リスト中の相手グループの各メンバーの識別情報の値は各中継用コンピュータ２００ｃが選択した変換関数により変換された状態のまま、全メンバーの本人の識別情報と優先度リストに基づいて２つのグループ間のマッチングを実行する（ステップ１０８５）。
【０１６１】
次にサービス提供者用コンピュータ３００ｃは、マッチングにより求められたペアごとに異なる暗号化鍵を生成する（ステップ１０９０）。暗号化鍵は秘密鍵暗号化方式の鍵でよい。そしてサービス提供者用コンピュータ３００ｃは、生成した暗号化鍵とマッチングの結果を、ペアとなったメンバーの識別情報に対応付けてマッチング情報格納部３２０に格納されている加工情報に基づいて、そのメンバーの利用者用コンピュータ１００ｃのみが復号できる状態に加工する（ステップ１０９５）。ここでマッチングの結果は、当事者の優先度リストにおける、ペアとなった相手グループのメンバーの優先順位である。
【０１６２】
最後にサービス提供者用コンピュータ３００ｃは、そのホームページに掲載するなどしてマッチング結果を各メンバーに公開するために、各メンバーの加工済みの暗号化鍵とマッチングの結果を公開サーバに送信する（ステップ１１００）。
【０１６３】
公開サーバによりマッチング結果が公開されると、利用者用コンピュータ１００ｃは公開サーバに全てのマッチング結果を要求し、全てのマッチング結果を受信する（ステップ１１０５）。そして利用者用コンピュータ１００ｃは、加工情報格納領域５２５から読み出した加工情報に基づいて、受信したマッチング結果の復号を１つずつ試みる（ステップ１１１０）。復号できたマッチング結果が、その利用者用コンピュータ１００ｃのマッチング結果となる。
【０１６４】
マッチング結果には、本人の優先度リストにおける、ペアとなった相手グループのメンバーの優先順位と、好ましくはペアとなった相手グループのメンバーのマッチング結果に含まれるのと同じ秘密鍵が含まれる。そこで利用者用コンピュータ１００ｃは、復号できたマッチング結果に含まれる優先順位に位置する相手グループのメンバを自身の優先度リストから求め、ペアとなった相手と、マッチング結果に含まれる暗号化鍵を用いて、暗号化通信を試みる（ステップ１１１５）。
【０１６５】
以上のように、第５実施形態によれば、利用者の優先度リスト内の相手グループのメンバーの識別情報は、等しく複数の中継用コンピュータ２００ｂにおいて値を変換される。また、マッチング結果は本人のみが復号できるような状態に加工され公開される。従って、本実施形態では少なくとも１つの中継用コンピュータ２００ｃを信頼できれば、優先度リストの内容やマッチング結果の秘匿性を維持することができ、マッチング・サービスの安全性がより一層高まる。
【０１６６】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。また本発明は、サプライヤーとバイヤー間のマッチングなどの取引相手の決定だけでなく、ゲームにおける対戦相手の決定、パーティでの席順の決定などマッチングでペアを決定し得るものであれば制限なく適用できる。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【０１６７】
【図１】本発明の１実施形態に係るマッチング・サービスを提供するためのシステム全体の構成の一例を示す図である。
【図２】本実施形態に係る利用者用コンピュータ１００、中継用コンピュータ２００、サービス提供者用コンピュータ３００のハードウェア構成の一例を示す。
【図３】Ｇａｌｅ−Ｓｈａｐｌｅｙのアルゴリズムに従ったマッチングの処理の流れの一例を示すフローチャートである。
【図４】第１乃至第３実施形態に係る利用者用コンピュータ１００ａの機能構成の一例を示す図である。
【図５】第１乃至第３実施形態に係る中継用コンピュータ２００ａの機能構成の一例を示す図である。
【図６】第１乃至第３実施形態に係るサービス提供者用コンピュータ３００ａの機能構成の一例を示す図である。
【図７】ａ）はメンバーとその識別情報の対応関係を示す識別表の一例を示す。ｂ）はメンバーＡの優先度情報の一例を示す。ｃ）はメンバーＡの優先度リストを示す。ｄ）はリスト中の識別情報を暗号化した後のメンバーＡの優先度リストを示す。
【図８】中継用コンピュータが保持する、各メンバーの宛先情報を示す表の一例を示す。
【図９】ａ）はサービス提供者用コンピュータが保持する、各メンバーのマッチング情報の一覧表の一例を示す。ｂ）はサービス提供者用コンピュータが保持する、各メンバーのマッチング結果の一覧表の一例を示す。
【図１０】第１乃至第３実施形態に係るマッチング・サービスの提供する処理の流れの一例を示すフローチャートを示す図である。
【図１１】ａ）は第２実施形態に係るマッチング・サービスにおける利用者の優先度リストの一例を示す。ｂ）は第２実施形態に係るマッチング・サービスにおける利用者の加工情報の一例を示す。
【図１２】ａ）は第３実施形態に係るマッチング・サービスにおける利用者の優先度リストの一例を示す。ｂ）は第３実施形態に係るマッチング・サービスにおける利用者の加工情報の一例を示す。
【図１３】第４実施形態に係る利用者用コンピュータ１００ｂの機能構成の一例を示す図である。
【図１４】ａ）はメンバーＡの並び替え情報の一例を示す。ｂ）はａ）に示す並び替え情報と対をなす逆並び替え情報の一例を示す。ｃ）はメンバーＡの優先度リストの一例を示す。ｄ）はリスト中の識別情報を並び替えた後のメンバーＡの優先度リストを示す。ｅ）リスト中の識別情報を暗号化した後のメンバーＡの優先度リストを示す。
【図１５】ａ）識別情報復号後のメンバーＡの結果リストの一例を示す。ｂ）は順位並び替え後のメンバーＡの結果リストの一例を示す。ｃ）はメンバーＡの結果リストの一例を示す。ｄ）は順位逆並び替え後のメンバーＡの結果リストの一例を示す。
【図１６】第４実施形態に係る中継用コンピュータ２００ｂの機能構成の一例を示す図である。
【図１７】第４実施形態に係るサービス提供者用コンピュータ３００ｂの機能構成の一例を示す図である。
【図１８】第４実施形態に係るマッチング・サービスの提供する処理の流れの一例を示すフローチャートを示す図である。
【図１９】第５実施形態に係る利用者用コンピュータ１００ｃの機能構成の一例を示す図である。
【図２０】第５実施形態に係る中継用コンピュータ２００ｃの機能構成の一例を示す図である。
【図２１】第５実施形態に係るサービス提供者用コンピュータ３００ｃの機能構成の一例を示す図である。
【図２２】第５実施形態に係るマッチング・サービスの提供する処理の流れの一例を示すフローチャートを示す図である。
【図１】
2008021295.tif 000003
【図２】
2008021295.tif 000004
【図３】
2008021295.tif 000005
【図４】
2008021295.tif 000006
【図５】
2008021295.tif 000007
【図６】
2008021295.tif 000008
【図７】
2008021295.tif 000009
【図８】
2008021295.tif 000010
【図９】
2008021295.tif 000011
【図１０】
2008021295.tif 000012
【図１１】
2008021295.tif 000013
【図１２】
2008021295.tif 000014
【図１３】
2008021295.tif 000015
【図１４】
2008021295.tif 000016
【図１５】
2008021295.tif 000017
【図１６】
2008021295.tif 000018
【図１７】
2008021295.tif 000019
【図１８】
2008021295.tif 000020
【図１９】
2008021295.tif 000021
【図２０】
2008021295.tif 000022
【図２１】
2008021295.tif 000023
【図２２】
2008021295.tif 000024