KR102620649B1 - 암호화 동작을 위한 키 시퀀스 생성 - Google Patents

암호화 동작을 위한 키 시퀀스 생성 Download PDF

Info

Publication number
KR102620649B1
KR102620649B1 KR1020187016055A KR20187016055A KR102620649B1 KR 102620649 B1 KR102620649 B1 KR 102620649B1 KR 1020187016055 A KR1020187016055 A KR 1020187016055A KR 20187016055 A KR20187016055 A KR 20187016055A KR 102620649 B1 KR102620649 B1 KR 102620649B1
Authority
KR
South Korea
Prior art keywords
sub
key
keys
sequence
function
Prior art date
Application number
KR1020187016055A
Other languages
English (en)
Other versions
KR20180081559A (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 나그라비젼 에스에이알엘
Publication of KR20180081559A publication Critical patent/KR20180081559A/ko
Application granted granted Critical
Publication of KR102620649B1 publication Critical patent/KR102620649B1/ko

Links

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
    • 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

Abstract

암호화 동작을 위해 메인 키로부터 서브-키의 시퀀스를 생성하는 방법, 시스템 및 장치가 제공된다. 메인 키는 시퀀스의 서브-키를 생성하기 위하여 오직 한번만 동작되며, 하나 이상의 단방향 함수를 포함하는 변환을 이용하여 동작된다. 시퀀스의 서브-키들 각각의 비트 값은 하나 이상의 단방향 함수의 비트 값 각각을 이용하여 설정된다. 바람직하게, 하나 이상의 단방향 함수의 출력 비트 각각으로부터 서브-키 비트를 도출하는 것은 메인 키와 서브-키들 사이뿐만 아니라 서브-키들 사이의 상관 관계를 제거하거나 적어도 감소시켜 사이드 채널 공격을 이용하여 발견되는 것과 같은 단일의 서브-키로부터 메인 키 또는 다른 서브-키들을 복구하는 것을 어렵게 하거나 불가능하게 한다. 또한, 메인 키를 한 번만 사용하면(서브-키가 생성될 때마다 메인 키를 사용하는 것이 아닌), 메인 키의 발견으로 이어질 수 있는 물리적 정보의 복구 기회가 감소되기 때문에 사이드 채널 공격에 대한 메인 키의 취약성이 감소된다. 특정 실시예들은 각각의 서브-키를 생성하기 위해 서브함수의 병렬 실행 또는 연쇄 실행을 이용한다. 다른 특정 실시예들은 단일의 단방향 함소로부터 모든 서브-키들을 한 번에 생성한다.

Description

암호화 동작을 위한 키 시퀀스 생성
본 발명은 암호화 동작을 위해 메인 키로부터 서브-키의 시퀀스를 생성하는 방법 및 장치에 관한 것이다. 보다 구체적으로, 여기에 한정되는 것은 아니지만, 본 발명은 시퀀스에 따른 키 스케줄을 가지는 블록 암호 및 메시지의 부호화 및 복호화에 이 블록 암호를 이용하는 방법 및 장치에 관한 것이다.
하드웨어 또는 소프트웨어로 구현되는 DES 또는 AES와 같은 암호화된 블록 암호(block cipher)는 물리적 공격의 대상이 될 수 있다. 이러한 공격에서, 공격자는 블록 암호가 동작하는 동안 다양한 유형의 정보를 수집한다. 이러한 공격에 사용되는 정보들의 유형은 다음을 포함한다.
전력 소비, 타이밍 정보 또는 자기 복사(magnetic radiation)와 같은 블록 암호의 실행 과정으로부터 누출되는 사이드-채널 정보(side-channel information);
차분 오류 분석(DFA, Differential Fault Analysis) 또는 충돌 오류 분석(CFA, Collision Fault Analysis)으로부터의 정보;
위의 두 가지.
공격자는 블록 암호가 실행되는 동안 사용된 비밀 키(secret key)를 풀기 위해 이 정보들을 이용할 수 있다.
블록 암호는 일반적으로 키 스케줄(key schedule)이라 불리는 알고리즘에 의해 라운드 키(round key) 상에서 동작(operation)하는데, 라운드 키는 키 스케줄에 따라 비밀 키(secret key) 또는 메인 키(main key)로부터 도출된 서브-키(sub-key)에 해당한다. 일반적으로, 사이드-채널 또는 오류 공격(fault attack)을 이용하여 라운드 키를 복구하게 된다. AES 또는 DES와 같은 블록 암호의 키 스케줄에 내재하는 메인 키와 라운드 키 사이의 상관 관계(correlation)로 인하여, 복구된 라운드 키로부터 비밀 키를 도출하는 것은 상대적으로 용이하다.
공격자는 키 스케줄의 실행(이 경우, 공격은 사이드-채널에서 얻어진 신호와 그 노이즈를 모델링하는 템플릿 공격(template attack)일 수 있다), 부호화(encryption) 또는 복호화(decryption)에 블록 암호의 적용 또는 키 스케줄과 블록 암호의 실행 양자를 타겟(target)으로 할 수 있다. 현재의 최신의 기술에 따르면, 메인 키는 단일 사이드(single side) 채널 공격을 이용한 동작 또는 단일 서브-키에 대한 여타 공격으로부터 복구될 수 있다. 가능한 공격의 예에는 사이드 채널 분석(CPA-Correlation Power Analysis, DPA-Differential Power Analysis) 또는 부호화/복호화 동작의 DFA(Differential Fault Analysis)가 포함된다. 키 스케줄 알고리즘의 경우, 템플릿 사이드-채널 공격은 가능한 공격의 예이다.
문헌(P. Junod 및 S. Vaudenay. FOX : 블록 암호의 새로운 패밀리. 암호화의 선택된 영역 2004 : Waterloo, Canada, August 9-10, 2004. 컴퓨터 사이언스 강의 노트. Springer-Verlag)에서 제시된 방법에 따르면, 키 스케줄은 비밀 메인 키(secret main key)에 암호화(cryptographic), 충돌 방지(collision resistant) 및 단방향 함수(one-way function)를 적용하여 라운드 키 각각이 생성되도록 설계되었다. 이렇게 함으로써, 라운드 키 사이의 상관 관계와 라운드 키 및 비밀 키 사이의 상관 관계가 감소되거나 제거되므로, 사이드-채널 또는 오류 분석 정보를 사용한 단일 라운드 키 복구에 기반하는 공격은 성공하지 못할 수 있다. 이러한 방식으로 단방향 함수를 사용하여 키들 사이의 상관 관계를 감소시키는 것은 진일보한 것이기는 하지만 공격, 특히 사이드-채널 공격 또는 다른 물리적 공격에 대한 내성(resilience)을 향상시키는 것이 더욱 바람직하다.
바람직하게, 하나 이상의 단방향 함수의 출력 비트 각각으로부터 서브-키 비트를 도출하는 것은 메인 키와 서브-키들 사이뿐만 아니라, 서브-키들 사이의 상관 관계를 제거하거나 적어도 감소시켜 예를 들어, 사이드 채널 공격을 이용하여 발견되는 것과 같이 단일의 서브-키로부터 메인 키 또는 다른 서브-키들을 복구하는 것을 어렵게 하거나 불가능하게 한다. 또한, 메인 키를 한 번만 사용하면(서브-키가 생성될 때마다 메인 키를 사용하는 것이 아닌), 메인 키의 발견으로 이어질 수 있는 물리적 정보의 복구 기회가 감소되기 때문에 사이드 채널 공격에 대한 메인 키의 취약성이 감소된다.
본 발명의 일부 실시예는 첨부된 독립항에 개시되어 있다. 특정 실시예들의 일부 선택적인 특징은 독립항에 종속된 종속항에 개시되어 있다.
일부 실시예들에서, 암호화 동작을 위한 서브-키의 시퀀스는 각자의 비트 값에 의해 정의되는 각각의 서브-키를 갖는 메인 키로부터 생성된다. 메인 키는 변환을 이용하여 시퀀스들(예를 들어 하나 이상의 단방향 함수를 포함하는 동작들의 시퀀스들)의 서브-키들을 생성하기 위해 한 번만 조작된다. 시퀀스의 서브-키들의 각 비트 값은 하나 이상의 단방향 함수의 각 비트 값을 사용하여 설정된다. 예를 들어, 일부 실시 예들에서, 하나 이상의 단방향 함수의 출력 비트 각각은 서브 키들의 모든 비트 값의 대응하는 비트 값을 설정하는데 오직 한 번만 사용된다. 따라서, 하나 이상의 단방향 함수의 출력 비트 값과 이에 대응하는 서브 키의 비트 값 사이에 일대일 관계가 존재한다.
바람직하게, 하나 이상의 단방향 함수의 출력 비트 각각으로부터 서브-키 비트를 도출하는 것은 메인 키와 서브-키들 사이뿐만 아니라, 서브-키들 사이의 상관 관계를 제거하거나 적어도 감소시켜 예를 들어, 사이드 채널 공격을 이용하여 발견되는 것과 같이 단일의 서브-키로부터 메인 키 또는 다른 서브-키들을 복구하는 것을 어렵게 하거나 불가능하게 한다. 또한, 메인 키를 한 번만 사용하면(서브-키가 생성될 때마다 메인 키를 사용하는 것이 아닌), 메인 키의 발견으로 이어질 수 있는 물리적 정보의 복구 기회가 감소되기 때문에 사이드 채널 공격에 대한 메인 키의 취약성이 감소된다.
암호화 동작의 맥락에서, 단방향 함수는 입력으로부터 출력을 생성하기 위해 계산하기 쉬운 함수로 이해될 수 있으며(예를 들어, 계산 복잡도가 시공간적으로 다항식이라는 점 또는 보다 실질적으로 일정한 수 이내의 기계 동작 또는 시간 단위-수 초 또는 밀리 초 이내라는 점에서 볼 때), 출력으로부터 입력을 찾거나 재구성하는 것이 현실적이지 않은 실질적으로 비가역적인 의미이다(계산 복잡도가 접근 가능한 리소스를 초과하는 초다항식(super polynomial effort)을 포함할 수 있다는 점에서 볼 때). 이는 종종 사전-이미지 저항이라고 언급된다. 또한, 이러한 맥락에서, 출력의 다른 비트 상태에 관한 정보가 한 비트 상태에 존재하지 않는다는 점에서 단방향 함수의 출력 비트는 서로 독립적일 것이다.
필수적이지는 않지만, 이러한 맥락에서의 단방향 함수 또한, 두 번째 이미지 저항 및 충돌 저항의 특성을 가지는 것이 더욱 바람직하다.
특히, 후속되는 단방향 함수들 중 하나 이상(단방향 함수들의 조합)이 다양한 실시 예에 따라 사용될 수 있다. 다양한 실시예는 다음과 같은 사항들을 포함하지만 이에 한정되지 않는다.
SHA-1, SHA-256, RIPEMD-160, SHA-3 등과 같은 암호화 해시;
더 큰 출력을 가지는 특수 목적의 단방향 함수(예를 들어, Rabin 함수 x^2 mod N, N은 큰 소수 두 개의 곱) 또는 이 함수의 더 높은 차수 버전;
xxhash 또는 SipHash 등과 같이 계산 리소스 요구 사항을 감소시키기 위한 경량의 의사(pseudo) 해시 함수;
가능한 경량의 순열을 기반으로 하는 Davis-Meyer 구조(경량의 순열은 매우 낮은 컴퓨팅 파워를 가지는 장치에서 실행될 수 있음);
비-가역 행렬과의 곱;
이산 로그 문제(discrete Logarithm problem)의 사용: ax mod p, p는 소수, Zp*의 생성자 및 단방향 함수의 입력 x.
하나 이상의 단방향 계산이 요구되는 실시 예에서, 사용된 각각의 단방향 함수는 동일하거나 서로 다를 수 있다.
일부 실시예들에서, 적어도 2개 이상의 서브-키 각각의 비트 값은 미리 정의된 관계에 따라 단일의 단방향 함수의 각 비트 값에 따라 설정된다. 이러한 방식으로, 단일의 단방향 함수의 계산에 의해 2개 이상의 서브-키가 생성될 수 있다. 특별한 경우, 시퀀스의 모든 서브-키들 각각의 비트 값들은 단일의 단방향 함수의 비트 값 각각에 따라 설정된다. 이 경우, 모든 서브-키들은 단일의 단방향 함수에 의해 생성되며, 메인 키의 단일 회 사용이 요구되고 단방향 함수와 그 서브-키 비트의 단방향 특성에 의하여 메인 키가 보호되므로 단방향 함수의 출력 비트의 독립성으로 인하여 서브 키들은 서로 독립적이다.
일부 실시예들에서, 각각의 서브-함수들을 사용하여 메인 키 상에서 동작하면 복수의 중간 출력들을 생성한다. 단방향 함수는 중간 출력 각각에 적용되어 각각의 단방향 출력을 생성하고, 각 단방향 출력에서 하나 이상의 서브-키가 생성된다. 메인 키를 한 번만 사용하여 복수의 중간 출력을 생성한 다음, 각각의 단방향 함수를 사용하여 서브-키를 생성하면, 모든 서브-키를 생성하는데 필요한 것보다 적은 비트를 생성하는 단방향 함수는 메인 키를 한 번만 사용하면서 서브-키를 생성하는 데 사용될 수 있다.
일부 실시예에서, 중간 출력은 첫 번째 중간 출력을 생성하기 위하여 첫 번째 서브-함수를 메인 키에 적용한 후, 다음 중간 출력을 생성하기 위하여 다음 서브-함수를 이전 중간 출력에 적용하는 과정을 반복함으로써 생성된다. 각각의 단방향 함수는 각각의 중간 출력에 적용되어 시퀀스의 대응하는 하나 이상의 서브-키를 생성한다. 이러한 방법으로 시퀀스의 서브-키들이 생성될 수 있다. 서브-함수로부터 대응하는 하나 이상의 서브-키로의 프로세싱은 동시에 수행될 수 있다(서브-함수 및 대응하는 서브-키(들)을 계산하고 난 후, 다음 서브-함수 및 대응하는 서브-키(들)을 계산하는 등). 대안적으로, 모든 서브-함수들이 먼저 처리되어 그 출력(서브-함수 및/또는 단방향 함수의)을 저장할 수 있으며, 이 저장된 값으로부터 서브-키가 후속적으로 생성될 수 있다.
일부 실시예들에서는, 각각의 단방향 함수를 통해 중간 출력을 전달하는 대신, 모든 중간 출력들이 단일의 단방향 함수(또는 심지어 동일한 단방향 함수의 단일 인스턴스)를 통하여 전달된다. 즉, 첫 번째 및 다음 단방향 함수들은 동일한 함수이다. 독립적으로, 이동 또는 회전 연산자와 같은 비트 연산자와 같이, 서브 함수들은 서로 상이하거나 모두 동일할 수 있다. 서브-함수의 각 적용이 시퀀스에서 누적되기 때문에, 단방향 함수(들)에 대한 입력은 동일한 함수의 반복적인 적용 시퀀스에 따라 달라질 수 있으므로 다양한 서브-키의 시퀀스를 생성한다.
중간 출력은 단방향 함수를 통해 전달되어 시퀀스의 서브-키를 생성하므로, 중간 출력을 생성하기 위한 단순하며 반복적인 동작의 경우에도, 단방향 함수를 반전시키는 것의 어려움으로 인하여 단일의 복구된 서브-키로부터 메인 키 또는 다른 서브-키를 추론하는 것은 적어도 어려울 것이다. 동시에, 메인 키는 첫 번째 중간 출력을 생성하기 위해 한 번만 사용되므로, 사이드-채널 공격이나 기타 물리적 공격에서 발견되기가 쉽지 않다. 또한, 일부 실시 예들에서, 메인 키는, 단방향 함수를 통하여 전달되며 그 결과가 첫 번째 서브-함수에 전달되어 생성된 서브 키와 더 분리될 수 있으므로, 사이드-채널 정보를 이용하여 보호되지 않는 서브-키에서 시작하는 암호화로부터 메인 키를 복구하는 데 어려움이 증가한다.
일부 실시예들에서, 대응하는 동작의 연쇄가 단일의 합성 함수로 포착될 수 있으며 가역적이라는 측면에서, 서브 함수들이 누적되는 경우, 이는 서브-키의 역방향 시퀀스를 생성하는데 이용될 수 있다. 예를 들어, 역방향 시퀀스는 서브-키의 부호화 시퀀스의 역방향인 서브-키의 복호화 시퀀스로 사용될 수 있으며, 서브-키의 부호화 시퀀스를 생성하는 키 스케줄을 갖는 블록 암호를 이용하여 부호화된 메시지를 복호화하기 위해 사용될 수 있다. 의심의 여지를 없애기 위해, 부호화되지 않은 메시지 문자열은 텍스트인 메시지의 내용에 대해 아무런 함의를(implication) 가지지 않는 일반 텍스트 또는 일반 텍스트 메시지로 언급되지만, “텍스트”는 오히려 영숫자 또는 기타 기호의 문자열을 나타낸다. 마찬가지로, 암호 텍스트 또는 암호 텍스트 메세지라는 용어는 메시지의 부호화된 버전으로 이해되어야 한다.
가역적인 서브-함수들의 시퀀스를 이용하여 생성된 서브-키들의 시퀀스의 역방향 시퀀스를 생성하며 서브-함수들의 순방향 시퀀스의 생성에서 마지막 중간 출력을 출력으로서 제공하는 합성 함수를 갖는 일부 실시 예들에서, 첫 번째 서브 함수가 합성 함수가 되고 다음 서브 함수가 순방향 시퀀스의 다음 서브-함수의 역함수가 되는 위에서 설명된 프로세스와 동일한 프로세스가 후속되어 역순으로 수행된다. 순방향 시퀀스는 부호화 시퀀스로 전술되었으며 역방향 시퀀스는 복호화 시퀀스로 전술되었지만, 그 역할(기능)은 교환될 수 있으며, 서브-키들의 대응하는 순방향 및 역방향 시퀀스의 효율적인 생성은 더욱 넓은 적용을 발견할 수 있을 것이다.
일부 실시예들에서, 서브-키의 생성에 사용된 서브-함수들은 전술된 바와 같이 연쇄적인 시퀀스로 실행되지 않으며, 각각의 후속하는 서브-함수는 이전 서브-함수의 출력을 입력으로 취하지만, 오히려 서브-함수는 독립적으로 실행된다. 예를 들어, 서브-함수는 비동기적 또는 병렬적으로 실행된다. 이는 각 서브-함수가 자신의 입력과 독립적으로 공급되어야 함을 의미한다. 이들 실시 예들에서 메인 키를 두 번 이상 사용하는 것을 방지하기 위해, 메인 키는 단방향 함수 예를 들어, 전술된 바와 같은 단방향 함수를 통해 한 번만 전달되고, 그 결과는 각각의 서브-함수들로 공급되므로, 메인 키의 복수 회 리드(read)가 방지된다. 그런 다음, 전술된 바와 같이 서브-키들은 각각의 단방향 함수들 또는 공유된 단방향 함수를 통해 서브-함수들의 출력으로부터 생성된다.
후속되는 하나 이상의 서브-함수들(서브-함수들의 조합)은 다양한 실시예들에 따라 이용될 수 있으며, 아래의 사항들을 포함하지만, 이에 한정되는 것은 아니다.
아핀(affine) 함수(정의에 의해 가역적인)
가역적인 Boolean 함수
상수 XOR/ADD, 이동/회전, 상태에 대한 서로 다른 비트의 XOR/ADD, 비트 순열 등과 같은 가역 비트 또는 바이트 연산자.
가역 테이블 룩업 함수
가역 지수 함수
Feistel 구조
전술된 사항들의 조합
서브-함수는 상기 함수들의 사항들 중 하나 이상을 포함할 수 있다. 구체적으로, 서브-함수는 상기 사항들 중 동일한 하나의 함수 또는 파라미터들에서 가변하는 동일한 함수를 포함할 수 있다. 전술된 바와 같이, 몇몇 실시 예에서 서브-함수는 반복적으로 사용되는 동일 및/또는 단일 서브-함수일 수 있다. 상기 서브-함수 중 임의의 하나는 다양한 실시 예에 따라 상기 단방향 함수 중 임의의 하나와 결합될 수 있다. 일부 실시 예들에서, 서브-함수(들)는 가역 테이블-룩업 함수이고, 단방향 함수(들)는 경량 순열에 기초한 Davis-Meyer 구조이다. 서브-함수들이 가역 가능할 것을 요구하는 상기 실시 예들의 특정을 가능하게 하기 위해 서브-함수들은 가역 가능함이 바람직하지만, 이는 모든 실시 예에서 반드시 요구되는 것은 아니다.
전술된 바와 같이, 단방향 함수는 서로 동일할 수도 있고 단방향 함수 중 일부 또는 전부는 서로 상이할 수도 있다. 동일한 단방향 함수는 단일 인스턴스로 구현될 수 있으며(예를 들어, 하드웨어에서), 서브-함수로부터 순차적으로 입력을 취하여 대응하는 서브-키의 시퀀스를 생성할 수 있다. 따라서, 모든 단방향 함수는 동일한 단일의 단방향 함수일 수 있고 단일의 단방향 함수의 단일의 논리적 또는 물리적 인스턴스로 구현될 수 있다는 점에서 복수의 단방향 함수에 대한 언급은 단수를 포함하는 것으로 이해될 것이다.
전술된 바와 같이, 본 발명의 다양한 실시예들은 서브-키의 시퀀스(서브 키 생성의 시퀀스)에 의해 정의된 키 스케줄을 가지는 블록 암호와 메시지의 부호화 및 복호화를 위한 블록 암호의 사용을 포함한다.
본 발명의 다른 실시예들은 전술된 바와 같이 서브-키 및/또는 처리(부호화/복호화) 메시지의 시퀀스를 생성하기 위한 처리 과정을 구현하는 수단을 가지는 시스템을 포함한다. 프로세서상에서 실행될 때, 컴퓨터 프로그램 제품들 및 물리적 형태로 코딩된 명령어들로 인코딩된 신호들은 전술된 프로세싱 과정을 구현한다. 프로세서상에서 실행될 때, 전술된 프로세싱 과정을 구현하는 코딩된 명령어를 저장하는 하나 이상의 유형의 기록 가능한 매체 또는 메모리 디바이스(예를 들어, 광학 또는 자기 디스크 또는 반도체 디바이스)를 포함할 수 있다. 또한, 이러한 양태들은, 예를 들어 범용 컴퓨터에서, 명령을 실행하기 위한 프로세서와 결합하여, 컴퓨터 프로그램 제품 및 신호, 유형의 기록 가능한 매체 및 메모리 장치의 조합에까지 확장된다.
본 발명의 또 다른 양태는 메인 키 및 적어도 하나의 서브 키를 저장하기 위한 메모리; 및 서브 키 및/또는 처리(부호화/복호화) 메시지의 시퀀스를 생성하기 위한 전술된 바와 같은 프로세싱 과정을 구현하도록 구성된 프로세서를 포함하는 장치를 포함한다. 이러한 장치의 실시 예들은 Application Specific Integrated Circuits, Field Programmable Gate Arrays, System On Chip 및 Integrated Circuit devices, 또는 이들의 조합을 포함한다. 처리 과정이 부호화 및 복호화를 모두 포함하는 실시 예들에서, 부호화 및 복호화는 동일한 장치에서 수행될 수 있거나 또는 각각이 개별 장치들간에 전달된 메시지들을 이용하여 개별 장치에서 수행될 수 있음이 이해될 것이다.
본 발명은 하나 이상의 단방향 함수의 출력 비트 각각으로부터 서브-키 비트를 도출하는 것은 메인 키와 서브-키들 사이뿐만 아니라, 서브-키들 사이의 상관 관계를 제거하거나 적어도 감소시켜 단일의 서브-키로부터 메인 키 또는 다른 서브-키들을 복구하는 것을 어렵게 하거나 불가능하게 한다.
또한, 본 발명은 메인 키를 한 번만 사용하도록 구성되므로 메인 키의 발견으로 이어질 수 있는 물리적 정보의 복구 기회가 감소하게 되어 사이드 채널 공격에 대한 메인 키의 취약성이 감소된다.
본 발명의 양상들을 설명하기 위해 첨부된 도면을 참조하여 예시적으로 특정 실시예를 설명한다.
도 1 내지 도 4는 라운드 키 생성기를 가지는 블록 암호의 상이한 모드들을 도시한다.
도 5는 라운드 키를 생성하기 위해 서브-함수의 병렬 실행을 가능하게 하는 라운드 키 생성기의 구현예를 도시한 도면이다.
도 6은 도 5의 구현예에 대한 재귀 버전을 도시한 도면이다.
도 7은 서브-함수를 순차적으로 실행하는 라운드 키 생성기의 구현예를 도시한 도면이다.
도 8은 라운드 키의 역방향 시퀀스를 생성하기 위해 서브-함수를 순차적으로 실행하는 라운드 키 생성기의 구현예를 도시한 도면이다.
도 9는 도 7 및 도 8의 구현예에 대한 재귀 버전을 도시한 도면이다.
도 10은 단일의 단방향 함수를 사용하여 라운드 키의 시퀀스를 생성하는 라운드 키 생성기의 구현예를 도시한 도면이다.
도 1 내지 도 4를 참조하면, 블록 암호(block cipher, 10)는 레지스터(register, 100)에 저장된 메인 키(K)를 입력으로 하는 라운드 키 생성기(round key generator, 200)를 포함한다. 라운드 키 생성기(200)는 라운드 키들의 시퀀스(sequence, 120)인 K0, K1, K2, ... , KN-1를 생성한다. 부호화 모듈(encryption module, 300)은 라운드 키들의 시퀀스(120) 및 레지스터(400)로부터 원문(planetext)을 입력 받는다. 부호화 모듈(300)은 원문(400)을 시퀀스의 첫 번째 키(first key)로 부호화한 다음, 그 결과를 시퀀스의 두번째 키(second key)로 부호화하고, 이러한 프로세싱을 시퀀스의 모든 키들에 대해 연속적으로 적용하여 그 결과로서 암호 텍스트(cipher text)를 레지스터(500)에 출력한다. 도 2를 참조하면, 블록 암호(10)의 복호화 모드(decryption mode)에서, 부호화 모듈(300)은 레지스터(500)로부터의 암호 텍스트 및 라운드 키(142)의 부호화 시퀀스(encryption sequence, 140)의 역(reverse)인 복호화 시퀀스(decryption sequence, 142)를 입력으로 하는 복호화 모듈(decryption module, 302)로 대체된다. 복호화 모듈(302)은 시퀀스(140)의 첫 번째 키(시퀀스(120)의 마지막 키)를 암호 텍스트(500)에 적용한 후, 그 연산 결과에 시퀀스(140)의 두 번째 키(142)를 적용하는 등 시퀀스(140)의 마지막 키가 원문(400)을 생성하는 데 사용될 때까지 적용하여 암호 텍스트(500)를 복호화한다. 본 실시 예에 따르면, 블록 암호(10)의 부호화 및 복호화 모듈(300, 302)은 동일한 장치 또는 회로(계산 모듈을 공유하는 일부 실시 예들에서) 또는 상이한 장치 및 회로로 구현될 수 있음이 이해될 것이다.
일부 실시 예들에서, 도 1 및 도 2에 개략적으로 도시된 바와 같이, 라운드 키들은 독립적으로 생성된다. 즉, 라운드 키의 전체 시퀀스(120, 140)를 저장하기 위해 각각의 라운드 키들이 개별적으로 저장되어 시퀀스의 라운드 키가 임의의 순서 또는 병렬로 생성될 수 있게 된다(또한, 추가적인 계산 없이 부호화 시퀀스를 역순으로 리딩(reading)함으로써 복호화 시퀀스가 생성될 수 있게 된다). 다른 실시 예들에서, 도 3 및 도 4에 개략적으로 도시된 바와 같이, 라운드 키는 한번에 하나씩 순차적으로 생성된다. 이는 라운드 키를 저장하는 데 더 적은 메모리를 요구하며 한 번에 단 하나의 라운드 키를 노출 시키는 이점을 가지는 반면, 저장된 라운드 키가 역순으로 간단히 주과(traverse)될 수 있는 도 1 및 도 2에 도시된 실시예들과 달리 라운드 키의 역방향 시퀀스가 다시 계산되어야 한다.
도 5를 참조하여, 라운드 키 생성기(200)의 특정 실시 예에 대하여 설명한다. 메인 키(K)는 x로도 지칭되는 단방향 함수(220)를 통하여 전달되고, 그 결과는 F0, F1, F2, ... FN-1이라고도 지칭되는 서브-함수들(242)의 세트(240)를 통하여 전달된다. 각 서브-함수(242)의 결과는 H라고도 지칭되는 서브-함수(262)를 통하여 전달된다. 각 서브-함수(242)의 결과는 모든 서브-함수들에 공통인 공통 단방향 함수(262)에 입력되거나, 각각의 서브-함수(242)는 동일한 단방향 함수(H) 모두를 구현하는 단방향 함수(260)의 인스턴스 세트를 형성하기 위해 대응하는 단방향 함수(262)를 가질 수 있거나, 또는 서로 다른 단방향 함수, 예를 들어 각 서브-함수(242)들에 대해 서로 다른 단방향 함수(262)를 가질 수 있다. 이러한 동작들은 서브 키들(122)의 시퀀스(120) 내 하나 이상의 단방향 함수(262)의 출력으로서 K0, K1, K2, ..., KN-1라고도 불리우는 라운드 키들(122)의 세트를 출력한다.
이 시퀀스(120)를 부호화 시퀀스로서 취하는 경우, 라운드 키들(round key, 122)이 모두 저장되는 실시 예에서 시퀀스(120)를 역순으로 리딩(reading)함으로써 복호화 시퀀스를 간단히 얻을 수 있다. 다른 실시 예에서, 예를 들어 하나의 라운드 키만이 저장되고 그때그때 생성되는 경우와 같이, 서브-함수(242)를 시퀀스(240)에 역순으로 실행하여 라운드 키의 역방향 시퀀스를 생성함으로써 복호화 시퀀스가 얻어질 수 있다.
일부 실시 예들에서, 라운드 키(122)가 한꺼번에 또는 그때그때 계산되는지 여부에 관계없이, 수학식 1에서 함수들은 x, F 및 H에 대해 사용되는 데 여기서, p, q, p*, q*, pi 및 qi는 큰 소수이다.
[수학식 1]
x := K2 mod N*, 여기서 N*=p* ·q*
Fi(x) := x2 mod Ni, 여기서 Ni=pi·qi
H(y) := y8 mod N, 여기서 N=p·q; y := Fi(x)
p* 및 q*에 대한 소수는 실제로 제곱근을 계산할 수 없도록 선택된다. 예를 들어, 일부 실시 예들에서 log2(|N*|)는 적어도 2048비트이다. 다른 소수인 pi와 qi도 유사하게 선택된다. 예를 들어, log2(|Ni|)는 x의 출력 비트의 절반(log2(|N*|)의 절반)이며, p와 q는 log2(|N|)가 라운드 키들(122)에서 요구되는 비트 수 이상이 되도록 선택된다. 메인 키(K)를 사이드-채널 분석(side-channel analysis)으로부터 보호하기 위해, N*의 임의의 배수가 리드(read) 동작 시 K에 가산될 수 있거나, 또는 K는 x의 출력에 영향을 미치지 않을 것으므로, 첫 번째 단계로 N*으로 나눈 나머지 연산(mod 연산)을 이용하는 실시 예에서와 같이 추가된 상수가 가산되어 저장될 수 있다.
도 6을 참조하여, 시퀀스(120)를 생성하기 위해 단일 라운드 키 Ki만이 레지스터(640)에 저장되고 그때그때 생성되는 일부 실시 예를 설명한다. 이러한 실시 예들은 하드웨어로로 신속하게 실행될 수 있고 저장 용량이 제한될 수 있는 전용 회로에서의 구현에 특히 적합하다. 메인 키(K)에 대한 값을 유지하는 레지스터(100)는 x를 구현하는 모듈(220)에 의해 리드(read)된다. 이 모듈(220)은 x(K)를 계산하여 이를 내부 레지스터에 저장한다. 서브-함수 모듈(sub-function module, 610)은 파라미터의 시퀀스를 유지하는 레지스터(620)와의 통신을 통하여 키 생성 각각의 반복에 대한 서브 함수 Fi를 계산하도록 구성되며, 이 파라미터 각각은 각각의 반복에 대한 Fi의 특정 인스턴스 F0, F1,… FN-2, FN-1를 정의한다. 서브-함수 모듈(610)은 단방향 함수 H를 구현하는 단방향 모듈(630)로 그 출력을 전달하여 출력 Ki를 생성하고 이를 레지스터(640)에 저장한다. 서브-함수 모듈(610)은 x(K)의 값을 다시 수신하기 위해 모듈(220)에 대한 트리거 연결(trigger connection, 652)을 통해 트리거를 전송한다(이 값은 서브-함수 모듈(610) 내의 레지스터 또는 다른 곳에 저장될 수 있다). x(K)의 값을 수신하면, Fi+1을 정의하기 위한 다음 파라미터가 레지스터(620)로부터 리딩되고, Ki+1에 대한 값이 단방향 모듈(630)을 통하여 계산된다.
지금까지 전술된 실시 예들은 첫 번째 단방향 함수(one-way function) x를 통과함으로써 메인 키를 전달하여 메인 키를 보호하고, 이 값에서 각각의 라운드 키들(122)을 각 서브-함수(242)에 대한 독립적인 입력으로서 계산한다. 도 7 내지 도 9를 참조하여 대안적인 실시 예가 설명된다. 이 실시 예에서 서브-함수의 시퀀스(240)의 첫 번째 서브-함수(242)는 메인 키 K를 입력으로 취하고, 후속하는 서브-함수 F1, F2, ..., FN-1(244 내지 248) 각각은 이전 서브-함수의 출력을 입력으로 취한다. 예를 들어, 서브-함수(244)는 서브-함수(242)의 출력을 입력으로 취하며, 서브-함수(246)는 서브-함수(244)의 출력을 입력으로 취하는 식이다. 도 5를 참조하여 전술된 바와 같이, 시퀀스(240)의 각 서브-함수(242 내지 248)의 출력은 다시 단방향 함수(262)를 통하여 전달됨으로써 라운드 키(122 내지 128)의 출력 시퀀스(120)를 순서대로 생성한다.
특정 실시 예들에서, Fi는 특정 실시 예들에서 언급된 함수들의 클래스(class)들로부터 선택된다. Fi는 테이블 룩업 함수(table look up function)이고, 단방향 함수 H(y)는 전술된 함수들의 클래스에서 선택된다. 특히, 일부 실시 예들에서, H(y)는 경량 순열(lightweight permutation)에 기초한 Davis-Meyer 구조이다. 일부 실시 예들에서, 단방향 함수 H는 전술된 바와 같이 선택될 수 있다. 즉, H(y) := y8 mod N이다. 일부 실시 예들에서, 전술된 바와 같이, 첫 번째 단방향 함수 x는 K 및 시퀀스(240)의 첫 번째 서브 함수(242)(F0) 사이에 삽입될(interposed) 수 있다.
라운드 키의 시퀀스(120)를 부호화 시퀀스로 취하는 경우, 개별 라운드 키들(122 내지 128)이 여전히 저장되어 있는 실시 예들에서 역순으로 시퀀스(120)를 리딩(reading)하면 복호화 시퀀스가 간단하게 도출될 수 있다. 라운드 키들(122 내지 128)이 이용 가능하지 않은 경우, 전술된 바와 같이, 그들은 계산된 역순으로 리딩(reading)된 결과를 갖는 서브-함수들의 시퀀스(240)에 의해 계산될 수 있다. 그러나, 부호화 시퀀스의 마지막 라운드 키인 복호화 시퀀스의 첫 번째 라운드 키를 이용하여 복호화 시퀀스의 계산을 시작하는 것이 바람직할 수 있다. 이는 첫 번째 키가 먼저 사용 가능하다는 것을 의미하며, 라운드 키가 그때그때 계산되기는 하지만 저장되지는 않는 실시 예를 가능하게 한다. 라운드 키의 시퀀스의 반전을 가능하게 하여 라운드 키(122 내지 128)의 복호화 시퀀스(130)를 유도하는 몇몇 실시 예가 도 8을 참조하여 설명된다. 이 실시 예들은 서브-함수(242 내지 248)를 사용하여 도출된 순방향 또는 복호화 시퀀스(120)의 역방향 또는 복호화 시퀀스(134)를 계산하는 데 적합하며, 가역적이고, 서브-함수의 시퀀스(240)의 결과를 직접적으로 계산하는 합성 함수(composite function)는 아래 수학식 2와 같이 서브-함수(242 내지 248)의 합성 함수로서 구성될 수 있다.
[수학식 2]
F{0→N-1} := F0 ˚ F1 ˚˚ FN-2 ˚ FN-1
도 8을 참조하면, 역방향 시퀀스(250)의 첫 번째 서브-함수(252)는 순방향 시퀀스(240)의 서브-함수의 합성 함수 F{0→N-1}을 계산하고, 그 출력은 단방향 함수(262)를 통하여 전달되어 순방향 시퀀스(120)의 마지막 라운드 키(128) 즉, KN-1에 대응하는 역방향 라운드 키 시퀀스(130)의 첫 번째 라운드 키(128)를 생성한다. 서브-함수(252)의 출력 또한, 순방향 시퀀스(240)의 마지막 함수(248)의 역방향 함수 FN-1 -1에 대응하는 역방향 시퀀스(250)의 다음 서브-함수(254)로 전달된다. 서브-함수(254)의 출력은 단방향 함수(262)를 통하여 다시 전달되어 순방향 시퀀스(120)의 마지막 두 번째 라운드 키인 역방향 시퀀스(130)의 다음 라운드 키 KN-2를 생성한다. 역방향 시퀀스(250)의 다음 서브-함수(256)는 순방향 시퀀스(240)의 마지막 두 번째 서브-함수의 역인 FN-2 -1에 대응하고, 순방향 시퀀스(240)의 두 번째 서브-함수의 역에 대응하는 역방향 시퀀스(250)의 마지막 서브-함수가 순방향 시퀀스(120)의 첫 번째 라운드 키인 역방향 시퀀스(130)의 마지막 라운드 키(122)를 생성하는 데 사용될 때까지 역방향 시퀀스(130)의 다음 라운드 키를 생성하는 데 사용된다.
전술된 바와 같이, 이러한 실시 예들에서, 서브-함수는 가역적이며(invertible) 합성 함수로 구성 가능해야 한다. 일부 실시 예들에서, 서브-함수는 가역 테이블 룩업 함수이거나 이동(shift) 또는 회전(rotation) 비트 연산자(bit operator)이다. 서브-함수들이 가역적이며 구성 가능하다면, 시퀀스(240)의 서브-함수들은 모두 동일하거나, 단일의 서브함수이거나, 반복적으로 사용되거나, 또는 각각 상이하거나, 또는 이들의 조합일 수 있다.
도 9를 참조하여, 단일의 라운드 키 Ki만이 레지스터(640)에 저장되고 라운드 키가 서브-함수(240)의 시퀀스를 사용하여 그때그때 시퀀스(120)를 생성하는 일부 실시 예가 설명된다. 이러한 실시 예들은 서브-함수들의 대응하는 시퀀스(250)를 사용하여 전술된 시퀀스(130)를 생성하는 데 동일하게 적합하다는 것이 이해될 것이다. 반복하자면, 이러한 실시 예들은 하드웨어에서 신속하게 실행될 수 있고 저장 용량이 제한될 수 있는 전용 회로에서 구현하기에 특히 적합하다.
메인 키 K에 대한 값을 유지하는 레지스터(100)는 서브-함수모듈(610)에 의해 리드(read)된다. 전술한 바와 같이, 서브-함수모듈(610) 또한, 하나 이상의 파라미터를 판독하여 관련 반복에 대한 함수 Fi를 정의하고, Fi를 평가하며, 그 결과를 출력으로서 단방향 모듈(630)에 제공한다. 단방향 모듈(630)은 입력에 대해 단방향 함수를 계산하며 그 결과를 레지스터(640)의 라운드 키 Ki로 저장한다. 또한, 이 서브-함수모듈(610)은 라인(660)을 통해 자신의 출력을 다시 자신의 입력으로 제공하여 단방향 함수 모듈(630)을 통해 다음 서브-함수 Fi+1 및 그에 따른 Ki+1를 계산한다.
전술된 모든 실시 예들은 대응하는 서브-함수 Fi로부터 단일 라운드 키 Ki를 생성하는 관점에서 설명되었다. 이러한 실시 예들에서, 단방향 함수(들) H의 출력에서 비트들의 수는 라운드 Ki의 비트들의 수 이상이어야 한다. 물론, 일부 실시 예들에서 단방향 함수들의 출력은 서브-키들에 요구되는 것보다 적은 비트들을 가질 수 있음이 이해될 것이다. 그러한 실시 예들에서, 예를 들어 단방향 함수 출력 비트들의 수가 요구되는 비트들 수의 1/2이거나 또는 보다 일반적으로 1/m인 경우, 요구되는 비트들을 생성하기 위해 전술된 과정들이 2회 또는 m회 실행될 수 있다. 마찬가지로, 일부 실시 예들에서, 2개(m)의 단방향 함수들의 출력은 다른 하나가 결합되어 순차적으로 서브-키들을 생성할 수 있게 된 후에 한 번 실행되며, (도면들에 표현된 바와 같이) 실제로는 충분한 비트의 라운드 키를 형성하기 위하여 인접하는 라운드 키들이 그룹화된다.
한편, 일부 실시 예들에서, H의 출력에서의 비트들의 수는 단일 라운드 키 Ki의 적어도 m배이며, 대응하는 서브-함수 Fi에 적용되는 단방향 함수 H의 출력으로부터 m개의 라운드 키들이 생성된다. 환언하면, 이러한 실시 예들에서, m개의 라운드 키 Ki·m+j, j = 1, 2, ..., m가 각각의 서브-함수 Fi로부터 생성된다. 예를 들어, H의 출력이 2048비트를 갖는다면, 16개의 128비트 라운드 키 Ki가 그 함수의 출력으로부터 생성될 수 있다.
일부 실시 예들에서, H의 출력 비트들은 미리 정의된 관계에 의해 Ki의 비트들로 매핑된다. 예를 들어, Ki의 비트들의 수가 n이면, H의 출력의 첫 번째 n비트는 K0의 비트를 설정하는 데 사용되고, H의 출력의 다음 n비트는 K1의 비트를 설정하는 데 사용된다. 물론 다른 관계도 동등하게 가능한데, 예를 들어, H의 출력의 처음 m비트를 사용하여 모든 Ki의 처음 비트를 설정하고, H의 출력의 두 번째 m비트를 사용하여 Ki의 두 번째 비트를 설정하거나 다른 미리 정의된 맵핑 등의 관계도 가능하다.
도 10을 참조하여 이하 설명되는 일부 실시 예들에서, 단일의 단방향 함수(280)는 시퀀스(120)에서 요구되는 수의 라운드 키 Ki를 생성하기에 충분한 수의 비트들을 갖는 출력을 생성한다. 즉, 위에서 논의된 내용 측면에서, 이 시퀀스에는 m개 라운드 키들이 존재한다. 모든 라운드 키들은 단일의 단방향 함수의 출력으로부터 생성되기 때문에, 서브-함수 Fi가 필요하지 않거나, 선택적으로, 단방향 함수(280)를 단일의 서브-함수 Fi와 단방향 함수 H의 조합으로 볼 수 있다. 도 10에 예시되고 전술된 바와 같이, 일부 실시 예들에서 단방향 함수(280) 출력의 연속되는 블록의 비트는 대응하는 Ki 라운드 키들을 정의하는 데 사용되지만, 단방향 함수 출력 비트들을 라운드 키 비트들로 할당하는 방법이 전술된 방법과 동일하게 가능하다.
x, H 및 Fi를 구현하기 위한 전술된 구체적인 설명은 몇몇 특정 함수들을 언급하였지만, 적용 가능한 경우, 다양한 실시 예들에서, 많은 다른 적합한 함수들이 전술된 제약 조건의 대상이며, 통상의 지식을 가진 사람이라면 용이하게 실시 가능할 것이다. 특히, 일부 적합한 함수들이 위에서 논의되었으며, 이 함수들은 설명된 특정 실시 예들과 함께 사용될 수 있다.
후술되는 실시 예들 또한 개시된다.
1. 암호화 동작을 위해 메인 키로부터 서브-키의 시퀀스를 생성하는 장치로서, 여기서 상기 서브-키 각각은 비트 값 각각에 의해 정의되며, 상기 장치는 상기 서브-키의 적어도 하나 및 상기 메인 키를 저장하는 메모리와 프로세서를 포함하고,
변환을 이용하여 상기 메인 키 상에서 동작하며, 여기서 상기 변환은 하나 이상의 단방향 함수를 포함하고, 상기 메인 키는 단 한번만 동작되어 상기 시퀀스의 서브-키를 생성하며,
상기 하나 이상의 단방향 함수의 비트 값 각각을 이용하여 상기 시퀀스의 서브-키의 비트 값 각각을 설정하도록 구성된다.
2. 제1항목에 따른 장치에 있어서, 상기 비트 값 각각의 설정은,
사전에 정의된 관계에 따라 상기 하나 이상의 단방향 함수 중 하나의 비트 값 각각에 따라 상기 서브-키의 적어도 두 개의 비트 값 각각을 설정하는 것을 포함한다.
3. 제1항목에 따른 장치에 있어서, 상기 비트 값 각각의 설정은,
사전에 정의된 관계에 따라 상기 하나 이상의 단방향 함수 중 하나의 비트 값 각각에 따라 상기 시퀀스의 모든 서브-키들의 비트 값 각각을 설정하는 것을 포함한다.
4. 제1항목 또는 제2항목에 따른 장치에 있어서, 상기 메인 키의 동작은,
복수 개의 중간 출력을 생성하고 상기 각 중간 출력 각각에 상기 단방향 함수를 적용하여 단방향 출력 각각을 생성하는 것을 포함하며, 여기서 상기 프로세서는 상기 단방향 출력 각각으로부터 상기 서브-키를 하나 이상 생성하도록 구성된다.
5. 제1항목, 제2항목 또는 제4항목에 따른 장치에 있어서, 상기 프로세서는,
첫 번째 서브-함수를 상기 메인 키에 적용하여 첫 번째 중간 출력을 생성하고,
첫 번째 단방향 함수를 상기 첫 번째 중간 출력에 적용하며,
상기 첫 번째 단방향 함수의 출력으로부터 상기 시퀀스의 첫 번째 서브-키를 하나 이상 생성하도록 구성되며,
이를 반복하여,
다음 서브-함수를 상기 이전 중간 출력에 적용하여 다음 중간 출력을 생성하고,
다음 단방향 함수를 상기 다음 중간 출력에 적용하며,
상기 다음 단방향 함수의 출력으로부터 상기 시퀀스의 다음 서브-키를 하나 이상 생성하도록 구성된다.
6. 제1항목, 제2항목 또는 제4항목에 따른 장치에 있어서, 상기 프로세서는,
입력 단방향 함수를 상기 메인 키에 적용하여 작동 키를 생성하고,
복수 개의 서브-함수를 상기 작동 키에 적용하여 중간 출력 각각을 생성하며,
출력 단방향 함수를 상기 중간 출력 각각에 적용하여 변환 출력 각각을 생성하고,
상기 변환 출력으로부터 상기 시퀀스의 서브-키를 생성하도록 구성된다.
7. 제1항목 내지 제6항목에 따른 장치에 있어서, 상기 프로세서는,
상기 시퀀스에 의해 정의된 키 스케줄에 따라 블록 암호를 구현하고, 상기 시퀀스의 서브-키를 상기 블록 암호의 라운드 키로 사용하도록 구성된다.
8. 암호화 동작의 사용을 위해 메인 키로부터 관련 서브-키의 순방향 및 역방향 시퀀스를 생성하는 장치로서, 상기 장치는 상기 서브-키의 적어도 하나 및 상기 메인 키를 저장하는 메모리와 제5항목에 따라 구성되어 상기 순방향 시퀀스의 서브-키를 생성하는 프로세서를 포함하며,
여기서, 상기 다음 서브-함수는 순방향 다음 서브-함수 시퀀스에 적용되고,
여기서, 상기 순방향 다음 서브-함수 시퀀스의 서브-함수가 후속되는 상기 첫 번째 서브-함수는 순방향 서브-함수 시퀀스를 정의하며
여기서, 상기 프로세서는 제5항목에 따라 구성되어 상기 메인 키로부터 상기 서브-키의 역방향 시퀀스를 생성하고,
여기서, 상기 첫 번째 서브-함수는 상기 순방향 서브-함수 시퀀스의 서브-함수의 합성함수이며, 상기 다음 서브-함수는 역방향 다음 서브-함수 시퀀스에 적용되고, 상기 역방향 다음 서브-함수 시퀀스의 서브-함수는 상기 순방향 다음 서브-함수 시퀀스의 서브-함수의 역방향 함수 각각과 역순으로 대응된다.
9. 블록 암호로 부호화된 메시지를 복호화하는 장치로서, 상기 블록 암호는 부호화 시퀀스에 적용된 라운드 키를 포함하는 키 스케줄을 가지며, 상기 라운드키의 부호화 시퀀스는 제5항목에 따라 구성된 프로세서에 의해 메인 키로부터 획득 가능하고, 여기서 상기 다음 서브-함수는 부호화 다음 서브-함수 시퀀스에 적용되며, 상기 부호화 다음 서브-함수 시퀀스의 서브-함수가 후속되는 상기 첫 번째 서브-함수는 부호화 서브-함수 시퀀스를 정의하고, 상기 장치는 서브-키의 적어도 하나 및 상기 메인 키를 저장하는 메모리와 제5항목에 따라 구성되어 상기 메인 키로부터 상기 서브-키의 복호화 시퀀스를 생성하는 프로세서를 포함하고,
여기서, 상기 첫 번째 서브-함수는 상기 부호화 서브-함수 시퀀스의 서브-함수의 합성 함수이고,
여기서, 상기 다음 서브-함수는 복호화 다음 서브-함수 시퀀스에 적용되며, 상기 복호화 다음 서브-함수 시퀀스의 서브-함수는 상기 부호화 다음 서브-함수 시퀀스의 서브-함수의 역함수 각각과 역순으로 대응되고,
상기 서브-키를 상기 복호화 시퀀스의 순서로 적용하여 상기 메시지를 복호화하도록 구성된다.
10. 키 스케줄을 가지는 블록 암호를 이용하여 메시지를 처리하는 장치로서, 상기 장치는 서브-키의 적어도 하나 이상 및 메인 키를 저장하는 메모리와 프로세서를 포함하고,
상기 블록 암호를 이용하여 상기 메시지의 원문을 부호화함으로써 암호 텍스트를 생성하며, 여기서, 상기 프로세서는 메인 키로부터 부호화 시퀀스의 키 스케줄의 라운드 키를 생성하도록 제5항목에 따라 구성되며, 여기서 상기 다음 서브-함수는 부호화 다음 서브-함수 시퀀스에 적용되고, 상기 부호화 다음 서브-함수 시퀀스의 서브-함수가 후속되는 상기 첫 번째 서브-함수는 부호화 서브-함수 시퀀스를 정의하며, 여기서, 상기 프로세서는,
상기 부호화 시퀀스의 라운드 키 중 첫 번째 하나를 이용하여 상기 원문을 부호화함으로써 첫 번째 라운드 키를 생성하고,
상기 부호화 시퀀스에 남아있는 라운드 키에 대해, 상기 부호화 시퀀스의 다음 라운드 키를 이용하여 이전 라운드 텍스트를 부호화함으로써 다음 라운드 텍스트를 생성하도록 구성되며, 여기서 상기 마지막 라운드 텍스트는 상기 암호 텍스트이고, 여기서 상기 프로세서는,
상기 암호 텍스트를 복호화하도록 구성되어 상기 원문을 생성하도록 구성되며, 여기서 상기 프로세서는 상기 메인 키로부터 서브-키의 복호화 시퀀스를 생성하도록 제5항목에 따라 구성되며, 여기서 상기 첫 번째 서브-함수는 상기 부호화 서브-함수 시퀀스의 서브-함수의 합성함수이고, 여기서 상기 다음 서브-함수는 복호화 다음 서브-함수 시퀀스에 적용되며, 상기 복호화 다음 서브-함수 시퀀스의 서브-함수는 상기 부호화 다음 서브-함수 시퀀스의 서브-함수의 역함수와 역순으로 대응하고, 여기서, 상기 프로세서는,
상기 복호화 시퀀스의 상기 라운드 키 중 첫 번째 하나를 이용하여 상기 암호 텍스트를 복호화함으로써 첫 번째 라운드 텍스트를 생성하며,
상기 복호화 시퀀스에 남아 있는 라운드 키에 대해, 상기 복호화 시퀀스의 다음 라운드 키를 이용하여 이전 라운드 텍스트를 복호화함으로써 다음 라운드 텍스트를 생성하도록 구성되고, 여기서, 상기 마지막 라운드 텍스트는 원문에 해당한다.
일부 실시 예들에 대한 상기와 같은 특정 설명은 키 스케줄을 갖는 블록 암호의 관점에서 이루어졌으며 특정 라운드 키 생성기에 의해 정의되었지만, 암호화 키의 시퀀스를 생성하는 전술된 실시 예는 블록 암호 및 라운드 키의 맥락에서 더 넓은 응용을 발견할 수 있을 것이다. 따라서 본 발명은 블록 암호의 맥락에 한정되는 것은 아니지만, 보다 일반적으로 서브-키 생성기로서 설명될 수 있는 라운드 키 생성기의 개시된 실시 예들에 따라 메인 키로부터 생성된 서브-키 시퀀스의 다른 용도를 포함한다.
더욱 일반적으로, 특정 실시 예들에 대한 상기와 같은 설명은 본 발명의 양상들이 청구 범위에 청구된 내용을 제한하는 것으로 해석되어서는 안된다는 것을 설명하기 위한 예로서 제시되었다.
10 : 블록 암호
100, 400, 500, 620, 640 : 레지스터
120 : 라운드 키 시퀀스 130 : 복호화 시퀀스
140 : 부호화 시퀀스 200 : 라운드 키 생성기
240, 610 : 서브함수모듈 260, 630 : 단방향 모듈
300 : 부호화 모듈 302 : 복호화 모듈

Claims (15)

  1. 해당하는 비트 값(bit value)에 의해 서브-키(sub-key)가 정의되되, 암호화 동작(cryptographic operation)을 위해 메인 키(main key)로부터 서브-키들(sub-keys)의 시퀀스(sequence)로부터의 서브-키들을 생성하는 방법으로서,
    제 1세트의 단반향 함수들(one-way functions)로부터의 하나 이상의 단방향 함수를 이용하여 복수의 중간 출력들(intermediate outputs)을 생성하기 위해 상기 메인 키 상에서 동작하는 과정;
    각각의 단방향 출력(one-way output)을 생성하기 위해 제 2세트의 단방향 함수들을 상기 복수의 중간 출력들에 적용하는 과정; 및
    상기 각각의 단방향 출력의 비트 값 각각을 이용하여 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 설정하는 과정을 포함하되, 상기 복수의 중간 출력들은 상기 메인 키로부터 단일 횟수로 생성되는, 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 제1항에 있어서,
    상기 각각의 단방향 출력의 비트 값 각각을 이용한 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 이용하여 부호화된 메시지를 생성하는 과정
    을 추가로 포함하는, 방법.
  10. 제9항에 있어서,
    상기 각각의 단방향 출력의 비트 값 각각을 이용한 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 이용하여 부호화된 메시지를 복호화하는 과정
    을 추가로 포함하는, 방법.
  11. 해당하는 비트 값(bit value)에 의해 서브-키(sub-key)가 정의되되, 암호화 동작(cryptographic operation)을 위해 메인 키(main key)로부터 서브-키들(sub-keys)의 시퀀스(sequence)로부터의 서브-키들을 생성하는 장치로서,
    상기 메인 키 및 하나 이상의 서브-키를 저장하는 메모리; 및
    프로세서를 포함하되, 상기 프로세서는,
    제 1세트의 단반향 함수들(one-way functions)로부터의 하나 이상의 단방향 함수를 이용하여 복수의 중간 출력들(intermediate outputs)을 생성하기 위해 상기 메인 키 상에서 동작하고;
    각각의 단방향 출력(one-way output)을 생성하기 위해 제 2세트의 단방향 함수들을 상기 복수의 중간 출력들에 적용하고; 및
    상기 각각의 단방향 출력의 비트 값 각각을 이용하여 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 설정하되, 상기 복수의 중간 출력들은 상기 메인 키로부터 단일 횟수로 생성되도록 구성되는, 장치.
  12. 제11항에 있어서, 상기 프로세서는,
    상기 각각의 단방향 출력의 비트 값 각각을 이용한 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 이용하여 부호화된 메시지를 생성하도록 추가로 구성되는, 장치.
  13. 처리 장치에서 실행될 때, 상기 처리 장치로 하여금 해당하는 비트 값(bit value)에 의해 서브-키(sub-key)가 정의되되, 암호화 동작(cryptographic operation)을 위해 메인 키(main key)로부터 서브-키들(sub-keys)의 시퀀스(sequence)로부터의 서브-키들을 생성하도록 하는 명령어들이 저장된 비일시적 컴퓨터-판독가능 저장 매체로서,
    상기 명령어들은,
    제 1세트의 단반향 함수들(one-way functions)로부터의 하나 이상의 단방향 함수를 이용하여 복수의 중간 출력들(intermediate outputs)을 생성하기 위해 상기 메인 키 상에서 동작하고;
    각각의 단방향 출력(one-way output)을 생성하기 위해 제 2세트의 단방향 함수들을 상기 복수의 중간 출력들에 적용하고; 및
    상기 각각의 단방향 출력의 비트 값 각각을 이용하여 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 설정하되, 상기 복수의 중간 출력들은 상기 메인 키로부터 단일 횟수로 생성되도록 구성되는, 비일시적 컴퓨터-판독가능 저장 매체.
  14. 제13항에 있어서, 상기 명령어들은,
    상기 각각의 단방향 출력의 비트 값 각각을 이용한 상기 서브-키들의 시퀀스의 상기 서브-키들의 비트 값 각각을 이용하여 부호화된 메시지를 생성하도록 추가로 구성되는, 비일시적 컴퓨터-판독가능 저장 매체.
  15. 삭제
KR1020187016055A 2015-11-06 2016-11-02 암호화 동작을 위한 키 시퀀스 생성 KR102620649B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB1519612.4A GB201519612D0 (en) 2015-11-06 2015-11-06 Key sequence generation for cryptographic operations
GB1519612.4 2015-11-06
PCT/EP2016/076436 WO2017076911A1 (en) 2015-11-06 2016-11-02 Key sequence generation for cryptographic operations

Publications (2)

Publication Number Publication Date
KR20180081559A KR20180081559A (ko) 2018-07-16
KR102620649B1 true KR102620649B1 (ko) 2024-01-03

Family

ID=55132394

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187016055A KR102620649B1 (ko) 2015-11-06 2016-11-02 암호화 동작을 위한 키 시퀀스 생성

Country Status (10)

Country Link
US (2) US10742394B2 (ko)
EP (1) EP3371928B8 (ko)
KR (1) KR102620649B1 (ko)
CN (1) CN108476132B (ko)
BR (1) BR112018009137B1 (ko)
ES (1) ES2911889T3 (ko)
GB (1) GB201519612D0 (ko)
MX (1) MX2018005700A (ko)
SG (1) SG11201803741PA (ko)
WO (1) WO2017076911A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109347625B (zh) * 2018-08-31 2020-04-24 阿里巴巴集团控股有限公司 密码运算、创建工作密钥的方法、密码服务平台及设备
CN111654367B (zh) 2018-08-31 2023-05-12 创新先进技术有限公司 密码运算、创建工作密钥的方法、密码服务平台及设备
CN110572251B (zh) * 2019-08-13 2020-09-22 武汉大学 一种模板攻击方法以及设备抗模板攻击的评估方法
CN110704856B (zh) * 2019-10-09 2021-08-20 成都安恒信息技术有限公司 一种基于运维审计系统的秘密共享方法
CN111162907B (zh) * 2019-12-28 2023-05-23 飞天诚信科技股份有限公司 一种协商密钥的生成方法及智能卡设备
CN111342951B (zh) * 2020-02-09 2023-03-14 深圳大学 流密码系统的生成方法、装置及终端设备
CN112311527A (zh) * 2020-09-17 2021-02-02 裴文耀 一种主密钥变换为多项式表格子密钥查表的加密方法
EP4117221A1 (en) * 2021-07-09 2023-01-11 STMicroelectronics S.r.l. Method for performing cryptographic operations in a processing device, corresponding processing device and computer program product
CN115022000B (zh) * 2022-05-27 2023-12-01 北京交大微联科技有限公司 铁路信号系统的通信方法、装置及电子设备
CN115017530B (zh) * 2022-08-08 2022-12-16 创云融达信息技术(天津)股份有限公司 一种数据安全存储设备及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080304664A1 (en) * 2007-06-07 2008-12-11 Shanmugathasan Suthaharan System and a method for securing information

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998031122A1 (en) * 1997-01-08 1998-07-16 Bell Communications Research, Inc. A method and apparatus for generating secure hash functions
US6185679B1 (en) 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
US6185673B1 (en) 1998-06-30 2001-02-06 Sun Microsystems, Inc. Apparatus and method for array bounds checking with a shadow register file
US8479016B2 (en) * 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
CN1878059A (zh) * 2006-07-07 2006-12-13 北京财富投资有限公司 一种分组加密及解密算法
US8130946B2 (en) * 2007-03-20 2012-03-06 Michael De Mare Iterative symmetric key ciphers with keyed S-boxes using modular exponentiation
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
EP2197144A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for a chained encryption mode
JP5552541B2 (ja) * 2009-12-04 2014-07-16 クリプトグラフィ リサーチ, インコーポレイテッド 検証可能な耐漏洩性暗号化および復号化
CN101895389B (zh) * 2010-07-16 2012-06-06 黑龙江大学 采用比例计算的基于组合编码的文件加密和解密的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080304664A1 (en) * 2007-06-07 2008-12-11 Shanmugathasan Suthaharan System and a method for securing information

Also Published As

Publication number Publication date
MX2018005700A (es) 2018-12-11
EP3371928B1 (en) 2022-04-06
EP3371928B8 (en) 2022-05-18
CN108476132A (zh) 2018-08-31
CN108476132B (zh) 2021-11-19
US11546135B2 (en) 2023-01-03
ES2911889T3 (es) 2022-05-23
SG11201803741PA (en) 2018-06-28
KR20180081559A (ko) 2018-07-16
EP3371928A1 (en) 2018-09-12
US20210021405A1 (en) 2021-01-21
US10742394B2 (en) 2020-08-11
WO2017076911A1 (en) 2017-05-11
US20180316490A1 (en) 2018-11-01
BR112018009137A8 (pt) 2019-02-26
BR112018009137B1 (pt) 2023-12-26
BR112018009137A2 (pt) 2018-11-06
GB201519612D0 (en) 2015-12-23

Similar Documents

Publication Publication Date Title
KR102620649B1 (ko) 암호화 동작을 위한 키 시퀀스 생성
Gueron et al. Fast garbling of circuits under standard assumptions
US10320554B1 (en) Differential power analysis resistant encryption and decryption functions
JP5402632B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
US20120170739A1 (en) Method of diversification of a round function of an encryption algorithm
JP7031580B2 (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
Aldaya et al. AES T-Box tampering attack
Huang et al. A novel structure with dynamic operation mode for symmetric-key block ciphers
Patel et al. Hybrid security algorithms for data transmission using AES-DES
Murtaza et al. Fortification of aes with dynamic mix-column transformation
US20230403134A1 (en) Method for processing encrypted data
Dalakoti et al. Hardware efficient AES for image processing with high throughput
CN111740818A (zh) 一种数据处理方法、装置、设备及存储介质
AlRoubiei et al. Critical analysis of cryptographic algorithms
Khalil et al. Modify PRESENT Algorithm by New technique and key Generator by External unit
Putra et al. Performance Analysis Of The Combination Of Advanced Encryption Standard Cryptography Algorithms With Luc For Text Security
Al-Kareem et al. Modify Twofish Algorithm to Lightweight using Present Techniques for Data Protection
JP5818768B2 (ja) マスク生成装置、情報処理装置、及びその方法、プログラム
Roy et al. RASS—A concurrency based bitwise symmetric key cryptographic algorithm
TW201528754A (zh) 時間擾動混沌映射加密解密系統與方法
JP2018155922A (ja) 帰還シフトレジスタ回路及び帰還シフトレジスタの動作方法
Jha et al. Space Efficient Cryptographic Protocol Using Recursive Bitwise & Pairs Of Bits Of Operation (RBPBO)
Kaushal et al. Comparative Study of RKC and GCM Mode of Operation
Joshi et al. Delineation of Trivial PGP Security

Legal Events

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