KR20230036129A - 캐싱된 부분 해시 값들을 사용하는 메모리 보호 - Google Patents

캐싱된 부분 해시 값들을 사용하는 메모리 보호 Download PDF

Info

Publication number
KR20230036129A
KR20230036129A KR1020237004383A KR20237004383A KR20230036129A KR 20230036129 A KR20230036129 A KR 20230036129A KR 1020237004383 A KR1020237004383 A KR 1020237004383A KR 20237004383 A KR20237004383 A KR 20237004383A KR 20230036129 A KR20230036129 A KR 20230036129A
Authority
KR
South Korea
Prior art keywords
hash value
cache
data block
data
memory
Prior art date
Application number
KR1020237004383A
Other languages
English (en)
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 KR20230036129A publication Critical patent/KR20230036129A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리의 보호 영역에 저장된 데이터의 무결성을 보호하기 위한 장치들 및 방법이 개시된다. 메모리의 보호 영역 내의 데이터가 데이터 블록들에서 검색되고, 인증 코드가 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된다. 인증 코드의 계산은 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함한다. 해시 값 캐시가 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 저장하기 위해 제공된다. 제1 데이터 블록 및 그의 연관된 인증 코드가 메모리로부터 검색될 때, 해시 값 캐시에서의 제2 해시 값에 대한 탐색이 수행되고, 그 데이터 블록이 속하는 메모리 그래뉼에 대해 검증 인증 코드가 계산된다. 제1 데이터 블록의 무결성은 검증 인증 코드가 검색된 인증 코드와 매칭되는 것에 의존한다.

Description

캐싱된 부분 해시 값들을 사용하는 메모리 보호
본 개시는 데이터 처리에 관한 것이다. 특히, 본 개시는 메모리 보안에 관한 것이다.
데이터 처리 시스템이 보호가 필요한, 즉 비인가된 당사자들이 이용 가능하지 않아야 하는 데이터를 처리하는 것이 요구될 수 있다. 그러나, 처리되어야 하는 그러한 데이터의 양이 신뢰받는 처리 디바이스 내에 안전하게 저장될 수 있는 것보다 더 많을 수 있고, 따라서 그것은 공격자가 접근하지 못하는 것이 보장될 수 없는 메모리에 저장되어야 한다. 이러한 이유로, 그러한 데이터가, 데이터에 기초한 암호 기술들을 사용하여 신뢰받는 처리 디바이스 내에 생성된, 연관된 인증 코드와 함께 저장되며, 따라서 데이터 및 인증 코드가 메모리로부터 검색될 때, 데이터 및 인증 코드가 검사될 수 있는 것이 알려져 있다. 특히, 인증 코드의 재생성이 (암호 기술의 일부로서의 비밀 키에 기초하여) 수행되어 이것이 검색된 인증 코드와 매칭되는지를 살펴볼 수 있다. 이어서 인증 코드들이 매칭되는 경우 검색된 데이터의 무결성이 확인되며, 이는 인증 코드가 생성 및 저장된 이후로 데이터가 변경되지 않았음을 나타낸다. 처리될 데이터 자체에 더하여 인증 코드들을 핸들링하는 것은 64 비트 인증 코드들이 64 바이트 데이터 블록들을 보호하는 경우에 예를 들어 12.5%일 수 있는 오버헤드이다. 원칙적으로, 인증 코드는 더 큰 데이터 블록을 보호할 수 있지만, 이것은 데이터 블록들이 메모리 트랜잭션들의 기초를 형성하는 데이터의 정상 단위보다 더 커지는 경우 메모리 시스템의 동작을 복잡하게 만들 수 있다.
본 명세서에서 설명되는 하나의 예시적인 실시예에서, 장치로서, 메모리의 보호 영역에서 메모리 그래뉼(memory granule)들의 무결성을 검증하기 위한 메모리 보호 회로부; 및 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 저장하기 위한 해시 값 캐시를 포함하며, 제1 데이터 블록, 및 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 메모리로부터의 검색이 발생할 때, 메모리 보호 회로부는 검색에 응답하여 메모리 그래뉼에 대한 검증 인증 코드를 계산하고, 제1 데이터 블록의 무결성은 검증 인증 코드가 인증 코드와 매칭되는 것에 의존하고, 검증 인증 코드의 계산은 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함하고, 메모리 보호 회로부는 검증 인증 코드의 계산이 요구될 때 해시 값 캐시에서 제2 해시 값을 탐색하도록 배열되는, 장치가 있다.
본 명세서에서 설명되는 추가의 예시적인 실시예에서, 메모리의 보호 영역에서 메모리 그래뉼들의 무결성을 검증하는 방법으로서, 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 해시 값 캐시에 저장하는 단계; 제1 데이터 블록, 및 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 메모리로부터의 검색이 발생할 때, 메모리 그래뉼에 대한 검증 인증 코드를 계산하는 단계 - 제1 데이터 블록의 무결성은 검증 인증 코드가 인증 코드와 매칭되는 것에 의존하고, 검증 인증 코드를 계산하는 단계는 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함함 -; 및 검증 인증 코드의 계산이 요구될 때 해시 값 캐시에서 제2 해시 값을 탐색하는 단계를 포함하는, 방법이 있다.
본 명세서에서 설명되는 추가의 예시적인 실시예에서, 장치로서, 메모리의 보호 영역에서 메모리 그래뉼들의 무결성을 검증하기 위한 수단; 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 캐싱하기 위한 수단; 제1 데이터 블록, 및 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 메모리로부터의 검색이 발생할 때, 메모리 그래뉼에 대한 검증 인증 코드를 계산하기 위한 수단 - 제1 데이터 블록의 무결성은 검증 인증 코드가 인증 코드와 매칭되는 것에 의존하고, 검증 인증 코드를 계산하기 위한 수단은 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 수행하기 위한 수단을 포함함 -; 및 검증 인증 코드의 계산이 요구될 때 해시 값들을 캐싱하기 위한 수단에서 제2 해시 값을 탐색하기 위한 수단을 포함하는, 장치가 있다.
본 발명은 첨부 도면에 예시된 바와 같은 본 발명의 실시예들을 참조하여, 단지 예로서, 추가로 설명될 것이다.
도 1은 몇몇 실시예들에 따른 메모리 보호 회로부가 메모리에 저장된 데이터의 무결성을 검증하도록 구현될 수 있는 데이터 처리 시스템을 개략적으로 예시한다.
도 2는 시스템-온-칩이 데이터가 저장된 오프-칩 메모리에 액세스하는 몇몇 실시예들에 따른 메모리 보호 회로부를 포함하는 시스템-온-칩을 개략적으로 예시한다.
도 3a는 2개의 데이터 블록 및 연관된 인증 코드로 구성된, 메모리 공간의 일부를 형성하는 메모리 그래뉼을 개략적으로 예시한다.
도 3b는 2개의 데이터 블록에 적용되는 해시 함수들에 기초한 인증 코드의 생성을 개략적으로 예시한다.
도 4a는 데이터 캐시 및 해시 값 캐시의 제어를 조정하기 위해 캐시 조정 회로부가 제공되는 몇몇 실시예들에서의 메모리 보호 회로부를 포함하는 장치를 개략적으로 예시한다.
도 4b는 몇몇 실시예들에서의 캐시 내의 엔트리들의 몇몇 상세들을 개략적으로 예시한다.
도 5는 몇몇 실시예들에서 데이터 블록의 무결성이 그에 따라 검증되는 단계들의 시퀀스를 도시하는 흐름도이다.
도 6은 몇몇 실시예들에서 데이터 캐시 미스에 응답하여 취해지는 단계들의 시퀀스를 도시하는 흐름도이다.
도 7은 몇몇 실시예들에서 해시 값 캐시 미스가 발생할 때 취해지는 단계들의 시퀀스를 도시하는 흐름도이다.
도 8a는 몇몇 실시예들에서 캐시 조정 회로부가 해시 값 캐시에서의 탐색에 기초하여 데이터 캐시에서의 축출 후보의 선택에 영향을 미치는 방식을 개략적으로 예시한다.
도 8b는 몇몇 실시예들에서 캐시 조정 회로부가 데이터 캐시 내의 희생자 캐시 라인에 관한 정보에 기초하여 해시 값 캐시 내의 해시 값들의 저장에 영향을 미치는 방식을 개략적으로 예시한다.
도 9는 몇몇 실시예들에서 캐시 조정 회로부가 해시 값 캐시 및 데이터 캐시로부터의 사용 및/또는 변경 정보에 기초하여 데이터 캐시 및 해시 값 캐시에서의 희생자 선택들에 영향을 미치거나 희생자 선택들을 제어하는 방식을 개략적으로 예시한다.
첨부 도면을 참조하여 실시예들을 논의하기 전에, 실시예들의 하기 설명이 제공된다.
하나의 예시적인 구성에 따르면, 장치로서, 메모리의 보호 영역에서 메모리 그래뉼들의 무결성을 검증하기 위한 메모리 보호 회로부; 및 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 저장하기 위한 해시 값 캐시를 포함하며, 제1 데이터 블록, 및 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 메모리로부터의 검색이 발생할 때, 메모리 보호 회로부는 검색에 응답하여 메모리 그래뉼에 대한 검증 인증 코드를 계산하고, 제1 데이터 블록의 무결성은 검증 인증 코드가 인증 코드와 매칭되는 것에 의존하고, 검증 인증 코드의 계산은 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함하고, 메모리 보호 회로부는 검증 인증 코드의 계산이 요구될 때 해시 값 캐시에서 제2 해시 값을 탐색하도록 배열되는, 장치가 제공된다.
데이터가 블록 단위로, 즉 시스템에서 사용되는 최소 어드레싱 가능 데이터 아이템 크기보다 큰 데이터의 단위로 메모리로부터 검색되는 데이터 처리 시스템에서, 데이터의 무결성을 보호하기 위한 연관된 인증 코드들의 사용에 대한 표준 접근법은 인증 코드를 각각의 블록과 연관시키는 것이다. 예를 들어, 64 바이트 블록 단위로 메모리로부터 데이터를 검색하도록 배열된 데이터 처리 시스템의 경우에, 64 비트 인증 코드가 64 바이트 블록과 연관될 수 있다. 그러나, 본 기술들은 그러한 데이터의 보호에 대한 신규한 접근법을 취하며, 그에 따라 인증 코드는 (적어도) 2개의 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관되며, 여기서 여기에서의 "데이터 블록"은 장치가 메모리로부터 검색하도록 배열된 데이터의 단위를 의미하는 것으로 이해된다. 이에 따라, 특정 데이터 아이템이 메모리로부터 검색되도록 요구될 때, 그 특정 데이터 아이템이 그의 부분만을 형성하는 데이터 블록이 전체로서 검색된다. 데이터 블록은 적어도 하나의 추가의 데이터 블록과 연관되어, 본 명세서에서 사용되는 용어로 "메모리 그래뉼"을 함께 형성한다. 또한, 그 특정 데이터 아이템을 보호하는 인증 코드가 메모리 그래뉼에 기초하여, 즉 단지 특정 데이터 아이템이 속하는 데이터 블록에 기초하지 않고, 결정된다. 인증 값의 결정은 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초하는 암호 계산을 포함한다. 이러한 접근법은 인증 코드가 구성될 수 있고, 그의 계산이 분할될 수 있다는 깨달음에 기초한다. 즉, 일반적으로 AC(DB1, DB2)가 데이터 블록들 DB1 및 DB2의 인증 코드를 나타내는 경우, AC(DB1, DB2)는 f(AC'(DB1), AC'(DB2))로서 구성될 수 있다. 장치는 그러한 해시 값들을 저장하기 위한 해시 값 캐시를 추가로 포함한다(여기서 함수 AC'은 이 경우에 해시 함수이다). 이러한 배열은, 제1 데이터 아이템 및 연관된 인증 코드가 메모리로부터 검색될 때, 그리고 제2 해시 값 데이터 아이템이 해시 값 캐시에 존재할 때, 제1 데이터 아이템의 진정성이, 메모리로부터 제2 데이터 아이템을 또한 검색할 필요 없이, 제2 해시 값을 이용함으로써 검증될 수 있다는 것을 의미한다. 이러한 방식으로, 단일 데이터 블록이 검색될 때 추가적인 데이터 블록이 메모리로부터 검색될 필요가 있음을 요구하지 않고서, 인증 코드들 대 그들이 보호하는 데이터의 저장 크기 비율이 감소된다.
인증 코드들이 그에 따라 결정되는 암호 계산은 다양한 형태들을 취할 수 있지만, 몇몇 실시예들에서 그것은 제1 해시 값 및 제2 해시 값 각각에 대해 장치에 의해 표현될 수 있는 모든 가능한 값들의 세트에 의해 정의되는 유한 필드에서의 제1 해시 값과 제2 해시 값의 선형 조합을 포함한다. 이러한 방식으로 계산을 제한하는 것은 데이터 처리 장치에서의 그의 구현을 용이하게 하여, 인증 코드의 계산 및 인증 코드의 표현을 제1 해시 값 및 제2 해시 값에 대해 사용되는 표현과 정렬시킨다. 예를 들어, 각각의 해시 값이 64 비트 데이터 값에 의해 표현될 때, 인증 코드가 또한 64 비트 데이터 값에 의해 표현될 수 있으며, 이때 해시 값들의 선형 조합이 64 비트 값의 모든 가능한 값들의 세트에 의해 정의되는 유한 필드 내에서 발생한다. 그러면 계산된 값의 절단에 대한 필요성이 또한 없다. 게다가, 인증 코드가 또한 암호화될 때, 후속 절단의 회피는 암호화된 값이 복호화될 수 있음을 의미한다.
선형 조합은 다양하게 정의될 수 있지만, 몇몇 실시예들에서 제1 해시 값 및 제2 해시 값 중 적어도 하나에 상수를 곱하는 것을 포함한다. 몇몇 실시예들에서, 선형 조합은 제1 해시 값에 제1 상수를 곱하고 제2 해시 값에 제2 상수를 곱하는 것을 포함한다.
선형 조합에서 채용되는 하나 이상의 상수들은 다양한 형태들을 취할 수 있지만, 몇몇 실시예들에서 상수는 비밀 키 값이다. 몇몇 실시예들에서, 제1 상수는 제1 비밀 키 값이고 제2 상수는 제2 비밀 키 값이다.
몇몇 실시예들에서, 장치는 메모리로부터 검색된 데이터 블록들의 사본들을 저장하기 위한 데이터 블록 캐시를 추가로 포함하며, 데이터 블록들의 사본들은 데이터 블록 캐시의 캐시 라인들이다. 그에 따라 메모리로부터의 데이터의 검색에 대한 캐시-라인 크기 기반의 접근법이 채용될 수 있으며, 이에 따라 각각의 인증 코드가 2개(또는 그 초과)의 캐시 라인과 연관된다.
본 기술들은, 데이터 블록 캐시 및 해시 값 캐시 둘 모두를 포함하는 장치에서, 각각의 각자 콘텐츠에 대한 제어가 이루어질 수 있는 매우 다양한 방식들이 있고, 또한 본 기술들에 따라 동작하는 장치의 데이터 처리 효율을 개선하기 위해 조정 제어가 이용될 수 있다는 것을 추가로 인식한다. 따라서 몇몇 실시예들에서 장치는 데이터 블록 캐시 및 해시 값 캐시 내의 저장을 제어하기 위한 캐시 콘텐츠 조정 제어 회로부를 추가로 포함하며, 데이터 블록 캐시 내의 저장은 해시 값 캐시의 콘텐츠에 의존하고, 해시 값 캐시 내의 저장은 데이터 블록 캐시의 콘텐츠에 의존한다. 각각의 캐시의 콘텐츠의, 다른 캐시의 콘텐츠에 대한 이러한 상호 의존성은 다양한 방식들로 구현될 수 있다.
몇몇 실시예들에서, 캐시 콘텐츠 조정 제어 회로부는 데이터 블록 캐시 및 해시 값 캐시에 배타적 저장 정책을 부과하도록 배열되어, 데이터 블록 및 연관된 해시 값에 대해, 배타적으로, 데이터 블록이 데이터 블록 캐시에 저장되거나 연관된 해시 값이 해시 값 캐시에 저장된다. 주어진 해시 값이 대응하는 데이터 블록으로부터 생성되기 때문에, 주어진 데이터 블록이 현재 데이터 블록 캐시에 저장되어 있을 때, 엄밀히 말하면 대응하는 해시 값이 해시 값 캐시에 저장될 필요가 없는데, 왜냐하면 그것이 캐싱된 데이터 블록으로부터 재생성될 수 있기 때문이다. 역으로 주어진 해시 값이 현재 해시 값 캐시에 저장되어 있을 때, 이러한 캐싱된 해시 값의 주요 목적은 메모리 그래뉼 내의 다른 데이터 아이템이 인증되는 것을 가능하게 하는 것일 수 있다. 따라서, 이러한 캐싱된 해시 값이 그로부터 도출되는 데이터 아이템이 장치의 데이터 처리 목적들을 위해 현재 요구되지 않을 때, 그것이 단지 인증 검증 목적들을 위해 데이터 캐시에 유지될 필요가 없다. 이에 따라 캐시들 각각 내의 유한한 저장 공간의 개선된 사용이 유발될 수 있다.
캐시 콘텐츠 조정 제어 회로부는 해시 값 캐시 및 데이터 블록 캐시의 콘텐츠와 관련하여 매우 다양한 정책들을 관리할 수 있다. 몇몇 실시예들에서, 캐시 콘텐츠 조정 제어 회로부는 데이터 블록 캐시에 대한 희생자 선택 정책을 관리하도록 배열되며, 여기서 희생자 데이터 블록의 선택의 가능성은, 희생자 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 추가의 데이터 블록으로부터 결정된 해시 값이 현재 해시 값 캐시에 저장되어 있을 때 증가된다.
희생자 선택 정책들(보다 일반적으로, 캐시 교체 정책들)은 캐시 라인이 언제 할당되었는지, 캐시 라인이 얼마나 최근에 마지막으로 사용되었는지, 캐시 라인이 얼마나 빈번하게(드물게) 사용되고 있는지, 캐시 라인이 할당되게 한 소유 프로세스 등 중 하나 이상과 같은, 다양한 인자들에 의존하여 매우 다양한 방식들로 구현될 수 있다. 따라서 축출을 위한 주어진 캐시 라인의 선택의 가능성은 다양한 방식들로, 예를 들어 각각의 캐시 라인과의 우선순위 값의 연관에 의해 조정될 수 있으며, 여기서 캐시 라인은 그와 연관된 우선순위 값이 높을수록 축출될 가능성이 적다.
본 기술들은 해시 값 캐시 및 데이터 블록 캐시 각각에서 캐시 라인 축출 가능성에 영향을 미치는 이러한 능력을 이용하여, 다른 캐시의 현재 콘텐츠에 따라 캐시들 중 하나 내의 주어진 캐시 라인의 존재의 상대적 유용성의 인식을 이용한다. 따라서 예를 들어, 대응하는 해시 값들 {H, H'}을 갖는 주어진 데이터 블록 쌍 {L, L'}에 대해, L이 현재 데이터 값 캐시에 캐싱되어 있을 때, 그것은 H'이 현재 해시 값 캐시에 저장되어 있을 때 (예를 들어, 그와 연관된 우선순위 값을 낮춤으로써) 축출을 위해 선택될 가능성이 더 많게 될 수 있다. 이러한 접근법이 사용될 때 다양한 상황들이 있을 수 있는데, 예를 들어 L이 더티할 때(즉, 변경된 때), H'을 해시 값 캐시에 유지하는 것은 나중에 L의 더 빠른 축출을 허용하는데, 왜냐하면 이것이 변경된 L이 메모리에 기입될 때 (H 및 H'에 기초한) 인증 코드의 재계산이 또한 메모리에 저장될 것을 요구할 것이기 때문이다.
몇몇 실시예들에서, 캐시 콘텐츠 조정 제어 회로부는 데이터 블록 캐시에 대한 희생자 선택 정책을 관리하도록 배열되며, 여기서 데이터 블록 캐시로부터의 축출이 요구되기 전에, 희생자 데이터 블록이 선택되고; 희생자 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 추가의 데이터 블록으로부터 결정된 해시 값이 해시 값 캐시에 저장되게 된다. 따라서, 대응하는 해시 값들 {H, H'}을 갖는 데이터 블록 쌍 {L, L'}의 예를 다시 사용하여, L이 희생자 데이터 블록으로서 선택될 때, H'이 해시 값 캐시에 저장되게 된다.
해시 값 캐시 및 데이터 값 캐시, 그리고 특히 각각에서의 각자의 희생자 선택 정책들에 대한 그의 제어를 관리하기 위해, 캐시 콘텐츠 조정 제어 회로부는 각자의 캐시 라인들의 사용을 나타내는 정보를 추가로 이용할 수 있다. 예를 들어, 몇몇 실시예들에서, 장치는 데이터 블록들에 대한 사용 표시들을 저장하기 위한 데이터 블록 사용 저장소를 추가로 포함하며, 캐시 콘텐츠 조정 제어 회로부는 데이터 블록 캐시에 대한 희생자 선택 정책을 관리하도록 배열되고, 여기서 희생자 데이터 블록의 선택의 가능성은, 희생자 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 사용 표시들이 미리 결정된 임계치를 초과하는 추가의 데이터 블록의 사용을 나타낼 때 감소된다. 이에 따라 대응하는 해시 값들 {H, H'}을 갖는 데이터 블록 쌍 {L, L'}에 대해, L이 희생자 데이터 블록으로서 선택될 가능성은 L'이 최근에 사용되었고 그에 따라 가까운 미래에 다시 사용될 가능성이 더 많을 때 감소된다.
몇몇 실시예들에서, 장치는 데이터 블록들에 대한 사용 표시들을 저장하기 위한 데이터 블록 사용 저장소를 추가로 포함하며, 캐시 콘텐츠 조정 제어 회로부는 해시 값 캐시에 대한 희생자 선택 정책을 관리하도록 배열되며, 여기서 희생자 해시 값의 선택의 가능성은, 희생자 해시 값이 그로부터 결정되는 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 사용 표시들이 미리 결정된 임계치를 초과하는 추가의 데이터 블록의 사용을 나타낼 때 감소된다. 이에 따라 대응하는 해시 값들 {H, H'}을 갖는 데이터 블록 쌍 {L, L'}에 대해, H가 희생자 해시 값 블록으로서 선택될 가능성은 L'이 최근에 사용되었고 그에 따라 가까운 미래에 다시 사용될 가능성이 더 많을 때 감소된다. 몇몇 그러한 실시예들에서, 희생자 해시 값은 클린하고, 추가의 데이터 블록의 사용은 추가의 데이터 블록의 판독이다. 이것은 L 및 H를 (클린 상태에) 유지하는 것이 L'이 곧 다시 판독될 가능성이 있는 경우 유익하다는 인식에 기초한다.
몇몇 실시예들에서, 장치는 데이터 블록들에 대한 사용 표시들을 저장하기 위한 데이터 블록 사용 저장소를 추가로 포함하며, 캐시 콘텐츠 조정 제어 회로부는 해시 값 캐시에 대한 희생자 선택 정책을 관리하도록 배열되며, 여기서 희생자 해시 값의 선택의 가능성은 희생자 해시 값이 더티하고 사용 표시들이 미리 결정된 임계치를 초과하는 데이터 블록의 사용을 나타내고 데이터 블록의 사용이 데이터 블록에 대한 기입일 때 감소된다. 이에 따라 대응하는 해시 값들 {H, H'}을 갖는 데이터 블록 쌍 {L, L'}에 대해, H가 희생자 해시 값 블록으로서 선택될 가능성은 L이 최근에 사용 및 기입되었고 그에 따라 가까운 미래에 다시 기입될 가능성이 더 많을 때 감소된다. 몇몇 그러한 실시예들에서, 희생자 해시 값은 클린하고, 추가의 데이터 블록의 사용은 추가의 데이터 블록의 판독이다. 이것은 L 및 H를 (클린 상태에) 유지하는 것이 L'이 곧 다시 판독될 가능성이 있는 경우 유익하다는 인식에 기초한다.
몇몇 실시예들에서, 캐시 콘텐츠 조정 제어 회로부는 데이터 블록 캐시 내의 데이터 블록에 대한 판독 액세스에 응답하여 해시 값 캐시에서의 대응하는 해시 값에 대한 탐색을 트리거한다. 이에 따라 L에 대한 판독 액세스가 이루어질 때, 해시 값 캐시에서의 H에 대한 탐색이 수행된다.
몇몇 실시예들에서, 캐시 콘텐츠 조정 제어 회로부는 데이터 블록 캐시 내의 데이터 블록에 대한 기입 액세스에 응답하여 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록으로부터 결정된 추가의 해시 값에 대한 해시 값 캐시에서의 탐색을 트리거한다. 이에 따라 L이 기입될 때, 해시 값 캐시에서의 H'에 대한 탐색이 수행된다. 이것은 변경된 L이 후속하여 축출되고, H 및 H'에 기초한 인증 코드가 계산될 필요가 있을 때, H'이 해시 값 캐시에 존재하는 경우, 더 빠르게 발생할 수 있다는 것을 의미한다.
역으로, 몇몇 실시예들에서, 데이터 블록 캐시 내의 데이터 블록에 대한 판독 액세스가 해시 값 캐시에서의 대응하는 해시 값에 대한 탐색을 트리거할 때, 대응하는 해시 값에 대한 탐색이 해시 값 캐시에서의 미스를 야기할 때, 해시 값 캐시로의 해시 값의 할당이 억제된다. 이것은 L의 변경이 H가 재계산을 필요로 할 것임을 의미할 것이기 때문이다.
인증 코드들의 계산은, 변경된 데이터 아이템이 진짜인 것으로 검증되도록, 비신뢰 당사자들이 데이터 아이템을 변경할 수 없고 대체할 대응하는 인증 코드를 계산할 수 없도록, 안전할 필요가 있다. 그럼에도 불구하고, 몇몇 실시예들에서, 장치는 해시 값들에 대한 암호화된 저장소를 추가로 포함하며, 암호 계산은 제1 데이터 블록으로부터 결정된 암호화된 제1 해시 값과 제2 데이터 블록으로부터 결정된 암호화된 제2 해시 값의 선형 조합이고, 암호화된 제1 해시 값 및 암호화된 제2 해시 값은 해시 값들에 대한 암호화된 저장소로부터 검색된다. 이에 따라, 해시 값들 자체가 암호화된 형태로 저장되는 것에 의해 안전할 때, 그들을 조합하는 인증 코드의 계산은 그 자체가 안전할 필요가 없고, 유형 H + gH'의 간단한 선형 조합일 수 있으며, 여기서 g는 (일반성의 상실 없이, 1일 수 있는) 임의적인 상수이다.
하나의 예시적인 구성에 따르면, 메모리의 보호 영역에서 메모리 그래뉼들의 무결성을 검증하는 방법으로서, 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 해시 값 캐시에 저장하는 단계; 제1 데이터 블록, 및 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 메모리로부터의 검색이 발생할 때, 메모리 그래뉼에 대한 검증 인증 코드를 계산하는 단계 - 제1 데이터 블록의 무결성은 검증 인증 코드가 인증 코드와 매칭되는 것에 의존하고, 검증 인증 코드를 계산하는 단계는 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함함 -; 및 검증 인증 코드의 계산이 요구될 때 해시 값 캐시에서 제2 해시 값을 탐색하는 단계를 포함하는, 방법이 제공된다.
이제 특정 실시예들이 도면을 참조하여 설명될 것이다.
도 1은 몇몇 실시예들에 따른 데이터 처리 시스템(100)을 예시한다. 시스템은 프로세서 코어(102) 및 2개의 추가의 마스터 디바이스(104, 106)를 포함한다. 이러한 디바이스들 각각은 메모리(110)에 저장된 데이터에 액세스하며, 그들은 시스템 버스(108)를 통해 액세스한다. 메모리(110)에 대한 액세스는 일반적으로 메모리 제어기(114)에 의해 제어되지만, 또한 메모리에 대한 액세스들은 메모리 보호 장치(112)를 거쳐 지나가야 한다. 메모리(110)에 저장된 적어도 몇몇 데이터 아이템들은 연관된 인증 코드를 가지며, 따라서 주어진 데이터 아이템의 무결성이 그의 연관된 인증 코드를 참조하여 검증될 수 있다. 메모리 보호 장치(113)는 인증 코드들을 계산하고 검증하도록 배열된다.
도 2는 데이터 처리 동작들을 수행하기 위해 프로그램 명령어들을 실행하기 위한 적어도 하나의 프로세서 코어(154)를 포함하는, 집적 회로 또는 시스템-온-칩(152)을 포함하는, 예시적인 데이터 처리 시스템(150)을 개략적으로 예시한다. 도 2가 하나의 프로세서 코어만을 도시하지만, 몇몇 경우들에서 시스템-온-칩(152)은 다수의 프로세서들을 포함할 수 있다. 각각의 프로세서 코어 또는 프로세서 코어 클러스터는 캐시(156)(또는 다수 레벨들의 캐시(156, 158))를 가질 수 있다. 메모리 제어기(160)는 시스템-온-칩(152)과는 별개의 집적 회로 상에 있는, 오프-칩 메모리(180)에 대한 액세스를 제어하기 위한 메모리 액세스 회로부로서의 역할을 한다. 데이터 온-칩에 대한 액세스들은 공격자가 템퍼링(tampering)하기 어려울 수 있지만, 칩의 에지 경계를 넘어 지나가는 데이터는 공격에 취약할 수 있다. 이것은 예를 들어 메모리 제어기(160)가 그를 통해 오프-칩 메모리(180)와 통신하는 물리적 채널(170) 상에서의 데이터의 인터셉션을 수반할 수 있거나, 그것은 데이터가 오프-칩 메모리(180)에 저장되는 동안 데이터를 판독하거나 변경하는 것에 의할 수 있다. 위의 예는 신뢰 경계가 시스템-온-칩의 에지에 대응한다는 면에서 설명되지만, 다른 경우들에서 시스템-온-칩 자체 내에 신뢰 경계가 있을 수 있고, 여기서 신뢰 경계를 넘어서는 데이터는 잠재적인 공격들에 노출될 수 있다.
시스템-온-칩(152)은 오프-칩 메모리(180)의 보호 메모리 영역(182)에 저장된 데이터를 보호하기 위해 제공되는 메모리 보호 유닛(162)을 추가로 포함한다. 오프-칩 메모리(180)가 신뢰 경계를 넘어서 있기 때문에, 이러한 보호가 필요한데, 그 이유는 시스템에 대한 물리적 액세스를 갖는 악의적인 에이전트가 프로세서 코어(154)와 오프-칩 메모리(180) 사이에서 교환되는 데이터 값들을 관찰 및/또는 리플레이할 수 있기 때문이다. 보호 메모리 영역(182)은 보호될 데이터(184)뿐만 아니라, 데이터(184)의 무결성을 검증하는 데 사용되는 인증 코드들(186)을 포함한다. 비보호 메모리 영역(188)이 또한 오프-칩 메모리(180) 내에 제공되고, 이러한 비보호 영역에 저장된 데이터는 메모리 보안 보호 유닛(162)에 의해 보호되지 않고 이에 따라 공격자에 의해 액세스 및 변경될 수 있다. 몇몇 구현들에서, 보호 및 비보호 메모리 영역들(182, 188)에 대한 어드레스들의 매핑은 하드웨어에 의해 고정될 수 있으며, 따라서 프로세서 코어(154)에 의해 실행되는 운영 체제 또는 다른 소프트웨어가 어느 어드레스들이 보호 메모리 영역(182) 및 비보호 메모리 영역(188)에 매핑되는지를 변경하는 것이 가능하지 않다. 대안적으로, 어드레스 매핑을 제어하는 운영 체제가 신뢰될 수 있는 경우, 어느 어드레스들이 보호 영역 및 비보호 영역에 매핑되는지를 제어하는 어드레스 매핑은 소프트웨어의 제어 하에서 프로세서에 의해 변경될 수 있으며, 따라서 보호 및 비보호 영역들이 항상 오프-칩 메모리(180) 내의 동일한 물리적 위치들에 매핑될 필요는 없다. 몇몇 구현들에서, 오프-칩 메모리(180) 내에 제공되는 비보호 메모리 영역(188)이 없을 수 있으며, 그러한 경우에 전체 오프 칩 메모리는 보호 메모리 영역(182)인 것으로 간주될 수 있다.
메모리 보호 유닛(162)은 오프-칩 메모리(180)에 기입되는 데이터를 암호화하고 오프-칩 메모리로부터 판독된 암호화된 데이터를 복호화하기 위한 암호화/복호화 회로부(164)를 포함한다. 암호화 및 복호화에 의해 사용되는 암호화 키들은 시스템-온-칩(152) 상의 온-칩 메모리(예를 들어, SRAM)(166) 내에 또는 메모리 보호 유닛(162) 자체 내에 저장될 수 있다. 임의의 공지된 기술이 암호화 및 복호화에 사용될 수 있고, 암호화 키들을 보호하기 위한 임의의 공지된 접근법이 사용될 수 있다. 메모리 보호 유닛(162)은 또한 데이터 아이템들에 대한 해시 값들을 계산하는 해시 값 계산 회로부(168)를 포함한다. 해시 값 계산 회로부(168) 및 암호화 유닛(164)은 함께 보호 메모리(182)에 저장된 데이터 아이템들과 연관된 전술한 인증 코드들을 계산한다. 인증 코드들의 계산은 아래에서 더 상세히 설명된다.
도 3a는 어드레싱 가능한 메모리의 2개의 섹션을 개략적으로 예시한다. 제1 섹션(보호 메모리(182)의 데이터 부분(184)에 물리적으로 위치됨)에서, 16개의 연속적인 메모리 어드레스들(200)이 도시되며, 이들 각각은 64 비트 데이터 아이템에 대한 저장소를 포함하고, 여기서 8개의 64 비트 데이터 아이템들이 함께 제1 512 비트 데이터 블록을 형성하고 8개의 64 비트 데이터 아이템들이 함께 제2 512 비트 데이터 블록을 형성한다. 2개의 데이터 블록은 함께 1024 비트 메모리 그래뉼을 형성한다. 제2 섹션(보호 메모리(182)의 인증 코드들 부분(186)에 물리적으로 위치됨)에서, 예시된 1024 비트 메모리 그래뉼에 대응하는 64 비트 인증 코드(MAC)(202)가 도시된다. 이러한 특정 데이터 아이템, 데이터 블록, 메모리 그래뉼, 및 인증 코드 크기들은 단지 예시 목적으로 여기에서 주어지며, 상이한 구현들에서 임의적으로 변경될 수 있다.
도 3b는 2개의 데이터 블록에 적용되는 해시 함수들에 기초한 인증 코드의 생성을 개략적으로 예시한다. 몇몇 구현들에서, 각각의 인증 코드는 2개 초과의 데이터 블록에 기초하여 생성될 수 있지만, 예시의 명료함을 위해 인증 코드가 2개의 데이터 블록을 보호하는 예가 여기에서 취해진다는 점에 유의해야 한다. 본 기술들의 기본 원리가 먼저 아래와 같이 제시된다:
Figure pct00001
L, L'을 2개의 512 비트 데이터 블록이라고 하자 - 여기서 L∥L'은 128 바이트 정렬 메모리 그래뉼임 -;
o 그러면 L = b0∥∥b1∥...∥b7이고 - 여기서 bi는 8개의 64 비트 데이터 아이템임 -,
o 그러면 L' = b'0∥b'1∥...∥
b'7이다 - 여기서 b'i는 8개의 64 비트 데이터 아이템임 -.
Figure pct00002
이어서 다중선형 해시가 다음과 같이 이들 각각으로부터 해시들을 계산하는 데 사용될 수 있다:
o H = α0
Figure pct00003
b0 + α1
Figure pct00004
b1 + … + α7
Figure pct00005
b7
o H' = α0
Figure pct00006
b'0 + α1
Figure pct00007
b'1 + … + α7
Figure pct00008
b'7
Figure pct00009
이어서 마지막으로 L∥L'의 인증 코드(MAC)가 H와 H'의 선형 조합으로서 계산될 수 있고, 이는 이어서 암호화된다:
o MAC (L,L') = 암호화(H + γ
Figure pct00010
H')
이와 같이 계산된 인증 코드는 추가로 절단될 수 있지만, 암호 계산은 또한 제1 및 제2 해시 값들의 표현에 이용 가능한 비트 공간(예를 들어, 64 비트 공간) 내에서 H와 H'을 조합하도록 제한될 수 있다. 다른 예에서, 해시 값들의 선형 조합은 둘 모두에 대한 상수 인자를 채용할 수 있다:
o MAC (L,L') = 암호화(δ
Figure pct00011
H + γ
Figure pct00012
H')
인자들(δ 및 γ) 중 어느 하나 또는 둘 모두는 동일할 수 있거나 상이할 수 있는 비밀 키 값들일 수 있다. 이에 따라 도 3b에 도시된 예시적인 실시예에서, 제1 및 제2 데이터 블록들(210, 212)은 각자의 입력들을 해시 함수들(214, 216)에 제공한다. 이러한 해시 함수들은 실제로는 서로 동일하며, 이 구현에서 병렬화된다. 이어서 이와 같이 생성된 각자의 제1 및 제2 해시 값들 중 어느 하나 또는 둘 모두는 해시 값 캐시(218)에 캐싱될 수 있는 반면, 둘 모두는 위에서 제시된 바와 같이 인증 값(MAC)을 계산하는 인증 코드 함수 회로부(220)에 대한 입력들을 형성한다. 그렇게 함에 있어서, 제1 및/또는 제2 상수들(222, 224)(인자들(δ 및 γ))이 위에서 설명된 바와 같이 채용될 수 있으며, 이들 중 어느 하나 또는 둘 모두는 비밀 키 값들일 수 있다. 몇몇 구현들에서, 인증 코드 저장소(186)는 보호 메모리에서 암호화되고, 이것은 인증 코드(해시들 H 및 H'의 조합)의 결정은 단지 유형 δ
Figure pct00013
H + γ
Figure pct00014
H'의 연산 - 즉, 그것을 암호화할 필요 없이 - 일 수 있다는 결과를 갖는다는 점에 유의한다.
도 4a는 도 2에 도시된 시스템-온-칩(152)과 같은 장치의 일부를 형성하는 컴포넌트들을 개략적으로 예시한다. 데이터 캐시(158), 메모리 제어기(160), 메모리 보호 유닛(162), 및 해시 값 캐시(170)는 도 2에 대하여 전술한 바와 같이 구성되고 동작되며, 그 설명은 간결함을 위해 여기서는 반복되지 않는다. 해시 값 캐시(170)는 본 명세서에서 "부분 해시 캐시"로도 지칭되는데, 왜냐하면 2개의 해시 값이 조합되어 인증 코드를 형성하는 방식 때문이다. 도 4a는 데이터 캐시(158) 및 해시 값 캐시(170)의 제어를 조정하기 위해 제공되는 캐시 조정 회로부(250)를 추가로 도시한다. 특히, 캐시 조정 회로부(250)는 데이터 캐시(158)와 연관된 캐시 제어 회로부(252)와 상호작용하고, 해시 값 캐시(170)와 연관된 캐시 제어 회로부(254)와 상호작용한다. 이에 따라 이러한 캐시 조정 회로부(250)는 다른 캐시의 현재 상태 및 콘텐츠를 고려하여, 캐시들(158, 170) 각각의 콘텐츠에 관한 정책들이 관리되는 것을 가능하게 한다. 단지 하나의 예를 들자면, 캐시 조정 회로부는, 캐시 라인이 데이터 캐시(158)에 있거나 그의 부분 해시가 부분 해시 캐시에 있다는 의미에서(그러나 둘 모두는 아님), 데이터 캐시(158)가 해시 값 캐시(170)와 배타적이라는 정책을 부과할 수 있다. 이것은 유익할 수 있는데, 그 이유는, 예를 들어, 다중선형 해시들을 계산하는 것은 매우 효율적이고, 이러한 접근법은 비록 얼마간의 가능한 경미한 추가적인 레이턴시 및 전력 소비를 가질지라도 캐시들에 대한 압박을 더욱 감소시킬 수 있기 때문이다.
도 4b는 (데이터 캐시 또는 해시 값 캐시를 나타낼 수 있는) 캐시 내의 엔트리들의 몇몇 상세들을 개략적으로 예시하며, 여기서 각각의 캐시 라인(260)은 데이터(예를 들어, 512 비트 캐시 라인의 예에서 8개의 64 비트 데이터 아이템의 세트)를 유지할 뿐만 아니라, 도 4b의 예에서 유효성 비트(264), 더티 비트(266), 및 우선순위 값(268)인, 캐시 라인과 연관된 추가의 메타데이터를 갖는다. 이러한 메타데이터의 아이템들은, 각각의 캐시에 어떤 콘텐츠를 유지할지(그리고 역으로 축출을 위해 어느 캐시 라인들을 선택할지)를 결정하기 위해, 캐시 조정 회로부(250)에 의해 조정되는 캐시 제어 회로부(252, 254)에 의해 사용된다.
도 5는 몇몇 실시예들에서 데이터 블록 L의 무결성이 그에 따라 검증되는 단계들의 시퀀스를 도시하는 흐름도이다. 흐름은 단계 300에서 시작되며, 여기서 데이터 블록 L 및 그의 연관된 인증 코드가 메모리로부터 검색된다. 이어서 302에서, L이 그와 페어링되는(즉, 함께 그들이 메모리 그래뉼을 형성함) 데이터 블록 L'으로부터 도출된 해시 값 H'이 해시 값 캐시에 존재하는지가 결정된다. 이러한 캐시 탐색이 히트를 야기하는 경우(즉, H'이 해시 값 캐시에 존재함), 흐름은 단계 304로 진행하며, 여기서 해시 값 H가 데이터 블록 L로부터 도출된다. 이어서 단계 306에서, 검증 인증 코드가 부분 해시들 H 및 H'으로부터 계산된다. 단계 302의 고려로 되돌아가, H'이 해시 값 캐시에 존재하지 않는 경우, 흐름은 단계 308로 진행하며, 여기서 L'이 데이터 캐시에 존재하는지가 결정된다. 이러한 탐색이 미스인 경우, 흐름은 L'이 메모리로부터 검색되는 310을 거쳐 진행한다. 이어서 단계 312에서, 해시 값 H'이 데이터 블록 L'으로부터 도출되고 흐름은 단계 304에서 재합류한다. 단계 314에서, 인증 코드들이 매칭되는지, 즉 단계 300에서 메모리로부터 검색된 데이터 블록 L과 연관된 인증 코드가 단계 306에서 계산된 검증 인증 코드와 동일한지가 결정된다. 그들이 매칭되는 경우, 흐름은 단계 316으로 진행하고 L의 무결성이 검증된다. 그들이 매칭되지 않는 경우, 흐름은 단계 318로 진행하고 L의 무결성이 검증되지 않는데, 즉 데이터 블록 L 및 그의 인증 코드(또는 단계 310을 거치는 경로가 취해진 경우 데이터 블록 L') 중 어느 하나 또는 둘 모두가 템퍼링된 것으로 보인다.
도 6은 몇몇 실시예들에서 데이터 캐시 미스에 응답하여 취해지는 단계들의 시퀀스를 도시하는 흐름도이다. 단계들의 흐름의 고려는 가장 유용하게는 단계 350에서 시작되며, 여기서 데이터 캐시 미스가 발생했는지가 확립된다. 이것이 사실일 때까지 흐름은 여기서 자체적으로 반복된다. 이에 따라 데이터 캐시 미스의 경우에 흐름은 단계 352로 진행하며, 여기서 미싱 캐시 라인의 검색이 트리거된다. 이어서 단계 354에서 (데이터 캐시 라인 검색이 진행되고 있는 동안), 대응하는 해시 값(예를 들어, 캐시 라인 L의 전술한 예에서의 해시 값 H)이 해시 값 캐시에 존재하는지가 결정된다. 존재하는 경우, 이러한 해시 값 H를 유지하는 캐시 라인을 축출 후보로 만들기 위한 단계들이 취해지는데, 즉 다음에 해시 값 캐시로의 할당이 발생할 필요가 있을 때, H를 유지하는 캐시 라인이 축출된 캐시 라인일 것이다(또는 적어도 축출된 캐시 라인일 가능성이 더 많다). 데이터 캐시 및 해시 값 캐시의 제어의 이러한 조정은 예를 들어 도 4a에 도시된 캐시 조정 회로부(250)와 같은 디바이스에 의해 유발될 수 있고, 주어진 캐시 라인의 축출의 가능성은 예를 들어 도 4b에 도시된 우선순위 값(268)과 같은, 그 캐시 라인과 연관된 메타데이터의 변경에 의해 영향을 받을 수 있다. 우선순위 값(268)은 예를 들어 2 비트 값일 수 있으며, 따라서 4개의 우선순위의 범위가 정의될 수 있다.
도 7은 몇몇 실시예들에서 해시 값 캐시 미스가 발생할 때 취해지는 단계들의 시퀀스를 도시하는 흐름도이다. 단계들의 흐름의 고려는 가장 유용하게는 단계 400에서 시작되며, 여기서 해시 캐시 미스가 발생했는지가 확립된다. 이것이 사실일 때까지 흐름은 여기서 자체적으로 반복된다. 이에 따라 해시 캐시 미스의 경우에, 흐름은 단계 402로 진행하며, 여기서 대응하는 데이터 캐시 라인(예를 들어, 해시 값 H의 전술한 예에서의 캐시 라인 L)이 해시 값 캐시에 존재하는지가 결정된다. 존재하는 경우, 흐름은 단계 404로 진행하고 요구된 해시 값 H가 데이터 캐시 라인 L로부터 계산된다. 그러나, 대응하는 데이터 캐시 라인에 대한 탐색이 또한 미스인 경우, 흐름은 단계 406으로 진행하며, 여기서 데이터 캐시 라인 L이 메모리로부터 검색된다. 일단 데이터 캐시 라인 L이 검색되면, 단계 404에서, 해시 값 H가 그것으로부터 계산될 수 있다. 도 6의 경우에서와 같이, 데이터 캐시 및 해시 값 캐시의 제어의 조정은 예를 들어 도 4a에 도시된 캐시 조정 회로부(250)와 같은 디바이스에 의해 유발될 수 있다.
도 8a, 도 8b, 및 도 8c는 캐시 조정 회로부가 데이터 캐시 및 해시 값 캐시 중 어느 하나 또는 둘 모두에 의해 유지된 콘텐츠에 영향을 미칠 수 있는 다양한 방식들을 개략적으로 예시한다. 도 8a는 몇몇 실시예들에서 캐시 조정 회로부가 해시 값 캐시에서의 탐색에 기초하여 데이터 캐시에서의 축출 후보의 선택에 영향을 미치는 방식을 개략적으로 예시한다. 도 4a의 예의 데이터 캐시(158), 캐시 조정 회로부(250), 및 해시 값 캐시(170)가 예시 목적으로 여기서 사용된다. 캐시 제어 회로부(250)는 데이터 캐시(158)로부터 데이터 캐시 라인 축출 후보들에 관한 정보를 수신한다. 예를 들어, 이러한 정보는 메타데이터(264, 266, 268)의 일부 또는 전부를 포함할 수 있다. 또한, 이러한 정보는 데이터 캐시(158)의 그의 관리의 일부로서 캐시 제어 회로부(252)에 의해 결정된 바와 같은, 하나 이상의 의도된 희생자 캐시 라인의 표시와 같은, 다른 정보를 포함할 수 있다. 캐시 조정 회로부(250)는 (비침습적 체크에 의해, 또는 미스에 응답하여 해시 값이 해시 값 캐시에 들어가게 할 탐색을 트리거함으로써) 주어진 해시 값이 해시 값 캐시(170)에 현재 존재하는지를 결정할 수 있다. 해시 값 캐시(170)의 현재 콘텐츠에 의존하여, 캐시 조정 회로부(250)는 해시 값 캐시의 콘텐츠에 대한 캐시 조정 회로부의 지식에 기초하여 선정된, 선택된 축출 후보를 데이터 캐시(158)에(즉, 그의 제어 회로부(252)에) 표시할 수 있다. 주어진 데이터 캐시 라인의 축출의 가능성은 데이터 캐시 제어 회로부(252)의 제어 하에 데이터 캐시 라인과 연관된 (우선순위 값(268)과 같은) 관련 메타데이터의 변경을 야기함으로써 캐시 조정 회로부(250)에 의해 영향을 받을 수 있다.
도 8b는 몇몇 실시예들에서 캐시 조정 회로부가 데이터 캐시 내의 희생자 캐시 라인에 관한 정보에 기초하여 해시 값 캐시 내의 해시 값들의 저장에 영향을 미칠 수 있는 방식을 개략적으로 예시한다. 한 번 더 도 4a의 예의 데이터 캐시(158), 캐시 조정 회로부(250), 및 해시 값 캐시(170)가 예시 목적으로 여기서 사용된다. 캐시 제어 회로부(250)는 할당이 발생할 때 희생자 캐시 라인인(또는 희생자 캐시 라인일) 선택된 캐시 라인을 표시하는 정보를 수신한다. 캐시 조정 회로부(250)는 데이터 캐시 라인 L이 희생자 캐시 라인이라는 표시에 기초하여 관련된 해시 값 라인 H(또는 H')에 대한 해시 값 캐시에서 탐색/할당을 야기할 수 있다.
도 9는 몇몇 실시예들에서 캐시 조정 회로부가 해시 값 캐시 및 데이터 캐시로부터의 사용 및/또는 변경(클린/더티) 정보에 기초하여 데이터 캐시 및 해시 값 캐시에서의 희생자 선택들에 영향을 미치거나 희생자 선택들을 제어할 수 있는 방식을 개략적으로 예시한다. 다시, 도 4a의 예의 데이터 캐시(158), 캐시 조정 회로부(250), 및 해시 값 캐시(170)가 예시 목적으로 여기서 사용된다. 캐시 제어 회로부(250)는, 도 9의 예에서 사용 비트들(450, 452) 및 클린/더티 비트들(454, 456)을 포함하는, 메타데이터를 데이터 캐시(158) 및 해시 값 캐시(170) 각각으로부터 수신한다. 사용 비트들(450, 452)은 대응하는 캐시 라인의 사용이 판독이었는지, 기입이었는지, 또는 둘 모두였는지를 나타낸다. 클린/더티 비트들(454, 456)은 대응하는 캐시 라인이 메모리로부터의 그의 검색 이후로 변경되지 않았는지 또는 변경되었는지(그리고 그에 따라 축출될 때 다시 메모리에 기입되어야 할 것인지)를 나타낸다. 캐시 조정 회로부(250)는 데이터 캐시(158) 및 해시 값 캐시(170)에 대한 희생자 선택 표시들을 생성하기 위해 이러한 정보를 함께 가져온다. 예를 들어, 주어진 캐시 라인과 연관된 우선순위 값(268)의 변경을 야기하는 것을 통해, 캐시 조정 회로부는 그 캐시 라인을 더 가능성이 많은 후보 희생자 라인으로 만들 수 있다.
따라서 데이터 캐시(158) 및 해시 값 캐시(170)에 대한 광범위한 조정된 캐시 정책들이 동작될 수 있다. 몇몇 예시적인 정책들이 아래에 주어진다:
데이터 캐시를 채움:
Figure pct00015
라인 L이 오프-칩 메모리로부터 데이터 캐시에 들어올 때, H 및 H' 둘 모두는 무결성 체크들의 일부로서 검사될 필요가 있다. 이 시점에서 H'을 캐싱하는 것은 어떤 나중 시점에서의 변경된('더티해진') L의 신속한 축출을 허용한다.
캐시에 기입
Figure pct00016
캐시가 용량까지 채워짐에 따라(또는 오히려, 개념상 "가득 찬" 상태에 도달하기 전의 시점에), 후보 희생자 L(또는 희생자들)이 선택되고 해시-캐시는 그의 페어링된 라인 L'의 해시 값 H'으로 미리 채워지게 될 수 있으며, 따라서 희생자 라인 L이 다시 메모리에 더 빨리 기입될 수 있다.
Figure pct00017
데이터 캐시 라인 L은 그의 파트너 해시 값 H'이 이미 해시 값 캐시에 존재하는 경우 축출 후보로서 우선적으로 선택될 수 있는데, 그 이유는 L은 그것이 사실이 아닌 다른 데이터 캐시 라인보다 더 편리하게 축출될 수 있기 때문이다. 구현에 따라, 이러한 접근법과 (그의 해시 값을 계산하기 위해 L'이 페치될 것을 필요로 할) 기본 '표준' 교체 정책의 준수 사이에서 선택이 이루어질 수 있다.
Figure pct00018
업데이트된 해시 값 H를 해시 값 캐시에 우선적으로 유지하는 것은 다음의 때에 선택될 수 있다:
o 연관된 라인 L'이 가까운 미래에 기입될 가능성이 있거나;
o 라인 L이 가까운 미래에 다시 기입될 가능성이 있을 때.
캐시 일관성
Figure pct00019
배타적 저장 정책이 구현되지 않을 때(즉, 데이터 값 L 및 그의 대응하는 해시 값 H가 각각 그들 각자의 캐시들에 동시에 유지될 수 있음), H의 상태는 일관성 있게 유지될 수 있다(즉, L이 업데이트될 때 H가 업데이트됨).
조정된 캐시 교체 정책들은 예를 들어 다음과 같을 수 있다:
Figure pct00020
L'이 판독될 가능성이 있을 때 L 및 H(클린)를 우선적으로 유지함.
Figure pct00021
L이 기입될 가능성이 있을 때 또는 L'이 판독될 가능성이 있을 때 L 및 H(더티)를 우선적으로 유지함.
Figure pct00022
L이 기입될 가능성이 있을 때 또는 L'이 판독될 가능성이 있을 때 L 및 H'을 우선적으로 유지함.
다른 트레이드-오프들이 구현에 따라 밸런싱될 수 있는데, 예를 들어 한편으로는 데이터 캐시 내의 L의 부존재시에 H 및 H'을 해시 값 캐시에 유지하는 것은 L에 대한 빠른 저장을 허용하고 L 라인 채움들에 대한 대역폭을 감소시키지만, 다른 한편으로는 데이터 값 캐시로부터의 L의 부존재는 L이 최근에 사용되지 않았다는 것을 표시한다(어떤 형태의 최소-최근-사용 기반 기본 교체 정책을 가정함).
간단한 전체 요약으로, 메모리의 보호 영역에 저장된 데이터의 무결성을 보호하기 위한 장치들 및 방법이 개시된다. 메모리의 보호 영역 내의 데이터가 데이터 블록들에서 검색되고, 인증 코드가 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된다. 인증 코드의 계산은 제1 데이터 블록으로부터 결정된 제1 해시 값 및 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함한다. 해시 값 캐시가 메모리의 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 저장하기 위해 제공된다. 제1 데이터 블록 및 그의 연관된 인증 코드가 메모리로부터 검색될 때, 해시 값 캐시에서의 제2 해시 값에 대한 탐색이 수행되고, 그 데이터 블록이 속하는 메모리 그래뉼에 대해 검증 인증 코드가 계산된다. 제1 데이터 블록의 무결성은 검증 인증 코드가 검색된 인증 코드와 매칭되는 것에 의존한다.
본 출원에서, 단어들 "... 하도록 구성된"은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 맥락에서, "구성"은 하드웨어 또는 소프트웨어의 상호 접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 처리 디바이스가 그 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은 장치 요소가 정의된 동작을 제공하기 위해 임의의 방식으로 변경될 필요가 있다는 것을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에서 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않으며, 첨부된 청구항들에 의해 한정된 바와 같은 본 발명의 범위로부터 벗어남이 없이 실시예들에서 다양한 변경들, 추가들 및 수정들이 당업자에 의해 이루어질 수 있다는 것이 이해되어야 한다. 예를 들어, 본 발명의 범위로부터 벗어남이 없이 독립 청구항들의 특징들과 종속 청구항들의 특징들의 다양한 조합이 이루어질 수 있다.

Claims (20)

  1. 장치로서,
    메모리의 보호 영역에서 메모리 그래뉼(memory granule)들의 무결성을 검증하기 위한 메모리 보호 회로부; 및
    상기 메모리의 상기 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 저장하기 위한 해시 값 캐시를 포함하며,
    제1 데이터 블록, 및 상기 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 상기 메모리로부터의 검색이 발생할 때, 상기 메모리 보호 회로부는 상기 검색에 응답하여 상기 메모리 그래뉼에 대한 검증 인증 코드를 계산하고, 상기 제1 데이터 블록의 무결성은 상기 검증 인증 코드가 상기 인증 코드와 매칭되는 것에 의존하고,
    상기 검증 인증 코드의 계산은 상기 제1 데이터 블록으로부터 결정된 제1 해시 값 및 상기 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함하고,
    상기 메모리 보호 회로부는 상기 검증 인증 코드의 상기 계산이 요구될 때 상기 해시 값 캐시에서 상기 제2 해시 값을 탐색하도록 배열되는, 장치.
  2. 제1항에 있어서, 상기 암호 계산은 상기 제1 해시 값 및 상기 제2 해시 값 각각에 대해 상기 장치에 의해 표현될 수 있는 모든 가능한 값들의 세트에 의해 정의되는 유한 필드에서의 상기 제1 해시 값과 상기 제2 해시 값의 선형 조합을 포함하는, 장치.
  3. 제2항에 있어서, 상기 선형 조합은 상기 제1 해시 값 및 상기 제2 해시 값 중 적어도 하나에 상수를 곱하는 것을 포함하는, 장치.
  4. 제2항에 있어서, 상기 선형 조합은 상기 제1 해시 값에 제1 상수를 곱하고 상기 제2 해시 값에 제2 상수를 곱하는 것을 포함하는, 장치.
  5. 제3항에 있어서, 상기 상수는 비밀 키 값인, 장치.
  6. 제4항에 있어서, 상기 제1 상수는 제1 비밀 키 값이고 상기 제2 상수는 제2 비밀 키 값인, 장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 메모리로부터 검색된 데이터 블록들의 사본들을 저장하기 위한 데이터 블록 캐시를 추가로 포함하며, 상기 데이터 블록들의 사본들은 상기 데이터 블록 캐시의 캐시 라인들인, 장치.
  8. 제7항에 있어서, 상기 데이터 블록 캐시 및 상기 해시 값 캐시 내의 저장을 제어하기 위한 캐시 콘텐츠 조정 제어 회로부를 추가로 포함하며, 상기 데이터 블록 캐시 내의 저장은 상기 해시 값 캐시의 콘텐츠에 의존하고, 상기 해시 값 캐시 내의 저장은 상기 데이터 블록 캐시의 콘텐츠에 의존하는, 장치.
  9. 제8항에 있어서, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 데이터 블록 캐시 및 상기 해시 값 캐시에 배타적 저장 정책을 부과하도록 배열되어, 데이터 블록 및 연관된 해시 값에 대해, 배타적으로, 상기 데이터 블록이 상기 데이터 블록 캐시에 저장되거나 상기 연관된 해시 값이 상기 해시 값 캐시에 저장되는, 장치.
  10. 제8항 또는 제9항에 있어서, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 데이터 블록 캐시에 대한 희생자 선택 정책을 관리하도록 배열되고,
    희생자 데이터 블록의 선택의 가능성은, 상기 희생자 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 상기 추가의 데이터 블록으로부터 결정된 해시 값이 현재 상기 해시 값 캐시에 저장되어 있을 때 증가되는, 장치.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 데이터 블록 캐시에 대한 희생자 선택 정책을 관리하도록 배열되고,
    상기 데이터 블록 캐시로부터의 축출이 요구되기 전에, 희생자 데이터 블록이 선택되고,
    상기 희생자 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 상기 추가의 데이터 블록으로부터 결정된 해시 값은 상기 해시 값 캐시에 저장되게 되는, 장치.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서, 상기 데이터 블록들에 대한 사용 표시들을 저장하기 위한 데이터 블록 사용 저장소를 추가로 포함하며, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 데이터 블록 캐시에 대한 희생자 선택 정책을 관리하도록 배열되고,
    희생자 데이터 블록의 선택의 가능성은, 상기 희생자 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 상기 사용 표시들이 미리 결정된 임계치를 초과하는 상기 추가의 데이터 블록의 사용을 나타낼 때 감소되는, 장치.
  13. 제8항 내지 제12항 중 어느 한 항에 있어서, 상기 데이터 블록들에 대한 사용 표시들을 저장하기 위한 데이터 블록 사용 저장소를 추가로 포함하며, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 해시 값 캐시에 대한 희생자 선택 정책을 관리하도록 배열되고,
    희생자 해시 값의 선택의 가능성은, 상기 희생자 해시 값이 결정되는 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록에 대해, 상기 사용 표시들이 미리 결정된 임계치를 초과하는 상기 추가의 데이터 블록의 사용을 나타낼 때 감소되는, 장치.
  14. 제13항에 있어서, 상기 희생자 해시 값은 클린하고, 상기 추가의 데이터 블록의 상기 사용은 상기 추가의 데이터 블록의 판독인, 장치.
  15. 제8항 내지 제14항 중 어느 한 항에 있어서, 상기 데이터 블록들에 대한 사용 표시들을 저장하기 위한 데이터 블록 사용 저장소를 추가로 포함하며, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 해시 값 캐시에 대한 희생자 선택 정책을 관리하도록 배열되고,
    희생자 해시 값의 선택의 가능성은 상기 희생자 해시 값이 더티하고 상기 사용 표시들이 미리 결정된 임계치를 초과하는 상기 데이터 블록의 사용을 나타내고 상기 데이터 블록의 상기 사용이 상기 데이터 블록에 대한 기입일 때 감소되는, 장치.
  16. 제8항 내지 제15항 중 어느 한 항에 있어서, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 데이터 블록 캐시 내의 데이터 블록에 대한 판독 액세스에 응답하여 상기 해시 값 캐시에서의 대응하는 해시 값에 대한 탐색을 트리거하는, 장치.
  17. 제8항 내지 제16항 중 어느 한 항에 있어서, 상기 캐시 콘텐츠 조정 제어 회로부는 상기 데이터 블록 캐시 내의 데이터 블록에 대한 기입 액세스에 응답하여 상기 데이터 블록과 함께 메모리 그래뉼을 인접하여 형성하는 추가의 데이터 블록으로부터 결정된 추가의 해시 값에 대한 상기 해시 값 캐시에서의 탐색을 트리거하는, 장치.
  18. 제16항에 있어서, 상기 대응하는 해시 값에 대한 상기 탐색이 상기 해시 값 캐시에서의 미스를 야기할 때, 상기 해시 값 캐시로의 상기 해시 값의 할당이 억제되는, 장치.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서, 해시 값들에 대한 암호화된 저장소를 추가로 포함하며, 상기 암호 계산은 상기 제1 데이터 블록으로부터 결정된 암호화된 제1 해시 값과 상기 제2 데이터 블록으로부터 결정된 암호화된 제2 해시 값의 선형 조합이고, 상기 암호화된 제1 해시 값 및 상기 암호화된 제2 해시 값은 상기 해시 값들에 대한 암호화된 저장소로부터 검색되는, 장치.
  20. 메모리의 보호 영역에서 메모리 그래뉼들의 무결성을 검증하는 방법으로서,
    상기 메모리의 상기 보호 영역으로부터 검색된 데이터 블록들로부터 결정된 해시 값들을 해시 값 캐시에 저장하는 단계;
    제1 데이터 블록, 및 상기 제1 데이터 블록 및 제2 데이터 블록을 인접하여 포함하는 메모리 그래뉼과 연관된 인증 코드의 상기 메모리로부터의 검색이 발생할 때, 상기 메모리 그래뉼에 대한 검증 인증 코드를 계산하는 단계 - 상기 제1 데이터 블록의 무결성은 상기 검증 인증 코드가 상기 인증 코드와 매칭되는 것에 의존하고, 상기 검증 인증 코드를 계산하는 단계는 상기 제1 데이터 블록으로부터 결정된 제1 해시 값 및 상기 제2 데이터 블록으로부터 결정된 제2 해시 값에 기초한 암호 계산을 포함함 -; 및
    상기 검증 인증 코드의 상기 계산이 요구될 때 상기 해시 값 캐시에서 상기 제2 해시 값을 탐색하는 단계를 포함하는, 방법.
KR1020237004383A 2020-07-10 2021-07-07 캐싱된 부분 해시 값들을 사용하는 메모리 보호 KR20230036129A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/925,723 US12010242B2 (en) 2020-07-10 2020-07-10 Memory protection using cached partial hash values
US16/925,723 2020-07-10
PCT/GB2021/051733 WO2022008913A1 (en) 2020-07-10 2021-07-07 Memory protection using cached partial hash values

Publications (1)

Publication Number Publication Date
KR20230036129A true KR20230036129A (ko) 2023-03-14

Family

ID=77051063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237004383A KR20230036129A (ko) 2020-07-10 2021-07-07 캐싱된 부분 해시 값들을 사용하는 메모리 보호

Country Status (5)

Country Link
US (1) US12010242B2 (ko)
KR (1) KR20230036129A (ko)
CN (1) CN115777101A (ko)
GB (1) GB2611196A (ko)
WO (1) WO2022008913A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022147763A (ja) * 2021-03-23 2022-10-06 キヤノン株式会社 情報処理装置及びプログラムの検証方法とプログラム

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067068A (en) * 1996-04-16 2000-05-23 Canon Business Machines, Inc. Scrollable display window
US6266705B1 (en) * 1998-09-29 2001-07-24 Cisco Systems, Inc. Look up mechanism and associated hash table for a network switch
US20010034839A1 (en) * 1999-12-24 2001-10-25 Guenter Karjoth Method and apparatus for secure transmission of data and applications
US6629198B2 (en) * 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
US8065277B1 (en) * 2003-01-17 2011-11-22 Daniel John Gardner System and method for a data extraction and backup database
US7394809B2 (en) * 2003-03-31 2008-07-01 Intel Corporation Method and apparatus for packet classification using a forest of hash tables data structure
US7076622B2 (en) * 2003-09-30 2006-07-11 International Business Machines Corporation System and method for detecting and sharing common blocks in an object storage system
WO2006008847A1 (ja) * 2004-07-20 2006-01-26 Fujitsu Limited 電子文書管理システム
JP4576936B2 (ja) * 2004-09-02 2010-11-10 ソニー株式会社 情報処理装置、情報記録媒体、コンテンツ管理システム、およびデータ処理方法、並びにコンピュータ・プログラム
WO2006065050A1 (en) * 2004-12-13 2006-06-22 Lg Electronics Inc. Method for securing content on a recording medium and a recording medium storing content secured by the method
US8184811B1 (en) * 2005-10-12 2012-05-22 Sprint Spectrum L.P. Mobile telephony content protection
US8826023B1 (en) * 2006-06-30 2014-09-02 Symantec Operating Corporation System and method for securing access to hash-based storage systems
WO2008070688A1 (en) * 2006-12-04 2008-06-12 Commvault Systems, Inc. Systems and methods for creating copies of data, such as archive copies
US8095803B1 (en) * 2007-03-09 2012-01-10 Hewlett-Packard Development Company, L.P. Protecting the privacy of files referenced by their hash
US7680998B1 (en) * 2007-06-01 2010-03-16 Emc Corporation Journaled data backup during server quiescence or unavailability
US8683213B2 (en) * 2007-10-26 2014-03-25 Qualcomm Incorporated Progressive boot for a wireless device
US8825971B1 (en) * 2007-12-31 2014-09-02 Emc Corporation Age-out selection in hash caches
US8621240B1 (en) * 2007-12-31 2013-12-31 Emc Corporation User-specific hash authentication
US20100153732A1 (en) * 2008-12-15 2010-06-17 Stmicroelectronics Rousset Sas cache-based method of hash-tree management for protecting data integrity
US8112585B2 (en) * 2009-04-30 2012-02-07 Netapp, Inc. Method and apparatus for dynamically switching cache policies
JP5749257B2 (ja) 2009-06-26 2015-07-15 トラステッド ロジック データ検証方法
US8738668B2 (en) * 2009-12-16 2014-05-27 Renew Data Corp. System and method for creating a de-duplicated data set
US8261085B1 (en) * 2011-06-22 2012-09-04 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US10353818B1 (en) * 2013-02-27 2019-07-16 EMC IP Holding Company LLC Dataset paging cache for storage system
US20140304464A1 (en) * 2013-04-03 2014-10-09 Lsi Corporation Methods and systems for performing deduplication in a data storage system
US9891857B2 (en) * 2013-07-15 2018-02-13 International Business Machines Corporation Utilizing global digests caching in similarity based data deduplication
US9892048B2 (en) * 2013-07-15 2018-02-13 International Business Machines Corporation Tuning global digests caching in a data deduplication system
WO2015084399A1 (en) * 2013-12-06 2015-06-11 Hewlett-Packard Development Company, L.P. File retention
US10728035B1 (en) * 2013-12-31 2020-07-28 EMC IP Holding Company LLC Using double hashing schema to reduce short hash handle collisions and improve memory allocation in content-addressable storage systems
ES2647115T3 (es) * 2014-06-12 2017-12-19 Nagravision S.A. Sistema y método para la carga de datos segura en una memoria caché
US9824236B2 (en) * 2015-05-19 2017-11-21 Accenture Global Services Limited System for anonymizing and aggregating protected information
US9612967B1 (en) * 2015-09-25 2017-04-04 Dell Products, L.P. Cache load balancing by reclaimable block migration
US10222987B2 (en) * 2016-02-11 2019-03-05 Dell Products L.P. Data deduplication with augmented cuckoo filters
US20180196609A1 (en) * 2017-01-12 2018-07-12 Qualcomm Incorporated Data Deduplication Using Multi-Chunk Predictive Encoding
US11403019B2 (en) * 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
CN110019052A (zh) * 2017-07-26 2019-07-16 先智云端数据股份有限公司 分布式重复数据删除的方法及储存系统
US10613869B2 (en) * 2018-03-29 2020-04-07 Arm Limited Branch target address provision
US11514001B2 (en) * 2018-04-17 2022-11-29 EMC IP Holding Company LLC Concurrent computations operating on same data for CPU cache efficiency
CN109885576B (zh) * 2019-03-06 2020-12-01 珠海金山网络游戏科技有限公司 一种哈希表创建方法及系统、计算设备及存储介质
US10990310B2 (en) * 2019-04-24 2021-04-27 EMC IP Holding Company LLC Sub-block data deduplication
US10951697B2 (en) * 2019-06-07 2021-03-16 Holo Limited Holochain—A framework for distributed applications
US11573928B2 (en) * 2020-03-13 2023-02-07 EMC IP Holding Company LLC Techniques for data deduplication

Also Published As

Publication number Publication date
GB202217275D0 (en) 2023-01-04
CN115777101A (zh) 2023-03-10
US12010242B2 (en) 2024-06-11
GB2611196A (en) 2023-03-29
US20220014379A1 (en) 2022-01-13
WO2022008913A1 (en) 2022-01-13

Similar Documents

Publication Publication Date Title
CN110945509B (zh) 用于控制对受保护存储器区域中数据的访问的设备和方法
US10733313B2 (en) Counter integrity tree for memory security
EP3379448B1 (en) Method and system for operating a cache in a trusted execution environment
KR101880075B1 (ko) 중복 제거 기반 데이터 보안
US11658808B2 (en) Re-encryption following an OTP update event
JP4140863B2 (ja) 暗号によって保護されたページング・システム
US11295025B2 (en) Probabilistic memory safety using cryptography
US11775177B2 (en) Integrity tree for memory integrity checking
KR102117838B1 (ko) 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법
KR20230036129A (ko) 캐싱된 부분 해시 값들을 사용하는 메모리 보호
US11281434B2 (en) Apparatus and method for maintaining a counter value
KR102365263B1 (ko) 하드웨어 기반의 gpu 메모리 보호를 위한 효율적인 암호화 방법 및 장치
Abdullah et al. Plutus: Bandwidth-efficient memory security for GPUs
US20240080193A1 (en) Counter integrity tree
US20230113906A1 (en) An apparatus and method of controlling access to data stored in a non-trusted memory
Tine et al. Pagevault: securing off-chip memory using page-based authentication
Thomas et al. Baobab Merkle Tree for Efficient Secure Memory