KR20220055079A - NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 - Google Patents
NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20220055079A KR20220055079A KR1020200139186A KR20200139186A KR20220055079A KR 20220055079 A KR20220055079 A KR 20220055079A KR 1020200139186 A KR1020200139186 A KR 1020200139186A KR 20200139186 A KR20200139186 A KR 20200139186A KR 20220055079 A KR20220055079 A KR 20220055079A
- Authority
- KR
- South Korea
- Prior art keywords
- order
- position index
- generating
- index value
- order table
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000002265 prevention Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000007123 defense Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- FUHMZYWBSHTEDZ-UHFFFAOYSA-M bispyribac-sodium Chemical compound [Na+].COC1=CC(OC)=NC(OC=2C(=C(OC=3N=C(OC)C=C(OC)N=3)C=CC=2)C([O-])=O)=N1 FUHMZYWBSHTEDZ-UHFFFAOYSA-M 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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 by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Storage Device Security (AREA)
Abstract
NTRU(Nth degree Truncated polynomial Ring Units) LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법이 제공된다. 일 실시예에 따른 부채널 공격 방지 방법은, NTRU LPrime 알고리즘의 복호화 알고리즘을 통해 생성될 비밀 정보인 비트 열(bit string)의 각 비트 값에 대한 위치 인덱스 값을 포함하는 순서 테이블을 생성하는 단계; 임의의 수(random number)에 기초하여 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 셔플링(shuffling)하는 단계; 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서에 따라 상기 각 비트 값의 생성 순서를 결정하는 단계; 및 상기 복호화 알고리즘을 통해 상기 비밀 정보를 생성하되, 상기 결정된 생성 순서에 따라 상기 각 비트 값을 생성하여 상기 비밀 정보를 생성하는 단계를 포함한다.
Description
개시되는 실시예들은 부채널 공격을 방지하기 위한 기술과 관련된다.
NIST(National Institute of Standards and Technology)에서는 2016년도부터 양자 내성 암호(PQC, Post Quantum Cryptography) 기술에 대한 표준화 공모 사업을 진행하고 있으며 2019년 1월 30일에 NTRU LPRime 알고리즘을 포함한 총 26개의 알고리즘이 2라운드 후보로 발표되었다.
2라운드 선정 기준에 부채널 분석에 대한 안전성이 포함되면서 부채널 분석 중에서 가장 잘 알려진 단순 전력 분석(SPA, simple power analysis)에 안전하도록 구현한 결과물이 NIST에 제출되었다. 그러나 단순 전력 분석에 안전하더라도 단 하나의 파형을 이용하여 비밀 정보를 도출하는 강력한 부채널 분석 기법인 단일 파형 공격(single trace attack)에는 여전히 취약점을 가지고 있으므로, 이에 대한 대응기법의 설계가 필요하다.
Daniel J. Bernstein, et al. "NTRU Prime: round 2 20190330"
개시되는 실시예들은 NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법을 제공하기 위한 것이다.
일 실시예에 따른 부채널 공격 방지 방법은, NTRU (Nth degree Truncated polynomial Ring Units) LPrime 알고리즘의 복호화 알고리즘을 통해 생성될 비밀 정보인 비트 열(bit string)의 각 비트 값에 대한 위치 인덱스 값을 포함하는 순서 테이블을 생성하는 단계; 임의의 수(random number)에 기초하여 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 셔플링(shuffling)하는 단계; 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서에 따라 상기 각 비트 값의 생성 순서를 결정하는 단계; 및 상기 복호화 알고리즘을 통해 상기 비밀 정보를 생성하되, 상기 결정된 생성 순서에 따라 상기 각 비트 값을 생성하여 상기 비밀 정보를 생성하는 단계를 포함한다.
상기 셔플링하는 단계는, 상기 순서 테이블 내에 포함된 i(이때, i는 상기 정렬 순서로서 1≤i≤L-1인 정수, L은 상기 비트 열의 길이) 번째 위치 인덱스 값에 대한 임의의 수 Ri(이때, Ri는 0≤Ri인 정수)를 생성하는 단계; 상기 i 및 상기 임의의 수 Ri에 기초하여 상기 순서 테이블 내 j(이때, j는 0≤j≤i인 정수) 번째 위치 인덱스 값을 선택하는 단계; 및 상기 i 번째 위치 인덱스 값과 상기 j 번째 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 교환(swap)하는 단계를 포함할 수 있다.
상기 순서 테이블을 생성하는 단계는, 상기 비트 열 내 대응되는 위치의 순서에 따라 상기 각 비트 값에 대한 위치 인덱스 값이 정렬된 순서 테이블을 생성할 수 있다.
상기 선택하는 단계는, 아래의 수학식 1
[수학식 1]
j=Ri mod (i+1)
에 기초하여 상기 j번째 위치 인덱스 값을 선택할 수 있다.
일 실시예에 따른 부채널 공격 방지 장치는, 하나 이상의 명령어를 저장하는 메모리; 및 상기 하나 이상의 명령어를 실행하는 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는, NTRU (Nth degree Truncated polynomial Ring Units) LPrime 알고리즘의 복호화 알고리즘을 통해 생성될 비밀 정보인 비트 열(bit string)의 각 비트 값에 대한 위치 인덱스 값을 포함하는 순서 테이블을 생성하는 단계; 임의의 수(random number)에 기초하여 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 셔플링(shuffling)하는 단계; 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서에 따라 상기 각 비트 값의 생성 순서를 결정하는 단계; 및 상기 복호화 알고리즘을 통해 상기 비밀 정보를 생성하되, 상기 결정된 생성 순서에 따라 상기 각 비트 값을 생성하여 상기 비밀 정보를 생성하는 단계를 수행할 수 있다.
상기 셔플링하는 단계는, 상기 순서 테이블 내에 포함된 i(이때, i는 상기 정렬 순서로서 1≤i≤L-1인 정수, L은 상기 비트 열의 길이) 번째 위치 인덱스 값에 대한 임의의 수 Ri(이때, Ri는 0≤Ri인 정수)를 생성하는 단계; 상기 i 및 상기 임의의 수 Ri에 기초하여 상기 순서 테이블 내 j(이때, j는 0≤j≤i인 정수) 번째 위치 인덱스 값을 선택하는 단계; 및 상기 i 번째 위치 인덱스 값과 상기 j 번째 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 교환(swap)하는 단계를 포함할 수 있다.
상기 순서 테이블을 생성하는 단계는, 상기 비트 열 내 대응되는 위치의 순서에 따라 상기 각 비트 값에 대한 위치 인덱스 값이 정렬된 순서 테이블을 생성할 수 있다.
상기 선택하는 단계는, 아래의 수학식 1
[수학식 1]
j=Ri mod (i+1)
에 기초하여 상기 j번째 위치 인덱스 값을 선택할 수 있다.
개시되는 실시예들에 따르면, NTRU LPRime 알고리즘의 복호화 과정을 통해 생성되는 비밀 정보를 획득하기 위한 단일 파형 공격의 공격 복잡도를 높임으로써, 단일 파형 공격에 의한 비밀 정보 획득을 방지할 수 있다.
도 1은 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
도 2는 일 실시예에 따른 부채널 공격 방어 방법의 순서도
도 3은 일 실시예에 따른 셔플링 과정을 나타낸 도면
도 4는 NTRU LPRime 알고리즘의 디캡슐화(decapsulation) 알고리즘의 유사 코드(pseudo code)를 나타낸 도면
도 5는 도 4에 도시된 복호화 알고리즘의 수행을 위해 구현된 소스 코드를 도시한 도면
도 6는 도 5에 포함된 마스크 알고리즘의 수행을 위해 구현된 소스 코드를 도시한 도면
도 7은 일 실시예에 따른 부채널 공격 방어 방법이 적용되도록 수정된 복호화 알고리즘의 소스 코드를 도시한 도면
도 2는 일 실시예에 따른 부채널 공격 방어 방법의 순서도
도 3은 일 실시예에 따른 셔플링 과정을 나타낸 도면
도 4는 NTRU LPRime 알고리즘의 디캡슐화(decapsulation) 알고리즘의 유사 코드(pseudo code)를 나타낸 도면
도 5는 도 4에 도시된 복호화 알고리즘의 수행을 위해 구현된 소스 코드를 도시한 도면
도 6는 도 5에 포함된 마스크 알고리즘의 수행을 위해 구현된 소스 코드를 도시한 도면
도 7은 일 실시예에 따른 부채널 공격 방어 방법이 적용되도록 수정된 복호화 알고리즘의 소스 코드를 도시한 도면
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(110)은 컴퓨팅 장치(12)를 포함한다. 컴퓨팅 장치(12)는 일 실시예에 따른 부채널 공격 방지 방법을 수행하기 위한 장치에 포함된 하나 이상의 컴포넌트일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
도 2는 일 실시예에 따른 부채널 공격 방어 방법의 순서도이다.
도 2에 도시된 방법은 예를 들어, 도 1에 도시된 컴퓨팅 장치(12)에 의해 수행될 수 있다.
도 2를 참조하면, 우선 컴퓨팅 장치(12)는 NTRU (Nth degree Truncated polynomial Ring Units) LPrime 알고리즘의 복호화 알고리즘(이하, 복호화 알고리즘)을 통해 생성될 비밀 정보인 비트 열(bit string)의 각 비트 값에 대한 위치 인덱스 값을 포함하는 순서 테이블을 생성한다(210).
일 실시예에 따르면, 복호화 알고리즘을 통해 생성될 비밀 정보가 L(이때, L은 1보다 큰 정수) 비트의 비트 열인 경우, 비트 열의 구성하는 L개의 비트 값 각각의 위치 인덱스 값은 각 비트 값의 비트 열 내 위치를 나타내는 정보를 의미할 수 있다.
예를 들어, 비밀 정보가 4 비트의 비트 열 r=(r0,r1,r3,r4)∈{0,1}인 것으로 가정하면, 비트 열 r의 첫 번째 비트 값인 'r0'의 위치 인덱스 값은 '0', 두 번째 비트 값인 'r1'의 위치 인덱스 값은 '1', 세 번째 비트 값인 'r2'의 위치 인덱스 값은 '2', 네 번째 비트 값인 'r3'의 위치 인덱스 값은 '3'일 수 있다. 그러나, 위치 인덱스 값은 반드시 상술한 예에 한정되는 것은 아니며, 상술한 예 외에도 비트 열 내 특정 위치를 식별하기 위해 이용될 수 있는 다양한 값이 위치 인덱스 값으로 이용될 수 있다.
한편, 일 실시예에 따르면, 순서 테이블에 포함된 각 위치 인덱스 값은 비트 열 내 대응되는 위치의 순서대로 정렬될 수 있다. 구체적으로, 상술한 예와 같이 비밀 정보가 비트 열 r=(r0,r1,r3,r4)인 것으로 가정하면, 컴퓨팅 장치(12)는 예를 들어, 아래의 표 1과 같은 순서 테이블을 생성할 수 있다.
Order | 0 | 1 | 2 | 3 | 4 |
Index | 0 | 1 | 2 | 3 | 4 |
구체적으로, 표 1에 도시된 순서 테이블에서 'Index' 행에 기재된 값은 비트 열 r에 포함된 각 비트 값의 위치 인덱스 값을 나타내며, "Order' 행에 기재된 값은 각 위치 인덱스 값의 순서 테이블 내 정렬 순서를 나타내는 순서 인덱스 값을 나타낸다.
이후, 컴퓨팅 장치(12)는 임의의 수(random number)에 기초하여 순서 테이블에 포함된 각 위치 인덱스 값의 순서 테이블 내 정렬 순서를 셔플링(shuffling)한다(220).
이후, 컴퓨팅 장치(12)는 셔플링을 통해 결정된 순서 테이블 내 각 위치 인덱스 값의 정렬 순서에 따라 복호화 알고리즘을 통해 생성될 비밀 정보의 각 비트 값에 대한 생성 순서를 결정한다(230).
이후, 컴퓨팅 장치(12)는 복호화 알고리즘을 이용하여 비밀 정보를 생성하되, 230 단계에서 결정된 생성 순서에 따라 비밀 정보의 각 비트 값을 생성한다(240).
예를 들어, 셔플링을 통해 상술한 표 1의 순서 테이블에 포함된 위치 인덱스 값이 아래의 표 2에 도시된 순서 테이블과 같이 셔플링된 경우, 컴퓨팅 장치(12)는 r4, r1, r3, r2, r0의 순서대로 비밀 정보의 비트 값을 생성할 수 있다.
Order | 0 | 1 | 2 | 3 | 4 |
Index | 4 | 1 | 3 | 2 | 0 |
도 3은 일 실시예에 따른 셔플링 과정을 나타낸 도면이다.
도 3에 도시된 셔플링 과정은 예를 들어, 도 2에 도시된 220 단계에서 수행될 수 있다.
우선, 컴퓨팅 장치(12)는 순서 테이블에 포함된 각 위치 인덱스 값의 정렬 순서를 나타내는 순서 인덱스 값 i를 i=L-1로 초기화한다(310).
이후, 컴퓨팅 장치(12)는 임의의 수 Ri (이때, Ri는 0≤Ri인 정수)를 생성한다(320).
이후, 컴퓨팅 장치(12)는 순서 인덱스 값 i 및 임의의 수 Ri에 기초하여 순서 테이블 내 순서 인덱스 값이 j(이때, j는 0≤j≤i인 정수)인 위치 인덱스 값을 선택한다(330).
이때, 일 실시예에 따르면, 컴퓨팅 장치(12)는 아래의 수학식 1을 이용하여 순서 인덱스 값 j를 결정할 수 있다.
[수학식 1]
j=Ri mod (i +1)
이후, 컴퓨팅 장치(12)는 i 번째 위치 인덱스 값과 j 번째 위치 인덱스 값의 순서 테이블 내 정렬 순서를 교환(swap)한다(340).
예를 들어, 순서 테이블이 표 1과 동일하고, i=4, j=1인 것으로 가정하면 컴퓨팅 장치(12)는 순서 테이블 내 4번째 위치 인덱스 값인 '4'와 1번째 위치 인덱스 값인 '1'의 정렬 순서를 변경할 수 있으며, 이에 따라 표 1에 도시된 순서 테이블은 아래의 표 3과 같이 변경될 수 있다.
Order | 0 | 1 | 2 | 3 | 4 |
Index | 0 | 4 | 2 | 3 | 1 |
이후, 컴퓨팅 장치(12)는 순서 인덱스 값 i를 1만큼 감소시킨 후(350), i=0인지 여부를 판단한다(360).
이때, i>0인 경우, 컴퓨팅 장치(12)는 i=0을 만족할 때까지 310 내지 360 단계를 반복 수행하고, i=0인 경우, 셔플링을 종료한다.
도 4는 NTRU LPRime 알고리즘의 디캡슐화(decapsulation) 알고리즘의 유사 코드(pseudo code)를 나타낸 도면이다.
도 4에 도시된 유사 코드를 참조하면, 유사 코드의 5번째 줄과 6번째 줄에 기재된 과정은 복호화 알고리즘이 수행되는 과정이며, Right 함수는 양의 정수(positive integer) τ에 의해 (이때, q는 소수(prime number))로 사전 정의된 함수를 나타낸다.
한편, 도 5는 도 4에 도시된 복호화 알고리즘의 수행을 위해 구현된 소스 코드를 도시한 도면, 도 6은 도 5에 포함된 마스크 알고리즘의 수행을 위해 구현된 소스 코드를 도시한 도면이다.
도 5 및 도 6을 참조하면, r=(r0,r1,…,rL-1)∈{0,1}에 포함된 각 비트 ri(=r[i])를 마스크 알고리즘 'int16_negative_mask'의 입력으로 이용하여 생성된 출력 값을 -u라 할 때 L 비트의 비밀 정보 r'= r=(r'0,r'1,…,r'L-1)∈{0,1}에 포함되는 각 비트 값은 r'i=-(-u)이다.
한편, 도 5 및 도 6에 도시된 예에서, 단일 파형 공격에 의한 공격 위치가 마스크 알고리즘을 이용하여 비밀 정보 r'의 각 비트 값 r'i를 반환하는 위치이고, 전력 소비 모델이 해밍 웨이트(HW, Hamming weight) 정보에 의존한다고 가정하면, 중간 값이 x일 때 소비하는 전력량은 P=ε·HW(x)+Pnoise(이때, ε는 상수, Pnoise는 노이즈)이다. 즉, 중간 값의 HW값과 소비전력은 선형성을 갖는다.
즉, int16_negative_mask(r[i])=0xffff이면 r'i=1이고, int16_negative_mask(r[i])=0x0000이면 r'i=0이다. 따라서, r'i=1일 때 중간값 0xffff의 HW값인 16에 비례한 전력 소비가 발생하고, r'i=0일 때 중간값 0x0000의 HW값인 0에 비례하는 전력 소비가 발생하므로, 단일 파형 공격에 의해 비밀 정보 r'가 노출될 수 있다.
한편, 도 7은 일 실시예에 따른 부채널 공격 방어 방법이 적용되도록 수정된 복호화 알고리즘의 소스 코드를 도시한 도면이다.
구체적으로, 도 7에 도시된 소스 코드는 순서 테이블의 생성 및 셔플링 과정(710)이 수행되도록 도 5에 도시된 소스 코드를 수정한 소스 코드이다.
도 7에 도시된 소스 코드에 따르면, 순서 테이블의 생성 및 셔플링 과정(710)을 통해 생성된 순서 테이블에서 각 위치 인덱스 값의 정렬 순서에 따라 각 위치 인덱스 값에 대응되는 비밀 정보 r'의 비트 값이 생성되도록 int_negative_mask 연산 과정(720)이 수행된다.
즉, 도 7에 도시된 소스 코드에 따르면, int_negative_mask 연산 과정(620)에서 비밀 정보 r'의 각 비트 값은 서로 독립으로 생성되므로 단일 파형 공격을 통해 현재 생성된 비트 값이 0인지 1인지 여부를 알 수 있으나, 현재 생성된 비트 값이 r'의 비트 열 내 어떤 위치의 비트 값인지 알 수 없다. 따라서, 현재 생성된 비트 값이 r'의 비트 열 내 어떤 위치의 비트 값인지를 파악하려면 r'의 비트 열 내 각 비트 값의 생성 순서를 파악하기 위한 공격이 추가로 필요하므로 공격 복잡도가 높아지게 된다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
Claims (8)
- NTRU (Nth degree Truncated polynomial Ring Units) LPrime 알고리즘의 복호화 알고리즘을 통해 생성될 비밀 정보인 비트 열(bit string)의 각 비트 값에 대한 위치 인덱스 값을 포함하는 순서 테이블을 생성하는 단계;
임의의 수(random number)에 기초하여 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 셔플링(shuffling)하는 단계;
상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서에 따라 상기 각 비트 값의 생성 순서를 결정하는 단계; 및
상기 복호화 알고리즘을 통해 상기 비밀 정보를 생성하되, 상기 결정된 생성 순서에 따라 상기 각 비트 값을 생성하여 상기 비밀 정보를 생성하는 단계를 포함하는 부채널 공격 방지 방법. - 청구항 1에 있어서,
상기 셔플링하는 단계는, 상기 순서 테이블 내에 포함된 i(이때, i는 상기 정렬 순서로서 1≤i≤L-1인 정수, L은 상기 비트 열의 길이) 번째 위치 인덱스 값에 대한 임의의 수 Ri(이때, Ri는 0≤Ri인 정수)를 생성하는 단계;
상기 i 및 상기 임의의 수 Ri에 기초하여 상기 순서 테이블 내 j(이때, j는 0≤j≤i인 정수) 번째 위치 인덱스 값을 선택하는 단계; 및
상기 i 번째 위치 인덱스 값과 상기 j 번째 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 교환(swap)하는 단계를 포함하는 부채널 공격 방지 방법.
- 청구항 2에 있어서,
상기 순서 테이블을 생성하는 단계는, 상기 비트 열 내 대응되는 위치의 순서에 따라 상기 각 비트 값에 대한 위치 인덱스 값이 정렬된 순서 테이블을 생성하는 부채널 공격 방지 방법.
- 청구항 2에 있어서,
상기 선택하는 단계는, 아래의 수학식 1
[수학식 1]
j=Ri mod (i+1)
에 기초하여 상기 j번째 위치 인덱스 값을 선택하는 부채널 공격 방지 방법.
- 하나 이상의 명령어를 저장하는 메모리; 및
상기 하나 이상의 명령어를 실행하는 하나 이상의 프로세서를 포함하고,
상기 하나 이상의 프로세서는,
NTRU (Nth degree Truncated polynomial Ring Units) LPrime 알고리즘의 복호화 알고리즘을 통해 생성될 비밀 정보인 비트 열(bit string)의 각 비트 값에 대한 위치 인덱스 값을 포함하는 순서 테이블을 생성하는 단계;
임의의 수(random number)에 기초하여 상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 셔플링(shuffling)하는 단계;
상기 각 비트 값에 대한 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서에 따라 상기 각 비트 값의 생성 순서를 결정하는 단계; 및
상기 복호화 알고리즘을 통해 상기 비밀 정보를 생성하되, 상기 결정된 생성 순서에 따라 상기 각 비트 값을 생성하여 상기 비밀 정보를 생성하는 단계를 수행하는 부채널 공격 방지 장치.
- 청구항 5에 있어서,
상기 셔플링하는 단계는, 상기 순서 테이블 내에 포함된 i(이때, i는 상기 정렬 순서로서 1≤i≤L-1인 정수, L은 상기 비트 열의 길이) 번째 위치 인덱스 값에 대한 임의의 수 Ri(이때, Ri는 0≤Ri인 정수)를 생성하는 단계;
상기 i 및 상기 임의의 수 Ri에 기초하여 상기 순서 테이블 내 j(이때, j는 0≤j≤i인 정수) 번째 위치 인덱스 값을 선택하는 단계; 및
상기 i 번째 위치 인덱스 값과 상기 j 번째 위치 인덱스 값의 상기 순서 테이블 내 정렬 순서를 교환(swap)하는 단계를 포함하는 부채널 공격 방지 장치.
- 청구항 6에 있어서,
상기 순서 테이블을 생성하는 단계는, 상기 비트 열 내 대응되는 위치의 순서에 따라 상기 각 비트 값에 대한 위치 인덱스 값이 정렬된 순서 테이블을 생성하는 부채널 공격 방지 장치.
- 청구항 6에 있어서,
상기 선택하는 단계는, 아래의 수학식 1
[수학식 1]
j=Ri mod (i+1)
에 기초하여 상기 j번째 위치 인덱스 값을 선택하는 부채널 공격 방지 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200139186A KR20220055079A (ko) | 2020-10-26 | 2020-10-26 | NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 |
US17/081,810 US11853419B2 (en) | 2020-10-26 | 2021-02-01 | Apparatus and method for preventing side channel attack for NTRU LPRime algorithm |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200139186A KR20220055079A (ko) | 2020-10-26 | 2020-10-26 | NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220055079A true KR20220055079A (ko) | 2022-05-03 |
Family
ID=81257407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200139186A KR20220055079A (ko) | 2020-10-26 | 2020-10-26 | NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11853419B2 (ko) |
KR (1) | KR20220055079A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102020134618A1 (de) * | 2020-12-22 | 2022-06-23 | Infineon Technologies Ag | Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0013398D0 (en) * | 2000-06-01 | 2000-07-26 | Tao Group Ltd | A method of protecting a cryptosystem from a multiple transmission attack |
US10795858B1 (en) * | 2014-02-18 | 2020-10-06 | Erich Schmitt | Universal abstraction and de-abstraction of a digital data stream |
KR101914028B1 (ko) * | 2017-04-28 | 2018-11-01 | 삼성에스디에스 주식회사 | 부채널 공격에 안전한 연산 장치 및 방법 |
US10915464B2 (en) * | 2017-09-12 | 2021-02-09 | Ememory Technology Inc. | Security system using random number bit string |
EP3474484A1 (en) * | 2017-10-17 | 2019-04-24 | Koninklijke Philips N.V. | Cryptographic device with updatable shared matrix |
DE102018122278A1 (de) * | 2018-09-12 | 2020-03-12 | Infineon Technologies Ag | Ausführen einer kryptographischen Operation |
DE102019108095A1 (de) * | 2019-03-28 | 2020-10-01 | Infineon Technologies Ag | Ausführen einer kryptografischen Operation |
-
2020
- 2020-10-26 KR KR1020200139186A patent/KR20220055079A/ko unknown
-
2021
- 2021-02-01 US US17/081,810 patent/US11853419B2/en active Active
Non-Patent Citations (1)
Title |
---|
Daniel J. Bernstein, et al. "NTRU Prime: round 2 20190330" |
Also Published As
Publication number | Publication date |
---|---|
US20220129547A1 (en) | 2022-04-28 |
US11853419B2 (en) | 2023-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11362835B2 (en) | Efficient post-quantum anonymous attestation with signature-based join protocol and unlimited signatures | |
US10360390B2 (en) | Oblivious order-preserving encryption | |
Volpano et al. | Verifying secrets and relative secrecy | |
US10715320B2 (en) | Password generation with key and derivation parameter | |
RU2661308C2 (ru) | Вычислительное устройство, конфигурируемое с помощью табличной сети | |
JP5851074B2 (ja) | 関数の計算のためのルックアップテーブルを記憶した計算装置 | |
EP3166041A1 (en) | Format preserving masking system and method | |
US20130232323A1 (en) | Obfuscation of control flow of software | |
JPWO2016113886A1 (ja) | 乱数拡大装置、乱数拡大方法及び乱数拡大プログラム | |
CN112152786A (zh) | 无签名扩展的快速xmss签名验证和临时数采样过程 | |
KR20220055079A (ko) | NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 | |
RU2680761C1 (ru) | Безопасные преобразования данных | |
US20200073952A1 (en) | Method and Apparatus for Acceleration of Hash-Based Lookup | |
CN117882334A (zh) | 经典和后量子签名的高效杂交 | |
CN106295379A (zh) | 加密输入法和装置、解密输入法和装置及相关设备 | |
JP2019020794A (ja) | 文書管理装置、文書管理システム及びプログラム | |
US20210342486A1 (en) | Encrypted data processing | |
US10176153B1 (en) | Generating custom markup content to deter robots | |
KR20220055083A (ko) | Lac 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법 | |
CN111339547A (zh) | 用于生成数据标签的方法、电子设备及计算机存储介质 | |
CN111447072B (zh) | 用于生成数据等价零知识证明的方法、设备及存储介质 | |
CN107667368A (zh) | 用于sparse函数的非可延展混淆器 | |
CN110213037B (zh) | 一种适合硬件环境的流密码加密方法及系统 | |
CN111371557A (zh) | 区块链数据处理方法、装置、电子设备及介质 | |
WO2017071541A1 (zh) | 一种数字验证码的生成方法及装置 |