KR20240036454A - 활성화 신호를 생성하는 연산 가속기 - Google Patents

활성화 신호를 생성하는 연산 가속기 Download PDF

Info

Publication number
KR20240036454A
KR20240036454A KR1020230102141A KR20230102141A KR20240036454A KR 20240036454 A KR20240036454 A KR 20240036454A KR 1020230102141 A KR1020230102141 A KR 1020230102141A KR 20230102141 A KR20230102141 A KR 20230102141A KR 20240036454 A KR20240036454 A KR 20240036454A
Authority
KR
South Korea
Prior art keywords
kth
data
logic
output data
stage
Prior art date
Application number
KR1020230102141A
Other languages
English (en)
Inventor
박성천
나중찬
김현우
장수연
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US18/465,861 priority Critical patent/US20240089084A1/en
Priority to EP23197074.0A priority patent/EP4339923A1/en
Publication of KR20240036454A publication Critical patent/KR20240036454A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5523Calculates a power, e.g. the square, of a number or a function, e.g. polynomials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

본 개시의 일 실시 예에 따른 연산 가속기는, 동형 암호문의 다항식을 포함하는 입력 데이터의 NTT(Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들, 및 입력 데이터의 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들을 생성하도록 구성된 제1 보조 회로를 포함한다. 제1 내지 제K 스테이지들의 각각은, 제1 내지 제K 활성화 신호들 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고, 그리고 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터를 바이패스(bypass) 시키도록 구성된다. 입력 데이터의 다항식의 차수는 2K보다 같거나 작은 자연수이고, 그리고 K는 임의의 자연수이다.

Description

활성화 신호를 생성하는 연산 가속기{ACCELERATOR GENERATING ENABLE SIGNAL}
본 개시는 동형 암호 연산 장치에 관한 것으로, 보다 상세하게는, 활성화 신호를 생성하는 연산 가속기에 관한 것이다.
완전 동형 암호화(FHE)(Fully Homomorphic Encryption) 장치는 데이터가 암호화된 상태에서 암호문들 사이의 연산 또는 조합을 지원할 수 있다. 완전 동형 암호화 장치는 TFHE(Torus FHE) 알고리즘, BGV(Brakerski-Gentry-Vaikuntanathan) 알고리즘, BFV(Brakerski-Fan-Vercauteren) 알고리즘, CKKS(Cheon-Kim-Kim-Song) 알고리즘 등과 같은 다양한 알고리즘들에 기반하여 구현될 수 있다.
동형 암호문은 고차의 다항식으로 표현될 수 있다. 이 때, 암호문 사이의 곱셈 연산을 처리하기 위해 많은 시간이 요구될 수 있다. 따라서, 동형 암호문의 연산 속도를 향상시키기 위해, NTT(number theoretic transform)에 기초하는 하드웨어 연산기가 사용될 수 있다. 하드웨어 연산기는 처리될 동형 암호문의 다항식의 차수에 기초하여 설계될 수 있다. 그러나, 동형 암호문의 차수가 변경되는 경우, 하드웨어 연산기는 변경된 차수의 다항식을 갖는 동형 암호문을 처리하지 못하거나, 또는 연산 리소스 및 전력이 불필요하게 낭비될 수 있다.
본 개시의 일 실시 예에 따르면, 활성화 신호를 생성하는 연산 가속기가 제공된다.
본 개시의 일 실시 예에 따르면, 연산 가속기는, 동형 암호문의 다항식을 포함하는 제1 입력 데이터의 NTT(Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들, 및 상기 제1 입력 데이터의 상기 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들을 생성하도록 구성된 제1 보조 회로를 포함한다. 상기 제1 내지 제K 스테이지들의 각각은, 상기 제1 내지 제K 활성화 신호들 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 상기 제1 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고, 그리고 상기 제1 내지 제K 활성화 신호들 중 상기 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 상기 제1 입력 데이터 또는 상기 이전 스테이지의 상기 대응하는 출력 데이터를 바이패스(bypass) 시키도록 구성된다. 상기 제1 입력 데이터의 상기 다항식의 상기 차수는 2K보다 같거나 작은 자연수이고, 그리고 K는 임의의 자연수이다.
일부 실시 예들에서, 상기 제1 입력 데이터의 상기 다항식의 상기 차수는 N이고, N은 2M이고, 그리고 M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수이다.
일부 실시 예들에서, 상기 제1 보조 회로는, 상기 제1 입력 데이터의 상기 다항식의 상기 차수에 기초하여, 상기 제1 내지 제K 활성화 신호들 중 제(K-M+1) 내지 제K 활성화 신호들의 논리 값들의 각각을 상기 제1 논리 값으로 설정하고(단, M이 0이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제1 논리 값을 갖는 활성화 신호가 없음); 그리고 상기 제1 내지 제K 활성화 신호들 중 제1 내지 제(K-M) 활성화 신호들의 논리 값들의 각각을 제2 논리 값으로 설정(단, M이 K이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제2 논리 값을 갖는 활성화 신호가 없음)하도록 더 구성된다.
일부 실시 예들에서, 상기 제1 내지 제K 스테이지들 중 제1 스테이지는, 상기 제1 내지 제K 활성화 신호들 중 제1 활성화 신호 및 상기 제1 입력 데이터의 논리곱 연산에 기초하여 제1 논리 연산 신호를 생성하도록 구성된 제1 논리 회로, 상기 제1 보조 회로로부터 상기 제1 입력 데이터에 대응하는 제1 가중치 데이터를 수신하도록 구성된 제1 가중치 버퍼 회로, 상기 제1 논리 회로로부터 상기 제1 논리 연산 신호를 수신하도록 구성된 제1 데이터 버퍼 회로, 상기 제1 논리 회로로부터 상기 제1 논리 연산 신호를 수신하고, 상기 제1 가중치 버퍼 회로로부터 상기 제1 가중치 데이터를 수신하고, 그리고 상기 제1 데이터 버퍼 회로와의 통신에 기초하여 상기 제1 논리 연산 신호 및 상기 제1 가중치 데이터에 대응하는 제1 버터플라이 연산 신호를 생성하도록 구성된 제1 버터플라이 연산기, 상기 제1 입력 데이터를 수신하도록 구성된 제1 바이패스 회로, 및 상기 제1 버터플라이 연산기로부터 상기 제1 버터플라이 연산 신호를 수신하고, 상기 제1 바이패스 회로로부터 상기 제1 입력 데이터를 수신하고, 상기 제1 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 제1 출력 데이터로서 상기 제1 버터플라이 연산 신호를 상기 제1 내지 제K 스테이지들 중 제2 스테이지로 출력하고, 그리고 상기 제1 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제1 출력 데이터로서 상기 제1 입력 데이터를 상기 제2 스테이지로 출력하도록 구성된 제1 멀티플렉서를 포함한다.
일부 실시 예들에서, 상기 제2 스테이지는, 상기 제1 내지 제K 활성화 신호들 중 제2 활성화 신호 및 상기 제1 출력 데이터의 논리곱 연산에 기초하여 제2 논리 연산 신호를 생성하도록 구성된 제2 논리 회로, 상기 제1 보조 회로로부터 상기 제1 출력 데이터에 대응하는 제2 가중치 데이터를 수신하도록 구성된 제2 가중치 버퍼 회로, 상기 제2 논리 회로로부터 상기 제2 논리 연산 신호를 수신하도록 구성된 제2 데이터 버퍼 회로, 상기 제2 논리 회로로부터 상기 제2 논리 연산 신호를 수신하고, 상기 제2 가중치 버퍼 회로로부터 상기 제2 가중치 데이터를 수신하고, 그리고 상기 제2 데이터 버퍼 회로와의 통신에 기초하여 상기 제2 논리 연산 신호 및 상기 제2 가중치 데이터에 대응하는 제2 버터플라이 연산 신호를 생성하도록 구성된 제2 버터플라이 연산기, 상기 제1 출력 데이터를 수신하도록 구성된 제2 바이패스 회로, 및 상기 제2 버터플라이 연산기로부터 상기 제2 버터플라이 연산 신호를 수신하고, 상기 제2 바이패스 회로로부터 상기 제1 출력 데이터를 수신하고, 상기 제2 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 제2 출력 데이터로서 상기 제2 버터플라이 연산 신호를 상기 제1 내지 제K 스테이지들 중 제3 스테이지로 출력하고, 그리고 상기 제2 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제2 출력 데이터로서 상기 제1 출력 데이터를 상기 제3 스테이지로 출력하도록 구성된 제2 멀티플렉서를 포함한다.
일부 실시 예들에서, 상기 연산 가속기는, 상기 제1 내지 제K 스테이지들 및 상기 제1 보조 회로를 포함하는 NTT 모듈라 곱셈기를 포함한다.
일부 실시 예들에서, 상기 연산 가속기는, 복수의 병렬 신호들을 각각 생성하도록 구성된 복수의 병렬 처리 요소들, 및 상기 복수의 병렬 신호들의 결합 연산에 기초하여 결합 신호를 생성하도록 구성된 결합 요소를 포함하는 NTT 모듈라 곱셈기를 더 포함한다. 상기 복수의 병렬 처리 요소들의 각각은 상기 제1 내지 제K 스테이지들 및 상기 제1 보조 회로를 포함한다.
일부 실시 예들에서, 상기 연산 가속기는, 동형 암호문의 다항식을 포함하는 제2 입력 데이터의 INTT(Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제(K+1) 내지 제2K 스테이지들, 및 상기 제2 입력 데이터의 상기 다항식의 차수에 기초하여 제(K+1) 내지 제2K 활성화 신호들을 생성하도록 구성된 제2 보조 회로를 더 포함한다. 상기 제(K+1) 내지 제2K 스테이지들의 각각은, 상기 제(K+1) 내지 제2K 활성화 신호들 중 대응하는 활성화 신호가 상기 제1 논리 값을 가리키는 것에 응답하여, 상기 제2 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고, 그리고 상기 제(K+1) 내지 제2K 활성화 신호들 중 상기 대응하는 활성화 신호가 상기 제2 논리 값을 가리키는 것에 응답하여, 상기 제2 입력 데이터 또는 상기 이전 스테이지의 상기 대응하는 출력 데이터를 바이패스 시키도록 구성된다. 그리고, 상기 제2 입력 데이터의 상기 다항식의 상기 차수는 2K보다 같거나 작은 자연수이다.
일부 실시 예들에서, 상기 제1 내지 제K 스테이지들의 연산들은 각각 상기 제(K+1) 내지 제2K 스테이지들의 연산들에 역-순서(inverse-order)로 대응한다.
일부 실시 예들에서, 상기 연산 가속기는, 복수의 병렬 신호들을 각각 생성하도록 구성된 복수의 병렬 처리 요소들, 및 상기 복수의 병렬 신호들의 결합 연산에 기초하여 결합 신호를 생성하도록 구성된 결합 요소를 포함하는 NTT 모듈라 곱셈기, 및 복수의 역-병렬 신호들을 각각 생성하도록 구성된 복수의 역-병렬 처리 요소들, 및 상기 복수의 역-병렬 신호들의 결합 연산에 기초하여 역-결합 신호를 생성하도록 구성된 역-결합 요소를 포함하는 INTT 모듈라 곱셈기를 더 포함한다. 상기 복수의 병렬 처리 요소들의 각각은 상기 제1 내지 제K 스테이지들 및 상기 제1 보조 회로를 포함하고, 그리고 상기 복수의 역-병렬 처리 요소들의 각각은 상기 제(K+1) 내지 제2K 스테이지들 및 상기 제2 보조 회로를 포함한다.
본 개시의 일 실시 예에 따르면, 연산 가속기는, 동형 암호문의 다항식을 포함하는 입력 데이터의 INTT(Inverse Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들, 및 상기 입력 데이터의 상기 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들을 생성하도록 구성된 보조 회로를 포함한다. 상기 제1 내지 제K 스테이지들의 각각은, 상기 제1 내지 제K 활성화 신호들 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 상기 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고, 그리고 상기 제1 내지 제K 활성화 신호들 중 상기 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 상기 입력 데이터 또는 상기 이전 스테이지의 상기 대응하는 출력 데이터를 바이패스(bypass) 시키도록 구성된다. 상기 입력 데이터의 상기 다항식의 상기 차수는 2K보다 같거나 작은 자연수이고, 그리고 K는 임의의 자연수이다.
일부 실시 예들에서, 상기 입력 데이터의 상기 다항식의 상기 차수는 N이고, N은 2M이고, 그리고 M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수이다.
일부 실시 예들에서, 상기 보조 회로는, 상기 입력 데이터의 상기 다항식의 상기 차수에 기초하여, 상기 제1 내지 제K 활성화 신호들 중 제1 내지 제M 활성화 신호들의 논리 값들의 각각을 상기 제1 논리 값으로 설정하고(단, M이 0이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제1 논리 값을 갖는 활성화 신호가 없음), 그리고 상기 제1 내지 제K 활성화 신호들 중 제(M+1) 내지 제K 활성화 신호들의 논리 값들의 각각을 제2 논리 값으로 설정(단, M이 K이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제2 논리 값을 갖는 활성화 신호가 없음)하도록 더 구성된다.
일부 실시 예들에서, 상기 제1 내지 제K 스테이지들 중 제K 스테이지는, 상기 제1 내지 제K 활성화 신호들 중 제K 활성화 신호 및 상기 제1 내지 제K 스테이지들 중 제(K-1) 스테이지의 제(K-1) 출력 데이터의 논리곱 연산에 기초하여 제K 논리 연산 신호를 생성하도록 구성된 제K 논리 회로, 상기 보조 회로로부터 상기 제(K-1) 출력 데이터에 대응하는 제K 가중치 데이터를 수신하도록 구성된 제K 가중치 버퍼 회로, 상기 제K 논리 회로로부터 상기 제K 논리 연산 신호를 수신하도록 구성된 제K 데이터 버퍼 회로, 상기 제K 논리 회로로부터 상기 제K 논리 연산 신호를 수신하고, 상기 제K 가중치 버퍼 회로로부터 상기 제K 가중치 데이터를 수신하고, 그리고 상기 제K 데이터 버퍼 회로와의 통신에 기초하여 상기 제K 논리 연산 신호 및 상기 제K 가중치 데이터에 대응하는 제K 버터플라이 연산 신호를 생성하도록 구성된 제K 버터플라이 연산기, 상기 제(K-1) 출력 데이터를 수신하도록 구성된 제K 바이패스 회로, 및 상기 제K 버터플라이 연산기로부터 상기 제K 버터플라이 연산 신호를 수신하고, 상기 제K 바이패스 회로로부터 상기 제(K-1) 출력 데이터를 수신하고, 상기 제K 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 제K 출력 데이터로서 상기 제K 버터플라이 연산 신호를 출력하고, 그리고 상기 제K 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제K 출력 데이터로서 상기 제(K-1) 출력 데이터를 출력하도록 구성된 제K 멀티플렉서를 포함한다. 그리고, 상기 제K 출력 데이터는 상기 입력 데이터의 상기 INTT 연산의 최종 출력 데이터이다.
일부 실시 예들에서, 상기 제(K-1) 스테이지는, 상기 제1 내지 제K 활성화 신호들 중 제(K-1) 활성화 신호 및 상기 제1 내지 제K 스테이지들 중 제(K-2) 스테이지의 제(K-2) 출력 데이터의 논리곱 연산에 기초하여 제(K-1) 논리 연산 신호를 생성하도록 구성된 제(K-1) 논리 회로, 상기 보조 회로로부터 상기 제(K-2) 출력 데이터에 대응하는 제(K-1) 가중치 데이터를 수신하도록 구성된 제(K-1) 가중치 버퍼 회로, 상기 제(K-1) 논리 회로로부터 상기 제(K-1) 논리 연산 신호를 수신하도록 구성된 제(K-1) 데이터 버퍼 회로, 상기 제(K-1) 논리 회로로부터 상기 제(K-1) 논리 연산 신호를 수신하고, 상기 제(K-1) 가중치 버퍼 회로로부터 상기 제(K-1) 가중치 데이터를 수신하고, 그리고 상기 제(K-1) 데이터 버퍼 회로와의 통신에 기초하여 상기 제(K-1) 논리 연산 신호 및 상기 제(K-1) 가중치 데이터에 대응하는 제(K-1) 버터플라이 연산 신호를 생성하도록 구성된 제(K-1) 버터플라이 연산기, 상기 제(K-2) 출력 데이터를 수신하도록 구성된 제(K-1) 바이패스 회로, 및 상기 제(K-1) 버터플라이 연산기로부터 상기 제(K-1) 버터플라이 연산 신호를 수신하고, 상기 제(K-1) 바이패스 회로로부터 상기 제(K-2) 출력 데이터를 수신하고, 상기 제(K-1) 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 상기 제(K-1) 출력 데이터로서 상기 제(K-1) 버터플라이 연산 신호를 상기 제K 스테이지로 출력하고, 그리고 상기 제(K-1) 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제(K-1) 출력 데이터로서 상기 제(K-2) 출력 데이터를 상기 제K 스테이지로 출력하도록 구성된 제(K-1) 멀티플렉서를 포함한다.
일부 실시 예들에서, 상기 연산 가속기는, 상기 제1 내지 제K 스테이지들 및 상기 보조 회로를 포함하는 INTT 모듈라 곱셈기를 포함한다.
일부 실시 예들에서, 상기 연산 가속기는, 복수의 역-병렬 신호들을 각각 생성하도록 구성된 복수의 역-병렬 처리 요소들, 및 상기 복수의 역-병렬 신호들의 결합 연산에 기초하여 역-결합 신호를 생성하도록 구성된 역-결합 요소를 포함하는 INTT 모듈라 곱셈기를 더 포함한다. 상기 복수의 역-병렬 처리 요소들의 각각은 상기 제1 내지 제K 스테이지들 및 상기 보조 회로를 포함한다.
본 개시의 일 실시 예에 따르면, 활성화 신호를 생성하는 연산 가속기가 제공된다.
또한, 동형 암호문의 차수에 따라 동형 암호문을 처리하기 위한 복수의 스테이지들을 선택적으로 활성화함으로써, 가변적인 차수를 갖는 동형 암호문을 효율적으로 처리하는 연산 가속기가 제공된다.
도 1은 본 개시의 일 실시 예에 따른 암호 시스템을 설명하는 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 동형 암호 연산 장치를 설명하는 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따라 단일 스테이지의 NTT(Number Theoretic Transform) 연산기를 설명하는 도면이다.
도 4는 본 개시의 일부 실시 예들에 따라 다중 스테이지의 NTT 연산기를 설명하는 도면이다.
도 5는 고정 NTT 연산기를 설명하는 도면이다.
도 6은 본 개시의 일부 실시 예들에 따른 NTT 테이블이다.
도 7은 본 개시의 일부 실시 예들에 따라 도 2의 NTT 연산기를 설명하는 도면이다.
도 8은 본 개시의 일부 실시 예들에 따라 도 7의 활성화 신호들을 설명하는 테이블이다.
도 9는 본 개시의 일부 실시 예들에 따른 NTT 연산기를 설명하는 도면이다.
도 10은 고정 INTT(Inverse Number Theoretic Transform) 연산기를 설명하는 도면이다.
도 11은 본 개시의 일부 실시 예들에 따른 INTT 테이블이다.
도 12는 본 개시의 일부 실시 예들에 따라 도 2의 INTT 연산기를 설명하는 도면이다.
도 13은 본 개시의 일부 실시 예들에 따라 도 12의 활성화 신호들을 설명하는 테이블이다.
도 14는 본 개시의 일부 실시 예들에 따른 INTT 연산기를 설명하는 도면이다.
도 15는 본 개시의 일부 실시 예들에 따른 동형 암호 연산 장치를 설명하는 도면이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서, 첨부한 도면들을 참조하여, 본 개시의 실시 예들이 보다 상세하게 설명된다. 본 개시를 설명함에 있어서, 전체적인 이해를 용이하게 하기 위하여 도면상의 유사한 구성 요소들에 대해 유사한 참조 부호들이 사용되고, 그리고 유사한 구성 요소들에 대한 중복된 설명들은 생략될 것이다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
상세한 설명에서 사용되는 유닛(unit), 모듈(module), 계층(layer) 등의 용어들을 참조하여 설명되는 구성 요소들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 에플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(Micro Electro Mechanical System; MEMS), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 암호 시스템을 설명하는 블록도이다. 도 1을 참조하면, 암호 시스템(100)은 통신 장치(110), 암호화 장치(120), 메모리 장치(130), 복호화 장치(140), 및 동형 암호 연산 장치(150)를 포함할 수 있다.
일부 실시 예들에서, 암호 시스템(100)은 유선 및/또는 무선 통신 기능을 갖는 전자 장치로 구현될 수 있거나 또는 전자 장치의 일부로서 구현될 수 있다. 예를 들어, 암호 시스템(100)은 스마트폰, 태블릿 PC(Personal Computer), 이동 전화기, 영상 전화기, 전자책 리더기, 데스크탑 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버, PDA, PMP(portable multimedia player), MP3 플레이어, 카메라, 웨어러블 장치, 각종 의료기기(예를 들어, 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 드론(drone), 금융 기관의 ATM, 상점의 POS(point of sales), 또는 사물 인터넷 장치 (예: 전구, 각종 센서, 스프링클러 장치, 화재 경보기, 온도조절기, 가로등, 운동기구 등) 중 적어도 하나로 구현될 수 있다.
통신 장치(110)는 암호 시스템(100)의 외부 통신을 지원할 수 있다. 예를 들어, 통신 장치(110)는 외부 장치(미도시)와의 유선 통신 연결 또는 무선 통신 연결을 지원할 수 있다. 통신 장치(110)는 외부 장치로부터 원본 데이터를 수신하거나 또는 외부 장치에게 복호화된 데이터를 제공하도록 구성될 수 있다.
암호화 장치(120)는 통신 장치(110)로부터 수신된 원본 데이터에 대한 암호화 연산을 수행하고, 그리고 암호 데이터를 생성할 수 있다. 암호화 장치(120)는 암호 데이터는 메모리 장치(130)에 저장할 수 있다. 복호화 장치(140)는 메모리 장치(130)에 저장된 암호 데이터의 복호화 연산을 수행하고, 복호화된 데이터(또는 원본 데이터)를 생성할 수 있다. 복호화 장치(140)는 통신 장치(110)를 통해 복호화된 데이터를 외부 장치에게 제공할 수 있다.
일부 실시 예들에서, 메모리 장치(130)에 저장된 암호 데이터는 동형 암호 데이터 또는 동형 암호문일 수 있다. 예를 들어, 암호화 장치(120)는 다양한 동형 암호화 기술을 기반으로 암호 데이터를 생성할 수 있다. 동형 암호 기술(homomorphic encryption technology)은 BGV(Brakerski, Gentry, and Vaikuntanathan) 알고리즘, BFV(Brakerski, Fan, and Vercauteren) 알고리즘, CKKS(Cheon, Kim, Kim and Song) 알고리즘 등과 같은 다양한 방식의 암호화 알고리즘들을 포함할 수 있다. 이러한 암호 방식들에 기초하여, 암호화 장치(120)는 R-LWE(Ring-Learning with Error) 정의에 의해 메시지(또는 데이터)를 동형 암호문으로 암호화한다. 암호화 과정은 메시지를 N차 다항식 쌍으로 매핑하여 메시지 다항식을 생성하는 과정, 이러한 메시지 다항식에 에러(Error) 다항식이라 불리는 에러 값을 더하는 과정, 및 암호키 다항식을 이러한 메시지 다항식에 포함시키는 등의 암호문 생성 과정을 통해서 동형 암호문을 생성하는 것을 포함할 수 있다. N은 임의의 자연수이다. BGV 스킴, BFV 스킴 및 CKKS 스킴은 N차의 고차 다항식으로 표현되는 암호문을 사용하는 점에서 서로 유사할 수 있지만, 서로 다른 동형 연산(homomorphic operation)들을 정의한다. 각각의 암호 스킴들에서, 동형 암호문을 구성하는 비트열에서 동형 암호문을 생성하는 과정에서 추가되는 에러 값을 나타내는 비트들의 비트 위치(bit position)가 다를 수 있다. 이러한 특성으로 인해, BGV 스킴, BFV 스킴 및 CKKS 스킴은 서로 다른 동형 연산들을 정의한다. 상술된 동형 암호화 알고리즘은 일부 예시이며, 본 개시의 범위가 이에 제한되는 것은 아니다.
위에서 설명된 바와 같이, 메모리 장치(130)에 저장된 암호 데이터는 동형 암호 데이터 또는 동형 암호문일 수 있다. 일부 실시 예들에서, 동형 암호문 사이의 연산 결과는 원문 사이의 연산 결과와 동일한 특징을 갖는다. 즉, 암호문 사이의 연산을 위해, 암호문을 복호화할 필요가 없기 때문에, 보다 빠른 암호문 연산이 가능하다. 일부 실시 예들에서, 동형 암호문 사이의 연산 또는 동형 연산은 암호화 연산(encryption operation), 복호화 연산(Decryption operation), 동형 곱셈 연산(homomorphic multiplication operation), 모듈러 연산(modular operation), 재선형화 연산(relinearization operation), 키 변환 연산(key switching operation) 및 모듈러스 변환 연산(modulus switching operation) 등을 포함할 수 있다.
암호화 연산(encryption operation) 및 복호화 연산(Decryption operation)은 클라이언트와 같은 장치에서 수행되는 동형 연산들일 수 있다. 그리고 동형 곱셈 연산(homomorphic multiplication operation), 모듈러 연산(modular operation), 재선형화 연산(relinearization operation), 키 변환 연산(key switching operation), 및 모듈러스 변환 연산(modulus switching operation)은 클라우드 서버와 같은 장치에서 수행되는 동형 연산들일 수 있다.
동형 암호 연산 장치(150)는 메모리 장치(130)로부터 암호 데이터를 수신하고, 암호 데이터에 대한 동형 암호 연산을 수행하도록 구성될 수 있다. 일부 실시 예들에서, 암호 데이터의 동형 암호문은 고차 다항식으로 표현될 수 있다. 이 때, 고차 다항식 사이의 곱셈 연산은 NTT(Number Theoretic Transform) 알고리즘에 기초하는 연산 하드웨어에 의해 수행될 수 있다. 그러나, 동형 암호문은 매우 고차의 다항식이므로, 이에 대한 곱셈 연산을 지원하는 하드웨어는 아직 실용적이지 않을 수 있다.
예를 들어, 동형 암호문은 고차의 다항식을 포함할 수 있지만, 동형 암호문의 차수는 가변적일 수 있다. 동형 암호문의 차수가 변경되면, 동형 암호 연산 장치(150)는 변경된 차수를 갖는 동형 암호문에 대한 동형 암호 연산을 수행하지 못할 수 있거나, 또는 이러한 동형 암호 연산을 수행하기 위해 불필요하게 연산 리소스 또는 전력을 낭비할 수 있다.
본 개시의 일 실시 예에 따른 동형 암호 연산 장치(150)는 동형 암호문을 포함하는 데이터(또는, 암호 데이터)에 대한 동형 암호 연산의 효율적인 연산 방법을 제공할 수 있다. 동형 암호 연산 장치(150)는 동형 암호문의 차수에 따라, 동형 암호문 연산을 위한 스테이지들을 선택적으로 활성화함으로써, 동형 암호문에 최적화된 연산을 지원할 수 있다. 본 개시의 실시 예에 따른 동형 암호 연산 장치(150)의 구조 및 동작은 이하의 도면들을 참조하여 보다 상세하게 설명될 것이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 동형 암호 연산 장치를 설명하는 블록도이다. 도 1 및 도 2를 참조하면, 동형 암호 연산 장치(150)는 데이터 I/O(Input/Output) 회로(151), 연산 가속기(152), 및 프로세서(153)를 포함할 수 있다.
데이터 I/O 회로(151)는 메모리 장치(130)와 데이터를 통신할 수 있다. 예를 들어, 데이터 I/O 회로(151)는 메모리 장치(130)로부터 암호 데이터(예를 들어, 동형 암호문)을 수신할 수 있거나 또는 메모리 장치(130)에게 연산 데이터(예를 들어, 동형 암호 연산에 의해 획득된 연산 데이터)를 제공할 수 있다.
연산 가속기(152)는 데이터 I/O 회로(151)로부터 입력 데이터(XN)를 수신할 수 있다. 입력 데이터(XN)는 동형 암호문의 다항식을 포함할 수 있다. 입력 데이터(XN)의 동형 암호문의 다항식의 차수는 N일 수 있다. N은 임의의 자연수이다. 입력 데이터(XN)는 N개의 입력 데이터 요소들(X[0:N-1])을 포함할 수 있다. 입력 데이터(XN)는 동형 암호 데이터 또는 동형 암호문으로도 지칭될 수 있다.
연산 가속기(152)는 입력 데이터(XN)의 동형 암호 연산에 기초하여 출력 데이터(YN)를 생성할 수 있다. 동형 암호 연산은 NTT(Number Theoretic Transform) 연산 및 INTT(Inverse Number Theoretic Transform) 연산을 포함할 수 있다. 출력 데이터(YN)는 입력 데이터(XN)의 동형 암호 연산의 결과에 대응될 수 있다. 출력 데이터(YN)에 대응하는 암호문의 다항식의 차수는 N일 수 있다. 출력 데이터(YN)는 N개의 출력 데이터 요소들(Y[0:N-1])을 포함할 수 있다.
연산 가속기(152)는 출력 데이터(YN)를 데이터 I/O 회로(151)에게 제공할 수 있다. 데이터 I/O 회로(151)는 출력 데이터(YN)를 메모리 장치(130)에게 제공할 수 있다.
일부 실시 예들에서, 연산 가속기(152)는 효율적인 NTT 연산을 지원할 수 있다. 예를 들어, 연산 가속기(152)는 NTT 연산기(152a)를 포함할 수 있다. NTT 연산기(152a)는 직렬로 연결된 제1 내지 제K 스테이지들(STG1~STGK)을 포함할 수 있다. 제1 내지 제K 스테이지들(STG1~STGK)은 입력 데이터(XN)의 NTT 연산을 수행할 수 있다. NTT 연산기(152a)는 입력 데이터(XN)의 차수(즉, N)에 따라, 제1 내지 제K 스테이지들(STG1~STGK)을 선택적으로 활성화함으로써, 입력 데이터(XN)의 NTT 연산을 효율적으로 수행할 수 있다. K는 임의의 자연수이다. N은 2K일 수 있다. NTT 연산기(152a)에 대한 보다 상세한 설명은 도 3 내지 도 9를 참조하여 후술될 것이다.
일부 실시 예들에서, NTT 연산기(152a)는 SDF(Single-Path Delay Feedback) 방식의 NTT 하드웨어 연산기의 구조를 가질 수 있다. NTT 연산기(152a)의 제1 내지 제K 스테이지들(STG1~STGK)의 각각은 래딕스-R(Radix-R)의 구조를 가질 수 있다. 예를 들어, 래딕스의 값이 “2”이고, NTT 연산기(152a)가 8개의 스테이지들(STG1~STG8)을 포함하는 경우, NTT 연산기(152a)는 “28=256” 차수의 다항식에 대한 NTT 동형 암호 연산을 수행할 수 있다.
일부 실시 예들에서, 연산 가속기(152)는 효율적인 INTT 연산을 지원할 수 있다. 예를 들어, 연산 가속기(152)는 INTT 연산기(152b)를 포함할 수 있다. INTT 연산기(152b)는 직렬로 연결된 제1 내지 제K 스테이지들(iSTG1~iSTGK)을 포함할 수 있다. 제1 내지 제K 스테이지들(iSTG1~iSTGK)은 입력 데이터(XN)의 INTT 연산을 수행할 수 있다. INTT 연산기(152b)는 입력 데이터(XN)의 차수(즉, N)에 따라, 제1 내지 제K 스테이지들(iSTG1~iSTGK)을 선택적으로 활성화함으로써, 입력 데이터(XN)의 INTT 연산을 효율적으로 수행할 수 있다. K는 임의의 자연수이다. N은 2K일 수 있다. INTT 연산기(152b)에 대한 보다 상세한 설명은 도 10 내지 도 14를 참조하여 후술될 것이다.
일부 실시 예들에서, INTT 연산기(152b)는 SDF 방식의 INTT 하드웨어 연산기의 구조를 가질 수 있다. INTT 연산기(152b)의 제1 내지 제K 스테이지들(iSTG1~iSTGK)의 각각은 래딕스-R의 구조를 가질 수 있다. 예를 들어, 래딕스의 값이 “2”이고, INTT 연산기(152b)가 8개의 스테이지들(iSTG1~iSTG8)을 포함하는 경우, INTT 연산기(152b)는 “28=256” 차수의 다항식에 대한 INTT 동형 암호 연산을 수행할 수 있다.
프로세서(153)는 동형 암호 연산 장치(150)의 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(153)는 데이터 I/O 회로(151) 및 연산 가속기(152)의 동작들을 제어할 수 있다. 일부 실시 예들에서, 프로세서(153)는 연산 가속기(152)에게 NTT 연산 및 INTT 연산을 위한 가중치 데이터를 제공할 수 있다.
도 3은 본 개시의 일부 실시 예들에 따라 단일 스테이지의 NTT 연산기를 설명하는 도면이다. 도 3을 참조하면, NTT 연산기는 래딕스-2인 1개의 스테이지를 포함할 수 있다. NTT 연산기는 도 2의 NTT 연산기(152a)에 대응할 수 있다. 이 경우, NTT 연산기는 스테이지(STG)를 포함할 수 있다. 스테이지(STG)는 래딕스-2의 구조를 가질 수 있다. 입력 데이터(XN)에서 다항식의 차수(즉, N)은 “2”일 수 있다. 입력 데이터(XN)는 입력 데이터 요소들(X[0], X[1])을 포함할 수 있다.
NTT 연산기의 스테이지(STG)는 입력 데이터 요소들(X[0], X[1]) 및 가중치 데이터(W)의 연산에 기초하여 출력 데이터 요소들(Y[0], Y[1])을 생성할 수 있다. 출력 데이터 요소들(Y[0], Y[1])은 집합적으로 출력 데이터(YN)라고도 지칭될 수 있다. 출력 데이터 요소(Y[0])는 “X[0] + X[1]*W”의 연산에 의해 획득될 수 있다. 출력 데이터 요소(Y[1])는 “X[0] - X[1]*W”의 연산에 의해 획득될 수 있다. 입력 데이터 요소들(X[0], X[1]) 및 가중치 데이터(W)의 이러한 연산들은 버터플라이 연산으로도 지칭될 수 있다.
도 4는 본 개시의 일부 실시 예들에 따라 다중 스테이지의 NTT 연산기를 설명하는 도면이다. 도 4를 참조하면, NTT 연산기는 래딕스-2인 3개의 스테이지들을 포함할 수 있다. NTT 연산기는 도 2의 NTT 연산기(152a)에 대응할 수 있다. 이 경우, NTT 연산기는 직렬로 연결된 제1 내지 제3 스테이지들(STG1~STG3)을 포함할 수 있다. 제1 내지 제3 스테이지들(STG1~STG3)의 각각은 래딕스-2의 구조를 가질 수 있다. 입력 데이터(XN)에서 다항식의 차수(즉, N)은 “8”일 수 있다. 입력 데이터(XN)는 입력 데이터 요소들(X[0:7])을 포함할 수 있다.
NTT 연산기의 제1 스테이지(STG1)는 입력 데이터 요소들(X[0:7]) 및 대응하는 가중치 데이터를 수신하고, 입력 데이터 요소들(X[0:7]) 및 대응하는 가중치 데이터의 버터플라이 연산에 기초하여 8개의 출력 데이터 요소들을 생성할 수 있다. 8개의 출력 데이터 요소들은 집합적으로 제1 스테이지(STG1)의 출력 데이터로도 지칭될 수 있다. 제1 스테이지(STG1)의 출력 데이터는 제2 스테이지(STG2)의 입력 데이터로서 제2 스테이지(STG2)에 제공될 수 있다.
유사하게, NTT 연산기의 제2 스테이지(STG2)는 제1 스테이지(STG1)로부터 수신된 데이터 및 대응하는 가중치 데이터의 버터플라이 연산에 기초하여 출력 데이터를 생성할 수 있다. 제2 스테이지(STG2)의 출력 데이터는 제3 스테이지(STG3)의 입력 데이터로서 제3 스테이지(STG3)에 제공될 수 있다. NTT 연산기의 제3 스테이지(STG3)는 제2 스테이지(STG2)로부터 수신된 데이터 및 대응하는 가중치 데이터의 버터플라이 연산에 기초하여 출력 데이터(YN)를 생성할 수 있다. 출력 데이터(YN)는 출력 데이터 요소들(Y[0:7])을 포함할 수 있다. 출력 데이터(YN)는 입력 데이터(XN)의 NTT 연산의 최종 출력 데이터일 수 있다.
도 5는 고정 NTT 연산기를 설명하는 도면이다. 도 5를 참조하면, 고정 NTT 연산기는 입력 데이터(XN)의 NTT 연산을 수행하도록 구성될 수 있다. 입력 데이터(XN)에 포함된 동형 암호문의 다항식의 차수는 N일 수 있다. N은 2K일 수 있다. 고정 NTT 연산기는 직렬로 연결된 제1 내지 제K 스테이지들(STG1~STGK)을 포함할 수 있다. 제1 내지 제K 스테이지들(STG1~STGK)은 입력 데이터(XN)의 NTT 연산을 수행할 수 있다.
제1 내지 제K 스테이지들(STG1~STGK)은 직렬로 연결될 수 있다. 제1 스테이지(STG1)는 입력 데이터(XN)의 버터플라이 연산에 기초하여 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(STG1)의 제1 출력 데이터는 제2 스테이지(STG2)의 입력 데이터일 수 있다. 이와 유사하게, 제2 스테이지(STG2)는 제1 스테이지(STG1)로부터 수신된 제1 출력 데이터의 버터플라이 연산에 기초하여 제2 출력 데이터를 생성할 수 있다. 제K 스테이지(STGK)는 제(K-1) 스테이지(STGK-1)로부터 수신된 제(K-1) 출력 데이터의 버터플라이 연산에 기초하여 제K 출력 데이터를 생성할 수 있다. 제K 출력 데이터는 출력 데이터(YN)일 수 있다. 즉, 제K 스테이지(STGK)는 입력 데이터(XN)의 NTT 연산의 최종 출력 데이터인 출력 데이터(YN)를 생성할 수 있다.
보다 상세하게는, 제1 스테이지(STG1)는 제1 데이터 버퍼 회로(DBC1), 제1 버터플라이 연산기(BF1), 및 제1 가중치 버퍼 회로(WBC1)를 포함할 수 있다. 제1 가중치 버퍼 회로(WBC1)는 입력 데이터(XN)에 대응하는 제1 가중치 데이터를 수신할 수 있다. 제1 데이터 버퍼 회로(DBC1)는 입력 데이터(XN)를 수신할 수 있다. 제1 버터플라이 연산기(BF1)는 외부로부터 입력 데이터(XN)를 수신하고, 제1 가중치 버퍼 회로(WBC1)로부터 제1 가중치 데이터를 수신하고, 그리고 제1 데이터 버퍼 회로(DBC1)와의 통신에 기초하여 입력 데이터(XN) 및 제1 가중치 데이터의 버터플라이 연산을 수행함으로써 제1 버터플라이 연산 신호를 생성할 수 있다. 제1 버터플라이 연산기(BF1)는 제1 버터플라이 연산 신호를 제2 스테이지(STG2)에게 제공할 수 있다.
이와 유사하게, 제2 스테이지(STG2)는 제2 데이터 버퍼 회로(DBC2), 제2 버터플라이 연산기(BF2), 및 제2 가중치 버퍼 회로(WBC2)를 포함할 수 있다. 제2 버터플라이 연산기(BF2)는 제1 스테이지(STG1)로부터 제1 버터플라이 연산 신호를 수신하고, 제2 가중치 버퍼 회로(WBC2)로부터 제2 가중치 데이터를 수신하고, 그리고 제2 데이터 버퍼 회로(DBC2)와의 통신에 기초하여 제1 버터플라이 연산 신호 및 제2 가중치 데이터의 버터플라이 연산을 수행함으로써 제2 버터플라이 연산 신호를 생성할 수 있다.
마찬가지로, 제K 스테이지(STGK)는 제K 데이터 버퍼 회로(DBCK), 제K 버터플라이 연산기(BFK), 및 제K 가중치 버퍼 회로(WBCK)를 포함할 수 있다. 제K 버터플라이 연산기(BFK)는 제(K-1) 스테이지(STGK-1)로부터 제(K-1) 버터플라이 연산 신호를 수신하고, 제K 가중치 버퍼 회로(WBCK)로부터 제K 가중치 데이터를 수신하고, 그리고 제K 데이터 버퍼 회로(DBCK)와의 통신에 기초하여 제(K-1) 버터플라이 연산 신호 및 제K 가중치 데이터의 버터플라이 연산을 수행함으로써 출력 데이터(YN)를 생성할 수 있다.
상술된 바와 같이, 고정 NTT 연산기의 복수의 스테이지들은 입력 데이터에 대한 동형 암호문의 NTT 연산을 수행할 수 있다. 고정 NTT 연산기의 복수의 스테이지들의 개수(즉, K)는 입력 데이터(XN)의 동형 암호문의 다항식의 차수(즉, N)와 상관 관계를 가질 수 있다. 따라서, 동형 암호문의 차수가 달라지면, NTT 연산기에서 요구되는 스테이지들의 개수가 달라질 수 있다. 동형 암호문의 차수 및 요구되는 스테이지들의 개수의 관계는 도 6을 참조하여 보다 상세하게 설명될 것이다.
도 6은 본 개시의 일부 실시 예들에 따른 NTT 테이블이다. 도 6을 참조하면, 16개의 스테이지들을 포함하는 NTT 연산기가 가변적인 차수의 동형 암호문을 포함하는 입력 데이터를 처리하는 경우, 각 스테이지에서 처리되는 데이터의 차수 및 가중치 데이터의 트위들 팩터(twiddle factor)가 설명된다.
이하에서, 도 6을 참조하여 설명되는 NTT 연산기에서, K는 NTT 연산기 내의 스테이지들의 개수를 나타낼 수 있다. 입력 데이터의 동형 암호문의 차수는 N일 수 있다. N은 2M일 수 있다. M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수일 수 있다. 즉, M의 변화에 따라 입력 데이터의 차수가 가변적일 수 있고, 가변적인 차수의 입력 데이터에 따라 NTT 연산기 내에서 요구되는 스테이지들이 달라질 수 있다.
예를 들어, N은 216인 경우를 참조하면, NTT 연산기의 16개의 스테이지들이 모두 요구될 수 있다. NTT 연산기는 모든 스테이지들의 버터플라이 연산들을 순차적으로 수행함으로써, NTT 연산의 출력 데이터를 획득할 수 있다.
또 다른 예로서, N은 215인 경우를 참조하면, NTT 연산기의 16개의 스테이지들 중 15개의 스테이지들이 요구될 수 있다. NTT 연산기는 제1 스테이지를 비활성화시키고, 제2 내지 제16 스테이지들의 버터플라이 연산들을 순차적으로 수행함으로써, NTT 연산의 출력 데이터를 획득할 수 있다.
또 다른 예로서, N은 21인 경우를 참조하면, NTT 연산기의 16개의 스테이지들 중 1개의 스테이지가 요구될 수 있다. NTT 연산기는 제1 내지 제15 스테이지들을 비활성화시키고, 제16 스테이지의 버터플라이 연산을 수행함으로써, NTT 연산의 출력 데이터를 획득할 수 있다.
또 다른 예로서, N은 20인 경우를 참조하면, NTT 연산기의 16개의 스테이지들 모두가 요구되지 않을 수 있다. NTT 연산기는 모든 스테이지들(즉, 제1 내지 제16 스테이지들)을 비활성화시키고, 입력 데이터를 그대로 바이패스(bypass) 시킴으로써 NTT 연산의 출력 데이터를 획득할 수 있다.
상술된 바와 같이, 입력 데이터의 동형 암호문의 차수가 달라지면, NTT 연산기에서 요구되는 스테이지들의 개수가 달라질 수 있다. 가변적인 차수의 동형 암호문을 효율적으로 처리하기 위해, 스테이지들을 선택적으로 활성화하는 NTT 연산기가 요구될 수 있다. 가변적인 차수의 동형 암호문을 처리하는 NTT 연산기는 도 7 내지 도 9를 참조하여 보다 상세하게 설명될 것이다.
도 7은 본 개시의 일부 실시 예들에 따라 도 2의 NTT 연산기를 설명하는 도면이다. 도 2 및 도 7을 참조하면, NTT 연산기(152a)는 데이터 I/O 회로(151)로부터 입력 데이터(XN)를 수신할 수 있다. NTT 연산기(152a)는 입력 데이터(XN)의 NTT 연산에 기초하여 출력 데이터(YN)를 생성할 수 있다. NTT 연산기(152a)는 출력 데이터(YN)를 데이터 I/O 회로(151)에게 제공할 수 있다. 이 때, 입력 데이터(XN) 및 출력 데이터(YN)의 차수는 가변적일 수 있다. NTT 연산기(152a)는 가변적인 차수를 갖는 입력 데이터(XN)의 동형 암호 연산을 효율적으로 수행할 수 있다.
NTT 연산기(152a)는 입력 데이터(XN)의 NTT 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들(STG1~STGK)을 포함할 수 있다.
제1 스테이지(STG1)는 입력 데이터(XN)를 수신하고, 그리고 제1 활성화 신호(EN1)에 기초하여 입력 데이터(XN)의 버터플라이 연산을 수행하거나 또는 입력 데이터(XN)를 바이패스 시킴으로써 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(STG1)는 제1 출력 데이터를 제2 스테이지(STG2)에게 제공할 수 있다. 제1 스테이지(STG1)는 제1 논리 회로(AND1), 제1 가중치 버퍼 회로(WBC1), 제1 데이터 버퍼 회로(DBC1), 제1 버터플라이 연산기(BF1), 제1 바이패스 회로(BPC1), 및 제1 멀티플렉서(MUX1)를 포함할 수 있다.
제1 논리 회로(AND1)는 제1 활성화 신호(EN1) 및 입력 데이터(XN)의 논리 곱 연산에 기초하여 제1 논리 연산 신호를 생성할 수 있다. 제1 활성화 신호(EN1)는 입력 데이터(XN)의 다항식의 차수에 따라 제1 논리 값 또는 제2 논리 값을 가질 수 있다. 제1 논리 값은 비트 값 '1' 또는 논리 하이 레벨에 대응할 수 있다. 제2 논리 값은 비트 값 '0' 또는 논리 로우 레벨에 대응할 수 있다. 제1 논리 회로(AND1)는 제1 논리 연산 신호를 제1 데이터 버퍼 회로(DBC1) 및 제1 버터플라이 연산기(BF1)에게 제공할 수 있다.
제1 가중치 버퍼 회로(WBC1)는 프로세서(153) 또는 별도의 메모리 장치로부터 입력 데이터(XN)에 대응하는 제1 가중치 데이터를 수신할 수 있다. 제1 가중치 버퍼 회로(WBC1)는 제1 가중치 데이터를 제1 버터플라이 연산기(BF1)에게 제공할 수 있다.
제1 데이터 버퍼 회로(DBC1)는 제1 논리 회로(AND1)로부터 제1 논리 연산 신호를 수신할 수 있다.
제1 버터플라이 연산기(BF1)는 제1 논리 회로(AND1)로부터 제1 논리 연산 신호를 수신하고, 제1 가중치 버퍼 회로(WBC1)로부터 제1 가중치 데이터를 수신하고, 그리고 제1 데이터 버퍼 회로(DBC1)와의 통신에 기초하여 제1 논리 연산 신호 및 제1 가중치 데이터의 버터플라이 연산을 수행함으로써 제1 버터플라이 연산 신호를 생성할 수 있다. 제1 버터플라이 연산기(BF1)는 제1 버터플라이 연산 신호를 제1 멀티플렉서(MUX1)에게 제공할 수 있다.
제1 바이패스 회로(BPC1)는 입력 데이터(XN)를 수신할 수 있다. 제1 바이패스 회로(BPC1)는 입력 데이터(XN)를 바이패스 시킴으로써, 입력 데이터(XN)를 제1 멀티플렉서(MUX1)에게 제공할 수 있다.
제1 멀티플렉서(MUX1)는 제1 버터플라이 연산기(BF1)로부터 제1 버터플라이 연산 신호를 수신하고, 제1 바이패스 회로(BPC1)로부터 입력 데이터(XN)를 수신하고, 제1 활성화 신호(EN1)가 제1 논리 값을 갖는 것에 응답하여 제1 출력 데이터로서 제1 버터플라이 연산 신호를 제2 스테이지(STG2)로 출력하고, 그리고 제1 활성화 신호(EN1)가 제2 논리 값을 갖는 것에 응답하여 제1 출력 데이터로서 입력 데이터(XN)를 제2 스테이지(STG2)로 출력할 수 있다.
이와 유사하게, 제2 스테이지(STG2)는 제1 스테이지(STG1)로부터 제1 출력 데이터를 수신하고, 그리고 제2 활성화 신호(EN2)에 기초하여 제1 출력 데이터의 버터플라이 연산을 수행하거나 또는 제1 출력 데이터를 바이패스 시킴으로써 제2 출력 데이터를 생성할 수 있다. 제2 스테이지(STG2)는 제2 출력 데이터를 제3 스테이지(STG3)에게 제공할 수 있다. 제2 스테이지(STG2)는 제2 논리 회로(AND2), 제2 가중치 버퍼 회로(WBC2), 제2 데이터 버퍼 회로(DBC2), 제2 버터플라이 연산기(BF2), 제2 바이패스 회로(BPC2), 및 제2 멀티플렉서(MUX2)를 포함할 수 있다.
제2 논리 회로(AND2)는 제2 활성화 신호(EN2) 및 제1 출력 데이터의 논리 곱 연산에 기초하여 제2 논리 연산 신호를 생성할 수 있다. 제2 활성화 신호(EN2)는 입력 데이터(XN)의 다항식의 차수에 따라 제1 논리 값 또는 제2 논리 값을 가질 수 있다. 제2 논리 회로(AND2)는 제2 논리 연산 신호를 제2 데이터 버퍼 회로(DBC2) 및 제2 버터플라이 연산기(BF2)에게 제공할 수 있다.
제2 가중치 버퍼 회로(WBC2)는 프로세서(153) 또는 별도의 메모리 장치로부터 제1 출력 데이터에 대응하는 제2 가중치 데이터를 수신할 수 있다. 제2 가중치 버퍼 회로(WBC2)는 제2 가중치 데이터를 제2 버터플라이 연산기(BF2)에게 제공할 수 있다.
제2 데이터 버퍼 회로(DBC2)는 제2 논리 회로(AND2)로부터 제2 논리 연산 신호를 수신할 수 있다.
제2 버터플라이 연산기(BF2)는 제2 논리 회로(AND2)로부터 제2 논리 연산 신호를 수신하고, 제2 가중치 버퍼 회로(WBC2)로부터 제2 가중치 데이터를 수신하고, 그리고 제2 데이터 버퍼 회로(DBC2)와의 통신에 기초하여 제2 논리 연산 신호 및 제2 가중치 데이터의 버터플라이 연산을 수행함으로써 제2 버터플라이 연산 신호를 생성할 수 있다. 제2 버터플라이 연산기(BF2)는 제2 버터플라이 연산 신호를 제2 멀티플렉서(MUX2)에게 제공할 수 있다.
제2 바이패스 회로(BPC2)는 제1 출력 데이터를 수신할 수 있다. 제2 바이패스 회로(BPC2)는 제1 출력 데이터를 바이패스 시킴으로써, 제1 출력 데이터를 제2 멀티플렉서(MUX2)에게 제공할 수 있다.
제2 멀티플렉서(MUX2)는 제2 버터플라이 연산기(BF2)로부터 제2 버터플라이 연산 신호를 수신하고, 제2 바이패스 회로(BPC2)로부터 제1 출력 데이터를 수신하고, 제2 활성화 신호(EN2)가 제1 논리 값을 갖는 것에 응답하여 제2 출력 데이터로서 제2 버터플라이 연산 신호를 제3 스테이지(STG3)로 출력하고, 그리고 제2 활성화 신호(EN2)가 제2 논리 값을 갖는 것에 응답하여 제2 출력 데이터로서 제1 출력 데이터를 제3 스테이지(STG3)로 출력할 수 있다.
마찬가지로, 제K 스테이지(STGK)는 제(K-1) 스테이지(STGK-1)로부터 제(K-1) 출력 데이터를 수신하고, 그리고 제K 활성화 신호(ENK)에 기초하여 제(K-1) 출력 데이터의 버터플라이 연산을 수행하거나 또는 제(K-1) 출력 데이터를 바이패스 시킴으로써 제K 출력 데이터를 생성할 수 있다. 제K 출력 데이터는 입력 데이터(XN)의 NTT 연산의 최종 출력 데이터일 수 있고, 그리고 출력 데이터(YN)으로도 지칭될 수 있다. 제K 스테이지(STGK)는 출력 데이터(YN)를 데이터 I/O 회로(151)에게 제공할 수 있다. 제K 스테이지(STGK)는 제K 논리 회로(ANDK), 제K 가중치 버퍼 회로(WBCK), 제K 데이터 버퍼 회로(DBCK), 제K 버터플라이 연산기(BFK), 제K 바이패스 회로(BPCK), 및 제K 멀티플렉서(MUXK)를 포함할 수 있다.
제K 논리 회로(ANDK)는 제K 활성화 신호(ENK) 및 제(K-1) 출력 데이터의 논리 곱 연산에 기초하여 제K 논리 연산 신호를 생성할 수 있다. 제K 활성화 신호(ENK)는 입력 데이터(XN)의 다항식의 차수에 따라 제1 논리 값 또는 제2 논리 값을 가질 수 있다. 제K 논리 회로(ANDK)는 제K 논리 연산 신호를 제K 데이터 버퍼 회로(DBCK) 및 제K 버터플라이 연산기(BFK)에게 제공할 수 있다.
제K 가중치 버퍼 회로(WBCK)는 프로세서(153) 또는 별도의 메모리 장치로부터 제K 출력 데이터(즉, 출력 데이터(YN))에 대응하는 제K 가중치 데이터를 수신할 수 있다. 제K 가중치 버퍼 회로(WBCK)는 제K 가중치 데이터를 제K 버터플라이 연산기(BFK)에게 제공할 수 있다.
제K 데이터 버퍼 회로(DBCK)는 제K 논리 회로(ANDK)로부터 제K 논리 연산 신호를 수신할 수 있다.
제K 버터플라이 연산기(BFK)는 제K 논리 회로(ANDK)로부터 제K 논리 연산 신호를 수신하고, 제K 가중치 버퍼 회로(WBCK)로부터 제K 가중치 데이터를 수신하고, 그리고 제K 데이터 버퍼 회로(DBCK)와의 통신에 기초하여 제K 논리 연산 신호 및 제K 가중치 데이터의 버터플라이 연산을 수행함으로써 제K 버터플라이 연산 신호를 생성할 수 있다. 제K 버터플라이 연산기(BFK)는 제K 버터플라이 연산 신호를 제K 멀티플렉서(MUXK)에게 제공할 수 있다.
제K 바이패스 회로(BPCK)는 제(K-1) 출력 데이터를 수신할 수 있다. 제K 바이패스 회로(BPCK)는 제(K-1) 출력 데이터를 바이패스 시킴으로써, 제(K-1) 출력 데이터를 제K 멀티플렉서(MUXK)에게 제공할 수 있다.
제K 멀티플렉서(MUXK)는 제K 버터플라이 연산기(BFK)로부터 제K 버터플라이 연산 신호를 수신하고, 제K 바이패스 회로(BPCK)로부터 제(K-1) 출력 데이터를 수신하고, 제K 활성화 신호(ENK)가 제1 논리 값을 갖는 것에 응답하여 제K 출력 데이터(즉, 출력 데이터(YN))로서 제K 버터플라이 연산 신호를 출력하고, 그리고 제K 활성화 신호(ENK)가 제2 논리 값을 갖는 것에 응답하여 제K 출력 데이터(즉, 출력 데이터(YN))로서 제(K-1) 출력 데이터를 출력할 수 있다.
도 8은 본 개시의 일부 실시 예들에 따라 도 7의 활성화 신호들을 설명하는 테이블이다. 도 7 및 도 8을 참조하면, NTT 연산기에서 K의 예시 값에 대한 활성화 신호 세트를 설명하는 NTT 활성화 테이블이 설명된다. 활성화 신호 세트는 도 7의 NTT 연산기(152a)에서 사용되는 모든 활성화 신호들을 포함할 수 있다.
활성화 신호 세트는 제1 내지 제K 활성화 신호들(EN1~ENK)을 포함할 수 있다. 제1 내지 제K 활성화 신호들(EN1~ENK)의 각각의 논리 값은 입력 데이터(XN)의 차수에 따라 달라질 수 있다. 입력 데이터(XN)의 동형 암호문의 차수는 N일 수 있다. N은 2M일 수 있다. M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수일 수 있다.
제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제(K-M+1) 내지 제K 활성화 신호들(ENK-M+1~ENK)의 논리 값들의 각각은 제1 논리 값(예를 들어, 비트 값 '1')으로 설정될 수 있다. 단, M이 0이면, 제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제1 논리 값을 갖는 활성화 신호가 없을 수 있다.
제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제1 내지 제(K-M) 활성화 신호들(EN1~ENK-M)의 논리 값들의 각각은 제2 논리 값(예를 들어, 비트 값 '0')으로 설정될 수 있다. 단, M이 K이면, 제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제2 논리 값을 갖는 활성화 신호가 없을 수 있다.
이하에서, 본 개시의 이해를 돕기 위해 K는 16인 예시가 설명되지만, 본 개시의 범위가 이에 제한되는 것은 아니다.
일부 실시 예들에서, K는 16일 수 있다. 활성화 신호 세트는 제1 내지 제16 활성화 신호들(EN1~EN16)을 포함할 수 있다. NTT 연산기(152a)는 제1 내지 제16 스테이지들(STG1~STG16)을 포함할 수 있다. NTT 연산기(152a)의 입력 데이터(XN)의 동형 암호문의 차수는 N일 수 있다. N은 2M일 수 있다. M은 0보다 크거나 같고 그리고 16보다 작거나 같은 임의의 정수일 수 있다. 즉, M의 변화에 따라 입력 데이터(XN)의 차수가 가변적일 수 있고, 가변적인 차수의 입력 데이터(XN)에 따라 NTT 연산기(152a) 내에서 요구되는 스테이지들이 달라질 수 있다.
예를 들어, N은 216인 경우를 참조하면, M은 16일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 모두의 논리 값들의 각각은 비트 값 '1'로 설정될 수 있다. 이 때, 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서 비트 값 '0'을 갖는 활성화 신호가 없을 수 있다.
또 다른 예로서, N은 215인 경우를 참조하면, M은 15일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서, 제2 내지 제16 활성화 신호들(EN2~EN16)의 논리 값들의 각각은 비트 값 '1'로 설정될 수 있고, 그리고 제1 활성화 신호(EN1)의 논리 값은 비트 값 '0'으로 설정될 수 있다.
또 다른 예로서, N은 21인 경우를 참조하면, M은 1일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서, 제16 활성화 신호(EN16)의 논리 값은 비트 값 '1'로 설정될 수 있고, 그리고 제1 내지 제15 활성화 신호들(EN1~EN15)의 논리 값들의 각각은 비트 값 '0'으로 설정될 수 있다.
또 다른 예로서, N은 20인 경우를 참조하면, M은 0일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 모두의 논리 값들의 각각은 비트 값 '0'으로 설정될 수 있다. 이 때, 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서 비트 값 '1'을 갖는 활성화 신호가 없을 수 있다.
도 9는 본 개시의 일부 실시 예들에 따른 NTT 연산기를 설명하는 도면이다. 도 9를 참조하면, NTT 연산기(152a)는 제1 내지 제K 스테이지들(STG1~STGK) 및 보조 회로를 포함할 수 있다. 제1 내지 제K 스테이지들(STG1~STGK)은 동형 암호문의 다항식을 포함하는 입력 데이터(XN)의 NTT 연산을 수행함으로써 출력 데이터(YN)를 생성할 수 있다. 입력 데이터(XN)의 다항식의 차수는 N일 수 있다. N은 2K보다 같거나 작은 자연수일 수 있다. 제1 내지 제K 스테이지들(STG1~STGK)은 서로 직렬로 연결될 수 있다.
보조 회로는 활성화 관리 회로 및 가중치 메모리를 포함할 수 있다. 활성화 관리 회로는 입력 데이터(XN)의 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들(EN1~ENK)을 생성할 수 있다. 활성화 관리 회로는 제1 내지 제K 활성화 신호들(EN1~ENK)을 제1 내지 제K 스테이지들(STG1~STGK)에게 각각 제공할 수 있다.
가중치 메모리는 복수의 가중치 데이터를 저장할 수 있다. 예를 들어, 가중치 메모리는 도 2의 프로세서(153)로부터 또는 데이터 I/O 회로(151)를 통해서 외부 장치로부터 수신된 복수의 가중치 데이터를 저장할 수 있다. 가중치 메모리는 제1 내지 제K 스테이지들(STG1~STGK) 각각에게 제1 내지 제K 가중치 데이터(W1~WK)를 제공할 수 있다.
제1 내지 제K 가중치 데이터(W1~WK)는 입력 데이터(XN)의 다항식의 차수에 기초하여 제1 내지 제K 스테이지들(STG1~STGK)에게 적합한 것으로 결정된 가중치 데이터일 수 있다. 예를 들어, 도 6을 함께 참조하면, 제1 스테이지(STG1)에 적합한 가중치 데이터는 '1'의 트위들 팩터일 수 있다. 제2 스테이지(STG2)에 적합한 가중치 데이터는 '1' 또는 '2'의 트위들 팩터일 수 있다. 또 다른 예로서, 가중치 메모리는 비활성화된 스테이지(즉, 제2 논리 값을 갖는 활성화 신호를 수신하는 스테이지)에게 가중치 데이터를 제공하지 않을 수 있다.
제1 내지 제K 스테이지들(STG1~STGK)의 각각은 제1 내지 제K 활성화 신호들(EN1~ENK) 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 입력 데이터(XN) 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행할 수 있다.
제1 내지 제K 스테이지들(STG1~STGK)의 각각은 제1 내지 제K 활성화 신호들(EN1~ENK) 중 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 입력 데이터(XN) 또는 이전 스테이지의 출력 데이터를 바이패스 시킬 수 있다.
제1 스테이지(STG1)는 도 2의 데이터 I/O 회로(151)로부터 입력 데이터(XN)를 수신할 수 있다. 제1 스테이지(STG1)는 보조 회로로부터 제1 활성화 신호(EN1) 및 제1 가중치 데이터(W1)를 수신할 수 있다. 제1 스테이지(STG1)는 제1 바이패스 회로(BPC1), 제1 데이터 버퍼 회로(DBC1), 제1 버터플라이 연산기(BF1), 제1 가중치 버퍼 회로(WBC1), 제1 논리 회로(AND1), 및 제1 멀티플렉서(MUX1)를 포함할 수 있다.
제1 스테이지(STG1)는 제1 활성화 신호(EN1)가 제1 논리 값을 가리키는 것에 응답하여, 제1 버터플라이 연산기(BF1)를 통해 입력 데이터(XN) 및 제1 가중치 데이터(W1)의 버터플라이 연산을 수행하여 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(STG1)는 제1 활성화 신호(EN1)가 제2 논리 값을 가리키는 것에 응답하여, 제1 바이패스 회로(BPC1)를 통해 입력 데이터(XN)를 바이패스 시킴으로써 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(STG1)는 제1 출력 데이터를 제2 스테이지(STG2)에게 제공할 수 있다.
이와 유사하게, 제2 스테이지(STG2)는 제1 스테이지(STG1)로부터 제1 출력 데이터를 수신할 수 있다. 제2 스테이지(STG2)는 보조 회로로부터 제2 활성화 신호(EN2) 및 제2 가중치 데이터(W2)를 수신할 수 있다. 제2 스테이지(STG2)는 제2 활성화 신호(EN2)가 제1 논리 값을 가리키는 것에 응답하여, 제2 버터플라이 연산기(BF2)를 통해 제1 출력 데이터 및 제2 가중치 데이터(W2)의 버터플라이 연산을 수행하여 제2 출력 데이터를 생성할 수 있다. 제2 스테이지(STG2)는 제2 활성화 신호(EN2)가 제2 논리 값을 가리키는 것에 응답하여, 제2 바이패스 회로(BPC2)를 통해 제1 출력 데이터를 바이패스 시킴으로써 제2 출력 데이터를 생성할 수 있다. 제2 스테이지(STG2)는 제2 출력 데이터를 제3 스테이지(STG3)에게 제공할 수 있다.
마찬가지로, 제K 스테이지(STGK)는 제(K-1) 스테이지(STGK-1)로부터 제(K-1) 출력 데이터를 수신할 수 있다. 제K 스테이지(STGK)는 보조 회로로부터 제K 활성화 신호(ENK) 및 제K 가중치 데이터(WK)를 수신할 수 있다. 제K 스테이지(STGK)는 제K 활성화 신호(ENK)가 제1 논리 값을 가리키는 것에 응답하여, 제K 버터플라이 연산기(BFK)를 통해 제(K-1) 출력 데이터 및 제K 가중치 데이터(WK)의 버터플라이 연산을 수행하여 출력 데이터(YN)를 생성할 수 있다. 제K 스테이지(STGK)는 제K 활성화 신호(ENK)가 제2 논리 값을 가리키는 것에 응답하여, 제K 바이패스 회로(BPCK)를 통해 제(K-1) 출력 데이터를 바이패스 시킴으로써 출력 데이터(YN)를 생성할 수 있다. 출력 데이터(YN)는 입력 데이터(XN)의 NTT 연산의 최종 출력 데이터일 수 있다. 제K 스테이지(STGK)는 도 2의 데이터 I/O 회로(151)에게 출력 데이터(YN)를 제공할 수 있다.
도 10은 고정 INTT 연산기를 설명하는 도면이다. 도 10을 참조하면, 고정 INTT 연산기는 입력 데이터(XN)의 INTT 연산을 수행하도록 구성될 수 있다. INTT 연산은 NTT의 연산에 대응되는 연산일 수 있다. 입력 데이터(XN)에 포함된 동형 암호문의 다항식의 차수는 N일 수 있다. N은 2K일 수 있다. 고정 INTT 연산기는 직렬로 연결된 제1 내지 제K 스테이지들(iSTG1~iSTGK)을 포함할 수 있다. 제1 내지 제K 스테이지들(iSTG1~iSTGK)은 입력 데이터(XN)의 INTT 연산을 수행할 수 있다.
제1 내지 제K 스테이지들(iSTG1~iSTGK)은 직렬로 연결될 수 있다. 제1 스테이지(iSTG1)는 입력 데이터(XN)의 버터플라이 연산에 기초하여 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(iSTG1)의 제1 출력 데이터는 제2 스테이지(iSTG2)의 입력 데이터일 수 있다. 이와 유사하게, 제(K-1) 스테이지(iSTGK-1)는 제(K-2) 스테이지(iSTGK-2)로부터 수신된 제(K-2) 출력 데이터의 버터플라이 연산에 기초하여 제(K-1) 출력 데이터를 생성할 수 있다. 제K 스테이지(iSTGK)는 제(K-1) 스테이지(iSTGK-1)로부터 수신된 제(K-1) 출력 데이터의 버터플라이 연산에 기초하여 제K 출력 데이터를 생성할 수 있다. 제K 출력 데이터는 출력 데이터(YN)일 수 있다. 즉, 제K 스테이지(iSTGK)는 입력 데이터(XN)의 INTT 연산의 최종 출력 데이터인 출력 데이터(YN)를 생성할 수 있다.
보다 상세하게는, 제1 스테이지(iSTG1)는 제1 데이터 버퍼 회로(DBC1), 제1 버터플라이 연산기(BF1), 및 제1 가중치 버퍼 회로(WBC1)를 포함할 수 있다. 제1 가중치 버퍼 회로(WBC1)는 입력 데이터(XN)에 대응하는 제1 가중치 데이터를 수신할 수 있다. 제1 데이터 버퍼 회로(DBC1)는 입력 데이터(XN)를 수신할 수 있다. 제1 버터플라이 연산기(BF1)는 외부로부터 입력 데이터(XN)를 수신하고, 제1 가중치 버퍼 회로(WBC1)로부터 제1 가중치 데이터를 수신하고, 그리고 제1 데이터 버퍼 회로(DBC1)와의 통신에 기초하여 입력 데이터(XN) 및 제1 가중치 데이터의 버터플라이 연산을 수행함으로써 제1 버터플라이 연산 신호를 생성할 수 있다. 제1 버터플라이 연산기(BF1)는 제1 버터플라이 연산 신호를 제2 스테이지(iSTG2)에게 제공할 수 있다.
이와 유사하게, 제(K-1) 스테이지(iSTGK-1)는 제(K-1) 데이터 버퍼 회로(DBCK-1), 제(K-1) 버터플라이 연산기(BFK-1), 및 제(K-1) 가중치 버퍼 회로(WBCK-1)를 포함할 수 있다. 제(K-1) 버터플라이 연산기(BFK-1)는 제(K-2) 스테이지(iSTGK-2)로부터 제(K-2) 버터플라이 연산 신호를 수신하고, 제(K-1) 가중치 버퍼 회로(WBCK-1)로부터 제(K-1) 가중치 데이터를 수신하고, 그리고 제(K-1) 데이터 버퍼 회로(DBCK-1)와의 통신에 기초하여 제(K-2) 버터플라이 연산 신호 및 제(K-1) 가중치 데이터의 버터플라이 연산을 수행함으로써 제(K-1) 버터플라이 연산 신호를 생성할 수 있다.
마찬가지로, 제K 스테이지(iSTGK)는 제K 데이터 버퍼 회로(DBCK), 제K 버터플라이 연산기(BFK), 및 제K 가중치 버퍼 회로(WBCK)를 포함할 수 있다. 제K 버터플라이 연산기(BFK)는 제(K-1) 스테이지(iSTGK-1)로부터 제(K-1) 버터플라이 연산 신호를 수신하고, 제K 가중치 버퍼 회로(WBCK)로부터 제K 가중치 데이터를 수신하고, 그리고 제K 데이터 버퍼 회로(DBCK)와의 통신에 기초하여 제(K-1) 버터플라이 연산 신호 및 제K 가중치 데이터의 버터플라이 연산을 수행함으로써 출력 데이터(YN)를 생성할 수 있다.
상술된 바와 같이, 고정 INTT 연산기의 복수의 스테이지들은 입력 데이터에 대한 동형 암호문의 INTT 연산을 수행할 수 있다. 고정 INTT 연산기의 복수의 스테이지들의 개수(즉, K)는 입력 데이터(XN)의 동형 암호문의 다항식의 차수(즉, N)와 상관 관계를 가질 수 있다. 따라서, 동형 암호문의 차수가 달라지면, INTT 연산기에서 요구되는 스테이지들의 개수가 달라질 수 있다. 동형 암호문의 차수 및 요구되는 스테이지들의 개수의 관계는 도 11을 참조하여 보다 상세하게 설명될 것이다.
도 11은 본 개시의 일부 실시 예들에 따른 INTT 테이블이다. 도 11을 참조하면, 16개의 스테이지들을 포함하는 INTT 연산기가 가변적인 차수의 동형 암호문을 포함하는 입력 데이터를 처리하는 경우, 각 스테이지에서 처리되는 데이터의 차수 및 가중치 데이터의 트위들 팩터가 설명된다.
이하에서, 도 11을 참조하여 설명되는 INTT 연산기에서, K는 INTT 연산기 내의 스테이지들의 개수를 나타낼 수 있다. 입력 데이터의 동형 암호문의 차수는 N일 수 있다. N은 2M일 수 있다. M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수일 수 있다. 즉, M의 변화에 따라 입력 데이터의 차수가 가변적일 수 있고, 가변적인 차수의 입력 데이터에 따라 INTT 연산기 내에서 요구되는 스테이지들이 달라질 수 있다.
예를 들어, N은 216인 경우를 참조하면, INTT 연산기의 16개의 스테이지들이 모두 요구될 수 있다. INTT 연산기는 모든 스테이지들의 버터플라이 연산들을 순차적으로 수행함으로써, INTT 연산의 출력 데이터를 획득할 수 있다.
또 다른 예로서, N은 215인 경우를 참조하면, INTT 연산기의 16개의 스테이지들 중 15개의 스테이지들이 요구될 수 있다. INTT 연산기는 제1 내지 제15 스테이지들의 버터플라이 연산들을 순차적으로 수행하고, 제16 스테이지를 비활성화 시킴으로써, INTT 연산의 출력 데이터를 획득할 수 있다.
또 다른 예로서, N은 21인 경우를 참조하면, INTT 연산기의 16개의 스테이지들 중 1개의 스테이지가 요구될 수 있다. INTT 연산기는 제1 스테이지의 버터플라이 연산을 수행하고, 제2 내지 제16 스테이지들을 비활성화 시킴으로써, INTT 연산의 출력 데이터를 획득할 수 있다.
또 다른 예로서, N은 20인 경우를 참조하면, INTT 연산기의 16개의 스테이지들 모두가 요구되지 않을 수 있다. INTT 연산기는 모든 스테이지들(즉, 제1 내지 제16 스테이지들)을 비활성화시키고, 입력 데이터를 그대로 바이패스(bypass) 시킴으로써 INTT 연산의 출력 데이터를 획득할 수 있다.
일부 실시 예들에서, INTT 연산기의 제1 내지 제K 스테이지들의 연산들은 각각 NTT 연산기의 제1 내지 제K 스테이지들의 연산들에 역-순서(inverse-order)로 대응할 수 있다. 예를 들어, NTT 연산기의 제1 스테이지의 연산은 INTT 연산기의 제K 스테이지의 연산에 대응될 수 있다. NTT 연산기의 제2 스테이지의 연산은 INTT 연산기의 제(K-1) 스테이지의 연산에 대응될 수 있다. NTT 연산기의 제K 스테이지의 연산은 INTT 연산기의 제1 스테이지의 연산에 대응될 수 있다.
상술된 바와 같이, 입력 데이터의 동형 암호문의 차수가 달라지면, INTT 연산기에서 요구되는 스테이지들의 개수가 달라질 수 있다. 가변적인 차수의 동형 암호문을 효율적으로 처리하기 위해, 스테이지들을 선택적으로 활성화하는 INTT 연산기가 요구될 수 있다. 가변적인 차수의 동형 암호문을 처리하는 INTT 연산기는 도 12 내지 도 14를 참조하여 보다 상세하게 설명될 것이다.
도 12는 본 개시의 일부 실시 예들에 따라 도 2의 INTT 연산기를 설명하는 도면이다. 도 2 및 도 12를 참조하면, INTT 연산기(152b)는 데이터 I/O 회로(151)로부터 입력 데이터(XN)를 수신할 수 있다. INTT 연산기(152b)는 입력 데이터(XN)의 INTT 연산에 기초하여 출력 데이터(YN)를 생성할 수 있다. INTT 연산기(152b)는 출력 데이터(YN)를 데이터 I/O 회로(151)에게 제공할 수 있다. 이 때, 입력 데이터(XN) 및 출력 데이터(YN)의 차수는 가변적일 수 있다. INTT 연산기(152b)는 가변적인 차수를 갖는 입력 데이터(XN)의 동형 암호 연산을 효율적으로 수행할 수 있다.
INTT 연산기(152b)는 입력 데이터(XN)의 INTT 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들(iSTG1~iSTGK)을 포함할 수 있다.
제1 스테이지(iSTG1)는 입력 데이터(XN)를 수신하고, 그리고 제1 활성화 신호(EN1)에 기초하여 입력 데이터(XN)의 버터플라이 연산을 수행하거나 또는 입력 데이터(XN)를 바이패스 시킴으로써 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(iSTG1)는 제1 출력 데이터를 제2 스테이지(iSTG2)에게 제공할 수 있다. 제1 스테이지(iSTG1)는 제1 논리 회로(AND1), 제1 가중치 버퍼 회로(WBC1), 제1 데이터 버퍼 회로(DBC1), 제1 버터플라이 연산기(BF1), 제1 바이패스 회로(BPC1), 및 제1 멀티플렉서(MUX1)를 포함할 수 있다.
입력 및 출력의 방향이 반대인 것을 제외하고는, INTT 연산기(152b)의 제1 스테이지(iSTG1)는 도 7의 NTT 연산기(152a)의 제K 스테이지(STGK)와 유사하게 동작할 수 있으며, 설명의 간략함을 위해 제1 스테이지(iSTG1)의 구성 요소들에 대한 상세한 설명은 생략된다.
이와 유사하게, 제(K-1) 스테이지(iSTGK-1)는 제(K-2) 스테이지(iSTGK-2)로부터 제(K-2) 출력 데이터를 수신하고, 그리고 제(K-1) 활성화 신호(ENK-1)에 기초하여 제(K-2) 출력 데이터의 버터플라이 연산을 수행하거나 또는 제(K-2) 출력 데이터를 바이패스 시킴으로써 제(K-1) 출력 데이터를 생성할 수 있다. 제(K-1) 스테이지(iSTGK-1)는 제(K-1) 출력 데이터를 제K 스테이지(iSTGK)에게 제공할 수 있다. 제(K-1) 스테이지(iSTGK-1)는 제(K-1) 논리 회로(ANDK-1), 제(K-1) 가중치 버퍼 회로(WBCK-1), 제(K-1) 데이터 버퍼 회로(DBCK-1), 제(K-1) 버터플라이 연산기(BFK-1), 제(K-1) 바이패스 회로(BPCK-1), 및 제(K-1) 멀티플렉서(MUXK-1)를 포함할 수 있다.
INTT 연산기(152b)의 제(K-1) 스테이지(iSTGK-1)는 도 7의 NTT 연산기(152a)의 제2 스테이지(STG2)와 유사하게 동작할 수 있으며, 설명의 간략함을 위해 제(K-1) 스테이지(iSTGK-1)의 구성 요소들에 대한 상세한 설명은 생략된다.
마찬가지로, 제K 스테이지(iSTGK)는 제(K-1) 스테이지(iSTGK-1)로부터 제(K-1) 출력 데이터를 수신하고, 그리고 제K 활성화 신호(ENK)에 기초하여 제(K-1) 출력 데이터의 버터플라이 연산을 수행하거나 또는 제(K-1) 출력 데이터를 바이패스 시킴으로써 제K 출력 데이터를 생성할 수 있다. 제K 출력 데이터는 입력 데이터(XN)의 INTT 연산의 최종 출력 데이터일 수 있고, 그리고 출력 데이터(YN)으로도 지칭될 수 있다. 제K 스테이지(iSTGK)는 출력 데이터(YN)를 데이터 I/O 회로(151)에게 제공할 수 있다. 제K 스테이지(iSTGK)는 제K 논리 회로(ANDK), 제K 가중치 버퍼 회로(WBCK), 제K 데이터 버퍼 회로(DBCK), 제K 버터플라이 연산기(BFK), 제K 바이패스 회로(BPCK), 및 제K 멀티플렉서(MUXK)를 포함할 수 있다.
INTT 연산기(152b)의 제K 스테이지(iSTGK)는 도 7의 NTT 연산기(152a)의 제1 스테이지(STG1)와 유사하게 동작할 수 있으며, 설명의 간략함을 위해 제K 스테이지(iSTGK)의 구성 요소들에 대한 상세한 설명은 생략된다.
도 13은 본 개시의 일부 실시 예들에 따라 도 12의 활성화 신호들을 설명하는 테이블이다. 도 12 및 도 13을 참조하면, INTT 연산기에서 K의 예시 값에 대한 활성화 신호 세트를 설명하는 INTT 활성화 테이블이 설명된다. 활성화 신호 세트는 도 12의 INTT 연산기(152b)에서 사용되는 모든 활성화 신호들을 포함할 수 있다.
활성화 신호 세트는 제1 내지 제K 활성화 신호들(EN1~ENK)을 포함할 수 있다. 제1 내지 제K 활성화 신호들(EN1~ENK)의 각각의 논리 값은 입력 데이터(XN)의 차수에 따라 달라질 수 있다. 입력 데이터(XN)의 동형 암호문의 차수는 N일 수 있다. N은 2M일 수 있다. M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수일 수 있다.
제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제1 내지 제M 활성화 신호들(EN1~ENM)의 논리 값들의 각각은 제1 논리 값(예를 들어, 비트 값 '1')으로 설정될 수 있다. 단, M이 0이면, 제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제1 논리 값을 갖는 활성화 신호가 없을 수 있다.
제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제(M+1) 내지 제K 활성화 신호들(ENM+1~ENK)의 논리 값들의 각각은 제2 논리 값(예를 들어, 비트 값 '0')으로 설정될 수 있다. 단, M이 K이면, 제1 내지 제K 활성화 신호들(EN1~ENK) 중에서 제2 논리 값을 갖는 활성화 신호가 없을 수 있다.
이하에서, 본 개시의 이해를 돕기 위해 K는 16인 예시가 설명되지만, 본 개시의 범위가 이에 제한되는 것은 아니다.
일부 실시 예들에서, K는 16일 수 있다. 활성화 신호 세트는 제1 내지 제16 활성화 신호들(EN1~EN16)을 포함할 수 있다. INTT 연산기(152b)는 제1 내지 제16 스테이지들(iSTG1~iSTG16)을 포함할 수 있다. INTT 연산기(152b)의 입력 데이터(XN)의 동형 암호문의 차수는 N일 수 있다. N은 2M일 수 있다. M은 0보다 크거나 같고 그리고 16보다 작거나 같은 임의의 정수일 수 있다. 즉, M의 변화에 따라 입력 데이터(XN)의 차수가 가변적일 수 있고, 가변적인 차수의 입력 데이터(XN)에 따라 INTT 연산기(152b) 내에서 요구되는 스테이지들이 달라질 수 있다.
예를 들어, N은 216인 경우를 참조하면, M은 16일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 모두의 논리 값들의 각각은 비트 값 '1'로 설정될 수 있다. 이 때, 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서 비트 값 '0'을 갖는 활성화 신호가 없을 수 있다.
또 다른 예로서, N은 215인 경우를 참조하면, M은 15일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서, 제1 내지 제15 활성화 신호들(EN1~EN15)의 논리 값들의 각각은 비트 값 '1'로 설정될 수 있고, 그리고 제16 활성화 신호(EN16)의 논리 값은 비트 값 '0'으로 설정될 수 있다.
또 다른 예로서, N은 21인 경우를 참조하면, M은 1일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서, 제1 활성화 신호(EN1)의 논리 값은 비트 값 '1'로 설정될 수 있고, 그리고 제2 내지 제16 활성화 신호들(EN2~EN16)의 논리 값들의 각각은 비트 값 '0'으로 설정될 수 있다.
또 다른 예로서, N은 20인 경우를 참조하면, M은 0일 수 있다. 제1 내지 제16 활성화 신호들(EN1~EN16) 모두의 논리 값들의 각각은 비트 값 '0'으로 설정될 수 있다. 이 때, 제1 내지 제16 활성화 신호들(EN1~EN16) 중에서 비트 값 '1'을 갖는 활성화 신호가 없을 수 있다.
도 14는 본 개시의 일부 실시 예들에 따른 INTT 연산기를 설명하는 도면이다. 도 14를 참조하면, INTT 연산기(152b)는 제1 내지 제K 스테이지들(iSTG1~iSTGK) 및 보조 회로를 포함할 수 있다. 제1 내지 제K 스테이지들(iSTG1~iSTGK)은 동형 암호문의 다항식을 포함하는 입력 데이터(XN)의 INTT 연산을 수행함으로써 출력 데이터(YN)를 생성할 수 있다. 입력 데이터(XN)의 다항식의 차수는 N일 수 있다. N은 2K보다 같거나 작은 자연수일 수 있다. 제1 내지 제K 스테이지들(iSTG1~iSTGK)은 서로 직렬로 연결될 수 있다.
보조 회로는 활성화 관리 회로 및 가중치 메모리를 포함할 수 있다. 활성화 관리 회로는 입력 데이터(XN)의 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들(EN1~ENK)을 생성할 수 있다. 활성화 관리 회로는 제1 내지 제K 활성화 신호들(EN1~ENK)을 제1 내지 제K 스테이지들(iSTG1~iSTGK)에게 각각 제공할 수 있다.
가중치 메모리는 복수의 가중치 데이터를 저장할 수 있다. 예를 들어, 가중치 메모리는 도 2의 프로세서(153)로부터 또는 데이터 I/O 회로(151)를 통해서 외부 장치로부터 수신된 복수의 가중치 데이터를 저장할 수 있다. 가중치 메모리는 제1 내지 제K 스테이지들(iSTG1~iSTGK) 각각에게 제1 내지 제K 가중치 데이터(W1~WK)를 제공할 수 있다.
제1 내지 제K 가중치 데이터(W1~WK)는 입력 데이터(XN)의 다항식의 차수에 기초하여 제1 내지 제K 스테이지들(iSTG1~iSTGK)에게 적합한 것으로 결정된 가중치 데이터일 수 있다. 예를 들어, 도 11을 함께 참조하면, 제16 스테이지(iSTG16)에 적합한 가중치 데이터는 '1'의 트위들 팩터일 수 있다. 제15 스테이지(iSTG15)에 적합한 가중치 데이터는 '1' 또는 '2'의 트위들 팩터일 수 있다. 또 다른 예로서, 가중치 메모리는 비활성화된 스테이지(즉, 제2 논리 값을 갖는 활성화 신호를 수신하는 스테이지)에게 가중치 데이터를 제공하지 않을 수 있다.
제1 내지 제K 스테이지들(iSTG1~iSTGK)의 각각은 제1 내지 제K 활성화 신호들(EN1~ENK) 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 입력 데이터(XN) 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행할 수 있다.
제1 내지 제K 스테이지들(iSTG1~iSTGK)의 각각은 제1 내지 제K 활성화 신호들(EN1~ENK) 중 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 입력 데이터(XN) 또는 이전 스테이지의 출력 데이터를 바이패스 시킬 수 있다.
제1 스테이지(iSTG1)는 도 2의 데이터 I/O 회로(151)로부터 입력 데이터(XN)를 수신할 수 있다. 제1 스테이지(iSTG1)는 보조 회로로부터 제1 활성화 신호(EN1) 및 제1 가중치 데이터(W1)를 수신할 수 있다. 제1 스테이지(iSTG1)는 제1 바이패스 회로(BPC1), 제1 데이터 버퍼 회로(DBC1), 제1 버터플라이 연산기(BF1), 제1 가중치 버퍼 회로(WBC1), 제1 논리 회로(AND1), 및 제1 멀티플렉서(MUX1)를 포함할 수 있다.
제1 스테이지(iSTG1)는 제1 활성화 신호(EN1)가 제1 논리 값을 가리키는 것에 응답하여, 제1 버터플라이 연산기(BF1)를 통해 입력 데이터(XN) 및 제1 가중치 데이터(W1)의 버터플라이 연산을 수행하여 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(iSTG1)는 제1 활성화 신호(EN1)가 제2 논리 값을 가리키는 것에 응답하여, 제1 바이패스 회로(BPC1)를 통해 입력 데이터(XN)를 바이패스 시킴으로써 제1 출력 데이터를 생성할 수 있다. 제1 스테이지(iSTG1)는 제1 출력 데이터를 제2 스테이지(iSTG2)에게 제공할 수 있다. INTT 연산기(152b)의 제1 스테이지(iSTG1)는 도 9의 NTT 연산기(152a)의 제K 스테이지(STGK)에 대응할 수 있다.
이와 유사하게, 제(K-1) 스테이지(iSTGK-1)는 제(K-2) 스테이지(iSTGK-2)로부터 제(K-2) 출력 데이터를 수신할 수 있다. 제(K-1) 스테이지(iSTGK-1)는 보조 회로로부터 제(K-1) 활성화 신호(ENK-1) 및 제(K-1) 가중치 데이터(WK-1)를 수신할 수 있다. 제(K-1) 스테이지(iSTGK-1)는 제(K-1) 활성화 신호(ENK-1)가 제1 논리 값을 가리키는 것에 응답하여, 제(K-1) 버터플라이 연산기(BFK-1)를 통해 제(K-2) 출력 데이터 및 제(K-1) 가중치 데이터(WK-1)의 버터플라이 연산을 수행하여 제(K-1) 출력 데이터를 생성할 수 있다. 제(K-1) 스테이지(iSTGK-1)는 제(K-1) 활성화 신호(ENK-1)가 제2 논리 값을 가리키는 것에 응답하여, 제(K-1) 바이패스 회로(BPCK-1)를 통해 제(K-2) 출력 데이터를 바이패스 시킴으로써 제(K-1) 출력 데이터를 생성할 수 있다. 제(K-1) 스테이지(iSTGK-1)는 제(K-1) 출력 데이터를 제K 스테이지(iSTGK)에게 제공할 수 있다. INTT 연산기(152b)의 제(K-1) 스테이지(iSTGK-1)는 도 9의 NTT 연산기(152a)의 제2 스테이지(STG2)에 대응할 수 있다.
마찬가지로, 제K 스테이지(iSTGK)는 제(K-1) 스테이지(iSTGK-1)로부터 제(K-1) 출력 데이터를 수신할 수 있다. 제K 스테이지(iSTGK)는 보조 회로로부터 제K 활성화 신호(ENK) 및 제K 가중치 데이터(WK)를 수신할 수 있다. 제K 스테이지(iSTGK)는 제K 활성화 신호(ENK)가 제1 논리 값을 가리키는 것에 응답하여, 제K 버터플라이 연산기(BFK)를 통해 제(K-1) 출력 데이터 및 제K 가중치 데이터(WK)의 버터플라이 연산을 수행하여 출력 데이터(YN)를 생성할 수 있다. 제K 스테이지(iSTGK)는 제K 활성화 신호(ENK)가 제2 논리 값을 가리키는 것에 응답하여, 제K 바이패스 회로(BPCK)를 통해 제(K-1) 출력 데이터를 바이패스 시킴으로써 출력 데이터(YN)를 생성할 수 있다. 출력 데이터(YN)는 입력 데이터(XN)의 INTT 연산의 최종 출력 데이터일 수 있다. 제K 스테이지(iSTGK)는 도 2의 데이터 I/O 회로(151)에게 출력 데이터(YN)를 제공할 수 있다. INTT 연산기(152b)의 제K 스테이지(iSTGK)는 도 9의 NTT 연산기(152a)의 제1 스테이지(STG1)에 대응할 수 있다.
도 15는 본 개시의 일부 실시 예들에 따른 동형 암호 연산 장치를 설명하는 도면이다. 도 15를 참조하면, 동형 암호 연산 장치(250)는 데이터 I/O 회로(251), 연산 가속기(252), 및 프로세서(253)를 포함할 수 있다. 데이터 I/O 회로(251) 및 프로세서(253)는 도 2의 데이터 I/O 회로(151) 및 프로세서(153)와 유사하므로, 이에 대한 상세한 설명은 생략된다.
연산 가속기(252)는 NTT 모듈라 곱셈기(252a) 및 INTT 모듈라 곱셈기(252b)를 포함할 수 있다.
NTT 모듈라 곱셈기(252a)는 입력 데이터(XN)의 NTT 모듈라 곱셈 연산을 수행할 수 있다. NTT 모듈라 곱셈기(252a)는 제1 내지 제4 병렬 처리 요소들(PE1~PE4) 및 결합 요소(CE)를 포함할 수 있다. 제1 내지 제4 병렬 처리 요소들(PE1~PE4)은 각각 제1 내지 제4 병렬 신호들을 생성할 수 있다. 결합 요소(CE)는 제1 내지 제4 병렬 신호들의 결합 연산에 기초하여 결합 신호를 생성할 수 있다. 결합 신호는 NTT 모듈라 곱셈 연산의 결과일 수 있거나 또는 NTT 모듈라 곱셈 연산에 사용될 수 있다.
제1 내지 제4 병렬 처리 요소들(PE1~PE4)의 각각은 복수의 스테이지들 및 보조 회로를 포함할 수 있다. 보조 회로는 복수의 스테이지들에게 복수의 활성화 신호들을 생성할 수 있다. 예를 들어, 제1 병렬 처리 요소(PE1)는 스테이지들(STG11~STG1K) 및 보조 회로를 포함할 수 있다. 제2 병렬 처리 요소(PE2)는 스테이지들(STG21~STG2K) 및 보조 회로를 포함할 수 있다. 제3 병렬 처리 요소(PE3)는 스테이지들(STG31~STG3K) 및 보조 회로를 포함할 수 있다. 제4 병렬 처리 요소(PE4)는 스테이지들(STG41~STG4K) 및 보조 회로를 포함할 수 있다. 일부 실시 예들에서, 제1 내지 제4 병렬 처리 요소들(PE1~PE4)의 보조 회로들은 통합하여 하나의 보조 회로로 구현될 수도 있다.
설명의 편의를 위해 4개의 병렬 처리 요소들이 도시되었으나, 본 개시의 범위는 이에 제한되지 않는다. NTT 모듈라 곱셈기(252a) 내의 병렬 처리 요소들의 개수는 증가하거나 또는 감소할 수 있다.
INTT 모듈라 곱셈기(252b)는 입력 데이터(XN)의 INTT 모듈라 곱셈 연산을 수행할 수 있다. INTT 모듈라 곱셈기(252b)는 제1 내지 제4 역-병렬 처리 요소들(iPE1~iPE4) 및 역-결합 요소(iCE)를 포함할 수 있다. 제1 내지 제4 역-병렬 처리 요소들(iPE1~iPE4)은 각각 제1 내지 제4 역-병렬 신호들을 생성할 수 있다. 역-결합 요소(iCE)는 제1 내지 제4 역-병렬 신호들의 결합 연산에 기초하여 역-결합 신호를 생성할 수 있다. 역-결합 신호는 INTT 모듈라 곱셈 연산의 결과일 수 있거나 또는 INTT 모듈라 곱셈 연산에 사용될 수 있다.
제1 내지 제4 역-병렬 처리 요소들(iPE1~iPE4)의 각각은 복수의 스테이지들 및 보조 회로를 포함할 수 있다. 보조 회로는 복수의 스테이지들에게 복수의 활성화 신호들을 생성할 수 있다. 예를 들어, 제1 역-병렬 처리 요소(iPE1)는 스테이지들(iSTG11~iSTG1K) 및 보조 회로를 포함할 수 있다. 제2 역-병렬 처리 요소(iPE2)는 스테이지들(iSTG21~iSTG2K) 및 보조 회로를 포함할 수 있다. 제3 역-병렬 처리 요소(iPE3)는 스테이지들(iSTG31~iSTG3K) 및 보조 회로를 포함할 수 있다. 제4 역-병렬 처리 요소(iPE4)는 스테이지들(iSTG41~iSTG4K) 및 보조 회로를 포함할 수 있다. 일부 실시 예들에서, 제1 내지 제4 역-병렬 처리 요소들(iPE1~iPE4)의 보조 회로들은 통합하여 하나의 보조 회로로 구현될 수도 있다.
설명의 편의를 위해 4개의 역-병렬 처리 요소들이 도시되었으나, 본 개시의 범위는 이에 제한되지 않는다. INTT 모듈라 곱셈기(252b) 내의 역-병렬 처리 요소들의 개수는 증가하거나 또는 감소할 수 있다.
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 개시의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 암호 시스템
110: 통신 장치
120: 암호화 장치
130: 메모리 장치
140: 복호화 장치
150: 동형 암호 연산 장치
151: 데이터 I/O 회로
152: 연산 가속기
153: 프로세서

Claims (17)

  1. 연산 가속기에 있어서,
    동형 암호문의 다항식을 포함하는 제1 입력 데이터의 NTT(Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들; 및
    상기 제1 입력 데이터의 상기 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들을 생성하도록 구성된 제1 보조 회로를 포함하되,
    상기 제1 내지 제K 스테이지들의 각각은:
    상기 제1 내지 제K 활성화 신호들 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 상기 제1 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고; 그리고
    상기 제1 내지 제K 활성화 신호들 중 상기 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 상기 제1 입력 데이터 또는 상기 이전 스테이지의 상기 대응하는 출력 데이터를 바이패스(bypass) 시키도록 구성되고,
    상기 제1 입력 데이터의 상기 다항식의 상기 차수는 2K보다 같거나 작은 자연수이고, 그리고
    K는 임의의 자연수인 연산 가속기.
  2. 제 1 항에 있어서,
    상기 제1 입력 데이터의 상기 다항식의 상기 차수는 N이고,
    N은 2M이고, 그리고
    M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수인 연산 가속기.
  3. 제 2 항에 있어서,
    상기 제1 보조 회로는, 상기 제1 입력 데이터의 상기 다항식의 상기 차수에 기초하여:
    상기 제1 내지 제K 활성화 신호들 중 제(K-M+1) 내지 제K 활성화 신호들의 논리 값들의 각각을 상기 제1 논리 값으로 설정하고(단, M이 0이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제1 논리 값을 갖는 활성화 신호가 없음); 그리고
    상기 제1 내지 제K 활성화 신호들 중 제1 내지 제(K-M) 활성화 신호들의 논리 값들의 각각을 제2 논리 값으로 설정(단, M이 K이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제2 논리 값을 갖는 활성화 신호가 없음)하도록 더 구성된 연산 가속기.
  4. 제 1 항에 있어서,
    상기 제1 내지 제K 스테이지들 중 제1 스테이지는:
    상기 제1 내지 제K 활성화 신호들 중 제1 활성화 신호 및 상기 제1 입력 데이터의 논리곱 연산에 기초하여 제1 논리 연산 신호를 생성하도록 구성된 제1 논리 회로;
    상기 제1 보조 회로로부터 상기 제1 입력 데이터에 대응하는 제1 가중치 데이터를 수신하도록 구성된 제1 가중치 버퍼 회로;
    상기 제1 논리 회로로부터 상기 제1 논리 연산 신호를 수신하도록 구성된 제1 데이터 버퍼 회로;
    상기 제1 논리 회로로부터 상기 제1 논리 연산 신호를 수신하고, 상기 제1 가중치 버퍼 회로로부터 상기 제1 가중치 데이터를 수신하고, 그리고 상기 제1 데이터 버퍼 회로와의 통신에 기초하여 상기 제1 논리 연산 신호 및 상기 제1 가중치 데이터에 대응하는 제1 버터플라이 연산 신호를 생성하도록 구성된 제1 버터플라이 연산기;
    상기 제1 입력 데이터를 수신하도록 구성된 제1 바이패스 회로; 및
    상기 제1 버터플라이 연산기로부터 상기 제1 버터플라이 연산 신호를 수신하고, 상기 제1 바이패스 회로로부터 상기 제1 입력 데이터를 수신하고, 상기 제1 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 제1 출력 데이터로서 상기 제1 버터플라이 연산 신호를 상기 제1 내지 제K 스테이지들 중 제2 스테이지로 출력하고, 그리고 상기 제1 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제1 출력 데이터로서 상기 제1 입력 데이터를 상기 제2 스테이지로 출력하도록 구성된 제1 멀티플렉서를 포함하는 연산 가속기.
  5. 제 4 항에 있어서,
    상기 제2 스테이지는:
    상기 제1 내지 제K 활성화 신호들 중 제2 활성화 신호 및 상기 제1 출력 데이터의 논리곱 연산에 기초하여 제2 논리 연산 신호를 생성하도록 구성된 제2 논리 회로;
    상기 제1 보조 회로로부터 상기 제1 출력 데이터에 대응하는 제2 가중치 데이터를 수신하도록 구성된 제2 가중치 버퍼 회로;
    상기 제2 논리 회로로부터 상기 제2 논리 연산 신호를 수신하도록 구성된 제2 데이터 버퍼 회로;
    상기 제2 논리 회로로부터 상기 제2 논리 연산 신호를 수신하고, 상기 제2 가중치 버퍼 회로로부터 상기 제2 가중치 데이터를 수신하고, 그리고 상기 제2 데이터 버퍼 회로와의 통신에 기초하여 상기 제2 논리 연산 신호 및 상기 제2 가중치 데이터에 대응하는 제2 버터플라이 연산 신호를 생성하도록 구성된 제2 버터플라이 연산기;
    상기 제1 출력 데이터를 수신하도록 구성된 제2 바이패스 회로; 및
    상기 제2 버터플라이 연산기로부터 상기 제2 버터플라이 연산 신호를 수신하고, 상기 제2 바이패스 회로로부터 상기 제1 출력 데이터를 수신하고, 상기 제2 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 제2 출력 데이터로서 상기 제2 버터플라이 연산 신호를 상기 제1 내지 제K 스테이지들 중 제3 스테이지로 출력하고, 그리고 상기 제2 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제2 출력 데이터로서 상기 제1 출력 데이터를 상기 제3 스테이지로 출력하도록 구성된 제2 멀티플렉서를 포함하는 연산 가속기.
  6. 제 1 항에 있어서,
    상기 제1 내지 제K 스테이지들 및 상기 제1 보조 회로를 포함하는 NTT 모듈라 곱셈기를 포함하는 연산 가속기.
  7. 제 1 항에 있어서,
    복수의 병렬 신호들을 각각 생성하도록 구성된 복수의 병렬 처리 요소들, 및 상기 복수의 병렬 신호들의 결합 연산에 기초하여 결합 신호를 생성하도록 구성된 결합 요소를 포함하는 NTT 모듈라 곱셈기를 더 포함하되,
    상기 복수의 병렬 처리 요소들의 각각은 상기 제1 내지 제K 스테이지들 및 상기 제1 보조 회로를 포함하는 연산 가속기.
  8. 제 1 항에 있어서,
    동형 암호문의 다항식을 포함하는 제2 입력 데이터의 INTT(Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제(K+1) 내지 제2K 스테이지들; 및
    상기 제2 입력 데이터의 상기 다항식의 차수에 기초하여 제(K+1) 내지 제2K 활성화 신호들을 생성하도록 구성된 제2 보조 회로를 더 포함하되,
    상기 제(K+1) 내지 제2K 스테이지들의 각각은:
    상기 제(K+1) 내지 제2K 활성화 신호들 중 대응하는 활성화 신호가 상기 제1 논리 값을 가리키는 것에 응답하여, 상기 제2 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고; 그리고
    상기 제(K+1) 내지 제2K 활성화 신호들 중 상기 대응하는 활성화 신호가 상기 제2 논리 값을 가리키는 것에 응답하여, 상기 제2 입력 데이터 또는 상기 이전 스테이지의 상기 대응하는 출력 데이터를 바이패스 시키도록 구성되고, 그리고
    상기 제2 입력 데이터의 상기 다항식의 상기 차수는 2K보다 같거나 작은 자연수인 연산 가속기.
  9. 제 8 항에 있어서,
    상기 제1 내지 제K 스테이지들의 연산들은 각각 상기 제(K+1) 내지 제2K 스테이지들의 연산들에 역-순서(inverse-order)로 대응하는 연산 가속기.
  10. 제 8 항에 있어서,
    복수의 병렬 신호들을 각각 생성하도록 구성된 복수의 병렬 처리 요소들, 및 상기 복수의 병렬 신호들의 결합 연산에 기초하여 결합 신호를 생성하도록 구성된 결합 요소를 포함하는 NTT 모듈라 곱셈기; 및
    복수의 역-병렬 신호들을 각각 생성하도록 구성된 복수의 역-병렬 처리 요소들, 및 상기 복수의 역-병렬 신호들의 결합 연산에 기초하여 역-결합 신호를 생성하도록 구성된 역-결합 요소를 포함하는 INTT 모듈라 곱셈기를 더 포함하되,
    상기 복수의 병렬 처리 요소들의 각각은 상기 제1 내지 제K 스테이지들 및 상기 제1 보조 회로를 포함하고, 그리고
    상기 복수의 역-병렬 처리 요소들의 각각은 상기 제(K+1) 내지 제2K 스테이지들 및 상기 제2 보조 회로를 포함하는 연산 가속기.
  11. 연산 가속기에 있어서,
    동형 암호문의 다항식을 포함하는 입력 데이터의 INTT(Inverse Number Theoretic Transform) 연산을 수행하도록 구성되고 그리고 직렬로 연결된 제1 내지 제K 스테이지들; 및
    상기 입력 데이터의 상기 다항식의 차수에 기초하여 제1 내지 제K 활성화 신호들을 생성하도록 구성된 보조 회로를 포함하되,
    상기 제1 내지 제K 스테이지들의 각각은:
    상기 제1 내지 제K 활성화 신호들 중 대응하는 활성화 신호가 제1 논리 값을 가리키는 것에 응답하여, 상기 입력 데이터 또는 이전 스테이지의 대응하는 출력 데이터의 버터플라이 연산을 수행하고; 그리고
    상기 제1 내지 제K 활성화 신호들 중 상기 대응하는 활성화 신호가 제2 논리 값을 가리키는 것에 응답하여, 상기 입력 데이터 또는 상기 이전 스테이지의 상기 대응하는 출력 데이터를 바이패스(bypass) 시키도록 구성되고,
    상기 입력 데이터의 상기 다항식의 상기 차수는 2K보다 같거나 작은 자연수이고, 그리고
    K는 임의의 자연수인 연산 가속기.
  12. 제 11 항에 있어서,
    상기 입력 데이터의 상기 다항식의 상기 차수는 N이고,
    N은 2M이고, 그리고
    M은 0보다 크거나 같고 그리고 K보다 작거나 같은 임의의 정수인 연산 가속기.
  13. 제 12 항에 있어서,
    상기 보조 회로는, 상기 입력 데이터의 상기 다항식의 상기 차수에 기초하여:
    상기 제1 내지 제K 활성화 신호들 중 제1 내지 제M 활성화 신호들의 논리 값들의 각각을 상기 제1 논리 값으로 설정하고(단, M이 0이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제1 논리 값을 갖는 활성화 신호가 없음); 그리고
    상기 제1 내지 제K 활성화 신호들 중 제(M+1) 내지 제K 활성화 신호들의 논리 값들의 각각을 제2 논리 값으로 설정(단, M이 K이면, 상기 제1 내지 제K 활성화 신호들 중 상기 제2 논리 값을 갖는 활성화 신호가 없음)하도록 더 구성된 연산 가속기.
  14. 제 11 항에 있어서,
    상기 제1 내지 제K 스테이지들 중 제K 스테이지는:
    상기 제1 내지 제K 활성화 신호들 중 제K 활성화 신호 및 상기 제1 내지 제K 스테이지들 중 제(K-1) 스테이지의 제(K-1) 출력 데이터의 논리곱 연산에 기초하여 제K 논리 연산 신호를 생성하도록 구성된 제K 논리 회로;
    상기 보조 회로로부터 상기 제(K-1) 출력 데이터에 대응하는 제K 가중치 데이터를 수신하도록 구성된 제K 가중치 버퍼 회로;
    상기 제K 논리 회로로부터 상기 제K 논리 연산 신호를 수신하도록 구성된 제K 데이터 버퍼 회로;
    상기 제K 논리 회로로부터 상기 제K 논리 연산 신호를 수신하고, 상기 제K 가중치 버퍼 회로로부터 상기 제K 가중치 데이터를 수신하고, 그리고 상기 제K 데이터 버퍼 회로와의 통신에 기초하여 상기 제K 논리 연산 신호 및 상기 제K 가중치 데이터에 대응하는 제K 버터플라이 연산 신호를 생성하도록 구성된 제K 버터플라이 연산기;
    상기 제(K-1) 출력 데이터를 수신하도록 구성된 제K 바이패스 회로; 및
    상기 제K 버터플라이 연산기로부터 상기 제K 버터플라이 연산 신호를 수신하고, 상기 제K 바이패스 회로로부터 상기 제(K-1) 출력 데이터를 수신하고, 상기 제K 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 제K 출력 데이터로서 상기 제K 버터플라이 연산 신호를 출력하고, 그리고 상기 제K 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제K 출력 데이터로서 상기 제(K-1) 출력 데이터를 출력하도록 구성된 제K 멀티플렉서를 포함하고, 그리고
    상기 제K 출력 데이터는 상기 입력 데이터의 상기 INTT 연산의 최종 출력 데이터인 연산 가속기.
  15. 제 11 항에 있어서,
    상기 제(K-1) 스테이지는:
    상기 제1 내지 제K 활성화 신호들 중 제(K-1) 활성화 신호 및 상기 제1 내지 제K 스테이지들 중 제(K-2) 스테이지의 제(K-2) 출력 데이터의 논리곱 연산에 기초하여 제(K-1) 논리 연산 신호를 생성하도록 구성된 제(K-1) 논리 회로;
    상기 보조 회로로부터 상기 제(K-2) 출력 데이터에 대응하는 제(K-1) 가중치 데이터를 수신하도록 구성된 제(K-1) 가중치 버퍼 회로;
    상기 제(K-1) 논리 회로로부터 상기 제(K-1) 논리 연산 신호를 수신하도록 구성된 제(K-1) 데이터 버퍼 회로;
    상기 제(K-1) 논리 회로로부터 상기 제(K-1) 논리 연산 신호를 수신하고, 상기 제(K-1) 가중치 버퍼 회로로부터 상기 제(K-1) 가중치 데이터를 수신하고, 그리고 상기 제(K-1) 데이터 버퍼 회로와의 통신에 기초하여 상기 제(K-1) 논리 연산 신호 및 상기 제(K-1) 가중치 데이터에 대응하는 제(K-1) 버터플라이 연산 신호를 생성하도록 구성된 제(K-1) 버터플라이 연산기;
    상기 제(K-2) 출력 데이터를 수신하도록 구성된 제(K-1) 바이패스 회로; 및
    상기 제(K-1) 버터플라이 연산기로부터 상기 제(K-1) 버터플라이 연산 신호를 수신하고, 상기 제(K-1) 바이패스 회로로부터 상기 제(K-2) 출력 데이터를 수신하고, 상기 제(K-1) 활성화 신호가 상기 제1 논리 값을 갖는 것에 응답하여 상기 제(K-1) 출력 데이터로서 상기 제(K-1) 버터플라이 연산 신호를 상기 제K 스테이지로 출력하고, 그리고 상기 제(K-1) 활성화 신호가 상기 제2 논리 값을 갖는 것에 응답하여 상기 제(K-1) 출력 데이터로서 상기 제(K-2) 출력 데이터를 상기 제K 스테이지로 출력하도록 구성된 제(K-1) 멀티플렉서를 포함하는 연산 가속기.
  16. 제 11 항에 있어서,
    상기 제1 내지 제K 스테이지들 및 상기 보조 회로를 포함하는 INTT 모듈라 곱셈기를 포함하는 연산 가속기.
  17. 제 11 항에 있어서,
    복수의 역-병렬 신호들을 각각 생성하도록 구성된 복수의 역-병렬 처리 요소들, 및 상기 복수의 역-병렬 신호들의 결합 연산에 기초하여 역-결합 신호를 생성하도록 구성된 역-결합 요소를 포함하는 INTT 모듈라 곱셈기를 더 포함하되,
    상기 복수의 역-병렬 처리 요소들의 각각은 상기 제1 내지 제K 스테이지들 및 상기 보조 회로를 포함하는 연산 가속기.
KR1020230102141A 2022-09-13 2023-08-04 활성화 신호를 생성하는 연산 가속기 KR20240036454A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US18/465,861 US20240089084A1 (en) 2022-09-13 2023-09-12 Accelerator generating enable signal
EP23197074.0A EP4339923A1 (en) 2022-09-13 2023-09-13 Homomorphic accelerator generating enable signal

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220115212 2022-09-13
KR20220115212 2022-09-13

Publications (1)

Publication Number Publication Date
KR20240036454A true KR20240036454A (ko) 2024-03-20

Family

ID=90483413

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230102141A KR20240036454A (ko) 2022-09-13 2023-08-04 활성화 신호를 생성하는 연산 가속기

Country Status (1)

Country Link
KR (1) KR20240036454A (ko)

Similar Documents

Publication Publication Date Title
Zeebaree et al. Design and simulation of high-speed parallel/sequential simplified DES code breaking based on FPGA
US20190319804A1 (en) Unified accelerator for classical and post-quantum digital signature schemes in computing environments
US8903882B2 (en) Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product
US20180322219A1 (en) Simplification of large networks and graphs
US9495329B2 (en) Calculating node centralities in large networks and graphs
WO2017177442A1 (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
KR20190107766A (ko) 계산 장치 및 방법
CN111598246B (zh) 量子吉布斯态生成方法、装置及电子设备
US10884736B1 (en) Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing
US11985226B2 (en) Efficient quantum-attack resistant functional-safe building block for key encapsulation and digital signature
CN107291898B (zh) 基于FPGA的MySQL认证密码恢复系统及其方法
EP3444758B1 (en) Discrete data representation-supporting apparatus and method for back-training of artificial neural network
CN110413561B (zh) 数据加速处理系统
KR20240036454A (ko) 활성화 신호를 생성하는 연산 가속기
EP4339923A1 (en) Homomorphic accelerator generating enable signal
EP4322453A1 (en) Homomorphic encryption calculating accelerator and encryption system including the same
KR20240022401A (ko) 동형 암호 연산 가속기 및 그것을 포함하는 암호 시스템
Zhao et al. Hugraph: Acceleration of gcn training on heterogeneous fpga clusters with quantization
Ago et al. The parallel FDFM processor core approach for neural networks
US10275391B2 (en) Combining of several execution units to compute a single wide scalar result
US8605895B2 (en) Computing the eth root of a number using a variant of the RSA algorithm (for even e's)
KR20230087377A (ko) 동형 암호에서 서로 다른 동형 연산들을 통합하기 위한 컴퓨팅 장치 및 방법
Foo et al. Superpositions of thermalisation states in relativistic quantum field theory
CN111460514B (zh) 数据匹配方法、装置和电子设备
Sidhu Design and implementation modified booth algorithm and systolic multiplier using FPGA