KR20110036854A - 메시지 인증 코드 사전 연산 방법 및 시스템 - Google Patents

메시지 인증 코드 사전 연산 방법 및 시스템 Download PDF

Info

Publication number
KR20110036854A
KR20110036854A KR1020117004620A KR20117004620A KR20110036854A KR 20110036854 A KR20110036854 A KR 20110036854A KR 1020117004620 A KR1020117004620 A KR 1020117004620A KR 20117004620 A KR20117004620 A KR 20117004620A KR 20110036854 A KR20110036854 A KR 20110036854A
Authority
KR
South Korea
Prior art keywords
block
data
rijndael
read
authentication code
Prior art date
Application number
KR1020117004620A
Other languages
English (en)
Other versions
KR101324825B1 (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 KR20110036854A publication Critical patent/KR20110036854A/ko
Application granted granted Critical
Publication of KR101324825B1 publication Critical patent/KR101324825B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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
    • 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/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
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • 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

Abstract

본 방법은 의사 랜덤 함수(Pseudo-Random Function) 및 의사 랜덤 치환(Pseudo-Random Permutation) 중 적어도 하나를 실행함으로써 데이터 입력으로부터 랜덤 치환된 데이터를 생성하는 단계와, 상기 랜덤 치환된 데이터와 수신된 제 2 데이터 블록을 결합하고 이 결합 결과에 대해 ε-DU 함수(epsilon differentially uniform function)를 실행시킴으로써 제 1 데이터 블록을 생성하는 단계와, 상기 ε-DU 함수의 실행 결과를 비밀 키와 XOR 연산시키는 단계와, 상기 제 1 데이터 블록을 제 1 메시지 인증 코드(MAC)로 축소시키는 단계를 포함한다.

Description

메시지 인증 코드 사전 연산 방법 및 시스템{MESSAGE AUTHENTICATION CODE PRE-COMPUTATION WITH APPLICATIONS TO SECURE MEMORY}
본 발명은 메모리에 대한 보안을 유지하기 위한 애플리케이션과 함께 인증 코드를 사전 컴퓨팅하는 방법 및 장치에 관한 것이다.
날이 갈수록 소비자 제품, 기업 제품 및 심지어 군 장비(military equiment)까지 컴퓨터 시스템에 점점 더 의존하고 있다. 제품들이 컴퓨팅 장비를 포함할 때에, 사람들은 이 제품을 무료로 사용하거나 이 제품을 파괴하는 것과 같이 이 제품의 약점을 이용하려고 하고 있다. 컴퓨팅 세계에서, 해커, 해적 또는 적대자들은 이 컴퓨팅 장비의 메모리를 일부러 조작함으로써 이 컴퓨팅 장비를 이용하는 제품들을 악용하려고 시도하고 있다. 컴퓨팅 무결성을 보호하는데 있어서 통상적으로 2 개의 주 보안 분야가 있는데 이는 소프트웨어 기반 보안과 하드웨어 기반 보안이다. 소프트웨어 기반 보안은 소프트웨어의 무결성과 관련된다. 하드웨어 기반 보안은 해커가 컴퓨팅 시스템에 풀 액세스를 하여 오실로스코프 및 논리 분석기를 사용하여 이 컴퓨팅 시스템을 모니터링하는 것과 관련된다.
회로를 칩 상에 매우 대형 스케일로 집적시키는데 있어서의 기술적 진보로 인해서 전체 시스템을 칩 상에 집적시킴으로써 고의 조작을 방지할 수 있는 하드웨어 컴퓨팅 시스템들이 제공되고 있다. 따라서, 전체 컴퓨팅 시스템을 칩 상에 집적시키면 적대자로부터의 공격을 막을 수 있다. 그러나, 대부분의 실제적인 상황에서, 온-칩 메모리가 충분하지 않기 때문에 이러한 방안은 달성되지 않을 수 있다. 프로그램 및 데이터가 오프-칩 메모리 내에 저장되어야 한다. 이렇게 되면 적대자가 오프-칩 메모리를 고의 조작함으로써 컴퓨팅 장비를 파괴하거나 마음대로 조작할 수 있는 길이 열리게 된다.
서명이 필요하거나 암호화된 메모리가 사용되어서 적대자들이 오프-칩 메모리를 함부로 조작하지 못하도록 할 수 있다. 메시지 서명은 메모리의 일부가 최종 판독된 후로 계속 변경되지 않는 것을 검증하는데 사용되는 체크섬(checksum)과 같은 것이다. 데이터가 오프-칩 메모리에 기록되면, 서명이 생성되어 데이터와 함께 저장된다. 데이터가 오프-칩 메모리부터 판독되면, 데이터가 변경되지 않았음을 보장하기 위해서 서명이 검증된다. 서명을 생성하는 것은 비용이 드는 작업일 수 있다. 이 서명을 생성하기 위해서 수많은 클록 사이클이 사용된다. 따라서, 메모리 서명을 생성하고 체크하는 것은 효율적이어야 한다.
메시지 인증은 아주 많은 연구의 주제가 되어 왔다. 대부분의 자연스러운 MAC 방식들은 (32 개의 제로들로 구성된 스트링과 같은) 리던던트 데이터(redundant data)와 연접된 메시지에 대하여 PRP(pseudorandom permutation)를 간단하게 실행시키는 것과 관련이 있으며 이러한 방식들은 사전 연산(pre-computation)에는 적합하지 않다.
다른 MAC 연산 방식은 UHF(universal hash functions)를 사용한다. UHF로부터 MAC를 획득하는 기술적 사상은 Carter 및 Wegman에 의해서 처음으로 제안되었다(Wegman, Carter, New Hash Functions and Their Use in Authentication and Set Equality, JCSS, 22:265, 1981). 이후에, Brassard는 MAC 키의 크기를 감소시키기 위해서 의사랜덤 생성기(pseudorandom generator)를 사용하는 바를 제안하였다(Gilles Brassard, On computationally secure authentication tags requiring short secret shared keys, in Crypto'82, 79-86). 그에 따른 구성은 다음과 같다. MAC(m,r) = h(m) XOR F(r), 여기서 h는 UHF이며 F는 의사랜덤 생성기이다. 그 이후부터는, 많은 양의 연구는 상기 사용된 함수 h 및 F의 속도 및 다른 개선이 필요한 사항들에 대해서 집중되었다.
MAC 사전 연산 구성은 이전에 제안된 구성과 상이하며, 사전 연산과 함께 짧은 메시지 인증에서 특정하게 요구되는 특성들을 가지고 있다.
본 발명의 일 실시예에 따른 방법은 의사 랜덤 함수(Pseudo-Random Function) 및 의사 랜덤 치환(Pseudo-Random Permutation) 중 적어도 하나를 실행함으로써 데이터 입력으로부터 랜덤 치환된 데이터를 생성하는 단계와, 상기 랜덤 치환된 데이터와 수신된 제 2 데이터 블록을 결합하고 이 결합 결과에 대해 ε-DU 치환(epsilon differentially uniform permutation)을 실행시킴으로써 제 1 데이터 블록을 생성하는 단계를 포함한다. 이 방법은 상기 ε-DU 함수의 실행 결과를 비밀 키와 XOR 연산시키는 단계와, 상기 제 1 데이터 블록을 제 1 메시지 인증 코드(MAC)로 축소시키는 단계를 더 포함한다.
본 발명의 다른 실시예에 따른 시스템은 MAC 컴퓨터를 포함하며, 상기 MAC 컴퓨터는, 의사 랜덤 함수(Pseudo-Random Function) 및 의사 랜덤 치환(Pseudo-Random Permutation) 중 적어도 하나를 실행함으로써 데이터 입력으로부터 랜덤 치환된 데이터를 생성하고, 상기 랜덤 치환된 데이터와 수신된 제 2 데이터 블록을 결합하고 이 결합 결과에 대해 ε-DU 치환(epsilon differentially uniform permutation)을 실행시킴으로써 제 1 데이터 블록을 생성하며, 상기 ε-DU 함수의 실행 결과를 비밀 키와 XOR 연산시키며,상기 제 1 데이터 블록을 제 1 메시지 인증 코드(MAC)로 축소시킨다.
본 발명의 예시적인 실시예들의 특징들은 다음의 상세한 설명 부분, 청구 범위 및 첨부된 도면을 참조하면 명백해질 것이다.
도 1은 MAC 사전 연산 방법 및 장치가 상주하는 컴퓨터 시스템의 간단한 블록도이다.
도 2는 MAC 사전 연산을 사용하여 데이터를 기록 및 판독할 시에 사용되는 방법의 일례를 나타내고 있다.
도 3은 MAC 사전 연산을 사용하여 데이터를 메모리에 기록하는 방법을 나타내고 있다.
도 4는 MAC 사전 연산을 사용하여 메모리로부터 데이터를 판독하고 인증하는 방법을 나타내고 있다.
도 5는 MAC 사전 연산을 수행하는 장치를 포함하는 시스템의 실시예를 나타내고 있다.
전술한 바와 같이, 컴퓨터 보안상의 약점이 있는 영역은 오프-칩 메모리 쪽이다. 적대자들은 컴퓨터 시스템을 파괴하기 위해서 오프-칩 메모리 내에 포함된 정보를 변경하거나 재생할 수 있다. 이러한 적대자를 막는 일 방식은 오프-칩 메모리에 서명 및 암호화를 도입하는 것이다. 메모리 상의 서명을 계산하기 위해서는 메시지 인증 코드(MAC)를 생성해야 한다. 키 및 데이터 블록 또는 메모리 블록을 입력으로 해서 MAC 알고리즘이 실행된다. 이 MAC 알고리즘은 서명 또는 MAC를 출력한다. MAC는 값일 수 있다. MAC는 16 비트 또는 32 비트이다. 그러나, MAC는 더 소량의 비트이거나 더 대량의 비트일 수 있다. 제 1 MAC는 데이터와 함께 저장된다. 이 데이터가 오프-칩 메모리로부터 판독되면, 제 2 MAC가 이 판독된 데이터로부터 생성된다. 이 제 1 MAC가 제 2 MAC와 정합하지 않으면, 시스템은 데이터를 리셋 및/또는 폐기한다.
도 1은 MAC 사전 연산 방법 및 장치가 상주하는 컴퓨터 시스템의 간단한 블록도이다. 시스템(100)의 주 구성 요소들은 온-칩 또는 오프-칩 상태에 있다. 이 시스템의 오프-칩 구성 요소는 DRAM(115) 형태로 된 메모리이다. DRAM은 이 시스템의 온-칩 부분 상에 상주하는 소프트웨어 또는 프로그램에 의해서 사용되는 데이터를 저장한다. DRAM이 본 실시예에서는 도시되었지만, DRAM, RAM 또는 임의의 다른 메모리 또는 데이터 저장 방법이 시스템(100) 내에 오프-칩 데이터를 저장하기 위해서 사용될 수 있다.
칩 상에 상주하는 구성 요소들은 DRAM 제어기(120), 암호화 인증부(encryption authentication unit)(125), 버스 인터페이스 로직(130), 버스(135), 중앙 처리 유닛(140), 캐시(145) 및 DMA(direct memory access) 엔진(150)을 포함할 수 있다.
CPU(140) 및 DMA 엔진(150)은 버스(135)를 통해서 버스 인터페이스 로직(130)과 통신할 수 있다. 이 버스 인터페이스 로직(130)은 EAU(125)와 통신 가능하게 접속되어 있을 수 있다. 이 EAU(125)는 DRAM 제어기(120)와 또한 통신가능하게 접속되어 있을 수 있다. DRAM 제어기는 DRAM(115)에 통신 가능하게 접속되어 있을 수 있다.
CUP(140) 및 DMA(150)는 DRAM(115)로부터/로 데이터를 판독/기록할 수 있다. CPU(140) 또는 DMA(150)가 DRAM(115)로부터/로 데이터를 판독/기록할 때에, 기록 또는 판독된 데이터는 버스 인터페이스 로직(130), EAU(125) 및 DRAM 제어기(120)를 통과하게 된다. 데이터를 기록 및 판독할 시에, 버스 인터페이스 로직(130)은 모든 크기의 트랜잭션들을 처리한다. 그러나, EAU(125)는 고정된 크기의 데이터 블록만을 오프-칩 DRAM(115)에/로부터 기록/판독한다. 이 고정된 크기의 데이터 블록은 암호화 블록 또는 암호화 데이터 블록으로서 지칭될 수 있다. 일 실시예에서, 데이터 블록은 256 비트를 포함한다. 암호화 블록은 메모리(115)로/로부터 기록/판독될 최소 데이터 단위일 수 있다. 버스 인터페이스 로직(130)이 모든 크기의 트랜잭션을 처리하기 때문에, EAU(125)는 암호화 블록보다 크거나 작은 데이터를 판독 또는 기록하라는 요청을 관리해야 한다.
일 실시예에서, 메시지 인증 코드(MAC) 사전 연산 방법 및 시스템은 EAU(125) 상에 상주한다. EAU(125)는 DRAM(115)로부터/로 판독/기록된 데이터에 대한 암호화/복호화 및 인증을 수행할 수 있다. 기록 트랜잭션은 DRAM(115)로부터 나오는 도중에 암호화할 수 있다. 판독 트랜잭션은 정보가 DRAM(115)으로부터 판독될 때에 인증 및 복호화될 수 있다. 따라서, 암호화 인증부(125)가 메모리부터/로 판독/기록하는 임의의 데이터 블록은 암호화된 데이터를 포함할 수 있다.
데이터 또는 메모리를 인증할 때에, EAU(125)는 EAU(125)가 메모리에 기록하는 데이터 블록에 대한 제 1 MAC를 생성할 수 있다. 이어서, 제 1 MAC는 이 데이터 블록과 연관된다. 이 데이터 블록이 메모리로부터 판독될 때에, 암호화 인증부(125)는 이 판독된 데이터에 기초하여 제 2 MAC를 생성할 수 있다. 이 제 2 MAC는 제 1 MAC와 비교될 수 있다. 만일 이들이 서로 정합하지 않으면, 메모리는 변경되었거나 조작을 받은 것일 수 있다. 메모리가 손상되었으면(corrupted), 암호화 인증부(125)는 메모리 손상 절차를 수행할 수 있다. 이는 시스템을 리셋하는 동작이나 CPU에게 메모리 변형이 발생했음을 알리는 메시지를 CPU에 전송하는 동작을 수반할 수 있다. 이어서, CPU는 시스템을 리셋하거나 몇몇 다른 예방 조치를 취할 수 있다.
통상적으로, EAU(125)는 메모리 트랜잭션과 연관된 데이터가 도달하기 이전에 이 메모리 트랜잭션의 어드레스를 수신한다. 따라서, 데이터를 암호화하고 MAC를 생성하는 동작과 관련된 연산의 대부분은 이 데이터가 도달하기 이전에 수행할 수 있다.
도 2는 메모리에 대한 보안을 유지하기 위한 애플리케이션과 함께 MAC 사전 연산을 사용하여 데이터를 기록 및 판독할 시에 사용되는 방법(200)의 일예를 나타내고 있다. 이 방법(200)은 암호화 인증부(125) 상에 상주한다. 이 방법은 먼저 요청을 처리한다(단계(210)). 이 요청은 데이터를 기록 또는 판독하라는 요청일 수 있다. 이 요청은 버스 인터페이스 로직(130)을 통해서 입력될 수 있다. 버스 인터페이스 로직(130)이 데이터를 기록 또는 판독하라는 요청을 전송할 때에, 버스 인터페이스 로직(130)은 어드레스를 이 방법(200)에 전달할 수 있다. 요청이 기록 요청이면, 어드레스는 데이터가 기록될 어드레스할 수 있다. 요청이 판독 요청이면, 어드레스는 데이터가 그로부터 판독될 어드레스일 수 있다.
이어서, 이 방법(200)은 단계(215)에서 요청이 기록 요청인지의 여부를 판정한다. 만일 기록 요청이면, 이 방법(200)은 기록 핸들러(220)를 발동시킨다. 이 요청이 기록 요청이기 때문에, 버스 인터페이스 로직(130)은 기록 어드레스를 방법(200)에 전달할 수 있다. 이 방법(200)이 기록 핸들러를 발동시키면, 이 방법(200)은 어드레스 또는 기록 어드레스를 기록 핸들러에 전달할 수 있다. 기록 핸들러가 이 요청 처리를 완료하였으면, 이 방법(200)은 계속해서 요청들을 다루기 시작한다(단계(210)).
입력된 요청이 기록 요청이 아니면, 이 방법(200)은 요청이 판독 요청인지의 여부를 판정한다(단계(225)). 만일 요청이 판독 요청이 아니면, 이 방법(200)은 요청을 다루는 단계(210)로 복귀한다. 요청이 판독 요청이면, 이 방법(200)은 판독 핸들러(230)를 발동시킬 수 있다. 이 방법(200)이 판독 핸들러를 발동시키면, 이 방법(200)은 어드레스 또는 판독 어드레스를 판독 핸들러에 전달할 수 있다.
도 3은 MAC 사전 연산을 사용하여 데이터를 DRAM(115)에 기록할 수 있는 방법의 일예를 나타내고 있다. 이 기록 핸들러 방법 또는 기록 핸들러(300)는 EAU(125)의 일부로서 칩 상에 상주할 수 있다. EAU(125)가 데이터를 수신하면, EAU(125)는 MAC를 생성하고 데이터를 암호화할 수 있다. 이 프로세스는 기록 핸들러가 어드레스를 단계(310)에서 수신하면 시작된다. 어드레스는 EAU(125)가 데이터를 기록하기로 되어 있는 DRAM(115) 내의 위치일 수 있다. 이 어드레스는 32 비트 어드레스, 64 비트 어드레스 또는 DRAM(115)를 어드레싱하는데 사용될 수 있는 임의의 다른 크기의 어드레스일 수 있다. 설명을 위해서, 어드레스가 32 비트라고 가정한다. 이 시점에서는, 데이터는 아직 도달하지 않았다.
어드레스가 현재 가용하기 때문에, MAC 계산이 개시될 수 있다. 이 방법(300)은 MAC 계산을 시작하기 위해서 데이터가 도달할 때까지 대기할 필요가 없다. EAU(125)는 208 비트의 제로(패드), 32 비트 어드레스 및 16 비트 논스(nonce)(제로, 어드레스 및 논스)를 서로 연접시킴으로써 256 비트의 데이터 블록을 생성할 수 있다. 이 256 비트의 데이터 블록은 데이터 입력일 수 있다. MAC를 계산하는데 있어서의 일부는 이 데이터 입력을 사용하여 PRF 또는 PRP 또는 랜덤화(randomness)를 실행하는 것과 관련될 수 있다. 본 기술 분야의 당업자는 PRF/PRP가 이상적인 블록 암호이며 이 암호로 인해서 비트 패턴이 랜덤화와 구별될 수 없음을 쉽게 알 것이다. 또한, MAC를 계산하는 부분은ε-DU 함수(epsilon differentially uniform function)를 실행하는 바와 관련이 있다. 이 ε-DU 함수는 랜덤 비트 패턴을 도출하는 블록 암호일 수 있다는 바는 본 기술 분야의 당업자에게는 잘 알려져 있다. 그러나, 이 ε-DU 함수에 의해서 생성된 비트 패턴의 랜덤화는 PRP에 의해서 생성된 비트 패턴의 랜덤화만큼 우수하지 않다. 따라서, 이 ε-DU 함수에 의해서 생성된 비트 패턴은 PRP에 의해서 생성된 비트 패턴만큼 보안성이 우수하지 않다. 논스 또는 한번 사용된 수는 이전에 반복되었다면 거의 사용되지 않는 수이다는 사실을 본 기술 분야의 당업자는 쉽게 알고 있을 것이다. 본 실시예에서, 논스는 기록이 실행될 때마다 증분되는 카운터일 수 있다.
PRP 또는 PRF 함수는 논스, 어드레스 및 제로를 암호화할 시에 필요한 랜덤화의 레벨을 생성하는데 사용될 수 있다. 이 방법(300)은 Rijndael (또는 이의 가장 유명한 기술 중 하나인 AES(advanced encryption standard)) F를 실행시킬 수 있다(단계320)). 이 방법(300)은 데이터 입력(제로, 어드레스 및 논스)에 대해서 Rijndael 14 라운드를 실행하여 256 비트의 랜덤화를 달성할 수 있다. 256 비트의 랜덤화는 Rijndael 기록 블록 또는 Rijndael 블록일 수 있다. 이 랜덤 값 또는 랜덤화는 가령 1과 0의 순열일 수 있다. 몇몇 실시예에서, PRP F는 128 비트들로 구성된 2 개의 세트에 대해서 Rijndael의 AES 버전을 10 라운드 실행함으로써 달성될 수 있다. 128 비트로 구성된 2 개의 세트는 연접되어서 256 비트 블록을 형성한다. Rijndael를 실행할 때에, 이 방법(300)은 랜덤 키 K1을 선택한다. 이 Rijndael 알고리즘은 이 키 K1을 이 Rijndael 알고리즘으로의 입력으로서 사용할 수 있다. 랜덤 키 또는 비밀 키는 랜덤하게 선정된 키이다. 가령, 난수 발생기(random number generator)가 사용되어서 랜덤 키를 선택할 수 있다. 다른 형태의 랜덤 발생 수단이 사용되어서 랜덤 키를 선택할 수 있다.
이 방법(300)은 기록 데이터를 수신한다(단계(330)). 이 방법(300)이 기록 데이터를 수신할 때, 이 방법(300)은 이 데이터를 암호화할 수 있다. 이 방법(300)은 AES를 사용하거나 데이터를 암호화할 수 있는 임의의 다른 방법을 사용하여 데이터를 암호화할 수 있다. 이 암호화된 데이터는 Rijndael 기록 블록과 XOR 연산될 수 있다(단계(335)). 그 결과는 XOR 연산된 Rijndael 기록 블록이다. 이 XOR 연산된 Rijndael 기록 블록은 256 비트를 포함할 수 있다.
이 방법(300)은 ε-DU 함수 군 중 함수 G를 컴퓨팅할 수 있다. 이 방법(300)은 ε-DU 함수 군으로의 입력으로서 사용될 수 있는 제 2 랜덤 키 K2를 선정할 수 있다. ε-DU 함수 G는 단계(340)에서 상기 XOR 연산된 Rijndael 기록 블록 상에서 실행될 수 있다. 함수 G는 상기 XOR 연산된 Rijndael 기록 블록 상에서 2 또는 4 라운드의 Rijndael를 실행하는 것이며 이 결과는 256 비트의 G 기록 블록이다. 이 G 기록 블록은 단계(345)에서 256 비트 키 K3와 XOR 연산될 수 있다. 이 결과는 256 비트의 M 블록이다. 이 M 블록은 XOR 트리를 사용하여 256 비트에서 32 비트 MAC 또는 제 1 MAC로 붕괴될 수 있다(단계(350)). 상기 암호화된 데이터 블록이 DRAM 내에 저장될 수 있다(단계(360)). 상기 32 비트의 제 1 MAC 및 논스가 단계(360)에서 DRAM에 또한 저장되고 상기 암호화된 데이터 블록과 연관될 수 있다. 따라서, 상기 암호화된 데이터가 인증될 필요가 있으면, 이 인증을 수행하기 위해서 필요한 정보가 검색될 수 있다. 키 K1, K2 및 K3은 EAU 상에 저장될 수 있다.
본 일예에서는 MAC를 사전 컴퓨팅하는 방법 및 장치가 데이터를 메모리에 기록할 시에 사용되었지만, 데이터를 기록하거나 전송하는 바와 관련된 임의의 애플리케이션에서 이 방법 및 장치가 사용될 수 있다. 다른 실시예에서는, MAC를 사전 컴퓨팅하기 위해서 메모리 어드레스를 사용하기보다는, MAC를 컴퓨팅하기 위해서 다른 값들이 사용될 수 있다. 가령, 이 방법 및 장치가 메시지 애플리케이션에서 사용되면, 어드레스 대신에 메시지 컨텍스트 식별자가 사용될 수 있다. 또한, 어드레스의 크기, 논스 및 다른 변수들은 사용자의 필요 사항 및 이 방법이 사용되는 애플리케이션에 따라서 변할 수 있다.
도 4는 DRAM(115)으로부터 데이터를 판독할 수 있는 일 예시적인 방법(400)을 나타내고 있다. DRAM(115)으로부터 데이터를 판독하는 프로세스에서, 이 방법(400)은 데이터를 인증하는 것이다. 이러한 데이터 인증 작업은 저장된 데이터에 기초하여 제 2 MAC를 생성하는 단계와 이 데이터와 함께 최초에 저장된 제 1 MAC와 상기 제 2 MAC를 서로 비교하는 단계를 수반할 수 있다. 이 방법(400)은 버스 인터페이스 로직(130)으로부터 어드레스 또는 판독 어드레스를 수신할 수 있다(단계(410)).
이 방법(400)은 그 데이터를 인증하기 위해서 필요한 정보를 검색할 수 있다(단계(420)). 이 정보는 상기 키 K1, K2 및 K3와 같은 칩 상에 상주하는 정보를 포함할 수 있다. 또한, 이 정보는 제 1 MAC, 논스 및 판독 어드레스에 상주하는 판독된 데이터와 같은 오프-칩 상태에 있는 정보를 포함할 수 있다. 판독된 데이터는 암호화된 데이터일 수 있다.
이 방법(400)은 도 3을 참조하여 기술된 바와 같은 어드레스, 논스 및 제로(제로 패드)에 대한 PRP F를 컴퓨팅할 수 있다(단계(430)). PRP F를 컴퓨팅하기 위해서 키 K1이 필요하다. 데이터를 인증하거나 판독할 때에 PRP F를 컴퓨팅하는데 사용되는 키 K1은 데이터를 기록할 때에 PRP F를 컴퓨팅하는데 사용되었던 키 K1과 동일한 키일 수 있다. 전술한 바와 같이, PRP F는 논스, 어드레스 및 208 비트의 제로에 대해서 14 라운드의 Rijndael를 실행시킴으로써 달성될 수 있다(단계(430)). 이 14 라운드의 Rijndael를 실행시킴으로써 달성되는 결과는 Rijndael 블록일 수 있는 256 비트의 랜덤화일 수 있다. F는 또한 Rijndael의 128 비트 AES 버전을 병렬로 2 개의 인스턴스로 해서 10 라운드 실행시킴으로써 달성될 수도 있다. 데이터를 판독할 때에, Rijndael 블록은 Rijndael 판독 블록으로서 지칭될 수 있다.
단계(440)에서 G를 컴퓨팅할 시에, Rijndael 판독 블록은 판독된 데이터와 XOR 연산될 수 있다. 그 결과는 XOR 연산된 Rijndael 판독 블록 또는 XOR 연산된 Rijndael 블록이다. G는 XOR 연산된 Rijndael 판독 블록에 대해서 Rijndael를 2 라운드 또는 4 라운드 실행시킴으로써 달성될 수 있다. 단계(440)에서 G를 컴퓨팅한 결과는 256 비트의 G 블록 또는 G 판독 블록일 수 있다. G 기록 블록을 컴퓨팅하는데 사용된 동일한 키 K2가 G 판독 블록을 컴퓨팅하는데 사용될 수 있다.
G 판독 블록은 키 K3와 XOR 연산되고 따라서 256 비트의 M 판독 블록이 달성될 수 있다. 이 M 판독 블록은 XOR 트리를 통해서 32 비트의 제 2 MAC로 감축될 수 있다(단계(450)). 제 2 MAC가 제 1 MAC와 비교될 수 있다(단계(470)). 데이터가 DRAM(115)에 최초에 기록될 때에 제 1 MAC가 생성되었음을 상기할 필요가 있다. 제 1 MAC와 제 2 MAC가 서로 동일하지 않으면, 이 데이터는 손상되었거나 조작된 것으로 고려된다. 이 방법(400)은 메모리 손상 응답 절차를 수행함으로써 그러한 오정합(mismatch)을 다룬다(단계(490)). 제 1 MAC와 제 2 MAC가 일치하면, 방법(400)은 판독 데이터를 버스 인터페이스 로직(130)으로 복귀시킨다. 또한, MAC 오정합은 시스템 리셋을 유발할 수 있기 때문에 그 데이터는 MAC 검증 이전에 CPU에 전달된다. 상술한 방법(300,400)은 shMAC(shallow MAC)로서 알려질 수 있다.
도 5는 MAC 사전 연산을 수행하는 장치를 포함하는 시스템(500)의 실시예를 나타내고 있다. 이 시스템(500)은 버스 인터페이스 로직 유닛(130), DRAM 제어기(120) 및 EAU(125)로 구성될 수 있다. EAU(125)은 데이터 핸들러(530), MAC 컴퓨터(535) 및 데이터 암호화기(540)로 구성될 수 있다. MAC 컴퓨터(535)는 MAC PRP F 계산기(545) 및 ε-DU 계산기(550)로 구성될 수 있다.
전술한 바와 같이, EAU(125)는 DRAM 제어기(120) 및 버스 인터페이스 로직(130)과 통신 가능하게 접속되어 있을 수 있다. DRAM 제어기(120) 및 버스 인터페이스 로직(130)은 데이터 핸들러(530)와 통신 가능하게 접속될 수 있다. 데이터 핸들러(530)는 EAU(125) 외부에 있는 데이터를 판독 및 기록할 수 있는 노드 또는 구성 요소일 수 있다. 이 노드 또는 구성 요소는 연산을 수행할 수 있는 소프트웨어, 하드웨어, 펌웨어 또는 임의의 다른 타입의 장치일 수 있다.
데이터 핸들러(530)도 MAC 컴퓨터(535) 및 데이터 암호화기(540)에 통신 가능하게 접속될 수 있다. MAC 컴퓨터(535)는 MAC를 사전 컴퓨팅할 수 있는 노드 또는 구성 요소일 수 있다. 데이터 암호화기(540)는 데이터를 암호화할 수 있는 노드 또는 구성 요소일 수 있다.
MAC 컴퓨터(535)는 PRP F 계산기(545) 및 ε-DU 계산기(550)를 포함한다. 이 PRP F 계산기(545)는 PRP F 함수를 컴퓨팅할 수 있는 노드 또는 구성 요소이다. ε-DU 계산기(550)는 ε-DU 함수를 컴퓨팅할 수 있는 노드 또는 구성 요소이다.
버스 로직 인터페이스(130)는 DRAM(115)로부터/로 데이터를 판독/기록하라는 요청을 전송할 수 있다. 데이터 핸들러(530)는 이 요청을 수신할 수 있다. 데이터를 기록하라는 요청은 2 개의 부분에서 입력될 수 있다. 먼저, 버스 인터페이스 로직(130)은 어드레스를 데이터 핸들러(530)에 전송할 수 있다. 통상적인 시스템에서, 2 개 이상의 클록 사이클 이후에, 데이터 핸들러(530)는 이 어드레스와 연관된 기록 데이터를 수신할 수 있다. 데이터를 판독할 때에, 버스 인터페이스 로직(130)은 판독 어드레스를 전송할 수 있다. 데이터 핸들러는 판독 데이터를 버스 인터페이스 로직(130)에 전송함으로써 응답할 수 있다.
데이터 핸들러(530)가 기록 요청을 수신하면, 데이터 핸들러(530)는 기록 어드레스를 MAC 컴퓨터(535) 및 데이터 암호화기(540)에 전송할 수 있다. 몇몇 실시예에서, 기록 어드레스는 32 비트이다. 데이터 암호화기(540)는 데이터를 암호화하는 프로세스의 일부로서 기록 어드레스를 사용할 수 있다. MAC 컴퓨터(535)는 기록 어드레스 및 논스를 PRP F 계산기(545)에 전송할 수 있다. 몇몇 실시예에서, 논스는 16 비트이다. PRP F 계산기(545)는 Rijndael 함수를 실행할 시에 사용할 랜덤 K1을 생성할 수 있다. PRP F 계산기는 K1을 사용하여 256 비트 데이터 입력에 대해서 Rijndael 함수를 14 라운드 실행하거나 Rijndael의 128 비트의 AES 버전을 2 라운드로 해서 2 개의 병렬 인스턴스 실행할 수 있다. 이 데이터 입력은 208 비트의 제로와, 32 비트의 어드레스와 16 비트의 논스로 구성될 수 있다. 이 데이터 입력에 대해서 Rijndael 함수를 14 라운드 실행하면 그 결과는 Rijndael 블록 또는 Rijndael 기록 블록으로서 지칭될 수 있는 256 비트의 랜덤 데이터일 수 있다. PRP F 계산기(545)는 Rijndael 기록 블록을 ε-DU 계산기(550)에 전달할 수 있다. 몇몇 실시예에서, 기록 데이터는 아직 이 시점에서 도달하지 않았다. 그럼에도 불구하고, PRP F 계산기(545)는 Rijndael 함수를 실행하여 Rijndael 기록 블록을 생성한다.
기록 데이터가 도달하면, 데이터 핸들러(530)는 기록 데이터를 데이터 암호화기(540)에 전달할 수 있다. 이 데이터 암호화기(540)는 이 데이터를 암호화하여 ε-DU 계산기(550)에 전달할 수 있다. ε-DU 계산기(550)는 이 암호화된 데이터를 상기 Rijndael 기록 블록과 XOR 연산시킬 수 있다. 그 결과는 256 비트의 XOR 연산된 Rijndael 기록 블록 또는 256 비트의 XOR 연산된 Rijndael 블록이다. 이어서, ε-DU 계산기(550)는 초기화 시에 랜덤 키 K2를 생성 또는 선택할 수 있다. ε-DU 계산기(550)는 XOR 연산된 Rijndael 기록 블록에 대해서 Rijndael 함수를 2 라운드 또는 4 라운드 실행시킬 시에 K2를 사용할 수 있다. 이렇게 XOR 연산된 Rijndael 기록 블록에 대해서 Rijndael 함수를 4 라운드 실행시키면 그 결과는 256 비트의 G 기록 블록이다. 이 G 기록 블록은 이어서 256 비트의 키 K3와 XOR 연산되며 이에 따라 256 비트의 M 블록이 생성될 수 있다.
이어서, 256 비트의 M 기록 블록은 XOR 트리를 통해서 32 비트 MAC 또는 제 1 MAC로 붕괴될 수 있다. 암호화된 데이터는 DRAM(115)에 기록될 수 있다. 또한, 논스 및 제 1 MAC도 오프-칩에 저장되고 DRAM(115)에 기록된 암호화된 데이터와 연관될 수 있다.
데이터 핸들러(530)가 판독 요청을 수신하면, 데이터 핸들러(530)는 판독 요청과 함께 판독 어드레스를 수신할 수 있다. 데이터 핸들러(530)는 MAC 컴퓨터(535)에 판독 어드레스를 전송할 수 있다. MAC 컴퓨터(535)는 오프-칩 메모리로부터 제 1 MAC, 논스 및 판독 데이터를 검색할 수 있다. MAC 컴퓨터(535)는 또한 판독 데이터가 DRAM(115)에 기록되었을 때에 온-칩 상태로 저장된 키들, K1, K2 및 K3을 검색할 수 있다. MAC 컴퓨터(535)는 이 키들, 제 1 MAC, 논스 및 판독 데이터를 PRP F 계산기(545)에 전송할 수 있다. 이 PRP F 계산기(545)는 K1을 사용하여, 208 비트의 제로(제로 패드), 32 비트의 어드레스 및 16 비트의 논스로 구성된 256 비트의 데이터 블록에 대해서 Rijndael 함수를 14 라운드 실행시킬 수 있다. 이와 달리, 기록 핸들러와 연동되어서, PRP F 계산기(545)는 Rijndael 함수의 128 비트의 AES 버전을 2 라운드로 해서 2 개의 병렬 인스턴스를 실행할 수 있다. 이 결과는 Rijndael 블록 또는 Rijndael 판독 블록으로서 지칭될 수 있는 256 비트의 랜덤 데이터이다. PRP F 계산기(545)는 이 Rijndael 판독 블록을 ε-DU 계산기(550)에 전달할 수 있다.
ε-DU 계산기(550)는 이 암호화된 판독 데이터를 상기 Rijndael 판독 블록과 XOR 연산시킬 수 있다. 그 결과는 256 비트의 XOR 연산된 Rijndael 판독 블록 또는 256 비트의 XOR 연산된 Rijndael 블록이다. 이어서, ε-DU 계산기(550)는 XOR 연산된 Rijndael 판독 블록에 대해서 Rijndael 함수를 4 라운드 실행시킬 시에 K2를 사용할 수 있다. 이렇게 XOR 연산된 Rijndael 판독 블록에 대해서 Rijndael 함수를 4 라운드 실행시키면 그 결과는 256 비트의 G 판독 블록 또는 G 블록이다. 이 G 판독 블록은 이어서 256 비트의 키 K3와 XOR 연산되며 이에 따라 256 비트의 M 판독 블록 또는 M 블록이 생성될 수 있다.
256 비트의 M 판독 블록은 XOR 트리를 통해서 32 비트 MAC 또는 제 2 MAC로 붕괴될 수 있다. 이 제 2 MAC는 상기 제 1 MAC와 비교된다. 이들이 서로 동일하지 않으면, 판독 데이터는 변형되거나 손상된 것이다. 메모리가 변형되었거나 손상되었으면, MAC 컴퓨터(535)는 메모리 손상 응답 절차를 수행한다.
MAC 사전 연산을 위한 시스템 및 방법은 스테이트레스(stateless)할 수 있다. 스테이트레스한 인증 및 암호화 알고리즘은 메모리를 개방시켜서 다시 한번 공격에 노출되게 한다. 가령, 공격자는 일 메모리 위치를 이 메모리 위치와 동일한 메모리 위치에 이전에 저장되었던 값으로 대체시킬 수 있다. 마찬가지로, 공격자는 기록 트랜잭션 동안에 DRAM를 간단하게 업데이트시키지 않을 수 있다. 이러한 공격으로 인해서 메모리는 복호화 및 인증 후에 유효한 상태로 오인될 수도 있다.
효율성을 위해서, 암호화 및 인증 키는 메모리 전체에 걸쳐서 또는 대부분의 메모리 영역에 대해서 생성될 수 있다. 상술한 바와 같은 재공격을 막기 위해서는, 메모리와 연관된 암호화 키 및 인증 키는 주기적으로 갱신되어야 한다.
본 발명에 따른 메모리 키 갱신 실시예는 먼저 메모리를 제 1 영역 및 제 2 영역을 포함하는 2 개의 세그먼트로 분할될 수 있다. 메모리는 제 1 영역 및 제 2 영역으로 분할된 순서화된 어레이이다. 제 1 영역 및 제 2 영역은 경계 어드레스에 의해서 분리될 수 있다. 상기 제 1 영역의 데이터를 상기 제 1 키 세트를 사용하여 암호화 및 인증을 행할 수 있다. 상기 제 2 영역의 데이터를 상기 제 2 키 세트를 사용하여 암호화 및 인증을 행할 수 있다. 리프레시 방법은 다른 영역의 메모리를 희생시키면서 일 영역의 메모리를 성장시킬 수 있다. 따라서 제 2 영역의 메모리는 제 2 영역의 경계가 메모리의 끝에 도달할 때까지 성장할 수 있다. 이 메모리의 끝은 어드레스 가능한 가장 높은 어드레스 또는 어드레스 가능한 가장 낮은 어드레스일 수 있다.
데이터가 제 2 메모리 영역으로 기록될 때에, 제 2 키 세트가 사용되어서 데이터를 복호화 및 인증할 수 있다. 경계가 메모리의 끝에 도달하면, 가령, 경계가 어드레스 가능한 가장 낮은 어드레스에 도달하면, 제 1 메모리 영역과 연관된 키들은 물러나고 새로운 제 3 키 세트가 제 1 메모리 영역을 위해서 생성될 수 있다. 데이터가 메모리에 기록될 때에, 이 제 3 키 세트를 사용하여 데이터가 암호화되고 인증되며 이 데이터는 제 1 메모리 영역에 배치된다. 이 제 1 메모리 영역이 제 2 메모리 영역의 희생으로 인해서 성장할 수 있다. 이러한 성장은 경계가 다시 메모리의 끝에 도달할 때까지, 가령, 메모리의 어드레스 가능한 최고 어드레스에 도달할 때까지 계속된다. 이 방법은 제 4 키 세트를 생성함으로써 계속 진행된다. 새로운 데이터가 메모리에 기록되면, 이 제 4 키 세트를 사용하여 데이터가 암호화 및 인증되고 이 데이터는 제 2 메모리 영역으로 배치된다. 이러한 키 재생성 및 분리된 메모리 영역으로 기록 동작은 계속 진행된다.
본 발명의 일 실시예에서 시스템(500)은 하나 이상의 컴퓨터 소프트웨어 구성 요소들과 같은 다수의 구성 요소들을 포함한다. 이러한 다수의 구성 요소들은 시스템(500) 내에서 결합되거나 분할될 수 있다. 시스템(500)의 예시적인 구성 요소는 본 기술 분야의 당업자에게는 잘 알려진 바와 같이 임의의 프로그래밍 언어 또는 다수의 프로그래밍 언어로 기록되거나 구현될 수 있는 일련의 컴퓨터 인스트럭션 또는 컴퓨터 인스트럭션 세트를 채용하거나 포함할 수 있다. 일 실시예에서 본 시스템(500)은 본 명세서 및 도면에서와 같이 종형 배향을 포함하지만 이는 설명을 위해서 시스템(500)의 일 예시적인 구성을 나타낼 뿐이며 다양한 배향이 가능하다.
일 실시예에서 시스템(500)은 하나 이상의 컴퓨터 판독가능한 신호 보유 매체를 채용한다. 이 컴퓨터 판독 가능한 신호 보유 매체는 본 발명의 하나 이상의 실시예들의 하나 이상의 부분들을 수행하기 위한 소프트웨어, 펌웨어 및/또는 어셈블리 언어를 포함한다. 일 실시예에서 이 시스템(500)의 컴퓨터 판독 가능한 신호 보유 매체는 자기 저장 매체, 광학 저장 매체, 생물학적 저장 매체 및 원자적 데이터 저장 매체 중 하나 이상을 포함한다. 가령, 이 컴퓨터 판독 가능한 신호 보유 매체는 플로피 디스크, 자기 테이프, CD-ROM, DVD-ROM, 하드 디스크 드라이브 및 전자적 메모리를 포함한다.
본 명세서에서 기술된 단계들 또는 동작들은 단지 예시적일 뿐이다. 따라서, 본 시스템(500) 및 방법(200,300,400)의 기술적 사상을 일탈하지 않으면서 이들 단계 또는 동작들에 대해서는 수많은 수정 및 변경 사항들이 존재할 수 있다. 가령, 단계들은 상이한 순서로 실행되거나 단계들이 부가되거나 삭제되거나 수정될 수도 있다.
시스템(500) 및 방법(200,300,400)에 대한 예시적인 실시예들이 본 명세서에서 상세하게 기술되었지만, 시스템(500) 및 방법(200,300,400)의 기술적 사상을 일탈하지 않으면서 수많은 수정, 부가, 치환, 변경 등이 가능하고 따라서 이들은 다음의 청구 범위에서 규정된 바와 같은 시스템(500) 및 방법(200,300,400)의 범위 내에 속하는 것으로 간주될 수 있음은 본 기술 분야의 당업자에게는 자명하다.

Claims (10)

  1. 의사 랜덤 함수(Pseudo-Random Function) 및 의사 랜덤 치환(Pseudo-Random Permutation) 중 적어도 하나를 실행함으로써 데이터 입력으로부터 랜덤 치환된 데이터를 생성하는 단계와,
    상기 랜덤 치환된 데이터와 수신된 제 2 데이터 블록을 결합하고 이 결합 결과에 대해 ε-DU 함수(epsilon differentially uniform function)를 실행시킴으로써 제 1 데이터 블록을 생성하는 단계와,
    상기 ε-DU 함수의 실행 결과를 비밀 키와 XOR 연산시키는 단계와,
    상기 제 1 데이터 블록을 제 1 메시지 인증 코드(MAC)로 축소시키는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 데이터 입력은 제로 패드(zero pad), 논스(nonce) 및 메모리 어드레스이며,
    상기 제 1 데이터 블록은 XOR 연산된 Rijndael 블록이고,
    상기 수신된 제 2 데이터 블록은 암호화된 데이터 블록이며,
    상기 랜덤 치환된 데이터를 생성하는 단계는 상기 어드레스, 논스 및 제로 패드에 대한 Rijndael 함수의 14 라운드 실행과 개선된 암호화 표준(AES) 함수를 10 라운드로 해서 2 인스턴스(instance) 실행 중 적어도 하나를 실행하여 Rijndael 블록을 생성하는 단계를 더 포함하고,
    상기 제 1 데이터 블록을 생성하는 단계는 상기 Rijndael 블록을 상기 암호화된 데이터 블록과 XOR 연산함으로써 XOR 연산된 Rijndael 블록을 생성하는 단계를 더 포함하며,
    상기 XOR 연산된 Rijndael 블록에 대해서 Rijndael 함수를 2 라운드 및 4 라운드 중 적어도 하나를 실행하여 상기 XOR 연산된 Rijndael 블록에 대해서 ε-DU 함수를 실행시킴으로써 G 블록이 생성되고,
    상기 ε-DU 함수 실행의 결과를 상기 비밀 키와 XOR 연산시킴으로써 M 블록이 생성되고,
    상기 제 1 데이터 블록을 제 1 메시지 인증 코드(MAC)로 축소시키는 단계는 XOR 트리를 통해서 상기 M 블록을 상기 제 1 메시지 인증 코드로 축소시키는 단계를 더 포함하는
    방법.
  3. 제 2 항에 있어서,
    판독 데이터 블록을 인증하는 단계는,
    상기 비밀 키, 제 1 랜덤 키 및 제 2 랜덤 키, 상기 제 1 메시지 인증 코드 및 상기 논스를 검색하는(retrieve) 단계와,
    상기 비밀 키, 상기 제 1 랜덤 키 및 제 2 랜덤 키, 상기 제 1 메시지 인증 코드 및 상기 논스로부터 제 2 메시지 인증 코드를 생성하는 단계를 더 포함하는
    방법.
  4. 제 3 항에 있어서,
    상기 제 2 메시지 인증 코드를 생성하는 단계는,
    상기 어드레스, 논스 및 제로 패드에 대해서 Rijndael 함수를 14 라운드 실행하는 것과 개선된 암호화 표준(AES) 함수를 10 라운드로 해서 2 인스턴스(instance) 실행하는 것 중 적어도 하나를 실행하여 Rijndael 판독 블록을 생성하는 단계와,
    상기 Rijndael 판독 블록을 암호화된 판독 데이터 블록과 XOR 연산함으로써 XOR 연산된 Rijndael 판독 블록을 생성하는 단계와,
    상기 XOR 연산된 Rijndael 판독 블록에 대해서 Rijndael 함수를 2 라운드 및 4 라운드 중 적어도 하나를 실행하여 G 판독 블록을 생성하는 단계와,
    상기 G 판독 블록을 상기 비밀 키와 XOR 연산시킴으로써 M 판독 블록을 생성하는 단계와,
    XOR 트리를 통해서 상기 M 판독 블록을 상기 제 2 메시지 인증 코드로 축소시키는 단계를 더 포함하는
    방법.
  5. 제 4 항에 있어서,
    상기 판독 데이터 블록을 인증하는 단계는 상기 제 1 메시지 인증 코드와 상기 제 2 메시지 인증 코드를 서로 비교하는 단계와, 상기 제 1 메시지 인증 코드와 상기 제 2 메시지 인증 코드가 서로 동일하지 않으면 메모리 손상 절차(memory corruption procedure)를 수행하는 단계를 더 포함하는
    방법.
  6. MAC 컴퓨터를 포함하는 시스템으로서,
    상기 MAC 컴퓨터는,
    의사 랜덤 함수 및 의사 랜덤 치환 중 적어도 하나를 실행함으로써 제로 패드, 논스 및 메모리 어드레스로 구성된 데이터 입력으로부터 랜덤 치환된 데이터를 생성하고,
    상기 랜덤 치환된 데이터와 수신된 제 2 데이터 블록을 결합하고 이 결합 결과에 대해 ε-DU 함수를 실행시킴으로써 제 1 데이터 블록을 생성하며,
    상기 ε-DU 함수의 실행 결과를 비밀 키와 XOR 연산시키며,
    상기 제 1 데이터 블록을 제 1 메시지 인증 코드(MAC)로 축소시키고,
    상기 MAC 컴퓨터는 PRP F 계산기, ε-DU 계산기, 데이터 핸들러 및 데이터 암호화기를 더 포함하고,
    상기 MAC 컴퓨터는 상기 PRP F 계산기, 상기 ε-DU 계산기, 상기 데이터 핸들러 및 상기 데이터 암호화기에 통신 가능하게 접속되고,
    상기 PRP F 계산기는 상기 데이터 핸들러 및 상기 ε-DU 계산기에 통신 가능하게 접속되며,
    상기 ε-DU 계산기는 상기 데이터 핸들러 및 상기 데이터 암호화기에 통신 가능하게 접속되며,
    상기 데이터 핸들러는 상기 PRP F 계산기 및 상기 데이터 암호화기에 메모리 어드레스를 전송하며,
    상기 PRP F 계산기는 상기 메모리 어드레스, 논스 및 제로 패드에 대해서 Rijndael 함수를 14 라운드 실행하여 Rijndael 블록을 생성함으로써 상기 랜덤 치환된 데이터를 생성하는 것을 특징으로 하는
    시스템.
  7. 제 6 항에 있어서,
    상기 데이터 핸들러는 제 2 데이터 블록을 상기 데이터 암호화기에 전송하며,
    상기 데이터 암호화기는 상기 제 2 데이터 블록을 암호화하여 이 암호화된 데이터 블록을 상기 ε-DU 계산기에 전송하며,
    상기ε-DU 계산기는 상기 Rijndael 블록과 상기 암호화된 데이터 블록을 서로 XOR 연산시킴으로써 XOR 연산된 Rijndael 블록을 생성하며,
    상기ε-DU 계산기는 상기 XOR 연산된 Rijndael 블록에 대해서 Rijndael 함수를 2 라운드 및 4 라운드 중 적어도 하나를 실행함으로써 G 블록을 생성하며,
    상기 MAC 컴퓨터는 상기 G 블록을 상기 비밀 키와 XOR 연산시킴으로써 M 블록이 생성하고,
    상기 MAC 컴퓨터는 XOR 트리를 통해서 상기 M 블록을 상기 제 1 메시지 인증 코드로 축소시키는 것을 특징으로 하는
    시스템.
  8. 제 7 항에 있어서,
    판독 데이터 블록을 인증하는 단계는,
    상기 MAC 컴퓨터가 상기 비밀 키, 제 1 랜덤 키 및 제 2 랜덤 키, 상기 제 1 메시지 인증 코드 및 상기 논스를 검색하는 단계와,
    상기 MAC 컴퓨터가 상기 비밀 키, 상기 제 1 랜덤 키 및 제 2 랜덤 키, 상기 제 1 메시지 인증 코드 및 상기 논스를 상기 MAC 컴퓨터의 상기 PRP F 계산기에 전송하는 단계를 더 포함하는 것을 특징으로 하는
    시스템.
  9. 제 8 항에 있어서,
    제 2 메시지 인증 코드를 생성하는 단계는,
    상기 PRP F 계산기가 상기 어드레스, 논스 및 제로 패드에 대해서 Rijndael 함수를 14 라운드 실행시키는 것과 개선된 암호화 표준(AES) 함수를 10 라운드로 해서 2 인스턴스(instance) 실행시키는 것 중 적어도 하나를 실행하여 Rijndael 판독 블록을 생성하는 단계와,
    상기 PRP F 계산기가 상기 Rijndael 판독 블록을 상기ε-DU 계산기에 전달하는 단계와,
    상기ε-DU 계산기가 상기 Rijndael 판독 블록을 암호화된 판독 데이터 블록과 XOR 연산함으로써 XOR 연산된 Rijndael 판독 블록을 생성하는 단계와,
    상기ε-DU 계산기가 상기 XOR 연산된 Rijndael 판독 블록에 대해서 Rijndael 함수를 2 라운드 및 4 라운드 중 적어도 하나를 실행하여 G 판독 블록을 생성하는 단계와,
    상기 MAC 컴퓨터가 상기 G 판독 블록을 상기 비밀 키와 XOR 연산시킴으로써 M 블록을 생성하는 단계와,
    상기 MAC 컴퓨터가 XOR 트리를 통해서 상기 M 판독 블록을 상기 제 2 메시지 인증 코드로 축소시키는 단계를 포함하며,
    상기 판독 데이터 블록을 인증하는 단계는 상기 MAC 컴퓨터가 상기 제 1 메시지 인증 코드와 상기 제 2 메시지 인증 코드를 서로 비교하는 단계와, 상기 제 1 메시지 인증 코드와 상기 제 2 메시지 인증 코드가 서로 동일하지 않으면 메모리 손상 절차를 수행하는 단계를 더 포함하는 것을 특징으로 하는
    시스템.
  10. 메모리를 제 1 영역 및 제 2 영역을 포함하는 2 개의 세그먼트―상기 2 개의 세그먼트는 경계 어드레스에 의해서 분리됨―로 분할하는 단계와,
    제 1 키 세트를 상기 제 1 영역과 연관시키고 제 2 키 세트를 상기 제 2 영역과 연관시키는 단계와,
    상기 제 1 영역의 데이터를 상기 제 1 키 세트를 사용하여 암호화 및 인증하는 단계와,
    상기 제 2 영역의 데이터를 상기 제 2 키 세트를 사용하여 암호화 및 인증하는 단계와,
    상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역으로 할당된 메모리만큼 상기 제 2 메모리 영역을 성장시키는 단계와,
    상기 경계 어드레스가 메모리의 끝에 도달할 때에 제 3 키 세트를 상기 제 1 메모리 영역과 연관시키는 단계를 포함하는
    방법.
KR1020117004620A 2008-08-28 2009-08-25 메시지 인증 코드 사전 연산 방법 및 시스템 KR101324825B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/229,987 2008-08-28
US12/229,987 US8452984B2 (en) 2008-08-28 2008-08-28 Message authentication code pre-computation with applications to secure memory
PCT/US2009/004820 WO2010024874A2 (en) 2008-08-28 2009-08-25 Message authentication code pre-computation with applications to secure memory

Publications (2)

Publication Number Publication Date
KR20110036854A true KR20110036854A (ko) 2011-04-11
KR101324825B1 KR101324825B1 (ko) 2013-11-01

Family

ID=41718390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117004620A KR101324825B1 (ko) 2008-08-28 2009-08-25 메시지 인증 코드 사전 연산 방법 및 시스템

Country Status (6)

Country Link
US (2) US8452984B2 (ko)
EP (1) EP2329622B1 (ko)
JP (1) JP5306465B2 (ko)
KR (1) KR101324825B1 (ko)
CN (1) CN102138300B (ko)
WO (1) WO2010024874A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566593B2 (en) * 2009-07-06 2013-10-22 Intel Corporation Method and apparatus of deriving security key(s)
EP2290872B1 (en) * 2009-08-27 2014-06-18 Nxp B.V. Device for generating a message authentication code for authenticating a message
US8498410B2 (en) * 2011-03-14 2013-07-30 Motorola Solutions, Inc. Methods for customizing a Rijndael block cipher
JP5824849B2 (ja) * 2011-04-22 2015-12-02 ソニー株式会社 情報処理装置および情報処理方法
US9465755B2 (en) * 2011-07-18 2016-10-11 Hewlett Packard Enterprise Development Lp Security parameter zeroization
US9304944B2 (en) * 2012-03-29 2016-04-05 Broadcom Corporation Secure memory access controller
US20140044262A1 (en) * 2012-08-09 2014-02-13 Cisco Technology, Inc. Low Latency Encryption and Authentication in Optical Transport Networks
US9298947B2 (en) * 2013-02-07 2016-03-29 Qualcomm Incorporated Method for protecting the integrity of a fixed-length data structure
US9264222B2 (en) 2013-02-28 2016-02-16 Apple Inc. Precomputing internal AES states in counter mode to protect keys used in AES computations
CN103716231A (zh) * 2013-12-06 2014-04-09 广西科技大学 一种ZigBee-CAN网络网关
US9460312B2 (en) 2014-03-11 2016-10-04 Qualcomm Incorporated Data integrity protection from rollback attacks for use with systems employing message authentication code tags
US9509665B2 (en) 2014-08-11 2016-11-29 Alcatel Lucent Protecting against malicious modification in cryptographic operations
US9438425B2 (en) * 2014-08-15 2016-09-06 Alcatel Lucent Robust MAC aggregation with short MAC tags
JP6743702B2 (ja) * 2014-10-23 2020-08-19 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、macタグリスト生成方法、macタグリスト検証方法およびプログラム
US10326589B2 (en) * 2015-09-28 2019-06-18 Mitsubishi Electric Corporation Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
US10511581B2 (en) 2015-11-17 2019-12-17 International Business Machines Corporation Parallelizable encryption using keyless random permutations and authentication using same
US10608822B2 (en) * 2017-04-26 2020-03-31 Nxp B.V. Efficient calculation of message authentication codes for related data
US10541845B2 (en) * 2017-09-25 2020-01-21 Kenneth Stuart Pseudo random multi-carrier method and system
KR102625275B1 (ko) * 2018-08-03 2024-01-12 엘지전자 주식회사 비휘발성 메모리를 구비하는 전자 기기
WO2020174291A1 (en) * 2019-02-25 2020-09-03 Telefonaktiebolaget Lm Ericsson (Publ) Hop by hop security in iab networks
US11263308B2 (en) 2019-03-25 2022-03-01 Micron Technology, Inc. Run-time code execution validation
US11190339B2 (en) * 2019-05-14 2021-11-30 Baffle, Inc. System and method for performing equality and less than operations on encrypted data with quasigroup operations
US11637690B1 (en) 2021-10-08 2023-04-25 Baffle, Inc. Format preserving encryption (FPE) system and method for long strings

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029200A1 (en) * 1999-09-10 2002-03-07 Charles Dulin System and method for providing certificate validation and other services
US6934388B1 (en) * 1999-11-12 2005-08-23 Itt Manufacturing Enterprises, Inc. Method and apparatus for generating random permutations
US6963976B1 (en) * 2000-11-03 2005-11-08 International Business Machines Corporation Symmetric key authenticated encryption schemes
CN100340937C (zh) * 2004-04-12 2007-10-03 华为技术有限公司 一种软件保护方法及装置
JPWO2006019152A1 (ja) * 2004-08-19 2008-05-08 株式会社日立製作所 メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法
JP4735644B2 (ja) * 2005-11-04 2011-07-27 日本電気株式会社 メッセージ認証装置、メッセージ認証方法、メッセージ認証プログラムとその記録媒体
EP2809030A3 (fr) * 2006-02-03 2015-04-22 Advanced Track And Trace Procédé et dispositif d'authentification
US8687800B2 (en) * 2006-08-15 2014-04-01 Alcatel Lucent Encryption method for message authentication
US8107620B2 (en) * 2007-03-21 2012-01-31 International Business Machines Corporation Simple and efficient one-pass authenticated encryption scheme
US8942219B2 (en) * 2007-04-13 2015-01-27 Hart Communication Foundation Support for network management and device communications in a wireless network
US8161271B2 (en) * 2007-07-11 2012-04-17 International Business Machines Corporation Store misaligned vector with permute
US7941663B2 (en) * 2007-10-23 2011-05-10 Futurewei Technologies, Inc. Authentication of 6LoWPAN nodes using EAP-GPSK
US20090187771A1 (en) * 2008-01-17 2009-07-23 Mclellan Jr Hubert Rae Secure data storage with key update to prevent replay attacks
US8635452B2 (en) * 2008-08-19 2014-01-21 Nxp B.V. Method for generating a cipher-based message authentication code
US8122190B1 (en) * 2009-05-29 2012-02-21 Itt Manufacturing Enterprises, Inc. Method and system for reconfigurable memory-based permutation implementation
EP2288195B1 (en) * 2009-08-20 2019-10-23 Samsung Electronics Co., Ltd. Method and apparatus for operating a base station in a wireless communication system

Also Published As

Publication number Publication date
US8799679B2 (en) 2014-08-05
CN102138300B (zh) 2014-11-26
US20100058070A1 (en) 2010-03-04
WO2010024874A2 (en) 2010-03-04
WO2010024874A3 (en) 2010-09-02
CN102138300A (zh) 2011-07-27
US8452984B2 (en) 2013-05-28
EP2329622B1 (en) 2019-07-31
JP2012501579A (ja) 2012-01-19
JP5306465B2 (ja) 2013-10-02
EP2329622A2 (en) 2011-06-08
KR101324825B1 (ko) 2013-11-01
US20130254557A1 (en) 2013-09-26

Similar Documents

Publication Publication Date Title
KR101324825B1 (ko) 메시지 인증 코드 사전 연산 방법 및 시스템
TWI717907B (zh) 用於安全記憶體的方法與系統
US8843767B2 (en) Secure memory transaction unit
EP3355232B1 (en) Input/output data encryption
US10102390B2 (en) Memory authentication with redundant encryption
Elbaz et al. Tec-tree: A low-cost, parallelizable tree for efficient defense against memory replay attacks
US8767959B2 (en) Block encryption
US11232718B2 (en) Methods and devices for protecting data
US8000467B2 (en) Data parallelized encryption and integrity checking method and device
US11308241B2 (en) Security data generation based upon software unreadable registers
US9729319B2 (en) Key management for on-the-fly hardware decryption within integrated circuits
CN113434876A (zh) 一种数据加密方法、装置、内存控制器、芯片及电子设备
JP6246516B2 (ja) 情報処理システム
CN108242997A (zh) 安全通信的方法与设备
US11356271B2 (en) Systems and methods for providing a trusted keystore
US20230281305A1 (en) Method for protecting against side-channel attacks
CN117648719A (zh) 数据安全方法及系统
Weir Data At Rest Innovation with Turnstile

Legal Events

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

Payment date: 20161021

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171020

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee