KR102541388B1 - Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법 - Google Patents

Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법 Download PDF

Info

Publication number
KR102541388B1
KR102541388B1 KR1020210039458A KR20210039458A KR102541388B1 KR 102541388 B1 KR102541388 B1 KR 102541388B1 KR 1020210039458 A KR1020210039458 A KR 1020210039458A KR 20210039458 A KR20210039458 A KR 20210039458A KR 102541388 B1 KR102541388 B1 KR 102541388B1
Authority
KR
South Korea
Prior art keywords
ntt
core
ciphertext
encryption
memory
Prior art date
Application number
KR1020210039458A
Other languages
English (en)
Other versions
KR20220134159A (ko
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 KR1020210039458A priority Critical patent/KR102541388B1/ko
Publication of KR20220134159A publication Critical patent/KR20220134159A/ko
Application granted granted Critical
Publication of KR102541388B1 publication Critical patent/KR102541388B1/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3026Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
    • 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
    • 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/0825Key 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 asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/122Hardware reduction or efficient architectures
    • 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
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • 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/30Compression, e.g. Merkle-Damgard construction

Landscapes

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

Abstract

MDF 기반 NTT를 이용한 링-LWE 암호화 방법 및 장치가 제시된다. 본 발명에서 제안하는 MDF 기반 NTT를 이용한 링-LWE 암호화 장치는 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 키생성 프로세서, 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 암호화 프로세서 및 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 복호화 프로세서를 포함한다.

Description

MDF 기반 NTT를 이용한 링-LWE 암호프로세서 장치 및 방법{APPARATUS AND METHOD FOR RING-LWE CRYPTOPROCESSOR USING MDF BASED NTT}
본 발명은 NTT(Number Theoretic Transform) 코어를 이용한 높은 데이터 처리율과 낮은 복잡도를 가지는 Ring-LWE(Learning With Error) 암호프로세서 장치 및 방법에 관한 것이다.
RSA(Rivest, Shamir, and Adleman)와 ECC(Elliptic Curve Cryptosystem) 암호시스템은 이산로그나 인수분해와 같이 다항시간에 풀 수 없는 어려운 문제들에 기반을 두어 설계되었다. 그러나, 이러한 문제들은 Shor가 제안한 양자컴퓨터를 사용하는 알고리즘을 사용하면 다항시간 내에 해결될 수 있다. 따라서, 보다 강력한 암호시스템 혹은 차세대 양자 암호시스템이 요구되고 있으며, NIST(National Institute of Standards and Technology)에서 표준화를 진행 중에 있다. 미래의 양자컴퓨터 시대를 대비한 양자내성암호로 꼽히는 격자-기반 암호 알고리즘은 주로 LWE(Learning With Error) 기법을 사용한다. LWE는 격자-기반 암호 구현 시 에러를 삽입하여 행렬식의 해를 찾기 어렵도록 하는 기법이다. 하지만 계산시에 키가 커지는 단점과 연산속도 문제점 때문에 환(Ring) 안에서 계산하는 Ring-LWE(Learning With Error) 방법이 제안되었다.
Ring-LWE 암호는 격자-기반 암호 알고리즘으로서 Ring-LWE 기법을 사용한다. Ring-LWE는 환(Ring) 안에서 계산되며 다항식 곱셈이 주로 쓰이는데 가장 많은 시간자원을 사용하므로 다항식 연산속도를 향상시켜주는 고성능 NTT를 필요로 한다.
한국 등록특허공보 제10-2040106호(2019.10.29)
본 발명이 이루고자 하는 기술적 과제는 높은 데이터 처리율과 낮은 연산 복잡도를 가지는 Ring-LWE 기반 암호시스템을 위해, 4-병렬 MDF(Multi-path Delay Feedback) 기반 NTT 코어를 사용하는 효율적인 방법 및 장치를 제공하는데 있다. 또한 보안수준을 높이기 위해 파라미터 n=1024을 기반으로 설계되었다. 또한 암호학적 해쉬 알고리즘인 SHA-3(Secure Hash Algorithm-3)를 이용하여 알고리즘의 출력 길이를 확장할 수 있는 함수인 SHAKE128과 SHAKE256을 사용하고 샘플링 과정에 대한 효율적 구현의 어려움과 타이밍 공격으로부터 보호하기 위해 중심 이항 분포(Centered Binomial Distribution)를 에러 분포로 사용하는 방법과 하드웨어 구조를 제안한다. 또한, NTT 다항식 곱셈기의 하드웨어 복잡성을 줄이고 클럭 속도를 높이기 위해 4-병렬 MDF 구조, 파이프라인 구조, 그리고 비트-역순(Bit-Reverse) 연산을 제거하는 방법을 제안한다.
일 측면에 있어서, 본 발명에서 제안하는 MDF 기반 NTT를 이용한 링-LWE 암호화 장치는 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 키생성 프로세서, 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 암호화 프로세서 및 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 복호화 프로세서를 포함한다.
키생성 프로세서는 PRNG 코어로부터 데이터를 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하는 거부 샘플러, PRNG 코어로부터 데이터를 입력 받아 비밀키 생성과 암호화에 필요한 에러를 생성하는 이항 샘플러, 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어, 거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 공개키를 생성하여 메모리에 저장하는 공개키 인코더 및 NTT 코어의 출력을 입력 받아 데이터를 변형시켜 비밀키를 생성하여 메모리에 저장하는 다항식 인코더를 포함한다.
암호화 프로세서는 메모리로부터 저장된 메세지를 수신하여 데이터를 변형시키는 메시지 인코더, 메모리로부터 저장된 공개키를 수신하여 공개키를 변형시키는 공개키 디코더, 공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하는 거부 샘플러, 비밀키 생성과 암호화에 필요한 에러를 생성하는 이항 샘플러, 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어, NTT 코어 및 공개키 디코더의 출력을 점 곱셈 연산한 값을 입력 받아 역-NTT 연산을 수행하는 INTT 코어, 이항 샘플러 및 메시지 인코더의 출력을 다항식 덧셈한 후 INTT 코어의 출력과 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 암호문을 압축하는 컴프레스 및 거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 암호문을 출력하는 암호문 인코더를 포함한다.
복호화 프로세서는 메모리로부터 저장된 암호문을 수신하여 암호문을 복원하는 암호문 디코더, 메모리로부터 저장된 비밀키를 수신하여 비밀키를 변형시키는 다항식 디코더, 암호문 디코더 및 다항식 디코더의 출력을 점 곱셈 연산한 값을 입력 받아 역-NTT 연산을 수행하는 INTT 코어, 암호문 디코더의 출력을 입력 받아 복원된 암호문을 압축해제하는 디컴프레스 및 INTT 코어 및 디컴프레스의 출력을 다항식 뺄셈한 값을 입력 받아 원본 메시지를 최종 출력하는 디코더를 포함한다.
또 다른 일 측면에 있어서, 본 발명에서 제안하는 MDF 기반 NTT를 이용한 링-LWE 암호화 방법은 키생성 프로세서를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 단계, 암호화 프로세서를 통해 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 단계 및 복호화 프로세서를 통해 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 단계를 포함한다.
본 발명의 실시예들에 따르면 Ring-LWE 암호프로세서에 있어서 에러를 생성하는 샘플링 과정에서 효율적 구현과 타이밍 공격으로부터 보호하기 위해 중심 이항 분포를 에러 분포로 사용하며, 병렬 처리를 통해서 지연 시간을 줄이고 높은 데이터 처리량을 가질 수 있다. 또한, NTT 코어에 있어서 파이프라인을 이용한 4-병렬 MDF-기반으로 설계하여 높은 클럭 속도를 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 MDF 기반 NTT를 이용한 Ring-LWE 암호화 장치의 구성을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 키생성 프로세서를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 암호화 프로세서를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 복호화 프로세서를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 거부 샘플러를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 이항 샘플러를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 4-병렬 MDF-기반 NTT 코어의 구조를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 NTT 코어의 PE1(Processing Element 1) 구조를 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 NTT 코어의 PE2(Processing Element 1) 구조를 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 NTT 코어의 MR(Modulo Reduction) 구조를 나타내는 도면이다.
도 11은 본 발명의 일 실시예에 따른 MDF 기반 NTT를 이용한 Ring-LWE 암호화 방법을 설명하기 위한 흐름도이다.
본 발명은 NTT(Number Theoretic Transform Core) 코어를 이용한 높은 데이터 처리율과 낮은 복잡도를 가지는 Ring-LWE(Learning With Error) 암호프로세서 장치 및 방법에 관한 것으로, 더욱 상세하게는, 파이프라인 구조를 위한 방식 중 높은 데이터 처리율 대비 낮은 하드웨어 면적을 갖는 MDF(Multi-path Delay Feedback) 방식을 적용하여 Ring-LWE 암호프로세서의 면적은 줄이고 데이터 처리율은 높이는 방법에 관한 것이다.
Ring-LWE 암호는 격자-기반 암호 알고리즘으로서 Ring-LWE 기법을 사용한다. Ring-LWE는 환(Ring) 안에서 계산되며 다항식 곱셈이 주로 쓰이는데 가장 많은 시간자원을 사용하므로 다항식 연산속도를 향상시켜주는 고성능 NTT를 필요로 한다. 제안된 고성능 NTT 아키텍처는 높은 데이터 처리율을 얻기 위해 파이프라인이 가능한 구조인 4-병렬 MDF(Multi-path Delay Feedback) 구조 방법을 사용하였다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 MDF 기반 NTT를 이용한 Ring-LWE 암호화 장치의 구성을 나타내는 도면이다.
제안하는 MDF 기반 NTT를 이용한 Ring-LWE 암호화 장치는 키생성 프로세서(110), 암호화 프로세서(120) 및 복호화 프로세서(130)를 포함한다.
키생성 프로세서(110)는 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장한다.
본 발명의 실시예에 따른 키생성 프로세서(110)는 PRNG 코어(111), 거부 샘플러(112), 이항 샘플러(113), NTT 코어(114), 공개키 인코더(115) 및 다항식 인코더(116)를 포함할 수 있다.
본 발명의 실시예에 따른 PRNG 코어(111)는 해쉬 알고리즘으로 거부 샘플러(112)와 이항 샘플러(113)의 입력에 사용되는 장치이다.
본 발명의 실시예에 따른 거부 샘플러(112)는 PRNG 코어(111)로부터 데이터를 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성할 수 있다.
본 발명의 실시예에 따른 이항 샘플러(113)는 PRNG 코어(111)로부터 데이터를 입력 받아 비밀키 생성과 암호화에 필요한 에러를 생성할 수 있다.
본 발명의 실시예에 따른 NTT 코어(114)는 파라미터 n =1024 다항식을 수신할 수 있는 입력에 대해 NTT 연산을 수행하는 4-병렬 MDF-기반 NTT 코어 장치일 수 있다.
본 발명의 실시예에 따른 다항식 인코더(116)는 이항 샘플러의 결과인 다항식을 수신하여 암호화에 사용할 수 있는 비밀키로 만들어주는 인코더이다.
본 발명의 실시예에 따른 키생성 프로세서(110)에 대하여 도 2를 참조하여 더욱 상세히 설명한다.
암호화 프로세서(120)는 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 메모리로부터 받아온 공개키를 이용하여 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력한다.
본 발명의 실시예에 따른 암호화 프로세서(120)는 메시지 인코더(121), 공개키 디코더(122), 이항 샘플러(123), 거부 샘플러(124), NTT 코어(125), 덧셈기(126) INTT 코어(127), 컴프레스(128) 및 암호문 인코더(129)를 포함한다.
본 발명의 실시예에 따른 메시지 인코더(121)는 데이터를 수신하여 암호화 프로세서(120)에 적합하게 데이터를 변형시켜주는 인코더이다.
본 발명의 실시예에 따른 공개키 디코더(122)는 공개키에 대한 다항식을 수신하여 암호화에 적합하게 데이터의 변형시켜주는 디코더이다.
본 발명의 실시예에 따른 INTT 코어(126)는 파라미터 n =1024 다항식을 수신할 수 있는 입력에 대해 역 NTT 연산을 수행하는 4-병렬 MDF-기반 INTT 코어일 수 있다.
본 발명의 실시예에 따른 컴프레스(128)는 암호화된 데이터의 크기를 줄여주는 구조이다.
본 발명의 실시예에 따른 암호문 인코더(129)는 다항식을 수신하여 암호화에 적합하게 데이터를 변형시켜주는 인코더이다.
본 발명의 실시예에 따른 암호화 프로세서(120)에 대하여 도 3를 참조하여 더욱 상세히 설명한다.
복호화 프로세서(130)는 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력한다.
본 발명의 실시예에 따른 복호화 프로세서(130)는 암호문 디코더(131), 다항식 디코더(132), INTT 코어(133), 디컴프레스(134), 뺄셈기(135) 및 디코더(136)를 포함한다.
본 발명의 실시예에 따른 디컴프레스(134)는 압축과정에서 줄어든 데이터의 크기를 복원하는 구조이다.
본 발명의 실시예에 따른 디코더(136)는 복호화 프로세서의 연산 값을 변형하여 최종적으로 복호화된 데이터를 출력하는 장치일 수 있다.
본 발명의 실시예에 따른 복호화 프로세서(130)에 대하여 도 4를 참조하여 더욱 상세히 설명한다.
도 1를 참조하면, 키 생성과정으로 PRNG 코어를 통해서 생성된 시드(Seed)를 이항 샘플링과정과 거부 샘플링과정으로 출력하고 인코딩 과정을 통해서 최종적으로 공개키와 비밀키를 생성한다. 암호화 과정은 키 생성 모듈에서 공개키를 전달 받고 원하는 정보를 암호화하는 과정으로 전달 받은 공개키를 디코딩을 통해서 Publicseed와
Figure 112021035741489-pat00001
으로 출력하고 키 생성 과정과 동일하게 이항 샘플링과정과 거부 샘플링과정을 갖는다. 원하는 정보를 메시지 인코더를 통해서 타인이 확인할 수 없게 암호화하고 암호문의 크기를 줄이는 압축 과정을 갖는다. 최종적으로 다항식 인코더를 통해서 암호문을 출력으로 갖는다. 복호화 구조는 암호문과 비밀키를 전달받아 연산을 수행한다. 암호문은 디코더 과정을 통해서
Figure 112021035741489-pat00002
Figure 112021035741489-pat00003
로 분리되고
Figure 112021035741489-pat00004
는 압축해제를 통해서
Figure 112021035741489-pat00005
로 분할된다. 비밀키는 다항식 디코더을 통해서
Figure 112021035741489-pat00006
를 출력하고
Figure 112021035741489-pat00007
와 연산을 하며 디코딩 과정을 통해서 원본 정보로 복원된다.
Ring-LWE의 모든 연산은
Figure 112021035741489-pat00008
의 조건을 만족시키면서 동작하므로 다항식 a(x)와 b(x)는 수학식 1과 같이 나타낼 수 있다.
Figure 112021035741489-pat00009
수학식 1
다항식 곱셈기에 사용되는 NTT 연산은 수학식 2와 같이 나타낼 수 있다.
Figure 112021035741489-pat00010
수학식 2
벡터(Vector)
Figure 112021035741489-pat00011
는 다항식 a(x)의 계수이다. n은 다항식의 계수로 1의 n 제곱근(root of unity)의 값을 가진다. 또한w는 위의 수학식에서 사용되는 각 다항식마다 곱해지는 회전인자(twiddle factor)이며, n과 w는
Figure 112021035741489-pat00012
,
Figure 112021035741489-pat00013
의 조건을 만족하는 숫자로 구성된다. q는 Ring-LWE 암호에서 사용되는 소수이다.
그리고 다항식 곱셈기에 사용되는 INTT(Inverse Number Theoretic Transform) 연산은 수학식 3과 같이 나타낸다.
Figure 112021035741489-pat00014
수학식 3
이항 샘플러는 Ring-LWE의 에러 분포에 대해 매개 변수 k=8의 중심 이항분포 k를 사용하며 연산은 수학식 4와 같이 나타낸다.
Figure 112021035741489-pat00015
수학식 4
도 2는 본 발명의 일 실시예에 따른 키생성 프로세서를 설명하기 위한 도면이다.
본 발명의 실시예에 따른 키생성 프로세서(200)는 PRNG 코어(210), 거부 샘플러(220), 이항 샘플러(230), NTT 코어(240), 공개키 인코더(250) 및 다항식 인코더(260)를 포함할 수 있다.
거부 샘플러(220)는 PRNG 코어로부터 데이터를 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성한다.
이항 샘플러(230)는 PRNG 코어로부터 데이터를 입력 받아 비밀키 생성과 암호화에 필요한 에러를 생성한다.
NTT 코어(240)는 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행한다.
공개키 인코더(250)는 거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 공개키를 생성하여 메모리에 저장한다.
다항식 인코더(260)는 NTT 코어의 출력을 입력 받아 데이터를 변형시켜 비밀키를 생성하여 메모리에 저장한다.
본 발명의 실시예에 따르면, PRNG 코어(210)는 SHAKE128과 SHAKE256의 알고리즘 구현에 사용되며 SHAKE는 SHA-3 Keccak알고리즘 중 XOF으로 출력이 가변 길이를 가지는 해쉬 알고리즘이다. PRNG 코어(210)를 통해서 생성된 PRNG 출력이 각각 거부 샘플러(220)와 이항 샘플러(230)로 입력이 되고 이항 샘플러(230)의 출력은 각각 e와 s가 되어 NTT 코어(240)에 입력된다. NTT 코어(240)의 결과로 나온 e와 s는 거부 샘플러(220)의 출력 값과 함께 공개키 인코더(250)에 입력되고 출력으로 공개키를 생성하며 s는 따로 나와서 다항식 인코더(260)를 통해 비밀키를 생성한다.
도 3은 본 발명의 일 실시예에 따른 암호화 프로세서를 설명하기 위한 도면이다.
본 발명의 실시예에 따른 암호화 프로세서(300)는 메시지 인코더(310), 공개키 디코더(320), 이항 샘플러(330), 거부 샘플러(340), NTT 코어(350), 점 곱셈기(351, 352), 덧셈기(360), INTT 코어(370), 컴프레스(380) 및 암호문 인코더(390)를 포함한다.
메시지 인코더(310)는 메모리로부터 저장된 메세지를 수신하여 데이터를 변형시킨다.
공개키 디코더(320)는 메모리로부터 저장된 공개키를 수신하여 공개키를 변형시킨다.
거부 샘플러(340)는 공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성한다.
이항 샘플러(330)는 비밀키 생성과 암호화에 필요한 에러를 생성한다.
NTT 코어(350)는 이항 샘플러(330)의 출력을 입력 받아 NTT 연산을 수행한다.
INTT 코어(370)는 NTT 코어(350) 및 공개키 디코더(320)의 출력을 점 곱셈기(351)를 통해 점 곱셈 연산한 값을 입력 받아 역-NTT 연산을 수행한다.
컴프레스(380)는 이항 샘플러(330) 및 메시지 인코더(310)의 출력을 덧셈기(360)를 통해 다항식 덧셈한 후 INTT 코어(370)의 출력과 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 암호문을 압축한다.
암호문 인코더(390)는 거부 샘플러(340) 및 NTT 코어(350)의 출력을 점 곱셈기(352)를 통해 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 암호문을 출력한다.
본 발명의 실시예에 따르면, 원본 메시지를 입력 받아 메시지 인코더를 통해 인코딩되고 키생성 프로세서에서 전달 받은 공개키를 디코딩을 통해 publicseed와
Figure 112021035741489-pat00016
으로 출력하고 키생성 프로세서에서의 과정과 동일하게 이항 샘플링과정과 거부 샘플링과정을 갖는다. NTT 코어와 점 곱셈 연산을 한 후 다항식 덧셈을 통해서 각각의 계수를 더하고 암호문의 크기를 줄이는 압축 과정을 갖는다. 최종적으로 암호문 인코더를 통해 암호문이 출력된다.
도 4는 본 발명의 일 실시예에 따른 복호화 프로세서를 설명하기 위한 도면이다.
본 발명의 실시예에 따른 복호화 프로세서(400)는 암호문 디코더(410), 다항식 디코더(420), 점 곱셈기(421), INTT 코어(430), 디컴프레스(440), 뺄셈기(441) 및 디코더(450)를 포함한다.
암호문 디코더(410)는 메모리로부터 저장된 암호문을 수신하여 암호문을 복원한다.
다항식 디코더(420)는 메모리로부터 저장된 비밀키를 수신하여 비밀키를 변형시킨다.
INTT 코어(430)는 암호문 디코더(410) 및 다항식 디코더(420)의 출력을 점 곱셈기(421)를 통해 점 곱셈 연산한 값을 입력 받아 역-NTT 연산을 수행한다.
디컴프레스(440)는 암호문 디코더(410)의 출력을 입력 받아 복원된 암호문을 압축해제한다.
디코더(450)는 INTT 코어(430) 및 디컴프레스(440)의 출력을 뺄셈기(441)를 통해 다항식 뺄셈한 값을 입력 받아 원본 메시지를 최종 출력한다.
본 발명의 실시예에 따르면, 복호화 프로세서(400)는 비밀키를 이용해서 전달 받은 암호문을 원래 정보로 복원하는 과정을 가지며 전달 받은 암호문과 비밀키는 다항식 디코더를 거치고 나서 점 곱셈연산을 한 뒤에 INTT 코어에 입력된다. 입력된 값은 다시 압축해제 과정을 거친 암호문과 각각의 다항식의 계수 뺄셈 연산을 하고 디코더를 통해 최종적으로 원본 메시지를 출력한다.
도 5는 본 발명의 일 실시예에 따른 거부 샘플러를 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 거부 샘플러는 처음 입력 값을 통해서 PRNG 코어의 출력을 받고 하위 16비트씩 MUX에 입력되며 5q 보다 작으면 RAM에 해당하는 값을 저장하고 값이 5q 보다 크면 저장하지 않는다.
본 발명의 일 실시예에 따르면, 해당 동작을 계속해서 64번 반복한 뒤에 RAM의 주소 값이 64보다 크면 IN 값으로 다시 PRNG 코어 연산을 하고 그렇지 않으면 PRNG 코어의 출력이 다시 입력으로 들어가게 된다. 해당 동작은 총 1024개의 16비트가 저장될 때까지 계속해서 연산을 반복할 수 있다.
도 6은 본 발명의 일 실시예에 따른 이항 샘플러를 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 이항 샘플러는 PRNG 출력으로 얻은 1024비트를 32비트씩 순차적으로 연산을 하게 되며 4-병렬 구조로 설계되었다. 이항 샘플러는 Ring-LWE의 에러 분포에 대해 매개 변수 k=8의 중심 이항분포 k를 사용한다. k=8일 때의 8비트를 1로 설정된 비트의 수를 반환하는 함수인 HW(Hamming weight)를 통해 계산한다. 결과 값과 q값은 MUX를 통해 연결되어 q값을 기준으로 값을 선택해서 출력한다.
도 7은 본 발명의 일 실시예에 따른 4-병렬 MDF-기반 NTT 코어의 구조를 나타내는 도면이다.
본 발명의 일 실시예에 따르면, 모든 데이터는 4-병렬 구조로 연산을 수행하며, NTT 코어는 PE1, PE2로 구성될 수 있다. 4-병렬 기반이므로 4-path를 사용하고 각각의 path에서는 PE1 구조를 이용해서 연산하며, 각 path는 stage-8까지 256-point BU(Butterfly Unit)부터 2-point BU까지 연산하고 stage-9와 stage-10 에서는 2-point BU 연산을 위한 PE2가 2개씩 사용될 수 있다.
도 8은 본 발명의 일 실시예에 따른 NTT 코어의 PE1(Processing Element 1) 구조를 나타내는 도면이다.
본 발명의 일 실시예에 따른 PE1 Addition, 28비트 MR(Modular Reduction), FIFO 레지스터, BU로 구성되어 있다. a + bw, a - bw 와 같은 BU 연산을 수행하는 과정 중 입력된 데이터는 MR1 블록에서 연산된 후에 제어신호에 의해 ROM형식으로 저장된
Figure 112021035741489-pat00017
값과 곱셈 연산을 한다. 해당 연산을 수행한 후에 환 안의 값으로 줄여주는 MR2 블록을 지나서 BU 연산을 하게 된다.
도 9는 본 발명의 일 실시예에 따른 NTT 코어의 PE2(Processing Element 1) 구조를 나타내는 도면이다.
본 발명의 일 실시예에 따르면, MDF-기반 구조에만 사용된 PE2는 PE1과 다르게 FIFO 레지스터가 없고 바로 BU 연산을 하게 된다.
도 10은 본 발명의 일 실시예에 따른 NTT 코어의 MR(Modulo Reduction) 구조를 나타내는 도면이다.
본 발명의 일 실시예에 따른 NTT 코어의 연산은 환(ring) 안에서 동작해야 하므로 매 연산마다 환 안의 값으로 줄여주는 MR 연산을 필요로 한다. t값은 ((x<<1) + (x<<4) + (x<<6) + (x<<8) + (x<<10) + (x<< 12) + (x <<14) >>28)이며 t2는 Reduction을 위해 입력 받은 x값에서 (t<<12)+(t<<13)+t 값을 뺀다. 계산된 t2값이 q값인 12289보다 크면 12289을 빼주고 그렇지 않으면 그대로 t2값을 내보낸다.
도 11은 본 발명의 일 실시예에 따른 MDF 기반 NTT를 이용한 Ring-LWE 암호화 방법을 설명하기 위한 흐름도이다.
본 발명의 일 실시예에 따른 MDF 기반 NTT를 이용한 Ring-LWE 암호화 방법은 키생성 프로세서를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 단계(1110), 암호화 프로세서를 통해 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 단계(1120) 및 복호화 프로세서를 통해 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 단계(1130)를 포함한다.
단계(1110)에서, 키생성 프로세서를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장한다.
단계(1110)에서, 거부 샘플러를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하고, 이항 샘플러를 통해 PRNG 코어로부터 데이터를 입력 받아 비밀키 생성과 암호화에 필요한 에러를 생성한다.
NTT 코어를 통해 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하고, 거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 공개키 인코더를 통해 입력 받아 공개키를 생성하여 메모리에 저장한다. 이후, 다항식 인코더를 통해 NTT 코어의 출력을 입력 받아 데이터를 변형시켜 비밀키를 생성하여 메모리에 저장한다.
단계(1120)에서, 암호화 프로세서를 통해 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력한다.
단계(1120)에서, 메시지 인코더를 통해 메모리로부터 저장된 메세지를 수신하여 데이터를 변형시키고, 공개키 디코더를 통해 메모리로부터 저장된 공개키를 수신하여 공개키를 변형시킨다.
거부 샘플러를 통해 공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하고, 이항 샘플러를 통해 비밀키 생성과 암호화에 필요한 에러를 생성한다.
NTT 코어를 통해 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하고, NTT 코어 및 공개키 디코더의 출력을 점 곱셈 연산한 값을 INTT 코어를 통해 입력 받아 역-NTT 연산을 수행한다.
이항 샘플러 및 메시지 인코더의 출력을 다항식 덧셈한 후 INTT 코어의 출력과 다항식 덧셈을 통해 각각의 계수를 더한 값을 컴프레스를 통해 입력 받아 암호문을 압축하고, 거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 암호문 인코더를 통해 입력 받아 암호문을 출력한다.
단계(1130)에서, 복호화 프로세서를 통해 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력한다.
단계(1130)에서, 암호문 디코더를 통해 메모리로부터 저장된 암호문을 수신하여 암호문을 복원하고, 다항식 디코더를 통해 메모리로부터 저장된 비밀키를 수신하여 비밀키를 변형시킨다.
디코더 및 다항식 디코더의 출력을 점 곱셈 연산한 값을 INTT 코어를 통해 입력 받아 역-NTT 연산을 수행하고, 디컴프레스를 통해 디코더의 출력을 입력 받아 복원된 암호문을 압축해제한다. 이후, INTT 코어 및 디컴프레스의 출력을 다항식 뺄셈한 값을 디코더를 통해 입력 받아 원본 메시지를 최종 출력한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다.  또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다.  이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다.  예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다.  또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다.  소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다.  소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다.  상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.  상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.  컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.  프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (8)

  1. PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 키생성 프로세서;
    메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 암호화 프로세서; 및
    메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 복호화 프로세서
    를 포함하고,
    상기 키생성 프로세서 및 암호화 프로세서는 NTT 연산을 수행하기 위한 MDF(Multi-path Delay Feedback) 기반 NTT 코어를 포함하고,
    상기 NTT 코어는,
    모든 데이터에 대하여 병렬 구조로 연산을 수행하며, PE1(Processing Element 1), PE2(Processing Element 2)를 포함하고,
    상기 PE1 및 PE2는 BU 연산을 위한 서로 다른 구조를 가지며,
    병렬 구조에 따른 복수의 경로(path)를 사용하여, 각각의 경로에서는 PE1 구조를 이용하여 연산하고, 각각의 경로는 스테이지1-스테이지8까지 256-포인트 BU(Butterfly Unit)부터 2-포인트 BU까지 연산하며, 이후 스테이지9 및 스테이지10에서는 2-포인트 BU 연산을 위한 PE2가 사용되며,
    상기 PE2는 PE1과 다르게 FIFO 레지스터가 없고 바로 BU 연산을 수행하는
    암호화 장치.
  2. 제1항에 있어서,
    키생성 프로세서는,
    PRNG 코어로부터 데이터를 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하는 거부 샘플러;
    PRNG 코어로부터 데이터를 입력 받아 비밀키 생성과 암호화에 필요한 에러를 생성하는 이항 샘플러;
    이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어;
    거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 공개키를 생성하여 메모리에 저장하는 공개키 인코더; 및
    NTT 코어의 출력을 입력 받아 데이터를 변형시켜 비밀키를 생성하여 메모리에 저장하는 다항식 인코더
    를 포함하는 암호화 장치.
  3. 제1항에 있어서,
    암호화 프로세서는,
    메모리로부터 저장된 메세지를 수신하여 데이터를 변형시키는 메시지 인코더;
    메모리로부터 저장된 공개키를 수신하여 공개키를 변형시키는 공개키 디코더;
    공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하는 거부 샘플러;
    비밀키 생성과 암호화에 필요한 에러를 생성하는 이항 샘플러;
    이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어;
    NTT 코어 및 공개키 디코더의 출력을 점 곱셈 연산한 값을 입력 받아 역-NTT 연산을 수행하는 INTT 코어;
    이항 샘플러 및 메시지 인코더의 출력을 다항식 덧셈한 후 INTT 코어의 출력과 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 암호문을 압축하는 컴프레스; 및
    거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 입력 받아 암호문을 출력하는 암호문 인코더
    를 포함하는 암호화 장치.
  4. 제1항에 있어서,
    복호화 프로세서는,
    메모리로부터 저장된 암호문을 수신하여 암호문을 복원하는 암호문 디코더;
    메모리로부터 저장된 비밀키를 수신하여 비밀키를 변형시키는 다항식 디코더;
    암호문 디코더 및 다항식 디코더의 출력을 점 곱셈 연산한 값을 입력 받아 역-NTT 연산을 수행하는 INTT 코어;
    암호문 디코더의 출력을 입력 받아 복원된 암호문을 압축해제하는 디컴프레스; 및
    INTT 코어 및 디컴프레스의 출력을 다항식 뺄셈한 값을 입력 받아 원본 메시지를 최종 출력하는 디코더
    를 포함하는 암호화 장치.
  5. 키생성 프로세서를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 단계;
    암호화 프로세서를 통해 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 단계; 및
    복호화 프로세서를 통해 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 단계
    를 포함하고,
    상기 키생성 프로세서 및 암호화 프로세서는 NTT 연산을 수행하기 위한 MDF(Multi-path Delay Feedback) 기반 NTT 코어를 포함하고,
    상기 NTT 코어는,
    모든 데이터에 대하여 병렬 구조로 연산을 수행하며, PE1(Processing Element 1), PE2(Processing Element 2)를 포함하고,
    상기 PE1 및 PE2는 BU 연산을 위한 서로 다른 구조를 가지며,
    병렬 구조에 따른 복수의 경로(path)를 사용하여, 각각의 경로에서는 PE1 구조를 이용하여 연산하고, 각각의 경로는 스테이지1-스테이지8까지 256-포인트 BU(Butterfly Unit)부터 2-포인트 BU까지 연산하며, 이후 스테이지9 및 스테이지10에서는 2-포인트 BU 연산을 위한 PE2가 사용되며,
    상기 PE2는 PE1과 다르게 FIFO 레지스터가 없고 바로 BU 연산을 수행하는
    암호화 방법.
  6. 제5항에 있어서,
    키생성 프로세서를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하고, NTT 연산을 수행한 뒤 공개키 및 비밀키를 생성하여 메모리에 저장하는 단계는,
    거부 샘플러를 통해 PRNG 코어로부터 데이터를 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하고,
    이항 샘플러를 통해 PRNG 코어로부터 데이터를 입력 받아 비밀키 생성과 암호화에 필요한 에러를 생성하고,
    NTT 코어를 통해 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하고,
    거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 공개키 인코더를 통해 입력 받아 공개키를 생성하여 메모리에 저장하고,
    다항식 인코더를 통해 NTT 코어의 출력을 입력 받아 데이터를 변형시켜 비밀키를 생성하여 메모리에 저장하는
    암호화 방법.
  7. 제5항에 있어서,
    암호화 프로세서를 통해 메모리로부터 저장된 공개키와 데이터를 수신하여 변형시키고, 공개키 생성 및 비밀키 생성과 암호화에 필요한 에러를 생성하며, NTT 및 INTT 연산을 수행한 뒤 암호문의 압축 과정을 거친 후, 암호문을 출력하는 단계는,
    메시지 인코더를 통해 메모리로부터 저장된 메세지를 수신하여 데이터를 변형시키고,
    공개키 디코더를 통해 메모리로부터 저장된 공개키를 수신하여 공개키를 변형시키고,
    거부 샘플러를 통해 공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 에러를 생성하고,
    이항 샘플러를 통해 비밀키 생성과 암호화에 필요한 에러를 생성하고,
    NTT 코어를 통해 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하고,
    NTT 코어 및 공개키 디코더의 출력을 점 곱셈 연산한 값을 INTT 코어를 통해 입력 받아 역-NTT 연산을 수행하고,
    이항 샘플러 및 메시지 인코더의 출력을 다항식 덧셈한 후 INTT 코어의 출력과 다항식 덧셈을 통해 각각의 계수를 더한 값을 컴프레스를 통해 입력 받아 암호문을 압축하고,
    거부 샘플러 및 NTT 코어의 출력을 점 곱셈 연산한 후 다항식 덧셈을 통해 각각의 계수를 더한 값을 암호문 인코더를 통해 입력 받아 암호문을 출력하는
    암호화 방법.
  8. 제5항에 있어서,
    복호화 프로세서를 통해 메모리로부터 저장된 비밀키와 암호문을 수신하여 암호문을 복원하고, 비밀키를 변형시키며, INTT 연산을 수행한 뒤 복원된 암호문의 압축해제 과정을 거친 후, 원본 메시지를 최종 출력하는 단계는,
    암호문 디코더를 통해 메모리로부터 저장된 암호문을 수신하여 암호문을 복원하고,
    다항식 디코더를 통해 메모리로부터 저장된 비밀키를 수신하여 비밀키를 변형시키고,
    암호문 디코더 및 다항식 디코더의 출력을 점 곱셈 연산한 값을 INTT 코어를 통해 입력 받아 역-NTT 연산을 수행하고,
    디컴프레스를 통해 암호문 디코더의 출력을 입력 받아 복원된 암호문을 압축해제하고,
    INTT 코어 및 디컴프레스의 출력을 다항식 뺄셈한 값을 디코더를 통해 입력 받아 원본 메시지를 최종 출력하는
    암호화 방법.
KR1020210039458A 2021-03-26 2021-03-26 Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법 KR102541388B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210039458A KR102541388B1 (ko) 2021-03-26 2021-03-26 Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210039458A KR102541388B1 (ko) 2021-03-26 2021-03-26 Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220134159A KR20220134159A (ko) 2022-10-05
KR102541388B1 true KR102541388B1 (ko) 2023-06-12

Family

ID=83596720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210039458A KR102541388B1 (ko) 2021-03-26 2021-03-26 Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102541388B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102637234B1 (ko) * 2023-07-06 2024-02-15 기초과학연구원 격자 기반 공개키 암호 시스템 및 이에 포함된 전자장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102040106B1 (ko) * 2018-10-29 2019-11-27 주식회사 크립토랩 실수 평문에 대한 동형 암호화 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102040106B1 (ko) * 2018-10-29 2019-11-27 주식회사 크립토랩 실수 평문에 대한 동형 암호화 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Neng Zhang 외 5명, Highly Efficient Architecture of NewHope-NIST on FPGA using Low-COmplexity NTT/INTT, IACR Transactions on Cryptographic Hardware and Embedded Systems, Vol. 2020, No. 2 (2020.03.02.)*

Also Published As

Publication number Publication date
KR20220134159A (ko) 2022-10-05

Similar Documents

Publication Publication Date Title
Liu et al. Optimized schoolbook polynomial multiplication for compact lattice-based cryptography on FPGA
Pöppelmann et al. Towards practical lattice-based public-key encryption on reconfigurable hardware
Orlando et al. A high-performance reconfigurable elliptic curve processor for GF (2m)
Zhang et al. An efficient and parallel R-LWE cryptoprocessor
JP4575283B2 (ja) 暗号装置、復号装置、プログラム及び方法
US7908641B2 (en) Modular exponentiation with randomized exponent
Chou McBits revisited
JP4197710B2 (ja) 暗号装置、復号装置、プログラム及び方法
US20150312028A1 (en) Homomorphic encryption and decryption methods using ring isomorphism, and apparatuses using the same
JPH09230786A (ja) データの暗号化方法及び装置
JP2010204466A (ja) 暗号装置、復号装置、鍵生成装置及びプログラム
JP5852518B2 (ja) 認証暗号化装置、認証復号装置、およびプログラム
WO2018118660A1 (en) Integrated security and data redundancy
KR102541388B1 (ko) Mdf 기반 ntt를 이용한 링-lwe 암호프로세서 장치 및 방법
JP2010049213A (ja) 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
Bian et al. APAS: Application-specific accelerators for RLWE-based homomorphic linear transformations
JP6916770B2 (ja) 秘匿計算装置、秘匿計算方法及び秘匿計算プログラム
JP7047838B2 (ja) 秘密計算装置、比較方法、比較プログラム、および秘密計算システム
Bhaskar et al. Efficient Galois field arithmetic on SIMD architectures
US11477172B2 (en) Securing data compression
KR102462395B1 (ko) 양자내성암호를 위한 모듈-lwe 기반 암호 프로세서 시스템 및 방법
Negi et al. Implementation of AES Employing Systolic Array and Pipelining Approach
KR102451633B1 (ko) 동형암호를 위한 암호화 처리 장치 및 방법
JP2010049217A (ja) 表現変換装置、演算装置、表現変換方法及びプログラム
JP3959076B2 (ja) 有限体の二乗演算方法及び二乗演算装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right