KR101617694B1 - 블록암호 hight 의 암호화/복호화 장치 - Google Patents

블록암호 hight 의 암호화/복호화 장치 Download PDF

Info

Publication number
KR101617694B1
KR101617694B1 KR1020150038646A KR20150038646A KR101617694B1 KR 101617694 B1 KR101617694 B1 KR 101617694B1 KR 1020150038646 A KR1020150038646 A KR 1020150038646A KR 20150038646 A KR20150038646 A KR 20150038646A KR 101617694 B1 KR101617694 B1 KR 101617694B1
Authority
KR
South Korea
Prior art keywords
byte
round
bits
key
unit
Prior art date
Application number
KR1020150038646A
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 KR1020150038646A priority Critical patent/KR101617694B1/ko
Application granted granted Critical
Publication of KR101617694B1 publication Critical patent/KR101617694B1/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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

64비트(bit)의 데이터를 블록암호 HIGHT 로 연산하는 블록암호 HIGHT 의 암호화/복호화 장치는, 입력된 64비트의 데이터를 하나의 라운드마다 상위 32비트 및 하위 32비트로 분할하여 34 라운드(최초 라운드, 제1 내지 제32 라운드, 최종 라운드)동안 반복해서 연산하되, 최초 라운드와 최종 라운드 연산시에는 입력된 데이터(32비트의 신호 중 최하위 바이트를 제1 바이트, 제1 바이트의 상위 바이트를 제2 바이트, 제2 바이트의 상위 바이트를 제3 바이트, 제3 바이트의 상위 바이트를 제4 바이트)를 제1 바이트와 제2 바이트, 제3 바이트와 제4 바이트 단위로 각각 순환이동하여 연산하되, 제1 라운드부터 제32 라운드까지의 연산시에는 암호화일 경우 하위 32비트 연산시에는 하위 32비트 내에서 바이트 단위로 순환 이동시키며, 상위 32비트 연산시에는 상위 32비트를 하위 32비트의 연산된 어느 하나의 바이트와 함께 바이트 단위로 순환 이동시키며, 복호화일 경우 상위 32비트 연산시에는 상위 32비트 내에서 바이트 단위로 순환 이동시키며, 하위 32비트 연산시에는 하위 32비트를 상위 32비트의 연산된 어느 하나의 바이트와 함께 바이트 단위로 순환 이동시켜서 라운드 연산결과를 산출하는 라운드 연산부를 포함한다.

Description

