KR102627585B1 - Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same - Google Patents
Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same Download PDFInfo
- Publication number
- KR102627585B1 KR102627585B1 KR1020160098292A KR20160098292A KR102627585B1 KR 102627585 B1 KR102627585 B1 KR 102627585B1 KR 1020160098292 A KR1020160098292 A KR 1020160098292A KR 20160098292 A KR20160098292 A KR 20160098292A KR 102627585 B1 KR102627585 B1 KR 102627585B1
- Authority
- KR
- South Korea
- Prior art keywords
- encryption
- value
- decryption
- clock signal
- logic
- Prior art date
Links
- 238000004458 analytical method Methods 0.000 title description 11
- 230000004913 activation Effects 0.000 claims description 106
- 230000004044 response Effects 0.000 claims description 36
- 230000009849 deactivation Effects 0.000 claims description 28
- 230000008859 change Effects 0.000 claims description 16
- 238000000034 method Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 52
- 230000015654 memory Effects 0.000 description 44
- 238000004364 calculation method Methods 0.000 description 23
- 238000006467 substitution reaction Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 11
- 102100031102 C-C motif chemokine 4 Human genes 0.000 description 10
- 101000777470 Mus musculus C-C motif chemokine 4 Proteins 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 10
- 230000003936 working memory Effects 0.000 description 9
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 5
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000002779 inactivation Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/12—Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
본 발명의 전자 회로는 암호화 연산기 및 컨트롤러를 포함한다. 암호화 연산기는 복수의 논리 게이트를 이용하여 암호화/복호화 연산을 수행한다. 컨트롤러는 암호화/복호화 연산과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어한다. 제어 값이 암호화/복호화 연산이 수행되지 않음을 지시하는 경우, 복수의 논리 게이트는 제 1 시간 구간 및 제 2 시간 구간 중 하나에서 동작한다. 본 발명에 따르면, 암호화/복호화 회로에 의해 소모되는 전력의 양이 감소하고, 암호화/복호화 회로의 연산 성능 및 보안 수준이 향상된다.The electronic circuit of the present invention includes a cryptographic operator and a controller. The encryption operator performs encryption/decryption operations using a plurality of logic gates. The controller is configured to output a logic value such that each of the plurality of logic gates outputs a first logic value during a first time period and outputs a first logic value during a second time period, based on the control value related to the encryption/decryption operation and the clock signal. The operation of the encryption operator is controlled so that the number of gates and the number of logic gates outputting the second logic value are maintained constant. When the control value indicates that the encryption/decryption operation is not performed, the plurality of logic gates operate in one of the first time period and the second time period. According to the present invention, the amount of power consumed by the encryption/decryption circuit is reduced, and the computational performance and security level of the encryption/decryption circuit are improved.
Description
본 발명은 전자 회로 및 전자 장치에 관한 것으로, 좀 더 구체적으로는 암호화(Encryption)/복호화(Decryption) 연산을 수행하는 전자 회로 및 전자 장치의 구성들 및 동작들에 관한 것이다.The present invention relates to electronic circuits and electronic devices, and more specifically, to configurations and operations of electronic circuits and electronic devices that perform encryption/decryption operations.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 하나 이상의 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 전자 회로의 동작은 전자적인 형태의 데이터가 전자 회로로 입력되거나 전자 회로로부터 출력됨에 따라 수행된다.Recently, various types of electronic devices have been used. An electronic device performs its unique function according to the operations of one or more electronic circuits included in it. The operation of an electronic circuit is performed as data in electronic form is input to or output from the electronic circuit.
입력 또는 출력되는 데이터는 전자 장치 외부의 개체(Entity)에 노출될 수 있다. 예로서, 전자 장치에 대한 공격자(예컨대, 해커(Hacker))는 전자 장치로 입력되는 데이터를 조작(Manipulate)하여, 전자 장치의 제어 권한을 획득할 수 있다. 예로서, 공격자는 전자 장치로부터 출력되는 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 이러한 예들에서, 전자 장치 및 전자 회로의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.Input or output data may be exposed to entities external to the electronic device. For example, an attacker (eg, a hacker) to an electronic device may gain control of the electronic device by manipulating data input to the electronic device. For example, an attacker can manipulate data output from an electronic device to arbitrarily change the data or damage the security properties of the data. In these examples, the security levels and reliability of electronic devices and electronic circuits may deteriorate significantly.
이러한 이유에 기인하여, 전자 장치는 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화/복호화 연산은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, electronic devices may include encryption/decryption circuits to encrypt input or output data and decrypt the encrypted data. The encryption/decryption circuit can encrypt/decrypt data according to an encryption/decryption algorithm using a key. If the key is unknown, it may be difficult for an attacker to determine the key based solely on the input/output data, and therefore, it may also be difficult for an attacker to determine the original version of the encrypted data. Therefore, encryption/decryption operations can improve the security level and reliability of electronic devices and electronic circuits.
그러나, 몇몇 암호화/복호화 회로는 여전히 공격자에 의해 공격될 수 있다. 공격자는, 입력 또는 출력되는 데이터를 직접 조작하는 대신, "부 채널 분석 공격(Side-channel Analysis Attack)"을 행할(Conduct) 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.However, some encryption/decryption circuits can still be exploited by attackers. Instead of directly manipulating input or output data, an attacker can conduct a "Side-channel Analysis Attack." In a side channel analysis attack, an attacker can collect side information such as the amount of power consumed by the encryption/decryption circuit, the waveform of electromagnetic waves generated by the encryption/decryption circuit, etc. An attacker can attack the encryption/decryption circuit to find out the key used in the encryption/decryption circuit based on the collected information.
본 발명의 실시 예들은 부 채널 분석 공격을 방지하기 위한 암호화 연산 및/또는 복호화 연산을 수행하는 전자 회로 및 전자 장치의 구성들 및 동작들을 제공할 수 있다. 본 발명의 실시 예들에 따른 전자 회로 및 전자 장치는 암호화 연산 및/또는 복호화 연산을 수행하기 위해 필요한 클록 신호를 적응적으로(Adaptive) 이용할 수 있다.Embodiments of the present invention may provide configurations and operations of electronic circuits and electronic devices that perform encryption operations and/or decryption operations to prevent side channel analysis attacks. Electronic circuits and electronic devices according to embodiments of the present invention can adaptively use clock signals necessary to perform encryption operations and/or decryption operations.
본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 이용하여 암호화 및 복호화 연산들 중 적어도 하나를 수행할 수 있다. 컨트롤러는 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어할 수 있다. 제어 값이 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 복수의 논리 게이트는 컨트롤러의 제어에 따라 제 1 시간 구간 및 제 2 시간 구간 중 하나에서 동작할 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption calculator and a controller. The encryption operator may perform at least one of encryption and decryption operations using a plurality of logic gates. Based on a control value related to the performance of at least one of the encryption and decryption operations and a clock signal, the controller causes each of the plurality of logic gates to output a first logic value during a first time period and the plurality of logic gates during a second time period. The operation of the encryption operator can be controlled so that the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the logic gates are maintained constant. When the control value indicates that at least one of the encryption and decryption operations is not performed, the plurality of logic gates may operate in one of the first time period and the second time period under the control of the controller.
본 발명의 실시 예에 따른 전자 회로는 암호화 연산기, 암호화 컨트롤러, 및 구간 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 포함할 수 있다. 암호화 컨트롤러는 암호화 연산기에 의한 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값을 출력할 수 있다. 구간 컨트롤러는 제어 값 및 클록 신호에 기초하여 활성화 신호를 생성할 수 있다. 제 1 시간 구간 동안, 복수의 논리 게이트 각각은 활성화 신호의 비활성화 값에 응답하여 제 1 논리 값을 출력할 수 있다. 제 2 시간 구간 동안, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 활성화 신호의 활성화 값에 응답하여 일정하게 유지될 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption operator, an encryption controller, and a section controller. The cryptographic operator may include a plurality of logic gates. The encryption controller may output a control value related to the performance of at least one of encryption and decryption operations by the encryption operator. The section controller may generate an activation signal based on the control value and clock signal. During the first time period, each of the plurality of logic gates may output a first logic value in response to the deactivation value of the activation signal. During the second time period, the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the plurality of logic gates may be maintained constant in response to the activation value of the activation signal.
본 발명의 실시 예에 따른 전자 장치는 데이터 입력/출력 장치, 암호화/복호화 회로, 및 구간 컨트롤러를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 구간 컨트롤러는 암호화 및 복호화 연산들이 수행되는지 여부를 지시하는 제어 값, 및 클록 신호에 기초하여, 활성화 신호를 생성할 수 있다. 제어 값이 암호화 및 복호화 연산들이 수행되지 않음을 지시하는 경우, 비활성화 값 및 활성화 값 중 하나를 갖는 활성화 신호에 응답하여, 암호화/복호화 회로로부터의 출력들이 변경되지 않고 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다.An electronic device according to an embodiment of the present invention may include a data input/output device, an encryption/decryption circuit, and a section controller. An encryption/decryption circuit may perform encryption and decryption operations for a data input/output device. The section controller may generate an activation signal based on a clock signal and a control value indicating whether encryption and decryption operations are performed. When the control value indicates that encryption and decryption operations are not to be performed, in response to an enable signal having one of the following values: disable and enable, the outputs from the encryption/decryption circuit are left unchanged and the amount consumed by the encryption/decryption circuit is The amount of power can be kept constant.
본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 클록 신호에 기초하여 동작하는 복수의 논리 게이트를 포함할 수 있다. 컨트롤러는, 클록 신호의 제 1 논리 값에 응답하여 복수의 논리 게이트로부터의 출력 값들이 변경되지 않고 클록 신호의 제 2 논리 값에 응답하여 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어할 수 있다. 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이보다 짧을 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption calculator and a controller. The cryptographic operator may include a plurality of logic gates that operate based on a clock signal. The controller includes logic gates that output a first logic value among the plurality of logic gates in response to the second logic value of the clock signal without changing output values from the plurality of logic gates in response to the first logic value of the clock signal. The operation of the encryption operator can be controlled so that the number of logic gates outputting the second logic value is maintained constant. The length of the first time period in which the clock signal has the first logic value may be shorter than the length of the second time period in which the clock signal has the second logic value.
본 발명의 실시 예에 따른 전자 회로는 클록 컨트롤러 및 암호화 연산기를 포함할 수 있다. 클록 컨트롤러는 제 1 클록 신호에 기초하여 제 2 클록 신호를 생성할 수 있다. 암호화 연산기는 제 2 클록 신호에 기초하여 동작하는 복수의 논리 게이트를 포함할 수 있다. 제 1 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 제 1 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이와 동일할 수 있다. 제 2 클록 신호가 제 1 논리 값을 갖는 제 3 시간 구간의 길이는 제 2 클록 신호가 제 2 논리 값을 갖는 제 4 시간 구간의 길이보다 짧을 수 있다. 제 2 클록 신호의 제 1 논리 값에 응답하여, 복수의 논리 게이트로부터의 출력 값들이 변경되지 않을 수 있다. 제 2 클록 신호의 제 2 논리 값에 응답하여, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있다.An electronic circuit according to an embodiment of the present invention may include a clock controller and an encryption calculator. The clock controller may generate a second clock signal based on the first clock signal. The cryptographic operator may include a plurality of logic gates that operate based on the second clock signal. The length of the first time period in which the first clock signal has the first logic value may be the same as the length of the second time period in which the first clock signal has the second logic value. The length of the third time period in which the second clock signal has the first logic value may be shorter than the length of the fourth time period in which the second clock signal has the second logic value. In response to the first logic value of the second clock signal, output values from the plurality of logic gates may not change. In response to the second logic value of the second clock signal, the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the plurality of logic gates may be maintained constant.
본 발명의 실시 예에 따른 전자 장치는 데이터 입력/출력 장치, 클록 컨트롤러, 및 암호화/복호화 회로를 포함할 수 있다. 클록 컨트롤러는 클록 신호를 생성할 수 있다. 암호화/복호화 회로는 클록 신호에 기초하여, 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이보다 짧을 수 있다. 클록 신호의 제 1 논리 값에 응답하여, 암호화/복호화 회로로부터의 출력 값들이 변경되지 않을 수 있다. 클록 신호의 제 2 논리 값에 응답하여, 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다.An electronic device according to an embodiment of the present invention may include a data input/output device, a clock controller, and an encryption/decryption circuit. A clock controller can generate a clock signal. An encryption/decryption circuit may perform encryption and decryption operations for a data input/output device based on a clock signal. The length of the first time period in which the clock signal has the first logic value may be shorter than the length of the second time period in which the clock signal has the second logic value. In response to the first logic value of the clock signal, output values from the encryption/decryption circuit may not change. In response to the second logic value of the clock signal, the amount of power consumed by the encryption/decryption circuit may be kept constant.
본 발명의 실시 예들에 따르면, 암호화/복호화 회로에 의해 소모되는 전력의 양이 감소할 수 있다. 나아가, 암호화/복호화 회로의 연산 성능 및 보안 수준이 향상될 수 있다.According to embodiments of the present invention, the amount of power consumed by the encryption/decryption circuit can be reduced. Furthermore, the computational performance and security level of the encryption/decryption circuit can be improved.
도 1은 본 발명의 실시 예들에 따른 암호화/복호화 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다.
도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.
도 4는 도 2의 암호화/복호화 회로에 포함되는 예시적인 논리 회로를 보여주는 블록도이다.
도 5는 도 4의 논리 회로의 동작을 설명하기 위한 표이다.
도 6은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 8은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 9a 및 도 9b는 도 8의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 10은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 11a 및 도 11b는 도 10의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 12는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 13은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 14는 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 16은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 17은 도 16의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 18은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 19는 도 18의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 21은 도 20의 초기화 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 22a 및 도 22b는 도 21의 타이밍도와 관련하여 도 20의 초기화 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 23은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 24는 도 23의 초기화 랜더마이저(Randomizer)의 예시적인 구성을 보여주는 블록도이다.1 is a block diagram showing a computing device including electronic devices employing encryption/decryption circuits according to embodiments of the present invention.
FIG. 2 is a block diagram showing an exemplary configuration of the encryption/decryption circuit of FIG. 1.
FIG. 3 is a flow diagram illustrating an example encryption operation performed in the encryption/decryption circuit of FIG. 2.
FIG. 4 is a block diagram showing an example logic circuit included in the encryption/decryption circuit of FIG. 2.
FIG. 5 is a table for explaining the operation of the logic circuit of FIG. 4.
FIG. 6 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.
FIG. 7 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 8 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.
FIGS. 9A and 9B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 8.
FIG. 10 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.
FIGS. 11A and 11B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 10.
FIG. 12 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 13 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 14 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.
FIG. 15 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 16 is a block diagram showing an exemplary configuration of the clock controller of FIG. 15.
FIG. 17 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 16.
FIG. 18 is a block diagram showing an example configuration of the clock controller of FIG. 15.
FIG. 19 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 18.
FIG. 20 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 21 is a timing diagram illustrating time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the initialization controller of FIG. 20.
FIGS. 22A and 22B are block diagrams showing example configurations of the initialization controller of FIG. 20 in relation to the timing diagram of FIG. 21.
FIG. 23 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2.
FIG. 24 is a block diagram showing an example configuration of the initialization randomizer of FIG. 23.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.Below, embodiments of the present invention are described clearly and in detail with reference to the accompanying drawings so that those skilled in the art (hereinafter, skilled in the art) can easily practice the present invention. It will be explained.
도 1은 본 발명의 실시 예들에 따른 암호화(Encryption)/복호화(Decryption) 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 몇몇 실시 예에서, 컴퓨팅 장치(1000)는 프로세서 장치(1100), 워킹 메모리(Working Memory, 1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(User Interface, 1500), 기타 장치(들)(1600), 및 버스(Bus, 1700)를 포함할 수 있다.1 is a block diagram showing a computing device including electronic devices employing encryption/decryption circuits according to embodiments of the present invention. In some embodiments, the
예로서, 컴퓨팅 장치(1000)는 데스크탑(Desktop) 컴퓨터, 랩탑(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 워크스테이션(Workstation), 서버(Server), 디지털 텔레비전, 비디오 게임기(Video Game Console), 스마트 폰, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치들 중 하나일 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다.For example, the
프로세서 장치(1100)는 컴퓨팅 장치(1000)의 전반적인 동작들을 제어할 수 있다. 프로세서 장치(1100)는 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리하도록 구성될 수 있다. 이를 위해, 프로세서 장치(1100)는 하나 이상의 프로세서 코어들(1110)을 포함하는 전용 논리 회로(Special-purpose Logic Circuit; 예컨대, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)로 구현될 수 있다. 예로서, 프로세서 장치(1100)는 범용(General-purpose) 프로세서, 전용 프로세서, 및/또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다.The
예로서, 프로세서 장치(1100)는 프로세서 코어들(1110)을 이용하여, 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있다. 하나 이상의 캐시들(1130)은 명령어 집합의 실행에 의해 생성되는 데이터 또는 명령어 집합을 실행하기 위해 이용될 데이터를 일시적으로 저장할 수 있다.For example, the
워킹 메모리(1200)는 컴퓨팅 장치(1000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 예로서, 워킹 메모리(1200)는 프로세서 장치(1100)에 의해 처리된 또는 처리될 데이터를 하나 이상의 메모리들(1210)에 저장할 수 있다. 예로서, 메모리들(1210)은 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리를 포함할 수 있다. 메모리 컨트롤러(1230)는 메모리들(1210)이 데이터를 저장하거나 저장된 데이터를 출력하도록 메모리들(1210)을 제어할 수 있다.The working
저장 장치(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
통신 블록(1400)은 프로세서 장치(1100)의 제어에 따라, 컴퓨팅 장치(1000)의 외부 장치/시스템과 통신할 수 있다. 예로서, 통신 블록(1400)은 이더넷(Ethernet), TCP/IP(Transfer Control Protocol/Internet Protocol), USB(Universal Serial Bus), Firewire 등과 같은 다양한 유선 통신 규약 중 적어도 하나, 및/또는 LTE(Long Term Evolution), WiMax(Worldwide Interoperability for Microwave Access), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나에 따라 컴퓨팅 장치(1000)의 외부 장치/시스템과 통신할 수 있다.The
유저 인터페이스(1500)는 프로세서 장치(1100)의 제어에 따라, 사용자와 컴퓨팅 장치(1000) 사이의 통신을 중재할 수 있다. 예로서, 유저 인터페이스(1500)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등으로부터의 입력을 처리할 수 있다. 나아가, 유저 인터페이스(1500)는 디스플레이 장치, 스피커, 모터 등으로의 출력을 처리할 수 있다.The
그 밖에도, 컴퓨팅 장치(1000)는 기타 장치(1600)를 더 포함할 수 있다. 예로서, 기타 장치(1600)는 이미지 센서, 그래픽 처리 유닛(Graphic Processing Unit), 사운드 처리기, GPS(Global Positioning System) 장치 등 다양한 주변 장치를 포함할 수 있다.In addition, the
프로세서 장치(1100), 워킹 메모리(1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 기타 장치(1600) 각각은 칩 레벨 및/또는 패키지 레벨의 장치로 구현될 수 있고, 컴퓨팅 장치(1100)에 장착될 수 있다. 또는, 프로세서 장치(1100), 워킹 메모리(1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 기타 장치(1600) 각각은 독립적인 전자 장치로 구현될 수 있고, 컴퓨팅 장치(1100) 내에 조립될 수 있다. 장착된 또는 조립된 구성 요소(Component)들은 버스(1700)를 통해 서로 연결될 수 있다.Each of the
버스(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) 등과 같은 다양한 통신 규약 중 하나 이상을 포함할 수 있다.
컴퓨팅 장치(1000)의 동작에 따라, 데이터가 컴퓨팅 장치(1000)의 구성 요소들로 입력되거나 컴퓨팅 장치(1000)의 구성 요소들로부터 출력될 수 있다. 컴퓨팅 장치(1000)의 구성 요소들 각각은 데이터 입력/출력 장치로 언급될 수 있다.Depending on the operation of the
입력 또는 출력되는 데이터는 컴퓨팅 장치(1000) 외부의 개체(Entity)에 노출될 수 있다. 예로서, 컴퓨팅 장치(1000)에 대한 공격자(예컨대, 해커(Hacker))는 프로세서 장치(1100)로 입력되는 데이터를 조작(Manipulate)하여, 프로세서 장치(1100) 및 컴퓨팅 장치(1000)의 제어 권한을 획득할 수 있다. 예로서, 공격자는 프로세서 장치(1100)의 제어 권한을 획득하여, 컴퓨팅 장치(1000)의 동작을 중단시키거나 컴퓨팅 장치(1000)를 악의적으로 동작시킬 수 있다.Input or output data may be exposed to entities external to the
예로서, 공격자는 워킹 메모리(1200) 및/또는 저장 장치(1300)에 저장된 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 예로서, 공격자는 워킹 메모리(1200)에 저장된 데이터에 악성 코드(Malicious Code)를 삽입하거나, 저장 장치(1300)에 저장된 데이터의 접근 암호 또는 DRM(Digital Right Management) 속성을 깨뜨릴(Crack) 수 있다. 이러한 예들에서, 컴퓨팅 장치(1000) 및 그것의 구성 요소들의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.For example, an attacker may manipulate data stored in the working
이러한 이유에 기인하여, 컴퓨팅 장치(1000)의 구성 요소들은 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 암호화 및 복호화 연산들에서, 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화 및 복호화 연산들은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, components of the
예로서, 프로세서 장치(1100)는 암호화/복호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로부터 출력되는 데이터를 암호화할 수 있다. 나아가, 프로세서 장치(1100)는 암호화/복호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로 입력될 데이터를 복호화할 수 있다. 암호화 및 복호화 연산들에 따라 변형되는 데이터를 이해하고 분석하는 것은 공격자에게 어려울 수 있다. 따라서, 프로세서 장치(1100)의 제어 권한이 보호될 수 있다.As an example, the
예로서, 워킹 메모리(1200)는 암호화/복호화 회로(1250)를 이용하여, 메모리들(1210)에 저장될 데이터를 암호화할 수 있다. 나아가, 워킹 메모리(1200)는 암호화/복호화 회로(1250)를 이용하여, 메모리들(1210)로부터 출력되는 데이터를 복호화할 수 있다. 유사하게, 저장 장치(1300)는 암호화/복호화 회로(1350)를 이용하여, 불휘발성 메모리들(1310)에 저장될 데이터를 암호화할 수 있다. 나아가, 저장 장치(1300)는 암호화/복호화 회로(1350)를 이용하여, 불휘발성 메모리들(1310)로부터 출력되는 데이터를 복호화할 수 있다. 따라서, 메모리들(1210) 및/또는 불휘발성 메모리들(1310)에 저장된 데이터를 임의로 변경하거나 손상시키는 것은 공격자에게 어려울 수 있고, 저장된 데이터가 안전하게 보호될 수 있다.As an example, the working
도 1은 암호화/복호화 회로들(1150, 1250, 1350)이 데이터 입력/출력 장치들(1100, 1200, 1300)에 포함되는 것을 보여준다. 그러나, 몇몇 경우, 암호화/복호화 회로들(1150, 1250, 1350)은 데이터 입력/출력 장치들(1100, 1200, 1300)과 별개로 구현될 수 있다. 나아가, 데이터 입력/출력 장치들(1100, 1200, 1300) 외의 몇몇 장치들(예컨대, 1400, 1500, 1600 등) 및 버스(1700) 각각 역시 암호화/복호화 회로를 채용할 수 있다. 암호화/복호화 회로는 데이터가 입력 또는 출력되는 경로 상이라면 어디든 채용될 수 있다. 도 1은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.Figure 1 shows that encryption/
이하, 암호화/복호화 회로(1350)의 예시적인 구성들 및 동작들이 도 2 내지 도 24를 참조하여 설명될 것이다. 그러나, 암호화/복호화 회로들(1150, 1250) 및 그 외 도시되지 않은 암호화/복호화 회로 역시 이하의 실시 예들에 따라 구성되고 동작할 수 있다. 이하의 실시 예들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.Hereinafter, example configurations and operations of the encryption/
도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다. 도 1 및 도 2에 나타낸 것과 같이, 암호화/복호화 회로(1350)는 저장 장치(1300)에서 불휘발성 메모리들(1310) 및 메모리 컨트롤러(1330)와 연결될 수 있다. 이 명세서에서 불휘발성 메모리들(1310)을 위한 암호화/복호화 회로(1350)가 설명되지만, 암호화/복호화 회로(1350)는 저장 장치(1300)에 포함되는 휘발성 메모리(예컨대, 버퍼 메모리, 캐시 메모리 등)에도 적용될 수 있다.FIG. 2 is a block diagram showing an exemplary configuration of the encryption/decryption circuit of FIG. 1. As shown in FIGS. 1 and 2 , the encryption/
몇몇 실시 예에서, 암호화/복호화 회로(1350)는 버퍼(1351), 암호화 연산기(1352), 복호화 연산기(1353), 키 관리기(1354), S-Box(Substitution-Box, 1355), 및 암호화/복호화 컨트롤러(1356)를 포함할 수 있다. 다만, 몇몇 다른 실시 예에서, 암호화/복호화 회로(1350)는 도 2에 나타낸 구성 요소들 중 몇몇을 포함하지 않거나, 도 2에 나타내지 않은 구성 요소를 더 포함할 수 있다.In some embodiments, the encryption/
버퍼(1351)는 불휘발성 메모리들(1310) 및 메모리 컨트롤러(1330)로부터 제공되는 데이터를 일시적으로 저장(예컨대, 버퍼링)할 수 있다. 버퍼(1351)에 버퍼링된 데이터는 암호화 연산기(1352) 또는 복호화 연산기(1353)로 제공될 수 있다. 즉, 버퍼(1351)는 암호화 연산 및/또는 복호화 연산이 수행될 데이터를 저장할 수 있다.The
암호화 연산기(1352)는 불휘발성 메모리들(1310)에 저장될 데이터에 대해 암호화 연산을 수행할 수 있다. 따라서, 불휘발성 메모리들(1310)에 저장되는 데이터의 보안 수준이 향상될 수 있다. 복호화 연산기(1353)는 불휘발성 메모리들(1310)로부터 읽힌 데이터에 대해 복호화 연산을 수행할 수 있다. 따라서, 메모리 컨트롤러(1330)는 복호화된 데이터를 수신할 수 있다.The
몇몇 암호화 및 복호화 연산은 키(Key)를 이용하여 수행될 수 있다. 예로서, 몇몇 암호화 및 복호화 연산은 주어진 데이터 및 주어진 키에 대해 조합(Combinational) 논리 연산(예컨대, 논리 합(Or) 연산, 논리 곱(And) 연산, 배타적 논리 합(Exclusive Or) 연산 등)을 수행하는 것을 포함할 수 있다. 키는 외부의 개체에 알려지지 않을 수 있고, 암호화/복호화 회로(1350)에서 고유하게 선택될 수 있다. 따라서, 암호화 및 복호화 연산들은 데이터를 공격자의 공격으로부터 보호할 수 있다.Some encryption and decryption operations can be performed using keys. As an example, some encryption and decryption operations involve combinational logical operations (e.g., Or, And, Exclusive Or, etc.) for given data and a given key. It may include performing The key may not be known to an external entity and may be uniquely selected in the encryption/
키 관리기(1354)는 암호화 및 복호화 연산들에 이용되는 키를 관리할 수 있다. 키 관리기(1354)는 키를 저장하기 위한 메모리를 포함하거나, 다른 메모리에 저장된 키로 액세스할 수 있다.
도 3을 참조하여 설명될 것과 같이, 암호화 연산(및/또는 복호화 연산)은 한 번만 수행되는 것이 아니라, 보안 수준을 높이기 위해 여러 번 반복될 수 있다. 암호화 연산(및/또는 복호화 연산)을 한 번 수행하는 것은 하나의 "라운드(Round)"로 언급될 수 있다. 암호화 연산들(및/또는 복호화 연산들)의 반복 횟수는 "라운드 값"에 기초하여 관리될 수 있다. 예로서, 키는 각 라운드마다 상이하게 선택될 수 있다. 예로서, 첫 번째 라운드를 위해 선택되는 키는 두 번째 라운드를 위해 선택되는 키와 상이할 수 있다.As will be explained with reference to Figure 3, the encryption operation (and/or decryption operation) is not performed only once, but may be repeated multiple times to increase the level of security. Performing an encryption operation (and/or decryption operation) once may be referred to as one “Round.” The number of repetitions of encryption operations (and/or decryption operations) may be managed based on a “round value”. As an example, the key may be selected differently for each round. As an example, the key selected for the first round may be different from the key selected for the second round.
키 관리기(1354)는 복수의 키를 관리할 수 있다. 키 관리기(1354)는 복수의 키 중에서, 각 라운드에서 선택될 키를 스케줄링할 수 있다. 키 관리기(1354)는 암호화 연산기(1352) 및/또는 복호화 연산기(1353)의 요청들에 응답하여, 스케줄링된 키를 암호화 연산기(1352) 및/또는 복호화 연산기(1353)로 제공할 수 있다.
S-Box(1355)는 치환(Substitution) 연산을 수행할 수 있다. 치환 연산에서, S-Box(1355)는 m-비트의 입력을 n-비트의 출력으로 변환(Convert)할 수 있다(m, n 각각은 1 이상의 정수이고, m은 n과 동일하거나 상이할 수 있음). 예로서, S-Box(1355)의 치환 연산은 m-비트의 입력과 n-비트의 출력 사이의 대응 관계를 포함하는 룩-업 테이블(Look-up Table)을 기반으로 수행될 수 있다.S-
예로서, 암호화 연산기(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
몇몇 경우, S-Box(1355)는 키 관리기(1354)에 의해 선택된 키에 대해서도 치환 연산을 수행할 수 있다. 데이터 및 키 모두가 변경되는 경우, 암호화 및 복호화 연산들은 데이터를 더 안전하게 보호할 수 있다.In some cases, S-
암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355) 각각은 복수의 논리 게이트를 포함할 수 있다. 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)는 논리 게이트들을 이용하여 암호화 연산, 복호화 연산, 및 치환 연산을 각각 수행할 수 있다.Each of the
암호화 연산기(1352)의 논리 게이트들은 암호화 연산을 수행하기 위해 클록 신호(CLK1)에 기초하여 동작할 수 있다. 복호화 연산기(1353)의 논리 게이트들은 복호화 연산을 수행하기 위해 클록 신호(CLK2)에 기초하여 동작할 수 있다. S-Box(1355)의 논리 게이트들은 치환 연산을 수행하기 위해 클록 신호(CLK3)에 기초하여 동작할 수 있다. 클록 신호들(CLK1, CLK2, CLK3) 각각은 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 갖도록 상승 에지(Rising Edge) 및 하강 에지(Falling Edge)로 형성되는 신호를 의미할 수 있다.The logic gates of the
예로서, 클록 신호들(CLK1, CLK2, CLK3) 각각은 암호화/복호화 회로(1350) 내부 또는 외부의 클록 생성기로부터 제공될 수 있다. 예로서, 스토리지 장치(1300) 및/또는 컴퓨팅 장치(1000)는 클록 신호들(CLK1, CLK2, CLK3)을 생성하는 클록 생성기(들)를 포함할 수 있다. 예로서, 클록 신호들(CLK1, CLK2, CLK3)은 별개의 클록 생성기들로부터 제공되거나, 하나의 클록 생성기로부터 제공될 수 있다.As an example, each of the clock signals CLK1, CLK2, and CLK3 may be provided from a clock generator internal or external to the encryption/
도 2는 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)가 각각 별개의 클록 신호들(CLK1, CLK2, CLK3)을 수신하는 것을 보여준다. 그러나, 몇몇 실시 예에서, 암호화 연산기(1352), 복호화 연산기(1353), 및 S-Box(1355)의 일부 또는 전부는 동일한 클록 신호를 공유할 수 있다.Figure 2 shows that the
암호화 연산기(1352)가 복호화 연산기(1353)와 별개로 구현되는 경우, 암호화 연산 및 복호화 연산이 병렬로 수행될 수 있어서, 암호화/복호화 회로(1350)의 성능이 향상될 수 있다. 한편, 몇몇 경우, 암호화 연산기(1352) 및 복호화 연산기(1353)는 하나의 모듈로 구현될 수 있고, 따라서 암호화/복호화 회로(1350)의 면적이 감소할 수 있다. 몇몇 경우, 암호화/복호화 회로(1350)는 더 높은 성능을 얻기 위해, 복수의 암호화 연산기 및/또는 복수의 복호화 연산기를 포함할 수 있다.When the
도 2에 나타낸 것처럼, S-Box(1355)는 독립적인 모듈로 구현될 수 있다. 그러나, 몇몇 경우, S-Box(1355)는 암호화 연산기(1352), 복호화 연산기(1353), 및/또는 키 관리기(1354)에 포함될 수 있다. 암호화 연산기(1352), 복호화 연산기(1353), 및 키 관리기(1354)는 S-Box(1355)를 공유하거나, 별개의 S-Box들을 이용할 수 있다.As shown in Figure 2, S-
암호화/복호화 컨트롤러(1356)는 암호화/복호화 회로(1350)의 구성 요소들의 동작들을 제어할 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)는 버퍼(1351), 암호화 연산기(1352), 복호화 연산기(1353), 및 키 관리기(1354)의 동작들을 제어할 수 있다.The encryption/
예로서, 암호화/복호화 컨트롤러(1356)는 요청(REQ)에 응답하여 암호화 연산기(1352)의 암호화 연산 및/또는 복호화 연산기(1353)의 복호화 연산을 개시시킬 수 있다. 요청(REQ)은 암호화/복호화 회로(1350)의 외부 구성 요소(예컨대, 메모리 컨트롤러(1330), 프로세서 장치(1100) 등)로부터 제공되거나, 암호화/복호화 회로(1350) 내부에서 생성될 수 있다.As an example, the encryption/
암호화/복호화 컨트롤러(1356)는 레지스터(Register, 1356a)를 포함할 수 있다. 레지스터(1356a)는 제어 값을 저장할 수 있다. 제어 값은 암호화 및 복호화 연산들 중 적어도 하나를 수행하는 것과 관련될 수 있다. 예로서, 제어 값은 암호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시하거나, 암호화 연산의 환경(예컨대, 속도, 보안 수준, 연산 모드 등)을 지시할 수 있다.The encryption/
제어 값은 요청(REQ)에 응답하여 또는 암호화/복호화 컨트롤러(1356)의 판별에 기초하여 레지스터(1356a)에 저장될 수 있다. 예로서, 메모리 컨트롤러(1330)가 암호화 연산을 개시하기 위한 요청(REQ)을 암호화/복호화 컨트롤러(1356)로 제공한 경우, 레지스터(1356a)는 암호화 연산이 수행됨을 지시하는 제어 값을 저장할 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)는 레지스터(1356a)에 저장된 제어 값을 참조하여, 암호화 연산이 수행되도록 버퍼(1351), 암호화 연산기(1352), 및 키 관리기(1354)의 동작들을 제어할 수 있다.The control value may be stored in register 1356a in response to a request (REQ) or based on a determination of the encryption/
도 2를 참조하여 "레지스터"가 설명되었으나, 본 발명은 도 2에 의해 한정되지 않는다. 암호화/복호화 컨트롤러(1356)는 제어 값을 저장하기 위해 레지스터 외의 다른 유형의 메모리를 채용할 수 있다. 나아가, 위에서 설명된 것과 같이, 도 2에 나타낸 블록들은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 다른 실시 예들에서, 몇몇 블록은 더 큰 단위의 블록으로 결합될 수 있고, 하나의 블록이 복수의 블록으로 나뉠 수도 있다.Although “register” has been described with reference to FIG. 2, the present invention is not limited to FIG. 2. The encryption/
도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.FIG. 3 is a flow diagram illustrating an example encryption operation performed in the encryption/decryption circuit of FIG. 2.
예로서, 도 3은 암호화/복호화 회로(1350)가 미국 NIST(U.S. National Institute of Standards and Technology)에 의해 수립(Establish)된 AES(Advanced Encryption Standard)에 따라 암호화 연산을 수행하는 것을 설명한다. 암호화 연산은 주로 암호화/복호화 컨트롤러(1356)의 제어에 따라 암호화 연산기(1352)에 의해 수행될 수 있다. 레지스터(1356a)는 암호화 연산의 수행 및 환경을 지시하는 제어 값을 저장할 수 있다.As an example, Figure 3 illustrates that the encryption/
S110 동작에서, 암호화 연산기(1352)는 "AddRoundKey" 연산을 수행할 수 있다. "AddRoundKey" 연산은 버퍼(1351)로부터의 데이터 및 키 관리기(1354)로부터의 키에 대해 비트 단위의(Bitwise) 조합 논리 연산(예컨대, 논리 합 연산, 논리 곱 연산, 배타적 논리 합 연산 등)을 수행하는 것을 포함할 수 있다. 따라서, 버퍼(1351)로부터의 데이터는 선택된 키에 기초하여 다른 데이터로 변환될 수 있다.In operation S110, the
S120 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S110 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S122 동작에서, 암호화 연산기(1352)는 S120 동작에서 치환된 데이터의 스테이트(State)에 대해 "ShiftRows" 연산을 수행할 수 있다. "ShiftRows" 연산에서, 데이터 스테이트의 행(Row)들이 순환 구조로(Cyclic) 시프트(Shift)될 수 있다. S124 동작에서, 암호화 연산기(1352)는 S122 동작에서 시프트된 데이터 스테이트에 대해 "MixColumns" 연산을 수행할 수 있다. "MixColumns" 연산에서, 데이터 스테이트의 열(Column)들이 섞일(Mix) 수 있다.In operation S120, the S-
이후, S126 동작에서, 암호화 연산기(1352)는 S124 동작에서 섞인 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 암호화 연산기(1352)는 변환된 데이터 및 키 관리기(1354)로부터의 키에 대해 비트 단위의 조합 논리 연산을 수행할 수 있다. 몇몇 실시 예에서, 암호화 연산기(1352)는 설정에 따라 S126 동작을 생략하고 S130 동작을 수행할 수 있다.Thereafter, in operation S126, the
S120 내지 S126 동작들에 따라, 버퍼(1351)로부터의 데이터는 원래의 값과 상이한 다른 값을 갖도록 변환될 수 있다. 따라서, 공격자가 데이터를 의도적으로 공격하는 것이 어려워질 수 있고, 보안 수준이 향상될 수 있다. S120 내지 S126 동작들은 하나의 라운드를 구성할 수 있다. 키 관리기(1354)는 S126 동작의 "AddRoundKey" 연산을 위해 각 라운드마다 상이한 키들을 선택할 수 있다.According to operations S120 to S126, data from the
S130 동작에서, 암호화/복호화 컨트롤러(1356)는 다음 라운드가 마지막 라운드인지 여부를 판별할 수 있다. 암호화/복호화 컨트롤러(1356)는 라운드 값을 관리할 수 있고, 하나의 라운드가 수행될 때마다 라운드 값을 1씩 증가시킬 수 있다. 예로서, 라운드들은 데이터 크기에 의존하여 10번, 12번, 또는 14번 반복될 수 있고(다만, 본 발명은 이에 한정되지 않음), 암호화/복호화 컨트롤러(1356)는 라운드 값에 기초하여 다음 라운드가 마지막 라운드인지 여부를 판별할 수 있다. 예로서, 라운드 값은 제어 값의 일부로서 레지스터(1356a)에 저장될 수 있다.In operation S130, the encryption/
다음 라운드가 마지막 라운드가 아닌 경우, S120 동작이 다시 수행될 수 있다. S120 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. 반면, 다음 라운드가 마지막 라운드인 경우, S140 동작이 수행될 수 있다.If the next round is not the last round, operation S120 may be performed again. In operation S120, the S-
S140 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S142 동작에서, 암호화 연산기(1352)는 S140 동작에서 치환된 데이터의 스테이트에 대해 "ShiftRows" 연산을 수행할 수 있다. S144 동작에서, 암호화 연산기(1352)는 S142 동작에서 시프트된 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 예로서, 마지막 라운드가 완료된 후, 라운드 값이 (예컨대, 0으로) 초기화될 수 있다.In operation S140, the S-
라운드가 반복됨에 따라, 데이터의 값이 점차 변환될 수 있다. S140 내지 S144 동작들로 구성되는 마지막 라운드가 완료된 후, 최종적으로 변환된 데이터가 불휘발성 메모리들(1310)에 저장될 수 있다. 따라서, 공격자가 불휘발성 메모리들(1310)의 암호화된 데이터를 임의로 조작하거나 손상시키는 것이 상당히 어려워질 수 있다.As the round is repeated, the data value may be gradually converted. After the last round consisting of operations S140 to S144 is completed, the finally converted data may be stored in the
예로서, 도 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/
암호화 연산은 연산 단위 크기를 갖는 데이터에 대해 수행될 수 있다. 예로서, "MixColumns" 연산을 위한 연산 단위 크기는 32비트일 수 있고, "MixColumns" 연산은 32비트의 데이터에 대해 수행될 수 있다. 예로서, "ShiftRows" 연산을 위한 연산 단위 크기는 128비트일 수 있고, "ShiftRows" 연산은 128비트의 데이터에 대해 수행될 수 있다.Encryption operations can be performed on data having an operation unit size. As an example, the operation unit size for the “MixColumns” operation may be 32 bits, and the “MixColumns” operation may be performed on 32 bits of data. As an example, the operation unit size for the “ShiftRows” operation may be 128 bits, and the “ShiftRows” operation may be performed on 128 bits of data.
몇몇 실시 예에서, 암호화/복호화 컨트롤러(1356)는 버퍼(1351)에 저장된 데이터의 크기를 모니터링할 수 있다. 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행됨을 판별할 수 있다. 예로서, 데이터가 버퍼(1351)에 점차 누적됨에 따라 버퍼(1351)가 "MixColumns" 연산을 위한 32비트의 데이터를 완전히 저장한 경우, 암호화/복호화 컨트롤러(1356)는 "MixColumns" 연산이 수행되도록 암호화 연산기(1352)를 제어할 수 있다.In some embodiments, the encryption/
한편, 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖지 않는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행되지 않음을 판별할 수 있다. 레지스터(1356a)는 암호화/복호화 컨트롤러(1356)의 판별에 의존하여, 암호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다.Meanwhile, if the data stored in the
몇몇 실시 예에서, 암호화/복호화 컨트롤러(1356)는 라운드 값에 기초하여 암호화 연산을 제어할 수 있다. 라운드 값이 0에 대응하는 경우, 암호화 연산이 수행되지 않을 수 있고, 따라서 레지스터(1356a)는 암호화 연산이 수행되지 않음을 지시하는 제어 값을 저장할 수 있다. 한편, 라운드 값이 0에 대응하지 않는 경우(예컨대, 암호화/복호화 컨트롤러(1356)가 라운드 값을 증가시킨 경우), 암호화 연산이 수행될 수 있고, 따라서 레지스터(1356a)는 암호화 연산이 수행됨을 지시하는 제어 값을 저장할 수 있다.In some embodiments, encryption/
복호화 연산기(1353)의 복호화 연산은 도 3의 암호화 연산에 대응하여 수행될 수 있다. 예로서, 복호화 연산기(1353)는 암호화된 데이터를 복호화하기 위해, 도 3의 암호화 연산들을 역으로 수행할 수 있다. 레지스터(1356a)는 복호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다. 복호화 연산은 통상의 기술자에 의해 잘 이해될 수 있으므로, 복호화 연산에 관한 자세한 설명들은 이하 생략될 것이다. 복호화된 데이터는 메모리 컨트롤러(1330)로 제공될 수 있다.The decryption operation of the
NIST에 의해 발행된 FIPS 197 문서에서 정의된 암호화 연산들이 도 3을 참조하여 설명되었다. 그러나, 도 3은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(1350)는 암호화/복호화 연산에 관한 다른 종류의 표준을 채용할 수 있다. 또는, 암호화/복호화 회로(1350)는 보안 수준을 향상시키기 위해 도 3에 나타낸 것들과 상이한 연산들을 채용할 수 있다.Cryptographic operations defined in the FIPS 197 document published by NIST were explained with reference to FIG. 3. However, Figure 3 is provided to facilitate better understanding and is not intended to limit the present invention. The encryption/
도 4는 도 2의 암호화/복호화 회로에 포함되는 예시적인 논리 회로를 보여주는 블록도이다. 도 5는 도 4의 논리 회로의 동작을 설명하기 위한 표이다.FIG. 4 is a block diagram showing an example logic circuit included in the encryption/decryption circuit of FIG. 2. FIG. 5 is a table for explaining the operation of the logic circuit of FIG. 4.
몇몇 암호화/복호화 회로는 "부 채널 분석 공격(Side-channel Analysis Attack)"에 의해 공격될 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.Some encryption/decryption circuits can be attacked by a "Side-channel Analysis Attack". In a side channel analysis attack, an attacker can collect side information such as the amount of power consumed by the encryption/decryption circuit, the waveform of electromagnetic waves generated by the encryption/decryption circuit, etc. An attacker can attack the encryption/decryption circuit to find out the key used in the encryption/decryption circuit based on the collected information.
따라서, 본 발명의 실시 예에 따른 암호화/복호화 회로(1350)는 부 채널 분석 공격을 방지하기 위한 논리 회로(LGC)를 포함할 수 있다. 도 4를 참조하면, 논리 회로(LGC)는 배타적 논리 합 연산에 대응하는 조합 논리 연산을 수행할 수 있다. 몇몇 예에서, 암호화 연산기(1352)가 논리 회로(LGC)를 포함할 수 있고, 논리 회로(LGC)는 (예로서, 도 3의 S110, S126, 및 S144 동작들에서의) "AddRoundKey" 연산과 관련될 수 있다.Accordingly, the encryption/
논리 회로(LGC)는 네 개의 입력들(A, B, ~A, ~B)을 수신할 수 있다. 입력(~A)은 입력(A)의 반전(Inverted) 값에 대응할 수 있고, 입력(~B)은 입력(B)의 반전 값에 대응할 수 있다. 예로서, 논리 회로(LGC)가 "AddRoundKey" 연산과 관련되는 경우, 입력(A)은 버퍼(1351)로부터의 데이터에 포함되는 비트에 대응할 수 있고, 입력(B)은 키 관리기(1354)로부터의 키에 포함되는 비트에 대응할 수 있다. 논리 회로(LGC)는 입력들(A, B)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.The logic circuit (LGC) can receive four inputs (A, B, ~A, ~B). Input (~A) may correspond to the inverted value of input (A), and input (~B) may correspond to the inverted value of input (B). As an example, if logic circuit (LGC) is associated with an “AddRoundKey” operation, input (A) may correspond to a bit contained in data from
입력들(A, B, ~A, ~B)은 클록 신호(CLK1)에 기초하여 논리 게이트들(P1, P2, P3, P4)을 각각 통과하거나 통과하지 않을 수 있다. 예로서, 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 동안, 입력들(A, B, ~A, ~B)은 논리 게이트들(P1, P2, P3, P4)을 통과하지 않을 수 있고 논리 게이트들(P1, P2, P3, P4) 각각은 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다. 한편, 클록 신호(CLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 동안, 입력들(A, B, ~A, ~B)은 논리 게이트들(P1, P2, P3, P4)을 통과할 수 있다(즉, 논리 게이트들(P1, P2, P3, P4)이 입력들(A, B, ~A, ~B)에 대응하는 값들을 각각 출력할 수 있다). 여기서, 특정 입력의 "통과"는 그 특정 입력이 논리 게이트의 출력을 생성하는 데에 능동적인 영향을 준다는 것을 의미할 수 있다.Inputs A, B, ~A, ~B may or may not pass through logic gates P1, P2, P3, and P4, respectively, based on the clock signal CLK1. As an example, while clock signal CLK1 has a first logic value (e.g., logic “0”), inputs A, B, ~A, ~B have logic gates P1, P2, P3, and P4. ) and each of the logic gates P1, P2, P3, and P4 may output a first logic value (eg, logic “0”). Meanwhile, while the clock signal CLK1 has a second logic value (e.g., logic “1”), the inputs A, B, ~A, ~B have logic gates P1, P2, P3, and P4. (that is, the logic gates (P1, P2, P3, and P4) can output values corresponding to the inputs (A, B, ~A, ~B), respectively). Here, “passing” a specific input may mean that that specific input actively affects generating the output of the logic gate.
논리 게이트들(AND1, AND2, OR1, OR2)은 논리 게이트들(P1, P2, P3, P4)로부터 출력된 값들을 조합(Combine)할 수 있다. 논리 게이트들(OR3, AND3)은 논리 게이트들(AND1, AND2, OR1, OR2)로부터 출력된 값들을 조합할 수 있다. 따라서, 논리 게이트들(OR3, AND3)은 입력들(A, B)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.Logic gates (AND1, AND2, OR1, OR2) can combine values output from logic gates (P1, P2, P3, and P4). Logic gates OR3 and AND3 can combine values output from logic gates AND1, AND2, OR1, and OR2. Accordingly, the logic gates OR3 and AND3 may output results corresponding to the exclusive logical sum of the inputs A and B and the inverted value of the exclusive logical sum.
도 5는 논리 회로(LGC)의 입력들(A, B)과 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3)의 출력들 사이의 관계를 보여준다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 경우, 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3) 각각은 입력들(A, B)의 값들에 관계없이 논리 "0"의 값을 출력할 수 있다. 한편, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 경우, 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3)은 입력들(A, B)의 값들에 의존하여 상이한 값들을 출력할 수 있다.Figure 5 shows the relationship between the inputs (A, B) of the logic circuit (LGC) and the outputs of the logic gates (AND1, AND2, AND3, OR1, OR2, OR3). When the clock signal (CLK1) has a value of logic "0", each of the logic gates (AND1, AND2, AND3, OR1, OR2, OR3) has a logic "0" value regardless of the values of the inputs (A, B). The value of can be output. Meanwhile, when the clock signal (CLK1) has a value of logic “1”, the logic gates (AND1, AND2, AND3, OR1, OR2, OR3) display different values depending on the values of the inputs (A, B). Can be printed.
도 5를 참조하면, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정함이 이해될 수 있다. 예로서, 도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들은 입력들(A, B)의 값들에 의존하여 변경될 수 있다. 그러나, 입력들(A, B)의 값들에 관계없이, 한 개의 논리 곱(AND) 게이트가 논리 "1"의 값을 출력하고 두 개의 논리 합(OR) 게이트들이 논리 "1"의 값들을 출력할 수 있다.Referring to FIG. 5 , it can be understood that while the clock signal CLK1 has a value of logic “1”, the number of logic gates outputting a value of logic “1” is constant. As an example, in the logic circuit LGC of FIG. 4, logic gates outputting a value of logic “1” can be changed depending on the values of inputs A and B. However, regardless of the values of the inputs (A, B), one logical product (AND) gate outputs a value of logic “1” and two logical sum (OR) gates output values of logic “1”. can do.
도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있고, 따라서 논리 회로(LGC)에 의해 소모되는 전체 전력의 양이 일정하게 유지될 수 있다. 이로 인해, 공격자가 논리 회로(LGC)에 의해 소모되는 전력의 양, 논리 회로(LGC)에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집하더라도, 공격자는 논리 회로(LGC)의 구성 및 동작을 이해하기 어려울 수 있다. 결과적으로, 논리 회로(LGC)는 부 채널 분석 공격으로부터의 보호를 가능하게 할 수 있다.In the logic circuit (LGC) of FIG. 4, the number of logic gates outputting a value of logic “1” can be kept constant, and thus the total amount of power consumed by the logic circuit (LGC) can be kept constant. You can. Because of this, even if the attacker collects ancillary information such as the amount of power consumed by the logic circuit (LGC), the waveform of electromagnetic waves generated by the logic circuit (LGC), etc., the attacker cannot determine the configuration and operation of the logic circuit (LGC). may be difficult to understand. As a result, the logic circuit (LGC) can enable protection against side-channel analysis attacks.
다만, 도 4 및 도 5를 참조하여 설명된 논리 회로(LGC)의 구성 및 동작은 더 나은 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다. 논리 회로(LGC)의 구성 및 동작은 다양하게 수정 또는 변경될 수 있다. 나아가, 논리 회로(LGC)는 암호화/복호화 회로(1350)에 포함되는 다양한 논리 회로 중 하나의 예시일 뿐이다. 암호화/복호화 회로(1350)는 암호화 및 복호화 연산들을 수행하기 위해 다양한 구성을 갖는 여러 다른 논리 회로를 더 포함할 수 있다.However, the configuration and operation of the logic circuit (LGC) described with reference to FIGS. 4 and 5 are only examples to facilitate better understanding and are not intended to limit the present invention. The configuration and operation of the logic circuit (LGC) can be modified or changed in various ways. Furthermore, the logic circuit (LGC) is only one example of various logic circuits included in the encryption/
본 발명의 실시 예들에서, 암호화/복호화 회로(1350)는 부 채널 분석 공격을 방지하기 위해 일정한 양의 전력을 소모하도록 구성되는 하나 이상의 논리 회로들을 포함할 수 있다. 이 논리 회로들은 복수의 논리 게이트를 포함할 수 있고, 복수의 논리 게이트 중에서 논리 "0"의 값을 출력하는 논리 게이트들의 개수 및 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있다.In embodiments of the present invention, the encryption/
도 6은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 6 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.
더 나은 이해를 돕기 위해, 도 2 및 도 4의 클록 신호(CLK1)가 설명될 것이다. 클록 신호(CLK1)는 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(1350)는 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안 입력들(A, B)의 배타적 논리 합을 출력할 수 있다.To facilitate better understanding, the clock signal CLK1 in FIGS. 2 and 4 will be explained. The clock signal CLK1 may alternately have a value of logic “0” and a value of logic “1”. While the clock signal CLK1 has a logic value of “1”, the encryption/
한편, 클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안, 암호화/복호화 회로(1350)는 암호화 연산 및 복호화 연산을 수행하지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안 입력들(A, B)의 값들에 관계없이 논리 "0"의 값을 출력할 수 있고, 따라서 암호화 연산이 수행되지 않을 수 있다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 경우, 암호화/복호화 회로(1350)의 논리 게이트들의 상태(State)가 리셋(Reset)될 수 있고, 이 논리 게이트들에 의해 소모되는 전력이 최소화될 수 있다.Meanwhile, while the clock signal CLK1 has a logic value of “0”, the encryption/
클록 신호(CLK1)에 기초하여 논리 게이트들의 상태 및 전력 소모를 변경(예컨대, 전환(Switching))시키는 것은 부 채널 분석 공격을 더욱 어렵게 만들 수 있다. 따라서, 클록 신호(CLK1)의 논리 값들의 교번(Alternation)은 보안 수준을 향상시킬 수 있다.Changing the state and power consumption of logic gates (eg, switching) based on the clock signal CLK1 can make side channel analysis attacks more difficult. Therefore, alternation of the logic values of the clock signal CLK1 can improve the security level.
클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안, 논리 게이트들의 상태가 리셋될 수 있다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 제 1 시간 구간은 "초기화 구간"으로 언급될 수 있다. 한편, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 암호화 연산 및 복호화 연산 중 적어도 하나가 수행될 수 있다. 클록 신호(CLK1)가 논리 "1"의 값을 갖는 제 2 시간 구간은 "연산 구간"으로 언급될 수 있다. 클록 신호(CLK1)의 논리 값들의 교번에 응답하여, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.While the clock signal CLK1 has a value of logic “0”, the states of the logic gates may be reset. The first time period in which the clock signal CLK1 has a logic value of “0” may be referred to as an “initialization period.” Meanwhile, while the clock signal CLK1 has a logic value of “1”, at least one of an encryption operation and a decryption operation may be performed. The second time period in which the clock signal CLK1 has a logic value of “1” may be referred to as an “operation period.” In response to the alternation of logic values of the clock signal CLK1, the initialization period and the calculation period may occur alternately.
몇몇 예에서, 하나의 연산 구간 동안 하나의 라운드의 연산들이 수행될 수 있다. 몇몇 다른 예에서, 하나의 연산 구간 동안 여러 라운드의 연산들이 수행될 수 있다. 몇몇 또 다른 예에서, 하나의 라운드의 연산들이 여러 연산 구간 동안 수행될 수 있다. 연산 구간과 라운드 사이의 관계는 암호화/복호화 회로(1350)의 하드웨어 크기, 연산 성능, 동작 정책 등 다양한 요인에 기인하여 변경 또는 수정될 수 있다.In some examples, one round of operations may be performed during one operation period. In some other examples, multiple rounds of operations may be performed during one operation interval. In some other examples, one round of operations may be performed over multiple operation intervals. The relationship between calculation sections and rounds may be changed or modified due to various factors such as hardware size, calculation performance, and operation policy of the encryption/
그러나, 암호화 연산 및 복호화 연산이 연산 구간 전체에서 수행되지는 않을 수 있다. 예로서, 외부 장치로부터 요청(REQ)이 제공되지 않은 경우, 연산 구간에서도 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)가 암호화 연산 및 복호화 연산이 수행되지 않음을 판별한 경우(예컨대, 버퍼(1351)에 저장된 데이터의 크기가 연산 단위 크기보다 작은 경우), 연산 구간에서도 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다.However, the encryption operation and decryption operation may not be performed in the entire operation section. For example, if a request (REQ) is not provided from an external device, the encryption operation and decryption operation may not be performed even in the operation section. For example, when the encryption/
예로서, 외부 장치로부터의 요청(REQ) 또는 암호화/복호화 컨트롤러(1356)의 판별에 기초하여, 시점(TP1)과 시점(TP2) 사이에서 암호화 연산 및/또는 복호화 연산이 수행될 수 있다. 이 경우, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다.For example, based on a request (REQ) from an external device or a determination by the encryption/
몇몇 경우, 암호화 연산 및 복호화 연산이 수행되지 않더라도, 클록 신호(CLK1)의 논리 값들이 계속 교번할 수 있다. 그러나, 암호화 연산 및 복호화 연산이 수행되지 않는 동안 클록 신호(CLK1)의 논리 값들을 교번시키는 것은 암호화/복호화 회로(1350)에 의해 소모되는 전력의 양을 증가시킬 수 있다. 이는 논리 게이트들이 (초기화 구간에서) 논리 "0"을 출력하는 것 및 (연산 구간에서) 논리 "1"을 출력하는 것을 반복하기 때문이다(즉, 출력 값의 전환에 기인하여 전력이 소모될 수 있다).In some cases, even if encryption and decryption operations are not performed, the logical values of the clock signal CLK1 may continue to alternate. However, alternating the logical values of the clock signal CLK1 while encryption and decryption operations are not performed may increase the amount of power consumed by the encryption/
게다가, 위에서 설명된 것과 같이, 암호화 연산 및/또는 복호화 연산은 연산 구간에서만 수행될 수 있다. 따라서, 초기화 구간의 길이가 길어지는 경우, 연산 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.Additionally, as described above, encryption and/or decryption operations may be performed only in the operation section. Accordingly, when the length of the initialization section becomes long, the length of the calculation section may become short, and thus the calculation performance of the encryption/
도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 암호화 연산기(2352), 암호화/복호화 컨트롤러(2356), 및 구간 컨트롤러(2357)를 포함할 수 있다.FIG. 7 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. In some embodiments, the encryption/
암호화 연산기(2352) 및 암호화/복호화 컨트롤러(2356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 7은 암호화/복호화 회로(2350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(2350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(2350), 암호화 연산기(2352), 및 암호화/복호화 컨트롤러(2356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the
암호화/복호화 컨트롤러(2356)는 제어 값(EC) 및/또는 제어 값(EC)의 반전 값(~EC)을 출력할 수 있다. 제어 값(EC)은 암호화 연산의 수행과 관련될 수 있다. 예로서, 제어 값(EC)은 암호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(EC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.The encryption/
구간 컨트롤러(2357)는 클록 신호(CLK1)를 수신할 수 있다. 구간 컨트롤러(2357)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(EC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2357)는 제어 값(EC)과 함께 또는 제어 값(EC) 대신, 제어 값(EC)의 반전 값(~EC)을 수신할 수 있다.The
구간 컨트롤러(2357)는 제어 값(EC)(및/또는, 제어 값(EC)의 반전 값(~EC)) 및 클록 신호(CLK1)에 기초하여, 활성화 신호(ACT1)를 생성할 수 있다. 암호화 연산기(2352)는 클록 신호(CLK1)를 직접 수신하는 대신, 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(2352)는 활성화 신호(ACT1)에 기초하여 암호화 연산을 수행할 수 있다.The
클록 신호(CLK1)와 달리, 활성화 신호(ACT1)의 논리 값들은 암호화 연산이 수행되지 않는 동안 교번하지 않을 수 있다. 따라서, 암호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 나아가, 암호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다. 활성화 신호(ACT1)는 도 8 및 도 10을 참조하여 더 설명될 것이다.Unlike the clock signal CLK1, the logical values of the activation signal ACT1 may not alternate while an encryption operation is not performed. Accordingly, while an encryption operation is not performed, outputs from logic gates included in the
몇몇 실시 예에서, 구간 컨트롤러(2357)의 일부 또는 전부는 암호화/복호화 컨트롤러(2356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 구간 컨트롤러(2357)의 일부 또는 전부는 암호화/복호화 회로(2350) 외부에 제공될 수 있다. 도 7의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(2350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the
도 8은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 8 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.
구간 컨트롤러(2357)는 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 갖는 클록 신호(CLK1)를 수신할 수 있다. 나아가, 구간 컨트롤러(2357)는 암호화 연산 및/또는 복호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시하는 제어 값(EC)을 수신할 수 있다.The
예로서, 논리 "0"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공되지 않은 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 도 2의 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖지 않는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다.As an example, a control value (EC) of logic “0” may indicate that encryption and/or decryption operations are not performed. As an example, if a request (REQ) from an external device is not provided, the control value (EC) may have a value of logic “0”. For example, if the data stored in the
예로서, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서, 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 따라서, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서, 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하기 위해 논리 "0"의 값을 가질 수 있다.For example, in the time interval before the time point TP1 and in the time interval after the time point TP2, the encryption operation and the decryption operation may not be performed. Accordingly, in the time interval before the time point TP1 and the time interval after the time point TP2, the control value EC will have a value of logical “0” to indicate that the encryption operation and/or decryption operation is not performed. You can.
예로서, 논리 "1"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공된 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖는 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하지 않는 경우(예컨대, 1 이상으로 증가한 경우), 제어 값(EC)이 논리 "1"의 값을 가질 수 있다.As an example, a control value (EC) of logic “1” may indicate that an encryption operation and/or a decryption operation are performed. As an example, when a request (REQ) is provided from an external device, the control value (EC) may have a value of logic “1”. For example, if the data stored in the
예로서, 시점들(TP1, TP2) 사이의 시간 구간에서, 암호화 연산 및 복호화 연산 중 적어도 하나가 수행될 수 있다. 따라서, 시점들(TP1, TP2) 사이의 시간 구간에서, 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하기 위해 논리 "1"의 값을 가질 수 있다.For example, in the time interval between the time points TP1 and TP2, at least one of an encryption operation and a decryption operation may be performed. Accordingly, in the time interval between the time points TP1 and TP2, the control value EC may have a value of logic “1” to indicate that the encryption operation and/or the decryption operation are performed.
다만, 위 예들은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 몇몇 다른 예에서, 논리 "0"의 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있고, 논리 "1"의 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다.However, the above examples are provided to aid better understanding and are not intended to limit the present invention. In some other examples, a control value (EC) of logical “0” may indicate that an encryption operation and/or decryption operation is performed, and a control value (EC) of logic “1” may indicate that an encryption operation and/or decryption operation are performed. You can indicate that it will not be performed.
활성화 신호(ACT1)는 클록 신호(CLK1) 및 제어 값(EC)에 기초하여, 비활성화 값 및 활성화 값을 가질 수 있다. 더 나은 이해를 돕기 위해, 활성화 신호(ACT1)의 비활성화 값이 논리 "0"에 대응하고, 활성화 신호(ACT1)의 활성화 값이 논리 "1"에 대응하는 것으로 가정될 것이다. 다만, 본 발명은 이 가정에 의해 한정되지 않고, 비활성화 값에 대응하는 논리 값과 활성화 값에 대응하는 논리 값은 서로 바뀔 수 있다(Interchangeable).The activation signal ACT1 may have a deactivation value and an activation value based on the clock signal CLK1 and the control value EC. To facilitate better understanding, it will be assumed that the deactivation value of the activation signal ACT1 corresponds to logic “0” and the activation value of the activation signal ACT1 corresponds to logic “1”. However, the present invention is not limited by this assumption, and the logical value corresponding to the deactivation value and the logical value corresponding to the activation value are interchangeable.
제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 교번 없이 비활성화 값(예컨대, 논리 "0")으로 유지될 수 있다. 위에서 설명된 것과 같이, 암호화 연산기(2352)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)의 비활성화 값을 수신할 수 있고, 논리 회로(LGC)의 논리 게이트들 각각은 활성화 신호(ACT1)의 비활성화 값에 응답하여 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다.While the control value EC has a value of logic “0”, the activation signal ACT1 may be maintained at a deactivation value (eg, logic “0”) without alternating. As described above, the
암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 비활성화 값에 기초하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 초기화 구간 동안, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다. 나아가, 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.While the encryption operation and/or the decryption operation are not performed, the logic gates of the
한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 교번(즉, 비활성화 값 및 활성화 값의 교번)에 응답하여 제 1 시간 구간(예컨대, 초기화 구간) 및 제 2 시간 구간(예컨대, 연산 구간)에서 번갈아가며 동작할 수 있다.Meanwhile, while the control value EC has a logic value of “1”, the activation signal ACT1 may alternately have a deactivation value and an activation value in response to the clock signal CLK1. Accordingly, when the control value (EC) indicates that an encryption operation and/or a decryption operation is performed, the logic gates of the
연산 구간에서, 암호화 연산기(2352)는 논리 게이트들을 이용하여 암호화 연산(및/또는 복호화 연산)을 수행할 수 있다. 암호화 연산 및/또는 복호화 연산은 활성화 신호(ACT1)의 활성화 값에 응답하여 수행될 수 있다. 연산 구간 동안, 도 4 및 도 5를 참조하여 설명된 것과 같이, 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 일정하게 유지될 수 있다.In the operation section, the
도 9a 및 도 9b는 도 8의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.FIGS. 9A and 9B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 8.
도 9a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357a)를 포함할 수 있다. 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)에 대해 논리 곱 연산을 수행할 수 있다.Referring to FIG. 9A, the
도 9a의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(2357a)는 비활성화 값(예컨대, 논리 "0")을 갖는 활성화 신호(ACT1)를 생성할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(2357a)는 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 생성할 수 있다.In the example of FIG. 9A , if the control value EC indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”),
도 9b를 참조하면, 구간 컨트롤러(2357)는 트랜지스터들(2357b, 2357c)을 포함할 수 있다. 트랜지스터(2357b)는 제어 값(EC)에 응답하여 클록 신호(CLK1)를 활성화 신호(ACT1)로서 전달할 수 있다. 트랜지스터(2357c)는 제어 값(EC)의 반전 값(~EC)에 응답하여 논리 "0"의 값을 활성화 신호(ACT1)로서 전달할 수 있다.Referring to FIG. 9B, the
도 9b의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 트랜지스터(2357c)가 비활성화 값(예컨대, 논리 "0")을 갖는 활성화 신호(ACT1)를 전달할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 트랜지스터(2357b)가 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 전달할 수 있다.In the example of FIG. 9B , if the control value EC indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”),
구간 컨트롤러(2357)가 도 9a 또는 도 9b에 나타낸 구성을 채용하는 경우, 구간 컨트롤러(2357)는 도 8을 참조하여 설명된 활성화 신호(ACT1)를 생성할 수 있다. 이러한 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 논리 게이트들로부터의 출력이 초기화 구간에서 일정하게 유지될 수 있다. 따라서, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.When the
도 10은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 10 is a timing diagram for explaining time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the section controller of FIG. 7.
도 8의 타이밍도와 달리, 도 10을 참조하면, 제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 활성화 값(예컨대, 논리 "1")으로 유지될 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들은 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 예로서, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 활성화 값에 응답하여 연산 구간에서 동작할 수 있다.Unlike the timing diagram of FIG. 8, referring to FIG. 10, while the control value EC has a value of logic “0”, the activation signal ACT1 may be maintained at an activation value (e.g., logic “1”). . Accordingly, when the control value EC indicates that the encryption operation and/or the decryption operation are not performed, the logic gates of the
암호화 연산 및/또는 복호화 연산이 수행되지 않는 경우, 암호화 연산기(2352)로 입력되는 데이터는 변경되지 않을 수 있다. 예로서, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)는 기본(Default) 값의 데이터 또는 이전의(Previous) 연산에 이용된 데이터를 일정하게 수신할 수 있다. 따라서, 암호화 연산기(2352)가 연산 구간에서 동작하더라도, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 결과적으로, 연산 구간이 유지되더라도, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.If the encryption operation and/or decryption operation is not performed, data input to the
몇몇 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)로 입력되는 데이터가 변경될 수 있다. 예로서, 암호화 연산기(2352)는 다음의 연산에 이용될 데이터 또는 레지스터 설정 값을 수신할 수 있다. 이 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 한 번 변경될 수 있다. 그러나, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)로 입력되는 데이터가 여러 번 변경되지는 않을 수 있다. 따라서, 연산 구간이 유지되더라도, 출력 값의 전환에 기인하는 전력 소모가 최소화될 수 있다.In some cases, data input to the
한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 이는 도 8을 참조하여 설명된 시점들(TP1, TP2) 사이의 시간 구간에 대응할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.Meanwhile, while the control value EC has a logic value of “1”, the activation signal ACT1 may alternately have a deactivation value and an activation value in response to the clock signal CLK1. This may correspond to the time interval between the time points TP1 and TP2 described with reference to FIG. 8 . For convenience of explanation, overlapping descriptions will be omitted below.
도 11a 및 도 11b는 도 10의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.FIGS. 11A and 11B are block diagrams showing example configurations of the section controller of FIG. 7 in relation to the timing diagram of FIG. 10.
도 11a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357d)를 포함할 수 있다. 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 11A, the
도 11a의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(2357d)는 활성화 값(예컨대, 논리 "1")을 갖는 활성화 신호(ACT1)를 생성할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(2357d)는 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 생성할 수 있다.In the example of FIG. 11A , when the control value (EC) indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”),
도 11b를 참조하면, 구간 컨트롤러(2357)는 트랜지스터들(2357e, 2357f)을 포함할 수 있다. 트랜지스터(2357e)는 제어 값(EC)의 반전 값(~EC)에 응답하여 논리 "1"의 값을 활성화 신호(ACT1)로서 전달할 수 있다. 트랜지스터(2357f)는 제어 값(EC)에 응답하여 클록 신호(CLK1)를 활성화 신호(ACT1)로서 전달할 수 있다.Referring to FIG. 11B, the
도 11b의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 트랜지스터(2357e)가 활성화 값(예컨대, 논리 "1")을 갖는 활성화 신호(ACT1)를 전달할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 트랜지스터(2357f)가 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 전달할 수 있다.In the example of FIG. 11B, when the control value EC indicates that encryption and/or decryption operations are not performed (e.g., has a value of logic “0”),
구간 컨트롤러(2357)가 도 11a 또는 도 11b에 나타낸 구성을 채용하는 경우, 구간 컨트롤러(2357)는 도 10을 참조하여 설명된 활성화 신호(ACT1)를 생성할 수 있다. 이러한 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 논리 게이트들로부터의 출력이 연산 구간에서 일정하게 유지되거나 한 번 변경될 수 있다. 따라서, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.When the
도 12 및 도 13은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성들을 보여주는 블록도들이다.12 and 13 are block diagrams showing example components included in the encryption/decryption circuit of FIG. 2.
도 12를 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 구간 컨트롤러(2358)를 더 포함할 수 있다. 암호화/복호화 컨트롤러(2356)는 제어 값(DC) 및/또는 제어 값(DC)의 반전 값(~DC)을 출력할 수 있다. 제어 값(DC)은 복호화 연산의 수행과 관련될 수 있다. 예로서, 제어 값(DC)은 복호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(DC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.Referring to FIG. 12 , in some embodiments, the encryption/
구간 컨트롤러(2358)는 클록 신호(CLK2)를 수신할 수 있다. 구간 컨트롤러(2358)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(DC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2358)는 제어 값(DC)과 함께 또는 제어 값(DC) 대신, 제어 값(DC)의 반전 값(~DC)을 수신할 수 있다.The
구간 컨트롤러(2358)는 제어 값(DC)(및/또는, 제어 값(DC)의 반전 값(~DC)) 및 클록 신호(CLK2)에 기초하여, 활성화 신호(ACT2)를 생성할 수 있다. 복호화 연산기(2353)는 클록 신호(CLK2)를 직접 수신하는 대신, 활성화 신호(ACT2)에 기초하여 동작할 수 있다. 예로서, 복호화 연산기(2353)는 활성화 신호(ACT2)에 기초하여 복호화 연산을 수행할 수 있다.The
클록 신호(CLK2)와 달리, 활성화 신호(ACT2)의 논리 값들은 복호화 연산이 수행되지 않는 동안 교번하지 않을 수 있다. 도 8 및 도 10을 참조하여 설명된 것들과 유사하게, 복호화 연산이 수행되지 않는 경우, 제어 값(DC)은 복호화 연산이 수행되지 않음을 지시할 수 있다. 복호화 연산이 수행되지 않는 동안, 활성화 신호(ACT2)는 비활성화 값 및 활성화 값 중 하나로 유지될 수 있다. 이를 위해, 구간 컨트롤러(2358)는 도 9a, 도 9b, 도 11a, 또는 도 11b에 나타낸 것과 유사한 구성을 포함할 수 있다.Unlike the clock signal CLK2, the logic values of the activation signal ACT2 may not alternate while a decryption operation is not performed. Similar to those described with reference to FIGS. 8 and 10 , when the decryption operation is not performed, the control value DC may indicate that the decryption operation is not performed. While a decryption operation is not performed, the activation signal ACT2 may be maintained at one of an inactive value and an active value. To this end, the
복호화 연산이 수행되지 않는 동안, 복호화 연산기(2353)의 논리 게이트들은 활성화 신호(ACT2)의 비활성화 값에 응답하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 또는, 복호화 연산이 수행되지 않는 동안, 복호화 연산기(2353)의 논리 게이트들은 활성화 신호(ACT2)의 활성화 값에 응답하여 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 따라서, 복호화 연산기(2353)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.While the decryption operation is not performed, the logic gates of the
도 13을 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 구간 컨트롤러(2359)를 더 포함할 수 있다. 암호화/복호화 컨트롤러(2356)는 제어 값(SC) 및/또는 제어 값(SC)의 반전 값(~SC)을 출력할 수 있다. 제어 값(SC)은 치환 연산의 수행과 관련될 수 있다. 예로서, 제어 값(SC)은 치환 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(SC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.Referring to FIG. 13, in some embodiments, the encryption/
구간 컨트롤러(2359)는 클록 신호(CLK3)를 수신할 수 있다. 구간 컨트롤러(2359)는 암호화/복호화 컨트롤러(2356)로부터 제어 값(SC)을 수신할 수 있다. 몇몇 경우, 구간 컨트롤러(2359)는 제어 값(SC)과 함께 또는 제어 값(SC) 대신, 제어 값(SC)의 반전 값(~SC)을 수신할 수 있다.The
구간 컨트롤러(2359)는 제어 값(SC)(및/또는, 제어 값(SC)의 반전 값(~SC)) 및 클록 신호(CLK3)에 기초하여, 활성화 신호(ACT3)를 생성할 수 있다. S-Box(2355)는 클록 신호(CLK3)를 직접 수신하는 대신, 활성화 신호(ACT3)에 기초하여 동작할 수 있다. 예로서, S-Box(2355)는 활성화 신호(ACT3)에 기초하여 치환 연산을 수행할 수 있다.The
클록 신호(CLK3)와 달리, 활성화 신호(ACT3)의 논리 값들은 치환 연산이 수행되지 않는 동안 교번하지 않을 수 있다. 도 8 및 도 10을 참조하여 설명된 것들과 유사하게, 치환 연산이 수행되지 않는 경우, 제어 값(SC)은 치환 연산이 수행되지 않음을 지시할 수 있다. 치환 연산이 수행되지 않는 동안, 활성화 신호(ACT3)는 비활성화 값 및 활성화 값 중 하나로 유지될 수 있다. 이를 위해, 구간 컨트롤러(2359)는 도 9a, 도 9b, 도 11a, 또는 도 11b에 나타낸 것과 유사한 구성을 포함할 수 있다.Unlike the clock signal CLK3, the logic values of the activation signal ACT3 may not alternate while a substitution operation is not performed. Similar to those described with reference to FIGS. 8 and 10 , when the substitution operation is not performed, the control value SC may indicate that the substitution operation is not performed. While a substitution operation is not performed, the activation signal ACT3 may be maintained at one of an inactive value and an active value. To this end, the
치환 연산이 수행되지 않는 동안, S-Box(2355)의 논리 게이트들은 활성화 신호(ACT3)의 비활성화 값에 응답하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 또는, 치환 연산이 수행되지 않는 동안, S-Box(2355)의 논리 게이트들은 활성화 신호(ACT3)의 활성화 값에 응답하여 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 따라서, S-Box(2355)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.While the substitution operation is not performed, the logic gates of the S-
몇몇 실시 예에서, 구간 컨트롤러들(2358, 2359)의 일부 또는 전부는 암호화/복호화 컨트롤러(2356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 구간 컨트롤러들(2358, 2359)의 일부 또는 전부는 암호화/복호화 회로(2350) 외부에 제공될 수 있다. 도 12 및 도 13의 예시적인 구성들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(2350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the
도 14는 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 14 is a timing diagram illustrating time sections of an exemplary encryption/decryption operation performed in the encryption/decryption circuit of FIG. 2.
위에서 설명된 것과 같이, 암호화/복호화 회로(1350)는 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 한편, 초기화 구간에서, 암호화/복호화 회로(1350)의 논리 게이트들의 상태가 리셋될 수 있다. 따라서, 초기화 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 이로 인해, 초기화 구간의 길이가 길어지는 경우, 암호화 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.As described above, the encryption/
몇몇 실시 예에서, 도 14의 변경된 클록 신호(CCLK1)가 도 6 및 도 7의 클록 신호(CLK1)를 대체할 수 있다. 변경된 클록 신호(CCLK1)를 클록 신호(CLK1)와 비교하면, 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이보다 길다는 것이 이해될 수 있다. 반면, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이보다 짧다는 것이 이해될 수 있다.In some embodiments, the modified clock signal CCLK1 of FIG. 14 may replace the clock signal CLK1 of FIGS. 6 and 7. Comparing the changed clock signal (CCLK1) with the clock signal (CLK1), the length of the time interval in which the changed clock signal (CCLK1) has a value of logic "1" is the length of the time section in which the changed clock signal (CLK1) has a value of logic "1". It can be understood that it is longer than the length of the time interval. On the other hand, it can be understood that the length of the time section in which the changed clock signal CCLK1 has a value of logic “0” is shorter than the length of the time section in which the clock signal CLK1 has a value of logic “0”.
즉, 변경된 클록 신호(CCLK1)의 듀티 비(Duty Ratio) 또는 듀티 사이클(Duty Cycle)은 클록 신호(CLK1)의 듀티 비 또는 듀티 사이클과 상이할 수 있다. 듀티 비의 변경 또는 조절에 기인하여, 변경된 클록 신호(CCLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간(예컨대, 초기화 구간)의 길이는 변경된 클록 신호(CCLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 시간 구간(예컨대, 연산 구간)의 길이보다 짧을 수 있다.That is, the duty ratio or duty cycle of the changed clock signal CCLK1 may be different from the duty ratio or duty cycle of the clock signal CLK1. Due to the change or adjustment of the duty ratio, the length of the time interval (e.g., initialization interval) in which the changed clock signal (CCLK1) has the first logic value (e.g., logic “0”) is changed to the first logic value (e.g., logic “0”). 2 It may be shorter than the length of a time interval (eg, calculation interval) having a logic value (eg, logic “1”).
따라서, 변경된 클록 신호(CCLK1)가 클록 신호(CLK1) 대신 채용되는 경우, 초기화 구간의 길이가 짧아지고 연산 구간의 길이가 길어질 수 있다. 이 경우, 길어진 연산 구간 동안 더 많은 암호화 연산들 및/또는 복호화 연산들이 수행될 수 있다. 결과적으로, 암호화/복호화 회로(1350)의 연산 성능이 향상될 수 있다. 도 2, 도 12, 및 도 13의 클록 신호들(CLK2, CLK3) 각각 역시 변경된 클록 신호(CCLK1)로 대체될 수 있다.Therefore, when the changed clock signal CCLK1 is used instead of the clock signal CLK1, the length of the initialization section may be shortened and the length of the calculation section may be long. In this case, more encryption operations and/or decryption operations may be performed during a longer operation period. As a result, the computational performance of the encryption/
변경된 클록 신호(CCLK1)는 암호화/복호화 회로(1350) 내부 또는 외부의 클록 생성기로부터 제공될 수 있다. 이러한 클록 생성기는 클록 신호(CLK1)의 것과 상이한 듀티 비 또는 듀티 사이클을 갖는 변경된 클록 신호(CCLK1)를 생성하기 위해 재설계될 수 있다. 몇몇 실시 예에서, 암호화/복호화 회로(1350)의 연산 성능을 적응적으로 제어하기 위해, 변경된 클록 신호(CCLK1)의 듀티 비 또는 듀티 사이클은 프로그램 가능(Programmable)하거나 조절 가능(Adjustable)할 수 있다.The changed clock signal CCLK1 may be provided from a clock generator inside or outside the encryption/
한편, 몇몇 실시 예에서, 변경된 클록 신호(CCLK1)는 클록 생성기의 재설계 없이 구현될 수 있다. 이러한 실시 예들은 도 15 내지 도 19를 참조하여 설명될 것이다.Meanwhile, in some embodiments, the changed clock signal CCLK1 can be implemented without redesigning the clock generator. These embodiments will be described with reference to FIGS. 15 to 19.
도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(3350)는 암호화 연산기(3352), 암호화/복호화 컨트롤러(3356), 및 클록 컨트롤러(3357)를 포함할 수 있다.FIG. 15 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. In some embodiments, the encryption/
암호화 연산기(3352) 및 암호화/복호화 컨트롤러(3356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 15는 암호화/복호화 회로(3350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(3350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(3350), 암호화 연산기(3352), 및 암호화/복호화 컨트롤러(3356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the
클록 컨트롤러(3357)는 제 1 클록 신호(예컨대, 클록 신호(CLK1))를 수신할 수 있다. 제 1 클록 신호는 도 6 및 도 7을 참조하여 설명된 클록 신호(CLK1)에 대응할 수 있다. 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 시간 구간의 길이와 동일할 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다.The
클록 컨트롤러(3357)는 제 1 클록 신호에 기초하여 제 2 클록 신호(예컨대, 변경된 클록 신호(CCLK1))를 생성할 수 있다. 제 2 클록 신호는 도 14를 참조하여 설명된 변경된 클록 신호(CCLK1)에 대응할 수 있다. 몇몇 실시 예에서, 변경된 클록 신호(CCLK1)는 재설계된 클록 생성기로부터 생성되는 대신, 클록 컨트롤러(3357)에 의해 클록 신호(CLK1)로부터 생성될 수 있다.The
변경된 클록 신호(CCLK1)는 암호화 연산기(3352)로 제공될 수 있다. 암호화 연산기(3352)의 논리 게이트들은 클록 신호(CLK1) 대신, 변경된 클록 신호(CCLK1)에 기초하여 동작할 수 있다. 도 14에 나타낸 것과 같이, 변경된 클록 신호(CCLK1)에서, 연산 구간의 길이가 초기화 구간의 길이보다 길 수 있다. 따라서, 암호화 연산기(3352)의 연산 성능이 향상될 수 있다.The changed clock signal (CCLK1) may be provided to the
몇몇 실시 예에서, 클록 컨트롤러(3357)의 일부 또는 전부는 암호화/복호화 컨트롤러(3356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 클록 컨트롤러(3357)의 일부 또는 전부는 암호화/복호화 회로(3350) 외부에 제공될 수 있다. 도 15의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(3350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of
몇몇 실시 예에서, 암호화/복호화 회로(3350)는 도 7의 구간 컨트롤러(2357)와 함께 클록 컨트롤러(3357)를 채용할 수 있다. 예로서, 구간 컨트롤러(2357)는 클록 신호(CLK1) 대신, 클록 컨트롤러(3357)로부터 변경된 클록 신호(CCLK1)를 수신할 수 있다. 이 예에서, 구간 컨트롤러(2357)는 제어 값(EC)(및/또는 제어 값(EC)의 반전 값(~EC)) 및 변경된 클록 신호(CCLK1)에 기초하여 활성화 신호(ACT1)를 생성할 수 있다. 이러한 활성화 신호(ACT1)는 암호화 연산 및 복호화 연산이 수행되지 않는 동안은 일정한 값을 가지면서도, 암호화 연산 및/또는 복호화 연산이 수행되는 동안은 변경된 클록 신호(CCLK1)에 대응할 수 있다.In some embodiments, the encryption/
도 15는 변경된 클록 신호(CCLK1)가 암호화 연산기(3352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 변경된 클록 신호(CCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 변경된 클록 신호(CCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Figure 15 shows that the changed clock signal (CCLK1) is provided to the
몇몇 실시 예에서, 도 2의 S-Box(1355)는 클록 신호(CLK3) 대신, 변경된 클록 신호(CCLK1)를 수신할 수 있다. 또는, S-Box(1355)는 변경된 클록 신호(CCLK1) 및 도 13의 제어 값(EC)에 기초하여 생성되는 활성화 신호(ACT3)를 수신할 수 있다. 본 발명의 실시 예들은 위 설명들에 의해 한정되지 않고, 일반 클록 신호 대신 활성화 신호 또는 변경된 클록 신호를 채용하기 위해 다양하게 변경 또는 수정될 수 있다.In some embodiments, the S-
도 16은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 도 17은 도 16의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 16 is a block diagram showing an exemplary configuration of the clock controller of FIG. 15. FIG. 17 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 16.
도 16을 참조하면, 클록 컨트롤러(3357)는 버퍼(3357a) 및 조합 논리 게이트(3357b)를 포함할 수 있다. 클록 컨트롤러(3357)는 클록 신호(CLK1)를 수신할 수 있다. 버퍼(3357a)는 클록 신호(CLK1)를 지연시킬 수 있다. 따라서, 버퍼(3357a)는 지연된 클록 신호(dCLK1)를 출력할 수 있다.Referring to FIG. 16, the
도 17은 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 보여준다. 버퍼(3357a)는 클록 신호(CLK1)를 지연시켜, 지연된 클록 신호(dCLK1)를 출력할 수 있다. 지연된 클록 신호(dCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 동일할 수 있다. 지연된 클록 신호(dCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 동일할 수 있다.Figure 17 shows a clock signal (CLK1) and a delayed clock signal (dCLK1). The
다시 도 16을 참조하면, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 수신할 수 있다. 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 16, the
다시 도 17을 참조하면, 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1) 모두가 논리 "0"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "0"의 값을 가질 수 있다. 반면, 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1) 중 적어도 하나가 논리 "1"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "1"의 값을 가질 수 있다. 따라서, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 초기화 구간의 길이는 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 연산 구간의 길이보다 짧을 수 있다. 이러한 변경된 클록 신호(CCLK1)는 연산 성능이 향상되게 할 수 있다.Referring to FIG. 17 again, when both the clock signal CLK1 and the delayed clock signal dCLK1 have a value of logic “0”, the changed clock signal CCLK1 may have a value of logic “0”. On the other hand, when at least one of the clock signal CLK1 and the delayed clock signal dCLK1 has a value of logic “1”, the changed clock signal CCLK1 may have a value of logic “1”. Accordingly, the length of the initialization section in which the changed clock signal CCLK1 has a logic value of "0" may be shorter than the length of the calculation section in which the changed clock signal CCLK1 has a logic value of "1". This changed clock signal (CCLK1) can improve computational performance.
클록 신호(CLK1)의 지연이 지나치게 긴 경우, 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 오히려 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 길어질 수 있다. 한편, 클록 신호(CLK1)의 지연이 지나치게 짧은 경우, 변경된 클록 신호(CCLK1)의 논리 값이 교번하지 않을 수 있다. 따라서, 버퍼(3357a)는 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 짧도록 클록 신호(CLK1)를 적당하게 지연시킬 수 있다. 몇몇 경우, 버퍼(3357a)의 지연은 프로그램 가능하거나 조절 가능할 수 있다.If the delay of the clock signal CLK1 is too long, the length of the initialization section of the changed clock signal CCLK1 may be longer than the length of the calculation section of the changed clock signal CCLK1. Meanwhile, if the delay of the clock signal CLK1 is too short, the logic values of the changed clock signal CCLK1 may not alternate. Accordingly, the
도 18은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 도 19는 도 18의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 18 is a block diagram showing an example configuration of the clock controller of FIG. 15. FIG. 19 is a timing diagram illustrating time intervals of an example encryption/decryption operation performed in the encryption/decryption circuit of FIG. 15 including the clock controller of FIG. 18.
도 18을 참조하면, 클록 컨트롤러(3357)는 분주기(Divider, 3357c) 및 조합 논리 게이트(3357d)를 포함할 수 있다. 클록 컨트롤러(3357)는 빠른 클록 신호(fCLK1)를 수신할 수 있다. 분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주할 수 있다. 따라서, 분주기(3357c)는 클록 신호(CLK1)를 출력할 수 있다. 예로서, 분주기(3357c)는 카운터 레지스터, 시프트 레지스터 등과 같은 논리 회로를 포함할 수 있다.Referring to FIG. 18, the
도 19는 빠른 클록 신호(fCLK1) 및 클록 신호(CLK1)를 보여준다. 클록 신호(CLK1)는 암호화/복호화 회로에서 암호화 연산 및/또는 복호화 연산을 수행하는 데에 이용되는 주파수를 가질 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다. 빠른 클록 신호(fCLK1)의 주파수는 클록 신호(CLK1)의 주파수보다 높을 수 있다. 도 18 및 도 19의 실시 예에서, 클록 신호(CLK1)를 생성하기 위해 빠른 클록 신호(fCLK1)를 출력하는 클록 생성기가 제공될 수 있다.Figure 19 shows a fast clock signal (fCLK1) and a clock signal (CLK1). The clock signal CLK1 may have a frequency used to perform encryption and/or decryption operations in the encryption/decryption circuit. Accordingly, the clock signal CLK1 can be understood as a general clock signal. The frequency of the fast clock signal (fCLK1) may be higher than the frequency of the clock signal (CLK1). 18 and 19, a clock generator that outputs a fast clock signal fCLK1 may be provided to generate the clock signal CLK1.
분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주하여, 분주된 클록 신호(CLK1)를 출력할 수 있다. 분주된 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 상이할 수 있다. 분주된 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 상이할 수 있다.The
다시 도 18을 참조하면, 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)를 수신할 수 있다. 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 18, the
다시 도 19를 참조하면, 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1) 모두가 논리 "0"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "0"의 값을 가질 수 있다. 반면, 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1) 중 적어도 하나가 논리 "1"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "1"의 값을 가질 수 있다. 따라서, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 초기화 구간의 길이는 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 연산 구간의 길이보다 짧을 수 있다. 이러한 변경된 클록 신호(CCLK1)는 연산 성능이 향상되게 할 수 있다.Referring again to FIG. 19, when both the fast clock signal (fCLK1) and the divided clock signal (CLK1) have a value of logic “0”, the changed clock signal (CCLK1) may have a value of logic “0”. . On the other hand, when at least one of the fast clock signal fCLK1 and the divided clock signal CLK1 has a value of logic “1”, the changed clock signal CCLK1 may have a value of logic “1”. Accordingly, the length of the initialization section in which the changed clock signal CCLK1 has a logic value of "0" may be shorter than the length of the calculation section in which the changed clock signal CCLK1 has a logic value of "1". This changed clock signal (CCLK1) can improve computational performance.
도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(4350)는 암호화 연산기(4352), 암호화/복호화 컨트롤러(4356), 및 초기화 컨트롤러(4357)를 포함할 수 있다.FIG. 20 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. In some embodiments, the encryption/
암호화 연산기(4352) 및 암호화/복호화 컨트롤러(4356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 20은 암호화/복호화 회로(4350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(4350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(4350), 암호화 연산기(4352), 및 암호화/복호화 컨트롤러(4356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the
암호화/복호화 컨트롤러(4356)는 제어 값(IEN) 및/또는 제어 값(IEN)의 반전 값(~IEN)을 출력할 수 있다. 제어 값(IEN)은 암호화 연산의 속도 모드와 관련될 수 있다. 예로서, 제어 값(IEN)은 암호화 연산기(4352)의 암호화 연산이 저속 모드 또는 고속 모드에서 수행되는지 여부를 지시할 수 있다.The encryption/
도 6 및 도 14를 참조하여 설명된 것과 같이, 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간(예컨대, 초기화 구간)이 길어지는 경우, 암호화 연산기(4352)의 연산 성능이 떨어질 수 있다. 초기화 구간이 완전히 생략되는 경우, 암호화 연산기(4352)의 연산 성능이 최대화될 수 있다.As described with reference to FIGS. 6 and 14 , when the time interval (e.g., initialization interval) in which the clock signal CLK1 has the first logic value (e.g., logic “0”) becomes long, the encryption operator 4352 )'s computational performance may deteriorate. If the initialization section is completely omitted, the computational performance of the
제어 값(IEN)은 초기화 구간의 발생 및 생략에 영향을 줄 수 있다. 예로서, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 초기화 구간이 생략될 수 있고 연산 구간만이 발생할 수 있다. 따라서, 고속 모드에서, 암호화 연산기(4352)의 연산 성능이 최대화될 수 있다. 반면, 제어 값(IEN)이 암호화 연산이 저속 모드에서 수행됨을 지시하는 경우, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.The control value (IEN) can affect the occurrence and omission of the initialization section. As an example, if the control value (IEN) indicates that the encryption operation is performed in high-speed mode, the initialization section may be omitted and only the operation section may occur. Therefore, in high-speed mode, the computational performance of the
제어 값(IEN)은 도 1의 컴퓨팅 장치(1000)의 사용자로부터 제공될 수 있다. 또는, 컴퓨팅 장치(1000)의 정책에 의존하여, 제어 값(IEN)은 도 1의 프로세서 장치(1100) 및/또는 메모리 컨트롤러(1330)로부터 제공될 수 있다. 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산의 성능에 대한 요구에 적합하게, 저속 모드 및 고속 모드를 지시하는 논리 값들 중 하나를 가질 수 있다.The control value (IEN) may be provided by a user of
예로서, 제어 값(IEN)은 도 2의 레지스터(1356a)에 저장될 수 있다. 암호화/복호화 컨트롤러(4356)는 레지스터(1356a)에 저장된 제어 값(IEN)에 기초하여 암호화 연산기(4352)의 암호화 연산을 관리할 수 있고, 초기화 컨트롤러(4357)는 레지스터(1356a)로부터 제어 값(IEN)을 수신할 수 있다.As an example, the control value (IEN) may be stored in register 1356a in FIG. 2. The encryption/
몇몇 경우, 초기화 컨트롤러(4357)는 제어 값(IEN)과 함께 또는 제어 값(IEN) 대신, 제어 값(IEN)의 반전 값(IEN)을 수신할 수 있다. 나아가, 초기화 컨트롤러(4357)는 클록 신호(CLK1)를 수신할 수 있다. 초기화 컨트롤러(4357)는 제어 값(IEN)(및/또는, 제어 값(IEN)의 반전 값(~IEN)) 및 클록 신호(CLK1)에 기초하여, 제어된 클록 신호(TCLK1)를 생성할 수 있다.In some cases, the
암호화 연산기(4352)는 클록 신호(CLK1)를 직접 수신하는 대신, 제어된 클록 신호(TCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(4352)는 제어된 클록 신호(TCLK1)에 기초하여 암호화 연산을 수행할 수 있다.The
제어 값(IEN)이 암호화 연산이 저속 모드에서 수행됨을 지시하는 경우, 제어된 클록 신호(TCLK1)는 클록 신호(CLK1)와 동일하게 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 번갈아가며 가질 수 있다. 따라서, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.When the control value IEN indicates that the cryptographic operation is performed in low-speed mode, the controlled clock signal TCLK1 has a first logic value (e.g., logic “0”) and a second logic identical to the clock signal CLK1. It may have alternating values (e.g., logical “1”). Therefore, the initialization section and the calculation section may occur alternately.
반면, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 제어된 클록 신호(TCLK1)의 값은 제 2 논리 값으로 유지될 수 있다. 따라서, 암호화 연산기(4352)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있고, 연산 성능이 최대화될 수 있다. 제어된 클록 신호(TCLK1)는 도 21을 참조하여 더 설명될 것이다.On the other hand, when the control value IEN indicates that the encryption operation is performed in a high-speed mode, the value of the controlled clock signal TCLK1 may be maintained at the second logic value. Therefore, the
몇몇 실시 예에서, 초기화 컨트롤러(4357)의 일부 또는 전부는 암호화/복호화 컨트롤러(4356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 초기화 컨트롤러(4357)의 일부 또는 전부는 암호화/복호화 회로(4350) 외부에 제공될 수 있다. 도 20의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(4350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the
몇몇 실시 예에서, 암호화/복호화 회로(4350)는 도 7의 구간 컨트롤러(2357)와 함께 초기화 컨트롤러(4357)를 채용할 수 있다. 예로서, 구간 컨트롤러(2357)는 클록 신호(CLK1) 대신, 초기화 컨트롤러(4357)로부터 제어된 클록 신호(TCLK1)를 수신할 수 있다. 이 예에서, 구간 컨트롤러(2357)는 제어 값(EC)(및/또는 제어 값(EC)의 반전 값(~EC)) 및 제어된 클록 신호(TCLK1)에 기초하여 활성화 신호(ACT1)를 생성할 수 있다. 이러한 활성화 신호(ACT1)는 암호화 연산 및 복호화 연산이 수행되지 않는 동안 일정한 값을 가질 수 있고, 암호화 연산 및/또는 복호화 연산이 수행되는 동안 저속 모드 및 고속 모드 중 하나를 가능하게 할 수 있다.In some embodiments, the encryption/
몇몇 실시 예에서, 암호화/복호화 회로(4350)는 도 15의 클록 컨트롤러(3357)와 함께 초기화 컨트롤러(4357)를 채용할 수 있다. 예로서, 클록 컨트롤러(3357)는 클록 신호(CLK1) 대신, 초기화 컨트롤러(4357)로부터 제어된 클록 신호(TCLK1)를 수신할 수 있다. 이 예에서, 제어된 클록 신호(TCLK1)는 저속 모드 및 고속 모드 중 하나를 가능하게 할 수 있다. 나아가, 저속 모드에서, 제어된 클록 신호(TCLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 초기화 구간의 길이는 제어된 클록 신호(TCLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 연산 구간의 길이보다 짧을 수 있다.In some embodiments, the encryption/
도 20은 제어된 클록 신호(TCLK1)가 암호화 연산기(4352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 제어된 클록 신호(TCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 제어된 클록 신호(TCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Figure 20 shows that the controlled clock signal TCLK1 is provided to the
몇몇 실시 예에서, 도 2의 S-Box(1355)는 클록 신호(CLK3) 대신, 제어된 클록 신호(TCLK1)를 수신할 수 있다. 또는, S-Box(1355)는 제어된 클록 신호(TCLK1) 및 도 13의 제어 값(EC)에 기초하여 생성되는 활성화 신호(ACT3)를 수신할 수 있다. 본 발명의 실시 예들은 위 설명들에 의해 한정되지 않고, 일반 클록 신호 대신 활성화 신호 또는 제어된 클록 신호를 채용하기 위해 다양하게 변경 또는 수정될 수 있다.In some embodiments, the S-
도 21은 도 20의 초기화 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 21 is a timing diagram illustrating time sections of an example encryption/decryption operation performed in an encryption/decryption circuit including the initialization controller of FIG. 20.
예로서, 제 1 논리 값(예컨대, 논리 "0")을 갖는 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산이 저속 모드에서 수행됨을 지시할 수 있다. 예로서, 제 2 논리 값(예컨대, 논리 "1")을 갖는 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산이 고속 모드에서 수행됨을 지시할 수 있다. 다만, 본 발명은 이 예들에 의해 한정되지 않고, 저속 모드에 대응하는 논리 값과 고속 모드에 대응하는 논리 값은 서로 바뀔 수 있다.As an example, a control value (IEN) having a first logical value (e.g., logic “0”) may indicate that the encryption operation and/or decryption operation are performed in a low-speed mode. As an example, a control value (IEN) having a second logical value (e.g., logic “1”) may indicate that the encryption operation and/or decryption operation are performed in a high-speed mode. However, the present invention is not limited to these examples, and the logic value corresponding to the low-speed mode and the logic value corresponding to the high-speed mode may be interchanged.
제어 값(IEN)이 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(4350)는 저속 모드에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 저속 모드에서, 제어된 클록 신호(TCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 암호화/복호화 회로(4350)의 논리 게이트들은 초기화 구간에서 리셋될 수 있고, 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다.While the control value IEN has a logic value of “1”, the encryption/
제어 값(IEN)이 논리 "0"의 값을 갖는 동안, 암호화/복호화 회로(4350)는 고속 모드에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 고속 모드에서, 제어된 클록 신호(TCLK1)의 값은 논리 "1"의 값으로 유지될 수 있다. 따라서, 암호화/복호화 회로(4350)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있다. 따라서, 고속 모드에서, 연산 성능이 최대화될 수 있다.While the control value IEN has a value of logic “0”, the encryption/
도 22a 및 도 22b는 도 21의 타이밍도와 관련하여 도 20의 초기화 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.FIGS. 22A and 22B are block diagrams showing example configurations of the initialization controller of FIG. 20 in relation to the timing diagram of FIG. 21.
도 22a를 참조하면, 초기화 컨트롤러(4357)는 조합 논리 게이트(4357a)를 포함할 수 있다. 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)을 조합하여 제어된 클록 신호(TCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 22A, the
도 22a의 예에서, 제어 값(IEN)이 저속 모드를 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(4357a)는 클록 신호(CLK1)에 대응하는 제어된 클록 신호(TCLK1)를 생성할 수 있다. 반면, 제어 값(IEN)이 고속 모드를 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(4357a)는 논리 "1"의 값을 갖는 제어된 클록 신호(TCLK1)를 생성할 수 있다.In the example of FIG. 22A , when control value IEN indicates a low speed mode (e.g., has a value of logic “1”),
도 22b를 참조하면, 초기화 컨트롤러(4357)는 트랜지스터들(4357b, 4357c)을 포함할 수 있다. 트랜지스터(4357b)는 제어 값(IEN)의 반전 값(~IEN)에 응답하여 논리 "1"의 값을 제어된 클록 신호(TCLK1)로서 전달할 수 있다. 트랜지스터(4357c)는 제어 값(IEN)에 응답하여 클록 신호(CLK1)를 제어된 클록 신호(TCLK1)로서 전달할 수 있다.Referring to FIG. 22B, the
도 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”),
초기화 컨트롤러(4357)가 도 22a 또는 도 22b에 나타낸 구성을 채용하는 경우, 초기화 컨트롤러(4357)는 도 21을 참조하여 설명된 제어된 클록 신호(TCLK1)를 생성할 수 있다. 이러한 경우, 고속 모드에서, 암호화/복호화 회로(4350)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있다. 따라서, 고속 모드에서, 연산 성능이 최대화될 수 있다.If the
도 23은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 도 24는 도 23의 초기화 랜더마이저(Randomizer)의 예시적인 구성을 보여주는 블록도이다.FIG. 23 is a block diagram showing an example configuration included in the encryption/decryption circuit of FIG. 2. FIG. 24 is a block diagram showing an example configuration of the initialization randomizer of FIG. 23.
도 23을 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(5350)는 암호화 연산기(5352), 암호화/복호화 컨트롤러(5356), 및 초기화 랜더마이저(5357)를 포함할 수 있다. 도 24를 참조하면, 몇몇 실시 예에서, 초기화 랜더마이저(5357)는 랜덤 값 생성기(5357a) 및 조합 논리 게이트(5357b)를 포함할 수 있다.Referring to Figure 23, in some embodiments, the encryption/
암호화 연산기(5352) 및 암호화/복호화 컨트롤러(5356)의 구성들 및 동작들은 각각 도 2의 암호화 연산기(1352) 및 암호화/복호화 컨트롤러(1356)의 구성들 및 동작들을 포함할 수 있다. 도 23 및 도 24는 암호화/복호화 회로(5350)의 예시적인 구성을 보여줄 뿐이고, 암호화/복호화 회로(5350)는 도 2의 암호화/복호화 회로(1350)에 포함되는 구성 요소들을 더 포함할 수 있다. 설명의 편의를 위해, 암호화/복호화 회로(5350), 암호화 연산기(5352), 및 암호화/복호화 컨트롤러(5356)에 관한 중복되는 설명들은 이하 생략될 것이다.The configurations and operations of the
클록 신호(CLK1)가 규칙적으로 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 번갈아가며 갖는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점이 예측될 수 있다.When the clock signal CLK1 regularly alternates between a first logic value (e.g., logic “0”) and a second logic value (e.g., logic “1”), an initialization period and an operation period occur. The timing can be predicted.
한편, 초기화 구간이 랜덤하게 발생하거나 발생하지 않도록 제어되는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점을 예측하는 것이 어려울 수 있다. 이는, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 암호화 연산 및/또는 복호화 연산이 수행되는 연산 구간이 랜덤하게 가변(Variable)할 수 있기 때문이다.Meanwhile, when the initialization section is controlled to occur randomly or not, it may be difficult to predict when the initialization section occurs and when the calculation section occurs. This is because when the initialization section occurs randomly or does not occur, the operation section in which the encryption operation and/or decryption operation is performed may be randomly variable.
따라서, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 공격자는 공격자가 공격하고자 하는 암호화 연산 및/또는 복호화 연산이 시작되는 시점을 조절(Align)하기 어려울 수 있다. 결과적으로, 부 채널 분석 공격이 어려워질 수 있고, 보안 수준이 향상될 수 있다.Therefore, if the initialization section occurs randomly or does not occur, it may be difficult for an attacker to align the timing at which the encryption and/or decryption operation that the attacker wishes to attack begins. As a result, side-channel analysis attacks can become difficult and the security level can be improved.
도 23을 참조하면, 초기화 랜더마이저(5357)는 클록 신호(CLK1)를 수신할 수 있다. 클록 신호(CLK1)는 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 규칙적으로 번갈아가며 갖는 일반 클록 신호일 수 있다.Referring to FIG. 23, the
초기화 랜더마이저(5357)는 클록 신호(CLK1)에 기초하여, 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다. 랜덤화된 클록 신호(RCLK1)는 논리 "0"의 값 및 논리 "1"의 값을 규칙적으로 번갈아가며 갖는 대신, 논리 "0"의 값을 랜덤하게 갖거나 갖지 않을 수 있다.The
도 24를 참조하면, 랜덤 값 생성기(5357a)는 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 생성할 수 있다. 랜덤 값 생성기(5357a)는 다양한 랜덤화 알고리즘 및 시뮬레이션 기법 중 하나 이상을 채용하여 동작할 수 있다. 랜덤화 알고리즘들 및 시뮬레이션 기법들은 통상의 기술자에 의해 잘 이해될 수 있으므로, 시드(Seed) 값에 기초하여 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 생성하는 방법에 관한 자세한 설명들은 이하 생략될 것이다.Referring to FIG. 24, the
조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)를 수신할 수 있다. 랜덤 값은 랜덤 값 생성기(5357a)로부터 제공될 수 있다. 랜덤 값은 논리 "0"의 값 및 논리 "1"의 값 중 하나를 랜덤하게 가질 수 있다.The
조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 기초하여, 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다. 이를 위해, 조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 대해 논리 연산을 수행할 수 있다. 예로서, 조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 대해 논리 합 연산을 수행할 수 있고, 이로써 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다.The
도 23을 참조하면, 암호화 연산기(5352)는 클록 신호(CLK1)를 직접 수신하는 대신, 랜덤화된 클록 신호(RCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(5352)는 랜덤화된 클록 신호(RCLK1)에 기초하여 암호화 연산을 수행할 수 있다.Referring to FIG. 23, the
예로서, 랜덤 값 생성기(5357a)가 논리 "0"의 값을 갖는 랜덤 값을 생성하는 경우, 랜덤화된 클록 신호(RCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.As an example, when the
반면, 랜덤 값 생성기(5357a)가 논리 "1"의 값을 갖는 랜덤 값을 생성하는 경우, 랜덤화된 클록 신호(RCLK1)는 클록 신호(CLK1)에 관계없이, 논리 "1"의 값을 가질 수 있다. 따라서, 초기화 구간이 발생하지 않을 수 있고, 연산 구간만이 발생할 수 있다.On the other hand, when the
이러한 방식으로, 랜덤 값이 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 갖는 경우, 초기화 구간이 랜덤하게 발생하거나 발생하지 않을 수 있다. 초기화 구간의 발생이 랜덤화되는 경우, 암호화 연산 및/또는 복호화 연산이 시작되는 시점이 식별되기 어려울 수 있다. 따라서, 보안 수준이 향상될 수 있다. 랜덤 값의 랜덤화 수준을 증가시키기 위해, 랜덤 값을 생성하기 위해 이용되는 시드 값이 프로그램 가능하거나 가변할 수 있다.In this way, if the random value randomly has a value of logic “0” and a value of logic “1”, the initialization interval may or may not occur randomly. If the occurrence of the initialization section is randomized, it may be difficult to identify the point in time when the encryption operation and/or decryption operation begins. Therefore, the security level can be improved. To increase the level of randomization of the random values, the seed value used to generate the random values can be programmable or variable.
몇몇 실시 예에서, 초기화 랜더마이저(5357)의 일부 또는 전부는 암호화/복호화 컨트롤러(5356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 초기화 랜더마이저(5357)의 일부 또는 전부는 암호화/복호화 회로(5350) 외부에 제공될 수 있다. 초기화 랜더마이저(5357)는 클록 신호와 랜덤 값을 조합하기 위해 다양한 구성을 포함할 수 있다. 도 23 및 도 24의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(5350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the
몇몇 실시 예에서, 암호화/복호화 회로(5350)는 도 7의 구간 컨트롤러(2357)와 함께 초기화 랜더마이저(5357)를 채용할 수 있다. 예로서, 구간 컨트롤러(2357)는 클록 신호(CLK1) 대신, 초기화 랜더마이저(5357)로부터 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 이 예에서, 구간 컨트롤러(2357)는 제어 값(EC)(및/또는 제어 값(EC)의 반전 값(~EC)) 및 랜덤화된 클록 신호(RCLK1)에 기초하여 활성화 신호(ACT1)를 생성할 수 있다.In some embodiments, the encryption/
몇몇 실시 예에서, 암호화/복호화 회로(5350)는 도 15의 클록 컨트롤러(3357)와 함께 초기화 랜더마이저(5357)를 채용할 수 있다. 몇몇 실시 예에서, 암호화/복호화 회로(5350)는 도 20의 초기화 컨트롤러(4357)와 함께 초기화 랜더마이저(5357)를 채용할 수 있다. 예로서, 클록 컨트롤러(3357) 및 초기화 컨트롤러(4357) 각각은 클록 신호(CLK1) 대신, 초기화 랜더마이저(5357)로부터 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다.In some embodiments, the encryption/
도 23은 랜덤화된 클록 신호(RCLK1)가 암호화 연산기(5352)로 제공되는 것을 보여준다. 몇몇 실시 예에서, 도 2의 복호화 연산기(1353)는 클록 신호(CLK2) 대신, 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 또는, 복호화 연산기(1353)는 랜덤화된 클록 신호(RCLK1) 및 도 12의 제어 값(DC)에 기초하여 생성되는 활성화 신호(ACT2)를 수신할 수 있다.Figure 23 shows that the randomized clock signal (RCLK1) is provided to the
몇몇 실시 예에서, 도 2의 S-Box(1355)는 클록 신호(CLK3) 대신, 랜덤화된 클록 신호(RCLK1)를 수신할 수 있다. 또는, S-Box(1355)는 랜덤화된 클록 신호(RCLK1) 및 도 13의 제어 값(EC)에 기초하여 생성되는 활성화 신호(ACT3)를 수신할 수 있다. 본 발명의 실시 예들은 위 설명들에 의해 한정되지 않고, 일반 클록 신호 대신 활성화 신호 또는 랜덤화된 클록 신호를 채용하기 위해 다양하게 변경 또는 수정될 수 있다.In some embodiments, the S-
위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.The contents described above are specific examples for implementing the technical idea of the present invention. The technical idea of the present invention will include not only the embodiments described above, but also embodiments that can be obtained by simply changing the design or easily changing the design. In addition, the technical idea of the present invention will include technologies that can be easily modified and implemented in the future based on the embodiments described above.
1000 : 컴퓨팅 장치 1700 : 버스
2350, 3350, 4350, 5350 : 암호화/복호화 회로1000: computing device 1700: bus
2350, 3350, 4350, 5350: Encryption/decryption circuit
Claims (20)
상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되는지를 나타내는 제어 값에 기초하여, 상기 암호화 연산기를 제어하는 컨트롤러를 포함하되,
상기 컨트롤러는,
제 1 논리 값을 가지는 클록 신호에 기초하여, 상기 암호화 연산기가 제 1 모드에서 동작하도록 제어하고,
제 2 논리 값을 가지는 상기 클록 신호에 기초하여, 상기 암호화 연산기가 제 2 모드에서 동작하도록 제어하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하는 것에 기초하여, 상기 복수의 논리 게이트들로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지되도록, 상기 클록 신호에 기초한 교번 없이 상기 암호화 연산기가 상기 제 1 모드에서 동작하도록 제어하고,
상기 제 1 모드에서, 상기 복수의 논리 게이트들 각각은 상기 제 1 논리 값을 출력하고,
상기 제 2 모드에서, 상기 복수의 논리 게이트들 중, 각각이 상기 제 1 논리 값을 출력하는 제 1 논리 게이트들의 개수와 상기 복수의 논리 게이트들 중, 각각이 상기 제 2 논리 값을 출력하는 제 2 논리 게이트들의 개수는 일정하게 유지되는 전자 회로.An encryption operator including a plurality of logic gates that perform encryption or decryption of input data; and
A controller that controls the encryption operator based on a control value indicating whether the encryption or decryption of the input data is performed,
The controller is,
Based on a clock signal having a first logical value, controlling the encryption operator to operate in a first mode,
Based on the clock signal having a second logic value, controlling the encryption operator to operate in a second mode,
Based on the control value indicating that the encryption or decryption of the input data is not performed, the outputs from the plurality of logic gates are not changed and the amount of power consumed by the plurality of logic gates is not changed. Controlling the cryptographic operator to operate in the first mode without alternating based on the clock signal so that this is maintained constant,
In the first mode, each of the plurality of logic gates outputs the first logic value,
In the second mode, the number of first logic gates, each of which outputs the first logic value, among the plurality of logic gates, and the number of first logic gates, each of which outputs the second logic value, among the plurality of logic gates 2 An electronic circuit in which the number of logic gates is kept constant.
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하는 경우, 상기 암호화 연산기가 상기 제 1 모드 및 상기 제 2 모드를 번갈아가며 동작하도록 제어하는 전자 회로.The method of claim 1, wherein the controller:
An electronic circuit that controls the encryption operator to operate alternately in the first mode and the second mode when the control value indicates that the encryption or decryption of the input data is performed.
상기 컨트롤러는 외부 장치로부터의 요청에 응답하여 상기 제어 값을 저장하는 레지스터를 포함하는 전자 회로.According to claim 1,
The controller is an electronic circuit including a register that stores the control value in response to a request from an external device.
상기 암호화 또는 상기 복호화가 수행될 데이터를 저장하는 버퍼를 더 포함하는 전자 회로.According to claim 1,
An electronic circuit further comprising a buffer for storing data on which the encryption or decryption is to be performed.
상기 버퍼에 저장된 상기 입력 데이터가 상기 암호화 또는 상기 복호화의 연산 단위 크기를 갖지 않는 경우, 상기 제어 값이 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하도록 설정하고,
상기 버퍼에 저장된 상기 입력 데이터가 상기 연산 단위 크기를 갖는 경우, 상기 제어 값이 상기 암호화 또는 상기 복호화가 수행됨을 지시하도록 설정하는 전자 회로.The method of claim 5, wherein the controller:
If the input data stored in the buffer does not have the operation unit size of the encryption or decryption, the control value is set to indicate that the encryption or decryption is not performed,
An electronic circuit that sets the control value to indicate that the encryption or decryption is performed when the input data stored in the buffer has the operation unit size.
상기 컨트롤러는 상기 암호화 또는 상기 복호화의 반복 횟수에 관한 라운드(Round) 값을 관리하는 전자 회로.According to claim 1,
The controller is an electronic circuit that manages a round value related to the number of repetitions of the encryption or decryption.
상기 라운드 값이 0에 대응하는 경우, 상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하도록 설정하고,
상기 라운드 값이 0에 대응하지 않는 경우, 상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하도록 설정하는 전자 회로.The method of claim 7, wherein the controller:
If the round value corresponds to 0, set the control value to indicate that the encryption or decryption of the input data is not performed,
If the round value does not correspond to 0, the control value is set to indicate that the encryption or decryption of the input data is performed.
상기 암호화 연산기에 의해 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되는지를 지시하는 제어 값을 출력하는 암호화 컨트롤러; 및
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하는 것에 기초하여, 클록 신호에 기초한 교번 없이 비활성화 값을 가지는 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 상기 비활성화 값을 가지는 것에 기초하여, 상기 비활성화 값을 가지는 상기 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 활성화 값을 가지는 것에 기초하여, 상기 활성화 값을 가지는 상기 활성화 신호를 출력하는 구간 컨트롤러를 포함하되,
상기 암호화 연산기는,
상기 활성화 신호가 상기 비활성화 값을 가지는 것에 기초하여, 제 1 모드에서 동작하고,
상기 활성화 신호가 상기 활성화 값을 가지는 것에 기초하여, 제 2 모드에서 동작하고,
상기 제 1 모드에서, 상기 복수의 논리 게이트들로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지되도록, 상기 복수의 논리 게이트들 각각은 상기 비활성화 값을 출력하고,
상기 제 2 모드에서, 상기 복수의 논리 게이트들 중, 각각이 상기 비활성화 값을 출력하는 제 1 논리 게이트들의 개수와 상기 복수의 논리 게이트들 중, 각각이 상기 활성화 값을 출력하는 제 2 논리 게이트들의 개수는 일정하게 유지되는 전자 회로.An encryption operator including a plurality of logic gates that perform encryption or decryption of input data;
an encryption controller outputting a control value indicating whether the encryption or decryption of the input data is performed by the encryption operator; and
Based on the control value indicating that the encryption or decryption of the input data is not performed, outputting an activation signal with a deactivation value without alternating based on a clock signal,
wherein the control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having the deactivation value, outputting the activation signal with the deactivation value;
The control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having an activation value, a section controller outputs the activation signal having the activation value,
The encryption operator is,
operating in a first mode based on the activation signal having the deactivation value;
Based on the activation signal having the activation value, operating in a second mode,
In the first mode, each of the plurality of logic gates sets the deactivation value so that outputs from the plurality of logic gates do not change and the amount of power consumed by the plurality of logic gates remains constant. Print it out,
In the second mode, the number of first logic gates, each of which outputs the deactivation value, among the plurality of logic gates, and the number of second logic gates, each of which outputs the activation value, among the plurality of logic gates An electronic circuit whose number remains constant.
조합 논리 게이트를 포함하고,
상기 제어 값 및 상기 클록 신호를 조합하여, 상기 활성화 신호를 생성하는 전자 회로.The method of claim 9, wherein the section controller:
comprising a combinational logic gate,
An electronic circuit that generates the activation signal by combining the control value and the clock signal.
상기 데이터 입력/출력 장치를 위해 입력 데이터의 암호화 또는 복호화를 수행하는 복수의 논리 게이트들을 포함하는 암호화 연산기를 포함하는 암호화/복호화 회로; 및
제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행되지 않음을 지시하는 것에 기초하여, 클록 신호에 기초한 교번 없이 활성화 값을 가지는 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 비활성화 값을 가지는 것에 기초하여, 상기 비활성화 값을 가지는 상기 활성화 신호를 출력하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 수행됨을 지시하고, 그리고 상기 클록 신호가 상기 활성화 값을 가지는 것에 기초하여, 상기 활성화 값을 가지는 상기 활성화 신호를 출력하는 구간 컨트롤러를 포함하되,
상기 암호화 연산기는,
상기 활성화 신호가 상기 비활성화 값을 가지는 것에 기초하여, 상기 복수의 논리 게이트들로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지되도록, 제 1 모드에서 동작하고,
상기 활성화 신호가 상기 활성화 값을 가지는 것에 기초하여, 제 2 모드에서 동작하고,
상기 제 1 모드에서, 상기 복수의 논리 게이트들 각각은 상기 비활성화 값을 출력하고,
상기 제 2 모드에서, 상기 복수의 논리 게이트들 중, 각각이 상기 비활성화 값을 출력하는 제 1 논리 게이트들의 개수와 상기 복수의 논리 게이트들 중, 각각이 상기 활성화 값을 출력하는 제 2 논리 게이트들의 개수는 일정하게 유지되는 전자 장치.data input/output devices;
an encryption/decryption circuit including an encryption operator including a plurality of logic gates that perform encryption or decryption of input data for the data input/output device; and
Based on a control value indicating that the encryption or decryption of the input data is not performed, output an activation signal having an activation value without alternation based on a clock signal,
wherein the control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having a deactivation value, outputting the activation signal with the deactivation value;
The control value indicates that the encryption or decryption of the input data is performed, and based on the clock signal having the activation value, a section controller outputs the activation signal having the activation value,
The encryption operator is,
Operating in a first mode such that, based on the activation signal having the deactivation value, outputs from the plurality of logic gates do not change and the amount of power consumed by the plurality of logic gates remains constant. do,
Based on the activation signal having the activation value, operating in a second mode,
In the first mode, each of the plurality of logic gates outputs the deactivation value,
In the second mode, the number of first logic gates, each of which outputs the deactivation value, among the plurality of logic gates, and the number of second logic gates, each of which outputs the activation value, among the plurality of logic gates Electronic devices whose number remains constant.
상기 클록 신호가 상기 비활성화 값을 갖는 시간 구간의 길이는 상기 클록 신호가 상기 활성화 값을 갖는 시간 구간의 길이보다 짧은 전자 장치.According to claim 16,
The length of the time section in which the clock signal has the deactivation value is shorter than the length of the time section in which the clock signal has the activation value.
상기 제어 값은 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 저속 모드 또는 고속 모드에서 수행되는지 여부를 더 지시하고,
상기 전자 장치는, 초기화 컨트롤러를 더 포함하고,
상기 초기화 컨트롤러는,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 상기 저속 모드에서 수행됨을 지시하는 경우, 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 상기 클록 신호를 생성하고,
상기 제어 값이 상기 입력 데이터의 상기 암호화 또는 상기 복호화가 상기 고속 모드에서 수행됨을 지시하는 경우, 상기 활성화 값을 유지하는 상기 클록 신호를 생성하는 전자 장치.According to claim 16,
The control value further indicates whether the encryption or decryption of the input data is performed in low-speed mode or high-speed mode,
The electronic device further includes an initialization controller,
The initialization controller is,
When the control value indicates that the encryption or decryption of the input data is performed in the slow mode, generate the clock signal to alternately have the deactivation value and the activation value, and
An electronic device that generates the clock signal to maintain the activation value when the control value indicates that the encryption or decryption of the input data is performed in the high-speed mode.
상기 비활성화 값 및 상기 활성화 값 중 하나를 랜덤(Random)하게 갖는 랜덤 값, 및 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 일반 클록 신호에 기초하여, 상기 클록 신호를 생성하도록 구성되는 초기화 랜더마이저(Randomizer)를 더 포함하는 전자 장치.According to claim 16,
An initialization randomizer ( An electronic device further comprising a randomizer.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/488,639 US10891396B2 (en) | 2016-05-27 | 2017-04-17 | Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same |
EP17167183.7A EP3249633A1 (en) | 2016-05-27 | 2017-04-20 | Electronic circuit performing encryption/decryption operation to prevent side-channel analysis attack, and electronic device including the same |
CN201710346062.1A CN107437988B (en) | 2016-05-27 | 2017-05-17 | Electronic circuit for preventing side channel analysis attack and electronic device comprising same |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20160065955 | 2016-05-27 | ||
KR1020160065955 | 2016-05-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170134946A KR20170134946A (en) | 2017-12-07 |
KR102627585B1 true KR102627585B1 (en) | 2024-01-25 |
Family
ID=60920633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160098292A KR102627585B1 (en) | 2016-05-27 | 2016-08-02 | Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102627585B1 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030169073A1 (en) * | 2002-03-06 | 2003-09-11 | Kabushiki Kaisha Toshiba | Logic circuitry-implemented bus buffer |
US20040070419A1 (en) * | 2002-10-10 | 2004-04-15 | Masashi Hirano | Semiconductor integrated circuit |
US20080265968A1 (en) * | 2007-04-26 | 2008-10-30 | Shuji Furuichi | Clock frequency diffusing device |
US20100107025A1 (en) * | 2007-02-16 | 2010-04-29 | Freescale Semiconductor, Inc | System, computer program product and method for testing a logic circuit |
US20130238931A1 (en) * | 2011-12-02 | 2013-09-12 | Toshihiro Suzuki | Nonvolatile semiconductor storage device having encrypting arithmetic device |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708273B1 (en) * | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
KR102068653B1 (en) * | 2013-03-13 | 2020-01-21 | 삼성전자주식회사 | Internal voltage generator and contactless IC card including the same |
KR101702387B1 (en) * | 2013-08-02 | 2017-02-03 | 주식회사 르코어테크놀러지 | Driving Circuit For Light Emitting Diode and Method for Driving the LED |
-
2016
- 2016-08-02 KR KR1020160098292A patent/KR102627585B1/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030169073A1 (en) * | 2002-03-06 | 2003-09-11 | Kabushiki Kaisha Toshiba | Logic circuitry-implemented bus buffer |
US20040070419A1 (en) * | 2002-10-10 | 2004-04-15 | Masashi Hirano | Semiconductor integrated circuit |
US20100107025A1 (en) * | 2007-02-16 | 2010-04-29 | Freescale Semiconductor, Inc | System, computer program product and method for testing a logic circuit |
US20080265968A1 (en) * | 2007-04-26 | 2008-10-30 | Shuji Furuichi | Clock frequency diffusing device |
US20130238931A1 (en) * | 2011-12-02 | 2013-09-12 | Toshihiro Suzuki | Nonvolatile semiconductor storage device having encrypting arithmetic device |
Also Published As
Publication number | Publication date |
---|---|
KR20170134946A (en) | 2017-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10291390B2 (en) | Endecryptor preventing side channel attack, driving method thereof and control device having the same | |
US11856116B2 (en) | Method and apparatus for protecting embedded software | |
KR20220028132A (en) | Cryptographic Architectures for Cryptographic Permutations | |
US8745411B2 (en) | Protecting external volatile memories using low latency encryption/decryption | |
KR102628010B1 (en) | Encryption circuit for virtual encryption operation | |
US20150089245A1 (en) | Data storage in persistent memory | |
CN107437988B (en) | Electronic circuit for preventing side channel analysis attack and electronic device comprising same | |
KR20110129932A (en) | Key recovery mechanism for cryptographic systems | |
US11115181B2 (en) | Memory device, host device, and memory system | |
US11863670B2 (en) | Efficient side-channel-attack-resistant memory encryptor based on key update | |
Liu et al. | An energy-efficient encryption mechanism for NVM-based main memory in mobile systems | |
US8379850B1 (en) | Method and integrated circuit for secure encryption and decryption | |
KR101757560B1 (en) | Method and apparatus for encrypting hybrid memory using access pattern within non-volatile memory | |
KR20150091691A (en) | CRT-RSA encryption method and apparatus and computer readable storage medium therefore | |
KR102627585B1 (en) | Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same | |
KR20180059217A (en) | Apparatus and method for secure processing of memory data | |
US20130198528A1 (en) | Modifying a Length of an Element to Form an Encryption Key | |
JP2023542936A (en) | Metadata tweak for channel encryption differentiation | |
TWI845059B (en) | Integrated circuit and method of performing secure cryptographic operations | |
JP6473874B2 (en) | Memory device, host device, and memory system | |
JP6516610B2 (en) | Memory device, host device, and memory system | |
JP2009075474A (en) | Cryptography processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |