[go: up one dir, main page]

KR101516574B1 - 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법 - Google Patents

형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법 Download PDF

Info

Publication number
KR101516574B1
KR101516574B1 KR1020140020527A KR20140020527A KR101516574B1 KR 101516574 B1 KR101516574 B1 KR 101516574B1 KR 1020140020527 A KR1020140020527 A KR 1020140020527A KR 20140020527 A KR20140020527 A KR 20140020527A KR 101516574 B1 KR101516574 B1 KR 101516574B1
Authority
KR
South Korea
Prior art keywords
round
key
erk
encryption
decryption
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020140020527A
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 KR1020140020527A priority Critical patent/KR101516574B1/ko
Priority to EP14195773.8A priority patent/EP2911138A3/en
Priority to JP2014244715A priority patent/JP2015158665A/ja
Priority to US14/561,652 priority patent/US20150244518A1/en
Application granted granted Critical
Publication of KR101516574B1 publication Critical patent/KR101516574B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명의 실시예에 따르면 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법이 개시된다. 일 실시예에 따른 가변길이 블록암호 장치는 평문을 암호화하여 동일한 길이의 암호문을 출력하는 암호화 장치와, 암호문을 평문으로 복원하는 복호화 장치를 포함할 수 있다. 본 실시예에 따르면, 임의의 비트 길이를 가지는 평문에 대해 동일한 길이의 암호문을 신속하게 생성하고, 생성된 암호문을 신속하게 평문으로 복원할 수 있고, 블록암호의 공격에 대한 안전성을 향상시킬 수 있다.

Description

형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법{VARIABLE LENGTH BLOCK CIPHER APPARATUS FOR PROVIDING THE FORMAT PRESERVING ENCRYPTION, AND THE METHOD THEREOF}
형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법에 관한 것으로, 보다 상세하게는 임의의 비트 길이를 가지는 평문을 암호화하였을 때 동일한 비트 길이의 암호문이 생성되는 가변길이 블록암호 장치 및 방법에 관한 것이다.
메시지의 기밀성을 보존하기 위해서는 메시지의 암호화가 필수적이고, 이를 위해 AES(Advanced Encryption Standard)를 비롯한 다양한 블록암호들이 사용되고 있다. 하지만, 기존 블록암호들은 블록 크기가 미리 정해져 있어서 주민등록번호, 카드번호 등 특정 형태의 데이터를 암호화하면 그 형태가 변하게 된다. 즉, 주민등록번호나 카드번호를 저장하는 데이터베이스에서는 데이터를 암호화한 암호문 역시 주민등록번호나 카드번호와 같은 형태이어야 관리가 용이하나 기존 블록암호들은 이를 지원하지 못한다.
일반적으로 평문 및 암호문의 형태를 동일하게 해주는 암호를 형태보존 암호라고 한다. 여기서, 평문, 암호문의 형태라고 하는 것은 평문, 암호문이 속한 도메인이라고 볼 수 있다. 이와 같이, 임의의 도메인에 속한 평문을 같은 도메인에 속한 암호문으로 변환하는 기술은 블록암호 기반의 운용모드 방식으로 구성된 몇 가지의 방법들이 존재한다. 하지만, 이러한 방법들은 하나의 데이터를 암호화하기 위해 기반 블록암호를 10회 이상 구동하여야 하므로 효율성이 떨어진다. 한국공개특허 제10-2005-0069927호는 블록암호화 방법 및 블록암호/복호회로에 대해 개시하고 있다.
임의의 비트 길이를 가지는 평문을 암호화할 때 동일한 비트 길이의 암호문을 생성하고, 암호문을 동일한 길이의 평문으로 복호화하는 가변길이 블록암호 장치 및 방법을 제공하기 위함이다.
일 양상에 따른 가변길이 블록암호화 장치에 있어서, 암호화 장치는 비밀키 및 라운드 수(Nr)를 이용하여 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성하는 암호화 키 생성부와 평문, 암호화 라운드 키를 이용하여 평문과 동일한 길이의 암호문을 출력하는 암호문 출력부를 포함할 수 있다.
암호화 키 생성부는 비밀키 및 라운드 수(Nr)를 입력으로 비밀키의 길이에 따라 미리 설정된 함수를 수행하여 (Nr + 1)×28 비트열을 출력하고, 출력된 결과를 이용하여 각각 128 비트의 길이를 갖는 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성할 수 있다.
암호문 출력부는 평문, 평문의 길이 및 암호화 라운드 키(eRK0)를 입력으로 평문의 삽입 위치를 고려하여 암호화 라운드 함수값을 출력하는 제1 암호화 라운드부, 이전 암호화 라운드에서 출력된 암호화 라운드 함수값과, 암호화 라운드 키(eRK1, …, eRKNr -1)를 순차적으로 입력받아, 암호화 라운드 함수값을 출력하는 제2 암호화 라운드부 및 이전 암호화 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRKNr) 및 평문 길이를 입력받아 암호문을 출력하는 제3 암호화 라운드부를 포함할 수 있다.
또한, 암호화 장치는 마스터 키 및 트윅을 이용하여 상기 마스터 키와 동일한 길이를 갖는 상기 비밀키를 생성하는 비밀키 생성부를 더 포함할 수 있다.
비밀키 생성부는 마스터 키 및 트윅을 이용하여 메시지 인증값(M[0],M[1],M[2],…, M[15])을 생성하는 메시지 인증부를 포함할 수 있고, 마스터 키 중의 소정 비트와 생성된 메시지 인증값을 배타적 논리합(XOR) 연산하여 비밀키를 생성할 수 있다.
이때, 마스터 키는 128 비트, 192 비트 또는 256 비트 중의 어느 하나의 비트 길이를 가지며, 트윅은 임의의 비트 길이를 가지며, 생성된 메시지 인증값은 128 비트 길이를 가질 수 있다.
일 양상에 따른 가변길이 블록암호 장치에 있어서, 복호화 장치는 비밀키 및 라운드 수(Nr)를 이용하여 복호화 라운드 키(dRK0, dRK1, …, dRKNr)를 생성하는 복호화 키 생성부, 복호화 라운드 키를 이용하여 암호문과 동일한 길이의 평문을 복원하는 평문 복원부를 포함할 수 있다.
복호화 키 생성부는 Decrypt(Encrypt(P, eRK), dRK) = P (여기서, P는 평문, eRK는 암호화 라운드 키, dRK는 복호화 라운드 키, Encrypt()는 암호문 출력부, Decrypt()는 평문 복원부)를 만족하도록 복호화 라운드 키를 생성할 수 있다.
평문 복원부는 암호문, 평문의 길이 및 복호화 라운드 키(dRK0)를 입력으로 암호문의 삽입 위치를 고려하여 복호화 라운드 함수값을 출력하는 제1 복호화 라운드부, 이전 복호화 라운드에서 출력된 복호화 라운드 함수값과, 복호화 라운드 키(dRK1, …, dRKNr -1)를 순차적으로 입력 받아 복호화 라운드 함수값을 출력하는 제2 복호화 라운드부 및 이전 복호화 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRKNr) 및 평문 길이를 입력받아 암호문을 평문으로 복원하는 제3 복호화 라운드부를 포함할 수 있다.
일 양상에 따르면, 가변길이 블록암호 방법에 있어서, 암호화 방법은 비밀키 및 라운드 수(Nr)를 이용하여 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성하는 단계 그리고, 평문, 암호화 라운드 키를 이용하여 평문과 동일한 길이의 암호문을 출력하는 단계를 포함할 수 있다.
암호화 라운드 키를 생성하는 단계는 비밀키 및 라운드 수(Nr)를 입력으로 비밀키의 길이에 따라 미리 설정된 함수를 수행하여 (Nr + 1)×28 비트열을 출력하는 단계 및 출력된 (Nr + 1)×28 비트열을 이용하여 각각 128 비트의 길이를 갖는 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성하는 단계를 포함할 수 있다.
암호문을 출력하는 단계는 평문, 평문의 길이 및 암호화 라운드 키(eRK0)를 입력으로 평문의 삽입 위치를 고려하여 암호화 라운드 함수값을 출력하는 단계, 이전 암호화 라운드에서 출력된 암호화 라운드 함수값과, 암호화 라운드 키(eRK1, …, eRKNr-1)를 순차적으로 입력받아, 암호화 라운드 함수값을 출력하는 단계 및 이전 암호화 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRKNr) 및 평문 길이를 입력받아, 암호문을 출력하는 단계를 포함할 수 있다.
일 양상에 따른 가변길이 블록암호 방법에 있어서, 복호화 방법은 비밀키 및 라운드 수(Nr)를 이용하여 복호화 라운드 키(dRK0, dRK1, …, dRKNr)를 생성하는 단계 그리고, 암호문, 복호화 라운드 키를 이용하여 암호문과 동일한 길이의 평문으로 복원하는 단계를 포함할 수 있다.
복호화 라운드 키를 생성하는 단계는 Decrypt(Encrypt(P, eRK), dRK) = P (여기서, P는 평문, eRK는 암호화 라운드 키, dRK는 복호화 라운드 키, Encrypt()는 암호문을 출력하는 단계, Decrypt()는 평문을 복원하는 단계)를 만족하도록 복호화 라운드 키를 생성할 수 있다.
평문을 복원하는 단계는 암호문, 평문의 길이 및 복호화 라운드 키(dRK0)를 입력으로 암호문의 삽입 위치를 고려하여 복호화 라운드 함수값을 출력하는 단계, 이전 복호화 라운드에서 출력된 복호화 라운드 함수값과, 복호화 라운드 키(dRK1, …, dRKNr -1) 복호화 라운드 함수값을 출력하는 복호화 라운드를 반복 수행하는 단계 및 이전 복호화 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRKNr) 및 평문 길이를 입력받아 암호문을 평문으로 복원하는 복호화 라운드를 수행하는 단계를 포함할 수 있다.
제시되는 가변길이 블록암호 장치에 의하면, 임의의 비트 길이를 가지는 평문에 대해 동일한 길이의 암호문을 신속하게 생성하고, 암호문을 신속하게 평문으로 복원할 수 있다. 이로 인해, 블록암호의 공격에 대한 안전성을 향상시킬 수 있다.
도 1은 일 실시예에 따른 가변길이 블록암호 장치에서 암호화 장치의 블록도이다.
도 2 내지 도 22는 도 1의 실시예에 따른 암호화 장치에서 수행되는 알고리즘 및 데이터의 예이다.
도 23은 일 실시예에 따른 가변길이 블록암호 장치에서 복호화 장치의 블록도이다.
도 24 내지 도 34는 도 23의 실시예에 따른 복호화 장치에서 수행되는 알고리즘 및 데이터의 예이다.
도 35는 일 실시예에 따른 가변길이 블록암호 장치에서 비밀키 생성장치의 블록도이다.
도 36은 일 실시예에 따른 가변길이 블록암호 장치에서 암호화 장치에 의해 수행되는 암호화 방법의 흐름도이다.
도 37은 일 실시예에 따른 가변길이 블록암호 장치에서 복호화 장치에 의해 수행되는 복호화 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
본 발명의 실시예에 따른 가변길이 블록암호 장치는 도 1을 참조하여 설명되는 암호화 장치(100), 도 23을 참조하여 설명되는 복호화 장치(200) 및 도 35를 참조하여 설명되는 비밀키 생성 장치(300)를 포함할 수 있다. 이때, 비밀키 생성 장치(300)는 암호화 장치(100) 및 복호화 장치(200)와는 별개의 장치일 수 있으나, 필요에 따라 암호화 장치(100) 또는 복호화 장치(200)의 일 구성으로 포함되어 구현될 수도 있다.
이하, 각 도면에서 사용되는
Figure 112014017283718-pat00001
연산은 논리합(XOR)연산을 의미하며 예를 들어
Figure 112014017283718-pat00002
는 두 비트 열 또는 두 바이트 열 x와 y의 비트별 배타적 논리합(XOR) 연산을 의미한다. 또한, mod 연산은 특정값을 나눈 나머지 값을 취하는 연산을 의미한다.
도 1은 일 실시예에 따른 가변길이 블록암호 장치에서 암호화 장치의 블록도이다. 도 2 내지 도 22는 도 1의 실시예에 따른 암호화 장치에서 수행되는 알고리즘 및 데이터의 예이다.
도 1 내지 도 22를 참조하여, 가변길이 블록암호 장치에 있어서, 암호화 장치(100)를 설명하면, 도 1에 도시된 바와 같이, 암호화 장치(100)는 암호화 키 생성부(110) 및 암호문 출력부(120)를 포함한다.
암호화 키 생성부(110)는 비밀키(K)를 입력받고, 입력된 비밀키(K) 및 라운드 수(Nr)를 이용하여 암호화 라운드 키(eRK)를 생성한다.
이때, 비밀키(K)는 128 비트, 192 비트 또는 256 비트이며, 8 비트의 서브 키들이 연접하여 구성될 수 있다. 즉, 비밀키(K)는 16개의 8 비트 서브 키(K[0],K[1],K[2],…,K[15])들이 연접하여 구성된 128 비트 비밀키(K=K[0]||K[1]||K[2]||…|K[15]) 또는 24개의 8 비트 서브 키(K[0],K[1],K[2], …, K[23])들이 연접하여 구성된 192 비트 비밀키(K=K[0]||K[1]||K[2]||…|K[23]) 또는 32개의 서브 키(K[0],K[1],K[2],…,K[31])들이 연접하여 구성된 256 비트 비밀키(K=K[0]||K[1]||K[2]||…|K[31])일 수 있다.
한편, 도 2는 라운드 수(Nr)를 예시한 것으로, 라운드 수(Nr)는 평문(P)의 길이(Nb) 및 비밀키의 길이(Nk)에 따라 미리 설정되며 가변길이 블록암호 알고리즘의 안전성을 고려하여 적절한 값으로 미리 설정될 수 있다.
또한, 도 3은 암호화 라운드 키(eRK)를 생성하는 각 라운드에서 사용되는 임의의 상수인 라운드 상수(RC)를 예시한 것이다. 도 4는 암호화 키 생성부(110)가 암호화 라운드 키(eRK)를 생성하는데 사용하는 알고리즘의 일 예이다.
암호화 키 생성부(110)는 비밀키(K=(K[0],K[1],…,K[Nk/8-1])), 미리 설정된 라운드 수(Nr) 및 라운드 상수(RC)를 입력하여, 도 4에 예시된 바와 같은 알고리즘을 수행하고 그 결과로 (Nr+1)개의 128 비트 암호화 라운드 키(eRKi=(eRKi[0],eRKi[1],…,eRKi[15]), 0≤i≤Nr)를 생성할 수 있다.
예를 들어, 암호화 키 생성부(110)는 도 4에 예시된 바와 같이 비밀키(K)의 길이에 따라 각각 128비트 비밀키(K=(K[0],K[1],…,K[15])), 192비트 비밀키(K=(K[0],K[1],…,K[23])) 및 256비트 비밀키(K=(K[0],K[1],…,K[31]))와, 라운드 수(Nr) 및 미리 설정된 라운드 상수(RC)를 이용하여 그 결과로 모두 (Nr+1)×128 비트열을 출력할 수 있다. 도 5는 암호화 라운드 키 생성부(110)가 도 4에 예시된 알고리즘을 이용하여 암호화 라운드 키(eRK)를 생성할 때 사용되는 G() 함수 알고리즘의 일 예이다.
암호화 키 생성부(110)는 그 결과 출력된 (Nr+1)×128 비트열을 이용하여 (Nr+1)개의 128 비트 암호화 라운드 키(eRKi=(eRKi[0],eRKi[1],…,eRKi[15]), 0≤i≤Nr)를 생성할 수 있다.
암호문 출력부(120)는 평문(P), 생성된 암호화 라운드 키(eRK)를 이용하여 평문(P)과 동일한 길이(Nb)의 암호문(C)을 출력할 수 있다.
도 1을 참조하면, 암호문 출력부(120)는 좀 더 구체적으로 제1 암호화 라운드부(121), 제2 암호화 라운드부(122) 및 제3 암호화 라운드부(123)를 포함할 수 있다.
도 6은 암호문 출력부(120)가 수행하는 알고리즘의 일 예이다. 도 6을 참조하여 좀 더 구체적으로 설명하면, 제1 암호화 라운드부(121)는 평문(P), 생성된 (Nr+1)개의 암호화 라운드 키(eRK0, eRK1, …, eRKNr) 중에서 첫 번째 암호화 라운드 키(eRK0)와, 평문 길이(Nb)를 입력으로 암호화 전처리 함수 Enc_PreProc()를 수행하고, 평문(P)의 삽입 위치를 고려하여 초기 암호화 라운드 함수값을 출력할 수 있다.
Enc_PreProc()의 알고리즘은 도 7에 예시되어 있다. Enc_PreProc() 함수는 8 내지 128 비트 사이의 임의의 길이를 가지는 평문(P), 평문 길이(Nb) 및 미리 설정된 플래그를, SetPosIn() 함수에 입력하여 128 비트 열의 암호화를 위한 초기 상태를 출력하고, 그 결과를 암호화 라운드 키(eRK0)와 배타적 논리합(XOR) 연산을 수행하여 128 비트 초기 암호화 라운드 함수값을 출력한다.
이때, SetPosIn() 함수의 알고리즘은 도 8에 예시되어 있으며, 평문(P)의 길이(Nb)와 0에서 7 사이의 임의의 정수값을 입력으로 평문 데이터 삽입 위치를 고려하여 0 내지 7 사이의 정수를 출력하는 함수 EvenDataInPosTable()를 수행할 수 있다. EvenDataInPosTable() 함수는 도 9에 예시되어 있다.
제2 암호화 라운드부(122)는 이전 암호화 라운드에서 출력된 암호화 라운드 함수값과, 암호화 라운드 키(eRK1, …, eRKNr -1)를 차례대로 입력받아 암호화 라운드 함수값을 출력한다.
이때, 제2 암호화 라운드부(122)는 홀수 번째 암호화 라운드를 수행하여 암호화 라운드 함수값을 출력하는 제2 홀수 암호화 라운드부(122a) 및 짝수 번째 암호화 라운드를 수행하여 암호화 라운드 함수값을 출력하는 제2 짝수 암호화 라운드부(122b)를 포함할 수 있다.
제2 홀수 암호화 라운드부(122a)는 이전 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRK1, eRK3, eRK5, …, eRKNr -1)를 Enc_ORound()에 입력하고, Enc_ORound() 함수를 수행하여 암호화 라운드 함수값을 출력한다.
Enc_ORound() 함수는 도 10에 예시되어 있으며, Enc_ORound() 함수는 EncOddMask()를 수행한 결과와 이전 라운드에서 출력된 암호화 라운드 함수값의 비트별 논리곱(AND) 연산을 수행하고, 이후, ShiftRows(), SubBytes() 및 MixColumns() 함수 등을 수행하고, 최종적으로 그 결과와 암호화 라운드 키와 배타적 논리합(XOR) 연산을 수행하여 128 비트 열을 출력한다.
이때, EncOddMask() 함수는 도 11과 도 12에 예시되어 있으며 평문 길이(Nb)를 입력받아 홀수 번째 라운드에서 사용될 128 비트 열을 출력할 수 있다.
ShiftRows()는 도 13에 예시되어 있으며, 16 바이트 열을 입력받아 바이트 위치를 변화시킨 16 바이트 열을 출력한다. ShiftRows()는 ShiftRowsTable() 함수를 수행하여 각 16 바이트의 위치번호를 변경한다. 이때, ShiftRowsTable() 함수는 도 14에 예시되어 있다.
SubBytes()는 도 15에 예시되어 있으며, 16바이트 열, 평문 길이(Nb) 및 플래그를 입력받아 각 바이트별로 새로운 바이트로 치환하여 16 바이트 열을 출력한다. SubBytes()는 S() 함수 및 SP() 함수를 수행하여 128 비트 열을 출력한다. 이때, S() 함수는 도 16에 예시되어 있으며 가변길이 블록암호의 안전성을 보장하기 위해 작은 선형 확률과 차분 확률, 높은 대수적 차수 등의 성질을 가지도록 만들어진 바이트를 입력받아 바이트를 출력하는 일대일 함수이다.
또한, SP() 함수는 도 17에 예시되어 있으며, 일 실시예에 따라 암/복호화가 이루어지도록 메시지와 트윅 위치를 조절하는 바이트, 평문 길이, 플래그를 입력받아 바이트 내의 비트 위치를 교환한 바이트를 출력하는 일대일 함수이다.
또한, MixColumns() 함수는 도 18에 예시되어 있으며 확산 효과를 이용하여 가변길이 블록암호의 안전성을 확보할 수 있도록 16 바이트 열을 입력받아 16 바이트 열을 출력한다. 이때, 각 바이트 열의 각 바이트는 기약다항식 p(x) = x8+x4+x3+x+1에 의해 정의되는 유한체 GF(28)의 원소로 간주될 수 있다. MixColumns() 함수에서 X[i]에 대한 덧셈과 곱셈은 해당 유한체 상에서 정의되는 연산일 수 있다.
제2 짝수 암호화 라운드부(122b)는 이전 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRK2, eRK4, eRK6,…,eRKNr -2)를 Enc_ERound()에 입력하고, Enc_ERound() 함수를 수행하여 암호화 라운드 함수값을 출력한다.
Enc_ERound()는 도 19에 예시되어 있다. Enc_ERound() 함수는 EncEvenMask()를 수행한 결과와 이전 라운드에서 출력된 암호화 라운드 함수값의 비트별 논리곱(AND) 연산을 수행하고, 이후, ShiftRows(), SubBytes() 및 MixColumns() 함수 등을 수행하고, 최종적으로 그 결과와 암호화 라운드 키와 배타적 논리합 연산을 수행하여 128 비트 열의 암호화 라운드 함수값을 출력한다.
EncEvenMask()는 도 11과 도 12에 예시되어 있으며, 평문 길이(Nb)를 입력받아 짝수 번째 라운드에서 사용될 128 비트 열을 출력할 수 있다. ShiftRows(), SubBytes() 및 MixColumns()는 전술한 바와 같다.
제3 암호화 라운드부(123)는 이전 암호화 라운드 함수값, 마지막 암호화 라운드 키(eRKNr) 및 평문 길이(Nb)를 입력하여 Enc_FRound() 함수를 수행하고 최종적으로 평문 길이(Nb)와 동일한 암호문(C)를 출력한다.
Enc_FRound() 함수는 도 20에 예시되어 있다. 도 20을 참조하면, Enc_FRound() 함수는 128 비트 열의 이전 암호화 라운드 함수값, 128 비트 암호화 라운드 키(eRKNr) 및 평문 길이(Nb)를 입력받아, 전술한 ShiftRows(), SubBytes() 함수를 수행하고 그 결과와 암호화 라운드 키(eRKNr)를 배타적 논리합(XOR) 연산을 수행하고, 이후 차례대로 SwapBytes() 및 SetPosOut() 함수를 수행한다.
이때, SwapBytes() 함수는 도 21에 예시되어 있으며, 16 바이트 열을 입력받아 바이트 위치를 변화시킨 16바이트 열을 출력한다.
또한 SetPosOut() 함수는 도 22에 예시되어 있으며, 128 비트열의 암호화 내부 상태, 평문 길이(Nb), 미리 설정된 임의의 플래그를 입력받아 정해진 길이(Nb)의 암호문(C)를 출력한다.
한편, 암호화 장치(100)는 비밀키 생성부(미도시)를 더 포함할 수 있다. 이때, 비밀키 생성부(미도시)는 도 35에 도시된 비밀키 생성 장치(300)일 수 있으며, 도 35를 참조하여 자세히 설명한다.
도 23은 일 실시예에 따른 가변길이 블록암호 장치에서 복호화 장치의 블록도이다. 도 24 내지 도 34는 도 23의 실시예에 따른 복호화 장치에서 수행되는 알고리즘 및 데이터의 예이다. 이하에서는 암호화 장치(100)에서 설명한 함수들과 동일한 이름을 가진 함수들은 앞에서 설명한 함수와 동일한 기능을 가진 함수이므로 자세한 설명을 생략하기로 한다.
도 27을 참조하면, 일 실시예에 따른 복호화 장치(200)는 복호화 키 생성부(210) 및 평문 복원부(220)를 포함한다.
복호화 키 생성부(210)는 비밀키(K) 및 비밀키의 길이(Nk)와 평문의 길이(Nb)에 따라 적절하게 설정된 라운드 수(Nr)를 이용하여 아래의 수학식 1을 만족하도록 복호화 라운드 키(dRK)를 생성한다.
이때, 비밀키(K)는 전술한 바와 같이 128 비트, 192 비트 또는 256비트이다. 또한, 라운드 수(Nr)는 도 2에 예시되어 있는 것처럼 평문(P)의 길이(Nb) 및 비밀키의 길이(Nk)에 따라 미리 설정되며 가변길이 블록암호 알고리즘의 안전성을 고려하여 적절한 값으로 미리 설정될 수 있다.
Figure 112014017283718-pat00003
여기서, Decrypt() 함수는 복호화 장치(200) 중의 평문 복원부(220), Encrypt() 함수는 암호화 장치(100) 중의 암호문 출력부(120)를 의미할 수 있다.
복호화 키 생성부(210)는 비밀키(K) 및 라운드 수(Nr)를 이용하여 도 24에 예시되어 있는 알고리즘을 수행하고, 그 결과 위 수학식 1을 만족하도록 (Nr+1)개의 복호화 라운드 키(dRK0, dRK1,…,dRKNr)를 생성할 수 있다. 도 25는 복호화 키 생성부(210)에 의해 수행되는 도 24의 알고리즘 중에서 InvMixColumns() 함수 알고리즘의 일 예이다.
평문 복원부(220)는 암호문(C), 복호화 라운드 키(dRK) 및 복호화 라운드 트윅(dTW)을 입력받아 암호문(C)를 평문으로 복원한다.
도 23을 참조하면, 평문 복원부(220)는 좀 더 구체적으로 제1 복호화 라운드부(221), 제2 복호화 라운드부(222) 및 제3 복호화 라운드부(223)를 포함할 수 있다.
도 26은 평문 복원부(220)가 수행하는 알고리즘의 일 예이다. 도 26을 참조하면, 제1 복호화 라운드부(221)는 암호문(C), 생성된 (Nr+1)개의 복호화 라운드 키(dRK0, dRK1, …, dRKNr) 중에서 첫 번째 복호화 라운드 키(dRK0)와, 평문 길이(Nb)를 입력으로 복호화 전처리 함수 Dec_PreProc()를 수행하고, 초기 복호화 라운드 함수값을 출력할 수 있다.
Dec_PreProc()의 알고리즘은 도 27에 예시되어 있다. Dec_PreProc() 함수는 암호문(C), 평문 길이(Nb) 및 미리 설정된 플래그를 입력으로, SetPosIn() 함수 및 SwapBytes() 함수를 차례대로 실행하고, 그 결과를 복호화 라운드 키(dRK0)와 배타적 논리(XOR) 연산을 수행하여 128 비트의 초기 복호화 라운드 함수값을 출력한다.
제2 복호화 라운드부(222)는 이전 복호화 라운드에서 출력된 복호화 라운드 함수값과, 복호화 라운드 키(dRK1, …, dRKNr -1)를 차례대로 입력받아 복호화 라운드 함수값을 출력한다.
이때, 제2 복호화 라운드부(222)는 홀수 번째 복호화 라운드를 수행하여 복호화 라운드 함수값을 출력하는 제2 홀수 복호화 라운드부(222a) 및 짝수 번째 복호화 라운드를 수행하여 복호화 라운드 함수값을 출력하는 제2 짝수 복호화 라운드부(222b)를 포함할 수 있다.
제2 홀수 복호화 라운드부(221a)는 이전 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRK1, dRK3, dRK5,…, dRKNr -1)를 Dec_ORound()에 입력하고, Dec_ORound() 함수를 수행하여 복호화 라운드 함수값을 출력한다.
Dec_ORound() 함수는 도 28에 예시되어 있으며, Dec_ORound() 함수는 InvSubBytes() 함수 및 InvShiftRows() 함수를 차례대로 수행하고, 그 결과와 복호화 라운드 키를 배타적 논리합(XOR) 연산을 수행하고, 이후, DecOddMask() 함수를 수행한 결과와 논리곱 연산을 수행한다. 이후 OddConst() 함수 수행 결과와 배타적 논리합 연산을 수행하고, 그 이후 InvMixColumns() 함수를 수행하여 128 비트 열을 출력한다.
이때, InvSubBytes() 함수는 입력된 16 바이트 열, 평문 길이(Nb) 및 미리 설정된 플래그를 입력받아 각 바이트별로 새로운 바이트로 치환되어 16 바이트 열을 출력하며, 모든 16 바이트 열 X와, 8 내지 128 사이의 평문 길이(Nb)에 대하여 아래의 수학식 2를 만족한다.
Figure 112014017283718-pat00004
Figure 112014017283718-pat00005

여기서, SubBytes() 함수와, InvSubBytes() 함수의 세 번째 파라미터 1 또는 2는 미리 설정된 플래그를 의미하며, SubBytes() 함수는 전술한 바와 같이 도 15에 예시되어 있다.
또한, InvShiftRows() 함수는 16바이트 열을 입력받아 바이트 위치를 변화시킨 16 바이트 열을 출력하며, 전술한 함수 ShiftRows()의 역연산으로 모든 16 바이트 열 X에 대하여 아래의 수학식 4를 만족한다.
Figure 112014017283718-pat00006
함수 InvMixColumns()는 16 바이트 열, 평문 길이, 플래그를 입력받아 16 바이트 열을 출력하며, 모든 16 바이트 열 X와 8 비트에서 128 비트 사이의 평문 길이(Nb)에 대하여 아래의 수학식 4를 만족할 수 있다.
Figure 112014017283718-pat00007
Figure 112014017283718-pat00008

한편, MixColumns()와 InvMixColumns()는 행렬곱으로도 표현이 가능하다. MixColumns()를 표현하는 행렬을 A, InvMixColumns()를 표현하는 행렬을 B라고 하고, (X, C)T를 MixColumns()의 입력, (Y, *)T를 MixColumns()의 출력, C를 상수부분이라고 하면 아래의 수학식 5를 만족할 수 있다.
Figure 112014017283718-pat00009
Figure 112014017283718-pat00010

도 29 내지 32는 도 28 및 도 33에 예시된 알고리즘에 사용되는 DecOddMask(), DecEvenMask(), OddConst() 및 EvenConst()함수의 일 예이다.
제2 짝수 복호화 라운드부(222b)는 이전 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRK2, dRK4, dRK6, …, dRKNr -2)를 Dec_ERound()에 입력하고, Dec_ERound() 함수를 수행하여 복호화 라운드 함수값을 출력한다. Dec_ERound()는 도 33에 예시되어 있다.
제3 복호화 라운드부(223)는 이전 복호화 라운드 함수값, 마지막 복호화 라운드 키(dRKNr) 및 평문 길이(Nb)를 입력하여 Dec_FRound() 함수를 수행하고 최종적으로 암호문(C)을 평문(P)으로 복원한다. Dec_FRound() 함수는 도 34에 예시되어 있다.
한편, 복호화 장치(200)는 비밀키 생성부(미도시)를 더 포함할 수 있다. 이때, 비밀키 생성부(미도시)는 도 35에 도시된 비밀키 생성 장치(300)일 수 있으며, 도 35를 참조하여 자세히 설명한다.
도 35는 일 실시예에 따른 가변길이 블록암호 장치에서 비밀키 생성 장치의 블록도이다.
도 35를 참조하면, 비밀키 생성 장치(300)는 메시지 인증값 생성부(310)를 포함할 수 있다.
도시된 바와 같이, 메시지 인증값 생성부(310)는 마스터 키 및 트윅을 이용하여 메시지 인증값(M[0],M[1],M[2],…,M[15])을 생성할 수 있다. 이때, 마스터 키는 128 비트, 192 비트 또는 256 비트일 수 있으며, 트윅은 임의의 비트길이를 가질 수 있다. 또한, 메시지 인증값 생성부(310)에 의해 생성되는 메시지 인증값은 128비트일 수 있다.
비밀키 생성 장치(300)는 메시지 인증값 생성부(310)에 의해 메시지 인증값이 생성되면, 마스터 키 중 상위 128비트 (MK[0],MK[1],MK[2],…,MK[15])와 메시지 인증값을 배타적 논리합(XOR) 연산하여 비밀키(K)를 출력할 수 있다.
도 36은 일 실시예에 따른 가변길이 블록암호 장치에서 암호화 장치에 의해 수행되는 암호화 방법의 흐름도이다.
도 36은 도 1의 암호화 장치(100)에 의해 수행되는 암호화 방법의 일 실시예이다. 도 1 내지 도 22를 참조하여 암호화 장치(100)에 의해 수행되는 암호화 방법을 자세하게 설명하였으므로 이하 중복되는 설명을 피하기 위해 간단하게 설명한다.
먼저, 암호화 장치(100)가 도시된 바와 같이 마스터 키, 트윅을 이용하여 비밀키를 생성하거나, 비밀키 생성 장치로부터 생성된 비밀키를 수신한다(단계 410).
그 다음, 암호화 장치(100)의 암호화 키 생성부(110)가 비밀키(K) 및 라운드 수(Nr)를 이용하여 (Nr+1) 개의 암호화 라운드 키(eRK0,eRK1,…,eRKNr)를 생성한다(단계 420). 이때, 전술한 바와 같이, 비밀키(K)는 128 비트, 192 비트 또는 256 비트이다. 또한, 라운드 수(Nr)는 가변길이 블록암호 알고리즘의 안전성을 고려하여 평문(P)의 길이(Nb) 및 비밀키의 길이(Nk)에 따라 적절한 값으로 미리 설정된다.
그 다음, 암호문 출력부(120)는 평문(P), 생성된 암호화 라운드 키(eRK)를 이용하여 평문(P)과 동일한 길이(Nb)의 암호문(C)을 출력할 수 있다(단계 430).
암호문 출력부(120)는 평문(P), 생성된 (Nr+1)개의 암호화 라운드 키(eRK0, eRK1,…,eRKNr) 중에서 첫 번째 암호화 라운드 키(eRK0)와, 평문 길이(Nb)를 입력으로 암호화 전처리 함수 Enc_PreProc()를 수행하고, 평문(P)의 삽입 위치를 고려하여 초기 암호화 라운드 함수값을 출력할 수 있다.
이후, 암호문 출력부(120)는 이전 암호화 라운드에서 출력된 암호화 라운드 함수값과, 암호화 라운드 키(eRK1,…,eRKNr -1)를 차례대로 입력받아 암호화 라운드 함수값을 출력할 수 있다. 이때, 홀수 번째 암호화 라운드에서 이전 라운드의 암호화 라운드 함수값, 암호화 라운드 키(eRK1, eRK3, eRK5,…,eRKNr -1)를 Enc_ORound()에 입력하고, Enc_ORound() 함수를 수행하여 암호화 라운드 함수값을 출력하고, 짝수 번째 암호화 라운드에서 이전 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRK2, eRK4, eRK6,…,eRKNr -2)를 Enc_ERound()에 입력하고, Enc_ERound() 함수를 수행하여 암호화 라운드 함수값을 출력할 수 있다.
이후, 암호문 출력부(120)는 이전 암호화 라운드 함수값, 마지막 암호화 라운드 키(eRKNr) 및 평문 길이(Nb)를 입력하여 Enc_FRound() 함수를 수행하고 최종적으로 평문 길이(Nb)와 동일한 암호문(C)를 출력할 수 있다.
도 36은 일 실시예에 따른 가변길이 블록암호 장치에서 복호화 장치에 의해 수행되는 복호화 방법의 흐름도이다.
도 36은 도 23의 복호화 장치(200)에 의해 수행되는 복호화 방법의 일 실시예로서, 도 27 내지 도 34를 참조하여 자세히 설명하였다. 따라서, 이하 중복되는 설명을 피하기 위해 간단하게 설명한다.
먼저, 복호화 장치(200)가 도시된 바와 같이 마스터 키, 트윅을 이용하여 비밀키를 생성하거나, 비밀키 생성 장치로부터 생성된 비밀키를 수신한다(단계 510).
그 다음, 복호화 키 생성부(210)는 비밀키(K) 및 비밀키의 길이(Nk)와 평문의 길이(Nb)에 따라 적절하게 설정된 라운드 수(Nr)를 이용하여 위 수학식 1을 만족하도록 (Nr+1)개의 복호화 라운드 키(dRK0, dRK1,…,dRKNr -1)를 생성할 수 있다(단계 520). 이때, 복호화 라운드 키 생성부(210)는 위의 수학식 1과 같은 알고리즘을 수행하여 (Nr+1)개의 복호화 라운드 키(dRK0, dRK1,…,dRKNr -1)를 생성할 수 있다.
그 다음, 평문 복원부(220)는 암호문(C), 복호화 라운드 키(dRK)를 입력받아 암호문(C)를 평문으로 복원한다(단계 530).
평문 복원부(220)는 암호문(C), 첫 번째 복호화 라운드 키(dRK0)와, 평문 길이(Nb)를 입력으로 복호화 전처리 함수 Dec_PreProc()를 수행하고, 초기 복호화 라운드 함수값을 출력할 수 있다.
그 다음, 이전 복호화 라운드에서 출력된 복호화 라운드 함수값과, 복호화 라운드 키(dRK1,…,dRKNr -1)를 차례대로 입력받아 복호화 라운드 함수값을 출력한다. 이때, 홀수 번째 복호화 라운드를 수행하여 복호화 라운드 함수값을 출력하는 Dec_ORound() 함수와, 짝수 번째 복호화 라운드를 수행하여 복호화 라운드 함수값을 출력하는 Dec_ERound()를 반복 수행할 수 있다.
Dec_ORound() 함수는 이전 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRK1, dRK3, dRK5,…,dRKNr -1)를 Dec_ORound()에 입력받아 복호화 라운드 함수값을 출력한다. Dec_ERound()는 이전 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRK2, dRK4, dRK6,…,dRKNr -2)를 Dec_ERound()에 입력받아 복호화 라운드 함수값을 출력한다.
그 다음, 이전 복호화 라운드 함수값, 마지막 복호화 라운드 키(dRKNr) 및 평문 길이(Nb)를 입력하여 Dec_FRound() 함수를 수행하고 최종적으로 암호문(C)을 평문(P)으로 복원한다.
본 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 암호화 장치 110: 암호화 키 생성부
120: 암호문 출력부 121: 제1 암호화 라운드부
122: 제2 암호화 라운드부 122a: 제2 홀수 암호화 라운드부
122b: 제2 짝수 암호화 라운드부 123: 제3 암호화 라운드부
200: 복호화 장치 210: 복호화 키 생성부
220: 평문 복원부 221: 제1 복호화 라운드부
222: 제2 복호화 라운드부 222a: 제2 홀수 복호화 라운드부
222b: 제2 짝수 복호화 라운드부 223: 제3 복호화 라운드부
300: 비밀키 생성 장치 310: 메시지 인증값 생성부

Claims (15)

  1. 가변길이 블록암호 장치에 있어서,
    비밀키 및 라운드 수(Nr)를 이용하여 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성하는 암호화 키 생성부; 및
    평문, 상기 암호화 라운드 키를 이용하여 상기 평문과 동일한 길이의 암호문을 출력하는 암호문 출력부를 포함하고,
    상기 암호화 키 생성부는
    상기 비밀키 및 상기 라운드 수(Nr)를 입력으로 상기 비밀키의 길이에 따라 미리 설정된 함수를 수행하여 (Nr + 1)×128 비트열을 출력하고, 출력된 결과를 이용하여 각각 128 비트의 길이를 갖는 상기 암호화 라운드 키(eRK0, eRK1, …,eRKNr)를 생성하는 암호화 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 암호문 출력부는
    상기 평문, 상기 평문의 길이 및 암호화 라운드 키(eRK0)를 입력으로 상기 평문의 삽입 위치를 고려하여 암호화 라운드 함수값을 출력하는 제1 암호화 라운드부;
    이전 암호화 라운드에서 출력된 암호화 라운드 함수값과, 암호화 라운드 키(eRK1, …, eRKNr -1)를 순차적으로 입력받아 암호화 라운드 함수값을 출력하는 제2 암호화 라운드부; 및
    이전 암호화 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRKNr) 및 평문 길이를 입력받아 상기 암호문을 출력하는 제3 암호화 라운드부를 포함하는 암호화 장치.
  4. 제1항에 있어서,
    마스터 키 및 트윅을 이용하여 상기 마스터 키와 동일한 길이를 갖는 상기 비밀키를 생성하는 비밀키 생성부를 더 포함하는 암호화 장치.
  5. 제4항에 있어서,
    상기 비밀키 생성부는
    상기 마스터 키 및 트윅을 이용하여 메시지 인증값(M[0],M[1],M[2],…,M[15])을 생성하는 메시지 인증부를 포함하고, 상기 마스터 키 중의 소정 비트와 상기 생성된 메시지 인증값을 배타적 논리합(XOR) 연산하여 상기 비밀키를 생성하는 암호화 장치.
  6. 제5항에 있어서,
    상기 마스터 키는 128 비트, 192 비트 또는 256 비트 중의 어느 하나의 비트 길이를 가지며, 상기 트윅은 임의의 비트 길이를 가지며, 상기 생성된 메시지 인증값은 128 비트 길이를 갖는 암호화 장치.
  7. 가변길이 블록암호 장치에 있어서,
    비밀키 및 라운드 수(Nr)를 이용하여 복호화 라운드 키(dRK0, dRK1,…,dRKNr)를 생성하는 복호화 키 생성부; 및
    암호문, 상기 복호화 라운드 키를 이용하여 상기 암호문과 동일한 길이의 평문을 복원하는 평문 복원부를 포함하는 복호화 장치.
  8. 제7항에 있어서,
    상기 복호화 키 생성부는
    Decrypt(Encrypt(P, eRK), dRK) = P, (여기서, P는 평문, eRK는 암호화 라운드 키, dRK는 복호화 라운드 키)를 만족하도록 상기 복호화 라운드 키를 생성하는 복호화 장치.
  9. 제7항에 있어서,
    상기 평문 복원부는
    암호문, 평문의 길이 및 복호화 라운드 키(dRK0)를 입력으로 상기 암호문의 삽입 위치를 고려하여 복호화 라운드 함수값을 출력하는 제1 복호화 라운드부;
    이전 복호화 라운드에서 출력된 복호화 라운드 함수값과, 복호화 라운드 키(dRK1, …, dRKNr -1)를 순차적으로 입력받아 복호화 라운드 함수값을 출력하는 제2 복호화 라운드부; 및
    이전 복호화 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRKNr) 및 평문 길이를 입력받아 상기 암호문을 평문으로 복원하는 제3 복호화 라운드부를 포함하는 복호화 장치.
  10. 가변길이 블록암호 방법에 있어서,
    비밀키 및 라운드 수(Nr)를 이용하여 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성하는 단계; 및
    평문, 상기 암호화 라운드 키를 이용하여 상기 평문과 동일한 길이의 암호문을 출력하는 단계를 포함하고,
    상기 암호화 라운드 키를 생성하는 단계는
    상기 비밀키 및 상기 라운드 수(Nr)를 입력으로 상기 비밀키의 길이에 따라 미리 설정된 함수를 수행하여 (Nr + 1)×128 비트열을 출력하는 단계; 및
    상기 출력된 (Nr + 1)×128 비트열을 이용하여 각각 128 비트의 길이를 갖는 상기 암호화 라운드 키(eRK0, eRK1, …, eRKNr)를 생성하는 단계를 포함하는 암호화 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 암호문을 출력하는 단계는
    상기 평문, 상기 평문의 길이 및 암호화 라운드 키(eRK0)를 입력으로 상기 평문의 삽입 위치를 고려하여 암호화 라운드 함수값을 출력하는 단계;
    이전 암호화 라운드에서 출력된 암호화 라운드 함수값과, 암호화 라운드 키(eRK1, …, eRKNr -1)를 순차적으로 입력받아 암호화 라운드 함수값을 출력하는 단계; 및
    이전 암호화 라운드에서 출력된 암호화 라운드 함수값, 암호화 라운드 키(eRKNr) 및 평문 길이를 입력받아, 상기 암호문을 출력하는 단계를 포함하는 암호화 방법.
  13. 가변길이 블록암호 방법에 있어서,
    비밀키 및 라운드 수(Nr)를 이용하여 복호화 라운드 키(dRK0, dRK1, …, dRKNr)를 생성하는 단계; 및
    암호문, 상기 복호화 라운드 키를 이용하여 상기 암호문과 동일한 길이의 평문으로 복원하는 단계를 포함하는 복호화 방법.
  14. 제13항에 있어서,
    상기 복호화 라운드 키를 생성하는 단계는
    Decrypt(Encrypt(P, eRK), dRK) = P, (여기서, P는 평문, eRK는 암호화 라운드 키, dRK는 복호화 라운드 키)를 만족하도록 상기 복호화 라운드 키를 생성하는 복호화 방법.
  15. 제14항에 있어서,
    상기 평문을 복원하는 단계는
    암호문, 평문의 길이 및 복호화 라운드 키(dRK0)를 입력으로 상기 암호문의 삽입 위치를 고려하여 복호화 라운드 함수값을 출력하는 단계;
    이전 복호화 라운드에서 출력된 복호화 라운드 함수값과, 복호화 라운드 키(dRK1, …, dRKNr -1)를 순차적으로 입력받아 복호화 라운드 함수값을 출력하는 복호화 라운드를 반복 수행하는 단계; 및
    이전 복호화 라운드에서 출력된 복호화 라운드 함수값, 복호화 라운드 키(dRKNr) 및 평문 길이를 입력받아 상기 암호문을 평문으로 복원하는 복호화 라운드를 수행하는 단계를 포함하는 복호화 방법.
KR1020140020527A 2014-02-21 2014-02-21 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법 Expired - Fee Related KR101516574B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020140020527A KR101516574B1 (ko) 2014-02-21 2014-02-21 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
EP14195773.8A EP2911138A3 (en) 2014-02-21 2014-12-02 Variable-length block cipher apparatus and method capable of format preserving encryption
JP2014244715A JP2015158665A (ja) 2014-02-21 2014-12-03 形態保存暗号化のための可変長ブロック暗号装置および方法
US14/561,652 US20150244518A1 (en) 2014-02-21 2014-12-05 Variable-length block cipher apparatus and method capable of format preserving encryption

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140020527A KR101516574B1 (ko) 2014-02-21 2014-02-21 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101516574B1 true KR101516574B1 (ko) 2015-05-04

Family

ID=52013866

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140020527A Expired - Fee Related KR101516574B1 (ko) 2014-02-21 2014-02-21 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법

Country Status (4)

Country Link
US (1) US20150244518A1 (ko)
EP (1) EP2911138A3 (ko)
JP (1) JP2015158665A (ko)
KR (1) KR101516574B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101790325B1 (ko) * 2017-07-26 2017-10-25 주식회사 차칵 암호화 및 복호화 시스템
EP3644546A1 (en) 2018-10-26 2020-04-29 Samsung SDS Co., Ltd. Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption
KR20210048698A (ko) 2019-10-24 2021-05-04 삼성에스디에스 주식회사 암복호화를 위한 장치 및 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015144764A1 (de) * 2014-03-26 2015-10-01 Continental Teves Ag & Co. Ohg Verfahren und system zur verbesserung der datensicherheit bei einem kommunikationsvorgang
US10103877B2 (en) * 2015-09-24 2018-10-16 Intel Corporation SMS4 acceleration processors having round constant generation
AU2016386405B2 (en) * 2016-01-11 2021-02-18 Visa International Service Association Fast format-preserving encryption for variable length data
US9830464B2 (en) * 2016-01-21 2017-11-28 Passport Health Communications, Inc. Format preserving encryption
US20200145187A1 (en) * 2019-12-20 2020-05-07 Intel Corporation Bit-length parameterizable cipher
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US12282567B2 (en) 2019-06-29 2025-04-22 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
CN111783112B (zh) * 2020-06-09 2023-09-12 三未信安科技股份有限公司 一种保留格式加密的快速实现方法、系统、介质及设备
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
CN114513298B (zh) * 2022-02-18 2025-07-18 深圳开拓者科技有限公司 一种可接受任意明文长度的轻量级加密方法
US12321467B2 (en) 2022-06-30 2025-06-03 Intel Corporation Cryptographic computing isolation for multi-tenancy and secure software components
US12306998B2 (en) 2022-06-30 2025-05-20 Intel Corporation Stateless and low-overhead domain isolation using cryptographic computing
CN116049841B (zh) * 2022-09-08 2023-09-19 北京海泰方圆科技股份有限公司 一种身份证号的加密方法、装置、设备及介质
CN118677599A (zh) * 2023-03-20 2024-09-20 慧荣科技股份有限公司 数据加密的回合密钥扩展装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7317795B2 (en) * 2001-04-17 2008-01-08 She Alfred C Pipelined deciphering round keys generation
JP2004133087A (ja) 2002-10-09 2004-04-30 Sony Corp ブロック暗号方法およびブロック暗号回路
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7899190B2 (en) * 2004-04-16 2011-03-01 Research In Motion Limited Security countermeasures for power analysis attacks
US7561689B2 (en) * 2004-06-17 2009-07-14 Agere Systems Inc. Generating keys having one of a number of key sizes
CA2627136A1 (en) * 2005-11-04 2007-05-10 Nec Corporation Message authentication device, message authentication method, message authentication program and storage medium therefor
US9361617B2 (en) * 2008-06-17 2016-06-07 Verifone, Inc. Variable-length cipher system and method
US8958562B2 (en) * 2007-01-16 2015-02-17 Voltage Security, Inc. Format-preserving cryptographic systems
JP5402632B2 (ja) * 2007-08-06 2014-01-29 日本電気株式会社 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
US8687802B2 (en) * 2009-03-30 2014-04-01 The Regents Of The University Of California Method and system for accelerating the deterministic enciphering of data in a small domain
WO2012011455A1 (ja) * 2010-07-20 2012-01-26 日本電気株式会社 暗号化装置、復号装置、暗号化方法、復号方法、および、コンピュータ・プログラム
JP5672037B2 (ja) * 2011-02-10 2015-02-18 大日本印刷株式会社 暗号化方法、復号方法、暗号化装置、復号装置及び暗号化/復号システム
JP5682527B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
WO2013161841A1 (ja) * 2012-04-24 2013-10-31 日本電気株式会社 フォーマット保存暗号化装置、方法およびプログラム、復号化装置、方法およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ahmed Elshafee, IJCSNS International Journal of Computer Science and Network Security, Vol. 12 No. 10, "KAMFEE-X64 Cipher" *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101790325B1 (ko) * 2017-07-26 2017-10-25 주식회사 차칵 암호화 및 복호화 시스템
EP3644546A1 (en) 2018-10-26 2020-04-29 Samsung SDS Co., Ltd. Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption
KR20200047138A (ko) 2018-10-26 2020-05-07 삼성에스디에스 주식회사 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법
US11632234B2 (en) 2018-10-26 2023-04-18 Samsung Sds Co., Ltd. Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption
KR20210048698A (ko) 2019-10-24 2021-05-04 삼성에스디에스 주식회사 암복호화를 위한 장치 및 방법

Also Published As

Publication number Publication date
EP2911138A3 (en) 2015-12-09
US20150244518A1 (en) 2015-08-27
JP2015158665A (ja) 2015-09-03
EP2911138A2 (en) 2015-08-26

Similar Documents

Publication Publication Date Title
KR101516574B1 (ko) 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
KR101593169B1 (ko) 페이스텔 구조의 가변길이 블록암호 장치 및 방법
Saraf et al. Text and image encryption decryption using advanced encryption standard
JP6035459B2 (ja) 暗号化装置、復号化装置、及びプログラム
KR101091246B1 (ko) 간단하고 효율적인 원패스 인증 암호화 방법
WO2015015702A1 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
Andriani et al. Comparision of AES 128, 192 and 256 bit algorithm for encryption and description file
Asaad et al. Partial image encryption using RC4 stream cipher approach and embedded in an image
US20110150225A1 (en) Encryption devices for block having double block length, decryption devices, encryption method, decryption method, and programs thereof
US11075889B2 (en) Method and system for encrypting/decrypting data with ultra-low latency for secure data storage and/or communication
JP7226829B2 (ja) データ処理装置、方法及びコンピュータプログラム
US20170041133A1 (en) Encryption method, program, and system
CN112866288B (zh) 一种双明文传输的数据对称加密方法
CN118337498B (zh) 一种基于对称密钥池的数据传输方法
KR100551992B1 (ko) 어플리케이션 데이터의 암호화 및 복호화 방법
Arya et al. Effective AES Implementation
KR101583285B1 (ko) 확장 키를 이용한 블록 암호화 방법 및 그 방법에 따른 장치
WO2012060685A1 (en) A method for linear transformation in substitution-permutation network symmetric-key block cipher
Charru et al. Improved Cryptography Algorithm to Enhanced Data Security
Giri et al. End-to-End Encryption Techniques
Padhi et al. Modified version of XTS (XOR-Encrypt-XOR with Ciphertext Stealing) using tweakable enciphering scheme
Kumar et al. Implementation of AES algorithm using Verilog
CN102474413A (zh) 私钥压缩
Ahmad et al. Energy efficient sensor network security using Stream cipher mode of operation
RU2694336C1 (ru) Способ аутентифицированного шифрования

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20140221

PA0201 Request for examination
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20141127

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20150421

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20150424

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20150427

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20180406

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20200326

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20210325

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20220207

Start annual number: 8

End annual number: 8

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20240205