KR102602696B1 - 암호화 장치 및 복호화 장치, 이들의 동작방법 - Google Patents

암호화 장치 및 복호화 장치, 이들의 동작방법 Download PDF

Info

Publication number
KR102602696B1
KR102602696B1 KR1020180064477A KR20180064477A KR102602696B1 KR 102602696 B1 KR102602696 B1 KR 102602696B1 KR 1020180064477 A KR1020180064477 A KR 1020180064477A KR 20180064477 A KR20180064477 A KR 20180064477A KR 102602696 B1 KR102602696 B1 KR 102602696B1
Authority
KR
South Korea
Prior art keywords
data
bits
round
decryption
encryption
Prior art date
Application number
KR1020180064477A
Other languages
English (en)
Other versions
KR20190041900A (ko
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 US16/158,338 priority Critical patent/US11101824B2/en
Priority to CN201811197240.XA priority patent/CN109670320B/zh
Publication of KR20190041900A publication Critical patent/KR20190041900A/ko
Application granted granted Critical
Publication of KR102602696B1 publication Critical patent/KR102602696B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3784Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 for soft-output decoding of block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

암호화 장치, 복호화 장치 및 이들의 동작 방법이 개시된다. 본 개시의 실시 예에 따라, 블록단위 암호화 알고리즘에 기반하여 암호화 된 N*X 비트(N, X는 각각 양의 정수)의 입력 데이터를 복호화 하는 장치는, 상기 입력 데이터를 저장하는 스테이트 버퍼(state buffer)를 구비하는 암/복호화 컨트롤러; 및 상기 입력 데이터에 기반하여, 제1 복호화 연산 처리를 수행하는 최종 라운드 연산, 제2 복호화 연산 처리를 수행하는 복수의 중간 라운드 연산 및 제3 복호화 연산 처리를 수행하는 최초 라운드 연산을 순차적으로 수행하는 데이터 함수 모듈을 포함하고, 상기 데이터 함수 모듈은, 상기 입력 데이터를 상기 N*X 비트와 상이한 비트 수를 갖는 N*Y 비트의 데이터로 디코딩하고, 상기 N*Y 비트의 데이터에 기반하여 상기 제1 복호화 연산 처리를 수행하고, 상기 제1 복호화 연산 처리 된 상기 N*Y 비트의 데이터를 N*X 비트의 중간 데이터로 인코딩한다.

Description

암호화 장치 및 복호화 장치, 이들의 동작방법{ENCRYPTION DEVICE AND DECRYPTION DEVICE, AND METHOD OF OPERATION THEREOF}
본 개시의 기술적 사상은 암/복호화 장치 및 이의 동작 방법에 관한 것으로서, 상세하게는 블록 단위의 암/복호화 알고리즘을 수행하는 암/복호화 장치 및 이의 동작 방법에 관한 것이다.
통신 기술과 정보 처리 기술의 발달로 공격자의 능력이 향상됨에 따라 그에 따른 안전한 암호 시스템의 요구가 증가하고 있다. 암호 알고리즘은, 암호 알고리즘이 동작하는 단말과 이를 사용하는 사용자는 믿을 수 있다는 가정 하에, 암호 알고리즘이 공개되어 있더라도 암호 키가 노출되지 않는다면 암호문을 획득한 공격자가 암호문을 복호할 수 없다는 전제로 개발되어 왔다. 그러나, 실제 환경에서 통신에 참여한 사용자는 직접 공격자가 되어 암호 키를 제3자에게 유출할 수 있다. 또한, 사용자가 사용하는 단말에 설치된 멀웨어(Mal-ware)는 공격자가 되어, 암호 키 자체뿐 아니라 암호문, 복호화된 평문, 또는 메모리에 남아있는 암호문의 중간계산과정을 이용하여 암호키를 추출할 수도 있다.
이에 대한 해결책으로, 화이트 박스 암호 기술이 소프트웨어 및 콘텐츠의 보호, 불법 유출 방지를 위한 핵심 기술로 부상하였다. 화이트박스 암호 기술은 소프트웨어만으로 암호키가 알고리즘 내부에 숨겨져 있으므로, 암호 알고리즘의 동작 과정에 있어서 중간 연산값 및 암호 키를 직접 노출시키지 않는다. 즉, 화이트 박스 암호 기술은 암호화 알고리즘을 룩업 테이블(lookup table)로 표현하고 이러한 테이블에 암호키를 숨겨 놓음으로써, 공격자가 암호키 프로세스를 모니터링 하더라도 실제 암호키가 무엇인지를 유추할 수 없도록 하였다.
본 개시의 기술적 사상은 암호화 장치, 복호화 장치 및 이들의 동작 방법에 관한 것으로서, 암호화 알고리즘에 따른 연산 처리 전 후로 인코딩 및 디코딩 동작을 수행하는 암호화 장치 및 복호화 장치의 동작 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 암/복호화 장치의 동작 방법은, 블록단위 암호화 알고리즘에 기반하여 암호화 된, N*X비트(N, X는 각각 양의 정수)의 입력 데이터를 수신하는 단계; 상기 N*X비트의 입력 데이터를, 상기 N*X 비트와 상이한 비트수를 갖는 N*Y비트(Y는 양의 정수)의 데이터로 디코딩하는 단계; 상기 N*Y비트의 데이터에 대해 상기 블록단위 암호화 알고리즘에 대한 제1복호화 연산 처리를 수행하는 단계; 상기 제1 복호화 연산 처리 된 N*Y비트의 데이터를 N*X비트의 중간 데이터로 인코딩하는 단계; 및 상기 N*X 비트의 중간 데이터에 대해, 상기 블록단위 암호화 알고리즘에 대한 복수의 복호화 라운드 연산을 수행하는 단계를 포함할 수 있다.
한편, 본 개시의 기술적 사상의 다른 일 측면에 따라, 블록단위 암호화 알고리즘을 통해 암호화 된, N*X비트(N, X는 각각 양의 정수)의 입력 데이터를 복호화 하는 장치의 동작 방법은, 상기 입력 데이터를 수신하고, 상기 N*X비트의 비트수와 상이한 비트수를 갖는 N*Y비트(Y는 양의 정수)의 데이터로 디코딩하는 단계; 상기 N*Y비트의 데이터에 대해 상기 블록단위 암호화 알고리즘에 대한 제1 복호화 연산 처리를 수행하는 단계; 상기 연산 처리된 N*Y비트의 데이터를 N*X비트의 중간 데이터로 인코딩하는 단계; 및 상기 N*X비트의 중간 데이터에 기반하여, 기 설정된 횟수만큼 복수의 중간 라운드 연산을 수행하는 단계를 포함할 수 있다.
한편, 본 개시의 기술적 사상의 또 다른 일 측면에 따라, 블록단위 암호화 알고리즘에 기반하여 암호화 된 N*X 비트(N, X는 각각 양의 정수)의 입력 데이터를 복호화 하는 장치는, 상기 입력 데이터를 저장하는 스테이트 버퍼(state buffer)를 구비하는 암/복호화 컨트롤러; 및 상기 입력 데이터에 기반하여, 제1 복호화 연산 처리를 수행하는 최종 라운드 연산, 제2 복호화 연산 처리를 수행하는 복수의 중간 라운드 연산 및 제3 복호화 연산 처리를 수행하는 최초 라운드 연산을 순차적으로 수행하는 데이터 함수 모듈을 포함하고, 상기 데이터 함수 모듈은, 상기 입력 데이터를 상기 N*X 비트와 상이한 비트 수를 갖는 N*Y 비트의 데이터로 디코딩하고, 상기 N*Y 비트의 데이터에 기반하여 상기 제1 복호화 연산 처리를 수행하고, 상기 제1 복호화 연산 처리 된 상기 N*Y 비트의 데이터를 N*X 비트의 중간 데이터로 인코딩하는 것을 특징으로 할 수 있다.
본 개시의 기술적 사상에 따른 암/복호화 장치의 동작 방법에 따르면, 입력및 출력되는 암호화(또는 복호화) 데이터의 비트 수가 암호화 연산의 각 라운드 연산 수행 시 데이터의 비트 수와 상이하므로, 각 라운드 연산의 중간 결과값이 가질 수 있는 대수적 성질이 암호화(또는 복호화) 데이터에서는 변형될 수 있다. 이에 따라, 제3 자는 각 라운드의 내부 연산을 알 수 없어, 암/복호화 장치의 보안성이 향상될 수 있다.
도 1은 블록 단위의 입력 데이터에 대한 복호화 알고리즘의 일 예를 설명하기 위한 도면이다.
도 2는 본 개시의 예시적 실시 예에 따른 장치를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시 예에 따른 암/복호화 장치의 구체적인 블록도를 도시한다.
도 4는 본 개시의 예시적 실시 예에 따른 암/복호화 장치의 동작 방법을 설명하기 위한 도면이다.
도 5a 내지 도 5d는 본 개시의 예시적 실시 예에 따른 최종 라운드 연산을 구체적으로 설명하기 위한 도면이다.
도 6a 및 도 6b는 본 개시의 예시적 실시 예에 따른 중간 라운드 연산을 구체적으로 설명하기 위한 도면이다.
도 7a 및 도 7b는 본 개시의 예시적 실시 예에 따른 인코딩 동작과 디코딩 동작을 설명하기 위한 도면이다.
도 8은 본 개시의 예시적 실시 예에 따른 최초 라운드 연산을 구체적으로 설명하기 위한 순서도이다.
도 9는 본 개시의 예시적 실시 예에 따라 최종 라운드 연산에서 생성되는 테이블을 도식화한 개념도이다.
도 10은 본 개시의 예시적 실시 예에 따라 중간 라운드 연산에서 생성되는 테이블을 도식화한 개념도이다.
도 11은 본 개시의 예시적 실시 예에 따라 최초 라운드 연산에서 생성되는 테이블을 도식화한 개념도이다.
도 12a 내지 도 12c는 본 개시의 다른 예시적 실시 예에 따른 암/복호화 장치의 동작 방법을 설명하기 위한 도면이다.
도 13은 본 개시의 예시적 실시 예에 따른 메모리 카드에 대한 블록도를 도시한다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 블록 단위의 입력 데이터에 대한 복호화 알고리즘의 일 예를 설명하기 위한 도면이다.
도 1을 참조하면, 복호화 알고리즘에 따른 복호화 동작은 최종 라운드(Final round) 연산(S10), 중간 라운드 연산(S20) 및 최초 라운드(Initial round) 연산(S30) 순서로 진행될 수 있다. 복호화 알고리즘은, 블록단위 암호화 알고리즘에 기반하여 암호화 된 입력 데이터에 대해, 암호화 알고리즘과 반대 순서로써 진행될 수 있다. 또한, 복호화 알고리즘의 일부 연산처리는, 암호화 알고리즘의 각각 대응하는 연산처리와 역(inverse) 관계일 수 있다. 즉, 블록 단위 암호화 알고리즘은, 최초 라운드 연산(S30), 중간 라운드 연산(S20), 최종 라운드 연산(S30)의 순서로 진행될 수 있다.
먼저, 서브키(Subkey_10)를 이용하여 스테이트 버퍼(STB)에 로딩된 블록단위의 데이터(E_DT)에 대한 최종 라운드 연산(S10)이 수행될 수 있다. 최종 라운드 연산(S10)이 수행되는 데이터(E_DT)는, 128비트의 데이터일 수 있다. 다만, 이는 설명의 편의를 위한 예시일 뿐 이에 한정되는 것은 아니다. 데이터(E_DT)가 128비트, 즉 16바이트인 경우, 데이터(E_DT)는 형태의 행렬로 입력될 수 있다. 행렬의 각 성분은, 16바이트를 구성하는 각 바이트에 대응할 수 있다. 다음, 서브키(Subkey_i)를 이용한 중간 라운드 연산(S20), 서브키(Subkey_0)를 이용한 최초 라운드 연산(S30)이 순차적으로 수행될 수 있다. 본 명세서에서는, 설명의 편의를 위해 전체 라운드 연산의 횟수가 10회인 것으로 설명되나, 이는 하나의 예시일 뿐 이에 한정되는 것은 아니다.
각 라운드 연산(S10~S30)에서, 연산될 데이터(E_DT)의 각 바이트는 서브키(Subkey_10, Subkey_i, Subkey_0)와 결합될 수 있다. 각 라운드 연산에서의 서브키(Subkey_10, Subkey_i, Subkey_0)의 크기는 데이터(E_DT)의 크기와 동일할 수 있다. 서브키(Subkey_10, Subkey_i, Subkey_0)는, 예를 들어 키-스케쥴링 알고리즘에 기반하여 암호 키(encryption key)를 가공함으로써 생성될 수 있다. 각 라운드 연산(S10~S30)을 통해 복호화 된 데이터는 128비트의 데이터일 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 장치를 나타내는 블록도이다.
도 2를 참조하면, 장치(1)는 암/복호화 장치(Encryption/Decryption device)(10), 프로세서(Processor)(20), 인터페이스(Interface, I/F)(30) 및 메모리(Memory)(40)를 포함할 수 있다. 장치(1)는 외부와 데이터(DT)를 송수신할 수 있다. 예를 들어, 장치(1)는 스마트 카드, 메모리 카드 또는 다른 장치와 데이터(DT)를 송수신할 수 있다. 장치(1)는, 예를 들어 스마트폰, PDA, 패블릿(pablet), 데스크톱 PC, 랩톱 PC, 테블릿 PC, 서버, 센서, 웨어러블 장치(wearable device)(예: 스마트 안경, 머리 착용형 장치(head-mounted device(HMD)), 전자의복, 전자팔찌, 전자 목걸이, 스마트 미러, 스마트 워치(smart watch) 등을 포함할 수 있으나, 반드시 이에 한정되는 것은 아니며, 데이터 암호화 기능을 구비한 장치라면 그 명칭 및 형태에 제한되지 않는다.
프로세서(20)는 인터페이스(30)를 통하여 장치(1) 외부와 데이터(DT) 송수신을 수행할 수 있다. 프로세서(20)는 작업(task)을 실행하고, 그 결과를 메모리(40)에 저장할 수 있다. 프로세서(20)는 중앙 처리 장치(CPU), AP(application processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 또한, 프로세서(20)는 복수의 코어들을 포함할 수도 있다.
메모리(40)는 프로세서(20)의 동작에 필요한 각종 데이터를 저장할 수 있다. 메모리(40)는, 예를 들어 DRAM(Dynamic Random Access Memory), 모바일 DRAM(Mobile DRAM), SRAM(Static RAM), PRAM(Phase change RAM), FRAM(Ferroelectric RAM), 저항성 메모리(Resistive RAM: RRAM 또는 ReRAM) 및/또는 MRAM(Magnetic RAM)으로 구현될 수 있다.
암/복호화 장치(10)는 장치(1) 외부로부터 수신한 데이터(DT)를 암호화(encryption)및/또는 복호화(decryption)할 수 있다. 암/복호화 장치(10)는 암호화 알고리즘에 기반한 암호화 또는 복호화 연산의 수행을 통해 데이터(DT)의 보안을 유지할 수 있다. 암호화 알고리즘은, 예를 들어 암호 키(encryption key)를 이용하여 암호화된 데이터를 생성하는 알고리즘일 수 있다. 암호화 알고리즘은, 예를 들어 MD5(Message-Digest algorithm), SHA(Secure Hash Algorithm), RSA(Rivest Shamir Adleman), AES(Advanced Encryption Standard), DES(Data Encryption Standard) 등 다양한 알고리즘을 포함할 수 있다.
본 실시 예에서는 장치(1)에 암/복호화 장치(10)가 구비된 것으로 설명되었으나, 이는 하나의 예시일 뿐 이에 한정되지 않는다. 예를 들어, 암/복호화 장치(10)의 동작 방법을 수행하는 암/복호화 모듈이 프로세서(20) 및 메모리(40)에 기반하여 구현될 수도 있다. 암/복호화 모듈은, 암호화 또는 복호화 동작을 수행하기 위한 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다. 용어 '모듈'은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 유닛(unit)을 의미할 수 있다. '모듈'은, 예를 들면, 유닛, 로직(logic), 논리블록(logic block), 부품(component) 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. '모듈'은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. '모듈'은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다.
도 3은 본 개시의 예시적 실시 예에 따른 암/복호화 장치의 구체적인 블록도를 도시한다. 도 3은, 예를 들어 도 2의 암/복호화 장치(10)에 대한 구체적인 블록도일 수 있다.
도 3을 참조하면, 암/복호화 장치(10)는 암/복호화 컨트롤러(Encryption/Decryption Controller)(110), 키 스케쥴러(Key scheduler)(120) 및 데이터 함수 모듈(Data Function Module)(130)을 포함할 수 있다. 암/복호화 컨트롤러(110)는 암/복호화 장치(10)의 전반적인 동작을 제어할 수 있다. 일 예로, 암/복호화 컨트롤러(110)는 키 스케쥴러(120)의 암호 키 가공 및/또는 가공된 암호 키의 출력을 제어할 수 있다. 또한, 암/복호화 컨트롤러(110)는 암호 키에 기반하여, 입력 데이터(DT)에 대한 데이터 함수 모듈(130)의 암호화/복호화 연산을 제어할 수 있다.
암/복호화 컨트롤러(110)는 스테이트 버퍼(STB)를 구비할 수 있다. 스테이트 버퍼(STB)는 입력 데이터(DT) 및/또는 각 라운드 연산을 통해 도출된 데이터를 저장할 수 있다.
예를 들어, 복호화 연산 시, 스테이트 버퍼(STB)에 저장된 입력 데이터(DT)는 데이터 함수 모듈(130)로 제공되고, 입력 데이터(DT)에 기반하여 최종 라운드 연산이 수행될 수 있다. 입력 데이터(DT)에 기반한 최종 라운드 연산에 따라 중간 데이터가 도출되고, 상기 중간 데이터는 스테이트 버퍼(STB)에 업데이트 될 수 있다. 또한, 중간 데이터는 다시 데이터 함수 모듈(130)로 제공되고, 중간 데이터에 기반하여 복수의 중간 라운드 연산이 수행될 수 있다. 중간 데이터에 기반한 복수의 중간 라운드 연산에 따라 라운드 데이터가 도출되고, 상기 라운드 데이터는 스테이트 버퍼(STB)에 업데이트 될 수 있다. 또한, 라운드 데이터는 다시 데이터 함수 모듈(130)로 제공되고, 라운드 데이터에 기반하여 최초 라운드 연산이 수행될 수 있다. 라운드 데이터에 기반한 최초 라운드 연산에 따라 복호화 데이터가 도출되고, 상기 복호화 데이터는 스테이트 버퍼(STB)에 업데이트 될 수 있다.
도시되지는 않았으나, 암/복호화 컨트롤러(110)는 암호화 또는 복호화 알고리즘 연산을 위한 암호 키를 저장하는 복수의 레지스터들을 구비할 수도 있다. 다시 말해서, 암/복호화 컨트롤러(110)는 각 라운드 연산의 기반이 되는 암호 키들을 각각 저장하는 레지스터들을 구비할 수 있다. 예를 들어, 암/복호화 컨트롤러(110)는 가공-전 암호 키를 레지스터에 저장하고, 이를 키 스케쥴러(120)에 제공할 수 있다. 또한, 암/복호화 컨트롤러(110)는 키 스케쥴러(120)에서 가공된 암호 키(예를 들어 서브키)를 제공받고, 이를 레지스터에 업데이트할 수도 있다.
키 스케쥴러(120)는 라운드 연산 별로 요구되는 암호 키를 가공할 수 있다. 예시적 실시 예에 있어서, 키 스케쥴러(120)는 레지스터에 저장된 암호 키를 제공받고, 라운드 연산마다 기 설정된 룰(rule)에 기반하여 암호 키를 가공할 수 있다. 암호 키를 가공한 다음, 키 스케쥴러(120)는 가공된 암호 키를 데이터 함수 모듈(130)로 제공할 수 있다. 또한, 키 스케쥴러(120)는 가공된 암호 키를 암/복호화 컨트롤러에 제공하여, 가공 전 암호 키를 제공하였던 레지스터에 업데이트 할 수 있다. 가공된 암호 키는, 예를 들어 서브키로 명명될 수도 있다.
데이터 함수 모듈(130)은 가공된 암호 키에 기반하여 입력된 데이터(DT)에 대한 암호화/복호화 연산을 수행할 수 있다. 데이터 함수 모듈(130)은, 예를 들어 암호 키에 기반하여 데이터(DT)의 비트 위치를 섞는 전치(permutation)를 통해 암호화/복호화 연산을 수행할 수 있다. 또는, 데이터 함수 모듈(130)은 암호 키에 기반하여 데이터(DT)를 매핑된 다른 데이터로 바꾸는 치환(substitution)을 통해 암호화 연산을 수행할 수도 있다. 데이터 함수 모듈(130)은 암호화 연산이 수행된 데이터를 스테이트 버퍼(STB)에 업데이트 할 수 있다.
복호화 연산 시, 데이터 함수 모듈(130)은 암호화 된 입력 데이터에 대해 최종 라운드 연산, 복수의 중간 라운드 연산 및 최초 라운드 연산을 수행할 수 있다. 최종 라운드 연산, 복수의 중간 라운드 연산 및 최초 라운드 연산은 각각 복호화 알고리즘에 따른 연산 처리를 수행할 수 있다. 예를 들어, 연산 처리는 라운드키 덧셈(AddRoundKey:ARK) 동작, 역 시프트로우(Inverse ShiftRows:ISR) 동작, 역 서브바이트(Inverse SubBytes:ISB) 동작 및 역 믹스칼럼(Inverse MixColumns:IMC) 동작 중 적어도 한 동작의 수행을 포함할 수 있다. 다른 예로써, 암호화 연산의 경우, 연산 처리는 라운드 키 덧셈 동작, 시프트로우 동작, 서브바이트 동작 및 믹스칼럼 동작 중 적어도 한 동작의 수행을 포함할 수 있다.
예시적 실시 예에 있어서, 데이터 함수 모듈(130)은 최종 라운드 연산 수행 시 입력 받은 N*X 비트의 데이터를 N*X 비트와 상이한 비트 수를 갖는 N*Y 비트의 데이터로 변경하고, 상기 N*Y 비트의 데이터에 대해 연산 처리를 수행할 수 있다. 또한, 예시적 실시 예에 있어서, 데이터 함수 모듈(130)은 중간 라운드 연산 수행 시 입력 받은 N*X 비트의 데이터를 N*Y 비트의 데이터로 변경하고, 상기 N*Y 비트의 데이터에 대해 연산 처리를 수행할 수 있다. 또한, 예시적 실시 예에 있어서, 데이터 함수 모듈(130)은 최초 라운드 연산 수행 시 입력 받은 N*X 비트의 데이터를 N*Y 비트의 데이터로 변경하고, 상기 N*Y 비트의 데이터에 대해 연산 처리를 수행할 수 있다. 상기 N, X, Y는 모두 양의 정수 일 수 있다.
도 4는 본 개시의 예시적 실시 예에 따른 암/복호화 장치의 동작 방법을 설명하기 위한 도면이다. 이하, 본 명세서에서는 암/복호화 장치의 동작이 복호화 동작을 중심으로 설명되나, 이는 설명의 편의를 위한 것일 뿐 암호화 동작에도 본 개시의 기술적 사상이 적용될 수 있음은 자명할 것이다.
도 4를 참조하면, 스테이트 버퍼(STB)에 로딩된 블록 단위의 데이터(E_DTa)에 대해 최종 라운드 연산(S110), 중간 라운드 연산(S120) 및 최초 라운드 연산(S130)이 순차적으로 수행될 수 있다. 예시적 실시 예에 있어서, 데이터(E_DTa)는 N*X (N 및 X는 양의 정수)비트의 데이터일 수 있다. 일 예로, 데이터(E_DTa)가 160비트인 경우, N은 16이고 X는 10일 수 있다. 또한, 이 경우 데이터(E_DTa)는 형태의 행렬로 입력될 수 있다. 행렬의 각 성분은, 데이터(E_DTa)가 160비트인 경우 20바이트를 구성하는 각 바이트에 대응할 수 있다.
최종 라운드 연산(S110)은 디코딩 동작(S112), 연산 처리(S114) 및 인코딩 동작(S116)이 수행될 수 있다. 예를 들어, 최종 라운드 연산(S110)에서 디코딩 동작(S112)이 수행되는 경우, 디코딩 동작(S112) 수행 전 암/복호화 장치 외부에서 디코딩 동작(S112)과 상쇄되는 동작이 수행될 수 있다. 본 실시 예에서, 최종 라운드 연산(S110)에서 디코딩 동작(S112)이 수행되는 것으로 설명되나, 이는 하나의 예시일 뿐 이에 한정되는 것은 아니다. 다시 말해서, 최종 라운드 연산(S110) 시, 암/복호화 장치는 스테이트 버퍼(STB)로부터 N*Y 비트의 데이터를 바로 연산 처리(S114) 할 수도 있다.
예시적 실시 예에 있어서, N*X 비트의 데이터(E_DTa)는 디코딩 동작(S112)을 통해 N*X 비트와 상이한 비트 수의 N*Y 비트의 데이터로 변형될 수 있다. N, X, Y는 모두 양의 정수고, 구체적으로 X는 Y보다 큰 양의 정수 일 수 있다. 예시적 실시 예에 있어서, X와 Y는 하기의 [수학식 1]의 관계를 가질 수 있다.
예를 들어, 디코딩 동작(S112)은 데이터(E_DTa)에 대해 N개의 X 비트 비선형 함수(non-linear function) 및 N개의 행렬로 표현되는 선형 함수(linear function)를 적용함으로써 N*X 비트의 데이터를 N*Y 비트의 데이터로 변형할 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
연산 처리(S114)는 N*Y 비트의 데이터에 대해, 복호화 알고리즘에 따른 연산을 수행할 수 있다. 예를 들어, 연산 처리(S114)는 라운드 키 덧셈 동작, 역 시프트로우 동작, 역 서브바이트 동작 및 역 믹스칼럼 동작 중 적어도 한 동작의 수행을 포함할 수 있다. 연산 처리(S114)에서 라운드 키 덧셈 동작이 수행되는 경우, 라운드 키 덧셈 동작은 서브 키(Subkey_10)에 기반하여 수행될 수 있다. 이 때, 연산 처리(S114)가 N*Y 비트의 데이터에 대해 수행되므로, 서브 키(Subkey_10) 또한 N*Y 비트의 키 데이터일 수 있다. 라운드 키 덧셈 동작에서, 예를 들어 N*Y 비트의 데이터와 N*Y 비트의 키 데이터 간 바이트-대-바이트(byte-per-byte) 단위의 XOR 연산이 수행될 수 있다.
예시적 실시 예에 있어서, 연산 처리(S114)를 통해 출력된 N*Y 비트의 데이터는 인코딩 동작(S116)을 통해 N*X 비트의 중간 데이터로 변형될 수 있다. 중간 데이터는, 예를 들어 최종 라운드 연산(S110)으로부터 출력되어 중간 라운드 연산(S120)의 입력이 되는 데이터를 명명하는 것일 수 있다. 예시적 실시 예에 있어서, 인코딩 동작(S116)은, 연산 처리(S114)를 통해 출력된 N*Y 비트의 데이터에 대해 N개의 X 비트 비선형 함수를 적용함으로써 N*Y 비트의 데이터를 N*X 비트의 중간 데이터로 변형할 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
중간 라운드 연산(S120)에서, 복수의 라운드 연산이 반복 수행될 수 있다. 본 실시 예에서, 중간 라운드 연산(S120)은 9번의 라운드 연산을 반복 수행하는 것으로 개시되나, 이는 설명의 편의를 위한 것일 뿐 이에 한정되는 것은 아니다. 중간 라운드 연산(S120)은, 먼저 변수 i를 9로 초기화 시키는 단계(S121)부터 시작될 수 있다.
i 초기화 단계(S121) 다음, N*X 비트의 중간 데이터는 디코딩 동작(S122)을 통해 N*Y 비트의 라운드 데이터로 변형될 수 있다. 라운드 데이터는, 예를 들어 각 중간 라운드 연산의 연산 처리(S124)의 기반이 되는 데이터를 명명하는 것일 수 있다.
예시적 실시 예에 있어서, 디코딩 동작(S122)은, N*X 비트의 중간 데이터에 대해 N개의 X 비트 비선형 함수 및 N개의 행렬로 표현 가능한 선형 함수를 적용함으로써 N*X 비트의 중간 데이터를 N*Y 비트의 라운드 데이터로 변형할 수 있다. 중간 라운드 연산(S120) 중 최초 라운드 연산(즉, round 9)의 디코딩 동작(S122)은, N*X 비트의 데이터를 N 개의 X 비트 데이터로 구분하고, X 비트 데이터 각각에 대해 비선형 함수를 적용하는 단계를 포함할 수 있다. 예시적 실시 예에 있어서, 상기 비선형 함수는 인코딩 동작(S116)에서 적용된 비선형 함수의 역함수일 수 있다.
연산 처리(S124)는 N*Y 비트의 라운드 데이터에 대해, 복호화 알고리즘에 따른 연산을 수행할 수 있다. 예를 들어, 연산 처리(S124)는 라운드 키 덧셈 동작, 역 시프트로우 동작, 역 서브바이트 동작 및 역 믹스칼럼 동작 중 적어도 한 동작의 수행을 포함할 수 있다. 연산 처리(S124)에서 라운드 키 덧셈 동작이 수행되는 경우, 라운드 키 덧셈 동작은 서브 키(Subkey_i)에 기반하여 수행될 수 있다. 이 때, 연산 처리(S124)가 N*Y 비트의 라운드 데이터에 대해 수행되므로, 서브 키(Subkey_i) 또한 N*Y 비트의 키 데이터일 수 있다. 라운드 키 덧셈 동작은, 예를 들어 N*Y 비트의 데이터 및 N*Y 비트의 키 데이터의, 바이트-대-바이트 기반의 XOR 연산을 통해 수행될 수 있다.
연산 처리(S124)를 통해 출력된 N*Y 비트의 라운드 데이터는 인코딩 동작(S126)을 통해 N*X 비트의 라운드 데이터로 변형될 수 있다. 인코딩 동작(S126)은, 연산 처리(S124)를 통해 출력된 N*Y 비트의 라운드 데이터에 대해 N개의 X 비트 비선형 함수를 적용함으로써 N*Y 비트의 데이터를 N*X 비트의 라운드 데이터로 변형할 수 있다. 예를 들어, 인코딩 동작(S126)에서 N*Y 비트의 라운드 데이터를 행렬연산을 적용함으로써 N*X 비트 데이터로 변형하고, 이를 N 개의 X 비트 데이터로 구분하고, 상기 X 비트 데이터 각각에 대해 비선형 함수를 적용하는 단계를 포함할 수 있다.
예시적 실시 예에 있어서, i번째 중간 라운드 연산에서의 인코딩 동작 시 적용되는 비선형 함수는, i-1번째 중간 라운드 연산에서의 디코딩 동작 시 적용되는 비선형 함수와 역함수 관계일 수 있다. 단, i=1 인 경우는 제외될 수 있다. 예를 들어, 9번째 중간 라운드 연산에서의 인코딩 동작 시 N*Y 비트의 라운드 데이터에 대해 비선형 함수가 적용되고, 바로 다음에 수행되는 8번째 중간 라운드 연산에서의 디코딩 동작 시 상기 비선형 함수와 역함수 관계의 비선형 함수가 N*X 비트의 라운드 데이터에 대해 적용될 수 있다. 이에 따라, i번째 중간 라운드 연산에서의 인코딩 동작과, i-1번째 중간 라운드 연산에서의 디코딩 동작은 상호 상쇄될 수 있다.
인코딩 동작(S126) 다음, 변수 i가 1인지 여부가 판단될 수 있다(S128). 변수 i가 1이 아닌 경우, i의 값은 1이 차감된 값으로 정해지고(S129), 디코딩 동작(S122)을 다시 수행할 수 있다. 변수 i가 1인 경우, 중간 라운드 연산(S120)은 종료되고 최초 라운드 연산(S130)이 개시될 수 있다.
최초 라운드 연산(S130)은 디코딩 동작(S132), 연산 처리(S134) 및 인코딩 동작(S136)이 수행될 수 있다. 예를 들어, 최초 라운드 연산(S130)에서 인코딩 동작(S136)이 수행되는 경우, 인코딩 동작(S136) 수행 전 암/복호화 장치 외부에서 인코딩 동작(S136)과 상쇄되는 동작이 수행될 수 있다. 본 실시 예에서, 최초 라운드 연산(S130)에서 인코딩 동작(S136)이 수행되는 것으로 설명되나, 이는 하나의 예시일 뿐 이에 한정되는 것은 아니다. 다시 말해서, 최초 라운드 연산(S130) 시, 암/복호화 장치는 N*Y 비트의 데이터를 바로 출력할 수도 있다.
예시적 실시 예에 있어서, 디코딩 동작(S132)에서는, 중간 라운드 연산 중 마지막 라운드 연산(즉, i는 1인 중간 라운드 연산)에서 인코딩 동작(S126)이 수행된 N*X 비트의 라운드 데이터를 N*Y 비트의 최초 라운드 데이터로 변형할 수 있다. 최초 라운드 데이터는, 예를 들어 최초 라운드 연산(S130)의 연산 처리(S134)에 기반이 되는 데이터를 명명하는 것일 수 있다.
예시적 실시 예에 있어서, 디코딩 동작(S132)은 N*X 비트의 라운드 데이터에 대해 N개의 X 비트 비선형 함수 및 N개의 행렬로 표현 가능한 선형 함수를 적용함으로써, N*X 비트의 라운드 데이터를 N*Y 비트의 최초 라운드 데이터로 변형할 수 있다. 예를 들어, 디코딩 동작(S132)은, N*X 비트의 라운드 데이터를 N개의 X 비트 데이터로 구분하고, X 비트 데이터 각각에 대해 비선형 함수를 적용하는 단계를 포함할 수 있다. 예시적 실시 예에 있어서, 디코딩 동작(S132)에서 적용되는 비선형 함수는, 중간 라운드 연산 중 마지막 라운드 연산(즉, i는 1인 중간 라운드 연산)에서 인코딩 동작(S126)시 적용되는 비선형 함수와 역함수 관계일 수 있다.
연산 처리(S134)는 N*Y 비트의 최초 라운드 데이터에 대해, 복호화 알고리즘에 따른 연산을 수행할 수 있다. 예를 들어, 연산 처리(S134)는 라운드 키 덧셈 동작, 역 시프트로우 동작 및 역 서브바이트 동작 중 적어도 한 동작의 수행을 포함할 수 있다. 연산 처리(S134)에서 라운드 키 덧셈 동작이 수행되는 경우, 라운드 키 덧셈 동작은 서브 키(Subkey_0)에 기반하여 수행될 수 있다. 이 때, 연산 처리(S134)가 N*Y 비트의 최초 라운드 데이터에 대해 수행되므로, 서브 키(Subkey_0) 또한 N*Y 비트의 키 데이터일 수 있다. 라운드 키 덧셈 동작에서, 예를 들어 N*Y 비트의 데이터 와 N*Y 비트의 키 데이터의, 바이트-대-바이트 단위의 XOR 연산이 수행될 수 있다.
본 개시의 실시 예에 따르면, N*Y 비트의 데이터를 암/복호화 함에 있어서, 외부적으로는 N*X 비트의 데이터가 이동하고, 실제 연산 처리는 N*X 비트의 데이터에 대해 수행될 수 있다. 다시 말해서, 입력 및 출력되는 복호화 데이터(또는 암호화 데이터)의 비트 수는, 각 라운드 연산 수행 시 데이터의 비트 수와 상이하므로, 각 라운드 연산의 중간 결과값이 가질 수 있는 대수적 성질이 복호화 데이터(또는 암호화 데이터)에서는 변형될 수 있다. 이에 따라, 제3 자는 각 라운드의 내부 연산을 알 수 없어, 암/복호화 장치의 보안성이 더욱 향상될 수 있다.
도 5a 내지 도 5d는 본 개시의 예시적 실시 예에 따른 최종 라운드 연산을 구체적으로 설명하기 위한 도면이다. 도 5a는 최종 라운드 연산의 구체적인 실시 예에 대한 순서도를, 도 5b는 입력 데이터 형성을 설명하는 개념도를 각각 도시한다. 또한, 도 5c는 디코딩 동작과 복호화 알고리즘의 연산 처리를 설명하는 개념도를, 도 5d는 인코딩 동작을 설명하는 개념도를 각각 도시한다. 도 5a 내지 도 5d에 개시된 실시 예에서, N은 16, Y는 8, X는 8+a (a는 0보다는 크고, 8 이하인 양의 정수)로 설명되나, 이는 하나의 예일 뿐 이에 한정되는 것은 아니다.
도 5a를 참조하면, 최종 라운드 연산에서는 디코딩 동작(S212), 라운드 키 덧셈 동작(S214), 역 시프트로우 동작(S215) 및 인코딩 동작(S216)이 순차적으로 수행될 수 있다. 역 시프트로우 동작(S215)은, 예를 들어 스테이트 버퍼(STB)에 로딩된 행렬의 각 성분을 행단위로 기 설정된 횟수만큼 시프트하는 전치 동작을 수행할 수 있다.
입력 데이터(E_DTa)는 (8+a)*16 비트의 데이터이고, 디코딩 동작(S212)을 통해 128비트 데이터로 변형될 수 있다. 이에 따라, 라운드 키 덧셈 동작(S214) 및 역 시프트로우 동작(S215)은 128비트의 데이터 및 128비트의 서브 키(Subkey_10)에 기반하여 수행될 수 있다. 또한, 역 시프트로우 동작(S215)이 완료된 128비트의 데이터는, 인코딩 동작(S216)을 통해 (8+a)*16 비트의 데이터로 변형될 수 있다. 상기 변형된 데이터는 중간 데이터로 명명될 수 있고, 중간 라운드 연산으로 입력될 수 있다.
도 5b를 참조하면, 입력 데이터(E_DTa)는, 128비트의 원본 데이터(OE_DTa)에 대해 비트 열 보정 작업을 수행하여, (8+a)*16 비트의 데이터로 변형될 수 있다. 원본 데이터(OE_DTa)는, 예를 들어 복호화 알고리즘을 수행하기 위하여 입력되는 암호화 데이터의 최초 형태일 수 있다.
예시적 실시 예에 있어서, 비트 열 보정 작업은 원본 데이터(OE_DTa)를 8비트씩 16개의 단위로 구분하고, 각 단위에 포함된 비트 중 a개의 비트를 다른 단위의 8비트와 병합하여 수행될 수 있다. 예를 들어, 원본 데이터(OE_DTa)의 제1 단위의 8개 비트와, 제2 단위의 a개 비트를 병합하여 입력 데이터(E_DTa)의 8+a 비트를 형성할 수 있다. 본 실시 예에서는, 인접하는 두 개의 단위에서 각각 8개 비트와 a 개 비트를 차용하는 것으로 도시되었으나, 이는 하나의 예시일 뿐 이에 한정되지 않는다. 이러한 비트 열 보정 작업은 '입력비트 다중사용 기법'으로 명명될 수도 있다. 입력비트 다중 사용 기법은, 예를 들어 행렬에 대응되는 선형함수로 표현 될 수 있다.
예시적 실시 예에 있어서, 상기의 비트 열 보정 작업은 암/복호화 장치의 외부 장치에서 수행되고, 암/복호화 장치는 비트 열이 보정된 입력 데이터(E_DTa)를 수신하여 동작할 수 있다. 다만, 이에 한정되는 것은 아니고, 비트 열 보정 작업은 암/복호화 장치의 내부에서 수행될 수도 있다.
도 5c를 참조하면, 디코딩 동작(S212)에서, 입력 데이터(E_DTa)는 각각 8+a 비트인 16개의 단위로 구분되고, 각 단위는 8+a 비트 비선형 함수 및 행렬로 표현 가능한 선형 함수가 적용될 수 있다. 이에 따라, 8+a 비트의 각 단위는, 8비트로 각각 변형될 수 있다.
라운드 키 덧셈 동작(S214)에서, 128비트로 디코딩 된 입력 데이터(E_DTa)의 각 바이트에, 서브 키(Subkey_10)의 각 바이트(k0~k15)를 XOR 연산시킬 수 있다. 다음, XOR 연산의 출력 값에 대해 역 시프트로우(S215) 동작을 수행할 수 있다.
도 5d를 참조하면, 인코딩 동작(S216)에서 128비트 데이터는 행렬-선형 함수가 적용되고, 이에 따라 각각 8비트의 16개 단위들로 구분될 수 있다. 본 명세서에서, 행렬-선형 함수는 행렬로 표현 가능한 선형함수를 의미할 수 있다. 예를 들어, 행렬-선형 함수는 행렬로 표현 가능한 선형함수를 의미할 수 있다.
구분된 16개 단위들은, '입력비트 다중사용 기법'이 적용되어 각각 8+a비트로 변형될 수 있다. 각 8+a 비트의 16개 단위들은, 각각 8+a 비트 비선형 함수가 적용될 수 있다. 이로써, 최종 라운드 수행에 따라 16*(8+a) 비트의 데이터가 출력될 수 있다.
도 6a 및 도 6b는 본 개시의 예시적 실시 예에 따른 중간 라운드 연산을 구체적으로 설명하기 위한 도면이다. 도 6a는 중간 라운드 연산의 구체적인 실시 예에 대한 순서도를, 도 6b는 복호화 알고리즘의 연산 처리를 설명하는 개념도를 각각 도시한다.
도 6a를 참조하면, 중간 라운드 연산에서는 디코딩 동작(S222), 역 서브바이트 동작(S223), 라운드 키 덧셈 동작(S224), 역 믹스칼럼 동작(S225), 역 시프트로우 동작(S226) 및 인코딩 동작(S227)이 수행될 수 있다. 역 서브바이트 동작(S223)은, 예를 들어 데이터의 각 바이트가 룩업 테이블에 따라 다른 바이트로 대체되는 비선형 동작을 수행할 수 있다. 역 믹스칼럼 동작(S225)은, 예를 들어 스테이트 버퍼(STB)에 로딩된 행렬의 각 칼럼의 4바이트를 선형 변환에 기반하여 혼합하는 연산일 수 있다. 이 때 각 열은, 4항-다항식(four-term polynomial)으로 처리될 수 있다.
중간 라운드 연산에 입력되는 중간 데이터는 (8+a)*16 비트의 데이터이고, 디코딩 동작(S222)을 통해 128비트의 라운드 데이터로 변형될 수 있다. 이에 따라, 역 서브바이트 동작(S223), 라운드 키 덧셈 동작(S224), 역 믹스칼럼 동작(S225), 역 시프트로우 동작(S226)은 128비트의 라운드 데이터 및 128비트의 서브 키(Subkey_i)에 기반하여 수행될 수 있다. 또한, 역 시프트로우 동작(S227)이 완료된 128비트의 라운드 데이터는, 인코딩 동작(S227)을 통해 (8+a)*16 비트의 데이터로 변형될 수 있다.
도 6b를 참조하면, 디코딩 동작(S222)을 통해 128비트로 변형된 라운드 데이터는, 각각이 8비트인 16개의 단위로 구분되고, 각 단위 별로 역 서브바이트 동작(S223) 및 라운드 키 덧셈 동작(S224)이 수행될 수 있다. 즉, 라운드 데이터의 각 바이트는 역 서브바이트 동작(S223) 수행 후, 서브 키(Subkey_i)의 각 바이트(k0~k15)와 XOR 연산이 수행될 수 있다.
다음, 라운드 키 덧셈 동작(S224)이 수행된 4바이트를 하나의 단위 입력으로, 역 믹스칼럼 동작(S225)이 수행될 수 있다. 다음, 역 믹스칼럼 동작(S225)이 수행된 4개의 4바이트 단위들을 입력으로, 역 시프트로우 동작(S226)이 수행될 수 있다.
도 7a 및 도 7b는 본 개시의 예시적 실시 예에 따른 인코딩 동작과 디코딩 동작을 설명하기 위한 도면이다. 구체적으로, 도 7a는 인코딩 동작과 디코딩 동작 간의 관계를 설명하기 위한 개념도를, 도 7b는 디코딩 함수에서 사용된 선형 함수에 대응하는 행렬을 도시한다.
도 7a를 참조하면, 128비트의 데이터는 i번째 중간 라운드 연산의 인코딩 동작을 통해 (8+a)*16 비트의 데이터로 변형되고, 상기 (8+a)*16 비트의 데이터는 i-1 번째 중간 라운드 연산(즉, i번째 중간 라운드 연산 다음 수행되는 중간 라운드 연산)의 디코딩 연산이 수행될 수 있다. 예시적 실시 예에 있어서, 인코딩 동작에서는 128비트의 데이터에 대해 행렬-선형 함수가 적용되고, 입력비트 다중사용 기법 적용을 위해 크기의 비트열 확장 행렬(bit diffusion matrix) 연산이 적용 되어 질 수 있다. 이에 따라 구분되는 각 8+a 비트의 16개 단위 각각은 비선형 함수() 동작이 수행 될 수 있다. 비선형 함수()는 각각 8+a 비트-비선형 함수로서, 각각 8+a비트의 데이터를 입력 받고 또한 출력한다.
인코딩 동작을 통해 출력된 (8+a)*16 비트의 데이터에 디코딩 동작이 수행될 수 있다. 디코딩 동작에서, (8+a)*16 비트의 데이터는 각 8+a 비트의 16개 단위로 구분되고, 각 단위는 비선형 함수(NL_0~NL_15)로 입력될 수 있다. 즉, 비선형 함수(NL_0~NL_15)는 각각 8+a 비트 비선형 함수로서, 각각 8+a 비트의 데이터를 입력 받고 또한 출력한다. 예시적 실시 예에 있어서, i번째 중간 라운드 연산의 인코딩 동작에서 적용되는 각 비선형 함수() 및 i-1번째 중간 라운드 연산의 디코딩 동작에서 적용되는 각 비선형 함수(NL_0~NL_15)는 상호 역함수 관계일 수 있다. 각 비선형 함수(NL_0~NL_15)로부터 출력된 8+a 비트의 각 단위들에는 선형 함수(L0~L15)가 적용될 수 있다.
도 7b를 더 참조하면, 디코딩 동작에 적용된 선형 함수(L0~L15)에 대응하는 행렬 L이 도시된다. 행렬 L은 각 선형함수를 구성으로 포함하고, 형태의 행렬로 나타낼 수 있다. 또한, 각 선형 함수(L0~L15)는 형태의 행렬로 나타낼 수 있다. 이 때, 행렬 L의 m행 n열의 성분인 []과 행렬 Li의 s행 t열 성분인 (Li)s,t의 관계는 하기의 [수학식 2]와 같이 정의될 수 있다.
이에 따라, i번째 중간 라운드 연산의 인코딩 동작과 i-1번째 중간 라운드 연산의 디코딩 동작은 상호 상쇄될 수 있다. 즉, 각 라운드 연산에서 중간 결과값 도출을 위한 연산 처리는 그대로 유지하면서, 인코딩 및 디코딩 동작에 기반하여 비트 수를 변형함으로써, 제3 자의 중간 결과값에 대한 접근을 차단할 수 있다.
도 7a 및 도 7b에서 설명된 i번째 중간 라운드 연산의 인코딩 동작과 i-1 번째 중간 라운드 연산의 디코딩 동작의 관계는, 최종 라운드 연산의 인코딩 동작과 중간 라운드 연산 중 최초 라운드 연산(예를 들어, i=9 인 경우 중간 라운드 연산)의 디코딩 동작과의 관계에도 적용될 수 있다. 또한, 상기의 관계는 중간 라운드 연산 중 마지막 라운드 연산(예를 들어, i=1 인 경우 중간 라운드 연산)의 인코딩 동작과 최초 라운드 연산의 디코딩 동작과의 관계에도 적용될 수 있다.
도 8은 본 개시의 예시적 실시 예에 따른 최초 라운드 연산을 구체적으로 설명하기 위한 순서도이다.
도 8을 참조하면, 최초 라운드 연산에서는 디코딩 동작(S232), 역 서브바이트 동작(S234), 라운드 키 덧셈 동작(S235) 및 인코딩 동작(S236)이 수행될 수 있다. 최초 라운드 연산에 입력되는 라운드 데이터는 (8+a)*16 비트의 데이터이고, 디코딩 동작(S232)을 통해 128비트의 최초 라운드 데이터로 변형될 수 있다. 이에 따라, 역 서브바이트 동작(S234) 및 라운드 키 덧셈 동작(S235)은 128비트의 최초 라운드 데이터 및 128비트의 서브 키(Subkey_0)에 기반하여 수행될 수 있다. 또한, 라운드 키 덧셈 동작(S235)이 완료된 128비트의 최초 라운드 데이터는, 인코딩 동작(S236)을 통해 (8+a)*16 비트의 데이터로 변형될 수 있다.
도 9a는 본 개시의 예시적 실시 예에 따라 최종 라운드 연산에 대응되어 생성되는 테이블을 도식화한 개념도이다. 도 9b는 도 9a의 인코딩 동작에서 수행되는 XOR 연산을 설명하기 위한 개념도이다. 테이블은, 예를 들어 최종 라운드 연산 에 대응하는 룩업 테이블을 의미할 수 있으며, 룩업 테이블은 최종 라운드 연산의 중간 연산 데이터를 미리 계산하여 저장하는 용도로 사용 될 수 있다. 본 실시 예에서는, j번째 테이블을 도식화한 개념도가 도시되고, j는 예를 들어 0부터 15 사이의 정수일 수 있다. 즉, 최종 라운드 연산은, 예를 들어 16개의 룩업 테이블과 XOR-Table을 통해 수행 될 수 있다.
도 9a를 참조하면, 최종 라운드 연산에 따라 생성된 룩업 테이블은, 디코딩 동작(S112a), 복호화 알고리즘의 연산 처리(S114a) 및 인코딩 동작(S116a)의 연산을 내포할 수 있다. 디코딩 동작(S112a)은 8+a 비트의 데이터에 8+a 비트 비선형 함수(201) 및 행렬-선형 함수(202)를 적용함으로써 8 비트의 데이터를 출력할 수 있다.
8비트의 데이터에 대해 최종 라운드 연산의 연산 처리(S114a)가 수행될 수 있다. 연산 처리(S114a)는, 예를 들어 라운드 키 덧셈 동작(203) 및 역 시프트로우 동작(204)이 수행될 수 있다. 예시적 실시 예에 있어서, 역 시프트로우 동작(204) 시, 8비트의 데이터는 의 행렬-선형 함수가 적용됨에 따라, 128 비트로 변환되어 출력될 수 있다.
인코딩 동작(S116a)은, 상기 의 행렬 형태로 변환된 데이터에 대해, 행렬-선형 함수(205)를 적용할 수 있다. 이에 따라 출력된 128비트의 데이터에 대한 비트 열 보정작업(206)을 통해, 128비트의 데이터를 (8+a)*16 비트의 데이터로 변형할 수 있다. 예를 들어, 비트 열 보정작업(206)은 '입력비트 다중사용 기법'이 적용될 수 있다. 변형된 (8+a)*16 비트의 데이터에 대해, (8+a) 비트 비선형 함수가 적용될 수 있다. 상기 (8+a)*16 비트 데이터는 16개의 (8+a) 비트로 나뉠 수 있으며 이들 각각은 16개의 룩업 테이블을 통해 각각 (8+a)*16 비트로 확장 되고, 이후 이들은 XOR-Table 연산을 통해 (8+a)*16 비트 데이터가 되어 최종 라운드 연산 결과와 같아 질 수 있다.
도 9b를 더 참조하면, 각각의 8+a 비트의 데이터에 8+a 비트 비선형 함수(207_0, 207_1)가 적용되고, 각 결과 값에 대하여 XOR 연산이 수행될 수 있다. XOR 연산의 결과 값은 다시 8+a 비트 비선형 함수(209)가 적용되고, 이에 따라 8+a 비트의 데이터가 출력될 수 있다. 예를들어 16개의 (8+a)*16 비트는 15번의 XOR-Table 연산을 통해 1개의 (8+a)*16 비트로 변형될 수 있다.
도 10은 본 개시의 예시적 실시 예에 따라 중간 라운드 연산에서 생성되는 테이블을 도식화한 개념도이다. 테이블은, 예를 들어 중간 라운드 연산에 대응하는 룩업 테이블을 의미할 수 있다. 룩업 테이블은 중간 라운드 연산의 중간 연산 데이터를 미리 계산하여 저장하는 용도로 사용 될 수 있다. 중간 라운드 연산은 예를 들어 16개의 룩업 테이블과 XOR-Table을 통해 수행 될 수 있다.
도 10을 참조하면, 중간 라운드 연산은 복수 회 반복해서 수행될 수 있다. 이에 따라, 반복 수행되는 각 중간 라운드 연산마다 룩업 테이블이 도출될 수 있다. 본 실시 예에서는 9번의 중간 라운드 연산이 반복 수행되는 것으로 설명되나, 이에 한정되지 않는다.
중간 라운드 연산에 따라 생성된 룩업 테이블은, 디코딩 동작, 복호화 알고리즘의 연산 처리 및 인코딩 동작의 연산을 내포할 수 있다. 중간 라운드 연산에서 연산 처리는, 역 서브바이트 동작, 라운드 키 덧셈 동작, 역 믹스칼럼 및 역 시프트로우 동작이 수행될 수 있다. 예시적 실시 예에 있어서, 역 믹스칼럼 및 역 시프트로우 일부 동작 시, 역 서브바이트 동작과 라운드 키 덧셈 동작이 수행된 8비트의 데이터는 128 비트로 변환되고, 이후 인코딩 동작 작용을 거쳐 (8+a)*16 비트로 확장 변환되어 출력될 수 있다. 중간 라운드 연산의 입력 데이터는 16개의 (8+a) 비트로 나뉠 수 있으며 이들 각각은 룩업 테이블을 통해 각각 (8+a)*16 비트로 확장 되며, 16개의 (8+a)*16 비트는 15번의 XOR-Table 연산을 통해 1개의 (8+a)*16 비트로 변형되어 중간 라운드 연산 결과와 같아 질 수 있다.
도 11은 본 개시의 예시적 실시 예에 따라 최초 라운드 연산에서 생성되는 테이블을 도식화한 개념도이다. 테이블은, 예를 들어 최초 라운드 연산에 대응하는 룩업 테이블을 의미할 수 있다.
도 11을 참조하면, 최초 라운드 연산에 따라 생성된 룩업 테이블은, 디코딩 동작, 복호화 알고리즘의 연산 처리 및 인코딩 동작의 연산을 내포할 수 있다. 최초 라운드 연산에서 연산 처리는, 역 서브바이트 동작 및 라운드 키 덧셈 동작이 수행될 수 있다.
도 12a 내지 도 12c는 본 개시의 다른 예시적 실시 예에 따른 암/복호화 장치의 동작 방법을 설명하기 위한 도면이다. 구체적으로, 도 12a는 최종 라운드 연산을, 도 12b는 중간 라운드 연산을, 도 12c는 최초 라운드 연산을 각각 설명하는 순서도이다. 도 12a 내지 도 12c에 개시된 구성 중, 도 5a, 도 6a, 및 도 8과 중복되는 구성에 대한 설명은 생략하기로 한다.
도 12a를 참조하면, 최종 라운드 연산에서는 디코딩 동작(S312), 라운드 키 덧셈 동작(S313), 역 시프트로우 동작(S314), 역 서브바이트 동작(S315) 및 인코딩 동작(S316)이 수행될 수 있다. 또한, 도 12b를 참조하면, 중간 라운드 연산에서는 디코딩 동작(S322), 라운드 키 덧셈 동작(S323), 역 믹스칼럼 동작(S324), 역 시프트로우 동작(S325), 역 서브바이트 동작(S326) 및 인코딩 동작(S327)이 수행될 수 있다. 또한, 도 12c를 참조하면, 최초 라운드 연산에서는 디코딩 동작(S332), 라운드 키 덧셈 동작(S335) 및 인코딩 동작(S336)이 수행될 수 있다.
도 13은 본 개시의 예시적 실시 예에 따른 메모리 카드에 대한 블록도를 도시한다.
도 13을 참조하면, 메모리 카드(1000)는 호스트 인터페이스(1010), 메모리 컨트롤러(1020) 및 플래시 메모리 인터페이스(1030)를 포함할 수 있다. 또한, 메모리 컨트롤러(1020)는 본 개시의 예시적 실시 예에 따른 암/복호화 장치(1022)를 더 포함할 수 있다.
호스트 인터페이스(1010)는 호스트(900)와 메모리 카드(1000) 사이의 각종데이터 교환을 수행하기 위하여, 카드 프로토콜을 통해 호스트(900)와 인터페이싱할 수 있다. 메모리 카드(1000)는 멀티미디어 카드(Multimedia Card: MMC), 보안 디지털(Security Digital: SD), miniSD, 메모리 스틱(Memory Stick), 스마트미디어(smartmedia), 트랜스플래시(TransFlash)카드 등에 적용될 수 있다.
메모리 컨트롤러(1020)는 플래시 메모리 인터페이스(1030)를 통하여 플래시 메모리(미도시)와 데이터를 송수신할 수 있다. 플래시 메모리(미도시)는 불휘발성 메모리로서, 예를 들어 낸드(NAND) 플래시 메모리일 수 있다. 메모리 컨트롤러(1020)는 플래시 메모리 인터페이스(1030)를 통해 플래시 메모리(1040)의 각종 동작을 제어할 수 있다.
메모리 카드(1000)는 본 개시의 실시 예에 따른 암/복호화 장치(1022)를 구비하여, 암호화 연산이 이루어진 룩업 테이블의 입/출력 값만이 공개될 수 있고, 테이블의 내부 연산을 알 수 없다. 이에 따라, 제3자는 테이블 내부에 난독화 되어 들어있는 라운드 키를 알아내기 어려우므로, 메모리 카드(1000)의 보안 안정성이 향상될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들이 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 블록단위 암호화 알고리즘에 기반하여 암호화 된, N*X 비트(N, X는 각각 양의 정수)의 입력 데이터를 복호화 하는 장치에 있어서,
    상기 입력 데이터를 저장하는 스테이트 버퍼(state buffer)를 구비하는 암/복호화 컨트롤러; 및
    상기 입력 데이터에 기반하여, 제1 복호화 연산 처리를 수행하는 최종 라운드 연산, 제2 복호화 연산 처리를 수행하는 복수의 중간 라운드 연산 및 제3 복호화 연산 처리를 수행하는 최초 라운드 연산을 순차적으로 수행하는 데이터 함수 모듈을 포함하고,
    상기 데이터 함수 모듈은, 상기 입력 데이터를 상기 N*X 비트와 상이한 비트 수를 갖는 N*Y 비트의 데이터로 디코딩하고, 상기 N*Y 비트의 데이터에 기반하여 상기 제1 복호화 연산 처리를 수행하고, 상기 제1 복호화 연산 처리 된 상기 N*Y 비트의 데이터를 N*X 비트의 중간 데이터로 인코딩하며,
    상기 Y는 양의 정수인 것을 특징으로 하는 장치.
  2. 제1 항에 있어서,
    상기 데이터 함수 모듈은, 상기 N*X 비트의 중간 데이터를 N*Y 비트의 라운드 데이터로 디코딩하고, 상기 N*Y 비트의 라운드 데이터에 기반하여 상기 제2 복호화 연산 처리를 수행하고, 상기 제2 복호화 연산 처리 된 상기 N*Y 비트의 데이터를 N*X 비트의 라운드 데이터로 인코딩하는 것을 특징으로 하는 장치.
  3. 제2 항에 있어서,
    상기 데이터 함수 모듈은, 상기 N*X 비트의 라운드 데이터를 N*Y 비트의 최초 라운드 데이터로 인코딩 하고, 상기 N*Y 비트의 최초 라운드 데이터에 기반하여 상기 제3 복호화 연산을 수행하고, 상기 제3 복호화 연산 처리 된 상기 N*Y 비트의 최초 라운드 데이터를 N*X 비트의 복호화 데이터로 인코딩하는 것을 특징으로 하는 장치.
  4. 블록단위 암호화 알고리즘에 기반하여 암호화 된, N*X비트(N, X는 각각 양의 정수)의 입력 데이터를 수신하는 단계;
    상기 N*X비트의 입력 데이터를, 상기 N*X 비트의 비트수와 상이한 비트수를 갖는 N*Y비트(Y는 양의 정수)의 데이터로 디코딩하는 단계;
    상기 N*Y비트의 데이터에 대해 상기 블록단위 암호화 알고리즘에 대한 제1복호화 연산 처리를 수행하는 단계;
    상기 제1 복호화 연산 처리 된 N*Y비트의 데이터를 N*X비트의 중간 데이터로 인코딩하는 단계; 및
    상기 N*X 비트의 중간 데이터에 대해, 상기 블록단위 암호화 알고리즘에 대한 복수의 복호화 라운드 연산을 수행하는 단계를 포함하는 암/복호화 장치(Encryption/Decryption device)의 동작방법.
  5. 제4 항에 있어서,
    상기 제1 복호화 연산 처리를 수행하는 단계는,
    상기 N*Y비트의 데이터에 대해 라운드 키 덧셈 동작 및 역 시프트로우 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  6. 제4 항에 있어서, 상기 복수의 복호화 라운드 연산을 수행하는 단계는 복수의 중간 라운드 연산을 수행하고,
    상기 복수의 중간 라운드 연산 각각은,
    상기 N*X비트의 중간 데이터를 N*Y비트의 라운드 데이터로 디코딩하는 단계;
    상기 N*Y비트의 라운드 데이터에 대해 상기 블록단위 암호화 알고리즘에 대한 제2 복호화 연산 처리를 수행하는 단계; 및
    상기 제2 복호화 연산 처리된 상기 N*Y비트의 라운드 데이터를 N*X비트의 라운드 데이터로 인코딩하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  7. 제6 항에 있어서,
    상기 제2 복호화 연산 처리를 수행하는 단계는,
    상기 N*Y비트의 라운드 데이터에 대해 역 서브바이트 동작, 라운드 키 덧셈 동작, 역 믹스칼럼 동작 및 역 시프트로우 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  8. 제6 항에 있어서,
    상기 N*Y비트의 데이터를 N*X비트의 중간 데이터로 인코딩하는 단계는,
    상기 N*Y비트의 데이터를 N개의 Y비트 데이터로 구분하고, 상기 Y비트 데이터 각각에 대해 비선형(Non-linear) 함수를 적용하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  9. 제8 항에 있어서,
    상기 복수의 중간 라운드 연산 중 최초의 중간 라운드 연산에서, 상기 N*X비트의 중간 데이터를 N*Y비트의 라운드 데이터로 디코딩하는 단계는,
    상기 N*X비트의 데이터를 N개의 X비트 데이터로 구분하고, 상기 X비트 데이터 각각에 대해 상기 비선형 함수의 역함수를 적용하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  10. 제6 항에 있어서,
    상기 복수의 중간 라운드 연산 각각의 상기 N*Y비트의 라운드 데이터를 N*X비트의 라운드 데이터로 인코딩 하는 단계는,
    상기 N*Y비트의 데이터를 N개의 Y비트 데이터로 구분하고, 상기 Y비트 데이터 각각에 대해 비선형 함수를 적용하는 단계를 포함하고,
    상기 복수의 중간 라운드 연산 중, 최초의 중간 라운드 연산 외의 중간 라운드 연산 각각에서, 상기 N*X비트의 중간 데이터를 N*Y비트의 라운드 데이터로 디코딩하는 단계는,
    상기 N*X비트의 데이터를 N개의 X비트 데이터로 구분하고, 상기 X비트 데이터 각각에 대해 해당 라운드의 이전 라운드에서 적용된 비선형 함수의 역함수를 적용하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  11. 제6 항에 있어서,
    상기 복수의 중간 라운드 연산 중 마지막 중간 라운드 연산에서 인코딩 된 N*X비트의 라운드 데이터를 N*Y비트의 최초 라운드 데이터로 디코딩하는 단계;
    상기 N*Y비트의 최초 라운드 데이터에 대해 상기 블록단위 암호화 알고리즘에 대한 제3 복호화 연산 처리를 수행하는 단계; 및
    상기 제3 복호화 연산 처리 된 N*Y비트의 최초 라운드 데이터를 N*X 비트의 복호화 데이터로 인코딩하는 단계를 더 포함하는 암/복호화 장치의 동작방법.
  12. 제11 항에 있어서,
    상기 제3 복호화 연산 처리를 수행하는 단계는,
    상기 N*Y비트의 최초 라운드 데이터에 대해 역 서브바이트 동작 및 라운드 키 덧셈 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  13. 제11 항에 있어서,
    상기 제3 복호화 연산 처리 된 N*Y비트의 최초 라운드 데이터를 N*X 비트의 복호화 데이터로 인코딩하는 단계는,
    상기 N*Y비트의 데이터를 N개의 Y비트 데이터로 구분하고, 상기 Y비트 데이터 각각에 대해 비선형 함수를 적용하는 단계를 포함하고,
    상기 최초 라운드 데이터로 디코딩하는 단계는,
    상기 N*X비트의 라운드 데이터를 N개의 X비트 데이터로 구분하고, 상기 X비트 데이터 각각에 대해 상기 비선형 함수의 역함수를 적용하는 단계를 포함하는 것을 특징으로 하는 암/복호화 장치의 동작방법.
  14. 제4 항에 있어서,

    인 것을 특징으로 하는 암/복호화 장치의 동작방법.
  15. 제4 항에 있어서,
    상기 블록단위 암호화 알고리즘은 AES (Advanced Encryption Standard) 알고리즘인 것을 특징으로 하는 암/복호화 장치의 동작방법.
  16. 블록단위 암호화 알고리즘을 통해 암호화 된, N*X비트(N, X는 각각 양의 정수)의 입력 데이터를 복호화 하는, 장치의 동작방법에 있어서,
    상기 입력 데이터를 수신하고, 상기 N*X비트의 비트수와 상이한 비트수를 갖는 N*Y비트(Y는 양의 정수)의 데이터로 디코딩하는 단계;
    상기 N*Y비트의 데이터에 대해 상기 블록단위 암호화 알고리즘에 대한 제1 복호화 연산 처리를 수행하는 단계;
    상기 연산 처리된 N*Y비트의 데이터를 N*X비트의 중간 데이터로 인코딩하는 단계; 및
    상기 N*X비트의 중간 데이터에 기반하여, 기 설정된 횟수만큼 복수의 중간 라운드 연산을 수행하는 단계를 포함하는 장치의 동작방법.
  17. 제16 항에 있어서,
    복수의 중간 라운드 연산을 수행하는 단계는,
    상기 N*X비트의 중간 데이터를 N*Y비트의 라운드 데이터로 디코딩하는 단계;
    상기 N*Y비트의 라운드 데이터에 대해 제2 복호화 연산 처리를 수행하는 단계; 및
    상기 제2 복호화 연산 처리된 상기 N*Y 비트의 라운드 데이터를 N*X 비트의 라운드 데이터로 인코딩하는 단계를 포함하는 것을 특징으로 하는 장치의 동작방법.
  18. 제17 항에 있어서,
    상기 연산 처리된 N*Y비트의 데이터를 N*X비트의 중간 데이터로 인코딩하는 단계는,
    상기 N*Y비트의 데이터를 N개의 Y비트 데이터로 구분하고, 상기 Y비트 데이터 각각에 대해 선형 함수 및 비선형 함수를 순차적으로 적용하는 단계를 포함하는 것을 특징으로 하는 장치의 동작방법.
  19. 제18 항에 있어서,
    상기 N*X비트의 중간 데이터를 N*Y비트의 라운드 데이터로 디코딩하는 단계는,
    상기 N*X비트의 데이터를 N개의 X비트 데이터로 구분하고, 상기 X비트 데이터 각각에 대해 상기 비선형 함수의 역함수를 적용하는 단계를 포함하는 것을 특징으로 하는 장치의 동작방법.
  20. 제17 항에 있어서,
    상기 복수의 중간 라운드 연산을 수행하는 단계는,
    상기 복수의 중간 라운드 연산 중 마지막 중간 라운드 연산에서 상기 N*Y 비트의 라운드 데이터를 N*X 비트의 라운드 데이터로 인코딩하는 단계를 포함하고,
    상기 N*X 비트의 라운드 데이터를 N*Y 비트의 최초 라운드 데이터로 디코딩하는 단계;
    상기 N*Y 비트의 최초 라운드 데이터에 대해 제3 복호화 연산 처리를 수행하는 단계; 및
    상기 제3 복호화 연산 처리 된 N*Y 비트의 최초 라운드 데이터를 N*X 비트의 복호화 데이터로 인코딩하는 단계를 더 포함하는 장치의 동작 방법.
KR1020180064477A 2017-10-13 2018-06-04 암호화 장치 및 복호화 장치, 이들의 동작방법 KR102602696B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/158,338 US11101824B2 (en) 2017-10-13 2018-10-12 Encryption device and decryption device, and operation method thereof
CN201811197240.XA CN109670320B (zh) 2017-10-13 2018-10-15 加密设备和解密设备、以及其操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20170133471 2017-10-13
KR1020170133471 2017-10-13

Publications (2)

Publication Number Publication Date
KR20190041900A KR20190041900A (ko) 2019-04-23
KR102602696B1 true KR102602696B1 (ko) 2023-11-16

Family

ID=66285423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180064477A KR102602696B1 (ko) 2017-10-13 2018-06-04 암호화 장치 및 복호화 장치, 이들의 동작방법

Country Status (2)

Country Link
US (1) US11101824B2 (ko)
KR (1) KR102602696B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160359618A1 (en) * 2015-06-05 2016-12-08 Apple Inc. Using state reordering to protect against white box attacks
US20170126397A1 (en) * 2014-03-19 2017-05-04 Nxp B.V. Protecting a white-box implementation against attacks

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4255811A (en) * 1975-03-25 1981-03-10 International Business Machines Corporation Key controlled block cipher cryptographic system
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
FR2820576B1 (fr) * 2001-02-08 2003-06-20 St Microelectronics Sa Procede de cryptage protege contre les analyses de consommation energetique, et composant utilisant un tel procede de cryptage
US7280657B2 (en) * 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
US7257229B1 (en) * 2002-06-07 2007-08-14 Winbond Electronics Corporation Apparatus and method for key scheduling
KR20050053379A (ko) * 2003-12-01 2005-06-08 삼성전자주식회사 AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법
US8102997B2 (en) * 2004-03-29 2012-01-24 Stmicroelectronics S.A. Processor for executing an AES-type algorithm
US7715555B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for extending advanced encryption standard (AES) operations for enhanced security
US8509427B2 (en) * 2005-08-01 2013-08-13 Eric Myron Smith Hybrid mode cryptographic method and system with message authentication
US7831039B2 (en) * 2006-06-07 2010-11-09 Stmicroelectronics S.R.L. AES encryption circuitry with CCM
JP4967544B2 (ja) * 2006-09-01 2012-07-04 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US9209967B2 (en) * 2007-03-12 2015-12-08 Exelis, Inc. Precalculated encryption key
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
US8416947B2 (en) * 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
JP5599728B2 (ja) * 2008-03-05 2014-10-01 イルデト・コーポレート・ビー・ヴイ ホワイトボックス実装
US8767957B1 (en) * 2008-10-29 2014-07-01 Purdue Research Foundation Communication encryption method and device
CN102461058B (zh) * 2009-03-10 2015-06-03 耶德托公司 具有输入相关编码的白盒密码系统
EP2293487A1 (en) * 2009-09-08 2011-03-09 Thomson Licensing A method of diversification of a round function of an encryption algorithm
EP2369778B1 (en) * 2010-03-26 2018-08-15 Irdeto B.V. Personalized whitebox descramblers
KR20120089396A (ko) * 2010-11-16 2012-08-10 삼성전자주식회사 암호화 장치 및 그 암호화 방법
US8504845B2 (en) * 2011-03-30 2013-08-06 Apple Inc. Protecting states of a cryptographic process using group automorphisms
US20130067212A1 (en) * 2011-09-14 2013-03-14 Augustin J. Farrugia Securing implementation of cryptographic algorithms using additional rounds
US10333702B2 (en) * 2012-03-20 2019-06-25 Irdeto B.V. Updating key information
KR101977823B1 (ko) * 2012-04-02 2019-05-13 삼성전자주식회사 랜덤 순열 생성 방법, 랜덤 순열 생성 장치 및 이를 구비하는 암복호화 장치
US9436830B2 (en) * 2012-10-17 2016-09-06 Sandisk Technologies Llc Securing access of removable media devices
US9143317B2 (en) 2013-05-24 2015-09-22 Apple Inc. Protecting against white box attacks using column rotation
KR102133200B1 (ko) * 2013-08-08 2020-07-13 서울대학교산학협력단 데이터의 보호 방법 및 장치
US9571270B2 (en) * 2013-11-29 2017-02-14 Portland State University Construction and uses of variable-input-length tweakable ciphers
US9787470B2 (en) * 2013-12-12 2017-10-10 Samsung Electronics Co., Ltd. Method and apparatus of joint security advanced LDPC cryptcoding
US20150222421A1 (en) 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms
IL231550A0 (en) * 2014-03-17 2014-08-31 Nuvoton Technology Corp Saving secure information in external memory
KR20150123476A (ko) 2014-04-25 2015-11-04 한국전자통신연구원 부채널 공격 방지를 위한 대칭키 암호 알고리즘의 함수 마스킹 장치 및 그 방법
US9565018B2 (en) * 2014-05-28 2017-02-07 Apple Inc. Protecting cryptographic operations using conjugacy class functions
AU2015290223B2 (en) * 2014-07-16 2018-05-10 Bae Systems Information And Electronic Systems Integration Inc. Flash memory device for storing sensitive information and other data
KR102446866B1 (ko) * 2014-08-28 2022-09-23 삼성전자주식회사 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치
KR20160026313A (ko) 2014-08-29 2016-03-09 삼성전자주식회사 데이터 암호화 또는 복호화를 위한 장치 및 방법
US9515818B2 (en) * 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US9774443B2 (en) * 2015-03-04 2017-09-26 Apple Inc. Computing key-schedules of the AES for use in white boxes
US9729310B2 (en) * 2015-10-08 2017-08-08 The Boeing Company Scrambled counter mode for differential power analysis resistant encryption
US10171234B2 (en) * 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation
US10223511B2 (en) * 2016-03-30 2019-03-05 Nxp B.V. Watermarking input and output of a white-box implementation
US10728026B2 (en) * 2016-11-24 2020-07-28 Samsung Electronics Co., Ltd. Data management method
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170126397A1 (en) * 2014-03-19 2017-05-04 Nxp B.V. Protecting a white-box implementation against attacks
US20160359618A1 (en) * 2015-06-05 2016-12-08 Apple Inc. Using state reordering to protect against white box attacks

Also Published As

Publication number Publication date
KR20190041900A (ko) 2019-04-23
US11101824B2 (en) 2021-08-24
US20200162113A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
US9031228B2 (en) Systems and methods for implementing block cipher algorithms on attacker-controlled systems
CN105940439B (zh) 使用排列应对对密码算法的旁通道攻击的对策
US8036379B2 (en) Cryptographic processing
EP3169017B1 (en) Split-and-merge approach to protect against dfa attacks
CN105359450B (zh) 防篡改密码算法实现
US10277391B2 (en) Encryption device, encryption method, decryption device, and decryption method
US8718280B2 (en) Securing keys of a cipher using properties of the cipher process
US20140348323A1 (en) Protecting against white box attacks using column rotation
EP2922235B1 (en) Security module for secure function execution on untrusted platform
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
Tayde et al. File encryption, decryption using AES algorithm in android phone
US8699702B2 (en) Securing cryptographic process keys using internal structures
US20220078024A1 (en) State synchronization for post-quantum signing facilities
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
CN113169860A (zh) 用于对密文进行非多项式计算的装置和方法
KR20170097509A (ko) 화이트 박스 암호화 기반의 연산 방법 및 그 방법을 수행하는 보안 단말
CN105978680B (zh) 一种加密钥的加密运算方法
CN113839770A (zh) 用于tls分组加密和解密的高吞吐量后量子aes-gcm引擎
CN109670320B (zh) 加密设备和解密设备、以及其操作方法
KR102602696B1 (ko) 암호화 장치 및 복호화 장치, 이들의 동작방법
US8774402B2 (en) Encryption/decryption apparatus and method using AES rijndael algorithm
US9338145B2 (en) Security patch without changing the key
EP2940677A1 (en) Method for including an implicit integrity or authenticity check into a white-box implementation
KR20210108787A (ko) 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기
EP3931999A1 (en) Method secured against side-channel attacks with a new masking scheme protecting linear operations of a cryptographic algorithm

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