KR101734205B1 - 고정-길이 데이터 구조의 무결성을 보호하기 위한 방법 - Google Patents

고정-길이 데이터 구조의 무결성을 보호하기 위한 방법 Download PDF

Info

Publication number
KR101734205B1
KR101734205B1 KR1020157023843A KR20157023843A KR101734205B1 KR 101734205 B1 KR101734205 B1 KR 101734205B1 KR 1020157023843 A KR1020157023843 A KR 1020157023843A KR 20157023843 A KR20157023843 A KR 20157023843A KR 101734205 B1 KR101734205 B1 KR 101734205B1
Authority
KR
South Korea
Prior art keywords
authentication code
generating
keys
data structure
masks
Prior art date
Application number
KR1020157023843A
Other languages
English (en)
Other versions
KR20150115874A (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 KR20150115874A publication Critical patent/KR20150115874A/ko
Application granted granted Critical
Publication of KR101734205B1 publication Critical patent/KR101734205B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

하나의 특징은, 계산적으로 효율적인 알고리즘을 이용함으로써 데이터 구조를 보호하는 메커니즘과 관련된다. 복수의 키들 및/또는 마스크들은 세션의 개시 또는 부트-업 시에 사전-발생될 수 있다. 인증 코드는, 복수의 사전-발생된 키들의 서브세트 및/또는 복수의 사전-발생된 마스크들로부터의 마스크를 선택함으로써, 각각의 데이터 구조(예를 들어, 메모리 블록 또는 헤더 블록)에 대해 계산될 수 있다. 인증 코드는, 데이터 구조의 무결성의 미래의 검증을 위해 데이터 구조 내에 저장될 수 있다. 모든 인증 코드들에 대해(예를 들어, 다른 데이터 구조들에 대해) 이용되는 키들 및/또는 마스크들은, 동일한 사이클 또는 세션 동안 동일한 복수의 키들 및/또는 마스크들로부터 선택될 수 있다.

Description

고정-길이 데이터 구조의 무결성을 보호하기 위한 방법{METHOD FOR PROTECTING THE INTEGRITY OF A FIXED-LENGTH DATA STRUCTURE}
[0001] 다양한 특징들은, 메시지 인증 코드(message authentication code)들의 사용에 의한, 공격들로부터의 데이터 구조들의 보호에 관한 것이다.
[0002] 힙 메모리(heap memory)는 프로세서에 의해 예약되며, 메타-데이터 구조의 사용을 통해 조직화된다. 메타-데이터 구조는, 어느 변수가 메모리의 다음번 섹션을 "소유(own)"하는지(메모리가 할당되는 경우) 및 대응하는 메모리 블록에서 예약되는 메모리의 양에 관한 정보를 (예를 들어, 헤더 블록에) 포함하는 고정-길이 데이터 구조(fixed-length data structure)일 수 있다. 공격자들은, 자유 메모리의 양을 감소시키기 위해 또는 데이터의 특정한 중요한 피스들이 메모리의 취약한 섹션들에 위치됨을 보장하기 위해, 이러한 메타-데이터 구조들을 손상(corrupt)시키기를(예를 들어, 헤더 블록들을 수정하기를) 희망할 수 있다. 그러므로, 데이터 구조들의 인가되지 않은 변경을 방지하기 위해 이러한 메타-데이터(예를 들어, 메모리 블록의 헤더 블록 또는 데이터 구조의 데이터)를 보호하는 것이 바람직하다.
[0003] 그러므로, 데이터 구조를 보호하기 위해 계산적으로 저렴한 솔루션이 필요하다.
[0004] 인증 코드를 발생시키는 방법이 제공된다. 복수의 개별 키들을 포함하는 키들의 세트가 프로세싱 회로 또는 프로세싱 회로 상에서 실행되는 세션의 스타트업(startup) 시에 사전-발생된다. 복수의 개별 마스크들을 포함하는 마스크들의 세트가 또한 사전-발생된다. 마스크들의 세트는 또한, 프로세싱 회로 또는 프로세싱 회로 상에서 실행되는 세션의 스타트업 시에 사전-발생될 수 있다. 키들의 세트 및/또는 마스크들의 세트 중 적어도 하나는 랜덤 값에 기초하여 발생될 수 있다.
[0005] 고정-길이 데이터 구조와 연관된 복수의 가변 입력들이 획득될 수 있다. 마스크 및 선택된 대응하는 키들 각각은 복수의 가변 입력들 중 적어도 하나에 적어도 부분적으로 기초하여 선택될 수 있다.
[0006] 복수의 일시적 값들을 획득하기 위해, 복수의 가변 입력들 각각은 키들의 세트로부터 선택된 대응하는 키와 결합될 수 있다. 그 다음으로, 중간 값을 획득하기 위해, 복수의 일시적 값들이 결합될 수 있다. 그 다음으로, 고정-길이 데이터 구조에 대한 메시지 인증 코드를 획득하기 위해, 마스크들의 세트로부터 선택된 마스크와 중간 값 사이에서 연산이 수행될 수 있다. 키들의 세트는 키들의 서브세트들로 세분될 수 있고, 메시지 인증 코드를 계산하기 위해, 키들의 단지 하나의 서브세트(예를 들어, 하나의 키, 2개의 키들 등등)만이 키들의 임의의 단일 서브세트로부터 선택된다.
[0007] 복수의 가변 입력들 중 적어도 하나는 고정-길이 데이터 구조와 연관된 메모리 어드레스일 수 있다. 선택된 대응하는 키들 각각은 메모리 어드레스에 기초하여 선택될 수 있다. 선택된 마스크는 메모리 어드레스에 기초하여 선택될 수 있다.
[0008] 복수의 일시적 값들은: (a) 결합된 값을 획득하기 위해 복수의 일시적 값들을 더함으로써, 그리고/또는 (b) 중간 값을 획득하기 위해, 사전-선택된 고정 소수(fixed prime number)를 이용하여, 결합된 값에 대해 모듈로 연산(modulo operation)을 수행함으로써 결합될 수 있다. 키들의 세트의 각각의 키의 값은 0 내지 사전-선택된 고정 소수일 수 있다. 중간 값과 선택된 마스크 사이의 연산은, 예를 들어 비트단위 배타적-OR 연산(bitwise exclusive-OR operation)일 수 있다.
[0009] 스타트업들 사이의 또는 세션들 사이의 지속기간 동안 마스크들의 세트 및 키들의 세트 중 적어도 하나가 보안 메모리 위치에 저장될 수 있다. 메시지 인증 코드는 메모리 디바이스의 고정-길이 데이터 구조 내에 저장될 수 있다. 메시지 인증 코드는 고정-길이 데이터 구조에 대한 헤더 블록에 저장될 수 있다.
[0010] 후속 검증 단계 동안, 이전에 저장된 메시지 인증 코드가 데이터 구조로부터 획득될 수 있다. 그 다음으로, 데이터 구조의 무결성을 확인하기 위해, 메시지 인증 코드는 이전에 저장된 메시지 인증 코드와 비교될 수 있다.
[0011] 유사하게, 메모리 디바이스 및 메모리 디바이스에 커플링된 프로세싱 회로를 포함하는 디바이스가 제공될 수 있다. 메모리 디바이스는 고정-길이 데이터 구조를 저장하는 역할을 할 수 있다. 프로세싱 회로는: (a) 프로세싱 회로 또는 프로세싱 회로 상에서 실행되는 세션의 스타트업 시에, 복수의 개별 키들을 포함하는 키들의 세트를 사전-발생시키고; (b) 복수의 개별 마스크들을 포함하는 마스크들의 세트를 사전-발생시키고; (c) 고정-길이 데이터 구조와 연관된 복수의 가변 입력들을 획득하고; (d) 복수의 일시적 값들을 획득하기 위해 복수의 가변 입력들 각각을 키들의 세트로부터 선택된 대응하는 키와 결합하고; (e) 중간 값을 획득하기 위해 복수의 일시적 값들을 결합하고; (f) 고정-길이 데이터 구조에 대한 메시지 인증 코드를 획득하기 위해, 마스크들의 세트로부터 선택된 마스크와 중간 값 사이에서 연산을 수행하도록 구성 또는 적응될 수 있다.
[0012] 마스크들의 세트는 또한, 프로세싱 회로 또는 프로세싱 회로 상에서 실행되는 세션의 스타트업 시에 사전-발생될 수 있다.
[0013] 키들의 세트 및 마스크들의 세트 중 적어도 하나는 랜덤 값에 기초하여 발생될 수 있다.
[0014] 복수의 일시적 값들은: (a) 결합된 값을 획득하기 위해 복수의 일시적 값들을 더함으로써, 그리고/또는 (b) 중간 값을 획득하기 위해, 사전-선택된 고정 소수를 이용하여, 결합된 값에 대해 모듈로 연산을 수행함으로써 결합될 수 있다. 키들의 세트의 각각의 키의 값은 0 내지 사전-선택된 고정 소수일 수 있다. 중간 값과 선택된 마스크 사이의 연산은 비트단위 배타적-OR 연산일 수 있다.
[0015] 마스크 및 선택된 대응하는 키들 각각은 복수의 가변 입력들 중 적어도 하나에 기초하여 선택된다. 복수의 가변 입력들 중 적어도 하나는 고정-길이 데이터 구조와 연관된 메모리 어드레스이다. 선택된 대응하는 키들 각각은 메모리 어드레스에 기초하여 선택된다. 선택된 마스크는 메모리 어드레스에 기초하여 선택될 수 있다.
[0016] 키들의 세트는 키들의 서브세트들로 세분될 수 있고, 메시지 인증 코드를 계산하기 위해, 키들의 단지 하나의 서브세트(예를 들어, 하나의 키, 2개의 키들 등등)만이 키들의 임의의 단일 서브세트로부터 선택된다.
[0017] 프로세싱 회로는 추가로, 스타트업들 사이의 또는 세션들 사이의 지속기간 동안 마스크들의 세트 및 키들의 세트 중 적어도 하나를 보안 메모리 위치에 저장하도록 적응될 수 있다.
[0018] 프로세싱 회로는 또한 추가로, 메모리 디바이스의 고정-길이 데이터 구조 내에 메시지 인증 코드를 저장하도록 적응될 수 있다. 메시지 인증 코드는 고정-길이 데이터 구조에 대한 헤더 블록에 저장될 수 있다.
[0019] 프로세싱 회로는 추가로: (a) 이전에 저장된 메시지 인증 코드를 데이터 구조로부터 획득하고; 그리고/또는 (b) 데이터 구조의 무결성을 확인하기 위해, 메시지 인증 코드를 이전에 저장된 메시지 인증 코드와 비교하도록 적응될 수 있다.
[0020] 도 1은, 보안 장기간 저장소(secure, long-term storage)에 저장되는 또는 연관된 메모리 제어기가 부팅될 때마다 랜덤하게 발생되어 보안 휘발성 메모리(secure, volatile memory)에 홀딩되는 암호화 키(cryptographic key)를 이용하여, 메시지 인증 코드(MAC; message authentication code)를 갖는 메모리의 데이터 구조를 보호하는 하나의 접근방식을 예시하는 블록도이다.
[0021] 도 2는 도 1의 암호화 MAC보다 계산적으로 더 효율적인 MAC-Lite 발생기를 이용하여 데이터 구조들을 보호하는 다른 접근방식을 예시하는 블록도이다.
[0022] 도 3은 순환 중복 검사(CRC; cyclic redundancy check) 또는 카나리아 값(canary value)보다 더 높은 보안성을 갖지만, 도 1의 암호화 MAC보다 계산적으로 더 효율적인 MAC-Lite 알고리즘(302)의 예를 예시한다.
[0023] 도 4는 통상의 MAC들보다 더 효율적으로 MAC를 발생시키도록 구현될 수 있는 MAC-Lite 알고리즘의 일 예를 예시한다.
[0024] 도 5는 마스크들의 개별 세트 및 키들의 개별 세트들의 사전-발생에 기초하여 인증 코드가 발생되는 일반적 접근방식을 예시한다.
[0025] 도 6은 데이터 구조의 무결성을 보호하기 위해 MAC-Lite 알고리즘을 수행하도록 적응된 디바이스의 예시적인 구현을 예시하는 블록도이다.
[0026] 도 7은 마스크들의 개별 세트 및 키들의 개별 세트들의 사전-발생에 기초하여 메모리 공간들을 위한 인증 코드를 발생시키는 예를 예시한다.
[0027] 다음의 설명에서, 특정 상세들은 본 개시내용의 다양한 양상들의 완전한 이해를 제공하기 위해 주어진다. 그러나, 그 양상들은 이러한 특정 상세들 없이 실시될 수 있음이 당업자에 의해 이해될 것이다. 예를 들어, 불필요한 상세로 양상들을 모호하게 하는 것을 회피하기 위해, 회로들은 블록도들로 도시된다. 다른 예들에서, 본 개시내용의 양상들을 모호하게 하지 않기 위해, 잘-알려진 회로들, 구조들 및 기법들은 상세하게 도시되지 않을 수 있다.
[0028] "예시적인"이라는 단어는 본 명세서에서 "예, 경우, 또는 예시로서 기능함"을 의미하기 위해 이용된다. "예시적인" 것으로서 본 명세서에서 설명된 임의의 구현 또는 양상이 반드시, 본 개시내용의 다른 양상들에 비해 바람직하거나 유리한 것으로 해석되는 것은 아니다. 마찬가지로, "양상들"이라는 용어는, 본 개시내용의 모든 양상들이 논의된 특징, 이점 또는 동작 모드를 포함하는 것을 요구하지는 않는다.
개요
[0029] 하나의 특징은, 계산적으로 효율적인 알고리즘을 이용함으로써, 데이터 구조를 보호하는 메커니즘을 제공한다. 복수의 키들 및/또는 마스크들은 세션의 개시 또는 부트-업 시에 사전-발생될 수 있다. 인증 코드는, 복수의 사전-발생된 키들의 서브세트 및/또는 복수의 사전-발생된 마스크들로부터 마스크를 선택함으로써, 각각의 데이터 구조(예를 들어, 메모리 블록 또는 헤더 블록)에 대해 계산될 수 있다. 인증 코드는, 데이터 구조의 무결성의 미래의 검증을 위해 데이터 구조 내에 저장될 수 있다. 모든 인증 코드들에 대해(예를 들어, 다른 데이터 구조들에 대해) 이용되는 키들 및/또는 마스크들은, 동일한 사이클 또는 세션 동안 동일한 복수의 키들 및/또는 마스크들로부터 선택될 수 있다.
[0030] 이러한 접근방식은, 표준 CRC 구현보다 다소 더 적은 구현 비용들을 가지면서도, 다른 암호화 메시지 인증 코드(MAC) 접근방식들보다는 적은 보안성(security)이지만, 순환 중복 검사(CRC) 또는 카나리아 값보다는 더 높은 보안성을 제공할 수 있다. 이러한 솔루션은, 입력의 포맷의 지식으로부터 그리고 일반적인 것보다 더 많은 수(larger-than-usual number)의 랜덤 또는 의사-랜덤 키들을 이용함으로써 효율성을 얻는다.
동적으로 발생된 메시지 인증 코드를 갖는 예시적인 메모리 구조
[0031] 도 1은, 보안 장기간 저장소에 저장되거나 또는 연관된 메모리 제어기가 부팅될 때마다 랜덤하게 발생되어 보안 휘발성 메모리에 홀딩되는 암호화 키를 이용하여 메시지 인증 코드(MAC)를 갖는 메모리의 데이터 구조들을 보호하는 하나의 접근방식을 예시하는 블록도이다. 프로세싱 회로(102)는 메모리 디바이스(104) 또는 저장소에 커플링될 수 있고 그리고/또는 통합된다. 메모리 디바이스(104)는, 메모리 블록들(114a, 114b, 및/또는 114c)로서 배열된 메모리 공간을 포함할 수 있다. 각각의 메모리 블록(114a, 114b, 114c)은 헤더 블록(106a, 106b, 및 106c), 및 대응하는 블록 예약 메모리 공간(block reserved memory space)(108a, 108b, 및 108c)을 포함할 수 있다. 헤더 블록(106)은 데이터 구조(예를 들어, 메타-데이터 구조)를 저장하는 역할을 할 수 있다.
[0032] 프로세싱 회로(102)는, 각각의 헤더 블록(106) 또는 메모리 블록(114)에 대해 MAC(110)를 계산하고 이러한 MAC(110)를 각각의 대응하는 헤더 블록(106)에 저장하는 MAC 발생기(112)를 구현하도록 구성될 수 있다. 일 예에서, MAC 발생기(예를 들어, 프로세싱 회로 또는 모듈)는, 다수의 라운드들 또는 반복들을 갖는 특정 MAC 알고리즘(116)(예를 들어, HMAC(Hash-based Message Authentication Code)-SHA-1(Secure Hash Algorithm 1), AES(Advanced Encryption Standard)-CMAC(cipher-based MAC), 및 DAA(Data Authentication Algorithm) 등)을 구현할 수 있다.
[0033] 때때로 키잉된 또는 암호화 해시 함수로 또한 지칭되는 통상의 MAC 알고리즘(116)은, 인증될 임의적-길이 메시지(120) 및 보안 키(118)를 입력으로서 수용하고, MAC 값을 출력한다. MAC 값은, (보안 키를 또한 프로세싱하는) 검증자(verifier)들이 메시지 콘텐츠(예를 들어, 헤더 블록(106) 및/또는 메모리 블록(114))에 대한 임의의 변경들을 검출도록 허용함으로써, 메시지의 데이터 무결성뿐만 아니라 그것의 진의(authenticity)도 보호한다.
[0034] 다양한 예들에서, MAC 알고리즘(116)은, 헤더 블록이 시작되고, 블록 예약 메모리 공간이 시작되고, 그리고/또는 데이터 구조의 특정 메타-데이터가 홀딩되는 메모리 어드레스(122)를 "메시지" 입력(120)의 부분으로서 포함할 수 있다. 이러한 MAC는 (헤더 블록(106)의) 데이터 구조에 저장되어, 데이터 구조가 판독 또는 기록될 때마다 체크될 수 있다. 부가적으로, MAC 알고리즘(116)은 또한, 커맨드들 및/또는 헤더 블록의 콘텐츠(예를 들어, 헤더 블록에 저장된 데이터 구조)와 같은 다른 입력들 1... n(124)을 "메시지" 입력(120)의 부분으로서 포함할 수 있다. MAC(110a)가 대응하는 헤더 블록(106a)의 정보(예를 들어, 메모리 블록(114a) 또는 블록 예약 메모리 공간(108a)에 대한 메모리 어드레스, 메모리 블록(114a) 또는 블록 예약 메모리 공간(108a)의 크기 등)의 적어도 일부에 기초하여 계산되기 때문에, 헤더 블록(106a), 메모리 블록(114a) 또는 블록 예약 메모리 공간(108a)에 대한 어드레스, 및/또는 대응하는 메모리 블록(114a) 및/또는 블록 예약 메모리 공간(108a)의 크기를 조작하려는 임의의 시도는, 대응하는 MAC(110a)를 검증함으로써 검출될 수 있다.
[0035] 그러나, 이러한 접근방식은, 데이터 구조(헤더 블록(106))가 액세스될 때마다 암호화 MAC 연산을 요구하는, 계산적으로 고비용인 단점을 갖는다. 통상의 암호화 MAC 알고리즘들(예를 들어, HMAC-SHA-1, AES-CMAC, DAA 등)은, MAC가 계산될 때, 의사-랜덤 마스크 값들을 발생시킴으로써 그리고/또는 다수의 계산적으로 고비용의 라운드들을 구현함으로써 더 큰 보안성을 제공하는 것을 추구한다. 결과적으로, 통상의 암호화 MAC 연산은 계산 집약적이며, 암호화 MAC가 계산될 때마다 상당한 프로세싱 자원들을 소비할 수 있다.
[0036] 메모리 블록(114)(예를 들어, 및/또는 대응하는 헤더 블록(106)의 데이터 구조)이 자주 액세스되는 경우 ― 이는, 데이터 구조가 힙 메모리 구조와 같은 메모리 할당에 관한 정보를 홀딩하는 경우일 수 있음 ―, MAC(110)의 검증은 허용불가한 프로세싱 자원들을 소비할 수 있다.
사전- 발생된 키들 및/또는 마스크들을 이용한 라이트 메시지 인증 코드( Lite Message Authentication Code)를 갖는 예시적인 메모리 구조
[0037] 도 2는, 도 1의 암호화 MAC보다 계산적으로 더 효율적인 MAC-Lite 발생기를 이용하여 데이터 구조들을 보호하는 다른 접근방식을 예시하는 블록도이다. 프로세싱 회로(202)는 메모리 디바이스(204) 또는 저장소에 커플링될 수 있고 그리고/또는 통합된다. 메모리 디바이스(204)는 메모리 블록들(214a, 214b, 및/또는 214c)로서 배열되는 메모리 공간을 포함할 수 있다. 각각의 메모리 블록(214a, 214b, 214c)은 헤더 블록(206a, 206b, 및 206c) 및 대응하는 블록 예약 메모리 공간(208a, 208b, 및 208c)을 포함할 수 있다. 헤더 블록(206)은 데이터 구조(예를 들어, 메타-데이터 구조)를 저장하는 역할을 할 수 있다.
[0038] 프로세싱 회로(202)는, 각각의 헤더 블록(206) 또는 메모리 블록(214)에 대해 MAC(210)를 계산하고, 이러한 MAC(210)를 각각의 대응하는 헤더 블록(206)에 저장하는 MAC-Lite 발생기(212)를 구현하도록 구성될 수 있다. 일 예에서, MAC 발생기(212)(예를 들어, MAC 프로세싱 회로 또는 모듈)는, 복수의 스타트업-발생 키들(218) 및/또는 스타트업-발생 마스크들(217)이 메시지 입력(220)(예를 들어, 데이터 구조)에 대한 MAC를 발생시키는데 이용되는 특정 MAC-Lite 알고리즘(216)을 구현할 수 있다.
[0039] 복수의 스타트업-발생 키들(218) 및/또는 스타트업-발생 마스크들(217)은, 부트-업들 사이에서 또는 애플리케이션 세션 동안 MAC들을 발생시키기 위해 이용될 수 있다. 예를 들어, 복수의 스타트업-발생 키들(218) 및/또는 스타트업-발생 마스크들(217)로부터 선택된 키들 및/또는 마스크들은, 사이클 또는 세션 동안 모든 데이터 구조들에 대해 모든 MAC들을 발생시키기 위해 이용될 수 있다.
[0040] 다양한 예들에서, MAC-Lite 알고리즘(216)은, 헤더 블록이 시작되고, 블록 예약 메모리 공간이 시작되고, 그리고/또는 데이터 구조의 특정 메타-데이터가 홀딩되는 메모리 어드레스(222)를 "메시지" 입력(220)의 부분으로서 포함할 수 있다. 메시지 입력들(예를 들어, 메모리 어드레스 등) 중 적어도 하나는, 스타트업-발생 마스크들(217)로부터 마스크 및/또는 스타트업-발생 키들(218)로부터의 개별 복수의 하나 또는 둘 이상의 키들을 선택하는데 이용될 수 있다. 그 다음으로, 선택된 키들 및/또는 마스크는, 실행-시간에서 의사-랜덤 마스크 값들의 계산 및/또는 다수의 계산적으로 고비용의 라운드들을 회피하면서 MAC(210)를 발생시키기 위해 이용된다.
[0041] 부가적으로, MAC 알고리즘(216)은 또한, 헤더 블록의 콘텐츠(예를 들어, 헤더 블록에 저장된 데이터 구조)와 같은 다른 입력들 1... n(224)을 "메시지" 입력(220)의 부분으로서 포함할 수 있다. MAC(210a)가, 대응하는 헤더 블록(206a)의 정보(예를 들어, 메모리 블록(214a) 또는 블록 예약 메모리 공간(208a)에 대한 메모리 어드레스, 메모리 블록(214a) 또는 블록 예약 메모리 공간(208a)의 크기 등)의 적어도 일부에 기초하여 계산되기 때문에, 헤더 블록(206a), 메모리 블록(214a) 또는 블록 예약 메모리 공간(208a)에 대한 어드레스, 및/또는 대응하는 메모리 블록(214a) 및/또는 블록 예약 메모리 공간(208a)의 크기를 조작하려는 임의의 시도는, 대응하는 MAC(210a)를 검증함으로써 검출될 수 있다.
[0042] 이러한 MAC(210)는 (헤더 블록(206)의) 데이터 구조에 저장되어, 데이터 구조가 액세스(예를 들어, 판독 또는 기록 동작)될 때마다 체크될 수 있다.
[0043] 도 3은, 순환 중복 검사(CRC) 또는 카나리아 값보다 더 높은 보안성을 가지면서, 도 1의 암호화 MAC보다 계산적으로 더 효율적인 MAC-Lite 알고리즘(302)의 예를 예시한다. 이러한 MAC-Lite 알고리즘(302)은 예를 들어, 도 2의 MAC-Lite 발생기(212)에 의해 구현될 수 있다.
[0044] 이러한 접근방식에서, 마스크들(306) 및/또는 키들의 세트(304)는 부트-타임 및/또는 스타트업 시에 사전-발생될 수 있으며, 이후에 (예를 들어, 전체 세션 동안) 하나 또는 둘 이상의 메모리 블록들에 대해 MAC들을 발생시키기 위해 이용될 수 있다. 예를 들어, 복수의 키들(304)(k[0][0], ..., k[n][NK-1])은 랜덤하게 또는 의사-랜덤하게 발생될 수 있다(예를 들어, 랜덤 또는 의사-랜덤 값에 기초하여 발생됨). 이러한 예에서, 복수의 키들(304)(k[0][0], ..., k[n][NK-1])은, 키들의 제 1 서브세트(306a)(k[0][0], ..., k[0][NK-1]), 키들의 제 2 서브세트(306b)(k[1][0], ..., k[1][NK-1]), 및 키들의 제 3 서브세트(306c)(k[n][0], ..., k[n][NK-1])를 포함한, 복수의 서브세트들(306a, 306b, 및 306c)로 그룹화된다. 이러한 키 값들은 비밀(secret)이어야 하고, 잠재적 공격자에 의해 변경불가능(unchangeable)해야 한다.
[0045] 유사하게, mask[0], mask[1], ..., mask[NM-1]를 포함한, 복수의 마스크 값들(308)은, 부트-타임 및/또는 스타트업 시에 사전-발생될 수 있고, 이후에 (예를 들어, 전체 세션 동안) 하나 또는 둘 이상의 메모리 블록들에 대해 MAC들을 발생시키기 위해 이용될 수 있다.
[0046] 이러한 예에서, MAC-Lite 알고리즘(302)은: 복수의 입력들(Input_1(310a), Input_2(310b), 및 Input_n(310c)), 가변 메모리 어드레스(312), 사전-선택된 또는 사전-결정된 소수 p(314), 선택된 마스크(316), 및/또는 선택된 복수의 키들(318) ― 키들의 세트(304)로부터 선택됨 ― 을 입력들로서 취할 수 있다. 일 예에서, 마스크 값들(308)(mask[0], mask[1], ..., mask[NM-1])은 각각 소수 p(314)와 동일한 비트-길이일 수 있다. 부가적으로, 키들의 세트(304)에서의 키 값들(k[0][0], ..., k[n][NK-1])은 0 내지 p-1(p-1 포함)일 수 있다.
[0047] 주어진 메모리 블록에 있어서, MAC는 MAC-Lite 알고리즘(302)을 이용하여 발생될 수 있다. 복수의 키들(318)은, 예를 들어, 가변 메모리 어드레스(312)로부터 발생된 하나 또는 둘 이상의 인덱스들에 기초하여 키들의 세트(304)로부터 선택될 수 있다. 예를 들어, 함수(f) 및 가변 메모리 어드레스(312)(addr)는 키 인덱스들을 발생시키는 역할을 할 수 있으며, f(addr) = key_index_0, ..., key_index_n이다. 예를 들어, 키 인덱스들 각각은 정수값 0 내지 정수값 NK-1일 수 있다. 그 결과로, 키들(318)의 선택된 세트는 복수의 키들(304)의 서브세트들(306a, 306b, 및 306c) 각각으로부터 선택될 수 있다.
[0048] 유사하게, 마스크(316)는, 예를 들어, 가변 메모리 어드레스(312)로부터 발생된 인덱스에 기초하여 복수의 마스크 값들(308)로부터 선택될 수 있다. 예를 들어, 동일한 또는 상이한 함수(f) 및 가변 메모리 어드레스(312)(addr)는 마스크 인덱스를 발생시키는 역할을 할 수 있으며, f(addr) = mask_index이다. 예를 들어, mask_index(313)는 정수값 0 내지 정수값 NM-1일 수 있다. 그 결과로, 마스크(316)는 복수의 마스크들(308)로부터 선택될 수 있다.
[0049] 선택된 복수의 키들(318), 선택된 마스크(316), 소수 p(314), 및 가변 메모리 어드레스(312), input_1(310a), input_2(310b), …, input_n(310)은, 예측하기 어려운 MAC 출력을 생성하는 방식으로 결합될 수 있다. 메모리 관리의 경우에 있어서, 가변 메모리 어드레스(addr)(312)는 예를 들어, 메모리 구조의 헤더 블록에 대한 시작 어드레스일 수 있다. 마찬가지로, 복수의 다른 입력 변수들(input_1(310a), input_2(310b), ..., input_n(310c))은 데이터 구조 또는 헤더 블록에서 상이한 변수들일 수 있다. MAC-Lite 알고리즘(302)은, 임의의 가능한 개별 입력보다 더 클 수 있는 소수 p(314)에 의해 파라미터화될 수 있고(예를 들어, k(j][i] ≤ p-1), 이는 MAC-Lite 알고리즘(302)에 대한 입력 특징들이 알려져 있다는 가정 때문에 결정될 수 있다. 가능한 입력들의 세트를, 전단사 방식(bijective way)에서 소수 p(314) 미만일 것으로 모두 보장되는 입력들의 세트에 효율적으로 맵핑하는 것이 가능한 한, 이러한 소수 p(314)는 일부 가능한 입력들(예를 들어, 선택된 키들(318), 선택된 마스크(316), 메모리 어드레스(312), 및/또는 입력들(310))보다 더 작을 수 있다. 이는 또한, 작은 입력들이 하나의 더 큰 변수로 결합되도록 허용한다. 이러한 소수 p(314)는 공개될 수 있지만, 공격자에 의해 변경가능하지 않아야 한다.
[0050] 대안적인 구현에서, 입력들(예를 들어, 선택된 키들(318), 선택된 마스크(316), 메모리 어드레스(312), 및/또는 입력들(310))은 또한, 입력들을 필드의 엘리먼트들에 맵핑함으로써, 임의적인 유한 필드 GF(2^n)를 이용하여 구현될 수 있다.
[0051] 일 예에서, MAC-Lite 알고리즘(302)은 2개의 단계들을 포함할 수 있다. 먼저, 중간 다항식-값(intermediate polynomial-value)(Val)이 다음과 같이 계산된다:
Figure 112015085009114-pct00001
그 다음으로, MAC 값이 다음과 같이 계산된다:
Figure 112015085009114-pct00002
이러한 방식으로, MAC-Lite 알고리즘(302)은, 메모리 블록이 액세스될 때마다 다수의 라운드들의 반복적 계산을 회피하면서, 비교적 안전한 출력 MAC 값(320)을 발생시킬 수 있다.
[0052] 도 4는 종래의 MAC들보다 더 효율적으로 MAC를 발생시키도록 구현될 수 있는 MAC-Lite 알고리즘의 일 예를 예시한다. 키들의 세트(k[0][0], ..., k[n][NK-1])는 디바이스 또는 세션 스타트업 또는 개시 시에 사전-발생된다(402). 유사하게, 마스크들의 세트(mask[0], mask[1], ..., mask[NM-1])는 디바이스 또는 세션 스타트업 또는 개시 시에 사전-발생된다(404). 데이터 구조와 연관된 복수의 가변 입력들(예를 들어, addr, input_1, input_2, … input_n)이 획득된다(406). 키들의 세트로부터의 복수의 키들(예를 들어, k[0][key_index_0], k[1][key_index_1], k[2][key_index_2], 및 k[n][key_index_n])은 입력들 중 하나 또는 둘 이상에 기초하여 선택된다(408). 유사하게, 마스크들의 세트로부터의 마스크(예를 들어, mask[mask_index])는 가변 입력들 중 하나 또는 둘 이상에 기초하여 선택된다(410). 중간 값은, 복수의 일시적 값들을 획득하기 위해 복수의 가변 입력들 각각을 대응하는 선택된 키와 결합함으로써, 복수의 일시적 값들을 결합함으로써, 그리고 중간 값을 획득하기 위해 모듈로 p 연산을 수행함으로써 계산된다(412). 다양한 예들에서, 각각의 입력 및 대응하는 키는, 논리 연산, 산술 연산(예를 들어, 곱셈), 및/또는 2개의 값들을 결합하고 일시적 값을 획득하기 위해 이용될 수 있는 임의의 다른 연산 또는 함수를 이용하여 결합될 수 있다. 일 예에서, Intermediate_val = addr * k[0][key_index_0] + input_1 * k[1][key_index_1] + input_2 * k[2][key_index_2] + ... +input_n * k[n][key_index_n] mod p이고, 여기서 p는 소수이다. 그 다음으로, 메시지 인증 코드(MAC)를 획득하기 위해, 배타적-OR(XOR) 연산이 중간 값과 선택된 마스크(예를 들어, mask[mask_index]) 사이에서 수행될 수 있다(414).
[0053] 일 예시적 구현에서, 복수의 키들(304)(예를 들어, 키들의 세트)은 인덱스화(indexed)될 수 있다(예를 들어, key_index_x에 의해 선택가능함). 유사하게, 복수의 마스크들(308)(예를 들어, 마스크들의 세트)이 인덱스화될 수 있다(예를 들어, mask_index(313)에 의해 선택가능함). 그 결과로, key_index 값들 및/또는 mask_index는, 데이터 구조에 대한 가변 입력들 중 하나에 기초하여 발생될 수 있다. 가변 입력을 단독으로 또는 다른 정보와 함께 이용하는 다양한 다른 방법들은, 가변 입력에 따라 변화하는 mask_index를 발생시키는데 이용될 수 있다(예를 들어, 가변 입력이 변화하는 경우는 데이터 구조들에 걸쳐 개별적일 수 있음). mask_index는 복수의 NM 마스크들(308) 중에서 선택되어 ― 여기서 NM은 정수값임 ―, MAC 값(320)의 계산에서 이용될 수 있다. 복수의 마스크들(308) 중에서 특정 mask_index(313)의 선택은 랜덤하고, 의사-랜덤하고, 그리고/또는 (예를 들어, 메모리 어드레스(312)의 함수로서) 일부 선택 알고리즘에 따를 수 있다. 일 예에서, 복수의 마스크(308)의 마스크들 각각은 소수 p(314)와 동일한 비트 길이를 가질 수 있다.
[0054] 일 예에서, 복수의 키들(304)은, NK 엘리먼트들(즉, 키들)을 각각 갖는 서브세트들(306a, 306b, 306c)로 세분될 수 있다. 복수의 key_index_x는, mask_index의 선택과 유사하게, 동일한 가변 입력 또는 상이한 가변 입력에 기초하여 선택될 수 있다. 예를 들어, 키들의 세트(304)의 서브세트들(306a, 306b, 및 306c)의 길이 NK는, 서브세트들(306a, 306b, 306c) 각각에 대한 키 인덱스 값을 도출하기 위해 이용될 수 있다. 예를 들어, 복수의 마스크들(308) 중에서 특정 key_index(313)(예를 들어, key_index_1, key_index_2, …, key_index_n)의 선택은 랜덤하고, 의사-랜덤하고, 그리고/또는 (예를 들어, 메모리 어드레스(312)의 함수로서) 일부 선택 알고리즘에 따를 수 있다. 바람직하게, 공격자들에 맞서 더 큰 보안성을 제공하기 위해, 서브세트들(306a, 306b, 306c) 각각으로의 key_index는 상이하다.
[0055] MAC-Lite 알고리즘(302)은 메모리 무결성을 위해서뿐만 아니라 다양한 상이한 콘텍스트들에서 이용될 수 있음을 유의한다. 이러한 MAC-Lite 알고리즘(302)이 메모리 무결성을 위해 이용되는 경우, MAC(320)는, 메모리 블록에 대한 헤더 블록에 데이터 구조의 부분으로서 저장될 수 있다. 추후에 동일한 메모리 블록에 액세스(예를 들어, 판독 또는 기록)할 때, MAC가 발생되고, 헤더 블록에 이전에 저장된 MAC가 비교되어, 그 MAC와 헤더 블록에 이전에 저장된 MAC가 동일한지 확인된다. MAC들이 상이한 경우, 메모리 블록이 손상되었음이 추정되거나 결론내려질 수 있고, 메모리 블록은 플러싱(flush)되거나 무시될 수 있다. 부가적으로, 손상된 메모리 블록의 발생은 또한, 메모리 구역 내의 다른 메모리 구조들이 손상되었을 수 있음을 표시할 수 있다. 그 결과로, 다른 메모리 블록들이 또한 플러싱되거나 무시될 수 있거나, 또는 시스템이 재시작될 수 있다.
[0056] 도 5는 마스크들의 개별 세트 및 키들의 개별 세트들의 사전-발생에 기초하여 인증 코드가 발생되는 일반적 접근방식을 예시한다. 복수의 개별 키들을 포함하는 키들의 세트가 사전-발생된다(502). 예를 들어, 키들의 세트는 프로세싱 회로의 스타트업 시에, 프로세싱 회로의 부트-업 시에, 및/또는 프로세싱 회로 상에서 실행되는 세션(예를 들어, 프로세싱 세션, 애플리케이션 세션, 통신 세션 등)의 개시 시에 발생될 수 있다. 일부 구현들에서, 키들의 세트는 도 3에 예시된 바와 같은 서브세트들로 세분될 수 있다(예를 들어, 키들의 세트(304) 및 서브세트들(306a, 306b, 및 306c)). 유사하게, 개별 마스크들을 포함하는 마스크들의 세트가 사전-발생된다(304). 예를 들어, 마스크들의 세트는 또한, 프로세싱 회로의 스타트업 시에, 프로세싱 회로의 부트-업 시에, 및/또는 프로세싱 회로 상에서 실행되는 세션(예를 들어, 프로세싱 세션, 애플리케이션 세션, 통신 세션 등)의 개시 시에 발생될 수 있다. 키들의 세트 및 마스크들의 세트 중 적어도 하나는 (예를 들어, 하드웨어 랜덤 비트 발생기, 예측불가 시스템 이벤트들에 기초하는 난수 발생기, 소프트웨어 난수 발생기들, 시드 값(seed value)들에 기초하는 의사 난수 발생기 등으로부터의) 랜덤 값에 기초하여 발생될 수 있다. 키들의 세트 및 마스크들의 세트는 비밀로 유지될 수 있다.
[0057] 데이터 구조와 연관된 복수의 가변 입력들(예를 들어, 메시지, 메모리 영역, 데이터, 파일, 송신, 헤더 블록 정보 등)이 추후에 획득될 수 있다(506). 일부 구현들에서, 이러한 가변 입력들은 데이터 구조의 위치 또는 데이터 구조와 연관된 메모리 어드레스를 포함할 수 있다.
[0058] 복수의 가변 입력들 각각은, 복수의 일시적 값들을 획득하기 위해 키들의 세트로부터 선택된 대응하는 키와 (예를 들어, 논리 또는 산술 연산, 이를테면, 곱셈에 의해) 결합될 수 있다(508). 그 다음으로, 복수의 일시적 값들은, 단일 결합 값을 획득하기 위해 (예를 들어, 논리 또는 산술 연산, 이를테면, 덧셈 등에 의해) 결합된다(510). 복수의 상이한 키들 각각은, 복수의 가변 입력들 중 적어도 하나에 기초하여 선택될 수 있다. 그 다음으로, 중간 값을 획득하기 위해 고정 소수값(fixed prime value)을 이용하여, 단일 결합 값에 대해 모듈로 연산이 수행될 수 있다(512). 일 예에서, 중간 값은, 복수의 일시적 값들을 획득하기 위해 복수의 가변 입력들 각각을 그것의 선택된 대응하는 키와 곱하고, 결과적인 일시적 값들을 더하고, 그리고 사전-선택된 고정 소수를 이용하여 모듈로 연산을 수행함으로써 계산될 수 있다. 이용된 각각의 키의 값은 0 내지 소수일 수 있다.
[0059] 그 다음으로, 데이터 구조에 대한 메시지 인증 코드를 획득하기 위해, 배타적-OR(XOR) 연산이 중간 값과 마스크들의 세트로부터 선택된 마스크 사이에서 수행될 수 있다(514). 마스크는 복수의 가변 입력들(예를 들어, 데이터 구조에 대응하는 가변 메모리 어드레스 공간) 중 적어도 하나에 기초하여 선택될 수 있다. 대안적인 구현들에서, 중간 값과 선택된 마스크를 결합하기 위해, 상이한 연산(예를 들어, 논리 연산 또는 산술 연산)이 이용될 수 있음을 유의한다.
[0060] 메시지 인증 코드는 메모리 디바이스의 데이터 구조 내에 저장될 수 있다(516). 일부 예들에서, 데이터-구조는 고정-길이 데이터 구조일 수 있다.
[0061] 이후에, 데이터 구조가 다시 액세스될 때, 이전에 저장된 메시지 인증 코드가 데이터 구조로부터 획득된다(518). 그 다음으로, 데이터 구조의 무결성을 확인하기 위해, 메시지 인증 코드는 이전에 저장된 메시지 인증 코드와 비교될 수 있다(520).
[0062] 도 6은 데이터 구조의 무결성을 보호하기 위해 MAC-Lite 알고리즘을 수행하도록 적응된 디바이스의 예시적인 구현을 예시하는 블록도이다. 디바이스는 분리된 또는 통합된 메모리 디바이스(604)에 커플링된 프로세싱 회로(602)를 포함할 수 있다. 프로세싱 회로(602)는, 데이터 구조들의 무결성을 보호하기 위해 메모리 디바이스(604)에 저장된 하나 또는 둘 이상의 데이터 구조들(608a, 608b, 608c)에 대해 MAC-Lite 알고리즘을 구현하도록 적응될 수 있는 메시지 인증 코드(MAC) 발생기(606)를 포함할 수 있다.
[0063] MAC 발생기(606)는, MAC-Lite 알고리즘의 하나 또는 둘 이상의 기능들 또는 단계들을 구현하는 복수의 회로들 및/또는 모듈들을 포함할 수 있다. 키 사전-발생 회로/모듈(610)은, 프로세싱 회로(602)의 스타트업 또는 부트-업 시에 또는 프로세싱 회로(602) 상에서 실행되는 애플리케이션 또는 세션의 개시 시에, 복수의 키들을 포함하는 키들의 세트(628)를 랜덤하게 또는 의사-랜덤하게 발생시킬 수 있다. 키들의 세트(628)는 보안 메모리 디바이스(626) 또는 프로세싱 회로(602) 내의 보안 위치 또는 메모리 디바이스(604)에 저장될 수 있다. 유사하게, 마스크 사전-발생 회로/모듈(612)은, 프로세싱 회로(602)의 스타트업 또는 부트-업 시에 또는 프로세싱 회로(602) 상에서 실행되는 애플리케이션 또는 세션의 개시 시에, 복수의 마스크들을 포함하는 마스크들의 세트(630)를 랜덤하게 또는 의사-랜덤하게 발생시킬 수 있다. 마스크들의 세트(630)는 보안 메모리 디바이스(626) 또는 프로세싱 회로(602) 내의 보안 위치 또는 메모리 디바이스(604)에 저장될 수 있다. 보안 메모리 디바이스(626)(또는 위치) 내의 마스크들의 세트 및/또는 키들의 세트는 스타트업들 사이의 또는 (애플리케이션) 세션들 사이의 지속기간 동안 저장될 수 있다. 그 결과로, 마스크들의 세트 및/또는 키들의 세트가 단순히 1회 판독/기록 동작을 위해 또는 단일 메모리 블록을 위해서만 이용되지는 않는다. 대신에, (예를 들어, 스타트업들 사이의 또는 세션들 사이의) 사이클 동안 모든 판독/기록 동작들 및 모든 메모리 블록들을 위해 이용된다.
[0064] 기록 동작 또는 판독 동작을 위해 데이터 구조에 액세스 시에, 키 셀렉터 회로/모듈(614)은, 데이터 구조와 연관된 적어도 하나의 입력(예를 들어, 데이터 구조에 대한 가변 메모리 어드레스 등)에 기초하여 키들의 세트(628)로부터 복수의 키들을 선택할 수 있다. 유사하게, 마스크 셀렉터 회로/모듈(616)은 데이터 구조와 연관된 상이한 하나 또는 둘 이상의 입력들 또는 적어도 하나의 입력(예를 들어, 데이터 구조에 대한 가변 메모리 어드레스 등)에 기초하여 마스크들의 세트(630)로부터 마스크를 선택할 수 있다.
[0065] 입력 및 키 결합 회로/모듈(618)은 입력들을 (키 셀렉터 회로/모듈(614)로부터의) 대응하는 (상이한) 선택된 키와 결합하는 역할을 할 수 있다. 예를 들어, 각각의 입력은 상이한 선택된 키와 곱셈될 수 있고, 그 결과들은 합산될 수 있다. 모듈로 연산자 회로/모듈(620)은, 고정 소수 p(632)를 이용하여 입력 및 키 결합 회로/모듈(618)로부터의 결과에 적용될 수 있다. 마스크 결합 회로/모듈(622)은, 데이터 구조에 대한 MAC-Lite 값을 발생시키기 위해, 모듈로 연산자 회로/모듈(622)로부터의 결과를 취하여, (마스크 셀렉터 회로/모듈(616)로부터) 선택된 마스크에 적용할 수 있다.
[0066] MAC 비교기 회로/모듈(624)은, 데이터 구조에 대해 이전에 저장된 MAC 값을 (마스크 결합 회로/모듈(622)로부터) 동적으로 계산된 MAC 값과 비교함으로써, 데이터 구조의 무결성을 체크하는 역할을 할 수 있다.
[0067] 도 7은 마스크들의 개별 세트 및 키들의 개별 세트들의 사전-발생에 기초하여 메모리 공간들에 대한 인증 코드를 발생시키는 예를 예시한다. 고정-길이 데이터 구조에 대한 메모리 주소가 획득된다(702). 고정-길이 데이터 구조의 정보에 기초하여, 복수의 입력들이 또한 획득된다(704). 복수의 가변 입력들 및 메모리 어드레스 각각에 대해 상이한 키가 선택되며, 상이한 키들 각각은 사전-발생된 키들의 개별 세트로부터 선택된다(706). 일 예에서, 복수의 상이한 키들 및/또는 마스크 각각은 메모리 어드레스에 기초하여(예를 들어, 메모리 어드레스의 함수로서) 선택될 수 있다. 사전-발생된 키들의 개별 세트는, 프로세싱 회로/디바이스의 스타트업 시에 또는 프로세싱 회로/디바이스 상에서 실행되는 세션의 개시 시에 발생될 수 있다.
[0068] 중간 값을 획득하기 위해, 메모리 어드레스는, 각각이 선택된 대응하는 키를 갖는 복수의 가변 입력들뿐만 아니라 선택된 제 1 키와 결합된다(708). 중간 값은, 메모리 어드레스와 제 1 키의 곱셈 더하기(plus) 복수의 가변 입력들 각각과 그것의 선택된 대응하는 키의 곱셈 그리고 사전-선택된 고정 소수를 이용하여 모듈로 연산을 수행함으로써 계산될 수 있다. 이용되는 각각의 키는 0 내지 소수일 수 있다.
[0069] 고정-길이 데이터 구조에 대한 인증 코드를 획득하기 위해, 배타적-OR(XOR) 연산이 중간 값과 사전-발생된 마스크들의 개별 세트로부터 선택된 마스크 사이에서 수행된다(710). 사전-발생된 마스크들의 개별 세트는, 프로세싱 회로/디바이스의 스타트업 시에 또는 프로세싱 회로/디바이스 상에서 실행되는 세션의 개시 시에 발생될 수 있다. 키들의 개별 세트 및 마스크들의 개별 세트는 비밀로 유지될 수 있다.
[0070] 그 다음으로, 인증 코드는 고정-길이 데이터 구조 내에 저장될 수 있다(712). 예를 들어, 인증 코드는 고정-길이 데이터 구조에 대한 헤더 블록에 저장될 수 있다. 메모리 어드레스는 고정-길이 데이터 구조에 대한 헤더 블록의 어드레스에 대응할 수 있다.
[0071] 고정-길이 데이터 구조의 추후의 액세스에서, 메시지 인증 코드를 재발생시키고, 그 메시지 인증 코드를 동일한 데이터 구조에 대해 이전에 저장된 메시지 인증 코드와 비교함으로써, 고정-길이 데이터 구조의 무결성이 검증될 수 있다.
[0072] 도면들에서 예시된 컴포넌트들, 단계들, 특징들, 및/또는 기능들 중 하나 또는 둘 이상은, 단일 컴포넌트, 단계, 특징 또는 기능으로 재배열 그리고/또는 결합되거나, 여러 컴포넌트들, 단계들, 또는 기능들로 구현될 수 있다. 본 발명으로부터 벗어남이 없이, 부가적인 엘리먼트들, 컴포넌트들, 단계들, 및/또는 기능들이 또한 부가될 수 있다. 도면들에서 예시된 장치, 디바이스들, 및/또는 컴포넌트들은, 도면들에서 설명된 방법들, 특징들, 또는 단계들 중 하나 또는 둘 이상을 수행하도록 구성될 수 있다. 본 명세서에서 설명된 알고리즘들은 또한 효율적으로, 소프트웨어로 구현되고 그리고/또는 하드웨어에 임베딩될 수 있다.
[0073] 더욱이, 본 개시내용의 일 양상에서, 도 1, 도 2, 및 도 6에서 예시된 프로세싱 회로(102, 202, 및/또는 602)는, 도 3, 도 4, 도 5, 및/또는 도 7에서 설명된 알고리즘들, 방법들, 및/또는 단계들을 수행하도록 특별히 설계되고 그리고/또는 하드-와이어되는(hard-wired) 특화된 프로세서(예를 들어, 주문형 집적 회로(예를 들어, ASIC))일 수 있다. 따라서, 이러한 특화된 프로세서(예를 들어, ASIC)는 도 3, 도 4, 도 5, 및/또는 도 7에서 설명된 알고리즘들, 방법들, 및/또는 단계들을 실행하기 위한 수단의 일 예일 수 있다. 프로세서-판독가능 저장 매체는, 특화된 프로세서(예를 들어, ASIC)에 의해 실행될 때, 특화된 프로세서로 하여금 본 명세서에서 설명된 알고리즘들, 방법들, 및/또는 단계들을 수행하게 하는 명령들을 저장할 수 있다.
[0074] 또한, 본 개시내용의 양상들이, 순서도, 흐름도, 구조도, 또는 블록도로서 도시되는 프로세스로서 설명될 수 있음이 유의된다. 순서도가 동작들을 순차적 프로세스로서 설명할 수 있지만, 동작들 중 많은 동작들은 병렬로 또는 동시에 수행될 수 있다. 부가하여, 동작들의 순서는 재배열될 수 있다. 프로세스의 동작들이 완료될 때, 프로세스는 종결된다. 프로세스는 방법, 기능, 프로시저, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 기능에 대응하는 경우, 프로세스의 종결은 메인 기능 또는 호출 기능으로의 기능의 리턴에 대응한다.
[0075] 더욱이, 저장 매체는, 판독-전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체들, 광학 저장 매체들, 플래시 메모리 디바이스들 및/또는 다른 머신-판독가능 매체들, 및 정보를 저장하기 위한 프로세서-판독가능 매체들 및/또는 컴퓨터-판독가능 매체들을 포함하는, 데이터를 저장하기 위한 하나 또는 둘 이상의 디바이스들을 나타낼 수 있다. "머신-판독가능 매체", "컴퓨터-판독가능 매체" 및/또는 "프로세서-판독가능 매체"라는 용어는, 이들로 제한되는 것은 아니지만, 휴대용 또는 고정 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 포함 또는 전달할 수 있는 다양한 다른 매체들과 같은 비-일시적 매체들을 포함할 수 있다. 따라서, 본 명세서에서 설명된 다양한 방법들은, "머신-판독가능 매체", "컴퓨터-판독가능 매체" 및/또는 "프로세서-판독가능 매체"에 저장되어, 하나 또는 둘 이상의 프로세서들, 머신들 및/또는 디바이스들에 의해 실행될 수 있는 명령들 및/또는 데이터에 의해 완전히 또는 부분적으로 구현될 수 있다.
[0076] 더욱이, 본 개시내용의 양상들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 또는 이들의 임의의 결합에 의해 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현되는 경우, 필요한 태스크들을 수행하는 프로그램 코드 또는 코드 세그먼트들은, 저장 매체 또는 다른 저장소(들)와 같은 머신-판독가능 매체에 저장될 수 있다. 프로세서는 필요한 태스크들을 수행할 수 있다. 코드 세그먼트는, 프로시저, 기능, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 결합을 나타낼 수 있다. 코드 세그먼트는, 정보, 데이터, 아규먼트들, 파라미터들, 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써, 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수 있다. 정보, 아규먼트들, 파라미터들, 데이터 등은, 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달, 포워딩, 또는 전송될 수 있다.
[0077] 본 명세서에서 개시된 예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 엘리먼트들, 및/또는 컴포넌트들은, 본 명세서에서 설명된 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 임의의 결합을 이용하여 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한, 계산 컴포넌트들의 결합, 예를 들어, DSP와 마이크로프로세서의 결합, 다수의 마이크로프로세서들, 또는 DSP 코어와 공조하는 하나 또는 둘 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0078] 본 명세서에서 개시된 예들과 관련하여 설명된 방법들 또는 알고리즘들은, 직접적으로 하드웨어로, 프로세서에 의해 실행가능한 소프트웨어 모듈로, 이들 양쪽 모두의 결합으로, 프로세싱 유닛, 프로그래밍 명령들, 또는 다른 지시들의 형태로 구현될 수 있고, 단일 디바이스에 포함되거나 다수의 디바이스들에 걸쳐 분산될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당해 기술 분야에 알려진 임의의 다른 형태의 저장 매체에 상주할 수 있다. 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록, 저장 매체가 프로세서에 커플링될 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0079] 당업자들은, 본 명세서에서 개시된 양상들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 모두의 결합들로서 구현될 수 있음을 추가로 인식할 것이다. 하드웨어 및 소프트웨어의 이러한 상호교환가능성을 명백하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 앞서, 일반적으로 그들의 기능성의 관점에서 설명되었다. 이러한 기능성이 하드웨어로 구현되는지 소프트웨어로 구현되는지는, 전체 시스템 상에 부과된 설계 제약들 및 특정 애플리케이션에 따른다.
[0080] 본 명세서에서 설명된 본 발명의 다양한 특징들은, 본 발명으로부터 벗어남이 없이 상이한 시스템들로 구현될 수 있다. 본 개시내용의 전술한 양상들은 단지 예들일뿐이며, 본 발명을 제한하는 것으로 해석되지 않음이 유의되어야 한다. 본 개시내용의 양상들의 설명은, 청구항들의 범주를 제한하는 것이 아니라 예시하도록 의도된다. 이와 같이, 본 교시들은 다른 유형들의 장치들에 용이하게 적용될 수 있으며, 많은 대안들, 수정들, 및 변형들이 당업자들에게 명백해질 것이다.

