KR102279245B1 - 사물인터넷 응용을 위한 암호화 장치 및 그 방법 - Google Patents

사물인터넷 응용을 위한 암호화 장치 및 그 방법 Download PDF

Info

Publication number
KR102279245B1
KR102279245B1 KR1020190036762A KR20190036762A KR102279245B1 KR 102279245 B1 KR102279245 B1 KR 102279245B1 KR 1020190036762 A KR1020190036762 A KR 1020190036762A KR 20190036762 A KR20190036762 A KR 20190036762A KR 102279245 B1 KR102279245 B1 KR 102279245B1
Authority
KR
South Korea
Prior art keywords
output value
xor
mux
encryption
round
Prior art date
Application number
KR1020190036762A
Other languages
English (en)
Other versions
KR20200119413A (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 KR1020190036762A priority Critical patent/KR102279245B1/ko
Publication of KR20200119413A publication Critical patent/KR20200119413A/ko
Application granted granted Critical
Publication of KR102279245B1 publication Critical patent/KR102279245B1/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
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

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

Abstract

본 발명은 사물인터넷 응용을 위한 암호화 장치 및 그 방법을 개시한다. 즉, 본 발명은 IoT 분야에 적용할 수 있는 AES, ARIA 및 CLEFIA를 모두 지원하며 선택적으로 동작시킬 수 있는 저복잡도의 암호화 장치를 제공함으로써, IoT 분야에서의 보안성을 강화할 수 있다.

Description

사물인터넷 응용을 위한 암호화 장치 및 그 방법{Apparatus of encrypting for Internet-of-Things applications and method thereof}
본 발명은 사물인터넷 응용을 위한 암호화 장치 및 그 방법에 관한 것으로서, 특히 IoT(Internet of Things) 분야에 적용할 수 있는 AES(advanced encryption standard), ARIA(academy, research, institute, agency) 및 CLEFIA를 모두 지원하며 선택적으로 동작시킬 수 있는 저복잡도의 암호화 장치를 제공하는 사물인터넷 응용을 위한 암호화 장치 및 그 방법에 관한 것이다.
최근 4차 산업 혁명이 대두하고 있으며 특히, 사물 간 연결망을 기반으로 방대한 정보를 수집 및 활용하는 IoT 시장의 규모는 점차 증가하고 있는 추세이다.
이에 따라, IoT를 겨냥한 보안 위협은 기하급수적으로 증가해 IoT의 암호화의 중요성은 큰 이슈가 되고 있다. 또한, 소형화되고 있는 IoT 기기들을 고려하여 볼 때 현재 시장에 존재하는 IoT들의 응용에 적합하도록 하기 위해선 소형의 암호화 처리기가 필요하다.
이러한 암호화 처리기를 구현함에 있어서 전세계적으로 가장 많이 사용되는 AES(advanced encryption standard)를 가장 먼저 생각할 수 있다. 또한, 국내에서는 정부 차원에서 장려하고 있는 ARIA(academy, research, institute, agency)가 가장 보편적으로 사용되고 있으며, ISO(international organization for standardization)에서 경량 암호화 표준으로 등록된 알고리즘인 CLEFIA는 다양한 분야의 IoT 기기에 적용할 수 있을 것으로 판단된다. 위 세 알고리즘을 모두 이용한다면 전반적으로 AES 알고리즘을 통해 많은 IoT 기기에서 사용 가능하며, ARIA 알고리즘을 통해 국내 기관과 이와 관련된 부처에서 사용되는 기기에 대해 보호를 할 수 있다. 또한, 나머지 기기에 대한 보호는 국제 표준기구에 등록된 CLEFIA 알고리즘을 통해 가능하므로 위 3개의 알고리즘을 모두 구현한다면, 대부분의 기기에 대해 보안 시스템을 적용할 수 있다.
위의 세 가지 알고리즘은 각각의 연산에서 SPN(substitution-permutation network) 구조를 사용하고 있다. 이때, SPN 구조는 암호화 및 복호화 과정에 있어 원함수와 이에 대응하는 역함수 모듈이 필요하다. 즉, 기존의 단일 암호화 프로세서의 경우 하나의 알고리즘을 위해 암호화 모듈과 복호화 모듈이 동시에 필요하다. 따라서, 3개의 알고리즘을 모두 구현한다면 각각의 알고리즘에 대한 암호화와 복호화 모듈이 필요해 하드웨어 복잡도가 증가하게 된다. 이에 따라, 위의 세 알고리즘이 모두 S-box라는 표를 이용한다는 공통점을 이용해 이를 공통된 연산 모듈로 구현해 각 알고리즘별로 다른 암호화 처리기를 구현하는 경우보다 더 소형으로 구현할 수 있을 수 있다.
한국공개특허 제10-2017-0083359호 [제목: AES 알고리즘을 이용한 사물인터넷 기기간 암호화 및 복호화 방법]
본 발명의 목적은 IoT 분야에 적용할 수 있는 AES, ARIA 및 CLEFIA를 모두 지원하며 선택적으로 동작시킬 수 있는 저복잡도의 암호화 장치를 제공하는 사물인터넷 응용을 위한 암호화 장치 및 그 방법을 제공하는 데 있다.
본 발명의 다른 목적은 128비트 기반으로 라운드 키 생성 과정과 암호화 및 복호화 과정을 하나로 공유하며, AES, ARIA 및 CLEFIA를 포함하는 복수의 알고리즘의 구조를 공유하는 사물인터넷 응용을 위한 암호화 장치 및 그 방법을 제공하는 데 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치는 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부; 시프트 연산을 수행하는 시프트 로우; 치환 연산을 수행하는 치환부; 확산 연산을 수행하는 확산부; XOR 연산을 수행하는 XOR 연산부; 및 GFN(generalized feistel network) 연산을 수행하는 CLEFIA 데이터 프로세서를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 상기 AES 알고리즘에 따른 암호화 기능, 상기 AES 알고리즘에 따른 복호화 기능, 상기 ARIA 알고리즘에 따른 암호화 기능, 상기 ARIA 알고리즘에 따른 복호화 기능, 상기 CLEFIA 알고리즘에 따른 암호화 기능 및 상기 CLEFIA 알고리즘에 따른 복호화 기능 중 어느 하나의 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부, 상기 XOR 연산부 및 상기 CLEFIA 데이터 프로세서 중 적어도 하나의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 설정된 모드가 상기 AES 알고리즘에 따른 암호화 기능일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 시프트 로우 및 상기 확산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하도록 상기 치환부, 상기 시프트 로우, 상기 확산부 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하도록 상기 치환부, 상기 시프트 로우 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 설정된 모드가 상기 AES 알고리즘에 따른 복호화 기능일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 시프트 로우, 상기 치환부, 상기 XOR 연산부 및 상기 확산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 XOR 연산부 및 상기 확산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하도록 상기 시프트 로우, 상기 치환부 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 설정된 모드가 상기 ARIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 확산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 확산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 설정된 모드가 상기 CLEFIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부, 상기 CLEFIA 데이터 프로세서 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법은 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 및 상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 상기 AES 알고리즘에 따른 암호화 기능, 상기 AES 알고리즘에 따른 복호화 기능, 상기 ARIA 알고리즘에 따른 암호화 기능, 상기 ARIA 알고리즘에 따른 복호화 기능, 상기 CLEFIA 알고리즘에 따른 암호화 기능 및 상기 CLEFIA 알고리즘에 따른 복호화 기능 중 어느 하나의 기능을 수행하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치는 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부; 시프트 연산을 수행하는 시프트 로우; 치환 연산을 수행하는 치환부; 확산 연산을 수행하는 확산부; XOR 연산을 수행하는 XOR 연산부; 및 GFN 연산을 수행하는 CLEFIA 데이터 프로세서를 포함하며, 상기 제어부는, 상기 설정된 모드가 AES 알고리즘을 이용한 암호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치는 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부; 시프트 연산을 수행하는 시프트 로우; 치환 연산을 수행하는 치환부; 확산 연산을 수행하는 확산부; XOR 연산을 수행하는 XOR 연산부; 및 GFN 연산을 수행하는 CLEFIA 데이터 프로세서를 포함하며, 상기 제어부는, 상기 설정된 모드가 AES 알고리즘을 이용한 복호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 복호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치는 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부; 시프트 연산을 수행하는 시프트 로우; 치환 연산을 수행하는 치환부; 확산 연산을 수행하는 확산부; XOR 연산을 수행하는 XOR 연산부; 및 GFN 연산을 수행하는 CLEFIA 데이터 프로세서를 포함하며, 상기 제어부는, 상기 설정된 모드가 ARIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 상기 ARIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부 및 상기 XOR 연산부의 동작을 제어할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치는 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부; 시프트 연산을 수행하는 시프트 로우; 치환 연산을 수행하는 치환부; 확산 연산을 수행하는 확산부; XOR 연산을 수행하는 XOR 연산부; 및 GFN 연산을 수행하는 CLEFIA 데이터 프로세서를 포함하며, 상기 제어부는, 상기 설정된 모드가 CLEFIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 상기 CLEFIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부, 상기 XOR 연산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법은 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 상기 설정된 모드가 AES 알고리즘을 이용한 암호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능을 수행하는 단계; 상기 설정된 모드가 AES 알고리즘을 이용한 복호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 복호화 기능을 수행하는 단계; 상기 설정된 모드가 ARIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 상기 ARIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하는 단계; 및 상기 설정된 모드가 CLEFIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 상기 CLEFIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법은 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 상기 설정된 모드가 AES 알고리즘을 이용한 암호화 모드일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하는 단계; 상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하는 단계; 상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하는 단계; 및 상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법은 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 상기 설정된 모드가 AES 알고리즘을 이용한 복호화 모드일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 단계; 상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 단계; 상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하는 단계; 및 상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법은 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 상기 설정된 모드가 ARIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 단계; 상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 단계; 상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하는 단계; 및 상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법은 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 상기 설정된 모드가 CLEFIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 단계; 상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 단계; 상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하는 단계; 및 상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함할 수 있다.
본 발명은 IoT 분야에 적용할 수 있는 AES, ARIA 및 CLEFIA를 모두 지원하며 선택적으로 동작시킬 수 있는 저복잡도의 암호화 장치를 제공함으로써, IoT 분야에서의 보안성을 강화할 수 있는 효과가 있다.
또한, 본 발명은 128비트 기반으로 라운드 키 생성 과정과 암호화 및 복호화 과정을 하나로 공유하며, AES, ARIA 및 CLEFIA를 포함하는 복수의 알고리즘의 구조를 공유함으로써, 면적 효율성을 강화할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치의 구성을 나타낸 블록도이다.
도 2 및 도 3은 본 발명의 실시예에 따른 F0와 F1의 내부 구성을 나타낸 도이다.
도 4는 본 발명의 실시예에 따른 치환부의 구성을 나타낸 블록도이다.
도 5는 본 발명의 실시예에 따른 시프트 로우의 행 단위 시프트 연산의 예를 나타낸 도이다.
도 6은 본 발명의 실시예에 따른 확산부의 구성을 나타낸 블록도이다.
도 7은 본 발명의 실시예에 따른 CLEFIA 데이터 패스부의 구성을 나타낸 블록도이다.
도 8 내지 도 15는 본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법을 나타낸 흐름도이다.
도 16 내지 도 18은 본 발명의 실시예에 따른 AES 알고리즘을 이용한 암호화 과정의 예를 나타낸 도이다.
도 19 내지 도 21은 본 발명의 실시예에 따른 AES 알고리즘을 이용한 복호화 과정의 예를 나타낸 도이다.
도 22 내지 도 24는 본 발명의 실시예에 따른 ARIA 알고리즘을 이용한 암호화 과정 또는 복호화 과정의 예를 나타낸 도이다.
도 25 내지 도 27은 본 발명의 실시예에 따른 CLEFIA 알고리즘을 이용한 암호화 과정 또는 복호화 과정의 예를 나타낸 도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치(10)의 구성을 나타낸 블록도이다.
도 1에 도시한 바와 같이, 사물인터넷 응용을 위한 암호화 장치(10)는 데이터 레지스터(100), 먹스부(200), 치환부(300), 시프트 로우(400), 확산부(500), XOR 연산부(600), 키 레지스터(700), ARIA 초기 RK 생성부(800), CLEFIA 데이터 프로세서(900) 및 제어부(1000)로 구성된다. 도 1에 도시된 암호화 장치(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 1에 도시된 구성 요소보다 많은 구성 요소에 의해 암호화 장치(10)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 암호화 장치(10)가 구현될 수도 있다.
본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 장치(10)는 입력 데이터에 대해서 입력된 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 입력 데이터에 대해 AES(Advanced Encryption Standard) 알고리즘, ARIA(academy, research, institute, agency) 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘을 이용해서 암호화 또는 복호화 기능을 수행한다.
여기서, 상기 AES는 2001년 미국 NIST(national institute of standards and technology)에서 DES(data encryption standard)를 대체할 알고리즘으로 개발되었으며, ISO/IEC 18033-3 국제 표준 암호 알고리즘으로 등록이 되어 미국 외에 캐나다, 브라질, 일본, 유럽 등 많은 나라에서 권장 암호 알고리즘으로 이용하고 있다.
또한, 상기 AES는 SPN(substitution-permutation network) 구조를 가지는 알고리즘으로, 암호화를 위한 키(key)의 경우, 128비트, 192비트 및 256비트를 지원하며, 입력으로 들어가는 블록(block)의 크기는 128비트로 정해져 있다. 또한, 키 사이즈(key size)에 따라 전체 라운드(round) 수는 10라운드, 12라운드 및 14라운드로 달라지며, 각 라운드마다 내부 함수로 지정되어 있는 동작을 수행한다. 이때, 상기 내부 함수로는 SubBytes, ShiftRows, MixColumns와 AddRoundKey가 있다. 상기 SubByte의 경우 기존의 데이터를 s-box를 이용하여 대치(또는 치환)하며, 상기 ShiftRow는 4×4 크기의 블록의 각 행에 대해 로테이션(rotation)을 수행한다. 또한, 상기 MixColumns의 경우, 유한체(finite field) 내에서만 이용되는 곱 연산을 수행하며, 상기 AddRoundKey는 키 확장(key expansion)을 통해 만들어진 라운드 키(round key)와 데이터의 XOR 연산을 수행한다.
전체 라운드 중 첫 번째 라운드(또는 1라운드)에서는 최초로 사용하게 되는 입력 마스터 키(master key)를 이용한 XOR 연산의 결과를 이용하여 상기 SubBytes, 상기 ShiftRows와 상기 MixColumns 연산이 수행된 후, 키 확장을 통해 해당하는 라운드 키와의 XOR 연산이 이루어지며, 이는 128비트의 키 기준으로 9번이 진행된다. 마지막 라운드에서는 상기 ShiftRows 연산 후의 결과를 마지막 라운드 키와의 XOR 연산을 통해 최종 암호화문을 얻어낼 수 있다.
상기 AES에 대한 복호화 과정에서는 내부 함수로 Inverse SubBytes, Inverse ShiftRows, Inverse MixColumns 등 역연산에 해당하는 대응 함수를 이용하여 기존 암호화 순서와 반대로 진행되며, 이때 사용되는 키는 암호화 시의 라운드 키가 역순으로 사용이 된다.
또한, 상기 키 확장의 경우, 첫 입력으로 들어온 마스터 키(또는 초기 키)의 블록 데이터(block data) 중 4번째 열을 이용하여 확장을 시작하는데, 이를 위로 로테이션, s-box를 이용한 대치 후, 첫 열과의 XOR와 기존의 정해진 상수 값과의 XOR 연산을 통해 다음 라운드 키 블록의 첫 번째 열의 데이터를 생성하며, 그 후로는 이전 키의 두 번째 열과 해당 라운드 키의 첫 번째 열과의 XOR 연산을 통해 두 번째 열을 생성하며, 두 번째 열을 생성하는 방법과 같은 방법으로 세 번째 열 및 네 번째 열의 데이터를 얻어 해당 라운드 키 블록의 값을 생성할 수 있다. 이후의 라운드 키 또한, 이러한 방식을 통해 128비트 키의 경우 10개의 키 블록(key block), 192비트 키의 경우 12개의 키 블록, 256비트 키의 경우 14개의 키 블록을 생성할 수 있다. 이러한 키 확장은 실제 암호화를 하는 동안 동시에 생성해 나가며 수행해 나갈 수 있으며, 이러한 온더플라이(on-the-fly) 방식 또한 많은 경우에 적용되고 있다.
상기 ARIA는 2004년 한국 KS 1213-2 국내 표준으로 등재되어 국내 공공기관 및 기업에서 다양하게 사용되고 있다.
또한, 상기 ARIA 블록 암호 알고리즘은 128비트 블록 암호 알고리즘이며, 암호화 과정과 복호화 과정이 같은 구조인 Involution SPN으로 되어 있어, 하나의 설계로 두 과정 모두를 사용할 수 있는 이점을 가지고 있다.
또한, 상기 ARIA 알고리즘은 128/192/256비트 암호 키를 사용하여, 128비트의 데이터 블록을 처리하는 알고리즘이며, 암호 키 길이에 따라 라운드 수가 다르며, 128/192/256 비트별로 각각 12/14/16 라운드를 거치게 된다.
라운드 함수는 홀수 라운드 함수, 짝수 라운드 함수, 최종 라운드 함수로 구성되며, AddRoundKey, SubstLayer와 DiffLayer로 구성된다. 상기 AddRoundKye는 128비트 라운드 키를 128비트 입력과 XOR 연산을 수행한다. 또한, 상기 SubstLayer는 8비트 입/출력 s-box들로 구성되며, s-box와 이의 역변환으로 이루어진 2개의 유형으로 구성되며, 두 유형의 치환 계층은 교대로 사용되며, 전체 구조가 인볼루션(involution) 구조가 되도록 한다. 또한, 상기 DiffLayer는 상태의 바이트들을 섞는 고정으로 16×16 인볼루션 이진 행렬을 사용한다. 입력 16바이트에 대하여 바이트 단위의 행렬 곱을 수행하여 16 바이트의 출력을 얻어낸다.
이와 같이, 상기 ARIA 알고리즘은 첫 번째 라운드가 이루어지기 전에 AddRoundKey 연산을 한 번 수행하고, SubstLayer, DiffLayer와 AddRoundKey 세 가지 변환으로 이루어진 하나의 라운드를 반복한다.
또한, 마지막 라운드에서는 DiffLayer는 생략하고 SubstLayer와 AddRoundKey만을 수행한다.
상기 CLEFIA는 2007년 일본 소니에서 개발되어 ISO/IEC 29192-2 국제 표준 알고리즘으로 등록되었으며, 경량화 기법이 적용되어 하드웨어로 구현 시, 작은 면적으로 구현 가능한 장점이 있다.
또한, 상기 CLEFIA 알고리즘은 GFN(generalized feistel network)의 구조로 되어 있으며, 입력은 128비트, 키 사이즈는 128비트, 192비트와 256비트를 지원하며, 이러한 키 사이즈에 따라 각각 18라운드, 22 라운드 및 26 라운드로 구분된다.
또한, 상기 CLEFIA 알고리즘은 최초 입력 128비트를 4개의 브랜치(branch)로 나누어 32비트 단위의 연산을 수행한다. 처음과 마지막 라운드에서 초기 입력했던 마스터 키를 이용한 화이트닝 키(whitening key)인 WK0 ~ WK3가 사용되며, 라운드 키가 각각의 F0와 F1에 적용되어 수행된다. 상기 도 2 및 도 3은 상기 F0와 F1의 내부 구성을 나타낸다. 32비트의 데이터를 8비트 단위로 나누어 연산이 수행되며, 각각 바이트 단위로 구분된 라운드 키와의 XOR 연산이 수행되며, 데이터의 위치에 따라 2개의 s-box 중 S0와 S1에서 선택하여 대치가 이루어진다. 상기 S0는 GF(24) 안에서 4비트 s-box인 SSi(i=1,2,3,4)를 이용하여 생성되며, 상기 S1은 상기 S0와 달리 GF(28) 안에서 아핀 변환(affine transform)을 이용하여 생성된다. 상기 F0와 F1에 입력되는 각각의 라운드 키는 DoubleSwap 함수와 32비트 상수 값을 이용하여 생성된다. 초기 입력했던 마스터 키 K가 화이트닝 키 WKi(i=1,2,3,4)을 생성한다고 하면, 중간키 L은 K와 상수값을 GFNn,m의 입력값으로 한 출력값이 된다. 상기 GFNn,m은 n 개의 브랜치를 가지는 m 라운드의 GFN 구조이다. 여기서, 상기 n과 m은 자연수이다. 이때, 128비트 키는 GFN4,12를 사용하며, 192비트 또는 256비트 키는 GFN8,10을 사용한다. 라운드 키 RKi(i=1, ..., 2r-1)는 K와 L 값을 DoubleSwap 함수와 XOR 연산을 반복하여 생성한다.
또한, 본 발명의 실시예에 따른 상기 사물인터넷 응용을 위한 암호화 장치(10)는 AES, ARIA와 CLEFIA의 3가지 운영 모드와 128비트의 1가지 마스터 키 길이를 지원한다.
또한, 상기 암호화 장치(10)는 상기 치환부(300), 상기 확산부(500) 및 상기 CLEFIA 데이터 프로세서(900)를 통해 암호화 및 복호화 과정을 수행하는 데이터 프로세싱 모듈과, 키를 확장시키는 키 프로세싱 모듈을 공유시키는 구조로 구성할 수 있다.
또한, 상기 암호화 장치(10)는 AES 모드에서는 키 스케줄링(key scheduling)과 데이터 프로세싱(data processing)에서 공통으로 사용되는 s-box를 포함한 치환 연산, ARIA와 CLEFIA 모드에서는 키 스케줄링과 데이터 프로세싱에서 사용되는 모든 패스(path)와 모듈(module)을 공유하도록 구성할 수 있다.
전체적인 데이터 플로우(data flow)는 상기 제어부(1000)에 의해 제어되며, 라운드당 1 클록 주기가 소요된다. 초기 1라운드 진행시 처음 입력된 입력 데이터가 상기 데이터 레지스터(100)에 입력되지 않고 바로 연산이 진행된다. 1라운드 이후 결과는 상기 데이터 레지스터(100)에 입력되어 다음 라운드가 진행될 때 이용된다. 또한, 상기 암호화 장치(10)는 암호화와 복호화에서 사용되는 구조를 구분하지 않고 하나의 구조로 통합하여 두 연산을 모두 처리하도록 구성한다.
상기 암호화 장치(10)를 통한 AES 모드 암호화의 경우, substitution, shift, diffusion과 add roundkey의 순서로 진행되며, AES 모드 복호화의 경우, inversion shift, inversion substitution, add roundkey와 inversion diffusion 순서로 연산이 진행되며, 암호화의 경우 21 클록이 소요되며, 복호화의 경우 22 클록이 소요된다.
또한, 상기 암호화 장치(10)를 통한 ARIA 모드의 경우, add roundkey, substitution, diffusion의 순서로 연산되며 암/복호화에 모두 29 클록이 소요된다.
또한, 상기 암호화 장치(10)를 통한 CLEFIA 모드의 경우, add roundkey, substitution, diffusion의 순서로 F-function 연산이 진행되며, CLEFIA 데이터 프로세스 블록을 통해 데이터의 암/복호화가 진행된다. 이때, 상기 AES와 ARIA와 달리, 상기 CLEFIA는 상수값의 생성과 라운드 키 생성에 86 클록이 소요되며, 암/복호화에 총 105 클록이 소요된다.
상기 데이터 레지스터(data register)(100)는 상기 암호화 장치(10)에 입력되는 입력 데이터, 각 알고리즘에 따른 암호화 과정 또는 복호화 과정에서의 라운드별 결과 데이터, 라운드 키(round key) 등을 저장한다. 여기서, 상기 입력 데이터는 평문(plain text) 또는 암호문(cipher text)일 수 있다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)에 저장된 값(예를 들어 상기 제 6 먹스(260)의 출력값)을 출력한다. 이때, 상기 데이터 레지스터(100)의 출력값은 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달된다.
상기 먹스부(200)는 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230), 제 4 먹스(240), 제 5 먹스(250), 제 6 먹스(260) 및 제 7 먹스(270)로 구성된다.
상기 제 1 먹스(210)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 플로우 변환 기능을 수행한다.
즉, 상기 제 1 먹스(210)는 상기 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값(Data_out), 상기 치환부(300)의 출력값(Sub_out) 및 상기 XOR 연산부(600)의 출력값(XOR_out)을 먹싱하고, 먹싱 결과를 상기 제 1 먹스(210)의 출력값으로 출력한다.
즉, AES 알고리즘에 대한 암호화 과정이 수행 중인 경우, 상기 제 1 먹스(210)는 상기 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 1 먹스(210)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드인 경우, 상기 제 1 먹스(210)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 1 먹스(210)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제 1 먹스(210)는 상기 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 1 먹스(210)의 출력값으로 출력한다
이와 같이, 상기 제 1 먹스(210)는 최초 입력된 입력 데이터에 대한 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 제어부(1000)에 의해 설정된 모드에 따른 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 치환부(300)의 출력값 및 상기 XOR 연산부(600)의 출력값 중 어느 하나의 값을 출력할 수 있다. 이때, 본 발명의 실시예에서는 상기 제어 신호를 하나로 표기하고 있으나, 상기 제어 신호는 각 구성 요소를 제어하기 위해서 서로 다른 형태로 구성될 수 있다.
상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 플로우 변환 기능을 수행한다.
즉, 상기 제 2 먹스(220)는 상기 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값(Data_out), 시프트 로우(400)의 출력값(Shift_out) 및 XOR 연산부(600)의 출력값(XOR_out)을 먹싱하고, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
이때, AES 알고리즘에 대한 암호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드인 경우, 상기 제 2 먹스(220)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 암호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제 2 먹스(220)는 상기 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 경우, 상기 제 2 먹스(220)는 상기 제어 신호를 근거로 상기 시프트 로우(400)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다.
또한, ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 경우, 상기 제 2 먹스(220)는 상기 제어 신호를 근거로 XOR 연산부(600)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다.
또한, CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 경우, 상기 제 2 먹스(220)는 상기 제어 신호를 근거로 XOR 연산부(600)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다.
이와 같이, 상기 제 2 먹스(220)는 최초 입력된 입력 데이터에 대한 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 제어부(1000)에 의해 설정된 모드에 따른 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 시프트 로우(400)의 출력값 및 XOR 연산부(600)의 출력값 중 어느 하나의 값을 출력할 수 있다.
상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 플로우 변환 기능을 수행한다.
즉, 상기 제 3 먹스(230)는 상기 제어 신호를 근거로 상기 치환부(300)의 출력값(Sub_out), 상기 시프트 로우(400)의 출력값(Shift_out), 상기 XOR 연산부(600)의 출력값(XOR_out) 및 상기 ARIA 초기 RK 생성부(800)의 출력값(ARIA_RK)를 먹싱하고, 먹싱 결과를 상기 제 3 먹스(230)의 출력값으로 출력한다.
이때, AES 알고리즘에 대한 암호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 3 먹스(230)는 상기 제어 신호를 근거로 상기 시프트 로우(400)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 암호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 3 먹스(230)는 동작하지 않는다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 3 먹스(230)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 3 먹스(230)는 동작하지 않는다.
또한, ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 3 먹스(230)는 상기 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다.
또한, ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 3 먹스(230)는 동작하지 않는다.
또한, CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 경우, 상기 제 3 먹스(230)는 상기 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다.
이와 같이, 상기 제 3 먹스(230)는 최초 입력된 입력 데이터에 대한 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 제어부(1000)에 의해 설정된 모드에 따른 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 ARIA 초기 RK 생성부(800)의 출력값 중 어느 하나의 값을 출력할 수 있다.
상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 플로우 변환 기능을 수행한다.
즉, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값(Data_out), 상기 치환부(300)의 출력값(Sub_out), 상기 시프트 로우(400)의 출력값(Shift_out) 및 상기 확산부(500)의 출력값(Diff_out)을 먹싱하고, 먹싱 결과를 상기 제 4 먹스(240)의 출력값으로 출력한다.
이때, AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드인 경우, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 입력 데이터를 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 암호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 확산부(500)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 암호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 시프트 로우(400)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제 4 먹스(240)는 상기 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
이와 같이, 상기 제 4 먹스(240)는 최초 입력된 입력 데이터에 대한 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 제어부(1000)에 의해 설정된 모드에 따른 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 치환부(300)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 확산부(500)의 출력값 중 어느 하나의 값을 출력할 수 있다.
상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 플로우 변환 기능을 수행한다.
즉, 상기 제 5 먹스(250)는 상기 제어 신호를 근거로 상기 초기 키값(Initial_Key) 및 상기 키 레지스터(700)의 출력값(KEY_REG_oDATA)을 먹싱하고, 먹싱 결과를 상기 제 5 먹스(250)의 출력값으로 출력한다.
이때, 모든 알고리즘에 대해서 전체 라운드 중 첫 번째 라운드 경우, 상기 제 5 먹스(250)는 상기 제어 신호를 근거로 상기 초기 키값을 상기 제 5 먹스(250)의 출력값으로 출력한다.
또한, 모든 알고리즘에 대해서 상기 전체 라운드 중에서 상기 첫 번째 라운드를 제외한 나머지 라운드의 경우, 상기 제 5 먹스(250)는 상기 제어 신호를 근거로 상기 키 레지스터(700)의 출력값을 상기 제 5 먹스(250)의 출력값으로 출력한다.
이와 같이, 상기 제 5 먹스(250)는 컨트롤러 카운트를 통해, 초기 키값이 필요한 부분(또는 연산)인지 상기 키 레지스터(700)의 출력값인 라운드 키가 필요한 부분인지 구별하여, 연산을 진행할 수 있다.
또한, 이와 같이, 상기 제 5 먹스(250)는 최초 입력된 입력 데이터에 대한 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 제어부(1000)에 의해 설정된 모드에 따른 제어 신호를 근거로 상기 초기 키값 및 상기 키 레지스터(700)의 출력값 중 어느 하나의 값을 출력할 수 있다.
상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 플로우 변환 기능을 수행한다.
즉, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 치환부(300)의 출력값(Sub_out), 상기 확산부(500)의 출력값(Diff_out), 상기 XOR 연산부(600)의 출력값(XOR_out) 및 상기 CLEFIA 데이터 프로세서(900)의 출력값(CLEFIA_out)을 먹싱하여, 먹싱 결과를 상기 제 6 먹스(260)의 출력값으로 출력한다.
이때, AES 알고리즘에 대한 암호화 과정이 수행 중인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다. 여기서, 상기 AES 알고리즘에 대한 암호화 과정의 최종 라운드 과정이 수행 중인 경우, 상기 제 6 먹스(260)는 해당 XOR 연산부(600)의 출력값(또는 상기 입력 데이터에 대해 AES 알고리즘을 적용하여 암호화한 값/데이터)을 상기 암호화 장치(10)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 확산부(500)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다.
또한, AES 알고리즘에 대한 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값(또는 상기 입력 데이터에 대해 AES 알고리즘을 적용하여 복호화한 값/데이터)을 상기 암호화 장치(10)의 출력값으로 출력한다.
또한, ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 확산부(500)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다.
또한, ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값(또는 상기 입력 데이터에 대해 ARIA 알고리즘을 적용하여 암호화 또는 복호화한 값/데이터값/데이터)을 상기 암호화 장치(10)의 출력값으로 출력한다.
또한, CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 CLEFIA 데이터 프로세서(900)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다.
또한, CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정이 수행 중인 상태에서 전체 라운드 중 최종 라운드인 경우, 상기 제 6 먹스(260)는 상기 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값(또는 상기 입력 데이터에 대해 CLEFIA 알고리즘을 적용하여 암호화 또는 복호화한 값/데이터값/데이터)을 상기 암호화 장치(10)의 출력값으로 출력한다.
이와 같이, 상기 제 6 먹스(260)는 최초 입력된 입력 데이터에 대한 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 상기 제어부(1000)에 의해 설정된 모드에 따른 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값 중 어느 하나의 값을 출력할 수 있다.
상기 제 7 먹스(270)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 ARIA 초기 RK 생성부(800)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하고, 먹싱 결과를 상기 제 7 먹스(270)의 출력값으로 출력한다.
상기 치환부(Substitution Unit)(300)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 AES 알고리즘, 상기 ARIA 알고리즘 및 상기 CLEFIA 알고리즘의 치환 연산 기능을 수행하며, s-box, inverse s-box 공유 부분을 묶어서 통합적으로 사용한다.
도 4에 도시된 바와 같이, 상기 치환부(300)는 Substitution Unit_32 모듈 4개가 결합한 구조로 구성하며, 128비트 입력을 32비트 4개로 분할하여 치환을 수행한다.
또한, 상기 치환부(300)는 32비트의 데이터를 입력받아 s-box 생성기(s-box generator)를 통과시켜 결과값을 얻어낸다.
또한, 상기 도 4에 도시된 바와 같이, 상기 치환부(300)는 rotword rotation부(310), 제 11 먹스(320), 복수의 S-box 생성부(330), 제 12 먹스(340), 제 11 XOR 연산부(350) 및 제 13 먹스(360)로 구성된다.
상기 rotword rotation부(310)는 시프트 로우 변환과 유사한 기능을 수행한다.
즉, 상기 rotword rotation부(310)는 32비트의 데이터에 대해서, 하나의 열에 대해 시프트 기능을 적용한다.
예를 들어, 4개의 바이트로 구성된 하나의 워드([[a0, a1, a2, a3])를 입력으로 왼쪽으로 한 바이트씩 이동([a1, a2, a3, a0])시킨다.
상기 제 11 먹스(320)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 rotword rotation부(310)의 출력값과 상기 32비트의 입력 데이터를 먹싱하고, 먹싱 결과를 상기 제 11 먹스(320)의 출력값으로 출력한다.
즉, 상기 제 11 먹스(320)는 라운드 키 연산, 데이터 암호화 연산, 데이터 복호화 연산 등을 구별하여 출력한다. 이때, 상기 제 11 먹스(320)의 제어 신호(또는 selection 신호)로 Stage & Flag_key를 사용하며, 'State'는 상기 AES 알고리즘, 상기 ARIA 알고리즘 및 상기 CLEFIA 알고리즘을 구별하기 위한 신호이고, 'Flag_key'는 암호화 또는 복호화와, 각각의 라운드에 따른 데이터 신호를 나타낸다.
라운드 키 연산으로 구별되면, 상기 제 11 먹스(320)는 rotword 연산과 RCON 연산이 진행된 결과값을 출력한다.
또한, 데이터 암호화 또는 데이터 복호화로 구별되면, 상기 제 11 먹스(320)는 s-box 연산만 진행되도록 한다. 첫 번째 라운드의 경우, s-box 연산이 없으므로 바로 결과가 나올 수 있다.
상기 복수의 S-box 생성부(330) 각각은 상기 제 11 먹스(320)로부터 출력된 상기 제 11 먹스(320)의 출력값을 근거로 라운드 키 값을 각각 생성한다.
상기 제 12 먹스(340)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 복수의 S-box 생성부(330)로부터 각각 생성된 복수의 라운드 키를 먹싱하고, 먹싱 결과를 상기 제 12 먹스(340)의 출력값으로 출력한다.
상기 제 11 XOR 연산부(350)는 상기 제 12 먹스(340)의 출력값과 RCON 신호를 XOR 연산하고, XOR 연산 결과를 상기 제 11 XOR 연산부(350)의 출력값으로 출력한다.
이때, 상기 RCON 신호에 포함되는 RCON은 라운드 상수(round constant)일 수 있다.
여기서, 상기 RCON은 4의 배수마다 연산이 진행되는 t의 값과 XOR 연산을 하며,
I=4, RCON = 01000000
I=8, RCON = 02000000
I=12, RCON = 04000000
등과 같은 값으로 구성할 수 있다.
상기 제 13 먹스(360)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 제 12 먹스(340)의 출력값과 상기 제 11 XOR 연산부(350)의 출력값을 먹싱하고, 먹싱 결과를 상기 제 13 먹스(360)(또는 상기 치환부(300))의 출력값으로 출력한다.
또한, 상기 AES 알고리즘에 대한 암호화 과정인 경우, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환(또는 대치/치환 연산)하고, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
또한, 상기 AES 알고리즘에 대한 복호화 과정인 경우, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환(또는 대치/치환 연산)하고, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
또한, 상기 ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정인 경우, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 ARIA 알고리즘의 암호화 또는 복호화에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환(또는 대치/치환 연산)하고, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
또한, 상기 CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정인 경우, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 CLEFIA 알고리즘의 암호화 또는 복호화에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환(또는 대치/치환 연산)하고, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
이때, 상기 치환부(300)의 출력값은 상기 제 1 먹스(210), 상기 제 3 먹스(230), 상기 제 4 먹스(240) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
상기 시프트 로우(shift row)(400)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 AES 알고리즘에서의 시프트 연산을 수행한다.
도 5에 도시된 바와 같이, 상기 시프트 로우(400)는 행 단위로 시프트 연산을 수행한다.
또한, 상기 시프트 로우(400)는 상기 제 1 먹스(210)의 출력값을 상기 AES 알고리즘, 상기 ARIA 알고리즘 및 상기 CLEFIA 알고리즘에 각각 대응하여 미리 설정된 각각의 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 상기 시프트 로우(400)의 출력값으로 출력한다.
이때, 상기 시프트 로우(400)의 출력값은 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 4 먹스(240)의 입력값으로 전달된다.
상기 확산부(Diffusion Unit)(500)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 AES 알고리즘, 상기 ARIA 알고리즘 및 상기 CLEFIA 알고리즘의 확산 연산 기능을 수행하며, 확산 연산이 진행되는 공유 부분을 묶어서 통합적으로 사용한다.
도 6에 도시된 바와 같이, 상기 확산부(500)는 GF(28) 상에서의 곱셈기(multiplier)로 구성되며, 상기 AES 알고리즘, 상기 ARIA 알고리즘 및 상기 CLEFIA 알고리즘별로 행렬 곱을 연산한다.
또한, 상기 도 6에 도시된 바와 같이, 상기 확산부(500)는 AES 암호 확산부(510), AES 복호 확산부(520), ARIA 확산부(530), CLEFIA 확산부(540), GF 곱셈기(550) 및 제 21 먹스(560)로 구성된다.
상기 AES 암호 확산부(510)는 128비트의 데이터에 대해서 AES 알고리즘에 대해 미리 설정된 유한체(finite field) 내에서 정의되는 곱셈 연산 수행을 위해 128비트의 데이터의 크기를 조정하여, 해당 AES 알고리즘에 대응하는 상수 행렬을 출력한다.
상기 AES 복호 확산부(520)는 곱셈 연산 수행을 위해 128비트의 데이터의 크기를 조정하고, 해당 AES 알고리즘에 대응하는 상수 행렬을 출력한다.
상기 ARIA 확산부(530)는 곱셈 연산 수행을 위해 128비트의 데이터의 크기를 조정하고, 해당 ARIA 알고리즘에 대응하는 상수 행렬을 출력한다.
상기 CLEFIA 확산부(540)는 곱셈 연산 수행을 위해 128비트의 데이터의 크기를 조정하고, 해당 CLEFIA 알고리즘에 대응하는 상수 행렬을 출력한다.
상기 GF 곱셈기(또는 GF(28) 곱셈기)(550)는 상기 AES 암호 확산부(510), 상기 AES 복호 확산부(520), 상기 ARIA 확산부(530) 및 상기 CLEFIA 확산부(540)의 각각의 출력값에 대해서 각 알고리즘(예를 들어 AES, ARIA, CLEFIA 등 포함)에 대해 미리 설정된 유한체(finite field) 내에서 정의되는 상수 행렬을 이용해서 곱셈 연산을 수행한다.
즉, 상기 GF 곱셈기(550)는 원소의 개수가 유한한 유한체 안에서 곱셈 연산을 수행한다.
이때, ARIA 알고리즘의 경우, 기약 다항식을 GF(28) 정의에 의해,
Figure 112019032475320-pat00001
을 이용한다.
예를 들어,
Figure 112019032475320-pat00002
이 되는데, 자세히 설명하면 다음과 같다.
Figure 112019032475320-pat00003
Figure 112019032475320-pat00004
=
Figure 112019032475320-pat00005
Figure 112019032475320-pat00006
Figure 112019032475320-pat00007
=
Figure 112019032475320-pat00008
그리고,
Figure 112019032475320-pat00009
=
Figure 112019032475320-pat00010
이므로,
Figure 112019032475320-pat00011
Figure 112019032475320-pat00012
=
Figure 112019032475320-pat00013
이 되고,
Figure 112019032475320-pat00014
에 해당하는 16진표 표기는 {c1}이 될 수 있다.
상기 각 알고리즘별 행렬 곱은 AES 알고리즘과 ARIA 알고리즘은 16×16 행렬을 이용하여 연산한다.
즉, 상기 확산부(500)에서 사용하는 확산 함수는 입력 16바이트에 대해서 바이트 단위의 행렬 곱을 수행하여 16 바이트의 결과를 출력할 수 있다.
또한, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다.
이때, 상기 확산부(500)의 출력값은 상기 제 4 먹스(240), 상기 제 6 먹스(260) 및 CLEFIA 데이터 프로세서(900)의 입력값으로 전달된다.
상기 XOR 연산부(또는 배타적 논리합 연산부)(600)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 각 알고리즘에 따른 암호화 과정 또는 복호화 과정의 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 입력 데이터와 제 5 먹스(250)의 출력값인 초기 키값을 XOR 연산한 결과값(XOR_out)을 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230) 및 제 6 먹스(260)의 입력값으로 전달한다.
즉, 상기 수신된 알고리즘 신호에 AES 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 암호화 기능을 수행하기 위한 정보가 포함된 상태인 경우, 상기 수신된 알고리즘 신호에 AES 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 복호화 기능을 수행하기 위한 정보가 포함된 상태인 경우, 상기 수신된 알고리즘 신호에 ARIA 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 암호화 또는 복호화 기능을 수행하기 위한 정보가 포함된 상태인 경우 및, 상기 수신된 알고리즘 신호에 CLEFIA 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 암호화 또는 복호화 기능을 수행하기 위한 정보가 포함된 상태인 경우 중 어느 하나의 경우에, 상기 XOR 연산부(600)는 상기 제어 신호를 근거로 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 입력 데이터와 제 5 먹스(250)의 출력값인 초기 키값을 XOR 연산한 결과값을 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230) 및 제 6 먹스(260)의 입력값으로 전달한다.
또한, 각 알고리즘에 따른 전체 라운드 중에서 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
이때, 상기 XOR 연산부(600)의 출력값은 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
상기 키 레지스터(key register)(700)는 상기 제 7 먹스(270)의 출력값을 저장한다.
즉, 상기 키 레지스터(700)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 제 7 먹스(270)의 출력값인 상기 AES 알고리즘, 상기 ARIA 알고리즘 및 상기 CLEFIA 알고리즘에 사용되는 라운드 키를 저장한다. 이때, 상기 키 레지스터(700)는 상기 CLEFIA 알고리즘의 경우, CON 값도 저장한다.
또한, 상기 키 레지스터(700)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 키 레지스터(700)에 저장된 라운드 키를 상기 제 5 먹스(250) 및 상기 CLEFIA 데이터 프로세서(900)의 입력값으로 전달한다.
상기 ARIA 초기 RK 생성부(800)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 ARIA 초기 키를 이용하여 화이트 키(white key) 128비트 4개를 생성한다.
또한, 상기 ARIA 초기 RK 생성부(800)는 상기 생성된 4개의 128비트 화이트 키를 상기 ARIA 초기 RK 생성부(800)의 출력값으로 출력한다.
이때, 상기 ARIA 초기 RK 생성부(800)의 출력값은 상기 제 3 먹스(230) 및 상기 제 7 먹스(270)의 입력값으로 전달한다.
상기 CLEFIA 데이터 프로세서(900)는 CLEFIA 데이터 패스부(910), CLEFIA 라운드 키 생성부(920) 및 CLEFIA 상수 생성부(930)로 구성된다.
상기 CLEFIA 데이터 패스부(CLEFIA data path)(910)는 CLEFIA의 GFN 구조를 포함하여 구성한다.
또한, 도 7에 도시된 바와 같이, 상기 CLEFIA 데이터 패스부(910)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 입력 데이터에 대해서 시프트 연산을 수행한다.
즉, 상기 CLEFIA 데이터 패스부(910)는 상기 제어 신호를 근거로 1, 2, 3, 4의 순서를 2, 3, 4, 1의 순서로 바꾸는 연산을 수행한다.
상기 CLEFIA 라운드 키 생성부(920)는 상기 CLEFIA 알고리즘의 라운드 키를 생성한다.
상기 CLEFIA 상수 생성부(CLEFIA CONS GENERATOR)(930)는 상기 CLEFIA 알고리즘의 상수(constant) 값을 생성한다.
즉, 상기 CLEFIA 상수 생성부(930)는 초기에 정해진 초기 값(initial value)인 0x428a를 이용해서 다음의 스텝들에 따른 연산을 수행하여 상수값(CON)을 생성한다.
Step 1. To ← IV(k)
Step 2. For i=0 to l(k) - 1 do the following;
Step 2.1. CON2i (k) ← (Ti
Figure 112019032475320-pat00015
P) | (
Figure 112019032475320-pat00016
<<< 1)
Step 2.2. CON2i+1 (k) ← (
Figure 112019032475320-pat00017
Figure 112019032475320-pat00018
Q) | ( Ti <<< 8)
Step 2.3. Ti+1 ← Ti
Figure 112019032475320-pat00019
0x0002-1
이와 같이, 상기 CLEFIA 데이터 프로세서(900)는 상기 확산부(500)의 출력값에 대해 암호화 기능 또는 복호화 기능을 수행한다.
또한, 상기 CLEFIA 데이터 프로세서(900)는 암호화 기능 수행 결과 또는 복호화 기능 수행 결과를 상기 CLEFIA 데이터 프로세서(900)의 출력값으로 상기 제 6 먹스(260) 및 제 7 먹스(270)에 전달한다.
상기 제어부(controller, 또는 MCU(microcontroller unit)(1000)는 상기 사물인터넷 응용을 위한 암호화 장치(10)의 전반적인 제어 기능을 실행한다.
또한, 상기 제어부(1000)는 저장부(미도시)에 저장된 프로그램 및 데이터를 이용하여 상기 사물인터넷 응용을 위한 암호화 장치(10)의 전반적인 제어 기능을 실행한다. 상기 제어부(1000)는 RAM, ROM, CPU, GPU, 버스를 포함할 수 있으며, RAM, ROM, CPU, GPU 등은 버스를 통해 서로 연결될 수 있다. CPU는 상기 저장부에 액세스하여, 상기 저장부에 저장된 O/S를 이용하여 부팅을 수행할 수 있으며, 상기 저장부에 저장된 각종 프로그램, 콘텐츠, 데이터 등을 이용하여 다양한 동작을 수행할 수 있다.
또한, 상기 제어부(1000)는 상기 사물인터넷 응용을 위한 암호화 장치(10)에 포함된 각 구성 요소들(100, 200, 300, 400, 500, 600, 700, 800, 900)을 제어하기 위한 제어 신호를 생성하고, 상기 생성된 제어 신호를 근거로 각 구성 요소들의 동작을 제어한다. 이때, 본 발명의 실시예에서는 상기 제어 신호를 하나로 표기하고 있으나, 상기 제어 신호는 각 구성 요소를 제어하기 위해서 서로 다른 형태로 구성될 수 있다.
또한, 상기 AES 알고리즘에 대한 암호화 과정에서, 상기 제어부(1000)는 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 substitution(치환), shift(시프트), diffusion(확산) 및 add roundkey(애드 라운드키) 연산을 수행하기 위해 각 구성 요소들을 순차적으로 반복 제어한다.
이와 같이, 상기 제어부(1000)의 제어에 의해 AES 알고리즘에 따른 암호화 과정에서 치환 기능, 시프트 기능, 확산 기능 및 라운드 키에 대한 XOR 연산 기능을 반복적으로 수행할 수 있다.
또한, 상기 AES 알고리즘에 대한 복호화 과정에서, 상기 제어부(1000)는 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 inverse shift(인버스 시프트), inverse substitution(인버스 치환), add roundkey(애드 라운드키) 및 inverse diffusion(인버스 확산) 연산을 수행하기 위해 각 구성 요소들을 순차적으로 반복 제어한다.
이와 같이, 상기 제어부(1000)의 제어에 의해 AES 알고리즘에 따른 복호화 과정에서 치환 기능, 시프트 기능, 확산 기능 및 라운드 키에 대한 XOR 연산 기능을 반복적으로 수행할 수 있다.
또한, 상기 ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정에서, 상기 제어부(1000)는 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 add roundkey(애드 라운드키), substitution(치환)/inverse substitution(인버스 치환) 및 diffusion(확산)/inverse diffusion(인버스 확산) 연산을 수행하기 위해 각 구성 요소들을 순차적으로 반복 제어한다.
또한, 상기 CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정에서, 상기 제어부(1000)는 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 add roundkey(애드 라운드키), substitution(치환)/inverse substitution(인버스 치환) 및 diffusion(확산)/inverse diffusion(인버스 확산)의 순서로 F-함수에 대해 연산을 진행하고, F-함수 연산 결과에 따른 암호화 기능 또는 복호화 기능을 반복적으로 수행하도록 제어한다.
이와 같이, 상기 제어부(100)는 AES, ARIA 및 CLEFIA의 데이터 암호화 라운드와 라운드 키 생성에 맞춰 카운트(count)를 통해 전체 데이터를 제어할 수 있다.
또한, 상기 사물인터넷 응용을 위한 암호화 장치(10)는 Verilog HDL(hardware description language)을 이용하여 RTL(register-transfer level) 설계를 수행하였다.
[표 1]은 본 발명의 실시예에 따른 암호화 장치(10)의 65nm CMOS 공정 기반 논리 합성 결과를 나타낸다.
논리 합성 결과 총 게이트 수는 약 11K 개이며, 기존에 존재하는 IoT 타깃의 암호화 프로세서들과 비교했을 때, 본 발명의 실시예에 따른 암호화 장치(10)가 면적 측면에서 최대 42.3% 효율적인 것을 확인할 수 있다.
또한, 본 발명의 실시예에 따른 암호화 장치(10)는 알고리즘별로 각각 NIST, KISA와 SONY에서 제공하는 각각의 테스트 벡터(test vector)를 통하여 암호화 프로토콜로 정해진 결과대로 정상적으로 암호화 및 복호화 수행을 확인하였다.
이와 같이, 본 발명의 실시예에 따른 암호화 장치(10)는 라운드 키 확장부와 데이터 암호화 및 복호화를 하는 전반적인 구조를 공유해, 모듈의 재사용성을 높이며 로직 엘리먼트(logic element) 사용을 최소화하였다.
이를 통해, 본 발명의 실시예에 따른 암호화 장치(10)는 기존의 각 알고리즘의 개별 암호화 프로세서들보다 효율적인 면적 구성을 가능하게 하며, 소형화가 필수적인 IoT 시장에서 전반적인 IoT 기기에 통용 가능하며 다양한 응용 가능성을 확대할 수 있다.
Algorithm Key length Data width Gate count Reduction(%)
비교대상 1 AES 128 128 5,398 -
비교대상 2 ARIA 128 128 11,301 -
비교대상 3 CLEFIA 128 128 2,488 -
비교대상 1+2+3 AES,
ARIA,
CLEFIA

128

128

19,187

-
본원발명 AES,
ARIA,
CLEFIA

128

128

11,080

42.3
여기서, 상기 비교 대상 1은 A. Satoh, S. Morioka, K. Takano, and S. Munetoh, "A Compact Rijndael Hardware Architecture with S-BOX Optimization,"(International conference on the Theory and Application of Cryptology and Information Security, Gold Coast: Australia, pp. 239-254, Nov. 2001.)을 참조하고, 상기 비교 대상 2는 G. Ryu, B. Koo, S. Yang, and T. Chang, "Area Efficient Implementation of 32-bit Architecture of ARIA Block Cipher Using Light Weight Diffusion Layer"(The Journal of The Korea Institute of Information Security and Cryptology, Vol. 16, No. 6, pp. 15-24, Dec. 2006.)을 참조하고, 상기 비교 대상 3은 T. Akishita and H. Hiwatari, "Very Compact hardware Implementation of the Blockcipher CLEFIA"(International of the Blockcihper CLEFIA"(International Workshop on Selected Areas in Cryptography, Toronto: Canada, pp. 278-292, Aug. 2012.)을 참조한다.
이와 같이, IoT 분야에 적용할 수 있는 AES, ARIA 및 CLEFIA를 모두 지원하며 선택적으로 동작시킬 수 있는 저복잡도의 암호화 장치를 제공할 수 있다.
또한, 이와 같이, 128비트 기반으로 라운드 키 생성 과정과 암호화 및 복호화 과정을 하나로 공유하며, AES, ARIA 및 CLEFIA를 포함하는 복수의 알고리즘의 구조를 공유할 수 있다.
이하에서는, 본 발명에 따른 사물인터넷 응용을 위한 암호화 방법을 도 1 내지 도 27을 참조하여 상세히 설명한다.
도 8 내지 도 15는 본 발명의 실시예에 따른 사물인터넷 응용을 위한 암호화 방법을 나타낸 흐름도이다.
먼저, 제어부(1000)는 암호화 장치(10)에 입력되는(또는 수신되는) 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 복수의 알고리즘 중에서 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정한다.
즉, 상기 제어부(1000)는 상기 암호화 장치(10)에 입력되는 입력 데이터를 특정 알고리즘에 따라 암호화 또는 복호화하기 위해서, 상기 암호화 장치(10)에 입력되는(또는 수신되는) 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화/복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정한다. 여기서, 상기 입력 데이터는 평문 또는 암호문일 수 있다.
일 예로, 상기 제어부(1000)는 입력된 128비트의 제 1 입력 데이터에 대해서 AES 알고리즘을 통해 암호화하기 위한 제 1 알고리즘 신호 및 제 1 모드 신호를 근거로 상기 복수의 알고리즘 중에서 AES 알고리즘을 이용해서 암호화하기 위한 제 1 모드를 설정한다(S810).
이후, 상기 수신된 알고리즘 신호에 AES 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 암호화 기능을 수행하기 위한 정보가 포함된 상태인 경우, XOR 연산부(또는 배타적 논리합 연산부)(600)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 입력 데이터와 제 5 먹스(250)의 출력값인 초기 키값을 XOR 연산한 결과값(XOR_out)을 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230) 및 제 6 먹스(260)의 입력값으로 전달한다.
일 예로, 상기 128비트의 제 1 입력 데이터에 대해서 총 10라운드에 걸쳐서 AES 알고리즘을 적용하여 암호화 기능을 수행하기 위해서, 상기 XOR 연산부(600)는 상기 제어부(100)에 의해 생성된 제 1 제어 신호를 근거로 총 10라운드 중 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 제 1 입력 데이터와 상기 제 5 먹스(250)의 출력값인 제 1 초기 키값을 XOR 연산한 결과값을 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달한다(S820).
이후, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 레지스터(100)의 출력값, 시프트 로우(400)의 출력값 및 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
이때, 첫 번째 라운드인 경우, 상기 XOR 연산부(600)의 출력값이 상기 제 2 먹스(220)의 출력값으로 출력된다.
또한, 전체 라운드 중에서 상기 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 레지스터(100)의 출력값, 시프트 로우(400)의 출력값 및 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
일 예로, 첫 번째 라운드에서, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 2 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다(S830).
이후, 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환(또는 대치/치환 연산)한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
이때, 상기 치환부(300)의 출력값은 상기 제 1 먹스(210), 상기 제 3 먹스(230), 상기 제 4 먹스(240) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
일 예로, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값인 상기 XOR 연산부(600)의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다(S840).
이후, 상기 제 1 먹스(210)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 치환부(300)의 출력값을 먹싱하여, 먹싱 결과를 제 1 먹스(210)의 출력값으로 출력한다.
일 예로, 상기 제 1 먹스(210)는 상기 제어부(1000)에 의해 생성된 제 3 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 1 먹스(210)의 출력값으로 출력한다(S850).
이후, 시프트 로우(400)는 상기 제 1 먹스(210)의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하여, 시프트 연산 결과를 상기 시프트 로우(400)의 출력값으로 출력한다.
이때, 상기 시프트 로우(400)의 출력값은 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 4 먹스(240)의 입력값으로 전달된다.
일 예로, 상기 시프트 로우(400)는 상기 제 1 먹스(210)의 출력값인 상기 치환부(300)의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 수행 결과를 상기 시프트 로우(400)의 출력값으로 출력한다(S860).
이후, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 ARIA 초기 RK 생성부(800)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 3 먹스(230)의 출력값으로 출력한다.
일 예로, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제 4 제어 신호를 근거로 상기 시프트 로우(400)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다(S870).
이후, 확산부(500)는 상기 제 3 먹스(230)의 출력값에 대해 확산 연산을 수행한 후, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다.
이때, 상기 확산부(500)의 출력값은 상기 제 6 먹스(260), 상기 제 4 먹스(240) 및 CLEFIA 데이터 프로세서(900)의 입력값으로 전달된다.
일 예로, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값인 상기 시프트 로우(400)의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다(S880).
이후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스(240)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드인 경우, 상기 입력 데이터가 상기 제 4 먹스(240)의 출력값으로 출력된다.
또한, 상기 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과인 상기 확산부(500)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 전체 라운드 중 최종 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과인 상기 시프트 로우(400)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
일 예로, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 5 제어 신호를 근거로 상기 확산부(500)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다(S890).
이후, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 초기 키값 및 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 5 먹스(250)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드 경우, 상기 초기 키값이 상기 제 5 먹스의 출력값으로 출력된다.
또한, 상기 전체 라운드 중에서 상기 첫 번째 라운드를 제외한 나머지 라운드의 경우, 상기 키 레지스터(700)의 출력값이 상기 제 5 먹스(250)의 출력값으로 출력된다.
일 예로, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제 6 제어 신호를 근거로 상기 초기 키값 및 상기 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과인 상기 키 레지스터(700)의 출력값을 상기 제 5 먹스(250)의 출력값으로 출력한다(S900).
이후, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
이때, 상기 XOR 연산부(600)의 출력값은 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
일 예로, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값인 상기 확산부(500)의 출력값과 상기 제 5 먹스(250)의 출력값인 상기 키 레지스터(700)의 출력값에 대한 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다(S910).
이후, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 6 먹스(260)의 출력값으로 출력한다.
일 예로, 최종 라운드가 아닌 경우, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 7 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다(S920).
이후, 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 제 6 먹스(260)의 출력값을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다.
또한, 상기 제 2 먹스(220)는 2번째 라운드부터(또는 첫 번째 라운드 이후) 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
이때, 상기 AES 알고리즘에 대한 암호화 과정에서, 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 substitution(치환), shift(시프트), diffusion(확산) 및 add roundkey(애드 라운드키)에 대한 앞선 과정들(예를 들어 S830 단계 ~ S930 단계)이 반복 수행될 수 있다.
이와 같이, 제어부(1000)의 제어에 의해 AES 알고리즘에 따른 암호화 과정에서 치환 기능, 시프트 기능, 확산 기능 및 라운드 키에 대한 XOR 연산 기능을 반복적으로 수행할 수 있다.
일 예로, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제 8 제어 신호를 근거로 상기 데이터 레지스터(100)에 저장된 값(예를 들어 상기 제 6 먹스(260)의 출력값)을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다.
또한, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 9 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력하는 과정을 수행한다(S930).
이후, 최종 라운드인 경우, 상기 데이터 레지스터(100)의 출력값에 대해 상기 치환부(300)를 통한 치환 기능 및 상기 시프트 로우(400)를 통한 시프트 기능 수행 후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과(또는 상기 제 1 입력 데이터에 대해 AES 알고리즘을 적용하여 암호화한 값/데이터)를 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다.
이와 같이, 상기 AES 알고리즘에 대한 암호화 과정은 도 16에 도시된 첫 번째 라운드, 도 17에 도시된 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드, 도 18에 도시된 최종 라운드에 대해서 각각 연산 기능이 수행되어, 최종적으로 입력 데이터를 암호화한 암호화 데이터가 상기 암호화 장치(10)의 출력값으로 출력될 수 있다. 여기서, 상기 iDATA는 입력 데이터를 나타내고, 상기 iKEY는 초기 키를 나타내고, 상기 EN_DEC는 암호화/복호화의 종류를 나타내는 모드 신호를 나타내고, 상기 iRSTn은 리셋 신호를 나타낸다. 또한, 상기 XOR 연산부(600)의 출력값은 XOR_out 또는 Out_add로 표기하고, 상기 CLEFIA 데이터 프로세서(900)의 출력값은 CLEFIA_out 또는 Out_CLEFIA로 표시한다.
일 예로, AES 알고리즘에 따른 상기 제 1 입력 데이터에 대한 암호화를 위한 최종 라운드일 때, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 10 제어 신호를 근거로 상기 시프트 로우(400)를 통한 시프트 기능 수행에 따른 상기 시프트 로우(400)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 11 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과인 상기 XOR 연산부(600)의 출력값(또는 상기 제 1 입력 데이터에 대해 AES 알고리즘을 적용하여 암호화한 값/데이터)을 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다(S940).
또한, 상기 수신된 알고리즘 신호에 AES 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 복호화 기능을 수행하기 위한 정보가 포함된 상태인 경우, 상기 XOR 연산부(600)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 입력 데이터와 제 5 먹스(250)의 출력값인 초기 키값을 XOR 연산한 결과값(XOR_out)을 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230) 및 제 6 먹스(260)의 입력값으로 전달한다.
일 예로, 상기 128비트의 제 2 입력 데이터에 대해서 총 10라운드에 걸쳐서 AES 알고리즘을 적용하여 복호화 기능을 수행하기 위해서, 상기 XOR 연산부(600)는 상기 제어부(100)에 의해 생성된 제 12 제어 신호를 근거로 총 10라운드 중 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 제 2 입력 데이터와 상기 제 5 먹스(250)의 출력값인 제 2 초기 키값을 XOR 연산한 결과값을 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달한다(S950).
이후, 상기 제 1 먹스(210)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 치환부(300)의 출력값을 먹싱하여, 먹싱 결과를 제 1 먹스(210)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드인 경우, 상기 XOR 연산부(600)의 출력값이 상기 제 1 먹스(210)의 출력값으로 출력된다.
또한, 상기 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 치환부(300)의 출력값을 먹싱하여, 먹싱 결과를 제 1 먹스(210)의 출력값으로 출력한다.
일 예로, 첫 번째 라운드인 상태일 때, 상기 제 1 먹스(210)는 상기 제어부(1000)에 의해 생성된 제 13 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 1 먹스(210)의 출력값으로 출력한다(S960).
이후, 상기 시프트 로우(400)는 상기 제 1 먹스(210)의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하여, 시프트 연산 결과를 상기 시프트 로우(400)의 출력값으로 출력한다.
이때, 상기 시프트 로우(400)의 출력값은 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 4 먹스(240)의 입력값으로 전달된다.
일 예로, 상기 시프트 로우(400)는 상기 제 1 먹스(210)의 출력값인 상기 XOR 연산부(600)의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 수행 결과를 상기 시프트 로우(400)의 출력값으로 출력한다(S970).
이후, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 레지스터(100)의 출력값, 시프트 로우(400)의 출력값 및 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
일 예로, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 14 제어 신호를 근거로 상기 시프트 로우(400)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다(S980).
이후, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환(또는 대치/치환 연산)한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
이때, 상기 치환부(300)의 출력값은 상기 제 1 먹스(210), 상기 제 3 먹스(230), 상기 제 4 먹스(240) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
일 예로, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값인 상기 시프트 로우(400)의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 인버스 s-box를 이용하여 치환한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다(S990).
이후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스(240)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드인 경우, 상기 입력 데이터가 상기 제 4 먹스(240)의 출력값으로 출력된다.
또한, 상기 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과인 상기 치환부(300)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
일 예로, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 15 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다(S1000).
이후, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 초기 키값 및 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 5 먹스(250)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드 경우, 상기 초기 키값이 상기 제 5 먹스의 출력값으로 출력된다.
또한, 상기 전체 라운드 중에서 상기 첫 번째 라운드를 제외한 나머지 라운드의 경우, 상기 키 레지스터(700)의 출력값이 상기 제 5 먹스(250)의 출력값으로 출력된다.
일 예로, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제 16 제어 신호를 근거로 상기 초기 키값 및 상기 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과인 상기 키 레지스터(700)의 출력값을 상기 제 5 먹스(250)의 출력값으로 출력한다(S1010).
이후, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
이때, 상기 XOR 연산부(600)의 출력값은 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
일 예로, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값인 상기 치환부(300)의 출력값과 상기 제 5 먹스(250)의 출력값인 상기 키 레지스터(700)의 출력값에 대한 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다(S1020).
이후, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 ARIA 초기 RK 생성부(800)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 3 먹스(230)의 출력값으로 출력한다.
일 예로, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제 17 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다(S1030).
이후, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값에 대해 확산 연산을 수행한 후, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다.
이때, 상기 확산부(500)의 출력값은 상기 제 6 먹스(260), 상기 제 4 먹스(240) 및 CLEFIA 데이터 프로세서(900)의 입력값으로 전달된다.
일 예로, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값인 상기 XOR 연산부(600)의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다(S1040).
이후, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 6 먹스(260)의 출력값으로 출력한다.
일 예로, 최종 라운드가 아닌 경우, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 18 제어 신호를 근거로 상기 확산부(500)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다(S1050).
이후, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 제 6 먹스(260)의 출력값을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다.
또한, 상기 제 1 먹스(210)는 2번째 라운드부터(또는 첫 번째 라운드 이후) 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 치환부(300)의 출력값을 먹싱하여, 먹싱 결과를 제 1 먹스(210)의 출력값으로 출력한다.
이때, 상기 AES 알고리즘에 대한 복호화 과정에서, 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 inverse shift(인버스 시프트), inverse substitution(인버스 치환), add roundkey(애드 라운드키) 및 inverse diffusion(인버스 확산)에 대한 앞선 과정들(예를 들어 S960 단계 ~ S1060 단계)이 반복 수행될 수 있다.
이와 같이, 상기 제어부(1000)의 제어에 의해 AES 알고리즘에 따른 복호화 과정에서 치환 기능, 시프트 기능, 확산 기능 및 라운드 키에 대한 XOR 연산 기능을 반복적으로 수행할 수 있다.
일 예로, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값(또는 상기 확산부(500)의 출력값)을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제 19 제어 신호를 근거로 상기 데이터 레지스터(100)에 저장된 값(예를 들어 상기 제 6 먹스(260)의 출력값)을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다.
또한, 상기 제 1 먹스(210)는 상기 제어부(1000)에 의해 생성된 제 20 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 치환부(300)의 출력값을 먹싱하여, 먹싱 결과를 제 1 먹스(210)의 출력값으로 출력하는 과정을 수행한다(S1060).
이후, 최종 라운드인 경우, 상기 데이터 레지스터(100)의 출력값에 대해 상기 시프트 로우(400)를 통한 시프트 기능 및 상기 치환부(300)를 통한 치환 기능 수행 후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과(또는 상기 입력 데이터에 대해 AES 알고리즘을 적용하여 복호화한 값/데이터)를 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다.
이와 같이, 상기 AES 알고리즘에 대한 복호화 과정은 도 19에 도시된 첫 번째 라운드, 도 20에 도시된 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드, 도 21에 도시된 최종 라운드에 대해서 각각 연산 기능이 수행되어, 최종적으로 입력 데이터를 복호화한 복호화 데이터가 상기 암호화 장치(10)의 출력값으로 출력될 수 있다.
일 예로, AES 알고리즘에 따른 상기 제 2 입력 데이터에 대한 복호화를 위한 최종 라운드일 때, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 21 제어 신호를 근거로 상기 확산부(300)를 통한 확산 기능 수행에 따른 상기 확산부(300)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 22 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과(또는 상기 제 2 입력 데이터에 대해 AES 알고리즘을 적용하여 복호화한 값/데이터)를 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다(S1070).
또한, 상기 수신된 알고리즘 신호에 ARIA 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 암호화 또는 복호화 기능을 수행하기 위한 정보가 포함된 상태인 경우, 상기 XOR 연산부(600)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 입력 데이터와 제 5 먹스(250)의 출력값인 초기 키값을 XOR 연산한 결과값(XOR_out)을 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230) 및 제 6 먹스(260)의 입력값으로 전달한다.
일 예로, 상기 128비트의 제 3 입력 데이터에 대해서 총 12라운드에 걸쳐서 ARIA 알고리즘을 적용하여 암호화 기능을 수행하기 위해서, 상기 XOR 연산부(600)는 상기 제어부(100)에 의해 생성된 제 23 제어 신호를 근거로 총 12라운드 중 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 제 3 입력 데이터와 상기 제 5 먹스(250)의 출력값인 제 3 초기 키값을 XOR 연산한 결과값을 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달한다(S1080).
이후, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 레지스터(100)의 출력값, 시프트 로우(400)의 출력값 및 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
일 예로, 첫 번째 라운드에서, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 24 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다(S1090).
이후, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 ARIA 알고리즘의 암호화 또는 복호화에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환(또는 대치/치환 연산)한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
이때, 상기 치환부(300)의 출력값은 상기 제 1 먹스(210), 상기 제 3 먹스(230), 상기 제 4 먹스(240) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
일 예로, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값인 상기 XOR 연산부(600)의 출력값을 상기 ARIA 알고리즘의 암호화에 대응하여 미리 저장된 s-box를 이용하여 치환한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다(S1100).
이후, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 ARIA 초기 RK 생성부(800)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 3 먹스(230)의 출력값으로 출력한다.
일 예로, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제 25 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다(S1110).
이후, 확산부(500)는 상기 제 3 먹스(230)의 출력값에 대해 확산 연산을 수행한 후, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다.
이때, 상기 확산부(500)의 출력값은 상기 제 6 먹스(260), 상기 제 4 먹스(240) 및 CLEFIA 데이터 프로세서(900)의 입력값으로 전달된다.
일 예로, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값인 상기 치환부(300)의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다(S1120).
이후, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 6 먹스(260)의 출력값으로 출력한다.
일 예로, 최종 라운드가 아닌 경우, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 26 제어 신호를 근거로 상기 확산부(500)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다(S1130).
이후, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 제 6 먹스(260)의 출력값을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다.
일 예로, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제 27 제어 신호를 근거로 상기 데이터 레지스터(100)에 저장된 값(예를 들어 상기 제 6 먹스(260)의 출력값)을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다(S1140).
이후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스(240)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드인 경우, 상기 입력 데이터가 상기 제 4 먹스(240)의 출력값으로 출력된다.
또한, 상기 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과인 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
일 예로, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 28 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다(S1150).
이후, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 초기 키값 및 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 5 먹스(250)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드 경우, 상기 초기 키값이 상기 제 5 먹스의 출력값으로 출력된다.
또한, 상기 전체 라운드 중에서 상기 첫 번째 라운드를 제외한 나머지 라운드의 경우, 상기 키 레지스터(700)의 출력값이 상기 제 5 먹스(250)의 출력값으로 출력된다.
일 예로, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제 29 제어 신호를 근거로 상기 초기 키값 및 상기 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과인 상기 키 레지스터(700)의 출력값을 상기 제 5 먹스(250)의 출력값으로 출력한다(S1160).
이후, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
이때, 상기 XOR 연산부(600)의 출력값은 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
또한, 상기 제 2 먹스(220)는 2번째 라운드부터(또는 첫 번째 라운드 이후) 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
이때, 상기 ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정에서, 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 add roundkey(애드 라운드키), substitution(치환)/inverse substitution(인버스 치환) 및 diffusion(확산)/inverse diffusion(인버스 확산)에 대한 앞선 과정들(예를 들어 S1090 단계 ~ S1170 단계)이 반복 수행될 수 있다.
일 예로, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값인 상기 데이터 레지스터(100)의 출력값과 상기 제 5 먹스(250)의 출력값인 상기 키 레지스터(700)의 출력값에 대한 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 30 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력하는 과정을 수행한다(S1170).
이후, 최종 라운드인 경우, 상기 데이터 레지스터(100)의 출력값에 대해 상기 XOR 연산부(600)를 통한 XOR 연산 기능, 상기 치환부(300)를 통한 치환 기능, 상기 확산부(500)를 통한 확산 기능 및 상기 XOR 연산부(600)를 통한 XOR 연산 기능 수행 후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과(또는 상기 입력 데이터에 대해 ARIA 알고리즘을 적용하여 암호화 또는 복호화한 값/데이터)를 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다.
이와 같이, 상기 ARIA 알고리즘에 대한 암호화 과정 또는 복호화 과정은 도 22에 도시된 첫 번째 라운드, 도 23에 도시된 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드, 도 24에 도시된 최종 라운드에 대해서 각각 연산 기능이 수행되어, 최종적으로 입력 데이터를 암호화한 암호화 데이터 또는 복호화한 복호화 데이터가 상기 암호화 장치(10)의 출력값으로 출력될 수 있다.
일 예로, ARIA 알고리즘에 따른 상기 제 3 입력 데이터에 대한 암호화를 위한 최종 라운드일 때, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 31 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 32 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과인 상기 XOR 연산부(600)의 출력값(또는 상기 제 3 입력 데이터에 대해 ARIA 알고리즘을 적용하여 암호화한 값/데이터)을 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다(S1180).
또한, 상기 수신된 알고리즘 신호에 CLEFIA 알고리즘에 대한 정보가 포함되고, 수신된 모드 신호에 암호화 또는 복호화 기능을 수행하기 위한 정보가 포함된 상태인 경우, 상기 XOR 연산부(600)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 입력 데이터와 제 5 먹스(250)의 출력값인 초기 키값을 XOR 연산한 결과값(XOR_out)을 제 1 먹스(210), 제 2 먹스(220), 제 3 먹스(230) 및 제 6 먹스(260)의 입력값으로 전달한다.
일 예로, 상기 128비트의 제 4 입력 데이터에 대해서 총 18라운드에 걸쳐서 CLEFIA 알고리즘을 적용하여 암호화 기능을 수행하기 위해서, 상기 XOR 연산부(600)는 상기 제어부(100)에 의해 생성된 제 33 제어 신호를 근거로 총 12라운드 중 첫 번째 라운드에서 제 4 먹스(240)의 출력값인 제 3 입력 데이터와 상기 제 5 먹스(250)의 출력값인 제 3 초기 키값을 XOR 연산한 결과값을 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달한다(S1190).
이후, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 데이터 레지스터(100)의 출력값, 시프트 로우(400)의 출력값 및 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
일 예로, 첫 번째 라운드에서, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 34 제어 신호를 근거로 상기 XOR 연산부(600)의 출력값을 상기 제 2 먹스(220)의 출력값으로 출력한다(S1200).
이후, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값을 상기 설정된 모드에 따른 CLEFIA 알고리즘의 암호화 또는 복호화에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환(또는 대치/치환 연산)한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다.
이때, 상기 치환부(300)의 출력값은 상기 제 1 먹스(210), 상기 제 3 먹스(230), 상기 제 4 먹스(240) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
일 예로, 상기 치환부(300)는 상기 제 2 먹스(220)의 출력값인 상기 XOR 연산부(600)의 출력값을 상기 CLEFIA 알고리즘의 암호화에 대응하여 미리 저장된 s-box를 이용하여 치환한 후, 치환된 값을 상기 치환부(300)의 출력값으로 출력한다(S1210).
이후, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 ARIA 초기 RK 생성부(800)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 3 먹스(230)의 출력값으로 출력한다.
일 예로, 상기 제 3 먹스(230)는 상기 제어부(1000)에 의해 생성된 제 35 제어 신호를 근거로 상기 치환부(300)의 출력값을 상기 제 3 먹스(230)의 출력값으로 출력한다(S1220).
이후, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값에 대해 확산 연산을 수행한 후, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다.
이때, 상기 확산부(500)의 출력값은 상기 제 6 먹스(260), 상기 제 4 먹스(240) 및 CLEFIA 데이터 프로세서(900)의 입력값으로 전달된다.
일 예로, 상기 확산부(500)는 상기 제 3 먹스(230)의 출력값인 상기 치환부(300)의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 상기 확산부(500)의 출력값으로 출력한다(S1230).
이후, CLEFIA 데이터 프로세서(900)는 상기 확산부(500)의 출력값에 대해 암호화 기능 또는 복호화 기능을 수행하고, 암호화 기능 수행 결과 또는 복호화 기능 수행 결과를 상기 CLEFIA 데이터 프로세서(900)의 출력값으로 상기 제 6 먹스(260) 및 제 7 먹스(270)에 전달한다.
일 예로, 상기 CLEFIA 데이터 프로세서(900)는 상기 확산부(500)의 출력값에 대해 CLEFIA 알고리즘에 따른 암호화 기능을 수행하고, 암호화 기능 수행 결과를 상기 CLEFIA 데이터 프로세서(900)의 출력값으로 상기 제 6 먹스(260) 및 상기 제 7 먹스(270)에 전달한다(S1240).
이후, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 6 먹스(260)의 출력값으로 출력한다.
일 예로, 최종 라운드가 아닌 경우, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 36 제어 신호를 근거로 상기 CLEFIA 데이터 프로세서(900)의 출력값을 상기 제 6 먹스(260)의 출력값으로 출력한다(S1250).
이후, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 제 6 먹스(260)의 출력값을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다.
일 예로, 상기 데이터 레지스터(100)는 상기 제 6 먹스(260)의 출력값을 저장한다.
또한, 상기 데이터 레지스터(100)는 상기 제어부(1000)에 의해 생성된 제 37 제어 신호를 근거로 상기 데이터 레지스터(100)에 저장된 값(예를 들어 상기 제 6 먹스(260)의 출력값)을 상기 제 1 먹스(210), 상기 제 2 먹스(220) 및 상기 제 4 먹스(240)의 입력값으로 전달한다(S1260).
이후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스(240)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드인 경우, 상기 입력 데이터가 상기 제 4 먹스(240)의 출력값으로 출력된다.
또한, 상기 전체 라운드 중 첫 번째 라운드를 제외한 나머지 라운드인 경우, 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과인 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
일 예로, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 38 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다(S1270).
이후, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 초기 키값 및 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 5 먹스(250)의 출력값으로 출력한다.
이때, 상기 전체 라운드 중 첫 번째 라운드 경우, 상기 초기 키값이 상기 제 5 먹스의 출력값으로 출력된다.
또한, 상기 전체 라운드 중에서 상기 첫 번째 라운드를 제외한 나머지 라운드의 경우, 상기 키 레지스터(700)의 출력값이 상기 제 5 먹스(250)의 출력값으로 출력된다
일 예로, 상기 제 5 먹스(250)는 상기 제어부(1000)에 의해 생성된 제 39 제어 신호를 근거로 상기 초기 키값 및 상기 키 레지스터(700)의 출력값을 먹싱하여, 먹싱 결과인 상기 키 레지스터(700)의 출력값을 상기 제 5 먹스(250)의 출력값으로 출력한다(S1280).
이후, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
이때, 상기 XOR 연산부(600)의 출력값은 상기 제 1 먹스(210), 상기 제 2 먹스(220), 상기 제 3 먹스(230) 및 상기 제 6 먹스(260)의 입력값으로 전달된다.
또한, 상기 제 2 먹스(220)는 2번째 라운드부터(또는 첫 번째 라운드 이후) 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력한다.
이때, 상기 CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정에서, 전체 라운드 중 첫 번째 라운드 이후의 두 번째 라운드부터 최종 라운드 직전 라운드까지는 add roundkey(애드 라운드키), substitution(치환)/inverse substitution(인버스 치환) 및 diffusion(확산)/inverse diffusion(인버스 확산)의 순서로 F-함수에 대해 연산을 진행하고, F-함수 연산 결과에 따른 암호화 기능/복호화 기능을 수행하는 앞선 과정들(예를 들어 S1200 단계 ~ S1290 단계)이 반복 수행될 수 있다.
일 예로, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값인 상기 데이터 레지스터(100)의 출력값과 상기 제 5 먹스(250)의 출력값인 상기 키 레지스터(700)의 출력값에 대한 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 2 먹스(220)는 상기 제어부(1000)에 의해 생성된 제 40 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값, 상기 시프트 로우(400)의 출력값 및 상기 XOR 연산부(600)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 2 먹스(220)의 출력값으로 출력하는 과정을 수행한다(S1290).
이후, 최종 라운드인 경우, 상기 데이터 레지스터(100)의 출력값에 대해 상기 XOR 연산부(600)를 통한 XOR 연산 기능, 상기 치환부(300)를 통한 치환 기능, 상기 확산부(500)를 통한 확산 기능, 상기 CLEFIA 데이터 프로세서(900)를 통한 암호화/복호화 기능 및 상기 XOR 연산부(600)를 통한 XOR 연산 기능 수행 후, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 시프트 로우(400)의 출력값, 상기 입력 데이터, 상기 데이터 레지스터(100)의 출력값, 상기 치환부(300)의 출력값 및 상기 확산부(500)의 출력값을 먹싱하여, 먹싱 결과를 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과(또는 상기 입력 데이터에 대해 CLEFIA 알고리즘을 적용하여 암호화 또는 복호화한 값/데이터)를 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다.
이와 같이, 상기 CLEFIA 알고리즘에 대한 암호화 과정 또는 복호화 과정은 도 25에 도시된 첫 번째 라운드, 도 26에 도시된 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드, 도 27에 도시된 최종 라운드에 대해서 각각 연산 기능이 수행되어, 최종적으로 입력 데이터를 암호화한 암호화 데이터 또는 복호화한 복호화 데이터가 상기 암호화 장치(10)의 출력값으로 출력될 수 있다.
일 예로, CLEFIA 알고리즘에 따른 상기 제 4 입력 데이터에 대한 암호화를 위한 최종 라운드일 때, 상기 제 4 먹스(240)는 상기 제어부(1000)에 의해 생성된 제 41 제어 신호를 근거로 상기 데이터 레지스터(100)의 출력값을 상기 제 4 먹스(240)의 출력값으로 출력한다.
또한, 상기 XOR 연산부(600)는 상기 제 4 먹스(240)의 출력값과 상기 제 5 먹스(250)의 출력값에 대해 XOR 연산을 수행하고, XOR 연산 수행 결과를 상기 XOR 연산부(600)의 출력값으로 출력한다.
또한, 상기 제 6 먹스(260)는 상기 제어부(1000)에 의해 생성된 제 42 제어 신호를 근거로 상기 치환부(300)의 출력값, 상기 확산부(500)의 출력값, 상기 XOR 연산부(600)의 출력값 및 상기 CLEFIA 데이터 프로세서(900)의 출력값을 먹싱하여, 먹싱 결과인 상기 XOR 연산부(600)의 출력값(또는 상기 제 4 입력 데이터에 대해 CLEFIA 알고리즘을 적용하여 암호화한 값/데이터)을 상기 제 6 먹스(260)의 출력값(또는 암호화 장치(10)의 출력값)으로 출력한다(S1300).
본 발명의 실시예는 앞서 설명된 바와 같이, IoT 분야에 적용할 수 있는 AES, ARIA 및 CLEFIA를 모두 지원하며 선택적으로 동작시킬 수 있는 저복잡도의 암호화 장치를 제공하여, IoT 분야에서의 보안성을 강화할 수 있다.
또한, 본 발명의 실시예는 앞서 설명된 바와 같이, 128비트 기반으로 라운드 키 생성 과정과 암호화 및 복호화 과정을 하나로 공유하며, AES, ARIA 및 CLEFIA를 포함하는 복수의 알고리즘의 구조를 공유하여, 면적 효율성을 강화할 수 있다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 사물인터넷 응용을 위한 암호화 장치 100: 데이터 레지스터
200: 먹스부 300: 치환부
400: 시프트 로우 500: 확산부
600: XOR 연산부 700: 키 레지스터
800: ARIA 초기 RK 생성부 900: CLEFIA 데이터 프로세서
1000: 제어부 210: 제 1 먹스
220: 제 2 먹스 230: 제 3 먹스
240: 제 4 먹스 250: 제 5 먹스
260: 제 6 먹스 270: 제 7 먹스
910: CLEFIA 데이터 패스부 920: CLEFIA 라운드 키 생성부
930: CLEFIA 상수 생성부

