KR101323746B1 - 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템 - Google Patents

스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템 Download PDF

Info

Publication number
KR101323746B1
KR101323746B1 KR1020127027415A KR20127027415A KR101323746B1 KR 101323746 B1 KR101323746 B1 KR 101323746B1 KR 1020127027415 A KR1020127027415 A KR 1020127027415A KR 20127027415 A KR20127027415 A KR 20127027415A KR 101323746 B1 KR101323746 B1 KR 101323746B1
Authority
KR
South Korea
Prior art keywords
data
encryption
session
processing
configuration information
Prior art date
Application number
KR1020127027415A
Other languages
English (en)
Other versions
KR20120131222A (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 디스크레틱스 테크놀로지스 엘티디.
Priority claimed from PCT/US2005/046586 external-priority patent/WO2006071725A2/en
Publication of KR20120131222A publication Critical patent/KR20120131222A/ko
Application granted granted Critical
Publication of KR101323746B1 publication Critical patent/KR101323746B1/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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • 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/14Protection against unauthorised use of memory or access to memory
    • 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
    • G06F21/72Protecting 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 in cryptographic circuits
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

본 발명은 데이터 스트림 내에 암호화/복호화 기능을 가진 메모리 시스템에 관한 것이다.
메모리 시스템의 처리량은 데이터 스트림 내의 데이터가 어떤 제어기도 긴밀히 관여하지 않은 채 회로에 의해 암호화 처리되면 향상된다. 모든 데이터 스트림은 제어기가 관여하지 않은 채 다수의 소스 중에서 선정된 데이터 소스를 가지며 다수의 목적지 중에서 선정된 목적지를 가지도록 제어되는 것이 바람직하다. 암호화 회로는 제어기가 관여하지 않은 채 다수의 페이지 즉 다수의 암호화 및 복호화 알고리즘 중에서 하나 또는 여러 개를 선택하여 처리할 수 있고 연속적인 여러 단계로 데이터를 암호화 처리하도록 설정되는 것이 바람직할 수 있다. 인터리빙 방식으로 복수의 데이터 스트림으로부터의 데이터를 암호화 처리하는 메모리 시스템에서는 세션이 인터럽트 될 때 보안 설정 정보가 손실되어 세션이 재시작되었을 때 그 처리를 계속할 수 없게 될 수가 있다. 보안 설정 정보를 유지하기 위해 제어기는 세션에 대한 보안 설정 정보가 인터럽트 전에 저장되도록 하여 인터럽트 후에 다시 가져 올 수 있도록 하는 것이 바람직하다.

Description

스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템{Memory System with In-Stream Data Encryption/Decryption}
본 발명은 일반적으로 메모리 시스템에 관한 것이며, 특히 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템에 관한 것이다.
모바일 기기 시장은 더욱 많은 데이터 교환이 발생하여 평균 수익이 증가하도록 컨텐츠 저장 공간을 포함하는 방향으로 발전되고 있다. 이것은 컨텐츠가 모바일 기기에 저장될 때 보호되어야 한다는 것을 의미한다.
휴대 저장 기기들은 수 년 동안 상업적으로 이용되고 있다. 그것들은 하나의 컴퓨팅 기기에서 다른 컴퓨팅 기기로 데이터를 나르거나 백업 데이터를 저장하기 위해 데이터를 나눈다. 휴대 하드 디스크 드라이브, 휴대 플래시 메모리 디스크, 그리고 플래시 메모리 카드 등과 같은 더욱 정교한 휴대 저장 기기들은 저장 공간의 관리를 제어하기 위해 마이크로프로세서를 포함한다.
휴대 저장 기기에 저장된 컨텐츠를 보호하기 위해, 저장된 데이터는 일반적으로 암호화되고 승인된 사용자만이 그 데이터를 복호화하도록 허용된다.
제안된 암호화 기능을 가지는 휴대 저장 기기에서, 저장장치(storage)의 관리를 위한 마이크로프로세서는 암호화 및 복호화 처리에도 밀접하게 관여한다. 그러한 시스템은 예를 들어 미국 특허 6,457,126에 기술되어 있다. 이러한 경우, 저장 장치의 처리량과 성능은 심각하게 영향을 받을 수 있다. 그러므로 그런 문제점을 완화할 수 있는 개선된 국부 저장 장치를 제공하는 것이 바람직하다.
본 발명은 상술한 문제를 해결하기 위한 것이다.
발명의 일 측면은 데이터 스트림 내의 데이터가 비휘발성 메모리로 보내지거나 그곳으로부터 가져와질 때 어떠한 제어기나 마이크로프로세서도 밀접하게 관여하지 않은 채 데이터 스트림 내의 데이터가 회로에 의해 암호화 처리되면서 메모리 시스템의 처리량이 개선될 수 있다는 인식에 기반을 두고 있다. 일 실시예에서, 제어기는 오로지 암호화 처리(들)에 사용되는 파라미터를 설정하는데에만 관여하고 처리에는 관여하지 않는다. 상기 실시예의 일 구현에서, 파라미터들은 설정 레지스터에 의해 설정된다.
메모리 셀들은 플래시 메모리셀들을 포함하는 것이 바람직하다. 또한 바람직하게는, 메모리 셀들, 데이터를 암호화 및/또는 복호화하는데 사용되는 회로 및 셀들과 회로를 제어하는 제어기는 내부에 위치하고 메모리 카드나 스틱과 같은 물리적인 몸체에 봉함된다.
데이터는 페이지 단위로 메모리 셀들로 쓰여질 수 있거나 메모리셀들로부터 읽어질 수 있다. 암호화 및 복호화를 위해 사용되는 종래의 많은 암호화 알고리즘들은 일반적으로 페이지보다 작은 데이터 단위에 대해 동작한다. 따라서 본 발명의 다른 측면은 암호화 회로가 읽혀지거나 쓰여지면서 데이터 스트림 내의 하나 또는 그 이상의 페이지 데이터를 암호화 처리한다는 인식과 데이터 스트림이, 제어기가 관여하지 않은 채로, 다수의 공급원 중에서 선택된 데이터 공급원과 다수의 목적지 중에서 선택된 목적지를 가지도록 모두 제어될 수 있다는 인식에 기반을 두고 있다.
발명의 다른 측면에 따르면, 암호화 회로는 제어기나 마이크로 프로세서가 관여하지 않은 채로 다수의 암호화 및/또는 복호화 알고리즘 중에서 하나 또는 그 이상의 암호화 알고리즘을 선택할 수 있도록 설정될 수 있다. 이 회로는 또한 설정된 후에는 제어기의 관여 없이도 연속된 여러 단계에 걸쳐 데이터 스트림 내의 데이터를 암호화 처리하도록 설정될 수 있다. 연속적인 다단계 내의 암호화 처리는 설정된 후에는 제어기의 관여 없이도 하나 이상의 키를 이용할 수 있고 하나 이상의 암호화 처리 방법을 사용할 수 있다.
어떤 응용(application)에서는, 메모리 시스템이 하나 이상의 데이터 스트림을 처리하는 것이 요구될 수도 있다. 그런 경우에, 제어기는 메모리 셀들과 회로를 제어하여 서로 다른 데이터 스트림내의 데이터가 인터리빙(interleave) 방식으로 암호화 처리되도록 한다. 각각의 데이터 스트림을 암호화 처리하기 위한 다양한 파라미터들은 인터리빙하는 동안 데이터 스트림의 처리가 인터럽트 될 때 저장되어, 그 데이터 스트림의 처리가 재시작될 때 암호화 처리를 계속 할 수 있도록 복구될 수 있도록 하는 것이 바람직하다. 이러한 기능의 일 실시예에서, 보안 설정 레코드가 암호화 처리를 위한 다양한 파라미터들을 설정하기 위해 쓰기 동작을 시작할 때 생성되고 이 파라미터들은 세션의 끝에서 저장된다. 그리고 나서 읽기 동작을 시작할 때 이 레코드들을 메모리에서 가져오고, 동작이 끝나면 버린다. 데이터 스트림이 또 다른 데이터 스트림을 처리할 수 있도록 일시적으로 인터럽트될 때에 이러한 레코드들은 또한 저장되고, 원래의 데이터 스트림의 처리가 재시작될 때 검색된다.
상기 설명된 본 발명의 측면은 개별적으로 사용되거나 임의의 조합으로 사용될 수 있다.
본 명세서 내에 포함되어 있음
도 1은 본 발명을 예시하기 위한 호스트 장치와 통신하는 메모리 시스템의 블록도이다.
도 2는 도 1의 암호화 엔진의 몇 가지 측면을 보여 주는 블록도이다.
도 3은 본 발명의 일면에 대해 바람직한 실시예를 보여주는 도 1내의 시스템 동작을 예시하는 흐름도이다.
도 4는 다수의 데이터 스트림을 처리하는 데 있어 도 1의 시스템의 동작과 보안 설정 레코드의 활용을 예시하는 유용한 흐름도이다.
본 출원에서는 설명의 편의상 동일한 구성요소들은 동일한 번호로 표시된다.
본 발명에 따른 실시예들은 첨부된 도면을 참조하여 이하에서 상세히 설명한다.
본 발명의 다양한 측면이 구현될 수 있는 메모리 시스템의 예가 도 1의 블록도에 의해 예시되어 있다. 도 1에 보여진 바와 같이, 메모리 시스템(10)은 중앙처리장치(CPU, 12), 버퍼 관리 유닛(BMU, 14), 호스트 인터페이스 모듈(HIM, 16), 그리고 플래시 인터페이스 모듈(FIM, 18), 플래시 메모리(20) 및 주변장치 접속 모듈(PAM, 22)을 포함한다. 메모리 시스템(10)은 호스트 인터페이스 버스(26)와 포트 (26a)를 통해 호스트 기기(24)와 통신한다. NAND형일 수 있는 플래시 메모리(20)는 호스트 기기(24)를 위한 데이터 저장 공간을 제공한다. CPU(12)를 위한 소프트웨어 코드도 플래시 메모리(20)에 저장될 수 있다. FIM(18)은 플래시 인터페이스 버스 (28)와 포트 (28a)를 통하여 플래시 메모리(20)에 연결된다. HIM(16)은 디지털 카메라, 퍼스널 컴퓨터, 휴대용 개인 정보 단말기(PDA), 디지털 미디어 재생기, 엠피-3 재생기 및 휴대폰, 또는 기타 다른 디지털 기기와 같은 호스트 시스템에 연결 하기에 적합하다. 주변장치 접속 모듈(22)은 CPU(12)와 통신하기 위해 FIM, HIM 그리고 BMU와 같은 적절한 제어 모듈을 선정한다. 일 실시예에서, 점선 상자 안에 있는 시스템(10)의 모든 요소는 메모리 카드나 스틱(10')과 같은 단일 장치 내에 담길 수 있고 카드나 스틱에 봉함되는 것이 바람직하다.
버퍼 관리 유닛(14)은 호스트 직접 메모리 접근(HDMA) 제어기(32), 플래시 직접 메모리 접근(FDMA) 제어기(34), 중재기(36), 버퍼 임의 접근 메모리(BRAM, 38) 및 암호 엔진(40)을 포함한다. 중재기(36)는 공유 버스 중재기로 단 하나의 주장치나 시작장치(HDMA(32)나 FDMA(34) 또는 CPU(12) 등이 가능)가 임의의 시간에 활성화되고 종속 장치나 목표 장치가 BRAM(38)이 되도록 한다. 중재기는 적절한 시작장치 요구가 BRAM(38)에 채널을 형성하는 책임을 맡는다. HDMA(32)와 FDMA(34)는 HIM(16), FIM(18) 그리고 BRAM(38) 또는 CPU 임의 접근 메모리(CPU RAM, 12a) 사이에서 전송된 데이터에 책임이 있다. HDMA(32)와 FDMA(34)의 동작은 종래의 것과 동일하고 여기서 상술할 필요가 없다. BRAM(38)은 호스트 기기(24), 플래시 메모리(20) 및 CPU RAM(12a) 사이에서 통과되는 데이터를 버퍼링하기 위해 사용된다. HDMA(32)와 FDMA(34)는 HIM(16)/FIM(18) 과 BRAM(38) 또는 CPU RAM(12a) 사이에서 데이터를 전달하고 섹터 전달의 완료를 알려 주는 책임을 맡는다.
최초에 플래시 메모리(20)로부터의 데이터가 호스트 기기(24)에 의해 판독되는 경우 메모리(20) 내의 암호화된 데이터는 버스(28), FIM(18), FDMA(34), 그리고 암호화된 데이터가 복호화되는 암호 엔진(40)을 통해 가져와 지고 BRAM(38)에 저장된다. 이 후 복호화된 데이터는 BRAM(38)으로부터 HDMA(32), HIM(16), 버스(26)를 통해 호스트 기기(24)로 보내 진다. BRAM(38)으로부터 가져온 데이터는 호스트 기기(24)에 보내지는 데이터가 메모리(20)에 저장된 데이터가 복호화될 때 사용된 것과 비교되는 다른 키 값 및/또는 알고리즘으로 다시 암호화될 수 있도록 HDMA(32)에 전달되기 전에 암호 엔진에 의해 다시 암호화될 수 있다. 대안적 일 실시예에서, 데이터가 인가 받지 않은 접근에 취약하게 되는 전술한 처리에서처럼 BRAM(38)에 복호화된 데이터를 저장하는 대신 메모리(20) 내의 데이터가 BRAM(38)에 보내지기 전에 암호 엔진(40)에 의해 다시 복호화 되고 또한 다시 암호화 되는 것이 바람직하다. 암호화 되어 BRAM(38)에 있는 데이터는 전처럼 이 후 호스트 기기(24)로 보내진다. 이것은 읽기 처리 중의 데이터 스트림을 예시한다.
호스트 기기(24)에 의해 데이터가 메모리(20)에 쓰여질 때, 데이터 스트림의 방향은 반대가 된다. 예를 들어, 암호화되지 않은 데이터가 호스트 기기에 의해 버스(26), HIM(16), HDMA(32)를 통해 암호 엔진(40)으로 보내지면, 그러한 데이터는 BRAM(38)에 저장되기 전에 엔진(40)에 의해 암호화될 수 있다. 대안으로 암호화되지 않은 데이터가 BRAM(38)에 저장될 수 있다. 상기 데이터는 이 후 메모리(20)로 전달되는 도중 FDMA(34)에 보내지기 전에 암호화된다. 쓰여진 데이터가 다단계 암호화 처리를 거치는 경우, 엔진(40)은 처리된 데이터가 BRAM(38)에 저장되기 전에 그러한 처리를 완료하는 것이 바람직하다.
발명의 일면은 만일 호스트 기기(24)와 메모리(20) 사이에서 통과하는 데이터 스트림 내의 데이터에 대한 상기 설명된 암호화 처리가 CPU(12)가 최소한으로 관여한 채 이루어질 수 있다면 장치(10)의 처리량과 그에 따른 성능이 훨씬 향상될 수 있다는 인식에 기반을 두고 있다. 이것은 아래에 기술된 대로 도 1에 예시되어 있다.
상기 설명된 처리에서, 두 가지 상이한 데이터 공급원과 목적지를 갖는 데이터 스트림이 설명되어 있다. 읽기 처리에서, 데이터 공급원은 메모리(20)이고 목적지는 호스트 기기(24)이다. 쓰기 처리에서, 데이터 공급원은 호스트 기기(24)이고 목적지는 메모리(20)이다. 추가로, 데이터 공급원(또는 목적지)은 CPU(12)도 될 수 있는데 이 때 해당하는 목적지(또는 공급원)은 메모리(20)이다. 그러나 다른 동작에서는 벌크(bulk) 암호화와 해시(hash) 동작을 위해 데이터 스트림은 BMU(14)에서 CPU(12) 방향이 될 수 있다. 다양한 조합의 데이터 입력 공급원과 데이터 출력 목적지 그리고 적용될 수 있는 해당 암호화 처리가 아래의 표에 나와 있다.
동작 엔진 데이터 입력 공급원 데이터 출력 목적지 설명
FDMA가 CPU에 쓰기 AES/DES/HASH FDMA, CPU, 버스 CPU 이 데이터 스트림은 보안 저장 장치에서 CPU로 로드된 데이터에 대해 암호처리 동작(복호화)을 가능하게 한다.
FDMA가 CPU로부터 읽기 AES/DES/HASH CPU FDMA 이 데이터 스트림은 CPU에 의해 보안 저장 장치에 저장된 데이터에 대해 암호처리 동작 (암호화)을 가능하게 한다.
FDMA가 BRAM에 쓰기 AES/DES/HASH FDMA, BRAM, 버스 BRAM 이 데이터 스트림은 FIM에서 BRAM 으로 통과되는 데이터 스트림에 대해 암호화 동작을 가능하게 한다.
FDMA가 BRAM으로부터 읽기 AES/DES/HASH BRAM FDMA 이 데이터 스트림은 BRAM에서 FIM으로 통과되는 데이터 스트림에 대해 암호화 동작을 가능하게 한다.
PAM 접근 AES/DES/HASH/PKI PAM PAM 이 데이터 스트림은 CPU가 대량 암호화와 해시 동작을 위해 하드웨어 중심에 접근할 수 있도록 한다.
바이패스(bypass) n/a 쓰기 없음 읽기 없음 이 데이터 스트림은 데이터 스트림에 대한 어떤 암호화 동작도 없이 FDMA가 CPU나 BRAM을 접근할 수 있도록 한다.
위의 표에 나타난 바와 같이, 한 가지 추가적인 동작 모드는, 암호 엔진(40)이 존재하지 않고 HDMA와 FDMA가 바이패스 경로를 따라 직접 BRAM(38)에 중재기(36)를 통하여 연결된 것처럼, FDMA(34)가 데이터 스트림에 대한 어떠한 암호화 동작도 없이 바이패스 경로(도 1에 도시 되지 않음)를 따라 CPU(12) 또는 BRAM(38)을 접근할 수 있게 해 주는 바이패스 모드이다. 본 발명의 일 실시예에 따르면, 데이터 공급원, 데이터 목적지와 같은 처리 파라미터들 그리고 적용되는 암호화 알고리즘(또는 바이패스 모드)과 같은 암호화 파라미터들은 CPU(12)에 의해 다수의 데이터 공급원, 다수의 목적지 그리고 다수의 알고리즘 중에서 도 1의 암호 엔진(40)의 일부 기능 블록의 블록도인 도 2에 있는 설정 레지스터(102)를 설정함으로써 사전에 선택될 수 있다.
도 2는 암호 엔진(40)의 일부 요소를 자세히 보여주는 블록도이다. 도 2에 보여진 바와 같이, 암호 엔진(40)은 암호 블록(50), 상기 테이블에 따라 선택된 데이터 공급원, 선택된 데이터 목적지, 채택될 암호화 알고리즘 또는 바이패스 모드 그리고 사용되는 키 값(바이패스 모드는 제외), 그리고 데이터가 암호화될 것인지, 복호화될 것인지 또는 해시될 것인지("암호화 처리"된다는 구절에 포함됨) 또는 암호화 처리되지 않을 것인지에 대한 보안 설정 정보나 보안 설정 레코드를 저장하는 설정 레지스터(52)를 포함한다. 보안 설정 정보 또는 레코드는 CPU(12)에 의해 레지스터(52)에 쓰여질 수 있다. 이 정보가 레지스터(52)에 저장된 후, 엔진(40)은 CPU(12)의 관여 없이 적절히 암호화 처리(들)를 수행할 수 있다. 많이 사용되는 암호화 알고리즘은 128 비트의 데이터를 하나의 단위로 처리한다. 이것은 플래시 메모리와 같은 저장 장치로 한번에 쓰여지거나 또는 그곳으로부터 읽혀지는 데이터의 페이지 크기보다 작을 수 있다. 각 페이지는 일반적으로 하나 이상의 데이터 섹터를 저장하는데, 섹터의 크기는 호스트 시스템에 의해 정의된다. 일 예는 자기 디스크 드라이브로 확립된 표준을 따르는, 512 바이트의 사용자 데이터와 함께 사용자 데이터 및/또는 저장된 블록에 대한 약간의 부가 정보 바이트의 하나의 섹터이다.
전체 데이터 페이지가 엔진(40)에 의해 한 번에 페이지보다 작은 단위로 암호화 처리되어 CPU(12)가 엔진(40)에 의해 암호 처리되는데에 관여할 필요가 없도록 논리 회로(도시되지 않음)가 블록 40 내에 이용될 수 있다. 일 실시예에서, 암호 엔진(40)은 하드웨어 회로이다.
도 2에 보여진 바와 같이, 블록 54, 56과 58은 암호 블록 50에 의해 수행되도록 CPU(12)에 의해 선택될 수 있는 세 가지 서로 다른 암호화 알고리즘(각각 해시, DES, 그리고 AES)을 대표한다. 그러한 알고리즘과 다른 암호화 알고리즘도 사용될 수 있고 본 발명의 범위 내에 있다. 암호 블록 50에 의해 처리될 호스트 기기(24) 또는 메모리(20) 또는 CPU(12)에서 비롯되는 데이터는 처음에는 입력 버퍼(62)에 저장되고 이 후 암호 블록 50에 의해 레지스터(52) 내에 설정된 암호화 알고리즘에 따라 암호화 처리된다. 암호화 처리된 데이터는 이 후 레지스터(52)의 목적지 정보에 따라 목적지에 보내지기 전에 출력 버퍼(64)에 저장된다. 도 2는 메모리(20)에 쓰여지거나 메모리(20)로부터 읽혀지는 데이터가 암호화 처리되지 않는, 입력 버퍼(62) 로부터 출력 버퍼(64)에 이르는 바이패스 경로(72)도 포함하고 있는데, 이 모드는 위 표에 있고 위에서 설명된 모드 중의 하나이다.
설정 레지스터(52)는 암호화 처리(들)에서 사용되는 키 값을 저장할 수도 있다. 일 실시예에서, 이 키 값은 암호 블록 50에 의한 암호화 또는 복호화 전에, (예를 들면 메모리(20)로부터) CPU(12)가 가져오고 레지스터(52)에 저장된다. 위에 설명된 처리들은 블록 40에서, CPU(12)가 적절한 정보를 레지스터(52)에 쓴 후에, CPU(12)의 관여 없이 일어난다. 도 2를 단순화하기 위해 블록 40에 있는 알고리즘, 데이터 공급원 및 목적지를 선택하기 위해 레지스터(52)에 있는 정보를 사용하고 암호화 처리를 위해 유일한 키 값과 선택된 알고리즘을 사용하는 논리 회로는 생략되었다. 또한 입력 버퍼(62)에서 데이터를 처리하고 처리된 데이터가 출력 버퍼(64)에 보내지기 전에 암호화 블록(50)이 한 번 이상 사용되는 것도 가능하다. 예를 들어, 먼저 데이터 공급원으로부터의 데이터를 복호화하고 이어 데이터가 버퍼(64)에 보내지기 전에 다른 키 및/또는 다른 알고리즘을 사용하여 복호화된 데이터를 암호화하는 것이 바람직할 수도 있다. 또한 데이터를 암호화하거나 복호화하는 것 이외에도, 데이터의 무결성(integrity)을 보장하기 위한 목적으로 다이제스트(digest)나 해시된 값(들)을 얻기 위해 데이터에 해시 알고리즘을 적용하는 것이 유용할 수 있다. 그러한 모든 상황에서, 키 값을 사용하여 복호화하고 나서 다른 키 값을 사용하여 암호화하거나, 데이터를 암호화 또는 복호화함과 동시에 다이제스트를 얻기 위해, 암호 블록(50)에 의해 데이터를 두 번 처리하는 것이 바람직하다. 분명히, 데이터는 또한 암호 블록(50)에 의해 두 번 이상 처리될 수 있는데, (다단계 동작의) 순차적인 단계에서 연속적으로 일어나는 데이터가 복호화되고, 해시 값을 구하고, 그리고 이 후에 암호화되는 경우와 같다. 다시 말하면, (둘 이상의 단계를 가진) 다단계 처리에서, 출력 버퍼(64)에서 암호 블록(50)에 의해 이미 처리된 데이터를 귀한 경로(66)를 따라 암호 블록(50)에 의한 추가적인 처리를 위해 입력 버퍼(62)로 보냄으로써, 데이터는 암호 블록(50)을 한 번 이상 통과 할 수 있다. 만일 두 개 이상의 단계를 고려한다면, 데이터는 추가적인 처리를 위해 추가적으로 귀환될 수 있다. 각각의 처리 단계에서, 다른 알고리즘 및/또는 키 값이 사용될 수 있다.
만일 다단계 처리가 요구된다면, 데이터가 암호화 처리되는 횟수와 다단계 처리의 각 단계에서 사용되는 키 값 및/또는 알고리즘를 규정하는 보안 설정 정보 또는 레코드를 레지스터(52)에 입력하기 위해 CPU(12)가 사용될 수 있다. 이런 정보가 레지스터(52)에 쓰여진 후에는 CPU(12)는 다단계 처리에 전혀 관여할 필요가 없다.
도 1의 메모리 시스템(10)이 플래시 메모리를 포함하고 있지만, 시스템은 대신 자기 디스크, 광학 시디 뿐만 아니라 모든 다른 종류의 재기록 가능한 비휘발성 메모리 시스템과 같은, 또 다른 종류의 비휘발성 메모리를 포함할 수도 있는데, 상기 설명된 다양한 장점들은 동등하게 이와 같은 대체 실시예에도 적용될 것이다. 대체 실시예에서, 또한 메모리는 메모리 시스템의 나머지 구성요소들과 함께 (메모리 카드 또는 스틱과 같은) 동일한 물리적인 몸체에 봉함되는 것이 바람직하다.
시스템(10)을 동작하기 위한 읽기 처리가 도 3의 흐름도에 예시되어 있다. CPU(12)는 호스트 기기(24)로부터 읽기 명령을 받은 후에 읽기 동작을 시작한다(타원 150). 그 후 CPU(12)는 적절한 보안 설정 정보 또는 레코드를 레지스터(52)에 씀으로써 암호 엔진(40)을 설정하고, 읽기 동작을 위해 BMU(14)를 설정하며, 동작을 위해 BRAM(38)에 있는 메모리 공간의 할당과 같은 다른 파라미터를 설정한다(블록 152와 154). CPU(12)는 또한 메모리(20)에서 데이터가 읽히는 곳의 위치를 지정하는 것과 같이, FIM(18)을 설정한다(블록 156). HDMA 엔진(32)과 FDMA 엔진(34)은 이 후 시작되어 암호화 절차를 포함하여 앞에서 설명된 처리가 (오류 정정을 제외하고) CPU(12)의 관여 없이 수행되도록 한다. 블록 158을 참조한다. CPU가 인터럽트를 받으면 FIM 인터럽트인지를 확인한다(다이아몬드 160). FIM 인터럽트가 수신되면 CPU는 그 인터럽트가 데이터 스트림에 하나 또는 여러 개의 오류가 있다는 것을 나타내는 것인지를 확인한다(블록 162). 만일 오류(들)가 지적되면, CPU는 BRAM(38)에서 오류 정정을 진행하고(블록 164) 다음에 데이터가 읽히는 메모리(20) 내의 위치를 변경하도록 FIM(18)을 설정하기 위해 되돌아간다(블록 156). FIM 인터럽트가 데이터 스트림에 오류(들)를 지적하지 않으면, 그것은 FIM이 동작을 완료하고 CPU도 FIM을 재설정하기 위해 블록 156으로 되돌아간다는 것을 의미한다. 만일 CPU에 의해 검출된 인터럽트가 FIM 인터럽트가 아니면, CPU는 이 인터럽트가 데이터 종료 인터럽트인지를 확인한다(다이아몬드 166). 만일 그렇다면, 읽기 동작은 종료된다(타원 168). 그렇지 않다면, 이 인터럽트는 데이터의 암호화 절차와 무관(예를 들면 클록 인터럽트)하고 CPU(12)는 그것을 처리(도시되지 않음)하고, 인터럽트를 확인하기 위해 다이아몬드 160으로 되돌아간다.
도 3은 쓰기 동작을 위해서는 약간만 수정되면 된다. 메모리(20)에 쓰여지는 데이터 내의 ECC 오류의 처리가 없으므로, 쓰기 동작에서 CPU(12)는 다이아몬드 162와 블록 164의 절차들을 생략할 수 있다. 만일 쓰기 동작 중에 CPU(12)가 FIM 인터럽트를 받으면, 이것은 FIM이 동작을 완료하고 CPU도 FIM을 재설정하기 위해 블록 156으로 되돌아간다는 것을 의미한다. 이러한 차이를 제외하고는, 쓰기 동작은 실질적으로 읽기 동작과 비슷하다. 따라서, 암호 엔진(40), BMU(14), 그리고 FIM(18)이 설정되면, 시스템(10)은 (바이패스 모드에 있는 경우를 제외하고는) 모든 데이터를 암호화 처리할 수 있고, 암호 엔진(40)이 페이지보다 훨씬 더 작은 단위로 데이터를 처리할지라도, CPU(12)의 관여 없이, 세션의 모든 페이지들을 쓰거나 읽는 것을 완료할 수 있다.
데이터 스트림을 인터리빙하기
복수의 호스트 응용이 복수의 데이터 스트림을 처리하기 위해 메모리(20)를 병렬로 접근할 수 있는 것이 바람직하다. 이는 하나의 데이터 스트림에 대한 암호화 처리가 완료되지 않은 채 메모리 시스템(10)이 또 다른 데이터 스트림을 처리하기 위해 순서에 따라 인터럽트 될 수 있다는 것을 의미한다. 다른 데이터 스트림에 대한 암호화 처리는 일반적으로 다른 파라미터(예를 들면 다른 키 값과 알고리즘, 그리고 다른 데이터 공급원 및 목적지)를 사용할 것이다. 이러한 파라미터들은 데이터 스트림의 해당하는 보안 설정 레코드로 제공된다. 인터럽트된 특정 데이터 스트림에 대한 처리가 나중에 재개될 때, 해당 보안 설정 레코드는 손실되지 않는 것을 보장하기 위해, 그러한 레코드는 CPU RAM(12a)에 저장되는 것이 바람직하다. 이전에 인터럽트된 데이터 스트림에 대한 처리가 재개되자마자, CPU(12)는 이러한 데이터 스트림에 대해 저장되어 있는 보안 설정 레코드를 가져와, 저장된 해당 보안 설정 레코드에 따라, 정확한 파라미터들을 사용하여 그 데이터 스트림에 대해 재개된 암호화 처리가 진행될 수 있도록 한다.
도 4는 복수의 데이터 스트림을 처리하는 데 있어 도 1과 2의 시스템 동작과 보안 설정 레코드의 활용을 예시하는데 유용한 흐름도이다. CPU는 호스트 명령이 수신되었는지 여부를 확인한다(블록 202, 다이아몬드 204). 일 례로 첫 데이터 스트림을 암호화 처리하기 위해, 호스트 명령이 수신되었을 때, CPU는 그 명령이, 예를 들면 기기(24)상에 실행되는 첫 응용에 대한 명령과 같은, 세션 시작 명령인지 여부를 확인한다(다이아몬드 206). 만일 그렇다면, CPU는 쓰기 세션이 요구되었는지 여부를 확인한다(다이아몬드 208). 만일 쓰기 세션이 요구되었다면, CPU는 호스트 기기(블록 210)로부터의 정보에 따라 보안 설정 레코드 (예를 들면 선택된 데이터 공급원, 선택된 목적지, 그리고 위 테이블에 따라 채택될 암호 알고리즘과 시용되는 키 값, 그리고 데이터가 암호화 될지, 복호화 될지, 또는 해시될지 여부)를 생성하고 첫 데이터 스트림에 대한 첫 세션을 시작한다. CPU(12)는 그러한 보안 설정 정보 또는 레코드를 CPU RAM(12a)에 저장한다. 만일 요청받은 세션이 읽기 세션이라면 CPU는 메모리(20)으로부터 읽혀질 데이터에 대한 보안 설정 레코드를 읽고(블록 240), 그리고 그것을 CPU RAM(12a)에 저장한다. 그리고 나서 CPU는 되돌아가서, 또 다른 호스트 명령을 기다린다(202).
CPU가 또 다른 호스트 명령을 받을 때, 다시 그것이 세션 시작 명령인가를 확인한다(다이아몬드 206). 만일 그렇다면, 블록 210이나 블록 240으로 진행함으로써, 새로운 두 번째 세션이 시작될 수 있는데, 두 번째 데이터 스트림에 대한 암호화 처리를 요구하는 호스트 기기(24)에서 실행되고 있는 다른 두 번째 응용을 위한 새로운 두 번째 세션과 같은 것이다. 그러한 두 번째 데이터 스트림에 대한 보안 설정 정보 또는 레코드가 다시 CPU RAM(12a)에 저장되는데, 이는 쓰기와 읽기 세션 둘 다에 해당된다(블록 210, 240). 추가적인 데이터 스트림에 대해 동일한 방식으로 추가적인 세션들이 생성될 수 있다. CPU는 블록 202로 되돌아가고 다음 호스트 명령이 세션 시작 명령인지를 확인한다(다이아몬드 206). 따라서, CPU(12)가 다이아몬드 206에서 새로운 세션 시작 명령이 아닌 호스트 명령을 검출할 때까지 설명된 바와 같이 추가적인 세션들이 생성된다.
그런 경우에, CPU(12)는 다음 호스트 명령이 세션 종료 명령인지 확인한다(다이아몬드 222). 만일 그렇지 않다면, CPU는 데이터 명령인지 확인한다(다이아몬드 224). 데이터 명령이라고 가정하면, CPU는 어느 데이터 스트림이 처리되어야 하는지를 결정하고, 그 데이터 스트림에 대한 보안 설정 레코드에 따라 암호 엔진(40)을 (레지스터(52)에 씀으로써) 설정한다. 그리고 암호 엔진(40)은 도 3 내의 처리에 따른 것처럼, 위에 설명된 방법대로 읽기나 쓰기 동작을 실행한다(또는 암호 엔진(40)은 바이패스 모드에서 바이패스된다)(블록 226).
만일 읽기나 쓰기 처리 내에 인터럽트가 없다면, CPU가 세션 종료 명령(블록 222)을 받을 때까지 처리가 계속 되는데, 이것은 세션 동안 처리되어야 하는 모든 페이지가 처리 되었다는 것을 의미한다. 그러나, 만일 인터럽트가 있다면, CPU는 시스템(10)이 현재 처리하고 있는 것과 다른 데이터 스트림으로부터의 데이터를 처리하기 위한 호스트 데이터 명령을 받을 것이다. 그런 경우에는, 암호 엔진(40)이 그러한 다른 데이터 스트림을 처리하기 위해 재설정되어야할 필요가 있을 것이다. 그 후 CPU는 CPU RAM(12a)로부터 그러한 다른 데이터 스트림에 대한 보안 설정 레코드를 가져오고, 암호 엔진(40)을 재설정(가져온 레코드를 레지스터(52)에 씀으로써)하여, 엔진(40)이 다른 데이터 스트림을 정확하게 처리하도록 할 것이다.
쓰기 세션에서, 세션 종료 명령(블록 222)이 수신될 때, CPU는 보안 설정 레코드를 쓰여진 데이터와 함께 메모리(20)에 저장하여, 다음 읽기 동작에서 그 레코드를 검색할 수 있도록 한다(다이어몬드 228, 블록 230). 읽기 동작을 위해서는, RAM(12a)에 저장된 보안 설정 레코드를 버린다. 그러나 메모리(20)에 저장된 레코드는 나중에 있을지도 모를 읽기 동작을 위해 유지한다(블록 242).
어떤 응용에서는 메모리(20)에 있는 데이터를 조작하지 못하도록 하여 무결성을 유지하는 것이 중요할 수도 있다. 메모리(20)에 저장된 데이터가 변경 또는 훼손되지 않았다는 것을 보장하기 위해, 데이터로부터 해시 값(들)이나 다이제스트를 유도하여 데이터와 함께 저장하는 것이 바람직하다. 데이터가 읽혀질 때, 다이제스트나 해시 값도 읽어서, 읽은 데이터로부터 계산된 해시값이나 다이제스트와 비교할 수 있도록 한다. 만일 그것들 사이에 차이가 있다면, 메모리(20) 내의 데이터는 변경되거나 그렇지 않다면 훼손된 것일 수 있다.
공통적인 해시 함수 중의 하나는, 읽어지거나 쓰여지고 있는 데이터 블록으로부터 시간에 따라 순차적으로 메시지 인증 코드(MAC)가 유도되는, 연계 블록 암호(CBC)이다. 공통적인 CBC 함수 중의 하나가 아래에 소개되어 있다:
암호화.
입력: m-비트 키값 k; l-비트 IV; l-비트 평문 블록들 p1, ... , pr.
출력: c0, ... , cr 이때, c0 ← IV 그리고 ci ← ek (ci -1
Figure 112012085413277-pat00001
pi )이다.(단, 1 ≤i ≤ r)
복호화.
입력: m-비트 키값 k; l-비트 IV; l-비트 암호문 블록들 c1, ... , cr.
출력: p0, ... , pr 이때, p0 ← IV 그리고 pi ← ci -1
Figure 112012085413277-pat00002
ek -1(ci) 이다.(단, 1≤ i ≤ r)
위에서 c0, ... , cr 값들은 데이터 스트림 p1, ... , pr 에 대한 메시지 인증 코드(MAC)들이다. IV는 초기화 벡터이고 k는 키 값이다. 따라서, 메모리(20)에 데이터 블록들 p1, ... , pr를 쓰는 것이 바람직한 경우, 위의 CBC 함수와 같은 해시 함수를 사용하여 시스템(10)에서 암호 엔진(40)에 의해 데이터의 블록들로부터 MAC 값들(예를 들면, c0, ... , cr)이 계산되고, MAC 값, IV, 그리고 키 값 k를 포함하는 관련 보안 설정 레코드와 위에 설명된 다른 파라미터들이 메모리(20)에 데이터 자체와 함께 쓰여진다. 위의 공식에서, ek(x)는 x가 키 값 k에 의해 암호화되는 처리를 의미하고, ek - 1(x)는 x가 키 값 k에 의해 복호화되는 것을 의미한다.
데이터 블록들 p1, ... , pr이 나중에 메모리(20)에서 읽혀질 때, 관련 보안 설정 레코드도 읽혀지고, 암호 엔진(40)은 보안 설정 레코드 내의 IV, 키 값 k, 그리고 읽혀진 데이터들로부터 MAC 값들의 집합을 계산하여 메모리(20)에서 읽혀진 MAC 값들의 집합과 비교한다. 만일 두 가지 MAC 값들의 집합에 차이가 있으면, 읽혀진 데이터는 변경되거나 그렇지 않다면 훼손된 것이다. 위의 CBC 함수와 같은 몇 개의 해시 함수에 대해, 순차적인 값들 중 처음 것을 제외하고, 각 MAC 값들은 이전의 MAC 값으로부터 얻어진다. 이는, 그러한 상황에서, MAC 값들의 집합이 시간 순서대로 얻어진다는 것을 의미한다.
사용자가 메모리(20)를 접근하기 위한 또 다른 응용을 사용하기 전에 메모리(20)를 사용하는 하나의 응용이 끝나기를 기다릴 필요가 없도록, 하나의 호스트 기기(24) 내의 다수의 응용들이 메모리(20)를 동시에 접근할 수 있는 것이 바람직 할 것이다. 예를 들어, 이것은 읽기 처리가 인터럽트 되었을 때, 메모리 시스템(예를 들면, 도 1과 도 2의 시스템(10))이 기기(24)에서 실행되는 또 다른 응용을 서비스하는데 사용될 수 있도록, 메모리(20)에서 모든 데이터 블록들 p1, ... , pr 이 읽혀진 것이 아니라는 것을 의미한다. 하지만, 그런 경우에는, 데이터 스트림 전체가 읽혀지고 모든 MAC 값들이 계산되기 전에 MAC 값들을 계산하는 위의 처리가 인터럽트 될 수 있다. 그러므로, 메모리 시스템이 데이터 블록들 p1, ... , pr 중에서 읽혀지지 않은 블록들을 다시 읽기를 재개할 때, 이전에 계산된 불완전한 MAC 값들의 집합은 잃어버려지며, 이들 값들이 이전에 계산된 MAC 값들에 의존하기 때문에, 나머지 MAC 값들을 계산하는 것이 불가능해진다. 따라서 본 발명의 다른 측면은 이전에 계산된 불완전한 MAC 값들의 집합이, 도 1의 CPU RAM(12a)과 같은 곳에, 보안 설정 레코드(예를 들면, IV, 키 값 k, 데이터 공급원과 목적지, 알고리즘) 내의 나머지 값들과 함께, 저장되는 특징에 근거를 두고 있다. 따라서, 메모리 시스템이 데이터 블록들 p1, ... , pr 중에서 읽혀지지 않은 블록들을 읽기를 재개할 때, 이전에 계산된 불완전한 MAC 값들의 집합은 여전히 사용 가능하게 되어, 나머지 MAC 값들을 계산하는 것도 가능하다.
세션 종료 명령이 호스트(24)로부터 검출된 뒤에 블록 242에서 읽기 세션의 마지막에, CPU는 읽혀진 데이터가 유효한지 확인하기 위해 메모리(20)로부터 읽혀진 데이터로부터 계산된 MAC 값들을 메모리(20)에 저장된 MAC 값들과 비교한다. 만일 수신된 호스트 명령이 위에서 언급한 것들 중의 어떤 것도 아니라면, CPU(12)는 간단히 그 명령을 실행하고 블록 202로 되돌아간다(블록 250).
위에서 본 발명이 다양한 실시예들에 대해 언급함으로써 기술되었지만, 본 발명의 범위를 벗어나지 않고 변경과 수정을 할 수 있다는 것이 이해될 수 있을 것이며, 그것들은 오직 첨부된 청구항 및 이와 균등한 것들 만으로 정의될 것이다. 여기에 참조된 모든 참고문헌들은 참조에 포함되어 있다.
10: 메모리 시스템
12: 중앙처리장치(CPU)
14: 버퍼 관리 유닛(BMU)
16: 호스트 인터페이스 모듈(HIM)
18: 플래시 인터페이스 모듈(FIM)
20: 플래시 메모리
22: 주변장치 접속 모듈(PAM)
24: 호스트 기기
26: 호스트 인터페이스 버스
28: 플래시 인터페이스 버스
32: 호스트 직접 메모리 접근(HDMA) 제어기
34: 플래시 직접 메모리 접근(FDMA) 제어기
36: 중재기
38: 버퍼 임의 접근 메모리(BRAM)
40: 암호 엔진

Claims (11)

  1. 암호화된 데이터를 저장하는 저장 장치로서,
    비휘발성 메모리;
    비휘발성 메모리로부터 또는 비휘발성 메모리로의 하나 이상의 데이터 스트림 내의 데이터 상에서 암호화 처리를 수행하는 암호화 회로; 및
    다른 데이터 스트림 내의 데이터가 인터리빙 방식으로 암호화 처리되도록 비휘발성 메모리 및 암호화 회로를 제어하는 제어기를 포함하고, 비휘발성 메모리로부터의 데이터에 접근하기 위한 적어도 하나의 세션이 또다른 세션에 의해 인터럽트되며, 제어기는 인터럽트 전에 세션에 대한 보안 설정 정보가 저장되도록 하여 인터럽트 후에 검색될 수 있도록 하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 보안 설정 정보는 각 데이터 스트림에 대한 데이터의 공급원, 데이터의 목적지, 암호화 키, 암호화 알고리즘, 및 메시지 인증 코드들 중 적어도 하나를 포함하는 저장 장치.
  3. 제 1 항에 있어서,
    제어기는 세션에 대해 저장된 보안 설정 정보를 상기 세션이 다시 시작될 때 검색되도록 하는 저장 장치.
  4. 제 1 항에 있어서,
    보안 설정 정보를 인터럽트 후에 검색될 수 있도록 제어기는 하나 이상의 데이터 스트림들 각각에 대해 보안 설정 정보가 저장되도록 하는 저장 장치.
  5. 제 4 항에 있어서,
    제어기는 하나 이상의 데이터 스트림으로부터의 데이터의 처리가 다시 시작되는 경우 하나 이상의 데이터 스트림들의 각각에 대해 저장된 보안 설정 정보를 검색되도록 하는 저장 장치.
  6. 제 1 항에 있어서,
    제어기는 인터럽트 전에 저장된 보안 설정 정보를 검색하고, 상기 보안 설정 정보는 각 데이터 스트림에 대한 메시지 인증 코드들을 포함하며 인터럽트된 세션이 다시 시작되는 경우 검색된 메시지 인증 코드들로부터 갱신된 메시지 인증 코드들을 유도하는 저장 장치.
  7. 비휘발성 메모리 및 암호화 회로를 포함하는 암호화된 데이터를 저장하기 위한 저장 장치 내의 데이터를 처리하기 위한 방법으로서,
    비휘발성 메모리로부터 또는 비휘발성 메모리로의 데이터 스트림 내의 데이터 상에서 암호화 처리를 수행하기 위해 암호화 회로를 사용하는 단계; 및
    암호화 회로가 인터리빙 방식으로 다른 데이터 스트림들 내의 데이터 상에서 암호화 처리를 수행하도록 하고, 인터럽트 후에 검색될 수 있도록 인터럽트 전에 적어도 하나의 세션에 대한 보안 설정 정보가 저장되도록 하는 단계를 포함하고, 비휘발성 메모리로부터 또는 비휘발성 메모리로의 데이터를 처리하기 위한 적어도 하나의 세션은 또다른 세션에 의해 인터럽트되는 데이터 처리 방법.
  8. 제 7 항에 있어서,
    상기 보안 설정 정보는 각 데이터 스트림에 대한 공급원, 데이터의 목적지, 암호화 키, 암호화 알고리즘, 및 메시지 인증 코드들 중 적어도 하나를 포함하는 데이터 처리 방법.
  9. 제 7 항에 있어서,
    상기 저장되도록 하는 단계는 인터럽트 후에 보안 설정 정보를 가져올 수 있도록 다른 데이터 스트림들 각각에 대해 보안 설정 정보가 저장되도록 하는 데이터 처리 방법.
  10. 제 7 항에 있어서,
    상기 저장되도록 하는 단계는 각 데이터 스트림으로부터의 데이터에 대한 처리가 다시 시작될 때 서로 다른 데이터 스트림들 각각에 대해 저장된 보안 설정 정보가 검색되도록 하는 데이터 처리 방법.
  11. 제 7 항에 있어서,
    인터럽트 이전에 저장된 보안 설정 정보를 검색하는 단계를 더 포함하고, 상기 보안 설정 정보는 각 데이터 스트림에 대한 메시지 인증 코드들을 포함하며 인터럽트된 세션이 다시 시작할 때 검색된 메시지 인증 코드들로부터 갱신된 메시지 인증 코드를 유도하는 데이터 처리 방법.
KR1020127027415A 2004-12-21 2005-12-21 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템 KR101323746B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US63944204P 2004-12-21 2004-12-21
US60/639,442 2004-12-21
US11/314,030 2005-12-20
US11/314,030 US20060242429A1 (en) 2004-12-21 2005-12-20 In stream data encryption / decryption method
US11/314,032 2005-12-20
US11/314,032 US20070180539A1 (en) 2004-12-21 2005-12-20 Memory system with in stream data encryption / decryption
PCT/US2005/046586 WO2006071725A2 (en) 2004-12-21 2005-12-21 Memory system with in-stream data encryption/decryption

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020077016700A Division KR101297760B1 (ko) 2004-12-21 2005-12-21 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20120131222A KR20120131222A (ko) 2012-12-04
KR101323746B1 true KR101323746B1 (ko) 2013-10-29

Family

ID=39055650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127027415A KR101323746B1 (ko) 2004-12-21 2005-12-21 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템

Country Status (5)

Country Link
US (2) US20070180539A1 (ko)
JP (1) JP2012090286A (ko)
KR (1) KR101323746B1 (ko)
CN (1) CN101120349A (ko)
TW (1) TWI411932B (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424201B2 (en) * 2001-03-30 2008-09-09 Sandisk 3D Llc Method for field-programming a solid-state memory device with a digital media file
JP4667108B2 (ja) * 2005-04-11 2011-04-06 パナソニック株式会社 データ処理装置
US9081946B2 (en) * 2006-03-29 2015-07-14 Stmicroelectronics, Inc. Secure mass storage device
US20080019517A1 (en) * 2006-04-06 2008-01-24 Peter Munguia Control work key store for multiple data streams
US9680686B2 (en) * 2006-05-08 2017-06-13 Sandisk Technologies Llc Media with pluggable codec methods
US20070260615A1 (en) * 2006-05-08 2007-11-08 Eran Shen Media with Pluggable Codec
US20080126705A1 (en) * 2006-08-08 2008-05-29 Fabrice Jogand-Coulomb Methods Used In A Portable Mass Storage Device With Virtual Machine Activation
US7725614B2 (en) * 2006-08-08 2010-05-25 Sandisk Corporation Portable mass storage device with virtual machine activation
EP2087537B1 (en) * 2006-12-01 2021-06-23 The Regents of The University of California Enhancing performance characteristics of organic semiconducting films by improved solution processing
US8423794B2 (en) 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
US8566695B2 (en) * 2007-03-30 2013-10-22 Sandisk Technologies Inc. Controlling access to digital content
US20090113116A1 (en) * 2007-10-30 2009-04-30 Thompson E Earle Digital content kiosk and methods for use therewith
IL187043A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure pipeline manager
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
IL187045A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Software protection against fault attacks
US20100027796A1 (en) * 2008-08-01 2010-02-04 Disney Enterprises, Inc. Multi-encryption
FI20080534A0 (fi) 2008-09-22 2008-09-22 Envault Corp Oy Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto
JP5302083B2 (ja) * 2009-04-23 2013-10-02 株式会社メガチップス メモリ装置およびメモリ装置の制御方法
JP5178839B2 (ja) 2009-11-27 2013-04-10 株式会社東芝 メモリチップ
US9032535B2 (en) * 2009-12-31 2015-05-12 Sandisk Technologies Inc. Storage device and method for providing a scalable content protection system
US8751802B2 (en) * 2010-06-30 2014-06-10 Sandisk Il Ltd. Storage device and method and for storage device state recovery
JP5017439B2 (ja) * 2010-09-22 2012-09-05 株式会社東芝 暗号演算装置及びメモリシステム
EP2721497A4 (en) * 2011-06-15 2015-03-25 Nokia Corp METHOD AND APPARATUS FOR IMPLEMENTING ACCESS TO A MEMORY SEGMENT IN A DISTRIBUTED MEMORY ENVIRONMENT
KR101878682B1 (ko) 2011-11-14 2018-07-18 삼성전자주식회사 컨텐츠를 보호하기 위한 방법 및 저장 매체
US9152825B2 (en) * 2012-02-29 2015-10-06 Apple Inc. Using storage controller bus interfaces to secure data transfer between storage devices and hosts
US9798695B2 (en) 2012-08-07 2017-10-24 Nokia Technologies Oy Access control for wireless memory
US9448967B2 (en) * 2012-10-31 2016-09-20 Mstar Semiconductor, Inc. Stream data processor
US9419952B2 (en) 2014-06-05 2016-08-16 Stmicroelectronics (Grenoble 2) Sas Memory encryption method compatible with a memory interleaved system and corresponding system
US10313129B2 (en) * 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions
TWI736000B (zh) * 2017-03-07 2021-08-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
TWI679554B (zh) * 2017-03-07 2019-12-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
CN107256363B (zh) * 2017-06-13 2020-03-06 杭州华澜微电子股份有限公司 一种由加解密模块阵列组成的高速加解密装置
JP7287115B2 (ja) 2019-05-30 2023-06-06 京セラドキュメントソリューションズ株式会社 集積回路及び集積回路の制御方法
TWI722496B (zh) 2019-06-20 2021-03-21 慧榮科技股份有限公司 使用者資料的加解密方法及裝置
US11632242B2 (en) * 2020-12-30 2023-04-18 Pqsecure Technologies, Llc Low footprint hardware architecture for Kyber-KEM
US20240129282A1 (en) * 2022-10-12 2024-04-18 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for protection for device data transfers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1074906A1 (en) * 1999-08-05 2001-02-07 Sony Corporation Card-shaped semiconductor storage device and operation setting method of the same
US20020188812A1 (en) 2001-06-12 2002-12-12 Akila Sadhasivan Implementing a dual partition flash with suspend/resume capabilities
US20030196028A1 (en) 1999-10-21 2003-10-16 Takuji Maeda Semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4506362A (en) * 1978-12-22 1985-03-19 Gould Inc. Systematic memory error detection and correction apparatus and method
US4371930A (en) * 1980-06-03 1983-02-01 Burroughs Corporation Apparatus for detecting, correcting and logging single bit memory read errors
US4506365A (en) * 1982-11-22 1985-03-19 Ncr Corporation Error correction system
US5438575A (en) * 1992-11-16 1995-08-01 Ampex Corporation Data storage system with stale data detector and method of operation
US5434919A (en) * 1994-01-11 1995-07-18 Chaum; David Compact endorsement signature systems
US5630025A (en) * 1994-07-13 1997-05-13 Unisys Corporation Generalized configurator using a declaratively constructed two-level bi-partite graph as a knowledge representation
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
JPH113284A (ja) * 1997-06-10 1999-01-06 Mitsubishi Electric Corp 情報記憶媒体およびそのセキュリティ方法
US6243739B1 (en) * 1997-07-11 2001-06-05 Phone.Com, Inc. Reducing perceived latency in servicing user requests on low-bandwidth communication channels
US6252961B1 (en) * 1997-07-17 2001-06-26 Hewlett-Packard Co Method and apparatus for performing data encryption and error code correction
JP3389186B2 (ja) * 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
JP2001175606A (ja) * 1999-12-20 2001-06-29 Sony Corp データ処理装置、データ処理機器およびその方法
US7215771B1 (en) * 2000-06-30 2007-05-08 Western Digital Ventures, Inc. Secure disk drive comprising a secure drive key and a drive ID for implementing secure communication over a public network
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
JP2002229861A (ja) * 2001-02-07 2002-08-16 Hitachi Ltd 著作権保護機能つき記録装置
JP2002329180A (ja) * 2001-04-27 2002-11-15 Toshiba Corp 無線通信機能を有するメモリカード及びそのデータ通信方法
JP2002329367A (ja) * 2001-04-27 2002-11-15 Sony Corp データ記録方法および装置、データ再生方法および装置、並びにデータ記録媒体
US7054335B2 (en) * 2001-05-04 2006-05-30 Hewlett-Packard Development Company, L.P. Method and system for midstream transcoding of secure scalable packets in response to downstream requirements
US6754765B1 (en) * 2001-05-14 2004-06-22 Integrated Memory Logic, Inc. Flash memory controller with updateable microcode
JP3615162B2 (ja) * 2001-07-10 2005-01-26 日本電気株式会社 画像符号化方法及び画像符号化装置
US7036020B2 (en) * 2001-07-25 2006-04-25 Antique Books, Inc Methods and systems for promoting security in a computer system employing attached storage devices
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
TWI223204B (en) * 2001-11-08 2004-11-01 Toshiba Corp Memory card, content transmission system, and content transmission method
US6865555B2 (en) * 2001-11-21 2005-03-08 Digeo, Inc. System and method for providing conditional access to digital content
US7020455B2 (en) * 2001-11-28 2006-03-28 Telefonaktiebolaget L M Ericsson (Publ) Security reconfiguration in a universal mobile telecommunications system
US6928599B2 (en) * 2001-12-05 2005-08-09 Intel Corporation Method and apparatus for decoding data
US20040153918A1 (en) * 2002-04-08 2004-08-05 Matsushita Electric Industrial Co., Tamper-resistant computer program product
JP4185314B2 (ja) * 2002-06-07 2008-11-26 富士通株式会社 情報記録再生装置、光ディスク装置及び、データ再生方法
US20030233545A1 (en) * 2002-06-13 2003-12-18 Avigdor Eldar Diagnostic method for security records in networking application
JP2004101846A (ja) * 2002-09-09 2004-04-02 Rohm Co Ltd 暗号化・復号化装置および暗号化・復号化方法
JP2004104602A (ja) * 2002-09-11 2004-04-02 Pioneer Electronic Corp 情報記録媒体、情報記録装置、情報再生装置、情報配信装置、それらの方法、それらのプログラムおよびそのプログラムを記録した記録媒体
JP2004109177A (ja) * 2002-09-13 2004-04-08 Matsushita Electric Ind Co Ltd コンテンツデータ記録媒体、コンテンツデータ復号装置、コンテンツデータ暗号化装置、コンテンツデータ復号方法及びコンテンツデータ暗号化方法
US7702904B2 (en) * 2002-11-15 2010-04-20 Nec Corporation Key management system and multicast delivery system using the same
JP2004201038A (ja) * 2002-12-18 2004-07-15 Internatl Business Mach Corp <Ibm> データ記憶装置、これを搭載した情報処理装置及びそのデータ処理方法並びにプログラム
EP1445889B1 (en) * 2003-02-04 2007-04-11 STMicroelectronics Limited Decryption semiconductor circuit
JP4891521B2 (ja) * 2003-03-28 2012-03-07 三洋電機株式会社 データ入出力方法、およびその方法を利用可能な記憶装置およびホスト装置
US7398544B2 (en) * 2003-05-12 2008-07-08 Sony Corporation Configurable cableCARD
DE60309157T2 (de) * 2003-08-06 2007-08-30 Stmicroelectronics S.R.L., Agrate Brianza Speichersystem mit Fehlererkennungsvorrichtung
JP4139801B2 (ja) * 2003-09-11 2008-08-27 シャープ株式会社 情報記録媒体再生装置、及び情報記録媒体再生方法
US7526686B2 (en) * 2004-08-04 2009-04-28 International Business Machines Corporation Apparatus, system, and method for active data verification in a storage system
TWI248617B (en) * 2004-08-13 2006-02-01 Prolific Technology Inc Data storage device
US7493656B2 (en) * 2005-06-02 2009-02-17 Seagate Technology Llc Drive security session manager

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1074906A1 (en) * 1999-08-05 2001-02-07 Sony Corporation Card-shaped semiconductor storage device and operation setting method of the same
US20030196028A1 (en) 1999-10-21 2003-10-16 Takuji Maeda Semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card
US20020188812A1 (en) 2001-06-12 2002-12-12 Akila Sadhasivan Implementing a dual partition flash with suspend/resume capabilities

Also Published As

Publication number Publication date
TWI411932B (zh) 2013-10-11
US20070180539A1 (en) 2007-08-02
KR20120131222A (ko) 2012-12-04
US20060242429A1 (en) 2006-10-26
JP2012090286A (ja) 2012-05-10
CN101120349A (zh) 2008-02-06
TW200703054A (en) 2007-01-16

Similar Documents

Publication Publication Date Title
KR101323746B1 (ko) 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템
KR101297760B1 (ko) 스트림-내 데이터 암호화/복호화 기능을 가진 메모리 시스템
US9037875B1 (en) Key generation techniques
US20160330024A1 (en) System and method for content protection based on a combination of a user pin and a device specific identifier
CN101149709B (zh) 存储卡的加密处理器和使用其进行数据读写的方法
US20090125726A1 (en) Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices
US20020188856A1 (en) Storage device with cryptographic capabilities
US20060239450A1 (en) In stream data encryption / decryption and error correction method
US20140189367A1 (en) Digital-encryption hardware accelerator
JP2008524969A5 (ko)
CN102334307A (zh) 密码系统的密钥恢复机制
US7835518B2 (en) System and method for write failure recovery
US9323943B2 (en) Decrypt and encrypt data of storage device
KR101254136B1 (ko) 스트림 내 데이터 암호화/복호화 및 오류 정정 기능을 가진 메모리 시스템
US8396208B2 (en) Memory system with in stream data encryption/decryption and error correction
JP2012227901A (ja) 認証コンポーネント、被認証コンポーネントおよびその認証方法
JP2012227899A (ja) 認証コンポーネント、被認証コンポーネントおよびその認証方法
JP2012227900A (ja) 認証コンポーネント、被認証コンポーネントおよびその認証方法
US7571368B1 (en) Digital content protection systems and methods
JP2023130311A (ja) サイドチャネル攻撃から電子コンピュータを保護する方法及び電子コンピュータ
US20070230690A1 (en) System for write failure recovery
JP2009537026A (ja) 書き込み障害回復のためのシステムおよび方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee