以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るデータマッチングシステムの構成例および処理例を示す図である。図1に示すデータマッチングシステムは、情報処理装置1と端末装置2とを有する。
情報処理装置1は、それぞれ個別のユーザに関するユーザ情報11,12,13,・・・を用いたマッチングを行うことで、特定のユーザを抽出する装置である。例えば、情報処理装置1は、ユーザ情報11,12,13,・・・として各ユーザの行動履歴を取得し、それらの行動履歴を基に、特定の目的に適したユーザを抽出する。
ただし、情報処理装置1は、マッチングの対象となる各ユーザから、ユーザ情報をそのまま取得するのではなく、確率的データ構造を有するスケッチングデータの形式で取得する。情報処理装置1は、スケッチングデータを用いたマッチングの結果としてあるユーザが特定されたときに、そのユーザからスケッチングデータの元データであるユーザ情報を取得する。そして、情報処理装置1は、取得したユーザ情報を用いて再度マッチングを行うことで、スケッチングデータを用いたマッチングの結果を検証する。
図1の例では、ユーザ情報11,12,13,・・・を変換することでスケッチングデータ21,22,23,・・・が得られるものとする。
端末装置2は、ユーザによって操作される端末装置の1つである。図1では例として、端末装置2は、ユーザ情報11に対応するユーザAによって操作されるものとする。
以下、本実施の形態に係るデータマッチングシステムの処理について、順を追って説明する。
まず、情報処理装置1は、スケッチングデータ21,22,23,・・・を受信する(ステップS1)。これらのうち、ユーザAに対応するスケッチングデータ21は、例えば、端末装置2から情報処理装置1に送信される。情報処理装置1は、記憶部3を備えており、受信したスケッチングデータ21,22,23,・・・を記憶部3に格納する。なお、記憶部3は、情報処理装置1が備える図示しない記憶装置の記憶領域として実現される。
次に、情報処理装置1は、格納されたスケッチングデータ21,22,23,・・・のそれぞれと、所定の参照データ31とのマッチングを実行する(ステップS2)。参照データ31は、特定のユーザを抽出するためのデータである。なお、実際には、参照データ31から変換されたスケッチングデータが、記憶部3内のスケッチングデータ21,22,23,・・・とマッチングされる。
ステップS2では、例えば、スケッチングデータ21,22,23,・・・のそれぞれと、参照データ31に基づくスケッチングデータとの類似度が算出される。そして、類似度が最も高く、かつ、類似度が所定の閾値以上であるスケッチングデータが存在する場合に、そのスケッチングデータに対応するユーザがマッチング結果として特定される。
図1では例として、マッチング結果としてユーザAが特定されたとする。この場合、情報処理装置1は、ユーザAに対して、ユーザAに対応するユーザ情報11の提供を要求する提供要求を送信する(ステップS3)。
端末装置2は、送信された提供要求に応じて、ユーザAのユーザ情報11の提供に同意する同意操作を、ユーザAから受け付ける(ステップS4)。例えば、提供要求により、提供が要求された情報の内容がユーザに通知される。この通知は、例えば、ユーザA宛ての電子メールを送信することや、端末装置2の表示装置(図示せず)に対する情報表示によって行われる。また、この通知では、例えば、提供が要求された情報の種別、その情報の使用目的などが通知される。そして、ユーザAは、この通知に基づいて、提供が要求された情報の内容を確認し、情報提供に同意する場合にのみ同意操作を行う。
端末装置2は、ユーザAによる同意操作に応じて、ユーザ情報11に基づいてユーザAの署名データ11aを生成する(ステップS5)。署名データ11aは、例えば、少なくともユーザ情報11を含む送信情報に基づくハッシュ値を、ユーザAの秘密鍵を用いて暗号化することで生成される。そして、端末装置2は、ユーザ情報11に署名データ11aを付加して情報処理装置1に送信する(ステップS6)。
情報処理装置1は、署名データ11aが付加されたユーザ情報11を受信すると、受信したユーザ情報11と、ステップS2で使用された参照データ31とのマッチングを行う(ステップS7)。このマッチングにより、ステップS2でのマッチングの結果が検証される。例えば、ユーザ情報11と参照データ31との類似度が所定の閾値以上であれば、ステップS2でのマッチングの結果が正しかったと判定される。
以上の処理によれば、各ユーザに関するユーザ情報11,12,13,・・・が、スケッチングデータ21,22,23,・・・に変換されて情報処理装置1に蓄積される。そして、スケッチングデータ21,22,23,・・・を用いてマッチングが行われ、そのマッチングの結果として特定されたユーザについてのみ、ユーザ情報が情報処理装置1に提供される。
スケッチングデータは、元データであるユーザ情報と比較して、個人情報の特定が困難なデータである。各ユーザのユーザ情報11,12,13,・・・がこのようなスケッチングデータ21,22,23,・・・として情報処理装置1に蓄積されることで、個人情報が漏洩する危険性が低下する。また、スケッチングデータを用いたマッチングにより特定されたユーザのユーザ情報だけが提供されることで、ユーザ情報が情報処理装置1に提供され、利用される機会が限定される。
しかも、ユーザ情報は、ユーザによる明確な同意操作に応じて提供される。そして、提供されるユーザ情報には、その同意操作に応じて生成されたユーザの署名データが付加される。情報処理装置1では、ユーザ情報にユーザの署名データが付加されていることで、ユーザ情報の提供にユーザが同意したことを明確に確認した上で、そのユーザ情報をマッチングに利用できる。例えば、署名データに基づいて、受信したユーザ情報が改ざんされていないことが確認された場合にのみ、ユーザ情報を用いたマッチングが実行される。このため、個人情報の秘匿性が高まり、ユーザのプライバシー保護の強度が向上する。
また、スケッチングデータを用いたマッチングは、ある程度の誤差が生じるので、元データを用いたマッチングより精度が低い。図1の処理では、スケッチングデータを用いたマッチングの結果を、元データを用いたマッチングによって検証することで、マッチング精度を維持できるようになる。
したがって、本実施の形態によれば、ユーザに関する情報を用いた高精度なマッチングを行うのに際して、ユーザの個人情報の秘匿性を確保できる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係るデータマッチングシステムの構成例を示す図である。図2に示すデータマッチングシステムは、事業者サーバ100、ユーザ端末200,200a,200b,・・・および管理者サーバ300を含む。事業者サーバ100、ユーザ端末200,200a,200b,・・・および管理者サーバ300は、ネットワーク50を介して相互に接続されている。
事業者サーバ100は、事業者によって運用されるサーバコンピュータである。事業者サーバ100は、ユーザの属性情報を用いてマッチングを行うことで、特定の目的に適するユーザや、特定の条件に合致するユーザを抽出するマッチングサービスを提供する。
ユーザ端末200,200a,200b,・・・は、ユーザによって操作される端末装置である。ユーザは、ユーザ端末200,200a,200b,・・・のいずれかを操作することで、ユーザ自身に関する属性情報を事業者サーバ100に登録し、事業者サーバ100によるマッチングの結果を示す情報を受け取ることができる。ユーザ端末200,200a,200b,・・・を用いることで、事業者サーバ100には多数のユーザの属性情報が登録され得る。
管理者サーバ300は、ユーザの属性情報を管理する管理者によって運用されるサーバコンピュータである。管理者サーバ300は、ユーザ端末200,200a,200b,・・・からの要求に応じて、ユーザの属性情報を要求元のユーザ端末を介して事業者サーバ100に送信する。
管理者サーバ300は、ユーザの属性情報の種別ごとに個別に設けられてもよい。例えば、ユーザの行動履歴(位置情報、購買履歴など)を管理する管理者サーバ300と、ユーザに関する著作物(ユーザによる著書や論文、ユーザが記載された新聞記事など)を管理する管理者サーバ300とが個別に設けられていてもよい。このように管理者サーバ300が属性情報の種別ごとに設けられる場合、ユーザの属性情報は複数の管理者サーバ300によって分散管理されることになる。
また、ネットワーク50には、ブロックチェーン400を構築するノード群401が接続されている。ノード群401には、サーバなどのコンピュータノードが複数含まれている。ブロックチェーン400は、DID(Decentralized IDentifier)を用いたデジタルIDサービスを提供する。DIDは、非集権的に管理される分散型のIDである。
デジタルIDサービスからは、少なくとも、各ユーザ、事業者サーバ100を運用する事業者、管理者サーバ300を運用するデータ管理者に対してそれぞれ個別のIDが発行される。以下、ユーザ、事業者、データ管理者に対して発行されたIDを、それぞれユーザID、事業者ID、管理者IDと記載する。ブロックチェーン400では、例えば、発行された各IDに対して公開鍵を対応付けて管理されている。
図3は、事業者サーバのハードウェア構成例を示す図である。事業者サーバ100は、例えば、図3に示すようなコンピュータとして実現される。図3に示す事業者サーバ100は、プロセッサ101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、グラフィックインタフェース(I/F)104、入力インタフェース(I/F)105、読み取り装置106およびネットワークインタフェース(I/F)107を備える。
プロセッサ101は、事業者サーバ100全体を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、事業者サーバ100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
HDD103は、事業者サーバ100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
グラフィックインタフェース104には、表示装置104aが接続されている。グラフィックインタフェース104は、プロセッサ101からの命令にしたがって、画像を表示装置104aに表示させる。表示装置としては、液晶ディスプレイや有機EL(ElectroLuminescence)ディスプレイなどがある。
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
ネットワークインタフェース107は、ネットワーク50を介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、事業者サーバ100の処理機能を実現することができる。なお、ユーザ端末200,200a,200b,・・・および管理者サーバ300についても、例えば、図3に示すような構成のコンピュータとして実現することができる。ユーザ端末200,200a,200b,・・・は、図3の構成の他、例えば、表示装置104aが一体化されたノート型コンピュータや、タブレット型端末、スマートフォンとして実現されてもよい。
次に、データマッチングシステムにおけるマッチング処理の具体例について説明する。
前述のように、管理者サーバ300では、ユーザの行動履歴やユーザに関する著作物といったユーザの属性情報が管理される。管理者サーバ300は、例えば、このような属性情報を各ユーザから収集することができる。
以下の説明では、管理者サーバ300では属性情報として、ユーザの行動履歴、特にユーザの位置情報の履歴が管理されるものとする。この場合、例えば、ユーザが携帯する端末装置においてユーザの位置情報が計測される。位置情報としては、GPS(Global Positioning System)データが計測される。管理者サーバ300は、計測されたユーザの位置情報をユーザの端末装置から収集し、ユーザIDに対応付けて記憶する。なお、ユーザの位置情報が計測される端末装置として、図2に示すユーザ端末200,200a,200b,・・・が用いられてもよい。
また、事業者サーバ100を運用する事業者は、地域の案内を行うボランティアを派遣する派遣事業を行う。この派遣事業に関し、事業者サーバ100は、ボランティアのマッチングサービスを提供する。マッチングサービスでは、事業者サーバ100は、サービスに対するユーザの登録を受け付け、登録されたユーザの中から、地域ごとに適切なユーザを特定して、そのユーザに地域案内のボランティアを行うように依頼する。ユーザの特定では、ユーザの位置情報の履歴に基づき、ある地域を案内するボランティアとして、その地域で行動する頻度が高い、あるいは行動する時間が長いユーザが特定される。
ここで、図4を用いて、ユーザの位置情報を用いたマッチングを含むシステム動作の比較例を示し、その後の図5以降において、第2の実施の形態におけるシステム動作について説明する。
図4は、データマッチングシステムの動作の比較例を示す図である。
管理者サーバ300は、ユーザの属性情報が記憶されたユーザデータ記憶部310を備える。管理者サーバ300は、前述のように属性情報をユーザから収集し、収集されたユーザデータ記憶部310に登録する。ユーザデータ記憶部310には、各ユーザのユーザIDに対応付けて、属性情報として位置情報(GPSデータ)が蓄積される。
ユーザは、ボランティアのマッチングサービスに対して事前に登録する。この登録では、ユーザ端末を用いてユーザ自身の属性情報が事業者サーバ100に登録される。以下、ユーザ端末200を操作するユーザが属性情報を登録する場合について説明する。
属性情報の登録処理では、ユーザ端末200から管理者サーバ300に対して、ユーザのユーザIDを指定して属性情報の送信が要求される。管理者サーバ300は、この送信要求に応じて、ユーザIDに対応する属性情報をユーザデータ記憶部310から読み出し、ユーザ端末200に送信する(ステップS11)。ユーザ端末200は、送信された属性情報を事業者サーバ100に転送し、ユーザIDを指定して属性情報の登録を要求する。事業者サーバ100は、ユーザデータ記憶部110を備えており、ユーザ端末200から登録が要求された属性情報を、ユーザIDに対応付けてユーザデータ記憶部110に登録する(ステップS12)。
事業者サーバ100は、ユーザの属性情報とのマッチングの際に参照される参照データが登録された参照データ記憶部120を備えている。参照データは、地域ごとに登録され、対応する地域を案内するユーザを特定するための条件を示すデータである。例えば、参照データには、対応する地域において案内の対象となるランドマークの位置情報や、ランドマーク間の移動経路上のポイントを示す位置情報が記述される。
事業者サーバ100は、ユーザデータ記憶部110に登録された各ユーザの属性情報と、参照データ記憶部120に登録された各参照データとのマッチングを行って、地域案内をするボランティアとしてふさわしいユーザを地域ごとに特定する。ただし、属性情報はデータサイズが大きく、大量の属性情報をそのまま用いてマッチングを行うと、マッチングの処理負荷が過大となる。そこで、図4の例では、属性情報のスケッチングデータが算出され、スケッチングデータを用いてマッチングが行われる。
スケッチングデータは、確率的データ構造を有するデータである。元データをスケッチングデータに変換することで、データサイズが縮小される。変換後のスケッチングデータを用いた場合のクエリに対する処理結果にはある程度の誤差が生じるものの、そのクエリに対する処理の効率を高めることができる。
スケッチングデータの算出アルゴリズムとしては、マッチングの内容に応じて選択可能である。例えば、MinHashは、集合間の類似度の算出に適する。Count-Min Sketchは、要素の出現頻度の一致判定に適する。ブルームフィルタは、要素が集合に含まれるかの判定に適する。
事業者サーバ100は、次のような手順でマッチングを行う。まず、事業者サーバ100は、ユーザデータ記憶部110に登録された各ユーザの属性情報を基に、ユーザごとのスケッチングデータを算出する。これとともに、事業者サーバ100は、参照データ記憶部120に登録された各参照データを基に、スケッチングデータを算出する(ステップS13)。なお、各スケッチングデータの算出は、各記憶部に対する登録時点で実行されてもよい。
事業者サーバ100は、各属性情報に基づくスケッチングデータと、各参照データに基づくスケッチングデータとのマッチングを行う(ステップS14)。例えば、ある1つの参照データに基づくスケッチングデータと、各属性情報に基づくスケッチングデータとのマッチングが行われたとすると、事業者サーバ100は、このマッチングにより参照データとの類似性が高い属性情報を特定する。例えば、属性情報に基づくスケッチングデータの中から、参照データに基づくスケッチングデータとの類似度が最大であり、かつ所定の閾値以上であるスケッチングデータがある場合に、そのスケッチングデータに対応する属性情報がマッチング結果として特定される。
次に、事業者サーバ100は、特定された属性情報をユーザデータ記憶部110から読み出すとともに、マッチングが行われた参照データを参照データ記憶部120から読み出す。そして、事業者サーバ100は、属性情報と参照データとのマッチングを行う(ステップS15)。このマッチングは、スケッチングデータを用いたマッチング(ステップS14)の結果が正しいかを確認するためのものであり、例えば、類似度が所定の閾値以上である場合にマッチング結果が正しいと判断される。この場合、事業者サーバ100は、属性情報に対応するユーザを、参照データに対応する地域を案内するボランティアとしてふさわしいと判断して、そのユーザに対してボランティアの活動を依頼する(ステップS16)。
ボランティアの依頼は、例えば、電子メールなどによってユーザ端末200に通知される。その通知を受けたユーザは、ボランティアの依頼を承諾する場合、ユーザ端末200を介して事業者サーバ100に対して依頼を承諾することを通知する(ステップS17)。
以上の比較例では、まず、スケッチングデータを用いてマッチングが行われ、その後にスケッチングデータの元データを用いてマッチングが行われる。このような手順によれば、ユーザデータ記憶部110に登録された属性情報をそのまま用いたマッチングは、登録された属性情報のうち、スケッチングデータを用いたマッチングにより特定された属性情報についてのみ行われる。このため、マッチングの処理負荷を軽減できる。また、スケッチングデータを用いたマッチングの結果の正当性が、元データを用いたマッチングによって検証されるので、マッチング精度が低下することを防止できる。
ところで、ユーザの属性情報はユーザの個人情報であるので、慎重な取り扱いが必要である。図4に示す手順では、管理者サーバ300から事業者サーバ100に対する属性情報の提供は、少なくとも、ユーザの同意が確実に得られた状態で行われた方がよい。例えば、管理者サーバ300からの属性情報の送信は、ユーザ端末200に対するユーザによる明確な同意の操作に応じて実行される(ステップS12a)。また、事業者サーバ100に対する属性情報の転送は、ユーザが同意したことを事業者サーバ100側が確認できる状態で行われる。
属性情報の送信は、例えば、W3C(World Wide Web Consortium)で標準化されているVC(Verifiable Credential)の仕組みを用いて行うことができる。VCでは、属性情報のデータ形式や転送手順などが規定されている。VCでは、秘密鍵・公開鍵を用いたセキュアなデータ転送が行われる。
例えば、ユーザの操作によって属性情報の送信が管理者サーバ300に要求されると、管理者サーバ300は、ユーザの属性情報に、管理者IDに対応付けられた秘密鍵を用いて署名し、署名された属性情報をユーザ端末200に送信する。ユーザ端末200は、受信したデータに対して、ユーザIDに対応付けられた秘密鍵を用いてさらに署名し、署名されたデータを事業者サーバ100に送信する。
事業者サーバ100は、ユーザIDに対応付けられた公開鍵をブロックチェーン400上のレポジトリ(図示せず)から取得し、取得した公開鍵を用いてユーザの署名を復号することで、受信したデータの内容に改ざんがないかを確認する。このとき、データにユーザの署名があることで、改ざんの有無とともに、ユーザによる情報提供の同意があったことも確認できる。また、事業者サーバ100は、管理者IDに対応付けられた公開鍵を上記のレポジトリから取得し、取得した公開鍵を用いてデータ管理者の署名を復号することで、受信したデータの内容に改ざんがないかをさらに確認する。
しかしながら、個人情報の取り扱いという観点では次のような課題もある。図4に示した手順では、ユーザの属性情報がそのまま事業者サーバ100に提供され、蓄積される。このため、ユーザにとっては、個人情報の漏洩の懸念もあり、情報提供に対する心理的抵抗が大きい。この点は、事業者サーバ100に対する属性情報の登録数が増えない原因にもなり、事業者サーバ100のサービス品質の低下にもつながる。
さらに、図4に示した手順では、スケッチングデータと比較してサイズの大きい属性情報が、そのまま事業者サーバ100に送信され、蓄積される。このため、ネットワーク50の負荷や、事業者サーバ100側でデータを蓄積するための容量が大きくなるという問題もある。
そこで、属性情報を事業者サーバ100にそのまま提供するのでなく、属性情報をスケッチングデータに変換した上で事業者サーバ100に提供する方法が考えられる。この方法によれば、個人情報の特定が困難なスケッチングデータの状態で属性情報が提供されることで、データの秘匿性が高まり、情報提供の際のユーザの心理的抵抗も小さくなる。また、事業者サーバ100に送信されるデータのサイズも縮小できる。その一方で、事業者サーバ100ではスケッチングデータを用いたマッチングしか行われなくなるので、マッチング精度が低下するという問題がある。
そこで、第2の実施の形態では、次の図5に示すように、ユーザの属性情報ではなく、属性情報に基づくスケッチングデータが事業者サーバ100に提供され、登録される。事業者サーバ100では、スケッチングデータを用いたマッチングが行われ、マッチングによりユーザが暫定的に特定されると、そのユーザの属性情報が事業者サーバ100に提供される。事業者サーバ100では、提供された属性情報を用いたマッチングの実行により、スケッチングデータを用いたマッチング結果の正当性が確認される。このような手順により、ユーザの個人情報の秘匿性を高めつつ、かつ、マッチング精度を維持しながら、マッチングを含む一連の処理の効率を高めることを可能にする。
図5は、第2の実施の形態に係るデータマッチングシステムの動作の概要を示す図である。
図5に示すように、管理者サーバ300は、図4と同様のユーザデータ記憶部310を備える。一方、事業者サーバ100は、図4と同様の参照データ記憶部120を備えるが、図4のユーザデータ記憶部110の代わりに、属性情報に基づくスケッチングデータを蓄積するためのスケッチングデータ記憶部111を備える。
マッチングサービスに対する登録の際には、まず、管理者サーバ300において、ユーザデータ記憶部310からユーザの属性情報が読み出され、その属性情報に基づいてスケッチングデータが算出される(ステップS21)。算出されたスケッチングデータはユーザ端末200に送信され、ユーザ端末200から事業者サーバ100に転送されて、スケッチングデータ記憶部111に登録される(ステップS22)。このような管理者サーバ300から事業者サーバ100に対するスケッチングデータの提供は、ユーザの同意が得られた状態で行われる。
事業者サーバ100は、スケッチングデータ記憶部111に登録された各ユーザのスケッチングデータを用いて、マッチングを行う(ステップS23)。このマッチングでは、参照データ記憶部120に登録された参照データに基づくスケッチングデータと、スケッチングデータ記憶部111に登録されたスケッチングデータとの類似度が計算される。
ここで、マッチングにより、ユーザ端末200を操作するユーザに対応するスケッチングデータが特定されたとする。この場合、参照データに対応する地域を案内するボランティアとして、ユーザが暫定的に特定されたことになる。すると、事業者サーバ100は、そのボランティアとして活動することをユーザに依頼する(ステップS24)。この依頼の際には、スケッチングデータを用いたマッチングの結果を検証するために、スケッチングデータに対応する元データ、すなわち属性情報の提供を要求することが、ユーザに対して明確に通知される。
ユーザにより依頼を承諾する操作が行われると(ステップS25)、ユーザ端末200から管理者サーバ300に対して属性情報の提供が要求される。この承諾操作は、属性情報の提供にユーザが同意したことを示す。管理者サーバ300からは、この要求に応じてユーザの属性情報(元データ)が送信され、ユーザ端末200を介して事業者サーバ100に転送される(ステップS26)。このような手順により、属性情報の提供はユーザの同意が得られた状態で行われることになる。
事業者サーバ100は、提供された属性情報と、ステップS23で用いられた参照データとのマッチングを実行して、ステップS23のマッチングの結果を確認する(ステップS27)。マッチングの結果が正しいと判定された場合、ユーザに対するボランティア活動の依頼処理が完了し、ユーザがそのボランティア活動を承諾したことが確定される(ステップS28)。
以上の手順によれば、各ユーザの属性情報は、データサイズが小さく、かつ個人情報の特定が困難なスケッチングデータに変換されて事業者サーバ100に提供され、登録される。そして、スケッチングデータを用いたマッチングにより特定されたユーザについてのみ、スケッチングデータの元データである属性情報が事業者サーバ100に提供される。
これにより、各ユーザの属性情報を事業者サーバ100に提供する場合と比較して、事業者サーバ100に送信されるデータ量を低減でき、事業者サーバ100側で情報を蓄積するための容量を縮小できる。また、属性情報自体を用いたマッチングの実行回数が減少するので、マッチングの処理負荷を軽減できる。さらに、スケッチングデータを用いたマッチングの結果の正当性が元データを用いたマッチングによって検証されるので、マッチング精度の低下を防止できる。
また、事業者サーバ100側で属性情報が蓄積されないので、属性情報が漏洩する可能性を低減できる。また、マッチングに基づく特定のユーザについてのみ属性情報が提供されるので、全体として属性情報の秘匿性を向上させることができる。また、提供された属性情報は特定の参照データとの1回のマッチング時のみ使用される。このため、属性情報の使用目的や使用機会が限定されることから、この点でも属性情報の秘匿性を向上させることができ、個人情報のセキュリティを強化できる。
また、ユーザによる情報登録時には、属性情報はスケッチングデータの状態で事業者サーバ100に登録されるので、情報登録に対するユーザの心理的抵抗を軽減できる。このため、事業者サーバ100に対する情報登録が促進され、事業者サーバ100のサービス品質を向上させることができる。
また、ユーザは、上記のように属性情報の使用機会が限定され、しかもその使用目的を認識した状態で、属性情報の提供に同意することができる。このため、情報提供に対するユーザの心理的抵抗を軽減できる。また、この点については、このような同意の下で、属性情報が限定的な目的および機会で使用されることから、属性情報の秘匿性が向上し、個人情報のセキュリティが強化される、ということもできる。
図6は、属性情報に基づくスケッチングデータの算出例を示す図である。図6では、MinHash法によりスケッチングデータが算出される場合を例示する。
MinHash法では、2つの集合の各要素に対してあるハッシュ関数を適用することで、各集合について複数のハッシュ値が算出され、各集合について、複数のハッシュ値の中から最小値が抽出される。このとき、両者の最小値が一致する確率は集合間の類似度に等しい、という考え方が用いられる。
実際には、例えば、複数のハッシュ関数(k個のハッシュ関数とする)をそれぞれ用いて上記のようにハッシュ値が算出される。その結果、集合ごとにハッシュ値の最小値がk個抽出される。そして、一方の集合についてのk個の最小値と、他方の集合についてのk個の最小値とが比較され、値が一致した数が類似度の近似値として算出される。
図6では、管理者サーバ300において属性情報に基づいてスケッチングデータが算出される場合を例示している。図6の例では、ユーザの属性情報として行動履歴321が収集される。行動履歴321には、ユーザの移動軌跡を示す位置情報(例えば、経度・緯度を示すGPSデータ)の集合が含まれる。そして、この行動履歴321から、特徴量を示す数値配列322が算出される(ステップS31)。例えば、行動履歴321に基づき、ユーザの移動軌跡に近接する所定のランドマークの位置情報が、数値配列322として算出される。図6では、n箇所のランドマークの位置情報が数値配列322に記述されている。なお、数値配列322には、例えば、ランドマークの位置情報の代わりに、ランドマークの識別番号が記述されてもよい。
なお、ユーザデータ記憶部310に登録される属性情報としては、行動履歴321の情報が登録されてもよいし、数値配列322のように、行動履歴321を基に算出された特徴量を示す情報が登録されてもよい。前者の場合には、属性情報が管理者サーバ300から事業者サーバ100に提供される際、行動履歴321から再度算出された特徴量を示す情報が、事業者サーバ100に提供されてもよい。
一方、事業者の事業者IDと属性情報に対応するユーザのユーザIDとをシード値として、要素数kのハッシュ関数列323が生成される(ステップS32)。すなわち、ハッシュ関数列323には、k個のハッシュ関数h1(),h2(),・・・,hk()が含まれる。そして、数値配列322に含まれる要素(位置情報)のそれぞれに対応するハッシュ値が、k個のハッシュ関数h1(),h2(),・・・,hk()をそれぞれ用いて計算される(ステップS33)。これにより、それぞれn個のハッシュ値を含むk個の数値配列324_1,324_2,・・・,324_kが算出される。
なお、事業者IDとユーザIDとがシード値として用いられることで、事業者とユーザとの間でのみ共有されるハッシュ関数が生成される。これにより、スケッチングデータから元データを類推することの難度が高まり、データの秘匿性が向上する。
次に、k個の数値配列324_1,324_2,・・・,324_kのそれぞれからハッシュ値の最小値が抽出され、抽出された最小値の配列325が生成される(ステップS34)。この配列325が属性情報に基づくスケッチングデータとなる。
ところで、本実施の形態に係るデータマッチングシステムでは、VCで規定された手順で情報が伝送される。この情報伝送では、IDに対応付けられた暗号鍵を用いて、伝送される情報に対して段階的に署名データが付加される。これにより、伝送される情報の正当性が保証されるとともに、伝送経路上の装置ごとに、正当性を示す情報を段階的に付加することができる。
図7は、事業者サーバに送信される送信データの例を示す図である。図7では、スケッチングデータの送信の際にVC方式で生成される送信データ210を例示している。
管理者サーバ300では、送信データ210のうち領域211の「claim」の情報が生成される。「claim」においては、「id」にユーザのユーザIDが記述される。また、「claim」内の「sketch」には、送信対象データを示す「values」、送信対象データのタイプを示す「type」、送信対象データのサイズを示す「length」が記述される。スケッチングデータの提供の際には、「values」の項目に、提供が要求されたスケッチングデータ(ハッシュ値の最小値の配列)が記述される。
さらに本実施の形態では、スケッチングデータの提供の際には、「sketch」の中に「hash」が記述される。「hash」には、スケッチングデータの元データ(すなわち、対応する属性情報)のハッシュ値が記述される。後述するように、このハッシュ値は、元データを用いたマッチングが行われる前に、スケッチングデータと元データとの対応関係の正当性を確認するために利用される。
また、「claim」には、「signatureValue」が記述される。「signatureValue」には、「sketch」に記述されたデータに基づくハッシュ値を、管理者IDに対応する秘密鍵で暗号化することで算出されたデータ管理者の署名データが記述される。
ユーザ端末200は、上記の「claim」の情報を管理者サーバ300から受信すると、この情報に生成日時などの所定のヘッダ情報を付加するとともに、「signature」を付加する(図7の領域212)。「signature」には、ユーザの署名データが記述される。ユーザの署名データは、「claim」に記述されたデータに基づくハッシュ値を、ユーザIDに対応する秘密鍵で暗号化することで算出される。
以上のようにして生成された送信データ210は、ユーザ端末200から事業者サーバ100に送信される。事業者サーバ100は、ユーザの署名データに基づいて、受信した送信データ210のうち、「claim」の領域における改ざんの有無を確認できる。また、事業者サーバ100は、データ管理者の署名データに基づいて、「sketch」の領域における改ざんの有無を確認できる。
また、元データ(すなわち、属性情報)が提供される際には、「values」に元データが記述され、「signatureValue」にデータ管理者の署名データが記述された「claim」が管理者サーバ300で生成される。ただし、「claim」には「hash」は含まれない。このような「claim」がユーザ端末200に送信されると、この情報に所定のヘッダ情報が付加されるとともに、ユーザの署名データが記述された「signature」が付加されて、事業者サーバ100に送信される。
このように、VCの規定にしたがって送信データが生成されて伝送されることで、提供が要求されたユーザに関する情報は、段階的に適切なデータ形式で流通されるようになる。例えば、ユーザは、ユーザ自身に関する情報を、提供元であるデータ管理者の署名が付加された状態で受け取る。これによりユーザは、情報の提供者やその内容が保証された状態でユーザの情報を確実に受け取ることができる。そして、ユーザは、ユーザ自身による明確な同意の操作に応じて、受け取った情報に対してユーザ自身の署名を付加し、情報の利用者である事業者に提供することができる。事業者は、データ管理者およびユーザの署名に基づいて、提供された情報の内容の正当性を確認できるとともに、ユーザの署名からユーザから提供の同意が得られたことを明確に確認できる。ユーザにとっては、ユーザ自身が提供に同意している情報のみを情報の利用者である事業者に確実に受け渡すことができる。
また、本実施の形態では、スケッチングデータの提供の際に、元データに基づくハッシュ値も事業者サーバ100に提供される。事業者サーバ100は、提供されたハッシュ値を、スケッチングデータとともにユーザIDに対応付けてスケッチングデータ記憶部111に登録する。そして、事業者サーバ100は、このスケッチングデータを用いたマッチング結果に基づいてユーザから属性情報を受信したときに、対応するハッシュ値を用いることで、受信した属性情報がスケッチングデータの元データであることを検証できる。これにより、属性情報を用いたマッチング処理の確実性を高めることができる。
以下、第2の実施の形態に係るデータマッチングシステムの動作について、さらに詳しく説明する。
図8は、データマッチングシステム内の各装置が備える処理機能の構成例を示す図である。
まず、図8に示すリポジトリサーバ410は、図2に示したノード群401に含まれるノードの1つとして実現されるサーバコンピュータである。リポジトリサーバ410は、公開鍵記憶部411と鍵管理部412とを備える。
公開鍵記憶部411は、例えば、リポジトリサーバ410が備える図示しない記憶装置の記憶領域として実現される。公開鍵記憶部411には、前述のデジタルIDサービスから発行されたIDに対応付けて、公開鍵が記憶されている。鍵管理部412の処理は、例えば、リポジトリサーバ410が備える図示しないプロセッサが所定のプログラムを実行することで実現される。鍵管理部412は、IDが発行された場合に、IDの保有者側で生成された非対称鍵方式の鍵ペア(秘密鍵と公開鍵)のうち、公開鍵の登録を受け付け、IDに対応付けて公開鍵記憶部411に登録する。本実施の形態では、少なくとも、ユーザID、事業者IDおよび管理者IDに対応する公開鍵が公開鍵記憶部411に登録される。また、鍵管理部412は、IDを指定した要求に応じて、そのIDに対応する公開鍵を提供する。
管理者サーバ300は、前述のユーザデータ記憶部310に加えて、秘密鍵記憶部330、データ提供部341、スケッチングデータ算出部342および署名エンジン343を備える。
ユーザデータ記憶部310および秘密鍵記憶部330は、例えば、管理者サーバ300が備える図示しない記憶装置の記憶領域として実現される。ユーザデータ記憶部310には、ユーザIDに対応付けて、ユーザに関して収集された属性情報が登録される。秘密鍵記憶部330には、データ管理者の管理者IDに対応する秘密鍵が記憶される。
データ提供部341、スケッチングデータ算出部342および署名エンジン343の処理は、例えば、管理者サーバ300が備える図示しないプロセッサが所定のプログラムを実行することで実現される。
データ提供部341は、ユーザ端末200からの要求に応じて、指定されたユーザIDに対応する属性情報やスケッチングデータを提供するための処理を実行する。スケッチングデータ算出部342は、ユーザデータ記憶部310から読み出した属性情報に基づいてスケッチングデータを算出する。署名エンジン343は、データ管理者の秘密鍵を用いてデータ管理者の署名データを生成する。
ユーザ端末200は、秘密鍵記憶部220、データ登録部231、元データ送信部232および署名エンジン233を備える。
秘密鍵記憶部220は、例えば、ユーザ端末200が備える図示しない記憶装置の記憶領域として実現される。秘密鍵記憶部220には、ユーザ端末200を操作するユーザのユーザIDに対応する秘密鍵が記憶される。
データ登録部231、元データ送信部232および署名エンジン233の処理は、例えば、ユーザ端末200が備える図示しないプロセッサが所定のプログラムを実現することで実現される。データ登録部231は、マッチングサービスにユーザを登録するために、ユーザの属性情報に基づくスケッチングデータを事業者サーバ100に登録する処理を実行する。元データ送信部232は、事業者サーバ100からの依頼に応じて、スケッチングデータの元データ(属性情報)を管理者サーバ300から取得し、事業者サーバ100に提供する処理を実行する。署名エンジン233は、ユーザの秘密鍵を用いてユーザの署名データを生成する。
なお、図示しないが、他のユーザ端末200a,200b,・・・も、ユーザ端末200と同様の処理機能を備える。
事業者サーバ100は、前述のスケッチングデータ記憶部111および参照データ記憶部120に加えて、登録受付部131、マッチング部132、依頼処理部133および署名検証部134を備える。
スケッチングデータ記憶部111および参照データ記憶部120は、例えば、RAM102やHDD103など、事業者サーバ100が備える記憶装置の記憶領域として実現される。
スケッチングデータ記憶部111には、ユーザ端末200,200a,200b,・・・から登録されたユーザに関する情報が登録される。スケッチングデータ記憶部111には、各ユーザのユーザIDに対応付けて、少なくとも、スケッチングデータと、元データに基づくハッシュ値とが記憶される。
参照データ記憶部120には、マッチング処理においてユーザの属性情報と照合される参照データが、ボランティアに案内させる地域ごとに登録される。例えば、参照データとしては、地域ごとに、その地域において案内の対象となるランドマークの位置情報や、ランドマーク間の移動経路上のポイントを示す位置情報が記述される。また、参照データには、ランドマークや移動経路上のポイントを示す識別情報が記述されていてもよい。
登録受付部131は、ユーザ端末200,200a,200b,・・・からユーザのスケッチングデータの登録を受け付ける処理を実行する。マッチング部132は、スケッチングデータ記憶部111に登録されたスケッチングデータ、またはその元データと、参照データ記憶部120に登録された参照データとのマッチング処理を実行する。
依頼処理部133は、スケッチングデータを用いたマッチングによりボランティアを依頼するユーザが暫定的に特定された場合に、そのユーザに対してボランティアの活動を依頼するとともに、元データの提供を依頼する。依頼処理部133は、ユーザから元データが提供された場合には、元データを用いたマッチングをマッチング部132に実行させ、マッチングの結果をユーザに通知する。署名検証部134は、ユーザ端末200,200a,200b,・・・から受信したデータに付加された署名データに基づいて、データの正当性(改ざんの有無)を検証する。
図9は、スケッチングデータ登録時の処理手順を示すシーケンス図の例である。
[ステップS41]ユーザ端末200において、ボランティアのマッチングサービスを受けるためのアプリケーションが実行される。これによりデータ登録部231、元データ送信部232および署名エンジン233が起動し、まず、データ登録部231によってマッチングサービスに対する登録処理が実行される。
データ登録部231は、例えば、事業者サーバ100のWebサーバにアクセスし、ボランティアの依頼を受けるためのサービスに対する登録画面の情報を取得する。これにより、ユーザ端末200の表示装置にブラウザが表示され、ブラウザ内に登録画面が表示される。
ユーザは、登録画面に対して、ユーザのユーザIDと、ユーザに関する補助情報(例えば、名前、メールアドレスなど)とを入力し、登録操作を行う。これにより、データ登録部231は、入力された情報とともにサービスに対する登録要求を事業者サーバ100に送信する。
[ステップS42]事業者サーバ100の登録受付部131は、受信したユーザIDと補助情報とをスケッチングデータ記憶部111に登録し、スケッチングデータの提供を要求する提供要求をユーザ端末200に送信する。この処理では、例えば、事業者ID、提供を要求するデータ(マッチングに必要なデータ)の種別を示すデータ種別(位置情報、時刻など)、データ種別ごとに使用されるアルゴリズム名、要求データ数(図6のnに対応)、その他の補助情報(データ取得期間、スケッチングデータの算出に必要なパラメータなど)が、提供要求とともに送信される。
[ステップS43]ユーザ端末200のデータ登録部231は、少なくとも、受信したデータ種別が示す、提供が要求されたデータの内容を、ブラウザ内に表示して、ユーザに確認させる。ユーザは、表示内容を確認し、情報提供に同意する場合には同意の操作を行う。その場合、処理はステップS44に進められる。
[ステップS44]データ登録部231は、事業者サーバ100から受信した情報を、ユーザのユーザIDとともに管理者サーバ300に送信して、スケッチングデータの提供を要求する。
ここで、図10は、サービス登録画面の表示例を示す図である。図10に示す画面240は、図9のステップS41においてユーザ端末200のブラウザに表示される。
画面240には、ユーザの名前、ユーザのメールアドレスをそれぞれ入力するための入力欄241,242と、登録を要求するための登録ボタン243とが表示されている。入力欄241,242にそれぞれ情報が入力され、登録ボタン243に対する選択操作が行われると、入力された名前およびメールアドレスとともに、名前に対応するユーザIDが事業者サーバ100に送信される。
図11は、スケッチングデータの提供要求画面の表示例を示す図である。図11に示す画面250は、図9のステップS43においてユーザ端末200のブラウザに表示される。
画面250の領域251には、事業者から提供が要求された情報の内容を説明する文章が表示される。図9の例では、ユーザのアクティビティ情報が、統計的に処理された形式に加工され、個人の特定が不可能な状態で提供されること、提供された情報がマッチングの目的のみで利用されること、提供される情報として時刻情報とGPS情報が含まれることが、表示される。
また、画面250には同意ボタン252と不同意ボタン253とが表示されている。ユーザが領域251の表示内容を確認した上で情報提供に同意する場合、同意ボタン252に対する選択操作が行われる。この場合、図9のステップS44の処理が実行される。すなわち、提供される情報の内容を確認したユーザによる明確な同意を示す操作に応じて、スケッチングデータの提供処理が実行されることになる。一方、情報提供に同意しない場合には、不同意ボタン253に対する選択操作が行われることで、登録処理は終了する。
以下、図9を用いて説明を続ける。
[ステップS45]管理者サーバ300のデータ提供部341は、ユーザ端末200から受信した情報をスケッチングデータ算出部342に渡して、スケッチングデータの算出を依頼する。図6に示したようにMinHash法が用いられる場合、スケッチングデータ算出部342は、ユーザIDに対応する属性情報をユーザデータ記憶部310から要求データ数分(n個)取得する。図6の例によれば、n個のランドマークの位置情報が取得される。このとき、事業者サーバ100から指定されたデータ取得期間に含まれるn個の位置情報が取得される。
スケッチングデータ算出部342は、ユーザIDと管理者IDをシード値として用いてk個のハッシュ関数を生成し、ハッシュ関数をそれぞれ用いてn個の属性情報のハッシュ値を計算して、ハッシュ関数ごとにハッシュ値の最小値を抽出する。これにより、n個の最小値を含む数値配列が、スケッチングデータとして算出される。
[ステップS46]データ提供部341は、ステップS45でユーザデータ記憶部310から取得されたn個の属性情報を用いてハッシュ計算を行い、元データのハッシュ値を算出する。
[ステップS47]データ提供部341は、ステップS45で算出されたスケッチングデータと、ステップS46で算出された元データのハッシュ値とを含む「sketch」のデータ(図7参照)を生成する。また、データ提供部341は、生成された「sketch」のデータを署名エンジン343に通知し、データ管理者の署名データの生成を依頼する。
署名エンジン343は、データ管理者の秘密鍵を秘密鍵記憶部330から取得する。データ提供部341は、所定のハッシュ関数を用いて「sketch」のデータのハッシュ値を算出し、算出されたハッシュ値をデータ管理者の秘密鍵で暗号化することで、データ管理者の署名データ(「signatureValue」、図7参照)を生成する。
データ提供部341は、「sketch」のデータと、署名データとを含む「claim」のデータを生成して、ユーザ端末200に送信する。なお、送信されるデータは、データ管理者の秘密鍵を用いて暗号化されていてもよい。
[ステップS48]ユーザ端末200のデータ登録部231は、「claim」のデータを受信する。受信データが暗号化されていた場合、データ管理者の公開鍵を用いて受信データを復号し、「claim」のデータを取得する。データ管理者の公開鍵は、リポジトリサーバ410の鍵管理部412から取得される。
データ登録部231は、「claim」のデータを署名エンジン233に通知して、ユーザの署名データの生成を依頼する。署名エンジン233は、ユーザの秘密鍵を秘密鍵記憶部220から取得する。署名エンジン233は、所定のハッシュ関数を用いて「claim」のデータのハッシュ値を算出し、算出されたハッシュ値をユーザの秘密鍵で暗号化することで、ユーザの署名データ(「signature」、図7参照)を生成する。
データ登録部231は、「claim」のデータに生成日時などの所定のヘッダ情報を付加し、ユーザの署名データとともに事業者サーバ100に送信する。なお、送信されるデータは、ユーザの秘密鍵を用いて暗号化されていてもよい。
[ステップS49]事業者サーバ100の登録受付部131は、ユーザ端末200からのデータを受信すると、署名データを用いて受信データを検証する。
まず、登録受付部131は、ユーザのユーザIDを指定してユーザの公開鍵をリポジトリサーバ410に要求する。この要求に応じて、リポジトリサーバ410の鍵管理部412からユーザIDに対応する公開鍵が送信され、事業者サーバ100の登録受付部131がこの公開鍵を受信する。
登録受付部131は、ユーザ端末200からの受信データが暗号化されていた場合、ユーザの公開鍵を用いて受信データを復号する。登録受付部131は、受信データからユーザの署名データを抽出し、ユーザの公開鍵を用いて復号する。登録受付部131は、受信データ内の「claim」のデータのハッシュ値を算出し、算出されたハッシュ値と署名データを復号して得られたハッシュ値とを比較する。
これらのハッシュ値が一致した場合、「claim」のデータが改ざんされていないことが確認されるとともに、ユーザからスケッチングデータの提供の同意が得られたことが確認される。すると、登録受付部131は次に、管理者IDを指定してデータ管理者の公開鍵をリポジトリサーバ410に要求する。この要求に応じて、リポジトリサーバ410の鍵管理部412から管理者IDに対応する公開鍵が送信され、事業者サーバ100の登録受付部131がこの公開鍵を受信する。
登録受付部131は、「claim」のデータからデータ管理者の署名データを抽出し、データ管理者の公開鍵を用いて復号する。登録受付部131は、受信データ内の「sketch」のデータのハッシュ値を算出し、算出されたハッシュ値と署名データを復号して得られたハッシュ値とを比較する。これらのハッシュ値が一致した場合、「sketch」のデータが改ざんされていないことが確認される。すると、処理がステップS50に進められる。
なお、ユーザの署名またはデータ管理者の署名のいずれかを用いた検証でデータの改ざんが認められた場合、ユーザ端末200に対して登録のエラーが通知され、登録処理は終了する。
[ステップS50]登録受付部131は、受信データに含まれるスケッチングデータと元データのハッシュ値とを、ユーザIDに対応付けてスケッチングデータ記憶部111に登録する。
[ステップS51]登録受付部131は、登録が正常に完了したことをユーザ端末200に通知する。この通知に応じて、登録が正常に完了したことがユーザ端末200のブラウザに表示される。
次に、図12、図13は、ボランティアの活動を依頼する際の処理手順を示すシーケンス図の例である。
[ステップS61]事業者サーバ100のマッチング部132は、スケッチングデータ記憶部111に登録されたユーザのスケッチングデータと、参照データ記憶部120に登録された参照データに基づくスケッチングデータとの間でマッチング処理を実行する。ここで、参照データを基にスケッチングデータを算出するためのハッシュ関数は、照合対象のスケッチングデータに対応するユーザごとに生成される。すなわち、ハッシュ関数は、照合対象のスケッチングデータに対応するユーザIDと、事業者IDとをシードとして算出される。
ここで、ある参照データとの類似度が最も高く、かつ類似度が閾値以上であるユーザのスケッチングデータとして、ユーザ端末200を操作するあるユーザが特定されたとする。この場合、その参照データに対応する地域を案内するボランティアとして、そのユーザがふさわしいと暫定的に判定されたことになる。
[ステップS62]事業者サーバ100の依頼処理部133は、マッチングにより特定されたユーザに対して、ボランティアとして活動することを依頼する活動依頼を通知する。ここでは例として、依頼処理部133は、特定されたユーザのメールアドレスをスケッチングデータ記憶部111から取得し、取得したメールアドレス宛てに、活動依頼を通知するためのメールを送信する。また、活動依頼を通知する情報には、依頼されるボランティアの活動内容や、その依頼に対して申し込むための案内情報が含まれる。
[ステップS63]送信されたメールがユーザ端末200に受信され、メールの内容をユーザが閲覧する。ユーザは、ボランティアの依頼内容を確認し、その依頼を承諾してボランティアに申し込みたいと考えた場合には、メールで案内された内容にしたがって申込操作を行う。
[ステップS64]事業者サーバ100の依頼処理部133は、スケッチングデータの元データ、すなわちユーザの属性情報の提供を要求する情報を送信する。送信される情報には、属性情報の要求情報として、事業者ID、提供を要求するデータのデータ種別、使用されるアルゴリズム名、要求データ数n、その他の補助情報(データ取得期間など)が含まれる。さらに、送信される情報には、提供を要求する属性情報の内容をユーザに確認させるための情報や、提供の同意を求めるための情報が含まれる。
[ステップS65]ユーザ端末200の元データ送信部232は、受信した情報に基づいて、元データの提供に対する同意操作画面をブラウザに表示する。この同意操作画面には、提供が要求された属性情報の内容を示す情報や、提供の同意操作を行うための操作ボタンなどが含まれる。表示された情報をユーザが確認し、提供を同意する操作を行うと、処理がステップS66に進む。
[ステップS66]元データ送信部232は、ステップS64での送信情報に含まれる、属性情報の要求情報を、管理者サーバ300に送信する。
ここで、図14は、ボランティア活動の依頼画面の表示例を示す図である。図14に示す画面260は、図12のステップS62において事業者サーバ100からユーザに通知される情報の一例を示す。図12の画面260は、ユーザ宛ての電子メールによって活動依頼が通知された場合における、電子メールの表示例を例示している。
画面260には、ボランティアの依頼内容が表示される領域261と、依頼されたボランティアに申し込むためのボタン262と、ボランティアに申し込まないことを通知するためのボタン263とが含まれる。ユーザは、領域261に表示された内容を確認して、ボランティアに申し込むかを決める。
ボタン262に対する選択操作が行われると、このボタン262に対応付けられていたURL(Uniform Resource Locator)に対してリンクされ、事業者サーバ100から元データ(属性情報)の提供に対する同意操作画面を表示するための表示情報が送信される。一方、ボタン263に対する選択操作が行われると、ボランティアに申し込まないことが事業者サーバ100に通知されて、処理が終了する。
図14の画面260において依頼された内容は、属性情報に基づくスケッチングデータを用いたマッチングにより依頼されたものである。このため、必ずしも依頼内容がユーザにマッチしているとは限らない。例えば、ユーザがほとんど行ったことのない地域を案内するボランティアの活動が依頼される可能性がある。
依頼内容が不適切な場合には、ユーザは、ボタン263に対する選択操作を行うことで、ボランティアに申し込まないことを事業者サーバ100に通知することができる。これにより、ユーザは、ユーザ自身の個人情報が事業者側に不必要に提供されることを抑止できる。
図15は、元データ提供に対する同意操作画面の表示例を示す図である。図14のボタン262に対する選択操作が行われると、事業者サーバ100の依頼処理部133から、スケッチングデータの元データの提供依頼が送信される(図12のステップS64)。ユーザ端末200の元データ送信部232は、提供依頼を受信すると、例えば、図15に示すような画面270をブラウザに表示する。すなわち、画面270は、図12のステップS65で表示される同意操作画面の一例である。
画面270には、提供が要求された属性情報の内容を示す領域271と、提供された属性情報の使用目的を示す領域272と、情報提供に同意するためのボタン273と、情報提供に同意せず、ボランティアの申込をキャンセルするためのボタン274とが含まれる。ユーザは、領域271を視認して提供が要求された情報の内容を確認し、さらに領域272を視認して情報の使用目的を確認した上で、情報提供に同意するか否かを決めることができる。また、例えば、領域271に含まれるボタン275の選択操作を行うことで、提供が要求された情報についてのさらに詳細な内容を表示させて確認することもできる。
ボタン273に対する選択操作が行われると、属性情報の要求情報がユーザ端末200から管理者サーバ300に送信される(図12のステップS66)。一方、ボタン274に対する選択操作が行われると、情報提供に同意せず、ボランティアの申込をキャンセルすることが事業者サーバ100に通知される。
このように、ユーザは、スケッチングデータの元データ、すなわち属性情報そのものの提供が要求された場合には、提供された情報の内容や使用目的を確実に確認した上で、属性情報を事業者に提供することができる。これにより、提供が要求された情報の内容やその使用目的に応じて、ユーザの意思により属性情報の提供機会を制限でき、属性情報の秘匿性を向上させることができる。
以下、図13を用いて説明を続ける。
[ステップS67]管理者サーバ300のデータ提供部341は、管理者サーバ300から受信した、属性情報の要求情報に基づき、ユーザデータ記憶部310からユーザの属性情報を要求データ数分(n個)取得する。これにより、スケッチングデータに対応する元データが取得される。
[ステップS68]データ提供部341は、取得された元データを含む「sketch」のデータ(図7参照)を生成する。なお、例えば、元データのデータ量が過大な場合には、元データを取得するための、一時的に使用可能なURLが生成されて、元データの代わりにそのURLが「sketch」に記述されてもよい。また、データ提供部341は、生成された「sketch」のデータを署名エンジン343に通知し、データ管理者の署名データの生成を依頼する。
署名エンジン343は、図9のステップS47と同様の手順で、「sketch」のデータとデータ管理者の秘密鍵とに基づいてデータ管理者の署名データ(「signatureValue」、図7参照)を生成する。データ提供部341は、「sketch」のデータと、署名データとを含む「claim」のデータを生成して、ユーザ端末200に送信する。なお、送信されるデータは、データ管理者の秘密鍵を用いて暗号化されていてもよい。
[ステップS69]ユーザ端末200の元データ送信部232は、「claim」のデータを受信する。受信データが暗号化されていた場合、データ管理者の公開鍵を用いて受信データを復号し、「claim」のデータを取得する。元データ送信部232は、「claim」の内容に基づいて、提供される情報の内容を示す情報をブラウザに表示する。ユーザは、この表示内容を確認することで、提供を同意した情報内容が正しく提供されるかを確認できる。
[ステップS70]ステップS69での表示情報には処理を続行するか否かを通知するためのボタンが含まれ、ユーザが情報の提供に同意し、処理を続行するためのボタンに対する選択操作が行われると、処理がステップS71に進められる。
[ステップS71]元データ送信部232は、「claim」のデータを署名エンジン233に通知して、ユーザの署名データの生成を依頼する。署名エンジン233は、図9のステップS48と同様の手順で、「claim」のデータとユーザの秘密鍵とに基づいて、ユーザの署名データ(「signature」、図7参照)を生成する。元データ送信部232は、「claim」のデータに生成日時などの所定のヘッダ情報を付加し、ユーザの署名データとともに事業者サーバ100に送信する。なお、送信されるデータは、ユーザの秘密鍵を用いて暗号化されていてもよい。
[ステップS72]事業者サーバ100の依頼処理部133は、ユーザ端末200からのデータを受信すると、署名データを用いて受信データを検証する。
まず、依頼処理部133は、ユーザのユーザIDを指定してユーザの公開鍵をリポジトリサーバ410に要求する。この要求に応じて、リポジトリサーバ410の鍵管理部412からユーザIDに対応する公開鍵が送信され、事業者サーバ100の依頼処理部133がこの公開鍵を受信する。
依頼処理部133は、ユーザ端末200からの受信データが暗号化されていた場合、ユーザの公開鍵を用いて受信データを復号する。依頼処理部133は、受信データからユーザの署名データを抽出し、ユーザの公開鍵を用いて復号する。依頼処理部133は、受信データ内の「claim」のデータのハッシュ値を算出し、算出されたハッシュ値と署名データを復号して得られたハッシュ値とを比較する。
これらのハッシュ値が一致した場合、「claim」のデータが改ざんされていないことが確認されるとともに、ユーザから元データの提供の同意が得られたことが確認される。すると、依頼処理部133は次に、管理者IDを指定してデータ管理者の公開鍵をリポジトリサーバ410に要求する。この要求に応じて、リポジトリサーバ410の鍵管理部412から管理者IDに対応する公開鍵が送信され、事業者サーバ100の依頼処理部133がこの公開鍵を受信する。
依頼処理部133は、「claim」のデータからデータ管理者の署名データを抽出し、データ管理者の公開鍵を用いて復号する。依頼処理部133は、受信データ内の「sketch」のデータのハッシュ値を算出し、算出されたハッシュ値と署名データを復号して得られたハッシュ値とを比較する。これらのハッシュ値が一致した場合、「sketch」のデータが改ざんされていないことが確認される。すると、処理がステップS73に進められる。
なお、ユーザの署名またはデータ管理者の署名のいずれかを用いた検証でデータの改ざんが認められた場合、ユーザ端末200に対して情報提供のエラーが通知され、処理は終了する。
[ステップS73]依頼処理部133は、スケッチングデータ記憶部111から、ユーザIDに対応付けられた、元データに基づくハッシュ値を取得する。また、依頼処理部133は、受信した「claim」に含まれる元データのハッシュ値を算出する。依頼処理部133は、これらのハッシュ値を比較することで、受信した元データが、マッチングの際に使用された同じユーザのスケッチングデータの元データであるかを検証する。ハッシュ値が一致した場合、受信した元データの正当性が確認され、処理がステップS74に進められる。一方、ハッシュ値が一致しなかった場合、ユーザ端末200に対して情報提供のエラーが通知され、処理は終了する。
[ステップS74]依頼処理部133は、受信した元データをマッチング部132に通知して、ステップS61でのマッチングの正当性を確認するための再マッチングの実行を依頼する。マッチング部132は、ステップS61で同じユーザのスケッチングデータとの間でマッチングを行った参照データを、参照データ記憶部120から取得し、取得した参照データと、依頼処理部133から通知された元データとのマッチング処理を実行する。
例えば、これらの類似度が所定の閾値以上である場合、ステップS61でのマッチングの結果が正しかったと判定され、処理がステップS75に進められる。一方、図示しないが、類似度が上記の閾値未満であり、ステップS61でのマッチングの結果が正しくなかったと判定された場合には、ユーザの申込が受領されなかったことがユーザ端末200に通知される。
[ステップS75]依頼処理部133は、ユーザに対するボランティアの依頼が確定し、依頼処理が完了したことをユーザ端末200に通知する。ユーザ端末200の元データ送信部232は、通知された内容をブラウザに表示する。これにより、依頼処理が完了する。
なお、以上の第2の実施の形態では、マッチングサービスの例として、ある地域を案内するボランティアとして適切なユーザをマッチングにより特定するサービスを示したが、マッチングサービスとしてはこの例に限定されるものではない。例えば、適切な職歴を持つユーザに派遣社員としての業務を紹介または依頼するためのサービスを適用することができる。この場合、例えば、各ユーザの職歴やスキルの情報が管理者サーバ300に収集される。事業者サーバ100は、求める派遣社員の職歴やスキルの情報を参照データとして保持し、各ユーザの情報と参照データとのマッチングを行うことで、派遣社員として適切なユーザを特定し、そのユーザに対して派遣社員としての業務を紹介または依頼する。
また、例えば、自動車を運転する運転者の中から安全な運転を行っている運転者を特定するサービスを適用することもできる。この場合、例えば、車載器によって検出された各運転者の運転データ(スピードや経路の履歴など)が管理者サーバ300に収集される。事業者サーバ100は、参照データとして模範運転者の運転データを保持し、各運転者の運転データと模範運転者の運転データとの類似度を算出する。そして、事業者サーバ100は、模範運転者との間で運転データの類似度が高い運転者を、安全な運転を行っている運転者として特定する。
なお、上記の各実施の形態に示した装置(例えば、情報処理装置1、端末装置2、事業者サーバ100、ユーザ端末200,200a,200b,・・・、管理者サーバ300)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。