Claims (80)

  1. 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부;
    시프트 연산을 수행하는 시프트 로우;
    치환 연산을 수행하는 치환부;
    확산 연산을 수행하는 확산부;
    XOR 연산을 수행하는 XOR 연산부;
    GFN(generalized feistel network) 연산을 수행하는 CLEFIA 데이터 프로세서;
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 장치.
  2. 제 1 항에 있어서,
    상기 제어부는,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 상기 AES 알고리즘에 따른 암호화 기능, 상기 AES 알고리즘에 따른 복호화 기능, 상기 ARIA 알고리즘에 따른 암호화 기능, 상기 ARIA 알고리즘에 따른 복호화 기능, 상기 CLEFIA 알고리즘에 따른 암호화 기능 및 상기 CLEFIA 알고리즘에 따른 복호화 기능 중 어느 하나의 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부, 상기 XOR 연산부 및 상기 CLEFIA 데이터 프로세서 중 적어도 하나의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  3. 제 1 항에 있어서,
    상기 제어부는,
    상기 설정된 모드가 상기 AES 알고리즘에 따른 암호화 기능일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 시프트 로우 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  4. 제 3 항에 있어서,
    상기 제어부는,
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하도록 상기 치환부, 상기 시프트 로우, 상기 확산부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  5. 제 4 항에 있어서,
    상기 제어부는,
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하도록 상기 치환부, 상기 시프트 로우 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  6. 제 1 항에 있어서,
    상기 AES 암호화 모드일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 1 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 확산부의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스의 출력값으로 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 XOR 연산부의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  7. 제 6 항에 있어서,
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 2 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 1 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 XOR 연산부의 출력값을 상기 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  8. 제 7 항에 있어서,
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 2 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 1 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는,
    상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  9. 제 1 항에 있어서,
    상기 제어부는,
    상기 설정된 모드가 상기 AES 알고리즘에 따른 복호화 기능일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 시프트 로우, 상기 치환부, 상기 XOR 연산부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  10. 제 9 항에 있어서,
    상기 제어부는,
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 XOR 연산부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  11. 제 10 항에 있어서,
    상기 제어부는,
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하도록 상기 시프트 로우, 상기 치환부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  12. 제 1 항에 있어서,
    상기 AES 복호화 모드일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 1 먹스는, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 2 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스의 출력값으로 출력하고,
    상기 제 5 먹스는, 상기 첫 번째 라운드에서 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 3 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  13. 제 12 항에 있어서,
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 1 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 2 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 3 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 상기 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  14. 제 13 항에 있어서,
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 1 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 2 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는,
    상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 복호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  15. 제 1 항에 있어서,
    상기 제어부는,
    상기 설정된 모드가 상기 ARIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  16. 제 15 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  17. 제 16 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  18. 제 1 항에 있어서,
    상기 ARIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  19. 제 18 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 상기 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  20. 제 19 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 6 먹스는, 상기 치환부의 출력값을 상기 데이터 레지스터에 전달하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터 또는 복호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  21. 제 1 항에 있어서,
    상기 제어부는,
    상기 CLEFIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  22. 제 21 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  23. 제 22 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부, 상기 CLEFIA 데이터 프로세서 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  24. 제 1 항에 있어서,
    상기 CLEFIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 CLEFIA 데이터 프로세서는,
    상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하고,
    상기 제 6 먹스는, 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  25. 제 24 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 CLEFIA 데이터 프로세서는,
    상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하고,
    상기 제 6 먹스는, 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  26. 제 25 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 CLEFIA 데이터 프로세서는,
    상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하고,
    상기 제 6 먹스는, 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터 또는 복호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  27. 사물인터넷 응용을 위한 암호화 장치에 의한 암호화 방법으로서,
    입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계; 및
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 상기 AES 알고리즘에 따른 암호화 기능, 상기 AES 알고리즘에 따른 복호화 기능, 상기 ARIA 알고리즘에 따른 암호화 기능, 상기 ARIA 알고리즘에 따른 복호화 기능, 상기 CLEFIA 알고리즘에 따른 암호화 기능 및 상기 CLEFIA 알고리즘에 따른 복호화 기능 중 어느 하나의 기능을 수행하는 단계를 포함하고,
    상기 암호화 장치는,
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 방법.
  28. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 AES 알고리즘에 따른 암호화 기능일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하는 과정;
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하는 과정;
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  29. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 AES 알고리즘에 따른 암호화 기능일 때, XOR 연산부에 의해, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 제 4 먹스의 출력값인 상기 입력 데이터와 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하는 제 1 과정;
    제 2 먹스에 의해, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하는 제 2 과정;
    치환부에 의해, 상기 첫 번째 라운드에서 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 3 과정;
    제 1 먹스에 의해, 상기 첫 번째 라운드에서 치환부의 출력값을 출력하는 제 4 과정;
    시프트 로우에 의해, 상기 첫 번째 라운드에서 상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하는 제 5 과정;
    제 3 먹스에 의해, 상기 첫 번째 라운드에서 상기 시프트 로우의 출력값을 출력하는 제 6 과정;
    확산부에 의해, 상기 첫 번째 라운드에서 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 7 과정;
    제 4 먹스에 의해, 상기 첫 번째 라운드에서 상기 입력 데이터, 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 확산부의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스의 출력값으로 출력하는 제 8 과정;
    제 5 먹스에 의해, 상기 첫 번째 라운드에서 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 9 과정;
    상기 XOR 연산부에 의해, 상기 첫 번째 라운드에서 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 10 과정; 및
    제 6 먹스에 의해, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 데이터 레지스터에 전달하는 제 11 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  30. 제 29 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 2 먹스에 의해, 상기 데이터 레지스터의 출력값을 출력하는 제 12 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 13 과정;
    상기 제 1 먹스에 의해, 상기 치환부의 출력값을 출력하는 제 14 과정;
    상기 시프트 로우에 의해, 상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하는 제 15 과정;
    상기 제 3 먹스에 의해, 상기 시프트 로우의 출력값을 출력하는 제 16 과정;
    상기 확산부에 의해, 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 17 과정;
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 18 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 19 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 20 과정; 및
    제 6 먹스에 의해, 상기 XOR 연산부의 출력값을 상기 데이터 레지스터에 전달하는 제 21 과정을 반복적으로 수행하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  31. 제 30 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서, 상기 제 2 먹스에 의해, 상기 데이터 레지스터의 출력값을 출력하는 제 22 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 23 과정;
    상기 제 1 먹스에 의해, 상기 치환부의 출력값을 출력하는 제 24 과정;
    상기 시프트 로우에 의해, 상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하는 제 25 과정;
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 26 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 27 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 28 과정; 및
    상기 제 6 먹스에 의해, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터로 출력하는 제 29 과정을 더 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  32. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 AES 알고리즘에 따른 복호화 기능일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 과정;
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 과정;
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  33. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 AES 알고리즘에 따른 복호화 기능일 때, XOR 연산부에 의해, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 제 4 먹스의 출력값인 상기 입력 데이터와 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하는 제 31 과정;
    제 1 먹스에 의해, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하는 제 32 과정;
    시프트 로우에 의해, 상기 첫 번째 라운드에서 상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하는 제 33 과정;
    제 2 먹스에 의해, 상기 첫 번째 라운드에서 상기 시프트 로우의 출력값을 출력하는 제 34 과정;
    치환부에 의해, 상기 첫 번째 라운드에서 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 35 과정;
    제 4 먹스에 의해, 상기 첫 번째 라운드에서 상기 입력 데이터, 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스의 출력값으로 출력하는 제 36 과정;
    제 5 먹스에 의해, 상기 첫 번째 라운드에서 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 37 과정;
    상기 XOR 연산부에 의해, 상기 첫 번째 라운드에서 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 38 과정;
    제 3 먹스에 의해, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하는 제 39 과정;
    확산부에 의해, 상기 첫 번째 라운드에서 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 40 과정; 및
    제 6 먹스에 의해, 상기 첫 번째 라운드에서 상기 확산부의 출력값을 데이터 레지스터에 전달하는 제 41 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  34. 제 33 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 1 먹스에 의해, 상기 데이터 레지스터의 출력값을 출력하는 제 42 과정;
    상기 시프트 로우에 의해, 상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하는 제 43 과정;
    상기 제 2 먹스에 의해, 상기 시프트 로우의 출력값을 출력하는 제 44 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 45 과정;
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 46 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 47 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 48 과정;
    상기 제 3 먹스에 의해, 상기 XOR 연산부의 출력값을 출력하는 제 49 과정;
    상기 확산부에 의해, 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 50 과정; 및
    제 6 먹스에 의해, 상기 확산부의 출력값을 상기 데이터 레지스터에 전달하는 제 51 과정을 반복적으로 수행하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  35. 제 34 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서, 상기 제 1 먹스에 의해, 상기 데이터 레지스터의 출력값을 출력하는 제 52 과정;
    상기 시프트 로우에 의해, 상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하는 제 53 과정;
    상기 제 2 먹스에 의해, 상기 시프트 로우의 출력값을 출력하는 제 54 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 55 과정;
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 56 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 57 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 58 과정; 및
    상기 제 6 먹스에 의해, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 복호화한 데이터로 출력하는 제 59 과정을 더 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  36. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 ARIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  37. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 ARIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, XOR 연산부에 의해, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 제 4 먹스의 출력값인 상기 입력 데이터와 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하는 제 61 과정;
    제 2 먹스에 의해, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하는 제 62 과정;
    치환부에 의해, 상기 첫 번째 라운드에서 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 63 과정;
    제 3 먹스에 의해, 상기 첫 번째 라운드에서 시프트 로우의 출력값을 출력하는 제 64 과정;
    확산부에 의해, 상기 첫 번째 라운드에서 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 65 과정; 및
    제 6 먹스에 의해, 상기 첫 번째 라운드에서 상기 확산부의 출력값을 데이터 레지스터에 전달하는 제 66 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  38. 제 37 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 67 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 68 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 69 과정;
    상기 제 2 먹스에 의해, 상기 XOR 연산부의 출력값을 출력하는 제 70 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 71 과정;
    상기 제 3 먹스에 의해, 상기 치환부의 출력값을 출력하는 제 72 과정;
    상기 확산부에 의해, 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 73 과정; 및
    상기 제 6 먹스에 의해, 상기 확산부의 출력값을 상기 데이터 레지스터에 전달하는 제 74 과정을 반복적으로 수행하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  39. 제 38 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서, 상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 75 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 76 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 77 과정;
    상기 제 2 먹스에 의해, 상기 XOR 연산부의 출력값을 출력하는 제 78 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 79 과정;
    상기 제 6 먹스에 의해, 상기 치환부의 출력값을 상기 데이터 레지스터에 전달하는 제 80 과정;
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 81 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 82 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 83 과정; 및
    상기 제 6 먹스에 의해, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터 또는 복호화한 데이터로 출력하는 제 84 과정을 더 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  40. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 CLEFIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN(generalized feistel network) 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  41. 제 27 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 설정된 모드가 상기 CLEFIA 알고리즘에 따른 암호화 기능 또는 복호화 기능일 때, XOR 연산부에 의해, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 제 4 먹스의 출력값인 상기 입력 데이터와 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하는 제 91 과정;
    제 2 먹스에 의해, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하는 제 92 과정;
    치환부에 의해, 상기 첫 번째 라운드에서 상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 93 과정;
    제 3 먹스에 의해, 상기 첫 번째 라운드에서 시프트 로우의 출력값을 출력하는 제 94 과정;
    확산부에 의해, 상기 첫 번째 라운드에서 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 95 과정;
    CLEFIA 데이터 프로세서에 의해, 상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하는 제 96 과정; 및
    제 6 먹스에 의해, 상기 첫 번째 라운드에서 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하는 제 97 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  42. 제 41 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 98 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 99 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 100 과정;
    상기 제 2 먹스에 의해, 상기 XOR 연산부의 출력값을 출력하는 제 101 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 CLEFIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 102 과정;
    상기 제 3 먹스에 의해, 상기 치환부의 출력값을 출력하는 제 103 과정;
    상기 확산부에 의해, 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 104 과정;
    상기 CLEFIA 데이터 프로세서에 의해, 상기 확산부의 출력값에 대해 GFN 연산을 수행하는 제 105 과정; 및
    상기 제 6 먹스에 의해, 상기 CLEFIA 데이터 프로세서의 출력값을 상기 데이터 레지스터에 전달하는 제 106 과정을 반복적으로 수행하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  43. 제 42 항에 있어서,
    상기 설정된 모드를 근거로 상기 입력 데이터에 대해서 어느 하나의 기능을 수행하는 단계는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서, 상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 107 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 108 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 109 과정;
    상기 제 2 먹스에 의해, 상기 XOR 연산부의 출력값을 출력하는 제 110 과정;
    상기 치환부에 의해, 상기 제 2 먹스의 출력값을 상기 CLEFIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하는 제 111 과정;
    상기 제 3 먹스에 의해, 상기 치환부의 출력값을 출력하는 제 112 과정;
    상기 확산부에 의해, 상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하는 제 113 과정;
    상기 CLEFIA 데이터 프로세서에 의해, 상기 확산부의 출력값에 대해 GFN 연산을 수행하는 제 114 과정;
    상기 제 6 먹스에 의해, 상기 CLEFIA 데이터 프로세서의 출력값을 상기 데이터 레지스터에 전달하는 제 115 과정;
    상기 제 4 먹스에 의해, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하는 제 116 과정;
    상기 제 5 먹스에 의해, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하는 제 117 과정;
    상기 XOR 연산부에 의해, 상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하는 제 118 과정; 및
    상기 제 6 먹스에 의해, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터 또는 복호화한 데이터로 출력하는 제 119 과정을 더 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  44. 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부;
    시프트 연산을 수행하는 시프트 로우;
    치환 연산을 수행하는 치환부;
    확산 연산을 수행하는 확산부;
    XOR 연산을 수행하는 XOR 연산부;
    GFN 연산을 수행하는 CLEFIA 데이터 프로세서;
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스를 포함하고,
    상기 제어부는,
    상기 설정된 모드가 AES 암호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  45. 제 44 항에 있어서,
    상기 제어부는,
    암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 시프트 로우 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  46. 제 45 항에 있어서,
    상기 제어부는,
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하도록 상기 치환부, 상기 시프트 로우, 상기 확산부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  47. 제 46 항에 있어서,
    상기 제어부는,
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하도록 상기 치환부, 상기 시프트 로우 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  48. 제 44 항에 있어서,
    상기 AES 암호화 모드일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 1 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 확산부의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스의 출력값으로 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 XOR 연산부의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  49. 제 48 항에 있어서,
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 2 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 1 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 XOR 연산부의 출력값을 상기 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  50. 제 49 항에 있어서,
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 2 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 1 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는,
    상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  51. 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부;
    시프트 연산을 수행하는 시프트 로우;
    치환 연산을 수행하는 치환부;
    확산 연산을 수행하는 확산부;
    XOR 연산을 수행하는 XOR 연산부;
    GFN 연산을 수행하는 CLEFIA 데이터 프로세서;
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경, 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스를 포함하고,
    상기 제어부는,
    상기 AES 복호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 복호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  52. 제 51 항에 있어서,
    상기 제어부는,
    상기 AES 복호화 모드일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 시프트 로우, 상기 치환부, 상기 XOR 연산부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  53. 제 52 항에 있어서,
    상기 제어부는,
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 XOR 연산부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  54. 제 53 항에 있어서,
    상기 제어부는,
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하도록 상기 시프트 로우, 상기 치환부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  55. 제 51 항에 있어서,
    상기 AES 복호화 모드일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 1 먹스는, 상기 첫 번째 라운드에서 상기 XOR 연산부의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 2 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여, 먹싱 결과를 제 4 먹스의 출력값으로 출력하고,
    상기 제 5 먹스는, 상기 첫 번째 라운드에서 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 3 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  56. 제 55 항에 있어서,
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 1 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 2 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 3 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 상기 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  57. 제 56 항에 있어서,
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 1 먹스는, 상기 데이터 레지스터의 출력값을 출력하고,
    상기 시프트 로우는,
    상기 제 1 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 설정된 비트 수만큼 시프트 연산하고, 시프트 연산 결과를 출력하고,
    상기 제 2 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는,
    상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 복호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  58. 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부;
    시프트 연산을 수행하는 시프트 로우;
    치환 연산을 수행하는 치환부;
    확산 연산을 수행하는 확산부;
    XOR 연산을 수행하는 XOR 연산부;
    GFN 연산을 수행하는 CLEFIA 데이터 프로세서;
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경, 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스를 포함하고,
    상기 제어부는,
    상기 ARIA 암호화 또는 모드 복호화 모드일 때, 상기 ARIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  59. 제 58 항에 있어서,
    상기 제어부는,
    상기 ARIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  60. 제 59 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 확산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  61. 제 60 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하도록 상기 XOR 연산부, 상기 치환부 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  62. 제 58 항에 있어서,
    상기 ARIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  63. 제 62 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 제 6 먹스는, 상기 확산부의 출력값을 상기 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  64. 제 63 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 6 먹스는, 상기 치환부의 출력값을 상기 데이터 레지스터에 전달하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터 또는 복호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  65. 입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 제어부;
    시프트 연산을 수행하는 시프트 로우;
    치환 연산을 수행하는 치환부;
    확산 연산을 수행하는 확산부;
    XOR 연산을 수행하는 XOR 연산부;
    GFN 연산을 수행하는 CLEFIA 데이터 프로세서;
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스를 포함하고,
    상기 제어부는,
    상기 CLEFIA 암호화 모드 또는 복호화 모드일 때, 상기 CLEFIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하도록 상기 시프트 로우, 상기 치환부, 상기 확산부, 상기 XOR 연산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  66. 제 65 항에 있어서,
    상기 제어부는,
    상기 CLEFIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  67. 제 66 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부 및 상기 CLEFIA 데이터 프로세서의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  68. 제 67 항에 있어서,
    상기 제어부는,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하도록 상기 XOR 연산부, 상기 치환부, 상기 확산부, 상기 CLEFIA 데이터 프로세서 및 상기 XOR 연산부의 동작을 제어하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  69. 제 65 항에 있어서,
    상기 CLEFIA 암호화 모드 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값인 상기 입력 데이터와 상기 제 5 먹스의 출력값인 초기 키값을 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 AES 알고리즘에 대응하여 미리 저장된 s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 시프트 로우의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 CLEFIA 데이터 프로세서는,
    상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하고,
    상기 제 6 먹스는, 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  70. 제 69 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 CLEFIA 데이터 프로세서는,
    상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하고,
    상기 제 6 먹스는, 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  71. 제 70 항에 있어서,
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 2 먹스는, 상기 XOR 연산부의 출력값을 출력하고,
    상기 치환부는,
    상기 제 2 먹스의 출력값을 상기 ARIA 알고리즘에 대응하여 미리 저장된 s-box 또는 inverse s-box를 이용하여 치환하고, 치환된 값을 출력하고,
    상기 제 3 먹스는, 상기 치환부의 출력값을 출력하고,
    상기 확산부는,
    상기 제 3 먹스의 출력값에 대해 확산 연산을 수행하고, 확산 연산 수행 결과를 출력하고,
    상기 CLEFIA 데이터 프로세서는,
    상기 첫 번째 라운드에서 상기 확산부의 출력값에 대해 GFN 연산을 수행하고,
    상기 제 6 먹스는, 상기 CLEFIA 데이터 프로세서의 출력값을 데이터 레지스터에 전달하고,
    상기 제 4 먹스는, 상기 입력 데이터, 상기 데이터 레지스터의 출력값, 상기 시프트 로우의 출력값, 상기 치환부의 출력값 및 상기 확산부의 출력값을 먹싱하여 출력하고,
    상기 제 5 먹스는, 상기 초기 키값 및 키 레지스터의 출력값을 먹싱하여 출력하고,
    상기 XOR 연산부는,
    상기 제 4 먹스의 출력값과 상기 제 5 먹스의 출력값에 대해 XOR 연산한 결과값을 출력하고,
    상기 제 6 먹스는, 상기 최종 라운드에서의 상기 XOR 연산부의 XOR 연산 결과를 상기 입력 데이터에 대해 암호화한 데이터 또는 복호화한 데이터로 출력하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 장치.
  72. 사물인터넷 응용을 위한 암호화 장치에 의한 암호화 방법으로서,
    입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계;
    상기 설정된 모드가 AES 알고리즘을 이용한 암호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능을 수행하는 단계;
    상기 설정된 모드가 AES 알고리즘을 이용한 복호화 모드일 때, 상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 복호화 기능을 수행하는 단계;
    상기 설정된 모드가 ARIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 상기 ARIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하는 단계; 및
    상기 설정된 모드가 CLEFIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 상기 CLEFIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하는 단계를 포함하고,
    상기 암호화 장치는,
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 방법.
  73. 제 72 항에 있어서,
    상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능을 수행하는 단계는,
    암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하는 과정;
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하는 과정;
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  74. 제 72 항에 있어서,
    상기 AES 알고리즘을 근거로 상기 입력 데이터에 대한 복호화 기능을 수행하는 단계는,
    복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 과정;
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 과정;
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  75. 제 72 항에 있어서,
    상기 ARIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하는 단계는,
    암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  76. 제 72 항에 있어서,
    상기 CLEFIA 알고리즘을 근거로 상기 입력 데이터에 대한 암호화 기능 또는 복호화 기능을 수행하는 단계는,
    암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 과정;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하는 과정; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 과정을 포함하는 것을 특징으로 하는 사물인터넷 응용을 위한 암호화 방법.
  77. 사물인터넷 응용을 위한 암호화 장치에 의한 암호화 방법으로서,
    입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계;
    상기 설정된 모드가 AES 알고리즘을 이용한 암호화 모드일 때, 암호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 시프트 연산 및 확산 연산을 수행하는 단계;
    상기 암호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 치환 연산, 시프트 연산, 확산 연산 및 XOR 연산을 수행하는 단계;
    상기 암호화를 위한 전체 라운드 중 최종 라운드에서 치환 연산, 시프트 연산 및 XOR 연산을 수행하는 단계; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함하고,
    상기 암호화 장치는,
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 방법.
  78. 사물인터넷 응용을 위한 암호화 장치에 의한 암호화 방법으로서,
    입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계;
    상기 설정된 모드가 AES 알고리즘을 이용한 복호화 모드일 때, 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 단계;
    상기 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 시프트 연산, 치환 연산, XOR 연산 및 확산 연산을 수행하는 단계;
    상기 복호화를 위한 전체 라운드 중 최종 라운드에서 시프트 연산, 치환 연산 및 XOR 연산을 수행하는 단계; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함하고,
    상기 암호화 장치는,
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 방법.
  79. 사물인터넷 응용을 위한 암호화 장치에 의한 암호화 방법으로서,
    입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계;
    상기 설정된 모드가 ARIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 단계;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산 및 확산 연산을 수행하는 단계;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산 및 XOR 연산을 수행하는 단계; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함하고,
    상기 암호화 장치는,
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 방법.
  80. 사물인터넷 응용을 위한 암호화 장치에 의한 암호화 방법으로서,
    입력 데이터에 대해서 수신되는 알고리즘의 종류를 나타내는 알고리즘 신호 및, 암호화나 복호화의 종류를 나타내는 모드 신호를 근거로 미리 설정된 AES 알고리즘, ARIA 알고리즘 및 CLEFIA 알고리즘 중 어느 하나의 알고리즘에 대한 암호화 또는 복호화 기능을 수행하기 위한 모드를 설정하는 단계;
    상기 설정된 모드가 CLEFIA 알고리즘을 이용한 암호화 또는 복호화 모드일 때, 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 단계;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 첫 번째 라운드와 최종 라운드를 제외한 나머지 라운드에서 XOR 연산, 치환 연산, 확산 연산 및 GFN 연산을 수행하는 단계;
    상기 암호화 또는 복호화를 위한 전체 라운드 중 최종 라운드에서 XOR 연산, 치환 연산, 확산 연산, GFN 연산 및 XOR 연산을 수행하는 단계; 및
    상기 최종 라운드에서의 XOR 연산 결과를 출력하는 단계를 포함하고,
    상기 암호화 장치는,
    데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 치환부의 출력값(Sub_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호와 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 1 먹스;
    데이터 레지스터의 출력값(Data_out), 시프트 로우의 출력값(Shift_out) 및 XOR 연산부의 출력값(XOR_out)을 먹싱하여, AES 암호화 모드에서 첫 번째 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 암호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, AES 복호화 모드에서 시프트 로우의 출력값(Shift_out)을 출력하고, ARIS 암호화 모드 또는 복호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서는 XOR 연산부의 출력값(XOR_out)을 출력하는 제 2 먹스;
    치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), XOR 연산부의 출력값(XOR_out) 및 ARIA 초기 RK 생성부의 출력값(ARIA_RK)을 먹싱하여, AES 암호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 동작을 중지하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 XOR 연산부의 출력값(XOR_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 치환부의 출력값(Sub_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 동작을 중지하고, CLEFIA 암호화 모드 또는 복호화 모드에서 치환부의 출력값(Sub_out)를 출력하는 제 3 먹스;
    입력 데이터, 데이터 레지스터의 출력값(Data_out), 치환부의 출력값(Sub_out), 시프트 로우의 출력값(Shift_out), 확산부의 출력값(Diff_out)을 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드인 경우 상기 입력 데이터를 출력하고, AES 암호화 모드에서 첫 번째 라운드 및 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 암호화 모드에서 최종 라운드인 경우 시프트 로우의 출력값(Shift_out)을 출력하고, AES 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드의 경우 치환부의 출력값(Sub_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 데이터 레지스터의 출력값(Data_out)을 출력하는 제 4 먹스;
    초기 키 값(Initial_Key) 및 키 레지스터의 출력값(KEY_REG_oDATA)를 먹싱하여, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드의 경우 초기 키 값(Initial_Key)을 출력하고, 모든 암호화 모드 또는 복호화 모드에서 첫 번째 라운드를 제외한 나머지 라운드인 경우 키 레지스터의 출력값(KEY_REG_oDATA)을 출력하는 제 5 먹스; 및
    치환부의 출력값(Sub_out), 확산부의 출력값(Diff_out), XOR 연산부의 출력값(XOR_out) 및 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)을 먹싱하여, AES 암호화 모드에서 XOR 연산부의 출력값(XOR_out)을 출력하되, 최종 라운드인 경우 AES 암호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, AES 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, AES 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는 AES 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 확산부의 출력값(Diff_out)을 출력하고, ARIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, ARIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out) 를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드를 제외한 나머지 라운드인 경우 CLEFIA 데이터 프로세서의 출력값(CLEFIA_out)를 출력하고, CLEFIA 암호화 모드 또는 복호화 모드에서 최종 라운드인 경우 XOR 연산부의 출력값(XOR_out) 또는, CLEFIA 암호화 또는 복호화된 XOR 연산부의 출력값(XOR_out)를 출력하는 제 6 먹스
    를 포함하는 사물인터넷 응용을 위한 암호화 방법.
KR1020190036762A 2019-03-29 2019-03-29 사물인터넷 응용을 위한 암호화 장치 및 그 방법 KR102279245B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190036762A KR102279245B1 (ko) 2019-03-29 2019-03-29 사물인터넷 응용을 위한 암호화 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190036762A KR102279245B1 (ko) 2019-03-29 2019-03-29 사물인터넷 응용을 위한 암호화 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20200119413A KR20200119413A (ko) 2020-10-20
KR102279245B1 true KR102279245B1 (ko) 2021-07-20

Family

ID=73025421

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190036762A KR102279245B1 (ko) 2019-03-29 2019-03-29 사물인터넷 응용을 위한 암호화 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102279245B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100922728B1 (ko) * 2006-12-05 2009-10-22 한국전자통신연구원 Aes 암복호화 장치 및 암복호화 방법
KR100997238B1 (ko) * 2008-03-03 2010-11-29 삼성전자주식회사 Crum 유닛, 교체가능유닛 및 이를 이용하는 화상형성장치와, 그 인증 및 암호화 데이터 통신 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170083359A (ko) 2016-01-08 2017-07-18 주식회사 유비벨록스모바일 Aes 알고리즘을 이용한 사물인터넷 기기간 암호화 및 복호화 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100922728B1 (ko) * 2006-12-05 2009-10-22 한국전자통신연구원 Aes 암복호화 장치 및 암복호화 방법
KR100997238B1 (ko) * 2008-03-03 2010-11-29 삼성전자주식회사 Crum 유닛, 교체가능유닛 및 이를 이용하는 화상형성장치와, 그 인증 및 암호화 데이터 통신 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Mohona Ghosh, Analysis of Block Cipher Constructions against Biclique and Multiset Attacks, Indraprastha Institute of Information Technology, Delhi, (2016.01.)*
Taizo Shirai 외 4명, The 128-bit Blockcipher CLEFIA, International workshop on fast software encryption, Springer (2007.)*

Also Published As

Publication number Publication date
KR20200119413A (ko) 2020-10-20

Similar Documents

Publication Publication Date Title
US5745577A (en) Symmetric cryptographic system for data encryption
US7295671B2 (en) Advanced encryption standard (AES) hardware cryptographic engine
EP2016524B1 (en) Robust cipher design
CN107707343B (zh) 加解密一致的sp网络结构轻量级分组密码实现方法
Satoh et al. Unified hardware architecture for 128-bit block ciphers AES and Camellia
EP2316189A2 (en) Method for generating a cipher-based message authentication code
Paar et al. The advanced encryption standard (AES)
EA008183B1 (ru) Устройство и способ шифрования и дешифрования блока данных
US11057193B2 (en) Enhanced randomness for digital systems
Miroshnik et al. Uses of programmable logic integrated circuits for implementations of data encryption standard and its experimental linear cryptanalysis
Patel et al. Hybrid security algorithms for data transmission using AES-DES
KR102279245B1 (ko) 사물인터넷 응용을 위한 암호화 장치 및 그 방법
Balamurugan et al. High speed low cost implementation of advanced encryption standard on fpga
Murtaza et al. Fortification of aes with dynamic mix-column transformation
CN111262685B (zh) 一种新型密钥生成的Shield分组密码实现方法、装置及可读存储介质
Heys A tutorial on the implementation of block ciphers: software and hardware applications
Nakahara Jr et al. Linear cryptanalysis of reduced-round versions of the SAFER block cipher family
EP1001398B1 (en) Ciphering apparatus
Nadjia et al. Efficient implementation of AES S-box in LUT-6 FPGAs
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
EP4248433A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
KR20190037980A (ko) 퍼베이시브 컴퓨팅을 위한 효과적인 초경량 블록 암호 시스템
Seilova et al. About Cryptographic Properties of the Qalqan Encryption Algorithm.
Ali et al. HARPOCRATES: An Approach Towards Efficient Encryption of Data-at-rest
CN116318639A (zh) 一种轻量化Twofish加密算法加速器及其加速方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant