(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20241001BHJP
【FI】
G09C1/00 650Z
G09C1/00 620
(21)【出願番号】P 2023537870
(86)(22)【出願日】2021-07-29
(86)【国際出願番号】 JP2021028209
(87)【国際公開番号】W WO2023007680
(87)【国際公開日】2023-02-02
【審査請求日】2024-01-26
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】田宮 寛人
(72)【発明者】
【氏名】一色 寿幸
(72)【発明者】
【氏名】森 健吾
(72)【発明者】
【氏名】中川 紗菜美
【審査官】田中 啓介
(56)【参考文献】
【文献】CHILLOTTI, Ilaria et al.,TFHE: Fast Fully Homomorphic Encryption over the Torus,Cryptology ePrint Archive: Report 2018/421,2019年04月,pp. 1-62,[online], [retrieved on 2021-09-14], Retrieved from <https://eprint.iacr.org/2018/421>
【文献】今林 広樹 ほか,完全準同型暗号による安全頻出パターンマイニング計算量効率化,情報処理学会論文誌データベース(TOD),日本,情報処理学会,2017年03月22日,Vol. 10, No. 1,pp.1-12,[online]
(58)【調査した分野】(Int.Cl.,DB名)
G09C1/00-5/00
H04K1/00-3/00
H04L9/00-9/40
(57)【特許請求の範囲】
【請求項1】
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算システムであって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化して、周期データの暗号文を生成する暗号化装置と、
前記周期データの暗号文に前記不定元のシフト量乗を作用することにより、前記周期データの暗号文における前記データの周期的な配列をシフトする準同型巡回演算装置と、
を備える準同型巡回演算システム。
【請求項2】
前記準同型巡回演算装置は、前記不定元のシフト量乗を暗号化したものと、前記周期データの暗号文とを準同型乗算することで、前記周期データの暗号文における前記データの周期的な配列をシフトする、
請求項1に記載の準同型巡回演算システム。
【請求項3】
前記準同型巡回演算装置は、前記周期データの暗号文を前記不定元に進数を代入したもののシフト量乗でスカラー倍することで、前記周期データの暗号文における前記データの周期的な配列をシフトする、
請求項1に記載の準同型巡回演算システム。
【請求項4】
前記進数
をrとし、前記配列の周期nと暗号文空間サイズdを用いたとき、rn ≡ -1 mod dを満た
す、請求項3に記載の準同型巡回演算システム。
【請求項5】
前記暗号化装置は、前記データの周期的な配列にノイズベクトルを付加してから不定元の多項式の係数に格納して暗号化する、
請求項1から請求項4のいずれか1つに記載の準同型巡回演算システム。
【請求項6】
前記暗号化装置は、前記データの周期的な配列を周期的に冗長させてから不定元の多項式の係数に格納して暗号化する、
請求項1から請求項5のいずれか1つに記載の準同型巡回演算システム。
【請求項7】
前記周期的な配列は、評価用の値を代入することで評価を行いたい評価多項式の係数であり、
前記暗号化装置は、前記評価多項式の係数を暗号化し、
前記準同型巡回演算装置は、前記評価用の値を暗号化した暗号文に対して1シフトと前記暗号文自身の乗算とを繰り返し、前記評価多項式の係数の暗号文との内積演算をすることで、前記評価多項式に前記評価用の値を代入したものの暗号文を得る、
請求項1から請求項5のいずれか1つに記載の準同型巡回演算システム。
【請求項8】
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算装置であって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって生成した暗号文に前記不定元のシフト量乗を作用することにより、周期データの暗号文における前記データの周期的な配列をシフトする準同型巡回演算装置。
【請求項9】
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算を
暗号化装置と準同型巡回演算装置がする準同型巡回演算方法であって、
前記暗号化装置が前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって周期データの暗号文を生成するステップと、
前記準同型巡回演算装置が前記周期データの暗号文に前記不定元のシフト量乗を作用することによって前記周期データの暗号文における前記データの周期的な配列をシフトするステップと、
を備える準同型巡回演算方法。
【請求項10】
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をすることをコンピュータに行わせるプログラムであって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって生成した暗号文に前記不定元のシフト量乗を作用することにより、周期データの暗号文における前記データの周期的な配列をシフトするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムに関するものである。
【背景技術】
【0002】
暗号技術の一つに準同型暗号というものがある。準同型暗号とは、平文m1,m2の暗号文Enc(m1), Enc(m2)が与えられたときに、平文m1, m2の二項演算m1○m2の暗号文Enc(m1○m2)を平文m1, m2に復号することなく計算できるものをいう。ここで「○」は二項演算であり、例えば加法「+」や乗法「×」である。加法「+」に関する準同型暗号は、加法準同型暗号と呼ばれている。また、乗法「×」に関しても準同型である準同型暗号は、完全準同型暗号と呼ばれている。
【0003】
完全準同型暗号は、加法および乗法に関しても準同型であるので最も性質がよい。しかしながら、完全準同型暗号は、計算量が多く実用に難点がある。そこで、加法準同型暗号と完全準同型暗号の中間的性質の準同型暗号も開発されている。例えば、Somewhat準同型暗号と呼ばれる暗号方式は、有限回の加算と乗算に関する準同型性を有する準同型暗号である(例えば非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0004】
【文献】Yasuda M., Shimoyama T., Kogure J., Yokoyama K., Koshiba T. (2013) Packed Homomorphic Encryption Based on Ideal Lattices and Its Application to Biometrics. In: Cuzzocrea A., Kittl C., Simos D.E., Weippl E., Xu L. (eds) Security Engineering and Intelligence Informatics. CD-ARES 2013. Lecture Notes in Computer Science, vol 8128. Springer, Berlin, Heidelberg.
【発明の概要】
【発明が解決しようとする課題】
【0005】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0006】
ところで、現実のコンピュータシステムでは、加法および乗法だけでなく、その他の良く使われる演算を用意するのが通常である。理論的には加法および乗法の組み合わせで実現される演算であっても、所定の演算をプロトコルとしてユーザーに提供する方が便利だからである。そのような演算の例として巡回演算がある。巡回演算とは、データの周期的な配列に対してデータの順序を保ちながら格納場所を移動させる演算である。データの順序を保ちながら格納場所を移動させる演算は一般にシフトと呼ばれており、巡回演算は周期的な配列に対してシフトを行う演算である。
【0007】
もちろん、準同型暗号のシステムにおいて巡回演算を実施するには、単に巡回演算を実現するだけではなく、暗号化されたデータの周期的な配列を復号することなく、データの格納場所をシフトする必要がある。そして、準同型暗号において巡回演算を実施するためには、準同型暗号固有の問題として計算コストにも対応する必要がある。
【0008】
本発明の目的は、上述した課題を鑑み、暗号化されたデータの周期的な配列を復号することなく、データの格納場所をシフトする準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムを提供することにある。
【課題を解決するための手段】
【0009】
本発明の第1の視点では、少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算システムであって、前記データの周期的な配列を不定元の多項式の係数に格納して暗号化して、周期データの暗号文を生成する暗号化装置と、前記周期データの暗号文に前記不定元のシフト量乗を作用することにより、前記周期データの暗号文における前記データの周期的な配列をシフトする準同型巡回演算装置と、を備える準同型巡回演算システムが提供される。
【0010】
本発明の第2の視点では、少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算装置であって、前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって生成した暗号文に前記不定元のシフト量乗を作用することにより、前記周期データの暗号文における前記データの周期的な配列をシフトする準同型巡回演算装置が提供される。
【0011】
本発明の第3の視点では、少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算方法であって、前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって周期データの暗号文を生成するステップと、前記周期データの暗号文に前記不定元のシフト量乗を作用することによって前記周期データの暗号文における前記データの周期的な配列をシフトするステップと、を備える準同型巡回演算方法が提供される。
【0012】
本発明の第4の視点では、少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をすることをコンピュータに行わせるプログラムであって、前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって生成した暗号文に前記不定元のシフト量乗を作用することにより、前記周期データの暗号文における前記データの周期的な配列をシフトするプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0013】
本発明の各視点によれば、暗号化されたデータの周期的な配列を復号することなく、データの格納場所をシフトする準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムを提供することができる。
【図面の簡単な説明】
【0014】
【
図1】
図1は、第1の実施形態における準同型巡回演算システムの概略構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態における準同型巡回演算装置の概略構成例を示すブロック図である。
【
図3】
図3は、第1の実施形態におけるシステムのシステムフローチャートである。
【
図4】
図4は、準同型巡回演算装置のハードウェア構成例を示す図である。
【
図5】
図5は、複素環式化合物の類似度の秘密計算の概念を示す図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0016】
[第1の実施形態]
以下、
図1、
図2を参照して、第1の実施形態に係る準同型巡回演算システムについて説明する。第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。
【0017】
図1は、第1の実施形態における準同型巡回演算システムの概略構成例を示すブロック図である。
図1に示すように、第1の実施形態に係る準同型巡回演算システム100は、暗号化装置110と準同型巡回演算装置120とを備えている。暗号化装置110および準同型巡回演算装置120は、後にハードウェア構成を例示する情報処理装置(コンピュータ)である。暗号化装置110と準同型巡回演算装置120は、有線通信によって接続されていてもよく、また、無線通信によって接続されていてもよい。例えば、暗号化装置110は、汎用的パーソナルコンピュータとすることもでき、スマートフォンなどのモバイル端末とすることもできる。
【0018】
図1に示す第1の実施形態に係る準同型巡回演算システム100は、データの配列を暗号化でき、少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の巡回演算をするためのものである。暗号化装置110は、データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって周期データの暗号文を生成し、準同型巡回演算装置120は、周期データの暗号文に不定元のシフト量乗を作用することによって周期データの暗号文におけるデータの周期的な配列をシフトする。
【0019】
なお、準同型巡回演算装置120は、データの周期的な配列を復号することなくシフトする。したがって、準同型巡回演算装置120の出力も暗号文である。得られた暗号文をどのように用いるかは後に例示する実施形態など様々であるが、得られた暗号文を復号するための復号装置を準同型巡回演算装置120と分けて別途備えるように構成すると、準同型暗号の秘密鍵と公開鍵を異なる装置に分けて管理することができるので安全性が高まるので好ましい。
【0020】
第1の実施形態で用いる準同型暗号は、データの配列を暗号化でき、少なくとも1回の乗算に関して準同型演算が定義されるものを用いることができる。なお、実施形態にて直接的に用いるものではないが、加算についても準同型演算が定義されていることが好ましい。すなわち、第1の実施形態で用いる準同型暗号には、以下の関係式を満たす準同型加算および準同型乗算が定義されている。
・準同型加算
HomAdd(Enc(m), Enc(m′))=Enc(m+m′)
・準同型乗算
HomMul(Enc(m), Enc(m′))=Enc(m*m′)
【0021】
図2は、第1の実施形態における準同型巡回演算装置の概略構成例を示すブロック図である。
図2に示すように、準同型巡回演算装置120は、記憶部121と受信部122と演算部123とを備えている。記憶部121は、準同型巡回演算および準同型巡回演算に関連して用いられる各種情報を記憶している。受信部122は、暗号化装置110から周期データの暗号文を受信する。演算部123は、上記準同型演算を用いて周期データの暗号文を復号することなく巡回演算する。
【0022】
次に、
図3を参照しながら、暗号化装置110と準同型巡回演算装置120との間における処理について説明する。
図3は、第1の実施形態におけるシステムのシステムフローチャートである。
図3に示すシステムフローチャートは、データの配列を暗号化でき、少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算方法の手順を示している。
【0023】
ステップS1では、暗号化装置110がデータの周期的な配列を不定元の多項式の係数に格納して暗号化することによって周期データの暗号文を生成する。生成された周期データの暗号文は、暗号化装置110から準同型巡回演算装置120へ送信される。
【0024】
ステップS2では、準同型巡回演算装置120が、暗号化装置110から受信した周期データの暗号文に不定元のシフト量乗を作用することによって周期データの暗号文におけるデータの周期的な配列をシフトする。
【0025】
なお、ステップS2によって得られた暗号文をどのように用いるかは後に例示する実施形態など様々である。
【0026】
[ハードウェア構成例]
図4は、準同型巡回演算装置のハードウェア構成例を示す図である。すなわち、
図4に示すハードウェア構成例は、準同型巡回演算装置120のハードウェア構成例である。
【0027】
図4に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した準同型巡回演算方法をプログラムとして実行することで、準同型巡回演算装置120の各機能を実現することを可能にする。ただし、
図4に示すハードウェア構成例は、準同型巡回演算装置120の各機能を実現するハードウェア構成の一例であり、準同型巡回演算装置120のハードウェア構成を限定する趣旨ではない。準同型巡回演算装置120は、
図4に示さないハードウェアを含むことができる。
【0028】
図4に示すように、準同型巡回演算装置120が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0029】
CPU11は、準同型巡回演算装置120が実行する準同型巡回演算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、準同型巡回演算装置120が実行する準同型巡回演算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0030】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、準同型巡回演算装置120が実行する準同型巡回演算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。準同型巡回演算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された準同型巡回演算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、例えば準同型巡回演算装置120と暗号化装置110との間の入出力に関するインターフェイスを提供する。
【0031】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した準同型巡回演算方法をプログラムとして実行することで、準同型巡回演算装置120の各機能を実現する。
【0032】
以上のように、第1の実施形態における準同型巡回演算システムは、暗号化されたデータの周期的な配列を復号することなく、データの格納場所をシフトすることに寄与することができる。また、第1の実施形態における準同型巡回演算システムは、準同型巡回演算方法として実施することができ、第1の実施形態における準同型巡回演算方法は、上述のハードウェア構成の情報処理装置(コンピュータ)で実行するプログラムとしても実施可能である。
【0033】
[第2の実施形態]
以下、第2の実施形態に係る準同型巡回演算システムについて説明する。第2の実施形態は、第1の実施形態で用いられた準同型暗号を例示しながらデータの周期的な配列の準同型巡回演算を行う方法を説明する。以下で説明する準同型暗号は、データの配列を暗号化でき、少なくとも1回の乗算に関して準同型演算が定義される。
【0034】
まず、データの周期的な配列の1周期分は、ベクトルと見做すことができる。そして、ベクトルa=(a0, a1, … , an-1)と多項式a(x)=Σi=0
n-1 ai * xiは同一視することができる。この同一視によって、ベクトルa=(a0, a1, … , an-1)とベクトルb=(b0, b1, … , bn-1)には、多項式としての掛け算a(x) * b(x)とベクトルとしての内積<a, b>=Σi=0
n-1 ai * biが定義される。
【0035】
ここで、ノイズベクトルu=(u0, u1, … , un-1)を用意する。ui(i=0,1,…n-1)は{0, 1, -1}のいずれかとなる。ui=0となる確率はqであり、ui=1となる確率は(1-q)/2であり、ui=-1となる確率は(1-q)/2である。
【0036】
このノイズベクトルu=(u0, u1, … , un-1)を用いて、平文ベクトルm=(m0, m1, … , mn-1)の暗号文を以下のように定める。
【0037】
【0038】
ただし、上記暗号文の定義において、tは平文の空間サイズであり、dは暗号文の空間サイズであり、rは進数でありrn = -1 mod dを満たす。また、[ ]dは区間[-d/2, d/2)へのリダクションであり、すなわちdで割った余りが区間[-d/2, d/2)に入るようなリダクションである。
【0039】
上記暗号文は、ノイズベクトルu=(u0, u1, … , un-1)と平文ベクトルm=(m0, m1, … , mn-1)をそれぞれ多項式u(x)=Σi=0
n-1 ui * xiと多項式m(x)=Σi=0
n-1 mi * xiと見做すと、以下のように見做すことができる。
【0040】
【0041】
次に、このように定めた暗号文が準同型暗号となっていることを示す。
【0042】
・準同型加算
多項式で表した平文ベクトルm(x)とm′(x)の暗号文Enc(m(x))とEnc(m′(x))に対して、以下に示すように加法準同型性が成り立つ。
[Enc(m(x))+Enc (m′(x))]d
=[[m(r)+t*u(r)]d+[m′(r)+t*u′(r)]d]d
=[[m(r)+ m′(r)+t*(u(r)+ u′(r))]d
=Enc(m(x)+m′(x) mod t)
ここで、mod tはm(r)+ m(r)の各係数がtより大きくなるとt*(u(r)+ u′(r))側に吸収されることに注意する。
【0043】
・準同型乗算
多項式で表した平文ベクトルm(x)とm′(x)の暗号文Enc(m(x))とEnc(m′(x))に対して、以下に示すように乗法準同型性が成り立つ。
[Enc(m(x))*Enc(m′(x))]d
=[[m(r)+t*u(r)]d*[m′(r)+t*u′(r)]d]d
=[(m(r)+t*u(r))*(m′(r)+t*u′(r))]d
=[m(r)*m′(r)+t*(m(r)*u′(r)+ m′(r)*u(r)+t*u(r)*u′(r))]d
=[m(r)*m′(r)+t*u′′(r) mod rn+1]d
=Enc(m(x)*m′(x) mod (t, xn+1))
ただし、上記式変形においてu′′(r)= m(r)*u′(r)+ m′(r)*u(r)+t*u(r)*u′(r)である。また、rn=-1 mod dであることに注意する。なお、f(x) mod (t, xn+1)は、f(x) mod t mod (xn+1)を表す。つまり、f(x)をxn=-1の関係を用いてn次より小さい多項式f′(x)に変換した後,f′(x)の各係数をtで割った余りの多項式である。
【0044】
・準同型内積
平文ベクトルm=(m0,m1,…,mn-1)に対して、内積用ベクトルm2=(m20,m21,…,m2n-1) =(m0,-mn-1,-mn-2,…,-m1)を用意する。内積用暗号文Enc2(m)をEnc(m2)と定め、内積用ベクトルm2を係数に持つ多項式をm2(x)とする。このとき、多項式で表した平文ベクトルm(x)の暗号文Enc(m(x))と、と平文ベクトルm′(x)の内積用暗号文Enc2(m′(x))に対して、以下が成り立つ。
【0045】
HomMul(Enc(m(x)), Enc2(m′(x)))
=Enc(m(x)*m2′(x) mod (t, xn+1))
=Enc(<m,m′>+m′′(x) mod t)
【0046】
なぜならば、xn=-1であることに注意すると、Σi=1
n-1 -mi*m′i*xn = Σi=1
n-1 mi*m′iとなるので、以下の計算が成り立つからである。
m(x)=m0 + m1*x + m2*x2 + … + mn-1*xn-1
×m2′(x)=m′0 - m′1*xn-1 - m′2*xn-2 - … - m′n-1*x1
=m0* m′0 + Σi=1
n-1 -mi*m′i*xn + m′′(x)
=Σi=0
n-1 mi*m′i + m′′(x)
=<m,m′> + m′′(x)
【0047】
上記準同型演算を用いると、不定元xのシフト量s乗、つまりxsを暗号化したEnc(xs)と、周期データm(x)の暗号文Enc(m(x))とを準同型乗算することで、周期データm(x)の暗号文Enc(m(x))におけるデータの周期的な配列をシフトすることができる。なぜならば、以下の関係式が成り立つからである。
【0048】
HomMul(Enc(m(x)),Enc(xs))
=Enc(m(x)*xs mod (t, xn+1))
=Enc((m>>_s) mod t)
【0049】
ただし、上記数式において>>_はベクトルの右方向への負巡回演算(巡回する際に-1倍される巡回演算)を表す。すなわち、上記準同型巡回演算は、平文ベクトル平文 m=(m0, m1,…,mn-1) に対する暗号文をEnc(m)とし、巡回量をsとする場合、巡回後の暗号文HomCycle(Enc (m), s)が以下のように得られるものである。
HomCycle(Enc (m), s)=Enc((-mn-s, … ,-mn-1, m0, … , mn-1-s ))
【0050】
なお、上記準同型巡回演算は、巡回する際に-1倍されるが後に説明する実施形態からも解るように実用上は問題がない。また、上記準同型巡回演算は、第1の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムに組み合わせることによって、第2の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムを実現する。
【0051】
[第3の実施形態]
次に、第2の実施形態における準同型巡回演算を改良した準同型巡回演算を説明する。第3の実施形態における準同型巡回演算は、第2の実施形態における暗号化および準同型巡回演算以外の準同型演算を用いることができるので、以下の第3の実施形態の説明では、第3の実施形態における準同型巡回演算のみを説明する。
【0052】
第3の実施形態における準同型巡回演算は、周期データm(x)の暗号文Enc(m(x))を不定元xに進数rを代入したもののシフト量s乗、つまりrsでスカラー倍することで、周期データm(x)の暗号文Enc(m(x))における前記データの周期的な配列をシフトする。
【0053】
具体的には、多項式で表した平文m(x)の暗号文Enc(m(x))に対して、巡回量sの準同型巡回演算は以下のように計算することができる。ただし、下記式変形中でu′(r))=u(r)*rsである。
【0054】
[Enc(m(x))*rs]d
=[[m(r)+t*u(r)]d*rs]d
=[m(r)*rs + t*u(r)*rs]d
=[m0*rs + m1*r1+s + … + mn-1*rn-1+s + t*u′(r)]d
=[-mn-s + (-mn-s+1)*r + … + (-mn-1)*rs-1 + m0*rs + m1*rs+1 + … + mn-s-1*rn-1 + t*u′(r)]d
=Enc((m>>_s) mod t)
【0055】
なお、rn = -1 mod d より r-1 = -rn-1 mod d であるから、シフト量sが負の場合は左方向への負巡回演算となる。
【0056】
ここで、第2の実施形態における準同型巡回演算と第3の実施形態における準同型巡回演算の違いについて説明する。
【0057】
第2の実施形態における準同型巡回演算は、HomMul(Enc(m(x)),Enc(xs))を計算するので、Enc(xs)を保管もしくは毎回計算する必要がある。一方、第3の実施形態における準同型巡回演算で用いるriは、暗号化でも用いられるので、事前に計算されていて計算結果がメモリに記憶されていることが多い。したがって、その場合、既に計算されているriを再利用することができるので、追加の保管コストおよび計算コストが発生しない。
【0058】
また、第3の実施形態における準同型巡回演算で用いるriを再利用することができず、計算する必要がある場合であっても、riの計算コストは、Enc(xs)の計算コストよりは小さい。なぜならば、暗号化の定義式Enc(m)=[Σi=0
n-1 (mi+t*ui)*ri]dにriが含まれているからである。
【0059】
さらに、第2の実施形態における準同型巡回演算は、準同型乗算HomMulを用いた場合復号誤りの要因となるノイズの増加を引き起してしまう。ここで、ノイズの増加とは暗号文Enc(m(x))=[m(r)+t*u(r)]dにおけるu(r)に対応する多項式u(x)の係数の絶対値が大きくなることをいう。一方、第3の実施形態における準同型巡回演算では、準同型巡回演算後のノイズがu′(r)=u(r)*rsであるから、対応するu>>_sを係数に持つ多項式であり、巡回した要素の正負は反転しているが、係数の絶対値は変わらない。したがって、ノイズの増加は発生しない。
【0060】
つまり、第3の実施形態における準同型巡回演算は、第2の実施形態における準同型巡回演算と比較すると、追加の記憶コストまたは計算コスト、および復号エラー確率の増加またはそれに対応するために暗号方式のパラメータを大きくすることによる暗号方式全体の計算コストが少ないというメリットがある。
【0061】
なお、第3の実施形態における準同型巡回演算も、第1の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムに組み合わせることによって、第3の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムを実現することができる。
【0062】
[第4の実施形態]
上記説明した準同型巡回演算は、巡回する際に-1倍される負巡回演算である。第4の実施形態では、巡回する際に-1倍される負巡回演算であっても、工夫をすることで実用可能であることを類似度の計算を例に用いて説明する。データの周期的な配列を周期的に冗長させてから不定元の多項式の係数に格納して暗号化することで巡回する際に-1倍される負巡回演算であっても、適切に類似度の計算を行うことができる。
【0063】
図5は、複素環式化合物の類似度の秘密計算の概念を示す図である。
図5に示すように、複数の製薬会社から複素環式化合物Aの構造を暗号化して登録しているデータベースがあるとする。そして、ユーザーは自己が発見等した複素環式化合物Bが過去に登録されている複素環式化合物とどれぐらい類似しているかの類似度を知りたいとする。複素環式化合物がどれぐらい類似しているかの類似度は、例えば下記スコア表のように複素環式化合物に含まれる原子の対応関係によって定められるものとする。
【0064】
【0065】
すると、スコア表から内積演算を用いて類似度の計算をすることができる。例えば、
図5に示される例で説明すると、複素環式化合物Aに含まれる原子に従いスコア表の行を選択して、これら選択されたスコア表の行を一列に繋げた配列Aを作成する。ここでは、左上から右回りに順に繋げるとする。もう一方の複素環式化合物Bについては、複素環式化合物Bに含まれる原子に従い該当する箇所に1を該当しない箇所に0を割り当てる配列Bを作成する。同様に、左上から右回りに順に繋げるとする。
【0066】
この2つの配列Aと配列Bにベクトルとしての内積演算を行うことで類似度計算をすることができる。ここで、既に説明したように内積演算は準同型演算を用いることができるので、複素環式化合物Aと複素環式化合物Bの構造を秘匿したまま類似度計算を行うことができる。
【0067】
【表2】
<A, B> = +5 + 0 + 0 + … + 0 + 0 + 0
【0068】
ところで、複素環式化合物は巡回構造であるので、どこを始点として類似度計算をするかによって類似度の値が変わってしまう。実際、複素環式化合物Aと複素環式化合物Bは同じ複素環式化合物であるが巡回構造の始点が異なっているために類似度が低く計算されてしまっている。準同型巡回演算がない場合は、巡回構造の始点の取り得る組み合わせの数だけ重複して複素環式化合物のデータを暗号化する必要がある。一方、準同型巡回演算があれば、巡回構造の始点を任意の一つに定めて暗号化した後に、準同型巡回演算によって暗号化したまま始点を変更することが可能である。
【0069】
しかしながら、上記説明した準同型巡回演算では、巡回する際に-1倍される負巡回演算であるので以下の2点において問題が生じる。
【0070】
・Case1:Somewhat準同型暗号が扱う平文の次元数と暗号化するベクトルの長さが異なる場合、巡回されない。
【0071】
例えば、以下に示すように、準同型暗号が扱う平文の次元数と暗号化するベクトルの長さが異なる場合、余りの次元の部分には0が格納されている。この場合、準同型内積演算を行っても正しい結果が得られない。
【0072】
【表3】
<A′, B> = +1 (本来は+5)
【0073】
・Case2:Somewhat準同型暗号が扱う平文の次元数と暗号化するベクトルの長さが同じ場合でも、負巡回であることから-1倍された値が計算に利用される。
【0074】
例えば、以下に示すように、準同型暗号が扱う平文の次元数と暗号化するベクトルの長さが同じ場合でも、負巡回であることから-1倍された値が計算に利用されるので、準同型内積演算を行っても正しい結果が得られない。
【0075】
【表4】
<A′, B> = -5 (本来は+5)
【0076】
そこで、第4の実施形態の準同型巡回演算では、データの周期的な配列を周期的に冗長させてから不定元の多項式の係数に格納して暗号化する。これにより、第4の実施形態の準同型巡回演算は、巡回する際に-1倍される負巡回演算であっても、適切に準同型内積演算を行うことができ、結果として、類似度の計算も正しく行うことができる。なお、下記の例からも解るように、周期的に冗長させたもう一方のベクトルの対応部分にはゼロを入れる。なお、冗長部分は白抜き文字で記載された部分である。
【0077】
【0078】
また、準同型暗号が扱う平文の次元数と暗号化するベクトルの長さが同じ場合でも、データの周期的な配列を周期的に冗長させてから不定元の多項式の係数に格納して暗号化することで、巡回する際に-1倍される負巡回演算であっても、適切に準同型内積演算を行うことができ、結果として、類似度の計算も正しく行うことができる。
【0079】
【0080】
以下、上記説明した第4の実施形態の準同型巡回演算をより具体的に説明する。なお、以下の説明では、第1の実施形態の説明で用いた暗号化装置110および準同型巡回演算装置120を参照するが装置構成が必ずしもこれに限定されるものではない。
【0081】
・前提条件
まず、前提条件として、各要素は0からl-1にエンコードされるものとする。スコア空間のサイズはssizeであり、周期的なデータの配列の長さはrsizeであるとする。また、ここでの巡回演算は、左右両方へのシフトを許容し、左シフトのシフト量をslとし、右シフトのシフト量をsrとする。また、下記スコア表のi行目をベクトルTiと見做す。
【0082】
【0083】
・セットアップ
セキュリティパラメータを入力とし、係数空間サイズs>ssizeのn-1次(n≧(rsize+sl+sr)×l)の多項式を平文として扱うことができるSomewhat準同型暗号の公開鍵pkと秘密鍵skを生成する。ここで、s>ssizeは出力される可能性のあるスコアをすべて扱えることを意味している。また、n≧(rsize+sl+sr)×lは暗号化するベクトルの長さを暗号化できるための条件である。
【0084】
・登録
登録フェーズでは、公開鍵pkとデータの周期的な配列(ベクトル)x=(x0, x1, … , xr_size-1)を入力とし、以下の計算を行う。なお、この処理は典型的には暗号化装置110を用いて行われるが、事前に準同型巡回演算装置120に登録しておくことができるのであれば装置に限定されない。
1.データの周期的な配列(ベクトル)xを冗長化したベクトルをx′=(xr_size-s_r, … , xr_size-1, x0, … , xr_size-1, x0, ... , xs_l)とする。
2.ベクトルx′の各要素に対応するスコア表の行ベクトルを並べたベクトルを T=(Tx_{r_size-s_r}, ... , Tx_{r_size-1}, Tx_0, … , Tx_{r_size-1}, Tx_0, … , Tx_{s_l})とする(下記表を参照)。
3.c1=Enc(T)を計算し出力する。
【0085】
【0086】
・クエリ
クエリのフェーズでは、暗号化装置110が公開鍵pkとデータの周期的な配列(ベクトル)y=(y0, y1, … , yr_size-1)を入力とし、以下の計算を行う。
1.ベクトルyの各要素の値の次元のみ1でそれ以外0であるベクトルを並べたベクトルをB=(By_0, … , By_{r_size-1}),Bi=(b0, b1, … ,bl-1),bj={0 if j≠yi ,1 if j=yi}とする。
2.ベクトルBの左右にsr, sl個の次元数lの零ベクトルを追加したベクトルをB′=(0s_r*l, By_0, … , By_{r_size-1}, 0s_l*l)とする。ここで、0aは次元数aの零ベクトルを表す(下記表を参照)。
3.c2=Enc2(B′) を計算し、出力を準同型巡回演算装置120へ送信する。
【0087】
【0088】
・類似度計算
類似度計算のフェーズでは、準同型巡回演算装置120が公開鍵pkと登録で生成された暗号文c1とクエリで生成された暗号文c2とを入力とし、以下の計算を行う。
1.空の集合C={ }を用意する。
2.j = -sl,...,srに対して以下aからdを計算する。
a. c = HomCycle(c1, l*j)
b. cip = HomIPpk(c, c2)
c. r = (0, r1, r2, … , rn-1) (ri は暗号方式の平文空間上一様ランダム)を生成する。
d. cr=Enc(r)
e. c=HomAdd(cip, cr) を C に追加する。
3.Cを出力し、これを暗号化装置110へ送信する。
【0089】
なお、上記類似度計算のうちaとbの計算は、c = HomCycle(c2, l*j)とcip = HomIPpk(c, c1)としてもよい。また、上記類似度計算のうちcからeの計算は、準同型内積演算のうち定数項以外から情報が漏洩することを防ぐためにマスクをするためのものである。したがって、情報が漏洩することを防ぐ必要がない場合は省略することも可能である。
【0090】
・復号
復号のフェーズでは、暗号化装置110が秘密鍵skと類似度計算で生成された暗号文の集合Cとを入力として、以下の計算を行う。
1.空の集合M={ }を用意する。
2.すべてのc∈Cに対して、以下の計算をする。
a. m = (m0, m1, … , mn-1) = Dec(c) とする。
b. m0 をMに追加する。
3.Mを出力する。
【0091】
以上のように第2の実施形態および第3の実施形態で説明した準同型巡回演算は、巡回する際に-1倍される負巡回演算であるが、工夫をすることで類似度の計算に用いることができることが示された。なお、類似度の計算は、巡回する際に-1倍される負巡回演算を適用することが可能な例の一つに過ぎず、第2の実施形態および第3の実施形態で説明した準同型巡回演算の応用例がこれに限定されるものではない。
【0092】
また、第4の実施形態における準同型巡回演算も、第1の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムに組み合わせることによって、第4の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムを実現することができる。したがって、第4の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムは、データの周期的な配列の類似度計算を行うのに好適な実施形態である。
【0093】
[第5の実施形態]
次に、第2の実施形態および第3の実施形態で説明した準同型巡回演算のもう一つの応用例を説明する。第5の実施形態における準同型巡回演算は、秘匿関数評価に用いられるものである。また、以下の説明では、第1の実施形態の説明で用いた暗号化装置110および準同型巡回演算装置120を参照するが装置構成が必ずしもこれに限定されるものではない。
【0094】
秘匿関数評価とは、データmの暗号文Enc(m)がデータベースサーバに登録されているとし、ユーザーは整数係数の多項式関数f(x)=a0+a1*x+a2*x2+…+aN*xNをデータベースサーバに秘匿したまま関数の評価値f(m)=a0+a1*m+a2*m2+…+aN*mNを計算するものである。ただし、評価したい多項式の次数Nは公開してもよいものとし、秘密鍵は別の安全な手段でユーザーに渡されるとする。
【0095】
まず、比較のために準同型巡回演算を用いない秘匿関数評価について説明する。この準同型巡回演算を用いない秘匿関数評価は、ホーナー法を用いるものであり、f(x)=a0+a1*x+a2*x2+…+aN*xNをf(x)=a0+x*(a1+x*(a2+…x(aN-1+x*aN)))として書き換えることができることを利用する。このホーナー法は最も少ない加算と乗算の演算回数でn次の多項式の評価を行うことができることが知られている。
【0096】
1.ユーザーはEnc(a0), Enc(a1), ... , Enc(aN)を計算し、これらをデータベースサーバに送付する。
2.データベースサーバは以下のように準同型演算を用いてEnc(f(m))を計算し、ユーザーに送付する。
a. c = Enc(aN)
b. i = N-1, N-2, ... , 0に対して、以下を計算する。
1. c=HomMul(c, Enc(m))
2. c=HomAdd(c, Enc(ai))
3.m′=(m′0, m′1, ... , m′n-1)=Dec(c)とする。
4.m′0を評価値f(m)= a0+a1*m+a2*m2+…+aN*mNとする。
【0097】
上記計算から解るように、ホーナー法を用いる秘匿関数評価では、評価したい多項式の次数Nに対して、ユーザーはN+1個の暗号文Enc(a0), Enc(a1), ... , Enc(aN)を計算し、データベースサーバに送付する。したがって、評価したい多項式の次数Nが大きくなるとユーザーの暗号化コストとデータベースサーバ間の通信量が増加することになる。
【0098】
そこで、準同型巡回演算を用いることで、評価したい多項式の次数Nが大きい場合でもユーザーの暗号化コストとデータベースサーバ間の通信量が増加しないようにする。
【0099】
具体的には、以下のように多項式関数f(x)=a0+a1*x+a2*x2+…+aN*xNをデータベースサーバに秘匿したまま関数の評価値f(m)=a0+a1*m+a2*m2+…+aN*mNを計算する。
【0100】
1.まず、ユーザーはユーザー端末(暗号化装置110)を用いて内積用暗号文Enc2((a0, a1, ... , aN))を計算し、これをデータベースサーバに送付する。
2.データベースサーバ(準同型巡回演算装置120)は以下のように準同型演算を用いてEnc(f(m))を計算する。
A. c=Enc(m)
B. 次の処理をN-1回繰り返し,Enc((m, m2, ... , mN))を計算する。
a. c=HomMul(c, Enc(m))
b. c=HomCycle(c, 1)
c. c=HomAdd(c,Enc(m))
C. 次の処理でEnc((1, m, m2, ... , mN))を計算
a. c=HomCycle(c, 1)
b. c=HomAdd(c,Enc(1)) (Enc(1)は予め計算しておく)
D.上記のように計算されたc= Enc((m, m2, ... , mN))とユーザーから送信されたEnc2((a0, a1, ... , aN))との準同型内積c=HomIP(c, Enc2((a0, a1, ... , aN)))を計算する。この計算後、c=Enc(a0+a1*m+a2*m2+…+aN*mN)=Enc(f(m))となっている。
3.ユーザーはユーザー端末(暗号化装置110)にて秘密鍵を用いてcを復号し、評価値f(m)を取り出す。
【0101】
ここで、準同型巡回演算を用いない秘匿関数評価方法(ホーナー法)と第5の実施形態の準同型巡回演算を用いる秘匿関数評価方法の比較を行う。下記表は、準同型巡回演算を用いない秘匿関数評価方法(ホーナー法)と第5の実施形態の準同型巡回演算を用いる秘匿関数評価方法を比較した表である。なお、HomMulとHomCycleの計算コストは同じであり、EncとEnc2の計算コストは同じあり、計算コストの比較は処理回数の比較をすればよい。
【0102】
【0103】
上記比較表から解るように、第5の実施形態の準同型巡回演算を用いる秘匿関数評価の方が、準同型巡回演算を用いない秘匿関数評価よりも、暗号化の計算コストおよびユーザーからデータベースサーバへの通信量が少なくて済む。一方、第5の実施形態の準同型巡回演算を用いる秘匿関数評価の方が、準同型巡回演算を用いない秘匿関数評価よりも、データベースサーバで行われる準同型処理の計算コストが大きい。したがって、第5の実施形態の準同型巡回演算を用いる秘匿関数評価は、ユーザーが用いる端末(暗号化装置110)が非力である場合などに好適に活用することができる。
【0104】
また、第5の実施形態における準同型巡回演算も、第1の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムに組み合わせることによって、第5の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムを実現することができる。したがって、第5の実施形態の準同型巡回演算システム、準同型巡回演算装置、準同型巡回演算方法および準同型巡回演算プログラムは、秘匿関数評価を行うのに好適な実施形態である。
【0105】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算システムであって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化して、周期データの暗号文を生成する暗号化装置と、
前記周期データの暗号文に前記不定元のシフト量乗を作用することにより、前記周期データの暗号文における前記データの周期的な配列をシフトする準同型巡回演算装置と、
を備える準同型巡回演算システム。
[付記2]
前記準同型巡回演算装置は、前記不定元のシフト量乗を暗号化したものと、前記周期データの暗号文とを準同型乗算することで、前記周期データの暗号文における前記データの周期的な配列をシフトする、
付記1に記載の準同型巡回演算システム。
[付記3]
前記準同型巡回演算装置は、前記周期データの暗号文を前記不定元に進数を代入したもののシフト量乗でスカラー倍することで、前記周期データの暗号文における前記データの周期的な配列をシフトする、
付記1に記載の準同型巡回演算システム。
[付記4]
前記進数rは、前記配列の周期nと暗号文空間サイズdを用いたとき、rn ≡ -1 mod dを満たす数である、付記3に記載の準同型巡回演算システム。
[付記5]
前記暗号化装置は、前記データの周期的な配列にノイズベクトルを付加してから不定元の多項式の係数に格納して暗号化する、
付記1から付記4のいずれか1つに記載の準同型巡回演算システム。
[付記6]
前記暗号化装置は、前記データの周期的な配列を周期的に冗長させてから不定元の多項式の係数に格納して暗号化する、
付記1から付記5のいずれか1つに記載の準同型巡回演算システム。
[付記7]
前記周期的な配列は、評価用の値を代入することで評価を行いたい評価多項式の係数であり、
前記暗号化装置は、前記評価多項式の係数を暗号化し、
前記準同型巡回演算装置は、前記評価用の値を暗号化した暗号文に対して1シフトと前記暗号文自身の乗算とを繰り返し、前記評価多項式の係数の暗号文との内積演算をすることで、前記評価多項式に前記評価用の値を代入したものの暗号文を得る、
付記1から付記5のいずれか1つに記載の準同型巡回演算システム。
[付記8]
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算装置であって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって生成した暗号文に前記不定元のシフト量乗を作用することにより、周期データの暗号文における前記データの周期的な配列をシフトする準同型巡回演算装置。
[付記9]
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をする準同型巡回演算方法であって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって周期データの暗号文を生成するステップと、
前記周期データの暗号文に前記不定元のシフト量乗を作用することによって前記周期データの暗号文における前記データの周期的な配列をシフトするステップと、
を備える準同型巡回演算方法。
[付記10]
少なくとも1回の乗算に関して準同型演算が定義される準同型暗号を用いてデータの周期的な配列の準同型巡回演算をすることをコンピュータに行わせるプログラムであって、
前記データの周期的な配列を不定元の多項式の係数に格納して暗号化することによって生成した暗号文に前記不定元のシフト量乗を作用することにより、周期データの暗号文における前記データの周期的な配列をシフトするプログラム。
【0106】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0107】
100 準同型巡回演算システム
110 暗号化装置
120 準同型巡回演算装置
121 記憶部
122 受信部
123 演算部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部