KR102627585B1 - Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same - Google Patents

Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same Download PDF

Info

Publication number
KR102627585B1
KR102627585B1 KR1020160098292A KR20160098292A KR102627585B1 KR 102627585 B1 KR102627585 B1 KR 102627585B1 KR 1020160098292 A KR1020160098292 A KR 1020160098292A KR 20160098292 A KR20160098292 A KR 20160098292A KR 102627585 B1 KR102627585 B1 KR 102627585B1
Authority
KR
South Korea
Prior art keywords
encryption
value
decryption
clock signal
logic
Prior art date
Application number
KR1020160098292A
Other languages
Korean (ko)
Other versions
KR20170134946A (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 US15/488,639 priority Critical patent/US10891396B2/en
Priority to EP17167183.7A priority patent/EP3249633A1/en
Priority to CN201710346062.1A priority patent/CN107437988B/en
Publication of KR20170134946A publication Critical patent/KR20170134946A/en
Application granted granted Critical
Publication of KR102627585B1 publication Critical patent/KR102627585B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 전자 회로는 암호화 연산기 및 컨트롤러를 포함한다. 암호화 연산기는 복수의 논리 게이트를 이용하여 암호화/복호화 연산을 수행한다. 컨트롤러는 암호화/복호화 연산과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어한다. 제어 값이 암호화/복호화 연산이 수행되지 않음을 지시하는 경우, 복수의 논리 게이트는 제 1 시간 구간 및 제 2 시간 구간 중 하나에서 동작한다. 본 발명에 따르면, 암호화/복호화 회로에 의해 소모되는 전력의 양이 감소하고, 암호화/복호화 회로의 연산 성능 및 보안 수준이 향상된다.The electronic circuit of the present invention includes a cryptographic operator and a controller. The encryption operator performs encryption/decryption operations using a plurality of logic gates. The controller is configured to output a logic value such that each of the plurality of logic gates outputs a first logic value during a first time period and outputs a first logic value during a second time period, based on the control value related to the encryption/decryption operation and the clock signal. The operation of the encryption operator is controlled so that the number of gates and the number of logic gates outputting the second logic value are maintained constant. When the control value indicates that the encryption/decryption operation is not performed, the plurality of logic gates operate in one of the first time period and the second time period. According to the present invention, the amount of power consumed by the encryption/decryption circuit is reduced, and the computational performance and security level of the encryption/decryption circuit are improved.

Figure R1020160098292
Figure R1020160098292

Description

부 채널 분석 공격을 방지하기 위한 암호화/복호화 연산을 수행하는 전자 회로 및 그것을 포함하는 전자 장치 {ELECTRONIC CIRCUIT PERFORMING ENCRYPTION/ DECRYPTION OPERATION TO PREVENT SIDE-CHANNEL ANALYSIS ATTACK, AND ELECTRONIC DEVICE INCLUDING THE SAME}Electronic circuit that performs encryption/decryption operations to prevent side-channel analysis attacks and electronic device including the same {ELECTRONIC CIRCUIT PERFORMING ENCRYPTION/ DECRYPTION OPERATION TO PREVENT SIDE-CHANNEL ANALYSIS ATTACK, AND ELECTRONIC DEVICE INCLUDING THE SAME}

본 발명은 전자 회로 및 전자 장치에 관한 것으로, 좀 더 구체적으로는 암호화(Encryption)/복호화(Decryption) 연산을 수행하는 전자 회로 및 전자 장치의 구성들 및 동작들에 관한 것이다.The present invention relates to electronic circuits and electronic devices, and more specifically, to configurations and operations of electronic circuits and electronic devices that perform encryption/decryption operations.

근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 하나 이상의 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 전자 회로의 동작은 전자적인 형태의 데이터가 전자 회로로 입력되거나 전자 회로로부터 출력됨에 따라 수행된다.Recently, various types of electronic devices have been used. An electronic device performs its unique function according to the operations of one or more electronic circuits included in it. The operation of an electronic circuit is performed as data in electronic form is input to or output from the electronic circuit.

입력 또는 출력되는 데이터는 전자 장치 외부의 개체(Entity)에 노출될 수 있다. 예로서, 전자 장치에 대한 공격자(예컨대, 해커(Hacker))는 전자 장치로 입력되는 데이터를 조작(Manipulate)하여, 전자 장치의 제어 권한을 획득할 수 있다. 예로서, 공격자는 전자 장치로부터 출력되는 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 이러한 예들에서, 전자 장치 및 전자 회로의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.Input or output data may be exposed to entities external to the electronic device. For example, an attacker (eg, a hacker) to an electronic device may gain control of the electronic device by manipulating data input to the electronic device. For example, an attacker can manipulate data output from an electronic device to arbitrarily change the data or damage the security properties of the data. In these examples, the security levels and reliability of electronic devices and electronic circuits may deteriorate significantly.

이러한 이유에 기인하여, 전자 장치는 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화/복호화 연산은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, electronic devices may include encryption/decryption circuits to encrypt input or output data and decrypt the encrypted data. The encryption/decryption circuit can encrypt/decrypt data according to an encryption/decryption algorithm using a key. If the key is unknown, it may be difficult for an attacker to determine the key based solely on the input/output data, and therefore, it may also be difficult for an attacker to determine the original version of the encrypted data. Therefore, encryption/decryption operations can improve the security level and reliability of electronic devices and electronic circuits.

그러나, 몇몇 암호화/복호화 회로는 여전히 공격자에 의해 공격될 수 있다. 공격자는, 입력 또는 출력되는 데이터를 직접 조작하는 대신, "부 채널 분석 공격(Side-channel Analysis Attack)"을 행할(Conduct) 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.However, some encryption/decryption circuits can still be exploited by attackers. 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 side information such as the amount of power consumed by the encryption/decryption circuit, the waveform of electromagnetic waves generated by the encryption/decryption circuit, etc. An attacker can attack the encryption/decryption circuit to find out the key used in the encryption/decryption circuit based on the collected information.

본 발명의 실시 예들은 부 채널 분석 공격을 방지하기 위한 암호화 연산 및/또는 복호화 연산을 수행하는 전자 회로 및 전자 장치의 구성들 및 동작들을 제공할 수 있다. 본 발명의 실시 예들에 따른 전자 회로 및 전자 장치는 암호화 연산 및/또는 복호화 연산을 수행하기 위해 필요한 클록 신호를 적응적으로(Adaptive) 이용할 수 있다.Embodiments of the present invention may provide configurations and operations of electronic circuits and electronic devices that perform encryption operations and/or decryption operations to prevent side channel analysis attacks. Electronic circuits and electronic devices according to embodiments of the present invention can adaptively use clock signals necessary to perform encryption operations and/or decryption operations.

본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 이용하여 암호화 및 복호화 연산들 중 적어도 하나를 수행할 수 있다. 컨트롤러는 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어할 수 있다. 제어 값이 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 복수의 논리 게이트는 컨트롤러의 제어에 따라 제 1 시간 구간 및 제 2 시간 구간 중 하나에서 동작할 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption calculator and a controller. The encryption operator may perform at least one of encryption and decryption operations using a plurality of logic gates. Based on a control value related to the performance of at least one of the encryption and decryption operations and a clock signal, the controller causes each of the plurality of logic gates to output a first logic value during a first time period and the plurality of logic gates during a second time period. The operation of the encryption operator can be controlled so that the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the logic gates are maintained constant. When the control value indicates that at least one of the encryption and decryption operations is not performed, the plurality of logic gates may operate in one of the first time period and the second time period under the control of the controller.

본 발명의 실시 예에 따른 전자 회로는 암호화 연산기, 암호화 컨트롤러, 및 구간 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 포함할 수 있다. 암호화 컨트롤러는 암호화 연산기에 의한 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값을 출력할 수 있다. 구간 컨트롤러는 제어 값 및 클록 신호에 기초하여 활성화 신호를 생성할 수 있다. 제 1 시간 구간 동안, 복수의 논리 게이트 각각은 활성화 신호의 비활성화 값에 응답하여 제 1 논리 값을 출력할 수 있다. 제 2 시간 구간 동안, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 활성화 신호의 활성화 값에 응답하여 일정하게 유지될 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption operator, an encryption controller, and a section controller. The cryptographic operator may include a plurality of logic gates. The encryption controller may output a control value related to the performance of at least one of encryption and decryption operations by the encryption operator. The section controller may generate an activation signal based on the control value and clock signal. During the first time period, each of the plurality of logic gates may output a first logic value in response to the deactivation value of the activation signal. During the second time period, the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the plurality of logic gates may be maintained constant in response to the activation value of the activation signal.

본 발명의 실시 예에 따른 전자 장치는 데이터 입력/출력 장치, 암호화/복호화 회로, 및 구간 컨트롤러를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 구간 컨트롤러는 암호화 및 복호화 연산들이 수행되는지 여부를 지시하는 제어 값, 및 클록 신호에 기초하여, 활성화 신호를 생성할 수 있다. 제어 값이 암호화 및 복호화 연산들이 수행되지 않음을 지시하는 경우, 비활성화 값 및 활성화 값 중 하나를 갖는 활성화 신호에 응답하여, 암호화/복호화 회로로부터의 출력들이 변경되지 않고 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다.An electronic device according to an embodiment of the present invention may include a data input/output device, an encryption/decryption circuit, and a section controller. An encryption/decryption circuit may perform encryption and decryption operations for a data input/output device. The section controller may generate an activation signal based on a clock signal and a control value indicating whether encryption and decryption operations are performed. When the control value indicates that encryption and decryption operations are not to be performed, in response to an enable signal having one of the following values: disable and enable, the outputs from the encryption/decryption circuit are left unchanged and the amount consumed by the encryption/decryption circuit is The amount of power can be kept constant.

본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 클록 신호에 기초하여 동작하는 복수의 논리 게이트를 포함할 수 있다. 컨트롤러는, 클록 신호의 제 1 논리 값에 응답하여 복수의 논리 게이트로부터의 출력 값들이 변경되지 않고 클록 신호의 제 2 논리 값에 응답하여 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어할 수 있다. 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이보다 짧을 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption calculator and a controller. The cryptographic operator may include a plurality of logic gates that operate based on a clock signal. The controller includes logic gates that output a first logic value among the plurality of logic gates in response to the second logic value of the clock signal without changing output values from the plurality of logic gates in response to the first logic value of the clock signal. The operation of the encryption operator can be controlled so that the number of logic gates outputting the second logic value is maintained constant. The length of the first time period in which the clock signal has the first logic value may be shorter than the length of the second time period in which the clock signal has the second logic value.

본 발명의 실시 예에 따른 전자 회로는 클록 컨트롤러 및 암호화 연산기를 포함할 수 있다. 클록 컨트롤러는 제 1 클록 신호에 기초하여 제 2 클록 신호를 생성할 수 있다. 암호화 연산기는 제 2 클록 신호에 기초하여 동작하는 복수의 논리 게이트를 포함할 수 있다. 제 1 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 제 1 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이와 동일할 수 있다. 제 2 클록 신호가 제 1 논리 값을 갖는 제 3 시간 구간의 길이는 제 2 클록 신호가 제 2 논리 값을 갖는 제 4 시간 구간의 길이보다 짧을 수 있다. 제 2 클록 신호의 제 1 논리 값에 응답하여, 복수의 논리 게이트로부터의 출력 값들이 변경되지 않을 수 있다. 제 2 클록 신호의 제 2 논리 값에 응답하여, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있다.An electronic circuit according to an embodiment of the present invention may include a clock controller and an encryption calculator. The clock controller may generate a second clock signal based on the first clock signal. The cryptographic operator may include a plurality of logic gates that operate based on the second clock signal. The length of the first time period in which the first clock signal has the first logic value may be the same as the length of the second time period in which the first clock signal has the second logic value. The length of the third time period in which the second clock signal has the first logic value may be shorter than the length of the fourth time period in which the second clock signal has the second logic value. In response to the first logic value of the second clock signal, output values from the plurality of logic gates may not change. In response to the second logic value of the second clock signal, the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the plurality of logic gates may be maintained constant.

본 발명의 실시 예에 따른 전자 장치는 데이터 입력/출력 장치, 클록 컨트롤러, 및 암호화/복호화 회로를 포함할 수 있다. 클록 컨트롤러는 클록 신호를 생성할 수 있다. 암호화/복호화 회로는 클록 신호에 기초하여, 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이보다 짧을 수 있다. 클록 신호의 제 1 논리 값에 응답하여, 암호화/복호화 회로로부터의 출력 값들이 변경되지 않을 수 있다. 클록 신호의 제 2 논리 값에 응답하여, 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다.An electronic device according to an embodiment of the present invention may include a data input/output device, a clock controller, and an encryption/decryption circuit. A clock controller can generate a clock signal. An encryption/decryption circuit may perform encryption and decryption operations for a data input/output device based on a clock signal. The length of the first time period in which the clock signal has the first logic value may be shorter than the length of the second time period in which the clock signal has the second logic value. In response to the first logic value of the clock signal, output values from the encryption/decryption circuit may not change. In response to the second logic value of the clock signal, the amount of power consumed by the encryption/decryption circuit may be kept constant.

본 발명의 실시 예들에 따르면, 암호화/복호화 회로에 의해 소모되는 전력의 양이 감소할 수 있다. 나아가, 암호화/복호화 회로의 연산 성능 및 보안 수준이 향상될 수 있다.According to embodiments of the present invention, the amount of power consumed by the encryption/decryption circuit can be reduced. Furthermore, the computational performance and security level of the encryption/decryption circuit can be improved.

도 1은 본 발명의 실시 예들에 따른 암호화/복호화 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다.
도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.
도 4는 도 2의 암호화/복호화 회로에 포함되는 예시적인 논리 회로를 보여주는 블록도이다.
도 5는 도 4의 논리 회로의 동작을 설명하기 위한 표이다.
도 6은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 8은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 9a 및 도 9b는 도 8의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 10은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 11a 및 도 11b는 도 10의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 12는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 13은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 14는 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 16은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 17은 도 16의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 18은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 19는 도 18의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 21은 도 20의 초기화 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 22a 및 도 22b는 도 21의 타이밍도와 관련하여 도 20의 초기화 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 23은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 24는 도 23의 초기화 랜더마이저(Randomizer)의 예시적인 구성을 보여주는 블록도이다.
1 is a block diagram showing a computing device including electronic devices employing encryption/decryption circuits according to embodiments of the present invention.
FIG. 2 is a block diagram showing an exemplary configuration of the encryption/decryption circuit of FIG. 1.
FIG. 3 is a flow diagram illustrating an example encryption operation performed in the encryption/decryption circuit of FIG. 2.
FIG. 4 is a block diagram showing an example logic circuit included in the encryption/decryption circuit of FIG. 2.
FIG. 5 is a table for explaining the operation of the logic circuit of FIG. 4.
FIG. 6 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.
FIG. 7 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 8 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.
FIGS. 9A and 9B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 8.
FIG. 10 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.
FIGS. 11A and 11B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 10.
FIG. 12 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 13 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 14 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.
FIG. 15 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 16 is a block diagram showing an exemplary configuration of the clock controller of FIG. 15.
FIG. 17 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 16.
FIG. 18 is a block diagram showing an example configuration of the clock controller of FIG. 15.
FIG. 19 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 18.
FIG. 20 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 21 is a timing diagram illustrating time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the initialization controller of FIG. 20.
FIGS. 22A and 22B are block diagrams showing example configurations of the initialization controller of FIG. 20 in relation to the timing diagram of FIG. 21.
FIG. 23 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 24 is a block diagram showing an example configuration of the initialization randomizer of FIG. 23.

아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.Below, embodiments of the present invention are described clearly and in detail with reference to the accompanying drawings so that those skilled in the art (hereinafter, skilled in the art) can easily practice the present invention. It will be explained.

도 1은 본 발명의 실시 예들에 따른 암호화(Encryption)/복호화(Decryption) 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 몇몇 실시 예에서, 컴퓨팅 장치(1000)는 프로세서 장치(1100), 워킹 메모리(Working Memory, 1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(User Interface, 1500), 기타 장치(들)(1600), 및 버스(Bus, 1700)를 포함할 수 있다.1 is a block diagram showing a computing device including electronic devices employing encryption/decryption circuits according to embodiments of the present invention. In some embodiments, the computing device 1000 includes a processor device 1100, a working memory 1200, a storage device 1300, a communication block 1400, a user interface 1500, and other devices ( s) (1600), and a bus (Bus, 1700).

예로서, 컴퓨팅 장치(1000)는 데스크탑(Desktop) 컴퓨터, 랩탑(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 워크스테이션(Workstation), 서버(Server), 디지털 텔레비전, 비디오 게임기(Video Game Console), 스마트 폰, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치들 중 하나일 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다.For example, the computing device 1000 may include a desktop computer, a laptop computer, a tablet computer, a workstation, a server, a digital television, a video game console, and a smart computer. It may be one of various electronic devices such as a 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 is a special-purpose logic circuit (e.g., Field Programmable Gate Array (FPGA), Application Specific Integrated Circuits (ASICs), etc.) including one or more processor cores 1110. It can be implemented. As an 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.

워킹 메모리(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. As an 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 memory such as static random access memory (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), etc. The memory controller 1230 may control the memories 1210 so that the memories 1210 store data or output the stored data.

저장 장치(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 nonvolatile 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 the 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 be a solid state drive (SSD). , may include storage media such as HDD (Hard Disk Drive), SD (Secure Digital) card, MMC (Multimedia Card), etc.

통신 블록(1400)은 프로세서 장치(1100)의 제어에 따라, 컴퓨팅 장치(1000)의 외부 장치/시스템과 통신할 수 있다. 예로서, 통신 블록(1400)은 이더넷(Ethernet), TCP/IP(Transfer Control Protocol/Internet Protocol), USB(Universal Serial Bus), Firewire 등과 같은 다양한 유선 통신 규약 중 적어도 하나, 및/또는 LTE(Long Term Evolution), WiMax(Worldwide Interoperability for Microwave Access), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나에 따라 컴퓨팅 장치(1000)의 외부 장치/시스템과 통신할 수 있다.The communication block 1400 may communicate with an external device/system of the computing device 1000 under the control of the processor device 1100. As an example, the communication block 1400 may use at least one of various wired communication protocols such as Ethernet, Transfer Control Protocol/Internet Protocol (TCP/IP), Universal Serial Bus (USB), Firewire, and/or LTE (Long Term Evolution), WiMax (Worldwide Interoperability for Microwave Access), GSM (Global System for Mobile communications), CDMA (Code Division Multiple Access), Bluetooth, NFC (Near Field Communication), WiFi (Wireless Fidelity), RFID (Radio Frequency Identification) ) may communicate with an external device/system of the computing device 1000 according to at least one of various wireless communication protocols such as ).

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

그 밖에도, 컴퓨팅 장치(1000)는 기타 장치(1600)를 더 포함할 수 있다. 예로서, 기타 장치(1600)는 이미지 센서, 그래픽 처리 유닛(Graphic Processing Unit), 사운드 처리기, GPS(Global Positioning System) 장치 등 다양한 주변 장치를 포함할 수 있다.In addition, the computing device 1000 may further include other devices 1600. For example, the other device 1600 may include various peripheral devices such as an image sensor, a graphics processing unit, a sound processor, and a Global Positioning System (GPS) device.

프로세서 장치(1100), 워킹 메모리(1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 기타 장치(1600) 각각은 칩 레벨 및/또는 패키지 레벨의 장치로 구현될 수 있고, 컴퓨팅 장치(1100)에 장착될 수 있다. 또는, 프로세서 장치(1100), 워킹 메모리(1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 기타 장치(1600) 각각은 독립적인 전자 장치로 구현될 수 있고, 컴퓨팅 장치(1100) 내에 조립될 수 있다. 장착된 또는 조립된 구성 요소(Component)들은 버스(1700)를 통해 서로 연결될 수 있다.Each of the processor device 1100, working memory 1200, storage device 1300, communication block 1400, user interface 1500, and other devices 1600 may be implemented as chip-level and/or package-level devices. and may be mounted on the computing device 1100. Alternatively, the processor device 1100, working memory 1200, storage device 1300, communication block 1400, user interface 1500, and other devices 1600 may each be implemented as independent electronic devices, Can be assembled into computing device 1100. Mounted or assembled components may be connected to each other through a bus 1700.

버스(1700)는 컴퓨팅 장치(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(1000)의 구성 요소들은 버스(1700)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 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 1700 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 1700. As examples, 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 (Serial Attached SCSI), UFS (Universal Flash Storage), etc.

컴퓨팅 장치(1000)의 동작에 따라, 데이터가 컴퓨팅 장치(1000)의 구성 요소들로 입력되거나 컴퓨팅 장치(1000)의 구성 요소들로부터 출력될 수 있다. 컴퓨팅 장치(1000)의 구성 요소들 각각은 데이터 입력/출력 장치로 언급될 수 있다.Depending on the operation of the computing device 1000, data may be input to or output from the components of the computing device 1000. Each of the components of the computing device 1000 may be referred to as a data input/output device.

입력 또는 출력되는 데이터는 컴퓨팅 장치(1000) 외부의 개체(Entity)에 노출될 수 있다. 예로서, 컴퓨팅 장치(1000)에 대한 공격자(예컨대, 해커(Hacker))는 프로세서 장치(1100)로 입력되는 데이터를 조작(Manipulate)하여, 프로세서 장치(1100) 및 컴퓨팅 장치(1000)의 제어 권한을 획득할 수 있다. 예로서, 공격자는 프로세서 장치(1100)의 제어 권한을 획득하여, 컴퓨팅 장치(1000)의 동작을 중단시키거나 컴퓨팅 장치(1000)를 악의적으로 동작시킬 수 있다.Input or output data may be exposed to entities external to the computing device 1000. For example, an attacker (e.g., a hacker) on the computing device 1000 may manipulate data input to the processor device 1100 and gain control of the processor device 1100 and the computing device 1000. can be obtained. For example, an attacker may gain control of the processor device 1100 and stop the operation of the computing device 1000 or operate the computing device 1000 maliciously.

예로서, 공격자는 워킹 메모리(1200) 및/또는 저장 장치(1300)에 저장된 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 예로서, 공격자는 워킹 메모리(1200)에 저장된 데이터에 악성 코드(Malicious Code)를 삽입하거나, 저장 장치(1300)에 저장된 데이터의 접근 암호 또는 DRM(Digital Right Management) 속성을 깨뜨릴(Crack) 수 있다. 이러한 예들에서, 컴퓨팅 장치(1000) 및 그것의 구성 요소들의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.For example, an attacker may manipulate data stored in the working memory 1200 and/or the storage device 1300 to arbitrarily change the data or damage the security properties of the data. For example, an attacker may insert malicious code into data stored in the working memory 1200 or crack the access password or Digital Right Management (DRM) properties of data stored in the storage device 1300. . In these examples, the security levels and reliability of computing device 1000 and its components may deteriorate significantly.

이러한 이유에 기인하여, 컴퓨팅 장치(1000)의 구성 요소들은 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 암호화 및 복호화 연산들에서, 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화 및 복호화 연산들은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, components of the computing device 1000 may include encryption/decryption circuits to encrypt input or output data and decrypt the encrypted data. An encryption/decryption circuit may perform encryption and decryption operations for a data input/output device. In encryption and decryption operations, the encryption/decryption circuit can encrypt/decrypt data according to an encryption/decryption algorithm using a key. If the key is unknown, it may be difficult for an attacker to determine the key based solely on the input/output data, and therefore, it may also be difficult for an attacker to determine the original version of the encrypted data. Therefore, encryption and decryption operations can improve the security level and reliability of electronic devices and electronic circuits.

예로서, 프로세서 장치(1100)는 암호화/복호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로부터 출력되는 데이터를 암호화할 수 있다. 나아가, 프로세서 장치(1100)는 암호화/복호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로 입력될 데이터를 복호화할 수 있다. 암호화 및 복호화 연산들에 따라 변형되는 데이터를 이해하고 분석하는 것은 공격자에게 어려울 수 있다. 따라서, 프로세서 장치(1100)의 제어 권한이 보호될 수 있다.As an example, the processor device 1100 may encrypt data output from the processor cores 1110 and/or caches 1130 using the encryption/decryption circuit 1150. Furthermore, the processor device 1100 may decrypt data to be input to the processor cores 1110 and/or caches 1130 using the encryption/decryption circuit 1150. It can be difficult for an attacker to understand and analyze data that is transformed according to encryption and decryption operations. Accordingly, the control authority of the processor device 1100 can be protected.

예로서, 워킹 메모리(1200)는 암호화/복호화 회로(1250)를 이용하여, 메모리들(1210)에 저장될 데이터를 암호화할 수 있다. 나아가, 워킹 메모리(1200)는 암호화/복호화 회로(1250)를 이용하여, 메모리들(1210)로부터 출력되는 데이터를 복호화할 수 있다. 유사하게, 저장 장치(1300)는 암호화/복호화 회로(1350)를 이용하여, 불휘발성 메모리들(1310)에 저장될 데이터를 암호화할 수 있다. 나아가, 저장 장치(1300)는 암호화/복호화 회로(1350)를 이용하여, 불휘발성 메모리들(1310)로부터 출력되는 데이터를 복호화할 수 있다. 따라서, 메모리들(1210) 및/또는 불휘발성 메모리들(1310)에 저장된 데이터를 임의로 변경하거나 손상시키는 것은 공격자에게 어려울 수 있고, 저장된 데이터가 안전하게 보호될 수 있다.As an example, the working memory 1200 may use the encryption/decryption circuit 1250 to encrypt data to be stored in the memories 1210. Furthermore, the working memory 1200 can decrypt data output from the memories 1210 using the encryption/decryption circuit 1250. Similarly, the storage device 1300 can encrypt data to be stored in the non-volatile memories 1310 using the encryption/decryption circuit 1350. Furthermore, the storage device 1300 can decrypt data output from the non-volatile memories 1310 using the encryption/decryption circuit 1350. Accordingly, it may be difficult for an attacker to arbitrarily change or damage data stored in the memories 1210 and/or non-volatile memories 1310, and the stored data may be safely protected.

도 1은 암호화/복호화 회로들(1150, 1250, 1350)이 데이터 입력/출력 장치들(1100, 1200, 1300)에 포함되는 것을 보여준다. 그러나, 몇몇 경우, 암호화/복호화 회로들(1150, 1250, 1350)은 데이터 입력/출력 장치들(1100, 1200, 1300)과 별개로 구현될 수 있다. 나아가, 데이터 입력/출력 장치들(1100, 1200, 1300) 외의 몇몇 장치들(예컨대, 1400, 1500, 1600 등) 및 버스(1700) 각각 역시 암호화/복호화 회로를 채용할 수 있다. 암호화/복호화 회로는 데이터가 입력 또는 출력되는 경로 상이라면 어디든 채용될 수 있다. 도 1은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.Figure 1 shows that encryption/decryption circuits 1150, 1250, and 1350 are included in data input/output devices 1100, 1200, and 1300. However, in some cases, the encryption/decryption circuits 1150, 1250, and 1350 may be implemented separately from the data input/output devices 1100, 1200, and 1300. Furthermore, in addition to the data input/output devices 1100, 1200, and 1300, some devices (eg, 1400, 1500, 1600, etc.) and the bus 1700 may also employ encryption/decryption circuits. Encryption/decryption circuits can be employed anywhere on the path where data is input or output. Figure 1 is provided to aid better understanding and is not intended to limit the invention.

이하, 암호화/복호화 회로(1350)의 예시적인 구성들 및 동작들이 도 2 내지 도 24를 참조하여 설명될 것이다. 그러나, 암호화/복호화 회로들(1150, 1250) 및 그 외 도시되지 않은 암호화/복호화 회로 역시 이하의 실시 예들에 따라 구성되고 동작할 수 있다. 이하의 실시 예들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.Hereinafter, example configurations and operations of the encryption/decryption circuit 1350 will be described with reference to FIGS. 2 to 24. However, the encryption/decryption circuits 1150 and 1250 and other encryption/decryption circuits not shown may also be configured and operated according to the following embodiments. The following examples are provided to aid better understanding and are not intended to limit the present invention.

도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다. 도 1 및 도 2에 나타낸 것과 같이, 암호화/복호화 회로(1350)는 저장 장치(1300)에서 불휘발성 메모리들(1310) 및 메모리 컨트롤러(1330)와 연결될 수 있다. 이 명세서에서 불휘발성 메모리들(1310)을 위한 암호화/복호화 회로(1350)가 설명되지만, 암호화/복호화 회로(1350)는 저장 장치(1300)에 포함되는 휘발성 메모리(예컨대, 버퍼 메모리, 캐시 메모리 등)에도 적용될 수 있다.FIG. 2 is a block diagram showing an exemplary configuration of the encryption/decryption circuit of FIG. 1. As shown in FIGS. 1 and 2 , the encryption/decryption circuit 1350 may be connected to the non-volatile memories 1310 and the memory controller 1330 in the storage device 1300. Although the encryption/decryption circuit 1350 for non-volatile memories 1310 is described in this specification, the encryption/decryption circuit 1350 does not include volatile memory (e.g., buffer memory, cache memory, etc.) included in the storage device 1300. ) can also be applied.

몇몇 실시 예에서, 암호화/복호화 회로(1350)는 버퍼(1351), 암호화 연산기(1352), 복호화 연산기(1353), 키 관리기(1354), S-Box(Substitution-Box, 1355), 및 암호화/복호화 컨트롤러(1356)를 포함할 수 있다. 다만, 몇몇 다른 실시 예에서, 암호화/복호화 회로(1350)는 도 2에 나타낸 구성 요소들 중 몇몇을 포함하지 않거나, 도 2에 나타내지 않은 구성 요소를 더 포함할 수 있다.In some embodiments, the encryption/decryption circuit 1350 includes a buffer 1351, an encryption operator 1352, a decryption operator 1353, a key manager 1354, a Substitution-Box (S-Box) 1355, and an encryption/decryption operator 1355. It may include a decryption controller 1356. However, in some other embodiments, the encryption/decryption circuit 1350 may not include some of the components shown in FIG. 2 or may further include components not shown in FIG. 2 .

버퍼(1351)는 불휘발성 메모리들(1310) 및 메모리 컨트롤러(1330)로부터 제공되는 데이터를 일시적으로 저장(예컨대, 버퍼링)할 수 있다. 버퍼(1351)에 버퍼링된 데이터는 암호화 연산기(1352) 또는 복호화 연산기(1353)로 제공될 수 있다. 즉, 버퍼(1351)는 암호화 연산 및/또는 복호화 연산이 수행될 데이터를 저장할 수 있다.The buffer 1351 may temporarily store (eg, buffer) data provided from the non-volatile memories 1310 and the memory controller 1330. Data buffered in the buffer 1351 may be provided to the encryption operator 1352 or the decryption operator 1353. That is, the buffer 1351 can store data on which encryption and/or decryption operations are to be performed.

암호화 연산기(1352)는 불휘발성 메모리들(1310)에 저장될 데이터에 대해 암호화 연산을 수행할 수 있다. 따라서, 불휘발성 메모리들(1310)에 저장되는 데이터의 보안 수준이 향상될 수 있다. 복호화 연산기(1353)는 불휘발성 메모리들(1310)로부터 읽힌 데이터에 대해 복호화 연산을 수행할 수 있다. 따라서, 메모리 컨트롤러(1330)는 복호화된 데이터를 수신할 수 있다.The encryption operator 1352 may perform an encryption operation on data to be stored in the non-volatile memories 1310. Accordingly, the security level of data stored in the non-volatile memories 1310 can be improved. The decryption operator 1353 may perform a decryption operation on data read from the non-volatile memories 1310. Accordingly, the memory controller 1330 can receive decrypted data.

몇몇 암호화 및 복호화 연산은 키(Key)를 이용하여 수행될 수 있다. 예로서, 몇몇 암호화 및 복호화 연산은 주어진 데이터 및 주어진 키에 대해 조합(Combinational) 논리 연산(예컨대, 논리 합(Or) 연산, 논리 곱(And) 연산, 배타적 논리 합(Exclusive Or) 연산 등)을 수행하는 것을 포함할 수 있다. 키는 외부의 개체에 알려지지 않을 수 있고, 암호화/복호화 회로(1350)에서 고유하게 선택될 수 있다. 따라서, 암호화 및 복호화 연산들은 데이터를 공격자의 공격으로부터 보호할 수 있다.Some encryption and decryption operations can be performed using keys. As an example, some encryption and decryption operations involve combinational logical operations (e.g., Or, And, Exclusive Or, etc.) for given data and a given key. It may include performing The key may not be known to an external entity and may be uniquely selected in the encryption/decryption circuit 1350. Accordingly, encryption and decryption operations can protect data from attackers' attacks.

키 관리기(1354)는 암호화 및 복호화 연산들에 이용되는 키를 관리할 수 있다. 키 관리기(1354)는 키를 저장하기 위한 메모리를 포함하거나, 다른 메모리에 저장된 키로 액세스할 수 있다.Key manager 1354 may manage keys used in encryption and decryption operations. Key manager 1354 may include memory for storing keys, or may access keys stored in other memories.

도 3을 참조하여 설명될 것과 같이, 암호화 연산(및/또는 복호화 연산)은 한 번만 수행되는 것이 아니라, 보안 수준을 높이기 위해 여러 번 반복될 수 있다. 암호화 연산(및/또는 복호화 연산)을 한 번 수행하는 것은 하나의 "라운드(Round)"로 언급될 수 있다. 암호화 연산들(및/또는 복호화 연산들)의 반복 횟수는 "라운드 값"에 기초하여 관리될 수 있다. 예로서, 키는 각 라운드마다 상이하게 선택될 수 있다. 예로서, 첫 번째 라운드를 위해 선택되는 키는 두 번째 라운드를 위해 선택되는 키와 상이할 수 있다.As will be explained with reference to Figure 3, the encryption operation (and/or decryption operation) is not performed only once, but may be repeated multiple times to increase the level of security. Performing an encryption operation (and/or decryption operation) once may be referred to as one “Round.” The number of repetitions of encryption operations (and/or decryption operations) may be managed based on a “round value”. As an example, the key may be selected differently for each round. As an example, the key selected for the first round may be different from the key selected for the second round.

키 관리기(1354)는 복수의 키를 관리할 수 있다. 키 관리기(1354)는 복수의 키 중에서, 각 라운드에서 선택될 키를 스케줄링할 수 있다. 키 관리기(1354)는 암호화 연산기(1352) 및/또는 복호화 연산기(1353)의 요청들에 응답하여, 스케줄링된 키를 암호화 연산기(1352) 및/또는 복호화 연산기(1353)로 제공할 수 있다.Key manager 1354 can manage multiple keys. The key manager 1354 can schedule a key to be selected in each round among a plurality of keys. The key manager 1354 may provide a scheduled key to the encryption operator 1352 and/or the decryption operator 1353 in response to requests from the encryption operator 1352 and/or the decryption operator 1353.

S-Box(1355)는 치환(Substitution) 연산을 수행할 수 있다. 치환 연산에서, S-Box(1355)는 m-비트의 입력을 n-비트의 출력으로 변환(Convert)할 수 있다(m, n 각각은 1 이상의 정수이고, m은 n과 동일하거나 상이할 수 있음). 예로서, S-Box(1355)의 치환 연산은 m-비트의 입력과 n-비트의 출력 사이의 대응 관계를 포함하는 룩-업 테이블(Look-up Table)을 기반으로 수행될 수 있다.S-Box 1355 can perform substitution operations. In the substitution operation, the S-Box 1355 can convert m-bit input into n-bit output (m and n are each integers of 1 or more, and m may be the same as or different from n. has exist). As an example, the substitution operation of the S-Box 1355 may be performed based on a look-up table including a correspondence between m-bit input and n-bit output.

예로서, 암호화 연산기(1352) 및 복호화 연산기(1353)는 버퍼(1351)로부터 수신되는 데이터에 대해 암호화 연산 및 복호화 연산을 직접 수행하는 대신, S-Box(1355)에 의해 치환된 데이터에 대해 암호화 연산 및 복호화 연산을 수행할 수 있다. S-Box(1355)는 암호화 연산기(1352) 및 복호화 연산기(1353)를 위해, 버퍼(1351)에 버퍼링된 데이터를 다른 데이터로 변환할 수 있다. S-Box(1355)가 암호화 및 복호화 연산들이 수행될 데이터를 변경하기 때문에, 데이터의 보안 수준이 더욱 향상될 수 있다.For example, instead of directly performing encryption and decryption operations on data received from the buffer 1351, the encryption operator 1352 and the decryption operator 1353 encrypt the data replaced by the S-Box 1355. Calculation and decryption operations can be performed. The S-Box 1355 can convert data buffered in the buffer 1351 into other data for the encryption operator 1352 and the decryption operator 1353. Because the S-Box 1355 changes the data on which encryption and decryption operations are performed, the security level of the data can be further improved.

몇몇 경우, S-Box(1355)는 키 관리기(1354)에 의해 선택된 키에 대해서도 치환 연산을 수행할 수 있다. 데이터 및 키 모두가 변경되는 경우, 암호화 및 복호화 연산들은 데이터를 더 안전하게 보호할 수 있다.In some cases, S-Box 1355 may also perform substitution operations on keys selected by key manager 1354. Encryption and decryption operations can keep data more secure when both data and keys change.

암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355) 각각은 복수의 논리 게이트를 포함할 수 있다. 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)는 논리 게이트들을 이용하여 암호화 연산, 복호화 연산, 및 치환 연산을 각각 수행할 수 있다.Each of the encryption operator 1352, the decryption operator 1353, and the S-Box 1355 may include a plurality of logic gates. The encryption operator 1352, the decryption operator 1353, and the S-Box 1355 can respectively perform encryption operations, decryption operations, and substitution operations using logic gates.

암호화 연산기(1352)의 논리 게이트들은 암호화 연산을 수행하기 위해 클록 신호(CLK1)에 기초하여 동작할 수 있다. 복호화 연산기(1353)의 논리 게이트들은 복호화 연산을 수행하기 위해 클록 신호(CLK2)에 기초하여 동작할 수 있다. S-Box(1355)의 논리 게이트들은 치환 연산을 수행하기 위해 클록 신호(CLK3)에 기초하여 동작할 수 있다. 클록 신호들(CLK1, CLK2, CLK3) 각각은 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 갖도록 상승 에지(Rising Edge) 및 하강 에지(Falling Edge)로 형성되는 신호를 의미할 수 있다.The logic gates of the cryptographic operator 1352 may operate based on the clock signal CLK1 to perform the cryptographic operation. The logic gates of the decryption operator 1353 may operate based on the clock signal CLK2 to perform a decryption operation. The logic gates of the S-Box 1355 may operate based on the clock signal CLK3 to perform a substitution operation. Each of the clock signals CLK1, CLK2, and CLK3 has a rising edge and a falling edge to have a first logic value (e.g., logic “0”) and a second logic value (e.g., logic “1”). It may refer to a signal formed by an edge.

예로서, 클록 신호들(CLK1, CLK2, CLK3) 각각은 암호화/복호화 회로(1350) 내부 또는 외부의 클록 생성기로부터 제공될 수 있다. 예로서, 스토리지 장치(1300) 및/또는 컴퓨팅 장치(1000)는 클록 신호들(CLK1, CLK2, CLK3)을 생성하는 클록 생성기(들)를 포함할 수 있다. 예로서, 클록 신호들(CLK1, CLK2, CLK3)은 별개의 클록 생성기들로부터 제공되거나, 하나의 클록 생성기로부터 제공될 수 있다.As an example, each of the clock signals CLK1, CLK2, and CLK3 may be provided from a clock generator internal or external to the encryption/decryption circuit 1350. As an example, storage device 1300 and/or computing device 1000 may include clock generator(s) that generate clock signals CLK1, CLK2, and CLK3. By way of example, the clock signals CLK1, CLK2, and CLK3 may be provided from separate clock generators, or may be provided from one clock generator.

도 2는 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)가 각각 별개의 클록 신호들(CLK1, CLK2, CLK3)을 수신하는 것을 보여준다. 그러나, 몇몇 실시 예에서, 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)의 일부 또는 전부는 동일한 클록 신호를 공유할 수 있다.Figure 2 shows that the encryption operator 1352, the decryption operator 1353, and the S-Box 1355 each receive separate clock signals (CLK1, CLK2, and CLK3). However, in some embodiments, some or all of encryption operator 1352, decryption operator 1353, and S-Box 1355 may share the same clock signal.

암호화 연산기(1352)가 복호화 연산기(1353)와 별개로 구현되는 경우, 암호화 연산 및 복호화 연산이 병렬로 수행될 수 있어서, 암호화/복호화 회로(1350)의 성능이 향상될 수 있다. 한편, 몇몇 경우, 암호화 연산기(1352) 및 복호화 연산기(1353)는 하나의 모듈로 구현될 수 있고, 따라서 암호화/복호화 회로(1350)의 면적이 감소할 수 있다. 몇몇 경우, 암호화/복호화 회로(1350)는 더 높은 성능을 얻기 위해, 복수의 암호화 연산기 및/또는 복수의 복호화 연산기를 포함할 수 있다.When the encryption operator 1352 is implemented separately from the decryption operator 1353, the encryption operation and the decryption operation can be performed in parallel, thereby improving the performance of the encryption/decryption circuit 1350. Meanwhile, in some cases, the encryption operator 1352 and the decryption operator 1353 may be implemented as one module, and thus the area of the encryption/decryption circuit 1350 may be reduced. In some cases, the encryption/decryption circuit 1350 may include multiple encryption operators and/or multiple decryption operators to achieve higher performance.

도 2에 나타낸 것처럼, S-Box(1355)는 독립적인 모듈로 구현될 수 있다. 그러나, 몇몇 경우, S-Box(1355)는 암호화 연산기(1352), 복호화 연산기(1353), 및/또는 키 관리기(1354)에 포함될 수 있다. 암호화 연산기(1352), 복호화 연산기(1353), 및 키 관리기(1354)는 S-Box(1355)를 공유하거나, 별개의 S-Box들을 이용할 수 있다.As shown in Figure 2, S-Box 1355 can be implemented as an independent module. However, in some cases, S-Box 1355 may be included in encryption operator 1352, decryption operator 1353, and/or key manager 1354. The encryption operator 1352, the decryption operator 1353, and the key manager 1354 may share the S-Box 1355 or use separate S-Boxes.

암호화/복호화 컨트롤러(1356)는 암호화/복호화 회로(1350)의 구성 요소들의 동작들을 제어할 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)는 버퍼(1351), 암호화 연산기(1352), 복호화 연산기(1353), 및 키 관리기(1354)의 동작들을 제어할 수 있다.The encryption/decryption controller 1356 may control the operations of the components of the encryption/decryption circuit 1350. As an example, the encryption/decryption controller 1356 may control the operations of the buffer 1351, the encryption operator 1352, the decryption operator 1353, and the key manager 1354.

