KR20210108787A - 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기 - Google Patents

듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기 Download PDF

Info

Publication number
KR20210108787A
KR20210108787A KR1020200023836A KR20200023836A KR20210108787A KR 20210108787 A KR20210108787 A KR 20210108787A KR 1020200023836 A KR1020200023836 A KR 1020200023836A KR 20200023836 A KR20200023836 A KR 20200023836A KR 20210108787 A KR20210108787 A KR 20210108787A
Authority
KR
South Korea
Prior art keywords
value
encoding
encoder
gate
encoding value
Prior art date
Application number
KR1020200023836A
Other languages
English (en)
Inventor
김재혁
이혜수
최홍묵
강지수
김현일
신종훈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020200023836A priority Critical patent/KR20210108787A/ko
Priority to US17/060,099 priority patent/US11593527B2/en
Priority to CN202011549749.3A priority patent/CN113315622A/zh
Publication of KR20210108787A publication Critical patent/KR20210108787A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Abstract

본 개시의 기술적 사상의 일측면에 따른 시큐리티 회로는 입력 데이터를 수신하고, 상기 입력 데이터에 기초한 디코딩 신호를 출력하는 디코더, 상기 디코딩 신호에 기초하여, N(N은 1 이상의 자연수) 진수의 정수들 중 어느 하나에 대응되는 제1 표현형들 중 하나를 제1 인코딩 값으로써 출력하는 제1 인코더, 상기 디코딩 신호에 기초하여, 상기 N 진수의 정수들 중 어느 하나에 대응되는 제2 표현형들 중 하나를 제2 인코딩 값으로써 출력하는 제2 인코더 및 상기 제1 인코딩 값 및 상기 제2 인코딩 값에 대한 로직 연산을 통해 출력 데이터를 생성하는 게이트 모듈을 포함할 수 있다.

Description

듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기 {A security circuit including dual encoder and endecryptor including thereof}
본 개시의 기술적 사상은 시큐리티 회로에 관한 것으로, 상세하게는 두 개의 인코더들이 하나의 디코더를 공유하는 S-box(substitution box)를 포함하는 시큐리티 회로 및 상기 S-box를 포함하는 암복호화기에 관한 것이다.
개인화된 전자 장치는 사용자에 관한 보안 정보를 포함한다. 사용자의 보안 정보가 해킹에 의하여 유출되는 것을 방지하기 위해, 서명이나 인증 절차를 밟아 전송되는 보안 정보를 암호문으로 만들어서 전송하는 하드웨어 암호화/복호화 장치(즉, 암복호화기)가 필요하다.
암호화(encryption) 기술은 데이터 전송의 안전성을 보장하기 위해 자주 이용되고 있다. 암호화 기술은 송신측(transmission side)에서 평문(plain text)을 암호화(encrypt)하고, 수신측(receiving side)에서 암호문(cipher text)을 해독(decrypt)한다. 이러한 평문의 암호화 및 암호문의 복호화는 암호화 기술로 알려져 있다.
암호화 연산은 일반적으로 속도가 느리기 때문에, 스마트 카드와 같은 장치에 적용하기 위해서 하드웨어로 구현되는 경우가 많다. 블록 암호화(block cipher) 알고리즘에는 DES(Data Encryption Standard), AES(Advanced Encryption Standard), SEED, ARIA 및 SM4 등을 포함할 수 있다.
암복호화 연산기의 구현에 있어서, 가장 중요한 요소 중 하나는 부채널 공격(side channel attack)에 대한 방지 기술을 적용하는 것이다. 부채널 공격 방지 기술로는 부채널을 통해 수집하는 정보인 전력, 전자기파(electromagnetic wave)를 랜덤하게 나타나도록 하거나 균일하게 나타나게 하는 방법이 사용될 수 있다.
블록 암호화 알고리즘의 경우 S-box가 주요 공격의 대상이 될 수 있다. S-box에서 수행하는 치환(substitution) 연산의 보안성에 기반하여 암복호화 연산기의 보안성이 결정될 수 있다. S-box를 이중화함으로써 보안성을 향상시키는 경우, 부채널 공격을 어렵게 할 수 있지만 디코더 로직이 중복되어 사용되는 등 불필요한(redundant) 로직이 증가할 수 있었다.
본 개시의 기술적 사상이 해결하려는 과제는, 두 개의 인코더들이 하나의 디코더를 공유하여 적은 면적으로 S-box를 구현하고, 출력 데이터들의 해밍 웨이트를 균일하게 조정함으로써 부채널 공격을 방지할 수 있는 S-box 및 상기 S-box를 포함하는 암복호화기를 제공하는 것에 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 시큐리티 회로는 입력 데이터를 수신하고, 상기 입력 데이터에 기초한 디코딩 신호를 출력하는 디코더, 상기 디코딩 신호에 기초하여, N(N은 1 이상의 자연수) 진수의 정수들 중 어느 하나에 대응되는 제1 표현형들 중 하나를 제1 인코딩 값으로써 출력하는 제1 인코더, 상기 디코딩 신호에 기초하여, 상기 N 진수의 정수들 중 어느 하나에 대응되는 제2 표현형들 중 하나를 제2 인코딩 값으로써 출력하는 제2 인코더 및 상기 제1 인코딩 값 및 상기 제2 인코딩 값에 대한 로직 연산을 통해 출력 데이터를 생성하는 게이트 모듈을 포함할 수 있다.
한편, 본 개시의 기술적 사상의 다른 일측면에 따른 시큐리티 회로는 제1 디코딩 값을 출력하는 제1 퍼뮤테이션 로직, 제2 디코딩 값을 출력하는 제2 퍼뮤테이션 로직, 상기 제1 디코딩 값을 수신하는 복수의 제1 행 게이트들을 포함하고, 제1 행 게이트가 비트 값 1 의 바이너리를 출력함에 응답하여 상기 제1 행 게이트에 할당된 제1 표현형을 제1 인코딩 값으로써 출력하는 제1 인코더 및 상기 제2 디코딩 값을 수신하는 복수의 제2 행 게이트들을 포함하고, 제2 행 게이트가 비트 값 1 의 바이너리를 출력함에 응답하여 상기 제2 행 게이트에 할당된 제2 표현형을 제2 인코딩 값으로써 출력하는 제2 인코더를 포함할 수 있다.
한편, 본 개시의 기술적 사상의 또 다른 일측면에 따른 암복호화기는 외부 장치로부터 입력 데이터를 수신하는 입력단, 상기 입력단을 통해 수신된 상기 입력 데이터를 암호화 또는 복호화한 출력 데이터를 출력하는 S-box 및 상기 출력 데이터를 출력하는 출력단을 포함하며, 상기 S-box는, 상기 입력 데이터에 기초한 디코딩 신호을 출력하는 디코더, 상기 디코딩 신호에 기초하여, 제1 표현형들 중 하나를 제1 인코딩 값으로써 출력하는 제1 인코더 및 상기 디코딩 신호에 기초하여, 제2 표현형들 중 하나를 제2 인코딩 값으로써 출력하는 제2 인코더를 더 포함하며, 상기 출력 데이터는, 상기 제1 인코딩 값 및 상기 제2 인코딩 값에 대해 로직 연산한 것임을 특징으로 할 수 있다.
본 개시의 기술적 사상에 따른 S-box 및 암복호화기는 균일한 해밍 웨이트를 갖는 데이터들을 출력함으로써 보안성을 향상시킬 수 있으며, 두 개의 인코더들이 하나의 디코더를 공유함으로써 불필요한 로직을 생략함으로써 처리량 및 면적을 감소시킬 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 암복호화기를 설명하기 위한 블록도이다.
도 3은 본 개시의 예시적 실시예에 따른 S-box를 설명하기 위한 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 S-box를 설명하기 위한 블록도이다.
도 5는 본 개시의 예시적 실시예에 따른 인코더 모듈을 설명하기 위한 디지털 회로도이다.
도 6a 및 도 6b는 본 개시의 예시적 실시예에 따른 인코딩 회로를 설명하기 위한 디지털 회로도이다.
도 7은 본 개시의 예시적 실시예에 따른 인코딩 값들을 설명하기 위한 테이블이다.
도 8은 본 개시의 예시적 실시예에 따른 제1 인코딩 값 및 제2 인코딩 값을 설명하기 위한 테이블이다.
도 9는 본 개시의 예시적 실시예에 따른 S-box를 설명하기 위한 디지털 회로도이다.
도 10은 본 개시의 예시적 실시예에 따른 제3 인코딩 값 및 제4 인코딩 값을 설명하기 위한 테이블이다.
도 11은 본 개시의 예시적 실시예에 따른 표현형들의 제1 조합을 설명하기 위한 테이블이다.
도 12은 본 개시의 예시적 실시예에 따른 표현형들의 제2 조합을 설명하기 위한 테이블이다.
도 13은 본 개시의 예시적 실시예에 따른 표현형들의 제3 조합을 설명하기 위한 테이블이다.
도 14a 및 도 14b는 도 13의 표현형들을 갖는 인코딩 값들에 기반하여 XOR 연산한 출력 데이터들을 설명하기 위한 테이블이다.
도 15는, 도 13의 표현형들을 갖는 인코딩 값들의 해밍 웨이트를 설명하기 위한 테이블이다.
도 16a 및 도 16b는 본 개시의 예시적 실시예에 따른 인코딩 회로를 설명하기 위한 디지털 회로도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 전자 장치(1000)는 스마트 카드, 메모리 카드 등을 제어할 수 있으며, 예컨대, 전자 장치(1000)는 어플리케이션 프로세서를 포함할 수 있다.
전자 장치(1000)는 암복호화기(1), 프로세서(2), PHY(physical layer)(3) 및 메모리 컨트롤러(4)를 포함할 수 있다. 프로세서(2)는 PHY(3)를 통하여 RF 칩(5)과 데이터 송수신을 수행할 수 있다. 또한, 프로세서(2)는 작업(task)을 실행하고, 그 결과를 메모리 컨트롤러(4)의 제어를 통해 메모리 장치(6)에 저장할 수 있다. 예컨대, 프로세서(2)는 적어도 하나의 코어를 포함할 수 있다.
암복호화기(1)는 외부 장치(예컨대, RF 칩(5) 및/또는 메모리 장치(6))로부터 전자 장치(1000)로 수신된 데이터를 암호화 또는 복호화하거나, 전자 장치(1000)로부터 외부 장치로 출력될 데이터를 암호화 또는 복호화할 수 있다. 암복호화기(1)는 전자 장치(1000)의 보안성을 향상시키기 위해서, 전자 장치(1000)가 동작하는데 필요한 데이터들의 적어도 일부를 암호화 또는 복호화할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 암복호화기를 설명하기 위한 블록도이다.
도 2를 참조하면, 암복호화기(1)는 입력단(11), S-box(substitution-box)(12) 및 출력단(13)을 포함할 수 있다.
본 개시의 예시적 실시예에 따른 암복호화기(1)는 전자 장치(1000)로 수신된 데이터를 암호화할 수 있다. 또한, 암복호화기(1)는 암호화된 데이터를 복호화할 수 있다. 예컨대, 암복호화기(1)는 수신한 데이터를 S-box(12)로 제공할 수 있다. 이 경우, S-box(12)는 입력단(11)을 통해 입력 데이터(SB_IN)를 수신할 수 있다. S-box(12)는 소정의 치환(substitution) 연산에 의해 입력 데이터(SB_IN)를 출력 데이터(SB_O)로 치환할 수 있다. S-box(12)는 입력 데이터(SB_IN)의 적어도 일부의 비트들과 상이한 비트들을 갖는 출력 데이터(SB_O)를 외부 장치로 출력할 수 있다. 예컨대, 입력 데이터(SB_IN)와 출력 데이터(SB_O)는 1:1 매핑이 될 수 있으며, 입력 데이터(SB_IN)의 비트수(예컨대, 8 비트)는 출력 데이터(SB_O)의 비트수(예컨대, 8 비트)와 동일할 수 있다. 이하에서, S-box(12)는 보안 연산을 수행한다는 점에서 시큐리티 회로로 칭할 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 S-box를 설명하기 위한 블록도이다.
도 3을 참조하면, 암복호화기(1)는 입력단(11), S-box(12), 게이트 모듈(240), 및 출력단(13)을 포함할 수 있으며, S-box(12)는 디코더(210), 퍼뮤테이션 모듈(220) 및 인코더 모듈(230)을 포함할 수 있고, 게이트 모듈(240)은 제1 XOR 게이트(241) 및 제2 XOR 게이트(242)를 포함할 수 있다. 퍼뮤테이션 모듈(220)은 제1 퍼뮤테이션 로직(221) 및 제2 퍼뮤테이션 로직(222)을 포함할 수 있으며, 인코더 모듈(230)은 제1 인코더(231) 및 제2 인코더(232)를 포함할 수 있다. 한편, 도시된 바와 달리, 게이트 모듈(240)은 S-box(12)에 포함될 수 도 있다.
디코더(210)는 입력단(11)으로부터 입력 데이터(SB_IN)를 수신하고, 입력 데이터(SB_IN)에 기초한 디코딩 신호들(DS1, DS2)을 출력할 수 있다. 디코딩 신호들(DS1, DS2)은 제1 디코딩 신호(DS1) 및 제2 디코딩 신호(DS2)를 포함할 수 있다.
퍼뮤테이션 모듈(220)은 디코더(210)로부터 디코딩 신호들(DS1, DS2)을 수신하고, 수신된 디코딩 신호들(DS1, DS2)에 기반하여 소정의 디코딩 값들(DV1, DV2)을 출력할 수 있다. 즉, 제1 퍼뮤테이션 로직(221) 및 제2 퍼뮤테이션 로직(222) 각각은 제1 디코딩 신호(DS1) 및 제2 디코딩 신호(DS2)에 기초하여 제1 디코딩 값(DV1) 및 제2 디코딩 값(DV2)을 각각 출력할 수 있다. 제1 디코딩 값(DV1)은, 제1 디코딩 신호(DS1)가 지시하는 값일 수 있다. 예컨대, 디코더(210)에 포함된 복수의 AND 게이트들 중 제1 AND 게이트에서 출력된 제1 디코딩 신호(DS1)에 응답하여, 제1 퍼뮤테이션 로직(221)은 제1 디코딩 값(DV1)을 출력할 수 있다. 여기서, 제1 디코딩 값(DV1)은 16 진법의 값들(0, 1, ... , E, F) 중 하나(예컨대, 14를 의미하는 16 진법의 E)를 의미할 수 있다. 상기와 유사하게, 디코더(210)에 포함된 복수의 AND 게이트들 중 제2 AND 게이트에서 출력된 제2 디코딩 신호(DS2)에 응답하여, 제2 퍼뮤테이션 로직(222)은 제2 디코딩 값(DV1)을 출력할 수 있다. 여기서 제2 디코딩 값(DV2)은 16 진법의 값들 중 하나를 의미할 수 있다.
인코더 모듈(230)은 퍼뮤테이션 모듈(220)로부터 수신한 디코딩 값들(DV1, DV2)에 기초하여 인코딩 값들(EN1, EN2) 및 반전 인코딩 값들(~EN1, ~EN2)을 출력할 수 있다. 반전 인코딩 값들(~EN1, ~EN2) 각각은 인코딩 값들(EN1, EN2)이 반전된 데이터일 수 있으며, 예컨대, 제1 인코딩 값(EN1)이 2 진법의 '0100'인 경우, 제1 반전 인코딩 값(~EN1)은 2 진법의 '1011'일 수 있다.
제1 인코더(231)는 제1 디코딩 값(DV1)을 제1 표현형들 중 하나로 변환할 수 있으며, 변환된 값을 제1 인코딩 값(EN1)으로써 출력할 수 있다. 또한, 제2 인코더(232)는 제2 디코딩 값(DV2)을 제2 표현형들 중 하나로 변환할 수 있으며, 변환된 값을 제2 인코딩 값(EN2)으로써 출력할 수 있다. 제1 표현형들 및 제2 표현형들은 각각 제1 디코딩 값(DV1) 및 제2 디코딩 값(DV2)에 매핑시킬 수 있는 값들을 의미할 수 있다. 또한, 제1 표현형 및 제2 표현형은 N(N은 1 이상의 자연수) 진수의 정수들 중 어느 하나에 대응될 수 있다. 예컨대, 제1 디코딩 값(DV1)은 16 진법 상에서 표현 가능한 16 개의 값들 중 하나인 4 이며, 제2 디코딩 값(DV2)은 16 진법 상에서 표현 가능한 16 개의 값들 중 하나인 A 일 수 있다. 제1 표현형들은 16 진법의 3, 5, A 및 C 를 포함할 수 있으며, 제2 표현형들은 16 진법의 3, 6, 9 및 C 를 포함할 수 있다. 이 경우, 제1 인코더(231)는 제1 디코딩 값(DV1)인 4 에 대응되는, 제1 표현형들 중 하나인 5 로 변환하고, 5 를 제1 인코딩 값(EN1)으로써 출력할 수 있다. 또한, 제2 인코더(232)는 제2 디코딩 값(DV2)인 A 에 대응되는, 제2 표현형들 중 하나인 9 로 변환할 수 있다. 이로써, 제1 인코더(231)는, 제1 디코딩 값(DV1)에 기반하여, 제1 표현형들 중 하나를 선택하고, 선택한 제1 표현형을 제1 인코딩 값(EN1)으로써 출력할 수 있다. 또한, 제2 인코더(232)는, 제2 디코딩 값(DV2)에 기반하여, 제2 표현형들 중 하나를 선택하고, 선택한 제2 표현형을 제2 인코딩 값(EN2)으로써 출력할 수 있다.
게이트 모듈(240)은 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2)에 대한 로직 연산을 통해 제1 출력 데이터(SB_OA)를 생성할 수 있으며, 제1 반전 인코딩 값(~EN1) 및 제2 반전 인코딩 값(~EN2)에 기초하여 제2 출력 데이터(SB_OB)를 출력할 수 있다. 예컨대, 제1 XOR 게이트(241)는 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2)을 XOR 연산하고, XOR 연산된 데이터를 제1 출력 데이터(SB_OA)로써 출력할 수 있다. 또한, 제2 XOR 게이트(242)는 제1 반전 인코딩 값(~EN1) 및 제2 반전 인코딩 값(~EN2)을 XOR 연산하고, XOR 연산된 데이터를 제2 출력 데이터(SB_OB)로써 출력할 수 있다. 제1 출력 데이터(SB_OA) 및 제2 출력 데이터(SB_OB)는 각각 노말 데이터와 반전 데이터를 XOR 연산한 것이므로, 서로 동일할 수 있다.
출력단(13)은 제1 출력 데이터(SB_OA) 및 제2 출력 데이터(SB_OB)를 수신할 수 있다. 예컨대, 출력단(13)은 제1 출력 데이터(SB_OA)를 상위 비트들로 구성하고 제2 출력 데이터(SB_OB)를 하위 비트들로 구성한 전송 데이터를 출력할 수 있다. 예컨대, 전송 데이터는 입력 데이터(SB_IN)의 비트수와 동일할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 S-box를 설명하기 위한 블록도이다. 이하에서는 도 3의 참조부호와 함께 설명된다.
도 4를 참조하면, 디코더(210)는 제1 입력 게이트 모듈(211) 및 제2 입력 게이트 모듈(212)을 포함할 수 있으며, 제1 퍼뮤테이션 로직(221)은 제1 인덱스 유닛(A1)을 포함할 수 있고, 제2 퍼뮤테이션 로직(222)은 제2 인덱스 유닛(A2)을 포함할 수 있다.
본 개시의 예시적 실시예에 따르면, 입력 데이터(SB_IN)는 bx0101 일 수 있고, 반전 입력 데이터(~SB_IN)는 bx1010 일 수 있다. 제1 입력 게이트 모듈(211)은 복수의 AND 게이트들을 포함할 수 있으며, 각각의 AND 게이트들은 2 개의 입력 단자를 통해 서로 다른 데이터 비트를 수신할 수 있다. 예컨대, AND 게이트의 입력 단자들 각각은 입력 데이터(SB_IN)의 데이터 비트 및/또는 반전 입력 데이터(~SB_IN)의 데이터 비트를 수신할 수 있다. 일 예로, 제1 입력 게이트 모듈(211)은 AND 게이트(GA1) 및 AND 게이트(GA2)를 포함할 수 있으며, AND 게이트(GA1)의 입력 단자들은 입력 데이터(SB_IN) 및 반전 입력 데이터(~SB_IN)의 비트 값 1 들을 수신하고, 비트 값 1 을 출력할 수 있다. 또한, AND 게이트(GA2)의 입력 단자들 또한 비트 값 1 들을 수신하고, 비트 값 1 을 출력할 수 있다. 한편, 제1 입력 게이트 모듈(211)에 포함된 AND 게이트들의 수는, 입력 데이터(SB_IN)의 비트 수 및 반전 입력 데이터(~SB_IN)의 비트 수를 합산한 것과 동일할 수 있다.
본 개시의 예시적 실시예에 따르면, 제2 입력 게이트 모듈(212)은 복수의 AND 게이트들을 포함할 수 있으며, 제2 입력 게이트 모듈(212)의 복수의 AND 게이트들은 제1 입력 게이트 모듈(211)로부터 비트 값들을 수신할 수 있다. 다시 말해, 제2 입력 게이트 모듈(212)에 포함된 각각의 AND 게이트들은, 제1 입력 게이트 모듈(211)에 포함된 AND 게이트들 중 2 개의 AND 게이트들로부터 비트 값들을 수신할 수 있다. 예컨대, 제1 입력 게이트 모듈(211)에 포함된 각각의 AND 게이트들은, 제2 입력 게이트 모듈(212)에 포함된 AND 게이트들 중 2 개의 AND 게이트들과 2 개의 출력 라인들을 통해 연결될 수 있다.
본 개시의 예시적 실시예에 따르면, 제2 입력 게이트 모듈(212)의 복수의 AND 게이트들은, 디코딩 신호들(DS1, DS2)을 출력할 수 있다. 제1 디코딩 신호(DS1) 및 제2 디코딩 신호(DS2)는 비트 값 0 또는 1을 가질 수 있다.
일 예로, 제2 입력 게이트 모듈(212)은 비트 값 1 을 갖는 디코딩 신호들(DS1, DS2)을 출력함으로써, 제1 인덱스 유닛(A1)의 인덱스들 중 하나(예컨대, 3) 및 제2 인덱스 유닛(A2)의 인덱스들 중 하나(예컨대, 3)을 선택할 수 있다. 다른 예로, 제2 입력 게이트 모듈(212)은 비트 값 0 을 갖는 디코딩 신호를 출력함으로써, 제1 인덱스 유닛(A1)의 인덱스들 중 나머지(예컨대, 0~2 및 4~F) 및 제2 인덱스 유닛(A2)의 인덱스들 중 나머지(예컨대, 0~2 및 4~F)를 선택하지 않을 수 있다.
퍼뮤테이션 로직(221)은 제1 디코딩 값(DV1)을 출력할 수 있다. 제1 디코딩 값(DV1)은, 선택된 인덱스(예컨대, 3)에 대해 비트 값 1을 가지며, 선택되지 않은 인덱스들(예컨대, 0~2, 4~F)에 대해 비트 값 0을 갖는 값일 수 있다. 제2 디코딩 값(DV2) 또한, 선택된 인덱스(예컨대, 3)에 대해 비트 값 1을 가지며, 선택되지 않은 인덱스들(예컨대, 0~2, 4~F)에 대해 비트 값 0을 갖는 값일 수 있다. 예컨대, 제1 디코딩 값(DV1) 및 제2 디코딩 값(DV2)은 복수의 인덱스들 각각에 비트 값 0 또는 1이 기록된 데이터일 수 있다. 일 예로, 제1 디코딩 값(DV1) 및 제2 디코딩 값(DV2)은 하나의 인덱스에서 비트 값 1을 가지며, 나머지 인덱스들에서는 비트 값 0을 갖는 데이터일 수 있다.
도 4를 참조하면, 제2 입력 게이트 모듈(212)은 제1 인덱스 유닛(A1) 및 제2 인덱스 유닛(A2)에서 서로 동일한 인덱스(예컨대, 3)을 선택할 수 있다. 그러나, 이에 제한되지는 않으며, 제2 입력 게이트 모듈(212)은 제1 인덱스 유닛(A1) 및 제2 인덱스 유닛(A2)에서 서로 상이한 인덱스들을 선택할 수도 있다.
본 개시의 예시적 실시예에 따르면, 제1 인코더(231) 및 제2 인코더(232) 각각은, 동일한 정수를 지시하는 디코딩 값들을 입력받을 수 있지만, 제1 인코더(231) 및 제2 인코더(232) 각각에 포함된 상이한 수신 주체를 통해 입력받을 수 있다. 예컨대, 제1 인코더(231) 및 제2 인코더(232)는 3 을 표현하는 제1 디코딩 값(DV1) 및 제2 디코딩 값(DV2)을 입력 받지만, 제1 인코더(231)는 bx0011의 제1 인코딩 값(EN1)을 출력할 수 있으며, 제2 인코더(232)는 제1 인코딩 값(EN1)과 상이한 bx1100의 제2 인코딩 값(EN2)을 출력할 수 있다. 한편, 제1 인코더(231)는 제1 인코딩 값(EN1)을 반전시킨 bx1100을 갖는 제1 반전 인코딩 값(~EN1)을 출력할 수 있으며, 제2 인코더(232)는 제2 인코딩 값(EN2)을 반전시킨 bx0011을 갖는 제2 반전 인코딩 값(~EN2)을 출력할 수 있다.
제1 XOR 게이트(241)는 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2)을 XOR 연산함으로써 제1 출력 데이터(SB_OA)를 출력할 수 있다. 또한, 제2 XOR 게이트(242)는 제1 반전 인코딩 값(~EN1) 및 제2 반전 인코딩 값(~EN2)을 XOR 연산함으로써, 제2 출력 데이터(SB_OA)를 출력할 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 인코더 모듈을 설명하기 위한 디지털 회로도이다. 이하에서는, 도 4의 참조 부호와 함께 설명된다.
도 5를 참조하면, 인코더 회로(EC)는 전술한 제1 인코더(231) 및 제2 인코더(232)의 디지털 회로일 수 있다. 인코더 회로(EC)는 복수의 행 게이트들(row gates)(RG) 및 복수의 열 게이트들(column gates)(CG)들을 포함할 수 있다. 복수의 행 게이트들(RG)은 제1 행 게이트(R1), 제2 행 게이트(R2), 제3 행 게이트(R3) 및 제4 행 게이트(R4)를 포함할 수 있으며, 각각의 행 게이트들(RG)은 OR 게이트로 구현될 수 있고, 각각의 행 게이트들(RG)은 복수의 입력 단자들(예컨대, 4 개의 입력 단자들)을 포함할 수 있다. 또한, 복수의 열 게이트들(CG)은 제1 열 게이트(C1), 제2 열 게이트(C2), 제3 열 게이트(C3) 및 제4 열 게이트(C4)을 포함할 수 있으며, 각각의 열 게이트들(CG)은 OR 게이트로 구현될 수 있고, 각각의 열 게이트들(CG)은 복수의 입력 단자들(예컨대, 4 개의 입력 단자들)을 포함할 수 있다.
본 개시의 예시적 실시예에 따르면, 인코딩 회로(EC)는 제1 인코더(231)에 포함될 수 있다. 이 경우, 인코딩 회로(EC)가 출력하는 인코딩 값(EN)은 제1 인코딩 값(EN1)일 수 있다. 다른 예로, 인코딩 회로(EC)는 제2 인코더(232)에 포함될 수 있다. 이 경우, 인코딩 회로(EC)가 출력하는 인코딩 값(EN)은 제2 인코딩 값(EN2)일 수 있다.
인코딩 회로(EC)는 다양한 타입의 인코딩 값을 출력할 수 있다. 도 6a의 제1 인코딩 회로(EC1)는 제1 타입의 인코딩 값(도 6a의 ET1)을 출력할 수 있으며, 일 예로, 제1 타입의 인코딩 값(ET1)을 제1 인코딩 값(EN1)으로써 출력할 수 있고, 다른 예로, 제2 타입의 인코딩 값(도 6b의 ET2)을 제1 인코딩 값(EN1)으로써 출력할 수 있다. 자세한 사항은 도 6a 및 도 6b를 참조하여 후술하기로 한다.
행 게이트들(RG)의 복수의 입력 단자들(예컨대, 16 개의 입력 단자들)에는 디코딩 값(DV)의 복수의 인덱스들이 기설정된 조합으로 할당될 수 있다. 또한, 열 게이트들(CG)의 복수의 입력 단자들(예컨대, 16 개의 입력 단자들)에는 디코딩 값(DV)의 복수의 인덱스들이 상기 기설정된 조합과 같거나 다른 조합으로 할당될 수 있다. 관련하여, 도 6a 및 도 6b를 참고하여 설명하기로 한다.
도 6a 및 도 6b는 본 개시의 예시적 실시예에 따른 인코딩 회로를 설명하기 위한 디지털 회로도이다.
도 6a를 참조하면, 제1 인코딩 회로(EC1)는 제1 인코더(도 4의 231)를 구성하는 디지털 회로일 수 있으며, 도 6b를 참조하면, 제2 인코딩 회로(EC2)는 제2 인코더(도 4의 232)를 구성하는 디지털 회로일 수 있다.
도 4 및 도 6a를 참조하면, 제1 인코더(231)는 제1 디코딩 값(DV1)을 수신하는 복수의 행 게이트들(RG)을 포함할 수 있으며, 복수의 행 게이트들(RG)의 출력으로써 소정의 해밍 웨이트 값에 기반한 제1 표현형들이 할당될 수 있다. 예컨대, 제1 표현형들이란, 제1 행 게이트(R1), 제2 행 게이트(R2), 제3 행 게이트(R3) 및 제4 행 게이트(R4) 각각에 의해 출력될 수 16 진법의 3, 6, 9 및 C 일 수 있다. 제1 표현형들은 소정의 해밍 웨이트 값에 기반하여 할당된 값일 수 있다. 예컨대, 제1 표현형들은 16 진법의 3, 6, 9 및 C 일 수 있다. 제1 표현형들을 각각 2 진법으로 표현하면, 0011, 0110, 1001, 1100 으로써, 제1 표현형들 각각은 모두 소정의 해밍 웨이트가 2 일 수 있다. 즉, 제1 표현형들 및 제2 표현형들 중 적어도 하나는 해밍 웨이트가 2 일 수 있으며, 균일한 해밍 웨이트를 가짐으로써 부채널 공격에 강건할 수 있다. 한편, 소정의 해밍 웨이트 값은 2 에 제한되지 않으며, 경우에 따라, 제1 표현형들 및 제2 표현형들 중 적어도 하나는 3, 4 또는 5일 수 있다. 전술한 예시에 따르면, 제1 인코더(231)는 도 6a의 제1 인코딩 회로(EC1)로 구현될 수 있지만, 이에 제한되지는 않으며, 제1 인코더(232)는 도 6b의 제2 인코딩 회로(EC2)로 구현될 수 있다. 또한, 후술되는 복수의 실시예들에 의해 다양한 형태로 구현될 수 있다. 제1 인코더(231)는 제1 행 게이트(R1)가 비트 값 1 의 바이너리를 출력함에 응답하여, 제1 행 게이트(R1)에 할당된 제1 표현형들 중 하나(예컨대, 3)를 제1 인코딩 값(EN1)으로써 출력할 수 있다.
도 4 및 도 6b를 참조하면, 제2 인코더(232)는 제2 디코딩 값(DV2)을 수신하는 복수의 행 게이트들(RG)을 포함할 수 있으며, 복수의 행 게이트들(RG)의 출력으로써 소정의 해밍 웨이트 값에 기반한 제2 표현형들이 할당될 수 있다. 도 6b에 따르면 제2 표현형들은 16 진법의 3, 6, 9 및 C 일 수 있으나, 3, 5, A 및 C 일 수도 있다. 마찬가지로, 제1 표현형들 또한 16 진법의 3, 5, A 및 C 일 수도 있다. 제2 인코더(232)는 제4 행 게이트(R4)가 비트 값 1 의 바이너리를 출력함에 응답하여, 제4 행 게이트(R4)에 할당된 제2 표현형들 중 하나(예컨대, C)를 제2 인코딩 값(EN2)으로써 출력할 수 있다.
도 5 및 도 6a를 참조하면, 복수의 인덱스들은 행 게이트들(RG)의 입력 단자들에 제1 인덱스 조합(FP1)의 형태로 할당될 수 있다. 또한, 복수의 인덱스들은 열 게이트들(CG)의 입력 단자들에 제2 인덱스 조합(FP2)의 형태로 할당될 수 있다.
제1 인덱스 조합(FP1) 및 제2 인덱스 조합(FP2)은 'FEDC'을 포함하는 제1 인덱스들, 'BA98'을 포함하는 제2 인덱스들, '7654'를 포함하는 제3 인덱스들, 및 '3210'을 포함하는 제4 인덱스들을 포함할 수 있다. 제1 인덱스들은 제4 행 게이트(R4) 및 제1 열 게이트(C1)의 입력 단자에 할당될 수 있으며, 제2 인덱스들은 제3 행 게이트(R3) 및 제2 열 게이트(C2)의 입력 단자에 할당될 수 있고, 제3 인덱스들은 제2 행 게이트(R2) 및 제3 열 게이트(C3)의 입력 단자에 할당될 수 있으며, 제4 인덱스들은 제1 행 게이트(R1) 및 제4 열 게이트(C4)의 입력 단자에 할당될 수 있다.
본 개시의 예시적 실시예에 따르면, 복수의 행 게이트들(RG) 중 하나는 비트 값 1을 갖는 바이너리를 출력하며, 복수의 행 게이트들(RG) 중 나머지는 비트 값 0을 갖는 바이너리를 출력할 수 있다. 제1 인코딩 회로(EC1)는 비트 값 1의 바이너리를 출력함에 응답하여 표현형들 중 하나(예컨대, 3)을 제1 타입의 인코딩 값(ET1)으로써 출력할 수 있다.
행 게이트로 비트 값 1을 갖는 인코딩 값이 수신되면, 제1 인코딩 회로(EC1)는 복수의 표현형들 중 하나를 제1 타입의 인코딩 값(ET1)으로써 출력할 수 있다. 표현형이란, 인코딩 회로(EC)가 출력 값으로써 가질 수 있는 범위를 의미한다. 또한, 표현형은 N(N은 1 이상의 자연수) 진수의 정수들 중 어느 하나에 대응될 수 있다. 예컨대, 도 6a를 참조하면, 표현형들은 16 진수의 정수들 중 3, 6, 9 및 C 를 포함할 수 있다. 표현형들 각각은 제1 행 게이트(R1), 제2 행 게이트(R2), 제3 행 게이트(R3) 및 제4 행 게이트(R4)에 할당될 수 있다. 예컨대, 표현형 3 이 할당된 제1 행 게이트(R1)는, 제1 행 게이트(R1)의 입력 단자들 중 하나로 비트 값 1을 수신하면, 제1 인코딩 회로(EC1)는 제1 인코딩 값(EN1)으로써 표현형 3 을 출력할 수 있다. 이 경우, 제1 행 게이트(R1)의 입력 단자들로 입력되는 디코딩 값(DV)은, 인덱스 0 에 대해 비트 값 1을 갖거나, 인덱스 1 에 대해 비트 값 1 을 갖거나, 인덱스 2 에 대해 비트 값 1 을 갖거나, 또는 인덱스 3 에 대해 비트 값 1 을 가질 수 있다. 도 6a를 참조하면, 제1 행 게이트(R1)의 입력 단자들 중 하나로, 인덱스 3 에 대해 비트 값 1 을 갖는 디코딩 값(DV)이 입력될 수 있다.
제1 인코딩 회로(EC1)는 제1 타입의 인코딩 값(ET1)을 출력할 수 있으며, 일 예로, 제1 인코딩 회로(EC1)는 제1 타입의 인코딩 값(ET1)을 제1 인코딩 값(EN1)으로써 출력할 수 있다. 이 경우, 제1 인코딩 회로(EC1)는 제1 인코더(231)에 포함될 수 있다. 다른 예로, 제1 인코딩 회로(EC1)는 제1 타입의 인코딩 값(ET1)을 제2 인코딩 값(EN2)으로써 출력할 수 있다. 이 경우, 제1 인코딩 회로(EC1)는 제2 인코더(232)에 포함될 수 있다.
도 6b를 참조하면, 제3 인덱스 조합(FP3) 및 제4 인덱스 조합(FP4)은 'FB73'을 포함하는 제5 인덱스들, 'EA62'를 포함하는 제6 인덱스들, 'D951'를 포함하는 제7 인덱스들, 및 'C840'을 포함하는 제8 인덱스들을 포함할 수 있다. 제5 인덱스들은 제4 행 게이트(R4) 및 제1 열 게이트(C1)의 입력 단자에 할당될 수 있으며, 제6 인덱스들은 제3 행 게이트(R3) 및 제2 열 게이트(C2)의 입력 단자에 할당될 수 있고, 제7 인덱스들은 제2 행 게이트(R2) 및 제3 열 게이트(C3)의 입력 단자에 할당될 수 있으며, 제8 인덱스들은 제1 행 게이트(R1) 및 제4 열 게이트(C4)의 입력 단자에 할당될 수 있다.
도 6a와 달리, 인덱스 3 에 대해 비트 값 1을 갖는 디코딩 값(DV)이 제2 인코딩 회로(EC2)에 입력되면, 제4 행 게이트(R4) 및 제1 열 게이트(C1)는 비트 값 1 을 출력할 수 있다. 이 경우, 도 6a와 달리, 제2 인코딩 회로(EC2)는 제2 타입의 인코딩 값(ET2)으로써 '1100'을 출력할 수 있으며, 반전된 제2 타입의 인코딩 값(~ET2)으로써 '0011'을 출력할 수 있다. 행 게이트들(RG) 및 열 게이트들(CG)의 입력 단자들에 할당된 인덱스들이 달라졌기 때문이다.
제2 인코딩 회로(EC2)는 제2 타입의 인코딩 값(ET2)을 출력할 수 있으며, 일 예로, 제2 인코딩 회로(EC2)는 제2 타입의 인코딩 값(ET2)을 제1 인코딩 값(EN1)으로써 출력할 수 있다. 이 경우, 제2 인코딩 회로(EC2)는 제1 인코더(231)에 포함될 수 있다. 다른 예로, 제2 인코딩 회로(EC2)는 제2 타입의 인코딩 값(ET2)을 제2 인코딩 값(EN2)으로써 출력할 수 있다. 이 경우, 제2 인코딩 회로(EC2)는 제2 인코더(232)에 포함될 수 있다.
도 4, 도 6a 및 도 6b를 참조하면, 제1 인코딩 회로(EC1)는 제1 디코딩 값(DV1)을 수신하는 복수의 행 게이트들(RG)을 포함하고, 행 게이트(예컨대, R1)가 비트 값 1 의 바이너리를 출력함에 응답하여 행 게이트(예컨대, R1)에 할당된 제1 표현형(예컨대, 3)을 제1 인코딩 값(EN1)으로써 출력할 수 있다. 또한, 제2 인코딩 회로(EC2)는 복수의 행 게이트들(RG)을 포함하며, 행 게이트(예컨대, R4)가 비트 값 1 의 바이너리를 출력함에 응답하여 행 게이트(예컨대, R4)에 할당된 표현형(예컨대, C)을 제2 인코딩 값(EN2)으로써 출력할 수 있다.
다시 도 5를 참조하면, 인코딩 회로(EC)는 행 게이트들(RG) 및 열 게이트들(CG)의 출력에 기초하여 제1 인코딩 값(EN1)을 결정할 수 있다. 예컨대, 제1 인코딩 값(EN1)의 최상위 비트(MSB)는 제4 행 게이트(R4) 및 제3 행 게이트(R3)의 비트 값들을 OR 연산한 비트 값일 수 있다. 제1 인코딩 값(EN1)의 제2 최상위 비트(MSB2)는 제4 행 게이트(R4) 및 제2 행 게이트(R2)의 비트 값들을 OR 연산한 비트 값일 수 있다. 제1 인코딩 값(EN1)의 제3 최상위 비트(MSB3)는 제4 열 게이트(C4) 및 제3 열 게이트(C3)의 비트 값들을 OR 연산한 비트 값일 수 있다. 제1 인코딩 값(EN1)의 최하위 비트(LSB)는 제4 열 게이트(C4) 및 제2 열 게이트(C2)의 비트 값들을 OR 연산한 비트 값일 수 있다.
또한, 인코딩 회로(EC)는 행 게이트들(RG) 및 열 게이트들(CG)의 출력에 기초하여 제1 반전 인코딩 값(~EN1)을 결정할 수 있다. 예컨대, 제1 반전 인코딩 값(~EN1)의 최상위 비트(MSB)는 제2 행 게이트(R2) 및 제1 행 게이트(R1)의 비트 값들을 OR 연산한 비트 값일 수 있다. 제1 반전 인코딩 값(~EN1)의 제2 최상위 비트(MSB2)는 제3 행 게이트(R3) 및 제1 행 게이트(R1)의 비트 값들을 OR 연산한 비트 값일 수 있다. 제1 반전 인코딩 값(~EN1)의 제3 최상위 비트(MSB3)는 제2 열 게이트(C2) 및 제1 열 게이트(C1)의 비트 값들을 OR 연산한 비트 값일 수 있다. 제1 반전 인코딩 값(~EN1)의 최하위 비트(LSB)는 제3 열 게이트(C3) 및 제1 열 게이트(C1)의 비트 값들을 OR 연산한 비트 값일 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 인코딩 값들을 설명하기 위한 테이블이다.
도 6a, 도 6b 및 도 7을 참조하면, 테이블의 각 행들은 행 게이트들(RG)을 의미할 수 있으며, 테이블의 각 열들은 열 게이트들(CG)을 의미할 수 있다. 0x0 내지 0xF 는 제1 인코딩 값(EN1) 및/또는 제2 인코딩 값(EN2)을 의미할 수 있다. 다시 말해, 행 게이트들(RG) 중 하나가 비트 값 1 을 출력하며, 행 게이트들(RG) 중 나머지가 비트 값 0 을 출력하며, 열 게이트들(CG) 중 하나가 비트 값 1 을 출력하고, 열 게이트들(CG) 중 나머지가 비트 값 0 을 출력할 수 있다. 이 경우, 인코딩 회로(EC)는, 비트 값 1 을 출력한 행 게이트들(RG) 중 하나 및 비트 값 1 을 출력한 열 게이트들(CG) 중 하나에 대응되는 값을 제1 인코딩 값(EN1) 또는 제2 인코딩 값(EN2)으로써 출력할 수 있다.
본 개시의 예시적 실시예에 따르면, 행 게이트들(RG) 중 어느 하나가 비트 값 1을 출력하고 열 게이트들(CG) 중 어느 하나가 비트 값 1을 출력한 경우, 제1 인코딩 값(EN1) 또는 제2 인코딩 값(EN2)으로써 0x0~0xF 중 어느 하나가 출력되도록, 인코딩 회로(EC)가 구성될 수 있다.
본 개시의 예시적 실시예에 따르면, 제1 행 게이트(R1)가 비트 값 1 을 출력하고, 나머지 행 게이트들(R2~R4)은 비트 값 0 을 출력할 수 있다. 또한, 제4 열 게이트(C4)가 비트 값 1 을 출력하며, 나머지 열 게이트들(C1~C3)은 비트 값 0 을 출력할 수 있다. 이 경우, 인코딩 회로(EC)는 제1 인코딩 값(EN1) 또는 제2 인코딩 값(EN2)으로써 0x3 을 출력할 수 있다.
본 개시의 다른 실시예에 따르면, 제4 행 게이트(R4)가 비트 값 1 을 출력하고, 나머지 행 게이트들(R1~R3)은 비트 값 0 을 출력할 수 있다. 또한, 제1 열 게이트(C1)가 비트 값 1 을 출력하며, 나머지 열 게이트들(C2~C4)은 비트 값 0 을 출력할 수 있다. 이 경우, 인코딩 회로(EC)는 제1 인코딩 값(EN1) 또는 제2 인코딩 값(EN2)으로써 0xC 를 출력할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 제1 인코딩 값 및 제2 인코딩 값을 설명하기 위한 테이블이다.
도 6a, 도 6b 및 도 8을 참조하면, 인코딩 회로(EC)로 디코딩 값(DV)이 입력될 때, 제1 타입의 인코딩 값(ET1) 및 제2 타입의 인코딩 값(ET2)이 출력될 수 있다. 전술한 바와 같이, 제1 타입의 인코딩 값(ET1)은 제1 인코딩 값(EN1) 또는 제2 인코딩 값(EN2)이 될 수 있으며, 제2 타입의 인코딩 값(ET2) 또한 이와 유사하다. 이 경우, 입력 데이터(도 4의 SB_IN)가 4 비트의 바이너리 코드라면, 입력 데이터(SB_IN)의 경우의 수는 16 개일 수 있으며, 이에 따라, 디코딩 값(DV)의 경우의 수 또한 16 개일 수 있다. 이 때, 제1 인코더(221)의 제1 표현형들이 4 개(예컨대, 0x3, 0x6, 0x9, 0xC)이며, 제2 인코더(222)의 제2 표현형들이 4 개(예컨대, 0x3, 0x6, 0x9, 0xC)일 수 있다. 제1 인코더(221)는 제1 표현형들로 구성된 제1 인코딩 값(EN1)을 출력할 수 있으며, 제2 인코더(222)는 제2 표현형들로 구성된 제2 인코딩 값(EN2)을 출력할 수 있다. 예컨대, 제1 인코딩 값(EN1)이 3, 6, 9 및 C를 갖는 각각의 경우들에 대해서, 제2 인코딩 값(EN2)은 3, 6, 9 및 C를 가질 수 있다. S-box(도 4의 12)는, 4 개의 경우의 수들을 갖는 제1 타입의 인코딩 값(ET1) 및 4 개의 경우의 수들을 갖는 제2 타입의 인코딩 값(ET2)을 XOR 연산함으로써, 16 개의 경우의 수들을 갖는 제1 출력 데이터(도 4의 SB_OA)를 출력할 수 있다.
도 6a, 도 6b 및 도 8을 참조하면, 디코딩 값(DV)이 3을 가리키는 경우(즉, 디코딩값(DV)의 인덱스 3에 대해서 비트 값 1을 갖는 경우), 제1 인코딩 회로(EC1)에 포함된 제1 행 게이트(R1) 및 제4 열 게이트(C4)는 비트 값 1 을 출력할 수 있다. 또한, 제2 인코딩 회로(EC2)에 포함된 제4 행 게이트(R4) 및 제1 열 게이트(C1)는 비트 값 1 을 출력할 수 있다. 따라서, 제1 인코딩 회로(EC1)는 제1 타입의 인코딩 값(ET1)으로써 3 을 출력할 수 있으며, 제2 인코딩 회로(EC2)는 제2 타입의 인코딩 값(ET2)으로써 C 를 출력할 수 있다. 한편, 도 8에 도시된 테이블에서 제1 타입의 인코딩 값(ET1) 및 제2 타입의 인코딩 값(ET2)이 서로 바뀌어도 동일한 기술적 사상을 포함한다.
도 9는 본 개시의 예시적 실시예에 따른 S-box를 설명하기 위한 디지털 회로도이다.
도 9를 참조하면, 제1 인코더들(231a, 231b) 및 제2 인코더들(232a, 232b)은 전술한 인코딩 회로(EC)로 구성될 수 있다. 디코더(210a)는 전술한 디코더(210)에서 게이트 들의 수가 증가된 것일 수 있다. 예컨대, 제1 입력 게이트 모듈(211a)은 입력 데이터(SB_IN) 및 반전 입력 데이터(~SB_IN)의 비트들 각각에 대응되는 16 개의 AND 게이트들을 포함할 수 있다. 또한, 제2 입력 게이트 모듈(212a)은 8 비트로 구성된 입력 데이터(SB_IN)를 디코딩하기 위해 256 개의 AND 게이트들을 포함할 수 있다. 제3 퍼뮤테이션 모듈(223) 및 제4 퍼뮤테이션 모듈(224) 각각은, 제3 정수 그룹(A3) 및 제4 정수 그룹(A4) 각각에 포함된 16 개의 정수들 중 하나를 선택받기 위해, 16 개의 입력 단자들을 갖는 16 개의 AND 게이트들을 포함할 수 있다.
도 9를 참조하면, 입력 데이터(SB_IN) 및 반전 입력 데이터(~SB_IN)는 각각 8 비트로 구성된 데이터일 수 있다. 이 경우, 제1 인코더(231a)는 제1 인코딩 값의 일부(EN1[7:4])를 출력할 수 있으며, 제1 인코더(231b)는 제1 인코딩 값의 나머지(EN1[3:0])를 출력할 수 있다. 다시 말해, 제1 인코딩 모듈(230a)은 제1 인코딩 값(EN1)을 출력할 수 있다. 한편, 제2 인코더(232a)는 제2 인코딩 값의 일부(EN2[7:4])를 출력할 수 있으며, 제2 인코더(232b)는 제2 인코딩 값의 나머지(EN2[7:4])를 출력할 수 있다. 다시 말해, 제2 인코딩 모듈(230b)은 제2 인코딩 값(EN2)을 출력할 수 있다. 도 9에 기재된 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2) 각각은, 이전의 도면들에 기재된 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2)과는 다르게 8bit 데이터일 수 있다.
제1 인코딩 값의 일부(EN1[7:4])는 제1 타입의 인코딩 값(ET1)일 수 있으며, 제1 인코딩 값의 나머지(EN1[3:0])는 제2 타입의 인코딩 값(ET2)일 수 있다. 이와 유사하게, 제2 인코딩 값의 일부(EN2[7:4])는 제1 타입의 인코딩 값(ET1)일 수 있으며, 제2 인코딩 값의 나머지(EN2[3:0])는 제2 타입의 인코딩 값(ET2)일 수 있다. 즉, 제1 인코더(231a) 및 제1 인코더(231b)는 서로 다른 타입의 인코딩 값을 출력할 수 있으며, 제2 인코더(232a) 및 제2 인코더(232b)는 서로 다른 타입의 인코딩 값을 출력할 수 있다.
제1 인코딩 모듈(230a) 및 제2 인코딩 모듈(240b) 각각은 제3 퍼뮤테이션 로직(223) 및 제4 퍼뮤테이션 로직(224)으로부터 디코딩 값을 수신할 수 있다. 구체적으로, 제1 인코더(231a) 및 제1 인코더(231b)는 제3 퍼뮤테이션 로직(223)을 공유할 수 있으며, 제2 인코더(232a) 및 제2 인코더(232b)는 제4 퍼뮤테이션 로직(224)을 공유할 수 있다.
제3 퍼뮤테이션 로직(223)은, 디코더(210a)로부터 수신한 디코딩 신호에 기초하여, 제3 인덱스 유닛(A3)에 포함된 정수들 중 하나를, 제1 디코딩 값(DV1a)으로써 제1 인코더(231a)로 전송할 수 있다. 또한, 제3 퍼뮤테이션 로직(223)은, 디코딩 신호에 기초하여, 제3 인덱스 유닛(A3)에 포함된 정수들 중 하나를, 제2 디코딩 값(DV2a)으로써 제1 인코더(231b)로 전송할 수 있다.
한편, 제4 퍼뮤테이션 로직(224)은, 디코더(210a)로부터 수신한 디코딩 신호에 기초하여, 제4 인덱스 유닛(A4)에 포함된 정수들 중 하나를, 제1 디코딩 값(DV1b)으로써 제2 인코더(232a)로 전송할 수 있다. 또한, 제4 퍼뮤테이션 로직(224)은, 디코딩 신호에 기초하여, 제4 인덱스 유닛(A4)에 포함된 정수들 중 하나를, 제2 디코딩 값(DV2b)으로써 제2 인코더(232b)로 전송할 수 있다.
제3 XOR 게이트(243) 및 제5 XOR 게이트(245)는 제1 출력 데이터(SB_OA)를 출력할 수 있다. 구체적으로, 제3 XOR 게이트(243)는 제1 인코딩 값의 일부(EN1[7:4])와 제2 인코딩 값의 일부(EN2[7:4])를 XOR 연산할 수 있다. 제5 XOR 게이트(245)는 제1 인코딩 값의 나머지(EN1[3:0])와 제2 인코딩 값의 나머지(EN2[3:0])를 XOR 연산할 수 있다. 즉, 제3 XOR 게이트(243) 및 제5 XOR 게이트(245) 각각은 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2) 각각의 대응되는 비트들을 XOR 연산할 수 있다. 한편, S-box(12)는 제1 인코더(231a)에서 생성된 출력 값(EN1[7:4])과 제2 인코더(232a)에서 생성된 출력 값(EN1[3:0])을 서로 조합하여 출력 데이터(EN1[7:0])를 출력할 수 도 있다.
제4 XOR 게이트(244) 및 제6 XOR 게이트(246)는 제2 출력 데이터(SB_OB)를 출력할 수 있다. 구체적으로, 제4 XOR 게이트(244)는 제1 반전 인코딩 값의 일부(~EN1[7:4])와 제2 반전 인코딩 값의 일부(~EN2[7:4])를 XOR 연산할 수 있다. 제6 XOR 게이트(246)는 제1 반전 인코딩 값의 나머지(~EN1[3:0])와 제2 반전 인코딩 값의 나머지(~EN2[3:0])를 XOR 연산할 수 있다. 즉, 제4 XOR 게이트(244) 및 제6 XOR 게이트(246) 각각은 제1 반전 인코딩 값(~EN1) 및 제2 반전 인코딩 값(~EN2) 각각의 대응되는 비트들을 XOR 연산할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 제3 인코딩 값 및 제4 인코딩 값을 설명하기 위한 테이블이다.
도 10을 참조하면, 디코딩 값(DV)은 제1 인코더들(231a, 231b) 및 제2 인코더들(232a, 232b)로 입력되는 디코딩 값일 수 있다. 예컨대, 제1 인코더들 및 제2 인코더들(231a, 231b, 232a, 232b)에 포함된 행 게이트들(예컨대, 도 6a의 RG) 및 열 게이트들(예컨대, 도 6a의 CG)은 인덱스 0 내지 F 중 하나의 인덱스의 비트 값이 1인 디코딩 값(DV)을 수신할 수 있다. 예컨대, 인덱스 3의 비트 값이 1인 디코딩 값(DV)은 {0000 0000 0000 1000}일 수 있다.
도 9의 제1 인코더(231a)는 도 6a의 인코딩 회로로 구현되고, 도 9의 제1 인코더(231b)는 도 6b의 인코딩 회로로 구현되는 경우, 도 10과 같은 제1 인코딩 값(EN1[7:0])을 가질 수 있다. 또한, 도 9의 제2 인코더(232a)는 도 6a의 인코딩 회로, 도 9의 제2 인코더(232b)는 도 6b의 인코딩 회로로 구현되는 경우, 도 10과 같은 제2 인코딩 값(EN2[7:0])을 가질 수 있다. 예컨대, 제1 인코더(231a)는 표현형들(예컨대, 3, 6, 9, C) 중 하나를 제1 인코딩 값의 일부(EN1[7:4])로써 출력할 수 있으며, 제1 인코더(231b)는 표현형들(예컨대, 3, 6, 9, C) 중 하나를 제1 인코딩 값의 나머지(EN1[3:0])로써 출력할 수 있다. 제1 인코더(231a) 및 제1 인코더(231b)에서 출력된 제1 인코딩 값들의 부분 데이터를 조합함으로써, 제1 인코딩 모듈(230a)은 제1 인코딩 값(EN1)을 출력할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 표현형들의 제1 조합을 설명하기 위한 테이블이다.
도 4, 도 9 및 도 11을 참조하면, 제1 조합은 복수의 조합들(조합 1-1 내지조합 1-12)을 포함하며, 제1 인코더들(231, 231a, 231b)은 조합 1-1 내지 조합 1-12 중 하나의 조합에 해당되는 표현형들을 갖고, 제2 인코더들(232, 232a, 232b)은 상기 하나의 조합에 해당되는 표현형들을 가질 수 있다. 각각의 조합들에서 좌측 4 개의 표현형들은 제1 인코더들(231, 231a, 231b)이 출력할 수 있는 출력 값의 범위이며, 각각의 조합들에서 우측 4 개의 표현형들은 제2 인코더들(232, 232a, 232b)이 출력할 수 있는 출력 값의 범위일 수 있다.
예컨대, 제1 인코더들(231, 231a, 231b)이 표현형 1, 5, 9 및 D를 갖는 경우, 제2 인코더들(232, 232a, 232b)은 조합 1-1에 따라 표현형 3, 5, A 및 C를 갖거나, 조합 1-5에 따라 표현형 3, 6, 9 및 C를 가질 수 있다.
도 11에 도시된 테이블에 기재된 표현형들의 조합들은, 행 게이트들(예컨대, 도 5a의 RG)의 로드 밸런스(load balance)를 유지하기 위함이다. 로드 밸런스란, 특정 행 게이트의 복수의 입력 단자들에 할당된 인덱스의 평균이, 다른 행 게이트의 복수의 입력 단자들에 할당된 인덱스의 평균과 균일함을 의미할 수 있다. 또한, 조합 1-1 내지 조합 1-12 각각의 표현형들은, 해밍 웨이트의 평균이 2 이므로, 부채널 공격을 방지할 수 있다. 해밍 웨이트는, 바이너리 비트 스트림에서 비트 값 1의 개수를 의미할 수 있다. 예컨대, 조합 1-1의 경우, 표현형 1은 해밍 웨이트 1, 표현형 5 및 9는 해밍 웨이트 2, 표현형 D는 해밍 웨이트 3을 만족하므로, 제1 인코더들(231, 231a, 231b)에서 출력되는 제1 인코딩 값의 일부(EN1[7:4]) 또는 제1 인코딩 값의 나머지(EN1[3:0])의 해밍 웨이트의 평균은 2 일 수 있다. 또한, 표현형 3, 5, A 및 C는 모두 해밍 웨이트가 2 이므로, 제2 인코더들(232, 232a, 232b)에서 출력되는 제2 인코딩 값의 일부(EN2[7:4]) 또는 제2 인코딩 값의 나머지(EN2[3:0])의 해밍 웨이트의 평균은 2 일 수 있다. 한편, 좌측 4 개의 표현형들과 우측 4 개의 표현형들은 서로 바뀌어도 동일한 기술적 사상을 포함한다.
도 12은 본 개시의 예시적 실시예에 따른 표현형들의 제2 조합을 설명하기 위한 테이블이다.
도 4, 도 9 및 도 12을 참조하면, 제2 조합은 복수의 조합들(조합 2-1 내지조합 2-12)을 포함하며, 제1 인코더들(231, 231a, 231b)은 조합 2-1 내지 조합 2-12 중 하나의 조합에 해당되는 표현형들을 갖고, 제2 인코더들(232, 232a, 232b)은 상기 하나의 조합에 해당되는 표현형들을 가질 수 있다. 각각의 조합들에서 좌측 4 개의 표현형들은 제1 인코더들(231, 231a, 231b)이 출력할 수 있는 출력 값의 범위이며, 각각의 조합들에서 우측 4 개의 표현형들은 제2 인코더들(232, 232a, 232b)이 출력할 수 있는 출력 값의 범위일 수 있다.
예컨대, 제1 인코더들(231, 231a, 231b)이 표현형 5, 6, 8 및 B를 갖는 경우, 제2 인코더들(232, 232a, 232b)은 조합 2-3에 따라 표현형 3, 5, A 및 C를 갖거나, 조합 2-7에 따라 표현형 3, 6, 9 및 C를 가질 수 있다.
도 12에 도시된 테이블에 기재된 표현형들의 조합들은, 열 게이트들(예컨대, 도 5a의 CG)의 로드 밸런스(load balance)를 유지하기 위함이다. 로드 밸런스란, 특정 열 게이트의 복수의 입력 단자들에 할당된 인덱스의 평균이, 다른 열 게이트의 복수의 입력 단자들에 할당된 인덱스의 평균과 균일함을 의미할 수 있다. 또한, 조합 2-1 내지 조합 2-12 각각의 표현형들은, 해밍 웨이트의 평균이 2 이므로, 부채널 공격을 방지할 수 있다. 예컨대, 조합 2-5의 경우, 표현형 4는 해밍 웨이트 1, 표현형 5 및 표현형 6은 해밍 웨이트 2, 표현형 7은 해밍 웨이트 3을 만족하므로 제1 인코더들(231, 231a, 231b)에서 출력되는 제1 인코딩 값의 일부(EN1[7:4]) 또는 제1 인코딩 값의 나머지(EN1[3:0])의 해밍 웨이트의 평균은 2 일 수 있다. 또한, 표현형 3, 6, 9 및 C는 모두 해밍 웨이트가 2 이므로, 제2 인코더들(232, 232a, 232b)에서 출력되는 제2 인코딩 값의 일부(EN2[7:4]) 또는 제2 인코딩 값의 나머지(EN2[3:0])의 해밍 웨이트의 평균은 2 일 수 있다. 한편, 좌측 4 개의 표현형들과 우측 4 개의 표현형들은 서로 바뀌어도 동일한 기술적 사상을 포함한다.
도 13은 본 개시의 예시적 실시예에 따른 표현형들의 제3 조합을 설명하기 위한 테이블이다.
도 4, 도 9 및 도 13을 참조하면, 제3 조합은 복수의 조합들(조합 3-1 내지조합 3-16)을 포함하며, 제1 인코더들(231, 231a, 231b)은 조합 3-1 내지 조합 3-16 중 하나의 조합에 해당되는 표현형들을 갖고, 제2 인코더들(232, 232a, 232b)은 상기 하나의 조합에 해당되는 표현형들을 가질 수 있다. 각각의 조합들에서 좌측 4 개의 표현형들은 제1 인코더들(231, 231a, 231b)이 출력할 수 있는 출력 값의 범위이며, 각각의 조합들에서 우측 4 개의 표현형들은 제2 인코더들(232, 232a, 232b)이 출력할 수 있는 출력 값의 범위일 수 있다.
예컨대, 제1 인코더들(231, 231a, 231b)이 표현형 1, 7, A 및 C를 갖는 경우, 제2 인코더들(232, 232a, 232b)은 조합 3-5에 따라 표현형 3, 6, 9 및 C를 갖거나, 조합 3-13에 따라 표현형 2, 5, B 및 C를 갖거나, 조합 3-16에 따라 3, 4, A 및 D를 가질 수 있다.
도 13에 도시된 테이블에 기재된 표현형들의 조합들은, 행 게이트들(예컨대, 도 5a의 RG) 및 열 게이트들(예컨대, 도 5a의 CG) 모두의 로드 밸런스(load balance)를 유지할 수 있으므로, 바람직한 조합이라고 할 수 있다. 로드 밸런스란, 특정 행 게이트 및 특정 열 게이트의 복수의 입력 단자들에 할당된 인덱스의 평균이, 다른 행 게이트 및 다른 열 게이트의 복수의 입력 단자들에 할당된 인덱스의 평균과 균일함을 의미할 수 있다. 또한, 조합 3-1 내지 조합 3-16 각각의 표현형들은, 해밍 웨이트의 평균이 2 이므로, 부채널 공격을 방지할 수 있다. 예컨대, 조합 3-5의 경우, 표현형 1는 해밍 웨이트 1, 표현형 A 및 표현형 C는 해밍 웨이트 2, 표현형 7은 해밍 웨이트 3을 만족하므로 제1 인코더들(231, 231a, 231b)에서 출력되는 제1 인코딩 값의 일부(EN1[7:4]) 또는 제1 인코딩 값의 나머지(EN1[3:0])의 해밍 웨이트의 평균은 2 일 수 있다. 또한, 표현형 3, 6, 9 및 C는 모두 해밍 웨이트가 2 이므로, 제2 인코더들(232, 232a, 232b)에서 출력되는 제2 인코딩 값의 일부(EN2[7:4]) 또는 제2 인코딩 값의 나머지(EN2[3:0])의 해밍 웨이트의 평균은 2 일 수 있다. 한편, 좌측 4 개의 표현형들과 우측 4 개의 표현형들은 서로 바뀌어도 동일한 기술적 사상을 포함한다.
본 개시의 예시적 실시예에 따르면, 조합 3-1 내지 조합 3-8과 같이, 제2 인코더들(232, 232a, 232b)은 표현형 3, 5, A 및 C를 갖거나, 제2 인코더들(232, 232a, 232b)은 표현형 3, 6, 9 및 C를 가질 수 있다. 표현형 3, 5, A 및 C 각각은 모두 해밍 웨이트가 2 이며, 표현형 3, 6, 9 및 C 각각은 모두 해밍 웨이트가 2 이므로, 균일한 해밍 웨이트를 갖는다는 점에서 바람직할 수 있다. 한편, 제2 인코더들(232, 232a, 232b)은 표현형 3, 5, A 및 C 또는 표현형 3, 6, 9 및 C를 갖는 경우, 제1 인코더들(231, 231a, 231b)는 표현형 3, 5, A 및 C 또는 표현형 3, 6, 9 및 C과 다른 표현형들을 가질 수 있다.
도 14a 및 도 14b는 도 13의 표현형들을 갖는 인코딩 값들에 기반하여 XOR 연산한 출력 데이터들을 설명하기 위한 테이블이다.
도 4, 도 9, 도 14a 및 도 14b를 참조하면, XOR 게이트들(241~246) 중 적어도 일부는 제1 인코딩 값의 일부(EN1[7:4]) 및 제2 인코딩 값의 일부(EN2[7:4])를 XOR 연산할 수 있다. 또한, XOR 게이트들(241~246) 중 적어도 일부는 제1 인코딩 값의 나머지(EN1[3:0]) 및 제2 인코딩 값의 나머지(EN2[3:0])를 XOR 연산할 수 있다. XOR 연산한 값은 S-box(12)의 출력 데이터들(예컨대, SB_OA, SB_OB) 중 하나일 수 있다.
도 14a의 조합 3-1을 참조하면, XOR 게이트들(241~246) 중 하나는, C 를 갖는 인코딩 값(EN1[7:4] 또는 EN2[7:4])과 C 를 갖는 인코딩 값(EN1[3:0] 또는 EN2[3:0])을 XOR 연산함으로써, 0 을 나타내는 출력 데이터(SB_OA)를 출력할 수 있다. 다른 예로, 도 14b의 조합 3-9를 참조하면, XOR 게이트들(241~246) 중 하나는, 6 을 갖는 인코딩 값(EN1[7:4] 또는 EN2[7:4])과 7 을 갖는 인코딩 값(EN1[3:0] 또는 EN2[3:0])을 XOR 연산함으로써, 0 을 나타내는 출력 데이터(SB_OA)를 출력할 수 있다.
도 15는, 도 13의 표현형들을 갖는 인코딩 값들의 해밍 웨이트를 설명하기 위한 테이블이다.
도 15를 참조하면, 제1 인코더(231) 및 제2 인코더(232) 각각이, 도 13의 조합 3-7에 따른 표현형을 갖는 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2)을 출력할 수 있다. 제1 인코딩 값(EN1)은 표현형들 3, 5, 8 및 E 중 하나를 가질 수 있으며, 제2 인코딩 값(EN2)은 표현형들 3, 6, 9 및 C 중 하나를 가질 수 있다. 즉, 제1 인코딩 값(EN1) 및 제2 인코딩 값(EN2)이 가질 수 있는 출력의 표현형들을 조합하면, S-box(12)는 16 가지의 출력 데이터(예컨대, SB_OA)를 생성할 수 있다. 조합 3-7의 경우, 제1 인코딩 값(EN1)의 해밍 웨이트(HW(EN1)) 및 제2 인코딩 값(EN2)의 해밍 웨이트(HW(EN2))의 합이 3, 4 또는 5 일 수 있다. 특히, 제1 인코딩 값(EN1)은 표현형들 3, 5, 8 및 E 중 하나를 가질 수 있으며, 제2 인코딩 값(EN2)은 표현형들 3, 6, 9 및 C 중 하나를 갖는 경우, 해밍 웨이트의 합산 값(HW(EN1)+HW(EN2))들에 대한 평균은 4 일 수 있다. 한편, 조합 3-15를 참고하면, 제1 인코딩 값(EN1)은 표현형들 3, 5, 8 및 E 중 하나를 가질 수 있으며, 제2 인코딩 값(EN2)은 표현형들 3, 4, A 및 D 중 하나를 갖는 경우, 해밍 웨이트의 합산 값(HW(EN1)+HW(EN2))들에 대한 평균 또한 4 일 수 있다. 따라서, S-box(12)는 부채널 공격에 대해 강한 보안성을 가질 수 있다.
도 16a 및 도 16b는 본 개시의 예시적 실시예에 따른 인코딩 회로를 설명하기 위한 디지털 회로도이다.
도 4 및 도 16a를 참조하면, 제1 인코더(231)는 제3 인코딩 회로(EC3)로 구현될 수 있다. 또한, 도 4 및 도 16b를 참조하면, 제2 인코더(232)는 제4 인코딩 회로(EC4)로 구현될 수 있다.
도 16a 및 도 16b를 참조하면, 표현형 3, 5, A 및 C 중 하나는 행 게이트들(RG) 각각에 할당될 수 있으며, 또한, 표현형 3, 5, A 및 C 중 하나는 열 게이트들(CG) 각각에 할당될 수 있다. 이 경우, 인코딩 값(EN)은 3, 5, A 및 C 중 하나를 가질 수 있다. 예컨대, 표현형 3 은 제1 행 게이트(R1) 및 제4 열 게이트(C4)에 할당될 수 있으며, 표현형 5 는 제2 행 게이트(R2) 및 제2 열 게이트(C2)에 할당될 수 있고, 표현형 A 는 제3 행 게이트(R3) 및 제3 열 게이트(C3)에 할당될 수 있으며, 표현형 C 는 제4 행 게이트(R4) 및 제1 열 게이트(C1)에 할당될 수 있다. 각각의 행 게이트들(RG) 및 열 게이트들(CG)이 비트 값 1 을 갖는 바이너리를 출력함에 응답하여, 인코딩 모듈(도 3의 230)은 각각의 행 게이트들(RG) 및 열 게이트들(CG)에 할당된 표현형을 갖는 인코딩 값을 출력할 수 있다.
도 16a를 참조하면, 행 게이트들(RG)의 복수의 입력 단자들에는 제5 인덱스 조합(FP5)이 할당될 수 있다. 또한, 열 게이트들(CG)의 복수의 입력 단자들에는 제6 인덱스 조합(FP6)이 할당될 수 있다. 제5 인덱스 조합(FP5) 및 제6 인덱스 조합(FP6)은 'FEDC'을 포함하는 제1 인덱스들, 'BA98'을 포함하는 제2 인덱스들, '7654'를 포함하는 제3 인덱스들, 및 '3210'을 포함하는 제4 인덱스들을 포함할 수 있다. 제1 인덱스들은 제4 행 게이트(R4) 및 제1 열 게이트(C1)에 할당될 수 있으며, 제2 인덱스들은 제3 행 게이트(R3) 및 제3 열 게이트(C3)에 할당될 수 있고, 제3 인덱스들은 제2 행 게이트(R2) 및 제2 열 게이트(C2)에 할당될 수 있으며, 제4 인덱스들은 제1 행 게이트(R1) 및 제4 열 게이트(C4)에 할당될 수 있다. 예컨대, 제3 인코딩 회로(EC3)는, 인덱스 A에 대해 비트 값 1을 갖는 디코딩 값(DV)이 수신되면, 표현형 A를 의미하는 '1010'을 인코딩 값(EN)으로써 출력할 수 있다.
도 16b를 참조하면, 행 게이트들(RG)의 복수의 입력 단자들에는 제7 인덱스 조합(FP7)이 할당될 수 있다. 또한, 열 게이트들(CG)의 복수의 입력 단자들에는 제8 인덱스 조합(FP8)이 할당될 수 있다. 제7 인덱스 조합(FP7) 및 제8 인덱스 조합(FP8)은 'FB73'을 포함하는 제5 인덱스들, 'EA62'을 포함하는 제6 인덱스들, 'D951'를 포함하는 제7 인덱스들, 및 'C840'을 포함하는 제8 인덱스들을 포함할 수 있다. 제5 인덱스들은 제4 행 게이트(R4) 및 제1 열 게이트(C1)에 할당될 수 있으며, 제6 인덱스들은 제3 행 게이트(R3) 및 제3 열 게이트(C3)에 할당될 수 있고, 제7 인덱스들은 제2 행 게이트(R2) 및 제2 열 게이트(C2)에 할당될 수 있으며, 제8 인덱스들은 제1 행 게이트(R1) 및 제4 열 게이트(C4)에 할당될 수 있다. 예컨대, 제4 인코딩 회로(EC4)는, 인덱스 D에 대해 비트 값 1을 갖는 디코딩 값(DV)이 수신되면, 표현형 5를 의미하는 '0101'을 인코딩 값(EN)으로써 출력할 수 있다.
'모듈'이라는 용어는 소프트웨어 또는 FPGA(Field Programmable Gate Array)또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, '모듈'은 어떤 역할들을 수행한다. 그렇지만 '모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈'은 어드레싱 할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈'들로 결합되거나 추가적인 구성요소들과 '모듈'들로 더 분리될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 입력 데이터를 수신하고, 상기 입력 데이터에 기초한 디코딩 신호를 출력하는 디코더;
    상기 디코딩 신호에 기초하여, N(N은 1 이상의 자연수) 진수의 정수들 중 어느 하나에 대응되는 제1 표현형들 중 하나를 제1 인코딩 값으로써 출력하는 제1 인코더;
    상기 디코딩 신호에 기초하여, 상기 N 진수의 정수들 중 어느 하나에 대응되는 제2 표현형들 중 하나를 제2 인코딩 값으로써 출력하는 제2 인코더; 및
    상기 제1 인코딩 값 및 상기 제2 인코딩 값에 대한 로직 연산을 통해 출력 데이터를 생성하는 게이트 모듈;을 포함하는 시큐리티 회로.
  2. 제1항에 있어서,
    상기 디코딩 신호에 기초하여 복수의 정수들 중 하나를 선택하고, 선택한 정수를 디코딩 값으로써 상기 제1 인코더 및 상기 제2 인코더에 출력하는 퍼뮤테이션 로직;을 더 포함하는 시큐리티 회로.
  3. 제1항에 있어서,
    상기 디코딩 신호에 기초하여 복수의 정수들 중 제1 정수를 선택하고, 상기 제1 정수를 제1 디코딩 값으로써 상기 제1 인코더에 출력하는 제1 퍼뮤테이션 로직; 및
    상기 디코딩 신호에 기초하여 복수의 정수들 중 제2 정수를 선택하고, 상기 제2 정수를 제2 디코딩 값으로써 상기 제2 인코더에 출력하는 제2 퍼뮤테이션 로직;을 더 포함하는 시큐리티 회로.
  4. 제1항에 있어서,
    상기 게이트 모듈은, XOR 게이트를 포함하며,
    상기 출력 데이터는, 상기 XOR 게이트를 이용하여 상기 제1 인코딩 값 및 상기 제2 인코딩 값을 XOR 연산된 것을 특징으로 하는 시큐리티 회로.
  5. 제1항에 있어서,
    상기 제1 인코더는, 복수의 행 게이트들을 포함하며,
    상기 복수의 행 게이트들 각각은, 복수의 제1 입력 단자들을 포함하고,
    상기 복수의 제1 입력 단자들 중 하나는 디코딩 값을 수신하는 것을 특징으로 하는 시큐리티 회로.
  6. 제5항에 있어서,
    상기 복수의 행 게이트들 각각은, 상기 복수의 제1 표현형들 각각이 할당되는 것을 특징으로 하는 시큐리티 회로.
  7. 제6항에 있어서,
    상기 제1 표현형들 중 하나가 할당된 상기 복수의 행 게이트들 중 하나는 비트 값 1을 갖는 제1 바이너리를 출력하고, 상기 복수의 행 게이트들 중 나머지는 비트 값 0을 갖는 제2 바이너리를 출력하며,
    상기 제1 인코더는, 상기 비트 값 1을 갖는 바이너리를 출력함에 응답하여 상기 제1 표현형들 중 하나를 상기 제1 인코딩 값으로써 출력하는 것을 특징으로 하는 시큐리티 회로.
  8. 제5항에 있어서,
    상기 제2 인코더는, 복수의 열 게이트들을 포함하며,
    상기 복수의 열 게이트들 각각은, 복수의 제2 입력 단자들을 포함하고,
    상기 복수의 제2 입력 단자들 중 하나는 상기 디코딩 값을 수신하는 것을 특징으로 하는 시큐리티 회로.
  9. 제1항에 있어서,
    상기 출력 데이터는, 상기 제1 인코딩 값으로 구성된 제1 부분과 상기 제2 인코딩 값으로 구성된 제2 부분의 조합인 것을 특징으로 하는 시큐리티 회로.
  10. 제1항에 있어서,
    상기 제1 인코딩 값 또는 상기 제2 인코딩 값은, 해밍 웨이트(hamming weight)가 2 인 것을 특징으로 하는 시큐리티 회로.
  11. 제10항에 있어서,
    상기 제1 표현형들 또는 상기 제2 표현형들은, 16 진법의 3, 5, A 및 C 또는 16 진법의 3, 6, 9 및 C를 포함하는 것을 특징으로 하는 시큐리티 회로.
  12. 제1항에 있어서,
    상기 제1 인코딩 값의 해밍 웨이트 및 상기 제2 인코딩 값의 해밍 웨이트의 합은, 3, 4 또는 5 인 것을 특징으로 하는 시큐리티 회로.
  13. 제1 디코딩 값을 출력하는 제1 퍼뮤테이션 로직;
    제2 디코딩 값을 출력하는 제2 퍼뮤테이션 로직;
    상기 제1 디코딩 값을 수신하는 복수의 제1 행 게이트들을 포함하고, 상기 복수의 제1 행 게이트들의 출력으로써 소정의 해밍 웨이트 값에 기반한 제1 표현형들이 할당되며, 제1 행 게이트가 비트 값 1 의 바이너리를 출력함에 응답하여 상기 제1 행 게이트에 할당된 상기 제1 표현형들 중 하나를 제1 인코딩 값으로써 출력하는 제1 인코더; 및
    상기 제2 디코딩 값을 수신하는 복수의 제2 행 게이트들을 포함하고, 상기 복수의 제2 행 게이트들의 출력으로써 소정의 해밍 웨이트 값에 기반한 제2 표현형들이 할당되며, 제2 행 게이트가 비트 값 1 의 바이너리를 출력함에 응답하여 상기 제2 행 게이트에 할당된 상기 제2 표현형들 중 하나를 제2 인코딩 값으로써 출력하는 제2 인코더;를 포함하는 시큐리티 회로.
  14. 제13항에 있어서,
    상기 제1 인코딩 값 및 상기 제2 인코딩 값을 XOR 연산하여 제1 출력 데이터를 출력하는 게이트 모듈을 더 포함하는 시큐리티 회로.
  15. 제14항에 있어서,
    상기 게이트 모듈은, 반전된 상기 제1 인코딩 값 및 반전된 상기 제2 인코딩 값을 XOR 연산하여 제2 출력 데이터를 출력하는 것을 특징으로 하는 시큐리티 회로.
  16. 제13항에 있어서,
    상기 제1 표현형 및 상기 제2 표현형은, 입력 데이터 및 출력 데이터가 1:1 매핑이 가능하도록 기설정된 것을 특징으로 하는 시큐리티 회로.
  17. 외부 장치로부터 입력 데이터를 수신하는 입력단;
    상기 입력단을 통해 수신된 상기 입력 데이터를 암호화 또는 복호화한 출력 데이터를 출력하는 S-box; 및
    상기 출력 데이터를 출력하는 출력단을 포함하며,
    상기 S-box는,
    상기 입력 데이터에 기초한 디코딩 신호을 출력하는 디코더;
    상기 디코딩 신호에 기초하여, N(N은 1 이상의 자연수) 진수의 정수들 중 어느 하나에 대응되는 제1 표현형들 중 하나를 제1 인코딩 값으로써 출력하는 제1 인코더; 및
    상기 디코딩 신호에 기초하여, 상기 N 진수의 정수들 중 어느 하나에 대응되는 제2 표현형들 중 하나를 제2 인코딩 값으로써 출력하는 제2 인코더;를 더 포함하며,
    상기 출력 데이터는,
    상기 제1 인코딩 값 및 상기 제2 인코딩 값에 대해 로직 연산한 것인 암복호화기.
  18. 제17항에 있어서,
    상기 디코딩 신호에 기초하여 복수의 정수들 중 하나를 선택하고, 선택한 정수를 디코딩 값으로써 상기 제1 인코더 및 상기 제2 인코더에 출력하는 퍼뮤테이션 로직;을 더 포함하는 암복호화기.
  19. 제17항에 있어서,
    상기 디코딩 신호에 기초하여 복수의 정수들 중 제1 정수를 선택하고, 상기 제1 정수를 제1 디코딩 값으로써 상기 제1 인코더에 출력하는 제1 퍼뮤테이션 로직; 및
    상기 디코딩 신호에 기초하여 복수의 정수들 중 제2 정수를 선택하고, 상기 제2 정수를 제2 디코딩 값으로써 상기 제2 인코더에 출력하는 제2 퍼뮤테이션 로직;을 더 포함하는 암복호화기.
  20. 제17항에 있어서,
    상기 출력 데이터는, 상기 XOR 게이트를 이용하여 상기 제1 인코딩 값 및 상기 제2 인코딩 값을 XOR 연산된 것을 특징으로 하는 암복호화기.
