(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-23
(54)【発明の名称】準同型暗号化システムにおけるインメモリ計算
(51)【国際特許分類】
H04L 9/30 20060101AFI20240416BHJP
G06N 3/065 20230101ALI20240416BHJP
【FI】
H04L9/30 Z
G06N3/065
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023562611
(86)(22)【出願日】2022-05-08
(85)【翻訳文提出日】2023-10-11
(86)【国際出願番号】 IB2022054255
(87)【国際公開番号】W WO2022243781
(87)【国際公開日】2022-11-24
(32)【優先日】2021-05-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】サシダラン ラージャレクシュミ、ナンダクマール
(72)【発明者】
【氏名】エレフテリオウ、エヴァンゲロス スタブロス
(72)【発明者】
【氏名】ベルガマスキ、フラヴィオ エー.
(57)【要約】
一手法において、プロセスは、アレイのワード線及びビット線のそれぞれの対間に接続されたバイナリアナログメモリセルの少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納し、ここで:各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納され、行列の列内の値の対応するビットは、ビット線に沿って接続されたセル内に格納される。暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、プロセスは、要素の多項式係数のセットを、ユニットのそれぞれのワード線にビット単位で供給して、それぞれのビット線におけるアナログ累算信号を得る。プロセスは、アナログ信号をデジタルに変換する。プロセスは、ステージのそれぞれにおいて多項式係数の連続ビットから得られたデジタル信号を処理して、暗号要素の計算結果を得る。
【特許請求の範囲】
【請求項1】
バイナリアナログメモリセルの少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続された前記少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納する段階、ここで:
各マルチビット値のビットがワード線に沿って接続されたセル内に格納される;及び
前記行列の列内の値の対応するビットがビット線に沿って接続されたセル内に格納される;
暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、要素の多項式係数のセットを前記アナログ乗累算ユニットのそれぞれのワード線にビット単位で供給し、それぞれのビット線におけるアナログ累算信号を得る段階;
前記アナログ累算信号をデジタル信号に変換する段階;及び
前記1つ又は複数の計算ステージのそれぞれにおいて前記多項式係数の連続ビットから得られた前記デジタル信号を処理して、前記暗号要素の計算結果を得る段階
を備える、コンピュータ実装方法。
【請求項2】
前記ワード線にビット単位で供給される前記多項式係数の各ビットについて、前記行列の列内に値を格納するセルに接続されたビット線のセットから得られた前記デジタル信号を、前記値の連続ビット位置に対応する連続ビットシフトで累算する段階;及び
前記多項式係数の前記連続ビットの前記デジタル信号を、前記多項式係数の連続ビット位置に対応する連続ビットシフトで累算する段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
第1の暗号要素c
1の前記計算結果は、多項式乗算c
1c
2の結果であり、c
2は、第2の暗号要素であり、
前記第2の暗号要素c
2の多項式係数を、前記行列の第1の列内のそれぞれのマルチビット値として前記アナログ乗累算ユニットに格納する段階;
連続する計算ステージにおいて、要素c
1の多項式係数を、c
2の係数を格納するセルに接続されたワード線のセットに対して、c
1の係数が前記ワード線のセット内のワード線にビット単位で供給されるまで徐々にシフトする段階;及び
前記計算ステージのそれぞれにおいて、c
2の前記係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果を得る段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果のc
1c
2 modulo pを得る段階、ここで、pは、準同型暗号化システムの予め定められた素数である
をさらに備える、請求項3に記載のコンピュータ実装方法。
【請求項5】
少なくとも1つのさらなる暗号要素cについて:
要素cの多項式係数を、前記行列のさらなる列内のそれぞれのマルチビット値として、前記ワード線のセットに接続されたセル内に格納する段階;及び
前記計算ステージのそれぞれにおいて、cの前記多項式係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、さらなる多項式乗算c
1cのさらなる結果を得る段階
をさらに備える、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記第2の暗号要素c
2は、準同型暗号化システムの秘密鍵(1,s)の要素sであり;
前記第1の暗号要素c
1は、対応する公開鍵によって暗号化された暗号文(c
0,c
1)の要素であり;
c
0は、別の暗号要素であり;
多項式乗算c
1sの結果を得る段階の後、c
1s及びc
0の合計を計算して、前記暗号文の復号m=c
0+c
1s modulo pを得る段階をさらに備え、ここで、pは、前記準同型暗号化システムの予め定められた素数である、請求項3に記載のコンピュータ実装方法。
【請求項7】
インメモリロジックアレイにおいて前記合計を計算する段階
をさらに備える、請求項6に記載のコンピュータ実装方法。
【請求項8】
ニューラルネットワークの推論モデルの暗号化された重みwは、それぞれの暗号要素c
wを有し、各要素c
wの多項式係数は、前記行列の列内のそれぞれのマルチビット値として前記アナログ乗累算ユニット内に格納され;
推論演算において重み付けされ、ニューラルネットワークを通じて伝播される暗号化されたデータ値dは、重みwによってデータ値dを重み付けするために多項式乗算c
dc
wを必要とするそれぞれの暗号要素c
dを有し;
前記推論演算において各多項式乗算c
dc
wを実行する段階、ここで、c
dは、前記第1の暗号要素c
1に対応し、c
wは、前記第2の暗号要素c
2に対応する;
暗号化されたデータ値が前記ニューラルネットワークを通じて伝播されるときに多項式乗算c
dc
wの前記結果を処理して、前記推論モデルから暗号化された推論結果を得る段階
をさらに備える、請求項3に記載のコンピュータ実装方法。
【請求項9】
前記ニューラルネットワークを通じた伝播のために複数の重みw
j=1~Lによって重み付けされる暗号化されたデータ値dについて、対応する複数の多項式乗算
【数11】
を必要とし、各要素
【数12】
の前記係数は、前記要素
【数13】
に対するワード線の共通のセットに接続されたセル内の前記行列のそれぞれの列内に格納され;
多項式乗算
【数14】
の前記結果は、要素c
dの前記係数をそのワード線のセットに対して、c
dの係数が前記セット内のワード線にビット単位で供給されるまで徐々にシフトさせることによって得られる
請求項8に記載のコンピュータ実装方法。
【請求項10】
n個の多項式係数をそれぞれ有する第1の暗号要素c
1及び第2の暗号要素c
2の多項式乗算c
1c
2を計算するために、ここで、マルチビット値の前記行列は、e
i,j=k
i×j
modulo pによって与えられる、値e
i,j、i=0~(n-1)、j=0~(n-1)を有する離散フーリエ変換行列M
1を含み、ここで、k
N=1 modulo p、N≧nであり、pは、準同型暗号化システムの予め定められた素数である、
M
1に対応する逆離散フーリエ変換行列M
2を、マルチビット値のさらなる行列として、前記アナログ乗累算ユニットのさらなるクロスバーアレイに格納する段階;
要素c
1のn個の係数を、M
1に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給するとともに、前記係数の連続ビットから得られた前記デジタル信号を処理して、要素c
1の前記係数の離散フーリエ変換T(c
1)を得る段階;
要素c
2のn個の係数を、M
1に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給するとともに、前記係数の連続ビットから得られた前記デジタル信号を処理して、要素c
2の前記係数の離散フーリエ変換T(c
2)を得る段階;
T(c
1)及びT(c
2)の対応するコンポーネントのコンポーネント単位の乗算を実行して、暗号要素c
3の前記係数の別の離散フーリエ変換T(c
3)を得る段階;及び
T(c
3)の前記コンポーネントを、M
2に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給して、前記ビット線におけるアナログ累算信号を得て、前記アナログ累算信号をデジタル信号に変換し、前記コンポーネントの連続ビットから得られた前記デジタル信号を処理して、前記多項式乗算の結果c
3=c
1c
2を得る段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果のc
1c
2 modulo pを得る段階をさらに備え、ここで、pは、前記準同型暗号化システムの予め定められた素数である
請求項10に記載のコンピュータ実装方法。
【請求項12】
インメモリロジックアレイを使用する前記計算に必要とされる暗号要素の(i)加算、(ii)減算、(iii)スケーリング、及び(iv)コンポーネント単位の乗算からなる群から選択される演算を実行する段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記バイナリアナログメモリセルは、アナログスタティックランダムアクセスメモリ(SRAM)セルを含む、請求項1に記載のコンピュータ実装方法。
【請求項14】
暗号要素がマルチビット係数を有する多項式によって表される準同型暗号化システムを備え、前記準同型暗号化システムは、バイナリアナログメモリセルの少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続された前記少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニット、1つ又は複数のコンピュータ可読記憶媒体、及び実行のために前記1つ又は複数のコンピュータ可読記憶媒体上に集合的に格納されたプログラム命令を有し、前記プログラム命令は、
前記少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続されたバイナリアナログメモリセルの少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納するプログラム命令、ここで、
各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納される;及び
前記行列の列内の値の対応するビットは、ビット線に沿って接続されたセル内に格納される;
暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、要素の多項式係数のセットを、前記アナログ乗累算ユニットのそれぞれのワード線にビット単位で供給して、それぞれのビット線におけるアナログ累算信号を得るプログラム命令;
前記アナログ累算信号をデジタル信号に変換するプログラム命令;及び
前記1つ又は複数の計算ステージのそれぞれにおいて、前記多項式係数の連続ビットから得られた前記デジタル信号を処理して、前記暗号要素の計算結果を得るプログラム命令
を含む、コンピュータシステム。
【請求項15】
前記ワード線にビット単位で供給される前記多項式係数の各ビットについて、前記行列の列内に値を格納するセルに接続されたビット線のセットから得られた前記デジタル信号を、前記値の連続ビット位置に対応する連続ビットシフトで累算するプログラム命令;及び
前記多項式係数の前記連続ビットの前記デジタル信号を、前記多項式係数の連続ビット位置に対応する連続ビットシフトで累算するプログラム命令
をさらに備える、請求項14に記載のコンピュータシステム。
【請求項16】
第1の暗号要素c
1の前記計算結果は、多項式乗算c
1c
2の結果であり、c
2は、第2の暗号要素であり、
前記第2の暗号要素c
2の多項式係数を、前記行列の第1の列内のそれぞれのマルチビット値として前記アナログ乗累算ユニットに格納するプログラム命令;
連続する計算ステージにおいて、要素c
1の前記多項式係数を、c
2の係数を格納するセルに接続されたワード線のセットに対して、c
1の係数が前記ワード線のセット内のワード線にビット単位で供給されるまで徐々にシフトさせるプログラム命令;及び
前記計算ステージのそれぞれにおいて、c
2の前記係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果を得るプログラム命令
をさらに備える、請求項14に記載のコンピュータシステム。
【請求項17】
前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果のc
1c
2 modulo pを得るプログラム命令、ここで、pは、準同型暗号化システムの予め定められた素数である
をさらに備える、請求項16に記載のコンピュータシステム。
【請求項18】
少なくとも1つのさらなる暗号要素cについて:
要素cの多項式係数を、前記行列のさらなる列内のそれぞれのマルチビット値として、前記ワード線のセットに接続されたセルに格納するプログラム命令;及び
前記計算ステージのそれぞれにおいて、cの前記多項式係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、さらなる多項式乗算c
1cのさらなる結果を得るプログラム命令
をさらに備える、請求項16に記載のコンピュータシステム。
【請求項19】
前記第2の暗号要素c
2は、準同型暗号化システムの秘密鍵(1,s)の要素sであり;
前記第1の暗号要素c
1は、対応する公開鍵によって暗号化された暗号文(c
0,c
1)の要素であり;
c
0は、別の暗号要素であり;
多項式乗算c
1sの結果を得た後、c
1s及びc
0の合計を計算して、前記暗号文の復号m=c
0+c
1s modulo pを得るプログラム命令、ここで、pは、前記準同型暗号化システムの予め定められた素数である
をさらに備える、請求項16に記載のコンピュータシステム。
【請求項20】
1つ又は複数のコンピュータ可読記憶媒体、及び前記1つ又は複数のコンピュータ可読記憶媒体上に集合的に格納されたプログラム命令を備え、前記プログラム命令は、
バイナリアナログメモリセルの少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続された前記少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納するプログラム命令、ここで:
各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納される;及び
前記行列の列内の値の対応するビットは、ビット線に沿って接続されたセル内に格納される;
暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、要素の多項式係数のセットを、前記アナログ乗累算ユニットのそれぞれのワード線にビット単位で供給して、それぞれのビット線におけるアナログ累算信号を得るプログラム命令;
前記アナログ累算信号をデジタル信号に変換するプログラム命令;及び
前記1つ又は複数の計算ステージのそれぞれにおいて前記多項式係数の連続ビットから得られた前記デジタル信号を処理して、前記暗号要素の計算結果を得るプログラム命令
を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、包括的には、準同型暗号化システムにおける計算の分野に関し、より詳細には、インメモリ計算アーキテクチャを使用して準同型暗号化システムにおける計算を実行する手法に関する。
【0002】
準同型暗号化は、暗号化されたデータに対する計算を可能にする。現在実行可能な準同型暗号化スキームは、基本的な暗号要素、例えば、暗号鍵、暗号文、暗号化されるメッセージデータ等の要素を表す多項式を使用する。これらの多項式は、通常、非常に大きな次数(例えば、1024)であり、多項式係数は、それぞれ多数(例えば、300~800)のビットによって表される。これらの要素に対する計算は、高精度で実行しなければならず、極度に計算集約的である。例えば、O(N2)における次数Nの2つの多項式間の乗算の複雑性は非常に非効率である。この非効率性に対処するために、準同型暗号化アルゴリズムは、高速フーリエ変換(Fast Fourier Transform:FFT)を使用して、多項式乗算の複雑性をO(NlogN)まで低減している。しかしながら、これは、依然として計算に大きな制約を呈する。
【0003】
インメモリ計算は、メモリセルのアレイを利用して、計算メモリユニットにおいて特定の計算タスクをその場で実行する技法を指す。 "Computing-in-Memory for Performance and Energy-Efficient Homomorphic Encryption",Reis et al.,IEEE Transactions on Very Large Scale Integration(VLSI) Systems,Volume 28,Issue 11,Nov. 2020、及び"CryptoPIM:In-Memory Acceleration for Lattice-based Cryptographic Hardware",Nejatollahi et al.,57th ACM/IEEE Design Automation Conference(DAC),July 2020は、暗号計算のためのインメモリ計算ハードウェアを提案している。これらの提案は、バイナリロジックがメモリセルのアレイに組み込まれたインメモリロジックアレイを使用して、暗号計算のための特定の計算を実装する。これらのシステムは、処理速度の点でいくらかの改善をもたらすが、準同型暗号化システムにおいて計算を実装する改善された技法が非常に望まれている。
【発明の概要】
【0004】
本発明の第1の態様は、暗号要素がマルチビット係数を有する多項式によって表される準同型暗号化システムにおける計算の方法を提供する。本方法は、アレイのワード線及びビット線のそれぞれの対間に接続されたバイナリアナログメモリセルの少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納することを含む。各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納され、行列の列内の値の対応するビットは、ビット線に沿って接続されたセル内に格納される。暗号要素に対する1つ又は複数の計算ステージのそれぞれにおいて、その要素の多項式係数のセットは、ユニットのそれぞれのワード線にビット単位で供給され、ビット線上のアナログ累算信号が得られる。本方法は、アナログ累算信号をデジタル信号に変換すること、及び、計算ステージのそれぞれにおいて係数の連続ビットから得られたデジタル信号を処理して、暗号要素に必要とされる計算結果を得ることをさらに含む。
【0005】
多項式係数がバイナリアナログセルのアレイにビット単位で供給される計算にアナログ乗累算ユニットを活用することにより、本発明を具現化する方法は、準同型暗号化システムに必要とされる高精度で暗号要素に対して非常に高速の計算をもたらす。上記参照のインメモリロジックアレイとは異なり、ビット単位のベクトル-行列乗算の結果は、アレイのビット線上に累算されるため、暗号計算の複雑性及び計算時間が著しく低減される。
【0006】
本発明の実施形態は、準同型暗号化システムにおける様々な計算の効率的な実装を提供する。一実施形態は、第1の暗号要素c1及び第2の暗号要素c2の間の多項式乗算c1c2の結果を計算する。この方法は、要素c2の多項式係数を、行列の列内のそれぞれのマルチビット値として、乗累算ユニットに格納することを含む。連続計算ステージにおいて、要素c1の係数は、c1の全ての係数がそのセット内の全てのワード線にビット単位で供給されるまで、c2の係数を格納するセルに接続されたワード線のセットに対して徐々にシフトされる。ステージのそれぞれにおいて、c2の係数を格納するセルに接続されたビット線のセットから、及びc1の係数の連続ビットから得られたデジタル信号は、処理されて、多項式乗算c1c2の結果が得られる。ここでは、この結果は、通常、c1c2 modulo pとして計算され、ここで、pは、準同型暗号化システムの予め定められた素数である。これにより、多項式暗号要素の乗算に特に効率的な技法が提供される。さらに、下記により詳細に説明されるように、複数の多項式乗算を乗累算ユニットにおいて並列して実行することができる。
【0007】
多項式乗算技法は、準同型復号に特に有利に適用することができる。ここで、第2の暗号要素c2は、準同型暗号化システムの秘密鍵(1,s)の要素sであり、第1の暗号要素c1は、対応する公開鍵で暗号化された暗号文(c0,c1)の要素であり、ここで、c0は、別の暗号要素である。この方法は、多項式乗算c1sの結果が得られた後、c1s及び要素c0の合計を計算して、暗号文の復号m=c0+c1s modulo pを得ることを含む。秘密鍵sは、比較的静的であり、すなわち、システムの動作中に頻繁に変化せず、乗累算ユニットにこの要素を格納することにより、全ての入力暗号文の迅速な復号を可能にする。複数の暗号文を並列して復号することもでき、これにより、高効率の準同型復号エンジンが提供される。実施形態は、ハイブリッドシステムを利用することもでき、それにより、乗累算ユニットにおいて多項式乗算が実行され、合計c0+c1sは、インメモリロジックアレイを使用して計算される。
【0008】
多項式乗算技法は、暗号化されたデータにおける準同型推論を実行するのに使用することもできる。ここで、ニューラルネットワーク推論モデルの暗号化された重みwは、それぞれの暗号要素cwを含み、それぞれの要素cwの多項式係数は、行列の列におけるそれぞれのマルチビット値として乗累算ユニット内に格納される。推論演算において重み付けされ、ネットワークを通じて伝播される暗号化されたデータ値dは、データ値dを重みwによって重み付けするのに多項式乗算cdcwが必要となるそれぞれの暗号要素cdを含む。推論演算における各多項式乗算cdcwは、上述のように実行することができ、ここで、cdは、第1の暗号要素c1に対応し、cwは、第2の暗号要素c2に対応する。全ての多項式乗算cdcwの結果は、暗号化されたデータ値がネットワークを通じて伝播されるときに、モデルから暗号化された推論結果を得るために処理される。
【0009】
下記に詳述するさらなる実施形態は、アナログ乗累算ユニットを使用して暗号要素を乗算するために離散フーリエ変換に基づく技法を利用する。
【0010】
本発明の第2の態様は、暗号要素がマルチビット係数を有する多項式によって表される準同型暗号化システムの計算装置を提供する。本装置は、アレイのワード線及びビット線のそれぞれの対間に接続されたバイナリアナログメモリセルの少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニット、及び本発明の第1の態様に係る計算方法を実装するように適合された制御ロジックを備える。制御ロジックは、アナログ累算信号をデジタル信号に変換する(log2q)ビットのアナログデジタルコンバータ回路部を備えることができ、ここで、qは、多項式係数が供給されるワード線の数である。
【0011】
本発明の実施形態は、添付図面を参照して、例示的かつ非限定的な例によって、より詳細に後述する。
【図面の簡単な説明】
【0012】
【
図1】本発明の一実施形態に係る計算装置の概略図である。
【0013】
【
図2】本発明の一実施形態に係る、
図1の装置におけるマルチビット値の行列を格納するアナログメモリセルのアレイの構造を示す図である。
【0014】
【
図3】本発明の一実施形態に係る、
図1の装置によって暗号要素に対して実行される計算の段階を示す図である。
【0015】
【
図4】本発明の一実施形態に係る、
図2のアレイにおけるアナログメモリセルの一例を示す図である。
【0016】
【
図5】本発明の一実施形態に係る、アレイのビット線上のアナログ累算信号から得られるデジタル信号の処理を示す図である。
【0017】
【
図6】本発明の一実施形態に係る、アレイにおける行列の列からのデジタル信号の並列処理を示す図である。
【0018】
【
図7】本発明の一実施形態に係る、暗号要素の2つのアレイに対して実行される計算を示す図である。
【0019】
【
図8】本発明の一実施形態に係る、暗号要素の多項式乗算のマルチステージ計算を示す図である。
【0020】
【
図9】本発明の一実施形態に係る、
図8の計算の例示のステージを示す図である。
【0021】
【
図10】本発明の一実施形態に係る、追加の計算のためのインメモリロジックアレイの構造を示す図である。
【0022】
【
図11】本発明の一実施形態に係る、ニューラルネットワーク推論モデルにおけるネットワーク層の概略図である。
【0023】
【
図12】本発明の一実施形態に係る、準同型推論演算の計算の実装を示す図である。
【0024】
【
図13】本発明の一実施形態に係る暗号要素の多項式乗算を示す図である。
【発明を実施するための形態】
【0025】
本発明の実施形態は、多項式によって表される暗号要素に対して計算が実行される任意の準同型暗号化(homomorphic encryption:HEnc)システムにおいて利用され得る。暗号要素は、暗号鍵、暗号文、メッセージデータ等の要素等の、計算の実行が必要とされるHEncスキームの任意の多項式要素であり得る。例えば、RLWE(Ring Learning with Errors:エラーを伴うリング学習)問題に基づくHEncスキームにおいて、暗号要素は、有限多項式リングの要素である多項式によって表される。例えば、
【数1】
の形態のこれらの多項式は、非常に大きな次数(例えば、n=1024)であり、係数a
0、a
1等を有し、これらは、多数の(例えば、何百もの)ビットによって表される。これらのスキームは、暗号化されたデータに対して計算を実行することを可能にする準同型特性を活用する。例えば、メッセージm
1及びm
2が暗号化スキームによって暗号文E(m
1)及びE(m
2)として暗号化される場合、演算子*についてE(m
1)*E(m
2)=E(m
1*m
2)となる。
【0026】
図1は、HEncシステムにおいて計算を実行するために本発明の実施形態を具現化する計算装置1の概略ブロック図である。装置1は、バイナリアナログメモリセルのクロスバーアレイ3のセットを有するアナログ乗累算(multiply-accumulate:MAC)ユニット2を備える。ここではMACコントローラ4及びデジタルプロセッサ5によって実装される制御ロジックにより、クロスバーアレイ3の演算を制御して、マルチビット係数を有する多項式によって表される暗号要素に対する計算を実行する。デジタルプロセッサ5は、ここではシステムバス6を介して、アナログMACユニット2に作動的に結合される。デジタルプロセッサは、中央処理装置(central processing unit:CPU)7及びデジタルメモリ8を有する。デジタルメモリ8は、HEncシステムの暗号計算を制御する機能を実装するために、CPU7によって実行可能なプログラム命令を有する1つ又は複数のプログラムモジュール9を格納する。装置1を利用するHEncシステムに応じて、そのようなプログラムモジュールは、例えば、HEncスキームを介したデータの暗号化及び/又は復号のための暗号アルゴリズムの段階、及び/又は、HEncスキームに基づくアプリケーションにおける暗号要素に対する計算を実装することができ、これらの計算の少なくともいくつかの段階のためにMACユニット2を使用する。
【0027】
MACコントローラ4は、クロスバーアレイ3への信号の印加を制御して、アレイのセル内にデータ値を格納し、アレイ内の計算のための信号を印加し、より詳細に後述するようにアレイによって出力された信号を処理するための制御回路部を提供する。
図1には複数のクロスバーアレイ3が示されているが、概して、MACユニット2は、1つ又は複数のクロスバーアレイを有することができる。
【0028】
図1は、装置1の例示的な実施形態を示しているが、デジタルプロセッサ5は、1つ又は複数のマイクロプロセッサによって実装され得る1つ又は複数のCPU(GPU(graphics processing units:画像処理装置)を含む)を有することができる。メモリ8は、1つ又は複数のデータストレージエンティティを有することができ、メインメモリ、例えば、DRAM(Dynamic Random-Access Memory:ダイナミックランダムアクセスメモリ)及び/又はCPU7とは物理的に分離された他のストレージ、並びにキャッシュ及び/又はCPU7に対してローカルの他のメモリを含み得る。概して、デジタルプロセッサ5は、1つ又は複数の(汎用又は専用)コンピュータ/プログラマブルデータ処理装置によって実装することができ、デジタルプロセッサによって実行される処理動作の段階は、ハードウェア又はソフトウェア又はその組み合わせによって実装することができる。MACコントローラ4は、MACユニット2における制御動作を実行するために、ハードワイヤードロジック、及び/又はソフトウェア命令によって構成可能である1つ又は複数のプロセッサを有することができる。デジタルプロセッサ5は、いくつかの実施形態において、例えば、SoC(System on Chip:システムオンチップ)設計においてMACユニット2と統合することができる。
【0029】
いくつかの実施形態において、デジタルプロセッサ5及び/又はMACコントローラ4は、電子回路部、例えば、記載した機能を実装するためのプログラム命令を実行するプログラマブルロジック回路部、フィールドプログラマブルゲートアレイ(field-programmable gate array:FPGA)、又はプログラマブルロジックアレイ(programmable logic array:PLA)を有することができる。プログラム命令/プログラムモジュールは、特定のタスクを実行する、又は、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含んでよい。デジタルプロセッサ5及び/又はMACコントローラ4は、特定の機能を実装するために、専用ハードウェアベースシステム、例えばASIC(Application-Specific Integrated Circuits:特定用途向け集積回路)を有してもよい。
【0030】
システムバス6は、メモリバス又はメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、及び多様なバスアーキテクチャのいずれかを使用するプロセッサ又はローカルバスを含む、いくつかのタイプのバス構造のいずれか1つ又は複数を表す。限定ではなく例として、このようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダードアソシエーション(VESA)ローカルバス、及び周辺コンポーネント相互接続(PCI)バスが含まれる。システムバス6は、いくつかの実施形態において、デジタルプロセッサ5を、個別のクロスバーアレイ又はアレイのサブセットを制御するMACコントローラ4のサブユニットに接続する通信ネットワークを表し得る。
【0031】
装置1において計算を実行するために、計算のためのマルチビット値の行列Mが、MACユニット2の1つ又は複数のクロスバーアレイ3に格納される。
図2は、クロスバーアレイ3の論理構造を示している。これは、図示のように、ワード線及びビット線のそれぞれの対間に接続されるバイナリアナログメモリセル10のアレイを有する。各メモリセル10は、複数のセル10内に格納されたマルチビット値の1つのビットに対応する、バイナリ状態0又は1を格納するアナログメモリデバイスを有する。行列Mにおける各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納される。Mの列内のマルチビット値の対応するビットは、ビット線に沿って接続されたセル内に格納される。図示の例において、bビット値のn×mの行列Mが、単一のアレイ3のn個のワード線及びm×b個のビット線間に接続されたセル10内に格納される。Mの行におけるm個のbビット値は、ワード線に沿って接続されたb個のセルのm個のセット内に格納される。列M内のn個のbビット値の対応するビットは、ビット線に沿って接続されたセル内に格納される。計算のためにアレイ3に入力されたデジタル信号は、デジタルアナログコンバータ(DAC)回路部11によって、ワード線に印加されるアナログ信号に変換される。ビット線上で得られた結果として生じるアナログ信号は、さらなる処理のためにアナログデジタルコンバータ(ADC)回路部12によってデジタル信号に変換される。
【0032】
図2には複数の列を有する行列Mが示されているが、概して、計算のための行列Mは、マルチビット値の列をm≧1個有し得る。また、この例では行列は単一のアレイ3内に格納されるが、行列Mは、下記に説明されるように、複数のアレイ内に格納されてもよい。
【0033】
図3は、装置1における計算プロセスの基本段階を示している。段階15は、上述したMACユニット2の1つ又は複数のアレイにおける計算のための行列Mの格納を表している。段階16において、暗号要素の多項式係数のセットが、ユニットのそれぞれのワード線にビット単位で(すなわち、ビットごとに)供給される。入力係数の各ビットがワード線に供給されると、ADC12への入力においてビット線上でアナログ累算信号が得られる。特に、ワード線に供給される入力ビット値は、そのワード線に接続されたセル10内に格納されたビット値で(アナログ領域において)効果的に乗算され、乗算結果1又は0にそれぞれ対応して、接続されたビット線上のそのセルから電流を提供するか又は電流を提供しない。所与のビット線上の全てのセルからの寄与により、そのビット線の出力においてアナログ累算信号が提供される。これは、ビット線上の全てのセルからの乗算結果の累算を表し、したがって、ワード線上の入力ビットのベクトルに、そのビット線に接続されたセル内に格納されたビットのベクトルを乗算した結果を表す。これは、全てのビット線に対して並列して行われ、それにより、ビット単位のベクトル-行列乗算が行われる。段階17に示されているように、入力係数の連続ビットについて、全てのビット線上で得られるアナログ累算信号が、ADC12によってデジタル累算信号に変換される。段階16及び17は、下記にさらに説明されるように、計算の複数のステージのそれぞれについて繰り返され得る。段階18において、(1つ又は複数の)計算ステージのそれぞれにおいて入力係数の連続ビットから得られた結果として生じるデジタル信号が、暗号要素に必要な計算結果を得るために処理される。この処理は、MACコントローラ4及びデジタルプロセッサ5のうちの1つ又は組み合わせにおいて実行することができる。次いで、段階19において、計算結果が、さらなる暗号計算に使用するために、MACコントローラ4又はデジタルメモリ8内に格納され、及び/又は、暗号プロセスの最終計算結果としてデジタルプロセッサ5によって出力され得る。
【0034】
MACユニット2のアナログメモリセル10は、アナログ計算が電流又は電荷の使用にそれぞれ基づく、多様な抵抗又は電荷ベースのメモリデバイスのいずれかを有する、不揮発性又は永続的メモリセルによって実装することができる。例えば、電荷ベースのメモリデバイスの例として、DRAM、SRAM(Random-Access Memory:ランダムアクセスメモリ)、及びフラッシュメモリデバイスが挙げられ、抵抗ベースのデバイスとして、PCM(Phase-Change Memory:相変化メモリ)、RRAM(登録商標)(Resistive Random-Access Memory:抵抗変化型メモリ)、及びSTT-MRAM(Spin-Transfer Torque Magnetic Random-Access Memory:スピン注入トルク磁気抵抗ランダムアクセスメモリ)が挙げられる。入力信号は、ワード線上に電圧として印加され、セルのタイプに応じて、ベクトル-行列乗算は、アレイの物理的構造を使用して、オームの法則又はクーロンの法則及びキルヒホッフの回路法則の組み合わせを介して行われる。結果は、ビット線ADCを通じて読み取られた正味のアナログ電流又は電圧から導出される。セル10内に値を格納し、アレイ計算中にセルを駆動するMAC制御回路部は、アナログセルの特定の実装に従って既知の方法で実装することができる。
【0035】
装置1のいくつかの実施形態において、アナログセル10は、アナログSRAMセルを含む。アナログSRAMセルの一例が、
図4に示されている。アナログセル10は、図示のコンデンサC及びスイッチs1、s2、及びs3を含む回路部を介してワード線WL及びビット線BL間に接続された標準的なデジタルSRAMセル20を有する。デジタルSRAMセル20は、前述したマルチビット値の1つのビットを格納する。アレイ動作の第1の段階において、スイッチs1が閉鎖され、入力ビット値0又は1に対応する入力信号がワード線WLに印加される。コンデンサCは、入力ビットが1であるか0であるかに応じて、荷電されるか又は荷電されないままとなる。次いで、スイッチs2が閉鎖され、それにより、セル20がビット値0を格納する場合、コンデンサCは放電される。最後に、スイッチs3が閉鎖され、ビット線BLに沿った全てのセルのコンデンサが短絡され、それにより、電荷共有によって、累算結果に対応するビット線上の最終電圧が生成される。
【0036】
行列Mの2つ以上の列における値がアレイ3内に格納される場合、デジタル累算信号は、列ごとに処理される。いくつかの実施形態において、MACコントローラ4は、行列のそれぞれの列から得られるデジタル信号を処理する処理ロジックを有する。ワード線にビット単位で供給される係数の各ビットについて、この処理ロジックは、これらの値の連続ビット位置に対応する連続ビットシフトで、行列の列内に値を格納するセルに接続されたビット線のセットから得られるデジタル信号を累算する。係数の連続的な入力ビットに対する結果として生じるデジタル信号も、係数の連続ビット位置に対応する連続ビットシフトで累算される。
図5は、簡略化された例に対するこの処理ロジックの実装及び動作を示している。
【0037】
図5の処理ロジックは、アレイ3の周辺におけるハードワイヤードデジタルロジック25によって実装される。この単純な例において、入力暗号要素c
1は、4つの2ビット係数を有する多項式係数ベクトル(0,1,3,2)によって表される。アレイの図示の部分は、4つの3ビット値を有するMの列ベクトル(3,6,2,1)を格納する。c
1の係数は、LSB(Least Significant Bit:最下位ビット)ファーストで、それぞれのワード線にビット単位で供給される。ADC12は、log
2qビットADCであり、ここで、qは、係数が供給されるワード線の数であり、ここではq=4である。各ビット線から結果として生じるデジタル信号は、入力係数のLSBのベクトルを、そのビット線に接続されたセル内に格納されたビットのベクトルで乗算した結果を表す。これらの信号は、デジタルロジック25に供給され、少なくとも、ロジックブロック25の入力LSBセクションにおいて示されているように処理される。このセクションに入力されるデジタル信号は、アレイ内の値のビット位置のMSB(Most Significant Bit:最上位ビット)からLSBの順に十進法で表された値(1,2,0)を有する。これらの信号は、示されているように、これらのビット位置に対応するビットシフトによってスケーリングされ、値(1×2
2,2×2
1,0×2
0)=(4,4,0)が得られる。シフトされた信号は、累算され、十進法の値8のバイナリ信号が得られる。次いで、入力係数のMSBがアレイに供給され、その結果は、少なくとも、ブロック25の入力MSBセクションにおいて示されているものと同じロジックによって処理される。入力係数のMSB位置に対応する追加のビットシフトが、信号値(0,2,1)=3(二進数11)の合計に適用され、二進数110=6が得られる。次いで、入力係数の双方のビットからの結果が加算され、必要に応じてドット積結果(0,1,3,2)・(3,6,2,1)=14が得られる。
【0038】
上記例は単純なものであるが、同じ原理を、実際の暗号要素の大きな多項式係数ベクトル、及び多数のビットを有する格納されたbビット値に適用することができる。
図6に示されているように、デジタルロジック25は、アレイ3内の値の複数の列のそれぞれに関連付けることができ、ビット単位のベクトル-行列乗算を並列に実行することが可能である。
【0039】
MACユニットにおいて処理される行列M又は係数ベクトルが単一のアレイのサイズよりも大きい場合、行列M又は係数ベクトルを複数のアレイにマッピングすることができ、これらのアレイからの乗算結果を組み合わせて、最終結果を生成することができる。
図7は、2つのアレイA1及びA2に対して計算が実行される一例に関して、この技法を示している。いくつかの実施形態において、Mの行を複数のアレイにわたって分配することもできる。
【0040】
上記技法は、暗号計算のためのベクトル-行列乗算をO(1)の時間計算量で実行することを可能にする。ADC12における決定境界は、アレイ又はアナログメモリセルの非理想性からのオフセットに適応するように調節することができる。アナログSRAMセル10を使用することで、セルの1及び0状態のばらつきを低減することによってこのタスクを簡略化する。したがって、ビット単位の演算により、HEncシステムに必要なビットレベルの正確さで計算を実行することが可能になる。
【0041】
いくつかの実施形態は、第1の暗号要素c
1及び第2の暗号要素c
2の間の多項式乗算c
1c
2の結果を計算する技法を利用する。この技法は、
図8に示されている。ここで、要素c
2のn個の係数は、行列Mの列内のそれぞれのマルチビット値として、MACユニット2内(この例では、単一のアレイ3内)に格納される。計算の連続ステージのそれぞれにおいて、c
1係数のセットがアレイに供給され、これらのセット内の係数の数は、連続ステージにわたって徐々に増加し、その後減少する。特に、図に示されているように、MACコントローラ4は、c
1の全ての係数がそのセット内の全てのワード線にビット単位で供給されるまで、要素c
1の係数を、c
2の係数を格納するセルに接続されたワード線のセット(ここではWL
1~WL
n)に対して徐々にシフトする。計算ステージのそれぞれにおいて、c
2の係数を格納するセルに接続されたビット線のセットから、及びc
1の係数の連続ビットから得られたデジタル信号は、次いで、上述のように処理され、多項式乗算c
1c
2の結果が得られる。この技法の動作は、以下のような単純な例から理解することができる。
【0042】
c
1=(ax
2+bx)及びc
2=(cx
2+dx)として、単純な多項式乗算c
1c
2を考える:
【数2】
【0043】
図9は、結果として得られる多項式c
3=c
1c
2の必要な係数を出力する
図8の技法の3つの連続計算ステージを示している。これにより、多項式暗号要素の高精度の乗算に特に効率的な技法が提供される。HEncシステムにおいて通常必要とされるように、モジュロpでの多項式乗算が必要な場合、デジタル処理においてモジュロ演算を適用して、c
3=c
1c
2 modulo pを得ることができる。モジュロ演算は、必要に応じて、MACコントローラ4のロジックにおいて(例えば、デジタルロジック25における追加のモジュロ回路によって)及び/又はデジタルプロセッサ5において既知の方法で実行することができる。デジタル処理は、c
1及びc
2と同じ次数の多項式c
3=c
1c
2を得るための再線形化動作を含むこともできる。再線形化は、当業者には明らかとなる準同型暗号化用途に対する多様な標準的技法を使用して達成することができる。
【0044】
1つ又は複数のさらなる多項式乗算c
1cは、ワード線WL
1~WL
nの同じセットに接続されたセルにおいて、Mのさらなる列内の暗号要素cの係数を格納することによって、
図8において並列に実行することができる。対応するビット線から得られたデジタル信号は、次いで、上記のように処理される。
【0045】
図8に記載されている技法は、準同型復号に特に有利に適用することができる。ここで、第2の暗号要素c
2は、準同型暗号化システムの秘密鍵(1,s)の要素sであり、第1の暗号要素c
1は、対応する公開鍵で暗号化された暗号文(c
0,c
1)の要素であり、ここで、c
0は、別の暗号要素である。詳細は以下である。
【0046】
(1,s)をRLWEベースの準同型暗号化の秘密鍵とする;
【0047】
【数3】
を公開鍵とする(
【数4】
、ここで、
【数5】
は、多項式であり、pは素数である);
【0048】
平文メッセージを多項式mにエンコードする;
【0049】
(e0,e1)をランダム発生ノイズ多項式とする;及び
【0050】
【数6】
をメッセージmの暗号化とし、ここで、rは、暗号化プロセスに対するランダム定数である。
【0051】
メッセージmは、次いで、復号プロセスを介して、c
0+c
1s mod pとして復元することができる。
図8の技法を利用する復号システムにおいて、秘密鍵sは、MACユニット2内に格納され、要素c
1の係数は、ユニットに供給されて、多項式乗算c
1sの結果が得られる。次いで、c
1s及び要素c
0の合計を計算して、暗号文の復号m=c
0+c
1s modulo pを得ることができる。これにより、1つ又は複数の入力暗号文をMACユニットにおける並列計算によって復号することができる、高効率の準同型復号エンジンが提供される。
【0052】
合計c
0+c
1sはデジタルプロセッサ5において計算することができるが、いくつかの実施形態は、MACユニット2におけるハイブリッドインメモリ計算システムを利用し得る。ここで、多項式乗算c
1sは、上述したMACユニット2において実行され、合計c
0+c
1sは、インメモリロジックアレイを使用して計算される。インメモリロジックは、既知のSRAMアレイを使用して実装することができ、その一例を、
図10を参照して簡潔に説明する。加算される2つの多項式からの係数は、2つのワード線WL
i及びWL
jに沿って格納されるが、
図10と同じビット線を共有する。2つのワード線をともに有効化することにより、修正されたセンスアンプ(SA)が、ビット線間のNOR及びAND演算を計算することができる。ビット線からの2つのSAにおけるNORを実行した結果、2つのビット間のXORが計算される。XOR及びANDは、ともに半加算回路を構成する。複数のビット線からの半加算器の結果は、リップルキャリー加算器によって組み合わされ、多項式係数の加算を実行することができる。
【0053】
図8の技法は、当然ながら、HEncスキームの任意の計算、例えば、鍵生成及び/又は暗号化動作において必要とされる多項式乗算に適用することができる。ハイブリッド実施形態は、加算以外の演算、例えば、減算、スケーリング、及び/又は暗号要素のコンポーネント単位の乗算のための既知のインメモリロジックユニットを使用することもできる。例えば、多項式のうちの1つの係数の2の補数を使用することによって、
図10のロジックを減算に使用することができる。
【0054】
図8に記載されている技法は、暗号化されたデータの準同型推論システムを実装するのに使用することもできる。特に、ニューラルネットワーク推論モデルの重みは、HEncスキームの暗号要素として暗号化し、MACユニット2内に格納することができる。ニューラルネットワーク(Neural network:NN)モデルは、1つの層におけるニューロンの出力信号が重み付けされ、次の層におけるニューロンに伝送されるように、一連のニューロンの層が相互接続される論理構造を活用する。ネットワークをトレーニングデータのセットに公開することにより、NNモデルを既知の方法でトレーニングして、入力データに対する推論(例えば、分類又は回帰動作)を実行し、例えば、その画像コンテンツに従ってデジタル画像を分類することができる。トレーニング動作を介して規定された重みを有する、結果として得られるトレーニング済みネットワークを、新しい(以前は見られなかった)データに適用して、当該のアプリケーションに対する推論タスクを実行することができる。
【0055】
図11は、第1のネットワーク層における接続を示す、例示的なNNモデル30の単純な概略図を示している。層入力におけるニューロンは、n
i(i=1~K)で示され、層出力におけるニューロンは、n
j(j=1~L)によって示される。各ニューロンn
iは、各ニューロンn
jに接続され、重みw
ijは、各ニューロン間接続に対して規定される。ニューロンn
iに供給された入力データ値d
iは、ニューロン対の対応する重みw
ijによって重み付けした後、各ニューロンn
jに伝送される。各ニューロンn
jは、ニューロンn
iからの累算された重み付き入力に応じて活性化信号を生成する。したがって、重み付き信号が、ネットワークの連続層を通じてこのように伝播することができ、それにより、出力層におけるニューロンは、ネットワークからの推論結果を提供する。
【0056】
HEnc推論システムにおいて、HEncスキームによって暗号化されたデータ値に対して推論が実行される。NNモデルのパラメーター(重み、活性化関数等)も、HEncスキームを介して暗号化される。特に、
図8の技法を利用する準同型推論システムにおいて、NN推論モデルの暗号化された重みwは、それぞれの暗号要素c
wを有し、各要素c
wの係数は、行列Mの列内のそれぞれのマルチビット値としてMACユニット2内に格納される。推論演算において重み付けされ、ネットワークを通じて伝播される暗号化されたデータ値dは、重みwによってデータ値dを重み付けするために多項式乗算c
dc
wを必要とするそれぞれの暗号要素c
dを有する。推論演算における各多項式乗算c
dc
wは、
図8を参照して記載されているように実行することができ、ここで、c
dは、第1の暗号要素c
1に対応し、c
wは、第2の暗号要素c
2に対応する。
【0057】
図12は、NNモデル30における入力データ値d
1及びd
2に対する多項式乗算をアレイA1及びA2にマッピングし、
図8を参照して開示される技法を介して計算することができる方法を示している。各暗号化されたデータ値d=d
1又はd
2は、ネットワークを通じた伝播のために複数の重みw
j=1~Lによって重み付けしなければならず、対応する複数の多項式乗算
【数7】
を必要とする。各要素
【数8】
の係数は、要素
【数9】
に対するワード線の共通のセットに接続されたセル内の行列Mのそれぞれの列内に格納され、それにより、c
dの全ての係数がセット内の全てのワード線にビット単位で供給されるまで、要素c
dの係数をそのワード線のセットに対して徐々にシフトさせることによって、全ての多項式乗算
【数10】
の結果が得られる。暗号化されたデータ値がネットワークを通じて伝播されるときに必要とされる全ての多項式乗算c
dc
wを同様に計算することができる。全ての多項式乗算の結果が処理されて、モデルから暗号化された推論結果が得られる。特に、個々の多項式乗算の結果は、特定のネットワークアーキテクチャに従って、モジュロ演算、(暗号化された)活性化関数を適用し、暗号化された信号がネットワークを通じて伝播されるときに連続的なネットワーク層に対する入力信号を計算することによって、デジタルプロセッサ5において処理することができる。これにより、プライバシー保護用途での高効率の準同型推論エンジンが提供される。
【0058】
装置1の別の実施形態は、アナログ乗累算ユニットを使用して暗号要素を乗算するために離散フーリエ変換を利用する。
図13は、n個の多項式係数をそれぞれ有する暗号要素c
1及びc
2の多項式乗算c
1c
2を計算するためのこの実施形態の動作を概略的に示している。この実施形態において、マルチビット値の行列は、e
i,j=k
i×j modulo pによって与えられる(整数)値e
i,j、i=0~(n-1)、j=0~(n-1)を有する離散フーリエ変換行列M
1を含み、ここで、k
N=1 modulo p、N≧nである。加えて、M
1に対応する逆離散フーリエ変換行列M
2は、MACユニットの少なくとも1つのさらなるクロスバーアレイ内のマルチビット(整数)値のさらなる行列として格納される。要素c
1のn個の係数は、M
1に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給される。係数の連続ビットから得られるデジタル信号は、処理されて、要素c
1の係数の離散フーリエ変換T(c
1)が得られる。同様に、要素c
2のn個の係数は、M
1に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給され、係数の連続ビットから結果として生じるデジタル信号は、処理されて、要素c
2の係数の離散フーリエ変換T(c
2)が得られる。次いで、デジタルプロセッサ5は、T(c
1)及びT(c
2)の対応するコンポーネントのコンポーネント単位の乗算を実行し、暗号要素c
3の係数の離散フーリエ変換T(c
3)が得られる。次いで、T(c
3)のコンポーネントは、M
2に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給される。結果として得られるビット線上のアナログ累算信号は、デジタル信号に変換され、以前と同様に処理されて、多項式乗算c
3=c
1c
2の結果が得られる。この結果は、前述のように得られたモジュロpであり得る。デジタルプロセッサ5におけるコンポーネント単位の乗算は、他の実施形態においてインメモリロジックによって計算することができる。
【0059】
上記実施形態は、HEncシステムにおける暗号要素に対する高効率の計算を提供することが見て取れる。しかしながら、記載された実施形態に対して様々な代替及び変更を行うことができる。例として、記載された処理動作は、MACコントローラ4とデジタルプロセッサ5との間で別様に割り当てられてよい。係数がMSBファーストでMACアレイに入力される実施形態が想定され得る。メモリセル10は、SRAMセルとは異なるタイプのセルを使用して実装することもできる。
【0060】
概して、本発明を具現化する方法を参照して本明細書に特徴が記載されている場合、本発明を具現化する装置/システムにも対応する特徴を提供することができ、その逆もまた同様である。フロー図の段階は、図示のものとは異なる順序で実行してもよく、いくつかの段階を適宜並列に実行してもよい。
【0061】
本発明は、任意の可能な技術的詳細レベルで統合化されたシステム、方法及び/又はコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数の媒体)を含んでよい。
【0062】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持及び格納することのできる有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又はこれらの任意の好適な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタルバーサタイルディスク(DVD:digital versatile disk)、メモリスティック、フロッピーディスク、命令が記録されているパンチカード又は溝の中の隆起構造等の機械的にエンコードされるデバイス、及びこれらの任意の好適な組み合わせを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波又は他の自由に伝播する電磁波、導波路又は他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通じて伝送される電気信号等、それ自体が一時的な信号であると解釈されるべきではない。
【0063】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は無線ネットワークを介して、外部コンピュータ又は外部ストレージデバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからのコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0064】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データであってもよく、Smalltalk(登録商標)又はC++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述したソースコード又はオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、リモートコンピュータ上で一部分を実行すること、又は、リモートコンピュータ又はサーバ上で全体を実行することができる。後者のシナリオでは、リモートコンピュータが、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、又はその接続が、(例えば、インターネットサービスプロバイダを使用したインターネットを介して)外部コンピュータに対して行われてよい。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行し、電子回路をパーソナライズしてよい。
【0065】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明されている。フローチャート図及び/又はブロック図の各ブロック、及び、フローチャート図及び/又はブロック図におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【0066】
これらのコンピュータ可読プログラム命令をコンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供してマシンを生成してよく、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックで指定された機能/動作を実装するための手段を作成する。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置及び/又は他のデバイスに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体にも格納され得、それにより、その中に命令が格納されたコンピュータ可読記憶媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を有する。
【0067】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイス上にロードして、一連の動作段階をコンピュータ、他のプログラマブル装置又は他のデバイス上で実行させ、コンピュータ実装プロセスを生成してよく、それにより、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックで指定された機能/動作を実装する。
【0068】
図面におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、及び動作を示している。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又は、一部分を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックが、実際には、1つの段階として実現されてよく、同時に、実質的に同時に、部分的に又は全体的に時間が重複する方式で実行されてよく、又は、ブロックは、場合によっては、関与する機能に応じて逆の順序で実行されてよい。ブロック図及び/又はフローチャート図の各ブロック、及び、ブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用ハードウェア及びコンピュータ命令の組み合わせを実行する、専用ハードウェアベースシステムにより実装され得ることにも留意されたい。
【0069】
本発明の様々な実施形態の記載は、図示の目的で表示されてきたが、網羅的であること、又は、開示される実施形態に限定されることを意図するものではない。本発明の範囲から逸脱することなく、多くの修正及び変形が当業者にとって明らかとなるであろう。本明細書で使用される用語は、実施形態の原理、実際の適用、又は市場で見られる技術に対する技術的改良を最も良く説明するため、又は、他の当業者が本明細書で開示されている実施形態を理解することを可能にするようにするために選択されたものである。
【手続補正書】
【提出日】2023-11-24
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
バイナリアナログメモリセルの少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続された前記少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納する段階、ここで:
各マルチビット値のビットがワード線に沿って接続されたセル内に格納される;及び
前記行列の列内の値の対応するビットがビット線に沿って接続されたセル内に格納される;
暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、要素の多項式係数のセットを前記アナログ乗累算ユニットのそれぞれのワード線にビット単位で供給し、それぞれのビット線におけるアナログ累算信号を得る段階;
前記アナログ累算信号をデジタル信号に変換する段階;及び
前記1つ又は複数の計算ステージのそれぞれにおいて前記多項式係数の連続ビットから得られた前記デジタル信号を処理して、前記暗号要素の計算結果を得る段階
を備える、コンピュータ実装方法。
【請求項2】
前記ワード線にビット単位で供給される前記多項式係数の各ビットについて、前記行列の列内に値を格納するセルに接続されたビット線のセットから得られた前記デジタル信号を、前記値の連続ビット位置に対応する連続ビットシフトで累算する段階;及び
前記多項式係数の前記連続ビットの前記デジタル信号を、前記多項式係数の連続ビット位置に対応する連続ビットシフトで累算する段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
第1の暗号要素c
1の前記計算結果は、多項式乗算c
1c
2の結果であり、c
2は、第2の暗号要素であり、
前記第2の暗号要素c
2の多項式係数を、前記行列の第1の列内のそれぞれのマルチビット値として前記アナログ乗累算ユニットに格納する段階;
連続する計算ステージにおいて、要素c
1の多項式係数を、c
2の係数を格納するセルに接続されたワード線のセットに対して、c
1の係数が前記ワード線のセット内のワード線にビット単位で供給されるまで徐々にシフトする段階;及び
前記計算ステージのそれぞれにおいて、c
2の前記係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果を得る段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果のc
1c
2 modulo pを得る段階、ここで、pは、準同型暗号化システムの予め定められた素数である
をさらに備える、請求項3に記載のコンピュータ実装方法。
【請求項5】
少なくとも1つのさらなる暗号要素cについて:
要素cの多項式係数を、前記行列のさらなる列内のそれぞれのマルチビット値として、前記ワード線のセットに接続されたセル内に格納する段階;及び
前記計算ステージのそれぞれにおいて、cの前記多項式係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、さらなる多項式乗算c
1cのさらなる結果を得る段階
をさらに備える、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記第2の暗号要素c
2は、準同型暗号化システムの秘密鍵(1,s)の要素sであり;
前記第1の暗号要素c
1は、対応する公開鍵によって暗号化された暗号文(c
0,c
1)の要素であり;
c
0は、別の暗号要素であり;
多項式乗算c
1sの結果を得る段階の後、c
1s及びc
0の合計を計算して、前記暗号文の復号m=c
0+c
1s modulo pを得る段階をさらに備え、ここで、pは、前記準同型暗号化システムの予め定められた素数である、請求項3に記載のコンピュータ実装方法。
【請求項7】
インメモリロジックアレイにおいて前記合計を計算する段階
をさらに備える、請求項6に記載のコンピュータ実装方法。
【請求項8】
ニューラルネットワークの推論モデルの暗号化された重みwは、それぞれの暗号要素c
wを有し、各要素c
wの多項式係数は、前記行列の列内のそれぞれのマルチビット値として前記アナログ乗累算ユニット内に格納され;
推論演算において重み付けされ、ニューラルネットワークを通じて伝播される暗号化されたデータ値dは、重みwによってデータ値dを重み付けするために多項式乗算c
dc
wを必要とするそれぞれの暗号要素c
dを有し;
前記推論演算において各多項式乗算c
dc
wを実行する段階、ここで、c
dは、前記第1の暗号要素c
1に対応し、c
wは、前記第2の暗号要素c
2に対応する;
暗号化されたデータ値が前記ニューラルネットワークを通じて伝播されるときに多項式乗算c
dc
wの前記結果を処理して、前記推論モデルから暗号化された推論結果を得る段階
をさらに備える、請求項3に記載のコンピュータ実装方法。
【請求項9】
前記ニューラルネットワークを通じた伝播のために複数の重みw
j=1~Lによって重み付けされる暗号化されたデータ値dについて、対応する複数の多項式乗算
【数1】
を必要とし、各要素
【数2】
の前記係数は、前記要素
【数3】
に対するワード線の共通のセットに接続されたセル内の前記行列のそれぞれの列内に格納され;
多項式乗算
【数4】
の前記結果は、要素c
dの前記係数をそのワード線のセットに対して、c
dの係数が前記セット内のワード線にビット単位で供給されるまで徐々にシフトさせることによって得られる
請求項8に記載のコンピュータ実装方法。
【請求項10】
n個の多項式係数をそれぞれ有する第1の暗号要素c
1及び第2の暗号要素c
2の多項式乗算c
1c
2を計算するために、ここで、マルチビット値の前記行列は、e
i,j=k
i×j
modulo pによって与えられる、値e
i,j、i=0~(n-1)、j=0~(n-1)を有する離散フーリエ変換行列M
1を含み、ここで、k
N=1 modulo p、N≧nであり、pは、準同型暗号化システムの予め定められた素数である、
M
1に対応する逆離散フーリエ変換行列M
2を、マルチビット値のさらなる行列として、前記アナログ乗累算ユニットのさらなるクロスバーアレイに格納する段階;
要素c
1のn個の係数を、M
1に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給するとともに、前記係数の連続ビットから得られた前記デジタル信号を処理して、要素c
1の前記係数の離散フーリエ変換T(c
1)を得る段階;
要素c
2のn個の係数を、M
1に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給するとともに、前記係数の連続ビットから得られた前記デジタル信号を処理して、要素c
2の前記係数の離散フーリエ変換T(c
2)を得る段階;
T(c
1)及びT(c
2)の対応するコンポーネントのコンポーネント単位の乗算を実行して、暗号要素c
3の前記係数の別の離散フーリエ変換T(c
3)を得る段階;及び
T(c
3)の前記コンポーネントを、M
2に値を格納するセルに接続されたそれぞれのワード線にビット単位で供給して、前記ビット線におけるアナログ累算信号を得て、前記アナログ累算信号をデジタル信号に変換し、前記コンポーネントの連続ビットから得られた前記デジタル信号を処理して、前記多項式乗算の結果c
3=c
1c
2を得る段階
をさらに備える、請求項1
から9のいずれか一項に記載のコンピュータ実装方法。
【請求項11】
前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果のc
1c
2 modulo pを得る段階をさらに備え、ここで、pは、前記準同型暗号化システムの予め定められた素数である
請求項10に記載のコンピュータ実装方法。
【請求項12】
インメモリロジックアレイを使用する前記計算に必要とされる暗号要素の(i)加算、(ii)減算、(iii)スケーリング、及び(iv)コンポーネント単位の乗算からなる群から選択される演算を実行する段階
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記バイナリアナログメモリセルは、アナログスタティックランダムアクセスメモリ(SRAM)セルを含む、請求項1に記載のコンピュータ実装方法。
【請求項14】
暗号要素がマルチビット係数を有する多項式によって表される準同型暗号化システムを備え、前記準同型暗号化システムは、バイナリアナログメモリセルの少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続された前記少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニット、1つ又は複数のコンピュータ可読記憶媒体、及び実行のために前記1つ又は複数のコンピュータ可読記憶媒体上に集合的に格納されたプログラム命令を有し、前記プログラム命令は、
前記少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続されたバイナリアナログメモリセルの少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納するプログラム命令、ここで、
各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納される;及び
前記行列の列内の値の対応するビットは、ビット線に沿って接続されたセル内に格納される;
暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、要素の多項式係数のセットを、前記アナログ乗累算ユニットのそれぞれのワード線にビット単位で供給して、それぞれのビット線におけるアナログ累算信号を得るプログラム命令;
前記アナログ累算信号をデジタル信号に変換するプログラム命令;及び
前記1つ又は複数の計算ステージのそれぞれにおいて、前記多項式係数の連続ビットから得られた前記デジタル信号を処理して、前記暗号要素の計算結果を得るプログラム命令
を含む、コンピュータシステム。
【請求項15】
前記ワード線にビット単位で供給される前記多項式係数の各ビットについて、前記行列の列内に値を格納するセルに接続されたビット線のセットから得られた前記デジタル信号を、前記値の連続ビット位置に対応する連続ビットシフトで累算するプログラム命令;及び
前記多項式係数の前記連続ビットの前記デジタル信号を、前記多項式係数の連続ビット位置に対応する連続ビットシフトで累算するプログラム命令
をさらに備える、請求項14に記載のコンピュータシステム。
【請求項16】
第1の暗号要素c
1の前記計算結果は、多項式乗算c
1c
2の結果であり、c
2は、第2の暗号要素であり、
前記第2の暗号要素c
2の多項式係数を、前記行列の第1の列内のそれぞれのマルチビット値として前記アナログ乗累算ユニットに格納するプログラム命令;
連続する計算ステージにおいて、要素c
1の前記多項式係数を、c
2の係数を格納するセルに接続されたワード線のセットに対して、c
1の係数が前記ワード線のセット内のワード線にビット単位で供給されるまで徐々にシフトさせるプログラム命令;及び
前記計算ステージのそれぞれにおいて、c
2の前記係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果を得るプログラム命令
をさらに備える、請求項14に記載のコンピュータシステム。
【請求項17】
前記デジタル信号を処理して、前記多項式乗算c
1c
2の前記結果のc
1c
2 modulo pを得るプログラム命令、ここで、pは、準同型暗号化システムの予め定められた素数である
をさらに備える、請求項16に記載のコンピュータシステム。
【請求項18】
少なくとも1つのさらなる暗号要素cについて:
要素cの多項式係数を、前記行列のさらなる列内のそれぞれのマルチビット値として、前記ワード線のセットに接続されたセルに格納するプログラム命令;及び
前記計算ステージのそれぞれにおいて、cの前記多項式係数を格納するセルに接続された前記ビット線のセットから、及びc
1の前記係数の連続ビットから得られた前記デジタル信号を処理して、さらなる多項式乗算c
1cのさらなる結果を得るプログラム命令
をさらに備える、請求項16に記載のコンピュータシステム。
【請求項19】
前記第2の暗号要素c
2は、準同型暗号化システムの秘密鍵(1,s)の要素sであり;
前記第1の暗号要素c
1は、対応する公開鍵によって暗号化された暗号文(c
0,c
1)の要素であり;
c
0は、別の暗号要素であり;
多項式乗算c
1sの結果を得た後、c
1s及びc
0の合計を計算して、前記暗号文の復号m=c
0+c
1s modulo pを得るプログラム命令、ここで、pは、前記準同型暗号化システムの予め定められた素数である
をさらに備える、請求項16
から18のいずれか一項に記載のコンピュータシステム。
【請求項20】
プログラム命令を備え、前記プログラム命令は、
バイナリアナログメモリセルの少なくとも1つのクロスバーアレイのワード線及びビット線のそれぞれの対間に接続された前記少なくとも1つのクロスバーアレイを有するアナログ乗累算ユニットに、計算のためのマルチビット値の行列を格納するプログラム命令、ここで:
各マルチビット値のビットは、ワード線に沿って接続されたセル内に格納される;及び
前記行列の列内の値の対応するビットは、ビット線に沿って接続されたセル内に格納される;
暗号要素の1つ又は複数の計算ステージのそれぞれにおいて、要素の多項式係数のセットを、前記アナログ乗累算ユニットのそれぞれのワード線にビット単位で供給して、それぞれのビット線におけるアナログ累算信号を得るプログラム命令;
前記アナログ累算信号をデジタル信号に変換するプログラム命令;及び
前記1つ又は複数の計算ステージのそれぞれにおいて前記多項式係数の連続ビットから得られた前記デジタル信号を処理して、前記暗号要素の計算結果を得るプログラム命令
を含む、コンピュータプログラ
ム。
【国際調査報告】