블록암호 HIGHT 의 암호화/복호화 장치{Device For Performing Block Cipher Algorithm HIGHT}
본 발명은 블록암호 HIGHT 의 암호화/복호화 장치에 관한 것으로서, 블록암호 알고리듬 HIGHT(HIGh security and light weigHT)을 경량화된 하드웨어로 구현한 블록암호 HIGHT 의 암호화/복호화 장치에 관한 것이다.
암호화는 그 의미가 명확하지 않도록 메시지를 부호화하는 과정이며, 복호화는 암호화된 메시지를 본래의 형태로 변환하는 과정이다. 메시지 원래의 형태를 평문(Plaintext)이라하며, 암호화된 형태를 암호문(Ciphertext)이라 부른다. 암호는 과거에는 군사적인 용도 등의 비밀 통신을 위하여 주로 사용하였으나 현재는 인터넷 기반의 사회, 경제 활동의 안전성, 신뢰성, 프라이버시 보호 등을 위한 핵심 기술로서 메일전송, 사용자 인증, 전자상거래 등에 널리 사용되고 있다.
대칭형 암호 시스템은 암호화를 위해 사용되는 송신자가 보유하고 있는 키와 복호화를 위해 사용될 수신자의 키가 동일한 시스템이다. 대칭형 블록 암호 알고리듬으로는 DES(Data Encryption Standard), T-DES, IDEA(International Data Encryption Algorithm), SKIPJACK,MISTY 및 AES(Advanced Encryption Standard) 암호 알고리듬 등 다양하게 발표되었다. 한편 국내에서도 대칭형 블록 암호 알고리듬인 SEED 및 ARIA 암호 표준안을 발표하였다.
ISO/IEC 국제 표준으로 2010년 최종 승인된 모바일용 64비트 블록 암호화 기술인 HIGHT(HIGh security and light weigHT) 암호 알고리듬을 하드웨어적으로 구현한 연구가 진행되고 있다.
하지만, HIGHT(HIGh security and light weigHT) 암호 알고리듬을 구현한 종래의 하드웨어는 로직레벨에서 게이트 및 메모리가 너무 많이 사용되고 있으므로, 이를 경량화하는 기술의 개발이 요구되고 있다.
본 발명은 상기와 같은 기술적 과제를 해결하기 위해 제안된 것으로, 라운드 블록으로 입력된 64비트의 데이터를 상위 32비트 및 하위 32비트로 분할하여 연산함으로써 연산부의 하드웨어 자원을 최소한으로 사용하여 하드웨어 로직의 크기를 감소시킬 수 있는 블록암호 HIGHT 의 암호화/복호화 장치를 제공한다.
본 발명의 실시예에 따르면, 64비트(bit)의 데이터를 블록암호 HIGHT 로 연산하는 블록암호 HIGHT 의 암호화/복호화 장치에 있어서, 입력된 64비트의 데이터를 하나의 라운드마다 상위 32비트 및 하위 32비트로 분할하여 34 라운드 동안 반복해서 연산하되, 최초라운드와 최종라운드 연산시에는 입력된 데이터를 제1 바이트와 제2 바이트, 제3 바이트와 제4 바이트를 각각 바이트 단위로 순환이동하여 연산하되, 1라운드부터 32라운드까지의 연산시에는 암호화일 경우 하위 32비트 연산시에는 하위 32비트 내에서 바이트 단위로 순환 이동시키며, 상위 32비트 연산시에는 상위 32비트를 레지스터부의 제1 바이트(레지)와 함께 바이트 단위로 순환 이동시키며,복호화일 경우 상위 32비트 연산시에는 상위 32비트 내에서 바이트 단위로 순환 이동시키며, 하위 32비트 연산시에는 하위 32비트를 레지스터부의 제8바이트(레지)와 함께 8비트 단위로 순환이동시키며 라운드 연산결과를 산출하는 라운드 연산부; 마스터 키를 이용하여 복수의 라운드 키를 생성하며 상기 라운드 연산부에서 수행되는 각 라운드에 라운드 키를 제공하는 키 스케줄러부; 및 클럭신호 및 모드신호의 제어에 따라 상기 라운드 연산부 및 상기 키 스케줄러부의 동작을 제어하는 제어부;를 포함하는 블록암호 HIGHT 의 암호화/복호화 장치가 제공된다.
상기 키 스케줄러부는, 상기 34 라운드에 걸쳐 라운드별 연산에 필요한 각각의 라운드 키를 제공하는 것을 특징으로 한다.
상기 라운드 연산부는, 입력된 64비트의 데이터 중 상위 32비트, 하위 32비트 및 레지스터부에서 선택된 32비트중 어느 하나를 선택적으로 출력하는 제1 신호 선택부; 상기 제1 신호 선택부에서 출력된 32비트 단위의 신호를 바이트(Byte) 단위별로 연산함에 있어서, 최하위 바이트인 제1 바이트 및 상기 제1 바이트 상위의 제2 바이트를 라운드 키를 이용하여 연산하는 제1 연산부; 상기 제1 신호 선택부에서 출력된 32비트 단위의 신호를 바이트(Byte) 단위별로 연산함에 있어서, 상기 제2 바이트 상위의 제3 바이트 및 상기 제3 바이트 상위의 제4 바이트를 라운드 키를 이용하여 연산하는 제2 연산부; 상기 제1 연산부 및 상기 제2 연산부에서 출력되는 신호를 바이트 단위로 순서를 변경하여 선택적으로 출력하는 제2 신호 선택부; 및 상기 제2 신호 선택부에서 출력되는 신호를 저장하는 레지스터부;를 포함하는 것을 특징으로 한다.
상기 제1 연산부는, 제1 라운드 함수를 적용한 상기 제1 바이트와, 입력된 라운드 키를 배타적 논리합(XOR) 연산하는 제1 연산 처리부; 상기 제1 연산 처리부의 연산결과 및 라운드 키 중 어느 하나를 선택적으로 출력하는 제1 멀티플렉서; 및 상기 제1 멀티플렉서에서 출력되는 신호와 상기 제2 바이트를 mod-28 덧셈 또는 뺄셈 연산하는 제2 연산 처리부;를 포함하는 것을 특징으로 한다.
상기 제2 연산부는, 제2 라운드 함수를 적용한 상기 제3 바이트와, 라운드 키를 mod-28 덧셈 연산하는 제3 연산 처리부; 상기 제3 연산 처리부의 연산결과 및 라운드 키 중 어느 하나를 선택적으로 출력하는 제2 멀티플렉서; 및 상기 제2 멀티플렉서에서 출력되는 신호와 상기 제4 바이트를 배타적 논리합(XOR) 연산하는 제4 연산 처리부;를 포함하는 것을 특징으로 한다.
상기 키 스케줄러부는, 입력받은 128 비트의 마스터 키의 상위 64비트 및 하위 64비트를 각각 바이트 단위로 순환 이동함에 있어서 암호화 연산시 왼쪽 순환이동을 수행하고 복호화 연산시 오른쪽 순환이동을 수행하는 순환 이동부; 상기 순환 이동부에서 2바이트 단위로 출력되는 복수의 출력신호를 입력받아 선택적으로 출력하는 키 신호 선택부; 16비트의 슈도 랜덤값을 생성하는 슈도 랜덤값 생성부; 상기 슈도 랜덤값 생성부에서 생성된 슈도 랜덤값 또는 영(zero) 값을 선택적으로 출력하는 신호 선택부; 및 상기 키 신호 선택부에서 출력되는 신호와, 상기 신호 선택부에서 출력되는 신호를 mod-28 덧셈 연산하여 최종 키 값으로써 출력하는 모듈로 연산부;를 포함하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 블록암호 HIGHT 의 암호화/복호화 장치는 라운드 블록으로 입력된 64비트의 데이터를 상위 32비트 및 하위 32비트로 분할하여 연산할 수 있도록, 반복 사용되는 연산로직을 공유함으로써, 반복되는 연산로직의 수를 감소시켜 하드웨어의 크기를 감소시켰다.
또한, 화이트닝 키 및 서브 키를 구분하지 않고, 하나의 키 스케줄러에서 34라운드 연산에 제공할 수 있는 라운드 키를 생성하여 회로의 크기를 감소시켰다.
따라서 하드웨어 로직, 게이트(Gate), 래치(LATCH) 등의 사용이 줄어들어 하드웨어를 경량화 시킬 수 있을 뿐만 아니라, 경량화된 하드웨어로 인하여 전력소모도 감소시킬 수 있는 효과가 발생한다.
도 1은 블록암호 HIGHT 의 개념을 도시한 블록도.
도 2는 블록암호 HIGHT의 i 번째 라운드 함수.
도 3은 블록암호 HIGHT의 32 번째 라운드 함수.
도 4는 블록암호 HIGHT의 암호화 전체 구조.
도 5는 본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치의 구성도.
도 5a는 도 5의 블록암호 HIGHT 의 암호화/복호화 장치의 라운드 연산부의 상세도.
도 6은 도 5의 키 스케줄러부의 상세도.
도 7은 도 6의 키 스케줄러부의 슈도 랜덤값 생성부의 구성도.
도 8은 도 7의 슈도 랜덤값 생성부의 암호화 슈도 랜덤값 생성기의 동작도.
도 9는 도 7의 슈도 랜덤값 생성부의 복호화 슈도 랜덤값 생성기의 동작도.
도 10은 본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치의 동작을 나타낸 기능검증 결과 시뮬레이션.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부한 도면을 참조하여 설명하기로 한다.
도 1은 블록암호 HIGHT 의 개념을 도시한 블록도, 도 2는 블록암호 HIGHT의 i 번째 라운드 함수, 도 3은 블록암호 HIGHT의 32 번째 라운드 함수, 도 4는 블록암호 HIGHT의 암호화 전체 구조, 도 5는 본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치의 구성도, 도 5a는 도 5의 블록암호 HIGHT 의 암호화/복호화 장치의 라운드 연산부의 상세도, 도 6은 도 5의 키 스케줄러부의 상세도, 도 7은 도 6의 키 스케줄러부의 슈도 랜덤값 생성부의 구성도, 도 8은 도 7의 슈도 랜덤값 생성부의 암호화 슈도 랜덤값 생성기의 동작도, 도 9는 도 7의 슈도 랜덤값 생성부의 복호화 슈도 랜덤값 생성기의 동작도, 도 10은 본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치의 동작을 나타낸 시뮬레이션이다.
우선, 블록암호 HIGHT(HIGh security and light weigHT)에 대해 상세히 설명하면 다음과 같다.
HIGHT(HIGh security and light weigHT)는 64비트의 평문(암호문)블록을 128비트의 마스터 키로 암호화(복호화)하여 64비트의 암호문(평문)을 생성하는 대칭키 방식의 블록암호 알고리듬 이다. 변형 Feistel 구조를 기반으로 총 34라운드의 연산을 통해 암호화(복호화)가 이루어지며, 128비트의 마스터 키로부터 생성되는 서브 키가 라운드변환에 사용된다. 라운드변환과 서브 키 생성은 바이트 단위의 mod-28 덧셈과 순환이동(cyclic shift), mod-2 덧셈 등의 단순한 연산만으로 구현되어 모바일 및 사물인터넷 환경에 적합한 작은 하드웨어와 저전력 구현이 가능하다는 특징을 갖는다. 즉, 블록암호 HIGHT(HIGh security and light weigHT)는 열악한 환경에서 구현될 수 있도록 8비트 단위의 기본적인 산술 연산들인 XOR, 덧셈, 순환이동만으로 설계될 수 있다.
HIGHT 알고리듬의 전체구조는 도 1과 같이 초기변환, 32회의 라운드변환, 최종변환 등 총 34회 라운드변환으로 구성되며, 초기변환과 최종변환은 순환이동 없이 화이트닝 키(whitening) 가산만으로 이루어진다. 암호화 과정과 복호화 과정은 역순으로 이루어지며, 암호화 과정의 모듈로 덧셈은 복호화 과정에서 모듈로 뺄셈으로 구현되고, 순환이동 방향도 반대로 이루어진다.
64비트 블록암호 HIGHT는 128비트 암호키를 이용하여 메시지를 64비트 블록 단위로 암·복호화 하는 알고리듬으로 데이터의 기밀성 등과 같은 기능을 제공하기 위해 사용될 수 있다. 64비트 블록암호 HIGHT의 라운드 키 생성하는 과정과 알고리듬의 전체구조와 내부를 구성하고 있는 라운드 함수에 대해 설명한다.
HIGHT의 전체 구조는 Feistel 변형 구조로 이루어져 있으며, 64비트의 평문과, 128비트 키로부터 생성된 8개의 8비트 화이트닝 키와, 128개의 8비트 서브키를 입력으로 사용하여 총 34운드를 거쳐 64비트 암호문을 출력한다.
HIGHT의 암호화 복호화에 사용되는 8바이트의 화이트닝 키와 128바이트의 서브 키는 키 스케줄 알고리듬에 의해 생성되며, 화이트닝 키(WKi)는 수학식 1과 같이 생성된다.
<수학식 1>
Figure 112015027357048-pat00001

초기변환과 최종변환에 사용되는 화이트닝 키는 마스터 키의 상위 4바이트와 하위 4바이트로부터 직접 얻어진다.
(라운드) 서브 키는 7비트 초기값(101_1010)을 갖는 LFSR(linear feedback shift register)의 32비트 출력과 마스터 키의 mod-28 가산을 통해 생성된다. 랜덤 값 δ를 생성하는 LFSR의 원시다항식은 수학식 2와 같이 주어지며, 생성되는 랜덤 값의 주기는 27-1 =127이 되어 δ0 = δ127이 된다.
<수학식 2>
Figure 112015027357048-pat00002

서브 키는 수학식 3을 통해 생성된다.
<수학식 3>
Figure 112015027357048-pat00003

HIGHT의 암호화 과정은 64비트의 평문(P)에 화이트닝 키(WK) 및 서브 키(SK)를 가산하고 바이트 단위로 순환이동 시키는 초기변환과, 32회의 라운드변환(Round1~Round32) 그리고 최종변환을 통해 암호문(C)를 생성한다. 화이트닝 키와 서브 키는 키 스케줄러 블록을 통해 생성된다.
초기변환은 4바이트의 화이트닝 키 WK0 ,WK1 ,WK2 ,WK3 을 이용하며, 평문(P)를 첫 번째 라운드 변환의 입력
Figure 112015027357048-pat00004
으로 변환하는 식은 수학식 4와 같다.
<수학식 4>
Figure 112015027357048-pat00005

라운드 변환(연산)은 수학식 5와 같이 순환이동과 XOR 연산으로 구성되는 두개의 함수, F0 및 F1 을 포함한다.
<수학식 5>
Figure 112015027357048-pat00006

도 2를 참조하면, Round1부터 Round31 (Roundi = 1, ... ,31)라운드변환에서는
Figure 112015027357048-pat00007
Figure 112015027357048-pat00008
로 수학식 6으로 변환한다.
<수학식 6>
Figure 112015027357048-pat00009

도 3을 참조하면, Round32 라운드변환에서는 바이트 단위 순환이동 없이 mod-28 및 mod-2 덧셈만 이루어지며 이는 수학식 7과 같다..최종변환은 Round32의 출력 X32에 4바이트의 화이트닝 키 WK4, WK5, WK6, WK7 을 가산하여 변환한다.
<수학식 7>
Figure 112015027357048-pat00010

복호화는 초기변환(암호화 최종변환의 역변환), 32회의 라운드 변환, 최종변환(암호화 초기변환의 역변환)으로 이루어진다. 복호화의 초기변환에는 4개의 화이트닝 키 WK4, WK5, WK6, WK7 이 사용되며 mod-28뺄셈과 XOR 연산으로 구성된다. 복호화의 Round1 ~ Round32 변환에는 암호화의 역순으로 서브 키가 사용되며, mod-28 덧셈과 뺄셈, XOR 연산으로 구성된다. 최종변환에는 4개의 화이트닝 키 WK0, WK1, WK2, WK3가 사용된다. 복호화 알고리듬의 i번째 함수를 Round'i(i=1, ..., 31)로 표시하며 Round'i
Figure 112015027357048-pat00011
Figure 112015027357048-pat00012
로 변환하며 이는 수학식 8과 같다.
<수학식 8>
Figure 112015027357048-pat00013

암호화 알고리듬에서와 마찬가지로, 마지막 라운드 함수인 Round'32에서는 바이트 단위로 순환 이동을 하지 않고 연산하며, 이는 수학식 9와 같다.
<수학식 9>
Figure 112015027357048-pat00014

도 5는 본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치(1)의 구성도이다.
본 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치(1)는 제안하고자 하는 기술적인 사상을 명확하게 설명하기 위한 간략한 구성만을 포함하고 있다.
도 5를 참조하면, 블록암호 HIGHT 의 암호화/복호화 장치(1)는 라운드 연산부(100)와, 키 스케줄러부(200)와, 제어부(300)를 포함한다.
라운드 연산부(100)와, 키 스케줄러부(200)와, 제어부(300)에는 암호화 및 복호화 동작을 선택적으로 지시하는 신호인 모드신호(MODE)와, 내부회로를 제어하기 위한 클럭신호(CLK)와 리셋신호(RST)가 각각 입력된다. 또한, 라운드 연산부(100)와, 키 스케줄러부(200)와, 제어부(300)는 기본적으로 모드신호(MODE), 클럭신호(CLK) 및 리셋신호(RST)에 동기화 되어 동작하도록 내부회로가 구성된다.
상기와 같이 구성되는 블록암호 HIGHT 의 암호화/복호화 장치(1)의 세부구성과 주요동작을 살펴보면 다음과 같다. 본 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치(1)는 수학식 1 내지 수학식 9와, 도 1 내지 도 4에 도시된 바와 같은 블록암호 HIGHT 알고리듬에 호환되는 하드웨어로 구현한 것이다. 블록암호 HIGHT 의 암호화/복호화 장치(1)는 경량화된 하드웨어로 블록암호 HIGHT 알고리듬을 구현할 수 있도록 설계되었다.
본 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치(1)는 64비트(bit)의 데이터(text_in)를 블록암호 HIGHT 로 연산하여 출력 데이터(text_out)로 출력한다.
라운드 연산부(100)는 입력된 64비트의 데이터(text_in)를 하나의 라운드마다 상위 32비트 및 하위 32비트로 분할하여 34 라운드(최초 라운드, 제1 내지 제32 라운드, 최종 라운드) 동안 반복해서 연산한다.
라운드 연산부(100)는 최초 라운드와 최종 라운드 연산시에는 입력된 데이터(32비트의 신호 중 최하위 바이트를 제1 바이트, 제1 바이트의 상위 바이트를 제2 바이트, 제2 바이트의 상위 바이트를 제3 바이트, 제3 바이트의 상위 바이트를 제4 바이트)를 제1 바이트와 제2 바이트, 제3 바이트와 제4 바이트를 각각 바이트 단위로 순환이동하여 연산하되, 제1 라운드부터 제32 라운드까지의 연산시에는 암호화일 경우 데이터의 하위 32비트 연산시에는 하위 32비트 내에서 바이트 단위로 순환 이동시키며, 데이터의 상위 32비트 연산시에는 상위 32비트를 레지스터부의 제1 바이트와 함께 바이트 단위로 순환 이동시키며, 복호화일 경우 데이터의 상위 32비트 연산시에는 상위 32비트 내에서 바이트 단위로 순환 이동시키며, 데이터의 하위 32비트 연산시에는 하위 32비트를 레지스터부의 제8 바이트와 함께 바이트 단위로 순환 이동시키서 라운드 연산결과를 산출한다.
즉, 최초 라운드에서 라운드 연산부(100)는 데이터(text_in)와 라운드 키를 연산하여 결과를 산출한다.
다음으로, 제1 라운드에서 라운드 연산부(100)는 최초 라운드의 연산 결과를 인가받은 후 라운드 키와의 연산을 통해 결과를 산출한다.
다음으로, 제1 라운드의 연산결과는 제2 라운드에서 사용되며 제32 라운드까지 상술한 동작이 반복된다.
마지막으로, 최종 라운드에서 라운드 연산부(100)는 제32 라운드의 연산결과와 라운드 키를 연산하고 최종적으로 출력 데이터(text_out)를 산출한다.
라운드 연산부(100)는 동일한 하드웨어 로직을 이용하여, 입력된 데이터(text_in)와, 라운드 키를 34 라운드 동안 반복해서 연산한 후 출력 데이터(text_out)를 산출한다. 라운드 연산부(100)는 제어부(300)에서 출력되는 플래그 신호(CTRL FLAG)의 제어에 따라 내부 동작을 수행한다.
라운드 연산부(100)에 입력된 데이터(text_in)가 평문일 경우 출력 데이터(text_out)는 암호문 이며, 입력된 데이터(text_in)가 암호문일 경우 출력 데이터(text_out)는 평문이다. 라운드 연산부(100)는 모드신호(MODE)에 따라 암호화 및 복호화 중 어느 하나의 동작을 수행한다.
키 스케줄러부(200)는 마스터 키(MASTER KEY)를 이용하여 복수의 라운드 키를 생성하여 라운드 연산부(100)에서 수행되는 각 라운드에 제공한다. 키 스케줄러부(200)는 각 라운드 연산에 사용되는 16비트의 라운드 키를 on-the-fly 방식으로 생성한다.
제어부(300)는 클럭신호(CLK) 및 모드신호(MODE)의 제어에 따라 라운드 연산부(100) 및 키 스케줄러부(200)의 동작을 제어한다. 클럭신호(CLK)는 레지스터의 동작 및 연산시점을 동기화 시키기기 위해 사용되며, 모드신호(MODE)는 암호화 및 복호화 동작 중 어느 하나를 선택하는 신호이다. 본 실시예에서 블록암호 HIGHT 의 암호화/복호화 장치(1)는 모드신호(MODE)가 '0' 일 경우 암호화를 진행하게 되며, 모드신호(MODE)가 '1'일 경우 복호화를 진행하게 된다.
도 5a는 도 5의 블록암호 HIGHT 의 암호화/복호화 장치(1)의 라운드 연산부(100)의 상세도이다.
도 5a를 참조하면, 라운드 연산부(100)는 제1 신호 선택부(110)와, 제1 연산부(120)와, 제2 연산부(130)와, 제2 신호 선택부(140)와, 레지스터부(150) 를 포함한다.
여기에서 제1 연산부(120)는 제1 연산 처리부(121)와, 제1 멀티플렉서(MUX12)와, 제2 연산 처리부(122)를 포함한다. 또한, 제2 연산부(130)는 제3 연산 처리부(131)와 제2 멀티플렉서(MUX13)와, 제4 연산 처리부(132)를 포함한다.
HIGHT 알고리듬의 암호과정과 복호과정은 라운드 변환의 순서와 라운드 키의 사용이 역순으로 처리되고 바이트 단위의 순환이동 방향도 반대가 된다. 블록암호 HIGHT 의 암호화/복호화 장치(1)는 하드웨어 공유를 통해 암호연산과 복호연산을 통합하여 구현한다.
초기변환과 최종변환에서 홀수 번째 바이트는 라운드 함수(F0,F1)와 라운드 키 가산 연산 없이 바이트 단위 순환이동만 수행되며, 짝수 번째 바이트는 라운드키 가산과 바이트 단위 순환이동이 이루어진다. 블록암호 HIGHT 의 암호화/복호화 장치(1)는 초기변환, 최종변환, 각 라운드 변환을 포함하는 모든 라운드 연산 및 시프트가 동일한 회로구조로 구현된다.
상기와 같이 구성되는 라운드 연산부(100)의 세부구성과 주요동작을 살펴보면 다음과 같다.
제1 신호 선택부(110)는 입력된 64비트의 데이터(text_in) 중 상위 32비트(text_in[63:32]), 하위 32비트(text_in[31:0]) 및 레지스터부(150)에서 선택된 32비트 중 어느 하나를 선택적으로 출력한다.
최초 라운드에서 제1 신호 선택부(110)는 데이터(text_in)를 출력할 때, 하위 32비트(text_in[31:0])를 먼저 출력한 후 상위 32비트(text_in[63:32])를 출력한다.
또한, 제1 라운드 내지 제32 라운드, 최총 라운드에서 제1 신호 선택부(110)는 레지스터부(150)로부터 전달된 신호, 즉 각 라운드에서 연산되어 저장된 신호를 출력한다. 제1 신호 선택부(110)는 레지스터부(150)로부터 전달된 신호를 출력할 때에는, 암호화시, 전달된 신호의 하위 32비트를 먼저 출력한 후 상위 32비트를 출력하며, 복호화시 전달된 신호의 상위 32비트를 먼저 출력한 후 하위 32비트를 출력한다. 제1 신호 선택부(110)는 멀티플렉서로 구성될 수 있으며, 제1 선택신호(s1)의 제어에 따라 입력된 어느 하나의 신호를 선택적으로 출력하도록 구성된다.
제1 연산부(120)는 제1 연산 처리부(121)와, 제1 멀티플렉서(MUX12)와, 제2 연산 처리부(122)를 포함하여 구성되는데, 제1 연산부(120)는 제1 신호 선택부(110)에서 출력된 32비트 중 16비트 의 신호를 바이트(Byte) 단위별로 연산한다.
이때, 32비트의 신호 중 최하위 바이트를 제1 바이트(P0), 제1 바이트(P0)의 상위 바이트를 제2 바이트(P1), 제2 바이트(P1) 상위 바이트를 제3 바이트(P2), 제3 바이트(P2) 상위 바이트를 제4 바이트(P3)로 정의하고 설명하기로 한다.
제1 연산부(120)는 32비트의 신호 중 최하위 바이트인 제1 바이트(P0) 및 제1 바이트(P0) 상위의 제2 바이트(P1)를 라운드 키를 이용하여 연산한다..
즉, 제1 연산 처리부(121)는 제1 라운드 함수(F1)를 적용한 제1 바이트(P0)와, 입력된 라운드 키를 배타적 논리합(XOR) 연산한다.
또한, 제1 멀티플렉서(MUX12)는 제1 연산 처리부(121)의 연산결과 및 라운드 키중 어느 하나를 선택적으로 출력한다. 제1 멀티플렉서(MUX12)는 최초 라운드 및 최종 라운드에서는 라운드 키를 출력하고, 제1 라운드 내지 제32 라운드에서는 제1 연산 처리부(121)의 연산결과를 출력한다.
또한, 제2 연산 처리부(122)는 제1 멀티플렉서(MUX12)에서 출력되는 신호와 제2 바이트(P1)를 mod-28 (덧셈 또는 뺄셈)연산한다. 제2 연산 처리부(122)는 암호화 또는 복호화 동작을 지시하는 모드신호(MODE)를 입력받는데, 모드신호(MODE)가 '0'일 경우, mod-28 덧셈 연산이 수행되며, 모드신호(MODE)가 '1' 일 경우 mod-28 뺄셈 연산이 수행된다.
제2 연산부(130)는 제3 연산 처리부(131)와, 제2 멀티플렉서(MUX13)와, 제4 연산 처리부(132)를 포함하여 구성되는데, 제2 연산부(130)는 제1 신호 선택부(110)에서 출력된 32비트 중 16비트의 신호를 바이트(Byte) 단위별로 연산한다.
이때, 32비트의 신호 중 최하위 바이트를 제1 바이트(P0), 제1 바이트(P0)의 상위 바이트를 제2 바이트(P1), 제2 바이트(P1) 상위 바이트를 제3 바이트(P2), 제3 바이트(P2) 상위 바이트를 제4 바이트(P3)로 정의하고 설명하기로 한다.
제2 연산부(130)는 32비트의 신호 중 제2 바이트(P1) 상위의 제3 바이트(P2) 및 제3 바이트(P2) 상위의 제4 바이트(P3)를 라운드 키를 이용하여 연산한다.
제3 연산 처리부(131)는 제2 라운드 함수(F0)를 적용한 제3 바이트(P2)와, 입력된 라운드 키를 mod-28 덧셈 연산한다. 참고적으로, 제1 라운드 함수(F1) 및 제2 라운드 함수(F0)는 수학식 5를 구현하는 쉬프트 레지스터와 배타적 논리합 수단을 조합으로 구성될 수 있다.
또한, 제2 멀티플렉서(MUX13)는 제3 연산 처리부(131)의 연산결과 및 라운드 키 중 어느 하나를 선택적으로 출력한다. 제2 멀티플렉서(MUX13)는 최초 라운드 및 최종 라운드에서는 라운드 키를 출력하고, 제1 라운드 내지 제32 라운드에서는 제3 연산 처리부(131)의 연산결과를 출력한다.
또한, 제4 연산 처리부(132)는 제2 멀티플렉서(MUX13)에서 출력되는 신호와 제4 바이트(P3)를 배타적 논리합(XOR) 연산한다.
제2 신호 선택부(140)는 제1 연산부(120) 및 제2 연산부(130)에서 출력되는 신호를 바이트 단위로 순서를 변경하여 선택적으로 출력한다. 즉, 제2 신호 선택부(140)는 제1 연산부(120)에서 출력되는 2바이트 신호와, 제2 연산부(130)에서 출력되는 2바이트 신호를 입력받아 바이트 단위로 순서를 변경하여 출력한다.
제2 신호 선택부(140)는 복수의 멀티플렉서(MUX0 ~ MUX7)로 구성되는데, 본 실시예에서는 제1 멀티플렉서(MUX0), 제2 멀티플렉서(MUX1), 제3 멀티플렉서(MUX2), 제4 멀티플렉서(MUX3), 제5 멀티플렉서(MUX4), 제6 멀티플렉서(MUX5), 제7 멀티플렉서(MUX6), 제8 멀티플렉서(MUX7)가 구비되며 복수의 멀티플렉서(MUX0 ~ MUX7)는 제어신호에 따라 입력된 데이터 신호를 선택적으로 출력한다. 각 멀티플렉서는 2바이트의 신호를 입력받으며 출력신호로써 1바이트의 신호를 출력한다.
암호화 동작시 제2 신호 선택부(140)의 동작을 예시하면 다음과 같다.
제1 연산부(120) 및 제2 연산부(130)에서 하위 32비트의 연산 동작이 수행되고, 그 수행된 결과가 복수의 멀티플렉서(MUX0 ~ MUX7)의 입력단으로 전달되면, 제1 멀티플렉서(MUX0) 내지 제4 멀티플렉서(MUX3)에서만 그 수행된 결과를 출력한다. 제1 멀티플렉서(MUX0) 내지 제4 멀티플렉서(MUX3)에서 출력된 신호는 레지스터부(150)에 저장된다.
다음으로, 제1 연산부(120) 및 제2 연산부(130)에서 상위 32비트의 연산 동작이 수행되고, 그 수행된 결과가 복수의 멀티플렉서(MUX0 ~ MUX7)의 입력단으로 전달되면, 제1 멀티플렉서(MUX0)와 제5 멀티플렉서(MUX4) 내지 제8 멀티플렉서(MUX7)에서만 그 수행된 결과를 출력한다. 제1 멀티플렉서(MUX0)와 제5 멀티플렉서(MUX4) 내지 제8 멀티플렉서(MUX7)에서 출력된 신호는 레지스터부(150)에 저장된다.
레지스터부(150)는 제2 신호 선택부(140)에서 출력되는 신호를 레지스터에 저장한다. 결과적으로 제1 연산부(120) 및 제2 연산부(130)는 입력된 64비트의 데이터를 하나의 라운드마다 상위 32비트 및 하위 32비트로 분할하여 연산한 후, 제2 신호 선택부(140)에서 그 순서를 정렬하며, 레지스터부(150)에 저장한 후 64비트의 출력 데이터로써 출력한다.
기본적으로 64비트의 데이터가 상위 32비트 및 하위 32비트로 각각 분할되어 각 라운드에서 연산되는 과정에서 1~32라운드의 각 바이트별 정렬순서를 암호화를 예를 들어 설명하면 다음과 같다.
입력되는 64비트의 데이터가 P7, P6, P5, P4, P3, P2, P1, P0 이고 각 문자는 바이트 단위의 신호가 할당되어 있다고 가정한다.
우선, 입력된 데이터 중 하위 32비트(P3, P2, P1, P0 )의 데이터가 제1 연산부(120) 및 제2 연산부(130)에서 처리되면 레지스터부(150) 에는 P'2, P'1, P'0, P'3와 같은 순서로 저장된다.
다음으로, 입력된 데이터 중 상위 32비트(P7, P6, P5, P4 )의 데이터가 제1 연산부(120) 및 제2 연산부(130)에서 처리되면 기존 저장되어 있던 하위 32비트중 8비트(P'3)과 함께 제2 신호 선택부(140)를 걸쳐 레지스터부(150)에 P'6 P'5, P'4, P'3, P'2, P'1, P'0, P'7 과 같은 순서로 저장된다.
즉, 라운드 연산부(100)는 암호화 과정의 제1 내지 제32 라운드 연산의 경우 하위 32비트 연산시에는 하위 32비트 내에서 8비트(1바이트) 단위로 순환 이동시키며, 상위 32비트 연산시에는 상위 32비트를 레지스터부(150)의 제1 바이트(레지)와 함께 바이트 단위로 순환 이동시켜서 라운드 연산결과를 산출한다.
이와 같은 정렬순서는 제1 내지 제32 라운드의 라운드 연산에 반복 적용되며, 제2 신호 선택부(140)에 따라 라운드 연산의 결과값은 순환이동이 없는 상태 또는 순환이동이 있는 상태로 정렬되어 레지스터부(150)에 저장할 수 있다.
참고적으로, 제2 신호 선택부(140)에서 출력되는 신호의 순서 및 레지스터부(150)에 저장되어 정렬되는 신호의 순서는 각 라운드 마다 정해져 있다.
참고적으로 암호화 및 복호화 동작에 따라 제2 신호 선택부(140)에서 출력되는 신호의 순서 및 레지스터부(150)에서 정렬되는 순서는 반대로 설정된다. (수학식 1 내지 수학식 9와, 도 1 내지 도 4 참조)
라운드 연산부(100)는 제1 라운드부터 제32 라운드까지의 연산시에는 암호화일 경우 하위 32비트 연산시에는 하위 32비트 내에서 바이트 단위로 순환 이동시키며, 상위 32비트 연산시에는 상위 32비트를 레지스터부(150)의 제1 바이트(레지)와 함께 바이트 단위로 순환 이동시킨다.
또한, 복호화일 경우 상위 32비트 연산시에는 상위 32비트 내에서 바이트 단위로 순환 이동시키며, 하위 32비트 연산시에는 하위 32비트를 레지스터부(150)의 제8바이트(레지)와 함께 8비트 단위로 순환 이동시키며 라운드 연산결과를 산출한다
도 6은 도 5의 키 스케줄러부(200)의 상세도이다.
도 6을 참조하면, 키 스케줄러부(200)는 입력 선택부(210)와, 순환 이동부(220)와, 키 신호 선택부(230)와, 슈도 랜덤값 생성부(Pseudo-Random, 240)와, 신호 선택부(250)와, 모듈로 연산부(260)를 포함한다.
키 스케줄러부(200)는 128비트의 마스터 키(MASTER KEY)를 입력받아 라운드 키를 생성한다. 라운드 키는 각 라운드 변환에 4바이트씩 사용된다. 각 라운드 변환에 사용되는 4바이트의 라운드 키는 한 클록당 2바이트씩 on-the-fly 방식으로 생성되어 라운드 연산부(100)에 제공된다.
복호화 과정에 사용되는 라운드 키는 암호화 과정의 역순으로 생성되며, 마스터 키(MASTER KEY)의 순환이동도 반대 방향으로 이루어진다. 이를 효율적으로 구현하기 위해 모드신호(MODE)에 따라 왼쪽 순환이동과 오른쪽 순환이동이 선택적으로 이루어지도록 순환 이동부(220)이 구성된다.
입력 선택부(210)는 128 비트의 마스터 키(MASTER KEY) 및 순환 이동부(220)에서 출력되는 신호 중 어느 하나를 선택적으로 출력한다. 입력 선택부(210)는 최초에는 마스터 키(MASTER KEY)를 출력하도록 제어되며, 이후에는 일정 주기마다 순환 이동부(220)에서 출력되는 신호를 다시 피드백 받아 출력하도록 제어된다.
순환 이동부(220)는 입력받은 128 비트의 마스터 키(MASTER KEY)의 상위 64비트 및 하위 64비트 각각에 대해 바이트 단위별로 순환 이동하여 2바이트 단위로 출력한다. 순환 이동부(220)는 암호화 연산시 왼쪽 순환이동을 수행하고 복호화 연산시 오른쪽 순환이동을 수행한다. 순환 이동부(220)는 좌/우 순환이동을 하는 128 비트 레지스터로 구성될 수 있다.
키 신호 선택부(230)는 순환 이동부(220)에서 2바이트 단위로 출력되는 복수의 출력신호를 입력받아 선택적으로 출력한다.
슈도 랜덤값 생성부(240)는 16비트의 슈도 랜덤값을 생성하고, 신호 선택부(250)는 슈도 랜덤값 생성부(240)에서 생성된 슈도 랜덤값 또는 영(zero) 값을 선택적으로 출력한다.
모듈로 연산부(260)는 키 신호 선택부(230)에서 출력되는 신호와, 신호 선택부(250)에서 출력되는 신호를 mod-28 덧셈 연산하여 최종 키값으로써 출력한다.
초기 라운드 및 최종 라운드에 사용되는 라운드 키는 마스터 키(MASTER KEY)의 상위 4바이트 및 하위 4바이트에 각각 대응하여 바로 출력되는데, 라운드 키가 출력되기 위해 신호 선택부(250)에서 영(zero) 값이 출력된다. 즉, 영(zero)과 키 신호 선택부(230)에서 출력되는 신호가 모듈로 연산부(260)에서 mod-28 덧셈 연산되어 최종 키값 즉, 라운드 키로써 출력된다.
제1 내지 제32 라운드에 사용되는 라운드 키는 키 신호 선택부(230)에서 출력되는 신호와 슈도 랜덤값 생성부(240)에서 생성된 신호를 모듈로 연산부(260)에서 연산함으로써 생성된다.
도 7은 도 6의 키 스케줄러부(200)의 슈도 랜덤값 생성부(240)의 구성도이고, 도 8은 도 7의 슈도 랜덤값 생성부(240)의 암호화 슈도 랜덤값 생성기(242)의 동작도이고, 도 9는 도 7의 슈도 랜덤값 생성부(240)의 슈도 복호화 랜덤값 생성기(243)의 동작도이다.
도 7 내지 도 9를 참조하면, 슈도 랜덤값 생성부(240)는 7비트의 초기 값(101_1010)을 이용하여 14비트의 슈도 랜덤 값 을 생성하는 회로이며, 양방향 순환이동을 갖는 쉬프트 레지스터(Linear Feedback Shift Register, LFSR)로 구현된다.
슈도 랜덤값 생성부(240)는 제1 선택부(241)와, 암호화 슈도 랜덤값 생성기(242)와, 복호화 슈도 랜덤값 생성기(243)와, 제2 선택부(244)와, 레지스터(245)와, 제3 선택부(246)와, 출력신호 생성부(247)를 구비한다.
제1 선택부(241)는 초기값(Initial Value) 및 레지스터(245)에서 출력되는 신호 중 어느 하나를 선택적으로 출력한다.
암호화 슈도 랜덤값 생성기(242) 및 복호화 슈도 랜덤값 생성기(243)는 초기값 또는 피드백된 값을 이용하여 14비트의 슈도 랜덤값을 생성한다. 제2 선택부(244)는 암호화 슈도 랜덤값 생성기(242) 및 복호화 슈도 랜덤값 생성기(243) 중 어느 하나에서 생성된 슈도 랜덤값을 선택적으로 출력하고, 레지스터(245)는 제2 선택부(244)에서 출력되는 값을 저장하여 제1 선택부(241)에 전달한다.
제3 선택부(246)는 암호화 슈도 랜덤값 생성기(242) 및 복호화 슈도 랜덤값 생성기(243)에서 생성된 슈도 랜덤값을 입력받아 그 중 어느 하나를 출력하고, 출력신호 생성부(247)는 제3 선택부(246)에서 출력되는 14비트의 값을 상위 7비트 및 하위 7비트로 분할 한 후, 상위 7비트의 최상위 비트 방향으로 '0'을 삽입하고, 하위 7비트의 최상위 비트 방향으로 '0'을 삽입하여, 최종적으로 16비트 신호를 생성하여 출력한다.
참고적으로, LFSR 의 순환이동은 암호화 과정과 복호화 과정이 반대 방향으로 이루어지며, 암호화의 슈도 랜덤 값 생성을 위한 암호화 슈도 랜덤값 생성기(242)는 도 8과 같이 오른쪽 순환이동과 배타적 논리합 연산(XOR)으로 구현되며, 복호화를 위한 복호화 슈도 랜덤값 생성기(243)는 도 9와 같이 왼쪽 순환이동과 배타적 논리합 연산(XOR)으로 구현된다.
도 10은 본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치(1)의 동작을 기능 검증한 시뮬레이션 결과이다.
도 10을 참조하면, 소프트웨어로 설계된 HIGHT 코어의 시뮬레이션 결과가 도시되어 있다.
128비트의 비밀키 "ff ee dd cc bb aa 99 88 77 66 55 44 33 22 11 00"와 암호화 과정에서는 평문 "00 11 22 33 44 55 66 77"을 사용하였다. 암호화의 결과로 64비트 암호문 "23 ce 9f 72 e5 43 e6 d8"이 출력되었고, 이를 다시 복호한 결과는 암호과정에서 입력으로 사용된 평문 "00 11 22 33 44 55 66 77"이 출력됨을 확인함으로써 설계된 회로의 암호/복호 기능이 정상적으로 동작함을 확인할 수 있다.
본 발명의 실시예에 따른 블록암호 HIGHT 의 암호화/복호화 장치는 라운드 블록으로 입력된 64비트의 데이터를 상위 32비트 및 하위 32비트로 분할하여 연산할 수 있도록, 반복 사용되는 연산로직을 공유함으로써, 하드웨어의 크기를 감소시켰다.
또한, 화이트닝 키 및 서브 키를 구분하지 않고, 하나의 키 스케줄러에서 34라운드 연산에 제공할 수 있는 라운드 키를 생성하여 회로의 크기를 감소시켰다.
따라서 하드웨어 로직, 게이트(Gate), 래치(LATCH) 등의 사용이 줄어들어 하드웨어를 경량화 시킬 수 있을 뿐만 아니라, 경량화된 하드웨어로 인하여 전력소모도 감소시킬 수 있는 효과가 발생한다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100 : 라운드 연산부 110 : 제1 신호 선택부
120 : 제1 연산부 121 : 제1 연산 처리부
122 : 제2 연산 처리부 130 : 제2 연산부
131 : 제3 연산 처리부 132 : 제4 연산 처리부
140 : 제2 신호 선택부 150 : 레지스터부
200 : 키 스케줄러부 210 : 입력 선택부
220 : 순환 이동부 230 : 키 신호 선택부
240 : 슈도 랜덤값 생성부 241 : 제1 선택부
242 : 암호화 슈도 랜덤값 생성기 243 : 복호화 슈도 랜덤값 생성기
244 : 제2 선택부 245 : 레지스터
246 : 제3 선택부 247 : 출력신호 생성부
250 : 신호 선택부 260 : 모듈로 연산부
300 : 제어부

Claims (6)

  1. 64비트(bit)의 데이터를 블록암호 HIGHT 로 연산하는 블록암호 HIGHT 의 암호화/복호화 장치에 있어서,
    입력된 64비트의 데이터를 하나의 라운드마다 상위 32비트 및 하위 32비트로 분할하여 34 라운드(최초 라운드, 제1 내지 제32 라운드, 최종 라운드)동안 반복해서 연산하되, 최초 라운드와 최종 라운드 연산시에는 입력된 데이터(32비트의 신호 중 최하위 바이트를 제1 바이트, 제1 바이트의 상위 바이트를 제2 바이트, 제2 바이트의 상위 바이트를 제3 바이트, 제3 바이트의 상위 바이트를 제4 바이트)를 제1 바이트와 제2 바이트, 제3 바이트와 제4 바이트 단위로 각각 순환이동하여 연산하되, 제1 라운드부터 제32 라운드까지의 연산시에는 암호화일 경우 하위 32비트 연산시에는 하위 32비트 내에서 바이트 단위로 순환 이동시키며, 상위 32비트 연산시에는 상위 32비트를 하위 32비트의 연산된 어느 하나의 바이트와 함께 바이트 단위로 순환 이동시키며, 복호화일 경우 상위 32비트 연산시에는 상위 32비트 내에서 바이트 단위로 순환 이동시키며, 하위 32비트 연산시에는 하위 32비트를 상위 32비트의 연산된 어느 하나의 바이트와 함께 바이트 단위로 순환 이동시켜서 라운드 연산결과를 산출하는 라운드 연산부;
    마스터 키를 이용하여 복수의 라운드 키를 생성하여, 상기 라운드 연산부에서 수행되는 각 라운드에 라운드 키를 제공하는 키 스케줄러부; 및
    클럭신호 및 모드신호의 제어에 따라 상기 라운드 연산부 및 상기 키 스케줄러부의 동작을 제어하는 제어부;
    를 포함하는 블록암호 HIGHT 의 암호화/복호화 장치.
  2. 제1항에 있어서,
    상기 키 스케줄러부는,
    상기 34 라운드 동안 각각의 라운드 키를 제공하는 것을 특징으로 하는 블록암호 HIGHT 의 암호화/복호화 장치.
  3. 제1항에 있어서,
    상기 라운드 연산부는,
    입력된 64비트의 데이터 중 상위 32비트, 하위 32비트 및 레지스터부에서 선택된 32비트 중 어느 하나를 선택적으로 출력하는 제1 신호 선택부;
    상기 제1 신호 선택부에서 출력된 32비트 단위의 신호를 바이트(Byte) 단위별로 연산함에 있어서, 최하위 바이트인 제1 바이트 및 상기 제1 바이트 상위의 제2 바이트를 라운드 키를 이용하여 연산하는 제1 연산부;
    상기 제1 신호 선택부에서 출력된 32비트 단위의 신호를 바이트(Byte) 단위별로 연산함에 있어서, 상기 제2 바이트 상위의 제3 바이트 및 상기 제3 바이트 상위의 제4 바이트를 라운드 키를 이용하여 연산하는 제2 연산부;
    상기 제1 연산부 및 상기 제2 연산부에서 출력되는 신호를 바이트 단위로 순서를 변경하여 선택적으로 출력하는 제2 신호 선택부; 및
    상기 제2 신호 선택부에서 출력되는 신호를 저장하는 상기 레지스터부;를 포함하는 것을 특징으로 하는 블록암호 HIGHT 의 암호화/복호화 장치.
  4. 제3항에 있어서,
    상기 제1 연산부는,
    제1 라운드 함수를 적용한 상기 제1 바이트와, 입력된 라운드 키를 배타적 논리합 연산(XOR)하는 제1 연산 처리부;
    상기 제1 연산 처리부의 연산결과 및 라운드 키 중 어느 하나를 선택적으로 출력하는 제1 멀티플렉서; 및
    상기 제1 멀티플렉서에서 출력되는 신호와 상기 제2 바이트를 mod-28 덧셈 또는 뺄셈 연산하는 제2 연산 처리부;를 포함하는 것을 특징으로 하는 블록암호 HIGHT 의 암호화/복호화 장치.
  5. 제4항에 있어서,
    상기 제2 연산부는,
    제2 라운드 함수를 적용한 상기 제3 바이트와, 라운드 키를 mod-28 덧셈 연산하는 제3 연산 처리부;
    상기 제3 연산 처리부의 연산결과 및 라운드 키 중 어느 하나를 선택적으로 출력하는 제2 멀티플렉서; 및
    상기 제2 멀티플렉서에서 출력되는 신호와 상기 제4 바이트를 배타적 논리합(XOR) 연산하는 제4 연산 처리부;를 포함하는 것을 특징으로 하는 블록암호 HIGHT 의 암호화/복호화 장치.
  6. 제1항에 있어서,
    상기 키 스케줄러부는,
    입력받은 128 비트의 마스터 키의 상위 64비트 및 하위 64비트 각각에 대해 바이트 단위별로 순환 이동함에 있어서, 암호화 연산시 왼쪽 순환이동을 수행하고 복호화 연산시 오른쪽 순환이동을 수행하는 순환 이동부;
    상기 순환 이동부에서 2바이트 단위로 출력되는 복수의 출력신호를 입력받아 선택적으로 출력하는 키 신호 선택부;
    16비트의 슈도 랜덤값을 생성하는 슈도 랜덤값 생성부;
    상기 슈도 랜덤값 생성부에서 생성된 슈도 랜덤값 또는 영(zero) 값을 선택적으로 출력하는 신호 선택부; 및
    상기 키 신호 선택부에서 출력되는 신호와, 상기 신호 선택부에서 출력되는 신호를 mod-28덧셈 연산하여 최종 키값으로써 출력하는 모듈로 연산부;를 포함하는 것을 특징으로 하는 블록암호 HIGHT 의 암호화/복호화 장치.
KR1020150038646A 2015-03-20 2015-03-20 블록암호 hight 의 암호화/복호화 장치 KR101617694B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150038646A KR101617694B1 (ko) 2015-03-20 2015-03-20 블록암호 hight 의 암호화/복호화 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150038646A KR101617694B1 (ko) 2015-03-20 2015-03-20 블록암호 hight 의 암호화/복호화 장치

Publications (1)

Publication Number Publication Date
KR101617694B1 true KR101617694B1 (ko) 2016-05-03

Family

ID=56022725

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150038646A KR101617694B1 (ko) 2015-03-20 2015-03-20 블록암호 hight 의 암호화/복호화 장치

Country Status (1)

Country Link
KR (1) KR101617694B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210036699A (ko) * 2019-09-26 2021-04-05 국방과학연구소 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210036699A (ko) * 2019-09-26 2021-04-05 국방과학연구소 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램
KR102282363B1 (ko) 2019-09-26 2021-07-27 국방과학연구소 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램

Similar Documents

Publication Publication Date Title
US10320554B1 (en) Differential power analysis resistant encryption and decryption functions
JP4828068B2 (ja) コンピュータで効率的な線形フィードバック・シフト・レジスタ
US4351982A (en) RSA Public-key data encryption system having large random prime number generating microprocessor or the like
EP2852089B1 (en) Data protecting apparatus and method thereof
US20070174374A1 (en) Pseudorandom number generator and pseudorandom number generation program
Karthigaikumar et al. Simulation of image encryption using AES algorithm
US8724804B2 (en) Encryption processing apparatus
JP2628660B2 (ja) 暗号化/復号方法および装置
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
US20010014154A1 (en) Data encrypting/decrypting conversion methods and apparatuses and data communication system adopting the same
US20020159588A1 (en) Cryptography with unconditional security for the internet, commercial intranets, and data storage
EP0996250A2 (en) Efficient block cipher method
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
Jha et al. Proposed encryption algorithm for data security using matrix properties
JP2003516659A (ja) 1の補数暗号コンバイナ
KR101617694B1 (ko) 블록암호 hight 의 암호화/복호화 장치
KR20160099864A (ko) 블록암호 lea 의 암호화/복호화 장치
KR101662291B1 (ko) 경량 블록암호 lea 기반 암호화 및 복호화 장치
Parvathy et al. VLSI implementation of Blowfish algorithm for secure image data transmission
JPH0736672A (ja) 乱数発生器、及びそれを用いた通信システム及びその方法
Dulla et al. A unique message encryption technique based on enhanced blowfish algorithm
Yu et al. An Energy-Efficient Double Ratchet Cryptographic Processor With Backward Secrecy for IoT Devices
Kumar et al. A comparative analysis of encryption algorithms for better utilization
EP1629626A1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
TW201528754A (zh) 時間擾動混沌映射加密解密系統與方法

Legal Events

Date Code Title Description
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190312

Year of fee payment: 4