Claims (38)

  1. 인증 코드를 발생시키기 위한 방법으로서,
    프로세싱 회로의 스타트업(startup) 시에 또는 상기 프로세싱 회로 상에서 실행되는 세션의 개시 시에, 복수의 개별 키들을 포함하는 키들의 세트를 사전-발생(pre-generating)시키는 단계;
    복수의 개별 마스크들을 포함하는 마스크들의 세트를 사전-발생시키는 단계;
    고정-길이 데이터 구조(fixed-length data structure)와 연관된 복수의 가변 입력들을 획득하는 단계;
    복수의 일시적 값들을 획득하기 위해 상기 복수의 가변 입력들 각각을 상기 키들의 세트로부터 선택된 대응하는 키와 결합하는 단계;
    중간 값을 획득하기 위해 상기 복수의 일시적 값들을 결합하는 단계; 및
    상기 고정-길이 데이터 구조에 대한 메시지 인증 코드(message authentication code)를 획득하기 위해, 상기 중간 값과 상기 마스크들의 세트로부터 선택된 마스크 간의 연산을 수행하는 단계
    를 포함하는,
    인증 코드를 발생시키기 위한 방법.
  2. 제 1 항에 있어서,
    상기 마스크들의 세트는 또한, 상기 프로세싱 회로의 스타트업 시에 또는 상기 프로세싱 회로 상에서 실행되는 세션의 개시 시에 사전-발생되는,
    인증 코드를 발생시키기 위한 방법.
  3. 제 1 항에 있어서,
    상기 키들의 세트 및 상기 마스크들의 세트 중 적어도 하나는 랜덤 값에 기초하여 발생되는,
    인증 코드를 발생시키기 위한 방법.
  4. 제 1 항에 있어서,
    상기 복수의 일시적 값들은,
    결합된 값을 획득하기 위해 상기 복수의 일시적 값들을 더함으로써, 그리고
    상기 중간 값을 획득하기 위해, 사전-선택된 고정 소수(fixed prime number)를 이용하여, 상기 결합된 값에 대해 모듈로 연산(modulo operation)을 수행함으로써 결합되는,
    인증 코드를 발생시키기 위한 방법.
  5. 제 4 항에 있어서,
    상기 키들의 세트의 각각의 키의 값은 0(zero) 내지 상기 사전-선택된 고정 소수 인,
    인증 코드를 발생시키기 위한 방법.
  6. 제 4 항에 있어서,
    상기 중간 값과 상기 선택된 마스크 간의 연산은 비트단위 배타적-OR 연산(bitwise exclusive-OR operation)인,
    인증 코드를 발생시키기 위한 방법.
  7. 제 1 항에 있어서,
    상기 마스크 및 상기 선택된 대응하는 키들 각각은 상기 복수의 가변 입력들 중 적어도 하나에 기초하여 선택되는,
    인증 코드를 발생시키기 위한 방법.
  8. 제 7 항에 있어서,
    상기 복수의 가변 입력들 중 적어도 하나는 상기 고정-길이 데이터 구조와 연관된 메모리 어드레스인,
    인증 코드를 발생시키기 위한 방법.
  9. 제 8 항에 있어서,
    상기 선택된 대응하는 키들 각각은 상기 메모리 어드레스에 기초하여 선택되는,
    인증 코드를 발생시키기 위한 방법.
  10. 제 8 항에 있어서,
    상기 선택된 마스크는 상기 메모리 어드레스에 기초하여 선택되는,
    인증 코드를 발생시키기 위한 방법.
  11. 제 1 항에 있어서,
    상기 키들의 세트는 키들의 서브세트들로 세분되고,
    상기 메시지 인증 코드를 계산하기 위해, 키들의 단지 하나의 서브세트만이 키들의 임의의 단일 서브세트로부터 선택되는,
    인증 코드를 발생시키기 위한 방법.
  12. 제 1 항에 있어서,
    스타트업들 사이의 또는 세션들 사이의 지속기간 동안 상기 마스크들의 세트 및 키들의 세트 중 적어도 하나를 보안 메모리 위치에 저장하는 단계
    를 더 포함하는,
    인증 코드를 발생시키기 위한 방법.
  13. 제 1 항에 있어서,
    메모리 디바이스의 상기 고정-길이 데이터 구조 내에 상기 메시지 인증 코드를 저장하는 단계
    를 더 포함하는,
    인증 코드를 발생시키기 위한 방법.
  14. 제 13 항에 있어서,
    상기 메시지 인증 코드는 상기 고정-길이 데이터 구조에 대한 헤더 블록에 저장되는,
    인증 코드를 발생시키기 위한 방법.
  15. 제 1 항에 있어서,
    이전에 저장된 메시지 인증 코드를 상기 데이터 구조로부터 획득하는 단계; 및
    상기 데이터 구조의 무결성을 확인하기 위해, 상기 메시지 인증 코드를 상기 이전에 저장된 메시지 인증 코드와 비교하는 단계
    를 더 포함하는,
    인증 코드를 발생시키기 위한 방법.
  16. 인증 코드를 발생시키기 위한 디바이스로서,
    고정-길이 데이터 구조를 저장하기 위한 메모리 디바이스;
    상기 메모리 디바이스에 커플링되는 프로세싱 회로
    를 포함하고,
    상기 프로세싱 회로는,
    상기 프로세싱 회로의 스타트업 시에 또는 상기 프로세싱 회로 상에서 실행되는 세션의 개시 시에, 복수의 개별 키들을 포함하는 키들의 세트를 사전-발생시키고,
    복수의 개별 마스크들을 포함하는 마스크들의 세트를 사전-발생시키고,
    상기 고정-길이 데이터 구조와 연관된 복수의 가변 입력들을 획득하고,
    복수의 일시적 값들을 획득하기 위해 상기 복수의 가변 입력들 각각을 상기 키들의 세트로부터 선택된 대응하는 키와 결합하고,
    중간 값을 획득하기 위해 상기 복수의 일시적 값들을 결합하고, 그리고
    상기 고정-길이 데이터 구조에 대한 메시지 인증 코드를 획득하기 위해, 상기 중간 값과 상기 마스크들의 세트로부터 선택된 마스크 간의 연산을 수행하도록 적응되는,
    인증 코드를 발생시키기 위한 디바이스.
  17. 제 16 항에 있어서,
    상기 마스크들의 세트는 또한, 상기 프로세싱 회로의 스타트업 시에 또는 상기 프로세싱 회로 상에서 실행되는 세션의 개시 시에 사전-발생되는,
    인증 코드를 발생시키기 위한 디바이스.
  18. 제 16 항에 있어서,
    상기 키들의 세트 및 마스크들의 세트 중 적어도 하나는 랜덤 값에 기초하여 발생되는,
    인증 코드를 발생시키기 위한 디바이스.
  19. 제 16 항에 있어서,
    상기 복수의 일시적 값들은,
    결합된 값을 획득하기 위해 상기 복수의 일시적 값들을 더함으로써, 그리고
    상기 중간 값을 획득하기 위해, 사전-선택된 고정 소수를 이용하여, 상기 결합된 값에 대해 모듈로 연산을 수행함으로써 결합되는,
    인증 코드를 발생시키기 위한 디바이스.
  20. 제 19 항에 있어서,
    상기 키들의 세트의 각각의 키의 값은 0 내지 상기 사전-선택된 고정 소수인,
    인증 코드를 발생시키기 위한 디바이스.
  21. 제 19 항에 있어서,
    상기 중간 값과 상기 선택된 마스크 간의 연산은 비트단위 배타적-OR 연산인,
    인증 코드를 발생시키기 위한 디바이스.
  22. 제 16 항에 있어서,
    상기 마스크 및 상기 선택된 대응하는 키들 각각은 상기 복수의 가변 입력들 중 적어도 하나에 기초하여 선택되는,
    인증 코드를 발생시키기 위한 디바이스.
  23. 제 22 항에 있어서,
    상기 복수의 가변 입력들 중 적어도 하나는 상기 고정-길이 데이터 구조와 연관된 메모리 어드레스인,
    인증 코드를 발생시키기 위한 디바이스.
  24. 제 23 항에 있어서,
    상기 선택된 대응하는 키들 각각은 상기 메모리 어드레스에 기초하여 선택되는,
    인증 코드를 발생시키기 위한 디바이스.
  25. 제 23 항에 있어서,
    상기 선택된 마스크는 상기 메모리 어드레스에 기초하여 선택되는,
    인증 코드를 발생시키기 위한 디바이스.
  26. 제 16 항에 있어서,
    상기 키들의 세트는 키들의 서브세트들로 세분되고,
    상기 메시지 인증 코드를 계산하기 위해, 키들의 단지 하나의 서브세트만이 키들의 임의의 단일 서브세트로부터 선택되는,
    인증 코드를 발생시키기 위한 디바이스.
  27. 제 16 항에 있어서,
    상기 프로세싱 회로는 추가로,
    스타트업들 사이의 또는 세션들 사이의 지속기간 동안 상기 마스크들의 세트 및 키들의 세트 중 적어도 하나를 보안 메모리 위치에 저장하도록 적응되는,
    인증 코드를 발생시키기 위한 디바이스.
  28. 제 16 항에 있어서,
    상기 프로세싱 회로는 추가로,
    메모리 디바이스의 상기 고정-길이 데이터 구조 내에 상기 메시지 인증 코드를 저장하도록 적응되는,
    인증 코드를 발생시키기 위한 디바이스.
  29. 제 28 항에 있어서,
    상기 메시지 인증 코드는 상기 고정-길이 데이터 구조에 대한 헤더 블록에 저장되는,
    인증 코드를 발생시키기 위한 디바이스.
  30. 제 16 항에 있어서,
    상기 프로세싱 회로는 추가로,
    이전에 저장된 메시지 인증 코드를 상기 데이터 구조로부터 획득하고, 그리고
    상기 데이터 구조의 무결성을 확인하기 위해, 상기 메시지 인증 코드를 상기 이전에 저장된 메시지 인증 코드와 비교하도록 적응되는,
    인증 코드를 발생시키기 위한 디바이스.
  31. 인증 코드를 발생시키기 위한 디바이스로서,
    프로세싱 회로의 스타트업 시에 또는 또는 상기 프로세싱 회로 상에서 실행되는 세션의 개시 시에, 복수의 개별 키들을 포함하는 키들의 세트를 사전-발생시키기 위한 수단;
    복수의 개별 마스크들을 포함하는 마스크들의 세트를 사전-발생시키기 위한 수단;
    고정-길이 데이터 구조와 연관된 복수의 가변 입력들을 획득하기 위한 수단;
    복수의 일시적 값들을 획득하기 위해 상기 복수의 가변 입력들 각각을 사전-발생된 키들의 세트로부터 선택된 대응하는 키와 결합하기 위한 수단;
    중간 값을 획득하기 위해 상기 복수의 일시적 값들을 결합하기 위한 수단; 및
    상기 고정-길이 데이터 구조에 대한 메시지 인증 코드를 획득하기 위해, 상기 중간 값과 사전-발생된 마스크들의 세트로부터 선택된 마스크 간의 연산을 수행하기 위한 수단
    을 포함하는,
    인증 코드를 발생시키기 위한 디바이스.
  32. 제 31 항에 있어서,
    스타트업들 사이의 또는 세션들 사이의 지속기간 동안 상기 마스크들의 세트 및 키들의 세트 중 적어도 하나를 보안 메모리 위치에 저장하기 위한 수단
    을 더 포함하는,
    인증 코드를 발생시키기 위한 디바이스.
  33. 제 31 항에 있어서,
    메모리 디바이스의 상기 고정-길이 데이터 구조 내에 상기 메시지 인증 코드를 저장하기 위한 수단
    을 더 포함하는,
    인증 코드를 발생시키기 위한 디바이스.
  34. 제 33 항에 있어서,
    상기 메시지 인증 코드는 상기 고정-길이 데이터 구조에 대한 헤더 블록에 저장되는,
    인증 코드를 발생시키기 위한 디바이스.
  35. 제 31 항에 있어서,
    이전에 저장된 메시지 인증 코드를 상기 데이터 구조로부터 획득하기 위한 수단; 및
    상기 데이터 구조의 무결성을 확인하기 위해, 상기 메시지 인증 코드를 상기 이전에 저장된 메시지 인증 코드와 비교하기 위한 수단
    을 더 포함하는,
    인증 코드를 발생시키기 위한 디바이스.
  36. 하나 또는 둘 이상의 명령들을 갖는 프로세서-판독가능 저장 매체로서,
    상기 하나 또는 둘 이상의 명령들은, 적어도 하나의 프로세싱 회로에 의해 실행될 때, 상기 적어도 하나의 프로세싱 회로로 하여금,
    상기 프로세싱 회로의 스타트업 시에 또는 상기 프로세싱 회로 상에서 실행되는 세션의 개시 시에, 복수의 개별 키들을 포함하는 키들의 세트를 사전-발생시키게 하고,
    복수의 개별 마스크들을 포함하는 마스크들의 세트를 사전-발생시키게 하고,
    고정-길이 데이터 구조와 연관된 복수의 가변 입력들을 획득하게 하고,
    복수의 일시적 값들을 획득하기 위해 상기 복수의 가변 입력들 각각을 상기 키들의 세트로부터 선택된 대응하는 키와 결합하게 하고,
    중간 값을 획득하기 위해 상기 복수의 일시적 값들을 결합하게 하고, 그리고
    상기 고정-길이 데이터 구조에 대한 메시지 인증 코드를 획득하기 위해, 상기 중간 값과 상기 마스크들의 세트로부터 선택된 마스크 사이에서 연산을 수행하게 하는,
    프로세서-판독가능 저장 매체.
  37. 제 36 항에 있어서,
    적어도 하나의 프로세싱 회로에 의해 실행될 때, 상기 적어도 하나의 프로세싱 회로로 하여금,
    메모리 디바이스의 상기 고정-길이 데이터 구조 내에 상기 메시지 인증 코드를 저장하게 하는 하나 또는 둘 이상의 명령들
    을 더 갖는,
    프로세서-판독가능 저장 매체.
  38. 제 36 항에 있어서,
    적어도 하나의 프로세싱 회로에 의해 실행될 때, 상기 적어도 하나의 프로세싱 회로로 하여금,
    이전에 저장된 메시지 인증 코드를 상기 데이터 구조로부터 획득하게 하고, 그리고
    상기 데이터 구조의 무결성을 확인하기 위해, 상기 메시지 인증 코드를 상기 이전에 저장된 메시지 인증 코드와 비교하게 하는 하나 또는 둘 이상의 명령들
    을 더 갖는,
    프로세서-판독가능 저장 매체.
KR1020157023843A 2013-02-07 2014-01-31 고정-길이 데이터 구조의 무결성을 보호하기 위한 방법 KR101734205B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/762,195 2013-02-07
US13/762,195 US9298947B2 (en) 2013-02-07 2013-02-07 Method for protecting the integrity of a fixed-length data structure
PCT/US2014/014148 WO2014123779A1 (en) 2013-02-07 2014-01-31 Method for protecting the integrity of a fixed-length data structure

Publications (2)

Publication Number Publication Date
KR20150115874A KR20150115874A (ko) 2015-10-14
KR101734205B1 true KR101734205B1 (ko) 2017-05-11

Family

ID=50113037

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157023843A KR101734205B1 (ko) 2013-02-07 2014-01-31 고정-길이 데이터 구조의 무결성을 보호하기 위한 방법

Country Status (6)

Country Link
US (1) US9298947B2 (ko)
EP (1) EP2954636A1 (ko)
JP (1) JP6077678B2 (ko)
KR (1) KR101734205B1 (ko)
CN (1) CN104969508B (ko)
WO (1) WO2014123779A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9443107B2 (en) * 2013-02-19 2016-09-13 Qualcomm Incorporated Method for protecting the integrity of a group of memory elements using an aggregate authentication code
US9177123B1 (en) * 2013-09-27 2015-11-03 Emc Corporation Detecting illegitimate code generators
US10019603B2 (en) * 2014-04-16 2018-07-10 Synopsys, Inc. Secured memory system and method therefor
WO2016064397A1 (en) 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Admissions control of a device
WO2016068941A1 (en) * 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Secure transactions in a memory fabric
WO2016068942A1 (en) 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Encryption for transactions in a memory fabric
WO2018067232A1 (en) * 2016-10-03 2018-04-12 Visa International Service Association Network topology
US10523418B2 (en) 2016-06-03 2019-12-31 Cryptography Research, Inc. Providing access to a hardware resource based on a canary value
US11349639B2 (en) * 2018-12-28 2022-05-31 ePIC Blockchain Technologies Inc. Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
CN112185435A (zh) * 2019-07-03 2021-01-05 旺宏电子股份有限公司 电子装置、存储器装置及其存储数据的读取方法
US11943367B1 (en) * 2020-05-19 2024-03-26 Marvell Asia Pte, Ltd. Generic cryptography wrapper
US11271739B2 (en) * 2020-06-25 2022-03-08 Digital 14 Llc Error-correcting key agreement for noisy cryptographic systems
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
US11698971B2 (en) * 2021-04-15 2023-07-11 Honeywell International Inc. Secure boot device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101407A1 (en) 2004-10-25 2006-05-11 Microsoft Corporation Delegate registration in a managed code execution environment
US20060161773A1 (en) 2005-01-20 2006-07-20 Atsuya Okazaki Microprocessor, a node terminal, a computer system and a program execution proving method
WO2007052045A2 (en) 2005-11-04 2007-05-10 Isis Innovation Limited Security in computing networks
US20110296202A1 (en) 2010-05-25 2011-12-01 Via Technologies, Inc. Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ240019A (en) * 1991-09-30 1996-04-26 Peter John Smith Public key encrypted communication with non-multiplicative cipher
KR100652098B1 (ko) * 2000-01-21 2006-12-01 소니 가부시끼 가이샤 데이터 인증 처리 시스템
FR2810138B1 (fr) * 2000-06-08 2005-02-11 Bull Cp8 Procede de stockage securise d'une donnee sensible dans une memoire d'un systeme embarque a puce electronique, notamment d'une carte a puce, et systeme embarque mettant en oeuvre le procede
US7069287B2 (en) * 2000-09-19 2006-06-27 Worcester Polytechnic Institute Method for efficient computation of odd characteristic extension fields
JP4087149B2 (ja) * 2002-05-20 2008-05-21 株式会社日立製作所 ディスク装置共有システム、及び計算機
US7697681B2 (en) * 2004-02-06 2010-04-13 Nortel Networks Limited Parallelizable integrity-aware encryption technique
US7500098B2 (en) 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
EP1679573B1 (en) * 2005-01-07 2007-06-27 Telefonaktiebolaget LM Ericsson (publ) Updating memory contents of a processing device
US8189786B2 (en) * 2005-05-25 2012-05-29 Zenith Electronics Llc Encryption system
JP4712017B2 (ja) * 2006-11-13 2011-06-29 韓國電子通信研究院 ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
KR20080046515A (ko) * 2006-11-22 2008-05-27 삼성전자주식회사 콘텐츠 파일의 암호화 및 복호화 방법
US8320561B2 (en) * 2007-08-08 2012-11-27 Qualcomm Incorporated Key identifier in packet data convergence protocol header
US8909931B2 (en) 2008-02-29 2014-12-09 Nec Corporation Server authentication system, server authentication method, and program for server authentication
JP5248145B2 (ja) * 2008-03-05 2013-07-31 株式会社日立製作所 情報提供サーバ、プログラム、情報提供方法及び情報提供システム
JP5156540B2 (ja) 2008-08-22 2013-03-06 株式会社日立製作所 ハッシュ値生成装置
US8452984B2 (en) * 2008-08-28 2013-05-28 Alcatel Lucent Message authentication code pre-computation with applications to secure memory
JP5225414B2 (ja) 2011-03-08 2013-07-03 株式会社東芝 暗号演算装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101407A1 (en) 2004-10-25 2006-05-11 Microsoft Corporation Delegate registration in a managed code execution environment
US20060161773A1 (en) 2005-01-20 2006-07-20 Atsuya Okazaki Microprocessor, a node terminal, a computer system and a program execution proving method
WO2007052045A2 (en) 2005-11-04 2007-05-10 Isis Innovation Limited Security in computing networks
US20110296202A1 (en) 2010-05-25 2011-12-01 Via Technologies, Inc. Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions

Also Published As

Publication number Publication date
WO2014123779A1 (en) 2014-08-14
CN104969508A (zh) 2015-10-07
EP2954636A1 (en) 2015-12-16
KR20150115874A (ko) 2015-10-14
US20140223192A1 (en) 2014-08-07
JP2016508002A (ja) 2016-03-10
US9298947B2 (en) 2016-03-29
JP6077678B2 (ja) 2017-02-08
CN104969508B (zh) 2018-04-10

Similar Documents

Publication Publication Date Title
KR101734205B1 (ko) 고정-길이 데이터 구조의 무결성을 보호하기 위한 방법
CN109194466B (zh) 一种基于区块链的云端数据完整性检测方法及系统
US20200125756A1 (en) Implementing access control by system-on-chip
US9904526B2 (en) Control flow graph flattening device and method
US9443107B2 (en) Method for protecting the integrity of a group of memory elements using an aggregate authentication code
US8171306B2 (en) Universal secure token for obfuscation and tamper resistance
CN111723383B (zh) 数据存储、验证方法及装置
KR20140099126A (ko) 소프트웨어를 보안하기 위하여 해시 함수를 이용한 소프트웨어 처리 방법, 그 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
US7970133B2 (en) System and method for secure and flexible key schedule generation
US11755406B2 (en) Error identification in executed code
EP3012764A1 (en) Control flow graph flattening device and method
US11232194B2 (en) Method for executing a binary code of a secure function with a microprocessor
CN113010856A (zh) 一种动态非对称加解密的JavaScript代码混淆方法与系统
WO2017063986A1 (en) A cryptographic device and an encoding device
EP3057021A1 (en) Control flow graph flattening device and method obfuscating branches via interprocedural data
WO2016049225A1 (en) Provably secure virus detection
CN108256351B (zh) 文件处理方法和装置、存储介质及终端
Luo et al. Differential fault analysis of SHA-3 under relaxed fault models
RU2710670C2 (ru) Криптографическая система и способ
US11604857B2 (en) Anti cloning for white box protected data
EP3278259B1 (en) Data protection
Beri et al. Dynamic software component authentication for autonomous systems using slack space
Rahman Towards integrity protection of software for e-health data
KR20080031925A (ko) 보안 패치 시스템
JP2020046989A (ja) 認証装置

Legal Events

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