KR20170134946A - 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
KR20170134946A
KR20170134946A KR1020160098292A KR20160098292A KR20170134946A KR 20170134946 A KR20170134946 A KR 20170134946A KR 1020160098292 A KR1020160098292 A KR 1020160098292A KR 20160098292 A KR20160098292 A KR 20160098292A KR 20170134946 A KR20170134946 A KR 20170134946A
Authority
KR
South Korea
Prior art keywords
encryption
value
logic
clock signal
decryption
Prior art date
Application number
KR1020160098292A
Other languages
Korean (ko)
Other versions
KR102627585B1 (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

The present invention relates to an electronic circuit which comprises an encryption operator, and a controller. The encryption operator performs encryption and decryption operations using a plurality of logic gates. The controller controls an operation of the encryption operator to allow each of the logic gates to output a first logic value during a first time period, and to allow the number of logic gates outputting the first logic value during a second time period and the number of logic gates outputting a second logic value to be constantly maintained on the basis of a control value related to the encryption and decryption operations, and a clock signal. When the control value indicates that the encryption and decryption operations are not performed, the logic gates are operated in one of the first and second time periods. According to the present invention, the amount of power consumed by an encryption and decryption circuit is reduced, and operation performance and a security level of the encryption and decryption circuit are improved.

Description

부 채널 분석 공격을 방지하기 위한 암호화/복호화 연산을 수행하는 전자 회로 및 그것을 포함하는 전자 장치 {ELECTRONIC CIRCUIT PERFORMING ENCRYPTION/ DECRYPTION OPERATION TO PREVENT SIDE-CHANNEL ANALYSIS ATTACK, AND ELECTRONIC DEVICE INCLUDING THE SAME}TECHNICAL FIELD [0001] The present invention relates to an electronic circuit for performing an encryption / decryption operation for preventing a subchannel analysis attack, and an electronic device including the electronic circuit. [0002]

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

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

입력 또는 출력되는 데이터는 전자 장치 외부의 개체(Entity)에 노출될 수 있다. 예로서, 전자 장치에 대한 공격자(예컨대, 해커(Hacker))는 전자 장치로 입력되는 데이터를 조작(Manipulate)하여, 전자 장치의 제어 권한을 획득할 수 있다. 예로서, 공격자는 전자 장치로부터 출력되는 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 이러한 예들에서, 전자 장치 및 전자 회로의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.The input or output data may be exposed to an entity outside the electronic device. As an example, an attacker (e.g., a hacker) with respect to an electronic device may manipulate data input to the electronic device to obtain control of the electronic device. By way of example, an attacker may manipulate data output from an electronic device to arbitrarily change data or impair the security attributes of the data. In these instances, the security levels and reliability of the electronic device and the electronic circuit can be significantly degraded.

이러한 이유에 기인하여, 전자 장치는 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화/복호화 연산은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, the electronic device may include encryption / decryption circuitry for encrypting the input or output data and for decrypting the encrypted data. The encryption / decryption circuit can encrypt / decrypt data according to an encryption / decryption algorithm using a key. If the key is not known, it can be difficult for the attacker to determine the key based solely on the input / output data, and thus it may be difficult for the 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 may still be attacked by attackers. The attacker may conduct a "Side-channel Analysis Attack" instead of directly manipulating input or output data. In a subchannel analysis attack, an attacker can collect incidental information such as the amount of power consumed by the encryption / decryption circuit, the waveform of the electromagnetic wave generated by the encryption / decryption circuit, and the like. The attacker may attack the encryption / decryption circuit to determine 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 circuitry and electronic devices that perform cryptographic computation and / or decryption operations to prevent subchannel analysis attacks. The electronic circuit and the electronic device according to the embodiments of the present invention may adaptively use a clock signal necessary for performing cryptographic operation and / or decryption operation.

본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 이용하여 암호화 및 복호화 연산들 중 적어도 하나를 수행할 수 있다. 컨트롤러는 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 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. Wherein the controller is configured to output a first logic value for each of the plurality of logic gates during a first time interval and a plurality of logic gates for a second time interval during a second time interval based on a control value associated with performing at least one of encryption and decryption operations and a clock signal, The operation of the encryption calculator can be controlled such that the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value in the logic gates are kept constant. If 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 interval and the second time interval under the control of the controller.

본 발명의 실시 예에 따른 전자 회로는 암호화 연산기, 암호화 컨트롤러, 및 구간 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 포함할 수 있다. 암호화 컨트롤러는 암호화 연산기에 의한 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값을 출력할 수 있다. 구간 컨트롤러는 제어 값 및 클록 신호에 기초하여 활성화 신호를 생성할 수 있다. 제 1 시간 구간 동안, 복수의 논리 게이트 각각은 활성화 신호의 비활성화 값에 응답하여 제 1 논리 값을 출력할 수 있다. 제 2 시간 구간 동안, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 활성화 신호의 활성화 값에 응답하여 일정하게 유지될 수 있다.The electronic circuit according to the embodiment of the present invention may include an encryption calculator, an encryption controller, and a section controller. The encryption operator may include a plurality of logic gates. The encryption controller can output a control value associated with the execution of at least one of encryption and decryption operations by the encryption operator. The interval controller can generate an activation signal based on the control value and the clock signal. During the first time interval, each of the plurality of logic gates may output a first logic value in response to an inactivation value of the activation signal. During the second time interval, the number of logic gates outputting the first logic value among the plurality of logic gates and the number of logic gates outputting the second logic value may remain 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 an interval controller. The encryption / decryption circuit may perform encryption and decryption operations for the data input / output device. The interval 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 the encryption and decryption operations are not performed, in response to the activation signal having one of the deactivation value and the activation value, the outputs from the encryption / decryption circuit are not changed and consumed by the encryption / decryption circuit 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 encryption operator may include a plurality of logic gates that operate based on the clock signal. The controller is responsive to the first logic value of the clock signal to cause the output values from the plurality of logic gates to be unchanged and in response to the second logic value of the clock signal, The number of logic gates and the number of logic gates outputting the second logic value are held constant. The length of the first time interval in which the clock signal has the first logic value may be shorter than the length of the second time interval 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 encryption operator may include a plurality of logic gates that operate based on the second clock signal. The length of the first time interval in which the first clock signal has the first logic value may be equal to the length of the second time interval in which the first clock signal has the second logic value. The length of the third time interval in which the second clock signal has the first logic value may be shorter than the length of the fourth time interval in which the second clock signal has the second logic value. In response to the first logic value of the second clock signal, the 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. The clock controller can generate a clock signal. The encryption / decryption circuit may perform encryption and decryption operations for the data input / output device based on the clock signal. The length of the first time interval in which the clock signal has the first logic value may be shorter than the length of the second time interval in which the clock signal has the second logic value. In response to the first logical value of the clock signal, the output values from the encryption / decryption circuit may not change. In response to the second logical value of the clock signal, the amount of power consumed by the encryption / decryption circuit can 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 operation 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 illustrating a computing device including electronic devices employing encryption / decryption circuits in accordance with embodiments of the present invention.
2 is a block diagram illustrating an exemplary configuration of the encryption / decryption circuit of FIG.
3 is a flow chart illustrating an exemplary encryption operation performed in the encryption / decryption circuit of FIG. 2;
4 is a block diagram illustrating an exemplary logic circuit included in the encryption / decryption circuit of FIG.
5 is a table for explaining the operation of the logic circuit of FIG.
FIG. 6 is a timing diagram illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 2. FIG.
7 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG.
FIG. 8 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the interval controller of FIG. 7. FIG.
Figs. 9A and 9B are block diagrams showing exemplary configurations of the section controller of Fig. 7 with respect to the timing diagram of Fig.
FIG. 10 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the interval controller of FIG. 7. FIG.
Figs. 11A and 11B are block diagrams showing exemplary configurations of the section controller of Fig. 7 with respect to the timing diagram of Fig.
12 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG.
FIG. 13 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG. 2; FIG.
FIG. 14 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 2; FIG.
15 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG.
16 is a block diagram illustrating an exemplary configuration of the clock controller of FIG.
FIG. 17 is a timing diagram illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 15 including the clock controller of FIG. 16;
18 is a block diagram illustrating an exemplary configuration of the clock controller of FIG.
19 is a timing diagram for illustrating time intervals of an exemplary 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 exemplary configuration included in the encryption / decryption circuit of Fig. 2; Fig.
FIG. 21 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the initialization controller of FIG. 20; FIG.
FIGS. 22A and 22B are block diagrams showing exemplary configurations of the initialization controller of FIG. 20 with respect to the timing diagram of FIG.
23 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of Fig.
FIG. 24 is a block diagram showing an exemplary configuration of the initialization randomizer of FIG. 23. FIG.

아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Reference will now be made in detail to the present embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. Will be explained.

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

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

예로서, 프로세서 장치(1100)는 프로세서 코어들(1110)을 이용하여, 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있다. 하나 이상의 캐시들(1130)은 명령어 집합의 실행에 의해 생성되는 데이터 또는 명령어 집합을 실행하기 위해 이용될 데이터를 일시적으로 저장할 수 있다.By way of example, processor device 1100 may execute instruction sets of a program code using processor cores 1110. [ The one or more caches 1130 may temporarily store data that is generated by execution of the 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. By way of example, working memory 1200 may store data to be processed or processed by processor device 1100 in one or more memories 1210. By way of example, the memories 1210 may include volatile memory such as Static Random Access Memory (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), and the like. The memory controller 1230 may control the memories 1210 to store the 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 the power supply. The storage device 1300 may store system data used to operate the computing device 1000 and / or user data for a user of the computing device 1000 in one or more non-volatile memories 1310. For example, non-volatile memories 1310 may be implemented as non-volatile memories such as Flash memory, Phase-change RAM (PRAM), Magneto-resistive RAM (MRAM), Resistive RAM (REAM), Ferro- And < / RTI > memories. Memory controller 1330 may control non-volatile memories 1310 to store data or output stored data to non-volatile memories 1310. As an example, storage device 1300 may be a solid state drive (SSD) , A hard disk drive (HDD), a secure digital (SD) card, a multimedia card (MMC), and the like.

통신 블록(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)의 외부 장치/시스템과 통신할 수 있다.Communication block 1400 may communicate with an external device / system of computing device 1000 under the control of processor device 1100. By way of example, communication block 1400 may include at least one of a variety of wireline communication protocols such as Ethernet, Transfer Control Protocol / Internet Protocol (TCP / IP), Universal Serial Bus (USB) Term Evolution), WiMax (Global Interoperability for Microwave Access), GSM (Global System for Mobile communications), CDMA (Code Division Multiple Access), Bluetooth, Near Field Communication (NFC), Wireless Fidelity And / or the like, in accordance with at least one of the various wireless communication protocols.

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

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

프로세서 장치(1100), 워킹 메모리(1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 기타 장치(1600) 각각은 칩 레벨 및/또는 패키지 레벨의 장치로 구현될 수 있고, 컴퓨팅 장치(1100)에 장착될 수 있다. 또는, 프로세서 장치(1100), 워킹 메모리(1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 기타 장치(1600) 각각은 독립적인 전자 장치로 구현될 수 있고, 컴퓨팅 장치(1100) 내에 조립될 수 있다. 장착된 또는 조립된 구성 요소(Component)들은 버스(1700)를 통해 서로 연결될 수 있다.Each of the processor device 1100, the working memory 1200, the storage device 1300, the communication block 1400, the user interface 1500, and other devices 1600 may be implemented as a chip level and / And may be mounted to the computing device 1100. Alternatively, each of the processor device 1100, the working memory 1200, the storage device 1300, the communication block 1400, the user interface 1500, and other devices 1600 may be implemented as independent electronic devices, May be assembled within the computing device 1100. The mounted or assembled components may be connected to each other via 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) 등과 같은 다양한 통신 규약 중 하나 이상을 포함할 수 있다.The bus 1700 may provide a communication path between the components of the computing device 1000. The components of the computing device 1000 may exchange data with each other based on the bus format of the bus 1700. [ By way of example, the bus format may be one or more of the following: Peripheral Component Interconnect Express (PCIe), Nonvolatile Memory Express (NVMe), Small Computer System Interface (SCSI), Advanced Technology Attachment (ATA), Serial ATA, Parallel ATA, SAS Serial Attached SCSI), Universal Flash Storage (UFS), and the like.

컴퓨팅 장치(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 computing device 1000 may be referred to as a data input / output device.

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

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

이러한 이유에 기인하여, 컴퓨팅 장치(1000)의 구성 요소들은 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 암호화 및 복호화 연산들에서, 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화 및 복호화 연산들은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, the components of the computing device 1000 may include encryption / decryption circuitry for encrypting the input or output data and for decrypting the encrypted data. The encryption / decryption circuit may perform encryption and decryption operations for the data input / output device. In the encryption and decryption operations, the encryption / decryption circuit may encrypt / decrypt the data according to an encryption / decryption algorithm using a key. If the key is not known, it can be difficult for the attacker to determine the key based solely on the input / output data, and thus it may be difficult for the 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)의 제어 권한이 보호될 수 있다.By way of example, processor device 1100 may use encryption / decryption circuitry 1150 to encrypt data output from processor cores 1110 and / or caches 1130. Further, the processor device 1100 may use the encryption / decryption circuit 1150 to decrypt the data to be input to the processor cores 1110 and / or the caches 1130. Understanding and analyzing data that is transformed by encryption and decryption operations can be difficult for an attacker. Thus, the control authority of the processor apparatus 1100 can be protected.

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

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

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

도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다. 도 1 및 도 2에 나타낸 것과 같이, 암호화/복호화 회로(1350)는 저장 장치(1300)에서 불휘발성 메모리들(1310) 및 메모리 컨트롤러(1330)와 연결될 수 있다. 이 명세서에서 불휘발성 메모리들(1310)을 위한 암호화/복호화 회로(1350)가 설명되지만, 암호화/복호화 회로(1350)는 저장 장치(1300)에 포함되는 휘발성 메모리(예컨대, 버퍼 메모리, 캐시 메모리 등)에도 적용될 수 있다.2 is a block diagram illustrating an exemplary configuration of the encryption / decryption circuit of FIG. 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. [ Decryption circuitry 1350 for non-volatile memories 1310 is described in this specification, the encryption / decryption circuitry 1350 may be implemented as volatile memory (e.g., buffer memory, cache memory, etc.) ).

몇몇 실시 예에서, 암호화/복호화 회로(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, an S-Box (Substitution-Box) 1355, And 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.

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

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

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

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

도 3을 참조하여 설명될 것과 같이, 암호화 연산(및/또는 복호화 연산)은 한 번만 수행되는 것이 아니라, 보안 수준을 높이기 위해 여러 번 반복될 수 있다. 암호화 연산(및/또는 복호화 연산)을 한 번 수행하는 것은 하나의 "라운드(Round)"로 언급될 수 있다. 암호화 연산들(및/또는 복호화 연산들)의 반복 횟수는 "라운드 값"에 기초하여 관리될 수 있다. 예로서, 키는 각 라운드마다 상이하게 선택될 수 있다. 예로서, 첫 번째 라운드를 위해 선택되는 키는 두 번째 라운드를 위해 선택되는 키와 상이할 수 있다.As will be described with reference to FIG. 3, the encryption operation (and / or decryption operation) is not performed only once, but may be repeated many times to increase the security level. Performing a cryptographic operation (and / or decryption operation) once may be referred to as a "round ". The number of iterations of the encryption operations (and / or decryption operations) may be managed based on the "round value ". By way of 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)로 제공할 수 있다.The key manager 1354 can manage a plurality of keys. The key manager 1354 may schedule a key to be selected in each round among a plurality of keys. Key manager 1354 may provide the scheduled key to cryptographic operator 1352 and / or decryption operator 1353 in response to requests of cryptographic operator 1352 and / or 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)을 기반으로 수행될 수 있다.The S-Box 1355 may perform a substitution operation. In a permutation operation, S-Box 1355 may convert an m-bit input to an n-bit output (where each of m and n is an integer equal to or greater than 1 and m may be equal to or different from n has exist). As an example, the replacement operation of S-Box 1355 may be performed based on a Look-up Table that includes a correspondence between m-bit inputs and n-bit outputs.

예로서, 암호화 연산기(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 may encrypt (decrypt) the data substituted by the S- Operation and decoding operation can be performed. The S-Box 1355 can convert the data buffered in the buffer 1351 into other data for the cryptographic operation unit 1352 and the decryption operation unit 1353. Since the S-Box 1355 changes the data on which the encryption and decryption operations are to be performed, the security level of the data can be further improved.

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

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

암호화 연산기(1352)의 논리 게이트들은 암호화 연산을 수행하기 위해 클록 신호(CLK1)에 기초하여 동작할 수 있다. 복호화 연산기(1353)의 논리 게이트들은 복호화 연산을 수행하기 위해 클록 신호(CLK2)에 기초하여 동작할 수 있다. S-Box(1355)의 논리 게이트들은 치환 연산을 수행하기 위해 클록 신호(CLK3)에 기초하여 동작할 수 있다. 클록 신호들(CLK1, CLK2, CLK3) 각각은 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 갖도록 상승 에지(Rising Edge) 및 하강 에지(Falling Edge)로 형성되는 신호를 의미할 수 있다.The logic gates of the encryption operator 1352 may operate based on the clock signal CLK1 to perform an encryption 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 permutation 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 Edge "). ≪ / RTI >

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

도 2는 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)가 각각 별개의 클록 신호들(CLK1, CLK2, CLK3)을 수신하는 것을 보여준다. 그러나, 몇몇 실시 예에서, 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)의 일부 또는 전부는 동일한 클록 신호를 공유할 수 있다.2 shows that the encryption operator 1352, the decryption operator 1353, and the S-Box 1355 receive the separate clock signals CLK1, CLK2 and CLK3, respectively. However, in some embodiments, some or all of the 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, so that the performance of the encryption / decryption circuit 1350 can be improved. On the other hand, in some cases, the encryption operator 1352 and the decryption operator 1353 can be implemented as a single module, and thus the area of the encryption / decryption circuit 1350 can be reduced. In some cases, the encryption / decryption circuit 1350 may include a plurality of encryption operators and / or a plurality of 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 FIG. 2, the S-Box 1355 may be implemented as an independent module. However, in some cases, S-Box 1355 may be included in cryptographic 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 computer 1352, the decryption computer 1353, and the key manager 1354.

예로서, 암호화/복호화 컨트롤러(1356)는 요청(REQ)에 응답하여 암호화 연산기(1352)의 암호화 연산 및/또는 복호화 연산기(1353)의 복호화 연산을 개시시킬 수 있다. 요청(REQ)은 암호화/복호화 회로(1350)의 외부 구성 요소(예컨대, 메모리 컨트롤러(1330), 프로세서 장치(1100) 등)로부터 제공되거나, 암호화/복호화 회로(1350) 내부에서 생성될 수 있다.As an example, the encryption / decryption controller 1356 can start the encryption operation of the encryption operation unit 1352 and / or the decryption operation of the decryption operation unit 1353 in response to the request (REQ). The request REQ may be provided from an external component of the encryption / decryption circuit 1350 (e.g., memory controller 1330, processor device 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. The register 1356a may store the control value. The control value may be associated with performing at least one of encryption and decryption operations. By way of example, the control value may indicate whether or not a cryptographic operation is performed, or may indicate an environment (e.g., speed, security level, mode of operation, etc.) of the cryptographic operation.

제어 값은 요청(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 encryption / decryption controller 1356. [ As an example, if memory controller 1330 provides a request (REQ) to initiate a cryptographic operation to encryption / decryption controller 1356, register 1356a may store a control value indicating that the cryptographic operation is to be performed . By way of example, the encryption / decryption controller 1356 refers to the control value stored in the register 1356a to control the operations of the buffer 1351, the encryption computer 1352, and the key manager 1354 so that the encryption operation is performed .

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

도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.3 is a flow chart illustrating an exemplary 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)는 암호화 연산의 수행 및 환경을 지시하는 제어 값을 저장할 수 있다.By way of example, FIG. 3 illustrates that the encryption / decryption circuit 1350 performs encryption operations in accordance with an Advanced Encryption Standard (AES) established by the 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 may store control values indicating the execution of the encryption operation and the environment.

S110 동작에서, 암호화 연산기(1352)는 "AddRoundKey" 연산을 수행할 수 있다. "AddRoundKey" 연산은 버퍼(1351)로부터의 데이터 및 키 관리기(1354)로부터의 키에 대해 비트 단위의(Bitwise) 조합 논리 연산(예컨대, 논리 합 연산, 논리 곱 연산, 배타적 논리 합 연산 등)을 수행하는 것을 포함할 수 있다. 따라서, 버퍼(1351)로부터의 데이터는 선택된 키에 기초하여 다른 데이터로 변환될 수 있다.In operation S110, the encryption operator 1352 may perform an "AddRoundKey" operation. The "AddRoundKey" operation is a bitwise combinational logic 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 And the like. Thus, the data from the 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, S-Box 1355 may perform a permutation operation on the transformed data in operation S110, in response to a request from cryptographic operator 1352. [ In operation S122, the encryption operator 1352 may perform a "ShiftRows" operation on the state of the replaced data in operation S120. In the "ShiftRows" operation, the rows of the data state can be cyclically shifted. In operation S124, the encryption operator 1352 may perform a "MixColumns" operation on the shifted data state in operation S122. In the "MixColumns" operation, the columns of the data state 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 transformed data having a mixed state in operation S124. The encryption operator 1352 may perform a combinational logic operation on a bit basis for the converted data and the key from the key manager 1354. [ In some embodiments, the encryption operator 1352 may omit the S126 operation and perform the S130 operation according to the settings.

S120 내지 S126 동작들에 따라, 버퍼(1351)로부터의 데이터는 원래의 값과 상이한 다른 값을 갖도록 변환될 수 있다. 따라서, 공격자가 데이터를 의도적으로 공격하는 것이 어려워질 수 있고, 보안 수준이 향상될 수 있다. S120 내지 S126 동작들은 하나의 라운드를 구성할 수 있다. 키 관리기(1354)는 S126 동작의 "AddRoundKey" 연산을 위해 각 라운드마다 상이한 키들을 선택할 수 있다.According to operations S120 to S126, the data from the buffer 1351 may be converted to have different values from the original values. Therefore, an attacker may have difficulty in intentionally attacking the data, and the security level may be improved. Operations S120 to S126 may constitute one round. 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 can increase the round value by 1 each time one round is performed. For example, rounds may be repeated 10 times, 12 times, or 14 times depending on the size of the data (although the invention is not so limited), the encryption / decryption controller 1356 may determine, based on the round value, It can be determined whether or not the last round is the last round. By way of 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, the S120 operation may be performed again. In operation S120, S-Box 1355 may perform a permutation operation on the transformed data in operation S126 in response to a request from cryptographic 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, S-Box 1355 may perform a permutation operation on the transformed data in operation S126 in response to a request from cryptographic operator 1352. [ In operation S142, the encryption operator 1352 may perform a "ShiftRows" operation on the state of the replaced data in operation S140. In operation S144, encryption operator 1352 may perform an "AddRoundKey" operation on the transformed 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 zero).

라운드가 반복됨에 따라, 데이터의 값이 점차 변환될 수 있다. S140 내지 S144 동작들로 구성되는 마지막 라운드가 완료된 후, 최종적으로 변환된 데이터가 불휘발성 메모리들(1310)에 저장될 수 있다. 따라서, 공격자가 불휘발성 메모리들(1310)의 암호화된 데이터를 임의로 조작하거나 손상시키는 것이 상당히 어려워질 수 있다.As the round is repeated, the value of the data can be gradually transformed. After the last round of operations S140 through S144 is completed, the finally converted data may be stored in the non-volatile memories 1310. [ Thus, it can be very difficult for the attacker to arbitrarily manipulate or damage the encrypted data of 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 the encrypted data in the non-volatile memories 1310. The encryption / decryption controller 1356 may control the encryption operator 1352 to perform the encryption operation in response to the request (REQ). The register 1356a may store a control value indicating, in response to the request (REQ), that the encryption operation is performed.

암호화 연산은 연산 단위 크기를 갖는 데이터에 대해 수행될 수 있다. 예로서, "MixColumns" 연산을 위한 연산 단위 크기는 32비트일 수 있고, "MixColumns" 연산은 32비트의 데이터에 대해 수행될 수 있다. 예로서, "ShiftRows" 연산을 위한 연산 단위 크기는 128비트일 수 있고, "ShiftRows" 연산은 128비트의 데이터에 대해 수행될 수 있다.The encryption operation may 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 the data stored in the buffer 1351. When the data stored in the buffer 1351 has the size of the operation unit of the encryption operation, the encryption / decryption controller 1356 can determine that the encryption operation is performed. For example, if the buffer 1351 completely stores 32-bit data for the "MixColumns" operation as data is gradually accumulated in the buffer 1351, the encryption / decryption controller 1356 causes the "MixColumns & It is possible to control the cryptographic operation unit 1352.

한편, 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖지 않는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행되지 않음을 판별할 수 있다. 레지스터(1356a)는 암호화/복호화 컨트롤러(1356)의 판별에 의존하여, 암호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다.On the other hand, when the data stored in the buffer 1351 does not have the operation unit size of the encryption operation, the encryption / decryption controller 1356 can determine that the encryption operation is not performed. The register 1356a may store a control value indicating that the 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, the encryption / decryption controller 1356 may control the encryption operation based on the round value. If the round value corresponds to zero, the encryption operation may not be performed, and therefore the register 1356a may store a control value indicating that the encryption operation is not performed. On the other hand, when the round value does not correspond to 0 (for example, when the encryption / decryption controller 1356 increases the round value), a cryptographic operation may be performed and therefore the register 1356a instructs the cryptographic operation to be performed Can be stored.

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

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

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

몇몇 암호화/복호화 회로는 "부 채널 분석 공격(Side-channel Analysis Attack)"에 의해 공격될 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.Some encryption / decryption circuits may be attacked by a "Side-channel Analysis Attack ". In a subchannel analysis attack, an attacker can collect incidental information such as the amount of power consumed by the encryption / decryption circuit, the waveform of the electromagnetic wave generated by the encryption / decryption circuit, and the like. The attacker may attack the encryption / decryption circuit to determine 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 the embodiment of the present invention may include a logic circuit (LGC) for preventing a subchannel analysis attack. Referring to FIG. 4, the logic circuit LGC may perform a combinational logic operation corresponding to an exclusive logical sum operation. In some examples, the cryptographic operator 1352 may include a logic circuit (LGC), and the logic circuit LGC may include an "AddRoundKey" operation (e.g., in the S110, S126, and S144 operations of FIG. 3) .

논리 회로(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. The input ~A may correspond to the inverted value of input A and the input ~B may correspond to the inverted value of input B. For example, if the logic circuit LGC is associated with an "AddRoundKey" operation, input A may correspond to bits contained in data from buffer 1351 and input B may correspond to bits from key manager 1354 May correspond to the bits included in the key of < / RTI > The logic circuit LGC may output the results corresponding to the exclusive logical sum of the inputs A and B and the inverse 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)에 대응하는 값들을 각각 출력할 수 있다). 여기서, 특정 입력의 "통과"는 그 특정 입력이 논리 게이트의 출력을 생성하는 데에 능동적인 영향을 준다는 것을 의미할 수 있다.The inputs A, B, ..., A through B may or may not pass through the logic gates P1, P2, P3 and P4, respectively, based on the clock signal CLK1. As an example, the inputs A, B, ..., A, ..., B are connected to logic gates P1, P2, P3, P4 while the clock signal CLK1 has a first logical value , And each of the logic gates P1, P2, P3, and P4 may output a first logic value (e.g., logic "0"). On the other hand, the inputs A, B, ..., A, B are connected to the logic gates P1, P2, P3, P4 while the clock signal CLK1 has a second logic value (I.e., the logic gates P1, P2, P3, and P4 may output values corresponding to the inputs A, B, ..., A, ..., respectively). Here, "passing" of a particular input may mean that the particular input has an active influence on 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)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.The logic gates AND1, AND2, OR1, and OR2 may combine the values output from the logic gates P1, P2, P3, and P4. The logic gates OR3 and AND3 can combine the values output from the logic gates AND1, AND2, OR1, and OR2. Thus, the logic gates OR3 and AND3 can output the results corresponding to the exclusive logical sum of the inputs A and B and the inverse 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)의 값들에 의존하여 상이한 값들을 출력할 수 있다.5 shows the relationship between the outputs A and B of the logic circuit LGC and the outputs of the logic gates AND1, AND2, AND3, OR1, OR2 and OR3. Each of the logic gates AND1, AND2, AND3, OR1, OR2 and OR3 has a logic "0" regardless of the values of the inputs A, B when the clock signal CLK1 has a value of logic " Can be output. On the other hand, when the clock signal CLK1 has a value of logic "1 ", the logic gates AND1, AND2, AND3, OR1, OR2 and OR3 depend on the values of the inputs A and B, Can be output.

도 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 the value of logic" 1 " is constant. As an example, in the logic circuit LGC of Fig. 4, the logic gates outputting the value of logic "1 " may be changed depending on the values of the inputs A and B. However, regardless of the values of the inputs A and B, one AND gate outputs a value of logic "1 " and two logic sum (OR) gates output values of logic & can do.

도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있고, 따라서 논리 회로(LGC)에 의해 소모되는 전체 전력의 양이 일정하게 유지될 수 있다. 이로 인해, 공격자가 논리 회로(LGC)에 의해 소모되는 전력의 양, 논리 회로(LGC)에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집하더라도, 공격자는 논리 회로(LGC)의 구성 및 동작을 이해하기 어려울 수 있다. 결과적으로, 논리 회로(LGC)는 부 채널 분석 공격으로부터의 보호를 가능하게 할 수 있다.In the logic circuit LGC in Fig. 4, the number of logic gates outputting the value of logic "1" can be kept constant, and therefore the amount of total power consumed by the logic circuit LGC is kept constant . Therefore, even if the attacker collects additional information such as the amount of power consumed by the logic circuit LGC, the waveform of the electromagnetic wave generated by the logic circuit LGC, etc., Can be difficult to understand. As a result, the logic circuit (LGC) can enable protection from subchannel 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 for better understanding, and are not intended to limit the present invention. The configuration and operation of the logic circuit (LGC) can be variously modified or changed. Furthermore, the logic circuit LGC is only an example of one of the various logic circuits included in the encryption / decryption circuit 1350. [ The encryption / decryption circuit 1350 may further include various other logic circuits having various configurations for performing 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 subchannel analysis attacks. These logic circuits may include a plurality of logic gates, and the number of logic gates outputting the value of logic "0 " and the number of logic gates outputting the value of logic" 1 " .

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

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

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

클록 신호(CLK1)에 기초하여 논리 게이트들의 상태 및 전력 소모를 변경(예컨대, 전환(Switching))시키는 것은 부 채널 분석 공격을 더욱 어렵게 만들 수 있다. 따라서, 클록 신호(CLK1)의 논리 값들의 교번(Alternation)은 보안 수준을 향상시킬 수 있다.Changing (e.g., switching) the state and power consumption of the logic gates based on the clock signal CLK1 may make subchannel analysis attacks more difficult. Therefore, the alternation of the logical 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 state of the logic gates can be reset. The first time period in which the clock signal CLK1 has a value of logic "0 " may be referred to as an" initialization period ". Meanwhile, at least one of the encryption operation and the decryption operation can be performed while the clock signal CLK1 has the value of logic "1 ". The second time period in which the clock signal CLK1 has a value of logic "1 " may be referred to as an " operation interval ". In response to the alternation of the logical values of the clock signal CLK1, the initialization interval and the computation interval may alternately occur.

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

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

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

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

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

도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 암호화 연산기(2352), 암호화/복호화 컨트롤러(2356), 및 구간 컨트롤러(2357)를 포함할 수 있다.7 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG. In some embodiments, the encryption / decryption circuit 2350 may include an encryption operator 2352, an encryption / decryption controller 2356, and an interval 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 each include configurations and operations of the encryption operator 1352 and the encryption / decryption controller 1356 of 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. For ease of explanation, redundant descriptions of the encryption / decryption circuit 2350, the encryption computer 2352, and the encryption / decryption controller 2356 will be omitted below.

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

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

구간 컨트롤러(2357)는 제어 값(EC)(및/또는, 제어 값(EC)의 반전 값(~EC)) 및 클록 신호(CLK1)에 기초하여, 활성화 신호(ACT1)를 생성할 수 있다. 암호화 연산기(2352)는 클록 신호(CLK1)를 직접 수신하는 대신, 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(2352)는 활성화 신호(ACT1)에 기초하여 암호화 연산을 수행할 수 있다.The section controller 2357 can generate the activation signal ACT1 based on the control value EC (and / or the inversion value EC of the control value EC) and the clock signal CLK1. The encryption calculator 2352 can 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 logic values of the activation signal ACT1 may not be alternated while the encryption operation is not performed. Thus, while the encryption operation is not performed, the outputs from the logic gates included in the encryption operator 2352 may not be changed. Further, while the encryption operation is not performed, the amount of power consumed by the logic gates of the encryption operator 2352 can be kept constant. The activation signal ACT1 will be further described with reference to Figs. 8 and 10. Fig.

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

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

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

예로서, 논리 "0"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공되지 않은 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 도 2의 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖지 않는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다.By way of example, the control value EC of logic "0 " may indicate that the encryption and / or decryption operation is not performed. As an example, when a request (REQ) from an external device is not provided, the control value EC may have a value of logic "0. " By way of 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. " By way of example, when the round value corresponds to zero, the control value EC may have a value of logic "0 ".

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

예로서, 논리 "1"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공된 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖는 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하지 않는 경우(예컨대, 1 이상으로 증가한 경우), 제어 값(EC)이 논리 "1"의 값을 가질 수 있다.By way of example, the control value EC of logic "1 " may indicate that a cryptographic operation and / or a decryption operation is 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 ". As an example, when 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 zero (e.g., increased by one or more), the control value EC may have a value of logic "1 ".

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

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

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

제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 교번 없이 비활성화 값(예컨대, 논리 "0")으로 유지될 수 있다. 위에서 설명된 것과 같이, 암호화 연산기(2352)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)의 비활성화 값을 수신할 수 있고, 논리 회로(LGC)의 논리 게이트들 각각은 활성화 신호(ACT1)의 비활성화 값에 응답하여 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다.The activation signal ACT1 can be maintained at an inactive value (e.g., logic "0") without alternation, while the control value EC has a value of logic "0 ". As described above, the encryption operator 2352 can operate based on the activation signal ACT1 instead of the clock signal CLK1. Therefore, when the control value EC indicates that the encryption operation and / or the decryption operation is not performed, the outputs from the logic gates of the encryption operator 2352 may not be changed. By way of 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 be deactivated May output a first logic value (e.g., logic "0") in response to the value.

암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 비활성화 값에 기초하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 초기화 구간 동안, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다. 나아가, 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.While the encryption and / or decryption operations are not performed, the logic gates of the encryption operator 2352 may operate in a first time interval (e.g., an initialization interval) based on the deactivation value of the activation signal ACT1. During the initialization period, since the outputs from the logic gates of the encryption operator 2352 are not changed, the amount of power consumed by the logic gates can be kept constant. Furthermore, since 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 시간 구간(예컨대, 연산 구간)에서 번갈아가며 동작할 수 있다.On the other hand, while the control value EC has a value of logic "1 ", the activation signal ACT1 may alternately have the inactive value and the activation value in response to the clock signal CLK1. Therefore, when the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed, the logic gates of the cryptographic operation unit 2352 are switched to the alternate (i.e., the inactive value and the alternate activation value) of the activation signal ACT1 (E.g., an initialization interval) and a second time interval (e.g., an arithmetic interval) in response to the response signal.

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

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

도 9a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357a)를 포함할 수 있다. 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)에 대해 논리 곱 연산을 수행할 수 있다.Referring to FIG. 9A, the interval controller 2357 may include a combinational logic gate 2357a. The combinational logic gate 2357a may combine the clock signal CLK1 and the control value EC to generate the activation signal ACT1. By way of example, combinational logic gate 2357a may perform an AND 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, combinational logic gate 2357a has a deactivation value < RTI ID = 0.0 > (e. G. (E.g., logic "0"). On the other hand, if the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed (e.g., has a value of logic "1"), combinational logic gate 2357a (I. E., Alternately having an inactive value and an active value).

도 9b를 참조하면, 구간 컨트롤러(2357)는 트랜지스터들(2357b, 2357c)을 포함할 수 있다. 트랜지스터(2357b)는 제어 값(EC)에 응답하여 클록 신호(CLK1)를 활성화 신호(ACT1)로서 전달할 수 있다. 트랜지스터(2357c)는 제어 값(EC)의 반전 값(~EC)에 응답하여 논리 "0"의 값을 활성화 신호(ACT1)로서 전달할 수 있다.Referring to FIG. 9B, the interval 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 transfer the value of the 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 Figure 9b, when the control value EC indicates that a cryptographic operation and / or a decryption operation is not to be performed (e.g., has a value of logic "0"), the transistor 2357c is deactivated , Logic "0"). On the other hand, if the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed (e. G., Having a value of logic "1"), then the transistor 2357b will respond to the clock signal CLK1 , An inactive value and an active value alternately).

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

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

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

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

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

한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 이는 도 8을 참조하여 설명된 시점들(TP1, TP2) 사이의 시간 구간에 대응할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.On the other hand, while the control value EC has a value of logic "1 ", the activation signal ACT1 may alternately have the inactive value and the 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. For convenience of description, redundant descriptions will be omitted below.

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

도 11a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357d)를 포함할 수 있다. 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 11A, the interval controller 2357 may include a combinational logic gate 2357d. The combinational logic gate 2357d can generate the activation signal ACT1 by combining the clock signal CLK1 and the inverted value EC of the control value EC. By way of example, combinational logic gate 2357d may perform a logic 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, combinational logic gate 2357d is configured to compare the activation value < RTI ID = 0.0 > (e. G. (E.g., logic "1"). On the other hand, if the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed (e.g., has a value of logic "1"), combinational logic gate 2357d (I. E., Alternately having an inactive value and an active value).

도 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 can transfer the 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 a cryptographic operation and / or a decryption operation is not performed (e. G., Having a value of logic & , Logic "1"). On the other hand, if the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed (e. G., Having a value of logic "1"), then transistor 2357f will respond to the clock signal CLK1 , An inactive value and an active value alternately).

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

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

도 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 an interval controller 2358. The encryption / decryption controller 2356 can output the control value DC and / or the inverse value (DC) of the control value DC. The control value DC may be related to performing a decryption operation. By way of 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 the register 1356a of Fig.

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