KR1020200023836A 2020-02-26 2020-02-26 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기 KR20210108787A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200023836A KR20210108787A (ko) 2020-02-26 2020-02-26 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기
US17/060,099 US11593527B2 (en) 2020-02-26 2020-10-01 Security circuit including dual encoder and endecryptor including the security circuit
CN202011549749.3A CN113315622A (zh) 2020-02-26 2020-12-24 包括双编码器的安全电路和包括安全电路的加密解密器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200023836A KR20210108787A (ko) 2020-02-26 2020-02-26 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기

Publications (1)

Publication Number Publication Date
KR20210108787A true KR20210108787A (ko) 2021-09-03

Family

ID=77367123

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200023836A KR20210108787A (ko) 2020-02-26 2020-02-26 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기

Country Status (3)

Country Link
US (1) US11593527B2 (ko)
KR (1) KR20210108787A (ko)
CN (1) CN113315622A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4264873A1 (en) * 2020-12-18 2023-10-25 Agita Labs, Inc. Privacy-enhanced computation via sequestered encryption

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS566314A (en) 1979-06-28 1981-01-22 Toa Gosei Chem Ind Cable having conductive film
JP4596686B2 (ja) 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
JP5203594B2 (ja) * 2006-11-07 2013-06-05 株式会社東芝 暗号処理回路及び暗号処理方法
JP5055993B2 (ja) 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4687775B2 (ja) 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
JP6136325B2 (ja) 2013-02-08 2017-05-31 日本電気株式会社 暗号処理装置、暗号処理方法およびプログラム
KR102100408B1 (ko) * 2014-03-04 2020-04-13 삼성전자주식회사 인코더 및 그것의 인코딩 방법
KR102446866B1 (ko) 2014-08-28 2022-09-23 삼성전자주식회사 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치
KR102201642B1 (ko) * 2014-11-28 2021-01-13 삼성전자주식회사 Puf 회로 및 그것의 키 등록 방법
US10461925B2 (en) * 2016-09-01 2019-10-29 Cryptography Research, Inc. Hardware masked substitution box for the data encryption standard
KR102397579B1 (ko) 2017-03-29 2022-05-13 한국전자통신연구원 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
EP3447963A1 (en) * 2017-08-24 2019-02-27 Skeyecode Method for protecting data

