KR101330664B1 - 저전력 암호화 장치 및 방법 - Google Patents

저전력 암호화 장치 및 방법 Download PDF

Info

Publication number
KR101330664B1
KR101330664B1 KR1020120064278A KR20120064278A KR101330664B1 KR 101330664 B1 KR101330664 B1 KR 101330664B1 KR 1020120064278 A KR1020120064278 A KR 1020120064278A KR 20120064278 A KR20120064278 A KR 20120064278A KR 101330664 B1 KR101330664 B1 KR 101330664B1
Authority
KR
South Korea
Prior art keywords
round
key
round function
initial
values
Prior art date
Application number
KR1020120064278A
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 KR1020120064278A priority Critical patent/KR101330664B1/ko
Priority to JP2012243636A priority patent/JP5542896B2/ja
Priority to US13/909,155 priority patent/US9049007B2/en
Application granted granted Critical
Publication of KR101330664B1 publication Critical patent/KR101330664B1/ko

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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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
    • 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

Abstract

본 발명은 저전력 암호화를 지원하는 모바일용 고속 블록암호 알고리즘을 제공할 수 있는 암호화 장치 및 방법에 관한 것이다. 이를 위해 본 발명에 따른 암호화 장치는 사용자로부터 암호화하고자 하는 평문(Plaintext)과 마스터키(Master Key)를 입력받는 사용자 인터페이스부; 마스터키로부터 라운드키(Round Key)를 생성하는 키스케쥴러부; 평문으로부터 초기 라운드 함수값들을 생성하는 초기 변환부; 라운드키와 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 라운드 함수 처리부; 및 라운드 함수 처리부에 의해 처리된 마지막 라운드에서의 라운드 함수의 결과값들로부터 암호문을 생성하는 최종 변환부를 포함한다.

Description

