KR20170134946A - Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same - Google Patents
Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same Download PDFInfo
- Publication number
- KR20170134946A KR20170134946A KR1020160098292A KR20160098292A KR20170134946A KR 20170134946 A KR20170134946 A KR 20170134946A KR 1020160098292 A KR1020160098292 A KR 1020160098292A KR 20160098292 A KR20160098292 A KR 20160098292A KR 20170134946 A KR20170134946 A KR 20170134946A
- Authority
- KR
- South Korea
- Prior art keywords
- encryption
- value
- logic
- clock signal
- decryption
- Prior art date
Links
- 238000004458 analytical method Methods 0.000 title description 11
- 230000004913 activation Effects 0.000 claims description 95
- 230000004044 response Effects 0.000 claims description 42
- 238000000034 method Methods 0.000 claims description 23
- 230000009849 deactivation Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 8
- 230000002779 inactivation Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 49
- 230000015654 memory Effects 0.000 description 43
- 102100026620 E3 ubiquitin ligase TRAF3IP2 Human genes 0.000 description 31
- 101710140859 E3 ubiquitin ligase TRAF3IP2 Proteins 0.000 description 31
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 14
- 102100040856 Dual specificity protein kinase CLK3 Human genes 0.000 description 14
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 14
- 101000749304 Homo sapiens Dual specificity protein kinase CLK3 Proteins 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 11
- 101000908384 Bos taurus Dipeptidyl peptidase 4 Proteins 0.000 description 10
- 102100031102 C-C motif chemokine 4 Human genes 0.000 description 10
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 10
- 101000777470 Mus musculus C-C motif chemokine 4 Proteins 0.000 description 10
- 238000004891 communication Methods 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
- 238000012546 transfer Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification 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
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
Description
본 발명은 전자 회로 및 전자 장치에 관한 것으로, 좀 더 구체적으로는 암호화(Encryption)/복호화(Decryption) 연산을 수행하는 전자 회로 및 전자 장치의 구성들 및 동작들에 관한 것이다.BACKGROUND OF THE
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 하나 이상의 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 전자 회로의 동작은 전자적인 형태의 데이터가 전자 회로로 입력되거나 전자 회로로부터 출력됨에 따라 수행된다.Various types of electronic devices have been used in recent years. The electronic device performs its functions according to the operations of the one or more electronic circuits included therein. The operation of the electronic circuit is performed as the electronic form of data is input to or output from the electronic circuit.
입력 또는 출력되는 데이터는 전자 장치 외부의 개체(Entity)에 노출될 수 있다. 예로서, 전자 장치에 대한 공격자(예컨대, 해커(Hacker))는 전자 장치로 입력되는 데이터를 조작(Manipulate)하여, 전자 장치의 제어 권한을 획득할 수 있다. 예로서, 공격자는 전자 장치로부터 출력되는 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 이러한 예들에서, 전자 장치 및 전자 회로의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.The input or output data may be exposed to an entity outside the electronic device. As an example, an attacker (e.g., a hacker) with respect to an electronic device may manipulate data input to the electronic device to obtain control of the electronic device. By way of example, an attacker may manipulate data output from an electronic device to arbitrarily change data or impair the security attributes of the data. In these instances, the security levels and reliability of the electronic device and the electronic circuit can be significantly degraded.
이러한 이유에 기인하여, 전자 장치는 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화/복호화 연산은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, the electronic device may include encryption / decryption circuitry for encrypting the input or output data and for decrypting the encrypted data. The encryption / decryption circuit can encrypt / decrypt data according to an encryption / decryption algorithm using a key. If the key is not known, it can be difficult for the attacker to determine the key based solely on the input / output data, and thus it may be difficult for the attacker to determine the original version of the encrypted data. Therefore, encryption / decryption operations can improve the security level and reliability of electronic devices and electronic circuits.
그러나, 몇몇 암호화/복호화 회로는 여전히 공격자에 의해 공격될 수 있다. 공격자는, 입력 또는 출력되는 데이터를 직접 조작하는 대신, "부 채널 분석 공격(Side-channel Analysis Attack)"을 행할(Conduct) 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.However, some encryption / decryption circuits may still be attacked by attackers. The attacker may conduct a "Side-channel Analysis Attack" instead of directly manipulating input or output data. In a subchannel analysis attack, an attacker can collect incidental information such as the amount of power consumed by the encryption / decryption circuit, the waveform of the electromagnetic wave generated by the encryption / decryption circuit, and the like. The attacker may attack the encryption / decryption circuit to determine the key used in the encryption / decryption circuit based on the collected information.
본 발명의 실시 예들은 부 채널 분석 공격을 방지하기 위한 암호화 연산 및/또는 복호화 연산을 수행하는 전자 회로 및 전자 장치의 구성들 및 동작들을 제공할 수 있다. 본 발명의 실시 예들에 따른 전자 회로 및 전자 장치는 암호화 연산 및/또는 복호화 연산을 수행하기 위해 필요한 클록 신호를 적응적으로(Adaptive) 이용할 수 있다.Embodiments of the present invention may provide configurations and operations of electronic circuitry and electronic devices that perform cryptographic computation and / or decryption operations to prevent subchannel analysis attacks. The electronic circuit and the electronic device according to the embodiments of the present invention may adaptively use a clock signal necessary for performing cryptographic operation and / or decryption operation.
본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 이용하여 암호화 및 복호화 연산들 중 적어도 하나를 수행할 수 있다. 컨트롤러는 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어할 수 있다. 제어 값이 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 복수의 논리 게이트는 컨트롤러의 제어에 따라 제 1 시간 구간 및 제 2 시간 구간 중 하나에서 동작할 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption calculator and a controller. The encryption operator may perform at least one of encryption and decryption operations using a plurality of logic gates. Wherein the controller is configured to output a first logic value for each of the plurality of logic gates during a first time interval and a plurality of logic gates for a second time interval during a second time interval based on a control value associated with performing at least one of encryption and decryption operations and a clock signal, The operation of the encryption calculator can be controlled such that the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value in the logic gates are kept constant. If the control value indicates that at least one of the encryption and decryption operations is not performed, the plurality of logic gates may operate in one of the first time interval and the second time interval under the control of the controller.
본 발명의 실시 예에 따른 전자 회로는 암호화 연산기, 암호화 컨트롤러, 및 구간 컨트롤러를 포함할 수 있다. 암호화 연산기는 복수의 논리 게이트를 포함할 수 있다. 암호화 컨트롤러는 암호화 연산기에 의한 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값을 출력할 수 있다. 구간 컨트롤러는 제어 값 및 클록 신호에 기초하여 활성화 신호를 생성할 수 있다. 제 1 시간 구간 동안, 복수의 논리 게이트 각각은 활성화 신호의 비활성화 값에 응답하여 제 1 논리 값을 출력할 수 있다. 제 2 시간 구간 동안, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 활성화 신호의 활성화 값에 응답하여 일정하게 유지될 수 있다.The electronic circuit according to the embodiment of the present invention may include an encryption calculator, an encryption controller, and a section controller. The encryption operator may include a plurality of logic gates. The encryption controller can output a control value associated with the execution of at least one of encryption and decryption operations by the encryption operator. The interval controller can generate an activation signal based on the control value and the clock signal. During the first time interval, each of the plurality of logic gates may output a first logic value in response to an inactivation value of the activation signal. During the second time interval, the number of logic gates outputting the first logic value among the plurality of logic gates and the number of logic gates outputting the second logic value may remain constant in response to the activation value of the activation signal.
본 발명의 실시 예에 따른 전자 장치는 데이터 입력/출력 장치, 암호화/복호화 회로, 및 구간 컨트롤러를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 구간 컨트롤러는 암호화 및 복호화 연산들이 수행되는지 여부를 지시하는 제어 값, 및 클록 신호에 기초하여, 활성화 신호를 생성할 수 있다. 제어 값이 암호화 및 복호화 연산들이 수행되지 않음을 지시하는 경우, 비활성화 값 및 활성화 값 중 하나를 갖는 활성화 신호에 응답하여, 암호화/복호화 회로로부터의 출력들이 변경되지 않고 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다.An electronic device according to an embodiment of the present invention may include a data input / output device, an encryption / decryption circuit, and an interval controller. The encryption / decryption circuit may perform encryption and decryption operations for the data input / output device. The interval controller may generate an activation signal based on a clock signal and a control value indicating whether encryption and decryption operations are performed. When the control value indicates that the encryption and decryption operations are not performed, in response to the activation signal having one of the deactivation value and the activation value, the outputs from the encryption / decryption circuit are not changed and consumed by the encryption / decryption circuit The amount of power can be kept constant.
본 발명의 실시 예에 따른 전자 회로는 암호화 연산기 및 컨트롤러를 포함할 수 있다. 암호화 연산기는 클록 신호에 기초하여 동작하는 복수의 논리 게이트를 포함할 수 있다. 컨트롤러는, 클록 신호의 제 1 논리 값에 응답하여 복수의 논리 게이트로부터의 출력 값들이 변경되지 않고 클록 신호의 제 2 논리 값에 응답하여 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 암호화 연산기의 동작을 제어할 수 있다. 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이보다 짧을 수 있다.An electronic circuit according to an embodiment of the present invention may include an encryption calculator and a controller. The encryption operator may include a plurality of logic gates that operate based on the clock signal. The controller is responsive to the first logic value of the clock signal to cause the output values from the plurality of logic gates to be unchanged and in response to the second logic value of the clock signal, The number of logic gates and the number of logic gates outputting the second logic value are held constant. The length of the first time interval in which the clock signal has the first logic value may be shorter than the length of the second time interval in which the clock signal has the second logic value.
본 발명의 실시 예에 따른 전자 회로는 클록 컨트롤러 및 암호화 연산기를 포함할 수 있다. 클록 컨트롤러는 제 1 클록 신호에 기초하여 제 2 클록 신호를 생성할 수 있다. 암호화 연산기는 제 2 클록 신호에 기초하여 동작하는 복수의 논리 게이트를 포함할 수 있다. 제 1 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 제 1 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이와 동일할 수 있다. 제 2 클록 신호가 제 1 논리 값을 갖는 제 3 시간 구간의 길이는 제 2 클록 신호가 제 2 논리 값을 갖는 제 4 시간 구간의 길이보다 짧을 수 있다. 제 2 클록 신호의 제 1 논리 값에 응답하여, 복수의 논리 게이트로부터의 출력 값들이 변경되지 않을 수 있다. 제 2 클록 신호의 제 2 논리 값에 응답하여, 복수의 논리 게이트 중에서 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있다.An electronic circuit according to an embodiment of the present invention may include a clock controller and an encryption calculator. The clock controller may generate a second clock signal based on the first clock signal. The encryption operator may include a plurality of logic gates that operate based on the second clock signal. The length of the first time interval in which the first clock signal has the first logic value may be equal to the length of the second time interval in which the first clock signal has the second logic value. The length of the third time interval in which the second clock signal has the first logic value may be shorter than the length of the fourth time interval in which the second clock signal has the second logic value. In response to the first logic value of the second clock signal, the output values from the plurality of logic gates may not change. In response to the second logic value of the second clock signal, the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the plurality of logic gates may be maintained constant.
본 발명의 실시 예에 따른 전자 장치는 데이터 입력/출력 장치, 클록 컨트롤러, 및 암호화/복호화 회로를 포함할 수 있다. 클록 컨트롤러는 클록 신호를 생성할 수 있다. 암호화/복호화 회로는 클록 신호에 기초하여, 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 클록 신호가 제 1 논리 값을 갖는 제 1 시간 구간의 길이는 클록 신호가 제 2 논리 값을 갖는 제 2 시간 구간의 길이보다 짧을 수 있다. 클록 신호의 제 1 논리 값에 응답하여, 암호화/복호화 회로로부터의 출력 값들이 변경되지 않을 수 있다. 클록 신호의 제 2 논리 값에 응답하여, 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다.An electronic device according to an embodiment of the present invention may include a data input / output device, a clock controller, and an encryption / decryption circuit. The clock controller can generate a clock signal. The encryption / decryption circuit may perform encryption and decryption operations for the data input / output device based on the clock signal. The length of the first time interval in which the clock signal has the first logic value may be shorter than the length of the second time interval in which the clock signal has the second logic value. In response to the first logical value of the clock signal, the output values from the encryption / decryption circuit may not change. In response to the second logical value of the clock signal, the amount of power consumed by the encryption / decryption circuit can be kept constant.
본 발명의 실시 예들에 따르면, 암호화/복호화 회로에 의해 소모되는 전력의 양이 감소할 수 있다. 나아가, 암호화/복호화 회로의 연산 성능 및 보안 수준이 향상될 수 있다.According to embodiments of the present invention, the amount of power consumed by the encryption / decryption circuit can be reduced. Furthermore, the operation performance and security level of the encryption / decryption circuit can be improved.
도 1은 본 발명의 실시 예들에 따른 암호화/복호화 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다.
도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.
도 4는 도 2의 암호화/복호화 회로에 포함되는 예시적인 논리 회로를 보여주는 블록도이다.
도 5는 도 4의 논리 회로의 동작을 설명하기 위한 표이다.
도 6은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 8은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 9a 및 도 9b는 도 8의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 10은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 11a 및 도 11b는 도 10의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 12는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 13은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 14는 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 16은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 17은 도 16의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 18은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 19는 도 18의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 21은 도 20의 초기화 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.
도 22a 및 도 22b는 도 21의 타이밍도와 관련하여 도 20의 초기화 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.
도 23은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다.
도 24는 도 23의 초기화 랜더마이저(Randomizer)의 예시적인 구성을 보여주는 블록도이다.1 is a block diagram illustrating a computing device including electronic devices employing encryption / decryption circuits in accordance with embodiments of the present invention.
2 is a block diagram illustrating an exemplary configuration of the encryption / decryption circuit of FIG.
3 is a flow chart illustrating an exemplary encryption operation performed in the encryption / decryption circuit of FIG. 2;
4 is a block diagram illustrating an exemplary logic circuit included in the encryption / decryption circuit of FIG.
5 is a table for explaining the operation of the logic circuit of FIG.
FIG. 6 is a timing diagram illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 2. FIG.
7 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG.
FIG. 8 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the interval controller of FIG. 7. FIG.
Figs. 9A and 9B are block diagrams showing exemplary configurations of the section controller of Fig. 7 with respect to the timing diagram of Fig.
FIG. 10 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the interval controller of FIG. 7. FIG.
Figs. 11A and 11B are block diagrams showing exemplary configurations of the section controller of Fig. 7 with respect to the timing diagram of Fig.
12 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG.
FIG. 13 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG. 2; FIG.
FIG. 14 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 2; FIG.
15 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG.
16 is a block diagram illustrating an exemplary configuration of the clock controller of FIG.
FIG. 17 is a timing diagram illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 15 including the clock controller of FIG. 16;
18 is a block diagram illustrating an exemplary configuration of the clock controller of FIG.
19 is a timing diagram for illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 15 including the clock controller of FIG. 18;
Fig. 20 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of Fig. 2; Fig.
FIG. 21 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the initialization controller of FIG. 20; FIG.
FIGS. 22A and 22B are block diagrams showing exemplary configurations of the initialization controller of FIG. 20 with respect to the timing diagram of FIG.
23 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of Fig.
FIG. 24 is a block diagram showing an exemplary configuration of the initialization randomizer of FIG. 23. FIG.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Reference will now be made in detail to the present embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. Will be explained.
도 1은 본 발명의 실시 예들에 따른 암호화(Encryption)/복호화(Decryption) 회로들을 채용한 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 몇몇 실시 예에서, 컴퓨팅 장치(1000)는 프로세서 장치(1100), 워킹 메모리(Working Memory, 1200), 저장 장치(1300), 통신 블록(1400), 유저 인터페이스(User Interface, 1500), 기타 장치(들)(1600), 및 버스(Bus, 1700)를 포함할 수 있다.1 is a block diagram illustrating a computing device that includes electronic devices employing Encryption / Decryption circuits in accordance with embodiments of the present invention. In some embodiments,
예로서, 컴퓨팅 장치(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)은 명령어 집합의 실행에 의해 생성되는 데이터 또는 명령어 집합을 실행하기 위해 이용될 데이터를 일시적으로 저장할 수 있다.By way of example,
워킹 메모리(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)의 외부 장치/시스템과 통신할 수 있다.
유저 인터페이스(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) 등과 같은 다양한 통신 규약 중 하나 이상을 포함할 수 있다.The
컴퓨팅 장치(1000)의 동작에 따라, 데이터가 컴퓨팅 장치(1000)의 구성 요소들로 입력되거나 컴퓨팅 장치(1000)의 구성 요소들로부터 출력될 수 있다. 컴퓨팅 장치(1000)의 구성 요소들 각각은 데이터 입력/출력 장치로 언급될 수 있다.Depending on the operation of the
입력 또는 출력되는 데이터는 컴퓨팅 장치(1000) 외부의 개체(Entity)에 노출될 수 있다. 예로서, 컴퓨팅 장치(1000)에 대한 공격자(예컨대, 해커(Hacker))는 프로세서 장치(1100)로 입력되는 데이터를 조작(Manipulate)하여, 프로세서 장치(1100) 및 컴퓨팅 장치(1000)의 제어 권한을 획득할 수 있다. 예로서, 공격자는 프로세서 장치(1100)의 제어 권한을 획득하여, 컴퓨팅 장치(1000)의 동작을 중단시키거나 컴퓨팅 장치(1000)를 악의적으로 동작시킬 수 있다.The input or output data may be exposed to entities external to the
예로서, 공격자는 워킹 메모리(1200) 및/또는 저장 장치(1300)에 저장된 데이터를 조작하여, 데이터를 임의로 변경하거나 데이터의 보안 속성을 손상시킬 수 있다. 예로서, 공격자는 워킹 메모리(1200)에 저장된 데이터에 악성 코드(Malicious Code)를 삽입하거나, 저장 장치(1300)에 저장된 데이터의 접근 암호 또는 DRM(Digital Right Management) 속성을 깨뜨릴(Crack) 수 있다. 이러한 예들에서, 컴퓨팅 장치(1000) 및 그것의 구성 요소들의 보안 수준들 및 신뢰성이 크게 악화될 수 있다.By way of example, an attacker may manipulate data stored in working
이러한 이유에 기인하여, 컴퓨팅 장치(1000)의 구성 요소들은 입력 또는 출력되는 데이터를 암호화하고 암호화된 데이터를 복호화하기 위해 암호화/복호화 회로를 포함할 수 있다. 암호화/복호화 회로는 데이터 입력/출력 장치를 위해 암호화 및 복호화 연산들을 수행할 수 있다. 암호화 및 복호화 연산들에서, 암호화/복호화 회로는 키(Key)를 이용하여 암호화/복호화 알고리즘에 따라 데이터를 암호화/복호화할 수 있다. 키가 알려지지 않은 경우, 입력/출력되는 데이터에만 기초하여 키를 알아내는 것은 공격자에게 어려울 수 있고, 따라서, 암호화된 데이터의 원래 버전을 알아내는 것 역시 공격자에게 어려울 수 있다. 그러므로, 암호화 및 복호화 연산들은 전자 장치 및 전자 회로의 보안 수준 및 신뢰성을 향상시킬 수 있다.For this reason, the components of the
예로서, 프로세서 장치(1100)는 암호화/복호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로부터 출력되는 데이터를 암호화할 수 있다. 나아가, 프로세서 장치(1100)는 암호화/복호화 회로(1150)를 이용하여, 프로세서 코어들(1110) 및/또는 캐시들(1130)로 입력될 데이터를 복호화할 수 있다. 암호화 및 복호화 연산들에 따라 변형되는 데이터를 이해하고 분석하는 것은 공격자에게 어려울 수 있다. 따라서, 프로세서 장치(1100)의 제어 권한이 보호될 수 있다.By way of example,
예로서, 워킹 메모리(1200)는 암호화/복호화 회로(1250)를 이용하여, 메모리들(1210)에 저장될 데이터를 암호화할 수 있다. 나아가, 워킹 메모리(1200)는 암호화/복호화 회로(1250)를 이용하여, 메모리들(1210)로부터 출력되는 데이터를 복호화할 수 있다. 유사하게, 저장 장치(1300)는 암호화/복호화 회로(1350)를 이용하여, 불휘발성 메모리들(1310)에 저장될 데이터를 암호화할 수 있다. 나아가, 저장 장치(1300)는 암호화/복호화 회로(1350)를 이용하여, 불휘발성 메모리들(1310)로부터 출력되는 데이터를 복호화할 수 있다. 따라서, 메모리들(1210) 및/또는 불휘발성 메모리들(1310)에 저장된 데이터를 임의로 변경하거나 손상시키는 것은 공격자에게 어려울 수 있고, 저장된 데이터가 안전하게 보호될 수 있다.As an example, working
도 1은 암호화/복호화 회로들(1150, 1250, 1350)이 데이터 입력/출력 장치들(1100, 1200, 1300)에 포함되는 것을 보여준다. 그러나, 몇몇 경우, 암호화/복호화 회로들(1150, 1250, 1350)은 데이터 입력/출력 장치들(1100, 1200, 1300)과 별개로 구현될 수 있다. 나아가, 데이터 입력/출력 장치들(1100, 1200, 1300) 외의 몇몇 장치들(예컨대, 1400, 1500, 1600 등) 및 버스(1700) 각각 역시 암호화/복호화 회로를 채용할 수 있다. 암호화/복호화 회로는 데이터가 입력 또는 출력되는 경로 상이라면 어디든 채용될 수 있다. 도 1은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.1 shows that the encryption /
이하, 암호화/복호화 회로(1350)의 예시적인 구성들 및 동작들이 도 2 내지 도 24를 참조하여 설명될 것이다. 그러나, 암호화/복호화 회로들(1150, 1250) 및 그 외 도시되지 않은 암호화/복호화 회로 역시 이하의 실시 예들에 따라 구성되고 동작할 수 있다. 이하의 실시 예들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.Hereinafter, exemplary configurations and operations of the encryption /
도 2는 도 1의 암호화/복호화 회로의 예시적인 구성을 보여주는 블록도이다. 도 1 및 도 2에 나타낸 것과 같이, 암호화/복호화 회로(1350)는 저장 장치(1300)에서 불휘발성 메모리들(1310) 및 메모리 컨트롤러(1330)와 연결될 수 있다. 이 명세서에서 불휘발성 메모리들(1310)을 위한 암호화/복호화 회로(1350)가 설명되지만, 암호화/복호화 회로(1350)는 저장 장치(1300)에 포함되는 휘발성 메모리(예컨대, 버퍼 메모리, 캐시 메모리 등)에도 적용될 수 있다.2 is a block diagram illustrating an exemplary configuration of the encryption / decryption circuit of FIG. 1 and 2, the encryption /
몇몇 실시 예에서, 암호화/복호화 회로(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)는 복호화된 데이터를 수신할 수 있다.
몇몇 암호화 및 복호화 연산은 키(Key)를 이용하여 수행될 수 있다. 예로서, 몇몇 암호화 및 복호화 연산은 주어진 데이터 및 주어진 키에 대해 조합(Combinational) 논리 연산(예컨대, 논리 합(Or) 연산, 논리 곱(And) 연산, 배타적 논리 합(Exclusive Or) 연산 등)을 수행하는 것을 포함할 수 있다. 키는 외부의 개체에 알려지지 않을 수 있고, 암호화/복호화 회로(1350)에서 고유하게 선택될 수 있다. 따라서, 암호화 및 복호화 연산들은 데이터를 공격자의 공격으로부터 보호할 수 있다.Some encryption and decryption operations may be performed using a Key. By way of example, some encryption and decryption operations may be performed on a given data and on a given key by performing a combinational logic operation (e.g., a logical sum (Or) operation, a logical product (And) operation, an exclusive logical operation, etc.) And the like. The key may be unknown to the external entity and may be uniquely selected in the encryption /
키 관리기(1354)는 암호화 및 복호화 연산들에 이용되는 키를 관리할 수 있다. 키 관리기(1354)는 키를 저장하기 위한 메모리를 포함하거나, 다른 메모리에 저장된 키로 액세스할 수 있다.
도 3을 참조하여 설명될 것과 같이, 암호화 연산(및/또는 복호화 연산)은 한 번만 수행되는 것이 아니라, 보안 수준을 높이기 위해 여러 번 반복될 수 있다. 암호화 연산(및/또는 복호화 연산)을 한 번 수행하는 것은 하나의 "라운드(Round)"로 언급될 수 있다. 암호화 연산들(및/또는 복호화 연산들)의 반복 횟수는 "라운드 값"에 기초하여 관리될 수 있다. 예로서, 키는 각 라운드마다 상이하게 선택될 수 있다. 예로서, 첫 번째 라운드를 위해 선택되는 키는 두 번째 라운드를 위해 선택되는 키와 상이할 수 있다.As will be described with reference to FIG. 3, the encryption operation (and / or decryption operation) is not performed only once, but may be repeated many times to increase the security level. Performing a cryptographic operation (and / or decryption operation) once may be referred to as a "round ". The number of iterations of the encryption operations (and / or decryption operations) may be managed based on the "round value ". By way of example, the key may be selected differently for each round. As an example, the key selected for the first round may be different from the key selected for the second round.
키 관리기(1354)는 복수의 키를 관리할 수 있다. 키 관리기(1354)는 복수의 키 중에서, 각 라운드에서 선택될 키를 스케줄링할 수 있다. 키 관리기(1354)는 암호화 연산기(1352) 및/또는 복호화 연산기(1353)의 요청들에 응답하여, 스케줄링된 키를 암호화 연산기(1352) 및/또는 복호화 연산기(1353)로 제공할 수 있다.The
S-Box(1355)는 치환(Substitution) 연산을 수행할 수 있다. 치환 연산에서, S-Box(1355)는 m-비트의 입력을 n-비트의 출력으로 변환(Convert)할 수 있다(m, n 각각은 1 이상의 정수이고, m은 n과 동일하거나 상이할 수 있음). 예로서, S-Box(1355)의 치환 연산은 m-비트의 입력과 n-비트의 출력 사이의 대응 관계를 포함하는 룩-업 테이블(Look-up Table)을 기반으로 수행될 수 있다.The S-
예로서, 암호화 연산기(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, the 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, 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)의 일부 또는 전부는 동일한 클록 신호를 공유할 수 있다.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 FIG. 2, the 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 encryption /
도 2를 참조하여 "레지스터"가 설명되었으나, 본 발명은 도 2에 의해 한정되지 않는다. 암호화/복호화 컨트롤러(1356)는 제어 값을 저장하기 위해 레지스터 외의 다른 유형의 메모리를 채용할 수 있다. 나아가, 위에서 설명된 것과 같이, 도 2에 나타낸 블록들은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 다른 실시 예들에서, 몇몇 블록은 더 큰 단위의 블록으로 결합될 수 있고, 하나의 블록이 복수의 블록으로 나뉠 수도 있다.Although a "register" has been described with reference to Fig. 2, the present invention is not limited to Fig. Encryption /
도 3은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화 연산을 설명하는 흐름도이다.3 is a flow chart illustrating an exemplary encryption operation performed in the encryption / decryption circuit of FIG. 2;
예로서, 도 3은 암호화/복호화 회로(1350)가 미국 NIST(U.S. National Institute of Standards and Technology)에 의해 수립(Establish)된 AES(Advanced Encryption Standard)에 따라 암호화 연산을 수행하는 것을 설명한다. 암호화 연산은 주로 암호화/복호화 컨트롤러(1356)의 제어에 따라 암호화 연산기(1352)에 의해 수행될 수 있다. 레지스터(1356a)는 암호화 연산의 수행 및 환경을 지시하는 제어 값을 저장할 수 있다.By way of example, FIG. 3 illustrates that the encryption /
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, 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, the 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, the S120 operation may be performed again. In operation S120, S-
S140 동작에서, S-Box(1355)는 암호화 연산기(1352)의 요청에 응답하여, S126 동작에서 변환된 데이터에 대해 치환 연산을 수행할 수 있다. S142 동작에서, 암호화 연산기(1352)는 S140 동작에서 치환된 데이터의 스테이트에 대해 "ShiftRows" 연산을 수행할 수 있다. S144 동작에서, 암호화 연산기(1352)는 S142 동작에서 시프트된 스테이트를 갖는 변환된 데이터에 대해 "AddRoundKey" 연산을 수행할 수 있다. 예로서, 마지막 라운드가 완료된 후, 라운드 값이 (예컨대, 0으로) 초기화될 수 있다.In operation S140, S-
라운드가 반복됨에 따라, 데이터의 값이 점차 변환될 수 있다. S140 내지 S144 동작들로 구성되는 마지막 라운드가 완료된 후, 최종적으로 변환된 데이터가 불휘발성 메모리들(1310)에 저장될 수 있다. 따라서, 공격자가 불휘발성 메모리들(1310)의 암호화된 데이터를 임의로 조작하거나 손상시키는 것이 상당히 어려워질 수 있다.As the round is repeated, the value of the data can be gradually transformed. After the last round of operations S140 through S144 is completed, the finally converted data may be stored in the
예로서, 도 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비트의 데이터에 대해 수행될 수 있다.The encryption operation may be performed on data having an operation unit size. As an example, the operation unit size for the "MixColumns" operation may be 32 bits and the "MixColumns" operation may be performed on 32 bits of data. As an example, the operation unit size for the "ShiftRows" operation may be 128 bits and the "ShiftRows" operation may be performed on 128 bits of data.
몇몇 실시 예에서, 암호화/복호화 컨트롤러(1356)는 버퍼(1351)에 저장된 데이터의 크기를 모니터링할 수 있다. 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행됨을 판별할 수 있다. 예로서, 데이터가 버퍼(1351)에 점차 누적됨에 따라 버퍼(1351)가 "MixColumns" 연산을 위한 32비트의 데이터를 완전히 저장한 경우, 암호화/복호화 컨트롤러(1356)는 "MixColumns" 연산이 수행되도록 암호화 연산기(1352)를 제어할 수 있다.In some embodiments, the encryption /
한편, 버퍼(1351)에 저장된 데이터가 암호화 연산의 연산 단위 크기를 갖지 않는 경우, 암호화/복호화 컨트롤러(1356)는 암호화 연산이 수행되지 않음을 판별할 수 있다. 레지스터(1356a)는 암호화/복호화 컨트롤러(1356)의 판별에 의존하여, 암호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다.On the other hand, when the data stored in the
몇몇 실시 예에서, 암호화/복호화 컨트롤러(1356)는 라운드 값에 기초하여 암호화 연산을 제어할 수 있다. 라운드 값이 0에 대응하는 경우, 암호화 연산이 수행되지 않을 수 있고, 따라서 레지스터(1356a)는 암호화 연산이 수행되지 않음을 지시하는 제어 값을 저장할 수 있다. 한편, 라운드 값이 0에 대응하지 않는 경우(예컨대, 암호화/복호화 컨트롤러(1356)가 라운드 값을 증가시킨 경우), 암호화 연산이 수행될 수 있고, 따라서 레지스터(1356a)는 암호화 연산이 수행됨을 지시하는 제어 값을 저장할 수 있다.In some embodiments, the encryption /
복호화 연산기(1353)의 복호화 연산은 도 3의 암호화 연산에 대응하여 수행될 수 있다. 예로서, 복호화 연산기(1353)는 암호화된 데이터를 복호화하기 위해, 도 3의 암호화 연산들을 역으로 수행할 수 있다. 레지스터(1356a)는 복호화 연산이 수행되거나 수행되지 않음을 지시하는 제어 값을 저장할 수 있다. 복호화 연산은 통상의 기술자에 의해 잘 이해될 수 있으므로, 복호화 연산에 관한 자세한 설명들은 이하 생략될 것이다. 복호화된 데이터는 메모리 컨트롤러(1330)로 제공될 수 있다.The decryption operation of the
NIST에 의해 발행된 FIPS 197 문서에서 정의된 암호화 연산들이 도 3을 참조하여 설명되었다. 그러나, 도 3은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(1350)는 암호화/복호화 연산에 관한 다른 종류의 표준을 채용할 수 있다. 또는, 암호화/복호화 회로(1350)는 보안 수준을 향상시키기 위해 도 3에 나타낸 것들과 상이한 연산들을 채용할 수 있다.The encryption operations defined in the FIPS 197 document issued by NIST have been described with reference to FIG. However, FIG. 3 is provided for better understanding, and is not intended to limit the present invention. Encryption /
도 4는 도 2의 암호화/복호화 회로에 포함되는 예시적인 논리 회로를 보여주는 블록도이다. 도 5는 도 4의 논리 회로의 동작을 설명하기 위한 표이다.4 is a block diagram illustrating an exemplary logic circuit included in the encryption / decryption circuit of FIG. 5 is a table for explaining the operation of the logic circuit of FIG.
몇몇 암호화/복호화 회로는 "부 채널 분석 공격(Side-channel Analysis Attack)"에 의해 공격될 수 있다. 부 채널 분석 공격에서, 공격자는 암호화/복호화 회로에 의해 소모되는 전력의 양, 암호화/복호화 회로에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집할 수 있다. 공격자는 수집된 정보에 기초하여 암호화/복호화 회로에서 이용되는 키를 알아내기 위해 암호화/복호화 회로를 공격할 수 있다.Some encryption / decryption circuits may be attacked by a "Side-channel Analysis Attack ". In a subchannel analysis attack, an attacker can collect incidental information such as the amount of power consumed by the encryption / decryption circuit, the waveform of the electromagnetic wave generated by the encryption / decryption circuit, and the like. The attacker may attack the encryption / decryption circuit to determine the key used in the encryption / decryption circuit based on the collected information.
따라서, 본 발명의 실시 예에 따른 암호화/복호화 회로(1350)는 부 채널 분석 공격을 방지하기 위한 논리 회로(LGC)를 포함할 수 있다. 도 4를 참조하면, 논리 회로(LGC)는 배타적 논리 합 연산에 대응하는 조합 논리 연산을 수행할 수 있다. 몇몇 예에서, 암호화 연산기(1352)가 논리 회로(LGC)를 포함할 수 있고, 논리 회로(LGC)는 (예로서, 도 3의 S110, S126, 및 S144 동작들에서의) "AddRoundKey" 연산과 관련될 수 있다.Accordingly, the encryption /
논리 회로(LGC)는 네 개의 입력들(A, B, ~A, ~B)을 수신할 수 있다. 입력(~A)은 입력(A)의 반전(Inverted) 값에 대응할 수 있고, 입력(~B)은 입력(B)의 반전 값에 대응할 수 있다. 예로서, 논리 회로(LGC)가 "AddRoundKey" 연산과 관련되는 경우, 입력(A)은 버퍼(1351)로부터의 데이터에 포함되는 비트에 대응할 수 있고, 입력(B)은 키 관리기(1354)로부터의 키에 포함되는 비트에 대응할 수 있다. 논리 회로(LGC)는 입력들(A, B)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.The logic circuit LGC can receive four inputs A, B, ~ A, ..., B. The input ~A may correspond to the inverted value of input A and the input ~B may correspond to the inverted value of input B. For example, if the logic circuit LGC is associated with an "AddRoundKey" operation, input A may correspond to bits contained in data from
입력들(A, B, ~A, ~B)은 클록 신호(CLK1)에 기초하여 논리 게이트들(P1, P2, P3, P4)을 각각 통과하거나 통과하지 않을 수 있다. 예로서, 클록 신호(CLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 동안, 입력들(A, B, ~A, ~B)은 논리 게이트들(P1, P2, P3, P4)을 통과하지 않을 수 있고 논리 게이트들(P1, P2, P3, P4) 각각은 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다. 한편, 클록 신호(CLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 동안, 입력들(A, B, ~A, ~B)은 논리 게이트들(P1, P2, P3, P4)을 통과할 수 있다(즉, 논리 게이트들(P1, P2, P3, P4)이 입력들(A, B, ~A, ~B)에 대응하는 값들을 각각 출력할 수 있다). 여기서, 특정 입력의 "통과"는 그 특정 입력이 논리 게이트의 출력을 생성하는 데에 능동적인 영향을 준다는 것을 의미할 수 있다.The inputs A, B, ..., A through B may or may not pass through the logic gates P1, P2, P3 and P4, respectively, based on the clock signal CLK1. As an example, the inputs A, B, ..., A, ..., B are connected to logic gates P1, P2, P3, P4 while the clock signal CLK1 has a first logical value , And each of the logic gates P1, P2, P3, and P4 may output a first logic value (e.g., logic "0"). On the other hand, the inputs A, B, ..., A, B are connected to the logic gates P1, P2, P3, P4 while the clock signal CLK1 has a second logic value (I.e., the logic gates P1, P2, P3, and P4 may output values corresponding to the inputs A, B, ..., A, ..., respectively). Here, "passing" of a particular input may mean that the particular input has an active influence on generating the output of the logic gate.
논리 게이트들(AND1, AND2, OR1, OR2)은 논리 게이트들(P1, P2, P3, P4)로부터 출력된 값들을 조합(Combine)할 수 있다. 논리 게이트들(OR3, AND3)은 논리 게이트들(AND1, AND2, OR1, OR2)로부터 출력된 값들을 조합할 수 있다. 따라서, 논리 게이트들(OR3, AND3)은 입력들(A, B)의 배타적 논리 합 및 그 배타적 논리 합의 반전 값에 대응하는 결과들을 출력할 수 있다.The logic gates AND1, AND2, OR1, and OR2 may combine the values output from the logic gates P1, P2, P3, and P4. The logic gates OR3 and AND3 can combine the values output from the logic gates AND1, AND2, OR1, and OR2. Thus, the logic gates OR3 and AND3 can output the results corresponding to the exclusive logical sum of the inputs A and B and the inverse value of the exclusive logical sum.
도 5는 논리 회로(LGC)의 입력들(A, B)과 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3)의 출력들 사이의 관계를 보여준다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 경우, 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3) 각각은 입력들(A, B)의 값들에 관계없이 논리 "0"의 값을 출력할 수 있다. 한편, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 경우, 논리 게이트들(AND1, AND2, AND3, OR1, OR2, OR3)은 입력들(A, B)의 값들에 의존하여 상이한 값들을 출력할 수 있다.5 shows the relationship between the outputs A and B of the logic circuit LGC and the outputs of the logic gates AND1, AND2, AND3, OR1, OR2 and OR3. Each of the logic gates AND1, AND2, AND3, OR1, OR2 and OR3 has a logic "0" regardless of the values of the inputs A, B when the clock signal CLK1 has a value of logic " Can be output. On the other hand, when the clock signal CLK1 has a value of logic "1 ", the logic gates AND1, AND2, AND3, OR1, OR2 and OR3 depend on the values of the inputs A and B, Can be output.
도 5를 참조하면, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정함이 이해될 수 있다. 예로서, 도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들은 입력들(A, B)의 값들에 의존하여 변경될 수 있다. 그러나, 입력들(A, B)의 값들에 관계없이, 한 개의 논리 곱(AND) 게이트가 논리 "1"의 값을 출력하고 두 개의 논리 합(OR) 게이트들이 논리 "1"의 값들을 출력할 수 있다.Referring to FIG. 5, it can be understood that while the clock signal CLK1 has a value of logic "1 ", the number of logic gates outputting the value of logic" 1 " is constant. As an example, in the logic circuit LGC of Fig. 4, the logic gates outputting the value of logic "1 " may be changed depending on the values of the inputs A and B. However, regardless of the values of the inputs A and B, one AND gate outputs a value of logic "1 " and two logic sum (OR) gates output values of logic & can do.
도 4의 논리 회로(LGC)에서, 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있고, 따라서 논리 회로(LGC)에 의해 소모되는 전체 전력의 양이 일정하게 유지될 수 있다. 이로 인해, 공격자가 논리 회로(LGC)에 의해 소모되는 전력의 양, 논리 회로(LGC)에 의해 생성되는 전자기파의 파형 등과 같은 부수적인 정보를 수집하더라도, 공격자는 논리 회로(LGC)의 구성 및 동작을 이해하기 어려울 수 있다. 결과적으로, 논리 회로(LGC)는 부 채널 분석 공격으로부터의 보호를 가능하게 할 수 있다.In the logic circuit LGC in Fig. 4, the number of logic gates outputting the value of logic "1" can be kept constant, and therefore the amount of total power consumed by the logic circuit LGC is kept constant . Therefore, even if the attacker collects additional information such as the amount of power consumed by the logic circuit LGC, the waveform of the electromagnetic wave generated by the logic circuit LGC, etc., Can be difficult to understand. As a result, the logic circuit (LGC) can enable protection from subchannel analysis attacks.
다만, 도 4 및 도 5를 참조하여 설명된 논리 회로(LGC)의 구성 및 동작은 더 나은 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다. 논리 회로(LGC)의 구성 및 동작은 다양하게 수정 또는 변경될 수 있다. 나아가, 논리 회로(LGC)는 암호화/복호화 회로(1350)에 포함되는 다양한 논리 회로 중 하나의 예시일 뿐이다. 암호화/복호화 회로(1350)는 암호화 및 복호화 연산들을 수행하기 위해 다양한 구성을 갖는 여러 다른 논리 회로를 더 포함할 수 있다.However, the configuration and operation of the logic circuit (LGC) described with reference to FIGS. 4 and 5 are only examples for better understanding, and are not intended to limit the present invention. The configuration and operation of the logic circuit (LGC) can be variously modified or changed. Furthermore, the logic circuit LGC is only an example of one of the various logic circuits included in the encryption /
본 발명의 실시 예들에서, 암호화/복호화 회로(1350)는 부 채널 분석 공격을 방지하기 위해 일정한 양의 전력을 소모하도록 구성되는 하나 이상의 논리 회로들을 포함할 수 있다. 이 논리 회로들은 복수의 논리 게이트를 포함할 수 있고, 복수의 논리 게이트 중에서 논리 "0"의 값을 출력하는 논리 게이트들의 개수 및 논리 "1"의 값을 출력하는 논리 게이트들의 개수가 일정하게 유지될 수 있다.In embodiments of the present invention, the encryption /
도 6은 도 2의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 6 is a timing diagram illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 2. FIG.
더 나은 이해를 돕기 위해, 도 2 및 도 4의 클록 신호(CLK1)가 설명될 것이다. 클록 신호(CLK1)는 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(1350)는 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안 입력들(A, B)의 배타적 논리 합을 출력할 수 있다.For better understanding, the clock signal CLK1 of FIGS. 2 and 4 will be described. The clock signal CLK1 may have a value of logic "0" and a value of logic "1 " While the clock signal CLK1 has a logic "1" value, the encryption /
한편, 클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안, 암호화/복호화 회로(1350)는 암호화 연산 및 복호화 연산을 수행하지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안 입력들(A, B)의 값들에 관계없이 논리 "0"의 값을 출력할 수 있고, 따라서 암호화 연산이 수행되지 않을 수 있다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 경우, 암호화/복호화 회로(1350)의 논리 게이트들의 상태(State)가 리셋(Reset)될 수 있고, 이 논리 게이트들에 의해 소모되는 전력이 최소화될 수 있다.On the other hand, while the clock signal CLK1 has a logic "0" value, the encryption /
클록 신호(CLK1)에 기초하여 논리 게이트들의 상태 및 전력 소모를 변경(예컨대, 전환(Switching))시키는 것은 부 채널 분석 공격을 더욱 어렵게 만들 수 있다. 따라서, 클록 신호(CLK1)의 논리 값들의 교번(Alternation)은 보안 수준을 향상시킬 수 있다.Changing (e.g., switching) the state and power consumption of the logic gates based on the clock signal CLK1 may make subchannel analysis attacks more difficult. Therefore, the alternation of the logical values of the clock signal CLK1 can improve the security level.
클록 신호(CLK1)가 논리 "0"의 값을 갖는 동안, 논리 게이트들의 상태가 리셋될 수 있다. 클록 신호(CLK1)가 논리 "0"의 값을 갖는 제 1 시간 구간은 "초기화 구간"으로 언급될 수 있다. 한편, 클록 신호(CLK1)가 논리 "1"의 값을 갖는 동안, 암호화 연산 및 복호화 연산 중 적어도 하나가 수행될 수 있다. 클록 신호(CLK1)가 논리 "1"의 값을 갖는 제 2 시간 구간은 "연산 구간"으로 언급될 수 있다. 클록 신호(CLK1)의 논리 값들의 교번에 응답하여, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.While the clock signal CLK1 has a value of logic "0 ", the state of the logic gates can be reset. The first time period in which the clock signal CLK1 has a value of logic "0 " may be referred to as an" initialization period ". Meanwhile, at least one of the encryption operation and the decryption operation can be performed while the clock signal CLK1 has the value of logic "1 ". The second time period in which the clock signal CLK1 has a value of logic "1 " may be referred to as an " operation interval ". In response to the alternation of the logical values of the clock signal CLK1, the initialization interval and the computation interval may alternately occur.
몇몇 예에서, 하나의 연산 구간 동안 하나의 라운드의 연산들이 수행될 수 있다. 몇몇 다른 예에서, 하나의 연산 구간 동안 여러 라운드의 연산들이 수행될 수 있다. 몇몇 또 다른 예에서, 하나의 라운드의 연산들이 여러 연산 구간 동안 수행될 수 있다. 연산 구간과 라운드 사이의 관계는 암호화/복호화 회로(1350)의 하드웨어 크기, 연산 성능, 동작 정책 등 다양한 요인에 기인하여 변경 또는 수정될 수 있다.In some instances, one round of operations may be performed during an operation interval. In some other examples, several rounds of operations may be performed during an operation interval. In some other examples, one round of operations may be performed during several operation intervals. The relationship between the computation period and the round can be changed or modified due to various factors such as the hardware size of the encryption /
그러나, 암호화 연산 및 복호화 연산이 연산 구간 전체에서 수행되지는 않을 수 있다. 예로서, 외부 장치로부터 요청(REQ)이 제공되지 않은 경우, 연산 구간에서도 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 예로서, 암호화/복호화 컨트롤러(1356)가 암호화 연산 및 복호화 연산이 수행되지 않음을 판별한 경우(예컨대, 버퍼(1351)에 저장된 데이터의 크기가 연산 단위 크기보다 작은 경우), 연산 구간에서도 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다.However, encryption and decryption operations may not be performed throughout the computation period. For example, when a request (REQ) is not provided from an external device, an encryption operation and a decryption operation may not be performed in an operation interval. For example, when the encryption /
예로서, 외부 장치로부터의 요청(REQ) 또는 암호화/복호화 컨트롤러(1356)의 판별에 기초하여, 시점(TP1)과 시점(TP2) 사이에서 암호화 연산 및/또는 복호화 연산이 수행될 수 있다. 이 경우, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다.As an example, a cryptographic operation and / or a decryption operation may be performed between the time point TP1 and the time point TP2 based on the determination of the request (REQ) from the external device or the encryption /
몇몇 경우, 암호화 연산 및 복호화 연산이 수행되지 않더라도, 클록 신호(CLK1)의 논리 값들이 계속 교번할 수 있다. 그러나, 암호화 연산 및 복호화 연산이 수행되지 않는 동안 클록 신호(CLK1)의 논리 값들을 교번시키는 것은 암호화/복호화 회로(1350)에 의해 소모되는 전력의 양을 증가시킬 수 있다. 이는 논리 게이트들이 (초기화 구간에서) 논리 "0"을 출력하는 것 및 (연산 구간에서) 논리 "1"을 출력하는 것을 반복하기 때문이다(즉, 출력 값의 전환에 기인하여 전력이 소모될 수 있다).In some cases, although the encryption and decryption operations are not performed, the logical values of the clock signal CLK1 may alternate continuously. However, alternating the logical values of the clock signal CLK1 while the encryption and decryption operations are not performed can increase the amount of power consumed by the encryption /
게다가, 위에서 설명된 것과 같이, 암호화 연산 및/또는 복호화 연산은 연산 구간에서만 수행될 수 있다. 따라서, 초기화 구간의 길이가 길어지는 경우, 연산 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.In addition, as described above, the encryption and / or decryption operations can be performed only in the computation interval. Therefore, when the length of the initialization interval is long, the length of the calculation interval can be shortened, and therefore, the calculation performance of the encryption /
도 7은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 암호화 연산기(2352), 암호화/복호화 컨트롤러(2356), 및 구간 컨트롤러(2357)를 포함할 수 있다.7 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG. In some embodiments, the encryption /
암호화 연산기(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 logic values of the activation signal ACT1 may not be alternated while the encryption operation is not performed. Thus, while the encryption operation is not performed, the outputs from the logic gates included in the
몇몇 실시 예에서, 구간 컨트롤러(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 intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the interval controller of FIG. 7. FIG.
구간 컨트롤러(2357)는 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 갖는 클록 신호(CLK1)를 수신할 수 있다. 나아가, 구간 컨트롤러(2357)는 암호화 연산 및/또는 복호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시하는 제어 값(EC)을 수신할 수 있다.The
예로서, 논리 "0"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공되지 않은 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 도 2의 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖지 않는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하는 경우, 제어 값(EC)이 논리 "0"의 값을 가질 수 있다.By way of example, the control value EC of logic "0 " may indicate that the encryption and / or decryption operation is not performed. As an example, when a request (REQ) from an external device is not provided, the control value EC may have a value of logic "0. " By way of example, if the data stored in the
예로서, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서, 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 따라서, 시점(TP1) 이전의 시간 구간 및 시점(TP2) 이후의 시간 구간에서, 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하기 위해 논리 "0"의 값을 가질 수 있다.As an example, the encryption operation and the decryption operation may not be performed in the time interval before the time point TP1 and the time interval after the time point TP2. Therefore, in the time period before the time point TP1 and the time period after the time point TP2, the control value EC has a value of logic "0" to indicate that the encryption and / .
예로서, 논리 "1"의 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있다. 예로서, 외부 장치로부터의 요청(REQ)이 제공된 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 버퍼(1351)에 저장된 데이터가 연산 단위 크기를 갖는 경우, 제어 값(EC)이 논리 "1"의 값을 가질 수 있다. 예로서, 라운드 값이 0에 대응하지 않는 경우(예컨대, 1 이상으로 증가한 경우), 제어 값(EC)이 논리 "1"의 값을 가질 수 있다.By way of example, the control value EC of logic "1 " may indicate that a cryptographic operation and / or a decryption operation is performed. As an example, when a request (REQ) is provided from an external device, the control value EC may have a value of logic "1 ". As an example, when the data stored in the
예로서, 시점들(TP1, TP2) 사이의 시간 구간에서, 암호화 연산 및 복호화 연산 중 적어도 하나가 수행될 수 있다. 따라서, 시점들(TP1, TP2) 사이의 시간 구간에서, 제어 값(EC)은 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하기 위해 논리 "1"의 값을 가질 수 있다.As an example, at least one of a cryptographic operation and a decryption operation may be performed in a time interval between timings TP1 and TP2. Thus, in the time interval between the points in time TP1 and TP2, the control value EC may have a value of logic "1 " to indicate that a cryptographic operation and / or a decryption operation is performed.
다만, 위 예들은 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 몇몇 다른 예에서, 논리 "0"의 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시할 수 있고, 논리 "1"의 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시할 수 있다.It is to be understood, however, that the above examples are provided for better understanding and are not intended to limit the present invention. In some other instances, a control value EC of logic " 0 "may indicate that a cryptographic operation and / or a decryption operation is performed and a control value EC of logic & Can not be performed.
활성화 신호(ACT1)는 클록 신호(CLK1) 및 제어 값(EC)에 기초하여, 비활성화 값 및 활성화 값을 가질 수 있다. 더 나은 이해를 돕기 위해, 활성화 신호(ACT1)의 비활성화 값이 논리 "0"에 대응하고, 활성화 신호(ACT1)의 활성화 값이 논리 "1"에 대응하는 것으로 가정될 것이다. 다만, 본 발명은 이 가정에 의해 한정되지 않고, 비활성화 값에 대응하는 논리 값과 활성화 값에 대응하는 논리 값은 서로 바뀔 수 있다(Interchangeable).The activation signal ACT1 may have an inactive value and an activation value based on the clock signal CLK1 and the control value EC. To facilitate a better understanding, it will be assumed that the deactivation value of the activation signal ACT1 corresponds to a logic "0 ", and the activation value of the activation signal ACT1 corresponds to a logic" 1 ". However, the present invention is not limited to this assumption, and the logic value corresponding to the inactivation value and the logic value corresponding to the activation value may be interchanged.
제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 교번 없이 비활성화 값(예컨대, 논리 "0")으로 유지될 수 있다. 위에서 설명된 것과 같이, 암호화 연산기(2352)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)에 기초하여 동작할 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 예로서, 도 4의 논리 회로(LGC)는 클록 신호(CLK1) 대신 활성화 신호(ACT1)의 비활성화 값을 수신할 수 있고, 논리 회로(LGC)의 논리 게이트들 각각은 활성화 신호(ACT1)의 비활성화 값에 응답하여 제 1 논리 값(예컨대, 논리 "0")을 출력할 수 있다.The activation signal ACT1 can be maintained at an inactive value (e.g., logic "0") without alternation, while the control value EC has a value of logic "0 ". As described above, the
암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 비활성화 값에 기초하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 초기화 구간 동안, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있다. 나아가, 논리 게이트들로부터의 출력들이 변경되지 않기 때문에, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.While the encryption and / or decryption operations are not performed, the logic gates of the
한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 교번(즉, 비활성화 값 및 활성화 값의 교번)에 응답하여 제 1 시간 구간(예컨대, 초기화 구간) 및 제 2 시간 구간(예컨대, 연산 구간)에서 번갈아가며 동작할 수 있다.On the other hand, while the control value EC has a value of logic "1 ", the activation signal ACT1 may alternately have the inactive value and the activation value in response to the clock signal CLK1. Therefore, when the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed, the logic gates of the
연산 구간에서, 암호화 연산기(2352)는 논리 게이트들을 이용하여 암호화 연산(및/또는 복호화 연산)을 수행할 수 있다. 암호화 연산 및/또는 복호화 연산은 활성화 신호(ACT1)의 활성화 값에 응답하여 수행될 수 있다. 연산 구간 동안, 도 4 및 도 5를 참조하여 설명된 것과 같이, 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 일정하게 유지될 수 있다.In the computation period, the
도 9a 및 도 9b는 도 8의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.Figs. 9A and 9B are block diagrams showing exemplary configurations of the section controller of Fig. 7 with respect to the timing diagram of Fig.
도 9a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357a)를 포함할 수 있다. 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357a)는 클록 신호(CLK1) 및 제어 값(EC)에 대해 논리 곱 연산을 수행할 수 있다.Referring to FIG. 9A, the
도 9a의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(2357a)는 비활성화 값(예컨대, 논리 "0")을 갖는 활성화 신호(ACT1)를 생성할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(2357a)는 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 생성할 수 있다.In the example of FIG. 9A,
도 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 Figure 9b, when the control value EC indicates that a cryptographic operation and / or a decryption operation is not to be performed (e.g., has a value of logic "0"), the
구간 컨트롤러(2357)가 도 9a 또는 도 9b에 나타낸 구성을 채용하는 경우, 구간 컨트롤러(2357)는 도 8을 참조하여 설명된 활성화 신호(ACT1)를 생성할 수 있다. 이러한 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 논리 게이트들로부터의 출력이 초기화 구간에서 일정하게 유지될 수 있다. 따라서, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.When the
도 10은 도 7의 구간 컨트롤러를 포함하는 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.FIG. 10 is a timing diagram for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the interval controller of FIG. 7. FIG.
도 8의 타이밍도와 달리, 도 10을 참조하면, 제어 값(EC)이 논리 "0"의 값을 갖는 동안, 활성화 신호(ACT1)는 활성화 값(예컨대, 논리 "1")으로 유지될 수 있다. 따라서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우, 암호화 연산기(2352)의 논리 게이트들은 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 예로서, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)의 논리 게이트들은 활성화 신호(ACT1)의 활성화 값에 응답하여 연산 구간에서 동작할 수 있다.10, the activation signal ACT1 may be maintained at an activation value (e.g., logic "1 "), while the control value EC has a logic & . Thus, when the control value EC indicates that a cryptographic operation and / or a decryption operation is not performed, the logical gates of the
암호화 연산 및/또는 복호화 연산이 수행되지 않는 경우, 암호화 연산기(2352)로 입력되는 데이터는 변경되지 않을 수 있다. 예로서, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)는 기본(Default) 값의 데이터 또는 이전의(Previous) 연산에 이용된 데이터를 일정하게 수신할 수 있다. 따라서, 암호화 연산기(2352)가 연산 구간에서 동작하더라도, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 변경되지 않을 수 있다. 결과적으로, 연산 구간이 유지되더라도, 논리 게이트들에 의해 소모되는 전력의 양이 일정하게 유지될 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지될 수 있다.If the encryption operation and / or the decryption operation is not performed, the data input to the
몇몇 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)로 입력되는 데이터가 변경될 수 있다. 예로서, 암호화 연산기(2352)는 다음의 연산에 이용될 데이터 또는 레지스터 설정 값을 수신할 수 있다. 이 경우, 암호화 연산기(2352)의 논리 게이트들로부터의 출력들이 한 번 변경될 수 있다. 그러나, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 암호화 연산기(2352)로 입력되는 데이터가 여러 번 변경되지는 않을 수 있다. 따라서, 연산 구간이 유지되더라도, 출력 값의 전환에 기인하는 전력 소모가 최소화될 수 있다.In some cases, while the encryption and / or decryption operations are not performed, the data input to the
한편, 제어 값(EC)이 논리 "1"의 값을 갖는 동안, 활성화 신호(ACT1)는 클록 신호(CLK1)에 응답하여 비활성화 값 및 활성화 값을 번갈아가며 가질 수 있다. 이는 도 8을 참조하여 설명된 시점들(TP1, TP2) 사이의 시간 구간에 대응할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.On the other hand, while the control value EC has a value of logic "1 ", the activation signal ACT1 may alternately have the inactive value and the activation value in response to the clock signal CLK1. This may correspond to the time interval between the time points TP1 and TP2 described with reference to FIG. For convenience of description, redundant descriptions will be omitted below.
도 11a 및 도 11b는 도 10의 타이밍도와 관련하여 도 7의 구간 컨트롤러의 예시적인 구성들을 보여주는 블록도들이다.Figs. 11A and 11B are block diagrams showing exemplary configurations of the section controller of Fig. 7 with respect to the timing diagram of Fig.
도 11a를 참조하면, 구간 컨트롤러(2357)는 조합 논리 게이트(2357d)를 포함할 수 있다. 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)을 조합하여 활성화 신호(ACT1)를 생성할 수 있다. 예로서, 조합 논리 게이트(2357d)는 클록 신호(CLK1) 및 제어 값(EC)의 반전 값(~EC)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 11A, the
도 11a의 예에서, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행되지 않음을 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(2357d)는 활성화 값(예컨대, 논리 "1")을 갖는 활성화 신호(ACT1)를 생성할 수 있다. 반면, 제어 값(EC)이 암호화 연산 및/또는 복호화 연산이 수행됨을 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(2357d)는 클록 신호(CLK1)에 대응하는(즉, 비활성화 값 및 활성화 값을 번갈아가며 갖는) 활성화 신호(ACT1)를 생성할 수 있다.In the example of FIG. 11A,
도 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 a cryptographic operation and / or a decryption operation is not performed (e. G., Having a value of logic & , Logic "1"). On the other hand, if the control value EC indicates that a cryptographic operation and / or a decryption operation is to be performed (e. G., Having a value of logic "1"), then
구간 컨트롤러(2357)가 도 11a 또는 도 11b에 나타낸 구성을 채용하는 경우, 구간 컨트롤러(2357)는 도 10을 참조하여 설명된 활성화 신호(ACT1)를 생성할 수 있다. 이러한 경우, 암호화 연산 및/또는 복호화 연산이 수행되지 않는 동안, 논리 게이트들로부터의 출력이 연산 구간에서 일정하게 유지되거나 한 번 변경될 수 있다. 따라서, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.When the
도 12 및 도 13은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성들을 보여주는 블록도들이다.Figs. 12 and 13 are block diagrams showing exemplary configurations included in the encryption / decryption circuit of Fig.
도 12를 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(2350)는 구간 컨트롤러(2358)를 더 포함할 수 있다. 암호화/복호화 컨트롤러(2356)는 제어 값(DC) 및/또는 제어 값(DC)의 반전 값(~DC)을 출력할 수 있다. 제어 값(DC)은 복호화 연산의 수행과 관련될 수 있다. 예로서, 제어 값(DC)은 복호화 연산이 수행되는지 또는 수행되지 않는지 여부를 지시할 수 있다. 예로서, 제어 값(DC)은 도 2의 레지스터(1356a)로부터 출력될 수 있다.Referring to FIG. 12, in some embodiments, the encryption /
구간 컨트롤러(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 be alternated while the decryption operation is not performed. Similar to those described with reference to FIGS. 8 and 10, when a decryption operation is not performed, the control value DC may indicate that a decryption operation is not performed. While the decryption operation is not performed, the activation signal ACT2 may be held at one of the deactivation value and the activation value. To this end, the
복호화 연산이 수행되지 않는 동안, 복호화 연산기(2353)의 논리 게이트들은 활성화 신호(ACT2)의 비활성화 값에 응답하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 또는, 복호화 연산이 수행되지 않는 동안, 복호화 연산기(2353)의 논리 게이트들은 활성화 신호(ACT2)의 활성화 값에 응답하여 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 따라서, 복호화 연산기(2353)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.While the decryption operation is not performed, the logic gates of
도 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 be alternated while the replacement operation is not performed. Similar to those described with reference to Figs. 8 and 10, when the replacement operation is not performed, the control value SC may indicate that the replacement operation is not performed. While the replacement operation is not performed, the activation signal ACT3 may be maintained at one of the inactivation value and the activation value. To this end, the
치환 연산이 수행되지 않는 동안, S-Box(2355)의 논리 게이트들은 활성화 신호(ACT3)의 비활성화 값에 응답하여 제 1 시간 구간(예컨대, 초기화 구간)에서 동작할 수 있다. 또는, 치환 연산이 수행되지 않는 동안, S-Box(2355)의 논리 게이트들은 활성화 신호(ACT3)의 활성화 값에 응답하여 제 2 시간 구간(예컨대, 연산 구간)에서 동작할 수 있다. 따라서, S-Box(2355)에 포함되는 논리 게이트들로부터의 출력들이 변경되지 않을 수 있고, 출력 값의 전환에 기인하는 전력 소모가 방지되거나 최소화될 수 있다.While the replacement operation is not performed, the logic gates of S-
몇몇 실시 예에서, 구간 컨트롤러들(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 for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 2; FIG.
위에서 설명된 것과 같이, 암호화/복호화 회로(1350)는 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 한편, 초기화 구간에서, 암호화/복호화 회로(1350)의 논리 게이트들의 상태가 리셋될 수 있다. 따라서, 초기화 구간에서는 암호화 연산 및 복호화 연산이 수행되지 않을 수 있다. 이로 인해, 초기화 구간의 길이가 길어지는 경우, 암호화 구간의 길이가 짧아질 수 있고, 따라서 암호화/복호화 회로(1350)의 연산 성능이 떨어질 수 있다.As described above, the encryption /
몇몇 실시 예에서, 도 14의 변경된 클록 신호(CCLK1)가 도 6 및 도 7의 클록 신호(CLK1)를 대체할 수 있다. 변경된 클록 신호(CCLK1)를 클록 신호(CLK1)와 비교하면, 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이보다 길다는 것이 이해될 수 있다. 반면, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이보다 짧다는 것이 이해될 수 있다.In some embodiments, the modified clock signal CCLK1 of FIG. 14 may replace the clock signal CLK1 of FIG. 6 and FIG. When the changed clock signal CCLK1 is compared with the clock signal CLK1, the length of the time interval in which the changed clock signal CCLK1 has the value of logic "1 " is obtained when the clock signal CLK1 has a value of logic & Is longer than the length of the time interval. On the other hand, it can be understood that the length of the time interval in which the changed clock signal CCLK1 has a value of logic "0 " is shorter than the length of the time interval in which the clock signal CLK1 has a value of logic" 0 ".
즉, 변경된 클록 신호(CCLK1)의 듀티 비(Duty Ratio) 또는 듀티 사이클(Duty Cycle)은 클록 신호(CLK1)의 듀티 비 또는 듀티 사이클과 상이할 수 있다. 듀티 비의 변경 또는 조절에 기인하여, 변경된 클록 신호(CCLK1)가 제 1 논리 값(예컨대, 논리 "0")을 갖는 시간 구간(예컨대, 초기화 구간)의 길이는 변경된 클록 신호(CCLK1)가 제 2 논리 값(예컨대, 논리 "1")을 갖는 시간 구간(예컨대, 연산 구간)의 길이보다 짧을 수 있다.That is, the duty ratio or the duty cycle of the changed clock signal CCLK1 may be different from the duty ratio or the duty cycle of the clock signal CLK1. The length of the time period (e.g., the initialization period) in which the changed clock signal CCLK1 has the first logical value (e.g., logic "0") due to the change or the adjustment of the duty ratio, May be shorter than the length of a time period (e.g., an arithmetic section) having two logical values (e.g., logic "1").
따라서, 변경된 클록 신호(CCLK1)가 클록 신호(CLK1) 대신 채용되는 경우, 초기화 구간의 길이가 짧아지고 연산 구간의 길이가 길어질 수 있다. 이 경우, 길어진 연산 구간 동안 더 많은 암호화 연산들 및/또는 복호화 연산들이 수행될 수 있다. 결과적으로, 암호화/복호화 회로(1350)의 연산 성능이 향상될 수 있다. 도 2, 도 12, 및 도 13의 클록 신호들(CLK2, CLK3) 각각 역시 변경된 클록 신호(CCLK1)로 대체될 수 있다.Therefore, when the changed clock signal CCLK1 is employed in place of the clock signal CLK1, the length of the initialization period may be shortened and the length of the calculation period may be long. In this case, more cryptographic operations and / or decryption operations may be performed during the extended computation period. As a result, the computing performance of the encryption /
변경된 클록 신호(CCLK1)는 암호화/복호화 회로(1350) 내부 또는 외부의 클록 생성기로부터 제공될 수 있다. 이러한 클록 생성기는 클록 신호(CLK1)의 것과 상이한 듀티 비 또는 듀티 사이클을 갖는 변경된 클록 신호(CCLK1)를 생성하기 위해 재설계될 수 있다. 몇몇 실시 예에서, 암호화/복호화 회로(1350)의 연산 성능을 적응적으로 제어하기 위해, 변경된 클록 신호(CCLK1)의 듀티 비 또는 듀티 사이클은 프로그램 가능(Programmable)하거나 조절 가능(Adjustable)할 수 있다.The modified clock signal CCLK1 may be provided from a clock generator internal or external to the encryption /
한편, 몇몇 실시 예에서, 변경된 클록 신호(CCLK1)는 클록 생성기의 재설계 없이 구현될 수 있다. 이러한 실시 예들은 도 15 내지 도 19를 참조하여 설명될 것이다.On the other hand, in some embodiments, the modified clock signal CCLK1 may be implemented without redesigning the clock generator. These embodiments will be described with reference to Figs. 15 to 19. Fig.
도 15는 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(3350)는 암호화 연산기(3352), 암호화/복호화 컨트롤러(3356), 및 클록 컨트롤러(3357)를 포함할 수 있다.15 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of FIG. In some embodiments, the encryption /
암호화 연산기(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)는 일반 클록 신호로서 이해될 수 있다.
클록 컨트롤러(3357)는 제 1 클록 신호에 기초하여 제 2 클록 신호(예컨대, 변경된 클록 신호(CCLK1))를 생성할 수 있다. 제 2 클록 신호는 도 14를 참조하여 설명된 변경된 클록 신호(CCLK1)에 대응할 수 있다. 몇몇 실시 예에서, 변경된 클록 신호(CCLK1)는 재설계된 클록 생성기로부터 생성되는 대신, 클록 컨트롤러(3357)에 의해 클록 신호(CLK1)로부터 생성될 수 있다.The
변경된 클록 신호(CCLK1)는 암호화 연산기(3352)로 제공될 수 있다. 암호화 연산기(3352)의 논리 게이트들은 클록 신호(CLK1) 대신, 변경된 클록 신호(CCLK1)에 기초하여 동작할 수 있다. 도 14에 나타낸 것과 같이, 변경된 클록 신호(CCLK1)에서, 연산 구간의 길이가 초기화 구간의 길이보다 길 수 있다. 따라서, 암호화 연산기(3352)의 연산 성능이 향상될 수 있다.The modified clock signal CCLK1 may be provided to the
몇몇 실시 예에서, 클록 컨트롤러(3357)의 일부 또는 전부는 암호화/복호화 컨트롤러(3356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 클록 컨트롤러(3357)의 일부 또는 전부는 암호화/복호화 회로(3350) 외부에 제공될 수 있다. 도 15의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(3350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the
몇몇 실시 예에서, 암호화/복호화 회로(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)를 수신할 수 있다.Fig. 15 shows that the modified 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의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.16 is a block diagram illustrating an exemplary configuration of the clock controller of FIG. FIG. 17 is a timing diagram illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 15 including the clock controller of FIG. 16;
도 16을 참조하면, 클록 컨트롤러(3357)는 버퍼(3357a) 및 조합 논리 게이트(3357b)를 포함할 수 있다. 클록 컨트롤러(3357)는 클록 신호(CLK1)를 수신할 수 있다. 버퍼(3357a)는 클록 신호(CLK1)를 지연시킬 수 있다. 따라서, 버퍼(3357a)는 지연된 클록 신호(dCLK1)를 출력할 수 있다.16, the
도 17은 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 보여준다. 버퍼(3357a)는 클록 신호(CLK1)를 지연시켜, 지연된 클록 신호(dCLK1)를 출력할 수 있다. 지연된 클록 신호(dCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 동일할 수 있다. 지연된 클록 신호(dCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 동일할 수 있다.Fig. 17 shows the clock signal CLK1 and the delayed clock signal dCLK1. The
다시 도 16을 참조하면, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)를 수신할 수 있다. 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357b)는 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 16,
다시 도 17을 참조하면, 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1) 모두가 논리 "0"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "0"의 값을 가질 수 있다. 반면, 클록 신호(CLK1) 및 지연된 클록 신호(dCLK1) 중 적어도 하나가 논리 "1"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "1"의 값을 가질 수 있다. 따라서, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 초기화 구간의 길이는 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 연산 구간의 길이보다 짧을 수 있다. 이러한 변경된 클록 신호(CCLK1)는 연산 성능이 향상되게 할 수 있다.Referring back to Fig. 17, when both the clock signal CLK1 and the delayed clock signal dCLK1 have a logic "0" value, the modified clock signal CCLK1 may have a value of logic "0 ". On the other hand, when at least one of the clock signal CLK1 and the delayed clock signal dCLK1 has a value of logic "1 ", the changed clock signal CCLK1 may have a value of logic" 1 ". Therefore, the length of the initialization period in which the changed clock signal CCLK1 has the value of logic "0 " may be shorter than the length of the computation interval in which the changed clock signal CCLK1 has the value of logic" 1 ". This modified clock signal CCLK1 can improve the calculation performance.
클록 신호(CLK1)의 지연이 지나치게 긴 경우, 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 오히려 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 길어질 수 있다. 한편, 클록 신호(CLK1)의 지연이 지나치게 짧은 경우, 변경된 클록 신호(CCLK1)의 논리 값이 교번하지 않을 수 있다. 따라서, 버퍼(3357a)는 변경된 클록 신호(CCLK1)의 초기화 구간의 길이가 변경된 클록 신호(CCLK1)의 연산 구간의 길이보다 짧도록 클록 신호(CLK1)를 적당하게 지연시킬 수 있다. 몇몇 경우, 버퍼(3357a)의 지연은 프로그램 가능하거나 조절 가능할 수 있다.If the delay of the clock signal CLK1 is excessively long, the length of the initialization period of the changed clock signal CCLK1 may be longer than the length of the calculation period of the changed clock signal CCLK1. On the other hand, when the delay of the clock signal CLK1 is too short, the logical value of the changed clock signal CCLK1 may not be alternated. Therefore, the
도 18은 도 15의 클록 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 도 19는 도 18의 클록 컨트롤러를 포함하는 도 15의 암호화/복호화 회로에서 수행되는 예시적인 암호화/복호화 연산의 시간 구간들을 설명하기 위한 타이밍도이다.18 is a block diagram illustrating an exemplary configuration of the clock controller of FIG. 19 is a timing diagram for illustrating time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit of FIG. 15 including the clock controller of FIG. 18;
도 18을 참조하면, 클록 컨트롤러(3357)는 분주기(Divider, 3357c) 및 조합 논리 게이트(3357d)를 포함할 수 있다. 클록 컨트롤러(3357)는 빠른 클록 신호(fCLK1)를 수신할 수 있다. 분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주할 수 있다. 따라서, 분주기(3357c)는 클록 신호(CLK1)를 출력할 수 있다. 예로서, 분주기(3357c)는 카운터 레지스터, 시프트 레지스터 등과 같은 논리 회로를 포함할 수 있다.Referring to FIG. 18, the
도 19는 빠른 클록 신호(fCLK1) 및 클록 신호(CLK1)를 보여준다. 클록 신호(CLK1)는 암호화/복호화 회로에서 암호화 연산 및/또는 복호화 연산을 수행하는 데에 이용되는 주파수를 가질 수 있다. 따라서, 클록 신호(CLK1)는 일반 클록 신호로서 이해될 수 있다. 빠른 클록 신호(fCLK1)의 주파수는 클록 신호(CLK1)의 주파수보다 높을 수 있다. 도 18 및 도 19의 실시 예에서, 클록 신호(CLK1)를 생성하기 위해 빠른 클록 신호(fCLK1)를 출력하는 클록 생성기가 제공될 수 있다.19 shows the fast clock signal fCLK1 and the clock signal CLK1. The clock signal CLK1 may have a frequency used to perform cryptographic operation and / or decryption operation in the encryption / decryption circuit. Thus, the clock signal CLK1 can be understood as a general clock signal. The frequency of the fast clock signal fCLK1 may be higher than the frequency of the clock signal CLK1. In the embodiment of Figures 18 and 19, a clock generator may be provided that outputs a fast clock signal fCLK1 to generate a clock signal CLK1.
분주기(3357c)는 빠른 클록 신호(fCLK1)를 분주하여, 분주된 클록 신호(CLK1)를 출력할 수 있다. 분주된 클록 신호(CLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "0"의 값을 갖는 시간 구간의 길이와 상이할 수 있다. 분주된 클록 신호(CLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이는 빠른 클록 신호(fCLK1)가 논리 "1"의 값을 갖는 시간 구간의 길이와 상이할 수 있다.The
다시 도 18을 참조하면, 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)를 수신할 수 있다. 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)에 기초하여, 변경된 클록 신호(CCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(3357d)는 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1)에 대해 논리 합 연산을 수행할 수 있다.Referring again to FIG. 18,
다시 도 19를 참조하면, 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1) 모두가 논리 "0"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "0"의 값을 가질 수 있다. 반면, 빠른 클록 신호(fCLK1) 및 분주된 클록 신호(CLK1) 중 적어도 하나가 논리 "1"의 값을 갖는 경우, 변경된 클록 신호(CCLK1)는 논리 "1"의 값을 가질 수 있다. 따라서, 변경된 클록 신호(CCLK1)가 논리 "0"의 값을 갖는 초기화 구간의 길이는 변경된 클록 신호(CCLK1)가 논리 "1"의 값을 갖는 연산 구간의 길이보다 짧을 수 있다. 이러한 변경된 클록 신호(CCLK1)는 연산 성능이 향상되게 할 수 있다.19, if both the fast clock signal fCLK1 and the divided clock signal CLK1 have a logic "0" value, the modified clock signal CCLK1 may have a value of logic "0" . On the other hand, when at least one of the fast clock signal fCLK1 and the divided clock signal CLK1 has a value of logic "1 ", the changed clock signal CCLK1 may have a value of logic" 1 ". Therefore, the length of the initialization period in which the changed clock signal CCLK1 has the value of logic "0 " may be shorter than the length of the computation interval in which the changed clock signal CCLK1 has the value of logic" 1 ". This modified clock signal CCLK1 can improve the calculation performance.
도 20은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 몇몇 실시 예에서, 암호화/복호화 회로(4350)는 암호화 연산기(4352), 암호화/복호화 컨트롤러(4356), 및 초기화 컨트롤러(4357)를 포함할 수 있다.Fig. 20 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of Fig. 2; Fig. In some embodiments, the encryption /
암호화 연산기(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)의 연산 성능이 최대화될 수 있다.6 and 14, when the time interval (for example, the initialization period) in which the clock signal CLK1 has the first logical value (e.g., logic "0") becomes longer, ) May be degraded. When the initialization interval is completely omitted, the operation performance of the
제어 값(IEN)은 초기화 구간의 발생 및 생략에 영향을 줄 수 있다. 예로서, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 초기화 구간이 생략될 수 있고 연산 구간만이 발생할 수 있다. 따라서, 고속 모드에서, 암호화 연산기(4352)의 연산 성능이 최대화될 수 있다. 반면, 제어 값(IEN)이 암호화 연산이 저속 모드에서 수행됨을 지시하는 경우, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.The control value IEN may affect the occurrence and omission of the initialization period. For example, if the control value IEN indicates that the encryption operation is performed in the fast mode, the initialization interval may be omitted and only the computation interval may occur. Therefore, in the fast mode, the operation performance of the
제어 값(IEN)은 도 1의 컴퓨팅 장치(1000)의 사용자로부터 제공될 수 있다. 또는, 컴퓨팅 장치(1000)의 정책에 의존하여, 제어 값(IEN)은 도 1의 프로세서 장치(1100) 및/또는 메모리 컨트롤러(1330)로부터 제공될 수 있다. 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산의 성능에 대한 요구에 적합하게, 저속 모드 및 고속 모드를 지시하는 논리 값들 중 하나를 가질 수 있다.The control value IEN may be provided from a user of the
예로서, 제어 값(IEN)은 도 2의 레지스터(1356a)에 저장될 수 있다. 암호화/복호화 컨트롤러(4356)는 레지스터(1356a)에 저장된 제어 값(IEN)에 기초하여 암호화 연산기(4352)의 암호화 연산을 관리할 수 있고, 초기화 컨트롤러(4357)는 레지스터(1356a)로부터 제어 값(IEN)을 수신할 수 있다.By way of example, the control value IEN may be stored in register 1356a of FIG. The encryption /
몇몇 경우, 초기화 컨트롤러(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 encryption operation is to be performed in the low speed mode, the controlled clock signal TCLK1 has a first logic value (e.g., logic "0") and a second logic Value (e. G., Logic "1"). Therefore, the initialization interval and the computation interval may alternately occur.
반면, 제어 값(IEN)이 암호화 연산이 고속 모드에서 수행됨을 지시하는 경우, 제어된 클록 신호(TCLK1)의 값은 제 2 논리 값으로 유지될 수 있다. 따라서, 암호화 연산기(4352)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있고, 연산 성능이 최대화될 수 있다. 제어된 클록 신호(TCLK1)는 도 21을 참조하여 더 설명될 것이다.On the other hand, when the control value IEN indicates that the encryption operation is performed in the fast mode, the value of the controlled clock signal TCLK1 may be maintained at the second logic value. Therefore, the
몇몇 실시 예에서, 초기화 컨트롤러(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)를 수신할 수 있다.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 for explaining time intervals of an exemplary encryption / decryption operation performed in the encryption / decryption circuit including the initialization controller of FIG. 20; FIG.
예로서, 제 1 논리 값(예컨대, 논리 "0")을 갖는 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산이 저속 모드에서 수행됨을 지시할 수 있다. 예로서, 제 2 논리 값(예컨대, 논리 "1")을 갖는 제어 값(IEN)은 암호화 연산 및/또는 복호화 연산이 고속 모드에서 수행됨을 지시할 수 있다. 다만, 본 발명은 이 예들에 의해 한정되지 않고, 저속 모드에 대응하는 논리 값과 고속 모드에 대응하는 논리 값은 서로 바뀔 수 있다.By way of example, a control value IEN with a first logical value (e.g., logic "0") may indicate that the encryption and / or decryption operation is performed in a low speed mode. By way of example, a control value IEN with a second logical value (e.g., logic "1") may indicate that the encryption and / or decryption operation is performed in a fast mode. However, the present invention is not limited to these examples, and the logical value corresponding to the low-speed mode and the logical value corresponding to the high-speed mode may be mutually exchanged.
제어 값(IEN)이 논리 "1"의 값을 갖는 동안, 암호화/복호화 회로(4350)는 저속 모드에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다. 저속 모드에서, 제어된 클록 신호(TCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 암호화/복호화 회로(4350)의 논리 게이트들은 초기화 구간에서 리셋될 수 있고, 연산 구간에서 암호화 연산 및/또는 복호화 연산을 수행할 수 있다.While the control value IEN has a value of logic "1 ", the encryption /
제어 값(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 exemplary configurations of the initialization controller of FIG. 20 with respect to the timing diagram of FIG.
도 22a를 참조하면, 초기화 컨트롤러(4357)는 조합 논리 게이트(4357a)를 포함할 수 있다. 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)을 조합하여 제어된 클록 신호(TCLK1)를 생성할 수 있다. 예로서, 조합 논리 게이트(4357a)는 클록 신호(CLK1) 및 제어 값(IEN)의 반전 값(~IEN)에 대해 논리 합 연산을 수행할 수 있다.Referring to FIG. 22A,
도 22a의 예에서, 제어 값(IEN)이 저속 모드를 지시하는 경우(예컨대, 논리 "1"의 값을 갖는 경우), 조합 논리 게이트(4357a)는 클록 신호(CLK1)에 대응하는 제어된 클록 신호(TCLK1)를 생성할 수 있다. 반면, 제어 값(IEN)이 고속 모드를 지시하는 경우(예컨대, 논리 "0"의 값을 갖는 경우), 조합 논리 게이트(4357a)는 논리 "1"의 값을 갖는 제어된 클록 신호(TCLK1)를 생성할 수 있다.In the example of FIG. 22A,
도 22b를 참조하면, 초기화 컨트롤러(4357)는 트랜지스터들(4357b, 4357c)을 포함할 수 있다. 트랜지스터(4357b)는 제어 값(IEN)의 반전 값(~IEN)에 응답하여 논리 "1"의 값을 제어된 클록 신호(TCLK1)로서 전달할 수 있다. 트랜지스터(4357c)는 제어 값(IEN)에 응답하여 클록 신호(CLK1)를 제어된 클록 신호(TCLK1)로서 전달할 수 있다.Referring to FIG. 22B,
도 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)는 초기화 구간 없이 연산 구간에서 꾸준히 암호화 연산을 수행할 수 있다. 따라서, 고속 모드에서, 연산 성능이 최대화될 수 있다.When the
도 23은 도 2의 암호화/복호화 회로에 포함되는 예시적인 구성을 보여주는 블록도이다. 도 24는 도 23의 초기화 랜더마이저(Randomizer)의 예시적인 구성을 보여주는 블록도이다.23 is a block diagram showing an exemplary configuration included in the encryption / decryption circuit of Fig. FIG. 24 is a block diagram showing an exemplary configuration of the initialization randomizer of FIG. 23. FIG.
도 23을 참조하면, 몇몇 실시 예에서, 암호화/복호화 회로(5350)는 암호화 연산기(5352), 암호화/복호화 컨트롤러(5356), 및 초기화 랜더마이저(5357)를 포함할 수 있다. 도 24를 참조하면, 몇몇 실시 예에서, 초기화 랜더마이저(5357)는 랜덤 값 생성기(5357a) 및 조합 논리 게이트(5357b)를 포함할 수 있다.Referring to Figure 23, in some embodiments, the encryption /
암호화 연산기(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")을 번갈아가며 갖는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점이 예측될 수 있다.If the clock signal CLK1 alternately has a first logical value (e.g., logic "0") and a second logical value (e.g., logic "1") alternately, Can be predicted.
한편, 초기화 구간이 랜덤하게 발생하거나 발생하지 않도록 제어되는 경우, 초기화 구간이 발생하는 시점 및 연산 구간이 발생하는 시점을 예측하는 것이 어려울 수 있다. 이는, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 암호화 연산 및/또는 복호화 연산이 수행되는 연산 구간이 랜덤하게 가변(Variable)할 수 있기 때문이다.On the other hand, if the initialization interval is controlled to occur randomly or not, it may be difficult to predict when the initialization interval occurs and when the calculation interval occurs. This is because, if the initialization interval occurs randomly or does not occur, the operation interval in which the encryption operation and / or the decryption operation is performed can be randomly variable.
따라서, 초기화 구간이 랜덤하게 발생하거나 발생하지 않는 경우, 공격자는 공격자가 공격하고자 하는 암호화 연산 및/또는 복호화 연산이 시작되는 시점을 조절(Align)하기 어려울 수 있다. 결과적으로, 부 채널 분석 공격이 어려워질 수 있고, 보안 수준이 향상될 수 있다.Accordingly, when the initialization interval occurs randomly or does not occur, the attacker may be difficult to align the starting point of the encryption operation and / or the decryption operation to be attacked by the attacker. As a result, subchannel analysis attacks can be difficult and the level of security can be improved.
도 23을 참조하면, 초기화 랜더마이저(5357)는 클록 신호(CLK1)를 수신할 수 있다. 클록 신호(CLK1)는 제 1 논리 값(예컨대, 논리 "0") 및 제 2 논리 값(예컨대, 논리 "1")을 규칙적으로 번갈아가며 갖는 일반 클록 신호일 수 있다.Referring to FIG. 23, the
초기화 랜더마이저(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"의 값 중 하나를 랜덤하게 가질 수 있다.
조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 기초하여, 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다. 이를 위해, 조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 대해 논리 연산을 수행할 수 있다. 예로서, 조합 논리 게이트(5357b)는 랜덤 값 및 클록 신호(CLK1)에 대해 논리 합 연산을 수행할 수 있고, 이로써 랜덤화된 클록 신호(RCLK1)를 생성할 수 있다.
도 23을 참조하면, 암호화 연산기(5352)는 클록 신호(CLK1)를 직접 수신하는 대신, 랜덤화된 클록 신호(RCLK1)에 기초하여 동작할 수 있다. 예로서, 암호화 연산기(5352)는 랜덤화된 클록 신호(RCLK1)에 기초하여 암호화 연산을 수행할 수 있다.Referring to FIG. 23, instead of directly receiving the clock signal CLK1, the
예로서, 랜덤 값 생성기(5357a)가 논리 "0"의 값을 갖는 랜덤 값을 생성하는 경우, 랜덤화된 클록 신호(RCLK1)는 클록 신호(CLK1)에 대응하여, 논리 "0"의 값 및 논리 "1"의 값을 번갈아가며 가질 수 있다. 따라서, 초기화 구간 및 연산 구간이 번갈아가며 발생할 수 있다.For example, when the
반면, 랜덤 값 생성기(5357a)가 논리 "1"의 값을 갖는 랜덤 값을 생성하는 경우, 랜덤화된 클록 신호(RCLK1)는 클록 신호(CLK1)에 관계없이, 논리 "1"의 값을 가질 수 있다. 따라서, 초기화 구간이 발생하지 않을 수 있고, 연산 구간만이 발생할 수 있다.On the other hand, when the
이러한 방식으로, 랜덤 값이 논리 "0"의 값 및 논리 "1"의 값을 랜덤하게 갖는 경우, 초기화 구간이 랜덤하게 발생하거나 발생하지 않을 수 있다. 초기화 구간의 발생이 랜덤화되는 경우, 암호화 연산 및/또는 복호화 연산이 시작되는 시점이 식별되기 어려울 수 있다. 따라서, 보안 수준이 향상될 수 있다. 랜덤 값의 랜덤화 수준을 증가시키기 위해, 랜덤 값을 생성하기 위해 이용되는 시드 값이 프로그램 가능하거나 가변할 수 있다.In this way, if the random value has a value of logic "0" and a value of logic "1 " at random, the initialization interval may occur randomly or not. When the occurrence of the initialization period is randomized, it may be difficult to identify the time at which the encryption and / or decryption operation is started. Thus, the level of security can be improved. To increase the randomization level of the random value, the seed value used to generate the random value may be programmable or variable.
몇몇 실시 예에서, 초기화 랜더마이저(5357)의 일부 또는 전부는 암호화/복호화 컨트롤러(5356)에 포함될 수 있다. 몇몇 다른 실시 예에서, 초기화 랜더마이저(5357)의 일부 또는 전부는 암호화/복호화 회로(5350) 외부에 제공될 수 있다. 초기화 랜더마이저(5357)는 클록 신호와 랜덤 값을 조합하기 위해 다양한 구성을 포함할 수 있다. 도 23 및 도 24의 예시적인 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 암호화/복호화 회로(5350)의 구성은 다양하게 변경 또는 수정될 수 있다.In some embodiments, some or all of the
몇몇 실시 예에서, 암호화/복호화 회로(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)를 수신할 수 있다.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 above description is a concrete example for realizing the technical idea of the present invention. The technical spirit of the present invention will include embodiments that can be obtained not only from the embodiments described above, but also from a simple design change or an easy modification. In addition, the technical idea of the present invention includes techniques that can be easily modified and implemented based on the embodiments described above.
1000 : 컴퓨팅 장치
1700 : 버스
2350, 3350, 4350, 5350 : 암호화/복호화 회로1000: computing device 1700: bus
2350, 3350, 4350, 5350: Encryption / decryption circuit
Claims (20)
상기 암호화 및 복호화 연산들 중 적어도 하나의 수행과 관련되는 제어 값, 및 클록 신호에 기초하여, 제 1 시간 구간 동안 상기 복수의 논리 게이트 각각이 제 1 논리 값을 출력하고 제 2 시간 구간 동안 상기 복수의 논리 게이트 중에서 상기 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수가 일정하게 유지되도록, 상기 암호화 연산기의 동작을 제어하도록 구성되는 컨트롤러를 포함하되,
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 복수의 논리 게이트는 상기 컨트롤러의 제어에 따라 상기 제 1 시간 구간 및 상기 제 2 시간 구간 중 하나에서 동작하도록 구성되는 전자 회로.An encryption calculator configured to perform at least one of encryption and decryption operations using a plurality of logic gates; And
And a control value associated with the performance of at least one of the encryption and decryption operations and a clock signal, wherein each of the plurality of logic gates outputs a first logic value during a first time interval and the plurality And a controller configured to control the operation of the encryption operator so that the number of logic gates outputting the first logic value and the number of logic gates outputting a second logic value among the logic gates of the first and second logic gates are kept constant,
If the control value indicates that at least one of the encryption and decryption operations is not performed, the plurality of logic gates are operated under one of the first time interval and the second time interval under the control of the controller An electronic circuit comprising:
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 경우, 상기 복수의 논리 게이트는 상기 컨트롤러의 제어에 따라 상기 클록 신호에 기초하여 상기 제 1 시간 구간 및 상기 제 2 시간 구간에서 번갈아가며 동작하도록 더 구성되는 전자 회로.The method according to claim 1,
Wherein said plurality of logic gates are controlled in said first time interval and said second time interval based on said clock signal in accordance with control of said controller if said control value indicates that at least one of said encryption and decryption operations is performed, And further configured to operate alternately.
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 복수의 논리 게이트로부터의 출력들이 변경되지 않고 상기 복수의 논리 게이트에 의해 소모되는 전력의 양이 일정하게 유지되는 전자 회로.The method according to claim 1,
If the control value indicates that at least one of the encryption and decryption operations is not performed, the outputs from the plurality of logic gates do not change and the amount of power consumed by the plurality of logic gates remains constant Electronic circuit.
상기 컨트롤러는 외부 장치로부터의 요청에 응답하여 상기 암호화 및 복호화 연산들이 수행되거나 수행되지 않음을 지시하는 상기 제어 값을 저장하도록 구성되는 레지스터를 포함하는 전자 회로.The method according to claim 1,
Wherein the controller is configured to store the control value indicating that the encryption and decryption operations are performed or not performed in response to a request from an external device.
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행될 데이터를 저장하도록 구성되는 버퍼를 더 포함하는 전자 회로.The method according to claim 1,
Wherein the at least one of the encryption and decryption operations is configured to store data to be performed.
상기 버퍼에 저장된 상기 데이터가 상기 암호화 및 복호화 연산들 중 적어도 하나의 연산 단위 크기를 갖지 않는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하고,
상기 버퍼에 저장된 상기 데이터가 상기 연산 단위 크기를 갖는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 전자 회로.6. The method of claim 5,
Wherein the control value indicates that at least one of the encryption and decryption operations is not performed if the data stored in the buffer does not have at least one of the encryption and decryption operations,
Wherein the control value indicates that at least one of the encryption and decryption operations is performed when the data stored in the buffer has the operation unit size.
상기 컨트롤러는 상기 암호화 및 복호화 연산들 중 적어도 하나의 반복 횟수에 관한 라운드(Round) 값을 관리하도록 더 구성되는 전자 회로.The method according to claim 1,
Wherein the controller is further configured to manage a round value for the number of iterations of at least one of the encryption and decryption operations.
상기 라운드 값이 0에 대응하는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하고,
상기 라운드 값이 0에 대응하지 않는 경우, 상기 제어 값은 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 전자 회로.8. The method of claim 7,
If the round value corresponds to zero, the control value indicates that at least one of the encryption and decryption operations is not performed,
Wherein the control value indicates that at least one of the encryption and decryption operations is performed if the round value does not correspond to zero.
상기 암호화 연산기에 의한 암호화(Encryption) 및 복호화(Decryption) 연산들 중 적어도 하나의 수행과 관련되는 제어 값을 출력하도록 구성되는 암호화 컨트롤러; 및
상기 제어 값 및 클록 신호에 기초하여 활성화 신호를 생성하도록 구성되는 구간 컨트롤러를 포함하되,
제 1 시간 구간 동안, 상기 복수의 논리 게이트 각각은 상기 활성화 신호의 비활성화 값에 응답하여 제 1 논리 값을 출력하고,
제 2 시간 구간 동안, 상기 복수의 논리 게이트 중에서 상기 제 1 논리 값을 출력하는 논리 게이트들의 개수 및 제 2 논리 값을 출력하는 논리 게이트들의 개수는 상기 활성화 신호의 활성화 값에 응답하여 일정하게 유지되는 전자 회로.An encryption calculator including a plurality of logic gates;
An encryption controller configured to output a control value associated with the execution of at least one of encryption and decryption operations by the encryption operator; And
And an interval controller configured to generate an activation signal based on the control value and the clock signal,
During a first time interval, each of the plurality of logic gates outputs a first logic value in response to an inactivation value of the activation signal,
During the second time interval, the number of logic gates outputting the first logic value and the number of logic gates outputting the second logic value among the plurality of logic gates are kept constant in response to the activation value of the activation signal Electronic circuit.
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 활성화 신호는 상기 비활성화 값을 갖고 상기 복수의 논리 게이트는 상기 제 1 시간 구간에서 동작하도록 구성되는 전자 회로.10. The method of claim 9,
Wherein the activation signal has the deactivation value and the plurality of logic gates are configured to operate in the first time interval when the control value indicates that at least one of the encryption and decryption operations is not performed.
상기 구간 컨트롤러는 조합 논리 게이트를 포함하고,
상기 조합 논리 게이트는:
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 상기 제어 값 및 상기 클록 신호를 조합하여, 상기 비활성화 값을 갖는 상기 활성화 신호를 생성하고;
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 상기 제어 값 및 상기 클록 신호를 조합하여, 상기 클록 신호에 대응하는 상기 활성화 신호를 생성하도록 구성되는 전자 회로.10. The method of claim 9,
Wherein the interval controller includes a combinational logic gate,
The combinational logic gate comprises:
Combining the control signal and the clock signal indicating that at least one of the encryption and decryption operations is not performed to generate the activation signal having the deactivation value;
And to combine the clock signal and the control value indicating that at least one of the encryption and decryption operations is performed to generate the activation signal corresponding to the clock signal.
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 경우, 상기 활성화 신호는 상기 활성화 값을 갖고 상기 복수의 논리 게이트는 상기 제 2 시간 구간에서 동작하도록 구성되는 전자 회로.10. The method of claim 9,
Wherein the activation signal has the activation value and the plurality of logic gates are configured to operate in the second time interval when the control value indicates that at least one of the encryption and decryption operations is not performed.
상기 구간 컨트롤러는 조합 논리 게이트를 포함하고,
상기 조합 논리 게이트는:
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행되지 않음을 지시하는 상기 제어 값의 반전 값 및 상기 클록 신호를 조합하여, 상기 활성화 값을 갖는 상기 활성화 신호를 생성하고;
상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 상기 제어 값의 반전 값 및 상기 클록 신호를 조합하여, 상기 클록 신호에 대응하는 상기 활성화 신호를 생성하도록 구성되는 전자 회로.10. The method of claim 9,
Wherein the interval controller includes a combinational logic gate,
The combinational logic gate comprises:
Generating the activation signal having the activation value by combining the clock signal and the inversion value of the control value indicating that at least one of the encryption and decryption operations is not performed;
And to generate the activation signal corresponding to the clock signal by combining the clock signal and an inverted value of the control value indicating that at least one of the encryption and decryption operations is performed.
상기 제어 값이 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 경우, 상기 활성화 신호는 상기 클록 신호에 응답하여 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 전자 회로.10. The method of claim 9,
Wherein the activation signal alternates between the deactivation value and the activation value in response to the clock signal when the control value indicates that at least one of the encryption and decryption operations is performed.
상기 제어 값이 상기 상기 암호화 및 복호화 연산들 중 적어도 하나가 수행됨을 지시하는 경우, 상기 복수의 논리 게이트는 상기 활성화 신호의 교번에 응답하여 상기 제 1 시간 구간 및 상기 제 2 시간 구간에서 번갈아가며 동작하도록 구성되는 전자 회로.15. The method of claim 14,
Wherein when said control value indicates that at least one of said encryption and decryption operations is performed, said plurality of logic gates alternately operate in said first time interval and said second time interval in response to an alternation of said activation signal, ≪ / RTI >
상기 데이터 입력/출력 장치를 위해 암호화(Encryption) 및 복호화(Decryption) 연산들을 수행하도록 구성되는 암호화/복호화 회로; 및
상기 암호화 및 복호화 연산들이 수행되는지 여부를 지시하는 제어 값, 및 클록 신호에 기초하여, 활성화 신호를 생성하도록 구성되는 구간 컨트롤러를 포함하되,
상기 제어 값이 상기 암호화 및 복호화 연산들이 수행되지 않음을 지시하는 경우, 비활성화 값 및 활성화 값 중 하나를 갖는 상기 활성화 신호에 응답하여, 상기 암호화/복호화 회로로부터의 출력들이 변경되지 않고 상기 암호화/복호화 회로에 의해 소모되는 전력의 양이 일정하게 유지되는 전자 장치.A data input / output device;
An encryption / decryption circuit configured to perform encryption and decryption operations for the data input / output device; And
And an interval controller configured to generate an activation signal based on a control value indicating whether the encryption and decryption operations are performed and a clock signal,
Decryption circuitry, wherein the control value indicates that the encryption and decryption operations are not performed, in response to the activation signal having one of an inactive value and an activation value, the outputs from the encryption / Wherein the amount of power consumed by the circuit is held constant.
상기 제어 값이 상기 암호화 및 복호화 연산들이 수행됨을 지시하는 경우, 상기 활성화 신호는 상기 클록 신호에 응답하여 상기 비활성화 값 및 상기 활성화 값을 번갈아가며 갖는 전자 장치.17. The method of claim 16,
Wherein the activation signal alternates between the deactivation value and the activation value in response to the clock signal when the control value indicates that the encryption and decryption operations are performed.
상기 클록 신호가 제 1 논리 값을 갖는 시간 구간의 길이는 상기 클록 신호가 제 2 논리 값을 갖는 시간 구간의 길이보다 짧은 전자 장치.17. The method of claim 16,
Wherein a length of a time interval in which the clock signal has a first logic value is shorter than a length of a time interval in which the clock signal has a second logic value.
상기 제어 값은 상기 암호화 및 복호화 연산들이 저속 모드 또는 고속 모드에서 수행되는지 여부를 더 지시하고,
상기 제어 값이 상기 암호화 및 복호화 연산들이 상기 저속 모드에서 수행됨을 지시하는 경우, 상기 클록 신호는 제 1 논리 값 및 제 2 논리 값을 번갈아가며 갖고,
상기 제어 값이 상기 암호화 및 복호화 연산들이 상기 고속 모드에서 수행됨을 지시하는 경우, 상기 클록 신호의 값은 상기 제 2 논리 값으로 유지되는 전자 장치.17. The method of claim 16,
Wherein the control value further indicates whether the encryption and decryption operations are performed in a low speed mode or a fast mode,
Wherein the clock signal alternates between a first logic value and a second logic value when the control value indicates that the encryption and decryption operations are performed in the low speed mode,
Wherein the value of the clock signal is maintained at the second logic value when the control value indicates that the encryption and decryption operations are performed in the fast mode.
제 1 논리 값 및 제 2 논리 값 중 하나를 랜덤(Random)하게 갖는 랜덤 값, 및 상기 제 1 논리 값 및 상기 제 2 논리 값을 번갈아가며 갖는 일반 클록 신호에 기초하여, 상기 클록 신호를 생성하도록 구성되는 초기화 랜더마이저(Randomizer)를 더 포함하는 전자 장치.17. The method of claim 16,
To generate the clock signal based on a random value having one of a first logic value and a second logic value randomly and a general clock signal alternating between the first logic value and the second logic value And an initialization renderer (Randomizer) configured.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/488,639 US10891396B2 (en) | 2016-05-27 | 2017-04-17 | Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same |
EP17167183.7A EP3249633A1 (en) | 2016-05-27 | 2017-04-20 | Electronic circuit performing encryption/decryption operation to prevent side-channel analysis attack, and electronic device including the same |
CN201710346062.1A CN107437988B (en) | 2016-05-27 | 2017-05-17 | Electronic circuit for preventing side channel analysis attack and electronic device comprising same |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20160065955 | 2016-05-27 | ||
KR1020160065955 | 2016-05-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170134946A true KR20170134946A (en) | 2017-12-07 |
KR102627585B1 KR102627585B1 (en) | 2024-01-25 |
Family
ID=60920633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160098292A KR102627585B1 (en) | 2016-05-27 | 2016-08-02 | Electronic circuit performing encryption/ decryption operation to prevent side-channel analysis attack, and electronic device including the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102627585B1 (en) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030169073A1 (en) * | 2002-03-06 | 2003-09-11 | Kabushiki Kaisha Toshiba | Logic circuitry-implemented bus buffer |
US6708273B1 (en) * | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US20040070419A1 (en) * | 2002-10-10 | 2004-04-15 | Masashi Hirano | Semiconductor integrated circuit |
US20080265968A1 (en) * | 2007-04-26 | 2008-10-30 | Shuji Furuichi | Clock frequency diffusing device |
US20100107025A1 (en) * | 2007-02-16 | 2010-04-29 | Freescale Semiconductor, Inc | System, computer program product and method for testing a logic circuit |
US20130238931A1 (en) * | 2011-12-02 | 2013-09-12 | Toshihiro Suzuki | Nonvolatile semiconductor storage device having encrypting arithmetic device |
KR20140112150A (en) * | 2013-03-13 | 2014-09-23 | 삼성전자주식회사 | Internal voltage generator and contactless IC card including the same |
KR20150016084A (en) * | 2013-08-02 | 2015-02-11 | 주식회사 르코어테크놀러지 | Driving Circuit For Light Emitting Diode and Method for Driving the LED |
-
2016
- 2016-08-02 KR KR1020160098292A patent/KR102627585B1/en active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708273B1 (en) * | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US20030169073A1 (en) * | 2002-03-06 | 2003-09-11 | Kabushiki Kaisha Toshiba | Logic circuitry-implemented bus buffer |
US20040070419A1 (en) * | 2002-10-10 | 2004-04-15 | Masashi Hirano | Semiconductor integrated circuit |
US20100107025A1 (en) * | 2007-02-16 | 2010-04-29 | Freescale Semiconductor, Inc | System, computer program product and method for testing a logic circuit |
US20080265968A1 (en) * | 2007-04-26 | 2008-10-30 | Shuji Furuichi | Clock frequency diffusing device |
US20130238931A1 (en) * | 2011-12-02 | 2013-09-12 | Toshihiro Suzuki | Nonvolatile semiconductor storage device having encrypting arithmetic device |
KR20140112150A (en) * | 2013-03-13 | 2014-09-23 | 삼성전자주식회사 | Internal voltage generator and contactless IC card including the same |
KR20150016084A (en) * | 2013-08-02 | 2015-02-11 | 주식회사 르코어테크놀러지 | Driving Circuit For Light Emitting Diode and Method for Driving the LED |
Also Published As
Publication number | Publication date |
---|---|
KR102627585B1 (en) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11856116B2 (en) | Method and apparatus for protecting embedded software | |
US10291390B2 (en) | Endecryptor preventing side channel attack, driving method thereof and control device having the same | |
JP2022541057A (en) | Cryptographic architecture for cryptographic permutation | |
US9397834B2 (en) | Scrambling an address and encrypting write data for storing in a storage device | |
US20150089245A1 (en) | Data storage in persistent memory | |
KR102628010B1 (en) | Encryption circuit for virtual encryption operation | |
CN107437988B (en) | Electronic circuit for preventing side channel analysis attack and electronic device comprising same | |
JP6109441B1 (en) | Dynamic encryption key for use with XTS encryption systems that employ round-reduction encryption | |
US11115181B2 (en) | Memory device, host device, and memory system | |
US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
US11863670B2 (en) | Efficient side-channel-attack-resistant memory encryptor based on key update | |
US20190116022A1 (en) | Encryption device and operation method thereof | |
US11429751B2 (en) | Method and apparatus for encrypting and decrypting data on an integrated circuit | |
Liu et al. | An energy-efficient encryption mechanism for NVM-based main memory in mobile systems | |
JP2023542936A (en) | Metadata tweak for channel encryption differentiation | |
US20130198528A1 (en) | Modifying a Length of an Element to Form an Encryption Key | |
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 | |
Ege et al. | Memory encryption for smart cards | |
JP6473874B2 (en) | Memory device, host device, and memory system | |
EP4320511A1 (en) | Secure pseudo-random number generator (prng) reseeding | |
JP2017028506A (en) | Memory device, host device, and memory system |
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 |