KR102628010B1 - Encryption circuit for virtual encryption operation - Google Patents
Encryption circuit for virtual encryption operation 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
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
Abstract
가상 암호화 연산을 수행하는 암호화 회로가 개시된다. 본 개시의 실시 예에 따른 암호화 회로는, 순차적으로 입력되는 입력 데이터 각각에 대한 실제 라운드 연산을 수행하는 복수의 라운드 코어들을 포함하고, 실제 라운드 연산을 이용한 암호화 연산을 통해 암호화 데이터를 출력하는 파이프 라인 암호화 코어, 및 복수의 라운드 코어들 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 추가로 수행하도록 제어하는 암호화 컨트롤러를 포함하고, 암호화 컨트롤러는 적어도 하나의 라운드 코어의 가상 라운드 연산이 복수의 라운드 코어들 중 적어도 다른 하나의 라운드 코어의 실제 라운드 연산과 병렬하게 수행될 수 있다.An encryption circuit that performs a virtual encryption operation is disclosed. An encryption circuit according to an embodiment of the present disclosure includes a plurality of round cores that perform an actual round operation on each sequentially input input data, and a pipeline that outputs encrypted data through an encryption operation using the actual round operation. An encryption core, and an encryption controller that controls at least one round core among the plurality of round cores to additionally perform a virtual round operation, wherein the encryption controller controls the virtual round operation of the at least one round core to be performed on the plurality of round cores. It may be performed in parallel with the actual round operation of at least one other round core.
Description
본 개시의 기술적 사상은 암호화(Encrypyion) 연산을 수행하는 암호화 회로 및 이의 동작 방법에 관한 것으로서, 상세하게는 가상 연산을 수행하는 암호화 회로 및 이의 동작 방법에 관한 것이다.The technical idea of the present disclosure relates to an encryption circuit that performs an encryption operation and a method of operating the same, and more specifically, to an encryption circuit that performs a virtual operation and a method of operating the same.
스마트 카드 및 IC(integrated circuit) 카드는 사용자에 관한 보안 정보를 포함한다. 사용자의 보안 정보가 해킹 등에 의해 유출되는 것을 방지하기 위하여, 서명이나 인증 절차를 밟아 전송되는 보안 정보를 암호문으로 만들어서 전송하는 암호화 회로가 요구된다.Smart cards and integrated circuit (IC) cards contain secure information about users. In order to prevent the user's security information from being leaked by hacking, etc., an encryption circuit is required to convert the security information transmitted through a signature or authentication process into ciphertext and transmit it.
공격자는 입력 또는 출력되는 데이터를 직접 조작하는 대신, "부 채널 분석 공격(Side-channel Analysis Attack)"을 행할(Conduct) 수 있다. 부채널 분석 공격에서, 공격자는 암호화 회로에 의해 소모되는 전력의 양, 암호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화 회로에서 이용되는 키를 알아내기 위해 암호화 회로를 공격할 수 있다. 따라서, 부채널 분석 공격 방지 기법으로는 부채널을 통해 수집하는 정보인 전력, 전자기파(Electromagnetic wave)를 랜덤하게 나타나도록 하거나 균일하게 나타나게 하는 방법이 사용될 수 있다.Instead of directly manipulating input or output data, an attacker can conduct a "Side-channel Analysis Attack." In a side-channel analysis attack, an attacker can collect secondary information such as the amount of power consumed by the encryption circuit, the waveform of the electromagnetic waves generated by the encryption circuit, etc. An attacker can attack the encryption circuit to find out the key used in the encryption circuit based on the collected information. Therefore, as a technique to prevent side channel analysis attacks, a method of making power and electromagnetic waves, which are information collected through a side channel, appear randomly or appear uniformly can be used.
본 개시의 기술적 사상은 암호화 회로 및 이의 동작 방법에 관한 것으로서, 데이터에 대한 실제 연산과 가상 연산을 수행하는 암호화 회로 및 이의 동작 방법을 제공한다.The technical idea of the present disclosure relates to an encryption circuit and a method of operating the same, and provides an encryption circuit and a method of operating the same that perform real and virtual operations on data.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따라 암호화 회로는, 순차적으로 입력되는 입력 데이터 각각에 대한 실제 라운드 연산을 수행하는 복수의 라운드 코어들을 포함하고, 실제 라운드 연산을 이용한 암호화 연산을 통해 암호화 데이터를 출력하는 파이프 라인 암호화 코어, 및 복수의 라운드 코어들 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 추가로 수행하도록 제어하는 암호화 컨트롤러를 포함하고, 암호화 컨트롤러는 적어도 하나의 라운드 코어의 가상 라운드 연산이 복수의 라운드 코어들 중 적어도 다른 하나의 라운드 코어의 실제 라운드 연산과 병렬하게 수행될 수 있다.In order to achieve the above object, according to one aspect of the technical idea of the present disclosure, an encryption circuit includes a plurality of round cores that perform an actual round operation on each sequentially input input data, and performs an actual round operation. A pipeline encryption core that outputs encryption data through an encryption operation using a pipeline encryption core, and an encryption controller that controls at least one round core among the plurality of round cores to additionally perform a virtual round operation, and the encryption controller includes at least one The virtual round operation of the round core may be performed in parallel with the actual round operation of at least one other round core among the plurality of round cores.
본 개시의 기술적 사상의 다른 일 측면에 따른 암호화 회로는, 입력 데이터에 대한 제1 실제 라운드 연산을 수행하는 제1 라운드 코어, 제1 실제 라운드 연산 결과에 기초하여, 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어, 및 제1 라운드 코어 및 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고, 제1 라운드 코어는 더미 데이터 및 키 스케쥴러로부터 제공되는 제1 가상 라운드 키 중 하나에 기초하여 제1 가상 라운드 연산을 더 수행하고, 제1 라운드 코어의 제1 가상 라운드 연산은 제2 실제 라운드 연산과 서로 병렬적으로 수행될 수 있다.An encryption circuit according to another aspect of the technical idea of the present disclosure includes a first round core that performs a first real round operation on input data, and based on the result of the first real round operation, a second real round operation on input data. It includes a second round core that performs an operation, and a key scheduler that provides round keys to the first round core and the second round core, respectively, wherein the first round core provides dummy data and a first virtual round key provided from the key scheduler. The first virtual round operation may be further performed based on one of the first round cores, and the first virtual round operation of the first round core may be performed in parallel with the second real round operation.
본 개시의 기술적 사상의 또 다른 일 측면에 따라 암호화 회로는, 입력 데이터에 대한 제1 실제 라운드 연산을 수행하는 제1 라운드 코어, 제1 실제 라운드 연산 결과에 기초하여, 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어, 및 제1 라운드 코어 및 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고, 제2 라운드 코어는 더미 데이터 및 키 스케쥴러로부터 제공되는 가상 라운드 키 중 하나에 기초하여 가상 라운드 연산을 더 수행하고 제1 실제 라운드 연산은 제2 라운드 코어의 가상 라운드 연산과 서로 병렬적으로 수행될 수 있다.According to another aspect of the technical idea of the present disclosure, the encryption circuit includes a first round core that performs a first real round operation on input data, based on the result of the first real round operation, a second real round core on the input data. It includes a second round core that performs a round operation, and a key scheduler that provides round keys to the first round core and the second round core, respectively, and the second round core includes dummy data and a virtual round key provided from the key scheduler. A virtual round operation may be further performed based on one, and the first real round operation may be performed in parallel with the virtual round operation of the second round core.
본 개시의 기술적 사상에 따른 암호화 회로 및 이의 동작 방법에 따르면, 공격자가 실제 암호화 연산이 수행되는 시점을 특정하기 어려워짐으로써 암호화 회로의 보안 수준이 향상될 수 있다. According to the encryption circuit and its operating method according to the technical idea of the present disclosure, the security level of the encryption circuit can be improved by making it difficult for an attacker to specify the point in time when the actual encryption operation is performed.
또한, 가상 암호화 연산을 수행함에 따라 발생되는 노이즈로 인하여, 공격자가 부채널을 통해 수집하는 정보로부터 암호화 회로에서 이용되는 암호화 키를 알아내는 것이 어려워질 수 있고, 암호화 회로의 보안 수준이 향상될 수 있다.In addition, due to the noise generated when performing virtual encryption operations, it may become difficult for an attacker to determine the encryption key used in the encryption circuit from the information collected through the side channel, and the security level of the encryption circuit may be improved. there is.
또한, 서로 다른 데이터에 대한 실제 연산 동작을 중첩적으로 수행함으로써, 암호화 동작에 걸리는 시간이 감소되고, 동시에 보안 수준이 향상될 수 있다.Additionally, by overlapping actual calculation operations on different data, the time required for the encryption operation can be reduced and the security level can be improved at the same time.
도 1은 본 개시의 예시적 실시 예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시 예에 따른 암호화 회로를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시 예에 따른 암호화 회로에 포함된 파이프 라인 암호화 코어를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시 예에 따른 암호화 회로에서 수행되는 암호화 연산을 설명하는 흐름도이다.
도 5는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 6 내지 도 8은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 9는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 10 내지 도 12는 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.
도 13은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다.1 is a block diagram showing a computing device according to an example embodiment of the present disclosure.
Figure 2 is a block diagram showing an encryption circuit according to an exemplary embodiment of the present disclosure.
Figure 3 is a block diagram showing a pipeline encryption core included in an encryption circuit according to an exemplary embodiment of the present disclosure.
Figure 4 is a flowchart illustrating an encryption operation performed in an encryption circuit according to an exemplary embodiment of the present disclosure.
Figure 5 is a flowchart for explaining the operation of an encryption controller of an encryption circuit according to an exemplary embodiment of the present disclosure.
6 to 8 are timing diagrams for explaining the operation of an encryption circuit according to an exemplary embodiment of the present disclosure.
9 is a flowchart for explaining the operation of an encryption controller of an encryption circuit according to an exemplary embodiment of the present disclosure.
10 to 12 are timing diagrams for explaining the operation of an encryption circuit according to an exemplary embodiment of the present disclosure.
13 is a timing diagram for explaining the operation of an encryption circuit according to an exemplary embodiment of the present disclosure.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the attached drawings.
도 1은 본 개시의 예시적 실시 예에 따른 컴퓨팅 장치를 나타내는 블록도이다.1 is a block diagram showing a computing device according to an example embodiment of the present disclosure.
도 1은 본 발명의 실시 예들에 따른 암호화(Encryption) 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 일 실시 예에서, 컴퓨팅 장치(1000)는 프로세서 장치(1100), 워킹 메모리(Working Memory, 1200), 저장 장치(1300), 유저 인터페이스(User Interface, 1400), 및 버스(Bus, 1500)를 포함할 수 있다. 1 is a block diagram showing a computing device including electronic devices employing encryption circuits according to embodiments of the present invention. In one embodiment, the
예를 들어, 컴퓨팅 장치(1000)는 데스크탑(Desktop) 컴퓨터, 랩탑(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 워크스테이션(Workstation), 서버(Server), 디지털 텔레비전, 비디오 게임기(Video Game Console), 스마트 폰, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치들 중 하나일 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다. For example, the
프로세서 장치(1100)는 컴퓨팅 장치(1000)의 전반적인 동작들을 제어할 수 있다. 프로세서 장치(1100)는 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리하도록 구성될 수 있다. 이를 위해, 프로세서 장치(1100)는 하나 이상의 프로세서 코어들(1110)을 포함하는 전용 논리 회로(Special-purpose Logic Circuit; 예를 들어, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)로 구현될 수 있다. 예를 들어, 프로세서 장치(1100)는 범용(General-purpose) 프로세서, 전용 프로세서, 및/또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. The
예를 들어, 프로세서 장치(1100)는 프로세서 코어들(1110)을 이용하여, 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있다. 하나 이상의 캐시들(1130)은 명령어 집합의 실행에 의해 생성되는 데이터 또는 명령어 집합을 실행하기 위해 이용될 데이터를 일시적으로 저장할 수 있다.For example, the
프로세서 장치(1100)는 암호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로부터 출력되는 데이터를 암호화할 수 있다. 나아가, 프로세서 장치(1100)는 암호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로 입력될 데이터를 복호화할 수 있다. The
워킹 메모리(1200)는 컴퓨팅 장치(1000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 예를 들어, 워킹 메모리(1200)는 프로세서 장치(1100)에 의해 처리된 또는 처리될 데이터를 하나 이상의 메모리들(1210)에 저장할 수 있다. 예를 들어, 메모리들(1210)은 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리를 포함할 수 있다. 메모리 컨트롤러(1230)는 메모리들(1210)이 데이터를 저장하거나 저장된 데이터를 출력하도록 메모리들(1210)을 제어할 수 있다.The
워킹 메모리(1200)는 암호화 회로(1250)를 이용하여, 메모리들(1210)에 저장될 데이터를 암호화할 수 있다. 나아가, 워킹 메모리(1200)는 암호화 회로(1250)를 이용하여, 메모리들(1210)로부터 출력되는 데이터를 복호화할 수 있다. The
저장 장치(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) 등과 같은 저장 매체를 포함할 수 있다. The
저장 장치(1300)는 암호화 회로(1350)를 이용하여, 비휘발성 메모리들(1310)에 저장될 데이터를 암호화할 수 있다. 나아가, 저장 장치(1300)는 암호화 회로(1350)를 이용하여, 비휘발성 메모리들(1310)로부터 출력되는 데이터를 복호화할 수 있다. The
유저 인터페이스(1400)는 프로세서 장치(1100)의 제어에 따라, 사용자와 컴퓨팅 장치(1000) 사이의 통신을 중재할 수 있다. 예를 들어, 유저 인터페이스(1400)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등으로부터의 입력을 처리할 수 있다. 나아가, 유저 인터페이스(1400)는 디스플레이 장치, 스피커, 모터 등으로의 출력을 처리할 수 있다.The
버스(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 라운드 연산을 포함할 수 있고, 선행하는 라운드 연산 결과에 기초하여, 다음 라운드 연산이 수행될 수 있다. The
본 개시에 따른 암호화 회로는, 데이터에 대한 실제 라운드 연산에 선행하거나 후행하는 가상 라운드 연산을 추가로 수행함으로써, 실제 라운드 연산이 수행되는 시점을 특정하기 어렵도록 구성할 수 있다. 또한, 데이터에 대한 실제 라운드 연산을 수행할 때, 다른 회로 구성(예를 들어, 다른 라운드 코어)이 가상 라운드 연산을 동시에 수행함으로써, 공격자가 부채널을 통해 수집하는 정보에 노이즈가 포함되도록 구성할 수 있다. 따라서, 암호화 회로의 보안 수준이 향상될 수 있다.The encryption circuit according to the present disclosure can be configured to make it difficult to specify when the actual round operation is performed by additionally performing a virtual round operation that precedes or follows the actual round operation on data. Additionally, when performing an actual round operation on data, other circuit configurations (e.g., different round cores) simultaneously perform virtual round operations, allowing an attacker to configure the information collected through the side channel to include noise. You can. Accordingly, the security level of the encryption circuit can be improved.
도 1은 암호화 회로들(1150, 1250, 1350)이 데이터 입력/출력 장치들(1100, 1200, 1300)에 포함되는 것을 보여준다. 그러나, 일 실시 예에서, 암호화 회로들(1150, 1250, 1350)은 데이터 입력/출력 장치들(1100, 1200, 1300)과 별개의 암호화 장치로 구현될 수도 있다. 또한, 데이터 입력/출력 장치들(1100, 1200, 1300) 외의 장치들(예를 들어, 1400) 및 버스(1600) 각각 역시 암호화 회로를 포함할 수도 있다. 암호화 회로는 데이터가 입력 또는 출력되는 경로 상이라면 어디든 채용될 수 있다. 암호화 회로들(1150, 1250, 1350)의 예시적인 구성들 및 동작들은 이하의 도면들을 참조하여 후술한다. Figure 1 shows that
도 2는 본 개시의 예시적 실시 예에 따른 암호화 회로를 나타내는 블록도이다. 도 2의 암호화 회로(100)의 블록도는, 예를 들어 도 1의 암호화 회로들(1150, 1250, 1350)에 대한 구체적인 블록도일 수 있다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.Figure 2 is a block diagram showing an encryption circuit according to an exemplary embodiment of the present disclosure. The block diagram of the
도 2를 참조하면, 암호화 회로(100)는 암호화 컨트롤러(Encryption Controller)(110), 파이프 라인 암호화 코어(Pipelined Encryption Core)(120) 및 버퍼(Buffer)(130)를 포함할 수 있다. Referring to FIG. 2, the
암호화 컨트롤러(110)는 요청(REQ)에 응답하여 암호화 회로(100)의 전반적인 동작을 제어할 수 있다. 암호화 컨트롤러(110)에는 암호화 연산의 수행 및 환경을 지시하는 제어 값이 저장될 수 있다. 상기 제어 값에 기초하여, 암호화 컨트롤러(110)는 파이프 라인 암호화 코어(120) 및 버퍼(130)의 동작들을 제어하기 위하여 각각으로 제어 신호(CON_C, CON_B)를 전송할 수 있다.The
암호화 컨트롤러(110)는 제어 신호(CON_C)를 통해 파이프 라인 암호화 코어(120)에 포함된 복수의 라운드 코어들(121)이 가상 암호화 연산을 수행하도록 제어할 수 있다. 일 실시예에서, 암호화 컨트롤러(110)는 외부로부터 입력되는 랜덤 데이터(D_RAN)를 이용하여, 복수의 라운드 코어들(121) 각각이 실제 암호화 연산을 수행하기 전에 가상 암호화 연산을 몇 회 수행할 것인지 또는 실제 암호화 연산을 수행한 후에 가상 암호화 연산을 몇 회 수행할 것인지를 결정할 수 있다. 또는, 암호화 컨트롤러(110)는 복수의 라운드 코어들(121) 중 특정 라운드 코어가 실제 라운드 연산 동작을 수행할 때, 다른 라운드 코어에서는 가상 라운드 연산 동작을 수행하도록 파이프 라인 암호화 코어(120)를 제어할 수 있다. 다만, 본 도면에서는 외부로부터 암호화 컨트롤러(110)가 외부로부터 랜덤 데이터(D_RAN)를 수신하는 것으로 도시하였으나, 본 개시는 이에 한정되지 않으며, 암호화 컨트롤러(110)는 내부에서 랜덤 데이터(D_RAN)를 생성할 수도 있다.The
파이프 라인 암호화 코어(120)는 연산이 수행되는 단위의 제1 내지 제k 실제 데이터(PT1~PTk)를 순차적으로 버퍼(130)로부터 수신할 수 있다. 파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 실제 암호화 연산을 통해 제1 내지 제k 암호화 데이터(CT1~CTk)를 출력할 수 있다. 파이프 라인 암호화 코어(120)는 실제 암호화 연산이 수행된 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 버퍼(130)에 업데이트 할 수 있다. 이 때, k는 3이상의 자연수일 수 있으나, 이에 한정되지 않고, 파이프 라인 암호화 코어(120)는 하나 이상의 실제 데이터를 순차적으로 수신할 수 있다.The
파이프 라인 암호화 코어(120)는, 예를 들어 실제 암호화 키에 기반하여 제1 내지 제k 실제 데이터(PT1~PTk) 각각의 비트 위치를 섞는 전치(permutation)를 통해 실제 암호화 연산을 수행할 수 있다. 또는, 파이프 라인 암호화 코어(120)는 암호화 키에 기반하여 제1 내지 제k 실제 데이터(PT1~PTk) 각각을 매핑된 다른 데이터로 바꾸는 치환(substitution)을 통해 암호화 연산을 수행할 수도 있다. The
파이프 라인 암호화 코어(120)는 버퍼(130)로부터 더미 데이터(VPT) 또는 더미 암호화 키(VRK)를 수신할 수 있다. 파이프 라인 암호화 코어(120)는 더미 데이터(VPT) 또는 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행할 수 있다. 예를 들어, 파이프 라인 암호화 코어(120)는 더미 데이터(VPT) 및 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행하거나, 더미 데이터(VPT) 및 실제 암호화 키를 이용한 가상 암호화 연산을 수행하거나, 실제 데이터(PT1~PT_k) 및 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행할 수 있다.The
일 실시 예에서 파이프 라인 암호화 코어(120)는 각각 라운드 연산을 수행하는 복수의 라운드 코어들(121)을 포함할 수 있다. 파이프 라인 암호화 코어(120)에서 수행되는 실제 암호화 연산은 각각의 라운드 코어들(121)에 의한 실제 라운드 연산들을 포함할 수 있다. 또한, 파이프 라인 암호화 코어(120)에서 수행되는 가상 암호화 연산은 각각의 라운드 코어들(121)에 의한 가상 라운드 연산들을 포함할 수 있다. 파이프 라인 암호화 코어(120)에서 수행되는 라운드 연산은, 입력 데이터(D_in) 및 암호화 키의 종류에 따라 실제 라운드 연산 및 가상 라운드 연산 중 하나로 구분될 수 있다.In one embodiment, the
파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 암호화 연산이 서로 병렬적으로 수행할 수 있다. 예를 들어, 복수의 라운드 코어들(121) 중 적어도 2개는 실제 라운드 연산 및 가상 라운드 연산 중 하나의 라운드 연산을 병렬적으로 수행할 수 있다. The
일 실시 예 에서, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 연산을 수행하는 초기 라운드 코어가 초기 실제 라운드 연산을 수행하기 전에 적어도 1회의 초기 가상 라운드 연산을 수행할 수 있다. 또는, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 코어가 초기 실제 라운드 연산을 수행한 후에 적어도 1회의 초기 가상 라운드 연산을 수행할 수 있다. 따라서, 본 개시에 따른 암호화 회로(100)는 공격자가 실제 암호화 연산이 수행되는 시점을 특정하기 어려워짐으로써 암호화 회로의 보안 수준이 향상될 수 있다. 파이프 라인 암호화 코어(120)의 라운드 연산 동작에 대한 자세한 설명은 도 6 등에서 대해서 후술하겠다.In one embodiment, the
일 실시예에서, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 코어가 초기 실제 라운드 연산을 수행하는 동안, 제1 라운드 코어가 제1 가상 라운드 연산을 수행할 수 있다. 따라서, 실제 암호화 연산과 함께 가상 암호화 연산을 수행함으로써 노이즈를 발생시킬 수 있고, 암호화 회로의 보안 수준이 향상될 수 있다. 파이프 라인 암호화 코어(120)의 라운드 연산 동작에 대한 자세한 설명은 도 10 등에서 대해서 후술하겠다.In one embodiment, the pipelined
버퍼(130)는 외부로부터 제공되는 입력 데이터(D_in)를 일시적으로 저장할 수 있다. 즉, 버퍼(130)는 암호화를 위한 실제 연산이 수행될 데이터를 저장할 수 있다. 이 때, 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_B)에 응답하여, 버퍼(130)는 입력 데이터(D_in)를 암호화 연산이 수행되는 단위로 나누어 파이프 라인 암호화 코어(120)로 제공할 수 있다. 예를 들어, 버퍼(130)는 제1 내지 제k 실제 데이터(PT1~PTk)를 순차적으로 파이프 라인 암호화 코어(120)로 제공할 수 있다.The
또한, 버퍼(130)는 외부로부터 제공되는 랜덤 데이터(D_RAN)를 일시적으로 저장할 수 있다. 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_B)에 응답하여, 버퍼(130)에 저장된 랜덤 데이터(D_RAN) 중 적어도 일부를 파이프 라인 암호화 코어(120)로 제공될 수 있다. 예를 들어, 버퍼(130)는 랜덤 데이터(D_RAN) 중 적어도 일부를 가상 라운드 연산을 위한 더미 데이터(VPT)로서 파이프 라인 암호화 코어(120)로 제공할 수 있다. 또는 예를 들어, 버퍼(130)는 가상 라운드 연산을 위한 더미 암호화 키(VRK)로서 파이프 라인 암호화 코어(120)로 제공할 수 있다.Additionally, the
버퍼(130)는 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 파이프 라인 암호화 코어(120)로부터 수신할 수 있다. 버퍼(130)는 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 출력 데이터(D_out)로서 출력할 수 있다. 따라서, 출력 데이터(D_out)는 입력 데이터(D_in)를 암호화한 것일 수 있다.The
도 3은 본 개시의 예시적 실시 예에 따른 암호화 회로에 포함된 파이프 라인 암호화 코어를 나타내는 블록도이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.Figure 3 is a block diagram showing a pipeline encryption core included in an encryption circuit according to an exemplary embodiment of the present disclosure. In this drawing, the encryption operation is explained, but it will be obvious that the same explanation can be applied to the decryption operation.
도 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)만을 포함할 수도 있다.Referring to FIG. 3, the
파이프 라인 암호화 코어(120)에서 수행되는 암호화 연산은 보안 수준을 높이기 위해 복수의 라운드 연산을 포함할 수 있고, 각각의 라운드 연산들은 서로 다른 라운드 코어에 의해 수행될 수 있다. 예를 들어, 초기 라운드 코어(121_i)는 초기 라운드 연산을 수행할 수 있고, 제1 라운드 코어(121_1)는 제1 라운드 연산을 수행할 수 있고, 제n 라운드 코어(121_n)는 제n 라운드 연산을 수행할 수 있다. The encryption operation performed in the
각각의 라운드 연산들은 실제 라운드 연산 및 가상 라운드 연산을 포함할 수 있다. 예를 들어, 초기 라운드 연산은 초기 실제 라운드 연산 및 초기 가상 라운드 연산을 포함할 수 있고, 제1 라운드 연산은 제1 실제 라운드 연산 및 제1 가상 라운드 연산을 포함할 수 있고, 제n 라운드 연산은 제n 실제 라운드 연산 및 제n 가상 라운드 연산을 포함할 수 있다. Each round operation may include a real round operation and a virtual round operation. For example, the initial round operation may include an initial real round operation and an initial virtual round operation, the first round operation may include a first real round operation and a first virtual round operation, and the nth round operation may be It may include an nth real round operation and an nth virtual round operation.
초기 라운드 코어(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 실제 암호화 연산에도 적용될 수 있다.The initial round core 121_i and the first to nth round cores 121_1 to 121_n perform initial encryption operations using real data (e.g., PT1 to PTk) and actual encryption keys (e.g., RK0 to RKn), and The first to nth actual encryption operations can be performed. For example, the initial round core 121_i may perform an initial actual encryption operation using the first to kth actual data (PT1 to PTk) and the initial actual encryption key (RK0). At this time, the initial actual encryption key (RK0) corresponding to each of the first to kth actual data (PT1 to PTk) may be different from each other or may be the same. The description of the initial actual encryption operation of the initial round core 121_i may also be applied to the first to nth actual encryption operations of the first to nth round cores 121_1 to 121_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)에 대한 실제 암호화 연산에도 적용될 수 있다.First to kth actual data (PT1 to PTk) may be input to the initial round core 121_i. For example, when the first real data (PT1) is input to the initial round core (121_i), the initial round core (121_i) may perform an initial real round operation on the first real data (PT1), and perform the initial round operation on the first real data (PT1). The result may be stored in the initial register 123_i. The performed result may be provided again to the first round core 121_1, and the first round core 121_1 may perform the first real round operation on the first real data PT1. The result of performing the first real round operation on the first real data PT1 may be stored in the first register 123_1. That is, the first real data PT1 may be encrypted into the first encrypted data CT1 through a total of (n+1) real round operations and output from the
초기 라운드 코어(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)에 대한 라운드 연산을 수행할 수 있다. First to kth actual data (PT1 to PTk) may be sequentially input to the initial round core 121_i. The
초기 라운드 코어(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 가상 암호화 연산에도 적용될 수 있다. Each of the initial round core 121_i and the first to nth round cores 121_1 to 121_n may perform a virtual encryption operation using dummy data (VPT0 to VPTn) or virtual encryption keys (VRK0 to VRKn). For example, the initial round core 121_i may be provided with at least one of initial dummy data (VPT0) and an initial virtual encryption key (VRK0). For example, the initial round core 121_i performs a virtual encryption operation using initial dummy data (VPT0) and an initial virtual encryption key (VRK0), or performs a virtual encryption operation using initial dummy data (VPT0) and an initial real encryption key (RK0). A virtual encryption operation can be performed, or a virtual encryption operation can be performed using real data (PT1 to PT_k) and the initial virtual encryption key (VRK0). The description of the initial virtual encryption operation of the initial round core 121_i may also be applied to the first to nth virtual encryption operations of the first to nth round cores 121_1 to 121_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 가상 라운드 연산에도 적용될 수 있다.In one embodiment, the initial register 123_i may include a real initial register and a virtual initial register. The result of the initial virtual round operation of the initial round core 121_i may be stored in an initial virtual register and provided to the first round core 121_1, which is the next round core. The first round core 121_1 may receive the result and perform a first virtual round operation. Alternatively, in one embodiment, the result of the initial virtual round operation of the initial round core 121_i is stored in the initial virtual register, but may not be provided to the first round core 121_1. The description of the initial virtual round operation of the initial round core 121_i may also be applied to the first to n-1th virtual round operations of the first to n-1th round cores 121_1 to 121_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)을 저장하기 위한 메모리를 포함하거나, 다른 메모리에 저장된 암호화 키들을 엑세스할 수 있다.The
본 도면에서는, 초기 라운드 코어(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) 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 수행하도록 구성될 수 있다.In this drawing, dummy data (e.g., VPT0 to VPTn) is shown as being provided to each of the initial round core 121_i and the first to nth round cores 121_1 to 121_n, but the present disclosure is not limited thereto. . In the
도 4는 본 개시의 예시적 실시 예에 따른 암호화 회로에서 수행되는 암호화 연산을 설명하는 흐름도로서, 실제 암호화 연산을 설명하기 위한 도면이다. 예를 들어, 도 4는 도 3의 파이프 라인 암호화 코어(120)가 미국 NIST(U.S. National Institute of Standards and Technology)에 의해 수립(Establish)된 AES(Advanced Encryption Standard)에 따라 암호화 연산을 수행하는 것을 설명한다. 그러나, 도 4는 더 나은 이해를 돕기 위해 제공된 것이고, 본 개시는 이에 한정하기 위한 것은 아니다. 암호화 연산은 암호화 컨트롤러(예를 들어, 도 2의 110)의 제어에 따라 파이프 라인 암호화 코어(120)에 의해 수행될 수 있다. FIG. 4 is a flowchart explaining an encryption operation performed in an encryption circuit according to an exemplary embodiment of the present disclosure, and is a diagram for explaining an actual encryption operation. For example, Figure 4 shows that the
도 3 및 도 4를 참조하면, S110 단계에서, 초기 라운드 코어(121_i)는 "AddRoundKey" 연산을 수행할 수 있다. "AddRoundKey" 연산은 실제 데이터(예를 들어, 제1 내지 제k 실제 데이터(PT1~PTk)) 및 초기 실제 라운드 키(RK0)에 대해 비트 단위의(Bitwise) 조합 논리 연산(예를 들어, 논리 합 연산, 논리 곱 연산, 배타적 논리 합 연산 등)을 수행하는 것을 포함할 수 있다. 따라서, 실제 데이터(PT1~PTk)는 선택된 초기 실제 라운드 키(RK0)에 기초하여 다른 데이터로 변환될 수 있다. 일 실시예에서, "AddRoundKey" 연산은 배타적 논리 합인 XOR 연산으로 구현될 수 있다.Referring to FIGS. 3 and 4 , in step S110, the initial round core 121_i may perform the “AddRoundKey” operation. The "AddRoundKey" operation is a bitwise combinatorial logic operation (e.g., logical It may include performing a sum operation, logical product operation, exclusive logical sum operation, etc.). Accordingly, the actual data (PT1 to PTk) can be converted to other data based on the selected initial actual round key (RK0). In one embodiment, the “AddRoundKey” operation may be implemented as an exclusive logical sum (XOR) operation.
단계 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) 수 있다.In operation S120, the first round core 121_1 may perform a substitution operation on data converted in the initial round core 121_i. In operation S122, the first round core 121_1 may perform a “ShiftRows” operation on the state of the data replaced in step S120. In the “ShiftRows” operation, rows of the data state can be shifted in a cyclic structure. In operation S124, the first round core 121_1 may perform a “MixColumns” operation on the data state shifted in operation S122. In the “MixColumns” operation, columns of data states can be mixed.
이후, S126 단계에서, 제1 라운드 코어(121_1)는 S124 단계에서 섞인 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 제1 라운드 코어(121_1)는 변환된 데이터 및 제1 실제 라운드 키(RK1)에 대해 비트 단위의 조합 논리 연산을 수행할 수 있다. Thereafter, in step S126, the first round core 121_1 may perform an “AddRoundKey” operation on the converted data having the mixed state in step S124. The first round core 121_1 may perform a bit-wise combinational logic operation on the converted data and the first real round key RK1.
S130 단계에서, 암호화 컨트롤러(예를 들어, 도 2의 110)는 다음 라운드연산이 마지막 라운드 연산인지 여부를 판별할 수 있다. 암호화 컨트롤러(110)는 실제 라운드 연산의 횟수를 관리할 수 있다. 다음 라운드가 마지막 라운드가 아닌 경우, S120 단계가 다시 수행될 수 있다. 예를 들어, S120 단계에서, 제2 라운드 코어(121_2)는 S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. 반면, 다음 실제 라운드 연산이 마지막 라운드 연산인 경우, S140 단계가 수행될 수 있다.In step S130, the encryption controller (eg, 110 in FIG. 2) may determine whether the next round operation is the last round operation. The
S120 내지 S126 단계들은 하나의 실제 라운드 연산, 즉, 제1 내지 제n-1 실제 라운드 연산 각각을 구성할 수 있다. 키 스케쥴러(125)는 S126 단계의 "AddRoundKey" 연산을 위해 각각의 제1 내지 제n-1 라운드 코어(121_1~121_n-1)마다 상이한 실제 라운드 키(RK1~RKn-1)를 선택할 수 있다.Steps S120 to S126 may constitute one real round operation, that is, each of the first to n-1th real round operations. The
S140 단계에서, 제n 라운드 코어(121_n)는 S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S142 단계에서, 제n 라운드 코어(121_n)는 S140 단계에서 치환된 데이터의 스테이트에 대해 "ShiftRows" 연산을 수행할 수 있다. S144 단계에서, 제n 라운드 코어(121_n)는 S142 단계에서 시프트된 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 예로서, 마지막 실제 라운드 연산(제n 실제 라운드 연산)이 완료된 후, 암호화 데이터(예를 들어, 제1 내지 제k 암호화 데이터(CT1~CTk))가 출력될 수 있다.In step S140, the nth round core 121_n may perform a substitution operation on the data converted in operation S126. In step S142, the nth round core 121_n may perform a “ShiftRows” operation on the state of the data replaced in step S140. In step S144, the nth round core 121_n may perform an “AddRoundKey” operation on the converted data having the shifted state in step S142. For example, after the last actual round operation (nth actual round operation) is completed, encrypted data (eg, first to kth encrypted data (CT1 to CTk)) may be output.
초기 실제 라운드 연산 및 제1 내지 제n 실제 라운드 연산이 순차적으로 수행됨에 따라, 데이터의 값이 점차 변환될 수 있다. S140 내지 S144 단계로 구성되는 마지막 라운드 연산이 완료된 후, 최종적으로 변환된 데이터가 암호화 데이터(CT1~CTk)로 출력되므로, 공격자가 암호화 데이터(CT1~CTk)를 임의로 조작하거나 손상시키는 것이 어려워질 수 있다.As the initial real round operation and the first to nth real round operations are sequentially performed, the data value may be gradually converted. After the last round operation consisting of steps S140 to S144 is completed, the final converted data is output as encrypted data (CT1 to CTk), making it difficult for an attacker to arbitrarily manipulate or damage the encrypted data (CT1 to CTk). there is.
본 도면은, 초기 라운드 코어(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 가상 라운드 연산을 수행할 수 있다.This figure shows only the initial real round operation and the first to nth real round operation of the initial round core 121_i and the first to nth round cores 121_1 to 121_n, but can also be applied to virtual round operation. . For example, the initial round core 121_i may be provided with at least one of initial dummy data (VPT0) and an initial virtual encryption key (VRK0), and at least one of the initial dummy data (VPT0) and an initial virtual encryption key (VRK0). The initial virtual round operation can be performed by performing step S110 using one. In addition, the first round core 121_1 may be provided with at least one of first dummy data VPT1 and a first virtual encryption key VRK1, and the first dummy data VPT1 and the first virtual encryption key VRK1 ) The first virtual round operation can be performed by performing steps S120 to S126 using at least one of the following. In addition, the n-th round core 121_n may be provided with at least one of n-th dummy data (VPTn) and an n-th virtual encryption key (VRKn), and the n-th dummy data (VPTn) and the n-th virtual encryption key (VRKn) may be provided. The nth virtual round operation can be performed by performing steps S140 to S144 using at least one of the following.
도 5는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.Figure 5 is a flowchart for explaining the operation of an encryption controller of an encryption circuit according to an exemplary embodiment of the present disclosure. In this drawing, the encryption operation is explained, but it will be obvious that the same description can be applied to the decryption operation.
도 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 단계에서, 결정된 라운드 코어는 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다.Referring to FIGS. 2, 3, and 5, in step S210, the
S220 단계에서, 암호화 컨트롤러(110)는 결정된 라운드 코어에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율을 결정할 수 있다. 일 실시 예에서, 실제 라운드 연산 및 가상 라운드 연산의 횟수를 합하면 2의 지수승이 될 수 있다. 즉, 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 2의 지수승에서 1을 뺀 값일 수 있다. 예를 들어, 암호화 컨트롤러(110)는 실제 라운드 연산이 한번 수행될 때, 가상 라운드 연산은 3번 수행되도록 결정할 수 있다. In step S220, the
S230 단계에서 암호화 컨트롤러(110)는, 결정된 라운드 코어에서 실제 라운드 연산 전/후에 수행될 가상 라운드 연산의 횟수를 결정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 외부로부터 입력되는 랜덤 데이터(D_RAN)를 이용하여, 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 실제 라운드 연산을 수행하기 전과 후에 수행될 가상 라운드 연산의 횟수를 랜덤하게 결정할 수 있다. 예를 들어, 실제 라운드 연산을 기준으로, 선행하는 가상 라운드 연산은 0회, 후행하는 가상 라운드 연산은 3회로 설정되거나, 선행하는 가상 라운드 연산은 1회, 후행하는 가상 라운드 연산은 2회로 설정될 수도 있다. 또는, 예를 들어, 실제 라운드 연산을 기준으로 선행하는 가상 라운드 연산은 2회, 후행하는 가상 라운드 연산은 1회로 설정되거나, 선행하는 가상 라운드 연산은 3회, 후행하는 가상 라운드 연산은 0회로 설정될 수도 있다. In step S230, the
암호화 컨트롤러(110)는 S210 단계 내지 S230 단계에서 결정된 것에 기초하여, 파이프 라인 암호화 코어(120)로 제어 신호(CON_C)를 출력할 수 있다. 파이프 라인 암호화 코어(120)는 수신된 제어 신호에 기초하여, 실제 라운드 연산 및 가상 라운드 연산을 수행할 수 있다.The
따라서, 본 개시에 따른 암호화 회로(100)는 실제 라운드 연산 전/또는 후에 적어도 1회의 가상 라운드 연산이 수행되므로, 공격자가 실제 라운드 연산 이 수행되는 시점을 특정하기 어려워질 수 있다. 따라서, 암호화 회로(100)의 보안 수준이 향상될 수 있다.Therefore, since the
도 6 내지 도 8은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다. 도 6 내지 도 8은 도 5에 따른 암호화 컨트롤러의 동작에 의한 파이프 라인 암호화 코어의 동작을 설명하기 위한 것이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.6 to 8 are timing diagrams for explaining the operation of an encryption circuit according to an exemplary embodiment of the present disclosure. FIGS. 6 to 8 are for explaining the operation of the pipeline encryption core according to the operation of the encryption controller according to FIG. 5. In this drawing, the encryption operation is explained, but it will be obvious that the same description can be applied to the decryption operation.
도 6을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 중 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 라운드 코어로서 일부의 라운드 코어가 결정될 수 있다. 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n)가 결정될 수 있다. 다만, 본 개시는 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n)가 가상 라운드 연산을 수행하는 것에 한정되지 않으며, 다른 라운드 코어도 가상 라운드 연산을 수행할 수 있다.Referring to FIG. 6, among the plurality of round cores 121_i and 121_1 to 121_n, some round cores may be determined as round cores that will sequentially perform real round operations and virtual round operations. For example, the initial round core 121_i and the nth round core 121_n may be determined. However, the present disclosure is not limited to the initial round core 121_i and the nth round core 121_n performing the virtual round operation, and other round cores may also perform the virtual round operation.
일 실시 예에서, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율이 서로 동일할 수 있다. 이 때, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있다. 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS)으로 구분될 수 있다.In one embodiment, the ratio of virtual round operations to actual round operations to be performed in each of the initial round core 121_i and the nth round core 121_n may be the same. At this time, the ratio of the virtual round operation to the actual round operation to be performed in each of the initial round core 121_i and the nth round core 121_n may be 3. One real round operation and three virtual round operations can be divided into one round operation set (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)가 구성될 수 있다.In the initial round core 121_i, one round operation set (OPS) for real data (e.g., real data of one of the first real data (PT1 to PTk)) must be completed, and then the first round, which is the next round core, must be completed. The core 121_1 may perform a first real round operation on the real data. Even though one round operation set (OPS) has not ended in the initial round core (121_i), if the first actual round operation is performed in the first round core (121_1) immediately after the initial actual round operation has ended, the attacker can It may become easier to infer the execution time of the initial actual round operation in the round core 121_i. Accordingly, after one round operation set (OPS) for real data ends, the first round core 121_1 may be configured to perform a first real round operation on the real data.
초기 라운드 코어(121_i)가 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 초기 실제 라운드 연산을 수행할 때, 초기 실제 라운드 연산에 선행하는/후행하는 초기 가상 라운드 연산의 횟수는 랜덤할 수 있다. 예를 들어, 하나의 라운드 연산 셋(OPS)에서, 초기 실제 라운드 연산 1회와 초기 가상 라운드 연산 3회가 랜덤적으로 수행될 수 있다. 또한, 제n 라운드 코어(121_n)가 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 제n 실제 라운드 연산을 수행할 때, 제n 실제 라운드 연산 전과 후에 수행하는 제n 가상 라운드 연산의 횟수는 랜덤할 수 있다. 따라서, 공격자는 초기 실제 라운드 연산 및 제n 실제 라운드 연산이 수행되는 시점을 특정하기 어려울 수 있다.When the initial round core 121_i performs the initial real round operation on each of the first to kth real data (PT1 to PTk), the number of initial virtual round operations preceding/following the initial real round operation may be random. You can. For example, in one round operation set (OPS), one initial real round operation and three initial virtual round operations may be performed randomly. In addition, when the nth round core 121_n performs the nth real round operation on each of the first to kth real data (PT1 to PTk), the nth virtual round operation performed before and after the nth real round operation is performed. The number of times may be random. Therefore, it may be difficult for an attacker to specify when the initial actual round operation and the nth actual round operation are performed.
복수의 라운드 코어들(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 실제 라운드 연산과 서로 병렬적으로 수행될 수 있다. 따라서, 본 개시에 따른 암호화 회로는 서로 다른 데이터에 대한 암호화 연산이 동시에 수행되므로 공격자가 부 채널 분석 공격하는 것이 어려워질 수 있다.At least two round cores among the plurality of round cores 121_i, 121_1 to 121_n may include a section that simultaneously performs a virtual round operation or an actual round operation. For example, the round operation set (OPS) operation for the second real data (PT2) of the initial round core (121_i) is the first real round for the first real data (PT1) of the first round core (121_1). Operations can be performed in parallel with each other. In addition, the round operation set (OPS) operation for the first real data (PT1) of the n-th round core (121_n) is the first operation for the second real data (PT2) of the n-1th round core (121_n-1). They can be performed in parallel with n-1 actual round operations. Therefore, the encryption circuit according to the present disclosure performs encryption operations on different data simultaneously, making it difficult for an attacker to carry out a side-channel analysis attack.
도 7을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 각각은 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다. 일 실시예에서, 각각의 라운드 코어들(121_i, 121_1~121_n)에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 서로 동일할 수 있다. 예를 들어, 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있다. 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS)으로 구분될 수 있다.Referring to FIG. 7, each of the plurality of round cores 121_i, 121_1 to 121_n may continuously perform real round operations and virtual round operations. In one embodiment, the ratio of virtual round operations to actual round operations to be performed in each of the round cores 121_i and 121_1 to 121_n may be the same. For example, the ratio of virtual round operations to actual round operations may be 3. One real round operation and three virtual round operations can be divided into one round operation set (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) 동작과 서로 병렬적으로 수행될 수 있다. At least two round cores among the plurality of round cores 121_i, 121_1 to 121_n may include a section that simultaneously performs a virtual round operation or an actual round operation. For example, the round operation set (OPS) operation for the second real data (PT2) of the initial round core (121_i) is a round operation set (OPS) operation for the first real data (PT1) of the first round core (121_1) OPS) operations can be performed in parallel with each other. In addition, the round operation set (OPS) operation for the first real data (PT1) of the nth round core (121_n) is a round operation for the second real data (PT2) of the n-1th round core (121_n-1). Operation set (OPS) operations can be performed in parallel with each other.
도 8을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 중 적어도일부의 라운드 코어들은 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다. 예를 들어, 초기 라운드 코어(121_i), 제1 라운드 코어(121_1), 제n-1 라운드 코어(121_n-1) 및 제n 라운드 코어(121_n)는 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 수 있다.Referring to FIG. 8, at least some of the round cores among the plurality of round cores 121_i and 121_1 to 121_n may continuously perform real round operations and virtual round operations. For example, the initial round core (121_i), the first round core (121_1), the n-1th round core (121_n-1), and the nth round core (121_n) sequentially perform real round operations and virtual round operations. can do.
일 실시 예에서, 초기 라운드 코어(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)에서는 정해진 비율에 기초하여, 실제 라운드 연산과 가상 라운드 연산이 랜덤적으로 수행될 수 있다. In one embodiment, a virtual round for the actual round operation to be performed on each of the initial round core 121_i, the first round core 121_1, the n-1th round core 121_n-1, and the nth round core 121_n. The ratios of operations may not be the same. For example, the
도 9는 본 개시의 예시적 실시 예에 따른 암호화 회로의 암호화 컨트롤러의 동작을 설명하기 위한 순서도이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.9 is a flowchart for explaining the operation of an encryption controller of an encryption circuit according to an exemplary embodiment of the present disclosure. In this drawing, the encryption operation is explained, but it will be obvious that the same description can be applied to the decryption operation.
도 2, 도 3 및 도 9를 참조하면, S310 단계에서, 암호화 컨트롤러(110)는 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어를 결정할 수 있다. 예를 들어, 암호화 컨트롤러(110)는 제1 라운드 코어(121_1)를 가상 라운드 연산을 수행할 라운드 코어로 결정할 수 있다.Referring to FIGS. 2, 3, and 9, in step S310, the
S320 단계에서, 암호화 컨트롤러(110)는 S310 단계에서 결정된 라운드 코어가 가상 라운드 연산을 수행하는 가상 연산 구간을 설정할 수 있다. 일 실시예에서, 암호화 컨트롤러(110)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지를 가상 연산 구간으로 설정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 공격자의 부 채널 분석 공격에 취약한 구간을 가상 연산 구간으로 설정할 수 있고, 예를 들어, 하나의 실제 라운드 연산만이 수행되거나 2개의 실제 라운드 연산이 병렬적으로 수행되는 구간을 가상 연산 구간으로 설정할 수 있다.In step S320, the
S330 단계에서, 암호화 컨트롤러(110)는 S310 단계에서 결정된 라운드 코어가 실제 라운드 연산을 수행할 예정인지 확인할 수 있다. 예를 들어, S320 단계에서 설정된 가상 연산 구간 내에서, 제1 라운드 코어(121_1)가 실제 라운드 연산을 수행할 예정인지 확인할 수 있다.In step S330, the
결정된 라운드 코어가 실제 라운드 연산을 수행할 예정이 아닌 경우에는, S340 단계에서, 다른 라운드 코어가 실제 라운드 연산 중일 때, 결정될 라운드 코어가 가상 라운드 연산하도록 제어할 수 있다. 반면, 결정된 라운드 코어가 실제 라운드 연산을 수행할 예정인 경우에는, S350 단계에서, 다른 라운드 코어가 실제 라운드 연산 중일 때 결정된 라운드 코어도 실제 라운드 연산하도록 제어할 수 있다. If the determined round core is not scheduled to perform the actual round operation, in step S340, the determined round core may be controlled to perform the virtual round operation while the other round core is performing the actual round operation. On the other hand, if the determined round core is scheduled to perform the actual round operation, in step S350, the determined round core can also be controlled to perform the actual round operation while the other round core is performing the actual round operation.
S360 단계에서, 암호화 컨트롤러(110)는 가상 연산 구간이 종료되었는지확인할 수 있고, 가상 연산 구간이 종료되지 않았으면, 다시 S330 단계를 수행할 수 있다. 반면, 가상 연산 구간이 종료되었으면 가상 라운드 연산을 수행하지 않고 종료할 수 있다.In step S360, the
본 개시에 따른 암호화 회로(100)는 실제 라운드 연산 중인 라운드 코어 외의 연산을 수행하지 않는 라운드 코어에서 가상 라운드 연산을 수행함으로써, 노이즈를 발생시킬 수 있다. 따라서, 공격자의 부채널 분석 공격이 어려워질 수 있어, 암호화 회로(100)의 보안 수준이 향상될 수 있다.The
도 10 내지 도 12는 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다. 도 10 내지 도 12은 도 9에 따른 암호화 컨트롤러의 동작에 의한 파이프 라인 암호화 코어의 동작을 설명하기 위한 것이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.10 to 12 are timing diagrams for explaining the operation of an encryption circuit according to an exemplary embodiment of the present disclosure. FIGS. 10 to 12 are for explaining the operation of the pipeline encryption core according to the operation of the encryption controller according to FIG. 9. In this drawing, the encryption operation is explained, but it will be obvious that the same description can be applied to the decryption operation.
도 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)에 대한 암호화 연산이 시작될 때부터 종료될 때까지의 구간으로 설정될 수 있다.Referring to FIG. 10, when other round cores are performing an actual round operation, some of the round cores among the plurality of round cores 121_i, 121_1 to 121_n may be determined as round cores to perform a virtual round operation. For example, the first round core 121_1 and the n-1th round core 121_n-1 may be determined. At this time, the virtual operation section (VOP) in which the first round core (121_1) and the n-1th round core (121_n-1) will perform the virtual round operation is for the first to kth real data (PT1 to PTk). It can be set as the section from when the encryption operation starts to when it ends.
복수의 라운드 코어들(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 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다.The first round core (121_1) and the n-1th round core (121_n-1), which are part of the plurality of round cores (121_i, 121_1 to 121_n), each perform a first real round operation and an n-1th real round operation. When not doing so, the first virtual round operation and the n-1th virtual round operation can be performed. The encryption circuit according to the present disclosure may include a section in which at least two round cores among the plurality of round cores 121_i and 121_1 to 121_n simultaneously perform a virtual round operation or an actual round operation. Therefore, in the encryption circuit according to the present disclosure, the real round operation and the virtual round operation are performed together, so after the encryption operation starts, only the initial real round operation is performed on the first real data (PT1), allowing the attacker to attack the side channel analysis attack. This can be prevented from becoming easier. In addition, only the n-th real round operation is performed on the k-th real data (PTk), thereby preventing an attacker from easily conducting a side-channel analysis attack.
도 11을 참조하면, 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(121_i, 121_1~121_n)이 결정될 수 있다. 이 때, 복수의 라운드 코어들(121_i, 121_1~121_n)이 가상 라운드 연산을 수행할 가상 연산 구간(VOP)은 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지의 구간일 수 있다.Referring to FIG. 11, when another round core is performing an actual round operation, a plurality of round cores 121_i, 121_1 to 121_n may be determined as round cores to perform a virtual round operation. At this time, the virtual operation section (VOP) in which the plurality of round cores 121_i, 121_1 to 121_n will perform the virtual round operation ends when the encryption operation for the first to kth real data (PT1 to PTk) starts. It may be a section until it becomes possible.
복수의 라운드 코어들(121_i, 121_1~121_n) 각각은 실제 라운드 연산을 수행하지 않을 때, 가상 라운드 연산을 수행할 수 있다. 따라서, 본 개시에 따른 암호화 회로에서는 실제 라운드 연산과 가상 라운드 연산이 함께 수행되므로, 암호화 연산이 시작된 후 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다. Each of the plurality of round cores 121_i, 121_1 to 121_n may perform a virtual round operation when not performing an actual round operation. Therefore, in the encryption circuit according to the present disclosure, the real round operation and the virtual round operation are performed together, so after the encryption operation starts, only the initial real round operation is performed on the first real data (PT1), allowing the attacker to attack the side channel analysis attack. This can be prevented from becoming easier.
도 12를 참조하면, 다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(121_i, 121_1~121_n) 중 일부의 라운드 코어가 결정될 수 있다. 예를 들어, 제1 라운드 코어(121_1) 및 제n-1 라운드 코어(121_n-1)가 결정될 수 있다. Referring to FIG. 12, when other round cores are performing an actual round operation, some of the round cores among the plurality of round cores 121_i, 121_1 to 121_n may be determined as round cores to perform a virtual round operation. For example, the first round core 121_1 and the n-1th round core 121_n-1 may be determined.
이 때, 가상 라운드 연산이 수행되는 제1 가상 연산 구간(VOP1)으로서 제1 실제 데이터(PT1)에 대한 초기 실제 라운드 연산이 수행되고, 제1 실제 데이터(PT1)에 대한 제1 실제 라운드 연산 및 제2 실제 데이터(PT2)에 대한 초기 실제 라운드 연산이 수행되는 구간이 설정될 수 있다. 또한, 가상 라운드 연산이 수행되는 제2 가상 연산 구간(VOP2)으로서 제k-1 실제 데이터(PTk-1)에 대한 제n 실제 라운드 연산 및 제k 실제 데이터(PTk)에 대한 제n-1 실제 라운드 연산 이 수행되고, 제k 실제 데이터(PTk)에 대한 제n 실제 라운드 연산이 수행되는 구간이 설정될 수 있다. At this time, the initial real round operation on the first real data PT1 is performed as the first virtual operation section VOP1 in which the virtual round operation is performed, the first real round operation on the first real data PT1, and A section in which the initial actual round operation on the second actual data PT2 is performed may be set. In addition, as the second virtual operation section (VOP2) in which the virtual round operation is performed, the nth real round operation for the k-1th real data (PTk-1) and the n-1th real round operation for the kth real data (PTk) A round operation is performed, and a section in which the nth actual round operation is performed on the kth actual data (PTk) can be set.
상기 제1 가상 연산 구간(VOP1) 및 상기 제2 가상 연산 구간(VOP2)에서 가상 라운드 연산이 수행되지 않을 경우에는, 하나 또는 2개의 실제 라운드 연산만이 수행되므로 공격에 취약해질 수 있다. 따라서, 상대적으로 공격에 취약한 구간을 가상 연산 구간으로 설정하여, 가상 라운드 연산을 추가 수행함으로써 공격에 대비할 수 있다. 제1 가상 연산 구간(VOP1) 및 제2 가상 연산 구간(VOP2)이 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 수행되는 전체 구간이 아닌 일부 구간으로 설정됨으로써, 공격자의 공격으로부터 취약할 것으로 판단되는 구간에서 노이즈를 발생시키는 동시에, 전력 소모를 감소시킬 수 있다.If virtual round operations are not performed in the first virtual operation section (VOP1) and the second virtual operation section (VOP2), only one or two actual round operations are performed, making it vulnerable to attacks. Therefore, it is possible to prepare for attacks by setting a section that is relatively vulnerable to attacks as a virtual operation section and performing additional virtual round operations. The first virtual operation section (VOP1) and the second virtual operation section (VOP2) are set to a partial section rather than the entire section in which the encryption operation for the first to kth real data (PT1 to PTk) is performed, thereby attacking the attacker. It is possible to generate noise in sections judged to be vulnerable and at the same time reduce power consumption.
도 13은 본 개시의 예시적 실시 예에 따른 암호화 회로의 동작을 설명하기 위한 타이밍도이다. 도 13은 도 5 및 도 9에 따른 암호화 컨트롤러의 동작에 의한 파이프 라인 암호화 코어의 동작을 설명하기 위한 것이다. 본 도면에서는 암호화 동작에 대해서 설명하나, 복호화 동작에도 동일한 설명이 적용될 수 있음은 자명할 것이다.13 is a timing diagram for explaining the operation of an encryption circuit according to an exemplary embodiment of the present disclosure. FIG. 13 is for explaining the operation of the pipeline encryption core according to the operation of the encryption controller according to FIGS. 5 and 9. In this drawing, the encryption operation is explained, but it will be obvious that the same description can be applied to the decryption operation.
도 13을 참조하면, 복수의 라운드 코어들(121_i, 121_1~121_n) 중 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 라운드 코어로서 일부의 라운드 코어가 결정될 수 있고, 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n)가 결정될 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 복수의 라운드 코어들(121_i, 121_1~121_n)이 실제 라운드 연산 및 가상 라운드 연산을 연속적으로 수행할 라운드 코어로 결정될 수도 있다.Referring to FIG. 13, among the plurality of round cores 121_i, 121_1 to 121_n, some round cores may be determined as round cores that will continuously perform real round operations and virtual round operations, for example, initial round cores. (121_i) and the nth round core (121_n) may be determined. However, the present disclosure is not limited to this, and a plurality of round cores 121_i, 121_1 to 121_n may be determined as round cores that will sequentially perform real round operations and virtual round operations.
일 실시 예에서, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율이 서로 동일할 수 있다. 예를 들어, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 3일 수 있고, 1회의 실제 라운드 연산 및 3회의 가상 라운드 연산이 하나의 라운드 연산 셋(OPS)으로 구분될 수 있다. 일 실시 예에서, 초기 라운드 코어(121_i) 및 제n 라운드 코어(121_n) 각각에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율이 서로 상이할 수도 있다.In one embodiment, the ratio of virtual round operations to actual round operations to be performed in each of the initial round core 121_i and the nth round core 121_n may be the same. For example, the ratio of virtual round operations to actual round operations to be performed on each of the initial round core 121_i and the n-th round core 121_n may be 3, and 1 real round operation and 3 virtual round operations are performed. It can be divided into one round operation set (OPS). In one embodiment, the ratio of virtual round operations to actual round operations to be performed in each of the initial round core 121_i and the nth round core 121_n may be different.
초기 라운드 코어(121_i)가 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 초기 실제 라운드 연산을 수행할 때, 초기 실제 라운드 연산 전과 후에 수행하는 초기 가상 라운드 연산의 횟수는 랜덤할 수 있다. 즉, 하나의 라운드 연산 셋(OPS)에서, 초기 실제 라운드 연산 1회와 초기 가상 라운드 연산 3회가 랜덤하게 수행될 수 있다. 또한, 하나의 라운드 연산 셋(OPS)에서, 제n 실제 라운드 연산 1회와 제n 가상 라운드 연산 3회가 랜덤하게 수행될 수 있다. 따라서, 공격자는 초기 실제 라운드 연산 및 제n 실제 라운드 연산이 수행되는 시점을 특정하기 어려울 수 있다.When the initial round core 121_i performs the initial real round operation on each of the first to kth real data (PT1 to PTk), the number of initial virtual round operations performed before and after the initial real round operation may be random. . That is, in one round operation set (OPS), one initial real round operation and three initial virtual round operations can be performed randomly. Additionally, in one round operation set (OPS), one n-th real round operation and three n-th virtual round operations may be performed randomly. Therefore, it may be difficult for an attacker to specify when the initial actual round operation and the nth actual round operation are performed.
다른 라운드 코어가 실제 라운드 연산 중일 때, 가상 라운드 연산을 수행할 라운드 코어로서 복수의 라운드 코어들(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)에 대한 암호화 연산이 수행되는 전체 구간일 수 있다.When another round core is performing an actual round operation, at least some of the round cores among the plurality of round cores 121_i, 121_1 to 121_n may be determined as the round core to perform the virtual round operation. For example, the first round core 121_1 and the n-1th round core 121_n-1 may be determined. At this time, the virtual operation section (VOP) in which the first round core (121_1) and the n-1th round core (121_n-1) will perform the virtual round operation is for the first to kth real data (PT1 to PTk). It may be at least a portion of the section from the start to the end of the encryption operation. For example, the virtual operation section (VOP) is where the encryption operation is performed on the first to kth real data (PT1 to PTk). It may be the entire section.
복수의 라운드 코어들(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 실제 라운드 연산만이 수행되어 공격자로 하여금 부 채널 분석 공격이 용이해지는 것을 방지할 수 있다.The first round core (121_1) and the n-1th round core (121_n-1), which are part of the plurality of round cores (121_i, 121_1 to 121_n), each perform a first real round operation and an n-1th real round operation. When not doing so, the first virtual round operation and the n-1th virtual round operation can be performed. Therefore, in the encryption circuit according to the present disclosure, the real round operation and the virtual round operation are performed together, so after the encryption operation starts, only the initial real round operation is performed on the first real data (PT1), allowing the attacker to attack the side channel analysis attack. This can be prevented from becoming easier. In addition, only the n-th real round operation is performed on the k-th real data (PTk), thereby preventing an attacker from easily conducting a side-channel analysis attack.
상기한 실시 예의 설명은 본 개시의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 개시를 한정하는 의미로 해석되어서는 안될 것이다. 또한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 개시의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다.The description of the above-described embodiments is merely an example with reference to the drawings for a more thorough understanding of the present disclosure, and should not be construed as limiting the present disclosure. In addition, it will be clear to those skilled in the art to which this disclosure pertains that various changes and modifications can be made without departing from the basic principles of the present disclosure.
100: 암호화 회로
110: 암호화 컨트롤러
120: 파이프 라인 암호화 코어
130: 버퍼100: encryption circuit
110: Cryptographic Controller
120: Pipeline encryption core
130: buffer
Claims (20)
상기 복수의 라운드 코어들 중 적어도 하나의 라운드 코어가 가상 라운드 연산을 추가로 수행하도록 제어하는 암호화 컨트롤러;를 포함하고,
상기 암호화 컨트롤러는,
상기 적어도 하나의 라운드 코어의 상기 가상 라운드 연산이, 복수의 라운드 코어들 중 적어도 다른 하나의 라운드 코어의 상기 실제 라운드 연산과 서로 병렬하게 수행되도록 제어하고,
상기 적어도 다른 하나의 라운드 코어에 의해 수행되는 상기 실제 라운드 연산은, 상기 가상 라운드 연산을 수행하는 라운드 코어에 의해 이전에 암호화된 입력 데이터를 더 암호화하고,
상기 가상 라운드 연산이 수행됨에 따라, 상기 실제 라운드 연산이 수행되는 제1 시간 구간의 배수인 제2 시간 구간의 적어도 일부 동안 상기 가상 라운드 연산에 따른 결과 데이터가 생성되는 것을 특징으로 하는 암호화 회로.a pipeline encryption core that includes a plurality of round cores that perform an actual round operation on each of sequentially input input data, and outputs encrypted data through an encryption operation using the actual round operation; and
Comprising: an encryption controller that controls at least one round core among the plurality of round cores to additionally perform a virtual round operation,
The encryption controller is,
Controlling the virtual round operation of the at least one round core to be performed in parallel with the actual round operation of at least one other round core among the plurality of round cores,
the real round operation performed by the at least one other round core further encrypts input data previously encrypted by the round core performing the virtual round operation,
As the virtual round operation is performed, result data according to the virtual round operation is generated during at least a portion of a second time interval that is a multiple of the first time interval in which the actual round operation is performed.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 상기 적어도 하나의 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하고,
상기 결정된 라운드 코어에서 수행될 상기 실제 라운드 연산에 대한 상기 가상 라운드 연산의 비율을 결정하고,
상기 비율에 기초하여, 상기 결정된 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.According to claim 1,
The encryption controller is,
Determining the at least one round core among the plurality of round cores as a round core to perform the virtual round operation,
Determine a ratio of the virtual round operation to the actual round operation to be performed on the determined round core,
An encryption circuit, characterized in that controlling the determined round core to perform the real round operation and the virtual round operation based on the ratio.
상기 암호화 컨트롤러는,
상기 비율에 기초하여, 상기 실제 라운드 연산에 선행하여 수행될 상기 가상 라운드 연산의 횟수 및 상기 실제 라운드 연산에 후행하여 수행될 상기 가상 라운드 연산의 횟수를 랜덤하게 결정하고,
상기 결정된 횟수에 기초하여, 상기 결정된 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.According to clause 2,
The encryption controller is,
Based on the ratio, randomly determine the number of virtual round operations to be performed prior to the real round operation and the number of virtual round operations to be performed after the real round operation,
An encryption circuit, characterized in that controlling the determined round core to perform the real round operation and the virtual round operation based on the determined number of times.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 입력 데이터가 처음 입력되는 초기 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로.According to clause 2,
The encryption controller is,
An encryption circuit characterized in that, among the plurality of round cores, an initial round core to which the input data is first input is determined as a round core to perform the virtual round operation.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 암호화 데이터가 출력되는 마지막 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로.According to clause 2,
The encryption controller is,
An encryption circuit, characterized in that determining the last round core to which the encrypted data is output among the plurality of round cores as the round core to perform the virtual round operation.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들을 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로.According to clause 2,
The encryption controller is,
An encryption circuit, characterized in that determining the plurality of round cores as round cores to perform the virtual round operation.
상기 암호화 컨트롤러는,
상기 가상 라운드 연산을 수행할 라운드 코어로서 서로 다른 라운드 코어들을 결정하고,
상기 서로 다른 라운드 코어들 각각에서 수행되는 상기 실제 라운드 연산에 대한 상기 가상 라운드 연산의 비율이 서로 상이한 것을 특징으로 하는 암호화 회로.According to clause 2,
The encryption controller is,
Determine different round cores as round cores to perform the virtual round operation,
An encryption circuit, wherein the ratio of the virtual round operation to the actual round operation performed in each of the different round cores is different.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 다른 라운드 코어가 실제 라운드 연산을 수행할 때 상기 가상 라운드 연산을 수행할 라운드 코어를 결정하고,
상기 결정된 라운드 코어가 상기 가상 라운드 연산을 수행할 가상 연산 구간을 설정하고,
상기 가상 연산 구간 동안 상기 결정된 라운드 코어가 상기 가상 라운드 연산을 추가로 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.According to claim 1,
The encryption controller is,
Among the plurality of round cores, determine a round core to perform the virtual round operation when another round core performs an actual round operation,
Setting a virtual operation section in which the determined round core will perform the virtual round operation,
An encryption circuit, characterized in that controlling the determined round core to additionally perform the virtual round operation during the virtual operation period.
상기 암호화 컨트롤러는,
상기 파이프 라인 암호화 코어가 상기 암호화 연산을 수행하는 구간을 상기 가상 연산 구간으로 설정하는 것을 특징으로 하는 암호화 회로.According to clause 8,
The encryption controller is,
An encryption circuit, characterized in that the section in which the pipeline encryption core performs the encryption operation is set as the virtual operation section.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 입력 데이터가 처음 입력되는 초기 라운드 코어가 상기 입력 데이터 중 처음으로 입력되는 데이터에 대한 동작을 수행하는 구간을 포함하도록 상기 가상 연산 구간을 설정하는 것을 특징으로 하는 암호화 회로.According to clause 8,
The encryption controller is,
An encryption circuit characterized in that the virtual operation section is set to include a section in which an initial round core to which the input data is input first among the plurality of round cores performs an operation on the data to be input first among the input data. .
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 암호화 데이터가 출력되는 마지막 라운드 코어가 상기 입력 데이터 중 마지막으로 입력되는 데이터에 대한 동작을 수행하는 구간을 포함하도록 상기 가상 연산 구간을 설정하는 것을 특징으로 하는 암호화 회로.According to clause 8,
The encryption controller is,
An encryption circuit, wherein the virtual operation section is set to include a section in which the last round core outputting the encrypted data among the plurality of round cores performs an operation on the last input data among the input data.
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 연속적으로 수행할 제1 라운드 코어를 결정하고,
상기 복수의 라운드 코어들 중에서 다른 라운드 코어가 실제 라운드 연산을 수행할 때 상기 가상 라운드 연산을 수행할 제2 라운드 코어를 결정하고,
상기 제1 라운드 코어 및 상기 제2 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.According to claim 1,
The encryption controller is,
Determining a first round core among the plurality of round cores to sequentially perform the real round operation and the virtual round operation,
Among the plurality of round cores, determine a second round core to perform the virtual round operation when another round core performs the actual round operation,
An encryption circuit, characterized in that controlling the first round core and the second round core to perform the real round operation and the virtual round operation.
상기 제1 실제 라운드 연산 결과에 기초하여, 상기 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어; 및
상기 제1 라운드 코어 및 상기 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고,
상기 제1 라운드 코어는, 더미 데이터 및 상기 키 스케쥴러로부터 제공되는 제1 가상 라운드 키 중 하나에 기초하여 제1 가상 라운드 연산을 더 수행하고,
상기 제1 라운드 코어의 상기 제1 가상 라운드 연산은 상기 제2 실제 라운드 연산과 서로 병렬적으로 수행되고,
상기 제2 라운드 코어는, 상기 키 스케쥴러로부터 제공되는 제2 가상 라운드 키 및 더미 데이터 중 하나에 기초하여, 제2 가상 라운드 연산을 더 수행하고,
상기 제1 실제 라운드 연산에 대한 상기 제1 가상 라운드 연산의 비율은 제1 값을 가지고, 상기 제2 실제 라운드 연산에 대한 상기 제2 가상 라운드 연산의 비율은 제2 값을 가지고, 상기 제1 값 및 상기 제2 값은 서로 상이한 것을 특징으로 하는 암호화 회로.a first round core that performs a first actual round operation on input data;
a second round core that performs a second real round operation on the input data based on the first real round operation result; and
A key scheduler that provides round keys to the first round core and the second round core, respectively,
The first round core further performs a first virtual round operation based on one of dummy data and a first virtual round key provided from the key scheduler,
The first virtual round operation of the first round core is performed in parallel with the second real round operation,
The second round core further performs a second virtual round operation based on one of the second virtual round key and dummy data provided from the key scheduler,
the ratio of the first virtual round operations to the first real round operations has a first value, the ratio of the second virtual round operations to the second real round operations has a second value, and the first value and the second values are different from each other.
상기 제1 라운드 코어는, 상기 제1 실제 라운드 연산을 수행이 완료된 후, 상기 제2 실제 라운드 연산이 수행되는 동안 상기 제1 가상 라운드 연산을 수행하는 것을 특징으로 하는 암호화 회로.According to claim 13,
The first round core performs the first virtual round operation while the second real round operation is performed after the first real round operation is completed.
상기 제1 실제 라운드 연산 결과에 기초하여, 상기 입력 데이터에 대한 제2 실제 라운드 연산을 수행하는 제2 라운드 코어; 및
상기 제1 라운드 코어 및 상기 제2 라운드 코어로 각각 라운드 키를 제공하는 키 스케쥴러를 포함하고,
상기 제1 라운드 코어는, 더미 데이터 및 상기 키 스케쥴러로부터 제공되는 제1 가상 라운트 키 중 하나에 기초하여, 제1 가상 라운드 연산을 더 수행하고,
상기 제2 라운드 코어는, 더미 데이터 및 상기 키 스케쥴러로부터 제공되는 제2 가상 라운드 키 중 하나에 기초하여 제2 가상 라운드 연산을 더 수행하고,
상기 제1 라운드 코어의 상기 제1 실제 라운드 연산은 상기 제2 라운드 코어의 상기 제2 가상 라운드 연산과 서로 병렬적으로 수행되고,
상기 제1 실제 라운드 연산에 대한 상기 제1 가상 라운드 연산의 비율은 제1 값을 가지고, 상기 제2 실제 라운드 연산에 대한 상기 제2 가상 라운드 연산의 비율은 제2 값을 가지고, 상기 제1 값 및 상기 제2 값은 서로 동일한 것을 특징으로 하는 암호화 회로.a first round core that performs a first actual round operation on input data;
a second round core that performs a second real round operation on the input data based on the first real round operation result; and
A key scheduler that provides round keys to the first round core and the second round core, respectively,
The first round core further performs a first virtual round operation based on one of dummy data and a first virtual round key provided from the key scheduler,
The second round core further performs a second virtual round operation based on one of dummy data and a second virtual round key provided from the key scheduler,
The first real round operation of the first round core is performed in parallel with the second virtual round operation of the second round core,
the ratio of the first virtual round operations to the first real round operations has a first value, the ratio of the second virtual round operations to the second real round operations has a second value, and the first value and the second values are identical to each other.
상기 제2 라운드 코어는 지정된 가상 연산 구간 내에서 상기 제2 가상 라운드 연산을 수행하는 것을 특징으로 하는 암호화 회로.According to clause 18,
An encryption circuit, wherein the second round core performs the second virtual round operation within a designated virtual operation period.
상기 제2 라운드 코어는, 상기 제2 실제 라운드 연산을 수행하기 전, 상기 제1 실제 라운드 연산이 수행되는 동안 상기 제2 가상 라운드 연산을 수행하는 것을 특징으로 하는 암호화 회로.According to clause 18,
The second round core performs the second virtual round operation while the first real round operation is performed before performing the second real round operation.
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020180119306A KR102628010B1 (en) | 2018-10-05 | 2018-10-05 | Encryption circuit for virtual encryption operation |
| DE102019119831.3A DE102019119831A1 (en) | 2018-10-05 | 2019-07-23 | Encryption circuit for performing virtual encryption operations |
| CN201910670045.2A CN111008407B (en) | 2018-10-05 | 2019-07-23 | Cryptographic circuitry for performing virtual cryptographic operations |
| 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 (en) | 2018-10-05 | 2018-10-05 | Encryption circuit for virtual encryption operation |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20200039405A KR20200039405A (en) | 2020-04-16 |
| KR102628010B1 true KR102628010B1 (en) | 2024-01-22 |
Family
ID=69886693
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020180119306A Active KR102628010B1 (en) | 2018-10-05 | 2018-10-05 | Encryption circuit for virtual encryption operation |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11328097B2 (en) |
| KR (1) | KR102628010B1 (en) |
| CN (1) | CN111008407B (en) |
| DE (1) | DE102019119831A1 (en) |
Families Citing this family (9)
| 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 (en) * | 2020-01-29 | 2024-05-17 | 国立研究開発法人情報通信研究機構 | Secret key sharing system and method |
| IT202000013390A1 (en) * | 2020-06-05 | 2021-12-05 | Milano Politecnico | An IT platform to prevent side channel attacks |
| US11599679B2 (en) * | 2020-06-23 | 2023-03-07 | Arm Limited | Electromagnetic and power noise injection for hardware operation concealment |
| EP4315125A1 (en) * | 2021-03-29 | 2024-02-07 | Nvidia Corporation | Comprehensively obfuscated cryptographic accelerators and operations thereof |
| KR20230032429A (en) | 2021-08-31 | 2023-03-07 | 삼성전자주식회사 | Memory device and method for data encryption/decryption of memory device |
| TWI840062B (en) * | 2022-12-30 | 2024-04-21 | 新唐科技股份有限公司 | Fault-attack analysis device and method |
| KR20240117197A (en) * | 2023-01-25 | 2024-08-01 | 삼성전자주식회사 | Apparatus and method for cryptography secure against side-channel attacks |
| US20240427910A1 (en) * | 2023-06-20 | 2024-12-26 | Qualcomm Incorporated | Microarchitectures for secure computing systems |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007195132A (en) | 2005-12-20 | 2007-08-02 | Sony Corp | Cryptographic processing device |
| 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 (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10000503A1 (en) * | 2000-01-08 | 2001-07-12 | Philips Corp Intellectual Pty | Data processing device and method for its operation |
| 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 |
| US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
| US7406407B2 (en) * | 2006-06-01 | 2008-07-29 | Microsoft Corporation | Virtual machine for operating N-core application on M-core processor |
| US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
| US8538015B2 (en) | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
| EP2186250B1 (en) | 2007-08-31 | 2019-03-27 | IP Reservoir, LLC | Method and apparatus for hardware-accelerated encryption/decryption |
| US9317286B2 (en) | 2009-03-31 | 2016-04-19 | Oracle America, Inc. | Apparatus and method for implementing instruction support for the camellia cipher algorithm |
| JP2010245753A (en) * | 2009-04-03 | 2010-10-28 | Nippon Telegr & Teleph Corp <Ntt> | Cryptographic circuit device |
| 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 (en) | 2017-08-02 | 2022-05-24 | 삼성전자주식회사 | Security device, electronic device including the same and method of operating electronic device |
| US20190116022A1 (en) | 2017-10-16 | 2019-04-18 | Samsung Electronics Co., Ltd. | Encryption device and operation method thereof |
| FR3078463A1 (en) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | METHOD AND DEVICE FOR REALIZING SUBSTITUTED TABLE OPERATIONS |
-
2018
- 2018-10-05 KR KR1020180119306A patent/KR102628010B1/en active Active
-
2019
- 2019-07-23 DE DE102019119831.3A patent/DE102019119831A1/en active Pending
- 2019-07-23 CN CN201910670045.2A patent/CN111008407B/en active Active
- 2019-07-25 US US16/521,937 patent/US11328097B2/en active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007195132A (en) | 2005-12-20 | 2007-08-02 | Sony Corp | Cryptographic processing device |
| 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 (en) | 2020-04-16 |
| CN111008407B (en) | 2025-04-29 |
| US11328097B2 (en) | 2022-05-10 |
| US20200110906A1 (en) | 2020-04-09 |
| CN111008407A (en) | 2020-04-14 |
| DE102019119831A1 (en) | 2020-04-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102628010B1 (en) | Encryption circuit for virtual encryption operation | |
| CN110389747B (en) | True random number generation system with physical unclonable function | |
| US8666064B2 (en) | Endecryptor capable of performing parallel processing and encryption/decryption method thereof | |
| US12177327B2 (en) | Encryption device and operation method thereof | |
| CN103577768A (en) | Method of managing key for secure storage of data and apparatus therefor | |
| US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
| KR20160025944A (en) | Endecryptor preventing side channel attack, driving method thereof and control device having the same | |
| US9571281B2 (en) | CRT-RSA encryption method and apparatus | |
| US11755287B2 (en) | Random number generator | |
| CN107437988B (en) | Electronic circuit for preventing side channel analysis attack and electronic device comprising same | |
| EP3200173B1 (en) | Method of protecting electronic circuit against eavesdropping by power analysis and electronic circuit using the same | |
| EP4320511B1 (en) | Secure pseudo-random number generator (prng) reseeding | |
| US20240356726A1 (en) | Encryption device and operating method of encryption device | |
| EP4218197B1 (en) | Method for securing an execution of a cryptographic process | |
| KR20240156255A (en) | Encryption device and operating method of encryption device | |
| CN117390642B (en) | Data encryption and decryption method, device, equipment and computer readable storage medium | |
| KR102627585B1 (en) | Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same | |
| KR102559583B1 (en) | Encryption device and operation method thereof | |
| CN118827002A (en) | Encryption device and method of operating the encryption device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20181005 |
|
| PG1501 | Laying open of application | ||
| A201 | Request for examination | ||
| PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20210903 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20181005 Comment text: Patent Application |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20230712 Patent event code: PE09021S01D |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20231017 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20240117 Patent event code: PR07011E01D |
|
| PR1002 | Payment of registration fee |
Payment date: 20240118 End annual number: 3 Start annual number: 1 |
|
| PG1601 | Publication of registration |