説明

秘密計算システム、秘密計算方法、不正使用防止方法

【課題】利用時の情報漏洩のリスクを抑えたセキュリティーシステムを提供する。
【解決手段】本発明の第1の秘密計算システムは、garbled circuit GCを利用し、データ利用装置にデータdを知らせることなく、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)のみをデータ利用装置に与える。また、本発明の第2の秘密計算システムは、データ利用装置からデータdを秘密計算装置に渡した後は、データdに対するインデックスmのみがデータ利用装置に記録され、データd自体はデータ利用装置には残らない。そして、garbled circuit GCを利用し、データ利用装置にデータdを知らせることなく、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)のみを得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報漏洩を防止するための秘密計算システム、秘密計算方法、および情報の不正利用防止方法に関する。
【背景技術】
【0002】
情報漏洩を防ぐ方法として、データ保管時の暗号化や秘密分散といった手法が従来技術として知られている。また、秘密計算の方法として、非特許文献1の方法などがある。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Koji Chida and Katsumi Takahashi: Privacy Preserving Computations without Public Key Cryptographic Operation, Proc. of IWSEC 2008, pp.184-200.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、保管データを利用する際は通常データを復元するため、情報漏洩のリスクが高まる。本発明の目的は、利用時の情報漏洩のリスクを抑えたセキュリティーシステムを提供することである。
【課題を解決するための手段】
【0005】
本発明の第1の秘密計算システムは、M個のデータ提供装置、データ利用装置、秘密計算装置からなり、データd(ただし、dはNビット以下)を利用方法Eに対応する論理回路Cに入力したときの出力C(d)(ただし、C(d)はQビット以下)を求める秘密計算システムである。まず、Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとする。m番目のデータ提供装置は、データ提供記録部、データ提供鍵取得部、データ提供乱数生成部、データ提供第1暗号化部、データ提供第2暗号化部、データ提供送信部を備える。データ利用装置は、データ利用鍵生成部、データ利用受信部、データ利用記録部、データ利用送信部、データ利用復号部、データ利用実行部を備える。秘密計算装置は、秘密計算鍵生成部、秘密計算受信部、秘密計算復号部、論理回路生成部、garbled circuit生成部、秘密計算送信部を備える。
【0006】
データ提供記録部は、Nビット以下のデータdを記録する。データ提供鍵取得部は、データ利用装置の公開鍵pkと秘密計算装置の公開鍵pkを取得する。データ提供乱数生成部は、2N個の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を生成する。データ提供第1暗号化部は、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を、公開鍵pkを用いて暗号化し、暗号文CA,mとする。データ提供第2暗号化部は、rm,1,dm[1],…,rm,N,dm[N]を、データ利用装置の公開鍵で暗号化し、暗号文CB,mとする。データ提供送信部は、暗号文CA,mと暗号文CB,mを、データ利用装置に送信する。データ利用鍵生成部は、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する。データ利用受信部は、暗号文CA,mと暗号文CB,m、およびgarbled circuit GCを受信する。データ利用記録部は、暗号文CA,mと暗号文CB,mを記録する。データ利用送信部は、データdの利用方法Eと暗号文CA,mとを秘密計算装置に送信する。なお、利用方法Eは1つのデータdの利用方法でなく、複数のデータの利用方法でもよい。この場合は、利用送信部は、複数のデータの利用方法Eと利用対象のデータに対応する複数の暗号文CA,mとを秘密計算装置に送信する。“データdの利用方法E”とは、複数のデータの利用方法も含んでおり、“暗号文CA,mとを秘密計算装置に送信する”とは、1つ以上の暗号文CA,mを秘密計算装置に送信する意味である。データ利用復号部は、秘密鍵skを用いて暗号文CB,mを復号し、rm,1,dm[1],…,rm,N,dm[N]を得る。なお、複数のデータを利用する場合は、複数の暗号文CB,mを復号する。データ利用実行部はrm,1,dm[1],…,rm,N,dm[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求める。なお、複数のデータを利用するときは、データの数に応じた乱数とgarbled circuit GCを用いてC(dm1,…,dmx)を求める。ただし、xはデータの数とする。秘密計算鍵生成部は、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する。秘密計算受信部は、利用方法Eと暗号文CA,mとを受信する。なお、利用方法Eとは、データdを用いて行う演算などの処理を意味する。秘密計算復号部は、秘密鍵skを用いて暗号文CA,mを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を得る。なお、複数の暗号文CA,mを復号したときには、乱数の数が2Nの複数倍となる。利用するデータが複数ある場合には、乱数の数は利用するデータの数に応じて決めればよい。つまり、秘密計算復号部は、少なくとも1つの暗号文CA,mを復号し、少なくとも乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を得る。論理回路生成部は、利用方法Eの論理回路Cを生成する。garbled circuit生成部は、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、rm,n,dm[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成する。なお、複数のデータを利用するときは、データの数に応じた乱数を用いて、garbled circuit GCを生成する。つまり、garbled circuit生成部は、少なくとも乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、garbled circuit GCを生成する。秘密計算送信部は、garbled circuit GCをデータ利用装置に送信する。
【0007】
本発明の第2の秘密計算システムは、データ利用装置と秘密計算装置からなり、データd(ただし、dはNビット以下)を利用方法Eに対応する論理回路Cに入力したときの出力C(d)(ただし、C(d)はQビット以下)を求める秘密計算システムである。まず、Nを1以上の整数、nを1以上N以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとする。データ利用装置は、データ提供記録部、データ提供鍵取得部、データ提供乱数生成部、インデックス作成部、データ提供第1暗号化部、データ提供送信部、データ利用記録部、情報破棄部、データ利用送信部、データ利用受信部、データ利用実行部を備える。秘密計算装置は、秘密計算鍵生成部、秘密計算受信部、秘密計算復号部、秘密計算記録部、論理回路生成部、garbled circuit生成部、秘密計算送信部を備える。
【0008】
データ提供記録部は、Nビット以下のデータdを記録する。データ提供鍵取得部は、秘密計算装置の公開鍵pkを取得する。データ提供乱数生成部は、2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成する。インデックス作成部は、データdを示すインデックスmを作成する。データ提供第1暗号化部は、乱数(r1,0,r1,1),…,(rN,0,rN,1)を、公開鍵pkを用いて暗号化し、暗号文Cとする。データ提供送信部は、暗号文Cとインデックスmを秘密計算装置に送信する。データ利用記録部は、インデックスmとr1,d[1],…,rN,d[N]を記録する。情報破棄部は、データdと乱数(r1,0,r1,1),…,(rN,0,rN,1)を破棄する。データ利用送信部は、データdの利用方法Eとインデックスmとを秘密計算装置に送信する。データ利用受信部は、garbled circuit GCを受信する。データ利用実行部は、r1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求める。秘密計算鍵生成部は、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する。秘密計算受信部は、暗号文Cとインデックスm、または利用方法Eとインデックスmとを受信する。秘密計算復号部は、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)を得る。秘密計算記録部は、乱数(r1,0,r1,1),…,(rN,0,rN,1)または暗号文Cを、インデックスmと対応付けて記録する。論理回路生成部は、利用方法Eの論理回路Cを生成する。garbled circuit生成部は、乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成する。秘密計算送信部は、garbled circuit GCをデータ利用装置に送信する。
【0009】
なお、どちらの秘密計算システムも、以下のようにシステムの一部を変更することで、データの利用方法を制限できる。まず、データ提供記録部が利用条件Lも記録しておく。データ提供第1暗号化部が、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを、公開鍵pkを用いて暗号化し、暗号文Cとする。そして、秘密計算復号部は、暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを得る。また、秘密計算装置には、利用条件確認部も備えておき、利用方法Eが利用条件Lを満たしているかを確認する。
【発明の効果】
【0010】
本発明の第1の秘密計算システムによれば、データ利用装置にデータdを知らせることなく、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)のみをデータ利用装置に与えることができる。また、本発明の第2の秘密計算システムによれば、データ利用装置からデータdを秘密計算装置に渡した後は、データdに対するインデックスmのみがデータ利用装置に記録され、データd自体はデータ利用装置には残らない。そして、データ利用装置はデータdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)のみを得ることができる。したがって、データを利用するときにデータ利用装置から情報が漏洩するリスクがない。
【0011】
さらに、利用条件も含めたシステムの場合、データ利用装置からの利用方法を制限できるので、データの不正使用を防ぐこともできる。
【図面の簡単な説明】
【0012】
【図1】実施例1の秘密計算システムの機能構成例を示す図。
【図2】実施例1の秘密計算システムの処理フローを示す図。
【図3】実施例2と実施例2変形例の秘密計算システムの機能構成例を示す図。
【図4】実施例2の秘密計算システムの処理フローを示す図。
【図5】実施例2変形例の秘密計算システムの処理フローを示す図。
【図6】実施例3の秘密計算システムの機能構成例を示す図。
【図7】実施例3の秘密計算システムの処理フローを示す図。
【図8】実施例4と実施例4変形例の秘密計算システムの機能構成例を示す図。
【図9】実施例4の秘密計算システムの処理フローを示す図。
【図10】実施例4変形例の秘密計算システムの処理フローを示す図。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0014】
図1に実施例1の秘密計算システムの機能構成例を、図2に実施例1の秘密計算システムの処理フローを示す。実施例1の秘密計算システムは、M個のデータ提供装置100,…,100、データ利用装置200、秘密計算装置300からなり、データd(ただし、dはNビット以下)を利用方法Eに対応する論理回路Cに入力したときの出力C(d)(ただし、C(d)はQビット以下)を求める。ここで、Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとする。なお、Q=N,q=nとしてもよい。
【0015】
m番目のデータ提供装置100は、データ提供鍵取得部110、データ提供乱数生成部120、データ提供第1暗号化部130、データ提供第2暗号化部140、データ提供送信部150、データ提供記録部190を備える。データ利用装置200は、データ利用鍵生成部210、データ利用受信部220、データ利用送信部230、データ利用復号部240、データ利用実行部250、データ利用記録部290を備える。秘密計算装置300は、秘密計算鍵生成部310、秘密計算受信部320、秘密計算復号部330、論理回路生成部340、garbled circuit生成部350、秘密計算送信部360、秘密計算記録部390を備える。
【0016】
データ提供装置100のデータ提供記録部190は、Nビット以下のデータdをあらかじめ記録しておく。データ利用装置200のデータ利用鍵生成部210は、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する(S210)。秘密計算鍵生成部310は、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する(S310)。そして、データ提供装置100のデータ提供鍵取得部110は、データ利用装置200の公開鍵pkと秘密計算装置300の公開鍵pkを取得する(S110)。
【0017】
データ提供乱数生成部120は、2N個の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を生成する(S120)。データ提供第1暗号化部130は、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を、公開鍵pkを用いて暗号化し、暗号文CA,mとする(S130)。データ提供第2暗号化部140は、rm,1,dm[1],…,rm,N,dm[N]を、データ利用装置の公開鍵で暗号化し、暗号文CB,mとする(140)。データ提供送信部150は、暗号文CA,mと暗号文CB,mを、データ利用装置200に送信する(S150)。データ利用装置200のデータ利用受信部220は、暗号文CA,mと暗号文CB,mを受信し、データ利用記録部290に暗号文CA,mと暗号文CB,mを記録する(S221)。データ利用送信部230は、データdの利用方法Eと暗号文CA,mとを秘密計算装置300に送信する(S230)。なお、利用方法Eは1つのデータdの利用方法でなく、複数のデータの利用方法でもよい。この場合は、利用送信部は、複数のデータの利用方法Eと利用対象のデータに対応する複数の暗号文CA,mとを秘密計算装置に送信する。秘密計算装置300の秘密計算受信部320は、利用方法Eと暗号文CA,mとを受信し、秘密計算記録部390に記録する(S320)。なお、利用方法Eとは、データdを用いて行う演算などの処理を意味する。
【0018】
秘密計算復号部330は、秘密鍵skを用いて暗号文CA,mを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を得る(S330)。なお、複数の暗号文CA,mを復号したときには、乱数の数が2Nの複数倍となる。以下の説明でも、乱数の数は2Nとして説明するが、利用するデータが複数ある場合には、乱数の数は利用するデータの数に応じて決めればよい。論理回路生成部340は、利用方法Eの論理回路Cを生成する(S340)。garbled circuit生成部350は、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、rm,n,dm[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成する(S350)。なお、複数のデータを利用するときは、データの数に応じた乱数を用いて、garbled circuit GCを生成する。また、garbled circuit GCを生成する方法については、非特許文献1(3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluation)に詳しく説明されている。
【0019】
秘密計算送信部360は、garbled circuit GCをデータ利用装置に送信する(S360)。データ利用装置200のデータ利用受信部220は、garbled circuit GCを受信する(S222)。データ利用復号部240は、秘密鍵skを用いて暗号文CB,mを復号し、rm,1,dm[1],…,rm,N,dm[N]を得る(S240)。なお、複数のデータを利用する場合は、複数の暗号文CB,mを復号する。データ利用実行部250はrm,1,dm[1],…,rm,N,dm[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求める(S250)。なお、複数のデータを利用するときは、データの数に応じた乱数とgarbled circuit GCを用いてC(dm1,…,dmx)を求める。ただし、xはデータの数とする。したがって、データ利用装置200はC(d)を得ることができる。
【0020】
このように、本実施例の秘密計算システムによれば、データ利用装置にデータdを知らせることなく、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)のみをデータ利用装置に与えることができる。したがって、データを利用するときにデータ利用装置から情報が漏洩するリスクがない。
【0021】
[変形例]
実施例1では、非特許文献1に記載されているgarbled circuitを用いることを前提に説明した。しかし、非特許文献1のgarbled circuitの考え方をより一般的にしてもよい。たとえば、2つの断片的な情報を断片Z、Zとし、2つの断片Z、Zの両方が分かった場合にデータdが復元できるとする。このような断片Z、Zを用意すれば、非特許文献1のgarbled circuitに限定する必要はない。断片Zは実施例1の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)に相当する情報、断片Zは実施例1のrm,1,dm[1],…,rm,N,dm[N]に相当する情報である。言い換えれば、実施例1の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)は断片Zの1つの例であり、実施例1のrm,1,dm[1],…,rm,N,dm[N]は断片Zの1つの例である。
【0022】
図1に本変形例の秘密計算システムの機能構成例を、図2に本変形例の秘密計算システムの処理フローをしめす。本変形例では、実施例1のgarbled circuit生成部350の変わりに、錯乱回路生成部350”を備えている。また、データ提供乱数生成部120”、データ提供第1暗号化部130”、データ提供第2暗号化部140”、秘密計算復号部330”、秘密計算送信部360”、データ利用受信部220”、データ利用復号部240”、データ利用実行部250”が異なる。
【0023】
以下に、実施例1と本変形例との違いを説明する。データ提供乱数生成部120”は、2個の断片Z,Zを生成する(S120”)。データ提供第1暗号化部130”は、断片Zを公開鍵pkを用いて暗号化し、暗号文CA,mとする(S130”)。データ提供第2暗号化部140”は、断片Zをデータ利用装置の公開鍵で暗号化し、暗号文CB,mとする(140”)。
【0024】
秘密計算復号部330”は、秘密鍵skを用いて暗号文CA,mを復号し、断片Zを得る(S330”)。錯乱回路生成部350”は、断片Zを用いて、断片Zが入力されたときにC(d)[q]を出力する錯乱回路ZCを生成する(S350”)。錯乱回路ZCが、実施例1のgarbled circuit GCに相当する。言い換えると、garbled circuit GCは錯乱回路ZCの1つの例である。秘密計算送信部360”は、錯乱回路ZCをデータ利用装置200”に送信する(S360”)。データ利用装置200”のデータ利用受信部220”は、錯乱回路ZCを受信する(S222”)。データ利用復号部240”は、秘密鍵skを用いて暗号文CB,mを復号し、断片Zを得る(S240”)。データ利用実行部250”は断片Zと錯乱回路ZCを用いてC(d)[1],…,C(d)[Q]を求める(S250”)。その他の構成、処理フローは同じである。したがって、データ利用装置200はC(d)を得ることができる。
【実施例2】
【0025】
実施例2の秘密計算システムは、データ利用装置から秘密計算装置に対してデータを提供しておき、その後、提供したデータを利用した結果を、データ利用装置が秘密計算装置から受け取るシステムである。したがって、1つのデータ利用装置が、データ提供装置としての機能とデータ利用装置としての機能とを有する。例えば、機密性の高いデータの管理者(数が少ない)がデータ利用装置からデータを入力し、データの利用者(管理者とは別の人であって、一般に管理者よりも人数が多い)がデータ利用装置でそのデータを利用する場合などに有効なシステムである。
【0026】
図3に実施例2の秘密計算システムの機能構成例を、図4に実施例2の秘密計算システムの処理フローを示す。実施例2の秘密計算システムは、データ利用装置400と秘密計算装置600からなり、データd(ただし、dはNビット以下)を利用方法Eに対応する論理回路Cに入力したときの出力C(d)(ただし、C(d)はQビット以下)を求める秘密計算システムである。ここで、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとする。なお、Q=N,q=nでとしてもよい。データ利用装置400は、データ提供鍵取得部410、データ提供乱数生成部420、インデックス作成部425、データ提供第1暗号化部430、データ提供送信部450、情報破棄部460、データ提供記録部490、データ利用送信部530、データ利用受信部520、データ利用実行部550、データ利用記録部590を備える。秘密計算装置600は、秘密計算鍵生成部310、秘密計算受信部620、秘密計算復号部630、論理回路生成部340、garbled circuit生成部650、秘密計算送信部360、秘密計算記録部690を備える。
【0027】
まず、データ利用装置400でデータを提供する処理について説明する。データ提供記録部490に、Nビット以下のデータdを記録しておく。そして、秘密計算装置600の秘密計算鍵生成部310が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する(S310)。データ提供鍵取得部410は、秘密計算装置600の公開鍵pkを取得する(S410)。データ提供乱数生成部420は、2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成する(S420)。インデックス作成部425は、データdを示すインデックスmを作成する(S425)。データ提供第1暗号化部430は、乱数(r1,0,r1,1),…,(rN,0,rN,1)を、公開鍵pkを用いて暗号化し、暗号文Cとする(S430)。データ提供送信部450は、暗号文Cとインデックスmを秘密計算装置600に送信する(S450)。データ利用記録部590が、前記インデックスmとr1,d[1],…,rN,d[N]を記録する(S455)。情報破棄部460は、データdと乱数(r1,0,r1,1),…,(rN,0,rN,1)を破棄する(S460)。
【0028】
秘密計算装置600の秘密計算受信部620は、暗号文Cとインデックスmを受信する(S620)。秘密計算復号部630は、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)を求め(S630)、秘密計算記録部690に乱数(r1,0,r1,1),…,(rN,0,rN,1)をインデックスmと対応付けて記録する(S622)。ここまでが、データ利用装置400がデータ提供装置として機能する処理である。上述のとおり、データdの情報を秘密計算装置600に送信した後は、データdに対するインデックスmのみがデータ利用装置400に残り、データd自体は消去されている。したがって、データdの利用者が不正にデータdを入手することできない。また、データ利用装置がコンピュータ・ウィルスに感染した場合であっても、データdが外部に漏れる心配がない。
【0029】
次に、データ利用装置400で実際にデータを利用する処理を説明する。データ利用装置400のデータ利用送信部530は、データdの利用方法Eとインデックスmとを秘密計算装置600に送信する(S530)。秘密計算装置600の秘密計算受信部620は、利用方法Eとインデックスmとを受信する(S625)。論理回路生成部340は、利用方法Eの論理回路Cを生成する(S340)。garbled circuit生成部650は、乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成する(S650)。なお、garbled circuit GCを生成する方法については、非特許文献1(3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluation)に詳しく説明されている。
【0030】
秘密計算送信部360は、garbled circuit GCをデータ利用装置400に送信する(S360)。データ利用装置400のデータ利用受信部520は、garbled circuit GCを受信する(S522)。データ利用実行部550は、r1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求める(S550)。したがって、データ利用装置200はC(d)を得ることができる。
【0031】
このように、本実施例の秘密計算システムによれば、データ利用装置からデータdを秘密計算装置に渡した後は、データdに対するインデックスmのみがデータ利用装置に記録され、データd自体はデータ利用装置には残らない。そして、データ利用装置はデータdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)のみを得ることができる。したがって、データを利用するときにデータ利用装置から情報が漏洩するリスクがない。
【0032】
[変形例]
実施例2では、秘密計算装置600は、ステップS620の後、暗号文Cを復号した上で、乱数(r1,0,r1,1),…,(rN,0,rN,1)をインデックスmと対応付けて記録した。しかし、ステップS620の後、暗号文Cをインデックスmと対応付けて記録しておき、必要に応じて暗号文Cを復号してもよい。図5は、このように処理する場合の処理フローを示している。具体的には、ステップS620の後、秘密計算装置600の秘密計算記録部690は、暗号文Cをインデックスmと対応付けて記録する。また、ステップS625の後、秘密計算装置600の秘密計算復号部630は、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)を求める(S630)。そして、論理回路生成部340が、利用方法Eの論理回路Cを生成する(S340)。その他の処理は、実施例2と同じである。したがって、実施例2と同じ効果が得られる。
【実施例3】
【0033】
実施例3では、実施例1の秘密計算システムをベースとして、データの不正利用も防止できる秘密計算システムについて説明する。図6に実施例3の秘密計算システムの機能構成例を、図7に実施例3の秘密計算システムの処理フローを示す。実施例3の秘密計算システムは、M個のデータ提供装置100’,…,100’、データ利用装置200、秘密計算装置300’からなり、データ利用装置200のデータdの利用方法を制限した上で、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める。ここで、Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとする。
【0034】
m番目のデータ提供装置100’は、データ提供鍵取得部110、データ提供乱数生成部120、データ提供第1暗号化部130’、データ提供第2暗号化部140、データ提供送信部150、データ提供記録部190’を備える。データ利用装置200は、データ利用鍵生成部210、データ利用受信部220、データ利用送信部230、データ利用復号部240、データ利用実行部250、データ利用記録部290を備える。秘密計算装置300’は、秘密計算鍵生成部310、秘密計算受信部320、秘密計算復号部330’、論理回路生成部340、garbled circuit生成部350、秘密計算送信部360、利用条件確認部370、秘密計算記録部390’を備える。データ提供装置100’は、実施例1とデータ提供第1暗号化部130’、データ提供記録部190’の処理内容が異なる。データ利用装置200は実施例1と同じである。秘密計算装置300’は、実施例1と秘密計算復号部330’、秘密計算記録部390’の処理内容が異なり、利用条件確認部370が追加されている。
【0035】
以下に、実施例1との違いを説明する。データ提供記録部190’が利用条件Lも記録しておく。データ提供第1暗号化部130’が、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1),利用条件Lを、公開鍵pkを用いて暗号化し、暗号文Cとする(S130’)。そして、秘密計算復号部330’は、暗号文Cを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1),利用条件Lを得る(S330’)。そして、ステップS330’の次に秘密計算装置300’の利用条件確認部370が、利用方法Eが利用条件Lを満たしているかを確認し、満たしている場合にはステップS340に進み、満たしていない場合には処理を終了する(S370)。なお、利用条件Lとは、例えば、「実行者」、「データ数」、「演算種別」などのカテゴリに分け、
=(NTT,>10000,平均値)
とした場合、「NTT社員が実行者(ログインしたユーザ)であり、10000データ以上の平均値演算」を行う場合に限り利用を認めるというように設定すればよい。
【0036】
実施例3はこのような構成なので、実施例1の効果に加え、データ利用装置200が、許可されていない利用方法でデータdを利用することを防止できる。したがって、データの不正利用を防ぐことができる。
【実施例4】
【0037】
実施例4では、実施例2の秘密計算システムをベースとして、データの不正利用も防止できる秘密計算システムについて説明する。図8に実施例4の秘密計算システムの機能構成例を、図9に実施例4の秘密計算システムの処理フローを示す。実施例4の秘密計算システムは、データ利用装置400’と秘密計算装置600’からなり、データ利用装置400’のデータdの利用方法を制限した上で、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算システムである。ここで、Nを1以上の整数、nを1以上N以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとする。データ利用装置400’は、データ提供鍵取得部410、データ提供乱数生成部420、インデックス作成部425、データ提供第1暗号化部430’、データ提供送信部450、情報破棄部460’、データ提供記録部490’、データ利用送信部530、データ利用受信部520、データ利用実行部550、データ利用記録部590を備える。秘密計算装置600’は、秘密計算鍵生成部310、秘密計算受信部620、秘密計算復号部630’、論理回路生成部340、garbled circuit生成部650、秘密計算送信部360、利用条件確認部370、秘密計算記録部690’を備える。データ利用装置400’は、実施例2とデータ提供第1暗号化部430’、情報破棄部460’、データ提供記録部490’の処理内容が異なる。秘密計算装置600’は、実施例2と秘密計算復号部630’、秘密計算記録部690’の処理内容が異なり、利用条件確認部370が追加されている。
【0038】
以下に、実施例2との違いを説明する。データ提供記録部490’が利用条件Lも記録しておく。データ提供第1暗号化部430’が、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを、公開鍵pkを用いて暗号化し、暗号文Cとする(S430’)。また、情報破棄部460’は、データd、乱数(r1,0,r1,1),…,(rN,0,rN,1)、利用条件Lを破棄する(S460’)。そして、秘密計算復号部630’は、暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを得る(S630’)。そして、ステップS625の次に秘密計算装置600’の利用条件確認部370が、利用方法Eが利用条件Lを満たしているかを確認し、満たしている場合にはステップS340に進み、満たしていない場合には処理を終了する(S370)。
【0039】
実施例4はこのような構成なので、実施例2の効果に加え、データ利用装置400’が、許可されていない利用方法でデータdを利用することを防止できる。したがって、データの不正利用を防ぐことができる。
【0040】
[変形例]
実施例4では、秘密計算装置600’は、ステップS620の後、暗号文Cを復号した上で、乱数(r1,0,r1,1),…,(rN,0,rN,1)をインデックスmと対応付けて記録した。しかし、ステップS620の後、暗号文Cをインデックスmと対応付けて記録しておき、必要に応じて暗号文Cを復号してもよい。図10は、このように処理する場合の処理フローを示している。具体的には、ステップS620の後、秘密計算装置600’の秘密計算記録部690’は、暗号文Cをインデックスmと対応付けて記録する。また、ステップS625の後、秘密計算装置600の秘密計算復号部630’は、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)、利用条件Lを求める(S630’)。そして、利用条件確認部370が、利用方法Eが利用条件Lを満たしているかを確認する(S370)。その他の処理は、実施例4と同じである。したがって、実施例2と同じ効果が得られる。
【0041】
プログラム、記録媒体
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0042】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0043】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0044】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【0045】
本発明は、システム内のデータの漏洩防止、および不正使用防止に利用できる。
【符号の説明】
【0046】
100、100’ 100” データ提供装置 110、410 データ提供鍵取得部
120、120”、420 データ提供乱数生成部
130、130’、130”、430、430’ データ提供第1暗号化部
140、140” データ提供第2暗号化部
150、450 データ提供送信部
190、190’、490、490’ データ提供記録部
200、200”、400、400’ データ利用装置
210 データ利用鍵生成部 220、220”、520 データ利用受信部
230、530 データ利用送信部 240、240” データ利用復号部
250、250”、550 データ利用実行部
290、590 データ利用記録部
300、300’、600、600’ 秘密計算装置
310 秘密計算鍵生成部 320、620 秘密計算受信部
330、330’、330”、630、630’ 秘密計算復号部
340 論理回路生成部 350、650 garbled circuit生成部
350” 錯乱回路生成部
360、360” 秘密計算送信部 370 利用条件確認部
390、390’、690、690’ 秘密計算記録部
425 インデックス作成部 460 情報破棄部

