KR20220078155A - 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치 - Google Patents

암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치 Download PDF

Info

Publication number
KR20220078155A
KR20220078155A KR1020200167378A KR20200167378A KR20220078155A KR 20220078155 A KR20220078155 A KR 20220078155A KR 1020200167378 A KR1020200167378 A KR 1020200167378A KR 20200167378 A KR20200167378 A KR 20200167378A KR 20220078155 A KR20220078155 A KR 20220078155A
Authority
KR
South Korea
Prior art keywords
multiplication
polynomial
coefficients
result
polynomial coefficient
Prior art date
Application number
KR1020200167378A
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 KR1020200167378A priority Critical patent/KR20220078155A/ko
Priority to US17/233,701 priority patent/US11895224B2/en
Priority to CN202110611355.4A priority patent/CN114595487A/zh
Priority to EP21188188.3A priority patent/EP4009575A1/en
Publication of KR20220078155A publication Critical patent/KR20220078155A/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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/156Correlation function computation including computation of convolution operations using a domain transform, e.g. Fourier transform, polynomial transform, number theoretic transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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
    • 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/724Finite field arithmetic
    • 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치가 개시된다. 개시된 격자-기반 텍스트들의 다항식 곱셈을 수행하는 암호 프로세서의 동작 방법은 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 먹싱하여 복수의 곱셈기들로 전달하는 단계, 복수의 곱셈기들을 이용하여 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하는 단계, 덧셈기를 이용하여 곱셈 결과들 중 일부에 대한 덧셈을 수행하는 단계 및 곱셈 결과들 중 다른 일부와 덧셈 결과에 기초하여 다항식 곱셈의 결과를 결정하는 단계를 포함한다.

Description

암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치{CRYPTO PROCESSOR AND METHOD FOR OPERATING THE SAME, AND ELECTRONIC DEVICE INCLUDING THE SAME}
아래 실시예들은 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치에 관한 것이다.
동형 암호(homomorphic encryption)는 암호화된 데이터를 이용한 임의의 논리적 연산 또는 수학적 연산을 가능하게 하는 암호화 방식이다. 동형 암호는 데이터 처리에 복호화가 요구되지 않아 데이터 처리에서 보안을 유지하도록 한다. 동형 암호를 통해 데이터 프라이버시 침해나 탈취에 대한 위험 없이, 서버로 암호화된 정보를 전송하여 다양한 서비스를 이용하는 것이 가능하다.
일 실시예에 따른 격자(lattice)-기반 텍스트들의 다항식 곱셈을 수행하는 암호 프로세서(crypto processor)의 동작 방법은 상기 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 먹싱(muxing)하여 복수의 곱셈기들로 전달하는 단계; 상기 복수의 곱셈기들(multipliers)을 이용하여, 상기 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하는 단계; 덧셈기(adder)를 이용하여, 상기 곱셈 결과들 중 일부에 대한 덧셈을 수행하는 단계; 및 상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과에 기초하여, 상기 다항식 곱셈의 결과를 결정하는 단계를 포함한다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 곱셈 결과들 중 상기 일부는 상기 일부가 획득된 곱셈기들 각각에서 상기 덧셈기로 연결되는 내부 데이터 경로를 통해 상기 덧셈기로 전달될 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 곱셈들을 수행하는 단계는 상기 먹싱된 계수들 중 제1 텍스트의 제1 다항식 계수와 제2 텍스트의 제3 다항식 계수 간 곱셈; 상기 제1 텍스트의 제2 다항식 계수와 상기 제3 다항식 계수 간 곱셈; 상기 제1 다항식 계수와 상기 제2 텍스트의 제4 다항식 계수 간 곱셈; 및 상기 제2 다항식 계수와 상기 제4 다항식 계수 간 곱셈을 병렬로 수행할 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 덧셈을 수행하는 단계는 상기 제2 다항식 계수와 상기 제3 다항식 계수 간 곱셈 결과 및 상기 제1 다항식 계수와 상기 제4 다항식 계수 간 곱셈 결과에 대한 덧셈을 수행할 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 결정하는 단계는 상기 제1 다항식 계수와 상기 제3 다항식 계수 간 곱셈 결과, 상기 덧셈 결과 및 상기 제2 다항식 계수와 상기 제4 다항식 계수 간 곱셈 결과에 기초하여, 상기 다항식 곱셈의 결과를 결정할 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법은 상기 다항식 곱셈의 실행에 대한 명령어(instruction) 및 상기 계수들을 수신하는 단계를 더 포함하고, 상기 전달하는 단계는 상기 명령어의 수신에 응답하여 수행될 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 수신하는 단계는 상기 복수의 다항식들의 계수들 중 동일 차수의 계수들을 수신할 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 텍스트들 각각은 전달하고자 하는 메시지가 인코딩된 평문(plaintext) 또는 상기 평문이 암호화된 암호문(ciphertext)일 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법은 상기 암호 프로세서의 동작 모드를 제어하는 단계를 더 포함하고, 상기 동작 모드가 제1 모드인 경우에 응답하여 상기 덧셈을 수행하는 단계가 수행되고, 상기 동작 모드가 제2 모드인 경우에 응답하여, 상기 복수의 곱셈기들 각각에 대응하는 동일한 계수가 상기 복수의 곱셈기들로 전달되어 곱셈이 수행되고, 상기 동작 모드가 제3 모드인 경우에 응답하여, 상기 복수의 곱셈기들 각각으로 상이한 계수가 전달되어 곱셈이 수행될 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 텍스트들 각각은 복수의 다항식들로 표현될 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 텍스트들 각각을 표현하는 상기 복수의 다항식들은 메시지에 대응하는 제1 다항식; 및 상기 메시지에 대응하는 암호문의 암호화 및/또는 복호화에 관련된 암호 키(encrypt key)에 대응하는 제2 다항식을 포함할 수 있다.
일 실시예에 따른 암호 프로세서의 동작 방법에서 상기 복수의 다항식들은 NTT(number theoretic transform)을 통해 변환되고, 상기 먹싱된 계수들 중 일부에 대한 곱셈들 각각은 포인트-와이즈 곱셈으로 수행될 수 있다.
일 실시예에 따른 격자-기반 텍스트들의 다항식 곱셈을 수행하는 암호 프로세서는 상기 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 저장하는 입력 레지스터들; 상기 계수들 중 일부에 대한 곱셈들을 병렬로 수행하는 복수의 곱셈기들; 상기 곱셈 결과들 중 일부에 대한 덧셈을 수행하는 덧셈기 및 상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과를 저장하는 출력 레지스터들를 포함하고, 상기 다항식 곱셈의 결과는 상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과에 기초하여 결정된다.
일 실시예에 따른 전자 장치는 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 저장하는 메모리; 및 상기 계수들을 먹싱하여 복수의 곱셈기들로 전달하고, 상기 복수의 곱셈기들을 이용하여 상기 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하고, 덧셈기를 이용하여 상기 곱셈 결과들 중 일부에 대한 덧셈을 수행하며, 상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과에 기초하여 상기 다항식의 곱셈 결과를 결정하는 암호 프로세서를 포함한다.
도 1은 일실시예에 따라 동형 암호에 기반한 암호문을 처리하는 사용자 단말과 서버의 동작을 설명하기 위한 도면이다.
도 2 및 도 3은 일실시예에 따른 동형 연산을 설명하기 위한 도면이다.
도 4 및 도 5는 일실시예에 따른 암호 프로세서의 동작을 설명하기 위한 도면이다.
도 6은 일실시예에 따른 암호 프로세서의 예시들을 나타낸 도면이다.
도 7은 일실시예에 따른 암호 프로세서의 동작 방법을 나타낸 도면이다.
도 8은 일실시예에 따른 전자 장치를 나타낸 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일실시예에 따라 동형 암호에 기반한 암호문을 처리하는 사용자 단말과 서버의 동작을 설명하기 위한 도면이다.
도 1을 참조하면, 사용자 단말(110)과 서버(120)가 도시된다. 사용자 단말(110)은 사용자에 의해 제어되는 장치로, 예를 들어, 스마트 폰, 태블릿, 랩탑, 퍼스널 컴퓨터 등 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경 등 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 스마트 냉장고 등 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기, 드론, 로봇 등을 포함할 수 있다. 사용자 단말(110)은 정보 보호를 위해 데이터를 암호화하여 서버(120)로 전송하여 서버(120)에서 제공하는 다양한 서비스를 이용할 수 있다. 서버(120)에서 암호화된 데이터에 대한 처리를 위해서는 서버(120)로 전성되는 데이터는 동형 암호에 기반하여 암호화될 수 있다. 본 명세서에서 암호화된 데이터는 암호문으로, 암호화되지 않은 데이터는 평문으로 표현될 수 있다.
동형 암호는 복호화 없이 암호화된 데이터에 대한 연산을 허용하는 암호화 기법일 수 있다. 다시 말해, 동형 암호는 데이터를 암호화한 상태에서 여러 연산들을 수행한 후 다시 복호화했을 때, 그 결과가 암호화하지 않은 상태의 연산 결과와 동일한 암호 기법을 나타낼 수 있다. 데이터가 암호화되어 있기에 설사 해커가 데이터 탈취에 성공하더라도 데이터가 노출되지 않으며, 복호화 없이 암호화된 데이터 처리가 가능하므로, 동형 암호는 프라이버시 보호가 필요한 데이터를 처리하는 다양한 어플리케이션에 적합할 수 있다.
동형 암호에는 노이즈가 포함되어 있으며, 암호문에 대한 연산이 수행됨에 따라 노이즈 레벨이 증가할 수 있다. 노이즈가 데이터를 압도(overwhelming)하는 것을 방지하기 위해 노이즈 처리, 다시 말해, 노이즈를 리프레쉬(refresh)하는 부트스트래핑이 수행될 수 있다. 부트스트래핑을 통해 회로 깊이(circuit depth)에 관계없이 파라미터 크기와 계산 오버헤드가 고정될 수 있다.
동형 암호로 암호화된 암호문에는 부트스트래핑 없이 가능한 연산의 최대 횟수가 존재하며, 이는 레벨 l(
Figure pat00001
)로 표현될 수 있다. 부트스트래핑은 연산이 더 이상 수행될 수 없는 레벨 0의 암호문을 리프레쉬하여, 동일 메시지를 갖는 레벨 L의 암호문을 생성하는 과정일 수 있다.
서버(120)는 부트스트래핑을 통해 암호문에 대해 여러 연산들을 수행할 수 있으며, 이를 위한 암호문에 대한 복호화가 필요치 않아 개인 정보가 침해되지 않는다. 서버(120)에서 연산된 암호문은 다시 사용자 단말(110)로 전송되고, 사용자 단말(110)은 해당 암호문을 복호화한 데이터를 사용자로 제공하거나, 또는 후속 동작에 이용할 수 있다.
도 2 및 도 3은 일실시예에 따른 동형 연산을 설명하기 위한 도면이다.
도 2를 참조하면, 동형 암호에 따른 데이터 처리가 예시적으로 도시된다.
단계(210)에서, 정보를 포함하는 메시지가 인코딩되어 다항식 형태로 표현되는 평문이 획득될 수 있다. 단계(220)에서, 평문을 암호화함으로써 암호문이 획득될 수 있다. 격자-기반 암호화(예컨대, Ring-LWE(learning with error) 기반 동형 암호)에서 메시지를 담고 있는 평문이 암호화된 암호문은 메시지를 포함하는 제1 다항식과 암호화 키(encrypt key)를 포함하는 제2 다항식으로 표현될 수 있다. 메시지는 전달하고자 하는 정보를 포함하며, 암호화 키는 메시지의 암호화 및/또는 복호화에 이용되는 값을 포함할 수 있다. 암호문을 구성하는 다항식 개수를 암호문의 사이즈라고 지칭할 수 있으며, 암호문이 앞서 설명한 제1 다항식과 제2 다항식으로 표현되는 경우에 사이즈는 2일 수 있다. 암호문을 표현하는 두 다항식들은 modulus q 보다 작은 n개의 계수들로 이루어진 n-1차 다항식으로 아래와 같이 표현될 수 있다.
Figure pat00002
단계(230)에서, 암호문에 대한 동형 연산이 수행될 수 있다. 예를 들어, 응용에 따라 상이할 수 있으나, 암호문 곱셈은 동형 암호에서 기본적인 연산에 해당할 수 있다. 암호문들 간 곱셈은 각 암호문에 포함된 복수의 다항식들 간 곱셈으로 표현될 수 있다. 두 다항식의 곱셈은 연산 복잡도를 줄이기 위해 정수 FFT, 다시 말해, NTT로 다항식을 변환한 후에 수행될 수 있다.
도 3을 참조하여 NTT를 이용한 다항식 곱셈을 설명하면, 곱셈 연산 대상인 두 암호문 ct1, ct2은 각각 NTT를 통해 변환되어 Ct1, Ct2가 획득될 수 있으며, 이는 다음과 같이 표현될 수 있다.
Figure pat00003
암호문 ct1이 NTT을 통해 변환되어 Ct1이 획득되고, Ct1은 제1 메시지에 대응하는 제1 다항식의 계수 집합을 나타내는 A1과 제1 암호화 키에 대응하는 제2 다항식의 계수 집합을 나타내는 B1으로 표현될 수 있다. 마찬가지로, 암호문 ct2가 NTT을 통해 변환되어 Ct2이 획득되고, Ct2는 제2 메시지에 대응하는 제3 다항식의 계수 집합을 나타내는 A2와 제2 암호화 키에 대응하는 제4 다항식의 계수 집합을 나타내는 B2로 표현될 수 있다. 다항식 계수 집합은 해당 다항식에 포함된 n개의 개수들을 포함할 수 있으며, 예를 들어, A={a0, a1, ..., an-1}으로 표현될 수 있다.
NTT으로 두 암호문의 곱셈은 두 암호문을 구성하는 다항식 계수들 간 포인트-와이즈 곱셈(point-wise multiplication)으로 수행될 수 있으며, 포인트-와이즈 곱셈 결과 CR은 아래와 같이 표현될 수 있다.
Figure pat00004
위의 수학식 3에서, *은 포인트-와이즈 곱셈을 나타내며, 각 다항식에서 동일 차수의 계수들 간 곱을 의미할 수 있다.
곱셈 결과 CR은 다항식 계수 집합을 각각 나타내는 Ar, Br, Cr으로 표현될 수 있다. 곱셈 결과로 다항식 수가 3개로 증가하므로, 후처리(미도시)를 통해 다항식 수가 다시 2개로 감소될 수 있다. 곱셈 결과 CR은 INTT(inverse number theoretic transform)을 통해 변환되어 결과 암호문 cr이 획득될 수 있다.
도 3에서는 암호문이 NTT을 통해 변환되어 포인트-와이즈 곱셈이 수행되는 경우를 기준으로 설명하였으나, 실시예에 따라서는 도 2의 평문이 NTT을 통해 변환되어 포인트-와이즈 곱셈이 수행될 수도 있으며, 이 경우에도 상술한 설명이 마찬가지로 적용될 수 있다.
도 2로 돌아와서, 단계(240)에서 동형 연산이 수행된 암호문이 복호화됨으로써, 연산된 평문이 획득될 수 있다. 단계(250)에서, 연산된 평문은 디코딩되어 연산된 메시지가 획득될 수 있다.
앞선 설명대로, 복수의 다항식들을 가진 두 암호문의 곱셈을 NTT를 통해 다항식 계수들 간 포인트-와이즈 곱셈으로 수행할 수 있으며, 해당 곱셈을 하드웨어적으로 가속시킬 수 있는 방안에 대해 아래 도면들을 참조하여 상세히 설명한다.
본 명세서에서는 설명의 편의를 위해 동형 암호를 기준으로 설명하였으나, PQC(post-quantum cryptography)에서 격자-기반 다항식 곱셈을 기준으로 하는 경우에도 본 명세서의 설명이 마찬가지로 적용될 수 있다.
도 4 및 도 5는 일실시예에 따른 암호 프로세서의 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 암호 프로세서(400)는 입력 레지스터들(410), MUX들(multiplexers)(미도시), 곱셈기들(430), 덧셈기(440) 및 출력 레지스터들(450)을 포함할 수 있다.
동형 암호의 암호화 수준 또는 연산 가능한 레벨을 증가시키기 위해, 암호문을 표현하는 다항식 차수가 증가하게 되며, 증가된 다항식 차수는 해당 다항식의 계수에 대한 메모리 저장공간, 메모리 액세스 횟수, 연산 횟수의 증가로 이어질 수 있다. 또한, 일반적으로 동형 암호에서 수행되는 연산들 중 암호문 곱셈 연산은 빈번히 수행되는 것으로, 메모리 액세스 패턴에 따라 배치된 연산 유닛에 기반한 병렬 처리를 통해 연산 성능을 향상시킬 수 있다.
각 암호문이 2개의 다항식으로 구성되고, 두 암호문의 곱셈은 각 다항식에서 동일 차수의 계수들 간 곱으로 수행될 수 있다. 제1 암호문 Ct1에 대응하는 계수 집합들 A1, B1와 제2 암호문 Ct2에 대응하는 계수 집합들 A2, B2는 다음과 같이 표현될 수 있다.
Figure pat00005
포인트-와이즈 곱셈은 곱셈기들(430)와 덧셈기(440)를 이용해 동일 차수의 계수들에 대해 수행될 수 있다. 이를 위해, 입력 레지스터들(410)로 입력되는 데이터를 동일 차수의 계수들로 재구성하는 패킹(packing)이 수행될 수 있다. 예를 들어, (a10, b10, a20, b20)이 각각 입력 레지스터들(410)에 입력될 수 있다. 그 다음으로 (a11, b11, a21, b21)이 각각 입력 레지스터들(410)에 순차적으로 입력되기 시작해서, 마지막으로 (a1n-1, b1n-1, a2n-1, b2n-1)이 각각 입력 레지스터들(410)에 입력될 수 있다.
일 실시예에 따르면, 패킹은 호스트 프로세서의 디바이스 드라이버(device driver) 단에서 수행될 수 있다. 동일 차수의 계수들이 피연산자로 패킹되어 연속된 메모리에 저장될 수 있다. 암호 프로세서(400)는 메모리로부터 동일 차수의 계수들을 읽어서 입력 레지스터들(410)에 저장할 수 있다. 예를 들어, 메모리는 암호 프로세서(400) 외부에 위치한 DRAM(dynamic random access memory)일 수 있다.
예를 들어, 메모리에 분리된 영역들에 저장되어 있는 동일 차수의 계수들을 효과적으로 읽어 오기 위해서 4port DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory) 메모리 구조가 활용될 수 있다. 이를 테면, 계수 집합 A1에 포함된 계수들을 DDR SDRAM의 port 1에 저장하고, 계수 집합 B1에 포함된 계수들을 DDR SDRAM의 port 2에 저장하고, 계수 집합 A2에 포함된 계수들을 DDR SDRAM의 port 3에 저장하며, 계수 집합 B2에 포함된 계수들을 DDR SDRAM의 port 4에 저장할 때, 차수에 따른 순서(예컨대, 오름차순 또는 내림차순)로 계수들을 순차적으로 저장할 수 있다. 저장된 계수들을 읽을 때에는 각 DDR SDRAM port의 시작 주소로부터 시작하여 주소를 점차 증가시키면서 저장된 계수들을 순차적으로 읽어올 수 있다. 만약 AXI(Advanced eXtensible Interface) 버스가 사용된다면, 버스 효율성을 높일 수 있는 버스트 모드(burst)를 통해 한 다항식에 속한 여러 개수들을 연속적으로 읽어올 수도 있다.
또한, 메모리에 분리된 영역들에 저장되어 있는 동일 차수의 계수들을 효과적으로 읽어 오기 위해서 스트라이드 메모리 패치(stride memory patch) 기능이 활용될 수 있다. 또한, DMA(direct memory access)를 이용하여 스트라이드 형태로 메모리에 액세스하여 동일 차수의 계수들을 읽어올 수 있다.
동일 차수의 계수들이 각각 입력 레지스터들(410)에 로딩되고, 먹싱(420)을 통해 곱셈기들(430)로 전달될 수 있다. 수학식 3을 참고하면, 포인트-와이즈 곱셈에서는 4번의 곱셈 연산, 다시 말해, A1*A2, A1*B2, B1*A2, B1*B2가 수행될 수 있다. 해당 곱셈들은 각 곱셈기들(430)에서 수행될 수 있으며, 이를 위해 각 곱셈의 피연사자들이 먹싱(420)을 통해 대응하는 곱셈기로 전달될 수 있다.
이를 테면, 입력 레지스터들(410)에 저장된 A1와 A2가 먹싱(420)을 통해 제1 곱셈기로 입력되어 A1*A2 연산이 수행될 수 있다. 마찬가지로, B1와 A2가 먹싱(420)을 통해 제2 곱셈기로 입력되어 B1*A2 연산이 수행되고, A1와 B2가 먹싱(420)을 통해 제3 곱셈기로 입력되어 A1*B2 연산이 수행되며, B1와 B2가 먹싱(420)을 통해 제4 곱셈기로 입력되어 B1*B2 연산이 수행될 수 있다.
제2 곱셈기에서 수행된 B1*A2 연산 결과와 제3 곱셈기에서 수행된 A1*B2 연산 결과는 내부 데이터 경로(data path)를 통해 덧셈기(440)로 전달되어 A1*B2 + B1*A2 연산이 수행될 수 있다.
출력 레지스터들(450)은 제1 곱셈기에서 수행된 A1*A2 연산 결과, 덧셈기(440)에서 수행된 A1*B2 + B1*A2 연산 결과 및 제4 곱셈기에서 수행된 B1*B2 연산 결과를 각각 저장할 수 있다. 출력 레지스터들(450)에 저장된 연산 결과들은 앞선 수학식 3의 Ar, Br, Cr로 각각 출력될 수 있다. Ar, Br, Cr은 각각은 아래와 같이 표현될 수 있다.
Figure pat00006
예시적으로 ar0, br0, cr0을 얻기 위해 수행되는 연산은 아래와 같이 표현될 수 있으며, 다른 차수의 계수들도 동일한 방식으로 연산될 수 있다.
Figure pat00007
앞선 설명처럼, 피연산자에 해당하는 계수들은 암호 프로세서(400) 내 입력 레지스터들(410)과 먹싱(420)을 통해 곱셈기들(430)로 전달되기 때문에, 각 계수들에 대해서는 1번의 메모리 액세스만 수행됨으로써, 불필요한 메모리 액세스를 감소시킬 수 있다. 만약 동일 차수의 계수들이 패킹된다면, 패킹된 데이터에 대한 1번의 메모리 액세스를 통해서 피연산자를 로딩할 수 있다. 다시 말해, 먹싱(420)을 통해 최소한의 입력 레지스터들(410)로도 각 곱셈기들(430)로 피연산자를 전달할 수 있다.
또한, 다른 연산에 비해 소요시간이 긴 곱셈 연산들을 곱셈기들(430)을 통해 병렬로 수행함으로써, 암호 프로세서(400)에서 수행되는 연산 시간을 효과적으로 감소시킬 수 있다.
또한, A1*B2 + B1*A2 연산 수행을 위해서, 곱셈 결과들 A1*B2, B1*A2 각각에 대한 별도의 메모리 액세스 없이, 내부 데이터 경로를 통해 곱셈 결과들 A1*B2, B1*A2을 바로 덧셈기(440)로 전달함으로써, 메모리 액세스로 인한 성능 저하를 최소화 시킬 수 있다.
도 4에서는 설명의 편의를 위해 입력 레지스터들(410)에 저장된 데이터에 먹싱(420)이 수행되는 것으로 도시하였으나, 이로 실시예가 한정되지 않으며, 먹싱(420)이 먼저 수행되어, 먹싱된 데이터가 입력 레지스터들(410)에 저장되고, 입력 레지스터들(410) 각각은 단순히 대응하는 하나의 곱셈기로 저장된 데이터를 전달할 수도 있다.
두 암호문의 다항식 곱셈을 효율적으로 수행하기 위한 암호 프로세서(400) 구조뿐만 아니라, 암호 프로세서(400)가 실행할 수 있는 기계어 명령어들을 포함한 ISA(instruction set architecture)에 두 암호문의 다항식 곱셈에 대한 명령어가 정의될 수 있다. 이를 테면, 두 암호문의 다항식 곱셈에 대한 명령어는 QMAD(quad multiplication addition)라고 지칭할 수 있다. QMAD는 4개의 곱셈과 1개의 덧셈으로 구성된 통합된 명령어로서, 다음과 같이 마이크로 코드(micro code)로 표현될 수 있다.
Figure pat00008
QMAD 명령어, 피연산자 Ct1, Ct2 및 연산 결과가 리턴되는 변수 CR가 암호 프로세서(400)로 전달되면, 상술한 동작들이 수행되어 두 암호문의 다항식 곱셈 결과가 CR로 리턴될 수 있다. 다시 말해, 하나의 명령어 코드만으로 두 암호문의 다항식 곱셈이 수행될 수 있다. 본 명세서에서는 설명의 편의를 위해 두 암호문의 다항식 곱셈을 QMAD 연산이라고도 표현할 수 있다.
도 5를 참조하면, 암호 프로세서(500)는 입력 MUX들(510), 입력 레지스터들(520), 곱셈기들(530), 덧셈기(540), 출력 MUX들(550), 출력 레지스터들(560) 및 QMAD 모드 제어기(570)을 포함할 수 있다.
암호 프로세서(500)는 앞서 설명한 QMAD 연산뿐만 아니라 SQUARE 연산과 8 Input Mul 연산을 더 수행할 수 있다. QMAD 연산, SQUARE 연산 및 8 Input Mul 연산은 동형 암호에서 빈번하게 사용되는 이벨류에이터(evaluator)에 해당될 수 있다. 도 5에서는 QMAD 연산, SQUARE 연산 및 8 Input Mul 연산을 선택적으로 수행할 수 있는 암호 프로세서(500)가 도시되어 있으나, 암호 프로세서(500)의 실시예가 이로 한정되는 것은 아니며, 3가지 연산들 중 하나 또는 둘 이상의 조합을 수행하는 암호 프로세서(500)도 본 명세서의 설명이 적용될 수 있다.
QMAD 모드 제어기(570)는 암호 프로세서(500)에서 수행할 연산의 유형을 결정할 수 있다. QMAD 모드 제어기(570)는 결정된 유형의 연산이 수행되도록 입력 MUX들(510) 및 출력 MUX들(550)을 제어할 수 있다.
예를 들어, QMAD 모드 제어기(570)에서 모드가 1로 설정되면, 앞서 설명한 QMAD 연산이 수행될 수 있다. 이를 위해, 입력 MUX들(510)은 도 5에서 실선으로 표시된 데이터 경로를 따라 입력된 데이터를 입력 레지스터들(520)로 전달할 수 있다. 그리고, 도 5에 도시된 출력 MUX들(550) 중 상위 MUX(upper MUX)는 덧셈기(540)로부터 입력된 데이터를 출력 레지스터로 전달하고, 하위 MUX(lower MUX)는 제4 곱셈기로부터 입력된 데이터를 출력 레지스터로 전달할 수 있다.
또한, QMAD 모드 제어기(570)에서 모드가 2로 설정되면, SQUARE 연산이 수행될 수 있다. 이를 테면, 동형 암호의 SEAL 라이브러리에서 제곱연산을 위한 ckks_square Evaluator를 수행하고자 할 때, SQUARE 연산이 수행될 수 있다.
SQUARE 연산을 수행하기 위해, 곱셈기들(530) 각각에 동일한 데이터가 입력되도록 입력 MUX들(510)이 제어될 수 있다. 예를 들어, A1로부터 시작된 실선 데이터 경로와 점선 데이터 경로를 통해 A1가 제1 곱셈기와 연결된 입력 레지스터들로 전달되도록, 입력 MUX가 제어될 수 있다. 또한, B1로부터 시작된 실선 데이터 경로와 점선 데이터 경로를 통해 B1가 제2 곱셈기와 연결된 입력 레지스터들로 전달되도록, 대응하는 입력 MUX가 제어될 수 있다. 또한, A2로부터 시작된 점선 데이터 경로와 일점쇄선 데이터 경로를 통해 A2가 제3 곱셈기와 연결된 입력 레지스터들로 전달되도록, 대응하는 입력 MUX들이 제어될 수 있다. 또한, B2로부터 시작된 일점쇄선 데이터 경로와 실선 데이터 경로를 통해 B2가 제4 곱셈기와 연결된 입력 레지스터들로 전달되도록, 대응하는 입력 MUX들이 제어될 수 있다.
제1 곱셈기에서 수행된 A1*A1 연산 결과는 대응하는 출력 레지스터를 통해 Ar로서 출력될 수 있다. 제2 곱셈기에서 수행된 B1*B1 연산 결과는 Br로서 출력되고, 제3 곱셈기에서 수행된 A2*A2 연산 결과는 Cr로서 출력되도록, 출력 MUX들(550)이 제어될 수 있다. 제4 곱셈기에서 수행된 B2*B2 연산 결과는 대응하는 출력 레지스터를 통해 Dr로서 출력될 수 있다.
또한, QMAD 모드 제어기(570)에서 모드가 3으로 설정되면, 8 Input Mul 연산이 수행될 수 있다. 8 Input Mul 연산 수행 시, 암호 프로세서(500)는 8개의 입력을 가지는 다항식 곱셈기로서 동작할 수 있다. 이를 위해, 입력 MUX들(510)은 도 5에서 일점쇄선 데이터 경로를 따라 입력된 데이터를 입력 레지스터들(520)로 전달할 수 있다. 도 5에서 P1, P2, P3, P4는 A1, B1, A2, B2와 함께 8 Input Mul 연산의 피연산자를 나타낼 수 있다. 출력 MUX들(550)은 앞서 설명한 SQUARE 연산과 동일하게 동작하여, 곱셈기들(530)의 연산 결과들 각각을 대응하는 출력 레지스터들(560)로 전달할 수 있다. 8 Input Mul 연산을 통해, A1*P1, B1*P2, A2*P3, B2*P4에 해당하는 다항식 쌍의 포인트-와이즈 곱셈 결과가 출력될 수 있다.
SQUARE 연산이나 8 Input Mul 연산에서는 덧셈기(540)가 사용되지 않는다.
도 6은 일실시예에 따른 암호 프로세서의 예시들을 나타낸 도면이다.
도 6을 참조하면, 암호 프로세서(600)는 입력 레지스터들(610), MUX들(미도시), BU들(butterfly units; BU)(630) 및 출력 레지스터들(640)을 포함할 수 있다. 암호 프로세서(600)는 Ct1=(A1, B1)과 Ct2=(A2, B2)에 대한 QMAD 연산을 수행할 수 있다. 입력 레지스터들(610)에 입력된 동일 차수의 계수들은 먹싱(620)을 통해 BU들(630)에 포함된 곱셈기들로 전달될 수 있다. BU1과 BU2 내 곱셈기들에서 수행된 곱셈 결과들은 내부 데이터 경로를 통해 BU1과 BU2 중 어느 하나에 포함된 덧셈기로 전달되어 곱셈 결과들에 대한 덧셈이 수행될 수 있다. BU0와 BU3의 곱셈기들, BU2의 덧셈기에서 수행된 연산 결과들은 QMAD 연산 결과로서 각각 출력될 수 있다. 나머지 동작에 대해서는 앞서 설명한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.
도 7은 일실시예에 따른 암호 프로세서의 동작 방법을 나타낸 도면이다.
도 7을 참조하면, 암호 프로세서의 동작 방법은 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 먹싱하여 복수의 곱셈기들로 전달하는 단계(710), 복수의 곱셈기들을 이용하여, 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하는 단계(720), 덧셈기를 이용하여, 곱셈 결과들 중 일부에 대한 덧셈을 수행하는 단계(730) 및 곱셈 결과들 중 다른 일부와 덧셈 결과에 기초하여, 다항식 곱셈의 결과를 결정하는 단계(740)를 포함한다.
실시예에 따르면, 격자-기반 동형 암호에서 두 암호문들의 다항식 곱셈(예컨대, RNS 기반 CKKS(HE scheme proposed by Cheon, Kim, Kim and Song)의 암호문 곱셈)을 하드웨어 가속을 통해 효율적으로 수행 가능하다. 또한, 하드웨어 가속을 위한 명령어가 생성되며, 해당 명령어에 따라 다항식 곱셈을 수행하는 암호 프로세서의 성능이 향상될 수 있다. 또한, 먹싱을 통해 피연산자들을 각 곱셈기들로 전달하고, 곱셈 결과들의 일부를 내부 데이터 경로를 통해 덧셈기로 전달하는 암호 프로세서의 구조를 통해, 암호 프로세서의 메모리 제약을 효과적으로 해결할 수 있다. 이외에도, 다항식 연산이 수행되는 분야(예컨대, PQC, RNS(residue number system) 등)에도 본 명세서의 설명이 마찬가지로 적용될 수 있다.
도 7에 도시된 각 단계들에는 도 1 내지 도 6을 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.
도 8은 일실시예에 따른 전자 장치를 나타낸 도면이다.
도 8을 참조하면, 전자 장치(800)는 메모리(810) 및 암호 프로세서(820)를 포함할 수 있다. 실시예에 따라 전자 장치(800)는 호스트 프로세서(830)를 더 포함할 수 있다. 메모리(810), 암호 프로세서(820) 및 호스트 프로세서(830)는 버스(bus), PCIe(Peripheral Component Interconnect Express), NoC(Network on a Chip) 등을 통하여 서로 통신할 수 있다. 전자 장치(800)는 도 1의 서버(120)에 해당할 수 있다.
메모리(810)는 암호 프로세서(820)의 동작에 대한 명령어와 다항식 곱셈의 피연산자(예컨대, 다항식 계수 등)를 저장할 수 있다. 암호 프로세서(820)는 메모리(810)에 저장된 명령어가 암호 프로세서(820)에서 실행됨에 따라 앞서 언급된 동작들을 수행할 수 있다. 메모리(910)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
암호 프로세서(820)는 수신된 명령어에 응답하여 격자-기반 텍스트들의 다항식 곱셈을 수행한다. 암호 프로세서(820)는 복수의 다항식들의 계수들을 먹싱하여 복수의 곱셈기들로 전달하고, 복수의 곱셈기들을 이용하여 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하고, 덧셈기를 이용하여 곱셈 결과들 중 일부에 대한 덧셈을 수행하며, 곱셈 결과들 중 다른 일부와 덧셈 결과에 기초하여 다항식의 곱셈 결과를 결정한다. 예를 들어, 암호 프로세서(820)는 가속기 코어 유닛(accelerator core unit) 내 연산기 유닛들 중 하나로 구현될 수 있으나, 암호 프로세서(820)의 구현 예시가 이로 한정되는 것은 아니다.
호스트 프로세서(830)는 전자 장치(800)를 제어하는 장치로서, 예를 들어, CPU(Central Processing Unit) 및/또는 GPU(Graphic Processing Unit) 등을 포함할 수 있다. 호스트 프로세서(830)는 동형 암호의 응용(예컨대, 격자-기반 텍스트들의 다항식 곱셈)을 수행할 수 있다. 예를 들어, 호스트 프로세서(830)는 동형 암호 라이브러리(예컨대, SEAL)를 사용하고, 동형 암호 라이브러리는 하드웨어 가속기를 구동시키기 위한 디바이스 드라이버와 인터페이스할 수 있다. 디바이스 드라이버는 하드웨어 가속기를 구동시키기 위한 명령어 셋(instruction set)을 생성할 수 있다. 생성된 명령어 셋은 가속기로 전달되어 동형 암호의 응용을 수행시키고, 그 결과가 호스트 프로세서(830)로 리턴될 수 있다.
그 밖에, 전자 장치(800)에 관해서는 상술된 동작을 처리할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 격자-기반 텍스트들의 다항식 곱셈을 수행하는 암호 프로세서(crypto processor)의 동작 방법에 있어서,
    상기 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 먹싱(muxing)하여 복수의 곱셈기들로 전달하는 단계;
    상기 복수의 곱셈기들을 이용하여, 상기 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하는 단계;
    덧셈기를 이용하여, 상기 곱셈 결과들 중 일부에 대한 덧셈을 수행하는 단계; 및
    상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과에 기초하여, 상기 다항식 곱셈의 결과를 결정하는 단계
    를 포함하는
    암호 프로세서의 동작 방법.
  2. 제1항에 있어서,
    상기 곱셈 결과들 중 상기 일부는
    상기 일부가 획득된 곱셈기들 각각에서 상기 덧셈기로 연결되는 내부 데이터 경로를 통해 상기 덧셈기로 전달되는,
    암호 프로세서의 동작 방법.
  3. 제1항에 있어서,
    상기 곱셈들을 수행하는 단계는
    상기 먹싱된 계수들 중 제1 텍스트의 제1 다항식 계수와 제2 텍스트의 제3 다항식 계수 간 곱셈;
    상기 제1 텍스트의 제2 다항식 계수와 상기 제3 다항식 계수 간 곱셈;
    상기 제1 다항식 계수와 상기 제2 텍스트의 제4 다항식 계수 간 곱셈; 및
    상기 제2 다항식 계수와 상기 제4 다항식 계수 간 곱셈
    을 병렬로 수행하는,
    암호 프로세서의 동작 방법.
  4. 제3항에 있어서,
    상기 덧셈을 수행하는 단계는
    상기 제2 다항식 계수와 상기 제3 다항식 계수 간 곱셈 결과 및 상기 제1 다항식 계수와 상기 제4 다항식 계수 간 곱셈 결과에 대한 덧셈을 수행하는,
    암호 프로세서의 동작 방법.
  5. 제4항에 있어서,
    상기 결정하는 단계는
    상기 제1 다항식 계수와 상기 제3 다항식 계수 간 곱셈 결과, 상기 덧셈 결과 및 상기 제2 다항식 계수와 상기 제4 다항식 계수 간 곱셈 결과에 기초하여, 상기 다항식 곱셈의 결과를 결정하는,
    암호 프로세서의 동작 방법.
  6. 제1항에 있어서,
    상기 다항식 곱셈의 실행에 대한 명령어 및 상기 계수들을 수신하는 단계
    를 더 포함하고,
    상기 전달하는 단계는 상기 명령어의 수신에 응답하여 수행되는,
    암호 프로세서의 동작 방법.
  7. 제6항에 있어서,
    상기 수신하는 단계는
    상기 복수의 다항식들의 계수들 중 동일 차수의 계수들을 수신하는,
    암호 프로세서의 동작 방법.
  8. 제1항에 있어서,
    상기 텍스트들 각각은
    전달하고자 하는 메시지가 인코딩된 평문(plaintext) 또는 상기 평문이 암호화된 암호문(ciphertext)인,
    암호 프로세서의 동작 방법.
  9. 제1항에 있어서,
    상기 암호 프로세서의 동작 모드를 제어하는 단계
    를 더 포함하고,
    상기 동작 모드가 제1 모드인 경우에 응답하여 상기 덧셈을 수행하는 단계가 수행되고,
    상기 동작 모드가 제2 모드인 경우에 응답하여, 상기 복수의 곱셈기들 각각에 대응하는 동일한 계수가 상기 복수의 곱셈기들로 전달되어 곱셈이 수행되고,
    상기 동작 모드가 제3 모드인 경우에 응답하여, 상기 복수의 곱셈기들 각각으로 상이한 계수가 전달되어 곱셈이 수행되는,
    암호 프로세서의 동작 방법.
  10. 제1항에 있어서,
    상기 텍스트들 각각은 복수의 다항식들로 표현되는,
    암호 프로세서의 동작 방법.
  11. 제10항에 있어서,
    상기 텍스트들 각각을 표현하는 상기 복수의 다항식들은
    메시지에 대응하는 제1 다항식; 및
    상기 메시지에 대응하는 암호문의 암호화 및/또는 복호화에 관련된 암호 키(encrypt key)에 대응하는 제2 다항식
    을 포함하는,
    암호 프로세서의 동작 방법.
  12. 제1항에 있어서,
    상기 복수의 다항식들은 NTT을 통해 변환되고,
    상기 먹싱된 계수들 중 일부에 대한 곱셈들 각각은 포인트-와이즈 곱셈으로 수행되는,
    암호 프로세서의 동작 방법.
  13. 하드웨어와 결합되어 제1항 내지 제12항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  14. 격자-기반 텍스트들의 다항식 곱셈을 수행하는 암호 프로세서에 있어서,
    상기 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 저장하는 입력 레지스터들;
    상기 계수들 중 일부에 대한 곱셈들을 병렬로 수행하는 복수의 곱셈기들;
    상기 곱셈 결과들 중 일부에 대한 덧셈을 수행하는 덧셈기; 및
    상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과를 저장하는 출력 레지스터들
    를 포함하고,
    상기 다항식 곱셈의 결과는 상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과에 기초하여 결정되는,
    암호 프로세서.
  15. 제14항에 있어서,
    상기 곱셈 결과들 중 상기 일부는
    상기 일부가 획득된 곱셈기들 각각에서 상기 덧셈기로 연결되는 내부 데이터 경로를 통해 상기 덧셈기로 전달되는,
    암호 프로세서.
  16. 제14항에 있어서,
    상기 복수의 곱셈기들은
    먹싱된 계수들 중 제1 텍스트의 제1 다항식 계수와 제2 텍스트의 제3 다항식 계수 간 곱셈;
    상기 제1 텍스트의 제2 다항식 계수와 상기 제3 다항식 계수 간 곱셈;
    상기 제1 다항식 계수와 상기 제2 텍스트의 제4 다항식 계수 간 곱셈; 및
    상기 제2 다항식 계수와 상기 제4 다항식 계수 간 곱셈
    을 병렬로 수행하는,
    암호 프로세서.
  17. 제16항에 있어서,
    상기 덧셈기는
    상기 제2 다항식 계수와 상기 제3 다항식 계수 간 곱셈 결과 및 상기 제1 다항식 계수와 상기 제4 다항식 계수 간 곱셈 결과에 대한 덧셈을 수행하는,
    암호 프로세서.
  18. 제17항에 있어서,
    상기 다항식 곱셈의 결과는
    상기 제1 다항식 계수와 상기 제3 다항식 계수 간 곱셈 결과, 상기 덧셈 결과 및 상기 제2 다항식 계수와 상기 제4 다항식 계수 간 곱셈 결과에 기초하여 결정되는,
    암호 프로세서.
  19. 제14항에 있어서,
    상기 계수들을 먹싱하여 상기 복수의 곱셈기들로 전달하는 MUX들
    을 더 포함하는,
    암호 프로세서.
  20. 다항식 곱셈의 대상이 되는 복수의 다항식들의 계수들을 저장하는 메모리; 및
    상기 계수들을 먹싱하여 복수의 곱셈기들로 전달하고, 상기 복수의 곱셈기들을 이용하여 상기 먹싱된 계수들 중 일부에 대한 곱셈들을 병렬로 수행하고, 덧셈기를 이용하여 상기 곱셈 결과들 중 일부에 대한 덧셈을 수행하며, 상기 곱셈 결과들 중 다른 일부와 상기 덧셈 결과에 기초하여 상기 다항식의 곱셈 결과를 결정하는 암호 프로세서
    를 포함하는
    전자 장치.
KR1020200167378A 2020-12-03 2020-12-03 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치 KR20220078155A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200167378A KR20220078155A (ko) 2020-12-03 2020-12-03 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치
US17/233,701 US11895224B2 (en) 2020-12-03 2021-04-19 Crypto processor, method of operating crypto processor, and electronic device including crypto processor
CN202110611355.4A CN114595487A (zh) 2020-12-03 2021-06-01 加密处理器、其操作方法和包括加密处理器的电子设备
EP21188188.3A EP4009575A1 (en) 2020-12-03 2021-07-28 Crypto processor, method of operating crypto processor, and electronic device including crypto processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200167378A KR20220078155A (ko) 2020-12-03 2020-12-03 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치

Publications (1)

Publication Number Publication Date
KR20220078155A true KR20220078155A (ko) 2022-06-10

Family

ID=77103975

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200167378A KR20220078155A (ko) 2020-12-03 2020-12-03 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치

Country Status (4)

Country Link
US (1) US11895224B2 (ko)
EP (1) EP4009575A1 (ko)
KR (1) KR20220078155A (ko)
CN (1) CN114595487A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102498123B1 (ko) * 2022-07-15 2023-02-09 인하대학교 산학협력단 동형암호를 위한 가변적으로 동작하는 ntt 기반 다항식 곱셈기 장치 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220012334A1 (en) * 2021-09-24 2022-01-13 Intel Corporation Low-latency digital signature processing with side-channel security
CN116192359B (zh) * 2022-12-27 2024-01-05 北京瑞莱智慧科技有限公司 一种同态乘法阵列电路和数据处理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
JP3447053B2 (ja) * 2001-03-09 2003-09-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 組み合わせ回路、該組み合わせ回路を使用する符号化装置、復号装置、および半導体デバイス
DE102005028662B4 (de) * 2005-03-04 2022-06-02 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie
JP4182226B2 (ja) * 2005-08-24 2008-11-19 国立大学法人名古屋大学 剰余系の計算方法及び装置並びにプログラム
US8380767B2 (en) * 2007-06-30 2013-02-19 Intel Corporation Polynomial-basis to normal-basis transformation for binary Galois-Fields GF(2m)
CN103548002B (zh) * 2011-03-24 2016-09-21 桑迪士克以色列有限公司 为了降低的功耗的错误分析电路的并行化
US9281941B2 (en) * 2012-02-17 2016-03-08 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
US9313028B2 (en) * 2012-06-12 2016-04-12 Kryptnostic Method for fully homomorphic encryption using multivariate cryptography
US10382194B1 (en) 2014-01-10 2019-08-13 Rockwell Collins, Inc. Homomorphic encryption based high integrity computing system
US9425823B1 (en) * 2015-03-23 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. State-split based encoder and decoder with table compression
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
CA3065976A1 (en) 2017-04-11 2019-02-11 The Governing Council Of The University Of Toronto A homomorphic processing unit (hpu) for accelerating secure computations under homomorphic encryption
US11196539B2 (en) * 2017-06-22 2021-12-07 Microsoft Technology Licensing, Llc Multiplication operations on homomorphic encrypted data
KR102040120B1 (ko) 2018-07-27 2019-11-05 주식회사 크립토랩 근사 암호화된 암호문에 대한 연산을 수행하는 장치 및 방법
DE102018122278A1 (de) 2018-09-12 2020-03-12 Infineon Technologies Ag Ausführen einer kryptographischen Operation
KR102297536B1 (ko) 2018-12-07 2021-09-03 주식회사 크립토랩 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법
JP7273753B2 (ja) * 2020-03-06 2023-05-15 株式会社東芝 数論変換処理装置、数論変換処理方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102498123B1 (ko) * 2022-07-15 2023-02-09 인하대학교 산학협력단 동형암호를 위한 가변적으로 동작하는 ntt 기반 다항식 곱셈기 장치 및 방법

Also Published As

Publication number Publication date
CN114595487A (zh) 2022-06-07
US11895224B2 (en) 2024-02-06
US20220182220A1 (en) 2022-06-09
EP4009575A1 (en) 2022-06-08

Similar Documents

Publication Publication Date Title
KR20220078155A (ko) 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치
US9875377B2 (en) Encryption device of a substitution-box type, and corresponding encryption method and computer program product
EP3504838B1 (en) Secure elliptic curve cryptography instructions
CN107924444B (zh) 安全的模幂运算处理器、方法、系统和指令
WO2011023708A1 (en) Conversion of cryptographic key protection
US20220198027A1 (en) Storage encryption using converged cryptographic engine
Hutter et al. NaCl’s crypto_box in hardware
EP3757857B1 (en) Device id for memory protection
US20170302438A1 (en) Advanced bus architecture for aes-encrypted high-performance internet-of-things (iot) embedded systems
US20230132500A1 (en) Crypto processor and electronic device including the same
EP3758276B1 (en) Data processing method, circuit, terminal device storage medium
US20230185905A1 (en) Protection of authentication tag computation against power and electromagnetic side-channel attacks
KR20230065124A (ko) 암호 프로세서 및 이를 포함한 전자 장치
CN116488788A (zh) 全同态加密算法的硬件加速器、同态加密方法及电子设备
TWI828934B (zh) 處理器、處理器的操作方法及包括其的電子裝置
EP3758288A1 (en) Digital signature verification engine for reconfigurable circuit devices
US11924320B2 (en) Devices and methods for protecting cryptographic programs
KR101481402B1 (ko) 공개키 암호화 시스템 및 그 방법
US10496373B2 (en) Unified integer and carry-less modular multiplier and a reduction circuit
Cowart et al. An implementation and experimental evaluation of hardware accelerated ciphers in all-programmable SoCs
Yang et al. Protecting elliptic curve cryptography against memory disclosure attacks
US11792004B2 (en) Polynomial multiplication for side-channel protection in cryptography
Kolympianakis Securing access in embedded systems via DMA protection and light-weight cryptography.
WO2023285830A1 (en) Cryptographic system for post-quantum cryptographic operations
Ni et al. A novel design of flexible crypto coprocessor and its application

Legal Events

Date Code Title Description
A201 Request for examination