KR102155035B1 - 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법 - Google Patents

양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법 Download PDF

Info

Publication number
KR102155035B1
KR102155035B1 KR1020180144527A KR20180144527A KR102155035B1 KR 102155035 B1 KR102155035 B1 KR 102155035B1 KR 1020180144527 A KR1020180144527 A KR 1020180144527A KR 20180144527 A KR20180144527 A KR 20180144527A KR 102155035 B1 KR102155035 B1 KR 102155035B1
Authority
KR
South Korea
Prior art keywords
array
polynomial
coefficient
value
ntru
Prior art date
Application number
KR1020180144527A
Other languages
English (en)
Other versions
KR20200059600A (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 KR1020180144527A priority Critical patent/KR102155035B1/ko
Publication of KR20200059600A publication Critical patent/KR20200059600A/ko
Application granted granted Critical
Publication of KR102155035B1 publication Critical patent/KR102155035B1/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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • 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/0852Quantum cryptography

Landscapes

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

Abstract

NRTU 복호화 방법에 있어서, 개인키 f에 대응하는 비밀 다항식 F의 계수들인 -1, 0 및 1 각각을 자연수 a, b 및 c로 변환한 비밀 다항식 F'를 결정하는 단계; 암호문 배열 ei에 포함된 계수들 각각에 소정 정수 p를 곱하여 배열 PEi에 저장하는 단계, i는 0 이상 N 미만의 정수들이며, N-1은 암호문 e와 비밀 다항식 F'의 최대 차수임; 자연수 a에 대응하는 제 1 배열 Ti[a], 자연수 b에 대응하는 제 2 배열 Ti[b] 및 자연수 c에 대응하는 제 3 배열 Ti[c]에 랜덤 값을 초기 값으로 할당하는 단계; 비밀 다항식 F'에서 자연수 a, b 및 c를 계수로 가지는 항의 차수에 기초하여, 제 1 배열 Ti[a], 제 2 배열 Ti[b], 제 3 배열 Ti[c] 각각에 배열 PEi에 저장된 값들을 할당 및 누적하는 단계; 및 제 3 배열 Ti[c]에 누적된 값으로부터 제 1 배열 Ti[a]에 누적된 값을 차감한 값에 기초하여, ei에 대응하는 평문 배열 mi를 결정하는 단계를 포함하는 것을 특징으로 하는 일 실시예에 따른 NTRU 복호화 방법이 개시된다.

Description

양자 내성 암호 NTRU 기술에 대한 단일 파형 전력 분석 및 대응 방법{SINGLE POWER CONSUMPTION TRACE ANALYZING AND COUNTERMEASURE AGAINST QUANTUM RESISTANCE CRYPTOGRAPHY NTRU TECHNOLOGY}
본 발명은 암호 분야에 관한 것이다. 보다 구체적으로, 본 발명은 부채널 분석에 안전한 NTRU 복호화 방법 및 장치에 관한 것이다.
양자 컴퓨터의 개발이 가시화됨에 따라 현재 사용되는 암호 시스템은 더 이상 안전하지 않을 수 있다고 예측된다. 그러므로 현재의 공개키 암호 알고리즘을 대체할 수 있으면서 양자 컴퓨터에도 안전한 암호에 대한 연구가 요구된다.
이에 따라, NIST는 2016년 'Reports on Post-Quantum Cryptography'에서 양자 컴퓨터에도 안전한 공개키 암호인 Post-Quantum Cryptography 표준을 마련하는 공모를 발표했다.
한편, 격자의 기저가 주어졌을 때, 격자의 가장 짧은 0이 아닌 벡터를 계산하는 문제는 어려운 문제로 알려져 있다. 이 문제는 양자 컴퓨터 기반의 공격에도 안전한 것으로 해석되고 있다. 이러한 어려움을 이용하여 만든 암호 시스템이 양자 내성 암호이며, NTRU는 이를 이용하여 만들어진 공개키 암호 알고리즘이다.
종래 NTRU 암호 알고리즘의 경우, 기기에 동작시킬 때 방출되는 정보를 바탕으로 비밀 정보가 노출될 수 있다는 위험이 있다. 여기서, 알고리즘이 동작하는 동안에 방출되는 정보를 부채널 정보라 한다. 실제 기기에 사용할 때에는 부채널 분석에도 안전하도록 암호 알고리즘이 구현되어야 한다.
본 발명의 일 실시예에 따른 NTRU 복호화 방법 및 장치는 종래의 NTRU 알고리즘 대비 연산량을 증가시키지 않는 것을 기술적 과제로 한다.
또한, 본 발명의 일 실시예에 따른 NTRU 복호화 방법 및 장치는 부채널 분석 공격에도 개인키의 노출을 차단하는 것을 기술적 과제로 한다.
본 발명의 일 실시예에 따른 NTRU 복호화 방법 및 장치가 이루고자 하는 기술적 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)는 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
일 실시예에 따른 NTRU 복호화 방법은,
개인키 f에 대응하는 비밀 다항식 F의 계수들인 -1, 0 및 1 각각을 자연수 a, b 및 c로 변환한 비밀 다항식 F'를 결정하는 단계; 암호문 배열 ei에 포함된 계수들 각각에 소정 정수 p를 곱하여 배열 PEi에 저장하는 단계, 상기 i는 0 이상 N 미만의 정수들이며, N-1은 암호문 e와 상기 비밀 다항식 F'의 최대 차수임; 자연수 a에 대응하는 제 1 배열 Ti[a], 자연수 b에 대응하는 제 2 배열 Ti[b] 및 자연수 c에 대응하는 제 3 배열 Ti[c]에 랜덤 값을 초기 값으로 할당하는 단계; 상기 비밀 다항식 F'에서 상기 자연수 a, b 및 c를 계수로 가지는 항의 차수에 기초하여, 상기 제 1 배열 Ti[a], 제 2 배열 Ti[b], 제 3 배열 Ti[c] 각각에 상기 배열 PEi에 저장된 값들을 할당 및 누적하는 단계; 및 상기 제 3 배열 Ti[c]에 누적된 값으로부터 상기 제 1 배열 Ti[a]에 누적된 값을 차감한 값에 기초하여, 상기 ei에 대응하는 평문 배열 mi를 결정하는 단계를 포함할 수 있다.
상기 할당 및 누적하는 단계는, 상기 배열 PEi가 상기 제 1 배열 Ti[a], 제 2 배열 Ti[b] 또는 제 3 배열 Ti[c]에 할당되는 동안, 각 배열의 마지막 요소로의 할당이 완료되면, 배열 PEi에 저장된 나머지 값을 해당 배열의 첫 번째 요소부터 할당하는 단계를 포함할 수 있다.
상기 평문 배열 mi를 결정하는 단계는, 상기 제 3 배열 Ti[c]에 누적된 값으로부터 상기 제 1 배열 Ti[a]에 누적된 값을 차감한 값에 상기 암호문 배열 ei를 합하여 상기 평문 배열 mi을 결정하는 단계를 포함할 수 있다.
상기 할당 및 누적하는 단계는, 상기 비밀 다항식 F'에서 계수 a를 갖는 항의 차수가 k (k는 0 이상 N 미만의 정수)인 경우, 상기 배열 PEi에 저장된 값들을 상기 제 1 배열 Ti[a]의 k+1번째 요소부터 순차적으로 할당하는 단계를 포함할 수 있다.
상기 제 3 배열 Ti[c]에 누적된 값으로부터 상기 제 1 배열 Ti[a]에 누적된 값이 차감됨으로써, 상기 초기 값으로 할당된 랜덤 값이 제거될 수 있다.
상기 자연수 a는 1이고, 상기 자연수 b는 2이고, 상기 자연수 c는 4일 수 있다.
상기 NRTU 복호화 방법은, 상기 암호문 e의 복호화를 위한 제 2 방법에 따라 상기 비밀 다항식 F와 상기 암호문 e의 다항식 곱연산을 수행하는 단계를 더 포함하되, 상기 다항식 곱연산을 수행하는 단계는, 배열 ti에 랜덤 값을 초기 값으로 할당하는 단계; 상기 비밀 다항식 F에서 -1 및 1의 계수를 갖는 항들의 차수 각각에 기초하여, 상기 배열 ti의 중간 요소에, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 계수를 할당 및 누적하고, 상기 배열 ti의 첫 번째 요소로부터 상기 배열 ti의 중간 요소 이전에 위치한 요소까지, 그리고, 상기 배열 ti의 중간 요소 다음에 위치한 요소로부터 배열 ti의 마지막 요소까지, 상기 암호문 배열 ei에 포함된 계수들 중 상기 어느 하나의 계수를 제외한 계수를 순차적으로 할당 및 누적하는 단계; 및 상기 ti에 누적된 최종 값들에 기초하여 상기 다항식 곱연산의 결과 값을 결정하는 단계를 포함할 수 있다.
상기 할당 및 누적하는 단계는, 상기 비밀 다항식 F에서 -1의 계수를 갖는 항들의 차수 각각에 기초하여, 상기 배열 ti의 중간 요소에, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 항의 계수를 할당 및 누적하고, 상기 배열 ti의 첫 번째 요소로부터 상기 배열 ti의 중간 요소 이전에 위치한 요소까지, 그리고, 상기 배열 ti의 중간 요소 다음에 위치한 요소로부터 배열 ti의 마지막 요소까지, 상기 암호문 배열 ei에 포함된 계수들 중 상기 어느 하나의 계수를 제외한 계수를 순차적으로 할당 및 누적하는 단계; 및 상기 배열 ti에 누적된 값들의 부호를 반대로 변환하는 단계; 및 상기 비밀 다항식 F에서 1의 계수를 갖는 항들의 차수 각각에 기초하여, 상기 배열 ti의 중간 요소에, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 계수를 할당 및 누적하고, 상기 배열 ti의 첫 번째 요소로부터 상기 배열 ti의 중간 요소 이전에 위치한 요소까지, 그리고, 상기 배열 ti의 중간 요소 다음에 위치한 요소로부터 배열 ti의 마지막 요소까지, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 계수를 제외한 계수를 순차적으로 할당 및 누적하는 단계를 포함할 수 있다.
상기 다항식 곱연산의 결과 값을 결정하는 단계는, 상기 ti에 누적된 최종 값들에서 상기 랜덤 값을 합하는 단계를 포함할 수 있다.
상기 비밀 다항식 F에서 -1의 계수를 갖는 항의 차수가 k(k는 0 이상 N 미만의 정수)일 때, 상기 배열 ti의 중간 요소에는 ex(여기서, x = ((N-1)/2-k)(mod N))의 계수가 할당될 수 있다.
상기 배열 ti의 중간 요소 다음에 위치한 요소에는 ex+1의 계수가 할당되고, 상기 배열 ti의 첫 번째 요소에는 ey(여기서, y = (N-k)(mod N))의 계수가 할당될 수 있다.
본 발명의 일 실시예에 따른 NTRU 복호화 방법 및 장치는 종래의 NTRU 알고리즘 대비 연산량을 증가시키지 않는다.
또한, 본 발명의 일 실시예에 따른 NTRU 복호화 방법 및 장치는 부채널 분석 공격에도 개인키의 노출을 차단할 수 있다.
본 명세서에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 종래의 제 1 NTRU 복호화 알고리즘을 설명하기 위한 도면이다.
도 2는 종래의 제 1 NTRU 복호화 알고리즘에서의 다항식 곱 연산 알고리즘을 설명하기 위한 도면이다.
도 3은 종래의 제 2 NTRU 복호화 알고리즘을 설명하기 위한 도면이다.
도 4는 종래의 제 1 NTRU 복호화 알고리즘의 다항식 곱 연산 알고리즘을 개선한 일 실시예에 따른 다항식 곱 연산 알고리즘을 설명하기 위한 도면이다.
도 5는 종래의 제 2 NTRU 복호화 알고리즘을 개선한 일 실시예에 따른 복호화 알고리즘을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 NTRU 복호화 장치의 구성을 나타내는 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고, 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명은 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제 1, 제 2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에서 '~부(유닛)', '모듈' 등으로 표현되는 구성요소는 2개 이상의 구성요소가 하나의 구성요소로 합쳐지거나 또는 하나의 구성요소가 보다 세분화된 기능별로 2개 이상으로 분화될 수도 있다. 또한, 이하에서 설명할 구성요소 각각은 자신이 담당하는 주기능 이외에도 다른 구성요소가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성요소 각각이 담당하는 주기능 중 일부 기능이 다른 구성요소에 의해 전담되어 수행될 수도 있음은 물론이다.
이하, 본 발명의 기술적 사상에 의한 실시예들을 차례로 상세히 설명한다.
먼저, NTRU 암호 체계가 무엇인지 간단히 살펴본다.
Z를 정수들의 집합이라고 하자. Z[X]로 표시되는 Z에 대한 다항식 링은, Z의 계수들을 갖는 모든 다항식들의 집합이다. 몫 링(quotient ring) R은
Figure 112018116196377-pat00001
로 정의되며, 이는 정수 계수를 갖는 임의의 다항식을 다항식 xN-1로 나누었을 때 생길 수 있는 모든 가능한 나머지 다항식들의 집합을 의미한다. 따라서 R에 속하는 원소 a는
Figure 112018116196377-pat00002
로 표현된다.
R에 속하는 원소 a와 b에 대한 곱 연산은,
Figure 112018116196377-pat00003
Figure 112018116196377-pat00004
로 표현될 수 있다. 원칙적으로 곱 연산은 N2 개의 정수 곱셈을 필요로 하여 그 계산량이 많다. 그러나 NTRU에 의해 사용되는 다항식 컨볼루션 연산은, 일반적으로 a 및 b 중 어느 하나가 작은 계수들을 가지며, 따라서 a*b의 계산은 매우 빠르게 수행될 수 있다.
다양한 종류의 NTRU 암호 체계가 존재하지만, Hoffstein이나 Bailey 등에 의해 제안된 개량 버전은 다음과 같이 설명될 수 있다:
1. NTRU는 3가지 공개 파라미터(N, p, q)를 가진다(여기서, p와 q의 최대공약수는 1이고, p ≪ q임).
2. 다항식의 계수들은 mod p or q로 감산된다(reduced mod p or q).
3. fq -1 mod q로 표시되는 다항식 f의 mod q 상의 역원은, f*fq -1≡1 mod q를 만족하는 다항식으로 정의된다. 여기서, mod q는 다항식 내의 모든 계수가 mod q로 감산됨, 즉 q로 나눈 나머지로 계산됨을 의미한다.
R에 속하며 작은 계수들을 갖는 다항식 g를 임의로 선택한다. 여기서 g는 -1, 0, 1로 이루어졌으며 -1, 1의 개수가 표준에서 정한 수로 구성된 다항식이다. 그 후, f를 mod q와 mod p 에서 역원이 존재하고 계수가 -1, 0, 1로 구성된 다항식을 선택하고 h:=pfq -1*g mod q를 계산한다. 여기서, mod q는 다항식 내의 모든 계수가 mod q로 감산됨, 즉 q로 나눈 나머지로 계산됨을 의미한다. 개인 키(private key)는 다항식 f이며 계수로 -1, 0, 1를 갖는다. -1과 1의 개수는 표준에서 정하고 있다, 다항식 h는 공개키를 의미한다.
암호화 과정은 평문 m을 암호화하기 위해서는 e=r·h+m (mod q)의 과정으로 연산하며 r은 임의의 다항식을 의미한다. 복호화 과정은 개인키 f와 암호문 e를 연산한다. 그 과정은 먼저 a=f·e (mod q) 수행 후, m=a·fp -1 (mod p)단계로 수행된다. 이 때 개인키 f를 f=pF+1, F는 -1, 0, 1로 이루어진 다항식으로 설정하면 두 번째 단계를 생략할 수 있다. 즉, m=f·e (mod q)가 된다. 본 명세서에서는 f=pF+1인 것으로 설정하여 설명한다.
또한, 본 명세서에서, e는 암호문, f는 개인키, F는 비밀 다항식, m은 평문을 나타내는데 이들 e, f, F, m등에 아래 첨자가 기재되는 경우 다른 기재가 없는 한, 이는 다항식의 계수들을 갖는 배열을 나타낸다. 예를 들어, ei는 암호문에 해당하는 다항식의 계수들을 갖는 암호문 배열, fi는 개인키에 해당하는 다항식의 계수들을 갖는 개인키 배열, Fi는 비밀 다항식의 계수들을 갖는 비밀 다항식 배열, mi는 평문에 해당하는 다항식의 계수들을 갖는 평문 배열을 나타낸다.
도 1은 종래의 제 1 NTRU 복호화 알고리즘을 설명하기 위한 도면이고, 도 2는 종래의 제 1 NTRU 복호화 알고리즘에서의 다항식 곱 연산 알고리즘을 설명하기 위한 도면이다.
도 1에 도시된 알고리즘은 Efficient Embedded Security Standards (EESS) #1: Version 3.1 (2015.09.20)에 기반하며, Efficient Embedded Security Standards (EESS)의 내용은 본 명세서에 포함된다.
도 1은 평문 m과 공개키 h의 연산에 의해 생성된 암호문 e를 개인키 f에 기반하여 복호화하는 과정을 나타낸다.
개인키 f에 대응하는 비밀 다항식 F1, F2, F3가 결정되며, F1, F2, F3 및 암호문 e는 모두 최대 차수로서 N-1을 갖는다. 여기서 최대 차수란, 다항식에 포함 가능한 최고차항의 차수를 나타낸다. 개인키 f는 1+p(F1·F2+F3)로 계산될 수 있고, 평문 m은 (1+p(F1·F2+F3)) ·e (mod q)로 계산될 수 있다.
F1, F2 및 F3가 e에 곱해지기 때문에 단계 1, 단계 2 및 단계 3에서 다항식 곱 연산이 수행된다. 다항식 곱 연산에 대해서는 도 2를 참조하여 후술한다.
단계 4 및 단계 5에서는, 다항식 곱 연산에 따라 반환된 값 ti와 ui가 vi로 더해진다. 그리고, 단계 7 및 단계 8에서, vi에 p가 곱해진 후, ei가 더해져 mi가 산출된다. 평문 배열 mi는 평문에 해당하는 다항식의 계수들을 포함하고 있는데, 해당 계수들은 차수에 따라 평문 배열 mi의 특정 요소에 포함되어 있으므로, 평문 배열 mi로부터 평문의 복원이 가능하다. 예를 들어, 평문 배열 mi={1,2,4}인 경우, 평문 m=1+2x+4x2일 수 있다.
다음으로, 도 2를 참조하여 종래의 제 1 알고리즘에 따른 다항식 곱 연산 알고리즘에 대해 설명한다.
먼저, 단계 1 및 단계 2에서는 배열 t를 구성하는 N개의 요소들에 0이 초기값으로 할당된다. N개의 요소들 각각은 0 내지 N-1의 인덱스로 표현된다. 즉, t0은 배열 t의 첫 번째 요소를, tN-1은 배열 t의 마지막 요소를 나타낸다.
단계 4 및 단계 5에서는 비밀 다항식 F에서 -1을 계수로 갖는 항의 차수가 k로 할당된다. 구체적으로, b는 비밀 다항식 F에서 1을 계수로 갖는 항들의 차수들과 -1을 계수로 갖는 항들의 차수들을 차수의 크기에 따라 오름차순으로 저장하는 배열이다. 예를 들어, 비밀 다항식 F가 -1+x+x2-x3+x4인 경우, b는 {1, 2, 4, 0, 3}의 값을 갖는다. 여기서 앞 3개는 1을 계수로 갖는 항의 차수이며, 뒤의 2개는 -1을 계수로 갖는 항의 차수이다. 또한, dF는 비밀 다항식 F에서 -1을 계수로 갖는 항들의 개수를, dF+1은 비밀 다항식 F에서 1을 계수로 갖는 항들의 개수를 나타낸다.
단계 4에서 최초 j로 dF+1이 할당되고, 단계 5에서 bj가 k로 할당되는데, 배열 b의 첫 번째 요소의 인덱스는 0이므로, 결국, 비밀 다항식 F에서 -1을 계수로 갖는 가장 낮은 차수가 k로 할당되고, 단계 4 내지 단계 10이 반복되면서, -1을 계수로 갖는 항의 차수가 순차적으로 k로 할당된다.
단계 6 및 단계 7에서는, 배열 t에 포함된 요소들 중 비밀 다항식 F에서 -1을 계수로 갖는 항의 차수에 대응하는 요소부터 배열 t의 마지막 요소까지 ei가 할당 및 누적된다.
단계 9 및 단계 10에서는, 배열 t에 포함된 요소들 중 첫 번째 요소부터 비밀 다항식 F에서 -1을 계수로 갖는 항의 차수에 대응하는 요소 이전의 요소까지 나머지 ei가 할당 및 누적된다.
단계 1 내지 단계 11은 개인키 F에서 -1을 계수로 갖는 항들을 위해 배열 ei를 배열 t에 할당 및 누적하는 단계라고 할 수 있다. 단계 13 및 단계 14에서는 배열 t에 할당된 값의 부호를 -로 변환한다.
단계 16 내지 단계 23는, 개인키 F에서 1을 계수로 갖는 항들을 위해 ei를 배열 t에 할당 및 누적하는 단계라고 할 수 있다.
단계 16에서 최초 j로 0이 할당되고, 단계 5에서 bj가 k로 할당되는데, 배열 b의 첫 번째 요소의 인덱스는 0이므로, 결국, 비밀 다항식 F에서 1을 계수로 갖는 가장 낮은 차수가 k로 할당되고, 단계 16 내지 단계 22가 반복되면서, 1을 계수로 갖는 항의 차수가 순차적으로 k로 할당된다.
단계 18 및 단계 19에서는, 배열 t에 포함된 요소들 중 비밀 다항식 F에서 1을 계수로 갖는 항의 차수에 대응하는 요소부터 배열 t의 마지막 요소까지 ei가 할당 및 누적된다.
단계 21 및 단계 22에서는, 배열 t에 포함된 요소들 중 첫 번째 요소부터 비밀 다항식 F에서 1을 계수로 갖는 항의 차수에 대응하는 요소 이전의 요소까지 나머지 ei가 할당 및 누적된다.
단계 25 및 단계 26에서, ti에 mod q가 적용된 값이 곱 연산의 결과 값 Hi로 할당된다.
도 2에 도시된 다항식 곱 연산을 예를 들어 설명한다. 비밀 다항식 F=x5+x2-1 라 하면, 배열 b에는 b={2,5,0}이 저장된다. 그리고, 암호문 e=2x6+x5+3x4+x3+7x2+x+6 이라 하면 ei={6,1,7,1,3,1,2}이 될 것이다. 여기서 N=7이고, dF=1이다.
1. 배열 t는 결과를 저장할 배열로서, 0으로 초기화된다. (t0=0, t1=0, t2=0, t3=0, t4=0, t5=0, t6=0)
2. 단계 5에서 k=b2=0이 된다. (배열 b에 포함된 첫 번째 요소의 인덱스는 0임.)
3. 단계 7은 다음과 같이 반복된다.
t0=t0+e0=6, t1=t1+e1=1, t2=t2+e2=7, t3=t3+e3=1, t4=t4+e4=3, t5=t5+e5=1, t6=t6+e6=2
4. 단계 10은 i 값에 따라 수행되지 않는다.
5. 위의 과정이 모든 -1의 계수에 대해 수행된다.
6. 단계 14에서 부호를 음수로 바꾸는 과정이 수행된다.
(t0=-6, t1=-1, t2=-7, t3=-1, t4=-3, t5=-1, t6=-2)
7. 단계 17에서 계수 1에 대한 연산을 시작된다 (k=b0=2)
8. 단계 19는 다음과 같이 반복된다.
t2=t2+e0=-7+6=-1, t3=t3+e1=-1+1=0, t4=t4+e2=-3+7=4, t5=t5+e3=-1+1=0, t6=t6+e4=-2+3=1
9. 단계 22는 다음과 같이 반복된다.
t0=t0+e5=-6+1=-5, t1=t1+e6=-1+2=1
10. 다시 단계 17이 수행된다. (k=b1=5)
11. 단계 19는 다음과 같이 반복된다.
t5=t5+e0=0+6=6, t6=t6+e1=1+1=2
12. 단계 22는 다음과 같이 반복된다.
t0=t0+e2=-5+7=2, t1=t1+e3=1+1=2, t2=t2+e4=-1+3=2, t3=t3+e5=0+1=1, t4=t4+e6=4+2=6
13. 배열 t에 저장된 값을 보면, t={2,2,2,1,6,6,2}로 이를 다항식으로 표현하면 2x6+6x5+6x4+x3+2x2+2x+2이 된다. 이 값은 F x e = 2x11+x10+3x9+3x8+8x7+2x6+6x5+4x4-x2-x-6을 mod(x7-1)을 취해준 값 (x7=1)이 된다.
F x e = 2x11+x10+3x9+3x8+8x7+2x6+6x5+4x4-x2-x-6
≡ 2x4+x3+3x2+3x+8+2x6+6x5+4x4-x2-x-6
= 2x6+6x5+6x4+x3+2x2+2x+2 (mod x7-1)
14. 마지막 단계 26에서는, 계수에 mod q를 적용함으로써 곱셈 연산이 완료될 수 있다.
도 2에 도시된 알고리즘에 따르면, 단계 7과 단계 10, 그리고 단계 19와 단계 22에서 동일 연산이 반복적으로 수행됨으로써, 부채널 분석시 비밀 다항식 F에서 -1을 계수로 갖는 항들의 위치와 1을 계수로 갖는 항들의 위치가 노출될 수 있고, 0을 계수로 갖는 항들의 위치도 유도될 수 있다. 비밀 다항식 F가 노출됨에 따라 개인키 f 역시 노출될 수 있게 된다.
구체적으로, 단계 7에서, 배열 t에 포함된 요소들 중 비밀 다항식 F에서 -1을 계수로 갖는 항의 위치에 대응하는 요소로부터 마지막 요소까지 ei가 할당되고, 단계 10에서, 배열 t에 포함된 요소들 중 첫 번째 요소부터 ei가 할당된다. 도 2의 알고리즘이 구현되는 동안의 기기의 전체 소비 전력 파형에서 유사한 파형들을 각각 단계 7에 대응하는 파형과 단계 10에 대응하는 파형으로 식별하고, 단계 7에서의 파형의 길이와 단계 10에서의 파형의 길이를 비교함으로써, 개인키 F에서 -1을 계수로 갖는 항의 위치가 식별될 수 있는 것이다. 마찬가지로, 도 2의 알고리즘이 구현되는 동안의 기기의 전체 소비 전력 파형에서 유사한 파형들을 각각 단계 19에 대응하는 파형과 단계 22에 대응하는 파형으로 식별하고, 단계 19에서의 파형의 길이와 단계 22에서의 파형의 길이를 비교함으로써, 개인키 F에서 1을 계수로 갖는 항의 위치가 식별될 수 있는 것이다. 또한, 개인키 F에서 -1을 계수로 갖는 항의 위치와 1을 계수로 갖는 항의 위치가 식별되면, 0을 계수로 갖는 항의 위치는 쉽게 유도될 수 있는 것이다.
다음으로, 도 3을 참조하여, 종래의 제 2 NTRU 복호화 알고리즘에 대해 설명한다. 종래의 제 2 NTRU 복호화 알고리즘의 내용은 Efficient Embedded Security Standards (EESS) #1: Version 3.3 (2017.08.31)에 기반하며, 해당 내용은 본 명세서에 포함된다.
단계 1 내지 단계 4에서, 비밀 다항식의 계수를 갖는 배열 Fi에 p를 곱하고, 개인키에 해당하는 다항식의 계수들을 갖는 배열의 첫 번째 요소 f0에 1을 더하여 fi를 결정한다.
그리고, 단계 5 및 단계 6에서 fi에 e0를 곱하여 배열 ti에 할당한다. 단계 8 내지 12에서는 ei x fi를 t에 반복적으로 할당한 후, 단계 15에서는 ti와 ti+N을 합하여 mi를 산출한다.
종래의 제 2 NTRU 복호화 알고리즘에서는, 단계 1부터 단계 3에서 F를 f로 바꾸는 연산 중에 비밀 다항식의 계수 중 -1의 상대적인 위치를 알아낼 수 있다. 전술한 바와 같이, 비밀 다항식의 계수는 -1, 0, 1 중 하나를 가지므로, p와 연산되는 값은 -1, 0, 1 중 하나이다. 대부분의 프로세서는 음수 표현을 위해서 2의 보수 방법을 사용하기 때문에 -1의 해밍 웨이트(Hamming weight)는 매우 클 것이다. 그러므로 -1 값이 연산되는 부분에서는 소비 전력이 가장 높다는 것이 확인될 수 있는 것이다.
다음으로 단계 5 내지 단계 13에서, 암호문 e와 개인키 f의 연산 과정에서는 계수 0의 상대적인 위치를 알아낼 수 있다. 암호문 e의 계수와 0의 계수가 연산된 결과는 다른 연산 값보다 소비 전력 값이 낮을 것이다. 이렇게 소비 전력이 낮게 나타나는 부분을 로우픽(low peak)이라고 한다. 따라서, 로우픽의 위치를 분석하여 0의 상대적인 위치를 알아내고, 앞서 알아낸 -1의 위치 정보를 합치면 비밀 다항식 F가 복원될 수 있는 것이다.
이하에서는, 도 4를 참조하여 종래의 제 1 NTRU 복호화 알고리즘의 다항식 곱 연산 알고리즘을 개선한 일 실시예에 따른 다항식 곱 연산 알고리즘에 대해 설명한다.
단계 1 및 단계 2에서는 배열 ti에 초기 값으로서 랜덤 값 r이 할당된다. 랜덤 값 r은 부채널 분석에 안정성을 주기 위해 초기 값으로 할당된다.
그리고 단계 5에서는 비밀 다항식 F에서 -1을 계수로 갖는 항의 차수가 k로 할당되고, 단계 6에서 N과 k 값에 기초하여 결정되는 값이 각각 x와 y에 할당된다.
단계 7에서는 배열 ti의 요소들 중 중간에 위치한 중간 요소 t(N-1)/2에 ex가 할당된다. 앞서 도 2와 달리, ex가 배열 ti의 중간 요소에 가장 먼저 할당된다는 것에 주목하자.
단계 9 내지 단계 11에서는, 배열 ti의 요소들 중 중간에 위치한 중간 요소 다음의 요소로부터 마지막 요소까지 ex가 순차적으로 할당되고, 그리고, 배열 ti의 요소들 중 첫 번째 요소부터 중간 요소 이전의 요소까지 ey가 순차적으로 할당된다.
즉, 일 실시예에 따른 다항식 곱 연산 알고리즘에서는, 비밀 다항식 F에서 -1의 계수를 갖는 항의 위치에 대응시켜 배열 ti에 ei를 할당하는 것이 아니라, 배열 ti의 중간 요소를 시작으로 하여 양 측에서 순차적으로 ei를 할당하므로, 전술한 부채널 분석에 의하더라도 -1 계수의 위치를 알 수 없게 된다.
단계 15에서는 ti에 누적된 값들의 부호가 -로 변환된다.
단계 17 내지 단계 26에서는 앞서 단계 4 내지 단계 13에서와 마찬가지로, 비밀 다항식 F에서 1을 계수로 갖는 항의 차수가 k로 할당되고, 배열 ti의 요소들 중 중간 요소에 ex가 할당되는 것을 시작으로 하여, 배열 ti의 요소들 중 중간 요소 다음의 요소로부터 마지막 요소까지 ex가 순차적으로 할당되고, 그리고, 배열 ti의 요소들 중 첫 번째 요소부터 중간 요소 이전의 요소까지 ey가 순차적으로 할당된다.
단계 28에서는, ti에 랜덤 값 r을 합한 후, mod q를 적용하여 곱셈 연산을 완료한다. 여기서, 랜덤 값 r을 합하는 이유는, 앞서 배열 ti에 초기 값을 할당된 랜덤 값 r이 단계 15에서 -r로 변환되었기 때문이다.
도 4에 도시된 알고리즘을 예를 들어 설명한다. 개인키 F=x5+x2-1 라 하면, 배열 b에는 b={2,5,0}이 저장된다. 그리고, 암호문 e=2x6+x5+3x4+x3+7x2+x+6 이라 하면 ei={6,1,7,1,3,1,2}이 될 것이다. 여기서 N=7이고, dF=1이다.
1. 배열 ti를 0이 아닌 랜덤 값 r로 초기화한다. (t0=r, t1=r, t2=r, t3=r, t4=r, t5=r, t6=r)
2. 단계 5에서 k=b2=0이 된다.
3. 단계 6에서 x=(7-1)/2-0=3, y=7-0=7=0이 된다.
4. 단계 7에서 배열 ti의 중간 요소인 t3에 더해질 값을 먼저 더한다. (t3=t3+e3=r+1)
5. 단계 8에서 x값을 1만큼 증가시킨다. (x=x+1=4)
6. 단계 10 및 단계 11은 다음과 같이 반복된다.
t3+0+1=t3+0+1+e4=t4+e4=r+3, t0=t0+e0=r+6
t3+1+1=t3+1+1+e5=t5+e5=r+1, t1=t1+e1=r+1
t3+2+1=t3+2+1+e6=t6+e6=r+2, t2=t2+e2=r+7
7. 단계 15에서 부호를 음수로 변환한다.
t0=-r-6, t1=-r-1, t2=-r-7, t3=-r-1, t4=-r-3, t5=-r-1, t6=-r-2
8. 단계 18은 k=b0=2가 된다.
9. 단계 19에서, x=3-2=1, y=5가 된다.
10. 단계 20에서, t3=t3+e1=-r-1+1=-r이 된다.
11. 단계 21, x=2가 되고,
12. 단계 23 및 단계 24는 다음과 같이 반복된다.
t3+0+1=t3+0+1+e2=t4+e2=-r+4, t0=t0+e5=-r-5
t3+1+1=t3+1+1+e3=t5+e3=-r+0, t1=t1+e6=-r+1
t3+2+1=t3+2+1+e4=t6+e4=-r+1, t2=t2+e0=-r-1
13. 단계 18에서, k=b1=5가 된다.
14. 단계 19에서 x=3-5 (mod 7)=5, y=2가 된다.
15. 단계 20에서 t3=t3+e5=-r+1이 된다.
16. 단계 22에서 x=6이 된다.
17. 단계 23 및 단계 24는 다음과 같이 반복된다.
t4=t4+e6=-r+6, t0=t0+e2=-r+2
t5=t5+e0=-r+6, t1=t1+e3=-r+2
t6=t6+e1=-r+2, t2=t2+e4=-r+2
18. 이 결과 배열 ti에 저장되어 있는 값은 t={-r+2, -r+2, -r+2, -r+1, -r+6, -r+6, -r+2}이 된다. 이때 랜덤 값은 단계 28에서 +r로 제거해주면서, q로 mod를 취해주면 도 2의 알고리즘과 동일한 결과를 얻을 수 있다.
이하에서는, 도 5를 참조하여 종래의 제 2 NTRU 복호화 알고리즘을 개선한 일 실시예에 따른 NTRU 복호화 알고리즘에 대해 설명한다.
도 3에 도시된 알고리즘이 f(=pF+1)를 복구한 뒤에 f·e연산을 수행하는 방식이었다면, 일 실시예에 따른 복호화 알고리즘은 비밀 다항식 F를 이용하여 p×F·e를 계산한 후 마지막에 암호문 e를 더하여 메시지를 복구한다. 즉 m = f·e = (pF+1)·e = pe·F+e로 계산한다.
또한, 일 실시예에서는, 비밀 다항식 F의 계수들인 -1, 0 및 1 각각을 자연수 a, b 및 c로 변환한 비밀 다항식 F'를 결정하고, F'를 이용하여 평문 m를 결정한다. a, b, c는 각각 1, 2, 4일 수 있으나 이에 한정되는 것은 아니다. 비밀 다항식 F의 계수들인 -1, 0 및 1 각각을 자연수 a, b 및 c로 변환하는 이유는, 비밀 다항식 F에서 -1, 0, 1이 로드됨에 따라 발생할 수 있는 부채널적 취약점을 보완하기 위함이다.
단계 1 및 단계 2에서, ei에 p가 곱해지고, 곱해진 결과는 배열 PEi에 저장된다.
단계 3 내지 단계 5에서, 자연수 1에 대응하는 배열 Ti[1], 자연수 2에 대응하는 배열 Ti[2] 및 자연수 3에 대응하는 배열 Ti[4]에 랜덤 값 r이 초기 값으로 할당된다.
단계 7 내지 단계 9에서, 비밀 다항식 F'에서 자연수 1, 2 및 4를 계수로 가지는 항의 차수에 기초하여, 배열 Ti[1], 배열 Ti[2], 배열 Ti[4] 각각에 상기 배열 PEi에 저장된 값들이 할당 및 누적된다.
예를 들어, 비밀 다항식 F'에서 계수 1를 갖는 항의 차수가 k (k는 0 이상 N 미만의 정수)인 경우, 배열 PEi에 저장된 값들은 배열 Ti[1]의 k+1번째 요소부터 순차적으로 할당된다.
배열 PEi가 배열 Ti[1], 배열 Ti[2] 또는 배열 Ti[4]에 할당되는 동안, 각 배열의 마지막 요소로의 할당이 완료되면, 배열 PEi에 저장된 나머지 값이 배열 Ti[1], 배열 Ti[2] 또는 배열 Ti[4]의 첫 번째 요소부터 할당된다.
배열 PEi에 저장된 값들을 더하며 누적하는 과정에서 (i+j)modN을 이용하여 mod(xN-1)까지 동시에 처리함으로 연산을 더 효율적으로 할 수 있다.
단계 13에서, 배열 Ti[4]에 누적된 값으로부터 배열 Ti[1]에 누적된 값을 차감한 값에 ei를 합하여 mi가 결정된다. 배열 Ti[4]에 누적된 값으로부터 배열 Ti[1]에 누적된 값이 차감됨으로써, 초기 값으로 할당된 랜덤 값이 제거된다.
일 실시예에 따른 NTRU 복호화 알고리즘에 따르면, 비밀 다항식 F가 p에 곱해지는 연산과 개인키 f가 암호문 e에 곱해지는 연산이 존재하지 않으며, 3개의 배열 Ti[1], Ti[2] 및 Ti[4] 각각에 PEi에 할당된 값들을 개별적으로 할당한 후, 이들을 빼는 과정을 통해 mi가 도출될 수 있으므로, 앞서 도 3과 관련하여 설명한 부채널 분석에 의한 개인키 f의 노출이 방지될 수 있다.
도 5에 도시된 알고리즘을 예를 들어 설명한다. 개인키 F=x5+x2-1라 하면, Fi={-1,0,1,0,0,1}이고, F'i={1,2,4,2,2,4}가 된다. 암호문 e=2x6+x5+3x4+x3+7x2+x+6이라 하면 ei={6,1,7,1,3,1,2}이 될 것이다. 여기서 여기서 N=7이고, dF=1이며, p=3이다.
1. 단계 1부터 단계 6 과정을 반복하면,
PE0=18, PE1=3, PE2=21, PE3=3, PE4=9, PE5=3, PE6=6
T0[1]=r, T1[1]=r, T2[1]=r, T3[1]=r, T4[1]=r, T5[1]=r, T6[1]=r,
T0[2]=r, T1[2]=r, T2[2]=r, T3[2]=r, T4[2]=r, T5[2]=r, T6[2]=r,
T0[4]=r, T1[4]=r, T2[4]=r, T3[4]=r, T4[4]=r, T5[4]=r, T6[4]=r가 된다.
2. 단계 7부터 단계 11은 다음과 같이 반복된다.
i=0,
T0[F'0]=T0[1]=T0[1]+PE0=r+18
T1[F'0]=T1[1]=T1[1]+PE1=r+3
T2[F'0]=T2[1]=T2[1]+PE2=r+21
T3[F'0]=T3[1]=T3[1]+PE3=r+3
T4[F'0]=T4[1]=T4[1]+PE4=r+9
T5[F'0]=T5[1]=T5[1]+PE5=r+3
T6[F'0]=T6[1]=T6[1]+PE6=r+6
i=1,
T1[F'1]=T1[2]=T1[2]+PE0=r+18
T2[F'1]=T2[2]=T2[2]+PE1=r+3
T3[F'1]=T3[2]=T3[2]+PE2=r+21
T4[F'1]=T4[2]=T4[2]+PE3=r+3
T5[F'1]=T5[2]=T5[2]+PE4=r+9
T6[F'1]=T6[2]=T6[2]+PE5=r+3
T0[F'1]=T0[2]=T0[2]+PE6=r+6
i=2,
T2[F'2]=T2[4]=T2[4]+PE0=r+18
T3[F'2]=T3[4]=T3[4]+PE1=r+3
T4[F'2]=T4[4]=T4[4]+PE2=r+21
T5[F'2]=T5[4]=T5[4]+PE3=r+3
T6[F'2]=T6[4]=T6[4]+PE4=r+9
T0[F'2]=T0[4]=T0[4]+PE5=r+3
T1[F'2]=T1[4]=T1[4]+PE6=r+6
i=3,
T3[F'3]=T3[2]=T3[2]+PE0=r+39
T4[F'3]=T4[2]=T4[2]+PE1=r+6
T5[F'3]=T5[2]=T5[2]+PE2=r+30
T6[F'3]=T6[2]=T6[2]+PE3=r+6
T0[F'3]=T0[2]=T0[2]+PE4=r+15
T1[F'3]=T1[2]=T1[2]+PE5=r+21
T2[F'3]=T2[2]=T2[2]+PE6=r+9
i=4
T4[F'4]=T4[2]=T4[2]+PE0=r+24
T5[F'4]=T5[2]=T5[2]+PE1=r+33
T6[F'4]=T6[2]=T6[2]+PE2=r+27
T0[F'4]=T0[2]=T0[2]+PE3=r+18
T1[F'4]=T1[2]=T1[2]+PE4=r+30
T2[F'4]=T2[2]=T2[2]+PE5=r+12
T3[F'4]=T3[2]=T3[2]+PE6=r+45
i=5
T5[F'5]=T5[4]=T5[4]+PE0=r+21
T6[F'5]=T6[4]=T6[4]+PE1=r+12
T0[F'5]=T0[4]=T0[4]+PE2=r+24
T1[F'5]=T1[4]=T1[4]+PE3=r+9
T2[F'5]=T2[4]=T2[4]+PE4=r+27
T3[F'5]=T3[4]=T3[4]+PE5=r+6
T4[F'5]=T4[4]=T4[4]+PE6=r+27
3. 단계 11까지 완료되었을 때 각 배열에 할당 및 누적된 값은 다음과 같다.
T[1]={r+18, r+3, r+21, r+3, r+9, r+3, r+6}
T[2]={r+18, r+30, r+12, r+45, r+24, r+33, r+27}
T[4]={r+24, r+9, r+27, r+6, r+27, r+21, r+12}
4. 단계 13 과정을 반복하면 mod q를 제외하고 다음과 같은 결과가 된다.
m0=T0[4]-T0[1]+e0=24-18+6=12,
m1=T1[4]-T1[1]+e1=9-3+1=7,
m2=T2[4]-T2[1]+e2=27-21+7=13,
m3=T3[4]-T3[1]+e3=6-3+1=4,
m4=T4[4]-T4[1]+e4=27-9+3=21,
m5=T5[4]-T5[1]+e5=21-3+1=19,
m6=T6[4]-T6[1]+e6=12-6+2=8,
도 5의 경우, 도 3에 도시된 알고리즘과 달리 f×e가 아닌 (pF+1)×e를 연산하므로,
(3(x5+x2-1)+1)×(2x6+x5+3x4+x3+7x2+x+6)=8x6+19x5+21x4+4x3+13x2+7x+12(mod x7-1)을 확인할 수 있다.
도 6은 일 실시예에 따른 NTRU 복호화 장치(600)의 구성을 나타내는 블록도이다.
도 6을 참조하면, NTRU 복호화 장치(600)는 메모리(610) 및 프로세서(630)를 포함할 수 있다. 메모리(610) 및 프로세서(630)는 메모리(610)에 저장된 프로그램에 따라 동작할 수 있다. 일 실시예에 따른 NTRU 복호화 장치(600)는 데스크탑 PC, 스마트폰, 태블릿 PC, 웨어러블 기기, 노트북 등 암호문 e의 복호화 과정을 수행할 수 있는 다양한 종류의 기기에 포함될 수 있다.
일 실시예에서, 프로세서(630)는 제 1 복호화 방법 및 제 2 복호화 방법 중 어느 하나의 복호화 방법에 기초하여 암호문 e로부터 평문 m을 획득할 수 있다. 제 1 복호화 방법은 예를 들어, 도 5와 관련하여 설명한 NTRU 복호화 알고리즘을 포함할 수 있고, 제 2 복호화 방법은 예를 들어, 도 1 및 도 4와 관련하여 설명한 NTRU 복호화 알고리즘을 포함할 수 있다. 도 5에 도시된 NTRU 복호화 알고리즘 및, 도 1과 도 4에 도시된 NTRU 복호화 알고리즘에 대해서는 전술하였으므로 상세한 설명을 생략한다.
프로세서(630)는 사용자의 제어에 기초하여 제 1 복호화 방법 및 제 2 복호화 방법 중 어느 하나의 복호화 방법에 기초하여 암호문 e를 복호화할 수 있다. 프로세서(630)는 복호화 결과 생성된 평문 m을 디스플레이, 스피커 등의 다양한 종류의 출력 기기를 통해 출력할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 작성된 프로그램은 매체에 저장될 수 있다.
매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상, 본 발명의 기술적 사상을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 발명의 기술적 사상은 상기 실시예들에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러 가지 변형 및 변경이 가능하다.
600: NTRU 복호화 장치
610: 메모리
630: 프로세서

Claims (11)

  1. NRTU 복호화 방법에 있어서,
    개인키 f에 대응하는 비밀 다항식 F의 계수들인 -1, 0 및 1 각각을 자연수 a, b 및 c로 변환한 비밀 다항식 F'를 결정하는 단계;
    암호문 배열 ei에 포함된 계수들 각각에 소정 정수 p를 곱하여 배열 PEi에 저장하는 단계, 상기 i는 0 이상 N 미만의 정수들이며, N-1은 암호문 e와 상기 비밀 다항식 F'의 최대 차수임;
    자연수 a에 대응하는 제 1 배열 Ti[a], 자연수 b에 대응하는 제 2 배열 Ti[b] 및 자연수 c에 대응하는 제 3 배열 Ti[c]에 랜덤 값을 초기 값으로 할당하는 단계;
    상기 비밀 다항식 F'에서 상기 자연수 a, b 및 c를 계수로 가지는 항의 차수에 기초하여, 상기 제 1 배열 Ti[a], 제 2 배열 Ti[b], 제 3 배열 Ti[c] 각각에 상기 배열 PEi에 저장된 값들을 할당 및 누적하는 단계;
    상기 제 3 배열 Ti[c]에 누적된 값으로부터 상기 제 1 배열 Ti[a]에 누적된 값을 차감한 값에 기초하여, 상기 ei에 대응하는 평문 배열 mi를 결정하는 단계; 및
    상기 암호문 e의 복호화를 위해 상기 비밀 다항식 F와 상기 암호문 e의 다항식 곱연산을 수행하는 단계를 더 포함하되,
    상기 다항식 곱연산을 수행하는 단계는,
    배열 ti에 랜덤 값을 초기 값으로 할당하는 단계;
    상기 비밀 다항식 F에서 -1의 계수를 갖는 항들의 차수 각각에 기초하여, 상기 배열 ti의 중간 요소에, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 항의 계수를 할당 및 누적하고, 상기 배열 ti의 첫 번째 요소로부터 상기 배열 ti의 중간 요소 이전에 위치한 요소까지, 그리고, 상기 배열 ti의 중간 요소 다음에 위치한 요소로부터 배열 ti의 마지막 요소까지, 상기 암호문 배열 ei에 포함된 계수들 중 상기 어느 하나의 계수를 제외한 계수를 순차적으로 할당 및 누적하는 단계;
    상기 배열 ti에 누적된 값들의 부호를 반대로 변환하는 단계;
    상기 비밀 다항식 F에서 1의 계수를 갖는 항들의 차수 각각에 기초하여, 상기 배열 ti의 중간 요소에, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 계수를 할당 및 누적하고, 상기 배열 ti의 첫 번째 요소로부터 상기 배열 ti의 중간 요소 이전에 위치한 요소까지, 그리고, 상기 배열 ti의 중간 요소 다음에 위치한 요소로부터 배열 ti의 마지막 요소까지, 상기 암호문 배열 ei에 포함된 계수들 중 어느 하나의 계수를 제외한 계수를 순차적으로 할당 및 누적하는 단계; 및
    상기 ti에 누적된 최종 값들에 기초하여 상기 다항식 곱연산의 결과 값을 결정하는 단계를 포함하는 것을 특징으로 하는 NTRU 복호화 방법.
  2. 제1항에 있어서,
    상기 배열 PEi에 저장된 값들을 할당 및 누적하는 단계는,
    상기 배열 PEi가 상기 제 1 배열 Ti[a], 제 2 배열 Ti[b] 또는 제 3 배열 Ti[c]에 할당되는 동안, 상기 제 1 배열 Ti[a], 제 2 배열 Ti[b] 또는 제 3 배열 Ti[c]의 마지막 요소로의 할당이 완료되면, 배열 PEi에 저장된 나머지 값을 상기 제 1 배열 Ti[a], 제 2 배열 Ti[b] 또는 제 3 배열 Ti[c]의 첫 번째 요소부터 할당하는 단계를 포함하는 것을 특징으로 하는 NTRU 복호화 방법.
  3. 제1항에 있어서,
    상기 평문 배열 mi를 결정하는 단계는,
    상기 제 3 배열 Ti[c]에 누적된 값으로부터 상기 제 1 배열 Ti[a]에 누적된 값을 차감한 값에 상기 암호문 배열 ei를 합하여 상기 평문 배열 mi을 결정하는 단계를 포함하는 것을 특징으로 하는 NTRU 복호화 방법.
  4. 제1항에 있어서,
    상기 배열 PEi에 저장된 값들을 할당 및 누적하는 단계는,
    상기 비밀 다항식 F'에서 계수 a를 갖는 항의 차수가 k (k는 0 이상 N 미만의 정수)인 경우, 상기 배열 PEi에 저장된 값들을 상기 제 1 배열 Ti[a]의 k+1번째 요소부터 순차적으로 할당하는 단계를 포함하는 것을 특징으로 하는 NTRU 복호화 방법.
  5. 제1항에 있어서,
    상기 제 3 배열 Ti[c]에 누적된 값으로부터 상기 제 1 배열 Ti[a]에 누적된 값이 차감됨으로써, 상기 초기 값으로 할당된 랜덤 값이 제거되는 것을 특징으로 하는 NTRU 복호화 방법.
  6. 제1항에 있어서,
    상기 자연수 a는 1이고, 상기 자연수 b는 2이고, 상기 자연수 c는 4인 것을 특징으로 하는 NTRU 복호화 방법.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서,
    상기 다항식 곱연산의 결과 값을 결정하는 단계는,
    상기 ti에 누적된 최종 값들에서 상기 랜덤 값을 합하는 단계를 포함하는 것을 특징으로 하는 NTRU 복호화 방법.
  10. 제1항에 있어서,
    상기 비밀 다항식 F에서 -1의 계수를 갖는 항의 차수가 k(k는 0 이상 N 미만의 정수)일 때, 상기 배열 ti의 중간 요소에는 ex(여기서, x = ((N-1)/2-k)(mod N))의 계수가 할당되는 것을 특징으로 하는 NTRU 복호화 방법.
  11. 제10항에 있어서,
    상기 배열 ti의 중간 요소 다음에 위치한 요소에는 ex+1의 계수가 할당되고, 상기 배열 ti의 첫 번째 요소에는 ey(여기서, y = (N-k)(mod N))의 계수가 할당되는 것을 특징으로 하는 NTRU 복호화 방법.
KR1020180144527A 2018-11-21 2018-11-21 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법 KR102155035B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180144527A KR102155035B1 (ko) 2018-11-21 2018-11-21 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180144527A KR102155035B1 (ko) 2018-11-21 2018-11-21 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법

Publications (2)

Publication Number Publication Date
KR20200059600A KR20200059600A (ko) 2020-05-29
KR102155035B1 true KR102155035B1 (ko) 2020-09-11

Family

ID=70911779

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180144527A KR102155035B1 (ko) 2018-11-21 2018-11-21 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법

Country Status (1)

Country Link
KR (1) KR102155035B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102312379B1 (ko) * 2020-10-14 2021-10-12 국민대학교 산학협력단 Lac에 대한 부채널 분석 장치 및 방법
KR20240045712A (ko) 2022-09-30 2024-04-08 호서대학교 산학협력단 양자 내성 암호 시스템 ntru에서의 부채널 공격에 대응하는 복호화 방법 및 시스템

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102280708B1 (ko) 2020-10-23 2021-07-21 국민대학교산학협력단 NTRU LPRime 암호에 대한 부채널 분석 장치 및 방법
KR102657596B1 (ko) * 2022-09-16 2024-04-15 조금배 Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
An, Soojung, et al. "Single trace side channel analysis on ntru implementation." Applied Sciences, Vol. 8, 2014 (2018.10.23.) 1부.*
Lee, Mun-Kyu, et al. "Countermeasures against power analysis attacks for the NTRU public key cryptosystem." IEICE transactions on fundamentals of electronics, communications and computer sciences, Vol. 93, pp. 153-163 (2010.) 1부.*
Wang, An, et al. "Random key rotation: Side-channel countermeasure of NTRU cryptosystem for resource-limited devices." Computers & Electrical Engineering, Vol. 63, pp. 220-231 (2017.) 1부.*
안수정, et al. "NTRUEncrypt 에 대한 단일 파형 기반 전력 분석." 정보보호학회논문지, Vol. 28, No. 5, pp 1089-1098 (2018.10.) 1부.*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102312379B1 (ko) * 2020-10-14 2021-10-12 국민대학교 산학협력단 Lac에 대한 부채널 분석 장치 및 방법
KR20240045712A (ko) 2022-09-30 2024-04-08 호서대학교 산학협력단 양자 내성 암호 시스템 ntru에서의 부채널 공격에 대응하는 복호화 방법 및 시스템

Also Published As

Publication number Publication date
KR20200059600A (ko) 2020-05-29

Similar Documents

Publication Publication Date Title
KR102155035B1 (ko) 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법
EP0924895B1 (en) Encryption and decryption devices for public-key cryptosystems and recording medium with their processing programs recorded thereon
US7564970B2 (en) Exponential data transform to enhance security
Granboulan et al. Inverting HFE is quasipolynomial
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
KR20080019642A (ko) 타원 곡선 점 곱셈
US8600047B2 (en) Exponent obfuscation
US10567158B2 (en) Cryptographic device and an encoding device
KR20190081259A (ko) Module-Wavy와 Module-LWR에 기반한 공개키 암호 키 생성 및 암복호화 방법
Chen et al. Security analysis of the public key algorithm based on Chebyshev polynomials over the integer ring ZN
KR20030075146A (ko) 암호 체계의 비밀 키 저장 및 복원 방법과 장치
CN111510292B (zh) hill高阶密钥矩阵随机生成方法、系统、装置和存储介质
KR100817048B1 (ko) 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치
US20040258240A1 (en) Cryptosystems
EP2395698B1 (en) Implicit certificate generation in the case of weak pseudo-random number generators
Patel et al. A novel verifiable multi-secret sharing scheme based on elliptic curve cryptography
Ashraf et al. Message transmission for GH-public key cryptosystem
Encinas et al. Maple implementation of the Chor-Rivest cryptosystem
Potey et al. Efficient homomorphic encryption using ECC-ElGamal scheme for cloud data
Knezevic et al. Modular reduction without precomputational phase
Yakubu et al. An improved RSA image encryption algorithm using 1-D logistic map
KR20070049823A (ko) 전력공격에 안전한 모듈라 지수승 연산 및 상수배 곱셈연산방법
KR102019369B1 (ko) 단일파형공격을 차단하기 위한 타원곡선 암호화 장치 및 방법
KR101006358B1 (ko) 실수체 기반의 타원 곡선 암호 시스템 및 그 방법
Dhumal et al. Sparse linear algebra in function field sieve

Legal Events

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