예로서, 암호화/복호화 컨트롤러(1356)는 요청(REQ)에 응답하여 암호화 연산기(1352)의 암호화 연산 및/또는 복호화 연산기(1353)의 복호화 연산을 개시시킬 수 있다. 요청(REQ)은 암호화/복호화 회로(1350)의 외부 구성 요소(예컨대, 메모리 컨트롤러(1330), 프로세서 장치(1100) 등)로부터 제공되거나, 암호화/복호화 회로(1350) 내부에서 생성될 수 있다.As an example, the encryption/decryption controller 1356 may initiate an encryption operation of the encryption operator 1352 and/or a decryption operation of the decryption operator 1353 in response to a request (REQ). The request (REQ) may be provided from an external component of the encryption/decryption circuit 1350 (e.g., memory controller 1330, processor unit 1100, etc.), or may be generated within the encryption/decryption circuit 1350.

암호화/복호화 컨트롤러(1356)는 레지스터(Register, 1356a)를 포함할 수 있다. 레지스터(1356a)는 제어 값을 저장할 수 있다. 제어 값은 암호화 및 복호화 연산들 중 적어도 하나를 수행하는 것과 관련될 수 있다. 예로서, 제어 값은 암호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시하거나, 암호화 연산의 환경(예컨대, 속도, 보안 수준, 연산 모드 등)을 지시할 수 있다.The encryption/decryption controller 1356 may include a register (Register, 1356a). Register 1356a may store control values. The control value may be related to performing at least one of encryption and decryption operations. By way of example, a control value may indicate whether a cryptographic operation is performed or not performed, or may indicate the circumstances of the cryptographic operation (e.g., speed, security level, operation mode, etc.).

제어 값은 요청(REQ)에 응답하여 또는 암호화/복호화 컨트롤러(1356)의 판별에 기초하여 레지스터(1356a)에 저장될 수 있다. 예로서, 메모리 컨트롤러(1330)가 암호화 연산을 개시하기 위한 요청(REQ)을 암호화/복호화 컨트롤러(1356)로 제공한 경우, 레지스터(1356a)는 암호화 연산이 수행됨을 지시하는 제어 값을 저장할 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)는 레지스터(1356a)에 저장된 제어 값을 참조하여, 암호화 연산이 수행되도록 버퍼(1351), 암호화 연산기(1352), 및 키 관리기(1354)의 동작들을 제어할 수 있다.The control value may be stored in register 1356a in response to a request (REQ) or based on a determination of the encryption/decryption controller 1356. As an example, if the memory controller 1330 provides a request (REQ) to initiate an encryption operation to the encryption/decryption controller 1356, register 1356a may store a control value indicating that the encryption operation is performed. . As an example, the encryption/decryption controller 1356 refers to the control value stored in the register 1356a and controls the operations of the buffer 1351, the encryption operator 1352, and the key manager 1354 so that the encryption operation is performed. You can.

도 2를 참조하여 "레지스터"가 설명되었으나, 본 발명은 도 2에 의해 한정되지 않는다. 암호화/복호화 컨트롤러(1356)는 제어 값을 저장하기 위해 레지스터 외의 다른 유형의 메모리를 채용할 수 있다. 나아가, 위에서 설명된 것과 같이, 도 2에 나타낸 블록들은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 다른 실시 예들에서, 몇몇 블록은 더 큰 단위의 블록으로 결합될 수 있고, 하나의 블록이 복수의 블록으로 나뉠 수도 있다.Although “register” has been described with reference to FIG. 2, the present invention is not limited to FIG. 2. The encryption/decryption controller 1356 may employ other types of memory other than registers to store control values. Furthermore, as explained above, the blocks shown in FIG. 2 are provided to aid better understanding and are not intended to limit the invention. In other embodiments, some blocks may be combined into larger blocks, and one block may be divided into multiple blocks.

도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.FIG. 3 is a flow diagram illustrating an example encryption operation performed in the encryption/decryption circuit of FIG. 2.

예로서, 도 3은 암호화/복호화 회로(1350)가 미국 NIST(U.S. National Institute of Standards and Technology)에 의해 수립(Establish)된 AES(Advanced Encryption Standard)에 따라 암호화 연산을 수행하는 것을 설명한다. 암호화 연산은 주로 암호화/복호화 컨트롤러(1356)의 제어에 따라 암호화 연산기(1352)에 의해 수행될 수 있다. 레지스터(1356a)는 암호화 연산의 수행 및 환경을 지시하는 제어 값을 저장할 수 있다.As an example, Figure 3 illustrates that the encryption/decryption circuit 1350 performs an encryption operation according to the Advanced Encryption Standard (AES) established by the U.S. National Institute of Standards and Technology (NIST). The encryption operation may be performed by the encryption operator 1352 mainly under the control of the encryption/decryption controller 1356. The register 1356a can store control values that indicate the performance and environment of the encryption operation.

S110 동작에서, 암호화 연산기(1352)는 "AddRoundKey" 연산을 수행할 수 있다. "AddRoundKey" 연산은 버퍼(1351)로부터의 데이터 및 키 관리기(1354)로부터의 키에 대해 비트 단위의(Bitwise) 조합 논리 연산(예컨대, 논리 합 연산, 논리 곱 연산, 배타적 논리 합 연산 등)을 수행하는 것을 포함할 수 있다. 따라서, 버퍼(1351)로부터의 데이터는 선택된 키에 기초하여 다른 데이터로 변환될 수 있다.In operation S110, the cryptographic operator 1352 may perform the “AddRoundKey” operation. The “AddRoundKey” operation performs a bitwise combinational logical operation (e.g., a logical sum operation, a logical product operation, an exclusive logical sum operation, etc.) on the data from the buffer 1351 and the key from the key manager 1354. It may include performing Accordingly, data from buffer 1351 can be converted to other data based on the selected key.

S120 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S110 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S122 동작에서, 암호화 연산기(1352)는 S120 동작에서 치환된 데이터의 스테이트(State)에 대해 "ShiftRows" 연산을 수행할 수 있다. "ShiftRows" 연산에서, 데이터 스테이트의 행(Row)들이 순환 구조로(Cyclic) 시프트(Shift)될 수 있다. S124 동작에서, 암호화 연산기(1352)는 S122 동작에서 시프트된 데이터 스테이트에 대해 "MixColumns" 연산을 수행할 수 있다. "MixColumns" 연산에서, 데이터 스테이트의 열(Column)들이 섞일(Mix) 수 있다.In operation S120, the S-Box 1355 may perform a substitution operation on the data converted in operation S110 in response to a request from the encryption operator 1352. In operation S122, the encryption operator 1352 may perform a “ShiftRows” operation on the state of the data replaced in operation S120. In the “ShiftRows” operation, rows of the data state can be shifted in a cyclic structure. In operation S124, the encryption operator 1352 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 동작에서, 암호화 연산기(1352)는 S124 동작에서 섞인 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 암호화 연산기(1352)는 변환된 데이터 및 키 관리기(1354)로부터의 키에 대해 비트 단위의 조합 논리 연산을 수행할 수 있다. 몇몇 실시 예에서, 암호화 연산기(1352)는 설정에 따라 S126 동작을 생략하고 S130 동작을 수행할 수 있다.Thereafter, in operation S126, the encryption operator 1352 may perform an “AddRoundKey” operation on the converted data having a mixed state in operation S124. The encryption operator 1352 may perform a bit-wise combinational logic operation on the converted data and the key from the key manager 1354. In some embodiments, the encryption operator 1352 may omit operation S126 and perform operation S130 depending on settings.

S120 내지 S126 동작들에 따라, 버퍼(1351)로부터의 데이터는 원래의 값과 상이한 다른 값을 갖도록 변환될 수 있다. 따라서, 공격자가 데이터를 의도적으로 공격하는 것이 어려워질 수 있고, 보안 수준이 향상될 수 있다. S120 내지 S126 동작들은 하나의 라운드를 구성할 수 있다. 키 관리기(1354)는 S126 동작의 "AddRoundKey" 연산을 위해 각 라운드마다 상이한 키들을 선택할 수 있다.According to operations S120 to S126, data from the buffer 1351 may be converted to have a different value from the original value. Therefore, it can become difficult for attackers to intentionally attack data, and the security level can be improved. Operations S120 to S126 may constitute one round. The key manager 1354 may select different keys for each round for the “AddRoundKey” operation of operation S126.

S130 동작에서, 암호화/복호화 컨트롤러(1356)는 다음 라운드가 마지막 라운드인지 여부를 판별할 수 있다. 암호화/복호화 컨트롤러(1356)는 라운드 값을 관리할 수 있고, 하나의 라운드가 수행될 때마다 라운드 값을 1씩 증가시킬 수 있다. 예로서, 라운드들은 데이터 크기에 의존하여 10번, 12번, 또는 14번 반복될 수 있고(다만, 본 발명은 이에 한정되지 않음), 암호화/복호화 컨트롤러(1356)는 라운드 값에 기초하여 다음 라운드가 마지막 라운드인지 여부를 판별할 수 있다. 예로서, 라운드 값은 제어 값의 일부로서 레지스터(1356a)에 저장될 수 있다.In operation S130, the encryption/decryption controller 1356 may determine whether the next round is the last round. The encryption/decryption controller 1356 can manage the round value and increase the round value by 1 each time one round is performed. As an example, rounds may be repeated 10, 12, or 14 times depending on the data size (however, the invention is not limited thereto), and the encryption/decryption controller 1356 may repeat the next round based on the round value. It is possible to determine whether is the last round. As an example, the round value may be stored in register 1356a as part of the control value.

다음 라운드가 마지막 라운드가 아닌 경우, S120 동작이 다시 수행될 수 있다. S120 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. 반면, 다음 라운드가 마지막 라운드인 경우, S140 동작이 수행될 수 있다.If the next round is not the last round, operation S120 may be performed again. In operation S120, the S-Box 1355 may perform a substitution operation on the data converted in operation S126 in response to a request from the encryption operator 1352. On the other hand, if the next round is the last round, operation S140 may be performed.

S140 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S142 동작에서, 암호화 연산기(1352)는 S140 동작에서 치환된 데이터의 스테이트에 대해 "ShiftRows" 연산을 수행할 수 있다. S144 동작에서, 암호화 연산기(1352)는 S142 동작에서 시프트된 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 예로서, 마지막 라운드가 완료된 후, 라운드 값이 (예컨대, 0으로) 초기화될 수 있다.In operation S140, the S-Box 1355 may perform a substitution operation on the data converted in operation S126 in response to a request from the encryption operator 1352. In operation S142, the encryption operator 1352 may perform a “ShiftRows” operation on the state of the data replaced in operation S140. In operation S144, the encryption operator 1352 may perform an “AddRoundKey” operation on the converted data having the shifted state in operation S142. As an example, after the last round is completed, the round value may be initialized (e.g., to 0).

라운드가 반복됨에 따라, 데이터의 값이 점차 변환될 수 있다. S140 내지 S144 동작들로 구성되는 마지막 라운드가 완료된 후, 최종적으로 변환된 데이터가 불휘발성 메모리들(1310)에 저장될 수 있다. 따라서, 공격자가 불휘발성 메모리들(1310)의 암호화된 데이터를 임의로 조작하거나 손상시키는 것이 상당히 어려워질 수 있다.As the round is repeated, the data value may be gradually converted. After the last round consisting of operations S140 to S144 is completed, the finally converted data may be stored in the non-volatile memories 1310. Accordingly, it may become quite difficult for an attacker to arbitrarily manipulate or damage encrypted data in the non-volatile memories 1310.

예로서, 도 3의 암호화 연산은 외부 장치로부터의 요청(REQ)에 응답하여 또는 암호화/복호화 컨트롤러(1356)의 판별에 기초하여 개시될 수 있다. 몇몇 실시 예에서, 메모리 컨트롤러(1330)는 암호화된 데이터를 불휘발성 메모리들(1310)에 저장하기 위해, 암호화/복호화 컨트롤러(1356)로 요청(REQ)을 제공할 수 있다. 암호화/복호화 컨트롤러(1356)는 요청(REQ)에 응답하여, 암호화 연산이 수행되도록 암호화 연산기(1352)를 제어할 수 있다. 레지스터(1356a)는 요청(REQ)에 응답하여, 암호화 연산이 수행됨을 지시하는 제어 값을 저장할 수 있다.As an example, the encryption operation of FIG. 3 may be initiated in response to a request (REQ) from an external device or based on a determination of the encryption/decryption controller 1356. In some embodiments, the memory controller 1330 may provide a request (REQ) to the encryption/decryption controller 1356 to store encrypted data in the non-volatile memories 1310. The encryption/decryption controller 1356 may control the encryption operator 1352 to perform an encryption operation in response to a request (REQ). Register 1356a may store a control value indicating that an encryption operation is performed in response to a request (REQ).

암호화 연산은 연산 단위 크기를 갖는 데이터에 대해 수행될 수 있다. 예로서, "MixColumns" 연산을 위한 연산 단위 크기는 32비트일 수 있고, "MixColumns" 연산은 32비트의 데이터에 대해 수행될 수 있다. 예로서, "ShiftRows" 연산을 위한 연산 단위 크기는 128비트일 수 있고, "ShiftRows" 연산은 128비트의 데이터에 대해 수행될 수 있다.Encryption operations can be performed on data having an operation unit size. As an example, the operation unit size for the “MixColumns” operation may be 32 bits, and the “MixColumns” operation may be performed on 32 bits of data. As an example, the operation unit size for the “ShiftRows” operation may be 128 bits, and the “ShiftRows” operation may be performed on 128 bits of data.

몇몇 실시 예에서, 암호화/복호화 컨트롤러(1356)는 버퍼(1351)에 저장된 데이터의 크기를 모니터링할 수 있다. 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행됨을 판별할 수 있다. 예로서, 데이터가 버퍼(1351)에 점차 누적됨에 따라 버퍼(1351)가 "MixColumns" 연산을 위한 32비트의 데이터를 완전히 저장한 경우, 암호화/복호화 컨트롤러(1356)는 "MixColumns" 연산이 수행되도록 암호화 연산기(1352)를 제어할 수 있다.In some embodiments, the encryption/decryption controller 1356 may monitor the size of data stored in the buffer 1351. If the data stored in the buffer 1351 has the operation unit size of the encryption operation, the encryption/decryption controller 1356 may determine that the encryption operation is performed. For example, as data gradually accumulates in the buffer 1351, if the buffer 1351 completely stores 32 bits of data for the “MixColumns” operation, the encryption/decryption controller 1356 causes the “MixColumns” operation to be performed. The encryption operator 1352 can be controlled.

한편, 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖지 않는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행되지 않음을 판별할 수 있다. 레지스터(1356a)는 암호화/복호화 컨트롤러(1356)의 판별에 의존하여, 암호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다.Meanwhile, if the data stored in the buffer 1351 does not have the operation unit size of the encryption operation, the encryption/decryption controller 1356 may determine that the encryption operation is not performed. Register 1356a may store a control value indicating whether an encryption operation is performed or not, depending on the determination of the encryption/decryption controller 1356.

몇몇 실시 예에서, 암호화/복호화 컨트롤러(1356)는 라운드 값에 기초하여 암호화 연산을 제어할 수 있다. 라운드 값이 0에 대응하는 경우, 암호화 연산이 수행되지 않을 수 있고, 따라서 레지스터(1356a)는 암호화 연산이 수행되지 않음을 지시하는 제어 값을 저장할 수 있다. 한편, 라운드 값이 0에 대응하지 않는 경우(예컨대, 암호화/복호화 컨트롤러(1356)가 라운드 값을 증가시킨 경우), 암호화 연산이 수행될 수 있고, 따라서 레지스터(1356a)는 암호화 연산이 수행됨을 지시하는 제어 값을 저장할 수 있다.In some embodiments, encryption/decryption controller 1356 may control encryption operations based on round values. If the round value corresponds to 0, the encryption operation may not be performed, and thus the register 1356a may store a control value indicating that the encryption operation is not performed. On the other hand, if the round value does not correspond to 0 (e.g., when the encryption/decryption controller 1356 increases the round value), an encryption operation can be performed, and thus the register 1356a indicates that the encryption operation is performed. Control values can be saved.

복호화 연산기(1353)의 복호화 연산은 도 3의 암호화 연산에 대응하여 수행될 수 있다. 예로서, 복호화 연산기(1353)는 암호화된 데이터를 복호화하기 위해, 도 3의 암호화 연산들을 역으로 수행할 수 있다. 레지스터(1356a)는 복호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다. 복호화 연산은 통상의 기술자에 의해 잘 이해될 수 있으므로, 복호화 연산에 관한 자세한 설명들은 이하 생략될 것이다. 복호화된 데이터는 메모리 컨트롤러(1330)로 제공될 수 있다.The decryption operation of the decryption operator 1353 may be performed corresponding to the encryption operation of FIG. 3. As an example, the decryption operator 1353 may perform the encryption operations of FIG. 3 in reverse to decrypt the encrypted data. Register 1356a may store a control value indicating whether a decryption operation is performed or not performed. Since the decryption operation can be well understood by those skilled in the art, detailed descriptions of the decryption operation will be omitted below. Decrypted data may be provided to the memory controller 1330.

NIST에 의해 발행된 FIPS 197 문서에서 정의된 암호화 연산들이 도 3을 참조하여 설명되었다. 그러나, 도 3은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(1350)는 암호화/복호화 연산에 관한 다른 종류의 표준을 채용할 수 있다. 또는, 암호화/복호화 회로(1350)는 보안 수준을 향상시키기 위해 도 3에 나타낸 것들과 상이한 연산들을 채용할 수 있다.Cryptographic operations defined in the FIPS 197 document published by NIST were explained with reference to FIG. 3. However, Figure 3 is provided to facilitate better understanding and is not intended to limit the present invention. The encryption/decryption circuit 1350 may employ different types of standards for encryption/decryption operations. Alternatively, the encryption/decryption circuit 1350 may employ different operations than those shown in FIG. 3 to improve the level of security.

도 4는 도 2의 암호화/복호화 회로에 포함되는 예시적인 논리 회로를 보여주는 블록도이다. 도 5는 도 4의 논리 회로의 동작을 설명하기 위한 표이다.FIG. 4 is a block diagram showing an example logic circuit included in the encryption/decryption circuit of FIG. 2. FIG. 5 is a table for explaining the operation of the logic circuit of FIG. 4.

몇몇 암호화/복호화 회로는 "부 채널 분석 공격(Side-channel Analysis Attack)"에 의해 공격될 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.Some encryption/decryption circuits can be attacked by a "Side-channel Analysis Attack". In a side channel analysis attack, an attacker can collect side information such as the amount of power consumed by the encryption/decryption circuit, the waveform of electromagnetic waves generated by the encryption/decryption circuit, etc. An attacker can attack the encryption/decryption circuit to find out the key used in the encryption/decryption circuit based on the collected information.

따라서, 본 발명의 실시 예에 따른 암호화/복호화 회로(1350)는 부 채널 분석 공격을 방지하기 위한 논리 회로(LGC)를 포함할 수 있다. 도 4를 참조하면, 논리 회로(LGC)는 배타적 논리 합 연산에 대응하는 조합 논리 연산을 수행할 수 있다. 몇몇 예에서, 암호화 연산기(1352)가 논리 회로(LGC)를 포함할 수 있고, 논리 회로(LGC)는 (예로서, 도 3의 S110, S126, 및 S144 동작들에서의) "AddRoundKey" 연산과 관련될 수 있다.Accordingly, the encryption/decryption circuit 1350 according to an embodiment of the present invention may include a logic circuit (LGC) to prevent side channel analysis attacks. Referring to FIG. 4, the logic circuit LGC may perform a combinational logic operation corresponding to an exclusive OR operation. In some examples, cryptographic operator 1352 may include logic circuitry (LGC), which may include an “AddRoundKey” operation (e.g., in operations S110, S126, and S144 of FIG. 3) and It can be related.

논리 회로(LGC)는 네 개의 입력들(A, B, ~A, ~B)을 수신할 수 있다. 입력(~A)은 입력(A)의 반전(Inverted) 값에 대응할 수 있고, 입력(~B)은 입력(B)의 반전 값에 대응할 수 있다. 예로서, 논리 회로(LGC)가 "AddRoundKey" 연산과 관련되는 경우, 입력(A)은 버퍼(1351)로부터의 데이터에 포함되는 비트에 대응할 수 있고, 입력(B)은 키 관리기(1354)로부터의 키에 포함되는 비트에 대응할 수 있다. 논리 회로(LGC)는 입력들(A, B)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.The logic circuit (LGC) can receive four inputs (A, B, ~A, ~B). Input (~A) may correspond to the inverted value of input (A), and input (~B) may correspond to the inverted value of input (B). As an example, if logic circuit (LGC) is associated with an “AddRoundKey” operation, input (A) may correspond to a bit contained in data from buffer 1351 and input (B) may correspond to a bit contained in data from key manager 1354. It can correspond to the bits included in the key. The logic circuit (LGC) may output the exclusive logical sum of the inputs (A, B) and results corresponding to the inverted value of the exclusive logical sum.

입력들(A, B, ~A, ~B)은 클록 신호(CLK1)에 기초하여 논리 게이트들(P1, P2, P3, P4)을 각각 통과하거나 통과하지 않을 수 있다. 예로서, 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 동안, 입력들(A, B, ~A, ~B)은 논리 게이트들(P1, P2, P3, P4)을 통과하지 않을 수 있고 논리 게이트들(P1, P2, P3, P4) 각각은 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다. 한편, 클록 신호(CLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 동안, 입력들(A, B, ~A, ~B)은 논리 게이트들(P1, P2, P3, P4)을 통과할 수 있다(즉, 논리 게이트들(P1, P2, P3, P4)이 입력들(A, B, ~A, ~B)에 대응하는 값들을 각각 출력할 수 있다). 여기서, 특정 입력의 "통과"는 그 특정 입력이 논리 게이트의 출력을 생성하는 데에 능동적인 영향을 준다는 것을 의미할 수 있다.Inputs A, B, ~A, ~B may or may not pass through logic gates P1, P2, P3, and P4, respectively, based on the clock signal CLK1. As an example, while clock signal CLK1 has a first logic value (e.g., logic “0”), inputs A, B, ~A, ~B have logic gates P1, P2, P3, and P4. ) and each of the logic gates P1, P2, P3, and P4 may output a first logic value (eg, logic “0”). Meanwhile, while the clock signal CLK1 has a second logic value (e.g., logic “1”), the inputs A, B, ~A, ~B have logic gates P1, P2, P3, and P4. (that is, the logic gates (P1, P2, P3, and P4) can output values corresponding to the inputs (A, B, ~A, ~B), respectively). Here, “passing” a specific input may mean that that specific input actively affects generating the output of the logic gate.

논리 게이트들(AND1, AND2, OR1, OR2)은 논리 게이트들(P1, P2, P3, P4)로부터 출력된 값들을 조합(Combine)할 수 있다. 논리 게이트들(OR3, AND3)은 논리 게이트들(AND1, AND2, OR1, OR2)로부터 출력된 값들을 조합할 수 있다. 따라서, 논리 게이트들(OR3, AND3)은 입력들(A, B)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.Logic gates (AND1, AND2, OR1, OR2) can combine values output from logic gates (P1, P2, P3, and P4). Logic gates OR3 and AND3 can combine values output from logic gates AND1, AND2, OR1, and OR2. Accordingly, the logic gates OR3 and AND3 may output results corresponding to the exclusive logical sum of the inputs A and B and the inverted value of the exclusive logical sum.

