KR20230172043A - 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛 - Google Patents
동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛 Download PDFInfo
- Publication number
- KR20230172043A KR20230172043A KR1020237042861A KR20237042861A KR20230172043A KR 20230172043 A KR20230172043 A KR 20230172043A KR 1020237042861 A KR1020237042861 A KR 1020237042861A KR 20237042861 A KR20237042861 A KR 20237042861A KR 20230172043 A KR20230172043 A KR 20230172043A
- Authority
- KR
- South Korea
- Prior art keywords
- ntt
- processor
- unit
- control circuitry
- homomorphic encryption
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 41
- 230000015654 memory Effects 0.000 claims abstract description 143
- 238000000034 method Methods 0.000 claims abstract description 106
- 230000004044 response Effects 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims description 61
- 230000009466 transformation Effects 0.000 claims description 22
- 230000009467 reduction Effects 0.000 claims description 16
- 238000011156 evaluation Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000003860 storage Methods 0.000 description 51
- 238000010586 diagram Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 239000004020 conductor Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 238000006880 cross-coupling reaction Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- RNAMYOYQYRYFQY-UHFFFAOYSA-N 2-(4,4-difluoropiperidin-1-yl)-6-methoxy-n-(1-propan-2-ylpiperidin-4-yl)-7-(3-pyrrolidin-1-ylpropoxy)quinazolin-4-amine Chemical class N1=C(N2CCC(F)(F)CC2)N=C2C=C(OCCCN3CCCC3)C(OC)=CC2=C1NC1CCN(C(C)C)CC1 RNAMYOYQYRYFQY-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000007664 blowing Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000004132 cross linking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000017702 response to host Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
Abstract
완전 동형 암호화 집적 회로(IC) 칩, 시스템 및 관련 방법이 개시된다. 일 실시형태에서, 집적 회로(IC) 동형 프로세서 칩이 개시된다. 상기 IC 동형 프로세서 칩은 적어도 하나의 프로세서 슬라이스(processor slice)를 포함한다. 각 프로세서 슬라이스는 로컬 제어 회로부, 수치 이론 변환(numeric theoretic transform: NTT) 버터플라이 유닛(butterfly unit) 및 온칩 메모리(on-chip memory)를 포함한다. 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 동형 암호화를 사용하여 암호화된 데이터에 동작을 수행하기 위해 다수의 모드에서 동작한다. 각 모드는 상기 NTT 버터플라이 유닛의 다른 구성과 관련된다.
Description
관련 출원에 대한 상호 참조
본 출원은, 전체 내용이 본 명세서에 병합된, 발명의 명칭이 "A HOMOMORPHIC PROCESSING UNIT (HPU) FOR ACCELERATING SECURE COMPUTATIONS UNDER FULLY HOMOMORPHIC ENCRYPTION"인, 2017년 4월 11일자로 출원된 미국 가출원 제62/484,304호의 우선권을 주장하는 정규 출원이다.
기술 분야
본 발명은 하드웨어 가속기에 관한 것으로, 보다 상세하게는 동형 하드웨어 가속기(homomorphic hardware accelerator) 및 관련 방법에 관한 것이다.
완전 동형 암호화(fully homomorphic encryption)는 제3자가 데이터를 먼저 복호할 필요없이 암호화된 데이터에 계산을 수행할 수 있는 능력을 제공한다. 이런 형식의 암호화는 사용자에게 개인 암호화된 데이터를 예를 들어 원격 서버에 저장할 수 있게 하면서 데이터 저장 설비가 암호화된 데이터를 처리할 수 있게 한다. 완전 동형 암호화는 클라우드 기반 컴퓨팅 환경에 적합하다.
데이터 소유자에 대한 프라이버시를 보존하는 것에 의해 큰 장래성을 제공하지만, 그럼에도 불구하고 암호화된 데이터를 포함하는 동작은 계산 집약적이다.
동형 프로세서 칩, 시스템 및 관련 방법이 개시된다. 일 실시형태에서, 집적 회로(IC) 동형 프로세서 칩(homomorphic processor chip)이 개시된다. 상기 IC 동형 프로세서 칩은 적어도 하나의 프로세서 슬라이스(processor slice)를 포함한다. 각 프로세서 슬라이스는 로컬 제어 회로부(local control circuitry), 수치 이론 변환(numeric theoretic transform: NTT) 버터플라이 유닛(butterfly unit), 및 온칩 메모리(on-chip memory)를 포함한다. 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 동형 암호화를 사용하여 암호화된 데이터에 동작을 수행하기 위해 다수의 모드에서 동작한다. 각 모드는 상기 NTT 버터플라이 유닛의 다른 구성과 관련된다.
다른 실시형태에서, 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 완전 동형 암호화를 포함하는 동작을 위해 다수의 모드에서 동작한다.
또 다른 실시형태에서, 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 부분 동형 암호화(partially homomorphic encryption)를 포함하는 동작을 위해 다수의 모드에서 동작한다.
다른 실시형태에서, 상기 NTT 버터플라이 유닛을 위한 제1 구성은 제1 암호문(ciphertext)(Ctxt) 기능을 수행하기 위해 제1 회로부를 사용한다. 상기 NTT 버터플라이 유닛을 위한 제2 구성은 제2 Ctxt 기능을 수행하기 위해 상기 제1 회로부의 적어도 일부를 재사용한다.
다른 실시형태에서, 상기 제1 회로부는 암호문(Ctxt) 덧셈 기능을 수행하는 반면, 상기 제2 Ctxt 기능은 Ctxt 곱셈 기능을 포함한다.
또 다른 실시형태에서, 상기 제1 회로부는 모듈러 덧셈기(modular adder)를 포함한다.
다른 실시형태에서, 상기 모듈러 덧셈기는 조합 모듈러 덧셈기(combinational modular adder)를 포함한다.
다른 실시형태에서, 상기 모듈러 덧셈기는 순차 모듈러 덧셈기(sequential modular adder)를 포함한다.
또 다른 실시형태에서, 상기 제2 구성은 모듈러 곱셈기를 포함하는 제2 회로부를 포함한다.
다른 실시형태에서, 상기 모듈러 곱셈기는 병렬 정수 곱셈기(parallel integer multiplier)를 포함한다.
다른 실시형태에서, 상기 모듈러 곱셈기는 모듈러 감소 유닛(modular reduction unit)을 더 포함한다.
또 다른 실시형태에서, 상기 IC 동형 프로세서는 다수의 프로세서 슬라이스를 포함하고, 상기 IC 동형 프로세서는 상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하기 위해 마스터 제어 회로부를 더 포함한다.
다른 실시형태에서, 상기 로컬 제어 회로부는 상기 메모리로부터 Ctxt 계수 값(coefficient value)의 세트를 검색하기 위해 상기 마스터 제어 회로부로부터 명령을 수신한다. 상기 값 세트는 처리 파이프라인(processing pipeline)에 로딩된다. 변환된 값을 생성하기 위해 적어도 하나의 Ctxt 동작이 수행된다. 상기 변환된 값은 목적지 메모리 위치에 저장된다.
다른 실시형태에서, 상기 마스터 제어 회로부로부터의 명령은 NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하기 위한 명령을 더 포함한다.
다른 실시형태에서, 적어도 하나의 Ctxt 동작을 수행하기 위해 상기 마스터 제어 회로부로부터의 명령은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등(equality) 동작, 더 작음(smaller than) 동작, 더 큼(larger than) 동작, 엔티티(entity) 동작, 복사(copy) 동작 및 부정(negation) 동작으로 구성된 그룹 중에서 적어도 하나의 Ctxt 동작을 수행하기 위한 명령을 포함한다.
또 다른 실시형태에서, 상기 NTT 버터플라이 유닛은 단일 스테이지 유닛으로서 실현된다.
다른 실시형태에서, 동형 암호화 시스템이 개시된다. 상기 동형 암호화 시스템은 집적 회로(IC) 동형 프로세서 칩 및 상기 IC 동형 프로세서 칩 외부의 주 메모리(main memory)를 포함한다. 데이터 경로(data path)는 상기 주 메모리와 상기 IC 동형 프로세서 칩 간에 데이터를 전송한다. 제어 경로는 상기 주 메모리와 상기 IC 동형 프로세서 칩 간의 전송을 제어한다. 상기 IC 동형 프로세서 칩은 마스터 제어 회로부 및 다수의 프로세서 슬라이스를 포함한다. 상기 마스터 제어 회로부는 상기 제어 경로를 통해 상기 주 메모리와 상기 IC 동형 프로세서 칩 간의 데이터의 전송을 제어한다. 상기 다수의 프로세서 슬라이스는 파이프라인 깊이(pipeline depth)에 대응한다. 상기 다수의 프로세서 슬라이스 각각은 로컬 제어 회로부, 수치 이론 변환(NTT) 버터플라이 유닛 및 온칩 메모리를 포함한다. 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여, 동형 암호화를 사용하여 암호화된 데이터에 동작을 수행하기 위해 다수의 모드에서 동작한다. 각 모드는 상기 NTT 버터플라이 유닛의 다른 구성과 관련된다. 상기 온칩 메모리는 상기 로컬 제어 회로부와 상기 NTT 버터플라이 유닛에 결합된다.
다른 실시형태에서, 상기 동형 암호화는 완전 동형 암호화를 포함한다.
또 다른 실시형태에서, 상기 동형 암호화는 부분 동형 암호화를 포함한다.
다른 실시형태에서, 상기 마스터 제어 회로부는 상기 외부 메모리로부터 Ctxt 계수 값 세트를 검색하고 상기 값 세트를 처리 파이프라인으로 로딩하기 위해 상기 다수의 프로세서 슬라이스 각각에 대한 동작을 스케줄링한다. 변환된 값을 생성하기 위해 적어도 하나의 Ctxt 동작이 수행된다. 상기 변환된 값은 목적지 메모리 위치에 저장된다.
다른 실시형태에서, 상기 마스터 제어 회로부로부터의 스케줄링된 동작은 NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하기 위해 상기 다수의 프로세서 슬라이스 각각에 대한 스케줄링된 동작을 더 포함한다.
또 다른 실시형태에서, 상기 마스터 제어 회로부로부터의 스케줄링된 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 이루어진 그룹 중에서 적어도 하나의 Ctxt 동작을 수행하기 위해 상기 다수의 프로세서 슬라이스 각각에 대한 스케줄링된 동작을 더 포함한다.
다른 실시형태에서, 상기 NTT 버터플라이 유닛 각각은 단일 스테이지 버터플라이를 포함하고, 주어진 NTT 변환 동작은 상기 NTT 버터플라이 유닛에 의한 log(n)-1개의 평가 단계를 포함하며, 여기서 "n"은 계수 값과 관련된 다항식의 차수를 나타낸다.
또 다른 실시형태에서, 수치 이론 변환(NTT) 버터플라이 회로가 개시된다. 상기 NTT 버터플라이 회로는 제1 덧셈기/뺄셈기, 제1 곱셈기 및 제1 선택 회로부를 포함하는 높은 입력 워드 경로(high input word path)를 포함한다. 상기 제1 선택 회로부는 상기 제1 덧셈기/뺄셈기 및 상기 제1 곱셈기에 결합되고, 상기 제1 덧셈기/뺄셈기 및 상기 제1 곱셈기를 선택적으로 우회하기 위한 각각의 우회 경로(bypass path)를 포함한다. 상기 NTT 버터플라이 회로는 제2 덧셈기/뺄셈기, 제2 곱셈기 및 제2 선택 회로부를 포함하는 낮은 입력 워드 경로(low input word path)를 포함한다. 상기 제2 선택 회로부는 상기 제2 덧셈기/뺄셈기 및 상기 제2 곱셈기에 결합되고, 상기 제2 덧셈기/뺄셈기 및 상기 제2 곱셈기를 선택적으로 우회하기 위한 각각의 우회 경로를 포함한다. 상기 높은 입력 워드 경로와 상기 낮은 입력 워드 경로는 교차 결합되고, 상기 제1 및 제2 선택 회로부는 상이한 모드 제어 신호에 응답하여 상기 낮은 입력 워드 경로 및 상기 높은 입력 워드 경로를 상이한 논리 처리 유닛으로 재구성한다.
다른 실시형태에서, 상기 NTT 버터플라이 회로를 위한 제1 구성은 암호문(Ctxt) 덧셈 기능을 수행하기 위해 제1 회로부를 사용하고, 상기 NTT 버터플라이 회로를 위한 제2 구성은 Ctxt 곱셈 기능을 수행하기 위해 상기 제1 회로부의 적어도 일부를 재사용한다.
또 다른 실시형태에서, 상기 제1 및 제2 덧셈기/뺄셈기 각각은 조합 모듈러 덧셈기를 포함한다.
다른 실시형태에서, 상기 제1 및 제2 곱셈기 각각은 병렬 정수 곱셈기를 포함한다.
다른 실시형태에서, 상기 제1 및 제2 곱셈기 각각은 모듈러 감소 유닛을 더 포함한다.
또 다른 실시형태에서, 상기 제1 및 제2 덧셈기/뺄셈기 및 곱셈기 각각은 관련된 임계 경로(critical path)를 포함하고, 상기 관련된 임계 경로 각각은 레지스터 회로부(register circuitry)에 의해 경계가 정해진다(bounded).
다른 실시형태에서, 상기 NTT 버터플라이 회로는 단일 스테이지 버터플라이로서 실현되고, 주어진 NTT 변환 동작은 상기 NTT 버터플라이 회로에 의한 log(n)-1개의 평가 단계를 포함하며, 여기서 "n"은 계수 값과 관련된 다항식의 차수를 나타낸다.
다른 실시형태에서, 동형 프로세서 집적 회로(IC) 칩에서 동작하는 방법이 개시된다. 상기 방법은 암호문(Ctxt) 심볼을 수치 이론 변환(NTT) 영역으로 변환하는 단계를 포함한다. 상기 변환하는 단계는 주어진 프로세서 슬라이스에 대해 로컬 제어 회로부를 사용하여 모드 제어 신호를 생성하는 것을 포함한다. 상기 모드 제어 신호는 동형 암호화를 포함하는 다수의 동작 모드 중 하나에 대응한다. 상기 NTT 버터플라이 유닛은 상기 모드 제어 신호에 응답하여 구성된다.
또 다른 실시형태에서, 상기 동형 암호화는 완전 동형 암호화를 포함한다.
다른 실시형태에서, 상기 동형 암호화는 부분 동형 암호화를 포함한다.
다른 실시형태에서, 상기 모드 제어 신호는 제1 동작 모드에 대응하는 제1 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은 Ctxt 덧셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성함으로써 상기 제1 모드 제어 신호에 응답한다.
다른 실시형태에서, 상기 모드 제어 신호는 제2 동작 모드에 대응하는 제2 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은 Ctxt 곱셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성함으로써 상기 제2 모드 제어 신호에 응답한다. 상기 덧셈 기능에 사용된 상기 NTT 버터플라이 유닛의 일부는 상기 곱셈 기능을 수행하는데 재사용된다.
다른 실시형태에서, 상기 변환하는 단계는 각각의 프로세서 슬라이스가 상기 로컬 제어 회로부의 사본 및 상기 NTT 버터플라이 유닛의 사본을 포함하도록 다수의 프로세서 슬라이스를 병렬로 동작시키는 것을 포함한다.
또 다른 실시형태에서, 상기 방법은 상기 다수의 프로세서 슬라이스에 의해 수행되는 다수의 동작을 파이프라이닝하는 단계를 더 포함한다.
다른 실시형태에서, 상기 방법은 상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하는 단계를 더 포함하고, 상기 인터페이싱은 마스터 제어 회로부에 의해 제어된다.
또 다른 실시형태에서, 상기 마스터 제어 회로부는 상기 다수의 슬라이스의 로컬 제어 회로부에 대한 명령을 생성한다. 상기 로컬 제어 회로부는 명령에 응답하여, 상기 메모리로부터 Ctxt 계수 값의 세트를 검색하는 단계; 상기 값 세트를 처리 파이프라인에 로딩하는 단계; 적어도 하나의 Ctxt 동작을 수행하여 변환된 값을 생성하는 단계; 및 상기 변환된 값을 상기 외부 메모리의 목적지 위치에 저장하는 단계를 포함하는 단계를 수행한다.
다른 실시형태에서, 상기 방법은 NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하는 단계를 더 포함한다.
또 다른 실시형태에서, 상기 적어도 하나의 Ctxt 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 선택된다.
다른 실시형태에서, 동형 암호화 시스템에서 동작하는 방법이 개시된다. 상기 방법은 구성 가능한 수치 이론 변환(NTT) 버터플라이 유닛을 포함하는 동형 프로세서 집적 회로(IC) 칩을 제공하는 단계를 포함한다. 상기 동형 프로세서 IC 칩은 데이터 경로 및 제어 경로를 통해 외부 메모리와 인터페이싱한다. 암호문(Ctxt) 심볼은 NTT 영역으로 변환된다. 상기 변환하는 동작은 주어진 프로세서 슬라이스에 대해 로컬 제어 회로부를 사용하여 모드 제어 신호를 생성하는 것을 포함한다. 상기 모드 제어 신호는 동형 암호화를 포함하는 다수의 동작 모드 중 하나에 대응한다. 상기 NTT 버터플라이 유닛은 상기 모드 제어 신호에 응답하여 구성된다.
또 다른 실시형태에서, 상기 동형 암호화는 완전 동형 암호화를 포함한다.
다른 실시형태에서, 상기 동형 암호화는 부분 동형 암호화를 포함한다.
다른 실시형태에서, 상기 모드 제어 신호는 제1 동작 모드에 대응하는 제1 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은 Ctxt 덧셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성함으로써 상기 제1 모드 제어 신호에 응답한다.
또 다른 실시형태에서, 상기 모드 제어 신호는 제2 동작 모드에 대응하는 제2 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은 Ctxt 곱셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성함으로써 상기 제2 모드 제어 신호에 응답한다. 상기 덧셈 기능에 사용된 상기 NTT 버터플라이 유닛의 부분은 상기 곱셈 기능을 수행하는데 재사용된다.
다른 실시형태에서, 상기 변환하는 동작은, 각각의 프로세서 슬라이스가 상기 로컬 제어 회로부의 사본 및 상기 NTT 버터플라이 유닛의 사본을 포함하도록 다수의 프로세서 슬라이스를 병렬로 동작시키는 것을 포함한다.
다른 실시형태에서, 상기 방법은 상기 다수의 프로세서 슬라이스에 의해 수행되는 다수의 동작을 파이프라이닝하는 단계를 더 포함한다.
또 다른 실시형태에서, 상기 방법은 상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하는 단계를 더 포함하고, 상기 인터페이싱은 마스터 제어 회로부에 의해 제어된다.
다른 실시형태에서, 상기 마스터 제어 회로부는 상기 다수의 슬라이스의 로컬 제어 회로부에 대한 명령을 생성한다. 상기 로컬 제어 회로부는 명령에 응답하여, 상기 메모리로부터 Ctxt 계수 값의 세트를 검색하는 단계; 상기 값 세트를 처리 파이프라인에 로딩하는 단계; 적어도 하나의 Ctxt 동작을 수행하여 변환된 값을 생성하는 단계; 및 상기 변환된 값을 상기 외부 메모리의 목적지 위치에 저장하는 단계를 포함하는 단계를 수행한다.
다른 실시형태에서, 상기 방법은 NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하는 단계를 더 포함한다.
또 다른 실시형태에서, 상기 적어도 하나의 Ctxt 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 선택된다.
다른 실시형태에서, 수치 이론 변환(NTT) 버터플라이 회로에서 동작하는 방법이 개시된다. 상기 회로는 높은 입력 워드 경로 및 낮은 입력 워드 경로를 포함한다. 상기 높은 입력 워드 경로는 제1 덧셈기/뺄셈기 및 제1 곱셈기를 포함한다. 상기 낮은 입력 워드 경로는 제2 덧셈기/뺄셈기 및 제2 곱셈기를 포함한다. 상기 방법은 상기 제2 덧셈기/뺄셈기와 상기 제2 곱셈기를 선택적으로 우회하는 단계; 및 상이한 모드 제어 신호에 응답하여 상기 낮은 및 높은 입력 워드 경로를 상이한 논리 처리 유닛으로 재구성하는 단계를 포함한다.
다른 실시형태에서, 상기 재구성하는 단계는, 제1 모드 제어 신호를 수신하는 것에 응답하여, 암호문(Ctxt) 덧셈 기능을 수행하도록 상기 NTT 버터플라이 회로를 구성하는 단계, 및 제2 모드 제어 신호를 수신하는 것에 응답하여, Ctxt 곱셈 기능을 수행하도록 상기 NTT 버터플라이 회로를 구성하는 단계를 포함한다.
다른 실시형태에서, 상기 방법은 상기 제1 및 제2 덧셈기/뺄셈기 각각에 대해 조합 모듈러 덧셈기를 사용하는 단계를 더 포함한다.
또 다른 실시형태에서, 상기 방법은 상기 제1 및 제2 곱셈기 각각에 대해 병렬 정수 곱셈기를 사용하는 단계를 더 포함한다.
다른 실시형태에서, 상기 제1 및 제2 곱셈기 각각은 감소 유닛을 포함하고, 상기 방법은 각각의 감소 유닛을 동작시키는 단계를 더 포함한다.
다른 실시형태에서, 상기 NTT 버터플라이 회로는 단일 스테이지 버터플라이로서 실현되고, 상기 변환하는 동작은 log(n)-1개의 평가 단계를 통해 상기 NTT 버터플라이 회로를 동작시키는 것을 포함하고, 여기서 "n"은 계수 값과 관련된 다항식의 차수를 나타낸다.
또 다른 실시형태에서, 동형 프로세서 집적 회로(IC) 칩이 개시된다. 상기 IC 동형 프로세서 칩은 적어도 하나의 프로세서 슬라이스를 포함한다. 상기 적어도 하나의 프로세서 슬라이스는 로컬 제어 회로부, NTT 버터플라이 유닛 및 온칩 메모리를 포함한다. 상기 온칩 메모리는 상기 제어 회로부와 상기 NTT 버터플라이 유닛에 결합되고, 동형 처리 기능을 위해 별도로 액세스 가능한 저장 유닛으로 분할된다. 상기 온칩 메모리는 다수의 입력/출력(I/O) 저장 유닛, 비트로 분해된(bit decomposed) 다항식 저장 유닛 및 트위들 팩터(twiddle factor) 메모리 유닛을 포함한다.
다른 실시형태에서, 상기 I/O 저장 유닛들 중 제1 저장 유닛은 암호문(Ctxt)을 행(row) 단위로 저장하고, 상기 I/O 저장 유닛들 중 제2 저장 유닛은 Ctxt를 열(column) 단위로 저장한다.
또 다른 실시형태에서, 상기 I/O 저장 유닛들 중 제3 저장 유닛은 상기 제1 저장 유닛으로부터의 제1 Ctxt와 상기 제2 저장 유닛으로부터의 제2 Ctxt를 곱하는 것을 포함하는 곱셈 동작으로 인한 출력 Ctxt를 저장한다.
다른 실시형태에서, 상기 동형 프로세서 집적 회로(IC) 칩은 상기 제2 메모리 유닛에 결합된 메모리 카운터(memory counter)를 더 포함한다.
다른 실시형태에서, 상기 I/O 저장 유닛들 중 제1 저장 유닛의 주어진 행의 Ctxt의 단일 행의 변환은 상기 I/O 저장 유닛들 중 제3 저장 유닛에 대응하는 결과 행을 초래한다.
또 다른 실시형태에서, 상기 다수의 I/O 저장 유닛 중 하나의 저장 유닛은 외부 메모리에 결합된 핑퐁 메모리(ping-pong memory)로서 구성된다.
다른 실시형태에서, 상기 핑퐁 메모리는 제1 메모리 동작을 수행하기 위한 제1 서브 어레이(sub-array), 및 상기 제1 메모리 동작과 동시에 제2 동작을 수행하기 위한 제2 서브 어레이를 포함한다.
다른 실시형태에서, 상기 온칩 메모리는 DRAM을 포함한다.
다른 실시형태에서, 동형 프로세서 집적 회로(IC) 칩에서 동작하는 방법이 개시된다. 상기 방법은 온칩 메모리를 동형 처리 기능을 위해 별도로 액세스 가능한 저장 유닛으로 분할하는 단계를 포함한다. 상기 온칩 메모리는 다수의 입력/출력(I/O) 저장 유닛, 비트로 분해된 다항식 저장 유닛, 및 트위들 팩터 메모리 유닛을 포함한다. 분할된 온칩 메모리에 결합된 구성 가능한 수치 이론 변환(NTT) 버터플라이 유닛으로 로딩된 값 세트에 적어도 하나의 암호문(Ctxt) 동작이 수행된다.
다른 실시형태에서, 상기 방법은 NTT 영역에서 대응하는 변환된 값을 생성하기 위해 상기 로딩된 값 세트를 변환하는 단계를 더 포함한다.
다른 실시형태에서, 상기 적어도 하나의 Ctxt 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 선택된다.
다른 실시형태에서, 상기 변환하는 단계는 상기 I/O 저장 유닛들 중 제1 저장 유닛으로부터 제1 암호문(Ctxt)을 행 단위로 판독하는 동작, 및 상기 I/O 저장 유닛들 중 제2 저장 유닛으로부터 제2 Ctxt를 열 단위로 판독하는 동작을 더 포함한다.
다른 실시형태에서, 상기 변환하는 단계는 상기 제1 Ctxt와 상기 제2 Ctxt를 곱하여 결과 Ctxt를 생성하는 단계, 및 상기 결과 Ctxt를 상기 I/O 저장 유닛들 중 제3 저장 유닛에 기록하는 단계를 더 포함한다.
다른 실시형태에서, 상기 다수의 I/O 저장 유닛 중 하나의 저장 유닛은 핑퐁 메모리 유닛으로서 구성된 각각의 제1 및 제2 서브 어레이를 포함한다. 상기 방법은 제1 동작을 수행하기 위해 상기 제1 서브 어레이를 동작시키는 단계, 및 상기 제1 동작과 동시에 제2 동작을 수행하기 위해 상기 제2 서브 어레이를 동작시키는 단계를 더 포함한다.
다른 실시형태에서, 동형 프로세서 집적 회로(IC) 칩에서 동작하는 방법이 개시된다. 상기 방법은 제1 온칩 메모리 유닛으로부터 제1 암호문(Ctxt)을 행 단위 판독 동작을 통해 검색하는 단계를 포함한다. 상기 제1 Ctxt는 수치 이론 변환(NTT) 영역으로 변환된다. 제2 암호문(Ctxt)은 제2 온칩 메모리 유닛으로부터 열 단위 판독 동작을 통해 검색된다. 상기 제2 Ctxt는 상기 NTT 영역으로 변환된다. 상기 변환된 제1 Ctxt에 상기 변환된 제2 Ctxt를 곱하여 결과 Ctxt를 생성한다. 상기 결과 Ctxt는 제3 메모리 유닛에 저장된다.
본 발명의 실시형태는, 동일한 참조 번호가 유사한 요소를 나타내는 첨부 도면에 비 제한적으로 예로서 도시된다.
도 1a는 동형 암호화 시스템의 일 실시형태를 도시하는 도면;
도 1b는 도 1a와 유사한 시스템의 실시형태를 도시하는 도면;
도 1c는 도 1a와 유사한 시스템의 다른 실시형태를 도시하는 도면;
도 2는 도 1에 도시된 동형 암호화 시스템의 다른 세부 사항을 도시하는 도면;
도 3은 도 2의 구성 가능한 NTT/INTT 유닛의 일 실시형태를 도시하는 도면;
도 4는 도 2의 시스템에 의해 수행되는 순방향 NTT 동작의 타이밍도를 도시하는 도면;
도 5는 도 2의 시스템에 의해 수행되는 역(inverse) NTT(INTT) 동작의 타이밍도를 도시하는 도면;
도 6은 곱셈 및 누산 동작의 타이밍도를 도시하는 도면;
도 7은 도 6의 타이밍도에 대응하는 행렬 행 열 곱셈 동작을 도시하는 도면;
도 8은 도 2의 구성 가능한 NTT/INTT 유닛에 대한 흐름 제어에 관한 흐름도의 일 실시형태를 도시하는 도면;
도 9는 표준 버터플라이 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 10은 덧셈/뺄셈 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 11은 행렬 곱셈 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 12는 복사 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 13은 부분 동형 상황의 일 실시형태에서 NTT 버터플라이 유닛의 사용을 도시하는 도면.
도 1a는 동형 암호화 시스템의 일 실시형태를 도시하는 도면;
도 1b는 도 1a와 유사한 시스템의 실시형태를 도시하는 도면;
도 1c는 도 1a와 유사한 시스템의 다른 실시형태를 도시하는 도면;
도 2는 도 1에 도시된 동형 암호화 시스템의 다른 세부 사항을 도시하는 도면;
도 3은 도 2의 구성 가능한 NTT/INTT 유닛의 일 실시형태를 도시하는 도면;
도 4는 도 2의 시스템에 의해 수행되는 순방향 NTT 동작의 타이밍도를 도시하는 도면;
도 5는 도 2의 시스템에 의해 수행되는 역(inverse) NTT(INTT) 동작의 타이밍도를 도시하는 도면;
도 6은 곱셈 및 누산 동작의 타이밍도를 도시하는 도면;
도 7은 도 6의 타이밍도에 대응하는 행렬 행 열 곱셈 동작을 도시하는 도면;
도 8은 도 2의 구성 가능한 NTT/INTT 유닛에 대한 흐름 제어에 관한 흐름도의 일 실시형태를 도시하는 도면;
도 9는 표준 버터플라이 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 10은 덧셈/뺄셈 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 11은 행렬 곱셈 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 12는 복사 동작 모드에서 NTT/INTT 유닛의 구성을 도시하는 도면;
도 13은 부분 동형 상황의 일 실시형태에서 NTT 버터플라이 유닛의 사용을 도시하는 도면.
하드웨어 가속기 및 관련 방법이 개시된다. 일 실시형태에서, 암호문(Ctxt) 심볼을 수치 이론 변환(number theoretic transform: NTT) 영역으로 변환하기 위한 집적 회로(IC) 동형 프로세서 칩이 개시된다. IC 동형 프로세서 칩은 적어도 하나의 프로세서 슬라이스를 포함한다. 각 프로세서 슬라이스는 로컬 제어 회로부, NTT 버터플라이 유닛 및 온칩 메모리를 포함한다. NTT 버터플라이 유닛은 로컬 제어 회로부에 응답하여 완전 동형 암호화를 포함하는 동작을 위해 다수의 모드에서 동작한다. 각 모드는 NTT 버터플라이 유닛의 다른 구성과 관련된다. 재구성 가능한 NTT 버터플라이 유닛을 사용함으로써, 다른 기능을 수행하기 위한 별도의 회로를 피할 수 있어서 보다 효율적인 사이클 시간에 기여한다.
도 1a를 참조하면, 일반적으로 100으로 지칭되는 완전 동형 암호화(fully homomorphic encryption: FHE) 시스템의 일 실시형태는 집적 회로(IC) 동형 처리 유닛(homomorphic processing unit: HPU)(102)을 사용한다. HPU(102)는 온칩 암호문(Ctxt) 덧셈/뺄셈 유닛(104) 및 곱셈기 유닛(106)을 포함한다. 수치 이론 변환(NTT) 유닛(108)은 Ctxt 곱셈을 지원한다. 일 실시형태에서, 덧셈/뺄셈 유닛(104), 곱셈기 유닛(106) 및 NTT 유닛은 다기능 버터플라이 유닛(206)을 형성하도록 협력한다. 내장 메모리(110)는 최적의 방식으로 컴퓨팅 엔진에 데이터를 공급하기 위해 제공된다. 또한, 시스템(100)은 제어 유닛(112)을 사용하여 엔진 동작을 조정하고 외부 메모리(114)와의 데이터의 전송을 제어한다. 이 일반적인 아키텍처는 그래픽 처리 유닛(GPU)과 같은 종래의 방식에 의해 나타나는 다이(die) 영역의 일부를 사용하여 현재의 최신 GPU보다 57배 더 빠른 동형 동작 계산(링 기반 FHE 암호화 방식)을 위한 하드웨어 가속을 제공하는 사이클 정확한 동형 처리 유닛(HPU)을 제공한다.
일부 실시형태에서, 다기능 버터플라이 유닛(206)은 응용에 따라 상이한 기능을 수행하기 위해 상이한 형태를 취할 수 있다. 도 1b는 NTT/INTT 유닛(108) 및 다양한 Ctxt 동작 중 적어도 하나를 수행하기 위한 Ctxt 동작 회로부(109)를 포함하는 것으로 다기능 버터플라이 유닛(206)을 도시한다. 이러한 동작의 예는 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작을 포함한다.
도 1c에 도시된 일 실시형태에서, 다기능 버터플라이 유닛(206)은 전술한 다양한 Ctxt 동작 중 적어도 하나를 수행하기 위해 Ctxt 동작 회로부(109)를 포함한다.
도 2는 도 1에 도시된 시스템에 대응하는 일반적으로 200으로 지정된 FHE 시스템의 하나의 특정 실시형태의 추가 상세를 도시한다. 시스템(200)은 처리 속도 및 효율을 최대화하기 위해 병렬로 동작할 수 있는 로직(202a 내지 202n)의 다수의 "슬라이스"로 형성된 주문형 집적 회로(application specific integrated circuit: ASIC)와 같은 집적 회로(IC) 칩(201)을 포함한다. 202a에서와 같은 각각의 슬라이스는 다기능 NTT 버터플라이 유닛(206)을 갖는 동형 처리 유닛(HPU) 코어 블록을 정의한다. 다기능 버터플라이 유닛(206)은 재구성 가능하고, 로컬 제어 유닛(208) 형태의 분산 제어 로직에 의해 제어된다. 내부 내장 메모리 아키텍처(210)는 대기 시간을 최소화하면서 크게 감소된 풋프린트(footprint)를 나타낸다. 외부 메모리(212)는 데이터 경로(214) 및 제어 경로(216)를 통해 HPU 코어 슬라이스(202)와 인터페이싱한다. 제어 경로(216)는 전체 레벨에서 시스템(200)의 동작을 조정하기 위해 마스터 제어 유닛(218)을 포함한다.
추가로 도 2를 참조하면, HPU 코어 슬라이스(202)는 본질적으로 확장 가능하여, 더 큰 시스템으로 통합하는 것을 간단한 작업으로 만들고, 마스터 제어 유닛(218)을 훨씬 간단하게 만들 수 있다. "포트1L". "포트1H" 및 "포트2L" 및 "포트2H"와 같은 코어 입력/출력(I/O)은 각 HPU 코어 슬라이스(202)의 양측에 구성된다. "H" 및 "L" 포트는 모두 HPU 코어 슬라이스에 대한 입력 및 출력 포트일 수 있다. 이것은 NTT 영역 데이터를 암호문 데이터로 변환하는 역 수치 이론 변환(INTT) 엔진이 NTT 하드웨어와 유사하지만 제 자리에서 수평 반전(horizontal flipping)된 하드웨어를 사용할 수 있기 때문에 유리하다. 실제로, 출력 포트가 입력 포트로 사용되는 경우 동일한 NTT 엔진이 INTT 기능을 계산할 수 있고 그 반대의 경우도 마찬가지다. 또한 이것은 NTT 엔진의 라우팅 자원을 절반으로 감소시켜, 설계 영역과 전력 소비를 최소화한다.
추가로 도 2를 참조하면, 내부 내장 메모리(210)는 전체 칩 풋프린트 및 처리 대기 시간을 최소화하는 방식으로 HPU 코어 슬라이스(202)를 효율적으로 로딩하기 위해 제공된다. 일 실시형태에서, 내부 메모리(210)는 온칩 메모리의 양을 최소화할 뿐만 아니라 시스템에서의 처리 지연을 최소화하는 방식으로 분할된다. 일반적으로, 분할은 입력/출력(I/O) 저장을 위한 4개의 메모리 유닛(Mem0(220), Mem1(222), Mem2(224) 및 Mem3(226)), "비트로 분해된"(bit decomposed: BD) 다항식을 임시 저장하기 위한 1개의 메모리 유닛(228), 및 트위들 팩터 메모리 유닛(230)을 포함한다. 한 쌍의 시프트 레지스터(232 및 234)는 메모리 유닛(220, 222, 224 및 226)에 연결되고, 멀티플렉서(M3 및 M4)를 통해 HPU 높은 입력 및 낮은 입력에 선택적으로 결합된다. 4개의 I/O 메모리 유닛 중 Mem0과 같은 하나의 메모리 유닛은 외부 메모리(212)로부터 암호문 로딩과 관련된 지연을 효과적으로 숨기도록 듀얼 버퍼 "핑퐁" 메모리로 구성될 수 있다. 일부 실시형태에서 트위들 팩터 메모리 유닛(230)은 또한 핑퐁 배향으로 구성될 수 있다.
암호문 로딩 지연을 보상하는데 추가로 도움을 주기 위해, 내부 메모리(210)와 외부 메모리(212)를 인터페이싱하는 데이터 경로(214)는, 예를 들어, 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작, 부정 동작과 같은 Ctxt 동작을 포함하지만 Ctxt 동작으로 제한되지는 않는 Ctxt 동작을 수행하기 위해 클록 사이클의 수보다 더 작은 조건을 충족하는 폭을 가질 수 있다. 매 클록 사이클마다 새로운 데이터를 데이터 경로에 공급함으로써 성능을 더 향상시키기 위해, 일 실시형태에서, 외부 메모리 인터페이스는 다양한 DDRX 및/또는 GDDRX 메모리 표준 중 임의의 표준에 의해 정의된 것과 같은 고속 동적 랜덤 액세스 메모리(DRAM)를 사용한다. 메모리 아키텍처에 의해 수행되는 다양한 방법을 포함하는 시스템의 동작은 아래에 더 설명된다.
도 3은 도 2의 NTT 버터플라이 유닛(206)에 대응하는, 일반적으로 300으로 지정된 다기능 버터플라이 유닛의 하나의 특정 실시형태를 도시한다. 일반적으로, 다기능 버터플라이 유닛(300)은 암호문(Ctxt)을 수치 이론 변환(NTT)으로 변환하기 위한 회로부를 제공한다. 특정 실시형태에서, 유닛은 또한 NTT를 암호문으로 다시 변환하기 위해 INTT 엔진으로 기능할 수 있다. 일반적으로, 수치 이론 변환(NTT)은 이산 푸리에 변환(discrete Fourier transform: DFT)과 등가 유한 필드(finite-field)이다. NTT는 차수(n) 다항식의 경우 O(n2)의 다항식 곱셈의 계산 비용을 O(nlog(n))으로 감소시킨다.
추가로 도 3을 참조하면, 필수적인 구성 블록으로서, 다기능 버터플라이 유닛(300)은 일반적으로 버터플라이 토폴로지로 배열된 2개의 모듈러 덧셈기(302 및 304) 및 2개의 모듈러 곱셈기(306 및 308)를 포함한다. 모듈러 덧셈기는 응용에 따라 조합식이거나 순차식일 수 있다. 일반적으로 말하면 단일 기수(radix)-2 버터플라이는 다음 일반식을 갖는다:
OutL = (TL(InL + InH)) mod q
OutH = (TH(InL - InH)) mod q
여기서 TL과 TH는 트위들 팩터라고 불리고, q는 모듈러스(modulus)이다.
일 실시형태에서, NTT 버터플라이 유닛(300)은 FHE 암호화에 이용된 다수의 기능을 달성하기 위해 다양한 로직 블록의 재구성 및 재사용을 제공한다. NTT 버터플라이 유닛(300)은 모듈러 덧셈기/뺄셈기 로직(302 및 304)뿐만 아니라 모듈러 곱셈기 로직(306 및 308)을 포함한다. 모듈러 덧셈기/뺄셈기 유닛은 일반적으로 2개의 부분, 즉 정규 덧셈/뺄셈 유닛에 이어 모듈러 감소 유닛으로 구성된다. 모듈러 감소 동작은 결과가 덧셈의 경우 모듈러스 q보다 더 큰지 여부 또는 뺄셈의 경우 0보다 더 작은지 여부를 점검하고 그에 따라 결과를 조정한다. 일부 실시형태에서, 캐리 룩-어헤드(Carry Look-Ahead), 병렬 프리픽스(Parallel Prefix), 조건부 합(Conditional Sum) 또는 캐리 스킵 덧셈기(Carry Skip adder)와 같은 병렬 덧셈기가 사용될 수 있다.
추가로 도 3을 참조하면, 모듈러 곱셈기(306 및 308) 각각은 단일 유닛 또는 정수 곱셈기에 이어 모듈러 감소 유닛으로 구성될 수 있다. 모듈러 감소 유닛은 바렛(Barrett) 모듈러 감소 유닛, 특수 소수(special prime) 모듈러 감소 유닛 형태이거나, 또는 몽고메리(Montgomery) 모듈러 곱셈 유닛과 같은 두 유닛을 통합하는 단일 유닛 형태일 수 있다. 모듈러 곱셈기는 특정 실시형태에서 여러 번 반복될 수 있는 다기능 버터플라이의 많은 부분을 차지하기 때문에, 특정 구현은 다른 상황에서보다 특정 상황에서 더 바람직할 수 있다. 일 실시형태에서, 소리나스 소수(Solinas prime)의 모듈러스를 갖는 특수 소수의 사용은 q = 2ℓ-2d + 1 (여기서 ℓ = 31, d = 17, 및 q는 모듈러스를 나타냄)에서 잘 작동한다. 시스템의 성능을 향상시키기 위해, 병렬 정수 곱셈기가 사용될 수 있다. 위에서 한정된 파라미터를 사용하면 정수 곱셈기는 2ℓ = 62 비트의 출력 폭을 생성한다. 이것은 ℓ 값의 두 배이며, 이는 감소 유닛에 의해 다시 31 비트로 감소된다.
계속해서 도 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)로부터 유래하거나 또는 곱셈기(306)로부터 피드백된 M2로부터의 선택된 출력, 또는 (대응하는 높은 경로(312)의) 레지스터(R1)로부터 교차-결합된 출력을 포함할 수 있다.
추가로 도 3을 참조하면, 덧셈기/뺄셈기(302)로부터의 출력은 멀티플렉서(M4)의 하나의 입력을 포함하는 곱셈 경로를 공급한다. 우회 경로(314)는 덧셈/뺄셈 출력을 출력 멀티플렉서(M6)에 공급하고, 또한 피드백 경로(316)를 따라 입력 멀티플렉서(M0)에 공급한다. 곱셈기 멀티플렉서(M4)는 덧셈/뺄셈기 경로를 우회하여 입력(InL)을 곱셈기 경로에 직접 연결하는 우회 경로(318)로부터의 제2 입력을 포함한다. 제2 스테이지 레지스터(R2)는 M4로부터 선택된 출력을 수신하고 이 출력을 곱셈기(306)에 제공한다. 트위들 팩터 입력은 또한 입력(TL)을 통해 레지스터(R4)를 거쳐 곱셈기(306)에 인가될 수 있다. 곱셈기(306)의 출력은 출력 멀티플렉서(M6)에 공급될 수 있고, 또한 경로(320)를 따라 덧셈기/뺄셈기(302)에 선택적으로 입력되기 위해 멀티플렉서(M2)로 피드백될 수 있다. 제3 스테이지 레지스터(R6)는 멀티플렉서(M6)로부터 선택된 출력을 수신하고, 처리된 출력을 출력 패드(OutL)에 공급한다.
계속해서 도 3을 참조하면, 전술한 낮은 경로(310)는, 레지스터(R3/R2와 R7/R6)들 사이에 유사한 파이프라인 타이밍이 수행되고 제1 스테이지 레지스터(R1 및 R9)가 레지스터(R0 및 R8)와 동기적으로 동작하는 상태로, 높은 경로(312)를 복제한 것일 수 있다. 위에서 언급된 바와 같이, 낮은 및 높은 경로(310 및 312)는 레지스터(R0)와 멀티플렉서(M3) 사이에 그리고 레지스터(R1)와 멀티플렉서(M2) 사이에 교차 결합된다. 교차 결합은 아래에서 더 상세히 설명되는 바와 같이 특정 동작 모드에서 버터플라이에서 이용 가능한 로직의 기능적 재구성 및 재사용을 제공한다.
동작 시, 도 2의 FHE 시스템(200)은 Ctxt 덧셈, Ctxt 뺄셈, Ctxt 곱셈 및 NTT/INTT 처리를 포함한 계산을 수행한다. 일부 실시형태에서, 평문(plaintext) 계산이 또한 수행될 수 있다. 특정 동작이 스케줄링되고 처리되는 방식은 아래에 보다 자세히 설명되어 있으며, IC 칩 풋프린트를 크게 줄이면서 대기 시간을 최소화하여 성능을 크게 향상시킨다.
도 4는 도 2의 시스템에 의해 수행되는 일반적인 동작의 일부와 관련된 다양한 타이밍을 도시하는 타이밍도를 도시한다. 동작 그룹이 제시되고, 여기서 각 그룹은 사용된 파이프라인의 깊이에 따라 HPU 로직의 다수의 "슬라이스"에 의해 반복적으로 수행되는 다수의 동일한 계산을 포함한다. 클록 사이클 시간은 왼쪽에서 오른쪽으로 가는 x 축을 따라 반영되고, 여기서 각 육각형 동작 심볼은 단일 클록 사이클에서 수행되는 동작을 나타낸다.
추가로 도 4를 참조하면, 암호문을 NTT 영역으로 변환하는 것을 포함하는 순방향 NTT 동작의 예로서, (1) 상수를 로딩하고 상수와 곱하기, (2) NTT, 및 (3) 최종 NTT 그리고 저장하는 것을 포함하는 3개의 주 처리 기능이 수행된다. 402에 도시된 제1 동작(상수를 로딩하고 상수와 곱하기)은 일반적으로 HPU 코어 블록 파이프라인이 채워질 때까지 예를 들어 404에서 내부 메모리로부터 다수의 다항식을 판독하고, 예를 들어 406에서 상수 값을 다항식에 곱한다. 출력은 예를 들어 408에서 출력 포트로 송신된다. 메모리로부터 요소를 읽는 것으로 제시된 2개의 사이클은 메모리로부터 내용을 가져오는 하나의 사이클 후에 도 2의 낮은 및 높은 시프트 레지스터(232 및 234)를 위한 다른 사이클로 구성된다는 것이 주목된다. 이 단계에서 다항식마다 지연은 파이프라인 깊이에 메모리 동작으로부터 로딩하기 위한 2 클록 사이클을 더한 것과 같다.
계속해서 도 4를 참조하면, 410에 도시된 NTT 동작은 파이프라인에 로딩된 다항식을 반복하고 log2(n)-1개의 평가 단계를 수행한다. 이 단계에서 다항식마다 지연은 파이프라인 깊이와 같다. 412에서 최종 NTT 동작이 수행되고, 그 후 결과는 414에서 목적지 메모리에 다시 저장된다. 이 마지막 단계에서 다항식마다 유효 지연은 파이프라인 깊이에서 2 클록 사이클을 뺀 것과 같은데, 그 이유는 "새로운 NTT 시작"이라는 명명으로 제시된 바와 같이 이전 계산이 여전히 파이프라인에 있는 동안 새로운 다항식 세트를 로딩하고 변환하는 것이 시작되기 때문이다. Ctxt에서 모든 다항식이 변환될 때까지 3개의 주 처리 기능이 반복된다. 역 NTT(INTT) 변환의 경우, 버터플라이 동작 후에 상수 곱셈 동작이 수행되는 것을 제외하고는 주 처리 기능이 유사하게 수행된다.
도 5는 도 4의 NTT 동작과 유사하게 수행되는 INTT 동작의 예에 대한 타이밍을 도시한다. INTT 기능을 스케줄링할 때, (1) 502에서 INTT를 로딩하고 수행하고; (2) 504에서 INTT를 수행하고; 그리고 (3) 506에서 상수를 곱하고 저장하는 3개의 주 동작이 수행된다.
도 4는 순방향 NTT 동작의 예에 대한 타이밍을 도시하지만, 도 6은 2개의 암호문(Ctxt1 및 Ctxt2)의 곱셈을 포함하는 암호문 곱셈 동작에 대한 타이밍도를 도시한다. (1) 602에서 제1 다항식을 비트로 분해하기 위한 NTT; (2) 614에서 제2 다항식을 비트로 분해하기 위한 NTT; 및 (3) 618에서 곱셈 및 누산을 포함하는 3개의 주 처리 기능이 프로세스 동안 수행된다.
추가로 도 6을 참조하면, 602에서, 제1 다항식을 비트로 분해하기 위한 NTT는 예를 들어 604에서 메모리로부터 제1 암호문(Ctxt1)과 관련된 다항식을 판독함으로써 시작된다. 다항식에서 각 정수의 최하위 비트는 606에서 버터플라이 유닛으로 출력된다. 후속 LSB 출력은 높은 및 낮은 시프트 레지스터의 값의 시프트를 수반한다. (608에서 버터플라이의 덧셈 논리를 우회한 후) 610에서 상수와 곱하는 동작을 포함하여 최하위 비트에 대해 NTT 변환이 시작되고 612에서 결과의 출력이 수행된다.
계속해서 도 6을 참조하면, 제1 BTT를 비트로 분해한 결과가 612에서 출력되면, 614에서 제2 다항식 단계의 NTT 분해가 시작된다. 이어서, 제2 암호문(Ctxt2)과 관련된 다항식은 예를 들어 616에서 메모리로부터 판독될 수 있고, 제1 암호문(Ctxt1)이 처리된 방식과 유사하게 처리될 수 있다.
618에서, 곱셈 및 누산 동작을 포함하는 제3 단계에서, Ctxt1의 변환된 행과 Ctxt2의 변환된 열이 처리되어 결과 Ctxt3의 요소가 계산된다. 이것은 행렬 곱셈 테이블을 통해 도 7에 도시되어 있고, 여기서 702에서 가장 왼쪽에 있는 행렬은 Ctxt3을 나타내는 반면, 704에서 가운데에 있는 행렬은 Ctxt1을 나타내고, 706에서 가장 오른쪽에 있는 행렬은 Ctxt2를 나타낸다. Ctxt1에서 다른 행을 변환하고 Ctxt3 결과를 계산하기 위해 전술한 것과 동일한 곱셈 기능을 반복하기 전에 Ctxt3에서 행을 계산하기 위해 도 6의 618에서 제3 단계, 즉 곱셈 및 누산은 두 번 반복된다.
일 실시형태에서, 메모리 내용은, Ctxt의 행을 따른 요소가 다음 행으로 가기 전에 먼저 판독되도록 메모리 내에 배치된다. 도 7은, 704에서 Ctxt1의 요소 및 702에서 Ctxt3의 요소가 행을 따라 정상 순서로 판독되는 반면, 706에서 Ctxt2의 요소는 열을 따라 판독되는 것을 도시한다. 이것은 요소들을 다른 순서로 재배열하거나 또는 이 상황을 설명하기 위해 메모리 카운터를 사용하는 것을 수반한다. 일 실시형태는 짝수 및 홀수 단계로 카운트하는 메모리 카운터를 사용한다. 706에서 Ctxt2의 제1 열을 읽기 위해 모든 열 요소를 읽을 때까지 짝수 카운터가 먼저 활성화된 다음 홀수 카운터가 활성화되어 제2 열의 요소를 가져온다.
도 6 및 도 7에 도시된 전술한 동작은 Ctxt3의 제1 행을 생성하기 위해 Ctxt1의 특정 행이 두 번만 필요하다는 것을 반영한다. 이것은, Ctxt1의 비트로 분해된 버전(version)을 저장할 수 있는 용량을 갖는 전체 메모리가 필요치 않다는 것을 의미한다. 대신, Ctxt3에서 대응하는 행을 계산하기 위해 한 번에 하나의 행을 변환할 수 있다. 그 결과, 내부 내장 메모리의 양은 최소화되어 집적 회로 칩의 대응하는 풋프린트를 크게 감소시킬 수 있다.
도 8은 도 2에 도시된 특정 메모리 아키텍처에 의해 수행되어 위의 설명에 따라 다양한 암호문 및 일반 평문 기능을 수행하는 단계들의 흐름도를 도시한다. 일반적으로, 시스템(200)에 의해 사용되는 동형 암호화는 다음의 일반식을 구현할 수 있게 한다:
여기서 Cijk는 다른 암호문을 나타내고, Pijk는 평문을 나타낸다. 도 2의 내부 메모리의 일부는 상기 수식과 관련된 부분 결과를 저장하도록 구성된다.
추가로 도 2 및 도 8을 참조하면, 도 2의 시스템에 의해 사용되는 흐름 제어 방법은 듀얼 버퍼의 사용과 유사하게 다른 서브 메모리 유닛을 로딩하는 동안 서브 메모리 유닛에서 데이터를 처리하기 위해 핑퐁 메모리를 이용한다. 이것은 위의 일반식을 효율적으로 충족시키는 데 도움이 된다. 흐름 제어 방법은 802에서 데이터 경로(214)를 통해 외부 메모리(212)로부터 데이터를 핑퐁 서브 메모리 유닛 중 하나에 로딩함으로써 시작된다. 핑퐁 메모리의 내용은 804에서 Mem2와 같은 다른 내장 메모리 중 하나에 복사된다. 내용을 복사한 후, 806에서 외부 메모리(212)로부터의 데이터가 핑퐁 메모리에 재로딩되고, 808에서 핑퐁 메모리 선택이 스위칭된다.
추가로 도 8을 참조하면, 808에서 핑퐁 메모리 선택을 스위칭한 후, 흐름 제어는 2개의 동시 경로를 따라 계속된다. 경로 중 제1 경로는 810에서 외부 메모리로부터 핑퐁 메모리 중 하나를 로딩한 다음 824에서 메모리 선택을 스위칭하는 것을 포함한다.
계속해서 도 8을 참조하면, 위의 제1 경로에 의해 수행된 단계와 동시에, 제2 경로는 812에서 다른 핑퐁 메모리의 내용에 NTT 기능을 적용하는 것을 포함한다. NTT를 비트로 분해하는 동작은 Mem2의 두 라인에 적용되고, 누산 동작의 결과는814에서 Mem3에 저장된다. 핑퐁 메모리 및 Mem3이 곱해지고, 그 결과는 816에서 Mem2에서 동일한 두 라인에 다시 저장된다. 그 후, 2ℓ개의 반복이 수행되었는지 여부의 결정이 818에서 이루어진다. 만약 아니라면, NTT를 비트로 분해하고 곱셈하는 단계가 다시 수행된다. 서브 루프는 2ℓ개의 반복이 수행될 때까지 반복된다. 임계값이 충족되면, 820에서 역 NTT 동작이 Mem2의 내용에 적용된다.
일단 INTT 동작이 820에서 적용되면, 동시 흐름 경로는 단일 경로로 복귀하고, 여기서 824에서 핑퐁 메모리 선택이 다시 스위칭된다. 그 후 "K" 암호문이 826에서 곱해졌는지 여부에 대한 결정이 이루어진다. 만약 아니라면, NTT 동작은 812에서 핑퐁 메모리에 적용되고, 단계(814 내지 824)가 반복된다. 만약 "K" 암호문이 곱해진 경우, 결과는 828에서 Mem4에 추가된다. 그 후 830에서 알고리즘이 종료되었는지 여부에 대한 결정이 이루어진다. 추가 처리가 필요한 경우, 단계(804 내지 830)가 반복된다. 만약 그렇지 않으면 특정 데이터 세트에 대한 흐름이 종료된다.
도 9 내지 도 12는 도 3의 다기능 버터플라이 유닛이 전술한 바와 같이 Ctxt 덧셈, 뺄셈, 곱셈 및 NTT/INTT 변환을 포함하는 계산 기능이 가능하도록 다양한 방식으로 구성될 수 있는 방식을 도시한다.
도 9는 (굵은 경로로 표시된) 표준 버터플라이 동작 모드를 위해 구성된 도 3의 다기능 버터플라이 유닛을 도시한다. 구성을 한정하는 연결은 다음 일반식을 구현하는 제어 논리에 의해 디스패치된 제어 신호에 응답한다:
OutL =(TL(InL + InH)) mod q 및 OutH =(TH(InL-InH)) mod q.
이것은 적절한 제어 신호를 생성하고 이를 각 멀티플렉서(M0 내지 M7)에 적용하여 각 멀티플렉서의 출력으로 전달할 특정 지정된 입력을 선택하는 것을 통해 달성된다. 그 결과, 낮은 경로(310)에서, M0은 입력으로서 신호(InL)를 R0에 전달한다. R0의 출력은 뺄셈기로 구성된 높은 경로 덧셈기/뺄셈기(304)에 입력으로서 M3을 통해 공급된다. 또한 R0 출력은 덧셈기로 구성된 낮은 경로 덧셈기/뺄셈기(302)에 입력으로서 공급된다. 덧셈기(302)의 출력은 M4에 의해 R2에 입력으로 전달된다. R2의 출력은 낮은 경로 곱셈기(306)에 공급된다. 트위들 팩터(TL)는 R4에 입력으로 공급되는 반면, R4의 출력은 곱셈기(306)에 제2 입력으로 공급된다. 곱셈기(306)의 출력은 M6을 통해 R6에 입력으로 공급된다. R6의 출력은 낮은 경로(310)에 대한 결과 출력(OutL)이 된다. 높은 경로(312)도 유사하게 구성되고 각 연결의 상세한 설명은 간결함을 위해 생략된다.
도 10은 다음 일반식을 구현하도록 덧셈/뺄셈 동작 모드를 위해 구성된 다기능 버터플라이 유닛(300)을 도시한다:
OutL =(InL ± Inadd L) mod q 및 OutH =(InH ± Inadd H) mod q.
제어 로직에 의해 발행된 제어 신호는 낮은 및 높은 경로(310 및 312)가 일반적으로 모듈러 곱셈기(306 및 308)를 우회하도록 표준 버터플라이 모드와 유사하게 버터플라이 유닛(300)의 멀티플렉서를 구성한다. 낮은 및 높은 경로(310 및 312)는 또한 교차 결합을 구현하지 않는다. 또한, 덧셈/뺄셈 모드의 경우, 추가의 입력(Inadd_L 및 Inadd_H)이 레지스터(R8 및 R9)를 통해 각각의 모듈러 덧셈기/뺄셈기 유닛(302 및 304)에 공급된다.
도 11은 다음 일반식을 구현하기 위해 행렬 곱셈 동작 모드를 위해 구성된 다기능 버터플라이 유닛(300)을 도시한다:
OutL =(OutL + InL x TL) mod q 및 OutH = (OutH + InH x TH) mod q.
이러한 구성은 모듈러 덧셈기/뺄셈기 유닛(302 및 304)을 덧셈기로서 사용하고 경로를 교차 결합시키지 않고 낮은 및 높은 경로(310 및 312)의 곱셈기 유닛(306 및 308)을 사용하는 곱셈 및 누산 기능을 실현한다. 낮은 경로(310)는 R4를 통해 공급되는 트위들 팩터 입력(TL)과 곱셈을 위해 M4를 통해 레지스터(R2)에 입력(InL)을 공급하는 것을 포함한다. 덧셈기(302)는 M2를 통해 곱셈기(306)의 출력을 수신하고 또한 M0을 통해 R0으로 피드백되는 자체 출력을 수신한다. 덧셈기 출력은 M6을 통해 R6으로 공급되고, 여기서 출력은 출력(OutL)으로 제공된다. 높은 경로(312)는 유사하게 구성된다.
도 12는 다음 일반식을 구현하도록 복사 동작 모드를 위해 구성된 다기능 버터플라이 유닛(300)을 도시한다:
OutL = InL 및 OutH = InH.
본질적으로, 복사 모드는 입력(InL 및 InH)을 출력(OutL 및 OutH)에 직접 전달할 때 모듈러 덧셈기/뺄셈기(302 및 304) 및 모듈러 곱셈기를 우회하는 것을 포함한다.
전술한 FHE 시스템은 제3자 데이터의 처리를 수반할 수 있는 일반적인 컴퓨팅 및/또는 서버 플랫폼에 동반 하드웨어 자원을 제공한다. 이러한 환경에서, 하나 이상의 HPU 집적 회로 칩은 서버 동작과 동시에 발생할 수 있는 집중된 동형 처리 작업을 수행하기 위해 코-프로세서 또는 하드웨어 가속기로서 하나 이상의 서버 유닛에 설치될 수 있다. 이러한 특정 작업을 처리하도록 구성된 HPU를 사용하면 서버마다 작업하기 위해 서버 처리 자원이 보존 및/또는 해제될 수 있다.
상기 내용은 기본적으로 완전 동형 상황에서 실시형태를 설명하지만, 본 명세서에 제시된 다양한 개념은 부분 동형 상황에서도 사용될 수 있다. 예를 들어, 처리량이 많은 응용의 경우 페일리어 암호화 시스템(Paillier Cryptosystem)과 같이 부분 동형 암호화 시스템을 지원하기 위해 현재 제안된 디자인에 추가 재구성 가능성을 추가할 수 있다. 페일리어 암호화 시스템과 같은 부분 동형 암호화 방식은 일반적으로 쇤하게-슈트라센(Schnhage-Strassen), 카라추바(Karatsuba) 또는 툼-쿡(Toom-Cook) 알고리즘을 사용하여 구현될 수 있는 큰 정수 곱셈기를 수반한다. 일반성을 잃지 않고, 위에서 설명한 HPU 하드웨어에 이러한 알고리즘을 인스턴스화하는 예로서, 쇤하게-슈트라센 알고리즘은 고속 다항식 곱셈을 사용하여 고속 정수 곱셈을 수행한다. 2개의 입력 숫자 "a"와 "b"에 대해 큰 정수 곱셈을 수행하기 위해 먼저 본 알고리즘으로부터 발생할 수 있는 가장 큰 정수를 계산한 다음, 오버플로를 피하기 위해 가장 큰 가능한 결과보다 더 큰 정수 "w"를 선택한다. 그런 다음,"a"와"b"를 다음과 같이"w"비트의"m"개의 그룹으로 나눈다.
.
여기서 x = 2w라고 하면, 이전의 수식은 등가적으로 다음 수식으로 된다:
.
그리고 나서 다음 수식으로 될 수 있다:
상기 수식은, 본 명세서에 기술되고 도 13에 부분 동형 상황으로 도시된 수치 이론 변환(NTT) 엔진과 같은 NTT 유닛을 사용하여 효율적으로 계산될 수 있다. 입력 수 "a" 및 "b"는 각 NTT 유닛(1302 및 1304)으로 공급된다. 수는 1306에서 곱셈 동작을 받은 후 1308에서 INTT 동작을 받는다. 그 결과, 캐리(carry) 동작이 1310에서 수행되어 결과 "c"가 달성된다.
전술한 쇤하게-슈트라센 알고리즘은 입력 정수를 더 작은 부분들로 분할하고 각 부분에 인접한 다항식 계수를 저장함으로써 본 명세서에 기술된 NTT 엔진을 사용하여 효율적으로 구현될 수 있다. 그 후, NTT 변환은 두 다항식에 모두 적용될 수 있고, 계수 방식 곱셈은 변환된 다항식에 수행된다. 마지막으로 결과는 계수 표현으로 다시 변환되고 최종 캐리 전파가 수행된다.
이러한 구현은 예를 들어, 특히 안전 투표 시스템, 블록 체인, 안전한 계약, 특정 다자 계산(multi-party computing: MPC) 알고리즘 및 암호 화폐에서 발견되는 것과 같은 광범위한 중요한 응용을 가속화하는데 유용할 수 있다.
이 기술 분야에 통상의 지식을 가진 자라면 전술한 아키텍처가 단일 집적 회로 칩 상에서 동형 암호 처리 기능을 수행하는 계산 시간을 상당히 감소시킨다는 것을 이해할 수 있을 것이다. 또한 효율적인 메모리 활용을 통해 칩의 크기와 전력 소비가 최소화된다.
전술한 회로의 이러한 데이터 및/또는 명령 기반 표현은 하나 이상의 컴퓨터 판독 가능 매체를 통해 컴퓨터 시스템 내에서 수신될 때, 네트-리스트(net-list) 생성 프로그램, 플레이스 앤 루트(place and route) 프로그램 등을 포함하지만 이로 제한되지 않는 하나 이상의 다른 컴퓨터 프로그램의 실행과 연계하여 컴퓨터 시스템 내의 처리 엔티티(예를 들어, 하나 이상의 프로세서)에 의해 처리되는 것에 의해 이러한 회로의 표현 또는 물리적 표현의 이미지가 생성될 수 있을 것이다. 이러한 표현 또는 이미지는 예를 들어 장치 제조 공정에서 회로의 다양한 구성 요소를 형성하는데 사용되는 하나 이상의 마스크를 생성하는 것에 의해 이후 장치 제조에 사용될 수 있다.
전술한 설명 및 첨부 도면에서, 특정 용어 및 도면 부호는 본 발명의 철저한 이해를 제공하기 위해 제시되었다. 일부 경우에, 용어 및 부호는 본 발명을 실시하는데 요구되지 않는 특정 세부 사항을 포함할 수 있다. 예를 들어, 특정 개수의 비트, 신호 경로 폭, 시그널링 또는 동작 주파수, 컴포넌트 회로 또는 장치 등에서 임의의 것이 대안적인 실시형태에서 전술한 것과 상이할 수 있다. 또한, 다중 전도체 신호 링크로서 도시되거나 설명된 회로 요소들 또는 회로 블록들 간의 상호 연결은 대안적으로 단일 전도체 신호 링크일 수 있고, 단일 전도체 신호 링크는 대안적으로 다중 전도체 신호 링크일 수 있다. 단일 종단인 것으로 도시되거나 기술된 신호 및 시그널링 경로는 또한 차동일 수 있으며, 그 역도 마찬가지이다. 유사하게, 활성 하이 또는 활성 로우 논리 레벨을 갖는 것으로 설명되거나 도시된 신호는 대안적인 실시형태에서 반대 논리 레벨을 가질 수 있다. 집적 회로 장치 내의 컴포넌트 회로부는 금속 산화물 반도체(MOS) 기술, 바이폴라 기술, 또는 논리 및 아날로그 회로가 구현될 수 있는 임의의 다른 기술을 사용하여 구현될 수 있다. 용어와 관련하여, 특정 상태를 나타내기 위해 신호가 낮은 또는 높은 논리 상태로 구동될 때(또는 높은 논리 상태로 충전되거나 낮은 논리 상태로 방전될 때) 신호가 "선언된다"고 불린다. 역으로, 신호가 선언된 상태가 아닌 다른 상태(높은 논리 상태 또는 낮은 논리 상태, 또는 신호 구동 회로가 개방 드레인 또는 개방 컬렉터 상태와 같은 높은 임피던스 상태로 전이될 때 발생될 수 있는 부동(floating) 상태를 포함함)로 구동(또는 충전 또는 방전)되는 것을 나타내기 위해 신호가 "선언 해제된다"고 불린다. 신호 구동 회로는 신호 구동 회로가 신호 구동 회로와 신호 수신 회로 사이에 결합된 신호 라인에 신호를 선언(또는 명시적으로 문맥에 의해 언급되거나 지시된 경우에 선언 해제)할 때 신호를 신호 수신 회로에 "출력"한다고 불린다. 신호 라인은 신호가 신호 라인에 선언되면 "활성화된다"라고 불리고, 신호가 선언 해제되면 "비활성화된다"라고 불린다. 추가적으로, 신호 이름에 첨부된 접두 부호 "/"는 신호가 활성 로우 신호임(즉, 선언된 상태가 논리 로우 상태임)을 나타낸다. 신호 이름 위에 있는 라인(예를 들어, )은 또한 활성 로우 신호를 나타내는데 사용된다. "결합된"이라는 용어는 본 명세서에서 하나 이상의 개재 회로 또는 구조를 통한 연결뿐만 아니라 직접 연결을 표현하기 위해 사용된다. 집적 회로 장치 "프로그래밍"은, 예를 들어 호스트 명령에 응답하여 장치 내의 레지스터 또는 다른 저장 회로에 제어 값을 로딩하고 이에 따라 장치의 동작 양태를 제어하고, 일회 프로그래밍 동작(예를 들어, 장치 생산 동안 구성 회로 내 퓨즈를 끊는 동작)을 통해 장치 구성을 수립하거나 또는 장치의 동작 양태를 제어하고, 그리고/또는 장치의 하나 이상의 선택된 핀(pin) 또는 다른 접촉 구조를 기준 전압 라인에 연결(이는 또한 스트래핑(strapping)이라고도 함)하여 장치의 특정 장치 구성 또는 동작 양태를 수립하는 것을 포함할 수 있으나 이로 제한되는 것은 아니다. "예시적인"이라는 용어는 선호도 또는 요구 조건을 나타내는 것이 아니라 일례를 표현하는데 사용된다.
일 실시형태에 따르면, HPU 칩은 컴퓨터 프로세서에 연결되는 컴퓨터 카드, USB 스틱 형태 또는 임의의 다른 형태로 시스템에 장착될 수 있다.
본 명세서에 개시된 실시형태의 다양한 양태 및 특징은 예를 들어 다음의 번호가 매겨진 항으로 제시되지만 이로 제한되는 것은 아니다:
1. 집적 회로(IC) 동형 프로세서 칩으로서,
적어도 하나의 프로세서 슬라이스를 포함하되, 상기 슬라이스는,
로컬 제어 회로부;
상기 로컬 제어 회로부에 응답하여 동형 암호화를 사용하여 암호화된 데이터에 동작을 수행하기 위해 다수의 모드에서 동작하는 수치 이론 변환(Numeric theoretic Transform: NTT) 버터플라이 유닛으로서, 각 모드는 상기 NTT 버터플라이 유닛의 상이한 구성과 관련된, 상기 NTT 버터플라이 유닛; 및
상기 제어 회로부 및 상기 NTT 버터플라이 유닛에 연결된 온칩 메모리를 포함하는, IC 동형 프로세서 칩.
2. 제1항에 있어서, 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 완전 동형 암호화를 수반하는 동작을 위해 다수의 모드에서 동작하는, IC 동형 프로세서 칩.
3. 제1항에 있어서, 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 부분 동형 암호화를 포함하는 동작을 위해 다수의 모드에서 동작하는, IC 동형 프로세서 칩.
4. 제1항에 있어서,
상기 NTT 버터플라이 유닛을 위한 제1 구성은 제1 암호문(Ctxt) 기능을 수행하기 위해 제1 회로부를 사용하고;
상기 NTT 버터플라이 유닛을 위한 제2 구성은 제2 Ctxt 기능을 수행하기 위해 상기 제1 회로부의 적어도 일부를 재사용하는, IC 동형 프로세서 칩.
5. 제4항에 있어서,
상기 제1 회로부는 암호문(Ctxt) 덧셈 기능을 수행하고;
상기 제2 Ctxt 기능은 Ctxt 곱셈 기능을 포함하는, IC 동형 프로세서 칩.
6. 제5항에 있어서,
상기 제1 회로부는 모듈러 덧셈기를 포함하는, IC 동형 프로세서 칩.
7. 제6항에 있어서,
상기 모듈러 덧셈기는 조합 모듈러 덧셈기를 포함하는, IC 동형 프로세서 칩.
8. 제6항에 있어서,
상기 모듈러 덧셈기는 순차 모듈러 덧셈기를 포함하는, IC 동형 프로세서 칩.
9. 제5항에 있어서,
상기 제2 구성은 모듈러 곱셈기를 포함하는 제2 회로부를 포함하는, IC 동형 프로세서 칩.
10. 제9항에 있어서, 상기 모듈러 곱셈기는 병렬 정수 곱셈기를 포함하는, IC 동형 프로세서 칩.
11. 제10항에 있어서, 상기 모듈러 곱셈기는,
모듈러 감소 유닛을 더 포함하는, IC 동형 프로세서 칩.
12. 제1항에 있어서, 상기 IC 동형 프로세서는 다수의 프로세서 슬라이스를 포함하고, 상기 IC 동형 프로세서는,
상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하기 위해 마스터 제어 회로부를 더 포함하는, IC 동형 프로세서 칩.
13. 제12항에 있어서, 상기 로컬 제어 회로부는,
상기 메모리로부터 Ctxt 계수 값 세트를 검색하고;
상기 값 세트를 처리 파이프라인에 로딩하고;
적어도 하나의 Ctxt 동작을 수행하고; 그리고
상기 변환된 값을 목적지 메모리 위치에 저장하기 위해
상기 마스터 제어 회로부로부터 명령을 수신하는, IC 동형 프로세서 칩.
14. 제13항에 있어서, 상기 마스터 제어 회로부로부터의 명령은,
NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하는 명령을 더 포함하는, IC 동형 프로세서 칩.
15. 제14항에 있어서, 적어도 하나의 Ctxt 동작을 수행하기 위해 상기 마스터 제어 회로부로부터의 명령은,
덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 적어도 하나의 Ctxt 동작을 수행하기 위한 명령을 포함하는, IC 동형 프로세서 칩.
16. 제1항에 있어서,
상기 NTT 버터플라이 유닛은 단일 스테이지 유닛으로 구현되는, IC 동형 프로세서 칩.
17. 동형 암호화 시스템으로서,
집적 회로(IC) 동형 프로세서 칩;
상기 IC 동형 프로세서 칩 외부의 주 메모리;
상기 주 메모리와 상기 IC 동형 프로세서 칩 사이에 데이터를 전송하기 위한 데이터 경로; 및
상기 주 메모리와 상기 IC 동형 프로세서 칩 사이의 전송을 제어하는 제어 경로를 포함하되;
상기 IC 동형 프로세서 칩은,
상기 제어 경로를 통해 상기 주 메모리와 상기 IC 동형 프로세서 칩 사이의 데이터의 전송을 제어하기 위한 마스터 제어 회로부; 및
파이프라인 깊이에 대응하는 다수의 프로세서 슬라이스를 포함하고, 상기 다수의 프로세서 슬라이스 각각은,
로컬 제어 회로부;
상기 로컬 제어 회로부에 응답하여 동형 암호화를 사용하여 암호화된 데이터에 동작을 수행하기 위해 다수의 모드에서 동작하는 수치 이론 변환(NTT) 버터플라이 유닛으로서, 각 모드는 상기 NTT 버터플라이 유닛의 상이한 구성과 관련된, 상기 NTT 버터플라이 유닛; 및
상기 로컬 제어 회로부 및 상기 NTT 버터플라이 유닛에 결합된 온칩 메모리를 포함하는, 동형 암호화 시스템.
18. 제17항에 있어서, 상기 동형 암호화는 완전 동형 암호화를 포함하는, 동형 암호화 시스템.
19. 제17항에 있어서, 상기 동형 암호화는 부분 동형 암호화를 포함하는, 동형 암호화 시스템.
20. 제17항에 있어서, 상기 마스터 제어 회로부는,
상기 외부 메모리로부터 Ctxt 계수 값 세트를 검색하고;
상기 값 세트를 처리 파이프라인에 로딩하며;
적어도 하나의 Ctxt 동작을 수행하여 변환된 값을 생성하고; 그리고
상기 변환된 값을 목적지 메모리 위치에 저장하기 위해
상기 다수의 프로세서 슬라이스 각각에 대한 동작을 스케줄링하는, 동형 암호화 시스템.
21. 제20항에 있어서, 상기 마스터 제어 회로부로부터의 스케줄링된 동작은,
NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하기 위해
상기 다수의 프로세서 슬라이스 각각에 대한 스케줄링된 동작을 더 포함하는, 동형 암호화 시스템.
22. 제21항에 있어서, 상기 마스터 제어 회로부로부터의 스케줄링된 동작은,
덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 적어도 하나의 Ctxt 동작을 수행하기 위해
상기 다수의 프로세서 슬라이스 각각에 대한 스케줄링된 동작을 더 포함하는, 동형 암호화 시스템.
23. 제20항에 있어서,
상기 NTT 버터플라이 유닛 각각은 단일 스테이지 버터플라이를 포함하고;
주어진 NTT 변환 동작은 상기 NTT 버터플라이 유닛에 의해 log(n)-1개의 평가 단계를 포함하고, "n"은 계수 값과 관련된 다항식의 차수를 나타내는, 동형 암호화 시스템.
24. 수치 이론 변환(NTT) 버터플라이 회로로서,
높은 입력 워드 경로로서,
제1 덧셈기/뺄셈기,
제1 곱셈기, 및
상기 제1 덧셈기/뺄셈기 및 상기 제1 곱셈기에 결합되고, 상기 제1 덧셈기/뺄셈기 및 상기 제1 곱셈기를 선택적으로 우회하기 위한 각각의 우회 경로를 포함하는 제1 선택 회로부를 포함하는, 상기 높은 입력 워드 경로;
낮은 입력 워드 경로로서,
제2 덧셈기/뺄셈기,
제2 곱셈기, 및
상기 제2 덧셈기/뺄셈기 및 상기 제2 곱셈기에 결합되고, 상기 제2 덧셈기/뺄셈기 및 상기 제2 곱셈기를 선택적으로 우회하기 위한 각각의 우회 경로를 포함하는 제2 선택 회로부를 포함하는, 상기 낮은 입력 워드 경로를 포함하고;
상기 높은 입력 워드 경로와 상기 낮은 입력 워드 경로는 교차 결합되고, 상기 제1 및 제2 선택 회로부는 상이한 모드 제어 신호에 응답하여 상기 낮은 입력 워드 경로 및 상기 높은 입력 워드 경로를 상이한 논리 처리 유닛으로 재구성하는, NTT 버터플라이 회로.
25. 제24항에 있어서,
상기 NTT 버터플라이 회로를 위한 제1 구성은 암호문(Ctxt) 덧셈 기능을 수행하기 위해 제1 회로부를 사용하고;
상기 NTT 버터플라이 회로를 위한 제2 구성은 Ctxt 곱셈 기능을 수행하기 위해 상기 제1 회로부의 적어도 일부를 재사용하는, NTT 버터플라이 회로.
26. 제24항에 있어서,
상기 제1 및 제2 덧셈기/뺄셈기 각각은 조합 모듈러 덧셈기를 포함하는, NTT 버터플라이 회로.
27. 제24항에 있어서,
상기 제1 및 제2 곱셈기 각각은 병렬 정수 곱셈기를 포함하는, NTT 버터플라이 회로.
28. 제24항에 있어서,
상기 제1 및 제2 곱셈기 각각은 모듈러 감소 유닛을 더 포함하는, NTT 버터플라이 회로.
29. 제24항에 있어서,
상기 제1 및 제2 덧셈기/뺄셈기 및 곱셈기 각각은 관련된 임계 경로를 포함하고;
상기 관련된 임계 경로들 각각은 레지스터 회로부에 의해 경계가 정해지는, NTT 버터플라이 회로.
30. 제24항에 있어서,
상기 NTT 버터플라이 회로는 단일 스테이지 버터플라이로 실현되고;
주어진 NTT 변환 동작은 상기 NTT 버터플라이 회로에 의한 log(n)-1개의 평가 단계를 포함하고, "n"은 계수 값과 관련된 다항식의 차수를 나타내는, NTT 버터플라이 회로.
31. 동형 프로세서 집적 회로(IC) 칩에서 동작하는 방법으로서,
암호문(Ctxt) 심볼을 수치 이론 변환(NTT) 영역으로 변환하는 단계를 포함하고, 상기 변환하는 단계는, 주어진 프로세서 슬라이스에 대해,
로컬 제어 회로부를 사용하여 모드 제어 신호를 생성하는 단계로서, 상기 모드 제어 신호는 동형 암호화를 포함하는 다수의 동작 모드 중 하나에 대응하는, 상기 모드 제어 신호를 생성하는 단계; 및
상기 모드 제어 신호에 응답하여 NTT 버터플라이 유닛을 구성하는 단계를 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
32. 제31항에 있어서, 상기 동형 암호화는 완전 동형 암호화를 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
33. 제31항에 있어서, 상기 동형 암호화는 부분 동형 암호화를 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
34. 제31항에 있어서, 상기 모드 제어 신호는 제1 동작 모드에 대응하는 제1 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은,
Ctxt 덧셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성하는 것에 의해
상기 제1 모드 제어 신호에 응답하는, 동형 프로세서 IC 칩에서 동작하는 방법.
35. 제34항에 있어서, 상기 모드 제어 신호는 제2 동작 모드에 대응하는 제2 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은,
Ctxt 곱셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성하고; 그리고
상기 곱셈 기능을 수행하기 위해 상기 덧셈 기능에 사용된 상기 NTT 버터플라이 유닛의 일부를 재사용하는 것에 의해
상기 제2 모드 제어 신호에 응답하는, 동형 프로세서 IC 칩에서 동작하는 방법.
36. 제31항에 있어서, 상기 변환하는 단계는,
다수의 프로세서 슬라이스를 병렬로 동작시키는 것을 포함하고, 각각의 프로세서 슬라이스는 상기 로컬 제어 회로부의 사본 및 상기 NTT 버터플라이 유닛의 사본을 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
37. 제36항에 있어서,
상기 다수의 프로세서 슬라이스에 의해 수행되는 다수의 동작을 파이프라이닝하는 단계를 더 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
38. 제37항에 있어서,
상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하는 단계를 더 포함하고, 상기 인터페이싱은 마스터 제어 회로부에 의해 제어되는, 동형 프로세서 IC 칩에서 동작하는 방법.
39. 제38항에 있어서, 상기 마스터 제어 회로부는 상기 다수의 슬라이스의 로컬 제어 회로부에 대한 명령을 생성하고, 상기 로컬 제어 회로부는, 상기 명령에 응답하여,
상기 메모리로부터 Ctxt 계수 값의 세트를 검색하는 단계;
상기 값 세트를 처리 파이프라인에 로딩하는 단계;
적어도 하나의 Ctxt 동작을 수행하여 변환된 값을 생성하는 단계; 및
상기 변환된 값을 상기 외부 메모리의 목적지 위치에 저장하는 단계를 포함하는 단계를 수행하는, 동형 프로세서 IC 칩에서 동작하는 방법.
40. 제39항에 있어서, NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하는 단계를 더 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
41. 제40항에 있어서, 상기 적어도 하나의 Ctxt 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성되는 그룹 중에서 선택된, 동형 프로세서 IC 칩에서 동작하는 방법.
42. 동형 암호화 시스템에서 동작하는 방법으로서,
구성 가능한 수치 이론 변환(NTT) 버터플라이 로직을 포함하는 동형 프로세서 집적 회로(IC) 칩을 제공하는 단계;
상기 동형 프로세서 IC 칩을 데이터 경로 및 제어 경로를 통해 외부 메모리와 인터페이싱하는 단계; 및
암호문(Ctxt) 심볼을 NTT 영역으로 변환하는 단계를 포함하고, 상기 변환하는 단계는, 주어진 프로세서 슬라이스에 대해,
로컬 제어 회로부를 사용하여 모드 제어 신호를 생성하는 단계로서, 상기 모드 제어 신호는 동형 암호화를 포함하는 다수의 동작 모드 중 하나에 대응하는, 상기 모드 제어 신호를 생성하는 단계, 및
상기 모드 제어 신호에 응답하여 NTT 버터플라이 유닛을 구성하는 단계를 포함하는, 동형 암호화 시스템에서 동작하는 방법.
43. 제42항에 있어서, 상기 동형 암호화는 완전 동형 암호화를 포함하는, 동형 암호화 시스템에서 동작하는 방법.
44. 제42항에 있어서, 상기 동형 암호화는 부분 동형 암호화를 포함하는, 동형 암호화 시스템에서 동작하는 방법.
44. 제42항에 있어서, 상기 모드 제어 신호는 제1 동작 모드에 대응하는 제1 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은,
Ctxt 덧셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성하는 것에 의해
상기 제1 모드 제어 신호에 응답하는, 동형 암호화 시스템에서 동작하는 방법.
45. 제44항에 있어서, 상기 모드 제어 신호는 제2 동작 모드에 대응하는 제2 모드 제어 신호를 포함하고, 상기 NTT 버터플라이 유닛은,
Ctxt 곱셈 기능을 수행하도록 상기 NTT 버터플라이 유닛을 구성하고; 그리고
상기 곱셈 기능을 수행하기 위해 상기 덧셈 기능에 사용된 상기 NTT 버터플라이 유닛의 일부를 재사용하는 것에 의해
상기 제2 모드 제어 신호에 응답하는, 동형 암호화 시스템에서 동작하는 방법.
46. 제42항에 있어서, 상기 변환하는 단계는,
다수의 프로세서 슬라이스를 병렬로 동작시키는 단계를 포함하고, 각각의 프로세서 슬라이스는 상기 로컬 제어 회로부의 사본 및 상기 NTT 버터플라이 유닛의 사본을 포함하는, 동형 암호화 시스템에서 동작하는 방법.
47. 제46항에 있어서,
상기 다수의 프로세서 슬라이스에 의해 수행되는 다수의 동작을 파이프라이닝하는 단계를 더 포함하는, 동형 암호화 시스템에서 동작하는 방법.
48. 제47항에 있어서,
상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하는 단계를 더 포함하고, 상기 인터페이싱은 마스터 제어 회로부에 의해 제어되는, 동형 암호화 시스템에서 동작하는 방법.
49. 제48항에 있어서, 상기 마스터 제어 회로부는 상기 다수의 슬라이스의 로컬 제어 회로부에 대한 명령을 생성하고, 상기 로컬 제어 회로부는 상기 명령에 응답하여,
상기 메모리로부터 Ctxt 계수 값의 세트를 검색하는 단계;
상기 값 세트를 처리 파이프라인에 로딩하는 단계;
적어도 하나의 Ctxt 동작을 수행하여 변환된 값을 생성하는 단계; 및
상기 변환된 값을 상기 외부 메모리의 목적지 위치에 저장하는 단계를 포함하는 단계를 수행하는, 동형 암호화 시스템에서 동작하는 방법.
50. 제49항에 있어서, NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하는 단계를 더 포함하는, 동형 암호화 시스템에서 동작하는 방법.
51. 제50항에 있어서, 상기 적어도 하나의 Ctxt 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 선택된, 동형 암호화 시스템에서 동작하는 방법.
52. 수치 이론 변환(NTT) 버터플라이 회로에서 동작하는 방법으로서, 상기 회로는 높은 입력 워드 경로 및 낮은 입력 워드 경로를 포함하고, 상기 높은 입력 워드 경로는 제1 덧셈기/뺄셈기 및 제1 곱셈기를 포함하고, 상기 낮은 입력 워드 경로는 제2 덧셈기/뺄셈기 및 제2 곱셈기를 포함하고, 상기 방법은,
상기 제2 덧셈기/뺄셈기 및 상기 제2 곱셈기를 선택적으로 우회하는 단계; 및
상이한 모드 제어 신호에 응답하여 상기 낮은 및 높은 입력 워드 경로를 상이한 논리 처리 유닛으로 재구성하는 단계를 포함하는, NTT 버터플라이 회로에서 동작하는 방법.
53. 제52항에 있어서, 상기 재구성하는 단계는,
제1 모드 제어 신호를 수신하는 것에 응답하여 암호문(Ctxt) 덧셈 기능을 수행하도록 상기 NTT 버터플라이 회로를 구성하는 단계; 및
제2 모드 제어 신호를 수신하는 것에 응답하여 Ctxt 곱셈 기능을 수행하도록 상기 NTT 버터플라이 회로를 구성하는 단계를 포함하는, NTT 버터플라이 회로에서 동작하는 방법.
54. 제52항에 있어서,
상기 제1 및 제2 덧셈기/뺄셈기 각각에 대해 조합 모듈러 덧셈기를 사용하는 단계를 더 포함하는, NTT 버터플라이 회로에서 동작하는 방법.
55. 제52항에 있어서,
상기 제1 및 제2 곱셈기 각각에 대해 병렬 정수 곱셈기를 사용하는 단계를 더 포함하는, NTT 버터플라이 회로에서 동작하는 방법.
56. 제52항에 있어서, 상기 제1 및 제2 곱셈기 각각은 감소 유닛을 포함하고, 상기 방법은,
각 감소 유닛을 동작시키는 단계를 더 포함하는, NTT 버터플라이 유닛에서 동작하는 방법.
57. 제52항에서, 상기 NTT 버터플라이 회로는 단일 스테이지 버터플라이로서 실현되고, 상기 변환하는 동작은,
log(n)-1개의 평가 단계를 통해 상기 NTT 버터플라이 회로를 동작시키는 것을 포함하고, "n"은 계수 값과 관련된 다항식의 차수를 나타내는, NTT 버터플라이 유닛.
58. 암호문(Ctxt) 심볼을 수치 이론 변환(NTT) 영역으로 변환하기 위한 동형 프로세서 집적 회로(IC) 칩으로서, 상기 동형 프로세서 IC 칩은,
적어도 하나의 프로세서 슬라이스를 포함하되, 상기 슬라이스는,
로컬 제어 회로부;
NTT 버터플라이 유닛; 및
상기 제어 회로부와 상기 NTT 버터플라이 유닛에 결합된 온칩 메모리를 포함하고, 상기 온칩 메모리는 동형 처리 기능을 위해 별도로 액세스 가능한 저장 유닛으로 분할되고, 상기 온칩 메모리는,
다수의 입력/출력(I/O) 저장 유닛,
비트로 분해된 다항식 저장 유닛, 및
트위들 팩터 메모리 유닛을 포함하는, 동형 프로세서 IC 칩.
59. 제58항에 있어서,
상기 I/O 저장 유닛들 중 제1 저장 유닛은 암호문(Ctxt)을 행 단위로 저장하고;
상기 I/O 저장 유닛들 중 제2 저장 유닛은 Ctxt를 열 단위로 저장하는, 동형 프로세서 IC 칩.
60. 제59항에 있어서,
상기 I/O 저장 유닛들 중 제3 저장 유닛은 상기 제1 저장 유닛으로부터의 제1 Ctxt와 상기 제2 저장 유닛으로부터의 제2 Ctxt를 곱한 것을 포함하는 곱셈 동작으로 인한 출력 Ctxt를 저장하는, 동형 프로세서 IC 칩.
61. 제60항에 있어서,
상기 제2 메모리 유닛에 결합된 메모리 카운터를 더 포함하는, 동형 프로세서 IC 칩.
62. 제60항에 있어서,
상기 I/O 저장 유닛들 중 제1 저장 유닛의 주어진 행의 Ctxt의 단일 행의 변환은 상기 I/O 저장 유닛들 중 제3 저장 유닛에 대응하는 결과 행을 초래하는, 동형 프로세서 IC 칩.
63. 제58항에 있어서,
상기 다수의 I/O 저장 유닛들 중 하나의 저장 유닛은 외부 메모리에 결합된 핑퐁 메모리로서 구성된, 동형 프로세서 IC 칩.
64. 제63항에 있어서, 상기 핑퐁 메모리는,
제1 메모리 동작을 수행하기 위한 제1 서브 어레이; 및
상기 제1 메모리 동작과 동시에 제2 동작을 수행하기 위한 제2 서브 어레이를 포함하는, 동형 프로세서 IC 칩.
65. 제63항에 있어서, 상기 온칩 메모리는 DRAM을 포함하는, 동형 프로세서 IC 칩.
66. 동형 프로세서 집적 회로(IC) 칩에서 동작하는 방법으로서,
온칩 메모리를 동형 처리 기능을 위해 개별적으로 액세스 가능한 저장 유닛으로 분할하는 단계로서, 상기 온칩 메모리는 다수의 입력/출력(I/O) 저장 유닛, 비트로 분해된 다항식 저장 유닛, 및 트위들 팩터 메모리 유닛을 포함하는, 상기 온칩 메모리를 분할하는 단계; 및
분할된 온칩 메모리에 결합된 구성 가능한 수치 이론 변환(NTT) 버터플라이 유닛으로 로딩된 값 세트에 적어도 하나의 암호문(Ctxt) 동작을 수행하는 단계를 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
67. 제66항에 있어서,
NTT 영역에서 대응하는 변환된 값을 생성하기 위해 상기 로딩된 값 세트를 변환하는 단계를 더 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
68. 제67항에 있어서, 상기 적어도 하나의 Ctxt 동작은 덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 선택된, 동형 프로세서 IC 칩에서 동작하는 방법.
69. 제67항에 있어서, 상기 변환하는 단계는,
상기 I/O 저장 유닛들 중 제1 저장 유닛으로부터 제1 암호문(Ctxt)을 행 단위로 판독하는 단계; 및
상기 I/O 저장 유닛들 중 제2 저장 유닛으로부터 제2 Ctxt를 열 단위로 판독하는 단계를 더 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
70. 제69항에 있어서, 상기 변환하는 단계는,
상기 제1 Ctxt와 상기 제2 Ctxt를 곱하여 결과 Ctxt를 생성하는 단계; 및
상기 결과 Ctxt를 상기 I/O 저장 유닛들 중 제3 저장 유닛에 기록하는 단계를 더 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
71. 제66항에 있어서, 상기 다수의 I/O 저장 유닛 중 하나의 저장 유닛은 핑퐁 메모리 유닛으로서 구성된 각각의 제1 및 제2 서브 어레이를 포함하고, 상기 방법은,
제1 동작을 수행하기 위해 상기 제1 서브 어레이를 동작시키는 단계; 및
상기 제1 동작과 동시에 제2 동작을 수행하기 위해 상기 제2 서브 어레이를 동작시키는 단계를 더 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
72. 동형 프로세서 집적 회로(IC) 칩에서 동작하는 방법으로서,
제1 온칩 메모리 유닛으로부터 제1 암호문(Ctxt)을 검색하는 단계로서, 상기 제1 Ctxt는 행 단위 판독 동작을 통해 검색된, 상기 제1 암호문을 검색하는 단계;
상기 제1 Ctxt를 수치 이론 변환(NTT) 영역으로 변환하는 단계;
제2 온칩 메모리 유닛으로부터 제2 암호문(Ctxt)을 검색하는 단계로서, 상기 제2 Ctxt는 열 단위 판독 동작을 통해 검색된, 상기 제2 암호문을 검색하는 단계;
상기 제2 Ctxt를 NTT 영역으로 변환하는 단계;
변환된 제1 Ctxt를 변환된 제2 Ctxt와 곱하여 결과 Ctxt를 생성하는 단계; 및
상기 결과 Ctxt를 제3 메모리 유닛에 저장하는 단계를 포함하는, 동형 프로세서 IC 칩에서 동작하는 방법.
본 발명은 특정 실시형태를 참조하여 설명되었지만, 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음이 명백하다. 예를 들어, 적어도 적용 가능한 경우, 임의의 실시형태의 특징 또는 양태는 실시형태 중 임의의 다른 실시형태와 조합하여 또는 대응하는 특징 또는 양태 대신에 적용될 수 있다. 따라서, 본 명세서 및 도면은 본 발명을 제한하는 의미가 아니라 예시하는 의미로 고려되어야 한다.
Claims (23)
- 집적 회로(IC) 동형 프로세서 칩으로서,
적어도 하나의 프로세서 슬라이스(processor slice)를 포함하되, 상기 슬라이스는,
로컬 제어 회로부(local control circuitry);
상기 로컬 제어 회로부에 응답하여, 동형 암호화(homomorphic encryption)를 사용하여 암호화된 데이터에 동작(operation)을 수행하기 위해 다수의 모드에서 동작하는 수치 이론 변환(numeric theoretic transform: NTT) 버터플라이 유닛(butterfly unit)으로서, 각 모드는 상기 NTT 버터플라이 유닛의 상이한 구성과 관련된, 상기 수치 이론 변환 버터플라이 유닛; 및
상기 제어 회로부 및 상기 NTT 버터플라이 유닛에 결합된 온칩 메모리(on-chip memory)를 포함하는, IC 동형 프로세서 칩. - 제1항에 있어서, 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 완전 동형 암호화를 포함하는 동작을 위해 다수의 모드에서 동작하는, IC 동형 프로세서 칩.
- 제1항에 있어서, 상기 NTT 버터플라이 유닛은 상기 로컬 제어 회로부에 응답하여 부분 동형 암호화를 포함하는 동작을 위해 다수의 모드에서 동작하는, IC 동형 프로세서 칩.
- 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 NTT 버터플라이 유닛을 위한 제1 구성은 제1 암호문(Ctxt) 기능을 수행하기 위해 제1 회로부를 사용하고; 그리고
상기 NTT 버터플라이 유닛을 위한 제2 구성은 제2 Ctxt 기능을 수행하기 위해 상기 제1 회로부의 적어도 일부를 재사용하는, IC 동형 프로세서 칩. - 제4항에 있어서,
상기 제1 회로부는 암호문(Ctxt) 덧셈 기능을 수행하고; 그리고
상기 제2 Ctxt 기능은 Ctxt 곱셈 기능을 포함하는, IC 동형 프로세서 칩. - 제5항에 있어서,
상기 제1 회로부는 모듈러 덧셈기(modular adder)를 포함하는, IC 동형 프로세서 칩. - 제6항에 있어서,
상기 모듈러 덧셈기는 조합 모듈러 덧셈기(combinational modular adder)를 포함하는, IC 동형 프로세서 칩. - 제6항에 있어서,
상기 모듈러 덧셈기는 순차 모듈러 덧셈기(sequential modular adder)를 포함하는, IC 동형 프로세서 칩. - 제5항에 있어서,
상기 제2 구성은 모듈러 곱셈기를 포함하는 제2 회로부를 포함하는, IC 동형 프로세서 칩. - 제9항에 있어서, 상기 모듈러 곱셈기는 병렬 정수 곱셈기를 포함하는, IC 동형 프로세서 칩.
- 제10항에 있어서, 상기 모듈러 곱셈기는,
모듈러 감소 유닛(modular reduction unit)을 더 포함하는, IC 동형 프로세서 칩. - 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 IC 동형 프로세서는 다수의 프로세서 슬라이스를 포함하고, 상기 IC 동형 프로세서는,
상기 다수의 프로세서 슬라이스를 외부 프로세서 인터페이스를 통해 외부 메모리와 인터페이싱하기 위해 마스터 제어 회로부를 더 포함하는, IC 동형 프로세서 칩. - 제12항에 있어서, 상기 로컬 제어 회로부는,
상기 메모리로부터 Ctxt 계수 값(coefficient value) 세트를 검색하고;
상기 값 세트를 처리 파이프라인(processing pipeline)에 로딩하고;
적어도 하나의 Ctxt 동작을 수행하여 변환된 값을 생성하고; 그리고
상기 변환된 값을 목적지 메모리 위치에 저장하기 위해
상기 마스터 제어 회로부로부터 명령을 수신하는, IC 동형 프로세서 칩. - 제13항에 있어서, 상기 마스터 제어 회로부로부터의 상기 명령은,
NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환을 수행하기 위한 명령을 더 포함하는, IC 동형 프로세서 칩. - 제13항 또는 제14항에 있어서, 적어도 하나의 Ctxt 동작을 수행하기 위한 상기 마스터 제어 회로부로부터의 상기 명령은,
덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등(equality) 동작, 더 작음(smaller than) 동작, 더 큼(larger than) 동작, 엔티티(entity) 동작, 복사(copy) 동작 및 부정(negation) 동작으로 구성된 그룹 중에서 적어도 하나의 Ctxt 동작을 수행하기 위한 명령을 포함하는, IC 동형 프로세서 칩. - 제1항 내지 제15항 중 어느 한 항에 있어서,
상기 NTT 버터플라이 유닛은 단일 스테이지 유닛으로 실현된, IC 동형 프로세서 칩. - 동형 암호화 시스템으로서,
집적 회로(IC) 동형 프로세서 칩;
상기 IC 동형 프로세서 칩 외부의 주 메모리(main memory);
상기 주 메모리와 상기 IC 동형 프로세서 칩 사이에 데이터를 전송하기 위한 데이터 경로; 및
상기 주 메모리와 상기 IC 동형 프로세서 칩 사이의 전송을 제어하는 제어 경로를 포함하되;
상기 IC 동형 프로세서 칩은,
상기 제어 경로를 통해 상기 주 메모리와 상기 IC 동형 프로세서 칩 사이의 데이터의 전송을 제어하기 위한 마스터 제어 회로부; 및
파이프라인 깊이에 대응하는 다수의 프로세서 슬라이스를 포함하고, 상기 다수의 프로세서 슬라이스 각각은,
로컬 제어 회로부;
상기 로컬 제어 회로부에 응답하여 동형 암호화를 사용하여 암호화된 데이터에 동작을 수행하기 위해 다수의 모드에서 동작하는 수치 이론 변환(NTT) 버터플라이 유닛으로서, 각 모드는 상기 NTT 버터플라이 유닛의 상이한 구성과 관련된, 상기 NTT 버터플라이 유닛; 및
상기 로컬 제어 회로부 및 상기 NTT 버터플라이 유닛에 결합된 온칩 메모리를 포함하는, 동형 암호화 시스템. - 제17항에 있어서, 상기 동형 암호화는 완전 동형 암호화를 포함하는, 동형 암호화 시스템.
- 제17항에 있어서, 상기 동형 암호화는 부분 동형 암호화를 포함하는, 동형 암호화 시스템.
- 제17항 내지 제19항 중 어느 한 항에 있어서, 상기 마스터 제어 회로부는,
상기 외부 메모리로부터 Ctxt 계수 값 세트를 검색하고;
상기 값 세트를 처리 파이프라인에 로딩하고;
적어도 하나의 Ctxt 동작을 수행하고; 그리고
상기 변환된 값을 목적지 메모리 위치에 저장하기 위해
상기 다수의 프로세서 슬라이스 각각에 대한 동작을 스케줄링하는, 동형 암호화 시스템. - 제20항에 있어서, 상기 마스터 제어 회로부로부터의 스케줄링된 동작은,
NTT 영역에서 대응하는 변환된 값을 생성하기 위해 로딩된 값 세트에 NTT 변환 동작을 수행하기 위해 상기 다수의 프로세서 슬라이스 각각에 대해 스케줄링된 동작을 더 포함하는, 동형 암호화 시스템. - 제20항 또는 제21항에 있어서, 상기 마스터 제어 회로부로부터의 스케줄링된 동작은,
덧셈 동작, 뺄셈 동작, 곱셈 동작, XOR 동작, XNOR 동작, AND 동작, 상등 동작, 더 작음 동작, 더 큼 동작, 엔티티 동작, 복사 동작 및 부정 동작으로 구성된 그룹 중에서 적어도 하나의 Ctxt 동작을 수행하기 위해
상기 다수의 프로세서 슬라이스 각각에 대해 스케줄링된 동작을 더 포함하는, 동형 암호화 시스템. - 제21항에 있어서,
상기 NTT 버터플라이 유닛 각각은 단일 스테이지 버터플라이를 포함하고; 그리고
주어진 NTT 변환 동작은 상기 NTT 버터플라이 유닛에 의한 log(n)-1개의 평가 단계를 포함하고, "n"은 계수 값과 관련된 다항식의 차수를 나타내는, 동형 암호화 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762484304P | 2017-04-11 | 2017-04-11 | |
US62/484,304 | 2017-04-11 | ||
PCT/IB2017/054919 WO2019053486A1 (en) | 2017-04-11 | 2017-08-11 | HOMOMORPHIC TREATMENT UNIT (HPU) FOR ACCELERATING SECURE CALCULATIONS ACCORDING TO HOMOMORPHIC ENCRYPTION |
KR1020197032545A KR102614616B1 (ko) | 2017-04-11 | 2017-08-11 | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197032545A Division KR102614616B1 (ko) | 2017-04-11 | 2017-08-11 | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230172043A true KR20230172043A (ko) | 2023-12-21 |
Family
ID=63711922
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237042861A KR20230172043A (ko) | 2017-04-11 | 2017-08-11 | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛 |
KR1020197032545A KR102614616B1 (ko) | 2017-04-11 | 2017-08-11 | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197032545A KR102614616B1 (ko) | 2017-04-11 | 2017-08-11 | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) |
Country Status (9)
Country | Link |
---|---|
US (5) | US10298385B2 (ko) |
EP (1) | EP3610382A4 (ko) |
JP (3) | JP7074363B2 (ko) |
KR (2) | KR20230172043A (ko) |
CN (1) | CN110892393B (ko) |
CA (2) | CA3065976A1 (ko) |
IL (1) | IL269959B1 (ko) |
SG (1) | SG11201909441XA (ko) |
WO (1) | WO2019053486A1 (ko) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110892393B (zh) * | 2017-04-11 | 2024-07-05 | 多伦多大学管理委员会 | 用于在同态加密下加速安全计算的同态处理单元(hpu) |
US11314506B2 (en) * | 2017-05-18 | 2022-04-26 | Nec Corporation | Secure computation device, comparison method, comparison program recording medium, and secure computation system |
US10778409B2 (en) * | 2017-12-15 | 2020-09-15 | Crypto Lab Inc. | Terminal device performing homomorphic encryption, server device processing ciphertext and methods thereof |
WO2019157503A1 (en) | 2018-02-12 | 2019-08-15 | Massachusetts Institute Of Technology | Systems and methods for providing secure communications using a protocol engine |
US10797856B2 (en) * | 2018-04-18 | 2020-10-06 | Fujitsu Limited | Outsourcing processing operations with homomorphic encryption |
US11032061B2 (en) * | 2018-04-27 | 2021-06-08 | Microsoft Technology Licensing, Llc | Enabling constant plaintext space in bootstrapping in fully homomorphic encryption |
FR3083885B1 (fr) * | 2018-07-10 | 2020-10-02 | Commissariat Energie Atomique | Circuit de generation de facteurs de rotation pour processeur ntt |
CN109474268B (zh) * | 2018-12-19 | 2024-02-06 | 北京比特大陆科技有限公司 | 电路结构、电路板和超算设备 |
EP3903300A4 (en) * | 2019-02-19 | 2022-09-07 | Massachusetts Institute Of Technology | CONFIGURABLE GRID CRYPTOGRAPHY PROCESSOR FOR THE QUANTUM SECURE INTERNET OF THINGS AND ASSOCIATED PROCEDURES |
US11221397B2 (en) * | 2019-04-05 | 2022-01-11 | Texas Instruments Incorporated | Two-dimensional FFT computation |
KR102306635B1 (ko) | 2019-10-10 | 2021-09-28 | 서울대학교산학협력단 | 재부팅없이 무한 연산이 가능한 동형 암호 기반의 동적 궤환 제어기의 구성 방법 |
US20230145760A1 (en) * | 2020-03-12 | 2023-05-11 | Crypto Lab Inc. | Method and device for calculating modular product |
CN111538945B (zh) * | 2020-04-24 | 2023-03-14 | 合肥工业大学 | 一种基于可重构碟算单元的运算结果快速校验系统 |
CN111538582A (zh) * | 2020-04-26 | 2020-08-14 | 中国科学技术大学 | 基于Intel QAT的同态加密卸载方法 |
CN111694540B (zh) * | 2020-05-06 | 2023-04-21 | 常熟理工学院 | 一种用于数论变换乘法的基64运算电路 |
CN111694541B (zh) * | 2020-05-06 | 2023-04-21 | 常熟理工学院 | 一种用于数论变换乘法的基32运算电路 |
CN111694542B (zh) * | 2020-05-06 | 2021-12-07 | 常熟理工学院 | 一种用于数论变换乘法的基16运算电路 |
US11671239B2 (en) | 2020-05-08 | 2023-06-06 | Samsung Electronics Co., Ltd. | Encryption method and apparatus based on homomorphic encryption using odd function property |
US20210351913A1 (en) * | 2020-05-08 | 2021-11-11 | Samsung Electronics Co., Ltd | Encryption method and apparatus using homomorphic encryption |
KR20210146513A (ko) * | 2020-05-27 | 2021-12-06 | 삼성전자주식회사 | 인공 지능 연산 반도체 장치 및 이를 포함하는 저장 장치 |
KR20220009643A (ko) | 2020-07-16 | 2022-01-25 | 삼성전자주식회사 | 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법 |
CN111901115B (zh) * | 2020-07-27 | 2022-03-18 | 合肥工业大学 | 一种多配置模式的simon算法加密电路 |
US20220094518A1 (en) * | 2020-09-18 | 2022-03-24 | Intel Corporation | Low circuit depth homomorphic encryption evaluation |
KR20220048225A (ko) * | 2020-10-12 | 2022-04-19 | 삼성전자주식회사 | 동형 연산 가속기 및 이를 포함하는 동형 연산 수행 장치 |
US20240039694A1 (en) * | 2020-11-24 | 2024-02-01 | Agency For Science, Technology And Research | Device for processing homomorphically encrypted data |
KR20220078155A (ko) | 2020-12-03 | 2022-06-10 | 삼성전자주식회사 | 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치 |
CN112464296B (zh) * | 2020-12-18 | 2022-09-23 | 合肥工业大学 | 一种用于同态加密技术的大整数乘法器硬件电路 |
JP7402191B2 (ja) * | 2021-03-03 | 2023-12-20 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
CN113296733B (zh) * | 2021-04-25 | 2024-09-03 | 阿里巴巴创新公司 | 数据处理方法以及装置 |
US11907380B2 (en) * | 2021-05-17 | 2024-02-20 | International Business Machines Corporation | In-memory computation in homomorphic encryption systems |
US11764942B2 (en) * | 2021-06-01 | 2023-09-19 | Huawei Technologies Co., Ltd. | Hardware architecture for memory organization for fully homomorphic encryption |
CN113343262B (zh) * | 2021-06-22 | 2022-10-11 | 海光信息技术股份有限公司 | 同态加密装置、同态加密芯片及同态加密方法 |
US11791979B2 (en) * | 2021-07-08 | 2023-10-17 | International Business Machines Corporation | Accelerated cryptographic-related processing with fractional scaling |
CN113660076A (zh) * | 2021-07-15 | 2021-11-16 | 南京大学 | 基于可重构技术的同态加密系统及同态加密执行方法 |
US11636027B2 (en) | 2021-07-21 | 2023-04-25 | Bank Of America Corporation | Homomorphic encryption-based testing computing system |
US12058261B2 (en) * | 2021-09-21 | 2024-08-06 | Intel Corporation | Low overhead side channel protection for number theoretic transform |
US11995184B2 (en) * | 2021-09-24 | 2024-05-28 | Intel Corporation | Low-latency digital signature processing with side-channel security |
KR102451633B1 (ko) * | 2021-12-09 | 2022-10-06 | 인하대학교 산학협력단 | 동형암호를 위한 암호화 처리 장치 및 방법 |
US11818244B2 (en) | 2021-12-15 | 2023-11-14 | The Governing Council Of The University Of Toronto | Cryptographic processor for fully homomorphic encryption (FHE) applications |
TWI845059B (zh) * | 2021-12-17 | 2024-06-11 | 美商谷歌有限責任公司 | 執行安全密碼操作之積體電路及方法 |
US20230208610A1 (en) * | 2021-12-28 | 2023-06-29 | International Business Machines Corporation | Executing an arithmetic circuit using fully homomorphic encryption (fhe) and multi-party computation (mpc) |
US20230269067A1 (en) * | 2022-02-18 | 2023-08-24 | Samsung Electronics Co., Ltd. | Homomorphic encryption operation accelerator, and operating method of homomorphic encryption operation accelerator |
US12113909B2 (en) | 2022-04-28 | 2024-10-08 | Nxp B.V. | Method and electronic device for decrypting homomorphically encrypted data |
CN117254902A (zh) * | 2022-06-10 | 2023-12-19 | 华为技术有限公司 | 数据处理方法、装置、设备及存储介质 |
KR102498123B1 (ko) | 2022-07-15 | 2023-02-09 | 인하대학교 산학협력단 | 동형암호를 위한 가변적으로 동작하는 ntt 기반 다항식 곱셈기 장치 및 방법 |
WO2024143647A1 (ko) * | 2022-12-30 | 2024-07-04 | 주식회사 크립토랩 | 분산 연산을 수행하는 전자 장치 및 제어 방법 |
CN117714054B (zh) * | 2024-02-01 | 2024-04-23 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2593948B1 (fr) * | 1986-02-06 | 1989-10-27 | Duhamel Pierre | Dispositif de transformee en cosinus d'un signal numerique echantillonne |
CN1823333A (zh) * | 2003-07-18 | 2006-08-23 | 加拿大西格纳斯通信公司 | 重新编码的基-2流水线fft处理器 |
US7701260B1 (en) * | 2007-05-25 | 2010-04-20 | Xilinx, Inc. | Phase-to-sinusoid conversion |
JP2009075676A (ja) * | 2007-09-18 | 2009-04-09 | Nec Electronics Corp | マイクロプロセッサ |
JP2010039890A (ja) * | 2008-08-07 | 2010-02-18 | Hitachi Ltd | 認証端末、認証サーバ、認証システム、認証方法および認証プログラム |
US8194532B1 (en) * | 2010-01-25 | 2012-06-05 | Xilinx, Inc. | Mixed radix discrete fourier transform |
CN102073621B (zh) * | 2011-01-19 | 2012-08-22 | 东南大学 | 一种应用于fft/ifft的基4蝶形单元电路及其处理方法 |
CN102768654A (zh) * | 2011-05-05 | 2012-11-07 | 中兴通讯股份有限公司 | 具有fft基2蝶运算处理能力的装置及其实现运算的方法 |
US9081634B1 (en) * | 2012-11-09 | 2015-07-14 | Xilinx, Inc. | Digital signal processing block |
US10581812B2 (en) * | 2015-12-01 | 2020-03-03 | Duality Technologies, Inc. | Device, system and method for fast and secure proxy re-encryption |
US9900147B2 (en) * | 2015-12-18 | 2018-02-20 | Microsoft Technology Licensing, Llc | Homomorphic encryption with optimized homomorphic operations |
US20170293913A1 (en) * | 2016-04-12 | 2017-10-12 | The Governing Council Of The University Of Toronto | System and methods for validating and performing operations on homomorphically encrypted data |
CN110892393B (zh) * | 2017-04-11 | 2024-07-05 | 多伦多大学管理委员会 | 用于在同态加密下加速安全计算的同态处理单元(hpu) |
-
2017
- 2017-08-11 CN CN201780091743.6A patent/CN110892393B/zh active Active
- 2017-08-11 SG SG11201909441XA patent/SG11201909441XA/en unknown
- 2017-08-11 WO PCT/IB2017/054919 patent/WO2019053486A1/en unknown
- 2017-08-11 CA CA3065976A patent/CA3065976A1/en active Pending
- 2017-08-11 KR KR1020237042861A patent/KR20230172043A/ko active Application Filing
- 2017-08-11 KR KR1020197032545A patent/KR102614616B1/ko active IP Right Grant
- 2017-08-11 IL IL269959A patent/IL269959B1/en unknown
- 2017-08-11 EP EP17925369.5A patent/EP3610382A4/en active Pending
- 2017-08-11 US US15/674,864 patent/US10298385B2/en active Active
- 2017-08-11 CA CA3034597A patent/CA3034597C/en active Active
- 2017-08-11 JP JP2019555859A patent/JP7074363B2/ja active Active
-
2019
- 2019-03-26 US US16/365,463 patent/US10715309B2/en active Active
- 2019-03-26 US US16/365,450 patent/US10644877B2/en active Active
-
2020
- 2020-07-06 US US16/921,028 patent/US11456856B2/en active Active
-
2022
- 2022-05-02 JP JP2022075900A patent/JP2022115959A/ja active Pending
- 2022-09-26 US US17/953,224 patent/US11870881B2/en active Active
-
2024
- 2024-04-12 JP JP2024064676A patent/JP2024074992A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2020537756A (ja) | 2020-12-24 |
EP3610382A4 (en) | 2021-03-24 |
US20210028921A1 (en) | 2021-01-28 |
US10715309B2 (en) | 2020-07-14 |
US20180294950A1 (en) | 2018-10-11 |
IL269959A (ko) | 2019-12-31 |
CN110892393B (zh) | 2024-07-05 |
CN110892393A (zh) | 2020-03-17 |
US11456856B2 (en) | 2022-09-27 |
WO2019053486A1 (en) | 2019-03-21 |
JP7074363B2 (ja) | 2022-05-24 |
US11870881B2 (en) | 2024-01-09 |
IL269959B1 (en) | 2024-10-01 |
EP3610382A1 (en) | 2020-02-19 |
US10644877B2 (en) | 2020-05-05 |
US20190268135A1 (en) | 2019-08-29 |
JP2024074992A (ja) | 2024-05-31 |
US20230086526A1 (en) | 2023-03-23 |
CA3065976A1 (en) | 2019-02-11 |
CA3034597A1 (en) | 2019-02-11 |
KR20190138815A (ko) | 2019-12-16 |
US20190222412A1 (en) | 2019-07-18 |
US10298385B2 (en) | 2019-05-21 |
SG11201909441XA (en) | 2020-03-30 |
CA3034597C (en) | 2021-10-12 |
JP2022115959A (ja) | 2022-08-09 |
KR102614616B1 (ko) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102614616B1 (ko) | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) | |
US9858006B1 (en) | Context driven memory circuits | |
Marshall et al. | A reconfigurable arithmetic array for multimedia applications | |
CN112119459B (zh) | 用于张量数据的存储器布置 | |
US11693662B2 (en) | Method and apparatus for configuring a reduced instruction set computer processor architecture to execute a fully homomorphic encryption algorithm | |
JPH04128982A (ja) | プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法 | |
Warrier et al. | A low-power pipelined MAC architecture using Baugh-Wooley based multiplier | |
US7545196B1 (en) | Clock distribution for specialized processing block in programmable logic device | |
US7486109B2 (en) | Programmable logic device | |
Ebeling et al. | RaPiD-a configurable computing architecture for compute-intensive applications | |
EP4011030A1 (en) | Configuring a reduced instruction set computer processor architecture to execute a fully homomorphic encryption algorithm | |
Asadikouhanjani et al. | Enhancing the utilization of processing elements in spatial deep neural network accelerators | |
Cain et al. | Convolution processing unit featuring adaptive precision using dynamic reconfiguration | |
Song et al. | Heterogeneous Reconfigurable Accelerator for Homomorphic Evaluation on Encrypted Data | |
Warrier et al. | Reconfigurable DSP block design for dynamically reconfigurable architecture | |
Hirai et al. | Leakage power reduction for coarse-grained dynamically reconfigurable processor arrays using dual vt cells | |
Hong et al. | Domain specific reconfigurable processing core architecture for digital filtering applications | |
Sano et al. | Configuration with Self-Configured Datapath: A High Speed Configuration Method for Dynamically Reconfigurable Processors. | |
Pedram et al. | Towards a high-performance, low-power linear algebra processor | |
Kujoth | Circuit design and study of the Amalgam reconfigurable cluster | |
Arrays et al. | RSA Acceleration with Field Programmable |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent |