(57)【要約】【課題】利用時の情報漏洩のリスクを抑えたセキュリティーシステムを提供する。【解決手段】本発明の第１の秘密計算システムは、garbled circuit ＧＣＥを利用し、データ利用装置にデータｄｍを知らせることなく、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）のみをデータ利用装置に与える。また、本発明の第２の秘密計算システムは、データ利用装置からデータｄを秘密計算装置に渡した後は、データｄに対するインデックスｍのみがデータ利用装置に記録され、データｄ自体はデータ利用装置には残らない。そして、garbled circuit ＧＣＥを利用し、データ利用装置にデータｄを知らせることなく、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）のみを得る。【選択図】図１
2011175072.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ個のデータ提供装置、データ利用装置、秘密計算装置からなり、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める秘密計算システムであって、
Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとして、
ｍ番目の前記データ提供装置は、
Ｎビット以下のデータｄｍを記録するデータ提供記録部と、
前記データ利用装置の公開鍵ｐｋｕと前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得部と、
２Ｎ個の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を生成するデータ提供乱数生成部と、
前記乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとするデータ提供第１暗号化部と、
ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を、前記データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとするデータ提供第２暗号化部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、前記データ利用装置に送信するデータ提供送信部と
を備え、
前記データ利用装置は、
秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開するデータ利用鍵生成部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍ、およびgarbled circuit ＧＣＥを受信するデータ利用受信部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録するデータ利用記録部と、
データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを前記秘密計算装置に送信するデータ利用送信部と、
秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を得るデータ利用復号部と、
ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成部と、
利用方法Ｅと暗号文ＣＡ，ｍとを受信する秘密計算受信部と、
秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を得る秘密計算復号部と、
利用方法Ｅの論理回路ＣＥを生成する論理回路生成部と、
乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、ｒｍ，ｎ，ｄｍ［ｎ］が入力されたときにＣＥ（ｄｍ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成部と、
garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項２】
Ｍ個のデータ提供装置、データ利用装置、秘密計算装置からなり、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める秘密計算システムであって、
Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとして、
ｍ番目の前記データ提供装置は、
Ｎビット以下のデータｄｍを記録するデータ提供記録部と、
前記データ利用装置の公開鍵ｐｋｕと前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得部と、
両方が分かればデータｄｍが分かる断片Ｚ１、Ｚ２を生成するデータ提供乱数生成部と、
断片Ｚ１を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとするデータ提供第１暗号化部と、
断片Ｚ２を、前記データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとするデータ提供第２暗号化部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、前記データ利用装置に送信するデータ提供送信部と
を備え、
前記データ利用装置は、
秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開するデータ利用鍵生成部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍ、および錯乱回路ＺＣを受信するデータ利用受信部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録するデータ利用記録部と、
データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを前記秘密計算装置に送信するデータ利用送信部と、
秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、断片Ｚ２を得るデータ利用復号部と、
断片Ｚ２と錯乱回路ＺＣを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成部と、
利用方法Ｅと暗号文ＣＡ，ｍとを受信する秘密計算受信部と、
秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、断片Ｚ１を得る秘密計算復号部と、
利用方法Ｅの論理回路ＣＥを生成する論理回路生成部と、
断片Ｚ１を用いて、断片Ｚ２が入力されたときにＣＥ（ｄｍ）［ｑ］を出力する錯乱回路ＺＣを生成する錯乱回路生成部と、
錯乱回路ＺＣを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項３】
データ利用装置と秘密計算装置からなり、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める秘密計算システムであって、
Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとして、
前記データ利用装置は、
Ｎビット以下のデータｄを記録するデータ提供記録部と、
前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得部と、
２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成するデータ提供乱数生成部と、
データｄを示すインデックスｍを作成するインデックス作成部と、
前記乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとするデータ提供第１暗号化部と、
暗号文ＣＡとインデックスｍを前記秘密計算装置に送信するデータ提供送信部と、
前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録するデータ利用記録部と、
データｄと乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を破棄する情報破棄部と、
データｄの利用方法Ｅとインデックスｍとを前記秘密計算装置に送信するデータ利用送信部と、
garbled circuit ＧＣＥを受信するデータ利用受信部と、
ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成部と、
暗号文ＣＡとインデックスｍ、または利用方法Ｅとインデックスｍとを受信する秘密計算受信部と、
秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を得る秘密計算復号部と、
乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）または暗号文ＣＡを、インデックスｍと対応付けて記録する秘密計算記録部と、
利用方法Ｅの論理回路ＣＥを生成する論理回路生成部と、
乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成部と、
garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項４】
Ｍ個のデータ提供装置、データ利用装置、秘密計算装置からなり、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める秘密計算システムであって、
Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとして、
ｍ番目の前記データ提供装置は、
Ｎビット以下のデータｄｍと、データｄｍの利用条件Ｌｍを記録するデータ提供記録部と、
前記データ利用装置の公開鍵ｐｋｕと前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得部と、
２Ｎ個の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を生成するデータ提供乱数生成部と、
前記乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１），利用条件Ｌｍを、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとするデータ提供第１暗号化部と、
ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を、前記データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとするデータ提供第２暗号化部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、前記データ利用装置に送信するデータ提供送信部と
を備え、
前記データ利用装置は、
秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開するデータ利用鍵生成部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍ、およびgarbled circuit ＧＣＥを受信するデータ利用受信部と、
暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録するデータ利用記録部と、
データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを前記秘密計算装置に送信するデータ利用送信部と、
秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を得るデータ利用復号部と、
ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成部と、
利用方法Ｅと暗号文ＣＡ，ｍとを受信する秘密計算受信部と、
秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１），利用条件Ｌｍを得る秘密計算復号部と、
利用方法Ｅが利用条件Ｌｍを満たしているかを確認する利用条件確認部と、
利用方法Ｅの論理回路ＣＥを生成する論理回路生成部と、
乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、ｒｍ，ｎ，ｄｍ［ｎ］が入力されたときにＣＥ（ｄｍ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成部と、
garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項５】
データ利用装置と秘密計算装置からなり、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める秘密計算システムであって、
Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとして、
前記データ利用装置は、
Ｎビット以下のデータｄと、データｄの利用条件Ｌを記録するデータ提供記録部と、
前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得部と、
２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成するデータ提供乱数生成部と、
データｄを示すインデックスｍを作成するインデックス作成部と、
前記乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとするデータ提供第１暗号化部と、
暗号文ＣＡとインデックスｍを前記秘密計算装置に送信するデータ提供送信部と、
前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録するデータ利用記録部と、
データｄ、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）、利用条件Ｌを破棄する情報破棄部と、
データｄの利用方法Ｅとインデックスｍとを前記秘密計算装置に送信するデータ利用送信部と、
garbled circuit ＧＣＥを受信するデータ利用受信部と、
ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求めるデータ利用実行部と
を備え、
前記秘密計算装置は、
秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成部と、
暗号文ＣＡとインデックスｍ、または利用方法Ｅとインデックスｍとを受信する秘密計算受信部と、
秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを得る秘密計算復号部と、
乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）と利用条件Ｌ、もしくは、暗号文ＣＡを、インデックスｍと対応付けて記録する秘密計算記録部と、
利用方法Ｅが利用条件Ｌを満たしているかを確認する利用条件確認部と、
利用方法Ｅの論理回路ＣＥを生成する論理回路生成部と、
乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成部と、
garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信部と
を備える
ことを特徴とする秘密計算システム。
【請求項６】
Ｍ個のデータ提供装置、データ利用装置、秘密計算装置を用いて、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める秘密計算方法であって、
Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとして、
ｍ番目の前記データ提供装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄｍを記録しておき、
前記データ利用装置において、
データ利用鍵生成部が、秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開するデータ利用鍵生成ステップと、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
ｍ番目の前記データ提供装置において、
データ提供鍵取得部が、前記データ利用装置の公開鍵ｐｋｕと前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、２Ｎ個の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を生成するデータ提供乱数生成ステップと、
データ提供第１暗号化部が、前記乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとするデータ提供第１暗号化ステップと、
データ提供第２暗号化部が、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を、前記データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとするデータ提供第２暗号化ステップと、
データ提供送信部が、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、前記データ利用装置に送信するデータ提供送信ステップと、
前記データ利用装置において、
データ利用受信部が、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを受信し、データ利用記録部に暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録する第１データ利用受信ステップと、
データ利用送信部が、データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅと暗号文ＣＡ，ｍとを受信する秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を得る秘密計算復号ステップと、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、ｒｍ，ｎ，ｄｍ［ｎ］が入力されたときにＣＥ（ｄｍ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit ＧＣＥを受信する第２データ利用受信ステップと、
データ利用復号部が、秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を得るデータ利用復号ステップと、
データ利用実行部が、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求めるデータ利用実行ステップと
を有することを特徴とする秘密計算方法。
【請求項７】
Ｍ個のデータ提供装置、データ利用装置、秘密計算装置を用いて、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める秘密計算方法であって、
Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとして、
ｍ番目の前記データ提供装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄｍを記録しておき、
前記データ利用装置において、
データ利用鍵生成部が、秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開するデータ利用鍵生成ステップと、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
ｍ番目の前記データ提供装置において、
データ提供鍵取得部が、前記データ利用装置の公開鍵ｐｋｕと前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、両方が分かればデータｄｍが分かる断片Ｚ１、Ｚ２を生成するデータ提供乱数生成ステップと、
データ提供第１暗号化部が、断片Ｚ１を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとするデータ提供第１暗号化ステップと、
データ提供第２暗号化部が、断片Ｚ２を、前記データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとするデータ提供第２暗号化ステップと、
データ提供送信部が、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、前記データ利用装置に送信するデータ提供送信ステップと、
前記データ利用装置において、
データ利用受信部が、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを受信し、データ利用記録部に暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録する第１データ利用受信ステップと、
データ利用送信部が、データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅと暗号文ＣＡ，ｍとを受信する秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、断片Ｚ１得る秘密計算復号ステップと、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
錯乱回路生成部が、断片Ｚ１を用いて、断片Ｚ２が入力されたときにＣＥ（ｄｍ）［ｑ］を出力する錯乱回路ＺＣを生成する錯乱回路生成ステップと、
秘密計算送信部が、錯乱回路ＺＣを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、錯乱回路ＺＣを受信する第２データ利用受信ステップと、
データ利用復号部が、秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、断片Ｚ２を得るデータ利用復号ステップと、
データ利用実行部が、断片Ｚ２と錯乱回路ＺＣを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求めるデータ利用実行ステップと
を有することを特徴とする秘密計算方法。
【請求項８】
データ利用装置と秘密計算装置を用いて、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める秘密計算方法であって、
Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データｄを示すインデックスｍを作成するインデックス作成ステップと、
データ提供第１暗号化部が、前記乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとするデータ提供第１暗号化ステップと、
データ提供送信部が、暗号文ＣＡとインデックスｍを前記秘密計算装置に送信するデータ提供送信ステップと、
データ利用記録部が、前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録するデータ利用記録ステップと、
情報破棄部が、データｄと乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文ＣＡとインデックスｍを受信する第１秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）をインデックスｍと対応付けて秘密計算記録部に記録する秘密計算復号部と、
前記データ利用装置において、
データ利用送信部が、データｄの利用方法Ｅとインデックスｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅとインデックスｍとを受信する第２秘密計算受信ステップと、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit ＧＣＥを受信するデータ利用受信ステップと、
データ利用実行部が、ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求めるデータ利用実行部と
を有することを特徴とする秘密計算方法。
【請求項９】
データ利用装置と秘密計算装置を用いて、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める秘密計算方法であって、
Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データｄを示すインデックスｍを作成するインデックス作成ステップと、
データ提供第１暗号化部が、前記乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとするデータ提供第１暗号化ステップと、
データ提供送信部が、暗号文ＣＡとインデックスｍを前記秘密計算装置に送信し、データ利用記録部に前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録するデータ提供送信ステップと、
情報破棄部が、データｄと乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文ＣＡとインデックスｍを受信し、暗号文ＣＡをインデックスｍと対応付けて秘密計算記録部に記録するする第１秘密計算受信ステップと、
前記データ利用装置において、
データ利用送信部が、データｄの利用方法Ｅとインデックスｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅとインデックスｍとを受信する第２秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を得る秘密計算復号部と、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit ＧＣＥを受信するデータ利用受信ステップと、
データ利用実行部が、ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求めるデータ利用実行部と
を有することを特徴とする秘密計算方法。
【請求項１０】
Ｍ個のデータ提供装置、データ利用装置、秘密計算装置を用いて、データｄｍの使用方法を制限しながら、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める不正使用防止方法であって、
Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとして、
ｍ番目の前記データ提供装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄｍを記録しておき、
前記データ利用装置において、
データ利用鍵生成部が、秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開するデータ利用鍵生成ステップと、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
ｍ番目の前記データ提供装置において、
データ提供鍵取得部が、前記データ利用装置の公開鍵ｐｋｕと前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、２Ｎ個の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を生成するデータ提供乱数生成ステップと、
データ提供第１暗号化部が、前記乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１），利用条件Ｌｍを、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとするデータ提供第１暗号化ステップと、
データ提供第２暗号化部が、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を、前記データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとするデータ提供第２暗号化ステップと、
データ提供送信部が、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、前記データ利用装置に送信するデータ提供送信ステップと、
前記データ利用装置において、
データ利用受信部が、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを受信し、データ利用記録部に暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録する第１データ利用受信ステップと、
データ利用送信部が、データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅと暗号文ＣＡ，ｍとを受信する秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１），利用条件Ｌｍを得る秘密計算復号ステップと、
利用条件確認部が、利用方法Ｅが利用条件Ｌｍを満たしているかを確認する利用条件確認ステップと、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、ｒｍ，ｎ，ｄｍ［ｎ］が入力されたときにＣＥ（ｄｍ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit ＧＣＥを受信する第２データ利用受信ステップと、
データ利用復号部が、秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を得るデータ利用復号ステップと、
データ利用実行部が、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求めるデータ利用実行ステップと
を有することを特徴とする不正使用防止方法。
【請求項１１】
データ利用装置と秘密計算装置を用いて、データｄの使用方法を制限しながら、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める不正使用防止方法であって、
Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄと、データｄの利用条件Ｌを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データｄを示すインデックスｍを作成するインデックス作成ステップと、
データ提供第１暗号化部が、前記乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとするデータ提供第１暗号化ステップと、
データ提供送信部が、暗号文ＣＡとインデックスｍを前記秘密計算装置に送信するデータ提供送信ステップと、
データ利用記録部が、前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録するデータ利用記録ステップと、
情報破棄部が、データｄ、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）、利用条件Ｌを破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文ＣＡとインデックスｍを受信する第１秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを求め、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）と利用条件Ｌを、インデックスｍと対応付けて記録する秘密計算復号ステップと、
前記データ利用装置において、
データ利用送信部が、データｄの利用方法Ｅとインデックスｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅとインデックスｍとを受信する第２秘密計算受信ステップと、
利用条件確認部が、利用方法Ｅが利用条件Ｌを満たしているかを確認する利用条件確認ステップと、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit ＧＣＥを受信するデータ利用受信ステップと、
データ利用実行部が、ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求めるデータ利用実行ステップと
を有することを特徴とする不正使用防止方法。
【請求項１２】
データ利用装置と秘密計算装置を用いて、データｄの使用方法を制限しながら、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める不正使用防止方法であって、
Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとして、
前記データ利用装置において、
データ提供記録部が、あらかじめＮビット以下のデータｄと、データｄの利用条件Ｌを記録しておき、
前記秘密計算装置において、
秘密計算鍵生成部が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する秘密計算鍵生成ステップと、
前記データ利用装置において、
データ提供鍵取得部が、前記秘密計算装置の公開鍵ｐｋｓを取得するデータ提供鍵取得ステップと、
データ提供乱数生成部が、２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成するデータ提供乱数生成ステップと、
インデックス作成部が、データｄを示すインデックスｍを作成するインデックス作成ステップと、
データ提供第１暗号化部が、前記乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを、前記公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとするデータ提供第１暗号化ステップと、
データ提供送信部が、暗号文ＣＡとインデックスｍを前記秘密計算装置に送信するデータ提供送信ステップと、
データ利用記録部が、前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録するデータ利用記録ステップと、
情報破棄部が、データｄ、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）、利用条件Ｌを破棄する情報破棄ステップと、
前記秘密計算装置において、
秘密計算受信部が、暗号文ＣＡとインデックスｍを受信し、暗号文ＣＡをインデックスｍと対応付けて記録する第１秘密計算受信ステップと、
前記データ利用装置において、
データ利用送信部が、データｄの利用方法Ｅとインデックスｍとを前記秘密計算装置に送信するデータ利用送信ステップと、
前記秘密計算装置において、
秘密計算受信部が、利用方法Ｅとインデックスｍとを受信する第２秘密計算受信ステップと、
秘密計算復号部が、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを求める秘密計算復号ステップと、
利用条件確認部が、利用方法Ｅが利用条件Ｌを満たしているかを確認する利用条件確認ステップと、
論理回路生成部が、利用方法Ｅの論理回路ＣＥを生成する論理回路生成ステップと、
garbled circuit生成部が、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成するgarbled circuit生成ステップと、
秘密計算送信部が、garbled circuit ＧＣＥを前記データ利用装置に送信する秘密計算送信ステップと、
前記データ利用装置において、
データ利用受信部が、garbled circuit ＧＣＥを受信するデータ利用受信ステップと、
データ利用実行部が、ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求めるデータ利用実行ステップと
を有することを特徴とする不正使用防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報漏洩を防止するための秘密計算システム、秘密計算方法、および情報の不正利用防止方法に関する。
【背景技術】
【０００２】
情報漏洩を防ぐ方法として、データ保管時の暗号化や秘密分散といった手法が従来技術として知られている。また、秘密計算の方法として、非特許文献１の方法などがある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Koji Chida and Katsumi Takahashi: Privacy Preserving Computations without Public Key Cryptographic Operation, Proc. of IWSEC 2008, pp.184-200.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、保管データを利用する際は通常データを復元するため、情報漏洩のリスクが高まる。本発明の目的は、利用時の情報漏洩のリスクを抑えたセキュリティーシステムを提供することである。
【課題を解決するための手段】
【０００５】
本発明の第１の秘密計算システムは、Ｍ個のデータ提供装置、データ利用装置、秘密計算装置からなり、データｄｍ（ただし、ｄｍはＮビット以下）を利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）（ただし、ＣＥ（ｄｍ）はＱビット以下）を求める秘密計算システムである。まず、Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとする。ｍ番目のデータ提供装置は、データ提供記録部、データ提供鍵取得部、データ提供乱数生成部、データ提供第１暗号化部、データ提供第２暗号化部、データ提供送信部を備える。データ利用装置は、データ利用鍵生成部、データ利用受信部、データ利用記録部、データ利用送信部、データ利用復号部、データ利用実行部を備える。秘密計算装置は、秘密計算鍵生成部、秘密計算受信部、秘密計算復号部、論理回路生成部、garbled circuit生成部、秘密計算送信部を備える。
【０００６】
データ提供記録部は、Ｎビット以下のデータｄｍを記録する。データ提供鍵取得部は、データ利用装置の公開鍵ｐｋｕと秘密計算装置の公開鍵ｐｋｓを取得する。データ提供乱数生成部は、２Ｎ個の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を生成する。データ提供第１暗号化部は、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとする。データ提供第２暗号化部は、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を、データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとする。データ提供送信部は、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、データ利用装置に送信する。データ利用鍵生成部は、秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開する。データ利用受信部は、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍ、およびgarbled circuit ＧＣＥを受信する。データ利用記録部は、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録する。データ利用送信部は、データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを秘密計算装置に送信する。なお、利用方法Ｅは１つのデータｄｍの利用方法でなく、複数のデータの利用方法でもよい。この場合は、利用送信部は、複数のデータの利用方法Ｅと利用対象のデータに対応する複数の暗号文ＣＡ，ｍとを秘密計算装置に送信する。“データｄｍの利用方法Ｅ”とは、複数のデータの利用方法も含んでおり、“暗号文ＣＡ，ｍとを秘密計算装置に送信する”とは、1つ以上の暗号文ＣＡ，ｍを秘密計算装置に送信する意味である。データ利用復号部は、秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を得る。なお、複数のデータを利用する場合は、複数の暗号文ＣＢ，ｍを復号する。データ利用実行部はｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求める。なお、複数のデータを利用するときは、データの数に応じた乱数とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ１，…，ｄｍｘ）を求める。ただし、ｘはデータの数とする。秘密計算鍵生成部は、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する。秘密計算受信部は、利用方法Ｅと暗号文ＣＡ，ｍとを受信する。なお、利用方法Ｅとは、データｄｍを用いて行う演算などの処理を意味する。秘密計算復号部は、秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を得る。なお、複数の暗号文ＣＡ，ｍを復号したときには、乱数の数が２Ｎの複数倍となる。利用するデータが複数ある場合には、乱数の数は利用するデータの数に応じて決めればよい。つまり、秘密計算復号部は、少なくとも1つの暗号文ＣＡ，ｍを復号し、少なくとも乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を得る。論理回路生成部は、利用方法Ｅの論理回路ＣＥを生成する。garbled circuit生成部は、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、ｒｍ，ｎ，ｄｍ［ｎ］が入力されたときにＣＥ（ｄｍ）［ｑ］を出力するgarbled circuit ＧＣＥを生成する。なお、複数のデータを利用するときは、データの数に応じた乱数を用いて、garbled circuit ＧＣＥを生成する。つまり、garbled circuit生成部は、少なくとも乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、garbled circuit ＧＣＥを生成する。秘密計算送信部は、garbled circuit ＧＣＥをデータ利用装置に送信する。
【０００７】
本発明の第２の秘密計算システムは、データ利用装置と秘密計算装置からなり、データｄ（ただし、ｄはＮビット以下）を利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）（ただし、ＣＥ（ｄ）はＱビット以下）を求める秘密計算システムである。まず、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとする。データ利用装置は、データ提供記録部、データ提供鍵取得部、データ提供乱数生成部、インデックス作成部、データ提供第１暗号化部、データ提供送信部、データ利用記録部、情報破棄部、データ利用送信部、データ利用受信部、データ利用実行部を備える。秘密計算装置は、秘密計算鍵生成部、秘密計算受信部、秘密計算復号部、秘密計算記録部、論理回路生成部、garbled circuit生成部、秘密計算送信部を備える。
【０００８】
データ提供記録部は、Ｎビット以下のデータｄを記録する。データ提供鍵取得部は、秘密計算装置の公開鍵ｐｋｓを取得する。データ提供乱数生成部は、２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成する。インデックス作成部は、データｄを示すインデックスｍを作成する。データ提供第１暗号化部は、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとする。データ提供送信部は、暗号文ＣＡとインデックスｍを秘密計算装置に送信する。データ利用記録部は、インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録する。情報破棄部は、データｄと乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を破棄する。データ利用送信部は、データｄの利用方法Ｅとインデックスｍとを秘密計算装置に送信する。データ利用受信部は、garbled circuit ＧＣＥを受信する。データ利用実行部は、ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求める。秘密計算鍵生成部は、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する。秘密計算受信部は、暗号文ＣＡとインデックスｍ、または利用方法Ｅとインデックスｍとを受信する。秘密計算復号部は、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を得る。秘密計算記録部は、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）または暗号文ＣＡを、インデックスｍと対応付けて記録する。論理回路生成部は、利用方法Ｅの論理回路ＣＥを生成する。garbled circuit生成部は、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成する。秘密計算送信部は、garbled circuit ＧＣＥをデータ利用装置に送信する。
【０００９】
なお、どちらの秘密計算システムも、以下のようにシステムの一部を変更することで、データの利用方法を制限できる。まず、データ提供記録部が利用条件Ｌも記録しておく。データ提供第１暗号化部が、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとする。そして、秘密計算復号部は、暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを得る。また、秘密計算装置には、利用条件確認部も備えておき、利用方法Ｅが利用条件Ｌを満たしているかを確認する。
【発明の効果】
【００１０】
本発明の第１の秘密計算システムによれば、データ利用装置にデータｄｍを知らせることなく、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）のみをデータ利用装置に与えることができる。また、本発明の第２の秘密計算システムによれば、データ利用装置からデータｄを秘密計算装置に渡した後は、データｄに対するインデックスｍのみがデータ利用装置に記録され、データｄ自体はデータ利用装置には残らない。そして、データ利用装置はデータｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）のみを得ることができる。したがって、データを利用するときにデータ利用装置から情報が漏洩するリスクがない。
【００１１】
さらに、利用条件も含めたシステムの場合、データ利用装置からの利用方法を制限できるので、データの不正使用を防ぐこともできる。
【図面の簡単な説明】
【００１２】
【図１】実施例１の秘密計算システムの機能構成例を示す図。
【図２】実施例１の秘密計算システムの処理フローを示す図。
【図３】実施例２と実施例２変形例の秘密計算システムの機能構成例を示す図。
【図４】実施例２の秘密計算システムの処理フローを示す図。
【図５】実施例２変形例の秘密計算システムの処理フローを示す図。
【図６】実施例３の秘密計算システムの機能構成例を示す図。
【図７】実施例３の秘密計算システムの処理フローを示す図。
【図８】実施例４と実施例４変形例の秘密計算システムの機能構成例を示す図。
【図９】実施例４の秘密計算システムの処理フローを示す図。
【図１０】実施例４変形例の秘密計算システムの処理フローを示す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００１４】
図１に実施例１の秘密計算システムの機能構成例を、図２に実施例１の秘密計算システムの処理フローを示す。実施例１の秘密計算システムは、Ｍ個のデータ提供装置１００１，…，１００Ｍ、データ利用装置２００、秘密計算装置３００からなり、データｄｍ（ただし、ｄｍはＮビット以下）を利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）（ただし、ＣＥ（ｄｍ）はＱビット以下）を求める。ここで、Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとする。なお、Ｑ＝Ｎ，ｑ＝ｎとしてもよい。
【００１５】
ｍ番目のデータ提供装置１００ｍは、データ提供鍵取得部１１０ｍ、データ提供乱数生成部１２０ｍ、データ提供第１暗号化部１３０ｍ、データ提供第２暗号化部１４０ｍ、データ提供送信部１５０ｍ、データ提供記録部１９０ｍを備える。データ利用装置２００は、データ利用鍵生成部２１０、データ利用受信部２２０、データ利用送信部２３０、データ利用復号部２４０、データ利用実行部２５０、データ利用記録部２９０を備える。秘密計算装置３００は、秘密計算鍵生成部３１０、秘密計算受信部３２０、秘密計算復号部３３０、論理回路生成部３４０、garbled circuit生成部３５０、秘密計算送信部３６０、秘密計算記録部３９０を備える。
【００１６】
データ提供装置１００ｍのデータ提供記録部１９０ｍは、Ｎビット以下のデータｄｍをあらかじめ記録しておく。データ利用装置２００のデータ利用鍵生成部２１０は、秘密鍵ｓｋｕ、公開鍵ｐｋｕを生成し、公開鍵ｐｋｕを公開する（Ｓ２１０）。秘密計算鍵生成部３１０は、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する（Ｓ３１０）。そして、データ提供装置１００ｍのデータ提供鍵取得部１１０ｍは、データ利用装置２００の公開鍵ｐｋｕと秘密計算装置３００の公開鍵ｐｋｓを取得する（Ｓ１１０ｍ）。
【００１７】
データ提供乱数生成部１２０ｍは、２Ｎ個の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を生成する（Ｓ１２０ｍ）。データ提供第１暗号化部１３０ｍは、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとする（Ｓ１３０ｍ）。データ提供第２暗号化部１４０ｍは、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を、データ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとする（１４０ｍ）。データ提供送信部１５０ｍは、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを、データ利用装置２００に送信する（Ｓ１５０ｍ）。データ利用装置２００のデータ利用受信部２２０は、暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを受信し、データ利用記録部２９０に暗号文ＣＡ，ｍと暗号文ＣＢ，ｍを記録する（Ｓ２２１）。データ利用送信部２３０は、データｄｍの利用方法Ｅと暗号文ＣＡ，ｍとを秘密計算装置３００に送信する（Ｓ２３０）。なお、利用方法Ｅは１つのデータｄｍの利用方法でなく、複数のデータの利用方法でもよい。この場合は、利用送信部は、複数のデータの利用方法Ｅと利用対象のデータに対応する複数の暗号文ＣＡ，ｍとを秘密計算装置に送信する。秘密計算装置３００の秘密計算受信部３２０は、利用方法Ｅと暗号文ＣＡ，ｍとを受信し、秘密計算記録部３９０に記録する（Ｓ３２０）。なお、利用方法Ｅとは、データｄｍを用いて行う演算などの処理を意味する。
【００１８】
秘密計算復号部３３０は、秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を得る（Ｓ３３０）。なお、複数の暗号文ＣＡ，ｍを復号したときには、乱数の数が２Ｎの複数倍となる。以下の説明でも、乱数の数は２Ｎとして説明するが、利用するデータが複数ある場合には、乱数の数は利用するデータの数に応じて決めればよい。論理回路生成部３４０は、利用方法Ｅの論理回路ＣＥを生成する（Ｓ３４０）。garbled circuit生成部３５０は、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）を用いて、ｒｍ，ｎ，ｄｍ［ｎ］が入力されたときにＣＥ（ｄｍ）［ｑ］を出力するgarbled circuit ＧＣＥを生成する（Ｓ３５０）。なお、複数のデータを利用するときは、データの数に応じた乱数を用いて、garbled circuit ＧＣＥを生成する。また、garbled circuit ＧＣＥを生成する方法については、非特許文献１（3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluation）に詳しく説明されている。
【００１９】
秘密計算送信部３６０は、garbled circuit ＧＣＥをデータ利用装置に送信する（Ｓ３６０）。データ利用装置２００のデータ利用受信部２２０は、garbled circuit ＧＣＥを受信する（Ｓ２２２）。データ利用復号部２４０は、秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、ｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］を得る（Ｓ２４０）。なお、複数のデータを利用する場合は、複数の暗号文ＣＢ，ｍを復号する。データ利用実行部２５０はｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求める（Ｓ２５０）。なお、複数のデータを利用するときは、データの数に応じた乱数とgarbled circuit ＧＣＥを用いてＣＥ（ｄｍ１，…，ｄｍｘ）を求める。ただし、ｘはデータの数とする。したがって、データ利用装置２００はＣＥ（ｄｍ）を得ることができる。
【００２０】
このように、本実施例の秘密計算システムによれば、データ利用装置にデータｄｍを知らせることなく、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）のみをデータ利用装置に与えることができる。したがって、データを利用するときにデータ利用装置から情報が漏洩するリスクがない。
【００２１】
［変形例］
実施例１では、非特許文献１に記載されているgarbled circuitを用いることを前提に説明した。しかし、非特許文献１のgarbled circuitの考え方をより一般的にしてもよい。たとえば、２つの断片的な情報を断片Ｚ１、Ｚ２とし、２つの断片Ｚ１、Ｚ２の両方が分かった場合にデータｄｍが復元できるとする。このような断片Ｚ１、Ｚ２を用意すれば、非特許文献１のgarbled circuitに限定する必要はない。断片Ｚ１は実施例１の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）に相当する情報、断片Ｚ２は実施例１のｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］に相当する情報である。言い換えれば、実施例１の乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１）は断片Ｚ１の１つの例であり、実施例１のｒｍ，１，ｄｍ［１］，…，ｒｍ，Ｎ，ｄｍ［Ｎ］は断片Ｚ２の１つの例である。
【００２２】
図１に本変形例の秘密計算システムの機能構成例を、図２に本変形例の秘密計算システムの処理フローをしめす。本変形例では、実施例１のgarbled circuit生成部３５０の変わりに、錯乱回路生成部３５０”を備えている。また、データ提供乱数生成部１２０”ｍ、データ提供第１暗号化部１３０”ｍ、データ提供第２暗号化部１４０”ｍ、秘密計算復号部３３０”、秘密計算送信部３６０”、データ利用受信部２２０”、データ利用復号部２４０”、データ利用実行部２５０”が異なる。
【００２３】
以下に、実施例１と本変形例との違いを説明する。データ提供乱数生成部１２０”ｍは、２個の断片Ｚ１，Ｚ２を生成する（Ｓ１２０”ｍ）。データ提供第１暗号化部１３０”ｍは、断片Ｚ１を公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡ，ｍとする（Ｓ１３０”ｍ）。データ提供第２暗号化部１４０”ｍは、断片Ｚ２をデータ利用装置の公開鍵で暗号化し、暗号文ＣＢ，ｍとする（１４０”ｍ）。
【００２４】
秘密計算復号部３３０”は、秘密鍵ｓｋｓを用いて暗号文ＣＡ，ｍを復号し、断片Ｚ１を得る（Ｓ３３０”）。錯乱回路生成部３５０”は、断片Ｚ１を用いて、断片Ｚ２が入力されたときにＣＥ（ｄｍ）［ｑ］を出力する錯乱回路ＺＣを生成する（Ｓ３５０”）。錯乱回路ＺＣが、実施例１のgarbled circuit ＧＣＥに相当する。言い換えると、garbled circuit ＧＣＥは錯乱回路ＺＣの１つの例である。秘密計算送信部３６０”は、錯乱回路ＺＣをデータ利用装置２００”に送信する（Ｓ３６０”）。データ利用装置２００”のデータ利用受信部２２０”は、錯乱回路ＺＣを受信する（Ｓ２２２”）。データ利用復号部２４０”は、秘密鍵ｓｋｕを用いて暗号文ＣＢ，ｍを復号し、断片Ｚ２を得る（Ｓ２４０”）。データ利用実行部２５０”は断片Ｚ２と錯乱回路ＺＣを用いてＣＥ（ｄｍ）［１］，…，ＣＥ（ｄｍ）［Ｑ］を求める（Ｓ２５０”）。その他の構成、処理フローは同じである。したがって、データ利用装置２００はＣＥ（ｄｍ）を得ることができる。
【実施例２】
【００２５】
実施例２の秘密計算システムは、データ利用装置から秘密計算装置に対してデータを提供しておき、その後、提供したデータを利用した結果を、データ利用装置が秘密計算装置から受け取るシステムである。したがって、１つのデータ利用装置が、データ提供装置としての機能とデータ利用装置としての機能とを有する。例えば、機密性の高いデータの管理者（数が少ない）がデータ利用装置からデータを入力し、データの利用者（管理者とは別の人であって、一般に管理者よりも人数が多い）がデータ利用装置でそのデータを利用する場合などに有効なシステムである。
【００２６】
図３に実施例２の秘密計算システムの機能構成例を、図４に実施例２の秘密計算システムの処理フローを示す。実施例２の秘密計算システムは、データ利用装置４００と秘密計算装置６００からなり、データｄ（ただし、ｄはＮビット以下）を利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）（ただし、ＣＥ（ｄ）はＱビット以下）を求める秘密計算システムである。ここで、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとする。なお、Ｑ＝Ｎ，ｑ＝ｎでとしてもよい。データ利用装置４００は、データ提供鍵取得部４１０、データ提供乱数生成部４２０、インデックス作成部４２５、データ提供第１暗号化部４３０、データ提供送信部４５０、情報破棄部４６０、データ提供記録部４９０、データ利用送信部５３０、データ利用受信部５２０、データ利用実行部５５０、データ利用記録部５９０を備える。秘密計算装置６００は、秘密計算鍵生成部３１０、秘密計算受信部６２０、秘密計算復号部６３０、論理回路生成部３４０、garbled circuit生成部６５０、秘密計算送信部３６０、秘密計算記録部６９０を備える。
【００２７】
まず、データ利用装置４００でデータを提供する処理について説明する。データ提供記録部４９０に、Ｎビット以下のデータｄを記録しておく。そして、秘密計算装置６００の秘密計算鍵生成部３１０が、秘密鍵ｓｋｓ、公開鍵ｐｋｓを生成し、公開鍵ｐｋｓを公開する（Ｓ３１０）。データ提供鍵取得部４１０は、秘密計算装置６００の公開鍵ｐｋｓを取得する（Ｓ４１０）。データ提供乱数生成部４２０は、２Ｎ個の乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を生成する（Ｓ４２０）。インデックス作成部４２５は、データｄを示すインデックスｍを作成する（Ｓ４２５）。データ提供第１暗号化部４３０は、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとする（Ｓ４３０）。データ提供送信部４５０は、暗号文ＣＡとインデックスｍを秘密計算装置６００に送信する（Ｓ４５０）。データ利用記録部５９０が、前記インデックスｍとｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］を記録する（Ｓ４５５）。情報破棄部４６０は、データｄと乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を破棄する（Ｓ４６０）。
【００２８】
秘密計算装置６００の秘密計算受信部６２０は、暗号文ＣＡとインデックスｍを受信する（Ｓ６２０）。秘密計算復号部６３０は、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を求め（Ｓ６３０）、秘密計算記録部６９０に乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）をインデックスｍと対応付けて記録する（Ｓ６２２）。ここまでが、データ利用装置４００がデータ提供装置として機能する処理である。上述のとおり、データｄの情報を秘密計算装置６００に送信した後は、データｄに対するインデックスｍのみがデータ利用装置４００に残り、データｄ自体は消去されている。したがって、データｄの利用者が不正にデータｄを入手することできない。また、データ利用装置がコンピュータ・ウィルスに感染した場合であっても、データｄが外部に漏れる心配がない。
【００２９】
次に、データ利用装置４００で実際にデータを利用する処理を説明する。データ利用装置４００のデータ利用送信部５３０は、データｄの利用方法Ｅとインデックスｍとを秘密計算装置６００に送信する（Ｓ５３０）。秘密計算装置６００の秘密計算受信部６２０は、利用方法Ｅとインデックスｍとを受信する（Ｓ６２５）。論理回路生成部３４０は、利用方法Ｅの論理回路ＣＥを生成する（Ｓ３４０）。garbled circuit生成部６５０は、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を用いて、ｒｎ，ｄ［ｎ］が入力されたときにＣＥ（ｄ）［ｑ］を出力するgarbled circuit ＧＣＥを生成する（Ｓ６５０）。なお、garbled circuit ＧＣＥを生成する方法については、非特許文献１（3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluation）に詳しく説明されている。
【００３０】
秘密計算送信部３６０は、garbled circuit ＧＣＥをデータ利用装置４００に送信する（Ｓ３６０）。データ利用装置４００のデータ利用受信部５２０は、garbled circuit ＧＣＥを受信する（Ｓ５２２）。データ利用実行部５５０は、ｒ１，ｄ［１］，…，ｒＮ，ｄ［Ｎ］とgarbled circuit ＧＣＥを用いてＣＥ（ｄ）［１］，…，ＣＥ（ｄ）［Ｑ］を求める（Ｓ５５０）。したがって、データ利用装置２００はＣＥ（ｄｍ）を得ることができる。
【００３１】
このように、本実施例の秘密計算システムによれば、データ利用装置からデータｄを秘密計算装置に渡した後は、データｄに対するインデックスｍのみがデータ利用装置に記録され、データｄ自体はデータ利用装置には残らない。そして、データ利用装置はデータｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）のみを得ることができる。したがって、データを利用するときにデータ利用装置から情報が漏洩するリスクがない。
【００３２】
［変形例］
実施例２では、秘密計算装置６００は、ステップＳ６２０の後、暗号文ＣＡを復号した上で、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）をインデックスｍと対応付けて記録した。しかし、ステップＳ６２０の後、暗号文ＣＡをインデックスｍと対応付けて記録しておき、必要に応じて暗号文ＣＡを復号してもよい。図５は、このように処理する場合の処理フローを示している。具体的には、ステップＳ６２０の後、秘密計算装置６００の秘密計算記録部６９０は、暗号文ＣＡをインデックスｍと対応付けて記録する。また、ステップＳ６２５の後、秘密計算装置６００の秘密計算復号部６３０は、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）を求める（Ｓ６３０）。そして、論理回路生成部３４０が、利用方法Ｅの論理回路ＣＥを生成する（Ｓ３４０）。その他の処理は、実施例２と同じである。したがって、実施例２と同じ効果が得られる。
【実施例３】
【００３３】
実施例３では、実施例１の秘密計算システムをベースとして、データの不正利用も防止できる秘密計算システムについて説明する。図６に実施例３の秘密計算システムの機能構成例を、図７に実施例３の秘密計算システムの処理フローを示す。実施例３の秘密計算システムは、Ｍ個のデータ提供装置１００’１，…，１００’Ｍ、データ利用装置２００、秘密計算装置３００’からなり、データ利用装置２００のデータｄｍの利用方法を制限した上で、データｄｍを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄｍ）を求める。ここで、Ｍを１以上の整数、ｍを１以上Ｍ以下の整数、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、Ｑを１以上の整数、ｑを１以上Ｑ以下の整数、ｄｍ［ｎ］はデータｄｍの下位ｎ番目のビット、ＣＥ（ｄｍ）［ｑ］はＣＥ（ｄｍ）の下位ｑ番目のビットとする。
【００３４】
ｍ番目のデータ提供装置１００’ｍは、データ提供鍵取得部１１０ｍ、データ提供乱数生成部１２０ｍ、データ提供第１暗号化部１３０’ｍ、データ提供第２暗号化部１４０ｍ、データ提供送信部１５０ｍ、データ提供記録部１９０’ｍを備える。データ利用装置２００は、データ利用鍵生成部２１０、データ利用受信部２２０、データ利用送信部２３０、データ利用復号部２４０、データ利用実行部２５０、データ利用記録部２９０を備える。秘密計算装置３００’は、秘密計算鍵生成部３１０、秘密計算受信部３２０、秘密計算復号部３３０’、論理回路生成部３４０、garbled circuit生成部３５０、秘密計算送信部３６０、利用条件確認部３７０、秘密計算記録部３９０’を備える。データ提供装置１００’ｍは、実施例１とデータ提供第１暗号化部１３０’ｍ、データ提供記録部１９０’ｍの処理内容が異なる。データ利用装置２００は実施例１と同じである。秘密計算装置３００’は、実施例１と秘密計算復号部３３０’、秘密計算記録部３９０’の処理内容が異なり、利用条件確認部３７０が追加されている。
【００３５】
以下に、実施例１との違いを説明する。データ提供記録部１９０’ｍが利用条件Ｌｍも記録しておく。データ提供第１暗号化部１３０’ｍが、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１），利用条件Ｌｍを、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとする（Ｓ１３０’ｍ）。そして、秘密計算復号部３３０’は、暗号文ＣＡを復号し、乱数（ｒｍ，１，０，ｒｍ，１，１），…，（ｒｍ，Ｎ，０，ｒｍ，Ｎ，１），利用条件Ｌｍを得る（Ｓ３３０’）。そして、ステップＳ３３０’の次に秘密計算装置３００’の利用条件確認部３７０が、利用方法Ｅが利用条件Ｌｍを満たしているかを確認し、満たしている場合にはステップＳ３４０に進み、満たしていない場合には処理を終了する（Ｓ３７０）。なお、利用条件Ｌｍとは、例えば、「実行者」、「データ数」、「演算種別」などのカテゴリに分け、
Ｌｍ＝（ＮＴＴ，＞１００００，平均値）
とした場合、「ＮＴＴ社員が実行者（ログインしたユーザ）であり、１００００データ以上の平均値演算」を行う場合に限り利用を認めるというように設定すればよい。
【００３６】
実施例３はこのような構成なので、実施例１の効果に加え、データ利用装置２００が、許可されていない利用方法でデータｄｍを利用することを防止できる。したがって、データの不正利用を防ぐことができる。
【実施例４】
【００３７】
実施例４では、実施例２の秘密計算システムをベースとして、データの不正利用も防止できる秘密計算システムについて説明する。図８に実施例４の秘密計算システムの機能構成例を、図９に実施例４の秘密計算システムの処理フローを示す。実施例４の秘密計算システムは、データ利用装置４００’と秘密計算装置６００’からなり、データ利用装置４００’のデータｄの利用方法を制限した上で、データｄを利用方法Ｅに対応する論理回路ＣＥに入力したときの出力ＣＥ（ｄ）を求める秘密計算システムである。ここで、Ｎを１以上の整数、ｎを１以上Ｎ以下の整数、ｄ［ｎ］はデータｄの下位ｎ番目のビット、ＣＥ（ｄ）［ｑ］はＣＥ（ｄ）の下位ｑ番目のビットとする。データ利用装置４００’は、データ提供鍵取得部４１０、データ提供乱数生成部４２０、インデックス作成部４２５、データ提供第１暗号化部４３０’、データ提供送信部４５０、情報破棄部４６０’、データ提供記録部４９０’、データ利用送信部５３０、データ利用受信部５２０、データ利用実行部５５０、データ利用記録部５９０を備える。秘密計算装置６００’は、秘密計算鍵生成部３１０、秘密計算受信部６２０、秘密計算復号部６３０’、論理回路生成部３４０、garbled circuit生成部６５０、秘密計算送信部３６０、利用条件確認部３７０、秘密計算記録部６９０’を備える。データ利用装置４００’は、実施例２とデータ提供第１暗号化部４３０’、情報破棄部４６０’、データ提供記録部４９０’の処理内容が異なる。秘密計算装置６００’は、実施例２と秘密計算復号部６３０’、秘密計算記録部６９０’の処理内容が異なり、利用条件確認部３７０が追加されている。
【００３８】
以下に、実施例２との違いを説明する。データ提供記録部４９０’が利用条件Ｌも記録しておく。データ提供第１暗号化部４３０’が、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを、公開鍵ｐｋｓを用いて暗号化し、暗号文ＣＡとする（Ｓ４３０’）。また、情報破棄部４６０’は、データｄ、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）、利用条件Ｌを破棄する（Ｓ４６０’）。そして、秘密計算復号部６３０’は、暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１），利用条件Ｌを得る（Ｓ６３０’）。そして、ステップＳ６２５の次に秘密計算装置６００’の利用条件確認部３７０が、利用方法Ｅが利用条件Ｌを満たしているかを確認し、満たしている場合にはステップＳ３４０に進み、満たしていない場合には処理を終了する（Ｓ３７０）。
【００３９】
実施例４はこのような構成なので、実施例２の効果に加え、データ利用装置４００’が、許可されていない利用方法でデータｄｍを利用することを防止できる。したがって、データの不正利用を防ぐことができる。
【００４０】
［変形例］
実施例４では、秘密計算装置６００’は、ステップＳ６２０の後、暗号文ＣＡを復号した上で、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）をインデックスｍと対応付けて記録した。しかし、ステップＳ６２０の後、暗号文ＣＡをインデックスｍと対応付けて記録しておき、必要に応じて暗号文ＣＡを復号してもよい。図１０は、このように処理する場合の処理フローを示している。具体的には、ステップＳ６２０の後、秘密計算装置６００’の秘密計算記録部６９０’は、暗号文ＣＡをインデックスｍと対応付けて記録する。また、ステップＳ６２５の後、秘密計算装置６００の秘密計算復号部６３０’は、秘密鍵ｓｋｓを用いてインデックスｍに対応する暗号文ＣＡを復号し、乱数（ｒ１，０，ｒ１，１），…，（ｒＮ，０，ｒＮ，１）、利用条件Ｌを求める（Ｓ６３０’）。そして、利用条件確認部３７０が、利用方法Ｅが利用条件Ｌを満たしているかを確認する（Ｓ３７０）。その他の処理は、実施例４と同じである。したがって、実施例２と同じ効果が得られる。
【００４１】
プログラム、記録媒体
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００４２】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００４３】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００４５】
本発明は、システム内のデータの漏洩防止、および不正使用防止に利用できる。
【符号の説明】
【００４６】
１００、１００’ １００”  データ提供装置    １１０ｍ、４１０  データ提供鍵取得部
１２０ｍ、１２０”ｍ、４２０  データ提供乱数生成部
１３０ｍ、１３０’ｍ、１３０”ｍ、４３０、４３０’  データ提供第１暗号化部
１４０ｍ、１４０”ｍ  データ提供第２暗号化部
１５０ｍ、４５０  データ提供送信部
１９０ｍ、１９０’ｍ、４９０、４９０’  データ提供記録部
２００、２００”、４００、４００’  データ利用装置
２１０  データ利用鍵生成部          ２２０、２２０”、５２０  データ利用受信部
２３０、５３０  データ利用送信部    ２４０、２４０”  データ利用復号部
２５０、２５０”、５５０  データ利用実行部
２９０、５９０  データ利用記録部
３００、３００’、６００、６００’  秘密計算装置
３１０  秘密計算鍵生成部            ３２０、６２０  秘密計算受信部
３３０、３３０’、３３０”、６３０、６３０’  秘密計算復号部
３４０  論理回路生成部              ３５０、６５０  garbled circuit生成部
３５０”  錯乱回路生成部
３６０、３６０”  秘密計算送信部    ３７０  利用条件確認部
３９０、３９０’、６９０、６９０’  秘密計算記録部
４２５  インデックス作成部          ４６０  情報破棄部
【図１】
2011175072.tif 000003
【図２】
2011175072.tif 000004
【図３】
2011175072.tif 000005
【図４】
2011175072.tif 000006
【図５】
2011175072.tif 000007
【図６】
2011175072.tif 000008
【図７】
2011175072.tif 000009
【図８】
2011175072.tif 000010
【図９】
2011175072.tif 000011
【図１０】
2011175072.tif 000012