KR102628010B1 - Encryption circuit for virtual encryption operation - Google Patents

Encryption circuit for virtual encryption operation Download PDF

Info

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
Application number
KR1020180119306A
Other languages
Korean (ko)
Other versions
KR20200039405A (en
Inventor
최홍묵
김재혁
강지수
김현일
신종훈
이혜수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180119306A priority Critical patent/KR102628010B1/en
Priority to DE102019119831.3A priority patent/DE102019119831A1/en
Priority to CN201910670045.2A priority patent/CN111008407B/en
Priority to US16/521,937 priority patent/US11328097B2/en
Publication of KR20200039405A publication Critical patent/KR20200039405A/en
Application granted granted Critical
Publication of KR102628010B1 publication Critical patent/KR102628010B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/75Protecting 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/75Protecting 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/755Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

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

가상 암호화 연산을 수행하는 암호화 회로{ENCRYPTION CIRCUIT FOR VIRTUAL ENCRYPTION OPERATION}Encryption circuit for performing virtual encryption operations {ENCRYPTION CIRCUIT FOR VIRTUAL ENCRYPTION OPERATION}

본 개시의 기술적 사상은 암호화(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 computing device 1000 includes a processor device 1100, a working memory 1200, a storage device 1300, a user interface 1400, and a bus 1500. can do.

예를 들어, 컴퓨팅 장치(1000)는 데스크탑(Desktop) 컴퓨터, 랩탑(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 워크스테이션(Workstation), 서버(Server), 디지털 텔레비전, 비디오 게임기(Video Game Console), 스마트 폰, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치들 중 하나일 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다. For example, the computing device 1000 includes a desktop computer, a laptop computer, a tablet computer, a workstation, a server, a digital television, a video game console, It may be one of various electronic devices such as a smart phone, wearable device, etc., but the present invention is not limited to this example.

프로세서 장치(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 processor device 1100 may control overall operations of the computing device 1000. The processor device 1100 may be configured to process various types of arithmetic operations and/or logical operations. To this end, the processor device 1100 includes a special-purpose logic circuit (Special-purpose Logic Circuit) including one or more processor cores 1110; for example, Field Programmable Gate Array (FPGA), Application Specific Integrated Circuits (ASICs), etc. ) can be implemented. For example, the processor device 1100 may include a general-purpose processor, a dedicated processor, and/or an application processor.

예를 들어, 프로세서 장치(1100)는 프로세서 코어들(1110)을 이용하여, 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있다. 하나 이상의 캐시들(1130)은 명령어 집합의 실행에 의해 생성되는 데이터 또는 명령어 집합을 실행하기 위해 이용될 데이터를 일시적으로 저장할 수 있다.For example, the processor device 1100 may execute an instruction set of program code using the processor cores 1110. One or more caches 1130 may temporarily store data generated by execution of an instruction set or data to be used to execute the instruction set.

프로세서 장치(1100)는 암호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로부터 출력되는 데이터를 암호화할 수 있다. 나아가, 프로세서 장치(1100)는 암호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로 입력될 데이터를 복호화할 수 있다. The processor device 1100 may encrypt data output from the processor cores 1110 and/or caches 1130 using the encryption circuit 1150. Furthermore, the processor device 1100 may use the encryption circuit 1150 to decrypt data to be input to the processor cores 1110 and/or caches 1130.

워킹 메모리(1200)는 컴퓨팅 장치(1000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 예를 들어, 워킹 메모리(1200)는 프로세서 장치(1100)에 의해 처리된 또는 처리될 데이터를 하나 이상의 메모리들(1210)에 저장할 수 있다. 예를 들어, 메모리들(1210)은 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리를 포함할 수 있다. 메모리 컨트롤러(1230)는 메모리들(1210)이 데이터를 저장하거나 저장된 데이터를 출력하도록 메모리들(1210)을 제어할 수 있다.The working memory 1200 may temporarily store data used in the operation of the computing device 1000. For example, the working memory 1200 may store data processed or to be processed by the processor device 1100 in one or more memories 1210. For example, the memories 1210 may include volatile memories such as static random access memory (SRAM), dynamic RAM (DRAM), and synchronous DRAM (SDRAM). The memory controller 1230 may control the memories 1210 so that the memories 1210 store data or output the stored data.

워킹 메모리(1200)는 암호화 회로(1250)를 이용하여, 메모리들(1210)에 저장될 데이터를 암호화할 수 있다. 나아가, 워킹 메모리(1200)는 암호화 회로(1250)를 이용하여, 메모리들(1210)로부터 출력되는 데이터를 복호화할 수 있다. The working memory 1200 can encrypt data to be stored in the memories 1210 using the encryption circuit 1250. Furthermore, the working memory 1200 can decrypt data output from the memories 1210 using the encryption circuit 1250.

저장 장치(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 storage device 1300 can store data regardless of power supply. The storage device 1300 may store system data used to operate the computing device 1000 and/or user data for a user of the computing device 1000 in one or more non-volatile memories 1310 . For example, the non-volatile memories 1310 include non-volatile memory such as flash memory, phase-change RAM (PRAM), magneto-resistive RAM (MRAM), resistive RAM (ReRAM), and ferro-electric RAM (FRAM). It may include at least one of volatile memories. The memory controller 1330 may control the non-volatile memories 1310 so that the non-volatile memories 1310 store data or output stored data. For example, the storage device 1300 may include a storage medium such as a solid state drive (SSD), a hard disk drive (HDD), a secure digital (SD) card, or a multimedia card (MMC).

저장 장치(1300)는 암호화 회로(1350)를 이용하여, 비휘발성 메모리들(1310)에 저장될 데이터를 암호화할 수 있다. 나아가, 저장 장치(1300)는 암호화 회로(1350)를 이용하여, 비휘발성 메모리들(1310)로부터 출력되는 데이터를 복호화할 수 있다. The storage device 1300 may use the encryption circuit 1350 to encrypt data to be stored in the non-volatile memories 1310. Furthermore, the storage device 1300 can decrypt data output from the non-volatile memories 1310 using the encryption circuit 1350.

유저 인터페이스(1400)는 프로세서 장치(1100)의 제어에 따라, 사용자와 컴퓨팅 장치(1000) 사이의 통신을 중재할 수 있다. 예를 들어, 유저 인터페이스(1400)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등으로부터의 입력을 처리할 수 있다. 나아가, 유저 인터페이스(1400)는 디스플레이 장치, 스피커, 모터 등으로의 출력을 처리할 수 있다.The user interface 1400 may mediate communication between the user and the computing device 1000 according to the control of the processor device 1100. For example, the user interface 1400 may process input from a keyboard, mouse, keypad, buttons, touch panel, touch screen, touch pad, touch ball, camera, microphone, gyroscope sensor, vibration sensor, etc. Furthermore, the user interface 1400 can process output to a display device, speaker, motor, etc.

버스(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) 등과 같은 다양한 통신 규약 중 하나 이상을 포함할 수 있다. Bus 1500 may provide a communication path between components of computing device 1000. Components of the computing device 1000 may exchange data with each other based on the bus format of the bus 1500. For example, bus formats include Peripheral Component Interconnect Express (PCIe), Nonvolatile Memory Express (NVMe), Small Computer System Interface (SCSI), Advanced Technology Attachment (ATA), Serial ATA (SATA), Parallel ATA (PATA), and SAS. It may include one or more of various communication protocols such as (Serial Attached SCSI), UFS (Universal Flash Storage), etc.

본 개시의 예시적 실시 예에 따른 암호화 회로들(1150, 1250, 1350)은 데이터를 암호화 연산을 통해 암호화 데이터로 변경할 수 있다. 이 때, 암호화 연산은 복수의 라운드 연산들이 순차적으로 수행되는 것을 포함할 수 있다. 예를 들어, 암호화 연산은 초기 암호화 연산 및 제1 내지 제n 라운드 연산을 포함할 수 있고, 선행하는 라운드 연산 결과에 기초하여, 다음 라운드 연산이 수행될 수 있다. The encryption circuits 1150, 1250, and 1350 according to exemplary embodiments of the present disclosure may change data into encrypted data through an encryption operation. At this time, the encryption operation may include performing a plurality of round operations sequentially. For example, the encryption operation may include an initial encryption operation and first to nth round operations, and based on the result of the preceding round operation, the next round operation may be performed.

본 개시에 따른 암호화 회로는, 데이터에 대한 실제 라운드 연산에 선행하거나 후행하는 가상 라운드 연산을 추가로 수행함으로써, 실제 라운드 연산이 수행되는 시점을 특정하기 어렵도록 구성할 수 있다. 또한, 데이터에 대한 실제 라운드 연산을 수행할 때, 다른 회로 구성(예를 들어, 다른 라운드 코어)이 가상 라운드 연산을 동시에 수행함으로써, 공격자가 부채널을 통해 수집하는 정보에 노이즈가 포함되도록 구성할 수 있다. 따라서, 암호화 회로의 보안 수준이 향상될 수 있다.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 encryption circuits 1150, 1250, and 1350 are included in data input/output devices 1100, 1200, and 1300. However, in one embodiment, the encryption circuits 1150, 1250, and 1350 may be implemented as an encryption device separate from the data input/output devices 1100, 1200, and 1300. Additionally, each of devices other than the data input/output devices 1100, 1200, and 1300 (eg, 1400) and the bus 1600 may also include an encryption circuit. Encryption circuits can be employed anywhere along the path where data is input or output. Exemplary configurations and operations of the encryption circuits 1150, 1250, and 1350 are described below with reference to the drawings.

도 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 encryption circuit 100 of FIG. 2 may be, for example, a specific block diagram of the encryption circuits 1150, 1250, and 1350 of FIG. 1. 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를 참조하면, 암호화 회로(100)는 암호화 컨트롤러(Encryption Controller)(110), 파이프 라인 암호화 코어(Pipelined Encryption Core)(120) 및 버퍼(Buffer)(130)를 포함할 수 있다. Referring to FIG. 2, the encryption circuit 100 may include an encryption controller 110, a pipelined encryption core 120, and a buffer 130.

암호화 컨트롤러(110)는 요청(REQ)에 응답하여 암호화 회로(100)의 전반적인 동작을 제어할 수 있다. 암호화 컨트롤러(110)에는 암호화 연산의 수행 및 환경을 지시하는 제어 값이 저장될 수 있다. 상기 제어 값에 기초하여, 암호화 컨트롤러(110)는 파이프 라인 암호화 코어(120) 및 버퍼(130)의 동작들을 제어하기 위하여 각각으로 제어 신호(CON_C, CON_B)를 전송할 수 있다.The encryption controller 110 may control the overall operation of the encryption circuit 100 in response to the request (REQ). The encryption controller 110 may store control values that indicate the performance and environment of encryption operations. Based on the control value, the encryption controller 110 may transmit control signals CON_C and CON_B to control the operations of the pipeline encryption core 120 and the buffer 130, respectively.

암호화 컨트롤러(110)는 제어 신호(CON_C)를 통해 파이프 라인 암호화 코어(120)에 포함된 복수의 라운드 코어들(121)이 가상 암호화 연산을 수행하도록 제어할 수 있다. 일 실시예에서, 암호화 컨트롤러(110)는 외부로부터 입력되는 랜덤 데이터(D_RAN)를 이용하여, 복수의 라운드 코어들(121) 각각이 실제 암호화 연산을 수행하기 전에 가상 암호화 연산을 몇 회 수행할 것인지 또는 실제 암호화 연산을 수행한 후에 가상 암호화 연산을 몇 회 수행할 것인지를 결정할 수 있다. 또는, 암호화 컨트롤러(110)는 복수의 라운드 코어들(121) 중 특정 라운드 코어가 실제 라운드 연산 동작을 수행할 때, 다른 라운드 코어에서는 가상 라운드 연산 동작을 수행하도록 파이프 라인 암호화 코어(120)를 제어할 수 있다. 다만, 본 도면에서는 외부로부터 암호화 컨트롤러(110)가 외부로부터 랜덤 데이터(D_RAN)를 수신하는 것으로 도시하였으나, 본 개시는 이에 한정되지 않으며, 암호화 컨트롤러(110)는 내부에서 랜덤 데이터(D_RAN)를 생성할 수도 있다.The encryption controller 110 may control the plurality of round cores 121 included in the pipeline encryption core 120 to perform a virtual encryption operation through the control signal CON_C. In one embodiment, the encryption controller 110 uses random data (D_RAN) input from the outside to determine how many times a virtual encryption operation will be performed before each of the plurality of round cores 121 performs the actual encryption operation. Alternatively, it is possible to determine how many times the virtual encryption operation will be performed after performing the actual encryption operation. Alternatively, the encryption controller 110 controls the pipeline encryption core 120 so that when a specific round core among the plurality of round cores 121 performs an actual round operation, other round cores perform a virtual round operation. can do. However, in this drawing, the encryption controller 110 is shown as receiving random data (D_RAN) from the outside, but the present disclosure is not limited to this, and the encryption controller 110 generates random data (D_RAN) internally. You may.

파이프 라인 암호화 코어(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 pipeline encryption core 120 may sequentially receive the first to kth actual data (PT1 to PTk) of the unit in which the operation is performed from the buffer 130. The pipeline encryption core 120 may output the first to kth encrypted data (CT1 to CTk) through an actual encryption operation on the first to kth actual data (PT1 to PTk). The pipeline encryption core 120 may update the buffer 130 with the first encryption data (CT1) to the kth encryption data (CTk) on which the actual encryption operation has been performed. At this time, k may be a natural number of 3 or more, but is not limited to this, and the pipeline encryption core 120 may sequentially receive one or more actual data.

파이프 라인 암호화 코어(120)는, 예를 들어 실제 암호화 키에 기반하여 제1 내지 제k 실제 데이터(PT1~PTk) 각각의 비트 위치를 섞는 전치(permutation)를 통해 실제 암호화 연산을 수행할 수 있다. 또는, 파이프 라인 암호화 코어(120)는 암호화 키에 기반하여 제1 내지 제k 실제 데이터(PT1~PTk) 각각을 매핑된 다른 데이터로 바꾸는 치환(substitution)을 통해 암호화 연산을 수행할 수도 있다. The pipeline encryption core 120 may perform an actual encryption operation, for example, through permutation that mixes the bit positions of each of the first to kth real data (PT1 to PTk) based on the actual encryption key. . Alternatively, the pipeline encryption core 120 may perform an encryption operation by replacing each of the first to kth actual data (PT1 to PTk) with other mapped data based on the encryption key.

파이프 라인 암호화 코어(120)는 버퍼(130)로부터 더미 데이터(VPT) 또는 더미 암호화 키(VRK)를 수신할 수 있다. 파이프 라인 암호화 코어(120)는 더미 데이터(VPT) 또는 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행할 수 있다. 예를 들어, 파이프 라인 암호화 코어(120)는 더미 데이터(VPT) 및 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행하거나, 더미 데이터(VPT) 및 실제 암호화 키를 이용한 가상 암호화 연산을 수행하거나, 실제 데이터(PT1~PT_k) 및 더미 암호화 키(VRK)를 이용한 가상 암호화 연산을 수행할 수 있다.The pipeline encryption core 120 may receive dummy data (VPT) or a dummy encryption key (VRK) from the buffer 130. The pipeline encryption core 120 may perform a virtual encryption operation using dummy data (VPT) or a dummy encryption key (VRK). For example, the pipeline encryption core 120 performs a virtual encryption operation using dummy data (VPT) and a dummy encryption key (VRK), or performs a virtual encryption operation using dummy data (VPT) and a real encryption key. , a virtual encryption operation can be performed using real data (PT1 to PT_k) and a dummy encryption key (VRK).

일 실시 예에서 파이프 라인 암호화 코어(120)는 각각 라운드 연산을 수행하는 복수의 라운드 코어들(121)을 포함할 수 있다. 파이프 라인 암호화 코어(120)에서 수행되는 실제 암호화 연산은 각각의 라운드 코어들(121)에 의한 실제 라운드 연산들을 포함할 수 있다. 또한, 파이프 라인 암호화 코어(120)에서 수행되는 가상 암호화 연산은 각각의 라운드 코어들(121)에 의한 가상 라운드 연산들을 포함할 수 있다. 파이프 라인 암호화 코어(120)에서 수행되는 라운드 연산은, 입력 데이터(D_in) 및 암호화 키의 종류에 따라 실제 라운드 연산 및 가상 라운드 연산 중 하나로 구분될 수 있다.In one embodiment, the pipeline encryption core 120 may include a plurality of round cores 121 that each perform a round operation. The actual encryption operation performed in the pipeline encryption core 120 may include actual round operations by each of the round cores 121. Additionally, the virtual encryption operation performed in the pipeline encryption core 120 may include virtual round operations by each of the round cores 121. The round operation performed in the pipeline encryption core 120 may be divided into one of a real round operation and a virtual round operation depending on the type of input data (D_in) and encryption key.

파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 암호화 연산이 서로 병렬적으로 수행할 수 있다. 예를 들어, 복수의 라운드 코어들(121) 중 적어도 2개는 실제 라운드 연산 및 가상 라운드 연산 중 하나의 라운드 연산을 병렬적으로 수행할 수 있다. The pipeline encryption core 120 may perform encryption operations on each of the first to kth real data (PT1 to PTk) in parallel. For example, at least two of the plurality of round cores 121 may perform one of a real round operation and a virtual round operation in parallel.

일 실시 예 에서, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 연산을 수행하는 초기 라운드 코어가 초기 실제 라운드 연산을 수행하기 전에 적어도 1회의 초기 가상 라운드 연산을 수행할 수 있다. 또는, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 코어가 초기 실제 라운드 연산을 수행한 후에 적어도 1회의 초기 가상 라운드 연산을 수행할 수 있다. 따라서, 본 개시에 따른 암호화 회로(100)는 공격자가 실제 암호화 연산이 수행되는 시점을 특정하기 어려워짐으로써 암호화 회로의 보안 수준이 향상될 수 있다. 파이프 라인 암호화 코어(120)의 라운드 연산 동작에 대한 자세한 설명은 도 6 등에서 대해서 후술하겠다.In one embodiment, the pipeline crypto core 120 is responsive to a control signal (CON_C) provided by the crypto controller 110, such that the initial round core performing the initial round operation performs at least one initial round operation before performing the initial actual round operation. An initial virtual round operation can be performed. Alternatively, the pipeline encryption core 120 may perform at least one initial virtual round operation after the initial round core performs the initial real round operation in response to the control signal (CON_C) provided from the encryption controller 110. . Accordingly, the security level of the encryption circuit 100 according to the present disclosure can be improved by making it difficult for an attacker to specify the point in time when the actual encryption operation is performed. A detailed description of the round operation operation of the pipeline encryption core 120 will be described later with reference to FIG. 6, etc.

일 실시예에서, 파이프 라인 암호화 코어(120)는 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_C)에 응답하여, 초기 라운드 코어가 초기 실제 라운드 연산을 수행하는 동안, 제1 라운드 코어가 제1 가상 라운드 연산을 수행할 수 있다. 따라서, 실제 암호화 연산과 함께 가상 암호화 연산을 수행함으로써 노이즈를 발생시킬 수 있고, 암호화 회로의 보안 수준이 향상될 수 있다. 파이프 라인 암호화 코어(120)의 라운드 연산 동작에 대한 자세한 설명은 도 10 등에서 대해서 후술하겠다.In one embodiment, the pipelined cryptographic core 120 is responsive to a control signal (CON_C) provided from the cryptographic controller 110 such that the first round core performs the first virtual round operation while the initial round core performs the initial real round operation. Round operations can be performed. Therefore, by performing a virtual encryption operation together with an actual encryption operation, noise can be generated and the security level of the encryption circuit can be improved. A detailed description of the round operation operation of the pipeline encryption core 120 will be described later with reference to FIG. 10, etc.

버퍼(130)는 외부로부터 제공되는 입력 데이터(D_in)를 일시적으로 저장할 수 있다. 즉, 버퍼(130)는 암호화를 위한 실제 연산이 수행될 데이터를 저장할 수 있다. 이 때, 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_B)에 응답하여, 버퍼(130)는 입력 데이터(D_in)를 암호화 연산이 수행되는 단위로 나누어 파이프 라인 암호화 코어(120)로 제공할 수 있다. 예를 들어, 버퍼(130)는 제1 내지 제k 실제 데이터(PT1~PTk)를 순차적으로 파이프 라인 암호화 코어(120)로 제공할 수 있다.The buffer 130 may temporarily store input data D_in provided from the outside. That is, the buffer 130 can store data on which the actual operation for encryption will be performed. At this time, in response to the control signal (CON_B) provided from the encryption controller 110, the buffer 130 divides the input data (D_in) into units in which the encryption operation is performed and provides the input data to the pipeline encryption core 120. . For example, the buffer 130 may sequentially provide the first to kth actual data (PT1 to PTk) to the pipeline encryption core 120.

또한, 버퍼(130)는 외부로부터 제공되는 랜덤 데이터(D_RAN)를 일시적으로 저장할 수 있다. 암호화 컨트롤러(110)에서 제공된 제어 신호(CON_B)에 응답하여, 버퍼(130)에 저장된 랜덤 데이터(D_RAN) 중 적어도 일부를 파이프 라인 암호화 코어(120)로 제공될 수 있다. 예를 들어, 버퍼(130)는 랜덤 데이터(D_RAN) 중 적어도 일부를 가상 라운드 연산을 위한 더미 데이터(VPT)로서 파이프 라인 암호화 코어(120)로 제공할 수 있다. 또는 예를 들어, 버퍼(130)는 가상 라운드 연산을 위한 더미 암호화 키(VRK)로서 파이프 라인 암호화 코어(120)로 제공할 수 있다.Additionally, the buffer 130 can temporarily store random data (D_RAN) provided from the outside. In response to the control signal CON_B provided from the encryption controller 110, at least a portion of the random data D_RAN stored in the buffer 130 may be provided to the pipeline encryption core 120. For example, the buffer 130 may provide at least a portion of the random data (D_RAN) to the pipeline encryption core 120 as dummy data (VPT) for a virtual round operation. Or, for example, the buffer 130 may be provided to the pipeline encryption core 120 as a dummy encryption key (VRK) for a virtual round operation.

버퍼(130)는 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 파이프 라인 암호화 코어(120)로부터 수신할 수 있다. 버퍼(130)는 제1 암호화 데이터(CT1) 내지 제k 암호화 데이터(CTk)를 출력 데이터(D_out)로서 출력할 수 있다. 따라서, 출력 데이터(D_out)는 입력 데이터(D_in)를 암호화한 것일 수 있다.The buffer 130 may receive first to kth encrypted data (CT1) to kth encrypted data (CTk) from the pipeline encryption core 120. The buffer 130 may output the first encrypted data (CT1) to the kth encrypted data (CTk) as output data (D_out). Accordingly, the output data (D_out) may be encrypted input data (D_in).

도 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 pipeline encryption core 120 includes an initial round core (121_i), first to nth round cores (121_1 to 121_n), an initial register (123_i), and an initial round core (121_i). It may include 1st to nth registers (123_1 to 123_n) and a key scheduler (125). For example, the initial round core 121_i and the first to nth round cores 121_1 to 121_n may be the plurality of round cores 121 of FIG. 2 . At this time, n may be a natural number of 3 or more, but the present disclosure is not limited thereto, and the number of round cores included in the pipeline encryption core 120 may be variously configured to be 1 or more. In one embodiment, the initial round core 121_i may not be included and only the first to nth round cores 121_1 to 121_n may be included.

파이프 라인 암호화 코어(120)에서 수행되는 암호화 연산은 보안 수준을 높이기 위해 복수의 라운드 연산을 포함할 수 있고, 각각의 라운드 연산들은 서로 다른 라운드 코어에 의해 수행될 수 있다. 예를 들어, 초기 라운드 코어(121_i)는 초기 라운드 연산을 수행할 수 있고, 제1 라운드 코어(121_1)는 제1 라운드 연산을 수행할 수 있고, 제n 라운드 코어(121_n)는 제n 라운드 연산을 수행할 수 있다. The encryption operation performed in the pipeline encryption core 120 may include a plurality of round operations to increase the security level, and each round operation may be performed by a different round core. For example, the initial round core 121_i may perform an initial round operation, the first round core 121_1 may perform a first round operation, and the nth round core 121_n may perform an nth round operation. can be performed.

각각의 라운드 연산들은 실제 라운드 연산 및 가상 라운드 연산을 포함할 수 있다. 예를 들어, 초기 라운드 연산은 초기 실제 라운드 연산 및 초기 가상 라운드 연산을 포함할 수 있고, 제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 pipeline encryption core 120. The description of the actual encryption operation for the first real data (PT1) can also be applied to the actual encryption operation for the second real data (PT2) to the kth real data (PTk).

초기 라운드 코어(121_i)에는 제1 내지 제k 실제 데이터(PT1~PTk)가 순차적으로 입력될 수 있다. 파이프 라인 암호화 코어(120)는 순차적으로 입력되는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산을 병렬적으로 수행할 수 있다. 즉, 파이프 라인 암호화 코어(120)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산을 파이프 라인 방식으로 수행할 수 있다. 예를 들어, 제1 라운드 코어(121_1)에서 제1 실제 데이터(PT1)에 대한 제1 라운드 연산을 수행하는 동안, 초기 라운드 코어(121_i)에서는 제2 실제 데이터(PT2)에 대한 초기 라운드 연산을 수행할 수 있다. 제2 라운드 코어(121_2)에서 제1 실제 데이터(PT1)에 대한 제2 라운드 연산을 수행하는 동안, 제1 라운드 코어(121_1)에서는 제2 실제 데이터(PT2)에 대한 제1 라운드 연산을 수행하고, 초기 라운드 코어(121_i)에서는 제3 실제 데이터(PT3)에 대한 라운드 연산을 수행할 수 있다. First to kth actual data (PT1 to PTk) may be sequentially input to the initial round core 121_i. The pipeline encryption core 120 may perform encryption operations in parallel on the first to kth actual data (PT1 to PTk) that are sequentially input. That is, the pipeline encryption core 120 can perform encryption operations on the first to kth actual data (PT1 to PTk) in a pipeline manner. For example, while the first round core 121_1 performs a first round operation on the first real data PT1, the initial round core 121_i performs an initial round operation on the second real data PT2. It can be done. While the second round core 121_2 performs the second round operation on the first real data PT1, the first round core 121_1 performs the first round operation on the second real data PT2, , the initial round core 121_i may perform a round operation on the third actual data PT3.

초기 라운드 코어(121_i) 및 제1 내지 제n 라운드 코어(121_1~121_n) 각각은 더미 데이터(VPT0~VPTn) 또는 가상 암호화 키(VRK0~VRKn)를 이용한 가상 암호화 연산을 수행할 수 있다. 예를 들어, 초기 라운드 코어(121_i)에는 초기 더미 데이터(VPT0) 및 초기 가상 암호화 키(VRK0) 중 적어도 하나가 제공될 수 있다. 예를 들어, 초기 라운드 코어(121_i)는 초기 더미 데이터(VPT0) 및 초기 가상 암호화 키(VRK0)를 이용한 가상 암호화 연산을 수행하거나, 초기 더미 데이터(VPT0) 및 초기 실제 암호화 키(RK0)를 이용한 가상 암호화 연산을 수행하거나, 실제 데이터(PT1~PT_k) 및 초기 가상 암호화 키(VRK0)를 이용한 가상 암호화 연산을 수행할 수 있다. 상기 초기 라운드 코어(121_i)의 초기 가상 암호화 연산에 대한 설명은 제1 라운드 코어 내지 제n 라운드 코어(121_1~121_n)의 제1 가상 암호화 연산 내지 제n 가상 암호화 연산에도 적용될 수 있다. 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 key scheduler 125 may manage encryption keys used for encryption operations in response to control of the encryption controller (eg, 110 in FIG. 2). For example, by managing the actual encryption keys (RK0 to RKn) used in the actual encryption operation, the actual encryption keys (RK0 to RKn) to be used in each actual round operation are stored in the initial round core 121_i and the first to second round cores. It can be provided as n round cores (121_1 to 121_n). Additionally, the key scheduler 125 may manage virtual encryption keys (VRK0 to VRKn) used in virtual encryption operations in response to control of the encryption controller 110. The key scheduler 125 may include a memory for storing encryption keys (RK0 to RKn, VRK0 to VRKn), or may access encryption keys stored in other memories.

본 도면에서는, 초기 라운드 코어(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 pipeline encryption core 120 according to the present disclosure, dummy data may be provided to at least one round core among the initial round core 121_i and the first to nth round cores 121_1 to 121_n. In addition, in this drawing, it is shown that virtual encryption keys (for example, VRK0 to VRKn) are 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 does not provide this. Without being limited, a virtual encryption key may be provided to at least one round core among the initial round core 121_i and the first to nth round cores 121_1 to 121_n. Accordingly, the pipeline encryption core 120 of the present disclosure operates at least one round core among the initial round core 121_i and the first to nth round cores 121_1 to 121_n under the control of the encryption controller 110 to perform a virtual round. It may be configured to perform an operation.

도 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 pipeline encryption core 120 of Figure 3 performs an encryption operation according to the Advanced Encryption Standard (AES) established by the U.S. National Institute of Standards and Technology (NIST). Explain. However, Figure 4 is provided to facilitate better understanding, and the present disclosure is not intended to be limited thereto. The encryption operation may be performed by the pipeline encryption core 120 under the control of an encryption controller (eg, 110 in FIG. 2).

도 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 encryption controller 110 can manage the number of actual round operations. If the next round is not the last round, step S120 may be performed again. For example, in step S120, the second round core 121_2 may perform a substitution operation on the data converted in operation S126. On the other hand, if the next actual round operation is the last round operation, step S140 may be performed.

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 key scheduler 125 may select different actual round keys (RK1 to RKn-1) for each of the first to n-1th round cores (121_1 to 121_n-1) for the “AddRoundKey” operation in step S126.

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 encryption controller 110 may determine a round core to perform a virtual round operation among the plurality of round cores 111. In one embodiment, the encryption controller 110 may determine a round core that is vulnerable to an attacker's attack as a round core that will perform a virtual round operation. For example, the encryption controller 110 may select the initial round core 121_i through which actual data is input or the nth round core 121_n through which encrypted data is output. When the first real data (PT1) is input to the initial round core (121_i), the first to nth round cores (121_1 to 121_n) excluding the initial round core (121_i) are not performing the actual round operation, so the attacker's May be vulnerable to side channel analysis attacks. Additionally, since data is first input to the nth round core 121_n during a decryption operation, the nth round core 121_n may be vulnerable to an attacker's side-channel analysis attack for the same reason as the initial round core 121_i. In one embodiment, in step S210, the determined round core may continuously perform a real round operation and a virtual round operation.

S220 단계에서, 암호화 컨트롤러(110)는 결정된 라운드 코어에서 수행될 실제 라운드 연산에 대한 가상 라운드 연산의 비율을 결정할 수 있다. 일 실시 예에서, 실제 라운드 연산 및 가상 라운드 연산의 횟수를 합하면 2의 지수승이 될 수 있다. 즉, 실제 라운드 연산에 대한 가상 라운드 연산의 비율은 2의 지수승에서 1을 뺀 값일 수 있다. 예를 들어, 암호화 컨트롤러(110)는 실제 라운드 연산이 한번 수행될 때, 가상 라운드 연산은 3번 수행되도록 결정할 수 있다. In step S220, the encryption controller 110 may determine the ratio of virtual round operations to actual round operations to be performed on the determined round core. In one embodiment, the sum of the number of real round operations and virtual round operations may be a power of 2. That is, the ratio of virtual round operations to actual round operations may be the exponent of 2 minus 1. For example, the encryption controller 110 may determine that when the actual round operation is performed once, the virtual round operation is performed three times.

S230 단계에서 암호화 컨트롤러(110)는, 결정된 라운드 코어에서 실제 라운드 연산 전/후에 수행될 가상 라운드 연산의 횟수를 결정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 외부로부터 입력되는 랜덤 데이터(D_RAN)를 이용하여, 제1 내지 제k 실제 데이터(PT1~PTk) 각각에 대한 실제 라운드 연산을 수행하기 전과 후에 수행될 가상 라운드 연산의 횟수를 랜덤하게 결정할 수 있다. 예를 들어, 실제 라운드 연산을 기준으로, 선행하는 가상 라운드 연산은 0회, 후행하는 가상 라운드 연산은 3회로 설정되거나, 선행하는 가상 라운드 연산은 1회, 후행하는 가상 라운드 연산은 2회로 설정될 수도 있다. 또는, 예를 들어, 실제 라운드 연산을 기준으로 선행하는 가상 라운드 연산은 2회, 후행하는 가상 라운드 연산은 1회로 설정되거나, 선행하는 가상 라운드 연산은 3회, 후행하는 가상 라운드 연산은 0회로 설정될 수도 있다. In step S230, the encryption controller 110 may determine the number of virtual round operations to be performed before/after the actual round operation on the determined round core. In one embodiment, the encryption controller 110 uses random data (D_RAN) input from the outside to perform virtual rounds to be performed before and after performing the actual round operation on each of the first to kth real data (PT1 to PTk). The number of round operations can be determined randomly. For example, based on the actual round operation, the preceding virtual round operation may be set to 0 times and the following virtual round operation may be set to 3 times, or the preceding virtual round operation may be set to 1 time and the following virtual round operation may be set to 2 times. It may be possible. Or, for example, based on the actual round operation, the preceding virtual round operation is set to 2 times and the following virtual round operation is set to 1 time, or the preceding virtual round operation is set to 3 times and the following virtual round operation is set to 0 times. It could be.

암호화 컨트롤러(110)는 S210 단계 내지 S230 단계에서 결정된 것에 기초하여, 파이프 라인 암호화 코어(120)로 제어 신호(CON_C)를 출력할 수 있다. 파이프 라인 암호화 코어(120)는 수신된 제어 신호에 기초하여, 실제 라운드 연산 및 가상 라운드 연산을 수행할 수 있다.The encryption controller 110 may output a control signal CON_C to the pipeline encryption core 120 based on what is determined in steps S210 to S230. The pipeline encryption core 120 may perform a real round operation and a virtual round operation based on the received control signal.

따라서, 본 개시에 따른 암호화 회로(100)는 실제 라운드 연산 전/또는 후에 적어도 1회의 가상 라운드 연산이 수행되므로, 공격자가 실제 라운드 연산 이 수행되는 시점을 특정하기 어려워질 수 있다. 따라서, 암호화 회로(100)의 보안 수준이 향상될 수 있다.Therefore, since the encryption circuit 100 according to the present disclosure performs at least one virtual round operation before/or after the actual round operation, it may be difficult for an attacker to specify the point in time when the actual round operation is performed. Accordingly, the security level of the encryption circuit 100 can be improved.

도 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 encryption controller 110 may determine the ratio of virtual round operations to round operations to be higher as the round core is expected to be vulnerable to an attacker's attack. 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 (OPSi, OPSn). On the other hand, the ratio of virtual round operations to actual round operations to be performed in each of the first round core (121_1) and the n-1th round core (121_n-1) may be 1, and one real round operation and one virtual round operation may be performed. Round operations can be divided into one round operation set (OPS1, OPSn-1). In one round operation set (OPSi, OPS1, OPSn-1, OPSn), the actual round operation and the virtual round operation can be performed randomly based on a set ratio.

도 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 encryption controller 110 may determine a round core to perform a virtual round operation when another round core is performing an actual round operation. For example, the encryption controller 110 may determine the first round core 121_1 as a round core to perform a virtual round operation.

S320 단계에서, 암호화 컨트롤러(110)는 S310 단계에서 결정된 라운드 코어가 가상 라운드 연산을 수행하는 가상 연산 구간을 설정할 수 있다. 일 실시예에서, 암호화 컨트롤러(110)는 제1 내지 제k 실제 데이터(PT1~PTk)에 대한 암호화 연산이 시작될 때부터 종료될 때까지를 가상 연산 구간으로 설정할 수 있다. 일 실시 예에서, 암호화 컨트롤러(110)는 공격자의 부 채널 분석 공격에 취약한 구간을 가상 연산 구간으로 설정할 수 있고, 예를 들어, 하나의 실제 라운드 연산만이 수행되거나 2개의 실제 라운드 연산이 병렬적으로 수행되는 구간을 가상 연산 구간으로 설정할 수 있다.In step S320, the encryption controller 110 may set a virtual operation section in which the round core determined in step S310 performs a virtual round operation. In one embodiment, the encryption controller 110 may set the period from the start to the end of the encryption operation for the first to kth real data (PT1 to PTk) as a virtual operation period. In one embodiment, the encryption controller 110 may set a section vulnerable to an attacker's side-channel analysis attack as a virtual operation section, for example, only one real round operation is performed or two real round operations are performed in parallel. The section performed can be set as a virtual operation section.

S330 단계에서, 암호화 컨트롤러(110)는 S310 단계에서 결정된 라운드 코어가 실제 라운드 연산을 수행할 예정인지 확인할 수 있다. 예를 들어, S320 단계에서 설정된 가상 연산 구간 내에서, 제1 라운드 코어(121_1)가 실제 라운드 연산을 수행할 예정인지 확인할 수 있다.In step S330, the encryption controller 110 may check whether the round core determined in step S310 is scheduled to actually perform the round operation. For example, it can be confirmed whether the first round core 121_1 is scheduled to perform an actual round operation within the virtual operation section set in step S320.

결정된 라운드 코어가 실제 라운드 연산을 수행할 예정이 아닌 경우에는, 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 encryption controller 110 may check whether the virtual operation section has ended, and if the virtual operation section has not ended, step S330 may be performed again. On the other hand, if the virtual operation section has ended, it can be ended without performing the virtual round operation.

본 개시에 따른 암호화 회로(100)는 실제 라운드 연산 중인 라운드 코어 외의 연산을 수행하지 않는 라운드 코어에서 가상 라운드 연산을 수행함으로써, 노이즈를 발생시킬 수 있다. 따라서, 공격자의 부채널 분석 공격이 어려워질 수 있어, 암호화 회로(100)의 보안 수준이 향상될 수 있다.The encryption circuit 100 according to the present disclosure may generate noise by performing a virtual round operation on a round core that does not perform operations other than the round core currently performing the actual round operation. Accordingly, an attacker's side-channel analysis attack may become difficult, and the security level of the encryption circuit 100 may be improved.

도 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.
제1 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 상기 적어도 하나의 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하고,
상기 결정된 라운드 코어에서 수행될 상기 실제 라운드 연산에 대한 상기 가상 라운드 연산의 비율을 결정하고,
상기 비율에 기초하여, 상기 결정된 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.
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.
제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 비율에 기초하여, 상기 실제 라운드 연산에 선행하여 수행될 상기 가상 라운드 연산의 횟수 및 상기 실제 라운드 연산에 후행하여 수행될 상기 가상 라운드 연산의 횟수를 랜덤하게 결정하고,
상기 결정된 횟수에 기초하여, 상기 결정된 라운드 코어가 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.
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.
제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 입력 데이터가 처음 입력되는 초기 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로.
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.
제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 암호화 데이터가 출력되는 마지막 라운드 코어를 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로.
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.
제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들을 상기 가상 라운드 연산을 수행할 라운드 코어로서 결정하는 것을 특징으로 하는 암호화 회로.
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.
제2 항에 있어서,
상기 암호화 컨트롤러는,
상기 가상 라운드 연산을 수행할 라운드 코어로서 서로 다른 라운드 코어들을 결정하고,
상기 서로 다른 라운드 코어들 각각에서 수행되는 상기 실제 라운드 연산에 대한 상기 가상 라운드 연산의 비율이 서로 상이한 것을 특징으로 하는 암호화 회로.
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.
제1 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 다른 라운드 코어가 실제 라운드 연산을 수행할 때 상기 가상 라운드 연산을 수행할 라운드 코어를 결정하고,
상기 결정된 라운드 코어가 상기 가상 라운드 연산을 수행할 가상 연산 구간을 설정하고,
상기 가상 연산 구간 동안 상기 결정된 라운드 코어가 상기 가상 라운드 연산을 추가로 수행하도록 제어하는 것을 특징으로 하는 암호화 회로.
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.
제8 항에 있어서,
상기 암호화 컨트롤러는,
상기 파이프 라인 암호화 코어가 상기 암호화 연산을 수행하는 구간을 상기 가상 연산 구간으로 설정하는 것을 특징으로 하는 암호화 회로.
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.
제8 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 입력 데이터가 처음 입력되는 초기 라운드 코어가 상기 입력 데이터 중 처음으로 입력되는 데이터에 대한 동작을 수행하는 구간을 포함하도록 상기 가상 연산 구간을 설정하는 것을 특징으로 하는 암호화 회로.
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. .
제8 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중 상기 암호화 데이터가 출력되는 마지막 라운드 코어가 상기 입력 데이터 중 마지막으로 입력되는 데이터에 대한 동작을 수행하는 구간을 포함하도록 상기 가상 연산 구간을 설정하는 것을 특징으로 하는 암호화 회로.
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 항에 있어서,
상기 암호화 컨트롤러는,
상기 복수의 라운드 코어들 중에서 상기 실제 라운드 연산 및 상기 가상 라운드 연산을 연속적으로 수행할 제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 실제 라운드 연산을 수행하는 제1 라운드 코어;
상기 제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.
삭제delete 삭제delete 삭제delete 제13 항에 있어서,
상기 제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 실제 라운드 연산을 수행하는 제1 라운드 코어;
상기 제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.
제18 항에 있어서,
상기 제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.
제18 항에 있어서,
상기 제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.
KR1020180119306A 2018-10-05 2018-10-05 Encryption circuit for virtual encryption operation Active KR102628010B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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