KR101940553B1 - 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법 - Google Patents

전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법 Download PDF

Info

Publication number
KR101940553B1
KR101940553B1 KR1020170072963A KR20170072963A KR101940553B1 KR 101940553 B1 KR101940553 B1 KR 101940553B1 KR 1020170072963 A KR1020170072963 A KR 1020170072963A KR 20170072963 A KR20170072963 A KR 20170072963A KR 101940553 B1 KR101940553 B1 KR 101940553B1
Authority
KR
South Korea
Prior art keywords
bit
replacement
bit string
permutation
string
Prior art date
Application number
KR1020170072963A
Other languages
English (en)
Other versions
KR20180135191A (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 KR1020170072963A priority Critical patent/KR101940553B1/ko
Publication of KR20180135191A publication Critical patent/KR20180135191A/ko
Application granted granted Critical
Publication of KR101940553B1 publication Critical patent/KR101940553B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

전치가 반영된 치환 테이블을 이용한 프레젠트(PRESENT) 기반의 암호화 장치 및 방법이 개시된다. 본 발명은 프레젠트 암호화 알고리즘에서 사용하는 치환 테이블인 S-BOX와 전치 테이블인 P-BOX가 결합된 치환 테이블을 이용하되, 해당 치환 테이블을 통해서 획득할 수 있는 데이터로부터 최종 암호화 데이터를 획득하기 위한 별도의 "AND 연산"이 불필요하도록 치환 테이블을 설계해 둠으로써, 프레젠트 암호화 알고리즘과 동일한 보안성을 갖는 암호화 데이터의 생성을 지원하면서 동시에 연산 과정을 최소화하여 저성능의 기기가 사용되는 사물인터넷 환경에서도 프레젠트 기반의 암호화 알고리즘이 사용될 수 있도록 지원할 수 있다.

Description

전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법{PRESENT BASED ENCRYPTION APPARATUS AND METHOD USING SUBSTITUTION TABLE WITH PERMUTATION}
본 발명은 저성능의 기기에서도 프레젠트(PRESENT) 기반의 암호화 알고리즘을 사용할 수 있도록 지원하기 위한 경량 암호화 기술과 관련된다.
최근, 가전, 의료, 교통, 산업 분야 등에서 사물인터넷의 사용이 증가함에 따라, 사물인터넷 분야에서 개인정보 유출, 데이터 위/변조 등과 같은 보안 위협도 함께 증가하고 있다.
이러한 사물인터넷 분야에서의 보안 위협을 방지하기 위해서, 메시지 인증, 데이터 암호화 등과 같은 다양한 보안 기술이 적용될 필요가 있지만, 사물인터넷 환경에서는 고성능의 기기가 사용되지 않기 때문에 연산 능력과 활용 가능한 자원에 한계가 존재하여 복잡한 보안 기술을 적용하기가 쉽지 않은 편이다.
따라서, 이러한 사물인터넷 환경에서 한정적인 기기 자원을 활용해서, 보안을 강화할 수 있도록 하기 위한 기술로 LEA, HIGHT, PRESENT, mCRYPTON, CLEFIA 등과 같은 경량 암호화 알고리즘이 등장하고 있다.
위 경량 암호화 알고리즘들은 블록 기반의 암호화 방식으로, LEA는 블록 크기가 128비트이고, 키 크기가 128/192/256비트인 국내 표준 경량 암호 알고리즘으로 치환 테이블인 S-BOX를 사용하지 않고, Addition Rotation Xor(ARX) 연산만으로 구성되어 동작하는 암호화 알고리즘이고, HIGHT는 8비트 단위의 산술연산만으로 구성된 알고리즘으로 블록 크기가 64비트이고, 키 크기는 128비트인 암호화 알고리즘이며, CLEFIA는 블록 크기가 128비트이고, 크기가 128/192/256비트인 키를 사용하며, Feistel 구조로 설계되었고, 키 크기에 따라 라운드 수가 변경되는 특징을 가지고 있다. 그리고, mCRYPTON는 Crypton의 축소 버전으로 블록의 크기가 64비트이고, 키 크기가 96/128비트이며, 총 12 라운드로 구성되어 있다.
마지막으로 프레젠트(PRESENT) 암호화 알고리즘은 AES(Advanced Encryption Standard) 기반의 블록 암호화 알고리즘으로 64비트의 크기를 갖는 평문 데이터가 입력되면, 31라운드의 연산을 거쳐 최종 암호화 데이터를 생성하는 알고리즘이다.
프레젠트 암호화 알고리즘에서는 각 라운드 별로 비밀키를 이용해서 데이터에 대한 전처리 암호화를 수행한 후 전처리 암호화 데이터를 4비트 단위로 하기의 표 1과 같은 치환 테이블인 S-BOX에 입력으로 인가하여 치환 데이터를 생성하고, 상기 치환 데이터를 구성하는 비트 값들을 하기의 표 2와 같은 전치(permutation) 테이블인 P-BOX를 이용해서 서로 자리바꿈을 수행함으로써, 암호화 데이터를 생성한다.
입력 값 0 1 2 3 4 5 6 7 8 9 A B C D E F
출력 값 C 5 6 B 9 0 A D 3 E F 8 4 7 1 2
입력 데이터의 비트 값의 위치 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
변경될 비트 값의 위치 0 16 32 48 1 17 33 49 2 18 34 50 3 19 35 51
입력 데이터의 비트 값의 위치 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
변경될 비트 값의 위치 4 20 36 52 5 21 37 53 6 22 38 54 7 23 39 55
입력 데이터의 비트 값의 위치 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
변경될 비트 값의 위치 8 24 40 56 9 25 41 57 10 26 42 58 11 27 43 59
입력 데이터의 비트 값의 위치 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
변경될 비트 값의 위치 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63
이러한, 프레젠트 암호화 알고리즘에서는 각 라운드별로 비밀키로 암호화를 수행하고, S-BOX를 이용한 데이터 치환을 수행하며, P-BOX를 이용한 데이터 전치를 수행해야 한다는 점에서, 한정된 시스템 자원을 갖는 사물인터넷 환경의 기기에서는 처리 속도가 늦어지는 단점이 있었다.
이러한 단점을 해소하기 위해서, 선행연구인 "Bo Zhu, An efficient software implementation of the block cipher PRESENT for 8-bit platforms(2013), 09. 05. 2016, https://github.com/ bozhu/PRESENT-C"에서는 S-BOX와 P-BOX를 결합한 단일의 치환 테이블인 SP-BOX를 설계함으로써, 각 라운드별로 비밀키로 암호화를 수행한 후 SP-BOX를 이용하여 데이터 치환을 수행하는 것만으로 프레젠트 암호화가 수행되도록 하는 기법을 제안하고 있다.
즉, 상기 선행연구에서는 입력 데이터를 상기 표 1에 따른 S-BOX에 인가시키고 연속해서 상기 표 2에 따른 P-BOX에 인가 시켰을 때 출력되는 출력 데이터에 대한 결과 값을 미리 정리한 단일의 치환 테이블인 SP-BOX를 설계함으로써, 입력 데이터를 SP-BOX에 한 번만 인가하여 출력 데이터를 생성할 수 있도록 하는 방법을 제안하였다.
하지만, 상기 선행연구에서는 입력 데이터를 SP-BOX에 인가해서 출력 데이터를 생성하였을 때, 상기 출력 데이터로부터 프레젠트 암호화 데이터를 생성해 내기 위해서, 상기 출력 데이터를 구성하는 비트스트링에서 특정 위치의 비트 값을 추출하기 위한 "AND 연산"이 추가로 수행되어야 한다는 점에서 S-BOX와 P-BOX를 각각 이용하는 방식과 대비하여 연산 과정이 줄어드는 장점이 있는 반면, SP-BOX로부터 획득한 출력 데이터로부터 프레젠트 암호화 데이터를 추출하기 위한 추가적인 "AND 연산"이 수행되어야 한다는 단점이 존재하였다.
따라서, 프레젠트 기반의 암호화 프로세스에서 S-BOX와 P-BOX를 통합한 단일의 치환 테이블인 SP-BOX를 이용함으로써, 전치 과정을 별도로 수행하는 연산을 생략하되, SP-BOX에서 획득된 출력 데이터로부터 프레젠트 암호화 데이터를 추출하기 위한 추가적인 "AND 연산"이 수행될 필요가 없도록 하는 치환 테이블의 설계를 통해 저성능의 기기들이 사용되는 사물인터넷 환경에서도 프레젠트 기반의 암호화 알고리즘이 정상적으로 적용될 수 있도록 지원하기 위한 기법의 연구가 필요하다.
본 발명은 프레젠트(PRESENT) 암호화 알고리즘에서 사용하는 치환 테이블인 S-BOX와 전치 테이블인 P-BOX가 결합된 치환 테이블을 이용하되, 해당 치환 테이블을 통해서 획득할 수 있는 데이터로부터 최종 암호화 데이터를 획득하기 위한 별도의 "AND 연산"이 불필요하도록 치환 테이블을 설계해 둠으로써, 프레젠트 암호화 알고리즘과 동일한 보안성을 갖는 암호화 데이터의 생성을 지원하면서 동시에 연산 과정을 최소화하여 저성능의 기기가 사용되는 사물인터넷 환경에서도 프레젠트 기반의 암호화 알고리즘이 사용될 수 있도록 지원하고자 한다.
본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치는 입력으로 인가되는 8비트의 비트스트링을 8비트의 치환된 비트스트링으로 치환하되, 상기 8비트의 치환된 비트스트링에 존재하는 8개의 비트 값들 중 연속된 2개의 비트 값을 제외한 나머지 6개의 비트 값들이 모두 "0"의 값이 할당되도록 설계되어 있는 16개의 서로 다른 치환 테이블들(상기 16개의 서로 다른 치환 테이블들은 4개의 치환 테이블들 별로 그룹화되어 있고, 각 그룹 내의 4개의 치환 테이블들은 상기 8비트의 치환된 비트스트링에서 상기 연속된 2개의 비트 값의 위치가 모두 상이하게 존재하도록 설계된 치환 테이블들임)이 저장되어 있는 치환 테이블 저장부, 64비트의 크기를 갖는 평문 데이터가 입력되면, 선정된(predetermined) 비밀키로 암호화를 수행하여 64비트의 크기를 갖는 전처리 암호화 데이터를 생성하고, 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 8비트의 비트스트링들 별로 분할하여 8비트의 분할 비트스트링들을 8개 생성하는 데이터 분할부, 상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 상기 치환 테이블 그룹들 별로 존재하는 4개의 치환 테이블들에 각각 입력으로 인가함으로써, 상기 치환 테이블 그룹들 별로 8비트의 치환 분할 비트스트링을 2개씩 생성하는 데이터 치환부 및 상기 치환 테이블 그룹들 별로 2개씩 생성된 8비트의 치환 분할 비트스트링들을 모두 연접하여 64비트의 크기를 갖는 암호화 데이터를 생성하는 암호화 데이터 생성부를 포함한다.
또한, 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법은 입력으로 인가되는 8비트의 비트스트링을 8비트의 치환된 비트스트링으로 치환하되, 상기 8비트의 치환된 비트스트링에 존재하는 8개의 비트 값들 중 연속된 2개의 비트 값을 제외한 나머지 6개의 비트 값들이 모두 "0"의 값이 할당되도록 설계되어 있는 16개의 서로 다른 치환 테이블들(상기 16개의 서로 다른 치환 테이블들은 4개의 치환 테이블들 별로 그룹화되어 있고, 각 그룹 내의 4개의 치환 테이블들은 상기 8비트의 치환된 비트스트링에서 상기 연속된 2개의 비트 값의 위치가 모두 상이하게 존재하도록 설계된 치환 테이블들임)이 저장되어 있는 치환 테이블 저장부를 유지하는 치환 테이블 유지 단계, 64비트의 크기를 갖는 평문 데이터가 입력되면, 선정된 비밀키로 암호화를 수행하여 64비트의 크기를 갖는 전처리 암호화 데이터를 생성하고, 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 8비트의 비트스트링들 별로 분할하여 8비트의 분할 비트스트링들을 8개 생성하는 데이터 분할 단계, 상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 상기 치환 테이블 그룹들 별로 존재하는 4개의 치환 테이블들에 각각 입력으로 인가함으로써, 상기 치환 테이블 그룹들 별로 8비트의 치환 분할 비트스트링을 2개씩 생성하는 데이터 치환 단계 및 상기 치환 테이블 그룹들 별로 2개씩 생성된 8비트의 치환 분할 비트스트링들을 모두 연접하여 64비트의 크기를 갖는 암호화 데이터를 생성하는 암호화 데이터 생성 단계를 포함한다.
본 발명은 프레젠트(PRESENT) 암호화 알고리즘에서 사용하는 치환 테이블인 S-BOX와 전치 테이블인 P-BOX가 결합된 치환 테이블을 이용하되, 해당 치환 테이블을 통해서 획득할 수 있는 데이터로부터 최종 암호화 데이터를 획득하기 위한 별도의 "AND 연산"이 불필요하도록 치환 테이블을 설계해 둠으로써, 프레젠트 암호화 알고리즘과 동일한 보안성을 갖는 암호화 데이터의 생성을 지원하면서 동시에 연산 과정을 최소화하여 저성능의 기기가 사용되는 사물인터넷 환경에서도 프레젠트 기반의 암호화 알고리즘이 사용될 수 있도록 지원할 수 있다.
도 1은 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치의 구조를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법을 도시한 순서도이다.
이하에서는 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명하기로 한다. 이러한 설명은 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였으며, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 본 명세서 상에서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 사람에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.
도 1은 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치의 구조를 도시한 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치(110)는 치환 테이블 저장부(111), 데이터 분할부(112), 데이터 치환부(113) 및 암호화 데이터 생성부(114)를 포함한다.
치환 테이블 저장부(111)에는 입력으로 인가되는 8비트의 비트스트링을 8비트의 치환된 비트스트링으로 치환하되, 상기 8비트의 치환된 비트스트링에 존재하는 8개의 비트 값들 중 연속된 2개의 비트 값을 제외한 나머지 6개의 비트 값들이 모두 "0"의 값이 할당되도록 설계되어 있는 16개의 서로 다른 치환 테이블들이 저장되어 있다.
여기서, 상기 16개의 서로 다른 치환 테이블들은 4개의 치환 테이블들 별로 그룹화되어 있고, 각 그룹 내의 4개의 치환 테이블들은 상기 8비트의 치환된 비트스트링에서 상기 연속된 2개의 비트 값의 위치가 모두 상이하게 존재하도록 설계되어 있다.
관련해서, 도 2에는 상기 16개의 서로 다른 치환 테이블들이 4개의 치환 테이블들 별로 그룹화되어 생성된 치환 테이블 그룹들(210, 220, 230, 240)을 설명하기 위한 개념도가 도시되어 있다.
여기서, 도면부호 210에 도시한 치환 테이블 그룹을 제1 치환 테이블 그룹, 도면부호 220에 도시한 치환 테이블 그룹을 제2 치환 테이블 그룹, 도면부호 230에 도시한 치환 테이블 그룹을 제3 치환 테이블 그룹, 도면부호 240에 도시한 치환 테이블 그룹을 제4 치환 테이블 그룹으로 명하기로 한다.
이때, 본 발명의 일실시예에 따르면, 치환 테이블 그룹들(210, 220, 230, 240) 중 제1 치환 테이블 그룹(210)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00001
,
Figure 112017055430795-pat00002
,
Figure 112017055430795-pat00003
,
Figure 112017055430795-pat00004
)은 상기 표 1의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 제1 치환 테이블 그룹(210)에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
이울러, 제1 치환 테이블 그룹(210)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00005
,
Figure 112017055430795-pat00006
,
Figure 112017055430795-pat00007
,
Figure 112017055430795-pat00008
) 중 첫 번째 치환 테이블인
Figure 112017055430795-pat00009
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있고, 두 번째 치환 테이블인
Figure 112017055430795-pat00010
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있으며, 세 번째 치환 테이블인
Figure 112017055430795-pat00011
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있고, 네 번째 치환 테이블인
Figure 112017055430795-pat00012
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있을 수 있다.
예컨대, 제1 치환 테이블 그룹(210)에 속해 있는 첫 번째 치환 테이블인
Figure 112017055430795-pat00013
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00014
에 입력으로 인가된다고 하였을 때, 도면부호 210의
Figure 112017055430795-pat00015
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00016
을 통해 출력될 8비트의 치환된 비트스트링에서 첫 번째 자리와 두 번째 자리(AB)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00017
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 210에 도시되어 있는 것처럼 "AB000000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00018
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 된다. 이는
Figure 112017055430795-pat00019
가 상기 표 1과 같은 S-BOX와 상기 표 2와 같은 P-BOX를 결합한 치환 테이블인데, "1", "2"가 연접된 8비트의 입력 데이터가 S-BOX에 인가된 후 연속해서 P-BOX에 인가되면, S-BOX에서 치환된 출력 값 "5", "6"이 연접된 8비트의 비트스트링이 표 2에 도시된 P-BOX에 의해 자리바꿈이 됨에 따라, 첫 번째 자리에 위치하는 비트 값이 첫 번째 자리로 전치되고, 다섯 번째 자리에 위치하는 비트 값이 두 번째 자리로 전치되며, 나머지 자리에 위치하는 비트 값들은 모두 8비트의 비트스트링이 위치하는 자리 이외의 자리로 전치된다는 점에서,
Figure 112017055430795-pat00020
는 8비트의 입력 비트스트링이 S-BOX와 P-BOX를 모두 통과하였을 때 획득할 수 있는 데이터를 획득할 수 있도록 하기 위해서 앞서 설명한 바와 같이 설계될 수 있다.
그리고, 제1 치환 테이블 그룹(210)에 속해 있는 두 번째 치환 테이블인
Figure 112017055430795-pat00021
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00022
에 입력으로 인가된다고 하였을 때, 도면부호 210의
Figure 112017055430795-pat00023
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00024
을 통해 출력될 8비트의 치환된 비트스트링에서 세 번째 자리와 네 번째 자리(AB)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00025
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 210에 도시되어 있는 것처럼 "00AB0000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00026
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 세 번째 자리와 네 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제1 치환 테이블 그룹(210)에 속해 있는 세 번째 치환 테이블인
Figure 112017055430795-pat00027
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00028
에 입력으로 인가된다고 하였을 때, 도면부호 210의
Figure 112017055430795-pat00029
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00030
을 통해 출력될 8비트의 치환된 비트스트링에서 다섯 번째 자리와 여섯 번째 자리(AB)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00031
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 210에 도시되어 있는 것처럼 "0000AB00"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00032
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 다섯 번째 자리와 여섯 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제1 치환 테이블 그룹(210)에 속해 있는 네 번째 치환 테이블인
Figure 112017055430795-pat00033
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00034
에 입력으로 인가된다고 하였을 때, 도면부호 210의
Figure 112017055430795-pat00035
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00036
을 통해 출력될 8비트의 치환된 비트스트링에서 일곱 번째 자리와 여덟 번째 자리(AB)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00037
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 210에 도시되어 있는 것처럼 "000000AB"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00038
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 일곱 번째 자리와 여덟 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
이러한 방식으로 제1 치환 테이블 그룹(210)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00039
,
Figure 112017055430795-pat00040
,
Figure 112017055430795-pat00041
,
Figure 112017055430795-pat00042
)을 설계하게 되면, 64비트의 크기를 갖는 입력 데이터를 8비트씩 나눈 후 앞의 4개의 8비트의 데이터(각 "데이터 1, 데이터 2, 데이터 3, 데이터 4"라고 함)를 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00043
,
Figure 112017055430795-pat00044
,
Figure 112017055430795-pat00045
,
Figure 112017055430795-pat00046
)에 각각 인가하였을 때,
Figure 112017055430795-pat00047
로부터는 데이터 1이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "AB000000"이라는 치환 데이터를 획득할 수 있고,
Figure 112017055430795-pat00048
로부터는 데이터 2가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00AB0000"이라는 치환 데이터를 획득할 수 있으며,
Figure 112017055430795-pat00049
로부터는 데이터 3이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000AB00"이라는 치환 데이터를 획득할 수 있고,
Figure 112017055430795-pat00050
로부터는 데이터 4가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000AB"이라는 치환 데이터를 획득할 수 있게 된다.
이렇게, "AB000000", "00AB0000", "0000AB00", "000000AB"의 형태를 갖는 각 치환 데이터들이 획득되면, 각 치환 데이터를 모두 배타적 논리합하게 되면, "ABABABAB"의 형태를 갖는 8비트의 데이터를 획득할 수 있게 된다.
여기서,
Figure 112017055430795-pat00051
을 통해서 획득한 "AB000000"이라는 치환 데이터는 상기 데이터 1이 S-BOX를 통과하여 생성된 출력 데이터 1에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 첫 번째(표 2에서는 "0")와 다섯 번째(표 2에서는 "4") 비트 값이 각각 첫 번째(표 2에서는 "0")와 두 번째(표 2에서는 "1") 자리로 전치된 데이터와 같고,
Figure 112017055430795-pat00052
을 통해서 획득한 "00AB0000"이라는 치환 데이터는 상기 데이터 2(상기 데이터 2는 상기 데이터 1에 연접되어 있는 데이터이므로, 상기 데이터 2의 비트스트링은 아홉 번째 자리부터 시작함)가 S-BOX를 통과하여 생성된 출력 데이터 2에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 아홉 번째(표 2에서는 "8")와 열세 번째(표 2에서는 "12") 비트 값이 각각 세 번째(표 2에서는 "2")와 네 번째(표 2에서는 "3") 자리로 전치된 데이터와 같으며,
Figure 112017055430795-pat00053
을 통해서 획득한 "0000AB00"이라는 치환 데이터는 상기 데이터 3(상기 데이터 3은 상기 데이터 2에 연접되어 있는 데이터이므로, 상기 데이터 3의 비트스트링은 열일곱 번째 자리부터 시작함)이 S-BOX를 통과하여 생성된 출력 데이터 3에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 열일곱 번째(표 2에서는 "16")와 스물한 번째(표 2에서는 "20") 비트 값이 각각 다섯 번째(표 2에서는 "4")와 여섯 번째(표 2에서는 "5") 자리로 전치된 데이터와 같고,
Figure 112017055430795-pat00054
을 통해서 획득한 "000000AB"이라는 치환 데이터는 상기 데이터 4(상기 데이터 4는 상기 데이터 3에 연접되어 있는 데이터이므로, 상기 데이터 4의 비트스트링은 스물다섯 번째 자리부터 시작함)가 S-BOX를 통과하여 생성된 출력 데이터 4에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 스물다섯 번째(표 2에서는 "24")와 스물아홉 번째(표 2에서는 "28") 비트 값이 각각 일곱 번째(표 2에서는 "6")와 여덟 번째(표 2에서는 "7") 자리로 전치된 데이터와 같게 된다.
이로 인해서, 상기 데이터 1, 2, 3, 4에 대한 치환 데이터인 "AB000000", "00AB0000", "0000AB00", "000000AB"를 모두 배타적 논리합하게 되면, 결론적으로 상기 표 2의 P-BOX에서 첫 번째 자리부터 여덟 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 입력 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 암호화 데이터 중 앞부분의 8비트의 비트스트링과 동일한 값이 된다.
이때, 본 발명의 일실시예에 따르면, 치환 테이블 그룹들(210, 220, 230, 240) 중 제2 치환 테이블 그룹(220)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00055
,
Figure 112017055430795-pat00056
,
Figure 112017055430795-pat00057
,
Figure 112017055430795-pat00058
)은 상기 표 1의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 제2 치환 테이블 그룹(220)에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
이울러, 제2 치환 테이블 그룹(220)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00059
,
Figure 112017055430795-pat00060
,
Figure 112017055430795-pat00061
,
Figure 112017055430795-pat00062
) 중 첫 번째 치환 테이블인
Figure 112017055430795-pat00063
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있고, 두 번째 치환 테이블인
Figure 112017055430795-pat00064
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있으며, 세 번째 치환 테이블인
Figure 112017055430795-pat00065
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있고, 네 번째 치환 테이블인
Figure 112017055430795-pat00066
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있을 수 있다.
예컨대, 제2 치환 테이블 그룹(220)에 속해 있는 첫 번째 치환 테이블인
Figure 112017055430795-pat00067
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00068
에 입력으로 인가된다고 하였을 때, 도면부호 220의
Figure 112017055430795-pat00069
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00070
을 통해 출력될 8비트의 치환된 비트스트링에서 첫 번째 자리와 두 번째 자리(CD)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00071
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 220에 도시되어 있는 것처럼 "CD000000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00072
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 첫 번째 자리와 두 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
그리고, 제2 치환 테이블 그룹(220)에 속해 있는 두 번째 치환 테이블인
Figure 112017055430795-pat00073
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00074
에 입력으로 인가된다고 하였을 때, 도면부호 220의
Figure 112017055430795-pat00075
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00076
을 통해 출력될 8비트의 치환된 비트스트링에서 세 번째 자리와 네 번째 자리(CD)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00077
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 220에 도시되어 있는 것처럼 "00CD0000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00078
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 세 번째 자리와 네 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제2 치환 테이블 그룹(220)에 속해 있는 세 번째 치환 테이블인
Figure 112017055430795-pat00079
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00080
에 입력으로 인가된다고 하였을 때, 도면부호 220의
Figure 112017055430795-pat00081
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00082
을 통해 출력될 8비트의 치환된 비트스트링에서 다섯 번째 자리와 여섯 번째 자리(CD)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00083
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 220에 도시되어 있는 것처럼 "0000CD00"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00084
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 다섯 번째 자리와 여섯 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제2 치환 테이블 그룹(220)에 속해 있는 네 번째 치환 테이블인
Figure 112017055430795-pat00085
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00086
에 입력으로 인가된다고 하였을 때, 도면부호 220의
Figure 112017055430795-pat00087
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00088
을 통해 출력될 8비트의 치환된 비트스트링에서 일곱 번째 자리와 여덟 번째 자리(CD)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00089
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 220에 도시되어 있는 것처럼 "000000CD"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00090
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 일곱 번째 자리와 여덟 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 본 발명의 일실시예에 따르면, 치환 테이블 그룹들(210, 220, 230, 240) 중 제3 치환 테이블 그룹(230)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00091
,
Figure 112017055430795-pat00092
,
Figure 112017055430795-pat00093
,
Figure 112017055430795-pat00094
)은 상기 표 1의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 제3 치환 테이블 그룹(230)에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
이울러, 제3 치환 테이블 그룹(230)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00095
,
Figure 112017055430795-pat00096
,
Figure 112017055430795-pat00097
,
Figure 112017055430795-pat00098
) 중 첫 번째 치환 테이블인
Figure 112017055430795-pat00099
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있고, 두 번째 치환 테이블인
Figure 112017055430795-pat00100
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있으며, 세 번째 치환 테이블인
Figure 112017055430795-pat00101
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있고, 네 번째 치환 테이블인
Figure 112017055430795-pat00102
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있을 수 있다.
예컨대, 제3 치환 테이블 그룹(230)에 속해 있는 첫 번째 치환 테이블인
Figure 112017055430795-pat00103
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00104
에 입력으로 인가된다고 하였을 때, 도면부호 230의
Figure 112017055430795-pat00105
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00106
을 통해 출력될 8비트의 치환된 비트스트링에서 첫 번째 자리와 두 번째 자리(EF)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00107
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 230에 도시되어 있는 것처럼 "EF000000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00108
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 첫 번째 자리와 두 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
그리고, 제3 치환 테이블 그룹(230)에 속해 있는 두 번째 치환 테이블인
Figure 112017055430795-pat00109
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00110
에 입력으로 인가된다고 하였을 때, 도면부호 230의
Figure 112017055430795-pat00111
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00112
을 통해 출력될 8비트의 치환된 비트스트링에서 세 번째 자리와 네 번째 자리(EF)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00113
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 230에 도시되어 있는 것처럼 "00EF0000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00114
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 세 번째 자리와 네 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제3 치환 테이블 그룹(230)에 속해 있는 세 번째 치환 테이블인
Figure 112017055430795-pat00115
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00116
에 입력으로 인가된다고 하였을 때, 도면부호 230의
Figure 112017055430795-pat00117
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00118
을 통해 출력될 8비트의 치환된 비트스트링에서 다섯 번째 자리와 여섯 번째 자리(EF)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서, 에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 230에 도시되어 있는 것처럼 "0000EF00"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00120
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 다섯 번째 자리와 여섯 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제3 치환 테이블 그룹(230)에 속해 있는 네 번째 치환 테이블인
Figure 112017055430795-pat00121
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00122
에 입력으로 인가된다고 하였을 때, 도면부호 230의
Figure 112017055430795-pat00123
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00124
을 통해 출력될 8비트의 치환된 비트스트링에서 일곱 번째 자리와 여덟 번째 자리(EF)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00125
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 230에 도시되어 있는 것처럼 "000000EF"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00126
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 일곱 번째 자리와 여덟 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 본 발명의 일실시예에 따르면, 치환 테이블 그룹들(210, 220, 230, 240) 중 제4 치환 테이블 그룹(240)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00127
,
Figure 112017055430795-pat00128
,
Figure 112017055430795-pat00129
,
Figure 112017055430795-pat00130
)은 상기 표 1의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 제4 치환 테이블 그룹(240)에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
이울러, 제4 치환 테이블 그룹(240)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00131
,
Figure 112017055430795-pat00132
,
Figure 112017055430795-pat00133
,
Figure 112017055430795-pat00134
) 중 첫 번째 치환 테이블인
Figure 112017055430795-pat00135
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있고, 두 번째 치환 테이블인
Figure 112017055430795-pat00136
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있으며, 세 번째 치환 테이블인
Figure 112017055430795-pat00137
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있고, 네 번째 치환 테이블인
Figure 112017055430795-pat00138
에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있을 수 있다.
예컨대, 제4 치환 테이블 그룹(240)에 속해 있는 첫 번째 치환 테이블인
Figure 112017055430795-pat00139
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00140
에 입력으로 인가된다고 하였을 때, 도면부호 240의
Figure 112017055430795-pat00141
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00142
을 통해 출력될 8비트의 치환된 비트스트링에서 첫 번째 자리와 두 번째 자리(GH)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00143
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 240에 도시되어 있는 것처럼 "GH000000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00144
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 첫 번째 자리와 두 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
그리고, 제4 치환 테이블 그룹(240)에 속해 있는 두 번째 치환 테이블인
Figure 112017055430795-pat00145
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00146
에 입력으로 인가된다고 하였을 때, 도면부호 240의
Figure 112017055430795-pat00147
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00148
을 통해 출력될 8비트의 치환된 비트스트링에서 세 번째 자리와 네 번째 자리(GH)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00149
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 240에 도시되어 있는 것처럼 "00GH0000"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00150
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 세 번째 자리와 네 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제4 치환 테이블 그룹(240)에 속해 있는 세 번째 치환 테이블인
Figure 112017055430795-pat00151
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00152
에 입력으로 인가된다고 하였을 때, 도면부호 240의
Figure 112017055430795-pat00153
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00154
을 통해 출력될 8비트의 치환된 비트스트링에서 다섯 번째 자리와 여섯 번째 자리(GH)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00155
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 240에 도시되어 있는 것처럼 "0000GH00"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00156
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 다섯 번째 자리와 여섯 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
또한, 제4 치환 테이블 그룹(240)에 속해 있는 네 번째 치환 테이블인
Figure 112017055430795-pat00157
은 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터가
Figure 112017055430795-pat00158
에 입력으로 인가된다고 하였을 때, 도면부호 240의
Figure 112017055430795-pat00159
에 대해서 도시한 화살표와 같이, 상기 표 1의 S-BOX에서 입력 값인 "1", "2"에 각각 대응하는 출력 값인 "5", "6"을 구성하는 4비트의 비트스트링 2개를 연접하여 생성한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을
Figure 112017055430795-pat00160
을 통해 출력될 8비트의 치환된 비트스트링에서 일곱 번째 자리와 여덟 번째 자리(GH)에 연속해서 할당하고, 나머지 자리에는 모두 "0"을 할당함으로써, 상기 "1", "2"라는 4비트의 데이터를 구성하는 비트스트링 2개가 연접되어 있는 8비트의 입력 데이터를 8비트의 치환된 비트스트링으로 치환하도록 설계되어 있다. 이로 인해서,
Figure 112017055430795-pat00161
에 8비트의 비트스트링을 입력으로 인가하였을 때, 출력되는 8비트의 비트스트링의 형태는 도면부호 240에 도시되어 있는 것처럼 "000000GH"의 형태를 가지게 된다.
결국,
Figure 112017055430795-pat00162
라는 치환 테이블로부터는 8비트의 비트스트링이 입력으로 인가되었을 때, 상기 표 1의 S-BOX를 통한 출력 값에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값만을 획득할 수 있게 되고, 해당 비트 값의 위치가 일곱 번째 자리와 여덟 번째 자리에 위치한 결과 값을 획득할 수 있게 된다.
이렇게, 치환 테이블 저장부(111) 상에 16개의 치환 테이블들이 저장되어 있는 상태에서 64비트의 크기를 갖는 평문 데이터가 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치(110)에 입력되면, 데이터 분할부(112)는 선정된(predetermined) 비밀키로 암호화를 수행하여 64비트의 크기를 갖는 전처리 암호화 데이터를 생성하고, 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 8비트의 비트스트링들 별로 분할하여 8비트의 분할 비트스트링들을 8개 생성한다.
이때, 데이터 분할부(112)는 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 좌측에서 순차적으로 8비트씩 잘라서, 상기 8개의 8비트의 분할 비트스트링들을 생성할 수 있다.
그리고, 데이터 치환부(113)는 상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 상기 치환 테이블 그룹들(210, 220, 230, 240) 별로 존재하는 4개의 치환 테이블들에 각각 입력으로 인가함으로써, 상기 치환 테이블 그룹들(210, 220, 230, 240) 별로 8비트의 치환 분할 비트스트링을 2개씩 생성한다.
이때, 본 발명의 일실시예에 따르면, 데이터 치환부(113)는 그룹 생성부(115), 제1 데이터 치환부(116), 제2 데이터 치환부(117), 제3 데이터 치환부(118), 제4 데이터 치환부(119), 제5 데이터 치환부(120), 제6 데이터 치환부(121), 제7 데이터 치환부(122) 및 제8 데이터 치환부(123)를 포함할 수 있다.
그룹 생성부(115)는 상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 제1 분할 비트스트링 그룹과 제2 분할 비트스트링 그룹을 생성한다.
예컨대, 상기 8개의 8비트의 분할 비트스트링들을 순서대로 "s0, s1, s2, s3, s4, s5, s6, s7"이라고 한다면, 그룹 생성부(115)는 "s0, s1, s2, s3"을 제1 분할 비트스트링 그룹, "s4, s5, s6, s7"을 제2 분할 비트스트링 그룹으로 분할할 수 있다.
제1 데이터 치환부(116)는 상기 제1 치환 테이블 그룹(210)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00163
,
Figure 112017055430795-pat00164
,
Figure 112017055430795-pat00165
,
Figure 112017055430795-pat00166
) 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s0, s1, s2, s3"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제1 치환 비트스트링들을 생성하고, 상기 4개의 제1 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제1 치환 분할 비트스트링을 생성한다.
관련해서, "s0, s1, s2, s3"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00167
,
Figure 112017055430795-pat00168
,
Figure 112017055430795-pat00169
,
Figure 112017055430795-pat00170
)에 각각 인가되면,
Figure 112017055430795-pat00171
로부터는 s0이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "AB000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00172
로부터는 s1이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00AB0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00173
로부터는 s2가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000AB00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00174
로부터는 s3이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000AB"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00175
,
Figure 112017055430795-pat00176
,
Figure 112017055430795-pat00177
,
Figure 112017055430795-pat00178
)을 통해서, "AB000000", "00AB0000", "0000AB00", "000000AB"의 형태를 갖는 제1 치환 비트스트링들이 획득되면, 제1 데이터 치환부(116)는 상기 제1 치환 비트스트링들을 모두 배타적 논리합함으로써, "ABABABAB"의 형태를 갖는 8비트의 제1 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서,
Figure 112017055430795-pat00179
을 통해서 획득한 "AB000000"이라는 치환 비트스트링은 s0이 S-BOX를 통과하여 생성된 출력 데이터 1에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 첫 번째(표 2에서는 "0")와 다섯 번째(표 2에서는 "4") 비트 값이 각각 첫 번째(표 2에서는 "0")와 두 번째(표 2에서는 "1") 자리로 전치된 데이터와 같고,
Figure 112017055430795-pat00180
을 통해서 획득한 "00AB0000"이라는 치환 비트스트링은 s1(s1은 s0에 연접되어 있는 데이터이므로, s1의 비트스트링은 아홉 번째 자리부터 시작함)이 S-BOX를 통과하여 생성된 출력 데이터 2에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 아홉 번째(표 2에서는 "8")와 열세 번째(표 2에서는 "12") 비트 값이 각각 세 번째(표 2에서는 "2")와 네 번째(표 2에서는 "3") 자리로 전치된 데이터와 같으며,
Figure 112017055430795-pat00181
을 통해서 획득한 "0000AB00"이라는 치환 비트스트링은 s2(s2는 s1에 연접되어 있는 데이터이므로, s2의 비트스트링은 열일곱 번째 자리부터 시작함)가 S-BOX를 통과하여 생성된 출력 데이터 3에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 열일곱 번째(표 2에서는 "16")와 스물한 번째(표 2에서는 "20") 비트 값이 각각 다섯 번째(표 2에서는 "4")와 여섯 번째(표 2에서는 "5") 자리로 전치된 데이터와 같고,
Figure 112017055430795-pat00182
을 통해서 획득한 "000000AB"이라는 치환 비트스트링은 s3(s3은 s2에 연접되어 있는 데이터이므로, s3의 비트스트링은 스물다섯 번째 자리부터 시작함)이 S-BOX를 통과하여 생성된 출력 데이터 4에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 스물다섯 번째(표 2에서는 "24")와 스물아홉 번째(표 2에서는 "28") 비트 값이 각각 일곱 번째(표 2에서는 "6")와 여덟 번째(표 2에서는 "7") 자리로 전치된 데이터와 같게 된다.
이로 인해서, s0, s1, s2, s3에 대한 치환 비트스트링인 "AB000000", "00AB0000", "0000AB00", "000000AB"를 모두 배타적 논리합하게 되면, 결론적으로 상기 표 2의 P-BOX에서 첫 번째 자리부터 여덟 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 앞부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제1 데이터 치환부(116)는 하기의 수학식 1에 따른 연산을 수행함으로써, 상기 제1 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00183
여기서, "s'1"은 상기 제1 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00184
"은 "
Figure 112017055430795-pat00185
"라는 치환 테이블에 "s0"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00186
"는 배타적 논리합 연산을 의미한다.
제2 데이터 치환부(117)는 상기 제1 치환 테이블 그룹(210)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00187
,
Figure 112017055430795-pat00188
,
Figure 112017055430795-pat00189
,
Figure 112017055430795-pat00190
) 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s4, s5, s6, s7"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제2 치환 비트스트링들을 생성하고, 상기 4개의 제2 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제2 치환 분할 비트스트링을 생성한다.
관련해서, "s4, s5, s6, s7"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00191
,
Figure 112017055430795-pat00192
,
Figure 112017055430795-pat00193
,
Figure 112017055430795-pat00194
)에 각각 인가되면,
Figure 112017055430795-pat00195
로부터는 s4가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "AB000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00196
로부터는 s5가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00AB0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00197
로부터는 s6이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000AB00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00198
로부터는 s7이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000AB"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00199
,
Figure 112017055430795-pat00200
,
Figure 112017055430795-pat00201
,
Figure 112017055430795-pat00202
)을 통해서, "AB000000", "00AB0000", "0000AB00", "000000AB"의 형태를 갖는 제2 치환 비트스트링들이 획득되면, 제2 데이터 치환부(117)는 상기 제2 치환 비트스트링들을 모두 배타적 논리합함으로써, "ABABABAB"의 형태를 갖는 8비트의 제2 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서,
Figure 112017055430795-pat00203
을 통해서 획득한 "AB000000"이라는 치환 비트스트링은 s4(s4는 s3에 연접되어 있는 데이터이므로, s4의 비트스트링은 서른세 번째 자리부터 시작함)가 S-BOX를 통과하여 생성된 출력 데이터 1에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 서른세 번째(표 2에서는 "32")와 서른일곱 번째(표 2에서는 "36") 비트 값이 각각 아홉 번째(표 2에서는 "8")와 열 번째(표 2에서는 "9") 자리로 전치된 데이터와 같고,
Figure 112017055430795-pat00204
을 통해서 획득한 "00AB0000"이라는 치환 비트스트링은 s5(s5는 s4에 연접되어 있는 데이터이므로, s5의 비트스트링은 마흔한 번째 자리부터 시작함)가 S-BOX를 통과하여 생성된 출력 데이터 2에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 마흔한 번째(표 2에서는 "40")와 마흔다섯 번째(표 2에서는 "44") 비트 값이 각각 열한 번째(표 2에서는 "10")와 열두 번째(표 2에서는 "11") 자리로 전치된 데이터와 같으며,
Figure 112017055430795-pat00205
을 통해서 획득한 "0000AB00"이라는 치환 비트스트링은 s6(s6은 s5에 연접되어 있는 데이터이므로, s6의 비트스트링은 마흔아홉 번째 자리부터 시작함)이 S-BOX를 통과하여 생성된 출력 데이터 3에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 마흔아홉 번째(표 2에서는 "48")와 쉰세 번째(표 2에서는 "52") 비트 값이 각각 열세 번째(표 2에서는 "12")와 열네 번째(표 2에서는 "13") 자리로 전치된 데이터와 같고,
Figure 112017055430795-pat00206
을 통해서 획득한 "000000AB"이라는 치환 비트스트링은 s7(s7은 s6에 연접되어 있는 데이터이므로, s7의 비트스트링은 쉰일곱 번째 자리부터 시작함)이 S-BOX를 통과하여 생성된 출력 데이터 4에서 상기 표 2와 같은 P-BOX에 의한 전치가 수행됨에 따라 쉰일곱 번째(표 2에서는 "56")와 예순한 번째(표 2에서는 "60") 비트 값이 각각 열다섯 번째(표 2에서는 "14")와 열여섯 번째(표 2에서는 "15") 자리로 전치된 데이터와 같게 된다.
이로 인해서, s4, s5, s6, s7에 대한 치환 비트스트링인 "AB000000", "00AB0000", "0000AB00", "000000AB"를 모두 배타적 논리합하게 되면, 결론적으로 상기 표 2의 P-BOX에서 아홉 번째 자리부터 열여섯 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 두 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제2 데이터 치환부(117)는 하기의 수학식 2에 따른 연산을 수행함으로써, 상기 제2 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00207
여기서, "s'2"은 상기 제2 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00208
"은 "
Figure 112017055430795-pat00209
"라는 치환 테이블에 "s4"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00210
"는 배타적 논리합 연산을 의미한다.
제3 데이터 치환부(118)는 상기 제2 치환 테이블 그룹(220)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00211
,
Figure 112017055430795-pat00212
,
Figure 112017055430795-pat00213
,
Figure 112017055430795-pat00214
) 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s0, s1, s2, s3"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제3 치환 비트스트링들을 생성하고, 상기 4개의 제3 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제3 치환 분할 비트스트링을 생성한다.
관련해서, "s0, s1, s2, s3"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00215
,
Figure 112017055430795-pat00216
,
Figure 112017055430795-pat00217
,
Figure 112017055430795-pat00218
)에 각각 인가되면,
Figure 112017055430795-pat00219
로부터는 s0이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "CD000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00220
로부터는 s1이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00CD0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00221
로부터는 s2가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000CD00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00222
로부터는 s3이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000CD"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00223
,
Figure 112017055430795-pat00224
,
Figure 112017055430795-pat00225
,
Figure 112017055430795-pat00226
)을 통해서, "CD000000", "00CD0000", "0000CD00", "000000CD"의 형태를 갖는 제3 치환 비트스트링들이 획득되면, 제3 데이터 치환부(118)는 상기 제3 치환 비트스트링들을 모두 배타적 논리합함으로써, "CDCDCDCD"의 형태를 갖는 8비트의 제3 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서, 상기 8비트의 제3 치환 분할 비트스트링은 앞서 제1 데이터 치환부(116)와 제2 데이터 치환부(117)를 통해서 설명한 것과 동일한 원리로, 상기 표 2의 P-BOX에서 열일곱 번째 자리부터 스물네 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 세 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제3 데이터 치환부(118)는 하기의 수학식 3에 따른 연산을 수행함으로써, 상기 제3 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00227
여기서, "s'3"은 상기 제3 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00228
"은 "
Figure 112017055430795-pat00229
"라는 치환 테이블에 "s0"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00230
"는 배타적 논리합 연산을 의미한다.
제4 데이터 치환부(119)는 상기 제2 치환 테이블 그룹(220)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00231
,
Figure 112017055430795-pat00232
,
Figure 112017055430795-pat00233
,
Figure 112017055430795-pat00234
) 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s4, s5, s6, s7"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제4 치환 비트스트링들을 생성하고, 상기 4개의 제4 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제4 치환 분할 비트스트링을 생성한다.
관련해서, "s4, s5, s6, s7"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00235
,
Figure 112017055430795-pat00236
,
Figure 112017055430795-pat00237
,
Figure 112017055430795-pat00238
)에 각각 인가되면,
Figure 112017055430795-pat00239
로부터는 s4가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "CD000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00240
로부터는 s5가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00CD0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00241
로부터는 s6이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000CD00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00242
로부터는 s7이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000CD"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00243
,
Figure 112017055430795-pat00244
,
Figure 112017055430795-pat00245
,
Figure 112017055430795-pat00246
)을 통해서, "CD000000", "00CD0000", "0000CD00", "000000CD"의 형태를 갖는 제4 치환 비트스트링들이 획득되면, 제4 데이터 치환부(119)는 상기 제4 치환 비트스트링들을 모두 배타적 논리합함으로써, "CDCDCDCD"의 형태를 갖는 8비트의 제4 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서, 상기 8비트의 제4 치환 분할 비트스트링은 앞서 제1 데이터 치환부(116)와 제2 데이터 치환부(117)를 통해서 설명한 것과 동일한 원리로, 상기 표 2의 P-BOX에서 스물다섯 번째 자리부터 서른두 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 네 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제4 데이터 치환부(119)는 하기의 수학식 4에 따른 연산을 수행함으로써, 상기 제4 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00247
여기서, "s'4"은 상기 제4 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00248
"은 "
Figure 112017055430795-pat00249
"라는 치환 테이블에 "s4"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00250
"는 배타적 논리합 연산을 의미한다.
제5 데이터 치환부(120)는 상기 제3 치환 테이블 그룹(230)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00251
,
Figure 112017055430795-pat00252
,
Figure 112017055430795-pat00253
,
Figure 112017055430795-pat00254
) 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s0, s1, s2, s3"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제5 치환 비트스트링들을 생성하고, 상기 4개의 제5 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제5 치환 분할 비트스트링을 생성한다.
관련해서, "s0, s1, s2, s3"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00255
,
Figure 112017055430795-pat00256
,
Figure 112017055430795-pat00257
,
Figure 112017055430795-pat00258
)에 각각 인가되면,
Figure 112017055430795-pat00259
로부터는 s0이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "EF000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00260
로부터는 s1이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00EF0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00261
로부터는 s2가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000EF00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00262
로부터는 s3이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000EF"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00263
,
Figure 112017055430795-pat00264
,
Figure 112017055430795-pat00265
,
Figure 112017055430795-pat00266
)을 통해서, "EF000000", "00EF0000", "0000EF00", "000000EF"의 형태를 갖는 제5 치환 비트스트링들이 획득되면, 제5 데이터 치환부(120)는 상기 제5 치환 비트스트링들을 모두 배타적 논리합함으로써, "EFEFEFEF"의 형태를 갖는 8비트의 제5 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서, 상기 8비트의 제5 치환 분할 비트스트링은 앞서 제1 데이터 치환부(116)와 제2 데이터 치환부(117)를 통해서 설명한 것과 동일한 원리로, 상기 표 2의 P-BOX에서 서른세 번째 자리부터 마흔 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 다섯 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제5 데이터 치환부(120)는 하기의 수학식 5에 따른 연산을 수행함으로써, 상기 제5 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00267
여기서, "s'5"은 상기 제5 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00268
"은 "
Figure 112017055430795-pat00269
"라는 치환 테이블에 "s0"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00270
"는 배타적 논리합 연산을 의미한다.
제6 데이터 치환부(121)는 상기 제3 치환 테이블 그룹(230)에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s4, s5, s6, s7"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제6 치환 비트스트링들을 생성하고, 상기 4개의 제6 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제6 치환 분할 비트스트링을 생성한다.
관련해서, "s4, s5, s6, s7"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00271
,
Figure 112017055430795-pat00272
,
Figure 112017055430795-pat00273
,
Figure 112017055430795-pat00274
)에 각각 인가되면,
Figure 112017055430795-pat00275
로부터는 s4가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "EF000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00276
로부터는 s5가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00EF0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00277
로부터는 s6이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000EF00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00278
로부터는 s7이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000EF"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00279
,
Figure 112017055430795-pat00280
,
Figure 112017055430795-pat00281
,
Figure 112017055430795-pat00282
)을 통해서, "EF000000", "00EF0000", "0000EF00", "000000EF"의 형태를 갖는 제6 치환 비트스트링들이 획득되면, 제6 데이터 치환부(121)는 상기 제6 치환 비트스트링들을 모두 배타적 논리합함으로써, "EFEFEFEF"의 형태를 갖는 8비트의 제6 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서, 상기 8비트의 제6 치환 분할 비트스트링은 앞서 제1 데이터 치환부(116)와 제2 데이터 치환부(117)를 통해서 설명한 것과 동일한 원리로, 상기 표 2의 P-BOX에서 마흔한 번째 자리부터 마흔여덟 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 여섯 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제6 데이터 치환부(121)는 하기의 수학식 6에 따른 연산을 수행함으로써, 상기 제6 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00283
여기서, "s'6"은 상기 제6 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00284
"은 "
Figure 112017055430795-pat00285
"라는 치환 테이블에 "s4"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00286
"는 배타적 논리합 연산을 의미한다.
제7 데이터 치환부(122)는 상기 제4 치환 테이블 그룹(240)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00287
,
Figure 112017055430795-pat00288
,
Figure 112017055430795-pat00289
,
Figure 112017055430795-pat00290
) 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s0, s1, s2, s3"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제7 치환 비트스트링들을 생성하고, 상기 4개의 제7 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제7 치환 분할 비트스트링을 생성한다.
관련해서, "s0, s1, s2, s3"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00291
,
Figure 112017055430795-pat00292
,
Figure 112017055430795-pat00293
,
Figure 112017055430795-pat00294
)에 각각 인가되면,
Figure 112017055430795-pat00295
로부터는 s0이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "GH000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00296
로부터는 s1이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00GH0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00297
로부터는 s2가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000GH00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00298
로부터는 s3이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000GH"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00299
,
Figure 112017055430795-pat00300
,
Figure 112017055430795-pat00301
,
Figure 112017055430795-pat00302
)을 통해서, "GH000000", "00GH0000", "0000GH00", "000000GH"의 형태를 갖는 제7 치환 비트스트링들이 획득되면, 제7 데이터 치환부(122)는 상기 제7 치환 비트스트링들을 모두 배타적 논리합함으로써, "GHGHGHGH의 형태를 갖는 8비트의 제7 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서, 상기 8비트의 제7 치환 분할 비트스트링은 앞서 제1 데이터 치환부(116)와 제2 데이터 치환부(117)를 통해서 설명한 것과 동일한 원리로, 상기 표 2의 P-BOX에서 마흔아홉 번째 자리부터 쉰여섯 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 일곱 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제7 데이터 치환부(122)는 하기의 수학식 7에 따른 연산을 수행함으로써, 상기 제7 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00303
여기서, "s'7"은 상기 제7 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00304
"은 "
Figure 112017055430795-pat00305
"라는 치환 테이블에 "s0"이 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00306
"는 배타적 논리합 연산을 의미한다.
제8 데이터 치환부(123)는 상기 제4 치환 테이블 그룹(240)에 존재하는 4개의 치환 테이블들(
Figure 112017055430795-pat00307
,
Figure 112017055430795-pat00308
,
Figure 112017055430795-pat00309
,
Figure 112017055430795-pat00310
) 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들 "s4, s5, s6, s7"을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제8 치환 비트스트링들을 생성하고, 상기 4개의 제8 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제8 치환 분할 비트스트링을 생성한다.
관련해서, "s4, s5, s6, s7"이 하나씩 4개의 치환 테이블들(
Figure 112017055430795-pat00311
,
Figure 112017055430795-pat00312
,
Figure 112017055430795-pat00313
,
Figure 112017055430795-pat00314
)에 각각 인가되면,
Figure 112017055430795-pat00315
로부터는 s4가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 1에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 첫 번째 자리와 두 번째 자리에 할당하여 "GH000000"이라는 치환 비트스트링을 획득할 수 있고,
Figure 112017055430795-pat00316
로부터는 s5가 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 2에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 세 번째 자리와 네 번째 자리에 할당하여 "00GH0000"이라는 치환 비트스트링을 획득할 수 있으며,
Figure 112017055430795-pat00317
로부터는 s6이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 3에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 다섯 번째 자리와 여섯 번째 자리에 할당하여 "0000GH00"이라는 치환 비트스트링를 획득할 수 있고,
Figure 112017055430795-pat00318
로부터는 s7이 상기 표 1의 S-BOX를 통과하여 출력된 출력 데이터 4에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 일곱 번째 자리와 여덟 번째 자리에 할당하여 "000000GH"이라는 치환 비트스트링를 획득할 수 있게 된다.
이렇게, 4개의 치환 테이블들(
Figure 112017055430795-pat00319
,
Figure 112017055430795-pat00320
,
Figure 112017055430795-pat00321
,
Figure 112017055430795-pat00322
)을 통해서, "GH000000", "00GH0000", "0000GH00", "000000GH"의 형태를 갖는 제8 치환 비트스트링들이 획득되면, 제8 데이터 치환부(123)는 상기 제8 치환 비트스트링들을 모두 배타적 논리합함으로써, "GHGHGHGH의 형태를 갖는 8비트의 제8 치환 분할 비트스트링을 획득할 수 있게 된다.
여기서, 상기 8비트의 제8 치환 분할 비트스트링은 앞서 제1 데이터 치환부(116)와 제2 데이터 치환부(117)를 통해서 설명한 것과 동일한 원리로, 상기 표 2의 P-BOX에서 쉰일곱 번째 자리부터 예순네 번째 자리에 해당되는 8개의 출력 비트 값을 모두 획득할 수 있게 되는 것이며, 이러한 8비트의 비트스트링은 64비트의 크기를 갖는 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 여덟 번째 부분의 8비트의 비트스트링과 동일한 값이 된다.
관련해서, 제8 데이터 치환부(123)는 하기의 수학식 8에 따른 연산을 수행함으로써, 상기 제8 치환 분할 비트스트링을 생성할 수 있다.
Figure 112017055430795-pat00323
여기서, "s'8"은 상기 제8 치환 분할 비트스트링을 의미하고, "
Figure 112017055430795-pat00324
"은 "
Figure 112017055430795-pat00325
"라는 치환 테이블에 "s4"가 입력으로 인가되어 생성된 치환 비트스트링을 의미하며, "
Figure 112017055430795-pat00326
"는 배타적 논리합 연산을 의미한다.
이렇게, 상기 제1 치환 분할 비트스트링, 상기 제2 치환 분할 비트스트링, 상기 제3 치환 분할 비트스트링, 상기 제4 치환 분할 비트스트링, 상기 제5 치환 분할 비트스트링, 상기 제6 치환 분할 비트스트링, 상기 제7 치환 분할 비트스트링 및 상기 제8 치환 분할 비트스트링의 생성이 완료되면, 암호화 데이터 생성부(114)는 상기 치환 테이블 그룹들(210, 220, 230, 240) 별로 2개씩 생성된 8비트의 치환 분할 비트스트링들을 모두 연접하여 64비트의 크기를 갖는 암호화 데이터를 생성한다.
관련해서, 본 발명의 일실시예에 따르면, 암호화 데이터 생성부(114)는 상기 제1 치환 분할 비트스트링, 상기 제2 치환 분할 비트스트링, 상기 제3 치환 분할 비트스트링, 상기 제4 치환 분할 비트스트링, 상기 제5 치환 분할 비트스트링, 상기 제6 치환 분할 비트스트링, 상기 제7 치환 분할 비트스트링 및 상기 제8 치환 분할 비트스트링을 연접함으로써, 64비트의 크기를 갖는 상기 암호화 데이터를 생성할 수 있다.
여기서, "연접"이라는 뜻은 각 비트스트링을 일렬로 순차적으로 나열하는 것을 의미한다. 예컨대, "00010001"이라는 비트스트링과 "11110001"이라는 비트스트링을 순차적으로 연접한다고 하면, 그 결과는 "0001000111110001"이 되게 된다.
이에, 상기 제1 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 첫 번째 부분의 8비트의 비트스트링과 동일한 값이고, 상기 제2 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 두 번째 부분의 8비트의 비트스트링과 동일한 값이며, 상기 제3 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 세 번째 부분의 8비트의 비트스트링과 동일한 값이고, 상기 제4 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 네 번째 부분의 8비트의 비트스트링과 동일한 값이고, 상기 제5 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 다섯 번째 부분의 8비트의 비트스트링과 동일한 값이고, 상기 제6 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 여섯 번째 부분의 8비트의 비트스트링과 동일한 값이고, 상기 제7 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 일곱 번째 부분의 8비트의 비트스트링과 동일한 값이고, 상기 제8 치환 분할 비트스트링은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터 중 여덟 번째 부분의 8비트의 비트스트링과 동일한 값이기 때문에, 암호화 데이터 생성부(114)를 통해서 상기 제1 치환 분할 비트스트링, 상기 제2 치환 분할 비트스트링, 상기 제3 치환 분할 비트스트링, 상기 제4 치환 분할 비트스트링, 상기 제5 치환 분할 비트스트링, 상기 제6 치환 분할 비트스트링, 상기 제7 치환 분할 비트스트링 및 상기 제8 치환 분할 비트스트링이 연접된다면, 그 결과 값은 상기 전처리 암호화 데이터가 상기 S-BOX와 상기 P-BOX를 순차적으로 통과하였을 때, 획득할 수 있는 64비트의 치환 데이터와 동일한 값이 된다.
결국, 본 발명에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치(110)는 프레젠트 암호화 알고리즘에서 사용하는 치환 테이블인 S-BOX와 전치 테이블인 P-BOX가 결합된 치환 테이블을 이용하되, 해당 치환 테이블을 통해서 획득할 수 있는 데이터로부터 최종 암호화 데이터를 획득하기 위한 별도의 "AND 연산"이 불필요하도록 치환 테이블을 설계해 둠으로써, 프레젠트 암호화 알고리즘과 동일한 보안성을 갖는 암호화 데이터의 생성을 지원하면서 동시에 연산 과정을 최소화하여 저성능의 기기가 사용되는 사물인터넷 환경에서도 프레젠트 기반의 암호화 알고리즘이 사용될 수 있도록 지원할 수 있다.
이때, 본 발명의 일실시예에 따르면, 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치(110)는 반복 암호화 라운드 수행 제어부(124)를 더 포함할 수 있다.
반복 암호화 라운드 수행 제어부(124)는 상기 암호화 데이터의 생성이 완료되면, 상기 암호화 데이터를 입력으로 해서 데이터 분할부(112), 데이터 치환부(113) 및 암호화 데이터 생성부(114)에 따른 암호화 프로세스를 복수의 라운드만큼 반복 수행하여 64비트의 크기를 갖는 최종 암호화 데이터의 생성을 제어하되, 상기 선정된 비밀키에 대해 선정된 비트 단위의 순환 시프트(Cyclic Shift) 연산을 수행하여 각 암호화 프로세스의 라운드에서 사용할 복수의 비밀키들을 생성함으로써, 데이터 분할부(112)가 각 암호화 프로세스의 라운드별로 대응되는 비밀키를 이용하여 전처리 암호화 데이터를 생성하도록 제어할 수 있다.
도 3은 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법을 도시한 순서도이다.
단계(S310)에서는 입력으로 인가되는 8비트의 비트스트링을 8비트의 치환된 비트스트링으로 치환하되, 상기 8비트의 치환된 비트스트링에 존재하는 8개의 비트 값들 중 연속된 2개의 비트 값을 제외한 나머지 6개의 비트 값들이 모두 "0"의 값이 할당되도록 설계되어 있는 16개의 서로 다른 치환 테이블들(상기 16개의 서로 다른 치환 테이블들은 4개의 치환 테이블들 별로 그룹화되어 있고, 각 그룹 내의 4개의 치환 테이블들은 상기 8비트의 치환된 비트스트링에서 상기 연속된 2개의 비트 값의 위치가 모두 상이하게 존재하도록 설계된 치환 테이블들임)이 저장되어 있는 치환 테이블 저장부를 유지한다.
단계(S320)에서는 64비트의 크기를 갖는 평문 데이터가 입력되면, 선정된 비밀키로 암호화를 수행하여 64비트의 크기를 갖는 전처리 암호화 데이터를 생성하고, 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 8비트의 비트스트링들 별로 분할하여 8비트의 분할 비트스트링들을 8개 생성한다.
단계(S330)에서는 상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 상기 치환 테이블 그룹들 별로 존재하는 4개의 치환 테이블들에 각각 입력으로 인가함으로써, 상기 치환 테이블 그룹들 별로 8비트의 치환 분할 비트스트링을 2개씩 생성한다.
단계(S340)에서는 상기 치환 테이블 그룹들 별로 2개씩 생성된 8비트의 치환 분할 비트스트링들을 모두 연접하여 64비트의 크기를 갖는 암호화 데이터를 생성한다.
이때, 본 발명의 일실시예에 따르면, 상기 치환 테이블 그룹들 중 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은 상기 표 1의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
또한, 상기 치환 테이블 그룹들 중 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은 상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
또한, 상기 치환 테이블 그룹들 중 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은 상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
또한, 상기 치환 테이블 그룹들 중 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은 상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당(상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음)하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있을 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 치환 테이블 그룹들 각각에 존재하는 4개의 치환 테이블들 중 각 치환 테이블 그룹들 내에서의 첫 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있을 수 있고, 두 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있을 수 있으며, 세 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있을 수 있고, 네 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있을 수 있다.
이때, 단계(S330)에서는 상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 제1 분할 비트스트링 그룹과 제2 분할 비트스트링 그룹을 생성하는 그룹 생성 단계, 상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제1 치환 비트스트링들을 생성하고, 상기 4개의 제1 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제1 치환 분할 비트스트링을 생성하는 제1 데이터 치환 단계, 상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제2 치환 비트스트링들을 생성하고, 상기 4개의 제2 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제2 치환 분할 비트스트링을 생성하는 제2 데이터 치환 단계, 상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제3 치환 비트스트링들을 생성하고, 상기 4개의 제3 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제3 치환 분할 비트스트링을 생성하는 제3 데이터 치환 단계, 상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제4 치환 비트스트링들을 생성하고, 상기 4개의 제4 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제4 치환 분할 비트스트링을 생성하는 제4 데이터 치환 단계, 상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제5 치환 비트스트링들을 생성하고, 상기 4개의 제5 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제5 치환 분할 비트스트링을 생성하는 제5 데이터 치환 단계, 상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제6 치환 비트스트링들을 생성하고, 상기 4개의 제6 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제6 치환 분할 비트스트링을 생성하는 제6 데이터 치환 단계, 상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제7 치환 비트스트링들을 생성하고, 상기 4개의 제7 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제7 치환 분할 비트스트링을 생성하는 제7 데이터 치환 단계 및 상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제8 치환 비트스트링들을 생성하고, 상기 4개의 제8 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제8 치환 분할 비트스트링을 생성하는 제8 데이터 치환 단계를 포함할 수 있다.
이때, 본 발명의 일실시예에 따르면, 단계(S340)에서는 상기 제1 치환 분할 비트스트링, 상기 제2 치환 분할 비트스트링, 상기 제3 치환 분할 비트스트링, 상기 제4 치환 분할 비트스트링, 상기 제5 치환 분할 비트스트링, 상기 제6 치환 분할 비트스트링, 상기 제7 치환 분할 비트스트링 및 상기 제8 치환 분할 비트스트링을 연접함으로써, 64비트의 크기를 갖는 상기 암호화 데이터를 생성할 수 있다.
또한, 본 발명의 일실시예에 따르면, 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법은 상기 암호화 데이터의 생성이 완료되면, 상기 암호화 데이터를 입력으로 해서 상기 데이터 분할 단계, 상기 데이터 치환 단계 및 상기 암호화 데이터 생성 단계에 따른 암호화 프로세스를 복수의 라운드만큼 반복 수행하여 64비트의 크기를 갖는 최종 암호화 데이터의 생성을 제어하되, 상기 선정된 비밀키에 대해 선정된 비트 단위의 순환 시프트 연산을 수행하여 각 암호화 프로세스의 라운드에서 사용할 복수의 비밀키들을 생성함으로써, 상기 데이터 분할 단계에서 각 암호화 프로세스의 라운드별로 대응되는 비밀키를 이용하여 전처리 암호화 데이터가 생성되도록 제어하는 반복 암호화 라운드 수행 제어 단계를 더 포함할 수 있다.
이상, 도 3을 참조하여 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법에 대해 설명하였다. 여기서, 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법은 도 1과 도 2를 이용하여 설명한 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치(110)의 동작에 대한 구성과 대응될 수 있으므로, 이에 대한 보다 상세한 설명은 생략하기로 한다.
본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법은 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다.
또한, 본 발명의 일실시예에 따른 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110: 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치
111: 치환 테이블 저장부 112: 데이터 분할부
113: 데이터 치환부 114: 암호화 데이터 생성부
115: 그룹 생성부 116: 제1 데이터 치환부
117: 제2 데이터 치환부 118: 제3 데이터 치환부
119: 제4 데이터 치환부 120: 제5 데이터 치환부
121: 제6 데이터 치환부 122: 제7 데이터 치환부
123: 제8 데이터 치환부 124: 반복 암호화 라운드 수행 제어부

Claims (14)

  1. 입력으로 인가되는 8비트의 비트스트링을 8비트의 치환된 비트스트링으로 치환하되, 상기 8비트의 치환된 비트스트링에 존재하는 8개의 비트 값들 중 연속된 2개의 비트 값을 제외한 나머지 6개의 비트 값들이 모두 "0"의 값이 할당되도록 설계되어 있는 16개의 서로 다른 치환 테이블들 - 상기 16개의 서로 다른 치환 테이블들은 4개의 치환 테이블들 별로 그룹화되어 있고, 각 그룹 내의 4개의 치환 테이블들은 상기 8비트의 치환된 비트스트링에서 상기 연속된 2개의 비트 값의 위치가 모두 상이하게 존재하도록 설계된 치환 테이블들임 - 이 저장되어 있는 치환 테이블 저장부;
    64비트의 크기를 갖는 평문 데이터가 입력되면, 선정된(predetermined) 비밀키로 암호화를 수행하여 64비트의 크기를 갖는 전처리 암호화 데이터를 생성하고, 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 8비트의 비트스트링들 별로 분할하여 8비트의 분할 비트스트링들을 8개 생성하는 데이터 분할부;
    상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 상기 치환 테이블 그룹들 별로 존재하는 4개의 치환 테이블들에 각각 입력으로 인가함으로써, 상기 치환 테이블 그룹들 별로 8비트의 치환 분할 비트스트링을 2개씩 생성하는 데이터 치환부; 및
    상기 치환 테이블 그룹들 별로 2개씩 생성된 8비트의 치환 분할 비트스트링들을 모두 연접하여 64비트의 크기를 갖는 암호화 데이터를 생성하는 암호화 데이터 생성부
    를 포함하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치.
  2. 제1항에 있어서,
    상기 치환 테이블 그룹들 중 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    하기의 표 1의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있고,
    상기 치환 테이블 그룹들 중 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있으며,
    상기 치환 테이블 그룹들 중 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있고,
    상기 치환 테이블 그룹들 중 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치.
    Figure 112017055430795-pat00327
  3. 제2항에 있어서,
    상기 치환 테이블 그룹들 각각에 존재하는 4개의 치환 테이블들 중 각 치환 테이블 그룹들 내에서의 첫 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있고,
    두 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있으며,
    세 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있고,
    네 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치.
  4. 제3항에 있어서,
    상기 데이터 치환부는
    상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 제1 분할 비트스트링 그룹과 제2 분할 비트스트링 그룹을 생성하는 그룹 생성부;
    상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제1 치환 비트스트링들을 생성하고, 상기 4개의 제1 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제1 치환 분할 비트스트링을 생성하는 제1 데이터 치환부;
    상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제2 치환 비트스트링들을 생성하고, 상기 4개의 제2 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제2 치환 분할 비트스트링을 생성하는 제2 데이터 치환부;
    상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제3 치환 비트스트링들을 생성하고, 상기 4개의 제3 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제3 치환 분할 비트스트링을 생성하는 제3 데이터 치환부;
    상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제4 치환 비트스트링들을 생성하고, 상기 4개의 제4 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제4 치환 분할 비트스트링을 생성하는 제4 데이터 치환부;
    상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제5 치환 비트스트링들을 생성하고, 상기 4개의 제5 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제5 치환 분할 비트스트링을 생성하는 제5 데이터 치환부;
    상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제6 치환 비트스트링들을 생성하고, 상기 4개의 제6 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제6 치환 분할 비트스트링을 생성하는 제6 데이터 치환부;
    상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제7 치환 비트스트링들을 생성하고, 상기 4개의 제7 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제7 치환 분할 비트스트링을 생성하는 제7 데이터 치환부; 및
    상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제8 치환 비트스트링들을 생성하고, 상기 4개의 제8 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제8 치환 분할 비트스트링을 생성하는 제8 데이터 치환부
    를 포함하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치.
  5. 제4항에 있어서,
    상기 암호화 데이터 생성부는
    상기 제1 치환 분할 비트스트링, 상기 제2 치환 분할 비트스트링, 상기 제3 치환 분할 비트스트링, 상기 제4 치환 분할 비트스트링, 상기 제5 치환 분할 비트스트링, 상기 제6 치환 분할 비트스트링, 상기 제7 치환 분할 비트스트링 및 상기 제8 치환 분할 비트스트링을 연접함으로써, 64비트의 크기를 갖는 상기 암호화 데이터를 생성하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치.
  6. 제1항에 있어서,
    상기 암호화 데이터의 생성이 완료되면, 상기 암호화 데이터를 입력으로 해서 상기 데이터 분할부, 상기 데이터 치환부 및 상기 암호화 데이터 생성부에 따른 암호화 프로세스를 복수의 라운드만큼 반복 수행하여 64비트의 크기를 갖는 최종 암호화 데이터의 생성을 제어하되, 상기 선정된 비밀키에 대해 선정된 비트 단위의 순환 시프트(Cyclic Shift) 연산을 수행하여 각 암호화 프로세스의 라운드에서 사용할 복수의 비밀키들을 생성함으로써, 상기 데이터 분할부가 각 암호화 프로세스의 라운드별로 대응되는 비밀키를 이용하여 전처리 암호화 데이터를 생성하도록 제어하는 반복 암호화 라운드 수행 제어부
    를 더 포함하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치.
  7. 입력으로 인가되는 8비트의 비트스트링을 8비트의 치환된 비트스트링으로 치환하되, 상기 8비트의 치환된 비트스트링에 존재하는 8개의 비트 값들 중 연속된 2개의 비트 값을 제외한 나머지 6개의 비트 값들이 모두 "0"의 값이 할당되도록 설계되어 있는 16개의 서로 다른 치환 테이블들 - 상기 16개의 서로 다른 치환 테이블들은 4개의 치환 테이블들 별로 그룹화되어 있고, 각 그룹 내의 4개의 치환 테이블들은 상기 8비트의 치환된 비트스트링에서 상기 연속된 2개의 비트 값의 위치가 모두 상이하게 존재하도록 설계된 치환 테이블들임 - 이 저장되어 있는 치환 테이블 저장부를 유지하는 치환 테이블 유지 단계;
    64비트의 크기를 갖는 평문 데이터가 입력되면, 선정된(predetermined) 비밀키로 암호화를 수행하여 64비트의 크기를 갖는 전처리 암호화 데이터를 생성하고, 상기 64비트의 크기를 갖는 전처리 암호화 데이터를 구성하는 비트스트링을 8비트의 비트스트링들 별로 분할하여 8비트의 분할 비트스트링들을 8개 생성하는 데이터 분할 단계;
    상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 상기 치환 테이블 그룹들 별로 존재하는 4개의 치환 테이블들에 각각 입력으로 인가함으로써, 상기 치환 테이블 그룹들 별로 8비트의 치환 분할 비트스트링을 2개씩 생성하는 데이터 치환 단계; 및
    상기 치환 테이블 그룹들 별로 2개씩 생성된 8비트의 치환 분할 비트스트링들을 모두 연접하여 64비트의 크기를 갖는 암호화 데이터를 생성하는 암호화 데이터 생성 단계
    를 포함하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법.
  8. 제7항에 있어서,
    상기 치환 테이블 그룹들 중 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    하기의 표 2의 프레젠트 암호화용 치환 테이블인 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 첫 번째 자리와 다섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있고,
    상기 치환 테이블 그룹들 중 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 두 번째 자리와 여섯 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있으며,
    상기 치환 테이블 그룹들 중 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 세 번째 자리와 일곱 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있고,
    상기 치환 테이블 그룹들 중 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들은
    상기 S-BOX에서의 입력 값에 대응하는 4비트의 비트스트링 2개가 연접되어 있는 8비트의 비트스트링이 입력으로 인가된다면, 상기 S-BOX에서의 상기 입력 값인 상기 4비트의 비트스트링 2개에 대응하는 2개의 출력 값들을 연접한 8비트의 비트스트링에서 네 번째 자리와 여덟 번째 자리에 위치하는 비트 값을 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값으로 할당 - 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치는 상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 서로 상이하게 설계되어 있음 - 하고, 나머지 비트 값을 "0"으로 할당함으로써, 상기 입력으로 인가되는 8비트의 비트스트링이 상기 8비트의 치환된 비트스트링으로 치환되도록 설계되어 있는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법.
    Figure 112017055430795-pat00328
  9. 제8항에 있어서,
    상기 치환 테이블 그룹들 각각에 존재하는 4개의 치환 테이블들 중 각 치환 테이블 그룹들 내에서의 첫 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 첫 번째와 두 번째 자리로 설계되어 있고,
    두 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 세 번째와 네 번째 자리로 설계되어 있으며,
    세 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 다섯 번째와 여섯 번째 자리로 설계되어 있고,
    네 번째 치환 테이블에 대해서는 상기 8비트의 치환된 비트스트링 내에서 상기 연속된 2개의 비트 값이 할당되는 위치가 일곱 번째와 여덟 번째 자리로 설계되어 있는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법.
  10. 제9항에 있어서,
    상기 데이터 치환 단계는
    상기 8개의 8비트의 분할 비트스트링들을 4개씩 분리하여 제1 분할 비트스트링 그룹과 제2 분할 비트스트링 그룹을 생성하는 그룹 생성 단계;
    상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제1 치환 비트스트링들을 생성하고, 상기 4개의 제1 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제1 치환 분할 비트스트링을 생성하는 제1 데이터 치환 단계;
    상기 제1 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제2 치환 비트스트링들을 생성하고, 상기 4개의 제2 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제2 치환 분할 비트스트링을 생성하는 제2 데이터 치환 단계;
    상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제3 치환 비트스트링들을 생성하고, 상기 4개의 제3 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제3 치환 분할 비트스트링을 생성하는 제3 데이터 치환 단계;
    상기 제2 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제4 치환 비트스트링들을 생성하고, 상기 4개의 제4 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제4 치환 분할 비트스트링을 생성하는 제4 데이터 치환 단계;
    상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제5 치환 비트스트링들을 생성하고, 상기 4개의 제5 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제5 치환 분할 비트스트링을 생성하는 제5 데이터 치환 단계;
    상기 제3 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제6 치환 비트스트링들을 생성하고, 상기 4개의 제6 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제6 치환 분할 비트스트링을 생성하는 제6 데이터 치환 단계;
    상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제1 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제7 치환 비트스트링들을 생성하고, 상기 4개의 제7 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제7 치환 분할 비트스트링을 생성하는 제7 데이터 치환 단계; 및
    상기 제4 치환 테이블 그룹에 존재하는 4개의 치환 테이블들 각각에 대해 상기 제2 분할 비트스트링 그룹 내에 속해있는 4개의 8비트의 분할 비트스트링들을 하나씩 입력으로 인가하여 8비트의 크기를 갖는 4개의 제8 치환 비트스트링들을 생성하고, 상기 4개의 제8 치환 비트스트링들에 대해 서로 배타적 논리합 연산을 수행하여 8비트의 크기를 갖는 제8 치환 분할 비트스트링을 생성하는 제8 데이터 치환 단계
    를 포함하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법.
  11. 제10항에 있어서,
    상기 암호화 데이터 생성 단계는
    상기 제1 치환 분할 비트스트링, 상기 제2 치환 분할 비트스트링, 상기 제3 치환 분할 비트스트링, 상기 제4 치환 분할 비트스트링, 상기 제5 치환 분할 비트스트링, 상기 제6 치환 분할 비트스트링, 상기 제7 치환 분할 비트스트링 및 상기 제8 치환 분할 비트스트링을 연접함으로써, 64비트의 크기를 갖는 상기 암호화 데이터를 생성하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법.
  12. 제7항에 있어서,
    상기 암호화 데이터의 생성이 완료되면, 상기 암호화 데이터를 입력으로 해서 상기 데이터 분할 단계, 상기 데이터 치환 단계 및 상기 암호화 데이터 생성 단계에 따른 암호화 프로세스를 복수의 라운드만큼 반복 수행하여 64비트의 크기를 갖는 최종 암호화 데이터의 생성을 제어하되, 상기 선정된 비밀키에 대해 선정된 비트 단위의 순환 시프트(Cyclic Shift) 연산을 수행하여 각 암호화 프로세스의 라운드에서 사용할 복수의 비밀키들을 생성함으로써, 상기 데이터 분할 단계에서 각 암호화 프로세스의 라운드별로 대응되는 비밀키를 이용하여 전처리 암호화 데이터가 생성되도록 제어하는 반복 암호화 라운드 수행 제어 단계
    를 더 포함하는 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 방법.
  13. 제7항 내지 제12항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  14. 제7항 내지 제12항 중 어느 한 항의 방법을 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램.
