KR101662291B1 - 경량 블록암호 lea 기반 암호화 및 복호화 장치 - Google Patents

경량 블록암호 lea 기반 암호화 및 복호화 장치 Download PDF

Info

Publication number
KR101662291B1
KR101662291B1 KR1020150032184A KR20150032184A KR101662291B1 KR 101662291 B1 KR101662291 B1 KR 101662291B1 KR 1020150032184 A KR1020150032184 A KR 1020150032184A KR 20150032184 A KR20150032184 A KR 20150032184A KR 101662291 B1 KR101662291 B1 KR 101662291B1
Authority
KR
South Korea
Prior art keywords
unit
key
output
register
shift
Prior art date
Application number
KR1020150032184A
Other languages
English (en)
Other versions
KR20160108861A (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 KR1020150032184A priority Critical patent/KR101662291B1/ko
Publication of KR20160108861A publication Critical patent/KR20160108861A/ko
Application granted granted Critical
Publication of KR101662291B1 publication Critical patent/KR101662291B1/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/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
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

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

Abstract

경량 블록암호(LEA; Lightweight Encryption Algorithm)에 기반한 암호화 및 복호화 겸용 장치가 제공된다. 경량 블록암호 LEA 기반 암호화 및 복호화 장치는 마스터 키 및 평문 또는 암호문을 선택적으로 출력하는 디멀티플렉서; 마스터 키의 길이, 암호화 및 복호화 동작 모드에 따라 마스터 키를 짝수 레지스터부 및 홀수 레지스터부로 분할하여 온-더-플라이(on-the-fly) 방식에 의해 병렬로 라운드 키 쌍을 생성하는 키 스케줄러; 마스터 키의 길이, 동작 모드에 따라, 병렬로 생성된 라운드 키 쌍을 이용하여 평문 또는 암호문의 라운드 변환을 반복적으로 수행하여 암호문 또는 복호문을 출력하는 라운드부; 및 마스터 키의 길이, 동작 모드 및 라운드별 클록에 따른 제어 신호를 생성하는 제어부를 포함한다. 여기서, 키 스케줄러 및 라운드부는 입력단 또는 출력단에 멀티플렉서를 구비한 복수의 기능부 및 적어도 하나의 출력단 멀티플렉서를 포함하며, 멀티플렉서들은 동작 모드별로 복수의 기능부가 동작하도록 제어 신호에 따라 복수의 기능부의 입력 또는 출력을 결정할 수 있다. 이러한 구성에 의해 하드웨어 복잡도(게이트 수)를 저감할 수 있고, 그에 따른 전력 소모를 최소화할 수 있으며, 키 스케줄링에 소요되는 클록 주기를 감소시킬 수 있고, 따라서 암호화 및 복호화 처리 속도를 향상시킬 수 있다.

Description

경량 블록암호 LEA 기반 암호화 및 복호화 장치{Device for encryption and decryption based on Lightweight encryption algorithm LEA}
본 발명은 경량 블록암호 LEA 기반 암호화 및 복호화 장치에 관한 것으로, 특히, 암호화 및 복호화 모드가 마스터 키의 길이에 따라 적용될 수 있는 경량 블록암호 LEA 기반 암호화 및 복호화 장치에 관한 것이다.
현대 사회가 정보화 사회로 발전함에 따라 컴퓨터의 사용과 함께, 이를 활용한 정보 공유가 활발해지고 있다. 다수의 사람들이 함께 정보를 공유함에 따라 인가되지 않은 제3자가 해킹을 할 우려가 증가하고 있는데, 이에 따라 데이터를 안전하게 보관 및 교환할 방법이 요구된다. 널리 알려져 있는 정보보안 기술 중의 하나가 암호이며, 대칭키 암호방식은 암호화와 복호화에 동일한 비밀키를 사용한다.
일예로서, 경량 블록암호 LEA(Lightweight Encryption Algorithm)는 정보통신단체표준 'TTAK.KO-12.0223 - 128비트 블록암호 LEA'로 표준화된 128비트 대칭키 암호 알고리즘이며, 128비트, 192비트, 256비트의 비밀키를 사용할 수 있다. LEA의 라운드 함수는 32비트 단위의 ARX(Addition-Rotation-XOR) 연산만으로 구성되어 이들 연산을 지원하는 범용 32비트 소프트웨어 플랫폼에서 고속으로 동작한다. 또한 라운드 함수 내부의 ARX 연산 배치는 충분한 안전성을 보장함과 동시에 S-box의 사용을 배제하여 경량 구현이 가능하도록 한다.
이와 같은 경량 블록암호 LEA는 마스터 키(또는 비밀키)의 길이에 따라 LEA-128, LEA-192, LEA-256 모드로 동작하며, LEA의 규격은 아래의 표 1과 같다.
동작모드 평문(byte) 비밀키(byte) 라운드 수(Nr)
LEA-128 16 16 24
LEA-192 16 24 28
LEA-256 16 32 32
그러나 이러한 경량 블록암호 LEA을 적용한 암호화 및 복호화 장치는 하드웨어 복잡도의 저감 및 처리 속도에 대한 향상이 요구되고 있다.
KR 1362675 B
상기와 같은 종래 기술의 문제점을 해결하기 위해, 본 발명의 일 실시예는 마스터 키 길이에 따라 암호화 및 복호화 동작 모드에 대하여 하드웨어 자원의 공유 구조를 갖는 경량 블록암호 LEA 기반 암호화 및 복호화 장치를 제공하고자한다.
또한 본 발명의 일 실시예는 처리 속도 향상을 위해 키 스케줄링 구조에서 라운드 키 생성의 병렬 처리 구조를 갖는 경량 블록암호 LEA 기반 암호화 및 복호화 장치를 제공하고자 한다.
위와 같은 과제를 해결하기 위한 본 발명의 일 측면에 따르면, 경량 블록암호 LEA(Lightweight Encryption Algorithm)에 기반한 암호화 및 복호화 겸용 장치가 제공된다. 상기 경량 블록암호 LEA 기반 암호화 및 복호화 장치는 마스터 키 및 평문 또는 암호문을 선택적으로 출력하는 디멀티플렉서; 상기 마스터 키의 길이, 암호화 및 복호화 동작 모드에 따라 상기 마스터 키를 짝수 레지스터부 및 홀수 레지스터부로 분할하여 온-더-플라이(on-the-fly) 방식에 의해 병렬로 라운드 키 쌍을 생성하는 키 스케줄러; 상기 마스터 키의 길이, 상기 동작 모드에 따라, 상기 병렬로 생성된 라운드 키 쌍을 이용하여 상기 평문 또는 암호문의 라운드 변환을 반복적으로 수행하여 암호문 또는 복호문을 출력하는 라운드부; 및 상기 마스터 키의 길이, 상기 동작 모드 및 라운드별 클록에 따른 제어 신호를 생성하는 제어부를 포함한다. 여기서, 상기 키 스케줄러 및 상기 라운드부는 입력단 또는 출력단에 멀티플렉서를 구비한 복수의 기능부 및 적어도 하나의 출력단 멀티플렉서를 포함하며, 상기 멀티플렉서들은 상기 동작 모드별로 상기 복수의 기능부가 동작하도록 상기 제어 신호에 따라 상기 복수의 기능부의 입력 또는 출력을 결정할 수 있다.
일 실시예에서, 상기 라운드부의 복수의 기능부는 레지스터 및 상기 레지스터의 입력을 결정하는 멀티플렉서를 각각 포함하고, 평문 또는 암호문이 상태 변수로서 저장되며, 상기 상태 변수 입력시 클록에 따라 제 1 레지스터부로부터 순차적으로 제 4 레지스터부로 시프트하는 4개의 레지스터부를 포함하는 변수 레지스터부; 제 1 XOR 연산기 및 상기 제 1 XOR 연산기의 입력을 결정하는 멀티플렉서를 포함하고, 상기 라운드 키 쌍 중 제 1 라운드 키를 XOR 연산하는 제 1 XOR 연산부; 제 2 XOR 연산기 및 상기 제 2 XOR 연산기의 입력을 결정하는 멀티플렉서를 포함하고, 상기 라운드 키 쌍 중 제 2 라운드 키를 XOR 연산하는 제 2 XOR 연산부; 상기 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 모듈로 연산기 및 상기 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함하고, 상기 제 1 XOR 연산부의 출력을 모듈로 연산하는 모듈로 연산부; 및 최종 라운드 변환 결과로서, 상기 입력된 평문에 대한 암호문 또는 상기 입력된 암호문에 대한 복호문으로서 상기 상태 변수 중 하나를 출력하는 출력단 멀티플렉서를 포함할 수 있다.
일 실시예에서, 상기 라운드부의 복수의 기능부는 암호화 동작 모드에서, 상기 모듈로 연산부의 출력을 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따라 상기 제 1 레지스터부로 출력하는 멀티플렉서를 포함하는 암호용 시프트 연산부를 더 포함하며, 상기 변수 레지스터부는 상기 상태 변수를 상기 제 1 레지스터부로부터 제 4 레지스터부로 시프트하고, 상기 제 1 XOR 연산부는 상기 제 3 레지스터부의 출력과 상기 제 1 라운드 키를 XOR 연산하며, 상기 제 2 XOR 연산부는 상기 제 4 레지스터부의 출력과 상기 제 2 라운드 키를 XOR 연산하고, 상기 모듈로 연산부는 상기 제 1 XOR 연산부와 상기 2 XOR 연산부의 출력을 모듈로 가산하며, 상기 출력단 멀티플렉서는 상기 최종 라운드 변환 결과로서 상기 제 1 레지스터부의 출력을 상기 암호문으로서 출력할 수 있다.
일 실시예에서, 상기 암호용 시프트 연산부는 상기 모듈로 연산부의 출력에 대하여 우측으로 3비트 순환 시프트하는 제 1 시프트 연산기, 우측으로 5비트 순환 시프트하는 제 2 시프트 연산기, 및 좌측으로 9비트 순환 시프트하는 제 3 시프트 연산기를 포함하고, 상기 라운드별 3개의 클록 주기로 상기 제 1 시프트 연산기 내지 상기 제 3 시프트 연산기의 출력을 순차적으로 상기 제 1 레지스터부로 출력할 수 있다.
일 실시예에서, 상기 암호용 시프트 연산부의 멀티플렉서는 암호화 동작 모드에서, 상기 입력된 평문을 출력하고, 복호화 동작 모드에서, 상기 입력된 암호문을 출력할 수 있다.
일 실시예에서, 상기 라운드부의 복수의 기능부는 복호화 동작 모드에서, 상기 제 1 레지스터부의 출력을 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 하나를 상기 라운드별 클록에 따라 상기 모듈로 연산부로 출력하는 멀티플렉서를 포함하는 복호용 시프트 연산부를 더 포함하고, 상기 변수 레지스터부는 상기 상태 변수를 상기 제 4 레지스터부로부터 상기 제 1 레지스터부로 시프트하며, 상기 제 1 XOR 연산부는 상기 제 4 레지스터부의 출력과 상기 제 1 라운드 키를 XOR 연산하고, 상기 제 2 XOR 연산부는 상기 모듈로 연산부의 출력과 상기 제 2 라운드 키를 XOR 연산하며, 상기 모듈로 연산부는 상기 제 1 XOR 연산부의 출력과 상기 복호용 시프트 연산부의 출력을 모듈로 감산하고, 상기 출력단 멀티플렉서는 상기 최종 라운드 변환 결과로서 상기 제 4 레지스터부의 출력을 상기 복호문으로서 출력할 수 있다.
일 실시예에서, 상기 복호용 시프트 연산부는 상기 제 1 레지스터부의 출력에 대하여 우측으로 9비트 순환 시프트하는 제 4 시프트 연산기, 좌측으로 5비트 순환 시프트하는 제 5 시프트 연산기, 및 좌측으로 3비트 순환 시프트하는 제 6 시프트 연산기를 포함하고, 상기 라운드별 3개의 클록 주기로 상기 제 4 시프트 연산기 내지 상기 제 6 시프트 연산기의 출력을 순차적으로 상기 모듈로 연산부로 출력할 수 있다.
일 실시예에서, 상기 키 스케줄러의 복수의 기능부는 클록에 따라 짝수 번째 마스터 키가 제 1 키 레지스터부로부터 순차적으로 제 4 키 레지스터부로 시프트되는 짝수 레지스터부, 및 홀수 번째 마스터 키가 제 5 키 레지스터부로부터 순차적으로 제 8 키 레지스터부로 시프트되는 홀수 레지스터부를 포함하는 T 레지스터부 - 상기 키 레지스터부 각각은 상기 마스터 키를 저장하는 레지스터 및 상기 레지스터의 입력을 결정하는 멀티플렉서를 각각 포함함- ; 상기 마스터 키의 길이에 따라 상수값이 저장된 상수 레지스터부의 수(n)가 결정되며, 제 1 상수 레지스터부의 출력과, 상기 제 1 상수 레지스터부의 출력을 좌측 1비트 순환 시프트한 출력을 한 쌍의 상수값으로서 출력하고, 라운드 주기로, 상기 상수값을 상기 상수 레지스터부들 사이에서 순차 시프트하며, 클록 주기로, 상기 제 1 상수 레지스터부는 그 출력이 2 비트 순환 시프트되어 재입력되는 상수값 생성부; 상기 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 제 1 모듈로 연산기 및 상기 제 1 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함하고, 상기 상수값 생성부의 제 1 상수값을 모듈로 연산하는 제 1 모듈로 연산부; 상기 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 제 2 모듈로 연산기 및 상기 제 2 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함하고, 상기 상수값 생성부의 제 2 상수값을 모듈로 연산하는 제 2 모듈로 연산부; 상기 제 1 모듈로 연산부의 출력 또는 상기 출력의 좌측으로 비트 순환 시프트된 결과를 선택적으로 상기 짝수 레지스터부로 출력하는 제 1 멀티플렉서; 상기 제 2 모듈로 연산부의 출력 또는 상기 출력의 좌측으로 비트 순환 시프트된 결과를 선택적으로 상기 홀수 레지스터부로 출력하는 제 2 멀티플렉서; 상기 T 레지스터부 중 어느 하나의 키 레지스터부의 출력을 상기 마스터 키의 길이에 따른 상기 제 1 라운드 키로서 출력하는 제 1 출력단 멀티플렉서; 및 상기 T 레지스터부 중 어느 하나의 키 레지스터부의 출력을 상기 마스터 키의 길이에 따른 상기 제 2 라운드 키로서 출력하는 제 2 출력단 멀티플렉서를 포함할 수 있다.
일 실시예에서, 상기 제 1 출력단 멀티플렉서는 상기 제 1 멀티플렉서, 상기 제 1 키 레지스터, 제 3 키 레지스터, 제 6 키 레지스터, 및 제 7 키 레지스터 중 어느 하나의 출력을 상기 라운드 키 쌍의 제 1 라운드 키로서 상기 제어 신호에 따라 출력하고, 상기 제 2 출력단 멀티플렉서는 상기 제 5 키 레지스터 내지 상기 제 7 키 레지스터, 및 상기 제 2 멀티플렉서 중 어느 하나의 출력을 상기 라운드 키 쌍의 제 2 라운드 키로서 상기 제어 신호에 따라 출력할 수 있다.
일 실시예에서, 상기 짝수 레지스터부는 상기 마스터 키를 암호화 동작 모드에서, 상기 제 1 키 레지스터부로부터 제 3 키 레지스터부로, 복호화 동작 모드에서, 상기 제 3 키 레지스터부로부터 제 1 키 레지스터부로 시프트하고, 상기 홀수 레지스터부는 상기 마스터 키를 암호화 동작 모드에서, 상기 제 5 키 레지스터부로부터 제 7 키 레지스터부로, 복호화 동작 모드에서, 상기 제 7 키 레지스터부로부터 제 5 키 레지스터부로 시프트할 수 있다.
일 실시예에서, 제 4 키 레지스터부의 멀티플렉서는 상기 제 1 키 레지스터부와 상기 제 3 키 레지스터부 사이에서 상기 마스터 키가 클록에 따라 시프트하는 방향을 상기 동작 모드 및 상기 마스터 키의 길이에 따라 결정하고, 제 8 키 레지스터부의 멀티플렉서는 상기 제 5 키 레지스터부와 상기 제 7 키 레지스터부 사이에서 상기 마스터 키가 클록에 따라 시프트하는 방향을 상기 동작 모드 및 상기 마스터 키의 길이에 따라 결정할 수 있다.
일 실시예에서, 상기 제 1 키 레지스터부의 멀티플렉서는 상기 마스터 키, 상기 제 1 멀티플렉서, 상기 제 2 키 레지스터부, 및 상기 제 4 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력하고, 상기 제 5 키 레지스터부의 멀티플렉서는 상기 마스터 키, 상기 제 2 멀티플렉서, 상기 제 6 키 레지스터부, 및 상기 제 8 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력할 수 있다.
일 실시예에서, 상기 제 3 키 레지스터부의 멀티플렉서는 상기 제 1 멀티플렉서, 상기 제 1 키 레지스터부, 상기 제 2 키 레지스터부 및 상기 제 4 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력하고, 상기 제 7 키 레지스터부의 멀티플렉서는 상기 제 2 멀티플렉서, 상기 제 5 키 레지스터부, 상기 제 6 키 레지스터부 및 상기 제 8 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력할 수 있다.
일 실시예에서, 상기 키 스케줄러의 복수의 기능부는 상기 암호화 동작 모드에서, 상기 제 1 모듈로 연산부의 출력을 좌측으로 비트 순환 시프트하는 3개의 시프트 연산기, 및 상기 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따라 상기 제 1 멀티플렉서로 출력하는 제 1 암호용 시프트 연산부; 및 상기 제 2 모듈로 연산부의 출력을 비트 순환 시프트하는 3개의 시프트 연산기, 및 상기 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따라 상기 제 2 멀티플렉서로 출력하는 제 2 암호용 시프트 연산부를 더 포함하고, 상기 상수값 생성부는 라운드 주기로, 상기 상수값을 상기 제 1 상수 레지스터부로부터 제 n 상수 레지스터부로 시프트하며, 상기 제 1 모듈로 연산부는 상기 짝수 레지스터부의 제 3 키 레지스터부의 출력과 상기 상수값 생성부의 제 1 상수값을 모듈로 가산하고, 상기 제 2 모듈로 연산부는 상기 홀수 레지스터부의 제 7 키 레지스터부의 출력과 상기 상수값 생성부의 제 2 상수값을 모듈로 가산하며, 상기 제 1 멀티플렉서는 상기 제 1 암호용 시프트 연산부의 출력을 상기 짝수 레지스터부의 제 1 키 레지스터부로 출력하고, 상기 제 2 멀티플렉서는 상기 제 2 암호용 시프트 연산부의 출력을 상기 홀수 레지스터부의 제 5 키 레지스터부로 출력할 수 있다.
일 실시예에서, 상기 제 1 암호용 시프트 연산부는 상기 제 1 모듈로 연산부의 출력에 대하여 좌측으로 13비트 순환 시프트하는 제 7 시프트 연산기, 좌측으로 6비트 순환 시프트하는 제 8 시프트 연산기, 및 좌측으로 1비트 순환 시프트하는 제 9 시프트 연산기를 포함하고, 상기 제 2 암호용 시프트 연산부는 상기 제 2 모듈로 연산부의 출력에 대하여 좌측으로 17비트 순환 시프트하는 제 10 시프트 연산기, 좌측으로 11비트 순환 시프트하는 제 11 시프트 연산기, 및 좌측으로 3비트 순환 시프트하는 제 12 시프트 연산기를 포함하며, 상기 제 1 암호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 7 시프트 연산기 내지 상기 제 9 시프트 연산기의 출력을 순차적으로 상기 제 1 멀티플렉서로 출력하고, 상기 제 2 암호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 10 시프트 연산기 내지 상기 제 12 시프트 연산기의 출력을 순차적으로 상기 제 2 멀티플렉서로 출력할 수 있다.
일 실시예에서, 상기 키 스케줄러의 복수의 기능부는 복호화 동작 모드에서, 상기 짝수 레지스터부의 제 1 키 레지스터부의 출력을 우측으로 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 하나를 상기 라운드별 클록에 따라 상기 제 1 모듈로 연산부로 출력하는 멀티플렉서를 포함하는 제 1 복호용 시프트 연산부; 및 상기 홀수 레지스터부의 제 5 키 레지스터부의 출력을 우측으로 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 하나를 상기 라운드별 클록에 따라 상기 제 2 모듈로 연산부로 출력하는 멀티플렉서를 포함하는 제 2 복호용 시프트 연산부를 더 포함하고, 상기 상수값 생성부는 라운드 주기로, 상기 상수값을 상기 n 상수 레지스터부로부터 상기 제 1 상수 레지스터부로 순차 시프트하며, 상기 제 1 모듈로 연산부는 상기 제 1 복호용 시프트 연산부의 출력과 상기 상수값 생성부의 제 1 상수값을 모듈로 감산하고, 상기 제 2 모듈로 연산부는 상기 제 2 복호용 시프트 연산부의 출력과 상기 상수값 생성부의 제 2 상수값을 모듈로 감산하며, 상기 제 1 멀티플렉서는 상기 제 1 모듈로 연산부의 출력을 상기 짝수 레지스터부의 제 3 키 레지스터부로 출력하고, 상기 제 2 멀티플렉서는 상기 제 2 모듈로 연산부의 출력을 상기 홀수 레지스터부의 제 7 키 레지스터부로 출력할 수 있다.
일 실시예에서, 상기 제 1 복호용 시프트 연산부는 상기 짝수 레지스터부의 제 1 키 레지스터부의 출력에 대하여 우측으로 1비트 순환 시프트하는 제 13 시프트 연산기, 우측으로 6비트 순환 시프트하는 제 14 시프트 연산기, 및 우측으로 13비트 순환 시프트하는 제 15 시프트 연산기를 포함하고, 상기 제 2 복호용 시프트 연산부는 상기 홀수 레지스터부의 제 5 키 레지스터부의 출력에 대하여 우측으로 3비트 순환 시프트하는 제 16 시프트 연산기, 우측으로 11비트 순환 시프트하는 제 17 시프트 연산기, 및 우측으로 17비트 순환 시프트하는 제 18 시프트 연산기를 포함하며, 상기 제 1 복호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 13 시프트 연산기 내지 상기 제 15 시프트 연산기의 출력을 순차적으로 상기 제 1 모듈로 연산부로 출력하고, 상기 제 2 복호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 16 시프트 연산기 내지 상기 제 18 시프트 연산기의 출력을 순차적으로 상기 제 2 모듈로 연산부로 출력할 수 있다.
일 실시예에서, 상기 상수값 생성부는 상기 마스터 키의 길이에 따라 상기 상수 레지스터부의 수를 결정하기 위한 제 1 및 제 2 멀티플렉서를 더 포함할 수 있다.
일 실시예에서, 상기 제 1 상수 레지스터부를 제외한 n-1개의 상수 레지스터부 각각은 좌측 비트 순환 시프트 연산기, 우측 비트 순환 시프트 연산기, 상기 비트 순환 시프트 연산기들의 출력중 하나를 상기 동작 모드에 따라 출력하는 멀티플렉서, 및 상기 멀티플렉서의 출력을 저장하는 레지스터를 포함할 수 있다.
일 실시예에서, 상기 상수값 생성부는, 암호화 동작 모드에서, 상기 제 1 상수 레지스터부의 출력을 우측으로 2비트 순환 시프트하는 제 19 시프트 연산기; 제 2 상수 레지스터부의 출력을 좌측으로 5비트 순환 시프트하는 제 20 시프트 연산기; 및 상기 제 19 시프트 연산기 및 상기 제 20 시프트 연산기의 출력 중 어느 하나를 상기 제어 신호에 따라 출력하는 제 3 멀티플렉서를 더 포함할 수 있다.
일 실시예에서, 상기 상수값 생성부는, 복호화 동작 모드에서, 상기 마스터 키의 길이에 따라 상기 제 n 상수 레지스터부의 출력중 하나를 출력하는 제 4 멀티플렉서; 상기 제 4 멀티플렉서의 출력을 우측으로 1비트 순환 시프트하는 제 21 시프트 연산기; 상기 제 1 상수 레지스터부의 출력을 좌측으로 2비트 순환 시프트하는 제 22 시프트 연산기; 및 상기 제 1 상수 레지스터부의 출력을 우측으로 4비트 순환 시프트하여 상기 제 2 상수 레지스터부로 출력하는 제 23 비트 연산기를 더 포함할 수 있다.
일 실시예에서, 상기 제 1 상수 레지스터부의 출력을 좌측으로 1비트 순환 시프트하는 제 24 비트 연산기; 및 상기 제어 신호에 따라 상기 제 21 시프트 연산기, 상기 제 22 시프트 연산기, 및 상기 제 3 멀티플렉서 중 어느 하나의 출력을 상기 제 1 상수 레지스터부로 출력하는 제 5 멀티플렉서를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치는 하드웨어 자원의 공유를 극대화함으로써 하드웨어 복잡도(게이트 수)를 저감할 수 있고, 그에 따른 전력 소모를 최소화할 수 있다.
또한, 본 발명은 라운드 키 생성의 병렬 처리 구조에 의해 기존의 키 스케줄러를 구비한 암호화 및 복호화 장치에 비하여 키 스케줄링에 소요되는 클록 주기를 감소시킬 수 있고, 따라서 암호화 및 복호화 처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치의 블록도이다.
도 2는 도 1의 라운드부의 상세 블록도이다.
도 3은 도 2의 라운드부에 대한 (a) 암호화 동작 모드 및 (b)복호화 동작 모드의 구성을 나타낸 블록도이다.
도 4는 도 1의 키 스케줄러의 상세 블록도이다.
도 5는 도 4의 T 레지스터부의 상세 블록도이다.
도 6은 도 4의 상수값 생성부의 상세 블록도이다.
도 7은 도 4의 키 스케줄러에 대한 LEA-128 암호화 동작 모드의 구성을 나타낸 블록도이다.
도 8은 도 7에서 마스터 키 입력 및 암호화 키 스케줄링에 대한 스케줄링 과정을 순차적으로 나타낸 블록도이다.
도 9는 도 4의 키 스케줄러에 대한 LEA-128 복호화 동작 모드의 구성을 나타낸 블록도이다.
도 10은 도 4의 키 스케줄러에 대한 LEA-192 암호화 동작 모드의 구성을 나타낸 블록도이다.
도 11은 도 4의 키 스케줄러에 대한 LEA-192 복호화 동작 모드의 구성을 나타낸 블록도이다.
도 12는 도 4의 키 스케줄러에 대한 LEA-256 암호화 동작 모드의 구성을 나타낸 블록도이다.
도 13은 도 4의 키 스케줄러에 대한 LEA-256 복호화 동작 모드의 구성을 나타낸 블록도이다.
도 14는 LEA-128 모드에서, (a) 종래의 장치의 암호화 모드 및 (b) 복호화 모드, 및 (c) 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치에 대한 키 스케줄링과 라운드 연산 동작을 하기 위한 타이밍도이다.
도 15는 LEA-192 모드에서, (a) 종래의 장치, 및 (b) 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치에 대한 키 스케줄링과 라운드 연산 동작을 하기 위한 타이밍도이다.
도 16은 LEA-256 모드에서, (a) 종래의 장치의 암호화 모드 및 (b) 복호화 모드, 및 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치에 대한 (c) 암호화 모드, 및 (d) 복호화 모드 키 스케줄링과 라운드 연산 동작을 하기 위한 타이밍도이다.
이하, 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 동일 또는 유사한 구성요소에 대해서는 동일한 참조부호를 붙였다.
본 발명은 블록 암호 알고리즘 LEA의 3종의 마스터 키의 길이, 예를 들면, 128/192/256비트를 지원하는 LEA-128/192/256 모드의 암호화 및 복호화 장치에 관한 것으로, 3종의 마스터 키 길이에 대한 암호화 및 복호화 동작 모드에 대한 하드웨어 자원의 공유를 극대화하여 하드웨어 복잡도(게이트 수)와 전력소모를 최소화할 수 있는 경량 블록암호 LEA 기반 암호화 및 복호화 장치에 관한 것이다. 이러한 경량 블록암호 LEA 기반 암호화 및 복호화 장치(100)는 IoT 및 모바일기기 보안용 LEA-128/192/256 암호/복호 프로세서에 적용할 수 있다.
본 명세서에서, "상태 변수"는 암호화, 복호화 또는 키 스케줄링 수행 중에 레지스터에 저장되는 중간값이고, "라운드 키"는 키 스케줄링을 통해 생성되는 값으로서 암호화와 복호화 라운드 연산에 적용되는 것이며, "라운드 함수"는 암호화 또는 복호화 함수에서 반복 수행되는 함수이고, "복호화 동작 모드"는 마스터 키(또는 비밀키)를 이용하여 암호문을 평문으로 바꾸는 일련의 변환으로서 복호화 라운드 함수와 복호화 키 스케줄러를 포함하는 복호화 함수로 구성되며, "복호화 함수"는 비밀키와 암호문을 입력받아 평문을 출력하는 함수이고, "블록"은 고정된 길이의 비트 열로서 LEA에서 블록 크기는 128비트이다. 또한, "블록암호"는 비밀키를 이용하여 고정된 길이의 데이터 블록을 암호화하거나 복호화 하는 알고리즘을 의미하며, "비밀키"는 암호화 또는 복호화에 사용되는 비밀 정보(키 스케줄링의 입력)이며, "암호문"은 평문으로부터 암호화된 정보이고, "암호화 동작 모드"는 비밀키를 이용하여 평문을 암호문으로 바꾸는 일련의 변환으로서 암호화 라운드 함수와 암호화 키 스케줄러를 포함하는 암호화 함수로 구성된다. 또한, "암호화 함수"는 비밀키와 평문을 입력받아 암호문을 출력하는 함수이고, "키 스케줄링"은 비밀키를 입력받아 라운드 키를 생성하는 과정이며, "평문"은 암호화되지 않은 원래의 정보를 의미한다.
본 발명은 암호화 및 복호화 동작 모드에 대한 하드웨어 자원의 공유를 극대화하기 위하여 블록 암호 LEA 기반으로 구성되며, 크게 암호화 함수 및 복호화 함수로 이루어지며, 이들은 각각 라운드 함수 및 키 스케줄링으로 구성된다.
LEA 기반 암호화 과정은 k비트의 비밀키(K)로부터 Nr개의 192비트 암호화 라운드 키
Figure 112015022612890-pat00001
를 생성하는 키 스케줄 함수
Figure 112015022612890-pat00002
와 라운드 키
Figure 112015022612890-pat00003
및 라운드 함수 Roundenc를 이용하여 128비트 평문 P를 128비트 암호문 C로 변환하는 암호화 함수 Encrypt로 구성된다. 암호화 함수의 슈도 코드는 하기의 표 2와 같다. LEA의 암호화 함수 Encrypt는 k비트의 비밀키 K에 대해 키 스케줄 함수
Figure 112015022612890-pat00004
를 통해 생성된 Nr개의 192비트 라운드 키
Figure 112015022612890-pat00005
와 128비트의 평문
Figure 112015022612890-pat00006
를 입력받아 표 2의 알고리즘을 수행하여 128비트 암호문
Figure 112015022612890-pat00007
를 출력한다.
Figure 112015022612890-pat00008
LEA 기반 복호화 과정은 k비트의 비밀키 K로부터 Nr개의 192비트 복호화 라운드 키
Figure 112015022612890-pat00009
를 생성하는 키 스케줄 함수
Figure 112015022612890-pat00010
와 라운드 키
Figure 112015022612890-pat00011
및 라운드 함수 Rounddec를 이용하여 128비트 암호문 C를 128비트 평문 P로 변환하는 복호화 함수 Decrypt로 구성된다. 복호화 함수의 슈도 코드는 하기의 표 3과 같다. LEA의 복호화 함수 Decrypt는 k비트의 비밀키 K에 대해 키 스케줄 함수
Figure 112015022612890-pat00012
를 통해 생성된 Nr개의 192비트 라운드 키
Figure 112015022612890-pat00013
와 128비트 암호문
Figure 112015022612890-pat00014
를 입력받아 표 3의 알고리즘을 수행하여 128비트 평문
Figure 112015022612890-pat00015
를 출력한다.
Figure 112015022612890-pat00016
이와 같은 LEA 기반의 라운드 함수는 ARX 연산을 기반으로 한 Type-3 Feistel 유사 구조를 가지며, 192비트 라운드 키를 입력받아 암호화/복호화 연산을 수행한다. 암호화 과정인지 복호화 과정인지에 따라 ARX 연산의 순서가 다르게 적용되며, 복호화 과정의 연산은 암호화 과정의 역연산 과정이다. 라운드 함수는 키 길이에 무관하게 동일한 연산을 수행하며, 키 길이에 따라 키 스케줄러에서 출력되는 192비트 라운드 키값만 달라진다.
표 2의 암호화 알고리즘에서
Figure 112015022612890-pat00017
번째 라운드의 라운드 함수 Roundenc는 128비트의 내부 상태 변수
Figure 112015022612890-pat00018
와 192비트의 라운드 키
Figure 112015022612890-pat00019
로부터 하기의 표 4의 알고리즘을 수행하여 새로운 128비트의 내부 상태 변수
Figure 112015022612890-pat00020
을 생성한다. 표 4는 암호화 과정의 i번째 라운드 함수의 슈도 코드이며, 표 5는 암호화 과정의 i번째 라운드 함수를 도식화한 것이다.
연산이 수행되지 않은 상태 변수 Xi[0]는 Xi +1[3]이 되며, i+1번째 라운드의 나머지 상태 변수 Xi +1[0], Xi +1[1], Xi + 1[2]는 각각 다음과 같은 연산을 통해 얻어진다. 이웃한 32비트 상태 변수 쌍 (Xi[0],Xi[1]), (Xi[1],Xi[2]), (Xi[2],Xi[3])와 키 스케줄링에 의해 생성된 라운드 키
Figure 112015022612890-pat00021
Figure 112015022612890-pat00022
로 쌍을 이루어 XOR 연산이 수행되고,
Figure 112015022612890-pat00023
XOR 연산 결과값에 대한 32비트 모듈로(modulo) 가산을 한 후, 각각 비트 순환 시프트 연산이 이루어진다. 이때, i+1번째 라운드의 상태 변수는 i번째 라운드 상태 변수의 연산 결과값이 32비트 단위로 순환 시프트된 결과가 된다.
Figure 112015022612890-pat00024
Figure 112015022612890-pat00025
표 3의 복호화 알고리즘에서
Figure 112015022612890-pat00026
번째 라운드의 라운드 함수 Rounddec는 128비트의 내부 상태 변수
Figure 112015022612890-pat00027
와 192비트의 라운드 키
Figure 112015022612890-pat00028
로부터 표 6의 알고리즘을 수행하여 새로운 128비트의 상태 변수
Figure 112015022612890-pat00029
을 생성한다. 표 6은 복호화 과정의 i번째 라운드 함수의 슈도 코드이며, 표 7은 복호화 과정의 i번째 라운드 함수를 도식화한 것이다.
복호화 과정의 연산은 암호화 과정의 역연산으로 이루어진다. 순환 시프트는 암호화 과정과 반대 방향으로 이루어지며, 32비트 모듈로 가산은 감산으로 바뀌며, XOR 연산은 그 자체가 역이므로, XOR 연산으로 이루어진다.
연산이 수행되지 않은 상태 변수 Xi[3]은 Xi +1[0]이 되며, i+1번째 라운드의 나머지 상태 변수 Xi +1[1], Xi +1[2], Xi +1[3]은 각각 다음과 같은 연산을 통해 얻어진다. Xi[0], Xi[1], Xi[2]가 각각 비트 순환 시프트(
Figure 112015022612890-pat00030
)되고, 그 결과값과 복호화 라운드 키
Figure 112015022612890-pat00031
Figure 112015022612890-pat00032
로 쌍을 이루어 XOR 연산된다. 그 결과값은 다시
Figure 112015022612890-pat00033
로 쌍을 이루어 32비트 모듈로 감산되고, 각각
Figure 112015022612890-pat00034
와 쌍을 이루어 다시 XOR 연산이 이루어진다.
Figure 112015022612890-pat00035
Figure 112015022612890-pat00036
LEA 기반 키 스케줄 함수는 AR(Addition-Rotation) 연산, 32비트 모듈로 연산에 사용되는 상수를 생성하는 상수생성부로 구성된다. 입력되는 비밀키의 길이에 따라 상수 생성부에서 생성되는 상수의 개수가 달라지며, 암호화 과정인지 복호화 과정인지에 따라 AR 연산의 순서가 반대로 적용된다. 키 스케줄 함수에서 사용되는 32비트의 상수 는 다음과 같이 정의된다.
Figure 112015022612890-pat00037
암호화 키 스케줄링은 비밀키 K로부터 암호화 과정에 필요한 Nr개의 192비트 암호화 라운드 키
Figure 112015022612890-pat00038
를 생성하는 과정이며, 입력된 비밀키와 상수를 32비트 모듈로 가산한 후, 비트 순환 시프트를 통해 이루어진다.
128비트 비밀키 K=(K[0], K[1],…, K[15])에 대해 LEA-128의 암호화를 위한 키 스케줄 함수
Figure 112015022612890-pat00039
는 표 8의 키 스케줄링 알고리즘에 의해 24개의 192비트 암호화 라운드 키
Figure 112015022612890-pat00040
를 생성한다. 이 과정에서 128비트 상태 변수 T=(T[0], T[1], T[2], T[3])가 사용된다.
Figure 112015022612890-pat00041
상태 변수 T[0], T[1], T[2], T[3]은 각각 32비트 상수 δ[i mod 4]를 각각 비트 좌측 순환 시프트(
Figure 112015022612890-pat00042
) 한 후, 상태 변수 T[0], T[1], T[2], T[3]과 32비트 모듈로 가산한다.
그 결과를 각각 비트 좌측 순환 시프트(
Figure 112015022612890-pat00043
) 한 값을 갖는다. 이때, 32비트 상수는 δ[i mod 4]이므로, δ[0], δ[1], δ[2], δ[3]이 라운드마다 순서대로 번갈아 사용된다. 최종적으로, 매 라운드마다 키 스케줄 함수에서 생성되는 192비트 라운드 키는(T[0], T[1], T[2], T[1], T[3], T[1]) 이며, T[1]이 3번 반복 사용된다.
192비트 비밀키 K=(K[0], K[1],…, K[23])에 대해 LEA-192의 암호화를 위한 키 스케줄 함수
Figure 112015022612890-pat00044
는 표 9의 키 스케줄링 알고리즘에 의해 28개의 192비트 암호화 라운드 키
Figure 112015022612890-pat00045
를 생성한다. 이 과정에서 192비트 상태 변수 T=(T[0], T[1],…, T[5])가 사용된다.
상태 변수 T[0], T[1],…, T[5]는 각각 32비트 상수 δ[i mod 6]을 각각 비트 좌측 순환 시프트(
Figure 112015022612890-pat00046
한 후, 상태 변수 T[0], T[1],…, T[5]와 32비트 모듈로 가산한다.
그 결과를 각각 비트 좌측 순환 시프트(
Figure 112015022612890-pat00047
) 한 값을 갖는다. 이때, 32비트 상수는 δ[i mod 6]이므로 δ[0], δ[1], δ[2], δ[3], δ[4], δ[5]가 라운드마다 순서대로 번갈아 사용된다. 최종적으로, 매 라운드마다 키 스케줄 함수에서 생성되어 출력되는 192비트 라운드 키는(T[0], T[1], T[2], T[3], T[4], T[5])이며, 상태 변수 값이 모두 사용된다.
Figure 112015022612890-pat00048
256비트 비밀키 K=(K[0], K[1],…, K[31])에 대해 LEA-256의 암호화를 위한 키 스케줄 함수
Figure 112015022612890-pat00049
는 표 10의 키 스케줄링 알고리즘에 의해 32개의 192비트 암호화 라운드 키
Figure 112015022612890-pat00050
를 생성한다. 이 과정에서 256비트 상태 변수 T=(T[0], T[1],…, T[7])가 사용된다.
상태 변수 T[(6i) mod 8], T[(6i+1) mod 8],…, T[(6i+5) mod 8]은 각각 32비트 상수 δ[i mod 8]을 각각 비트 좌측 순환 시프트(
Figure 112015022612890-pat00051
)한 후, 32비트 모듈로 가산한다.
그 결과를 각각 비트 좌측 순환 시프트(
Figure 112015022612890-pat00052
) 한 값을 갖는다. 이때, 32비트 상수는 δ[i mod 8]이므로 δ[0], δ[1], δ[2], δ[3], δ[4], δ[5], δ[6], δ[7]이 라운드마다 순서대로 번갈아 사용된다. 최종적으로, 매 라운드마다 키 스케줄 함수에서 생성되어 출력되는 192비트 라운드 키는
Figure 112015022612890-pat00053
의 쌍으로 순서대로 번갈아 사용되며, 이는 256비트의 내부 상태 변수 중 192비트의 내부 상태 변수만 선택적으로 사용됨을 의미한다.
Figure 112015022612890-pat00054
복호화 라운드 키는
Figure 112015022612890-pat00055
인 관계를 제외하면 암호화 라운드 키와 동일한 방법으로 생성되며, 동일한 상수가 사용된다.
128비트 비밀키 K=(K[0], K[1],…, K[15])에 대해 LEA-128의 복호화를 위한 키 스케줄 함수
Figure 112015022612890-pat00056
는 표 11의 키 스케줄링 알고리즘에 의해 24개의 192비트 복호화 라운드 키
Figure 112015022612890-pat00057
를 생성한다. 이 과정에서 128비트 상태 변수 T=(T[0], T[1], T[2], T[3])이 사용된다. 내부 상태 변수는 상술한 LEA-128 암호화 키 스케줄 함수와 동일한 방법으로 연산되며, 단지 i번째 라운드일 때 출력되는 상태 변수 (T[0], T[1], T[2], T[1], T[3], T[1])가 23-i번째 라운드 키
Figure 112015022612890-pat00058
라는 점만 다르다.
Figure 112015022612890-pat00059
192비트 비밀키 K=(K[0], K[1],…, K[23])에 대해 LEA-192의 복호화를 위한 키 스케줄 함수
Figure 112015022612890-pat00060
는 표 12의 키 스케줄링 알고리즘에 의해 28개의 192비트 복호화 라운드 키
Figure 112015022612890-pat00061
를 생성한다. 이 과정에서 192비트 내부 상태 변수 T=(T[0], T[1],…, T[5])가 사용된다. 내부 상태 변수는 상술한 LEA-192 암호화 키 스케줄 함수와 동일한 방법으로 연산되며, 단지 i번째 라운드일 때 출력되는 상태 변수 T=(T[0], T[1],…, T[5])가 27-i번째 라운드 키
Figure 112015022612890-pat00062
라는 점만 다르다.
Figure 112015022612890-pat00063
256비트 비밀키 K=(K[0], K[1],…, K[31])에 대해 LEA-256의 복호화를 위한 키 스케줄 함수
Figure 112015022612890-pat00064
은 표 13의 키 스케줄링 알고리즘에 의해 32개의 192비트 복호화 라운드 키
Figure 112015022612890-pat00065
를 생성한다. 이 과정에서 256비트 내부 상태 변수 T=(T[0], T[1],…, T[7])가 사용된다. 상태 변수는 상술한 LEA-256 암호화 키 스케줄 함수와 동일한 방법으로 연산되며, 단지 i번째 라운드일 때 출력되는 상태 변수 T=(T[0], T[1],…, T[7])가 31-i번째 라운드 키
Figure 112015022612890-pat00066
라는 점만 다르다.
Figure 112015022612890-pat00067
상기와 같은 LEA 기반 암호화 및 복호화에서 마스터 키의 길이에 따른 라운드 함수 및 키 스케줄링 함수를 하드웨어 자원의 공유하도록 구성한 본 발명의 실시예를 설명한다.
도 1은 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치의 블록도이다. 이하에서는 도면을 참조하여 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치를 보다 상세히 설명하도록 한다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치(100)는 디멀티플렉서(102), 라운드부(110), 키 스케줄러(120), 및 제어부(130)를 포함한다.
디멀티플렉서(102)는 데이터 입력 핀(data_in)을 통해 입력되는 마스터 키(또는 비밀키) 및 평문 또는 암호문을 제어부(130)의 제어 신호에 따라 선택적으로 라운드부(110) 또는 키 스케줄러(120)로 출력한다.
라운드부(110)는 입력되는 평문 또는 암호문의 데이터를 32비트 단위로 처리하며, 마스터 키의 길이에 따라 24/28/32번의 반복적인 라운드 변환을 통하여 입력된 평문 또는 암호문을 암호화 및 복호화를 수행할 수 있다. 여기서, 라운드부(110)는 키 스케줄러(120)로부터 병렬로 생성된 라운드 키 쌍(rk0, rk1)을 이용하여 입력된 평문 또는 암호문의 라운드 변환을 반복적으로 수행하여 암호문 또는 복호문을 출력할 수 있다.
키 스케줄러(120)는 라운드부(110)의 라운드 연산에 사용되는 192비트의 라운드 키 쌍(rk0, rk1)을 온-더-플라이(on-the-fly) 방식에 의해 병렬로 생성할 수 있다. 여기서, 키 스케줄러(120)는 마스터 키의 길이, 암호화 및 복호화 동작 모드에 따라 마스터 키를 짝수 레지스터부 및 홀수 레지스터부로 분할하여 라운드 키 쌍(rk0, rk1)을 생성할 수 있다.
제어부(130)는 마스터 키의 길이, 암호화 및 복호화 동작 모드, 및 라운드별 클록에 따른 제어 신호를 생성할 수 있다. 여기서, 제어부(130)는 마스터 키의 길이(k_mode)에 따라 라운드부(110) 및 키 스케줄러(120)가 LEA-128 모드, LEA-192 모드, 및 LEA-256 모드로 동작하도록 제어하는 신호를 생성하고, 암호화 및 복호화 동작 모드(mode)에 따라 라운드부(110) 및 키 스케줄러(120)가 암호화 동작 및 복호화 동작하도록 제어하는 신호를 생성하며, 반복되는 라운드 별 실행시, 클록 주기에 따라 라운드부(110) 및 키 스케줄러(120)가 미리 정해진 절차로 동작하도록 제어하는 신호를 생성할 수 있다. 이러한 제어부(130)는 경량 블록암호 LEA 기반 암호화 및 복호화 장치(100) 전체의 동작을 제어할 수 있다.
여기서, 라운드부(110) 및 키 스케줄러(120)는 입력단 또는 출력단에 멀티플렉서를 구비한 복수의 기능부 및 적어도 하나의 출력단 멀티플렉서를 포함하며, 라운드부(110) 및 키 스케줄러(120)에 포함된 멀티플렉서들은 동작 모드별로 복수의 기능부가 동작하도록 제어부(130)의 제어 신호에 따라 복수의 기능부의 입력 또는 출력을 결정할 수 있다.
이와 같은 구성에 의해 라운드부(110) 및 키 스케줄러(120) 내부의 복수의 기능부는 암호화 및 복호화 동작 모드, 및 마스터 키의 길이에 따른 동작 모드에서 공통으로 사용됨으로써, 해당 하드웨어 자원이 공유될 수 있다. 여기서, 암호화 모드 및 복호화 모드는 입력 신호 mode에 의해 정해지며, 예를 들면, mode=0일 때 암호화, mode=1일 때 복호화가 수행된다. 또한, 마스터 키의 길이에 따른 동작 모드는 2비트 입력 신호 k_mode에 의해 결정되며, 예를 들면, k_mode=0일 때 LEA-128, k_mode=1일 때 LEA-192, k_mode=2일 때 LEA-256으로 동작할 수 있다.
이하, 도 2 및 도 3을 참조하여 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치(100)의 라운드부(110)를 상세하게 설명한다.
도 2는 도 1의 라운드부의 상세 블록도이고, 도 3은 도 2의 라운드부에 대한 (a) 암호화 동작 모드 및 (b)복호화 동작 모드의 구성을 나타낸 블록도이다. 도 2에서, 굵은 실선은 암호화 동작 모드, 점선은 복호화 동작 모드에 대한 구성을 나타낸다.
라운드부(110)는 복수의 기능부로서 변수 레지스터부(111), 제 1 XOR 연산부(112), 복호용 시프트 연산부(113), 모듈로 연산부(114), 암호용 시프트 연산부(115), 제 2 XOR 연산부(116), 및 출력단 멀티플렉서(117)를 포함한다. 이러한 라운드부(110)는 마스터 키의 길이와 상관없이 동일한 구조로 동작하고, 암호화 및 복호화 동작 모드에 의해 서로 상이한 구조로 동작할 수 있다.
변수 레지스터부(111)는 입력되는 평문 또는 암호문이 내부 상태 변수로서 저장되며, 4개의 32비트의 내부 상태 변수를 각각 저장하는 4개의 레지스터부(111a~111d)를 포함한다. 각 레지스터부(111a~111d)는 레지스터(X0~X3) 및 레지스터(X0~X3)의 입력을 결정하는 멀티플렉서(MUX)를 포함한다. 이러한 변수 레지스터부(111)는 상태 변수 입력시 클록에 따라 각 상태 변수를 제 1 레지스터부(111a)로부터 순차적으로 제 4 레지스터부(111d)로 시프트할 수 있다. 즉, 각 레지스터부(111a~111d)는 그 내부의 멀티플렉서(MUX)에 대한 출력을 제어부(130)의 제어 신호에 따라 결정함으로써, 암호화 및 복호화 동작 모드에 따른 제어 신호에 의해 시프트 방향을 결정할 수 있다. 예를 들면, 변수 레지스터부(111)는 암호화 동작 모드에서, 상태 변수를 제 1 레지스터부(111a)로부터 제 4 레지스터부(111d)로 순차적으로 시프트하고, 복호화 동작 모드에서, 상태 변수를 제 4 레지스터부(111d)로부터 제 1 레지스터부(111a)로 순차적으로 시프트할 수 있다.
제 1 XOR 연산부(112)는 제 1 XOR 연산기 및 제어 신호에 따라 제 1 XOR 연산기의 입력을 결정하는 멀티플렉서를 포함할 수 있다. 여기서, 제 1 XOR 연산부(112)의 멀티플렉서는 암호화 동작 모드에서, 제 3 레지스터부(111c)의 출력을, 복호화 동작 모드에서 제 4 레지스터부(111d)의 출력을 제어 신호에 따라 제 1 XOR 연산기로 출력할 수 있다. 이러한 제 1 XOR 연산부(112)는 암호화 동작 모드에서, 키 스케줄러(120)로부터 입력되는 라운드 키 쌍 중 제 1 라운드 키(rk0)와 제 3 레지스터부(111c)의 출력을 XOR 연산하며, 복호화 동작 모드에서, 제 1 라운드 키(rk0)와 제 4 레지스터부(111d)의 출력을 XOR 연산할 수 있다.
복호용 시프트 연산부(113)는 제 1 레지스터부(111a)의 출력을 비트 순환 시프트하는 3개의 시프트 연산기 및 3개의 시프트 연산기의 출력 중 하나를 라운드별 클록에 따른 제어 신호에 의해 모듈로 연산부(114)로 출력하는 멀티플렉서를 포함한다. 여기서, 3개의 시프트 연산기는 제 1 레지스터부(111a)의 출력에 대하여 우측으로 9비트 순환 시프트하는 제 4 시프트 연산기(ROR9), 좌측으로 5비트 순환 시프트하는 제 5 시프트 연산기(ROL5), 및 좌측으로 3비트 순환 시프트하는 제 6 시프트 연산기(ROL3)를 포함할 수 있다. 이러한 복호용 시프트 연산부(113)의 멀티플렉서는 제어 신호에 따라 라운드별 3개의 클록 주기로 제 4 시프트 연산기(ROR9) 내지 상기 제 6 시프트 연산기(ROL3)의 출력을 순차적으로 모듈로 연산부(114)로 출력할 수 있다.
모듈로 연산부(114)는 암호화 및 복호화 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 모듈로 연산기 및 제어 신호에 따라 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함한다. 여기서, 모듈로 연산부(114)의 멀티플렉서는 암호화 동작 모드에서, 제 2 XOR 연산부(116)의 출력을, 복호화 동작 모드에서, 복호용 시프트 연산부(113)의 출력을 제어 신호에 따라 모듈로 연산기로 출력할 수 있다. 이러한 모듈로 연산부(114)는 암호화 동작 모드에서, 제 1 XOR 연산부(112)와 제 2 XOR 연산부(116)의 출력을 모듈로 가산하며, 복호화 동작 모드에서, 제 1 XOR 연산부(112)의 출력과 복호용 시프트 연산부(113)의 출력을 모듈로 감산할 수 있다.
암호용 시프트 연산부(115)는 모듈로 연산부(114)의 출력을 비트 순환 시프트하는 3개의 시프트 연산기 및 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따른 제어 신호에 의해 제 1 레지스터부(111a)로 출력하는 멀티플렉서를 포함한다. 여기서, 3개의 시프트 연산기는 모듈로 연산부(114)의 출력에 대하여 우측으로 3비트 순환 시프트하는 제 1 시프트 연산기(ROR3), 우측으로 5비트 순환 시프트하는 제 2 시프트 연산기(ROR5), 및 좌측으로 9비트 순환 시프트하는 제 3 시프트 연산기(ROL9)를 포함한다. 이러한 암호용 시프트 연산부(115)는 제어 신호에 따라 라운드별 3개의 클록 주기로 제 1 시프트 연산기(ROR3) 내지 제 3 시프트 연산기(ROL9)의 출력을 순차적으로 제 1 레지스터부(111a)로 출력할 수 있다. 또한, 암호용 시프트 연산부(115)의 멀티플렉서는 암호화 동작 모드에서, 입력된 평문을 출력하고, 복호화 동작 모드에서, 입력된 암호문을 출력할 수 있다.
제 2 XOR 연산부(116)는 제 2 XOR 연산기 및 제어 신호에 따라 제 2 XOR 연산기의 입력을 결정하는 멀티플렉서를 포함한다. 여기서, 제 2 XOR 연산부(116)의 멀티플렉서는 암호화 동작 모드에서, 제 4 레지스터부(111d)의 출력을, 복호화 동작 모드에서, 모듈로 연산부(114)의 출력을 제어 신호에 따라 제 2 XOR 연산기로 출력할 수 있다. 이러한 제 2 XOR 연산부(116)는 암호화 동작 모드에서, 제 4 레지스터부(111d)의 출력과 제 2 라운드 키(rk1)를 XOR 연산하고, 복호화 동작 모드에서, 모듈로 연산부(114)의 출력과 제 2 라운드 키(rk1)를 XOR 연산할 수 있다.
출력단 멀티플렉서(117)는 최종 라운드 변환 결과로서, 입력된 평문에 대한 암호문 또는 입력된 암호문에 대한 복호문으로서 변수 레지스터부(111)의 상태 변수 중 하나를 제어 신호에 따라 출력할 수 있다. 예를 들면, 출력단 멀티플렉서(117)는 제어 신호에 따라 암호화 동작 모드에서, 최종 라운드 변환 결과로서 제 1 레지스터부(111a)의 출력을 입력된 평문에 대한 암호문으로서 출력하고, 복호화 동작 모드에서, 최종 라운드 변환 결과로서 제 4 레지스터부(111d)의 출력을 입력된 암호문에 대한 복호문으로서 출력할 수 있다.
이와 같이 구성된 라운드부(110)는 데이터 포트(Text_in)를 통해 입력되는 128비트의 평문 또는 암호문을 32비트(4바이트) 단위로 4클록에 걸쳐 내부 상태 변수 레지스터(X0~X3)에 저장한다. 128비트 평문 또는 암호문의 최상위 32비트가 제 1 레지스터(X0)에 입력되고, 제어 신호에 따라 매 클록마다 32비트씩 순차적으로 제 1 레지스터(X0)에 입력되어 X0→X1→X2→X3으로 시프트한다. 따라서 라운드부(110)는 4클록이 경과한 후에는 128비트의 평문 또는 암호문을 32비트 단위로 나누어져 4개의 레지스터(X0~X3)에 저장한다.
이와 같이 128비트의 평문 또는 암호문의 입력이 완료된 후, 라운드부(110)는 mode 신호에 의한 제어 신호에 따라 연산을 수행한다. 예를 들면, 라운드부(110)는 제어 신호에 따라 mode=0이면, 암호화 라운드 연산을 수행하고, mode=1이면, 복호화 라운드 연산을 수행할 수 있다. 또한, 라운드부(110)는 마스터 키 길이에 따라서 라운드가 24/28/32회 반복되며, 마지막 라운드 연산이 종료되면, 암호문 또는 복호문을 출력할 수 있다.
이러한 라운드부(110)는 레지스터(X0~X3), XOR 연산기들, 모듈로 연산기 등이 암호화 동작 및 복호화 동작에 공유되어 하드웨어 자원을 최소화할 수 있다.
보다 구체적으로 설명하면, 도 3(a)에 도시된 바와 같이, 라운드부(110)의 암호화 라운드 연산은 마스터 키의 길이(128/192/256비트)에 따라 각각 3/3/4 클록 주기가 소요된다. 먼저, 제 1 XOR 연산부(112)는 키 스케줄러(120)에서 생성된 제 1 라운드 키(rk0)와 제 3 레지스터(X2)의 출력을 XOR 연산하고, 제 2 XOR 연산부(116)는 제 2 라운드 키(rk1)와 제 4레지스터(X3)의 출력을 XOR 연산한다.
다음으로, 모듈로 연산부(114)는 제 1 XOR 연산부(112)와 제 2 XOR 연산부(116)의 출력을 32비트 모듈로 가산하고, 모듈로 연산 결과를 각 라운드 연산의 클록 순서에 따라 다음과 같이 순환 시프트하도록 암호용 시프트 연산부(115)의 멀티플렉서는 출력을 결정한다. 즉, 암호용 시프트 연산부(115)의 멀티플렉서는 첫 번째 클록에서 모듈로 연산기의 결과를 우측으로 3비트 순환 시프트한 제 1 시프트 연산기(ROR3), 두 번째 클록에서 모듈로 연산기의 결과를 우측으로 5비트 순환 시프트한 제 2 시프트 연산기(ROR5), 세 번째 클록에서 모듈로 연산기의 결과를 좌측으로 9비트 순환 시프트한 제 3 시프트 연산기(ROL9)의 출력을 제 1 레지스터(X0)로 출력한다.
이와 같이 모듈로 연산 결과의 순환 시프트된 결과값을 다시 제 1 레지스터(X0)에 저장하며, 동시에 각 레지스터에 저장되어 있던 값은 X0→X1→X2→X3으로 시프트한다. 이와 같은 암호화 라운드 연산은 3클록 주기로 반복되어 한 라운드 연산이 완료된다. 결과적으로 레지스터(X0~X3)에 저장된 값은 (X2,X3), (X1,X2), (X0,X1)이 쌍을 이루어 순차적으로 연산이 적용된다. 마스터 키의 길이에 따라 라운드 연산이 24/28/32회 반복 수행되며, 마지막 라운드 연산이 종료되면, 입력된 평문에 대한 암호문이 Text_out 포트로 출력된다.
도 3(b)를 참조하면, 라운드부(110)는 복호화 동작 모드에서, 라운드부(110)의 복호화 라운드 연산은 암호화 라운드 연산과 반대의 순서로 라운드 키가 사용된다. 암호화 라운드 연산에서 XOR 연산 →모듈로 가산→비트 순환 시프트(Rotation)의 순서로 이루어진 연산도 비트 순환 시프트→ 모듈로 감산 → XOR 연산의 순서로 이루어질 수 있다. 이때, 비트 순환 시프트는 암호화 라운드 연산과 반대 방향으로 이루어지고, 32비트 모듈로 가산은 모듈로 감산으로 대체된다. 또한, 내부 레지스터의 데이터 시프트 방향도 X3→X2→X1→X0으로 암호화 라운드 연산과 반대 방향으로 이루어진다. 암호화 라운드 연산과 동일하게, 하나의 라운드 연산은 3클록 주기로 이루어지며, 제 1 레지스터(X0)의 데이터는 각 라운드 연산의 클록 순서에 따라 다음과 같이 순환 시프트된다 : 첫 번째 클록에서, 우측으로 9비트 순환 시프트(ROR9), 두 번째 클록에서, 좌측으로 5비트 순환 시프트(ROL5), 세 번째 클록에서, 좌측으로 3비트 순환 시프트(ROL3).
이하, 도 4 내지 도 6을 참조하여, 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치(100)의 키 스케줄러(120)의 구성을 상세하게 설명한다.
도 4는 도 1의 키 스케줄러의 상세 블록도이고, 도 5는 도 4의 T 레지스터부의 상세 블록도이며, 도 6은 도 4의 상수값 생성부의 상세 블록도이다. 도 4 내지 도 6에서, 굵은 실선은 암호화 동작 모드, 점선은 복호화 동작 모드에 대한 구성을 나타낸다.
키 스케줄러(120)는 라운드부(110)와 상이하게 마스터 키의 길이(128/192/256비트)와 암호화 및 복호화 동작 모드에 따라 내부 구조가 변경될 수 있다.
또한, 키 스케줄러(120)는 신호 mode에 따라 키 스케줄링을 수행하며, 예를 들면, mode=0일 때 암호화를 위한 키 스케줄링을 수행하고, mode=1일 때 복호화를 위한 키 스케줄링을 수행할 수 있다.
또한, 키 스케줄러(120)는 마스터 키의 길이를 지정하는 2비트의 신호 k_mode에 따라 키 스케줄러(120) 내부의 각 기능부에 구비된 멀티플렉서(MUX)의 동작이 제어되어 LEA-128/192/256의 키 스케줄링을 수행할 수 있다.
이러한 키 스케줄러(120)는 T 레지스터부(121), 제 1 복호용 시프트 연산부(122a), 제 2 복호용 시프트 연산부(122b), 제 1 암호용 시프트 연산부(124a), 제 2 암호용 시프트 연산부(124b), 제 1 모듈로 연산부(125a), 제 2 모듈로 연산부(125b), 제 1 멀티플렉서(126a), 제 2 멀티플렉서(126b), 제 1 출력단 멀티플렉서(127a), 제 2 출력단 멀티플렉서(127b), 및 상수값 생성부(129)를 포함한다.
T 레지스터부(121)는 8개의 32비트 내부 레지스터(T0~T7)로 이루어지며, 마스터 키가 입력되어 저장될 수 있다. 즉, T 레지스터부(121)는 3종의 마스터 키 길이(128/192/256비트)를 지원하는 키 스케줄러의 내부 레지스터(T0~T7)를 4개의 짝수 번째 레지스터(T0, T2, T4, T6)와 4개의 홀수 번째 레지스터(T1, T3, T5, T7)로 분할하여 구성하고 이들을 병렬로 처리할 수 있다. 이러한 구성에 의해 내부 레지스터 8개를 직렬로 배치하여 처리하는 기존의 방법에 비하여 키 스케줄링에 소요되는 클록 주기 감소시킬 수 있다.
이러한 T 레지스터부(121)는 제어 신호에 의해 클록에 따라 짝수 번째 마스터 키가 제 1 키 레지스터부(121-0)로부터 순차적으로 제 4 키 레지스터부(121-3)로 시프트되는 짝수 레지스터부, 및 홀수 번째 마스터 키가 제 5 키 레지스터부(121-4)로부터 순차적으로 제 8 키 레지스터부(121-7)로 시프트되는 홀수 레지스터부를 포함한다. 여기서, 각 키 레지스터부(121-0~7)는 마스터 키를 저장하는 레지스터(T0~T7) 및 제어 신호에 따라 레지스터(T0~T7)의 입력을 결정하는 멀티플렉서를 포함한다.
여기서, 짝수 레지스터부(121a)는 마스터 키를 암호화 동작 모드에서, 상기 제 1 키 레지스터부(121-0)로부터 제 3 키 레지스터부(121-2)로, 복호화 동작 모드에서, 제 3 키 레지스터부(121-2)로부터 제 1 키 레지스터부(121-0)로 시프트하고, 홀수 레지스터부(121b)는 마스터 키를 암호화 동작 모드에서, 제 5 키 레지스터부(121-4)로부터 제 7 키 레지스터부(121-6)로, 복호화 동작 모드에서, 제 7 키 레지스터부(121-6)로부터 제 5 키 레지스터부(121-4)로 시프트할 수 있다.
도 5에 도시된 바와 같이, 제 1 키 레지스터부(121-0)의 멀티플렉서는 마스터 키, 제 1 멀티플렉서(126a), 제 2 키 레지스터부(121-1), 및 제 4 키 레지스터부(121-3) 중 어느 하나의 출력을 암호화 및 복호화 동작 모드 및 라운드별 클록에 따른 제어 신호에 의해 제 1 키 레지스터(T0)로 출력할 수 있다. 예를 들면, 제 1 키 레지스터부(121-0)의 멀티플렉서는 마스터 키 입력시 제어 신호에 따라 입력된 짝수 번째 마스터 키를 제 1 키 레지스터(T0)로 출력하며, 마스터 키 입력후 라운드 키 생성시 제어 신호에 따라 제 1 멀티플렉서(126a)의 출력을 제 1 키 레지스터(T0)로 출력하고, 마스터 키의 길이와 무관하게 복호화 동작 모드에서, 제 2 키 레지스터부(121-1)의 출력을 제 1 키 레지스터(T0)로 출력하며, LEA-256 모드의 암호화 동작 모드에서, 제 4 키 레지스터부(121-3)의 출력을 제 1 키 레지스터(T0)로 출력할 수 있다.
제 2 키 레지스터부(121-1)의 멀티플렉서는 암호화 및 복호화 동작 모드에 따른 제어 신호에 의해 제 1 키 레지스터부(121-0) 또는 제 3 키 레지스터부(121-2)의 출력을 제 2 키 레지스터(T2)로 출력할 수 있다. 예를 들면, 제 2 키 레지스터부(121-1)의 멀티플렉서는 제어 신호에 따라 암호화 동작 모드에서, 제 1 키 레지스터부(121-0)의 출력을, 복호화 동작 모드에서, 제 3 키 레지스터부(121-2)의 출력을 제 2 키 레지스터(T2)로 출력할 수 있다.
제 3 키 레지스터부(121-2)의 멀티플렉서는 제 1 멀티플렉서(126a), 제 1 키 레지스터부(121-0), 제 2 키 레지스터부(121-1) 및 제 4 키 레지스터부(121-3) 중 어느 하나의 출력을 암호화 및 복호화 동작 모드 및 라운드별 클록에 따른 제어 신호에 의해 제 3 키 레지스터(T4)로 출력할 수 있다. 예를 들면, 제 3 키 레지스터부(121-2)의 멀티플렉서는 제어 신호에 따라 LEA-128 모드의 첫 번째 라운드를 제외한 복호화 동작 모드에서, 제 1 멀티플렉서(126a)의 출력을, LEA-128 모드의 복호화 동작 모드에서, 첫 번째 라운드시 제 1 키 레지스터부(121-0)의 출력을, 암호화 동작 모드에서, 제 2 키 레지스터부(121-1)의 출력을, LEA-256 모드의 복호화 동작 모드에서, 제 4 키 레지스터부(121-3)의 출력을 제 3 키 레지스터(T4)로 각각 출력할 수 있다.
제 4 키 레지스터부(121-3)의 멀티플렉서는 제 1 키 레지스터부(121-0)와 제 3 키 레지스터부(121-2) 사이에서 마스터 키가 클록에 따라 시프트하는 방향을 암호화 및 복호화 동작 모드 및 마스터 키의 길이에 따라 결정할 수 있다. 이러한, 제 4 키 레지스터부(121-3)의 멀티플렉서는 LEA-256 모드에서만 사용되며, 암호화 동작 모드에서, 제 3 키 레지스터부(121-2)의 출력을, 복호화 동작 모드에서, 제 1 키 레지스터부(121-0)의 출력을 제 4 키 레지스터(T6)로 출력할 수 있다.
제 5 키 레지스터부(121-4)의 멀티플렉서는 마스터 키, 제 2 멀티플렉서(126b), 제 6 키 레지스터부(121-5), 및 제 8 키 레지스터부(121-7) 중 어느 하나의 출력을 암호화 및 복호화 동작 모드 및 라운드별 클록에 따른 제어 신호에 의해 제 5 키 레지스터(T1)로 출력할 수 있다. 예를 들면, 제 5 키 레지스터부(121-4)의 멀티플렉서는 마스터 키 입력시 제어 신호에 따라 입력된 홀수 번째 마스터 키를 제 5 키 레지스터(T1)로 출력하며, 마스터 키 입력후 라운드 키 생성시 제어 신호에 따라 제 2 멀티플렉서(126b)의 출력을 제 5 키 레지스터(T1)로 출력하고, 마스터 키의 길이와 무관하게 복호화 동작 모드에서, 제 6 키 레지스터부(121-5)의 출력을 제 5 키 레지스터(T1)로 출력하며, LEA-256 모드의 암호화 동작 모드에서, 제 8 키 레지스터부(121-7)의 출력을 제 5 키 레지스터(T1)로 출력할 수 있다.
제 6 키 레지스터부(121-5)의 멀티플렉서는 암호화 및 복호화 동작 모드에 따른 제어 신호에 의해 제 5 키 레지스터부(121-4) 또는 제 7 키 레지스터부(121-6)의 출력을 제 6 레지스터(T3)로 출력할 수 있다. 예를 들면, 제 6 키 레지스터부(121-5)는 제어 신호에 따라 암호화 동작 모드에서, 제 5 키 레지스터부(121-4)의 출력을, 복호화 동작 모드에서, 제 7 키 레지스터부(121-6)의 출력을 제 6 키 레지스터(T3)로 출력할 수 있다.
제 7 키 레지스터부(121-6)의 멀티플렉서는 제 2 멀티플렉서(126b), 제 5 키 레지스터부(121-4), 제 6 키 레지스터부(121-5) 및 제 8 키 레지스터부(121-7) 중 어느 하나의 출력을 암호화 및 복호화 동작 모드 및 라운드별 클록에 따른 제어 신호에 의해 제 7 키 레지스터(T5)로 출력할 수 있다. 예를 들면, 제 7 키 레지스터부(121-6)의 멀티플렉서는 제어 신호에 따라 LEA-128 모드의 첫 번째 라운드를 제외한 복호화 동작 모드에서, 제 2 멀티플렉서(126b)의 출력을, LEA-128 모드의 복호화 동작 모드에서, 첫 번째 라운드시 제 5 키 레지스터부(121-4)의 출력을, 암호화 동작 모드에서, 제 6 키 레지스터부(121-5)의 출력을, LEA-256 모드의 복호화 동작 모드에서, 제 8 키 레지스터부(121-7)의 출력을 제 7 키 레지스터(T5)로 각각 출력할 수 있다.
제 8 키 레지스터부(121-7)의 멀티플렉서는 제 5 키 레지스터부(121-4)와 제 7 키 레지스터부(121-6) 사이에서 마스터 키가 클록에 따라 시프트하는 방향을 암호화 및 복호화 동작 모드 및 마스터 키의 길이에 따라 결정할 수 있다. 이러한 제 8 키 레지스터부(121-7)의 멀티플렉서는 LEA-256 모드에서만 사용되며, 암호화 동작 모드에서, 제 7 키 레지스터부(121-6)의 출력을, 복호화 동작 모드에서, 제 5 키 레지스터부(121-4)의 출력을 제 8 키 레지스터(T7)로 출력할 수 있다.
다시 도 4를 참조하면, 제 1 복호용 시프트 연산부(122a)는 복호화 동작 모드에서만 사용되며, 짝수 레지스터부(121a)의 제 1 키 레지스터부(121-0)의 출력을 우측으로 비트 순환 시프트하는 3개의 시프트 연산기 및 3개의 시프트 연산기의 출력 중 하나를 라운드별 클록에 따라 제 1 모듈로 연산부(125a)로 출력하는 멀티플렉서를 포함한다. 여기서, 제 1 복호용 시프트 연산부(122a)의 3개의 시프트 연산기는 짝수 레지스터부(121a)의 제 1 키 레지스터부(121-0)의 출력에 대하여 우측으로 1비트 순환 시프트하는 제 13 시프트 연산기(ROR1), 우측으로 6비트 순환 시프트하는 제 14 시프트 연산기(ROR6), 및 우측으로 13비트 순환 시프트하는 제 15 시프트 연산기(ROR13)를 포함한다. 이러한 제 1 복호용 시프트 연산부(122a)는 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 제 13 시프트 연산기(ROR1) 내지 제 15 시프트 연산기(ROR13)의 출력을 순차적으로 제 1 모듈로 연산부(125a)로 출력할 수 있다.
제 2 복호용 시프트 연산부(122b)는 복호화 동작 모드에서만 사용되며, 홀수 레지스터부(121b)의 제 5 키 레지스터부(121-4)의 출력을 우측으로 비트 순환 시프트하는 3개의 시프트 연산기 및 3개의 시프트 연산기의 출력 중 하나를 라운드별 클록에 따라 제 2 모듈로 연산부(125b)로 출력하는 멀티플렉서를 포함한다. 여기서, 제 2 복호용 시프트 연산부(122b)의 3개의 시프트 연산기는 홀수 레지스터부(121b)의 제 5 키 레지스터부(121-4)의 출력에 대하여 우측으로 3비트 순환 시프트하는 제 16 시프트 연산기(ROR3), 우측으로 11비트 순환 시프트하는 제 17 시프트 연산기(ROR11), 및 우측으로 17비트 순환 시프트하는 제 18 시프트 연산기(ROR17)를 포함한다. 이러한 제 2 복호용 시프트 연산부(122b)는 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 제 16 시프트 연산기(ROR3) 내지 제 18 시프트 연산기(ROR17)의 출력을 순차적으로 제 2 모듈로 연산부(125b)로 출력할 수 있다.
제 1 암호용 시프트 연산부(124a)는 암호화 동작 모드에서만 사용되며, 제 1 모듈로 연산부(125a)의 출력을 좌측으로 비트 순환 시프트하는 3개의 시프트 연산기, 및 3개의 시프트 연산기의 출력 중 어느 하나를 라운드별 클록에 따라 제 1 멀티플렉서(126a)로 출력할 수 있다. 여기서, 제 1 암호용 시프트 연산부(124a)의 3개의 시프트 연산기는 제 1 모듈로 연산부(125a)의 출력에 대하여 좌측으로 13비트 순환 시프트하는 제 7 시프트 연산기(ROL13), 좌측으로 6비트 순환 시프트하는 제 8 시프트 연산기(ROL6), 및 좌측으로 1비트 순환 시프트하는 제 9 시프트 연산기(ROL1)를 포함한다. 이러한 제 1 암호용 시프트 연산부(124a)는 그 내부의 멀티플렉서에 의해 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 제 7 시프트 연산기(ROL13) 내지 제 9 시프트 연산기(ROL1)의 출력을 순차적으로 제 1 멀티플렉서(126a)로 출력할 수 있다.
제 2 암호용 시프트 연산부(124b)는 암호화 동작 모드에서만 사용되며, 제 2 모듈로 연산부(125b)의 출력을 좌측으로 비트 순환 시프트하는 3개의 시프트 연산기, 및 3개의 시프트 연산기의 출력 중 어느 하나를 라운드별 클록에 따른 제어 신호에 의해 제 2 멀티플렉서(126b)로 출력할 수 있다. 여기서, 제 2 암호용 시프트 연산부(124b)의 3개의 시프트 연산기는 제 2 모듈로 연산부(125b)의 출력에 대하여 좌측으로 17비트 순환 시프트하는 제 10 시프트 연산기(ROL17), 좌측으로 11비트 순환 시프트하는 제 11 시프트 연산기(ROL11), 및 좌측으로 3비트 순환 시프트하는 제 12 시프트 연산기(ROL3)를 포함한다. 이러한 제 2 암호용 시프트 연산부(124b)는 그 내부의 멀티플렉서에 의해 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 제 10 시프트 연산기(ROL17) 내지 제 12 시프트 연산기(ROL3)의 출력을 순차적으로 제 2 멀티플렉서(126b)로 출력할 수 있다.
제 1 모듈로 연산부(125a)는 암호화 및 복호화 동작 모드에 따라 모듈로 가산기 또는 모듈로 감산기로 동작하는 제 1 모듈로 연산기 및 제어 신호에 따라 제 1 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함한다. 여기서, 제 1 모듈로 연산부(125a)의 멀티플렉서는 제어 신호에 따라 암호화 동작 모드에서, 짝수 레지스터부(121a)의 제 3 키 레지스터부(121-2)의 출력을, 복호화 동작 모드에서, 제 1 복호용 시프트 연산부(122a)의 출력을 제 1 모듈로 연산기로 출력할 수 있다. 이러한 제 1 모듈로 연산부(125a)는 제어 신호에 따라 암호화 동작 모드에서, 짝수 레지스터부(121a)의 제 3 키 레지스터부(121-2)의 출력과 상수값 생성부(129)의 제 1 상수값을 모듈로 가산하며, 복호화 동작 모드에서, 제 1 복호용 시프트 연산부(122a)의 출력과 상수값 생성부(129)의 제 1 상수값을 모듈로 감산할 수 있다.
제 2 모듈로 연산부(125b)는 암호화 및 복호화 동작 모드에 따라 모듈로 가산기 또는 모듈로 감산기로 동작하는 제 2 모듈로 연산기 및 제어 신호에 따라 제 2 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함한다. 여기서, 제 2 모듈로 연산부(125b)의 멀티플렉서는 제어 신호에 따라 암호화 동작 모드에서, 홀수 레지스터부(121b)의 제 7 키 레지스터부(121-6)의 출력을, 복호화 동작 모드에서, 제 2 복호용 시프트 연산부(122b)의 출력을 제 2 모듈로 연산기로 출력할 수 있다. 이러한 제 2 모듈로 연산부(125b)는 제어 신호에 따라 암호화 동작 모드에서, 홀수 레지스터부(121b)의 제 7 키 레지스터부(121-6)의 출력과 상수값 생성부(129)의 제 2 상수값을 모듈로 가산하며, 복호화 동작 모드에서, 제 2 복호용 시프트 연산부(122b)의 출력과 상수값 생성부(129)의 제 2 상수값을 모듈로 감산할 수 있다.
제 1 멀티플렉서(126a)는 제 1 모듈로 연산부(125a)의 출력 또는 제 1 모듈로 연산부(125a)의 출력을 좌측으로 비트 순환 시프트한 제 1 암호용 시프트 연산부(124a)의 출력을 제어 신호에 따라 선택적으로 짝수 레지스터부(121a)로 출력할 수 있다. 예를 들면, 제 1 멀티플렉서(126a)는 제어 신호에 따라 암호화 동작 모드에서, 제 1 암호용 시프트 연산부(124a)의 출력을 짝수 레지스터부(121a)의 제 1 키 레지스터부(121-0)로 출력하고, 복호화 동작 모드에서, 제 1 모듈로 연산부(125a)의 출력을 짝수 레지스터부(121a)의 제 3 키 레지스터부(121-2)로 출력할 수 있다.
제 2 멀티플렉서(126b)는 제 2 모듈로 연산부(125b)의 출력 또는 제 2 모듈로 연산부(125b)의 출력을 좌측으로 비트 순환 시프트한 제 2 암호용 시프트 연산부(124b)의 출력을 제어 신호에 따라 선택적으로 홀수 레지스터부(121b)로 출력할 수 있다. 예를 들면, 제 2 멀티플렉서(126b)는 제어 신호에 따라 암호화 동작 모드에서, 제 2 암호용 시프트 연산부(124b)의 출력을 홀수 레지스터부(121b)의 제 5 키 레지스터부(121-4)로 출력하고, 복호화 동작 모드에서, 제 2 모듈로 연산부(125b)의 출력을 홀수 레지스터부(121b)의 제 7 키 레지스터부(121-6)로 출력할 수 있다.
제 1 출력단 멀티플렉서(127a)는 제어 신호에 따라 T 레지스터부(121) 중 어느 하나의 키 레지스터(T0~T7)의 출력을 마스터 키의 길이에 따른 제 1 라운드 키(rk0)로서 출력할 수 있다. 예를 들면, 제 1 출력단 멀티플렉서(127a)는 제 1 멀티플렉서(126a), 제 1 키 레지스터(T0), 제 3 키 레지스터(T4), 제 6 키 레지스터(T3), 및 제 7 키 레지스터(T5) 중 어느 하나의 출력을 라운드 키 쌍의 제 1 라운드 키(rk0)로서 마스터 키의 길이, 암호화 및 복호화 동작 모드, 및 제어부(130)의 제어 신호에 따라 출력할 수 있다. 보다 구체적으로, 제 1 출력단 멀티플렉서(127a)는 제어 신호에 따라 LEA-128 모드에서, 암호화 동작 모드시, 제 3 키 레지스터(T4) 또는 제 6 키 레지스터(T3)의 출력을, 복호화 동작 모드시, 제 1 멀티플렉서(126a)를 통하여 제 1 모듈로 연산부(125a)의 출력, 또는 제 1 키 레지스터(T0) 또는 제 7 키 레지스터(T5)의 출력을 선택적으로 제 1 라운드 키(rk0)로서 출력할 수 있다. 또한, 제 1 출력단 멀티플렉서(127a)는 제어 신호에 따라 LEA-192 모드 및 LEA-256 모드에서, 암호화 동작 모드시, 제 1 멀티플렉서(126a)를 통하여 제 1 암호용 시프트 연산부(124a)의 출력을, 복호화 동작 모드시, 제 1 멀티플렉서(126a)를 통하여 제 1 모듈로 연산부(125a)의 출력을 제 1 라운드 키(rk0)로서 출력할 수 있다.
제 2 출력단 멀티플렉서(127b)는 제어 신호에 따라 T 레지스터부(121) 중 어느 하나의 키 레지스터(T0~T7)의 출력을 마스터 키의 길이에 따른 제 2 라운드 키(rk1)로서 출력할 수 있다. 예를 들면, 제 2 출력단 멀티플렉서(127b)는 홀수 레지스터부(121b)의 제 5 키 레지스터(T1) 내지 제 7 키 레지스터(T5), 및 제 2 멀티플렉서(126b) 중 어느 하나의 출력을 라운드 키 쌍의 제 2 라운드 키(rk1)로서 마스터 키의 길이, 암호화 및 복호화 동작 모드, 및 제어부(130)의 제어 신호에 따라 출력할 수 있다. 보다 구체적으로, 제 2 출력단 멀티플렉서(127b)는 제어 신호에 따라 LEA-128 모드에서, 암호화 동작 모드시, 제 5 키 레지스터(T1) 내지 제 7 키 레지스터(T5) 중 어느 하나를, 복호화 동작 모드시, 제 2 멀티플렉서(126b)를 통하여 제 제 2 모듈로 연산부(125b)의 출력, 또는 제 5 키 레지스터(T1) 내지 제 7 키 레지스터(T5) 중 어느 하나를 선택적으로 제 2 라운드 키(rk1)로서 출력할 수 있다. 또한, 제 2 출력단 멀티플렉서(127b)는 제어 신호에 따라 LEA-192 모드 및 LEA-256 모드에서, 암호화 동작 모드시, 제 2 멀티플렉서(126b)를 통하여 제 2 암호용 시프트 연산부(124b)의 출력을, 복호화 동작 모드시, 제 2 멀티플렉서(126b)를 통하여 제 2 모듈로 연산부(125b)의 출력을 제 2 라운드 키(rk1)로서 출력할 수 있다.
상수값 생성부(129)는 마스터 키의 길이에 따라 LEA-128, LEA-192, LEA-256 모드에 따라 내부 구조가 변경될 수 있다. 즉, 상수값 생성부(129)는 마스터 키의 길이에 따라 상수값이 저장된 상수 레지스터부(C0~C7)의 수(n)가 결정될 수 있다. 이러한 상수값 생성부(129)는 라운드 주기로, 상수값을 상수 레지스터부들(C0~C7) 사이에서 순차 시프트하며, 예를 들면, 암호화 동작 모드에서, 상수값을 제 1 상수 레지스터부(C0)로부터 마스터 키의 길이에 따라 제 4 상수 레지스터부(C3), 제 6 상수 레지스터부(C5) 및 제 8 상수 레지스터부(C7) 중 어느 하나로 시프트할 수 있다. 또한, 상수값 생성부(129)는 복호화 동작 모드에서, 라운드 주기로 상수값을 마스터 키의 길이에 따라 제 8 상수 레지스터부(C7), 제 6 상수 레지스터부(C5) 및 제 4 상수 레지스터부(C3) 중 어느 하나로부터 제 1 상수 레지스터부(C0)로 순차 시프트할 수 있다.
또한, 상수값 생성부(129)는 클록 주기로 제 1 상수 레지스터부(C0)의 출력을 2비트 순환 시프트하여 제 1 상수 레지스터부(C0)로 재입력할 수 있다. 예를 들면, 상수값 생성부(129)는 라운드별 클록 주기로, 암호화 동작 모드에서, 제 1 상수 레지스터부(C0)의 출력을 우측으로 2비트 순환 시프트하여 제 1 상수 레지스터부(C0)로 재입력하고, 복호화 동작 모드에서, 제 1 상수 레지스터부(C0)의 출력을 좌측으로 2비트 순환 시프트하여 제 1 상수 레지스터부(C0)로 재입력할 수 있다. 여기서, 상수값 생성부(129)는 제 1 상수 레지스터부(C0)의 출력과, 제 1 상수 레지스터부(C0)의 출력을 좌측 1비트 순환 시프트한 제 24 시프트 연산기(ROL1)의 출력을 한 쌍의 상수값으로서 출력할 수 있다.
이러한 상수값 생성부(129)는 상수 레지스터부(C0 내지 C7), 제 1 멀티플렉서(MUX1), 제 2 멀티플렉서(MUX2), 제 3 멀티플렉서(MUX3), 제 4 멀티플렉서(MUX4), 제 5 멀티플렉서(MUX5), 제 19 시프트 연산기(ROR2), 제 20 시프트 연산기(ROL5), 제 21 시프트 연산기(ROR1), 제 22 시프트 연산기(ROL2), 제 23 시프트 연산기(ROR4), 및 제 24 시프트 연산기(ROL1)를 포함한다.
상수 레지스터부(C0~C7)는 마스터 키의 길이에 따라 개수가 결정되며, 예를 들면, LEA-128 모드에서 제 1 상수 레지스터부(C0) 내지 제 4 상수 레지스터부(C3)의 4개의 레지스터부를 포함하고, LEA-192 모드에서, 제 1 상수 레지스터부(C0) 내지 제 6 상수 레지스터부(C5)를 포함하며, LEA-256 모드에서, 제 1 상수 레지스터부(C0) 내지 제 8 상수 레지스터부(C7)를 포함한다.
여기서, 도 6(b)에 도시된 바와 같이, 제 1 상수 레지스터부(C0)를 제외한 n-1개의 상수 레지스터부(C1~C7) 각각은 좌측 1비트 순환 시프트 연산기(ROL1), 우측 1비트 순환 시프트 연산기(ROR1), 비트 순환 시프트 연산기들(ROL1, ROR1)의 출력중 하나를 암호화 및 복호화 동작 모드에 따라 출력하는 멀티플렉서, 및 멀티플렉서의 출력을 저장하는 레지스터를 포함할 수 있다. 여기서, 상수 레지스터부(C1~C7)의 멀티플렉서는 암호화 동작 모드에서, 좌측 1비트 순환 시프트 연산기(ROL1)의 출력을, 복호화 동작 모드에서, 우측 1비트 순환 시프트 연산기(ROR1)을 내부의 레지스터로 출력할 수 있다.
제 1 멀티플렉서(MUX1)는 마스터 키의 길이에 따라 상수 레지스터부(C0~C7)의 수를 결정할 수 있다. 예를 들면, 제 1 멀티플렉서(MUX1)는 LEA-192 모드에서, 상수값 생성부(129)가 6개의 상수 레지스터부(C0~C5)로 구성되도록 하기 위한 것으로 LEA-192 모드에서 제어부(130)의 제어 신호에 따라 제 1 상수 레지스터부(C0)의 출력을 제 6 상수 레지스터부(C5)로 출력할 수 있다. 또한, 제 1 멀티플렉서(MUX1)는 LEA-128 모드 및 LEA-256 모드에서 제어부(130)의 제어 신호에 따라 제 7 상수 레지스터부(C6)의 출력을 제 6 상수 레지스터부(C5)로 출력할 수 있다. 여기서, LEA-128 모드에서, 상수값 생성부(129)는 4개의 상수 레지스터부(C0~C3)만 사용되기 때문에, 제 1 멀티플렉서(MUX1)는 디스에이블하거나, 제 2 멀티플렉서(MUX2)에 의해 4개의 상수 레지스터부(C4~C7)는 사용되지 않는다.
제 2 멀티플렉서(MUX2)는 마스터 키의 길이에 따라 상수 레지스터부(C0~C7)의 수를 결정할 수 있다. 예를 들면, 제 2 멀티플렉서(MUX2)는 LEA-128 모드에서, 상수값 생성부(129)가 4개의 상수 레지스터부(C0~C4)로 구성되도록 하기 위한 것으로, LEA-128 모드에서 제어부(130)의 제어 신호에 따라 제 1 상수 레지스터부(C0)의 출력을 제 4 상수 레지스터부(C3)로 출력할 수 있다. 또한, 제 2 멀티플렉서(MUX2)는 LEA-192 모드 및 LEA-256 모드에서 제어부(130)의 제어 신호에 따라 제 5 상수 레지스터부(C4)의 출력을 제 4 상수 레지스터부(C3)로 출력할 수 있다.
제 3 멀티플렉서(MUX3)는 제 19 시프트 연산기(ROR2) 및 제 20 시프트 연산기(ROL5)의 출력 중 어느 하나를 제어 신호에 따라 제 5 멀티플렉서(MUX5)로 출력할 수 있다. 예를 들면, 제 3 멀티플렉서(MUX3)는 라운드별 클록 주기에 따른 제어 신호에 의해 제 19 시프트 연산기(ROR2)의 출력을 제 5 멀티플렉서(MUX5)를 통하여 제 1 상수 레지스터부(C0)로 출력하고, 라운드 주기에 따른 제어 신호에 의해 제 20 시프트 연산기(ROL5)의 출력을 제 5 멀티플렉서(MUX5)를 통하여 제 1 상수 레지스터부(C0)로 출력할 수 있다.
제 4 멀티플렉서(MUX4)는 마스터 키의 길이에 따라 제 n 상수 레지스터부(C3, C5, C7)의 출력중 하나를 출력할 수 있다. 예를 들면, 제 4 멀티플렉서(MUX4)는 LEA-128 모드에서 제어 신호에 따라 제 4 상수 레지스터부(C3)의 출력을 제 21 시프트 연산기(ROR1)로 출력하고, LEA-192 모드에서 제어 신호에 따라 제 6 상수 레지스터부(C5)의 출력을 제 21 시프트 연산기(ROR1)로 출력하며, LEA-256 모드에서 제어 신호에 따라 제 8 상수 레지스터부(C7)의 출력을 제 21 시프트 연산기(ROR1)로 출력할 수 있다.
제 5 멀티플렉서(MUX5)는 제어부(130)의 제어 신호에 따라 제 21 시프트 연산기(ROR1), 제 22 시프트 연산기(ROL2), 및 제 3 멀티플렉서(MUX3) 중 어느 하나의 출력을 제 1 상수 레지스터부(C0)로 출력할 수 있다. 예를 들면, 제 5 멀티플렉서(MUX5)는 암호화 동작 모드에서, 제어 신호에 따라 제 3 멀티플렉서(MUX3)의 출력을 제 1 상수 레지스터부(C0)로 출력할 수 있다. 또한, 제 5 멀티플렉서(MUX5)는 복호화 동작 모드에서, 라운드 주기에 따른 제어 신호에 의해 제 21 시프트 연산기(ROR1)의 출력을 제 1 상수 레지스터부(C0)로 출력하고, 라운드별 클록에 따른 제어 신호에 의해 제 22 시프트 연산기(ROL2)의 출력을 제 1 상수 레지스터부(C0)로 출력할 수 있다.
제 19 시프트 연산기(ROR2)는 제 3 멀티플렉서(MUX3)에 의해 암호화 동작 모드에서만 사용되며, 라운드별 클록 주기로 제 1 상수 레지스터부(C0)의 출력을 우측으로 2비트 순환 시프트할 수 있다.
제 20 시프트 연산기(ROL5)는 제 3 멀티플렉서(MUX3)에 의해 암호화 동작 모드에서만 사용되며, 라운드 주기로 제 2 상수 레지스터부(C1)의 출력을 좌측으로 5비트 순환 시프트할 수 있다.
제 21 시프트 연산기(ROR1)는 제 5 멀티플렉서(MUX5)에 의해 복호화 동작 모드에서만 사용되며, 라운드 주기로 제 4 멀티플렉서(MUX4)의 출력을 우측으로 1비트 순환 시프트할 수 있다.
제 22 시프트 연산기(ROL2)는 제 5 멀티플렉서(MUX5)에 의해 복호화 동작 모드에서만 사용되며, 라운드별 클록 주기로 제 1 상수 레지스터부(C0)의 출력을 좌측으로 2비트 순환 시프트할 수 있다.
제 23 시프트 연산기(ROR4)는 제 2 상수 레지스터부(C1)의 내부의 멀티플렉서에 의해 복호화 동작 모드에서만 사용되며, 라운드 주기로 제 1 상수 레지스터부(C0)의 출력을 우측으로 4비트 순환 시프트하여 제 2 상수 레지스터부(C1)로 출력할 수 있다. 여기서, 제 23 시프트 연산기(ROR4)는 우측으로 4비트 순환 시프트이지만, 복호화 동작 모드에서, 제 2 상수 레지스터부(C1)의 내부의 우측 1비트 순환 시프트 연산기(ROR1)과 합산하여 결과적으로 암호화 동작 모드에서 사용되는 제 20 시프트 연산기(ROL5)와 같이 5비트 순환 시프트 연산이 이루어질 수 있다.
제 24 시프트 연산기(ROL1)는 한 쌍의 상수값을 출력하기 위한 것으로, 제 1 상수 레지스터부(C0)의 출력을 좌측으로 1비트 순환 시프트할 수 있다.
이와 같이 구성된 키 스케줄러(120)는 T 레지스터부(121)에 마스터 키가 입력된 후, 신호 mode에 의한 제어 신호에 따라 암호화 키 스케줄링 및 복호화 키 스케줄링을 선택적으로 수행할 수 있다. 또한, 키 스케줄러(120)는 신호 k_mode에 의한 제어 신호에 따라 LEA-128, LEA-192, LEA-256 모드의 키 스케줄링을 선택적으로 수행할 수 있다.
이러한 키 스케줄러(120)는 키 레지스터(T0~T7), XOR 연산기들, 32비트 모듈로 연산기 등이 암호화 및 복호화 동작 모드, 및 마스터 키의 길이에 따른 LEA-128/192/256의 각 모드에서 공유되어 하드웨어 자원을 최소화할 수 있다.
이하, 도 7 내지 도 13을 참조하여, 본 발명의 실시예에 따른 경량 블록암호 기반 암호화 및 복호화 장치(100)의 키 스케줄러(120)의 동작을 모드별로 상세하게 설명한다.
도 7은 도 4의 키 스케줄러에 대한 LEA-128 암호화 동작 모드의 구성을 나타낸 블록도이고, 도 8은 도 7에서 마스터 키 입력 및 암호화 키 스케줄링에 대한 스케줄링 과정을 순차적으로 나타낸 블록도이고, 도 9는 도 4의 키 스케줄러에 대한 LEA-128 복호화 동작 모드의 구성을 나타낸 블록도이다.
LEA-128 모드에서, 키 스케줄러(120)는 제어 신호에 따른 멀티플렉서들의 출력 결정에 의해 6개의 32비트 내부 키 레지스터(T0~T5)와 32비트 모듈로 연산기, 및 비트 순환 시프트 연산기로 구성되며, 상수값를 생성하는 상수값 생성부(129)(상수 레지스터(C0~C3) 및 비트 순환 시프트 연산기)를 포함한다.
암호화 동작 모드에서, 키 스케줄러(120)는 도 7에 도시된 바와 같이 구성될 수 있다. 128비트의 마스터 키(비밀키) K0~K3은 32비트 단위로 4클록 주기로 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 교대로 입력되며, 제 1 키 레지스터(T0)에 입력될 때 32비트씩 T0→T2→T4로 시프트될 수 있다. 이와 동일하게, 마스터 키는 제 5 키 레지스터(T1)에 입력될 때 32비트씩 T1→T3→T5로 시프트되어 T 레지스터부(121)에 저장될 수 있다. 여기서, 128비트의 마스터 키를 저장하기 위해 32비트 레지스터 4개가 필요하지만, 도 7에 도시된 바와 같이, 짝수 키 레지스터(T0, T2, T4) 및 홀수 키 레지스터(T1, T3, T5)를 병렬로 구성하여 32비트 키 레지스터 6개(T0~T5)를 사용하면, 라운드 키 생성을 3클록 주기로 구현할 수 있다. 이와 같은 구성에 의해 본 발명의 실시예에 따른 경량 블록암호 LEA 기반 암호화 및 복호화 장치(100)는 32비트 레지스터 4개를 직렬로 배치한 구조를 갖는 종래의 장치의 4클록 주기에 비해 1클록 주기를 감소시킬 수 있다.
도 8에 도시된 바와 같이, 키 스케줄러(120)는 LEA-128 모드에서 128비트의 마스터 키 K0~K3이 4클록 주기 동안(Tclk~4Tclk) 입력되고, 다음 3클록 주기 동안(5Tclk~7Tclk) 라운드 키가 생성될 수 있다. 도 8에서, K0*~K3*은 K0~K3이 라운드 키 연산을 거친 결과값을 나타내며, 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)로 재입력되는 데이터 시프트가 규칙적임을 알 수 있다.
제 3 키 레지스터(T4) 및 제 7 키 레지스터(T5)에 저장된 값은 각각 상수값 생성부(129)에서 출력되는 상수값(C0 및 ROL1(C0))과 32비트 모듈로 가산되며, 그 결과값은 라운드 연산의 클록 순서에 따라 다음과 같이 순환 시프트된다:
2번째 클록; 좌측 6비트 순환 시프트(ROL6), 좌측 11비트 순환 시프트(ROL11)
3번째 클록; 좌측 1비트 순환 시프트(ROL1), 좌측 3비트 순환 시프트(ROL3).
이와 같은 순환 시프트 결과값은 다시 각각 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 입력된다. 클록에 따라 시프트되는 T 레지스터부(121)의 값은 멀티플렉서에 의해 (K3, K1), (K2, K1), (K0, K1)의 순서로 출력되어 라운드 연산에 사용된다. 이때, 상수값 생성부(129)는 ROLi +3(δ[i mod 4]), ROLi +2(δ[i mod 4]), ROLi +1(δ[i mod 4]), ROLi(δ[i mod 4])가 출력되며, 매 라운드마다 좌측 1비트 순환시프트와 순환시프트와 좌측 5비트 순환시프트, 32비트 단위의 시프트가 발생한다. (K3, K1), (K2, K1), (K0, K1)의 쌍과 병렬로 32비트 모듈로 가산되는 상수값 생성부(129)의 출력은 다음과 같다:
(ROLi +4(δ[i mod 4]), ROLi +5(δ[i mod 4])),
(ROLi +2(δ[i mod 4]), ROLi +3(δ[i mod 4])),
(ROLi(δ[i mod 4]), ROLi +1(δ[i mod 4])).
여기서, 이들 쌍은 서로 1비트 순환 시프트된 관계이고, K4와 연산될 때에는 의 제 2 상수 레지스터부(C1)의 출력을 좌측 1비트 순환 시프트(ROL1)한 결과에 좌측 2비트 순환 시프트(ROL2)를 2번 연산한 값(제 2 상수 레지스터부(C1)의 출력을 좌측 5비트 순환 시프트(ROL5)한 값)이 출력되고, K2와 연산될 때에는 제 2 상수 레지스터부(C1)의 출력을 좌측 1비트 순환 시프트(ROL1)한 결과에 좌측 2비트 순환 시프트(ROL2)를 1번 연산한 값(제 2 상수 레지스터부(C1)의 출력을 좌측 3비트 순환 시프트(ROL3)한 값)이 출력되며, K0와 연산될 때에는 좌측 1비트 순환 시프트(ROL1)를 한 결과가 제 1 상수 레지스터부(C0)를 거쳐 출력된다.
이때, ROR2(ROL5(C1)) = ROL3(C1), ROR2(ROR2(ROL5(C1)) = ROL1(C1)의 관계를 이용하여 제 1 상수 레지스터부(C0)의 출력 값을 우측 2비트 순환 시프트(ROR2) 연산하여 다시 제 1 상수 레지스터부(C0)에 입력되도록 함으로써 상수값 생성부(129)를 효율적으로 구현할 수 있다. 도 6의 상수값 생성부(129)에서, 제 1 상수 레지스터부(C0)의 초기값(δ[0])은 LEA 표준문서에서 제시하는 c3efe9db의 값을 좌측 4비트 순환 시프트(ROL4)한 값이다.
복호화 동작 모드에서, 키 스케줄러(120)는 도 9에 도시된 바와 같이 구성될 수 있다. 여기서, 128비트의 마스터 키(비밀키) K0~K3은 32비트 단위로 4클록 주기 동안 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 교대로 입력되며, 제 1 키 레지스터(T0)에 입력될 때 32비트씩 T0→T2→T4로 시프트될 수 있다. 이와 동일하게, 마스터 키는 제 5 키 레지스터(T1)에 입력될 때 32비트씩 T1→T3→T5로 시프트되어 T 레지스터부(121)에 저장된다. 128비트의 마스터 키를 저장하기 위해 32비트 레지스터가 4개 필요하지만, 도 9에 도시된 바와 같이, 짝수 키 레지스터(T0, T2, T4) 및 홀수 키 레지스터(T1, T3, T5)를 병렬로 구성하여 32비트 키 레지스터 6개(T0~T5)를 사용하면, 라운드 키 생성을 3클록 주기로 구현할 수 있다. 이와 같은 구성에 의해 본 발명의 실시예에 따른 경량 블록암호 기반 암호화 및 복호화 장치(100)는 32비트 레지스터 4개를 직렬로 배치한 구조를 갖는 종래의 장치의 4클록 주기에 비해 1클록 주기를 감소시킬 수 있다.
복호화 동작 모드의 첫 번째 라운드에서 사용되는 라운드 키는 암호화 동작 모드의 마지막 라운드 키와 동일하므로, 암호화 동작 모드와 상이하게 초기에 라운드 키를 생성하지 않을 수 있다. (K0, K1), (K2, K1), (K3, K1)로 쌍을 이루어 순차적으로 연산이 이루어져야 하므로, T5→T3→T1로 시프트 시키면서 라운드 키를 생성하면 초기의 제 5 키 레지스터(T1)의 출력이 유지되지 못하고 변하게 된다. 이와 같은 문제를 해결하기 위해 복호화 동작 모드의 첫 라운드에서 T0→T4, T1→T5로 시프트시킴으로써 제 5 키 레지스터(T1)의 출력이 보존된다.
복호화 동작 모드를 수행하기 위한 마스터 키를 모두 입력받고, 첫번째 라운드를 수행한 다음, 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 저장된 값은 각 라운드의 클록 순서에 따라 다음과 같은 순환 시프트 연산이 수행된다 :
1번째 클록; 우측 1비트 순환 시프트(ROR1), 우측 3비트 순환 시프트(ROR3)
2번째 클록; 우측 6비트 순환 시프트(ROR6), 우측 11비트 순환 시프트(ROR11).
이와 같은 순환 시프트 연산의 결과값은 각각 상수값 생성부(129)에서 출력되는 상수값(C0, ROL1(C0))과 32비트 모듈로 감산된 후, 제 3 키 레지스터(T4) 및 제 7 키 레지스터(T5)에 저장된다. 상수값 생성부(129)는 내부의 순환 시프트가 반대 방향으로 이루어지며, 출력부분의 ROL1 연산은 암호화 동작 모드와 동일하게 이루어진다. 복호화 모드의 상수 초기값은 암호화 동작 모드의 마지막 라운드의 상수값으로, δ[0]~δ[3]을 좌측 24비트 순환 시프트(ROL24) 한 값이다.
도 10은 도 4의 키 스케줄러에 대한 LEA-192 암호화 동작 모드의 구성을 나타낸 블록도이고, 도 11은 도 4의 키 스케줄러에 대한 LEA-192 복호화 동작 모드의 구성을 나타낸 블록도이다.
LEA-192 모드에서, 키 스케줄러(120)는 제어 신호에 따른 멀티플렉서들의 출력 결정에 의해 6개의 32비트 내부 레지스터(T0~T5)와 32비트 모듈로 연산기, 그리고 비트 순환 시프트 연산기로 구성되며, 상수값을 생성하는 상수값 생성부(129)(상수 레지스터(C0~C5) 및 비트 순환 시프트 연산기)를 포함한다.
암호화 동작 모드에서, 키 스케줄러(120)는 도 10에 도시된 바와 같이 구성될 수 있다. 192비트의 마스터 키(암호키) K0~K5는 32비트 단위로 6클록 주기 동안 입력된다. 제 3 키 레지스터(T4) 및 제 7 키 레지스터(T5)에 저장된 값은 각각 상수값 생성부(129)에서 출력된 값(C0 및 ROL1(C0))과 32비트 모듈로 가산되며, 그 결과값은 라운드 연산의 클록 순서에 따라 다음과 같이 순환 시프트된다:
1번째 클록; 좌측 13비트 순환 시프트(ROL13), 좌측 17비트 순환 시프트(ROL17)
2번째 클록; 좌측 6비트 순환 시프트(ROL6), 좌측 11비트 순환 시프트(ROL11)
3번째 클록; 좌측 1비트 순환 시프트(ROL1), 좌측 3비트 순환 시프트(ROL3).
이와 같은 순환 시프트 결과값은 다시 각각 레지스터 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 입력된다. 클록에 따라 시프트되는 T 레지스터부(121)의 값은 멀티플렉서에 (K4, K5), (K2, K3), (K0, K1)의 순서로 출력되어 라운드 연산에 사용된다. 여기서, 상수값 생성부(129)는 δ[0]~δ[5]가 제 1 상수 레지스터부(C0) 내지 제 5 상수 레지스터부(C4)의 초기값으로 사용된다.
복호화 동작 모드에서, 키 스케줄러(120)는 도 11에 도시된 바와 같이 구성될 수 있다. 192비트의 마스터 키 K0~K5는 32비트씩 6클록 주기 동안 입력된다. 복호키를 모두 입력받은 후, 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 저장된 값은 각 라운드의 클록 순서에 따라 다음과 같은 순환 시프트 연산이 수행된다.
1번째 클록; 우측 1비트 순환 시프트(ROR1), 우측 3비트 순환 시프트(ROR3)
2번째 클록; 우측 6비트 순환 시프트(ROR6), 우측 11비트 순환 시프트(ROR11)
3번째 클록; 우측 13비트 순환 시프트(ROR13), 우측 17비트 순환 시프트(ROR17).
이와 같은 순환 시프트 연산의 결과값은 상수값 생성부(129)에서 출력되는 상수값(C0, ROL1(C0)과 32비트 모듈로 감산된 후, 제 3 키 레지스터(T4) 및 제 7 키 레지스터(T5)에 입력된다. 복호화 모드의 상수 초기값은 암호화 동작 모드의 마지막 라운드의 상수값으로, δ[0]~δ[5]를 좌측 28비트 순환 시프트(ROL28)한 값이다.
도 12는 도 4의 키 스케줄러에 대한 LEA-256 암호화 동작 모드의 구성을 나타낸 블록도이고, 도 13은 도 4의 키 스케줄러에 대한 LEA-256 복호화 동작 모드의 구성을 나타낸 블록도이다.
LEA-256 모드에서, 키 스케줄러(120)는 제어 신호에 따른 멀티플렉서들의 출력 결정에 의해 8개의 32비트 내부 레지스터(T0~T7)와 32비트 모듈로 연산기, 및 비트 순환 시프트 연산기로 구성되며, 상수값을 생성하는 상수값 생성부(129)(상수 레지스터(C0~C7) 및 비트 순환 시프트 연산기)를 포함한다.
암호화 동작 모드에서, 키 스케줄러(120)는 도 12에 도시된 바와 같이 구성될 수 있다. 256비트의 마스터 키(암호키) K0~K7은 32비트씩 8클록 주기 동안 입력된다. 제 3 키 레지스터(T4) 및 제 7 키 레지스터(T5)에 저장된 값은 각각 상수값 생성부(129)에서 출력된 상수값(C0 및 ROL1(C0)과 32비트 모듈로 가산되며, 그 결과값은 라운드 연산의 클록 순서에 따라 다음과 같이 순환 시프트된다:
1번째 클록; 좌측 13비트 순환 시프트(ROL13), 좌측 17비트 순환 시프트(ROL17)
2번째 클록; 좌측 6비트 순환 시프트(ROL6), 좌측 11비트 순환 시프트(ROL11)
3번째 클록; 좌측 1비트 순환 시프트(ROL1), 좌측 3비트 순환 시프트(ROL3).
이와 같은 순환 시프트 결과값은 각각 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 입력된다. 클록에 따라 시프트되는 T 레지스터부(121)의 값은 다음과 같은 순서로 교대로 출력되어 라운드 연산에 사용된다.
(K0, K1, K2, K3, K4, K5),
(K6, K7, K0, K1, K2, K3),
(K4, K5, K6, K7, K0, K1),
(K2, K3, K4, K5, K6, K7).
여기서, 라운드 연산에 사용되지 않는 T 레지스터부(121)의 값을 제 4 키 레지스터(T6) 및 제 8 키 레지스터(T7)에 저장하고 다음 라운드에서 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)로 시프트시킴으로써, 라운드 키 생성을 4클록 주기로 구현할 수 있다. 이와 같은 구성에 의해 본 발명의 실시예에 따른 장치는 라운드 키를 6개의 레지스터(T0~T5)에 저장하여 멀티플렉서로 출력하는 종래의 장치의 6클록 주기에 비하여 2클록 주기를 감소시킬 수 있다. 이때, 상수값 생성부(129)에서, δ[0]~δ[7]이 제 1 상수 레지스터부(C0) 내지 제 8 상수 레지스터부(C7)의 초기값으로 사용된다.
복호화 동작 모드에서, 키 스케줄러(120)는 도 13에 도시된 바와 같이 구성될 수 있다. 256비트의 마스터 키 K0~K7은 32비트씩 8클록 주기 동안 입력된다. 복호키를 모두 입력받은 후, 제 1 키 레지스터(T0) 및 제 5 키 레지스터(T1)에 저장된 값은 각 라운드의 클록 순서에 따라 다음과 같은 순환 시프트 연산이 수행된다:
2번째 클록; 우측 1비트 순환 시프트(ROR1), 우측 3비트 순환 시프트(ROR3)
3번째 클록; 우측 6비트 순환 시프트(ROR6), 우측 11비트 순환 시프트(ROR11)
4번째 클록; 우측 13비트 순환 시프트(ROR13), 우측 17비트 순환 시프트(ROR17).
이와 같은 순환 시프트 연산의 결과값은 각각 상수값 생성부(129)에서 출력된 상수값(C0, ROL1(C0))과 32비트 모듈로 감산된 후, 제 3 키 레지스터(T4) 및 제 7 키 레지스터(T5)에 입력된다. 클록에 따라 시프트되는 T 레지스터부(121)의 값은 다음과 같은 순서로 교대로 출력되어 라운드 연산에 사용된다 :
(K2, K3, K4, K5, K6, K7),
(K4, K5, K6, K7, K0, K1),
(K6, K7, K0, K1, K2, K3),
(K0, K1, K2, K3, K4, K5).
여기서, 복호화 모드의 상수 초기값은 암호화 동작 모드의 마지막 라운드의 상수값으로, δ[0]~δ[7]을 ROL32 한 값이다.
도 14 내지 도 16을 참조하여 종래의 장치와 본 발명의 실시예에 따른 경량 블록암호 기반 암호화 및 복호화 장치(100)의 동작을 비교한다.
도 14는 LEA-128 모드에서, (a) 종래의 장치의 암호화 모드 및 (b) 복호화 모드, 및 (c) 본 발명의 실시예에 따른 암호화 및 복호화 장치에 대한 키 스케줄링과 라운드 연산 동작을 하기 위한 타이밍도이고, 도 15는 LEA-192 모드에서, (a) 종래의 장치, 및 (b) 본 발명의 실시예에 따른 암호화 및 복호화 장치에 대한 키 스케줄링과 라운드 연산 동작을 하기 위한 타이밍도이며, 도 16은 LEA-256 모드에서, (a) 종래의 장치의 암호화 모드 및 (b) 복호화 모드, 및 본 발명의 실시예에 따른 암호화 및 복호화 장치에 대한 (c) 암호화 모드, 및 (d) 복호화 모드 키 스케줄링과 라운드 연산 동작을 하기 위한 타이밍도이다.
LEA-128 모드에서, 도 14(a) 및 (b)에 도시된 바와 같이, 종래의 장치는 암호화 및 복호화 동작 모드에 라운드마다 4클록이 소요되는 반면, 본 발명의 실시예에 따른 암호화 및 복호화 장치(100)는 도 14(c)에 도시된 바와 같이, 라운드마다 3클록이 소요되어 1클록이 감소되므로 전체적인 동작 속도를 크게 개선할 수 있다.
LEA-192 모드에서, 도 15(a)에 도시된 바와 같이, 종래의 장치는 암호화 및 복호화 동작 모드와 상관없이 라운드마다 3클록이 소요되고, 이와 유사하게 본 발명 실시예에 따른 암호화 및 복호화 장치(100)는 도 15(b)에 도시된 바와 같이, 라운드마다 3클록이 소요된다.
LEA-256 모드에서, 도 16(a) 및 (b)에 도시된 바와 같이, 종래의 장치는 암호화 및 복호화 동작 모드에 라운드마다 6클록이 소요되는 반면, 본 발명의 실시예에 따른 암호화 및 복호화 장치(100)는 도 16(c) 및 (d)에 도시된 바와 같이, 라운드마다 4클록이 소요되어 2클록이 감소되므로 전체적인 동작 속도를 크게 개선할 수 있다.
이상에서 본 발명의 일 실시예에 대하여 설명하였으나, 본 발명의 사상은 본 명세서에 제시되는 실시 예에 제한되지 아니하며, 본 발명의 사상을 이해하는 당업자는 동일한 사상의 범위 내에서, 구성요소의 부가, 변경, 삭제, 추가 등에 의해서 다른 실시 예를 용이하게 제안할 수 있을 것이나, 이 또한 본 발명의 사상범위 내에 든다고 할 것이다.
100 : 경량 블록암호 LEA 기반 암호화 및 복호화 장치
102 : 디멀티플렉서 110 : 라운드부
111 : 변수 레지스터부 112 : 제 1 XOR 연산부
113 : 복호용 시프트 연산부 114 : 모듈로 연산부
115 : 암호용 시프트 연산부 116 : 제 2 XOR 연산부
117 : 출력단 멀티플렉서 120 : 키 스케줄러
121 : T 레지스터부 121a : 짝수 레지스터부
121b : 홀수 레지스터부 122a : 제 1 복호용 시프트 연산부
122b : 제 2 복호용 시프트 연산부 124a : 제 1 암호용 시프트 연산부
124b : 제 2 암호용 시프트 연산부 125a : 제 1 모듈로 연산부
125b : 제 2 모듈로 연산부 126a : 제 1 멀티플렉서
126b : 제 2 멀티플렉서 127a : 제 1 출력단 멀티플렉서
127b : 제 2 출력단 멀티플렉서 129 : 상수값 생성부
130 : 제어부

Claims (22)

  1. 경량 블록암호 LEA(Lightweight Encryption Algorithm)에 기반한 암호화 및 복호화 겸용 장치로서,
    마스터 키 및 평문 또는 암호문을 선택적으로 출력하는 디멀티플렉서;
    상기 마스터 키의 길이, 암호화 및 복호화 동작 모드에 따라 상기 마스터 키를 짝수 레지스터부 및 홀수 레지스터부로 분할하여 온-더-플라이(on-the-fly) 방식에 의해 병렬로 라운드 키 쌍을 생성하는 키 스케줄러;
    상기 마스터 키의 길이, 상기 동작 모드에 따라, 상기 병렬로 생성된 라운드 키 쌍을 이용하여 상기 평문 또는 암호문의 라운드 변환을 반복적으로 수행하여 암호문 또는 복호문을 출력하는 라운드부; 및
    상기 마스터 키의 길이, 상기 동작 모드 및 라운드별 클록에 따른 제어 신호를 생성하는 제어부를 포함하고,
    상기 키 스케줄러 및 상기 라운드부는 입력단 또는 출력단에 멀티플렉서를 구비한 복수의 기능부 및 적어도 하나의 출력단 멀티플렉서를 포함하며, 상기 멀티플렉서들은 상기 동작 모드별로 상기 복수의 기능부가 동작하도록 상기 제어 신호에 따라 상기 복수의 기능부의 입력 또는 출력을 결정하며,
    상기 짝수 레지스터부는 상기 클록에 따라 짝수 번째 마스터 키가 제 1 키 레지스터부로부터 순차적으로 제 4 키 레지스터부로 시프트되고, 상기 홀수 레지스터부는 상기 클록에 따라 홀수 번째 마스터 키가 제 5 키 레지스터부로부터 순차적으로 제 8 키 레지스터부로 시프트되며, 상기 키 레지스터부 각각은 상기 마스터 키를 저장하는 레지스터 및 상기 레지스터의 입력을 결정하는 멀티플렉서를 각각 포함하고,
    상기 키 스케쥴러는 상기 키 레지스터부 중 어느 하나의 출력을 상기 마스터 키의 길이에 따른 제 1 라운드 키로서 출력하는 제 1 출력단 멀티플렉서; 및
    상기 키 레지스터부 중 어느 하나의 출력을 상기 마스터 키의 길이에 따른 제 2 라운드 키로서 출력하는 제 2 출력단 멀티플렉서를 더 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  2. 제 1 항에 있어서,
    상기 라운드부의 복수의 기능부는,
    레지스터 및 상기 레지스터의 입력을 결정하는 멀티플렉서를 각각 포함하고, 평문 또는 암호문이 상태 변수로서 저장되며, 상기 상태 변수 입력시 클록에 따라 제 1 레지스터부로부터 순차적으로 제 4 레지스터부로 시프트하는 4개의 레지스터부를 포함하는 변수 레지스터부;
    제 1 XOR 연산기 및 상기 동작 모드에 따라 상기 제 1 XOR 연산기의 입력을 결정하는 멀티플렉서를 포함하고, 상기 라운드 키 쌍 중 제 1 라운드 키를 XOR 연산하는 제 1 XOR 연산부;
    제 2 XOR 연산기 및 상기 상기 동작 모드에 따라 제 2 XOR 연산기의 입력을 결정하는 멀티플렉서를 포함하고, 상기 라운드 키 쌍 중 제 2 라운드 키를 XOR 연산하는 제 2 XOR 연산부;
    상기 제 1 레지스터부의 출력을 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 하나를 상기 라운드별 클록에 따라 출력하는 멀티플렉서를 포함하는 복호용 시프트 연산부;
    상기 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 모듈로 연산기와, 상기 동작 모드에 따라 상기 복호용 시프트 연산부의 출력 또는 상기 제2 XOR 연산부의 출력으로 상기 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함하고, 상기 모듈로 연산기에 입력되는 상기 제 1 XOR 연산부의 출력과 상기 제2 XOR 연산부의 출력 또는 상기 제 1 XOR 연산부의 출력과 상기 복호용 시프트 연산부의 출력을 모듈로 연산하는 모듈로 연산부; 및
    최종 라운드 변환 결과로서, 상기 입력된 평문에 대한 암호문 또는 상기 입력된 암호문에 대한 복호문으로서 상기 상태 변수 중 하나를 출력하는 출력단 멀티플렉서를 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  3. 제 2 항에 있어서,
    상기 라운드부의 복수의 기능부는, 암호화 동작 모드에서,
    상기 모듈로 연산부의 출력을 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따라 상기 제 1 레지스터부로 출력하는 멀티플렉서를 포함하는 암호용 시프트 연산부를 더 포함하며,
    상기 변수 레지스터부는 상기 상태 변수를 상기 제 1 레지스터부로부터 제 4 레지스터부로 순차적으로 시프트하고, 상기 제 1 XOR 연산부는 상기 제 3 레지스터부의 출력과 상기 제 1 라운드 키를 XOR 연산하며, 상기 제 2 XOR 연산부는 상기 제 4 레지스터부의 출력과 상기 제 2 라운드 키를 XOR 연산하고, 상기 모듈로 연산부는 상기 제 1 XOR 연산부와 상기 2 XOR 연산부의 출력을 모듈로 가산하며, 상기 출력단 멀티플렉서는 상기 최종 라운드 변환 결과로서 상기 제 1 레지스터부의 출력을 상기 암호문으로서 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  4. 제 3 항에 있어서,
    상기 암호용 시프트 연산부는 상기 모듈로 연산부의 출력에 대하여 우측으로 3비트 순환 시프트하는 제 1 시프트 연산기, 우측으로 5비트 순환 시프트하는 제 2 시프트 연산기, 및 좌측으로 9비트 순환 시프트하는 제 3 시프트 연산기를 포함하고, 상기 라운드별 3개의 클록 주기로 상기 제 1 시프트 연산기 내지 상기 제 3 시프트 연산기의 출력을 순차적으로 상기 제 1 레지스터부로 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  5. 제 3 항에 있어서,
    상기 암호용 시프트 연산부의 멀티플렉서는 암호화 동작 모드에서, 상기 입력된 평문을 출력하고, 복호화 동작 모드에서, 상기 입력된 암호문을 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  6. 제 2 항에 있어서,
    상기 라운드부의 복수의 기능부는, 복호화 동작 모드에서,
    상기 변수 레지스터부는 상기 상태 변수를 상기 제 4 레지스터부로부터 상기 제 1 레지스터부로 순차적으로 시프트하며, 상기 제 1 XOR 연산부는 상기 제 4 레지스터부의 출력과 상기 제 1 라운드 키를 XOR 연산하고, 상기 제 2 XOR 연산부는 상기 모듈로 연산부의 출력과 상기 제 2 라운드 키를 XOR 연산하며, 상기 모듈로 연산부는 상기 제 1 XOR 연산부의 출력과 상기 복호용 시프트 연산부의 출력을 모듈로 감산하고, 상기 출력단 멀티플렉서는 상기 최종 라운드 변환 결과로서 상기 제 4 레지스터부의 출력을 상기 복호문으로서 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  7. 제 6 항에 있어서,
    상기 복호용 시프트 연산부는 상기 제 1 레지스터부의 출력에 대하여 우측으로 9비트 순환 시프트하는 제 4 시프트 연산기, 좌측으로 5비트 순환 시프트하는 제 5 시프트 연산기, 및 좌측으로 3비트 순환 시프트하는 제 6 시프트 연산기를 포함하고, 상기 라운드별 3개의 클록 주기로 상기 제 4 시프트 연산기 내지 상기 제 6 시프트 연산기의 출력을 순차적으로 상기 모듈로 연산부로 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  8. 제 1 항에 있어서,
    상기 키 스케줄러의 복수의 기능부는,
    상기 마스터 키의 길이에 따라 상수값이 저장된 상수 레지스터부의 수(n)가 결정되며, 제 1 상수 레지스터부의 출력과, 상기 제 1 상수 레지스터부의 출력을 좌측 1비트 순환 시프트한 출력을 한 쌍의 상수값으로서 출력하고, 라운드 주기로, 상기 상수값을 상기 상수 레지스터부들 사이에서 순차 시프트하며, 클록 주기로, 상기 제 1 상수 레지스터부는 그 출력이 2 비트 순환 시프트되어 재입력되는 상수값 생성부;
    상기 짝수 레지스터부의 제 1 키 레지스터부의 출력을 우측으로 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 하나를 상기 라운드별 클록에 따라 상기 제 1 모듈로 연산부로 출력하는 멀티플렉서를 포함하는 제 1 복호용 시프트 연산부;
    상기 홀수 레지스터부의 제 5 키 레지스터부의 출력을 우측으로 비트 순환 시프트하는 3개의 시프트 연산기 및 상기 3개의 시프트 연산기의 출력 중 하나를 상기 라운드별 클록에 따라 상기 제 2 모듈로 연산부로 출력하는 멀티플렉서를 포함하는 제 2 복호용 시프트 연산부;
    상기 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 제 1 모듈로 연산기와 상기 동작 모드에 따라 상기 짝수 레지스터부의 출력 또는 제 1 복호용 시프트 연산부의 출력으로 상기 제 1 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함하고, 상기 상수값 생성부의 제 1 상수값을 모듈로 연산하는 제 1 모듈로 연산부;
    상기 동작 모드에 따라 모듈로 감산기 또는 모듈로 가산기로 동작하는 제 2 모듈로 연산기와 상기 동작 모드에 따라 상기 홀수 레지스터부의 출력 또는 제 2 복호용 시프트 연산부의 출력으로 상기 제 2 모듈로 연산기의 어느 하나의 입력을 결정하는 멀티플렉서를 포함하고, 상기 상수값 생성부의 제 2 상수값을 모듈로 연산하는 제 2 모듈로 연산부;
    상기 제 1 모듈로 연산부의 출력 또는 상기 출력의 좌측으로 비트 순환 시프트된 결과를 선택적으로 상기 짝수 레지스터부로 출력하는 제 1 멀티플렉서; 및
    상기 제 2 모듈로 연산부의 출력 또는 상기 출력의 좌측으로 비트 순환 시프트된 결과를 선택적으로 상기 홀수 레지스터부로 출력하는 제 2 멀티플렉서;를 더 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  9. 제 8 항에 있어서,
    상기 제 1 출력단 멀티플렉서는 상기 제 1 멀티플렉서, 상기 제 1 키 레지스터, 제 3 키 레지스터, 제 6 키 레지스터, 및 제 7 키 레지스터 중 어느 하나의 출력을 상기 라운드 키 쌍의 제 1 라운드 키로서 상기 제어 신호에 따라 출력하고,
    상기 제 2 출력단 멀티플렉서는 상기 제 5 키 레지스터 내지 상기 제 7 키 레지스터, 및 상기 제 2 멀티플렉서 중 어느 하나의 출력을 상기 라운드 키 쌍의 제 2 라운드 키로서 상기 제어 신호에 따라 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  10. 제 8 항에 있어서,
    상기 짝수 레지스터부는 상기 마스터 키를 암호화 동작 모드에서, 상기 제 1 키 레지스터부로부터 제 3 키 레지스터부로, 복호화 동작 모드에서, 상기 제 3 키 레지스터부로부터 제 1 키 레지스터부로 순차적으로 시프트하고,
    상기 홀수 레지스터부는 상기 마스터 키를 암호화 동작 모드에서, 상기 제 5 키 레지스터부로부터 제 7 키 레지스터부로, 복호화 동작 모드에서, 상기 제 7 키 레지스터부로부터 제 5 키 레지스터부로 순차적으로 시프트하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  11. 제 10 항에 있어서,
    제 4 키 레지스터부의 멀티플렉서는 상기 제 1 키 레지스터부와 상기 제 3 키 레지스터부 사이에서 상기 마스터 키가 클록에 따라 시프트하는 방향을 상기 동작 모드 및 상기 마스터 키의 길이에 따라 결정하고,
    제 8 키 레지스터부의 멀티플렉서는 상기 제 5 키 레지스터부와 상기 제 7 키 레지스터부 사이에서 상기 마스터 키가 클록에 따라 시프트하는 방향을 상기 동작 모드 및 상기 마스터 키의 길이에 따라 결정하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  12. 제 10 항에 있어서,
    상기 제 1 키 레지스터부의 멀티플렉서는 상기 마스터 키, 상기 제 1 멀티플렉서, 상기 제 2 키 레지스터부, 및 상기 제 4 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력하고,
    상기 제 5 키 레지스터부의 멀티플렉서는 상기 마스터 키, 상기 제 2 멀티플렉서, 상기 제 6 키 레지스터부, 및 상기 제 8 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  13. 제 10 항에 있어서,
    상기 제 3 키 레지스터부의 멀티플렉서는 상기 제 1 멀티플렉서, 상기 제 1 키 레지스터부, 상기 제 2 키 레지스터부 및 상기 제 4 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력하고,
    상기 제 7 키 레지스터부의 멀티플렉서는 상기 제 2 멀티플렉서, 상기 제 5 키 레지스터부, 상기 제 6 키 레지스터부 및 상기 제 8 키 레지스터부 중 어느 하나의 출력을 상기 동작 모드 및 상기 라운드별 클록에 따라 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  14. 제 8 항에 있어서,
    상기 키 스케줄러의 복수의 기능부는, 암호화 동작 모드에서,
    상기 제 1 모듈로 연산부의 출력을 좌측으로 비트 순환 시프트하는 3개의 시프트 연산기, 및 상기 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따라 상기 제 1 멀티플렉서로 출력하는 제 1 암호용 시프트 연산부; 및
    상기 제 2 모듈로 연산부의 출력을 비트 순환 시프트하는 3개의 시프트 연산기, 및 상기 3개의 시프트 연산기의 출력 중 어느 하나를 상기 라운드별 클록에 따라 상기 제 2 멀티플렉서로 출력하는 제 2 암호용 시프트 연산부를 더 포함하고,
    상기 상수값 생성부는 라운드 주기로, 상기 상수값을 상기 제 1 상수 레지스터부로부터 제 n 상수 레지스터부로 시프트하며, 상기 제 1 모듈로 연산부는 상기 짝수 레지스터부의 제 3 키 레지스터부의 출력과 상기 상수값 생성부의 제 1 상수값을 모듈로 가산하고, 상기 제 2 모듈로 연산부는 상기 홀수 레지스터부의 제 7 키 레지스터부의 출력과 상기 상수값 생성부의 제 2 상수값을 모듈로 가산하며, 상기 제 1 멀티플렉서는 상기 제 1 암호용 시프트 연산부의 출력을 상기 짝수 레지스터부의 제 1 키 레지스터부로 출력하고, 상기 제 2 멀티플렉서는 상기 제 2 암호용 시프트 연산부의 출력을 상기 홀수 레지스터부의 제 5 키 레지스터부로 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  15. 제 14 항에 있어서,
    상기 제 1 암호용 시프트 연산부는 상기 제 1 모듈로 연산부의 출력에 대하여 좌측으로 13비트 순환 시프트하는 제 7 시프트 연산기, 좌측으로 6비트 순환 시프트하는 제 8 시프트 연산기, 및 좌측으로 1비트 순환 시프트하는 제 9 시프트 연산기를 포함하고, 상기 제 2 암호용 시프트 연산부는 상기 제 2 모듈로 연산부의 출력에 대하여 좌측으로 17비트 순환 시프트하는 제 10 시프트 연산기, 좌측으로 11비트 순환 시프트하는 제 11 시프트 연산기, 및 좌측으로 3비트 순환 시프트하는 제 12 시프트 연산기를 포함하며,
    상기 제 1 암호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 7 시프트 연산기 내지 상기 제 9 시프트 연산기의 출력을 순차적으로 상기 제 1 멀티플렉서로 출력하고, 상기 제 2 암호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 10 시프트 연산기 내지 상기 제 12 시프트 연산기의 출력을 순차적으로 상기 제 2 멀티플렉서로 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  16. 제 8 항에 있어서,
    상기 키 스케줄러의 복수의 기능부는, 복호화 동작 모드에서,
    상기 상수값 생성부는 라운드 주기로, 상기 상수값을 상기 n 상수 레지스터부로부터 상기 제 1 상수 레지스터부로 순차 시프트하며, 상기 제 1 모듈로 연산부는 상기 제 1 복호용 시프트 연산부의 출력과 상기 상수값 생성부의 제 1 상수값을 모듈로 감산하고, 상기 제 2 모듈로 연산부는 상기 제 2 복호용 시프트 연산부의 출력과 상기 상수값 생성부의 제 2 상수값을 모듈로 감산하며, 상기 제 1 멀티플렉서는 상기 제 1 모듈로 연산부의 출력을 상기 짝수 레지스터부의 제 3 키 레지스터부로 출력하고, 상기 제 2 멀티플렉서는 상기 제 2 모듈로 연산부의 출력을 상기 홀수 레지스터부의 제 7 키 레지스터부로 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  17. 제 16 항에 있어서,
    상기 제 1 복호용 시프트 연산부는 상기 짝수 레지스터부의 제 1 키 레지스터부의 출력에 대하여 우측으로 1비트 순환 시프트하는 제 13 시프트 연산기, 우측으로 6비트 순환 시프트하는 제 14 시프트 연산기, 및 우측으로 13비트 순환 시프트하는 제 15 시프트 연산기를 포함하고, 상기 제 2 복호용 시프트 연산부는 상기 홀수 레지스터부의 제 5 키 레지스터부의 출력에 대하여 우측으로 3비트 순환 시프트하는 제 16 시프트 연산기, 우측으로 11비트 순환 시프트하는 제 17 시프트 연산기, 및 우측으로 17비트 순환 시프트하는 제 18 시프트 연산기를 포함하며,
    상기 제 1 복호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 13 시프트 연산기 내지 상기 제 15 시프트 연산기의 출력을 순차적으로 상기 제 1 모듈로 연산부로 출력하고, 상기 제 2 복호용 시프트 연산부는 상기 제어 신호에 따라 라운드별 3개 또는 4개의 클록 주기로 상기 제 16 시프트 연산기 내지 상기 제 18 시프트 연산기의 출력을 순차적으로 상기 제 2 모듈로 연산부로 출력하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  18. 제 8 항에 있어서,
    상기 상수값 생성부는 상기 마스터 키의 길이에 따라 상기 상수 레지스터부의 수를 결정하기 위한 제 1 및 제 2 멀티플렉서를 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  19. 제 18 항에 있어서,
    상기 제 1 상수 레지스터부를 제외한 n-1개의 상수 레지스터부 각각은 좌측 비트 순환 시프트 연산기, 우측 비트 순환 시프트 연산기, 상기 비트 순환 시프트 연산기들의 출력중 하나를 상기 동작 모드에 따라 출력하는 멀티플렉서, 및 상기 멀티플렉서의 출력을 저장하는 레지스터를 더 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  20. 제 19 항에 있어서,
    상기 상수값 생성부는, 암호화 동작 모드에서,
    상기 제 1 상수 레지스터부의 출력을 우측으로 2비트 순환 시프트하는 제 19 시프트 연산기;
    제 2 상수 레지스터부의 출력을 좌측으로 5비트 순환 시프트하는 제 20 시프트 연산기; 및
    상기 제 19 시프트 연산기 및 상기 제 20 시프트 연산기의 출력 중 어느 하나를 상기 제어 신호에 따라 출력하는 제 3 멀티플렉서를 더 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  21. 제 19 항에 있어서,
    상기 상수값 생성부는, 복호화 동작 모드에서,
    상기 마스터 키의 길이에 따라 상기 제 n 상수 레지스터부의 출력중 하나를 출력하는 제 4 멀티플렉서;
    상기 제 4 멀티플렉서의 출력을 우측으로 1비트 순환 시프트하는 제 21 시프트 연산기;
    상기 제 1 상수 레지스터부의 출력을 좌측으로 2비트 순환 시프트하는 제 22 시프트 연산기; 및
    상기 제 1 상수 레지스터부의 출력을 우측으로 4비트 순환 시프트하여 상기 제 2 상수 레지스터부로 출력하는 제 23 비트 연산기를 더 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
  22. 제 21 항에 있어서,
    상기 제 1 상수 레지스터부의 출력을 좌측으로 1비트 순환 시프트하는 제 24 비트 연산기; 및
    상기 제어 신호에 따라 상기 제 21 시프트 연산기, 상기 제 22 시프트 연산기, 및 제 3 멀티플렉서 중 어느 하나의 출력을 상기 제 1 상수 레지스터부로 출력하는 제 5 멀티플렉서를 더 포함하는, 경량 블록암호 LEA 기반 암호화 및 복호화 장치.
KR1020150032184A 2015-03-09 2015-03-09 경량 블록암호 lea 기반 암호화 및 복호화 장치 KR101662291B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150032184A KR101662291B1 (ko) 2015-03-09 2015-03-09 경량 블록암호 lea 기반 암호화 및 복호화 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150032184A KR101662291B1 (ko) 2015-03-09 2015-03-09 경량 블록암호 lea 기반 암호화 및 복호화 장치

Publications (2)

Publication Number Publication Date
KR20160108861A KR20160108861A (ko) 2016-09-21
KR101662291B1 true KR101662291B1 (ko) 2016-10-14

Family

ID=57080025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150032184A KR101662291B1 (ko) 2015-03-09 2015-03-09 경량 블록암호 lea 기반 암호화 및 복호화 장치

Country Status (1)

Country Link
KR (1) KR101662291B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102097702B1 (ko) * 2018-10-18 2020-04-07 주식회사 우리넷 저지연 블록 암호 운영모드를 위한 키 생성 방법
KR102613632B1 (ko) * 2022-11-04 2023-12-13 이동휘 스마트팜용 통신 제어 장치 및 그 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101362675B1 (ko) 2012-11-30 2014-02-12 한국전자통신연구원 저전력 암호화 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Donggeon Lee 외 3인, Sensors 2014 "Efficient hardware Implementation of the Lightweight Block Encryption Algorithm LEA" (2014.01.08. 공개)
김동현 외 1명, 한국정보통신학회 논문지 제16권 "4가지 운영모드와 3가지 마스터 키 길이를 지원하는 블록암호 알고리즘 ARIA의 효율적인 하드웨어 구현" (2012.11. 공개)

Also Published As

Publication number Publication date
KR20160108861A (ko) 2016-09-21

Similar Documents

Publication Publication Date Title
JP4127472B2 (ja) データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体
KR100806468B1 (ko) 데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
KR100349332B1 (ko) 데이터 암호화장치 및 방법
EP3371928B1 (en) Key sequence generation for cryptographic operations
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
MX2011001228A (es) Metodo para generar un codigo de autenticacion de mensajes basados en el cifrado.
CA2874612C (en) Method for generating a pseudorandom sequence, and method for coding or decoding a data stream
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2002032018A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
KR20050087271A (ko) 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
KR101662291B1 (ko) 경량 블록암호 lea 기반 암호화 및 복호화 장치
Iftikhar et al. Evaluating the Performance Parameters of Cryptographic Algorithms for IOT-based Devices
JP2015191107A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR100710455B1 (ko) 라인달 블록 암호 장치와 그 암호화 및 복호화 방법
Wang et al. An ultra compact block cipher for serialized architecture implementations
RU2206961C2 (ru) Способ итеративного блочного шифрования двоичных данных
RU2359415C2 (ru) Способ криптографического преобразования блоков цифровых данных
KR101617694B1 (ko) 블록암호 hight 의 암호화/복호화 장치
WO2012077419A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP5020115B2 (ja) 暗号化装置および復号化装置
KR100316025B1 (ko) 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치
Hassan New Approach for Modifying DES Algorithm Using 4-States Multi-keys
Hattab et al. Developing the Complexity and Security of the Twofish Algorithm Through a New Key Scheduling Design
RU2199826C2 (ru) Способ итеративного шифрования блоков цифровых данных

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190903

Year of fee payment: 4