KR102616064B1 - 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 - Google Patents

비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 Download PDF

Info

Publication number
KR102616064B1
KR102616064B1 KR1020180098958A KR20180098958A KR102616064B1 KR 102616064 B1 KR102616064 B1 KR 102616064B1 KR 1020180098958 A KR1020180098958 A KR 1020180098958A KR 20180098958 A KR20180098958 A KR 20180098958A KR 102616064 B1 KR102616064 B1 KR 102616064B1
Authority
KR
South Korea
Prior art keywords
message
bit
block
mixing operation
subsequent
Prior art date
Application number
KR1020180098958A
Other languages
English (en)
Other versions
KR20190039850A (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 KR20190039850A publication Critical patent/KR20190039850A/ko
Application granted granted Critical
Publication of KR102616064B1 publication Critical patent/KR102616064B1/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
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메시지 인증 태그를 생성하기 위한 방법 및 시스템과 비트-믹서들을 이용해서 해시 값을 생성하기 위한 방법 및 시스템이 제공된다. 본 방법은, 메시지를 획득함으로써 메시지 인증 또는 해시 값을 생성하는 단계; 전자 프로세서에 의하여, 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록으로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할하는 단계; 전자 프로세서에 의하여, 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여, 이전 메시지 블록으로 하나 이상의 후속 메시지 블록 및 상기 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 및 전자 프로세서에 의하여, 비밀키 구성요소를 채용해서, 제1 비트-믹싱 연산 및 후속 비트-믹싱 연산을 기초로 하여 메시지 인증 태그를 생성하는 단계를 포함한다.

Description

비트-믹서로들로부터 안전한 해시 함수를 구성하는 방법{METHODS FOR CONSTRUCTING SECURE HASH FUNCTIONS FROM BIT-MIXERS}
본 발명은 일반적으로 정보 보증 및 보안에 관한 것이다.
정보 보증에서, 해시 함수와 메시지 인증 코드(MAC)는 일부 데이터가 메시지 다이제스트를 내놓되 공격자가 그 메시지(또는 동일한 메시지 다이제스트나 MAC값을 생성하는 등가의 대안)를 복원할 수 없음을 확실히 하는데 사용될 수 있다. 몇몇 애플리케이션에서는 연산, 속도와 전력 소모가 중요하지만 보안 요구사항은 느슨하다. 다른 경우에는 높은 보안, 긴 다이제스트가 필요하다. 해시 함수와 MAC은 공격자가 다이제스트만을 앎으로써 메시지(또는 등가의 대안)를 복원하는 것을 허용하지 않은 채, 일부 입력 데이터가 주어진 메시지 다이제스트에 매핑되는 것을 확실히 한다. 적절하게 선택된 메시지 다이제스트 사이즈를 가진 높은 보안 레벨이 필요하거나; 또는 보안 요구사항들이 느슨하되 실행 시간 및 전력 사용이 중요한, 상용 및 군용 항공, 데이터 센터, 퍼스널 컴퓨터를 포함하는 애플리케이션이 존재한다. 이러한 애플리케이션에 대하여, 저전력이면서 매우 빠른 해시 및 MAC 함수가 필요한데, 부채널 공격에 대해 높은 내성이라는 추가적인 요구사항을 흔히 수반한다.
현재 이용되는 해시 및 MAC 함수들은 엄격한 입력 및 출력 버퍼 사이즈를 가져 유연성이 없고, 이들은 매우 느리고 많은 전력/에너지를 소모하고, 자체적으로는 부채널 공격에 취약하다. 결과적으로 얻어지는 보안 레벨들은, 비록 상용 및 군용 항공에서의 많은 애플리케이션이 기존 솔루션보다 더 높은 보안 레벨 또는 더 나은 성능을 필요로 할지라도, 몇몇 미리 결정된 레벨로 고정된다.
필요한 것은 상술한 결점들을 극복하는 해시 및 MAC 함수들이다.
본 발명의 예시에 따라서, 메시지 인증 태그를 생성하기 위한 컴퓨터로 구현된 방법이 제공된다. 본 방법은 메시지를 획득하는 단계; 전자 프로세서에 의하여, 그 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 그리고 마지막 메시지 블록으로 구성된 다수의 동일 사이즈의 메시지 블록들로 분할하는 단계; 동일 사이즈의 블록들을 만들기 위하여 필요하다면 마지막 메시지 블록을 선택적으로 패딩(padding)하는 단계; 전자 프로세서에 의하여, 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여, 이전 메시지 블록으로 하나 이상의 후속 메시지 블록과 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여 제1 비트-믹싱 연산과 후속 비트-믹싱 연산을 기초로 하여 메시지 인증 태그를 생성하는 단계를 포함한다. 몇몇 예에서, 그 메시지는 평문 메시지 또는 암호화된 메시지이다.
몇몇 예에서, 본 방법은 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 동일 사이즈 메시지 블록들 각각을 암호화하는 단계를 더 포함할 수 있다.
몇몇 예에서, 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 그리고 마지막 메시지 블록은 암호화된 메시지 블록이다.
몇몇 예에서, 본 방법은 메시지와 함께 메시지 인증 태그를 수신자에게 보내는 단계를 더 포함할 수 있고, 그 메시지는 평문이다.
몇몇 예에서, 본 방법은 메시지와 함께 메시지 인증 태그를 수신자에게 보내는 단계를 더 포함할 수 있고, 그 메시지는 암호문이다.
몇몇 예에서, 제1 비트-믹싱 연산과 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크(DMFN), 대입-치환 네트워크, 또는 XOR 트리를 기초로 한 비트-믹서 구성에 의해 수행되거나; 또는 둘 이상의 단순 비트 믹서 구성들의 병렬 조합(집합)에 의해 수행된다.
몇몇 예에서, 제1 비트-믹싱 연산과 후속 비트-믹싱 연산은 키 구성 요소를 이용해 수행된다. 몇몇 예에서 키 구성 요소는 비밀로 유지되며 그 메시지 인증 태그는 메시지 인증 코드이다.
몇몇 예에서, 본 방법은 일련의 인증 데이터와 일련의 암호문 블록의 연결(concatenation) 및 마지막 메시지 블록에 기초한 출력으로 마지막 비트-믹싱 연산을 수행하는 단계; 비밀 키로 블록 암호화 알고리즘을 이용하여 암호화된 암호화 NULL 카운터(encrypted null counter)와 마지막 비트-믹싱 연산의 출력으로 배타적 논리합 연산을 수행하는 단계를 더 포함한다.
본 발명의 예시에 따라서, 메시지에 대한 해시 값을 생성하기 위한 컴퓨터로 구현된 방법이 제공된다. 본 방법은 메시지를 획득하는 단계; 전자 프로세서에 의하여, 그 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 그리고 마지막 메시지 블록으로 구성된 다수의 동일 사이즈의 메시지 블록들로 분할하는 단계; 동일 사이즈의 블록들을 만들기 위하여 필요하다면 마지막 메시지 블록을 선택적으로 패딩(padding)하는 단계; 전자 프로세서에 의하여, 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여, 이전 메시지 블록으로 하나 이상의 후속 메시지 블록과 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여 제1 비트-믹싱 연산과 후속 비트-믹싱 연산을 기초로 하여 해시 값을 결정하는 단계를 포함한다. 몇몇 예에서, 그 메시지는 평문 메시지 또는 암호화된 메시지 또는 전자 포맷의 임의의 다른 유형의 데이터이다. 몇몇 예에서, 제1 비트-믹싱 연산과 후속 비트-믹싱 연산은 공개된(public) 키 구성 요소를 사용한다.
몇몇 예에서, 본 방법은 해시 계산에서 수행된 모든 다른 비트-믹싱 연산과는 차이가 있는 비트-믹싱 연산을 마지막 메시지 블록에 수행하는 단계를 더 포함하며, 그 차이는 비트-믹서의 구성에 및/또는 그것이 사용한 키 구성 요소에 있을 수 있다.
몇몇 예에서, 본 방법은 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 동일 사이즈 메시지 블록들 각각을 암호화하는 단계를 더 포함할 수 있다. 몇몇 예에서, 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 그리고 마지막 메시지 블록은 암호화된 메시지 블록이다. 몇몇 예에서, 제1 비트-믹싱 연산과 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크(DMFN), 대입-치환 네트워크, 또는 XOR 트리를 기초로 한 비트-믹서 구성에 의해 수행되거나; 또는 둘 이상의 단순 비트 믹서 구성들의 병렬 조합(집합)에 의해 수행된다.
본 발명의 예시에 따라서, 프로세서;와 프로세서에 의해 실행될 때 메시지 인증 태그를 생성하는 방법을 수행하는 인스트럭션들을 저장하는 비일시적 컴퓨터 판독가능 매체를 포함하는 컴퓨터 시스템이 제공되며, 상기 방법은 메시지를 획득하는 단계; 전자 프로세서에 의하여, 그 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 그리고 마지막 메시지 블록으로 구성된 다수의 동일 사이즈의 메시지 블록들로 분할하는 단계; 동일 사이즈의 블록들을 만들기 위하여 필요하다면 마지막 메시지 블록을 선택적으로 패딩(padding)하는 단계; 전자 프로세서에 의하여, 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여, 이전 메시지 블록으로 하나 이상의 후속 메시지 블록과 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여 제1 비트-믹싱 연산과 후속 비트-믹싱 연산을 기초로 하여 메시지 인증 태그를 생성하는 단계를 포함한다. 몇몇 예에서, 제1 비트-믹싱 연산과 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크(DMFN), 대입-치환 네트워크, 또는 XOR 트리를 기초로 한 비트-믹서 구성에 의해 수행되거나; 또는 둘 이상의 단순 비트-믹서 구성들의 병렬 조합(집합)에 의해 수행된다. 몇몇 예에서, 프로세서는 다음 방법을 수행하도록 더 작동할 수 있는데, 본 방법은, 일련의 인증 데이터와 일련의 암호문 블록의 연결(concatenation) 및 마지막 메시지 블록에 기초한 출력으로 마지막 비트-믹싱 연산을 수행하는 단계; 블록 암호화 알고리즘을 이용하여 암호화된 암호화 NULL 카운터와 마지막 비트-믹싱 연산의 출력으로 배타적 논리합 연산을 수행하는 단계를 포함한다.
본 발명의 예시에 따라서, 프로세서;와 프로세서에 의해 실행될 때 메시지 인증 태그를 생성하는 방법을 수행하는 인스트럭션들을 저장하는 비일시적 컴퓨터 판독가능 매체를 포함하는 컴퓨터 시스템이 제공되며, 상기 방법은 메시지를 획득하는 단계; 전자 프로세서에 의하여, 그 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 그리고 마지막 메시지 블록으로 구성된 다수의 동일 사이즈의 메시지 블록들로 분할하는 단계; 동일 사이즈의 블록들을 만들기 위하여 필요하다면 마지막 메시지 블록을 선택적으로 패딩(padding)하는 단계; 전자 프로세서에 의하여, 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여, 처리된 이전 메시지 블록으로 하나 이상의 후속 메시지 블록과 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 전자 프로세서에 의하여 제1 비트-믹싱 연산과 후속 비트-믹싱 연산에 기초한 해시 값을 생성하는 단계를 포함한다. 몇몇 예에서, 제1 비트-믹싱 연산과 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크(DMFN), 대입-치환 네트워크, 또는 XOR 트리를 기초로 한 비트-믹서 구성에 의해 수행되거나; 또는 둘 이상의 단순 비트-믹서 구성들의 병렬 조합(집합)에 의해 수행된다. 몇몇 예에서, 프로세서는 다음 방법을 수행하도록 더 작동할 수 있는데, 본 방법은, 마지막 메시지 블록에 기초한 출력으로 마지막 비트-믹싱 연산 수행하는 단계; 해시 값 계산에서 모든 다른 비트-믹싱과는 상이한 비트-믹서로 마지막 비트-믹싱 연산을 수행하는 단계를 포함한다.
실시예들의 다양한 특징들은 첨부 도면과 관련해서 고려될 때 실시예들의 다음의 상세한 설명을 참조하여 더 잘 이해되기 때문에 완전히 이해될 수 있다.
도 1은 본 발명의 예들에 따라서 비트-믹서에 대한 블록 다이어그램(100)을 도시한다.
도 2는 본 발명의 예들에 따라서 집합 비트-믹서에 대한 블록 다이어그램(200)을 도시한다.
도 3은 본 발명의 예들에 따라서, Galois MAC(GMAC) 같은 구성(300)에 따른 해시/MAC 함수를 도시한다.
도 4는 본 발명의 예들에 따라서, Merkle-Damgard 같은 구성(400)에 따른 해시/MAC 함수를 도시한다.
도 5는 본 발명의 예시적인 구현들에 따라서 도 3 및 4의 비트-믹서로서 이용될 수 있는 이중-믹스 파이스텔 네트워크(double-mix Feistel network: DMFN)(500)의 하나의 라운드를 도시한다.
도 6은 다른 예시적인 구현들에 따라서 도 3 및 4의 비트-믹서로서 이용될 수 있는 DMFN(600)의 하나의 라운드를 도시한다.
도 7은 본 발명의 예시적 구현에 따라서, 도 3과 4의 비트-믹서로 이용될 수 있는 대입-치환 네트워크(700)의 세 라운드를 도시한다.
도 8은 본 발명의 예시적 구현에 따라서, 도 3과 4의 비트-믹서로 이용될 수 있는 XOR 트리(800)를 도시한다.
도 9는 본 발명의 예시적 구현에 따라서, 도 3과 4의 구성을 사용할 수 있는 메시지 인증에 대한 시스템(900)을 도시한다.
도 10은 본 발명의 예시적 구현에 따라서, 메시지 인증 태그를 생성하기 위한 방법(1000)을 도시한다.
도 11은 본 발명의 예시적 구현에 따라서, 해시 값을 생성하기 위한 방법(1100)을 도시한다.
도 12는 상기 기술된 프로세스들의 하나 이상을 수행하기 위해 사용될 수 있는, 모바일 장치 또는 서버로 이용될 수 있는 컴퓨터 장치(1200)를 위한 하드웨어 구성의 예를 도시한다.
첨부 도면들에서 도시된 예시적인 구현들에 대한 언급이 이제 상세히 이루어질 것이다. 가능한 경우마다, 동일하거나 유사한 부분을 지칭하기 위하여 도면들 전체에 걸쳐서 동일한 참조 번호가 사용될 것이다. 다음 설명에서, 일부분을 형성하는 첨부도면에 대한 언급이 이루어지고, 발명이 실시될 수 있는 특정한 예시적인 실시예들이 실례를 들어 도시된다. 이 실시예들은 통상의 기술자가 발명을 실시할 수 있도록 충분히 상세하게 기술되고, 본 발명의 범위를 벗어나지 않으면서 변경이 이루어질 수 있고 다른 실시예들이 활용될 수 있다고 이해된다. 그러므로, 다음의 설명은 단지 예시적인 것이다.
본 명세서에는 그들의 표준 암호화 등가물보다 더 안전한 및/또는 수 십배 더 빠른 해시/MAC 함수 구성들이 공개된다. 이들은 전자 하드웨어에서 구현될 때 더 적은 전력을 소모한다. 이 구성들은 많은 양의 키 구성요소를 이용하더라도 매우 빠른 함수들, 비트-믹서들의 복잡한 구성들에 기초한다. 만일 키 구성요소가 비밀로 유지된다면, 우리는 선택가능한 보안 레벨들을 제공하는 MAC 구성들을 획득한다. 만일 키 구성요소가 고정되고(하드코딩됨), 공중에 공개되면(public), 본 발명의 구성들은 유연한(flexible) 해시 함수들을 제공한다. 통신 및 컴퓨팅 시스템들에서 이들을 이용하는 것은 회로 사이즈의 경미한 증가와 함께 적은 비용으로 이루어지고, 이들은 전력 사용을 감소시킨다. 배치된 시스템들은 더 느린 전자 구성요소들을 이용할 수 있고, 나아가 향상된 속도에서 잠재적으로 더 높은 보안으로 컴퓨팅 시스템의 비용, 에너지, 및 전력 소모를 감소시킨다. 영향을 받는 시스템들은 과학 및 엔지니어링 계산을 포함하고, 비행 컴퓨터들, 군용 및 우주 프로그램들, 기업 네트워크들, 퍼스널 및 랩톱 컴퓨터들, 스마트 모바일 디바이스들, 심지어 시큐어 통신 네트워크들의 보안 서브시스템들을 또한 포함한다.
해시 함수는 임의의 사이즈의 데이터를 고정된 사이즈의 데이터에 맵핑한다. 해시 함수에 의해 반환되는 값들은 해시 값, 메시지 다이제스트, 데이터 핑거프린트, 또는 단순히 해시라고 불린다. 원하는 해시 함수의 속성은: 결정성(determinism), 균일성(uniformity), 비선형성(비선형ity)인데, 이들은 비트-믹서의 속성에 포함된다. 해시 함수의 하나의 용도는 신속한 데이터 룩업을 위해 컴퓨터 소프트웨어에서 널리 사용되는 해시 테이블이라고 불리는 데이터 구조에 있다. 해시 함수는 큰 파일에서 중복 데이터를 검출함으로써 테이블 또는 데이터베이스 룩업을 가속화한다. 만일 해시 함수가 비밀키에 의존한다면, 우리는 메시지 인증 코드 발생기: MAC 발생기를 가진다.
해시 함수는 또한 암호화에서 사용된다. 암호화 해시 함수는 일부 입력 데이터가 주어진 해시 값에 맵핑되되 만일 입력 데이터가 알려져 있지 않다면 해시 값을 아는 것만으로 그것(또는 등가적인 대안)을 복원하는 것이 의도적으로 어렵게 되어 있다는 것을 용이하게 검증할 수 있게 한다. 이러한 속성은 적극적인 공격자의 존재 하에서 전송된 데이터의 무결성을 보장하기 위해 사용되며, 메시지 인증 태그를 제공하는 MAC을 위한 빌딩 블록(building block)이다. 추가적으로 원하는 이러한 해시 함수들의 속성은: 사전 이미지 저항(pre-image resistance), 두 번째 사전 이미지 저항(second pre-image resistance), 및 충돌 저항(collision resistance)이다. 정확하게 원하는 보안 강도를 제공하기 위하여, 임의의 다이제스트 사이즈의 구성들이 필요하다.
정보 보안의 분야에서조차도, 해시/MAC 함수에 대한 요구사항들이 느슨해질 수 있는 경우, 예컨대, 해시 함수의 입력과 출력 어느 것에도 공격자가 접근가능하지 않은 경우의 애플리케이션들이 존재한다. 이것은 난수 발생기가 그러한 경우에 해당할 수 있는데, 크지만 고정된 다수의 불완전한 엔트로피 소스들이 해시 함수의 입력을 제공하고, 이것이 그것들을 함께 "혼합(mix)"하고, 고정된 버퍼에 맞추기 위하여 그것들의 전체 사이즈를 감소시킬 때 그렇다. 원래의 엔트로피는 가능한 한 많이 보존되어야 한다. 엔트로피 비트들을 XOR 연산하는 것은 출력을 단일한 비트로 감소시키고, 또한 불완전하기 때문에 낭비적이다. 예를 들어, 엔트로피 소스들이 상관되었을(correlated) 때, 이들의 효과는 XOR 함수에 의해 제거될 수 있고, 상응하는 엔트로피가 상실된다. XOR은 배타적 논리합(exclusive disjunction) 또는 논리 XOR 연산으로도 지칭되는 배타적 논리합(exclusive OR: XOR)이다.
입력이 크되, 고정된 사이즈로 이루어진 경우인 다른 애플리케이션들도 존재한다. 가능한 한 입력으로부터 많은 엔트로피를 유지하면서 더 작은 사이즈로 감소되어야 한다. 예를 들어, 대형-블록 암호화(Skipjack, XCB…)에서 사용되는 언밸런스드 파이스텔 암호(unbalanced Feistel cipher)가 그러한 경우다. 이러한 경우들에서, 대형 비트-믹서 함수는 전자 하드웨어 내에 직접 구성될 수 있다. 원하는 다수의 비트들만이 출력되지 않거나, 출력 비트들이 비트와이즈 XOR 연산에 의해 원하는 길이로 폴딩된다(folded).
다른 애플리케이션들은 파일들과 같은 대형 데이터 세트들의 체크섬-타입 핑거프린트를 포함한다. CRC(Cyclic Redundancy Check) 알고리즘들은 흔히 데이터에서 랜덤 에러를 검출하기 위해 이용된다. 하지만, CRC 알고리즘들은 너무 간단해서, 예컨대 소정의 (종종 랜덤하게 발생하는) 복수의 에러들의 효과가 무효화될 수 있어서, 더욱 복잡한 데이터 무결성 검사가 요망된다.
만일 데이터의 악의적이고 의도적인 변경이 우려사항이 아니라 랜덤 에러들뿐이라면, 우리는 암호화 해시 함수들의 체계를 이용함으로써 비트-믹서들로부터 무결성 검사 해시 함수들을 만들 수 있다. 만일 비트-믹서들이 전자 하드웨어에서 구현된다면, 그 결과로 얻어지는 해시/MAC 함수들은 (단순한 비트-믹서들을 이용함으로써) 가장 단순한 구성들에서 덜 안전해서 모든 애플리케이션들에서 암호화 해시 함수들을 교체할 수 없다고 하더라도 현재의 표준 암호화 해시함수들보다 1000배 더 빠르다.
후술하는 비트-믹서들은 캐스케이딩될 수 있다(하나의 출력이 다음 비트-믹서의 입력이다). 충분히 많은 단계들에서, 캐스케이딩된 비트-믹서들은 안전한 암호(secure cipher)가 된다. 이러한 속성은 속도를 보안과 바꿀 수 있게 한다. 비트-믹서가 하드웨어에서 구현될 때, 모든 보안 레벨들에서 결과적으로 얻어지는 성능(속도, 전력)은 여전히 기존 솔루션들보다 적어도 수십 배이다. 비트-믹서들은 많은 양의 키 구성요소를 이용하는데, 이것은 가장 흔한 비트-믹서 구성들의 입력과 출력 중의 더 큰 것의 사이즈의 청크(chunk)들로 나누어진다. 이들은 "서브키(subkey)"라고 불린다. 만일 키 구성요소가 비밀로 유지되면, 이하의 구성들은 (키 구성요소에 대한 지식만을 가지고 누구나 메시지 인증 코드를 구성하거나 검증할 수 있는) MAC 함수들을 제공한다. 만일 키 구성요소가 고정되고(하드코딩되고), 공중에 공개되면(public), 이하의 구성들은 해시 함수들을 제공한다.
도 1은 본 발명의 예들에 따라서 비트-믹서에 대한 블록 다이어그램(100)을 도시한다. 비트-믹서(105)는 n-비트 입력(110)의 비트들과 연관된 비트 스트링을 키 구성요소(115)와 혼합해서 m-비트 출력(120)을 생성하도록 동작한다. 일반적으로, 비트-믹서들, 예컨대 비트-믹서(105)는 다음의 속성들을 가진다:
1. 비트-믹서들은 n-비트 입력을 n-비트 출력에 맵핑한다(n = 블록 사이즈이며, 이것은 실제 구현을 위해서 수 천개일 수 있다)
2. 혼합은 많은 양의 비밀키 구성요소에 의존한다(이것은 단일한 키로부터 발생되거나 진난수(true random number) 발생기에 의해 생성될 수 있으며; 가능하게는 이들의 조합에 의해 생성될 수 있다)
3. 모든 입력 비트는 비선형 방식으로 모든 출력 비트에 영향을 미친다
4. 입력 비트들 중의 대부분의 비어 있지 않은 세트들(이들은 키 구성요소와는 독립적으로 선택됨)도 모든 출력 비트에 영향을 미친다(아무런 영향도 제거되지 않는다)
5. 입력의 대부분의 일련의 변화들은 입력에 대한 또는 입력의 변화 패턴에 대한 외견상 코릴레이션(apparent correlation) 없이 출력을 내놓는다
실제로, 상응하는 비트-믹서들은 그 설계가 특정될 필요가 있다: 입력, 출력, 및 키 구성요소. 이것은 "구성(construction)"이라고 지칭된다. 복수의 비트-믹서들은 입력 스트링의 혼합을 향상시키기 위하여 (캐스케이딩에 대한 반대로서) 병렬로 결합될 수 있다. 도 2는 본 발명의 예들에 따라서, 전체 비트-믹서에 대한 블록 다이어그램(200)을 도시한다. 비트-믹서들(Mix1 (205), Mix2 (210), Mix3 (215), …, Mixk (220))은 동일한 n-비트 입력(225)을 수신하고, 그 출력들은 결합될 수 있고(230), (예컨대 비트와이즈 XOR 연산을 가지고) m-비트 출력으로서 출력될 수 있다(235). 이러한 구성은 회로 사이즈를 보안과 바꿀 수 있게 한다. 비트-믹서들은 또한 캐스케이딩될 수 있고(직렬로 연결될 수 있고, 가능하게는 기존 전자 회로들을 재사용함), 이 경우에 하나의 출력은 다음 비트-믹서의 입력이다. 충분히 많은 단계들에서, 비트-믹서들은 안전한 암호가 된다. 이러한 속성은 속도를 보안과 바꿀 수 있게 한다. 비트-믹서들이 하드웨어에서 구현될 때, 모든 보안 레벨들에서 결과적으로 얻어지는 성능(속도, 전력)은 여전히 기존 솔루션들보다 적어도 수십 배이다.
후술하는 도 5-8은 Galois 메시지 인증 코드(GMAC) 같은 구성을 도시하는 도 3 및 Merkle-Damgard 같은 구성을 도시하는 도 4의 비트-믹서들로서 이용될 수 있는 비트-믹서들의 특정한 예들을 도시하고, 양쪽 모두는 데이터 블록들을 순차적으로 처리한다.
도 3은 본 발명의 예들에 따라서 GCM 암호화 모드로부터 유도되는 바와 같은 GMAC 같은 구성(300) 구성에 따른 해시/MAC 함수를 도시한다. 카운터 모드 암호화 연산에서, 증가하는 카운터(카운터 0(302), 카운터 1(304), 카운터 2(306))는 AES와 같은 블록 암호 및 키 k 를 이용해서 각각 308, 310 312에서 암호화된다. 각각의 카운터들(302, 304, 306)은 추가적인 무작위성(randomness)을 제공하기 위하여 초기화 벡터(IV)와 결합될 수 있는데, 예컨대 이와 연결(concatenating)될 수 있다. 평문은 동일한 사이즈의 블록들, 평문 1(314) 및 평문 2(316)로 나누어지고, 암호문 1(318) 및 암호문 2(320)을 각각 생성하기 위하여 암호화된 카운터들(310, 312)과 XOR 연산된다. 해시/MAC 함수(340)는 암호문 1(318)(input y)과 함께 비트-믹서(328)에 대한 입력(326)(input x)으로서 제공되는 출력을 내놓는 비트-믹서(324)에 입력되는 인증 데이터(322)(Auth Data 1)(input x, input y = 0)를 포함한다. 암호문 2(320)(input y) 및 비트-믹서(328)의 출력(330)(input x)이 비트-믹서(332)에 제공된다. 비트-믹서(334)는 인증만 된(암호화가 안 된) 데이터인 일련의 데이터 A와 일련의 암호문(len(A) ∥ len(C)로 표시됨)의 연결의 값과 비트-믹서(332)의 출력을 수신한다. 비트-믹서(334)의 출력은 암호 Ek(308)에 의해서 암호화된 카운터 0(302)과 XOR 연산되어(XORed) 인증 태그(336)를 생성한다.
인증 태그(336)는 데이터의 블록들을 GHASH 함수에 넣어서 그 결과를 암호화함으로써 구성된다. 이 GHASH 함수는 다음과 같이 정의되는데,
GHASH(H, A, C) = Xm +n+1
여기서, H는 해시 키(Hash Key), 블록 암호(AES)를 이용해서 암호화된 128 제로 비트(zero bit)들의 스트링이고, A 는 인증만 된(암호화가 안 된) 데이터이고, C 는 암호문이고, m 은 A 에 있는 다수의 128 비트 블록들이고, n 은 C 에 있는 다수의 128 비트 블록들이고(A 및 C의 마지막 블록들은 정확히 128 비트들일 필요가 없음), i = 0, ..., m + n + 1 에 대해 변수 Xi는 다음과 같이 정의되는데,
여기서, M 은 키 구성요소 H: f(x,y) = MH(x ∥ y)와의 단순 또는 전체 비트-믹서이고, v 는 A의 마지막 블록의 비트 길이이고, u 는 C의 마지막 블록의 비트 길이이고, ∥ 는 비트 스트링들의 연결을 나타내고, len(A) 및 len(C)는 각각 A 및 C의 비트 길이들의 64-비트 표현이다. 이것은 각각의 Xi가 Xi -1에 의존하고 마지막 마지막 Xi가 출력으로서 보유되는 반복적 알고리즘이라는 점에 유의해야 한다.
도 4는 본 발명의 예들에 따라서 Merkle-Damgard 같은 구성(400)에 따른 해시/MAC 함수를 도시한다. Merkle-Damgard 같은 구성(400)은 안전한 압축 함수 f(402, 404, 406, 408)를 이용하는데, 여기서 입력은 출력보다 더 크다. 상이하게 번호가 매겨졌지만, 각각의 함수 f(402, 404, 406, 408)는 동일한 타입으로 이루어진다. 몇몇 예에서, 함수들 f(402, 404, 406, 408)은 가역적 (invertible) 비트-믹서들에 의해 구현될 수 있는데, 이들의 출력 비트들의 절반은 버려지고(또는 비트와이즈 XOR 연산에 의해 다른 절반에 폴딩된다). 몇몇 예에서, 비트-믹서, 예컨대, f(402)의 제1 서브키는 그 출력을 수정하지 않고 비트-믹서를 압축 함수로 만드는 입력으로서 처리될 수 있다. 평문은 n개의 동일한 사이즈 블록들, 메시지 블록 1(410), 메시지 블록 2(412), …, 메시지 블록 n(414)으로 나누어진다. 필요하다면 추가적인 패딩 비트들(길이 패딩(416))이 마지막 블록, 예컨대, 메시지 블록 n (414)에 추가될 수 있다. 제1 함수, 예컨대, f(402)는 초기화 벡터(IV)(418) 및 메시지 블록 1(410)을 입력으로서 수신한다. 마지막 함수, 예컨대, f(408)는 출력을 생성하는데(마무리 420), 이것은 이후에 해시 함수에 의해 해싱되어(hashed) 해시(422)를 생성한다.
함수 f(402, 404, 406, 408)는 고정된 사이즈(비트들에 있어서 길이)로 이루어진 2개의 입력들 x 및 y 를 가지고, 출력 z를 계산한다. IV는 소정의 애플리케이션들이 요구하는 바와 같이 마지막 해시 값을 변화시키는 일부 개인화 값 또는 고정된 상수이다. 형식적으로, i = 1…n 에 대해서, z1 = f(IV, B1) 및 zi +1 = f(zi, Bi+1)이다. 주어진 마무리 함수(finalization function) F에 대해 해시 값은 F(zi + 1)이다.
GHASH 함수는 일부 수정을 가진 Merkle-Damgard 구성의 인스턴스화이다. 메시지는 두 부분: A 및 C로 나뉜다. 패딩 체계는 명시적으로 정의되는데, 여기서 IV = 0 및 f(x,y) = fH(x,y) =(x y)·H이고, "해시 키(hash key)"라고 불리는 여분의 입력, 상수 H를 가진다. 마무리 함수는 또한 여분의 입력(EK)을 가진다: F(x) = x EK를 가진다.
도 5는 본 발명의 예시적인 구현들에 따라서 도 3 및 4의 비트-믹서로서 이용될 수 있는 절반-길이 키잉된 이중-믹스 파이스텔 네트워크(DMFN)(500)의 하나의 라운드를 도시한다. DMFN에서, 비트-믹서들을 압축하거나 확장하기 위해 요구되는 바와 같이 입력 비트를 반복함으로써 또는 출력 비트를 폴딩함으로써 블록 사이즈는 입력과 출력 사이즈들 중에 더 큰 것일 수 있다. 구체적으로 데이터는 2개의 반쪽 L 및 R로 처리된다. 모든 라운드, 즉 라운드i에서, 두 개의 함수 F 및 G는 Li와 Ri로부터 Li +1, Ri + 1를 계산한다. 제1 입력 L0와 R0는 비트-믹서의 입력으로 설정되는 반면, 마지막 값 Lr, Rr은 출력을 구성한다. Li +1은 F와 Ri의 출력의 비트와이즈 XOR 연산을 이용하여 생성되는 한편, 라운드 키 ki는 다음과 같이 Ri +1을 생성하기 위하여 G 의 출력과의 비트와이즈 XOR 연산을 이용하여 믹스인(mix-in)된다. DMFN을 위해, 업데이트된 왼쪽 반쪽(Li + 1)과 업데이트된 오른쪽 반쪽(Ri + 1)은 각각의 라운드 i = 0, 1, . . . , r-1에 대하여 계산될 수 있다:
Li +1=F(Li)Ri
Ri +1=G(Li)ki
앞에서, 제1 입력 L0과 R0은 비트-믹서의 입력으로 설정되는 반면, 마지막 값 Lr, Rr은 출력을 구성하고, F 와 G 는 제1 및 제2 라운드 함수들을 나타내고, ki는 라운드 키를 나타낸다. 라운드 r-1에서의 출력은 데이터의 업데이트된 블록(Lr, Rr)일 수 있다.
예시적인 구현들의 파이스텔 네트워크 및/또는 DMFN의 경우에, 라운드 함수(F)는 비선형 함수일 수 있다. 함수는 가역적일 수도 있고 또는 아닐 수도 있지만, 역(inverse)은 제1 함수가 가역적인 예들에서 계산하기 어려워야 한다(하지만 필수적이지는 않다)(일방향(one-way) 함수). 이 체계의 보안은, 라운드키 ki의 비밀유지(secrecy)에 의존할 수 있고, 역을 갖지 않거나 계산하기 어려운 역을 갖는 비선형인 F에 대한 요구사항들에 의존할 수 있다. 이 함수는 일부 예에서 라운드(예를 들면, Fi)에 의존적일 수 있지만, 다른 예에서 제1 함수는 라운드에 독립적일 수 있다.
적절한 라운드 함수(F)의 하나의 예는 각각이 입력 왼쪽 절반의 쉬프트된 버전(shifted version)들의 각각의 쌍을 위한 것인 복수의 논리 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 게이트의 지연에 2 개의 입력 NAND 게이트(AND 또는 NOR 게이트가 동일하게 잘 작동함에도 불구하고)의 지연을 더한 시간만을 필요로 할 수 있는데, 이것은 최적화된 셀 라이브러리(cell library)를 이용하면, 4개의 NAND2 게이트 지연에 해당하는 시간일 수 있다. 본 명세서에서 사용될 때, NOR 게이트는 Not-OR, Negative-OR, 또는 Negated-OR 논리 함수를 구현하는 것이다.
DMFN의 경우에, 제2 라운드 함수(G)는 가역적일 수 있지만, 그것의 역이 쉽게 계산될 수 있을 필요는 없다. 제1 함수(F)와 유사하게, 제2 함수는 일부 예에서 라운드(예컨대, Gi)에 의존적일 수 있지만, 다른 예에서 제2 함수는 라운드에 독립적일 수 있다(모든 라운드에서 동일함).
몇몇 예에서, 비선형 대입 박스(s-box)의 레이어는 제2 함수(G)에 대해 이용될 수 있고, 그것의 맵핑을 비선형으로 만들 수 있다. 다른 예에서, 제2 함수는 왼쪽 절반의 순환 시프트 또는 로테이션을 수행할 수 있고, 이는 업데이트된 오른쪽 절반을 계산하기 위해 라운드 키를 가지고 함께 혼합될 수 있다. 더욱 구체적인 예에서, 제2 함수는 왼쪽 절반의 3개의 순환-쉬프트된 버전들을 생성할 수 있고, 이들의 동일한 위치에 있는 각각의 3개의 비트들은 결과로 얻어지는 업데이트된 오른쪽 절반의 비트를 생성하기 위해 이 위치에 있는 라운드 키의 비트를 가지고 함께 XOR 연산될 수 있다. 이와 관련하여, 블록 길이들=2n(여기서 n은 양의 정수)에서, 데이터의 임의의 3개의 순환 쉬프트된 버전들을 XOR 연산하는 것은 가역적 함수를 정의한다. 제1 함수와 유사하게, 하드웨어 구현에서, 이러한 시프트 또는 로테이션은 적절한 배선으로 단순히 구현될 수 있기 때문에 시간을 소비하지 않을 수 있다. 그래서, 제2 함수 및 믹싱 연산들은 2개의 XOR 게이트 지연의 시간만을 필요로 할 수 있고, 이들 각각은 최적화된 셀 라이브러리를 이용하면 1.5 내지 3 NAND2 (2-input NAND) 게이트 지연에 해당하는 시간을 가질 수 있다.
만일 가역적 비트-믹서가 필요하면, G(또는 모든 Gi)는 반드시 가역적 함수여야 한다. G의 역은 비트-믹서의 역이 필요하지 않으면 쉽게 계산될 필요가 없다. 그래서, 이것은 전형적인 비선형, 가역적 S-Box 레이어들보다 더 빠를 수 있다. 이러한 함수 G의 예는 주어진 순환 거리(circular distance)(d1, d2)로부터의 2개의 입력 비트들을 가지고 G의 각각의 입력 비트를 XOR 연산하는 것일 것이다. 블록 길이들의 2의 거듭제곱에서, 출력 비트들이 주어진 순환 거리로부터의 3개의 입력 비트들의 XOR로서 계산될 때, 가역적 함수가 획득된다. 하드웨어 구현에 대해, 만일 필요한 라우팅이 과도하게 길지 않도록 d1 및 d2가 크지 않으면, 함수 G를 계산하는 것과 라운드 키를 XOR 연산하는 것은 최소한의 시간이 걸린다.
만일 비선형 비트-믹서가 필요하면, F는 비선형 함수이어야 한다. F는 역방향(reverse direction)에서 그 역이 심지어 비트믹서의 역을 위해 필요하지 않기 때문에 가역적일 필요가 없다. 하나의 예시적인 구현에서, 빠르고 충분히 복잡한 구성이 이용되는데, 이것은 다음과 같이 2진 다항식의 갈로이스 필드(Galois field)에서 비선형이다:
1. 순환 거리 d3 및 d4로부터 Li의 2개의 시프트된 버전들을 NAND 연산함
2. 순환 거리 d5 및 d6에서 Li의 2개의 다른 시프트된 버전들을 NOR 연산함
3. 순환거리 d7 및 d8에서 Li의 2개의 또 다른 시프트된 버전들을 NAND 연산함
4. Li에 대해 위의 3개의 비트 블록들을 XOR 연산함
하드웨어 구현에서, 쉬프트는 본질적으로 시간을 거의 소모하지 않고 자유롭다. 따라서, F 및 G는 경로 길이가 거의 동일하며, 부 채널 유출을 감소시키기 위해, 중요한 타이밍 경로의 균형을 맞추기 위한 적당한 양의 수작업만을 필요로 한다. 모든 라운드가 아니더라도 소정의 라운드에서 F와 G는 상이할 수 있고, 또는 구현시 모든 라운드에서 동일하게 유지될 수 있다.
가역적 함수 G를 가짐으로써, DMFN은 가역적이라는 점에 유의해야 한다: 라운드 키 ki 및 G의 역을 알면, Li는 아래에서 위로, 즉, Ri +l로부터 Li가 계산될 수 있다. Li를 가지고, F(Li)가 계산될 수 있고, 이것은 Ri를 산출하기 위해 Li +l에 대해 XOR연산된다. 가역성(invertibility)은 종종 유용한 속성이다. 이것은 모든 가능한 출력 값들을 발생시키며, 어떠한 2개의 상이한 입력 값들도 동일한 출력을 제공하지 않는다는 것을 보장한다.
이전에 설명하고 도 5에서 도시된 바와 같이, 절반-길이 서브키 ki는 각 라운드에서 G와 혼합된다. 도 6에서 도시된 바와 같이, 예를 들어 다른 절반-길이 서브키가 Ri와 혼합되면, 전체 블록 길이의 서브키는 뚜렷한 믹싱(mixing) 향상이 발견되지 않는다. 그럼에도 불구하고, 이 구성은 상이하고, 상이한 애플리케이션들을 위해 적절하다.
이제 도 6을 참조하는데, 이것은 다른 예시적인 구현에 따라서 도 3 및 4의 비트-믹서로서 이용될 수 있는 DMFN(600)의 하나의 라운드를 나타낸다. DMFN에서, Li+l 대신에 Ri +l을 변화시키기 위해 라운드 키 ki를 적용함으로써, 2개의 절반을 계산하는 작업이 균형을 이룰 수 있다. 즉, 2개의 절반은 동시에 이용가능하게 될 수 있다. 그러나 Ri는 제1 함수(F)가 적용되는 동안 이용되지 않을 수 있다. 따라서 도 6에 도시된 바와 같이, Ri는 균형을 뒤집지 않고 또 다른 라운드 키 hi와 혼합될 수 있다. 그리고, Ri +l 및 Li +l 양쪽 모두 키 구성요소에 의해 영향을 받을 수 있다. 도 6에서 도시된 DMFN은 유사한 복잡도의 함수가 제1 함수(F) 및 제2 함수(G)를 위해 선택되었을 때 더 나은 전체 믹싱 속성을 달성할 수 있다. 제2 함수가 제1 함수보다 더 느리게 계산되는 경우와 같은 다른 예에서, ki의 혼합은 생략될 수 있으며, 이것은 믹싱 속성에 있어서 도 5에서 도시된 DMFN과 유사한 체계를 초래할 수 있지만, 살짝 더 빠르다. DMFN을 위해, 업데이트된 왼쪽 절반(Li +l) 및 업데이트된 오른쪽 절반(Ri+l)은 각각의 라운드 I = 0, 1, ..., r-1에 대해 계산될 수 있다:
Li +1=F(Li)Ri hi
Ri +1=G(Li)ki
앞에서, 제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은 본 발명의 실시예에 따른 도 3 및 4의 비트-믹서로서 이용될 수 있는 대입-치환 네트워크(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. PRINTcipher: A Block Cipher for IC-Printing. Cryptographic Hardware and Embedded Systems, CHES 2010 Volume 6225 of the series Lecture Notes in Computer Science, pp 16-32 에 의해 설명된 바와 같이, PRINTcipher에서 구현된다. 이러한 3x3 S-Box의 3개의 출력 비트는 다음과 같이 정의된다:
도 8은 다양한 실시예에 따라서 도 3 및 4의 비트-믹서로서 이용될 수 있는 XOR 트리(800)를 나타낸다. XOR 트리를 이용하는 예시에 따라, 믹싱 함수는 비밀 랜덤 고정 데이터 세트, 키 구성요소 및 데이터의 입력 블록을 기초로 할 수 있다. 이와 관련하여, 서브-키는 데이터의 입력 블록에서 소정의 비트들의 위치들에 대응하는 위치들에서 블록들의 시퀸스(sequence) 내의 비밀 랜덤 숫자들의 블록들일 수 있는데, 예컨대, 이 비트들은 (예컨대, 멀티플렉서 회로들을 이용해서) 상응하는 서브-키들을 선택한다. 그 후 서브-키들은 XOR 트리를 이용하여 함께 혼합될 수 있다.
도 8에서 도시된 바와 같이, XOR 트리(800)는 데이터 병합 연산(data merger operation)을 수행하기 위해 구현될 수 있는 복수의 XOR 로직 게이트들을 포함할 수 있다. 도 8에서, 로직 게이트들 각각은 일련의 게이트들을 나타내며, 이들이 동작하는 서브키들의 각 비트에 대해 하나씩 존재한다.
XOR-트리 기반 비트-믹서에서, 입력들은 복수의, 임의의 길이의, 연속적인 비트들의 비어 있지 않은 세트들로 분할되어, 비트 그룹들을 형성한다. 각각의 그룹으로부터의 비트들은 멀티플렉서를 이용해서 키 구성요소로부터 서브키를 선택하고, 이것의 출력들은 함께 비트와이즈 XOR 연산되어, 마지막 비트-믹서 출력을 생성한다. XOR 연산은 전형적으로 ASIC에서 2개의 입력 XOR 게이트들의 트리를 이용하여 구현되는 한편, 다중-입력 게이트 또는 패리티 발생 회로(parity generation circuit)는 예를 들면, 넓은 룩업 테이블(lookup table)을 제공하는 FPGA에서 타겟 기술에 따라 이용될 수 있다. 이러한 구성의 비트-믹서들은 바로 쉽게 구현될 뿐만 아니라, 고성능, 저전력 소비, 향상된 보안, 및 최소의 부 채널 공격 표면을 제공한다.
XOR-트리 기반 비트-믹서의 입력의 폭 및 출력의 폭은 독립적으로 선택될 수 있고, 확대 및 압축 함수들은 각각 더 긴 출력 폭 또는 더 긴 입력 폭을 선택함으로써 생성된다. 랜덤 키 구성요소를 가짐으로써, 임의의 단일 입력 비트 변경은 랜덤 서브키에 의해 출력이 변경되는 것을 초래할 것이다. 따라서, 모든 출력 비트는 임의의 비트 변경에 의해 영향을 받는다. 더 나아가, 비트-믹서 구성을 고려하면, 다중 입력 비트 변경은 자체적으로 랜덤인 랜덤 서브키들의 XOR 연산된 집합에 의해 출력이 변경되는 것을 초래할 것이다. 최종적으로, XOR-트리 기반 비트-믹서는 상술한 원하는 속성들 각각을 충족시키고 이론적으로 완전한 혼합을 보장한다.
XOR-트리 구성은 2진 갈로이스 필드(Galois field)에서 선형인데, 이것이 비트 선택 및 XOR 연산만을 이용하기 때문이다. 이러한 구성에서 일부 4-방향 코릴레이션(4-way correlation)들이 단순히 코릴레이팅된 입력 값으로부터 계산된 소정의 출력 값들 사이에 존재한다. 이러한 경우, 코릴레이션은 다음과 같이 일어난다. 적어도 2개의 입력 비트-그룹들을 가정해서, 입력 비트-그룹들 B중의 하나에서 비트 b를 선택하고, 상이한 입력 비트-그룹 C에서 비트 c를 선택한다. b를 제외한 그룹 B의 모든 비트들을 일정하게 유지하는데, K0는 b가 로직 0일 때 선택된 서브키를 나타내고 K1은 b가 로직 1일 때 선택된 서브키를 나타내도록 한다. 유사하게 L0 및 L1은 그룹 C의 다른 비트들이 일정하게 유지되는 동안 c의 로직 값을 기초로 하여 선택된 서브 키들을 나타내도록 한다. 마지막으로, M은 입력들이 일정하게 홀딩되는 경우 다른 입력 비트-그룹들에 의해 선택된 모든 서브키들의 XOR을 나타내도록 한다(만약 비트-그룹이 더이상 없다면 0). b 및 c의 모든 가능한 2x2 값들로부터의 결과인 출력 값들의 XOR은 0을 산출할 것인데, 이것이 "4-방향 코릴레이션(4-way correlation)"이라고 불리는 것이다.
(M K0 L0)(M K1 L0) (M K0 L1)(M K1 L1) = 0
출력 값이 관찰될 수 없는 애플리케이션에서, 이러한 유형의 코릴레이션은 회로의 보안과 관련된 문제를 제기하지 않는다. 이러한 코릴레이션이 중요한 애플리케이션에 대해, 출력은: S-Box와 같은 병렬 수집 소형 비선형 함수(parallel collection small nonlinear function); 원래의 출력과 함께 XOR 연산된 S-Box들과 같은 비선형 함수들의 집합의 출력들;(마이크로프로세서 구현에 적합한) RAX(Rotate-Add-XOR) 구성들;과 같은 비선형 함수에 의해 더 처리될 수 있다. 구성을 비선형으로 만들기 위한 또 다른 방법은 XOR-트리의 하나 이상의 레벨에서 XOR 연산을 도 7에서 보여진 것과 유사한 k-대-1(k-to-1) 비선형 S-box로 대체하는 것이다. 구현하기 쉽지만, 추가적으로 고르지 않은 회로 지연은 낮은 부 채널 유출을 위해 균형을 맞추는 수동 신호 전파(manual signal propagation)를 필요로 할 수 있다. 적당한 수준의 노력으로, XOR-트리의 하나의 레벨을 S-Box로 대체함으로써 1.0㎓ 이상의 클럭 속도로 단일 클럭 사이클 작동을 달성할 수 있다.
도 9는 본 발명의 예들에 따라서 도 3 및 4의 구성을 이용할 수 있는 메시지 인증을 위한 시스템(900)을 도시한다. 메시지(904)의 송신기(902)는 MAC 데이터 태그(908)를 생성하기 위하여 제1 및 마지막 메시지 블록들 내에 통합된 비밀키들과 함께 MAC 알고리즘(906), 예컨대, 도 3의 GMAC 같은 구성 또는 도 4의 Merkle-Damgard 같은 구성을 통해서 그것을 실행한다. 이후, 메시지(904)와 MAC 태그(908)는 수신기(910)에 보내진다. 그리고, 수신기(910)는 동일한 키를 이용해서 동일한 MAC 알고리즘(906)을 통해서 전송의 메시지 부분을 실행해서, 제2 MAC 데이터 태그(912)를 생성한다. 이후, 수신기(910)는 전송에서 수신된 제1 MAC 태그(908)를 생성된 제2 MAC 태그(912)와 비교한다. 만일 이들이 동일하면, 수신기(910)는 전송 동안 메시지가 변경되지 않았거나 변조되지 않았다는 것을 안전하게 가정할 수 있다(데이터 무결성).
도 10은 본 발명의 예들에 따라서 메시지 인증 태그를 생성하기 위한 방법(1000)을 도시한다. 본 방법은 1005에서 메시지를 획득함으로써 시작된다. 메시지는 사전 항목(dictionary entry), 파일의 내용 등과 같은 임의의 데이터 또는 임의의 입력일 수 있다. 메시지는 평문, 암호문(encrypted), 또는 전자 포맷으로 된 임의의 다른 타입의 데이터일 수 있다. 본 방법은 계속해서 1010에서 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록으로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할한다. 본 방법은 계속해서 1015에서 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행한다. 본 방법은 계속해서 1020에서 이전 메시지 블록으로 하나 이상의 후속 메시지 블록 및 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행한다. 본 방법은 계속해서 1025에서 제1 비트-믹싱 연산 및 후속 비트-믹싱 연산을 기초로 하여 메시지 인증 태그를 생성한다. 비트-믹싱 연산들은 도 5 및 6의 이중-믹스 파이스텔 네트워크, 도 7의 대입-치환 네트워크, 도 8의 XOR 트리에 기초한 비트-믹서 구성; 또는 도 2의 하나 이상의 비트-믹서 구성들의 병렬 조합에 의해 수행될 수 있다.
몇몇 예에서, 본 방법은 1030에서 동일한 사이즈의 메시지 블록들을 만들기 위하여 마지막 메시지 블록을 패딩하는 것을 더 포함할 수 있다. 몇몇 예에서, 본 방법은 1035에서 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 동일한 사이즈의 메시지 블록들 각각을 암호화하는 것을 더 포함할 수 있다. 몇몇 예에서, 본 방법은 1040에서 일련의 인증 데이터와 일련의 암호문 블록의 연결(concatenation) 및 마지막 메시지 블록에 기초한 출력으로 마지막 비트-믹싱 연산을 수행하는 것, 및 비밀키로 블록 암호화 알고리즘을 이용하여 암호화된 암호화 NULL 카운터(encrypted null counter)와 마지막 비트-믹싱 연산의 출력으로 배타적 논리합 연산을 수행하는 것을 더 포함할 수 있다. 몇몇 예에서, 본 방법은 1045에서 메시지와 함께 메시지 인증 태그를 수신기에 보내는 것을 더 포함할 수 있고, 여기서 메시지는 평문이거나 암호화되어 있다.
도 11은 본 발명의 예들에 따라서 메시지에 대한 해시 값을 생성하기 위한 방법(1100)을 도시한다. 본 방법은 1105에서 메시지를 획득함으로써 시작된다. 메시지는 사전 항목(dictionary entry), 파일의 내용 등과 같은 임의의 데이터 또는 임의의 입력일 수 있다. 메시지는 평문, 암호문(encrypted), 또는 전자 포맷으로 된 임의의 다른 타입의 데이터일 수 있다. 본 방법은 계속해서 1110에서 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할한다. 몇몇 예에서, 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록은 암호화된 메시지 블록들이다. 본 방법은 계속해서 1115에서 초기화 값으로 제1 메시지 블록에 제1 비트-믹싱 연산을 수행한다. 본 방법은 계속해서 1120에서 이전 메시지 블록으로 하나 이상의 후속 메시지 블록 및 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행한다. 제1 비트-믹싱 연산 및 후속 비트-믹싱 연산은 공개된 키 구성요소를 이용한다. 몇몇 예에서, 비트-믹싱 연산들은 도 5 및 6의 이중-믹스 파이스텔 네트워크, 도 7의 대입-치환 네트워크, 도 8의 XOR 트리에 기초한 비트-믹서 구성; 또는 도 2의 하나 이상의 비트-믹서 구성들의 병렬 조합에 의해 수행될 수 있다. 본 방법은 계속해서 1125에서 제1 비트-믹싱 연산 및 후속 비트-믹싱 연산을 기초로 하여 해시 값을 결정한다.
몇몇 예에서, 본 방법은 1130에서 동일한 사이즈의 메시지 블록들을 만들기 위하여 마지막 메시지 블록을 패딩하는 것을 더 포함할 수 있다. 몇몇 예에서, 본 방법은 1135에서 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 동일한 사이즈의 메시지 블록들 각각을 암호화하는 것을 더 포함할 수 있다. 몇몇 예에서, 본 방법(1100)은 1140에서 해시 값 계산에서 수행된 모든 다른 비트-믹싱 연산과는 차이가 있는 비트-믹싱 연산을 마지막 메시지 블록에 수행하는 것을 더 포함할 수 있고, 그 차이는 제1 비트-믹싱 연산 및 후속 비트-믹싱 연산, 키 구성요소, 또는 양쪽 모두에서 사용되는 비트-믹서의 구성이다. 몇몇 예에서, 본 방법(1100)은 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 동일한 사이즈의 메시지 블록들 각각을 암호화하는 것을 더 포함할 수 있다.
도 12는 상술한 처리들 중의 하나 이상을 수행하는데 이용될 수 있는 모바일 디바이스 또는 서버로서 사용될 수 있는 컴퓨터 디바이스(1200)를 위한 하드웨어 구성의 예를 도시한다. 도 12는 컴퓨터 디바이스(1200)에 들어 있는 다양한 구성요소들을 도시하지만, 도 12는 컴퓨터 디바이스의 하나의 예이고, 추가적인 구성요소들이 부가될 수 있고, 기존 구성요소들이 제거될 수 있다.
컴퓨터 디바이스(1200)는 데스크톱, 랩톱, 서버 등과 같은 컴퓨터 디바이스, 또는 스마트 전화, 타블렛 컴퓨터, 셀룰러 전화, 퍼스널 디지털 어시스턴스 등과 같은 모바일 디바이스 중의 임의의 타입일 수 있다. 도 12에서 도시된 바와 같이, 컴퓨터 디바이스(1200)는 다양한 코어 구성 및 클럭 주파수로 이루어진 하나 이상의 프로세서(1202)를 포함할 수 있다. 컴퓨터 디바이스(1200)는 컴퓨터 디바이스(1200)의 연산 동안 메인 메모리로서 기능하는 하나 이상의 메모리 디바이스(1204)를 포함할 수 있다. 예를 들어, 연산 동안, 상술한 연산들을 지원하는 소프트웨어의 하나의 카피(copy)가 하나 이상의 메모리 디바이스(1204)에 저장될 수 있다. 컴퓨터 디바이스(1200)는 또한 컴퓨터 디바이스(1200)와의 인간 상호작용 및 조작을 가능하게 하기 위해 키보드, 마우스, 터치패드, 컴퓨터 스크린과 같은 하나 이상의 주변장치 인터페이스(1206)를 포함할 수 있다.
컴퓨터 디바이스(1200)는 또한 프로토콜을 이용해서 유선 또는 무선 매체를 통해 통신하기 위한 직렬 네트워크 구성요소 또는 이더넷 어댑터, 무선 트랜시버와 같은 하나 이상의 네트워크를 통해 통신하기 위한 하나 이상의 네트워크 인터페이스(1208)를 포함할 수 있다. 컴퓨터 디바이스(1200)는 또한 하나 이상의 프로세서(1202)에 의한 실행을 위한 프로그램 인스트럭션, 및 이미지, 파일과 같은 데이터를 저장하기 위해 플래시 드라이브, 하드 드라이브, 랜덤 액세스 메모리 등과 같은 변하는 물리적 차원 및 저장 용량으로 이루어진 하나 이상의 저장 디바이스(1210)를 포함할 수 있다.
추가적으로, 컴퓨터 디바이스(1200)는 상술한 기능을 가능하게 하는 하나 이상의 소프트웨어 프로그램(1212)을 포함할 수 있다. 하나 이상의 소프트웨어 프로그램(1212)은 하나 이상의 프로세서(1202)로 하여금 상술한 처리들을 수행하도록 초래하는 인스트럭션들을 포함할 수 있다. 하나 이상의 소프트웨어 프로그램(1212)의 카피는 하나 이상의 메모리 디바이스(1204) 및/또는 하나 이상의 저장 디바이스(1210)에 저장될 수 있다. 마찬가지로, 하나 이상의 소프트웨어 프로그램(1212)에 의해 이용되는 데이터는 하나 이상의 메모리 디바이스(1204) 및/또는 하나 이상의 저장 디바이스(1210)에 저장될 수 있다.
구현에 있어서, 컴퓨터 디바이스(1200)는 네트워크(1216)를 통해 다른 디바이스와 통신할 수 있다. 다른 디바이스는 상술한 바와 같은 임의의 타입의 디바이스일 수 있다. 네트워크(1216)는 LAN, WAN, 버추얼 프라이빗 네트워크, 인터넷, 인트라넷, 익스트라넷, PSTN, 적외선 네트워크, 무선 네트워크, 및 이들의 임의의 조합과 같은 임의의 타입의 네트워크일 수 있다. 네트워크(1216)는 TCP/IP, UDP, OSI, FTP, UPnP, NFS, CIFS, AppleTalk 등과 같은 다양한 상업적으로 입수가능한 프로토콜들 중의 임의의 것을 이용해서 통신을 지원할 수 있다. 네트워크(1216)는, 예를 들어, LAN, WAN, 버추얼 프라이빗 네트워크, 인터넷, 인트라넷, 익스트라넷, PSTN, 적외선 네트워크, 무선 네트워크, 및 이들의 임의의 조합일 수 있다.
컴퓨터 디바이스(1200)는 다양한 데이터 저장소 및 상술한 바와 같은 다른 메모리 및 저장 매체를 포함할 수 있다. 이것은 네트워크를 가로질러 임의의 또는 모든 컴퓨터들로부터 원격이거나 또는 컴퓨터들 중의 하나 이상에 로컬인(및/또는 내에 존재하는) 저장 매체와 같이 다양한 위치에 존재할 수 있다. 일부 구현들에서, 정보는 당업자에게 익숙한 스토리지-에어리어 네트워크(storage area network: SAN) 내에 존재할 수 있다. 유사하게, 컴퓨터들, 서버들, 또는 다른 네트워크 디바이스들에 기인한 기능들을 수행하기 위해 필요한 임의의 파일들은 적절하게 로컬에 및/또는 원격으로 저장될 수 있다.
구현에 있어서, 상술한 바와 같은 컴퓨터 디바이스(1200)의 구성요소들은 단일한 인클로저(enclosure) 내에 들어 있을 필요가 없고, 심지어 서로 매우 근접하게 위치해 있을 필요가 없다. 컴퓨터 디바이스(1200)는 본 발명의 구현들을 수행하기 위하여 임의의 필요한 수반된 펌웨어 또는 소프트웨어를 포함하여 임의의 타입의 하드웨어 구성요소를 포함할 수 있기 때문에 상술한 구성요소들은 단지 예시라는 것을 통상의 기술자는 이해할 것이다. 컴퓨터 디바이스(1200)는 또한 애플리케이션-특정 집적회로(ASIC) 또는 필드-프로그램가능 게이트 어레이(FPGA)와 같은 전자 회로 구성요소들 또는 프로세서들에 의해 부분적으로 또는 전체적으로 수행될 수 있다.
게다가, 본 발명은 이하의 항목들에 따른 실시예들을 포함한다:
항목 1: 메시지 인증 태그를 생성하기 위한, 컴퓨터로 구현된 방법으로서, 상기 방법은: 메시지를 획득하는 단계; 전자 프로세서에 의하여, 상기 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록으로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할하는 단계; 상기 전자 프로세서에 의하여, 초기화 값으로 상기 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 상기 전자 프로세서에 의하여, 이전 메시지 블록으로 상기 하나 이상의 후속 메시지 블록 및 상기 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 및 상기 전자 프로세서에 의하여, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산을 기초로 하여 상기 메시지 인증 태그를 생성하는 단계;를 포함하는 것을 특징으로 하는 방법.
항목 2: 항목 1에 있어서, 상기 메시지는 평문 메시지 또는 암호화된 메시지인 것을 특징으로 하는 방법.
항목 3: 항목 1에 있어서, 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 상기 동일한 사이즈의 메시지 블록들 각각을 암호화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
항목 4: 항목 1에 있어서, 상기 제1 메시지 블록, 상기 하나 이상의 후속 메시지 블록, 및 상기 마지막 메시지 블록은 암호화된 메시지 블록들인 것을 특징으로 하는 방법.
항목 5: 항목 1에 있어서, 상기 메시지와 함께 상기 메시지 인증 태그를 수신기에 보내는 단계를 더 포함하고, 상기 메시지는 평문인 것을 특징으로 하는 방법.
항목 6: 항목 1에 있어서, 상기 메시지와 함께 상기 메시지 인증 태그를 수신기에 보내는 단계를 더 포함하고, 상기 메시지는 암호화된 것을 특징으로 하는 방법.
항목 7: 항목 1에 있어서, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크, 대입-치환 네트워크, 배타적 논리합(XOR) 트리를 기초로 한 비트-믹서 구성 또는 둘 이상의 비트-믹서 구성들의 병렬 조합에 의해 수행되는 것을 특징으로 하는 방법.
항목 8: 항목 1에 있어서, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 키 구성요소를 이용해서 수행되는 것을 특징으로 하는 방법.
항목 9: 항목 8에 있어서, 상기 키 구성요소는 비밀로 유지되고, 상기 메시지 인증 태그는 메시지 인증 코드인 것을 특징으로 하는 방법.
항목 10: 항목 1에 있어서, 일련의 인증 데이터 (A)와 일련의 암호문 블록(C)의 연결(concatenation) 및 마지막 메시지 블록에 기초한 출력으로 마지막 비트-믹싱 연산을 수행하는 단계; 및 비밀키로 블록 암호화 알고리즘을 이용하여 암호화된 암호화 NULL 카운터(encrypted null counter) 와 상기 마지막 비트-믹싱 연산의 출력으로 배타적 논리합 연산을 수행하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
항목 11: 항목 1에 있어서, 동일한 사이즈의 블록들을 만들기 위하여 상기 마지막 메시지 블록을 패딩(padding)하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
항목 12: 메시지에 대한 해시 값을 생성하기 위한, 컴퓨터로 구현된 방법으로서, 상기 방법은: 상기 메시지를 획득하는 단계; 전자 프로세서에 의하여, 상기 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록으로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할하는 단계; 상기 전자 프로세서에 의하여, 초기화 값으로 상기 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 상기 전자 프로세서에 의하여, 이전 메시지 블록으로 상기 하나 이상의 후속 메시지 블록 및 상기 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 및 상기 전자 프로세서에 의하여, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산을 기초로 하여 상기 해시 값을 생성하는 단계;를 포함하는 것을 특징으로 하는 방법.
항목 13: 항목 12에 있어서, 상기 메시지는 평문 메시지, 암호화된 메시지, 또는 전자 포맷의 임의의 다른 타입의 데이터인 것을 특징으로 하는 방법.
항목 14: 항목 12에 있어서, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 공개된 키 구성요소를 이용하는 것을 특징으로 하는 방법.
항목 15: 항목 12에 있어서, 마지막 비트-믹싱 연산을 마지막 메시지 블록에 수행하는 단계를 더 포함하고, 상기 마지막 비트-믹싱 연산은 해시 값을 계산하는 데에 수행된 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산과는 차이가 있고, 차이는 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산에서 사용된 비트-믹서의 구성, 키 구성요소, 또는 양쪽 모두에서 사용되는 비트-믹서의 구성인 것을 특징으로 하는 방법.
항목 16: 항목 12에 있어서, 다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘으로 상기 동일한 사이즈의 메시지 블록들 각각을 암호화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
항목 17: 항목 12에 있어서, 상기 제1 메시지 블록, 상기 하나 이상의 후속 메시지 블록, 및 상기 마지막 메시지 블록은 암호화된 메시지 블록들인 것을 특징으로 하는 방법.
항목 18: 항목 12에 있어서, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크, 대입-치환 네트워크, XOR 트리를 기초로 한 비트-믹서 구성 또는 둘 이상의 비트-믹서 구성들의 병렬 조합에 의해 수행되는 것을 특징으로 하는 방법.
항목 19: 컴퓨터 시스템으로서: 전자 프로세서; 상기 전자 프로세서에 의해 실행될 때 메시지 인증 태그를 생성하기 위한 방법을 수행하는 인스트럭션들을 저장하는 비일시적 컴퓨터 판독가능 매체;를 포함하고, 상기 방법은: 메시지를 획득하는 단계; 상기 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록으로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할하는 단계; 초기화 값으로 상기 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 이전 메시지 블록으로 상기 하나 이상의 후속 메시지 블록 및 상기 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 및 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산을 기초로 하여 상기 메시지 인증 태그를 생성하는 단계;를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
항목 20: 항목 19에 있어서, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크, 대입-치환 네트워크, XOR 트리를 기초로 한 비트-믹서 구성 또는 둘 이상의 비트-믹서 구성들의 병렬 조합에 의해 수행되는 것을 특징으로 하는 컴퓨터 시스템.
항목 21: 항목 19에 있어서, 상기 전자 프로세서는 상기 방법을 수행하도록 더 작동가능하고, 상기 방법은: 일련의 인증 데이터와 일련의 암호문 블록의 연결(concatenation) 및 마지막 메시지 블록에 기초한 출력으로 마지막 비트-믹싱 연산을 수행하는 단계; 및 블록 암호화 알고리즘을 이용하여 암호화된 암호화 NULL 카운터(encrypted null counter)와 상기 마지막 비트-믹싱 연산의 출력으로 배타적 논리합 연산을 수행하는 단계;를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
항목 22: 컴퓨터 시스템으로서: 전자 프로세서; 상기 전자 프로세서에 의해 실행될 때 해시 값을 생성하기 위한 방법을 수행하는 인스트럭션들을 저장하는 비일시적 컴퓨터 판독가능 매체;를 포함하고, 상기 방법은: 메시지를 획득하는 단계; 상기 메시지를 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록으로 구성된 다수의 동일한 사이즈의 메시지 블록들로 분할하는 단계; 초기화 값으로 상기 제1 메시지 블록에 제1 비트-믹싱 연산을 수행하는 단계; 처리된 이전 메시지 블록으로 상기 하나 이상의 후속 메시지 블록 및 상기 마지막 메시지 블록에 후속 비트-믹싱 연산을 수행하는 단계; 및 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산을 기초로 하여 상기 해시 값을 생성하는 단계;를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
항목 23: 항목 22에 있어서, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크, 대입-치환 네트워크, XOR 트리를 기초로 한 비트-믹서 구성 또는 둘 이상의 비트-믹서 구성들의 병렬 조합에 의해 수행되는 것을 특징으로 하는 컴퓨터 시스템.
항목 24: 항목 22에 있어서, 상기 전자 프로세서는 상기 방법을 수행하도록 더 작동가능하고, 상기 방법은: 마지막 메시지 블록을 기초로 한 출력으로 마지막 비트-믹싱 연산을 수행하는 단계; 해시 값의 생성에 있어서 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산과는 상이한 비트-믹서로 마지막 비트-믹싱 연산을 수행하는 단계;를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
만일 소프트웨어로 구현된다면, 함수들은 하나 이상의 인스트럭션 또는 코드로서 컴퓨터-판독가능 매체를 통해 전송되거나 컴퓨터-판독가능 매체 상에 저장될 수 있다. 컴퓨터-판독가능 매체는 한 장소에서 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 유형의(tangible) 비일시적 컴퓨터 저장 매체 및 통신 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 유형의 비일시적 매체일 수 있다. 제한은 아니되 예시로서, 이러한 유형의 비일시적 컴퓨터-판독가능 매체는 RAM, ROM, 플래시 메모리, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 매체, 자기 디스크 저장 매체, 또는 다른 자기 저장 디바이스들, 또는 컴퓨터에 의해 액세스될 수 있고 인스트럭션 또는 데이터 구조의 형태로 원하는 프로그램 코드를 운반 또는 저장하는 데에 이용될 수 있는 임의의 다른 매체를 포함할 수 있다. 본 명세서에서 사용될 때, 디스크(disk) 및 디스크(disc)는 CD, 레이저 디스크, 광학 디스크, DVD, 플로피 디스크, 및 블루레이 디스크를 포함하고, 여기서 디스크(disk)는 통상적으로 자기적으로 데이터를 재생성하는 반면, 디스크(disc)는 레이저를 가지고 광학적으로 데이터를 재생성한다. 또한, 임의의 연결이 적절하게 컴퓨터-판독가능 매체라고 지칭된다. 예를 들어, 만일 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어(twisted pair), 디지털 가입자 회선(DSL), 또는 적외선, 라디오(radio), 또는 마이크로파와 같은 무선 기술을 이용해서 웹사이트, 서버, 또는 다른 원격 소스로부터 전송된다면, 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선(DSL), 또는 적외선, 라디오(radio), 또는 마이크로파와 같은 무선 기술은 매체의 정의 내에 포함된다. 상술한 조합들은 컴퓨터-판독가능 매체의 범위 내에도 포함되어야 한다.
상술한 설명은 실례이며, 구성 및 구현의 변형예들이 통상의 기술자에게 떠오를 수 있다. 예를 들어, 본 명세서에서 공개된 실시예들과 연관하여 기술된 다양한 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 프로세서(DSP), 애플리케이션 특정 집적회로(ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 암호화 코프로세서, 또는 다른 프로그램가능 논리 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성요소들, 또는 상술한 기능들을 수행하도록 설계된 이들의 임의의 조합을 가지고 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 함께 하는 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로 구현될 수 있다.
하나 이상의 예시적인 실시예에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어 구현을 위해, 본 명세서에서 기술된 기법들은 본 명세서에서 기술된 기능들을 수행하는 모듈들(예컨대, 프로시저들, 함수들, 서브프로그램들, 프로그램들, 루틴들, 서브루틴들, 모듈들, 소프트웨어 패키지들, 클래스들 등)을 가지고 구현될 수 있다. 모듈은 정보, 데이터, 인수들, 파라미터들, 또는 메모리 내용을 전달 및/또는 수신함으로써 다른 모듈 또는 하드웨어 회로에 연결될 수 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 쉐어링, 메시지 전달, 토큰 전달, 네트워크 전송 등을 포함하는 임의의 적절한 수단을 이용하여 전달, 포워딩, 또는 전송될 수 있다. 소프트웨어 코드들은 메모리 유닛들 내에 저장될 수 있고, 프로세서들에 의해 실행될 수 있다. 메모리 유닛은 프로세서 내부에서 또는 프로세서 외부에서 구현될 수 있고, 이러한 경우에 본 기술분야에 알려져 있는 다양한 수단을 통해서 프로세서에 통신가능하게 연결될 수 있다.
구현의 예들을 참조하여 교시들이 설명되었지만, 통상의 기술자는 진정한 사상 및 범위를 벗어나지 않으면서 다양한 변형들을 만들 수 있을 것이다. 본 명세서에서 사용된 용어들 및 설명들은 제한의 의도가 아니라 예시로서만 제시된다. 특히, 프로세스들은 예들에 의해 기술되었지만, 프로세스의 단계들은 실례로 든 것과 다른 순서로 또는 동시에 수행될 수 있다. 게다가, 용어들 "포함하는", "포함한다", "가지는", "가진다", "갖는", 또는 이들의 변형들이 상세한 설명에서 사용되는 범위에서, 이러한 용어들은 용어 "포함하는(comprising)"과 유사한 방식으로 포함하도록 의도된다. 본 명세서에서 사용될 때, 예를 들어, A 및 B와 같은 아이템의 목록과 관련하여 용어들 "~중의 하나 이상" 및 "~중의 적어도 하나"는 A만, B만, 또는 A 및 B를 의미한다. 게다가, 다르게 특정되지 않는다면, 용어 "세트(set)"는 "하나 이상(one or more)"으로 해석되어야 한다. 또한, 용어 "결합하다(couple)" 또는 "결합한다(couples)"는 간접적 또는 직접적 연결을 의미하는 것으로 의도된다. 그래서, 만일 제1 디바이스가 제2 디바이스에 결합되면, 이러한 연결은 직접 연결을 통한 것이거나, 또는 다른 디바이스들, 구성요소들, 및 연결들을 매개로 하는 간접 연결을 통한 것일 수 있다.
통상의 기술자는 진정한 사상 및 범위로부터 벗어나지 않으면서 상술한 실시예들에 대한 다양한 변형들을 만들 수 있을 것이다. 본 명세서에서 사용된 용어들 및 설명들은 제한의 의도가 아니라 예시로서만 제시된다. 특히, 방법들은 예들에 의해 기술되었지만, 방법의 단계들은 실례로 든 것과 다른 순서로 또는 동시에 수행될 수 있다. 통상의 기술자는 이러한 변형들 및 다른 변형들이 이하의 청구항들 및 다른 등가물들에서 정의된 것과 같은 사상 및 범위 내에서 가능하다는 것을 인식할 것이다.
연관된 실시예들과 함께 한 본 발명의 상술한 설명은 실례의 목적으로만 제시되었다. 이것은 한정적(exhaustive)인 것이 아니며, 본 발명을 본 명세서에서 공개된 형태로 제한하는 것이 아니다. 통상의 기술자는 수정 및 변형이 상술한 교시들의 관점에서 가능하거나 본 발명의 실시로부터 획득될 수 있다는 것을 상술한 설명으로부터 이해할 것이다. 예를 들어, 상술한 단계들은 논의된 것과 동일한 시퀀스로 또는 동일한 분리 정도로 수행될 필요가 없다. 마찬가지로, 동일하거나 유사한 목적들을 달성하기 위하여 다양한 단계들은 필요에 따라 생략되거나, 반복되거나, 조합될 수 있다. 유사하게, 설명된 시스템들은 실시예들에서 기술된 모든 부분들을 반드시 포함할 필요는 없고, 실시예들에서 기술되지 않은 다른 부분들을 포함할 수도 있다.
따라서, 본 발명은 상술한 실시예들에 한정되지 않으며, 대신 등가물들의 완전한 범위의 관점에서 첨부된 청구항들에 의해 정의된다.

Claims (14)

  1. 메시지 인증 태그(336, 908, 912)를 생성하기 위한, 컴퓨터로 구현된 방법(1000)으로서, 상기 방법은:
    메시지(904)를 획득하는 단계(1005);
    전자 프로세서(1202)에 의하여, 상기 메시지를 제1 메시지 블록(410), 하나 이상의 후속 메시지 블록(412), 및 마지막 메시지 블록(414)으로 구성된 다수의 동일한 사이즈의 메시지 블록들(410, 412, 414)로 분할하는 단계(1010);
    상기 전자 프로세서에 의하여, 제1 암호문 메시지 블록, 하나 이상의 후속 암호문 메시지 블록, 및 마지막 암호문 메시지 블록을 산출하도록 각각의 증가하는 암호화된 카운터 값을 이용하여 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록에 XOR 연산을 수행하는 단계;
    상기 전자 프로세서에 의하여, 초기화 값(418)으로 상기 제1 암호문 메시지 블록에 제1 비트-믹싱 연산(324)을 수행하는 단계(1015);
    상기 전자 프로세서에 의하여, 이전 암호문 메시지 블록(previous ciphertext message block)으로 상기 하나 이상의 후속 암호문 메시지 블록(subsequent ciphertext message block) 및 상기 마지막 암호문 메시지 블록에 후속 비트-믹싱 연산(328, 332)을 수행하는 단계(1020); 및
    상기 전자 프로세서에 의하여, 상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산을 기초로 하여 상기 메시지 인증 태그를 생성하는 단계(1025, 1040);를 포함하고,
    상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크(double-mix Feistel network)(500, 600), 대입-치환 네트워크(substitution-permutation network)(700), 또는 둘 이상의 비트-믹서 구성들(300, 400)의 병렬 조합(205, 210, 215, 220)을 기초로 한 비트-믹서 구성(bit-mixer construction)(100, 200)에 의해 수행되는 것을 특징으로 하는 방법.
  2. 청구항 1에 있어서,
    각 증가하는 암호화된 카운터 값이 블록 암호 암호화 알고리즘을 이용하여 암호화되는 것을 특징으로 하는 방법.
  3. 청구항 1에 있어서,
    다수의 암호화된 메시지 블록들을 생성하기 위하여 블록 암호화 알고리즘(906)으로 상기 동일한 사이즈의 메시지 블록들 각각을 암호화하는 단계(1035)를 더 포함하는 것을 특징으로 하는 방법.
  4. 청구항 1에 있어서,
    메시지 인증 태그가 해시 키, 인증 데이터, 및 암호문을 기초로 하는 함수인 것을 특징으로 하는 방법.
  5. 청구항 1에 있어서,
    상기 메시지와 함께 상기 메시지 인증 태그를 수신기(910)에 보내는 단계(1040)를 더 포함하고, 상기 메시지는 평문(314, 316)인 것을 특징으로 하는 방법.
  6. 청구항 1에 있어서,
    상기 메시지와 함께 상기 메시지 인증 태그를 수신기(910)에 보내는 단계를 더 포함하고, 상기 메시지는 암호화된(318, 320) 것을 특징으로 하는 방법.
  7. 청구항 4에 있어서,
    해시 키가 블록 암호를 이용해서 암호화된 128 제로 비트들의 스트링인 것을 특징으로 하는 방법.
  8. 청구항 1에 있어서,
    상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 키 구성요소(key material)(115)를 이용해서 수행되는 것을 특징으로 하는 방법.
  9. 청구항 8에 있어서,
    상기 키 구성요소는 비밀로 유지되고, 상기 메시지 인증 태그는 메시지 인증 코드(336, 908, 912)인 것을 특징으로 하는 방법.
  10. 청구항 1에 있어서,
    일련의(a length of)(A) 인증 데이터(322)와 일련의(a length of)(C) 암호문 블록의 연결(concatenation) 및 마지막 암호문 메시지 블록에 기초한 출력(120)으로 마지막 비트-믹싱 연산(334)을 수행하는 단계; 및
    비밀키로 블록 암호화 알고리즘을 이용하여 암호화된(308, 310, 312) 암호화 NULL 카운터(encrypted null counter)(302, 304, 306)와 상기 마지막 비트-믹싱 연산의 출력(120)으로 배타적 논리합 연산을 수행하는 단계;
    를 더 포함하는 것을 특징으로 하는 방법.
  11. 청구항 1에 있어서,
    동일한 사이즈의 블록들을 만들기 위하여 상기 마지막 메시지 블록을 패딩(padding)하는 단계(416, 1030);
    를 더 포함하는 것을 특징으로 하는 방법.
  12. 컴퓨터 시스템(900)으로서:
    전자 프로세서(1202);
    상기 전자 프로세서에 의해 실행될 때 메시지 인증 태그(336, 908, 912)를 생성하기 위한 방법을 수행하는 인스트럭션들을 저장하는 비일시적 컴퓨터 판독가능 매체;를 포함하고,
    상기 방법은:
    메시지(904)를 획득하는 단계;
    상기 메시지를 제1 메시지 블록(410), 하나 이상의 후속 메시지 블록(412), 및 마지막 메시지 블록(414)으로 구성된 다수의 동일한 사이즈의 메시지 블록들(410, 412, 414)로 분할하는 단계;
    제1 암호문 메시지 블록, 하나 이상의 후속 암호문 메시지 블록, 및 마지막 암호문 메시지 블록을 산출하도록 각각의 증가하는 암호화된 카운터 값을 이용하여 제1 메시지 블록, 하나 이상의 후속 메시지 블록, 및 마지막 메시지 블록에 XOR 연산을 수행하는 단계;
    초기화 값(418)으로 상기 제1 암호문 메시지 블록에 제1 비트-믹싱 연산(324)을 수행하는 단계;
    이전 암호문 메시지 블록으로 상기 하나 이상의 후속 암호문 메시지 블록 및 상기 마지막 암호문 메시지 블록에 후속 비트-믹싱 연산(328, 332)을 수행하는 단계; 및
    상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산을 기초로 하여 상기 메시지 인증 태그를 생성하는 단계;를 포함하고,
    상기 제1 비트-믹싱 연산 및 상기 후속 비트-믹싱 연산은 이중-믹스 파이스텔 네트워크(double-mix Feistel network)(500, 600), 대입-치환 네트워크(substitution-permutation network)(700), 또는 둘 이상의 비트-믹서 구성들(300, 400)의 병렬 조합(205, 210, 215, 220)을 기초로 한 비트-믹서 구성(bit-mixer construction)(100, 200)에 의해 수행되는 것을 특징으로 하는 컴퓨터 시스템.
  13. 청구항 12에 있어서,
    각 증가하는 암호화된 카운터 값이 블록 암호 암호화 알고리즘을 이용하여 암호화되는 것을 특징으로 하는 컴퓨터 시스템.
  14. 청구항 12에 있어서,
    상기 전자 프로세서는 상기 방법을 수행하도록 더 작동가능하고, 상기 방법은:
    일련의(a length of)(A) 인증 데이터(322)와 일련의(a length of)(C) 암호문 블록의 연결(concatenation) 및 마지막 암호문 메시지 블록에 기초한 출력(120, 420)으로 마지막 비트-믹싱 연산(334)을 수행하는 단계; 및
    블록 암호화 알고리즘을 이용하여 암호화된(308, 310, 312) 암호화 NULL 카운터(encrypted null counter)(302, 304, 306)와 상기 마지막 비트-믹싱 연산의 출력(120, 420)으로 배타적 논리합 연산을 수행하는 단계;
    를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
KR1020180098958A 2017-10-06 2018-08-24 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 KR102616064B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/726,608 US10944568B2 (en) 2017-10-06 2017-10-06 Methods for constructing secure hash functions from bit-mixers
US15/726,608 2017-10-06

Publications (2)

Publication Number Publication Date
KR20190039850A KR20190039850A (ko) 2019-04-16
KR102616064B1 true KR102616064B1 (ko) 2023-12-19

Family

ID=63794318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180098958A KR102616064B1 (ko) 2017-10-06 2018-08-24 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법

Country Status (6)

Country Link
US (1) US10944568B2 (ko)
EP (1) EP3468147B1 (ko)
JP (1) JP7222648B2 (ko)
KR (1) KR102616064B1 (ko)
CN (1) CN109639428B (ko)
TW (1) TWI774807B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210013121A (ko) * 2018-05-25 2021-02-03 젠무테크 가부시키가이샤 데이터 처리 장치, 방법 및 컴퓨터 프로그램
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
US11469902B2 (en) * 2019-03-29 2022-10-11 Intel Corporation Systems and methods of using cryptographic primitives for error location, correction, and device recovery
CN112054889B (zh) * 2019-06-06 2022-10-18 中国科学院苏州纳米技术与纳米仿生研究所 消息认证码的生成方法及生成装置、计算机可读存储介质
US11283619B2 (en) 2019-06-20 2022-03-22 The Boeing Company Bit mixer based parallel MAC and hash functions
US20220278823A1 (en) * 2019-08-30 2022-09-01 Telefonaktiebolaget Lm Ericsson (Publ) A round-free cryptographic hashing device for secure and low-latency communications
US11811938B2 (en) * 2019-12-20 2023-11-07 Micro Focus Llc Tokenization of arbitrary data types
US11917072B2 (en) * 2020-12-03 2024-02-27 International Business Machines Corporation Implementing opportunistic authentication of encrypted data
CN113076562A (zh) * 2021-05-08 2021-07-06 北京炼石网络技术有限公司 基于gcm加密模式的数据库加密字段模糊检索方法
CN114495474B (zh) * 2022-02-16 2022-11-22 青岛克莱玛物联技术有限公司 一种无线遥控装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106896A1 (en) * 2005-11-08 2007-05-10 Sandberg Melanie J Method and system for generating ciphertext and message authentication codes utilizing shared hardware
US20140189367A1 (en) * 2007-11-05 2014-07-03 Texas Instruments Deutschland Gmbh Digital-encryption hardware accelerator
US20140317407A1 (en) * 2011-10-31 2014-10-23 Nec Corporation Incremental mac tag generation device, method, and program, and message authentication device
US20160380772A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3119735B2 (ja) * 1992-10-01 2000-12-25 松下電器産業株式会社 ビット攪拌装置
ATE311063T1 (de) * 2000-02-08 2005-12-15 Swisscom Mobile Ag Vereinter einloggungsprozess
JP4810289B2 (ja) * 2006-04-17 2011-11-09 ルネサスエレクトロニクス株式会社 メッセージ認証子生成装置、メッセージ認証子検証装置、及びメッセージ認証システム
US8000467B2 (en) * 2007-03-19 2011-08-16 Stmicroelectronics Sa Data parallelized encryption and integrity checking method and device
FR2931326A1 (fr) * 2008-05-16 2009-11-20 St Microelectronics Rousset Verification d'integrite d'une cle de chiffrement
US20120201373A1 (en) * 2011-02-03 2012-08-09 Futurewei Technologies, Inc. Design of a Good General-Purpose Hash Function with Limited Resources
EP2688066A1 (en) * 2012-07-16 2014-01-22 Thomson Licensing Method and apparatus for encoding multi-channel HOA audio signals for noise reduction, and method and apparatus for decoding multi-channel HOA audio signals for noise reduction
IN2013MU01164A (ko) * 2013-03-26 2015-07-03 Tata Consultancy Services Ltd
KR102539111B1 (ko) * 2014-12-03 2023-06-01 나그라비젼 에스에이알엘 메시지 부호화 및 복호화를 위한 블록 암호화 방법 및 이 방법을 구현하기 위한 암호화 장치
US9876641B2 (en) 2015-10-08 2018-01-23 The Boeing Company Data dependent authentication keys for differential power analysis resistant authentication
US10142103B2 (en) 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106896A1 (en) * 2005-11-08 2007-05-10 Sandberg Melanie J Method and system for generating ciphertext and message authentication codes utilizing shared hardware
US20140189367A1 (en) * 2007-11-05 2014-07-03 Texas Instruments Deutschland Gmbh Digital-encryption hardware accelerator
US20140317407A1 (en) * 2011-10-31 2014-10-23 Nec Corporation Incremental mac tag generation device, method, and program, and message authentication device
US20160380772A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions

Also Published As

Publication number Publication date
EP3468147A1 (en) 2019-04-10
TWI774807B (zh) 2022-08-21
JP2019079037A (ja) 2019-05-23
CN109639428B (zh) 2023-09-26
US10944568B2 (en) 2021-03-09
JP7222648B2 (ja) 2023-02-15
TW201918926A (zh) 2019-05-16
CN109639428A (zh) 2019-04-16
EP3468147B1 (en) 2021-06-30
KR20190039850A (ko) 2019-04-16
US20190109715A1 (en) 2019-04-11

Similar Documents

Publication Publication Date Title
KR102616064B1 (ko) 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법
Dobraunig et al. Ascon v1. 2: Lightweight authenticated encryption and hashing
Dubrova et al. Espresso: A stream cipher for 5G wireless communication systems
Iwata et al. CLOC: authenticated encryption for short input
CN114175572B (zh) 利用拟群运算对加密数据实行相等和小于运算的系统和方法
EP3235162A1 (en) Stream ciphering technique
Rashidi Flexible structures of lightweight block ciphers PRESENT, SIMON and LED
Walia et al. Implementation of new modified MD5-512 bit algorithm for cryptography
Sarkar et al. Role of cryptography in network security
US20110103578A1 (en) Systems and methods for efficiently creating digests of digital data
Mandal et al. Sycon: A new milestone in designing ASCON-like permutations
KR101445339B1 (ko) 기밀성과 무결성을 제공하는 통합 암호화 장치 및 그 방법
Newe et al. Efficient and high speed fpga bump in the wire implementation for data integrity and confidentiality services in the iot
Shoukat et al. Randomized substitution method for effectively secure block ciphers in IOT environment
Ramu et al. Hardware implementation of Piccolo Encryption Algorithm for constrained RFID application
Mohanraj et al. High performance GCM architecture for the security of high speed network
Acharya et al. FPGA design & implementation of optimized RC5 block cipher
Abbas et al. Dictionary Attack on TRUECRYPT with RIVYERA S3-5000
Banerjee et al. EnCash: an Authenticated Encryption scheme using Cellular Automata
Hambouz DLL-AES: Dynamic Layers Lightweight AES Algorithm
Kuznetsov et al. Analysis of Stream Cryptographic Transfer Algorithms for Light (Less-Resource) Cryptographies Defined in ISO/IEC 29192
Morales-Sandoval Hardware architecture for elliptic curve cryptography and lossless data compression
Banik et al. Efficient and Secure Encryption for FPGAs in the Cloud
Sailaja et al. High Speed Architecture for KECCACK Secure Hash Function
Lee et al. High‐Speed Hardware Architectures for ARIA with Composite Field Arithmetic and Area‐Throughput Trade‐Offs

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