KR102628010B1 - 가상 암호화 연산을 수행하는 암호화 회로 - Google Patents
가상 암호화 연산을 수행하는 암호화 회로 Download PDFInfo
- Publication number
- KR102628010B1 KR102628010B1 KR1020180119306A KR20180119306A KR102628010B1 KR 102628010 B1 KR102628010 B1 KR 102628010B1 KR 1020180119306 A KR1020180119306 A KR 1020180119306A KR 20180119306 A KR20180119306 A KR 20180119306A KR 102628010 B1 KR102628010 B1 KR 102628010B1
- Authority
- KR
- South Korea
- Prior art keywords
- round
- virtual
- core
- encryption
- real
- Prior art date
Links
- 230000015654 memory Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 16
- 238000004458 analytical method Methods 0.000 description 13
- 238000000034 method Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 6
- 230000003936 working memory Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 101000649929 Homo sapiens Serine/threonine-protein kinase VRK1 Proteins 0.000 description 2
- 101150080255 PEP1 gene Proteins 0.000 description 2
- 102100028235 Serine/threonine-protein kinase VRK1 Human genes 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised 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/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/72—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 in cryptographic circuits
-
- 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
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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
-
- 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
-
- 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
- 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
- G06F21/755—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 with measures against power attack
-
- 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]
-
- 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
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
Abstract
가상 암호화 연산을 수행하는 암호화 회로가 개시된다. 본 개시의 실시 예에 따른 암호화 회로는, 순차적으로 입력되는 입력 데이터 각각에 대한 실제 라운드 연산을 수행하는 복수의 라운드 코어들을 포함하고, 실제 라운드 연산을 이용한 암호화 연산을 통해 암호화 데이터를 출력하는 파이프 라인 암호화 코어, 및 복수의 라운드 코어들 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 추가로 수행하도록 제어하는 암호화 컨트롤러를 포함하고, 암호화 컨트롤러는 적어도 하나의 라운드 코어의 가상 라운드 연산이 복수의 라운드 코어들 중 적어도 다른 하나의 라운드 코어의 실제 라운드 연산과 병렬하게 수행될 수 있다.
Description
본 개시의 기술적 사상은 암호화(Encrypyion) 연산을 수행하는 암호화 회로 및 이의 동작 방법에 관한 것으로서, 상세하게는 가상 연산을 수행하는 암호화 회로 및 이의 동작 방법에 관한 것이다.
스마트 카드 및 IC(integrated circuit) 카드는 사용자에 관한 보안 정보를 포함한다. 사용자의 보안 정보가 해킹 등에 의해 유출되는 것을 방지하기 위하여, 서명이나 인증 절차를 밟아 전송되는 보안 정보를 암호문으로 만들어서 전송하는 암호화 회로가 요구된다.
공격자는 입력 또는 출력되는 데이터를 직접 조작하는 대신, "부 채널 분석 공격(Side-channel Analysis Attack)"을 행할(Conduct) 수 있다. 부채널 분석 공격에서, 공격자는 암호화 회로에 의해 소모되는 전력의 양, 암호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화 회로에서 이용되는 키를 알아내기 위해 암호화 회로를 공격할 수 있다. 따라서, 부채널 분석 공격 방지 기법으로는 부채널을 통해 수집하는 정보인 전력, 전자기파(Electromagnetic wave)를 랜덤하게 나타나도록 하거나 균일하게 나타나게 하는 방법이 사용될 수 있다.
본 개시의 기술적 사상은 암호화 회로 및 이의 동작 방법에 관한 것으로서, 데이터에 대한 실제 연산과 가상 연산을 수행하는 암호화 회로 및 이의 동작 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따라 암호화 회로는, 순차적으로 입력되는 입력 데이터 각각에 대한 실제 라운드 연산을 수행하는 복수의 라운드 코어들을 포함하고, 실제 라운드 연산을 이용한 암호화 연산을 통해 암호화 데이터를 출력하는 파이프 라인 암호화 코어, 및 복수의 라운드 코어들 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 추가로 수행하도록 제어하는 암호화 컨트롤러를 포함하고, 암호화 컨트롤러는 적어도 하나의 라운드 코어의 가상 라운드 연산이 복수의 라운드 코어들 중 적어도 다른 하나의 라운드 코어의 실제 라운드 연산과 병렬하게 수행될 수 있다.
본 개시의 기술적 사상의 다른 일 측면에 따른 암호화 회로는, 입력 데이터에 대한 제1 실제 라운드 연산을 수행하는 제1 라운드 코어, 제1 실제 라운드 연산 결과에 기초하여, 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어, 및 제1 라운드 코어 및 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고, 제1 라운드 코어는 더미 데이터 및 키 스케쥴러로부터 제공되는 제1 가상 라운드 키 중 하나에 기초하여 제1 가상 라운드 연산을 더 수행하고, 제1 라운드 코어의 제1 가상 라운드 연산은 제2 실제 라운드 연산과 서로 병렬적으로 수행될 수 있다.
본 개시의 기술적 사상의 또 다른 일 측면에 따라 암호화 회로는, 입력 데이터에 대한 제1 실제 라운드 연산을 수행하는 제1 라운드 코어, 제1 실제 라운드 연산 결과에 기초하여, 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어, 및 제1 라운드 코어 및 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고, 제2 라운드 코어는 더미 데이터 및 키 스케쥴러로부터 제공되는 가상 라운드 키 중 하나에 기초하여 가상 라운드 연산을 더 수행하고 제1 실제 라운드 연산은 제2 라운드 코어의 가상 라운드 연산과 서로 병렬적으로 수행될 수 있다.
본 개시의 기술적 사상에 따른 암호화 회로 및 이의 동작 방법에 따르면, 공격자가 실제 암호화 연산이 수행되는 시점을 특정하기 어려워짐으로써 암호화 회로의 보안 수준이 향상될 수 있다.
또한, 가상 암호화 연산을 수행함에 따라 발생되는 노이즈로 인하여, 공격자가 부채널을 통해 수집하는 정보로부터 암호화 회로에서 이용되는 암호화 키를 알아내는 것이 어려워질 수 있고, 암호화 회로의 보안 수준이 향상될 수 있다.
또한, 서로 다른 데이터에 대한 실제 연산 동작을 중첩적으로 수행함으로써, 암호화 동작에 걸리는 시간이 감소되고, 동시에 보안 수준이 향상될 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시 예에 따른 암호화 회로를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시 예에 따른 암호화 회로에 포함된 파이프 라인 암호화 코어를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시 예에 따른 암호화 회로에서 수행되는 암호화 연산을 설명하는 흐름도이다.
도 5는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 6 내지 도 8은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 9는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 10 내지 도 12는 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 13은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 2는 본 개시의 예시적 실시 예에 따른 암호화 회로를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시 예에 따른 암호화 회로에 포함된 파이프 라인 암호화 코어를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시 예에 따른 암호화 회로에서 수행되는 암호화 연산을 설명하는 흐름도이다.
도 5는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 6 내지 도 8은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 9는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 10 내지 도 12는 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 13은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시 예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
도 1은 본 발명의 실시 예들에 따른 암호화(Encryption) 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 일 실시 예에서, 컴퓨팅 장치(1000)는 프로세서 장치(1100), 워킹 메모리(Working Memory, 1200), 저장 장치(1300), 유저 인터페이스(User Interface, 1400), 및 버스(Bus, 1500)를 포함할 수 있다.
예를 들어, 컴퓨팅 장치(1000)는 데스크탑(Desktop) 컴퓨터, 랩탑(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 워크스테이션(Workstation), 서버(Server), 디지털 텔레비전, 비디오 게임기(Video Game Console), 스마트 폰, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치들 중 하나일 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다.
프로세서 장치(1100)는 컴퓨팅 장치(1000)의 전반적인 동작들을 제어할 수 있다. 프로세서 장치(1100)는 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리하도록 구성될 수 있다. 이를 위해, 프로세서 장치(1100)는 하나 이상의 프로세서 코어들(1110)을 포함하는 전용 논리 회로(Special-purpose Logic Circuit; 예를 들어, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)로 구현될 수 있다. 예를 들어, 프로세서 장치(1100)는 범용(General-purpose) 프로세서, 전용 프로세서, 및/또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다.
예를 들어, 프로세서 장치(1100)는 프로세서 코어들(1110)을 이용하여, 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있다. 하나 이상의 캐시들(1130)은 명령어 집합의 실행에 의해 생성되는 데이터 또는 명령어 집합을 실행하기 위해 이용될 데이터를 일시적으로 저장할 수 있다.
프로세서 장치(1100)는 암호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로부터 출력되는 데이터를 암호화할 수 있다. 나아가, 프로세서 장치(1100)는 암호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로 입력될 데이터를 복호화할 수 있다.
워킹 메모리(1200)는 컴퓨팅 장치(1000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 예를 들어, 워킹 메모리(1200)는 프로세서 장치(1100)에 의해 처리된 또는 처리될 데이터를 하나 이상의 메모리들(1210)에 저장할 수 있다. 예를 들어, 메모리들(1210)은 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리를 포함할 수 있다. 메모리 컨트롤러(1230)는 메모리들(1210)이 데이터를 저장하거나 저장된 데이터를 출력하도록 메모리들(1210)을 제어할 수 있다.
워킹 메모리(1200)는 암호화 회로(1250)를 이용하여, 메모리들(1210)에 저장될 데이터를 암호화할 수 있다. 나아가, 워킹 메모리(1200)는 암호화 회로(1250)를 이용하여, 메모리들(1210)로부터 출력되는 데이터를 복호화할 수 있다.
저장 장치(1300)는 전력 공급에 관계없이 데이터를 저장할 수 있다. 저장 장치(1300)는 컴퓨팅 장치(1000)를 동작시키기 위해 이용되는 시스템 데이터 및/또는 컴퓨팅 장치(1000)의 사용자를 위한 사용자 데이터를 하나 이상의 비휘발성 메모리들(1310)에 저장할 수 있다. 예를 들어, 비휘발성 메모리들(1310)은 플래시(Flash) 메모리, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 비휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 메모리 컨트롤러(1330)는 비휘발성 메모리들(1310)이 데이터를 저장하거나 저장된 데이터를 출력하도록 비휘발성 메모리들(1310)을 제어할 수 있다. 예를 들어, 저장 장치(1300)는 SSD(Solid State Drive), HDD(Hard Disk Drive), SD(Secure Digital) 카드, MMC(Multimedia Card) 등과 같은 저장 매체를 포함할 수 있다.
저장 장치(1300)는 암호화 회로(1350)를 이용하여, 비휘발성 메모리들(1310)에 저장될 데이터를 암호화할 수 있다. 나아가, 저장 장치(1300)는 암호화 회로(1350)를 이용하여, 비휘발성 메모리들(1310)로부터 출력되는 데이터를 복호화할 수 있다.
유저 인터페이스(1400)는 프로세서 장치(1100)의 제어에 따라, 사용자와 컴퓨팅 장치(1000) 사이의 통신을 중재할 수 있다. 예를 들어, 유저 인터페이스(1400)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등으로부터의 입력을 처리할 수 있다. 나아가, 유저 인터페이스(1400)는 디스플레이 장치, 스피커, 모터 등으로의 출력을 처리할 수 있다.
버스(1500)는 컴퓨팅 장치(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(1000)의 구성 요소들은 버스(1500)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예를 들어, 버스 포맷은 PCIe(Peripheral Component Interconnect Express), NVMe(Nonvolatile Memory Express), SCSI(Small Computer System Interface), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 등과 같은 다양한 통신 규약 중 하나 이상을 포함할 수 있다.
본 개시의 예시적 실시 예에 따른 암호화 회로들(1150, 1250, 1350)은 데이터를 암호화 연산을 통해 암호화 데이터로 변경할 수 있다. 이 때, 암호화 연산은 복수의 라운드 연산들이 순차적으로 수행되는 것을 포함할 수 있다. 예를 들어, 암호화 연산은 초기 암호화 연산 및 제1 내지 제n 라운드 연산을 포함할 수 있고, 선행하는 라운드 연산 결과에 기초하여, 다음 라운드 연산이 수행될 수 있다.
본 개시에 따른 암호화 회로는, 데이터에 대한 실제 라운드 연산에 선행하거나 후행하는 가상 라운드 연산을 추가로 수행함으로써, 실제 라운드 연산이 수행되는 시점을 특정하기 어렵도록 구성할 수 있다. 또한, 데이터에 대한 실제 라운드 연산을 수행할 때, 다른 회로 구성(예를 들어, 다른 라운드 코어)이 가상 라운드 연산을 동시에 수행함으로써, 공격자가 부채널을 통해 수집하는 정보에 노이즈가 포함되도록 구성할 수 있다. 따라서, 암호화 회로의 보안 수준이 향상될 수 있다.
도 1은 암호화 회로들(1150, 1250, 1350)이 데이터 입력/출력 장치들(1100, 1200, 1300)에 포함되는 것을 보여준다. 그러나, 일 실시 예에서, 암호화 회로들(1150, 1250, 1350)은 데이터 입력/출력 장치들(1100, 1200, 1300)과 별개의 암호화 장치로 구현될 수도 있다. 또한, 데이터 입력/출력 장치들(1100, 1200, 1300) 외의 장치들(예를 들어, 1400) 및 버스(1600) 각각 역시 암호화 회로를 포함할 수도 있다. 암호화 회로는 데이터가 입력 또는 출력되는 경로 상이라면 어디든 채용될 수 있다. 암호화 회로들(1150, 1250, 1350)의 예시적인 구성들 및 동작들은 이하의 도면들을 참조하여 후술한다.
도 2는 본 개시의 예시적 실시 예에 따른 암호화 회로를 나타내는 블록도이다. 도 2의 암호화 회로(100)의 블록도는, 예를 들어 도 1의 암호화 회로들(1150, 1250, 1350)에 대한 구체적인 블록도일 수 있다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 2를 참조하면, 암호화 회로(100)는 암호화 컨트롤러(Encryption Controller)(110), 파이프 라인 암호화 코어(Pipelined Encryption Core)(120) 및 버퍼(Buffer)(130)를 포함할 수 있다.
암호화 컨트롤러(110)는 요청(REQ)에 응답하여 암호화 회로(100)의 전반적인 동작을 제어할 수 있다. 암호화 컨트롤러(110)에는 암호화 연산의 수행 및 환경을 지시하는 제어 값이 저장될 수 있다. 상기 제어 값에 기초하여, 암호화 컨트롤러(110)는 파이프 라인 암호화 코어(120) 및 버퍼(130)의 동작들을 제어하기 위하여 각각으로 제어 신호(CON_C, CON_B)를 전송할 수 있다.
암호화 컨트롤러(110)는 제어 신호(CON_C)를 통해 파이프 라인 암호화 코어(120)에 포함된 복수의 라운드 코어들(121)이 가상 암호화 연산을 수행하도록 제어할 수 있다. 일 실시예에서, 암호화 컨트롤러(110)는 외부로부터 입력되는 랜덤 데이터(D_RAN)를 이용하여, 복수의 라운드 코어들(121) 각각이 실제 암호화 연산을 수행하기 전에 가상 암호화 연산을 몇 회 수행할 것인지 또는 실제 암호화 연산을 수행한 후에 가상 암호화 연산을 몇 회 수행할 것인지를 결정할 수 있다. 또는, 암호화 컨트롤러(110)는 복수의 라운드 코어들(121) 중 특정 라운드 코어가 실제 라운드 연산 동작을 수행할 때, 다른 라운드 코어에서는 가상 라운드 연산 동작을 수행하도록 파이프 라인 암호화 코어(120)를 제어할 수 있다. 다만, 본 도면에서는 외부로부터 암호화 컨트롤러(110)가 외부로부터 랜덤 데이터(D_RAN)를 수신하는 것으로 도시하였으나, 본 개시는 이에 한정되지 않으며, 암호화 컨트롤러(110)는 내부에서 랜덤 데이터(D_RAN)를 생성할 수도 있다.
파이프 라인 암호화 코어(120)는 연산이 수행되는 단위의 제1 내지 제k 실제 데이터(PT1~PTk)를 순차적으로 버퍼(130)로부터 수신할 수 있다. 파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 실제 암호화 연산을 통해 제1 내지 제k 암호화 데이터(CT1~CTk)를 출력할 수 있다. 파이프 라인 암호화 코어(120)는 실제 암호화 연산이 수행된 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 버퍼(130)에 업데이트 할 수 있다. 이 때, k는 3이상의 자연수일 수 있으나, 이에 한정되지 않고, 파이프 라인 암호화 코어(120)는 하나 이상의 실제 데이터를 순차적으로 수신할 수 있다.
파이프 라인 암호화 코어(120)는, 예를 들어 실제 암호화 키에 기반하여 제1 내지 제k 실제 데이터(PT1~PTk) 각각의 비트 위치를 섞는 전치(permutation)를 통해 실제 암호화 연산을 수행할 수 있다. 또는, 파이프 라인 암호화 코어(120)는 암호화 키에 기반하여 제1 내지 제k 실제 데이터(PT1~PTk) 각각을 매핑된 다른 데이터로 바꾸는 치환(substitution)을 통해 암호화 연산을 수행할 수도 있다.
파이프 라인 암호화 코어(120)는 버퍼(130)로부터 더미 데이터(VPT) 또는 더미 암호화 키(VRK)를 수신할 수 있다. 파이프 라인 암호화 코어(120)는 더미 데이터(VPT) 또는 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행할 수 있다. 예를 들어, 파이프 라인 암호화 코어(120)는 더미 데이터(VPT) 및 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행하거나, 더미 데이터(VPT) 및 실제 암호화 키를 이용한 가상 암호화 연산을 수행하거나, 실제 데이터(PT1~PT_k) 및 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행할 수 있다.
일 실시 예에서 파이프 라인 암호화 코어(120)는 각각 라운드 연산을 수행하는 복수의 라운드 코어들(121)을 포함할 수 있다. 파이프 라인 암호화 코어(120)에서 수행되는 실제 암호화 연산은 각각의 라운드 코어들(121)에 의한 실제 라운드 연산들을 포함할 수 있다. 또한, 파이프 라인 암호화 코어(120)에서 수행되는 가상 암호화 연산은 각각의 라운드 코어들(121)에 의한 가상 라운드 연산들을 포함할 수 있다. 파이프 라인 암호화 코어(120)에서 수행되는 라운드 연산은, 입력 데이터(D_in) 및 암호화 키의 종류에 따라 실제 라운드 연산 및 가상 라운드 연산 중 하나로 구분될 수 있다.
파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 암호화 연산이 서로 병렬적으로 수행할 수 있다. 예를 들어, 복수의 라운드 코어들(121) 중 적어도 2개는 실제 라운드 연산 및 가상 라운드 연산 중 하나의 라운드 연산을 병렬적으로 수행할 수 있다.
일 실시 예 에서, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 연산을 수행하는 초기 라운드 코어가 초기 실제 라운드 연산을 수행하기 전에 적어도 1회의 초기 가상 라운드 연산을 수행할 수 있다. 또는, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 코어가 초기 실제 라운드 연산을 수행한 후에 적어도 1회의 초기 가상 라운드 연산을 수행할 수 있다. 따라서, 본 개시에 따른 암호화 회로(100)는 공격자가 실제 암호화 연산이 수행되는 시점을 특정하기 어려워짐으로써 암호화 회로의 보안 수준이 향상될 수 있다. 파이프 라인 암호화 코어(120)의 라운드 연산 동작에 대한 자세한 설명은 도 6 등에서 대해서 후술하겠다.
일 실시예에서, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 코어가 초기 실제 라운드 연산을 수행하는 동안, 제1 라운드 코어가 제1 가상 라운드 연산을 수행할 수 있다. 따라서, 실제 암호화 연산과 함께 가상 암호화 연산을 수행함으로써 노이즈를 발생시킬 수 있고, 암호화 회로의 보안 수준이 향상될 수 있다. 파이프 라인 암호화 코어(120)의 라운드 연산 동작에 대한 자세한 설명은 도 10 등에서 대해서 후술하겠다.
버퍼(130)는 외부로부터 제공되는 입력 데이터(D_in)를 일시적으로 저장할 수 있다. 즉, 버퍼(130)는 암호화를 위한 실제 연산이 수행될 데이터를 저장할 수 있다. 이 때, 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_B)에 응답하여, 버퍼(130)는 입력 데이터(D_in)를 암호화 연산이 수행되는 단위로 나누어 파이프 라인 암호화 코어(120)로 제공할 수 있다. 예를 들어, 버퍼(130)는 제1 내지 제k 실제 데이터(PT1~PTk)를 순차적으로 파이프 라인 암호화 코어(120)로 제공할 수 있다.
또한, 버퍼(130)는 외부로부터 제공되는 랜덤 데이터(D_RAN)를 일시적으로 저장할 수 있다. 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_B)에 응답하여, 버퍼(130)에 저장된 랜덤 데이터(D_RAN) 중 적어도 일부를 파이프 라인 암호화 코어(120)로 제공될 수 있다. 예를 들어, 버퍼(130)는 랜덤 데이터(D_RAN) 중 적어도 일부를 가상 라운드 연산을 위한 더미 데이터(VPT)로서 파이프 라인 암호화 코어(120)로 제공할 수 있다. 또는 예를 들어, 버퍼(130)는 가상 라운드 연산을 위한 더미 암호화 키(VRK)로서 파이프 라인 암호화 코어(120)로 제공할 수 있다.
버퍼(130)는 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 파이프 라인 암호화 코어(120)로부터 수신할 수 있다. 버퍼(130)는 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 출력 데이터(D_out)로서 출력할 수 있다. 따라서, 출력 데이터(D_out)는 입력 데이터(D_in)를 암호화한 것일 수 있다.
도 3은 본 개시의 예시적 실시 예에 따른 암호화 회로에 포함된 파이프 라인 암호화 코어를 나타내는 블록도이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 3을 참조하면, 파이프 라인 암호화 코어(120)는 초기 라운드 코어(Initial Round Core)(121_i), 제1 내지 제n 라운드 코어(121_1~121_n), 초기 레지스터(Initial Register)(123_i), 제1 내지 제n 레지스터(123_1~123_n) 및 키 스케쥴러(Key Scheduler)(125)를 포함할 수 있다. 예를 들어, 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n)는 도 2의 복수의 라운드 코어들(121)일 수 있다. 이 때, n은 3이상의 자연수일 수 있으나, 본 개시는 이에 한정되지 않으며, 파이프 라인 암호화 코어(120)에 포함된 라운드 코어의 수는 1이상의 수로 다양하게 구성될 수 있다. 일 실시예에서는, 초기 라운드 코어(121_i)를 포함하지 않고, 제1 내지 제n 라운드 코어(121_1~121_n)만을 포함할 수도 있다.
파이프 라인 암호화 코어(120)에서 수행되는 암호화 연산은 보안 수준을 높이기 위해 복수의 라운드 연산을 포함할 수 있고, 각각의 라운드 연산들은 서로 다른 라운드 코어에 의해 수행될 수 있다. 예를 들어, 초기 라운드 코어(121_i)는 초기 라운드 연산을 수행할 수 있고, 제1 라운드 코어(121_1)는 제1 라운드 연산을 수행할 수 있고, 제n 라운드 코어(121_n)는 제n 라운드 연산을 수행할 수 있다.
각각의 라운드 연산들은 실제 라운드 연산 및 가상 라운드 연산을 포함할 수 있다. 예를 들어, 초기 라운드 연산은 초기 실제 라운드 연산 및 초기 가상 라운드 연산을 포함할 수 있고, 제1 라운드 연산은 제1 실제 라운드 연산 및 제1 가상 라운드 연산을 포함할 수 있고, 제n 라운드 연산은 제n 실제 라운드 연산 및 제n 가상 라운드 연산을 포함할 수 있다.
초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n)는 실제 데이터(예를 들어, PT1~PTk) 및 실제 암호화 키(예를 들어, RK0~RKn)를 이용한 초기 암호화 연산 및 제1 내지 제n 실제 암호화 연산을 수행할 수 있다. 예를 들어, 초기 라운드 코어(121_i)는 제1 내지 제k 실제 데이터(PT1~PTk) 및 초기 실제 암호화 키(RK0)를 이용한 초기 실제 암호화 연산을 수행할 수 있다. 이 때, 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대응되는 초기 실제 암호화 키(RK0)는 서로 다를 수도 있고, 서로 동일할 수도 있다. 상기 초기 라운드 코어(121_i)의 초기 실제 암호화 연산에 대한 설명은 제1 라운드 코어 내지 제n 라운드 코어(121_1~121_n)의 제1 실제 암호화 연산 내지 제n 실제 암호화 연산에도 적용될 수 있다.
초기 라운드 코어(121_i)에는 제1 내지 제k 실제 데이터(PT1~PTk)가 입력될 수 있다. 예를 들어, 제1 실제 데이터(PT1)가 초기 라운드 코어(121_i)로 입력되면, 초기 라운드 코어(121_i)는 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산을 수행할 수 있고, 수행한 결과가 초기 레지스터(123_i)에 저장될 수 있다. 상기 수행한 결과는 다시 제1 라운드 코어(121_1)에 제공될 수 있고, 제1 라운드 코어(121_1)는 제1 실제 데이터(PT1)에 대한 제1 실제 라운드 연산을 수행할 수 있다. 제1 실제 데이터(PT1)에 대한 제1 실제 라운드 연산을 수행한 결과가 제1 레지스터(123_1)에 저장될 수 있다. 즉, 제1 실제 데이터(PT1)는 총 (n+1)회의 실제 라운드 연산을 통해 제1 암호화 데이터(CT1)로 암호화되어 파이프 라인 암호화 코어(120)로부터 출력될 수 있다. 상기 제1 실제 데이터(PT1)에 대한 실제 암호화 연산에 대한 설명은 제2 실제 데이터(PT2) 내지 제k 실제 데이터(PTk)에 대한 실제 암호화 연산에도 적용될 수 있다.
초기 라운드 코어(121_i)에는 제1 내지 제k 실제 데이터(PT1~PTk)가 순차적으로 입력될 수 있다. 파이프 라인 암호화 코어(120)는 순차적으로 입력되는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산을 병렬적으로 수행할 수 있다. 즉, 파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산을 파이프 라인 방식으로 수행할 수 있다. 예를 들어, 제1 라운드 코어(121_1)에서 제1 실제 데이터(PT1)에 대한 제1 라운드 연산을 수행하는 동안, 초기 라운드 코어(121_i)에서는 제2 실제 데이터(PT2)에 대한 초기 라운드 연산을 수행할 수 있다. 제2 라운드 코어(121_2)에서 제1 실제 데이터(PT1)에 대한 제2 라운드 연산을 수행하는 동안, 제1 라운드 코어(121_1)에서는 제2 실제 데이터(PT2)에 대한 제1 라운드 연산을 수행하고, 초기 라운드 코어(121_i)에서는 제3 실제 데이터(PT3)에 대한 라운드 연산을 수행할 수 있다.
초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 각각은 더미 데이터(VPT0~VPTn) 또는 가상 암호화 키(VRK0~VRKn)를 이용한 가상 암호화 연산을 수행할 수 있다. 예를 들어, 초기 라운드 코어(121_i)에는 초기 더미 데이터(VPT0) 및 초기 가상 암호화 키(VRK0) 중 적어도 하나가 제공될 수 있다. 예를 들어, 초기 라운드 코어(121_i)는 초기 더미 데이터(VPT0) 및 초기 가상 암호화 키(VRK0)를 이용한 가상 암호화 연산을 수행하거나, 초기 더미 데이터(VPT0) 및 초기 실제 암호화 키(RK0)를 이용한 가상 암호화 연산을 수행하거나, 실제 데이터(PT1~PT_k) 및 초기 가상 암호화 키(VRK0)를 이용한 가상 암호화 연산을 수행할 수 있다. 상기 초기 라운드 코어(121_i)의 초기 가상 암호화 연산에 대한 설명은 제1 라운드 코어 내지 제n 라운드 코어(121_1~121_n)의 제1 가상 암호화 연산 내지 제n 가상 암호화 연산에도 적용될 수 있다.
일 실시 예에서, 초기 레지스터(123_i)는 실제 초기 레지스터 및 가상 초기 레지스터를 포함할 수 있다. 초기 라운드 코어(121_i)의 초기 가상 라운드 연산에 따른 결과는 초기 가상 레지스터에 저장되어 다음 라운드 코어인 제1 라운드 코어(121_1)에 제공될 수도 있다. 제1 라운드 코어(121_1)는 상기 결과를 수신하여 제1 가상 라운드 연산을 수행할 수도 있다. 또는 일 실시예에서, 초기 라운드 코어(121_i)의 초기 가상 라운드 연산에 따른 결과는 초기 가상 레지스터에 저장되나, 제1 라운드 코어(121_1)에 제공되지 않을 수도 있다. 상기 초기 라운드 코어(121_i)의 초기 가상 라운드 연산에 대한 설명은, 제1 내지 제n-1 라운드 코어(121_1~121_n-1)의 제1 내지 제n-1 가상 라운드 연산에도 적용될 수 있다.
키 스케쥴러(125)는 암호화 컨트롤러(예를 들어, 도 2의 110)의 제어에 응답하여, 암호화 연산에 이용되는 암호화 키들을 관리할 수 있다. 예를 들어, 실제 암호화 연산에 이용되는 실제 암호화 키들(RK0~RKn)을 관리하여, 각각의 실제 라운드 연산에 이용될 실제 암호화 키들(RK0~RKn)을 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n)로 제공할 수 있다. 또한, 키 스케쥴러(125)는 암호화 컨트롤러(110)의 제어에 응답하여, 가상 암호화 연산에 이용되는 가상 암호화 키들(VRK0~VRKn)을 관리할 수 있다. 키 스케쥴러(125)는 암호화 키들(RK0~RKn, VRK0~VRKn)을 저장하기 위한 메모리를 포함하거나, 다른 메모리에 저장된 암호화 키들을 엑세스할 수 있다.
본 도면에서는, 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 각각으로 더미 데이터(예를 들어, VPT0~VPTn)가 제공되는 것으로 도시되었으나, 본 개시는 이에 한정되지 않다. 본 개시에 따른 파이프 라인 암호화 코어(120)는, 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 중 적어도 하나의 라운드 코어에 더미 데이터가 제공될 수 있다. 또한, 본 도면에서는, 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 각각으로 가상 암호화 키(예를 들어, VRK0~VRKn)가 제공되는 것으로 도시되었으나, 본 개시는 이에 한정되지 않고, 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 중 적어도 하나의 라운드 코어에 가상 암호화 키가 제공될 수 있다. 따라서, 본 개시의 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)의 제어에 의해 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 수행하도록 구성될 수 있다.
도 4는 본 개시의 예시적 실시 예에 따른 암호화 회로에서 수행되는 암호화 연산을 설명하는 흐름도로서, 실제 암호화 연산을 설명하기 위한 도면이다. 예를 들어, 도 4는 도 3의 파이프 라인 암호화 코어(120)가 미국 NIST(U.S. National Institute of Standards and Technology)에 의해 수립(Establish)된 AES(Advanced Encryption Standard)에 따라 암호화 연산을 수행하는 것을 설명한다. 그러나, 도 4는 더 나은 이해를 돕기 위해 제공된 것이고, 본 개시는 이에 한정하기 위한 것은 아니다. 암호화 연산은 암호화 컨트롤러(예를 들어, 도 2의 110)의 제어에 따라 파이프 라인 암호화 코어(120)에 의해 수행될 수 있다.
도 3 및 도 4를 참조하면, S110 단계에서, 초기 라운드 코어(121_i)는 "AddRoundKey" 연산을 수행할 수 있다. "AddRoundKey" 연산은 실제 데이터(예를 들어, 제1 내지 제k 실제 데이터(PT1~PTk)) 및 초기 실제 라운드 키(RK0)에 대해 비트 단위의(Bitwise) 조합 논리 연산(예를 들어, 논리 합 연산, 논리 곱 연산, 배타적 논리 합 연산 등)을 수행하는 것을 포함할 수 있다. 따라서, 실제 데이터(PT1~PTk)는 선택된 초기 실제 라운드 키(RK0)에 기초하여 다른 데이터로 변환될 수 있다. 일 실시예에서, "AddRoundKey" 연산은 배타적 논리 합인 XOR 연산으로 구현될 수 있다.
단계 S120 동작에서, 제1 라운드 코어(121_1)는 초기 라운드 코어(121_i)에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S122 동작에서, 제1 라운드 코어(121_1)는 S120 단계에서 치환된 데이터의 스테이트(State)에 대해 "ShiftRows" 연산을 수행할 수 있다. "ShiftRows" 연산에서, 데이터 스테이트의 행(Row)들이 순환 구조로(Cyclic) 시프트(Shift)될 수 있다. S124 동작에서, 제1 라운드 코어(121_1)는 S122 동작에서 시프트된 데이터 스테이트에 대해 "MixColumns" 연산을 수행할 수 있다. "MixColumns" 연산에서, 데이터 스테이트의 열(Column)들이 섞일(Mix) 수 있다.
이후, S126 단계에서, 제1 라운드 코어(121_1)는 S124 단계에서 섞인 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 제1 라운드 코어(121_1)는 변환된 데이터 및 제1 실제 라운드 키(RK1)에 대해 비트 단위의 조합 논리 연산을 수행할 수 있다.
S130 단계에서, 암호화 컨트롤러(예를 들어, 도 2의 110)는 다음 라운드연산이 마지막 라운드 연산인지 여부를 판별할 수 있다. 암호화 컨트롤러(110)는 실제 라운드 연산의 횟수를 관리할 수 있다. 다음 라운드가 마지막 라운드가 아닌 경우, S120 단계가 다시 수행될 수 있다. 예를 들어, S120 단계에서, 제2 라운드 코어(121_2)는 S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. 반면, 다음 실제 라운드 연산이 마지막 라운드 연산인 경우, S140 단계가 수행될 수 있다.
S120 내지 S126 단계들은 하나의 실제 라운드 연산, 즉, 제1 내지 제n-1 실제 라운드 연산 각각을 구성할 수 있다. 키 스케쥴러(125)는 S126 단계의 "AddRoundKey" 연산을 위해 각각의 제1 내지 제n-1 라운드 코어(121_1~121_n-1)마다 상이한 실제 라운드 키(RK1~RKn-1)를 선택할 수 있다.
S140 단계에서, 제n 라운드 코어(121_n)는 S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S142 단계에서, 제n 라운드 코어(121_n)는 S140 단계에서 치환된 데이터의 스테이트에 대해 "ShiftRows" 연산을 수행할 수 있다. S144 단계에서, 제n 라운드 코어(121_n)는 S142 단계에서 시프트된 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 예로서, 마지막 실제 라운드 연산(제n 실제 라운드 연산)이 완료된 후, 암호화 데이터(예를 들어, 제1 내지 제k 암호화 데이터(CT1~CTk))가 출력될 수 있다.
초기 실제 라운드 연산 및 제1 내지 제n 실제 라운드 연산이 순차적으로 수행됨에 따라, 데이터의 값이 점차 변환될 수 있다. S140 내지 S144 단계로 구성되는 마지막 라운드 연산이 완료된 후, 최종적으로 변환된 데이터가 암호화 데이터(CT1~CTk)로 출력되므로, 공격자가 암호화 데이터(CT1~CTk)를 임의로 조작하거나 손상시키는 것이 어려워질 수 있다.
본 도면은, 초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n)의 초기 실제 라운드 연산 및 제1 내지 제n 실제 라운드 연산에 대해서만 도시하고 있으나, 가상 라운드 연산에도 적용될 수 있다. 예를 들어, 초기 라운드 코어(121_i)에는 초기 더미 데이터(VPT0) 및 초기 가상 암호화 키(VRK0) 중 적어도 하나가 제공될 수 있고, 초기 더미 데이터(VPT0) 및 초기 가상 암호화 키(VRK0) 중 적어도 하나를 이용하여 S110 단계를 수행함으로써 초기 가상 라운드 연산을 수행할 수 있다. 또한, 제1 라운드 코어(121_1)에는 제1 더미 데이터(VPT1) 및 제1 가상 암호화 키(VRK1) 중 적어도 하나가 제공될 수 있고, 제1 더미 데이터(VPT1) 및 제1 가상 암호화 키(VRK1) 중 적어도 하나를 이용하여 S120 내지 S126 단계를 수행함으로써 제1 가상 라운드 연산을 수행할 수 있다. 또한, 제n 라운드 코어(121_n)에는 제n 더미 데이터(VPTn) 및 제n 가상 암호화 키(VRKn) 중 적어도 하나가 제공될 수 있고, n 더미 데이터(VPTn) 및 제n 가상 암호화 키(VRKn) 중 적어도 하나를 이용하여 S140 내지 S144 단계를 수행함으로써 제n 가상 라운드 연산을 수행할 수 있다.
도 5는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 2, 도 3 및 도 5를 참조하면, S210 단계에서, 암호화 컨트롤러(110)는 복수의 라운드 코어들(111) 중 가상 라운드 연산을 수행할 라운드 코어를 결정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 공격자의 공격에 취약한 라운드 코어를 가상 라운드 연산을 수행할 라운드 코어로 결정할 수 있다. 예를 들어, 암호화 컨트롤러(110)는 실제 데이터가 입력되는 초기 라운드 코어(121_i) 또는 암호화 데이터가 출력되는 제n 라운드 코어(121_n)를 선택할 수 있다. 초기 라운드 코어(121_i)에 제1 실제 데이터(PT1)가 입력되면, 초기 라운드 코어(121_i)를 제외한 제1 내지 제n 라운드 코어(121_1~121_n)는 실제 라운드 연산을 수행하고 있지 않으므로, 공격자의 부 채널 분석 공격으로부터 취약할 수 있다. 또한, 제n 라운드 코어(121_n)는 복호화 연산 시에 데이터가 처음 입력되게 되므로, 초기 라운드 코어(121_i)와 동일한 이유로 공격자의 부 채널 분석 공격으로부터 취약할 수 있다. 일 실시 예에서, S210 단계에서, 결정된 라운드 코어는 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다.
S220 단계에서, 암호화 컨트롤러(110)는 결정된 라운드 코어에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율을 결정할 수 있다. 일 실시 예에서, 실제 라운드 연산 및 가상 라운드 연산의 횟수를 합하면 2의 지수승이 될 수 있다. 즉, 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 2의 지수승에서 1을 뺀 값일 수 있다. 예를 들어, 암호화 컨트롤러(110)는 실제 라운드 연산이 한번 수행될 때, 가상 라운드 연산은 3번 수행되도록 결정할 수 있다.
S230 단계에서 암호화 컨트롤러(110)는, 결정된 라운드 코어에서 실제 라운드 연산 전/후에 수행될 가상 라운드 연산의 횟수를 결정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 외부로부터 입력되는 랜덤 데이터(D_RAN)를 이용하여, 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 실제 라운드 연산을 수행하기 전과 후에 수행될 가상 라운드 연산의 횟수를 랜덤하게 결정할 수 있다. 예를 들어, 실제 라운드 연산을 기준으로, 선행하는 가상 라운드 연산은 0회, 후행하는 가상 라운드 연산은 3회로 설정되거나, 선행하는 가상 라운드 연산은 1회, 후행하는 가상 라운드 연산은 2회로 설정될 수도 있다. 또는, 예를 들어, 실제 라운드 연산을 기준으로 선행하는 가상 라운드 연산은 2회, 후행하는 가상 라운드 연산은 1회로 설정되거나, 선행하는 가상 라운드 연산은 3회, 후행하는 가상 라운드 연산은 0회로 설정될 수도 있다.
암호화 컨트롤러(110)는 S210 단계 내지 S230 단계에서 결정된 것에 기초하여, 파이프 라인 암호화 코어(120)로 제어 신호(CON_C)를 출력할 수 있다. 파이프 라인 암호화 코어(120)는 수신된 제어 신호에 기초하여, 실제 라운드 연산 및 가상 라운드 연산을 수행할 수 있다.
따라서, 본 개시에 따른 암호화 회로(100)는 실제 라운드 연산 전/또는 후에 적어도 1회의 가상 라운드 연산이 수행되므로, 공격자가 실제 라운드 연산 이 수행되는 시점을 특정하기 어려워질 수 있다. 따라서, 암호화 회로(100)의 보안 수준이 향상될 수 있다.
도 6 내지 도 8은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다. 도 6 내지 도 8은 도 5에 따른 암호화 컨트롤러의 동작에 의한 파이프 라인 암호화 코어의 동작을 설명하기 위한 것이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 6을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 중 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 라운드 코어로서 일부의 라운드 코어가 결정될 수 있다. 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n)가 결정될 수 있다. 다만, 본 개시는 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n)가 가상 라운드 연산을 수행하는 것에 한정되지 않으며, 다른 라운드 코어도 가상 라운드 연산을 수행할 수 있다.
일 실시 예에서, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율이 서로 동일할 수 있다. 이 때, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있다. 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS)으로 구분될 수 있다.
초기 라운드 코어(121_i)에서 실제 데이터(예를 들어, 제1 실제 데이터(PT1~PTk) 중 하나의 실제 데이터)에 대한 하나의 라운드 연산 셋(OPS)이 종료되어야, 다음 라운드 코어인 제1 라운드 코어(121_1)에서 상기 실제 데이터에 대한 제1 실제 라운드 연산을 수행할 수 있다. 초기 라운드 코어(121_i)에서 하나의 라운드 연산 셋(OPS)이 종료되지 않았음에도 초기 실제 라운드 연산이 종료된 후 바로 제1 라운드 코어(121_1)에서 제1 실제 라운드 연산을 수행하게 되면, 공격자가 초기 라운드 코어(121_i)에서의 초기 실제 라운드 연산의 수행 시점을 유추하는 것이 용이해질 수 있다. 따라서, 실제 데이터에 대한 하나의 라운드 연산 셋(OPS)이 종료된 후, 상기 실제 데이터에 대한 제1 실제 라운드 연산을 수행하도록 제1 라운드 코어(121_1)가 구성될 수 있다.
초기 라운드 코어(121_i)가 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 초기 실제 라운드 연산을 수행할 때, 초기 실제 라운드 연산에 선행하는/후행하는 초기 가상 라운드 연산의 횟수는 랜덤할 수 있다. 예를 들어, 하나의 라운드 연산 셋(OPS)에서, 초기 실제 라운드 연산 1회와 초기 가상 라운드 연산 3회가 랜덤적으로 수행될 수 있다. 또한, 제n 라운드 코어(121_n)가 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 제n 실제 라운드 연산을 수행할 때, 제n 실제 라운드 연산 전과 후에 수행하는 제n 가상 라운드 연산의 횟수는 랜덤할 수 있다. 따라서, 공격자는 초기 실제 라운드 연산 및 제n 실제 라운드 연산이 수행되는 시점을 특정하기 어려울 수 있다.
복수의 라운드 코어들(121_i, 121_1~121_n)중 적어도 2개의 라운드 코어들은 동시에 가상 라운드 연산 또는 실제 라운드 연산을 수행하는 구간을 포함할 수 있다. 예를 들어, 초기 라운드 코어(121_i)의 제2 실제 데이터(PT2)에 대한 라운드 연산 셋(OPS) 동작은, 제1 라운드 코어(121_1)의 제1 실제 데이터(PT1)에 대한 제1 실제 라운드 연산과 서로 병렬적으로 수행될 수 있다. 또한, 제n 라운드 코어(121_n)의 제1 실제 데이터(PT1)에 대한 라운드 연산 셋(OPS) 동작은, 제n-1 라운드 코어(121_n-1)의 제2 실제 데이터(PT2)에 대한 제n-1 실제 라운드 연산과 서로 병렬적으로 수행될 수 있다. 따라서, 본 개시에 따른 암호화 회로는 서로 다른 데이터에 대한 암호화 연산이 동시에 수행되므로 공격자가 부 채널 분석 공격하는 것이 어려워질 수 있다.
도 7을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 각각은 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다. 일 실시예에서, 각각의 라운드 코어들(121_i, 121_1~121_n)에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 서로 동일할 수 있다. 예를 들어, 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있다. 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS)으로 구분될 수 있다.
복수의 라운드 코어들(121_i, 121_1~121_n)중 적어도 2개의 라운드 코어들은 동시에 가상 라운드 연산 또는 실제 라운드 연산을 수행하는 구간을 포함할 수 있다. 예를 들어, 초기 라운드 코어(121_i)의 제2 실제 데이터(PT2)에 대한 라운드 연산 셋(OPS) 동작은, 제1 라운드 코어(121_1)의 제1 실제 데이터(PT1)에 대한 라운드 연산 셋(OPS) 동작과 서로 병렬적으로 수행될 수 있다. 또한, 제n 라운드 코어(121_n)의 제1 실제 데이터(PT1)에 대한 라운드 연산 셋(OPS) 동작은, 제n-1 라운드 코어(121_n-1)의 제2 실제 데이터(PT2)에 대한 라운드 연산 셋(OPS) 동작과 서로 병렬적으로 수행될 수 있다.
도 8을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 중 적어도일부의 라운드 코어들은 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다. 예를 들어, 초기 라운드 코어(121_i), 제1 라운드 코어(121_1), 제n-1 라운드 코어(121_n-1) 및 제n 라운드 코어(121_n)는 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다.
일 실시 예에서, 초기 라운드 코어(121_i), 제1 라운드 코어(121_1), 제n-1 라운드 코어(121_n-1) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 서로 동일하지 않을 수 있다. 예를 들어, 암호화 컨트롤러(110)는 공격자의 공격에 취약할 것으로 예상되는 라운드 코어일수록 라운드 연산에 대한 가상 라운드 연산의 비율을 높게 결정할 수도 있다. 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있고, 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPSi, OPSn)으로 구분될 수 있다. 반면, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 1일 수 있고, 1회의 실제 라운드 연산 및 1회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS1, OPSn-1)으로 구분될 수 있다. 하나의 라운드 연산 셋(OPSi, OPS1, OPSn-1, OPSn)에서는 정해진 비율에 기초하여, 실제 라운드 연산과 가상 라운드 연산이 랜덤적으로 수행될 수 있다.
도 9는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 2, 도 3 및 도 9를 참조하면, S310 단계에서, 암호화 컨트롤러(110)는 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어를 결정할 수 있다. 예를 들어, 암호화 컨트롤러(110)는 제1 라운드 코어(121_1)를 가상 라운드 연산을 수행할 라운드 코어로 결정할 수 있다.
S320 단계에서, 암호화 컨트롤러(110)는 S310 단계에서 결정된 라운드 코어가 가상 라운드 연산을 수행하는 가상 연산 구간을 설정할 수 있다. 일 실시예에서, 암호화 컨트롤러(110)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지를 가상 연산 구간으로 설정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 공격자의 부 채널 분석 공격에 취약한 구간을 가상 연산 구간으로 설정할 수 있고, 예를 들어, 하나의 실제 라운드 연산만이 수행되거나 2개의 실제 라운드 연산이 병렬적으로 수행되는 구간을 가상 연산 구간으로 설정할 수 있다.
S330 단계에서, 암호화 컨트롤러(110)는 S310 단계에서 결정된 라운드 코어가 실제 라운드 연산을 수행할 예정인지 확인할 수 있다. 예를 들어, S320 단계에서 설정된 가상 연산 구간 내에서, 제1 라운드 코어(121_1)가 실제 라운드 연산을 수행할 예정인지 확인할 수 있다.
결정된 라운드 코어가 실제 라운드 연산을 수행할 예정이 아닌 경우에는, S340 단계에서, 다른 라운드 코어가 실제 라운드 연산 중일 때, 결정될 라운드 코어가 가상 라운드 연산하도록 제어할 수 있다. 반면, 결정된 라운드 코어가 실제 라운드 연산을 수행할 예정인 경우에는, S350 단계에서, 다른 라운드 코어가 실제 라운드 연산 중일 때 결정된 라운드 코어도 실제 라운드 연산하도록 제어할 수 있다.
S360 단계에서, 암호화 컨트롤러(110)는 가상 연산 구간이 종료되었는지확인할 수 있고, 가상 연산 구간이 종료되지 않았으면, 다시 S330 단계를 수행할 수 있다. 반면, 가상 연산 구간이 종료되었으면 가상 라운드 연산을 수행하지 않고 종료할 수 있다.
본 개시에 따른 암호화 회로(100)는 실제 라운드 연산 중인 라운드 코어 외의 연산을 수행하지 않는 라운드 코어에서 가상 라운드 연산을 수행함으로써, 노이즈를 발생시킬 수 있다. 따라서, 공격자의 부채널 분석 공격이 어려워질 수 있어, 암호화 회로(100)의 보안 수준이 향상될 수 있다.
도 10 내지 도 12는 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다. 도 10 내지 도 12은 도 9에 따른 암호화 컨트롤러의 동작에 의한 파이프 라인 암호화 코어의 동작을 설명하기 위한 것이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 10을 참조하면, 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(121_i, 121_1~121_n) 중 일부의 라운드 코어가 결정될 수 있다. 예를 들어, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1)가 결정될 수 있다. 이 때, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1)가 가상 라운드 연산을 수행할 가상 연산 구간(VOP)은 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지의 구간으로 설정될 수 있다.
복수의 라운드 코어들(121_i, 121_1~121_n) 중 일부인 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1) 각각은 제1 실제 라운드 연산 및 제n-1 실제 라운드 연산을 수행하지 않을 때, 제1 가상 라운드 연산 및 제n-1 가상 라운드 연산을 수행할 수 있다. 본 개시에 따른 암호화 회로는 복수의 라운드 코어들(121_i, 121_1~121_n)중 적어도 2개의 라운드 코어들은 동시에 가상 라운드 연산 또는 실제 라운드 연산을 수행하는 구간을 포함할 수 있다. 따라서, 본 개시에 따른 암호화 회로에서는 실제 라운드 연산과 가상 라운드 연산이 함께 수행되므로, 암호화 연산이 시작된 후 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다. 또한, 제k 실제 데이터(PTk)에 대한 제n 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다.
도 11을 참조하면, 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(121_i, 121_1~121_n)이 결정될 수 있다. 이 때, 복수의 라운드 코어들(121_i, 121_1~121_n)이 가상 라운드 연산을 수행할 가상 연산 구간(VOP)은 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지의 구간일 수 있다.
복수의 라운드 코어들(121_i, 121_1~121_n) 각각은 실제 라운드 연산을 수행하지 않을 때, 가상 라운드 연산을 수행할 수 있다. 따라서, 본 개시에 따른 암호화 회로에서는 실제 라운드 연산과 가상 라운드 연산이 함께 수행되므로, 암호화 연산이 시작된 후 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다.
도 12를 참조하면, 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(121_i, 121_1~121_n) 중 일부의 라운드 코어가 결정될 수 있다. 예를 들어, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1)가 결정될 수 있다.
이 때, 가상 라운드 연산이 수행되는 제1 가상 연산 구간(VOP1)으로서 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산이 수행되고, 제1 실제 데이터(PT1)에 대한 제1 실제 라운드 연산 및 제2 실제 데이터(PT2)에 대한 초기 실제 라운드 연산이 수행되는 구간이 설정될 수 있다. 또한, 가상 라운드 연산이 수행되는 제2 가상 연산 구간(VOP2)으로서 제k-1 실제 데이터(PTk-1)에 대한 제n 실제 라운드 연산 및 제k 실제 데이터(PTk)에 대한 제n-1 실제 라운드 연산 이 수행되고, 제k 실제 데이터(PTk)에 대한 제n 실제 라운드 연산이 수행되는 구간이 설정될 수 있다.
상기 제1 가상 연산 구간(VOP1) 및 상기 제2 가상 연산 구간(VOP2)에서 가상 라운드 연산이 수행되지 않을 경우에는, 하나 또는 2개의 실제 라운드 연산만이 수행되므로 공격에 취약해질 수 있다. 따라서, 상대적으로 공격에 취약한 구간을 가상 연산 구간으로 설정하여, 가상 라운드 연산을 추가 수행함으로써 공격에 대비할 수 있다. 제1 가상 연산 구간(VOP1) 및 제2 가상 연산 구간(VOP2)이 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 수행되는 전체 구간이 아닌 일부 구간으로 설정됨으로써, 공격자의 공격으로부터 취약할 것으로 판단되는 구간에서 노이즈를 발생시키는 동시에, 전력 소모를 감소시킬 수 있다.
도 13은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다. 도 13은 도 5 및 도 9에 따른 암호화 컨트롤러의 동작에 의한 파이프 라인 암호화 코어의 동작을 설명하기 위한 것이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.
도 13을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 중 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 라운드 코어로서 일부의 라운드 코어가 결정될 수 있고, 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n)가 결정될 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 복수의 라운드 코어들(121_i, 121_1~121_n)이 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 라운드 코어로 결정될 수도 있다.
일 실시 예에서, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율이 서로 동일할 수 있다. 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있고, 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS)으로 구분될 수 있다. 일 실시 예에서, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율이 서로 상이할 수도 있다.
초기 라운드 코어(121_i)가 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 초기 실제 라운드 연산을 수행할 때, 초기 실제 라운드 연산 전과 후에 수행하는 초기 가상 라운드 연산의 횟수는 랜덤할 수 있다. 즉, 하나의 라운드 연산 셋(OPS)에서, 초기 실제 라운드 연산 1회와 초기 가상 라운드 연산 3회가 랜덤하게 수행될 수 있다. 또한, 하나의 라운드 연산 셋(OPS)에서, 제n 실제 라운드 연산 1회와 제n 가상 라운드 연산 3회가 랜덤하게 수행될 수 있다. 따라서, 공격자는 초기 실제 라운드 연산 및 제n 실제 라운드 연산이 수행되는 시점을 특정하기 어려울 수 있다.
다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(121_i, 121_1~121_n) 중 적어도 일부의 라운드 코어가 결정될 수 있다. 예를 들어, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1)가 결정될 수 있다. 이 때, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1)가 가상 라운드 연산을 수행할 가상 연산 구간(VOP)은 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지의 구간 중 적어도 일부 구간일 수 있으며, 예를 들어, 가상 연산 구간(VOP)은 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 수행되는 전체 구간일 수 있다.
복수의 라운드 코어들(121_i, 121_1~121_n) 중 일부인 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1) 각각은 제1 실제 라운드 연산 및 제n-1 실제 라운드 연산을 수행하지 않을 때, 제1 가상 라운드 연산 및 제n-1 가상 라운드 연산을 수행할 수 있다. 따라서, 본 개시에 따른 암호화 회로에서는 실제 라운드 연산과 가상 라운드 연산이 함께 수행되므로, 암호화 연산이 시작된 후 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다. 또한, 제k 실제 데이터(PTk)에 대한 제n 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다.
상기한 실시 예의 설명은 본 개시의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 개시를 한정하는 의미로 해석되어서는 안될 것이다. 또한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 개시의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다.
100: 암호화 회로
110: 암호화 컨트롤러
120: 파이프 라인 암호화 코어
130: 버퍼
110: 암호화 컨트롤러
120: 파이프 라인 암호화 코어
130: 버퍼
Claims (20)
- 순차적으로 입력되는 입력 데이터 각각에 대한 실제 라운드 연산을 수행하는 복수의 라운드 코어들을 포함하고, 상기 실제 라운드 연산을 이용한 암호화 연산을 통해 암호화 데이터를 출력하는 파이프 라인 암호화 코어; 및
상기 복수의 라운드 코어들 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 추가로 수행하도록 제어하는 암호화 컨트롤러;를 포함하고,
상기 암호화 컨트롤러는,
상기 적어도 하나의 라운드 코어의 상기 가상 라운드 연산이, 복수의 라운드 코어들 중 적어도 다른 하나의 라운드 코어의 상기 실제 라운드 연산과 서로 병렬하게 수행되도록 제어하고,
상기 적어도 다른 하나의 라운드 코어에 의해 수행되는 상기 실제 라운드 연산은, 상기 가상 라운드 연산을 수행하는 라운드 코어에 의해 이전에 암호화된 입력 데이터를 더 암호화하고,
상기 가상 라운드 연산이 수행됨에 따라, 상기 실제 라운드 연산이 수행되는 제1 시간 구간의 배수인 제2 시간 구간의 적어도 일부 동안 상기 가상 라운드 연산에 따른 결과 데이터가 생성되는 것을 특징으로 하는 암호화 회로. - 제1 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 상기 적어도 하나의 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하고,
상기 결정된 라운드 코어에서 수행될 상기 실제 라운드 연산에 대한 상기 가상 라운드 연산의 비율을 결정하고,
상기 비율에 기초하여, 상기 결정된 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로. - 제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 비율에 기초하여, 상기 실제 라운드 연산에 선행하여 수행될 상기 가상 라운드 연산의 횟수 및 상기 실제 라운드 연산에 후행하여 수행될 상기 가상 라운드 연산의 횟수를 랜덤하게 결정하고,
상기 결정된 횟수에 기초하여, 상기 결정된 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로. - 제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 입력 데이터가 처음 입력되는 초기 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로. - 제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 암호화 데이터가 출력되는 마지막 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로. - 제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들을 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로. - 제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 가상 라운드 연산을 수행할 라운드 코어로서 서로 다른 라운드 코어들을 결정하고,
상기 서로 다른 라운드 코어들 각각에서 수행되는 상기 실제 라운드 연산에 대한 상기 가상 라운드 연산의 비율이 서로 상이한 것을 특징으로 하는 암호화 회로. - 제1 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 다른 라운드 코어가 실제 라운드 연산을 수행할 때 상기 가상 라운드 연산을 수행할 라운드 코어를 결정하고,
상기 결정된 라운드 코어가 상기 가상 라운드 연산을 수행할 가상 연산 구간을 설정하고,
상기 가상 연산 구간 동안 상기 결정된 라운드 코어가 상기 가상 라운드 연산을 추가로 수행하도록 제어하는 것을 특징으로 하는 암호화 회로. - 제8 항에 있어서,
상기 암호화 컨트롤러는,
상기 파이프 라인 암호화 코어가 상기 암호화 연산을 수행하는 구간을 상기 가상 연산 구간으로 설정하는 것을 특징으로 하는 암호화 회로. - 제8 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 입력 데이터가 처음 입력되는 초기 라운드 코어가 상기 입력 데이터 중 처음으로 입력되는 데이터에 대한 동작을 수행하는 구간을 포함하도록 상기 가상 연산 구간을 설정하는 것을 특징으로 하는 암호화 회로. - 제8 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 암호화 데이터가 출력되는 마지막 라운드 코어가 상기 입력 데이터 중 마지막으로 입력되는 데이터에 대한 동작을 수행하는 구간을 포함하도록 상기 가상 연산 구간을 설정하는 것을 특징으로 하는 암호화 회로. - 제1 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 연속적으로 수행할 제1 라운드 코어를 결정하고,
상기 복수의 라운드 코어들 중에서 다른 라운드 코어가 실제 라운드 연산을 수행할 때 상기 가상 라운드 연산을 수행할 제2 라운드 코어를 결정하고,
상기 제1 라운드 코어 및 상기 제2 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로. - 입력 데이터에 대한 제1 실제 라운드 연산을 수행하는 제1 라운드 코어;
상기 제1 실제 라운드 연산 결과에 기초하여, 상기 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어; 및
상기 제1 라운드 코어 및 상기 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고,
상기 제1 라운드 코어는, 더미 데이터 및 상기 키 스케쥴러로부터 제공되는 제1 가상 라운드 키 중 하나에 기초하여 제1 가상 라운드 연산을 더 수행하고,
상기 제1 라운드 코어의 상기 제1 가상 라운드 연산은 상기 제2 실제 라운드 연산과 서로 병렬적으로 수행되고,
상기 제2 라운드 코어는, 상기 키 스케쥴러로부터 제공되는 제2 가상 라운드 키 및 더미 데이터 중 하나에 기초하여, 제2 가상 라운드 연산을 더 수행하고,
상기 제1 실제 라운드 연산에 대한 상기 제1 가상 라운드 연산의 비율은 제1 값을 가지고, 상기 제2 실제 라운드 연산에 대한 상기 제2 가상 라운드 연산의 비율은 제2 값을 가지고, 상기 제1 값 및 상기 제2 값은 서로 상이한 것을 특징으로 하는 암호화 회로. - 삭제
- 삭제
- 삭제
- 제13 항에 있어서,
상기 제1 라운드 코어는, 상기 제1 실제 라운드 연산을 수행이 완료된 후, 상기 제2 실제 라운드 연산이 수행되는 동안 상기 제1 가상 라운드 연산을 수행하는 것을 특징으로 하는 암호화 회로. - 입력 데이터에 대한 제1 실제 라운드 연산을 수행하는 제1 라운드 코어;
상기 제1 실제 라운드 연산 결과에 기초하여, 상기 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어; 및
상기 제1 라운드 코어 및 상기 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고,
상기 제1 라운드 코어는, 더미 데이터 및 상기 키 스케쥴러로부터 제공되는 제1 가상 라운트 키 중 하나에 기초하여, 제1 가상 라운드 연산을 더 수행하고,
상기 제2 라운드 코어는, 더미 데이터 및 상기 키 스케쥴러로부터 제공되는 제2 가상 라운드 키 중 하나에 기초하여 제2 가상 라운드 연산을 더 수행하고,
상기 제1 라운드 코어의 상기 제1 실제 라운드 연산은 상기 제2 라운드 코어의 상기 제2 가상 라운드 연산과 서로 병렬적으로 수행되고,
상기 제1 실제 라운드 연산에 대한 상기 제1 가상 라운드 연산의 비율은 제1 값을 가지고, 상기 제2 실제 라운드 연산에 대한 상기 제2 가상 라운드 연산의 비율은 제2 값을 가지고, 상기 제1 값 및 상기 제2 값은 서로 동일한 것을 특징으로 하는 암호화 회로. - 제18 항에 있어서,
상기 제2 라운드 코어는 지정된 가상 연산 구간 내에서 상기 제2 가상 라운드 연산을 수행하는 것을 특징으로 하는 암호화 회로. - 제18 항에 있어서,
상기 제2 라운드 코어는, 상기 제2 실제 라운드 연산을 수행하기 전, 상기 제1 실제 라운드 연산이 수행되는 동안 상기 제2 가상 라운드 연산을 수행하는 것을 특징으로 하는 암호화 회로.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180119306A KR102628010B1 (ko) | 2018-10-05 | 2018-10-05 | 가상 암호화 연산을 수행하는 암호화 회로 |
DE102019119831.3A DE102019119831A1 (de) | 2018-10-05 | 2019-07-23 | Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen |
CN201910670045.2A CN111008407A (zh) | 2018-10-05 | 2019-07-23 | 用于执行虚拟加密操作的加密电路 |
US16/521,937 US11328097B2 (en) | 2018-10-05 | 2019-07-25 | Encryption circuit for performing virtual encryption operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180119306A KR102628010B1 (ko) | 2018-10-05 | 2018-10-05 | 가상 암호화 연산을 수행하는 암호화 회로 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200039405A KR20200039405A (ko) | 2020-04-16 |
KR102628010B1 true KR102628010B1 (ko) | 2024-01-22 |
Family
ID=69886693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180119306A KR102628010B1 (ko) | 2018-10-05 | 2018-10-05 | 가상 암호화 연산을 수행하는 암호화 회로 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11328097B2 (ko) |
KR (1) | KR102628010B1 (ko) |
CN (1) | CN111008407A (ko) |
DE (1) | DE102019119831A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11177933B2 (en) * | 2019-03-24 | 2021-11-16 | Google Llc | Side channel timing attack mitigation in securing data in transit |
JP7486150B2 (ja) * | 2020-01-29 | 2024-05-17 | 国立研究開発法人情報通信研究機構 | 秘密鍵共有システム及び秘密鍵共有方法 |
IT202000013390A1 (it) * | 2020-06-05 | 2021-12-05 | Milano Politecnico | Una piattaforma informatica per prevenire attacchi ai canali laterali |
US11599679B2 (en) * | 2020-06-23 | 2023-03-07 | Arm Limited | Electromagnetic and power noise injection for hardware operation concealment |
WO2022204898A1 (en) * | 2021-03-29 | 2022-10-06 | Nvidia Corporation | Comprehensively obfuscated cryptographic accelerators and operations thereof |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007195132A (ja) | 2005-12-20 | 2007-08-02 | Sony Corp | 暗号処理装置 |
US20100318811A1 (en) * | 2009-06-15 | 2010-12-16 | Kabushiki Kaisha Toshiba | Cryptographic processor |
US20160127123A1 (en) * | 2014-10-31 | 2016-05-05 | Combined Conditional Access Development And Support, Llc | Systems And Methods For Dynamic Data Masking |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10000503A1 (de) * | 2000-01-08 | 2001-07-12 | Philips Corp Intellectual Pty | Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb |
US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US8060755B2 (en) * | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US8879727B2 (en) | 2007-08-31 | 2014-11-04 | Ip Reservoir, Llc | Method and apparatus for hardware-accelerated encryption/decryption |
US8538015B2 (en) | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US9317286B2 (en) | 2009-03-31 | 2016-04-19 | Oracle America, Inc. | Apparatus and method for implementing instruction support for the camellia cipher algorithm |
US9141831B2 (en) * | 2010-07-08 | 2015-09-22 | Texas Instruments Incorporated | Scheduler, security context cache, packet processor, and authentication, encryption modules |
US9294266B2 (en) | 2013-06-27 | 2016-03-22 | Qualcomm Incorporated | Method and apparatus to encrypt plaintext data |
US9614666B2 (en) | 2014-12-23 | 2017-04-04 | Intel Corporation | Encryption interface |
US10234930B2 (en) * | 2015-02-13 | 2019-03-19 | Intel Corporation | Performing power management in a multicore processor |
US10103873B2 (en) | 2016-04-01 | 2018-10-16 | Intel Corporation | Power side-channel attack resistant advanced encryption standard accelerator processor |
KR102401088B1 (ko) | 2017-08-02 | 2022-05-24 | 삼성전자주식회사 | 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법 |
US20190116022A1 (en) | 2017-10-16 | 2019-04-18 | Samsung Electronics Co., Ltd. | Encryption device and operation method thereof |
FR3078463A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et dispositif de realisation d'operations en table de substitution |
-
2018
- 2018-10-05 KR KR1020180119306A patent/KR102628010B1/ko active IP Right Grant
-
2019
- 2019-07-23 DE DE102019119831.3A patent/DE102019119831A1/de active Pending
- 2019-07-23 CN CN201910670045.2A patent/CN111008407A/zh active Pending
- 2019-07-25 US US16/521,937 patent/US11328097B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007195132A (ja) | 2005-12-20 | 2007-08-02 | Sony Corp | 暗号処理装置 |
US20100318811A1 (en) * | 2009-06-15 | 2010-12-16 | Kabushiki Kaisha Toshiba | Cryptographic processor |
US20160127123A1 (en) * | 2014-10-31 | 2016-05-05 | Combined Conditional Access Development And Support, Llc | Systems And Methods For Dynamic Data Masking |
Also Published As
Publication number | Publication date |
---|---|
KR20200039405A (ko) | 2020-04-16 |
US20200110906A1 (en) | 2020-04-09 |
US11328097B2 (en) | 2022-05-10 |
DE102019119831A1 (de) | 2020-04-09 |
CN111008407A (zh) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102628010B1 (ko) | 가상 암호화 연산을 수행하는 암호화 회로 | |
US8666064B2 (en) | Endecryptor capable of performing parallel processing and encryption/decryption method thereof | |
US11856116B2 (en) | Method and apparatus for protecting embedded software | |
KR102113937B1 (ko) | 메모리 무결성 | |
US20180205535A1 (en) | Endecryptor preventing side channel attack, driving method thereof and control device having the same | |
US8036379B2 (en) | Cryptographic processing | |
US20210284703A1 (en) | Encryption device and operation method thereof | |
US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
GB2531885A (en) | Address-dependent key generator by XOR tree | |
CN107437988B (zh) | 防止侧信道分析攻击的电子电路及包括该电路的电子设备 | |
CN106933510B (zh) | 一种存储控制器 | |
US9571281B2 (en) | CRT-RSA encryption method and apparatus | |
EP3200173B1 (en) | Method of protecting electronic circuit against eavesdropping by power analysis and electronic circuit using the same | |
US11755287B2 (en) | Random number generator | |
KR20180059217A (ko) | 메모리 데이터 보안 처리 장치 및 방법 | |
KR102627585B1 (ko) | 부 채널 분석 공격을 방지하기 위한 암호화/복호화 연산을 수행하는 전자 회로 및 그것을 포함하는 전자 장치 | |
KR102559583B1 (ko) | 암호화 장치 및 이의 동작 방법 | |
EP3975470A1 (en) | Method for securing an execution of an algorithm of a cryptographic process | |
CN117390642B (zh) | 一种数据加解密方法、装置、设备和计算机可读存储介质 | |
WO2023158500A1 (en) | Secure pseudo-random number generator (prng) reseeding | |
KR20240108446A (ko) | 희소 인코딩된 신호를 위한 보안 멀티 레일 제어 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |