KR20210027499A - 보안 메모리 시스템 프로그래밍 - Google Patents
보안 메모리 시스템 프로그래밍 Download PDFInfo
- Publication number
- KR20210027499A KR20210027499A KR1020217005597A KR20217005597A KR20210027499A KR 20210027499 A KR20210027499 A KR 20210027499A KR 1020217005597 A KR1020217005597 A KR 1020217005597A KR 20217005597 A KR20217005597 A KR 20217005597A KR 20210027499 A KR20210027499 A KR 20210027499A
- Authority
- KR
- South Korea
- Prior art keywords
- memory system
- command
- digital signature
- counter value
- generated digital
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1433—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Storage Device Security (AREA)
Abstract
메모리를 프로그래밍하기 위한 시스템들 및 방법들에 대한 다양한 예들에 관한 것이다. 프로그래밍 어플라이언스는 제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신할 수 있다. 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관될 수 있다. 프로그래밍 어플라이언스는 제1 명령 메시지를 메모리 시스템에 전송할 수 있다. 제1 명령 시스템은 제1 명령 및 제1 미리 생성된 디지털 서명을 포함할 수 있다.
Description
우선권 출원
이 출원은 2018년 8월 1일자로 출원된 미국 출원 일련번호 제16/052,215호에 대한 우선권의 혜택을 주장하며, 이는 그 전체가 참조로서 본원에 통합된다.
메모리 시스템들은 일반적으로 컴퓨터들 또는 다른 전자 장치들의 내부의, 반도체 집적 회로로 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 많은 다른 유형의 메모리가 있다.
휘발성 메모리는 데이터를 유지하기 위한 전력을 필요로 하며, 그 중에서도 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM) 또는 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다.
비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지할 수 있으며, 그 중에서도, 플래시 메모리, 읽기 전용 메모리(ROM), 전기적으로 소거 가능한 프로그램 가능 ROM(EEPROM), 정적 RAM(SRAM), 소거 가능한 프로그램 가능 ROM(EPROM) 및 상 변화 랜덤 액세스 메모리(PCRAM), 저항식 랜덤 액세스 메모리(RRAM) 및 자기 저항식 랜덤 액세스 메모리(MRAM)와 같은 저항 가변 메모리, 또는 3D 크로스포인트TM을 포함한다.
플래시 메모리는 광범위한 전자 어플리케이션들을 위한 비휘발성 메모리로 사용된다. 플래시 메모리 시스템들은 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소모를 허용하는 하나의 트랜지스터, 플로팅 게이트 또는 전하 트랩 메모리 셀들 중 하나 이상의 그룹들을 포함한다.
두 가지 일반적인 유형의 플래시 메모리 어레이 아키텍처들은 각각의 기본 메모리 셀 구성이 배열되는 논리 형태를 따서 명명된, NAND 및 NOR 아키텍처들을 포함한다. 메모리 어레이의 메모리 셀들은 일반적으로 매트릭스로 배열된다. 예에서, 어레이의 행의 각 플로팅 게이트 메모리 셀의 게이트들은 액세스 라인(예를 들어, 워드 라인)에 결합된다. NOR 아키텍처에서, 어레이의 열의 각 메모리 셀의 드레인들이 데이터 라인(예를 들어, 비트 라인)에 결합된다. NAND 아키텍처에서, 어레이의 스트링의 각 메모리 셀의 드레인들은 소스 라인과 비트 라인 사이에서 소스가 드레인에 직렬로 함께 결합된다.
NOR 및 NAND 아키텍처 반도체 메모리 어레이 둘 다는 그 게이트들에 결합된 워드 라인을 선택함으로써 특정 메모리 셀들을 활성화시키는 디코더들을 통해 액세스된다. NOR 아키텍처 반도체 메모리 어레이에서, 활성화되면, 선택된 메모리 셀들은 그들의 데이터 값들을 비트 라인들 상에 위치시켜, 특정 셀이 프로그래밍되는 상태에 따라 상이한 전류가 흐르게 한다. NAND 아키텍처 반도체 메모리 어레이에서, 높은 바이어스 전압이 드레인측 선택 게이트(SGD) 라인에 인가된다. 각 그룹의 선택되지 않은 메모리 셀들의 게이트들에 결합된 워드 라인들은 각 그룹의 선택되지 않은 메모리 셀들을 패스 트랜지스터들로 동작시키기 위해(예를 들어, 저장된 데이터 값들에 의해 제한되지 않는 방식으로 전류를 전달하기 위해) 지정된 패스 전압(예를 들어, Vpass)으로 구동된다. 그런 다음, 전류는 각 그룹의 선택된 메모리 셀들에 의해서만 제한되는, 각 직렬 결합 그룹을 통해 소스 라인에서 비트 라인으로 흘러, 선택된 메모리 셀들의 현재 인토딩된 데이터 값들을 비트 라인들 상에 배치한다.
NOR 또는 NAND 아키텍처 반도체 메모리 어레이의 각 플래시 메모리 셀은 하나 또는 다수의 프로그래밍된 상태들로 개별적으로 또는 집합적으로 프로그래밍될 수 있다. 예를 들어, 단일 레벨 셀(SLC)은 1비트의 데이터를 나타내는 두 개의 프로그래밍된 상태들(예를 들어, 1 또는 0) 중 하나를 나타낼 수 있다. 그러나, 플래시 메모리 셀들은 또한 둘 이상의 프로그래밍된 상태들 중 하나를 나타낼 수 있으며, 각 셀이 하나 이상의 이진 디지트(예를 들어, 하나 이상의 비트)를 나타낼 수 있으므로 메모리 셀들의 수를 증가시키지 않고 고밀도 메모리들을 제조할 수 있다. 이러한 셀들은 멀티 상태 메모리 셀들, 멀티 디지트 셀들 또는 멀티-레벨 셀(multi-level cell; MLC)들로 지칭될 수 있다. 특정 예들에서, MLC는 셀당 2 비트의 데이터(예를 들어, 4개의 프로그래밍된 상태들 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있고, 트리플 레벨 셀(TLC)은 셀당 3비트의 데이터(예를 들어, 8개의 프로그래밍된 상태들 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있으며, 쿼드 레벨 셀(QLC)은 셀당 4비트의 데이터를 저장할 수 있다. MLC는 셀당 1비트 이상의 데이터를 저장할 수 있는(즉, 둘 이상의 프로그래밍된 상태들을 나타낼 수 있는) 임의의 메모리 셀을 지칭하도록 본원에서 더 넓은 맥락으로 사용된다.
일부 메모리 어레이들은 반도체 기판의 표면에 배열된 2차원(2D) 구조들이다. 소정의 영역에 대한 메모리 용량을 늘리고 비용을 줄이기 위해, 개별 메모리 셀들의 크기가 감소했다. 그러나, 개별 메모리 셀들의 크기 감소, 및 이에 따라, 2D 메모리 어레이들의 메모리 밀도에 대한 기술적 제한이 있다. 이에 응답하여, 3D NAND 아키텍처 반도체 메모리 시스템들과 같은 3차원(3D) 메모리 구조들은 메모리 밀도를 더 높이고 메모리 비용을 낮추도록 개발되고 있다.
메모리 어레이들 또는 시스템들은 솔리드 스테이트 드라이브(SSD), 범용 플래시 저장(UFSTM) 장치, 멀티미디어카드(MMC) 솔리드 스테이트 저장 장치, 임베디드 MMC 장치(eMMCTM) 등과 같은 메모리 시스템들의 저장 용량을 형성하기 위해 함께 결합될 수 있다. SSD는 그 중에서도, 컴퓨터의 메인 저장 장치로 사용될 수 있으며, 예를 들어, 성능, 크기, 무게, 견고성, 동작 온도 범위 및 전력 소모에 대해 이동 부분들을 갖는 기존 하드 드라이브들보다 이점들이 있다. 예를 들어, SSD들은 탐색 시간, 레이턴시 또는 자기 디스크 드라이브들(예를 들어, 전자기계 등)과 관련된 다른 지연을 줄일 수 있다. SSD들은 플래시 메모리 셀들과 같은 비휘발성 메모리 셀들을 사용하여, 내부 배터리 공급 요구사항들을 제거하므로, 드라이브가 보다 다용도적이고 콤팩트해질 수 있다.
SSD는 다수의 다이들 또는 논리 장치들(예를 들어, 논리 장치 번호 또는 LUN)을 포함한 다수의 메모리 장치들을 포함할 수 있으며, 메모리 장치들을 동작시키거나 인터페이스와 인터페이싱하기 위해 필요한 논리 기능들을 수행하는 하나 이상의 프로세서들 또는 다른 컨트롤러들을 포함할 수 있다. 이러한 SSD들은 다수의 메모리 어레이들 및 그 주변 회로부를 포함하는 하나 이상의 플래시 메모리 다이를 포함할 수 있다. 플래시 메모리 어레이들은 다수의 물리적 페이지들로 구성된 다수의 메모리 셀 블록들을 포함할 수 있다. 많은 예들에서, SSD들은 또한 DRAM 또는 SRAM (또는 다른 형태의 메모리 다이 또는 다른 메모리 구조들)을 포함할 것이다. SSD는 메모리 장치들과 호스트 사이에서 데이터(예를 들어, 오류 데이터 및 주소 데이터와 같은 사용자 데이터 및 관련 무결성 데이터 등)를 전송하기 위한 판독 또는 기록 동작 또는 메모리 장치들로부터 데이터를 삭제하기 위한 삭제 동작들과 같은 메모리 동작들과 관련하여 호스트로부터 명령들을 수신할 수 있다.
도면들에서, 이는 반드시 일정한 비례로 그려질 필요는 없으며, 유사한 도면 부호들은 다른 측면에서 유사한 구성요소들을 설명할 수 있다. 다른 문자 접미사를 갖는 유사한 숫자들은 유사한 구성요소들의 다른 예들을 나타낼 수 있다. 도면들은 제한하는 것이 아닌 예로서, 일반적으로 본 문서에서 논의된 다양한 실시예들을 예시한다.
도 1은 명령 파일을 포함하는 호스트 장치, 메모리 시스템 및 프로그래밍 어플라이언스를 포함하는 환경의 예를 예시한다.
도 2는 다수의 호스트 장치들에서 메모리 시스템들을 프로그래밍하도록 구성된 프로그래밍 어플라이언스를 포함하는 다른 예시적인 환경을 예시한다.
도 3은 메모리 시스템에 명령을 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 4는 명령 시퀀스를 메모리 시스템으로 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 5는 명령을 메모리 시스템으로 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 6은 미리 생성된 디지털 서명을 갖는 명령 메시지를 메모리 시스템으로 전송하기 위한 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 7은 미리 생성된 디지털 서명을 갖는 명령 메시지를 메모리 시스템으로 전송하기 위한 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 8은 하나 이상의 장치들의 일부로서 메모리 장치를 갖는 예시적인 호스트를 도시한다.
도 9는 하나 이상의 실시예들이 구현될 수 있는 기계의 일례를 예시하는 블록도이다.
도 1은 명령 파일을 포함하는 호스트 장치, 메모리 시스템 및 프로그래밍 어플라이언스를 포함하는 환경의 예를 예시한다.
도 2는 다수의 호스트 장치들에서 메모리 시스템들을 프로그래밍하도록 구성된 프로그래밍 어플라이언스를 포함하는 다른 예시적인 환경을 예시한다.
도 3은 메모리 시스템에 명령을 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 4는 명령 시퀀스를 메모리 시스템으로 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 5는 명령을 메모리 시스템으로 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 6은 미리 생성된 디지털 서명을 갖는 명령 메시지를 메모리 시스템으로 전송하기 위한 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 7은 미리 생성된 디지털 서명을 갖는 명령 메시지를 메모리 시스템으로 전송하기 위한 프로세스 흐름의 일례를 나타내는 흐름도이다.
도 8은 하나 이상의 장치들의 일부로서 메모리 장치를 갖는 예시적인 호스트를 도시한다.
도 9는 하나 이상의 실시예들이 구현될 수 있는 기계의 일례를 예시하는 블록도이다.
본 개시의 측면들은 보안 메모리 시스템 프로그래밍에 관한 것이다. 메모리 시스템들 및/또는 메모리 시스템을 사용하는 호스트 시스템들의 생산 동안, 종종 메모리 시스템을 구성하는 것이 바람직하다. 프로그래밍 어플라이언스는 메모리 시스템이 다양한 동작들을 수행하고/하거나 다양한 구성들을 가정하도록 지시하는 명령들을 메모리 시스템에 제공할 수 있다.
일부 메모리 시스템들은 명령에 유효한 디지털 서명이 수반되지 않는 한 메모리 시스템이 명령을 실행하지 못하도록 하는 보안 특징들을 포함한다. 메모리 시스템은 디지털 서명의 유효성을 체크함으로써 명령을 확인한다. 디지털 서명으로 확인된 메모리 시스템 명령들은 본원에서 서명된 명령들이라고 지칭된다. 일부 메모리 시스템들에서, 모든 명령들은 서명된 명령들이다. 다른 메모리 시스템들에서, 모든 명령들보다 서명된 명령들이 적다. 예를 들어, 보안 특징들, 장치 프로비저닝 및/또는 기타 민감한 동작 영역들에 영향을 미치는 명령들은 서명될 수 있는 반면, 읽기 또는 쓰기 요청들과 같은 일상적인 명령들은 서명되지 않을 수 있다.
서명된 명령에 수반되는 디지털 서명은 암호화 키 및 메모리 시스템 카운터 값을 포함한 다수의 입력 데이터 요소들을 사용하여 생성(및 확인)될 수 있다. 디지털 서명은 프로그래밍 어플라이언스 또는 하드웨어 보안 모듈(HSM)과 같은 기타 적절한 서명 장치에 의해 생성될 수 있다. 디지털 서명은 대칭 키 배열 또는 비대칭 키 배열을 사용하여 생성될 수 있다. 대칭 키 배열에서, 디지털 서명을 생성하는 서명 장치 및 디지털 서명을 확인하는 메모리 시스템 둘 다 메모리 시스템에 대한 서버 루트 키일 수 있는 동일한 암호화 키를 사용한다. 비대칭 키 배열에서, 서명 장치는 메모리 시스템에 알려지지 않은 개인 키를 사용한다. 메모리 시스템은 서명 장치의 개인 키에 해당하는 공개 키를 사용한다.
디지털 서명은 또한 메모리 시스템 카운터의 카운터 값에 기초할 수 있다. 디지털 서명을 생성하는 서명 장치는 메모리 시스템에 쿼리하여 메모리 시스템 카운터의 현재 값을 수신할 수 있다. 서명 장치는 암호화 키, 명령 및 현재 메모리 시스템 카운터 값을 사용하여 해시 함수와 같은 암호화 함수를 실행하여 디지털 서명을 생성한다. 대칭 키 배열에서, 서명 장치는 서명 장치 및 메모리 장치에 알려진 비밀 암호화 키를 사용한다. 비대칭 키 배열에서, 서명 장치는 서명 장치에 알려져 있지만 메모리 시스템에는 알려지지 않은 개인 암호화 키를 사용한다. 명령과 디지털 서명이 포함된 명령 메시지가 메모리 시스템으로 전송된다.
메모리 시스템은 명령 메시지로부터 명령의 암호화 다이제스트, 메모리 시스템 카운터의 현재 값 및 메모리 시스템 암호화 키를 계산하여 디지털 서명을 확인한다. 암호화 다이제스트는 명령, 메모리 시스템 카운터의 현재 값 및 메모리 시스템 암호화 키를 사용하여 메모리 시스템에서 실행되는 해시 함수 또는 기타 적절한 암호화 함수의 출력이다.
대칭 키 배열에서, 메모리 시스템 암호화 키는 서명 장치에서 사용하는 암호화 키의 복사본이다. 비대칭 키 배열에서, 메모리 시스템 암호화 키는 서명 장치의 공개 키이다. 암호화 다이제스트가 명령 메시지에 포함된 디지털 서명과 동일하면, 디지털 서명이 확인되고 메모리 시스템은 명령을 실행한다. 암호화 다이제스트가 명령 메시지에 포함된 디지털 서명과 동일하지 않으면, 디지털 서명이 확인되지 않고 메모리 시스템은 명령을 실행하지 않는다.
설명된 바와 같이, 프로그래밍 어플라이언스와 같은 장치는 장치와 메모리 시스템에 상보적 암호화 키 세트가 있는 경우, 예를 들어 장치와 메모리 시스템에 동일한 대칭 키가 있거나, 또는 장치에는 개인 키가 있고 메모리 시스템에는 대응되는 공개 키가 있는 경우, 서명된 명령을 실행하도록 메모리 시스템에 지시할 수 있다.
그러나, 일부 예들에서, 프로그래밍 어플라이언스에 메모리 시스템에 알려진 대칭 키 또는 메모리 시스템에 알려진 공개 키와 연관된 개인 키의 복사본을 제공하는 것은 문제들을 발생시킬 수 있다. 예를 들어, 프로그래밍 어플라이언스로부터 암호화 키(예를 들어, 대칭 키 또는 개인 키)를 훔친 인가되지 않은 행위자는 나중에 유효한 디지털 서명들을 갖는 서명된 명령들을 생성하여 메모리 시스템을 손상시킬 수 있다. 이 문제는 단일 프로그래밍 어플라이언스가 예를 들어, 다수의 호스트 장치들에서, 다수의 메모리 시스템들을 프로그래밍하는 환경들에서 배가된다. 이 경우, 프로그래밍 어플라이언스는 다수의 메모리 시스템들에 대한 다수의 암호화 키들을 관리한다.
프로그래밍 어플라이언스는 보안 기능들로 구현되어 암호화 키들에 대한 무단 액세스를 제한할 수 있다. 예를 들어, 프로그래밍 어플라이언스는 저장하는 암호화 키들에 대한 물리적 및 네트워크 액세스를 제한하는 하드웨어 보안 모듈(HSM)이거나 이를 포함할 수 있다. 그러나, 프로그래밍 어플라이언스의 보안을 강화시키는 것은 여전히 문제들을 발생시킨다. 예를 들어, HSM들 또는 기타 적절한 보안 기능들이 있는 프로그래밍 어플라이언스는 구매, 운영 및 유지 관리하는 데 많은 비용이 들 수 있다. 이는 분산된 위치들에서 프로그래밍 어플라이언스를 구현하는 가능성을 제한할 수 있다. 또한, 적절한 보안이 사용되더라도, 다수의 프로그래밍 어플라이언스들에 암호화 키들을 제공하는 것은 보안 침해를 방지하기 위해 신뢰할 수 있는 사람들과 시설들의 수가 증가시킨다.
본원에 설명된 다양한 예들은 예를 들어, 하나 이상의 미리 생성된 디지털 서명들을 포함하는 명령 파일을 활용하여, 보안 메모리 시스템 프로그래밍을 제공함으로써 이들 및 다른 문제들을 해결한다. 미리 생성된 디지털 서명들은 프로그래밍 어플라이언스에 의해 하나 이상의 메모리 시스템들을 프로그래밍하는 데 사용될 수 있다. 이러한 방식으로, 프로그래밍 어플라이언스는 메모리 시스템을 프로그래밍하기 위해 암호화 키를 수신할 필요가 없을 수 있다. 대신에, 프로그래밍 어플라이언스는 명령 파일로부터의 미리 생성된 디지털 서명들을 사용하여 명령 메시지들을 메모리 시스템으로 전송한다.
미리 생성된 디지털 서명은 HSM 또는 다른 적절한 제너레이터 장치에 의해 생성된다. 미리 생성된 디지털 서명은 특정 메모리 시스템, 서명된 명령 및 메모리 시스템 카운터의 선택 값에 대응한다. 메모리 시스템 카운터의 선택 값은 미리 생성된 디지털 서명이 사용될 때 메모리 시스템 카운터가 가질 것으로 예상되는 값일 수 있다. 예를 들어, 본원에 설명된 바와 같이, 메모리 시스템 카운터의 선택 값은 메모리 시스템 카운터의 알려진 초기 값, 알려진 초기 값보다 큰 미리 결정된 증가 수 및/또는 프로그래밍 어플라이언스가 메모리 시스템 카운터를 증가시킬 수 있는 값일 수 있다. 서명된 명령은 미리 생성된 신호를 사용하여 실행될 수 있는 명령이다. 제너레이터 장치는 서명된 명령, 선택된 메모리 시스템 카운터 값 및 특정 메모리 시스템과 연관된 암호화 키(예를 들어, 대칭 키 또는 개인 키)를 사용하여 암호화 동작을 실행하여 미리 생성된 디지털 서명을 생성한다.
프로그래밍 어플라이언스는 명령 파일을 수신하고 미리 생성된 디지털 서명을 사용하여 명령 메시지를 만든다. 명령 메시지는 서명된 명령과 미리 생성된 디지털 서명을 포함한다. 메모리 시스템은 메모리 시스템 암호화 키(예를 들어, 공개 키 또는 대칭 키)와 명령 메시지로부터의 서명된 명령을 사용하여 미리 생성된 디지털 서명을 확인한다.
일부 예들에서, 프로그래밍 어플라이언스는, 예를 들어, 본원에 설명된 바와 같이 메모리 시스템에 쿼리하거나 메모리 시스템 카운터를 증가시킴으로써 현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명의 선택된 메모리 시스템 카운터와 일치하는지를 결정한다.
일부 예들에서, 명령 파일은 둘 이상의 미리 생성된 디지털 서명을 포함한다. 예를 들어, 명령 파일은 동일한 호스트 장치에서 또는 다른 호스트 장치들에서 다수의 메모리 시스템들에 대한 다수의 미리 생성된 디지털 서명들을 포함할 수 있다.
일부 예들에서, 명령 파일은 특정 메모리 시스템에 대해 하나 이상의 미리 생성된 디지털 서명들의 시퀀스들을 포함한다. 미리 생성된 디지털 서명들의 시퀀스는 메모리 시스템에서 실행될 명령들의 시퀀스에 해당한다. 연속적으로 미리 생성된 디지털 서명들은 명령들의 시퀀스에서 연속적인 명령들에 해당할 수 있다. 또한, 연속적인 미리 생성된 디지털 서명들은 증가하는 메모리 시스템 카운터 값에 대응할 수 있다. 이런 방식으로, 프로그래밍 어플라이언스는 연속적인 미리 생성된 디지털 서명들을 사용하여 명령 메시지들을 전송하여 메모리 장치에서 명령들의 시퀀스를 실행할 수 있다.
일부 예들에서, 명령 파일은 동일한 메모리 시스템 및 서명된 명령에 대해 다수의 미리 생성된 서명들을 포함하지만, 다른 메모리 시스템 카운터 값들과 연관된다. 프로그래밍 어플라이언스는 메모리 시스템에 쿼리하여 그 현재 값을 결정하고 현재 메모리 시스템 카운터 값과 동일한 메모리 시스템 카운터 값과 연관된 미리 생성된 디지털 서명을 선택할 수 있다.
일부 예들에서, 프로그래밍 어플라이언스는 현재 값이 미리 생성된 디지털 서명과 연관된 메모리 시스템 카운터 값과 같을 때까지 메모리 시스템 카운터를 증가시키도록 구성된다. 프로그래밍 어플라이언스는 메모리 시스템에 쿼리하여 메모리 시스템 카운터의 현재 값을 수신한다. 그런 다음, 프로그래밍 어플라이언스는 그 값이 미리 선택된 디지털 서명과 연관된 메모리 시스템 카운터 값과 일치할 때까지 메모리 시스템 카운터를 증가시킨다.
도 1은 호스트 장치(105), 메모리 시스템들(110A, 110B, 110N) 및 명령 파일(126)을 포함하는 프로그래밍 어플라이언스(120)를 포함하는 환경(100)의 예를 예시한다. 호스트 장치(105)는 통신 인터페이스(162)를 통해 하나 이상의 메모리 시스템들(110A, 110B, 110N)과 통신한다. 호스트 장치(105) 및/또는 메모리 시스템들(110A, 110B, 110N)은 사물 인터넷(IoT) 장치들(예를 들어, 냉장고 또는 기타 기기, 센서, 모터 또는 액추에이터, 모바일 통신 장치, 자동차, 드론 등), 네트워크 기기(예를 들어, 라우터, 스위치 등)와 같은 다양한 제품들 또는 제품의 처리, 통신 또는 제어를 지원하는 임의의 기타 적절한 제품들에 포함될 수 있다. 일부 예들에서, 호스트 장치(105) 및 메모리 시스템들(110A, 110B, 110N)은 공통 보드 또는 패키지에 포함된다.
도 1의 예시적인 환경(100)에서, 호스트 장치(105)는 호스트 컨트롤러(160)를 포함한다. 호스트 컨트롤러(160)는 프로세서, 주문형 반도체(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 또는 다른 기능들 중에서도, 메모리 장치들(110A, 110B, 110N)을 관리할 수 있는 기타 적절한 구성 요소 또는 구성 요소들을 포함할 수 있다. 하나 이상의 통신 인터페이스들(162)은 메모리 시스템들(110A, 110B, 110N)과 호스트 컨트롤러(160)와 같은 호스트 장치(105)의 하나 이상의 다른 구성 요소들 사이에서 데이터를 전송하는 데 사용될 수 있다. 이러한 통신 인터페이스들의 예들은 직렬 고급 기술 결합(SATA) 인터페이스들, 주변 구성 요소 상호 연결 익스프레스(PCIe) 인터페이스들, 범용 직렬 버스(USB) 인터페이스들, 범용 플래시 저장 장치(UFS) 인터페이스들, eMMCTM 인터페이스들 또는 하나 이상의 기타 커넥터들 또는 인터페이스들을 포함한다. 호스트 장치(105)는 호스트 시스템, 전자 장치, 프로세서, 메모리 카드 리더기 또는 메모리 시스템들(110A, 110B, 110N) 외부의 하나 이상의 다른 전자 장치들을 포함할 수 있다. 3개의 메모리 시스템들(110A, 110B, 110N)이 호스트 시스템 (105)의 일부로서 도시되어 있지만, 다른 예들에서는 더 많거나 더 적은 메모리 시스템들이 포함될 수 있다. 일부 예들에서, 호스트 장치(105)는 도9의 기계(900)와 관련하여 논의된 구성 요소들의 일부 또는 전부를 갖는 기계일 수 있다. 또한, 호스트 장치들(105)의 추가 예들이 도 8을 참조하여 논의된다.
도 1의 예는 메모리 시스템(110A)의 다양한 추가 특징들을 포함한다. 다른 메모리 시스템들(110B, 110N)은 동일한 특징 또는 상이한 특징들을 포함할 수 있다. 도 1에서, 메모리 시스템(110A)은 메모리 컨트롤러(115) 및 메모리 어레이(121)를 포함한다. 메모리 어레이(121)는 다수의 개별 메모리 다이(예를 들어, 2 차원 또는 3차원(3D) NAND 다이의 스택, NOR 다이의 스택 등)를 포함한다. 일 예에서, 메모리 시스템들(110A, 110B, 110N)은 호스트 장치(105)의 개별 메모리 또는 저장 장치 구성 요소들일 수 있다. 다른 예들에서, 메모리 시스템들(110A, 110B, 110N)은 호스트 장치(105)의 하나 이상의 다른 구성 요소들로 적층되거나 아니면 이들이 포함되는 집적 회로(예를 들어, 시스템 온 칩(SOC) 등)의 일부일 수 있다.
메모리 컨트롤러(115)는 호스트(105)로부터 인스트럭션들을 수신할 수 있으며, 메모리 어레이(121)의 메모리 셀들, 평면들, 서브 블록들, 블록들 또는 페이지들 중 하나 이상으로 데이터를 전송(예를 들어, 기록 또는 제거)하거나 이들로부터 데이터를 전송(예를 들어, 판독)하는 것과 같이 메모리 어레이(121)와 통신할 수 있다. 메모리 컨트롤러(115)는 그 중에서도, 하나 이상의 구성 요소들 또는 집적 회로들을 포함하는 회로부 또는 펌웨어를 포함할 수 있다. 예를 들어, 메모리 컨트롤러(115)는 메모리 어레이(121)에 걸쳐 액세스를 제어하고 호스트 장치(105)와 메모리 시스템(110A) 사이에 변환 계층을 제공하도록 구성된 하나 이상의 메모리 제어 유닛들, 회로들 또는 구성 요소들을 포함할 수 있다. 메모리 컨트롤러(115)는 메모리 어레이(121)로 또는 이로부터 데이터를 전송하기 위한 하나 이상의 입력/출력(I/O) 회로들, 라인들 또는 인터페이스들을 포함할 수 있다.
메모리 컨트롤러(115)는 그 중에서도, 다양한 메모리 관리 기능들과 관련된 다수의 구성 요소들 또는 집적 회로들과 같은 회로부 또는 펌웨어를 포함할 수 있다. NAND 저장 유닛들에 대한 관리 기능들은 웨어 레벨링(예를 들어, 가비지 수집 또는 재생), 오류 감지 또는 수정, 블록 폐기 또는 하나 이상의 다른 메모리 관리 기능들을 포함할 수 있다.
메모리 매니저(115)는 호스트(105)로부터 수신된 명령들을 호스트 명령들(예를 들어, 호스트로부터 수신된 명령들)으로 장치 명령들(예를 들어, 메모리 어레이의 동작과 연관된 명령들 등)로 파싱 또는 포맷하거나, 또는 메모리 컨트롤러(115) 또는 메모리 시스템(110A)의 하나 이상의 다른 구성 요소들에 대한 (예를 들어, 다양한 메모리 관리 기능들을 달성하기 위한) 장치 명령들을 생성할 수 있다.
예를 들어, 호스트 컨트롤러(160)가 본원에 설명된 바와 같이 프로그래밍 어플라이언스(120)로부터 명령 메시지를 수신하면, 호스트 컨트롤러(160)는 명령 메시지를 적절한 메모리 시스템(110A)의 메모리 컨트롤러 (115)로 전송한다. 메모리 컨트롤러(115)는 명령 메시지에 포함된 디지털 서명을 확인할 수 있으며, 디지털 서명이 확인되면 명령을 실행할 수 있다. 서명되지 않은 명령의 경우, 메모리 컨트롤러(115)는 먼저 디지털 서명을 확인하지 않고 명령을 실행할 수 있다.
메모리 매니저(115)는 메모리 시스템(110A)의 하나 이상의 구성 요소들과 연관된 다양한 정보(예를 들어, 메모리 컨트롤러(115)에 결합된 메모리 어레이 또는 하나 이상의 메모리 셀들과 연관된 다양한 정보)를 유지하도록 구성된 관리 표 세트를 포함할 수 있다. 예를 들어, NAND 메모리 시스템의 경우, 관리 표들은 메모리 컨트롤러(115)에 결합된 메모리 셀들 중 하나 이상의 블록들에 대해 블록 에이지, 블록 제거 카운트, 오류 이력 또는 하나 이상의 오류 카운트(예를 들어, 기록 동작 오류 카운트, 판독 비트 오류 카운트, 판독 동작 오류 카운트, 제거 오류 카운트 등)에 대한 정보를 포함할 수 있다. 특정 예들에서, 오류 카운트들 중 하나 이상에 대해 검출된 오류 수가 임계값을 초과하는 경우, 비트 오류는 수정될 수 없는 비트 오류라고 할 수 있다. 메모리 컨트롤러(115)는 그 중에서도, 수정 가능하거나 수정 불가능한 비트 오류들의 카운트를 관리 표들에서 유지할 수 있다.
관리 표들은 또한 메모리 어레이(121)에서 논리 주소들을 물리적 주소들에 관련시키는 L2P 포인터들을 포함하는 하나 이상의 논리 대 물리(L2P) 표들을 포함할 수 있다. 관리 표들은 메모리 컨트롤러(115)의 RAM에 저장될 수 있다. 일부 예들에서, 관리 표들 일부 또는 전부가 메모리 어레이(121)에 저장된다. 예를 들어, 메모리 컨트롤러(115)는 메모리 어레이(121)로부터 관리 표들을 판독할 수 있고/있거나 메모리 컨트롤러(115)의 RAM에서 관리 표들의 일부 또는 전부를 캐시할 수 있다.
메모리 컨트롤러(115)는 또한 그 중에서도, 메모리 컨트롤러(115)에 결합된 메모리 시스템(110A)의 하나 이상의 메모리 셀들에 데이터를 기록하거나, 이들로부터 데이터를 판독하거나 이들을 삭제하는 것과 관련된 메모리 동작들을 제어하도록 구성된 회로부 또는 구성 요소들을 포함할 수 있다. 메모리 동작들은 예를 들어, 호스트 장치(105)(예를 들어, 그 호스트 컨트롤러(160))로부터 수신된 호스트 명령들에 기초할 수 있거나, 또는 내부적으로 메모리 컨트롤러(115)에 의해 (예를 들어, 웨어 레벨링, 오류 검출 또는 정정 등과 관련하여) 생성될 수 있다.
어레이 컨트롤러(115)는 오류 정정 코드(ECC) 구성 요소(140)를 포함할 수 있으며, 이는 그 중에서도, 메모리 컨트롤러(115)에 결합된 메모리 시스템(110A)의 하나 이상의 메모리 셀들에 데이터를 기록하거나 이들로부터 데이터를 판독하는 것과 관련된 오류들을 검출하거나 정정하도록 구성된 ECC 엔진 또는 기타 회로부를 포함할 수 있다. 메모리 컨트롤러(115)는 호스트 장치(105)와 메모리 시스템(110A) 사이에 전달되는 데이터의 무결성을 유지하거나 저장된 데이터의 무결성을 (예를 들어, 리던던트 RAID 저장 등을 사용하여) 유지하는 동안, 데이터의 다양한 동작들 또는 저장과 관련된 오류 발생(예를 들어, 비트 오류, 동작 오류 등)으로부터 능동적으로 검출 및 복구하도록 구성될 수 있으며, 추후 오류들을 방지하기 위해 장애가 발생한 메모리 리소스들(예를 들어, 메모리 셀들, 메모리 어레이들, 페이지들, 블록들 등)을 제거(예를 들어, 폐기)할 수 있다.
도 1의 예시적인 환경(100)에서, 메모리 컨트롤러(115)는 또한 암호화 엔진(142)을 포함한다. 암호화 엔진(142)은 예를 들어 본원에 설명된 바와 같이, 데이터에 대한 암호화 동작들을 실행하도록 구성될 수 있다. 암호화 엔진(142)은 하나 이상의 키 레지스터들 및 하나 이상의 수학 엔진들을 포함할 수 있다. 키 레지스터들은 암호화 동작들을 실행하는 데 사용되는 암호화 키들을 저장할 수 있다. 예를 들어, 키 레지스터는 서명된 명령들을 평가하기 위한 메모리 시스템 암호화 키(예를 들어, 서명 장치의 공개 키 및/또는 서명 장치에도 알려진 대칭 키)를 저장할 수 있다. 키 레지스터들이 암호화 엔진(142)의 구성 요소들로서 설명되어 있지만, 일부 예들에서, 키 레지스터들은 예를 들어 메모리 어레이(121)의 보안 위치와 같은 다른 곳에 위치될 수 있다. 수학 엔진은 예를 들어, 키 레지스터들에 저장된 하나 이상의 암호화 키들을 활용하여 암호화 동작들을 수행하도록 구성될 수 있다.
암호화 엔진(142)은 본원에 설명된 바와 같이 디지털 서명들을 생성하기 위해 하나 이상의 암호화 동작들을 실행하도록 구성될 수 있다. 암호화 엔진(142)은 예를 들어 SHA 알고리즘(예를 들어, SHA256), MD5 알고리즘 등과 같은 암호화 해시 함수와 같은 임의의 적절한 암호화 알고리즘을 사용하여 디지털 서명들을 생성하도록 구성될 수 있다. 암호화 해시 함수는 입력 값을 일반적으로 단락된 해시 값에 매핑한다. 해시 함수는 두 개의 다른 입력 값들이 동일한 해시 값에 매핑되지 않도록 선택될 수 있다. 암호화 엔진(142)은 디지털 서명되는 것과 관련된 입력 값에 대해 해시 함수를 실행함으로써 디지털 서명을 생성하도록 구성될 수 있다. 예를 들어, 암호화 엔진(142)은 실행될 서명된 명령, 메모리 시스템 카운터 값 및 암호화 키를 연접하여 입력 값을 형성할 수 있다. 그런 다음, 암호화 엔진(142)은 디지털 서명을 생성하기 위해 입력 값에 대해 해시 함수를 실행할 수 있다.
일부 예들에서, 암호화 엔진(142)은 호스트 장치(105)와 메모리 시스템(110A) 사이의 통신 인터페이스와 함께 동작하도록 구성된다. 예를 들어, 암호화 엔진(142)은 예를 들어 PCIe 또는 다른 적절한 인터페이스에 따라 메모리 시스템(110A)과 호스트 장치(105) 사이의 통신들과 관련된 디지털 서명들을 암호화 및/또는 생성하는 데 사용되는 암호화 키를 저장하기 위한 키 레지스터 또는 다른 적절한 저장 위치를 포함할 수 있다.
일부 예들에서, 메모리 컨트롤러(115)는 또한 메모리 장치 카운터(146)를 포함한다. 메모리 장치 카운터(146)는 카운터 값들을 증가시키기 위한 소프트웨어 또는 하드웨어를 포함한다. 메모리 장치 카운터(146)는 카운터 값들이 항상 카운터 시퀀스를 따라 특정 방향으로 이동하도록 구성되는 단조 카운터(monotonic counter)일 수 있다. 예를 들어, 메모리 장치 카운터(146)는 알려진 초기 값에서(예를 들어, 메모리 시스템(110A)이 제조될 때) 시작한다. 증가 이벤트가 발생하면, 단조 카운터(146)는 카운터 시퀀스 방향으로 카운터 시퀀스를 따라 알려진 초기 값에서 다음 값으로 증가한다. 후속 증가 이벤트가 발생할 때, 단조 카운터(146)는 카운터 시퀀스를 따라 다음 값으로 증가한다. 카운터 시퀀스는 예를 들어, 상승 정수 세트, 감소 정수 세트, 소수 정수 세트, 짝수 정수 세트, 또는 임의의 다른 적합한 시퀀스를 포함할 수 있다. 본원에 사용된 바와 같이, 제1 카운터 값이 카운터 시퀀스 방향을 따라 카운터를 제2 카운터 값으로부터 한 번 이상 증가시킨 후 카운터 시퀀스를 따라 발견되는 경우, 제1 카운터 값은 제2 카운터 값보다 크다고 한다.
증가 이벤트는 메모리 시스템(110A)에서 임의의 적절한 이벤트를 포함할 수 있다. 예를 들어, 증가 이벤트는 메모리 시스템(110A)이 명령을 실행할 때 발생할 수 있다. 다른 예시적인 증가 이벤트는 메모리 시스템(110A)이 단조 카운터(146)를 증가시키라는 인스트럭션을 수신할 때 발생할 수 있다. 다른 예시적인 증가 이벤트는 메모리 시스템(110A)이 리셋되거나 재시작될 때 발생할 수 있다.
메모리 어레이(121)는 예를 들어 하나 이상의 장치들, 하나 이상의 평면들, 하나 이상의 서브 블록들, 하나 이상의 블록들, 하나 이상의 페이지들 등에 배열된 여러 메모리 셀들을 포함할 수 있다. 일례로, 48 GB TLC NAND 메모리 장치는 페이지당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록당 1536 페이지, 평면당 548 블록 및 장치당 4개 이상의 평면들을 포함할 수 있다. 다른 예로서, (셀당 2 비트 데이터(즉, 4 프로그램 가능 상태들)를 저장하는) 32 GB MLC 메모리 장치는 페이지당 18,592 바이트(B) 데이터(16,384 + 2208 바이트), 블록당 1024 페이지, 평면당 548 블록 및 장치당 4 평면을 포함할 수 있지만, 대응되는 TLC 메모리 장치로서 필요한 기록 시간의 절반 및 프로그램/제거(P/E) 사이클의 두 배를 갖는다. 다른 예들은 다른 개수 또는 배열을 포함할 수 있다. 일부 예들에서, 메모리 장치 또는 그 일부는 SLC 모드 또는 (TLC, QLC 등과 같은) 원하는 MLC 모드에서 선택적으로 동작될 수 있다.
메모리 어레이(121)는 물리적 주소 위치들(150A, 150B, 150N)을 포함한다. 물리적 주소 위치(150A, 150B, 150N)는 물리적 주소와 고유하게 연관된 메모리 어레이(121)에서의 위치이다. 동작 시, 데이터는 일반적으로 NAND 메모리 어레이(121)에 페이지로 기록되거나 그로부터 페이지로 판독되고 블록으로 소거된다. 예를 들어, 물리적 주소 위치(150A, 150B, 150N)는 페이지에 해당할 수 있다. 그러나, 일부 메모리 동작들(예를 들어, 판독, 기록, 소거 등)은 원하는 대로 더 크거나 더 작은 메모리 셀 그룹들에서 수행될 수 있다. 따라서, 일부 예들에서(예를 들어, 일부 동작들의 경우), 물리적 주소 위치(150A, 150B, 150N)는 하나보다 더 많거나 적은 페이지를 포함한다. 메모리 시스템(110A)의 데이터 전송 크기는 일반적으로 페이지로 지칭되는 반면, 호스트 장치(105)의 데이터 전송 크기는 일반적으로 섹터로 지칭된다.
데이터 페이지는 다수의 바이트의 사용자 데이터(예를 들어, 다수의 데이터 섹터를 포함한 데이터 페이로드) 및 해당 메타데이터를 포함할 수 있지만, 페이지 크기는 종종 사용자 데이터를 저장하는 데 사용되는 다수의 바이트만을 지칭한다. 일 예로서, 4 KB의 페이지 크기를 갖는 데이터 데이지는 4 KB의 사용자 데이터(예를 들어, 512 B의 섹터 크기를 가정하는 8개의 섹터들)뿐만 아니라 무결성 데이터(예를 들어, 오류 검출 또는 정정 코드 데이터), 주소 데이터(예를 들어, 논리 주소 데이터 등) 또는 사용자 데이터와 관련된 다른 메타데이터와 같은 사용자 데이터에 대응되는 다수의 바이트(예를 들어, 32 B, 54 B, 224 B 등)의 메타데이터를 포함할 수 있다. 메타 데이터 등을 위한 저장 장치가 있는 물리적 주소 위치들(150A, 150B, 150N)은 오버 프로비저닝된 물리적 주소 위치들로 지칭될 수 있다.
상이한 유형의 메모리 셀들 또는 메모리 어레이들(120)은 상이한 페이지 크기들을 제공할 수 있거나, 이와 관련된 상이한 양의 메타 데이터를 요구할 수 있다. 예를 들어, 상이한 메모리 장치 유형들은 상이한 비트 에러율을 가질 수 있으며, 이는 데이터 페이지의 무결성을 보장하는데 필요한 상이한 양의 메타 데이터로 이어질 수 있다(예를 들어, 비트 에러율이 높은 메모리 장치는 비트 에러율이 낮은 메모리 장치보다 많은 바이트의 에러 정정 코드 데이터를 요구할 수 있다). 일 예로서, 다중 레벨 셀(multilevel cell; MLC) NAND 플래시 장치는 대응되는 단일 레벨 셀(single-level cell; SLC) NAND 플래시 장치보다 높은 비트 에러율을 가질 수 있다. 이와 같이, MLC 장치는 대응되는 SLC 장치보다 에러 데이터에 대해 더 많은 메타 데이터 바이트를 요구할 수 있다.
도 1은 또한 호스트 장치(105)와 통신하는 프로그래밍 어플라이언스(120)를 도시한다. 프로그래밍 어플라이언스(120)는 예를 들어 하나 이상의 서버들, 하나 이상의 프로세서들, 하나 이상의 ASIC들, 하나 이상의 FPGA들 등과 같은 임의의 적절한 컴퓨팅 장치 또는 구성 요소이거나 이를 포함할 수 있다. 프로그래밍 어플라이언스(120)는 임의의 적절한 휘발성 또는 비 휘발성 데이터 저장소를 포함할 수 있는 프로그래밍 어플라이언스 데이터 저장 장치(122)를 포함한다. 데이터 저장 장치(122)는 명령 파일(126)을 저장한다. 명령 파일(126)은 본원에 설명된 바와 같이, 하나 이상의 미리 생성된 디지털 서명들을 포함한다.
명령 파일(126)은 제너레이터 장치(124)에 의해 생성된다. 제너레이터 장치(124)는 예를 들어 하나 이상의 서버들, 하나 이상의 HSM들 등과 같은 임의의 적절한 컴퓨팅 장치 또는 구성 요소를 포함할 수 있다. 제너레이터 장치(124)는 메모리 시스템들(110A, 110B, 110N)에 대한 암호화 키들에 액세스하고 명령 파일(126)에 포함된 미리 생성된 디지털 서명 또는 서명들을 생성한다. 예를 들어, 대칭 배열에서, 제너레이터 장치(124)는 각각의 메모리 시스템들(110A, 110B, 110N)과 공유되는 대칭 암호화 키들에 대한 액세스를 갖는다. 비대칭 배열들에서, 제너레이터 장치(124)는 각각의 메모리 장치들(110A, 110B, 110N)에 저장된 공개 키들에 대응하는 개인 키들에 대한 액세스를 갖는다.
제너레이터 장치(124)는 예를 들어 유선 또는 무선 네트워크 연결에 의해, 우편으로 발송되거나 그렇지 않으면 프로그래밍 어플라이언스(120)의 위치로 물리적으로 운반되는 물리적 매체 등에 의해 임의의 적절한 방식으로 프로그래밍 어플라이언스(120)에 명령 파일(126)을 제공한다.
프로그래밍 어플라이언스(120)는 본원에 설명된 바와 같이, 메모리 시스템들(110A, 110B, 110N) 중 하나 이상을 프로그래밍하는 데 명령 파일(126)을 사용한다. 예를 들어, 프로그래밍 어플라이언스(120)는 명령 파일 (126)로부터 메모리 시스템(110A, 110B, 110N), 서명된 명령 및 메모리 장치 카운터(146)의 선택된 값과 연관된 미리 생성된 디지털 서명을 선택한다. 메모리 장치 카운터(146)의 선택된 값은 카운터(146)의 알려진 초기 값 또는 다른 값일 수 있다. 프로그래밍 어플라이언스(120)는 미리 생성된 디지털 서명 및 미리 생성된 디지털 서명과 연관된 명령을 포함하는 명령 메시지(128)를 생성한다.
명령 메시지(128)는 호스트 컨트롤러(160)에 제공되고, 차례로 메모리 시스템(110A)에 명령 메시지를 제공한다. 메모리 시스템(110A)(예를 들어, 그 컨트롤러(115))은 명령 메시지(128)로부터의 명령, 메모리 장치 카운터(146)의 현재 값 및 메모리 시스템의 암호화 키를 사용하여 암호화 다이제스트를 생성한다. 예를 들어, 암호화 다이제스트는 명령, 메모리 장치 카운터 값 및 메모리 시스템(110A)에 대한 암호화 키에 대한 암호화 동작을 실행하기 위해 암호화 엔진(142)을 사용하여 생성될 수 있다. 체크된 디지털 서명이 미리 생성된 디지털 서명과 동일하다면, 메모리 시스템(110A)은 표시된 명령을 실행한다.
도 2는 다수의 호스트 장치들(205A, 205B, 205N)을 통해 메모리 시스템들을 프로그래밍하도록 구성된 프로그래밍 어플라이언스(220)를 포함하는 다른 예시적인 환경(200)을 예시한다. 각 호스트 장치(205A, 205B, 205N)는 도 1의 호스트 장치(105)의 메모리 시스템들(110A, 110B, 110N)과 유사하게, 하나 이상의 메모리 시스템들과 통신할 수 있다. 3개의 호스트 장치들(205A, 205B, 205N)이 도 2에 도시되어 있지만, 단일 프로그래밍 어플라이언스는 도시된 것보다 더 많거나 더 적은 호스트 장치들(205A, 205B, 205N)에서 메모리 시스템을 프로그래밍할 수 있다. 프로그래밍 어플라이언스(220)는 명령 메시지들(228A, 228B, 228N)을 각 호스트 장치들(205A, 205B, 205N)로 전송한다. 명령 메시지들(228A, 228B 228N)은 프로그래밍 어플라이언스(220)의 데이터 저장 장치(222)에 저장된 명령 파일(226)로부터의 명령들 및 미리 생성된 서명들을 포함한다. 명령 메시지들(228A, 228B, 228N) 각각은 명령 메시지들(228A, 228B, 228N)을 특정 메모리 시스템으로 보내는 호스트 장치들(205A, 205B, 205N)로 보내질 수 있다.
일부 예들에서, 명령 파일들(126, 226)과 같은 명령 파일은 메모리 시스템, 서명된 명령 및/또는 메모리 시스템 카운터 값들에 의해 참조될 수 있는 다수의 미리 생성된 다중 디지털 서명들을 포함한다. 하기의 표 1은 고유 식별자들(UID들)인, UID0, UID1, UIDN에 의해 설명되는 다양한 메모리 시스템들에 대해 미리 생성된 디지털 서명들을 포함하는 예시적인 명령 파일의 한 배열을 보여준다:
서명된 명령 | 메모리 시스템 카운터 값 | 미리 생성된 서명 |
UID0 | ||
CMD0 | MTC0 | --- |
CMD0 | MTC1 | --- |
CMD0 | MTC2 | --- |
. . . | ||
CMD0 | MTCN | --- |
UID1 | ||
CMD0 | MTC0 | --- |
CMD0 | MTC1 | --- |
CMD0 | MTC2 | --- |
. . . | ||
CMD0 | MTCN | --- |
. . . | ||
UIDN | ||
CMD0 | MTC0 | --- |
CMD0 | MTC1 | --- |
CMD0 | MTC2 | --- |
. . . |
표 1에서, 미리 생성된 디지털 서명들은 제공되지 않지만, 대신에 "---"으로 표현된다. 이 예에서, 명령 파일은 각 메모리 시스템(UID0, UID1..., UIDN)에 대해 다수의 다른 메모리 장치 카운터 값들(MTC0-MTCN)에 대해 제1 서명된 명령(CMD0)에 대해 생성된 디지털 서명들을 포함한다. 사용 시, 프로그래밍 어플라이언스는 호스트 장치와 통신하는 하나 이상의 메모리 시스템들에 대한 현재 메모리 시스템 카운터 값들을 제공하기 위해 적절한 호스트 장치에 쿼리한다. 각 메모리 시스템(UID0, UID1..., UIDN)에 대해, 프로그래밍 어플라이언스는 해당 메모리 어플라이언스와 연관된 미리 생성된 디지털 서명, 제1 서명된 명령(CMD0) 및 해당 메모리 시스템에 대한 현재 메모리 시스템 카운터 값을 선택한다. 그런 다음, 프로그래밍 어플라이언스는 제1 명령(CMD0) 및 선택된 미리 생성된 디지털 서명들을 포함하여 각자의 메모리 시스템들(UID0, UID1..., UIDN)에 대한 명령 메시지들을 생성한다.
표 2는 메모리 시스템들(UID0, UID1..., UIDN)에 대해 미리 생성된 디지털 서명들의 시퀀스들을 포함하는 명령 파일(126, 226)과 같은 명령 파일의 또 다른 예시적인 배열을 보여준다:
서명된 명령 | 메모리 시스템 카운터 값 | 미리 생성된 서명 |
UID0 | ||
CMD0 | MTC0 | --- |
CMD1 | MTC1 | --- |
. . . | ||
CMDN | MTCN | --- |
UID1 | ||
CMD0 | MTC0 | --- |
CMD1 | MTC1 | --- |
. . . | ||
CMDN | MTCN | --- |
. . . | ||
UIDN | ||
CMD0 | MTC0 | --- |
CMD1 | MTC1 | --- |
. . . | ||
CMDN | MTCN | --- |
각 메모리 시스템에 대해 미리 생성된 디지털 서명들의 시퀀스는 서명된 명령들(CMD0, CMD1..., CMDN)의 시퀀스에 해당한다. 예를 들어, 제1 메모리 시스템(UID0)에 대한 미리 생성된 디지털 서명들의 시퀀스는 제1 명령(CMD0) 및 제1 메모리 시스템 카운터 값(MTC0)과 연관된 제1 미리 생성된 디지털 서명; 제2 명령(CMD1) 및 제1 메모리 시스템 카운터 값보다 큰 제2 메모리 시스템 카운터 값(MTC1)과 연관된 제2 미리 생성된 디지털 서명; 등을 포함한다. 프로그래밍 장치는 (UID0, CMD0, MTC0)과 관련된 미리 생성된 디지털 서명을 포함하는 명령 메시지를 메모리 시스템(UID0)에 전송함으로써 (적절한 호스트 장치를 통해) 메모리 시스템(UID0)에서 서명된 명령들의 시퀀스를 실행할 수 있다. 메모리 시스템에서 제1 명령(UID0)을 실행하면 메모리 시스템 카운터가 메모리 시스템 카운터 값(MTC0)에서 메모리 시스템 카운터 값(MTC1)으로 증가하도록 할 수 있다. 그런 다음, 프로그래밍 어플라이언스는 (UID0, CMD1, MTC1) 등과 연관된 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 메모리 시스템(UID0)에 전송한다.
일부 예들에서, 명령 파일은 메모리 시스템 당 둘 이상의 명령 시퀀스를 지원하기 위해 미리 생성된 디지털 서명을 포함할 수 있다. 예를 들어, 표 2는 명령 시퀀스(CMD0, CMD1..., CMDN)를 실행하기 위해 메모리 시스템 카운터 값(MTC0)에서 시작하는 미리 생성된 디지털 서명들의 시퀀스들을 보여준다. 예시적인 명령 파일은 또한 추가 명령 시퀀스들을 실행하기 위해 메모리 시스템들 중 하나 이상에 대해 미리 생성된 디지털 서명들의 추가 시퀀스들을 포함할 수 있다. 미리 생성된 디지털 서명들의 추가 시퀀스들은 동일한 메모리 시스템 카운터 값(예를 들어, 표 2의 예에서 MTC0) 또는 다른 메모리 시스템 카운터 값들에서 시작할 수 있다.
일부 예들에서, 서로 다른 명령 시퀀스들에 대해 미리 생성된 디지털 서명들의 시퀀스들은 미리 생성된 공통 디지털 서명들을 공유할 수 있다. 표 2의 예를 참조하면, 메모리 시스템 카운터 값(MTC0)에서 시작하는 예시적인 명령 시퀀스(CMDX, CMD1..., CMDZ)를 고려하라. 이 명령 시퀀스와 표 2에 표시된 명령 시퀀스 둘 다 메모리 시스템 카운터 값(MTC1)에서 서명된 명령(CMD1)에 대해 미리 생성된 디지털 서명을 포함한다. 일부 예들에서, 명령 파일은 다수의 명령 시퀀스들의 일부가 될 수 있는 이와 같이 미리 생성된 서명들의 하나의 복사본을 포함한다. 미리 생성된 디지털 서명의 단일 복사본은 다수의 명령 시퀀스들을 참조할 수 있다. 예를 들어, 명령 파일은 명령 파일에 의해 지원되는 명령 시퀀스들을 설명하고 각 명령 시퀀스들에 대해 미리 생성된 디지털 서명들의 시퀀스들을 참조하는 명령 시퀀스 데이터를 포함할 수 있다.
표 3은 서로 다른 메모리 시스템 카운터 값들에서 시작하는 미리 생성된 서명들의 시퀀스들을 포함하는 명령 파일(126, 226)과 같은 명령 파일의 또 다른 예시적인 배열을 보여준다. 표 3에서 미리 생성된 디지털 서명들의 시퀀스들은 서명된 명령들(CMD0, CMD1..., CMDN)의 시퀀스에 해당한다. 도 3의 예에서, 명령 파일은 각 메모리 시스템 및 명령 시퀀스에 대해 미리 생성된 디지털 서명들의 다수의 시퀀스들을 포함한다. 예를 들아, 하기에 도시된 바와 같이, 메모리 시스템 및 명령 시퀀스에 대해 미리 생성된 디지털 서명 시퀀스들의 서로 다른 시퀀스들은 서로 다른 메모리 시스템 카운터 값들에서 시작할 수 있다. 프로그래밍 어플라이언스는 메모리 시스템에 현재 메모리 시스템 카운터 값을 쿼리하고 현재 메모리 시스템 카운터 값에서 시작하는 미리 생성된 디지털 서명들의 시퀀스를 선택할 수 있다.
서명된 명령 | 메모리 시스템 카운터 값 | 미리 생성된 서명 |
UID0 | ||
CMD0 | MTC0 | --- |
CMD1 | MTC1 | --- |
. . . | ||
CMDN | MTCN | --- |
CMD0 | MTC1 | --- |
CMD1 | MTC2 | --- |
. . . | ||
CMDN | MTCN+1 | --- |
UID1 | ||
. . . | ||
UIDN |
도 3은 메모리 시스템에 명령을 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름(300)의 일례를 나타내는 흐름도이다. 동작(302)에서, 프로그래밍 어플라이언스는 적어도 하나의 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신한다. 명령 파일은 HSM과 같은 제너레이터 장치로부터 수신될 수 있다. 명령 파일은 임의의 적절한 방식으로 수신될 수 있다. 예를 들어, 명령 파일은 이메일과 같은 전자 매체를 통해 수신될 수 있다. 일부 예들에서, 명령 파일은 예를 들어 프로그래밍 어플라이언스의 위치로 우편으로 보내지거나 배송되는 저장 장치와 같은 물리적 형태로 수신될 수도 있다.
동작(304)에서, 프로그래밍 어플라이언스는 명령 파일로부터 미리 생성된 디지털 서명을 선택한다. 선택된 미리 생성된 디지털 서명은 메모리 시스템(예를 들어, 호스트에서), 서명된 명령 및 메모리 시스템 카운터 값에 해당한다. 프로그래밍 어플라이언스는 전송될 서명된 명령, 미리 생성된 디지털 서명이 전송될 메모리 시스템 및 메모리 시스템 카운터의 예상 값에 기초하여 미리 생성된 디지털 서명을 선택할 수 있다. 메모리 시스템 카운터의 예상 값은 프로그래밍 어플라이언스가 메모리 시스템 카운터가 가질 것으로 예상하는 값이다. 예를 들어, 메모리 시스템이 새로 제조된 경우, 메모리 시스템 카운터의 예상 값은 알려진 초기 값 또는 알려진 초기 값보다 큰 미리 결정된 메모리 시스템 카운터 값일 수 있다. (예를 들어, 메모리 시스템은 제조 동안 알려진 수의 증가 이벤트들을 경험하는 것으로 알려져 있을 수 있다.) 또한, 일부 예들에서, 프로그래밍 어플라이언스는 메모리 시스템에 쿼리하여 현재 메모리 시스템 카운터 값을 수신하고 메모리 시스템의 응답을 기반으로 미리 생성된 디지털 서명을 선택한다.
동작(306)에서, 프로그래밍 어플라이언스는 명령 메시지를 메모리 시스템에 전송한다. 명령 메시지는 선택된 미리 생성된 디지털 서명 및 미리 생성된 디지털 서명과 관련된 서명된 명령을 포함한다. 메모리 시스템에 명령 메시지를 보내는 것은 메모리 시스템을 포함하는 호스트 장치에 명령 메시지를 보내는 것을 포함할 수 있다. 호스트 컨트롤러는 명령 메시지를 메모리 시스템에 포워딩할 수 있다.
도 4는 명령 시퀀스를 메모리 시스템으로 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름(400)의 일례를 나타내는 흐름도이다. 동작(402)에서, 프로그래밍 어플라이언스는 적어도 하나의 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신한다. 동작(404)에서, 프로그래밍 어플라이언스는 명령 파일로부터 미리 생성된 디지털 서명을 선택한다. 제1 메모리 시스템에 대해, 제1 선택된 미리 생성된 디지털 서명은 명령 시퀀스의 제1 명령, 제1 메모리 시스템 및 제1 메모리 시스템 카운터 값에 대응한다. 동작(406)에서, 프로그래밍 어플라이언스는 동작(404)에서 선택된 미리 생성된 디지털 서명 및 미리 생성된 디지털 서명과 연관된 서명된 명령을 포함하는 명령 메시지를 전송한다.
동작(408)에서, 프로그래밍 어플라이언스는 동작(408)에서 명령 시퀀스에 더 많은 명령이 있는지 여부를 결정한다. 예를 들어, 프로그래밍 어플라이언스는 명령 파일에 포함될 수 있는 명령 시퀀스 데이터를 고려할 수 있다. 명령 시퀀스 데이터는 명령 시퀀스의 명령들 및/또는 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 시퀀스의 미리 생성된 디지털 서명들을 나타내다. 명령 시퀀스의 모든 명령들이 메모리 시스템으로 전송되면, 동작(412)에서 프로그램이 완료된다. 명령 시퀀스에 추가 명령이 있으면, 프로그래밍 어플라이언스는 동작(410)에서 다음 명령으로 이동한 다음, 동작(404)로 돌아가서 다음 명령과 관련된 미리 생성된 디지털 서명을 선택한다.
도 5는 명령을 메모리 시스템으로 전송하도록 프로그래밍 어플라이언스에 의해 실행될 수 있는 프로세스 흐름(500)의 일례를 나타내는 흐름도이다. 동작(502)에서, 프로그래밍 어플라이언스는 적어도 하나의 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신한다. 동작(504)에서, 프로그래밍 어플라이언스는 현재 메모리 시스템 카운터 값에 대해 메모리 시스템에 쿼리한다. 쿼리는 메모리 시스템 또는 메모리 시스템과 통신하는 호스트 장치 또는 호스트 컨트롤러로 직접 전송될 수 있다. 메모리 시스템은 현재 메모리 시스템 카운터 값을 제공하여 응답한다.
동작(506)에서, 프로그래밍 어플라이언스는 서명된 명령 및 현재 메모리 시스템 카운터 값과 연관된 미리 생성된 디지털 서명을 명령 파일에서 선택한다. 동작(508)에서, 프로그래밍 어플라이언스는 선택된 미리 생성된 디지털 서명과 서명된 명령을 포함하는 명령 메시지를 메모리 시스템에 전송한다.
도 6은 미리 생성된 디지털 서명을 갖는 명령 메시지를 메모리 시스템으로 전송하기 위한 프로세스 흐름(600)의 일례를 나타내는 흐름도이다. 프로세스 흐름(600)은 두 개의 열들(601, 603)을 포함한다. 열(601)은 프로그래밍 어플라이언스에 의해 실행될 수 있는 동작들을 포함한다. 열(603)은 메모리 시스템에 의해 실행될 수 있는 특징들을 포함한다. 프로그래밍 어플라이언스는 프로세스 흐름(600)의 시작에서 미리 생성된 디지털 서명을 가질 수 있다. 일부 예들에서, 메모리 시스템과 프로그래밍 어플라이언스 사이의 통신은 메모리 시스템과 통신하는 호스트 장치에 의해 용이하게 된다.
동작(602)에서, 프로그래밍 어플라이언스는 예를 들어 쿼리(605)를 전송함으로써 현재 메모리 시스템 카운터 값에 대해 메모리 시스템에 쿼리한다. 메모리 시스템은 동작(604)에서 쿼리(605)를 수신한다. 동작(606)에서, 메모리 장치는 현재 메모리 시스템 카운터 값을 포함하는 카운터 값 메시지(607)를 제공한다.
프로그래밍 어플라이언스는 카운터 값 메시지(607)를 수신하고, 동작(608)에서 현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명과 연관된 메모리 시스템 카운터 값과 동일한지를 결정한다. 현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명과 관련된 메모리 시스템 카운터 값과 일치하지 않으면, 프로그래밍 어플라이언스는 동작(610)에서 오류 처리에 들어간다. 따라서, 프로세스 흐름은 동작(612)에서 오류 처리에 들어간다. 오류 처리는 예를 들어, 프로세스 흐름(600)을 종료하는 것 및/또는 현재 메모리 시스템 카운터 값과 일치하는 메모리 시스템 카운터 값과 연관된 다른 미리 생성된 디지털 서명을 선택하는 것을 포함할 수 있다.
현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명과 관련된 메모리 시스템 카운터 값과 일치하면, 프로그래밍 어플라이언스는 동작(612)에서 명령 메시지(609)를 메모리 시스템에 전송한다. 명령 메시지(609)는 미리 생성된 디지털 서명 및 미리 생성된 디지털 서명과 연관된 서명된 명령을 포함한다.
메모리 시스템은 동작(614)에서 명령 메시지(609)를 확인한다. 명령 메시지 확인하는 것은 명령, 메모리 시스템 카운터의 현재 값 및 암호화 키로부터 체크 디지털 서명을 생성하는 것을 포함할 수 있다. 체크 디지털 서명이 미리 생성된 디지털 서명과 일치하면, 메모리 시스템은 동작(616)에서 명령을 실행한다.
도 7은 미리 생성된 디지털 서명을 갖는 명령 메시지를 메모리 시스템으로 전송하기 위한 프로세스 흐름(700)의 일례를 나타내는 흐름도이다. 프로세스 흐름(700)은 두 개의 열들(701, 703)을 포함한다. 열(701)은 프로그래밍 어플라이언스에 의해 실행될 수 있는 동작들을 포함한다. 열(703)은 메모리 시스템에 의해 실행될 수 있는 특징들을 포함한다. 일부 예들에서, 메모리 시스템과 프로그래밍 어플라이언스 사이의 통신은 메모리 시스템과 통신하는 호스트 장치에 의해 용이하게 된다.
프로세스 흐름(700)에서, 프로그래밍 어플라이언스는 메모리 시스템 카운터 값이 미리 생성된 서명과 연관된 메모리 시스템 카운터 값과 일치할 때까지 메모리 시스템 카운터를 증가시킨다. 미리 생성된 서명은 단일 명령과 연관될 수 있다. 일부 예들에서, 미리 생성된 서명은 명령들의 시쿼스와 연관될 수 있다 (예를 들어, 이는 시퀀스의 제1 미리 생성된 서명일 수 있다). 프로세스 흐름(700)과 관련하여 설명된 바와 같이, 메모리 시스템 카운터를 증가시키는 것은 프로그래밍 어플라이언스가 더 적은 수의 미리 생성된 서명들을 갖는 명령 파일들을 사용하도록 할 수 있다. 예를 들어, 프로그래밍 어플라이언스는 메모리 장치와 서명된 명령의 주어진 조합에 대해 둘 이상의 미리 생성된 디지털 서명을 포함하는, 위의 표 1 및 3의 들과 같은, 명령 파일을 사용할 필요가 없다.
프로세스 흐름(700)의 시작에서, 프로그래밍 어플라이언스는 미리 생성된 디지털 서명을 보유한다. 미리 생성된 디지털 서명은 독립형의 서명된 명령과 연관될 수 있거나, 일부 예들에서는 명령 시퀀스의 제1 명령과 연관될 수 있다. 동작(702)에서, 프로그래밍 어플라이언스는 예를 들어 쿼리(705)를 전송함으로써 현재 메모리 시스템 카운터 값에 대해 메모리 시스템에 쿼리한다. 쿼리(705)는 메모리 장치와 연관된 호스트 장치 또는 그 호스트 컨트롤러로 향할 수 있다. 메모리 시스템은 동작(704)에서 쿼리(705)를 수신한다. 동작(706)에서, 메모리 장치는 현재 메모리 시스템 카운터 값을 포함하는 카운터 값 메시지(707)를 제공한다.
동작(708)에서, 프로그래밍 어플라이언스는 현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명과 연관된 메모리 시스템 카운터 값과 일치하는지를 결정한다. 일치하는 않는다면, 프로그래밍 어플라이언스는 동작(710)에서 메모리 시스템 카운터의 현재 값이 미리 생성된 디지털 서명과 관련된 메모리 시스템 카운터 값보다 큰지 여부를 결정한다.
현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명보다 높으면(예를 들어, 카운터 시퀀스를 따라 더 멀어짐), 이는 미리 생성된 디지털 서명이 사용하기에 적합하지 않을 수 있음을 나타낸다. 예를 들어, 메모리 시스템 카운터는 단조롭기 때문에, 미리 생성된 디지털 서명과 연관된 메모리 카운터 값을 초과하여 이미 증가한 경우, 미리 생성된 디지털 서명을 사용하지 못할 수 있다. 프로그래밍 어플라이언스는 동작(713)에서 오류 처리에 들어간다. 오류 처리는 프로세스 흐름(700)을 종료하는 것을 포함할 수 있다. 일부 예들에서, 오류 처리는 명령 파일로부터 미리 생성된 다른 디지털 서명을 선택하고 프로세스 흐름(700)을 다시 시작하는 것을 포함한다.
프로세스 흐름(700)과 함께 사용된 미리 생성된 디지털 서명이 메모리 장치(UID0), 서명된 명령(CMD0) 및 메모리 시스템 카운터 값(MTC0)과 연관된 위의 표 1의 명령 파일 배열을 사용하는 예를 고려하라. 현재 메모리 시스템 카운터 값이 메모리 시스템 카운터 값(MTC0)보다 큰 경우, 프로그래밍 어플라이언스는 더 높은 메모리 시스템 카운터 값과 연관된 명령 파일로부터 미리 생성된 다른 디지털 서명을 선택할 수 있다. 예를 들어, 프로그래밍 어플라이언스는 동작(706)에서 메모리 장치에 의해 제공되는 현재 메모리 시스템 카운터 값보다 크거나 같은 메모리 시스템 카운터 값과 연관된 미리 생성된 다른 디지털 서명을 선택할 수 있다.
프로세스 흐름(700)과 함께 사용되는 미리 생성된 디지털 서명이 메모리 시스템 카운터 값(MTC0)에 대응하는 제1 미리 생성된 디지털 서명이고 명령 시퀀스(CMD0, CMD1..., CMDN)에 대응하는 미리 생성된 디지털 서명들의 시퀀스의 제1 미리 생성된 디지털 서명인 위의 표 3의 명령 파일 배열을 사용하는 또 다른 예를 고려하라. 현재 메모리 시스템 카운터 값이 메모리 시스템 카운터 값(MTC0)보다 큰 경우, 프로그래밍 어플라이언스는 명령 시퀀스(CMD0, CMD1..., CMDN)에 해당하는 미리 생성된 디지털 서명들의 다른 시퀀스를 선택할 수 있다. 예를 들어, 프로그래밍 어플라이언스는 명령 시퀀스(CMD0, CMD1..., CMDN)에도 대응하는 미리 생성된 디지털 서명들의 다른 시퀀스로부터의 제1 미리 생성된 디지털 서명을 사용하여 프로세스 흐름(700)을 재실행할 수 있다.
이제 동작(710)을 다시 참조하면, 메모리 시스템 카운터의 현재 값이 미리 생성된 디지털 서명과 연관된 메모리 시스템 카운터보다 크지 않으면, 프로그래밍 어플라이언스는 메모리 시스템이 동작(714)에서 메모리 시스템 카운터를 증가시키도록 한다. 프로그래밍 어플라이언스는 증가 인스트럭션(709)을 전송할 수 있다. 증가 인스트럭션(709)은 메모리 시스템에서 증가 이벤트를 촉진하는 임의의 액션일 수 있다. 예를 들어, 증가 인스트럭션(709)은 메모리 시스템 카운터를 증가시키기 위해 메모리 시스템에 대한 명시 적 인스트럭션일 수 있다. 또 다른 예에서, 증가 인스트럭션은 메모리 시스템을 재설정하기 위해 호스트 장치 또는 호스트 컨트롤러에 대한 인스트럭션일 수 있다. 증가 인스트럭션(709)에 응답하여, 메모리 시스템은 동작(716)에서 메모리 시스템 카운터를 증가시킨다.
메모리 시스템에 메모리 시스템 카운터를 증가시키도록 지시한 후, 프로그래밍 어플라이언스는 동작(702)으로 돌아가서 설명된 바와 같이 현재 카운터 값에 대해 메모리 시스템에 쿼리한다. 일부 예들에서, 프로그래밍 어플라이언스는 이전에 제공된 현재 값과 카운터 시퀀스로부터 증가한 후 메모리 시스템 카운터의 새로운 현재 값을 예측할 수 있다. 프로그래밍 어플라이언스가 메모리 시스템 카운터의 새로운 현재 값을 예측하면, 동작(702)을 건너 뛰고 대신(예를 들어, 현재 카운터 값에 대해 메모리 시스템에 다시 쿼리하지 않고) 동작(708)으로 진행할 수 있다.
프로세스 흐름(700)은 메모리 시스템 카운터의 현재 값이 동작(708)에서 미리 생성된 디지털 서명과 연관된 메모리 시스템 카운터의 선택된 값과 일치할 때까지 실행될 수 있다. 이렇게 발생할 경우, 프로그래밍 어플라이언스는 동작(718)에서 명령 메시지(711)를 메모리 시스템에 전송한다. 명령 메시지(711)는 미리 생성된 디지털 서명 및 미리 생성된 디지털 서명과 연관된 서명된 명령을 포함한다.
메모리 시스템은 동작(720)에서 명령 메시지(711)를 확인한다. 명령 메시지 확인하는 것은 명령, 메모리 시스템 카운터의 현재 값 및 암호화 키로부터 체크 디지털 서명을 생성하는 것을 포함할 수 있다. 체크 디지털 서명이 미리 생성된 디지털 서명과 일치하면, 메모리 시스템은 명령을 실행한다.
일부 예시적인 배열에서, 명령 파일은 메모리 시스템과 서명된 명령의 동일한 조합에 대한 여러 사전 디지털 서명들을 포함한다. 위의 표 1과 3은 이러한 배열의 예시적인 명령 파일들을 설명한다. 본원에 설명된 바와 같이, 이는 현재 메모리 시스템 카운터 값이 값들의 범위를 가질 수 있는 경우 프로그래밍 어플라이언스의 유연성을 높일 수 있다. 이는 또한 명령 파일을 획득한 권한없는 행위자가 그 안에 미리 생성된 디지털 서명들을 악용하여 메모리 시스템에서 의도하지 않은 변경을 일으킬 수 있는 기회들을 만들 수 있다.
프로그래밍 어플라이언스가 메모리 장치 카운터 값(MTC0)과 연관된 미리 생성된 서명을 사용하여 메모리 시스템(UID0)이 명령(CMD0)을 실행하도록 하는 표 1에 표시된 명령 파일 배열을 사용하는 예를 고려하라. 명령 파일은 다른 더 큰 메모리 시스템 카운터 값들(MTC1, MTC2..., MTCN)에 대응하는 서명된 명령(CMD0)에 대해 미리 생성된 서명들도 포함한다. 따라서, 명령 파일을 소유한 권한이 없는 행위자는 메모리 시스템의 메모리 카운터 값이 (MTCN) 아래로 유지되는 한 메모리 시스템이 서명된 명령(CMD0)을 다시 실행하도록 할 수 있다.
프로그래밍 어플라이언스가 메모리 시스템 카운터 값(MTC0)에서 시작하는 미리 생성된 디지털 서명들의 시퀀스를 사용하여 메모리 장치(CMD0)에서 명령 시퀀스(CMD0, CMD1, CMDN)를 완료하는 위의 표 3의 명령 파일 구성을 사용하는 또 다른 예를 고려하라. 명령 시퀀스의 종료 시, 현재 메모리 시스템 카운터 값이 미리 생성된 디지털 서명들의 일부와 연관된 메모리 시스템 카운터 값들보다 낮도록 하는 것이 가능하다. 이것은 명령 파일을 소유한 권한이 없는 행위자가 메모리 시스템이 추가적인 서명된 명령들을 실행하도록 할 수 있음을 의미한다. 예를 들어, 메모리 시스템 카운터 값(MTCN)에서 명령(CMDN)을 실행한 후, 권한이 없는 행위자가 메모리 카운터 값(MTCN+1)에 해당하는 미리 생성된 디지털 서명을 사용하여 메모리 시스템이 서명된 명령(CMDN)을 다시 실행하도록 할 수 있다.
도 8은 하나 이상의 장치들(830-9950)의 일부로서 메모리 시스템(820)(예를 들어, 본원에 설명된 임의의 메모리 장치들)을 갖는 예시적인 호스트 장치(810)(예를 들어, 호스트(105))를 도시한다. 장치는 호스트 장치(810)와 같은 호스트 장치를 포함할 수 있는 임의의 장치를 포함한다. 호스트 장치(810)는 인스트럭션들(순차적 또는 기타)을 실행할 수 있는 임의의 장치일 수 있다. 예시적인 장치들은 차량(830)(예를 들어, 인포테인먼트 시스템, 제어 시스템의 일부 등), 드론(850)(예를 들어, 제어 시스템의 일부), 가구 또는 기기(840)(예를 들어, 센서 시스템, 엔터테인먼트 또는 인포테인먼트 시스템) 등을 포함한다. 다른 예들에서, 도시되지는 않았지만, 장치들은 항공, 해양, 사물 인터넷(IOT) 및 기타 장치들을 포함할 수 있다.
도 9는 본원에 논의된 기술들(예를 들어, 방법론들) 중 임의의 하나 이상이 수행될 수 있는 예시적인 기계(900)의 블록도를 예시한다. 대안적인 실시예들에서, 기계(900)는 독립형 장치로 동작할 수 있거나 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 네트워킹된 배치에서, 기계(900)는 서버 기계, 클라이언트 기계의 용량에서 또는 서버-클라이언트 네트워크 환경들의 둘 모두에서 동작할 수 있다. 일 예에서, 기계(900)는 피어 투 피어(P2P)(또는 다른 분산된) 네트워크 환경에서 피어 기계로서 작용할 수 있다. 기계(900)는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 모바일 폰, 웹 기기, IoT 장치, 자동차 시스템 또는 해당 기계에 의해 수행될 조치들을 명시하는 인스트럭션들(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계만이 예시되어 있지만, "기계"이라는 용어는 또한 클라우드 컴퓨팅, 서비스로서의 소프트웨어(SaaS), 기타 컴퓨터 클러스터 구성과 같이, 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 기계들의 임의의 컬렉션을 포함하는 것으로 간주해야 한다.
본원에 설명된 바와 같은 예들은 로직, 컴포넌트들, 장치들, 패키지들 또는 메커니즘들을 포함하거나 이들에 의해 동작할 수 있다. 회로부는 하드웨어(예를 들어, 단순 회로들, 게이트들, 로직 등)를 포함하는 유형의 엔티티들로 구현된 회로 컬렉션(예를 들어, 세트)이다. 회로부 멤버쉽은 시간이 지남에 따라 플렉서블하고 기본 하드웨어 변동성이 있을 수 있다. 회로부들은 동작 시 단독으로 또는 조합하여 특정 작업들을 수행할 수 있는 멤버들을 포함한다. 예에서, 회로부의 하드웨어는 특정 동작(예를 들어, 하드 와이어)을 수행하도록 변경할 수 없게 설계될 수 있다. 일 예에서, 회로부의 하드웨어는 특정 동작의 인스트럭션들을 인코딩하기 위해 물리적으로 변형된(예를 들어, 불변 질량 입자의 자기적, 전기적, 이동 가능한 배치 등) 비일시적 컴퓨터 판독 가능 매체를 포함하는 가변적으로 연결된 물리 컴포넌트들(예를 들어, 실행 유닛, 트랜지스터, 간단 회로 등)을 포함할 수 있다. 물리 컴포넌트들을 연결 시, 하드웨어 구성의 기본 전기적 특성들은 예를 들어, 절연체에서 도체로 또는 그 반대로 변경된다. 인스트럭션들은 참여 하드웨어(예를 들어, 실행 유닛 또는 로딩 메커니즘)가 작동 중에 특정 작업들의 일부를 수행하기 위해 가변 연결들을 통해 하드웨어에서 회로부의 멤버들을 생성할 수 있게 한다. 따라서, 컴퓨터 판독 가능 매체는 장치가 동작할 때 회로부의 다른 컴포넌트들에 통신 가능하게 연결된다. 일 예에서, 물리 컴포넌트들 중 어느 것도 하나 이상의 회로부의 하나 이상의 멤버에 사용될 수 있다. 예를 들어, 동작 하에서, 실행 유닛들은 한 시점에서 제1 회로부의 제1 회로에서 사용될 수 있고, 제1 회로부의 제2 회로에 의해, 또는 다른 시간에 제2 회로부의 제3 회로에 의해 재사용될 수 있다.
기계(예를 들어, 컴퓨터 시스템)(900)(예를 들어, 프로그래밍 어플라이언스(120), 제너레이터 장치(124), 호스트 장치(105), 메모리 시스템(110A) 등)은 하드웨어 프로세서(902)(예를 들어, 메모리 컨트롤러(115)와 같은, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 하드웨어 프로세서 코어, 또는 이들의 임의의 조합 등), 메인 메모리(904) 및 정적 메모리(906)를 포함하고, 이들 중 일부 또는 전부는 인터링크(예를 들어, 버스)(908)를 통해 서로 통신할 수 있다. 기계(900)는 디스플레이 유닛(910), 영숫자 입력 장치(912)(예를 들어, 키보드) 및 사용자 인터페이스(UI) 내비게이션 장치(914)(예를 들어, 마우스)를 더 포함할 수 있다. 일 예에서, 디스플레이 유닛(910), 입력 장치(912) 및 UI 네비게이션 장치(914)는 터치 스크린 디스플레이일 수 있다. 기계(900)는 저장 장치(예를 들어, 구동 유닛)(916), 신호 생성 장치(918)(예를 들어, 스피커), 네트워크 인터페이스 장치(920), 및 위성항법시스템(GPS) 센서, 나침반, 가속도계 또는 기타 센서와 같은 하나 이상의 센서들(917)를 추가로 포함할 수 있다. 기계(900)는 하나 이상의 주변 장치들(예를 들어, 프린터, 카드 리더기 등)을 통신 또는 제어하기 위한 직렬(예를 들어, 범용 직렬 버스(USB), 병렬 또는 다른 유선 또는 무선(예를 들어, 적외선(IR), 근거리 통신(NFC)) 등) 연결과 같은 출력 컨트롤러(928)를 포함할 수 있다.
저장 장치(916)는 본원에 설명된 기술들 또는 기능들 중 임의의 하나 이상에 의해 구현되거나 이용되는 하나 이상의 데이터 구조 또는 인스트럭션(924)(예를 들어, 소프트웨어) 세트가 저장되는 기계 판독 가능 매체(922)를 포함할 수 있다. 인스트럭션들(924)은 또한 기계(900)에 의해 실행되는 동안 메인 메모리(904) 내에, 정적 메모리(906) 내에, 또는 하드웨어 프로세서(902) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 일 예에서, 하드웨어 프로세서(902), 메인 메모리(904), 정적 메모리(906) 또는 저장 장치(916)의 하나 또는 임의의 조합은 기계 판독 가능 매체(922)를 구성할 수 있다.
기계 판독 가능 매체(922)가 단일 매체로서 예시되어 있지만, "기계 판독 가능 매체"라는 용어는 하나 이상의 인스트럭션들(924)을 저장하도록 구성된 단일 매체 또는 다중 매체(예를 들어, 중앙 집중식 또는 분산식 데이터베이스, 또는 관련 캐시들 및 서버들)를 포함할 수 있다.
"기계 판독 가능 매체"라는 용어는 기계(900)에 의한 실행을 위한 인스트럭션들을 저장, 인코딩 또는 전달할 수 있고, 기계(900)가 본 개시의 기술들 중 임의의 하나 이상을 수행하게 하거나, 이러한 인스트럭션들에 의해 사용되거나 이와 관련된 데이터 구조들을 저장, 인코딩 또는 전달하게 할 수 있는 임의의 매체를 포함할 수 있다. 비제한적 기계 판독 가능 매체 예들은 솔리드 스테이트 메모리들과, 광학 및 자기 매체를 포함할 수 있다. 일 예에서, 매스 기계 판독 가능 매체는 복수의 입자들을 이 불변(예를 들어, 휴지) 매스(mass)를 갖는 기계 판독 가능 매체를 포함한다. 따라서, 매스 기계 판독 가능 매체는 일시적 전파 신호들이 아니다. 매스 기계 판독 가능 매체의 특정 예들은, 반도체 메모리 장치들(예를 들어, 전기적으로 프로그래밍 가능 읽기 전용 메모리(EPROM), 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM)) 및 플래시 메모리 디바이스들과 같은 비휘발성 메모리; 내부 하드 디스크들 및 이동식 디스크들과 같은 자기 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함할 수 있다.
인스트럭션들(924)(예를 들어, 소프트웨어, 프로그램, 운영 체제(OS) 등) 또는 다른 데이터는 저장 장치(921)에 저장되고, 프로세서(902)에 의해 사용하기 위해 메모리(904)에 의해 액세스될 수 있다. 메모리(904)(예를 들어, DRAM)는 일반적으로 빠르지만 휘발성이며, 따라서 "오프" 상태에 있는 동안을 포함하는 장기 저장에 적합한 저장 장치(921)(예를 들어, SSD)와는 다른 유형의 저장 장치이다. 사용자 또는 기계(900)에 의해 사용 중인 인스트럭션들(924) 또는 데이터는 일반적으로 프로세서(902)에 의해 사용하기 위해 메모리(904)에 로드된다. 메모리(904)가 가득 찬 경우, 저장 장치(921)로부터의 가상 공간은 메모리(904)를 보충하기 위해 할당될 수 있다; 그러나, 저장(921) 장치는 일반적으로 메모리(904)보다 느리고, 기록 속도는 일반적으로 판독 속도보다 적어도 2배 느리기 때문에, 가상 메모리의 사용은 (메모리(904), 예를 들어 DRAM과 대조적으로) 저장 장치 레이턴시로 인해 사용자 경험을 크게 감소시킬 수 있다. 또한, 가상 메모리에 대한 저장 장치(921)의 사용은 저장 장치(921)의 사용 가능한 수명을 크게 줄일 수 있다.
가상 메모리와 반대로, 가상 메모리 압축(예를 들어, Linux® 커널 기능 "ZRAM")은 저장 장치(921)로 페이징하는 것을 막기 위해 메모리의 일부를 압축 블록 스토리지로 사용한다. 페이징은 이러한 데이터를 저장 장치(921)에 기록할 필요가 있을 때까지 압축된 블록에서 발생한다. 가상 메모리 압축은 메모리(904)의 사용 가능한 크기를 증가시키면서 저장 장치(921)의 마모를 감소시킨다.
모바일 전자 장치 또는 모바일 스토리지에 최적화된 저장 장치들은 통상적으로 MMC 솔리드 스테이트 저장 장치(예를 들어, microSDTM(마이크로 보안 디지털) 카드 등)를 포함한다. MMC 장치들은 호스트 장치와 다수의 병렬 인터페이스들(예를 들어, 8 비트 병렬 인터페이스)를 포함하며, 종종 호스트 장치로부터 컴포넌트들을 탈착 가능하고 분리된다. 반대로, eMMCTM 장치들은 회로 보드에 부착되며, 판독 속도가 직렬 ATATM(직렬 AT(고급 기술) 결합 또는 SATA) 기반 SSD 장치들에 필적하는 호스트 장치의 컴포넌트로 간주된다. 그러나, 가상 또는 증강 현실 장치들을 완전히 활성화하고 네트워크 속도를 높이는 등 모바일 장치 성능에 대한 요구가 계속 증가하고 있다. 이러한 요구에 부응하여, 저장 장치들은 병렬에서 직렬 통신 인터페이스들로 전환되었다. 컨트롤러들 및 펌웨어를 포함한 UFS(Universal Flash Storage) 장치들은 전용 판독/기록 경로들이 있는 저전압 차동 시그널링(LVDS) 직렬 인터페이스를 사용하여 호스트 장치와 통신하여, 더 빠른 판독/기록 속도를 더욱 향상시킨다.
인스트럭션들(924)은 다수의 전송 프로토콜들(예를 들어, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 하이퍼 텍스트 전송 프로토콜(HTTP) 등) 중 어느 하나를 사용하여 네트워크 인터페이스 장치(920)를 통해 전송 매체를 사용하여 통신 네트워크(926)를 통해 전송되거나 수신될 수 있다. 예시적인 통신 네트워크들은 그 중에서도, 근거리 통신망(LAN), 광역 통신망(WAN), 패킷 데이터 네트워크(예를 들어, 인터넷), 이동 전화 네트워크(예를 들어, 셀룰러 네트워크), POTS(Plain Old Telephone) 네트워크들, 무선 데이터 네트워크들(예를 들어, Wi-Fi®로 알려진 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 패밀리, WiMax®로 알려진 IEEE 802.16 표준 패밀리), IEEE 802.15.4 표준 패밀리, 피어 투 피어(P2P) 네트워크들을 포함할 수 있다. 일 예에서, 네트워크 인터페이스 장치(920)는 통신 네트워크(926)에 연결하기 위한 하나 이상의 물리적 잭들(예를 들어, 이더넷, 동축 또는 폰 잭들) 또는 하나 이상의 안테나들을 포함할 수 있다. 일 예에서, 네트워크 인터페이스 장치(920)는 단일 입력 다중 출력(SIMO), 다중 입력 다중 출력(MIMO) 또는 다중 입력 단일 출력(MISO) 기술들 중 적어도 하나를 사용하여 무선으로 통신하기 위한 복수의 안테나들을 포함할 수 있다. "전송 매체"라는 용어는 기계(900)에 의해 실행을 위한 인스트럭션들을 저장, 인코딩 또는 전송할 수 있는 임의의 무형 매체를 포함하며, 이러한 소프트웨어의 통신을 용이하게 하기 위해 디지털 또는 아날로그 통신 신호들 또는 다른 무형 매체를 포함하도록 해야 한다.
상기 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면들에 대한 참조들을 포함한다. 도면들은 예시로서 본 발명이 실시될 수 있는 특정 실시예들을 도시한다. 이러한 실시예들은 본원에서 "예들"로도 지칭된다. 이러한 예들은 도시되거나 설명된 것 외에 요소들을 포함할 수 있다. 그러나, 본 발명자들은 또한 도시되거나 설명된 요소들만이 제공되는 예들을 고려한다. 게다가, 본 발명자들은 또한 특정 예(또는 이의 하나 이상의 측면들)와 관련하여, 또는 본원에 도시되거나 설명된 다른 예들(또는 이의 하나 이상의 측면들)과 관련하여 도시되거나 설명된 이러한 요소들의 임의의 조합 또는 순열 (또는 그 하나 이상의 측면들)을 사용하는 예들을 고려한다.
이 문서에서, "하나(a)" 또는 "하나(an)"이라는 용어는 특허 문서들에서 일반적으로 사용되는 것으로서, "적어도 하나" 또는 "하나 이상"의 다른 예들이나 사용들과 무관하게 하나 이상을 포함하는 데 사용된다. 이 문서에서, "또는" 이라는 용어는 달리 지시되지 않는 한, 비배타적인 것을 지칭하거나, "A 또는 B"가 "A이지만 B가 아닌", "B이지만 A가 아닌" 및 "A 및 B"를 포함할 수 있도록 하는 데 사용된다. 첨부된 청구범위에서, "포함하는(including)" 및 "in which"이라는 용어는 "포함하는(comprising)" 및 "wherein" 이라는 각각의 용어들의 일반 영어와 동등한 의미로 사용된다. 또한, 하기의 청구범위에서, "포함하는(including)" 및 "포함하는(comprising)" 이라는 용어들은 개방형이며, 즉 청구 범위에서 이러한 용어 뒤에 나열된 것 외에 요소들을 포함하는 시스템, 장치, 물품 또는 프로세스는 여전히 그 청구항의 범위에 속하는 것으로 간주된다. 게다가, 하기의 청구범위에서, "제1", "제2" 및 "제3" 등의 용어들은 단지 라벨들로서 사용되며, 대상들에 수치 적 요건들을 부과하려는 의도는 아니다.
다양한 예들에서, 본원에 설명된 컴포넌트들, 컨트롤러들, 프로세서들, 유닛들, 엔진들 또는 표들은 그 중에서도, 물리적 장치 상에 저장된 물리적 회로 또는 펌웨어를 포함할 수 있다. 본원에 사용된 바와 같이, "프로세서"는 제한하는 것은 아니나, 마이크로 프로세서, 마이크로 컨트롤러, 그래픽 프로세서, 디지털 신호 프로세서(DSP), 또는 프로세서 또는 다중 코어 장치 그룹을 포함하는 임의의 다른 유형의 프로세서 또는 처리 회로와 같은 모든 유형의 계산 회로를 의미한다.
이 문서에서 사용되는 "수평(horizontal)" 이라는 용어는 임의의 시점에서 기판의 실제 배향과 무관하게 웨이퍼 또는 다이 아래에 놓인 것과 같은 기판의 통상적인 평면 또는 표면에 평행한 평면으로 정의된다. "수직" 이라는 용어는 상기에 정의된 바와 같이 수평에 수직인 방향을 지칭한다. "상에", "위" 및 "아래"와 같은 전치사들은 기판의 배향에 관계없이 기판의 상부 또는 노출된 표면에 있는 통상적인 평면 또는 표면에 대해 정의되는 반면; "상에"는 "상에"(반대에 대한 명시적인 표시가 없는 경우) 놓여 있는 다른 구조에 대한 한 구조의 직접적인 접촉을 제안하기 위한 것이며; "위" 및 "아래"라는 용어들은 구조들(또는 레이어들, 특징부들 등)의 상대적인 배치를 식별하기 위한 것으로, 이는 이에 제한되는 것은 아니나 이와 같이 특별히 식별되지 않는 한 식별된 구조들 간 직접 접촉을 명시적으로 포함한다. 마찬가지로, "위" 및 "아래"라는 용어들은, 어느 시점에서 논의중인 구조의 가장 바깥 부분인 경우 구조가 참조 구조 "위에(over)" 있을 수 있기 때문에, 구조가 수평 방향이 아니라 참조 구조에 대해 수직으로 확장되더라도 수평 방향으로 제한되지 않는다.
"웨이퍼" 및 "기판" 이라는 용어들은 본원에서 일반적으로 집적 회로가 형성되는 임의의 구조를 지칭하는 것으로 사용되며, 다양한 집적 회로 제조 단계들 동안 이러한 구조들을 지칭하는 것으로도 사용된다. 그러므로, 다음의 상세한 설명은 제한적인 의미로 받아들여서는 안되며, 다양한 실시예들의 범위는 이러한 청구 범위가 부여되는 등가물들의 전체 범위와 함께 첨부된 청구 범위에 의해서만 정의된다.
본 개시에 따라 본원에 설명된 다양한 실시예들은 메모리 셀들(예를 들어, NAND 메모리 셀 스트링)의 수직 구조를 이용하는 메모리를 포함한다. 본원에 사용된 바와 같이, 방향성 형용사는 메모리 셀들이 형성되는 기판의 표면에 대해 취해질 것이다(즉, 수직 구조는 기판 표면으로부터 연장되는 것으로 간주될 것이고, 수직 구조의 하단은 기판 표면에 가장 근접한 단부로 간주될 것이며, 수직 구조의 상단은 기판 표면으로부터 가장 먼 단부로 간주될 것이다).
본원에 사용된 바와 같이, 수평(horizontal), 수직(vertical), 법선(normal), 평행(parallel), 직각(perpendicular) 등과 같은 방향성 형용사들 상대적인 배향들을 지칭할 수 있으며, 달리 언급되지 않는 한 특정 기하학적 특성들에 대한 엄격한 준수를 요구하지는 않는다. 예를 들어, 본원에 사용된 바와 같이, 수직 구조는 기판의 표면에 완전히 직각일 필요는 없지만, 대신에 일반적으로 기판의 표면에 직각일 수 있으며, 기판의 표면과 예각(예를 들어, 60 내지 120도 등)을 형성할 수 있다.
본원에 설명된 일부 실시예들에서, 상이한 도핑 구성들이 소스측 선택 게이트(SGS), 제어 게이트(CG) 및 드레인측 선택 게이트(SGD)에 적용될 수 있으며, 이들 각각은 결과적으로 이러한 타이어들(예를 들어, 폴리 실리콘 등)이 에칭 용액에 노출될 때 상이한 에칭 속도들을 가질 수 있도록, 이 예에서 폴리실리콘으로 형성되거나 적어도 폴리실리콘을 포함할 수 있다. 예를 들어, 3D 반도체 장치에서 모놀리식 필라를 형성하는 프로세스에서, SGS 및 CG는 리세스(recess)들을 형성할 수 있는 반면, SGD는 덜 리세스되거나 심지어 리세스되지 않을 수 있다. 따라서, 이러한 도핑 구성들은 에칭 용액(예를 들어, 테트라메틸암모늄 하이드록사이드(tetramethylammonium hydroxide;TMCH))을 사용함으로써 3D 반도체 장치에서 별개의 타이어들(예를 들어, SGS, CG 및 SGD)로의 선택적 에칭을 가능하게 할 수 있다.
본원에 사용된 바와 같은 메모리 셀을 동작시키는 것은 메모리 셀로부터 판독하거나 이에 기록하거나 이를 소거하는 것을 포함한다. 메모리 셀을 의도된 상태로 배치하는 동작은 본원에서 "프로그래밍"으로 지칭되며, 메모리 셀에 기록하거나 이로부터 소거하는 것 둘 다를 포함할 수 있다(예를 들어, 메모리 셀은 소거된 상태로 프로그래밍될 수 있다).
본 개시의 하나 이상의 실시예들에 따르면, 메모리 장치의 내부 또는 외부에 위치된 메모리 컨트롤러(예를 들어, 프로세서, 컨트롤러, 펌웨어 등)는 마모량 주기 또는 마모 상태(예를 들어, 마모 사이클 기록, 발생하는 메모리 장치의 동작들을 카운팅, 개시되는 메모리 장치의 동작들을 추적, 마모 상태에 대응되는 메모리 장치 특성을 평가 등)를 결정(예를 들어, 선택, 설정, 조정, 계산, 변경, 삭제, 통신, 적응, 도출, 정의, 활용, 수정, 적용 등)할 수 있다.
본 개시의 하나 이상의 실시예들에 따르면, 메모리 액세스 장치는 각 메모리 동작에 의해 메모리 장치에 마모 사이클 정보를 제공하도록 구성될 수 있다. 메모리 장치 제어 회로부(예를 들어, 제어 로직)는 마모 사이클 정보에 대응되는 메모리 장치 성능 변화들을 보상하도록 프로그래밍될 수 있다. 메모리 장치는 마모 사이클 정보를 수신하고, 마모 사이클 정보에 응답하여 하나 이상의 동작 파라미터들(예를 들어, 값, 특성)을 결정할 수 있다.
요소가 다른 요소 "상"에 있거나, "연결되어" 있거나 "결합되어" 있는 것으로 지칭될 때, 이는 직접 다른 요소 상에 있거나, 연결되거나 결합되거나, 중간 요소들이 존재할 수 있음을 이해하게 될 것이다. 반대로, 요소가 다른 요소 "바로 위에" 있거나, "직접 연결되어" 있거나 "직접 결합되어" 있는 것으로 지칭될 때, 중간 요소들 또는 층들이 존재하지 않는다. 두 요소들이 도면들에 이들을 연결하는 선으로 도시되어 있는 경우, 달리 지시되지 않는 한, 두 요소들은 결합되거나 직접 결합될 수 있다.
본원에 설명된 방법 예들은 적어도 부분적으로 기계 또는 컴퓨터로 구현될 수 있다. 일부 예들은 상기 예들에서 설명된 바와 같은 방법들을 수행하기 위해 전자 장치를 구성하도록 동작 가능한 인스트럭션들로 인코딩된 컴퓨터 판독 가능 매체 또는 기계 판독 가능 매체를 포함할 수 있다. 이러한 방법들의 구현은 마이크로코드, 어셈블리 언어 코드, 고급 언어 코드 등과 같은 코드를 포함할 수 있다. 이러한 코드는 다양한 방법들을 수행하기 위한 컴퓨터 판독 가능 인스트럭션들을 포함할 수 있다. 코드는 컴퓨터 프로그램 제품들의 일부를 형성할 수 있다. 또한, 코드는 실행 동안 또는 다른 시간과 같이, 하나 이상의 휘발성 또는 비휘발성의 유형 컴퓨터 판독 가능 매체에 유형적으로 저장될 수 있다. 이러한 유형의 컴퓨터 판독 가능 매체의 예들은 제한하는 것은 아니나, 하드 디스크, 착탈식 자기 디스크, 착탈식 광 디스크(예를 들어, 콤팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 솔리드 스테이드 드라이브(SSD), 범용 플래시 메모리(UFS) 디바이스, 내장형 MMC(eMMC) 장치 등을 포함할 수 있다.
예들
예 1은 메모리 시스템 프로그래밍을 위한 방법으로서, 프로그래밍 어플라이언스에 의해, 제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신하는 단계로서, 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관되는, 상기 수신하는 단계; 및 프로그래밍 어플라이언스에 의해 메모리 시스템으로, 제1 명령 및 제1 미리 생성된 디지털 서명을 포함하는 제1 명령 메시지를 전송하는 단계를 포함한다.
예 2에서, 예 1의 주제는 선택적으로, 메모리 시스템에 의해, 현재 메모리 시스템 카운터 값 및 메모리 시스템 암호화 키를 사용하여 제1 미리 생성된 디지털 서명을 확인하는 단계; 및 메모리 시스템에 의해, 제1 미리 생성된 디지털 서명을 실행하는 단계를 포함한다.
예 3에서, 예 1 내지 2 중 어느 하나 이상의 주제는 선택적으로 명령 파일은 제2 미리 생성된 디지털 서명을 더 포함하고, 제2 미리 생성된 디지털 서명은 메모리 시스템, 제2 명령 및 제1 메모리 시스템 카운터 값 이후의 제2 메모리 시스템 카운터 값과 연관되며, 상기 방법은, 제1 명령 메시지를 메모리 시스템에 전송한 후, 제2 명령 및 제2 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 메모리 시스템에 전송하는 단계를 포함한다.
예 4에서, 예 3의 주제는 선택적으로 명령 파일이 제3 미리 생성된 디지털 서명을 더 포함하고, 제3 미리 생성된 디지털 서명은 제3 명령 및 제2 메모리 시스템 카운터 값 이후의 제3 메모리 시스템 카운터 값과 연관되며, 상기 방법은, 제2 명령 메시지를 전송한 후, 명령 시퀀스 데이터가 제3 명령을 나타낸다고 결정하는 단계; 및 제3 명령 및 제3 미리 생성된 디지털 서명을 포함하는 제3 명령 메시지를 메모리 시스템에 전송하는 단계를 포함한다.
예 5에서, 예 1 내지 4 중 어느 하나 이상의 주제는 선택적으로 명령 파일은 제2 미리 생성된 디지털 서명을 포함하고, 제2 미리 생성된 디지털 서명은 제1 명령 및 제1 메모리 시스템 카운터 값과 다른 제2 메모리 시스템 카운터 값과 연관되며, 프로그래밍 어플라이언스에 의해, 메모리 시스템에 쿼리하여 현재 메모리 시스템 카운터 값을 수신하는 단계; 및 프로그래밍 어플라이언스에 의해, 현재 메모리 시스템 카운터 값 및 제1 메모리 시스템 카운터 값에 적어도 부분적으로 기초하여 제1 미리 생성된 디지털 서명을 선택하는 단계를 더 포함한다.
예 6에서, 예 1 내지 5 중 어느 하나 이상의 주제는 선택적으로 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계; 제1 현재 메모리 시스템 카운터 값이 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계; 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값보다 큰 제2 현재 메모리 시스템 카운터 값을 수신하는 단계; 및 제2 현재 메모리 시스템 카운터 값이 제1 메모리 시스템 카운터 값과 동일하다고 결정하는 단계를 포함한다.
예 7에서, 예 1 내지 6 중 어느 하나 이상의 주제는 선택적으로 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계; 제1 현재 메모리 시스템 카운터 값이 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계; 및 메모리 시스템 카운터를 증가시키기 위한 인스트럭션을 메모리 시스템에 전송하는 단계를 포함한다.
예 8에서, 예 1 내지 7 중 어느 하나 이상의 주제는 선택적으로 명령 파일은 제1 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제1 시퀀스 및 제2 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제2 시퀀스를 포함하며, 미리 생성된 디지털 서명들의 제1 시퀀스는 제1 미리 생성된 디지털 서명을 포함한다.
예 9에서, 예 8의 주제는 선택적으로 미리 생성된 디지털 서명들의 제2 시퀀스도 제1 미리 생성된 디지털 서명을 포함한다.
예 10은 메모리를 프로그래밍하기 위한 시스템으로서, 프로그래밍 어플라이언스로서, 상기 프로그래밍 어플라이언스는, 제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신하는 단계로서, 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관되는, 상기 수신하는 단계; 및 제1 명령 및 제1 미리 생성된 디지털 서명을 포함하는 제1 명령 메시지를 메모리 시스템에 전송하는 단계를 포함하는 동작들 실행하도록 구성된다.
예 11에서, 예 10의 주제는 선택적으로 명령 파일은 제2 미리 생성된 디지털 서명을 더 포함하고, 제2 미리 생성된 디지털 서명은 메모리 시스템, 제2 명령 및 제1 메모리 시스템 카운터 값 이후의 제2 메모리 시스템 카운터 값과 연관되며, 상기 프로그래밍 어플라이언스는, 제1 명령 메시지를 메모리 시스템에 전송한 후, 제2 명령 및 제2 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 더 구성된다.
예 12에서, 예 11의 주제는 선택적으로 명령 파일은 제3 미리 생성된 디지털 서명을 더 포함하고, 제3 미리 생성된 디지털 서명은 제3 명령 및 제2 메모리 시스템 카운터 값 이후의 제3 메모리 시스템 카운터 값과 연관되며, 상기 프로그래밍 어플라이언스는, 제2 명령 메시지를 전송한 후, 명령 시퀀스 데이터가 제3 명령을 나타낸다고 결정하는 단계; 및 제3 명령 및 제3 미리 생성된 디지털 서명을 포함하는 제3 명령 메시지를 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 더 구성된다.
예 13에서, 예 10 내지 12 중 어느 하나 이상의 주제는 선택적으로 명령 파일은 제2 미리 생성된 디지털 서명을 포함하고, 제2 미리 생성된 디지털 서명은 제1 명령 및 제1 메모리 시스템 카운터 값과 다른 제2 메모리 시스템 카운터 값과 연관되며, 상기 프로그래밍 어플라이언스는, 메모리 시스템에 쿼리하여 현재 메모리 시스템 카운터 값을 수신하는 단계; 및 현재 메모리 시스템 카운터 값 및 제1 메모리 시스템 카운터 값에 적어도 부분적으로 기초하여 제1 미리 생성된 디지털 서명을 선택하는 단계를 포함하는 동작들을 실행하도록 더 구성된다.
예 14에서, 예 10 내지 13의 어느 하나 이상의 주제는 선택적으로 프로그래밍 어플라이언스는, 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계; 제1 현재 메모리 시스템 카운터 값이 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계; 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값보다 큰 제2 현재 메모리 시스템 카운터 값을 수신하는 단계; 및 제2 현재 메모리 시스템 카운터 값이 제1 메모리 시스템 카운터 값과 동일하다고 결정하는 단계를 포함하는 동작들을 실행하도록 더 구성된다.
예 15에서, 예 10 내지 14 중 어느 하나 이상의 주제는 선택적으로 프로그래밍 어플라이언스는, 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계; 제1 현재 메모리 시스템 카운터 값이 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계; 및 메모리 시스템 카운터를 증가시키기 위한 인스트럭션을 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 더 구성된다.
예 16에서, 예 10 내지 15 중 어느 하나 이상의 주제는 선택적으로 명령 파일은 제1 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제1 시퀀스 및 제2 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제2 시퀀스를 포함하며, 미리 생성된 디지털 서명들의 제1 시퀀스는 제1 미리 생성된 디지털 서명을 포함한다.
예 17에서, 예 16의 주제는 선택적으로 미리 생성된 디지털 서명들의 제2 시퀀스도 제1 미리 생성된 디지털 서명을 포함한다.
예 18에서, 예 10 내지 17 중 어느 하나 이상의 주제는 선택적으로 메모리 시스템을 포함하며, 상기 메모리 시스템은, 메모리 시스템에 의해, 현재 메모리 시스템 카운터 값 및 메모리 시스템 암호화 키를 사용하여 제1 미리 생성된 디지털 서명을 확인하는 단계; 및 메모리 시스템에 의해, 제1 미리 생성된 디지털 서명을 실행하는 단계를 포함하는 동작들을 수행하도록 프로그래밍된다.
예 19는 비일시적 컴퓨터 판독 가능 매체로서, 적어도 하나의 프로세서에 의해 실행 시, 적어도 하나의 프로세서가, 제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신하는 단계로서, 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관되는, 상기 수신하는 단계; 및 제1 명령 및 제1 미리 생성된 디지털 서명을 포함하는 제1 명령 메시지를 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 하는 인스트럭션들을 포함한다.
예 20에서, 예 19의 주제는 선택적으로 명령 파일은 제2 미리 생성된 디지털 서명을 포함하고, 제2 미리 생성된 디지털 서명은 메모리 시스템, 제2 명령 및 제1 메모리 시스템 카운터 값 이후의 제2 메모리 시스템 카운터 값과 연관되며, 상기 매체는 적어도 하나의 프로세서에 의해 실행 시, 적어도 하나의 프로세서가, 제1 명령 메시지를 메모리 시스템에 전송한 후, 제2 명령 및 제2 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 하는 인스트럭션들을 더 포함한다.
상기 설명은 제한하는 것이 아닌 예시적인 것으로 의도된다. 예를 들어, 상기 설명된 예들(또는 이들의 하나 이상의 측면들)은 서로 조합하여 사용될 수 있다. 다른 실시예들은 상기 설명을 검토 시 본 기술 분야의 통상의 숙련자에 의해서와 같이, 사용될 수 있다. 청구 범위의 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않을 것이라는 이해와 함께 제출된다. 또한, 상기 상세한 설명에서, 다양한 특징들은 본 개시를 간소화하기 위해 함께 그룹화될 수 있다. 이는 청구되지 않은 개시된 기능이 모든 청구 범위에 필수적임을 의도하는 것으로 해석되어서는 안된다. 오히려, 본 발명의 주제는 특정 개시된 실시예의 모든 특징들보다 적을 수 있다. 따라서, 아래의 청구범위는 각 청구 범위는 그 자체가 별도의 실시예로서 유효한 상태로 상세한 설명에 통합되며, 이러한 실시예들은 다양한 조합 또는 순열로 서로 조합될 수 있는 것으로 고려된다. 본 발명의 범위는 이러한 청구 범위가 부여되는 등가물들의 전체 범위와 함께, 첨부된 청구 범위를 참조하여 결정되어야 한다.
Claims (20)
- 메모리 시스템 프로그래밍을 위한 방법으로서,
프로그래밍 어플라이언스에 의해, 제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신하는 단계로서, 상기 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관되는, 상기 수신하는 단계; 및
상기 프로그래밍 어플라이언스에 의해 상기 메모리 시스템으로, 상기 제1 명령 및 상기 제1 미리 생성된 디지털 서명을 포함하는 제1 명령 메시지를 전송하는 단계를 포함하는, 방법. - 제1항에 있어서,
상기 메모리 시스템에 의해, 현재 메모리 시스템 카운터 값 및 메모리 시스템 암호화 키를 사용하여 상기 제1 미리 생성된 디지털 서명을 확인하는 단계; 및
상기 메모리 시스템에 의해, 상기 제1 미리 생성된 디지털 서명을 실행하는 단계를 더 포함하는, 방법. - 제1항에 있어서, 상기 명령 파일은 제2 미리 생성된 디지털 서명을 더 포함하고, 상기 제2 미리 생성된 디지털 서명은 상기 메모리 시스템, 제2 명령 및 상기 제1 메모리 시스템 카운터 값 이후의 제2 메모리 시스템 카운터 값과 연관되며, 상기 방법은,
상기 제1 명령 메시지를 상기 메모리 시스템에 전송한 후, 상기 제2 명령 및 상기 제2 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 더 포함하는, 방법. - 제3항에 있어서, 상기 명령 파일은 제3 미리 생성된 디지털 서명을 더 포함하고, 상기 제3 미리 생성된 디지털 서명은 제3 명령 및 상기 제2 메모리 시스템 카운터 값 이후의 제3 메모리 시스템 카운터 값과 연관되며, 상기 방법은,
상기 제2 명령 메시지를 전송한 후, 명령 시퀀스 데이터가 상기 제3 명령을 나타낸다고 결정하는 단계; 및
상기 제3 명령 및 상기 제3 미리 생성된 디지털 서명을 포함하는 제3 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 더 포함하는, 방법. - 제1항에 있어서, 상기 명령 파일은 제2 미리 생성된 디지털 서명을 더 포함하고, 상기 제2 미리 생성된 디지털 서명은 상기 제1 명령 및 상기 제1 메모리 시스템 카운터 값과 다른 제2 메모리 시스템 카운터 값과 연관되며,
상기 프로그래밍 어플라이언스에 의해, 상기 메모리 시스템에 쿼리하여 현재 메모리 시스템 카운터 값을 수신하는 단계; 및
상기 프로그래밍 어플라이언스에 의해, 상기 현재 메모리 시스템 카운터 값 및 상기 제1 메모리 시스템 카운터 값에 적어도 부분적으로 기초하여 상기 제1 미리 생성된 디지털 서명을 선택하는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계;
상기 제1 현재 메모리 시스템 카운터 값이 상기 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계;
상기 메모리 시스템에 쿼리하여 상기 제1 현재 메모리 시스템 카운터 값보다 큰 제2 현재 메모리 시스템 카운터 값을 수신하는 단계; 및
상기 제2 현재 메모리 시스템 카운터 값이 상기 제1 메모리 시스템 카운터 값과 동일하다고 결정하는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계;
상기 제1 현재 메모리 시스템 카운터 값이 상기 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계; 및
상기 메모리 시스템 카운터를 증가시키기 위한 인스트럭션을 상기 메모리 시스템에 전송하는 단계를 더 포함하는, 방법. - 제1항에 있어서, 상기 명령 파일은 제1 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제1 시퀀스 및 제2 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제2 시퀀스를 포함하며, 상기 미리 생성된 디지털 서명들의 제1 시퀀스는 상기 제1 미리 생성된 디지털 서명을 포함하는, 방법.
- 제8항에 이어서, 상기 미리 생성된 디지털 서명들의 제2 시퀀스도 상기 제1 미리 생성된 디지털 서명을 포함하는, 방법.
- 메모리를 프로그래밍하기 위한 시스템으로서,
프로그래밍 어플라이언스로서, 상기 프로그래밍 어플라이언스는,
제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신하는 단계로서, 상기 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관되는, 상기 수신하는 단계; 및
상기 제1 명령 및 상기 제1 미리 생성된 디지털 서명을 포함하는 제1 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 구성되는, 상기 프로그래밍 어플라이언스를 포함하는, 시스템. - 제10항에 있어서, 상기 명령 파일은 제2 미리 생성된 디지털 서명을 더 포함하고, 상기 제2 미리 생성된 디지털 서명은 상기 메모리 시스템, 제2 명령 및 상기 제1 메모리 시스템 카운터 값 이후의 제2 메모리 시스템 카운터 값과 연관되며, 상기 프로그래밍 어플라이언스는,
상기 제1 명령 메시지를 상기 메모리 시스템에 전송한 후, 상기 제2 명령 및 상기 제2 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 더 구성되는, 시스템. - 제11항에 있어서, 상기 명령 파일은 제3 미리 생성된 디지털 서명을 더 포함하고, 상기 제3 미리 생성된 디지털 서명은 제3 명령 및 상기 제2 메모리 시스템 카운터 값 이후의 제3 메모리 시스템 카운터 값과 연관되며, 상기 프로그래밍 어플라이언스는,
상기 제2 명령 메시지를 전송한 후, 명령 시퀀스 데이터가 상기 제3 명령을 나타낸다고 결정하는 단계; 및
상기 제3 명령 및 상기 제3 미리 생성된 디지털 서명을 포함하는 제3 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 더 구성되는, 시스템. - 제10항에 있어서, 상기 명령 파일은 제2 미리 생성된 디지털 서명을 포함하고, 상기 제2 미리 생성된 디지털 서명은 상기 제1 명령 및 상기 제1 메모리 시스템 카운터 값과 다른 제2 메모리 시스템 카운터 값과 연관되며, 상기 프로그래밍 어플라이언스는,
상기 메모리 시스템에 쿼리하여 현재 메모리 시스템 카운터 값을 수신하는 단계; 및
상기 현재 메모리 시스템 카운터 값 및 상기 제1 메모리 시스템 카운터 값에 적어도 부분적으로 기초하여 상기 제1 미리 생성된 디지털 서명을 선택하는 단계를 포함하는 동작들을 실행하도록 더 구성되는, 시스템. - 제10항에 있어서, 상기 프로그래밍 어플라이언스는,
상기 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계;
상기 제1 현재 메모리 시스템 카운터 값이 상기 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계;
상기 메모리 시스템에 쿼리하여 상기 제1 현재 메모리 시스템 카운터 값보다 큰 제2 현재 메모리 시스템 카운터 값을 수신하는 단계; 및
상기 제2 현재 메모리 시스템 카운터 값이 상기 제1 메모리 시스템 카운터 값과 동일하다고 결정하는 단계를 포함하는 동작들을 실행하도록 더 구성되는, 시스템. - 제10항에 있어서, 상기 프로그래밍 어플라이언스는,
상기 메모리 시스템에 쿼리하여 제1 현재 메모리 시스템 카운터 값을 수신하는 단계;
상기 제1 현재 메모리 시스템 카운터 값이 상기 제1 메모리 시스템 카운터 값보다 작다고 결정하는 단계; 및
상기 메모리 시스템 카운터를 증가시키기 위한 인스트럭션을 상기 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 더 구성되는, 시스템. - 제10항에 있어서, 상기 명령 파일은 제1 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제1 시퀀스 및 제2 명령 시퀀스에 대응하는 미리 생성된 디지털 서명들의 제2 시퀀스를 포함하며, 상기 미리 생성된 디지털 서명들의 제1 시퀀스는 상기 제1 미리 생성된 디지털 서명을 포함하는, 시스템.
- 제16항에 있어서, 상기 미리 생성된 디지털 서명들의 제2 시퀀스도 상기 제1 미리 생성된 디지털 서명을 포함하는, 시스템.
- 제10항에 있어서, 상기 메모리 시스템을 더 포함하며, 상기 메모리 시스템은,
상기 메모리 시스템에 의해, 현재 메모리 시스템 카운터 값 및 메모리 시스템 암호화 키를 사용하여 상기 제1 미리 생성된 디지털 서명을 확인하는 단계; 및
상기 메모리 시스템에 의해, 상기 제1 미리 생성된 디지털 서명을 실행하는 단계를 포함하는 동작들을 수행하도록 프로그래밍되는, 시스템. - 비일시적 컴퓨터 판독 가능 매체로서, 적어도 하나의 프로세서에 의해 실행 시, 적어도 하나의 프로세서가,
제1 미리 생성된 디지털 서명을 포함하는 명령 파일을 수신하는 단계로서, 상기 제1 미리 생성된 디지털 서명은 메모리 시스템, 제1 명령 및 제1 메모리 시스템 카운터 값과 연관되는, 상기 수신하는 단계; 및
상기 제1 명령 및 상기 제1 미리 생성된 디지털 서명을 포함하는 제1 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 하는 인스트럭션들을 포함하는, 비일시적 컴퓨터 판독 가능 매체. - 제19항에 있어서, 상기 명령 파일은 제2 미리 생성된 디지털 서명을 더 포함하고, 상기 제2 미리 생성된 디지털 서명은 상기 메모리 시스템, 제2 명령 및 상기 제1 메모리 시스템 카운터 값 이후의 제2 메모리 시스템 카운터 값과 연관되며, 상기 매체는 상기 적어도 하나의 프로세서에 의해 실행 시, 상기 적어도 하나의 프로세서가,
상기 제1 명령 메시지를 상기 메모리 시스템에 전송한 후, 상기 제2 명령 및 상기 제2 미리 생성된 디지털 서명을 포함하는 제2 명령 메시지를 상기 메모리 시스템에 전송하는 단계를 포함하는 동작들을 실행하도록 하는 인스트럭션들을 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/052,215 US10853273B2 (en) | 2018-08-01 | 2018-08-01 | Secure memory system programming |
US16/052,215 | 2018-08-01 | ||
PCT/US2019/044472 WO2020028550A1 (en) | 2018-08-01 | 2019-07-31 | Secure memory system programming |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210027499A true KR20210027499A (ko) | 2021-03-10 |
KR102516247B1 KR102516247B1 (ko) | 2023-03-30 |
Family
ID=69228743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217005597A KR102516247B1 (ko) | 2018-08-01 | 2019-07-31 | 보안 메모리 시스템 프로그래밍 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10853273B2 (ko) |
EP (1) | EP3830734A4 (ko) |
JP (1) | JP2021532491A (ko) |
KR (1) | KR102516247B1 (ko) |
CN (2) | CN118568789A (ko) |
WO (1) | WO2020028550A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230020240A (ko) | 2021-08-03 | 2023-02-10 | 시큐리티플랫폼 주식회사 | 플래시 메모리를 이용한 펌웨어 대용량 업데이트 개선 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램 |
KR20230020241A (ko) | 2021-08-03 | 2023-02-10 | 시큐리티플랫폼 주식회사 | 플래시 메모리를 이용한 펌웨어 업데이트 공유키 관리 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램 |
KR20230020239A (ko) | 2021-08-03 | 2023-02-10 | 시큐리티플랫폼 주식회사 | 플래시 메모리를 이용한 펌웨어 업데이트 보안 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021517409A (ja) * | 2018-03-23 | 2021-07-15 | マイクロン テクノロジー,インク. | ストレージデバイスの認証修正 |
US10853273B2 (en) | 2018-08-01 | 2020-12-01 | Micron Technology, Inc. | Secure memory system programming |
US11056192B2 (en) | 2018-12-21 | 2021-07-06 | Micron Technology, Inc. | Monotonic counters in memories |
US11880229B2 (en) * | 2020-12-21 | 2024-01-23 | Micron Technology, Inc. | Security capsule for enabling restricted features of a memory device |
US20220382916A1 (en) * | 2021-05-28 | 2022-12-01 | Micron Technology, Inc. | Vendor Independent Facilities for Applications to Access a Secure Memory Device |
US20230101397A1 (en) * | 2021-09-28 | 2023-03-30 | Dell Products L.P. | Identifying Binary Objects Using Signature of Input Items Used to Create Binary Object |
TWI835296B (zh) * | 2022-09-16 | 2024-03-11 | 旺宏電子股份有限公司 | 記憶體操作方法及應用其之記憶體與主控裝置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120192293A1 (en) * | 2011-01-21 | 2012-07-26 | Christopher Alan Adkins | Method and Apparatus for Configuring an Electronics Device |
US20130159727A1 (en) * | 2011-12-20 | 2013-06-20 | Nitin V. Sarangdhar | Secure replay protected storage |
US20140044265A1 (en) * | 2012-08-10 | 2014-02-13 | Cryptography Research, Inc. | Secure feature and key management in integrated circuits |
US20150033035A1 (en) * | 2013-07-29 | 2015-01-29 | Infineon Technologies Austria Ag | Apparatus and Method for Accessing an Encrypted Memory Portion |
US20180159692A1 (en) * | 2015-07-21 | 2018-06-07 | Micron Technology, Inc. | Solid state storage device with command and control access |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745285B2 (en) * | 2000-12-18 | 2004-06-01 | Sun Microsystems, Inc. | System and method for synchronizing mirrored and striped disk writes |
JP4720227B2 (ja) * | 2005-03-16 | 2011-07-13 | 株式会社日立製作所 | Icカードバックアップシステムおよびその方法 |
JP4912921B2 (ja) * | 2007-02-27 | 2012-04-11 | 富士通セミコンダクター株式会社 | セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法 |
US8213967B2 (en) * | 2007-12-31 | 2012-07-03 | GM Global Technology Operations LLC | Preventing replay-type attacks on a vehicle communications system |
JP2009199253A (ja) * | 2008-02-20 | 2009-09-03 | Canon Inc | 印刷システム、印刷方法、及び、印刷装置 |
US20100153732A1 (en) * | 2008-12-15 | 2010-06-17 | Stmicroelectronics Rousset Sas | cache-based method of hash-tree management for protecting data integrity |
US8225052B2 (en) * | 2009-06-03 | 2012-07-17 | Micron Technology, Inc. | Methods for controlling host memory access with memory devices and systems |
WO2014203031A1 (en) * | 2013-06-18 | 2014-12-24 | Freescale Semiconductor, Inc. | Device and method for executing a program, and method for storing a program |
WO2015067295A1 (en) * | 2013-11-05 | 2015-05-14 | Huawei Technologies Co., Ltd. | Method and arrangement for controlling requests to a shared electronic resource |
US9397835B1 (en) * | 2014-05-21 | 2016-07-19 | Amazon Technologies, Inc. | Web of trust management in a distributed system |
US9749319B2 (en) * | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
US9934412B2 (en) | 2015-06-23 | 2018-04-03 | Microsoft Technology Licensing, Llc | Implementing replay protected storage |
KR102576417B1 (ko) * | 2015-11-19 | 2023-09-08 | 로베르트 보쉬 게엠베하 | 네트워크화된 컴퓨터를 통한 임베디드 디바이스에 대한 보안 액세스 제어 |
US9977626B2 (en) * | 2016-06-30 | 2018-05-22 | Seagate Technology Llc | Implementing scattered atomic I/O writes |
US10237245B2 (en) * | 2016-07-15 | 2019-03-19 | International Business Machines Corporation | Restricting guest instances in a shared environment |
KR20180046405A (ko) * | 2016-10-27 | 2018-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10671482B2 (en) * | 2017-09-12 | 2020-06-02 | Cohesity, Inc. | Providing consistency in a distributed data store |
US10853273B2 (en) | 2018-08-01 | 2020-12-01 | Micron Technology, Inc. | Secure memory system programming |
-
2018
- 2018-08-01 US US16/052,215 patent/US10853273B2/en active Active
-
2019
- 2019-07-31 EP EP19844779.9A patent/EP3830734A4/en active Pending
- 2019-07-31 KR KR1020217005597A patent/KR102516247B1/ko active IP Right Grant
- 2019-07-31 JP JP2021505424A patent/JP2021532491A/ja not_active Ceased
- 2019-07-31 CN CN202410706611.1A patent/CN118568789A/zh active Pending
- 2019-07-31 WO PCT/US2019/044472 patent/WO2020028550A1/en unknown
- 2019-07-31 CN CN201980057978.2A patent/CN112654993B/zh active Active
-
2020
- 2020-11-30 US US17/107,215 patent/US11416420B2/en active Active
-
2022
- 2022-08-15 US US17/888,159 patent/US11816041B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120192293A1 (en) * | 2011-01-21 | 2012-07-26 | Christopher Alan Adkins | Method and Apparatus for Configuring an Electronics Device |
US20130159727A1 (en) * | 2011-12-20 | 2013-06-20 | Nitin V. Sarangdhar | Secure replay protected storage |
US20140044265A1 (en) * | 2012-08-10 | 2014-02-13 | Cryptography Research, Inc. | Secure feature and key management in integrated circuits |
US20150033035A1 (en) * | 2013-07-29 | 2015-01-29 | Infineon Technologies Austria Ag | Apparatus and Method for Accessing an Encrypted Memory Portion |
US20180159692A1 (en) * | 2015-07-21 | 2018-06-07 | Micron Technology, Inc. | Solid state storage device with command and control access |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230020240A (ko) | 2021-08-03 | 2023-02-10 | 시큐리티플랫폼 주식회사 | 플래시 메모리를 이용한 펌웨어 대용량 업데이트 개선 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램 |
KR20230020241A (ko) | 2021-08-03 | 2023-02-10 | 시큐리티플랫폼 주식회사 | 플래시 메모리를 이용한 펌웨어 업데이트 공유키 관리 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램 |
KR20230020239A (ko) | 2021-08-03 | 2023-02-10 | 시큐리티플랫폼 주식회사 | 플래시 메모리를 이용한 펌웨어 업데이트 보안 방법 및 이를 실행하기 위한 기록매체에 저장된 컴퓨터 프로그램 |
US11789719B2 (en) | 2021-08-03 | 2023-10-17 | Security Platform Inc. | Firmware massive update method using flash memory and computer program stored in recording media for executing the same |
Also Published As
Publication number | Publication date |
---|---|
US20220391329A1 (en) | 2022-12-08 |
EP3830734A1 (en) | 2021-06-09 |
WO2020028550A1 (en) | 2020-02-06 |
CN112654993B (zh) | 2024-06-21 |
JP2021532491A (ja) | 2021-11-25 |
CN118568789A (zh) | 2024-08-30 |
US10853273B2 (en) | 2020-12-01 |
KR102516247B1 (ko) | 2023-03-30 |
US20200042465A1 (en) | 2020-02-06 |
US20210081334A1 (en) | 2021-03-18 |
CN112654993A (zh) | 2021-04-13 |
EP3830734A4 (en) | 2022-04-06 |
US11416420B2 (en) | 2022-08-16 |
US11816041B2 (en) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102516247B1 (ko) | 보안 메모리 시스템 프로그래밍 | |
US11385838B2 (en) | Host accelerated operations in managed NAND devices | |
US11409651B2 (en) | Host accelerated operations in managed NAND devices | |
US11886339B2 (en) | Secure logical-to-physical caching | |
US11704254B2 (en) | Host side caching security for flash memory | |
US20240305449A1 (en) | Secure memory system programming for host device verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |