JP2016027391A - 秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体 - Google Patents

秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体 Download PDF

Info

Publication number
JP2016027391A
JP2016027391A JP2015126166A JP2015126166A JP2016027391A JP 2016027391 A JP2016027391 A JP 2016027391A JP 2015126166 A JP2015126166 A JP 2015126166A JP 2015126166 A JP2015126166 A JP 2015126166A JP 2016027391 A JP2016027391 A JP 2016027391A
Authority
JP
Japan
Prior art keywords
data
encrypted
vector
string
divided data
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.)
Pending
Application number
JP2015126166A
Other languages
English (en)
Inventor
陽子 上土井
Yoko Jodoi
陽子 上土井
真一 若林
Shinichi Wakabayashi
真一 若林
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.)
Hiroshima City University
Original Assignee
Hiroshima City University
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 Hiroshima City University filed Critical Hiroshima City University
Priority to JP2015126166A priority Critical patent/JP2016027391A/ja
Publication of JP2016027391A publication Critical patent/JP2016027391A/ja
Pending legal-status Critical Current

Links

Abstract

【課題】複数の機関が秘密データとして保持しているベクトルの内積の結果を、秘密データの情報を他に一切知られることなく計算する秘匿ベクトル計算システムを提供する。
【解決手段】2以上のデータ処理装置100で構成され、1のデータ処理装置100は非公開データを記憶する記憶部130と、非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成部111と、分割データ列と乱数データ列を暗号鍵列で暗号化し、暗号化分割データ列組を作成する暗号化分割データ列組作成部112と、他のデータ処理装置により作成される演算適用後暗号化データ列を自己の暗号鍵列で復号したのち統合する結果統合部114とを有する。別のデータ処理装置100は、他のデータ処理装置により作成された暗号化分割データ列組に2つの異なる演算を適用する、演算適用後暗号化データ列作成部113を有する。
【選択図】図6

Description

