以下に図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態1にかかる情報処理方法の一実施例を示す説明図である。図1において、情報処理装置101は、暗号化されたデータ同士を照合するコンピュータである。暗号化されたデータ同士の照合とは、例えば、暗号化されたデータ同士を突き合わせて一致するか否かを判定することである。
暗号化されたデータの元の平文(元データ)は、マッチング対象となるユーザについてのデータであり、例えば、属性情報や要件情報である。属性情報は、ユーザの属性を示す情報である。要件情報は、ユーザが要求する属性に対する条件(興味など)を示す情報である。
マッチングシステムにおいて、ユーザ同士のマッチングは、例えば、ユーザが提出する属性情報と、別のユーザが提出する属性への興味とを突合することで行われる。求人マッチングを例に挙げると、学生が提出する属性情報(年齢、学歴、職歴など)と、企業が提出する雇用条件(年齢、学歴、職歴など)とを突合することでマッチングが行われる。
しかし、既存のマッチングシステムでは、ユーザが提出する属性情報の正しさを厳密には要求しない、もしくは要求したとしても、その正しさのチェックを自動化していない場合があり、属性情報の真正性を担保することが難しい。例えば、求人マッチングにおいて、学生は自らの学歴や成績などを提出するものの、その正しさの証明は義務化されていない場合が多く、また、その正しさを自動的にチェックする機構が用意されていない場合が多い。
また、マッチングシステムにおいて、ユーザは、自らのパーソナルデータを、マッチングシステムの運営者に無加工のまま提出する場合がある。この場合、運営者に多くのパーソナルデータが蓄積されていくことになり、ユーザがプライバシーに懸念を抱いたり、運営者が漏洩時のリスクを考慮したりすることになる。
ここで、属性情報の真正性の課題に関しては、既存の各種電子署名方式を用いて、ユーザが提出する属性情報に信頼できる第三者が署名することで、真正性を検証可能にすることができる。しかし、電子署名方式だけでは、プライバシーの課題を解決することはできない。
一方、プライバシーの課題に関しては、Relational Hash(非特許文献1)などの既存技術を用いることで、ユーザの提出した属性情報および属性への興味を秘匿したまま、第三者に突合させることが可能である。しかし、Relational Hash方式だけでは、属性情報の真正性の課題を解決することはできない。
Relational Hashとは、ある関係性(例えば、等しいという関係性)を満たす2つの平文について、ある鍵を用いてハッシュ化する方法であって、その鍵を知る第三者が元の平文を知ることなしに、その2つの平文が関係性を満たすかどうかを知ることができる技術である。なお、Relational Hashについては、例えば、下記非特許文献1を参照することができる。
非特許文献1:Mandal, Avradip, and Arnab Roy. “Relational hash: probabilistic hash for verifying relations, secure against forgery and more.” Annual Cryptology Conference. Springer, Berlin, Heidelberg,2015.
ここで、Relational Hash方式を求人マッチングに適用した場合を例に挙げて、属性情報の真正性の課題について説明する。まず、信頼できる第三者が鍵を一つ用意し、ユーザ同士で共有する。学生は、ハッシュ関数Hash1を用いて、提出する属性情報(学歴)をハッシュ化する。企業は、ハッシュ関数Hash2を用いて、属性への興味である求人要件(学歴)をハッシュ化する。
そして、マッチング事業者は、信頼できる第三者から提供される同じ鍵を用いて、ハッシュ値の元の平文を知らずに突合を行う。この際、マッチング事業者は、2つの文字列(ハッシュ値)が、元々等しい平文のハッシュであること、または、元々異なる平文のハッシュであることを検知することができるが、元の平文の内容を知ることはできない。したがって、学生の学歴に関するプライバシーは保護される。
このように、Relational Hash方式では、プライバシーの課題を解決する一方で、属性情報の真正性の課題を解決することができない。また、属性情報の正しさを担保する技術として、電子署名技術があるが、平文に対する署名は、ハッシュ値に対する署名ではないため、そのまま適用することはできない。
例えば、Relational Hash方式を求人マッチングに適用した場合において、学生の属性情報(学歴)に電子署名が付与されており、属性情報(学歴)に対する真正性が担保されているとする。しかし、属性情報(学歴)のハッシュ値に対しては、その電子署名は有効ではないため、真正性を担保することができない。
なお、既存の電子署名技術を利用して、属性情報(学歴)のハッシュ値に再度署名を依頼することが考えられる。例えば、属性情報(学歴)が学生の卒業大学名、属性情報に付与された電子署名がその卒業大学による署名であるとする。この場合、属性情報(学歴)のハッシュ値に対しても、卒業大学の署名を付与してもらう方法が考えられる。
しかし、この方法では、大学側は、ハッシュ値に署名を発行することになる。したがって、大学側は、そのハッシュ値がどの平文のハッシュ値なのかを了解する必要がある。ところが、Relational Hashにおけるハッシュ化は、確率的アルゴリズムである。
このため、大学側に、例えば、平文m、ハッシュ値H、ハッシュ関数Hash1を提示しても、「ハッシュ値Hが平文mをハッシュ関数Hash1によってハッシュ化したものである」ことを大学側が確かめることは難しい。さらに、この方法は、署名を発行する大学への新たなアプリケーションの開発なども要請するため、マッチングシステムの運用コストの増大を招くおそれがある。
そこで、本実施の形態では、マッチング対象となるユーザについてのデータの内容を第三者に秘匿しつつ、データの真正性を担保する情報処理方法について説明する。以下、情報処理装置101の処理例(下記(1)~(5))について説明する。
(1)情報処理装置101は、第1暗号化データ111と電子署名112と証明情報113とを受け付ける。ここで、第1暗号化データ111は、第1鍵k1を用いた指数化により第1データ110を暗号化した情報(暗号文)である。第1データ110は、マッチング対象となる第1ユーザ103についてのデータであり、例えば、第1ユーザ103の属性を示す属性情報である。
第1鍵k1は、暗号化に用いられる鍵であり、第1ユーザ103によって生成されて、管理装置102において管理されている。電子署名112は、第1データ110に付与されている署名であり、例えば、署名者の公開鍵を用いて第1データ110の真正性を検証可能な情報である。
証明情報113は、電子署名112が第1暗号化データ111の元データの真正性を検証可能な情報であることを証明するための情報である。証明情報113は、例えば、電子署名112が署名者の公開鍵を用いて第1暗号化データ111の元データの真正性を検証可能な情報であることを証明するためのゼロ知識証明文を含む。ゼロ知識証明とは、自分が秘密情報を知っているという事実を、検証者に対して秘密情報そのものを開示せずに証明する手法である。
(2)情報処理装置101は、第2暗号化データ121を受け付ける。ここで、第2暗号化データ121は、第2鍵k2を用いた指数化により第2データ120を暗号化した情報(暗号文)である。第2データ120は、マッチング対象となる第2ユーザ104についてのデータであり、例えば、第2ユーザ104が要求する属性に対する条件を示す要件情報である。第2鍵k2は、暗号化に用いられる鍵であり、第2ユーザ104によって生成されて、管理装置102において管理されている。
(3)情報処理装置101は、証明情報113を用いて電子署名112の正当性を検証する。情報処理装置101は、証明情報113を用いて電子署名112の正当性を検証することによって、第1暗号化データ111の真正性を担保し、ひいては、第1暗号化データ111の元データ(第1データ110)の真正性を担保する。
具体的には、例えば、情報処理装置101は、公開鍵と電子署名112と第1暗号化データ111とを用いて、証明情報113に含まれるゼロ知識証明文を証明することによって、電子署名112の正当性を検証する。公開鍵は、例えば、証明情報113に含まれていてもよく、また、電子署名112の署名者から取得されてもよい。
(4)情報処理装置101は、管理装置102から、第1演算結果130を取得する。第1演算結果130は、所定の関数Fを用いて第1鍵k1および第2鍵k2から演算された演算結果である。所定の関数Fは、例えば、双準同型性のある演算を行うペアリング関数である。管理装置102は、信頼できる第三者の一例であり、第1鍵k1および第2鍵k2を外部に公開しないように管理する。
(5)情報処理装置101は、取得した第1演算結果130と、所定の関数Fを用いて第1暗号化データ111および第2暗号化データ121から演算される第2演算結果140とを照合する。具体的には、例えば、情報処理装置101は、所定の関数Fの双準同型性を利用して、第1演算結果130と第2演算結果140とが一致するか否かを判定することにより、元データ同士(第1データ110、第2データ120)が等しいかどうかを判断する。
このように、情報処理装置101によれば、マッチング対象となるユーザについてのデータの内容を第三者に秘匿しつつ、データの真正性を担保することができる。例えば、第1データ110の秘匿に指数化による暗号化を用いることで、第1暗号化データ111を簡単化してゼロ知識証明文といった証明情報113を生成することが可能になり、署名された第1データ110の真正性を担保することができる。さらに、第1暗号化データ111にも署名するというアプローチをとらないため、署名者に依頼してさらに署名を発行してもらうといった手続きを行わなくてもよい。また、例えば、指数化による暗号化とペアリングの双準同型性を用いることで、第1ユーザ103、第2ユーザ104についての第1データ110、第2データ120の内容を第三者(例えば、マッチング事業者)に秘匿しつつ、ユーザ同士のマッチングを行うことができる。
(情報処理システム200のシステム構成例)
つぎに、実施の形態1にかかる情報処理システム200のシステム構成例について説明する。情報処理システム200は、例えば、求人マッチング、リソースマッチング、フリーマーケット、マッチングアプリなどのマッチングシステムに適用される。
以下の説明では、図1に示した情報処理装置101を、情報処理システム200内のマッチング装置201に適用した場合を例に挙げて説明する。また、図1に示した管理装置102を、情報処理システム200内の鍵管理サーバ202に適用した場合を例に挙げて説明する。
図2は、情報処理システム200のシステム構成例を示す説明図である。図2において、情報処理システム200は、マッチング装置201と、鍵管理サーバ202と、クライアント端末C1~Cn(n:2以上の自然数)と、を含む。情報処理システム200において、マッチング装置201、鍵管理サーバ202およびクライアント端末C1~Cnは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
ここで、マッチング装置201は、暗号化されたデータ同士のマッチングを行うコンピュータである。マッチング装置201は、例えば、マッチングシステムを提供する事業者(マッチング事業者)のサーバである。
鍵管理サーバ202は、鍵保管DB(Database)220を有し、データを暗号化するための鍵を管理するコンピュータである。鍵は、例えば、クライアント端末C1~Cnにおいて生成される。鍵管理サーバ202は、例えば、マッチングに関わる当事者(ユーザ、マッチング事業者)以外の信頼できる第三者のサーバである。
なお、鍵保管DB220の記憶内容については、図4を用いて後述する。
クライアント端末C1~Cnは、情報処理システム200のユーザが使用するコンピュータである。クライアント端末C1~Cnは、例えば、PC(Personal Computer)、タブレットPC、スマートフォンなどである。なお、図1に示した第1ユーザ103および第2ユーザ104は、例えば、情報処理システム200のユーザに相当する。
以下の説明では、クライアント端末C1~Cnのうちの任意のクライアント端末を「クライアント端末Ci」と表記する場合がある(i=1,2,…,n)。
(マッチング装置201等のハードウェア構成例)
つぎに、図3を用いて、マッチング装置201、鍵管理サーバ202およびクライアント端末Ciのハードウェア構成例について説明する。ここでは、マッチング装置201、鍵管理サーバ202およびクライアント端末Ciを「マッチング装置201等」と表記する。
図3は、マッチング装置201等のハードウェア構成例を示すブロック図である。図3において、マッチング装置201等は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、マッチング装置201等の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータに接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、マッチング装置201等は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、マッチング装置201等は、上述した構成部のうち、例えば、可搬型記録媒体I/F306、可搬型記録媒体307を有さないことにしてもよい。
(鍵保管DB220の記憶内容)
つぎに、鍵管理サーバ202が有する鍵保管DB220の記憶内容について説明する。鍵保管DB220は、例えば、図3に示した鍵管理サーバ202のメモリ302、ディスク304などの記憶装置により実現される。
図4は、鍵保管DB220の記憶内容の一例を示す説明図である。図4において、鍵保管DB220は、IDおよび鍵のフィールドを有し、各フィールドに情報を設定することで、鍵管理情報(例えば、鍵管理情報400-1,400-2)をレコードとして記憶する。
ここで、IDは、ユーザを一意に識別する識別子である。鍵は、ユーザに対応する鍵である。鍵は、クライアント端末Ciにおいて生成されて、鍵管理サーバ202において管理される。例えば、鍵管理情報400-1は、ユーザU1の鍵Key1を示す。
(情報処理システム200の機能的構成例)
つぎに、図5~図7を用いて、情報処理システム200の機能的構成例について説明する。まず、図5を用いて、鍵管理サーバ202の機能的構成例について説明する。
図5は、鍵管理サーバ202の機能的構成例を示すブロック図である。図5において、鍵管理サーバ202は、セットアップ処理部501と、受付部502と、登録部503と、ペアリング演算部504と、を含む。セットアップ処理部501~ペアリング演算部504は制御部となる機能であり、具体的には、例えば、図3に示した鍵管理サーバ202のメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、鍵管理サーバ202のメモリ302、ディスク304などの記憶装置に記憶される。
セットアップ処理部501は、鍵生成に関する情報を設定する。鍵は、データを暗号化するための鍵である。具体的には、例えば、セットアップ処理部501は、素数pを設定する。また、セットアップ処理部501は、ドメインの集合Uを設定し、TABLE(辞書型対応TABLE)を設定する。
ここで、ドメインとは、例えば、ユーザから提供される属性や、属性への興味が取りうる空間および範囲のことである。辞書型対応TABLEは、ドメインの集合Uの要素をキー、集合[p]={0,…,p-1}の要素をバリューとする。ただし、このTABLEを写像と同一視したとき、TABLE:U→[p]は単射であるように設計する。
また、セットアップ処理部501は、ペアリング演算に関する情報を設定する。具体的には、例えば、セットアップ処理部501は、素数位数qの群Gと、素数位数pの群Hを設定する(q>p)。また、セットアップ処理部501は、ペアリングeを設定する。ここで、ペアリングeは、双準同型性のある演算を行うペアリング関数である。
ここでは、ペアリングeを「e:G×G→H」とする。ペアリングe:G×G→Hは、任意のg1,g2∈G,h1,h2∈Hに対して、e(g1g2,h1)=e(g1,h1)e(g2,h1)かつe(g1,h1h2)=e(g1,h1)e(g1,h2)を満たす写像である(双準同型性)。
セットアップ処理部501は、ドメインの集合Uと、TABLEと、素数位数qの群Gとを情報処理システム200全体に公開する。
受付部502は、クライアント端末Ciから鍵登録要求を受け付ける。ここで、鍵登録要求とは、鍵の登録を要求するものである。鍵登録要求には、例えば、IDと鍵とが含まれる。IDは、ユーザを一意に識別する識別子である。鍵は、クライアント端末Ciにおいて生成された鍵である。具体的には、例えば、クライアント端末Ciから鍵登録要求を受信することにより、受信した鍵登録要求を受け付ける。
登録部503は、ユーザと対応付けて、鍵を登録する。具体的には、例えば、登録部503は、鍵登録要求を受け付けた場合、鍵登録要求に含まれるIDと対応付けて、鍵登録要求に含まれる鍵を、図4に示した鍵保管DB220に登録する。なお、鍵登録要求に含まれるIDに対応する鍵が登録済みの場合、登録部503は、鍵登録要求に含まれる鍵で上書きすることにしてもよい。
また、受付部502は、マッチング装置201からペアリング演算要求を受け付ける。ここで、ペアリング演算要求とは、ペアリング演算の結果を要求するものである。ペアリング演算要求には、例えば、ペアリング対象となる2ユーザのIDの組み合わせ(例えば、U1とU2)が含まれる。
ペアリング演算部504は、ペアリング演算を行う。具体的には、例えば、ペアリング演算部504は、ペアリング演算要求を受け付けた場合、ペアリング演算要求に含まれる各IDに対応する鍵を、鍵保管DB220から取得する。つぎに、ペアリング演算部504は、取得した各IDに対応する鍵をペアリングeに入力して計算することにより、ペアリングeの演算結果を取得する。
そして、ペアリング演算部504は、ペアリングeの演算結果をマッチング装置201に送信する。この際、ペアリング演算部504は、ペアリングeの演算結果とともに、ペアリングeをマッチング装置201に送信する。ただし、ペアリングeは、ペアリング事業者(マッチング装置201)と事前に共有済みであってもよい。
つぎに、図6を用いて、クライアント端末Ciの機能的構成例について説明する。
図6は、クライアント端末Ciの機能的構成例を示すブロック図である。図6において、クライアント端末Ciは、鍵生成部601と、暗号化部602と、証明生成部603と、通信部604と、を含む。鍵生成部601~通信部604は制御部となる機能であり、具体的には、例えば、図3に示したクライアント端末Ciのメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、クライアント端末Ciのメモリ302、ディスク304などの記憶装置に記憶される。
鍵生成部601は、鍵を生成する。具体的には、例えば、鍵生成部601は、鍵管理サーバ202によって公開された素数位数qの群Gの元を一つ選択することによって、鍵を生成する。そして、鍵生成部601は、自端末に対応するIDと、生成した鍵とを含む鍵登録要求を鍵管理サーバ202に送信する。自端末に対応するIDは、クライアント端末Ciを使用するユーザのIDである。
これにより、クライアント端末Ciのユーザは、自らの鍵を生成して、鍵管理サーバ202にアップロード(登録)することができる。
暗号化部602は、生成された鍵を用いて、マッチング対象となるデータを暗号化する。マッチング対象となるデータは、例えば、属性情報や要件情報である。属性情報は、ユーザの属性を示す情報である。ユーザの属性は、例えば、年齢、学歴、職歴、性別、業績などである。
要件情報は、ユーザが要求する他ユーザの属性に対する条件を示す情報である。他ユーザの属性に対する条件は、他ユーザの属性への興味に相当する。他ユーザの属性に対する条件は、例えば、企業(ユーザ)が求職者(他ユーザ)に要求する雇用条件(年齢、学歴、職歴、性別、業績など)である。
以下の説明では、マッチング対象となるデータのうち、一方のデータを「属性情報m」と表記し、他方のデータを「要件情報n」と表記する場合がある。また、属性情報mを提供するユーザ(属性情報提供者)の鍵を「g」と表記し、要件情報nを提供するユーザ(要件情報提供者)の鍵を「h」と表記する場合がある。
具体的には、例えば、暗号化部602は、鍵gを用いた指数化により属性情報mを暗号化する。より詳細に説明すると、例えば、暗号化部602は、鍵管理サーバ202によって公開されたTABLEを用いて、属性情報mをエンコードすることにより、属性値mを作成する。そして、暗号化部602は、鍵gをm乗することにより、暗号化データm’を生成する。暗号化データm’は、「m’=gm」である。
また、暗号化部602は、鍵hを用いた指数化により要件情報nを暗号化する。より詳細に説明すると、例えば、暗号化部602は、鍵管理サーバ202によって公開されたTABLEを用いて、要件情報nをエンコードすることにより、要件値nを作成する。そして、暗号化部602は、鍵hを(1/n)乗することにより、暗号化データn’を生成する。暗号化データn’は、「n’=h1/n」である。
ここで、m→gmという変換と、n→h1/nという変換による暗号化について説明する。このm→gmは、数字にエンコードされた平文mを暗号化する際、有限巡回群Gと、その生成元gを固定し、mをm’=gmと変換することを意味する。変換例としては、(大きな)素数p、整数g∈{1,...,p-1}を固定し、メッセージをm∈{0,...,p-1}とエンコードした上で、mをm’=gm(mod p)と変換する方法が挙げられる。
この変換が暗号化となる理由として、平文mをm’=gmと変換したとき、情報「gとm’」から「m」を効率的に計算するのが困難であることがよく知られているため、gとm’を公開しても元々の平文mを導くことは困難であることが挙げられる。また、この変換は、暗号化の性質を満たしつつ、従来のRelational Hashによるハッシュ化と比較して単純化されている。この単純化が作用して、後述する電子署名σのZKPの生成を可能にしている。
証明生成部603は、マッチング対象となるデータに電子署名σが付与されている場合、証明情報を生成する。ここで、電子署名σは、署名者の公開鍵pkによってデータの真正性を検証可能な情報である。電子署名σは、信頼できる第三者によって発行される。例えば、属性情報mが「卒業大学名」を示す場合、電子署名σは、その卒業大学によって発行される。
電子署名σは、例えば、属性情報mに付与される。以下の説明では、属性情報mに電子署名σが付与されている場合を想定する。
証明情報は、電子署名σが暗号化データm’の元データ(元の平文である属性情報m)の真正性を検証可能な情報であることを証明するための情報である。具体的には、例えば、証明情報は、電子署名σが署名者の公開鍵pkを用いて暗号化データm’の元データの真正性を検証可能な情報であることを証明するためのゼロ知識証明文Πを含む。
ゼロ知識証明文Πは、属性値mをm’に暗号化した際、第三者の公開鍵pkで検証できる電子署名σが元々の属性値m(属性情報m)に与えられているとき、「σはpkで検証できるm’の元の平文の署名である」ことを示す。より詳細に説明すると、ゼロ知識証明文Πは、「m’=g^m、かつ、σはmに対する公開鍵pkで検証できる署名であるようなm」の知識をゼロ知識証明するための情報である。
ゼロ知識証明文Πは、属性情報mを公開せず、m’=g^m,σ,pkを公開して、「m’=g^m、かつ、σはmに対する公開鍵pkで検証できるmの署名である」ことを証明可能にする。なお、ゼロ知識証明文Πの生成方法は、例えば、署名形式に依存して変わりうる。
以下の説明では、ゼロ知識証明文Πを「電子署名σのZKP(Zero-Knowledge Proof)」と表記する場合がある。
通信部604は、暗号化データを含むマッチング依頼をマッチング装置201に送信する。ここで、マッチング依頼は、暗号化データを用いたマッチングを依頼するものである。暗号化データは、マッチング対象となるデータを暗号化したものである。
例えば、マッチング対象となるデータを「属性情報m」とし、属性情報mに電子署名σが付与されているとする。この場合、通信部604は、暗号化データm’、公開鍵pk、電子署名σおよびゼロ知識証明文Π(電子署名σのZKP)を含むマッチング依頼をマッチング装置201に送信する。ただし、公開鍵pkは、例えば、マッチング装置201が電子署名σの署名者から取得することにしてもよい。
また、マッチング対象となるデータを「要件情報n」とする。この場合、通信部604は、暗号化データn’を含むマッチング依頼をマッチング装置201に送信する。
また、通信部604は、マッチング結果をマッチング装置201から受信することにしてもよい。マッチング結果は、マッチング依頼に対する応答である。マッチング結果は、例えば、マッチング成功またはマッチング失敗を示す情報であってもよい。また、マッチング成功の場合、マッチング結果には、マッチング相手を特定する情報が含まれていてもよい。
つぎに、図7を用いて、マッチング装置201の機能的構成例について説明する。
図7は、マッチング装置201の機能的構成例を示すブロック図である。図7において、マッチング装置201は、受付部701と、検証部702と、取得部703と、照合部704と、出力部705と、を含む。受付部701~出力部705は制御部となる機能であり、具体的には、例えば、図3に示したマッチング装置201のメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、マッチング装置201のメモリ302、ディスク304などの記憶装置に記憶される。
以下の説明では、属性情報mを提供するユーザ(属性情報提供者)が使用するクライアント端末を「クライアント端末Ci」と表記する場合がある。また、要件情報nを提供するユーザ(要件情報提供者)が使用するクライアント端末を「クライアント端末Cj」と表記する場合がある(j≠i、j=1,2,…,n)。
受付部701は、クライアント端末Ciから第1マッチング依頼を受け付ける。具体的には、例えば、受付部701は、クライアント端末Ciから第1マッチング依頼を受信することにより、受信した第1マッチング依頼を受け付ける。ここで、第1マッチング依頼は、例えば、暗号化データm’、公開鍵pk、電子署名σおよびゼロ知識証明文Π(電子署名σのZKP)を含む。
暗号化データm’は、マッチング対象となる属性情報m(第1データ)を、ユーザ(属性情報提供者)の鍵g(第1鍵)を用いた指数化により暗号化した情報であり、「m’=gm」である。公開鍵pkは、電子署名σの署名者の公開鍵である。なお、公開鍵pkは、マッチング装置201が電子署名σの署名者から直接取得することにしてもよい。
電子署名σは、属性情報mに付与された署名であって、公開鍵pkを用いて属性情報mの真正性を検証可能な情報である。ゼロ知識証明文Πは、電子署名σのZKPであり、電子署名σが暗号化データm’の元データ(元の平文である属性情報m)の真正性を検証可能な情報であることを証明するための証明情報である。
また、受付部701は、クライアント端末Cjから第2マッチング依頼を受け付ける。具体的には、例えば、受付部701は、クライアント端末Cjから第2マッチング依頼を受信することにより、受信した第2マッチング依頼を受け付ける。
ここで、第2マッチング依頼は、例えば、暗号化データn’を含む。暗号化データn’は、マッチング対象となる要件情報n(第2データ)を、ユーザ(要件情報提供者)の鍵h(第2鍵)を用いた指数化により暗号化した情報であり、「n’=h1/n」である。
検証部702は、第1マッチング依頼に電子署名σが含まれる場合、第1マッチング依頼に含まれる証明情報を用いて、電子署名σの正当性を検証する。具体的には、例えば、検証部702は、公開鍵pkと電子署名σと暗号化データm’とを用いて、ゼロ知識証明文Π(電子署名σのZKP)を証明することによって、電子署名σの正当性を検証する。
ゼロ知識証明文Πを用いて電子署名σの正当性が検証された場合、暗号化データm’の真正性が担保され、ひいては、暗号化データm’の元データ(属性情報m)の真正性が担保されたといえる。なお、pk、σ、m’を用いたゼロ知識証明文Πの証明方法は、署名形式に依存して変わりうる。
取得部703は、所定の関数を用いて鍵g(第1鍵)および鍵h(第2鍵)から演算された第1演算結果を鍵管理サーバ202から取得する。ここで、所定の関数は、例えば、双準同型性のある演算を行うペアリング関数(ペアリングe)である。
具体的には、例えば、取得部703は、第1マッチング依頼および第2マッチング依頼を受け付けた場合、ペアリング演算要求を鍵管理サーバ202に送信する。ペアリング演算要求には、ユーザ(属性情報提供者)のIDと、ユーザ(要件情報提供者)のIDとが含まれる。
そして、取得部703は、鍵管理サーバ202からペアリングeおよび演算結果e(g,h)を受信することにより、演算結果e(g,h)を取得する。演算結果e(g,h)は、ペアリングeに鍵g,hを入力して得られるペアリングeの演算結果(第1演算結果)である。鍵gは、ユーザ(属性情報提供者)のIDに対応する鍵である。鍵hは、ユーザ(要件情報提供者)のIDに対応する鍵である。ただし、ペアリングeについては、取得部703が鍵管理サーバ202から予め取得しておいてもよい。
照合部704は、証明情報を用いて電子署名σの正当性が検証された場合、取得された第1演算結果と、所定の関数を用いて暗号化データm’および暗号化データn’から演算される第2演算結果とを照合する。所定の関数は、例えば、鍵管理サーバ202から提供されるペアリング関数(ペアリングe)である。
具体的には、例えば、照合部704は、ペアリングeに暗号化データm’,n’を入力することにより、演算結果e(gm,h1/n)を計算する。演算結果e(gm,h1/n)は、第2演算結果に相当する。そして、照合部704は、演算結果e(g,h)と演算結果e(gm,h1/n)とを照合する。
ここで、演算結果e(g,h)と演算結果e(gm,h1/n)とが一致する場合、属性情報mと要件情報nとが等しいといえる。この照合は、ペアリングeの双準同型性を利用して、「m→gm」により変換された元のメッセージの一致判定を、ペアリング写像で可能にすることにより実現する。具体的には、片方の変換を「m→gm」とし、もう一方の変換を「n→h1/n」とすることで、ペアリングeの演算結果が「e(gm,h1/n)=e(g,h)m/n」となることを利用して、属性情報mと要件情報nとが等しいかどうかを確かめることができる。
出力部705は、照合された照合結果を出力する。出力部705の出力形式としては、例えば、マッチング装置201のメモリ302、ディスク304などの記憶装置への記憶、通信I/F305による他のコンピュータ(例えば、クライアント端末Ci,Cj)への送信、不図示のディスプレイへの表示、不図示のプリンタへの印刷出力などがある。
具体的には、例えば、出力部705は、照合結果が「一致」の場合、マッチング成功を示すマッチング結果をクライアント端末Ci,Cjに送信することにしてもよい。このマッチング結果には、例えば、クライアント端末Ci,Cjのユーザを特定する情報が含まれていてもよい。また、出力部705は、照合結果が「不一致」の場合、マッチング失敗を示すマッチング結果をクライアント端末Ci,Cjに送信することにしてもよい。
また、出力部705は、電子署名σの正当性が検証されなかった場合、暗号化データm’の真正性の検証に失敗したことを示す検証結果を出力することにしてもよい。具体的には、例えば、出力部705は、暗号化データm’の真正性の検証に失敗したことを示す検証結果を含むマッチング結果をクライアント端末Ciに送信する。この場合、出力部705は、マッチング失敗を示すマッチング結果をクライアント端末Cjに送信することにしてもよい。
なお、取得部703は、証明情報を用いて電子署名σの正当性が検証された場合に、鍵管理サーバ202から第1演算結果を取得することにしてもよい。これにより、電子署名σの正当性が検証されず、第1演算結果と第2演算結果との照合が行われないにもかかわらず、鍵管理サーバ202から第1演算結果が取得されるのを防ぐことができる。
また、照合部704は、証明情報を用いた電子署名σの正当性の検証結果にかかわらず、第1演算結果と第2演算結果とを照合することにしてもよい。この場合、出力部705は、電子署名σの正当性の検証結果とともに、第1演算結果と第2演算結果との照合結果を出力することにしてもよい。
(マッチング装置201のマッチング処理例)
ここで、図8を用いて、マッチング装置201のマッチング処理例について説明する。
図8は、マッチング装置201のマッチング処理例を示す説明図である。図8において、事業者801は、マッチング事業者を表しており、マッチング装置201に対応する。求職者802は、属性情報mを提供するユーザ(属性情報提供者)を表しており、クライアント端末Ciに対応する。企業803は、要件情報nを提供するユーザ(要件情報提供者)を表しており、クライアント端末Cjに対応する。なお、図8では、電子署名σを「署名σ」と表記している。
事業者801(マッチング装置201)は、求職者802(クライアント端末Ci)からgmとゼロ知識証明文Πとを受け付ける。gmは、求職者802の鍵gを用いて属性値m(属性情報m)を暗号化した暗号化データm’である。ゼロ知識証明文Πは、電子署名σのZKPである。電子署名σは、属性値m(属性情報m)に対して有効である。ゼロ知識証明文Πは、gmに対して有効である。
また、事業者801(マッチング装置201)は、企業803(クライアント端末Cj)からh1/nを受け付ける。h1/nは、企業803の鍵hを用いて要件値n(要件情報n)を暗号化した暗号化データn’である。要件情報nは、求人要件を表す。
事業者801(マッチング装置201)は、ゼロ知識証明文Πを用いて、電子署名σの正当性を検証する。ゼロ知識証明文Πを用いて電子署名σの正当性が検証された場合、gm(暗号化データm’)の真正性が担保され、ひいては、gmの元データ(属性値m)の真正性が担保される。
なお、既存のRelational Hashに対して署名のZKPを生成することも考えられる。しかしながら、ハッシュ関数が複雑であるため、従来知られているゼロ知識証明の生成技術をそのまま当てはめることはできない。より詳細に説明すると、Relational Hashで用いられるハッシュ関数を、入力に依らない算術回路で書き下すことが困難であるため、ゼロ知識証明を生成する際にZK-SNARKsの既存のフレームワークを適用することができない。したがって、属性情報mを秘匿するにあたり、「m→gm」といった形の指数化による暗号化を用いて、暗号化データを簡単化するアプローチが有効となる。
事業者801(マッチング装置201)は、ゼロ知識証明文Πを用いて電子署名σの正当性が検証された場合、鍵g,hを用いることなく、ペアリングeの双準同型性を利用してマッチングを行う。具体的には、例えば、事業者801(マッチング装置201)は、「e(gm,h1/n)=e(g,h)m/n」が「e(g,h)」と一致するか否かを判定する。e(g,h)は、鍵管理サーバ202から得られるペアリングeの第1演算結果である。e(gm,h1/n)は、ペアリングeにgm,h1/nを入力することにより得られる第2演算結果である。
これにより、事業者801(マッチング装置201)は、ペアリング写像という概念を応用して、属性値m(属性情報m)と要件値n(要件情報n)とが一致しているか否かを、属性情報mと要件情報nを復号することなく判定することができる。
(情報処理システム200の動作例)
つぎに、図9を用いて、実施の形態1にかかる情報処理システム200の動作例について説明する。ここでは、求人マッチングにおいて、求職者Aと企業Bとのマッチングを事業者Cが行う場合を例に挙げて説明する。
図9は、実施の形態1にかかる情報処理システム200の動作例を示す説明図である。図9において、事業者Cは、マッチング事業者を表しており、マッチング装置201に対応する。求職者Aは、ユーザ(属性情報提供者)を表しており、クライアント端末Ciに対応する。企業Bは、ユーザ(要件情報提供者)を表しており、クライアント端末Cjに対応する。なお、図9では、電子署名σを「署名」と表記している。
まず、求職者A(クライアント端末Ci)は、鍵gを生成して、鍵管理サーバ202に登録する。また、企業B(クライアント端末Cj)は、鍵hを生成して、鍵管理サーバ202に登録する。鍵g,hは、鍵管理サーバ202以外には公開されない。鍵管理サーバ202は、ペアリング写像を準備する。
求職者A(クライアント端末Ci)は、鍵gを用いて、属性情報mをgmに変換して、事業者C(マッチング装置201)に送付する。gmは、属性情報mの暗号文とみなすことができる。ここでは、属性情報mを「学歴:X大卒(=m)」とし、属性情報mが「学歴:F32R3(=gm)」という暗号化データに変換された場合を想定する。
さらに、求職者A(クライアント端末Ci)は、属性情報mに第三者(X大学)による電子署名σが付与されている場合、その電子署名σが暗号化データgmの平文mに対して有効であることのゼロ知識証明文Πを生成して、事業者C(マッチング装置201)に送付する。これにより、求職者A(クライアント端末Ci)は、事業者Cに提出した暗号化データgmの真正性を保証する。
一方、企業B(クライアント端末Cj)は、鍵hを用いて、要件情報nをh1/nに変換して、事業者C(マッチング装置201)に送付する。h1/nは、要件情報nの暗号文とみなすことができる。企業側では、求職者側と異なり、鍵hを用いた暗号化の際に、逆数のべきをとることで、後のペアリングによる一致判定を行いやすくすることができる。
ここでは、要件情報nを「要求学歴:X大卒、Y大卒、…(=n1,n2,…)」とし、要件情報nが「要求学歴:4n4Gg,a3QCs,…(=h1/n1,h1/n2,…)」という暗号化データに変換された場合を想定する。
事業者C(マッチング装置201)は、求職者A(クライアント端末Ci)から、暗号化データgm、ゼロ知識証明文Πを受け付ける。また、事業者C(マッチング装置201)は、企業B(クライアント端末Cj)から、暗号化データh1/nを受け付ける。これにより、求職者Aから属性情報mの暗号化データgm、属性情報mに付与された電子署名σの正当性に関するゼロ知識証明文Πが事業者Cに与えられる。また、企業Bから要件情報nの暗号化データh1/nが事業者Cに与えられる。
事業者C(マッチング装置201)は、鍵管理サーバ202から、求職者Aや企業Bの鍵g,hではなく、ペアリング演算に関する種々の情報(ペアリングe,演算結果eAB=(g,h))を受け取る。そして、事業者C(マッチング装置201)は、ゼロ知識証明文Πを用いて電子署名σの正当性が検証された場合、暗号化データgm,h1/nから平文を復号することなく、ペアリングeの双準同型性を利用してマッチングを行う。
ここでは、事業者C(マッチング装置201)は、eABが、e(”F32R3”,”4n4Gg”),e(”F32R3”,”a3QCs”),…と一致するかを判定していき、等号が成立すれば要件にマッチ(マッチング成功)したと判断する。
なお、e(”F32R3”,”4n4Gg”)は、ペアリングeに「F32R3(=gm)」と「4n4Gg(=h1/n1)」を入力することにより得られる演算結果である。また、e(”F32R3”,”a3QCs”)は、ペアリングeに「F32R3(=gm)」と「a3QCs(=h1/n2)」を入力することにより得られる演算結果である。
このように、情報処理システム200によれば、マッチング対象のデータ(m,n)を暗号化し、その暗号文を復号することなく、元データが等しいかどうかを判定することで、プライバシーを保護したマッチングを行うことができる。また、情報処理システム200によれば、ゼロ知識証明文Πの検証を行うことで、暗号文から平文を復号することなく、求職者Aの提出した属性情報mの真正性を検証することができる。なお、要件情報nは、企業Bの属性への興味を示すものであり、真正性を担保しなくてもよい。このため、要件情報nには、署名が付与されていない。
(情報処理システム200の各種処理手順)
つぎに、図10~図17を用いて、情報処理システム200の各種処理手順について説明する。
・鍵管理サーバ202のセットアップ処理手順
まず、鍵管理サーバ202のセットアップ処理手順について説明する。
図10は、鍵管理サーバ202のセットアップ処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、鍵管理サーバ202は、ドメインの集合Uを設定する(ステップS1001)。つぎに、鍵管理サーバ202は、素数pを設定する(ステップS1002)。
そして、鍵管理サーバ202は、ドメインの集合Uの要素をキー、集合[p]={0,…,p-1}の要素をバリューとするTABLEを作成する(ステップS1003)。つぎに、鍵管理サーバ202は、素数位数qの群Gと、素数位数p(q>p)の群Hを設定する(ステップS1004)。
つぎに、鍵管理サーバ202は、ペアリングe「e:G×G→H」を設定する(ステップS1005)。そして、鍵管理サーバ202は、ドメインの集合Uと、TABLEと、素数位数qの群Gとを情報処理システム200全体に公開して(ステップS1006)、本フローチャートによる一連の処理を終了する。
これにより、鍵管理サーバ202は、鍵生成に関する情報とペアリング演算に関する情報とを用意することができる。
・クライアント端末Ciの鍵生成/アップデート処理手順
つぎに、クライアント端末Ciの鍵生成/アップデート処理手順について説明する。
図11は、クライアント端末Ciの鍵生成/アップデート処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、クライアント端末Ciは、鍵管理サーバ202によって公開された素数位数qの群Gの元を一つ選択することによって、鍵を生成する(ステップS1101)。
そして、クライアント端末Ciは、自端末に対応するIDと、生成した鍵とを含む鍵登録要求を鍵管理サーバ202に送信して(ステップS1102)、本フローチャートによる一連の処理を終了する。
これにより、クライアント端末Ciは、自端末のユーザの鍵を生成して、鍵管理サーバ202にアップロード(登録)することができる。
・鍵管理サーバ202の鍵登録処理手順
つぎに、鍵管理サーバ202の鍵登録処理手順について説明する。
図12は、鍵管理サーバ202の鍵登録処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、鍵管理サーバ202は、クライアント端末Ciから鍵登録要求を受信したか否かを判断する(ステップS1201)。ここで、鍵管理サーバ202は、クライアント端末Ciから鍵登録要求を受信するのを待つ(ステップS1201:No)。
そして、鍵管理サーバ202は、クライアント端末Ciから鍵登録要求を受信した場合(ステップS1201:Yes)、鍵登録要求に含まれるIDと対応付けて、鍵登録要求に含まれる鍵を鍵保管DB220に登録して(ステップS1202)、本フローチャートによる一連の処理を終了する。
これにより、鍵管理サーバ202は、クライアント端末Ciにおいて生成された各ユーザの鍵を、鍵保管DB220に登録して管理することができる。なお、ステップS1202において、鍵登録要求に含まれるIDに対応する鍵が登録済みの場合、鍵管理サーバ202は、鍵登録要求に含まれる鍵で上書きする。
つぎに、情報処理システム200のマッチング処理手順について説明する。ただし、ユーザ(属性情報提供者)のクライアント端末を「クライアント端末Ci」とし、ユーザ(要件情報提供者)のクライアント端末を「クライアント端末Cj」とする。
図13および図14は、情報処理システム200のマッチング処理手順を示すシーケンス図である。図13のシーケンス図において、まず、クライアント端末Ciは、鍵管理サーバ202によって公開されたTABLEを用いて、属性情報mをエンコードすることにより、属性値mに変換する(ステップS1301)。
そして、クライアント端末Ciは、鍵gを用いて、属性値mをgmと暗号化することにより、暗号化データm’(m’=gm)を生成する(ステップS1302)。つぎに、クライアント端末Ciは、証明生成処理を実行する(ステップS1303)。なお、証明生成処理の具体的な処理手順については、図15を用いて後述する。
ここでは、属性情報m(属性値m)に付与されている電子署名σのゼロ知識証明文Πが生成された場合を想定する。そして、クライアント端末Ciは、暗号化データm’、公開鍵pk、電子署名σおよびゼロ知識証明文Πを含むマッチング依頼をマッチング装置201に送信する(ステップS1304)。
マッチング装置201は、クライアント端末Ciからマッチング依頼を受信すると(ステップS1305)、マッチング依頼に含まれるゼロ知識証明文Πについての証明検証処理を実行する(ステップS1306)。なお、証明検証処理の具体的な処理手順については、図16を用いて後述する。
クライアント端末Cjは、鍵管理サーバ202によって公開されたTABLEを用いて、要件情報nをエンコードすることにより、要件値nに変換する(ステップS1307)。つぎに、クライアント端末Cjは、鍵hを用いて、要件値nをh1/nと暗号化することにより、暗号化データn’(n’=h1/n)を生成する(ステップS1308)。
そして、クライアント端末Cjは、暗号化データn’を含むマッチング依頼をマッチング装置201に送信する(ステップS1309)。なお、ステップS1307~S1309の処理は、ステップS1301~S1304の処理よりも前に実行されてもよく、また、ステップS1301~S1304の処理と並列に実行されてもよい。
図14のシーケンス図において、まず、マッチング装置201は、クライアント端末Cjからマッチング依頼を受信すると(ステップS1401)、ペアリング演算要求を鍵管理サーバ202に送信する(ステップS1402)。ペアリング演算要求には、クライアント端末Ciのユーザ(属性情報提供者)のIDと、クライアント端末Cjのユーザ(要件情報提供者)のIDとが含まれる。
鍵管理サーバ202は、マッチング装置201からペアリング演算要求を受信すると、ペアリング演算要求に含まれる各IDに対応する鍵g,hを、鍵保管DB220から取得する(ステップS1403)。つぎに、鍵管理サーバ202は、取得した鍵g,hをペアリングeに入力することにより、ペアリングeの演算結果e(g,h)を算出する(ステップS1404)。
そして、鍵管理サーバ202は、ペアリングeおよびペアリングeの演算結果e(g,h)をマッチング装置201に送信する(ステップS1405)。マッチング装置201は、ペアリングeおよびペアリングeの演算結果e(g,h)を受信すると、照合処理を実行する(ステップS1406)。なお、照合処理の具体的な処理手順については、図17を用いて後述する。
そして、マッチング装置201は、照合結果に応じたマッチング結果をクライアント端末Ci,Cjに送信して(ステップS1407)、本シーケンス図による一連の処理を終了する。
つぎに、図15を用いて、図13に示したステップS1303のクライアント端末Ciの証明生成処理の具体的な処理手順について説明する。
図15は、クライアント端末Ciの証明生成処理の具体的処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、クライアント端末Ciは、属性情報mに電子署名σが付与されているか否かを判断する(ステップS1501)。
ここで、属性情報mに電子署名σが付与されていない場合(ステップS1501:No)、クライアント端末Ciは、証明生成処理を呼び出したステップに戻る。一方、属性情報mに電子署名σが付与されている場合(ステップS1501:Yes)、クライアント端末Ciは、電子署名σのゼロ知識証明文Πを生成して(ステップS1502)、証明生成処理を呼び出したステップに戻る。
これにより、クライアント端末Ciは、電子署名σが署名者の公開鍵pkを用いて暗号化データm’の元データの真正性を検証可能な情報であることを証明するための証明情報を生成することができる。
つぎに、図16を用いて、図13に示したステップS1306のマッチング装置201の証明検証処理の具体的な処理手順について説明する。
図16は、マッチング装置201の証明検証処理の具体的処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、マッチング装置201は、公開鍵pkと電子署名σと暗号化データm’とを用いて、ゼロ知識証明文Π(電子署名σのZKP)を証明することによって、電子署名σの正当性を検証する(ステップS1601)。
そして、マッチング装置201は、電子署名σの正当性の検証に成功したか否かを判断する(ステップS1602)。ここで、電子署名σの正当性の検証に成功した場合(ステップS1602:Yes)、マッチング装置201は、証明検証処理を呼び出したステップに戻る。
一方、電子署名σの正当性の検証に失敗した場合(ステップS1602:No)、マッチング装置201は、暗号化データm’の真正性の検証に失敗したことを示す検証結果をクライアント端末Ciに送信して(ステップS1603)、本フローチャートによる一連の処理を終了する。
これにより、マッチング装置201は、ゼロ知識証明文Πを用いて電子署名σの正当性を検証することで、gm(暗号化データm’)の真正性を担保し、ひいては、gmの元データ(属性情報m)の真正性を担保することができる。
つぎに、図17を用いて、図14に示したステップS1406のマッチング装置201の照合処理の具体的な処理手順について説明する。
図17は、マッチング装置201の照合処理の具体的処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、マッチング装置201は、鍵管理サーバ202からペアリングeおよびペアリングeの演算結果e(g,h)を受信すると(ステップS1701)、ペアリングeを用いて、暗号化データm’,n’から演算結果e(gm,h1/n)を算出する(ステップS1702)。
つぎに、マッチング装置201は、ペアリングeの双準同型性を利用して、鍵管理サーバ202から受信した演算結果e(g,h)と、算出した演算結果e(gm,h1/n)とが一致するか否かを判定する(ステップS1703)。
ここで、演算結果e(g,h)と演算結果e(gm,h1/n)とが一致する場合(ステップS1703:Yes)、マッチング装置201は、マッチング成功と判断して(ステップS1704)、照合処理を呼び出したステップに戻る。
一方、演算結果e(g,h)と演算結果e(gm,h1/n)とが一致しない場合(ステップS1703:No)、マッチング装置201は、マッチング失敗と判断して(ステップS1705)、照合処理を呼び出したステップに戻る。
これにより、マッチング装置201は、ペアリングeの双準同型性を利用して、属性情報mと要件情報nとが等しいかどうかを確かめることができる。
以上説明したように、実施の形態1にかかるマッチング装置201によれば、鍵g(第1鍵)を用いた指数化により属性情報m(第1データ)を暗号化した暗号化データm’(第1暗号化データ)と、属性情報mに付与された電子署名σと、証明情報とを受け付けることができる。証明情報は、電子署名σが暗号化データm’の元データ(元々の平文)の真正性を検証可能な情報であることを証明するための情報である。そして、マッチング装置201によれば、証明情報を用いて電子署名σの正当性を検証することができる。また、マッチング装置201によれば、鍵h(第2鍵)を用いた指数化により要件情報n(第2データ)を暗号化した暗号化データn’(第2暗号化データ)を受け付けることができる。また、マッチング装置201によれば、鍵管理サーバ202から、ペアリングeを用いて鍵gおよび鍵hから演算された演算結果e(g,h)を取得することができる。ペアリングeは、双準同型性のある演算を行うペアリング関数である。そして、マッチング装置201によれば、取得した演算結果e(g,h)と、ペアリングeを用いて暗号化データm’および暗号化データn’から演算される演算結果(gm,h1/n)とを照合することができる。
これにより、マッチング装置201は、マッチング対象となるユーザ(属性情報提供者、要件情報提供者)についてのデータの内容を第三者(マッチング事業者)に秘匿しつつ、データの真正性を担保することができる。例えば、属性情報mの秘匿に「m→gm」といった形の指数化による暗号化を用いることで、暗号化データm’を簡単化して証明情報を生成することが可能になり、署名された属性情報mの真正性を担保することができる。また、指数化による暗号化とペアリングeの双準同型性を用いることで、各ユーザについての属性情報m、要件情報nの内容を第三者に秘匿しつつ、ユーザ同士のマッチングを行うことができる。例えば、求人マッチングにおいて、求職者(個人)の属性(年齢、学歴など)と、企業(法人)の属性への興味(年齢、学歴など)とを照合して、求職者と企業とのマッチングを行うことができる。
また、マッチング装置201によれば、電子署名σの正当性が検証された場合に、演算結果e(g,h)と演算結果(gm,h1/n)とを照合することができる。
これにより、マッチング装置201は、属性情報mの真正性が担保された場合に、演算結果e(g,h)と演算結果(gm,h1/n)とを照合して、ユーザ同士のマッチングを行うことができる。
また、マッチング装置201によれば、電子署名σが署名者の公開鍵pkを用いて暗号化データm’の元データの真正性を検証可能な情報であることを証明するためのゼロ知識証明文Π(電子署名σのZKP)を、証明情報として受け付けることができる。そして、マッチング装置201によれば、公開鍵pkと電子署名σと暗号化データm’とを用いて、ゼロ知識証明文Πを証明することによって、電子署名σの正当性を検証することができる。
これにより、マッチング装置201は、ゼロ知識証明を利用して、電子署名σの正当性を検証することで、暗号化データm’の真正性を担保し、ひいては、元の平文である属性情報mの真正性を担保することができる。例えば、暗号文(暗号化データm’)に対しても有効なゼロ知識証明であって、元々検証する際に使用される公開鍵pkで検証可能なものを用意できれば、マッチング事業者は、その暗号文も第三者が認可したものであることを確認することができる。
また、マッチング装置201によれば、照合した照合結果を出力することができる。
これにより、マッチング装置201は、マッチング対象となるユーザ(属性情報提供者、要件情報提供者)やマッチング事業者に対して、マッチングの成否を通知することができる。
また、マッチング装置201によれば、証明情報(ゼロ知識証明文Π)を用いて電子署名σの正当性が検証された場合に、鍵管理サーバ202から演算結果e(g,h)を取得することができる。
これにより、マッチング装置201は、例えば、電子署名σの正当性が検証されず、演算結果の照合が行われないときには、鍵管理サーバ202から演算結果e(g,h)を取得する処理を行わずに処理負荷を抑えることができる。
また、マッチング装置201によれば、証明情報(ゼロ知識証明文Π)を用いて電子署名σの正当性が検証されなかった場合、暗号化データm’の真正性の検証に失敗したことを示す検証結果を出力することができる。
これにより、マッチング装置201は、暗号化データm’の元の平文である属性情報mの真正性を担保できないためマッチングができないことを、マッチング対象となるユーザ(属性情報提供者、要件情報提供者)やマッチング事業者に通知することができる。
(実施例)
つぎに、実施の形態1にかかる情報処理システム200を、複数の求職者と複数の企業とのマッチングを行う求人マッチングに適用した場合の実施例について説明する。
図18は、情報処理システム200の実施例を示す説明図である。図18において、複数の求職者がA1,A2,…,An存在し、複数の企業がB1,B2,…,Bm存在する場合を想定する。また、A1,A2,…,An,B1,B2,…,Bmは、ユーザのIDを表すものとする。
まず、鍵管理サーバ202は、セットアップ処理を実行する(例えば、図10参照)。セットアップ時に用意されるペアリングe:G×G→Hは、非自明である。Gは素数位数qの群、かつ、Hは位数pとする。ペアリングe:G×G→Hとは、「e(g1*g2,h)=e(g1,h)*e(g2,h)」および「e(g,h1*h2)=e(g,h1)*e(g,h2)」の条件を満たす写像である。
つぎに、各求職者Ai(クライアント端末Ci)は、鍵生成/アップデート処理を実行する(例えば、図11参照)。また、各企業Bj(クライアント端末Cj)は、鍵生成/アップデート処理を実行する(例えば、図11参照)。これにより、各求職者Aiの鍵giが生成され、鍵管理サーバ202に送信される。また、各企業Bjの鍵hjが生成され、鍵管理サーバ202に送信される。
ここで、各求職者Aiは、複数の属性値Xiを有しており、各企業Bjは、複数の属性への興味、すなわち、複数の要件値Yjを有しているとする。ただし、属性値Xi,要件値Yjは、TABLEによりエンコードされた値とする。また、各企業Bjは、求職者が満たして欲しい要件数として、閾値sjを事業者C(マッチング装置201)に送信するとする。
以下、求職者Aiと企業Bjとのマッチングを行う場合の動作例について説明する。
まず、求職者Ai(クライアント端末Ci)は、鍵giを用いて、EXi:=Exp(gi,Xi):={gi
m|m∈Xi}と属性値を暗号化し、事業者C(マッチング装置201)に送信する。また、企業Bj(クライアント端末Cj)は、FYj:=Exp-1(hj,Yj):={hj^(dn)|n∈Yj}と属性値を暗号化し、閾値sjとともに事業者C(マッチング装置201)に送信する。ただし、dn=n(p-2)≡1/n(mod p)である。
さらに、鍵管理サーバ202は、事業者C(マッチング装置201)からのペアリング演算要求に応じて、εij=e(gi,hj)を事業者C(マッチング装置201)に送信する。そして、事業者C(マッチング装置201)は、I(εij,EXi,FYj):=#{(a,b)∈EXi×FYj|e(a,b)=e(g,h)}を計算する。
ここで、x,y∈{0,…,p-1}に対し、dy=y(p-2)≡1/yとしたとき、e(gx,h^(dy))=e(g,h)とx=yは同値である。その証明を行うと、e:G×G→Hの双準同型性から、e(gx,h^(dy))=e(g,h)^(xdy)である。Hの位数はpであるから、e(g,h)^(xdy)=e(g,h)とxdy≡1(mod p)は同値であり、さらに、xdy≡1(mod p)とx=yは同値である。これで証明が終わる。
これにより、I(εij,EXi,FYj)は、求職者Aiの提出した属性値Xiと、企業Bjの提出した要件値Yjとの一致数であるといえる。ここでは、この値が、閾値sj以上である場合、cij=1とし、閾値sj未満の場合cij=0とする。cij=1の場合、企業Bjの要件を求職者Aiが満たすこと(マッチング成功)を意味する。
例えば、事業者C(マッチング装置201)は、cij=1の場合、求職者Ai(クライアント端末Ci)に企業Bj(クライアント端末Cj)のことを、企業Bj(クライアント端末Cj)に求職者Ai(クライアント端末Ci)のことを通知する。これにより、求職者Aiと企業Bjとがマッチングされる。なお、ペアリングの逆像計算は困難なため、事業者Cが求職者Aiの属性値Xiを特定することは難しいといえる。
また、各求職者Aiに希望条件Ziとその条件を満たして欲しい数tiがあり、各企業Bjに情報Wjが存在するとする。この場合、AiとBjの役割を入れ替え、XiをWj、YjをZi、sjをtiに変更して、情報処理システム200のマッチング処理を実行してもよい。求職者Aiの希望する条件と企業Bjの提出した企業情報の一致数が、閾値tj以上である場合、dij=1とし、閾値tj未満の場合dij=0とする。dij=1の場合、求職者Aiの希望条件を企業Bjが満たすことを意味する。cij*dij=1であれば、求職者Aiと企業Bjは互いの要求を満たしたことを意味するため、事業者C(マッチング装置201)は、マッチング成功としてもよい。
また、求職者Ai(クライアント端末Ci)は、求職者Aiに属する属性値mに電子署名σが付与されている場合、電子署名σのZKPを生成してもよい。ここでは、CL署名が付与されているケースを想定する。電子署名σのZKPについては、例えば、下記非特許文献2を参照して生成することができる。
非特許文献2:Camenisch, Jan, and Anna Lysyanskaya. “A signature scheme with efficient protocols.” International Conference on Security in Communication Networks. Springer, Berlin , Heidelberg, 2002.
まず、CL署名は、秘密鍵をp、公開鍵を(n,a,b,c)とする。ここで、n=pqはRSAモジュラス、すなわち、同じビット数の素数p,qとする。また、a,b,cは、nを法とする平方剰余、すなわち、あるx,y,zが存在してx2=a,y2=b,z2=c(mod n)を満たすものが存在するものとする。
さらに、平文mに対する電子署名σはσ=(s,e,v)である。ここで(s,e,v)は、ve=ambscを満たす数の組である。求職者Ai(クライアント端末Ci)は、電子署名σのZKPを生成するために、nを法とした平方剰余hをとり、さらにhの生成する剰余群Z/nの部分巡回群<h>の元gをとる。
そして、求職者Ai(クライアント端末Ci)は、以下の情報(コミットメント等)を作成する。
乱数rmと、mのコミットメント Cm:=gmh^(rm)∈Z/n
乱数smと、sのコミットメント Cs:=gsh^(rs)∈Z/n
乱数reと、eのコミットメント Ce;=geh^(re)∈Z/n
乱数wと、vのマスク Cv:=vgw∈Z/n
乱数rwと、wのコミットメント Cw=gwh^(rw)∈Z/n
z:=ew∈Z
乱数rzと、zのコミットメント Cz=gzh^(rz)∈Z/n
C:=(Cv)ehr∈Z/n
属性値mの暗号文 m’=gi
m
求職者Ai(クライアント端末Ci)は、c,Cm,Cs,Ce,Cv,Cw,Cz,C,m’を事業者C(マッチング装置201)に公開した上で、以下の条件を満たすμ,σ,ε,ω,ζ,ρm,ρs,ρe,ρw,ρz,ρの知識をゼロ知識証明するゼロ知識証明文Πを生成する。
C=Cvεhρ
Ce=gεh^(ρe)
C/c=aμbσgζhρ
Cm=gμh^(ρm)
Cs=gσh^(ρs)
Cz=gζh^(ρz)
Cw=gωh^(ρw)
Cz=Cwεh^(ρz-ερw)
m’=giμ
求職者Ai(クライアント端末Ci)は、電子署名σのZKPとして、c,Cm,Cs,Ce,Cv,Cw,Cz,C,m’,Πを、事業者C(マッチング装置201)に送信する。そして、事業者C(マッチング装置201)は、c,Cm,Cs,Ce,Cv,Cw,Cz,C,m’,Πを検証する。
なお、企業Bjが属性値を提出し、さらに、それにCL署名が付与されている場合、同様にして、その署名のZKPを企業側で生成することにしてもよい。
(実施の形態2)
つぎに、実施の形態2にかかる情報処理システム200について説明する。実施の形態2では、ユーザ(属性情報提供者)の属性情報m、ユーザ(要件情報提供者)の要件情報nの暗号化に、信頼できる第三者から提供される乱数を用いることで、属性情報mと要件情報nの安全性を高める。なお、実施の形態1の情報処理システム200と同様の箇所については、同一符号を付して図示および説明を省略する。
ここで、図19を用いて、実施の形態2にかかる情報処理システム200の動作例について説明する。ここでは、求人マッチングにおいて、求職者Aと企業Bとのマッチングを事業者Cが行う場合を例に挙げて説明する。また、求職者A(クライアント端末Ci)は、鍵gを生成して、鍵管理サーバ202に登録済みとする。また、企業B(クライアント端末Cj)は、鍵hを生成して、鍵管理サーバ202に登録済みとする。
図19は、実施の形態2にかかる情報処理システム200の動作例を示す説明図である。図19において、事業者Cは、マッチング事業者を表しており、マッチング装置201に対応する。求職者Aは、ユーザ(属性情報提供者)を表しており、クライアント端末Ciに対応する。企業Bは、ユーザ(要件情報提供者)を表しており、クライアント端末Cjに対応する。なお、図19では、電子署名σを「署名」と表記している。
まず、事業者C(マッチング装置201)は、求職者Aと企業Bとをマッチングする際、鍵管理サーバ202に、その旨を示すリクエストを送信する。鍵管理サーバ202は、事業者C(マッチング装置201)からリクエストを受信すると、乱数rを生成して、求職者A(クライアント端末Ci)と企業B(クライアント端末Cj)それぞれに乱数rを送信する。鍵管理サーバ202は、信頼できる第三者の一例である。乱数rは、例えば、鍵g,hと同程度のビット長の乱数である。
求職者A(クライアント端末Ci)は、鍵gを生成して、鍵管理サーバ202に登録する。また、企業B(クライアント端末Cj)は、鍵hを生成して、鍵管理サーバ202に登録する。鍵g,hは、鍵管理サーバ202以外には公開されない。鍵管理サーバ202は、ペアリング写像を準備する。
求職者A(クライアント端末Ci)は、鍵gおよび乱数rを用いて、属性値m(TABLEにより属性情報mをエンコードした値)をgm^rに変換して、事業者C(マッチング装置201)に送付する。実施の形態1では、属性値mをgmに変換したのに対して、ここでは、属性値mをgm^rに変換する。
さらに、求職者A(クライアント端末Ci)は、属性情報mに電子署名σが付与されている場合、その電子署名σが暗号化データgm^rの平文mに対して有効であることのゼロ知識証明文Πを生成して、事業者C(マッチング装置201)に送付する。これにより、求職者A(クライアント端末Ci)は、事業者Cに提出した暗号化データgm^rの真正性を保証する。
一方、企業B(クライアント端末Cj)は、鍵hおよび乱数rを用いて、要件値n(TABLEにより要件情報nをエンコードした値)をh1/n^rに変換して、事業者C(マッチング装置201)に送付する。実施の形態1では、要件値nをh1/nに変換したのに対して、ここでは、要件値nをh1/n^rに変換する。
事業者C(マッチング装置201)は、求職者A(クライアント端末Ci)から、暗号化データgm^r、ゼロ知識証明文Πを受け付ける。また、事業者C(マッチング装置201)は、企業B(クライアント端末Cj)から、暗号化データh1/n^rを受け付ける。これにより、求職者Aから属性情報mの暗号化データgm^r、属性情報mに付与された電子署名σの正当性に関するゼロ知識証明文Πが事業者Cに与えられる。また、企業Bから要件情報nの暗号化データh1/n^rが事業者Cに与えられる。
事業者C(マッチング装置201)は、鍵管理サーバ202から、求職者Aや企業Bの鍵g,hではなく、ペアリング演算に関する種々の情報(ペアリングe,演算結果e(g,h))を受け取る。そして、事業者C(マッチング装置201)は、ゼロ知識証明文Πを用いて電子署名σの正当性が検証された場合(検証成功)、暗号化データから平文を復号することなく、ペアリングeの双準同型性を利用してマッチングを行う。
具体的には、事業者C(マッチング装置201)は、暗号化データgm^r、ゼロ知識証明文Π、暗号化データh1/n^r、ペアリングe,演算結果e(g,h)を用いて、e(g,h)とe(gm^r,h1/n^r)とが一致するか否かを判定する。ここで、演算結果が一致した場合、事業者C(マッチング装置201)は、マッチング成功とする。
一方、演算結果が一致しない場合、事業者C(マッチング装置201)は、マッチング失敗とする。なお、電子署名σの正当性が検証されなかった場合(検証失敗)、事業者C(マッチング装置201)は、暗号化データgm^rをリジェクトする。
以上説明したように、実施の形態2にかかる情報処理システム200によれば、属性情報mおよび要件情報nの暗号化の際に乱数rを用いたマスクを施すことができる。これにより、実施の形態1で説明した情報処理システム200に比べて、装置間の送信量は増加するものの、属性情報mと要件情報nの安全性をより高めることができる。例えば、m,nをr乗することにより、mとnとの比率(m/n)をわかりにくくさせて、安全性をより高めることができる。
これらのことから、本実施の形態にかかるマッチング装置201によれば、マッチング対象となるユーザのデータ(例えば、属性情報m、要件情報n)の内容をマッチング事業者に秘匿しつつ、データ(例えば、属性情報m)の真正性を担保することで、安心で安全なマッチングシステムを提供することができる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した情報処理装置101(マッチング装置201)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)第1鍵を用いた指数化により第1データを暗号化した第1暗号化データと、前記第1データに付与された電子署名と、前記電子署名が前記第1暗号化データの元データの真正性を検証可能な情報であることを証明するための証明情報とを受け付け、
第2鍵を用いた指数化により第2データを暗号化した第2暗号化データを受け付け、
前記証明情報を用いて前記電子署名の正当性を検証し、
前記第1鍵および前記第2鍵を管理する管理装置から、所定の関数を用いて前記第1鍵および前記第2鍵から演算された第1演算結果を取得し、
取得した前記第1演算結果と、前記所定の関数を用いて前記第1暗号化データおよび前記第2暗号化データから演算される第2演算結果とを照合する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
(付記2)前記照合する処理は、
前記電子署名の正当性が検証された場合に、前記第1演算結果と前記第2演算結果とを照合する、ことを特徴とする付記1に記載の情報処理プログラム。
(付記3)前記証明情報は、前記電子署名が署名者の公開鍵を用いて前記第1暗号化データの元データの真正性を検証可能な情報であることを証明するためのゼロ知識証明文を含み、
前記検証する処理は、
前記公開鍵と前記電子署名と前記第1暗号化データとを用いて、前記ゼロ知識証明文を証明することによって、前記電子署名の正当性を検証する、
ことを特徴とする付記1に記載の情報処理プログラム。
(付記4)前記所定の関数は、双準同型性のある演算を行うペアリング関数である、ことを特徴とする付記1に記載の情報処理プログラム。
(付記5)前記第1データは、第1ユーザの属性を示す属性情報であり、
前記第2データは、前記第1ユーザとは異なる第2ユーザが要求する属性に対する条件を示す要件情報である、
ことを特徴とする付記1に記載の情報処理プログラム。
(付記6)前記第1データは、第1ユーザのデータであり、
前記第2データは、前記第1ユーザとは異なる第2ユーザのデータであり、
前記第1暗号化データは、前記第1鍵と前記管理装置から前記第1ユーザに発行された乱数とを用いた指数化により前記第1データを暗号化したものであり、
前記第2暗号化データは、前記第2鍵と前記管理装置から前記第2ユーザに発行された前記乱数とを用いた指数化により前記第2データを暗号化したものである、
ことを特徴とする付記1に記載の情報処理プログラム。
(付記7)照合した照合結果を出力する、
処理を前記コンピュータに実行させることを特徴とする付記2に記載の情報処理プログラム。
(付記8)前記取得する処理は、
前記電子署名の正当性が検証された場合に、前記管理装置から前記第1演算結果を取得する、ことを特徴とする付記1に記載の情報処理プログラム。
(付記9)前記電子署名の正当性が検証されなかった場合、前記第1暗号化データの真正性の検証に失敗したことを示す検証結果を出力する、
処理を前記コンピュータに実行させることを特徴とする付記1に記載の情報処理プログラム。
(付記10)第1鍵を用いた指数化により第1データを暗号化した第1暗号化データと、前記第1データに付与された電子署名と、前記電子署名が前記第1暗号化データの元データの真正性を検証可能な情報であることを証明するための証明情報とを受け付け、
第2鍵を用いた指数化により第2データを暗号化した第2暗号化データを受け付け、
前記証明情報を用いて前記電子署名の正当性を検証し、
前記第1鍵および前記第2鍵を管理する管理装置から、所定の関数を用いて前記第1鍵および前記第2鍵から演算された第1演算結果を取得し、
取得した前記第1演算結果と、前記所定の関数を用いて前記第1暗号化データおよび前記第2暗号化データから演算される第2演算結果とを照合する、
処理をコンピュータが実行することを特徴とする情報処理方法。
(付記11)第1鍵を用いた指数化により第1データを暗号化した第1暗号化データと、前記第1データに付与された電子署名と、前記電子署名が前記第1暗号化データの元データの真正性を検証可能な情報であることを証明するための証明情報とを受け付け、
第2鍵を用いた指数化により第2データを暗号化した第2暗号化データを受け付け、
前記証明情報を用いて前記電子署名の正当性を検証し、
前記第1鍵および前記第2鍵を管理する管理装置から、所定の関数を用いて前記第1鍵および前記第2鍵から演算された第1演算結果を取得し、
取得した前記第1演算結果と、前記所定の関数を用いて前記第1暗号化データおよび前記第2暗号化データから演算される第2演算結果とを照合する、
制御部を有することを特徴とする情報処理装置。