KR102208072B1 - 데이터 처리 시스템 - Google Patents
데이터 처리 시스템 Download PDFInfo
- Publication number
- KR102208072B1 KR102208072B1 KR1020140115672A KR20140115672A KR102208072B1 KR 102208072 B1 KR102208072 B1 KR 102208072B1 KR 1020140115672 A KR1020140115672 A KR 1020140115672A KR 20140115672 A KR20140115672 A KR 20140115672A KR 102208072 B1 KR102208072 B1 KR 102208072B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- initialization vector
- memory device
- encryption key
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0763—Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3242—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
애플리케이션 프로세서, 메모리 장치, 및 상기 애플리케이션 프로세서와 상기 메모리 장치 사이에 접속된 채널을 포함하는 데이터 처리 시스템에서, 상기 애플리케이션 프로세서는, 라이트 명령에 응답하여, 제1데이터를 제1암호키와 제1초기화 벡터를 이용하여 암호화하고, 암호화된 제1데이터를 상기 채널을 통해 상기 메모리 장치로 전송하고, 상기 메모리 장치는, 상기 암호화된 제1데이터를 제2암호키와 제2초기화 벡터를 이용하여 복호화하고, 복호화된 제2데이터를 메모리 코어에 저장하고, 상기 제2암호키와 상기 제2초기화 벡터는 상기 메모리 장치에 저장되고, 상기 제1암호키와 상기 제2암호키는 서로 동일하고, 상기 제1초기화 벡터와 상기 제2초기화 벡터는 서로 동일하다.
Description
본 발명의 개념에 따른 실시 예는 데이터 처리 시스템에 관한 것으로서, 특히 애플리케이션 프로세서와 메모리 장치 사이의 채널을 통해 데이터를 전송할 때, 외부로부터의 물리적 공격으로 인한 정보 누출을 방지하기 위해 상기 데이터를 암호화와 복호화를 할 수 있는 애플리케이션 프로세서와 메모리 장치를 포함하는 시스템에 관한 것이다.
많은 정보를 처리하고 저장하는 데이터 처리 시스템에서, 정보 보호는 중요한 문제이다. 외부 메모리에 대한 공격으로부터 중요한 정보나 보안 데이터를 보호하는 종래에는 두 가지 접근 방법들이 있다.
첫 번째 접근 방법은, 온-칩(on-chip) 메모리를 이용하는 방법이다. 상기 첫 번째 접근 방법은 중요한 정보나 보안 데이터를 프로세서 내부의 온-칩 메모리(예컨대, SRAM 또는 캐시 메모리)에 저장하고, 상기 정보나 상기 데이터에 대해 보호를 했다. 그러나, 온-칩 메모리를 사용하는 접근 방법은, 프로세서 내부에 상기 온-칩 메모리를 구현해야 하므로, 상기 온-칩 메모리를 구현하기 위한 공간이 필요하고 구현 비용이 증가할 수 있다.
두 번째 접근 방법은, 프로세서를 이용하여 중요한 정보 또는 보안 데이터를 암호화하는 방법이다. 상기 프로세서는 중요한 정보나 보안 데이터를 암복호화하고, 암복호화된 정보 또는 데이터를 외부 메모리에 저장한다.
프로세서를 이용하여 데이터에 대한 암복호화 동작이 수행되므로 상기 프로세서의 오버로드(overload)가 발생하고, 암복호화된 데이터를 외부 메모리에 저장해야 하므로, 상기 외부 메모리는 많은 메모리 공간을 상기 암복호화 데이터를 저장하기 위해 할당되어야 한다. 따라서, 상기 외부 메모리의 메모리 공간 효율성이 감소한다. 또한, 상기 프로세서는, 블록 암호화 방법을 사용하여, 데이터를 암복호화하므로, 상기 프로세서에서 상기 데이터에 대한 처리의 지연과 과도한 전력 소모가 발생할 수 있다. 따라서, 상기 두 번째 접근 방법은 모바일 환경에 적합하지 않다.
본 발명이 이루고자 하는 기술적인 과제는 데이터에 대한 외부로부터의 공격을 방지할 수 있는 애플리케이션 프로세서와 메모리 장치를 포함하는 데이터 처리 시스템을 제공하는 것이다.
상기 애플리케이션 프로세서가 라이트 데이터를 상기 애플리케이션 프로세서의 내부에 저장된 암호키를 이용하여 암호화하고, 암호화된 라이트 데이터를 메모리 장치로 전송하면, 상기 메모리 장치는 상기 메모리 장치의 내부에 저장된 암호키를 이용하여 암호화된 라이트 데이터를 복호화할 수 있다.
또한, 상기 메모리 장치가 리드 데이터를 상기 메모리 장치의 내부에 저장된 암호키를 이용하여 암호화하고, 암호화된 리드 데이터를 상기 애플리케이션 프로세서로 전송하면, 상기 애플리케이션 프로세서는 상기 애플리케이션 프로세서의 내부에 저장된 암호키를 이용하여 암호화된 리드 데이터를 복호화할 수 있다.
본 발명의 실시 예에 따른 애플리케이션 프로세서, 메모리 장치, 및 상기 애플리케이션 프로세서와 상기 메모리 장치 사이에 접속된 채널을 포함하는 데이터 처리 시스템에서, 라이트 명령에 응답하여, 상기 애플리케이션 프로세서는 제1데이터를 제1암호키와 제1초기화 벡터를 이용하여 암호화하고, 암호화된 제1데이터를 상기 채널을 통해 상기 메모리 장치로 전송하고, 상기 메모리 장치는, 상기 암호화된 제1데이터를 제2암호키와 제2초기화 벡터를 이용하여 복호화하고, 복호화된 제1데이터를 메모리 코어에 저장하고, 상기 제2암호키와 상기 제2초기화 벡터는 상기 메모리 장치에 저장되고, 상기 제1암호키와 상기 제2암호키는 서로 동일하고, 상기 제1초기화 벡터와 상기 제2초기화 벡터는 서로 동일하다.
상기 애플리케이션 프로세서는 상기 제1암호키, 상기 제1초기화 벡터, 및 상기 제1데이터를 이용하여 제1메시지 인증 코드(message authentication code (MAC))를 생성하고, 상기 제1MAC와 함께 상기 암호화된 제1데이터를 상기 채널을 통해 상기 메모리 장치로 전송한다.
상기 메모리 장치는, 상기 제2암호키, 상기 제2초기화 벡터, 및 상기 복호화된 제2데이터를 이용하여 제2MAC를 생성하고, 상기 제1MAC와 상기 제2MAC를 비교하고, 비교의 결과에 따라 상기 복호화된 제1데이터에 대한 에러를 검출하고, 검출 결과를 상기 채널을 통해 상기 애플리케이션 프로세서로 전송한다.
상기 애플리케이션 프로세서는, 상기 라이트 명령에 기초하여 상기 애플리케이션 프로세서의 제1메모리 영역에 저장된 상기 제1초기화 벡터를 업데이트하고, 업데이트된 제1초기화 벡터를 상기 채널을 통해 상기 메모리 장치로 전송하고, 상기 메모리 장치는 상기 업데이트된 제1초기화 벡터를 이용하여 상기 메모리 장치의 제2메모리 영역에 저장된 상기 제2초기화 벡터를 업데이트한다.
상기 애플리케이션 프로세서는 상기 라이트 명령을 카운트하고, 카운트 결과에 따라 상기 제1초기화 벡터의 업데이트 여부를 결정한다.
리드 명령에 응답하여, 상기 메모리 장치는 상기 메모리 코어에 저장된 제3데이터를 상기 제2암호키와 상기 제2초기화 벡터를 이용하여 암호화하고, 암호화된 제3데이터를 상기 채널을 통해 상기 애플리케이션 프로세서로 전송하고, 상기 애플리케이션 프로세서는, 수신된 암호화된 제3데이터를 상기 제1암호키와 상기 제1초기화 벡터를 이용하여 복호화하고, 복호화된 제2데이터를 생성한다.
상기 메모리 장치는 상기 제2암호키, 상기 제2초기화 벡터, 및 상기 제2데이터를 이용하여 제3MAC를 생성하고, 상기 제3MAC와 함께 상기 암호화된 제2데이터를 상기 채널을 통해 상기 애플리케이션 프로세서로 전송한다.
상기 애플리케이션 프로세서는, 상기 제1암호키, 상기 제1초기화 벡터, 및 상기 복호화된 제2데이터를 이용하여 제4MAC를 생성하고, 수신된 제3MAC와 상기 제4MAC를 비교하고, 비교의 결과에 따라 상기 복호화된 제2데이터에 대한 에러를 검출한다.
상기 애플리케이션 프로세서는 상기 리드 명령에 기초하여 상기 메모리 장치의 제1메모리 영역에 저장된 상기 제1초기화 벡터를 업데이트하고, 업데이트된 제1초기화 벡터를 상기 채널을 통해 상기 메모리 장치로 전송하고, 상기 메모리 장치는 상기 업데이트된 제1초기화 벡터를 이용하여 상기 메모리 장치의 제2메모리 영역에 저장된 상기 제2초기화 벡터를 업데이트한다.
상기 애플리케이션 프로세서는 상기 리드 명령을 카운트하고, 카운트 결과에 따라 상기 제1초기화 벡터의 업데이트 여부를 결정한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 스트림 암호화를 이용하여 데이터를 암호화 또는 복호화할 수 있는 효과가 있다. 따라서, 상기 데이터 처리 시스템은 블록 암호화를 이용하는 종래의 데이터 처리 시스템보다 적은 오버헤드를 가지고, 보다 적은 전력을 소모하는 효과가 있다.
본 발명의 실시 예에 따른 상기 데이터 처리 시스템은, 애플리케이션 프로세서와 메모리 장치 각각이 데이터에 대한 암복호화와 메시지 인증 코드를 이용하여 상기 데이터에 대한 무결성을 보장하는 효과가 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 스트림 암호화를 이용하여 데이터를 암호화 또는 복호화할 수 있으므로, 애플리케이션 프로세서와 메모리 장치 사이의 메모리 액세스 지연을 방지할 수 있고, 상기 애플리케이션 프로세서의 데이터 처리 속도를 향상시키는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 작동을 설명하기 위한 개략적인 블록도이다.
도 2는 도 1에 도시된 데이터 처리 시스템의 개략적인 블록도이다.
도 3은 도 2에 도시된 데이터 처리 시스템의 구체적인 블록도이다.
도 4는 도 3에 도시된 제1인코더와 제2인코더의 블록도이다.
도 5는 도 3에 도시된 제1디코더의 제2디코더의 블록도이다.
도 6은 도 3에 도시된 제1액세스 카운터의 블록도이다.
도 7은 도 3에 도시된 제1초기화 벡터와 제2초기화 벡터를 업데이트하는 방법을 설명하는 개념도이다.
도 8은 도 6에 도시된 제1액세스 카운터의 작동 방법을 설명하기 위한 플로우차트이다.
도 9는 도 3에 도시된 제1MAC 체커와 제2MAC 체커의 개략적인 블록도이다.
도 10은 도 3에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도이다.
도 12는 도 11에 도시된 데이터 처리 시스템이 페이지 테이블에 포함된 정보를 이용하여 작동하는 방법을 설명하기 위한 개략적인 블록도이다.
도 13은 도 11에 도시된 데이터 처리 시스템의 구체적인 블록도이다.
도 14는 도 13에 도시된 데이터 처리 시스템의 라이트 작동을 설명하기 위한 플로우차트이다.
도 15는 도 13에 도시된 데이터 처리 시스템의 리드 작동을 설명하기 위한 플로우차트이다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 작동을 설명하기 위한 개략적인 블록도이다.
도 2는 도 1에 도시된 데이터 처리 시스템의 개략적인 블록도이다.
도 3은 도 2에 도시된 데이터 처리 시스템의 구체적인 블록도이다.
도 4는 도 3에 도시된 제1인코더와 제2인코더의 블록도이다.
도 5는 도 3에 도시된 제1디코더의 제2디코더의 블록도이다.
도 6은 도 3에 도시된 제1액세스 카운터의 블록도이다.
도 7은 도 3에 도시된 제1초기화 벡터와 제2초기화 벡터를 업데이트하는 방법을 설명하는 개념도이다.
도 8은 도 6에 도시된 제1액세스 카운터의 작동 방법을 설명하기 위한 플로우차트이다.
도 9는 도 3에 도시된 제1MAC 체커와 제2MAC 체커의 개략적인 블록도이다.
도 10은 도 3에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도이다.
도 12는 도 11에 도시된 데이터 처리 시스템이 페이지 테이블에 포함된 정보를 이용하여 작동하는 방법을 설명하기 위한 개략적인 블록도이다.
도 13은 도 11에 도시된 데이터 처리 시스템의 구체적인 블록도이다.
도 14는 도 13에 도시된 데이터 처리 시스템의 라이트 작동을 설명하기 위한 플로우차트이다.
도 15는 도 13에 도시된 데이터 처리 시스템의 리드 작동을 설명하기 위한 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 작동을 설명하기 위한 개략적인 블록도이다.
도 1을 참조하면, 데이터 처리 시스템(10)은 애플리케이션 프로세서 (application processor(AP); 100)와 메모리 장치(200)를 포함한다.
데이터 처리 시스템(10)은 PC(personal computer), 또는 휴대용 전자 장치로 구현될 수 있다. 상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), 모바일 인터넷 장치 (mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 또는 만물 인터넷(internet of everything(IoE)) 장치로 구현될 수 있다.
AP(100)는 메모리 장치(200)의 작동을 제어하는 호스트(host)의 기능을 수행할 수 있고, 집적 회로(IC), 시스템 온 칩(system on chip(SoC)), 또는 다른 명칭의 프로세서로 구현될 수 있다.
메모리 장치(200)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다. 상기 휘발성 메모리는 DRAM(dyanmic random access memory), SRAM(static random access memory), 또는 다른 명칭의 휘발성 메모리로 구현될 수 있다. 상기 불휘발성 메모리는 EEPROM(electrically erasable programmable read-only memory), 플래시(flash) 메모리, MRAM(magnetic RAM), 스핀전달토크 MRAM(spin-transfer torque MRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), 저항 메모리 (resistive RAM(RRAM)), 또는 다른 명칭의 불휘발성 메모리로 구현될 수 있다.
메모리 장치(200)는 스마트 카드, SD(secure digital)카드, 마이크로 SD 카드, 멀티디미어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)), 임베디드 멀티-칩 패키지(embeded Multi-Chip Package(eMCP)), PPN (Perfect Page NAND), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 솔리드 스테이트 드라이브(solid state drive(SSD)), 또는 임베디드 SSD로 구현될 수 있다.
라이트 작동(WRITE) 동안, AP(100)는 평문 데이터(plaintext data; 12)를 제1키 데이터(14)를 이용하여 암호화(cipher)하고, 암호화된 데이터(16)를 채널(300)을 통해 메모리 장치(200)로 전송할 수 있다. 메모리 장치(200)는 수신된 암호화된 데이터(16)를 제2키 데이터(24)를 이용하여 복호화(decipher)하고, 복호화된 데이터(26), 즉 평문 데이터(22)를 생성할 수 있다. AP(100)에 저장된 제1키 데이터 (14)와 메모리 장치(200)에 저장된 제2키 데이터(24)는 서로 동일하다.
리드 작동(READ) 동안, 메모리 장치(200)는 평문 데이터(22)를 제2키 데이터 (24)를 이용하여 암호화하고, 암호화된 데이터(28)를 채널(300)을 통해 AP(100)로 전송할 수 있다. AP(100)는 수신된 암호화된 데이터(28)를 제1키 데이터(14)를 이용하여 복호화하고, 복호화된 데이터(18), 즉 평문 데이터(12)를 생성할 수 있다.
AP(100)는 평문 데이터(12)를 제1키 데이터(14)를 이용하여 암호화할 수 있고, 메모리 장치(200)는 평문 데이터(22)를 제2키 데이터(24)를 이용하여 암호화할 수 있다. 따라서, AP(100)로부터 출력된 암호화된 데이터와 메모리 장치(200)로부터 출력된 암호화된 데이터는 외부의 물리적인 공격(예컨대, 프로빙(probing))으로부터 보호될 수 있다.
도 2는 도 1에 도시된 데이터 처리 시스템의 개략적인 블록도이다.
도 2를 참조하면, 데이터 처리 시스템(10A)은 AP(100A), 메모리 장치(200A), 및 AP(100A)와 메모리 장치(200A) 사이에 접속된 채널(300)을 포함할 수 있다. 도 2의 AP(100A)는 도 1의 AP(100)와 동일 또는 유사한 기능을 수행할 수 있고, 도 2의 메모리 장치(200A)는 도 1의 메모리 장치(200)와 동일 또는 유사한 기능을 수행할 수 있다.
AP(100A)는 CPU(102), 메모리 컨트롤러(104A), 및 메모리(400)를 포함한다. 메모리 컨트롤러 (104A)는 제1암복호화 회로(110A)와 제1MAC(message authentication code(MAC)) 체크 회로(160)를 포함한다.
AP(100A)는, CPU(102)로부터 출력된 라이트 명령(CMDW)에 응답하여, 메모리 (400)로부터 전송된 제1데이터(DATA1)를 암호화하고, 암호화된 제1데이터(EDATA1)를 채널(300)을 통해 메모리 장치(200A)로 전송한다. 따라서, 메모리 장치(200A)는 암호화된 제1데이터(EDATA1)를 복호화하고, 복호화된 제1데이터(DATA2)를 메모리 코어(202)에 저장한다.
메모리 장치(200A)는, AP(100A)의 CPU(102)로부터 출력된 리드 명령(CMDR)에 응답하여, 메모리 코어(202)에 저장된 제2데이터(DATA3)를 리드하고 암호화하고, 암호화된 제2데이터(EDATA3)를 채널(300)을 통해 AP(100A)로 전송할 수 있다. 따라서, AP(100A)는 수신된 암호화된 제2데이터(EDATA3)를 복호화하고, 복호화된 제2데이터(DATA4)를 생성하고, 복호화된 제2데이터(DATA4)를 메모리(400)에 저장할 수 있다. 실시 예들에 따라, 복호화된 제2데이터(DATA4)는 CPU(102)로 전송될 수 있다.
즉, AP(100A)는, 채널(300)을 통해, 메모리 장치(200A)로 암호화된 제1데이터(EDATA1)를 전송하거나 암호화된 제2데이터(EDATA3)를 메모리 장치(200A)로부터 수신한다.
CPU(102)는 AP(100A)에 의해 수행되는 데이터 처리, 예컨대 암호화 작동과 복호화 작동을 전반적으로 제어할 수 있다. 예컨대, CPU(102)는 하나 또는 그 이상의 CPU 코어들을 포함할 수 있다.
CPU(102)에 의해 생성된 라이트 명령(CMDW)이 메모리 장치(200A)로 전송되면, 메모리 장치(200A)는 라이트 명령(CMDW)에 응답하여 라이트 작동을 수행한다. CPU(102)에 의해 생성된 리드 명령(CMDR)이 메모리 장치(200A)로 전송되면, 메모리 장치(200A)는 리드 명령(CMDR)에 응답하여 리드 작동을 수행한다.
메모리 컨트롤러(104A)는 AP(100A)와 메모리 장치(200A) 사이에서 주거나 받는 데이터의 전송을 제어할 수 있다.
라이트 작동을 위해, 메모리 컨트롤러(104A)는, CPU(102)로부터 전송된 라이트 명령(CMDW)에 응답하여, 메모리(400)로부터 제1데이터(DATA1)를 리드하고, 리드된 제1데이터(DATA1)를 암호화하고, 암호화된 제1데이터(EDATA1)를 채널(300)을 통해 메모리 장치 (200A)로 전송할 수 있다.
리드 작동을 위해, 메모리 컨트롤러(104A)는, CPU(102)로부터 전송된 리드 명령(CMDR)에 응답하여, 메모리 장치(200A)에 의해 암호화된 데이터(EDATA3)를 리드하고, 리드된 암호화된 데이터(EDATA3)를 복호화하고, 복호화된 데이터(DATA4)를 메모리(400)에 저장할 수 있다.
제1암복호화 회로(110A)는 데이터를 암호화하거나 복호화할 수 있다. 예컨대, 제1암복호화 회로(110A)는 제1데이터(DATA1)를 암호화하고, 암호화된 제1데이터(EDATA1)를 채널(300)을 통해 메모리 장치(200A)로 전송하거나, 메모리 장치 (200A)로부터 채널(300)을 통해 전송된 암호화된 제2데이터(EDATA3)를 복호화하고, 복호화된 제2데이터(DATA4)를 메모리(400)로 전송한다.
제1MAC 체크 회로(160)는 처리될 데이터에 대한 MAC를 생성하고 생성된 MAC를 이용하여 상기 데이터의 에러를 체크한다. 예컨대, 제1MAC 체크 회로(160)는 상기 에러에 기초하여 상기 데이터가 외부로부터 물리적인 공격을 받았는지를 체크할 수 있다.
메모리 장치(200A)는 메모리 코어(202)와 인터페이스(204A)를 포함한다. 인터페이스(204A)는 제2암복호화 회로(210A)와 제2MAC 체크 회로(260)를 포함할 수 있다.
메모리 장치(200)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
메모리 코어(202)는 데이터(DATA2 또는 DATA3)를 저장한다.
인터페이스(204A)는 메모리 컨트롤러(104A)와 메모리 코어(202) 사이에서 주거나 받는 데이터의 전송을 제어할 수 있다. 인터페이스(204A)는 메모리 코어(202)에 대한 액세스 작동, 예컨대 라이트 작동과 리드 작동을 제어할 수 있다.
인터페이스(204A)는 암호화된 제1데이터(EDATA1)를 복호화하고, 복호화된 제1데이터(DATA2)를 생성하고, 복호화된 제1데이터(DATA2)를 메모리 코어(202)에 저장할 수 있다. 또한, 인터페이스(204A)는 메모리 코어(202)로부터 수신된 제2데이터(DATA2)를 암호화하고, 암호화된 제2데이터(EDATA3)를 생성하고, 암호화된 제2데이터(EDATA3)를 채널(300)을 통해 AP(100)로 전송할 수 있다.
제2암복호화 회로(210A)는 데이터를 암호화하거나 복호화할 수 있다. 예컨대, 제2암복호화 회로(210A)는 제2데이터(DATA3)를 암호화하고, 암호화된 제2데이터(EDATA3)를 채널(300)을 통해 AP(100A)로 전송하거나, 수신된 암호화된 제1데이터(EDATA1)를 복호화하고, 복호화된 제1데이터(DATA2)를 메모리 코어(202)로 전송한다.
제2MAC 체크 회로(260)는 처리될 데이터에 대한 MAC를 생성하고, 생성된 MAC를 이용하여 상기 데이터의 에러를 체크한다. 예컨대, 제2MAC 체크 회로(260)는 상기 에러에 기초하여 상기 데이터가 외부로부터 물리적인 공격을 받았는지를 체크할 수 있다.
AP(100A)와 메모리 장치(200A)는 채널(300)을 통해 양방향 통신을 수행할 수 있다. 실시 예들에 따라, 채널(300)은 PCI-E(peripheral component interconnect-Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA (Parallel ATA), 또는 SAS(serial attached SCSI)를 지원할 수 있다.
메모리(400)는 AP(100A)의 작동 메모리의 기능을 수행할 수 있다. 메모리(400)는 레지스터 또는 SRAM으로 구현될 수 있다.
도 3은 도 2에 도시된 데이터 처리 시스템의 구체적인 블록도이다.
도 3을 참조하면, 제1암복호화 회로(110A)는 제1인코더(115), 제1디코더 (120), 제1키 메모리(130), 제1초기화 벡터 메모리(140), 제1난수 생성기(random number generator; 145), 및 제1액세스 카운터(150)를 포함할 수 있다.
제1키 메모리(130)는 제1암호키(KEYC1)를 저장하고, 제1초기화 벡터 메모리 (140)는 제1초기화 벡터(initialization vector; IVC1)를 저장하고, 제1액세스 카운터(150)는 제1카운트 값 (CNTC1)을 생성할 수 있다.
도 4는 도 3에 도시된 제1인코더와 제2인코더의 블록도이다. 도 3과 도 4를 참조하면, 제1인코더(115)의 입력 신호들과 출력 신호와, 제2인코더(220)의 입력 신호들과 출력 신호를 제외하면, 각 인코더(115와 220)의 구조와 작동은 실질적으로 동일 또는 유사하다.
실시 예에 따라, 제1인코더(115)는 제1데이터(DATA1)를 제1암호키(KEYC1)와 제1초기화 벡터(IVC1)를 이용하여 암호화하고, 암호화된 제1데이터(EDATA1)를 생성할 수 있다. 다른 실시 예에 따라, 제1인코더(115)는 제1데이터(DATA1)를 제1암호키(KEYC1), 제1초기화 벡터(IVC1), 및 제1카운트 값(CNTC1)을 이용하여 암호화하고, 암호화된 제1데이터(EDATA1)를 생성할 수 있다.
실시 예에 따라, 제2인코더(220)는 제2데이터(DATA3)를 제2암호키(KEYC2)와 제2초기화 벡터(IVC2)를 이용하여 암호화하고, 암호화된 제2데이터(EDATA3)를 생성할 수 있다. 다른 실시 예에 따라, 제2인코더(220)는 제2데이터(DATA3)를 제2암호키(KEYC2), 제2초기화 벡터(IVC2), 및 제2카운트 값(CNTC2)을 이용하여 암호화하고, 암호화된 제2데이터(EDATA3)를 생성할 수 있다.
각 인코더(115와 220)는 암호화 작동을 수행하는 각 암호 회로(117과 222)를 포함할 수 있다. 각 인코더(115와 220)는 스트림 암호화 기법을 이용하여 각 데이터(DATA1과 DATA3)를 암호화할 수 있다. 상기 스트림 암호화 기법에 대한 알고리즘은 Trivium, Sals20, Rabbit, SOSEMANUK, 또는 HC-128 등으로 구현될 수 있다.
도 5는 도 3에 도시된 제1디코더의 제2디코더의 블록도이다. 도 3과 도 5를 참조하면, 제1디코더(120)의 입력 신호들과 출력 신호와, 제2디코더(2215)의 입력 신호들과 출력 신호를 제외하면, 각 디코더(120과 215)의 구조와 작동은 실질적으로 동일 또는 유사하다.
실시 예에 따라, 제1디코더(120)는 암호화된 제2데이터(EDATA3)를 제1암호키 (KEYC1)와 제1초기화 벡터(IVC1)를 이용하여 복호화하고, 복호화된 제2데이터 (DATA4)를 생성할 수 있다. 다른 실시 예에 따라, 제1디코더(120)는 암호화된 제2데이터(EDATA3)를 제1암호키(KEYC1), 제1초기화 벡터(IVC1), 및 제1카운트 값(CNTC1)을 이용하여 복호화하고, 복호화된 제2데이터(DATA4)를 생성할 수 있다.
실시 예에 따라, 제2디코더(215)는 암호화된 제1데이터(EDATA1)를 제2암호키 (KEYC2)와 제2초기화 벡터(IVC2)를 이용하여 복호화하고, 복호화된 제1데이터 (DATA2)를 생성할 수 있다. 다른 실시 예에 따라, 제2디코더(215)는 암호화된 제1데이터(EDATA1)를 제2암호키(KEYC2), 제2초기화 벡터(IVC2), 및 제2카운트 값 (CNTC2)을 이용하여 복호화하고, 복호화된 제1데이터(DATA2)를 생성할 수 있다.
각 디코더(120과 215)는 복호화 작동을 수행하는 각 복호 회로(122와 217)를 포함할 수 있다.
제1키 메모리(130)는 불휘발성 메모리일 수 있고, 제1암호키(KEYC1)를 저장한다. 실시 예에 따라, 제1암호키(KEYC1)는 AP(100A)의 제조 단계에서 생성될 수 있다. 이 경우, 제1암호키(KEYC1)는 OTP(one-time programmable) 키 데이터일 수 있다. 다른 실시 예에 따라, 제1암호키(KEYC1)는 AP(100A)의 제조 이후에, AP(100A)에 의해 프로그램될 수 있다.
제1암호키(KEYC1)는 난수(random number)일 수 있다. 제1암호키(KEYC1)는 스트림 암호화 키(stream cipher key)일 수 있다. AP(100A)는 프로그램된 제1암호키 (KEYC1)를 메모리 장치(200A)로 전송하고, 메모리 장치(200A)는 수신된 제1암호키 (KEYC1)를 제2암호키(KEYC2)로서 제2키 메모리(230)에 저장할 수 있다. 제1암호키(KEYC1)와 제2암호키(KEYC2)는 동일하다.
제1액세스 카운터(150)는 메모리 장치(200A)에 대한 AP(100A)의 액세스(예컨대, 라이트 작동 또는 리드 작동)의 횟수를 카운트하고, 제1카운트 값(CNTC1)을 생성한다.
제1액세스 카운터(150)는 라이트 명령(CMDW)의 출력(issue)의 횟수(예컨대, 라이트 트랜잭션(write transaction))를 카운트하고, 리드 명령(CMDR)의 출력 횟수(예컨대, 리드 트랜잭션)를 카운트한다.
도 6은 도 3에 도시된 제1액세스 카운터의 블록도이다.
도 3과 도 6을 참조하면, 제1액세스 카운터(150)는 제1카운터(152)와 제1오버플로 검출기(154)를 포함할 수 있다.
제1카운터(152)는, 라이트 명령(CMDW)과 리드 명령(CMDR)이 수신될 때마다, 라이트 명령(CMDW)의 수신 횟수와 리드 명령(CMDR)의 수신 횟수를 카운트하고, 제1카운트 값(CNTC1)을 출력한다. 예컨대, 라이트 명령(CMDW)이 5번 수신되고 리드 명령(CMDR)이 3번 수신되면, 제1카운트 값(CNTC1)은 8이다.
제1오버플로 검출기(154)는, 제1카운트 값(CNTC1)이 기준 카운트 값에 도달하면, 제1카운터 리셋 신호(RESETC1)를 제1카운터(152)로 전송한다. 따라서, 제1카운트 값(CNTC1)은 리셋된다.
또한, 제1오버플로 검출기(154)는, 제1카운트 값(CNTC1)이 기준 카운트 값에 도달하면, 제1리셋 신호(RESET1)를 제1난수 생성기(145)로 전송한다. 제1난수 생성기(145)는, 제1리셋 신호(RESET1)에 응답하여, 리셋된다. 그 후, 제1난수 생성기 (145)는 새로운 난수(UPDATE)를 생성한다.
제1초기화 벡터 메모리(140)는 제1초기화 벡터(IVC1)를 저장한다. 예컨대, 제1초기화 벡터(IVC1)는 암호화된 제1데이터(EDATA1)의 시작을 구별하기 위해 사용된다.
제1초기화 벡터(IVC1)는 제1난수 생성기(145)에 의해 생성된 난수이다. AP (100A)가 제1초기화 벡터(IVC1)를 메모리 장치(200A)로 전송하면, 메모리 장치 (200A)는 제1초기화 벡터(IVC1)를 제2초기화 벡터(IVC2)로서 제2초기화 벡터 메모리(240)에 저장한다.
도 7은 도 3에 도시된 제1초기화 벡터와 제2초기화 벡터를 업데이트하는 방법을 설명하는 개념도이다.
도 3과 도 7을 참조하면, 제1초기화 벡터 메모리(140)는 제1난수 생성기 (145)로부터 출력된 새로운 난수(UPDATE)를 업데이트된 제1초기화 벡터(IV1)로서 저장한다. AP(100A)는 업데이트된 제1초기화 벡터(IV1)를 메모리 장치(200A)로 전송한다. 메모리 장치(200A)는 업데이트된 제1초기화 벡터(IV1)를 업데이트된 제2초기화 벡터(IV1)로서 제2초기화 벡터 메모리(240)에 저장한다. 따라서, 제2초기화 벡터(IVC2)는 업데이트된 제2초기화 벡터(IV1)로 업데이트된다.
도 8은 도 6에 도시된 제1액세스 카운터의 작동 방법을 설명하기 위한 플로우차트이다.
도 6부터 도 8을 참조하면, 제1카운터(152)는, 리드 명령(CMDR)과 라이트 명령 (CMDW)이 수신될 때마다, 제1카운트 값(CNTC1)을 1씩 증가시킨다(S101).
제1오버플로우 검출기(154)는 제1카운트 값(CNTC1)이 기준 카운트 값에 도달했는지를 판단한다(S103). 제1카운트 값(CNTC1)이 상기 기준 카운트 값에 도달하면, 제1오버플로우 검출기(154)는 제1카운터 리셋 신호(RESETC1)를 제1카운터(152)로 출력하고, 제1리셋 신호(RESET1)를 제1난수 생성기(145)로 출력한다.
따라서, 제1카운터(152)는 리셋되고(S105), 제1난수 생성기(145)는 새로운 난수(UPDATE)를 생성한다. 제1초기화 벡터 메모리(140)에 저장된 제1초기화 벡터 (IVC1)는 새로운 난수(UPDATE=IV1)로 업데이트된다(S107). 상술한 바와 같이, 제2초기화 벡터 메모리(240)에 저장된 제2초기화 벡터(IVC2)는 새로운 난수 (UPDATE=IV1)로 업데이트된다(S107).
제1카운터(152)는, 제1카운트 값(CNTC1)이 상기 기준 카운트 값에 도달할 때까지, S101단계를 수행한다.
도 3을 다시 참조하면, 제2암복호화 회로(210A)는 제2인코더(215), 제2디코더(220), 제2키 메모리(230), 제2초기화 벡터 메모리(240), 및 제2카운터(250)를 포함할 수 있다.
제2초기화 벡터 메모리(240)는 제1초기화 벡터(IVC1)와 동일한 제2초기화 벡터(IVC2)를 저장한다.
제1오버플로우 검출기(154)에 대응되는 제2오버플로우 검출기의 구조와 작동을 제외하면, 제1액세스 카운터 (150)의 구조와 작동을 제2액세스 카운터(250)의 구조와 작동과 실질적으로 동일 또는 유사하다. 즉, 상기 제2오버플로우 검출기는 제1리셋 신호(RESET1)에 대응되는 제2리셋 신호를 생성하지 않는다.
제1MAC 체크 회로(160)는 제1MAC 체커(162), 제3키 메모리(170), 제3액세스 카운터(190), 제3초기화 벡터 메모리(180), 제2난수 생성기(185)를 포함할 수 있다.
제1메시지 인증코드 체커(162)는, 제3암호키(KEYM1), 제3초기화 벡터(IVM1), 및/또는 제3카운터 값(CNTM1)을 이용하여, 제1데이터(DATA1)에 대한 제1MAC(MACD1)를 생성하고, 제1MAC(MACD1)를 인터페이스(204A)로 전송한다.
또한, 제1메시지 인증코드 체커(162)는, 제3암호키(KEYM1), 제3초기화 벡터 (IVM1), 및/또는 제3카운터 값(COUNT_M1)을 이용하여, 복호화된 제2데이터(DATA4)에 대한 MAC를 생성하고, 생성된 MAC와 제2메시지 인증코드 체커(262)로부터 전송된 제3MAC(MACD3)를 비교하고, 비교의 결과에 따라 복호화된 제2데이터(DATA4)에 대한 에러 여부를 체크할 수 있다.
제3키 메모리(170)는 제3암호키(KEYM1)를 저장하고, 제3초기화 벡터 메모리 (180)는 제3초기화 벡터(IVM1)를 저장하고, 제3액세스 카운터(190)는 제3카운터 값 (CNTM1)을 생성한다.
제3액세스 카운터(190)의 구조와 작동은 도 6을 참조하여 설명된 제1액세스 카운터(150)의 구조와 작동과 실질적으로 동일 또는 유사하다.
제2난수 생성기(185)의 구조와 작동은 도 7을 참조하여 설명된 제1난수 생성기(145)의 구조와 작동과 실질적으로 동일 또는 유사하다.
도 3과 도 7을 참조하면, 제3초기화 벡터 메모리(180)는 제2난수 생성기 (185)로부터 출력된 새로운 난수를 업데이트된 제3초기화 벡터(IV2)로서 저장한다. AP(100A)는 업데이트된 제3초기화 벡터(IV2)를 메모리 장치(200A)로 전송한다. 메모리 장치(200A)는 업데이트된 제3초기화 벡터(IV2)를 업데이트된 제4초기화 벡터 (IV2)로서 제4초기화 벡터 메모리(280)에 저장한다. 따라서, 제4초기화 벡터(IVM2)는 업데이트된 제4초기화 벡터(IV2)로 업데이트된다.
도 9는 도 3에 도시된 제1MAC 체커와 제2MAC 체커의 개략적인 블록도이다.
도 9를 참조하면, 제1MAC 체커(162)는 제1MAC 생성기(164), 제1레지스터 (166), 및 제1검출기(168)를 포함할 수 있다.
제1MAC 생성기(164)는, 제3암호키(KEYM1), 제3카운트 값 (CNTM1), 및/또는 제3초기화 벡터(IVM1)를 이용하여, 제1데이터(DATA1)에 대한 제1MAC(MACD1)를 생성한다. 또한, 제1MAC 생성기(164)는, 제3암호키(KEYM1), 제3카운트 값 (CNTM1), 및/또는 제3초기화 벡터(IVM1)를 이용하여, 복호화된 제2데이터(DATA4)에 대한 제4MAC(MACD4)를 생성한다.
제1레지스터(166)는 제1MAC(MACD1) 및/또는 제4MAC(MACD4)를 저장한다.
제1검출기(168)는 제3MAC(MACD3)와 제4MAC(MACD4)를 비교하고, 제3MAC(MACD3)와 제4MAC(MACD4)가 일치하지 않을 때 제2에러 신호(ERR2)를 생성한다. 예컨대, 제2에러 신호(ERR2)는 CPU(102)로 출력된다.
제2MAC 체커(262)는 제2MAC 생성기(264), 제2레지스터(266), 및 제2검출기(268)를 포함할 수 있다.
제2MAC 생성기(264)는, 제4암호키(KEYM2), 제4카운트 값 (CNTM2), 및/또는 제4초기화 벡터(IVM2)를 이용하여, 복호화된 제1데이터(DATA2)에 대한 제2MAC(MACD2)를 생성한다. 또한, 제2MAC 생성기(264)는, 제4암호키(KEYM2), 제4카운트 값(CNTM2), 및/또는 제4초기화 벡터(IVM2)를 이용하여, 제2데이터(DATA3)에 대한 제3MAC(MACD3)를 생성한다.
제2레지스터(266)는 제2MAC(MACD2) 및/또는 제3MAC(MACD3)를 저장한다.
제2검출기(268)는 제1MAC(MACD1)와 제2MAC (MACD2)를 비교하고, 제1MAC(MACD1)와 제2MAC(MACD2)가 일치하지 않을 때 제1에러 신호(ERR1)를 생성한다. 예컨대, 제1에러 신호(ERR1)는 채널(300)을 통해 CPU(102)로 출력된다.
각 MAC(MACD1~MACD4)는 해시 함수(hash function)를 이용하여 생성될 수 있다.
제2MAC 체크 회로(260)는 제2MAC 체커(262), 제4키 메모리(270), 제4초기화 벡터 메모리(280), 및 제4액세스 카운터(290)를 포함한다.
제4키 메모리(270)는 제4암호키(KEYM2)를 저장하고, 제4초기화 벡터 메모리(280)는 제4초기화 벡터(IVM2)를 저장한다. 제4액세스 카운터(290)는 제4카운트 값(CNTM2)를 출력한다. 제4액세스 카운터(290)의 구조와 작동은 제2액세스 카운터 (250)의 구조와 작동과 실질적으로 동일 또는 유사하다.
메모리 코어(202)는 복호화된 제1데이터(DATA2)와 제2데이터(DATA3)를 저장할 수 있다.
도 10은 도 3에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 3과 도 10을 참조하면, 라이트 작동(WRITE) 동안, AP(100A)는 제1데이터 (DATA1)를 제1암호키(KEYC1)와 제1초기화 벡터(IVC1)를 이용하여 암호화하고, 암호화된 제1데이터(EDATA1)를 생성한다. 이와 동시에 또는 병렬적으로, AP(100A)는 제1MAC(MACD1)를 생성한다. AP(100A)는 암호화된 제1데이터(EDATA1)와 제1MAC(MACD1)를 채널(300)을 통해 메모리 장치(200A)로 전송한다.
실시 예들에 따라, 암호화된 제1데이터(EDATA1)와 제1MAC (MACD1)는 직렬로 전송될 수도 있고 병렬로 전송될 수 있다. 즉, 채널(300)의 구조에 따라 암호화된 제1데이터(EDATA1)와 제1MAC(MACD1)의 전송 방식이 결정될 수 있다.
메모리 장치(200A)는 암호화된 제1데이터(EDATA1)와 제1MAC(MACD1)를 수신하고, 암호화된 제1데이터(EDATA1)를 제2암호키(KEYC2)와 제2초기화 벡터(IVC2)를 이용하여 복호화하고, 복호화된 제1데이터(DATA2)를 메모리 코어(202)에 저장할 수 있다. 이때, 도 9를 참조하여 상술한 바와 같이, 제1MAC(MACD1)는 복호화된 제1데이터(DATA2)에 대한 에러를 체크하는데 사용될 수 있다.
리드 작동(READ) 동안, 메모리 장치(200A)는 제2데이터(DATA3)를 제2암호키(KEYC2)와 제2초기화 벡터(IVC2)를 이용하여 암호화하고, 암호화된 제2데이터(EDATA3)를 생성한다. 이와 동시에 또는 병렬적으로, 메모리 장치(200A)는 제3MAC(MACD3)를 생성한다. 메모리 장치(200A)는 암호화된 제2데이터(EDATA3)와 제3MAC(MACD3)를 채널(300)을 통해 AP(100A)로 전송한다.
실시 예들에 따라, 암호화된 제2데이터(EDATA3)와 제3MAC(MACD3)는 직렬로 전송될 수도 있고 병렬로 전송될 수 있다.
AP(100A)는 암호화된 제2데이터(EDATA3)와 제3MAC(MACD3)를 수신하고, 암호화된 제2데이터(EDATA3)를 제1암호키(KEYC1)와 제1초기화 벡터(IVC1)를 이용하여 복호화하고, 복호화된 제2데이터(DATA3)를 출력할 수 있다. 이때, 도 9를 참조하여 상술한 바와 같이, 제3MAC(MACD3)는 복호화된 제2데이터(DATA4)에 대한 에러를 체크하는데 사용될 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도이다. 도 11을 참조하면, 데이터 처리 시스템(10B)은 AP(100B), 메모리 장치 (200B), 및 AP(100B)와 메모리 장치(200B) 사이에 접속된 채널(300)을 포함할 수 있다.
데이터 처리 시스템(10B)은, AP(100B)에 포함된 페이지 테이블(107)을 이용하여, 데이터에 대한 암호화 또는 복호화를 수행할 수 있다.
페이지 테이블(107)은 논리 주소들에 상응하는 물리 주소들에 대한 정보를 포함할 수 있다. 페이지 테이블(107)은 CPU(102)에 의해 액세스 가능한 메모리에 저장될 수 있다.
CPU(102)는, 리드 명령(CMDR) 또는 라이트 명령(CMDW)에 응답하여, 페이지 테이블(107)을 검색(retrieve)할 수 있다. 예컨대, CPU(102)는, 페이지 테이블 (107)을 이용하여, 논리 주소에 상응하는 물리 주소를 검색할 수 있다.
메모리(400)는 도 2에 도시된 메모리(400)의 구조와 작동과 실질적으로 동일 또는 유사하다.
도 12는 도 11에 도시된 데이터 처리 시스템이 페이지 테이블에 포함된 정보를 이용하여 작동하는 방법을 설명하기 위한 개략적인 블록도이다.
도 11과 도 12를 참조하면, 제1인코더(115)는 제1데이터(DATA1)를 암호화하고, 암호화된 제1데이터를 출력한다. 제1선택 회로(118)는, 선택 신호(CTRL1)에 응답하여, 제1데이터(DATA1) 또는 상기 암호화된 제1데이터를 메모리 장치(200B)로 출력한다. 제1디코더(123)는 메모리 장치(200B)로부터 출력된 데이터(예컨대, 제2데이터(DATA3) 또는 암호화된 제2데이터)를 복호화하고, 복호화된 데이터를 출력한다. 제2선택 회로(123)는, 선택 신호(CTRL1)에 응답하여, 상기 데이터 또는 제1디코더(123)의 출력 데이터를 출력한다.
제2디코더(215)는 제1선택 회로(118)의 출력 데이터를 복호화하고, 복호화된 데이터를 출력한다. 제3선택 회로(218)는, 선택 신호(CTRL1)에 응답하여, 제1선택 회로(118)의 상기 출력 데이터 또는 상기 복호화된 데이터를 복호화된 제1데이터 (DATA2)로서 메모리 코어(202)로 출력한다.
제2인코더(220)는 메모리 코어(202)로부터 출력된 제2데이터(DATA3)를 암호화하고, 암호화된 데이터를 출력한다. 제4선택 회로(223)는, 선택 신호(CTRL1)에 응답하여, 제2데이터(DATA3) 또는 제2인코더(220)의 출력 데이터를 AP(100B)로 출력한다. 각 선택 회로(118, 123, 218, 및 223)는 멀티플렉서로 구현될 수 있고, 선택 신호(CTRL1)는 하나 또는 그 이상의 비트들을 포함할 수 있다.
페이지 테이블(107)은 복수의 페이지 엔트리들(ENTRY1~ENTRYN, N은 자연수)을 포함할 수 있다. 각 페이지 엔트리(ENTRY1~ENTRYN)는 각 선택 신호에 상응하는 정보(또는 데이터)를 포함할 수 있다.
도 13은 도 11에 도시된 데이터 처리 시스템의 구체적인 블록도이다.
각 선택 회로(118과 123)를 제외하면, 도 13에 도시된 제1암복호화 회로 (110B)의 구조와 작동은 도 3에 도시된 제1암복호화 회로(110A)의 구조와 작동과 실질적으로 동일 또는 유사하다.
또한, 각 선택 회로(218과 223)를 제외하면, 도 13에 도시된 제2암복호화 회로(210B)의 구조와 작동은 도 3에 도시된 제2암복호화 회로(210A)의 구조와 작동과 실질적으로 동일 또는 유사하다.
도 12와 도 13을 참조하면, 라이트 작동 동안, 선택 신호(CTRL1)에 따라, 메모리 장치(200B)는 제1데이터(DATA1)를 메모리 코어(202)에 그대로 라이트할 수 있고, 복호화된 제1데이터(DATA2)를 메모리 코어(202)에 라이트할 수 있다.
리드 작동 동안, 선택 신호(CTRL1)에 따라, AP(100B)는 제2데이터(DATA3) 자체를 리드할 수 있고, 복호화된 제2데이터(DATA4)를 생성할 수 있다.
도 14는 도 13에 도시된 데이터 처리 시스템의 라이트 작동을 설명하기 위한 플로우차트이다. 도 12과 도 14를 참조하면, 라이트 작동을 수행하기 위해, AP (100B)의 CPU(102)는 라이트 명령(CMDW)을 생성하고(S201), 라이트 명령(CMDW)에 관련된 논리 주소(logical address)를 이용하여 페이지 테이블(107)을 검색하고, 상기 논리 주소에 해당하는 물리 주소를 결정한다(S203).
라이트 명령(CMDW)이 발생할 때마다 논리 주소가 변경될 수 있고, 이에 따라 변경되는 논리 주소에 해당하는 물리 주소도 변경된다. 각 엔트리(ENTRY1~ENTRYN)는 논리 주소와 물리 주소가 매핑되어 있다. 또한, 각 엔트리(ENTRY1~ENTRYN)는 암복호화 여부를 지시하는 선택 신호를 저장한다.
예컨대, 라이트 명령(CMDW)에 따라 선택된 제1엔트리(ENTRY1)에 저장된 선택 신호(CTRL1)는 암복호화 여부를 지시할 수 있다. 즉, CPU(102)는 선택 신호(CTRL1)에 따라 현재 라이트 명령(CMDW)에 따라 처리되는 데이터가 암복호화가 필요한 데이터임을 결정할 수 있다(S205).
선택 신호(CRTL1)가 제1레벨(예컨대, 하이 레벨 또는 데이터 "1")일 때, 제1선택 회로(118)는 제1인코더(115)에 의해 암호화된 제1데이터(EDATA1)를 채널(300)을 통해 메모리 장치(200B)로 전송한다. 즉, AP(100B)는 암호화된 제1데이터 (EDATA1)를 메모리 장치(200B)로 전송한다(S207). 제3선택 회로(218)는 제2디코더 (215)에 의해 복호화된 제1데이터(DATA2)를 메모리 코어(202)로 전송한다(S211). 즉, 메모리 장치(200B)는 암호화된 제1데이터(EDATA1)를 복호화하고, 복호화된 제1데이터(DATA2)를 메모리 코어(202)에 저장한다(S211).
그러나, 선택 신호(CRTL1)가 제2레벨(예컨대, 로우 레벨 또는 데이터 "0")일 때, 제1선택 회로(118)는 제1데이터(DATA1)를 채널(300)을 통해 메모리 장치(200B)로 바이패스한다(S209). 즉, AP(100B)는 암호화되지 않은 제1데이터(DATA1)를 메모리 장치(200B)로 전송한다(S209). 제3선택 회로(218)는 제1데이터(DATA1)를 메모리 코어(202)로 전송한다(S213).
새로운 라이트 명령에 따라 선택된 제2엔트리(ENTRY2)에 저장된 선택 신호는 암복호화 여부를 지시할 수 있다. 즉, CPU(102)는 상기 선택 신호에 따라 현재 라이트 명령에 따라 처리되는 데이터가 암복호화가 필요한 데이터임을 결정할 수 있다(S205).
도 15는 도 13에 도시된 데이터 처리 시스템의 리드 작동을 설명하기 위한 플로우차트이다.
도 12와 도 15를 참조하면, 리드 작동을 수행하기 위해, AP(100B)의 CPU (102)는 리드 명령(CMDR)을 생성하고(S301), 리드 명령(CMDR)에 관련된 논리 주소를 이용하여 페이지 테이블(107)을 검색하고, 상기 논리 주소에 해당하는 물리 주소를 결정한다(S303).
리드 명령(CMDR)이 발생할 때마다 논리 주소가 변경될 수 있고, 이에 따라 변경되는 논리 주소에 해당하는 물리 주소도 변경된다. 각 엔트리(ENTRY1~ENTRYN)는 논리 주소와 물리 주소가 매핑되어 있다. 또한, 각 엔트리(ENTRY1~ENTRYN)는 암복호화 여부를 지시하는 선택 신호를 저장한다.
예컨대, 리드 명령(CMDR)에 따라 선택된 제1엔트리(ENTRY1)에 저장된 선택 신호(CTRL1)는 암복호화 여부를 지시할 수 있다. 즉, CPU(102)는 선택 신호(CTRL1)에 따라 현재 리드 명령(CMDR)에 따라 처리되는 데이터가 암복호화가 필요한 데이터임을 결정할 수 있다(S305).
선택 신호(CRTL1)가 제1레벨일 때, 제4선택 회로(223)는 제2인코더(220)에 의해 암호화된 제2데이터(EDATA3)를 채널(300)을 통해 AP(100B)로 전송한다. 즉, 메모리 장치(200B)는 암호화된 제2데이터(EDATA3)를 AP(100B)로 전송한다(S307).
제1디코더(120)는 제2인코더(220)에 의해 암호화된 제2데이터(DATA3)를 복호화하고, 복호화된 제2데이터(DATA4)를 제2선택 회로(123)로 출력하고, 제2선택 회로(123)는 복호화된 제2데이터(DATA4)를 출력 데이터로서 출력한다(S311). 실시 예들에 따라, 복호화된 제2데이터(DATA4)는 메모리(400)에 저장될 수 있다(S311).
그러나, 선택 신호(CRTL1)가 제2레벨일 때, 제4선택 회로(223)는 제2데이터 (DATA3)를 채널(300)을 통해 AP(100B)로 바이패스한다(S309). 즉, 메모리 장치 (200B)는 암호화되지 않은 제2데이터(DATA3)를 AP(100B)로 전송한다(S309). 제2선택 회로(123)는 제2데이터(DATA3)를 메모리(400)에 저장할 수 있다(S313).
새로운 리드 명령에 따라 선택된 제2엔트리(ENTRY2)에 저장된 선택 신호는 암복호화 여부를 지시할 수 있다. 즉, CPU(102)는 상기 선택 신호에 따라 현재 라이트 명령에 따라 처리되는 데이터가 암복호화가 필요한 데이터임을 결정할 수 있다(S305).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 10A, 10B: 데이터 처리 시스템
102: CPU
104, 104A, 104B: 메모리 컨트롤러
107: 페이지 테이블
110, 110A, 110B: 제1암복호화 회로
160: 제1메시지 인증 코드 회로
200, 200A, 200B: 메모리 장치
202: 메모리 코어
204, 204A, 204B: 인터페이스
210, 210A, 210B: 제2암복호화 회로
260: 제2메시지 인증코드 회로
300: 채널
400: 메모리
102: CPU
104, 104A, 104B: 메모리 컨트롤러
107: 페이지 테이블
110, 110A, 110B: 제1암복호화 회로
160: 제1메시지 인증 코드 회로
200, 200A, 200B: 메모리 장치
202: 메모리 코어
204, 204A, 204B: 인터페이스
210, 210A, 210B: 제2암복호화 회로
260: 제2메시지 인증코드 회로
300: 채널
400: 메모리
Claims (10)
- 애플리케이션 프로세서, 메모리 장치, 및 상기 애플리케이션 프로세서와 상기 메모리 장치 사이에 접속된 채널을 포함하는 데이터 처리 시스템에 있어서,
라이트 명령에 응답하여, 상기 애플리케이션 프로세서는 제1데이터를 제1암호키와 제1초기화 벡터를 이용하여 암호화하고, 암호화된 제1데이터를 상기 채널을 통해 상기 메모리 장치로 전송하고,
상기 메모리 장치는, 상기 암호화된 제1데이터를 제2암호키와 제2초기화 벡터를 이용하여 복호화하고, 복호화된 제1데이터를 메모리 코어에 저장하고,
상기 제2암호키와 상기 제2초기화 벡터는 상기 메모리 장치에 저장되고, 상기 제1암호키와 상기 제2암호키는 서로 동일하고, 상기 제1초기화 벡터와 상기 제2초기화 벡터는 서로 동일하고,
상기 애플리케이션 프로세서는, 상기 라이트 명령에 기초하여 상기 애플리케이션 프로세서의 제1메모리 영역에 저장된 상기 제1초기화 벡터를 업데이트하고, 업데이트된 제1초기화 벡터를 상기 채널을 통해 상기 메모리 장치로 전송하고,
상기 메모리 장치는 상기 업데이트된 제1초기화 벡터를 이용하여 상기 메모리 장치의 제2메모리 영역에 저장된 상기 제2초기화 벡터를 업데이트하는 데이터 처리 시스템. - 제1항에 있어서, 상기 애플리케이션 프로세서는,
제3암호키, 제3초기화 벡터, 및 상기 제1데이터를 이용하여 제1메시지 인증 코드(message authentication code(MAC))를 생성하고, 상기 제1MAC와 함께 상기 암호화된 제1데이터를 상기 채널을 통해 상기 메모리 장치로 전송하는 데이터 처리 시스템. - 제2항에 있어서, 상기 메모리 장치는,
제4암호키, 제4초기화 벡터, 및 상기 복호화된 제1데이터를 이용하여 제2MAC를 생성하고, 상기 제1MAC와 상기 제2MAC를 비교하고, 비교의 결과에 따라 상기 복호화된 제1데이터에 대한 에러를 검출하고, 검출 결과를 상기 채널을 통해 상기 애플리케이션 프로세서로 전송하고,
상기 제4암호키와 상기 제4초기화 벡터는 상기 메모리 장치에 저장되고, 상기 제3암호키와 상기 제4암호키는 서로 동일하고, 상기 제3초기화 벡터와 상기 제4초기화 벡터는 서로 동일한 데이터 처리 시스템. - 삭제
- 제1항에 있어서,
상기 애플리케이션 프로세서는 상기 라이트 명령을 카운트하고, 카운트 결과에 따라 상기 제1초기화 벡터의 업데이트 여부를 결정하는 데이터 처리 시스템. - 제1항에 있어서,
리드 명령에 응답하여, 상기 메모리 장치는 상기 메모리 코어에 저장된 제2데이터를 상기 제2암호키와 상기 제2초기화 벡터를 이용하여 암호화하고, 암호화된 제2데이터를 상기 채널을 통해 상기 애플리케이션 프로세서로 전송하고,
상기 애플리케이션 프로세서는, 수신된 암호화된 제2데이터를 상기 제1암호키와 상기 제1초기화 벡터를 이용하여 복호화하고, 복호화된 제2데이터를 생성하는 데이터 처리 시스템. - 제6항에 있어서,
상기 메모리 장치는 제3암호키, 제3초기화 벡터, 및 상기 제2데이터를 이용하여 제3MAC를 생성하고, 상기 제3MAC와 함께 상기 암호화된 제2데이터를 상기 채널을 통해 상기 애플리케이션 프로세서로 전송하는 데이터 처리 시스템. - 제7항에 있어서,
상기 애플리케이션 프로세서는, 제4암호키, 제4초기화 벡터, 및 상기 복호화된 제2데이터를 이용하여 제4MAC를 생성하고, 수신된 제3MAC와 상기 제4MAC를 비교하고, 비교의 결과에 따라 상기 복호화된 제2데이터에 대한 에러를 검출하고,
상기 제4암호키와 상기 제4초기화 벡터는 상기 애플리케이션 프로세서에 저장되고, 상기 제3암호키와 상기 제4암호키는 서로 동일하고, 상기 제3초기화 벡터와 상기 제4초기화 벡터는 서로 동일한 데이터 처리 시스템. - 제6항에 있어서,
상기 애플리케이션 프로세서는 상기 리드 명령에 기초하여 상기 메모리 장치의 제1메모리 영역에 저장된 상기 제1초기화 벡터를 업데이트하고, 업데이트된 제1초기화 벡터를 상기 채널을 통해 상기 메모리 장치로 전송하고,
상기 메모리 장치는 상기 업데이트된 제1초기화 벡터를 이용하여 상기 메모리 장치의 제2메모리 영역에 저장된 상기 제2초기화 벡터를 업데이트하는 데이터 처리 시스템. - 제9항에 있어서,
상기 애플리케이션 프로세서는 상기 리드 명령을 카운트하고, 카운트 결과에 따라 상기 제1초기화 벡터의 업데이트 여부를 결정하는 데이터 처리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140115672A KR102208072B1 (ko) | 2014-09-01 | 2014-09-01 | 데이터 처리 시스템 |
US14/836,457 US9977749B2 (en) | 2014-09-01 | 2015-08-26 | Application processor and data processing system including the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140115672A KR102208072B1 (ko) | 2014-09-01 | 2014-09-01 | 데이터 처리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160026563A KR20160026563A (ko) | 2016-03-09 |
KR102208072B1 true KR102208072B1 (ko) | 2021-01-27 |
Family
ID=55402661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140115672A KR102208072B1 (ko) | 2014-09-01 | 2014-09-01 | 데이터 처리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9977749B2 (ko) |
KR (1) | KR102208072B1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2996277B1 (en) * | 2014-09-10 | 2018-11-14 | Nxp B.V. | Securing a crytographic device against implementation attacks |
US10564969B2 (en) * | 2015-12-03 | 2020-02-18 | Forrest L. Pierson | Enhanced protection of processors from a buffer overflow attack |
US11675587B2 (en) | 2015-12-03 | 2023-06-13 | Forrest L. Pierson | Enhanced protection of processors from a buffer overflow attack |
CN106548078A (zh) * | 2016-10-20 | 2017-03-29 | 北京小米移动软件有限公司 | 应用加密方法及装置 |
JP6941971B2 (ja) * | 2017-05-15 | 2021-09-29 | ラピスセミコンダクタ株式会社 | 半導体記憶装置、メモリコントローラ及びメモリの監視方法 |
US11163490B2 (en) | 2019-09-17 | 2021-11-02 | Micron Technology, Inc. | Programmable engine for data movement |
US11397694B2 (en) | 2019-09-17 | 2022-07-26 | Micron Technology, Inc. | Memory chip connecting a system on a chip and an accelerator chip |
US11416422B2 (en) * | 2019-09-17 | 2022-08-16 | Micron Technology, Inc. | Memory chip having an integrated data mover |
US11880457B2 (en) * | 2019-09-27 | 2024-01-23 | Micron Technology, Inc. | Device intrusion detection via variable code comparison |
CN111783166A (zh) * | 2020-07-06 | 2020-10-16 | 深圳市安信达存储技术有限公司 | 一种加密型eMCP芯片结构及数据处理方法 |
US20220209959A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Isa support for programming hardware over untrusted links |
US20230291568A1 (en) * | 2022-03-14 | 2023-09-14 | Silicon Laboratories Inc. | Per Unit Time Message Authentication Code |
WO2023192708A1 (en) * | 2022-03-29 | 2023-10-05 | Pierson Forrest L | Methods and devices for defeating buffer overflow problems in multi-core processors |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080005586A1 (en) * | 2006-06-27 | 2008-01-03 | Peter Munguia | Systems and techniques for datapath security in a system-on-a-chip device |
WO2014084967A1 (en) | 2012-10-10 | 2014-06-05 | Citrix Systems, Inc. | Policy-based application management |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277542B2 (en) | 2000-09-25 | 2007-10-02 | Broadcom Corporation | Stream cipher encryption application accelerator and methods thereof |
US7360075B2 (en) * | 2001-02-12 | 2008-04-15 | Aventail Corporation, A Wholly Owned Subsidiary Of Sonicwall, Inc. | Method and apparatus for providing secure streaming data transmission facilities using unreliable protocols |
DE10124139A1 (de) | 2001-05-17 | 2002-11-21 | Philips Corp Intellectual Pty | Verfahren und Vorrichtung zur Sicherung der Datenübertragung zwischen einem Zentralprozessor und einem Speicher |
US20050071656A1 (en) | 2003-09-25 | 2005-03-31 | Klein Dean A. | Secure processor-based system and method |
ATE407494T1 (de) | 2004-07-06 | 2008-09-15 | Proton World Int Nv | Stromverschlüsselung des inhalts eines speichers, welcher ausserhalb eines prozessors angeordnet ist |
JP2006067174A (ja) * | 2004-08-26 | 2006-03-09 | Fujitsu Ltd | 制御プログラム、通信中継装置制御方法、通信中継装置及びシステム |
US8015416B2 (en) | 2004-11-19 | 2011-09-06 | Megachips Corporation | Memory information protection system and methods |
KR100612255B1 (ko) * | 2005-01-11 | 2006-08-14 | 삼성전자주식회사 | 무선 네트워크 시스템에서의 데이터 보안장치 및 그 방법 |
US7657754B2 (en) | 2005-12-08 | 2010-02-02 | Agere Systems Inc | Methods and apparatus for the secure handling of data in a microcontroller |
US7512743B2 (en) | 2006-11-07 | 2009-03-31 | Spansion Llc | Using shared memory with an execute-in-place processor and a co-processor |
US8139763B2 (en) | 2007-10-10 | 2012-03-20 | Spansion Llc | Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks |
US8694776B2 (en) | 2007-12-21 | 2014-04-08 | Spansion Llc | Authenticated memory and controller slave |
US8650399B2 (en) | 2008-02-29 | 2014-02-11 | Spansion Llc | Memory device and chip set processor pairing |
US20090327750A1 (en) | 2008-06-29 | 2009-12-31 | Tse-Hong Wu | Security system for code dump protection and method thereof |
KR101584987B1 (ko) * | 2009-06-08 | 2016-01-13 | 삼성전자주식회사 | 데이터 송수신 장치 및 방법 |
US20110154061A1 (en) | 2009-12-21 | 2011-06-23 | Babu Chilukuri | Data secure memory/storage control |
US8826035B2 (en) | 2009-12-23 | 2014-09-02 | Intel Corporation | Cumulative integrity check value (ICV) processor based memory content protection |
JP5032647B2 (ja) | 2010-11-26 | 2012-09-26 | 株式会社東芝 | データ記憶装置、コントロール装置及び暗号化方法 |
US8843767B2 (en) | 2011-07-06 | 2014-09-23 | The Boeing Company | Secure memory transaction unit |
FR2980285B1 (fr) | 2011-09-15 | 2013-11-15 | Maxim Integrated Products | Systemes et procedes de gestion de cles cryptographiques dans un microcontroleur securise |
US20140032733A1 (en) * | 2011-10-11 | 2014-01-30 | Citrix Systems, Inc. | Policy-Based Application Management |
US9304944B2 (en) | 2012-03-29 | 2016-04-05 | Broadcom Corporation | Secure memory access controller |
KR101975027B1 (ko) * | 2012-05-04 | 2019-05-03 | 삼성전자주식회사 | 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들 |
KR20140073384A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법 |
-
2014
- 2014-09-01 KR KR1020140115672A patent/KR102208072B1/ko active IP Right Grant
-
2015
- 2015-08-26 US US14/836,457 patent/US9977749B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080005586A1 (en) * | 2006-06-27 | 2008-01-03 | Peter Munguia | Systems and techniques for datapath security in a system-on-a-chip device |
WO2014084967A1 (en) | 2012-10-10 | 2014-06-05 | Citrix Systems, Inc. | Policy-based application management |
Also Published As
Publication number | Publication date |
---|---|
KR20160026563A (ko) | 2016-03-09 |
US20160062921A1 (en) | 2016-03-03 |
US9977749B2 (en) | 2018-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102208072B1 (ko) | 데이터 처리 시스템 | |
US10546157B2 (en) | Flexible counter system for memory protection | |
US9135459B2 (en) | Security management unit, host controller interface including same, method operating host controller interface, and devices including host controller interface | |
US10291390B2 (en) | Endecryptor preventing side channel attack, driving method thereof and control device having the same | |
CN106462509B (zh) | 用于保全存取保护方案的设备及方法 | |
US10503934B2 (en) | Secure subsystem | |
US10810138B2 (en) | Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME) | |
US10223289B2 (en) | Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management | |
US9152825B2 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
KR20140019599A (ko) | 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치 | |
US10142303B2 (en) | Separation of software modules by controlled encryption key management | |
WO2023121757A1 (en) | Hardening cpu predictors with cryptographic computing context information | |
EP4195054A1 (en) | Cryptographic computing with legacy peripheral devices | |
US20140208125A1 (en) | Encryption and decryption device for portable storage device and encryption and decryption method thereof |
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 |