저전력 암호화 장치 및 방법{Low power encryption apparatus and method}
본 발명은 저전력 암호화 장치 및 방법에 관한 것으로, 더욱 상세하게는 저전력 암호화를 지원하는 모바일용 고속 블록암호 알고리즘을 제공할 수 있는 암호화 장치 및 방법에 관한 것이다.
블록암호는 각종 기기의 통신 및 저장자료 보안을 위한 암호 어플리케이션에서 가장 많이 사용되는 핵심요소이며, 특정 길이 단위(64-비트, 128-비트)로 데이터를 암호화하여 기밀성(confidentiality)을 제공하는 것이 주된 역할이다. 또한, 해쉬 함수, 메시지 인증코드, 난수 생성기 등으로도 활용된다. 이러한 용도에 맞게 블록암호는 기기 및 암호 어플리케이션 특성에 적합한 성질을 갖도록 설계되어야 하며, 기기에 특화된 칩 또는 기기의 CPU로 구동되는 소프트웨어로 구현된다.
하드웨어로 구현되는 칩의 경우, 시장성, 개발비용, 기기와의 연동성 등으로 인하여 개발이 제한되는 반면, 소프트웨어 구현은 CPU 성능 진화 등으로 적용이 확대되고 있다. 그러나 소프트웨어 구현에서도 리소스의 제한을 받는 환경이 많다. 특히 최근에 많은 인기를 얻고 있는 스마트폰과 같이 배터리를 갖는 이동기기는 소프트웨어 구동으로 인한 전력소모라는 문제를 안고 있다. 현재 가장 우수한 성능의 국제표준 블록암호의 경우에도 지속적인 암호화 시 배터리 소모가 미암호화 시보다 70% 이상 증가된다는 사실이 알려져 있다.
한편, 초경량 및 저전력 환경에서의 H/W 암호 연산을 목적으로 개발된 블록암호 기법이 2006년의 Workshop on Cryptographic Hardware and Embedded Systems에서의 "HIGHT: A New Block Cipher Suitable for Low-Resource Device" 논문에 공개된 바 있으나, 상기 논문에 공개된 블록암호 기법은 안전성에 대한 취약점이 존재하고, 소프트웨어 환경에서는 데이터 암호화를 위해 CPU에 비교적 많은 싸이클(cycle)이 요구된다는 문제가 있다.
본 발명은 저전력 암호화를 지원하는 블록암호 알고리즘을 이용하는 암호화 장치 및 방법을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명에 따른 암호화 장치는, 사용자로부터 암호화하고자 하는 평문(Plaintext)과 마스터키(Master Key)를 입력받는 사용자 인터페이스부; 상기 마스터키로부터 라운드키(Round Key)를 생성하는 키스케쥴러부; 상기 평문으로부터 초기 라운드 함수값들을 생성하는 초기 변환부; 상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 라운드 함수 처리부; 및 상기 라운드 함수 처리부에 의해 처리된 마지막 라운드에서의 라운드 함수의 결과값들로부터 암호문을 생성하는 최종 변환부를 포함하는 것을 특징으로 한다.
이때, 상기 키스케쥴러부는, 상기 사용자 인터페이스부로부터 상기 마스터키를 전송받는 마스터키 입력부; 상기 마스터키를 구성하는 서브 마스터키값들 각각으로부터 초기 키스케쥴 라운드 함수값들을 생성하는 키스케쥴 라운드 함수값 생성부; 및 상기 초기 키스케쥴 라운드 함수값들과 고정된 상수값들을 이용하여 키스케쥴 라운드 함수값들을 생성하고, 상기 키스케쥴 라운드 함수값들을 연접하여 상기 라운드키를 생성하는 라운드키 생성부를 포함할 수 있다.
이때, 상기 라운드키는 192비트의 길이를 갖고, 각각 32비트의 길이를 갖는 서브 라운드키 RKi[0], RKi[1], RKi[2], RKi[3], RKi[4], RKi[5]가 연접하여 구성될 수 있다.
이때, 상기 초기 변환부는 128비트의 길이를 갖는 상기 평문으로부터 각각 32비트의 길이를 갖는 서브 평문 P[0], P[1], P[2], P[3]을 추출하고, 상기 서브 평문 P[0], P[1], P[2], P[3] 각각으로부터 초기 라운드 함수값 X0[0], X0[1], X0[2], X0[3]을 생성할 수 있다.
이때, 상기 라운드 함수 처리부는 상기 라운드키와 상기 초기 라운드 함수값에 기초하여 라운드 함수를 처리하여 i번째 라운드에서의 라운드 함수의 결과값 Xi+1[0], Xi +1[1], Xi +1[2], Xi +1[3]을 산출할 수 있다.
이때, 상기 라운드 함수 처리부는, 수학식
Figure 112012047710174-pat00001
에 의해 Xi+1[0]을 산출하고, 수학식
Figure 112012047710174-pat00002
에 의해 Xi+1[1]을 산출하고, 수학식
Figure 112012047710174-pat00003
에 의해 Xi+1[2]를 산출하고, 수학식
Figure 112012047710174-pat00004
에 의해 Xi +1[3]을 산출할 수 있다. 여기서, Xi[0], Xi[1], Xi[2], Xi[3]는 i-1번째 라운드에서의 라운드 함수의 결과값,
Figure 112012047710174-pat00005
는 논리적 배타합 연산, +는 법 232 덧셈 연산, ROLa(x)는 32비트의 길이를 갖는 x값을 왼쪽으로 a비트만큼 순환시프트(rotation)한 후 출력하는 함수, RORa(x)는 32비트의 길이를 갖는 x값을 오른쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미한다.
이때, 상기 최종 변환부는 상기 마지막 라운드에서의 라운드 함수의 결과값들을 연접하여 암호문을 생성할 수 있다.
이때, 본 발명에 따른 암호화 장치는, 상기 최종 변환부에 의해 생성된 암호문을 출력하는 암호문 출력부를 더 포함할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명에 따른 암호화 방법은, 사용자 인터페이스부가 사용자로부터 암호화하고자 하는 평문과 마스터키를 입력받는 단계; 키스케쥴러부가 상기 마스터키로부터 라운드키를 생성하는 단계; 초기 변환부가 상기 평문으로부터 초기 라운드 함수값들을 생성하는 단계; 라운드 함수 처리부가 상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 단계; 및 최종 변환부가 마지막 라운드에서의 라운드 함수의 결과값들로부터 암호문을 생성하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 마스터키로부터 라운드키를 생성하는 단계는, 마스터키 입력부가 상기 사용자 인터페이스부로부터 상기 마스터키를 전송받는 단계; 키스케쥴 라운드 함수값 생성부가 상기 마스터키를 구성하는 서브 마스터키값들 각각으로부터 초기 키스케쥴 라운드 함수값들을 생성하는 단계; 및 라운드키 생성부가 상기 초기 키스케쥴 라운드 함수값들과 고정된 상수값들을 이용하여 키스케쥴 라운드 함수값들을 생성하고, 상기 키스케쥴 라운드 함수값들을 연접하여 상기 라운드키를 생성하는 단계를 포함할 수 있다.
이때, 상기 라운드키는 192비트의 길이를 갖고, 각각 32비트의 길이를 갖는 서브 라운드키 RKi[0], RKi[1], RKi[2], RKi[3], RKi[4], RKi[5]가 연접하여 구성될 수 있다.
이때, 상기 평문으로부터 초기 라운드 함수값들을 생성하는 단계는, 128비트의 길이를 갖는 상기 평문으로부터 각각 32비트의 길이를 갖는 서브 평문 P[0], P[1], P[2], P[3]을 추출하고, 상기 서브 평문 P[0], P[1], P[2], P[3] 각각으로부터 초기 라운드 함수값 X0[0], X0[1], X0[2], X0[3]을 생성할 수 있다.
이때, 상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 단계는, 상기 라운드키와 상기 초기 라운드 함수값에 기초하여 라운드 함수를 처리하여 i번째 라운드에서의 라운드 함수의 결과값 Xi +1[0], Xi+1[1], Xi +1[2], Xi +1[3]을 산출할 수 있다.
이때, 상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 단계는, 수학식
Figure 112012047710174-pat00006
에 의해 Xi+1[0]을 산출하고, 수학식
Figure 112012047710174-pat00007
에 의해 Xi+1[1]을 산출하고, 수학식
Figure 112012047710174-pat00008
에 의해 Xi+1[2]를 산출하고, 수학식
Figure 112012047710174-pat00009
에 의해 Xi +1[3]을 산출할 수 있다. 여기서, Xi[0], Xi[1], Xi[2], Xi[3]는 i-1번째 라운드에서의 라운드 함수의 결과값,
Figure 112012047710174-pat00010
는 논리적 배타합 연산, +는 법 232 덧셈 연산, ROLa(x)는 32비트의 길이를 갖는 x값을 왼쪽으로 a비트만큼 순환시프트한 후 출력하는 함수, RORa(x)는 32비트의 길이를 갖는 x값을 오른쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미한다.
이때, 상기 마지막 라운드에서의 라운드 함수의 결과값들로부터 암호문을 생성하는 단계는, 상기 마지막 라운드에서의 라운드 함수의 결과값들을 연접하여 암호문을 생성할 수 있다.
이때, 본 발명에 따른 암호화 방법은, 암호문 출력부가 상기 최종 변환부에 의해 생성된 암호문을 출력하는 단계를 더 포함할 수 있다.
본 발명에 따르면, 기존의 CPU에서 보편적으로 사용되며 채택이 용이한 ARX(Addition, Rotation, XOR) 연산들만으로 구성되는 암호화 기법을 제공할 수 있는 효과가 있다.
또한, 본 발명에 따르면, 임시 변수들을 활용하여 병렬연산이 가능하도록 하는 연산의 조합으로 암호화 과정을 수행하므로, CPU 내에서 보다 적은 싸이클(cycle)로 암호화를 수행할 수 있는 효과가 있다.
또한, 본 발명에 따르면, 종래의 모든 블록암호 공격에 대한 안전성을 보장할 수 있는 효과가 있다.
도 1은 본 발명에 따른 암호화 장치의 구성을 나타내는 블록도이다.
도 2는 도 1에 도시된 키스케쥴러부의 구성을 나타내는 블록도이다.
도 3은 도 1에 도시된 라운드 함수 처리부의 i번째 라운드에서의 라운드 함수의 처리 과정을 설명하기 위한 도면이다.
도 4 및 도 5는 본 발명에 따른 암호화 방법을 설명하기 위한 흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하에서는 도 1 내지 도 3을 참조하여, 본 발명에 따른 암호화 장치의 구성 및 그 동작에 대하여 설명하도록 한다.
도 1은 본 발명에 따른 암호화 장치의 구성을 나타내는 블록도이다.
도 1을 참조하면, 본 발명에 따른 암호화 장치(10)는, 사용자 인터페이스부(100), 키스케쥴러부(200), 초기 변환부(300), 라운드 함수 처리부(400), 최종 변환부(500) 및 암호문 출력부(600)로 구성된다.
사용자 인터페이스부(100)는 사용자로부터 평문(Plaintext, 이하 'P'로 표시한다.)이라는 암호호하고자 하는 대상, 예를 들면 특정 텍스트(text) 또는 음성(voice)을 입력받는다. 또한, 사용자 인터페이스부(100)는 평문을 입력받는 시점에 동시에 사용자로부터 마스터키(Master Key, 이하, 'MK'로 표시한다.)를 입력받는다. 이때, 사용자 인터페이스부(100)로 입력되는 마스터키는 128비트, 192비트 또는 256비트의 길이로 구성되고, 각각 32비트의 길이를 갖는 서브 마스터키들로 구성된다. 즉, 마스터키 MK는 복수의 서브 마스터키들의 연접으로 구성되며, 128비트, 192비트 및 256비트의 길이를 갖는 마스터키는 각각 하기의 수학식 1 내지 수학식 3과 같이 표현될 수 있다.
Figure 112012047710174-pat00011
Figure 112012047710174-pat00012
Figure 112012047710174-pat00013
이때, K[0] 내지 K[7]는 마스터키 MK를 구성하는 각각 32비트의 길이를 갖는 서브 마스터키들을 의미한다.
한편, 사용자 인터페이스부(100)로 입력되는 평문은 128비트의 길이로 구성되고, 각각 32비트의 길이를 갖는 서브 평문들로 구성된다. 즉, 평문 P는 복수의 서브 평문들의 연접으로 구성되며, 128비트의 길이를 갖는 평문은 하기의 수학식 4와 같이 표현될 수 있다.
Figure 112012047710174-pat00014
이때, P[0] 내지 P[7]는 평문 P를 구성하는 각각 32비트의 길이를 갖는 서브 평문들을 의미한다.
사용자 인터페이스부(100)는 사용자로부터 입력받은 마스터키 MK와 평문 P를 각각 키스케쥴러부(200)와 초기 변환부(300)로 전송한다.
키스케쥴러부(200)는 사용자 인터페이스부(100)로부터 마스터키를 전송받아, 상기 마스터키로부터 라운드키(Round Key, 이하, 'RK'로 표시한다.)를 생성한다. 보다 구체적으로, 키스케쥴러부(200)는, 도 2에 도시된 바와 같이, 마스터키 입력부(220), 키스케쥴 라운드 함수값 생성부(240) 및 라운드키 생성부(260)로 구성된다.
마스터키 입력부(220)는 사용자 인터페이스부(100)로부터 마스터키를 입력받고, 이를 키스케쥴 라운드 함수값 생성부(240)로 전송한다.
키스케쥴 라운드 함수값 생성부(240)는 마스터키 입력부(220)로부터 전송받은 마스터키에서 서브 마스터키값들을 추출하고, 상기 추출된 서브 마스터키값들 각각으로부터 초기 키스케쥴 라운드 함수값들을 생성한다.
이때, 키스케쥴 라운드 함수값 생성부(240)는, 전송받은 마스터키가 128비트의 길이를 갖는 경우, 하기의 수학식 5에 의해 초기 키스케쥴 라운드 함수값 T0[1] 내지 T0[3]을 결정하고,
Figure 112012047710174-pat00015
전송받은 마스터키가 192비트의 길이를 갖는 경우, 하기의 수학식 6에 의해 초기 키스케쥴 라운드 함수값 T0[1] 내지 T0[5]를 결정하며,
Figure 112012047710174-pat00016
전송받은 마스터키가 256비트의 길이를 갖는 경우, 하기의 수학식 7에 의해 초기 키스케쥴 라운드 함수값 T0[1] 내지 T0[7]을 결정한다.
Figure 112012047710174-pat00017
라운드키 생성부(260)는 키스케쥴 라운드 함수값 생성부(240)에 의해 생성된 초기 키스케쥴 라운드 함수값들과 고정된 상수값들을 이용하여 키스케쥴 라운드 함수값들을 생성하고, 키스케쥴 라운드 함수값들을 연접하여 라운드키를 생성한다. 이때, 라운드키 생성부(260)는 키스케쥴 라운드 함수값들을 생성하기 위해, 예를 들어 하기의 수학식 8과 같이 16진수로 표현되는 고정된 상수값 δ[0] 내지 δ[7]을 사용할 수 있다.
Figure 112012047710174-pat00018
라운드키 생성부(260)는 사용자 인터페이스부(100)로부터 전송받은 마스터키가 128비트의 길이를 갖는 경우, 하기의 수학식 9에 의해 각각 32비트의 길이를 갖는 키스케쥴 라운드 함수값들을 결정하고, 하기의 수학식 10에 의해 키스케쥴 라운드 함수값들을 연접하여 라운드 키를 생성한다.
Figure 112012047710174-pat00019
Figure 112012047710174-pat00020
또한, 라운드키 생성부(260)는 사용자 인터페이스부(100)로부터 전송받은 마스터키가 192비트의 길이를 갖는 경우, 하기의 수학식 11에 의해 각각 32비트의 길이를 갖는 키스케쥴 라운드 함수값들을 결정하고, 하기의 수학식 12에 의해 키스케쥴 라운드 함수값들을 연접하여 라운드 키를 생성한다.
Figure 112012047710174-pat00021
Figure 112012047710174-pat00022
또한, 라운드키 생성부(260)는 사용자 인터페이스부(100)로부터 전송받은 마스터키가 256비트의 길이를 갖는 경우, 하기의 수학식 13에 의해 각각 32비트의 길이를 갖는 키스케쥴 라운드 함수값들을 결정하고, 하기의 수학식 14에 의해 키스케쥴 라운드 함수값들을 연접하여 라운드 키를 생성한다.
Figure 112012047710174-pat00023
Figure 112012047710174-pat00024
이때, x mod 4 연산은 x값을 4로 나눈 나머지 값을 산출하는 연산을 의미하고, x mod 6 연산은 x값을 6으로 나눈 나머지 값을 산출하는 연산을 의미하며, x mod 8 연산은 x값을 8로 나눈 나머지 값을 산출하는 연산을 의미한다.
한편, 라운드키 생성부(260)에 의해 생성되는 라운드키 RKi는, 마스터키 MK가 128비트, 192비트 또는 256비트 중 어느 하나의 길이를 갖더라도, 상기 수학식 10, 수학식 12 또는 수학식 14에 의해 항상 동일하게 128비트의 길이를 갖게 된다. 이때, 128비트의 길이를 갖는 라운드키 RKi는 하기의 수학식 15와 같이 각각 32비트의 길이를 갖는 서브 라운드키 RKi[0] 내지 RKi[5]의 연접으로 구성될 수 있다.
Figure 112012047710174-pat00025
초기 변환부(300)는 사용자 인터페이스부(100)로부터 평문을 전송받아, 상기 평문으로부터 초기 라운드 함수값들을 생성한다. 즉, 초기 변환부(300)는 수학식 4로 표현되는 128비트의 길이를 갖는 평문 P에 대하여, 각각 32비트의 길이를 갖는 서브 평문 P[0], P[1], P[2], P[3]을 추출하고, 하기의 수학식 16에 따라 상기 서브 평문 P[0], P[1], P[2], P[3] 각각으로부터 초기 라운드 함수값 X0[0], X0[1], X0[2], X0[3]을 생성한다.
Figure 112012047710174-pat00026
라운드 함수 처리부(400)는 키스케쥴러부(200)에 의해 생성된 라운드키와 초기 변환부(300)에 의해 생성된 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리한다. 이때, 라운드 함수 처리부(400)가 라운드 함수를 반복하여 처리하는 횟수는, 마스터키가 128비트의 길이를 갖는 경우에는 24회이고, 마스터키가 192비트의 길이를 갖는 경우에는 28회이며, 마스터키가 256비트의 길이를 갖는 경우에는 32회이다. 라운드 함수 처리부(400)는 i번째 라운드에서 하기의 수학식 17과 같은 라운드 함수를 처리한다.
Figure 112012047710174-pat00027
여기서, Xi[0], Xi[1], Xi[2], Xi[3]는 i-1번째 라운드에서의 라운드 함수의 결과값을 의미하고,
Figure 112012047710174-pat00028
는 논리적 배타합(XOR, eXclusive OR) 연산을 의미하며, +는 법 232 덧셈 연산을 의미하고, ROLa(x)는 32비트의 길이를 갖는 x값을 왼쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미하며, RORa(x)는 32비트의 길이를 갖는 x값을 오른쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미한다.
이러한, 라운드 함수 처리부(400)의 i번째 라운드에서의 라운드 함수의 처리 과정을 도식화하면 도 3과 같이 나타낼 수 있다. 이때, 32비트 워드에서 가장 오른쪽 비트가 최하위 비트(LSB)에 해당한다.
최종 변환부(500)는 라운드 함수 처리부(400)에 의해 처리된 마지막 라운드에서의 라운드 함수의 결과값들을 연접하여 암호문(Ciphertext, 이하, 'C'로 표시한다.)을 생성한다. 최종 변환부(500)는 마지막 라운드인 r번째 라운드(마스터키가 128비트의 길이를 갖는 경우 r=24, 마스터키가 192비트의 길이를 갖는 경우 r=28, 마스터키가 256비트의 길이를 갖는 경우 r=32)에서의 결과값 Xr[0] 내지 Xr[3]을 연접하여 암호문 C를 생성한다. 즉, r번째 라운드에서의 출력 결과 Xr(=Xr[0]||Xr[1]||Xr[2]||Xr[3])로부터 하기의 수학식 18을 이용하여 암호문 C(=C[0]||C[1]||C[2]||C[3])로 변환한다.
Figure 112012047710174-pat00029
마지막으로, 암호문 출력부(600)는 최종 변환부(500)에 의해 생성된 암호문을 사용자에게 출력한다.
본 발명에 따라 출력되는 암호문을 평문으로 복호화하는 방법은, 본 발명에 따른 암호화 장치(10)에서 키스케쥴러부(200)의 동작을 제외한 암호화 과정을 역으로 수행함에 따라 이루어질 수 있다. 이때, 복호화 과정에서는 법 232 덧셈 연산 대신에 법 232 뺄셈 연산이 수행되어야 한다.
이하에서는 본 발명에 따른 암호화 방법에 대하여 설명하도록 한다. 앞서, 도 1 내지 도 3을 참조한 본 발명에 따른 암호화 장치의 동작에 대한 설명과 일부 중복되는 부분은 생략하여 설명하기로 한다.
도 4는 본 발명에 따른 암호화 방법을 설명하기 위한 흐름도이다.
도 4를 참조하면, 본 발명에 따른 암호화 방법은, 먼저 사용자 인터페이스부가 사용자로부터 암호화하고자 하는 평문과 마스터키를 입력 받는다(S100). 이때, 상기 평문과 마스터키는 사용자에 의해 동시에 사용자 인터페이스부로 입력될 수 있다.
그 다음으로, 키스케쥴러부는 사용자 인터페이스부로부터 전송받은 마스터키를 이용하여 라운드키를 생성한다(S200). 이때, 상기 S200 단계에서 생성되는 라운드키는 192비트의 길이를 갖고, 각각 32비트의 길이를 갖는 서브 라운드키 RKi[0], RKi[1], RKi[2], RKi[3], RKi[4], RKi[5]가 연접하여 구성될 수 있다.
그리고, 초기 변환부는 사용자 인터페이스부로부터 전송받은 평문으로부터 초기 라운드 함수값들을 생성한다(S300). 이때, 상기 S300 단계에서는 128비트의 길이를 갖는 평문으로부터 각각 32비트의 길이를 갖는 서브 평문 P[0], P[1], P[2], P[3]을 추출하고, 서브 평문 P[0], P[1], P[2], P[3] 각각으로부터 초기 라운드 함수값 X0[0], X0[1], X0[2], X0[3]을 생성할 수 있다.
그 다음으로, 라운드 함수 처리부는 상기 S200 단계에서 생성된 라운드키와 상기 S300 단계에서 생성된 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리한다(S400). 이때, 상기 S400 단계에서는 라운드키와 초기 라운드 함수값에 기초하여 라운드 함수를 처리하여 i번째 라운드에서의 라운드 함수의 결과값 Xi+1[0], Xi +1[1], Xi +1[2], Xi +1[3]을 산출할 수 있다. 또한, 상기 S400 단계에서는 수학식
Figure 112012047710174-pat00030
에 의해 Xi+1[0]을 산출하고, 수학식
Figure 112012047710174-pat00031
에 의해 Xi+1[1]을 산출하고, 수학식
Figure 112012047710174-pat00032
에 의해 Xi+1[2]를 산출하고, 수학식
Figure 112012047710174-pat00033
에 의해 Xi +1[3]을 산출할 수 있다. 여기서, Xi[0], Xi[1], Xi[2], Xi[3]는 i-1번째 라운드에서의 라운드 함수의 결과값,
Figure 112012047710174-pat00034
는 논리적 배타합 연산, +는 법 232 덧셈 연산, ROLa(x)는 32비트의 길이를 갖는 x값을 왼쪽으로 a비트만큼 순환시프트한 후 출력하는 함수, RORa(x)는 32비트의 길이를 갖는 x값을 오른쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미한다.
그리고, 최종 변환부는 상기 S400 단계에서 처리되는 마지막 라운드에서의 라운드 함수의 결과값들로부터 암호문을 생성한다(S500). 이때, 상기 S500 단계에서는 마지막 라운드에서의 라운드 함수의 결과값들을 연접하여 암호문을 생성하게 된다.
마지막으로, 암호문 출력부가 상기 S500 단계에서 생성된 암호문을 사용자에게 출력한다(S600).
도 5는 도 4에 도시된 라운드키 생성 단계인 S200 단계를 보다 구체적으로 설명하기 위한 흐름도이다.
도 5를 참조하면, S200 단계는, 먼저 마스터키 입력부가 사용자 인터페이스부로부터 마스터키를 전송 받고(S220), 키스케쥴 라운드 함수값 생성부가 마스터키를 구성하는 서브 마스터키값들 각각으로부터 초기 키스케쥴 라운드 함수값들을 생성한다(S240).
그리고, 라운드키 생성부가 상기 S240 단계에서 생성된 초기 키스케쥴 라운드 함수값들과 고정된 상수값들을 이용하여 키스케쥴 라운드 함수값들을 생성하며(S260), 키스케쥴 라운드 함수값들을 연접하여 라운드키를 생성한다(S280).
상술한 바와 같은 본 발명에 따른 암호화 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(예컨대, 씨디롬, 램, 플로피 디스크, 하드 디스크, 광자기 디스크, 플래쉬 메모리 등)에 저장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10; 암호화 장치
100; 사용자 인터페이스부
200; 키스케쥴러부
220; 마스터키 입력부
240; 키스케쥴 라운드 함수값 생성부
260; 라운드키 생성부
300; 초기 변환부
400; 라운드 함수 처리부
500; 최종 변환부
600; 암호문 출력부

