IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許7073295秘匿計算装置、秘匿計算方法及び秘匿計算プログラム
<>
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図1
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図2
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図3
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図4
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図5
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図6
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図7
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図8
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図9
  • 特許-秘匿計算装置、秘匿計算方法及び秘匿計算プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-13
(45)【発行日】2022-05-23
(54)【発明の名称】秘匿計算装置、秘匿計算方法及び秘匿計算プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20220516BHJP
【FI】
G09C1/00 650Z
【請求項の数】 7
(21)【出願番号】P 2019061680
(22)【出願日】2019-03-27
(65)【公開番号】P2020160353
(43)【公開日】2020-10-01
【審査請求日】2021-02-01
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】岡田 大樹
(72)【発明者】
【氏名】清本 晋作
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2018-114855(JP,A)
【文献】特開2017-167531(JP,A)
【文献】特開2009-272995(JP,A)
【文献】特開2013-122707(JP,A)
【文献】国際公開第2018/135563(WO,A1)
【文献】米国特許出願公開第2014/0177828(US,A1)
【文献】米国特許出願公開第2017/0134157(US,A1)
【文献】特許第6916770(JP,B2)
【文献】岡田 大樹 ほか,2019年 暗号と情報セキュリティシンポジウム(SCIS2019)予稿集 [USB] 2019年 暗号と情報セキュリティシンポジウム予稿集 Proceedings of 2019 Symposium on Cryptography and Information Security,日本,2019年 暗号と情報セキュリティシンポジウム実行委員会,2019年01月15日,2A2-2,p。1-8
【文献】安田 雅哉,他,準同型暗号を用いた複数企業間の顧客情報分析,FIT2013 第12回情報科学技術フォーラム 講演論文集 第4分冊,情報処理学会,2013年08月20日,15~22頁
【文献】林 卓也,他,効率的な準同型内積演算の一般的構成,2017年 暗号と情報セキュリティシンポジウム(SCIS2017),2017年01月24日,3F2-1,pp.1-8
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
平文の空間内で、第1変数及び第2変数を入力とする2変数関数における前記第2変数を前記空間内の定数に固定したときの、前記第1変数に応じた関数値を多項式補間により定義した第1多項式の係数を、前記定数それぞれについて記憶する第1記憶部と、
前記第2変数が前記定数と等しい場合に1となり、異なる場合に0となる関数を多項式補間により定義した第2多項式の係数を、前記定数それぞれについて記憶する第2記憶部と、
前記第1変数の値及び前記第2変数の値をそれぞれ準同型暗号方式により暗号化した、第1暗号文及び第2暗号文の入力を受け付ける入力部と、
前記準同型暗号方式による暗号文の空間内で、前記第1暗号文及び前記第2暗号文の冪乗を計算する秘匿冪乗演算部と、
前記第2変数を前記定数のいずれかに固定し、前記第1多項式の係数ベクトルと前記第1暗号文の前記第1多項式と同次数までの冪乗を並べたベクトルとの内積により、前記第1多項式の値を算出する秘匿関数演算部と、
前記第2多項式の係数ベクトルと前記第2暗号文の前記第2多項式と同次数までの冪乗を並べたベクトルとの内積により、前記第2多項式の値を、前記第2暗号文の暗号化前の平文と前記定数とが異なる場合に0となる判定値暗号文として算出する秘匿等号演算部と、
前記空間内で前記第2変数が取り得る一部の定数毎に、前記秘匿関数演算部による算出結果、及び前記秘匿等号演算部による算出結果の積を算出し総和することにより、前記第1暗号文及び前記第2暗号文を入力とした前記2変数関数の値を出力する出力部と、を備える秘匿計算装置。
【請求項2】
前記第1記憶部は、前記一部の定数についてのみ、前記第1多項式の係数を記憶する請求項1に記載の秘匿計算装置。
【請求項3】
前記第2記憶部は、前記一部の定数についてのみ、前記第2多項式の係数を記憶する請求項1又は請求項2に記載の秘匿計算装置。
【請求項4】
前記第2記憶部は、前記第2変数が取り得る値の空間に応じた次数で前記第2多項式を定義し、
前記秘匿冪乗演算部は、前記第2暗号文の冪乗を、前記第1暗号文の冪乗よりも低い前記次数まで計算する請求項に記載の秘匿計算装置。
【請求項5】
前記2変数関数は、前記第1変数を被除数、前記第2変数を除数とする除算である請求項1から請求項4のいずれかに記載の秘匿計算装置。
【請求項6】
平文の空間内で、第1変数及び第2変数を入力とする2変数関数における前記第2変数を前記空間内の定数に固定したときの、前記第1変数に応じた関数値を多項式補間により定義した第1多項式の係数を、前記定数それぞれについて記憶する第1記憶ステップと、
前記第2変数が前記定数と等しい場合に1となり、異なる場合に0となる関数を多項式補間により定義した第2多項式の係数を、前記定数それぞれについて記憶する第2記憶ステップと、
前記第1変数の値及び前記第2変数の値をそれぞれ準同型暗号方式により暗号化した、第1暗号文及び第2暗号文の入力を受け付ける入力ステップと、
前記準同型暗号方式による暗号文の空間内で、前記第1暗号文及び前記第2暗号文の冪乗を計算する秘匿冪乗演算ステップと、
前記第2変数を前記定数のいずれかに固定し、前記第1多項式の係数ベクトルと前記第1暗号文の前記第1多項式と同次数までの冪乗を並べたベクトルとの内積により、前記第1多項式の値を算出する秘匿関数演算ステップと、
前記第2多項式の係数ベクトルと前記第2暗号文の前記第2多項式と同次数までの冪乗を並べたベクトルとの内積により、前記第2多項式の値を、前記第2暗号文の暗号化前の平文と前記定数とが異なる場合に0となる判定値暗号文として算出する秘匿等号演算ステップと、
前記空間内で前記第2変数が取り得る一部の定数毎に、前記秘匿関数演算ステップにおける算出結果、及び前記秘匿等号演算ステップにおける算出結果の積を算出し総和することにより、前記第1暗号文及び前記第2暗号文を入力とした前記2変数関数の値を出力する出力ステップと、をコンピュータが実行する秘匿計算方法。
【請求項7】
請求項1から請求項のいずれかに記載の秘匿計算装置としてコンピュータを機能させるための秘匿計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2変数関数の秘匿計算装置、秘匿計算方法及び秘匿計算プログラムに関する。
【背景技術】
【0002】
従来、暗号化したまま平文の計算を行う秘密計算の手法が提案されている。
例えば、非特許文献1~3では、入力の整数がビット値に変換された状態、つまり平文がビット値の場合(以下、bit-wiseと表現する)に、完全準同型暗号方式による暗号文上での四則演算アルゴリズム(秘匿加算、秘匿減算、秘匿乗算、秘匿除算)が提案されている。
また、非特許文献4では、入力の整数がビット値に変換されず、つまり平文が整数値の場合(以下、integer-wiseと表現する)に、完全準同型暗号方式による暗号文上での2値比較演算のアルゴリズムが提案されている。
さらに、非特許文献5では、加法準同型暗号を用いた二者間プロトコルでの秘匿除算方法が提案されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】Yao Chen and Guang Gong. Integer arithmetic over ciphertext and homomorphic data aggregation. In 2015 IEEE Conference on Communications and Network Security (CNS), pages 628-632, Sept 2015.
【文献】Chen Xu, Jingwei Chen, Wenyuan Wu, and Yong Feng. Homomorphically encrypted arithmetic operations over the integer ring. In Feng Bao, Liqun Chen, Robert H. Deng, and Guojun Wang, editors, Information Security Practice and Experience, pages 167-181, Springer, 2016.
【文献】Jingwei Chen, Yong Feng, Yang Liu, and Wenyuan Wu. Faster binary arithmetic operations on encrypted integers. In the 7th International Workshop on Computer Science and Engineering, 2017.
【文献】H. Narumanchi, D. Goyal, N. Emmadi, and P. Gauravaram. Performance analysis of sorting of the data: Integer-wise comparison vs bit-wise comparison. In 2017 IEEE 31st International Conference on Advanced Information Networking and Applications (AINA), pages 902-908, March 2017.
【文献】Morten Dahl, Chao Ning, and Tomas Toft. On secure two-party integer division. In Angelos D. Keromytis, editor, Financial Cryptography and Data Security, pages 164-178. Springer, 2012.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、integer-wiseの秘匿計算は、入力の整数を2進数のビット毎に暗号化する必要がないため、暗号化の回数がbit-wiseに比べて少なく有利となる。また、例えばbit-wiseの加減算は、2進数演算における繰り上げの処理等、完全準同型暗号において処理速度のネックとなる乗算を用いた処理が必要になる。一方、integer-wiseの加減算では、乗算を用いることなく暗号文同士を足し合わせることができるため高速である。
このように、integer-wiseでの秘匿計算が望まれる一方で、次のような課題が存在する。
【0005】
例えば、非特許文献4において、integer-wiseの2値比較演算のアルゴリズムが提案されているが、計算量及び乗算回路の深さのために、bit-wiseでの演算に比べて低速である。また、除算は、2値比較演算をサブモジュールとし、2値比較と減算とを繰り返すことで実現可能だが、2値比較を繰り返すことで、さらに低速となっていた。
また、前述の非特許文献5の秘匿除算方法では、割られる数がl-bitの整数であるのに対し、割る数がlog l-bitの整数であるという制限を加えることで高速化を図っているが、割る数がl-1以下の整数に限られてしまい、汎用性に欠けていた。
このように、完全準同型暗号でのinteger-wiseの高速な除算アルゴリズム、さらには、任意の2変数関数に適用できるinteger-wiseの高速な秘匿計算アルゴリズムは提案されていなかった。
【0006】
本発明は、2変数関数の秘匿計算を汎用的に、かつ、高速に行える秘匿計算装置、秘匿計算方法及び秘匿計算プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る秘匿計算装置は、平文の空間内で、第1変数及び第2変数を入力とする2変数関数における前記第2変数を前記空間内の定数に固定したときの、前記第1変数に応じた関数値を多項式補間により定義した第1多項式の係数を、前記定数それぞれについて記憶する第1記憶部と、前記第1変数の値及び前記第2変数の値をそれぞれ準同型暗号方式により暗号化した、第1暗号文及び第2暗号文の入力を受け付ける入力部と、前記準同型暗号方式による暗号文の空間内で、前記第1暗号文の冪乗を計算する秘匿冪乗演算部と、前記第2変数を前記定数のいずれかに固定し、前記第1多項式の係数と前記第1暗号文の冪乗との内積により、前記第1多項式の値を算出する秘匿関数演算部と、前記第2暗号文の暗号化前の平文と前記定数とが異なる場合に0となる判定値を暗号文で算出する秘匿等号演算部と、前記第2変数が取り得る前記空間内の一部の定数毎の前記秘匿関数演算部による算出結果、及び前記秘匿等号演算部による算出結果の積を総和することにより、前記第1暗号文及び前記第2暗号文を入力とした前記2変数関数の値を出力する出力部と、を備える。
【0008】
前記第1記憶部は、前記一部の定数についてのみ、前記第1多項式の係数を記憶してもよい。
【0009】
前記秘匿計算装置は、前記第2変数が前記定数と等しい場合に1となり、異なる場合に0となる関数を多項式補間により定義した第2多項式の係数を、前記定数それぞれについて記憶する第2記憶部を備え、前記秘匿冪乗演算部は、前記第2暗号文の冪乗をさらに計算し、秘匿等号演算部は、前記第2多項式の係数と前記第2暗号文の冪乗との内積により、前記第2多項式の値を、前記判定値の暗号文として算出してもよい。
【0010】
前記第2記憶部は、前記一部の定数についてのみ、前記第2多項式の係数を記憶してもよい。
【0011】
前記第2記憶部は、前記第2変数が取り得る値の空間に応じた次数で前記第2多項式を定義し、前記秘匿冪乗演算部は、前記第2暗号文の冪乗を、前記第1暗号文の冪乗よりも低い前記次数まで計算してもよい。
【0012】
前記2変数関数は、前記第1変数を被除数、前記第2変数を除数とする除算であってもよい。
【0013】
本発明に係る秘匿計算方法は、平文の空間内で、第1変数及び第2変数を入力とする2変数関数における前記第2変数を前記空間内の定数に固定したときの、前記第1変数に応じた関数値を多項式補間により定義した第1多項式の係数を、前記定数それぞれについて記憶する第1記憶ステップと、前記第1変数の値及び前記第2変数の値をそれぞれ準同型暗号方式により暗号化した、第1暗号文及び第2暗号文の入力を受け付ける入力ステップと、前記準同型暗号方式による暗号文の空間内で、前記第1暗号文の冪乗を計算する秘匿冪乗演算ステップと、前記第2変数を前記定数のいずれかに固定し、前記第1多項式の係数と前記第1暗号文の冪乗との内積により、前記第1多項式の値を算出する秘匿関数演算ステップと、前記第2暗号文の暗号化前の平文と前記定数とが異なる場合に0となる判定値を暗号文で算出する秘匿等号演算ステップと、前記第2変数が取り得る前記空間内の一部の定数毎の前記秘匿関数演算ステップにおける算出結果、及び前記秘匿等号演算ステップにおける算出結果の積を総和することにより、前記第1暗号文及び前記第2暗号文を入力とした前記2変数関数の値を出力する出力ステップと、をコンピュータが実行する。
【0014】
本発明に係る秘匿計算プログラムは、前記秘匿計算装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0015】
本発明によれば、2変数関数の秘匿計算を汎用的に、かつ、高速に行える。
【図面の簡単な説明】
【0016】
図1】実施形態に係る秘匿計算装置の機能構成を示すブロック図である。
図2】実施形態に係る秘匿冪乗演算のアルゴリズムを例示するフローチャートである。
図3】実施形態に係る秘匿定数等号演算を実行する前の事前計算アルゴリズムを例示するフローチャートである。
図4】実施形態に係る秘匿定数等号演算のアルゴリズムを例示するフローチャートである。
図5】実施形態に係る秘匿定数関数演算を実行する前の事前計算アルゴリズムを例示するフローチャートである。
図6】実施形態に係る秘匿定数関数演算のアルゴリズムを例示するフローチャートである。
図7】実施形態に係る秘匿2変数関数演算のアルゴリズムを示す図である。
図8】実施形態に係る秘匿2変数関数演算を秘匿除算演算に適用した場合の実行速度を、制限の有無で比較した実験結果を示す図である。
図9】実施形態に係る部分集合による制限を設けない場合の、準同型乗算の深さと準同型演算の呼び出し回数とを示す図である。
図10】実施形態に係る部分集合による制限を設けた場合の、準同型乗算の深さと準同型演算の呼び出し回数とを示す図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係る秘匿計算装置1の機能構成を示すブロック図である。
秘匿計算装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
【0018】
制御部10は、秘匿計算装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0019】
記憶部20は、ハードウェア群を秘匿計算装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(秘匿計算プログラム)及び実行途中のデータを記憶する。
【0020】
さらに、記憶部20は、素数pを法とする平文の空間Z内で、第1変数及び第2変数を入力とする2変数関数gにおける第2変数を定数に固定したときの、第1変数に応じた関数値を多項式補間により定義した第1多項式の係数ベクトルを、定数それぞれについて記憶する。
本実施形態では、第2変数(例えば、除算における割る数)の空間は、Zの部分集合に限定される。したがって、この部分集合が予め固定されている場合には、定数毎の第1多項式の係数ベクトルは、Z内の一部の定数についてのみ記憶されてもよい。なお、計算の度に部分集合が変更される場合には、係数ベクトルは、Z内の全ての定数について記憶される。
【0021】
また、記憶部20は、平文の空間Z内で、ある変数が定数と等しい場合に1となり、異なる場合に0となる関数を多項式補間により定義した第2多項式の係数ベクトルを、定数それぞれについて記憶する。
本実施形態では、この関数の入力となる第2変数の空間は、Zの部分集合に限定される。したがって、この部分集合が予め固定されている場合には、定数毎の第2多項式の係数ベクトルは、Z内の一部の定数についてのみ記憶されてもよく、さらに、第2多項式は、第1多項式に比べて、部分集合の大きさに応じた次数に低減されてもよい。なお、計算の度に部分集合が変更される場合には、係数ベクトルは、Z内の全ての定数について記憶され、第2多項式の次数は、第1多項式の次数と同じくp-1となる。
【0022】
制御部10は、入力部11と、秘匿冪乗演算部12と、秘匿関数演算部13と、秘匿等号演算部14と、出力部15とを備える。
【0023】
入力部11は、2変数関数gにおける第1変数の値a及び第2変数の値bをそれぞれ準同型暗号方式により暗号化した、第1暗号文C及び第2暗号文Cの入力を受け付ける。
【0024】
秘匿冪乗演算部12は、準同型暗号方式による暗号文の空間内で、第1暗号文Cの冪乗列ベクトル(C,C ,C ,・・・,C p-1)、及び第2暗号文Cの冪乗列ベクトル(C,C ,C ,・・・,C |S|-1)を計算する。なお、|S|は、第2変数の取り得る値からなる集合Sの大きさであり、|S|<pとする。
【0025】
秘匿関数演算部13は、第2変数を定数のいずれかに固定し、記憶部20に予め記憶された第1多項式の係数ベクトルと、第1暗号文Cの冪乗を並べたベクトルとの内積により、第1多項式の値を算出する。
【0026】
秘匿等号演算部14は、第2暗号文Cの暗号化前の平文bと定数とが異なる場合に0となる判定値を暗号文で算出する。
具体的には、秘匿等号演算部14は、記憶部20に予め記憶された第2多項式の係数ベクトルと、第2暗号文Cの冪乗を並べたベクトルとの内積により、第2多項式の値を、判定値の暗号文として算出する。
【0027】
出力部15は、Zの部分空間である第2変数が取り得る値の集合Sに含まれる定数毎の、秘匿関数演算部13による算出結果、及び秘匿等号演算部14による算出結果の積を総和することにより、第1暗号C文及び第2暗号文Cを入力とした2変数関数の値g(C,C)を出力する。
【0028】
以下、任意の2変数関数に適用できる、integer-wiseの秘匿計算方法の手順を詳述する。
ここで、pを素数、平文の空間をZ、暗号文の空間を多項式環Rとする。また、平文a,b∈Zを完全準同型暗号方式により暗号化した暗号文をC,Cとする。
【0029】
図2は、本実施形態に係る秘匿2変数関数演算アルゴリズムを構成するサブモジュールの1つである秘匿冪乗演算Pows(C,p)のアルゴリズムを例示するフローチャートである。
【0030】
秘匿冪乗演算Pows(C,p)は、秘匿冪乗演算部12により実行され、第1変数aの暗号文C、及び平文の空間の大きさ(法)pを引数とし、C及びCそれぞれの冪乗を、暗号文同士の乗算を用いて計算し、冪乗列ベクトルC pow:=(C,C ,C ,・・・,C p-1)及びC pow:=(C,C ,C ,・・・,C l-1)を返す。
【0031】
ステップS1において、秘匿冪乗演算部12は、log pを超えない最大の整数lを算出する。
ステップS2において、秘匿冪乗演算部12は、インデックスiを0からl-1までインクリメントしながら、ループ処理を行う。
ステップS3において、秘匿冪乗演算部12は、インデックスjを1から2までインクリメントしながら、ループ処理を行う。
【0032】
ステップS4において、秘匿冪乗演算部12は、暗号文Cの(2+j)乗を、Cの2乗とCのj乗との準同型乗算(FHE.Mult)により算出する。
この処理が繰り返されることにより、Cの2乗から2乗までが算出される。
【0033】
ステップS5において、秘匿冪乗演算部12は、2がp-1より小さいか否かを判定する。この判定がYESの場合、処理はステップS6に移り、判定がNOの場合、処理はステップS8に移る。
【0034】
ステップS6において、秘匿冪乗演算部12は、インデックスjを1からp-1-2までインクリメントしながら、ループ処理を行う。
ステップS7において、秘匿冪乗演算部12は、暗号文Cの(2+j)乗を、Cの2乗とCのj乗との準同型乗算(FHE.Mult)により算出する。
この処理が繰り返されることにより、Cの(2+1)乗から(p-1)乗までが算出される。
【0035】
ステップS8において、秘匿冪乗演算部12は、暗号文暗号文Cの冪乗列ベクトル(C,C ,C ,・・・,C p-1)を出力する。
【0036】
本アルゴリズムにおいて、乗算の深さはO(log(p))に抑えられる。例えば、p=17の場合、C =C×C,C =C ×C ,C =C ×C ,C 16=C ×C のように計算でき、乗算の深さは、log(16)=4である。
【0037】
図3は、本実施形態に係る秘匿2変数関数演算アルゴリズムを構成するサブモジュールの1つである秘匿定数等号演算ConstEq(C pow,y)を実行する前の事前計算アルゴリズムを例示するフローチャートである。
【0038】
ステップS11において、秘匿等号演算部14は、定数yとの等号演算の1変数関数g(x)=1(x=yのとき),0(x≠yのとき)を定義し、全てのx,y∈Zについて、データ点g(x)を取得する。
【0039】
ステップS12において、秘匿等号演算部14は、インデックスiを0からp-1までインクリメントしながら、ループ処理を行う。
ステップS13において、秘匿等号演算部14は、多項式補間により、全てのx∈Zに対してf(x)=g(x)を満たす多項式f(x):Z→Zの係数ベクトルafi ConstEqを求める。
この処理が繰り返されることにより、全てのy∈Zに対して、多項式f(x)の係数ベクトルafy ConstEqが求まる。
【0040】
ステップS14において、秘匿等号演算部14は、全てのy∈Zに対する係数ベクトルafy ConstEqを、定数行列として記憶部20(第2記憶部)に保存する。
【0041】
本アルゴリズムにおいて、仮に、p=17、第2引数の候補集合S={2,3,5}の場合、例えばy=2∈Sについて、秘匿等号演算部14は、データ点群(2,1),(3,0),(5,0)を取得し、多項式補間により、(log p)-1=3次の多項式f(x)を求める。秘匿等号演算部14は、y=3,5∈Sについても同様に多項式補間を行い、それぞれの係数ベクトルを保存する。
【0042】
図4は、本実施形態に係る秘匿2変数関数演算アルゴリズムを構成するサブモジュールの1つである秘匿定数等号演算ConstEq(C pow,y)のアルゴリズムを例示するフローチャートである。
【0043】
秘匿定数等号演算ConstEq(C pow,y)は、秘匿等号演算部14により実行され、第1変数aの暗号文Cの冪乗列ベクトルC pow、及び定数の平文yを引数とし、条件式(a=y)の値(例えば、TRUE=1、FALSE=0)の暗号文であるC(a=y)を返す。
【0044】
ステップS21において、秘匿等号演算部14は、引数である定数yに対応する係数ベクトルafy ConstEqを、事前計算により保存されている定数行列から取得する。
【0045】
ステップS22において、秘匿等号演算部14は、条件式(a=y)の暗号文C(a=y)を、次のように、係数ベクトルと暗号文aの冪乗列ベクトルとの内積により計算し出力する。
(a=y)=f(C
=(afy ConstEq・C pow mod p
【0046】
図5は、本実施形態に係る秘匿2変数関数演算アルゴリズムを構成するサブモジュールである秘匿定数関数演算ConstFunc(C pow,y)を実行する前の事前計算アルゴリズムを例示するフローチャートである。
【0047】
ステップS31において、秘匿関数演算部13は、予め定められた2変数関数g(x,y):Z×Z→Zに対して、yを定数とした1変数関数g(x)=g(x,y)を定義し、全てのx,y∈Zについて、データ点g(x)を取得する。
【0048】
ステップS32において、秘匿関数演算部13は、インデックスiを0からp-1までインクリメントしながら、ループ処理を行う。
ステップS33において、秘匿関数演算部13は、多項式補間により、全てのx∈Zに対してf(x)=g(x)を満たす多項式f(x):Z→Zの係数ベクトルafi ConstFuncを求める。
この処理が繰り返されることにより、全てのy∈Zに対して、多項式f(x)の係数ベクトルafy ConstFuncが求まる。
【0049】
ステップS34において、秘匿関数演算部13は、全てのy∈Zに対する係数ベクトルafy ConstFuncを、定数行列として記憶部20(第1記憶部)に保存する。
【0050】
本アルゴリズムにおいて、f(0)=g(0,y),f(1)=g(1,y),・・・,f(p-1)=g(p-1,y)が与えられると、f(x)が多項式補間により、「f(x)=a{1,y}・x+a{2,y}・x+・・・+a{p-1,y}・xp-1 mod p」と求められる。これにより、係数ベクトル(a{1,y},a{2,y},・・・,a{p-1,y})がy(0≦y<p)と対応付けて記憶される。
仮に、p=17、第2引数の候補集合S={2,3,5}の場合、例えばy=2∈Sについて、秘匿等号演算部14は、{0,1,・・・,16}割る2のデータ点群(0,0),(1,0),(2,1),・・・,(16,8)を取得し、多項式補間により、p-1=16次の多項式f(x)を求める。秘匿等号演算部14は、y=3,5∈Sについても同様に多項式補間を行い、それぞれの係数ベクトルを保存する。
【0051】
図6は、本実施形態に係る秘匿2変数関数演算アルゴリズムを構成するサブモジュールである秘匿定数関数演算ConstFunc(C pow,y)のアルゴリズムを例示するフローチャートである。
【0052】
秘匿定数関数演算ConstFunc(C pow,y)は、秘匿関数演算部13により実行され、第1変数aの暗号文Cの冪乗列ベクトルC pow、及び定数の平文yを引数とし、2変数関数の第2変数をyに固定した1変数関数g(a,y)の暗号文であるC(a,y)=g(C,y)を返す。
【0053】
ステップS41において、秘匿関数演算部13は、引数である定数yに対応する係数ベクトルafy ConstFuncを、事前計算により保存されている定数行列から取得する。
【0054】
ステップS42において、秘匿関数演算部13は、g(a,y)の暗号文Cg(a,y)を、次のように、係数ベクトルと暗号文aの冪乗列ベクトルとの内積により計算し出力する。
g(a,y)=f(C
=(afy ConstFunc・C pow mod p
【0055】
図7は、本実施形態に係る秘匿2変数関数演算Func(C,C,S)のアルゴリズムを示す図である。
【0056】
秘匿2変数関数演算Func(C,C,S)は、第1変数aの暗号文C、第2変数bの暗号文C、及び第2変数bの取り得る値の集合Sを引数とし、g(a,b)の暗号文であるCg(a,b)=g(C,C)を返す。
秘匿2変数関数演算Func(C,C,S)は、前述の3つのサブモジュールPows、ConstFunc、ConstEqを用いて構成される。
【0057】
ステップS51において、制御部10は、内部変数Csumを0に初期化する。
ステップS52において、制御部10(秘匿冪乗演算部12)は、Pows(C,p)により、引数のCについて、1~p-1を冪指数とする冪乗値からなる冪乗列ベクトルC powを算出する。
ステップS53において、制御部10(秘匿冪乗演算部12)は、Pows(C,|S|)により、引数のCについて、1~|S|-1を冪指数とする冪乗値からなる冪乗列ベクトルC powを算出する。
【0058】
ステップS54において、制御部10は、集合Sの要素iのそれぞれについて、後続のステップS55~S57を繰り返すループ処理を行う。
ステップS55において、制御部10(秘匿関数演算部13)は、iを定数として、Cg(a,i)=g(C,i)=ConstFunc(C pow,i)を計算する。
ステップS56において、制御部10(秘匿等号演算部14)は、iを定数として、C(b=i)=ConstEq(C pow,i)を計算する。
【0059】
ステップS57において、制御部10(出力部15)は、Cg(a,i)とC(b=i)との準同型乗算(FHE.Mult)をCsumに足し合わせる。
ここで、Cg(a,i)×C(b=i)は、i=bのときCg(a,b)となり、i≠bのときCとなる。したがって、ループ処理が終了し、Cg(a,i)とC(b=i)との積が総和されると、Csum=Cg(a,b)となる。
ステップS58において、制御部10(出力部15)は、結果として得られたCg(a,b)=Csumを出力する。
【0060】
図8は、本実施形態に係る秘匿2変数関数演算Funcを秘匿除算演算に適用した場合の実行速度を、部分集合Sによる制限の有無で比較した実験結果を示す図である。
ここでは、第2引数(割る数)dの大きさ|S|を、平文空間p=2に対して、lに制限している。
【0061】
例えば、p=17の場合、制限付きの場合の実行時間は0.87秒となり、制限のない場合の3.15秒に比べて、大幅に短縮された、この他、p=37,67,131,257のいずれの場合についても同様に、実行時間は大幅に短縮された。
【0062】
図9及び10は、本実施形態に係る秘匿2変数関数演算Func及びサブモジュールにおける準同型乗算の深さ(Depth)と、準同型乗算(FHE.Mult)、(準同型加算FHE.Add)及び準同型定数乗算(FHE.multConst)の呼び出し回数とを示す図である。
ここで、図9は、部分集合Sによる制限を設けない場合を、図10は、部分集合Sによる制限を設けた場合を示している。
【0063】
部分集合Sの要素数|S|=lとしたとき、lビット長の入力に対する乗算の深さと、準同型演算の呼び出し回数は、制限を設けない場合に比べて削減されている。
この結果、理論的計算量は、O(22l)からO(l2)に削減された。
【0064】
本実施形態によれば、秘匿計算装置1は、任意の2変数関数(例えば、除算、2値比較等)について、第2変数を固定した場合の1変数関数を、多項式補間により表現する。秘匿計算装置1は、この多項式の係数と引数の冪乗とを用いた秘匿定数関数演算ConstFunc、及び秘匿定数等号演算ConstEqにより、任意の2変数関数の秘匿計算を汎用的に実現できる。
【0065】
ここで、秘匿計算装置1は、完全準同型暗号により任意の2変数関数の秘匿計算を実現した。例えば非特許文献5の二者間プロトコルを用いた手法では、ユーザとサーバとの間で少なくともlog lラウンドの通信回数が必要だが、本実施形態の通信回数は1ラウンドのみとなる。
さらに、秘匿計算装置1は、平文の空間Zに対して、第2変数を任意の部分集合Sに制限した。これにより、秘匿計算装置1は、Z全体を対象とする汎用性を維持しつつ、秘匿定数等号演算ConstEq、秘匿定数関数演算ConstFunc、及び処理負荷の大きい準同型乗算の実行回数を削減して高速化を実現した。
また、秘匿計算装置1は、第2変数が取り得る値が部分集合Sの要素のみのため、秘匿定数等号演算ConstEqにおける第2多項式は|S|-1次式となり、計算量を削減できる。
【0066】
秘匿計算装置1は、秘匿冪乗演算Powsによって、引数である暗号文の冪乗列ベクトルを一度計算すると、このベクトルを再利用することで、暗号文同士の乗算の回数が抑制される。
また、秘匿計算装置1は、秘匿定数等号演算ConstEq及び秘匿定数関数演算ConstFuncにおいて、事前計算によって係数ベクトルを保存しておくことで、再利用を可能にした。さらに、集合Sに含まれる定数についてのみ、秘匿定数等号演算ConstEq及び秘匿定数関数演算ConstFuncにおける係数ベクトルを保存しておくことにより、事前計算の処理負荷を低減できる。
【0067】
特に、秘匿計算装置1は、integer-wiseの秘匿除算演算を、従来に比べて高速に実現できる。
これにより、秘匿計算装置1は、除算を含む種々の秘匿計算、例えば、秘匿平均値計算又は秘匿機械学習等を高速に実現できる。
【0068】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0069】
秘匿計算装置1による秘匿計算方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0070】
1 秘匿計算装置
10 制御部
11 入力部
12 秘匿冪乗演算部
13 秘匿関数演算部
14 秘匿等号演算部
15 出力部
20 記憶部(第1記憶部、第2記憶部)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10