JP2022180257A - 内積計算装置、内積計算方法、および、内積計算プログラム - Google Patents
内積計算装置、内積計算方法、および、内積計算プログラム Download PDFInfo
- Publication number
- JP2022180257A JP2022180257A JP2021087272A JP2021087272A JP2022180257A JP 2022180257 A JP2022180257 A JP 2022180257A JP 2021087272 A JP2021087272 A JP 2021087272A JP 2021087272 A JP2021087272 A JP 2021087272A JP 2022180257 A JP2022180257 A JP 2022180257A
- Authority
- JP
- Japan
- Prior art keywords
- inner product
- vectors
- vector
- encrypted
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 111
- 239000013598 vector Substances 0.000 claims abstract description 194
- 238000000034 method Methods 0.000 claims description 18
- 230000008878 coupling Effects 0.000 claims 2
- 238000010168 coupling process Methods 0.000 claims 2
- 238000005859 coupling reaction Methods 0.000 claims 2
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000007405 data analysis Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
【課題】ベクトル同士の内積計算を、準同型暗号でデータを暗号化した状態でもベクトルの要素数に制限を設けることなく、効率的に計算することを目的とする。【解決手段】内積計算装置100は、各々のベクトルの要素数がk(kは自然数)であり、各々が準同型暗号により暗号化された2つの暗号化ベクトルの内積を計算する。内積計算装置100は、2つの暗号化ベクトルの要素ごとの和および積の算出と、2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いる。パディング部120は、2つの暗号化ベクトルの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、2つの暗号化ベクトルの各々にゼロパディングを施す。計算部130は、ゼロパディングを施された2つの暗号化ベクトルに対して準同型演算を用いることにより、先頭の要素に2つの暗号化ベクトルの内積が格納されたベクトルRを算出する。【選択図】図1
Description
本開示は、内積計算装置、内積計算方法、および、内積計算プログラムに関する。特に、準同型暗号および準同型演算を利用した内積計算装置、内積計算方法、および、内積計算プログラムに関する。
準同型暗号とは、データを暗号化したまま演算できる暗号技術である。また、データを暗号文のまま演算する処理は準同型演算と呼ばれる。準同型演算することが可能な演算の種類および回数は具体的な方式によって異なる。準同型暗号を用いることにより、データを秘匿した状態のまま、クラウドサーバといった装置へ分析を委託することが可能となる。
準同型演算は一般的に計算時間といった計算コストが非常に大きい。準同型演算を利用したデータ分析では、データ分析の計算方法を工夫することにより、計算コストを減少させることが必要となる。
非特許文献1では、準同型暗号を利用することで、入力データを暗号化したまま機械学習の推論フェーズを実行する方法が説明されている。非特許文献1では、推論フェーズにおいて繰り返し実行されるベクトル同士の内積計算を、準同型暗号でデータを暗号化した状態でも効率的に計算する方法が開示されている。
Alon Brutzkus, Oren Elisha, Ran Gilad-Bachrach "Low Latency Privacy Preserving Inference", In International Conference on Machine Learning, 2019.
非特許文献1に記載されている方法には、内積計算を実行したいベクトルの要素数が2の冪(2n(nは自然数))で表される数でなければならないという制限が存在する。
本開示では、主に、ベクトル同士の内積計算を、準同型暗号でデータを暗号化した状態でもベクトルの要素数に制限を設けることなく、効率的に計算することを目的とする。
本開示に係る内積計算装置は、
各々のベクトルの要素数がk(kは自然数)であり、各々が準同型暗号により暗号化された2つの暗号化ベクトルの内積を計算する内積計算装置であって、前記2つの暗号化ベクトルの要素ごとの和および積の算出と、前記2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いる内積計算装置において、
前記2つの暗号化ベクトルの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、前記2つの暗号化ベクトルの各々にゼロパディングを施すパディング部と、
前記ゼロパディングを施された2つの暗号化ベクトルに対して前記準同型演算を用いることにより、先頭の要素に前記2つの暗号化ベクトルの内積が格納されたベクトルRを算出する計算部とを備える。
各々のベクトルの要素数がk(kは自然数)であり、各々が準同型暗号により暗号化された2つの暗号化ベクトルの内積を計算する内積計算装置であって、前記2つの暗号化ベクトルの要素ごとの和および積の算出と、前記2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いる内積計算装置において、
前記2つの暗号化ベクトルの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、前記2つの暗号化ベクトルの各々にゼロパディングを施すパディング部と、
前記ゼロパディングを施された2つの暗号化ベクトルに対して前記準同型演算を用いることにより、先頭の要素に前記2つの暗号化ベクトルの内積が格納されたベクトルRを算出する計算部とを備える。
本開示に係る内積計算装置によれば、暗号化ベクトルの要素数に制限を設けることなく、暗号化ベクトル同士の内積計算を効率的に行うことができるという効果を奏する。
以下、本実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
実施の形態1.
***構成の説明***
図1は、本実施の形態に係る内積計算装置100の構成例を示す図である。
内積計算装置100は、コンピュータである。内積計算装置100は、プロセッサ910を備えるとともに、メモリ921、補助記憶装置922、入力インタフェース930、出力インタフェース940、および通信装置950といった他のハードウェアを備える。プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
***構成の説明***
図1は、本実施の形態に係る内積計算装置100の構成例を示す図である。
内積計算装置100は、コンピュータである。内積計算装置100は、プロセッサ910を備えるとともに、メモリ921、補助記憶装置922、入力インタフェース930、出力インタフェース940、および通信装置950といった他のハードウェアを備える。プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
内積計算装置100は、機能要素として、取得部110とパディング部120と計算部130と出力部140と記憶部150とを備える。
取得部110とパディング部120と計算部130と出力部140の機能は、ソフトウェアにより実現される。記憶部150は、メモリ921に備えられる。なお、記憶部150は、補助記憶装置922に備えられていてもよいし、メモリ921と補助記憶装置922に分散して備えられていてもよい。
プロセッサ910は、内積計算プログラムを実行する装置である。内積計算プログラムは、取得部110とパディング部120と計算部130と出力部140の機能を実現するプログラムである。
プロセッサ910は、演算処理を行うIC(Integrated Circuit)である。プロセッサ910の具体例は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
プロセッサ910は、演算処理を行うIC(Integrated Circuit)である。プロセッサ910の具体例は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
メモリ921は、データを一時的に記憶する記憶装置である。メモリ921の具体例は、SRAM(Static Random Access Memory)、あるいはDRAM(Dynamic Random Access Memory)である。
補助記憶装置922は、データを保管する記憶装置である。補助記憶装置922の具体例は、HDDである。また、補助記憶装置922は、SD(登録商標)メモリカード、CF、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬の記憶媒体であってもよい。なお、HDDは、Hard Disk Driveの略語である。SD(登録商標)は、Secure Digitalの略語である。CFは、CompactFlash(登録商標)の略語である。DVDは、Digital Versatile Diskの略語である。
補助記憶装置922は、データを保管する記憶装置である。補助記憶装置922の具体例は、HDDである。また、補助記憶装置922は、SD(登録商標)メモリカード、CF、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬の記憶媒体であってもよい。なお、HDDは、Hard Disk Driveの略語である。SD(登録商標)は、Secure Digitalの略語である。CFは、CompactFlash(登録商標)の略語である。DVDは、Digital Versatile Diskの略語である。
入力インタフェース930は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース930は、具体的には、USB(Universal Serial Bus)端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。
出力インタフェース940は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子またはHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。出力インタフェース940は、表示器インタフェースともいう。
通信装置950は、レシーバとトランスミッタを有する。通信装置950は、LAN、インターネット、あるいは電話回線といった通信網に接続している。通信装置950は、具体的には、通信チップまたはNIC(Network Interface Card)である。
内積計算プログラムは、内積計算装置100において実行される。内積計算プログラムは、プロセッサ910に読み込まれ、プロセッサ910によって実行される。メモリ921には、内積計算プログラムだけでなく、OS(Operating System)も記憶されている。プロセッサ910は、OSを実行しながら、内積計算プログラムを実行する。内積計算プログラムおよびOSは、補助記憶装置922に記憶されていてもよい。補助記憶装置922に記憶されている内積計算プログラムおよびOSは、メモリ921にロードされ、プロセッサ910によって実行される。なお、内積計算プログラムの一部または全部がOSに組み込まれていてもよい。
内積計算装置100は、プロセッサ910を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、内積計算プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ910と同じように、内積計算プログラムを実行する装置である。
内積計算プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ921、補助記憶装置922、または、プロセッサ910内のレジスタあるいはキャッシュメモリに記憶される。
取得部110とパディング部120と計算部130と出力部140の各部の「部」を「回路」、「工程」、「手順」、「処理」、あるいは「サーキットリ」に読み替えてもよい。内積計算プログラムは、取得処理とパディング処理と計算処理と出力処理を、コンピュータに実行させる。取得処理とパディング処理と計算処理と出力処理の「処理」を「プログラム」、「プログラムプロダクト」、「プログラムを記憶したコンピュータ読取可能な記憶媒体」、または「プログラムを記録したコンピュータ読取可能な記録媒体」に読み替えてもよい。また、内積計算方法は、内積計算装置100が内積計算プログラムを実行することにより行われる方法である。
内積計算プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、内積計算プログラムは、プログラムプロダクトとして提供されてもよい。
内積計算プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、内積計算プログラムは、プログラムプロダクトとして提供されてもよい。
***動作の説明***
次に、本実施の形態に係る内積計算装置100の動作について説明する。内積計算装置100の動作手順は、内積計算方法に相当する。また、内積計算装置100の動作を実現するプログラムは、内積計算プログラムに相当する。
次に、本実施の形態に係る内積計算装置100の動作について説明する。内積計算装置100の動作手順は、内積計算方法に相当する。また、内積計算装置100の動作を実現するプログラムは、内積計算プログラムに相当する。
本実施の形態に係る内積計算装置100は、2つの暗号化ベクトルの内積計算を行う。
暗号化ベクトルとは、準同型暗号により暗号化されたベクトルである。暗号化ベクトルは、ベクトルの要素数がk(kは自然数)であるものとする。ベクトルの要素数をベクトル長ともいう場合がある。
暗号化ベクトルとは、準同型暗号により暗号化されたベクトルである。暗号化ベクトルは、ベクトルの要素数がk(kは自然数)であるものとする。ベクトルの要素数をベクトル長ともいう場合がある。
本実施の形態に係る内積計算装置100は、2つの暗号化ベクトルの要素ごとの和および積の算出と、2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いて、内積計算を行う。準同型演算では、データは暗号化された状態で演算され、演算結果も暗号化された状態で出力される。
本実施の形態においては、内積計算の対象となる暗号化ベクトルは、以下の特徴をもつ準同型暗号によって暗号化されている。準同型暗号によって暗号化された暗号化ベクトルに対して、以下の演算を準同型演算として利用できる。
暗号化ベクトルの要素ごとの加算:
(a0,a1,・・・,an―1)+(b0,b1,・・・,bn―1)=(a0+b0,a1+b1,・・・,an-1+bn-1)
(a0,a1,・・・,an―1)+(b0,b1,・・・,bn―1)=(a0+b0,a1+b1,・・・,an-1+bn-1)
暗号化ベクトルの要素ごとの積:
(a0,a1,・・・,an―1)×(b0,b1,・・・,bn―1)=(a0b0,a1b1,・・・,an-1bn-1)
(a0,a1,・・・,an―1)×(b0,b1,・・・,bn―1)=(a0b0,a1b1,・・・,an-1bn-1)
暗号化ベクトルの要素をi(iは整数)要素分回転:
(a0,a1,・・・,an―1)・rot(i)=(a0+i mod n,a1+i mod n,・・・,an-1+i mod n)
(a0,a1,・・・,an―1)・rot(i)=(a0+i mod n,a1+i mod n,・・・,an-1+i mod n)
つまり、iが正であれば、左にi要素分回転し、iが負であれば、右にi要素分回転する。
図2は、本実施の形態に係る内積計算装置100の動作を示すフロー図である。
ステップS101において、取得部110は、入力インタフェース930、あるいは、通信装置950を介して、暗号化ベクトルA,Bを取得する。取得部110は、暗号化ベクトルA,Bをパディング部120へ送信する。暗号化ベクトルA,Bの各々の要素数はkとする。
具体例として、暗号化ベクトルA=(a0,・・・,a4),B=(b0,・・・,b4)とする。このとき、k=5である。
具体例として、暗号化ベクトルA=(a0,・・・,a4),B=(b0,・・・,b4)とする。このとき、k=5である。
ステップS102において、パディング部120は、2つの暗号化ベクトルA,Bの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、2つの暗号化ベクトルA,Bの各々にゼロパディングを施す。
パディング部120は、パディングを行った結果の暗号化ベクトルA,Bを計算部130へ送信する。パディングを行った結果の暗号化ベクトルA,Bの要素数は2nとなる。
パディング部120は、パディングを行った結果の暗号化ベクトルA,Bを計算部130へ送信する。パディングを行った結果の暗号化ベクトルA,Bの要素数は2nとなる。
具体例では、5以上で、かつ、5に最も近い2の冪は23=8である。よって、暗号化ベクトルA,Bは、A=(a0,a1,a2,a3,a4,0,0,0),B=(b0,b1,b2,b3,b4,0,0,0)となり、暗号化ベクトルA,Bの各々の要素数は23=8である。すなわち、n=3である。
ステップS103において、計算部130は、ゼロパディングを施された2つの暗号化ベクトルA,Bに対して準同型演算を用いることにより、先頭の要素に2つの暗号化ベクトルA,Bの内積が格納された暗号文であるベクトルRを算出する。ベクトルRは暗号化された状態の暗号化ベクトルである。
計算部130は、内積計算の結果の暗号文であるベクトルRを出力部140へ送信する。
内積計算は以下の(1)から(5)のように行う。
計算部130は、内積計算の結果の暗号文であるベクトルRを出力部140へ送信する。
内積計算は以下の(1)から(5)のように行う。
図3は、本実施の形態に係る計算処理の具体例を示す図である。
(1)計算部130は、ゼロパディングを施された2つの暗号化ベクトルA,Bの要素ごとの積を準同型演算によりベクトルTとして算出する。ベクトルTは、暗号化された状態の暗号化ベクトルである。
具体例では、T=(a0b0,a1b1,a2b2,a3b3,a4b4,0,0,0)となる。
(1)計算部130は、ゼロパディングを施された2つの暗号化ベクトルA,Bの要素ごとの積を準同型演算によりベクトルTとして算出する。ベクトルTは、暗号化された状態の暗号化ベクトルである。
具体例では、T=(a0b0,a1b1,a2b2,a3b3,a4b4,0,0,0)となる。
(2)計算部130は、以下の(3)および(4)のベクトル計算処理を、iが1から2n-1までの2の冪分を繰り返す。iは1から2n-1のまでの2の冪である。
具体例では、i=1,2,4である。
(3)計算部130は、ベクトルTの要素をi要素分左に回転させたベクトルT*を準同型演算により算出する。ベクトルT*は、暗号化された暗号化ベクトルである。
(4)計算部130は、ベクトルTとベクトルT*との要素ごとの和を準同型演算により算出し、ベクトルTとベクトルT*との要素ごとの和をベクトルTとして更新する。
そして、計算部130は、iに次の2の冪の値を代入して(3)および(4)のベクトル計算処理を、iが2n-1になるまで繰り返す。
具体例では、i=1,2,4である。
(3)計算部130は、ベクトルTの要素をi要素分左に回転させたベクトルT*を準同型演算により算出する。ベクトルT*は、暗号化された暗号化ベクトルである。
(4)計算部130は、ベクトルTとベクトルT*との要素ごとの和を準同型演算により算出し、ベクトルTとベクトルT*との要素ごとの和をベクトルTとして更新する。
そして、計算部130は、iに次の2の冪の値を代入して(3)および(4)のベクトル計算処理を、iが2n-1になるまで繰り返す。
具体例では、i=1,2,4について(3)および(4)のベクトル計算処理を繰り返す。
i=1のとき、T*=(a1b1,a2b2,a3b3,a4b4,0,0,0,a0b0)となる。そして、更新されたTは、T=(a0b0+a1b1,a1b1+a2b2,a2b2+a3b3,a3b3+a4b4,a4b4,0,0,a0b0)となる。
i=2のとき、T*=(a2b2+a3b3,a3b3+a4b4,a4b4,0,0,a0b0,a0b0+a1b1,a1b1+a2b2)となる。そして、更新されたTは、T=(a0b0+a1b1+a2b2+a3b3,a1b1+a2b2+a3b3+a4b4,a2b2+a3b3+a4b4,a3b3+a4b4,a4b4,a0b0,a0b0+a1b1,a0b0+a1b1+a2b2)となる。
i=4のとき、T*=(a4b4,a0b0,a0b0+a1b1,a0b0+a1b1+a2b2,a0b0+a1b1+a2b2+a3b3,a1b1+a2b2+a3b3+a4b4,a2b2+a3b3+a4b4,a3b3+a4b4)となる。そして、更新されたTは、T=(a0b0+a1b1+a2b2+a3b3+a4b4,・・・,a0b0+a1b1+a2b2+a3b3+a4b4)となる。なお、i=4の回の更新されたTでは、先頭および最後尾の要素以外の要素を省略している。このT=(a0b0+a1b1+a2b2+a3b3+a4b4,・・・,a0b0+a1b1+a2b2+a3b3+a4b4)がベクトルRとして算出される。
i=1のとき、T*=(a1b1,a2b2,a3b3,a4b4,0,0,0,a0b0)となる。そして、更新されたTは、T=(a0b0+a1b1,a1b1+a2b2,a2b2+a3b3,a3b3+a4b4,a4b4,0,0,a0b0)となる。
i=2のとき、T*=(a2b2+a3b3,a3b3+a4b4,a4b4,0,0,a0b0,a0b0+a1b1,a1b1+a2b2)となる。そして、更新されたTは、T=(a0b0+a1b1+a2b2+a3b3,a1b1+a2b2+a3b3+a4b4,a2b2+a3b3+a4b4,a3b3+a4b4,a4b4,a0b0,a0b0+a1b1,a0b0+a1b1+a2b2)となる。
i=4のとき、T*=(a4b4,a0b0,a0b0+a1b1,a0b0+a1b1+a2b2,a0b0+a1b1+a2b2+a3b3,a1b1+a2b2+a3b3+a4b4,a2b2+a3b3+a4b4,a3b3+a4b4)となる。そして、更新されたTは、T=(a0b0+a1b1+a2b2+a3b3+a4b4,・・・,a0b0+a1b1+a2b2+a3b3+a4b4)となる。なお、i=4の回の更新されたTでは、先頭および最後尾の要素以外の要素を省略している。このT=(a0b0+a1b1+a2b2+a3b3+a4b4,・・・,a0b0+a1b1+a2b2+a3b3+a4b4)がベクトルRとして算出される。
(5)計算部130は、iが2n-1の回、すなわち最後のベクトル計算処理により得られたベクトルTをベクトルRとして算出する。ベクトルRの先頭の要素である第0要素目には、2つの暗号化ベクトルA,Bの内積が格納されている。
具体例では、i=4の回のベクトル計算処理により得られたベクトルR=(a0b0+a1b1+a2b2+a3b3+a4b4,・・・,a0b0+a1b1+a2b2+a3b3+a4b4)の先頭の要素が内積計算の結果「a0b0+a1b1+a2b2+a3b3+a4b4」となる。
具体例では、i=4の回のベクトル計算処理により得られたベクトルR=(a0b0+a1b1+a2b2+a3b3+a4b4,・・・,a0b0+a1b1+a2b2+a3b3+a4b4)の先頭の要素が内積計算の結果「a0b0+a1b1+a2b2+a3b3+a4b4」となる。
上記の(1)から(5)のように計算することで、暗号化ベクトルの先頭の要素に内積計算の結果が格納される。
ステップS104において、出力部140は、ベクトルRの先頭の要素を、2つの暗号化ベクトルA,Bの内積として出力する。例えば、出力部140は、ベクトルRと、先頭の要素が1の単位ベクトルとの積を取ることで、ベクトルRの先頭の要素を取り出す。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る内積計算装置100では、準同型暗号を利用して暗号化したベクトルに対して効率的な内積計算を実行することができる。そのため、内積計算を必要とするデータ分析作業について、準同型暗号を利用してデータを秘匿したまま、効率的に実行可能となる。
以上のように、本実施の形態に係る内積計算装置100では、準同型暗号を利用して暗号化したベクトルに対して効率的な内積計算を実行することができる。そのため、内積計算を必要とするデータ分析作業について、準同型暗号を利用してデータを秘匿したまま、効率的に実行可能となる。
また、本実施の形態に係る内積計算装置100では、ベクトルの暗号に用いる準同型暗号を特定の方式に依存する必要が無い。そのため、より高速な準同型暗号が新たに開発された場合でも、準同型演算がその準同型暗号を利用することができ、本実施の形態に係る内積計算処理も高速化することが可能である。
***他の構成***
本実施の形態では、取得部110とパディング部120と計算部130と出力部140の機能がソフトウェアで実現される。変形例として、取得部110とパディング部120と計算部130と出力部140の機能がハードウェアで実現されてもよい。
具体的には、内積計算装置100は、プロセッサ910に替えて電子回路909を備える。
本実施の形態では、取得部110とパディング部120と計算部130と出力部140の機能がソフトウェアで実現される。変形例として、取得部110とパディング部120と計算部130と出力部140の機能がハードウェアで実現されてもよい。
具体的には、内積計算装置100は、プロセッサ910に替えて電子回路909を備える。
図4は、本実施の形態の変形例に係る内積計算装置100の構成例を示す図である。
電子回路909は、取得部110とパディング部120と計算部130と出力部140の機能を実現する専用の電子回路である。電子回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field-Programmable Gate Arrayの略語である。
電子回路909は、取得部110とパディング部120と計算部130と出力部140の機能を実現する専用の電子回路である。電子回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field-Programmable Gate Arrayの略語である。
取得部110とパディング部120と計算部130と出力部140の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、取得部110とパディング部120と計算部130と出力部140の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。また、取得部110とパディング部120と計算部130と出力部140の一部またはすべての機能がファームウェアで実現されてもよい。
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、取得部110とパディング部120と計算部130と出力部140の機能は、プロセッシングサーキットリにより実現される。
実施の形態2.
本実施の形態では、主に、実施の形態1と異なる点および実施の形態1に追加する点について説明する。
本実施の形態において、実施の形態1と同様の機能を有する構成については同一の符号を付し、その説明を省略する。
本実施の形態では、主に、実施の形態1と異なる点および実施の形態1に追加する点について説明する。
本実施の形態において、実施の形態1と同様の機能を有する構成については同一の符号を付し、その説明を省略する。
***構成の説明***
図5は、本実施の形態に係る内積計算装置100の構成例を示す図である。
本実施の形態に係る内積計算装置100は、実施の形態1で説明した図1の構成要素に加え、ベクトル結合部160を備える。
図5は、本実施の形態に係る内積計算装置100の構成例を示す図である。
本実施の形態に係る内積計算装置100は、実施の形態1で説明した図1の構成要素に加え、ベクトル結合部160を備える。
ベクトル結合部160は、複数のベクトルRを取得する。複数のベクトルRとは、異なる複数の暗号化ベクトルの組の内積を先頭の要素に格納している複数の暗号化ベクトルのことである。例えば、複数のベクトルRは、暗号化ベクトルA,Bの内積を格納したベクトルR0、暗号化ベクトルF,Gの内積を格納したベクトルR1、および暗号化ベクトルH,Iの内積を格納したベクトルR2といったベクトルRである。
ベクトル結合部160は、複数のベクトルRに対して準同型演算を用いることにより、複数のベクトルRの各々の先頭の要素に格納された内積を要素とするベクトルを結合ベクトルCとして算出する。
***動作の説明***
図6は、本実施の形態に係る内積計算装置100の動作を示すフロー図である。
ステップS101からステップS103の処理は、実施の形態1で説明したものと同様である。
なお、本実施の形態では、複数の異なる暗号化ベクトルの組についてステップS101からステップS103の処理が実施され、計算部130は、複数のベクトルRとしてベクトルR0,…,Rm(mは自然数)を算出するものとする。
図6は、本実施の形態に係る内積計算装置100の動作を示すフロー図である。
ステップS101からステップS103の処理は、実施の形態1で説明したものと同様である。
なお、本実施の形態では、複数の異なる暗号化ベクトルの組についてステップS101からステップS103の処理が実施され、計算部130は、複数のベクトルRとしてベクトルR0,…,Rm(mは自然数)を算出するものとする。
ステップS201において、ベクトル結合部160は、計算部130から受け取った複数のベクトルR0,R1,R2,…,Rmを一つの暗号化ベクトルに結合する計算を行う。ベクトル結合部204によるベクトル結合処理は以下の(a),(b),(c)のように行う。複数のベクトルR0,…,Rmの各々の要素数は2nとする。
(a)ベクトル結合部160は、R0からRmの複数のベクトルRの各々と、先頭の要素が1で他の要素が0である単位ベクトルとの積を準同型演算により複数のベクトルR*として算出する。ベクトルR*は暗号化された状態の暗号化ベクトルである。
具体例では、ベクトル結合部160は、ベクトルR0,R1,R2,…,Rmに対して、ベクトル(1,0,0,0,0,0,0,0)との要素ごとの積を、準同型演算を利用して計算する。計算結果のベクトルをR* 0,R* 1,R* 2,…,R* mとする。
具体例では、ベクトル結合部160は、ベクトルR0,R1,R2,…,Rmに対して、ベクトル(1,0,0,0,0,0,0,0)との要素ごとの積を、準同型演算を利用して計算する。計算結果のベクトルをR* 0,R* 1,R* 2,…,R* mとする。
(b)ベクトル結合部160は、準同型演算により、複数のベクトルR*の各々を順番に0からm要素分右に回転させる。
具体例では、ベクトル結合部160は、ベクトルR* 0,R* 1,R* 2,…,R* mを、それぞれ準同型演算を利用して、-j要素(j=0,…,m)回転させる。ベクトルR* 1を-1要素分回転させ、ベクトルR* 2を-2要素分回転させ、・・・、ベクトルR* mを-m要素分回転させる。
具体例では、ベクトル結合部160は、ベクトルR* 0,R* 1,R* 2,…,R* mを、それぞれ準同型演算を利用して、-j要素(j=0,…,m)回転させる。ベクトルR* 1を-1要素分回転させ、ベクトルR* 2を-2要素分回転させ、・・・、ベクトルR* mを-m要素分回転させる。
(c)ベクトル結合部160は、回転させた複数のベクトルR*の要素ごとの和を準同型演算により結合ベクトルCとして算出する。すなわち、(b)の結果である、全てのベクトルR*の要素ごとの和を、準同型演算を利用して計算し、計算結果を結合ベクトルCとして出力する。
上記の(a)から(c)のように計算することで、結合ベクトルCの第0要素目から第m要素目までに、暗号化ベクトルR0,R1,R2,…,Rmがそれぞれ保持していた内積計算の結果が格納される。
ステップS202において、出力部140は、各要素に内積結果が格納された結合ベクトルCを出力する。
例えば、複数のベクトルRとして、暗号化ベクトルC(C,0,...,0),暗号化ベクトルD(D,0,...,0),暗号化ベクトルE(E,0,...,0)を想定する。このとき、暗号化ベクトルDを右に1要素回転させ、暗号化ベクトルEを右に2要素回転させる。そして、暗号化ベクトルC,D.Eの各要素の和を準同型演算により計算する。これにより、各要素に専用の要素の内積結果が格納された暗号化ベクトル(C,D,E,0,...,0)を得ることができる。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る内積計算装置100では、実施の形態1で得られた効果に加え、計算結果として得られた暗号化ベクトルを、次の内積計算装置100の入力として利用可能となる。これによって、1回のデータ分析において複数回の内積計算が必要な場合においても、本実施の形態の手法が適用可能となる。
以上のように、本実施の形態に係る内積計算装置100では、実施の形態1で得られた効果に加え、計算結果として得られた暗号化ベクトルを、次の内積計算装置100の入力として利用可能となる。これによって、1回のデータ分析において複数回の内積計算が必要な場合においても、本実施の形態の手法が適用可能となる。
以上の実施の形態1および2では、内積計算装置の各部を独立した機能ブロックとして説明した。しかし、内積計算装置の構成は、上述した実施の形態のような構成でなくてもよい。内積計算装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、内積計算装置は、1つの装置でなく、複数の装置から構成されたシステムでもよい。
また、実施の形態1および2のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つの部分を実施しても構わない。その他、これら実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態1および2では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
また、実施の形態1および2のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つの部分を実施しても構わない。その他、これら実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態1および2では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
なお、上述した実施の形態は、本質的に好ましい例示であって、本開示の範囲、本開示の適用物の範囲、および本開示の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
100 内積計算装置、110 取得部、120 パディング部、130 計算部、140 出力部、150 記憶部、160 ベクトル結合部、909 電子回路、910 プロセッサ、921 メモリ、922 補助記憶装置、930 入力インタフェース、940 出力インタフェース、950 通信装置。
Claims (7)
- 各々のベクトルの要素数がk(kは自然数)であり、各々が準同型暗号により暗号化された2つの暗号化ベクトルの内積を計算する内積計算装置であって、前記2つの暗号化ベクトルの要素ごとの和および積の算出と、前記2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いる内積計算装置において、
前記2つの暗号化ベクトルの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、前記2つの暗号化ベクトルの各々にゼロパディングを施すパディング部と、
前記ゼロパディングを施された2つの暗号化ベクトルに対して前記準同型演算を用いることにより、先頭の要素に前記2つの暗号化ベクトルの内積が格納されたベクトルRを算出する計算部と
を備えた内積計算装置。 - 前記計算部は、
前記ゼロパディングを施された2つの暗号化ベクトルの要素ごとの積を前記準同型演算によりベクトルTとして算出し、前記ベクトルTの要素をi(iは1から2n-1のまでの2の冪)要素分左に回転させたベクトルT*を前記準同型演算により算出し、前記ベクトルTと前記ベクトルT*との要素ごとの和を前記準同型演算により算出し、前記ベクトルTと前記ベクトルT*との和を前記ベクトルTとして更新するベクトル計算処理を、iが1から2n-1までの2の冪分を繰り返し、iが2n-1の回の前記ベクトル計算処理により得られた前記ベクトルTを前記ベクトルRとして算出する請求項1に記載の内積計算装置。 - 前記内積計算装置は、
前記ベクトルRの先頭の要素を、前記2つの暗号化ベクトルの内積として出力する出力部を備えた請求項1または請求項2に記載の内積計算装置。 - 前記内積計算装置は、
異なる複数のベクトルRを取得し、前記複数のベクトルRに対して前記準同型演算を用いることにより、前記複数のベクトルRの各々の先頭の要素に格納された内積を要素とするベクトルを結合ベクトルとして算出するベクトル結合部を備えた請求項1または請求項2に記載の内積計算装置。 - 前記ベクトル結合部は、
R0からRm(mは自然数)の前記複数のベクトルRの各々と、先頭の要素が1で他の要素が0である単位ベクトルとの要素ごとの積を前記準同型演算により複数のベクトルR*として算出し、前記準同型演算により前記複数のベクトルR*の各々を順番に0からm要素分右に回転させ、回転させた前記複数のベクトルR*の和を前記準同型演算により前記結合ベクトルとして算出する請求項4に記載の内積計算装置。 - 各々のベクトルの要素数がk(kは自然数)であり、各々が準同型暗号により暗号化された2つの暗号化ベクトルの内積を計算する内積計算装置であって、前記2つの暗号化ベクトルの要素ごとの和および積の算出と、前記2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いる内積計算装置に用いられる内積計算方法において、
前記2つの暗号化ベクトルの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、前記2つの暗号化ベクトルの各々にゼロパディングを施し、
前記ゼロパディングを施された2つの暗号化ベクトルに対して前記準同型演算を用いることにより、先頭の要素に前記2つの暗号化ベクトルの内積が格納されたベクトルRを算出する内積計算方法。 - 各々のベクトルの要素数がk(kは自然数)であり、各々が準同型暗号により暗号化された2つの暗号化ベクトルの内積を計算する内積計算プログラムであって、前記2つの暗号化ベクトルの要素ごとの和および積の算出と、前記2つの暗号化ベクトルの各々における要素の回転とが可能な準同型演算を用いる内積計算プログラムにおいて、
前記2つの暗号化ベクトルの各々の要素数が、k以上で、かつ、kに最も近い2の冪2n(nは自然数)となるように、前記2つの暗号化ベクトルの各々にゼロパディングを施すパディング処理と、
前記ゼロパディングを施された2つの暗号化ベクトルに対して前記準同型演算を用いることにより、先頭の要素に前記2つの暗号化ベクトルの内積が格納されたベクトルRを算出する計算処理と
をコンピュータに実行させる内積計算プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021087272A JP2022180257A (ja) | 2021-05-24 | 2021-05-24 | 内積計算装置、内積計算方法、および、内積計算プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021087272A JP2022180257A (ja) | 2021-05-24 | 2021-05-24 | 内積計算装置、内積計算方法、および、内積計算プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022180257A true JP2022180257A (ja) | 2022-12-06 |
Family
ID=84327235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021087272A Pending JP2022180257A (ja) | 2021-05-24 | 2021-05-24 | 内積計算装置、内積計算方法、および、内積計算プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022180257A (ja) |
-
2021
- 2021-05-24 JP JP2021087272A patent/JP2022180257A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11509454B2 (en) | Apparatus for processing modular multiply operation and methods thereof | |
JP7067633B2 (ja) | 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム | |
JPWO2017065123A1 (ja) | 秘密乱数合成装置、秘密乱数合成方法、およびプログラム | |
US20230254115A1 (en) | Protection of transformations by intermediate randomization in cryptographic operations | |
JP6585846B2 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム | |
KR101666974B1 (ko) | 소수 생성 | |
US9025766B2 (en) | Efficient hardware architecture for a S1 S-box in a ZUC cipher | |
JP2022180257A (ja) | 内積計算装置、内積計算方法、および、内積計算プログラム | |
US20230119749A1 (en) | Large-precision homomorphic comparison using bootstrapping | |
KR20210147645A (ko) | 동형 암호화 장치 및 그것의 암호문 연산 방법 | |
WO2023003737A2 (en) | Multi-lane cryptographic engine and operations thereof | |
KR102559930B1 (ko) | 수학적 함수들을 연산하기 위한 시스템 및 방법들 | |
US20220085993A1 (en) | Reconfigurable secret key splitting side channel attack resistant rsa-4k accelerator | |
CN111133495B (zh) | 秘密读取装置、秘密写入装置、它们的方法以及记录介质 | |
EP4073628A1 (en) | Column data driven arithmetic expression evaluation | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
US20230327849A1 (en) | Apparatus and method with homomorphic encryption operation | |
US20220308840A1 (en) | Reciprocal calculating method and reciprocal calculating apparatus | |
WO2021149106A1 (ja) | 秘密計算装置、秘密計算方法、およびプログラム | |
WO2021149105A1 (ja) | 秘密計算装置、秘密計算方法、およびプログラム | |
US20220350570A1 (en) | Pipelined hardware to accelerate modular arithmetic operations | |
WO2022009384A1 (ja) | 最終べき計算装置、ペアリング演算装置、暗号処理装置、最終べき計算方法及び最終べき計算プログラム | |
US20230091951A1 (en) | Polynomial multiplication for side-channel protection in cryptography | |
KR20230144435A (ko) | 동형 암호 연산 장치 및 방법 | |
JP6093718B2 (ja) | 拡大体乗算装置、拡大体乗算方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231214 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240417 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240528 |