Claims (16)

  1. 사용자로부터 암호화하고자 하는 평문(Plaintext)과 마스터키(Master Key)를 입력받는 사용자 인터페이스부;
    상기 마스터키로부터 라운드키(Round Key)를 생성하는 키스케쥴러부;
    상기 평문으로부터 초기 라운드 함수값들을 생성하는 초기 변환부;
    상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 라운드 함수 처리부; 및
    상기 라운드 함수 처리부에 의해 처리된 마지막 라운드에서의 라운드 함수의 결과값들을 연접하여 암호문을 생성하는 최종 변환부를 포함하는 것을 특징으로 하는, 암호화 장치.
  2. 청구항 1에 있어서,
    상기 키스케쥴러부는,
    상기 사용자 인터페이스부로부터 상기 마스터키를 전송받는 마스터키 입력부;
    상기 마스터키를 구성하는 서브 마스터키값들 각각으로부터 초기 키스케쥴 라운드 함수값들을 생성하는 키스케쥴 라운드 함수값 생성부; 및
    상기 초기 키스케쥴 라운드 함수값들과 고정된 상수값들을 이용하여 키스케쥴 라운드 함수값들을 생성하고, 상기 키스케쥴 라운드 함수값들을 연접하여 상기 라운드키를 생성하는 라운드키 생성부를 포함하는 것을 특징으로 하는, 암호화 장치.
  3. 청구항 2에 있어서,
    상기 라운드키는 192비트의 길이를 갖고, 각각 32비트의 길이를 갖는 서브 라운드키 RKi[0], RKi[1], RKi[2], RKi[3], RKi[4], RKi[5]가 연접하여 구성되는 것을 특징으로 하는, 암호화 장치.
  4. 청구항 3에 있어서,
    상기 초기 변환부는 128비트의 길이를 갖는 상기 평문으로부터 각각 32비트의 길이를 갖는 서브 평문 P[0], P[1], P[2], P[3]을 추출하고, 상기 서브 평문 P[0], P[1], P[2], P[3] 각각으로부터 초기 라운드 함수값 X0[0], X0[1], X0[2], X0[3]을 생성하는 것을 특징으로 하는, 암호화 장치.
  5. 청구항 4에 있어서,
    상기 라운드 함수 처리부는 상기 라운드키와 상기 초기 라운드 함수값에 기초하여 라운드 함수를 처리하여 i번째 라운드에서의 라운드 함수의 결과값 Xi +1[0], Xi+1[1], Xi +1[2], Xi +1[3]을 산출하는 것을 특징으로 하는, 암호화 장치.
  6. 청구항 5에 있어서,
    상기 라운드 함수 처리부는, 수학식
    Figure 112012047710174-pat00035
    에 의해 Xi+1[0]을 산출하고, 수학식
    Figure 112012047710174-pat00036
    에 의해 Xi+1[1]을 산출하고, 수학식
    Figure 112012047710174-pat00037
    에 의해 Xi+1[2]를 산출하고, 수학식
    Figure 112012047710174-pat00038
    에 의해 Xi +1[3]을 산출하는 것을 특징으로 하는, 암호화 장치.
    (여기서, Xi[0], Xi[1], Xi[2], Xi[3]는 i-1번째 라운드에서의 라운드 함수의 결과값,
    Figure 112012047710174-pat00039
    는 논리적 배타합 연산, +는 법 232 덧셈 연산, ROLa(x)는 32비트의 길이를 갖는 x값을 왼쪽으로 a비트만큼 순환시프트한 후 출력하는 함수, RORa(x)는 32비트의 길이를 갖는 x값을 오른쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미한다.)
  7. 삭제
  8. 청구항 1에 있어서,
    상기 최종 변환부에 의해 생성된 암호문을 출력하는 암호문 출력부를 더 포함하는 것을 특징으로 하는, 암호화 장치.
  9. 사용자 인터페이스부가 사용자로부터 암호화하고자 하는 평문과 마스터키를 입력받는 단계;
    키스케쥴러부가 상기 마스터키로부터 라운드키를 생성하는 단계;
    초기 변환부가 상기 평문으로부터 초기 라운드 함수값들을 생성하는 단계;
    라운드 함수 처리부가 상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 단계; 및
    최종 변환부가 마지막 라운드에서의 라운드 함수의 결과값들을 연접하여 암호문을 생성하는 단계를 포함하는 것을 특징으로 하는, 암호화 방법.
  10. 청구항 9에 있어서,
    상기 마스터키로부터 라운드키를 생성하는 단계는,
    마스터키 입력부가 상기 사용자 인터페이스부로부터 상기 마스터키를 전송받는 단계;
    키스케쥴 라운드 함수값 생성부가 상기 마스터키를 구성하는 서브 마스터키값들 각각으로부터 초기 키스케쥴 라운드 함수값들을 생성하는 단계; 및
    라운드키 생성부가 상기 초기 키스케쥴 라운드 함수값들과 고정된 상수값들을 이용하여 키스케쥴 라운드 함수값들을 생성하고, 상기 키스케쥴 라운드 함수값들을 연접하여 상기 라운드키를 생성하는 단계를 포함하는 것을 특징으로 하는, 암호화 방법.
  11. 청구항 10에 있어서,
    상기 라운드키는 192비트의 길이를 갖고, 각각 32비트의 길이를 갖는 서브 라운드키 RKi[0], RKi[1], RKi[2], RKi[3], RKi[4], RKi[5]가 연접하여 구성되는 것을 특징으로 하는, 암호화 방법.
  12. 청구항 11에 있어서,
    상기 평문으로부터 초기 라운드 함수값들을 생성하는 단계는,
    128비트의 길이를 갖는 상기 평문으로부터 각각 32비트의 길이를 갖는 서브 평문 P[0], P[1], P[2], P[3]을 추출하고, 상기 서브 평문 P[0], P[1], P[2], P[3] 각각으로부터 초기 라운드 함수값 X0[0], X0[1], X0[2], X0[3]을 생성하는 것을 특징으로 하는, 암호화 방법.
  13. 청구항 12에 있어서,
    상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 단계는,
    상기 라운드키와 상기 초기 라운드 함수값에 기초하여 라운드 함수를 처리하여 i번째 라운드에서의 라운드 함수의 결과값 Xi +1[0], Xi +1[1], Xi +1[2], Xi +1[3]을 산출하는 것을 특징으로 하는, 암호화 방법.
  14. 청구항 13에 있어서,
    상기 라운드키와 상기 초기 라운드 함수값들을 이용하여 라운드 함수를 반복하여 처리하는 단계는,
    수학식
    Figure 112012047710174-pat00040
    에 의해 Xi+1[0]을 산출하고, 수학식
    Figure 112012047710174-pat00041
    에 의해 Xi+1[1]을 산출하고, 수학식
    Figure 112012047710174-pat00042
    에 의해 Xi+1[2]를 산출하고, 수학식
    Figure 112012047710174-pat00043
    에 의해 Xi +1[3]을 산출하는 것을 특징으로 하는, 암호화 방법.
    (여기서, Xi[0], Xi[1], Xi[2], Xi[3]는 i-1번째 라운드에서의 라운드 함수의 결과값,
    Figure 112012047710174-pat00044
    는 논리적 배타합 연산, +는 법 232 덧셈 연산, ROLa(x)는 32비트의 길이를 갖는 x값을 왼쪽으로 a비트만큼 순환시프트한 후 출력하는 함수, RORa(x)는 32비트의 길이를 갖는 x값을 오른쪽으로 a비트만큼 순환시프트한 후 출력하는 함수를 의미한다.)
  15. 삭제
  16. 청구항 9에 있어서,
    암호문 출력부가 상기 최종 변환부에 의해 생성된 암호문을 출력하는 단계를 더 포함하는 것을 특징으로 하는, 암호화 방법.
KR1020120064278A 2012-06-15 2012-06-15 저전력 암호화 장치 및 방법 KR101330664B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120064278A KR101330664B1 (ko) 2012-06-15 2012-06-15 저전력 암호화 장치 및 방법
JP2012243636A JP5542896B2 (ja) 2012-06-15 2012-11-05 低電力暗号化装置および方法
US13/909,155 US9049007B2 (en) 2012-06-15 2013-06-04 Low-power encryption apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120064278A KR101330664B1 (ko) 2012-06-15 2012-06-15 저전력 암호화 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101330664B1 true KR101330664B1 (ko) 2013-11-15

Family

ID=49755933

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120064278A KR101330664B1 (ko) 2012-06-15 2012-06-15 저전력 암호화 장치 및 방법

Country Status (3)

Country Link
US (1) US9049007B2 (ko)
JP (1) JP5542896B2 (ko)
KR (1) KR101330664B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170121465A (ko) * 2016-04-25 2017-11-02 국방과학연구소 사슬구조의 otp 생성방법 및 이를 이용한 고정형 자료의 인코딩, 디코딩 방법
KR20190113243A (ko) * 2018-03-28 2019-10-08 주식회사 다날 결제 처리 대행 서비스 장치 및 그 동작 방법
KR20210036699A (ko) 2019-09-26 2021-04-05 국방과학연구소 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101516573B1 (ko) * 2013-07-26 2015-05-04 한국전자통신연구원 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법
US10313128B2 (en) * 2014-08-29 2019-06-04 The Boeing Company Address-dependent key generator by XOR tree
US9651878B2 (en) 2014-12-26 2017-05-16 Samsung Electronics Co., Ltd. Organic photoconductor and electrophotographic apparatus and process cartridge including the organic photo conductor
CN112202547B (zh) * 2020-11-11 2022-04-12 衡阳师范学院 一种轻量级分组密码gfcs实现方法、装置及可读存储介质
KR102544183B1 (ko) 2021-07-26 2023-06-15 인소팩주식회사 검증필 암호모듈을 실장한 무선 휴대장치 및 암호화 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050058285A1 (en) 2003-09-17 2005-03-17 Yosef Stein Advanced encryption standard (AES) engine with real time S-box generation
US7508937B2 (en) 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US7970381B2 (en) 2007-08-13 2011-06-28 General Motors Llc Method of authenticating a short message service (sms) message
US8416947B2 (en) * 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
US8233620B2 (en) * 2009-02-27 2012-07-31 Inside Secure Key recovery mechanism for cryptographic systems
KR101078705B1 (ko) 2009-11-19 2011-11-02 한국인터넷진흥원 문자보안 서비스 시스템 및 그 이용방법
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7508937B2 (en) 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
US20050058285A1 (en) 2003-09-17 2005-03-17 Yosef Stein Advanced encryption standard (AES) engine with real time S-box generation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Zheng Gong 외 2명, KLEIN:A New Family of Lightweight Block Ciphers. Lecture Notes in Computer Science. 2012. Vol. 7055, pp.1~18. *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170121465A (ko) * 2016-04-25 2017-11-02 국방과학연구소 사슬구조의 otp 생성방법 및 이를 이용한 고정형 자료의 인코딩, 디코딩 방법
KR101867663B1 (ko) * 2016-04-25 2018-07-17 국방과학연구소 사슬구조의 otp 생성방법 및 이를 이용한 고정형 자료의 인코딩, 디코딩 방법
KR20190113243A (ko) * 2018-03-28 2019-10-08 주식회사 다날 결제 처리 대행 서비스 장치 및 그 동작 방법
KR102070821B1 (ko) 2018-03-28 2020-01-29 주식회사 다날 결제 처리 대행 서비스 장치 및 그 동작 방법
KR20210036699A (ko) 2019-09-26 2021-04-05 국방과학연구소 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램

