KR20180094118A - 메모리 동작 암호화 - Google Patents

메모리 동작 암호화 Download PDF

Info

Publication number
KR20180094118A
KR20180094118A KR1020187022779A KR20187022779A KR20180094118A KR 20180094118 A KR20180094118 A KR 20180094118A KR 1020187022779 A KR1020187022779 A KR 1020187022779A KR 20187022779 A KR20187022779 A KR 20187022779A KR 20180094118 A KR20180094118 A KR 20180094118A
Authority
KR
South Korea
Prior art keywords
memory
interface
key
copy
encrypted
Prior art date
Application number
KR1020187022779A
Other languages
English (en)
Other versions
KR102430042B1 (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 KR20180094118A publication Critical patent/KR20180094118A/ko
Application granted granted Critical
Publication of KR102430042B1 publication Critical patent/KR102430042B1/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0457Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • 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
    • 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)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

프로세싱 시스템(100)은 상호 연결부(106)에 결합 가능한 제 1 인터페이스(112)를 가진 프로세싱 모듈(102)을 포함한다. 제 1 인터페이스는 제 1 암호화 데이터 및 암호화된 메모리 어드레스를 생성하기 위해 제 1 키(146) 및 제 1 피드백-기반 암호 프로세스를 사용하여 저장 동작의 저장 데이터에 대한 표현 및 메모리 어드레스를 암호화하기 위해 제 1 암호 엔진(124)을 포함한다. 메모리 모듈(104)은 상호 연결부에 결합된 제 2 인터페이스(128)를 포함한다. 제 2 인터페이스는 저장 데이터의 표현의 사본 및 메모리 어드레스의 사본을 생성하기 위해 제 2 키(148) 및 제 2 피드백-기반 암호 프로세스를 사용하여 제 1 암호화 데이터 및 암호화된 메모리 어드레스를 복호화하기 위해 제 2 암호 엔진(132)을 포함한다. 제 2 인터페이스는 추가로 메모리 어드레스의 사본에 기초하여 메모리 코어의 메모리 위치(150)로 저장 데이터의 표현의 사본을 저장한다.

Description

메모리 동작 암호화
본 개시는 전반적으로 데이터 저장을 위한 메모리를 이용한 프로세싱 시스템들에 관한 것이며, 보다 상세하게는 암호화 메모리를 이용한 프로세싱 시스템들에 관한 것이다.
암호화 메모리(즉, 메모리의 콘텐트들이 암호화되는)의 사용은 데이터 소유자가 실행을 위해 사용된 하드웨어에 대한 물리적 제어를 갖지 않는 설정들에서 보안을 강화하기 위한 방식으로서 제안되어 왔다. 그러나, 암호화 메모리에 대한 종래의 접근법들은 메모리 액세스들의 예측 불가능, 및 통상적인 프로세서-메모리 아키텍처의 제약들을 고려하여 캐시 라인들을 개별적으로 및 별개로 암호화하기 위한 요구로 인해 기본적인 공격 기술들에 취약하다.
종래의 암호화 메모리 구현들은 통상적으로 메모리에 저장될 데이터가 단지 사용될 암호화 키 및 데이터의 함수로서 암호화되는 전자 코드북(ECB)-기반 암호화 기법들에 의존한다. 이러한 접근법은, 동일한 평문을 가진 임의의 두 개의 캐시 라인들이 동일한 암호문을 야기하며, 이것은 암호화된 데이터의 관찰자에게 데이터에 대한 정보를 누설할 수 있다는 사살과 같은, 다수의 약점들을 갖는다. 이러한 정보는 ECB가 데이터의 통계적 속성들이 암호화된 데이터에 대한 정보를 추론하며 가능하게는 심지어 데이터를 암호화하기 위해 사용된 암호화 키를 판독하기 위해 사용될 수 있는 "사전(dictionary)" 공격들을 당하기 쉽게 만든다. 종래의 ECB-기반 암호화 메모리 구현들의 또 다른 약점은 그것들이 공격자가 암호화된 데이터를 변질시키거나 또는 겹쳐 쓸 수 있는 메모리 및 프로세서 사이에서 상호 연결부로 트래픽을 주입하는 데이터 "주입(injection)" 공격들을 당하기 쉽다는 것이다. 이러한 공격들을 좌절시키기 위해, 종래의 암호화 메모리 시스템들은 종종 메모리의 전체 콘텐트들에 걸쳐 트리-기반 구조들의 생성에 의존하며, 따라서 각각의 로드 동작 또는 저장 동작을 인증하기 위해 많은 메모리 액세스들을 요구한다.
본 개시는 수반되는 도면들을 참조함으로써 보다 양호하게 이해될 수 있으며, 그것의 다수의 특징들 및 이점들이 이 기술분야의 숙련자들에게 명백해질 수 있다. 상이한 도면들에서 동일한 참조 심볼들의 사용은 유사한 또는 동일한 아이템들을 나타낸다.
도 1은 몇몇 실시예들에 따른 암호화 메모리를 이용하는 프로세싱 시스템의 블록도이다.
도 2는 몇몇 실시예들에 따른 도 1의 프로세싱 시스템에서 보안 메모리 액세스 동작을 수행하기 위한 방법을 예시한 흐름도이다.
도 3은 몇몇 실시예들에 따른 인증을 위한 암호 해시 및 일련 번호 중 하나 또는 양쪽 모두를 이용한 쌍을 이룬 메모리 인터페이스들의 예시적인 구현을 예시한 블록도이다.
도 4는 몇몇 실시예들에 따른 블록 체인에 기초한 암호 엔진을 예시한 블록도이다.
도 5는 몇몇 실시예들에 따른 도 1의 프로세싱 시스템의 예시적인 적층된 지능형 메모리(processor-in-memory; PIM) 구현을 예시한 다이어그램이다.
도 1 내지 도 5는 프로세싱 시스템에서 강화된 암호화 메모리를 이용하기 위한 예시적인 방법들 및 시스템들을 예시한다. 적어도 하나의 실시예에서, 프로세싱 시스템은 메모리 버스 또는 다른 상호 연결부를 통해 메모리 모듈에 결합된 프로세싱 모듈을 포함한다. 저장-형 메모리 액세스 동작(즉, "저장 동작(store operation)")을 위해, 프로세싱 모듈은 제 1 암호문을 생성하기 위해 제 1 키를 사용하여 저장될 캐시 라인 또는 다른 데이터를 암호화한다. 프로세싱 모듈의 암호 엔진은 그 후 제 2 암호문을 생성하기 위해 제 2 키를 사용하여 제 1 암호문을 암호화한다. 암호 엔진은 또한 암호화된 메모리 어드레스를 생성하기 위해 제 2 키 또는 또 다른 키를 사용하여 저장 동작과 연관된 메모리 어드레스를 암호화한다. 제 2 암호화 데이터 및 암호화된 메모리 어드레스는 상호 연결부를 통해 메모리 모듈로 송신된다. 메모리 모듈은 각각, 메모리 어드레스 및 제 1 암호화된 암호문의 사본들을 획득하기 위해 암호화된 메모리 어드레스 및 제 2 암호화된 암호문을 복호화한다. 메모리 모듈은 그 후 메모리 어드레스의 사본에 의해 어드레싱된 메모리 위치에서 제 1 암호화된 암호문의 사본을 저장한다.
로드-형 메모리 액세스 동작(즉, "로드 동작(load operation)")을 위해, 프로세싱 모듈은 암호화된 메모리 어드레스를 생성하기 위해 제 2 키 또는 또 다른 키를 사용하여 로드 동작과 연관된 메모리 어드레스를 암호화하며 이러한 암호화된 메모리 어드레스를 상호 연결부를 통해 메모리 모듈로 송신한다. 메모리 모듈은 메모리 어드레스의 사본을 획득하기 위해 암호화된 메모리 어드레스를 복호화하며 메모리 어드레스의 사본에 의해 어드레싱된 메모리 위치에 저장된 제 1 암호문을 액세스한다. 메모리 모듈은 그 후 제 2 암호문을 생성하기 위해 제 1 암호문을 추가로 암호화하며, 이것은 인터페이스를 통해 프로세싱 모듈로 송신된다. 프로세싱 모듈에서, 제 2 암호문은 제 1 암호문의 사본을 생성하기 위해 복호화되며, 제 1 암호문의 사본은 로드 동작에 의해 찾아진 로드 데이터의 사본을 생성하기 위해 복호화된다.
적어도 일 실시예에서, 각각의 메모리 모듈 및 각각의 프로세싱 모듈 사이에서의 연결은 상호 연결부의 별개의, 전용 인스턴스들 및 상호 연결부의 양쪽 측면들에서의 대응하는 암호 엔진들에 의해 제공된다. 이러한 구성은 메모리 모듈에서의 암호 엔진이 프로세싱 모듈에서 암호 엔진과 동일한 시퀀스의 데이터 액세스들을 관찰하는 상황을 야기한다. 따라서, 종래의 암호화 메모리 구현들과 대조적으로, 암호 엔진들은 암호화되는 현재 캐시 라인 또는 다른 자료의 함수들, 뿐만 아니라 이전에 암호화된 하나 이상의 이전 캐시 라인들 또는 다른 데이터의 함수들인 암호 프로세스들을 이용할 수 있다. 이러한 유형의 암호 프로세스는 여기에서 "피드백-기반 암호 프로세스(feedback-based cyptologic process)"로서 불리운다. 피드백-의존적 암호 프로세스들의 예들은 암호 블록 체인(CBC) 및 암호 피드백(CFB) 알고리즘들과 같은, 블록-체인 암호 프로세스들, 뿐만 아니라 CryptMT 및 래빗(Rabbit) 알고리즘들과 같은, 스트림 암호들을 포함한다. 피드백-기반 암호 프로세스들은 통상적으로 단지 암호화되는 현재 캐시 라인/자료의 함수인 암호 프로세스들에 비교하여 강화된 암호 보안을 제공하며, 따라서 피드백-기반 암호 프로세스들을 이용하기 위한 능력은 허가되지 않은 관찰자에 의한 메모리 액세스 패턴의 분석 또는 사전-형 공격들의 사용을 통해서와 같은, 평문 데이터를 액세스하려는 허가되지 않은 시도들에 대한 개선된 저항을 제공한다.
도 1은 본 개시의 적어도 일 실시예에 따른 보안 데이터 저장을 이용한 프로세싱 시스템(100)을 예시한다. 프로세싱 시스템(100)은, 예를 들면, "클라우드(cloud)" 서버 시나리오에서와 같은, 그 안에 저장된 데이터의 소유자가 데이터를 저장하고 프로세싱하는 하드웨어의 물리적 제어를 갖지 않는 시스템을 나타낼 수 있다. 도시된 예에서, 프로세싱 시스템(100)은 상호 연결부(106)를 통해 메모리 모듈(104)에 결합된 적어도 하나의 프로세싱 모듈(102)을 포함한다.
프로세싱 모듈(102)은 하나 이상의 프로세서들(108), 하드웨어 암호 엔진(110), 메모리 인터페이스(112)를 포함하며, 추가로 키 저장소(114)를 포함할 수 있다. 프로세서(108)는, 예를 들면, 중앙 프로세싱 유닛(CPU), 그래픽스 프로세싱 유닛(GPU), 또는 그것의 조합을 포함할 수 있으며, 프로세서 코어들(116, 118)과 같은 하나 이상의 프로세서 코어들, 및 캐시들(120, 122)과 같은 하나 이상의 캐시들을 포함할 수 있다. 메모리 인터페이스(112)는 프로세서(108), 암호 엔진(110), 키 저장소(114), 및 상호 연결부(106)에 결합되며, 암호 엔진(124)을 포함한다.
메모리 모듈(104)은 프로세싱 모듈(102)을 위한 암호화 메모리로서 동작한다. 이를 위해, 메모리 모듈(104)은 메모리 코어(126), 메모리 인터페이스(128)를 포함하며, 키 저장소(130)를 포함할 수 있다. 메모리 코어(126)는 각각이 대응하는 메모리 어드레스(예로서, 물리 메모리 어드레스)를 통해 액세스되는, 복수의 메모리 위치들(도시되지 않음), 또는 엔트리들을 포함한다. 메모리 코어(126)는 정적 RAM(SRAM) 아키텍처, 동적 RAM(DRAM) 아키텍처, 비-휘발성 RAM(NVRAM) 아키텍처, 플래시 메모리 아키텍처 등과 같은, 다양한 랜덤 액세스 메모리(RAM) 아키텍처들 중 임의의 것을 사용하여 구현될 수 있다. 메모리 인터페이스(128)는 메모리 코어(126), 키 저장소(130), 및 상호 연결부(106)에 결합되며, 암호 엔진(132)을 포함한다.
상호 연결부(106)는 프로세싱 모듈(102) 및 메모리 모듈(104) 사이에서 양-방향 인터페이스로서 작용하는 버스 또는 다른 유형의 상호 연결부를 포함한다. 상호 연결부(106)는 메모리 어드레스 정보를 송신하기 위한 신호 경로들, 데이터 정보를 송신하기 위한 신호 경로들, 제어 정보를 송신하기 위한 신호 경로들 등을 포함한, 모듈들(102, 104) 사이에서 수행된 메모리 액세스 동작들에 대한 시그널링을 행하기 위해 복수의 신호 경로들을 포함한다. 동일한 메모리 모듈(104)에 연결된 다수의 프로세싱 모듈들(102)을 가진 구현들에서, 일 실시예에서 각각의 프로세싱 모듈(102)은 메모리 모듈(104)과의, 별개의, 전용 상호 연결부(106)를 가지며, 메모리 모듈(104)은 그 후 각각의 프로세싱 모듈(102)/상호 연결부(106)에 대한 별개의 메모리 인터페이스(128)를 구현할 것이다. 유사하게, 몇몇 구현들에서 프로세싱 모듈(102)은 다수의 메모리 모듈들(104)에 연결될 수 있으며, 이 경우에 프로세싱 모듈(102)은 대응하는 메모리 모듈(104)에 프로세싱 모듈(102)을 연결하는 각각의 상호 연결부(106)에 대한 별개의 메모리 인터페이스(112)를 구현할 것이다. 이러한 배열 하에서, 프로세싱 모듈(102) 및 메모리 모듈(104)의 특정한 짝짓기를 연결하는 상호 연결부(106)의 반대 측면들에서의 인터페이스들(112, 128)은 양쪽 모두가 동일한 시퀀스의 로드 동작들 및 저장 동작들을 관찰하며, 따라서 피드백-기반 암호 프로세스들을 구현할 수 있다.
도 5를 참조하여 이하에서 보다 상세하게 설명되는 바와 같이, 통상적인 구현에서, 프로세싱 모듈(102) 및 메모리 모듈(104)은 별개의 디바이스들 또는 패키지들로서 구현될 것이며, 상호 연결부(106)는 따라서 양쪽 모듈들(102, 104)이 구현되는 인터포저 또는 회로 보드를 가로지르거나 또는 두 개의 모듈들(102, 104)을 연결하는 케이블을 가로지르는 전도성 트레이스들의 세트로서 구현될 것이다. 이와 같이, 상호 연결부(106)는 전도성 트레이스들에 연결된 물리적 탭들의 형태로 허가되지 않은 액세스에 특히 민감할 수 있다. 이러한 물리적 탭들은 그 후, 사전-형 공격을 통해서와 같은, 메모리 모듈(104)에 저장되거나 또는 그 외 모듈들(102, 104) 사이에서 송신된 데이터의 평문 버전으로의 액세스를 얻으려고 시도하기 위해 허가되지 않은 당사자에 의해 사용될 수 있다.
상호 연결부(106)의 취약성을 고려하여, 프로세싱 시스템(100)은 데이터 보안을 강화하기 위해 암호 기술들의 조합을 이용한다. 도 2를 참조하여 이하에서 보다 상세하게 설명되는 바와 같이, 모듈들(102, 104)은 상호 연결부를 통한 데이터 스트림들의 통계적 속성들을 분석할 때 사전-스타일 공격들 또는 다른 시도들의 사용을 통해 평문 형태로 데이터를 액세스하려는 시도들을 좌절시키기 위해 상호 연결부(106)를 통해 송신된(및 메모리 코어(126)에 저장된) 데이터에 대한 피드백-기반 암호 프로세스들을 이용한다. 뿐만 아니라, 메모리 액세스 패턴들에 대한 정보의 누출을 방지하기 위해, 모듈들(102, 104)은 상호 연결부(106)를 통해 송신된 메모리 어드레스들에 대한 암호화 기법을 이용한다. 게다가, 도 3 및 도 4를 참조하여 이하에서 보다 상세하게 설명되는 바와 같이, 프로세싱 시스템(100)은 프로세싱 시스템(100)에서 데이터 보안을 추가로 강화하기 위해 암호 해시-기반 인증 프로세스 또는 일련 번호-기반 인증 프로세스 중 하나 또는 양쪽 모두를 이용할 수 있다.
도 2는 본 개시의 적어도 일 실시예에 따른 보안 메모리 액세스 동작을 수행하기 위한 프로세싱 시스템(100)의 동작의 방법(200)을 예시한다. 메모리 액세스 동작은 일반적으로 저장-형 메모리 액세스 동작("저장 동작") 또는 로드-형 메모리 액세스 동작("로드 동작")으로서 광범위하게 분류될 수 있다. 저장 동작을 위해, 데이터는 메모리 모듈(104)의 메모리 코어(126)에서 대응하는 위치에서의 저장을 위해 프로세싱 모듈(102)에 의해 제공된다. 반대로, 로드 동작을 위해, 데이터는 메모리 코어(126)의 대응 위치로부터 액세스되며 프로세싱 모듈(102)로 송신되고, 그 결과 로드 데이터는 후속 사용을 위해 프로세서(108)의 하나 이상의 캐시들 또는 레지스터들에 저장된다. 통상적으로, 저장되거나 또는 로딩된 데이터는 캐시 라인의 형태 또는 크기에서 행해지며 따라서 여기에서 캐시 라인들에 예시적으로 기반한 데이터의 저장 및 액세스에 대한 참조가 이루어지지만, 몇몇 실시예들에서, 데이터는 캐시 라인보다 작거나, 또는 크게 사이징될 수 있다.
파워-온-리셋(POR) 또는 다른 초기화/재-초기화 이벤트에 이어, 및 메모리 액세스 동작들의 프로세싱 이전에, 블록(202)에서, 프로세싱 시스템(100)은 초기화 프로세스를 행하며, 이것은 통상적으로 프로세싱 모듈(102)의 메모리 인터페이스(112) 및 메모리 모듈(104)의 메모리 인터페이스(128) 사이에서 키 교환(140)(도 1) 또는 다른 키 초기화를 포함한다. 몇몇 실시예들에서, 프로세싱 시스템(100)은 공개-사설 키 기법을 이용한다. 이러한 기법에 대해, 프로세싱 모듈(102)의 메모리 인터페이스(112)는 사전-식별된 메모리 위치로부터 공개 키를 판독함으로써와 같은, 메모리 인터페이스(128)의 공개 키에 대해 메모리 인터페이스(128)에 질의하며, 그 후 암호 엔진(124)에서 공개 키를 사용하여 공유될 키들(들)을 암호화하고 암호화된 키(들)를 메모리 모듈(104)의 메모리 인터페이스(128)로 송신한다. 암호화된 키(들)는 메모리 인터페이스(128)의 대응하는 사설 키를 사용함으로써 복호화되며, 결과적인 복호화 키(들)는 그 후 메모리 모듈(104)의 키 저장소(130)에 저장된다.
대안적으로, 메모리 모듈(104)은 메모리 인터페이스들(112, 128)에 의해 사용될 키(들)를 생성하며 메모리 인터페이스(112)에 의해 사용될 키(들)를 프로세싱 모듈(102)로 전달하고, 그 결과 키(들)는 프로세싱 모듈(102)의 키 저장소(114)에 저장된다. 이것은, 예를 들면, 메모리 인터페이스(128)가 키(들)를 생성하고(예를 들면, 프로세싱 모듈(102)로부터의 명령에 응답하여), 프로세싱 모듈(102)에 의해 제공된 공개 키를 사용하여 키(들)를 암호화하며, 그 후 메모리 코어(126)에서의 알려진 위치에 암호화된 키(들)를 저장함으로써 성취될 수 있으며, 그 결과 프로세싱 모듈(102)은 그것들을 액세스하고, 대응하는 사설 키를 사용하여 그것들을 복호화하며, 복호화된 키(들)를 키 저장소(130)에 저장할 수 있다.
프로세싱 시스템(100)의 몇몇 사용들은 다수의 데이터 소유자들이 프로세싱 모듈(102) 및 메모리 모듈(104)을 동시에 이용하는 것을 야기할 수 있다. 따라서, 데이터의 보안을 추가로 보장하기 위해, 이러한 구현들에서, 다수의 키 세트들이 구현될 수 있다. 예시를 위해, 상이한 키 세트들은 물리적-요청자-단위(예로서, 코어-단위) 기반, 스레드-단위 기반, 프로세스-단위 기반, 어드레스-공간-단위 기반 등으로 구현될 수 있다. 이러한 인스턴스들에서, 상이한 키 세트들은 요청자 식별자(ID) 또는 코어 ID, 스레드 ID, 프로세스 ID, 또는 어드레스 공간 ID와 같은, 다른 메모리 액세스 속성에 기초하여 키 저장소들(114, 130) 내에서 인덱싱되며, 이것은 그 후, 이하에서 논의되는 바와 같이, 메모리 액세스 동작이 적절한 키 세트를 액세스하기 위해 초기화될 때 참조된다.
적절한 키(들)를 갖고 초기화된 메모리 인터페이스들(112, 128) 및 키 저장소들(114, 130)을 갖고, 프로세싱 시스템(100)은 메모리 액세스 동작들을 수행할 준비가 된다. 따라서, 블록(204)에서, 프로세싱 모듈(102)에서의 요청자는 메모리 액세스 동작을 개시하며, 이것은 상기 주지된 바와 같이, 일반적으로 메모리 모듈(104)로 데이터를 저장하기 위한 저장 동작 또는 메모리 모듈(104)로부터 데이터를 액세스하기 위한 로드 동작 중 어느 하나의 형태를 취한다. 다수의 키 세트들이 사용 중인 경우에, 블록(206)에서, 메모리 인터페이스들(112, 128)은 각각 키 저장소들(114, 130)로부터 적절한 키 세트를 액세스한다. 예시를 위해, 메모리 액세스 동작이 블록(204)에서 개시될 때, 또는 요청자가 이전 요청자로부터 프로세싱 모듈(102)의 리소스들의 제어를 이어받을 때, 블록(206)에서 프로세서(108)는 키 요청(142)(도 1)을 키 저장소(114)로 발행할 수 있으며, 여기에서 키 요청(142)은 메모리 액세스 동작을 요청하는 코어, 스레드, 프로세스의 ID 또는 메모리 액세스 동작에 관계된 어드레스 공간의 ID와 같은, 적절한 메모리 액세스 속성의 표현을 포함할 수 있다. 뿐만 아니라, 메모리 인터페이스(112)는 적절한 키 세트가 메모리 모듈(104)의 키 저장소(130)로부터 액세스될 수 있도록 메모리 인터페이스(128)로 이러한 동일한 정보를 제공한다.
몇몇 실시예들에서, 메모리 인터페이스(112)는 대응하는 메모리 액세스 요청의 송신 이전에 상호 연결부(106)에 걸쳐 또는 별개의 측파대 연결을 통해 별개의 통신(사전-식별된 공개-사설 키들을 통해 암호화될 수 있는)으로서 메모리 인터페이스(132)로 메모리 액세스 속성 정보 또는 몇몇 다른 대표적인 인덱스를 제공한다. 또 다른 실시예에서, 메모리 인터페이스(112)는 메모리 액세스 요청을 위해 제공된 시그널링의 부분으로서 메모리 액세스 속성 또는 다른 대표적인 인덱스를 포함할 수 있다(예로서, 제어 시그널링 내에서). 대응 키들(이하에서 설명됨)은 각각의 키 저장소들(114, 130)로부터 액세스되며 암호 엔진들(110, 124, 132)의 대응 버퍼 또는 레지스터에 일시적으로 저장된다.
초기화된 암호 엔진들(110, 124, 132)을 갖고, 프로세싱 시스템(100)은, 저장 동작 또는 로드 동작을 포함할 수 있는, 메모리 액세스 동작을 시작할 준비가 된다. 도 2의 흐름 경로(208)는 저장 동작들을 위해 수행되는 것으로 프로세스를 예시하며 도 2의 흐름 경로(210)는 로드 동작들을 위해 수행되는 것으로 프로세스를 예시한다.
저장 동작은 흐름 경로(208)의 블록(212)에서 개시되며, 그 결과 메모리 코어(126)(예로서, 캐시들(120, 122) 중 하나로부터 제거된 캐시 라인)의 대응하는 어드레싱 위치에 저장될 평문 저장 데이터(도 1에서 "DATA"로 표시됨)는 암호 엔진(110)으로 제공되며, 그 결과 암호 엔진(110)은, 제 1 암호화 데이터, 또는 암호문(여기에서, 암호문 "CT1"로서 표시된)을 생성하기 위해, 단지 프로세싱 모듈(102)에만 알려진, 키(K1)(도 1, 키(144))를 사용하여 평문 데이터를 암호화한다. AES(고급 암호 표준), DES(데이터 암호 표준), 3DES(트리플 DES), PGP(매우 양호한 프라이버시), 블로피시(Blowfish) 등과 같은, 다양한 암호화 알고리즘들 중 임의의 것이 평문 데이터를 암호화하기 위해 사용될 수 있다. 제 1 암호문(CT1) 및 데이터가 저장될 메모리 어드레스("ADDR"로 표시됨)는 그 후 메모리 인터페이스(112)로 제공되며, 블록(214)에서 암호 엔진(124)은 각각, 제 2 암호화 데이터(암호문 "CT2"로 표시됨) 및 암호화된 메모리 어드레스("EN_ADDR"로 표시됨)를 생성하기 위해 피드백-기반 암호 프로세스(예로서, CFB 또는 스트림 암호)에 따라 상이한 키(K2)(도 1, 키(146))를 사용하여 제 1 암호문(CT1) 및 메모리 어드레스(ADDR)를 암호화한다. 도 1은 데이터가, 상호 연결부(106)에 걸쳐 송신되기 전에, 두 번 암호화되는 구현을 예시하지만, 몇몇 실시예들에서, 암호 엔진(110)에 의한 제 1 암호화는 생략되며, 이 경우에 평문 데이터(DATA)가 암호문(CT2)으로의 암호화를 위해 암호문(CT1) 대신에 암호 엔진(110)으로 제공된다.
일 실시예에서, 제 1 암호문(CT1) 및 메모리 어드레스(ADDR)는 별개의 암호화 값들을 생성하기 위해 개별적으로(병렬일지라도) 암호화된다. 그러나, 다른 실시예들에서, 제 1 암호문(CT1) 및 메모리 어드레스(ADDR)는 암호화 전에 제 1 암호문(CT1) 및 메모리 어드레스를 단일 값으로 연쇄시킴으로써와 같은, 단일 암호화 값을 생성하기 위해 함께 암호화될 수 있다. 블록(216)에서, 메모리 인터페이스(112)는 상호 연결부(106)에 걸쳐 행해진 시그널링을 통해 메모리 모듈(104)로 저장 요청을 송신하며, 여기에서 시그널링은 제 2 암호문(CT2) 및 암호화된 메모리 어드레스(EN_ADDR)를 포함한다.
메모리 인터페이스(128)는 저장 요청을 나타내는 시그널링을 수신하며, 블록(218)에서 암호 엔진(132)은 제 1 암호문(CT1)의 사본 및 메모리 어드레스(ADDR)의 평문 사본을 생성하기 위해 키(K3)(도 1, 키(148))를 사용하여 제 2 암호문(CT2) 및 암호화된 메모리 어드레스(EN_ADDR)를 복호화한다. 암호 엔진들(124, 132)은 대칭-키 암호화 프로세스(예로서, AES, DES)를 이용할 수 있으며, 이 경우에 키들(K2 및 K3)은 동일한 키이다. 복호화된 어드레스를 갖고, 블록(220)에서, 메모리 인터페이스(128)는 블록(218)에서 획득된 메모리 어드레스(ADDR)에 의해 어드레싱되거나, 또는 그 외 그것과 연관되는 메모리 코어(126)의 메모리 위치(150)(도 1)에 제 1 암호문(CT1)을 저장한다.
다양한 암호화 알고리즘들 중 임의의 것은, 상기 주지된 암호화 알고리즘들 중 임의의 것과 같은, 제 1 암호문(CT1) 및 메모리 어드레스(ADDR)를 암호화 및 복호화하기 위해 이용될 수 있다. 특히, 각각의 상호 연결부(106)는 특정한 프로세싱 모듈/메모리 모듈 짝짓기에 특정적이기 때문에, 프로세싱 모듈(102)의 메모리 인터페이스들(112) 및 메모리 모듈(104)의 메모리 인터페이스(128) 양쪽 모두는 동일한 시퀀스의 캐시 라인들 또는 다른 데이터를 본다. 이와 같이, 암호 엔진들(124, 132) 각각은, 도 4를 참조하여 이하에서 상세하게 설명되는 바와 같이, 동일한 평문 아이템의 재발이, 암호화 및 복호화 프로세스들 동안 스트림 암호들 또는 블록-체인 암호들과 같은, 동일한 암호문을 야기하지 않는 피드백-기반 암호화 기술들을 이용할 수 있다.
흐름 경로(208)에 의해 보여지는 바와 같이, 저장 동작 동안, 저장 데이터는 상호 연결부(106)를 통해 송신되기 전에 블록 체인 또는 스트림 암호를 통해 암호화되며, 이것은 통상적으로 주어진 평문 값의 암호화가 매번 동일한 암호화 값을 야기하는 상황을 회피한다. 이와 같이, 시스템(100)은 상호 연결부(106)를 통해 송신된 데이터의 분석을 통해 사전-스타일 공격들을 견딘다. 뿐만 아니라, 암호 엔진(110)이 이용되는 실시예들에서, 데이터는 메모리 코어(126)에 저장될 때 암호화 형태(암호문(CT1)으로서)로 남아있으며, 따라서 메모리 코어(126)가 허가되지 않은 엔티티에 의해 뚫리는 경우에 데이터의 평문 버전으로의 액세스를 얻으려는 시도들을 좌절시킨다. 게다가, 저장 동작을 위한 메모리 어드레스(ADDR)는 송신 전에 암호화되며, 그에 의해 프로세싱 시스템(100)의 데이터 상에서의 공격에 대한 기반으로서 사용될 수 있는 메모리 액세스 패턴들 또는 다른 메모리 액세스 정보의 누출을 방지한다.
블록(206)으로 돌아가면, 메모리 액세스 동작이 로드 동작인 경우에, 로드 동작을 위한 메모리 어드레스("ADDR"로 표시됨)가 프로세서(108)로부터 메모리 인터페이스(112)로 제공되며, 그 결과 블록(222)에서 암호 엔진(124)이 암호화된 메모리 어드레스("EN_ADDR"로 표시됨)를 생성하기 위해 키(K2)(도 1, 키(146)) 및 블록-체인 또는 스트림 암호 알고리즘을 사용하여 메모리 어드레스를 암호화한다. 로드 동작들을 위해 사용된 키(K2)는 저장 동작들을 위해 사용된 동일한 키(K2)일 수 있거나, 또는 상이한 키일 수 있다. 블록(224)에서, 메모리 인터페이스(112)는 상호 연결부(106)를 통해 행해진 시그널링을 통해 메모리 모듈(104)로 로드 요청을 송신하며, 여기에서 시그널링은 암호화된 메모리 어드레스(EN_ADDR)를 포함한다.
메모리 인터페이스(128)는 로드 요청을 나타내는 시그널링을 수신하며 블록(226)에서 암호 엔진(132)은 메모리 어드레스(ADDR)의 평문 사본을 생성하기 위해 키(K3)(도 1, 키(148)) 및 대응하는 블록-체인 또는 스트림 암호 알고리즘을 사용하여 암호화된 메모리 어드레스(EN_ADDR)를 복호화한다. 로드 동작들을 위해 사용된 키(K3)는 저장 동작들을 위해 사용된 동일한 키(K3)일 수 있거나, 또는 상이한 키일 수 있다. 블록(228)에서, 메모리 인터페이스(128)는 획득된 메모리 어드레스(ADDR)의 사본에 의해 참조되는 메모리 코어(126)의 메모리 위치(예로서, 도 1, 위치(150))로부터 요청된 데이터를 액세스한다. 상기 설명된 바와 같이, 저장 동작들 동안, 데이터는 암호화 데이터, 또는 암호문으로서 메모리 코어(126)에 저장되며, 따라서 액세스된 데이터는 여기에서 제 1 암호문(CT1)으로서 불리운다.
메모리 코어(126)로부터 획득된 요청 데이터를 갖고, 블록(230)에서, 암호 엔진(132)은 제 2 암호문(CT2)을 생성하기 위해 키(K4)(도 1, 키(152))를 사용하여 암호화된 암호문(CT1)을 추가로 암호화한다. 대칭-키 암호화 구현에서, 키(K4)는 암호 엔진(124)에 의해 사용된 키(K2)와 동일한 키일 수 있거나, 또는 공유-키 구현에서, 키(K4)는 공개 키-사설 키 쌍의 공개 키일 수 있다. 블록(232)에서, 메모리 인터페이스(128)는 상호 연결부(106)를 통해 메모리 인터페이스(112)에 대한 로드 결과 또는 로드 응답을 나타내는 시그널링을 사용하여 제 2 암호문(CT2)을 프로세싱 모듈(102)로 송신한다.
메모리 인터페이스(112)에서의 제 2 암호문(CT2)의 수신으로, 블록(234)에서 암호 엔진(124)은 메모리 코어(126)에 저장된 제 1 암호문(CT1)의 사본을 생성하기 위해 키(K5)(도 5, 키(154))를 사용하여 제 2 암호문(CT2)을 복호화한다. 키(K5)는 키(K2)와 동일한 키일 수 있으며, 대칭-키 암호화가 암호 엔진들(124, 132)에 의해 이용되는 경우에 키(K4)와 동일한 키일 수 있다. 대안적으로, 공개 키/사설 키 기법이 이용된다면, 키(K5)는, 상기 주지된 바와 같이, 키 쌍의 사설 키일 것이며, 키(K4)는 공개 키이다. 블록(236)에서, 암호 엔진(110)은 제 1 암호문(CT1)에 의해 표현된 평문 로드 데이터의 사본을 획득하기 위해 키(K1)를 사용하여 획득된 제 1 암호문(CT1)의 사본을 복호화한다. 이러한 평문 로드 데이터는 그 후 로드 동작의 요청자에 의한 액세스를 위해 코어들(116, 118) 중 대응하는 것의 캐시 라인 또는 다른 일시적 저장 위치에 저장될 수 있다.
흐름 경로(210)에 의해 보여지는 바와 같이, 로드 동작 동안, 로드 데이터는 메모리 모듈(104)로부터 프로세싱 모듈(102)로 상호 연결부(106)를 통해 송신되기 전에 피드백-기반 암호 프로세스를 사용하여 암호화되며 로드 동작을 위한 메모리 어드레스(ADDR)는 송신 전에 암호화되고, 양쪽 모두는, 흐름 경로(208)를 참조하여 상기 유사하게 주지된 바와 같이, 강화된 데이터 보안을 위해 제공한다.
상호 연결부(106)가 비교적 용이하게 액세스되며 물리적으로 탭핑될 수 있기 때문에, 공격자는 메모리 모듈(104)에 저장된 암호화된 데이터를 겹쳐 쓰고 그에 따라 그 안에 저장된 데이터를 변경하도록 거짓 저장 동작들을 주입하기 위해 상호 연결부(106)를 사용하려고 시도할 수 있다. 따라서, 이러한 공격들을 방지하기 위해, 적어도 일 실시예에서 프로세싱 시스템(100)은 저장 동작이 사실상 허가된 요청자로부터의 유효한 저장 동작임을 검증하기 위해 다양한 인증 프로세스들을 이용할 수 있다. 이러한 인증 프로세스들은, 예를 들면, 암호 해시 인증 프로세스 또는 일련 번호-기반 인증 프로세스를 포함할 수 있다.
도 3은 적어도 일 실시예에 따른 이들 인증 프로세스들 중 하나 또는 양쪽 모두를 구현하기 위한 예시적인 하드웨어 구현을 예시한다. 도시된 실시예에서, 메모리 인터페이스(112)의 암호 엔진(124)은 암호 해시 모듈(302), 암호화/복호화 모듈(304), 및 일련 번호 발생기(305)를 포함한다. 유사하게, 메모리 인터페이스(128)의 암호 엔진(132)은 암호화/복호화 모듈(306), 암호 해시 모듈(308), 해시 비교 로직(310), 및 일련 번호 비교 로직(312)을 포함한다.
해시-기반 인증 동작을 위해, 제 1 암호문(CT1) 및 메모리 어드레스(ADDR)가 암호 해시 모듈(302)로 입력되며, 이것은 해시 값("H1"로 표시됨)을 생성하기 위해 해시 키(X)를 사용하여 제 1 암호문(CT1) 및 메모리 어드레스(ADDR)의 암호 해시를 수행한다. 해시 값(H1)은 그 후 암호화/복호화 모듈(304)로 입력되며, 그 결과 암호화/복호화 모듈(304)은 각각, 암호화된 해시 값("H2"로 표시됨), 제 2 암호문(CT2), 및 암호화된 메모리 어드레스(EN_ADDR)를 생성하기 위해 대응 키(K)(예로서, 도 1, 키(K2))를 사용하여 해시 값(H1), 제 1 암호문(CT1), 및 메모리 어드레스(ADDR)를 암호화한다. 암호화된 해시 값(H2)은 그 후, 상기 설명된 바와 같이, 저장 동작에 대한 시그널링의 부분으로서 제 2 암호문(CT2) 및 암호화된 메모리 어드레스(EN_ADDR)와 함께 송신된다. 메모리 인터페이스(128)에서의 이러한 시그널링의 수신으로, 암호화/복호화 모듈(306)은 해시 값(H1) 및 메모리 어드레스(ADDR)의 평문 사본들을 생성하기 위해 및 제 1 암호문(CT1)의 사본을 생성하기 위해 대응 키(K)(예로서, 도 1, 키(K3))를 사용하여 암호화된 해시 값(H2), 제 2 암호문(CT2), 및 암호화된 메모리 어드레스(EN_ADDR)를 복호화한다.
수신된 저장 동작이 적법하다는 것을 검증하기 위해, 암호 해시 모듈(308)은, 획득된 해시 값(H1), 메모리 어드레스(ADDR), 및 제 1 암호문(CT1)의 사본들을 사용하여, 암호 해시 모듈(302)에 의해 수행된 동일한, 또는 대칭 해시 동작을 수행하여, 해시 값("H3")을 야기한다. 해시 비교 로직(310)은 그 후 생성된 해시 값(H3)과 획득된 해시 값(H1)의 사본을 비교한다. 비교의 결과가 두 개의 해시 값들이 일치함을 드러내는 경우에, 해시 비교 로직(310)은, 메모리 인터페이스(128)가 계속해서 저장 동작을 프로세싱하는 것에 응답하여, 허가된 것으로 저장 동작을 식별하며 그러므로 "유효(VALID)" 신호를 제공한다. 그러나, 공격자가 암호 해시 모듈들(302, 308)을 위해 사용된 키(X)의 사본을 가질 가능성이 없으므로, 기만적인 저장 동작을 주입하려는 공격자의 시도는 획득된 해시 값(H1) 및 생성된 해시 값(H3) 사이에서의 불일치를 야기할 것이다. 이러한 경우에, 해시 비교 로직(310)은, 메모리 인터페이스(128)가 저장 동작의 임의의 추가 프로세싱을 중단시키는 것에 응답하여, "NOP" 신호를 제공하며, "무 동작" 또는 "NOP"로서 저장 동작을 처리한다.
일련 번호-기반 인증 동작을 위해, 일련 번호 발생기(305)는 일련 번호들의 시퀀스에서(예로서, 증가하는 또는 감소하는 시퀀스) 다음 일련 번호를 생성하며 이러한 일련 번호를 값(SN)으로서 암호화/복호화 모듈(304)에 제공하고, 이것은 각각 암호화된 일련 번호("EN_SN"으로 표시됨), 제 2 암호문(CT2), 및 암호화된 메모리 어드레스(EN_ADDR)를 생성하기 위해 대응 키(K)(예로서, 도 1, 키(K2))를 사용하여 일련 번호(SN), 제 1 암호문(CT1), 및 메모리 ADDR을 암호화한다. 이들 값들은 그 후, 상기 설명된 바와 같이, 저장 동작에 대한 시그널링의 부분으로서 송신된다. 메모리 인터페이스(128)에서 이러한 시그널링의 수신으로, 암호화/복호화 모듈(306)은 일련 번호(SN) 및 메모리 어드레스(ADDR)의 평문 사본들을 생성하기 위해 및 제 1 암호문(CT1)의 사본을 생성하기 위해 대응 키(K)(예로서, 도 1, 키(K3))를 사용하여 암호화된 일련 번호(EN_SN), 제 2 암호문(CT2), 및 암호화된 메모리 어드레스(EN_ADDR)를 복호화한다.
수신된 저장 동작이 적법하다는 것을 검증하기 위해, 일련 번호 비교 로직(312)은 레지스터(314) 또는 다른 저장 구성요소에서 시퀀스로부터 사용 중인 현재 일련 번호를 유지한다. 이것은 시도된 각각의 메모리 액세스 동작에 대한 현재 일련 번호의 국소적 사본을 증가시키거나 또는 감소시킴으로써, 또는 레지스터(314)에서 인증될 마지막 메모리 액세스 동작의 일련 번호를 저장함으로써 달성될 수 있다. 복호화된 일련 번호(SN)의 사본은 암호화/복호화 모듈(306)로부터 일련 번호 비교 로직(312)으로 제공되며, 이것은 그 후 현재 일련 번호와 이러한 일련 번호(SN)를 비교한다. 비교가 수신된 일련 번호(SN)가 시퀀스에서 정확하게 예상된 다음 일련 번호임을 나타낸다면, 일련 번호 비교 로직(312)은, 메모리 인터페이스(128)가 계속해서 저장 동작을 프로세싱하는 것에 응답하여, 허가된 것으로 저장 동작을 식별하며 그러므로 "유효" 신호를 제공한다. 그러나, 공격자가 시퀀스에서 다음 일련 번호를 알 가능성이 없으므로, 제조된 일련 번호를 가진 기만적인 저장 동작을 주입하려는 공격자의 시도는 복호화된 일련 번호(SN)의 사본 및 시퀀스에서의 예상된 다음 일련 번호 사이에서의 불일치를 야기할 것이다. 이러한 경우에, 일련 번호 비교 로직(312)은, 메모리 인터페이스(128)가 저장 동작의 임의의 추가 프로세싱을 중단시키는 것에 응답하여, "NOP" 신호를 제공하며 "무 동작" 또는 "NOP"으로서 저장 동작을 처리한다.
몇몇 실시예들에서, 양쪽 인증 프로세스들 모두는 동시에 이용될 수 있으며, 이 경우에 AND 로직은 해시 비교 로직(310) 및 일련 번호 비교 로직(312) 양쪽 모두가 "유효"를 시그널링할 때 "유효" 신호를 제공하기 위해 및 해시 비교 로직(310) 및 일련 번호 비교 로직(312) 중 어느 하나가 "NOP"을 시그널링할 때 "NOP" 신호를 제공하기 위해 사용될 수 있다.
각각의 프로세싱 모듈/메모리 모듈 짝짓기가 상호 연결부(106) 및 메모리 인터페이스들(112, 128)의 별개의 구현을 구현함에 따라, 주어진 프로세싱 모듈(102)에 대한 메모리 인터페이스(112)는 상호 연결부(106)의 다른 측면 상에서 대응하는 메모리 인터페이스(128)와 동일한 시퀀스의 메모리 액세스 동작들을 관찰하며, 그 역 또한 마찬가지이다. 따라서, 종래의 시스템들과 대조적으로, 프로세싱 시스템(100)은 암호 엔진들(124, 132)에서 수행된 암호화/복호화 프로세스들의 부분으로서 스트림 암호 또는 블록 암호의 체인 모드를 이용할 수 있다. 통상적인 체인 모드 또는 스트림 암호에서, 캐시 라인 또는 다른 자료의 암호화(또는 복호화)는 현재의 캐시 라인/자료 및 암호화 키, 뿐만 아니라 또한 현재 캐시 라인 전에 암호화된 하나 이상의 이전 로드 동작들 또는 저장 동작들의 캐시 라인들/데이터의 함수이다. 그러나, 암호화된 메모리 시스템으로의 이러한 피드백-의존적 암호 프로세스들의 구현은 타이밍-임계 메모리 액세스 경로에서 제 2 암호화 프로세스를 도입할 수 있으며, 따라서 메모리 대기 시간을 증가시킬 위험이 있다.
도 4는 메모리 액세스 임계 경로의 밖에서 키 자료를 생성함으로써 메모리 액세스 대기시간에 대한 영향을 감소시키는 암호 피드백(CFB) 모드를 이용하는 암호 엔진들(124, 132)에 대한 예시적인 하드웨어 구현(400)을 예시한다. 도시된 실시예에서, 하드웨어 구현(400)은 암호 엔진들(124, 132) 양쪽 모두에 의해 구현될 수 있는 암호화 경로 하드웨어를 나타낸다. 복호화 경로 하드웨어는 동일한 방식으로 구현될 수 있다.
하드웨어 구현(400)은 스테이지들(401, 402, 403)로서 식별된, 3개의 순차적 암호화 스테이지들 동안 논리적으로 반복되는, 블록 암호 로직(404) 및 XOR 로직(406)을 포함한다. 블록 암호 로직(404)은, 제 1 스테이지(401)가 대신에 초기화 벡터(IV)를 수신한다는 예외를 갖고, 두 개의 입력들을 갖는다: 하나의 입력은 키(도 4에서 "키"로 표시됨)를 수신하기 위한 것이며 입력은 이전 스테이지로부터 암호화된 출력을 수신하기 위한 것이다. IV는 통상적으로 상기 설명된 바와 같이, 프로세싱 모듈(102) 및 메모리 모듈(104) 사이에서 초기화 프로세스 동안 교환된 공유 키 정보의 부분이다. 주어진 스테이지에서, 블록 암호 로직(404)은 두 개의 입력들을 사용하여 암호 프로세스(암호화 또는 복호화)를 수행하며, 결과는 동일한 스테이지의 XOR 로직(406)의 대응 입력으로 출력된다. XOR 로직(406)은 상기 스테이지와 연관된 대응 자료를 수신하기 위해 제 2 입력을 갖는다. 각각의 자료는 메모리 액세스 동작들의 시퀀스로부터 메모리 모듈(104)로의 대응하는 캐시 라인을 포함할 수 있다. 각각의 자료는 대신에 메모리 액세스 동작들의 시퀀스로부터 메모리 모듈(104)로의 대응하는 메모리 어드레스를 포함할 수 있다. 도 4에 의해 예시된 CFB 모드에서, 두 개의 XOR 동작들(각각의 메모리 인터페이스에서 하나씩)을 제외한 모두가 메모리 액세스 임계 경로로부터 제거되며, 따라서 암호 블록 체인 기술에 의해 제공된 강화된 보안을 이용하는 동안 메모리 대기 시간에 대한 영향을 최소화한다.
상기 설명된 바와 같이, 메모리 모듈(104)은 암호 엔진(132)과의 메모리 인터페이스(128)를 구현한다. 이러한 배열은 대응하는 메모리 회로에 밀착 결합된 부가적인 로직을 이용하는, 지능형 메모리(PIM) 구현들에 특히 잘 맞는다. 도 5는 바람직하게는 본 출원에 설명된 기술들을 이용할 수 있는 예시적인 PIM-기반 시스템(500)을 예시한다.
도시된 예에서, 시스템(500)은 인터포저(501)(회로 보드 또는 다이를 포함할 수 있는) 상에 배치된, 호스트 프로세서(502)(프로세싱 모듈(102)의 일 실시예) 및 메모리 스택들(504, 505, 506, 507)과 같은, 하나 이상의 메모리 스택들의 세트(메모리 모듈들(104)의 일 실시예)를 포함한다. 각각의 메모리 스택은, 로직 다이(508) 및 메모리 다이들(509, 510, 511, 512)의 세트를 포함하여, 다이의 스택을 포함한다. 로직 다이(508)는 메모리 인터페이스(128)를 구현하며 메모리 다이들은 메모리 코어(126)를 구현한다. 메모리 스택의 다이는 스루-실리콘 비아들(TSV들)(도시되지 않음)에 의해 결합되며 따라서 물리적으로 탭핑하는 것이 비교적 어렵다. 호스트 프로세서(502)를 메모리 스택들(504 내지 507)에 연결하는 인터포저(501)의 전도성 트레이스들(도시되지 않음) 및 전도성 트레이스들을 대응하는 구성요소들에 연결하는 핀들(도시되지 않음)은 호스트 프로세서(502) 및 메모리 스택들(504 내지 507) 사이에 대응하는 상호 연결부들(106)(도 1)을 형성한다. 그러나, 메모리 스택들의 TSV들과 달리, 전도성 트레이스들 및 핀들은 물리적으로 탭핑하는 것이 비교적 용이하며 따라서 이들 상호 연결부들을 통해 송신된 데이터로의 액세스를 얻으려고 시도하기 위해 허가되지 않은 엔티티가 액세스하는 것이 비교적 용이하다. 따라서, PIM-기반 시스템(500)은 그 안에 수송된 데이터 및 상호 연결부의 무결성을 보장하기 위해 상기 설명된 이중 암호화, 메모리 어드레스 암호화, 암호 해시 검증, 또는 체인-기반 암호화 기술들 중 하나 이상을 이용할 수 있다.
몇몇 실시예들에서, 상기 설명된 장치 및 기술들은 도 1 내지 도 5를 참조하여 상기 설명된 모듈들(102, 104)과 같은, 하나 이상의 집적 회로(IC) 디바이스들(또한 집적 회로 패키지들 또는 마이크로칩들로서 불리우는)을 포함한 시스템에서 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 보조 설계(CAD) 소프트웨어 툴들은 이들 IC 디바이스들의 설계 및 제작에 사용될 수 있다. 이들 설계 툴들은 통상적으로 하나 이상의 소프트웨어 프로그램들로서 표현된다. 하나 이상의 소프트웨어 프로그램들은 회로를 제작하도록 제조 시스템을 설계하거나 또는 적응시키기 위해 프로세스의 적어도 일 부분을 수행하도록 하나 이상의 IC 디바이스들의 회로를 나타내는 코드 상에서 동작하도록 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행 가능한 코드를 포함한다. 이러한 코드는 지시들, 데이터, 또는 지시들 및 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제작 툴을 나타내는 소프트웨어 지시들은 통상적으로 컴퓨팅 시스템으로 액세스 가능한 컴퓨터 판독 가능한 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제작의 하나 이상의 단계들을 나타내는 코드는 동일한 컴퓨터 판독 가능한 저장 매체 또는 상이한 컴퓨터 판독 가능한 저장 매체에 저장되며 그로부터 액세스될 수 있다.
몇몇 실시예들에서, 상기 설명된 기술들의 특정한 양상들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비-일시적 컴퓨터 판독 가능한 저장 매체상에 저장되거나 또는 그 외 유형으로 구체화된 실행 가능한 지시들의 하나 이상의 세트들을 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때, 상기 설명된 기술들의 하나 이상의 양상들을 수행하도록 하나 이상의 프로세서들을 조작하는 지시들 및 특정한 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능한 저장 매체는 지시들 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한, 임의의 비-일시적 저장 매체, 또는 비-일시적 저장 미디어의 조합을 포함할 수 있다. 이러한 저장 미디어는, 이에 제한되지 않지만, 광학 미디어(예로서, 컴팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 미디어(예로서, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예로서, 랜덤 액세스 메모리(RAM) 또는 캐시), 비-휘발성 메모리(예로서, 판독-전용 메모리(ROM) 또는 플래시 메모리), 또는 미세 전자 기계 시스템들(MEMS)-기반 저장 미디어를 포함할 수 있다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템에 내장되고(예로서, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 단단히 부착되고(예로서, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈 가능하게 부착되거나(예로서, 광학 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리), 또는 유선 또는 무선 네트워크(예로서, 네트워크 액세스 가능한 저장 장치(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다. 비-일시적 컴퓨터 판독 가능한 저장 매체상에 저장된 실행 가능한 지시들은 하나 이상의 프로세서들에 의해 해석되거나 또는 그 외 실행 가능한 소스 코드, 어셈블리 언어 코드, 오브젝트 코드, 또는 다른 지시 포맷에 있을 수 있다.
일반적인 설명에서 상기 설명된 활동들 또는 요소들의 모두가 요구되는 것은 아니고, 특정 활동 또는 디바이스의 일 부분이 요구되지 않을 수 있으며, 하나 이상의 추가 활동들이 수행되거나, 또는 설명된 것들 외에, 요소들이 포함될 수 있다는 것을 주의하자. 더 나아가, 활동들이 열거되는 순서는 반드시 그것들이 수행되는 순서인 것은 아니다. 또한, 개념들이 특정 실시예들을 참조하여 설명되었다. 그러나, 이 기술분야의 숙련자는 다양한 수정들 및 변화들이 이하에서의 청구항들에서 제시된 바와 같이 본 개시의 범위로부터 벗어나지 않고 이루어질 수 있다는 것을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 것으로 간주될 것이며, 모든 이러한 수정들은 본 개시의 범위 내에 포함되도록 의도된다.
이득들, 다른 이점들, 및 문제들에 대한 해법들은 특정 실시예들에 대하여 상기에서 설명되었다. 그러나, 임의의 이득, 이점, 또는 해법이 발생하게 하거나, 또는 보다 확연해지게 할 수 있는 이득들, 이점들, 문제들에 대한 해법들, 및 임의의 특징(들)은 임의의 또는 모든 청구항들의 중대한, 필수적인, 또는 근본적인 특징으로서 해석되지 않을 것이다. 게다가, 상기 개시된 특정한 실시예들은, 개시된 주제가 여기에서의 교시들의 이득을 가진 이 기술분야의 숙련자들에게 명백한 상이하지만 동등한 방식들로 수정되고 실시될 수 있으므로, 단지 예시적이다. 어떤 제한들도, 이하에서의 청구항들에서 설명된 것 외에, 여기에서 도시된 구성 또는 설계에 대한 세부사항들로 의도되지 않는다. 그러므로, 상기 개시된 특정한 실시예들은 변경되거나 또는 수정될 수 있으며 모든 이러한 변형들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 여기에서 추구된 보호 범위는 이하에서의 청구항들에서 제시된 바와 같다.

Claims (16)

  1. 전용 상호 연결부(interconnect)(106)를 통해 메모리 모듈(104)에 결합된 프로세싱 모듈(102)을 포함하는 프로세싱 시스템(100)에서, 방법에 있어서:
    저장 동작의 개시에 응답하여:
    상기 프로세싱 모듈에서 상호 연결부로의 제 1 인터페이스(112)에서, 제 1 암호화 데이터를 생성하기 위해 제 1 키(146) 및 제 1 피드백-기반 암호 프로세스(124)를 사용하여 상기 저장 동작의 저장 데이터의 표현을 암호화하는 단계;
    상기 제 1 인터페이스에서, 암호화된 메모리 어드레스를 생성하기 위해 상기 제 1 키 및 상기 제 1 피드백-기반 암호 프로세스를 사용하여 상기 저장 동작의 메모리 어드레스를 암호화하는 단계; 및
    상기 제 1 암호화 데이터 및 상기 암호화된 메모리 어드레스를 상기 상호 연결부를 통해 상기 메모리 모듈로 송신하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 메모리 모듈에서 상기 상호 연결부로의 제 2 인터페이스(128)에서, 상기 저장 데이터의 표현의 사본을 획득하기 위해 제 2 키(148) 및 제 2 피드백-기반 암호 프로세스(132)를 사용하여 상기 제 1 암호화 데이터를 복호화하는 단계;
    상기 제 2 인터페이스에서, 상기 메모리 어드레스의 사본을 획득하기 위해 상기 제 2 키 및 상기 제 2 피드백-기반 암호 프로세스를 사용하여 상기 암호화된 메모리 어드레스를 복호화하는 단계; 및
    상기 메모리 어드레스의 사본에 기초하여 메모리 위치(150)로 상기 저장 데이터의 표현의 사본을 저장하는 단계를 더 포함하는, 방법.
  3. 청구항 2에 있어서,
    상기 제 1 인터페이스에서, 상기 저장 동작의 속성(attribute)에 기초하여 복수의 키들(114)로부터 상기 제 1 키를 선택하는 단계;
    상기 상호 연결부를 통해 상기 제 1 인터페이스로부터 상기 제 2 인터페이스로 상기 속성(140)의 표현을 전달하는 단계; 및
    상기 제 2 인터페이스에서, 상기 속성의 표현에 기초하여 복수의 키들(130)로부터 상기 제 2 키를 선택하는 단계를 더 포함하는, 방법.
  4. 청구항 3에 있어서,
    상기 속성은:
    상기 저장 동작을 발행한 프로세서 코어의 식별자; 상기 저장 동작을 발행한 프로세스의 식별자; 상기 저장 동작을 발행한 스레드(thread)의 식별자; 및 상기 저장 동작과 연관된 어드레스 공간의 식별자 중 적어도 하나를 포함하는, 방법.
  5. 청구항 2에 있어서,
    상기 제 1 인터페이스에서, 제 1 해시 값을 생성하기 위해 상기 메모리 어드레스 및 상기 저장 데이터의 표현을 사용하여 암호 해시(302)를 수행하는 단계;
    상기 제 1 인터페이스에서, 암호화된 해시 값을 생성하기 위해 상기 제 1 해시 값을 암호화하는 단계;
    상기 상호 연결부를 통해 상기 제 1 인터페이스로부터 상기 제 2 인터페이스로 상기 암호화된 해시 값을 송신하는 단계;
    상기 제 2 인터페이스에서, 상기 제 1 해시 값의 사본을 생성하기 위해 상기 암호화된 해시 값을 복호화하는 단계;
    상기 제 2 인터페이스에서, 제 2 해시 값을 생성하기 위해 상기 메모리 어드레스의 사본 및 상기 저장 데이터의 표현의 사본을 사용하여 암호 해시(308)를 수행하는 단계를 더 포함하며,
    상기 메모리 어드레스의 사본에 기초하여 상기 메모리 위치로 상기 저장 데이터의 표현의 사본을 저장하는 단계는 상기 제 1 해시 값의 사본에 대한 상기 제 2 해시 값의 비교(310)의 결과에 응답하여 상기 메모리 위치로 상기 저장 데이터의 표현의 사본을 저장하는 단계를 포함하는, 방법.
  6. 청구항 2에 있어서,
    상기 제 1 인터페이스에서, 일련 번호들의 시퀀스에서 다음 일련 번호를 결정하는 단계;
    상기 제 1 인터페이스에서, 암호화된 일련 번호를 생성하기 위해 상기 다음 일련 번호를 암호화하는 단계;
    상기 상호 연결부를 통해 상기 제 1 인터페이스로부터 상기 제 2 인터페이스로 상기 암호화된 일련 번호를 송신하는 단계;
    상기 제 2 인터페이스에서, 상기 다음 일련 번호의 사본을 생성하기 위해 상기 암호화된 일련 번호를 복호화하는 단계를 더 포함하며,
    상기 메모리 어드레스의 사본에 기초하여 상기 메모리 위치로 상기 저장 데이터의 표현의 사본을 저장하는 단계는 예상된 다음 일련 번호와 상기 다음 일련 번호의 사본의 비교의 결과에 응답하여 상기 메모리 위치로 상기 저장 데이터의 표현의 사본을 저장하는 단계를 포함하는, 방법.
  7. 청구항 1에 있어서,
    상기 제 1 피드백-기반 암호 프로세스는 블록-체인(block-chaining) 암호 프로세스 및 스트림 암호 프로세스 중 적어도 하나를 포함하는, 방법.
  8. 청구항 1에 있어서,
    상기 프로세싱 모듈에서, 제 2 암호화 데이터를 생성하기 위해 제 2 키를 사용하여 상기 저장 데이터를 암호화하는 단계를 더 포함하며, 상기 저장 데이터의 표현은 상기 제 2 암호화 데이터를 포함하는, 방법.
  9. 청구항 1에 있어서,
    상기 제 1 인터페이스에서, 제 1 해시 값을 생성하기 위해 상기 메모리 어드레스 및 상기 제 1 암호화 데이터를 사용하여 암호 해시(302)를 수행하는 단계; 및
    상기 상호 연결부를 통해 상기 제 1 인터페이스로부터 상기 메모리 모듈로 상기 제 1 해시 값을 송신하는 단계를 더 포함하는, 방법.
  10. 전용 상호 연결부(106)를 통해 메모리 모듈(104)에 결합된 프로세싱 모듈(102)을 포함하는 프로세싱 시스템(100)에서, 방법에 있어서,
    로드 동작(load operation)의 개시에 응답하여:
    상기 프로세싱 모듈에서 상기 상호 연결부로의 제 1 인터페이스(112)에서, 암호화된 메모리 어드레스를 생성하기 위해 제 1 키(146) 및 제 1 피드백-기반 암호 프로세스(124)를 사용하여 상기 로드 동작과 연관된 메모리 어드레스를 암호화하는 단계;
    상기 상호 연결부를 통해 상기 암호화된 메모리 어드레스를 상기 메모리 모듈로 송신하는 단계;
    상기 메모리 모듈에서 상기 상호 연결부로의 제 2 인터페이스(128)에서, 상기 메모리 어드레스의 사본을 획득하기 위해 제 2 키(148)를 사용하여 상기 암호화된 메모리 어드레스를 복호화하는 단계;
    상기 제 2 인터페이스에서, 상기 메모리 어드레스의 사본에 기초하여 상기 메모리 모듈의 메모리 위치(150)로부터 제 1 암호화 데이터를 액세스하는 단계;
    상기 제 2 인터페이스에서, 제 2 암호화 데이터를 생성하기 위해 제 3 키(152) 및 제 2 피드백-기반 암호 프로세스를 사용하여 상기 제 1 암호화 데이터를 암호화하는 단계;
    상기 상호 연결부를 통해 상기 제 2 인터페이스로부터 상기 제 1 인터페이스로 상기 제 2 암호화 데이터를 송신하는 단계; 및
    상기 제 1 인터페이스에서, 상기 제 1 암호화 데이터의 사본을 획득하기 위해 제 4 키(154) 및 제 3 피드백-기반 암호 프로세스를 사용하여 상기 제 2 암호화 데이터를 복호화하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서,
    상기 제 1 인터페이스에서, 상기 로드 동작에 대한 로드 데이터의 사본을 획득하기 위해 제 5 키(144)를 사용하여 상기 제 1 암호화 데이터의 사본을 복호화하는 단계를 더 포함하는, 방법.
  12. 청구항 11에 있어서,
    상기 제 1 키 및 제 2 키는 동일한 키를 포함하며;
    상기 제 3 키 및 상기 제 4 키는 동일한 키를 포함하는, 방법.
  13. 프로세싱 시스템(100)에 있어서,
    프로세싱 모듈(102)은:
    적어도 하나의 프로세서 코어(116, 118, 120, 122);
    상기 적어도 하나의 프로세서 코어에 결합되며 상호 연결부(106)에 결합 가능한 제 1 인터페이스(112)를 포함하고, 상기 제 1 인터페이스는 :
    제 1 암호화 데이터 및 암호화된 메모리 어드레스를 생성하기 위해 제 1 키(146) 및 제 1 피드백-기반 암호 프로세스를 사용하여 저장 동작의 저장 데이터의 표현 및 상기 저장 데이터와 연관된 메모리 어드레스를 암호화하기 위한 제 1 암호 엔진(124)을 포함하고,
    상기 제 1 인터페이스는 상기 상호 연결부를 통해 상기 제 1 암호화 데이터 및 상기 암호화된 메모리 어드레스를 메모리 모듈(104)로 송신하는, 프로세싱 시스템.
  14. 청구항 13에 있어서,
    상기 메모리 모듈을 더 포함하되, 상기 메모리 모듈은:
    메모리 코어(126); 및
    상기 상호 연결부 및 상기 메모리 코어에 결합된 제 2 인터페이스(128)를 포함하되, 상기 제 2 인터페이스는 상기 저장 데이터의 표현의 사본 및 상기 메모리 어드레스의 사본을 생성하기 위해 제 2 키(148) 및 제 2 피드백-기반 암호 프로세스를 사용하여 상기 제 1 암호화 데이터 및 상기 암호화된 메모리 어드레스를 복호화하기 위해 제 2 암호 엔진(132)을 포함하며;
    상기 제 2 인터페이스는 상기 메모리 어드레스의 사본에 기초하여 상기 메모리 코어의 메모리 위치(150)로 상기 저장 데이터의 표현의 사본을 저장하는, 프로세싱 시스템.
  15. 청구항 14에 있어서,
    상기 프로세싱 모듈은 상기 저장 동작의 속성에 기초하여 복수의 키들로부터 상기 제 1 키를 선택하기 위해 제 1 키 저장소(114)를 더 포함하며;
    상기 메모리 모듈은 상기 상호 연결부를 통해 수신된 속성의 표현에 기초하여 복수의 키들로부터 상기 제 2 키를 선택하기 위해 제 2 키 저장소(130)를 더 포함하는, 프로세싱 시스템.
  16. 청구항 14에 있어서,
    상기 제 1 인터페이스는 제 1 해시 값을 생성하기 위해 상기 메모리 어드레스 및 상기 저장 데이터의 표현을 사용하여 암호 해시를 수행하기 위해 제 1 암호 해시 모듈(302)을 포함하며, 상기 제 1 인터페이스는 상기 제 1 해시 값의 표현을 상기 메모리 모듈로 송신하고;
    상기 제 2 인터페이스는:
    제 2 해시 값을 생성하기 위해 상기 메모리 어드레스의 사본 및 상기 저장 데이터의 표현의 사본을 사용하여 암호 해시를 수행하기 위한 제 2 암호 해시 모듈(308); 및
    상기 제 1 해시 값에 대한 상기 제 2 해시 값의 비교의 결과에 응답하여 상기 메모리 위치로 상기 제 1 암호화 데이터의 사본의 저장을 허가하기 위한 해시 비교 로직(310)을 포함하는, 프로세싱 시스템.
KR1020187022779A 2016-01-12 2016-09-21 메모리 동작 암호화 KR102430042B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/993,455 US10382410B2 (en) 2016-01-12 2016-01-12 Memory operation encryption
US14/993,455 2016-01-12
PCT/US2016/052839 WO2017123285A1 (en) 2016-01-12 2016-09-21 Memory operation encryption

Publications (2)

Publication Number Publication Date
KR20180094118A true KR20180094118A (ko) 2018-08-22
KR102430042B1 KR102430042B1 (ko) 2022-08-05

Family

ID=59275977

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187022779A KR102430042B1 (ko) 2016-01-12 2016-09-21 메모리 동작 암호화

Country Status (6)

Country Link
US (1) US10382410B2 (ko)
EP (1) EP3403185B1 (ko)
JP (2) JP2019502211A (ko)
KR (1) KR102430042B1 (ko)
CN (1) CN108475237B (ko)
WO (1) WO2017123285A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200129595A (ko) * 2019-05-09 2020-11-18 에스케이하이닉스 주식회사 메모리 모듈, 메모리 모듈의 동작 방법, 메모리 시스템 및 메모리 모듈의 동작 방법
KR102453343B1 (ko) * 2022-07-26 2022-10-11 (주)나래데이터 데이터 이관 작업에 대한 스케줄링을 통해 빠른 데이터 이관을 가능하게 하는 전자 장치 및 그 동작 방법

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230762B2 (en) * 2012-08-31 2019-03-12 Jpmorgan Chase Bank, N.A. System and method for sharing information in a private ecosystem
US10585809B2 (en) * 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US10198349B2 (en) * 2016-09-19 2019-02-05 Advanced Micro Devices, Inc. Programming in-memory accelerators to improve the efficiency of datacenter operations
US10642963B2 (en) * 2016-12-08 2020-05-05 Ati Technologies Ulc Digital rights management for a GPU
US10643006B2 (en) * 2017-06-14 2020-05-05 International Business Machines Corporation Semiconductor chip including integrated security circuit
KR102411884B1 (ko) * 2017-09-28 2022-06-22 삼성전자주식회사 전자 장치 및 그의 제어 방법
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US10871983B2 (en) * 2018-05-31 2020-12-22 Intel Corporation Process-based multi-key total memory encryption
SG11202011748WA (en) * 2018-06-06 2020-12-30 Argosoperem Llc Blockchain structure for an intellectual property exchange including a pointer to an oracle and user interface therefor
US11431475B2 (en) * 2018-06-15 2022-08-30 Dynatrace Llc Method and system for log data analytics based on SuperMinHash signatures
US10922439B2 (en) * 2018-06-29 2021-02-16 Intel Corporation Technologies for verifying memory integrity across multiple memory regions
US10579994B1 (en) * 2018-11-06 2020-03-03 Capital One Services, Llc Method for routing to mesh network content utilizing blockchain technology
KR20200093823A (ko) 2019-01-29 2020-08-06 삼성전자주식회사 해시 솔루션을 위한 반도체 메모리 장치 및 이의 구동방법
US11645043B2 (en) 2019-02-11 2023-05-09 Dynatrace Llc Method and system for calculating minwise hash signatures from weighted sets
US11163912B2 (en) 2019-03-25 2021-11-02 Micron Technology, Inc. Data attestation in memory
CN112231719A (zh) * 2019-07-15 2021-01-15 美光科技公司 密码密钥管理
US11436342B2 (en) 2019-12-26 2022-09-06 Intel Corporation TDX islands with self-contained scope enabling TDX KeyID scaling
US11645428B1 (en) 2020-02-11 2023-05-09 Wells Fargo Bank, N.A. Quantum phenomenon-based obfuscation of memory
US11651810B2 (en) * 2020-12-14 2023-05-16 SK Hynix Inc. Memory system and memory module including memory chips sharing channel
US20210319143A1 (en) * 2021-06-25 2021-10-14 Intel Corporation Memory bus link authentication and encryption mechanisms for hardware-based replay protection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328845A (ja) * 2001-05-07 2002-11-15 Fujitsu Ltd 半導体集積回路及びicカードのセキュリティー保護方法
US20130022201A1 (en) * 2011-07-19 2013-01-24 Gerrity Daniel A Encrypted memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828753A (en) * 1996-10-25 1998-10-27 Intel Corporation Circuit and method for ensuring interconnect security within a multi-chip integrated circuit package
US7184549B2 (en) * 2000-01-14 2007-02-27 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for encryption, method and apparatus for decryption, and computer-readable medium storing program
JP2002091828A (ja) 2000-09-18 2002-03-29 Sharp Corp データ処理装置および記憶装置、並びに、それらを使用したデータ転送システム
US7313239B2 (en) 2003-04-15 2007-12-25 Broadcom Corporation Method and system for data encryption/decryption key generation and distribution
US8234505B2 (en) 2006-01-20 2012-07-31 Seagate Technology Llc Encryption key in a storage system
US7511466B2 (en) 2006-04-19 2009-03-31 System General Corp. Method and apparatus for predicting discharge time of magnetic device for power converter
US7519830B2 (en) 2006-08-03 2009-04-14 Motorola, Inc. Secure storage of data
DE102007016170A1 (de) * 2007-04-02 2008-10-09 Francotyp-Postalia Gmbh Sicherheitsmodul für eine Frankiermaschine
AU2009260172A1 (en) * 2008-05-22 2009-12-23 iDataMap Corporation Pty Ltd Secure data card
US8836475B2 (en) * 2011-04-18 2014-09-16 Cubic Corporation Monitoring unit configuration management
US9128876B2 (en) 2011-12-06 2015-09-08 Honeywell International Inc. Memory location specific data encryption key
KR101975027B1 (ko) 2012-05-04 2019-05-03 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
US9742559B2 (en) * 2013-01-22 2017-08-22 Qualcomm Incorporated Inter-module authentication for securing application execution integrity within a computing device
US10176121B2 (en) * 2013-07-15 2019-01-08 Infineon Technologies Ag Apparatus and method for memory address encryption
US10171240B2 (en) * 2015-11-17 2019-01-01 Successfactors, Inc. Accessing resources in private networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328845A (ja) * 2001-05-07 2002-11-15 Fujitsu Ltd 半導体集積回路及びicカードのセキュリティー保護方法
US20130022201A1 (en) * 2011-07-19 2013-01-24 Gerrity Daniel A Encrypted memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200129595A (ko) * 2019-05-09 2020-11-18 에스케이하이닉스 주식회사 메모리 모듈, 메모리 모듈의 동작 방법, 메모리 시스템 및 메모리 모듈의 동작 방법
KR102453343B1 (ko) * 2022-07-26 2022-10-11 (주)나래데이터 데이터 이관 작업에 대한 스케줄링을 통해 빠른 데이터 이관을 가능하게 하는 전자 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US10382410B2 (en) 2019-08-13
EP3403185A1 (en) 2018-11-21
EP3403185A4 (en) 2019-11-20
KR102430042B1 (ko) 2022-08-05
EP3403185B1 (en) 2022-01-26
CN108475237A (zh) 2018-08-31
US20170201503A1 (en) 2017-07-13
JP2021002067A (ja) 2021-01-07
WO2017123285A1 (en) 2017-07-20
CN108475237B (zh) 2021-07-13
JP2019502211A (ja) 2019-01-24
JP6998435B2 (ja) 2022-01-18

Similar Documents

Publication Publication Date Title
KR102430042B1 (ko) 메모리 동작 암호화
US9875368B1 (en) Remote authorization of usage of protected data in trusted execution environments
CN102138300B (zh) 消息认证码预计算在安全存储器中的应用
US10313128B2 (en) Address-dependent key generator by XOR tree
KR20120093375A (ko) 인증서 폐기 목록을 이용한 콘텐트 제어 방법
US10146701B2 (en) Address-dependent key generation with a substitution-permutation network
GB2514428A (en) Enabling access to data
EP2990953B1 (en) Periodic memory refresh in a secure computing system
US8774407B2 (en) System and method for executing encrypted binaries in a cryptographic processor
US9602281B2 (en) Parallelizable cipher construction
US9946662B2 (en) Double-mix Feistel network for key generation or encryption
JP2017526220A (ja) 順不同(out of order)データに対する推論的暗号処理
TWI549020B (zh) 運算裝置、方法與系統
CN107466400A (zh) 用于在至少两个功能实体之间共享存储器的方法
CN116361849A (zh) 一种加密数据库的备份数据加密、解密方法及装置
US20220198068A1 (en) Privacy-enhanced computation via sequestered encryption
CN103348672A (zh) 嵌入式设备中的信息处理装置、信息处理方法以及信息处理程序
Mohammad et al. Required policies and properties of the security engine of an SoC
US20160299854A1 (en) Techniques for preventing physical attacks on contents of memory
US20230208821A1 (en) Method and device for protecting and managing keys
CN110555311A (zh) 一种基于纯软密码运算的电子签章系统安全设计方法及系统
CN114374519A (zh) 一种数据传输的方法、系统及设备

Legal Events

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