KR1020170072963A 2017-06-12 2017-06-12 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법 KR101940553B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170072963A KR101940553B1 (ko) 2017-06-12 2017-06-12 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170072963A KR101940553B1 (ko) 2017-06-12 2017-06-12 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180135191A KR20180135191A (ko) 2018-12-20
KR101940553B1 true KR101940553B1 (ko) 2019-01-21

Family

ID=64952843

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170072963A KR101940553B1 (ko) 2017-06-12 2017-06-12 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101940553B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101658397B1 (ko) 2015-02-27 2016-09-22 고려대학교 산학협력단 Present를 이용한 경량암호 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101658397B1 (ko) 2015-02-27 2016-09-22 고려대학교 산학협력단 Present를 이용한 경량암호 장치

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
An efficient software implementation of the block cipher PRESENT for 8-bit platforms(2013년)
Lightweight Cryptography for FPGAs(2009.12.11.)
PRESENT: An Ultra-Lightweight Block Cipher(2007년)

Also Published As

Publication number Publication date
KR20180135191A (ko) 2018-12-20

Similar Documents

Publication Publication Date Title
US10778441B2 (en) Redactable document signatures
JP4893750B2 (ja) データ圧縮装置およびデータ復元装置
US10009170B2 (en) Apparatus and method for providing Feistel-based variable length block cipher
JP6009697B2 (ja) 秘密計算方法、秘密計算システム、ソート装置及びプログラム
JP6084757B2 (ja) 可変入力長調整可能暗号の構造および使用
KR101623503B1 (ko) Lea 블록암호의 화이트박스 암호 구현 장치 및 방법
JP5682525B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2009010531A (ja) 秘密分散装置、方法及びプログラム
JP2009516964A (ja) 暗号化保護方法
EP2692084A1 (en) Secret sharing apparatus, sharing apparatus and secret sharing method
KR101913644B1 (ko) 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법
EP3970399B1 (en) A computer-implemented method of performing feistel-network-based block-cipher encryption of plaintext
Panduranga et al. Hybrid approach for image encryption using scan patterns and carrier images
KR101940553B1 (ko) 전치가 반영된 치환 테이블을 이용한 프레젠트 기반의 암호화 장치 및 방법
KR101584220B1 (ko) 암호화 데이터 정렬 유지를 위한 인코딩 방법
US6035042A (en) High speed and method of providing high speed table generation for block encryption
CN116664123A (zh) 一种基于区块链技术的数字钱包设计方法
US9058507B2 (en) Signal processor with an encrypting or decrypting device in a memory system
IL298759A (en) Methods and systems for encrypting shapeshifting data
US20100228992A1 (en) Cryptographic method and apparatus for enhancing computation performance of a central processing unit
Islam et al. Data encryption standard
JPS6281145A (ja) デ−タ暗号化方式
KR102393958B1 (ko) 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법
KR101984297B1 (ko) 메시지 인코딩 방법, 메시지 암호화 방법 및 장치
US11664976B2 (en) Method and devices for creating redundancy and encryption using Mojette Transform

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant