KR20210107148A - 암호화 컴포넌트를 갖는 메모리 디바이스 - Google Patents

암호화 컴포넌트를 갖는 메모리 디바이스 Download PDF

Info

Publication number
KR20210107148A
KR20210107148A KR1020217026229A KR20217026229A KR20210107148A KR 20210107148 A KR20210107148 A KR 20210107148A KR 1020217026229 A KR1020217026229 A KR 1020217026229A KR 20217026229 A KR20217026229 A KR 20217026229A KR 20210107148 A KR20210107148 A KR 20210107148A
Authority
KR
South Korea
Prior art keywords
data
component
controller
error correction
memory device
Prior art date
Application number
KR1020217026229A
Other languages
English (en)
Inventor
안토니노 몬델로
카르멜로 콘데미
프란체스코 토마이울로
토마소 제릴리
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20210107148A publication Critical patent/KR20210107148A/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic 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 challenge-response
    • H04L9/3278Cryptographic 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 challenge-response using physically unclonable functions [PUF]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Probability & Statistics with Applications (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 시스템(예를 들어, NAND 메모리 시스템)과 같은 장치는 제1 오류 정정 코드 컴포넌트를 갖는 제어기, 및 제어기에 결합된 메모리 디바이스(예를 들어, NAND 메모리 디바이스)를 가질 수 있다. 메모리 디바이스는 메모리 셀의 어레이, 어레이에 결합되고 어레이로부터의 데이터를 정정하도록 구성된 제2 오류 정정 코드 컴포넌트, 및 제2 오류 정정 코드 컴포넌트로부터 정정된 데이터를 수신하도록 결합된 암호화 컴포넌트를 가질 수 있다.

Description

암호화 컴포넌트를 갖는 메모리 디바이스
본 개시내용은 일반적으로 메모리 디바이스에 관한 것이고, 특히 암호화 컴포넌트를 갖는 메모리 디바이스에 관한 것이다.
메모리 시스템은 컴퓨터, 휴대폰, 핸드 헬드 전자 디바이스 등과 같은 전자 시스템에서 구현될 수 있다. 솔리드 스테이트 드라이브(SSD), 임베디드 멀티미디어 제어기(eMMC) 디바이스, 범용 플래시 스토리지(Universal Flash Storage: UFS) 디바이스 등과 같은 일부 메모리 시스템은 호스트(예를 들어, 사용자)로부터 호스트 데이터를 저장하기 위한 비휘발성 저장 메모리를 포함할 수 있다. 비휘발성 저장 메모리는 전력이 공급되지 않을 때 저장된 데이터를 보유하는 것에 의해 영구 데이터를 제공하며, 다른 유형의 메모리 중에서, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 소거 가능 프로그램 가능한 메모리 ROM(EEPROM), 소거 가능 프로그램 가능한 ROM(EPROM) 및 상 변화 랜덤 액세스 메모리(PCRAM), 3차원 교차점 메모리(예컨대, 3D XPoint), 저항성 랜덤 액세스 메모리(RRAM), 강유전성 랜덤 액세스 메모리(FeRAM), 자기 저항 랜덤 액세스 메모리(MRAM)와 같은 저항 가변 메모리, 및 프로그래밍 가능한 전도성 메모리 등 다양한 유형의 메모리를 포함할 수 있다.
일부 예에서, 메모리 디바이스는 보안 정보를 저장할 수 있고, 보안 정보를 획득 및/또는 변경하려는 목적의 악의적인 공격에 취약할 수 있다. 이러한 공격은, 예를 들어 보안 정보의 악의적 또는 사기성 반복 또는 지연을 수반할 수 있고 보안 정보를 가로채고 재전송하는 것을 수반할 수 있는 재전송 공격을 포함할 수 있다.
도 1은 본 개시내용의 다수의 실시형태에 따른 장치의 단순화된 블록도이다.
도 2a는 본 개시내용의 다수의 실시형태에 따른 데이터 구조를 도시한다.
도 2b는 본 개시내용의 다수의 실시형태에 따른 메모리 디바이스에 의해 계산된 ECC 데이터를 갖는 데이터 구조를 도시한다.
도 3a는 본 개시내용의 다수의 실시형태에 따른 장치(예를 들어, 메모리 시스템의 형태를 하는)의 블록도이다.
도 3b는 본 개시내용의 다수의 실시형태에 따른 보안 메모리 파티션을 도시한다.
도 4는 본 개시내용의 다수의 실시형태에 따른 보안 명령을 도시한다.
도 5는 본 개시내용의 다수의 실시형태에 따른 메모리 어레이의 일부의 개략도이다.
메모리 시스템(예를 들어, NAND 메모리 시스템)과 같은 예시적인 장치는 제1 오류 정정 코드 컴포넌트를 갖는 제어기, 및 제어기에 결합된 메모리 디바이스(예를 들어, NAND 메모리 디바이스)를 가질 수 있다. 메모리 디바이스는 메모리 셀의 어레이, 어레이에 결합되고 어레이로부터의 데이터를 정정하도록 구성된 제2 오류 정정 코드 컴포넌트, 및 제2 오류 정정 코드 컴포넌트로부터 정정된 데이터를 수신하도록 결합된 암호화 컴포넌트를 가질 수 있다.
메모리 디바이스에서 암호화 컴포넌트를 갖는 것은, 이전 접근 방식에서 통상적으로 행해진 것처럼, (예를 들어, 메모리 어레이에 저장된 데이터가 안전한지의 여부를 결정하기 위해) 메모리 디바이스가 암호화 컴포넌트를 통해, 메모리 디바이스 외부에 있는 제어기로 데이터를 전송함이 없이 메모리 어레이에 저장된 데이터에 대한 암호화 작업을 수행하는 것을 가능하게 한다.
예를 들어, 일부 이전의 접근법에서, 암호화 컴포넌트는 외부 제어기에 있을 수 있고, 데이터는 데이터가 안전한지의 여부를 결정하기 위해 메모리 디바이스로부터 외부 제어기로 전송될 수 있다. 그러나 외부 제어기로 데이터를 전송하는 것은 안전하지 않은 프로세스일 수 있으며, 외부 제어기로 전송된 데이터의 보안은 손상될 수 있다. 데이터를 외부 제어기로 전송하는 것은 또한 시간 소모적일 수 있다. 더욱이, 외부 제어기를 통해 제공되는 보안은 보안 기능을 제공하는 제3자에게 요금을 지불해야 하기 때문에 비용이 많이들 수 있다. 이와 같이, 메모리 디바이스에서 암호화 컴포넌트를 갖는 것은 보안을 향상시킬 수 있고, 외부 제어기에서 암호화 컴포넌트를 갖는 것과 비교하여 암호화 작업을 수행하는데 드는 시간과 비용을 감소시킬 수 있다.
NAND 메모리 디바이스와 같은 일부 메모리 디바이스는 사용자 데이터가 메모리 어레이로부터 판독될 때 상대적으로 높은 비트 오류율(BER)을 가질 수 있다. 그 결과, 이러한 높은 BER을 갖는 사용자 데이터에 대해 암호화 작업을 수행할 때 문제가 발생할 수 있다. 오류 정정 체계는 메모리 어레이로부터 판독된 데이터를 정정하기 위해 이용될 수 있다. 그러나, 이전의 접근법에서, 데이터 오류 정정 작업은 메모리 디바이스로부터 외부 제어기로 전송되는 사용자 데이터에 대해 외부 제어기에 의해 수행될 수 있다. 이러한 것은 일부 예에서, 데이터는 정정을 위해 외부 제어기로 전송되고 정정된 데이터가 암호화 작업을 위해 메모리 디바이스로 다시 전송되었을 수 있다는 것을 의미한다. 그러나, 메모리 디바이스와 외부 제어기 사이에 데이터를 주고받는 것은 안전하지 않으며, 시간 소모적인 프로세스일 수 있다. 개시된 실시형태는 메모리 디바이스에 대한 오류 정정 컴포넌트의 위치를 찾고 메모리 디바이스의 암호화 컴포넌트에 의한 사용을 위해 어레이로부터 데이터를 정정하도록 그 오류 정정 컴포넌트를 사용하는 것에 의해 이러한 문제를 해결한다.
도 1은 본 개시내용의 다수의 실시형태에 따른 컴퓨팅 시스템(100)의 형태를 하는 장치의 단순화된 블록도이다. 컴퓨팅 시스템(100)은 예를 들어 SSD, UFS 디바이스, eMMC 디바이스 등과 같은 저장 시스템일 수 있는 메모리 시스템(102)의 형태를 하는 장치를 포함한다. 일부 예에서, 메모리 시스템(102)은 NAND 메모리일 수 있다. 그러나, 개시된 실시형태는 특정 유형의 메모리 시스템으로 제한되지 않는다. 예를 들어, 메모리 시스템(102)은 시스템(100)을 위한 주 메모리로서 작용할 수 있다.
도 1에 도시된 바와 같이, 메모리 시스템(102)은 제어기(104)가 제어기(104)에 결합된 메모리 디바이스(106)(예를 들어, NAND 제어기)를 제어할 수 있다는 점에서, 메모리 시스템 제어기(예를 들어, NAND 제어기)로서 지칭될 수 있는 제어기(104)를 포함할 수 있다. 제어기(104)는 메모리 디바이스(106)의 외부에 있을 수 있으며, 그러므로 외부 호스트 제어기와 같은 외부 제어기로서 지칭될 수 있다. 일부 예에서, 제어기(104) 및 메모리 디바이스(106)는 단일 칩에 통합될 수 있다.
제어기(104)는 오류 정정 컴포넌트(108)(예를 들어, 외부 오류 정정 컴포넌트)를 갖는다. 메모리 디바이스(106)는 어레이(109)로부터의 데이터를 정정할 수 있는 오류 정정 컴포넌트(110)(예를 들어, 내부 오류 정정 컴포넌트)에 결합된 메모리 어레이(예를 들어, NAND 메모리 어레이)(109)를 갖는다. 예를 들어, 어레이(109)는 페이지 버퍼일 수 있는 버퍼(111)(예를 들어, 데이터 버퍼)에 결합될 수 있다. 버퍼(111)는 오류 정정 컴포넌트(110)에 결합될 수 있는 데이터 경로(112)에 결합될 수 있다. 암호화 컴포넌트(114)는 오류 정정 컴포넌트(110)로부터 정정된 데이터를 수신하도록 결합될 수 있다. 본 명세서에서 더 논의되는 바와 같이, 암호화 컴포넌트(114)는 데이터가 안전한지의 여부를 결정하기 위해 정정된 데이터에 대한 암호화 작업을 수행할 수 있다. 일부 예에서, 암호화 작업은 특히 암호화 해시, 메시지 인증 코드(message authentication code: MAC), 해시 MACS(HMACS)와 같은 암호화 코드를 계산하는 것을 포함할 수 있다.
어레이(109)는 논리 파티션(116-1 내지 116-N) 및 보안 논리 파티션(117) 내로 논리적으로 펼쳐질 수 있다. 예를 들어, 논리 파티션은 그룹으로서 함께 소거되도록 각각 구성된 메모리 셀의 다수의 물리적 블록을 포함할 수 있다. 보안 파티션(117)은 제어기(104)에 결합된 호스트(120)에 의해 발부된 보안 명령에 의해 액세스될 수 있다. 논리 파티션(116-1 내지 116-N)은 호스트(120)로부터의 비보안 명령에 의해 액세스될 수 있는 비보안 파티션일 수 있다.
일부 예에서, 논리 파티션(116-1 내지 116-N)에 대응하는 메모리 셀은 셀당 단일 비트, 또는 셀당 2 비트, 셀당 3 비트, 셀당 4 비트 등과 같은 셀당 다중 비트를 저장하도록 프로그래밍될 수 있다. 그러나, 다수의 실시형태에서, 보안 논리 파티션(117)에 대응하는 메모리 셀은 멀티 비트 셀에 비해 상대적으로 낮은 BER을 보장하기 위해 셀당 단일 비트만을 저장하도록 프로그래밍될 수 있다. 셀당 단일 비트를 저장하도록 구성된 메모리 셀은 단일 레벨 셀(SLC)로서 지칭될 수 있으며, 셀당 다수의 비트를 저장하도록 구성된 메모리 셀은 다중 레벨 셀(MLC)로서 지칭될 수 있다.
메모리 셀은 2m 데이터 상태 중 하나로 프로그래밍될 수 있으며, m은 셀당 비트의 수이다. 각각의 데이터 상태는 상이한 임계 전압(Vt) 분포에 대응할 수 있고, 메모리 셀은 Vt 분포 중 하나에 대응할 수 있는 Vt로 프로그래밍될 수 있다. 예를 들어, 셀당 2 비트에 대해, 메모리 셀은 4개의 데이터 상태(11, 10, 01 및 00) 중 하나에 대응하는 Vt로 프로그래밍될 수 있으며, 셀당 1 비트에 대해, 메모리 셀은 2개의 데이터 상태(0과 1) 중 하나에 대응하는 Vt로 프로그래밍될 수 있다.
보안 명령은 예를 들어 제어기(104)를 통해 호스트(120)로부터 수신된, 인증을 요구하는 명령을 지칭할 수 있다. 보안 명령은 비보안 파티션(116)에 대응하는 어드레스에 관한 명령에 대비되는 것으로서 보안 파티션(117)에 대응하는 어드레스에 관한 명령을 지칭할 수 있다. 본 명세서에서 더 논의되는 바와 같이, 보안 명령은 연산 코드, 암호화 서명 및 신선도 표시기(freshness indicator)를 포함할 수 있다. 반대로, 비보안 명령은 인증을 요구하지 않을 수 있으며, 그러므로 서명이나 신선도 표시기를 포함하지 않을 수 있다.
메모리 디바이스(106)는 인터페이스(121)(예를 들어, 메모리 인터페이스)를 통해 제어기(104)에 결합될 수 있다. 예를 들어, 인터페이스(121)는 제어기(104)를 메모리 디바이스(106)의 입력/출력(I/O)(122)에 결합할 수 있다. I/O(122)는 차례로 데이터 경로(112)에 결합될 수 있다. 일부 예에서, 인터페이스(121)는, 다양한 표준을 지원하거나 더블 데이터 레이트(DDR), 개방형 NAND 플래시 인터페이스(ONFI), 직렬 주변 기기 인터페이스(SPI) 등과 같은 다양한 인터페이스 유형을 준수할 수 있는 데이터 버스를 포함할 수 있다.
제어기(104)는 호스트(120)로부터 보안 및 비보안 판독 및 기록 명령과 같은 보안 및 비보안 명령을 수신할 수 있다. 제어기(104)는 예를 들어 (예를 들어, 호스트 인터페이스(123)를 통해) 호스트(120)로부터 메모리 어레이(109)에 기록될 사용자 데이터를 수신할 수 있다. 예를 들어, 제어기(104)는 보안 데이터를 보안 논리 파티션(117)에 매핑하고, 비보안 데이터를 논리 파티션(116-1 내지 116-N)에 매핑할 수 있다.
호스트(120)는 다양한 유형의 호스트 중에서, 예를 들어 개인용 랩톱 컴퓨터, 데스크톱 컴퓨터, 디지털 카메라, 모바일 디바이스(예를 들어, 휴대폰), 네트워크 서버, 사물 인터넷(IoT) 인에이블 디바이스, 또는 메모리 카드 판독기과 같은 호스트 시스템일 수 있다. 예를 들어, 호스트(120)는 버스를 포함할 수 있는 인터페이스(123)를 통해 메모리 시스템(102)에 액세스할 수 있는(예를 들어, 제어기(104)를 통해) 하나 이상의 프로세서를 포함할 수 있다. 인터페이스(123)는 특히 직렬 고급 기술 부착(SATA), 주변 컴포넌트 상호 연결 익스프레스(PCIe), 또는 범용 직렬 버스(USB)와 같은 표준화된 인터페이스일 수 있다.
도 2a는 본 개시내용의 다수의 실시형태에 따른 데이터 구조(225)(예를 들어, 관리된 유닛)를 도시한다. 제어기(104)는 데이터 구조(225)를 어레이(109)에 기록하는 기록(프로그래밍) 동작 동안 데이터 구조(225)를 메모리 디바이스(106)로 전송할 수 있다. 일부 예에서, 데이터 구조(225)는 코드 워드(codeword)로서 지칭될 수 있다. 데이터 구조(225)는 예를 들어 메모리 셀의 블록에 있는 데이터의 페이지에 대응할 수 있다.
데이터 구조(225)는 각각 Frame 1 내지 Frame 4일 수 있는 데이터의 세그먼트(227-1 내지 227-4)를 포함할 수 있다. 그러나, 본 개시내용은 이렇게 제한되지 않고, 데이터 구조(225)에 임의의 수의 세그먼트가 있을 수 있다. 일부 예에서, 각각의 세그먼트(227-1 내지 227-4)는 각각의 서브-코드 워드로서 지칭될 수 있다.
세그먼트(227-1 내지 227-4)는 각각 사용자 데이터 필드(228-1 내지 228-4), 예비 데이터(SPARE1 내지 SPARE4)를 각각 저장할 수 있는 예비 데이터 필드(229-1 내지 229-4), 및 ECC 데이터(ECC1 내지 ECC4)를 각각 저장할 수 있는 오류 정정 코드(ECC) 필드(230-1 내지 230-4)를 포함할 수 있다. 일부 예에서, 각각의 사용자 데이터 필드(228-1 내지 228-4)는 4 킬로바이트의 사용자 데이터를 저장할 수 있으며; 각각의 예비 데이터 필드(229-1 내지 229-4)는 16 바이트의 예비 데이터를 저장할 수 있으며; 각각의 오류 정정 코드 필드(230-1 내지 230-4)는 516 바이트의 ECC 데이터를 저장할 수 있다. 그러나 본 개시내용은 이렇게 제한되지 않는다.
제어기(104)는 사용자 데이터 필드(228-1 내지 228-4)에 호스트(120)로부터의 사용자 데이터(USER1 내지 USER4)를 각각 넣을 수 있다. ECC 컴포넌트(108)는 사용자 데이터(USER1 내지 USER4)로부터 각각 ECC 데이터(ECC1 내지 ECC4)를 계산할 수 있고, 제어기(104)는 각각 사용자 데이터 필드(228-1 내지 228-4)에 ECC 데이터(ECC1 내지 ECC4)를 넣을 수 있다. 예를 들어, ECC 데이터(ECC1 내지 ECC4)는 각각 사용자 데이터(USER1 내지 USER4)에 대응한다.
데이터 구조(225)는 전체 데이터 구조(225)를 정정하기 위해 사용될 수 있는 Bose-Chaudhuri-Hocquenghem(BCH) 코드와 같은 정정 코드(231)를 포함할 수 있다. 예를 들어, ECC1 내지 ECC4는 내부 정정 코드로서 지칭될 수 있으며, 정정 코드(231)는 외부 정정 코드로서 지칭될 수 있다. 일부 예에서, 정정 코드(231)는 ECC1 내지 ECC4 중 하나 이상이 그 대응하는 사용자 데이터를 정정하는데 실패할 때 사용될 수 있다. 정정 코드(231)는 일부 예에서 80 바이트일 수 있지만, 본 개시내용은 이렇게 제한되지 않는다.
데이터 구조(225)가 비보안이고 사용자 데이터(USER1 내지 USER4)가 비보안 데이터일 때, 제어기(104)는 다양한 목적을 위해 예비 데이터 필드(229-1 내지 229-4)를 사용할 수 있다. 예를 들어, 제어기(104)는 예비 데이터 필드(229-1 내지 229-4)에서 각각 예비 데이터(SPARE1 내지 SPARE4)의 다양한 패턴을 프로그래밍할 수 있다. 제어기(104)는 비보안 데이터 구조(225)를 버퍼(111)로 전송할 수 있고, 버퍼(111)에서의 비보안 데이터 구조(225)는 비보안 파티션(116)에 기록될 수 있다. 예를 들어, 비보안 데이터 구조(225)는 비보안 파티션(116)에 있는 SLC 또는 MLC의 그룹(예를 들어, 페이지)에 기록될 수 있다.
사용자 데이터(USER1 내지 USER4)가 보안 데이터일 때, 제어기(104)는 예비 데이터 필드(229-1 내지 229-4)를 사용하지 않았을 수 있다. 예를 들어, 제어기(104)는 예비 데이터 필드(229-1 내지 229-4)에 예비 데이터(SPARE1 내지 SPARE4)를 모두 1 또는 모두 0의 패턴으로서 기록할 수 있다. 이어서, 제어기(104)는 보안 데이터 구조를 데이터 버퍼(111)로 전송할 수 있다.
일부 예에서, 보안 사용자 데이터(USER1 내지 USER4)는 또한 ECC 컴포넌트(110)로 전송될 수 있고, ECC 컴포넌트(110)는 사용자 데이터(USER1 내지 USER4)로부터 ECC 데이터를 계산할 수 있다. ECC 컴포넌트(110)에 의해 사용자 데이터(USER1 내지 USER4)로부터 계산된 ECC 데이터는 데이터 구조(225)가 버퍼(111)에 있는 동안 예비 데이터 필드(229-1 내지 229-4)에 각각 저장될 수 있다. 예를 들어, 예비 데이터(SPARE1 내지 SPARE4)는 각각 사용자 데이터(USER1 내지 USER4)로부터 계산된 ECC일 수 있다. 일부 예에서, 각각의 예비 데이터(SPARE1 내지 SPARE4)의 모든 1 또는 0의 패턴은 사용자 데이터(USER1 내지 USER4)로부터 계산된 각각의 ECC와 중복 기록될 수 있다.
도 2b는 본 개시내용의 다수의 실시형태에 따른 메모리 디바이스(106)에 의해 계산된 보안 사용자 데이터 및 ECC 데이터를 갖는 데이터 구조(225')를 도시한다. 도 2b에서, ECC 데이터(ECC'1 내지 ECC'4)는 ECC 컴포넌트(110)에 의해 사용자 데이터(USER1 내지 USER4)로부터 각각 계산되고, 각각 예비 데이터 필드(229-1 내지 229-4)에 저장된다. 예를 들어, 각각의 예비 데이터(SPARE1 내지 SPARE4)의 모든 1 또는 0의 패턴은 각각의 ECC 데이터(ECC'1 내지 ECC'4)와 중복 기록될 수 있다. 보안 데이터 구조(225')는 버퍼(111)에 있을 수 있고, 보안 파티션(117)에 기록될 수 있다. 예를 들어, 도 2b에서의 보안 데이터 구조(225')는 보안 파티션(117)에 있는 SLC의 그룹에서만 프로그래밍될 수 있다.
ECC 컴포넌트(110)는 예를 들어 ECC 컴포넌트(108)보다 적은 ECC 비트를 사용할 수 있기 때문에 "가벼운 ECC(light ECC)" 컴포넌트로서 지칭될 수 있다. 예를 들어, ECC' 데이터는 가벼운 ECC 데이터로서 지칭될 수 있다. 일부 예에서, ECC'는 8 비트 ECC일 수 있고, 약 10-8의 BER을 약 10-15의 최종 목표 BER로 복구할 수 있다. 예를 들어, 가벼운 ECC는 파티션(117)에 보안 사용자 데이터를 저장하는 SLC와 관련된 낮은 BER로 인해 충분할 수 있다. ECC 컴포넌트(108)는 ECC 컴포넌트(108)가 파티션(116)에 있는 MLC로부터 사용자 데이터를 정정하도록 사용될 수 있기 때문에 ECC 컴포넌트(110)보다 무거운 ECC 컴포넌트일 수 있다. MLC는 SLC보다 더 높은 BER을 가질 수 있다는 점에 유의한다.
일부 예에서, 도 2b에 도시된 보안 데이터 구조(225')는 보안 파티션(117)으로부터 버퍼(111)까지 판독될 수 있다. 사용자 데이터(USER1 내지 USER4)는 ECC 컴포넌트(110)에 의해 각각 ECC 데이터(ECC'1 내지 ECC'4)로 정정될 수 있다. 암호화 컴포넌트(114)는 각각의 정정된 사용자 데이터(USER1 내지 USER4)로부터 각각의 암호화 코드를 계산할 수 있다.
도 3a는 본 개시내용의 다수의 실시형태에 따른 메모리 시스템(102)일 수 있는 메모리 시스템(302)의 형태를 하는 장치의 상세한 블록도이다. 본 명세서에서의 도면은 도면 부호의 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자가 도면에서의 요소 또는 컴포넌트를 식별하는 번호 지정 규칙을 따른다. 상이한 도면 사이의 유사한 요소 또는 컴포넌트는 유사한 숫자를 사용하여 식별될 수 있다. 예를 들어, 도면 부호 117에서, 숫자 1은 도 1을 지칭하고, 숫자 17은 도 1에서 보안 파티션을 식별한다. 유사하게, 숫자 317에서, 숫자 3은 도 3a 및 도 3b를 지칭하고, 숫자 17은 도 3a 및 도 3b에서 유사한 보안 파티션을 식별한다.
메모리 시스템(302)은 인터페이스(321)에 의해 제어기(304)에 결합된 메모리 디바이스(306)를 포함할 수 있다. 예를 들어, 제어기(304)는 인터페이스(321)에 의해 I/O(322)에 결합될 수 있다. 제어기(304)는 제어기(104)일 수 있고, ECC 컴포넌트(108)일 수 있는 ECC 컴포넌트(308)를 포함할 수 있다. 제어기(304)는 호스트 인터페이스(323)에 의해 호스트(120)와 같은 호스트에 결합될 수 있다. I/O(322)는 데이터 경로(312)에 결합될 수 있다. 데이터 경로(312)는, 판독/기록 회로(335)에 결합될 수 있고 버퍼(111)일 수 있는 버퍼(311)에 결합될 수 있다.
판독/기록 회로(335)는 메모리 어레이(309)에 결합될 수 있다. 어레이(309)의 부분(예를 들어, 블록 또는 블록의 그룹)은 비보안 논리 파티션(316-1 내지 316-N) 및 보안 논리 파티션(317 및 317')에 대응할 수 있다.
도 3b는 본 개시내용의 다수의 실시형태에 따른 보안 파티션(317)을 도시한다. 보안 파티션(317)은 다수의 데이터 구조(325')(예를 들어, 325'-1 내지 325'-M)를 저장할 수 있다. 각각의 데이터 구조(325'-1 내지 325'-M)는 예를 들어 보안 데이터 구조(225')로서 구성될 수 있다. 예를 들어, 데이터 구조(325'-1 내지 325'-M)는 어드레스(예를 들어, 페이지 어드레스)(Addr-1 내지 Addr-M)에 의해 각각 어드레스될 수 있다.
보안 파티션(317)은 사용자가 액세스할 수 없는 비밀 영역(332)을 포함할 수 있다. 예를 들어, 비밀 영역(332)은 사용자가 액세스할 수 있는 어드레스 공간의 외부에 있을 수 있다. 비밀 키(예를 들어, 루트 키)(333)는 비밀 영역(332)에 저장될 수 있다. 일부 예에서, 비밀 키(333)는 메모리 시스템(302)이 사용자(예를 들어, 소비자)에게 해제되기 전에 제조 시설에 있는 비밀 영역(332)에 저장될 수 있다. 대안적으로, 비밀 키(333)는 본 명세서에서 더 논의되는 바와 같이 메모리 디바이스(306)에 의해 생성될 수 있다.
황금 측정값(golden measure)(334)과 같은 암호화 코드는 비밀 영역(332)에 저장될 수 있다. 예를 들어, 황금 측정값(334)은 판독, 기록 또는 소거 동작과 같은 임의의 동작이 수행되기 전에 데이터가 보안 파티션(317)에 처음 저장될 때 보안 파티션(317)에 대해 계산될 수 있다. 황금 측정값(334)은 예를 들어 메모리 디바이스(306)의 수명 동안 변경되지 않은 채로 남을 수 있다. 황금 측정값(334)은 데이터 구조(325'-1 내지 325'-M)에 저장된 사용자 데이터에 대응할 수 있다. 황금 측정값(334)은 본 명세서에서 더 논의되는 바와 같이 사용자 데이터가 안전한지의 여부를 결정하기 위해 데이터 구조(325'-1 내지 325'-M)에 저장된 사용자 데이터로부터 메모리 디바이스(306)에 의해 계산된 암호화 측정값과 비교될 수 있다.
일부 예에서, 보안 파티션(317)은 더욱 큰 보안 파티션을 만들 수 있는 이러한 서브 파티션 중 몇몇의 보안 서브 파티션일 수 있다. 이러한 예에서, 각각의 서브 파티션은 각각의 서브 파티션 어드레스에 의해 어드레스될 수 있다. 각각의 서브 파티션은 예를 들어 각각의 수의 데이터 구조(325')와, 각각의 수의 데이터 구조에 있는 사용자 데이터에 대응하는 각각의 황금 측정값(334)을 가질 수 있다. 그러나, 비밀 키(333)는 전체로서 파티션을 위한 것일 수 있다. 예를 들어, 비밀 키(333)는 다양한 서브 파티션에 대해 수행되는 암호화 작업에서 사용될 수 있다.
파티션(317')은 보안 파티션(317)과 동일한 데이터를 저장할 수 있다. 파티션(317')은 본 명세서에서 더 논의되는 바와 같이 복원 프로세스 동안 파티션(317)과 교환될 수 있는 파티션(317)에 대한 백업 파티션일 수 있다. 예를 들어, 파티션(317 및 317')에 있는 데이터는 데이터가 처음에 파티션(317 및 317')에 저장될 때 동일할 수 있다. 그러나, 파티션(317')에 있는 데이터는 데이터가 그 초기 상태로 보유되도록 변경되지 않은(예를 들어, 결코 업데이트되지 않은)채 남겨질 수 있다. 예를 들어, 데이터가 파티션(317')에 저장된 후에, 데이터에 대해 판독, 기록 또는 소거와 같은 어떠한 동작도 수행되지 않을 수 있다. 대안적으로, 파티션(317 및 317')에 있는 데이터는 동일한 패턴을 가지도록 함께 업데이트될 수 있다. 일부 예에서, 파티션(317')은 사용자가 액세스할 수 없도록 파티션(317')이 사용자로부터 숨겨질 수 있는 비밀 파티션일 수 있다.
판독/기록 회로(335)는 보안 데이터 구조(225')와 같은 보안 데이터를 버퍼(311)로부터 보안 파티션(317) 내로 기록할 수 있다. 판독/기록 회로(335)는 보안 파티션(317)으로부터 버퍼(311) 내로의 보안 데이터를 판독할 수 있다.
일부 예에서, 비보안 사용자 데이터를 갖는 포맷 데이터 구조(225)에서의 비보안 데이터 구조와 같은 비보안 데이터는 비보안 기록 동작 동안 인터페이스(321), I/O(322), 및 데이터 경로(312)를 통해 제어기(304)로부터 버퍼(311)로 전송될 수 있으며, 판독/기록 회로(335)는 비보안 데이터를 파티션(316) 내로 기록할 수 있다.
판독/기록 회로(335)는 비보안 판독 동작 동안 비보안 논리 파티션(316)으로부터 버퍼(311) 내로의 비보안 데이터 구조를 판독할 수 있다. 판독된 비보안 데이터는 제어기(304)로 전송될 수 있고, 사용자 데이터는 ECC 컴포넌트(308)에 의해 정정될 수 있다.
메모리 디바이스(306)의 데이터 선택기(337)는 데이터 경로(312)에 결합될 수 있다. 데이터 선택기(337)는 ECC 컴포넌트(110)일 수 있는 ECC 컴포넌트(310)(예를 들어, 가벼운 ECC 컴포넌트)에 결합될 수 있다. ECC 컴포넌트(310)는 멀티플렉서(339)의 입력에 결합될 수 있다. 데이터 경로(312)는 (예를 들어, 개입 컴포넌트없이) 데이터 버스(341)에 의해 멀티플렉서(339)의 다른 입력에 직접 결합될 수 있다.
I/O(322)는 명령 인터페이스(342)(예를 들어, 명령 사용자 인터페이스)에 결합될 수 있다. 명령 인터페이스(342)는 메모리 디바이스(306)의 제어기(345)에 결합될 수 있다. 제어기(345)는 멀티플렉서(339)의 다른 입력에 결합될 수 있다.
제어기(304)가 메모리 디바이스(306)의 외부에 있기 때문에, 제어기(304)가 외부 제어기인 것과 대조적으로, 제어기(345)는 메모리 디바이스(306) 내부에 있기 때문에 내부 제어기로서 지칭될 수 있다. 일부 예에서, 제어기(304)는 메모리 디바이스(306)를 제어할 수 있기 때문에 메모리 시스템 제어기일 수 있으며, 제어기(345)는 임베디드 제어기로서 지칭될 수 있다.
제어기(345)는 각각의 제어 신호를 ECC 컴포넌트(310), 데이터 선택기(337), 데이터 경로(312), 버퍼(311), 및 판독/기록 회로(335)로 전송할 수 있다. 예를 들어, 각각의 제어 신호는 ECC 컴포넌트(310), 데이터 선택기(337), 데이터 경로(312), 버퍼(311), 및 판독/기록 회로(335)를 활성화할 수 있다. 제어기(345)는 각각의 제어 신호를 멀티플렉서(339)로 전송할 수 있다. 각각의 신호는 멀티플렉서(339)가 각각의 입력을 선택하게 할 수 있다.
멀티플렉서(339)의 출력은 예를 들어 암호화 컴포넌트(114)일 수 있는 암호화 컴포넌트(314)의 일부일 수 있는 디멀티플렉서(350)의 입력에 결합될 수 있다. 암호화 컴포넌트(314)는 HMAC 컴포넌트(352)와 같은 메시지 인증 코드(MAC) 컴포넌트를 포함할 수 있다. 암호화 컴포넌트(314)는 또한 HMAC 컴포넌트(352)에 결합된 SHA 컴포넌트(354)와 같은 암호화 해시 컴포넌트를 포함할 수 있다. 예를 들어, SHA 컴포넌트(354)는 SHA-256 HASH 알고리즘을 구현할 수 있다. 디멀티플렉서(350)의 각각의 출력은 SHA 컴포넌트(354) 및 HMAC 컴포넌트(352)에 각각 결합될 수 있다.
암호화 컴포넌트(314)는 HMAC 컴포넌트(352) 및 SHA 컴포넌트(354)에 결합된 제어 논리(356)를 포함할 수 있다. 제어 논리(356)는 제어 논리(356)를 활성화할 수 있는 제어 신호를 제어기(345)로부터 수신하도록 결합될 수 있다. 제어 논리(356)는 제어 신호를 디멀티플렉서(350)에 출력할 수 있다. 예를 들어, 제어 신호는 디멀티플렉서(350)가 HMAC 컴포넌트(352)에 결합된 출력을 선택하게 할 수 있고, 다른 제어 신호는 디멀티플렉서(350)가 SHA 컴포넌트(354)에 결합된 출력을 선택하게 할 수 있다. 일부 예에서, 제어 논리(365)는 암호화 컴포넌트(314)에 의해 수행된 동작과 관련된 다양한 결과 및/또는 플래그를 제어기(345) 및/또는 명령 인터페이스(342)로 전송할 수 있다.
메모리 디바이스(306)는 제어기(345)에 결합된 단조 카운터(monotonic counter)(360) 및 제어기(345)에 결합된 물리적 복제 불가능한 기능(physical unclonable function: PUF) 컴포넌트(362)를 포함할 수 있다. 단조 카운터(360)는 제어기(304)로부터 보안 명령이 메모리 디바이스(306)에 의해 수신될 때마다 단조 증가 계수(monotonically increasing count: MTC)를 증가시킬 수 있다. 일부 예에서, 단조 카운터(360)는 메모리 디바이스(306)의 재설정의 각각의 전력 사이클에 대해 MTC를 증분시킬 수 있다. MTC는 보안 명령의 신선도를 결정하기 위해 보안 명령에 임베디드된 대응하는 신선도 표시기와 비교될 수 있는 신선도 표시기일 수 있다. 이러한 것은 재전송의 가능성을 예방(예를 들어, 제거)할 수 있다.
PUF는 온도, 잡음, 신호 속도, 구조적 특성 등과 같은 메모리 디바이스(306)의 물리적 현상 및/또는 물리적 특성에 기초할 수 있다. PUF 컴포넌트(362)는 예를 들어 난수를 생성할 수 있다. 일부 예에서, PUF 컴포넌트(362)에 의해 생성된 PUF는 암호화 작업을 위해 HMAC 컴포넌트(352)에 의해 사용될 수 있는 비밀 키(333)와 같은 비밀 키를 생성하도록 사용될 수 있다.
예를 들어, 비밀 키는 PUF일 수 있다. 일부 예에서, 제어기(345)는 멀티플렉서(339) 및 디멀티플렉서(350)를 통해 PUF 및 MTC를 SHA 컴포넌트(354)로 전송할 수 있고, 그래서, SHA 컴포넌트(354)는 MTC로 PUF를 해싱하는 것에 의해 비밀 키를 생성할 수 있다(예를 들어, 비밀 키 = HASH(PUF | MTC)). 대안적으로, 제어기(345)는 제어기(304)로부터 SHA 컴포넌트(354)로 PUF, MTC 및 데이터를 전송할 수 있으며, 그래서, SHA 컴포넌트(354)는 MTC 및 데이터로 PUF를 해싱하는 것에 의해 비밀 키를 생성할 수 있다(예를 들어, 비밀 키 = HASH(PUF | MTC | 데이터)).
I/O(322)는 다른 프로토콜 중에서 SPI 프로토콜 또는 ONFI 프로토콜과 같은 특정 프로토콜에 따라서 제어기(304)로부터 명령 인터페이스(342)로 명령을 라우팅할 수 있다. 명령 인터페이스(342)는 비보안 명령을 수신할 수 있으며, 명령이 정확한지의 여부를 결정하기 위해 명령을 평가할 수 있다. 예를 들어, 명령 인터페이스(342)는 예상된 연산 코드 및 예상된 명령 파라미터를 명령이 포함하는지의 여부를 결정하는 것에 의해 명령이 정확한지의 여부를 결정할 수 있다. 명령이 정확하다는 결정에 응답하여, 명령 인터페이스(342)는 데이터를 라우팅하기 위해 데이터 경로(312) 및 I/O(322)를 활성화하도록 제어 신호를 전송할 수 있다. 명령 인터페이스(342)는 명령을 실행하기 위해 제어기(345)를 또한 활성화할 수 있다.
비보안 기록 명령의 경우에, 데이터 경로(312) 및 I/O(322)를 활성화하는 것은 제어기(304)로부터 I/O(322) 및 데이터 경로(312)를 통해 버퍼(311)로 비보안 기록 명령에 대응하는 데이터를 라우팅한다. 비보안 판독 명령의 경우에, 데이터 경로(312) 및 I/O(322)를 활성화하는 것은 버퍼(311)로부터 데이터 경로(312) 및 I/O(322)를 통해 제어기(304)로 비보안 판독 명령에 대응하는 데이터를 라우팅한다.
도 4는 본 개시내용의 다수의 실시형태에 따른 보안 명령(470)을 도시한다. 명령(470)은 연산 코드(예를 들어, 16 진수 코드 0x9B)를 저장할 수 있는 연산 코드(Opcode) 필드(471)를 포함할 수 있다. 명령(470)은 명령 유형으로서 서브-연산 코드를 저장할 수 있는 명령 유형(CmdType) 필드(472)를 포함할 수 있다. 명령(470)은 MTC 또는 NONCE(예를 들어, 한 번만 사용되는 임의의 숫자)와 같은 명령의 신선도를 저장할 수 있는 신선도 필드(474)를 포함할 수 있는 명령 인자 필드(473)를 포함할 수 있다. 명령 인자 필드(473)는 또한 명령의 파라미터를 저장할 수 있는 명령 파라미터 필드(475), 및 명령의 서명을 저장할 수 있는 명령 서명 필드를 포함할 수 있다. 명령 페이로드(477)는 예를 들어 연산 코드, 서브-연산 코드, 신선도, 및 파라미터를 포함할 수 있다.
명령 인터페이스(342)는 제어기(304)로부터 보안 명령(470)을 수신할 수 있다. 명령 인터페이스(342)는 연산 코드가 정확하다는 결정에 응답하여 제어기(345)를 활성화할 수 있다. 이어서, 제어기(345)는 명령(470)을 인증할 수 있다. 예를 들어, 제어기(345)는 서브-연산 코드, 페이로드(477)에서의 바이트 수, 및 신선도가 정확한지의 여부를 결정할 수 있다. 이들 중 하나라도 정확하지 않으면, 제어기(345)는 명령을 중단하고, 명령 인터페이스(342) 및 I/O(322)를 통해 제어기(304)에 오류 메시지를 전송할 수 있다. 제어기(345)는 예를 들어 명령(470)에 있는 MTC를 단조 카운터(360)로부터의 MTC와 비교하는 것에 의해 신선도를 결정할 수 있다. 서브-연산 코드, 페이로드(477)에서의 바이트의 수, 및 정확한 신선도에 응답하여, 제어기는 명령(470)에 있는 서명을 검증할 수 있다.
일부 예에서, 제어기(345)는 서명을 암호화 컴포넌트(314)에 의해 계산된 로컬 암호화 서명과 비교하는 것에 의해 서명을 검증할 수 있다. 예를 들어, 암호화 컴포넌트(314)는 페이로드(477)의 MAC 및 비밀 키(333)와 같은 비밀 키(K)로서 로컬 서명을 계산할 수 있다. 예를 들어, 페이로드(477)는 제어기(345)로부터 멀티플렉서(339) 및 디멀티플렉서(350)를 통해 암호화 컴포넌트(314)로 전송될 수 있다.
암호화 컴포넌트(314)는 버스(378)를 통해 제어기(345)로 로컬 서명을 전송할 수 있다. 제어기(345)는 로컬 서명과 일치하는 명령(470)에 있는 서명에 응답하여 명령(470)을 실행하거나, 또는 로컬 서명과 일치하지 않는 명령(470)에 있는 서명에 응답하여 명령(470)을 중단할 수 있다.
일부 예에서, 로컬 서명은 페이로드(477) 및 비밀 키(K)로부터 HMAC 컴포넌트(352)에 의해 계산된 HMAC(예를 들어, HMAC(payload, K)로서)일 수 있다. 예를 들어, 제어기(345)는 HMAC 계산을 요청하는 제어 신호를 제어 논리(356)로 전송할 수 있다. 제어기(345)는 또한 멀티플렉서(339)로부터의 출력을 위해 제어기(345)로부터의 입력을 멀티플렉서(339)가 선택하게 하는 제어 신호를 멀티플렉서(339)로 전송할 수 있어서, 멀티플렉서(339)는 페이로드(477)를 디멀티플렉서(350)로 출력할 수 있다. 제어 논리(356)는 페이로드(477)를 HMAC 컴포넌트(352)로 디멀티플렉서(350)가 향하게 하는 제어 신호를 디멀티플렉서(350)에 전송할 수 있다. 제어기(345)는 제어 신호를 제어 논리(356)로 전송할 수 있고, 제어 논리(356)는 제어 신호를 수신하는 제어 논리(356)에 응답하여 HMAC 컴포넌트(352)가 로컬 서명을 계산하게 할 수 있다. 제어 논리(356)는 버스(378)를 통해 제어기(345)로 로컬 서명을 전송할 수 있다.
일부 예에서, 로컬 서명은 SHA 컴포넌트(354)와 함께 HMAC 컴포넌트(352)를 사용하는 것에 의해 계산될 수 있다. 예를 들어, HMAC 컴포넌트(352)는 XORing K 및 ipad(예를 들어, K XOR ipad)에 의한 것과 같은 내부 패딩(ipad)과 비밀 키(K)를 결합할 수 있다. HMAC 컴포넌트(352)는 (K XOR ipad) || payload를 생성하기 위해 XORing의 결과를 페이로드와 결합할 수 있다. 이어서, SHA 컴포넌트(354)는 HASH[(K XOR ipad) || payload]로서 (K XOR ipad) || payload의 암호화 HASH를 계산할 수 있다. 이어서, HMAC 컴포넌트(352)는 외부 패딩(opad)과 XOR K를 결합할 수 있고, (K XOR opad) || HASH[(K XOR ipad) || payload]를 생성하기 위해 그 XOR의 결과를 HASH [(K XOR ipad) || payload]와 결합할 수 있다. 이어서, SHA 컴포넌트(354)는 로컬 서명일 수 있는 HASH[(K XOR opad) || HASH[(K XOR ipad) || payload]]로서 (K XOR opad) || HASH[(K XOR ipad) || payload]의 암호화 HASH를 계산할 수 있다. 이 예에서, SHA 컴포넌트(354)가 두 번 사용된다는 점에 유의한다.
일부 예에서, 암호화 작업은 제어기(304)로부터의 명령에 응답하여 암호화 컴포넌트(314)에 의해 제어기(304)로부터의 비보안 사용자 데이터에 대해 수행될 수 있다. 예를 들어, 암호화 컴포넌트(314)는 제어기(304)로부터의 MAC 명령에 응답하여 제어기(304)로부터 수신된 사용자 데이터의 MAC 또는 키(예를 들어, MAC(사용자 데이터, 키)) 또는 제어기(304)로부터의 HASH 명령에 응답하여 제어기(304)로부터 수신된 사용자 데이터의 HASH를 계산할 수 있다. 이어서, 계산된 MAC 또는 HASH는 제어기(304)로 반환될 수 있다.
일부 예에서, 명령(예를 들어, MAC 또는 HASH 명령)은 제어기(304)로부터 명령 인터페이스(342)에서 수신될 수 있고, 명령 인터페이스(342)는 제어기(345)를 활성화할 수 있다. 제어기(345)는 제어 신호를 통해 I/O(322) 및 데이터 경로(312)를 활성화될 수 있어서, 명령에 대응하는, 데이터 구조(225)와 같은 데이터 구조는 I/O(322) 및 데이터 경로(312)를 통해 제어기(304)로부터 버퍼(311)로 전송될 수 있다.
제어기(345)는 제어 신호를 통해 버퍼(311) 및 데이터 경로(312)를 활성화할 수 있어서, 버퍼(311)에 있는 데이터 구조에서의 사용자 데이터는 버퍼(311)로부터 데이터 버스(341)에 결합된 멀티플렉서(339)의 입력으로 전송될 수 있다. 제어기(345)는 디멀티플렉서(350)로의 출력을 위해 멀티플렉서(339)가 사용자 데이터를 선택하게 할 수 있다.
제어기(345)는 (예를 들어, 제어기(354)와 제어 논리(356) 사이의 "핸드 셰이크" 동작을 통해) 제어 논리(356)를 활성화할 수 있다. 활성화된 제어 논리(356)는 HMAC 컴포넌트(352)를 활성화할 수 있고, 디멀티플렉서(350)가 사용자 데이터를 HMAC 컴포넌트(352)로 향하게 할 수 있다. 제어기(304)가 키를 제공하는 예에서, 키는 명령과 함께 제어기(345)로 전송될 수 있으며, 제어기(345)는 버스(378)를 통해 제어 논리(356)로 키를 전송할 수 있다.
도 2a에서의 데이터 구조(225)에 있는 사용자 데이터가 안전할 때, 데이터 구조(225)는 이전에 설명된 바와 같이 인증되는 보안 기록 명령에 응답하여 데이터 버퍼(311)에 기록될 수 있다. 예를 들어, 제어기(345)는 데이터 구조(225)가 I/O(322) 및 데이터 경로(312)를 통해 데이터 버퍼(311)로 전송될 수 있도록 기록 명령을 인증하는 것에 응답하여 I/O(322) 및 데이터 경로(312)를 활성화할 수 있다.
제어기(345)는 제어 신호를 통해, 버퍼(311), 데이터 경로(312), 데이터 선택기(337), 및 ECC 컴포넌트(310)를 활성화할 수 있다. 이어서, 데이터 구조(225)의 각각의 프레임(Frame 1 내지 Frame 4)은 버퍼(311)로부터 데이터 선택기(337)로 전송될 수 있어서, 데이터 선택기(337)는 각각의 사용자 데이터(USER1 내지 USER4)를 선택하고, 각각의 사용자 데이터(USER1 내지 USER4)를 ECC 컴포넌트(310)로 전송할 수 있다. ECC 컴포넌트(310)는 각각의 사용자 데이터(USER1 내지 USER4)로부터 각각의 ECC'1 내지 ECC'4를 계산할 수 있다.
ECC 컴포넌트(310)는 각각의 ECC'1 내지 ECC'4를 버퍼(311)로 다시 전송할 수 있어서, 각각의 ECC'1 내지 ECC'4는 각각의 예비 필드(229-1 내지 229-4)에 기록될 수 있다. 예를 들어, 각각의 예비 데이터(SPARE1 내지 SPARE4)(예를 들어, 모두 1 또는 0의 데이터 패턴을 갖는)는 (예를 들어, 데이터 구조(225')를 생성하기 위해) 각각의 ECC'1 내지 ECC'4와 중복 기록될 수 있다. 데이터 구조(225')는 제어 신호를 통해 판독/기록 회로(335)를 활성화하는 제어기(345)에 응답하여 판독/기록 회로(335)에 의해 버퍼(311)로부터 보안 파티션(317) 내로 기록될 수 있다.
보안 데이터 구조(225')와 같은 보안 데이터 구조는 전술한 바와 같이 인증되는, 제어기(304)로부터의 보안 판독 명령에 응답하여 파티션(317)으로부터 판독될 수 있다. 제어기(345)는 판독/기록 회로(335)가 데이터 버퍼(311) 내로의 데이터 구조를 판독할 수 있도록 판독 명령을 인증하는 것에 응답하여 판독/기록 회로(335)를 활성화할 수 있다.
제어기(345)는 데이터 구조가 버퍼(311)로부터 제어기(304)로 라우팅될 수 있도록 버퍼(311), 데이터 경로(312), 및 I/O(322)를 활성화할 수 있다. 일부 예에서, ECC 컴포넌트(308)는 ECC1, ECC2, ECC3, 및 ECC4와 같은 각각의 ECC 데이터로 USER1, USER2, USER3, 및 USER4(도 2b)와 같은 사용자 데이터를 정정할 수 있다.
일부 예에서, 메모리 디바이스(306)는 메모리 디바이스(306)가 파워 업 또는 재설정될 때마다 보안 파티션(317)에 있는 사용자 데이터가 안전한지의 여부를 결정할 수 있다. 예를 들어, 제어기(304)는 메모리 시스템(302)이 파워 업 또는 재설정될 때마다 메모리 디바이스(306)로 보안 명령을 전송할 수 있으며, 이는 파티션(317)에 있는 사용자 데이터가 안전한지의 여부를 메모리 디바이스(306)가 결정하게 할 수 있다.
메모리 디바이스(306)는 (예를 들어, 메모리 디바이스(306)가 마지막으로 파워 다운된 이후에) 사용자 데이터가 변경되었는지의 여부를 결정하는 것에 의해 사용자 데이터가 안전한지의 여부를 결정할 수 있다. 이러한 것은 보안 파티션(317)에 있는 사용자 데이터에 대한 암호화 측정값을 계산하고 암호화 측정값을 황금 측정값(334)과 비교하는 것에 의해 달성될 수 있다.
일부 예에서, 암호화 측정은 파티션(317)에 있는 모든 사용자 데이터의 HMAC일 수 있다. HMAC는 로컬 서명과 함께 이전에 설명된 HMAC(예를 들어, HMAC(사용자 데이터, K))와 유사할 수 있다. 예를 들어, 암호화 측정값은 사용자 데이터가 페이로드인 SHA 컴포넌트(354)와 함께 HMAC 컴포넌트(352)에 의해 계산된 로컬 서명 HASH일 수 있다.
보안 명령은 전술한 바와 같이 제어기(345)에 의해 인증될 수 있다. 제어기(345)는 파티션(317)에 대한 암호화 측정값을 결정하기 위해 인증된 명령을 실행할 수 있다. 제어기(345)는 파티션(317)으로부터 버퍼(311) 내로의 데이터 구조(325'-1 내지 325'-M)를 하나씩 판독하기 위해 판독/기록 회로(335)를 활성화할 수 있다. 제어기(345)는, 제어 신호를 통해, 버퍼(311), 데이터 경로(312), 데이터 선택기(337) 및 ECC 컴포넌트(310)를 활성화할 수 있다. ECC 컴포넌트(310)는 ECC 컴포넌트(310)에 의해 계산된 각각의 ECC 데이터로 각각의 데이터 구조(325'-1 내지 325'-M)에 있는 각각의 사용자 데이터를 정정할 수 있다. ECC 컴포넌트(310)는 정정된 사용자 데이터를 암호화 컴포넌트(314)로 전송할 수 있으며, 암호화 컴포넌트(314)는 정정된 사용자 데이터의 암호화 측정값을 계산할 수 있다.
제어기(345)는, ECC 컴포넌트(310)가 정정된 사용자 데이터를 디멀티플렉서(350)로 전송할 수 있도록 ECC 컴포넌트(310)에 결합된 입력을 멀티플렉서(339)가 선택하게 할 수 있는 제어 신호를 멀티플렉서(339)로 전송할 수 있다. 일부 예에서, 제어기(345)는 "핸드 셰이크" 동작을 통해 제어 논리(356)를 활성화할 수 있으며, 제어 논리(356)는 정정된 사용자 데이터를 디멀티플렉서(350)가 HMAC 컴포넌트(352)로 보내도록 하는 신호를 디멀티플렉서(350)로 전송할 수 있다. 이어서, HMAC 컴포넌트(352)(예를 들어, SHA 컴포넌트(354)와 함께)는 정정된 사용자 데이터로부터 암호화 측정값을 계산한다.
암호화 측정값은 황금 측정값(334)과 비교될 수 있다. 암호화 측정값이 황금 측정값(334)과 같으면, 파티션에 있는 사용자 데이터는 변경되지 않고, 그러므로 안전하다. 그러나, 암호화 측정값이 황금 측정값(334)과 같지 않으면, 파티션에 있는 사용자 데이터는 변경되었으며(예를 들어, 해커 공격으로 인해), 그러므로 안전하지 않은 것으로 간주된다.
예를 들어, 여기에서, 각각의 데이터 구조(325'-1 내지 325'-M)가 데이터 구조(225')로서 구성된다. 각각의 프레임(Frame 1 내지 Frame 4)이 버퍼(311)로부터 데이터 선택기(337)로 전송될 수 있어서, 데이터 선택기(337)는 각각의 사용자 데이터(USER1 내지 USER4) 및 각각의 ECC 데이터(ECC'1 내지 ECC'4)를 선택하고, ECC 컴포넌트(310)로 USER1 내지 USER4 및 각각의 ECC 데이터(ECC'1 내지 ECC'4)를 전송할 수 있다. ECC 컴포넌트(310)는 각각의 ECC'1 내지 ECC'4로 각각의 사용자 데이터(USER1 내지 USER4)를 정정하고, 정정된 사용자 데이터(USER1 내지 USER4)를 암호화 컴포넌트(314)로 전송할 수 있다. 이러한 프로세스는 각각의 데이터 구조(325'-1 내지 325'-M)에 대해 반복될 수 있다.
일부 예에서, 황금 측정값(334)은 암호화 측정값에 대해, 그러나 사용자 데이터가 처음에 보안 파티션(317)에 저장되고 판독, 기록 또는 소거 동작과 같은 어떠한 동작도 파티션(317)에서 수행되지 않았을 때 파티션(317)에 있는 사용자 데이터(예를 들어, 초기 사용자 데이터)의 초기 상태에 대해 이전에 설명된 바와 같이 계산될 수 있다. 예를 들어, 황금 측정값(334)은 HMAC일 수 있다. HMAC는 로컬 서명과 함께 이전에 설명된 HMAC(예를 들어, HMAC(초기 사용자 데이터, K))와 유사할 수 있다. 예를 들어, 황금 측정값(334)은 초기 사용자 데이터가 페이로드인 SHA 컴포넌트(354)와 함께 HMAC 컴포넌트(352)에 의해 계산된 로컬 서명 HASH일 수 있다.
데이터 구조의 프레임에 있는 사용자 데이터에서의 오류가 ECC 컴포넌트(310)에 의해 정정될 수 없을 때, 내부 제어기(345)는 판독/기록 회로(335)가 데이터 구조를 다시 판독하게 할 수 있어서, ECC 컴포넌트(310)는 재 판독 데이터 구조의 각각의 프레임에 있는 사용자 데이터를 정정할 수 있다.
일부 예에서, 제어기(304)는 ECC 컴포넌트(310)가 데이터 구조의 프레임에 있는 사용자 데이터를 정정할 수 없다는 것에 응답하여 버퍼(311)에 있는 데이터 구조를 판독할 수 있다. 예를 들어, ECC 컴포넌트(308)는 ECC1, ECC2, ECC3 및 ECC4와 같은 ECC 컴포넌트(308)에 의해 계산된 대응하는 ECC 데이터로, USER1, USER2, USER3 및 USER 4와 같은 데이터 구조의 각각의 프레임에 있는 데이터를 정정할 수 있다. 이어서, 제어기(304)는 정정된 사용자 데이터(예를 들어, 외부적으로 정정된 사용자 데이터)를 갖는 데이터 구조를 데이터 버퍼(311)로 전송할 수 있다. 이어서, 제어기(345)는 데이터 선택기(337)가 외부적으로 정정된 사용자 데이터를 선택하게 할 수 있다. 제어기(345)가 일부 예에서 ECC 컴포넌트(310)를 바이패스 모드에 놓아서, 데이터 선택기(337)는 ECC 컴포넌트(310)에 의한 정정없이 암호화 컴포넌트(314)에 대한 외부적으로 정정된 사용자 데이터를 선택할 수 있다. 이러한 것은 예를 들어 암호화 측정값의 계산 동안 행해질 수 있다.
일부 예에서, 제어기(304)는 오직 파티션(317)에 있는 데이터 중 임의의 것이 변경될 때에만 파티션(317)에 있는 데이터를 정정하는데 사용되었을 수 있다. 대안적으로, 파티션(317)에 있는 데이터 중 임의의 것이 변경되었을 때 복원 절차가 사용될 수 있다. 파티션(317)에 있는 데이터는 해커 공격 또는 메모리 디바이스(306)의 동작에서의 기술적 실패의 결과로서 변경될 수 있다. 복원 절차는 또한 황금 측정값(344)과 일치하지 않는 암호화 측정값에 응답하여 수행될 수 있다. 복원 절차는 예를 들어 제어기(345)가 파티션(317)을 파티션(317')으로 대체하는 것을 수반한다.
비밀 키(333)를 수반하는 다양한 이전 예에서, 비밀 키(333)가 직접적으로 사용되었다. 그러나, 일부 예에서, 세션 키는 비밀 키(333) 대신에 사용될 수 있다. 예를 들어, 새로운(예를 들어, 상이한) 세션 키는 메모리 시스템(302)의 각각의 파워 업(예를 들어, 재설정)에서 시작할 수 있는 메모리 시스템(302)의 각각의 전력 사이클 동안 사용될 수 있다. 예를 들어, 세션 키는 암호화 컴포넌트(314)에 의해 선행의 전력 사이클의 종료시에 전력 사이클을 위해 계산될 수 있다. 예를 들어, 세션 키는 비밀 키(333)의 MAC 및 선행의 전력 사이클의 종료시에 MTC일 수 있다(예를 들어, 세션 키 = MAC(MTC, 비밀 키)). 대안적으로, 예를 들어, 세션 키 = HMAC(MTC, 비밀 키)일 수 있다.
메모리 디바이스(306)는 메모리 디바이스 식별자(ID)를 가질 수 있다. 일부 예에서, 제어기(304)로부터의 메모리 디바이스 인증 명령에 응답하여, 제어기(345)는 ID를 암호화 컴포넌트(314)로 전송할 수 있다. 암호화 컴포넌트(314)는 암호 키(333)의 MAC 및 ID(예를 들어, 서명 ID = MAC(비밀 키, ID))로서 암호화 코드(예를 들어, 서명 ID)를 계산할 수 있다. 암호화 컴포넌트(314)는 서명 ID를 제어기(345)에 반환할 수 있고, 제어기(345)는 서명 ID를 제어기(304)로 전송할 수 있다. 제어기(304)는 서명 ID를 메모리 디바이스(306)에 대한 정확한 서명 ID와 비교할 수 있으며, 메모리 디바이스가 인증되었는지를 상기 비교로부터 결정할 수 있다. 서명 ID가 일치하면, 메모리 디바이스(306)는 인증된다. 그렇지 않으면, 메모리 디바이스(306)는 인증되지 않고 예를 들어 복제품일 수 있다.
도 5는 309의 어레이(109)(예를 들어, NAND 어레이)의 일부일 수 있는 비휘발성 메모리 셀의 블록(580)(예를 들어, NAND 블록)의 개략도이다. 일부 예에서, 블록(580)은 비보안 파티션(116 또는 316) 또는 보안 파티션(117 또는 317)에 대응할 수 있다.
블록(580)은 직렬 결합된 메모리 셀의 그룹(예를 들어, NAND 스트링(581-1 내지 581-I))을 포함한다. 각각의 NAND 스트링(581-1 내지 581-I)은 선택 트랜지스터(583)와 선택 트랜지스터(584) 사이에 직렬로 결합된 메모리 셀(582-1 내지 582-J)을 포함할 수 있다. NAND 스트링(581-1 내지 581-I)은 각각 선택 트랜지스터(584)의 게이트에 공통으로 결합된 선택 라인(586)에 인가되는 활성화 신호에 응답하여 각각의 선택 트랜지스터(584)에 의해 데이터 라인(585-1 내지 585-I)(예를 들어, 비트 라인)에 선택적으로 결합될 수 있다. NAND 스트링(581-1 내지 581-I)은 선택 트랜지스터(583)의 게이트에 공통으로 결합된 선택 라인(588)에 인가되는 활성화 신호에 응답하여 각각의 선택 트랜지스터(583)에 의해 공통 소스(587)에 선택적으로 결합될 수 있다.
액세스 라인(590-1 내지 590-J)(예를 들어, 워드 라인)은 각각 메모리 셀(582-1 내지 582-J)의 제어 게이트에 공통으로 결합될 수 있다. 예를 들어, NAND 스트링(581-1 내지 581-N)에서의 공통 위치에 있는 메모리 셀(582)의 그룹은 각각의 액세스 라인(590)에 공통으로 결합될 수 있다. 일부 예에서, 액세스 라인에 공통으로 결합된 메모리 셀의 그룹은 메모리 셀의 페이지이다. 예를 들어, 액세스 라인(590-1 내지 590-J)에 각각 공통으로 결합된 I개의 메모리 셀의 각각의 그룹은 메모리 셀의 각각의 페이지일 수 있다. 이와 같이, 블록(580)에서 각각 I개의 메모리 셀을 갖는 J개의 페이지의 메모리 셀이 있을 수 있SP다. 그러나, 본 개시내용은 이렇게 제한되지 않으며, 액세스 라인에 공통으로 결합된 메모리 셀의 다양한 그룹화는 페이지에 대응할 수 있다. 일부 예에서, 데이터 구조(225, 225', 또는 325')와 같은 데이터 구조가 페이지에 저장될 수 있다.
블록(580)이 비보안 파티션의 보안 부분인지의 여부에 관계없이, 블록(580)의 모든 메모리 셀(582)이 소거 프로세스 동안 공통으로 소거될 수 있다는 점에 유의한다. 블록(580)이 보안 파티션의 부분일 때, 블록(580)은 전술한 바와 같이 인증될 수 있는, 제어기(304)로부터 수신된 보안 소거 명령에 응답하여 소거될 수 있다. 블록(580)이 비보안 파티션의 일부일 때, 블록(580)은 제어기(304)로부터 수신된 비보안 소거에 응답하여 소거될 수 있다. 일부 예에서, 메모리 셀(582)은 적시에 기록되거나 페이지를 판독할 수 있다.
각각의 메모리 셀(582)은 특히 플로팅 게이트 또는 전하 트래핑 층과 같은 전하 저장 구조(591) 및 제어 게이트(592)를 포함할 수 있다. 전하 저장 구조(378)의 프로그래밍을 통한 메모리 셀(358)의 Vt에서의 변화는 각각의 셀의 데이터 상태를 결정할 수 있다.
메모리 셀(582)은 셀당 단일 비트를 저장할 수 있는 SLC, 또는 셀당 2 비트, 3 레벨 셀(TLC)와 같은 셀당 3 비트, 쿼드 레벨 셀(QLC)과 같은 셀당 4 비트 등과 같은 셀당 다중 비트를 저장할 수 있는 MLC일 수 있다. 파티션(117 및 317)은 SLC의 블록만을 포함할 수 있는데 반하여, 파티션(116 또는 316)은 SLC 및/또는 MLC의 블록을 포함할 수 있다는 점에 유의한다.
일부 예에서, 블록(580)은 3차원 NAND 메모리 어레이와 같은 3차원(3D) 메모리 어레이로서 지칭될 수 있는 적층형 메모리 어레이의 일부일 수 있다. 적층형 메모리 어레이에서, NAND 스트링(581)은 반도체 구조(예를 들어, 수직 반도체 필라)에 인접할 수 있고, NAND 스트링(581)에서의 메모리 셀(582)은 상이한 레벨(예를 들어, 수직 레벨)에 있을 수 있다. 메모리 셀의 페이지와 같은 액세스 라인(590)에 공통으로 결합된 메모리 셀(582)은 예를 들어 공통 레벨에 있을 수 있고, 때때로 메모리 셀의 계층으로서 지칭되는 메모리 셀의 레벨을 형성할 수 있다.
본 개시내용의 이전의 상세한 설명에서, 본 개시내용의 일부를 형성하고 본 개시내용의 다수의 실시형태가 어떻게 실시될 수 있는지를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시형태는 당업자가 본 개시내용의 실시형태를 실시할 수 있도록 충분히 상세하게 설명되며, 본 개시내용의 범위를 벗어남이 없이 다른 실시형태가 이용될 수 있고 그 프로세스, 전기적 및/또는 구조적 변경이 이루어질 수 있다는 것을 이해해야 한다.
본 명세서에서 사용된 바와 같이, 어떤 것의 "수" 또는 "양"은 이러한 것 중 하나 이상을 지칭할 수 있다. 예를 들어, 메모리 셀의 수 또는 양은 하나 이상의 메모리 셀을 지칭할 수 있다. 어떤 것의 "복수"는 둘 이상을 의미한다. 본 명세서에서, 사용되는 바와 같이, 동시에 수행되는 다수의 작용은 특정 기간에 걸쳐서 적어도 부분적으로 중첩되는 작용을 의미한다. 본 명세서에서 사용되는 바와 같이, "결합된"이라는 용어는 전기적으로 결합, 직접 결합 및/또는 개입 요소없이(예를 들어, 직접적인 물리적 접촉에 의해) 직접 연결, 간접적으로 결합 및/또는 개입 요소를 사용하여 연결, 또는 무선으로 결합되는 것을 포함할 수 있다. 결합된 용어는 (예를 들어, 원인 및 결과 관계에서와 같이) 서로 협력하거나 상호 작용하는 2개 이상의 요소를 더 포함할 수 있다.
비록 특정 실시형태가 본 명세서에서 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하기 위해 계산된 배열이 도시된 특정 실시형태를 대체할 수 있다는 것을 이해할 것이다. 본 개시내용은 본 개시내용의 다수의 실시형태의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 만들어졌다는 것이 이해되어야 한다. 전술한 실시형태 및 본 명세서에서 구체적으로 설명되지 않은 다른 실시형태의 조합은 상기 설명을 검토할 때 당업자에게 자명할 것이다. 본 개시내용의 다수의 실시형태의 범위는 상기 구조 및 방법이 사용되는 다른 적용을 포함한다. 그러므로, 본 개시내용의 다수의 실시형태의 범위는 첨부된 청구범위를 참조하여 이러한 청구범위가 부여하는 등가물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징은 본 개시내용을 간소화하는 목적을 위해 단일 실시형태에서 함께 그룹화된다. 개시내용의 이러한 방법은 본 개시내용의 개시된 실시형태가 각각의 청구항에서 명시적으로 언급된 것보다 더 많은 특징을 사용해야만 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 다음의 청구범위가 반영하는 바와 같이, 발명의 요지는 단일의 개시된 실시형태의 모든 특징보다 적다. 그러므로, 다음의 청구범위는 상세한 설명에 통합되며, 각각의 청구항은 별도의 실시형태로서 그 자체로 존재한다.

Claims (23)

  1. 장치로서,
    제1 오류 정정 코드 컴포넌트를 포함하는 제어기; 및
    상기 제어기에 결합되는 메모리 디바이스
    를 포함하되, 상기 메모리 디바이스는,
    메모리 셀의 어레이;
    상기 어레이에 결합되고, 상기 어레이로부터의 데이터를 정정하도록 구성되는 제2 오류 정정 코드 컴포넌트; 및
    상기 제2 오류 정정 코드 컴포넌트에 결합되고, 상기 제2 오류 정정 코드 컴포넌트로부터 정정된 데이터를 수신하도록 구성되는 암호화 컴포넌트를 포함하는, 장치.
  2. 제1항에 있어서,
    상기 제1 오류 정정 코드 컴포넌트는 상기 제1 오류 정정 코드를 계산하고, 상기 제1 오류 정정 코드를 사용하여 상기 어레이로부터의 데이터를 정정하도록 구성되며; 그리고
    상기 제2 오류 정정 코드 컴포넌트는 제2 오류 정정 코드를 계산하고 상기 제2 오류 정정 코드를 사용하여 상기 어레이로부터의 데이터를 정정하도록 구성되는, 장치.
  3. 제1항에 있어서,
    상기 암호화 컴포넌트는 상기 수신된 데이터로부터 제1 암호화 코드를 계산하도록 구성되며; 그리고
    상기 메모리 디바이스는 상기 어레이에 저장된 제2 암호화 코드와 상기 제1 암호화 코드를 비교하도록 구성되는, 장치.
  4. 제3항에 있어서, 상기 제1 및 제2 암호화 코드는 상기 어레이에 저장된 비밀 키에 기초하는, 장치.
  5. 제3항에 있어서, 상기 제1 및 제2 암호화 코드는 제1 및 제2 암호화 해시인, 장치.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제어기는 상기 메모리 디바이스 외부에 있는 외부 제어기이며, 메모리 인터페이스를 통해 상기 메모리 디바이스에, 그리고 호스트 인터페이스를 통해 호스트에 결합되며; 그리고
    상기 메모리 디바이스는 내부 제어기를 포함하는, 장치.
  7. 제6항에 있어서,
    상기 메모리 디바이스는 상기 내부 제어기에 결합된 단조 카운터를 포함하고; 그리고
    상기 내부 제어기는 명령의 신선도(freshness)를 결정하기 위해 제1 제어기로부터 수신된 명령에서의 단조 계수와 상기 단조 카운터로부터의 단조 계수를 비교하도록 구성되는, 장치.
  8. 제6항에 있어서, 상기 메모리 디바이스는 상기 내부 제어기에 결합된 물리적 복제 불가능한 기능 컴포넌트를 포함하는, 장치.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 암호화 컴포넌트는,
    해시 메시지 인증 코드 컴포넌트에 결합된 SHA 컴포넌트; 및
    상기 SHA 컴포넌트 및 상기 해시 메시지 인증 코드 컴포넌트에 결합된 제어 논리
    를 포함하는, 장치.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 암호화 컴포넌트는,
    상기 제2 오류 정정 코드 컴포넌트로 상기 데이터를 정정함이 없이 상기 제어기로부터 데이터를 수신하고; 그리고
    상기 데이터로부터 암호화 코드를 계산하도록 구성되는, 장치.
  11. 메모리 디바이스로서,
    보안 파티션에 대응하는 일부를 포함하는 메모리 셀의 어레이;
    상기 어레이에 결합되고, 데이터의 복수의 각각의 세그먼트를 포함하는 데이터 구조를 상기 보안 파티션으로부터 수신하도록 구성되는 버퍼로서, 상기 각각의 세그먼트는 각각의 사용자 데이터, 및 상기 메모리 디바이스의 외부에서 계산된 각각의 제1 오류 정정 코드 데이터를 포함하는, 상기 버퍼;
    상기 버퍼에 결합되는 오류 정정 코드 컴포넌트로서, 상기 버퍼에 있는 데이터 구조로부터 각각의 사용자 데이터를 수신하고, 상기 각각의 사용자 데이터로부터의 각각의 제2 오류 정정 코드 데이터를 계산하고 상기 데이터 구조의 각각의 세그먼트에 각각의 제2 오류 정정 코드 데이터를 더하도록 구성되는, 상기 오류 정정 코드 컴포넌트;
    상기 각각의 제2 오류 정정 코드 데이터가 상기 데이터 구조의 각각의 세그먼트에 더해진 후에, 상기 버퍼로부터 상기 보안 파티션으로 상기 데이터 구조를 기록하도록 구성되는 제어기; 및
    상기 제2 오류 정정 코드 컴포넌트에 결합되는 암호화 컴포넌트
    를 포함하되;
    상기 오류 정정 코드 컴포넌트는 상기 각각의 제2 오류 정정 코드 데이터를 사용하여 상기 각각의 사용자 데이터를 정정하고, 상기 암호화 컴포넌트로 상기 정정된 각각의 사용자 데이터를 전송하도록 구성되는, 메모리 디바이스.
  12. 제11항에 있어서, 상기 제어기는 제1 제어기이며, 상기 메모리 디바이스는 상기 제1 제어기에 결합된 명령 사용자 인터페이스를 더 포함하며, 상기 명령 사용자 인터페이스는 상기 메모리 디바이스 외부에 있는 제2 제어기로부터 명령을 수신하는 것에 응답하여 상기 제1 제어기를 활성화하도록 구성되는, 메모리 디바이스.
  13. 제12항에 있어서, 상기 제1 제어기는,
    상기 명령의 신선도를 결정하고;
    상기 명령이 신선하다는 결정에 응답하여 상기 암호화 컴포넌트가 서명을 계산하게 하고; 그리고
    상기 명령에 있는 서명과 상기 계산된 서명을 비교하는 것에 의해
    활성화되는 것에 응답하여 상기 명령을 인증하도록 구성되는, 메모리 디바이스.
  14. 제13항에 있어서, 상기 계산된 서명은 상기 어레이에 저장된 비밀 키 및 상기 제1 제어기로부터 상기 암호화 컴포넌트에서 수신된 명령의 페이로드에 기초한 해시 메시지 인증 코드인, 메모리 디바이스.
  15. 제13항에 있어서,
    상기 계산된 서명은 상기 제1 제어기로부터 상기 암호화 컴포넌트에서 수신된 명령의 키 및 페이로드에 기초한 해시 메시지 인증 코드이며; 그리고
    상기 키는 상기 어레이에 저장된 비밀 키 및 상기 메모리 디바이스의 단조 카운터의 단조 계수의 메시지 인증 코드인 세션 키인, 메모리 디바이스.
  16. 방법으로서,
    메모리 디바이스의 메모리 어레이로부터의 데이터로서, 사용자 데이터, 상기 사용자 데이터로부터 외부 제어기에 의해 계산된 제1 오류 정정 데이터, 및 상기 사용자 데이터로부터 상기 메모리 디바이스의 오류 정정 코드 컴포넌트에 의해 계산된 제2 오류 정정 데이터를 포함하는 상기 데이터를 판독하는 단계;
    상기 오류 정정 코드 컴포넌트에 의해, 상기 제2 오류 정정 데이터로 상기 사용자 데이터를 정정하는 단계;
    상기 오류 정정 코드 컴포넌트로부터 상기 메모리 디바이스의 암호화 컴포넌트로 상기 정정된 사용자 데이터를 전송하는 단계; 및
    상기 암호화 컴포넌트에 의해, 상기 정정된 사용자 데이터에 대한 암호화 작업을 수행하는 단계를 포함하는, 방법.
  17. 제16항에 있어서, 상기 제2 오류 정정 데이터로 상기 사용자 데이터를 정정하기 전에;
    상기 메모리 어레이로부터 상기 메모리 디바이스의 데이터 선택기로 상기 데이터를 전송하는 단계;
    상기 데이터 선택기에 의해, 상기 데이터로부터 상기 사용자 데이터 및 상기 제2 오류 정정 데이터를 선택하는 단계; 및
    상기 데이터 선택기로부터 상기 오류 정정 코드 컴포넌트로 상기 사용자 데이터 및 상기 제2 오류 정정 데이터를 전송하는 단계
    를 더 포함하는, 방법.
  18. 제16항에 있어서, 상기 암호화 컴포넌트에 의해, 상기 정정된 사용자 데이터에 대한 암호화 작업을 수행하는 단계는 상기 암호화 컴포넌트에 의해 상기 정정된 데이터로부터 암호화 측정값을 계산하는 단계를 포함하며, 상기 방법은
    상기 계산된 암호화 측정값을 상기 메모리 어레이에 저장된 황금 측정값과 비교하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서,
    상기 메모리 어레이로부터 상기 데이터를 판독하는 단계는 제1 논리 파티션에 대응하는 상기 메모리 어레이의 일부로부터 상기 데이터를 판독하는 단계를 포함하며; 그리고
    상기 방법은 상기 계산된 암호화 측정값이 상기 황금 측정값과 일치하지 않는다는 것에 응답하여, 데이터의 제1 논리 파티션을 데이터의 제2 논리 파티션으로 교체하는 단계를 더 포함하는, 방법.
  20. 제16항 내지 제18항 중 어느 한 항에 있어서, 상기 오류 정정 코드 컴포넌트가 상기 제2 오류 정정 데이터로 상기 사용자 데이터를 정정하는데 실패한 것에 응답하여,
    상기 메모리 디바이스의 내부 제어기에 의해, 상기 메모리 어레이로부터 상기 데이터를 판독하는 단계; 및
    상기 오류 정정 코드 컴포넌트에 의해, 재 판독된 데이터의 상기 제2 오류 정정 데이터로 상기 판독된 데이터의 사용자 데이터를 정정하는 단계
    를 더 포함하는, 방법.
  21. 제16항 내지 제18항 중 어느 한 항에 있어서, 상기 오류 정정 코드 컴포넌트가 상기 제2 오류 정정 데이터로 상기 사용자 데이터를 정정하는데 실패한 것에 응답하여,
    상기 외부 제어기에 의해, 상기 어레이로부터 데이터를 판독하는 단계; 및
    상기 외부 제어기에 의해, 상기 외부 제어기에 의해 판독된 데이터의 사용자 데이터를 상기 제1 오류 정정 데이터로 정정하는 단계
    를 더 포함하는, 방법.
  22. 제21항에 있어서, 상기 외부 제어기에 의해 정정된 사용자 데이터는 외부적으로 정정된 사용자 데이터이며, 상기 방법은
    상기 메모리 디바이스의 오류 정정 코드 컴포넌트에 의해, 상기 외부적으로 정정된 사용자 데이터를 정정함이 없이, 상기 암호화 컴포넌트로 상기 외부적으로 정정된 사용자 데이터를 전송하는 단계를 더 포함하는, 방법.
  23. 제16항 내지 제18항 중 어느 한 항에 있어서, 상기 암호화 컴포넌트에 의해, 상기 외부 제어기로부터 수신된 명령 및 상기 어레이에 저장된 암호화 키로부터 계산된 암호화 서명과 상기 명령의 암호화 서명을 비교하는 것에 의해 상기 명령의 암호화 서명을 검증하는 단계를 더 포함하는, 방법.
KR1020217026229A 2019-01-23 2019-10-30 암호화 컴포넌트를 갖는 메모리 디바이스 KR20210107148A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/255,142 US11514174B2 (en) 2019-01-23 2019-01-23 Memory devices with cryptographic components
US16/255,142 2019-01-23
PCT/US2019/058812 WO2020154006A1 (en) 2019-01-23 2019-10-30 Memory devices with cryptographic components

Publications (1)

Publication Number Publication Date
KR20210107148A true KR20210107148A (ko) 2021-08-31

Family

ID=71608361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217026229A KR20210107148A (ko) 2019-01-23 2019-10-30 암호화 컴포넌트를 갖는 메모리 디바이스

Country Status (7)

Country Link
US (2) US11514174B2 (ko)
EP (1) EP3915035A4 (ko)
JP (1) JP2022523294A (ko)
KR (1) KR20210107148A (ko)
CN (1) CN113348456A (ko)
TW (1) TWI738097B (ko)
WO (1) WO2020154006A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11514174B2 (en) * 2019-01-23 2022-11-29 Micron Technology, Inc. Memory devices with cryptographic components
US11237732B2 (en) * 2019-08-06 2022-02-01 Intel Corporation Method and apparatus to improve write bandwidth of a block-based multi-level cell nonvolatile memory
US11782610B2 (en) * 2020-01-30 2023-10-10 Seagate Technology Llc Write and compare only data storage
FR3118268B1 (fr) 2020-12-23 2024-01-12 St Microelectronics Sa Mémoire sécurisée

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995016238A1 (en) 1993-12-06 1995-06-15 Telequip Corporation Secure computer memory card
DE60212455T2 (de) 2002-01-18 2007-04-05 Mentor Graphics Corp., Wilsonville System und verfahren zum takten eines ip-core während einer fehlersuchoperation
JP2007527579A (ja) 2004-02-23 2007-09-27 レクサー・メディア・インコーポレーテッド セキュリティで保護されたコンパクト・フラッシュ
KR100743253B1 (ko) 2006-04-11 2007-07-27 엠텍비젼 주식회사 코드 데이터 에러 정정 방법 및 장치
US7774684B2 (en) 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
US8184812B2 (en) 2009-06-03 2012-05-22 Freescale Semiconductor, Inc. Secure computing device with monotonic counter and method therefor
JP5540969B2 (ja) 2009-09-11 2014-07-02 ソニー株式会社 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム
US8848477B2 (en) 2010-10-04 2014-09-30 Intrinsic Id B.V. Physical unclonable function with improved start-up behavior
JP2012252557A (ja) 2011-06-03 2012-12-20 Mega Chips Corp メモリコントローラ
US8943313B2 (en) 2011-07-19 2015-01-27 Elwha Llc Fine-grained security in federated data sets
TWI596486B (zh) 2011-11-04 2017-08-21 群聯電子股份有限公司 記憶體儲存裝置、記憶體控制器及資料串傳送與識別方法
US9405707B2 (en) * 2011-12-20 2016-08-02 Intel Corporation Secure replay protected storage
JP6267207B2 (ja) 2012-10-04 2018-01-24 イントリンシツク・イー・デー・ベー・ベー 物理的クローン不能関数として使用されるメモリから暗号化キーを生成するためのシステム
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9367391B2 (en) * 2013-03-15 2016-06-14 Micron Technology, Inc. Error correction operations in a memory device
JP2014191372A (ja) 2013-03-26 2014-10-06 Mega Chips Corp 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム
US9804979B2 (en) * 2014-12-29 2017-10-31 Sandisk Technologies Llc Ring bus architecture for use in a memory module
US9613714B1 (en) * 2016-01-19 2017-04-04 Ememory Technology Inc. One time programming memory cell and memory array for physically unclonable function technology and associated random code generating method
US10911229B2 (en) * 2016-08-04 2021-02-02 Macronix International Co., Ltd. Unchangeable physical unclonable function in non-volatile memory
US10469271B2 (en) 2016-08-04 2019-11-05 Macronix International Co., Ltd. Physical unclonable function for non-volatile memory
KR102557993B1 (ko) * 2018-10-02 2023-07-20 삼성전자주식회사 메모리 이용 효율을 향상한 보안 처리기를 포함하는 시스템 온 칩, 메모리 시스템 및 시스템 온 칩의 동작방법
US11514174B2 (en) * 2019-01-23 2022-11-29 Micron Technology, Inc. Memory devices with cryptographic components

Also Published As

Publication number Publication date
WO2020154006A1 (en) 2020-07-30
TWI738097B (zh) 2021-09-01
US20200233967A1 (en) 2020-07-23
TW202101215A (zh) 2021-01-01
EP3915035A4 (en) 2022-11-16
EP3915035A1 (en) 2021-12-01
US11868488B2 (en) 2024-01-09
US20230086754A1 (en) 2023-03-23
CN113348456A (zh) 2021-09-03
JP2022523294A (ja) 2022-04-22
US11514174B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
US11868488B2 (en) Memory devices with cryptographic components
US11755406B2 (en) Error identification in executed code
US11960632B2 (en) Data attestation in memory
US11683155B2 (en) Validating data stored in memory using cryptographic hashes
US11669643B2 (en) Block chain based validation of memory commands
US11228443B2 (en) Using memory as a block in a block chain
EP3948522A1 (en) Over-the-air update validation
US20220138114A1 (en) Using memory as a block in a block chain
US20240184668A1 (en) Managing status output
TW202403773A (zh) 半導體裝置及用以管理其之安全操作的系統與方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application