JP5772558B2 - 情報処理方法、プログラム及び装置 - Google Patents

情報処理方法、プログラム及び装置 Download PDF

Info

Publication number
JP5772558B2
JP5772558B2 JP2011271268A JP2011271268A JP5772558B2 JP 5772558 B2 JP5772558 B2 JP 5772558B2 JP 2011271268 A JP2011271268 A JP 2011271268A JP 2011271268 A JP2011271268 A JP 2011271268A JP 5772558 B2 JP5772558 B2 JP 5772558B2
Authority
JP
Japan
Prior art keywords
value
vector
identifier
hash
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011271268A
Other languages
English (en)
Other versions
JP2013122707A (ja
Inventor
裕司 山岡
裕司 山岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011271268A priority Critical patent/JP5772558B2/ja
Publication of JP2013122707A publication Critical patent/JP2013122707A/ja
Application granted granted Critical
Publication of JP5772558B2 publication Critical patent/JP5772558B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本技術は、相関ルールの抽出技術に関する。
例えば異なる組織が保有するデータから、相関ルールを抽出したい場合がある。例えば、図1Aに示すように、A社が、楽曲売上表を管理しているものとする。楽曲売上表では、レコードのIDとして電話番号を用いており、当該電話番号の顧客が国家という楽曲を購入したか否かを表す属性が含まれる。一方、図1Bに示すように、B社が、書籍売上表を管理しているものとする。書籍売上表では、A社と同様にレコードのIDとして電話番号を用いており、当該電話番号の顧客が国語辞典を購入したか否かを表す属性が含まれる。
ここでは、あるレコードがある属性値についてある条件を満たしている時、そのレコードは、その属性を生起しているということにする。図1Aの楽曲売上表における生起条件は、黒丸印を有していることとする。例えば、電話番号「1234」のレコードは、図1Aにおいて「国歌」を生起しているが、図1Bにおいて「国語辞典」は生起していない。また、複数の属性を同時に生起している場合には、共起していると呼ぶことにする。例えば、図1A及び図1Bの表からすると、「国歌」と「国語辞典」とを共起しているレコードは、電話番号「1236」及び「2349」の2レコードである。
そして、異なるデータ保有者が有する表の属性について、共起数、すなわち共起しているレコードの数を計数したいことがある。共起数と、共有レコード数(すなわち共有しているレコードIDの数)とが分かれば、それぞれのデータ保有者が相関ルールを生成することができる。相関ルールとは、生起している事象間の関係のことである。例えば、図1A及び図1Bでは、「国歌」と「国語辞典」の共起数は「2」であり、共有レコード数は5(「1234」「1235」「1236」「1356」「2349」)である。ここで、B社の書籍売上表のレコード数は6であり、「国語辞典」の生起数は3であるため、「国語辞典」を購入している人は高割合(2/(3×5/6)=80%)で「国歌」を購入しているという相関ルールをB社が推測できる。
共起数は、両方の表を突き合わせれば簡単に算出できるが、異なる組織間では詳しいデータを教えない場合がある。これは、企業秘密、法律や契約による制限、プライバシー保護といった要因による。
データ保有者が互いにできるだけ情報を教え合わずに共起数を知る従来方法として、秘匿内積計算プロトコルがある。しかし、秘匿内積計算プロトコルは、対応するレコードの数と順序が揃っていることが前提になっている。
なお、対応するレコードの数と順序を揃える方法として、共有レコードID集合を教え合うプロトコルを採用することが考えられる。共有レコードID集合がわかれば、数が揃い、レコードIDについて辞書順等でソートすれば順序も揃う。しかし、共有レコードIDも教えたくないデータ保有者がいる場合にはこの方法は使えない。また、この方法は、あるデータ保有者が偽ることで、他のデータ保有者の共有レコードID以外のレコードIDの存在/不在を知ることができてしまうという問題もある。
特開2009−272995号公報 特開2001−256395号公報
Jaideep Vaidya and Chris Clifton. Privacy Preserving Association Rule Mining in Vertically Partitioned Data. Proceedings of the eighth ACM SIGKDD, pp. 639-644, 2002.
従って、本技術の目的は、一側面においては、データ保有者間で可能な限りデータを明かさずに特定の2属性について共起数を得るための技術を提供することである。
本技術に係る情報処理方法は、第1のユーザのコンピュータにより実行される情報処理方法であって、(A)第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各識別子について、第2のユーザと共通して使用されるハッシュ関数を用いて、予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて識別子を第2のデータ格納部に格納する処理と、(B)予め定められた個数のハッシュ値の各々について、第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に識別子が対応付けられていない場合には0を特定することで、予め定められた個数の要素値を有するベクトルを生成する生成処理と、(C)ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、(D)他の装置から暗号化されたベクトルの内積値を受信し、ベクトルの内積値を復号化する処理とを含む。
データ保有者間で可能な限りデータを明かさずに特定の2属性について共起数を得ることができるようになる。
図1Aは、A社のデータ例を示す図である。 図1Bは、B社のデータ例を示す図である。 図2は、第1の実施の形態におけるシステムの概要を示す図である。 図3は、第1の実施の形態におけるコンピュータA及びBの構成を示す図である。 図4は、コンピュータCの構成を示す図である。 図5は、第1の実施の形態におけるメインの処理フローを示す図である。 図6は、n次元ベクトル生成処理の処理フローを示す図である。 図7は、ハッシュ表の最初の状態を示す図である。 図8は、A社のハッシュ表の一例を示す図である。 図9は、重複IDを削除した後におけるA社のハッシュ表の一例を示す図である。 図10は、B社のハッシュ表の一例を示す図である。 図11は、重複IDを削除した後におけるB社のハッシュ表の一例を示す図である。 図12は、n次元ベクトル生成処理の処理フローを示す図である。 図13は、A社のベクトルの一例を表す図である。 図14は、B社のベクトルの一例を表す図である。 図15は、第1の実施の形態における内積取得処理の処理フローを示す図である。 図16は、第2の実施の形態におけるコンピュータA及びBの構成を示す図である。 図17は、第2の実施の形態における内積取得処理の処理フローを示す図である。 図18は、コンピュータの機能ブロック図である。
[実施の形態1]
本実施の形態に係るシステムの概要を図2に示す。例えば、インターネットなどのネットワーク1には、A社が保有するコンピュータAと、B社が保有するコンピュータBと、A社及びB社以外の第三者であるC社が保有するコンピュータCとが接続されている。本実施の形態では、A社及びB社の2社が自己が有するデータに含まれるある属性と相手方が有するデータに含まれる他の属性との共起数を得ることを目的とする。コンピュータCは、例えばSemi-Trusted Third Party(他者とは結託しないが、不正を働くかも知れない第三者)として、コンピュータA及びBと協働するものとする。なお、Semi-Trusted Third Partyについては、例えばM.K.Franklin, M.K.Reiter, “Fair Exchange with a Semi-Trusted Third Party”, Proc. 4th ACM Conf. on Computer and Communication Security, April 1997.を参照のこと。
コンピュータA及びBは、例えば図3に示すような構成を有する。例えばコンピュータAは、第1データ格納部31と、設定データ格納部32と、識別子処理部33と、第2データ格納部34と、ベクトル生成部35と、内積取得処理部36とを有する。
第1データ格納部31は、例えば図1A又は図1Bのような、生成すべき相関ルールの元となるデータを格納する。設定データ格納部32は、例えば、使用するレコード数n、使用するハッシュ関数の種別、暗号処理に用いるデータ(例えば、共有する秘密鍵及び公開鍵)、コンピュータCのアドレスなどを格納する。
識別子処理部33は、第1データ格納部31に格納されているデータに対して、設定データ格納部32に格納されたデータに従って処理を行い、第2データ格納部34に格納する。ベクトル生成部35は、設定データ格納部32に格納されているデータに従って、第2データ格納部34に格納されているデータ及び第1データ格納部31に格納されているデータを用いて処理を行ってn次元のベクトルを生成し、第2データ格納部34に格納する。内積取得部36は、暗号処理部361を有しており、コンピュータCと連携して処理を行う。その際、内積取得部36の暗号処理部361は、第2データ格納部34に格納されているベクトルの各要素値を暗号化し、コンピュータCから暗号化された演算結果を受信すると、演算結果を復号化して、第2データ格納部34に格納する。
コンピュータCは、例えば図4に示すような構成を有する。コンピュータCは、データ受信部51と、データ送信部52と、秘匿計算部53とを有する。データ受信部51は、コンピュータA及びBから、暗号化されたベクトルの要素値を受信すると、秘匿計算部53に出力する。秘匿計算部53は、暗号化されたベクトルの要素値を受け取ると、暗号化されたベクトルの内積値が得られるように暗号化したまま所定の演算を実施し、演算結果をデータ送信部52に出力する。データ送信部52は、コンピュータA及びBに対して、演算結果を送信する。
次に、図5乃至図15を用いて、図2に示したシステムの処理内容について説明する。まず、事前に、コンピュータA及びBが、空間サイズnと、使用するハッシュ関数の種別、共有する秘密鍵及び公開鍵などを、設定データ格納部32に格納する初期設定処理を実施する(図5:ステップS1)。
そして、識別子処理部33は、設定データ格納部32に格納されている空間サイズnに従って、第1データ格納部31に格納されているレコード群において最大nレコードを選択する(ステップS3)。第1データ格納部31に格納されているレコード数がn以下であれば、全レコードを選択しても良い。レコード数がnより多い場合には、データ保有者が予め指定した方針に沿って選択する。例えば、最初のnレコードを選択したり、ランダムにnレコード選択する。
その後、識別子処理部33及びベクトル生成部35は、n次元ベクトル生成処理を実施する(ステップS5)。このn次元ベクトル生成処理については、図6乃至図14を用いて説明する。
識別子処理部33は、ステップS3で選択したレコードのうち、未処理のレコードを1つ特定する(図6:ステップS11)。そして、識別子処理部33は、特定されたレコードのIDについて、空間サイズnのハッシュ値を算出する(ステップS13)。例えば、設定データ格納部32に格納されているハッシュ関数の種別に従ってハッシュ関数を特定し、当該ハッシュ関数にレコードのIDを入力し、ハッシュ関数の出力を、空間サイズnで除した結果を採用する。
その後、識別子処理部33は、算出されたハッシュ値とレコードのIDとを対応付けて、第2データ格納部34におけるハッシュ表のエントリとして格納する(ステップS15)。
例えば、n=8であり、図1Aにおける「1234」をSHA−256に入力して下位3ビット(n=8=23のため)を採用すると、「4」が得られる。従って、図7に示すようなハッシュ表が最初に得られる。図7に示すように、ハッシュ表には、ハッシュ値とレコードIDの集合とが対応付けられている。なお、ハッシュ値はハッシュ関数の出力をn個に制限しているので、異なるレコードIDを入力しても同じハッシュ値になってしまう場合がある。
そして、識別子処理部33は、ステップS3で選択したレコードのうち未処理のレコードが存在しているか判断する(ステップS17)。未処理のレコードが存在する場合には、処理はステップS11に戻る。一方、未処理のレコードが存在しない場合には、識別子処理部33は、複数のIDが対応付けられたハッシュ値がハッシュ表内に存在しているか確認する(ステップS19)。例えば、図1Aのレコードを処理すると、図8に示すようなハッシュ表が得られる。上でも述べたように、ハッシュ関数の出力をn個に制限しているので、異なるレコードIDを入力しても同じハッシュ値になってしまう場合がある。図8の例では、ハッシュ値「1」及び「4」については複数のIDが対応付けられている。
そして、複数のIDが対応付けられているハッシュ値が存在する場合には、識別子処理部33は、複数のIDのうち1つを選択し、他を削除する(ステップS21)。例えば、ランダムに1つを選択する。図8の例では、ハッシュ値「1」については、「1235」及び「2222」のうち「1235」が選択され、ハッシュ値「4」については、「1234」「1236」及び「2349」のうち、「2349」が選択されたものとする。そうすると、ハッシュ表は図9のような状態になる。このようにすれば、ハッシュ値からレコードのIDを得るための写像fが得られたことになる。すなわち、f(ハッシュ値)=レコードのIDと表される。写像fについては、このようなハッシュ表ではなく他の形態にて生成するようにしても良い。
なお、図1Bのレコードを処理すると、最初は図10に示すようなハッシュ表が得られる。図10の例では、ハッシュ値「4」について複数のIDが対応付けられている。従って、「1234」「1236」及び「2349」のうち「1236」を選択すると、図11に示すようなハッシュ表が得られる。なお、図9においてはハッシュ値「4」についてはID「2349」が対応付けられており、図11においてはID「1236」が対応付けられている。これは、空間サイズnにハッシュ値を制限しているのでやむを得ないが、nが十分大きなサイズであれば、同じハッシュ値に異なるIDが対応付けられることは避けられる。
処理は端子Aを介して図12の処理に移行して、ベクトル生成部35は、空間サイズnのn次元ベクトルv(i)を初期化する(ステップS23)。すなわち、全ての要素値を0に設定する。また、ベクトル生成部35は、カウンタiを0に設定する(ステップS25)。そして、ベクトル生成部35は、第2データ格納部34内のハッシュ表においてハッシュ値iに対応するレコードIDが登録されているか判断する(ステップS27)。ハッシュ値iに対応するレコードIDが登録されている場合には、ベクトル生成部35は、ハッシュ値iに対応するレコードIDのレコードに含まれる特定の属性の属性値に応じて0又は1を、ベクトルv(i)に設定する(ステップS29)。そして処理はステップS33に移行する。
例えば図9に示すようなハッシュ表の場合、ハッシュ値i=0に対してレコードID「1257」が対応付けられているので、第1データ格納部31におけるレコード(図1A)のうち、レコードID「1257」のレコードにおける属性「国歌」に属性値「黒丸」が登録されているか否かを確認する。図1Aの例では「黒丸」が登録されていないので、「0」が特定され、v(0)に設定される。
一方、ハッシュ値iに対応するレコードIDが登録されていない場合には、ベクトル生成部35は、v(i)=0を設定する(ステップS31)。その後、処理はステップS33に移行する。
例えば図9に示すようなハッシュ表の場合、ハッシュ値i=3に対してレコードIDが対応付けられていない。従って、v(3)=0と設定する。
そして、ベクトル生成部35は、カウンタiが(n−1)以上となったか判断する(ステップS33)。iが(n−1)未満であれば、ベクトル生成部35は、iを1インクリメントし(ステップS35)、処理はステップS27に移行する。一方、iが(n−1)以上となった場合には、ベクトル生成部35は、生成されたベクトルvを第2データ格納部34に格納する(ステップS37)。そして、処理は呼び出し元の処理に戻る。
このようにすれば、ユーザIDは秘匿され、さらに空間サイズnに揃えられ、ハッシュ値に係るレコードにおいて特定の属性値が生起しているか否かを表しているベクトルvが得られるようになる。
このような処理を実施すると、A社のコンピュータAは、図13に示すようなベクトルvaを生成する。一方、B社のコンピュータBは、図14に示すようなベクトルvbを生成する。
図5の処理の説明に戻って、内積取得処理部36等は、内積取得処理を実施する(ステップS7)。この内積取得処理については、図15を用いて説明する。
コンピュータAの内積取得処理部36の暗号処理部361は、設定データ格納部32に格納されている共有鍵を用いて、第2データ格納部34に格納されているベクトルvの各要素値を、所定の完全準同型暗号方式に従って暗号化する(ステップS41)。
但し、暗号方式のアルゴリズムは、任意回の加算と1回以上の乗算についての準同型性があれば何でも良く、たとえばBGN方式(D. Boneh, E. Goh, and K. Nissim. Evaluating 2-DNF Formulas on Ciphertexts. In Proceedings of Theory of Cryptography Conference 2005, Lecture Notes in Computer Science, Vol. 3378, pp. 325-341, 2005.)を使っても良い。
例えば、暗号化処理をE(r,m)(rは乱数、mは平文)と表し、復号化処理をD(c)(cは暗号文、D(E(r,m))=m)と表す。また、E’(m)を、D(E’(m))=mを満たす性質とする。つまり、E(r,m)はE’(m)とも書ける。準同型性により、公開鍵を知っていれば(秘密鍵を知らなくても)、E’(m1)とE’(m2)から、E’(m1*m2)及びE’(m1+m2)を算出できるものとする。
本実施の形態では、ステップS41で、E(ra1,va(0))、E(ra2,va(1))、....、E(ran,va(n−1))を算出する。
そして、内積取得処理部36は、暗号化された、ベクトルの各要素値を、コンピュータCに送信する(ステップS43)。コンピュータCのデータ受信部51は、コンピュータAから、暗号化された、ベクトルの各要素値を受信し、秘匿計算部53に出力する(ステップS45)。
なお、上でも述べたように、コンピュータCは、Semi-Trusted Third Partyとして機能するので、その処理のために用いられるデータについては、コンピュータAとコンピュータCとの間でやりとりされるものとする。但し、この部分は本実施の形態の主旨ではないので、説明は省略する。
一方、コンピュータBの内積取得処理部36の暗号処理部361は、設定データ格納部32に格納されている共有鍵を用いて、第2データ格納部34に格納されているベクトルvの各要素値を、所定の完全準同型暗号方式に従って暗号化する(ステップS47)。
本実施の形態では、ステップS47で、E(rb1,vb(0))、E(rb2,vb(1))、....、E(rbn,vb(n−1))を算出する。
そして、内積取得処理部36は、暗号化された、ベクトルの各要素値を、コンピュータCに送信する(ステップS49)。コンピュータCのデータ受信部51は、コンピュータBから、暗号化された、ベクトルの各要素値を受信し、秘匿計算部53に出力する(ステップS51)。
なお、上でも述べたように、コンピュータCは、Semi-Trusted Third Partyとして機能するので、その処理のために用いられるデータについては、コンピュータBとコンピュータCとの間でやりとりされるものとする。但し、この部分は本実施の形態の主旨ではないので、説明は省略する。
コンピュータCの秘匿計算部53は、ベクトルvaとベクトルvbの内積値が得られるように、演算を実施する(ステップS53)。すなわち、E’(va(0)*vb(0)+va(1)*vb(1)+....+va(n−1)*vb(n−1))が得られるように演算を実施する。これを実現するための演算は、採用した完全準同型暗号方式によって異なる。秘匿計算部53は、暗号化された、ベクトルの内積値をデータ送信部52に出力する。
データ送信部52は、演算結果(すなわち暗号化された、ベクトルの内積値)を、コンピュータA及びコンピュータBに送信する(ステップS55)。コンピュータAの内積取得処理部36は、コンピュータCから演算結果を受信すると(ステップS57)、暗号処理部361は、設定データ格納部32に格納されている共有鍵を用いて完全準同型暗号方式に従って演算結果を復号して、ベクトルの内積値、すなわち共起数を例えば第2データ格納部34に格納する(ステップS61)。
一方、コンピュータBの内積取得処理部36は、コンピュータCから演算結果を受信すると(ステップS59)、暗号処理部361は、設定データ格納部32に格納されている共有鍵を用いて完全準同型暗号方式に従って演算結果を復号して、ベクトルの内積値、すなわち共起数を第2データ格納部34に格納する(ステップS63)。
このようにすれば、コンピュータAが保持するデータにおける特定の属性の属性値と、コンピュータBが保持するデータにおける特定の属性の属性値との共起数を、互いが自己のデータを他方に明かすことなく得ることができるようになる。共起数が得られれば、上でも述べたように、「国語辞典」を購入している人は高割合で「国歌」を購入しているというような相関ルールなどを推定できるようになる。
なお、図13及び図14で示したベクトルva及びベクトルvbの内積値は「1」となってしまっている。実際には、上で述べたように「2」であるから、得られた値は共起数の概数となるが、これは上で述べたようにnが小さいため1つのハッシュ値に複数のIDが対応付けられてしまったために生ずる。nが大きな値になればこの誤差は十分小さくなる。
[実施の形態2]
第1の実施の形態では、コンピュータCが存在する例を示したが、コンピュータCが存在しなくても良い。この場合、コンピュータAとコンピュータBとでデータを交換して共起数を得ることになる。
具体的には、コンピュータA及びコンピュータBは、図16に示すような構成を有する。なお、図3と同じ構成要素については、同じ符号が付されている。具体的には、例えばコンピュータAは、内積取得処理部36の代わりに、秘匿データ交換処理部38を有する。秘匿データ交換処理部38は、暗号処理部381を有し、コンピュータBと暗号化されたデータを交換することで、ベクトルの内積値、即ち共起数を算出する。
処理は、図5における内積取得処理だけが、第1の実施の形態と異なる。この内積取得処理の具体的な処理を図17を用いて説明する。
コンピュータAにおける秘匿データ交換処理部38の暗号処理部381は、設定データ格納部32に格納されている自己の公開鍵を用いて準同型暗号方式に従って、ベクトルの各要素値(以下区別するため第1要素値と呼ぶ)を暗号化する(ステップS71)。va(0)、va(1)、...va(n−1)を所定のアルゴリズムで暗号化して、E(va(0))、E(va(1))、...E(va(n−1))を得る。
そして、コンピュータAの秘匿データ交換処理部38は、暗号化された各第1要素値を、コンピュータBに送信する(ステップS73)。コンピュータBの秘匿データ交換処理部38は、コンピュータAから、暗号化された各第1要素値を受信し、例えばメインメモリなどの記憶装置に格納する(ステップS74)。
また、コンピュータBにおける秘匿データ交換処理部38の暗号処理部381は、設定データ格納部32に格納されている自己の公開鍵を用いて準同型暗号方式に従って、ベクトルの各要素値(以下区別するため第2要素値と呼ぶ)を暗号化する(ステップS75)。vb(0)、vb(1)、...vb(n−1)を所定のアルゴリズムで暗号化して、E(vb(0))、E(vb(1))、...E(vb(n−1))を得る。
そして、コンピュータBの秘匿データ交換処理部38は、暗号化された各第2要素値を、コンピュータAに送信する(ステップS77)。コンピュータAの秘匿データ交換処理部38は、コンピュータBから、暗号化された各第2要素値を受信し、例えばメインメモリなどの記憶装置に格納する(ステップS79)。
その後、コンピュータBにおける秘匿データ交換処理部38の暗号処理部381は、暗号化された、ベクトルの内積値を得られるように所定の演算を、暗号化された各第2要素値を用いて実施することで、第1の演算結果(すなわち、暗号化された、ベクトルの内積値)を生成する(ステップS81)。
例えば、準同型暗号方式としてPaillier暗号を使用する場合には、以下の演算を実施する。Mは、他方のユーザの公開鍵に含まれる。
e=(E(va(0))vb(0)×(E(va(1))vb(1)×・・・×(E(va(n−1))vb(n-1)) mod M
=E(va(0)×vb(0)+va(1)×vb(1)+・・・+va(n−1)×vb(n−1))
そして、コンピュータBの秘匿データ交換処理部38は、第1の演算結果をコンピュータAに返信する(ステップS85)。これに対して、コンピュータAの秘匿データ交換処理部38は、第1の演算結果を、コンピュータBから受信し、メインメモリなどの記憶装置に格納する(ステップS87)。
一方、コンピュータAにおける秘匿データ交換処理部38の暗号処理部381は、暗号化された、ベクトルの内積値を得られるように所定の演算を、暗号化された各第1要素値を用いて実施することで、第2の演算結果(すなわち、暗号化された、ベクトルの内積値)を生成する(ステップS83)。コンピュータBで行われたものと同様の処理を実施する。
具体的には、以下のような演算を実施する。
e=(E(vb(0))va(0)×(E(vb(1))va(1)×・・・×(E(vb(n−1))va(n-1)) mod M
=E(vb(0)×va(0)+vb(1)×va(1)+・・・+vb(n−1)×va(n−1))
そして、コンピュータAの秘匿データ交換処理部38は、第2の演算結果をコンピュータBに返信する(ステップS89)。これに対して、コンピュータBの秘匿データ交換処理部38は、第2の演算結果を、コンピュータAから受信し、メインメモリなどの記憶装置に格納する(ステップS91)。
最終的に、コンピュータAにおける秘匿データ交換処理部38の暗号処理部381は、第1の演算結果を自己の秘密鍵を用いて復号することで、ベクトルの内積値、すなわち共起数を取得する(ステップS93)。同様に、コンピュータBにおける秘匿データ交換処理部38の暗号処理部381は、第2の演算結果を自己の秘密鍵を用いて復号することで、ベクトルの内積値、すなわち共起数を取得する(ステップS95)。
以上のようにすれば、第1の実施の形態と同様の結果を得ることができるようになる。
以上、本技術の実施の形態を述べたが、本技術はこれに限定されるものではない。例えば、上で述べた機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成とは一致しない場合もある。また、処理フローについても、処理結果が変わらない限り、処理ステップの処理順番を入れ替えたり、並列実行するようにしても良い。
また、暗号化方式については様々な方式が採用できるため、上で述べたようなベクトルの内積を算出できるような方式であれば、どのような方式であっても良い。
また、コンピュータA乃至Cの各々については、複数台でその機能を果たすように構成するようにしても良い。
なお、上で述べたコンピュータA乃至Cは、コンピュータ装置であって、図18に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態に係る情報処理方法は、第1のユーザのコンピュータにより実行される情報処理方法であって、(A)第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各識別子について、第2のユーザと共通して使用されるハッシュ関数を用いて、予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて識別子を第2のデータ格納部に格納するステップと、(B)予め定められた個数のハッシュ値の各々について、第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に識別子が対応付けられていない場合には0を特定することで、予め定められた個数の要素値を有するベクトルを生成する生成ステップと、(C)ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信するステップと、(D)他の装置から暗号化されたベクトルの内積値を受信し、ベクトルの内積値を復号化するステップとを含む。
このようにすることで、共起数を表す、ベクトルの内積値を、他のユーザに対して、識別子を含むデータを明かすことなく得ることができるようになる。この共起数によって、相関ルールを生成することもできる。なお、所定の方式は、例えば準同型暗号方式である。
なお、上で述べた他の装置が、第2のユーザ以外の第三者の装置である場合もある。この場合、上で述べた他の装置が、第1のユーザのコンピュータ及び第2のユーザのコンピュータから、暗号化されたベクトルの各要素値を受信し、暗号化されたままでベクトルの内積値を算出し、第1のユーザのコンピュータ及び第2のユーザのコンピュータへ、暗号化されたベクトルの内積値を送信するようにしても良い。第三者を介することで不正を防止することも可能となる。
また、上で述べた他の装置が、第2のユーザのコンピュータである場合もある。この場合、(D)第2のユーザのコンピュータから、暗号化されたベクトルの各要素値を受信するステップと、(E)生成処理において生成されたベクトルの要素値と、暗号化されたベクトルの各要素値から、暗号化されたベクトルの内積値を算出するステップと、(F)暗号化されたベクトル値の内積値を、上で述べた他の装置に送信するステップとをさらに含むようにしても良い。第三者が存在しなくても、他のユーザに対してベクトルそのものを明かすこともない。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1のユーザのコンピュータにより実行される情報処理方法であって、
第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、
前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、
前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、
前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、
を含む情報処理方法。
(付記2)
前記他の装置が、前記第2のユーザ以外の第三者の装置であり、
前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信し、暗号化されたままで前記ベクトルの内積値を算出し、
前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータへ、暗号化された前記ベクトルの内積値を送信する
付記1記載の情報処理方法。
(付記3)
前記他の装置が、前記第2のユーザのコンピュータであり、
前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信する処理と、
前記生成処理において生成された前記ベクトルの要素値と、暗号化された前記ベクトルの各要素値から、暗号化された前記ベクトルの内積値を算出する処理と、
暗号化された前記ベクトル値の内積値を、前記他の装置に送信する処理と、
をさらに含む付記1記載の情報処理方法。
(付記4)
前記所定の方式が、準同型暗号方式である
付記1乃至3のいずれか1つ記載の情報処理方法。
(付記5)
第1のユーザのコンピュータに、
第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、
前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、
前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、
前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、
を、実行させるためのプログラム。
(付記6)
他のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記他のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する識別子処理部と、
前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成するベクトル生成部と、
前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信し、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理部と、
を有する情報処理装置。
31 第1データ格納部
32 設定データ格納部
33 識別子処理部
34 第2データ格納部
35 ベクトル生成部
36 内積取得処理部
361 暗号処理部
38 秘匿データ交換処理部
381 暗号処理部
51 データ受信部
52 データ送信部
53 秘匿計算部

Claims (5)

  1. 第1のユーザのコンピュータにより実行される情報処理方法であって、
    第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、
    前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、
    前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、
    前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、
    を含む情報処理方法。
  2. 前記他の装置が、前記第2のユーザ以外の第三者の装置であり、
    前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信し、暗号化されたままで前記ベクトルの内積値を算出し、
    前記他の装置が、前記第1のユーザのコンピュータ及び前記第2のユーザのコンピュータへ、暗号化された前記ベクトルの内積値を送信する
    請求項1記載の情報処理方法。
  3. 前記他の装置が、前記第2のユーザのコンピュータであり、
    前記第2のユーザのコンピュータから、暗号化された前記ベクトルの各要素値を受信する処理と、
    前記生成処理において生成された前記ベクトルの要素値と、暗号化された前記ベクトルの各要素値から、暗号化された前記ベクトルの内積値を算出する処理と、
    暗号化された前記ベクトル内積値を、前記他の装置に送信する処理と、
    をさらに含む請求項1記載の情報処理方法。
  4. 第1のユーザのコンピュータに、
    第2のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記第2のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する処理と、
    前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成する生成処理と、
    前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信する処理と、
    前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理と、
    を、実行させるためのプログラム。
  5. 他のユーザと共通して使用される識別子及び属性値を各々有する複数のデータブロックを格納する第1のデータ格納部から、予め定められた個数以下のデータブロックに含まれる各識別子を読み出し、読み出された各前記識別子について、前記他のユーザと共通して使用されるハッシュ関数を用いて、前記予め定められた個数に制限させたハッシュ値のいずれかを算出し、算出されたハッシュ値に対応付けて前記識別子を第2のデータ格納部に格納する識別子処理部と、
    前記予め定められた個数のハッシュ値の各々について、前記第2のデータ格納部において当該ハッシュ値に1又は複数の識別子が対応付けられている場合にはいずれか1つの識別子を含むデータブロックに含まれる属性値に応じて0又は1を特定し、当該ハッシュ値に前記識別子が対応付けられていない場合には0を特定することで、前記予め定められた個数の要素値を有するベクトルを生成するベクトル生成部と、
    前記ベクトルの各要素値を所定の方式で暗号化し、他の装置に送信し、前記他の装置から暗号化された前記ベクトルの内積値を受信し、前記ベクトルの内積値を復号化する処理部と、
    を有する情報処理装置。
JP2011271268A 2011-12-12 2011-12-12 情報処理方法、プログラム及び装置 Expired - Fee Related JP5772558B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011271268A JP5772558B2 (ja) 2011-12-12 2011-12-12 情報処理方法、プログラム及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011271268A JP5772558B2 (ja) 2011-12-12 2011-12-12 情報処理方法、プログラム及び装置

Publications (2)

Publication Number Publication Date
JP2013122707A JP2013122707A (ja) 2013-06-20
JP5772558B2 true JP5772558B2 (ja) 2015-09-02

Family

ID=48774628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011271268A Expired - Fee Related JP5772558B2 (ja) 2011-12-12 2011-12-12 情報処理方法、プログラム及び装置

Country Status (1)

Country Link
JP (1) JP5772558B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6673367B2 (ja) * 2016-01-07 2020-03-25 ソニー株式会社 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
JP7073295B2 (ja) * 2019-03-27 2022-05-23 Kddi株式会社 秘匿計算装置、秘匿計算方法及び秘匿計算プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001256395A (ja) * 2000-03-10 2001-09-21 Aip:Kk 情報送受信システム及び情報送受信方法
JP5297688B2 (ja) * 2008-05-09 2013-09-25 株式会社日立製作所 ベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システム
JP5574402B2 (ja) * 2009-01-14 2014-08-20 日本電気株式会社 分散型秘匿化データ統合装置、分散型秘匿化データ統合方法および分散型秘匿化データ統合用プログラム

Also Published As

Publication number Publication date
JP2013122707A (ja) 2013-06-20

Similar Documents

Publication Publication Date Title
WO2020034755A1 (zh) 多方安全计算方法及装置、电子设备
WO2020034751A1 (zh) 多方安全计算方法及装置、电子设备
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
Samanthula et al. A secure data sharing and query processing framework via federation of cloud computing
CN110235409A (zh) 使用同态加密被保护的rsa签名或解密的方法
JP6599066B1 (ja) 登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラム
JP2005135131A (ja) 個人情報管理システム、情報処理システム、個人情報管理方法、プログラム、及び記録媒体
Kolesnikov et al. On the limits of privacy provided by order-preserving encryption
CN105339995B (zh) 解密装置、解密能力提供装置、其方法、以及记录介质
WO2022137668A1 (ja) データファイル暗号化送受信システム及びデータファイル暗号化送受信方法
Kumar et al. A review on hybrid encryption in cloud computing
JP4869824B2 (ja) 受信者装置及び送信者装置及び暗号通信システム及びプログラム
Selvanayagam et al. Secure file storage on cloud using cryptography
CN105959279A (zh) 一种基于加密处理的计算机信息传输系统及方法
CN113343255B (zh) 一种基于隐私保护的数据交互方法
Krishnamoorthy et al. Implementation and management of cloud security for industry 4. O-data using hybrid elliptical curve cryptography
JP5772558B2 (ja) 情報処理方法、プログラム及び装置
Sunday et al. An efficient data protection for cloud storage through encryption
CN115473707A (zh) 一种隐私交集求和的方法和装置
Verma et al. Simulation-Based Comparative Analysis Of Symmetric Algorithms.
US11451518B2 (en) Communication device, server device, concealed communication system, methods for the same, and program
Abdulhamid et al. Development of blowfish encryption scheme for secure data storage in public and commercial cloud computing environment
Rijmenants Is one-time pad history
Dubey et al. Encryption and Decryption of Data by Genetic Algorithm
Montañez New security definitions, constructions and applications of proxy re-encryption

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150331

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150515

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150615

R150 Certificate of patent or registration of utility model

Ref document number: 5772558

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees