KR102113937B1 - 메모리 무결성 - Google Patents

메모리 무결성 Download PDF

Info

Publication number
KR102113937B1
KR102113937B1 KR1020187014765A KR20187014765A KR102113937B1 KR 102113937 B1 KR102113937 B1 KR 102113937B1 KR 1020187014765 A KR1020187014765 A KR 1020187014765A KR 20187014765 A KR20187014765 A KR 20187014765A KR 102113937 B1 KR102113937 B1 KR 102113937B1
Authority
KR
South Korea
Prior art keywords
data
memory
unencrypted data
bits
logic
Prior art date
Application number
KR1020187014765A
Other languages
English (en)
Other versions
KR20180059954A (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 KR20180059954A publication Critical patent/KR20180059954A/ko
Application granted granted Critical
Publication of KR102113937B1 publication Critical patent/KR102113937B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/602Providing cryptographic facilities or services
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C2029/1804Manipulation of word size
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • G11C2029/3602Pattern generator
    • 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/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/3239Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/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/3247Cryptographic 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 involving digital signatures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/13

Abstract

시스템 및 방법은 복수의 비트를 포함하는 비암호화 데이터를 식별하는 것을 제공할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장될 수 있다. 게다가, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단이 수행될 수 있다. 예로서, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함할 때, 무결성 액션이 구현될 수 있다.

Description

메모리 무결성{MEMORY INTEGRITY}
실시예는 일반적으로 메모리 무결성에 관한 것이다. 구체적으로, 실시예는 비암호화 데이터(unencrypted data)가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단에 기초하여 무결성 액션을 구현함으로써 메모리의 무결성을 유지하는 것에 관한 것이다.
개인용 컴퓨터, 스마트 이동 전화 등과 같은 디바이스 내의 메모리의 암호화는 디바이스가 동작하거나 분실되거나 도난되거나 기타 등등일 때 메모리에 저장된 데이터를 보호하는 데 사용될 수 있다. 그러나 메모리의 암호화는 여전히 취약할 수 있는데, 이는 데이터가 적에 의해 최초 및/또는 반복 메모리 변조 공격을 통해 변조될 수 있기 때문이다. 따라서, 프로세서는 변조된 데이터를 실행하여, 예로서 패스워드 로그인 시도의 잘못된 성공, 실패 등, 애플리케이션의 잘못된 거동, 충돌 등, 디바이스의 잘못된 거동, 충돌 등과 같은 다수의 바람직하지 못한 효과를 유발할 수 있다. 통상적인 기술들은 다양한 전략을 구현하여 메모리의 무결성을 유지함으로써, 암호화 데이터(예로서, 저장 데이터)에 대한 악의적인 변경을 최소화할 수 있다. 한 가지 기술은 패리티의 이용을 포함할 수 있다. 인라인 접근법이고 비교적 낮은 저장 비용을 갖지만, 적이 검사를 통과하도록 저장 데이터의 비트를 변경하기 위한 방법을 성공적으로 추측할 수 있는 한은 패리티는 결정론적일 수 있다. 다른 기술은 비교적 큰 코드를 이용하여 저장 데이터의 무결성을 검증하는 것을 포함할 수 있으며, 이는 적에게 결정론적이지 않을 수 있지만, 비교적 높은 저장 비용을 포함할 수 있다. 게다가, 메모리로부터 데이터가 인출될 때마다 코드를 사용하는 것은 비교적 많은 수의 메모리 액세스 이벤트를 유발하여, 비교적 높은 검색 비용, 성능 저하, 추가적인 전력 소비 등을 초래할 수 있다.
아래의 명세서 및 첨부된 청구범위를 읽음으로써 그리고 아래의 도면을 참조함으로써 실시예의 다양한 장점이 이 분야의 기술자에게 명백해질 것이다. 도면에서:
도 1은 일 실시예에 따른 메모리 무결성을 유지하기 위한 장치의 일례의 블록도이다.
도 2는 일 실시예에 따른 메모리 무결성을 유지하기 위한 장치의 다른 예의 블록도이다.
도 3은 일 실시예에 따른 메모리 무결성을 유지하는 방법의 일례의 흐름도이다.
도 4는 일 실시예에 따른 메모리 무결성을 유지하는 방법의 다른 예의 흐름도이다.
이제, 도 1을 참조하면, 일 실시예에 따른 메모리 무결성을 유지하기 위한 장치(10)가 도시된다. 장치(10)는 임의의 컴퓨팅 디바이스 및/또는 데이터 플랫폼, 예로서 랩탑, 개인 휴대 단말기(PDA), 미디어 콘텐츠 플레이어, 이미징 디바이스, 이동 인터넷 디바이스(MID), 임의의 스마트 디바이스, 예로서 무선 스마트 전화, 스마트 태블릿, 스마트 TV, 컴퓨터 서버 등 또는 이들의 조합을 포함할 수 있다. 게다가, 장치(10)는 컴퓨팅 기능(예로서, 개인 휴대 단말기/PDA, 랩탑, 스마트 태블릿), 통신 기능(예로서, 무선 스마트 전화), 이미징 기능, 미디어 재생 기능(예로서, 스마트 텔레비전/TV) 등 또는 이들의 조합(예로서, 이동 인터넷 디바이스/MID)을 갖는 임의의 플랫폼을 포함할 수 있다.
도시된 장치(10)는 메모리(12)를 포함한다. 메모리(12)는 프로세서(14) 외부에 위치할 수 있고/있거나(예로서, 외부 메모리), 예로서 메모리 버스에 의해 프로세서(14)에 결합될 수 있다. 게다가, 메모리(12)는 주 메모리로서 구현될 수 있다. 메모리(12)는 예로서 휘발성 메모리, 비휘발성 메모리 등 또는 이들의 조합을 포함할 수 있다. 예로서, 메모리(12)는 예로서 이중 인라인 메모리 모듈(DIMM), 소형 아웃라인 DIMM(SODIMM) 등과 같은 하나 이상의 메모리 모듈로서 구성되는 동적 랜덤 액세스 메모리(DRAM), 판독 전용 메모리(ROM)(예로서, 프로그래밍 가능 판독 전용 메모리(PROM), 소거 가능 PROM(EPROM), 전기적 EPROM(EEPROM) 등), 상변화 메모리(PCM) 등 또는 이들의 조합을 포함할 수 있다. 메모리(12)는 독립적으로 어드레싱 가능한 저장 위치로 분할되는 행렬로 배열되는 메모리 셀 어레이를 포함할 수 있다. 따라서, 메모리(12)에 대한 액세스는 예로서 저장 메모리 위치를 포함하는 행을 식별하는 행 어드레스 및 저장 메모리 위치를 포함하는 열을 식별하는 열 어드레스와 같은 저장 위치에 대한 어드레스의 이용을 포함할 수 있다.
프로세서(14)는 예로서 마이크로프로세서, 내장 프로세서, 디지털 신호 프로세서(DSP), 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 비주얼 처리 유닛(VPU), 네트워크 프로세서, 본 명세서에서 설명되는 기술을 구현하도록 코드를 실행하기 위한 디바이스 등 또는 이들의 조합과 같은 임의 타입의 프로세서를 포함할 수 있다. 프로세서(14)는 예로서 코어(16) 및 코어(18)와 같은 하나 이상의 코어를 포함할 수 있다. 코어(16, 18)는 단일 스레드 코어(single-threaded core), 코어당 2개 이상의 하드웨어 스레드 상황(또는 "로직 프로세서")을 포함하는 다중 스레드 코어 등 또는 이들의 조합을 포함할 수 있다. 코어(16, 18)는 (예로서, 명령어 레지스터로부터) 명령어를 인식 및/또는 디코딩하거나, 명령어를 실행하도록 적절한 회로를 활성화하거나, 명령어 스트림(예로서, 연산 코드 등)이 계산할 것이라는 것을 검증하거나, 기타 등등이거나, 이들의 조합을 행하기 위한 명령어 디코더를 포함할 수 있다.
예로서, 코어(16, 18)는 판독 명령어, 기입 명령어, 소거 명령어, 이동 명령어, 산술 명령어, 제어 명령어 등 또는 이들의 조합과 같은 하나 이상의 명령어를 실행할 수 있다. 코어(16, 18)는 예로서 레지스터(도시되지 않음)와 메모리(12) 사이에서 데이터(예로서, 프로그램 데이터, 연산 코드, 피연산자 등)를 이동하거나, 메모리(12)로부터 데이터를 판독하거나, 데이터를 메모리(12)에 기입하거나, 데이터를 이용하여 산술 연산(예로서, 가산, 감산, 비트 단위 연산, 비교 등)을 수행하거나, 데이터와 관련된 제어 연산(예로서, 분기 등)을 수행하거나, 기타 등등이거나, 이들의 조합을 행하기 위한 하나 이상의 명령어를 실행할 수 있다. 명령어는 예로서 2진 코드, 8진 코드 및/또는 16진 코드(예로서, 기계 언어), 심벌 코드(예로서, 어셈블리 언어), 10진 코드, 영숫자 코드, 상위 레벨 프로그래밍 언어 코드 등 또는 이들의 조합과 같은 임의의 코드 표현을 포함할 수 있다. 따라서, 예로서, 16진 코드는 가산을 위한 바이트 값 "00", 이동 연산을 위한 바이트 값 "8B", 증가/감소 연산을 위한 바이트 값 "FF" 등을 포함하는 x86 명령어 세트의 연산 코드(예로서, opcode)를 표현하는 데 사용될 수 있다.
프로세서(14)는 예로서 하나 이상의 레벨을 포함하는 프로세서 캐시와 같은 내부 저장소를 포함할 수 있다. 프로세서 캐시는 암호화되지 않을 수 있고/있거나, 동일 칩 상에서 프로세서(14)와 동일한 다이를 공유할 수 있다. 게다가, 프로세서 캐시는 코어(16, 18) 중 하나 이상의 코어 상에 통합될 수 있다. 도시된 프로세서(14)는 프로세서(14)의 하나 이상의 컴포넌트에 의해 사용되는 데이터(예로서, 명령어, 피연산자, 프로그램 데이터 등)를 저장할 수 있는 캐시(20)를 포함한다. 캐시(20)는 예로서 명령어 캐시, 데이터 캐시, 단일 레벨 캐시, 다중 레벨 캐시, 공유 캐시, 순전히 포괄적인 캐시, 배타적인 캐시 등 또는 이들의 조합과 같은 임의 타입의 캐시를 포함할 수 있다. 예로서, 캐시(20)는 중간 레벨 캐시, 예로서 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨의 캐시, 최종 레벨 캐시(LLC) 등 또는 이들의 조합을 포함할 수 있다. 코어(16, 18)는 하나 이상의 명령어 및/또는 다른 데이터(예로서, 프로그램 데이터 등)를 실행하기 위해 캐시(20) 내에 데이터가 위치하는지를 검사할 수 있으며, 캐시 미스는 고정 크기의 블록(예로서, 캐시 라인)에서의 메모리(12)로부터 캐시(20)로의 데이터의 전송을 유발할 수 있다.
도시된 프로세서(14)는 프로세서(14)를 메모리(12)와 결합하고, 메모리(12)로의 그리고/또는 그로부터의 데이터의 흐름을 관리하는 것 등 또는 이들의 조합을 행할 수 있는 메모리 제어기(22)도 포함한다. 메모리 제어기(22)는 프로세서(14) 상에 통합된 것으로 도시되지만, 메모리 제어기(22)는 프로세서(14) 내에 통합되는 것이 아니라 그의 밖의 개별 로직일 수 있다. 유사하게, 메모리 제어기(22) 상에 통합된 것으로 도시된 컴포넌트들은 메모리 제어기(22) 내에 통합되는 것이 아니라 그의 밖의 개별 로직일 수 있다. 각각의 코어(16, 18)는 예로서 각각의 메모리 제어기를 통해 각각의 메모리와 결합되거나, 공유 메모리 제어기를 통해 공유 메모리와 결합되거나, 공유 메모리 제어기를 통해 각각의 메모리와 결합되거나, 기타 등등이거나, 이들의 조합일 수 있다. 게다가, 공유 캐시가 공유 메모리 제어기와 결합될 수 있고, 복수의 캐시가 복수의 각각의 메모리 제어기와 결합될 수 있고, 기타 등등일 수 있고, 이들의 조합일 수 있다. 예로서, 메모리 제어기(22)는 코어(16, 18) 사이에 공유될 수 있고, 캐시(20)(예로서, 공유 다중 레벨 캐시)와 결합될 수 있고, 코어(16, 18)를 메모리(12)(예로서, 공유 DRAM)와 결합할 수 있다. 메모리 제어기(22)는 예로서 메모리 버스를 통해 메모리(12)(예로서, 외부 메모리, DRAM 등)와 결합될 수 있다.
게다가, 도시된 메모리 제어기(22)는 비암호화 데이터를 암호화할 수 있는 암호화기(24)를 포함한다. 비암호화 데이터는 예로서 클리어텍스트 데이터, 플레인텍스트 데이터 등 또는 이들의 조합을 포함할 수 있다. 클리어텍스트 데이터는 특수 포맷(예로서, 하이퍼텍스트 마크업 언어(HTML), 리치 텍스트 포맷(RTF) 등)으로 인코딩되며, 복호화할 필요 없이 적절한 프로그램(예로서, 워드 프로세서, 텍스트 편집기 등)에 의해 판독될 수 있다. 플레인텍스트 데이터는 예로서 전송 및/또는 저장 전에 암호화되어야 하는 클리어텍스트 데이터와 같은 암호화전 데이터를 포함할 수 있다. 게다가, 플레인텍스트 데이터는 예로서 수신 및/또는 검색된 데이터에 대한 복호화의 결과인 데이터와 같은 복호화후 데이터를 포함할 수 있다.
게다가, 플레인텍스트 데이터는 임의의 포맷으로 인코딩될 수 있는 데이터, 예로서 오디오/비디오 데이터(예로서, MPEG(moving picture experts group) 데이터 등), 이미지 데이터(예로서, JPEG(joint photographic experts group) 데이터 등), 금융 데이터(예로서, ATM(automatic transfer machine) 거래 데이터 등) 등 또는 이들의 조합을 포함할 수 있다. 플레인텍스트 데이터는 예로서 프로그램, 운영 체제(OS), 애플리케이션, 가상 기계(예로서, 가상 기계 모니터(VMM) 코드 등) 등 또는 이들의 조합의 적어도 일부와 같은 프로그램 데이터를 포함할 수 있다. 플레인텍스트 데이터는 예로서 연산 코드, 피연산자 등 또는 이들의 조합을 포함하는 명령어도 포함할 수 있다.
비암호화 데이터는 복수의 비트를 포함할 수 있다. 복수의 비트는 2진 코드, 8진 코드, 16진 코드, 심벌 코드, 10진 코드, 영숫자 코드, 상위 레벨 프로그래밍 언어 코드 등 또는 이들의 조합과 같은 임의의 코드 표현에서의 하나 이상의 비트(예로서, 바이트 등)를 포함할 수 있다. 예로서, 메모리 참조 명령어는 연산 코드를 위한 비트, 어드레스를 위한 비트 등을 포함할 수 있고, 메모리 참조 명령어의 비트는 16진 코드(예로서, 기계 언어), 심벌 코드(예로서, 어셈블리 언어) 등 또는 이들의 조합으로 표현될 수 있다. 게다가, 복수의 비트는 2진 코드로 그리고/또는 그로부터 변환될 수 있으며, 2진 코드는 코어(16, 18)에 의해 실행될 수 있고, 메모리(12)에서 분류될 수 있고, 메모리(12)로부터 인출될 수 있고, 기타 등등일 수 있고, 이들의 조합일 수 있다.
암호화기(24)는 예로서 임의의 원하는 연산 모드의 블록 사이퍼(block cipher)와 같이 사이퍼텍스트 데이터를 생성하기 위한 임의 타입의 사이퍼를 포함할 수 있다. 블록 사이퍼는 고정 블록 크기를 포함할 수 있으며, 블록 사이퍼는 블록 크기보다 큰 데이터를 암호화하도록 반복 구현될 수 있다. 예로서, 블록 사이퍼는 PCBC(propagating cipher-block chaining) 연산 모드의 AES(Advanced Encryption Standard)를 포함할 수 있다. 게다가, 블록 사이퍼는 확장 가능 블록 크기를 포함할 수 있다. 일례에서, 블록 사이퍼는 임의 길이(예로서, 256 비트, 512 비트, 1024 비트 등)의 확장 가능 블록 크기를 획득하도록 구현될 수 있는 스리피시(Threefish)이다.
예로서, 스리피시는 메모리 어드레스 및/또는 위치를 포함할 수 있는 트위크(tweak) 및 블록과 동일한 폭일 수 있는 키를 사용할 수 있고, 다수의 라운드(예로서, 72개)를 사용하여 256 비트 및 1024 비트의 블록을 암호화하고, 다수의 라운드(예로서, 80개)를 사용하여 1024 비트의 블록을 암호화할 수 있고, 기타 등등일 수 있다. 스리피시는 가산, 상수에 의한 회전 연산 및 배타적 논리합(XOR) 연산을 포함하는 함수 MIX를 사용할 수 있다. 예로서 각각의 MIX 함수 세트(예로서, 각각 블록 크기에 의해 2개, 4개 또는 8개) 후에 워드가 교환될 수 있다. 예로서 라운드 수(예로서, 4개)마다 시스템 내에 서브키가 주입될 수 있으며, 서브키는 키, 트위크 및 카운터 값의 부분에 의해 생성될 수 있다. 키 및 트위크는 끝에 추가 워드(예로서, 모든 나머지 워드의 XOR)를 제공받을 수 있다.
도시된 메모리 제어기(22)는 사이퍼텍스트 데이터를 복호화하여 비암호화 데이터를 생성할 수 있는 복호화기(26)도 포함한다. 복호화기(26)는 암호화기(24)의 역을 포함할 수 있다. 예로서, 복호화기(26)는 AES-PCBC의 역을 포함할 수 있다. 게다가, 복호화기(26)는 스리피시의 역을 포함할 수 있다. 예로서, 서브키는 역순으로 적용될 수 있고, 각각의 라운드는 역 워드 교환에 이어지는 역 MIX 함수를 포함할 수 있다. 따라서, 비암호화 데이터(예로서, 플레인텍스트 데이터)는 비암호화 데이터가 메모리(12)에 저장되어야 할 때 비암호화 데이터(예로서, 사이퍼텍스트 데이터)의 판독 불가 사본을 생성하기 위한 암호화기(24)에 대한 입력으로서 구현될 수 있으며(예로서, 기입 명령어), 복호화기(26)는 사이퍼텍스트 데이터가 메모리(12)로부터 인출되어야 할 때 사이퍼텍스트 데이터를 복호화하여 비암호화 데이터를 생성하도록 구현될 수 있다(예로서, 판독 명령어).
도시된 메모리 제어기(22)는 예로서 코어(16, 18), 암호화기(24), 복호화기(26) 등과 같은 프로세서(14)의 컴포넌트를 이용하여 메모리(14)의 무결성을 유지(예로서, 보장, 검증, 테스트 등)할 수 있는 로직(28)도 포함한다. 예로서, 로직(28)은 복수의 비트를 포함하는 비암호화 데이터(예로서, 암호화전 데이터, 복호화후 데이터 등)를 식별할 수 있다. 게다가, 로직(28)은 예로서 메모리(12)로부터의 판독 연산에 수반되는 비암호화 데이터(예로서, 복호화후 데이터), 메모리(12)에 대한 기입 연산에 수반되는 비암호화 데이터(예로서, 암호화전 데이터) 등 또는 이들의 조합과 같이 메모리 트랜잭션에 수반될 수 있는 비암호화 데이터를 식별할 수 있다. 게다가, 로직(28)은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행할 수 있다. 예로서, 로직(28)은 복수의 비트가 패턴, 랜덤 분포 등 또는 이들의 조합을 포함하는지를 판단할 수 있다.
로직(28)은 임의의 계산 및/또는 검색된 정보를 이용하여 판단을 행할 수 있다. 정보는 예로서 데이터의 타입(예로서, 명령어, 프로그램 데이터 등)에 대응할 수 있다. 로직(28)은 예로서 소정 양의 메모리(예로서, 기가바이트의 메모리)에 걸쳐 프로그램 데이터를 검사하여, 비교적 일반적인 패턴, 비교적 불명료한 패턴 등 또는 이들의 조합을 포함하는, 특정 빈도로 나타내는 통상적인 패턴을 판단할 수 있다. 게다가, 로직(28)은 예로서 메모리, 서버 등과 같은 저장소로부터 예로서 표 등 또는 이들의 조합과 같은 데이터 구조로부터 통상적인 패턴에 관한 정보를 검색할 수 있다. 일례에서, 통상적으로 메모리(14)에 저장되고, 인출되고, 이어서 복호화되는 프로그램 데이터는 1 비트보다 많은 0 비트를 포함할 수 있다. 따라서, 로직(28)은 1 비트보다 많은 0 비트를 프로그램 데이터에 대한 캐시 라인에서 통상적으로 만난다는 것을 식별하고, 패턴을 이용하여 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지를 판단할 수 있다.
게다가, 예로서 패스워드를 이용하여 컴퓨팅 플랫폼에 로그인하는 것과 같은 인증 연산을 위해 부울 참-거짓 테스트(예로서, 32 비트)를 만날 수 있다. 로직(28)은 통상적인 32 비트 참-거짓 테스트를 위해 비트 시퀀스가 1로 설정된 제1 비트, 0으로 설정된 제2 비트 및 0으로 설정된 나머지 30 비트를 포함한다는 것을 식별함으로써 복수의 비트가 패턴을 포함하는 것으로 판단할 수 있다. 게다가, 로직(28)은 (예로서, 데이터의 타입에 기초하여) 동일 캐시 라인을 공유하는 경향을 가질 수 있는 관련 패턴을 식별함으로써 복수의 비트가 패턴을 포함하는 것으로 판단할 수 있다. 예로서, 로직(28)은 예로서 x86 명령어와 같은 명령어 데이터가 다른 명령어 데이터(예로서, x86 명령어 등)와 캐시 라인을 공유할 수 있는 것, 프로그램 데이터가 다른 프로그램 데이터와 캐시 라인을 공유하는 경향이 있을 수 있다는 것, 명령어 데이터가 프로그램 데이터에 대해 떨어진 캐시 라인에 배치되는 경향이 있을 수 있다는 것 등 또는 이들의 조합을 식별할 수 있다. 로직(28)은 데이터의 타입에 대한 비트 시퀀스가 함께 나타나는 경향이 있을 수 있다는 것도 식별할 수 있다. 예로서, HTML 비트 시퀀스(예로서, HTML 패턴)가 함께 나타나는 경향이 있을 수 있고, ASCII 비트 시퀀스(예로서, ASCII 패턴)가 함께 나타나는 경향이 있을 수 있고, MPEG 비트 시퀀스(예로서, MPEG 패턴)가 함께 나타나는 경향이 있을 수 있고, 기타 등등일 수 있다.
게다가, 로직(28)은 메모리(12)로부터 예로서 x86 명령어 세트와 같은 명령어 세트를 검색하고, 대응하는 값(예로서, 바이트 값)을 이용하여 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지를 판단할 수 있다. 따라서, 메모리 제어기(22)는 비암호화 캐시 라인이 예로서 x86 명령어, 연산 코드 등의 유효 스트림과 같은 명령어의 유효 스트림을 포함하는지를 검증하여 판단을 행할 수 있다. 예로서, 로직(28)은 이동, 가산 등과 같은 기본 연산을 위해 비암호화 데이터 내의 명령어를 식별함으로써 복수의 비트가 패턴을 포함하는지를 판단할 수 있다. 로직(28)은 전체 명령어 세트에 대한 패턴을 매칭시킬 수 있지만, 로직(28)은 대응하는 구조(예로서, x86 구조)의 캐시 라인 내에 자주 그리고/또는 반복하여 나타날 수 있는, 예로서 x86 명령어 세트에 대한 바이트 값 "00", "FF" 및/또는 "8b"와 같은 명령어 세트의 적어도 일부를 탐색할 수도 있다.
따라서, 로직(28)은 비암호화 데이터 내에 소정 빈도로 나타나는 비트 시퀀스를 식별함으로써 판단을 행할 수 있다. 로직(28)은 또한 비암호화 데이터 내에 비트 시퀀스가 나타나는 인스턴스의 수를 카운트할 수 있다. 게다가, 로직(28)은 인스턴스의 수가 임계치를 충족시킬 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단할 수 있다. 예로서, 로직(28)은 예로서 DRAM으로부터 메모리 제어기(28)로의 "B0B1B2...B63"을 포함하는 64 바이트 캐시 라인의 인출과 같은 캐시 라인의 인출을 위해 아래의 예시적인 휴리스틱 규칙을 적용할 수 있으며, "B0B1B2...B63"은 프로그램 코드 또는 텍스트 섹션에 대응할 수 있다.
Figure 112018051154537-pat00001
로직(28)은 명령어 세트의 통상적인 값(예로서, x86 내의 바이트 값 "00", "FF" 및/또는 "8B")을 식별함으로써 복수의 비트가 패턴을 포함하는지를 판단할 수 있다. 이 예에서, 로직(28)은 카운트가 9의 임계치 이상일 때 비암호화 데이터가 변조되지 않은(예로서, 적절한, 유효한, 기타 등등인) 비랜덤 명령어를 포함하는 것으로 판단할 수 있다. 따라서, 메모리 제어기(22)는 비암호화 캐시 라인이 예로서 x86 명령어, 연산 코드 등의 유효 스트림과 같은 명령어의 유효 스트림을 포함하는지를 검증하여 판단을 행할 수 있다.
따라서, 로직(28)은 비암호화 데이터가 임계치를 충족시키는 하나 이상의 통상적인 비트 시퀀스(예로서, 패턴)를 포함할 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단할 수 있다. 이와 달리, 로직(28)은 비암호화 데이터가 임계치를 충족시키는 하나 이상의 통상적인 비트 시퀀스를 포함하지 않을 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 것으로 판단할 수 있다. 따라서, 로직(28)은 임계치가 충족되지 않을 때 비암호화 데이터가 변조된(예로서, 부적절한, 무효한, 기타 등등인) 것으로 판단할 수 있다. 임계치는 예로서 임의의 값으로 사전 결정 및/또는 설정될 수 있다. 게다가, 임계치는 특정 타입의 패턴에 대해 설정되거나, 패턴 조합에 대해 설정되거나, 기타 등등이거나, 이들의 조합일 수 있다. 게다가, 패턴은 예로서 비교적 일반적인 패턴, 비교적 불명료한 패턴 등 또는 이들의 조합을 설명하도록 가중될 수 있다.
게다가, 로직(28)은 복호화된 데이터 블록에서 프로그램 데이터, 명령어 등의 하나 이상의 통상적인 패턴을 검출하고, 통상적인 패턴의 인스턴스를 시퀀스가 비트의 랜덤 분포 내에 나타날 확률과 비교할 수 있다. 참고로, 패턴을 만날 기회는 유효 플레인텍스트에 대해 비교적 높을 수 있고/있거나, 랜덤 잡음이 인식 가능한 패턴을 생성할 확률은 비교적 낮을 수 있다. 게다가, 로직(28)은 확률 함수를 구현하여, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지를 판단할 수 있다. 예로서, 함수는 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지를 검증 및/또는 테스트하기 위한 확률 밀도 함수를 포함할 수 있다. 따라서, 예로서, 로직(28)은 비암호화 데이터에 대해 사후 확률 밀도 함수를 구현하여 판단을 행할 수 있다.
로직(28)은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 대한 판단을 임의의 시간에 수행할 수 있다. 예로서, 로직(28)은 메모리(12)로부터의 데이터(예로서, 사이퍼텍스트 데이터)의 인출 후에 그리고 복호화기(26)가 데이터를 복호화하여 비암호화 데이터(예로서, 플레인텍스트 데이터)를 생성한 후에 판단을 행할 수 있다. 인출은 예로서 캐시 미스에 응답하여 이루어질 수 있다. 참고로, 메모리(12)에 저장된 암호화 데이터에 대한 적어도 1 비트 변경은 그로부터 생성된 비암호화 데이터가 랜덤로 나타나게 할 수 있는데, 이는 사이퍼텍스트 데이터의 적어도 1 비트 변경이 대응하는 비암호화 데이터 내의 비트의 약 50 퍼센트가 변경되게 할 수 있고, 변경이 실질적으로 전체 데이터 블록에 걸쳐 확산될 수 있기 때문이다.
예로서, 본래의 플레인텍스트 데이터가 사이퍼텍스트 데이터를 형성하도록 암호화된 모두 0의 데이터 블록인 경우, 사이퍼텍스트 데이터에 대한 변경은 평균적으로 비트의 약 50 퍼센트가 1로 변경되게 할 수 있으며, 대응하는 플레인텍스트 데이터의 비트는 랜덤 분포로 나타날 수 있다(예로서, 실질적으로 전체 데이터 블록에 걸친 랜덤 비트 플립(random bit flip)). 사이퍼텍스트 데이터는 예로서 하나 이상의 비트를 플립하거나, 비트를 삽입하거나, 비트를 삭제하거나, 비트를 교환하거나, 사이퍼텍스트 데이터를 수정하거나, 기타 등등이거나, 이들의 조합을 행함으로써 변경될 수 있으며, 로직(28)은 대응하는 복호화된 플레인텍스트 데이터가 데이터 블록의 비트의 전체 수의 대략 절반에서 비트 차이를 포함하는 것으로 판단할 수 있다. 따라서, 암호화기(24)는 프로그램 데이터의 64 바이트 캐시 라인을 사이퍼텍스트 데이터의 단일 데이터 블록으로 암호화할 수 있으며, 사이퍼텍스트 데이터의 결과적인 512 비트 중 하나 이상의 비트에 대한 변경은 대응하는 플레인텍스트 데이터 내의 512 비트 중 약 256개의 위치에서 비트 차이를 유발할 수 있고, 이는 실질적으로 전체 복호화 플레인텍스트 데이터 블록에 걸쳐 확산될 수 있다. 따라서, 로직(28)은 비교적 랜덤 및/또는 높은 엔트로피 복호화 플레인텍스트 결과에 기초하여 사이퍼텍스트 데이터에 대한 악성 n 비트 변경(예로서, 2 비트 변경, 모든 비트 변경 등)을 식별할 수 있다.
더욱이, 로직(28)은 비암호화 데이터가 변조된 때 비암호화 데이터에 대한 액세스를 방지하기 위해 무결성 액션을 구현할 수 있다. 예로서, 로직(28)은 비암호화 데이터가 캐시(20)로 전송되는 것을 금지함으로써, 비암호화 데이터에 대응하는 메모리 위치에 대한 액세스를 방지함으로써, 메모리 내의 위치가 삭제되게 함으로써, 기타 등등 또는 이들의 조합에 의해 액세스를 방지할 수 있다. 게다가, 로직(28)은 (예로서, 데이터의 사본, 메모리 위치 등을 포함하는) 통지가 발행되게 할 수 있다. 통지는 방지 액션을 구현하기 위해 예로서 사전 결정된 위치(예로서, 디버그 환경, 로그 등)로, 개인(예로서, 관리자, 프로그래머, 디바이스 소유자 등)에게로, 기타 등등으로 발행될 수 있다. 게다가, 프로세서(14)는 퓨즈를 절단하고/하거나 다른 온-다이 비휘발성 메모리를 이용함으로써 메모리 변조 위반을 내부적으로 기록할 수 있다. 이와 관련하여, 예로서 파워 다운 시에, 프로세서 칩은 공격 시도를 소환하고, 검출된 공격 시도 횟수가 사전 결정된 공격 임계치를 충족시킬 때 예로서 셧다운, 동작 불능화 등과 같은 액션을 취할 수 있다.
게다가, 로직(28)은 프로세서(14) 내의 메모리에 의존하지 않을 수 있는 펌웨어의 실행을 유발하여 변조 데이터에 대한 액세스를 방지할 수 있다. 예로서, 코어(16, 18)는 예로서 ROM으로부터 마이크로코드를 실행하여 변조 데이터에 대한 액세스를 방지할 수 있다. 마이크로코드는 예로서 메모리(12)가 변조된 이유를 발견하는 것, 메모리(12)를 이전의 변조되지 않은 상태로 변경하는 것, 장치(10)를 재설정하는 것 등 또는 이들의 조합과 같은 교정 액션을 취하는 데 사용될 수 있다. 게다가, 로직(28)은 변조를 메모리(12)의 하나 이상의 블록으로 국지화함으로써 변조 데이터에 대한 액세스를 방지할 수 있다. 예로서, 로직(28)은 마이크로코드가 비변조 메모리 위치를 찾게 하며, 비변조 프로그램 데이터 및/또는 명령어가 실행되는 것을 가능하게 할 수 있다. 따라서, 로직(28)은 마이크로코드가 변조 애플리케이션을 실행 및 제거하고, 나머지 비변조 애플리케이션을 이용하여 OS의 기능을 복구하고, 기타 등등 또는 이들의 조합을 수행하게 할 수 있다.
로직(28)은 또한 비암호화 데이터가 암호화되고 메모리(12)에 저장되기 전에 판단을 행할 수 있다. 일례에서, 암호화전 판단 로직(예로서, 알고리즘, 하드웨어 로직, 회로 로직 등)은 예로서 메모리 판독, 메모리 기입 등과 같은 각각의 메모리 연산 지시가 동일한 플레인텍스트 데이터에 대해 동일한 판단을 생성할 수 있는 것을 보장하기 위해 복호화후 변조 검출 로직(알고리즘, 하드웨어 로직, 로직 등)과 동일할 수 있다. 게다가, 로직(28)은 본래의 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 것으로 판단하고, 그에 응답하여 비암호화 데이터와 관련된 무결성 값이 비교적 맞춤화된 애드혹 방식으로 사전 생성되고 메모리(12)에 저장되게 할 수 있다.
무결성 값은 비암호화 데이터에서 식별된 복수의 비트의 랜덤 분포가 암호화 데이터에 대한 통지의 결과인지 또는 복호화기(26)에 의한 정당한 복호화의 결과인지를 검증 및/또는 테스트하기 위한 임의의 값을 포함할 수 있다. 예로서, 무결성 값은 무결성 검사 값(ICV)(예로서, 해시), 메시지 인증 코드(MAC)(예로서, 동일 메시지, 비밀 키 및 초기화 벡터가 사용될 때 생성된 동일 MAC), 메시지 무결성 코드(MIC)(예로서, 동일 알고리즘이 사용되는 경우에 생성되는 동일 MIC), (예로서, 키 쌍의 비공개 키를 이용하여 생성되는) 시그니처 등 또는 이들의 조합을 포함할 수 있다. 따라서, 로직(28)은 예로서 전술한 예시적인 휴리스틱 규칙의 연속으로서 아래의 예시적인 휴리스틱 규칙을 적용할 수 있다.
Figure 112018051154537-pat00002
로직(28)은 메모리(12)로부터의 데이터(예로서, 사이퍼텍스트 데이터)의 인출 후에 그리고 복호화기(26)가 데이터를 복호화하여 비암호화 데이터(예로서, 플레인텍스트 데이터)를 생성한 후에 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 추가 판단(예로서, 제2 판단 등)을 행할 수 있다. 인출은 예로서 캐시 미스에 응답하여 이루어질 수 있다. 게다가, 로직(28)은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함할 때 예로서 임의의 것이 존재하는지를 판단하기 위한 검사 후에 메모리(12)로부터의 무결성 값의 인출을 유발할 수 있으며, 무결성 값에 기초하여 비암호화 데이터가 변조되었는지를 판단할 수 있다. 예로서, 로직(28)은 비암호화 데이터(예로서, 메시지, 플레인텍스트 데이터 등)를 이용하여 해시 값(예로서, 다이제스트)을 계산하고, 해시 값을 인출된 무결성 값(예로서, 128 비트 ICV, MAC 등)과 비교하여, 비암호화 데이터가 본래의 데이터의 정당한 복호화의 결과인지를 검증할 수 있다. 테스트가 예로서 비교 미스매치로 인해 실패하는 경우, 로직(28)은 비암호화 데이터가 변조된 것으로 판단할 수 있고, 비암호화 데이터에 대한 액세스를 방지하고, 이벤트를 기록하고, 메모리 변조를 소프트웨어에 통지하고, 메모리 변조를 펌웨어에 통지하고, 기타 등등 또는 이들의 조합을 수행할 수 있다.
로직(28)은 데이터가 복수의 비트의 랜덤 분포를 포함하지 않을 때 비암호화 데이터에 대한 액세스를 허용할 수 있다. 예로서, 비암호화 데이터는 패턴의 식별에 기초하여, 임계치에 기초하여, 확률 함수에 기초하여, 기타 등등 또는 이들의 조합에 의해 캐시(20) 내에 배치될 수 있다. 비변조 비암호화 데이터는 예로서 최종 레벨 캐시 라인으로 전송될 수 있다. 따라서, 비암호화 데이터는 코어(16, 18)에 의해 액세스될 수 있다.
로직(28)은 또한 적어도 1 비트 변경의 확산을 최대화할 수 있다. 예로서, 전자 코드 북(ECB) 모드에서의 AES는 캐시 라인의 원자 유닛(예로서, 64 바이트)보다 짧을 수 있고 확산을 최소화할 수 있는 고정 블록 크기(예로서, 128 비트)에 걸쳐 확장될 수 있다. 로직(28)은 복수의 비트의 랜덤 분포를 최대화하기 위해 원자 유닛에 대해 암호화를 구현할 수 있으며, 적어도 1 비트 변경은 비트의 전체 수의 대략 절반에서 랜덤 비트 차이를 유발할 수 있고, 변경된 비트의 분포는 사이퍼 블록 크기가 캐시 라인 정도로 클 때 실질적으로 전체 캐시 라인에 걸쳐 확산될 수 있다. 분포는 예로서 2항 IID 랜덤 분포 비트 시퀀스를 따를 수 있다.
로직(28)은 캐시 라인이 128 비트일 때 예로서 128 비트 사이퍼와 같이 확산을 최대화하기에 충분한 블록 크기를 포함하는 블록 사이퍼를 선택할 수 있다. 게다가, 로직(28)은 확장 가능 블록 사이퍼(예로서, 스리피시)를 선택 및/또는 구현하고, 확장 가능 블록 사이퍼의 블록 크기를 메모리(12)가 확산을 최대화하도록 액세스되어야 하는 입도와 동일하게 설정할 수 있다. 예로서, 로직(28)은 블록 크기를 전체 캐시 라인 정도로 크게 설정할 수 있다. 로직(28)은 메모리(12)로부터 인출될 메모리의 양이 임의의 특정 바이트 수일 때 블록 크기를 그 특정 바이트 수로 설정할 수 있다. 따라서, 로직(28)은 코어(16, 18)가 메모리(12)로부터 데이터를 판독하고, 데이터를 메모리(12)에 기입하고, 기타 등등 또는 이들의 조합을 수행하는 원자 단위로 블록 사이퍼를 스케일링할 수 있다. 후술하는 바와 같이, 로직(28)은 또한 확산을 최대화하기 위해 하나 이상의 확산기를 구현할 수 있다.
도 2는 일 실시예에 따른 메모리 제어기(22)를 포함하는 장치(30)를 나타내며, 메모리 제어기(22)는 확산을 최대화하기 위해 로직(28)에 의해 구현될 수 있는 확산기(30) 및 역확산기(32)를 포함한다. 예로서, 확산기(30)는 블록 사이퍼의 블록 크기가 메모리(12)가 액세스되어야 하는 입도보다 작을 때 암호화를 위해 로직(28)에 의해 구현될 수 있다. 확산기(30)는 임의의 연산 모드의 임의의 블록 사이퍼를 포함할 수 있다. 확산기(30)는 예로서 적어도 단일 비트 변경(예로서, 1 비트 변경, 2 비트 변경, 모든 비트 변경 등)이 위치에 관계없이, 크기와 무관하게, 인출되는 캐시 라인의 비트에 영향을 주는 것을 보장하기 위해 순방향 및 역방향 캐스케이딩 블록 사이퍼 또는 PCBC를 포함할 수 있다.
따라서, 사이퍼의 블록 크기를 전술한 캐시 라인 크기에 매칭시키는 것에 더하여, 로직(28)은 사이퍼가 전체 캐시 라인 폭을 커버할 만큼 충분히 넓지 않을 때 AES-PCBC를 구현할 수 있다. AES-PCBC는 (예로서, 캐시 라인을 앞에서 뒤로 암호화하고, 이어서 뒤에서 앞으로 재암호화하기 위해) 캐시 라인을 따라 양방향으로 여러 번 실행되어, 사이퍼 블록 체인화를 이용하는 비암호화 데이터에 걸친 실질적 확산을 보장할 수 있다. 역확산기(32)는 예로서 사용된 암호화의 역방식으로 사이퍼텍스트 데이터를 복호화하기 위해 로직(28)에 의해 구현될 수 있는 AES-PCBC의 역과 같은 확산기(30)의 역을 포함할 수 있다.
도시된 메모리 제어기(22)는 메모리(12)에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하기 위해 로직(28)에 의해 구현될 수 있는 어드레스 스크램블러(34), 및 물리 메모리 어드레스의 스크램블을 반전시키기 위해 로직(28)에 의해 구현될 수 있는 어드레스 역스크램블러(36)도 포함한다. 스크램블러(34)는 순차적 입력 로직 어드레스를 비순차적 물리 어드레스로 맵핑할 수 있으며, 메모리(12)의 행 또는 열에 로직적으로 대응할 수 있는 메모리 액세스가 메모리(12)의 다수의 행 및 열에 걸쳐 분산될 수 있다. 따라서, 적은 그렇지 않을 경우에 메모리(12) 내의 랜덤 위치에 걸쳐 암호화 데이터를 분배함으로써 입수할 수 있는 비암호화 데이터에 대한 정보를 획득하지 못할 수 있다.
예로서, 적은 프로그램이 어드레싱되거나 메모리(12)에 저장되거나 기타 등등이거나 이들의 조합인 방식과 관련된 프로그램 데이터(예로서, OS, 애플리케이션 등)에 관한 선험적 지식을 가질 수 있다. 로직(28)은 외부 저장소(도시되지 않음), 메모리(12) 등 또는 이들의 조합에 데이터를 저장하는 데 사용되는 물리 어드레스에 기초하여 적이 정보를 획득하는 것을 방지하도록 순차 입력 로직 어드레스를 비순차 물리 메모리 어드레스로 맵핑하기 위해 스크램블러(34)를 구현할 수 있다. 스크램블러(34)는 예로서 컴퓨팅 플랫폼의 파워-업마다 난수를 생성할 수 있으며, 이는 물리 어드레스와 XOR될 수 있다. 어드레스 역스크램블러(36)는 사용된 스크램블의 역방식으로 역스크램블링하기 위해 로직(28)에 의해 구현될 수 있는 어드레스 스크램블러(34)의 역을 포함할 수 있다.
메모리 제어기(22)는 비암호화 데이터를 물리 메모리 어드레스와 결합하기 위해 (예로서, 스크램블링된, 언스크램블링된, 기타 등등인) 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하기 위해 로직(28)에 의해 구현될 수 있는 트위크 함수(38)도 포함할 수 있다. 트위크 함수(38)는 예로서 XTS(XEX-based tweaked-codebook mode with ciphertext stealing), LRW 알고리즘 등 또는 이들의 조합을 포함할 수 있다. 따라서, 적은 정당한 메모리 암호화 데이터를 스위칭 및/또는 재배열하지 못할 수 있다. 오히려, 저장된 캐시 라인은 위치에 의존할 수 있고/있거나, 로직(28)에 의해 구현되는 인라인 무결성 검사에 실패하지 않고서 다른 물리 메모리 위치로 이동되지 못할 수 있다.
트위크 함수(38)는 예로서 본래의 물리 메모리 어드레스를 확산시키고, 어드레스를 비암호화 데이터와 XOR하고, 그 결과를 키를 이용하여 암호화기(24)를 통해 실행하여 비암호화 데이터를 어드레스와 결합할 수 있다. 이어서, 로직(28)은 하나의 메모리 위치로부터 다른 메모리 위치로의 사이퍼텍스트 데이터의 이동이 존재할 때 트위크에 기초하여 비암호화 데이터가 변조되었는지를 판단할 수 있다. 예로서, 공격이 다른 메모리 위치로의 사이퍼텍스트 데이터의 스와핑을 포함할 때, 복호화기(26)는 다른 메모리 위치에 대응하는 메모리 어드레스를 이용하여 사이퍼텍스트 데이터를 복호화할 수 있으며, 이는 대응하는 비암호화 데이터(예로서, 플레인텍스트 데이터)가 복수의 비트의 랜덤 분포를 포함하게 할 것이다. 따라서, 로직(28)은 비암호화 데이터가 변조된 것으로 판단하고, 비암호화 데이터에 대한 액세스를 방지할 수 있다.
도시된 메모리 제어기(22)는 로직(28)에 의해 구현될 수 있는 디코더(40)도 포함한다. 디코더(40)는 예로서 복호화기(26)와 로직(28) 사이에 배치될 수 있다. 디코더(40)는 적어도 비암호화 데이터를 디코딩하고 하나 이상의 명령어를 인식하도록 로직(28)에 의해 구현될 수 있다. 예로서, 비변조 비암호화 데이터(예로서, 유효 플레인텍스트)는 실질적으로 전체 캐시 라인(예로서, 64 바이트 캐시 라인)이 메모리(12)로부터 인출되고 복호화될 때 연산 코드를 포함할 수 있다. 따라서, 디코더(40)는 디코더(40)가 플레인텍스트 데이터를 디코딩할 때 예로서 x86 명령어 세트 등과 같은 명령어 세트의 연산 코드를 인식할 수 있다. 디코더(40)는 비암호화 데이터 내의 명령어의 존재를 지시할 수 있고, 로직(28)은 디코더(40)로부터의 입력을 이용하여, 비암호화 데이터가 변조되지 않았는지, 복수의 비트의 랜덤 분포를 포함하지 않는지, 기타 등등인지 또는 이들의 조합인지를 판단할 수 있다.
게다가, 도시된 메모리 제어기(22)는 비암호화 데이터가 암호화되기 전에 비암호화 데이터에 인식 가능 비랜덤 패턴을 추가하기 위해 로직(28)에 의해 구현될 수 있는 패턴 가산기(42)를 포함한다. 패턴은 예로서 복수의 비트의 랜덤 분포를 최소화하도록 추가될 수 있다. 예로서, 패턴 가산기(40)는 비랜덤 패턴을 생성하고/하거나 암호화기(24)에 대한 플레인텍스트 데이터 입력으로 사용될 수 있는 비암호화 데이터에 추가하기 위해 로직(28)에 의해 구현될 수 있다. 패턴 가산기(40)는 (예로서, 32 비트 이상 등인) 무결성의 n 비트를 비암호화 데이터의 끝, 비암호화 데이터의 중간 부분 등 또는 이들의 조합에 추가할 수 있다. 추가되는 패턴은 예로서 모두 0 패턴, 모든 1 패턴, 0과 1의 교대 비트 패턴 등 또는 이들의 조합을 포함할 수 있다.
게다가, 패턴 가산기(40)는 로직(28)에 알려진 고정 값(예로서, 고정 패턴)을 포함하는 대체 패턴을 추가할 수 있다. 고정 값은 예로서 본래의 데이터를 대체하기 위해 메모리 위치와 함께 추가될 수 있다. 대체 패턴의 폭은 대체되는 본래의 데이터의 폭과 동일하거나 상이할(더 크거나, 작거나, 기타 등등일) 수 있다. 대체 패턴은 추가적인 애드혹 메모리 탐색이 고정 패턴 및 메모리 위치로 본래의 대체된 데이터를 획득하게 할 수 있다. 따라서, 패턴 가산기(40)는 비암호화 데이터의 적어도 일부를 대체할 수 있으며, 이는 개별 메모리 위치에 저장되고/되거나, 본래의 대체된 데이터를 복구하기 위해 추가 메모리 판독을 이용하여 검색될 수 있다. 패턴 가산기(40)는 또한 본래의 대체된 데이터가 메모리(12)에 저장되는 장소를 지정하는 교체된 데이터에 대한 위치 정보를 추가할 수 있다. 따라서, ICV는 필요하지 않고/않거나 저장되지 않을 수 있다.
예로서, 로직(28)은 캐시 라인 데이터가 암호화 전에 휴리스틱 규칙(예로서, 패턴 테스트 등)을 통과하지 못할 것으로 판단하고, 캐시 라인 데이터의 적어도 일부를 고정 패턴 및 메모리 위치로 대체할 수 있다. 로직(28)은 그에 응답하여 본래의 캐시 라인으로부터의 교체된 본래의 데이터가 추가된 메모리 위치에 저장되게 할 수 있다. 메모리 탐색에 응답하여 그리고 어떠한 변조도 발생하지 않은 경우에, 로직(28)은 추가된 고정 패턴을 인식하고, (예로서, 표 인덱스 탐색 등을 통해) 추가된 메모리 위치를 이용하여 메모리(12)로부터의 제2 판독이 고정 패턴 및 메모리 위치에 의해 본래의 대체된 데이터를 복구하게 할 수 있다. 따라서, 로직(28)은 비암호화 데이터가 변조되지 않은 것으로 판단하고, 본래의 대체된 데이터를 복구할 수 있다. 이와 달리, 로직(28)은 추가된 고정 패턴이 인식될 수 없거나 추가된 메모리 위치가 판독될 수 없거나 기타 등등이거나 이들의 조합일 때 비암호화 데이터가 변조된 것으로 판단할 수 있다.
따라서, (예로서, 패리티보다 많거나 에러 코드보다 적거나 기타 등등인) 상당한 수의 비트를 추가하여 비암호화 데이터를 복수의 비트의 랜덤 분포로부터 복수의 비트의 비랜덤 분포로 강제할 수 있고, 적이 복수의 비트의 비랜덤 분포를 포함하기 위해 대응하는 플레인텍스트 데이터가 생성될 수 있는 방식으로 사이퍼텍스트 데이터를 변경할 수 있는 확률을 최소화할 수 있다. 예로서, 사이퍼텍스트 데이터의 적어도 1 비트 변경은 (예로서, 추가된 패턴을 포함하는) 대응하는 플레인텍스트 데이터의 복수의 비트의 랜덤 분포를 유발할 수 있으며, 로직(28)은 비암호화 데이터가 (예로서, 추가된 패턴, 전체 데이터 블록 등에 대한) 복수의 비트의 랜덤 분포를 포함할 때 비암호화 데이터가 변조되지 않은 것으로 판단할 수 있다. 게다가, 로직(28)은 예로서 하나 이상의 인식 가능 패턴을 구현함으로써 무결성 값을 필요로 하지 않고서 비암호화 데이터 내의 패턴의 존재 및/또는 부재에만 기초하여 판단을 행할 수 있다.
도 1 또는 도 2에는 도시되지 않았지만, 장치(10) 및/또는 장치(30)는 프로세서(14)를 갖는 칩 상에 다른 요소를 포함할 수 있다. 예로서, 프로세서(14)는 메모리 제어기(22)와 통합된 입출력(IO) 제어 로직을 포함할 수 있다. 게다가, 장치(10) 및/또는 장치(30)는 호스트 디바이스로서 기능하는, 때때로 칩셋의 사우스브리지로 지칭되는 IO 모듈을 포함할 수 있으며, 예로서 전면/배면 이미지 센서(예로서, 이차원 카메라, 삼차원 카메라 등), 마이크, 디스플레이(예로서, 스크린), 모션 센서(예로서, 가속도계, 자이로스코프 등), 대용량 저장소(예로서, 하드 디스크 드라이브/HDD, 광 디스크, 플래시 메모리 등), 다양한 통신 기능(예로서, 셀룰러 전화, WiFi, WiMax 글로벌 포지셔닝 시스템(GPS), 확산 스펙트럼(예로서, 900 MHz), 다른 무선 주파수(RF) 등)을 제공하기 위한 네트워크 인터페이스와 통신할 수 있다. 프로세서(14) 및 IO 모듈은 예로서 시스템 온 칩(SoC)으로서 구현될 수 있다. 게다가, 예가 예시의 목적을 위해 개별 컴포넌트를 도시했지만, 장치(10) 및/또는 장치(30)의 하나 이상의 컴포넌트는 결합될 수 있고, 동일 및/또는 상이한 물리 및/또는 가상 위치에 존재할 수 있고, 기타 등등 또는 이들의 조합일 수 있다. 예로서, 로직(28)은 그의 대응하는 기능을 실행하기 위해 메모리 제어기(22)의 하나 이상의 컴포넌트를 포함할 수 있으며, 이는 코어(16, 18), 메모리(12) 등 또는 이들의 조합과 동일 또는 상이한 위치에 존재할 수 있다.
이제, 도 3을 참조하면, 일 실시예에 따른 메모리 무결성을 유지하는 방법(44)이 도시된다. 방법(44)은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그래밍 가능 ROM(PROM), 펌웨어, 플래시 메모리 등과 같은 기계 또는 컴퓨터 판독 가능 저장 매체 내에, 예로서 프로그래밍 가능 로직 어레이(PLA), 필드 프로그래머블 게이트 어레이(FPGA), 복합 프로그래밍 가능 로직 디바이스(CPLD)와 같은 구성 가능 로직 내에, 예로서 주문형 집적 회로(ASIC), 상보형 금속 산화물 반도체(CMOS) 또는 트랜지스터-트랜지스터 로직(TTL) 기술과 같은 회로 기술을 이용하는 고정 기능 하드웨어 로직 내에 또는 이들의 임의 조합 내에 저장되는 로직 명령어의 세트로서 장치(10) 및/또는 장치(30)(도 1 및 2)와 같은 장치에서 구현될 수 있다. 예로서, 방법(44)에 도시된 연산을 실행하기 위한 컴퓨터 프로그램 코드는 자바, 스몰토크, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 통상적인 절차 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의 조합으로 작성될 수 있다.
도시된 처리 블록(46)은 복수의 비트를 포함하는 비암호화 데이터를 식별하는 단계를 제공한다. 비암호화 데이터는 하나 이상의 연산 코드, 피연산자, 어드레스 등 또는 이들의 조합을 갖는 명령어 세트를 포함하는 명령어 데이터와 같은 임의 타입의 데이터를 포함할 수 있다. 게다가, 비암호화 데이터는 프로그램, 운영 체제, 애플리케이션, 가상 기계 등 또는 이들의 조합을 위한 프로그램 코드를 포함하는 프로그램 데이터를 포함할 수 있다. 비암호화 데이터는 예로서 클리어텍스트 데이터, 플레인텍스트 데이터 등 또는 이들의 조합을 포함할 수 있다. 게다가, 비암호화 데이터의 복수의 비트는 2진 코드, 8진 코드, 16진 코드, 심벌 코드, 10진 코드, 영숫자 코드, 상위 레벨 프로그래밍 언어 코드 등 또는 이들의 조합과 같은 임의의 코드 표현의 하나 이상의 비트(예로서, 바이트)를 포함할 수 있다.
블록 48은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행하는 단계를 제공한다. 예로서, 복수의 비트는 패턴, 랜덤 분포 등 또는 이들의 조합을 포함할 수 있다. 판단은 예로서 데이터의 타입에 대응하는 임의의 계산 및/또는 검색된 정보에 기초할 수 있다. 예로서, 판단은 특정 빈도로 나타나는 통상적인 패턴을 판단하기 위한 소정 양의 메모리에 걸친 프로그램의 검사, 명령어 세트의 검색 등 또는 이들의 조합에 기초할 수 있다. 판단은 예로서 임계치를 구현함으로써 행해질 수 있다. 예로서, 판단은 소정 빈도로 비암호화 데이터 내에 나타나는 복수의 비트 중의 비트 시퀀스를 식별하고, 비트 시퀀스가 비암호화 데이터 내에 나타나는 인스턴스의 수를 카운트하고, 인스턴스의 수가 임계치를 충족시킬 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단하고, 기타 등등 또는 이들의 조합을 행함으로써 수행될 수 있다. 게다가, 판단은 예로서 확률 밀도 함수를 구현함으로써 수행될 수 있다. 게다가, 판단은 예로서 비암호화 데이터를 디코딩하여 명령어(예로서, 연산 코드 등)를 인식함으로써 수행될 수 있다.
도시된 블록 50은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함할 때 무결성 액션을 구현하는 단계를 제공한다. 무결성 액션은 예로서 비암호화 데이터에 대한 액세스를 방지하는 것, 통지를 발행하는 것, 교정 액션을 취하는 것, 무결성 값을 생성하는 것, 무결성 값을 사용하는 것, 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하는 것, 물리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하는 것, 비랜덤 패턴을 비암호화 데이터에 추가하는 것 등 또는 이들의 조합을 포함할 수 있다. 방법(44)은 비암호화 데이터가 메모리에 저장되기 전에, 메모리로부터 인출된 후에, 기타 등등 또는 이들의 조합 시에 비암호화 데이터를 만났는지를 평가할 수 있다. 평가는 하나 상의 무결성 액션의 구현을 촉진할 수 있다.
따라서, 예로서, 블록 52에서, 비암호화 데이터가 암호화되고 저장되어야 하는지가 판단될 수 있다. 따라서, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단은 비암호화 데이터가 암호화되고 메모리에 저장되기 전에 수행될 수 있다. 비암호화 데이터가 암호화되고 저장되어야 하는 경우, 비암호화 데이터는 예로서 비변조 데이터를 포함할 수 있다. 따라서, 도시된 처리 블록 54는 비암호화 데이터와 관련된 무결성 값을 생성하고, 비암호화 데이터는 처리 블록 56에서 관련 무결성 값과 함께 저장된다.
비암호화 데이터가 암호화 및 저장되지 않을 경우, 블록 58에서, 비암호화 데이터가 저장소로부터 인출되고 복호화될지에 관한 판단이 행해질 수 있다. 따라서, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단은 비암호화 데이터를 생성하기 위한 메모리로부터의 암호화 데이터의 인출 및 암호화 데이터의 복호화 후에 행해질 수 있다. 비암호화 데이터가 저장소로부터 인출되고 복호화되는 경우, 도시된 처리 블록 60은 비암호화 데이터가 변조된 것으로 판단하며, 처리 블록 62에서 비암호화 데이터에 대한 액세스가 방지된다. 비암호화 데이터가 저장소로부터 인출 및 복호화되지 않는 경우, 비암호화 데이터는 메모리 트랜잭션에 포함되지 않을 수 있으며, 따라서 프로세스는 예로서 다른 데이터 블록을 검사하거나, 다른 데이터 블록을 만나기를 기다리거나, 기타 등등 또는 이들의 조합을 수행함으로써 종료될 수 있다.
도시된 블록 64는 비암호화 데이터가 비트의 랜덤 분포를 포함하지 않을 때 비암호화 데이터가 암호화 및 저장되어야 하는지에 관한 판단을 수행하는 단계를 제공한다. 비암호화 데이터는 예로서 비변조 데이터를 포함할 수 있다. 따라서, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단은 비암호화 데이터가 암호화되고 메모리에 저장하기 전에 수행될 수 있다. 비암호화 데이터가 암호화 및 저장되어야 하는 경우, 비암호화 데이터는 처리 블록 56에서 저장된다.
비암호화 데이터가 암호화 및 저장되지 않는 경우, 블록 66에서, 비암호화 데이터가 저장소로부터 인출되고 복호화될지에 관한 판단이 수행될 수 있다. 따라서, 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단은 비암호화 데이터를 생성하기 위한 메모리로부터의 암호화 데이터의 인출 및 데이터의 복호화 후에 수행될 수 있다. 비암호화 데이터가 저장소로부터 인출되고 저장되는 경우, 도시된 처리 블록 68은 비암호화 데이터가 변조되지 않은 것으로(예로서, 유효한 것으로) 판단하며, 처리 블록 70에서, 예로서 비암호화 데이터를 캐시로 전송함으로써 비암호화 데이터에 대한 액세스가 제공된다.
비암호화 데이터가 저장소로부터 인출 및 복호화되지 않는 경우, 비암호화 데이터는 메모리 트랜잭션에 포함되지 않을 수 있고, 따라서 프로세스는 예로서 다른 데이터 블록을 검사하거나, 다른 데이터 블록을 만나기를 기다리거나, 기타 등등 또는 이들의 조합을 수행함으로써 종료될 수 있다. 참고로, 유효 비암호화 데이터는 임의의 시간에, 예로서 처리 블록 56에서 무결성 액션을 겪을 수 있다. 예로서, 무결성 값이 유효 비암호화 데이터에 대해 생성될 수 있고, 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스가 유효 비암호화 데이터에 대해 스크림블링될 수 있고, 물리 어드레스가 유효 비암호화 데이터에 대해 블록 사이퍼에 대한 트위크로서 사용될 수 있고, 비랜덤 패턴이 유효 비암호화 데이터에 추가될 수 있고, 기타 등등 또는 이들의 조합일 수 있다.
게다가, 블록 48에서 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 것으로 판단되는 경우, 블록 72에서, 추가 판단(예로서, 제2 판단 등)이 블록 48에서 수행되었는지에 관한 판단이 수행될 수 있다. 예로서, 블록 48에서의 판단이 비암호화 데이터를 생성하기 위한 메모리로부터의 비암호화 데이터의 인출 및 데이터의 복호화 후에 행해진 추가 판단인 경우(예로서, 예), 처리 블록 74에서, (존재할 경우) 비암호화 데이터와 관련된 무결성 값이 저장소로부터 인출된다. 무결성 값이 이용 가능하지 않는 경우, 비암호화 데이터는 추가 분석(예로서, 기록 등)을 위해 플래그 첨부 및 전송될 수 있거나, 변조된 것으로 간주될 수 있거나, 캐시 내에 배치되지 않을 수 있거나, 기타 등등 또는 이들의 조합일 수 있다.
무결성 값은 블록 76에서 비암호화 데이터가 변조(예로서, 무효 등)되었는지를 판단하는 데 사용될 수 있다. 무결성 값은 예로서 ICV, MAC 등 또는 이들의 조합을 포함할 수 있다. 따라서, 블록 76에서 무결성 코드를 이용하여 비암호화 데이터가 유효한 것으로 판단되는 경우에 처리 블록 70에서 비암호화 데이터에 대한 액세스가 제공된다. 블록 76에서 무결성 코드를 이용하여 비암호화 데이터가 변조된 것으로 판단되는 경우, 처리 블록 62에서 비암호화 데이터에 대한 액세스가 방지된다.
도 4는 메모리 무결성을 유지하는 다른 방법(80)을 나타낸다. 방법(80)은 RAM, ROM, PROM, 펌웨어, 플래시 메모리 등과 같은 기계 또는 컴퓨터 판독 가능 저장 매체 내에, 예로서 PLA, FPGA, CPLD와 같은 구성 가능 로직 내에, 예로서 ASIC, CMOS 또는 TTL 기술과 같은 회로 기술을 이용하는 고정 기능 하드웨어 로직 내에 또는 이들의 임의 조합 내에 저장되는 로직 명령어의 세트로서 장치(10) 및 장치(30)(도 1 및 2)와 같은 장치에서 구현될 수 있다. 예로서, 방법(80)에 도시된 연산을 실행하기 위한 컴퓨터 프로그램 코드는 자바, 스몰토크, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 통상적인 절차 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의 조합으로 작성될 수 있다. 게다가, 방법(44)의 하나 이상의 양태는 방법(80)의 하나 이상의 양태와 결합될 수 있다.
도시된 처리 블록 82는 비암호화 데이터가 암호화되기 전에 인식 가능 패턴을 비암호화 데이터에 추가하는 단계를 제공한다. 패턴은 예로서 복수의 비트의 랜덤 분포를 최소화하도록 추가될 수 있다. 처리 블록 82는 예로서 비랜덤 패턴을 생성하고/하거나, 암호화기에 대한 플레인텍스트 데이터 입력으로 사용될 수 있는 비암호화 데이터의 임의 위치에 추가할 수 있다. 패턴은 예로서 모두 0 패턴, 모두 1 패턴, 0과 1의 교대 비트 패턴 등 또는 이들의 조합을 포함할 수 있다. 게다가, 패턴은 본래의 데이터의 적어도 일부를 대체하기 위해 메모리 위치와 함께 추가되는 고정 값(예로서, 고정 패턴)을 포함할 수 있는 대체 패턴을 포함할 수 있다.
블록 84에서, 암호화기가 확장 가능 블록 사이퍼를 포함하는지에 대한 판단이 행해질 수 있다. 포함하지 않는 경우, 처리 블록 86은 확산기 및 역확산기를 통해 확산을 최대화할 수 있다. 예로서, 처리 블록 86은 블록 사이퍼가 비암호화 데이터에 걸치는 사이퍼텍스트 데이터의 적어도 1 비트 변경의 실질적 확산을 보장하도록 전체 캐시 라인 폭을 커버하기에 충분할 만큼 넓지 않을 때 AES-PCBC를 구현할 수 있다. 암호화기가 확장 가능 블록 사이퍼를 포함하는 경우, 처리 블록 88은 적어도 1 비트 변경의 비암호화 데이터에 걸치는 확산을 보장하도록 확장 가능 블록 사이퍼의 블록 크기를 설정함으로써 확산을 최대화할 수 있으며, 블록 크기는 메모리가 액세스될 입도와 동일하게 설정될 수 있다. 예로서, 처리 블록 88은 메모리가 64 바이트 블록 단위로 액세스될 때 스리피시의 블록 크기를 64 바이트와 동일하게 설정할 수 있다.
도시된 처리 블록 90은 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하고, 물리 메모리 어드레스의 스크램블링을 반전시키는 단계를 제공한다. 처리 블록 90은 예로서 순차 입력 로직 어드레스를 비순차 물리 어드레스로 맵핑할 수 있다. 따라서, 적은 그렇지 않을 경우에 메모리 내의 랜덤 위치에 걸쳐 암호화 데이터를 분배함으로써 입수할 수 있는 비암호화 데이터에 대한 정보를 획득하지 못할 수 있다. 도시된 처리 블록 92는 (예로서, 스크램블링된, 언스크램블링된, 기타 등등인) 물리 메모리 어드레스를 트위크로서 이용하고, 트위크에 기초하여 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 수행한다. 트위크는 예로서 비암호화 데이터를 물리 메모리 어드레스와 결합할 수 있다. 따라서, 메모리 내의 하나의 위치로부터 메모리 내의 다른 위치로의 사이퍼텍스트 데이터 스와핑은 대응하는 비암호화 데이터가 변조되었다는 판단을 가능하게 할 것이다. 도시된 처리 블록 94는 확률 밀도 함수, 임계치 및 명령어 디코더 중 하나 이상을 구현하여, 전술한 바와 같이 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 수행하는 단계를 제공한다.
추가 노트 및 예
예 1은 메모리, 및 복수의 비트를 포함하는 비암호화 데이터를 식별하는 로직을 갖는 장치를 포함할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장된다. 로직은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행할 수 있다. 로직은 또한 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 무결성 액션을 구현할 수 있다.
예 1의 장치는 메모리에 액세스하고, 비암호화 데이터와 관련되는 명령어를 실행하기 위한 프로세서를 포함할 수 있다. 예 1의 장치는 비암호화 데이터를 암호화하여 사이퍼텍스트를 생성하는 암호화기를 포함할 수 있다. 예 1의 장치는 또한 사이퍼텍스트를 복호화하여 비암호화 데이터를 생성하는 복호화기를 포함할 수 있다. 예 1의 장치는 비암호화 데이터를 저장하는 캐시를 포함할 수 있다. 예 1의 로직은 프로세서, 암호화기 및/또는 복호화기를 구현할 수 있다.
예 1의 로직은 복수의 비트의 랜덤 분포를 최소화하기 위해 비암호화 데이터가 암호화되기 전에 비암호화 데이터에 인식 가능 패턴을 추가하는 패턴 가산기를 구현할 수 있다. 예 1의 로직은 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하도록 블록 사이퍼의 블록 크기를 설정할 수 있으며, 블록 크기는 메모리가 액세스되는 입도와 동일하게 설정될 수 있다. 예 1의 로직은 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스될 수 있는 입도보다 작을 수 있을 때 암호화하는 확산기를 구현할 수 있다. 예 1의 로직은 또한 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스될 수 있는 입도보다 작을 수 있을 때 복호화하는 역확산기를 구현할 수 있다.
예 1의 로직은 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하는 어드레스 스크램블러를 구현할 수 있다. 예 1의 로직은 물리 메모리 어드레스의 스크램블을 반전시키기 위한 어드레스 역스크램블러를 구현할 수 있다. 예 1의 로직은 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하여 비암호화 데이터를 물리 메모리 어드레스와 결합하기 위한 트위크 함수를 구현할 수 있다. 예 1의 로직은 또한 트위크에 기초하여 판단을 행할 수 있다.
예 1의 로직은 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 판단을 행할 수 있다. 예 1의 로직은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터가 변조된 것으로 판단할 수 있다. 예 1의 로직은 또한 비암호화 데이터가 변조된 경우 비암호화 데이터에 대한 액세스를 방지할 수 있다. 예 1의 로직은 비암호화 데이터가 암호화되고 메모리에 저장되기 전에 판단을 행할 수 있다. 예 1의 로직은 또한 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터와 관련된 무결성 값을 생성할 수 있으며, 무결성 값은 메모리에 저장될 수 있다.
예 1의 로직은 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 제2 판단을 행할 수 있다. 예 1의 로직은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 메모리로부터 무결성 값을 인출할 수 있다. 예 1의 로직은 또한 무결성 값에 기초하여 비암호화 데이터가 변조되었는지를 판단할 수 있다. 예 1의 로직은 비암호화 데이터가 변조된 경우 비암호화 데이터에 대한 액세스를 방지할 수 있다.
예 1의 로직은 판단을 행하기 위해 확률 밀도 함수, 임계치 및 명령어 디코더 중 하나 이상을 구현할 수 있다. 예 1의 로직은 소정 빈도로 비암호화 데이터 내에 나타나는 복수의 비트 중의 비트 시퀀스를 식별할 수 있다. 예 1의 로직은 비트 시퀀스가 비암호화 데이터 내에 나타나는 인스턴스의 수를 카운트할 수 있다. 예 1의 로직은 또한 인스턴스의 수가 임계치를 충족시킬 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단할 수 있다. 예 1의 로직은 하나 이상의 명령어를 인식하기 위해 비암호화 데이터를 디코딩하는 명령어 디코더를 구현할 수 있다.
예 2는 복수의 비트를 포함하는 비암호화 데이터를 식별하기 위한, 적어도 부분적으로 하드웨어를 포함하는 로직을 갖는 메모리 제어기를 포함할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장될 수 있다. 로직은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행할 수 있다. 로직은 또한 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 무결성 액션을 구현할 수 있다. 예 2의 로직은 예 1의 로직의 하나 이상의 기능을 더 포함할 수 있다. 예로서, 로직은 복수의 비트의 랜덤 분포를 최소화하기 위해 비암호화 데이터가 암호화되기 전에 비암호화 데이터에 인식 가능 패턴을 추가하는 패턴 가산기를 구현할 수 있으며, 인식 가능 패턴은 고정 값 및 메모리 위치를 포함하는 대체 패턴을 포함할 수 있다.
예 3은 프로세서에 의해 실행될 경우에 컴퓨터로 하여금 복수의 비트를 포함하는 비암호화 데이터를 식별하게 하는 명령어 세트를 갖는 비일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장될 수 있다. 명령어는 실행될 경우에 또한 컴퓨터로 하여금 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행하게 할 수 있다. 게다가, 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 무결성 액션을 구현하게 할 수 있다.
게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 복수의 비트의 랜덤 분포를 최소화하기 위해 비암호화 데이터가 암호화되기 전에 비암호화 데이터에 인식 가능 패턴을 추가하게 할 수 있으며, 인식 가능 패턴은 고정 값 및 메모리 위치를 포함하는 대체 패턴을 포함할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하도록 블록 사이퍼의 블록 크기를 설정하게 할 수 있으며, 블록 크기는 메모리가 액세스되는 입도와 동일하게 설정될 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 확산기 및 역확산기를 통해 확산을 최대화하게 할 수 있다. 예로서, 확산기는 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스되는 입도보다 작을 때 암호화하도록 구현될 수 있으며, 역확산기는 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스되는 입도보다 작을 때 복호화하도록 구현될 수 있다.
게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 물리 메모리 어드레스의 스크램블을 반전시키게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하여 비암호화 데이터를 물리 메모리 어드레스와 결합하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 트위크에 기초하여 판단을 행하게 할 수 있다.
게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 암호화되고 메모리에 저장되기 전에 판단을 행하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터가 변조된 것으로 판단하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 변조된 경우 비암호화 데이터에 대한 액세스를 방지하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 암호화되고 메모리에 저장되기 전에 판단을 행하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터와 관련된 무결성 값을 생성하게 할 수 있으며, 무결성 값은 메모리에 저장될 수 있다.
게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 제2 판단을 행하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 메모리로부터 무결성 값을 인출하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비암호화 데이터가 변조된 경우 비암호화 데이터에 대한 액세스를 방지하게 할 수 있다.
게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 판단을 행하기 위해 확률 밀도 함수, 임계치 및 명령어 디코더 중 하나 이상을 구현하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 소정 빈도로 비암호화 데이터 내에 나타나는 복수의 비트 중의 비트 시퀀스를 식별하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 비트 시퀀스가 비암호화 데이터 내에 나타나는 인스턴스의 수를 카운트하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 인스턴스의 수가 임계치를 충족시킬 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단하게 할 수 있다. 게다가, 예 3의 명령어는 실행될 경우에 컴퓨터로 하여금 하나 이상의 명령어를 인식하기 위해 비암호화 데이터를 디코딩하는 명령어 디코더를 구현하게 할 수 있다.
예 4는 복수의 비트를 갖는 비암호화 데이터를 식별하는 단계를 포함하는 컴퓨터 구현 방법을 포함할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장된다. 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행하는 단계도 제공할 수 있다. 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 무결성 액션을 구현하는 단계를 더 포함할 수 있다.
게다가, 예 4의 컴퓨터 구현 방법은 복수의 비트의 랜덤 분포를 최소화하기 위해 비암호화 데이터가 암호화되기 전에 비암호화 데이터에 인식 가능 패턴을 추가하는 단계를 포함할 수 있으며, 인식 가능 패턴은 고정 값 및 메모리 위치를 포함하는 대체 패턴을 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하도록 블록 사이퍼의 블록 크기를 설정하는 단계를 포함할 수 있으며, 블록 크기는 메모리가 액세스되는 입도와 동일하게 설정된다. 게다가, 예 4의 컴퓨터 구현 방법은 확산기 및 역확산기를 통해 확산을 최대화하는 단계를 포함할 수 있다. 예로서, 확산기는 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스되는 입도보다 작을 때 암호화하도록 구현될 수 있으며, 역확산기는 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스되는 입도보다 작을 때 복호화하도록 구현될 수 있다.
게다가, 예 4의 컴퓨터 구현 방법은 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 물리 메모리 어드레스의 스크램블을 반전시키는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하여 비암호화 데이터를 물리 메모리 어드레스와 결합하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 트위크에 기초하여 판단을 행하는 단계를 포함할 수 있다.
게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 판단을 행하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터가 변조된 것으로 판단하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터가 변조된 경우 비암호화 데이터에 대한 액세스를 방지하는 단계를 포함할 수 있다.
게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터가 암호화되고 메모리에 저장되기 전에 판단을 행하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터와 관련된 무결성 값을 생성하는 단계를 포함할 수 있으며, 무결성 값은 메모리에 저장된다. 게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 제2 판단을 행하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 메모리로부터 무결성 값을 인출하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 무결성 값에 기초하여 비암호화 데이터가 변조되었는지를 판단하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 비암호화 데이터가 변조된 경우 비암호화 데이터에 대한 액세스를 방지하는 단계를 포함할 수 있다.
게다가, 예 4의 컴퓨터 구현 방법은 판단을 행하기 위해 확률 밀도 함수, 임계치 및 명령어 디코더 중 하나 이상을 구현하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 소정 빈도로 비암호화 데이터 내에 나타나는 복수의 비트 중의 비트 시퀀스를 식별하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 비트 시퀀스가 비암호화 데이터 내에 나타나는 인스턴스의 수를 카운트하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 인스턴스의 수가 임계치를 충족시킬 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단하는 단계를 포함할 수 있다. 게다가, 예 4의 컴퓨터 구현 방법은 하나 이상의 명령어를 인식하기 위해 비암호화 데이터를 디코딩하는 명령어 디코더를 구현하는 단계를 포함할 수 있다.
예 5는 복수의 비트를 갖는 비암호화 데이터를 식별하기 위한 수단을 포함하는 컴퓨터 구현 방법을 포함할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장된다. 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행하기 위한 수단도 제공할 수 있다. 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 무결성 액션을 구현하기 위한 수단을 더 포함할 수 있다.
게다가, 예 5의 컴퓨터 구현 방법은 복수의 비트의 랜덤 분포를 최소화하기 위해 비암호화 데이터가 암호화되기 전에 비암호화 데이터에 인식 가능 패턴을 추가하는 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하도록 블록 사이퍼의 블록 크기를 설정하기 위한 수단을 포함할 수 있으며, 블록 크기는 메모리가 액세스되는 입도와 동일하게 설정된다. 게다가, 예 5의 컴퓨터 구현 방법은 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스되는 입도보다 작을 때 암호화하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 적어도 1 비트 변경의 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 메모리가 액세스되는 입도보다 작을 때 복호화하기 위한 수단을 포함할 수 있다.
게다가, 예 5의 컴퓨터 구현 방법은 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블링하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 물리 메모리 어드레스의 스크램블을 반전시키기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하여 비암호화 데이터를 물리 메모리 어드레스와 결합하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 트위크에 기초하여 판단을 행하기 위한 수단을 포함할 수 있다.
게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 판단을 행하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함할 때 비암호화 데이터가 변조된 것으로 판단하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터가 변조된 때 비암호화 데이터에 대한 액세스를 방지하기 위한 수단을 포함할 수 있다.
게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터가 암호화되고 메모리에 저장되기 전에 판단을 행하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 비암호화 데이터와 관련된 무결성 값을 생성하기 위한 수단을 포함할 수 있으며, 무결성 값은 메모리에 저장된다. 게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터를 생성하기 위한 메모리로부터의 데이터의 인출 및 데이터의 복호화 후에 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 제2 판단을 행하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 메모리로부터 무결성 값을 인출하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 무결성 값에 기초하여 비암호화 데이터가 변조되었는지를 판단하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 비암호화 데이터가 변조된 때 비암호화 데이터에 대한 액세스를 방지하기 위한 수단을 포함할 수 있다.
게다가, 예 5의 컴퓨터 구현 방법은 판단을 행하기 위해 확률 밀도 함수, 임계치 및 명령어 디코더 중 하나 이상을 구현하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 소정 빈도로 비암호화 데이터 내에 나타나는 복수의 비트 중의 비트 시퀀스를 식별하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 비트 시퀀스가 비암호화 데이터 내에 나타나는 인스턴스의 수를 카운트하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 인스턴스의 수가 임계치를 충족시킬 때 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단하기 위한 수단을 포함할 수 있다. 게다가, 예 5의 컴퓨터 구현 방법은 하나 이상의 명령어를 인식하기 위해 비암호화 데이터를 디코딩하기 위한 수단을 포함할 수 있다.
예 6은 예 5의 방법을 수행하기 위한 수단을 포함하는 장치를 포함할 수 있다. 예로서, 예 6의 장치는 복수의 비트를 갖는 비암호화 데이터를 식별하기 위한 수단을 포함할 수 있으며, 비암호화 데이터는 암호화되고 메모리에 저장된다. 장치는 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는지에 관한 판단을 행하기 위한 수단도 제공할 수 있다. 장치는 비암호화 데이터가 복수의 비트의 랜덤 분포를 포함하는 경우 무결성 액션을 구현하기 위한 수단을 더 포함할 수 있다.
따라서, 본 명세서에서 설명되는 기술은 결정론적이 아닌 인라인 메모리 무결성 검사를 가능하게 할 수 있다. 게다가, 본 명세서에서 설명되는 기술은 메모리에 대해 스케일링될 수 있는데, 이는 예로서 메모리 내에 실질적으로 더 적은 무결성 값이 저장될 수 있기 때문이다. 따라서, 프로그램, 애플리케이션, 운영 체제, 명령어 등에 대해 실질적으로 더 적은 메모리 오버헤드 및/또는 비교적 더 많은 이용 가능 메모리가 존재할 수 있다. 게다가, 메모리 액세스(예로서, 무결성을 검증 및/또는 테스트할 때마다의 ICV에 대한 액세스)와 관련된 성능 저하가 최소화될 수 있다. 게다가, 장치는 에러 정정 코드에 대한 필요성을 최소화하기 위해 (예로서, 하나 이상의 비랜덤 패턴을 추가함으로써) 휴리스틱 규칙을 항상 통과할 수 있는 데이터를 사용하도록 강제될 수 있다. 게다가, 본 명세서에서 설명되는 기술은 변조된 데이터의 실행을 최소화할 수 있고, 메모리의 내용물의 악의적인 스와핑을 해결할 수 있고, 적이 이용할 수 없는 저장 위치에 기초하여 비암호화 데이터와 관련된 정보를 형성할 수 있고, 기타 등등 또는 이들의 조합을 행할 수 있다.
실시예는 모든 타입의 반도체 집적 회로("IC") 칩과 함께 사용될 수 있다. 이러한 IC 칩의 예는 프로세서, 제어기, 칩셋 컴포넌트, 프로그래밍 가능 로직 어레이(PLA), 메모리 칩, 네트워크 칩, 시스템 온 칩(SoC), SSD/NAND 제어기 ASIC 등을 포함하지만 이에 한정되지 않는다. 게다가, 도면 중 일부에서, 신호 도체 라인은 라인으로 표시된다. 일부는 더 구성 신호 경로를 지시하기 위해 상이하고, 다수의 구성 신호 경로를 지시하기 위해 번호 라벨을 갖고/갖거나, 주요 정보 흐름 방향을 지시하기 위해 하나 이상의 단부에 화살표를 가질 수 있다. 그러나, 이것은 한정적인 것으로 해석되지 않아야 한다. 오히려, 그러한 추가 상세는 회로의 더 쉬운 이해를 촉진하기 위해 하나 이상의 실시예와 관련하여 사용될 수 있다. 임의의 표시된 신호 라인은 추가 정보를 갖는지에 관계없이 다수의 방향으로 이동할 수 있고 임의의 적절한 타입의 신호 스킴을 이용하여 구현될 수 있는 하나 이상의 신호, 예로서 차동 쌍, 광섬유 라인 및/또는 단일 단부 라인을 이용하여 구현되는 디지털 또는 아날로그 라인을 실제로 포함할 수 있다.
예시적인 크기/모델/값/범위가 제공되었을 수 있지만, 실시예는 그에 한정되지 않는다. 제조 기술(예로서, 포토리소그래피)이 시간이 지남에 따라 성숙해짐에 따라, 더 작은 크기의 디바이스가 제조될 수 있을 것으로 예상된다. 게다가, IC 칩 및 다른 컴포넌트에 대한 공지된 전력/접지 접속은 예시 및 설명의 간소화를 위해 그리고 실시예의 소정 양태를 불명확하게 하지 않기 위해 도면 내에 도시될 수 있거나 도시되지 않을 수 있다. 또한, 배열을 블록도 형태로 도시하여, 실시예를 불명료하게 하지 않고, 또한 그러한 블록도 배열의 구현에 관한 상세가 실시예를 구현하는 플랫폼에 크게 의존한다는 사실을 고려할 수 있는데, 즉 그러한 상세는 이 분야의 기술자에 의해 충분히 이해되어야 한다. 실시예를 설명하기 위해 특정 상세(예로서, 회로)가 설명되는 경우, 실시예는 이러한 특정 상세 없이 또는 그의 변형을 이용하여 실시될 수 있다는 것이 이 분야의 기술자에게 명백해야 한다. 따라서, 본 설명은 한정이 아니라 예시적인 것으로 간주되어야 한다.
"결합"이라는 용어는 본 명세서에서 해당 컴포넌트 간의 직접적이거나 간접적인 임의 타입의 관계를 지칭하는 데 사용될 수 있으며, 전기, 기계, 유체, 광학, 전자기, 전기 기계 또는 다른 접속에 적용될 수 있다. 게다가, "제1", "제2" 등의 용어는 본 명세서에서 설명을 촉진하기 위해 사용될 뿐이며, 달리 지시되지 않는 한은 어떠한 특정한 시간적 또는 시간 순서적인 의미도 갖지 않는다.
이 분야의 기술자는 위의 설명으로부터 실시예의 광범위한 기술이 다양한 형태로 구현될 수 있다는 것을 알 것이다. 따라서, 실시예가 그의 특정 예와 관련하여 설명되었지만 실시예의 진정한 범위는 그에 한정되지 않는데, 이는 도면, 명세서 및 아래의 청구범위의 검토시에 기술자에게 다른 변경이 명백해질 것이기 때문이다.

Claims (18)

  1. 메모리와,
    상기 메모리에 액세스하고 복수의 비트를 포함하는 비암호화 데이터와 관련될 명령어를 실행하는 프로세서와,
    로직
    을 포함하고,
    상기 로직은,
    암호화되고 상기 메모리에 저장될 비암호화 데이터를 식별하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하고 변조(corrupt)된 경우, 상기 비암호화 데이터의 적어도 일부에 대한 액세스를 방지하고,
    적어도 1 비트 변경의 상기 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼(block cipher)의 블록 크기가 상기 메모리가 액세스되어야 하는 입도(granularity)보다 작을 때 암호화하는 확산기를 구현하고,
    적어도 상기 1 비트 변경의 상기 비암호화 데이터에 걸친 확산을 보장하기 위해 상기 블록 사이퍼의 상기 블록 크기가 상기 메모리가 액세스되어야 하는 입도보다 작을 때 복호화하는 역확산기를 구현하는
    장치.
  2. 제1항에 있어서,
    상기 장치는 상기 비암호화 데이터를 저장하는 캐시를 더 포함하는
    장치.
  3. 제1항에 있어서,
    상기 로직은 상기 복수의 비트의 랜덤 분포를 최소화하기 위해 상기 비암호화 데이터가 암호화되기 전에 상기 비암호화 데이터에 인식 가능 패턴을 추가하는 패턴 가산기를 구현하는
    장치.
  4. 제1항에 있어서,
    상기 로직은
    상기 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블하는 어드레스 스크램블러를 구현하고,
    상기 물리 메모리 어드레스의 스크램블을 반전시키는 어드레스 역스크램블러를 구현하는
    장치.
  5. 제1항에 있어서,
    상기 로직은
    물리 메모리 어드레스를 블록 사이퍼에 대한 트위크(a tweak)로서 사용하여 상기 비암호화 데이터를 상기 물리 메모리 어드레스와 결합하기 위한 트위크 함수(a tweak function)를 구현하고,
    상기 트위크 함수에 기초하여 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단을 행하는
    장치.
  6. 제1항에 있어서,
    상기 로직은
    상기 비암호화 데이터를 생성하기 위한 상기 메모리로부터의 데이터의 인출 및 상기 데이터의 복호화 후에, 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하는
    장치.
  7. 제1항에 있어서,
    상기 로직은
    상기 비암호화 데이터를 생성하기 위한 상기 메모리로부터의 데이터의 인출 및 상기 데이터의 복호화 후에 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단을 행하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하는 경우 상기 메모리로부터 무결성 값을 인출하고,
    상기 메모리로부터의 데이터의 인출 후, 상기 무결성 값에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하는
    장치.
  8. 제1항에 있어서,
    상기 로직은 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 상기 판단을 행하기 위해 확률 밀도 함수, 임계치 및 명령어 디코더 중 하나 이상을 구현하는
    장치.
  9. 제8항에 있어서,
    상기 로직은
    소정 빈도로 상기 비암호화 데이터 내에 나타나는 상기 복수의 비트 중의 비트 시퀀스를 식별하고,
    상기 비트 시퀀스가 상기 비암호화 데이터 내에 나타나는 인스턴스의 수(a number of instances)를 카운트하고,
    상기 인스턴스의 수가 상기 임계치를 충족시킬 때 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하지 않는 것으로 판단하는
    장치.
  10. 제8항에 있어서,
    상기 로직은 하나 이상의 명령어를 인식하기 위해 상기 비암호화 데이터를 디코딩하는 상기 명령어 디코더를 구현하는
    장치.
  11. 메모리 제어기로서,
    적어도 부분적으로 하드웨어에 구현되는 로직을 포함하되,
    상기 로직은
    암호화되고 메모리에 저장될 비암호화 데이터를 식별 - 상기 비암호화 데이터는 복수의 비트를 포함함 - 하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하고 변조된 경우, 상기 비암호화 데이터의 적어도 일부에 대한 액세스를 방지하고,
    적어도 1 비트 변경의 상기 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 상기 메모리가 액세스되어야 하는 입도보다 작을 때 암호화하는 확산기를 구현하고,
    적어도 상기 1 비트 변경의 상기 비암호화 데이터에 걸친 확산을 보장하기 위해 상기 블록 사이퍼의 상기 블록 크기가 상기 메모리가 액세스되어야 하는 입도보다 작을 때 복호화하는 역확산기를 구현하는
    메모리 제어기.
  12. 제11항에 있어서,
    상기 로직은
    상기 복수의 비트의 랜덤 분포를 최소화하기 위해 상기 비암호화 데이터가 암호화되기 전에 상기 비암호화 데이터에 인식 가능 패턴을 추가하는 것,
    상기 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블하고, 상기 물리 메모리 어드레스의 상기 스크램블을 반전시키는 것,
    상기 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하여 상기 비암호화 데이터를 상기 물리 메모리 어드레스와 결합하고, 상기 트위크에 기초하여 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 상기 판단을 행하는 것
    중 하나 이상을 수행하는
    메모리 제어기.
  13. 제11항에 있어서,
    상기 로직은
    상기 비암호화 데이터를 생성하기 위한 상기 메모리로부터의 데이터의 인출 및 상기 데이터의 복호화 후에, 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하는
    메모리 제어기.
  14. 제11항에 있어서,
    상기 로직은
    상기 비암호화 데이터를 생성하기 위한 상기 메모리로부터의 데이터의 인출 및 상기 데이터의 복호화 후에, 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단을 행하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하는 경우 상기 메모리로부터 무결성 값을 인출하고,
    상기 메모리로부터의 데이터의 인출 후, 상기 무결성 값에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하는
    메모리 제어기.
  15. 명령어의 세트를 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 명령어는 프로세서에 의해 실행되는 경우 컴퓨터로 하여금
    암호화되고 메모리에 저장될 비암호화 데이터를 식별 - 상기 비암호화 데이터는 복수의 비트를 포함함 - 하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하고 변조된 경우, 상기 비암호화 데이터의 적어도 일부에 대한 액세스를 방지하고,
    적어도 1 비트 변경의 상기 비암호화 데이터에 걸친 확산을 보장하기 위해 블록 사이퍼의 블록 크기가 상기 메모리가 액세스되어야 하는 입도보다 작을 때 암호화하는 확산기를 구현하고,
    적어도 상기 1 비트 변경의 상기 비암호화 데이터에 걸친 확산을 보장하기 위해 상기 블록 사이퍼의 상기 블록 크기가 상기 메모리가 액세스되어야 하는 입도보다 작을 때 복호화하는 역확산기를 구현하게 하는
    컴퓨터 판독 가능 저장 매체.
  16. 제15항에 있어서,
    상기 명령어는 실행되는 경우 상기 컴퓨터로 하여금
    상기 복수의 비트의 랜덤 분포를 최소화하기 위해 상기 비암호화 데이터가 암호화되기 전에 상기 비암호화 데이터에 인식 가능 패턴을 추가하는 것,
    상기 메모리에 액세스하는 데 사용되는 물리 메모리 어드레스를 스크램블하고, 상기 물리 메모리 어드레스의 상기 스크램블을 반전시키는 것,
    상기 물리 메모리 어드레스를 블록 사이퍼에 대한 트위크로서 사용하여 상기 비암호화 데이터를 상기 물리 메모리 어드레스와 결합하고, 상기 트위크에 기초하여 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 상기 판단을 행하는 것
    중 하나 이상을 수행하게 하는
    컴퓨터 판독 가능 저장 매체.
  17. 제15항에 있어서,
    상기 명령어는 실행되는 경우 상기 컴퓨터로 하여금
    상기 비암호화 데이터를 생성하기 위한 상기 메모리로부터의 데이터의 인출 및 상기 데이터의 복호화 후에, 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하게 하는
    컴퓨터 판독 가능 저장 매체.
  18. 제15항에 있어서,
    상기 명령어는 실행되는 경우 상기 컴퓨터로 하여금
    상기 비암호화 데이터를 생성하기 위한 상기 메모리로부터의 데이터의 인출 및 상기 데이터의 복호화 후에, 상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함한다는 판단을 행하고,
    상기 비암호화 데이터가 상기 복수의 비트의 랜덤 분포를 포함하는 경우 상기 메모리로부터 무결성 값을 인출하고,
    상기 메모리로부터의 데이터의 인출 후, 상기 무결성 값에 기초하여 상기 비암호화 데이터가 변조된 것으로 판단하게 하는
    컴퓨터 판독 가능 저장 매체.
KR1020187014765A 2013-12-05 2014-11-05 메모리 무결성 KR102113937B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/097,414 US9213653B2 (en) 2013-12-05 2013-12-05 Memory integrity
US14/097,414 2013-12-05
PCT/US2014/063986 WO2015112224A2 (en) 2013-12-05 2014-11-05 Memory integrity

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017845A Division KR101863143B1 (ko) 2013-12-05 2014-11-05 메모리 무결성

Publications (2)

Publication Number Publication Date
KR20180059954A KR20180059954A (ko) 2018-06-05
KR102113937B1 true KR102113937B1 (ko) 2020-05-21

Family

ID=53271308

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167017845A KR101863143B1 (ko) 2013-12-05 2014-11-05 메모리 무결성
KR1020187014765A KR102113937B1 (ko) 2013-12-05 2014-11-05 메모리 무결성

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167017845A KR101863143B1 (ko) 2013-12-05 2014-11-05 메모리 무결성

Country Status (5)

Country Link
US (2) US9213653B2 (ko)
EP (2) EP3077913B1 (ko)
KR (2) KR101863143B1 (ko)
CN (2) CN105706066B (ko)
WO (1) WO2015112224A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405920B1 (en) * 2014-05-21 2016-08-02 Amazon Technologies, Inc. Data integrity verification
US10192062B2 (en) * 2014-06-20 2019-01-29 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
US10169618B2 (en) 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US10691838B2 (en) 2014-06-20 2020-06-23 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
EP3040896A1 (en) * 2014-12-30 2016-07-06 Gemalto Sa Secure element
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
US10594491B2 (en) 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
US10075640B2 (en) * 2015-12-31 2018-09-11 Sony Corporation Motion compensation for image sensor with a block based analog-to-digital converter
KR102466412B1 (ko) 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10585809B2 (en) 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US20170316040A1 (en) * 2016-04-29 2017-11-02 Hewlett Packard Enterprise Attribute bit-state mapper
US10242230B1 (en) * 2016-07-29 2019-03-26 Microsoft Technology Licensing, Llc Preventing inference attacks by joining on confidential data value
US10691482B2 (en) 2016-08-11 2020-06-23 Intel Corporation Systems, methods, and apparatus for securing virtual machine control structures
US10303899B2 (en) 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US10810321B2 (en) * 2016-08-11 2020-10-20 Intel Corporation Secure public cloud
US10346318B2 (en) 2016-09-13 2019-07-09 Intel Corporation Multi-stage memory integrity method and apparatus
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
US10235304B2 (en) * 2016-10-01 2019-03-19 Intel Corporation Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US10423541B1 (en) * 2016-12-22 2019-09-24 Amazon Technologies, Inc. Using encryption within a computing system
US10599838B2 (en) * 2017-05-08 2020-03-24 Micron Technology, Inc. Crypto-ransomware compromise detection
US11171665B2 (en) 2017-09-11 2021-11-09 Nyriad Limited Dictionary-based data compression
US10769272B2 (en) 2017-09-29 2020-09-08 Intel Corporation Technology to protect virtual machines from malicious virtual machine managers
US10686605B2 (en) 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US10671737B2 (en) 2017-11-10 2020-06-02 Intel Corporation Cryptographic memory ownership table for secure public cloud
US11082432B2 (en) * 2017-12-05 2021-08-03 Intel Corporation Methods and apparatus to support reliable digital communications without integrity metadata
US10901917B1 (en) * 2018-01-26 2021-01-26 Amazon Technologies, Inc. Address scrambling for storage class memory
KR102510451B1 (ko) * 2018-05-09 2023-03-16 삼성전자주식회사 집적 회로 장치 및 집적 회로 장치의 동작 방법
US10922439B2 (en) * 2018-06-29 2021-02-16 Intel Corporation Technologies for verifying memory integrity across multiple memory regions
KR102231257B1 (ko) * 2018-07-18 2021-03-23 광주과학기술원 채굴 장치, 및 채굴 장치 동작 방법
US11520611B2 (en) 2018-08-20 2022-12-06 Intel Corporation Secure public cloud using extended paging and memory integrity
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
CN110309678B (zh) * 2019-06-28 2021-03-19 兆讯恒达科技股份有限公司 一种内存加扰的方法
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11436342B2 (en) 2019-12-26 2022-09-06 Intel Corporation TDX islands with self-contained scope enabling TDX KeyID scaling
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060080553A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Secure memory caching structures for data, integrity and version values
US20120297111A1 (en) * 2011-05-17 2012-11-22 Jonathan Hsu Non-Volatile Memory And Method With Improved Data Scrambling

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696823A (en) 1995-03-31 1997-12-09 Lucent Technologies Inc. High-bandwidth encryption system with low-bandwidth cryptographic modules
US6076097A (en) 1997-12-11 2000-06-13 At&T Corp. System and method for generating random numbers
EP1182777B1 (en) 1999-05-18 2003-10-01 Angel José Ferre Herrero Self-corrective randomizer-encryptor system and method
US6598166B1 (en) * 1999-08-18 2003-07-22 Sun Microsystems, Inc. Microprocessor in which logic changes during execution
US6543022B1 (en) 1999-11-24 2003-04-01 Intel Corporation Method and apparatus to encode digital signals
US6832316B1 (en) * 1999-12-22 2004-12-14 Intertrust Technologies, Corp. Systems and methods for protecting data secrecy and integrity
KR100525389B1 (ko) * 2001-01-17 2005-11-02 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치
WO2003030441A2 (en) * 2001-10-03 2003-04-10 Koninklijke Philips Electronics N.V. Memory encryption system and method
GB0228434D0 (en) 2002-12-05 2003-01-08 Scient Generics Ltd Error correction
US6678828B1 (en) 2002-07-22 2004-01-13 Vormetric, Inc. Secure network file access control system
US7500098B2 (en) * 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
US7739577B2 (en) 2004-06-03 2010-06-15 Inphase Technologies Data protection system
US7437651B2 (en) * 2004-06-29 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
JP2007257814A (ja) * 2006-02-27 2007-10-04 Fujitsu Ltd ライブラリ装置およびライブラリ装置制御方法
US7752676B2 (en) * 2006-04-18 2010-07-06 International Business Machines Corporation Encryption of data in storage systems
US20080044012A1 (en) * 2006-08-15 2008-02-21 Nokia Corporation Reducing Security Protocol Overhead In Low Data Rate Applications Over A Wireless Link
US8000467B2 (en) * 2007-03-19 2011-08-16 Stmicroelectronics Sa Data parallelized encryption and integrity checking method and device
US8117520B2 (en) 2007-06-15 2012-02-14 Micron Technology, Inc. Error detection for multi-bit memory
US8020070B2 (en) 2007-12-05 2011-09-13 Aquantia Corporation Trapping set decoding for transmission frames
US8503679B2 (en) * 2008-01-23 2013-08-06 The Boeing Company Short message encryption
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8745411B2 (en) * 2008-11-07 2014-06-03 Broadcom Corporation Protecting external volatile memories using low latency encryption/decryption
US9331717B2 (en) 2009-02-27 2016-05-03 Blackberry Limited Forward error correction decoding avoidance based on predicted code block reliability
US20110060915A1 (en) * 2009-09-10 2011-03-10 International Business Machines Corporation Managing Encryption of Data
US9544090B2 (en) 2010-03-31 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Hard input low density parity check decoder
JP5700481B2 (ja) * 2011-06-29 2015-04-15 インテル・コーポレーション 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
JP2013011793A (ja) * 2011-06-30 2013-01-17 Canon Inc 光走査装置および電子写真画像形成装置
CN102324006B (zh) * 2011-09-06 2014-01-29 四川九洲电器集团有限责任公司 一种处理器程序安全保护装置及保护方法
US9164924B2 (en) * 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
CN102708335A (zh) * 2012-05-05 2012-10-03 南京赛孚科技有限公司 一种涉密文件的保护方法
US9319179B1 (en) 2013-04-09 2016-04-19 Marvell International Ltd. Methods and apparatus for generating expanded code words to support error correction in a data communication system
JP6199385B2 (ja) 2013-06-12 2017-09-20 株式会社日立製作所 高セキュリティ通信システム、並びにそれに用いる送信機及び受信機
US10205470B2 (en) 2014-02-14 2019-02-12 Samsung Electronics Co., Ltd System and methods for low complexity list decoding of turbo codes and convolutional codes
US9577831B2 (en) 2014-05-25 2017-02-21 Fujitsu Limited Relational encryption

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060080553A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Secure memory caching structures for data, integrity and version values
US20120297111A1 (en) * 2011-05-17 2012-11-22 Jonathan Hsu Non-Volatile Memory And Method With Improved Data Scrambling

Also Published As

Publication number Publication date
US9213653B2 (en) 2015-12-15
CN109582604A (zh) 2019-04-05
EP3077913B1 (en) 2022-10-05
US20150161059A1 (en) 2015-06-11
WO2015112224A2 (en) 2015-07-30
KR101863143B1 (ko) 2018-06-01
EP3077913A4 (en) 2017-07-19
US20160254905A1 (en) 2016-09-01
EP3077913A2 (en) 2016-10-12
KR20180059954A (ko) 2018-06-05
US9847872B2 (en) 2017-12-19
KR20160093702A (ko) 2016-08-08
EP4116830A1 (en) 2023-01-11
WO2015112224A3 (en) 2015-09-24
CN109582604B (zh) 2023-07-25
CN105706066A (zh) 2016-06-22
CN105706066B (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
KR102113937B1 (ko) 메모리 무결성
US9990249B2 (en) Memory integrity with error detection and correction
US11010310B2 (en) Convolutional memory integrity
US9094190B2 (en) Method of managing key for secure storage of data and apparatus therefor
CN103210396B (zh) 包括用于保护敏感代码和数据的架构的方法和装置
US10761928B2 (en) Combined secure mac and device correction using encrypted parity with multi-key domains
US8826035B2 (en) Cumulative integrity check value (ICV) processor based memory content protection
TW201918923A (zh) 安全邏輯系統及操作安全邏輯系統的方法
TW201523256A (zh) 確保機板上匯流排交易安全的系統和方法
KR20180059217A (ko) 메모리 데이터 보안 처리 장치 및 방법
TWI807766B (zh) 安全之全晶片通信
US11748271B2 (en) Data security for memory and computing systems
US20230177154A1 (en) Sparse Encodings for Control Signals
US20230400996A1 (en) Apparatus, Device, and Method for a Memory Controller, Memory Controller, and System
Zalivaka et al. NAND Flash Memory Devices Security Enhancement Based on Physical Unclonable Functions
JP2024513716A (ja) 読み取り専用メモリ(rom)のセキュリティ
KR20230144611A (ko) 보안 암호화 코프로세서
JP2024515450A (ja) 読み取り専用メモリ(rom)のセキュリティ

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right