KR102447709B1 - 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템 - Google Patents

비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102447709B1
KR102447709B1 KR1020170148649A KR20170148649A KR102447709B1 KR 102447709 B1 KR102447709 B1 KR 102447709B1 KR 1020170148649 A KR1020170148649 A KR 1020170148649A KR 20170148649 A KR20170148649 A KR 20170148649A KR 102447709 B1 KR102447709 B1 KR 102447709B1
Authority
KR
South Korea
Prior art keywords
input
bit
key
round
data
Prior art date
Application number
KR1020170148649A
Other languages
English (en)
Other versions
KR20180070459A (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 KR20180070459A publication Critical patent/KR20180070459A/ko
Application granted granted Critical
Publication of KR102447709B1 publication Critical patent/KR102447709B1/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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • 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)
  • Power Engineering (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Studio Circuits (AREA)
  • Communication Control (AREA)

Abstract

암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템 및 방법이 제공된다. 시스템 및 방법은 제1 입력 및 제2 입력을 획득하도록; 전기 회로가 각 제1 입력 및 제2 입력에 대해 비트-믹서 연산을 수행하도록; 및 수행하는 것을 토대로 라운드 키를 발생시키도록; 동작 가능한 하나 이상의 로직 회로를 구비하여 구성된다. 제1 입력은 복수의 동일한 크기의 키 재료 서브-블록으로 분리된 키 재료로부터 복수의 동일한 크기의 서브키를 포함하고, 암호 키 및 제2 입력은 랜덤 입력, 하나 이상의 이전 라운드 키, 라운드 넘버를 포함한다. 암호학적 연산이 암호, 해시 함수, 또는 스트림 발생기를 포함한다. 비트-믹서 연산은 "XOR" 트리, 대입-치환 네트워크, 또는 더블-믹스 피에스텔 네트워크, 또는 "RAX" 구성을 포함한다.

Description

비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템{METHOD AND SYSTEM FOR GENERATION OF CIPHER ROUND KEYS BY BIT-MIXERS}
본 발명은 일반적으로 컴퓨터 시스템에서의 데이터 보호에 관한 것이다. 특히, 전송된 메세지의 비밀 보호, 보관된 데이터의 비밀 보호 및 컴퓨터 시스템의 메모리에 저장된 데이터의 보호에 관한 정보 보증(information assurance)의 3가지 애플리케이션 중 하나에 관한 것으로, 데이터는 종종 하나 이상의 버스 상에서 전송된다.
금융, 군사, 의료 또는 높은 수준의 보호가 필요한 데이터의 보안 통신 및 보호를 제공하기 위해, 컴퓨터 및 마이크로세서-기반 시스템은 현재 다양한 보안 수단을 구현한다. 이러한 수단은 일반적으로 통신 채널을 통해 전송(transfer)되는 데이터에 대한 적(adversary)의 불법 액세스(illicit access)를 불가능하게 하기 위한 것이며, 디스크 드라이브 또는 광 매체와 같은 비휘발성 저장 장치에 저장되거나, 예를 들어, 메모리 및 마이크로프로세서가 동일한 회로 기판상에 있거나 또는 버스에 의해 결합되기 때문에, 마이크로프로세서에 의해 액세스 되는 메모리에 저장될 수 있다.
예시적인 애플리케이션(application)은 보안 컴퓨팅 시스템(secure computing system)의 메모리에 저장된 데이터를 보호하는 것이지만, 다른 유형의 애플리케이션도 동일하게 보편적이며 중요하다. 이러한 프로세서에 대한 일반적인 공격 유형은 능동 또는 수동 공격으로 분류할 수 있다. 수동 공격의 경우 적은 암호, 저작권 보호된 자료 등과 같은 비밀 정보를 발견하기 위해, 메모리의 내용을 읽는다. 수동적 공격자는 또한 비밀 정보에 대한 프로세서와 메모리 (또는 일부 주변 장치) 간의 데이터 트래픽(data traffic)을 모니터 할 수 있다.
능동적 공격은 메모리의 내용, 또는 메모리 및 프로세서 간의 데이터 트래픽을 수정하기 위해 시도한다. 능동적 공격은 상이한 위치 간의 메모리 블록을 복사-및-붙여넣기 하거나, 동일한 또는 다른 위치의 이전 내용을 재생시키는 시도를 포함한다. 이러한 공격은 예를 들면 무한 루프(infinite loop)를 발생함으로써, 또는 그렇지 않으면 보안 마이크로프로세서상에서 실행 중인 프로그램에 영향을 줄 수 있고, 보호된 메모리로부터 데이터를 이용함으로써 해를 야기시킬 수 있다. 알려진 데이터 인식 공격에서, 적은 알려진 데이터를 동일한 어드레스로 쓰는(write) 것을 봄으로써 암호 키(encryption key)를 배우려고 시도할 수 있다.
저장, 트랜잭션 또는 전송된 민감한 데이터의 비밀성(secrecy) 및 무결성(integrity)은 암호학적 수단(cryptographic means)으로 보장될 수 있다. 가장 중요한 암호학적 툴(tool)은 블록 암호(block cipher)이다. 그들은 주어진 암호 알고리즘에서의 행동을 결정하는 비밀 키(secret key)를 이용한다. 가장 자주 이용되는 암호는 라운드라고 하는 변형 단계(transformation step)의 많은 반복(iteration)을 수행한다. 이러한 변형 단계는 암호 키(cipher key)로부터 파생된 비밀 라운드-키(round-key)에 의해 영향을 받는다. 암호의 보안 및 속도는 어떻게 이러한 라운드 키가 발생되는지에 따라 좌우된다. 현재 많이 이용되는 암호는 느리고 많은 전력 및 에너지를 소비하는데, 그 이유 중 하나는 고도로 비상관된 라운드 키(highly uncorrelated round key)의 발생의 복잡성 때문이다. 키 발생(key generation)은 또한 부 채널(side channel)상에서 익스플로잇이 가능한 정보(exploitable information)를 유출시킨다. 현재 달리 이용되는 암호는 낮은 품질의 (상관된, 편향(bias)된) 키를 생성(produce)하는, 라운드-키 발생기(round-key generator)를 채택한다.
블록 암호를 위한 라운드 키는 동일한 암호 키에서부터 파생되었다 해도, 고도로 비상관되어야 한다. 또한, 라운드 키를 발생시키는 알고리즘은 키-스케줄(key-schedule)이라 한다. 많은 암호는 LFSR(Linear Feedback Shift Register)와 같이, 간단한 키-스케줄을 이용한다. 예를 들면, LFSR 경우에서, 시간의 절반 동안에 라운드키는 단순히 이전 라운드-키의 1-비트 회전된 버전(version)이고, 남은 절반의 시간 동안에는 단지 몇 안 되는 비트(handful bit)가 회전된 이전의 라운드-키에서 변경된다.
만약 키 스케줄이 비상관된 라운드-키를 생성하기 위해 충분히 복잡하지 않다면, 암호는 고도의 보안을 달성하기 위해 많은 라운드를 필요로 한다. 일반적으로 이용되는 암호는 회전(rotate), XOR, 및 비트 재배열(bit rearrangement)을 포함하는 단순한 단계를 되풀이(repeat)함으로써 키-스케줄을 달성한다. 그들은 어려운 트레이드오프(tradeoff)를 마주한다: 이렇게 많지 않은 단계는 상관된 라운드-키를 생성하고, 따라서 암호는 많은 라운드를 필요로 하지만; 많은 키-스케줄 단계를 수행하는 것은 각 라운드마다 상당한 시간을 소비한다. 어느 하나의 방법에서든지 암호는 상당한 시간이 필요하다.
현재 이용되는 키 스케줄 알고리즘은 이전의 라운드-키로부터 라운드-키를 발생시므로, 해독(decryption)이 시작될 수 있는, 마지막 키를 얻기 위해 그들은 모든 라운드-키를 발생시켜야 한다. 범용 마이크로프로세서에서의 단일 암호 연산(single cipher operation)에서 전체 연산의 수는 라운드-키 발생의 임의의 순서와 동일할 수 있으므로, 반복적인 키 스케줄은 소프트웨어에 구현된 암호를 느리게 하지 않는다. 다른 한편으로는, 전자 하드웨어에 구현된 시스템에서 연속적인 라운드-키(sequential round-key) 발생은 해독할 때 초기 지연을 야기시킨다. 많은 해독 연산이 동일한 키로 수행되고, 해당 라운드-키가 캐시(cash) 될 수 있는 경우는 예외이다. 그러나 대형 캐시 메모리는 물리적인 공격의 대상이며, 동일한 키를 반복해서 이용하면 보완 시스템을 부 채널 공격자에게 노출된다. 키-롤링(key-rolling)은 대부분의 애플리케이션의 보안을 향상시키지만, 라운드-키를 캐싱하는 것을 방지하고, 암호 해독 속도가 느려지는 결과를 초래할 수 있다. (키 롤링은 암호화 키를 매번 이용하고 나서, 또는 몇 번 이용하고 나서 변경하는 것을 의미한다.)
따라서, 앞서 설명한 결점 및 부적합성을 해결하기 위해 업계에서 지금까지 다루지 않은 필요성이 존재한다.
본 가르침의 예시에 따르면, 암호학적 연산(cryptographic operation)을 위해 하나 이상의 라운드 키를 발생시키는 방법이 제공된다. 방법은 하나 이상의 제1 입력(1105) 및 하나 이상의 제2 입력을 획득하는 단계; 적어도 하나의 전기 회로에 의해, 각 하나 이상의 제1 입력 및 하나 이상의 제2 입력상의 비트-믹서 연산을 수행하는 단계; 및 적어도 하나의 전기 회로에 의해, 수행하는 단계를 토대로 하나 이상의 라운드 키를 발생시키는 단계;를 갖추어 이루어진다.
일부 예시에서, 하나 이상의 제1 입력은 암호 키 또는 복수의 동일한 크기의 키 재료 서브-블록(key material sub-block)으로 분리되는 키 재료로부터 복수의 동일한 크기의 서브키를 구비하여 구성된다. 하나 이상의 제2 입력은 랜덤하게 발생된 고정된 데이터, 하나 이상의 이전 라운드 키, 또는 라운드 넘버(round number)를 구비하여 구성된다. 일부 예시에서, 암호학적 함수, 하드코딩된 키 재료를 갖는 비트-믹서, 카운터 입력, 또는 그 조합을 적용함으로써 더 짧은 키로부터 하나 이상의 제1 입력을 생생하는 단계를 더 갖추어 이루어진다. 암호학적 함수는 암호, 해시 함수, 또는 스트림 발생기를 구비하여 구성된다. 일부 예시에서, 키 재료는 비밀이고, 통신 당사자 간에 공유된다. 일부 예시에서, 키 재료는 하드코딩된다. 일부 예시에서, 키 재료는 랜덤하게 발생된다.
일부 예시에서, 암호 키는 키 재료의 일부분과 함께 암호 키의 일부분상에서 "XOR" 연산에 의해 하드코딩된 키 재료와 결합된다. 일부 예시에서, 비트-믹서 연산은 XOR 트리, 대입-치환 네트워크, 또는 더블-믹스 페이스텔 네트워크, 또는 RAX 구성을 구비하여 구성된다. 일부 예시에서, XOR 트리는 복수의 NAND 게이트 또는 복수의 멀티플렉서를 구비하여 구성된다. 이곳에서 이용되는 바와 같이 NAND는 NOT-AND를 지칭하거나, 또는 Negative-AND 로직 연산을 지칭한다. 일부 예시에서, 발생시키는 단계는 수행하는 단계의 출력 상에서 스크램블링 연산을 수행하는 단계를 더 갖추어 이루어진다. 일부 예시에서, 방법은 하나 이상의 라운드 키를 갖는 데이터의 블록을 생성하는 단계를 더 갖추어서 이루어진다. 일부 예시에서, 방법은 암호학적 암호를 위해 하나 이상의 라운드 키를 수행하는 단계 및 발생시키는 단계를 반복하는 단계를 더 갖추어서 이루어진다. 일부 예시에서, 방법은 비트-믹서를 선택하는 단계를 더 갖추어 이루어지고, 비트-믹서 연산은 모든 입력 비트가 모든 출력 비트에 영향을 미치고, 입력 비트의 변경이, 평균적으로, 출력 비트의 반을 변경하도록 야기시키며; 입력 비트의 변경이 입력 비트 또는 입력의 변경 패턴에 대한 상관 없이 출력 값을 산출하는 속성을 갖고, 키는 키를 모르는 관찰자에 대해 그들의 행동을 예측 불가능하게 만들도록 채택되고, 입력 및 출력 값의 고정된 길이가 독립적이고 임의적으로 선택될 수 있다. 일부 예시에서, XOR 트리는 NAND 로직 연산이 하나 이상의 제2 입력의 각 제2 입력과 함께 하나 이상의 제1 입력의 각 제1 입력에 대해 복수의 제1 입력 중 어느 것이 XOR 로직 연산으로 입력할 것인가를 선택하기 위해 수행하는 단계;를 더 갖추어 이루어지고, XOR 트리의 출력은 입력으로서 이용된 복수의 제1 입력에 관해 출력을 생성한다.
일부 예시에서, 비선형의 비트-믹서 함수를 만들기 위해 XOR 트리의 출력으로 스크램블 연산을 수행하는 단계를 더 갖추어 이루어진다.
일부 예시에서, 대입-치환 네트워크는 각 복수의 제1 입력에 대해 비-선형 대입 연산을 수행하는 단계; 대입 연산의 각 출력에 대해 치환 단계를 수행하는 단계; 및 제1 입력 중 하나 또는 제2 입력 중 하나와 치환 연산의 각 출력에 대해 XOR 연산을 수행하는 단계;를 더 갖추어 이루어진다.
일부 예시에서, 더블-믹스 페이스텔 네트워크에서, 각 하나 이상의 제1 입력이 초기 왼쪽 절반 및 초기 오른쪽 절반으로 분리되고, 방법은: 복수의 라운드의 각 라운드를 위해 업데이트된 왼쪽 절반 및 업데이트된 오른쪽 절반을 계산하는 단계로서, 업데이트된 왼쪽 절반을 계산하는 단계는 제1 결과를 생성하기 위해 제1 함수를 입력 왼쪽 절반에 적용하는 단계, 및 제1 결과를 입력 오른쪽 절반에 믹싱하는 단계를 포함하고, 업데이트된 오른쪽 절반을 계산하는 단계는 제2 결과를 생성하기 위해 제2 함수를 입력 왼쪽 절반에 적용하는 단계, 및 제2 결과를 라운드 키에 믹싱하는 단계를 포함하며, 및 입력 왼쪽 절반 및 입력 오른쪽 절반이 제1의 복수의 라운드에 대한 초기 왼쪽 절반 및 초기 오른쪽 절반, 및 그 후에 각 라운드에 대해 즉각적으로 선행된 라운드에 대한 업데이트된 왼쪽 절반 및 업데이트된 오른쪽 절반인 단계를 더 갖추어 이루어진다.
본 발명의 예시에 따르면, 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템이 제공된다. 시스템은 하나 이상의 제1 입력 및 하나 이상의 제2 입력을 획득하도록; 적어도 하나의 전기 회로에 의해, 각 하나 이상의 제1 입력 및 하나 이상의 제2 입력에 대해 비트-믹서 연산을 수행하도록; 및 적어도 하나의 전기 회로에 의해, 수행하는 단계를 토대로 하나 이상의 라운드 키를 발생하도록 동작 가능한 하나 이상의 로직 회로를 구비하여 구성된다. 일부 예시에서, 하나 이상의 제1 입력은 복수의 동일한 크기의 키 재료 서브-블록으로 분리된 키 재료로부터 복수의 동일한 크기의 서브키를 구비하여 구성되고, 암호 키 및 하나 이상의 제2 입력은 랜덤 입력, 하나 이상의 이전 라운드 키, 라운드 넘버를 구비하여 구성된다. 일부 예시에서, 암호학적 연산이 암호, 해시 함수, 또는 스트림 발생기를 구비하여 구성된다. 일부 예시에서, 비트-믹서 연산이 "XOR" 트리, 대입-치환 네트워크, 또는 더블-믹스 페이스텔 네트워크, 또는 "RAX" 구성을 구비하여 구성된다.
앞의 일반적인 설명 및 앞으로의 상세한 설명 모두 단지 예시일 뿐이며, 청구된 바와 같이, 본 발명을 제한하지 않는다는 것이 이해될 것이다.
첨부된 도면은 본 발명에 통합되어 본 발명의 일부를 구성하며, 본 발명의 내용을 설명하고 설명과 함께 본 발명의 원리를 설명하는 역할을 한다.
도 1은 본 발명의 실시예에 따른 시스템의 도식이다;
도 2는 도 1의 시스템에 대응할 수 있는 상이한 예시에서의 시스템의 도식이다;
도 3은 실시예에 따른, 보안 메모리 트랜잭션 유닛의 도식이다;
도 4는 실시예에 따른, 메모리 위치에 저장된 정보의 데이터 구조를 나타낸다;
도 5는 다양한 실시예에 따른, DMFN의 "하프 키" 변형의 제1 라운드를 나타낸다;
도 6은 다양한 실시예에 따른 "풀-크기 키"를 갖는, 또 다른 DMFN 변형의 제1 라운드를 나타낸다;
도 7은 다양한 실시예에 따른 대입-치환 네트워크의 제1 라운드를 나타낸다.
도 8a 내지 도 8c는 도 7에서 이용될 수 있는 각 S-box의 3개의 구성 요소를 나타낸다;
도 9는 도 7에서 이용될 수 있는 또 다른 S-box 1개의 구성 요소를 나타낸다;
도 10은 다양한 실시예에 따른, "서브키" 선택 레이어와 함께 XOR 연산의 2진 트리를 나타낸다; 및
도 11은 실시예에 따른 방법에서 다양한 연산을 포함하는 플로어차트를 나타낸다.
이제 본 발명의 실시예를 상세히 참조할 것이며, 그 예가 첨부된 도면에 나타내어져 있다. 가능하다면, 동일하거나 비슷한 부분을 언급하는 도면 전체에 걸쳐 동일한 참조 번호가 이용될 것이다. 이하의 설명에서, 본 발명의 일부를 형성하고, 본 발명이 실시될 수 있는 특정 실시예의 방법에 의해 보여지는 첨부된 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있도록 충분히 상세하게 설명되어 있으며, 다른 실시예가 활용될 수 있고, 본 발명의 범위를 벗어나지 않고 변경이 이루어질 수 있음이 이해될 것이다. 따라서, 다음의 설명은 단지 예시적인 것이다.
많은 정보 보안 애플리케이션에서, 입력 값을 철저하게 혼합하는 고성능, 고정 크기 입력 및 출력 함수가 필요하다. 이러한 함수는 비트-믹서(bit-mixer)라고 불리며, 예를 들면, 입력의 어떤 단순한 변경으로 인해 출력 비트의 평균의 반이 변경되는, 입력 값과 통계적으로 상관이 없는 출력 값을 생성한다. 또한, 비트-믹서는 키를 활용해서 행위(behavior)를 변화(alter)시킨다. 키가 비밀일 때, 비트-믹서의 행위는 관찰자(observer)가 예측할 수 없다.
성능 및 전력 소비가 내장형 애플리케이션(embedded application)에서 고려되지만, 고급 VLSI(very-large-scale integration) 기술은 향상된 보안을 위해 설계자에게 회로 크기와 교환(trade)하는 능력을 제공한다. 다른 용도가 가능하지만, 애플리케이션이 하나 또는 양쪽의 입력 및 출력 인터페이스(interface)가 설계의 내부에 있어서, 아래에서 논의될 관찰자로부터 숨겨진다. 이러한 경우, 일반화된 엄격한 쇄도 기준(avalanche criterion)을 초과하는 암호학적 요구 사항은 제거하지 않으면 최소화된다. 특히, 주요 잔여 공격 표면(primary remaining attack surface)은 응답 시간, 전자기 복사 및 전력 소비 변동에서의 변형을 포함하는, 회로의 부 채널 방사(emanation)를 통해 노출된 데이터-의존적인 정보가 된다.
비밀 키를 이용하는 블록 암호는, 라운드라고 하는 변형 단계의 반복을 수행함으로써, 평문(plaintext)이라고 하는 데이터 블록을 암호문 블록으로 암호화한다. 암호 키로부터 파생된 라운드 키는 변형에 영향을 준다. 암호의 보안 및 속도는 어떻게 라운드 키가 발생되었는지에 따라 좌우된다.
아래에서 설명된 바와 같이, 대형 키 재료(large key material)에 의해 영향을 받은, 비트-믹서, 즉 비선형 복합 함수(nonlinear complex function)를 채택함으로써 비상관이된 라운드 키를 발생하기 위한 방법 및 시스템이 제공된다. 전자 장치에서 구현될 때, 이러한 라운드-키 발생기는 현재 알고리즘 보다 빠르고, 익스플로잇이 가능한 부 채널 유출(leakage)이 거의 없거나 전혀 없기 때문에, 보안이 향상된다. 이는 전력 소비를 줄이면서, 더 빠르고 안전한 새로운 암호를 초래한다.
개시된 발명은 고도의 비선형, 매우 복잡한 알고리즘, 비트-믹서를 채택함으로써, 블록 암호용으로 발생된 라운드-키의 품질을 향상시키며, 이는 전자 하드웨어에서 가장 잘 구현된다. 그것은 발생 속도, 전력 이용, 암호의 보안을 향상시킨다. (예를 들면 항공기의 보드 컴퓨터(board computer)에서 채택된) 내장형 시스템에서 그것을 이용하는 것은 낮은 비용이 든다. 그것은 회로의 크기를 실질적으로 증가시키지 않지만, 전반적인 전력 이용을 줄인다. 배치된 시스템은 더 느린 전자 구성 요소(electronic component)를 이용하여, 비용을 더욱 절감하고, 컴퓨팅 시스템의 에너지 및 전력을 줄일 수 있다. 연산 속도 및 보안 역시 향상된다. 영향을 받은 시스템은 항공기 컴퓨터의 보안 서브시스템(subsystem), 군사 및 우주 프로그램, 기업 네트워크, 개인 또는 랩톱(laptop) 컴퓨터, 스마트 모바일 장치, 심지어 보안 통신 네트워크까지 포함한다. 고성능 컴퓨터, 보안 마이크로프로세서, 보안 전자 장치 또는 보안 소프트웨어의 제조사는 언제나 그들 제품의 품질, 속도, 보안, 및 전력 이용을 향상시키고 싶어한다. 개시된 방법 및 시스템은 기내(in-flight) 컴퓨터, 군사 및 우주 프로그램, 기업 네트워크, 개인 및 랩톱 컴퓨터, 스마트 모바일 장치, 심지어 보안 통신 네트워크를 포함하는 컴퓨팅 시스템의 전력 이용, 성능 및 보안을 향상시킨다.
본 발명의 예시에 따라서, 라운드-키(키 스케줄)는 (그것에 의해 수정되는) 모든 반복 보안 암호 "내부" 안에 있고, 변화되지 않는 암호를 위한 메인 키(main key)로부터 파생된다. 비트 믹서의 입력의 일부분은 (원래 키(original key) 또는 이전 라운드 키(들)) 비밀이지만, 입력이 현재 라운드 수(round number)와 같이, 공개 정보(public information)를 보유(contain)할 수도 있다. 비트-믹서는 종래의 키 발생기에서와같이, 비밀 또는 공개될 수 있는 추가 키 재료를 이용한다. 공개 키 재료는 또한 하드-코딩(hard-code)될 수 있고, 그렇지 않으면 종래의 키 발생기에서와같이 고정될 수 있다. 개시된 방법 및 시스템을 이용함으로써, 라운드 키 발생기에 이용된 알고리즘 기반의 비트-믹서는 모든 반복 암호 내부에 이용될 수 있고, 이는 (병렬 전자 하드웨어에서) 더 빠른 연산, 더 낮은 전력 및 에너지 요구, 보통의 회로 크기(moderate circuit size), 라운드 키 사이에서의 통계적인 상관을 제거함으로써 향상된 보안, 및 전자 하드웨어 구현의 사이드 채널 유출을 축소(reduce)함으로써 향상된 보안을 제공할 수 있다. 비트-믹서에 의해 이용된 키 재료는 "서브키(subkey)"라고 하는, 동일한 크기의 덩어리(chuck)로 분리(divide)된다. 비트-믹서는 임의의 길이의 고도로 비상관된 라운드-키를 생성하고, 이는 확장 가능한(scalable), 즉, 모든 블록 크기의 암호에 적용되는(applicable) 키-스케줄 알고리즘을 만든다.
라운드-키 발생에서 이용된 비트-믹서의 입력은 암호의 비밀 키를 포함하고, 라운드 카운터(round counter) 및 이전의 라운드-키 중 적어도 하나를 포함할 수 있다. 라운드 카운터는 실제 암호가 128 라운드 이상 쓰지 않기 때문에, 짧다(4...7 비트). 카운터는 비트를 셔플링(shuffling) 및 되풀이함으로써, 동일한 길이로 확장(expand) 될 수 있고, 그들의 일부분은 인버트(invert)될 수 있다. 일실시예의 방법에 의해, 키-스케줄 알고리즘은 비트-믹서의 입력과 같은 확장된 카운터를 이용할 수 있고, 암호 키는 비트-믹서의 키 재료(의 일부분)이다. 가장 단순한 경우는 비트-믹서의 제1 서브키가 암호 키일 때이다. 다른 서브키는 (a) 일정하게 유지될수 있고 또는 (b) 단순한 알고리즘에 의해 암호 키로부터 파생될 수 있다. 또 다른 실시예는 비트-믹서의 입력과 같이 암호의 비밀키를 포함하고, 확장된 카운터가 비트-믹서의 제1 서브키이다. 다른 서브키는 (a) 일정하게 유지되고, 또는 (b) 간단한 알고리즘에 의해 암호키로부터 파생된다. 계속해서 키-스케줄 알고리즘의 다른 실시예는 비트 믹서의 입력을 제공하기 위해 확장된 카운터 및 비트간 (bitwise) XOR(exclusive-OR) 암호 키를 포함한다. 위의 예시의 대안적인 변형(variant) 및 조합은 유사한 보안 및 속도 이점과 함께 이용될 수 있다. 확장된 카운터 및 암호키가 XOR 될 때(위의 3번째 예시), 확장 과정에서 어떤 카운터 비트(counter bit)도 인버트할 필요가 없다: 암호 키의 1bit와의 XOR은 실제로 대응하는 카운터 비트를 인버트한다.
비트-믹서는 많은 양의 키 재료를 이용한다. 디지털 메모리 또는 레지스터에 저장될 때, 키 재료는 암호의 개인화(personalization)를 허용한다(키 재료에 따라, 다른 암호가 정의된다). 다른 대안은 비트-믹서의 서브키를 하드코딩 하는 것이다. 이는 키 스케줄을 더 빠르게 하지만, 결과적인 암호는 또한 고정되고, 개인화 될 수 없다. 실제로 가장 일반적인 경우는: 암호화된 데이터가 알 수 없는 단체(unknown entity)로 송신하거나, 또는 그들로부터 수신받을 때, 암호는 개인화 될 수 없다.
임의의 개시된 키 스케줄 메커니즘(mechanism)도 존재하는 임의의 블록 암호의 키 스케줄을 직접적으로 대체(replace)할 수 있다. 결과적으로, 많은 수의 새로운 암호는 정의될 수 있고, 이는 원래 버전보다 하드웨어 구현에서 더 빠르고 안전하다. 공개된 키 스케줄을 이용해서 향상될 수 있는 암호 중 일부는 Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, 3DES, Skipjack, Safer+/++, IDEA, SIMON, SPECK, Present, PRINT, 등 을 포함하지만 이에 국한되지는 않는다.
일반적으로 비트-믹스하는 것을 (확장 또는 압축(compression)을 제공하기 위해서 필요한 바와 같이) XOR 함수 또는 K-투(to)-1 S-Box를 통해 입력은 패딩(pad)될 수 있고 또는 출력이 폴딩(fold)될 수 있는 경우 임의의 블록 크기를 갖는 축소된 라운드 암호에 의해 수행되는 것으로 생각할 수도 있다. 실제로 다른 구성이 있지만, 본 발명의 실시예에 따른 비트-믹서의 속성(property)은 다음을 포함한다: 모든 입력 비트는 모든 출력 비트에 영향을 준다; 입력에서의 단순한 변경은 출력의 평균의 반을 변경하게 한다; 입력에서의 단순한 변경은 예를 들면 표준 통계 테스트가 대응하는 출력 순서(output sequence)를 랜덤하게 받아들이는 것과 같이, 입력 또는 입력의 변경 패턴에 대한 명백한 상관 없이 출력 값을 산출(yield)한다; 키는 키에 대해 액세스 없이 관찰자에 대해 예측할 수 없는 행위를 만들기 위해 채택된다; 그리고 입력 및 출력의 고정된 길이는 독립적이고 임의적으로 선택될 수 있다. "단순한 변경"은 비트 절반 미만이 동시에 변경되거나 심지어 십여 개미만의 명령어를 이용하여 소프트웨어 기반의 변형으로부터 초래된 것일 수 있다. 위의 두 번째 속성은 엄격한 쇄도 기준의 일반화이다. 반복 비트-믹서의 경우, 엄격한 쇄도 기준을 만족하는 출력 값을 발생하기 위해 필요한 라운드의 수를 결정할 수 있는데, 이는 즉, 단일 입력 비트를 변경한 후, 랜덤과 구별할 수 없다.
도 1을 참조하면, 시스템(100)은 본 발명의 실시예에 따라 나타내진다. 시스템은 많은 수의 각 구성 요소, 유닛, 또는 멀티플렉서, 레지스터, 산술 로직 유닛(arithmetic logic unit), 메모리, 마이크로프로세서 및 그 밖의 유사한 것 중 적어도 일부와 유사한 것 중 하나 이상을 포함할 수 있다. 시스템은 많은 수의 상이한 애플리케이션을 위해 설계될 수 있고, 기내 컴퓨터, 군사 및 우주 프로그램, 기업 네트워크, 개인 및 랩톱 컴퓨터, 스마트 모바일 장치와 같이, 공격에 민감한(susceptible) 메모리를 포함하거나, 또는 이러한 메모리에 결합된 시스템에 특정한 적용성(particular applicability)을 가질 수 있다. 보여지는 바와 같이, 예를 들면, 시스템은 초기화(initiate)(예를 들어, 구성)되도록 동작 가능한(operable) 요청기(102;requestor)로 지칭되는 하나 이상의 구성 요소를 포함할 수 있거나, 그렇지 않으면 하나 이상의 메모리(104)와의 (때때로 동작(operation)으로 지칭되는) 읽기 및/또는 쓰기 트랜잭션(transaction)을 요구하며, 이는 몇몇 예에서 하나 이상의 버스 상에서 발생할 수 있다.
실시예에 따라서, 시스템(100)은 요청기(102) 및 메모리(104) 사이의 데이터 전송을 암호화 및 복호화하도록 구성된 또는 동작 가능한 SMTU(106;secure memory transaction unit)와 같이 지칭되는 구성 요소를 하나 이상 더 포함할 수 있고, 메모리와의 읽기 또는 쓰기 트랜잭션 전부 아니더라도 적어도 일부에서 이용될 수 있다. 그리고 아래에서 설명한 바와 같이, 모든 예시에서 그런 것은 아니겠지만 일부 예시에서, SMTU는 또한, 메모리의 내용(content)을 인증(authenticate)하도록 구성되거나 작동할 수 있다. 다양한 예시에서, SMTU 설계는 (내장 또는 외장) 메모리의 유형 및 위치가 SMTU에서 "알려지지 않을(unknown)" 수 있다는 점에서 메모리에 구속받지 않는(memory agnostic)다.
일부 예시에서, SMTU(106)는 매우 높은 가능성을 가지며, 메모리(104)에서 모든 위치에 대해 상이한 암호화를 제공할 수 있다. SMTU는 메모리 내용의 암호화 및/또는 인증을 위해 병렬화 가능 암호 구성(parallelizable cipher construction)을 이용할 수 있다. 일부 예시에서, 다른 암호화 및 인증에는 그렇지 않지만 하나에 대해서 병렬화 가능 암호 구성을 이용하고, SMTU는 여기에 제공된 비트-믹서 라운드 키를 이용함으로써 수정된, AES(Advanced Encryption Standard) 암호의 표준 작동 모드(standard operation mode)의 조합과 같이, 다른 암호화 및 인증을 위해 임의의 다수의 다른 암호를 이용할 수 있다. 암호화된 데이터(때때로 암호문으로 지칭됨)와 함께 메모리 위치에 저장될 수 있는, 메모리 위치의 적어도 윈도우 내부에서 각각의 메모리 위치에 저장되는 평문(plaintext) 데이터(때때로 간단히 평문 또는 데이터로 지칭됨)의 각 양(예를 들면, 16바이트)은 고유한 암호화로 암호화고, 데이터 버젼 값 및 데이터 인증 태그로 태그 될 수 있다.
일부 예시에서, 데이터 버전 값은 현재 컴퓨팅 세션(current computing session)과 같이 발생되는 암호화된 쓰기 동작(write operation)의 수를 가리키는 GWC(global write counter)로부터 파생될 수 있다. 다른 예시에서, 데이터 버전 값은 다중 컴퓨팅 세션, 타임스탬프(time stamp) 또는 그 밖의 유사한 것에 걸쳐 쓰기 동작의 수를 이용해서 파생될 수 있다. 또 다른 예시에서, 데이터 버전 값은 클럭에서부터 파생될 수 있다.
일부 예시에서, GWC는 보안 동작의 모든 세션의 처음에 리셋(reset)될 수 있다. GWC 값은 깨끗한(in-the-clear) 상태로 저장되거나 또는 유저 데이터(user data)로 암호화되며, 및 키 발생의 일부분으로 이용되기 전에 비밀 마스크 값(secret mask value)에 의해 수정되거나 또는 다른 방법으로 암호화 또는 데이터 인증을 다양화(diversifying)할 수 있다. GWC 값은 임의의 쓰기 동작 이전에 GWC(예를 들면, 48-비트 값)와 유사한 크기로 증분 값(increment value)만큼 증분 될 수 있다. 이러한 증분 값은 2진 표현에서 연속적인(consecutive) 1 또는 0이 많지 않은 큰 홀수 값일 수 있다. 적절한 증분 값의 예시는 π,е,√2,√3, 황금 비율 등의 비트 순서의 세그먼트(segment)이다. 이러한 값을 이용하면 연속적인 GWC 값이 평균적으로, 비트의 절반 정도 다를 수 있다. 홀수 GWC 증분 값을 이용하면, GWC가 10년 이상의 연속적인 동작을 위해 일반적인 애플리케이션에서 랩 어라운드(wrap around)하지 않도록 할 수 있다.
메모리 위치에서의 데이터 인증 태그는 그 메모리 위치의 암호문에 따라 좌우되고, 적은 유효한 데이터 인증 태그를 발생할 수도, 데이터 인증 태그로부터 암호문에 관한 어떠한 정보도 추론(deduce)할 수 없다는 점에서 암호학적으로 안전한 방식으로 이루어질 수 있다. 일부 예시에서, 데이터 인증 태그는 메세지 인증 코드, 암호문 인증을 위해 이용된 정보, 및 데이터 위변조(tempering and forgery)를 탐지(detect)하기 위해 이용된 정보의 짧은 조각(short piece)으로서 제공(serve)될 수 있다. 어떠한 변경의 탐지를 허용함으로써, 암호문의 진위성(authenticity) 뿐만 아니라 무결성 모두 보호할 수 있다. 일부 예시에서, 태그는 블록 암호 즉, 키에 의해 명시된 변형을 수행하기 위해 암호문 상에서 동작하는 알고리즘에 의해 구현될 수 있다.
메모리 위치에서 암호문 및 데이터 인증 태그는 적어도 데이터 버전 값 및 메모리 위치의 어드레스(address)를 토대로 하는 키를 가지며 생성될 수 있다. 데이터 버전 값은 메모리 위치에서 각 쓰기 동작으로 업데이트 될 수 있고, 암호문과 같이 생성되는 키는 그렇게 함으로써 각 기록 동작뿐만 아니라, 메모리 위치에서 메모리 위치로 변경할 수 있다. 데이터 인증 태그는 암호문 블록을 생성한 키와 다른 제2 키를 가지며 생성될 수 있지만; 그 키와 마찬가지로, 제2 키도 각 쓰기 동작 및 메모리 위치에서 메모리 위치로 바뀔 수 있다. 일부 예시에서, 보안 모드 값과 같은, 비밀 랜덤의 숫자 및 다른 값은 암호화 및 인증을 더 다양화시키기 위해서 통합된다. 여기서 설명되는 바와 같이, 랜덤이란 용어는 랜덤 또는 의사 랜덤(pseudorandom)(예를 들면, 진정한 랜덤 시드(true random seed)로부터 시작하여, 결정론적 알고리즘(deterministic algorithm)에 의해 반복적으로 발생된 숫자)으로 광범위하게 이용될 수 있다.
요청기(102)가 메모리로부터 데이터를 요청한 읽기 트랜잭션 동안, SMTI는 메모리로부터 이전에 암호화된 데이터(암호문)를 읽을 수 있다. 암호화된 데이터는 위조 사인(sign)에 반하는 SMTU에 의해 복호화되고 인증될 수 있다; 그리고 SMTU는 데이터가 유효한 것으로 간주되는 경우에 요청기로 복호화된 데이터(평문)를 반환(return)할 수 있다. 쓰기 트랜잭션에서, SMTU는 타깃 위치에서 데이터를 읽은 뒤, 읽기 액세스와 같이 데이터를 복호화 및 인증할 수 있다. 일단 작업이 완료되면, SMTU는 위치에서 읽은 데이터와 병합(merge)도록 데이터를 읽고, 암호화된 뒤, 다시 메모리에 쓰도록 야기할 수 있다. 여기서 이용된, 병합은 변경된, 다시 읽은 데이터의 일부분을 대체(replace)하는 것을 의미한다. 원하는 경우, 암호문의 전체 블록이 쓰이게 될 때 다른 접근법이 이용될 수 있다. 이러한 경우에, 병합 동작은 대체될 수 있으며, 보안을 속도와 교환하여, 초기 쓰기 동작은 생략될 수 있다.
다양한 예시에서, 시스템(100)에서 유닛 사이에 또는 유닛 내에서 전송되는 읽혀진 데이터에 대해 보안을 제공하는 방법은 메모리(104)를 일련의 어드레서블(addressable) 위치(메모리는 어드레서블 메모리)로 분리하는 단계, 각각 어드레스를 갖는 단계, 각각 암호화된 데이터, 데이터 버전 값(때때로 버전 정보 또는 간단히 버전 값이라 지칭됨) 및 데이터 인증 태그를 저장하는 단계를 포함할 수 있다. 여기서 설명되는 바와 같이, 메모리의 어드레서블 위치는 때때로 가변적(varyingly)이지만 동일하게 어드레스, 위치 또는 어드레서블 위치와 같이 지칭될 수 있다. 암호화된 데이터에 대해 고유한 암호화 키, 및 데이터 인증 태그에 대해 상이한, 고유한 인증 키는 각 어드레스에 대해 이용될 수 있다. 이러한 키는 적에게 예측 불가능할 수 있고, 이용되기 전, 이용되는 동안 및 그 후에도 비밀을 유지할 수 있다.
각 읽기 동작에서, 데이터 버전 값, 데이터 인증 태그 및 암호문의 블록은 각 어드레스를 갖는 메모리 위치에서 읽혀질 수 있다. 생성된 암호문 및 데이터 인증 태그를 갖는 각각의 키는 데이터 버전 값 및 각 어드레스를 이용하여 재발생(regenerate)될 수 있다. 암호문은 대응하는 평문을 생성하기 위해 그 키와 함께 복호화된다. 또한, 데이터 인증 태그를 위한 제2 키를 이용하여, 암호문이 무결성 및 진위성을 검증(verify)하기 위해 데이터 인증 태그와 비교될 수 있다.
각 쓰기 동작에서, 새로운 평문 데이터는 메모리(104)에서 메모리 위치로 쓰여질 수 있다. 일부 예시에서, 각 쓰기 동작은 위치에서 읽혀진 데이터 및 SMTU(106)에 의해 유효한 것으로 인증된 데이터에 의해 선행될 수 있다. 메모리 위치에 데이터를 쓰는 프로세스(process)는 새로운 메모리 쓰기 동작의 수를 반영하도록 데이터 버전 값을 업데이트하는 SMTU를 포함할 수 있다. SMTU는 업데이트된 데이터 버전 값 및 메모리 위치 각각의 어드레스 (및 랜덤의 숫자 및/또는 일부 다른 값)을 이용하여 새 데이터의 또 다른 암호화를 이용할 수 있고, SMTU는 암호화된 새 데이터에 좌우되는 새 데이터 인증 태그를 발생할 수 있다.
본 발명의 실시예의 또 다른 측면에서, SMTU(106)는 병렬화 가능한 암호 구성을 구현하도록 구성되거나 작동 가능할 수 있다. 이러한 암호는 비가역 블록 암호(non-invertible block cipher)일 수 있고 복수의 병렬, 상이한 믹싱 함수 및 조합 함수를 포함할 수 있다. 아래에서 더욱 상세하게 설명되는 바와 같이, 이러한 믹싱 함수는 페이스텔 네트워크(Feistel network), DMFN(double-mix Feistel networks), 대입-치환 네트워크(substitution-permutation network), 비트간 XOR 연산의 2진 트리(binary tree)(때때로 간단히 XOR 트리(XOR tree)라고 지칭됨), 감소된 라운드 수로 동작되는 일부 표준 암호, 및 그밖에 유사한 것과 같이, 상이한 유형의 함수의 동일하거나 상이한 조합을 포함할 수 있다. 실시예의 암호는 암호화 및 인증을 위해 이용될 수 있고, 각각의 회로(들)의 많아야 하나의 클럭 사이클에서 하나 이상의 로직 회로에서 구현될 수 있다. 가역 비트-믹서가 암호와 같이 이용될 때, 복호화는 전자 코드북(ECB;electronic codebook) 또는 암호-블록 체인(CBC;cipher-block chaining)과 같이 특정 암호 모델에서 가능하지 않지만, 스트림 암호 모드(stream cipher mode)는 가능하다.
실시예의 이러한 또 다른 측면에 따르면, SMTU(106)는 데이터의 n 비트 입력 블록을 수신하고, 암호에 의해, 데이터의 입력 블록으로부터 m 비트 출력 블록을 생성한다. 블록 크기 n은 임의적이며, 다양한 예시에서 64, 128 또는 256일 수 있고; 및 m 과 n은 동일한 수 또는 동일하지 않은 수일 수 있다. 데이터의 출력 블록의 생성은 복수의 업데이트된 데이터의 블록을 생성하기 위해, 복수의 병렬, 상이한 믹싱 함수를 데이터의 입력 블록에 적용하도록 구성되거나 동작 가능한 SMTU를 포함할 수 있으며, 각 믹싱 함수는 복수의 업데이트된 데이터의 블록 중 각각의 하나에 데이터의 입력 블록을 맵핑(map)하도록 구성되거나 작동 가능할 수 있다. SMTU는 데이터의 출력 블록을 생성하기 위해 복수의 업데이트된 블록의 데이터를 조합 함수에 결합(combine)할 수 있다.
일부 실시예에서, 믹싱 함수는 가역일 수 있다. 위에서 지시된 바와 같이, 믹싱 함수는 상이할 수 있고, 많은 수의 상이한 유형의 믹싱 함수 중 임의의 하나일 수 있다. 예를 들어, 믹싱 함수 중 적어도 일부분은 각각 상이한 라운드 함수를 포함하는 각각의 페이스텔 네트워크에 의해 구현될 수 있다. 추가적으로 또는 대안적으로, 예를 들면, 믹싱 함수의 최소 일부는 각각, 상이한 제1 및 제2 라운드 함수를 포함하는 각각의 DMFN에 의해 구현될 수 있다. 추가적으로 또는 대안적으로, 예를 들면, 믹싱 함수의 최소 일부는 각각, 상이한 대입-치환 레이어(layer) 또는 변형 레이어를 포함하는 각각의 대입-치환 네트워크에 의해 구현될 수 있다. 더 추가적으로 또는 대안적으로, 예를 들면 믹싱 함수 중 최소 일부는 각각 XOR 트리에 의해 구현될 수 있고, 복수의 서브-키는 데이터의 입력 블록으로부터 생성되고, 각각 2진 트리를 이용하여 믹싱될 수 있다.
일부 실시예에서, 함수의 조합은, 데이터의 출력 블록의 각 비트가 데이터의 입력 블록의 하나 이상의 비트로부터 좌우될 수 있고, 데이터의 블록의 모든 비트가 데이터의 출력 블록의 하나 이상의 블록에 영향을 줄 수 있다. 더욱 특정한 예시에서, 조합 함수는 비트간 XOR 연산 또는 또 다른 적절한, 아마도 더욱 복잡한 연산에 의해 구현될 수 있다.
일부 실시예에서, 데이터의 m-비트 출력 블록에서 m은 비트-믹서 함수의 n-비트 입력 블록에서 n과 같이 동일한 수일 수 있다. 다른 예시에서, m은 n과 상이할 수 있다. 이러한 비트 믹서 함수는, 블록 길이라고 하는, 동일한 길이 입력 및 출력을 갖는 비트-믹서 함수로부터 구성될 수 있다. 예를 들면, m>n일 때, 비트 믹서의 블록 크기가 m 일 수 있고, 데이터의 업데이트된 블록(비트-믹서의 출력)은 조각으로 분할될 수 있으며, 이후 데이터의 출력 블록을 생성하기 위해 결합 될 수 있다. 또 다른 예시에서, m<n일 때, 비트-믹서의 블록 크기는 n일 수 있다. 이러한 경우, 데이터의 입력 블록의 길이는 하나 이상의 비트가 인버트될 수 있는 특정 비트를 반복하고, 각각의 데이터의 입력 블록 중에서 이렇게 반복된 비트를, 아마도 각 믹싱 함수에 대해 상이하게, 분산시킴으로써 n까지 증가될 수 있다. 비트-믹서는 데이터의 확장된-길이의 입력 블록 상에서 작동할 수 있다.
일부 예시에서, 암호가 인증을 위해 이용되는 경우, 데이터의 출력 블록은 데이터 인증 태그일 수 있고, SMTU(106)는 메모리(104)에서 메모리 위치의 각각의 어드레스에 따라 좌우되는 데이터 인증 태그를 생성하도록 구성되거나 또는 작동 가능할 수 있다. 하나의 예시에서 m=208 및 n=80인 경우, 암호에 대한 데이터의 입력 블록은 32-비트 어드레스 및 48-비트 데이터 버전 값과 연결된 128-비트 암호문일 수 있고, 데이터 인증 태그는 최종적인 80비트로부터 형성될 수 있다. SMTU는 암호문의 블록 및 데이터 인증 태그를 각각의 어드레스를 갖는 메모리 위치에서 읽기 위해 읽기 동작을 수행할 수 있도록 더 구성되거나 또는 작동 가능할 수 있다. 이러한 예시에서, 보호된 메모리는 데이터의 기록을 보유하는 복수의 메모리 위치의 윈도우를 포함할 수 있고, 이 각각은 메모리 위치에서 메모리 위치까지 변경하는 각각의 데이터 인증 태그를 갖는 평문의 암호화된 블록을 저장한다.
일부 예시에서 암호가 암호화를 위해 이용될 경우, 데이터의 출력 블록은 멀티-비트 패드 값(multi-bit pad value)이고, SMTU(106)는 메모리(104)에서 메모리 위치의 각각의 어드레스를 토대로 패드 값을 생성하기 위해 구성되거나 또는 작동 가능할 수 있다. 하나의 예시에서 n=m=128일 경우, 패드는 32-비트 어드레스로 이루어진, 48-비트 데이터 버전 값 및 구성 데이터에 연결된 데이터의 입력 블록으로부터 컴퓨팅 될 수 있다. SMTU는 암호문의 블록을 생성하기 위해 XOR 연산에 의해 패드 값을 평문의 블록과 결합할 수 있다. 이전 예시와 유사하게, SMTU는 각각의 어드레스를 갖는 메모리 위치에서 암호문의 블록을 읽기 위해 읽기 동작을 수행할 수 있도록 더 구성되거나 또는 작동 가능할 수 있다. 또한, 메모리는 메모리 위치의 윈도우를 포함할 수 있고, 이 각각은 메모리 위치에서 메모리 위치까지 변경하는 복수의 암호문의 각각의 블록을 저장한다.
도 2는 일부 예시에서 도 1의 시스템(100)에 대응할 수 있는 시스템(200)의 하나의 예시를 나타낸다. 시스템은 임의의 다수의 상이한 접근법에 따라 구성될 수 있다. 일부 예시에서, 시스템은 SoC(system-on-chip) 접근법에 따라 구성될 수 있고, 이 경우 시스템의 구성 요소는 단일 집적 회로(IC)로 통합된다. 더욱 상세한 예시에서, 시스템은 IBM 회사의 코어커넥트 마이크로프로세서 버스-구조(CoreConnect microprocessor bus-architecture)에 따라서 구성될 수 있다. 이곳에서 설명된 바와 같이, 시스템의 다양한 구성 요소 또는 시스템의 구성 요소의 함수는 Soc 또는 코어커넥트와 같은 특정 기술의 명명법(nomenclature)으로 설명될 수 있다. 특정 명명법은 단지 도식의 목적을 위해 이용되는 것이며, 본 발명의 실시예의 범위를 제한하고자 이용되는 것이 아님을 이해할 수 있어야 한다.
도 1의 시스템(100)과 유사하게, 도 2의 시스템(200)은 적어도 일부분이 로직 회로로 구성될 수 있는 많은 수의 구성 요소를 포함할 수 있다. 보여지는 바와 같이, 예를 들어, 시스템은 마이크로프로세서 코어(202;microprocessor core), 메모리(204), 및 SMTU(206)를 포함할 수 있고, 이는 일부 실시예에서 도 1의 요청기(102), 메모리(104) 및 SMTU(106)와 같이 기능 하거나 대응할 수 있다. 보여지지 않음에도 불구하고, 시스템이 때때로 요청기와 같이 기능 하도록 구성되거나 또는 작동할 수 있는 다른 구성요소를 포함할 수 있고, 이는 또한, 초기화하도록 구성된 또는 동작 가능한 구성 요소일 수 있고, 또는 그렇지 않으면 메모리에 읽기 및/또는 쓰기 트랜잭션을 요청할 수 있다.
도 2에서 보여지는 바와 같이, 마이크로프로세서 코어(202)는 직접 또는 간접적으로 메모리(204), SMTU(206) 및 다른 구성요소와 함께 제1 버스(208)에 결합(couple)될 수 있고, 제1 버스의 이용은 중재 회로(210;arbitration circuit)에 의해 할당될 수 있다. 하나의 예시에서, 마이크로프로세서 코어는 IBM 회사의 상업적으로 이용 가능한 PowerPC 코어일 수 있고, 제1 버스는 PLB(processor local bus)일 수 있다. 적절한 메모리의 예시는 eDRAM(212;embedded dynamic access memory), DDR DRAM(214; double data rate synchronous (또는 다른) dynamic random access memory) 또는 이와 유사한 것을 포함하고, 이의 일부는 각각의 메모리 제어 또는 인터페이스(216 및 218)에 의해 제1 버스에 결합 될 수 있다. 일부 예시에서 시스템이 단일 집적 회로(220)에 통합된 다양한 구성 요소를 갖는 SoC와 같이 구성되는 경우, 메모리는 시스템의 다른 구성 요소로부터 오프-칩(off-chip)(외장)일 수 있고, 온-칩(on-chip)(내장) 메모리 제어에 의해 제1 버스에 결합 될 수 있다. 이는 예를 들어, 도 2의 DDR DRAM에 의해 나타내진다.
제1 버스(208)에 결합된 구성 요소는 제1 버스 및 또 다른, 보안 프로세서(226;security processor) 및 아마도 때때로 요청기와 같은 기능을 할 수 있는 구성 요소와 같이, 부가적인 구성 요소와 결합 될 수 있는 트랜잭션 버스와 같은 제2 버스(224) 사이의 버스 브릿지(222;bus bridge)를 또한, 포함할 수 있다. 일부 예시에서, 제1 버스는 고성능 구성 요소가 결합된 고속 버스(high-speed bus)일 수 있고, 제2 버스는 저속 버스(low-speed bus)일 수 있다. 이러한 예시에서, 버스 브릿지는 저성능 구성 요소로부터 고성능 구성 요소를 구분하기 위해 제공할 수 있고, 이는 시스템 성능을 향상시킬 수 있다.
SMTU(206)는 마이크로프로세서 코어(202)와 같은 요청기 및 eDRAM(212) 또는 DDR DRAM(214)의 둘 중의 하나 또는 양쪽 모두 사이에서 데이터 전송을 암호화 및 복호화하도록 구성되거나 또는 작동 가능할 수 있다. SMTU는 마이크로프로세서 코어 또는 또 다른 요청기에 의해 초기화된 읽기 및 쓰기 요청(read and wirte request)을 제공하는 종속 유닛(slave unit)과 같은 역할을 할 수 있고, SMTU는 특정 메모리 어드레스로부터 요청된 바와 같이 읽기 또는 쓰기를 초기화할 수 있다. SMTU는 그럼으로써 이러한 트랜잭션을 위해 높은 레벨의 보안을 제공할 수 있다.
SMTU(206)는 시스템(200)에서 임의의 많은 수의 상이한 방법으로 결합 될 수 있다. 보여지는 바와 같이, 예를 들면, SMTU는 3개의 양방향 외장 데이터 인터페이스(bidirectional external data interface)에 의해 버스 브릿지(222)에 결합 될 수 있고, 또 다른 양방향 외장 데이터 인터페이스에 의해 보안 프로세서(226)에 결합 될 수도 있다. 즉, SMTU는 마이크로프로세서-코어 인터페이스(228), 제2-버스 인터페이스(230) 및 메모리 인터페이스(232)에 의해 버스 브릿지에 결합 될 수 있고, 명령-및-제어 인터페이스(234;command-and-control interface)에 의해 보안 프로세서에 연결될 수도 있다.
마이크로프로세서-코어 인터페이스(228)는 메모리(204)로부터 데이터를 읽기 및/또는 메모리로 데이터를 쓰기 위한 요청과 같이 제어 정보를 수신하기 위해 제1 버스(208)를 통해 마이크로프로세서 코어(202)에 결합 될 수 있다. 제2-버스 인터페이스(230)는 제2 버스(224)에 결합 될 수 있고 메모리 인터페이스(232)는 제1 버스를 통해 메모리에 결합 될 수 있다. 버스 브릿지(222)는 마이크로프로세서-코어 인터페이스 및 메모리 인터페이스에 걸친 트랜잭션이 오직 제1 버스로 및 그로부터 라우팅(route)되도록, 제2-버스 인터페이스에 걸친 트랜잭션이 제2 버스로 및 그로부터 라우팅되도록 할 수 있다. 명령-및-제어 인터페이스(234)는 후에, 구분된 인터페이스를 통해 SMTU에 명령 및 제어 정보를 제공하기 위해 보안 프로세서(226)를 가능하게 할 수 있다.
도 3은 도 2의 SMTU(206)의 다양한 구성 요소를 나타내는 도면이고, 적어도 일부는 다시 로직 회로로 구성될 수 있다. 보여지는 바와 같이, 제어 레지스터(304;control register) 및 상태 레지스터(306;status register)를 갖는 명령 제어 유닛(302)을, SMTU는 포함할 수 있고, 명령-및-제어 인터페이스에 결합될 수 있다. SMTU는 마이크로프로세서-코어 인터페이스(228), 제2-버스 인터페이스(230) 및 메모리 인터페이스(232)의 이용을 할당하기 위해 결합된 및 구성된 또는 작동할 수 있는 트랜잭션 중재자(308;transaction arbiter)를 포함할 수 있다. 마이크로로프로세서-코어 인터페이스상의 FIFO 메모리(310;first-in first-out)는 중재자로 트랜잭션을 버퍼(buffer)하기 위해 구성되거나 또는 작동 가능할 수 있다.
중재자(308)는 트랜잭션 조절 유닛(312;transaction control unit) 및 어드레스 변환 유닛(314;address translation unit)에 또한 결합될 수 있고, 트랜잭션 조절 유닛은 차례로 키 발생기(318), 암호화 유닛(320) 및 데이터-해싱 유닛(322;data-hashing unit)을 제공하는 암호 기법 유닛(316;cryptography unit)에 결합될 수 있다. 암호 기법 유닛은 암호화 유닛 및 데이터-해싱 유닛을 위한 키를 발생하기 위해 키 발생기에 랜덤 숫자(random number)를 제공하도록 구성된 또는 동작 가능한 KMS(key material store)에 결합될 수 있다. 암호화 유닛은 SMTU(206)를 불러오는 읽기 또는 쓰기 요청에 응답하여 적절한 메모리(204)와 함께 모든 읽기 및 쓰기 동작을 위해 데이터를 암호화 및 복호화하도록 구성된 또는 작동 가능할 수 있다. 데이터-해싱 유닛은 메모리로부터 읽힌 및 메모리로 쓰인 암호화된 데이터(암호문)를 위한 데이터 인증 태그를 생성하도록 구성된 또는 작동 가능할 수 있다. 일부 예시에서, 암호화 유닛 또는 데이터-해싱 유닛의 둘 중 하나 또는 양쪽이 병렬화 가능한 암호 구성을 채택할 수 있다. 일부 예시에서 다른 것이 아닌 오직 하나가 병렬화 가능한 암호 구성을 이용하는 경우, 다른 것은 많은 수의 다른 구성을 이용할 수 있다. 예를 들면, 암호화 유닛은 암호화 및 복호화 동작을 위한 AES 암호를 채택하도록 구성되거나 또는 작동 가능할 수 있고, 또는 데이터-해싱 유닛이 이곳에서 제공되는 바와 같이 비트-믹서 라운드 키 발생을 이용함으로써 수정된 바와 같이, 입력된 해시 함수(keyed hash function)를 채택하도록 구성되거나 또는 작동 가능할 수 있다.
일부 예시에서, KMS(324)는 랜덤 숫자를 제공하도록 구성된 또는 동작 가능한 하나 이상의 레지스터 어레이(326;register array)(가끔 KMS 메모리와 같이 지칭됨)를 포함할 수 있다. KMS에 의해 제공된 랜덤 숫자를 필요로 하는 SMTU 때문에, 고품질 랜덤 숫자의 이용이 종종 바람직하다. 일부 예시에서, KMS는 16K-비트 랜덤 숫자를 제공하는 4개의 64x64 레지스터를 포함할 수 있다. 연산 이전에, KMS 유닛은 64K-비트 랜덤 숫자와 함께 초기화될 수 있고, 이는 일부 실시예에서 SMTU의 외부에서 발생될 수 있다.
일부 예시에서, 진정한 랜덤 숫자를 이용하는 대신에, KMS(324)는 512x16 ROM과 같은 하나 이상의 온보드(onboard) 구성/엔트로피(entropy) ROM(328;read-only memory block)으로부터 초기화 될 수 있고, 그 중 3개는 ROM1, ROM2 및 ROM3으로 보여진다. 이러한 ROM은 시스템 설계(system design) 동안 발생된 랜덤 숫자를 보유할 수 있다. 랜덤 숫자의 소스와 같이 ROM 구성(configuration ROM)을 이용하는 것은 발생된 키가 덜 랜덤하게 할 수 있고, 그러므로 변조-방지 매케니즘(anti-tampering machenism)의 강도(strength)가 떨어진다. 그러나 랜덤 숫자 소스와 같이 ROM을 이용하는 경우 바람직할 수 있는 애플리케이션이 있다. 하나의 애플리케이션은 시간이 중요한 애플리케이션으로, 랜덤 숫자의 발생과 연관된 긴 초기화 지연이 허용되지 않는다. 다른 유형은 시스템 리셋 또는 상이한 시스템에 대해 복구될 수 있는 이미지를 따라 복구할 수 있는 암호화된 데이터 이미지를 발생하기 위해 필요한 애플리케이션이다.
실시예에 따른 시스템(200) 및 SMTU(206)의 다양한 특징에 관한 추가 정보는 아래에서 찾을 수 있으며, '871 출원 전술한, 관련 및 통합될 수 있다.
도 4는 본 발명의 일부 실시예에 따라서, 메모리(104 및 204)에 저장된 암호화된 기록을 위한 데이터 구조(data structure)를 나타낸다. 보여지는 바와 같이, 암호화된 데이터는 32-비트 블록에 저장될 수 있고, 이 각각은 16바이트의 암호화된 페이로드(payload)(암호문), 및 16바이트의 보안 데이터를 포함할 수 있다. 보안 데이터는 6바이트의 데이터 버전 값(나타내진 예시에서, 쓰기 카운터 값), 및 10바이트의 인증 태그를 포함할 수 있다. 6-바이트 쓰기 카운터는 어드레스와 상관 없이, 메모리 위치가 쓰여질 때마다 증분될 수 있는 필드(field)이다. 결과적으로, 증분된 값은 각 어드레스마다 고유하다. 메모리 위치에 대한 암호학적 연산(cryptographic operation) 및 인증 키는 그것의 어드레스, 쓰기 카운터 값, 및 랜덤 숫자로부터 파생될 수 있다. 다른 예시에서, 많거나 더 적은 필드가 암호화에 이용될 수 있다. 모든 16바이트의 암호화된 데이터는 인증 태그 및 쓰기 카운터 값을 위한 추가적인 16바이트를 필요로 하기 때문에, 메모리 위치의 각 윈도우의 효과적인 데이터 저장 장치는 그것의 물리적 크기의 반일 수 있다. 하지만, 다른 예시에서, 더 크거나 더 작은 메모리 및 상이한 데이터와 태그 크기도 구현될 수 있다.
도 5는 본 발명의 실시예에 따라 DMFN(500)의 하나의 라운드를 나타낸다. DMFN에서, 블록 크기는 비트-믹서를 압축 또는 확장하는 데 필요한대로 입력 비트를 되풀이하거나 또는 출력 비트를 폴딩함으로써, 입력 및 출력 크기 중 더 큰 것일 수 있다. 구체적으로 데이터는 2개의 반쪽 L 및 R으로 처리된다. 모든 라운드, i라운드에서, 2개의 함수 F 및 G가 Li 및 Ri로부터 Li +l 및 Ri +l을 컴퓨팅한다. 제일 첫번째 입력 L0 및 R0는 비트-믹서의 입력으로 설정되는 반면 제일 마지막 값 Lr, Rr은 출력을 구성한다. Li +l이 F 및 Ri의 출력의 비트간 XOR 연산을 이용하여 발생되지만, 라운드키 ki는 G의 출력과 함께 비트간 XOR 연산을 이용하여 혼합(mix-in)되어 다음과 같이 Ri +l을 발생한다. DMFN에 대해, 업데이트된 왼쪽 반(Li +l) 및 업데이트된 오른쪽 반(Ri +l)은 각 라운드 i = 0, 1, ..., r-1 마다 계산될 수 있다.
Figure 112017111242216-pat00001
Figure 112017111242216-pat00002
앞에서, 제1 입력 L0 및 R0는 비트-믹서의 입력을 설정하지만 마지막 값 Lr, Rr은 출력을 구성하고, F 및 G는 제1 및 제2 라운드 함수를 나타내며, ki는 라운드 키를 나타낸다. 라운드 r-1에서의 출력은 데이터의 업데이트된 블록(Lr,Rr)일 수 있다.
실시예의 페이스텔 네트워크 및/또는 DMFN의 경우에서, 라운드 함수(F)는 비선형 함수일 수 있다. 함수는 가역일 수도 있고 또는 아닐 수도 있지만, 역(inverse)은 제1 함수가 가역인 경우에 (일방향(one-way) 함수) (필요하진 않지만) 컴퓨팅하기 어려울 수 있다. 도식의 보안은, 라운드키 ki, 및, 비선형이고 역을 갖지 않거나 또는 컴퓨팅하기 어려운 하나를 갖는, F에 대한 필요조건에 의존(rely)할 수 있다. 함수는 일부 예시에서 라운드(예를 들면, Fi)에 따라 좌우될 수 있지만, 다른 예시에서, 제1 함수는 라운드에 독립적일 수 있다.
적절한 라운드 함수(F)의 하나의 예시가 입력 왼쪽 절반의 시프트(shift)된 버전 각각의 쌍에 대한 복수의 로직 NAND 연산, 및 NAND 연산의 각각의 출력에 대한 로직 XOR을 포함한다. 3개의 NAND 연산의 내용에서, 제1 함수는 Li의 시프트된 제1 쌍에 대한 제1 NAND 연산; Li의 시프트된 제2 쌍에 대한 제2 NAND 연산; Li의 시프트된 제3 쌍에 대한 제3 NAND 연산; 및 제1, 제2 및 제3 NAND 연산의 각각의 출력에 대한 XOR 연산을 포함할 수 있다. 하드웨어 구현에 있어서, 이러한 시프트 또는 회전은 단순히 배선으로 구현될 수 있기 때문에 시간을 소비하지 않을 수 있다. 따라서, 제1 함수는 오직 2개의 XOR 게이트 지연, 뿐만 아니라 최적화된 셀 라이브러리(cell library)를 이용하면, 4개의 NAND2 게이트 지연에 해당하는, (AND 또는 NOR 게이트가 동일하게 작동함에도 불구하고) 2개의 입력 NAND 게이트의 지연의 시간이 필요할 수 있다. 이곳에서 이용되는 바와 같이, NOR 게이트는 Not-OR, Negative-OR, 또는 Negated-OR 로직 함수를 구현한다.
DMFN의 경우에서, 제2 라운드 함수(G)는 가역일 수 있지만, 그것의 역은 쉽게 컴퓨팅할 필요는 없다. 제1 함수(F)와 유사하게, 제2 함수는 일부 예시에서 라운드(예를 들면, Gi)에 따라 좌우되지만, 다른 예시에서, 제2 함수는 라운드에 독립적일 수 있다.
일부 예시에서, 비선형 대입 박스 (s-box)의 레이어는 제2 함수에 대해 이용될 수 있고, 이는 그것의 맵핑(mapping)을 비선형으로 만들 수 있다. 다른 예시에서, 제2 함수는 왼쪽 절반의 순환 시프트 또는 회전을 수행할 수 있고, 이는 함께 믹스되며 업데이트된 오른쪽 절반을 계산하기 위해 라운드 키를 가질 수 있다. 더욱 구체적인 예시에서, 제2 함수는 3개의 왼쪽 절반의 순환-시프트된 버전을 생성할 수 있고, 동일한 자리(position)에 있는 각 3개의 비트는 함께 XOR 될 수 있고 이 자리에서 최종적으로, 업데이트된 오른쪽 절반의 비트를 생성하기 위해 라운드 키의 비트를 가질 수 있다. 이와 관련하여, 블록 길이 = 2n(n은 양수)일 때, 데이터의 3개의 순환 시프트된 버전을 XOR하는 것으로 가역 함수를 정의한다. 제1 함수와 유사하게, 하드웨어 구현예서, 이러한 시프트 또는 회전은 적당한 배선으로 단순하게 구현되기 때문에 시간을 소비하지 않을 수 있다. 따라서, 제2 함수 및 믹싱 연산은 오직 2개의 XOR 게이트 지연 시간이 필요하고, 최적화된 셀 라이브러리를 갖는 각각은 1.5에서 3개의 NAND2(2-입력 NAND)게이트 지연과 동일한 시간을 가질 수 있다.
가역 비트-믹서가 필요하게 되면, G(또는 모든 Gi)는 반드시 가역 함수여야 한다. G의 역은 비트-믹서의 역이 필요하게 되지 않는 한 쉽게 컴퓨팅 될 필요가 없다. 따라서 전형적인 비선형, 가역 S-Box 레이어보다 빠를 수 있다. 이러한 함수 G의 예시는 주어진 순환 거리(d1, d2)로부터의 2개의 입력 비트를 갖는 G의 각 입력 비트를 XOR하는 것이 된다. 블록 길이의 2 제곱에서, 출력 비트가 주어진 순환 거리로부터 3개의 입력 비트의 XOR과 같이 컴퓨팅 될 때, 가역 함수가 획득된다. 하드웨어 구현에 대해, d1 및 d2가 크지 않아서 필수적인 라우팅이 지나치게 길지 않으면, 함수 G를 컴퓨팅하는 것 및 라운드 키를 XOR 하는 것은 최소한의 시간이 걸린다.
비선형 비트-믹서가 필요하게 되면, F는 반드시 비선형 함수여아 한다. F는 그것의 역이 반대 방향에서, 비트-믹서의 역에 대해 필요하지 않기 때문에 가역일 필요가 없다. 일실시예에서, 다음과 같이, 2진 다항식의 갈로이스 필드(Galois field)에서 비선형인 빠르고, 충분히 복잡한 구성이 이용된다:
1. 순환 거리 d3 및 d4로부터 Li의 NAND 2개의 시프트된 버전
2. 순환 거리 d5 및 d6에서 Li의 NOR 2개의 다른 시프트된 버전
3. 순환거리 d7 및 d8에서 Li의 NAND 2개의 또 다른 시프트된 버전
4.위의 3개의 블록의 비트를 Li로 XOR한다.
하드웨어 구현에서, 시프트는 필수적으로 자유롭고 약간의 시간을 소비한다. 따라서, F 및 G는 경로 길이가 거의 동일하며, 중요한 타이밍 경로의 균형을 맞추기 위해 적당한 양의 수작업만으로 부 채널 유출을 감소시킨다. 모든 라운드가 아니더라도 F 및 G는 특정 부분에서 상이할 수 있고, 또는 구현시 모든 라운드에서 동일하게 유지할 수 있다.
가역 함수 G를 가짐으로써, DMFN은 가역이다: Li는 아래에서 위로, 즉, 라운드 키 ki 및 G의 역을 알면, Ri +l로부터 Li가 컴퓨팅될 수 있다. Li를 가지면서, F(Li)가 컴퓨팅될 수 있고, 이는 Ri를 산출하기 위해 Li +l에 XOR된다. 가역성(invertibility)은 종종 유용한 속성이다. 이는 모든 가능한 출력 값을 발생시키며, 어떠한 2개의 상이한 입력 값도 동일한 출력을 제공하지 않는다.
이전에 설명하고 도 5에서 보여진 바와 같이, 절반-길이 서브키 ki는 각 라운드에서 G와 함께 혼합된다. 도 6에서 보여지는 바와 같이, 예를 들어 다른 절반-길이 서브키가 Ri와 혼합되면, 전체 블록 길이의 서브키는 뚜렷한 믹싱 개선(mixing improvement)이 발견되지 않는다. 그럼에도 불구하고, 구성은 상이하고, 상이한 애플리케이션을 위해 적절하다.
도 6을 참조하면, 이는 다른 실시예에 따른 DMFN(600)의 하나의 라운드를 나타낸다. DMFN에서, Li +l 대신에 Ri +l을 변화시키기 위해 라운드 키 ki를 적용함으로써, 2개의 절반을 계산하는 작업이 균형을 이룰 수 있다. 즉, 2개의 절반은 동시에 이용가능하게 될 수 있다. 그러나 Ri는 제1 함수(F)가 적용되는 동안 이용되지 않을 수 있다. 따라서 도 6에 보여지는 바와 같이, Ri는 균형을 뒤집지 않고 또 다른 라운드 키 hi와 믹스 될 수 있다. Ri +l 및 Li +l 양쪽 모두 키 재료에 의해 영향을 받을 수 있다. 도 6에서 보여진 DMFN는 유사한 복잡성(complexity)의 함수가 제1 함수(F) 및 제2 함수(G)를 위해 선택되었을 때 전반적으로 더 나은 믹싱 속성을 달성할 수 있다. 또 다른 예시에서, 제2 함수가 제1 함수보다 더 느리게 계산되는 경우, ki의 혼합은 생략될 수 있으며, 이는 믹싱 속성에 있어서 도 5에서 보여진 DMFN과 유사한 도식을 초래할 수 있지만, 살짝 더 빠르다. DMFN에 대해, 업데이트된 왼쪽 절반(Li +l) 및 업데이트된 오른쪽 절반(Ri +l)은 각 라운드 I = 0, 1, ..., r-1에 대해 계산될 수 있다;
Figure 112017111242216-pat00003
Figure 112017111242216-pat00004
앞에서, 제1 입력 L0 및 R0는 비트-믹서의 입력으로 설정되지만 마지막 값 Lr, Rr은 출력을 구성하고, F 및 G는 제1 및 제2 라운드 함수를 나타내며, ki 및 hi라운드 키를 나타낸다. 라운드 r-1에서의 출력은 비트믹서, 데이터의 업데이트된 블록의 출력(Lr,Rr)일 수 있다.
잘 알려진 대입-치환 네트워크를 토대로 비트-믹서의 가역 버전이 또한 이용될 수 있다. 페이스텔 네트워크 및 DMFN과 유사하게, 실시예의 대입-치환 네트워크는 반복해서 (또는 라운드에서) 수행될 수 있다. 예를 들어, 라운드(i)에 대해, 데이터의 입력 블록(Di)이 라운드 키(Ki)와 함께 믹스(예를 들면 XOR)될 수 있고, 그 결과는 데이터의 업데이트된 블록(Di+l)을 생성하기 위해, 복수의 S-box(Si)를 포함하는 치환 레이어, 및 치환(Pi)을 포함하는 변형 레이어를 통해 믹스된다. 다른 예시에서, 데이터의 입력 블록은 데이터의 업데이트된 블록을 생성하기 위해 대입 및 비선형 변형 레이어를 통해 첫 번째로 믹스되며, 이는 이후에 라운드 키(ki)와 믹스될 수 있다. 각각의 예시에서, S-box 및 치환의 둘 중 하나 또는 양쪽 모두가 라운드에 좌우될 수 있고 도는 독립적일 수 있다. 일부 예시에서, S-box 중 적어도 2개에서 라운드의 적어도 하나에 대해 다를 수 있다. 일실시예에서, 데이터의 초기 블록(D0)은 적어도 하나의 다른 서브셋(subset)(B0)를 또한 포함하는 데이터의 더 큰 블록의 서브셋일 수 있다. 라운드 키(ki)는 믹스된 라운드 키를 생성하기 위해 다른 서브셋(B0)과 믹스(예를 들면 XOR)될 수 있고, 이는 라운드 동안 데이터의 입력 블록(Di)과 믹스될 수 있다. 또는 다른 예시에서, 라운드 키는 또 다른 서브셋과 믹스될 수 있고, 최종적인 믹스된 라운드 키는 대입 및 선형 변형 레이어 후에 데이터의 업데이트된 블록(Di+l)과 믹스될 수 있다.
도 7은 본 발명의 실시예에 따른 대입-치환 네트워크(700)의 3개의 라운드를 나타낸다. 잘 알려진 대입-치환 네트워크를 토대로 비트-믹서의 가역 버전이 이용될 수 있다. 압축 및 확대 변형에 대해, 블록 크기는 원하는 입력 및 출력 블록 크기 중 더 큰 크기로 선택된다. 입력 크기가 더 작을 때, 이용되지 않은 입력 비트는 일정하게 유지될 수 있고 또는 출력 크기와 일치될 때까지 반복된 입력 비트가 이용된다. 필요한 출력 사이즈가 더 작을 때, 출력 비트를 폐기(discard)하거나 또는 최종 출력을 생성하기 위해 특정 비트를 XOR 또는 다른 적절한 함수를 통해 같이 폴드시킬 수 있다. 대입-치환(SP) 네트워크는 통상적으로 다음 3단계를 여러 번 반복해서 도 7에 따라 구축된다.
1. 입력은 일련의 비선형 함수, S-Box에 의해 변형된다
2. 최종 비트는 재라우팅/치환된다
3. 치환된 데이터는 라운드 키/서브키와 XOR된다
주의: 제1 및 마지막 라운드는 종종 단순화되고, 하나 또는 두 개의 단계를 생략한다
S-Box가 가역일 때, SP 네트워크는 가역이다. S-Box가 비선형일 때, SP 네트워크는 비선형이다. SP 네트워크는 라운드의 수가 그것의 너비에 좌우되는 철저한 믹싱을 위해 필요할 때 임의적으로 넓어질 수 있다. 하드웨어 구현에서, 작은 S-Box는 더 빠른 비트-믹서를 산출하는 경향이 있다. 가장 작은 실질적인 S-Box, 3개의 입력 비트 및 3개의 입력 비트를 갖는 하나는 Lars Knudsen, Gregor Leander, Axel Poschmann, Matthew J. B. Robshaw에 의해 설명된 바와 같이, PRINT암호에서 구현된다. PRINT암호: IC-인쇄를 위한 블록 암호. 암호학적 하드웨어 및 내장형 시스템, 16-32쪽, 컴퓨터 사이언스 강의 노트 시리즈의 볼륨 6225 CHES 2010. 이러한 3x3 S-Box의 3개의 출력 비트가 다음과 같이 정의된다:
F0 = A B ' C' + A' ( C + B )
F1 = A' B C + B ' (C' + A )
F2 = A B C ' + C ( B' + A')
도 8a 내지 8c는 이러한 S-Box를 구현하기 위해 이용될 수 있는 각각의 작고 빠른 회로를 나타내고, 참조 번호(800)는 F0를 컴퓨팅하기 위한 회로를 보여주고, 참조 번호(820)는 F1를 컴퓨팅하기 위한 회로를 보여주며, 및 참조 번호(840)는 F2를 컴퓨팅하기 위한 회로를 보여준다. 각 출력 비트에 대해 소수의 게이트만 필요로 한다.
유사하게, A. Bogdanov, L. R. Knudsen, G. Leander, C. Paar, A. Poschmann, M. J. B. Robshaw, Y. Seurin, C. Vikkelsoe에 의해 설명되는 바와 같이, PRESENT 암호. 암호학적 하드웨어 및 내장형 시스템 - CHES 2007. 450-466쪽, 컴퓨터 사이언스 강의 노트 시리즈의 볼륨 4727. 4x4 S-Box가 다음과 같이 구현된다:
F0 = A'B C' + A C D + A'B D ' + A B'C' + A C'D ';
F1 = A'B'C + B C'D + A B'C'D ' + A B C + B C D';
F2 = A B C' + A C'D + A'B' D ' + A'B C + A'B D ;
F3 = A'B D + A' C'D + A B D ' + A C'D ' + A B'C D + A'B'C D';
도 9는 4개의 출력 신호 중 하나를 구현하기 위해 이용될 수 있는 예시적인 회로 설계(900)를 보여준다. S-Box는 각 출력에 대해 약간 더 많은 게이트를 필요로 한다. 유사한 성능 및 믹싱 속성을 달성하는 다른 4x4 S-box 설계가 이용될 수 있다. 더 간단하고, 빠른 S-Box가 또한 구현될 수 있는데, 이는 전반적으로 동일한 믹싱 속성을 달성하기 위해 추가적인 라운드를 필요로 하며, 효과적으로 비트-믹서의 전반적인 성능을 감소시킨다.
적절한 치환이, PRINT암호, PRESENT 및 AES와 같은 암호에서 이용될 수 있고, 뿐만 아니라 SHA3와 같은 해시 함수에서도 이용될 수 있다. 위에 나열된 첫 번째의 2개의 암호에 의해 이용된 간단한 치환이 첫 소수의 라운드에서 입력 비트의 완전 분산(perfect dispersion)을 달성한다; 단일 입력 비트 변경에 의해 영향을 받은 비트는 상이한 S-box로 공급된다. 이러한 치환은, 입력 블록 크기가 b로 믹스되고 S-Box의 폭이 s일 때, 다음과 같이 정의된다;
Figure 112017111242216-pat00005
m x m 완전 S-Box는 단일 입력 비트 변경을 다음 라운드의 m 비트로 분배시킨다. 적절한 치환과 함께, 이러한 비트는 다음 라운드의 상이한 S-Box로 라우팅되어, 그 변경을 m2비트로 분배시킨다. r 라운드 후에, 입력에서 단일 비트 변경은 모든 비트가 영향받을 때 까지 mr 출력 비트에 영향을 준다. 단일 입력 비트 변경이 모든 출력 비트에 영향을 끼치는
Figure 112017111242216-pat00006
, 즉
Figure 112017111242216-pat00007
를 원한다. 자연적으로, 더 맣은 라운드는 더 철저한 믹싱을 달성한다.
PRINT암호 S-Box를 이용하는 SP 네트워크의 실시예에서, 입력 및 출력 폭은 255 비트로 설정된다. 완전한 믹싱을 달성하기 위해, 팔요한 라운드의 이론적 최소 수는
Figure 112017111242216-pat00008
이다. 1000개의 랜덤 키의 시험에 대한 통계적인 실험은 더 많은 라운드가 필요함을 나타낸다. 9개의 라운드는 통계학적으로 완전한 믹싱을 달성하기에 언제나 충분했다. 최악의 경우 필요에 따라, 단일 클락 사이클에서 9개의 라운드를 시행하는 것은 450㎒ 이상의 클럭 비율이 허용된다. PRESENT 암호 S-Box를 이용하는 SP 네트워크의 또 다른 실시예에서, 입력 및 출력 폭이 256 비트로 설정된다. 완전한 믹싱을 달성하기 위해, 필요한 라운드의 최소 수는
Figure 112017111242216-pat00009
이다. 1000개의 랜덤 키의 시험에 대한 통계적인 실험은 6개의 라운드가 통계적으로 완전한 믹싱을 달성하기 위해 충분하다는 것을 나타냈다. 심지어 6개의 라운드에서 최악의 경우, PRESENT 암호 S-Box를 이용하는 SP 네트워크는 PRINT 암호 S-Box를 활용하고 각 라운드마다 더욱 철저하게, 선형 함수로부터 더 멀리 혼합되는 것보다 3개 라운드 더 적게 필요로 한다. 라운드에서의 차이는 성능 향상을 가져오며, 단일 클럭 사이클에서 모든 6개의 라운드를 실행하면 클럭 비율이 500㎒ 이상으로 허용된다.
도 10은 다양한 실시예에 따른 XOR 트리(1000)를 나타낸다. XOR 트리를 이용하는 예시에 따라, 믹싱 함수는 비밀 랜덤 숫자(예를 들면, KMS(324)) 및 데이터의 입력 블록을 토대로 이루어진다. 이와 관련하여, 서브-키는, 이러한 비트가 하나(또는 대안적으로 0)의 2진 값을 갖는 것처럼, 데이터의 입력 블록에서 특정 비트의 자리에 대응하는 자리의 블록의 시퀸스(sequence)에서 비밀 랜덤 숫자의 블록일 수 있다. 그 후 서브-키는 XOR 트리를 이용하여 같이 믹스될 수 있다.
도 10에서 보여지는 바와 같이, XOR 트리(1000)는 데이터 병합 동작을 이행(carry out)하기 위해 구현될 수 있는 복수의 XOR 로직 게이트를 포함할 수 있다. 도 10에서, 각 로직 게이트는 일련의 게이트를 나타내며, 게이트가 동작하는 서브키의 각 비트에 대해 하나씩 존재한다.
비트-믹서를 토대로 한 XOR-트리에서, 입력은 다중의, 임의의 길이의, 연이은 비트의 비어있지 않은 세트, 비트 그룹을 형성하는 것으로 분할된다. 각 그룹으로부터 비트는 멀티플렉서를 이용하는 키 재료로부터 서브키를 선택하고, 이것의 출력은 마지막 비트-믹서 출력을 발생시키기 위해 같이 비트간 XOR된다. XOR 연산은 일반적으로 ASIC에서 2개의 입력 XOR 게이트를 이용하여 구현되지만, 다중-입력 게이트 또는 패리티 발생 회로(parity generation circuit)는 예를 들면, 넓은 검색 표(lookup table)을 제공하는 FPGA에서 타깃 기술에 따라 이용될 수 있다. 이러한 구성의 비트-믹서는 바로 쉽게 구현될 뿐만 아니라, 고성능, 저전력 소비, 향상된 보안, 및 최소 부 채널 공격 표면을 제공한다.
비트-믹서를 토대로 입력의 폭 및 XOR-트리의 출력의 폭은 독립적으로 선택할 수 있고, 확대 및 압축 함수는 각각 더 긴 출력 폭 또는 더 긴 입력 폭을 선택함으로써 발생(create)된다. 랜덤 키 재료를 가지면, 임의의 단일 입력 비트 변경이 랜덤 서브키로 출력을 변경시킨다. 따라서, 모든 출력 비트는 임의의 비트 변경에 의해 영향을 받는다. 더 나아가, 비트-믹서 구성이 주어지면, 다중 입력 비트 변경이 자체적으로 랜덤인 랜덤 서브키의 XOR된 집합으로 출력을 변경시킨다. 최종적으로, 비트-믹서를 토대로 한 XOR-트리는 위에서 논의된 각 원하는 속성을 충족시키고 이론적으로 완전한 믹싱을 보장한다.
일실시예에서, 회로는 ASIC에서 평가(evaluate)되며, 이는 서브키 선택에 대한 2-투-1 멀티플렉서 및 7개의 레벨의 XOR-트리를 구현하기 위한 2개의 입력 XOR 게이트를 활용하여 80-비트로부터 256-비트 출력으로 확장된다. 회로 내에서 게이트의 제한된 팬아웃(fanout)/로딩(loading)되는 경우에도, 비트-믹서 회로는 클럭 비율이 1.2㎓를 초과하는 시스템에서 단일 클럭 사이클에서 쉽게 작동할 수 있다.
XOR-트리 구성은 2진 갈로이스 필드에서 선형이고, 이는 오직 비트 선택 및 XOR 연산 때문이다. 이러한 구성에서 일부 4-방향 상관(4-way correlation)이 단순히 상관된 입력 값으로부터 컴퓨팅된 특정 출력 값에서 존재한다. 이러한 경우, 상관은 다음과 같이 나타난다. 적어도 2개의 입력 비트-그룹을 가정하면, 입력 비트-그룹 B의 하나에서 비트 b, 및 상이한 입력 비트-그룹 C에서 비트 c를 선택한다. b 상수를 제외한 그룹 B의 모든 비트를 홀딩(hold)할 경우, K0를 b가 로직 0일 때 선택된 서브키로 나타내고 K1을 b가 로직 1일 때 선택된 서브키로 나타낸다. 유사하게 L0 및 L1을 그룹 C의 다른 비트를 일정하게 홀딩하는 동안 c의 로직 값을 토대로 선택된 서브키로 나타낸다. 마지막으로, M을 입력이 일정하게 (0은 비트-그룹이 더이상 없을 때) 홀딩 되는 경우 다른 입력 비트-그룹에 의해 선택된 모든 서브키의 XOR로 나타낸다. b 및 c의 모든 가능한 2x2 값으로부터의 결과인 출력 값의 XOR은 0을 산출하고, "4-방향 상관"이라 한다.
Figure 112017111242216-pat00010
출력 값이 관찰될 수 없는 애플리케이션에서, 이러한 유형의 상관은 회로의 보안과 관련된 문제를 제기하지 않는다. 이러한 상관이 중요한 애플리케이션에 대해, 출력은: S-Box와 같은 병렬 수집 비선형 함수(parallel collection nonlinear function); 원래의 출력과 함께 XOR된 S-Box와 같이 비선형 함수의 수집의 출력;(마이크로프로세서 구현에 적합한) RAX(Rotate-Add-XOR) 구성과 같이 비선형 함수에 의해 더 프로세스 될 수 있다. 비선형 구성을 만들기 위한 또 다른 방법은 XOR-트리의 하나 이상의 레벨에서 XOR 연산을 도 9에서 보여진 것과 유사한 k-투(to)-1 비선형 S-box로 대체하는 것이다. 구현하기 쉽지만, 추가적으로 고르지 않은 회로 지연은 낮은 부 채널 유출을 위해 균형을 맞추는 수동 신호 전파를 필요로 할 수 있다. 적당한 수준의 노력으로, XOR-트리의 하나의 레벨을 S-Box로 대체하면 1.0㎓ 이상의 속도에서 단일 클럭 사이클 연산을 달성할 수 있다.
도 2 및 도 3에 돌아와서, 실시예에 따라서 메모리(204)에서 메모리 위치의 윈도우의 메모리 위치에서의 쓰기 연산이 각각 어드레스를 갖는 메모리 위치에서 데이터에 대한 요청을 발생하고, 제1 버스(208) 상에서 메모리(204)로 어드레스를 제공하는 마이크로프로세서 코어(202)를 포함할 수 있다. 물론 마이크로프로세서 코어로부터 어드레스를 수신하기보다, 어드레스가 DMA 컨트롤러(direct memory access)와 같이 일부 다른 요청기로부터 제공될 수 있다.
수신된 어드레스는 SMTU(206)로 제공될 수 있다. 일부 예시에서, 어드레스는 로직 어드레스일 수 있고, 어드레스 변환 유닛(314)에 의해 물리적 어드레스로 변환될 수도 있다. 어드레스는 트랜잭션 제어 유닛(312)을 통해 키 발생기(318)로 제공될 수 있고, 이는 기능적으로 3개의 키 발생기를 포함할 수 있고, 때때로 각각 키 W, C 및 D를 발생하도록 구성되거나 동작 가능한 키 발생기 W, C 및 D와 같이 지칭된다. 각 3개의 키 발생기는 또한 이전에 KMS(324)에서 저장되거나 또는 발생된 랜덤 숫자를 수신할 수 있다. 메모리 위치에 쓰기 카운터 값(예를 들면 데이터 버전 값), 데이터 인증 태그 및 암호문의 블록이 저장되며, 이러한 정보는 트랜잭션 제어 유닛에 제공될 수 있다. 일부 예시에서, 쓰기 카운트 값은 암호화될 수 있고, 이러한 암호화는 매우 단순할 수 있으며, 그것의 키는 보안의 실질적인 손실 없이, 미리 정의된 상수일 수 있다.
암호화 유닛(320) 또는 SMTU(206)의 또 다른 구성요소는 키 W를 이용하여 쓰기 카운터 값을 복호화할 수 있다. 일부 예시에서, 암호화 유닛은 키 C를 이용하여 암호문을 복호화할 수 있지만, 트랜잭션 제어 유닛은 암호문, 키 D 및 데이터 인증 태그를 토대로 암호문의 무결성을 검증하기 위해 데이터-해싱 유닛(322)를 채택할 수 있다. 암호문의 무결성이 검증되었다고 가정하면, 복호화된 암호문(이제 평문)은 메모리 위치에 수정(rewritten)될 수 있다. 반면에, 암호문 진위성이 검증되지 않은 경우 오류(error)를 알릴 수 있다.
오류가 발생한 경우에, 랜덤 오류 또는 가능한 데이터 변조가 일어났음을 나타내고, 트랜잭선 제어 유닛(312)은 이에 대응하여 임의의 다수의 상이한 조취를 수행할 수 있다. 예를 들어, 트랜잭션 제어 유닛은 시스템(200)이 (i) 모든 읽기 및 쓰기 요청의 프로세싱 중단하고, (ii) 최근 세션에서 암호화에 이용된 랜덤 숫자를 삭제하고, (iii) 키 발생 액티비티(activity)에 참여된 모든 레지스터를 플러싱(flush)하고, (iv) 메모리 윈도우의 내용을 모두 0으로 겹쳐 쓰도록 메모리 플러시를 트리거(trigger)하고, 또는 (v) 다른 조취를 취하도록 야기시킬 수 있다. 또 다른 예시에서, 트랜잭션 제어 유닛은 폴트 카운터(fault counter)를 유지할 수 있고, 이는 오류에 대응하여 증분될 수 있다. 이 접근법에서, 오류 수의 한계에 다다르면, 트랜잭션 제어 유닛이 임의의 하나 이상의 앞서 언급한 조치를 야기시킬 수 있다. 이러한 접근법은 랜덤 메모리 읽기 에러가 때때로 발생했을 경우 잡음 환경(noisy environment)에서 유용할 수 있다.
일부 예시에서, 메모리(204)에서 메모리 위치에서의 쓰기 연산은 위에서 설명된 바와 같이, 메모리 어드레스에 저장된 데이터가 인증되었음을 검증하기 위해, 메모리 위치에서 읽기 동작에 의해 선행될 수 있다. 사전 읽기(prior read)가 수행되는 경우, 읽기 동작이 데이터의 진위성을 확립(establish)하는 경우에만, 쓰기 동작이 발생한다. 일부 예시에서, 이후에, 쓰기 동작은 쓰여질 새 데이터를 복호화된 암호문(평문)과 함께 병합하도록 구성되거나 또는 동작 가능한 트랜잭션 제어 유닛(312)을 포함할 수 있다.
GWC를 증분시키도록 구성되거나 또는 동작 가능한 트랜잭션 제어 유닛(312)은 업데이트된 값을 키 발생기(318)의 각 키 발생기 C 및 D에 제공한다. 증분된 쓰기 카운터 값 및 메모리 위치의 어드레스를 이용하여, 키 발생기 C 및 D는 새로운 키 C 및 D를 발생하고, 키를 암호화 유닛(320) 및 데이터-해싱 유닛(322) 각각에 제공할 수 있다. 암호화 유닛은 새로운 암호문을 생성하기 위해 병합된 평문을 암호화하는 새로운 키 C를 이용할 수 있고, 데이터-해싱 유닛은 새로운 데이터 인증 태그를 생성하기 위해 재생성된 암호문 및 키 D를 이용할 수 있다. 키 W 및 증분된 GWC 값의 조합은 암호화된 쓰기 카운터 값을 제공하기 위해 이용될 수 있다. 최종적인 쓰기 카운터 값, 데이터 인증 태그 및 암호문은 후에 반환될 수 있고, 메모리 위치에 쓰기 될 수 있다.
도 11은 본 발명의 실시예에 따라서, 컴퓨터 시스템에서 보안을 제공하는 방법(1100)에서의 다양한 동작을 나타낸다. 보안은 암호학적 연산을 수행하는 암호에 대해 하나 이상의 라운드 키를 발생시킴으로써 제공될 수 있다. 이곳에서 이용되는 바와 같이 암호학적 연산은 하나 이상의 암호학적 함수를 포함한다. 참조 번호(1105)에서 방법은 하나 이상의 제1 입력 및 하나 이상의 제2 입력을 획득함으로써 시작한다. 일부 예시에서, 하나 이상의 제1 입력은 암호 키 또는 복수의 동일한 크기의 키 재료 서브-블록으로 분리되는 키 재료로부터 복수의 동일한 크기의 서브키를 구비하여 구성할 수 있고, 하나 이상의 제2 입력은 랜덤하게 발생된 고정된 입력, 하나 이상의 이전 라운드 키 또는 라운드 넘버를 구비하여 구성될 수 있다. 일부 예시에서, 하나 이상의 제1 입력은 암호학적 함수, 하드코딩된 키 재료를 갖는 비트-믹서, 컴퓨터 입력, 또는 그들의 조합을 적용함으로써 더 짧은 키로부터 발생될 수 있다. 일부 예시에서, 암호학적 함수는 암호, 해시 함수, 또는 스트림 발생기를 구비하여 구성할 수 있다. 일부 예시에서 재료는 비밀이고, 통신 당사자(communicating party) 간에 공유된다. 키 재료는 하드코딩될 수 있다. 이는 랜덤하게 발생되고 저장될 수 있다. 일부 예시에서, 암호 키는 키 재료의 일부분과 함께 암호의 일부분에 대해 XOR 연산에 의해 하드코딩된 키 재료와 결합된다.
참조번호(1100)에서, 방법은, 적어도 하나의 전자 회로에서, 각 하나 이상의 제1 입력 및 제2 입력에 대해 비트-믹서 연산을 수행함으로써 계속된다. 일부 예시에서, 비트-믹서 연산은 XOR-트리, 대입-치환 네트워크, 또는 더블-믹스(double-mix) 페이스텔 네트워크, 또는 RAX 구성을 포함한다. 일부 예시에서, XOR 트리는 복수의 NAND(Negative-AND) 게이트 또는 XOR 트리의 제1 레이어처럼 복수의 멀티플렉서를 구비하여 구성된다. 비트-믹서 연산은 모든 입력 비트가 모든 출력 비트에 영향을 끼치고; 입력 비트의 변경이, 평균적으로, 출력 비트의 절반을 변경하도록 야기시키고; 입력 비트의 변경이 입력 비트 또는 입력의 변경 패턴에 대한 상관 없이 출력 값을 산출하는 속성을 가질 수 있도록 선택되며, 키는 키를 모르는 관찰자에 대해 그들의 행동을 예측 불가능하게 만들도록 채택되며, 및 입력 및 출력 값의 고정된 길이가 독립적이고 임의적으로 선택될 수 있다.
비트-믹서 연산이 XOR 트리를 포함하는 경우의 예시에서, 방법은 NAND 로직 연산이 하나 이상의 제1 입력의 각 제1 입력상에서 하나 이상의 제2 입력의 각 제2 입력과 함께, 복수의 제1 입력을 XOR 로직 연산으로 입력하도록 선택하기 위해 수행하는 단계를 더 갖추어 이루어지고, XOR 트리의 출력은 입력과 같이 이용된 복수의 제1 입력에 관해 출력을 생성한다.
비트-믹서 연산이 대입-치환 네트워크를 포함하는 예시에서, 방법은 비-선형 대입 동작을 각 복수의 제1 입력상에서 수행하는 단계; 치환 동작을 비-선형 대입 동작의 각 출력상에서 수행하는 단계; 비트간 XOR 동작을 하나 또는 제1 입력 또는 제2 입력의 하나와 함께 치환 동작의 각 출력상에서 수행하는 단계를 더 갖추어 이루어진다.
비트-믹서 연산이 더블-믹스 페이스텔 네트워크를 포함하는 예시에서, 각 하나 이상의 제1 입력은 초기 왼쪽 절반 및 초기 오른쪽 절반으로 분리되고, 방법은 업데이트된 왼쪽 절반 및 업데이트된 오른쪽 절반을 복수의 라운드의 각 라운드에 대해 계산하는 단계, 여기서 업데이트된 왼쪽 절반을 계산하는 단계는 제1 결과를 생성하기 위해 제1 함수를 입력 왼쪽 절반에 적용하는 단계이고, 제1 결과를 입력 오른쪽 절반과 믹싱하는 단계, 여기서 업데이트된 오른쪽 절반을 계산하는 단계는 제2 결과를 생성하기 위해 제2 함수를 입력 왼쪽 절반에 적용하는 단계이고, 제2 결과를 라운드키와 믹싱하는 단계; 및 여기서 입력 왼쪽 절반 및 입력 오른쪽 절반은 제1의 복수의 라운드에 대한 초기 왼쪽 절반 및 초기 오른쪽 절반이고, 각 라운드 후에 즉각적으로 선행된 라운드에 대해 업데이트된 왼쪽 절반 및 업데이트된 오른쪽 절반이다.
참조 번호(1115)에서, 방법은 적어도 하나의 전자 회로에 의해, 수행하는 단계를 토대로 한 하나 이상의 라운드 키를 발생하도록 진행한다. 일부 예시에서, 발생시키는 단계는 수행의 출력상에서 스크램블링 연산(scrambling operation)을 수행하는 단계를 더 갖추어 이루어진다. 일부 예시에서, 방법은 하나 이상의 라운드 키와 함께 데이터의 블록을 생성하는 단계를 더 갖추어 이루어진다. 일부 예시에서, 방법은 암호학적 암호(cryptographic cipher)를 위해 하나 이상의 라운드 키를 수행하는 단계 및 발생시키는 단계를 반복하는 단계를 더 갖추어 이루어진다.
일부 예시에서, 암호문의 블록은 복수의 서브-키를 이용하여 생성될 수 있다. 암호문은 기존의 암호 C를 수정함으로써 더 빠르고 안전한 암호 D를 생성할 수 있다. 이 예시에서, ("라운드"에서 작업하는) 반복적인 암호 C가 선택된다. 반복적인 암호 C는, 제한을 두는 것은 아니지만, DES, TDES, AES, 등 일 수 있다. 비트-믹서 B는 C의 라운드 키의 크기와 동일한 출력 크기로 선택된다. 비트-믹서 B는, 제한을 두는 것은 아니지만, 위에서 논의된 바와 같이, XOR-트리, SP 네트워크, DMF네트워크 일 수 있다. 고정된 키 재료 M은 비트믹서 B에 대해 선택되고, M은 단순한 비-랜덤 패턴을 피하면서, 임의적으로 선택될 수 있다. M은 랜덤하게 발생되며, 및 D를 이용할, 모든 통신 당사자 간에 분배될 수 있다. C는 이전의 라운드 키의 일부의 (암호 키가 제1 입력인) 입력의 라운드-키 발생기 함수 F를 갖는다. F는 C를 D로 변형하기 위해 B로 대체된다. B의 입력 크기는 그것의 출력 크기(압축 함수) 보다 더 클 수 있다. 이러한 경우, 추가 비트(extra bit)는 라운드 카운터의 값, 및 아마도 다중 이전 라운드-키 및 아마도 암호 키로 채워질 수 있다.
암호학적 함수가 수학적으로 안전하다고 해도, 그것의 물리적인 구현은 부 채널을 통해 데이터 또는 키에 대해 유출 정보가 될 수 있다. 부 채널은 응답 시간 변동(time variation), 전자기 방출, 전력 소비의 변동, 심지어 장치 핀(device pin)의 다양한 전압 레벨을 포함한다. 위에서 설명된 함수가 오직 간단한 조합의 로직 게이트를 이용하는 하드웨어에서 구현될 수 있기 때문에, 부 채널 유출은 최소화된다. 더욱이, 회로는 일반적으로 플립-플롭(filp-flop), 래치(latch) 및 다른 유형의 저장 장치와 같은 부 채널 유출의 주요 원인인 구조가 필요하지 않으므로, 회로가 부 채널 분석에 덜 민감하다.
아직 존재할 수 있는 어떠한 유출은 또한 수동 레이아웃 기술을 이용하여 이미 매우 대칭적인 내부 신호 경로의 균형을 맞추기 위해 마스크(mask) 될 수 있고, 그럼으로써 많은 동시 스위칭 이벤트가 거의 정확하게 동일한 시간에 발생한다. 이러한 균형 맞추기 단계(balancing step)는 필수적이진 않은데, 이는 32㎚ SOI 타깃 기술의 ASIC에 대해 발명자에 의해 실시된 실험에서 과도 현상(transient)을 스위칭(switch)하는 것이 피코 초(picosecond) 이내였기 때문이다. 따라서, 탬플릿 공격(tamplate attack)을 개시(mount)하기 위한 노력으로 이러한 과도 현상으로부터 유출된 정보를 기록/분석하려면 가까운 미래에서 이용 가능한 것보다 빠른, T㎐ 범위에서의 샘플링 비율을 갖는 데이터 획득 시스템(data acquisition system)이 필요하다. DPA 부 채널 분석 단말기를 이용하면, 전력 트레이스(power trace) 및 변하는 입력 비트로 부터 주어진 출력 비트 사이의 상관과 같은 익스플로잇 가능한 부 채널 유출은 측정되지 않는다.
키 재료로부터 선택된 서브키는 비트를 공유할 수 있는 반면에, 어느 정도의 제한 사항이 있다. XOR-트리-비트-믹서에 대한 하나의 제한 사항은 XOR 연산이 효과적으로 이 비트를 취소(cancel)할 수 있는 것과 같이, 상이한 입력 비트 그룹에 의해 선택된 다중 서브키의 동일한 자리에 절대 나타나서는 안 된다는 점이다. 이를 유념하고, 간단한 비트 재사용 방법은 비트-회전하는 또 다른 서브키에 의해 여러 개의 서브키를 발생시키는 것이다. 이는 뿐만 아니라 복잡한 키 재료 맵핑은 키 저장 장치의 크기를 줄이거나 키를 분배하도록 필요한 대역폭을 최소화하기 위해 이용될 수 있다.
제한된 대역폭이 주어진 효율적인 키 분배를 위한 또 다른 해결책은 하드코딩된 키 재료와 함께 제2 비트-믹서를 채택하는 것이다. 더 짧은 키로부터 제2 비트-믹서는 제1 비트-믹서를 위한 서브키를 반복적으로 발생할 수 있다. 암호 및 암호학적 해시 함수는 또한, 이용 전에 키 재료 저장 장치를 채우도록 반복적으로 이용될 수 있다.
위에 나열된 비트-믹서가 하드웨어 구현을 위해 최적화되어있는 반면에, 소프트웨어에서 구현될 때 잘 작동하는 구성이 있다. 단일 클럭 사이클 연산이 불가능함에도 불구하고, 위의 비트-믹서 예시는 비슷한 입력 및 출력 크기의 암호 또는 해시 함수보다 소프트웨어에서 훨씬 더 빠를 수 있다. 높은 보안이 일부 발생된 데이터의 통계적인 독립성만이 필요되고, 소프트웨어 비트-믹서로도 실질적인 소비 시간을 줄일 수 있다.
하나의 예시의 방법으로, 소프트웨어 구현에 적합한 비트-믹서의 계열은 RAX 구성을 토대로 이루어질 수 있다. 아래는 C의 64-비트 예시이다. 상수는 하드코딩된 서브키이고, 키 저장 장치로부터 서브키와 함께 대체된다. 다음의 예시에서, 함수 ROL은 ROtate-Left이고, L 및 R은 4 및 9와 같은 작은 상수이며, 내부 변수 k는 0으로 초기화 된다.
x = (k += 0x3779884922721DEB);
x = (x ^ ROL(x,L) ^ ROL(x,R)) + 0x49A8D5B36969F969;
x = (x ^ ROL(x,L) ^ ROL(x,R)) + 0x6969F96949A8D5B3;
x = (x ^ ROL(x,L) ^ ROL(x,R));
비트-믹서가 유용할 수 있는, 많은 다른 정보 보안 애플리케이션이 있다. 키 뿐만 아니라, 비트-믹서의 입력 및/또는 출력이 다른 관찰자로부터 보이지 않는 경우, 특별한 보안 요구 사항(sequrity requirement)이 없거나, 보안 요구 사항이 암호 또는 다른 암호학적 함수보다 덜 엄격한(stringent) 경우, 눈에 보이는 입력 및 출력에서 높은 보안을 위해 설계된다. 하드웨어 비트-믹서는 매우 빠르고, 낮은 부 채널 유출을 갖는, 상관된 입력으로부터 통계학적으로 상관되지 않은 출력을 생성한다. 이러한 속성은, 비트-믹서가 암호학적 함수에서 이용될 때, 보안을 향상시킨다.
또한, 본 발명은 다음 조항에 따른 실시예를 포함한다:
조항1: 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법으로서, 방법은: 하나 이상의 제1 입력(1105) 및 하나 이상의 제2 입력(1105)을 획득하는 단계; 적어도 하나의 전기 회로에 의해, 각 하나 이상의 제1 입력 및 하나 이상의 제2 입력에 대해 비트-믹서 연산(500, 600, 700 및 1000)을 수행하는 단계(1110); 및 적어도 하나의 전기 회로에 의해, 수행하는 단계를 토대로 하나 이상의 라운드 키를 발생시키는 단계(1115);를 갖추어 이루어지는 것을 특징으로 한다.
조항2: 조항1의 방법으로, 하나 이상의 제2 입력(1105)은 랜덤하게 발생된 고정된 데이터, 하나 이상의 이전 라운드 키, 또는 라운드 넘버를 구비하여 구성되는 것을 특징으로 한다.
조항3: 조항1의 방법으로, 하나 이상의 제1 입력(1105)은 암호 키 또는 복수의 동일한 크기의 키 재료 서브-블록으로 분리되는 키 재료로부터 복수의 동일한 크기의 서브키를 구비하여 구성되는 것을 특징으로 한다.
조항4: 조항3의 방법으로, 암호학적 함수, 하드코딩된 키 재료를 갖는 비트-믹서, 카운터 입력, 또는 그 조합을 적용함으로써 더 짧은 키로부터 하나 이상의 제1 입력을 생생하는 단계를 더 갖추어 이루어지는 것을 특징으로 한다.
조항5: 조항4의 방법으로,
암호학적 함수는 암호, 해시 함수, 또는 스트림 발생기를 구비하여 구성되는 것을 특징으로 한다.
조항6: 조항2의 방법으로, 키 재료는 비밀이고, 통신 당사자 간에 공유되며, 하드코딩되거나, 또는 랜덤하게 발생되는 것을 특징으로 한다.
조항7: 조항2의 방법으로, 암호 키는 키 재료의 일부분과 함께 암호 키의 일부분 상에서 "XOR" 연산에 의해 하드코딩된 키 재료와 결합되는 것을 특징으로 한다.
조항8: 조항1의 방법으로, 비트-믹서를 선택하는 단계를 더 갖추어 이루어지고, 비트-믹서 연산이 모든 입력 비트가 모든 출력 비트에 영향을 미치고, 입력 비트의 변경이, 평균적으로, 출력 비트의 반을 변경하도록 야기시키며; 입력 비트의 변경이 입력 비트 또는 입력의 변경 패턴에 대한 상관 없이 출력 값을 산출하는 속성을 갖고, 키는 키를 모르는 관찰자에 대해 그들의 행동을 예측 불가능하게 만들도록 채택되고, 입력 및 출력 값의 고정된 길이가 독립적이고 임의적으로 선택될 수 있는; 것을 특징으로 한다.
조항9: 조항1의 방법으로, XOR 트리(1000)에 의해 발생시키는 단계는 수행하는 단계의 출력 상에서 스크램블링 연산을 수행하는 단계를 더 갖추어 이루어지는 것을 특징으로 한다.
조항10: 조항1의 방법으로, 하나 이상의 이전에 발생된 라운드 키를 갖는 데이터의 블록을 생성하는 단계를 더 갖추어서 이루어지는 것을 특징으로 한다.
조항11: 조항1의 방법으로, 수행하는 단계 및 암호학적 암호를 위해 하나 이상의 라운드 키를 발생시키는 단계를 반복하는 단계를 더 갖추어서 이루어지는 것을 특징으로 한다.
조항12: 조항1의 방법으로, 비트-믹서 연산은 복수의 NAND 게이트 또는 복수의 병합될 데이터를 선택하기 위한 멀티플렉서, 대입-치환 네트워크(700), 또는 더블-믹스 페이스텔 네트워크(500,600), 또는 "RAX" 구성을 포함하는 XOR 트리(1000)를 구비하여 구성되는 것을 특징으로 한다.
조항13: 조항12의 방법으로, XOR 트리(1000)는 NAND 로직 연산이 하나 이상의 제2 입력의 각 제2 입력과 함께 하나 이상의 제1 입력의 각 제1 입력에 대해 복수의 제1 입력 중 어느 것이 XOR 로직 연산으로 입력할 것인가를 선택하기 위해 수행하는 단계;이고, XOR 트리의 출력은 입력으로서 이용된 복수의 제1 입력에 관해 출력을 생성하는 것을 특징으로 한다.
조항14: 조항13의 방법으로, 비선형의 비트-믹서 함수를 만들기 위해 XOR 트리의 출력으로 스크램블 연산을 수행하는 단계를 더 갖추어 이루어지는 것을 특징으로 한다.
조항15: 조항12의 방법으로, 대입-치환 네트워크(700)는 각 복수의 제1 입력에 대해 비-선형 대입 연산을 수행하는 단계; 대입 연산의 각 출력에 대해 치환 단계를 수행하는 단계; 및 제1 입력 중 하나 또는 제2 입력 중 하나와 치환 연산의 각 출력에 대해 XOR 연산을 수행하는 단계;를 더 갖추어 이루어지는 것을 특징으로 한다.
조항16: 조항12의 방법으로, 더블-믹스 페이스텔 네트워크(500, 600)에서, 각 하나 이상의 제1 입력이 초기 왼쪽 절반 및 초기 오른쪽 절반으로 분리되고,
방법은:
복수의 라운드의 각 라운드를 위해 업데이트된 왼쪽 절반 및 업데이트된 오른쪽 절반을 계산하는 단계로서, 업데이트된 왼쪽 절반을 계산하는 단계는 제1 결과를 생성하기 위해 제1 함수를 입력 왼쪽 절반에 적용하는 단계, 및 제1 결과를 입력 오른쪽 절반에 믹싱하는 단계를 포함하고,
업데이트된 오른쪽 절반을 계산하는 단계는 제2 결과를 생성하기 위해 제2 함수를 입력 왼쪽 절반에 적용하는 단계, 및 제2 결과를 라운드 키에 믹싱하는 단계를 포함하며, 및 입력 왼쪽 절반 및 입력 오른쪽 절반이 제1의 복수의 라운드에 대한 초기 왼쪽 절반 및 초기 오른쪽 절반, 및 그 후에 각 라운드에 대해 즉각적으로 선행된 라운드에 대한 업데이트된 왼쪽 절반 및 업데이트된 오른쪽 절반,인 단계를 더 갖추어 이루어지는 것을 특징으로 한다.
조항17: 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템으로서,
시스템은:
하나 이상의 제1 입력 및 하나 이상의 제2 입력(1105)을 획득하고;
적어도 하나의 전기 회로에 의해, 각 하나 이상의 제1 입력 및 하나 이상의 제2 입력(1110)에 대해 비트-믹서 연산을 수행하며;
적어도 하나의 전기 회로에 의해, 수행하는 단계(1115)를 토대로 하나 이상의 라운드 키를 발생하도록; 동작 가능한 하나 이상의 로직 회로를 구비하여 구성되는 것을 특징으로 한다.
조항18: 조항17의 시스템으로, 하나 이상의 제1 입력(1105)은 복수의 동일한 크기의 키 재료 서브-블록으로 분리된 키 재료로부터 복수의 동일한 크기의 서브키를 구비하여 구성되고, 암호 키 및 하나 이상의 제2 입력(1105)은 랜덤 입력, 하나 이상의 이전 라운드 키, 라운드 넘버를 구비하여 구성되는 것을 특징으로 한다.
조항19: 조항17의 시스템으로, 암호학적 연산이 암호, 해시 함수, 또는 스트림 발생기를 구비하여 구성되는 것을 특징으로 한다.
조항20: 조항17의 시스템으로, 비트-믹서 연산이 "XOR" 트리(1000), 대입-치환 네트워크(700), 또는 더블-믹스 페이스텔 네트워크(500 내지 600), 또는 "RAX" 구성을 구비하여 구성되는 것을 특징으로 한다.
단순화 및 설명을 위해, 본 발명의 원리는 주로 그 실시예를 참조하여 설명된다. 그러나 당업자는 동일한 원리가 모든 유형의 정보 및 시스템에 동등하게 적용 가능하고, 구현될 수 있음을 쉽게 인식할 것이며, 그러한 임의의 변형은 본 가르침의 진정한 정신 및 범위를 벗어나지 않는다는 것을 쉽게 인식 할 것이다. 게다가, 이전의 상세한 설명에서, 특정 실시예를 나타내는 첨부 도면을 참조한다. 전기적, 기계적, 논리적 및 구조적 변화가 본 가르침의 정신 및 범위를 벗어나지 않는 선에서 이루어질 수 있다. 이전의 상세한 설명은 그러므로, 제한적인 의미로 해석되어서는 안되며, 본 가르침의 범위는 첨부된 청구 범위 및 그 등가물에 의해 한정된다.
본 발명에서 이용된 용어 및 설명은 단지 설명을 위한 것이며 한정적인 의미는 아니다. 예를 들어, 방법이 윗부분에서 아랫부분으로 설명되었지만, 본 방법의 단계는 나타내진 것 다른 순서로 또는 동시에 수행될 수 있다. 게다가, "포함하다","포함한다","갖는","가지는","함께", 또는 그 변형은 상세한 설명 또는 청구 범위에서 사용되는 한도 내에서 포괄적인 의미로 사용되며, 이러한 용어는 용어 "구비하여 구성되는"과 비슷한 방식으로 사용된다. 이곳에서 이용되는 바와 같이, 예를 들어, A 및 B와 같이 품목의 목록과 관련하여 용어 "하나 이상의"는 A 단독, B 단독, 또는 A 및 B를 의미한다. 당업자는 이들이 다른 변형도 가능하다는 것을 알아챌 수 있을 것이다.
본 가르침과 일치하는 다른 실시예는 명세서의 고려 및 이곳에 설명된 본 발명의 내용으로부터 당업자에게 명백할 것이다. 본 명세서 및 실시예는 단지 예시적인 것으로 간주되고, 본 발명의 진정한 범위 및 정신은 다음의 청구 범위에 의해 보여진다.

Claims (15)

  1. 통신 시스템 내의 데이터를 암호화하기 위한 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법으로서,
    블록 암호 암호학적 알고리즘의 라운드의 일부인 라운드 카운터(round counter) 입력 또는 하드코딩된 키 재료를 가지고 제1 비트-믹서 연산을 적용함으로써 더 짧은 키로부터 하나 이상의 제1 입력을 생성하는 단계;
    상기 하나 이상의 제1 입력 및 하나 이상의 제2 입력을 획득하는 단계로서, 상기 하나 이상의 제1 입력은 제2 길이를 갖는 암호 키 또는 복수의 동일한 크기의 키 재료 서브-블록으로 분리되는 제1 길이를 갖는 키 재료로부터 복수의 동일한 크기의 서브키를 포함하고, 상기 하나 이상의 제2 입력은 상기 제1 길이 및 상기 제2 길이보다 짧은 제3 길이를 갖는 라운드 넘버를 포함하는, 단계;
    상기 라운드 넘버의 비트를 셔플링(shuffling) 및 되풀이함으로써 상기 제1 길이 또는 상기 제2 길이와 동일하게 되도록 상기 라운드 넘버의 상기 제3 길이를 확장하는 단계;
    제2 비트-믹서 연산을 선택하는 단계로서, 상기 제2 비트-믹서 연산은, 모든 입력 비트가 모든 출력 비트에 영향을 미친다는 것, 입력 비트의 변경이 출력 비트의 반을 변경하도록 야기시킨다는 것, 입력 비트의 변경이 입력 비트 또는 입력의 변경 패턴에 대한 상관 없이 출력 값을 산출한다는 것, 키는 키를 모르는 관찰자에 대해 키의 행동을 예측 불가능하게 만들도록 채택된다는 것, 그리고 입력 비트 및 출력 값의 고정된 길이가 독립적이고 임의적으로 선택될 수 있다는 것을 포함하는 속성을 갖는, 단계;
    적어도 하나의 전기 회로에 의해, 모든 상기 하나 이상의 제1 입력 및 모든 상기 하나 이상의 제2 입력에 대해 상기 제2 비트-믹서 연산을 수행하는 단계;
    XOR 트리를 이용하여 상기 제2 비트-믹서 연산을 수행한 출력에 대해 제1 스크램블링 연산을 수행하는 단계;
    적어도 하나의 전기 회로에 의해, 상기 제1 스크램블링 연산을 수행한 것을 토대로 하나 이상의 라운드 키를 발생시키는 단계; 및
    발생된 상기 하나 이상의 라운드 키를 이용하여 상기 데이터를 암호화하는 단계;를 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 암호학적 연산은 암호, 해시 함수, 또는 스트림 발생기를 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법.
  6. 제1항에 있어서, 상기 암호 키는 하드코딩된 키 재료의 일부분과 함께 암호 키의 일부분에 대한 "XOR" 연산에 의해 하드코딩된 키 재료와 결합되는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서, 하나 이상의 이전에 발생된 라운드 키를 갖는 데이터의 블록을 생성하는 단계를 더 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법.
  10. 제1항에 있어서, 암호학적 암호를 위해 상기 하나 이상의 라운드 키를 발생시키는 단계를 반복하는 단계를 더 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법.
  11. 제1항에 있어서, 상기 제2 비트-믹서 연산은 병합될 데이터를 선택하기 위한 복수의 멀티플렉서 또는 복수의 "NAND" (negated-AND) 게이트를 포함하는 "XOR" (exclusive-OR) 트리, 대입-치환 네트워크, 더블-믹스 페이스텔 네트워크, 또는 "RAX" (Rotate-Add-XOR) 구성을 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 방법.
  12. 통신 시스템 내의 데이터를 암호화하기 위한 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템으로서,
    블록 암호 암호학적 알고리즘의 라운드의 일부인 라운드 카운터 입력 또는 하드코딩된 키 재료를 가지고 제1 비트-믹서 연산을 적용함으로써 더 짧은 키로부터 하나 이상의 제1 입력을 생성하고;
    상기 하나 이상의 제1 입력 및 하나 이상의 제2 입력을 획득하고, 상기 하나 이상의 제1 입력은 제2 길이를 갖는 암호 키 또는 복수의 동일한 크기의 키 재료 서브-블록으로 분리되는 제1 길이를 갖는 키 재료로부터 복수의 동일한 크기의 서브키를 포함하고, 상기 하나 이상의 제2 입력은 상기 제1 길이 및 상기 제2 길이보다 짧은 제3 길이를 갖는 라운드 넘버를 포함하고;
    상기 라운드 넘버의 비트를 셔플링 및 되풀이함으로써 상기 제1 길이 또는 상기 제2 길이와 동일하게 되도록 상기 라운드 넘버의 상기 제3 길이를 확장하고;
    제2 비트-믹서 연산을 선택하고, 상기 제2 비트-믹서 연산은, 모든 입력 비트가 모든 출력 비트에 영향을 미친다는 것, 입력 비트의 변경이 출력 비트의 반을 변경하도록 야기시킨다는 것, 입력 비트의 변경이 입력 비트 또는 입력의 변경 패턴에 대한 상관 없이 출력 값을 산출한다는 것, 키는 키를 모르는 관찰자에 대해 키의 행동을 예측 불가능하게 만들도록 채택된다는 것, 그리고 입력 비트 및 출력 값의 고정된 길이가 독립적이고 임의적으로 선택될 수 있다는 것을 포함하는 속성을 갖고;
    적어도 하나의 전기 회로에 의해, 모든 상기 하나 이상의 제1 입력 및 모든 상기 하나 이상의 제2 입력에 대해 상기 제2 비트-믹서 연산을 수행하고;
    XOR 트리를 이용하여 상기 제2 비트-믹서 연산을 수행한 출력에 대해 제1 스크램블링 연산을 수행하고;
    적어도 하나의 전기 회로에 의해, 상기 제1 스크램블링 연산을 수행한 것을 토대로 하나 이상의 라운드 키를 발생시키고; 그리고
    발생된 상기 하나 이상의 라운드 키를 이용하여 상기 데이터를 암호화하도록; 동작 가능한 하나 이상의 로직 회로를 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템.
  13. 삭제
  14. 제12항에 있어서, 상기 암호학적 연산은 암호, 해시 함수, 또는 스트림 발생기를 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템.
  15. 제12항에 있어서, 상기 제2 비트-믹서 연산은 "XOR" (exclusive-OR) 트리, 대입-치환 네트워크, 더블-믹스 페이스텔 네트워크, 또는 "RAX" (Rotate-Add-XOR) 구성을 포함하는 것을 특징으로 하는 암호학적 연산을 위해 하나 이상의 라운드 키를 발생시키는 시스템.
KR1020170148649A 2016-12-16 2017-11-09 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템 KR102447709B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/381,540 2016-12-16
US15/381,540 US10742405B2 (en) 2016-12-16 2016-12-16 Method and system for generation of cipher round keys by bit-mixers

Publications (2)

Publication Number Publication Date
KR20180070459A KR20180070459A (ko) 2018-06-26
KR102447709B1 true KR102447709B1 (ko) 2022-09-26

Family

ID=60043054

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170148649A KR102447709B1 (ko) 2016-12-16 2017-11-09 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템

Country Status (7)

Country Link
US (1) US10742405B2 (ko)
EP (1) EP3337082B1 (ko)
JP (1) JP7107670B2 (ko)
KR (1) KR102447709B1 (ko)
CN (1) CN108206735B (ko)
SG (1) SG10201710088QA (ko)
TW (1) TWI744388B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302280B (zh) * 2018-08-02 2021-11-23 哈尔滨工程大学 一种aes密钥扩展方法
US11070354B2 (en) * 2018-09-24 2021-07-20 Lovely Professional University System and method for generating a symmetrically balanced output
CN109408029A (zh) * 2018-10-17 2019-03-01 南京汽车集团有限公司 车联网下传感器生成随机数的方法
CN109766705B (zh) * 2018-12-10 2021-03-19 北京链化未来科技有限公司 一种基于电路的数据验证方法、装置及电子设备
CN109450618B (zh) * 2019-01-11 2021-12-31 无锡华大国奇科技有限公司 一种基于md5的加密方法及系统
FR3092923B1 (fr) * 2019-02-19 2021-05-21 Sangle Ferriere Bruno Méthode cryptographique de vérification des données
US11956367B2 (en) * 2019-02-19 2024-04-09 Bruno SANGLE-FERRIERE Cryptographic method for verifying data
WO2020186125A1 (en) * 2019-03-13 2020-09-17 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
CN116910706A (zh) * 2019-05-17 2023-10-20 创新先进技术有限公司 一种基于区块链的版权保护方法、装置及电子设备
US11283619B2 (en) * 2019-06-20 2022-03-22 The Boeing Company Bit mixer based parallel MAC and hash functions
US11196715B2 (en) * 2019-07-16 2021-12-07 Xilinx, Inc. Slice-aggregated cryptographic system and method
US11381394B2 (en) * 2019-07-25 2022-07-05 PUFsecurity Corporation High speed encryption key generating engine
CN110855431A (zh) * 2019-09-12 2020-02-28 南方电网数字电网研究院有限公司 一种密码算法加解密系统
US20210091928A1 (en) * 2019-09-23 2021-03-25 Qualcomm Incorporated Iterative cipher key-schedule cache for caching round keys used in an iterative encryption/decryption system and related methods
CN111478766B (zh) * 2020-01-21 2021-09-28 衡阳师范学院 一种分组密码meg实现方法、装置及存储介质
TWI735208B (zh) * 2020-04-20 2021-08-01 宜鼎國際股份有限公司 資料防護系統及方法
CA3180915A1 (en) 2020-06-05 2021-12-09 William David Schwaderer Shapeshift data encryption methods and systems
US11861020B2 (en) * 2020-06-26 2024-01-02 Intel Corporation Generating keys for persistent memory
TWI766497B (zh) * 2020-12-23 2022-06-01 鴻海精密工業股份有限公司 資料存取方法及系統
CN112751663B (zh) * 2020-12-31 2022-12-23 南方电网科学研究院有限责任公司 一种数据加密方法和装置
CN115118527B (zh) * 2022-08-26 2022-11-25 深圳市成为信息股份有限公司 超高频模组与pda的双向认证方法及相关设备
CN115314187B (zh) * 2022-10-08 2023-04-07 湖南密码工程研究中心有限公司 一种轻量级分组密码算法RainSP的实现方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192129B1 (en) 1998-02-04 2001-02-20 International Business Machines Corporation Method and apparatus for advanced byte-oriented symmetric key block cipher with variable length key and block
US20040247116A1 (en) * 2002-11-20 2004-12-09 Boren Stephen Laurence Method of generating a stream cipher using multiple keys
US20100008498A1 (en) * 2006-09-01 2010-01-14 Taizo Shirai Encryption processing apparatus, encryption method, and computer program
US20120328097A1 (en) * 2011-06-21 2012-12-27 Farhana Sheikh Apparatus and method for skein hashing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389902B1 (ko) * 1997-06-23 2003-09-22 삼성전자주식회사 차분해독법과선형해독법에대하여안전성을보장하는고속블럭암호화방법
CA2319135C (en) * 1998-01-27 2003-06-17 Nippon Telegraph And Telephone Corporation Data transformation device and recording medium having recorded thereon a program for implementing the same
US20030198345A1 (en) * 2002-04-15 2003-10-23 Van Buer Darrel J. Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow
JP4117157B2 (ja) * 2002-07-08 2008-07-16 富士通株式会社 暗号回路
US7925013B1 (en) * 2003-06-30 2011-04-12 Conexant Systems, Inc. System for data encryption and decryption of digital data entering and leaving memory
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
US8094816B2 (en) * 2008-10-21 2012-01-10 Apple Inc. System and method for stream/block cipher with internal random states
EP2443786A1 (en) * 2009-06-19 2012-04-25 Irdeto B.V. White-box cryptographic system with configurable key using intermediate data modification
US8751822B2 (en) * 2010-12-20 2014-06-10 Motorola Mobility Llc Cryptography using quasigroups
JP2013182148A (ja) * 2012-03-02 2013-09-12 Sony Corp 情報処理装置、および情報処理方法、並びにプログラム
US9361106B2 (en) * 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
KR101583285B1 (ko) 2014-07-04 2016-01-07 고려대학교 산학협력단 확장 키를 이용한 블록 암호화 방법 및 그 방법에 따른 장치
US10146701B2 (en) 2014-08-29 2018-12-04 The Boeing Company Address-dependent key generation with a substitution-permutation network
US10313128B2 (en) 2014-08-29 2019-06-04 The Boeing Company Address-dependent key generator by XOR tree
US9946662B2 (en) 2014-08-29 2018-04-17 The Boeing Company Double-mix Feistel network for key generation or encryption
GB2551849B (en) * 2016-06-28 2019-10-09 Mips Tech Llc AES hardware implementation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192129B1 (en) 1998-02-04 2001-02-20 International Business Machines Corporation Method and apparatus for advanced byte-oriented symmetric key block cipher with variable length key and block
US20040247116A1 (en) * 2002-11-20 2004-12-09 Boren Stephen Laurence Method of generating a stream cipher using multiple keys
US20100008498A1 (en) * 2006-09-01 2010-01-14 Taizo Shirai Encryption processing apparatus, encryption method, and computer program
US20120328097A1 (en) * 2011-06-21 2012-12-27 Farhana Sheikh Apparatus and method for skein hashing

Also Published As

Publication number Publication date
SG10201710088QA (en) 2018-07-30
KR20180070459A (ko) 2018-06-26
TW201826162A (zh) 2018-07-16
JP2018109750A (ja) 2018-07-12
US20180176011A1 (en) 2018-06-21
EP3337082A1 (en) 2018-06-20
CN108206735B (zh) 2023-04-14
TWI744388B (zh) 2021-11-01
CN108206735A (zh) 2018-06-26
EP3337082B1 (en) 2020-04-15
US10742405B2 (en) 2020-08-11
JP7107670B2 (ja) 2022-07-27

Similar Documents

Publication Publication Date Title
KR102447709B1 (ko) 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템
US8983063B1 (en) Method and system for high throughput blockwise independent encryption/decryption
US10313128B2 (en) Address-dependent key generator by XOR tree
EP2356771B1 (en) Low latency block cipher
CN107017981B (zh) 硬件辅助快速伪随机数生成
KR20220028132A (ko) 암호화 순열을 위한 암호화 아키텍처
US10146701B2 (en) Address-dependent key generation with a substitution-permutation network
AU773982B2 (en) Method for making data processing resistant to extraction of data by analysis of unintended side-channel signals
US9602281B2 (en) Parallelizable cipher construction
Chhabra et al. Enhancing data security using obfuscated 128-bit AES algorithm-an active hardware obfuscation approach at RTL level
Kamali et al. Extru: A lightweight, fast, and secure expirable trust for the internet of things
Zhang et al. Sealer: In-sram aes for high-performance and low-overhead memory encryption
US9946662B2 (en) Double-mix Feistel network for key generation or encryption
Singh et al. Study & analysis of cryptography algorithms: RSA, AES, DES, T-DES, blowfish
Ege et al. Memory encryption for smart cards
Mahantesh et al. Design of secured block ciphers PRESENT and HIGHT algorithms and its FPGA implementation
Jhawar et al. Modeling, hardware architecture, and performance analyses of an AEAD-based lightweight cipher
Jeddi et al. Redundant bit security in RFIDs: architecture design and security performance evaluation
Gaspar Crypto-processor–architecture, programming and evaluation of the security
Swayamprakash et al. Design of Advanced Encryption Standard using Verilog HDL
Novotný Cryptanalytic attacks on cyber-physical systems
三上修吾 et al. DESIGN METHODOLOGY OF SECURE RFID TAG IMPLEMENTATION
Gaspar Crypto-processeur–architecture, programmation et évaluation de la sécurité
Mitsuyama et al. VLSI implementation of dynamically reconfigurable hardware-based cryptosystem

Legal Events

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