구간 컨트롤러(2358)는 제어 값(DC)(및/또는, 제어 값(DC)의 반전 값(~DC)) 및 클록 신호(CLK2)에 기초하여, 활성화 신호(ACT2)를 생성할 수 있다. 복호화 연산기(2353)는 클록 신호(CLK2)를 직접 수신하는 대신, 활성화 신호(ACT2)에 기초하여 동작할 수 있다. 예로서, 복호화 연산기(2353)는 활성화 신호(ACT2)에 기초하여 복호화 연산을 수행할 수 있다.The section controller 2358 can generate the activation signal ACT2 based on the control value DC (and / or the inversion value DC of the control value DC) and the clock signal CLK2. The decryption operator 2353 can operate based on the activation signal ACT2 instead of directly receiving the clock signal CLK2. As an example, the decryption operator 2353 can 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 be alternated while the decryption operation is not performed. Similar to those described with reference to FIGS. 8 and 10, when a decryption operation is not performed, the control value DC may indicate that a decryption operation is not performed. While the decryption operation is not performed, the activation signal ACT2 may be held at one of the deactivation value and the activation value. To this end, the interval 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 decryption operator 2353 may operate in a first time period (e.g., an initialization period) in response to the deactivation value of activation signal ACT2. Alternatively, while the decryption operation is not performed, the logic gates of decryption operator 2353 may operate in a second time interval (e.g., an operation interval) in response to the activation value of activation signal ACT2. Therefore, the outputs from the logic gates included in the decryption operator 2353 may not be changed, 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 the control value SC and / or the inverse value (SC) of the control value SC. The control value SC may be related to performing a permutation operation. By way of example, the control value SC may indicate whether a substitution operation is performed or not. As an example, the control value SC may be output from the register 1356a of Fig.

구간 컨트롤러(2359)는 클록 신호(CLK3)를 수신할 수 있다. 구간 컨트롤러(2359)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(SC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2359)는 제어 값(SC)과 함께 또는 제어 값(SC) 대신, 제어 값(SC)의 반전 값(~SC)을 수신할 수 있다.The interval controller 2359 can receive the clock signal CLK3. The section controller 2359 can receive the control value SC from the encryption / decryption controller 2356. [ In some cases, the section controller 2359 may receive the inverse value (~ SC) of the control value SC together with the control value SC 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 can generate the activation signal ACT3 based on the control value SC (and / or the inversion value SC of the control value SC) and the clock signal CLK3. The S-Box 2355 can 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 permutation 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 be alternated while the replacement operation is not performed. Similar to those described with reference to Figs. 8 and 10, when the replacement operation is not performed, the control value SC may indicate that the replacement operation is not performed. While the replacement operation is not performed, the activation signal ACT3 may be maintained at one of the inactivation value and the activation value. To this end, the interval 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 replacement operation is not performed, the logic gates of S-Box 2355 may operate in a first time period (e.g., an initialization period) in response to the deactivation value of activation signal ACT3. Alternatively, while the permutation operation is not performed, the logic gates of S-Box 2355 may operate in a second time period (e.g., a computation period) in response to an activation value of activation signal ACT3. Therefore, the outputs from the logic gates included in the S-Box 2355 may not be changed, and the power consumption due to switching of the output values may be prevented or minimized.

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

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

위에서 설명된 것과 같이, 암호화/복호화 회로(1350)는 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 한편, 초기화 구간에서, 암호화/복호화 회로(1350)의 논리 게이트들의 상태가 리셋될 수 있다. 따라서, 초기화 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 이로 인해, 초기화 구간의 길이가 길어지는 경우, 암호화 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.As described above, the encryption / decryption circuit 1350 may perform an encryption operation and / or a decryption operation in an operation interval. On the other hand, in the initialization period, the state of the logic gates of the encryption / decryption circuit 1350 can be reset. Therefore, encryption and decryption operations may not be performed in the initialization period. As a result, if the length of the initialization period is long, the length of the encryption section may be shortened, and therefore the computing performance of the encryption / decryption circuit 1350 may be deteriorated.

몇몇 실시 예에서, 도 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 FIG. 6 and FIG. When the changed clock signal CCLK1 is compared with the clock signal CLK1, the length of the time interval in which the changed clock signal CCLK1 has the value of logic "1 " is obtained when the clock signal CLK1 has a value of logic & Is longer than the length of the time interval. On the other hand, it can be understood that the length of the time interval in which the changed clock signal CCLK1 has a value of logic "0 " is shorter than the length of the time interval 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 the duty cycle of the changed clock signal CCLK1 may be different from the duty ratio or the duty cycle of the clock signal CLK1. The length of the time period (e.g., the initialization period) in which the changed clock signal CCLK1 has the first logical value (e.g., logic "0") due to the change or the adjustment of the duty ratio, May be shorter than the length of a time period (e.g., an arithmetic section) having two logical values (e.g., logic "1").

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

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

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

도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(3350)는 암호화 연산기(3352), 암호화/복호화 컨트롤러(3356), 및 클록 컨트롤러(3357)를 포함할 수 있다.15 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG. 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 each include configurations and operations of the encryption operator 1352 and the encryption / decryption controller 1356 of FIG. 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. For convenience of explanation, the redundant description of the encryption / decryption circuit 3350, the encryption computer 3352, and the encryption / decryption controller 3356 will be omitted below.

클록 컨트롤러(3357)는 제 1 클록 신호(예컨대, 클록 신호(CLK1))를 수신할 수 있다. 제 1 클록 신호는 도 6 및 도 7을 참조하여 설명된 클록 신호(CLK1)에 대응할 수 있다. 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 시간 구간의 길이와 동일할 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다.Clock controller 3357 may receive a first clock signal (e.g., clock signal CLK1). The first clock signal may correspond to the clock signal CLK1 described with reference to Figs. The length of the time interval in which the clock signal CLK1 has the first logical value (e.g., logic "0") is equal to the length of the time interval in which the clock signal CLK1 has the second logical value Can be the same. Thus, 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 (e.g., a modified clock signal CCLK1) based on the first clock signal. The second clock signal may correspond to the modified clock signal CCLK1 described with reference to Fig. 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 the redesigned clock generator.

변경된 클록 신호(CCLK1)는 암호화 연산기(3352)로 제공될 수 있다. 암호화 연산기(3352)의 논리 게이트들은 클록 신호(CLK1) 대신, 변경된 클록 신호(CCLK1)에 기초하여 동작할 수 있다. 도 14에 나타낸 것과 같이, 변경된 클록 신호(CCLK1)에서, 연산 구간의 길이가 초기화 구간의 길이보다 길 수 있다. 따라서, 암호화 연산기(3352)의 연산 성능이 향상될 수 있다.The modified clock signal CCLK1 may be provided to the encryption calculator 3352. [ The logic gates of the encryption operator 3352 can 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 interval may be longer than the length of the initialization interval. Therefore, the operation performance of the encryption operator 3352 can be improved.

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

몇몇 실시 예에서, 암호화/복호화 회로(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. For example, the interval controller 2357 may receive the clock signal CCLK1 changed from the clock controller 3357 instead of the clock signal CLK1. In this example, the section controller 2357 generates the activation signal ACT1 based on the control value EC (and / or the inverted value EC of the control value EC) and the changed clock signal CCLK1 . The activation signal ACT1 may correspond to the changed clock signal CCLK1 while the cryptographic operation and / or the decryption operation is performed while having a constant value while the encryption operation and the decryption operation are not performed.

도 15는 변경된 클록 신호(CCLK1)가 암호화 연산기(3352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 변경된 클록 신호(CCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 변경된 클록 신호(CCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Fig. 15 shows that the modified clock signal CCLK1 is provided to the encryption calculator 3352. Fig. In some embodiments, the decryption operator 1353 of FIG. 2 may receive the modified clock signal CCLK1 instead of the clock signal CLK2. Alternatively, the decryption operator 1353 can receive the activated clock signal CCLK1 and the activation signal ACT2 generated based on the control value DC in 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 the modified clock signal CCLK1 instead of the clock signal CLK3. Alternatively, the S-Box 1355 can receive the activated clock signal CCLK1 and the activation signal ACT3 generated based on the control value EC in Fig. The embodiments of the present invention are not limited by the above description, and may be variously modified or modified in order to adopt an activation signal or a modified clock signal instead of a general clock signal.

도 16은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 도 17은 도 16의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.16 is a block diagram illustrating an exemplary configuration of the clock controller of FIG. FIG. 17 is a timing diagram illustrating time intervals of an exemplary 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)를 출력할 수 있다.16, the clock controller 3357 may include a buffer 3357a and a combinational logic gate 3357b. The clock controller 3357 may receive the clock signal CLK1. The buffer 3357a can delay the clock signal CLK1. Therefore, the buffer 3357a can output the delayed clock signal dCLK1.

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

다시 도 16을 참조하면, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 수신할 수 있다. 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 16, combinational logic gate 3357b may receive clock signal CLK1 and delayed clock signal dCLK1. Combination logic gate 3357b may generate a modified clock signal CCLK1 based on the clock signal CLK1 and the delayed clock signal dCLK1. By way of example, 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 back to Fig. 17, when both the clock signal CLK1 and the delayed clock signal dCLK1 have a logic "0" value, the modified 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 ". Therefore, the length of the initialization period in which the changed clock signal CCLK1 has the value of logic "0 " may be shorter than the length of the computation interval in which the changed clock signal CCLK1 has the value of logic" 1 ". This modified clock signal CCLK1 can improve the calculation performance.

클록 신호(CLK1)의 지연이 지나치게 긴 경우, 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 오히려 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 길어질 수 있다. 한편, 클록 신호(CLK1)의 지연이 지나치게 짧은 경우, 변경된 클록 신호(CCLK1)의 논리 값이 교번하지 않을 수 있다. 따라서, 버퍼(3357a)는 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 짧도록 클록 신호(CLK1)를 적당하게 지연시킬 수 있다. 몇몇 경우, 버퍼(3357a)의 지연은 프로그램 가능하거나 조절 가능할 수 있다.If the delay of the clock signal CLK1 is excessively long, the length of the initialization period of the changed clock signal CCLK1 may be longer than the length of the calculation period of the changed clock signal CCLK1. On the other hand, when the delay of the clock signal CLK1 is too short, the logical value of the changed clock signal CCLK1 may not be alternated. Therefore, 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 computation 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의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.18 is a block diagram illustrating an exemplary configuration of the clock controller of FIG. 19 is a timing diagram for illustrating time intervals of an exemplary 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 combinational logic gate 3357d. The clock controller 3357 can receive the fast clock signal fCLK1. The frequency divider 3357c can divide the fast clock signal fCLK1. Accordingly, the frequency divider 3357c can output the clock signal CLK1. By way of example, divider 3357c may include logic circuits such as counter registers, shift registers, and the like.

도 19는 빠른 클록 신호(fCLK1) 및 클록 신호(CLK1)를 보여준다. 클록 신호(CLK1)는 암호화/복호화 회로에서 암호화 연산 및/또는 복호화 연산을 수행하는 데에 이용되는 주파수를 가질 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다. 빠른 클록 신호(fCLK1)의 주파수는 클록 신호(CLK1)의 주파수보다 높을 수 있다. 도 18 및 도 19의 실시 예에서, 클록 신호(CLK1)를 생성하기 위해 빠른 클록 신호(fCLK1)를 출력하는 클록 생성기가 제공될 수 있다.19 shows the fast clock signal fCLK1 and the clock signal CLK1. The clock signal CLK1 may have a frequency used to perform cryptographic operation and / or decryption operation in the encryption / decryption circuit. Thus, 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. In the embodiment of Figures 18 and 19, a clock generator may be provided that outputs a fast clock signal fCLK1 to generate a clock signal CLK1.

분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주하여, 분주된 클록 신호(CLK1)를 출력할 수 있다. 분주된 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 상이할 수 있다. 분주된 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 상이할 수 있다.The divider 3357c divides the fast clock signal fCLK1 and can output the divided clock signal CLK1. The length of the time interval in which the divided clock signal CLK1 has a value of logic "0 " may differ from the length of the time interval in which the fast clock signal fCLK1 has a value of logic" 0 ". The length of the time interval in which the divided clock signal CLK1 has a value of logic "1 " may differ from the length of the time interval 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, combinational logic gate 3357d may receive the fast clock signal fCLK1 and the divided clock signal CLK1. Combination logic gate 3357d may generate a modified clock signal CCLK1 based on the fast clock signal fCLK1 and the divided clock signal CLK1. By way of example, combinational logic gate 3357d may perform a logic 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)는 연산 성능이 향상되게 할 수 있다.19, if both the fast clock signal fCLK1 and the divided clock signal CLK1 have a logic "0" value, the modified 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 ". Therefore, the length of the initialization period in which the changed clock signal CCLK1 has the value of logic "0 " may be shorter than the length of the computation interval in which the changed clock signal CCLK1 has the value of logic" 1 ". This modified clock signal CCLK1 can improve the calculation performance.

도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(4350)는 암호화 연산기(4352), 암호화/복호화 컨트롤러(4356), 및 초기화 컨트롤러(4357)를 포함할 수 있다.Fig. 20 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of Fig. 2; Fig. 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 each include the configurations and operations of the encryption operator 1352 and the encryption / decryption controller 1356 of FIG. 20 only shows an exemplary 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. For ease of explanation, redundant descriptions of the encryption / decryption circuit 4350, the encryption computer 4352, and the encryption / decryption controller 4356 will be omitted below.

암호화/복호화 컨트롤러(4356)는 제어 값(IEN) 및/또는 제어 값(IEN)의 반전 값(~IEN)을 출력할 수 있다. 제어 값(IEN)은 암호화 연산의 속도 모드와 관련될 수 있다. 예로서, 제어 값(IEN)은 암호화 연산기(4352)의 암호화 연산이 저속 모드 또는 고속 모드에서 수행되는지 여부를 지시할 수 있다.The encryption / decryption controller 4356 may output the control value IEN and / or the inverse value (IEN) of the control value IEN. The control value IEN may be related to the speed mode of the encryption 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)의 연산 성능이 최대화될 수 있다.6 and 14, when the time interval (for example, the initialization period) in which the clock signal CLK1 has the first logical value (e.g., logic "0") becomes longer, ) May be degraded. When the initialization interval is completely omitted, the operation performance of the encryption operator 4352 can be maximized.

제어 값(IEN)은 초기화 구간의 발생 및 생략에 영향을 줄 수 있다. 예로서, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 초기화 구간이 생략될 수 있고 연산 구간만이 발생할 수 있다. 따라서, 고속 모드에서, 암호화 연산기(4352)의 연산 성능이 최대화될 수 있다. 반면, 제어 값(IEN)이 암호화 연산이 저속 모드에서 수행됨을 지시하는 경우, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.The control value IEN may affect the occurrence and omission of the initialization period. For example, if the control value IEN indicates that the encryption operation is performed in the fast mode, the initialization interval may be omitted and only the computation interval may occur. Therefore, in the fast mode, the operation 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 the low-speed mode, the initialization interval and the computation interval may alternately occur.

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

예로서, 제어 값(IEN)은 도 2의 레지스터(1356a)에 저장될 수 있다. 암호화/복호화 컨트롤러(4356)는 레지스터(1356a)에 저장된 제어 값(IEN)에 기초하여 암호화 연산기(4352)의 암호화 연산을 관리할 수 있고, 초기화 컨트롤러(4357)는 레지스터(1356a)로부터 제어 값(IEN)을 수신할 수 있다.By way of example, the control value IEN may be stored in register 1356a of FIG. 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 receive the control value IEN).

몇몇 경우, 초기화 컨트롤러(4357)는 제어 값(IEN)과 함께 또는 제어 값(IEN) 대신, 제어 값(IEN)의 반전 값(IEN)을 수신할 수 있다. 나아가, 초기화 컨트롤러(4357)는 클록 신호(CLK1)를 수신할 수 있다. 초기화 컨트롤러(4357)는 제어 값(IEN)(및/또는, 제어 값(IEN)의 반전 값(~IEN)) 및 클록 신호(CLK1)에 기초하여, 제어된 클록 신호(TCLK1)를 생성할 수 있다.In some cases, the initialization controller 4357 may receive the inverse value IEN of the control value IEN with or in lieu of the control value IEN. Further, the initialization controller 4357 can receive the clock signal CLK1. The initialization controller 4357 can generate the 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 have.

암호화 연산기(4352)는 클록 신호(CLK1)를 직접 수신하는 대신, 제어된 클록 신호(TCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(4352)는 제어된 클록 신호(TCLK1)에 기초하여 암호화 연산을 수행할 수 있다.The encryption operator 4352 can 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 encryption operation is to be performed in the low speed mode, the controlled clock signal TCLK1 has a first logic value (e.g., logic "0") and a second logic Value (e. G., Logic "1"). Therefore, the initialization interval and the computation interval may alternately occur.

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

몇몇 실시 예에서, 초기화 컨트롤러(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 circuit 4350. The exemplary configuration of FIG. 20 is provided for better understanding, and is not intended to limit the present invention. The configuration of the encryption / decryption circuit 4350 can be variously modified or modified.

몇몇 실시 예에서, 암호화/복호화 회로(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 interval controller 2357 of FIG. As an example, the interval controller 2357 may receive the clock signal TCLK1 controlled by the initialization controller 4357 instead of the clock signal CLK1. In this example, the section controller 2357 generates the activation signal ACT1 based on the control value EC (and / or the inversion value EC of the control value EC) and the controlled clock signal TCLK1 can do. This activation signal ACT1 may have a constant value while the encryption operation and the decryption operation are not performed, and may enable one of the low speed mode and the high speed mode while the encryption operation and / or the decryption operation is 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 FIG. As an example, the clock controller 3357 may receive the clock signal TCLK1 controlled by the initialization controller 4357 instead of the clock signal CLK1. In this example, the controlled clock signal TCLK1 may enable either the low speed mode or the high speed mode. Further, 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 determined by the fact that the controlled clock signal TCLK1 has a second logic value 1 ").

도 20은 제어된 클록 신호(TCLK1)가 암호화 연산기(4352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 제어된 클록 신호(TCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 제어된 클록 신호(TCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.20 shows that the controlled clock signal TCLK1 is provided to the encryption calculator 4352. [ In some embodiments, the decryption operator 1353 of FIG. 2 may receive the clock signal TCLK1 instead of the clock signal CLK2. Alternatively, the decryption operator 1353 can receive the activated 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 clock signal TCLK1 instead of the clock signal CLK3. Alternatively, the S-Box 1355 can receive the activated clock signal TCLK1 and the activation signal ACT3 generated based on the control value EC in Fig. The embodiments of the present invention are not limited by the above description, and may be variously modified or modified in order to employ an activation signal or a controlled clock signal instead of a general clock signal.

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

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

제어 값(IEN)이 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(4350)는 저속 모드에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 저속 모드에서, 제어된 클록 신호(TCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 암호화/복호화 회로(4350)의 논리 게이트들은 초기화 구간에서 리셋될 수 있고, 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다.While the control value IEN has a value of logic "1 ", the encryption / decryption circuit 4350 may perform encryption and / or decryption operations in the 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. Therefore, the logic gates of the encryption / decryption circuit 4350 can be reset in the initialization period, and can perform encryption and / or decryption operations in the computation period.

제어 값(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 the fast mode. In the high speed mode, the value of the controlled clock signal TCLK1 may be held at a value of logic "1 ". Therefore, the encryption / decryption circuit 4350 can perform the encryption operation steadily in the operation period without the initialization section. Therefore, in the fast mode, the computation performance can be maximized.

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

도 22a를 참조하면, 초기화 컨트롤러(4357)는 조합 논리 게이트(4357a)를 포함할 수 있다. 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)을 조합하여 제어된 클록 신호(TCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 22A, initialization controller 4357 may include combinational logic gate 4357a. Combinational logic gate 4357a may combine the clock signal CLK1 and the inverted value IEN of the control value IEN to produce a controlled clock signal TCLK1. By way of example, 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, combinational logic gate 4357a receives a control clock CLK1 corresponding to the clock signal CLK1 when the control value IEN indicates a low speed mode (for example, Signal TCLK1. If, on the other hand, the control value IEN indicates a fast mode (e.g., has a value of logic "0"), combinational logic gate 4357a outputs a controlled clock signal TCLK1 having a value of logic ≪ / RTI >

도 22b를 참조하면, 초기화 컨트롤러(4357)는 트랜지스터들(4357b, 4357c)을 포함할 수 있다. 트랜지스터(4357b)는 제어 값(IEN)의 반전 값(~IEN)에 응답하여 논리 "1"의 값을 제어된 클록 신호(TCLK1)로서 전달할 수 있다. 트랜지스터(4357c)는 제어 값(IEN)에 응답하여 클록 신호(CLK1)를 제어된 클록 신호(TCLK1)로서 전달할 수 있다.Referring to FIG. 22B, initialization controller 4357 may include transistors 4357b and 4357c. The transistor 4357b may transfer a value of logic "1" as the controlled clock signal TCLK1 in response to the inverse value of the control value IEN. Transistor 4357c may transmit clock signal CLK1 as a controlled clock signal TCLK1 in response to 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 outputs a controlled clock signal TCLK1). On the other hand, when the control value IEN indicates a high speed mode (e.g., having a value of logic "0"), the transistor 4357c generates a controlled clock signal TCLK1 having a value of logic & can do.

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

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

도 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 renderer 5357. Referring to Figure 24, in some embodiments, initialization renderer 5357 may include a random value generator 5357a and 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 computer 5352 and the encryption / decryption controller 5356 may each include the configurations and operations of the encryption computer 1352 and the encryption / decryption controller 1356 of FIG. 23 and 24 only illustrate an exemplary 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 explanations regarding the encryption / decryption circuit 5350, the encryption computer 5352, and the encryption / decryption controller 5356 will be omitted below.

클록 신호(CLK1)가 규칙적으로 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 번갈아가며 갖는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점이 예측될 수 있다.If the clock signal CLK1 alternately has a first logical value (e.g., logic "0") and a second logical value (e.g., logic "1") alternately, Can be predicted.

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

따라서, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 공격자는 공격자가 공격하고자 하는 암호화 연산 및/또는 복호화 연산이 시작되는 시점을 조절(Align)하기 어려울 수 있다. 결과적으로, 부 채널 분석 공격이 어려워질 수 있고, 보안 수준이 향상될 수 있다.Accordingly, when the initialization interval occurs randomly or does not occur, the attacker may be difficult to align the starting point of the encryption operation and / or the decryption operation to be attacked by the attacker. As a result, subchannel analysis attacks can be difficult and the level of security can be improved.

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

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

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

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

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

도 23을 참조하면, 암호화 연산기(5352)는 클록 신호(CLK1)를 직접 수신하는 대신, 랜덤화된 클록 신호(RCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(5352)는 랜덤화된 클록 신호(RCLK1)에 기초하여 암호화 연산을 수행할 수 있다.Referring to FIG. 23, instead of directly receiving the clock signal CLK1, the encryption operator 5352 can operate based on the randomized clock signal RCLK1. 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"의 값을 번갈아가며 가질 수 있다. 따라서, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.For 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 value of logic" 0 " Can alternately have a value of logic "1 ". Therefore, the initialization interval and the computation interval may alternately occur.

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

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

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

몇몇 실시 예에서, 암호화/복호화 회로(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 renderer 5357 along with the interval controller 2357 of FIG. As an example, the interval controller 2357 may receive the randomized clock signal RCLK1 from the initializer 5357 instead of the clock signal CLK1. In this example, the section controller 2357 outputs the activation signal ACT1 based on the control value EC (and / or the inverted value EC of the control value EC) and the randomized clock signal RCLK1 Can be generated.

몇몇 실시 예에서, 암호화/복호화 회로(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 renderer 5357 in conjunction with the clock controller 3357 of FIG. In some embodiments, the encryption / decryption circuit 5350 may employ an initialization renderer 5357 with the initialization controller 4357 of FIG. As an example, each of the clock controller 3357 and the initialization controller 4357 may receive the randomized clock signal RCLK1 from the initializer 3357 instead of the clock signal CLK1.

도 23은 랜덤화된 클록 신호(RCLK1)가 암호화 연산기(5352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 랜덤화된 클록 신호(RCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.23 shows that the randomized clock signal RCLK1 is provided to the encryption calculator 5352. [ In some embodiments, the decryption operator 1353 of FIG. 2 may receive the randomized clock signal RCLK1 instead of the clock signal CLK2. Alternatively, the decryption operator 1353 may receive the randomized clock signal RCLK1 and the activation signal ACT2 generated based on 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 a clock signal CLK3. Alternatively, the S-Box 1355 can receive the randomized clock signal RCLK1 and the activation signal ACT3 generated based on the control value EC in Fig. The embodiments of the present invention are not limited by the above description and may be variously modified or modified in order to employ an activation signal or a randomized clock signal instead of a general clock signal.

위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.The above description is a concrete example for realizing the technical idea of the present invention. The technical spirit of the present invention will include embodiments that can be obtained not only from the embodiments described above, but also from a simple design change or an easy modification. In addition, the technical idea of the present invention includes techniques that can be easily modified and implemented 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)

복수의 논리 게이트를 이용하여 암호화(Encryption) 및 복호화(Decryption) 연산들 중 적어도 하나를 수행하도록 구성되는 암호화 연산기; 및
상기 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 상기 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 상기 복수의 논리 게이트 중에서 상기 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 상기 암호화 연산기의 동작을 제어하도록 구성되는 컨트롤러를 포함하되,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 복수의 논리 게이트는 상기 컨트롤러의 제어에 따라 상기 제 1 시간 구간 및 상기 제 2 시간 구간 중 하나에서 동작하도록 구성되는 전자 회로.
An encryption calculator configured to perform at least one of encryption and decryption operations using a plurality of logic gates; And
And a control value associated with the performance of at least one of the encryption and decryption operations and a clock signal, wherein each of the plurality of logic gates outputs a first logic value during a first time interval and the plurality And a controller configured to control the operation of the encryption operator so that the number of logic gates outputting the first logic value and the number of logic gates outputting a second logic value among the logic gates of the first and second logic gates are kept constant,
If the control value indicates that at least one of the encryption and decryption operations is not performed, the plurality of logic gates are operated under one of the first time interval and the second time interval under the control of the controller An electronic circuit comprising:
제 1 항에 있어서,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 경우, 상기 복수의 논리 게이트는 상기 컨트롤러의 제어에 따라 상기 클록 신호에 기초하여 상기 제 1 시간 구간 및 상기 제 2 시간 구간에서 번갈아가며 동작하도록 더 구성되는 전자 회로.
The method according to claim 1,
Wherein said plurality of logic gates are controlled in said first time interval and said second time interval based on said clock signal in accordance with control of said controller if said control value indicates that at least one of said encryption and decryption operations is performed, And further configured to operate alternately.
제 1 항에 있어서,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 복수의 논리 게이트로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트에 의해 소모되는 전력의 양이 일정하게 유지되는 전자 회로.
The method according to claim 1,
If the control value indicates that at least one of the encryption and decryption operations is not performed, the outputs from the plurality of logic gates do not change and the amount of power consumed by the plurality of logic gates remains constant Electronic circuit.
제 1 항에 있어서,
상기 컨트롤러는 외부 장치로부터의 요청에 응답하여 상기 암호화 및 복호화 연산들이 수행되거나 수행되지 않음을 지시하는 상기 제어 값을 저장하도록 구성되는 레지스터를 포함하는 전자 회로.
The method according to claim 1,
Wherein the controller is configured to store the control value indicating that the encryption and decryption operations are performed or not performed in response to a request from an external device.
제 1 항에 있어서,
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행될 데이터를 저장하도록 구성되는 버퍼를 더 포함하는 전자 회로.
The method according to claim 1,
Wherein the at least one of the encryption and decryption operations is configured to store data to be performed.
제 5 항에 있어서,
상기 버퍼에 저장된 상기 데이터가 상기 암호화 및 복호화 연산들 중 적어도 하나의 연산 단위 크기를 갖지 않는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하고,
상기 버퍼에 저장된 상기 데이터가 상기 연산 단위 크기를 갖는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 전자 회로.
6. The method of claim 5,
Wherein the control value indicates that at least one of the encryption and decryption operations is not performed if the data stored in the buffer does not have at least one of the encryption and decryption operations,
Wherein the control value indicates that at least one of the encryption and decryption operations is performed when the data stored in the buffer has the operation unit size.
제 1 항에 있어서,
상기 컨트롤러는 상기 암호화 및 복호화 연산들 중 적어도 하나의 반복 횟수에 관한 라운드(Round) 값을 관리하도록 더 구성되는 전자 회로.
The method according to claim 1,
Wherein the controller is further configured to manage a round value for the number of iterations of at least one of the encryption and decryption operations.
제 7 항에 있어서,
상기 라운드 값이 0에 대응하는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하고,
상기 라운드 값이 0에 대응하지 않는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 전자 회로.
8. The method of claim 7,
If the round value corresponds to zero, the control value indicates that at least one of the encryption and decryption operations is not performed,
Wherein the control value indicates that at least one of the encryption and decryption operations is performed if the round value does not correspond to zero.
복수의 논리 게이트를 포함하는 암호화 연산기;
상기 암호화 연산기에 의한 암호화(Encryption) 및 복호화(Decryption) 연산들 중 적어도 하나의 수행과 관련되는 제어 값을 출력하도록 구성되는 암호화 컨트롤러; 및
상기 제어 값 및 클록 신호에 기초하여 활성화 신호를 생성하도록 구성되는 구간 컨트롤러를 포함하되,
제 1 시간 구간 동안, 상기 복수의 논리 게이트 각각은 상기 활성화 신호의 비활성화 값에 응답하여 제 1 논리 값을 출력하고,
제 2 시간 구간 동안, 상기 복수의 논리 게이트 중에서 상기 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 상기 활성화 신호의 활성화 값에 응답하여 일정하게 유지되는 전자 회로.
An encryption calculator including a plurality of logic gates;
An encryption controller configured to output a control value associated with the execution of at least one of encryption and decryption operations by the encryption operator; And
And an interval controller configured to generate an activation signal based on the control value and the clock signal,
During a first time interval, each of the plurality of logic gates outputs a first logic value in response to an inactivation value of the activation signal,
During the second time interval, 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 are kept constant in response to the activation value of the activation signal Electronic circuit.
제 9 항에 있어서,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 활성화 신호는 상기 비활성화 값을 갖고 상기 복수의 논리 게이트는 상기 제 1 시간 구간에서 동작하도록 구성되는 전자 회로.
10. The method of claim 9,
Wherein the activation signal has the deactivation value and the plurality of logic gates are configured to operate in the first time interval when the control value indicates that at least one of the encryption and decryption operations is not performed.
제 9 항에 있어서,
상기 구간 컨트롤러는 조합 논리 게이트를 포함하고,
상기 조합 논리 게이트는:
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 상기 제어 값 및 상기 클록 신호를 조합하여, 상기 비활성화 값을 갖는 상기 활성화 신호를 생성하고;
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 상기 제어 값 및 상기 클록 신호를 조합하여, 상기 클록 신호에 대응하는 상기 활성화 신호를 생성하도록 구성되는 전자 회로.
10. The method of claim 9,
Wherein the interval controller includes a combinational logic gate,
The combinational logic gate comprises:
Combining the control signal and the clock signal indicating that at least one of the encryption and decryption operations is not performed to generate the activation signal having the deactivation value;
And to combine the clock signal and the control value indicating that at least one of the encryption and decryption operations is performed to generate the activation signal corresponding to the clock signal.
제 9 항에 있어서,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 활성화 신호는 상기 활성화 값을 갖고 상기 복수의 논리 게이트는 상기 제 2 시간 구간에서 동작하도록 구성되는 전자 회로.
10. The method of claim 9,
Wherein the activation signal has the activation value and the plurality of logic gates are configured to operate in the second time interval when the control value indicates that at least one of the encryption and decryption operations is not performed.
제 9 항에 있어서,
상기 구간 컨트롤러는 조합 논리 게이트를 포함하고,
상기 조합 논리 게이트는:
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 상기 제어 값의 반전 값 및 상기 클록 신호를 조합하여, 상기 활성화 값을 갖는 상기 활성화 신호를 생성하고;
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 상기 제어 값의 반전 값 및 상기 클록 신호를 조합하여, 상기 클록 신호에 대응하는 상기 활성화 신호를 생성하도록 구성되는 전자 회로.
10. The method of claim 9,
Wherein the interval controller includes a combinational logic gate,
The combinational logic gate comprises:
Generating the activation signal having the activation value by combining the clock signal and the inversion value of the control value indicating that at least one of the encryption and decryption operations is not performed;
And to generate the activation signal corresponding to the clock signal by combining the clock signal and an inverted value of the control value indicating that at least one of the encryption and decryption operations is performed.
제 9 항에 있어서,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 경우, 상기 활성화 신호는 상기 클록 신호에 응답하여 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 전자 회로.
10. The method of claim 9,
Wherein the activation signal alternates between the deactivation value and the activation value in response to the clock signal when the control value indicates that at least one of the encryption and decryption operations is performed.
제 14 항에 있어서,
상기 제어 값이 상기 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 경우, 상기 복수의 논리 게이트는 상기 활성화 신호의 교번에 응답하여 상기 제 1 시간 구간 및 상기 제 2 시간 구간에서 번갈아가며 동작하도록 구성되는 전자 회로.
15. The method of claim 14,
Wherein when said control value indicates that at least one of said encryption and decryption operations is performed, said plurality of logic gates alternately operate in said first time interval and said second time interval in response to an alternation of said activation signal, ≪ / RTI >
데이터 입력/출력 장치;
상기 데이터 입력/출력 장치를 위해 암호화(Encryption) 및 복호화(Decryption) 연산들을 수행하도록 구성되는 암호화/복호화 회로; 및
상기 암호화 및 복호화 연산들이 수행되는지 여부를 지시하는 제어 값, 및 클록 신호에 기초하여, 활성화 신호를 생성하도록 구성되는 구간 컨트롤러를 포함하되,
상기 제어 값이 상기 암호화 및 복호화 연산들이 수행되지 않음을 지시하는 경우, 비활성화 값 및 활성화 값 중 하나를 갖는 상기 활성화 신호에 응답하여, 상기 암호화/복호화 회로로부터의 출력들이 변경되지 않고 상기 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지되는 전자 장치.
A data input / output device;
An encryption / decryption circuit configured to perform encryption and decryption operations for the data input / output device; And
And an interval controller configured to generate an activation signal based on a control value indicating whether the encryption and decryption operations are performed and a clock signal,
Decryption circuitry, wherein the control value indicates that the encryption and decryption operations are not performed, in response to the activation signal having one of an inactive value and an activation value, the outputs from the encryption / Wherein the amount of power consumed by the circuit is held constant.
제 16 항에 있어서,
상기 제어 값이 상기 암호화 및 복호화 연산들이 수행됨을 지시하는 경우, 상기 활성화 신호는 상기 클록 신호에 응답하여 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 전자 장치.
17. The method of claim 16,
Wherein the activation signal alternates between the deactivation value and the activation value in response to the clock signal when the control value indicates that the encryption and decryption operations are performed.
제 16 항에 있어서,
상기 클록 신호가 제 1 논리 값을 갖는 시간 구간의 길이는 상기 클록 신호가 제 2 논리 값을 갖는 시간 구간의 길이보다 짧은 전자 장치.
17. The method of claim 16,
Wherein a length of a time interval in which the clock signal has a first logic value is shorter than a length of a time interval in which the clock signal has a second logic value.
제 16 항에 있어서,
상기 제어 값은 상기 암호화 및 복호화 연산들이 저속 모드 또는 고속 모드에서 수행되는지 여부를 더 지시하고,
상기 제어 값이 상기 암호화 및 복호화 연산들이 상기 저속 모드에서 수행됨을 지시하는 경우, 상기 클록 신호는 제 1 논리 값 및 제 2 논리 값을 번갈아가며 갖고,
상기 제어 값이 상기 암호화 및 복호화 연산들이 상기 고속 모드에서 수행됨을 지시하는 경우, 상기 클록 신호의 값은 상기 제 2 논리 값으로 유지되는 전자 장치.
17. The method of claim 16,
Wherein the control value further indicates whether the encryption and decryption operations are performed in a low speed mode or a fast mode,
Wherein the clock signal alternates between a first logic value and a second logic value when the control value indicates that the encryption and decryption operations are performed in the low speed mode,
Wherein the value of the clock signal is maintained at the second logic value when the control value indicates that the encryption and decryption operations are performed in the fast mode.
제 16 항에 있어서,
제 1 논리 값 및 제 2 논리 값 중 하나를 랜덤(Random)하게 갖는 랜덤 값, 및 상기 제 1 논리 값 및 상기 제 2 논리 값을 번갈아가며 갖는 일반 클록 신호에 기초하여, 상기 클록 신호를 생성하도록 구성되는 초기화 랜더마이저(Randomizer)를 더 포함하는 전자 장치.
17. The method of claim 16,
To generate the clock signal based on a random value having one of a first logic value and a second logic value randomly and a general clock signal alternating between the first logic value and the second logic value And an initialization renderer (Randomizer) configured.
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 true KR20170134946A (en) 2017-12-07
KR102627585B1 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 (8)

* 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
US6708273B1 (en) * 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
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
KR20140112150A (en) * 2013-03-13 2014-09-23 삼성전자주식회사 Internal voltage generator and contactless IC card including the same
KR20150016084A (en) * 2013-08-02 2015-02-11 주식회사 르코어테크놀러지 Driving Circuit For Light Emitting Diode and Method for Driving the LED

Patent Citations (8)

* 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
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
KR20140112150A (en) * 2013-03-13 2014-09-23 삼성전자주식회사 Internal voltage generator and contactless IC card including the same
KR20150016084A (en) * 2013-08-02 2015-02-11 주식회사 르코어테크놀러지 Driving Circuit For Light Emitting Diode and Method for Driving the LED

Also Published As

Publication number Publication date
KR102627585B1 (en) 2024-01-25

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
JP2022541057A (en) Cryptographic architecture for cryptographic permutation
US9397834B2 (en) Scrambling an address and encrypting write data for storing in a storage device
CN107437988B (en) Electronic circuit for preventing side channel analysis attack and electronic device comprising same
KR102628010B1 (en) Encryption circuit for virtual encryption operation
US20150089245A1 (en) Data storage in persistent memory
JP6109441B1 (en) Dynamic encryption key for use with XTS encryption systems that employ round-reduction encryption
US11115181B2 (en) Memory device, host device, and memory system
US11863670B2 (en) Efficient side-channel-attack-resistant memory encryptor based on key update
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
GB2532836A (en) Address-dependent key generation with substitution-permutation network
US20190116022A1 (en) Encryption device and operation method thereof
Liu et al. An energy-efficient encryption mechanism for NVM-based main memory in mobile systems
US20130198528A1 (en) Modifying a Length of an Element to Form an Encryption Key
KR20180059217A (en) Apparatus and method for secure processing of memory data
KR102627585B1 (en) Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same
JP2023542936A (en) Metadata tweak for channel encryption differentiation
Ege et al. Memory encryption for smart cards
JP6473874B2 (en) Memory device, host device, and memory system
JP6516610B2 (en) Memory device, host device, and memory system
EP4320511A1 (en) Secure pseudo-random number generator (prng) reseeding

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