KR102565443B1 - 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법 - Google Patents

암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법 Download PDF

Info

Publication number
KR102565443B1
KR102565443B1 KR1020180129223A KR20180129223A KR102565443B1 KR 102565443 B1 KR102565443 B1 KR 102565443B1 KR 1020180129223 A KR1020180129223 A KR 1020180129223A KR 20180129223 A KR20180129223 A KR 20180129223A KR 102565443 B1 KR102565443 B1 KR 102565443B1
Authority
KR
South Korea
Prior art keywords
bit string
input
length
bit
arbitrary
Prior art date
Application number
KR1020180129223A
Other languages
English (en)
Other versions
KR20200047138A (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 KR1020180129223A priority Critical patent/KR102565443B1/ko
Priority to SG10201910018YA priority patent/SG10201910018YA/en
Priority to EP19205338.7A priority patent/EP3644546B1/en
Priority to US16/664,116 priority patent/US11632234B2/en
Publication of KR20200047138A publication Critical patent/KR20200047138A/ko
Application granted granted Critical
Publication of KR102565443B1 publication Critical patent/KR102565443B1/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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

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

Abstract

암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 암호 알고리즘 생성 방법은, 시드 값에 기초하여 하나 이상의 키 테이블을 생성하는 단계; 라운드 트윅(tweak) 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 입력 비트 열을 이용하여 상기 입력 비트 열을 상기 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 제1 변환 함수를 생성하는 단계; 상기 하나 이상의 키 테이블을 참조하여 생성되는 제2 임의의 비트 열을 상기 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 제2 변환 함수를 생성하는 단계; 및 상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 페이스텔 구조의 블록 암호 알고리즘을 생성하는 단계를 포함한다.

Description

암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법{APPARATUS AND METHOD FOR GENERATING CRYPTOGRAPHIC ALGORITHM, APPARATUS AND METHOD FOR ENCRYPTION}
본 발명의 실시예들은 암호 기술과 관련된다.
선행특허 (대한민국 등록특허 제10-1516574호)는 형태 보존 암호화(format preserving encryption)를 위한 내부 논리로 블랙박스 환경 내에서 안전한 트윅 적용 블록 암호화(tweakable block cipher) 방식을 이용하고 있다. 그러나, 이러한 선행특허와 같이 트윅 적용 블록 암호화를 이용한 종래 기술은 화이트박스 환경에서 안전성을 제공할 수 없으며, 추가 입력 정보인 트윅 값을 확장하기 위한 추가 논리들이 필요하다. 또한, 종래 기술은 적용된 트윅 적용 블록 암호화 방식의 특성에 기반하여 내부 상태 크기 및 특성들을 적용 환경에 맞도록 수정, 확장하기에 제약조건이 많다는 문제점이 있다.
대한민국 등록특허공보 제10-1516574호 (2015.05.04. 공고)
본 발명의 실시예들은 암호 알고리즘 생성 장치 및 방법과 암호화 장치 및 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 암호 알고리즘 생성 방법은, 시드 값에 기초하여 하나 이상의 키 테이블을 생성하는 단계; 라운드 트윅(tweak) 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 입력 비트 열을 이용하여 상기 입력 비트 열을 상기 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 제1 변환 함수를 생성하는 단계; 상기 하나 이상의 키 테이블을 참조하여 생성되는 제2 임의의 비트 열을 상기 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 제2 변환 함수를 생성하는 단계; 및 상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 페이스텔 구조의 블록 암호 알고리즘을 생성하는 단계를 포함한다.
상기 하나 이상의 키 테이블에 대한 입력 비트 열 및 출력 비트 열의 길이는, 가용 메모리의 크기에 기초하여 동적으로 결정될 수 있다.
상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정될 수 있다.
상기 라운드 함수는, 상기 제1 변환 함수를 이용하여 상기 입력 브랜치들 중 하나로 입력되는 입력 비트 열을 상기 제1 임의의 비트 열로 변환하고, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환하며, 상기 제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제3 임의의 비트 열로 변환하도록 구성될 수 있다.
상기 라운드 함수는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 각각 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하고, 상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하고, 상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하도록 구성될 수 있다.
본 발명의 일 실시예에 따른 암호 알고리즘 생성 장치는, 하나 이상의 프로세서; 메모리; 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 프로그램은, 시드 값에 기초하여 하나 이상의 키 테이블을 생성하는 단계; 라운드 트윅(tweak) 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 입력 비트 열을 이용하여 상기 입력 비트 열을 상기 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 제1 변환 함수를 생성하는 단계; 상기 하나 이상의 키 테이블을 참조하여 생성되는 제2 임의의 비트 열을 상기 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 제2 변환 함수를 생성하는 단계; 및 상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 페이스텔 구조의 블록 암호 알고리즘을 생성하는 단계를 실행하기 위한 명령어들을 포함한다.
상기 하나 이상의 키 테이블에 대한 입력 비트 열 및 출력 비트 열의 길이는, 가용 메모리의 크기에 기초하여 동적으로 결정될 수 있다.
상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정될 수 있다.
상기 라운드 함수는, 상기 제1 변환 함수를 이용하여 상기 입력 브랜치들 중 하나로 입력되는 입력 비트 열을 상기 제1 임의의 비트 열로 변환하고, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환하며, 상기 제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제3 임의의 비트 열로 변환하도록 구성될 수 있다.
상기 라운드 함수는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 각각 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하고, 상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하고, 상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하도록 구성될 수 있다.
본 발명의 일 실시예에 따른 암호화 방법은, 라운드 트윅(tweak) 비트 열을 생성하는 단계; 제1 변환 함수를 이용하여 상기 라운드 트윅 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 제1 입력 비트 열을 상기 제1 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 단계; 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 제2 임의의 비트 열로 변환하는 단계; 제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 단계; 및 상기 제3 임의의 비트 열과 상기 페이스텔 구조의 브랜치 들 중 다른 하나로 입력되는 제2 입력 비트 열 사이의 배타적 논리 합 연산을 수행하는 단계를 포함한다.
상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정될 수 있다.
상기 제2 임의의 비트 열로 변환하는 단계는, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환할 수 있다.
상기 제2 임의의 비트 열로 변환하는 단계는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하는 단계; 상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하는 단계; 및 상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 암호화 장치는, 하나 이상의 프로세서; 메모리; 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 프로그램은, 라운드 트윅(tweak) 비트 열을 생성하는 단계; 제1 변환 함수를 이용하여 상기 라운드 트윅 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 제1 입력 비트 열을 상기 제1 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 단계; 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 제2 임의의 비트 열로 변환하는 단계; 제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 단계; 및 상기 제3 임의의 비트 열과 상기 페이스텔 구조의 브랜치 들 중 다른 하나로 입력되는 제2 입력 비트 열 사이의 배타적 논리 합 연산을 수행하는 단계를 실행하기 위한 명령어들을 포함한다.
상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정될 수 있다.
상기 제2 임의의 비트 열로 변환하는 단계는, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환할 수 있다.
상기 제2 임의의 비트 열로 변환하는 단계는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하는 단계; 상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하는 단계; 및 상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 암호 키를 화이트박스 환경 내에서 보호해줄 수 있는 키 테이블이 라운드 함수에 적용된 페이스텔 구조의 암호 알고리즘을 생성하고, 이를 이용하여 암호화를 수행함으로써, 암호키를 보호하기 위한 추가 연산 과정 없이 화이트 박스 환경에서 안전한 데이터 암호화를 가능케 할 수 있다.
또한, 본 발명의 실시예들에 따르면, 트윅 값을 확장하기 위한 추가 논리가 필요 없고, 내부 논리의 선택 조건이 없으며, 암호 알고리즘의 전체 입력크기와 관계없이 다양한 입출력 크기를 제공하는 키 테이블들을 적용하여 적용 환경에서 요구되는 다양한 안전성 및 메모리 사용량 등의 기준을 만족할 수 있는 암호 알고리즘 구현이 가능하다.
도 1은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 암호 알고리즘 생성 방법의 순서도
도 3은 본 발명의 일 실시예에 따른 라운드 함수의 일 예를 도시한 도면
도 4는 본 발명의 일 실시예에 따른 암호화 방법의 순서도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 않은 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 본 발명의 실시예들에 따른 암호 알고리즘 생성 방법 및 암호화 방법 중 적어도 하나를 수행하기 위한 장치일 수 있다. 컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
도 2는 본 발명의 일 실시예에 따른 암호 알고리즘 생성 방법의 순서도이다.
도 2를 참조하면, 우선 컴퓨팅 장치(12)는 시드 값에 기초하여 하나 이상의 키 테이블을 생성한다(210).
이때, 시드 값은 예를 들어, 암호키, 블록 암호화의 운영 모드에서 사용되는 카운터 값 또는 초기화 벡터 등일 수 있다.
또한, 키 테이블은 시드 값으로부터 유도된 임의의 비트 열들과 해당 임의의 비트 열들 각각에 대응되는 인덱스 비트 열들을 포함하는 룩업 테이블(lookup table)을 의미한다. 구체적으로, 키 테이블은 키 테이블에 포함된 임의의 비트 열들 중 키 테이블의 입력 비트 열과 동일한 인덱스 비트 열을 가지는 비트 열을 키 테이블의 출력 비트 열로 출력하도록 구성될 수 있다.
한편, 키 테이블의 생성은 예를 들어, 시드 값을 입력 값으로 이용하여 임의의 비트 열을 생성하는 난수 생성기를 이용하여 생성될 수 있다. 다만, 키 테이블의 생성을 위해 반드시 특정한 방법을 이용하여야 하는 것은 아니므로, 키 테이블의 생성은 시드 값으로부터 임의의 값을 생성하되 생성된 값을 이용하여 시드 값을 유추하기 어려운 일 방향(one-way) 특성을 갖는 다양한 방식을 이용하여 생성될 수 있다.
한편, 본 발명의 일 실시예에 따르면, 키 테이블의 크기는 키 테이블의 입력 비트 열과 출력 비트 열의 길이에 따라 결정되며, 이때, 입력 비트 열과 출력 비트열의 길이는 암호 알고리즘이 적용될 환경에서 이용 가능한 가용 메모리 크기에 따라 동적으로 결정될 수 있다. 예를 들어, 키 테이블의 입력 비트 열 길이가 L비트이며, 출력 비트 열 길이가 m비트 인 경우, 키 테이블은 2L개의 L 비트 길이의 인덱스 비트 열 및 각 인덱스 비트 열에 대응되는 2L개의 m 비트 길이의 임의의 비트 열들을 포함할 수 있다.
이후, 컴퓨팅 장치(12)는 라운드 트윅(tweak) 비트 열 및 페이스텔 구조의 입력 브랜치(branch)들 중 하나로 입력되는 입력 비트 열을 이용하여, 입력 비트 열을 해당 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 제1 변환 함수를 생성한다(220).
이때, 제1 임의의 비트 열의 길이는 키 테이블의 입력 비트 열 길이 및 기 설정된 키 테이블 참조 횟수에 따라 결정될 수 있다. 예를 들어, 키 테이블의 입력 비트 열 길이가 L비트이고, 키 테이블 참조 횟수가 d로 설정된 경우, 제1 임의의 비트 열의 길이는 L×d비트일 수 있다. 한편, 키 테이블 참조 횟수는 보안 강도를 고려하여 사용자에 의해 설정될 수 있다.
한편, 제1 변환 함수는 예를 들어, AES(Advanced Encryption Standard) 알고리즘, 해시(Hash) 함수 등일 수 있으나, 라운드 트윅 비트 열 및 입력 브랜치로 입력되는 입력 비트 열을 이용하여 L×d비트 길이의 임의의 비트 열을 생성할 수 있다면 어떠한 함수를 이용하여도 무방하다.
이후, 컴퓨팅 장치(12)는 생성된 하나 이상의 키 테이블을 참조하여 생성되는 제2 임의의 비트 열을 입력 브랜치로 입력되는 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 제2 변환 함수를 생성한다(230).
이때, 키 테이블의 출력 비트 열 길이가 m비트 이고, 키 테이블 참조 횟수가 d인 경우, 제2 임의의 비트 열의 길이는 m×d비트일 수 있다.
한편, 제2 변환 함수는 예를 들어, AES 알고리즘, 해시(Hash) 함수 등일 수 있으나, 제2 변환 함수로 입력되는 임의의 비트 열을 입력 브랜치로 입력되는 입력 비트 열과 동일한 길이를 가지는 임의의 비트 열로 변환할 수 있다면 어떠한 함수를 이용하여도 무방하다.
이후, 컴퓨팅 장치(12)는 제1 변환 함수, 하나 이상의 키 테이블 및 제2 변환 함수가 적용된 라운드 함수를 포함하는 페이스텔(Feistel) 구조의 블록 암호 알고리즘을 생성한다(240).
구체적으로, 생성되는 페이스텔 구조의 블록 암호 알고리즘은 r(이때, r은 1≥1인 자연수)개의 라운드를 포함할 수 있으며, 각 라운드마다 라운드 함수가 수행되도록 구성될 수 있다. 이때, 라운드 개수는 생성된 암호 알고리즘이 적용될 환경에서 요구되는 보안 강도에 따라 동적으로 결정될 수 있다.
한편, 도 2에서는 암호 알고리즘 생성 과정을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
도 3은 본 발명의 일 실시예에 따른 라운드 함수의 일 예를 도시한 도면이다.
한편, 도 3에서는 2개의 입력 브랜치(a 및 b)를 가지는 페이스텔 구조를 예시하여 설명하나, 입력 브랜치의 개수는 실시예에 따라 변경될 수 있다.
도 3을 참조하면, 본 발명의 일 실시예에 따라 생성되는 라운드 함수(310)는 제1 변환 함수(311)를 이용한 비트 열 변환, 하나 이상의 키 테이블(312)을 이용한 비트 열 변환 및 제2 변환 함수(313)를 이용한 비트 열 변환이 순차적으로 수행되도록 구성될 수 있다.
구체적으로, 제1 변환 함수(311)는 입력 브랜치 b로 입력된 n/2(이때, n≥2) 비트의 입력 비트 열과 라운드 트윅 비트 열을 입력 받아, L×d(이때, L은 키 테이블의 입력 비트 열 길이, d는 키 테이블 참조 횟수) 비트 길이의 제1 임의의 비트 열을 생성할 수 있다.
이때, 입력 브랜치 b로 입력되는 입력 비트 열의 길이는 생성된 암호 알고리즘이 적용될 환경에서 요구되는 단위 입력의 길이(n)에 따라 변경될 수 있다. 예를 들어, 생성된 블록 암호 알고리즘이 적용될 환경에서 평문 데이터를 4bit 단위(즉, n=4)로 분할하여 암호화할 것이 요구되는 경우, 입력 브랜치 a 및 b로 입력되는 입력 비트 열의 길이는 2 bit일 수 있다.
한편, 라운드 트윅 비트 열은 예를 들어, 초기 트윅 값을 시드 값으로 하여 페이스텔 구조의 매 라운드 마다 생성될 수 있다. 이때, 라운드 트윅 비트 열의 길이(T)는 예를 들어 요구되는 보안 강도에 따라 따라 변경될 수 있다. 한편, 라운드 트윅 비트 열의 생성은 반드시 특정한 방식으로 한정되는 것은 아니며, 초기 트윅 값을 시드 값으로 하여 미리 설정된 길이의 임의의 비트 열을 생성할 수 있는 다양한 방식을 이용하여 생성될 수 있다.
한편, 제1 변환 함수(311)로 AES-128을 이용하는 경우를 가정하면, 제1 변환 함수(311)는 입력 브랜치 b로 입력되는 입력 비트 열에 미리 설정된 128-(n/2) 비트의 비트 열을 패딩(padding)한 후, AES-128에 따른 연산을 수행하여 L×d 비트(즉, 128 비트) 길이의 임의의 비트 열을 생성할 수 있다. 이때 AES-128에 따른 연산을 수행하기 위해 이용되는 비밀키로 라운드 트윅 비트 열이 이용될 수 있다.
한편, 제1 변환 함수(311)로부터 출력되는 제1 임의의 비트 열은 L비트 단위로 d개의 비트 열로 분할되며, 분할된 각 비트 열은 하나 이상의 키 테이블(312)을 참조하여 m(이때, m은 키 테이블의 출력 비트 열 길이) 비트 길이의 d 개의 비트 열로 변환된다.
이때, 라운드 함수(310)에 포함되는 키 테이블(312)의 개수는 하나 이상일 수 있다. 예를 들어, 키 테이블(312)이 도시된 예와 같이 하나인 경우, 해당 키 테이블(312)을 반복적으로 참조하여 분할된 각 비트 열을 대응되는 m 비트 길이의 비트 열로 변환할 수 있다. 즉, 이 경우, 동일한 키 테이블(312)이 d번 반복 참조된다.
반면, 도시된 예와 달리 라운드 함수(310)에 포함되는 키 테이블의 개수가 2 이상인 경우, 전체 키 테이블에 대한 참조 횟수는 d이나 각 키 테이블에 대한 참조 횟수는 키 테이블마다 상이할 수 있다. 이 경우, 참조할 키 테이블의 결정은 특정한 방식으로 한정되는 것은 아니며, 실시예에 따라 다양한 방식으로 설정될 수 있다.
한편, 제2 변환 함수(313)는 변환된 m비트 길이의 d개의 비트 열을 서로 연결(concatenate)하여 m×d 비트 길이의 제2 임의의 비트 열을 생성한 후, 제2 임의의 비트 열을 n/2 비트 길이의 제3 임의의 비트 열로 변환한다.
구체적인 예로, 제2 변환 함수(313)로 SHA-256을 이용하는 경우를 가정하면, 제2 변환 함수(313)는 SHA-256에 따른 연산을 수행하여 제2 임의의 비트 열을 256 비트의 임의의 비트 열로 변환할 수 있다. 이후, 제2 변환 함수(313)는 변환된 비트 열에서 상위 n/2 비트에 해당하는 비트 열을 선택하고, 선택된 비트 열을 제3 임의의 비트 열로 출력할 수 있다.
도 4는 본 발명의 일 실시예에 따른 암호화 방법의 순서도이다.
도 4에 도시된 암호화 방법은 예를 들어, 도 2에 도시된 암호 알고리즘 생성 방법을 이용하여 생성된 블록 암호 알고리즘을 이용하여 수행될 수 있다.
도 4를 참조하면, 우선, 컴퓨팅 장치(12)는 라운드 트윅 비트 열을 생성한다(410).
이후, 컴퓨팅 장치(12)는 제1 변환 함수를 이용하여 라운드 트윅 비트 열 및 페이스텔 구조의 입력 브랜치들 중 하나로 입력되는 제1 입력 비트 열을 제1 입력 비트열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환한다(420).
구체적으로, 컴퓨팅 장치(12)는 제1 변환 함수(311)를 이용하여 라운드 트윅 비트 열 및 제1 입력 비트 열을 L×d(이때, L은 키 테이블의 입력 비트 열 길이, d는 키 테이블 참조 횟수) 비트 길이의 제1 임의의 비트 열로 변환할 수 있다.
이후, 컴퓨팅 장치(12)는 하나 이상의 키 테이블을 참조하여, 제1 임의의 비트 열을 제2 임의의 비트 열로 변환한다(430).
구체적으로, 제1 임의의 비트 열이 L×d 비트인 경우, 컴퓨팅 장치(12)는 제1 임의의 비트 열을 L비트 길이의 d개의 비트 열로 분할할 수 있다. 또한, 컴퓨팅 장치(12)는 키 테이블을 참조하여, 분할된 각 비트 열에 대응되는 m(이때, m은 키 테이블의 출력 비트 열 길이)비트 길이의 d개의 비트 열로 변환한 후, 변환된 m비트 길이의 d개의 비트 열을 연결하여 m×d 비트 길이의 제2 임의의 비트 열을 생성할 수 있다.
이후, 컴퓨팅 장치(12)는 제2 변환 함수를 이용하여 제2 임의의 비트 열을 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환한다(440).
이후, 컴퓨팅 장치(12)는 제3 임의의 비트 열과 페이스텔 구조의 입력 브랜치들 중 다른 하나로 입력되는 제2 입력 비트 열 사이의 배타적 논리 합 연산을 수행한다(450).
한편, 도 4에서는 암호화 과정을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스

Claims (18)

  1. 시드 값에 기초하여 하나 이상의 키 테이블을 생성하는 단계;
    페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 제1 입력 비트 열과, 라운드 트윅(tweak) 비트 열을 이용하여 상기 제1 입력 비트 열을 상기 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 제1 변환 함수를 생성하는 단계;
    상기 하나 이상의 키 테이블을 참조하여 생성되는 제2 임의의 비트 열을 상기 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 제2 변환 함수를 생성하는 단계;
    상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 페이스텔 구조의 블록 암호 알고리즘을 생성하는 단계를 포함하되,
    상기 제3 임의의 비트 열은 상기 페이스텔 구조의 입력 브랜치 들 중 다른 하나로 입력되는 제2 입력 비트 열과 배타적 논리 합 연산을 수행하기 위해 사용되는 암호 알고리즘 생성 방법.
  2. 청구항 1에 있어서,
    상기 하나 이상의 키 테이블에 대한 입력 비트 열 및 출력 비트 열의 길이는, 가용 메모리의 크기에 기초하여 동적으로 결정되는 암호 알고리즘 생성 방법.
  3. 청구항 1에 있어서,
    상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정되는 암호 알고리즘 생성 방법.
  4. 청구항 1에 있어서,
    상기 라운드 함수는, 상기 제1 변환 함수를 이용하여 상기 입력 브랜치들 중 하나로 입력되는 제1 입력 비트 열을 상기 제1 임의의 비트 열로 변환하고, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환하며, 상기 제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제3 임의의 비트 열로 변환하도록 구성되는 암호 알고리즘 생성 방법.
  5. 청구항 4에 있어서,
    상기 라운드 함수는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 각각 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하고, 상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하고, 상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하도록 구성되는 암호 알고리즘 생성 방법.
  6. 하나 이상의 프로세서;
    메모리; 및
    하나 이상의 프로그램을 포함하는 장치로서,
    상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
    상기 프로그램은,
    시드 값에 기초하여 하나 이상의 키 테이블을 생성하는 단계;
    페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 제1 입력 비트 열과, 라운드 트윅(tweak) 비트 열을 이용하여 상기 제1 입력 비트 열을 상기 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 제1 변환 함수를 생성하는 단계;
    상기 하나 이상의 키 테이블을 참조하여 생성되는 제2 임의의 비트 열을 상기 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 제2 변환 함수를 생성하는 단계;
    상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 페이스텔 구조의 블록 암호 알고리즘을 생성하는 단계를 실행하기 위한 명령어들을 포함하되,
    상기 제3 임의의 비트 열은 상기 페이스텔 구조의 입력 브랜치 들 중 다른 하나로 입력되는 제2 입력 비트 열과 배타적 논리 합 연산을 수행하기 위해 사용되는 암호 알고리즘 생성 장치.
  7. 청구항 6에 있어서,
    상기 하나 이상의 키 테이블에 대한 입력 비트 열 및 출력 비트 열의 길이는, 가용 메모리의 크기에 기초하여 동적으로 결정되는 암호 알고리즘 생성 장치.
  8. 청구항 6에 있어서,
    상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정되는 암호 알고리즘 생성 장치.
  9. 청구항 6에 있어서,
    상기 라운드 함수는, 상기 제1 변환 함수를 이용하여 상기 입력 브랜치들 중 하나로 입력되는 제1 입력 비트 열을 상기 제1 임의의 비트 열로 변환하고, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환하며, 상기 제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제3 임의의 비트 열로 변환하도록 구성되는 암호 알고리즘 생성 장치.
  10. 청구항 9에 있어서,
    상기 라운드 함수는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 각각 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하고, 상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하고, 상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하도록 구성되는 암호 알고리즘 생성 장치.
  11. 라운드 트윅(tweak) 비트 열을 생성하는 단계;
    제1 변환 함수를 이용하여 상기 라운드 트윅 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 제1 입력 비트 열을 상기 제1 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 단계;
    하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 제2 임의의 비트 열로 변환하는 단계;
    제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 단계; 및
    상기 제3 임의의 비트 열과 상기 페이스텔 구조의 브랜치 들 중 다른 하나로 입력되는 제2 입력 비트 열 사이의 배타적 논리 합 연산을 수행하는 단계를 포함하되,
    상기 페이스텔 구조는 상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 암호화 방법.
  12. 청구항 11에 있어서,
    상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정되는 암호화 방법.
  13. 청구항 11에 있어서,
    상기 제2 임의의 비트 열로 변환하는 단계는, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환하는 암호화 방법.
  14. 청구항 13에 있어서,
    상기 제2 임의의 비트 열로 변환하는 단계는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하는 단계;
    상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하는 단계; 및
    상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하는 단계를 포함하는 암호화 방법.
  15. 하나 이상의 프로세서;
    메모리; 및
    하나 이상의 프로그램을 포함하는 장치로서,
    상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
    상기 프로그램은,
    라운드 트윅(tweak) 비트 열을 생성하는 단계;
    제1 변환 함수를 이용하여 상기 라운드 트윅 비트 열 및 페이스텔(Feistel) 구조의 입력 브랜치(branch)들 중 하나로 입력되는 제1 입력 비트 열을 상기 제1 입력 비트 열의 길이보다 확장된 길이를 가지는 제1 임의의 비트 열로 변환하는 단계;
    하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 제2 임의의 비트 열로 변환하는 단계;
    제2 변환 함수를 이용하여 상기 제2 임의의 비트 열을 상기 제1 입력 비트 열과 동일한 길이를 가지는 제3 임의의 비트 열로 변환하는 단계; 및
    상기 제3 임의의 비트 열과 상기 페이스텔 구조의 브랜치 들 중 다른 하나로 입력되는 제2 입력 비트 열 사이의 배타적 논리 합 연산을 수행하는 단계를 실행하기 위한 명령어들을 포함하되,
    상기 페이스텔 구조는 상기 하나 이상의 키 테이블, 상기 제1 변환 함수 및 상기 제2 변환 함수가 적용된 라운드 함수를 포함하는 암호화 장치.
  16. 청구항 15에 있어서,
    상기 제1 임의의 비트 열의 길이는, 기 설정된 키 테이블 참조 횟수 및 상기 하나 이상의 키 테이블에 대한 입력 비트 열 길이에 기초하여 결정되는 암호화 장치.
  17. 청구항 15에 있어서,
    상기 제2 임의의 비트 열로 변환하는 단계는, 기 설정된 테이블 참조 횟수에 따라 상기 하나 이상의 키 테이블을 참조하여 상기 제1 임의의 비트 열을 상기 제2 임의의 비트 열로 변환하는 암호화 장치.
  18. 청구항 17에 있어서,
    상기 제2 임의의 비트 열로 변환하는 단계는, 상기 테이블 참조 횟수에 기초하여 상기 제1 임의의 비트 열을 L(이때, L은 상기 하나 이상의 키 테이블에 대한 입력 비트 열의 길이)비트 길이를 가지는 d(이때, d는 상기 테이블 참조 횟수)개의 비트 열로 분할하는 단계;
    상기 하나 이상의 키 테이블을 상기 테이블 참조 횟수만큼 참조하여 상기 L비트 길이를 가지는 d개의 비트 열을 m(이때, m은 상기 하나 이상의 키 테이블에 대한 출력 비트 열의 길이)비트 길이를 가지는 d개의 비트 열로 변환하는 단계; 및
    상기 m 비트 길이를 가지는 d개의 비트 열을 연결하여 상기 제2 임의의 비트 열을 생성하는 단계를 포함하는 암호화 장치.
KR1020180129223A 2018-10-26 2018-10-26 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법 KR102565443B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180129223A KR102565443B1 (ko) 2018-10-26 2018-10-26 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법
SG10201910018YA SG10201910018YA (en) 2018-10-26 2019-10-25 Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption
EP19205338.7A EP3644546B1 (en) 2018-10-26 2019-10-25 Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption
US16/664,116 US11632234B2 (en) 2018-10-26 2019-10-25 Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180129223A KR102565443B1 (ko) 2018-10-26 2018-10-26 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200047138A KR20200047138A (ko) 2020-05-07
KR102565443B1 true KR102565443B1 (ko) 2023-08-16

Family

ID=68344719

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180129223A KR102565443B1 (ko) 2018-10-26 2018-10-26 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법

Country Status (4)

Country Link
US (1) US11632234B2 (ko)
EP (1) EP3644546B1 (ko)
KR (1) KR102565443B1 (ko)
SG (1) SG10201910018YA (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102565442B1 (ko) * 2018-10-26 2023-08-16 삼성에스디에스 주식회사 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법
CN111901097B (zh) * 2020-08-06 2023-04-07 成都卫士通信息产业股份有限公司 一种白盒实现方法、装置、电子设备及计算机存储介质
CN113612599B (zh) * 2021-05-27 2023-09-26 国网浙江省电力有限公司台州供电公司 一种基于预置密钥本的轻量级电力物联网通信加密方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346161B2 (en) * 2000-01-26 2008-03-18 Fujitsu Limited Method and apparatus for designing cipher logic, and a computer product
US8577032B2 (en) 2007-08-06 2013-11-05 Nec Corporation Common key block encryption device, common key block encryption method, and program
DE102009050493A1 (de) * 2009-10-23 2011-04-28 Röllgen, Bernd Blockdatenverschlüsselungsverfahren
KR20120089396A (ko) * 2010-11-16 2012-08-10 삼성전자주식회사 암호화 장치 및 그 암호화 방법
KR101516574B1 (ko) 2014-02-21 2015-05-04 한국전자통신연구원 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
KR101989956B1 (ko) * 2015-10-29 2019-06-17 삼성에스디에스 주식회사 암호화 장치 및 방법
KR101924067B1 (ko) * 2016-10-28 2019-02-22 삼성에스디에스 주식회사 암호화 장치 및 방법
KR102565442B1 (ko) * 2018-10-26 2023-08-16 삼성에스디에스 주식회사 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ekawat Homsirikamol 외 1명, AEZ: Anything-but EaZy in Hardware, International Conference on Cryptology in India (Indocrypt 2016), LNCS 10095, (2016.)*

Also Published As

Publication number Publication date
SG10201910018YA (en) 2020-05-28
KR20200047138A (ko) 2020-05-07
EP3644546A1 (en) 2020-04-29
US20200136801A1 (en) 2020-04-30
EP3644546B1 (en) 2021-08-18
US11632234B2 (en) 2023-04-18

Similar Documents

Publication Publication Date Title
US8966279B2 (en) Securing the implementation of a cryptographic process using key expansion
JP6665204B2 (ja) データ暗号化装置及び方法、並びにデータ復号化装置及び方法
KR101924067B1 (ko) 암호화 장치 및 방법
KR101989956B1 (ko) 암호화 장치 및 방법
KR102565443B1 (ko) 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법
WO2019114122A1 (zh) 登录信息的加密方法、装置、电子设备及介质
KR102565442B1 (ko) 암호 알고리즘 생성 장치 및 방법, 암호화 장치 및 방법
JP6135804B1 (ja) 情報処理装置、情報処理方法及びプログラム
US20120179919A1 (en) Securing implementation of a cryptographic process having fixed or dynamic keys
EP3667647A1 (en) Encryption device, encryption method, decryption device, and decryption method
KR101914453B1 (ko) 암호화 장치 및 방법
JP5992651B2 (ja) 暗号化方法、プログラム、および、システム
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
JP6292195B2 (ja) 情報処理装置及び情報処理方法
KR102132685B1 (ko) 순서 노출 암호화를 위한 장치 및 방법
WO2006111950A2 (en) Improved cipher system
JP7383985B2 (ja) 情報処理装置、情報処理方法及びプログラム
US11522675B2 (en) Apparatus and method for encryption and decryption based on tweak converter to which key table is applied
CN114124354A (zh) 确定性鉴别加解密装置及方法
KR20230061028A (ko) 부채널 공격을 방지하기 위한 암호문 비교 장치 및 방법
KR20160108952A (ko) 유사 난수 생성 방법

Legal Events

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