Also Published As

Publication number Publication date
US9049007B2 (en) 2015-06-02
JP2014002351A (ja) 2014-01-09
US20130336480A1 (en) 2013-12-19
JP5542896B2 (ja) 2014-07-09

Similar Documents

Publication Publication Date Title
KR101330664B1 (ko) 저전력 암호화 장치 및 방법
JP6964688B2 (ja) 暗号文に対する近似演算を行う装置及び方法
CN101202623B (zh) 消息验证码产生方法、验证/加密和验证/解密方法
KR101600016B1 (ko) 동형 암호화 알고리즘을 이용한 암호화 방법 및 이를 수행하는 컴퓨팅 장치
US20150244518A1 (en) Variable-length block cipher apparatus and method capable of format preserving encryption
US10404468B2 (en) Technologies for CCM encryption with 64-bit block ciphers
WO2014136386A1 (ja) タグ生成装置、タグ生成方法およびタグ生成プログラム
US20120314857A1 (en) Block encryption device, block decryption device, block encryption method, block decryption method and program
KR20160024965A (ko) 평문 데이터를 암호화하기 위한 방법 및 장치
EP3086585B1 (en) Method and system for securing data communicated in a network
US10044499B2 (en) Information processing apparatus, program, and storage medium
TW201545524A (zh) 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術
KR102033351B1 (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
CN113098675B (zh) 基于多项式完全同态的二进制数据加密系统及方法
US9049004B2 (en) Low-power encryption apparatus and method
CN116488794A (zh) 基于fpga的高速sm4密码模组实现方法及装置
US20170041133A1 (en) Encryption method, program, and system
JP6167721B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
CN115632765A (zh) 加密方法、解密方法、装置、电子设备及存储介质
Rouaf et al. Performance Evaluation of Encryption Algorithms in Mobile Devices
KR100874706B1 (ko) 초경량, 저전력 환경에 적합한 암호화 방법
TWI665901B (zh) 加密方法與解密方法
Janakiraman et al. Humming bird with coloured wings: A feedback security approach
Labbi et al. Symmetric encryption algorithm for RFID systems using a dynamic generation of key
Kotel et al. Lightweight encryption algorithm based on modified XTEA for low-resource embedded devices

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170918

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 7