KR20210130240A - 암호화 해시를 사용하여 메모리에 저장된 데이터 검정 - Google Patents

암호화 해시를 사용하여 메모리에 저장된 데이터 검정 Download PDF

Info

Publication number
KR20210130240A
KR20210130240A KR1020217033011A KR20217033011A KR20210130240A KR 20210130240 A KR20210130240 A KR 20210130240A KR 1020217033011 A KR1020217033011 A KR 1020217033011A KR 20217033011 A KR20217033011 A KR 20217033011A KR 20210130240 A KR20210130240 A KR 20210130240A
Authority
KR
South Korea
Prior art keywords
segments
data stored
memory
segment
cryptographic hash
Prior art date
Application number
KR1020217033011A
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 KR20210130240A publication Critical patent/KR20210130240A/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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • 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/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/3263Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Abstract

본 개시는 암호화 해시를 사용하여 메모리에 저장된 데이터를 검정하기 위한 장치, 방법 및 시스템을 포함한다. 실시예는 메모리, 및 회로부를 포함하고, 회로부는 메모리를 복수의 세그먼트로 분할하고, 각각의 개별 세그먼트는 상이한 암호화 해시와 연관되고, 메모리에 파워를 공급하는 동안, 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하고, 메모리의 파워 공급 후, 복수의 세그먼트 중 제2 수의 세그먼트에 저장된 데이터, 해당 세그먼트와 연관된 암호화 해시를 사용하여 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하도록 구성된다.

Description

암호화 해시를 사용하여 메모리에 저장된 데이터 검정
본 개시는 전반적으로 반도체 메모리 및 방법에 관한 것으로, 보다 구체적으로는 암호화 해시를 사용하여 메모리에 저장된 데이터 검정에 관한 것이다.
메모리 디바이스는 전형적으로 컴퓨터 또는 다른 전자 디바이스에서 내부, 반도체, 집적 회로 및/또는 외부 착탈 가능한 디바이스로 제공된다. 휘발성 및 비휘발성 메모리를 포함하는 다양한 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지하기 위해 파워가 필요할 수 있고, RAM(Random-Access Memory), DRAM(Dynamic Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory) 등을 포함할 수 있다. 비휘발성 메모리는 파워가 공급되지 않을 때 저장된 데이터를 보유하여 영구 데이터를 제공할 수 있고, 다른 것들 중에서 NAND 플래시 메모리, NOR 플래시 메모리, ROM(read only memory), 저항성 가변 메모리 예컨대, PCRAM(Phase Change Random Access Memory), RRAM(Resistive Random Access Memory) 및 MRAM(Magnetic Random Access Memory) 등을 포함할 수 있다.
메모리 디바이스는 함께 결합되어 SSD(solid state drive), 내장형 멀티미디어 카드(e.MMC), 및/또는 범용 플래시 스토리지(UFS) 디바이스를 형성할 수 있다. SSD, e.MMC 및/또는 UFS 디바이스는 비휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고 및/또는 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서 휘발성 메모리(예를 들어, DRAM 및/또는 SDRAM)를 포함할 수 있다. 비휘발성 메모리는 개인용 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 휴대 전화, MP3 플레이어와 같은 휴대용 음악 플레이어, 영화 플레이어 등과 같은 광범위한 전자 애플리케이션에 사용될 수 있다.
플래시 메모리 디바이스는 예를 들어, 플로팅 게이트와 같은 전하 저장 구조에 데이터를 저장하는 메모리 셀을 포함할 수 있다. 플래시 메모리 디바이스는 전형적으로 높은 메모리 밀도, 높은 신뢰성 및 저전력을 허용하는 단일 트랜지스터 메모리 셀을 사용한다. 저항성 가변 메모리 디바이스는 저장 소자(예를 들어, 가변 저항을 갖는 저항성 메모리 소자)의 저항 상태에 기초하여 데이터를 저장할 수 있는 저항성 메모리 셀을 포함할 수 있다.
메모리 셀은 어레이로 배열될 수 있고, 어레이 아키텍처의 메모리 셀은 타겟(예를 들어, 원하는) 상태로 프로그래밍될 수 있다. 예를 들어, 셀을 특정 데이터 상태로 프로그램하기 위해 전하는 플래시 메모리 셀의 전하 저장 구조(예를 들어, 플로팅 게이트) 상에 놓이거나 그로부터 제거될 수 있다. 셀의 전하 저장 구조에 저장된 전하는 셀의 임계 전압(Vt)을 나타낼 수 있다. 플래시 메모리 셀의 상태는 셀의 전하 저장 구조(예를 들어, Vt)에 저장된 전하를 감지하여 결정된다.
많은 위협이 메모리 디바이스의 메모리 셀에 저장된 데이터에 영향을 미칠 수 있다. 이러한 위협에는 예를 들어, 메모리 디바이스에 발생하는 오류 및/또는 해커 또는 다른 악의적인 사용자로부터의 위협이 포함될 수 있다. 이러한 위협은 상당한 재정적 손실을 야기할 수 있고 및/또는 심각한 안전 및/또는 보안 문제를 일으킬 수 있다.
도 1은 본 개시의 실시예에 따른 다수의 물리적 블록을 갖는 메모리 어레이의 일부의 다이어그램을 예시한다.
도 2는 본 개시의 실시예에 따른 메모리 디바이스 형태의 장치 및 호스트를 포함하는 컴퓨팅 시스템의 블록도이다.
도 3a는 본 개시의 실시예에 따른 보안 메모리 어레이를 정의하는데 사용되는 레지스터의 예를 예시한다.
도 3b는 본 개시의 실시예에 따라 정의된 보안 메모리 어레이를 포함하는 메모리 어레이의 일부의 다이어그램을 예시한다.
도 4는 본 개시의 실시예에 따른 메모리 어레이에 저장된 데이터를 복수의 세그먼트로 분할하고, 각각의 개별 세그먼트에 저장된 데이터를 검정 및 교정하는데 사용되는 레지스터의 예를 예시한다.
도 5는 본 개시의 실시예에 따른 암호화 해시를 사용하여 메모리에 저장된 데이터의 세그먼트를 검정하는 방법을 예시한다.
도 6은 본 개시의 실시예에 따른 호스트 및 메모리 디바이스를 포함하는 예시적인 시스템의 블록도이다.
도 7는 본 개시의 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다.
도 8은 본 개시의 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다.
도 9는 본 개시의 실시예에 따른 인증서를 검증(verify)하기 위한 예시적인 프로세스의 블록도이다.
도 10은 본 개시의 실시예에 따른 서명을 검증하기 위한 예시적인 프로세스의 블록도이다.
도 11은 본 개시의 실시예에 따른 예시적인 메모리 디바이스의 블록도이다.
본 개시는 암호화 해시를 사용하여 메모리에 저장된 데이터를 검정(validate)하기 위한 장치, 방법 및 시스템을 포함한다. 실시예는 메모리, 및 회로부를 포함하며, 상기 회로부는 메모리를 복수의 세그먼트로 분할하고, 각각의 개별 세그먼트는 상이한 암호화 해시와 연관되고, 메모리에 파워가 공급되는 동안 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하고, 메모리에 파워를 공급한 후, 상기 복수의 세그먼트 중 제2 수에 저장된 데이터, 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하도록 구성된다.
많은 위협이 메모리(예를 들어, 메모리 디바이스)에 저장된 데이터에 영향을 미칠 수 있다. 예를 들어, 메모리의 어레이 및/또는 회로부에서 오류가 발생할 수 있으며, 이로 인해 데이터에 오류가 발생할 수 있다. 추가 예로서, 해커 또는 다른 악의적인 사용자가 악의적인 목적으로 데이터를 무단으로 변경하는 활동을 수행하는 것을 시도할 수 있다. 예를 들어, 악의적인 사용자는 다른 유형의 해킹 활동 중에서 메모리를 사용하여 수행되는 상거래에(예를 들어, 결제를 인증하는 코드를 스킵함으로써 제공되는 서비스에 대해 결제가 이루어졌다고 허위로 표시하기 위해), 메모리에서 수행되는 소프트웨어 라이선스 체크(예를 들어, 라이선스를 검증하는 코드를 스킵함으로서 메모리의 소프트웨어가 적절하게 라이선스가 부여되었음을 허위로 표시), 또는 메모리를 사용하여 수행되는 자동차 제어(예를 들어, 부품의 진위 여부 체크, 환경 체크, 오작동 경보 체크 등) 부정적인 영향을 미치기 위해(예를 들어, 흐름을 전환하기 위해) 메모리에 저장된 데이터를 변경하려고 시도할 수 있다. 이러한 해킹 활동(예를 들어, 공격)은 상당한 재정적 손실을 야기할 수 있고 및/또는 심각한 안전 및/또는 보안 문제를 일으킬 수 있다.
이와 같이, 보안 메모리 시스템을 보장하기 위해, 메모리에 저장된 데이터가 진짜인지(예를 들어, 원래 프로그래밍된 것과 동일함), 해킹 활동 또는 다른 무단 및/또는 의도하지 않은 변경으로 인해 변경되지 않았다는 것을 검증(예를 들어, 인증 및/또는 증명)하는 것이 중요하다. 그러한 데이터 검정은, 예를 들어, 메모리의 파워가 공급 동안(예를 들어, 메모리의 파워 온 및/또는 파워 업 동안, 이는 “부팅(booting)"으로 지칭될 수 있음) 수행될 수 있다. 그러나, 데이터 유효성 검정(validation)의 성능은 메모리에 파워를 공급하는데 필요한 시간을 증가시킬 수 있으며(예를 들어, 부팅 시간의 레이턴시(latency)를 증가시킬 수 있음), 이는 메모리 시스템에 대한 사용자 경험에 부정적인 영향을 미칠 수 있다.
그러나, 본 개시의 실시예는 메모리에 저장된 데이터를 효과적으로 검정할 수 있고, 이에 의해 메모리에 파워를 공급하는 동안 메모리에 파워를 공급하는데 필요한 시간의 양을 감소시키면서(예를 들어, 메모리 부팅 시간의 레이턴시를 감소) 보안 메모리 시스템을 보장한다. 예를 들어, 본 개시의 실시예는 메모리를 세그먼트로 분할하고, 해당 세그먼트 중 각각의 개별 세그먼트와 연관된 상이한 암호화 해시를 사용하여 메모리의 파워 공급(예를 들어, 부팅) 동안 세그먼트의 일부(예를 들어, 전체 미만)에만 저장된 데이터를 검정할 수 있다. 메모리의 나머지 세그먼트에 저장된 데이터는 메모리의 파워 공급이 완료된 후 해당 세그먼트 중 각각의 개별 세그먼트와 연관된 상이한 암호화 해시를 사용하여 검정될 수 있다.
본 출원에 사용된, "a", "an" 또는 "다수의"는 하나 이상의 무언가를 나타낼 수 있고, "복수의"는 둘 이상의 그러한 것을 나타낼 수 있다. 예를 들어, 메모리 디바이스는 하나 이상의 메모리 디바이스를 지칭할 수 있고, 복수의 메모리 디바이스는 2개 이상의 메모리 디바이스를 지칭할 수 있다. 또한, 본 출원에 사용된 지정자 "R", "B", "S", "N", 및 "K" 특히 도면의 참조 번호와 관련하여, 그렇게 지정된 다수의 특정 피처가 본 개시의 다수의 실시예에 포함될 수 있음을 나타낸다. 그 번호는 지정 간에 동일하거나 상이할 수 있다.
본 명세서의 도면은 제1 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자가 도면의 엘리먼트 또는 컴포넌트를 식별하는 넘버링 규칙을 따른다. 다른 도면 사이의 유사한 엘리먼트 또는 컴포넌트는 유사한 숫자를 사용하여 식별될 수 있다. 예를 들어, 101은 도 1에서 엘리먼트 "01"을 참조할 수 있고, 유사한 엘리먼트는 도 2에서 201로 참조될 수 있다.
도 1은 본 개시의 실시예에 따른 다수의 물리적 블록을 갖는 메모리 어레이(101)의 일부의 도면을 예시한다. 메모리 어레이(101)는 예를 들어, NAND 플래시 메모리 어레이와 같은 플래시 메모리 어레이일 수 있다. 추가적인 예로서, 메모리 어레이(101)는 무엇보다도 PCRAM, RRAM, MMRAM, 또는 STT(spin torque transfer) 어레이와 같은 저항 가변 메모리 어레이일 수 있다. 그러나, 본 개시의 실시예는 특정 유형의 메모리 어레이에 한정되지 않는다. 또한, 메모리 어레이(101)는 본 출원에서 추가로 설명되는 보안 메모리 어레이일 수 있다. 또한, 도 1에 도시되지는 않았지만, 메모리 어레이(101)는 그 동작과 관련된 다양한 주변 회로부와 함께 특정 반도체 다이 상에 위치될 수 있다.
도 1에 도시된 바와 같이, 메모리 어레이(101)는 메모리 셀의 다수의 물리적 블록(107-0(BLOCK 0), 107-1(BLOCK 1),…, 107-B(BLOCK B))을 갖는다. 메모리 셀은 단일 레벨 셀 및/또는 멀티 레벨 셀 예컨대, 예를 들어, 2레벨 셀, 삼중 레벨 셀(TLC) 또는 4중 레벨 셀(QLC)일 수 있다. 예로서, 메모리 어레이(101)의 물리적 블록의 수는 128 블록, 512 블록, 또는 1,024 블록일 수 있지만, 실시예는 메모리 어레이(101)의 특정 수의 물리적 블록 또는 2의 특정 거듭제곱(power)으로 한정되지 않는다.
메모리 셀들의 다수의 물리적 블록들(예를 들어, 블록들(107-0, 107-1,…, 107-B))이 메모리 셀들의 평면에 포함될 수 있고, 메모리 셀들의 다수의 평면들이 다이 상에 포함될 수 있다. 예를 들어, 도 1에 도시된 예에서, 각각의 물리적 블록(107-0, 107-1,…, 107-B)는 단일 다이의 일부일 수 있다. 즉, 도 1에 도시된 메모리 어레이(101)의 일부는 메모리 셀의 다이일 수 있다.
도 1에 도시된 바와 같이, 각각의 물리 블록(107-0, 107-1,…, 107-B)는 액세스 라인(예를 들어, 워드 라인)에 결합된 다수의 메모리 셀의 물리적 행(row)(예를 들어, 103-0, 103-1,…, 103-R)를 포함한다. 각각의 물리적 블록의 행(예를 들어, 워드 라인)의 수는 32개일 수 있지만, 실시예는 물리적 블록당 특정 수의 행(103-0, 103-1,…, 103-R)에 한정되지 않는다. 또한, 도 1에 도시되지는 않았지만, 메모리 셀은 감지 라인의 열(column)(예를 들어, 데이터 라인 및/또는 디지트 라인)에 결합될 수 있다.
당업자는 각각의 행(103-0, 103-1,…, 103-R)은 다수의 메모리 셀의 페이지(예를 들어, 물리적 페이지)를 포함할 수 있다. 물리적 페이지는 프로그래밍 및/또는 감지 단위(예를 들어, 기능 그룹으로서 함께 프로그래밍 및/또는 감지되는 메모리 셀의 수)를 나타낸다. 도 1에 도시된 실시예에서, 각각의 행(103-0, 103-1,…, 103-R)은 메모리 셀의 하나의 물리적 페이지를 포함한다. 그러나, 본 개시의 실시예는 이에 한정되지 않는다. 예를 들어, 실시예에서, 각각의 행은 메모리 셀의 다수의 물리적 페이지(예를 들어, 짝수 번째 데이터 라인에 결합된 하나 이상의 짝수 페이지 및 홀수 번째 데이터 라인에 결합된 메모리 셀의 하나 이상의 홀수 페이지)를 포함할 수 있다. 또한, 멀티 레벨 셀을 포함하는 실시예에 대해, 메모리 셀의 물리적 페이지는 다수의 데이터 페이지(예를 들어, 로직 페이지)를 저장할 수 있다(예를 들어, 데이터의 상부 페이지(upper page) 및 데이터의 하부 페이지(lower page), 물리적 페이지의 각각의 셀은 데이터의 상부 페이지에 대한 하나 이상의 비트 및 데이터의 하부 페이지에 대한 하나 이상의 비트를 저장함).
도 1에 도시된 바와 같이, 메모리 셀의 페이지는 다수의 물리적 섹터(105-0, 105-1,…, 105-S)(예를 들어, 메모리 셀의 서브 세트)를 포함할 수 있다. 셀의 각각의 물리적 섹터(105-0, 105-1,…, 105-S)는 다수의 로직 데이터 섹터를 저장할 수 있다. 또한 데이터의 각각의 로직 섹터는 데이터의 특정 페이지의 일부에 해당할 수 있다. 예를 들어, 특정 물리적 섹터에 저장된 데이터의 제1 로직 섹터는 데이터의 제1 페이지에 대응하는 로직 섹터에 대응할 수 있고, 특정 물리적 섹터에 저장된 데이터의 제2 로직 섹터는 데이터의 제2 페이지에 대응할 수 있다. 각각의 물리적 섹터(105-0, 105-1,…, 105-S)는 시스템 및/또는 사용자 데이터를 저장할 수 있고/있거나 에러 정정 코드(ECC) 데이터, LBA(logical block address) 데이터 및 메타 데이터와 같은 오버헤드 데이터를 포함할 수 있다.
로직 블록 어드레스 지정은 데이터의 로직 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 체계이다. 예를 들어, 각각의 로직 섹터는 고유한 로직 블록 어드레스(LBA)에 대응할 수 있다. 또한, LBA는 메모리에 있는 데이터의 로직 섹터의 물리적 위치를 나타낼 수 있는 물리적 블록 어드레스(PBA)와 같은 물리적 어드레스에 대응할 수 있다(동적으로 매핑). 데이터의 로직 섹터는 데이터의 바이트 수(예를 들어, 256바이트, 512바이트, 1,024바이트, 또는 4,096바이트)일 수 있다. 그러나, 실시예는 이러한 예에 한정되지 않는다.
물리적 블록(107-0, 107-1,…, 107-B), 행 (103-0, 103-1,…, 103-R), 섹터 (105-0, 105-1,…, 105-S) 및 페이지에 대한 다른 구성이 가능하다는 것에 유의한다. 예를 들어, 물리 블록(107-0, 107-1,…, 107-B)의 행 (103-0, 103-1,…, 103-R)는 예를 들어, 512바이트보다 많거나 적은 데이터를 포함할 수 있는 단일 로직 섹터에 해당하는 데이터를 각각 저장할 수 있다.
도 2는 본 개시의 실시예에 따른 메모리 디바이스(206) 형태의 장치 및 호스트(202)를 포함하는 컴퓨팅 시스템(200)의 블록도이다. 본 출원에서 사용된 "장치"는 예를 들어, 회로 또는 회로부, 다이 또는 다이스(dice), 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들과 같은 다양한 구조 또는 구조의 조합 중 임의의 것을 지칭할 수 있지만 이에 한정되지 않는다. 또한, 일 실시예에서, 컴퓨팅 시스템(200)은 메모리 디바이스(206)와 유사한 다수의 메모리 디바이스를 포함할 수 있다.
도 2에 도시된 실시예에서, 메모리 디바이스(206)는 메모리 어레이(201)를 갖는 메모리(212)를 포함할 수 있다. 메모리 어레이(201)는 도 1과 관련하여 이전에 설명된 메모리 어레이(101)와 유사할 수 있다. 하나의 메모리 어레이(201)가 도 2에 예시되어 있지만, 메모리(212)는 메모리 어레이(201)와 유사한 임의의 수의 메모리 어레이를 포함할 수 있다.
일 실시예에서, 메모리 어레이(201)(예를 들어, 어레이(201)의 서브 세트 또는 전체 어레이(201))는 보안 어레이(예를 들어, 제어하에 유지될 메모리(212)의 영역)일 수 있다. 예를 들어, 메모리 어레이(201)에 저장된 데이터는 민감한 (예를 들어, 비 사용자) 데이터, 예컨대, 호스트 펌웨어 및/또는 민감한 애플리케이션을 위해 실행될 코드를 포함할 수 있다. 그러한 실시예에서, 하나 이상의 비휘발성 레지스터는 보안 어레이를 정의하기 위해 사용될 수 있다. 예를 들어, 도 2에 도시된 실시예에서, 회로부(210)는 보안 어레이를 정의하는데 사용될 수 있는 한 쌍의 레지스터(214-1, 214-2)를 포함한다. 예를 들어, 레지스터 (214-1)은 보안 어레이의 어드레스(예를 들어, 데이터의 시작 LBA)를 정의할 수 있고, 레지스터 (214-2)는 보안 어레이의 크기(예를 들어, 데이터의 끝 LBA)를 정의할 수 있다. 이러한 레지스터의 예 및 보안 어레이를 정의하는 데 그것들의 사용은 본 출원에서 추가로 설명된다(예를 들어, 도 3a-3b와 관련하여).
도 2에 도시된 바와 같이, 호스트(202)는 인터페이스(204)를 통해 메모리 디바이스(206)에 결합될 수 있다. 호스트(202) 및 메모리 디바이스(206)는 인터페이스(204) 상에서 통신(예를 들어, 명령 및/또는 데이터를 발송)할 수 있다. 호스트 (202) 및 메모리 디바이스(206)는 다른 호스트 시스템 중에서 랩톱 컴퓨터, 개인용 컴퓨터, 디지털 카메라, 디지털 레코딩 및 재생 디바이스, 휴대 전화, PDA, 메모리 카드 판독기, 인터페이스 허브 또는 사물 인터넷(IoT) 지원 디바이스, 예컨대, 예를 들어, 자동차(예를 들어, 차량 및/또는 운송 인프라스트럭처) IoT 지원 디바이스 또는 의료(예를 들어, 이식 가능 및/또는 건강 모니터링) IoT 지원 디바이스일 수 있거나 그 일부일 수 있고, 메모리 액세스 디바이스(예를 들어, 프로세서)를 포함할 수 있다. 당업자는 "프로세서"가 병렬 프로세싱 시스템, 다수의 코프로세서( coprocessor)등과 같은 하나 이상의 프로세서를 의도할 수 있음을 인식할 것이다.
인터페이스(204)는 표준화된 물리적 인터페이스의 형태일 수 있다. 예를 들어, 메모리 디바이스(206)가 컴퓨팅 시스템(200)에서 정보 저장을 위해 사용될 때, 인터페이스(204)는 다른 물리적 커넥터 및/또는 인터페이스 중에서 SATA(serial advanced technology attachment) 물리적 인터페이스, PCIe(peripheral component interconnect express) 물리적 인터페이스, USB(Universal Serial Bus) 물리적 인터페이스 또는 SCSI(Small Computer System Interface)일 수 있다. 그러나, 일반적으로 인터페이스(204)는 인터페이스(204)에 대한 호환 가능한 수용체(receptor)를 갖는 호스트(예를 들어, 호스트(202))와 메모리 디바이스(206) 사이에 제어, 어드레스, 정보(예를 들어, 데이터) 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 디바이스(206)는 호스트(202) 및 메모리(212)(예를 들어, 메모리 어레이(201))와 통신하기 위한 컨트롤러(208)를 포함한다. 예를 들어, 컨트롤러(208)는 다른 동작 중에서 감지(예를 들어, 판독), 프로그램(예를 들어, 기록), 데이터 이동 및/또는 소거 동작을 포함하는 메모리 어레이(201)에 대한 동작을 수행하기 위한 명령을 발송할 수 있다.
컨트롤러(208)는 메모리(212)와 동일한 물리적 디바이스(예를 들어, 동일한 다이)에 포함될 수 있다. 대안적으로, 컨트롤러(208)는 메모리(212)를 포함하는 물리적 디바이스에 통신 가능하게 결합된 별도의 물리적 디바이스 상에 포함될 수 있다. 일 실시예에서, 컨트롤러(208)의 컴포넌트는 분산된 컨트롤러로서 다수의 물리적 디바이스(예를 들어, 메모리와 동일한 다이 상의 일부 컴포넌트, 및 상이한 다이, 모듈 또는 보드 상의 일부 컴포넌트)에 걸쳐 확산될 수 있다.
호스트(202)는 메모리 디바이스(206)와 통신하기 위한 호스트 컨트롤러(도 2에 도시되지 않음)를 포함할 수 있다. 호스트 컨트롤러는 인터페이스(204)를 통해 메모리 디바이스(206)에 명령을 발송할 수 있다. 호스트 컨트롤러는 다른 동작들 중에서 데이터를 판독하고, 기록하고, 및/또는 소거하기 위해 메모리 디바이스(206) 및/또는 메모리 디바이스(206) 상의 컨트롤러(208)와 통신할 수 있다. 또한, 일 실시예에서, 호스트(202)는 IoT 통신 능력을 갖는 본 출원의 이전에 설명된 IoT 지원 디바이스일 수 있다.
메모리 디바이스(206) 상의 컨트롤러(208) 및/또는 호스트(202) 상의 호스트 컨트롤러는 제어 회로부 및/또는 로직(예를 들어, 하드웨어 및 펌웨어)을 포함할 수 있다. 일 실시예에서, 메모리 디바이스(206) 상의 컨트롤러(208) 및/또는 호스트(202) 상의 호스트 컨트롤러는 물리적 인터페이스를 포함하는 인쇄 회로 기판에 결합된 ASIC(application specific integrated circuit)일 수 있다. 또한, 메모리 디바이스(206) 및/또는 호스트(202)는 휘발성 및/또는 비휘발성 메모리의 버퍼와 다수의 레지스터를 포함할 수 있다.
예를 들어, 도 2에 도시된 바와 같이, 메모리 디바이스는 회로부(210)를 포함할 수 있다. 도 2에 도시된 실시예에서, 회로부(210)는 컨트롤러(208)에 포함된다. 그러나, 본 개시의 실시예는 이에 한정되지 않는다. 예를 들어, 일 실시예에서, 회로부(210)는 (예를 들어, 컨트롤러(208) 대신에) 메모리(212)에(예를 들어, 동일한 다이 상에) 포함될 수 있다. 회로부(210)는 예를 들어, 하드웨어, 펌웨어, 및/또는 소프트웨어를 포함할 수 있고, 메모리(212)(예를 들어, 메모리 어레이(201)에)에 저장된 데이터를 검정(예를 들어, 인증 및/또는 증명)하는데 사용될 수 있다.
예를 들어, 회로부(210)는 메모리 어레이(201)에 저장된 데이터를 복수의 세그먼트로 분할하고, 상이한 암호화 해시를 각각의 개별 세그먼트와 연관시킬 수 있다. 예를 들어, 회로부(210)는 호스트(202)로부터 수신된 인증된(예를 들어, 보안된) 재생 방지 명령을 사용하여(예를 들어, 메모리 디바이스(206)만이 이러한 암호 해시를 알고, 메모리 디바이스(206)만이 그것들을 생성 및 업데이트할 수 있도록) 각각의 개별 세그먼트에 대해 상이한 암호 해시를 생성(예를 들어, 계산)할 수 있다. 각각의 개별 세그먼트에 대해 생성된 암호화 해시는 본 출원에서 해당 세그먼트에 대한 골든 해시(golden hash)로 지칭될 수 있고, 예를 들어, SHA-256 암호화 해시를 포함할 수 있다. 이러한 골든 해시는 메모리 디바이스(206) 및/또는 호스트(202)의 사용자가 액세스할 수 없는 회로부(210)에 포함된 비휘발성 레지스터(216-3)에(예를 들어, 메모리 디바이스(206)의 "숨겨진(hidden)" 영역에) 저장될 수 있으며, 본 출원에 추가로 설명되는 바와 같이, 메모리 어레이(201)에 저장된 데이터를 검정하는 프로세스 동안 사용될 수 있다.
또한, 도 2에 도시된 바와 같이, 회로부(210)는 복수의 세그먼트를 정의하는데 사용될 수 있는 하나 이상의 비휘발성 레지스터(예를 들어, 레지스터(216-1 및 216-2))를 포함할 수 있다. 예를 들어, 레지스터(216-1)는 복수의 세그먼트 중 각각의 개별 세그먼트의 어드레스(예를 들어, 데이터의 시작 LBA)를 정의할 수 있고, 레지스터(216-2)는 복수의 세그먼트의 각각의 개별 세그먼트의 크기(예를 들어, 데이터의 끝 LBA)를 정의할 수 있다. 복수의 세그먼트는 각각 동일한 크기일 수 있거나(예를 들어, 동일한 양의 데이터를 저장함), 상이한 크기일 수 있다(예를 들어, 상이한 양의 데이터를 저장함). 레지스터(216-1, 216-2, 216-3)의 예는 본 출원에서 추가로 설명될 것이다(예를 들어, 도 4와 관련하여).
메모리 디바이스(206)의 파워 공급(예를 들어, 파워 온 및/또는 파워 업) 동안, 회로부(210)는 개별 세그먼트와 관련된 골든 해시를 사용하여 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정(예를 들어, 검정할지 여부를 결정)할 수 있다. 본 출원에 사용된 바와 같이, 데이터를 검정하는 것은 데이터가 진짜임을(예를 들어, 원래 프로그래밍된 것과 동일함) 인증 및/또는 증명하는 것, 해킹 활동이나 다른 인증되지 않은 및/또는 의도하지 않은 변경에 의해 변경되지 않았다는 것을 포함 및/또는 지칭할 수 있다.
예를 들어, 회로부(210)는 제1 세그먼트 수의 각각의 개별 세그먼트에 저장된 데이터에 대해 상이한 런타임 암호화 해시를 생성(예를 들어, 계산)하고, 레지스터 (216-3)에 저장된 해당 개별 세그먼트에 대한 골든 해시에 대한 각각의 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시를 비교할 수 있다. 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시가 해당 개별 세그먼트의 골든 해시와 일치하는 지를 나타내는 비교 시, 해당 세그먼트에 저장된 데이터가 변경되지 않았고, 따라서 해당 개별 세그먼트에 저장된 데이터가 검정될 수 있다고 결정될 수 있다(예를 들어, 유효한 것으로 결정될 수 있다). 이와 같이, 개별 세그먼트에 저장된 데이터는 다른 세그먼트에 저장된 데이터와 독립적으로 검정될 수 있다.
복수의 세그먼트 중 제1 수의 세그먼트는 메모리 어레이(201)에 저장된 데이터가 분할되는 복수의 세그먼트의 일부(예를 들어, 전체보다 적음)만을 포함할 수 있다. 예로서, 복수의 세그먼트 중 제1 수의 세그먼트는 호스트(202)에 의해(예를 들어, 호스트(202)의 사용자에 의해) 정의된 특정 수량의 세그먼트를 포함할 수 있다. 이 수량은 회로부(210)에 포함된 비휘발성 레지스터(218-1)에 저장될 수 있다. 추가적인 예로서, 복수의 세그먼트 중 제1 수의 세그먼트는 특정 시간 양에서 회로부(210)에 의해 검정될 수 있는 세그먼트의 수량을 포함할 수 있다. 이 시간의 양은 메모리 디바이스(206)의 파워 공급이 지속되는 시간의 양에 대응할 수 있으며, 이는 메모리 디바이스(206)에 의해(예를 들어, 회로부(210)에 의해) 자동으로 결정될 수 있고, 회로부(210)에 포함된 비휘발성 레지스터(218-2)에 저장될 수 있다.
그러나 비교 결과, 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시가 해당 개별 세그먼트에 대한 골든 해시와 일치하지 않는 것으로 표시되면, 이는 해당 개별 세그먼트에 저장된 데이터가 변경되었고 (예를 들어, 해커 또는 메모리의 오류로 인해) 따라서, 해당 세그먼트에 저장된 데이터가 유효하지 않을 수 있다는 것을 나타낼 수 있다 (예를 들어, 유효하지 않은 것으로 결정될 수 있다). 그러한 예에서, 회로부(210)는 해당 세그먼트에 저장된 데이터를 교정(예를 들어, 교정을 시도)할 수 있다. 세그먼트에 저장된 데이터를 교정하는 것은 예를 들어, 데이터의 교정이 허용되는지 여부를 결정하는 것 및 교정이 허용되는 경우, 메모리(212)로부터 데이터를 복구(예를 들어, 복원)하는 것을 포함할 수 있다(예를 들어, 도 11과 관련하여 추가로 설명되는 교정 블록(1117)과 같은 메모리에 포함된 교정 블록으로부터).
도 2에 도시된 바와 같이, 회로부(210)는 유효성 검정 및 교정 프로세스 동안 회로부(210)에 의해 사용될 수 있는 추가 레지스터(216-4, 216-5, 216-6, 216-7, 216-8)를 포함할 수 있다. 레지스터(216-4)는 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 유효성 검정의 표시(예를 들어, 데이터의 유효성 검정이 완료되었는지 여부의 표시)를 제공할 수 있는 휘발성 레지스터일 수 있고, 레지스터(216-5)는 각각의 개별 세그먼트에 저장된 데이터의 유효성 검정 결과의 표시(예를 들어, 데이터가 유효한 것으로 결정되었는지 여부의 표시)를 제공할 수 있는 휘발성 레지스터일 수 있고, 이는 각각의 개별 세그먼트에 저장된 데이터의 교정이 시도되어야 하는지 여부를 결정하기 위해 회로부(210)에 의해 사용될 수 있다.
레지스터(216-6)는 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 교정이 허용되는지 여부의 표시를 제공할 수 있는 비휘발성 레지스터일 수 있으며, 이는 데이터가 유효하지 않고 교정이 시도해야 한다는 결정에 기초하여 세그먼트에 저장된 데이터의 교정이 허용되는지 여부를 결정하기 위해 회로부(210)에 의해 사용될 수 있다. 레지스터(216-7)는 메모리(212)(예를 들어, 교정 블록)의 어드레스를 정의하는데 사용될 수 있는 비휘발성 레지스터일 수 있으며, 이로부터 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터가 복구될 수 있으며, 이는 데이터의 교정 동안 데이터를 복구하기 위해 회로부(210)에 의해 사용된다. 레지스터(216-8)는 데이터의 교정이 허용되는 경우 복수의 세그먼트 중 각각의 개별 세그먼트(예를 들어, 데이터가 교정되었는지 여부)에 저장된 데이터의 교정 결과의 표시를 제공할 수 있는 휘발성 레지스터일 수 있다. 유효성 검정 및 교정 프로세스에서의 레지스터(216-4 내지 216-8)의 예와 그것들의 사용은 본 출원에서 추가로 설명된다(예를 들어, 도 4와 관련하여).
메모리 디바이스(206)의 파워 공급(예를 들어, 부팅)이 완료된 후, 회로부(210)는 해당 개별 세그먼트와 관련된 골든 해시를 사용하여 복수의 세그먼트 중 제2 수의 각각 개별 세그먼트에 저장된 데이터를 검정(예를 들어, 검정 여부를 결정)할 수 있다. 복수의 세그먼트 중 제2 수의 세그먼트는 메모리 어레이(201)에 저장된 데이터가 분할되는 나머지 세그먼트(예를 들어, 복수의 세그먼트 중 제1 수의 세그먼트에 포함되지 않은 세그먼트)를 포함할 수 있다. 그러나, 본 개시의 실시예는 제1 및 제2 수의 세그먼트로 한정되지 않는다(예를 들어, 복수의 세그먼트는 제1 및 제2 수보다 많은 수의 세그먼트를 포함할 수 있다).
복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 프로세스는 앞서 설명된 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 프로세스와 유사할 수 있다. 예를 들어, 회로부(210)는 제2 수의 세그먼트들의 각각 개별 세그먼트에 저장된 데이터에 대해 상이한 런타임 암호화 해시를 생성하고, 제 1 수의 세그먼트에 대해 본 출원에서 이전에 설명된 것과 유사한 방식으로, 레지스터(216-3)에 저장된 해당 개별 세그먼트에 대한 골든 해시와 각각의 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시를 비교할 수 있다. 또한, 복수의 세그먼트 중 제2 수의 세그먼트 중 하나에 저장된 데이터가 유효하지 않은 것으로 결정되면, 회로부(210)는 복수의 세그먼트 중 제1 수의 세그먼트에 대해 이전에 설명된 것과 유사한 방식으로 해당 세그먼트에 저장된 데이터를 교정할 수 있다. 또한, 회로부(210)는 제1 수의 세그먼트에 대해 본 출원에서 이전에 설명된 것과 유사한 방식으로, 복수의 세그먼트 중 제2 수의 세그먼트에 저장된 데이터에 대한 유효성 검정 및 교정 프로세스 동안 레지스터(216-4 내지 216-8)를 사용할 수 있다.
또한, 메모리 디바이스(206)의 파워 공급이 완료된 후(예를 들어, 복수의 세그먼트의 제2 수에 저장된 데이터가 검정되는 동안), 회로부(210)는 제1 수의 세그먼트 중 해당 개별 세그먼트에 저장된 데이터가 검정 또는 교정될 때 제1 수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터를 인터페이스(204)를 통해 호스트(202)로 발송할 수 있다(예를 들어, 호스트(202)는 메모리 디바이스(206)로부터 데이터를 수신할 수 있다). 예를 들어, 제1 세그먼트 수의 각각의 개별 세그먼트에 저장된 데이터는 해당 개별 세그먼트에 저장된 데이터가 유효하지 않은 것으로 결정되고 교정되지 않은 경우 호스트(202)로 발송되지 않을 수 있으며; 오히려, 각각의 개별 세그먼트에 저장된 데이터는 유효한 것으로 결정되거나 교정된 경우에만 호스트(202)로 발송될 수 있다. 회로부(210)는 본 출원에서 이전에 설명된 바와 같이 레지스터(216-4 내지 216-8)를 사용하여 제1 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터가 유효한 것으로 결정되었는지 또는 교정되었는지 여부를 결정할 수 있다.
복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 발송한 후, 회로부(210)는 제2 세그먼트 수의 해당 개별 세그먼트에 저장된 데이터가 검정 또는 교정될 때 제2 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터를 인터페이스(204)를 통해 호스트(202)로 발송할 수 있다 (예를 들어, 호스트(202)는 메모리 디바이스(206)로부터 데이터를 수신할 수 있다). 예를 들어, 제2 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터는 해당 세그먼트에 저장된 데이터가 유효하지 않은 것으로 결정되고 교정되지 않은 경우 호스트(202)로 발송되지 않을 수 있으며; 오히려, 각각의 개별 세그먼트에 저장된 데이터는 유효한 것으로 결정되거나 교정된 경우에만 호스트(202)로 발송될 수 있다. 회로부(210)는 본 출원에서 이전에 설명된 바와 같이 레지스터(216-4 내지 216-8)를 사용하여 제2 세그먼트 수의 각각의 개별 세그먼트에 저장된 데이터가 유효한 것으로 결정되었는지 또는 교정되었는지 여부를 결정할 수 있다.
도 2에 예시된 실시예는 본 개시의 실시예를 모호하게 하지 않도록 예시되지 않은 추가적인 회로부, 로직, 및/또는 컴포넌트를 포함할 수 있다. 예를 들어, 메모리 디바이스(206)는 I/O 회로부를 통해 I/O 커넥터를 통해 제공된 어드레스 신호를 래치하기 위한 어드레스 회로부를 포함할 수 있다. 어드레스 신호는 메모리 어레이(201)에 액세스하기 위해 행(row) 디코더 및 열(column) 디코더에 의해 수신 및 디코딩될 수 있다. 또한, 메모리 디바이스(206)는 메모리 어레이(201)와 별도로 및/또는 추가로 예를 들어, DRAM 또는 SDRAM과 같은 메인 메모리를 포함할 수 있다. 메모리 디바이스(206)의 추가 회로부, 로직, 및/또는 컴포넌트를 추가로 예시하는 예가 본 출원에서 추가로 설명될 것이다(예를 들어, 도 11과 관련하여).
도 3a는 본 개시의 실시예에 따른 보안 메모리 어레이를 정의하는데 사용되는 레지스터(314-1 및 314-2)의 예를 예시하고, 도 3b는 본 개시의 실시예에 따른 레지스터(314-1 및 314-2)를 사용하여 정의된 보안 메모리 어레이를 포함하는 메모리 어레이(301)의 일부의 다이어그램을 예시한다. 레지스터(314-1 및 314-2)는 예를 들어, 개별적으로 도 2와 관련하여 이전에 설명된 레지스터(214-1 및 214-2)일 수 있고, 보안 메모리 어레이(301)는 예를 들어, 도 2와 관련하여 이전에 설명된 메모리 어레이(201)일 수 있다. 예를 들어, 도 3b에 도시된 바와 같이, 보안 메모리 어레이(301)는 메모리 셀의 다수의 물리적 블록(307-0, 307-1,…, 307-B)을 포함할 수 있고, 각각은 도 1과 관련하여 이전에 설명된 메모리 어레이(101)와 유사한 방식으로 다수의 메모리 셀 섹터를 갖는 다수의 물리적 행(303-0, 303-1,…, 303-R)을 포함한다.
도 3a에 도시된 바와 같이, 레지스터(314-1)는 보안 어레이의 어드레스(예를 들어, 보안 어레이의 다른 부분의 어드레스)를 정의할 수 있고, 레지스터(314-2)는 보안 어레이의 크기(예를 들어, 보안 어레이의 다른 부분의 크기)를 정의할 수 있다. 레지스터(314-1)에 의해 정의된 보안 어레이의 어드레스는 예를 들어, 보안 어레이의 시작 지점(예를 들어, 시작 LBA)(예를 들어, 보안 어레이의 다른 부분의 시작 지점)에 대응할 수 있고, 레지스터(314-2)에 의해 정의된 보안 어레이의 크기는 예를 들어, 보안 어레이의 종료 지점(예를 들어, LBA의 종료)(예를 들어, 보안 어레이의 상이한 부분의 종료 지점)에 대응할 수 있다.
예를 들어, 도 3a에 도시된 바와 같이, 레지스터(314-1 및 314-2)는 N 쌍의 값을 정의할 수 있으며, 각각의 개별 쌍은 레지스터(314-1)에 의해 정의된 어드레스 값(예를 들어, addr) 및 레지스터(314-2)에 의해 정의된 크기 값(예를 들어, 크기)을 포함한다. 예를 들어, 도 3a의 예에서 Pair0은 어드레스 값 addr0과 크기 값 size0을 포함하고(예를 들어, Pair0 = [addr0, size0]), Pair1은 어드레스 값 addr1과 크기 값 size1을 포함하고(예를 들어, Pair1 = [addr1, size1]), 등등, PairN은 어드레스 값 addrN 및 크기 값 sizeN을 포함한다(예를 들어, PairN = [addrN, sizeN]). 쌍의 어드레스 값은 보안 어레이의 일부의 시작 지점(예를 들어, 시작 LBA)에 대응할 수 있고, 해당 쌍의 어드레스 값과 크기 값의 합은 보안 어레이의 해당 부분의 종료 지점(예를 들어, 종료 LBA)에 대응할 수 있다. 따라서, 전체 보안 어레이(예를 들어, 전체 보안 어레이를 포함하는 부분)는 [addr0, addr0 + size0] ∪ [addr1, addr1 + size1] ∪ … ∪ [addrN, addrN + sizeN]로 주어질 수 있다.
레지스터(314-2)에 의해 정의된 크기 값이 0인 제1 쌍은 보안 어레이의 정의를 중지할 수 있다. 예를 들어, 도 3a에 예시된 예에서, Pair2의 크기 값이 0이면, 보안 어레이는 [addr0, addr0 + size0] ∪ [addr1, addr1 + size1]로 주어질 것이다.
레지스터(314-1 및 314-2)에 의해 정의된 보안 어레이의 예(예를 들어, 0이 아닌 것으로 레지스터(314-2)에 의해 정의된 모든 크기 값을 가짐)가 도 3b에 예시된다. 예를 들어, 도 3b에 도시된 바와 같이, 메모리 어레이(301)의 섹터(305-0)와 연관된 어드레스(예를 들어, LBA)는 addr0이고, 메모리 어레이(301)의 섹터(305-1)와 연관된 어드레스는 addr0 + size0이고, 메모리 어레이(301)의 섹터(305-2)와 연관된 addr1이고, 메모리 어레이(301)의 섹터(305-3)과 연관된 어드레스는 addr1 + size1이고, 메모리 어레이(301)의 섹터(305-4)와 연관된 어드레스는 addrN이고, 메모리 어레이(301)의 섹터 (305-5)와 연관된 어드레스는 addrN + sizeN이다. 이와 같이, 보안 어레이는 섹터(예를 들어, 섹터에 저장된 데이터) (305-0 내지 305-1), 섹터 (305-2 내지 305-3, 및 305-4 내지 305-5)를 포함한다. 그러나, 메모리 어레이(301)의 섹터 (305-0) 및 섹터 (305-1 내지 305-2) 이전에 있는 메모리 어레이(301)의 섹터는 보안 어레이의 일부가 아니다(예를 들어, 보안 어레이는 어레이(301)의 서브 세트를 포함한다).
도 4는, 본 개시의 실시예에 따른 메모리 어레이에 저장된 데이터를 복수의 세그먼트로 분할하고, 각각의 개별 세그먼트에 저장된 데이터를 검정 및 교정하는데 사용되는 레지스터(416-1 내지 416-8)의 예를 예시한다. 레지스터(416-1 내지 416-8)는 예를 들어, 도 2와 관련하여 이전에 설명된 레지스터(216-1 내지 216-8)일 수 있고, 메모리 어레이는 예를 들어, 도 2와 관련하여 앞에 설명된 메모리 어레이(201)일 수 있다.
도 4에 예시된 예에 도시되고 본 출원에서 이전에 설명된 바와 같이, 메모리 어레이에 저장된 데이터는 복수의(예를 들어, N) 세그먼트로 분할될 수 있으며, 그 중 5개 세그먼트(예를 들어, 세그먼트 (420-1, 420-2, 420-3, 420-4, 및 420-5))는 도 4에 예시되어 있다. 또한, 본 출원에서 이전에 설명된 바와 같이(예를 들어, 도 2와 관련하여), 복수의 세그먼트는 메모리 파워 공급 동안 데이터가 검정 및/또는 교정될 수 있는 제1 수의 (예를 들어, K) 세그먼트, 및 메모리 파워 공급 후에 데이터가 유효성 검정 및/또는 교정될 수 있는 제2 수(예를 들어, N-K) 세그먼트를 포함할 수 있다. 도 4에 예시된 예에서, 세그먼트(420-1, 420-2 및 420-3)은 복수의 세그먼트 중 제1 수의 세그먼트에 포함되고, 세그먼트 (420-4 및 420-5)는 복수의 세그먼트 중 제2 수의 세그먼트에 포함된다.
도 4에 도시된 바와 같이, 레지스터(416-1)는 복수의 세그먼트 중 각각의 개별 세그먼트의 어드레스(예를 들어, 어드레스 값)를 정의할 수 있고, 레지스터(416-2)는 복수의 세그먼트 중 각각의 개별 세그먼트의 크기(예를 들어, 크기 값)를 정의할 수 있다. 레지스터(416-1)에 의해 정의된 각각의 개별 세그먼트의 어드레스는 예를 들어, 해당 세그먼트의 시작 지점(예를 들어, 시작 LBA)에 대응할 수 있고, 레지스터(416-2)에 의해 정의된 각각의 개별 세그먼트의 크기는 예를 들어, 해당 세그먼트의 종료 지점(예를 들어, 종료 LBA)에 대응할 수 있다. 예를 들어, 도 4에 예시된 예에서, 세그먼트 (420-1)의 어드레스는 레지스터 (416-1)에 의해 0x aabbcc로 정의되고, 세그먼트 (420-1)의 크기는 레지스터 (416-2)에 의해 0x10000으로 정의된다. 유사하게, 도 4에 예시된 바와 같이 세그먼트 (420-2, 420-3, 420-4 및 420-5)의 어드레스는 레지스터 (416-1)에 의해 개별적으로 0x aa1122, 0x 123444, 0x ddeeff 및 0x aa55bb로 정의되고, 세그먼트(420-2, 420-3, 420-4, 420-5)의 크기는 레지스터 (416-2)에 의해 개별적으로 0x10000, 0x20000, 0x10000, 0x20000으로 정의된다.
본 출원의 이전에 설명된 바와 같이(예를 들어, 도 2와 관련하여), 데이터의 복수의 세그먼트 중 각각의 개별 세그먼트는 해당 세그먼트에 저장된 데이터를 검정하는데 사용하기 위해 이와 연관된 다른 암호화 해시(예를 들어, 골든 해시)를 가질 수 있다. 예를 들어, 도 4에 예시된 예에서, 세그먼트 (420-1)은 연관된 골든 해시 #1을 갖고, 세그먼트 (420-2)는 연관된 골든 해시 #2를 가지며, 세그먼트 (420-3)은 연관된 골든 해시 #K를 가지며, 세그먼트 (420-4)는 연관된 골든 해시 #K+1을 가지며, 세그먼트 (420-5)는 연관된 골든 해시 N을 갖는다. 도 4에 도시된 바와 같이, 각각의 개별 세그먼트와 관련된 골든 해시는 레지스터 (416-3)에 저장될 수 있다.
도 4에 도시된 바와 같이, 레지스터(416-4)는 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 유효성 검정 상태의 표시(예를 들어, 표시하는 값)를 제공할 수 있다. 도 4에 예시된 예에서, 복수의 세그먼트 중 제1 수의 세그먼트에 저장된 데이터는 검증되었지만, 복수의 세그먼트 중 제2 수의 세그먼트에 저장된 데이터는 아직 검정되지 않았다(예를 들어, 메모리 파워 공급이 완료되었지만 제2 수의 세그먼트에 저장된 데이터의 유효성 검정은 아직 시작되지 않았다). 이와 같이, 도 4에 예시된 바와 같이, 레지스터(416-4)는 세그먼트(420-1)에 저장된 데이터의 유효성 검정이 수행되었다는 표시, 세그먼트(420-2)에 저장된 데이터의 유효성 검정이 수행되었다는 표시, 세그먼트 (420-3)에 저장된 데이터의 유효성 검정이 수행되었다는 표시, 세그먼트 (420-4)에 저장된 데이터의 유효성 검정이 수행되지 않는다는 표시, 및 세그먼트 (420-5)에 저장된 데이터의 유효성 검정이 수행되지 않았다는 표시를 제공할 수 있다.
도 4에 도시된 바와 같이, 세그먼트에 저장된 데이터의 유효성 검정이 수행되면(예를 들어, 레지스터(416-4)에 의해 제공되는 해당 세그먼트에 대한 값으로 표시된 바와 같이), 레지스터(416-5)는 해당 세그먼트에 저장된 데이터의 유효성 검정 결과의 (예를 들어, 표시하는 값) 표시를 제공할 수 있다. 도 4에 예시된 예에서, 도 4에 도시된 바와 같이 레지스터 (416-5)는 세그먼트 (420-1)에 저장된 데이터가 유효한 것으로 결정되었다는 표시, 세그먼트 (420-2)에 저장된 데이터가 유효하지 않은 것으로 결정되었다는 표시, 및 세그먼트 (420-3)에 저장된 데이터가 유효하지 않은 것으로 결정되었다는 표시를 제공한다. 또한, 세그먼트 (420-4 및 420-5)에 저장된 데이터가 아직 검정되지 않았기 때문에(예를 들어, 레지스터(416-4)에 의해 제공되는 해당 세그먼트에 대한 값에 의해 표시된), 레지스터(416-5)는 도 4에 도시된 바와 같이 세그먼트 (420-4 또는 420-5)에 대한 값을 제공하지 않는다(예를 들어, 포함하지 않는다).
본 출원에서 이전에 설명된 바와 같이(예를 들어, 도 2와 관련하여), 세그먼트에 저장된 데이터의 유효성 검정 결과가 데이터가 유효하지 않은 것으로 결정된 경우(예를 들어, 레지스터 (416-5)에 의해 제공되는 해당 세그먼트에 의해 표시된), 해당 세그먼트에 저장된 데이터는 교정될 수 있다. 도 4에 도시된 바와 같이, 레지스터(416-6)는 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 교정이 허용되는지 여부의 표시(예를 들어, 표시하는 값)를 제공할 수 있다. 예를 들어, 도 4에 예시된 예에서 레지스터 (416-6)은 세그먼트 (420-1)에 저장된 데이터의 교정이 허용된다는 표시, 세그먼트 (420-2)에 저장된 데이터의 교정이 허용된다는 표시, 세그먼트 (420-3)에 저장된 데이터의 교정이 허용되지 않는다는 표시, 세그먼트 (420-4)에 저장된 데이터의 교정이 허용되지 않는다는 표시, 세그먼트 (420-5)에 저장된 데이터의 교정이 허용된다는 표시를 제공한다.
도 4에 도시된 바와 같이, 세그먼트에 저장된 데이터의 교정이 허용되면(예를 들어, 레지스터 (416-6)에 의해 제공되는 해당 세그먼트에 대한 값으로 표시된), 레지스터 (416-7)은 교정 동안 해당 세그먼트에 저장된 데이터가 복구될 수 있는 어드레스(예를 들어, 어드레스 값)를 정의할 수 있다. 레지스터 (416-7)에 의해 정의된 어드레스는 예를 들어, 데이터가 복구될 수 있는 메모리의 교정 블록 내 위치에 대응할 수 있다. 예를 들어, 도 4에 예시된 예에서, 세그먼트 (420-1)에 저장된 데이터가 복구될 수 있는 어드레스는 레지스터 (416-7)에 의해 addr1로 정의되며, 세그먼트 (420-2)에 저장된 데이터가 복구될 수 있는 어드레스는 레지스터 (416-7)에 의해 addr2로 정의되고 세그먼트 (420-5)에 저장된 데이터가 복구될 수 있는 어드레스는 레지스터 (416-7)에 의해 addr3으로 정의된다. 또한, 세그먼트 (420-3 및 420-4)에 저장된 데이터의 교정이 허용되지 않기 때문에(예를 들어, 레지스터 (416-6)에 의해 제공된 세그먼트에 대한 값으로 표시됨) 레지스터 (416-7)은 도 4에 예시된 바와 같이 세그먼트 (420-3 또는 420-4)에 대한 어드레스 값을 정의하지 않는다(예를 들어, 포함하지 않는다).
도 4에 도시된 바와 같이, 세그먼트에 저장된 데이터의 교정이 허용되는 경우(예를 들어, 레지스터 (416-6)에 의해 제공된 해당 세그먼트에 대한 값으로 표시됨), 레지스터 (416-8)은 교정 결과의 (예를 들어, 나타내는 값) 표시를 제공할 수 있다. 도 4에 예시된 예에서, 레지스터 (416-8)은 세그먼트 (420-1)에 저장된 데이터가 교정되지 않았음을 나타내는 표시(예를 들어, 세그먼트 (420-1)에 저장된 데이터가 유효한 것으로 결정되었기 때문에, 해당 데이터의 교정이 필요하지 않음), 세그먼트 (420-2)에 저장된 데이터가 교정되었다는 표시(예를 들어, 세그먼트 (420-2)에 저장된 데이터가 유효하지 않은 것으로 결정되었지만, 교정이 허용됨), 및 세그먼트 (420-5)에 저장된 데이터가 교정되지 않았다는 표시(예를 들어, 세그먼트 (420-5)에 저장된 데이터가 아직 검정되지 않았기 때문에)를 제공한다. 또한, 세그먼트 (420-3 및 420-4)에 저장된 데이터의 교정이 허용되지 않기 때문에(예를 들어, 레지스터 (416-6)에 의해 제공된 세그먼트에 대한 값으로 표시됨), 레지스터 (416-7)은 도 4에 예시된 바와 같이 세그먼트(420-3 또는 420-4)에 대한 값을 제공하지 않는다(예를 들어, 포함하지 않음).
도 5는 본 개시의 실시예에 따른 암호화 해시를 사용하여 메모리에 저장된 데이터의 세그먼트를 검정(예를 들어, 검증할지 여부를 결정)하는 방법(525)을 예시한다. 메모리는 예를 들어, 도 2와 관련하여 앞에서 설명된 메모리 어레이(201)일 수 있고, 본 출원에서 앞에서 설명된 바와 같이 복수의 세그먼트로 분할될 수 있다. 방법(525)은 예를 들어, 도 2와 관련하여 앞에서 설명된 메모리 디바이스(206)(예를 들어, 회로부(210))에 의해 수행될 수 있다.
블록(527)에서, 방법(525)은 메모리로부터 복수의 메모리 세그먼트 중 하나에 저장된 데이터를 검색하는 단계를 포함한다. 세그먼트에 저장된 데이터는 (예를 들어, 도 2와 관련하여) 앞서 설명된 바와 같이 레지스터 (216-1 및 216-2)에 정의된 해당 세그먼트의 어드레스 및 크기를 사용하여 검색될 수 있다.
블록(529)에서, 방법(525)은 메모리 세그먼트에 저장된 데이터에 대한 런타임 암호화 해시를 생성하는 단계를 포함하고, 블록(531)에서, 방법(525)은 메모리 세그먼트와 연관된 골든 해시를 검색하는 단계를 포함한다. 골든 해시는 본 출원에서 앞에서 설명된 바와 같이(예를 들어, 도 2와 관련하여) 레지스터(216-3)로부터 검색될 수 있다.
블록(533)에서, 방법(525)은 런타임 암호화 해시를 골든 해시와 비교하는 단계를 포함하고, 블록(535)에서 방법(525)은 런타임 암호화 해시가 골든 해시와 일치하는지 여부를 결정하는 단계를 포함한다. 런타임 암호화 해시가 골든 해시와 일치하는 것으로 결정되면, 블록 (537)에서 메모리 세그먼트에 저장된 데이터가 검정된다(예를 들어, 유효한 것으로 결정됨). 런타임 암호화 해시가 골든 해시와 일치하지 않는 것으로 결정되면, 방법 (525)는 블록 (539)로 진행한다.
블록(539)에서, 방법(525)은 메모리 세그먼트에 저장된 데이터의 교정이 허용되는지 여부를 결정하는 단계를 포함한다. 메모리 세그먼트에 저장된 데이터의 교정이 허용되는지 여부의 결정은 본 출원에서 이전에 설명된 바와 같이(예를 들어, 도 2와 관련하여) 레지스터(216-6)를 사용하여 이루어질 수 있다.
메모리 세그먼트에 저장된 데이터의 교정이 허용되는 것으로 결정되면, 블록(541)에서 데이터가 교정된다. 데이터 교정은 본 출원에서 이전에 설명된 바와 같이 (예를 들어, 도 2와 관련하여) 레지스터(216-7)를 사용하여 메모리로부터 데이터를 복구하는 단계를 포함할 수 있다. 메모리 세그먼트에 저장된 데이터의 교정이 허용되지 않는 것으로 결정되면, 블록(543)에서 메모리 세그먼트에 저장된 데이터는 검정되지 않는다(예를 들어, 유효하지 않은 것으로 결정됨).
도 6은 본 개시의 실시예에 따른 호스트(602) 및 메모리 디바이스(606)를 포함하는 예시적인 시스템의 블록도이다. 호스트(602) 및 메모리 디바이스(606)는 예를 들어, 도 2와 관련하여 이전에 각각 설명된 호스트(202) 및 메모리 디바이스(206)일 수 있다.
컴퓨팅 디바이스는 계층을 사용하여 단계적으로 부팅할 수 있으며, 각각의 계층은 후속 계층을 인증 및 로딩하고 각각의 계층에서 점점 더 정교한 런타임 서비스를 제공한다. 계층은 이전 계층에 의해 제공될 수 있고 후속 계층에 제공될 수 있으며, 이에 의해 하위 계층 상에 구축되고 상위 차수의 계층을 제공하는 계층의 상호 연결된 웹을 생성한다. 도 6에 도시된 바와 같이, 계층 0("L0")(651) 및 계층 1("L1")(653)은 호스트 내에 있다. 계층 0(651)은 계층 1(653)에 FDS(Firmware Derivative Secret) 키(652)를 제공할 수 있다. FDS 키(652)는 계층 1(653)의 코드의 아이덴티티 및 다른 보안 관련 데이터를 설명할 수 있다. 일 예에서, 특정 프로토콜(예를 들어, RIOT(robust internet of things) 코어 프로토콜)은 FDS (652)를 사용하여 로딩하는 계층 1(653)의 코드를 검정할 수 있다. 일 예에서, 특정 프로토콜은 DICE(device identification composition engine) 및/또는 RIOT 코어 프로토콜을 포함할 수 있다. 예를 들어, FDS는 계층 1 펌웨어 이미지 자체, 인증된 계층 1 펌웨어를 암호화 방식으로 식별하는 매니페스트(manifest), 보안 부팅 구현의 컨텍스트에서 서명된 펌웨어의 펌웨어 버전 번호 및/또는 디바이스의 보안에 중요한 구성 설정을 포함할 수 있다. 디바이스 비밀(device secret)(658)을 사용하여 FDS(652)를 생성하고 호스트(602)의 메모리에 저장할 수 있다.
호스트는 화살표(654)로 도시된 바와 같이 데이터를 메모리 디바이스(606)로 송신할 수 있다. 송신된 데이터는 공개된 외부 식별, 인증서(예를 들어, 외부 식별 인증서), 및/또는 외부 공개 키를 포함할 수 있다. 메모리 디바이스(606)의 계층 2("L2")(655)는 송신된 데이터를 수신하고, 운영 체제("OS")(657)의 동작과 제1 애플리케이션(659-1) 및 제2 애플리케이션(659-2)에서 데이터를 실행할 수 있다.
예시적인 동작에서, 호스트(602)는 디바이스 비밀(658)을 판독하고, 계층 1(653)의 아이덴티티를 해시하고, 다음을 포함하는 계산을 수행할 수 있다:
KL1 = KDF [Fs(s), 해시("불변 정보")]
여기서, KL1은 외부 공개 키이고, KDF(예를 들어, NIST(National Institute of Standards and Technology) 특별 간행물 800-108에 정의된 KDF)는 키 파생 함수(예를 들어, HMAC-SHA256)이고 Fs(s)는 디바이스 비밀(658)이다. FDS(652)는 다음을 수행하여 결정할 수 있다:
FDS = HMAC-SHA256 [Fs(s), SHA256(“불변 정보")]
마찬가지로, 메모리 디바이스(606)는 화살표(656)로 나타낸 바와 같이 호스트(602)에 데이터를 송신할 수 있다.
도 7는 본 개시의 실시예에 따른 다수의 파라미터를 결정하기 위한 예시적인 프로세스의 블록도이다. 도 7는 화살표(754)로 표시된, 메모리 디바이스(예를 들어, 도 6의 606)의 계층 2(예를 들어, 계층 2(655))로 발송된 외부 공개 아이덴티피케이션, 외부 인증서 및 외부 공개 키를 포함하는 파라미터 결정의 예이다. 도 7의 계층 0("L0")(751)은 도 6의 계층 0(651)에 대응하고, 마찬가지로 FDS(752)는 FDS(652)에 대응하고, 계층 1(753)은 계층 1(653)에 대응하고, 화살표(754 및 756)는 화살표(654 및 656)에 각각 대응한다.
계층 0(751)으로부터의 FDS(752)는 계층 1(753)으로 발송되고 비대칭 ID 생성기(761)에 의해 사용되어 공개 아이덴티피케이션("IDlk공개")(765) 및 개인 아이덴티피케이션(767)을 생성한다. 약어 "IDlk공개"에서, "lk"는 계층 k(이 예에서는 계층 1)를 나타내고 "공개(public)"는 아이덴티피케이션이 공개적으로 공유됨을 나타낸다. 공개 아이덴티피케이션(765)은 호스트의 계층 1(753)의 오른쪽 및 외부로 확장되는 화살표에 의해 공유되는 것으로 예시된다. 생성된 개인 아이덴티피케이션(767)은 암호화기(encryptor)(773)에 대한 키 입력으로 사용된다. 암호화기(773)은 데이터를 암호화하는데 사용되는 임의의 프로세서, 컴퓨팅 디바이스 등이 될 수 있다.
호스트의 계층 1(753)은 비대칭 키 생성기(763)를 포함할 수 있다. 적어도 하나의 예에서, 난수 생성기(RND)(736)는 옵션으로 비대칭 키 생성기(763)에 난수를 입력할 수 있다. 비대칭 키 생성기(763)는 도 6의 호스트(602)와 같은 호스트와 연관된 공개 키("KLk공개")(769)(외부 공개 키라고 함) 및 개인 키("KLK개인") (771)(외부 개인 키라고 함)를 생성할 수 있다. 외부 공개 키(769)는 암호화기(773)에 대한 입력("데이터"로서)일 수 있다. 암호화기(773)는 외부 개인 아이덴티피케이션(767) 및 외부 공개 키(769)의 입력을 사용하여 결과 K'(775)를 생성할 수 있다. 외부 개인 키(771) 및 결과 K'(775)는 추가 암호화기(777)에 입력되어 출력 K''(779)가 될 수 있다. 출력 K''(779)는 계층 2(도 6의 (655))로 송신된 외부 인증서("IDL1인증서")(781)이다. 외부 인증서(781)는 디바이스로부터 발송된 데이터의 출처를 검증 및/또는 인증하는 능력을 제공할 수 있다. 예를 들어, 호스트로부터 발송된 데이터는 도 9와 관련하여 추가로 설명될 인증서를 검증함으로써 호스트의 아이덴티티와 연관될 수 있다. 또한, 외부 공개 키("KL1공개 키")(783)는 계층 2로 송신될 수 있다. 따라서, 호스트의 공개 아이덴티피케이션(765), 인증서(781) 및 외부 공개 키(783)는 메모리 디바이스의 계층 2로 송신될 수 있다.
도 8은 본 개시의 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다. 도 8은 디바이스 아이덴티피케이션("IDL2공개")(866), 디바이스 인증서("IDL2인증서")(882), 및 디바이스 공개 키("KL2공개 키") (884)를 생성하는 메모리 디바이스(예를 들어, 도 6의 메모리 디바이스(606))의 계층 2(855)를 예시한다.
도 7에 설명된 바와 같이, 호스트의 계층 1으로부터 메모리 디바이스의 계층 2(855)로 송신된 외부 공개 키("KL1공개 키")(883)는 메모리 디바이스의 비대칭 ID 생성기(862)에 의해 사용되어 메모리 디바이스의 공개 아이덴티피케이션("IDlk 공개")(866) 및 개인 아이덴티피케이션(868)을 생성한다. 약어 "IDlk공개"에서 “lk"는 계층 k(이 예에서는 계층 2)를 나타내고 "공개(public)"은 아이덴티피케이션이 공개적으로 공유됨을 나타낸다. 공개 아이덴티피케이션(866)은 계층 2(855)의 오른쪽 및 외부로 확장되는 화살표로 공유되는 것으로 예시되어 있다. 생성된 개인 아이덴티피케이션(868)은 암호화기(874)에 대한 키 입력으로 사용된다.
도 8에 도시된 바와 같이, 외부 인증서(881) 및 공개 아이덴티피케이션(865)은 외부 공개 키(883)와 함께 인증서 검증기(certificate verifier)(899)에 의해 사용된다. 인증서 검증기(899)는 호스트로부터 외부 인증서(881)를 검증할 수 있고, 외부 인증서(881)가 검증되었는지 여부에 응답하여, 호스트로부터 수신된 데이터를 수락할지 또는 폐기할지 여부를 결정할 수 있다. 외부 인증서(881)를 검증하는 추가 세부사항은 본 출원에서 추가로 설명된다(예를 들어, 도 9와 관련하여).
메모리 디바이스의 계층 2(855)는 비대칭 키 생성기(864)를 포함할 수 있다. 적어도 하나의 예에서, 난수 생성기(RND)(838)는 옵션으로 비대칭 키 생성기(864)에 난수를 입력할 수 있다. 비대칭 키 생성기(864)는 도 6의 메모리 디바이스(606)와 같은 메모리 디바이스와 관련된 공개 키("KLk공개")(870)(디바이스 공개 키라고 함) 및 개인 키("KLK개인")(872)(디바이스 개인 키라고 함)를 생성할 수 있다. 디바이스 공개 키(870)는 암호화기(874)에 대한 입력("데이터"로서)일 수 있다. 암호화기(874)는 디바이스 개인 아이덴티피케이션(868) 및 디바이스 공개 키(870)의 입력을 사용하여 결과 K'(876)를 생성할 수 있다. 디바이스 개인 키(872) 및 결과 K'(876)는 추가 암호화기(878)에 입력되어 출력 K''(880)가 될 수 있다. 출력 K''(880)는 계층 1(도 6의 653)로 다시 송신된 디바이스 인증서("IDL2 인증서")(882)이다. 디바이스 인증서(882)는 디바이스로부터 발송된 데이터의 출처를 검증 및/또는 인증하는 능력을 제공할 수 있다. 일 예로서, 메모리 디바이스로부터 발송된 데이터는 도 9와 관련하여 추가로 설명되는 바와 같이 인증서를 검증함으로써 메모리 디바이스의 아이덴티티와 연관될 수 있다. 또한, 디바이스 공개 키("KL2공개 키")(884)는 계층 1로 송신될 수 있다. 따라서, 메모리 디바이스의 공용 아이덴티피케이션(866), 인증서(882) 및 디바이스 공개 키(884)는 호스트의 계층 1로 송신될 수 있다.
일 예에서, 호스트가 메모리 디바이스로부터 공개 키를 수신하는 것에 응답하여, 호스트는 디바이스 공개 키를 사용하여 메모리 디바이스로 발송될 데이터를 암호화할 수 있다. 반대로, 메모리 디바이스는 외부 공개 키를 사용하여 호스트로 발송될 데이터를 암호화할 수 있다. 메모리 디바이스가 디바이스 공개 키를 사용하여 암호화된 데이터를 수신한 것에 응답하여, 메모리 디바이스는 자신의 디바이스 개인 키를 사용하여 데이터를 복호화할 수 있다. 마찬가지로, 호스트가 외부 공개키를 사용하여 암호화된 데이터를 수신한 것에 응답하여, 호스트는 자신의 외부 개인 키로 데이터를 복호화할 수 있다. 디바이스 개인 키는 메모리 디바이스 외부의 다른 디바이스와 공유되지 않고, 외부 개인 키는 호스트 외부의 다른 디바이스와 공유되지 않으므로, 메모리 디바이스와 호스트로 발송된 데이터는 안전하게 유지된다.
도 9는 본 개시의 실시예에 따른 인증서를 검증하기 위한 예시적인 프로세스의 블록도이다. 도 9의 예시된 예에서, 공개 키(983), 인증서(981), 및 공개 아이덴티피케이션(965)는 호스트(예를 들어, 도 6의 호스트(602)의 계층 1(653)로부터)로부터 제공된다. 인증서(981) 및 외부 공개 키(983)의 데이터는 암호 복호화기(985)에 대한 입력으로 사용될 수 있다. 복호화기(985)는 데이터를 복호화하는데 사용되는 임의의 프로세서, 컴퓨팅 디바이스 등일 수 있다. 인증서(981) 및 외부 공개 키(983)의 복호화 결과는 공개 아이덴티피케이션과 함께 2차 복호화기(987)로의 입력으로 사용될 수 있고, 결과로 출력될 수 있다. 외부 공개 키(983) 및 암호 복호화기(987)의 출력은 (989)에 예시된 바와 같이 인증서가 검증되었는지 여부를 나타낼 수 있으며, 결과적으로 예 또는 아니오(991)가 출력으로 된다. 인증서가 검증 중인 것에 응답하여, 검증 중인 디바이스로부터 수신된 데이터는 수락, 복호화 및 프로세싱될 수 있다. 인증서가 검증되지 않은 것에 대한 응답으로, 검증 중인 디바이스로부터 수신된 데이터는 폐기, 제거 및/또는 무시될 수 있다. 이러한 방식으로 부정한 데이터를 발송하는 부정한 디바이스는 검출되고 회피될 수 있다. 예를 들어, 프로세싱될 데이터를 발송하는 해커는 식별될 수 있고 해킹 데이터는 프로세싱되지 않을 수 있다.
도 10은 본 개시의 실시예에 따른 서명을 검증하기 위한 예시적인 프로세스의 블록도이다. 디바이스가 후속 거부를 피하기 위해, 검증될 수 있는 데이터를 발송하는 경우 서명을 생성하여 데이터와 함께 발송될 수 있다. 예를 들어, 제 1 디바이스는 제 2 디바이스의 요청을 할 수 있고, 제 2 디바이스가 요청을 수행하면, 제 1 디바이스는 제 1 디바이스가 그러한 요청을 한 적이 없음을 나타낼 수 있다. 서명 사용과 같은 부인 방지 접근 방식은 제1 디바이스의 부인을 방지하고 제2 디바이스가 후속 어려움 없이 요청된 태스크를 수행할 수 있도록 한다.
메모리 디바이스(1006)(도 2의 메모리 디바이스(206)와 같은)는 데이터(1090)를 호스트(예컨대, 도 2에 호스트(202))로 발송할 수 있다. 메모리 디바이스(1006)는 (1094)에서 디바이스 개인 키(1071)를 사용하여 서명(1096)을 생성할 수 있다. 서명(1096)은 호스트(1002)로 송신될 수 있다. 호스트(1002)는 (1098)에서 이전에 수신된 외부 공개 키 (1069) 및 데이터(1092)를 사용하여 서명을 검증할 수 있다. 이러한 방식으로, 개인 키를 사용하여 서명을 생성하고 공개 키를 사용하여 검증한다. 이러한 방식으로, 고유 서명을 생성하는데 사용된 개인 키는 서명을 발송하는 디바이스에 대해 비공개로 유지될 수 있으며 동시에 수신 디바이스는 검증을 위해 발송 디바이스의 공개 키를 사용하여 서명을 복호화할 수 있도록 한다. 이는 수신 디바이스의 공개 키를 사용하여 발송 디바이스에 의해 암호화되고, 수신기의 개인 키를 사용하여 수신 디바이스에 의해 복호화되는 데이터의 암호화/복호화와 대조된다. 적어도 하나의 예에서, 디바이스는 내부 암호화 프로세스(예를 들어, ECDSA(Elliptical Curve Digital signature) 또는 유사한 프로세스를 사용하여 디지털 서명을 검증할 수 있다.
도 11은 본 개시의 실시예에 따른 예시적인 메모리 디바이스(1106)의 블록도이다. 메모리 디바이스(1106)는 예를 들어, 도 2와 관련하여 이전에 설명된 메모리 디바이스(206)일 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 다수의 메모리 어레이(1101-1 내지 1101-7)를 포함할 수 있다. 메모리 어레이(1101-1 내지 1101-7)는 도 1과 관련하여 이전에 설명된 메모리 어레이(101)와 유사할 수 있다. 또한, 도 10에 도시된 예에서, 메모리 어레이(1101-3)는 보안 어레이이고, 메모리 어레이(1101-6)의 서브 세트(1111)는 보안 어레이를 포함하고, 메모리 어레이(1101-7)의 서브 세트(1113 및 1115)는 보안 어레이를 포함한다. 서브 세트(1111, 1113, 1115)는 각각 예를 들어, 4킬로 바이트의 데이터를 포함할 수 있다. 그러나, 본 개시의 실시예는 메모리 어레이 또는 보안 어레이의 특정 수 또는 배열로 한정되지 않는다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 교정(예를 들어, 복원) 블록(1117)을 포함할 수 있다. 교정 블록(1117)은 메모리 디바이스(1106)의 동작 동안 발생할 수 있는 에러(예를 들어, 불일치)의 경우 및/또는 본 출원의 앞에서 설명된 것 처럼 어레이(1101-1 내지 1101-7)에 저장된 데이터가 유효하지 않은 것으로 결정되는 경우 데이터 소스로서 사용될 수 있다. 교정 블록(1117)은 호스트에 의해 어드레스 지정 가능한 메모리 디바이스(1106) 영역 외부에 있을 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 SPI(serial peripheral interface)(1104) 및 컨트롤러(1108)를 포함할 수 있다. 메모리 디바이스(1106)는 SPI(1104) 및 컨트롤러(1108)를 사용하여 본 출원에서 이전에 설명된 바와 같이(예를 들어, 도 2와 관련하여) 호스트 및 메모리 어레이(1101-1 내지 1101-7)와 통신할 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 메모리 디바이스(1106)의 보안을 관리하기 위한 보안 레지스터(1119)를 포함할 수 있다. 예를 들어, 보안 레지스터(1119)는 애플리케이션 컨트롤러를 구성하고 외부적으로 통신할 수 있다. 또한, 보안 레지스터(1119)는 인증 명령에 의해 수정될 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 키(1121)를 포함할 수 있다. 예를 들어, 메모리 디바이스(1106)는 루트 키, DICE-RIOT 키, 및/또는 다른 외부 세션 키와 같은 키를 저장하기 위한 8개의 상이한 슬롯을 포함할 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 EEPROM(electronically erasable programmable read-only memory)(1123)를 포함할 수 있다. EEPROM(1123)은 데이터의 개별 바이트가 소거되고 프로그래밍될 수 있는 호스트에 사용할 수 있는 안전한 비휘발성 영역을 제공할 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1006)는 카운터(예를 들어, 모노토닉 카운터)(1124)를 포함할 수 있다. 카운터(1124)는 호스트로부터 수신된 및/또는 호스트로 발송된 명령(예를 들어, 명령 세트 또는 시퀀스에 서명하기 위해)에 대한 재생 방지 메커니즘(예를 들어, 프레시니스 생성기)으로 사용될 수 있다. 예를 들어, 메모리 디바이스(1106)는 6개의 상이한 모노토닉 카운터를 포함할 수 있으며, 그 중 2개는 인증된 명령을 위해 메모리 디바이스(1106)에 의해 사용될 수 있고, 그 중 4개는 호스트에 의해 사용될 수 있다.
도 11에 도시된 바와 같이, 메모리 디바이스(1106)는 SHA-256 암호화 해시 함수(1126), 및/또는 HMAC-SHA256 암호화 해시 함수(1128)를 포함할 수 있다. SHA-256 및/또는 HMAC-SHA256 암호화 해시 함수(1126 및 1128)는 예를 들어, 본 출원의 앞서 설명된 바와 같이, 메모리 어레이(1101-1 내지 1101-7)에 저장된 데이터를 검정하는 데 사용되는 런타임 암호화 해시 및/또는 골든 해시와 같은 암호화 해시를 생성하기 위해 메모리 디바이스(1106)에 의해 사용될 수 있다. 또한, 메모리 디바이스(1106)는 DICE-RIOT(1130)의 L0 및 L1을 지원할 수 있다.
특정 실시예가 본 출원에서 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하기 위해 계산된 배열이 도시된 특정 실시예를 대체할 수 있음을 이해할 것이다. 본 개시는 개시의 다수의 실시예의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해되어야 한다. 상기 실시예의 조합 및 본 출원에 구체적으로 설명되지 않은 다른 실시예는 상기 설명을 검토함으로써 당업자에게 자명할 것이다. 본 개시의 다수의 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 따라서, 본 발명의 다수의 실시예의 범위는 첨부된 청구범위를 참조하여 결정되어야 하며, 그러한 청구 범위가 부여되는 등가물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 피처는 본 개시를 간소화할 목적으로 단일 실시예에서 함께 그룹화된다. 이러한 개시 방법은 본 개시의 개시된 실시예가 각각의 청구범위에 명시적으로 인용된 것보다 더 많은 피처를 사용해야 하는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려 다음 청구범위가 반영하는, 독창적인 주제는 단일의 개시된 실시예의 모든 피처보다 적다. 따라서, 다음 청구범위는 상세한 설명에 통합되며 각각의 청구범위는 그 자체로 별도의 실시예로서 서 있다.

Claims (20)

  1. 장치에 있어서,
    메모리; 및
    회로부를 포함하되, 상기 회로부는,
    상기 메모리를 복수의 세그먼트로 분할하고, 각각의 개별 세그먼트는 상이한 암호화 해시(cryptographic hash)와 연관되며;
    상기 메모리에 파워를 공급하는 동안, 해당 개별 세그먼트와 연관된 상기 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정(validate)하고; 및
    상기 메모리에 파워를 공급한 후, 상기 복수의 세그먼트 중 제2 수 세그먼트에 저장된 데이터, 해당 개별 세그먼트와 연관된 상기 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하도록 구성된, 장치.
  2. 청구항 1에 있어서, 상기 회로부는,
    상기 제1 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터에 대해 상이한 런타임 암호화 해시를 생성하는 단계; 및
    각각의 개별 세그먼트에 저장된 데이터에 대해 생성된 상기 런타임 암호화 해시를 상기 해당 개별 세그먼트와 연관된 암호화 해시와 비교하는 단계에 의해 상기 제1 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터를 검정하도록 구성된, 장치.
  3. 청구항 1에 있어서, 상기 회로부는,
    상기 제2 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터에 대해 상이한 런타임 암호화 해시를 생성하는 단계; 및
    각각의 개별 세그먼트에 저장된 데이터에 대해 생성된 상기 런타임 암호화 해시를 해당 개별 세그먼트와 연관된 암호화 해시와 비교하는 단계에 의해 상기 제2 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터를 검정하도록 구성된, 장치.
  4. 청구항 1에 있어서, 상기 회로부는,
    상기 메모리에 파워를 공급한 후, 상기 제1 수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터를 검정할 때, 상기 제1 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터를 호스트로 발송하고; 및
    상기 제2 수의 세그먼트의 해당 개별 세그먼트에 저장된 데이터를 검정할 때, 상기 제2 수의 세그먼트의 각각의 개별 세그먼트에 저장된 데이터를 상기 호스트로 발송하도록 구성된, 장치.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서, 상기 메모리는 메모리 셀의 보안 어레이를 포함하는, 장치.
  6. 청구항 5에 있어서, 상기 회로부는,
    상기 보안 어레이의 어드레스를 정의하도록 구성된 레지스터; 및
    상기 보안 어레이의 크기를 정의하도록 구성된 레지스터를 포함하는, 장치.
  7. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서, 상기 회로부는 각각의 개별 세그먼트와 연관된 상기 암호화 해시를 저장하도록 구성된 레지스터를 포함하고, 상기 레지스터는 상기 메모리의 사용자가 액세스할 수 없는, 장치.
  8. 메모리를 동작시키는 방법에 있어서,
    메모리를 복수의 세그먼트로 분할하는 단계로서, 각각의 개별 세그먼트는 상이한 암호화 해시와 연관된, 상기 분할하는 단계;
    상기 메모리에 파워를 공급하는 동안, 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터에 대해 상이한 런타임 암호화 해시를 생성하는 단계;
    상기 메모리에 파워를 공급하는 동안, 해당 개별 세그먼트에 저장된 데이터에 대해 생성된 상기 런타임 암호화 해시를 해당 개별 세그먼트와 연관된 암호화 해시와 비교함으로써 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 단계;
    상기 메모리에 파워를 공급한 후, 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터에 대해 상이한 런타임 암호화 해시를 생성하는 단계; 및
    상기 메모리에 파워를 공급한 후, 해당 개별 세그먼트에 저장된 데이터에 대해 생성된 상기 런타임 암호화 해시를 해당 개별 세그먼트와 연관된 암호화 해시와 비교함으로써 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 단계를 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 방법은,
    해당 개별 세그먼트에 저장된 데이터에 대해 생성된 상기 런타임 암호화 해시가 해당 개별 세그먼트와 연관된 암호화 해시와 일치함을 나타내는 상기 복수의 세그먼트 중 제1 수의 세그먼트에 대한 비교에 근거하여 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 단계; 및
    해당 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시가 해당 개별 세그먼트와 연관된 암호화 해시와 일치함을 나타내는 상기 복수의 세그먼트 중 제2 수 세그먼트에 대한 비교에 근거하여 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 단계를 포함하는, 방법.
  10. 청구항 8에 있어서, 상기 방법은,
    해당 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시가 해당 개별 세그먼트와 연관된 암호화 해시와 일치하지 않음을 나타내는 상기 복수의 세그먼트 중 제1 수의 세그먼트에 대한 비교에 근거하여 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 교정하는 단계; 및
    해당 개별 세그먼트에 저장된 데이터에 대해 생성된 런타임 암호화 해시가 해당 개별 세그먼트와 연관된 암호화와 일치하지 않음을 나타내는 상기 복수의 세그먼트 중 제2 수의 세그먼트에 대한 비교에 근거하여 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 교정하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서,
    상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 교정하는 단계는 상기 메모리로부터 상기 데이터를 복구하는 단계를 포함하고; 및
    상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 교정하는 단계는 상기 메모리로부터 상기 데이터를 복구하는 단계를 포함하는, 방법.
  12. 메모리를 동작시키는 방법에 있어서,
    메모리를 복수의 세그먼트로 분할하는 단계로서, 각각의 개별 세그먼트는 상이한 암호화 해시와 연관된, 상기 분할하는 단계;
    상기 메모리에 파워를 공급하는 동안, 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 단계;
    상기 메모리에 파워 공급 이후에, 상기 복수의 세그먼트 중 제1 수의 해당 개별 세그먼트에 저장된 데이터를 검증할 때 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 호스트로 발송하는 단계; 및
    상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 상기 호스트로 발송하는 동안, 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하는 단계를 포함하는, 방법.
  13. 청구항 12에 있어서, 상기 방법은, 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 상기 호스트로 발송한 후, 상기 복수의 세그먼트 중 제 2 수의 해당 개별 세그먼트에 저장된 데이터를 검정할 때 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 호스트로 발송하는 단계를 포함하는, 방법.
  14. 청구항 12 또는 청구항 13에 있어서, 상기 방법은 상기 호스트로부터 수신된 인증된 명령을 사용하여 각각의 개별 세그먼트와 연관된 암호화 해시를 생성하는 단계를 포함하는, 방법.
  15. 시스템에 있어서,
    메모리를 갖는 메모리 디바이스로서,
    상기 메모리는 복수의 세그먼트로 분할되며, 각각의 개별 세그먼트는 상이한 암호화 해시와 연관되며; 및
    상기 메모리 디바이스는,
    상기 메모리에 파워를 공급하는 동안, 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하고; 및
    상기 메모리에 파워를 공급한 후, 해당 개별 세그먼트와 연관된 암호화 해시를 사용하여 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 검정하도록 구성되고; 및
    호스트로서, 상기 호스트는,
    상기 메모리 디바이스가 상기 복수의 세그먼트 중 제2 수 세그먼트에 저장된 데이터를 검정하는 동안, 상기 메모리 디바이스가 상기 복수의 세그먼트의 제1 수의 해당 개별 세그먼트에 저장된 데이터를 검정할 때 상기 메모리 디바이스로부터 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 수신하고; 및
    상기 메모리 디바이스로부터 상기 복수의 세그먼트 중 제1 수의 각각의 개별 세그먼트에 저장된 데이터를 수신한 후, 상기 메모리 디바이스가 상기 복수의 세그먼트 중 제2 수의 해당 개별 세그먼트에 저장된 데이터를 검정할 때 상기 메모리 디바이스로부터 상기 복수의 세그먼트 중 제2 수의 각각의 개별 세그먼트에 저장된 데이터를 수신하도록 구성된, 상기 호스트를 포함하는, 시스템.
  16. 청구항 15에 있어서, 상기 메모리 디바이스는,
    상기 복수의 세그먼트들 각각의 개별 세그먼트의 어드레스를 정의하도록 구성된 레지스터; 및
    상기 복수의 세그먼트들 각각의 개별 세그먼트의 크기를 정의하도록 구성된 레지스터를 포함하는, 시스템.
  17. 청구항 15에 있어서, 상기 메모리 디바이스는,
    상기 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 유효성 검정(validation) 상태의 표시를 제공하도록 구성된 레지스터; 및
    상기 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 유효성 검정 결과의 표시를 제공하도록 구성된 레지스터를 포함하는, 시스템.
  18. 청구항 15에 있어서, 상기 메모리 디바이스는,
    상기 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 교정이 허용되는지 여부의 표시를 제공하도록 구성된 레지스터;
    상기 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터가 교정 동안 복구될 수 있는 메모리의 어드레스를 정의하도록 구성된 레지스터; 및
    상기 복수의 세그먼트 중 각각의 개별 세그먼트에 저장된 데이터의 교정 결과의 표시를 제공하도록 구성된 레지스터를 포함하는, 시스템.
  19. 청구항 15 내지 청구항 18 중 어느 한 항에 있어서, 상기 복수의 세그먼트 중 제1 수의 세그먼트는 상기 호스트에 의해 정의된 특정 수량의 세그먼트를 포함하고, 상기 메모리 디바이스는 상기 특정 수량의 세그먼트를 저장하도록 구성된 레지스터를 포함하는, 시스템.
  20. 청구항 15 내지 청구항 18 중 어느 한 항에 있어서, 상기 복수의 세그먼트 중 제1 수의 세그먼트는 특정 시간량(amount of time) 안에 상기 메모리 디바이스에 의해 검정될 수 있는 세그먼트의 수량을 포함하고, 상기 메모리 디바이스는 상기 특정 시간량을 저장하도록 구성된 레지스터를 포함하는, 시스템.
KR1020217033011A 2019-03-25 2020-03-16 암호화 해시를 사용하여 메모리에 저장된 데이터 검정 KR20210130240A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/363,100 2019-03-25
US16/363,100 US11271720B2 (en) 2019-03-25 2019-03-25 Validating data stored in memory using cryptographic hashes
PCT/US2020/022931 WO2020197821A1 (en) 2019-03-25 2020-03-16 Validating data stored in memory using cryptographic hashes

Publications (1)

Publication Number Publication Date
KR20210130240A true KR20210130240A (ko) 2021-10-29

Family

ID=72605159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217033011A KR20210130240A (ko) 2019-03-25 2020-03-16 암호화 해시를 사용하여 메모리에 저장된 데이터 검정

Country Status (6)

Country Link
US (2) US11271720B2 (ko)
EP (1) EP3948630A4 (ko)
JP (1) JP2022527163A (ko)
KR (1) KR20210130240A (ko)
CN (1) CN113767387A (ko)
WO (1) WO2020197821A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210200873A1 (en) * 2019-12-31 2021-07-01 Renesas Electronics America Inc. Method and system for continuously verifying integrity of secure instructions during runtime
US11900131B2 (en) * 2020-10-15 2024-02-13 EMC IP Holding Company LLC Dynamic remediation actions in response to configuration checks in an information processing system
KR102386614B1 (ko) * 2020-12-24 2022-05-09 유비벨록스(주) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법
US11455388B1 (en) * 2021-04-26 2022-09-27 Weeve.Network System and method for end-to-end data trust management with real-time attestation

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3846449B2 (ja) * 2003-04-24 2006-11-15 ソニー株式会社 情報処理装置、情報処理方法
US8683213B2 (en) * 2007-10-26 2014-03-25 Qualcomm Incorporated Progressive boot for a wireless device
US8788841B2 (en) 2008-10-23 2014-07-22 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
US8806220B2 (en) * 2009-01-07 2014-08-12 Microsoft Corporation Device side host integrity validation
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8625353B2 (en) * 2011-06-16 2014-01-07 Spansion Llc Method and apparatus for staggered start-up of a predefined, random, or dynamic number of flash memory devices
WO2015113046A1 (en) * 2014-01-27 2015-07-30 Rambus Inc. Implementing access control by system-on-chip
US9317691B2 (en) 2014-05-08 2016-04-19 Dell Products L.P. Pre-boot software verification
JP6162652B2 (ja) * 2014-06-20 2017-07-12 株式会社東芝 メモリ管理装置、プログラム、及び方法
KR102498668B1 (ko) 2017-05-17 2023-02-09 삼성전자주식회사 플래시-인지 힙 메모리 관리 방법 및 호스트 장치
US10521617B2 (en) * 2017-08-14 2019-12-31 Western Digital Technologies, Inc. Non-volatile memory device with secure read

Also Published As

Publication number Publication date
EP3948630A4 (en) 2022-12-21
WO2020197821A1 (en) 2020-10-01
US20200313861A1 (en) 2020-10-01
EP3948630A1 (en) 2022-02-09
US11683155B2 (en) 2023-06-20
CN113767387A (zh) 2021-12-07
US11271720B2 (en) 2022-03-08
JP2022527163A (ja) 2022-05-31
US20220158823A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
US11960632B2 (en) Data attestation in memory
US11683155B2 (en) Validating data stored in memory using cryptographic hashes
US20220179945A1 (en) Run-time code execution validation
CN113632066A (zh) 所执行代码中的错误识别
US11669643B2 (en) Block chain based validation of memory commands
US11228443B2 (en) Using memory as a block in a block chain
KR20210134053A (ko) 오버-디-에어 업데이트 유효성 확인 방법
US20220138114A1 (en) Using memory as a block in a block chain

Legal Events

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