【特許請求の範囲】
【請求項1】
M個のデータ提供装置、データ利用装置、秘密計算装置からなり、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算システムであって、
Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
m番目の前記データ提供装置は、
Nビット以下のデータdを記録するデータ提供記録部と、
前記データ利用装置の公開鍵pkと前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得部と、
2N個の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を生成するデータ提供乱数生成部と、
前記乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を、前記公開鍵pkを用いて暗号化し、暗号文CA,mとするデータ提供第1暗号化部と、
m,1,dm[1],…,rm,N,dm[N]を、前記データ利用装置の公開鍵で暗号化し、暗号文CB,mとするデータ提供第2暗号化部と、
暗号文CA,mと暗号文CB,mを、前記データ利用装置に送信するデータ提供送信部と
を備え、
前記データ利用装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開するデータ利用鍵生成部と、
暗号文CA,mと暗号文CB,m、およびgarbled circuit GCを受信するデータ利用受信部と、
暗号文CA,mと暗号文CB,mを記録するデータ利用記録部と、
データdの利用方法Eと暗号文CA,mとを前記秘密計算装置に送信するデータ利用送信部と、
秘密鍵skを用いて暗号文CB,mを復号し、rm,1,dm[1],…,rm,N,dm[N]を得るデータ利用復号部と、
m,1,dm[1],…,rm,N,dm[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成部と、
利用方法Eと暗号文CA,mとを受信する秘密計算受信部と、
秘密鍵skを用いて暗号文CA,mを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を得る秘密計算復号部と、
利用方法Eの論理回路Cを生成する論理回路生成部と、
乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、rm,n,dm[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成部と、
garbled circuit GCを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項2】
M個のデータ提供装置、データ利用装置、秘密計算装置からなり、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算システムであって、
Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
m番目の前記データ提供装置は、
Nビット以下のデータdを記録するデータ提供記録部と、
前記データ利用装置の公開鍵pkと前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得部と、
両方が分かればデータdが分かる断片Z、Zを生成するデータ提供乱数生成部と、
断片Zを、前記公開鍵pkを用いて暗号化し、暗号文CA,mとするデータ提供第1暗号化部と、
断片Zを、前記データ利用装置の公開鍵で暗号化し、暗号文CB,mとするデータ提供第2暗号化部と、
暗号文CA,mと暗号文CB,mを、前記データ利用装置に送信するデータ提供送信部と
を備え、
前記データ利用装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開するデータ利用鍵生成部と、
暗号文CA,mと暗号文CB,m、および錯乱回路ZCを受信するデータ利用受信部と、
暗号文CA,mと暗号文CB,mを記録するデータ利用記録部と、
データdの利用方法Eと暗号文CA,mとを前記秘密計算装置に送信するデータ利用送信部と、
秘密鍵skを用いて暗号文CB,mを復号し、断片Zを得るデータ利用復号部と、
断片Zと錯乱回路ZCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成部と、
利用方法Eと暗号文CA,mとを受信する秘密計算受信部と、
秘密鍵skを用いて暗号文CA,mを復号し、断片Zを得る秘密計算復号部と、
利用方法Eの論理回路Cを生成する論理回路生成部と、
断片Zを用いて、断片Zが入力されたときにC(d)[q]を出力する錯乱回路ZCを生成する錯乱回路生成部と、
錯乱回路ZCを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項3】
データ利用装置と秘密計算装置からなり、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算システムであって、
Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
前記データ利用装置は、
Nビット以下のデータdを記録するデータ提供記録部と、
前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得部と、
2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成するデータ提供乱数生成部と、
データdを示すインデックスmを作成するインデックス作成部と、
前記乱数(r1,0,r1,1),…,(rN,0,rN,1)を、前記公開鍵pkを用いて暗号化し、暗号文Cとするデータ提供第1暗号化部と、
暗号文Cとインデックスmを前記秘密計算装置に送信するデータ提供送信部と、
前記インデックスmとr1,d[1],…,rN,d[N]を記録するデータ利用記録部と、
データdと乱数(r1,0,r1,1),…,(rN,0,rN,1)を破棄する情報破棄部と、
データdの利用方法Eとインデックスmとを前記秘密計算装置に送信するデータ利用送信部と、
garbled circuit GCを受信するデータ利用受信部と、
1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成部と、
暗号文Cとインデックスm、または利用方法Eとインデックスmとを受信する秘密計算受信部と、
秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)を得る秘密計算復号部と、
乱数(r1,0,r1,1),…,(rN,0,rN,1)または暗号文Cを、インデックスmと対応付けて記録する秘密計算記録部と、
利用方法Eの論理回路Cを生成する論理回路生成部と、
乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成部と、
garbled circuit GCを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項4】
M個のデータ提供装置、データ利用装置、秘密計算装置からなり、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算システムであって、
Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
m番目の前記データ提供装置は、
Nビット以下のデータdと、データdの利用条件Lを記録するデータ提供記録部と、
前記データ利用装置の公開鍵pkと前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得部と、
2N個の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を生成するデータ提供乱数生成部と、
前記乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1),利用条件Lを、前記公開鍵pkを用いて暗号化し、暗号文CA,mとするデータ提供第1暗号化部と、
m,1,dm[1],…,rm,N,dm[N]を、前記データ利用装置の公開鍵で暗号化し、暗号文CB,mとするデータ提供第2暗号化部と、
暗号文CA,mと暗号文CB,mを、前記データ利用装置に送信するデータ提供送信部と
を備え、
前記データ利用装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開するデータ利用鍵生成部と、
暗号文CA,mと暗号文CB,m、およびgarbled circuit GCを受信するデータ利用受信部と、
暗号文CA,mと暗号文CB,mを記録するデータ利用記録部と、
データdの利用方法Eと暗号文CA,mとを前記秘密計算装置に送信するデータ利用送信部と、
秘密鍵skを用いて暗号文CB,mを復号し、rm,1,dm[1],…,rm,N,dm[N]を得るデータ利用復号部と、
m,1,dm[1],…,rm,N,dm[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成部と、
利用方法Eと暗号文CA,mとを受信する秘密計算受信部と、
秘密鍵skを用いて暗号文CA,mを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1),利用条件Lを得る秘密計算復号部と、
利用方法Eが利用条件Lを満たしているかを確認する利用条件確認部と、
利用方法Eの論理回路Cを生成する論理回路生成部と、
乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、rm,n,dm[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成部と、
garbled circuit GCを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項5】
データ利用装置と秘密計算装置からなり、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算システムであって、
Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
前記データ利用装置は、
Nビット以下のデータdと、データdの利用条件Lを記録するデータ提供記録部と、
前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得部と、
2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成するデータ提供乱数生成部と、
データdを示すインデックスmを作成するインデックス作成部と、
前記乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを、前記公開鍵pkを用いて暗号化し、暗号文Cとするデータ提供第1暗号化部と、
暗号文Cとインデックスmを前記秘密計算装置に送信するデータ提供送信部と、
前記インデックスmとr1,d[1],…,rN,d[N]を記録するデータ利用記録部と、
データd、乱数(r1,0,r1,1),…,(rN,0,rN,1)、利用条件Lを破棄する情報破棄部と、
データdの利用方法Eとインデックスmとを前記秘密計算装置に送信するデータ利用送信部と、
garbled circuit GCを受信するデータ利用受信部と、
1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成部と、
暗号文Cとインデックスm、または利用方法Eとインデックスmとを受信する秘密計算受信部と、
秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを得る秘密計算復号部と、
乱数(r1,0,r1,1),…,(rN,0,rN,1)と利用条件L、もしくは、暗号文Cを、インデックスmと対応付けて記録する秘密計算記録部と、
利用方法Eが利用条件Lを満たしているかを確認する利用条件確認部と、
利用方法Eの論理回路Cを生成する論理回路生成部と、
乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成部と、
garbled circuit GCを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項6】
M個のデータ提供装置、データ利用装置、秘密計算装置を用いて、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算方法であって、
Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
m番目の前記データ提供装置において、
データ提供記録部が、あらかじめNビット以下のデータdを記録しておき、
前記データ利用装置において、
データ利用鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開するデータ利用鍵生成ステップと、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
m番目の前記データ提供装置において、
データ提供鍵取得部が、前記データ利用装置の公開鍵pkと前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、2N個の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を生成するデータ提供乱数生成ステップと、
データ提供第1暗号化部が、前記乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を、前記公開鍵pkを用いて暗号化し、暗号文CA,mとするデータ提供第1暗号化ステップと、
データ提供第2暗号化部が、rm,1,dm[1],…,rm,N,dm[N]を、前記データ利用装置の公開鍵で暗号化し、暗号文CB,mとするデータ提供第2暗号化ステップと、
データ提供送信部が、暗号文CA,mと暗号文CB,mを、前記データ利用装置に送信するデータ提供送信ステップと、
前記データ利用装置において、
データ利用受信部が、暗号文CA,mと暗号文CB,mを受信し、データ利用記録部に暗号文CA,mと暗号文CB,mを記録する第1データ利用受信ステップと、
データ利用送信部が、データdの利用方法Eと暗号文CA,mとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eと暗号文CA,mとを受信する秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いて暗号文CA,mを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を得る秘密計算復号ステップと、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、rm,n,dm[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit GCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit GCを受信する第2データ利用受信ステップと、
データ利用復号部が、秘密鍵skを用いて暗号文CB,mを復号し、rm,1,dm[1],…,rm,N,dm[N]を得るデータ利用復号ステップと、
データ利用実行部が、rm,1,dm[1],…,rm,N,dm[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行ステップと
を有することを特徴とする秘密計算方法。
【請求項7】
M個のデータ提供装置、データ利用装置、秘密計算装置を用いて、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算方法であって、
Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
m番目の前記データ提供装置において、
データ提供記録部が、あらかじめNビット以下のデータdを記録しておき、
前記データ利用装置において、
データ利用鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開するデータ利用鍵生成ステップと、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
m番目の前記データ提供装置において、
データ提供鍵取得部が、前記データ利用装置の公開鍵pkと前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、両方が分かればデータdが分かる断片Z、Zを生成するデータ提供乱数生成ステップと、
データ提供第1暗号化部が、断片Zを、前記公開鍵pkを用いて暗号化し、暗号文CA,mとするデータ提供第1暗号化ステップと、
データ提供第2暗号化部が、断片Zを、前記データ利用装置の公開鍵で暗号化し、暗号文CB,mとするデータ提供第2暗号化ステップと、
データ提供送信部が、暗号文CA,mと暗号文CB,mを、前記データ利用装置に送信するデータ提供送信ステップと、
前記データ利用装置において、
データ利用受信部が、暗号文CA,mと暗号文CB,mを受信し、データ利用記録部に暗号文CA,mと暗号文CB,mを記録する第1データ利用受信ステップと、
データ利用送信部が、データdの利用方法Eと暗号文CA,mとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eと暗号文CA,mとを受信する秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いて暗号文CA,mを復号し、断片Z得る秘密計算復号ステップと、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
錯乱回路生成部が、断片Zを用いて、断片Zが入力されたときにC(d)[q]を出力する錯乱回路ZCを生成する錯乱回路生成ステップと、
秘密計算送信部が、錯乱回路ZCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、錯乱回路ZCを受信する第2データ利用受信ステップと、
データ利用復号部が、秘密鍵skを用いて暗号文CB,mを復号し、断片Zを得るデータ利用復号ステップと、
データ利用実行部が、断片Zと錯乱回路ZCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行ステップと
を有することを特徴とする秘密計算方法。
【請求項8】
データ利用装置と秘密計算装置を用いて、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算方法であって、
Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめNビット以下のデータdを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データdを示すインデックスmを作成するインデックス作成ステップと、
データ提供第1暗号化部が、前記乱数(r1,0,r1,1),…,(rN,0,rN,1)を、前記公開鍵pkを用いて暗号化し、暗号文Cとするデータ提供第1暗号化ステップと、
データ提供送信部が、暗号文Cとインデックスmを前記秘密計算装置に送信するデータ提供送信ステップと、
データ利用記録部が、前記インデックスmとr1,d[1],…,rN,d[N]を記録するデータ利用記録ステップと、
情報破棄部が、データdと乱数(r1,0,r1,1),…,(rN,0,rN,1)を破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文Cとインデックスmを受信する第1秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)をインデックスmと対応付けて秘密計算記録部に記録する秘密計算復号部と、
前記データ利用装置において、
データ利用送信部が、データdの利用方法Eとインデックスmとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eとインデックスmとを受信する第2秘密計算受信ステップと、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit GCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit GCを受信するデータ利用受信ステップと、
データ利用実行部が、r1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を有することを特徴とする秘密計算方法。
【請求項9】
データ利用装置と秘密計算装置を用いて、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める秘密計算方法であって、
Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめNビット以下のデータdを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データdを示すインデックスmを作成するインデックス作成ステップと、
データ提供第1暗号化部が、前記乱数(r1,0,r1,1),…,(rN,0,rN,1)を、前記公開鍵pkを用いて暗号化し、暗号文Cとするデータ提供第1暗号化ステップと、
データ提供送信部が、暗号文Cとインデックスmを前記秘密計算装置に送信し、データ利用記録部に前記インデックスmとr1,d[1],…,rN,d[N]を記録するデータ提供送信ステップと、
情報破棄部が、データdと乱数(r1,0,r1,1),…,(rN,0,rN,1)を破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文Cとインデックスmを受信し、暗号文Cをインデックスmと対応付けて秘密計算記録部に記録するする第1秘密計算受信ステップと、
前記データ利用装置において、
データ利用送信部が、データdの利用方法Eとインデックスmとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eとインデックスmとを受信する第2秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1)を得る秘密計算復号部と、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit GCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit GCを受信するデータ利用受信ステップと、
データ利用実行部が、r1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行部と
を有することを特徴とする秘密計算方法。
【請求項10】
M個のデータ提供装置、データ利用装置、秘密計算装置を用いて、データdの使用方法を制限しながら、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める不正使用防止方法であって、
Mを1以上の整数、mを1以上M以下の整数、Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、dm[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
m番目の前記データ提供装置において、
データ提供記録部が、あらかじめNビット以下のデータdを記録しておき、
前記データ利用装置において、
データ利用鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開するデータ利用鍵生成ステップと、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
m番目の前記データ提供装置において、
データ提供鍵取得部が、前記データ利用装置の公開鍵pkと前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、2N個の乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を生成するデータ提供乱数生成ステップと、
データ提供第1暗号化部が、前記乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1),利用条件Lを、前記公開鍵pkを用いて暗号化し、暗号文CA,mとするデータ提供第1暗号化ステップと、
データ提供第2暗号化部が、rm,1,dm[1],…,rm,N,dm[N]を、前記データ利用装置の公開鍵で暗号化し、暗号文CB,mとするデータ提供第2暗号化ステップと、
データ提供送信部が、暗号文CA,mと暗号文CB,mを、前記データ利用装置に送信するデータ提供送信ステップと、
前記データ利用装置において、
データ利用受信部が、暗号文CA,mと暗号文CB,mを受信し、データ利用記録部に暗号文CA,mと暗号文CB,mを記録する第1データ利用受信ステップと、
データ利用送信部が、データdの利用方法Eと暗号文CA,mとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eと暗号文CA,mとを受信する秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いて暗号文CA,mを復号し、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1),利用条件Lを得る秘密計算復号ステップと、
利用条件確認部が、利用方法Eが利用条件Lを満たしているかを確認する利用条件確認ステップと、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数(rm,1,0,rm,1,1),…,(rm,N,0,rm,N,1)を用いて、rm,n,dm[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit GCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit GCを受信する第2データ利用受信ステップと、
データ利用復号部が、秘密鍵skを用いて暗号文CB,mを復号し、rm,1,dm[1],…,rm,N,dm[N]を得るデータ利用復号ステップと、
データ利用実行部が、rm,1,dm[1],…,rm,N,dm[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行ステップと
を有することを特徴とする不正使用防止方法。
【請求項11】
データ利用装置と秘密計算装置を用いて、データdの使用方法を制限しながら、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める不正使用防止方法であって、
Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめNビット以下のデータdと、データdの利用条件Lを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データdを示すインデックスmを作成するインデックス作成ステップと、
データ提供第1暗号化部が、前記乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを、前記公開鍵pkを用いて暗号化し、暗号文Cとするデータ提供第1暗号化ステップと、
データ提供送信部が、暗号文Cとインデックスmを前記秘密計算装置に送信するデータ提供送信ステップと、
データ利用記録部が、前記インデックスmとr1,d[1],…,rN,d[N]を記録するデータ利用記録ステップと、
情報破棄部が、データd、乱数(r1,0,r1,1),…,(rN,0,rN,1)、利用条件Lを破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文Cとインデックスmを受信する第1秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを求め、乱数(r1,0,r1,1),…,(rN,0,rN,1)と利用条件Lを、インデックスmと対応付けて記録する秘密計算復号ステップと、
前記データ利用装置において、
データ利用送信部が、データdの利用方法Eとインデックスmとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eとインデックスmとを受信する第2秘密計算受信ステップと、
利用条件確認部が、利用方法Eが利用条件Lを満たしているかを確認する利用条件確認ステップと、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit GCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit GCを受信するデータ利用受信ステップと、
データ利用実行部が、r1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行ステップと
を有することを特徴とする不正使用防止方法。
【請求項12】
データ利用装置と秘密計算装置を用いて、データdの使用方法を制限しながら、データdを利用方法Eに対応する論理回路Cに入力したときの出力C(d)を求める不正使用防止方法であって、
Nを1以上の整数、nを1以上N以下の整数、Qを1以上の整数、qを1以上Q以下の整数、d[n]はデータdの下位n番目のビット、C(d)[q]はC(d)の下位q番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめNビット以下のデータdと、データdの利用条件Lを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵sk、公開鍵pkを生成し、公開鍵pkを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵pkを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、2N個の乱数(r1,0,r1,1),…,(rN,0,rN,1)を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データdを示すインデックスmを作成するインデックス作成ステップと、
データ提供第1暗号化部が、前記乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを、前記公開鍵pkを用いて暗号化し、暗号文Cとするデータ提供第1暗号化ステップと、
データ提供送信部が、暗号文Cとインデックスmを前記秘密計算装置に送信するデータ提供送信ステップと、
データ利用記録部が、前記インデックスmとr1,d[1],…,rN,d[N]を記録するデータ利用記録ステップと、
情報破棄部が、データd、乱数(r1,0,r1,1),…,(rN,0,rN,1)、利用条件Lを破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文Cとインデックスmを受信し、暗号文Cをインデックスmと対応付けて記録する第1秘密計算受信ステップと、
前記データ利用装置において、
データ利用送信部が、データdの利用方法Eとインデックスmとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Eとインデックスmとを受信する第2秘密計算受信ステップと、
秘密計算復号部が、秘密鍵skを用いてインデックスmに対応する暗号文Cを復号し、乱数(r1,0,r1,1),…,(rN,0,rN,1),利用条件Lを求める秘密計算復号ステップと、
利用条件確認部が、利用方法Eが利用条件Lを満たしているかを確認する利用条件確認ステップと、
論理回路生成部が、利用方法Eの論理回路Cを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数(r1,0,r1,1),…,(rN,0,rN,1)を用いて、rn,d[n]が入力されたときにC(d)[q]を出力するgarbled circuit GCを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit GCを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit GCを受信するデータ利用受信ステップと、
データ利用実行部が、r1,d[1],…,rN,d[N]とgarbled circuit GCを用いてC(d)[1],…,C(d)[Q]を求めるデータ利用実行ステップと
を有することを特徴とする不正使用防止方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−175072(P2011−175072A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−38663(P2010−38663)
【出願日】平成22年2月24日(2010.2.24)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】