도 5는 논리 회로(LGC)의 입력들(A, B)과 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3)의 출력들 사이의 관계를 보여준다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 경우, 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3) 각각은 입력들(A, B)의 값들에 관계없이 논리 "0"의 값을 출력할 수 있다. 한편, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 경우, 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3)은 입력들(A, B)의 값들에 의존하여 상이한 값들을 출력할 수 있다.Figure 5 shows the relationship between the inputs (A, B) of the logic circuit (LGC) and the outputs of the logic gates (AND1, AND2, AND3, OR1, OR2, OR3). When the clock signal (CLK1) has a value of logic "0", each of the logic gates (AND1, AND2, AND3, OR1, OR2, OR3) has a logic "0" value regardless of the values of the inputs (A, B). The value of can be output. Meanwhile, when the clock signal (CLK1) has a value of logic “1”, the logic gates (AND1, AND2, AND3, OR1, OR2, OR3) display different values depending on the values of the inputs (A, B). Can be printed.

도 5를 참조하면, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정함이 이해될 수 있다. 예로서, 도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들은 입력들(A, B)의 값들에 의존하여 변경될 수 있다. 그러나, 입력들(A, B)의 값들에 관계없이, 한 개의 논리 곱(AND) 게이트가 논리 "1"의 값을 출력하고 두 개의 논리 합(OR) 게이트들이 논리 "1"의 값들을 출력할 수 있다.Referring to FIG. 5 , it can be understood that while the clock signal CLK1 has a value of logic “1”, the number of logic gates outputting a value of logic “1” is constant. As an example, in the logic circuit LGC of FIG. 4, logic gates outputting a value of logic “1” can be changed depending on the values of inputs A and B. However, regardless of the values of the inputs (A, B), one logical product (AND) gate outputs a value of logic “1” and two logical sum (OR) gates output values of logic “1”. can do.

도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있고, 따라서 논리 회로(LGC)에 의해 소모되는 전체 전력의 양이 일정하게 유지될 수 있다. 이로 인해, 공격자가 논리 회로(LGC)에 의해 소모되는 전력의 양, 논리 회로(LGC)에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집하더라도, 공격자는 논리 회로(LGC)의 구성 및 동작을 이해하기 어려울 수 있다. 결과적으로, 논리 회로(LGC)는 부 채널 분석 공격으로부터의 보호를 가능하게 할 수 있다.In the logic circuit (LGC) of FIG. 4, the number of logic gates outputting a value of logic “1” can be kept constant, and thus the total amount of power consumed by the logic circuit (LGC) can be kept constant. You can. Because of this, even if the attacker collects ancillary information such as the amount of power consumed by the logic circuit (LGC), the waveform of electromagnetic waves generated by the logic circuit (LGC), etc., the attacker cannot determine the configuration and operation of the logic circuit (LGC). may be difficult to understand. As a result, the logic circuit (LGC) can enable protection against side-channel analysis attacks.

다만, 도 4 및 도 5를 참조하여 설명된 논리 회로(LGC)의 구성 및 동작은 더 나은 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다. 논리 회로(LGC)의 구성 및 동작은 다양하게 수정 또는 변경될 수 있다. 나아가, 논리 회로(LGC)는 암호화/복호화 회로(1350)에 포함되는 다양한 논리 회로 중 하나의 예시일 뿐이다. 암호화/복호화 회로(1350)는 암호화 및 복호화 연산들을 수행하기 위해 다양한 구성을 갖는 여러 다른 논리 회로를 더 포함할 수 있다.However, the configuration and operation of the logic circuit (LGC) described with reference to FIGS. 4 and 5 are only examples to facilitate better understanding and are not intended to limit the present invention. The configuration and operation of the logic circuit (LGC) can be modified or changed in various ways. Furthermore, the logic circuit (LGC) is only one example of various logic circuits included in the encryption/decryption circuit 1350. The encryption/decryption circuit 1350 may further include several other logical circuits with various configurations to perform encryption and decryption operations.

본 발명의 실시 예들에서, 암호화/복호화 회로(1350)는 부 채널 분석 공격을 방지하기 위해 일정한 양의 전력을 소모하도록 구성되는 하나 이상의 논리 회로들을 포함할 수 있다. 이 논리 회로들은 복수의 논리 게이트를 포함할 수 있고, 복수의 논리 게이트 중에서 논리 "0"의 값을 출력하는 논리 게이트들의 개수 및 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있다.In embodiments of the present invention, the encryption/decryption circuit 1350 may include one or more logic circuits configured to consume a certain amount of power to prevent side channel analysis attacks. These logic circuits may include a plurality of logic gates, and among the plurality of logic gates, the number of logic gates outputting a value of logic “0” and the number of logic gates outputting a value of logic “1” are maintained constant. It can be.

도 6은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 6 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.

더 나은 이해를 돕기 위해, 도 2 및 도 4의 클록 신호(CLK1)가 설명될 것이다. 클록 신호(CLK1)는 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(1350)는 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안 입력들(A, B)의 배타적 논리 합을 출력할 수 있다.To facilitate better understanding, the clock signal CLK1 in FIGS. 2 and 4 will be explained. The clock signal CLK1 may alternately have a value of logic “0” and a value of logic “1”. While the clock signal CLK1 has a logic value of “1”, the encryption/decryption circuit 1350 may perform encryption and/or decryption operations. As an example, logic circuit LGC of FIG. 4 may output an exclusive logical sum of inputs A and B while clock signal CLK1 has a value of logic “1.”

한편, 클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안, 암호화/복호화 회로(1350)는 암호화 연산 및 복호화 연산을 수행하지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안 입력들(A, B)의 값들에 관계없이 논리 "0"의 값을 출력할 수 있고, 따라서 암호화 연산이 수행되지 않을 수 있다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 경우, 암호화/복호화 회로(1350)의 논리 게이트들의 상태(State)가 리셋(Reset)될 수 있고, 이 논리 게이트들에 의해 소모되는 전력이 최소화될 수 있다.Meanwhile, while the clock signal CLK1 has a logic value of “0”, the encryption/decryption circuit 1350 may not perform encryption and decryption operations. As an example, logic circuit LGC of Figure 4 may output a value of logic "0" regardless of the values of inputs A and B while clock signal CLK1 has a value of logic "0". , therefore, encryption operations may not be performed. When the clock signal CLK1 has a logic value of “0”, the states of the logic gates of the encryption/decryption circuit 1350 may be reset, and the power consumed by these logic gates may be reduced. can be minimized.

클록 신호(CLK1)에 기초하여 논리 게이트들의 상태 및 전력 소모를 변경(예컨대, 전환(Switching))시키는 것은 부 채널 분석 공격을 더욱 어렵게 만들 수 있다. 따라서, 클록 신호(CLK1)의 논리 값들의 교번(Alternation)은 보안 수준을 향상시킬 수 있다.Changing the state and power consumption of logic gates (eg, switching) based on the clock signal CLK1 can make side channel analysis attacks more difficult. Therefore, alternation of the logic values of the clock signal CLK1 can improve the security level.

클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안, 논리 게이트들의 상태가 리셋될 수 있다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 제 1 시간 구간은 "초기화 구간"으로 언급될 수 있다. 한편, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 암호화 연산 및 복호화 연산 중 적어도 하나가 수행될 수 있다. 클록 신호(CLK1)가 논리 "1"의 값을 갖는 제 2 시간 구간은 "연산 구간"으로 언급될 수 있다. 클록 신호(CLK1)의 논리 값들의 교번에 응답하여, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.While the clock signal CLK1 has a value of logic “0”, the states of the logic gates may be reset. The first time period in which the clock signal CLK1 has a logic value of “0” may be referred to as an “initialization period.” Meanwhile, while the clock signal CLK1 has a logic value of “1”, at least one of an encryption operation and a decryption operation may be performed. The second time period in which the clock signal CLK1 has a logic value of “1” may be referred to as an “operation period.” In response to the alternation of logic values of the clock signal CLK1, the initialization period and the calculation period may occur alternately.

몇몇 예에서, 하나의 연산 구간 동안 하나의 라운드의 연산들이 수행될 수 있다. 몇몇 다른 예에서, 하나의 연산 구간 동안 여러 라운드의 연산들이 수행될 수 있다. 몇몇 또 다른 예에서, 하나의 라운드의 연산들이 여러 연산 구간 동안 수행될 수 있다. 연산 구간과 라운드 사이의 관계는 암호화/복호화 회로(1350)의 하드웨어 크기, 연산 성능, 동작 정책 등 다양한 요인에 기인하여 변경 또는 수정될 수 있다.In some examples, one round of operations may be performed during one operation period. In some other examples, multiple rounds of operations may be performed during one operation interval. In some other examples, one round of operations may be performed over multiple operation intervals. The relationship between calculation sections and rounds may be changed or modified due to various factors such as hardware size, calculation performance, and operation policy of the encryption/decryption circuit 1350.

그러나, 암호화 연산 및 복호화 연산이 연산 구간 전체에서 수행되지는 않을 수 있다. 예로서, 외부 장치로부터 요청(REQ)이 제공되지 않은 경우, 연산 구간에서도 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)가 암호화 연산 및 복호화 연산이 수행되지 않음을 판별한 경우(예컨대, 버퍼(1351)에 저장된 데이터의 크기가 연산 단위 크기보다 작은 경우), 연산 구간에서도 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다.However, the encryption operation and decryption operation may not be performed in the entire operation section. For example, if a request (REQ) is not provided from an external device, the encryption operation and decryption operation may not be performed even in the operation section. For example, when the encryption/decryption controller 1356 determines that the encryption and decryption operations are not performed (e.g., when the size of the data stored in the buffer 1351 is smaller than the operation unit size), the encryption operation is also performed in the operation section. And the decryption operation may not be performed.

예로서, 외부 장치로부터의 요청(REQ) 또는 암호화/복호화 컨트롤러(1356)의 판별에 기초하여, 시점(TP1)과 시점(TP2) 사이에서 암호화 연산 및/또는 복호화 연산이 수행될 수 있다. 이 경우, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다.For example, based on a request (REQ) from an external device or a determination by the encryption/decryption controller 1356, an encryption operation and/or a decryption operation may be performed between the time point TP1 and the time point TP2. In this case, the encryption operation and the decryption operation may not be performed in the time section before the time point TP1 and in the time section after the time point TP2.

몇몇 경우, 암호화 연산 및 복호화 연산이 수행되지 않더라도, 클록 신호(CLK1)의 논리 값들이 계속 교번할 수 있다. 그러나, 암호화 연산 및 복호화 연산이 수행되지 않는 동안 클록 신호(CLK1)의 논리 값들을 교번시키는 것은 암호화/복호화 회로(1350)에 의해 소모되는 전력의 양을 증가시킬 수 있다. 이는 논리 게이트들이 (초기화 구간에서) 논리 "0"을 출력하는 것 및 (연산 구간에서) 논리 "1"을 출력하는 것을 반복하기 때문이다(즉, 출력 값의 전환에 기인하여 전력이 소모될 수 있다).In some cases, even if encryption and decryption operations are not performed, the logical values of the clock signal CLK1 may continue to alternate. However, alternating the logical values of the clock signal CLK1 while encryption and decryption operations are not performed may increase the amount of power consumed by the encryption/decryption circuit 1350. This is because logic gates repeat outputting logic “0” (in the initialization section) and outputting logic “1” (in the operation section) (i.e., power may be consumed due to switching of the output value). there is).

게다가, 위에서 설명된 것과 같이, 암호화 연산 및/또는 복호화 연산은 연산 구간에서만 수행될 수 있다. 따라서, 초기화 구간의 길이가 길어지는 경우, 연산 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.Additionally, as described above, encryption and/or decryption operations may be performed only in the operation section. Accordingly, when the length of the initialization section becomes long, the length of the calculation section may become short, and thus the calculation performance of the encryption/decryption circuit 1350 may deteriorate.

도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 암호화 연산기(2352), 암호화/복호화 컨트롤러(2356), 및 구간 컨트롤러(2357)를 포함할 수 있다.FIG. 7 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. In some embodiments, the encryption/decryption circuit 2350 may include an encryption operator 2352, an encryption/decryption controller 2356, and a section controller 2357.

암호화 연산기(2352) 및 암호화/복호화 컨트롤러(2356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 7은 암호화/복호화 회로(2350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(2350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(2350), 암호화 연산기(2352), 및 암호화/복호화 컨트롤러(2356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the encryption operator 2352 and the encryption/decryption controller 2356 may include the configurations and operations of the encryption operator 1352 and the encryption/decryption controller 1356 of FIG. 2, respectively. FIG. 7 only shows an exemplary configuration of the encryption/decryption circuit 2350, and the encryption/decryption circuit 2350 may further include components included in the encryption/decryption circuit 1350 of FIG. 2. For convenience of explanation, redundant descriptions of the encryption/decryption circuit 2350, encryption operator 2352, and encryption/decryption controller 2356 will be omitted below.

암호화/복호화 컨트롤러(2356)는 제어 값(EC) 및/또는 제어 값(EC)의 반전 값(~EC)을 출력할 수 있다. 제어 값(EC)은 암호화 연산의 수행과 관련될 수 있다. 예로서, 제어 값(EC)은 암호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(EC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.The encryption/decryption controller 2356 may output a control value (EC) and/or an inverted value (~EC) of the control value (EC). A control value (EC) may be related to the performance of a cryptographic operation. By way of example, a control value (EC) may indicate whether a cryptographic operation is performed or not performed. As an example, the control value (EC) may be output from register 1356a in FIG. 2.

구간 컨트롤러(2357)는 클록 신호(CLK1)를 수신할 수 있다. 구간 컨트롤러(2357)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(EC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2357)는 제어 값(EC)과 함께 또는 제어 값(EC) 대신, 제어 값(EC)의 반전 값(~EC)을 수신할 수 있다.The section controller 2357 may receive a clock signal (CLK1). The section controller 2357 may receive a control value (EC) from the encryption/decryption controller 2356. In some cases, section controller 2357 may receive an inverse value (˜EC) of the control value (EC) along with or instead of the control value (EC).

구간 컨트롤러(2357)는 제어 값(EC)(및/또는, 제어 값(EC)의 반전 값(~EC)) 및 클록 신호(CLK1)에 기초하여, 활성화 신호(ACT1)를 생성할 수 있다. 암호화 연산기(2352)는 클록 신호(CLK1)를 직접 수신하는 대신, 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(2352)는 활성화 신호(ACT1)에 기초하여 암호화 연산을 수행할 수 있다.The section controller 2357 may generate an activation signal ACT1 based on the control value EC (and/or the inversion value of the control value EC (˜EC)) and the clock signal CLK1. The cryptographic operator 2352 may operate based on the activation signal ACT1 instead of directly receiving the clock signal CLK1. As an example, the encryption operator 2352 may perform an encryption operation based on the activation signal ACT1.

클록 신호(CLK1)와 달리, 활성화 신호(ACT1)의 논리 값들은 암호화 연산이 수행되지 않는 동안 교번하지 않을 수 있다. 따라서, 암호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 나아가, 암호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다. 활성화 신호(ACT1)는 도 8 및 도 10을 참조하여 더 설명될 것이다.Unlike the clock signal CLK1, the logical values of the activation signal ACT1 may not alternate while an encryption operation is not performed. Accordingly, while an encryption operation is not performed, outputs from logic gates included in the encryption operator 2352 may not change. Furthermore, while an encryption operation is not being performed, the amount of power consumed by the logic gates of the encryption operator 2352 can be maintained constant. The activation signal ACT1 will be further described with reference to FIGS. 8 and 10.

몇몇 실시 예에서, 구간 컨트롤러(2357)의 일부 또는 전부는 암호화/복호화 컨트롤러(2356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 구간 컨트롤러(2357)의 일부 또는 전부는 암호화/복호화 회로(2350) 외부에 제공될 수 있다. 도 7의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(2350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the section controller 2357 may be included in the encryption/decryption controller 2356. In some other embodiments, some or all of the section controller 2357 may be provided external to the encryption/decryption circuit 2350. The exemplary configuration in FIG. 7 is provided to aid better understanding and is not intended to limit the invention. The configuration of the encryption/decryption circuit 2350 can be changed or modified in various ways.

도 8은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 8 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.

구간 컨트롤러(2357)는 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 갖는 클록 신호(CLK1)를 수신할 수 있다. 나아가, 구간 컨트롤러(2357)는 암호화 연산 및/또는 복호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시하는 제어 값(EC)을 수신할 수 있다.The section controller 2357 may receive a clock signal CLK1 that alternately has a value of logic “0” and a value of logic “1”. Furthermore, the section controller 2357 may receive a control value (EC) indicating whether an encryption operation and/or a decryption operation is performed or not.

예로서, 논리 "0"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공되지 않은 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 도 2의 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖지 않는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다.As an example, a control value (EC) of logic “0” may indicate that encryption and/or decryption operations are not performed. As an example, if a request (REQ) from an external device is not provided, the control value (EC) may have a value of logic “0”. For example, if the data stored in the buffer 1351 of FIG. 2 does not have an operation unit size, the control value EC may have a value of logic “0”. As an example, if the round value corresponds to 0, the control value EC may have a value of logic “0”.

예로서, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서, 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 따라서, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서, 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하기 위해 논리 "0"의 값을 가질 수 있다.For example, in the time interval before the time point TP1 and in the time interval after the time point TP2, the encryption operation and the decryption operation may not be performed. Accordingly, in the time interval before the time point TP1 and the time interval after the time point TP2, the control value EC will have a value of logical “0” to indicate that the encryption operation and/or decryption operation is not performed. You can.

예로서, 논리 "1"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공된 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖는 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하지 않는 경우(예컨대, 1 이상으로 증가한 경우), 제어 값(EC)이 논리 "1"의 값을 가질 수 있다.As an example, a control value (EC) of logic “1” may indicate that an encryption operation and/or a decryption operation are performed. As an example, when a request (REQ) is provided from an external device, the control value (EC) may have a value of logic “1”. For example, if the data stored in the buffer 1351 has an operation unit size, the control value EC may have a value of logic “1”. As an example, if the round value does not correspond to 0 (eg, increases above 1), the control value EC may have a value of logic “1”.

예로서, 시점들(TP1, TP2) 사이의 시간 구간에서, 암호화 연산 및 복호화 연산 중 적어도 하나가 수행될 수 있다. 따라서, 시점들(TP1, TP2) 사이의 시간 구간에서, 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하기 위해 논리 "1"의 값을 가질 수 있다.For example, in the time interval between the time points TP1 and TP2, at least one of an encryption operation and a decryption operation may be performed. Accordingly, in the time interval between the time points TP1 and TP2, the control value EC may have a value of logic “1” to indicate that the encryption operation and/or the decryption operation are performed.

다만, 위 예들은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 몇몇 다른 예에서, 논리 "0"의 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있고, 논리 "1"의 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다.However, the above examples are provided to aid better understanding and are not intended to limit the present invention. In some other examples, a control value (EC) of logical “0” may indicate that an encryption operation and/or decryption operation is performed, and a control value (EC) of logic “1” may indicate that an encryption operation and/or decryption operation are performed. You can indicate that it will not be performed.

활성화 신호(ACT1)는 클록 신호(CLK1) 및 제어 값(EC)에 기초하여, 비활성화 값 및 활성화 값을 가질 수 있다. 더 나은 이해를 돕기 위해, 활성화 신호(ACT1)의 비활성화 값이 논리 "0"에 대응하고, 활성화 신호(ACT1)의 활성화 값이 논리 "1"에 대응하는 것으로 가정될 것이다. 다만, 본 발명은 이 가정에 의해 한정되지 않고, 비활성화 값에 대응하는 논리 값과 활성화 값에 대응하는 논리 값은 서로 바뀔 수 있다(Interchangeable).The activation signal ACT1 may have a deactivation value and an activation value based on the clock signal CLK1 and the control value EC. To facilitate better understanding, it will be assumed that the deactivation value of the activation signal ACT1 corresponds to logic “0” and the activation value of the activation signal ACT1 corresponds to logic “1”. However, the present invention is not limited by this assumption, and the logical value corresponding to the deactivation value and the logical value corresponding to the activation value are interchangeable.

제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 교번 없이 비활성화 값(예컨대, 논리 "0")으로 유지될 수 있다. 위에서 설명된 것과 같이, 암호화 연산기(2352)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)의 비활성화 값을 수신할 수 있고, 논리 회로(LGC)의 논리 게이트들 각각은 활성화 신호(ACT1)의 비활성화 값에 응답하여 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다.While the control value EC has a value of logic “0”, the activation signal ACT1 may be maintained at a deactivation value (eg, logic “0”) without alternating. As described above, the cryptographic operator 2352 may operate based on the activation signal (ACT1) instead of the clock signal (CLK1). Accordingly, if the control value (EC) indicates that the encryption operation and/or decryption operation is not performed, the outputs from the logic gates of the encryption operator 2352 may not be changed. For example, the logic circuit LGC of FIG. 4 may receive the deactivation value of the activation signal ACT1 instead of the clock signal CLK1, and each of the logic gates of the logic circuit LGC may receive the deactivation value of the activation signal ACT1. A first logic value (eg, logic “0”) may be output in response to the value.

암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 비활성화 값에 기초하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 초기화 구간 동안, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다. 나아가, 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.While the encryption operation and/or the decryption operation are not performed, the logic gates of the encryption operator 2352 may operate in a first time period (eg, an initialization period) based on the deactivation value of the activation signal ACT1. Since the outputs from the logic gates of the cryptographic operator 2352 do not change during the initialization period, the amount of power consumed by the logic gates can be kept constant. Furthermore, because the outputs from the logic gates do not change, power consumption due to switching of output values can be prevented.

한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 교번(즉, 비활성화 값 및 활성화 값의 교번)에 응답하여 제 1 시간 구간(예컨대, 초기화 구간) 및 제 2 시간 구간(예컨대, 연산 구간)에서 번갈아가며 동작할 수 있다.Meanwhile, while the control value EC has a logic value of “1”, the activation signal ACT1 may alternately have a deactivation value and an activation value in response to the clock signal CLK1. Accordingly, when the control value (EC) indicates that an encryption operation and/or a decryption operation is performed, the logic gates of the encryption operator 2352 respond to the alternation of the activation signal (ACT1) (i.e., the alternation of the deactivation value and the activation value). In response, it may alternately operate in the first time interval (eg, initialization interval) and the second time interval (eg, calculation interval).

연산 구간에서, 암호화 연산기(2352)는 논리 게이트들을 이용하여 암호화 연산(및/또는 복호화 연산)을 수행할 수 있다. 암호화 연산 및/또는 복호화 연산은 활성화 신호(ACT1)의 활성화 값에 응답하여 수행될 수 있다. 연산 구간 동안, 도 4 및 도 5를 참조하여 설명된 것과 같이, 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 일정하게 유지될 수 있다.In the operation section, the encryption operator 2352 may perform an encryption operation (and/or a decryption operation) using logic gates. The encryption operation and/or decryption operation may be performed in response to the activation value of the activation signal ACT1. During the operation period, as described with reference to FIGS. 4 and 5 , the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value may be maintained constant.

도 9a 및 도 9b는 도 8의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.FIGS. 9A and 9B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 8.

도 9a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357a)를 포함할 수 있다. 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)에 대해 논리 곱 연산을 수행할 수 있다.Referring to FIG. 9A, the section controller 2357 may include a combinational logic gate 2357a. The combination logic gate 2357a may generate an activation signal (ACT1) by combining the clock signal (CLK1) and the control value (EC). As an example, the combinational logic gate 2357a may perform an logical multiplication operation on the clock signal CLK1 and the control value EC.

도 9a의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(2357a)는 비활성화 값(예컨대, 논리 "0")을 갖는 활성화 신호(ACT1)를 생성할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(2357a)는 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 생성할 수 있다.In the example of FIG. 9A , if the control value EC indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”), combinational logic gate 2357a is set to a disabled value. An activation signal (ACT1) having a logic value (eg, logic “0”) may be generated. On the other hand, when the control value (EC) indicates that an encryption operation and/or a decryption operation is performed (e.g., has a value of logic “1”), the combinational logic gate 2357a is connected to the clock signal CLK1. An activation signal (ACT1) (that is, having an inactivation value and an activation value alternately) may be generated.

도 9b를 참조하면, 구간 컨트롤러(2357)는 트랜지스터들(2357b, 2357c)을 포함할 수 있다. 트랜지스터(2357b)는 제어 값(EC)에 응답하여 클록 신호(CLK1)를 활성화 신호(ACT1)로서 전달할 수 있다. 트랜지스터(2357c)는 제어 값(EC)의 반전 값(~EC)에 응답하여 논리 "0"의 값을 활성화 신호(ACT1)로서 전달할 수 있다.Referring to FIG. 9B, the section controller 2357 may include transistors 2357b and 2357c. The transistor 2357b may transmit the clock signal CLK1 as the activation signal ACT1 in response to the control value EC. The transistor 2357c may transmit a value of logic “0” as the activation signal ACT1 in response to the inversion value (˜EC) of the control value EC.

도 9b의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 트랜지스터(2357c)가 비활성화 값(예컨대, 논리 "0")을 갖는 활성화 신호(ACT1)를 전달할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 트랜지스터(2357b)가 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 전달할 수 있다.In the example of FIG. 9B , if the control value EC indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”), transistor 2357c is set to an inactive value (e.g., , an activation signal (ACT1) having logic “0”) can be transmitted. On the other hand, when the control value EC indicates that an encryption operation and/or a decryption operation is performed (e.g., has a value of logic “1”), the transistor 2357b is connected to the clock signal CLK1 (i.e. , an activation signal (ACT1) having a deactivation value and an activation value alternately may be transmitted.

구간 컨트롤러(2357)가 도 9a 또는 도 9b에 나타낸 구성을 채용하는 경우, 구간 컨트롤러(2357)는 도 8을 참조하여 설명된 활성화 신호(ACT1)를 생성할 수 있다. 이러한 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 논리 게이트들로부터의 출력이 초기화 구간에서 일정하게 유지될 수 있다. 따라서, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.When the section controller 2357 adopts the configuration shown in FIG. 9A or 9B, the section controller 2357 may generate the activation signal ACT1 described with reference to FIG. 8. In this case, while encryption and/or decryption operations are not performed, the output from the logic gates may remain constant in the initialization period. Accordingly, power consumption due to switching of output values can be prevented.

도 10은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 10 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.

도 8의 타이밍도와 달리, 도 10을 참조하면, 제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 활성화 값(예컨대, 논리 "1")으로 유지될 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들은 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 예로서, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 활성화 값에 응답하여 연산 구간에서 동작할 수 있다.Unlike the timing diagram of FIG. 8, referring to FIG. 10, while the control value EC has a value of logic “0”, the activation signal ACT1 may be maintained at an activation value (e.g., logic “1”). . Accordingly, when the control value EC indicates that the encryption operation and/or the decryption operation are not performed, the logic gates of the encryption operator 2352 may operate in the second time period (eg, operation period). For example, while the encryption operation and/or the decryption operation are not performed, the logic gates of the encryption operator 2352 may operate in the operation period in response to the activation value of the activation signal ACT1.

암호화 연산 및/또는 복호화 연산이 수행되지 않는 경우, 암호화 연산기(2352)로 입력되는 데이터는 변경되지 않을 수 있다. 예로서, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)는 기본(Default) 값의 데이터 또는 이전의(Previous) 연산에 이용된 데이터를 일정하게 수신할 수 있다. 따라서, 암호화 연산기(2352)가 연산 구간에서 동작하더라도, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 결과적으로, 연산 구간이 유지되더라도, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.If the encryption operation and/or decryption operation is not performed, data input to the encryption operator 2352 may not be changed. For example, while an encryption operation and/or a decryption operation are not performed, the encryption operator 2352 may constantly receive data of a default value or data used in a previous operation. Accordingly, even if the encryption operator 2352 operates in the calculation section, outputs from the logic gates of the encryption operator 2352 may not change. As a result, even if the operation section is maintained, the amount of power consumed by the logic gates can be maintained constant, and power consumption due to switching of the output value can be prevented.

몇몇 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)로 입력되는 데이터가 변경될 수 있다. 예로서, 암호화 연산기(2352)는 다음의 연산에 이용될 데이터 또는 레지스터 설정 값을 수신할 수 있다. 이 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 한 번 변경될 수 있다. 그러나, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)로 입력되는 데이터가 여러 번 변경되지는 않을 수 있다. 따라서, 연산 구간이 유지되더라도, 출력 값의 전환에 기인하는 전력 소모가 최소화될 수 있다.In some cases, data input to the encryption operator 2352 may be changed while the encryption and/or decryption operation is not performed. As an example, the cryptographic operator 2352 may receive data or register settings to be used in the next operation. In this case, the outputs from the logic gates of the cryptographic operator 2352 may be changed once. However, while the encryption operation and/or decryption operation is not performed, the data input to the encryption operator 2352 may not be changed multiple times. Therefore, even if the calculation section is maintained, power consumption due to switching the output value can be minimized.

한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 이는 도 8을 참조하여 설명된 시점들(TP1, TP2) 사이의 시간 구간에 대응할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.Meanwhile, while the control value EC has a logic value of “1”, the activation signal ACT1 may alternately have a deactivation value and an activation value in response to the clock signal CLK1. This may correspond to the time interval between the time points TP1 and TP2 described with reference to FIG. 8 . For convenience of explanation, overlapping descriptions will be omitted below.

도 11a 및 도 11b는 도 10의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.FIGS. 11A and 11B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 10.

도 11a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357d)를 포함할 수 있다. 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 11A, the section controller 2357 may include a combinational logic gate 2357d. The combination logic gate 2357d may generate an activation signal (ACT1) by combining the clock signal (CLK1) and the inverted value (˜EC) of the control value (EC). As an example, the combinational logic gate 2357d may perform a logical sum operation on the clock signal CLK1 and the inverted value (˜EC) of the control value (EC).

도 11a의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(2357d)는 활성화 값(예컨대, 논리 "1")을 갖는 활성화 신호(ACT1)를 생성할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(2357d)는 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 생성할 수 있다.In the example of FIG. 11A , when the control value (EC) indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”), combinational logic gate 2357d has an activated value. An activation signal (ACT1) having a logic value (e.g., logic “1”) may be generated. On the other hand, when the control value (EC) indicates that an encryption operation and/or a decryption operation is performed (e.g., has a value of logic “1”), the combinational logic gate 2357d is connected to the clock signal CLK1. An activation signal (ACT1) (that is, having an inactivation value and an activation value alternately) may be generated.

도 11b를 참조하면, 구간 컨트롤러(2357)는 트랜지스터들(2357e, 2357f)을 포함할 수 있다. 트랜지스터(2357e)는 제어 값(EC)의 반전 값(~EC)에 응답하여 논리 "1"의 값을 활성화 신호(ACT1)로서 전달할 수 있다. 트랜지스터(2357f)는 제어 값(EC)에 응답하여 클록 신호(CLK1)를 활성화 신호(ACT1)로서 전달할 수 있다.Referring to FIG. 11B, the section controller 2357 may include transistors 2357e and 2357f. The transistor 2357e may transmit a value of logic “1” as the activation signal ACT1 in response to the inversion value (˜EC) of the control value (EC). The transistor 2357f may transmit the clock signal CLK1 as the activation signal ACT1 in response to the control value EC.

도 11b의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 트랜지스터(2357e)가 활성화 값(예컨대, 논리 "1")을 갖는 활성화 신호(ACT1)를 전달할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 트랜지스터(2357f)가 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 전달할 수 있다.In the example of FIG. 11B, when the control value EC indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”), transistor 2357e is switched to an activation value (e.g., , an activation signal (ACT1) having logic “1”) can be transmitted. On the other hand, when the control value EC indicates that an encryption operation and/or a decryption operation is performed (e.g., has a value of logic “1”), the transistor 2357f is connected to the clock signal CLK1 (i.e. , an activation signal (ACT1) having a deactivation value and an activation value alternately may be transmitted.

구간 컨트롤러(2357)가 도 11a 또는 도 11b에 나타낸 구성을 채용하는 경우, 구간 컨트롤러(2357)는 도 10을 참조하여 설명된 활성화 신호(ACT1)를 생성할 수 있다. 이러한 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 논리 게이트들로부터의 출력이 연산 구간에서 일정하게 유지되거나 한 번 변경될 수 있다. 따라서, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.When the section controller 2357 adopts the configuration shown in FIG. 11A or 11B, the section controller 2357 may generate the activation signal ACT1 described with reference to FIG. 10. In this case, while the encryption operation and/or decryption operation is not performed, the output from the logic gates may remain constant or change once in the operation period. Accordingly, power consumption due to switching of output values can be prevented or minimized.

도 12 및 도 13은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성들을 보여주는 블록도들이다.12 and 13 are block diagrams showing example components included in the encryption/decryption circuit of FIG. 2.

도 12를 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 구간 컨트롤러(2358)를 더 포함할 수 있다. 암호화/복호화 컨트롤러(2356)는 제어 값(DC) 및/또는 제어 값(DC)의 반전 값(~DC)을 출력할 수 있다. 제어 값(DC)은 복호화 연산의 수행과 관련될 수 있다. 예로서, 제어 값(DC)은 복호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(DC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.Referring to FIG. 12 , in some embodiments, the encryption/decryption circuit 2350 may further include a section controller 2358. The encryption/decryption controller 2356 may output a control value (DC) and/or an inverted value (~DC) of the control value (DC). The control value (DC) may be related to the performance of the decryption operation. As an example, the control value DC may indicate whether a decryption operation is performed or not. As an example, the control value DC may be output from register 1356a in FIG. 2.

구간 컨트롤러(2358)는 클록 신호(CLK2)를 수신할 수 있다. 구간 컨트롤러(2358)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(DC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2358)는 제어 값(DC)과 함께 또는 제어 값(DC) 대신, 제어 값(DC)의 반전 값(~DC)을 수신할 수 있다.The section controller 2358 may receive a clock signal (CLK2). The section controller 2358 may receive a control value (DC) from the encryption/decryption controller 2356. In some cases, section controller 2358 may receive an inverse value (˜DC) of the control value (DC) along with or instead of the control value (DC).

구간 컨트롤러(2358)는 제어 값(DC)(및/또는, 제어 값(DC)의 반전 값(~DC)) 및 클록 신호(CLK2)에 기초하여, 활성화 신호(ACT2)를 생성할 수 있다. 복호화 연산기(2353)는 클록 신호(CLK2)를 직접 수신하는 대신, 활성화 신호(ACT2)에 기초하여 동작할 수 있다. 예로서, 복호화 연산기(2353)는 활성화 신호(ACT2)에 기초하여 복호화 연산을 수행할 수 있다.The section controller 2358 may generate an activation signal ACT2 based on the control value DC (and/or the inverted value of the control value DC (˜DC)) and the clock signal CLK2. The decryption operator 2353 may operate based on the activation signal ACT2 instead of directly receiving the clock signal CLK2. As an example, the decryption operator 2353 may perform a decryption operation based on the activation signal ACT2.

클록 신호(CLK2)와 달리, 활성화 신호(ACT2)의 논리 값들은 복호화 연산이 수행되지 않는 동안 교번하지 않을 수 있다. 도 8 및 도 10을 참조하여 설명된 것들과 유사하게, 복호화 연산이 수행되지 않는 경우, 제어 값(DC)은 복호화 연산이 수행되지 않음을 지시할 수 있다. 복호화 연산이 수행되지 않는 동안, 활성화 신호(ACT2)는 비활성화 값 및 활성화 값 중 하나로 유지될 수 있다. 이를 위해, 구간 컨트롤러(2358)는 도 9a, 도 9b, 도 11a, 또는 도 11b에 나타낸 것과 유사한 구성을 포함할 수 있다.Unlike the clock signal CLK2, the logic values of the activation signal ACT2 may not alternate while a decryption operation is not performed. Similar to those described with reference to FIGS. 8 and 10 , when the decryption operation is not performed, the control value DC may indicate that the decryption operation is not performed. While a decryption operation is not performed, the activation signal ACT2 may be maintained at one of an inactive value and an active value. To this end, the section controller 2358 may include a configuration similar to that shown in FIGS. 9A, 9B, 11A, or 11B.

복호화 연산이 수행되지 않는 동안, 복호화 연산기(2353)의 논리 게이트들은 활성화 신호(ACT2)의 비활성화 값에 응답하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 또는, 복호화 연산이 수행되지 않는 동안, 복호화 연산기(2353)의 논리 게이트들은 활성화 신호(ACT2)의 활성화 값에 응답하여 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 따라서, 복호화 연산기(2353)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.While the decryption operation is not performed, the logic gates of the decryption operator 2353 may operate in a first time period (eg, an initialization period) in response to the deactivation value of the activation signal ACT2. Alternatively, while the decryption operation is not performed, the logic gates of the decryption operator 2353 may operate in a second time period (eg, operation period) in response to the activation value of the activation signal ACT2. Accordingly, outputs from logic gates included in the decryption operator 2353 may not change, and power consumption due to switching of output values may be prevented or minimized.

도 13을 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 구간 컨트롤러(2359)를 더 포함할 수 있다. 암호화/복호화 컨트롤러(2356)는 제어 값(SC) 및/또는 제어 값(SC)의 반전 값(~SC)을 출력할 수 있다. 제어 값(SC)은 치환 연산의 수행과 관련될 수 있다. 예로서, 제어 값(SC)은 치환 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(SC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.Referring to FIG. 13, in some embodiments, the encryption/decryption circuit 2350 may further include a section controller 2359. The encryption/decryption controller 2356 may output a control value (SC) and/or an inverted value (˜SC) of the control value (SC). The control value (SC) may be related to performing a substitution operation. By way of example, the control value (SC) may indicate whether a substitution operation is performed or not performed. As an example, control value SC may be output from register 1356a in FIG. 2.

구간 컨트롤러(2359)는 클록 신호(CLK3)를 수신할 수 있다. 구간 컨트롤러(2359)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(SC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2359)는 제어 값(SC)과 함께 또는 제어 값(SC) 대신, 제어 값(SC)의 반전 값(~SC)을 수신할 수 있다.The section controller 2359 may receive a clock signal (CLK3). The section controller 2359 may receive a control value (SC) from the encryption/decryption controller 2356. In some cases, section controller 2359 may receive an inverted value (˜SC) of the control value (SC) along with or instead of the control value (SC).

구간 컨트롤러(2359)는 제어 값(SC)(및/또는, 제어 값(SC)의 반전 값(~SC)) 및 클록 신호(CLK3)에 기초하여, 활성화 신호(ACT3)를 생성할 수 있다. S-Box(2355)는 클록 신호(CLK3)를 직접 수신하는 대신, 활성화 신호(ACT3)에 기초하여 동작할 수 있다. 예로서, S-Box(2355)는 활성화 신호(ACT3)에 기초하여 치환 연산을 수행할 수 있다.The section controller 2359 may generate an activation signal (ACT3) based on the control value (SC) (and/or the inverted value (˜SC) of the control value (SC)) and the clock signal (CLK3). The S-Box 2355 may operate based on the activation signal ACT3 instead of directly receiving the clock signal CLK3. As an example, the S-Box 2355 may perform a substitution operation based on the activation signal ACT3.

클록 신호(CLK3)와 달리, 활성화 신호(ACT3)의 논리 값들은 치환 연산이 수행되지 않는 동안 교번하지 않을 수 있다. 도 8 및 도 10을 참조하여 설명된 것들과 유사하게, 치환 연산이 수행되지 않는 경우, 제어 값(SC)은 치환 연산이 수행되지 않음을 지시할 수 있다. 치환 연산이 수행되지 않는 동안, 활성화 신호(ACT3)는 비활성화 값 및 활성화 값 중 하나로 유지될 수 있다. 이를 위해, 구간 컨트롤러(2359)는 도 9a, 도 9b, 도 11a, 또는 도 11b에 나타낸 것과 유사한 구성을 포함할 수 있다.Unlike the clock signal CLK3, the logic values of the activation signal ACT3 may not alternate while a substitution operation is not performed. Similar to those described with reference to FIGS. 8 and 10 , when the substitution operation is not performed, the control value SC may indicate that the substitution operation is not performed. While a substitution operation is not performed, the activation signal ACT3 may be maintained at one of an inactive value and an active value. To this end, the section controller 2359 may include a configuration similar to that shown in FIGS. 9A, 9B, 11A, or 11B.

치환 연산이 수행되지 않는 동안, S-Box(2355)의 논리 게이트들은 활성화 신호(ACT3)의 비활성화 값에 응답하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 또는, 치환 연산이 수행되지 않는 동안, S-Box(2355)의 논리 게이트들은 활성화 신호(ACT3)의 활성화 값에 응답하여 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 따라서, S-Box(2355)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.While the substitution operation is not performed, the logic gates of the S-Box 2355 may operate in a first time period (eg, an initialization period) in response to the deactivation value of the activation signal ACT3. Alternatively, while the substitution operation is not performed, the logic gates of the S-Box 2355 may operate in a second time period (eg, operation period) in response to the activation value of the activation signal ACT3. Accordingly, outputs from logic gates included in the S-Box 2355 may not change, and power consumption due to switching of output values may be prevented or minimized.

몇몇 실시 예에서, 구간 컨트롤러들(2358, 2359)의 일부 또는 전부는 암호화/복호화 컨트롤러(2356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 구간 컨트롤러들(2358, 2359)의 일부 또는 전부는 암호화/복호화 회로(2350) 외부에 제공될 수 있다. 도 12 및 도 13의 예시적인 구성들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(2350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the section controllers 2358 and 2359 may be included in the encryption/decryption controller 2356. In some other embodiments, some or all of the section controllers 2358 and 2359 may be provided external to the encryption/decryption circuit 2350. The exemplary configurations in FIGS. 12 and 13 are provided to aid better understanding and are not intended to limit the present invention. The configuration of the encryption/decryption circuit 2350 can be changed or modified in various ways.

도 14는 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 14 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.

위에서 설명된 것과 같이, 암호화/복호화 회로(1350)는 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 한편, 초기화 구간에서, 암호화/복호화 회로(1350)의 논리 게이트들의 상태가 리셋될 수 있다. 따라서, 초기화 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 이로 인해, 초기화 구간의 길이가 길어지는 경우, 암호화 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.As described above, the encryption/decryption circuit 1350 may perform encryption and/or decryption operations in the operation section. Meanwhile, in the initialization section, the states of logic gates of the encryption/decryption circuit 1350 may be reset. Therefore, encryption and decryption operations may not be performed in the initialization section. For this reason, if the length of the initialization section becomes long, the length of the encryption section may become short, and thus the computational performance of the encryption/decryption circuit 1350 may deteriorate.

몇몇 실시 예에서, 도 14의 변경된 클록 신호(CCLK1)가 도 6 및 도 7의 클록 신호(CLK1)를 대체할 수 있다. 변경된 클록 신호(CCLK1)를 클록 신호(CLK1)와 비교하면, 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이보다 길다는 것이 이해될 수 있다. 반면, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이보다 짧다는 것이 이해될 수 있다.In some embodiments, the modified clock signal CCLK1 of FIG. 14 may replace the clock signal CLK1 of FIGS. 6 and 7. Comparing the changed clock signal (CCLK1) with the clock signal (CLK1), the length of the time interval in which the changed clock signal (CCLK1) has a value of logic "1" is the length of the time section in which the changed clock signal (CLK1) has a value of logic "1". It can be understood that it is longer than the length of the time interval. On the other hand, it can be understood that the length of the time section in which the changed clock signal CCLK1 has a value of logic “0” is shorter than the length of the time section in which the clock signal CLK1 has a value of logic “0”.

즉, 변경된 클록 신호(CCLK1)의 듀티 비(Duty Ratio) 또는 듀티 사이클(Duty Cycle)은 클록 신호(CLK1)의 듀티 비 또는 듀티 사이클과 상이할 수 있다. 듀티 비의 변경 또는 조절에 기인하여, 변경된 클록 신호(CCLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간(예컨대, 초기화 구간)의 길이는 변경된 클록 신호(CCLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 시간 구간(예컨대, 연산 구간)의 길이보다 짧을 수 있다.That is, the duty ratio or duty cycle of the changed clock signal CCLK1 may be different from the duty ratio or duty cycle of the clock signal CLK1. Due to the change or adjustment of the duty ratio, the length of the time interval (e.g., initialization interval) in which the changed clock signal (CCLK1) has the first logic value (e.g., logic “0”) is changed to the first logic value (e.g., logic “0”). 2 It may be shorter than the length of a time interval (eg, calculation interval) having a logic value (eg, logic “1”).

따라서, 변경된 클록 신호(CCLK1)가 클록 신호(CLK1) 대신 채용되는 경우, 초기화 구간의 길이가 짧아지고 연산 구간의 길이가 길어질 수 있다. 이 경우, 길어진 연산 구간 동안 더 많은 암호화 연산들 및/또는 복호화 연산들이 수행될 수 있다. 결과적으로, 암호화/복호화 회로(1350)의 연산 성능이 향상될 수 있다. 도 2, 도 12, 및 도 13의 클록 신호들(CLK2, CLK3) 각각 역시 변경된 클록 신호(CCLK1)로 대체될 수 있다.Therefore, when the changed clock signal CCLK1 is used instead of the clock signal CLK1, the length of the initialization section may be shortened and the length of the calculation section may be long. In this case, more encryption operations and/or decryption operations may be performed during a longer operation period. As a result, the computational performance of the encryption/decryption circuit 1350 can be improved. The clock signals CLK2 and CLK3 of FIGS. 2, 12, and 13 may also be replaced with the changed clock signal CCLK1.

변경된 클록 신호(CCLK1)는 암호화/복호화 회로(1350) 내부 또는 외부의 클록 생성기로부터 제공될 수 있다. 이러한 클록 생성기는 클록 신호(CLK1)의 것과 상이한 듀티 비 또는 듀티 사이클을 갖는 변경된 클록 신호(CCLK1)를 생성하기 위해 재설계될 수 있다. 몇몇 실시 예에서, 암호화/복호화 회로(1350)의 연산 성능을 적응적으로 제어하기 위해, 변경된 클록 신호(CCLK1)의 듀티 비 또는 듀티 사이클은 프로그램 가능(Programmable)하거나 조절 가능(Adjustable)할 수 있다.The changed clock signal CCLK1 may be provided from a clock generator inside or outside the encryption/decryption circuit 1350. This clock generator can be redesigned to generate a modified clock signal CCLK1 with a different duty ratio or duty cycle than that of clock signal CLK1. In some embodiments, in order to adaptively control the computational performance of the encryption/decryption circuit 1350, the duty ratio or duty cycle of the changed clock signal CCLK1 may be programmable or adjustable. .

한편, 몇몇 실시 예에서, 변경된 클록 신호(CCLK1)는 클록 생성기의 재설계 없이 구현될 수 있다. 이러한 실시 예들은 도 15 내지 도 19를 참조하여 설명될 것이다.Meanwhile, in some embodiments, the changed clock signal CCLK1 can be implemented without redesigning the clock generator. These embodiments will be described with reference to FIGS. 15 to 19.

도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(3350)는 암호화 연산기(3352), 암호화/복호화 컨트롤러(3356), 및 클록 컨트롤러(3357)를 포함할 수 있다.FIG. 15 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. In some embodiments, the encryption/decryption circuit 3350 may include an encryption operator 3352, an encryption/decryption controller 3356, and a clock controller 3357.

암호화 연산기(3352) 및 암호화/복호화 컨트롤러(3356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 15는 암호화/복호화 회로(3350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(3350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(3350), 암호화 연산기(3352), 및 암호화/복호화 컨트롤러(3356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the encryption operator 3352 and the encryption/decryption controller 3356 may include the configurations and operations of the encryption operator 1352 and the encryption/decryption controller 1356 of FIG. 2, respectively. FIG. 15 only shows an exemplary configuration of the encryption/decryption circuit 3350, and the encryption/decryption circuit 3350 may further include components included in the encryption/decryption circuit 1350 of FIG. 2. For convenience of explanation, redundant descriptions regarding the encryption/decryption circuit 3350, encryption operator 3352, and encryption/decryption controller 3356 will be omitted below.

클록 컨트롤러(3357)는 제 1 클록 신호(예컨대, 클록 신호(CLK1))를 수신할 수 있다. 제 1 클록 신호는 도 6 및 도 7을 참조하여 설명된 클록 신호(CLK1)에 대응할 수 있다. 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 시간 구간의 길이와 동일할 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다.The clock controller 3357 may receive a first clock signal (eg, clock signal CLK1). The first clock signal may correspond to the clock signal CLK1 described with reference to FIGS. 6 and 7. The length of the time interval in which the clock signal CLK1 has a first logic value (e.g., logic “0”) is the length of the time interval in which the clock signal CLK1 has a second logic value (e.g., logic “1”) may be the same. Accordingly, the clock signal CLK1 can be understood as a general clock signal.

클록 컨트롤러(3357)는 제 1 클록 신호에 기초하여 제 2 클록 신호(예컨대, 변경된 클록 신호(CCLK1))를 생성할 수 있다. 제 2 클록 신호는 도 14를 참조하여 설명된 변경된 클록 신호(CCLK1)에 대응할 수 있다. 몇몇 실시 예에서, 변경된 클록 신호(CCLK1)는 재설계된 클록 생성기로부터 생성되는 대신, 클록 컨트롤러(3357)에 의해 클록 신호(CLK1)로부터 생성될 수 있다.The clock controller 3357 may generate a second clock signal (eg, changed clock signal CCLK1) based on the first clock signal. The second clock signal may correspond to the changed clock signal CCLK1 described with reference to FIG. 14. In some embodiments, the modified clock signal CCLK1 may be generated from the clock signal CLK1 by the clock controller 3357 instead of being generated from a redesigned clock generator.

변경된 클록 신호(CCLK1)는 암호화 연산기(3352)로 제공될 수 있다. 암호화 연산기(3352)의 논리 게이트들은 클록 신호(CLK1) 대신, 변경된 클록 신호(CCLK1)에 기초하여 동작할 수 있다. 도 14에 나타낸 것과 같이, 변경된 클록 신호(CCLK1)에서, 연산 구간의 길이가 초기화 구간의 길이보다 길 수 있다. 따라서, 암호화 연산기(3352)의 연산 성능이 향상될 수 있다.The changed clock signal (CCLK1) may be provided to the cryptographic operator 3352. The logic gates of the cryptographic operator 3352 may operate based on the changed clock signal CCLK1 instead of the clock signal CLK1. As shown in FIG. 14, in the changed clock signal CCLK1, the length of the calculation section may be longer than the length of the initialization section. Accordingly, the calculation performance of the encryption calculator 3352 can be improved.

몇몇 실시 예에서, 클록 컨트롤러(3357)의 일부 또는 전부는 암호화/복호화 컨트롤러(3356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 클록 컨트롤러(3357)의 일부 또는 전부는 암호화/복호화 회로(3350) 외부에 제공될 수 있다. 도 15의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(3350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of clock controller 3357 may be included in encryption/decryption controller 3356. In some other embodiments, some or all of clock controller 3357 may be provided external to encryption/decryption circuitry 3350. The exemplary configuration in FIG. 15 is provided to aid better understanding and is not intended to limit the invention. The configuration of the encryption/decryption circuit 3350 can be changed or modified in various ways.

몇몇 실시 예에서, 암호화/복호화 회로(3350)는 도 7의 구간 컨트롤러(2357)와 함께 클록 컨트롤러(3357)를 채용할 수 있다. 예로서, 구간 컨트롤러(2357)는 클록 신호(CLK1) 대신, 클록 컨트롤러(3357)로부터 변경된 클록 신호(CCLK1)를 수신할 수 있다. 이 예에서, 구간 컨트롤러(2357)는 제어 값(EC)(및/또는 제어 값(EC)의 반전 값(~EC)) 및 변경된 클록 신호(CCLK1)에 기초하여 활성화 신호(ACT1)를 생성할 수 있다. 이러한 활성화 신호(ACT1)는 암호화 연산 및 복호화 연산이 수행되지 않는 동안은 일정한 값을 가지면서도, 암호화 연산 및/또는 복호화 연산이 수행되는 동안은 변경된 클록 신호(CCLK1)에 대응할 수 있다.In some embodiments, the encryption/decryption circuit 3350 may employ a clock controller 3357 in conjunction with the interval controller 2357 of FIG. 7. For example, the section controller 2357 may receive a changed clock signal (CCLK1) from the clock controller 3357 instead of the clock signal (CLK1). In this example, the interval controller 2357 generates an activation signal (ACT1) based on the control value (EC) (and/or the inverse value (˜EC) of the control value (EC)) and the changed clock signal (CCLK1). You can. This activation signal (ACT1) may have a constant value while the encryption and decryption operations are not performed, but may correspond to a changed clock signal (CCLK1) while the encryption and/or decryption operations are performed.

도 15는 변경된 클록 신호(CCLK1)가 암호화 연산기(3352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 변경된 클록 신호(CCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 변경된 클록 신호(CCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Figure 15 shows that the changed clock signal (CCLK1) is provided to the encryption operator 3352. In some embodiments, the decoding operator 1353 of FIG. 2 may receive a modified clock signal CCLK1 instead of the clock signal CLK2. Alternatively, the decoding operator 1353 may receive the changed clock signal CCLK1 and the activation signal ACT2 generated based on the control value DC of FIG. 12.

몇몇 실시 예에서, 도 2의 S-Box(1355)는 클록 신호(CLK3) 대신, 변경된 클록 신호(CCLK1)를 수신할 수 있다. 또는, S-Box(1355)는 변경된 클록 신호(CCLK1) 및 도 13의 제어 값(EC)에 기초하여 생성되는 활성화 신호(ACT3)를 수신할 수 있다. 본 발명의 실시 예들은 위 설명들에 의해 한정되지 않고, 일반 클록 신호 대신 활성화 신호 또는 변경된 클록 신호를 채용하기 위해 다양하게 변경 또는 수정될 수 있다.In some embodiments, the S-Box 1355 of FIG. 2 may receive a changed clock signal CCLK1 instead of the clock signal CLK3. Alternatively, the S-Box 1355 may receive the changed clock signal CCLK1 and the activation signal ACT3 generated based on the control value EC of FIG. 13. Embodiments of the present invention are not limited by the above descriptions, and may be variously changed or modified to employ an activation signal or a modified clock signal instead of a general clock signal.

도 16은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 도 17은 도 16의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 16 is a block diagram showing an exemplary configuration of the clock controller of FIG. 15. FIG. 17 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 16.

도 16을 참조하면, 클록 컨트롤러(3357)는 버퍼(3357a) 및 조합 논리 게이트(3357b)를 포함할 수 있다. 클록 컨트롤러(3357)는 클록 신호(CLK1)를 수신할 수 있다. 버퍼(3357a)는 클록 신호(CLK1)를 지연시킬 수 있다. 따라서, 버퍼(3357a)는 지연된 클록 신호(dCLK1)를 출력할 수 있다.Referring to FIG. 16, the clock controller 3357 may include a buffer 3357a and a combinational logic gate 3357b. The clock controller 3357 may receive a clock signal (CLK1). The buffer 3357a may delay the clock signal CLK1. Accordingly, the buffer 3357a can output the delayed clock signal dCLK1.

도 17은 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 보여준다. 버퍼(3357a)는 클록 신호(CLK1)를 지연시켜, 지연된 클록 신호(dCLK1)를 출력할 수 있다. 지연된 클록 신호(dCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 동일할 수 있다. 지연된 클록 신호(dCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 동일할 수 있다.Figure 17 shows a clock signal (CLK1) and a delayed clock signal (dCLK1). The buffer 3357a may delay the clock signal CLK1 and output the delayed clock signal dCLK1. The length of the time section in which the delayed clock signal dCLK1 has a value of logic “0” may be equal to the length of the time section in which the clock signal CLK1 has a value of logic “0”. The length of the time section in which the delayed clock signal dCLK1 has a value of logic “1” may be equal to the length of the time section in which the clock signal CLK1 has a value of logic “1”.

다시 도 16을 참조하면, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 수신할 수 있다. 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 16, the combinational logic gate 3357b may receive the clock signal CLK1 and the delayed clock signal dCLK1. The combinational logic gate 3357b may generate a changed clock signal CCLK1 based on the clock signal CLK1 and the delayed clock signal dCLK1. As an example, the combinational logic gate 3357b may perform a logical sum operation on the clock signal CLK1 and the delayed clock signal dCLK1.

다시 도 17을 참조하면, 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1) 모두가 논리 "0"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "0"의 값을 가질 수 있다. 반면, 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1) 중 적어도 하나가 논리 "1"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "1"의 값을 가질 수 있다. 따라서, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 초기화 구간의 길이는 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 연산 구간의 길이보다 짧을 수 있다. 이러한 변경된 클록 신호(CCLK1)는 연산 성능이 향상되게 할 수 있다.Referring to FIG. 17 again, when both the clock signal CLK1 and the delayed clock signal dCLK1 have a value of logic “0”, the changed clock signal CCLK1 may have a value of logic “0”. On the other hand, when at least one of the clock signal CLK1 and the delayed clock signal dCLK1 has a value of logic “1”, the changed clock signal CCLK1 may have a value of logic “1”. Accordingly, the length of the initialization section in which the changed clock signal CCLK1 has a logic value of "0" may be shorter than the length of the calculation section in which the changed clock signal CCLK1 has a logic value of "1". This changed clock signal (CCLK1) can improve computational performance.

클록 신호(CLK1)의 지연이 지나치게 긴 경우, 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 오히려 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 길어질 수 있다. 한편, 클록 신호(CLK1)의 지연이 지나치게 짧은 경우, 변경된 클록 신호(CCLK1)의 논리 값이 교번하지 않을 수 있다. 따라서, 버퍼(3357a)는 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 짧도록 클록 신호(CLK1)를 적당하게 지연시킬 수 있다. 몇몇 경우, 버퍼(3357a)의 지연은 프로그램 가능하거나 조절 가능할 수 있다.If the delay of the clock signal CLK1 is too long, the length of the initialization section of the changed clock signal CCLK1 may be longer than the length of the calculation section of the changed clock signal CCLK1. Meanwhile, if the delay of the clock signal CLK1 is too short, the logic values of the changed clock signal CCLK1 may not alternate. Accordingly, the buffer 3357a can appropriately delay the clock signal CLK1 so that the length of the initialization period of the changed clock signal CCLK1 is shorter than the length of the calculation period of the changed clock signal CCLK1. In some cases, the delay of buffer 3357a may be programmable or adjustable.

도 18은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 도 19는 도 18의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 18 is a block diagram showing an example configuration of the clock controller of FIG. 15. FIG. 19 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 18.

도 18을 참조하면, 클록 컨트롤러(3357)는 분주기(Divider, 3357c) 및 조합 논리 게이트(3357d)를 포함할 수 있다. 클록 컨트롤러(3357)는 빠른 클록 신호(fCLK1)를 수신할 수 있다. 분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주할 수 있다. 따라서, 분주기(3357c)는 클록 신호(CLK1)를 출력할 수 있다. 예로서, 분주기(3357c)는 카운터 레지스터, 시프트 레지스터 등과 같은 논리 회로를 포함할 수 있다.Referring to FIG. 18, the clock controller 3357 may include a divider 3357c and a combination logic gate 3357d. The clock controller 3357 can receive a fast clock signal (fCLK1). The divider 3357c can divide the fast clock signal (fCLK1). Accordingly, the divider 3357c can output the clock signal CLK1. As an example, divider 3357c may include logic circuitry such as a counter register, shift register, etc.

도 19는 빠른 클록 신호(fCLK1) 및 클록 신호(CLK1)를 보여준다. 클록 신호(CLK1)는 암호화/복호화 회로에서 암호화 연산 및/또는 복호화 연산을 수행하는 데에 이용되는 주파수를 가질 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다. 빠른 클록 신호(fCLK1)의 주파수는 클록 신호(CLK1)의 주파수보다 높을 수 있다. 도 18 및 도 19의 실시 예에서, 클록 신호(CLK1)를 생성하기 위해 빠른 클록 신호(fCLK1)를 출력하는 클록 생성기가 제공될 수 있다.Figure 19 shows a fast clock signal (fCLK1) and a clock signal (CLK1). The clock signal CLK1 may have a frequency used to perform encryption and/or decryption operations in the encryption/decryption circuit. Accordingly, the clock signal CLK1 can be understood as a general clock signal. The frequency of the fast clock signal (fCLK1) may be higher than the frequency of the clock signal (CLK1). 18 and 19, a clock generator that outputs a fast clock signal fCLK1 may be provided to generate the clock signal CLK1.

분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주하여, 분주된 클록 신호(CLK1)를 출력할 수 있다. 분주된 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 상이할 수 있다. 분주된 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 상이할 수 있다.The divider 3357c may divide the fast clock signal (fCLK1) and output the divided clock signal (CLK1). The length of the time section in which the divided clock signal CLK1 has a value of logic “0” may be different from the length of the time section in which the fast clock signal fCLK1 has a value of logic “0”. The length of the time section in which the divided clock signal CLK1 has a value of logic “1” may be different from the length of the time section in which the fast clock signal fCLK1 has a value of logic “1”.

다시 도 18을 참조하면, 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)를 수신할 수 있다. 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 18, the combinational logic gate 3357d may receive a fast clock signal (fCLK1) and a divided clock signal (CLK1). The combinational logic gate 3357d may generate a changed clock signal CCLK1 based on the fast clock signal fCLK1 and the divided clock signal CLK1. As an example, the combinational logic gate 3357d may perform a logical sum operation on the fast clock signal fCLK1 and the divided clock signal CLK1.

다시 도 19를 참조하면, 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1) 모두가 논리 "0"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "0"의 값을 가질 수 있다. 반면, 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1) 중 적어도 하나가 논리 "1"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "1"의 값을 가질 수 있다. 따라서, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 초기화 구간의 길이는 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 연산 구간의 길이보다 짧을 수 있다. 이러한 변경된 클록 신호(CCLK1)는 연산 성능이 향상되게 할 수 있다.Referring again to FIG. 19, when both the fast clock signal (fCLK1) and the divided clock signal (CLK1) have a value of logic “0”, the changed clock signal (CCLK1) may have a value of logic “0”. . On the other hand, when at least one of the fast clock signal fCLK1 and the divided clock signal CLK1 has a value of logic “1”, the changed clock signal CCLK1 may have a value of logic “1”. Accordingly, the length of the initialization section in which the changed clock signal CCLK1 has a logic value of "0" may be shorter than the length of the calculation section in which the changed clock signal CCLK1 has a logic value of "1". This changed clock signal (CCLK1) can improve computational performance.

도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(4350)는 암호화 연산기(4352), 암호화/복호화 컨트롤러(4356), 및 초기화 컨트롤러(4357)를 포함할 수 있다.FIG. 20 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. In some embodiments, the encryption/decryption circuit 4350 may include an encryption operator 4352, an encryption/decryption controller 4356, and an initialization controller 4357.

암호화 연산기(4352) 및 암호화/복호화 컨트롤러(4356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 20은 암호화/복호화 회로(4350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(4350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(4350), 암호화 연산기(4352), 및 암호화/복호화 컨트롤러(4356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the encryption operator 4352 and the encryption/decryption controller 4356 may include the configurations and operations of the encryption operator 1352 and the encryption/decryption controller 1356 of FIG. 2, respectively. FIG. 20 only shows an example configuration of the encryption/decryption circuit 4350, and the encryption/decryption circuit 4350 may further include components included in the encryption/decryption circuit 1350 of FIG. 2. For convenience of explanation, redundant descriptions of the encryption/decryption circuit 4350, encryption operator 4352, and encryption/decryption controller 4356 will be omitted below.

암호화/복호화 컨트롤러(4356)는 제어 값(IEN) 및/또는 제어 값(IEN)의 반전 값(~IEN)을 출력할 수 있다. 제어 값(IEN)은 암호화 연산의 속도 모드와 관련될 수 있다. 예로서, 제어 값(IEN)은 암호화 연산기(4352)의 암호화 연산이 저속 모드 또는 고속 모드에서 수행되는지 여부를 지시할 수 있다.The encryption/decryption controller 4356 may output a control value (IEN) and/or an inverted value (˜IEN) of the control value (IEN). The control value (IEN) may be related to the speed mode of the cryptographic operation. As an example, the control value IEN may indicate whether the encryption operation of the encryption operator 4352 is performed in a low-speed mode or a high-speed mode.

도 6 및 도 14를 참조하여 설명된 것과 같이, 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간(예컨대, 초기화 구간)이 길어지는 경우, 암호화 연산기(4352)의 연산 성능이 떨어질 수 있다. 초기화 구간이 완전히 생략되는 경우, 암호화 연산기(4352)의 연산 성능이 최대화될 수 있다.As described with reference to FIGS. 6 and 14 , when the time interval (e.g., initialization interval) in which the clock signal CLK1 has the first logic value (e.g., logic “0”) becomes long, the encryption operator 4352 )'s computational performance may deteriorate. If the initialization section is completely omitted, the computational performance of the encryption operator 4352 can be maximized.

제어 값(IEN)은 초기화 구간의 발생 및 생략에 영향을 줄 수 있다. 예로서, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 초기화 구간이 생략될 수 있고 연산 구간만이 발생할 수 있다. 따라서, 고속 모드에서, 암호화 연산기(4352)의 연산 성능이 최대화될 수 있다. 반면, 제어 값(IEN)이 암호화 연산이 저속 모드에서 수행됨을 지시하는 경우, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.The control value (IEN) can affect the occurrence and omission of the initialization section. As an example, if the control value (IEN) indicates that the encryption operation is performed in high-speed mode, the initialization section may be omitted and only the operation section may occur. Therefore, in high-speed mode, the computational performance of the encryption operator 4352 can be maximized. On the other hand, when the control value (IEN) indicates that the encryption operation is performed in a low-speed mode, the initialization section and the operation section may occur alternately.

제어 값(IEN)은 도 1의 컴퓨팅 장치(1000)의 사용자로부터 제공될 수 있다. 또는, 컴퓨팅 장치(1000)의 정책에 의존하여, 제어 값(IEN)은 도 1의 프로세서 장치(1100) 및/또는 메모리 컨트롤러(1330)로부터 제공될 수 있다. 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산의 성능에 대한 요구에 적합하게, 저속 모드 및 고속 모드를 지시하는 논리 값들 중 하나를 가질 수 있다.The control value (IEN) may be provided by a user of computing device 1000 of FIG. 1 . Alternatively, depending on the policy of computing device 1000, the control value (IEN) may be provided from processor device 1100 and/or memory controller 1330 of FIG. 1. The control value (IEN) may have one of logical values indicating a low-speed mode and a high-speed mode, suitable for the performance requirements of encryption and/or decryption operations.

예로서, 제어 값(IEN)은 도 2의 레지스터(1356a)에 저장될 수 있다. 암호화/복호화 컨트롤러(4356)는 레지스터(1356a)에 저장된 제어 값(IEN)에 기초하여 암호화 연산기(4352)의 암호화 연산을 관리할 수 있고, 초기화 컨트롤러(4357)는 레지스터(1356a)로부터 제어 값(IEN)을 수신할 수 있다.As an example, the control value (IEN) may be stored in register 1356a in FIG. 2. The encryption/decryption controller 4356 may manage the encryption operation of the encryption operator 4352 based on the control value (IEN) stored in the register 1356a, and the initialization controller 4357 may control the control value (IEN) from the register 1356a. IEN) can be received.

몇몇 경우, 초기화 컨트롤러(4357)는 제어 값(IEN)과 함께 또는 제어 값(IEN) 대신, 제어 값(IEN)의 반전 값(IEN)을 수신할 수 있다. 나아가, 초기화 컨트롤러(4357)는 클록 신호(CLK1)를 수신할 수 있다. 초기화 컨트롤러(4357)는 제어 값(IEN)(및/또는, 제어 값(IEN)의 반전 값(~IEN)) 및 클록 신호(CLK1)에 기초하여, 제어된 클록 신호(TCLK1)를 생성할 수 있다.In some cases, the initialization controller 4357 may receive an inverted value (IEN) of the control value (IEN) along with or instead of the control value (IEN). Furthermore, the initialization controller 4357 may receive a clock signal (CLK1). The initialization controller 4357 may generate a controlled clock signal (TCLK1) based on the control value (IEN) (and/or the inverted value (˜IEN) of the control value (IEN)) and the clock signal (CLK1). there is.

암호화 연산기(4352)는 클록 신호(CLK1)를 직접 수신하는 대신, 제어된 클록 신호(TCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(4352)는 제어된 클록 신호(TCLK1)에 기초하여 암호화 연산을 수행할 수 있다.The cryptographic operator 4352 may operate based on the controlled clock signal TCLK1 instead of directly receiving the clock signal CLK1. As an example, the encryption operator 4352 may perform an encryption operation based on the controlled clock signal TCLK1.

제어 값(IEN)이 암호화 연산이 저속 모드에서 수행됨을 지시하는 경우, 제어된 클록 신호(TCLK1)는 클록 신호(CLK1)와 동일하게 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 번갈아가며 가질 수 있다. 따라서, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.When the control value IEN indicates that the cryptographic operation is performed in low-speed mode, the controlled clock signal TCLK1 has a first logic value (e.g., logic “0”) and a second logic identical to the clock signal CLK1. It may have alternating values (e.g., logical “1”). Therefore, the initialization section and the calculation section may occur alternately.

반면, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 제어된 클록 신호(TCLK1)의 값은 제 2 논리 값으로 유지될 수 있다. 따라서, 암호화 연산기(4352)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있고, 연산 성능이 최대화될 수 있다. 제어된 클록 신호(TCLK1)는 도 21을 참조하여 더 설명될 것이다.On the other hand, when the control value IEN indicates that the encryption operation is performed in a high-speed mode, the value of the controlled clock signal TCLK1 may be maintained at the second logic value. Therefore, the encryption operator 4352 can continuously perform encryption operations in the operation section without an initialization section, and operation performance can be maximized. The controlled clock signal TCLK1 will be further explained with reference to FIG. 21.

몇몇 실시 예에서, 초기화 컨트롤러(4357)의 일부 또는 전부는 암호화/복호화 컨트롤러(4356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 초기화 컨트롤러(4357)의 일부 또는 전부는 암호화/복호화 회로(4350) 외부에 제공될 수 있다. 도 20의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(4350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the initialization controller 4357 may be included in the encryption/decryption controller 4356. In some other embodiments, some or all of the initialization controller 4357 may be provided external to the encryption/decryption circuitry 4350. The exemplary configuration in FIG. 20 is provided to aid better understanding and is not intended to limit the invention. The configuration of the encryption/decryption circuit 4350 can be changed or modified in various ways.

몇몇 실시 예에서, 암호화/복호화 회로(4350)는 도 7의 구간 컨트롤러(2357)와 함께 초기화 컨트롤러(4357)를 채용할 수 있다. 예로서, 구간 컨트롤러(2357)는 클록 신호(CLK1) 대신, 초기화 컨트롤러(4357)로부터 제어된 클록 신호(TCLK1)를 수신할 수 있다. 이 예에서, 구간 컨트롤러(2357)는 제어 값(EC)(및/또는 제어 값(EC)의 반전 값(~EC)) 및 제어된 클록 신호(TCLK1)에 기초하여 활성화 신호(ACT1)를 생성할 수 있다. 이러한 활성화 신호(ACT1)는 암호화 연산 및 복호화 연산이 수행되지 않는 동안 일정한 값을 가질 수 있고, 암호화 연산 및/또는 복호화 연산이 수행되는 동안 저속 모드 및 고속 모드 중 하나를 가능하게 할 수 있다.In some embodiments, the encryption/decryption circuit 4350 may employ an initialization controller 4357 in conjunction with the section controller 2357 of FIG. 7 . For example, the section controller 2357 may receive the controlled clock signal TCLK1 from the initialization controller 4357 instead of the clock signal CLK1. In this example, interval controller 2357 generates an activation signal (ACT1) based on the control value (EC) (and/or the inversion of the control value (EC) (˜EC)) and the controlled clock signal (TCLK1). can do. This activation signal (ACT1) may have a constant value while the encryption and decryption operations are not performed, and may enable one of a low-speed mode and a high-speed mode while the encryption and/or decryption operations are performed.

몇몇 실시 예에서, 암호화/복호화 회로(4350)는 도 15의 클록 컨트롤러(3357)와 함께 초기화 컨트롤러(4357)를 채용할 수 있다. 예로서, 클록 컨트롤러(3357)는 클록 신호(CLK1) 대신, 초기화 컨트롤러(4357)로부터 제어된 클록 신호(TCLK1)를 수신할 수 있다. 이 예에서, 제어된 클록 신호(TCLK1)는 저속 모드 및 고속 모드 중 하나를 가능하게 할 수 있다. 나아가, 저속 모드에서, 제어된 클록 신호(TCLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 초기화 구간의 길이는 제어된 클록 신호(TCLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 연산 구간의 길이보다 짧을 수 있다.In some embodiments, the encryption/decryption circuit 4350 may employ an initialization controller 4357 in conjunction with the clock controller 3357 of Figure 15. For example, the clock controller 3357 may receive the controlled clock signal TCLK1 from the initialization controller 4357 instead of the clock signal CLK1. In this example, controlled clock signal TCLK1 can enable either a low-speed mode or a high-speed mode. Furthermore, in the low-speed mode, the length of the initialization period in which the controlled clock signal TCLK1 has a first logic value (e.g., logic “0”) is the length of the initialization period in which the controlled clock signal TCLK1 has a second logic value (e.g., logic “0”). It may be shorter than the length of the calculation section with 1").

도 20은 제어된 클록 신호(TCLK1)가 암호화 연산기(4352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 제어된 클록 신호(TCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 제어된 클록 신호(TCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Figure 20 shows that the controlled clock signal TCLK1 is provided to the cryptographic operator 4352. In some embodiments, the decoding operator 1353 of FIG. 2 may receive the controlled clock signal TCLK1 instead of the clock signal CLK2. Alternatively, the decoding operator 1353 may receive the controlled clock signal TCLK1 and the activation signal ACT2 generated based on the control value DC of FIG. 12.

몇몇 실시 예에서, 도 2의 S-Box(1355)는 클록 신호(CLK3) 대신, 제어된 클록 신호(TCLK1)를 수신할 수 있다. 또는, S-Box(1355)는 제어된 클록 신호(TCLK1) 및 도 13의 제어 값(EC)에 기초하여 생성되는 활성화 신호(ACT3)를 수신할 수 있다. 본 발명의 실시 예들은 위 설명들에 의해 한정되지 않고, 일반 클록 신호 대신 활성화 신호 또는 제어된 클록 신호를 채용하기 위해 다양하게 변경 또는 수정될 수 있다.In some embodiments, the S-Box 1355 of FIG. 2 may receive the controlled clock signal TCLK1 instead of the clock signal CLK3. Alternatively, the S-Box 1355 may receive the controlled clock signal TCLK1 and the activation signal ACT3 generated based on the control value EC of FIG. 13. Embodiments of the present invention are not limited by the above descriptions, and may be variously changed or modified to employ an activation signal or a controlled clock signal instead of a general clock signal.

도 21은 도 20의 초기화 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 21 is a timing diagram illustrating time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the initialization controller of FIG. 20.

예로서, 제 1 논리 값(예컨대, 논리 "0")을 갖는 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산이 저속 모드에서 수행됨을 지시할 수 있다. 예로서, 제 2 논리 값(예컨대, 논리 "1")을 갖는 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산이 고속 모드에서 수행됨을 지시할 수 있다. 다만, 본 발명은 이 예들에 의해 한정되지 않고, 저속 모드에 대응하는 논리 값과 고속 모드에 대응하는 논리 값은 서로 바뀔 수 있다.As an example, a control value (IEN) having a first logical value (e.g., logic “0”) may indicate that the encryption operation and/or decryption operation are performed in a low-speed mode. As an example, a control value (IEN) having a second logical value (e.g., logic “1”) may indicate that the encryption operation and/or decryption operation are performed in a high-speed mode. However, the present invention is not limited to these examples, and the logic value corresponding to the low-speed mode and the logic value corresponding to the high-speed mode may be interchanged.

제어 값(IEN)이 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(4350)는 저속 모드에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 저속 모드에서, 제어된 클록 신호(TCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 암호화/복호화 회로(4350)의 논리 게이트들은 초기화 구간에서 리셋될 수 있고, 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다.While the control value IEN has a logic value of “1”, the encryption/decryption circuit 4350 may perform encryption and/or decryption operations in a low-speed mode. In the low-speed mode, the controlled clock signal TCLK1 may alternately have a value of logic “0” and a value of logic “1”, corresponding to the clock signal CLK1. Accordingly, the logic gates of the encryption/decryption circuit 4350 may be reset in the initialization section and perform encryption and/or decryption operations in the operation section.

제어 값(IEN)이 논리 "0"의 값을 갖는 동안, 암호화/복호화 회로(4350)는 고속 모드에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 고속 모드에서, 제어된 클록 신호(TCLK1)의 값은 논리 "1"의 값으로 유지될 수 있다. 따라서, 암호화/복호화 회로(4350)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있다. 따라서, 고속 모드에서, 연산 성능이 최대화될 수 있다.While the control value IEN has a value of logic “0”, the encryption/decryption circuit 4350 may perform encryption and/or decryption operations in a high-speed mode. In high-speed mode, the value of the controlled clock signal TCLK1 may be maintained at a logic “1” value. Therefore, the encryption/decryption circuit 4350 can continuously perform encryption operations in the calculation section without an initialization section. Therefore, in high-speed mode, computational performance can be maximized.

도 22a 및 도 22b는 도 21의 타이밍도와 관련하여 도 20의 초기화 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.FIGS. 22A and 22B are block diagrams showing example configurations of the initialization controller of FIG. 20 in relation to the timing diagram of FIG. 21.

도 22a를 참조하면, 초기화 컨트롤러(4357)는 조합 논리 게이트(4357a)를 포함할 수 있다. 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)을 조합하여 제어된 클록 신호(TCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 22A, the initialization controller 4357 may include a combinational logic gate 4357a. The combination logic gate 4357a may generate the controlled clock signal TCLK1 by combining the clock signal CLK1 and the inverted value (˜IEN) of the control value IEN. As an example, the combinational logic gate 4357a may perform a logical sum operation on the clock signal CLK1 and the inverted value (~IEN) of the control value (IEN).

도 22a의 예에서, 제어 값(IEN)이 저속 모드를 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(4357a)는 클록 신호(CLK1)에 대응하는 제어된 클록 신호(TCLK1)를 생성할 수 있다. 반면, 제어 값(IEN)이 고속 모드를 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(4357a)는 논리 "1"의 값을 갖는 제어된 클록 신호(TCLK1)를 생성할 수 있다.In the example of FIG. 22A , when control value IEN indicates a low speed mode (e.g., has a value of logic “1”), combinational logic gate 4357a operates on a controlled clock corresponding to clock signal CLK1. A signal (TCLK1) can be generated. On the other hand, when the control value (IEN) indicates a high-speed mode (e.g., has a value of logic “0”), the combinational logic gate 4357a generates a controlled clock signal (TCLK1) with a value of logic “1”. can be created.

도 22b를 참조하면, 초기화 컨트롤러(4357)는 트랜지스터들(4357b, 4357c)을 포함할 수 있다. 트랜지스터(4357b)는 제어 값(IEN)의 반전 값(~IEN)에 응답하여 논리 "1"의 값을 제어된 클록 신호(TCLK1)로서 전달할 수 있다. 트랜지스터(4357c)는 제어 값(IEN)에 응답하여 클록 신호(CLK1)를 제어된 클록 신호(TCLK1)로서 전달할 수 있다.Referring to FIG. 22B, the initialization controller 4357 may include transistors 4357b and 4357c. The transistor 4357b may transmit a value of logic “1” as the controlled clock signal TCLK1 in response to the inversion value (˜IEN) of the control value IEN. The transistor 4357c may transmit the clock signal CLK1 as the controlled clock signal TCLK1 in response to the control value IEN.

도 22b의 예에서, 제어 값(IEN)이 저속 모드를 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 트랜지스터(4357b)는 클록 신호(CLK1)에 대응하는 제어된 클록 신호(TCLK1)를 전달할 수 있다. 반면, 제어 값(IEN)이 고속 모드를 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 트랜지스터(4357c)는 논리 "1"의 값을 갖는 제어된 클록 신호(TCLK1)를 생성할 수 있다.In the example of FIG. 22B, when the control value IEN indicates a low speed mode (e.g., has a value of logic “1”), transistor 4357b receives a controlled clock signal (CLK1) corresponding to the clock signal CLK1. TCLK1) can be transmitted. On the other hand, when the control value (IEN) indicates a high-speed mode (e.g., has a value of logic “0”), transistor 4357c generates a controlled clock signal (TCLK1) with a value of logic “1”. can do.

초기화 컨트롤러(4357)가 도 22a 또는 도 22b에 나타낸 구성을 채용하는 경우, 초기화 컨트롤러(4357)는 도 21을 참조하여 설명된 제어된 클록 신호(TCLK1)를 생성할 수 있다. 이러한 경우, 고속 모드에서, 암호화/복호화 회로(4350)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있다. 따라서, 고속 모드에서, 연산 성능이 최대화될 수 있다.If the initialization controller 4357 employs the configuration shown in FIG. 22A or FIG. 22B, the initialization controller 4357 may generate the controlled clock signal TCLK1 described with reference to FIG. 21. In this case, in high-speed mode, the encryption/decryption circuit 4350 can continuously perform encryption operations in the operation section without an initialization section. Therefore, in high-speed mode, computational performance can be maximized.

도 23은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 도 24는 도 23의 초기화 랜더마이저(Randomizer)의 예시적인 구성을 보여주는 블록도이다.FIG. 23 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. FIG. 24 is a block diagram showing an example configuration of the initialization randomizer of FIG. 23.

도 23을 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(5350)는 암호화 연산기(5352), 암호화/복호화 컨트롤러(5356), 및 초기화 랜더마이저(5357)를 포함할 수 있다. 도 24를 참조하면, 몇몇 실시 예에서, 초기화 랜더마이저(5357)는 랜덤 값 생성기(5357a) 및 조합 논리 게이트(5357b)를 포함할 수 있다.Referring to Figure 23, in some embodiments, the encryption/decryption circuit 5350 may include an encryption operator 5352, an encryption/decryption controller 5356, and an initialization randomizer 5357. Referring to Figure 24, in some embodiments, initialization randomizer 5357 may include a random value generator 5357a and a combinational logic gate 5357b.

암호화 연산기(5352) 및 암호화/복호화 컨트롤러(5356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 23 및 도 24는 암호화/복호화 회로(5350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(5350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(5350), 암호화 연산기(5352), 및 암호화/복호화 컨트롤러(5356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the encryption operator 5352 and the encryption/decryption controller 5356 may include the configurations and operations of the encryption operator 1352 and the encryption/decryption controller 1356 of FIG. 2, respectively. 23 and 24 only show an example configuration of the encryption/decryption circuit 5350, and the encryption/decryption circuit 5350 may further include components included in the encryption/decryption circuit 1350 of FIG. 2. . For convenience of explanation, redundant descriptions of the encryption/decryption circuit 5350, encryption operator 5352, and encryption/decryption controller 5356 will be omitted below.

클록 신호(CLK1)가 규칙적으로 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 번갈아가며 갖는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점이 예측될 수 있다.When the clock signal CLK1 regularly alternates between a first logic value (e.g., logic “0”) and a second logic value (e.g., logic “1”), an initialization period and an operation period occur. The timing can be predicted.

한편, 초기화 구간이 랜덤하게 발생하거나 발생하지 않도록 제어되는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점을 예측하는 것이 어려울 수 있다. 이는, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 암호화 연산 및/또는 복호화 연산이 수행되는 연산 구간이 랜덤하게 가변(Variable)할 수 있기 때문이다.Meanwhile, when the initialization section is controlled to occur randomly or not, it may be difficult to predict when the initialization section occurs and when the calculation section occurs. This is because when the initialization section occurs randomly or does not occur, the operation section in which the encryption operation and/or decryption operation is performed may be randomly variable.

따라서, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 공격자는 공격자가 공격하고자 하는 암호화 연산 및/또는 복호화 연산이 시작되는 시점을 조절(Align)하기 어려울 수 있다. 결과적으로, 부 채널 분석 공격이 어려워질 수 있고, 보안 수준이 향상될 수 있다.Therefore, if the initialization section occurs randomly or does not occur, it may be difficult for an attacker to align the timing at which the encryption and/or decryption operation that the attacker wishes to attack begins. As a result, side-channel analysis attacks can become difficult and the security level can be improved.

도 23을 참조하면, 초기화 랜더마이저(5357)는 클록 신호(CLK1)를 수신할 수 있다. 클록 신호(CLK1)는 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 규칙적으로 번갈아가며 갖는 일반 클록 신호일 수 있다.Referring to FIG. 23, the initialization randomizer 5357 may receive a clock signal (CLK1). The clock signal CLK1 may be a general clock signal that regularly alternates between a first logic value (eg, logic “0”) and a second logic value (eg, logic “1”).

초기화 랜더마이저(5357)는 클록 신호(CLK1)에 기초하여, 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다. 랜덤화된 클록 신호(RCLK1)는 논리 "0"의 값 및 논리 "1"의 값을 규칙적으로 번갈아가며 갖는 대신, 논리 "0"의 값을 랜덤하게 갖거나 갖지 않을 수 있다.The initialization randomizer 5357 may generate a randomized clock signal RCLK1 based on the clock signal CLK1. The randomized clock signal RCLK1 may or may not randomly have a value of logic “0” instead of regularly alternating between logic “0” and logic “1” values.

도 24를 참조하면, 랜덤 값 생성기(5357a)는 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 생성할 수 있다. 랜덤 값 생성기(5357a)는 다양한 랜덤화 알고리즘 및 시뮬레이션 기법 중 하나 이상을 채용하여 동작할 수 있다. 랜덤화 알고리즘들 및 시뮬레이션 기법들은 통상의 기술자에 의해 잘 이해될 수 있으므로, 시드(Seed) 값에 기초하여 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 생성하는 방법에 관한 자세한 설명들은 이하 생략될 것이다.Referring to FIG. 24, the random value generator 5357a can randomly generate a value of logic “0” and a value of logic “1”. The random value generator 5357a may operate by employing one or more of various randomization algorithms and simulation techniques. Since randomization algorithms and simulation techniques can be well understood by a person skilled in the art, a detailed description of how to randomly generate a value of logic "0" and a value of logic "1" based on a seed value These will be omitted below.

조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)를 수신할 수 있다. 랜덤 값은 랜덤 값 생성기(5357a)로부터 제공될 수 있다. 랜덤 값은 논리 "0"의 값 및 논리 "1"의 값 중 하나를 랜덤하게 가질 수 있다.The combinational logic gate 5357b can receive a random value and a clock signal (CLK1). The random value may be provided from random value generator 5357a. The random value may randomly have one of a value of logical “0” and a value of logical “1”.

조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 기초하여, 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다. 이를 위해, 조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 대해 논리 연산을 수행할 수 있다. 예로서, 조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 대해 논리 합 연산을 수행할 수 있고, 이로써 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다.The combinational logic gate 5357b may generate a randomized clock signal RCLK1 based on the random value and the clock signal CLK1. To this end, the combinational logic gate 5357b can perform logic operations on random values and the clock signal CLK1. As an example, combinational logic gate 5357b may perform a logical sum operation on a random value and a clock signal CLK1, thereby generating a randomized clock signal RCLK1.

도 23을 참조하면, 암호화 연산기(5352)는 클록 신호(CLK1)를 직접 수신하는 대신, 랜덤화된 클록 신호(RCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(5352)는 랜덤화된 클록 신호(RCLK1)에 기초하여 암호화 연산을 수행할 수 있다.Referring to FIG. 23, the encryption operator 5352 may operate based on the randomized clock signal RCLK1 instead of directly receiving the clock signal CLK1. As an example, the encryption operator 5352 may perform an encryption operation based on the randomized clock signal RCLK1.

예로서, 랜덤 값 생성기(5357a)가 논리 "0"의 값을 갖는 랜덤 값을 생성하는 경우, 랜덤화된 클록 신호(RCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.As an example, when the random value generator 5357a generates a random value with a value of logic “0”, the randomized clock signal RCLK1 corresponds to the clock signal CLK1 with a value of logic “0” and It can alternately have the value of logical “1”. Therefore, the initialization section and the calculation section may occur alternately.

반면, 랜덤 값 생성기(5357a)가 논리 "1"의 값을 갖는 랜덤 값을 생성하는 경우, 랜덤화된 클록 신호(RCLK1)는 클록 신호(CLK1)에 관계없이, 논리 "1"의 값을 가질 수 있다. 따라서, 초기화 구간이 발생하지 않을 수 있고, 연산 구간만이 발생할 수 있다.On the other hand, when the random value generator 5357a generates a random value with a value of logic “1”, the randomized clock signal RCLK1 will have a value of logic “1” regardless of the clock signal CLK1. You can. Therefore, the initialization section may not occur, and only the calculation section may occur.

이러한 방식으로, 랜덤 값이 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 갖는 경우, 초기화 구간이 랜덤하게 발생하거나 발생하지 않을 수 있다. 초기화 구간의 발생이 랜덤화되는 경우, 암호화 연산 및/또는 복호화 연산이 시작되는 시점이 식별되기 어려울 수 있다. 따라서, 보안 수준이 향상될 수 있다. 랜덤 값의 랜덤화 수준을 증가시키기 위해, 랜덤 값을 생성하기 위해 이용되는 시드 값이 프로그램 가능하거나 가변할 수 있다.In this way, if the random value randomly has a value of logic “0” and a value of logic “1”, the initialization interval may or may not occur randomly. If the occurrence of the initialization section is randomized, it may be difficult to identify the point in time when the encryption operation and/or decryption operation begins. Therefore, the security level can be improved. To increase the level of randomization of the random values, the seed value used to generate the random values can be programmable or variable.

몇몇 실시 예에서, 초기화 랜더마이저(5357)의 일부 또는 전부는 암호화/복호화 컨트롤러(5356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 초기화 랜더마이저(5357)의 일부 또는 전부는 암호화/복호화 회로(5350) 외부에 제공될 수 있다. 초기화 랜더마이저(5357)는 클록 신호와 랜덤 값을 조합하기 위해 다양한 구성을 포함할 수 있다. 도 23 및 도 24의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(5350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the initialization randomizer 5357 may be included in the encryption/decryption controller 5356. In some other embodiments, some or all of the initialization randomizer 5357 may be provided external to the encryption/decryption circuitry 5350. The initialization randomizer 5357 may include various configurations to combine clock signals and random values. The exemplary configurations of FIGS. 23 and 24 are provided to aid better understanding and are not intended to limit the present invention. The configuration of the encryption/decryption circuit 5350 can be changed or modified in various ways.

몇몇 실시 예에서, 암호화/복호화 회로(5350)는 도 7의 구간 컨트롤러(2357)와 함께 초기화 랜더마이저(5357)를 채용할 수 있다. 예로서, 구간 컨트롤러(2357)는 클록 신호(CLK1) 대신, 초기화 랜더마이저(5357)로부터 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 이 예에서, 구간 컨트롤러(2357)는 제어 값(EC)(및/또는 제어 값(EC)의 반전 값(~EC)) 및 랜덤화된 클록 신호(RCLK1)에 기초하여 활성화 신호(ACT1)를 생성할 수 있다.In some embodiments, the encryption/decryption circuit 5350 may employ an initialization randomizer 5357 along with the interval controller 2357 of FIG. 7. For example, the section controller 2357 may receive a randomized clock signal RCLK1 from the initialization randomizer 5357 instead of the clock signal CLK1. In this example, section controller 2357 generates an activation signal (ACT1) based on the control value (EC) (and/or the inversion of the control value (EC) (˜EC)) and the randomized clock signal (RCLK1). can be created.

몇몇 실시 예에서, 암호화/복호화 회로(5350)는 도 15의 클록 컨트롤러(3357)와 함께 초기화 랜더마이저(5357)를 채용할 수 있다. 몇몇 실시 예에서, 암호화/복호화 회로(5350)는 도 20의 초기화 컨트롤러(4357)와 함께 초기화 랜더마이저(5357)를 채용할 수 있다. 예로서, 클록 컨트롤러(3357) 및 초기화 컨트롤러(4357) 각각은 클록 신호(CLK1) 대신, 초기화 랜더마이저(5357)로부터 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다.In some embodiments, the encryption/decryption circuit 5350 may employ an initialization randomizer 5357 in conjunction with the clock controller 3357 of Figure 15. In some embodiments, the encryption/decryption circuit 5350 may employ an initialization randomizer 5357 in conjunction with the initialization controller 4357 of FIG. 20. As an example, each of the clock controller 3357 and the initialization controller 4357 may receive a randomized clock signal (RCLK1) from the initialization randomizer 5357 instead of the clock signal (CLK1).

도 23은 랜덤화된 클록 신호(RCLK1)가 암호화 연산기(5352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 랜덤화된 클록 신호(RCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Figure 23 shows that the randomized clock signal (RCLK1) is provided to the cryptographic operator 5352. In some embodiments, the decoding operator 1353 of FIG. 2 may receive a randomized clock signal RCLK1 instead of the clock signal CLK2. Alternatively, the decoding operator 1353 may receive the activated signal ACT2 generated based on the randomized clock signal RCLK1 and the control value DC of FIG. 12.

몇몇 실시 예에서, 도 2의 S-Box(1355)는 클록 신호(CLK3) 대신, 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 또는, S-Box(1355)는 랜덤화된 클록 신호(RCLK1) 및 도 13의 제어 값(EC)에 기초하여 생성되는 활성화 신호(ACT3)를 수신할 수 있다. 본 발명의 실시 예들은 위 설명들에 의해 한정되지 않고, 일반 클록 신호 대신 활성화 신호 또는 랜덤화된 클록 신호를 채용하기 위해 다양하게 변경 또는 수정될 수 있다.In some embodiments, the S-Box 1355 of FIG. 2 may receive a randomized clock signal RCLK1 instead of the clock signal CLK3. Alternatively, the S-Box 1355 may receive an activation signal (ACT3) generated based on the randomized clock signal (RCLK1) and the control value (EC) of FIG. 13. Embodiments of the present invention are not limited by the above descriptions, and may be variously changed or modified to employ an activation signal or a randomized clock signal instead of a general clock signal.

위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.The contents described above are specific examples for implementing the technical idea of the present invention. The technical idea of the present invention will include not only the embodiments described above, but also embodiments that can be obtained by simply changing the design or easily changing the design. In addition, the technical idea of the present invention will include technologies that can be easily modified and implemented in the future based on the embodiments described above.

1000 : 컴퓨팅 장치 1700 : 버스
2350, 3350, 4350, 5350 : 암호화/복호화 회로
1000: computing device 1700: bus
2350, 3350, 4350, 5350: Encryption/decryption circuit

Claims (20)

입력 데이터의 암호화 또는 복호화를 수행하는 복수의 논리 게이트들을 포함하는 암호화 연산기; 및
상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되는지를 나타내는 제어 값에 기초하여, 상기 암호화 연산기를 제어하는 컨트롤러를 포함하되,
상기 컨트롤러는,
제 1 논리 값을 가지는 클록 신호에 기초하여, 상기 암호화 연산기가 제 1 모드에서 동작하도록 제어하고,
제 2 논리 값을 가지는 상기 클록 신호에 기초하여, 상기 암호화 연산기가 제 2 모드에서 동작하도록 제어하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하는 것에 기초하여, 상기 복수의 논리 게이트들로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지되도록, 상기 클록 신호에 기초한 교번 없이 상기 암호화 연산기가 상기 제 1 모드에서 동작하도록 제어하고,
상기 제 1 모드에서, 상기 복수의 논리 게이트들 각각은 상기 제 1 논리 값을 출력하고,
상기 제 2 모드에서, 상기 복수의 논리 게이트들 중, 각각이 상기 제 1 논리 값을 출력하는 제 1 논리 게이트들의 개수와 상기 복수의 논리 게이트들 중, 각각이 상기 제 2 논리 값을 출력하는 제 2 논리 게이트들의 개수는 일정하게 유지되는 전자 회로.
An encryption operator including a plurality of logic gates that perform encryption or decryption of input data; and
A controller that controls the encryption operator based on a control value indicating whether the encryption or decryption of the input data is performed,
The controller is,
Based on a clock signal having a first logical value, controlling the encryption operator to operate in a first mode,
Based on the clock signal having a second logic value, controlling the encryption operator to operate in a second mode,
Based on the control value indicating that the encryption or decryption of the input data is not performed, the outputs from the plurality of logic gates are not changed and the amount of power consumed by the plurality of logic gates is not changed. Controlling the cryptographic operator to operate in the first mode without alternating based on the clock signal so that this is maintained constant,
In the first mode, each of the plurality of logic gates outputs the first logic value,
In the second mode, the number of first logic gates, each of which outputs the first logic value, among the plurality of logic gates, and the number of first logic gates, each of which outputs the second logic value, among the plurality of logic gates 2 An electronic circuit in which the number of logic gates is kept constant.
제 1 항에 있어서, 상기 컨트롤러는,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하는 경우, 상기 암호화 연산기가 상기 제 1 모드 및 상기 제 2 모드를 번갈아가며 동작하도록 제어하는 전자 회로.
The method of claim 1, wherein the controller:
An electronic circuit that controls the encryption operator to operate alternately in the first mode and the second mode when the control value indicates that the encryption or decryption of the input data is performed.
삭제delete 제 1 항에 있어서,
상기 컨트롤러는 외부 장치로부터의 요청에 응답하여 상기 제어 값을 저장하는 레지스터를 포함하는 전자 회로.
According to claim 1,
The controller is an electronic circuit including a register that stores the control value in response to a request from an external device.
제 1 항에 있어서,
상기 암호화 또는 상기 복호화가 수행될 데이터를 저장하는 버퍼를 더 포함하는 전자 회로.
According to claim 1,
An electronic circuit further comprising a buffer for storing data on which the encryption or decryption is to be performed.
제 5 항에 있어서, 상기 컨트롤러는,
상기 버퍼에 저장된 상기 입력 데이터가 상기 암호화 또는 상기 복호화의 연산 단위 크기를 갖지 않는 경우, 상기 제어 값이 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하도록 설정하고,
상기 버퍼에 저장된 상기 입력 데이터가 상기 연산 단위 크기를 갖는 경우, 상기 제어 값이 상기 암호화 또는 상기 복호화가 수행됨을 지시하도록 설정하는 전자 회로.
The method of claim 5, wherein the controller:
If the input data stored in the buffer does not have the operation unit size of the encryption or decryption, the control value is set to indicate that the encryption or decryption is not performed,
An electronic circuit that sets the control value to indicate that the encryption or decryption is performed when the input data stored in the buffer has the operation unit size.
제 1 항에 있어서,
상기 컨트롤러는 상기 암호화 또는 상기 복호화의 반복 횟수에 관한 라운드(Round) 값을 관리하는 전자 회로.
According to claim 1,
The controller is an electronic circuit that manages a round value related to the number of repetitions of the encryption or decryption.
제 7 항에 있어서, 상기 컨트롤러는,
상기 라운드 값이 0에 대응하는 경우, 상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하도록 설정하고,
상기 라운드 값이 0에 대응하지 않는 경우, 상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하도록 설정하는 전자 회로.
The method of claim 7, wherein the controller:
If the round value corresponds to 0, set the control value to indicate that the encryption or decryption of the input data is not performed,
If the round value does not correspond to 0, the control value is set to indicate that the encryption or decryption of the input data is performed.
입력 데이터의 암호화 또는 복호화를 수행하는 복수의 논리 게이트들을 포함하는 암호화 연산기;
상기 암호화 연산기에 의해 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되는지를 지시하는 제어 값을 출력하는 암호화 컨트롤러; 및
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하는 것에 기초하여, 클록 신호에 기초한 교번 없이 비활성화 값을 가지는 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 상기 비활성화 값을 가지는 것에 기초하여, 상기 비활성화 값을 가지는 상기 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 활성화 값을 가지는 것에 기초하여, 상기 활성화 값을 가지는 상기 활성화 신호를 출력하는 구간 컨트롤러를 포함하되,
상기 암호화 연산기는,
상기 활성화 신호가 상기 비활성화 값을 가지는 것에 기초하여, 제 1 모드에서 동작하고,
상기 활성화 신호가 상기 활성화 값을 가지는 것에 기초하여, 제 2 모드에서 동작하고,
상기 제 1 모드에서, 상기 복수의 논리 게이트들로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지되도록, 상기 복수의 논리 게이트들 각각은 상기 비활성화 값을 출력하고,
상기 제 2 모드에서, 상기 복수의 논리 게이트들 중, 각각이 상기 비활성화 값을 출력하는 제 1 논리 게이트들의 개수와 상기 복수의 논리 게이트들 중, 각각이 상기 활성화 값을 출력하는 제 2 논리 게이트들의 개수는 일정하게 유지되는 전자 회로.
An encryption operator including a plurality of logic gates that perform encryption or decryption of input data;
an encryption controller outputting a control value indicating whether the encryption or decryption of the input data is performed by the encryption operator; and
Based on the control value indicating that the encryption or decryption of the input data is not performed, outputting an activation signal with a deactivation value without alternating based on a clock signal,
wherein the control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having the deactivation value, outputting the activation signal with the deactivation value;
The control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having an activation value, a section controller outputs the activation signal having the activation value,
The encryption operator is,
operating in a first mode based on the activation signal having the deactivation value;
Based on the activation signal having the activation value, operating in a second mode,
In the first mode, each of the plurality of logic gates sets the deactivation value so that outputs from the plurality of logic gates do not change and the amount of power consumed by the plurality of logic gates remains constant. Print it out,
In the second mode, the number of first logic gates, each of which outputs the deactivation value, among the plurality of logic gates, and the number of second logic gates, each of which outputs the activation value, among the plurality of logic gates An electronic circuit whose number remains constant.
삭제delete 제 9 항에 있어서, 상기 구간 컨트롤러는,
조합 논리 게이트를 포함하고,
상기 제어 값 및 상기 클록 신호를 조합하여, 상기 활성화 신호를 생성하는 전자 회로.
The method of claim 9, wherein the section controller:
comprising a combinational logic gate,
An electronic circuit that generates the activation signal by combining the control value and the clock signal.
삭제delete 삭제delete 삭제delete 삭제delete 데이터 입력/출력 장치;
상기 데이터 입력/출력 장치를 위해 입력 데이터의 암호화 또는 복호화를 수행하는 복수의 논리 게이트들을 포함하는 암호화 연산기를 포함하는 암호화/복호화 회로; 및
제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하는 것에 기초하여, 클록 신호에 기초한 교번 없이 활성화 값을 가지는 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 비활성화 값을 가지는 것에 기초하여, 상기 비활성화 값을 가지는 상기 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 상기 활성화 값을 가지는 것에 기초하여, 상기 활성화 값을 가지는 상기 활성화 신호를 출력하는 구간 컨트롤러를 포함하되,
상기 암호화 연산기는,
상기 활성화 신호가 상기 비활성화 값을 가지는 것에 기초하여, 상기 복수의 논리 게이트들로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지되도록, 제 1 모드에서 동작하고,
상기 활성화 신호가 상기 활성화 값을 가지는 것에 기초하여, 제 2 모드에서 동작하고,
상기 제 1 모드에서, 상기 복수의 논리 게이트들 각각은 상기 비활성화 값을 출력하고,
상기 제 2 모드에서, 상기 복수의 논리 게이트들 중, 각각이 상기 비활성화 값을 출력하는 제 1 논리 게이트들의 개수와 상기 복수의 논리 게이트들 중, 각각이 상기 활성화 값을 출력하는 제 2 논리 게이트들의 개수는 일정하게 유지되는 전자 장치.
data input/output devices;
an encryption/decryption circuit including an encryption operator including a plurality of logic gates that perform encryption or decryption of input data for the data input/output device; and
Based on a control value indicating that the encryption or decryption of the input data is not performed, output an activation signal having an activation value without alternation based on a clock signal,
wherein the control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having a deactivation value, outputting the activation signal with the deactivation value;
The control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having the activation value, a section controller outputs the activation signal having the activation value,
The encryption operator is,
Operating in a first mode such that, based on the activation signal having the deactivation value, outputs from the plurality of logic gates do not change and the amount of power consumed by the plurality of logic gates remains constant. do,
Based on the activation signal having the activation value, operating in a second mode,
In the first mode, each of the plurality of logic gates outputs the deactivation value,
In the second mode, the number of first logic gates, each of which outputs the deactivation value, among the plurality of logic gates, and the number of second logic gates, each of which outputs the activation value, among the plurality of logic gates Electronic devices whose number remains constant.
삭제delete 제 16 항에 있어서,
상기 클록 신호가 상기 비활성화 값을 갖는 시간 구간의 길이는 상기 클록 신호가 상기 활성화 값을 갖는 시간 구간의 길이보다 짧은 전자 장치.
According to claim 16,
The length of the time section in which the clock signal has the deactivation value is shorter than the length of the time section in which the clock signal has the activation value.
제 16 항에 있어서,
상기 제어 값은 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 저속 모드 또는 고속 모드에서 수행되는지 여부를 더 지시하고,
상기 전자 장치는, 초기화 컨트롤러를 더 포함하고,
상기 초기화 컨트롤러는,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 상기 저속 모드에서 수행됨을 지시하는 경우, 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 상기 클록 신호를 생성하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 상기 고속 모드에서 수행됨을 지시하는 경우, 상기 활성화 값을 유지하는 상기 클록 신호를 생성하는 전자 장치.
According to claim 16,
The control value further indicates whether the encryption or decryption of the input data is performed in low-speed mode or high-speed mode,
The electronic device further includes an initialization controller,
The initialization controller is,
When the control value indicates that the encryption or decryption of the input data is performed in the slow mode, generate the clock signal to alternately have the deactivation value and the activation value, and
An electronic device that generates the clock signal to maintain the activation value when the control value indicates that the encryption or decryption of the input data is performed in the high-speed mode.
제 16 항에 있어서,
상기 비활성화 값 및 상기 활성화 값 중 하나를 랜덤(Random)하게 갖는 랜덤 값, 및 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 일반 클록 신호에 기초하여, 상기 클록 신호를 생성하도록 구성되는 초기화 랜더마이저(Randomizer)를 더 포함하는 전자 장치.
According to claim 16,
An initialization randomizer ( An electronic device further comprising a randomizer.
KR1020160098292A 2016-05-27 2016-08-02 Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same KR102627585B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/488,639 US10891396B2 (en) 2016-05-27 2017-04-17 Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same
EP17167183.7A EP3249633A1 (en) 2016-05-27 2017-04-20 Electronic circuit performing encryption/decryption operation to prevent side-channel analysis attack, and electronic device including the same
CN201710346062.1A CN107437988B (en) 2016-05-27 2017-05-17 Electronic circuit for preventing side channel analysis attack and electronic device comprising same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160065955 2016-05-27
KR1020160065955 2016-05-27

Publications (2)

Publication Number Publication Date
KR20170134946A KR20170134946A (en) 2017-12-07
KR102627585B1 true KR102627585B1 (en) 2024-01-25

Family

ID=60920633

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160098292A KR102627585B1 (en) 2016-05-27 2016-08-02 Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same

Country Status (1)

Country Link
KR (1) KR102627585B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030169073A1 (en) * 2002-03-06 2003-09-11 Kabushiki Kaisha Toshiba Logic circuitry-implemented bus buffer
US20040070419A1 (en) * 2002-10-10 2004-04-15 Masashi Hirano Semiconductor integrated circuit
US20080265968A1 (en) * 2007-04-26 2008-10-30 Shuji Furuichi Clock frequency diffusing device
US20100107025A1 (en) * 2007-02-16 2010-04-29 Freescale Semiconductor, Inc System, computer program product and method for testing a logic circuit
US20130238931A1 (en) * 2011-12-02 2013-09-12 Toshihiro Suzuki Nonvolatile semiconductor storage device having encrypting arithmetic device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708273B1 (en) * 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
KR102068653B1 (en) * 2013-03-13 2020-01-21 삼성전자주식회사 Internal voltage generator and contactless IC card including the same
KR101702387B1 (en) * 2013-08-02 2017-02-03 주식회사 르코어테크놀러지 Driving Circuit For Light Emitting Diode and Method for Driving the LED

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030169073A1 (en) * 2002-03-06 2003-09-11 Kabushiki Kaisha Toshiba Logic circuitry-implemented bus buffer
US20040070419A1 (en) * 2002-10-10 2004-04-15 Masashi Hirano Semiconductor integrated circuit
US20100107025A1 (en) * 2007-02-16 2010-04-29 Freescale Semiconductor, Inc System, computer program product and method for testing a logic circuit
US20080265968A1 (en) * 2007-04-26 2008-10-30 Shuji Furuichi Clock frequency diffusing device
US20130238931A1 (en) * 2011-12-02 2013-09-12 Toshihiro Suzuki Nonvolatile semiconductor storage device having encrypting arithmetic device

Also Published As

Publication number Publication date
KR20170134946A (en) 2017-12-07

Similar Documents

Publication Publication Date Title
US10291390B2 (en) Endecryptor preventing side channel attack, driving method thereof and control device having the same
US11856116B2 (en) Method and apparatus for protecting embedded software
KR20220028132A (en) Cryptographic Architectures for Cryptographic Permutations
US8745411B2 (en) Protecting external volatile memories using low latency encryption/decryption
KR102628010B1 (en) Encryption circuit for virtual encryption operation
US20150089245A1 (en) Data storage in persistent memory
CN107437988B (en) Electronic circuit for preventing side channel analysis attack and electronic device comprising same
KR20110129932A (en) Key recovery mechanism for cryptographic systems
US11115181B2 (en) Memory device, host device, and memory system
US11863670B2 (en) Efficient side-channel-attack-resistant memory encryptor based on key update
Liu et al. An energy-efficient encryption mechanism for NVM-based main memory in mobile systems
US8379850B1 (en) Method and integrated circuit for secure encryption and decryption
KR101757560B1 (en) Method and apparatus for encrypting hybrid memory using access pattern within non-volatile memory
KR20150091691A (en) CRT-RSA encryption method and apparatus and computer readable storage medium therefore
KR102627585B1 (en) Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same
KR20180059217A (en) Apparatus and method for secure processing of memory data
US20130198528A1 (en) Modifying a Length of an Element to Form an Encryption Key
JP2023542936A (en) Metadata tweak for channel encryption differentiation
TWI845059B (en) Integrated circuit and method of performing secure cryptographic operations
JP6473874B2 (en) Memory device, host device, and memory system
JP6516610B2 (en) Memory device, host device, and memory system
JP2009075474A (en) Cryptography processor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right