本発明は、複数の機関が秘密データとして保持するベクトルの内積計算の結果を秘密データの情報を漏らすことなく計算するための秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体に関する。
非特許文献1には、確率公開鍵暗号方式を使った秘匿ベクトル内積計算方法が開示されている(以下、「従来方法」という)。ここで、公開鍵暗号方式とは暗号化するときに使う鍵と復号するときに使う鍵が異なるため、暗号化に利用する鍵を公開することで、誰でも暗号文を作成できるが、復号は復号するための鍵(秘密鍵)を知っている人以外には困難である非対称な暗号方式である。また、確率暗号とは、同一の平文を同一の鍵で暗号化すると必ず同一の暗号文を生成するRSA暗号方式のような確定暗号とは異なり、暗号化に毎回異なる乱数を利用可能なため、同じ平文であっても鍵の種類と同程度の数の暗号文に変換可能な暗号方式である。上記の性質を満たす公開鍵暗号方式の1つにElGamal暗号方式がある。確率公開鍵暗号方式を使った秘匿ベクトル内積方法では、暗号文に対して、演算を適用することで平文に演算を施せるという準同型性を利用し、かつ、確率的に暗号文を変化させることで、暗号文に対してどのような演算が適用されたのかを特定することを困難にしながら、平文に対して演算を施して、秘匿ベクトルの内積を計算する。
以下、機関P1とP2は図2、図3に示すような各家庭の利用電力量を把握している配電事業者と送電網コストを見積もることを要求された送電事業社とする。配電事業者は各世帯の利用電力量を、送電事業社は各家庭までの送電コストを距離に応じて変化させるパラメータを秘密データとして保持すると仮定する。
最初に、機関P1とP2は図4、図5に示すような秘密ベクトルXとYを用意する。ここで、機関P1は各世帯の利用電力量、機関P2は各世帯への単位電力量あたりの送電コストをベクトルの要素としてもつこととする。以降では、世帯を1からnで番号付け、ベクトルの大きさをnとし、各ベクトルの要素をXi、Yiと表す(ここでiは1以上n以下の整数とする)。
次に、機関P1は自分の公開鍵K=g S (mod P) (ここgは原子元、Pは素数、Sは秘密鍵とする。以降暗号の計算では(mod P)を省略する)を公開した上で、各世帯の利用電力量Xiの暗号値(2X]Kri, gri)(ここで、riは乱数)からなる暗号文ベクトルを作成し、機関P2に送信する。
機関P1より暗号文ベクトルを受け取った機関P2は暗号文の1項目、2項目ともにパラメータYiを指数乗したのち、各暗号文の1項目の要素をすべて乗算し、2項目の要素同士をすべて乗算した1つの暗号文(2X1Y1+X2Y2+…+XnYn Kr1Y1+r2Y2+…+rnYn, gr1Y1+r2Y2+…+rnYn)を作成し、最後に乱数Rで撹乱した暗号文(2X1Y1+X2Y2+…+XnYn Kr1Y1+r2Y2+…+rnYn+R, gr1Y1+r2Y2+…+rnYn+R)に変換し、変換後の暗号文を機関P2へ送信する。
暗号文を受け取った機関P1は暗号文2項組を復号することにより値E=Σ1≦i≦n XiYi+Rを得る。値Eと値Rを機関P1、P2で交換することにより、互いに内積結果を計算することができる。
Wei Jiang and Chris Clifton, "A secure distributed framework for achieving k-anonymity," The VLDB Journal, vol. 15, pp. 316-333, 2006.
非特許文献1の従来方法では暗号文を得た機関P2が機関P1の秘密情報を得ることができるかどうかはある整数i(1≦i≦n)において、(KriYi, griYi) という組合せと(Z, griYi)(ここでZは乱数)という組合せの違いを区別できるかどうかという離散対数問題に抽象化することができる。
現在のところ、離散対数問題は解くことが難しいと予測されている問題であるが、将来も解くことができないことを意味する不可能性は証明されていない。また、ElGamal暗号方式では、離散対数問題を解くこと以外の方法で情報を引き出せる可能性がないとの証明もなく、離散対数問題よりも簡単に暗号解析できる可能性が残っている。
さらに、(2XiKriYi, (gri )Yiなどの指数乗の計算は計算コストが非常に大きい。
よって、上記の確率公開暗号方式による秘匿ベクトル内積計算は、現在の計算環境では安全と想定の上で利用されているが、将来的には安全面、効率面双方で問題となる可能性がある。
本発明はこれらの問題を鑑みてなされたものであり、複数の機関が秘密データとして保持しているベクトルの内積の結果を、無関係な情報を他に一切知られることなく、計算することができる秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積計算プログラム、および、該秘匿ベクトル内積計算プログラムを記録した記録媒体を提供することを目的とする。
上記目的を達成するため、本発明の第1の観点にかかる秘匿ベクトル内積計算システムは、2以上のデータ処理装置で構成される秘匿ベクトル内積計算システムであって、
前記データ処理装置は秘匿ベクトル内積計算処理Aか秘匿ベクトル内積計算処理Bを担当し、
前記秘匿ベクトル内積計算処理Aを担当するデータ処理装置は、
非公開データを記憶する非公開データ記憶手段と、
前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶手段と、
前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成手段と、
前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成手段と、
他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得手段と、
前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合手段とを有し、
前記秘匿ベクトル内積計算処理Bを担当するデータ処理装置は、
他のデータ処理装置により作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶手段と、
他のデータ処理装置により作成された暗号化分割データ列組を取得する暗号化分割データ列組取得手段と、
前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成手段とを有し、
前記暗号化分割データ列作成手段では、
前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
前記結果統合手段では、
前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
ことを特徴とする。
前記演算適用後暗号化データ列作成手段は、
前記第1演算か前記第2演算列のうちの少なくとも1つは他のデータ処理装置に対し非公開としてもよい。
前記演算適用後暗号化データ列作成手段は、
前記第1演算と前記第2演算列の全てを他のデータ処理装置に対し非公開としてもよい。
前記非公開データは、
複数のデータブロックで構成されるベクトルデータであり、
前記暗号鍵列記憶手段は、
前記非公開データをデータブロックごとに暗号化するために使用する暗号鍵を並べた暗号鍵ベクトルの複数の並びである暗号鍵ベクトル列を記憶し、
前記分割データ列作成手段は、
前記非公開データの各データブロックを複数の分割データに分割し、データブロックごとの分割データを並べ分割データベクトルとし、分割データベクトルの並びである分割データベクトル列を作成し、
前記暗号化分割データ組作成手段は、
前記分割データベクトル列の各位置にある前記分割データベクトルを前記暗号鍵ベクトル列の同じ位置にある前記暗号鍵ベクトルで暗号化し、暗号化分割データベクトルを作成し、前記位置の要素とすることで暗号化分割データベクトル列を作成し、前記分割データベクトル列とは異なるデータベクトル列である第2データベクトル列を作成し、前記第2データベクトル列の各位置にあるデータベクトルを前記暗号鍵ベクトル列の前記位置にある前記暗号鍵ベクトルで暗号化し、暗号化データベクトルを作成し、作成した前記暗号化データベクトルを前記位置の要素とすることで暗号化データベクトル列を作成し、前記暗号化データベクトル列と前記暗号化データベクトル列を組として暗号化分割データベクトル列組を作成し、
前記演算適用後暗号化データ列取得手段は、
他のデータ処理装置により作成される演算適用後暗号化データベクトルを並べた演算適用後暗号化データベクトル列を取得し、
前記結果統合手段は、
前記演算適用後暗号化データベクトル列の各位置にある演算適用後暗号化データベクトルを前記暗号鍵ベクトル列の前記位置になる暗号鍵ベクトル、または、それに対応する復号鍵のベクトルで復号し、前記位置の要素とすることで演算適用後データベクトル列を作成し、前記演算適用後データベクトル列に属する要素を統合し、
前記適用演算記憶手段は、
他のデータ処理装置により作成された暗号化分割データベクトル列組に属する暗号化分割データベクトル列の全ベクトルの各ベクトル位置に適用する演算を並べた第1演算ベクトルと、
前記暗号化分割データベクトル列組に属する暗号化データベクトル列に属する各ベクトルの各要素に適用する演算を並べベクトルとし、かつ、ベクトルを列状にならべた第2演算ベクトル列を記憶し、
前記暗号化分割データ列組取得手段は、
他のデータ処理装置により作成された暗号化分割データベクトル列組を取得し、
前記演算適用後暗号化データ列作成手段は、
前記暗号化分割データベクトル列組に属する前記暗号化分割データベクトル列の全位置の前記暗号化分割データベクトルの各位置の要素に前記第1演算ベクトルの前記位置の演算を適用し、第1演算結果ベクトルを作成し、前記暗号化分割データベクトル列組に属する暗号化データベクトル列の各列位置にある暗号化データベクトルの各ベクトル位置にある要素に第2演算ベクトル列の前記列位置にある演算ベクトルの前記ベクトル位置にある演算を適用し、第2演算結果ベクトルを作成し、前記第1演算結果ベクトルと前記第2演算結果ベクトルを統合し演算適用後暗号化データベクトルを作成し、前記演算適用後暗号化データベクトルを列に並べ演算適用後暗号化データベクトル列を作成し、
前記暗号化分割データ列作成手段では、
前記分割データベクトル列のある列位置にある分割データベクトルのあるベクトル位置にある要素が0または空である場合に、0を暗号化するのではなく他の値を前記暗号化分割データベクトル列の前記列位置のベクトルの前記ベクトル位置の要素とし、
前記結果統合手段では、
前記分割データベクトル列のある列位置のベクトルのあるベクトル位置の要素が0または空である場合に、取得した前記演算適用後暗号化データベクトル列の前記列位置のベクトルの前記ベクトル位置の要素を統合に使用せず、
前記演算適用後暗号化データ列作成手段では、
前記第1演算ベクトルか前記第2演算ベクトル列のうちの少なくとも1つは他のデータ処理装置に対し非公開としてもよい。
上記目的を達成するため、本発明の第2の観点にかかるデータ処理装置は、
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
前記データ処理装置は秘匿ベクトル内積計算処理Aか秘匿ベクトル内積計算処理Bを担当し、
前記秘匿ベクトル内積計算処理Aを担当するデータ処理装置は、
非公開データを記憶する非公開データ記憶手段と、
前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶手段と、
前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成手段と、
前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成手段と、
他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得手段と、
前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合手段とを有し、
前記秘匿ベクトル内積計算処理Bを担当するデータ処理装置は、
他のデータ処理装置により作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶手段と、
他のデータ処理装置により作成された暗号化分割データ列組を取得する暗号化分割データ列組取得手段と、
前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成手段とを有し、
前記暗号化分割データ列作成手段では、
前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
前記結果統合手段では、
前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
ことを特徴とする。
上記目的を達成するため、本発明の第3の観点にかかる秘匿ベクトル内積計算方法は、
他のデータ処理装置と連携してデータを処理するデータ処理装置により実行される秘匿ベクトル内積計算方法であって、
非公開データを記憶する非公開データ記憶ステップと、
前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶ステップと、
前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成ステップと、
前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成ステップと、
他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得ステップと、
前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合ステップとを有し、
さらに、
他のデータ処理装置により作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶ステップと、
他のデータ処理装置により作成された暗号化分割データ列組を取得する暗号化分割データ列組取得ステップと、
前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成ステップとを有し、
前記暗号化分割データ列作成ステップでは、
前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
前記結果統合ステップでは、
前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
ことを特徴とする。
上記目的を達成するため、本発明の第4の観点にかかる秘匿ベクトル内積計算プログラムは、
他のコンピュータと連携してデータを処理するコンピュータにより実行される秘匿ベクトル内積計算プログラムであって、
非公開データを記憶する非公開データ記憶ステップと、
前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶ステップと、
前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成ステップと、
前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成ステップと、
他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得ステップと、
前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合ステップとを有し、
さらに、
他のコンピュータにより作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶ステップと、
他のコンピュータにより作成された暗号化分割データ列組を取得する暗号化分割データ列組取得ステップと、
前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成ステップとを有し、
前記暗号化分割データ列作成ステップでは、
前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
前記結果統合ステップでは、
前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
ことを特徴とする。
上記目的を達成するため、本発明の第5の観点にかかる記憶媒体は、
上記秘匿ベクトル内積計算プログラムが記録されていることを特徴とする。
さらに、上記目的を達成するため、本発明の第1の観点にかかる秘匿ベクトル内積計算システムの
前記暗号化分割データ列組作成手段は、
前記非公開データの内容に依存することなく、前記暗号化分割データ列組を定値とすることが可能であり、
前記演算適用後暗号化データ列作成手段は、
相手のデータ処理装置の非公開データの内容に依存することなく自己の保有する前記非公開データの内容のみによって前記演算適用後暗号化データ列を作成することが可能であってもよい。
さらに、前記結果統合手段は、
ベクトル内積結果以外の自己の保有する前記非公開データの内容に依存して変化しない内容の統合結果を算出することが可能であってもよい。
本発明によれば、複数の機関が秘密データとして保持しているベクトルの内積の結果を、無関係な情報を他に一切知られることなく、計算することができる。
本発明の実施の形態1にかかる秘匿ベクトル内積計算システムの構成例を示すブロック図である。 複数の機関による事前の取り決めに基づいて決定されている対象地域に存在する世帯の順序付けにより、機関P1がもつ世帯ごとの利用電力量を列状に並べた表である。 複数の機関による事前の取り決めに基づいて決定されている対象地域に存在する世帯の順序付けにより、機関P2がもつ世帯ごとの単位電力量あたりの送電コストを列状に並べた表である。 図2に示した表を要約し作成された機関P1がもつ秘密ベクトルXである。 図3に示した表を要約し作成された機関P2がもつ秘密ベクトルYである。 図1に示す制御部によって実現される機能を示す機能ブロック図である。 本発明の実施の形態1にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」の概要を説明するための処理概要図である。 本発明の実施の形態1にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」を説明するためのフローチャートである。 図8に示す「秘匿ベクトル内積計算処理A」で実行される「分割データ列作成処理」を説明するためのフローチャートである。 図8に示す「秘匿ベクトル内積計算処理A」で実行される「暗号化分割データ列組作成処理」と「秘匿ベクトル内積計算処理B」で実行される「演算適用後暗号化データ列作成処理」を説明するためのフローチャートである。 図8に示す「秘匿ベクトル内積計算処理A」で実行される「結果統合処理」と「秘匿ベクトル内積計算処理B」で実行される「結果復号処理」を説明するためのフローチャートである。 図8に示す「秘匿ベクトル内積計算処理A」、「秘匿ベクトル内積計算処理B」で実行される「最終結果算出処理」を説明するためのフローチャートである。 本発明の実施の形態2にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」の概要を説明するための処理概要図である。 本発明の実施の形態2にかかる秘匿ベクトル内積計算システムの構成例を示すブロック図である。 本発明の実施の形態2にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」を説明するためのフローチャートである。 本発明の実施の形態3にかかる秘匿ベクトル内積計算システムの構成例を示すブロック図である。 本発明の実施の形態3にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」を説明するためのフローチャートである。 本発明の実施の形態3にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」の概要を説明するための処理概要図である。 本発明の実施の形態3にかかる「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」の前提条件を説明するための処理前提条件説明図である。
(実施の形態1)
本実施の形態の秘匿ベクトル内積計算システム1は機関P1もしくは機関P2のもつ秘密データである秘密ベクトルの内積結果を、内積結果以外の機関P1の情報を機関P2に一切知られることなく、互いに知るため秘匿ベクトル内積計算システムである。以下、秘匿ベクトル内積計算システム1について図面を参照しながら説明する。また、図1を参照して秘匿ベクトル内積計算システム1の構成について説明する。
秘匿ベクトル内積計算システム1は図1に示すように、機関P1と機関P2それぞれに設置された2台のデータ処理装置100と、それらを接続する通信線200とで構成される。2台のデータ処理装置100は通信線200を通じて互いにデータを送受信することで連携して2つの処理を協調しながら実行する。
データ処理装置100は、例えば、PCサーバやメインフレームなどで構成され、計測データ等の非公開情報を格納している。データ処理装置100は図1に示すように制御部110、通信部120、記憶部130、操作部140、インタフェース部150から構成される。
制御部110はCPU(Central Processing Unit)などで構成され、データ処理装置100の各部を制御する。また、制御部110は操作部140から「秘匿ベクトル内積計算処理A開始通知」を受信すると、後述の「秘匿ベクトル内積計算処理A」を、「秘匿ベクトル内積計算処理B開始通知」を受信すると、後述の「秘匿ベクトル内積計算処理B」を実行する。「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」は2台のデータ処理装置で別々に実行されるが、2つの処理が協調して実行されることにより秘匿ベクトル内積計算結果が算出される。以降では、「秘匿ベクトル内積計算処理A」は機関P1に設置されたデータ処理装置100で、「秘匿ベクトル内積計算処理B」は機関P2に設置されたデータ処理装置100で実行されるとする。
通信部120はLANコネクタや送受信処理用のプロセッサなどから構成され、通信線200を通じて外部の装置(例えばパーソナルコンピュータ)との通信を行う。
記憶部130はハードディスクやRAM(Random Access Memory)などから構成され、データ処理装置100の動作に必要なデータ(例えば「秘密ベクトル」や「暗号鍵ベクトル」)などを記憶する。
ここで「秘密ベクトル」とは「ある世帯の利用電力量」や「世帯までの送電コスト」などの非公開な情報を列状に並べたものをいう。また、「世帯に利用電力量」とは、配電事業社が記録として持っている各世帯の利用電力量という数値データであり、「世帯までの送電コスト」とは、送電事業社が想定する各世帯への単位電力量あたりの送電コストという数値データである。機関P1を配電事業社とし、機関P2を送電事業社としたときに、機関P1とP2は世帯のある集合に対する「世帯の利用電力量」を世帯順に並べたベクトルXと「世帯までの送電コスト」を世帯順に並べたベクトルYをそれぞれもつとする。暗号化や復号は特に定めないかぎり、世帯ごとの数値データ、つまり、ベクトル要素に対して実行される。
また、「暗号鍵ベクトル」とは、ベクトル要素の暗号化に使用する鍵を列状に並べたものであり、暗号鍵ベクトルのベクトル要素はデータの暗号化に使用するための鍵となる数値であり、各機関において任意に選択される。本実施の形態では、記憶部130に暗号鍵ベクトルが保存される。「秘匿ベクトル内積計算処理A」を実行する機関P1では、複数の暗号鍵ベクトルを利用し、暗号文ベクトルC1、C2、D1、D2を作成する。「秘密ベクトル内積計算処理B」を実行する機関P2では、1つの暗号鍵ベクトルを利用し、暗号文ベクトルE1、E2を作成する(詳細は後述する)。
操作部140は、データ処理装置100の外面上に構成されている各種ボタンなどによって構成される。ユーザにより所定のボタンが押されると、制御部110に対し「秘匿ベクトル内積計算処理A開始通知」または「秘匿ベクトル内積計算処理B開始通知」を送信する。秘匿ベクトル内積計算処理A、Bの開始通知は、秘匿ベクトル内積計算処理AまたはBを開始するためのトリガーとなるデータである。
インタフェース部150は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部の装置(例えばPCやモニタなど)へ処理結果を送信する。
以上、秘匿ベクトル内積計算システム1の構成について説明したが、次に、制御部110の備える機能について、図6の機能ブロック図、および、図7の処理概略図を参照しながら説明する。
制御部110は複数の機関で各自が持つ秘密ベクトルのベクトル内積結果を計算するための「秘匿ベクトル内積計算処理A」、「秘匿ベクトル内積計算処理B」を実行する。秘匿ベクトル内積計算処理Aは操作部140からの「秘匿ベクトル内積計算処理A開始通知」により開始され、秘匿ベクトル内積計算処理Bは操作部140からの「秘匿ベクトル内積計算処理B開始通知」により開始される。以下に説明する各機能は秘匿ベクトル内積計算処理A、Bを実現するための機能である。
分割データ列作成部111は、自己のもつ秘密ベクトルを複数のベクトルに分割し、複数の分割データ列を作成する。ここで、ベクトルを分割するとは、複数の分割データ列を統合することで初めて元の秘密ベクトルを構成できるよう、複数のベクトルに情報を分散することである。分割方法の一例としては、2つのベクトルのベクトル和が秘密ベクトルとなるよう複数のベクトルを作成することである。分割データ列作成部111は秘匿ベクトル内積計算処理Aを実行するデータ処理装置が保持する。
暗号化分割データ列組作成部112は複数の自己のもつ分割データ列を自己のもつ暗号鍵ベクトルを用い、暗号化することで暗号化分割データ列を作成し、その暗号化分割データ列と同じ暗号鍵ベクトルで乱数ベクトルを暗号化することにより作成した暗号化データ列を組として相手機関に送信する。さらに、相手機関が暗号化分割データ列組に相手機関の暗号鍵ベクトルに演算を施したベクトルを暗号鍵ベクトルとして暗号化した演算適用後暗号化分割データ列を取得する(図7(a))。暗号化分割データ列組作成部112は秘匿ベクトル内積計算処理Aを実行するデータ処理装置が保持する。
演算適用後暗号化データ列作成部113は他の機関の暗号化分割データ列組作成部112にて作成された暗号化分割データ列組を自己のもつ秘密ベクトルと暗号鍵ベクトルに演算を施すことで作成するベクトルを鍵ベクトルとして暗号化し、演算適用後暗号化データ列を作成し、演算適用後暗号化データ列を相手機関に送信する(図7(a))。演算適用後暗号化データ列作成部113は秘匿ベクトル内積計算処理Bを実行するデータ処理装置が保持する。
結果統合部114は他の機関より演算適用後暗号化データ列を受信し、演算適用後暗号化データ列を自己のもつ暗号鍵ベクトル、もしくは、対応する復号鍵のベクトルで復号した後、統合し、暗号化統合データ列を作成し、暗号化統合ベクトルを相手機関に送信する(図7(b))。次に、暗号化分割データ列組の作成時に用いた乱数ベクトルの要素の総和を求め、部分内積結果aとする(図7(d))。結果統合部114は秘匿ベクトル内積計算処理Aを実行するデータ処理装置が保持する。
結果復号部115は相手機関が作成した暗号化統合データ列を取得し、自己のもつ暗号鍵ベクトル、もしくは、対応する復号鍵のベクトルで暗号化統合データ列を復号し、統合データ列を作成し、統合データ列の要素の総和をもとめ部分内積結果bとする(図7(c))。結果復号部115は秘匿ベクトル内積計算処理Bを実行するデータ処理装置が保持する。
最終結果算出部116は結果統合部114で計算された部分内積結果aと結果復号部115で計算された部分内積結果bを相手機機関と交換し、部分内積結果aと部分内積結果bを取得し、部分内積結果aと部分内積結果bを統合し、内積結果を算出する。さらに、インタフェース部150を通じて外部の装置へ内積結果を送信する(図7(e))。最終結果算出部116は秘匿ベクトル内積計算処理A、Bを実行する双方のデータ処理装置が保持する。
以上、制御部110の機能について説明したが、次に、データ処理装置100で実行される「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」について図8のフローチャートを参照しながら説明する。機関P1および機関P2に設置された2台のデータ処理装置100の一方が、「秘匿ベクトル内積計算処理A」を実行し、他方が「広くベクトル内積計算処理B」を実行する。以降では、機関P1のデータ処理装置100が「秘匿ベクトル内積計算処理A」を実行し、機関P2のデータ処理装置100が「秘匿ベクトル内積計算処理B」を実行するとする。
最初に、ステップS100の分割データ列作成処理について説明する。制御部110は自己の「秘密ベクトル」を複数のベクトルに分割した「分割データ列」(図9)を作成する。
次にステップS200の暗号化分割データ列組作成処理について説明する。制御部110は分割データ列作成処理で作成した複数の分割ベクトルを自己のもつ暗号鍵ベクトルで暗号化し、暗号化分割ベクトルを複数個作成し、それらのベクトルを列状に並べる。さらに、乱数ベクトルを用意し、乱数ベクトルを暗号化分割ベクトルを作成した同じ暗号鍵ベクトルで暗号化し、暗号化ベクトルの列を作成する。暗号化分割ベクトルの列と暗号化ベクトルの列を組とし、暗号化分割データ列組を作成し、相手機関に送信する。さらに、作成した暗号化分割データ列組に相手機関の秘密ベクトルと暗号鍵ベクトルに演算を施してできたベクトルを鍵ベクトルとして暗号化した演算適用後暗号化データ列を取得する。
次にステップS300の演算結果適用後暗号化データ列作成処理について説明する。制御部110は他の機関が作成した暗号化分割データ列組を取得し、取得した暗号化分割データ列組の暗号化分割ベクトルの各要素に自己がもつ秘密ベクトルの同じ位置の要素を乗算し、暗号化乗算分割ベクトルを作成し、さらに、暗号化乗算分割ベクトルを自己のもつ暗号鍵ベクトルで暗号化し、複数の演算適用後暗号化ベクトルを作成し、それらの演算適用後暗号化ベクトルを列状に並べ演算適用後暗号化データ列とし、演算適用後暗号化データ列を相手機関に送信する。
次にステップS400の結果統合処理について説明する。制御部110はステップS200で取得した演算適用後暗号化データ列を、暗号化分割データ列組を作成するときに用いた暗号鍵ベクトル、もしくは、対応する復号鍵ベクトルで復号した後、統合し、暗号化統合データ列を作成する。作成した暗号化統合データ列を相手機関に送信する。その後、制御部110は演算適用後暗号化データ列組を作成するときに用いた乱数ベクトルの要素の総和を求め、部分内積結果aとする。
次にステップS500の結果復号処理について説明する。制御部は、相手機関により作成された暗号化統合データ列を取得する。その後、制御部110は暗号化統合データ列を自己の保持する暗号鍵ベクトル、もしくは、暗号鍵ベクトルに対応する復号鍵ベクトルで復号し、復号後のベクトル要素を加算することで部分内積結果bを取得する。
ここで暗号化分割データ列組作成処理および結果統合処理を実施する機関P1は複数の分割ベクトルを暗号化しているとはいえ、全ての分割ベクトルに関する情報を相手機関に渡し、かつ、部分内積結果の復号値を全て機関P2が知ることにより、機関P1の秘密ベクトルに関連する内積結果以外の何らかの情報が機関P2に漏れているのではないかという疑問が生じる。しかしながら、本実施の形態では、暗号化に加え、得られた結果だけからはオペランドの一方が明確にならない限り、元々の演算前のオペランドの二数を割り出すことができないという2項演算の不可逆性を利用する方法により、機関P1の秘密ベクトルに関して完全な秘匿を実現する。
最後にステップS600の最終結果算出処理について説明する。最終結果算出処理は秘匿ベクトル内積計算処理A, Bどちらを実行するデータ処理装置上でも実行される。制御部110は自己のもつ部分内積結果を相手機関に送信する。例えば、機関P1の場合は部分内積結果aを機関P2へ、機関P2の場合は、部分内積結果bを機関P1へ送信する。その後、部分内積結果aと部分内積結果bを統合させる演算を実行し、演算結果を算出する。
以上、秘匿ベクトル内積計算処理A、Bの概要について説明したが、次に、秘匿ベクトル内積計算処理A、Bについて詳細に説明する。最初にステップS100の「分割データ列作成処理」について説明する。ステップS100は図8の「分割データ列作成処理」に対応している。以下、図9のフローチャートおよび図7の処理概略図を参照して「分割データ列作成処理」について説明する。なお、分割データ列作成処理は、分割データ列作成部111で実行される。
分割データ列作成部111は秘密ベクトル(「ベクトルX」)を2つの分割ベクトルα、βに分割する。ここで、分割ベクトルのベクトル和は元の秘密ベクトルであるという条件を分割ベクトルが満たすとする(ベクトルα、βについてはα+β=X)。
ここでの分割はランダムに実行される。つまり、i番目の分割ベクトル要素をαiとするときに、αiをランダムに選択する。次に、もう一方の分割ベクトルβの要素βiにXi-αiなる値を設定する。以上により、分割ベクトルの一方は完全な乱数ベクトルと見なせることとなる。
以上の処理により、分割データ列作成部111は一方の分割ベクトルが乱数ベクトルになるような複数の分割ベクトルを作成する。分割ベクトルα、βの作成が完了すると、制御部110は図8のフローに戻り、ステップS200の暗号化分割データ列組作成処理とステップS300の演算適用後暗号化データ列作成処理を開始する。以下、図10のフローチャートおよび図7の処理概略図を参照して「暗号化分割データ列作成処理」、「演算適用後暗号化データ列作成処理」について説明する。暗号化分割データ列組作成処理は機関P1のデータ処理装置の暗号化分割データ列組作成部112で実行され、演算適用後暗号化データ列作成処理は機関P2のデータ処理装置の演算適用後暗号化データ列作成部113で実行される。
暗号化分割データ列組作成部112は分割ベクトルα、βに加え、乱数ベクトルλ、μベクトルを作成する。次に分割ベクトルαと乱数ベクトルλを同じ暗号鍵ベクトルKA1で暗号化した暗号文ベクトルC1、D1を作成する。また、同様に分割ベクトルβと乱数ベクトルμを同じ暗号鍵ベクトルKA2で暗号化した暗号文ベクトルC2、D2を作成する。ここで、分割ベクトルαの要素が0、または、空である場合には0を暗号化した暗号値をC1の要素とするのではなく、0以外の他の値を暗号値として用いる。分割ベクトルβの要素が0であった場合も同様とする。作成した暗号文ベクトルC1、D1、C2、D2を暗号化分割データ列組として相手機関へ送信し、相手機関から演算適用後暗号化データ列に対応する2つの暗号文ベクトルが送信されるまで待つ。
演算適用後暗号化データ列作成部113は相手機関より4つの暗号文ベクトルC1、C2、D1、D2が送られるまで待ち、受信した暗号文ベクトルC1、C2に自己がもつ秘密ベクトルYをベクトル要素ごとに乗算し、2つの乗算結果ベクトルを作成する。その後、2つの乗算結果ベクトルとD1、D2ベクトルをそれぞれベクトル加算した上で共通の暗号鍵ベクトルKBで2つのベクトルを暗号化し、暗号化ベクトルG1、G2を作成する。作成した暗号化ベクトルを演算適用後暗号化データ列として相手機関に送信する。
以上の処理により、ステップS200の暗号化分割データ列組作成処理とステップS300の演算適用後暗号化データ列作成処理が終了すると、制御部110は図8のフローに戻り、ステップS400の結果統合処理とステップS500の結果復号処理を開始する。以下、図11のフローチャートおよび図7の処理概略図を参照して「結果統合処理」、「結果復号処理」について説明する。結果統合処理は機関P1のデータ処理装置の結果統合部114で実行され、結果復号処理は機関P2のデータ処理装置の結果復号部115で実行される。
結果統合部114は相手機関より演算適用後暗号化データ列に対応する2つの暗号文ベクトルを受信したら、暗号文ベクトルそれぞれを異なる暗号鍵ベクトルKA1, KA2、または暗号鍵ベクトルKA1, KA2に対応する復号鍵ベクトルによって復号し、得られた2つの暗号文ベクトルのベクトル和を求め、暗号文ベクトルJとする。ここで、分割ベクトルαの要素が0である場合には、対応する演算適用後暗号化ベクトルの要素を統合に使用しない。分割ベクトルβの要素が0である場合にも、同様である。その後、乱数ベクトルλ、μの要素和を求め、部分内積結果Hとする。部分内積結果Hを計算した後、制御部110は図8のフローに戻り、ステップS600の最終結果算出処理を開始する。最終結果算出処理は機関P1のデータ処理装置の最終結果算出部116で実行される。
結果復号部115は相手機関より暗号化統合データ列に対応する暗号文ベクトルJが送信されるまで待つ。結果復号部115は相手機関より暗号値ベクトルJを受信したら、暗号鍵ベクトルKBか暗号鍵ベクトルKBに対応する復号鍵ベクトルにて暗号値ベクトルJを復号し、復号後、得られたベクトル要素をすべて加算することで値Eを求める。値Eを計算した後、制御部110は図8のフローに戻り、ステップS600の最終結果算出処理を開始する。最終結果算出処理は機関P2のデータ処理装置の最終結果算出部116で実行される。以下では、「最終結果算出処理」について図12のフローチャート、図7の処理概要図を参照しながら説明する。
最終結果算出部116は自己のもつ値Hか値Jを相手機関に送信し、相手機関の値Hか値Jを受信した後、値Hと値Jの和を内積結果NewXYとして算出する。内積結果NewXYを算出したら、インタフェース部150を通じて処理結果を外部の装置へ出力する(ステップS600)。
本実施の形態によれば、機関P1は秘密ベクトルのベクトル要素と乱数ベクトルの要素を暗号化して渡し、機関P2の秘密ベクトル要素と機関P1の秘密ベクトル要素との乗算値を、乱数ベクトル要素を加算することで機関P2に知られないようにできる。また、秘密ベクトルの要素と乱数ベクトルの要素の値をそれぞれ二つに分割した後、別々の暗号鍵で分割することにより相手機関に秘密ベクトルの要素と乱数ベクトルの要素の値の比率を推測されることを防ぐ。
また、意味のない値を暗号値の代わりに相手機関に送信することを許すことにより、秘密ベクトル要素と乱数ベクトル要素を必ず分割しなくても、内積結果を計算できる仕組みとなっている。これにより、暗号値の比率と同じ比率をもつ秘密ベクトル要素と乱数ベクトル要素も送信できる可能性を残すことができ、暗号値から可能性のない秘密ベクトル要素と乱数ベクトル要素の組合せを推定することを不可能にする。
このように本実施の形態の方法は同じ暗号鍵で暗号化した複数の暗号値は暗号値を加算するのみで平文を加算できるという効率面で非常に大きい利点をもつ一方で、元の平文の比率を特定できてしまうという弱点があるという理由から、簡潔な暗号化方式の利用が難しかった安全面の問題点を克服した機密性の高い方法となっている。よって、本実施の形態の方法を使用すれば、効率よく機関P1の安全性を完全に保証することが可能となる。
(実施の形態2)
本実施の形態の秘匿ベクトル内積計算システム1は、秘匿ベクトル内積計算処理Bを実行するデータ処理装置が分割データ列作成部111をもつという以外は実施の形態1と同じ構成をもち、また、そのシステムが備えるデータ処理装置100も実施の形態1のシステムが備えるデータ処理装置100とほぼ同じ構成をもつ。しかしながら、データ処理装置100の機能が実施の形態1のデータ処理装置の機能と異なる。以下では、本実施の形態のシステムを図13の処理概要図、図14のブロック図、図15のフローチャートを参照しながら説明する。
実施の形態1では演算適用後暗号化データ列作成処理を実施する機関P2は、その後、暗号化するとはいえ、同じ秘密ベクトルを複数の暗号化分割ベクトルの要素に対して乗算し、それら複数の暗号化統合ベクトルを機関P1に作成できるようにすることで、機関P2の秘密ベクトルに関連する内積計算結果以外の何らかの情報が機関P1に漏れているのではないかという疑問が生じる。よって、本実施の形態では同じ分割ベクトルを乗算した複数の暗号化乗算分割ベクトルに対して、異なる関数を適用し、かつ、統合値が満たすべき条件を維持できる仕組みを導入することにより、機関P2の秘密ベクトルに関しても完全な秘匿を実現する。
データ処理装置100で実行される「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」について説明する。機関P1および機関P2に設置された2台のデータ処理装置100の一方が「秘匿ベクトル内積計算処理A」を実行し、他方が「秘匿ベクトル内積計算処理B」を実行する。以降では、機関P1のデータ処理装置100が「秘匿ベクトル内積計算処理A」を実行し、機関P2のデータ処理装置100が「秘匿ベクトル内積計算処理B」を実行するとする。
最初にステップS100の分割データ列作成処理について説明する。制御部110は自己の「秘密ベクトル」を1つの分割ベクトルα、β(機関P1側)またはγ、δ(機関P2側)に分割した「分割ベクトル」(図13(a)、(b))を作成する。
次にステップS200の暗号化分割データ列組作成処理について説明する。制御部110は分割データ列作成処理で作成した複数の分割ベクトルα、βをα1、β1とし、さらに、α1+β1=α2+β2を満たす2つの分割ベクトルα2、β2を作成する。さらに、4つの乱数ベクトルλ1、μ1、λ2、μ2をλ1+μ1-Γ1=λ2+μ2-Γ2=Λを満たすよう作成する。ここで、Γ1、Γ2は機関1、機関2が予め共に知っている定数ベクトルとする。また、機関P1が定めるλ1+μ1-Γ1なるベクトルをΛベクトルと呼ぶ。次に、ベクトルα1、λ1を暗号鍵ベクトルKA1で、ベクトルβ1、λ2を暗号鍵ベクトルKA2で、ベクトルα2、μ1を暗号鍵ベクトルKA3で、ベクトルβ2、μ2を暗号鍵ベクトルKA4で暗号化し、それぞれ暗号文ベクトルC1、D1、C2、D2、C3、D3、C4、D4とする。作成した8つの暗号文ベクトルを相手機関へ送信する(図13(c))。
さらに演算適用後暗号化データ列作成処理について説明する。まず、演算的用語分割データ列作成部114は分割ベクトルδをさらに2つのベクトルδ1、δ2に分割する。ここでδ1+δ2=δとする。また、乱数ベクトルθを設定する。そして、4つの暗号値ベクトルF1、F2、F3、F4を計算する。ここで、各暗号値ベクトルの要素F1i, F2i, F3i, F4i(1≦i≦n)は以下の式を満たすとする。4つの暗号値ベクトルF1、F2、F3、F4を相手機関に送信する(図13(d))。
次に結果復号部114は4つの暗号値ベクトルF1、F2、F3、F4を相手機関より受信し、ベクトルF1、F2、F3、F4をそれぞれ暗号鍵ベクトルKA1, KA2, KA3, KA4により復号するか、暗号鍵ベクトルそれぞれに対応する復号鍵ベクトルを用いて復号した後、ベクトル和をもとめ暗号値ベクトルGを作成する。作成した暗号値ベクトルGを相手機関に送信する(図13(e))。その後、結果統合部115は乱数ベクトルΛのベクトル要素の総和を求め、部分内積結果Hとする(図13(g))。
結果復号部116は暗号値ベクトルGを相手機関より受信し、暗号鍵ベクトルKB、もしくは、暗号鍵ベクトルKBに対応する復号鍵ベクトルを用いて復号した後、ベクトル要素を全て加算し、得られた値から(θΓ1+(1−θ)Γ2)なるベクトルの要素の総和を減算することで値Jを計算する(図13(f))。その後、結果統合部114、結果復号部115は制御を制御部110に戻す。制御部110は図15のフローに戻り、最終結果算出処理を実行する。最終結果算出処理は実施の形態1の最終結果算出処理と同一である(図13(h))。
本実施の形態によれば、機関P1だけでなく、機関P2においても乗算する値を分割し、かつ、θというパラメータを導入することによりベクトル内積結果を正しく計算することを保証しながら、暗号文を自己の乗算する値に制限を受けることなく自由に変更することが可能となる。また、ベクトルJの要素が0という値になるかならないかにより、Yなるベクトル要素がなり得ない値(Jのi番目の要素Jiが0のときだけ、Yのi番目の要素YiはΛi/Xiという値を取るが、Jiが0以外ならばYiはΛi/Xiではない)を確定できる状況を(θΓ1+(1−θ)Γ2)というベクトルを加算することにより回避することが可能となる。
このように、本実施の形態の方法は機関P1、機関P2の双方ともにおいて、暗号文を得ることにより、相手の秘密データとして想定される候補を暗号文取得前の候補からより小さい集合に限定することを許さない方法である。よって、本実施の形態の方法を使用すれば、完全に不必要な情報を漏らすことなくベクトル内積結果を得ることが可能となる。
(実施の形態3)
本実施の形態の秘匿ベクトル内積計算システム1では機関P2は自己のもつ秘密データである秘密ベクトルとある定数ベクトルとの内積結果のみを機関P1に知らせ、機関P1は自己のもつ秘密データである秘密ベクトルと機関P2の秘密ベクトルの内積結果のみを機関P2に知らせるための秘匿ベクトル内積計算システムである。実施の形態1および2と異なり、本実施の形態では機関P2は相手機関に知らせる情報を相手の秘密データの内容に依らず、独立に、かつ、一意に定めることができる。
機関P2が複数の機関と繰り返し内積を計算する可能性のある計算サーバ等の場合には、内積計算の度に異なる内積結果を他機関に知らせることは、内積結果だけしか互いに知ることができないとしても、安全上の問題となる。例えば、ベクトル次数が2の場合、2つの異なる内積結果が求まれば、秘密ベクトルの全ての値を特定できてしまう。本実施の形態は、上記の安全上の問題を解決するための秘匿ベクトル内積計算システムである。以下、秘匿ベクトル内積計算システム1について図面を参照しながら説明する。また、図16を参照して秘匿ベクトル内積計算システム1の構成について説明する。
秘匿ベクトル内積計算システム1は図16に示すように、機関P1と機関P2それぞれに設置された2台のデータ処理装置100と、それらを接続する通信線200とで構成される。2台のデータ処理装置100は通信線200を通じて互いにデータを送受信することで連携して2つの処理を協調しながら実行する。以下、秘匿ベクトル内積計算システム1の構成について説明する。なお、データ処理装置100の構成と機能については、制御部110以外は実施の形態1と同様であるので説明を省略する。
次に、制御部110の備える機能について、図16の機能ブロック図、および、図18の処理概略図、図19の処理前提条件説明図を参照しながら説明する。
制御部110は、複数の機関で各自がもつ秘密ベクトルのベクトル内積結果を機関P2に知らせるため、「秘匿ベクトル内積計算処理A」、「秘匿ベクトル内積計算処理B」を実行する。秘匿ベクトル内積計算処理Aは操作部140からの「秘匿ベクトル内積計算処理A開始通知」により開始され、秘匿ベクトル内積計算処理Bは操作部140からの「秘匿ベクトル内積計算処理B開始通知」により開始される。以下に説明する各機能は秘匿ベクトル内積計算処理A、Bを実現するための機能である。以降では、「秘匿ベクトル内積計算処理A」は機関P1に設置されたデータ処理装置100の制御部110で、「秘匿ベクトル内積計算処理B」は機関P2に設置されたデータ処理装置100の制御部110で実行されるとする。
分割データ列作成部111は、自己のもつ秘密ベクトルを複数のベクトルに分割し、複数の分割データ列を作成する。ここで分割方法の一例としては、2つ以上のベクトルのベクトル和が秘密ベクトルとなるように複数のベクトルを作成することである。分割データ列作成部111は秘匿ベクトル内積計算処理Aを実行するデータ処理装置、秘匿ベクトル内積計算処理Bを実行するデータ処理装置の両方が保持してもよい(図18(Step1、Step2、 Step3、Step4))。
暗号化分割データ列組作成部112は複数の自己のもつ分割データ列を自己のもつ暗号鍵ベクトルを用い、暗号化することで暗号化分割データ列を作成し、その暗号化分割データ列と同じ暗号鍵ベクトルで乱数ベクトルを暗号化することにより暗号化データ列組を作成するが、このとき、機関P1、機関P2が予め共通情報として定めた値の列の暗号化データ列の組を作成する。定められた暗号化データ列の組を作成するため、分割データ列、暗号鍵ベクトル、乱数ベクトルを逆算する(図19)。作成した暗号化データ列の組は共通情報であり、既に機関P1、機関P2にとって公知なので相手機関には送信しない。一方、相手機関が暗号化分割データ列組に演算を施したベクトルを暗号鍵ベクトルとして暗号化した演算適用後暗号化分割データ列を取得する(図18 (Step5、Step8))。暗号化分割データ列組作成部112は秘匿ベクトル内積計算処理Aを実行するデータ処理装置が保持する。
演算適用後暗号化データ列作成部113は他の機関の暗号化分割データ列組作成部112にて作成されたと想定できる暗号化分割データ列組、もしくは、対応する公知情報を自己のもつ秘密ベクトルと暗号鍵ベクトル、および乱数ベクトルに演算を施すことで作成するベクトルを鍵ベクトルとして暗号化し、演算適用後暗号化データ列を作成し、演算適用後暗号化データ列を相手機関に送信する(図18(Step6、Step7、Step9))。ここでも、暗号化データ列の組を予め共通情報として定めた値の列とするため、暗号鍵ベクトル、乱数ベクトルを逆算し(図19)、算出された暗号鍵ベクトルを演算に用いる。
結果統合部114は、他の機関より演算適用後暗号化データ列を受信し、演算適用後暗号化データ列を自己のもつ暗号鍵ベクトル、もしくは、公知の値の暗号化データ列組を作成するために逆算した暗号鍵ベクトルで復号した後、統合し、暗号化統合データ列を作成し、暗号化統合ベクトルを相手機関に送信する(図18(Step10))。結果統合部114は秘匿ベクトル内積計算処理Aを実行するデータ処理装置が保持する。
結果復号部115は相手機関が作成した暗号化統合データ列を取得し、自己のもつ暗号鍵ベクトル、もしくは、自己のもつ秘密ベクトルと公知の値の列と乱数ベクトルに演算を施すことで作成した鍵ベクトルで暗号化統合データ列を復号し、統合データ列を作成し、暗号データ列の要素の総和を求め部分内積結果aとする(図18(Step11))。結果復号部115は秘匿ベクトル内積計算処理Bを実行するデータ処理装置が保持する。
最終結果算出部116は、演算適用後暗号化データ列作成時に用いた乱数ベクトルの要素の総和を求め、部分内積結果bとする。さらに、結果統合部114で計算された部分内積結果aと部分内積結果bを統合し、内積結果を算出する。最後に、インタフェース部150を通じて外部の装置へ内積結果を送信する(図18(Step12))。最終結果算出部116は秘匿ベクトル内積計算処理Bを実行するデータ処理装置が保持する。
以上、制御部110の機能について説明したが、次に、データ処理装置100で実行される「秘匿ベクトル内積計算処理A」と「秘匿ベクトル内積計算処理B」について図17のフローチャート、および、図18の処理概要図、図19の処理前提条件説明図を参照しながら説明する。
最初に、ステップS100の分割データ列作成処理について説明する。制御部110は自己の「秘密ベクトル」を複数のベクトルに分割した「分割データ列」を作成する。ここでは、単に1次元の秘密ベクトル要素を複数の要素に分割するだけではなく、秘密ベクトルの複数の要素の値に演算を適用し、要素の値を混合した後に分割データ列を作成することもある(図18(Step1、Step2、Step3、Step4))。
次に、ステップS200の暗号化分割データ列組作成処理について説明する。制御部110は分割データ列作成処理で作成した複数の分割ベクトルを自己のもつ暗号鍵ベクトルで暗号化し、暗号化分割ベクトルを複数個作成し、それらのベクトルを列状に並べる。さらに、乱数ベクトルを用意し、乱数ベクトルを暗号化分割ベクトルの作成時と同じ暗号鍵ベクトルで暗号化し、暗号化ベクトルの列を作成する。このとき、機関P1、機関P2が予め共通情報として定めた値の暗号化データ列の組を作成できるよう、分割データ列、暗号鍵ベクトル、乱数ベクトルを逆算し、メモリに記録する(図19)。作成した暗号化データ列の組は共通情報なので、相手機関に送信する必要がない。さらに、作成したと想定される暗号化分割データ列組に相手機関の秘密ベクトルを暗号鍵ベクトルに演算を施してできたベクトルを鍵ベクトルとして、暗号化した演算適用後暗号化データ列を取得する(図18(Step5、Step8))。
次にステップS300の演算結果適用後暗号化データ列作成処理について説明する。制御部110は他の機関の暗号化分割データ列組作成部112にて作成されたと想定できる暗号化分割データ列組、もしくは、対応する公知情報を取得し、取得した暗号化分割データ列組の暗号化分割ベクトルの各要素に自己がもつ秘密ベクトルと暗号鍵ベクトルおよび乱数ベクトルに演算を施すことで作成するベクトルを鍵ベクトルとして暗号化し、演算適用後暗号化データ列を作成し、演算適用後暗号化データ列を相手機関に送信する(図18(Step6、Step7、Step9))。ここで、鍵ベクトルを作成する上で、ステップS200での暗号化分割データ列組作成処理と同様に、予め共通情報として定めた値の暗号化データ列組を作成できるよう、分割データ列、暗号鍵ベクトル、乱数ベクトルを逆算する(図19、図18(Step6、Step7))。逆算した値に演算を施すことで作成された鍵ベクトルを用い、演算適用後暗号化データ列を作成する(図18(Step9))。
ここで、演算適用後暗号化データ列作成処理は、一見すると相手機関の暗号化分割データ列組の値に依存した変化する可能性のある情報である演算適用後暗号化データ列を相手機関に渡しているように見える。しかし、本実施の形態では、演算適用後暗号化データ列作成処理以前に、相手機関より何の情報も実際には受信せず、演算適用後暗号化データ列を作成しているため、演算適用後暗号化データ列は、秘匿ベクトル内積計算処理Bを実行するデータ処理装置が自己の秘密ベクトルと公知の情報のみに依って決定することのできる情報である。また、公知の情報を複数の相手機関に対しても、固定することによって、演算適用後暗号化データ列の内容を一意に定めることも可能である。
次にステップS400の結果統合処理について説明する。制御部110はステップS200で取得した演算適用後暗号化データ列を、暗号化分割データ列組を作成するときに用いたと想定される、もしくは、逆算した暗号鍵ベクトルで復号した後、統合し、暗号化統合データ列組を作成する。作成した暗号化統合データ列組は、秘匿ベクトル内積計算処理Bが最終的に算出する内積結果と同じ内積結果をもつ別の秘密ベクトルを秘密入力としたときにも同じ暗号化統合データ列組を作成可能な値の列である。つまり、作成された暗号化統合データ列組は秘密ベクトルの内積計算結果のみに依存して変化する(図18(Step10))。
次にステップS500の結果復号処理について説明する。制御部110は、相手機関より作成された暗号化統合データ列を取得する。その後、制御部110は暗号化統合データ列を自己が逆算した暗号鍵ベクトルで復号し、復号後のベクトル要素を加算することで部分内積結果aを取得する(図18(Step11))。
最後にステップS600の最終結果算出処理について説明する。最終結果算出処理は秘匿ベクトル内積計算処理Bを実行するデータ処理装置上でのみ実行される。制御部110は演算適用後暗号化データ列組を作成するときに用いた乱数ベクトルの要素の総和、および、乱数ベクトルに演算を施すことにより部分内積結果bを算出する。その後、部分内積結果aと部分内積結果bを統合させる演算を実行し、ベクトル内積演算結果を算出する(図18(Step12))。
実施の形態1、2および3では、複数のデータブロックで構成されるベクトルを対象に本方法を適用したが、本方法はデータブロック単体を対象に適用してもよい。この場合、データ処理装置100は、データブロック同士の乗算結果を計算するが、最終的な内積結果を算出すると相手のデータブロックの値が判明してしまうので、最終結果以前の値を別の計算に利用する。また、一方の機関のデータブロックを単位ブロック(例えば値1)に設定し、他の機関のデータブロックを秘密データブロックとするベクトルを対象に本方法を適用した場合、データ処理装置100は秘匿加算計算を実行することができる。
本システムの適用は配電事業社、送電事業社の間の秘匿ベクトル計算に限られない。研究機関間、会社間、部署間等、さまざまな組織間の秘匿ベクトル内積計算に適用可能である。また、個人間の秘匿ベクトル内積計算にも適用可能である。
データ処理装置100は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記憶媒体に格納して配布し、該プログラムをコンピュータにインストールして、上述の処理を実行することによってデータ処理装置100を構成してもよい。また、インターネット等のネットワーク状のサーバ装置が備えるディスク装置に格納しておき、例えばコンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OSとアプリケーションソフトの共同より実現してもよい。また、コンピュータにダウンロード等してもよい。
上記のプログラムを記録する記録媒体としては、USBメモリ、CD、DVD、MO、SDカード、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気デープ等のコンピュータ読取り可能な記録媒体を使用することができる。また、HDD(ハードディスク)やSSD(ソリッドステートドライブ)等、通常、システム又は装置に固定して使用する記録媒体を使用することもできる。
1 秘匿ベクトル内積計算システム
100 データ処理装置
110 制御部
111 分割データ列作成部
112 暗号化分割データ列組作成部
113 演算適用後暗号化データ列作成部
114 結果統合部
115 結果復号部
116 最終結果算出部
120 通信部
130 記憶部
140 操作部
150 インタフェース部
200 通信線
300 データ記憶装置


Claims (10)

  1. 2以上のデータ処理装置で構成される秘匿ベクトル内積計算システムであって、前記データ処理装置は秘匿ベクトル内積計算処理Aか秘匿ベクトル内積計算処理Bを担当し、
    前記秘匿ベクトル内積計算処理Aを担当するデータ処理装置は、
    非公開データを記憶する非公開データ記憶手段と、
    前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶手段と、
    前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成手段と、
    前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化分割データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成手段と、
    他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得手段と、
    前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合手段とを有し、
    前記秘匿ベクトル内積計算処理Bを担当するデータ処理装置は、
    他のデータ処理装置により作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
    前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶手段と、
    他のデータ処理装置により作成された暗号化分割データ列組を取得する暗号化分割データ列組取得手段と、
    前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成手段とを有し、
    前記暗号化分割データ列作成手段では、
    前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
    前記結果統合手段では、
    前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
    ことを特徴とする秘匿ベクトル内積計算システム。
  2. 前記演算適用後暗号化データ列作成手段は、
    前記第1演算か前記第2演算列のうちの少なくとも1つは他のデータ処理装置に対し非公開とする、
    ことを特徴とする請求項1に記載の秘匿ベクトル内積計算システム。
  3. 前記演算適用後暗号化データ列作成手段は、
    前記第1演算と前記第2演算列の全てを他のデータ処理装置に対し非公開とする、
    ことを特徴とする請求項1に記載の秘匿ベクトル内積計算システム。
  4. 前記非公開データは、
    複数のデータブロックで構成されるベクトルデータであり、
    前記暗号鍵列記憶手段は、
    前記非公開データをデータブロックごとに暗号化するために使用する暗号鍵を並べた暗号鍵ベクトルの複数の並びである暗号鍵ベクトル列を記憶し、
    前記分割データ列作成手段は、
    前記非公開データの各データブロックを複数の分割データに分割し、データブロックごとの分割データを並べ分割データベクトルとし、分割データベクトルの並びである分割データベクトル列を作成し、
    前記暗号化分割データ組作成手段は、
    前記分割データベクトル列の各位置にある前記分割データベクトルを前記暗号鍵ベクトル列の同じ位置にある前記暗号鍵ベクトルで暗号化し、暗号化分割データベクトルを作成し、前記位置の要素とすることで暗号化分割データベクトル列を作成し、前記分割データベクトル列とは異なるデータベクトル列である第2データベクトル列を作成し、前記第2データベクトル列の各位置にあるデータベクトルを前記暗号鍵ベクトル列の前記位置にある前記暗号鍵ベクトルで暗号化し、暗号化データベクトルを作成し、作成した前記暗号化データベクトルを前記位置の要素とすることで暗号化データベクトル列を作成し、前記暗号化データベクトル列と前記暗号化データベクトル列を組として暗号化分割データベクトル列組を作成し、
    前記演算適用後暗号化データ列取得手段は、
    他のデータ処理装置により作成される演算適用後暗号化データベクトルを並べた演算適用後暗号化データベクトル列を取得し、
    前記結果統合手段は、
    前記演算適用後暗号化データベクトル列の各位置にある演算適用後暗号化データベクトルを前記暗号鍵ベクトル列の前記位置になる暗号鍵ベクトル、または、それに対応する復号鍵のベクトルで復号し、前記位置の要素とすることで演算適用後データベクトル列を作成し、前記演算適用後データベクトル列に属する要素を統合し、
    前記適用演算記憶手段は、
    他のデータ処理装置により作成された暗号化分割データベクトル列組に属する暗号化分割データベクトル列の全ベクトルの各ベクトル位置に適用する演算を並べた第1演算ベクトルと、
    前記暗号化分割データベクトル列組に属する暗号化データベクトル列に属する各ベクトルの各要素に適用する演算を並べベクトルとし、かつ、ベクトルを列状にならべた第2演算ベクトル列を記憶し、
    前記暗号化分割データ列組取得手段は、
    他のデータ処理装置により作成された暗号化分割データベクトル列組を取得し、
    前記演算適用後暗号化データ列作成手段は、
    前記暗号化分割データベクトル列組に属する前記暗号化分割データベクトル列の全位置の前記暗号化分割データベクトルの各位置の要素に前記第1演算ベクトルの前記位置の演算を適用し、第1演算結果ベクトルを作成し、前記暗号化分割データベクトル列組に属する暗号化データベクトル列の各列位置にある暗号化データベクトルの各ベクトル位置にある要素に第2演算ベクトル列の前記列位置にある演算ベクトルの前記ベクトル位置にある演算を適用し、第2演算結果ベクトルを作成し、前記第1演算結果ベクトルと前記第2演算結果ベクトルを統合し演算適用後暗号化データベクトルを作成し、前記演算適用後暗号化データベクトルを列に並べ演算適用後暗号化データベクトル列を作成し、
    前記暗号化分割データ列作成手段では、
    前記分割データベクトル列のある列位置にある分割データベクトルのあるベクトル位置にある要素が0または空である場合に、0を暗号化するのではなく他の値を前記暗号化分割データベクトル列の前記列位置のベクトルの前記ベクトル位置の要素とし、
    前記結果統合手段では、
    前記分割データベクトル列のある列位置のベクトルのあるベクトル位置の要素が0または空である場合に、取得した前記演算適用後暗号化データベクトル列の前記列位置のベクトルの前記ベクトル位置の要素を統合に使用せず、
    前記演算適用後暗号化データ列作成手段では、
    前記第1演算ベクトルか前記第2演算ベクトル列のうちの少なくとも1つは他のデータ処理装置に対し非公開とする、
    ことを特徴とする請求項1及至3のいずれか1項に記載の秘匿ベクトル内積計算システム。
  5. 他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
    前記データ処理装置は秘匿ベクトル内積計算処理Aか秘匿ベクトル内積計算処理Bを担当し、
    前記秘匿ベクトル内積計算処理Aを担当するデータ処理装置は、
    非公開データを記憶する非公開データ記憶手段と、
    前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶手段と、
    前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成手段と、
    前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成手段と、
    他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得手段と、
    前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合手段とを有し、
    前記秘匿ベクトル内積計算処理Bを担当するデータ処理装置は、
    他のデータ処理装置により作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
    前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶手段と、
    他のデータ処理装置により作成された暗号化分割データ列組を取得する暗号化分割データ列組取得手段と、
    前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成手段とを有し、
    前記暗号化分割データ列作成手段では、
    前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
    前記結果統合手段では、
    前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
    ことを特徴とするデータ処理装置。
  6. 他のデータ処理装置と連携してデータを処理するデータ処理装置により実行される秘匿ベクトル内積計算方法であって、
    非公開データを記憶する非公開データ記憶ステップと、
    前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶ステップと、
    前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成ステップと、
    前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成ステップと、
    他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得ステップと、
    前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合ステップとを有し、
    さらに、
    他のデータ処理装置により作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
    前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶ステップと、
    他のデータ処理装置により作成された暗号化分割データ列組を取得する暗号化分割データ列組取得ステップと、
    前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成ステップとを有し、
    前記暗号化分割データ列作成ステップでは、
    前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
    前記結果統合ステップでは、
    前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
    ことを特徴とする秘匿ベクトル内積計算方法。
  7. 他のコンピュータと連携してデータを処理するコンピュータにより実行される秘匿ベクトル内積計算プログラムであって、
    非公開データを記憶する非公開データ記憶ステップと、
    前記非公開データの暗号化に使用する複数の暗号鍵の並びである暗号鍵列を記憶する暗号鍵列記憶ステップと、
    前記非公開データを複数の分割データに分割し、分割データの並びである分割データ列を作成する分割データ列作成ステップと、
    前記分割データ列の各列位置にある前記分割データを前記暗号鍵列の同じ列位置にある前記暗号鍵で暗号化し、暗号化分割データを作成し、前記列位置の要素とすることで暗号化分割データ列を作成し、前記分割データ列とは異なる第2データ列を作成し、前記第2データ列の各列位置にあるデータを前記暗号鍵列の前記列位置にある前記暗号鍵で暗号化し、暗号化データを作成し、作成した前記暗号化データを前記列位置の要素とすることで暗号化データ列を作成し、前記暗号化データ列と前記暗号化データ列を組として暗号化分割データ列組を作成する暗号化分割データ列組作成ステップと、
    他のデータ処理装置により作成される演算適用後暗号化データを並べた演算適用後暗号化データ列を取得する演算適用後暗号化データ列取得ステップと、
    前記演算適用後暗号化データ列の各列位置にある演算適用後暗号化データを前記暗号鍵列の前記列位置にある暗号鍵、または、それに対応する復号鍵で復号し、前記列位置の要素とすることで演算適用後データ列を作成し、前記演算適用後データ列に属する演算適用後データを統合する結果統合ステップとを有し、
    さらに、
    他のコンピュータにより作成された暗号化分割データ列組に属する暗号化分割データ列の全列位置の要素に適用する演算である第1演算と、
    前記暗号化分割データ列組に属する暗号化データ列の各列位置の要素に適用する演算を列とした第2演算列を記憶する適用演算記憶ステップと、
    他のコンピュータにより作成された暗号化分割データ列組を取得する暗号化分割データ列組取得ステップと、
    前記暗号化分割データ列組に属する前記暗号化分割データ列の各列位置の前記暗号化分割データに前記第1演算を適用し、第1演算結果を作成し、前記暗号化分割データ列組に属する暗号化データ列の前記列位置にある暗号化データに第2演算列の前記列位置にある演算を適用し、第2演算結果を作成し、前記第1演算結果と前記第2演算結果を統合し、前記列位置の演算適用後暗号化データを作成し、演算適用後暗号化データを並べ演算適用後暗号化データ列を作成する演算適用後暗号化データ列作成ステップとを有し、
    前記暗号化分割データ列作成ステップでは、
    前記分割データ列のある列位置の分割データが0または空である場合に、前記暗号化分割データ列の前記列位置の要素を0以外の他の値とし、
    前記結果統合ステップでは、
    前記分割データ列のある列位置の分割データが0または空である場合に、取得した前記演算適用後暗号化データ列の前記列位置の前記演算適用後暗号化データを統合に使用しない、
    ことを特徴とする秘匿ベクトル内積計算プログラム。
  8. 請求項7に記載の秘匿ベクトル内積計算プログラムが記録されていることを特徴とするコンピュータ読み取り可能な記録媒体。
  9. 前記暗号化分割データ列組作成手段は、
    前記非公開データの内容に依存することなく、前記暗号化分割データ列組を定値とすることが可能であり、
    前記演算適用後暗号化データ列作成手段は、
    相手のデータ処理装置の非公開データの内容に依存することなく自己の保有する前記非公開データの内容のみによって前記演算適用後暗号化データ列を作成することが可能である、
    ことを特徴とする請求項1及至5のいずれか1項に記載の秘匿ベクトル内積計算システム。
  10. 前記結果統合手段は、
    ベクトル内積結果以外の自己の保有する前記非公開データの内容に依存して変化しない内容の統合結果を算出することが可能である、
    ことを特徴とする請求項1及至5、請求項9のいずれか1項に記載の秘匿ベクトル内積計算システム。

JP2015126166A 2014-06-25 2015-06-24 秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体 Pending JP2016027391A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015126166A JP2016027391A (ja) 2014-06-25 2015-06-24 秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014130775 2014-06-25
JP2014130775 2014-06-25
JP2015126166A JP2016027391A (ja) 2014-06-25 2015-06-24 秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体

Publications (1)

Publication Number Publication Date
JP2016027391A true JP2016027391A (ja) 2016-02-18

Family

ID=55352781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015126166A Pending JP2016027391A (ja) 2014-06-25 2015-06-24 秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体

Country Status (1)

Country Link
JP (1) JP2016027391A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019101083A (ja) * 2017-11-29 2019-06-24 国立研究開発法人情報通信研究機構 暗号化システム
JP2020016739A (ja) * 2018-07-25 2020-01-30 公立大学法人広島市立大学 秘匿演算変換システム、秘匿演算変換方法、および、秘匿演算変換プログラム
WO2020137728A1 (ja) * 2018-12-26 2020-07-02 国立大学法人筑波大学 分散データ統合装置、分散データ統合方法、及びプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019101083A (ja) * 2017-11-29 2019-06-24 国立研究開発法人情報通信研究機構 暗号化システム
JP2020016739A (ja) * 2018-07-25 2020-01-30 公立大学法人広島市立大学 秘匿演算変換システム、秘匿演算変換方法、および、秘匿演算変換プログラム
JP7219437B2 (ja) 2018-07-25 2023-02-08 公立大学法人広島市立大学 秘匿演算変換システム、秘匿演算変換方法、および、秘匿演算変換プログラム
WO2020137728A1 (ja) * 2018-12-26 2020-07-02 国立大学法人筑波大学 分散データ統合装置、分散データ統合方法、及びプログラム
JPWO2020137728A1 (ja) * 2018-12-26 2021-11-18 国立大学法人 筑波大学 分散データ統合装置、分散データ統合方法、及びプログラム
JP7209378B2 (ja) 2018-12-26 2023-01-20 国立大学法人 筑波大学 分散データ統合装置、分散データ統合解析装置、分散データ統合方法、及びプログラム
US11934558B2 (en) 2018-12-26 2024-03-19 University Of Tsukuba Distributed data integration device, distributed data integration method, and program

Similar Documents

Publication Publication Date Title
US9252942B2 (en) Method and system for secure multiparty cloud computation
US9426131B2 (en) Server apparatus and program to re-encrypt ciphertext data
WO2012067214A1 (ja) 情報処理装置、情報処理方法、及び、プログラム
JP6328333B2 (ja) 公開鍵暗号化システム
TW201448550A (zh) 使用遮罩之隱私保護脊狀回歸
EP3264671A1 (en) Key replacement direction control system, and key replacement direction control method
JP6974461B2 (ja) 幾何代数を用いた高度データ中心型暗号化システムのための方法およびシステム
JP6194886B2 (ja) 暗号化統計処理システム、復号システム、鍵生成装置、プロキシ装置、暗号化統計データ生成装置、暗号化統計処理方法、および、暗号化統計処理プログラム
JP6556955B2 (ja) 通信端末、サーバ装置、プログラム
JPWO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
JP2016529753A (ja) 鍵共有デバイス及び方法
JP6770075B2 (ja) 暗号化メッセージ検索方法、メッセージ送受信システム、端末、プログラム
JP2018502320A (ja) 公開鍵暗号化システム
KR102143525B1 (ko) 교집합 연산을 지원하는 함수 암호를 위한 방법 및 이를 이용한 장치
CN104158880A (zh) 一种用户端云数据共享解决方法
KR101697868B1 (ko) 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치
JP2016027391A (ja) 秘匿ベクトル内積計算システム、データ処理装置、秘匿ベクトル内積計算方法、秘匿ベクトル内積プログラム、および、記録媒体
JP6270683B2 (ja) 暗号システム、暗号方法、普遍再暗号化鍵生成装置及び再暗号化鍵生成装置
JP2018036418A (ja) 暗号システム、暗号方法及び暗号プログラム
CN111555880A (zh) 数据碰撞方法、装置、存储介质及电子设备
US11018857B2 (en) Encryption scheme using multiple parties
US20170310474A1 (en) Decryption condition addition device, cryptographic system, and decryption condition addition program
JP2017129644A (ja) 秘匿計算情報交換システム、データ処理装置、秘匿計算情報交換方法、秘匿計算情報交換プログラム、および、記録媒体
KR102284877B1 (ko) 효율적인 교집합 연산을 위한 함수 암호 기술
WO2022054130A1 (ja) 暗号システム、方法及びプログラム