Also Published As

Publication number Publication date
US20210264061A1 (en) 2021-08-26
CN113315622A (zh) 2021-08-27
US11593527B2 (en) 2023-02-28

Similar Documents

Publication Publication Date Title
US9712319B2 (en) Method and apparatus to encrypt plaintext data
JP6030103B2 (ja) データ保護装置及びその方法
EP1440535B1 (en) Memory encrytion system and method
US9515818B2 (en) Multi-block cryptographic operation
US8681975B2 (en) Encryption method and apparatus using composition of ciphers
KR20160025944A (ko) 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치
EP2922235B1 (en) Security module for secure function execution on untrusted platform
US10148434B2 (en) Random number generating device, cipher processing device, storage device, and information processing system
KR0137709B1 (ko) 암호화된 컴퓨터 목적 코드의 암호 해독 방지 방법
KR20210108787A (ko) 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기
US7773753B2 (en) Efficient remotely-keyed symmetric cryptography for digital rights management
EP2413305B1 (en) Data processing device and data processing method
KR102602696B1 (ko) 암호화 장치 및 복호화 장치, 이들의 동작방법
KR100845835B1 (ko) 다단계 암호화 및 복호화 시스템
KR101375670B1 (ko) 데이터의 암호화/복호화 방법 및 이를 적용한 버스 시스템
JPH0744375A (ja) 暗号化データ処理装置
KR20150145870A (ko) 채널별로 데이터를 보호할 수 있는 반도체 장치
JP6162556B2 (ja) 記憶装置及び情報処理システム
JPS6229333A (ja) 暗号キ−設定方式
JP2020145656A (ja) 情報処理装置、情報処理方法及びプログラム