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

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

▶ ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロントの特許一覧

特許7074363準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU)
<>
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図1A
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図1B
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図1C
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図2
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図3
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図4
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図5
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図6
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図7
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図8
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図9
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図10
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図11
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図12
  • 特許-準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU) 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-16
(45)【発行日】2022-05-24
(54)【発明の名称】準同型暗号下での安全な計算を加速するための準同型処理ユニット(HPU)
(51)【国際特許分類】
   G09C 1/00 20060101AFI20220517BHJP
   G06F 9/38 20060101ALI20220517BHJP
   G06F 21/72 20130101ALI20220517BHJP
   H04L 9/10 20060101ALI20220517BHJP
【FI】
G09C1/00 610Z
G06F9/38 370C
G06F21/72
H04L9/10 A
【請求項の数】 23
(21)【出願番号】P 2019555859
(86)(22)【出願日】2017-08-11
(65)【公表番号】
(43)【公表日】2020-12-24
(86)【国際出願番号】 IB2017054919
(87)【国際公開番号】W WO2019053486
(87)【国際公開日】2019-03-21
【審査請求日】2020-08-11
(31)【優先権主張番号】62/484,304
(32)【優先日】2017-08-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】512080756
【氏名又は名称】ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロント
【氏名又は名称原語表記】THE GOVERNING COUNCIL OF THE UNIVERSITY OF TORONTO
(74)【代理人】
【識別番号】100114775
【弁理士】
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【弁理士】
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【弁理士】
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100191086
【弁理士】
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】ヘドゥア,アルハッサン
(72)【発明者】
【氏名】ラク,グレン
【審査官】青木 重徳
(56)【参考文献】
【文献】米国特許出願公開第2017/0180115(US,A1)
【文献】Sujoy Sinha Roy et al. ,Compact Ring-LWE Cryptoprocessor,LNCS, International Workshop on Cryptographic Hardware and Embedded Systems,Vol. 8731,2014年,p. 371-391
【文献】Yarkin Doroz et al.,Accelerating Fully Homomorphic Encryption in Hardware,IEEE Transactions on Computers,2015年06月01日,Vol. 64, No. 6,pp. 1509-1521
【文献】Sujoy Sinha Roy et al.,Modular Hardware Architecture for Somewhat Homomorphic Function Evaluation,Cryptographic Hardware and Embedded Systems CHES 2015,2015年09月01日,pp. 164-184
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 9/38
H04L 9/10
G06F 21/72
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
集積回路(IC)準同型プロセッサチップであって、前記プロセッサチップが、
少なくとも1つのプロセッサスライスであって、前記プロセッサスライスが、
ローカル制御回路構成と、
準同型暗号を使用して暗号化されたデータ上で演算を行うためのマルチプルモードで動作するために前記ローカル制御回路構成に応答する数論変換(NTT)バタフライユニットであって、各モードは、前記NTTバタフライユニットの異なる構成と関連付けられている、NTTバタフライユニットと、
前記ローカル制御回路構成および前記NTTバタフライユニットに結合されたオンチップメモリと、
を含み、
所与のNTT変換演算が、前記NTTバタフライユニットによる評価のlog (n)-1ステージが続く始めのNTTステップを伴い、式中、「n」が、1組の暗号文(C txt )係数値と関連付けられた多項式の次数を表す
プロセッサスライス
を備える、IC準同型プロセッサチップ。
【請求項2】
前記NTTバタフライユニットが、完全準同型暗号化を伴う演算用のマルチプルモードで動作するために前記ローカル制御回路構成に応答する、請求項1に記載のIC準同型プロセッサチップ。
【請求項3】
前記NTTバタフライユニットが、部分的準同型暗号化を伴う演算用のマルチプルモードで動作するために前記ローカル制御回路構成に応答する、請求項1に記載のIC準同型プロセッサチップ。
【請求項4】
前記NTTバタフライユニット用の第1の構成が、第1の暗号文(Ctxt)関数を実施するために第1の回路構成を使用し、
前記NTTバタフライユニット用の第2の構成が、第2のCtxt関数を実施するために前記第1の回路構成の少なくとも一部を再利用する、
請求項1~3のいずれか一項に記載のIC準同型プロセッサチップ。
【請求項5】
前記第1の回路構成が、暗号文(Ctxt)加算関数を実施し、
前記第2のCtxt関数が、Ctxt乗算関数を備える、
請求項4に記載のIC準同型プロセッサチップ。
【請求項6】
前記第1の回路構成が、モジュラ加算器を含む、
請求項5に記載のIC準同型プロセッサチップ。
【請求項7】
前記モジュラ加算器が、組合せモジュラ加算器を備える、
請求項6に記載のIC準同型プロセッサチップ。
【請求項8】
前記モジュラ加算器が、順次モジュラ加算器を備える、
請求項6に記載のIC準同型プロセッサチップ。
【請求項9】
前記第2の構成が、モジュラ乗算器を備える第2の回路構成を含む、
請求項5に記載のIC準同型プロセッサチップ。
【請求項10】
前記モジュラ乗算器が、並列整数乗算器を備える、請求項9に記載のIC準同型プロセッサチップ。
【請求項11】
前記モジュラ乗算器が、
モジュラ約分ユニット
をさらに備える、請求項10に記載のIC準同型プロセッサチップ。
【請求項12】
前記IC準同型プロセッサが、マルチプルプロセッサスライスを含み、前記IC準同型プロセッサが、
前記マルチプルプロセッサスライスを外部プロセッサのインターフェースを介して外部メモリと接続するためのマスタ制御回路構成
をさらに備える、請求項1~11のいずれか一項に記載のIC準同型プロセッサチップ。
【請求項13】
前記ローカル制御回路構成が、
前記マスタ制御回路構成から、1組のCtxt係数値を前記メモリから取り出し、
前記1組のCtxt係数値を処理パイプラインへロードし、
変換値を生成するために少なくとも1つのCtxt演算を行い、
前記変換値を転送先メモリ位置に記憶させる
ようにとの命令を受け取る、請求項12に記載のIC準同型プロセッサチップ。
【請求項14】
前記マスタ制御回路構成からの命令が、
TTドメインの中に対応する変換値を生成するために、前記ロードされた数値の組上でNTT変換を行う
ようにとの命令をさらに含む、請求項13に記載のIC準同型プロセッサチップ。
【請求項15】
前記マスタ制御回路構成からの、少なくとも1つのCtxt演算を行うようにとの命令が、
加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから少なくとも1つのCtxt演算を行う
ようにとの命令を含む、請求項13または14に記載のIC準同型プロセッサチップ。
【請求項16】
前記NTTバタフライユニットが、単一ステージユニットとして認識される、
請求項1~15のいずれか一項に記載のIC準同型プロセッサチップ。
【請求項17】
準同型暗号化システムであって、前記システムが、
集積回路(IC)準同型プロセッサチップと、
前記IC準同型プロセッサチップ外部の主メモリと、
前記主メモリと前記IC準同型プロセッサチップとの間でデータを転送するデータパスと、
前記主メモリと前記IC準同型プロセッサチップとの間の転送を制御する制御パスと、
を備え、
前記IC準同型プロセッサチップが、
前記制御パスを介した前記主メモリと前記IC準同型プロセッサチップとの間のデータの転送を制御するマスタ制御回路構成、および
パイプライン深さに対応するマルチプルプロセッサスライスであって、前記マルチプルプロセッサスライスのそれぞれが、
ローカル制御回路構成と、
準同型暗号化を使用しながら、暗号化されたデータ上で演算を行うためのマルチプルモードで動作するために前記ローカル制御回路構成に応答する数論変換(NTT)バタフライユニットであって、各モードが、前記NTTバタフライユニットの異なる構成と関連付けられている数論変換(NTT)バタフライユニットと、
前記ローカル制御回路構成および前記NTTバタフライユニットに結合されているオンチップメモリと、
を含むマルチプルプロセッサスライスを備える、
準同型暗号化システム。
【請求項18】
前記準同型暗号化が、完全準同型暗号化を備える、請求項17に記載の準同型暗号化システム。
【請求項19】
前記準同型暗号化が、部分的準同型暗号化を備える、請求項17に記載の準同型暗号化システム。
【請求項20】
前記マスタ制御回路構成が、
前記外部メモリから1組のCtxt係数値を取り出し、
前記1組のCtxt係数値を処理パイプラインへロードし、
少なくとも1つのCtxt演算を行い、
前記変換値を転送先メモリ位置に記憶させる
演算を、前記マルチプルプロセッサスライスごとにスケジュールする、請求項17~19のいずれか一項に記載の準同型暗号化システム。
【請求項21】
前記マスタ制御回路構成からのスケジュールされた演算が、前記マルチプルプロセッサスライスごとに、
TTドメインの中に対応する変換値を生成するために、前記ロードされた数値の組上でNTT変換演算を行う
スケジュールされた演算をさらに備える、請求項20に記載の準同型暗号化システム。
【請求項22】
前記マスタ制御回路構成からのスケジュールされた演算が、前記マルチプルプロセッサスライスごとに、
加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから少なくとも1つのCtxt演算を行う
スケジュールされた演算をさらに備える、請求項20または21に記載の準同型暗号化システム。
【請求項23】
前記NTTバタフライユニットのそれぞれが、単一ステージバタフライを備える、
請求項21に記載の準同型暗号化システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願についての相互参照
本出願は、2017年4月11日に出願された、A HOMOMORPHIC PROCESSING UNIT (HPU) FOR ACCELERATING SECURE COMPUTATIONS UNDER FULLY HOMOMORPHIC ENCRYPTIONという名称の米国仮特許出願第62/484,304号に対する優先権を主張する通常の出願であり、同仮特許出願全体を参照して本出願に援用する。
【0002】
本開示は、本明細書においてハードウェアアクセラレータに関し、より詳細には準同型ハードウェアアクセラレータおよび関連方法に関する。
【背景技術】
【0003】
完全準同型暗号化は、サードパーティが、最初にデータを復号化する必要なく、暗号化されたデータ上で計算を実施することを可能にする。暗号化のこの形態は、ユーザが、自分の個人的な暗号化されたデータを例えばリモートサーバ上に保存し、同時に、データ記憶設備が暗号化されたデータを処理することができるようにすることを可能にする。完全準同型暗号化は、クラウドベースのコンピューティング環境に好適である。
【0004】
データ所有者に関するプライバシーを維持することによって、大きな保証を提供している反面、暗号化されたデータを伴う演算は、それでもなお計算集約型である。
【発明の概要】
【0005】
準同型プロセッサチップ、システム、および関連方法が開示される。1つの実施形態では、集積回路(IC:integrated circuit)準同型プロセッサチップが開示される。IC準同型プロセッサチップは、少なくとも1つのプロセッサスライスを含む。各プロセッサスライスは、ローカル制御回路構成、数論変換(NTT:numeric theoretic transform)バタフライユニット、およびオンチップメモリを含む。NTTバタフライユニットは、準同型暗号を使用して暗号化されたデータ上で演算を行うためのマルチプルモードで動作するためのローカル制御回路構成に応答する。各モードは、NTTバタフライユニットの異なる構成と関連付けられている。
【0006】
別の実施形態では、NTTバタフライユニットは、完全準同型暗号化を伴う演算用のマルチプルモードで動作するためのローカル制御回路構成に応答する。
【0007】
さらに別の実施形態では、NTTバタフライユニットは、部分的準同型暗号化を伴う演算用のマルチプルモードで動作するためのローカル制御回路構成に応答する。
【0008】
別の実施形態では、NTTバタフライユニット用の第1の構成は、第1の暗号文(Ctxt)関数を実施するために第1の回路構成を使用する。NTTバタフライユニット用の第2の構成は、第2のCtxt関数を実施するために第1の回路構成の少なくとも一部を再利用する。
【0009】
別の実施形態では、第1の回路構成は、暗号文(Ctxt)加算関数を実施し、一方、第2のCtxt関数は、Ctxt乗算関数を備える。
【0010】
さらに別の実施形態では、第1の回路構成は、モジュラ加算器を含む。
【0011】
別の実施形態では、モジュラ加算器は、組合せモジュラ加算器を備える。
【0012】
別の実施形態では、モジュラ加算器は、順次モジュラ加算器を備える。
【0013】
さらに別の実施形態では、第2の構成は、モジュラ乗算器を備える第2の回路構成を含む。
【0014】
さらなる実施形態では、モジュラ乗算器は、並列整数乗算器を備える。
【0015】
別の実施形態では、モジュラ乗算器は、モジュラ約分ユニットをさらに備える。
【0016】
さらに別の実施形態では、IC準同型プロセッサは、マルチプルプロセッサスライスを含み、IC準同型プロセッサは、マルチプルプロセッサスライスを外部プロセッサのインターフェースを介して外部メモリと接続するためのマスタ制御回路構成をさらに含む。
【0017】
さらに別の実施形態では、ローカル制御回路構成は、1組のCtxt係数値をメモリから取り出すようにとの命令をマスタ制御回路構成から受信する。数値の組は、次いで処理パイプラインの中にロードされる。少なくとも1つのCtxt演算が、変換値を生成するために行われる。変換値は、次いで転送先メモリ位置に記憶される。
【0018】
別の実施形態では、マスタ制御回路構成からの命令は、NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行うようにとの命令をさらに含む。
【0019】
さらに別の実施形態では、マスタ制御回路構成からの、少なくとも1つのCtxt演算を行うようにとの命令は、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから少なくとも1つのCtxt演算を行うようにとの命令を含む。
【0020】
さらに別の実施形態では、NTTバタフライユニットは、単一ステージユニットとして認識される。
【0021】
さらなる実施形態では、準同型暗号化システムが開示される。準同型暗号化システムは、集積回路(IC)準同型プロセッサチップ、およびIC準同型プロセッサチップ外部の主メモリを含む。データパスは、主メモリとIC準同型プロセッサチップとの間でデータを転送する。制御パスは、主メモリとIC準同型プロセッサチップとの間の転送を制御する。IC準同型プロセッサチップは、マスタ制御回路構成およびマルチプルプロセッサスライスを含む。マスタ制御回路構成は、制御パスを介した主メモリとIC準同型プロセッサチップとの間のデータの転送を制御する。マルチプルプロセッサスライスは、パイプライン深さに対応する。マルチプルプロセッサスライスのそれぞれは、ローカル制御回路構成、数論変換(NTT)バタフライユニット、およびオンチップメモリを含む。NTTバタフライユニットは、準同型暗号化を使用しながら、暗号化されたデータ上で演算を行うためのマルチプルモードで動作するためのローカル制御回路構成に応答する。各モードは、NTTバタフライユニットの異なる構成と関連付けられている。オンチップメモリは、ローカル制御回路構成およびNTTバタフライユニットに結合されている。
【0022】
別の実施形態では、準同型暗号化は、完全準同型暗号化を含む。
【0023】
さらに別の実施形態では、準同型暗号化は、部分的準同型暗号化を含む。
【0024】
さらに別の実施形態では、マスタ制御回路構成は、マルチプルプロセッサスライスごとに、外部メモリから1組のCtxt係数値を取り出して、数値の組を処理パイプラインへロードする動作をスケジュールする。少なくとも1つのCtxt演算は、変換値を生成するために行われる。変換値は、次いで転送先メモリ位置に記憶される。
【0025】
別の実施形態では、マスタ制御回路構成からのスケジュールされた演算は、マルチプルプロセッサスライスごとに、NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行う、スケジュールされた演算をさらに含む。
【0026】
さらに別の実施形態では、マスタ制御回路構成からのスケジュールされた演算は、マルチプルプロセッサスライスごとに、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから少なくとも1つのCtxt演算を行うスケジュールされた演算をさらに備える。
【0027】
別の実施形態では、NTTバタフライユニットのそれぞれは、単一ステージバタフライを備え、所与のNTT変換演算は、NTTバタフライユニットによる評価のログ(n)-1ステージを伴い、「n」は、係数値と関連付けられた多項式の次数を表す。
【0028】
さらに別の実施形態では、数論変換(NTT)バタフライ回路が開示される。NTTバタフライ回路は、第1の加算器/減算器、第1の乗算器、および第1の選択回路構成を含んでいる高入力語パスを含む。第1の選択回路構成は、第1の加算器/減算器および第1の乗算器に結合されており、第1の加算器/減算器および第1の乗算器を選択的に迂回するそれぞれのバイパスパスを含む。NTTバタフライ回路は、第2の加算器/減算器、第2の乗算器、および第2の選択回路構成を含んでいる低入力語パスを含む。第2の選択回路構成は、第2の加算器/減算器および第2の乗算器に結合されており、第2の加算器/減算器および第2の乗算器を選択的に迂回するそれぞれのバイパスパスを含む。高入力語パスおよび低入力語パスは、交差結合されており、第1および第2の選択回路構成は、異なるモード制御信号に応答して、低入力語パスおよび高入力語パスを異なる論理処理ユニットに再構成する。
【0029】
さらに別の実施形態では、NTTバタフライ回路用の第1の構成は、暗号文(Ctxt)加算関数を実施するために、第1の回路構成を使用し、NTTバタフライ回路用の第2の構成は、Ctxt乗算関数を実施するために、第1の回路構成の少なくとも一部を再利用する。
【0030】
さらに別の実施形態では、第1および第2の加算器/減算器のそれぞれは、組合せモジュラ加算器を備える。
【0031】
別の実施形態では、第1および第2の乗算器のそれぞれは、並列整数乗算器を備える。
【0032】
さらなる実施形態では、第1および第2の乗算器のそれぞれは、モジュラ約分ユニットをさらに含む。
【0033】
さらに別の実施形態では、第1および第2の加算器/減算器、および乗算器のそれぞれは、関連付けられたクリティカルパスを含んでおり、関連付けられたクリティカルパスのそれぞれは、レジスタ回路構成に囲まれている。
【0034】
別の実施形態では、NTTバタフライ回路は、単一ステージバタフライとして認識され、所与のNTT変換演算は、NTTバタフライ回路による評価のログ(n)-1ステージを伴い、「n」は、係数値と関連付けられた多項式の次数を表す。
【0035】
さらに別の実施形態では、準同型プロセッサ集積回路(IC)チップ内での演算の方法が開示される。方法は、暗号文(Ctxt)記号を数論変換(NTT)ドメインに変換することを含む。変換することは、所与のプロセッサスライスに対して、ローカル制御回路構成を用いてモード制御信号を生成することを含む。モード制御信号は、準同型暗号化を伴う演算のマルチプルモードの1つに対応する。NTTバタフライユニットは、モード制御信号に応答して構成される。
【0036】
さらに別の実施形態では、準同型暗号化は、完全準同型暗号化を備える。
【0037】
別の実施形態では、準同型暗号化は、部分的準同型暗号化を備える。
【0038】
さらに別の実施形態では、モード制御信号は、演算の第1のモードに対応する第1のモード制御信号を備え、NTTバタフライユニットは、Ctxt加算関数を実施するためにNTTバタフライユニットを構成することによって第1のモード制御信号に応答する。
【0039】
別の実施形態では、モード制御信号は、演算の第2のモードに対応する第2のモード制御信号を含み、NTTバタフライユニットが、Ctxt乗算関数を実施するためにNTTバタフライユニットを構成することによって、第2のモード制御信号に応答する。加算関数で利用されたNTTバタフライユニットの一部は、乗算関数を実施するために再利用される。
【0040】
別の実施形態では、変換することは、各プロセッサスライスが、ローカル制御回路構成のコピーおよびNTTバタフライユニットのコピーを含むように、マルチプルプロセッサスライスを並行して動作させることを含む。
【0041】
さらに別の実施形態では、方法は、マルチプルプロセッサスライスによって実施されたマルチプル演算をパイプラインで送ることをさらに含む。
【0042】
さらに別の実施形態では、方法は、マルチプルプロセッサスライスを、外部プロセッサインターフェースを介して外部メモリと接続することをさらに含み、インターフェース接続は、マスタ制御回路構成によって制御される。
【0043】
さらに別の実施形態では、マスタ制御回路構成は、マルチプルスライスのローカル制御回路構成に対する命令を生成する。ローカル制御回路構成は、メモリから1組のCtxt係数数値を取り出すことと、数値の組を処理パイプラインへロードすることと、変換値を生成するために少なくとも1つのCtxt演算を行うことと、変換値を外部メモリの中の転送先位置に記憶することとを含むステップを実施するようにという命令に応答する。
【0044】
別の実施形態では、方法は、NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行うことをさらに含む。
【0045】
さらに別の実施形態では、少なくとも1つのCtxt演算は、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから選択される。
【0046】
さらに別の実施形態では、準同型暗号化システム内での演算の方法が開示される。方法は、設定可能な数論変換(NTT)バタフライユニットを含んでいる準同型プロセッサ集積回路(IC)チップを提供することを含む。準同型プロセッサICチップは、データパスおよび制御パスを介して外部メモリとインターフェース接続している。暗号文(Ctxt)記号は、NTTドメインに変換される。変換することは、所与のプロセッサスライスに対して、ローカル制御回路構成を用いてモード制御信号を生成することを含む。モード制御信号は、準同型暗号化を含む演算のマルチプルモードの1つに対応する。NTTバタフライユニットは、モード制御信号に応答して構成される。
【0047】
さらに別の実施形態では、準同型暗号化は、完全準同型暗号化を備える。
【0048】
さらに別の実施形態では、準同型暗号化は、部分的準同型暗号化を備える。
【0049】
別の実施形態では、モード制御信号は、演算の第1のモードに対応する第1のモード制御信号を備え、NTTバタフライユニットは、Ctxt加算関数を実施するためにNTTバタフライユニットを構成することによって第1のモード制御信号に応答する。
【0050】
さらに別の実施形態では、モード制御信号は、演算の第2のモードに対応する第2のモード制御信号を含み、NTTバタフライユニットが、Ctxt乗算関数を実施するためにNTTバタフライユニットを構成することによって第2のモード制御信号に応答する。加算関数で利用されるNTTバタフライユニットの一部は、乗算関数を実施するために再利用される。
【0051】
別の実施形態では、変換することは、各プロセッサスライスが、ローカル制御回路構成のコピーおよびNTTバタフライユニットのコピーを含むように、マルチプルプロセッサスライスを並行して動作させることを含む。
【0052】
別の実施形態では、方法は、マルチプルプロセッサスライスによって実施されたマルチプル演算をパイプラインで送ることをさらに含む。
【0053】
さらに別の実施形態では、方法は、マルチプルプロセッサスライスを、外部プロセッサインターフェースを介して外部メモリと接続することをさらに含み、インターフェース接続は、マスタ制御回路構成によって制御される。
【0054】
別の実施形態では、マスタ制御回路構成は、マルチプルスライスのローカル制御回路構成に対する命令を生成する。ローカル制御回路構成は、メモリから1組のCtxt係数数値を取り出すことと、数値の組を処理パイプラインへロードすることと、変換値を生成するために少なくとも1つのCtxt演算を行うことと、変換値を外部メモリの中の転送先位置に記憶することとを含むステップを実施するようにという命令に応答する。
【0055】
別の実施形態では、方法は、NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行うことをさらに含む。
【0056】
さらに別の実施形態では、少なくとも1つのCtxt演算は、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから選択される。
【0057】
別の実施形態では、数論変換(NTT)バタフライ回路内での演算の方法が開示される。回路は、高入力語パスおよび低入力語パスを含む。高入力語パスは、第1の加算器/減算器、および第1の乗算器を含む。低入力語パスは、第2の加算器/減算器、および第2の乗算器を含む。方法は、第2の加算器/減算器および第2の乗算器を選択的に迂回することと、異なるモード制御信号に応答して、低入力語パスおよび高入力語パスを異なる論理処理ユニットに再構成することとを含む。
【0058】
さらに別の実施形態では、再構成することは、第1のモード制御信号を受信したことに応答して、暗号文(Ctxt)加算関数を実施するためにNTTバタフライ回路を構成することと、第2のモード制御信号を受信したことに応答して、Ctxt乗算関数を実施するためにNTTバタフライ回路を構成することとを含む。
【0059】
別の実施形態では、方法は、第1および第2の加算器/減算器ごとに組み合せモジュラ加算器を利用することをさらに含む。
【0060】
さらに別の実施形態では、方法は、第1および第2の乗算器ごとに並列整数乗算器を利用することをさらに含む。
【0061】
さらに別の実施形態では、第1および第2の乗算器のそれぞれは、約分ユニットを含み、方法は、それぞれの約分ユニットを動作させることをさらに含む。
【0062】
別の実施形態では、NTTバタフライ回路は、単一ステージバタフライとして認識され、変換することは、評価のログ(n)-1ステージを通してNTTバタフライ回路を動作させることを含み、「n」は、係数値と関連付けられた多項式の次数を表す。
【0063】
さらに別の実施形態では、準同型プロセッサ集積回路(IC)チップが開示される。IC準同型プロセッサチップは、少なくとも1つのプロセッサスライスを含む。少なくとも1つのプロセッサスライスは、ローカル制御回路構成、NTTバタフライユニット、およびオンチップメモリを含む。オンチップメモリは、制御回路構成およびNTTバタフライユニットに結合されて、準同型処理関数用の別々にアクセス可能な記憶ユニットに区分化される。オンチップメモリは、マルチプル入出力(I/O:input/output)記憶ユニット、ビット分解多項式記憶ユニット、および回転因子メモリユニットを含む。
【0064】
別の実施形態では、I/O記憶ユニットの第1のユニットは、暗号文(Ctxts)を行単位フォーマットで記憶し、I/O記憶ユニットの第2のユニットは、Ctxtsを列単位フォーマットで記憶する。
【0065】
さらに別の実施形態では、I/O記憶ユニットの第3のユニットは、第1の記憶ユニットからの第1のCtxtが第2の記憶ユニットからの第2のCtxtに乗算されることを伴う乗算演算の結果生じる出力Ctxtsを記憶する。
【0066】
さらに別の実施形態では、準同型プロセッサ集積回路(IC)チップは、第2のメモリユニットに結合されたメモリカウンタをさらに含む。
【0067】
別の実施形態では、I/O記憶ユニットの第1のユニットの中の所与の行のCtxtの単列変換は、I/O記憶ユニットの第3のユニットの中の対応する結果的に生じた行になる。
【0068】
さらに別の実施形態では、マルチプルI/O記憶ユニットの1つは、外部メモリに結合されたピンポンメモリとして構成される。
【0069】
さらに別の実施形態では、ピンポンメモリは、第1のメモリ演算を実施する第1のサブアレイと、第1のメモリ演算と同時並行の第2の演算を実施する第2のサブアレイとを含む。
【0070】
別の実施形態では、オンチップメモリは、DRAMを備える。
【0071】
さらに別の実施形態では、準同型プロセッサ集積回路(IC)チップ内での演算の方法が開示される。方法は、オンチップメモリを、準同型処理関数用の別々にアクセス可能な記憶ユニットに区分化することを含む。オンチップメモリは、マルチプル入出力(I/O)記憶ユニット、ビット分解多項式記憶ユニット、および回転因子メモリユニットを含む。少なくとも1つの暗号文(Ctxt)演算は、区分化されたオンチップメモリに結合された、構成可能な数論変換(NTT)バタフライユニットを用いて、ロードされた数値の組上で行われる。
【0072】
別の実施形態では、方法は、NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組を変換することをさらに含む。
【0073】
別の実施形態では、少なくとも1つのCtxt演算は、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから選択される。
【0074】
さらに別の実施形態では、変換することは、第1の暗号文(Ctxt)をI/O記憶ユニットの第1のユニットから行単位フォーマットで読み込むことと、第2のCtxtをI/O記憶ユニットの第2のユニットから列単位フォーマットで読み込むこととをさらに含む。
【0075】
別の実施形態では、変換することは、結果的に生じるCtxtを生成するために、第1のCtxtに第2のCtxtを乗算することと、結果的に生じたCtxtをI/O記憶ユニットの第3のユニットに書き込むこととをさらに含む。
【0076】
さらに別の実施形態では、マルチプルI/O記憶ユニットの1つは、ピンポンメモリユニットとして構成されたそれぞれの第1および第2のサブアレイを含む。方法は、第1の演算を実施するために第1のサブアレイを動作させることと、第1の演算と同時並行の第2の演算を実施するために、第2のサブアレイを動作させることとをさらに含む。
【0077】
別の実施形態では、準同型プロセッサ集積回路(IC)チップ内での演算の方法が開示される。方法は、行フォーマット読出演算を利用して第1の暗号文(Ctxt)を第1のオンチップメモリユニットから取り出すことを含む。第1のCtxtは、数論変換(NTT)ドメインに変換される。第2の暗号文(Ctxt)は、列フォーマット読出演算を利用して第2のオンチップメモリユニットから取り出される。第2のCtxtは、NTTドメインに変換される。変換された第1のCtxtは、結果として生じるCtxtを生成するために、変換された第2のCtxtを乗算される。結果として生じたCtxtは、第3のメモリユニットの中に記憶される。
【0078】
開示の実施形態は、類似の参照番号が類似要素を指している添付の図面の図中に例証として、制限を目的とせずに図解されている。
【図面の簡単な説明】
【0079】
図1A】準同型暗号化システムの1つの実施形態を図示する。
図1B図1Aと類似のシステムの実施形態を図示する。
図1C図1Aと類似のシステムのさらなる実施形態を図示する。
図2図1に示す準同型暗号化システムの詳細を図示する。
図3図2の構成可能なNTT/INTTユニットの1つの実施形態を図示する。
図4図2のシステムによって行われた順NTT演算のタイミング図を示す。
図5図2のシステムによって行われた逆NTT(INTT)演算のタイミング図を示す。
図6】乗算および累積演算のタイミング図を図示する。
図7図6のタイミング図に対応するマトリックス行列乗算演算を図示する。
図8図2の構成可能なNTT/INTTユニット用の流れ制御に関するフローチャートの1つの実施形態を図示する。
図9】演算の標準バタフライモードにあるNTT/INTTユニットの構成を図示する。
図10】演算の加算/減算モードにあるNTT/INTTユニットの構成を図示する。
図11】演算のマトリックス乗算モードにあるNTT/INTTユニットの構成を図示する。
図12】演算のコピーモードにあるNTT/INTTユニットの構成を図示する。
図13】部分的準同型コンテキストの1つの実施形態におけるNTTバタフライユニットの使用を図示する。
【発明を実施するための形態】
【0080】
ハードウェアアクセラレータおよび関連方法が
開示される。1つの実施形態では、暗号文(Ctxt)記号を数論変換(NTT)ドメインに変換するための集積回路(IC)準同型プロセッサチップが開示される。IC準同型プロセッサチップは、少なくとも1つのプロセッサスライスを含む。各プロセッサスライスは、ローカル制御回路構成、NTTバタフライユニット、およびオンチップメモリを含む。NTTバタフライユニットは、完全同形暗号化を含んでいる演算用のマルチプルモードで動作するためのローカル制御回路構成に応答する。各モードは、NTTバタフライユニットの異なる構成と関連付けられている。再構成可能なNTTバタフライユニットを利用することによって、異なる関数を達成する別個の回路は、回避されることができ、より効率的なサイクルタイムに寄与する。
【0081】
図1Aを参照すると、全体的に100と称される完全準同型暗号化(FHE)システムの1つの実施形態は、集積回路(IC)準同型処理ユニット(HPU)102を利用する。HPU102は、オンチップ暗号文(Ctxt)加算/減算ユニット104および乗算器ユニット106を含む。数論変換(NTT)ユニット108は、Ctxt乗算を支援する。1つの実施形態では、加算/減算ユニット104、乗算器ユニット106、およびNTTユニットは、協働して多機能バタフライユニット206を形成する。埋込メモリ110は、データを最適様式でコンピューティング機関に送給するために提供される。さらに、システム100は、機関演算を統制して、外部メモリ114への/からのデータ転送を制御するために制御装置112を利用する。この全体的なアーキテクチャは、グラフィック処理装置(GPU:graphics processing unit)などの、従来型のスキームによって示されるダイ面積の部分を使用することを57×して現在の最高水準のGPUより速い、準同型演算の計算のための(RingベースのFHE暗号化スキームのための)ハードウェア加速を提供するサイクルの正確な準同型処理ユニット(HPU)を提供する。
【0082】
いくつかの実施形態では、多機能バタフライユニット206は、用途に応じて、異なる関数を行うために、異なる形態をとることができる。図1Bは、多機能バタフライユニット206を、NTT/INTTユニット108、およびさまざまなCtxt演算の少なくとも1つを実施するためのCtxt演算回路構成109を含んでいるように図示している。そのような演算の例は、加算、減算、乗算、XOR、XNOR、AND、等価、より小さい、より大きい、実体、コピー、および否定を含む。
【0083】
図1Cに図示される1つの実施形態では、多機能バタフライユニット206は、上述した多様なCtxt演算の少なくとも1つを実施するためのCtxt演算回路構成109を含む。
【0084】
図2は、図1に示すシステムに対応している、全体的に200と称されるFHEシステムの1つの特定の実施形態のさらなる詳細を図示する。システム200は、処理速度および効率を最大にするために並行して動作することができる論理202a~202nのマルチプル「スライス」で形成された特定用途向け集積回路(ASIC:application specific integrated circuit)などの集積回路(IC)チップ201を含む。202aなどでの各スライスは、多機能NTTバタフライユニット206を備えた準同型処理ユニット(HPU)コアブロックを画定している。多機能バタフライユニット206は、再構成可能であり、ローカル制御ユニット208の形態をした分散された制御論理によって制御される。内部埋込記憶アーキテクチャ210は、大いに縮小されたフットプリントを呈し、一方同時に呼出し時間を最小化している。外部メモリ212は、データパス214および制御パス216を介してHPUコアスライス202とインターフェース接続している。制御パス216は、グローバルレベルでシステム200の演算を統制するためのマスタ制御ユニット218を含む。
【0085】
さらに図2を参照すると、HPUコアスライス202は、大いに簡略化されたマスタ制御ユニット218を用いて、より大きいシステムの集積を簡単なタスクにするために、実質的に拡張可能であることができる。「Port1L」、「Port1H」および「Port2L」および「Port2H」などのコア入出力(I/O)は、各HPUコアスライス202の両側に構成される。「H」および「L」ポートは共に、HPUコアスライスに対する入出力ポートであることができる。NTT-ドメインデータを暗号文データに変換する逆数論変換(INTT:inverse numeric theoretic transform)エンジンが、NTTハードウェアと類似のハードウェアを、しかしながらインプレース水平フリッピングを用いて使用することができるので、このことは、有利である。事実上、出力ポートが、入力ポートとして、逆もまた同様に使用される場合、同NTT機関は、INTT関数を計算することができる。これは、さらに、NTT機関用のルーティング資源を半分だけ削減し、このことは、それに応じて、設計面積および消費電力を最小化する。
【0086】
さらに図2を参照すると、内部埋込メモリ210が、HPUコアスライス202を、全体的チップフットプリントおよび処理呼出し時間を最小化する様式で効率的にロードするために、提供されている。1つの実施形態では、内蔵メモリ210は、オンチップメモリの量を最小化するだけでなく、さらにシステム中の処理呼出し時間を最小化する様式で区分化されている。概括的には、区分化は、入出力(I/O)記憶用の4つのメモリユニットMem0(220)、Mem1(222)、Mem2(224)、およびMem3(226)、「ビット分解」(BD:bit decomposed)多項式の一時記憶用の1つのメモリユニット228、および回転因子メモリユニット230を伴う。1対のシフトレジスタ232および234は、メモリユニット220、222、224、および226に接続されており、マルチプレクサM3およびM4を介してHPU高および低入力に選択的に結合されている。Mem0などの、4つのI/Oメモリユニットの1つは、暗号文ロードと関連付けられる遅延を外部メモリ212から効果的に隠すために、デュアルバッファ「ピンポン」メモリとして構成されることができる。いくつかの実施形態では、回転因子メモリユニット230は、ピンポン方位にさらに構成されることができる。
【0087】
暗号文ロード遅延を補償するのにさらに役立つために、外部メモリ212を用いた内蔵メモリ210を接続するデータパス214は、Ctxtロード命令用のクロックサイクルの数が、例えば加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、否定演算などのCtxt演算に限定されないCtxt演算を実施するクロックサイクルの数より小さいという条件を満たす幅を有することができる。クロックサイクル毎にデータパスに新しいデータを供給することによって、性能をさらに改善するために、1つの実施形態では、外部メモリインターフェースは、さまざまなDDRXおよび/またはGDDRXメモリ規格のいずれか1つの下で画定されるような、高速ダイナミックランダムアクセスメモリ(DRAM)を利用する。記憶アーキテクチャによって実施されるさまざまな方法を含む、システムの演算が、下文にさらに記載される。
【0088】
図3は、図2のNTTバタフライユニット206に対応する、全体的に300と称される、多機能バタフライユニットの1つの特定の実施形態を図示する。一般に、多機能バタフライユニット300は、暗号文(Ctxt)を数論変換(NTT)に変換するための回路構成を提供する。ある実施形態では、さらに、ユニットは、NTTを暗号文に変換して戻すINTT機関の役割をすることができる。一般的には、数論変換(NTT)は、離散的フーリエ変換(DFT:discrete Fourier transform)の有限フィールド等価物である。NTTは、次数n多項式用のO(n)からO(nlog(n))まで多項式乗算の計算費用を削減する。
【0089】
さらに図3を参照すると、必須ビルディングブロックとして、多機能バタフライユニット300は、バタフライトポロジに配列された2つのモジュラ加算器302および304と、2つのモジュラ乗算器306および308とを一般的に含む。モジュラ加算器は、用途に応じて、組合せ的であっても、または順次式であってもよい。一般的に言って、単一基数-2バタフライは、以下の一般的公式を有する:
【数1】
上式において、TおよびTは回転因子と呼ばれ、qはモジュラスである。
【0090】
1つの実施形態では、NTTバタフライユニット300は、FHE暗号化で利用されるマルチプル関数を達成するために、再構成可能性およびさまざまな論理ブロックの再使用を提供する。したがって、NTTバタフライユニット300は、モジュラ加算器/減算器論理302および304、ならびにモジュラ乗算器論理306および308を含む。モジュラ加算器/減算器ユニットは、一般的には、2つの部分、正規の加算/減算ユニットと、それに続くモジュラ約分ユニットとで構成される。モジュラ約分演算は、結果が、加算の場合にモジュラスqより多いのか、または減算の場合には、0より小さいのかを調べて、それに応じて結果を調整する。いくつかの実施形態では、キャリールックアヘッド、並列プレフィクス、条件付きサム、またはキャリースキップの加算器のような並列加算器が、利用され得る。
【0091】
さらに図3を参照すると、モジュラ乗算器306および308のそれぞれは単一のユニットとして、またはその後にモジュラ約分ユニットが続く整数乗算器として構成されることができる。モジュラ約分ユニットは、バレットモジュラ約分ユニット、特別なプライムモジュラ約分ユニットの形をしていても、またはモンゴメリーモジュラ乗算ユニットなどの、両方のユニットを1つにした単一のユニットとしていてもよい。モジュラ乗算器が、特定の実施形態において何度も繰り返される可能性がある、多機能バタフライの大部分を占めているので、特定の実施例は、特定のコンテキストにおいて、他より望ましい可能性がある。1つの実施形態では、特別なプライムをSolinasプライムからのモジュラスと共に使用することは、q=2-2+1で、都合よく機能し、ここでは、l=31、d=17であり、qは、モジュラスを表している。システムの性能を改善するために、並列整数乗算器が、利用されることができる。上で画定されたパラメータでは、整数乗算器は、結果的に2l=62ビットの出力幅になる。これは、lの数値の2倍であり、これは、次いで約分ユニットによって約分されて31ビットに戻される。
【0092】
引き続き図3を参照すると、多機能バタフライユニット300は、さまざまな加算/減算/乗算/コピー、および他のコンピューティング関数に関する論理再使用を効率的に可能にするために、上述した概念的モジュラ加算器およびモジュラ乗算器を、演算の特定のモードにおいて選択可能に交差結合されるそれぞれの低処理パスおよび高処理パス310および312に組み込んでいる。低処理パス310は、マルチプレクサM0、およびレジスタR0およびR8を含む論理の第1ステージを含む。マルチプレクサM0は、バタフライに提供される第1の入力InL、および加算器/減算器302からフィードバックされた第2の入力を受信する。レジスタR0は、M0から選択された出力を受信し、その一方で、レジスタR8は、第2の入力Inadd_Lを受信する。レジスタR0およびR8は、NTT演算用の低入力信号をパイプラインで送るために、ラッチまたはレジスタの第1ステージを提供する。加算器/減算器302は、実施されている関数に応じて、ローカル制御論理によって選択されたさまざまな入力を受信する。加算器/減算器302へのさまざまな入力は、レジスタR0からの出力およびレジスタR8から生じたM2からの選択された出力、または乗算器306からのフィードバック、またはレジスタR1から(対応する高パス312から)の交差結合出力を含むことができる。
【0093】
さらに図3を参照すると、加算器/減算器302からの出力は、マルチプレクサM4の1つの入力を含む乗算パスを送給する。バイパスパス314は、加算/減算出力を、出力マルチプレクサM6に、さらにフィードバックパス316に沿って入力マルチプレクサM0に送給する。乗算器マルチプレクサM4は、入力Inを、加算/減算器パスを迂回して、乗算器パスに直接接続するバイパスパス318からの第2の入力を含む。第2ステージレジスタR2は、M4から選択された出力を受信して、それを乗算器306に提供する。回転因子入力は、さらに、入力Tを介してレジスタR4を通って乗算器306に適用されることができる。乗算器306の出力は、次いで出力マルチプレクサM6に送給されることができ、選択的な入力に関して、マルチプレクサM2に向かうパス320に沿って加算器/減算器302にフィードバックされ得る。第3ステージレジスタR6は、マルチプレクサM6から選択された出力を受信して、出力パッドOutに処理した出力を送給する。
【0094】
引き続き図3を参照すると、第1ステージレジスタR1およびR9が、レジスタR0およびR8と同期して動作し、類似のパイプラインで送られたタイミングが、レジスタR3/R2とR7/R6との間で実施されて、上述した低パス310は、高パス312によって複製されることができる。上記したように、低パスおよび高パス310および312は、レジスタR0とマルチプレクサM3との間で、そしてレジスタR1とマルチプレクサM2との間で交差結合される。交差結合は、下文でさらに詳細に記載されるように、演算の特定のモードに関して、バタフライの利用可能な論理の機能的再構成可能性および再使用可能性を提供する。
【0095】
演算では、図2のFHEシステム200は、Ctxt加算、Ctxt減算、Ctxt乗算、およびNTT/INTT処理を含む計算を実施する。いくつかの実施形態では、さらに平文計算を実施する場合もある。特定の演算が、下文でさらに十分に説明されるように、スケジュールされて、処理される様式は、呼出し時間を最小化することによって、性能を大幅に向上させ、一方で、ICチップフットプリントを大いに縮小させることに寄与する。
【0096】
図4は、図2のシステムによって実施される一般的な演算のいくつかと関連付けられるさまざまなタイミングを示すタイミングチャートを図示する。演算のグループが、示されており、各グループは、利用されるパイプラインの奥行に応じて、HPU論理のマルチプル「スライス」によって反復的に実施されるいくつかの同一の計算を伴う。クロックサイクルタイムは、左から右に進んで、x軸に沿って反映されており、各六角形の演算記号は、単一のクロックサイクルで実施される演算を表す。
【0097】
さらに図4を参照すると、暗号文のNTTドメインへの変換を伴う、順NTT演算の例として、3つの主な処理関数が、実施される:(1)ロードして、定数を乗算する、(2)NTT、および(3)最終的なNTTおよび記憶する。402に示される、第1の演算(ロードして、定数で乗算する)は、一般的には、404などで、HPUコアブロックパイプラインが充填されるまで、内蔵メモリからマルチプル多項式を読み込んで、406などで、それらに定数値を乗算する。出力は、次いで、408などで出力ポートに送られる。メモリから要素を読み取るように示される2サイクルは、メモリからコンテンツを得る1サイクルと、その後に続く、図2の低シフトレジスタおよび高シフトレジスタ232および234用の別のサイクルとで構成されることに留意されたい。このステージでの多項式当たりの遅延は、メモリ演算からロードするために2つのクロックサイクルを加えたパイプライン深さに等しい。
【0098】
引き続き図4を参照すると、410に示されるNTT演算は、それ自体が、パイプラインの中のロードされた多項式上に繰り返し適用され、評価のlog(n)-1ステージを行う。このステージでの多項式当たりの遅延は、パイプライン深さに相当する。次いで、412で最終的なNTT演算が、行われ、その後、結果は、414で転送先メモリに戻って記憶される。「新規NTTの開始」という標識で示されるように、その前の計算が、依然としてパイプラインの中にある一方で、多項式の新しい組のロードおよび変換が始まるので、この最終ステージでの多項式当たりの有効遅延は、2つのクロックサイクルを引いたパイプライン深さに相当する。3つの主な処理関数は、Ctxtの中のすべての多項式が変換されるまで、繰り返される。逆NTT(INTT)変換の場合、主な処理関数は、定数乗算演算が、バタフライ演算の後行われること以外は、同様に実施される。
【0099】
図5は、図4のNTT演算と同様に実施されるINTT演算の例に関するタイミングを図示する。INTT関数をスケジューリングすることにおいて、3つの主な演算が、行われる:(1)502で、INTTをロードして、行う、(2)504で、INTTを行う、および(3)506で、定数で乗算して、記憶する。
【0100】
図4が順NTT演算の例に関するタイミングを図示するのに対して、図6は、2つの暗号文、CtxtおよびCtxtの乗算を伴う暗号文乗算演算に関するタイミングチャートを図示する。処理の間、以下の3つの主な処理関数が実施される。(1)602では、第1の多項式のビット分解のためのNTT、(2)614では、第2の多項式のビット分解のためのNTT、および(3)618では、乗算して累算する。
【0101】
さらに図6を参照すると、602で、第1の多項式のビット分解のためのNTTは、604でのように、メモリから第1の暗号文Ctxt1と関連付けられた多項式を読み込むことから始まる。606では、多項式の中の各整数の最下位ビットが、次いで、バタフライユニットに出力される。それに続くLSB出力は、高シフトレジスタおよび低シフトレジスタの数値のシフトを伴う。610では、NTT変換が、(608で、バタフライの加算論理を迂回した後)612での定数演算および結果の出力による乗算を含む最下位ビットに関して始まる。
【0102】
引き続き図6を参照すると、612で、第1のBTTビット分解の結果が出力されると、614で、第2の多項式ステップのNTT分解が、始まる。第2の暗号文Ctxtと関連付けられた多項式は、次いで、616でのようにメモリから読み込まれることができ、第1の暗号文Ctxtが処理された方法と同様に処理される。
【0103】
乗算および累算演算を含む第3のステップでは、618で、Ctxtの変換された行およびCtxtの変換された列を処理して、結果として生じるCtxtの要素を計算する。これは、マトリックス乗算表を用いて図7に図解されており、702では、上左端マトリックスは、Ctxtを表し、一方で、704では、中間マトリックスは、Ctxtを表し、706では、右端マトリックスは、Ctxtを表している。図6の618での第3のステップ、乗算および累算は、Ctxtの別の行を変形して、Ctxt結果を計算するために、上述した同じ乗算関数を繰り返す前に、Ctxtの行を計算するために、2回繰り返される。
【0104】
1つの実施形態では、メモリコンテンツは、Ctxtの行に沿った要素が、次の行に進む前に最初に読み込まれるように、メモリの内部に配置される。図7は、704でのCtxt、および702でのCtxtの要素は、正規順序で行に沿って読み込まれ、他方で、706でのCtxtの要素は、列に沿って読み込まれることを示す。これは、異なる順序で要素を再配置すること、またはこの状況を説明するためにメモリカウンタを利用することを伴う。1つの実施形態は、偶数および奇数のステップをカウントするメモリカウンタを利用する。706で、Ctxtの第1の列を読み込むために、偶数のカウンタが、最初に起動されて、すべての列要素が読み込まれ、次いで、奇数のカウンタが、起動されて、第2の列の要素を取ってくる。
【0105】
上述した、図6および図7に示された演算は、Ctxtの特定の行は、Ctxtの第1の行を作成するのに、2回だけ必要であることを反映している。これは、Ctxtのビット分解バージョンを記憶することができる容量の全メモリは、不必要であることを意味する。そのかわりに、1回に単列が、Ctxtの対応行を計算するために、変換されることができる。その結果、内部埋込メモリの量は、最小化されて、集積回路チップの対応するフットプリントを大いに縮小することができる。
【0106】
図8は、上の記述に合った、さまざまな暗号文および平文関数を達成するために、図2に示される特定のメモリアーキテクチャによって実施されるステップのフローチャートを図解する。一般的には、システム200によって使用される準同型暗号化は、以下の一般方程式を実施することを可能にする:
【数2】
上式では、Cijkは、異なる暗号文を表し、Pijkは、平文を表す。図2の内蔵メモリの一部は、上記の方程式と関連付けられる部分結果を記憶するように構成される。
【0107】
さらに図2および図8を参照すると、図2のシステムによって利用される流れ制御方法は、ピンポンメモリをうまく活用して、下位メモリユニットでデータを処理して、一方で、デュアルバッファの使用と同様に、他の下位メモリユニットをロードする。これは、上記の一般方程式を効率的に満足するのに役立つ。流れ制御方法は、802で、データパス214を介して外部メモリ212からデータをピンポン下位メモリユニットの1つにロードすることから始まる。804では、ピンポンメモリのコンテンツは、次いでMem2などの他の埋込メモリの1つにコピーされる。コンテンツをコピーした後、806では、ピンポンメモリは、外部メモリ212からデータを再ロードされ、808では、ピンポンメモリ選択は、切り替えられる。
【0108】
さらに図8を参照すると、808で、ピンポンメモリ選択を切り替えた後、流れ制御は、2つの並列パスに沿って進む。パスのうちの第1のパスは、810で外部メモリからピンポンメモリの1つをロードし、次いで、824でメモリ選択を切り替えることを伴う。
【0109】
引き続き図8を参照すると、上記の第1のパスによって実施されるステップと同時並行の、第2のパスは、812でNTT関数をピンポンメモリのその他のコンテンツに適用することを伴う。次いで、NTTビット分解演算は、814で、Mem2の2つのラインおよびMem3の中に記憶された累算演算の結果に適用される。816では、ピンポンメモリおよびMem3は次いで乗算され、結果が、Mem2の同じ2つのラインに戻して記憶される。818では、次いで、2lの繰返しが行われたかどうかが判定される。行われていなかった場合には、NTTビット分解および乗算ステップが、再び行われる。2lの繰返しが行われるまで、サブループが繰り返し適用される。閾値が満たされると、次いで、820では、逆NTT演算が、Mem2のコンテンツに適用される。
【0110】
820でINTT演算が適用されると、並列する流れパスは、単一パスに戻り、824では、ピンポンメモリ選択が、再び切り替えられる。次いで、826では、「K」暗号文が乗算されたかどうかに関して判定される。乗算されていなかった場合には、812では、NTT演算が、ピンポンメモリに適用され、ステップ814~824が繰り返される。「K」暗号文が乗算されていた場合には、828では、結果が、Mem4に追加される。830では、アルゴリズムが完了されるかどうかに関して判定される。追加的な処理が必要とされる場合には、ステップ804~830が繰り返される。そうでない場合、流れは、特定の組のデータに関して終了する。
【0111】
図9図12は、図3の多機能バタフライユニットが、上述したように、Ctxt加算、減算、乗算、およびNTT/INTT変換を含む計算関数を可能にするためにさまざまな方法でどのように構成され得るのかを図示する。
【0112】
図9は、演算の規格バタフライモード(太いパスによって示される)用に構成された図3の多機能バタフライユニットを図示する。構成を画定している接続部は、以下の一般公式を実施する、制御論理によってディスパッチされた制御信号に応答している。
【数3】
これは、各マルチプレクサの出力に移動するある特定の入力の選択を可能にするために、適切な制御信号を生成して、マルチプレクサM0~M7のそれぞれへ適用することによって達成される。その結果、低パス310では、M0は、信号InLをR0への入力として通す。R0の出力は、減算器として構成される高パス加算器/減算器304への入力としてM3を通して送給されることになる。R0出力は、さらに、加算器として構成される低パス加算器/減算器302への入力に送給される。加算器302の出力は、R2への入力として、M4によって通される。R2の出力は、低パス乗算器306に送給される。回転因子TLは、R4への入力として送給され、一方で、R4の出力は、乗算器306への第2の入力として送給される。乗算器306の出力は、R6への入力として、M6を通して送給される。R6の出力は、低パス310用の結果として生じる出力OutLになる。高パス312も、同様に構成されるが、簡潔にするために、各接続部の詳細な説明は省略する。
【0113】
図10は、以下の一般公式を実施する演算の加算/減算モード用に構成された多機能バタフライユニット300を図示する:
【数4】
制御論理によって発せられる制御信号は、したがって、規格バタフライモードに類似しているけれども、低パスおよび高パス310および312が、モジュラ乗算器306および308を通常迂回するように、バタフライユニット300にマルチプレクサを設定している。低パスおよび高パス310および312は、さらに、交差結合を実施しない。そのうえ、加算/減算モードでは、追加的な入力Inadd_LおよびInadd_Hは、レジスタR8およびR9を介してモジュラ加算器/減算器ユニット302および304のそれぞれに供給される。
【0114】
図11は、以下の一般公式を実施する演算のマトリックス乗算モード用に構成された、多機能バタフライユニット300を図示する:
【数5】
この構成は、加算器としてモジュラ加算器/減算器ユニット302および304と、パスを交差結合していない低パスおよび高パス310および312両方の乗算器ユニット308および306とを利用する、乗算および累算関数を実現する。低パス310は、R4を介して供給される回転因子入力Tと乗算するためにM4を介してレジスタR2に入力Inを供給することを伴う。加算器302は、M2を介して乗算器306の出力と、さらにM0を介してR0にフィードバックされる自体の出力とを受信する。加算器出力は、M6を通ってR6に送給され、それは、出力Outとして示されている。高パス312も、同様に構成される。
【0115】
図12は、以下の一般公式を実施する演算のコピーモード用に構成された、多機能バタフライユニット300を図示する:
【数6】
本質的には、コピーモードは、ただ入力InおよびInを通って直接出力OutおよびOutに移動する際に、モジュラ加算器/減算器302および304、およびモジュラ乗算器を迂回することを伴う。
【0116】
上述したFHEシステムは、付随するハードウェア資源として、サードパーティデータを処理する必要があり得る一般的なコンピューティングプラットホームおよび/またはサーバプラットホームに好適である。そのような環境では、1つまたは複数のHPU集積回路チップは、サーバ演算と並列して行われることができる集中的な準同型処理タスクを実施するために、コプロセッサまたはハードウェアアクセラレータとして1つまたは複数のサーバユニットの中に据え付けられることができる。HPUがそのような特定のタスクを処理するように構成されている場合、サーバ処理資源は、サーバ特有のタスクに対して保存されるおよび/または開放されることができる。
【0117】
本開示は、これまで主として完全な準同型のコンテキストで実施形態を論じてきたが、本明細書に示されるさまざまな概念は、同様に部分的準同型のコンテキストにおいても利用されることができる。一例として、高スループット適用に関して、Paillier暗号化システムのような、部分的準同型暗号化システムをサポートするために、現在提案されている設計に付加的な再構成可能度を追加することが可能である。Paillier暗号化システムのような、これらの部分的準同型暗号化スキームは、通常、例えばSchonhage-Strassen、Karatsuba、またはToom-Cookアルゴリズムを用いて実施されることができる大きな整数乗算器を伴う。普遍性を失わずに、これらのアルゴリズムを上述したHPUハードウェアへインスタン化する一例として、Schonhage-Strassenアルゴリズムは、高速整数乗算を行うのに高速多項式乗算を使用する。2つの入力数字「a」および「b」に大きい整数乗算を行うために、アルゴリズムの結果としておそらく生じる可能性がある最大整数を最初に計算し、次いで、オーバフローを回避するために、この最大である可能性のある結果より大きい整数「w」を選択する。その後、以下の通りに「a」および「b」を「w」ビットの「m」グループに分割する:
【0118】
【数7】
【0119】
x=2にすると、次いで、前の方程式は、同等になる。
【0120】
【数8】
【0121】
次いで、以下のように述べることができる。
【0122】
【数9】
【0123】
上記の方程式は、本明細書に記載され、図13の部分的準同型コンテキストに示される数論変換(NTT)機関などのNTTユニットを用いて、効率的に計算されることができる。入力数字「a」および「b」は、NTTユニット1302および1304のそれぞれに送給される。数字は、1306で乗算演算を受け、その後1308で、INTT演算が続く。次いで、結果「c」を達成するために、1310でキャリー演算が行われる。
【0124】
上述したSchonhage-Strassenアルゴリズムは、入力整数を、各部分が、隣接する多項式係数の中に記憶されるより小さい部分に区分化することによって、本明細書に記載されるNTT機関を使用して効率的に実施されることができる。その後、NTT変換は、両方の多項式上に適用されることができ、係数に関する乗算は、変換された多項式上で行われる。最終的に、結果は、変換されて係数表示に戻されて、最終的なキャリー伝播が行われることになる。
【0125】
そのような実施例は、広範囲にわたる重要な適用、例えば、安全な投票システム、ブロックチェーン、安全な契約、特定の分散計算(MPC:multi-party computation)アルゴリズム、および暗号の通用性で見つけられるものを加速することに有用性を見い出すことになる。
【0126】
当業者には理解されるように、上述したアーキテクチャは、単一の集積回路チップ上で準同型暗号化処理関数を実施する計算時間をかなり短縮する。さらに、効果的なメモリ使用量によって、チップのサイズおよび電源消費が、最小化される。
【0127】
1つまたは複数のコンピュータ可読媒体を介してコンピュータシステムの中で受信されるとき、上述された回路のそのようなデータおよび/または命令ベース表現式は、そのような回路の物理的発現の表示または画像を生成するために、ネットリスト生成プログラム、場所およびルートプログラム、および類似のもの、これらに限定するわけではないが、を含む、1つまたは複数の他のコンピュータプログラムの実行と関連したコンピュータシステムの中で、処理エンティティ(例えば1つまたは複数のプロセッサ)によって処理されることができる。そのような表示または画像は、その後、例えば、デバイス製造プロセスにおいて回路の各種構成要素を形成するのに使用される1つまたは複数のマスクの生成を可能にすることによって、デバイス製造で使用されることができる。
【0128】
前述の説明の中で、そして添付の図面において、特定の用語および図面記号が、本発明の十分な理解を提供するために示されてきた。いくつかの例では、用語および記号は、本発明を実施するのに必要とされない具体的な詳細を包含する場合もある。例えば、ビットの固有番号、信号パス幅、信号または動作周波数、構成要素回路、またはデバイスなどのいずれかが、代替実施形態では、上述したものとは異なる場合もある。さらに、多重導体信号回線として示される、または記載される回路要素または回路ブロックの間の相互接続が、代替的に単一導体信号回線である場合もあり、単一導体信号回線が、代替的に多重導体信号回線である場合もある。さらに、シングルエンド形であるように示される、または記載される信号および信号パスが、差別的ある場合もあり、逆もまた同様である。同様に、正論理または負論理レベルを有するように記載された、または描写された信号が、代替実施形態において逆の論理レベルを有する場合もある。集積回路装置の中の構成要素回路構成が、金属酸化膜半導体(MOS:metal oxide semiconductor)技術、バイポーラ技術、または論理回路およびアナログ回路が実装される場合のある何らかの他の技術を用いて、実装される場合もある。用語に関して、特定の状態を示すために、信号が低論理状態または高論理状態に駆動される(または高論理状態に充電される、もしくは低論理状態に放電される)とき、信号は、「アサート」されていると言われる。これとは逆に、信号は、信号が、アサートされた状態(高論理状態または低論理状態、または信号駆動回路が、オープンドレインまたはオープンコレクタ状態などの高インピーダンス状態に推移されるときに、発生する可能性がある浮動状態を含む)以外の状態に駆動される(充電されるまたは放電される)ことを示すために「デアサート」されていると言われる。信号駆動回路が、信号駆動回路と信号受信回路との間に結合された信号ライン上の信号をアサートする、(または、明示的に述べられる、またはコンテキストによって指示される場合にはデアサートする)とき、信号駆動回路は、信号受信回路に信号を「出力する」と言われる。信号が、信号ライン上にアサートされるとき、信号ラインは、「活性化される」と言われ、信号が、デアサートされるとき、「非活性化される」と言われる。その上、信号名に付加されるプレフィックス記号「/」は、信号が、有効低信号である(すなわちアサートされた状態は、論理ロー状態である)ことを示す。さらに、信号名の上のライン(例えば、
)は、有効低信号を示すのに使用される。「結合される」という用語は、直接的な接続、ならびに1つまたは複数の介在回路または構造物を介した接続を表現するために本明細書では使用される。集積回路デバイス「プログラミング」は、例えば、そして限定するわけではなく、ホスト命令に応答して、制御値をデバイス内のレジスタまたは他の記憶回路の中にロードすること、したがって、デバイスの動作態様を制御することと、デバイス構成を確立すること、または1回限りのプログラミング動作によってデバイスの動作態様を制御すること(例えば、デバイス生産の間、構成回路内のヒューズをブローイングすること)と、および/または特定のデバイス構成またはデバイスの動作態様を確立するために、1つまたは複数の選択されたピンまたはデバイスの他の接続構造を、基準電圧ラインに結合すること(ストラッピングとも呼ばれる)とを含む場合がある。「例示的な」という用語は、優先傾向または要件ではなく、一例を表すのに使用される。
【0129】
実施形態によれば、HPUチップは、コンピュータカード、USBスティックの形態、またはコンピュータプロセッサに接続される何らかの他の形態をしたシステム上に取り付けられてもよい。
【0130】
本明細書に開示される実施形態のさまざまな態様および特徴は、例えば、制限するわけではなく、以下の番号を付された条項で説明される:
1.
少なくとも1つのプロセッサスライスを備え、スライスが、
ローカル制御回路構成と、
準同型暗号を使用して暗号化されたデータ上で演算を行うためのマルチプルモードで動作するためのローカル制御回路構成に応答し、各モードは、NTTバタフライユニットの異なる構成と関連付けられている、数論変換(NTT)バタフライユニットと、
制御回路構成およびNTTバタフライユニットに結合されたオンチップメモリと
を含む、
集積回路(IC)準同型プロセッサチップ。
2.
NTTバタフライユニットが、完全準同型暗号化を伴う演算用のマルチプルモードで動作するためのローカル制御回路構成に応答する、条項1に記載のIC準同型プロセッサチップ。
3.
NTTバタフライユニットが、部分的準同型暗号化を伴う演算用のマルチプルモードで動作するためのローカル制御回路構成に応答する、条項1に記載のIC準同型プロセッサチップ。
4.
NTTバタフライユニット用の第1の構成が、第1の暗号文(Ctxt)関数を実施するために第1の回路構成を使用し、
NTTバタフライユニット用の第2の構成が、第2のCtxt関数を実施するために第1の回路構成の少なくとも一部を再利用する、
条項1に記載のIC準同型プロセッサチップ。
5.
第1の回路構成が、暗号文(Ctxt)加算関数を実施し、
第2のCtxt関数が、Ctxt乗算関数を備える、
条項4に記載のIC準同型プロセッサチップ。
6.
第1の回路構成が、モジュラ加算器を含む、
条項5に記載のIC準同型プロセッサチップ。
7.
モジュラ加算器が、組合せモジュラ加算器を備える、
条項6に記載のIC準同型プロセッサチップ。
8.
モジュラ加算器が、順次モジュラ加算器を備える、
条項6に記載のIC準同型プロセッサチップ。
9.
第2の構成が、モジュラ乗算器を備える第2の回路構成を含む、
条項5に記載のIC準同型プロセッサチップ。
10.
モジュラ乗算器が、並列整数乗算器を備える、条項9に記載のIC準同型プロセッサチップ。
11.
モジュラ乗算器が、
モジュラ約分ユニット
をさらに備える、条項10に記載のIC準同型プロセッサチップ。
12.
IC準同型プロセッサが、マルチプルプロセッサスライスを含み、IC準同型プロセッサが、
マルチプルプロセッサスライスを外部プロセッサのインターフェースを介して外部メモリと接続するためのマスタ制御回路構成
をさらに備える、条項1に記載のIC準同型プロセッサチップ。
13.
ローカル制御回路構成が、
マスタ制御回路構成から、1組のCtxt係数値をメモリから取り出し、
数値の組を処理パイプラインへロードし、
少なくとも1つのCtxt演算を行い、
変換値を転送先メモリ位置に記憶させる
ようにとの命令を受け取る、条項12に記載のIC準同型プロセッサチップ。
14.
マスタ制御回路構成からの命令が、
NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行う
ようにとの命令をさらに含む、条項13に記載のIC準同型プロセッサチップ。
15.
マスタ制御回路構成からの、少なくとも1つのCtxt演算を行うようにとの命令が、
加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから少なくとも1つのCtxt演算を行う
ようにとの命令を含む、条項14に記載のIC準同型プロセッサチップ。
16.
NTTバタフライユニットが、単一ステージユニットとして認識される、
条項1に記載のIC準同型プロセッサチップ。
17.
集積回路(IC)準同型プロセッサチップと、
IC準同型プロセッサチップ外部の主メモリと、
主メモリとIC準同型プロセッサチップとの間でデータを転送するデータパスと、
主メモリとIC準同型プロセッサチップとの間の転送を制御する制御パスとを備え、
IC準同型プロセッサチップが、
制御パスを介した主メモリとIC準同型プロセッサチップとの間のデータの転送を制御するマスタ制御回路構成;および
パイプライン深さに対応するマルチプルプロセッサスライスであって、マルチプルプロセッサスライスのそれぞれが、
ローカル制御回路構成と、
準同型暗号化を使用しながら、暗号化されたデータ上で演算を行うためのマルチプルモードで動作するためのローカル制御回路構成に応答する数論変換(NTT)バタフライユニットであって、各モードが、NTTバタフライユニットの異なる構成と関連付けられている数論変換(NTT)バタフライユニットと、
ローカル制御回路構成およびNTTバタフライユニットに結合されているオンチップメモリと
を含むマルチプルプロセッサスライスを備える、
準同型暗号化システム。
18.
準同型暗号化が、完全準同型暗号化を備える、条項17に記載の準同型暗号化システム。
19.
準同型暗号化が、部分的準同型暗号化を備える、条項17に記載の準同型暗号化システム。
20.
マスタ制御回路構成が、
外部メモリから1組のCtxt係数値を取り出し、
数値の組を処理パイプラインへロードし、
変換値を生成するために少なくとも1つのCtxt演算を行い、
変換値を転送先メモリ位置に記憶させる
演算を、マルチプルプロセッサスライスごとにスケジュールする、条項17に記載の準同型暗号化システム。
21.
マスタ制御回路構成からのスケジュールされた演算が、マルチプルプロセッサスライスごとに、
NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行う
スケジュールされた演算をさらに備える、条項20に記載の準同型暗号化システム。
22.
マスタ制御回路構成からのスケジュールされた演算が、マルチプルプロセッサスライスごとに、
加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから少なくとも1つのCtxt演算を行う
スケジュールされた演算をさらに備える、条項21に記載の準同型暗号化システム。
23.
NTTバタフライユニットのそれぞれが、単一ステージバタフライを備え、
所与のNTT変換演算が、NTTバタフライユニットによる評価のログ(n)-1ステージを伴い、「n」が、係数値と関連付けられた多項式の次数を表す、
条項20に記載の準同型暗号化システム。
24.
第1の加算器/減算器、
第1の乗算器、および
第1の加算器/減算器および第1の乗算器に結合されており、第1の加算器/減算器および第1の乗算器を選択的に迂回するそれぞれのバイパスパスを含む第1の選択回路構成
を含んでいる高入力語パスと、
第2の加算器/減算器、
第2の乗算器、および
第2の加算器/減算器および第2の乗算器に結合されており、第2の加算器/減算器および第2の乗算器を選択的に迂回するそれぞれのバイパスパスを含む第2の選択回路構成
を含んでいる低入力語パスと
を備え、
高入力語パスおよび低入力語パスが、交差結合されており、第1および第2の選択回路構成が、異なるモード制御信号に応答して、低入力語パスおよび高入力語パスを異なる論理処理ユニットに再構成する、数論変換(NTT)バタフライ回路。
25.
NTTバタフライ回路用の第1の構成が、暗号文(Ctxt)加算関数を実施するために、第1の回路構成を使用し、
NTTバタフライ回路用の第2の構成が、Ctxt乗算関数を実施するために、第1の回路構成の少なくとも一部を再利用する、
条項24に記載のNTTバタフライ回路。
26.
第1および第2の加算器/減算器のそれぞれが、組合せモジュラ加算器を備える、条項24に記載のNTTバタフライ回路。
27.
第1および第2の乗算器のそれぞれが、並列整数乗算器を備える、条項24に記載のNTTバタフライ回路。
28.
第1および第2の乗算器のそれぞれが、
モジュラ約分ユニット
をさらに備える、条項24に記載のNTTバタフライ回路。
29.
第1および第2の加算器/減算器、および乗算器のそれぞれが、関連付けられたクリティカルパスを含んでおり、
関連付けられたクリティカルパスのそれぞれが、レジスタ回路構成に囲まれている、条項24に記載のNTTバタフライ回路。
30.
NTTバタフライ回路が、単一ステージバタフライとして認識され、
所与のNTT変換演算が、NTTバタフライ回路による評価のログ(n)-1ステージを伴い、「n」が、係数値と関連付けられた多項式の次数を表す、
条項24に記載のNTTバタフライ回路。
31.
準同型プロセッサ集積回路(IC)チップ内での演算の方法であって、
暗号文(Ctxt)記号を数論変換(NTT)ドメインに変換することを含み、変換することは、所与のプロセッサスライスに対して、
ローカル制御回路構成を用いてモード制御信号を生成することであって、モード制御信号は、準同型暗号化を伴う演算のマルチプルモードの1つに対応する、モード制御信号を生成することと、
モード制御信号に応答してNTTバタフライユニットを構成することと
を含む、
準同型プロセッサ集積回路(IC)チップ内での演算の方法。
32.
準同型暗号化が、完全準同型暗号化を備える、条項31に記載の準同型プロセッサICチップ内での演算の方法。
33.
準同型暗号化が、部分的準同型暗号化を備える、条項31に記載の準同型プロセッサICチップ内での演算の方法。
34.
モード制御信号が、演算の第1のモードに対応する第1のモード制御信号を備え、NTTバタフライユニットが、
Ctxt加算関数を実施するためにNTTバタフライユニットを構成することによって第1のモード制御信号に応答する、条項31に記載の方法。
35.
モード制御信号が、演算の第2のモードに対応する第2のモード制御信号を備え、NTTバタフライユニットが、
Ctxt乗算関数を実施するためにNTTバタフライユニットを構成することと、
乗算関数を実施するために加算関数で利用されたNTTバタフライユニットの一部を再利用することと
によって第2のモード制御信号に応答する、条項34に記載の方法。
36.
変換することが、
マルチプルプロセッサスライスを並行して動作させることを含み、各プロセッサスライスが、ローカル制御回路構成のコピーおよびNTTバタフライユニットのコピーを含む、条項31に記載の方法。
37.
マルチプルプロセッサスライスによって実施されたマルチプル演算をパイプラインで送ること
をさらに含む、条項36に記載の方法。
38.
マルチプルプロセッサスライスを、外部プロセッサインターフェースを介して外部メモリと接続することをさらに含み、インターフェース接続が、マスタ制御回路構成によって制御される、
条項37に記載の方法。
39.
マスタ制御回路構成が、マルチプルスライスのローカル制御回路構成に対する命令を生成し、ローカル制御回路構成が、
メモリから1組のCtxt係数数値を取り出すことと、
数値の組を処理パイプラインへロードすることと、
変換値を生成するために少なくとも1つのCtxt演算を行うことと、
変換値を外部メモリの中の転送先位置に記憶することと
を含むステップを実施するようにという命令に応答する、条項38に記載の方法。
40.
NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行うステップをさらに含む、条項39に記載の方法。
41.
少なくとも1つのCtxt演算が、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから選択される、条項40に記載の方法。
42.
準同型暗号化システム内での演算の方法であって、
設定可能な数論変換(NTT)バタフライ論理を含んでいる準同型プロセッサ集積回路(IC)チップを提供することと、
準同型プロセッサICチップをデータパスおよび制御パスを介して外部メモリとインターフェース接続することと、
暗号文(Ctxt)記号をNTTドメインに変換することであって、変換することは、
所与のプロセッサスライスに対して、ローカル制御回路構成を用いてモード制御信号を生成することであって、モード制御信号は、準同型暗号化を伴う演算のマルチプルモードの1つに対応する、モード制御信号を生成することと、
モード制御信号に応答してNTTバタフライユニットを構成することと
を含む暗号文(Ctxt)記号をNTTドメインに変換することと
を含む、準同型暗号化システム内での演算の方法。
43.
準同型暗号化が、完全準同型暗号化を備える、条項42に記載の準同型暗号化システム内での演算の方法。
44.
準同型暗号化が、部分的準同型暗号化を備える、条項42に記載の準同型暗号化システム内での演算の方法。
44.
モード制御信号が、演算の第1のモードに対応する第1のモード制御信号を備え、NTTバタフライユニットが、
Ctxt加算関数を実施するためにNTTバタフライユニットを構成すること
によって第1のモード制御信号に応答する、条項42に記載の方法。
45.
モード制御信号が、演算の第2のモードに対応する第2のモード制御信号を備え、NTTバタフライユニットが、Ctxt乗算関数を実施するためにNTTバタフライユニットを構成することと、
乗算関数を実施するために加算関数で利用されるNTTバタフライユニットの一部を再利用することと
によって第2のモード制御信号に応答する、条項44に記載の方法。
46.
変換することが、
マルチプルプロセッサスライスを並行して動作させることを含み、各プロセッサスライスが、ローカル制御回路構成のコピーおよびNTTバタフライユニットのコピーを含む、条項42に記載の方法。
47.
マルチプルプロセッサスライスによって実施されたマルチプル演算をパイプラインで送ること
をさらに含む、条項46に記載の方法。
48.
マルチプルプロセッサスライスを、外部プロセッサインターフェースを介して外部メモリと接続することをさらに含み、インターフェース接続が、マスタ制御回路構成によって制御される、条項47に記載の方法。
49.
マスタ制御回路構成が、マルチプルスライスのローカル制御回路構成に対する命令を生成し、ローカル制御回路構成が、
メモリから1組のCtxt係数数値を取り出すことと、
数値の組を処理パイプラインへロードすることと、
変換値を生成するために少なくとも1つのCtxt演算を行うことと、
変換値を外部メモリの中の転送先位置に記憶することと
を含むステップを実施するようにという命令に応答する、条項48に記載の方法。
50.
NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組上でNTT変換を行うステップをさらに含む、条項49に記載の方法。
51.
少なくとも1つのCtxt演算が、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから選択される、条項50に記載の方法。
52.
数論変換(NTT)バタフライ回路内での演算の方法であって、回路が、高入力語パスおよび低入力語パスを含み、高入力語パスが、第1の加算器/減算器、および第1の乗算器を含み、低入力語パスが、第2の加算器/減算器、および第2の乗算器を含み、方法が、
第2の加算器/減算器および第2の乗算器を選択的に迂回することと、
異なるモード制御信号に応答して、低入力語パスおよび高入力語パスを異なる論理処理ユニットに再構成することと
を含む、数論変換(NTT)バタフライ回路内での演算の方法。
53.
再構成することが、
第1のモード制御信号を受信したことに応答して、暗号文(Ctxt)加算関数を実施するためにNTTバタフライ回路を構成することと、
第2のモード制御信号を受信したことに応答して、Ctxt乗算関数を実施するためにNTTバタフライ回路を構成することと
を含む、条項52に記載の方法。
54.
第1および第2の加算器/減算器ごとに組み合せモジュラ加算器を利用すること
をさらに含む、条項52に記載の方法。
55.
第1および第2の乗算器ごとに並列整数乗算器を利用すること
をさらに含む、条項52に記載の方法。
56.
第1および第2の乗算器のそれぞれが、約分ユニットを含み、方法が、
それぞれの約分ユニットを動作させること
をさらに含む、条項52に記載の方法。
57.
NTTバタフライ回路が、単一ステージバタフライとして認識され、変換することが、
評価のログ(n)-1ステージを通してNTTバタフライ回路を動作させることを含み、「n」が、係数値と関連付けられた多項式の次数を表す、
条項52に記載のNTTバタフライ回路。
58.
暗号文(Ctxt)記号を数論変換(NTT)ドメインに変換するための準同型プロセッサ集積回路(IC)チップであって、IC準同型プロセッサチップは、
少なくとも1つのプロセッサスライスを備え、スライスは、
ローカル制御回路構成、
NTTバタフライユニット、および
制御回路構成およびNTTバタフライユニットに結合されたオンチップメモリを含み、オンチップメモリは、準同型処理関数用の別々にアクセス可能な記憶ユニットに区分化されており、オンチップメモリは、
マルチプル入出力(I/O)記憶ユニット、
ビット分解多項式記憶ユニット、および
回転因子メモリユニット
を含む、
暗号文(Ctxt)記号を数論変換(NTT)ドメインに変換するための準同型プロセッサ集積回路(IC)チップ。
59.
I/O記憶ユニットの第1のユニットが、暗号文(Ctxts)を行単位フォーマットで記憶し、
I/O記憶ユニットの第2のユニットが、Ctxtsを列単位フォーマットで記憶する、
条項58に記載の準同型プロセッサICチップ。
60.
I/O記憶ユニットの第3のユニットが、第1の記憶ユニットからの第1のCtxtが第2の記憶ユニットからの第2のCtxtに乗算されることを伴う乗算演算の結果生じる出力Ctxtsを記憶する、
条項59に記載の準同型プロセッサICチップ。
61.
第2のメモリユニットに結合されたメモリカウンタ
をさらに備える、条項60に記載の準同型プロセッサICチップ。
62.
I/O記憶ユニットの第1のユニットの中の所与の行のCtxtの単列変換が、I/O記憶ユニットの第3のユニットの中の対応する結果的に生じた行になる、
条項60に記載の準同型プロセッサICチップ。
63.
マルチプルI/O記憶ユニットの1つが、外部メモリに結合されたピンポンメモリとして構成される、
条項58に記載の準同型プロセッサICチップ。
64.
ピンポンメモリが、
第1のメモリ演算を実施する第1のサブアレイと、
第1のメモリ演算と同時並行の第2の演算を実施する第2のサブアレイと
を含む、条項63に記載の準同型プロセッサICチップ。
65.
オンチップメモリが、DRAMを備える、条項63に記載の準同型プロセッサICチップ。
66.
準同型プロセッサ集積回路(IC)チップ内での演算の方法であって、
オンチップメモリを、準同型処理関数用の別々にアクセス可能な記憶ユニットに区分化することであって、オンチップメモリが、マルチプル入出力(I/O)記憶ユニット、ビット分解多項式記憶ユニット、および回転因子メモリユニットを含む、オンチップメモリを区分化することと、
少なくとも1つの暗号文(Ctxt)演算を、区分化されたオンチップメモリに結合された、構成可能な数論変換(NTT)バタフライユニットを用いてロードされた数値の組上で行うことと
を含む、方法。
67.
NTTドメインの中に対応する変換値を生成するために、ロードされた数値の組を変換すること
をさらに含む、条項66に記載の方法。
68.
少なくとも1つのCtxt演算が、加算演算、減算演算、乗算演算、XOR演算、XNOR演算、AND演算、等価演算、より小さい演算、より大きい演算、実体演算、コピー演算、および否定演算から成るグループから選択される、条項67に記載の方法。
69.
変換することが、
第1の暗号文(Ctxt)をI/O記憶ユニットの第1のユニットから行単位フォーマットで読み込むことと、
第2のCtxtをI/O記憶ユニットの第2のユニットから列単位フォーマットで読み込むことと
をさらに含む、条項67に記載の方法。
70.
変換することが、
結果的に生じるCtxtを生成するために、第1のCtxtに第2のCtxtを乗算することと、
結果的に生じたCtxtをI/O記憶ユニットの第3のユニットに書き込むことと
をさらに含む、条項69に記載の方法。
71.
マルチプルI/O記憶ユニットの1つが、ピンポンメモリユニットとして構成されたそれぞれの第1および第2のサブアレイを含み、方法が、
第1の演算を実施するために第1のサブアレイを動作させることと、
第1の演算と同時並行の第2の演算を実施するために、第2のサブアレイを動作させることと
をさらに含む、条項66に記載の方法。
72.
準同型プロセッサ集積回路(IC)チップ内での演算の方法であって、
第1の暗号文(Ctxt)を第1のオンチップメモリユニットから取り出すことであって、第1のCtxtは、行フォーマット読出演算を利用して取り出される、第1の暗号文を取り出すことと、
第1のCtxtを数論変換(NTT)ドメインに変換することと、
第2の暗号文(Ctxt)を第2のオンチップメモリユニットから取り出すことであって、第2のCtxtは、列フォーマット読出演算を利用して取り出される、第2の暗号文を取り出すことと、
第2のCtxtをNTTドメインに変換することと、
結果として生じるCtxtを生成するために、変換された第1のCtxtに、変換された第2のCtxtを乗算することと、
結果として生じたCtxtを第3のメモリユニットの中に記憶させることと
を含む、準同型プロセッサ集積回路(IC)チップ内での演算の方法。
【0131】
本発明は、その特定の実施形態を参照しながら、説明されてきたが、本発明のより広い趣旨および範囲を逸脱しない範囲で、それにさまざまな変更態様および改変を加えることができることは明白である。例えば、少なくとも、実施形態の他のどれかと組み合わせて、またはその対応する特徴または態様の代わりに実行可能である場合には、実施形態のいずれかの特徴または態様は、適用されることができる。したがって、明細書および図面は、制限的な意味ではなく例証的なものとみなされるべきである。

図1A
図1B
図1C
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13