KR20220020636A - 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법 - Google Patents

메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20220020636A
KR20220020636A KR1020200101191A KR20200101191A KR20220020636A KR 20220020636 A KR20220020636 A KR 20220020636A KR 1020200101191 A KR1020200101191 A KR 1020200101191A KR 20200101191 A KR20200101191 A KR 20200101191A KR 20220020636 A KR20220020636 A KR 20220020636A
Authority
KR
South Korea
Prior art keywords
security key
key
memory
encryption
data
Prior art date
Application number
KR1020200101191A
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 삼성전자주식회사
Priority to KR1020200101191A priority Critical patent/KR20220020636A/ko
Priority to US17/224,573 priority patent/US11675504B2/en
Priority to EP21179883.0A priority patent/EP3955116B1/en
Priority to CN202110744295.3A priority patent/CN114077556A/zh
Publication of KR20220020636A publication Critical patent/KR20220020636A/ko

Links

Images

Classifications

    • 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/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/1416Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/062Securing 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 일 실시예에 따른 메모리 컨트롤러는 키 생성기, 암복호화 회로 및 프로세서를 포함한다. 상기 키 생성기는 호스트로부터의 프로그램 요청에 기초하여 제1 보안키 및 제2 보안키를 생성한다. 상기 암복호화 회로는 상기 제1 보안키에 기초하여 상기 프로그램 요청에 상응하는 기입 데이터를 암호화하여 기입 암호화 데이터를 생성하고, 상기 제2 보안키에 기초하여 상기 제1 보안키를 암호화하여 제1 암호화 보안키를 생성한다. 상기 프로세서는 상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하고, 상기 호스트로부터의 소거 요청에 기초하여 상기 복수의 비휘발성 메모리들에 프로그램 된 상기 기입 암호화 데이터를 소거하는 대신에 상기 제2 보안키가 프로그램되어 있는 상기 복수의 비휘발성 메모리들의 페이지를 더미 프로그램하도록 제어한다.

Description

메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법{MEMORY CONTROLLER, MEMORY DEVICE INCLUDING THE SAME AND METHOD OF OPERATING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법에 관한 것이다.
현대에 이르러 비휘발성 메모리들을 포함하는 메모리 장치가 널리 사용된다. 상기 메모리 장치의 예로서 SSD(Solid State Drive), NVMe(Non-Volatile Memory express), eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage) 등이 있다.
상기 메모리 장치에 저장되는 데이터의 보안성을 강화시키기 위해 상기 데이터에 대한 암호화가 수행될 수 있다. 상기 암호화 과정에서 보안키가 사용되며, 상기 암호화된 데이터와 함께 상기 보안키가 상기 메모리 장치에 저장될 수 있다. 일반적으로 상기 암호화된 데이터와 상기 보안키를 관리함에 있어서 상기 메모리 장치의 특성이 고려될 수 있다. 상기 메모리 장치는 안정성이 뛰어나고 프로그램 된 데이터에 대한 액세스 속도가 빠르고 전력 소모가 적으나, 프로그램 및 소거 횟수(Program-Erase(PE) cycle)는 제한된다. 상기 메모리 장치에 대한 독출 동작 및 프로그램 동작은 페이지 단위로 수행되나 소거 동작은 블록 단위로 수행된다.
본 발명의 일 목적은 효율적으로 암호화 된 데이터 및 보안키를 관리할 수 있는 메모리 컨트롤러를 제공하는 것이다.
본 발명의 일 목적은 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 메모리 컨트롤러는 키 생성기, 암복호화 회로 및 프로세서를 포함한다. 상기 키 생성기는 호스트로부터의 프로그램 요청에 기초하여 제1 보안키 및 제2 보안키를 생성한다. 상기 암복호화 회로는 상기 제1 보안키에 기초하여 상기 프로그램 요청에 상응하는 기입 데이터를 암호화하여 기입 암호화 데이터를 생성하고, 상기 제2 보안키에 기초하여 상기 제1 보안키를 암호화하여 제1 암호화 보안키를 생성한다. 상기 프로세서는 상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하고, 상기 호스트로부터의 소거 요청에 기초하여 상기 복수의 비휘발성 메모리들에 프로그램 된 상기 기입 암호화 데이터를 소거하는 대신에 상기 제2 보안키가 프로그램되어 있는 상기 복수의 비휘발성 메모리들의 페이지를 더미 프로그램하도록 제어한다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 메모리 장치는 복수의 비휘발성 메모리들 및 메모리 컨트롤러를 포함한다. 상기 복수의 비휘발성 메모리들은 복수의 메모리 블록들을 포함하고, 상기 메모리 컨트롤러는 상기 복수의 비휘발성 메모리들의 동작을 제어한다. 상기 메모리 컨트롤러는 호스트로부터의 프로그램 요청에 기초하여 제1 보안키 및 제2 보안키를 생성하는 키 생성기, 상기 제1 보안키에 기초하여 상기 프로그램 요청에 상응하는 기입 데이터를 암호화하여 기입 암호화 데이터를 생성하고, 상기 제2 보안키에 기초하여 상기 제1 보안키를 암호화하여 제1 암호화 보안키를 생성하는 암복호화 회로, 및 상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 상기 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하고, 상기 호스트로부터의 소거 요청에 기초하여 상기 복수의 비휘발성 메모리들에 프로그램 된 상기 기입 암호화 데이터를 소거하는 대신에 상기 제2 보안키가 프로그램되어 있는 상기 복수의 비휘발성 메모리들의 페이지를 더미 프로그램하도록 제어하는 프로세서를 포함한다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은, 호스트로부터 프로그램 요청을 수신하는 단계, 제1 보안키 및 제2 보안키를 생성하는 단계, 상기 제1 보안키에 기초하여 상기 프로그램 요청에 상응하는 기입 데이터를 암호화하여 기입 암호화 데이터를 생성하고, 상기 제2 보안키에 기초하여 상기 제1 보안키를 암호화하여 제1 암호화 보안키를 생성하는 단계, 상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하는 단계, 및 상기 호스트로부터의 소거 요청에 기초하여 상기 복수의 비휘발성 메모리들에 프로그램 된 상기 기입 암호화 데이터를 소거하는 대신에 상기 제2 보안키가 프로그램 되어 있는 상기 메모리 메모리의 페이지를 더미 프로그램하도록 제어하는 단계를 포함한다.
본 발명의 실시예들에 따른 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법은, 암호화되어 메모리 장치에 프로그램 된 데이터들에 대하여 호스트로부터 소거 명령을 수신한 경우 상기 데이터들을 암호화하기 위해 사용된 보안키들 중 일부만을 삭제하여 상기 데이터들을 무효화시킬 수 있다. 따라서 비휘발성 메모리로 구현된 메모리 장치에 있어서 제한된 프로그램 및 소거 횟수(Program-Erase(PE) cycle)에 따른 부담을 경감시키고, 상기 데이터들의 소거에 필요한 시간을 감소시킬 수 있다. 나아가 상기 데이터들을 암호화하기 위해 사용된 보안키들은 상기 데이터들과 별도로 저장되고 관리되어 효율적으로 변경 내지는 소거될 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 2는 도 1의 메모리 컨트롤러 및 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 3은 도 2의 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 4는 도 2의 비휘발성 메모리의 메모리 셀 어레이에 포함되는 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 5는 도 1 및 도 2에 도시된 비휘발성 메모리에 데이터를 기입하는 과정을 설명하기 위한 도면이다.
도 6은 제1 보안키에 기초하여 기입 데이터를 암호화하고 제2 보안키에 기초하여 제1 보안키를 암호화하는 과정을 설명하기 위한 도면이다.
도 7a 및 도 7b는 기입 암호화 데이터, 제1 암호화 보안키 및 제2 보안키가 도 1에 도시된 비휘발성 메모리에 저장되는 위치를 설명하기 위한 도면이다.
도 8은 도 1에 도시된 비휘발성 메모리로부터 데이터를 독출하는 과정을 설명하기 위한 도면이다.
도 9는 도 1에 도시된 비휘발성 메모리에 저장된 데이터를 소거하는 과정을 설명하기 위한 도면이다.
도 10a 및 도 10b는 도 7a 및 도 7b에 도시된 기입 암호화 데이터, 제1 암호화 보안키 및 제2 보안키를 소거하는 방법을 설명하기 위한 도면이다.
도 11은 기입 데이터를 암호화하는 과정에서 사용되는 보안키들을 관리하는 과정을 설명하기 위한 도면이다.
도 12는 도 1에 도시된 비휘발성 메모리에 데이터를 기입하는 과정을 설명하기 위한 도면이다.
도 13은 도 1의 메모리 컨트롤러가 도 1에 도시된 호스트의 요청들에 응답하여 생성하는 커맨드들을 설명하기 위한 도면이다.
도 14는 본 발명의 실시예들에 따른 메모리 장치가 적용된 데이터 센터를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템은 호스트(100) 및 메모리 장치(400)를 포함한다. 메모리 장치(400)는 메모리 컨트롤러(410) 및 비휘발성 메모리(430)를 포함한다. 상기 메모리 시스템은 프로그램 과정, 독출 과정 및 소거 과정을 수행한다. 일 실시예에서 상기 메모리 시스템은 키 스위칭(또는 키 변경) 과정을 수행할 수도 있다.
호스트(100)는 메모리 장치(400)로 요청들(REQ), 요청들에 상응하는 논리 주소들(LA) 및 데이터들(DATA)을 전송한다. 요청들(REQ)은 프로그램 요청, 독출 요청 및 소거 요청을 포함하나, 본 발명의 범위는 이에 한정되지 않는다. 일 실시예에서, 요청들(REQ)은 키 스위칭 요청을 더 포함할 수 있다.
상기 프로그램 요청은 상기 프로그램 과정에서 메모리 장치(400)에 데이터들(DATA)을 프로그램하도록 하는 요청이고, 상기 독출 요청은 상기 독출 과정에서 메모리 장치(400)에 저장되어 있는 데이터들(DATA)을 독출하도록 하는 요청이며, 상기 소거 요청은 상기 소거 과정에서 메모리 장치(400)에 저장되어 있는 데이터들(DATA)을 소거하도록 하는 요청이다. 일 실시예에서, 상기 키 스위칭 요청은 상기 프로그램 과정에서 메모리 장치(400)에 저장되는 데이터들(DATA)의 보안성을 강화시키기 위해 상기 데이터들(DATA)에 대한 암호화가 수행된 경우, 상기 암호화 과정에서 사용되는 보안키를 전부 또는 일부 변경하거나 소거하도록 하는 요청일 수 있다.
메모리 컨트롤러(410)는 호스트(100)로부터 요청들(REQ), 요청들에 상응하는 논리 주소들(LA)을 수신하고, 요청들(REQ) 및 논리 주소들(LA)에 각각 상응하는 커맨드들(CMD) 및 물리 주소들(PA)을 생성하여 비휘발성 메모리(430)로 제공한다. 메모리컨트롤러(410)는 상기 프로그램 과정, 상기 독출 과정, 상기 소거 과정 및 상기 키 스위칭 과정에서 호스트(100)로부터 데이터들(DATA)을 수신하여 비휘발성 메모리(430)로 제공하거나 또는 비휘발성 메모리(430)로부터 데이터들(DATA)을 수신하여 호스트(100)로 제공한다.
메모리 컨트롤러(410)는 프로세서(415), 키 생성기(417), 암복호화 회로(419), 호스트 인터페이스(411) 및 메모리 인터페이스(413)를 포함한다.
프로세서(415)는 메모리 컨트롤러(410)에 포함되는 구성요소들(411, 413, 415 및 417)을 전반적으로 제어한다. 일 실시예에서, 프로세서(415)는 호스트 인터페이스(411)를 통해 호스트(100)로부터 요청들(REQ) 및 요청들에 상응하는 논리 주소들(LA)을 수신할 수 있다. 프로세서(415)는 요청들(REQ) 및 논리 주소들(LA)에 각각 상응하는 커맨드들(CMD) 및 물리 주소들(PA)을 생성하고, 메모리 인터페이스(413)을 통해 비휘발성 메모리(430)로 커맨드들(CMD) 및 물리 주소들(PA)을 제공할 수 있다.
키 생성기(417)는 프로세서(415)의 제어 하에 보안키를 생성한다. 일 실시예에서, 상기 보안키는 복수 개일 수 있다. 예를 들어, 키 생성기(417)가 제1 보안키 및 제2 보안키를 생성하는 경우, 상기 제1 보안키는 호스트(100) 또는 비휘발성 메모리(430)로부터 제공된 데이터들(DATA)을 암복호화하기 위해 사용될 수 있고, 상기 제2 보안키는 상기 제1 보안키를 암호화하기 위해 사용될 수 있다.
암복호화 회로(419)는 프로세서(415)의 제어 하에 데이터들(DATA) 또는 보안키를 암호화하거나, 또는 암호화 된 데이터들(DATA) 또는 암호화된 보안키를 복호화한다.
비휘발성 메모리(430)는 메모리 컨트롤러(410)로부터 커맨드들(CMD), 물리 주소들(PA)을 수신하여 데이터들(DATA)을 저장하거나 또는 메모리 컨트롤러(410)로 데이터들(DATA)을 제공한다. 일 실시예에서, 비휘발성 메모리(430)는 SSD(Solid State Drive), NVMe(Non-Volatile Memory express), eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage) 등으로 구현될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 2는 도 1의 메모리 컨트롤러 및 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 2를 참조하면, 메모리 컨트롤러(410)는 호스트 인터페이스(411), 메모리 인터페이스(413), 프로세서(415), 캐시 메모리(416), 키 생성기(417) 및 버스(412)를 포함한다. 도 1에 도시된 구성요소들과 동일한 참조부호를 가지는 구성요소들에 대한 중복된 설명은 생략한다.
도 2에 도시된 메모리 컨트롤러(410)는 도 1에 도시된 메모리 컨트롤러(410)와 비교하여 캐시 메모리(416)를 더 포함한다. 캐시 메모리(416)는 어드레스 맵핑 테이블(address mapping table)(L2P MAPPING TABLE)(416-1)을 포함한다.
프로세서(415)는 호스트(100)로부터 요청들에 상응하는 논리 주소들(LA)을 수신하고, 논리 주소들(LA)에 상응하는 물리 주소들(PA)을 생성한다. 프로세서(415)는 논리 주소들(LA)과 물리 주소들(PA) 사이의 대응 관계를 나타내는 정보를 생성하여 어드레스 맵핑 테이블(416-1)에 저장한다. 나아가, 프로세서(415)는 물리 주소들(PA)에 상응하는 비휘발성 메모리(430)의 페이지에 저장된 데이터가 유효한지 여부를 나타내는 정보를 어드레스 맵핑 테이블(416-1)에 저장한다.
메모리 컨트롤러(410)는 복수의 채널들(CH1, ..., CHK)(CH[1:K])을 통하여 비휘발성 메모리(430)에 연결된다. 일 실시예에서, 비휘발성 메모리(430)는 제1 내지 제K 비휘발성 메모리(NVM1, NVM2, NVM3 및NVMK)(200, 220, 240 및 260)를 포함할 수 있고, 제1 내지 제K 비휘발성 메모리(200, 220, 240 및 260)는 상기 복수의 채널들(CH[1:K]) 각각에 대하여 연결될 수 있다.
도 3은 도 2의 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 3에서 도 2의 제1 내지 제K 비휘발성 메모리를 대표하여 제1 비휘발성 메모리(200)가 예시적으로 도시된다.
도 3을 참조하면, 비휘발성 메모리(200)는 메모리 셀 어레이(210), 로우 디코더(220), 페이지 버퍼 회로(230), 데이터 입출력 회로(240), 전압 발생기(250) 및 제어 회로(260)를 포함한다.
일 실시예에서, 메모리 셀 어레이(210)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 로우 디코더(220)와 연결될 수 있다. 또한, 메모리 셀 어레이(210)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다. 메모리 셀 어레이(210)는 복수의 메모리 블록들을 포함할 수 있고, 각 메모리 블록은 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 비휘발성 메모리 셀들을 포함할 수 있다.
일 실시예에서, 메모리 셀 어레이(210)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다. 예를 들어, 메모리 셀 어레이(210)는 스트링 선택 트랜지스터들, 접지 선택 트랜지스터들 및 메모리 셀들을 포함할 수 있다. 스트링 선택 트랜지스터들은 비트 라인들에 연결되고, 접지 선택 트랜지스터들은 공통 소스 라인에 연결될 수 있다. 동일한 열에 배열된 메모리 셀들은 비트 라인들 중 하나와 공통 소스 라인 사이에 직렬로 배치될 수 있으며, 동일한 행에 배열된 메모리 셀들은 워드 라인들 중 하나에 공통으로 연결될 수 있다. 즉, 스트링 선택 트랜지스터들과 접지 선택 트랜지스터들 사이에 메모리 셀들이 직렬로 연결될 수 있으며, 스트링 선택 라인과 접지 선택 라인 사이에는, 예를 들어, 16개, 32개 또는 64개의 복수의 워드 라인들이 배열될 수 있다. 스트링 선택 트랜지스터들은 스트링 선택 라인에 연결되어, 스트링 선택 라인으로부터 인가되는 전압의 레벨에 따라 제어될 수 있고, 접지 선택 트랜지스터들은 접지 선택 라인에 연결되어, 접지 선택 라인으로부터 인가되는 전압의 레벨에 따라 제어될 수 있다. 메모리 셀들은 워드 라인들에 인가되는 전압의 레벨에 따라 제어될 수 있다. 메모리 셀 어레이(210)를 포함하는 비휘발성 메모리 장치는 페이지(212) 단위로 라이트(또는 프로그램) 및 리드 동작을 수행하며, 메모리 블록(213) 단위로 소거 동작을 수행할 수 있다.
다른 실시예에서, 메모리 셀 어레이(210)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 예를 들어, 메모리 셀 어레이(210)는 수직 구조를 가지는 복수의 스트링들을 포함할 수 있다. 스트링은 복수 개로 형성되어 스트링 열을 형성할 수 있으며, 상기 스트링 열은 복수 개로 형성되어 스트링 어레이를 형성할 수 있다. 복수의 스트링들은 비트 라인들과 공통 소스 라인 사이에 직렬로 배치되는 접지 선택 트랜지스터들, 메모리 셀들 및 스트링 선택 트랜지스터들을 각각 포함할 수 있다. 접지 선택 트랜지스터들은 접지 선택 라인들에 각각 연결되고, 스트링 선택 트랜지스터들은 스트링 선택 라인들에 각각 연결될 수 있다. 동일한 층에 배열되는 메모리 셀들은 워드 라인들 중 하나에 공통으로 연결될 수 있다. 메모리 셀들은 워드 라인들에 인가되는 전압의 레벨에 따라 제어될 수 있다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
한편, 도 3에서 NAND 플래시 메모리 장치에 기초하여 도 2의 비휘발성 메모리에 포함되는 메모리 셀 어레이(210)를 설명하였으나, 상기 비휘발성 메모리는 PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 임의의 비휘발성 메모리일 수 있다.
제어 회로(260)는 도 1 및 도 2의 메모리 컨트롤러(410)로부터 커맨드들(CMD) 및 물리 주소들(PA)을 수신하고, 커맨드들(CMD) 및 물리 주소들(PA)에 기초하여 메모리 셀 어레이(210)에 대한 프로그램/독출/소거 동작을 수행하도록 로우 디코더(220), 페이지 버퍼 회로(230), 데이터 입출력 회로(240) 및 전압 발생기(250)를 제어한다. 일 실시예에서, 제어 회로(260)는 커맨드들(CMD)에 기초하여 전압 발생기(250)를 제어하기 위한 제어 신호들(CONs)을 발생하고, 물리 주소들(PA)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 발생할 수 있다. 제어 회로(260)는 로우 어드레스(R_ADDR)를 로우 디코더(220)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(240)에 제공할 수 있다. 로우 디코더(220)는 스트링 선택 라인, 복수의 워드 라인들 및 접지 선택 라인을 통해 메모리 셀 어레이(210)와 연결될 수 있다. 로우 디코더(220)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 워드 라인들(WLs) 중 적어도 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WLs) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
전압 발생기(250)는 전원 전압 및 제어 신호들(CONs)에 기초하여 비휘발성 메모리(200)의 동작에 필요한 워드 라인 전압들(VWLs)을 발생할 수 있다. 워드 라인 전압들(VWLs)은 로우 디코더(220)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다. 일 실시예에서, 소거 과정에서, 전압 발생기(250)는 메모리 블록의 웰에 소거 전압을 인가하고 메모리 블록의 모든 워드 라인들에 접지 전압을 인가할 수 있다. 소거 검증 동작 시에, 전압 발생기(250)는 하나의 메모리 블록의 모든 워드 라인들에 소거 검증 전압을 인가하거나 워드 라인 단위로 소거 검증 전압을 인가할 수 있다. 다른 예에서, 프로그램 과정에서, 전압 발생기(250)는 상기 선택 워드 라인에 프로그램 전압을 인가하고, 상기 비선택 워드 라인들에는 프로그램 패스 전압을 인가할 수 있다. 프로그램 검증 동작 시에, 전압 발생기(250)는 상기 선택 워드 라인에 프로그램 검증 전압을 인가하고, 상기 비선택 워드 라인들에는 검증 패스 전압을 인가할 수 있다. 또한, 독출 과정에서, 전압 발생기(250)는 상기 선택 워드 라인에 리드 전압을 인가하고, 상기 비선택 워드 라인들에는 리드 패스 전압을 인가할 수 있다.
페이지 버퍼 회로(230)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(210)와 연결될 수 있다. 페이지 버퍼 회로(230)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다. 페이지 버퍼 회로(230)는 메모리 셀 어레이(210)에 프로그램 될 데이터(DATA)를 저장하거나 혹은 메모리 셀 어레이(210)로부터 감지된 데이터(DATA)를 저장할 수 있다. 즉, 페이지 버퍼 회로(230)는 비휘발성 메모리(200)의 동작 모드에 따라 라이트 드라이버로서 또는 감지 증폭기로서 동작할 수 있다.
데이터 입출력 회로(240)는 데이터 라인(DL)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다. 데이터 입출력 회로(240)는 컬럼 어드레스(C_ADDR)에 응답하여, 라이트 데이터(DAT)를 페이지 버퍼 회로(230)를 거쳐서 메모리 셀 어레이(210)에 제공하거나 혹은 메모리 셀 어레이(210)로부터 페이지 버퍼 회로(230)를 거쳐서 출력되는 리드 데이터(DAT)를 외부(예를 들어, 도 1의 장치 컨트롤러(120))에 제공할 수 있다.
도 4는 도 2의 비휘발성 메모리의 메모리 셀 어레이에 포함되는 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 4에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 4를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11, NS12, NS13, NS21, NS22, NS23, NS31, NS32, NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, MC3, MC4, MC5, MC6, MC7, MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1~MC8)은 각각 상응하는 워드 라인(WL1, WL2, WL3, WL4, WL5, WL6, WL7, WL8)에 연결될 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
하나의 비트 라인에 공통으로 연결된 셀 스트링들은 하나의 열을 형성하고, 하나의 스트링 선택 라인에 연결되는 셀 스트링들은 하나의 행을 형성한다. 예를 들어, 제1 비트 라인(BL1)에 연결된 셀 스트링들(NS11, NS21, NS31)은 제1 열을 형성하고, 제1 스트링 선택 라인(SSL1)에 연결된 셀 스트링들(NS11, NS12, NS13)은 제1 행을 형성할 수 있다.
동일한 층의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1~GSL3) 및 스트링 선택 라인(SSL1~SSL3)은 각각 분리될 수 있다. 동일한 반도체 층의 메모리 셀들은 워드 라인을 공유하고, 동일한 행의 셀 스트링들은 스트링 선택 라인을 공유하며, 공통 소스 라인(CSL)은 모든 셀 스트링들에 공통으로 연결될 수 있다.
도 4의 예에서, 워드 라인들(WL1~WL8), 비트 라인들(BL1~BL3) 및 메모리 셀들(MC1~MC8)의 개수는 예시적인 것에 불과하다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
도 5는 도 1 및 도 2에 도시된 비휘발성 메모리에 데이터를 프로그램하는 과정을 설명하기 위한 도면이다.
도 5를 참조하면, 호스트(100)는 비휘발성 메모리(430)에 데이터(이하, '기입 데이터(PDATA)'라 함)를 프로그램하기 위해, 메모리 컨트롤러(410)로 프로그램 요청(PREQ), 프로그램 요청에 상응하는 프로그램 논리 주소(PLA) 및 기입 데이터(PDATA)를 제공한다(S1000).
메모리 컨트롤러(410)는 제1 보안키(1ST SEC_KEY)를 생성하고(S1100), 제2 보안키(2ND SEC_KEY)를 생성한다(S1200). 일 실시예에서, 제1 보안키(1ST SEC_KEY) 및 제2 보안키(2ND SEC_KEY)는 프로그램 요청(PREQ)에 응답하여 생성될 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 다른 실시예에서, 제1 보안키(1ST SEC_KEY) 및 제2 보안키(2ND SEC_KEY)는 S1000 단계 이전에 생성되어 도 2의 캐시 메모리(416) 또는 비휘발성 메모리(430)에 저장될 수 있다. 이 경우, 제1 보안키(1ST SEC_KEY) 및 제2 보안키(2ND SEC_KEY)는 프로그램 요청(PREQ)에 응답하여 도 2의 프로세서(415)에 로딩될 수 있다.
메모리 컨트롤러(410)는 제1 보안키(1ST SEC_KEY)에 기초하여 기입 데이터(PDATA)를 암호화하고(S1300), 제2 보안키(2ND SEC_KEY)에 기초하여 제1 보안키(SEC_KEY)를 암호화한다(S1400). 이하에서 보다 구체적으로 설명하기로 한다.
도 6은 제1 보안키에 기초하여 기입 데이터를 암호화하고 제2 보안키에 기초하여 제1 보안키를 암호화하는 과정을 설명하기 위한 도면이다.
도 6에서, 기입 데이터(PDATA), 기입 암호화 데이터(ENC_PDATA), 제1 보안키(1ST SEC_KEY), 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY)가 도시된다.
도 6을 참조하면, 메모리 컨트롤러(410)는 기입 데이터(PDATA)를 암호화하여 기입 암호화 데이터(ENC_PDATA)를 생성하고, 제1 보안키(1ST SEC_KEY)를 암호화하여 제1 암호화 보안키(1ST ENC_SEC_KEY)를 생성한다.
일 실시예에서, 제1 보안키(1ST SEC_KEY)는 기입 데이터(PDATA)를 암호화한다는 점에서 암호화 키(cryptographic key)로 지칭될 수 있고, 제2 보안키(2ND SEC_KEY)는 이미 기입 데이터(PDATA)를 암호화하기 위해 사용된 제1 보안키(1ST SEC_KEY)를 재차 암호화한다는 점에서 보안키(security key)로 지칭될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
일 실시예에서, 제1 보안키(1ST SEC_KEY)는 복수 개로 생성되고, 제2 보안키(2ND SEC_KEY)는 단수 개로 생성될 수 있다. 복수 개의 제1 보안키(1ST SEC_KEY)는 기입 데이터(PDATA)의 암호화 이외에 기입 데이터(PDATA)와 관련되어 부가적으로 생성되는 각종 데이터들을 암호화하기 위해 사용될 수 있다. 이 경우 제2 보안키(2ND SEC_KEY)는 복수 개의 제1 보안키(1ST SEC_KEY) 각각을 암호화하기 위해 사용될 수 있다.
일 실시예에서, 제1 보안키(1ST SEC_KEY) 및 제2 보안키(2ND SEC_KEY)가 기입 데이터(PDATA) 및 제1 보안키(1ST SEC_KEY)를 각각 암호화하는 과정에서 사용되는 암호화 알고리즘은 대칭키 알고리즘일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
일 실시예에서, 상기 대칭키 알고리즘은 제1 보안키(1ST SEC_KEY) 및 제2 보안키(2ND SEC_KEY)의 길이를 128 비트, 192 비트 및 256 비트 중 어느 하나로 하는 AES(Advanced Encryption Standard) 알고리즘일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
다시 도 5를 참조하면, 메모리 컨트롤러(410)는 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND_SEC_KEY)에 상응하는 어드레스 맵핑 테이블을 생성한다(S1500). 일 실시예에서, 상기 어드레스 맵핑 테이블은 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY) 각각에 대한 물리 주소들을 저장할 수 있다. 도 7a 및 도 7b를 참조하여 후술하는 바와 같이, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY)는 기입 암호화 데이터(ENC_PDATA)와 비휘발성 메모리(430) 상의 서로 다른 위치에 프로그램될 수 있다. 따라서 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY)가 프로그램되는 비휘발성 메모리(430)의 물리 주소들은 상기 어드레스 맵핑 테이블에서 별도로 관리될 수 있다.
메모리 컨트롤러(410)는 프로그램 요청(PREQ)에 기초하여 프로그램 커맨드(PCMD), 프로그램 논리 주소(PLA)에 기초하여 프로그램 물리 주소(PLA)를 생성한다.
메모리 컨트롤러(410)는 프로그램 커맨드(PCMD), 프로그램 논리 주소(PLA), 제2 보안키(2ND SEC_KEY), 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA)를 비휘발성 메모리(430)로 제공한다(S1600).
비휘발성 메모리(430)는 프로그램 논리 주소(PLA)에 기초하여 제2 보안키(2ND SEC_KEY), 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA)를 저장한다(S1700).
도 7a 및 도 7b는 기입 암호화 데이터, 제1 암호화 보안키 및 제2 보안키가 도 1에 도시된 비휘발성 메모리에 저장되는 위치를 설명하기 위한 도면이다.
도 7a에서, 하나의 비휘발성 메모리(NONVOLATILE MEMORY)의 서로 다른 위치의 프리 블록들(즉, 제1 블록(BLOCK 1000)과 제2 블록(BLOCK 2000))이 도시된다.
도 7a를 참조하면, 비휘발성 메모리(NONVOLATILE MEMORY)의 서로 다른 위치의 블록들 각각이 도 5를 참조하여 상술한 프로그램 과정에 따라 프로그램된다. 일 실시예에서, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY)는 제1 블록(BLOCK 1000)에 프로그램되고, 기입 암호화 데이터(ENC_PDATA)는 제2 블록(BLOCK 2000)에 프로그램 될 수 있다. 즉, 제1 암호화 보안키(1ST ENC_SEC_KEY)는 제1 블록(BLOCK 1000)의 제1 페이지(PPN: 0)에 프로그램되고, 제2 보안키(2ND SEC_KEY)는 제1 블록(BLOCK 1000)의 제2 페이지(PPN: 1)에 프로그램되며, 기입 암호화 데이터(ENC_PDATA)는 분할되어(즉, ENC_PDATA1, ENC_PDATA2, ENC_PDATA3 및 ENC_PDATA4) 제2 블록(BLOCK 2000)의 제3 내지 제6 페이지들(PPN: 4 내지 PPN: 7)에 프로그램 될 수 있다.
도 7b에서, 서로 다른 비휘발성 메모리들(NONVOLATILE MEMORY 1 및 2) 각각의 동일 위치의 프리 블록들(즉, 제3 블록(BLOCK 1000)들)이 도시된다.
도 7b를 참조하면, 서로 다른 비휘발성 메모리들(NONVOLATILE MEMORY 1 및 2) 각각의 동일 위치의 블록들 각각은 도 5를 참조하여 상술한 프로그램 과정에 따라 프로그램된다. 일 실시예에서, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY)는 비휘발성 메모리(NONVOLATILE MEMORY1)의 제3 블록(BLOCK 1000)에 프로그램되고, 기입 암호화 데이터(ENC_PDATA)는 비휘발성 메모리(NONVOLATILE MEMORY2)의 제3 블록(BLOCK 1000)에 프로그램 될 수 있다. 즉, 제1 암호화 보안키(1ST ENC_SEC_KEY)는 제3 블록(BLOCK)의 제1 페이지(PPN: 0)에 프로그램되고, 제2 보안키(2ND SEC_KEY)는 제3 블록(BLOCK 1000)의 제2 페이지(PPN: 1)에 프로그램되며, 기입 암호화 데이터(ENC_PDATA)는 분할되어(즉, ENC_PDATA1, ENC_PDATA2, ENC_PDATA3 및 ENC_PDATA4) 제3 블록(BLOCK 2000)의 제1 내지 제4 페이지들(PPN: 0 내지 PPN: 3)에 프로그램 될 수 있다.
즉, 도 5를 참조하여 상술한 프로그램 과정에서 보안키들(즉, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY))은 기입 암호화 데이터(ENC_PDATA)가 프로그램 된 비휘발성 메모리(430) 상의 위치로부터 일정한 거리를 두어 프로그램 될 수 있다. 후술하는 바와 같이 본 발명의 실시예들에 따른 메모리 컨트롤러는 기입 암호화 데이터(ENC_PDATA)와 별도로 보안키들(즉, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY))을 관리한다. 따라서 보안키들(즉, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY))만을 소거하거나 또는 변경하는 것이 가능하다. 일 실시예에서, 보안키들(즉, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY))과 기입 암호화 데이터(ENC_PDATA)는 비휘발성 메모리(430) 상에서 적어도 하나의 페이지 이상의 거리를 두어 프로그램 될 수 있다. 그러나 비휘발성 메모리(430)의 소거 과정이 블록 단위로 수행된다는 점에서 기입 암호화 데이터(ENC_PDATA)와 보안키들(즉, 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND SEC_KEY))은 비휘발성 메모리(430)는 도 7a 및 도 7b를 참조하여 상술한 바와 같이 적어도 하나의 블록 이상의 거리를 두어 프로그램되는 것이 바람직할 것이다.
도 8은 도 1에 도시된 비휘발성 메모리로부터 데이터를 독출하는 과정을 설명하기 위한 도면이다.
도 8을 참조하면, 호스트(100)는 메모리 컨트롤러(410)로 독출 요청(RREQ) 및 독출 요청에 상응하는 독출 논리 주소(RLA)를 제공한다(S2000).
메모리 컨트롤러(410)는 제1 암호화 보안키(1ST ENC_SEC_KEY), 제2 보안키(2ND SEC_KEY) 및 기입 암호화 데이터(ENC_DATA)를 독출한다(S2100). 일 실시예에서, S2100 단계를 수행하기 위해 도 5를 참조하여 상술한 상기 어드레스 맵핑 테이블이 이용될 수 있다.
메모리 컨트롤러(410)는 독출 요청(RREQ) 및 독출 논리 주소(RLA)에 기초하여 독출 커맨드(RCMD) 및 독출 물리 주소(RPA)를 생성하여 비휘발성 메모리(430)로 제공한다(S2200).
비휘발성 메모리(430)는 제1 암호화 보안키(1ST ENC_SEC_KEY), 제2 보안키(2ND SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA)를 메모리 컨트롤러(410)로 제공한다(S2300).
메모리 컨트롤러(410)는 제2 보안키(2ND SEC_KEY)에 기초하여 제1 암호화 보안키(1ST ENC_SEC_KEY)를 복호화한다(S2400). 일 실시예에서, S2400 단계의 수행의 결과로서 제1 보안키(1ST SEC_KEY)가 생성될 수 있다.
메모리 컨트롤러(410)는 제1 보안키(1ST SEC_KEY)에 기초하여 기입 암호화 데이터(ENC_PDATA)를 복호화한다(S2500). 일 실시예에서, S2500 단계의 수행의 결과로서 기입 데이터(PDATA)가 생성될 수 있다.
메모리 컨트롤러(410)는 기입 데이터(PDATA)를 호스트(100)로 제공한다(S2600).
도 9는 도 1에 도시된 비휘발성 메모리에 저장된 데이터를 소거하는 과정을 설명하기 위한 도면이다.
도 9를 참조하면, 호스트(100)는 메모리 컨트롤러(410)로 소거 요청(EREQ) 및 소거 요청에 상응하는 소거 논리 주소(ELA)를 제공한다(S3000).
메모리 컨트롤러(410)는 제2 보안키(2ND SEC_KEY)가 프로그램 되어 있는 비휘발성 메모리(430)의 페이지를 더미 프로그램한다(S3100).
일반적으로 비휘발성 메모리(430)의 이미 프로그램 된 위치에 다른 데이터를 다시 프로그램하기 위해 해당 위치에 대한 소거 과정이 반드시 선행되어야 한다. 즉, 비휘발성 메모리(430)에서 오버프로그래밍 내지는 오버라이팅은 금지된다. 상기 더미 프로그램이라 함은 상기 오버프로그래밍 내지는 상기 오버라이팅과 구별되는 개념으로서 의도적으로 이미 프로그램 된 비휘발성 메모리(430) 상의 위치에 더미 데이터(DUM_DATA)를 프로그램하여 해당 위치의 데이터를 무효화시키는 것을 말한다. 일반적으로 비휘발성 메모리(430)에서 프로그램 과정은 페이지 단위로 수행되므로 상기 더미 프로그램이 수행된 비휘발성 메모리(430) 상의 위치는 무효 페이지(invalid page)가 된다. 이하에서 보다 구체적으로 설명하기로 한다.
도 10a 및 도 10b는 도 7a 및 도 7b에 도시된 기입 암호화 데이터, 제1 암호화 보안키 및 제2 보안키를 소거하는 방법을 설명하기 위한 도면이다.
도 10a에서, 하나의 비휘발성 메모리(NONVOLATILE MEMORY)의 서로 다른 위치의 블록들(즉, 제1 블록(BLOCK 1000)과 제2 블록(BLOCK 2000))이 도시된다. 도 10a의 비휘발성 메모리는 도 7a의 비휘발성 메모리에 상응한다.
도 10a를 참조하면, 비휘발성 메모리(NONVOLATILE MEMORY)의 제2 보안키(2ND SEC_KEY)가 프로그램 된 상기 제1 블록(BLOCK 1000)의 상기 제2 페이지(PPN: 1)에 더미 데이터(DUM_DATA)가 프로그램 된다. 일 실시예에서, 상기 프로그램의 결과로서 상기 제2 페이지(PPN: 1)는 무효(invalid)화될 수 있고, 상기 제1 블록(BLOCK 1000)의 상기 제2 페이지(PPN: 1)에 프로그램 된 제2 보안키(2ND SEC_KEY)는 더 이상 유효하게 독출될 수 없다. 한편 제1 암호화 보안키(1ST ENC_SEC_KEY)는 제2 보안키(2ND SEC_KEY)에 기초하여 암호화되었고, 기입 암호화 데이터(ENC_PDATA)는 제1 보안키(1ST SEC_KEY)에 기초하여 암호화되었다. 따라서 제2 보안키(2ND SEC_KEY)가 더미 프로그램되어 유효하게 독출될 수 없는 이상 제1 보안키(1ST SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA) 또한 유효하게 독출될 수 없다. 즉, 제1 보안키(1ST SEC_KEY)가 프로그램 되어 있는 상기 제1 블록(BLOCK 1000)의 상기 제1 페이지(PPN: 0) 및 기입 암호화 데이터(ENC_PDATA)가 프로그램 되어 있는 제2 블록(BLOCK 2000)의 제3 내지 제6 페이지들(PPN: 4 내지 PPN: 7) 또한 무효화될 수 있다.
도 10b에서, 서로 다른 비휘발성 메모리들(NONVOLATILE MEMORY 1 및 2) 각각의 동일 위치의 블록들(즉, 제3 블록(BLOCK 1000)들)이 도시된다. 도 10b의 비휘발성 메모리는 도 7b의 비휘발성 메모리에 상응한다.
도 10b를 참조하면, 제2 보안키(2ND SEC_KEY)가 프로그램 된 비휘발성 메모리(NONVOLATILE MEMORY 1)의 상기 제3 블록(BLOCK 1000)의 상기 제2 페이지(PPN: 1)에 더미 데이터(DUM_DATA)가 프로그램 된다. 도 10a를 참조하여 상술한 바와 같이 상기 프로그램의 결과로서 제2 보안키(2ND SEC_KEY)는 더 이상 유효하게 독출될 수 없고, 제1 보안키(1ST SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA) 또한 유효하게 독출될 수 없게 된다.
다시 도 9를 참조하면, 메모리 컨트롤러(410)는 소거 요청(EREQ) 및 소거 논리 주소(ELA)에 기초하여 프로그램 커맨드(PCMD), 프로그램 물리 주소(PPA) 및 더미 데이터(DUM_DATA)를 비휘발성 메모리(430)로 제공한다(S3200).
메모리 컨트롤러(410)는 기입 암호화 데이터(ENC_PDATA)에 상응하는 어드레스 맵핑 테이블을 업데이트한다(S3300).
도 11은 기입 데이터를 암호화하는 과정에서 사용되는 보안키들을 관리하는 과정을 설명하기 위한 도면이다.
도 11을 참조하면, 호스트(100)는 메모리 컨트롤러(410)로 키 스위칭 요청(KSREQ) 및 키 스위칭 요청에 상응하는 키 스위칭 논리 주소(KSLA)를 제공한다(S4000). 일 실시예에서, 키 스위칭 요청(KSREQ)은 기입 암호화 데이터(ENC_PDATA)를 유지한 채로 기입 암호화 데이터(ENC_PDATA)에 상응하는 보안키들만을 변경하는 요청을 의미할 수 있다.
메모리 컨트롤러(410)는 제3 보안키(3RD SEC_KEY) 및 제4 보안키(4TH SEC_KEY)를 생성하고(S4050), 제1 암호화 보안키(1ST ENC_SEC_KEY), 제2 보안키(2ND SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA1)를 독출한다(S4100).
메모리 컨트롤러(410)는 키 스위칭 요청(KSREQ) 및 키 스위칭 논리 주소(KSLA)에 기초하여 독출 커맨드(RCMD) 및 독출 물리 주소(RPA)를 생성하여 비휘발성 메모리(430)로 제공한다(S4150).
비휘발성 메모리(430)는 제1 암호화 보안키(1ST ENC_SEC_KEY), 제2 보안키(2ND SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA1)를 메모리 컨트롤러(410)로 제공한다(S4200).
메모리 컨트롤러(410)는 제2 보안키(2ND SEC_KEY)에 기초하여 제1 암호화 보안키(1ST ENC_SEC_KEY)를 복호화하고(S4250), 제1 보안키(1ST SEC_KEY)에 기초하여 기입 암호화 데이터(ENC_PDATA1)를 복호화한다(S4300).
메모리 컨트롤러(410)는 제3 보안키(3RD SEC_KEY)에 기초하여 기입 데이터(PDATA1)를 암호화하고(S4350), 제4 보안키(4TH SEC_KEY)에 기초하여 제3 보안키(3RD SEC_KEY)를 암호화한다.
메모리 컨트롤러(410)는 제3 암호화 보안키(3RD ENC_SEC_KEY) 및 제4 보안키(4TH SEC_KEY)에 상응하는 어드레스 맵핑 테이블을 생성한다(S4450).
메모리 컨트롤러(410)는 키 스위칭 요청(KSREQ) 및 키 스위칭 논리 주소(KSLA)에 기초하여 프로그램 커맨드(PCMD), 프로그램 물리 주소(PPA), 제3 암호화 보안키(3RD ENC_SEC_KEY) 및 제4 보안키(4TH SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA2)를 비휘발성 메모리(430)로 제공한다(S4500).
비휘발성 메모리(430)는 기입 암호화 데이터(ENC_PDATA2), 제3 암호화 보안키(3RD ENC_SEC_KEY) 및 제4 보안키(4TH SEC_KEY)를 저장한다(S4550).
도 12는 도 1에 도시된 비휘발성 메모리에 데이터를 프로그램하는 과정을 설명하기 위한 도면이다.
도 12에서, 비휘발성 메모리(430)를 포함하는 메모리 장치는 자기 암호화 장치(Self Encrypting Device)(SED)일 수 있다.
도 12를 참조하면, 호스트(100)는 메모리 컨트롤러(410)로 프로그램 요청(PREQ), 프로그램 요청에 상응하는 프로그램 논리 주소(PLA), 기입 데이터(PDATA) 및 제1 보안키(1ST SEC_KEY)를 제공한다(S5000). 일 실시예에서, 상기 자기 암호화 장치의 특성으로서 호스트(100)가 제1 보안키(1ST SEC_KEY)를 스스로 생성하여 메모리 컨트롤러(410)로 제공할 수 있다.
메모리 컨트롤러(410)는 제2 보안키(2ND SEC_KEY)를 생성한다(S5100).
메모리 컨트롤러(410)는 제1 보안키(1ST SEC_KEY)의 프로그램 논리 주소(PLA)에 상응하는 프로그램 물리 주소(PPA)를 삭제한다(S5200). 일 실시예에서, 호스트(100)가 제1 보안키(1ST SEC_KEY)를 제공하는 상기 자기 암호화 장치의 특성을 제거하고 본 발명의 실시예들에 따른 동작들을 수행하기 위해 어드레스 맵핑 테이블에 존재할 수 있는 제1 보안키(1ST SEC_KEY)에 상응하는 프로그램 물리 주소(PPA)가 삭제될 수 있다.
메모리 컨트롤러(410)는 제1 보안키(1ST SEC_KEY)에 기초하여 기입 데이터(PDATA)를 암호화하고(S5300), 제2 보안키(2ND SEC_KEY)에 기초하여 제1 보안키(SEC_KEY)를 암호화한다(S5400).
메모리 컨트로러(410)는 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 제2 보안키(2ND_SEC_KEY)에 상응하는 어드레스 맵핑 테이블을 생성한다(S5500).
메모리 컨트롤러(410)는 프로그램 요청(PREQ) 및 프로그램 논리 주소(PLA)에 기초하여 프로그램 커맨드(PCMD) 및 프로그램 물리 주소(PLA)를 생성한다.
메모리 컨트롤러(410)는 프로그램 커맨드(PCMD), 프로그램 논리 주소(PLA), 제2 보안키(2ND SEC_KEY), 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA)를 비휘발성 메모리(430)로 제공한다(S5600).
비휘발성 메모리(430)는 프로그램 논리 주소(PLA)에 기초하여 제2 보안키(2ND SEC_KEY), 제1 암호화 보안키(1ST ENC_SEC_KEY) 및 기입 암호화 데이터(ENC_PDATA)를 저장한다(S5700).
도 13은 도 1의 메모리 컨트롤러가 도 1에 도시된 호스트의 요청들에 응답하여 생성하는 커맨드들을 설명하기 위한 도면이다.
도 13에서, 호스트(100)가 제공하는 요청들(PREQ, RREQ, EREQ 및 KSREQ) 및 메모리 컨트롤러(410)가 제공하는 커맨드들(PCMD 및 RCMD)이 도시된다. 요청들(PREQ, RREQ, EREQ 및 KSREQ) 및 커맨드들(PCMD 및 RCMD)은 도 5, 도 8, 도 9, 도 11 및 도 12를 참조하여 상술한 기입 과정, 독출 과정, 소거 과정 및 보안키 관리 과정 등에서 호스트(100)가 제공하는 요청들 및 메모리 컨트롤러(410)가 제공하는 커맨드들이다.
도 13을 참조하면, 호스트(100)로부터의 독출 요청(PREQ)에 응답하여 메모리 컨트롤러(410)는 독출 커맨드(RCMD)를 생성하여 비휘발성 메모리들로 제공한다. 호스트(100)로부터의 프로그램 요청(PREQ) 또는 소거 요청(EREQ)에 응답하여 메모리 컨트롤러(410)는 프로그램 커맨드(PCMD)를 생성하여 비휘발성 메모리들로 제공한다. 호스트(100)로부터의 키 스위칭 요청(KSREQ)에 응답하여 메모리 컨트롤러(410)는 독출 커맨드(RCMD) 및 프로그램 커맨드(PCMD)를 생성하여 비휘발성 메모리들로 제공한다.
즉, 본 발명의 실시예들에 따른 메모리 컨트롤러는 호스트(100)가 소거 요청(EREQ)을 제공하는 경우 소거 커맨드 대신에 프로그램 커맨드(PCMD)를 생성한다.
도 14는 본 발명의 실시예들에 따른 메모리 장치가 적용된 데이터 센터를 나타내는 블록도이다.
도 18을 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)을 포함할 수 있다. 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(3100) 또는 스토리지 서버(3200)는프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fiber Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200~3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)과 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예에서, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(3100) 및 스토리지 서버(3200)를중심으로 설명하기로 한다. 어플리케이션 서버(3100)에 대한 설명은 다른 어플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
어플리케이션 서버(3100)는사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200~3200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200~3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 어플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버(3200~3200m)에 포함된 메모리(3220~3220m) 또는 스토리지 장치(3250~3250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200~3200m)의 스토리지 장치로(3250~3250m)부터 스토리지 서버들(3200~3200m)의 메모리들(3220~3220m)을 거쳐서, 또는 바로 어플리케이션 서버들(3100~3100n)의 메모리(3120~3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)과 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다. 이와 유사하게, 어플리케이션 서버(3100)는 스위치(3130) 및 NIC(3140)을 더 포함할 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(3200~3200m) 또는 어플리케이션 서버(3100~3100n)에서 프로세서는 스토리지 장치(3150~3150n, 3250~3250m) 또는 메모리(3120~3120n, 3220~3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 독출할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150~3150m, 3250~3250m)는 프로세서로부터 수신된 독출 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252~3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252~3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 어플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 커넥터(CN)(3255)를 포함하여 용량 확장이 용이한 모듈형 스토리지 장치의 형태로 구현될 수 있다.
스토리지 장치(3150~3150m, 3250~3250m)는 도 1 내지 13을 참조하여 상술한 본 발명의 실시예들에 따른 메모리 컨트롤러를 포함하는 메모리 장치에 기초하여 구현될 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법은, 암호화되어 메모리 장치에 프로그램 된 데이터들에 대하여 호스트로부터 소거 명령을 수신한 경우 상기 데이터들을 암호화하기 위해 사용된 보안키들 중 일부만을 삭제하여 상기 데이터들을 무효화시킬 수 있다. 따라서 비휘발성 메모리로 구현된 메모리 장치에 있어서 제한된 프로그램 및 소거 횟수(Program-Erase(PE) cycle)에 따른 부담을 경감시키고, 상기 데이터들의 소거에 필요한 시간을 감소시킬 수 있다. 나아가 상기 데이터들을 암호화하기 위해 사용된 보안키들은 상기 데이터들과 별도로 저장되고 관리되어 효율적으로 변경 내지는 소거될 수 있다.
본 발명의 실시예들은 비휘발성 메모리 장치를 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 호스트로부터의 프로그램 요청에 기초하여 제1 보안키 및 제2 보안키를 생성하는 키 생성기;
    상기 제1 보안키에 기초하여 상기 프로그램 요청에 상응하는 기입 데이터를 암호화하여 기입 암호화 데이터를 생성하고, 상기 제2 보안키에 기초하여 상기 제1 보안키를 암호화하여 제1 암호화 보안키를 생성하는 암복호화 회로; 및
    상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하고, 상기 호스트로부터의 소거 요청에 기초하여 상기 복수의 비휘발성 메모리들에 프로그램 된 상기 기입 암호화 데이터를 소거하는 대신에 상기 제2 보안키가 프로그램되어 있는 상기 복수의 비휘발성 메모리들의 페이지를 더미 프로그램하도록 제어하는 프로세서를 포함하는 메모리 컨트롤러.
  2. 제1 항에 있어서, 상기 프로세서는
    상기 호스트로부터의 독출 요청에 응답하여 상기 복수의 메모리 장치들로 독출 커맨드를 제공하고, 상기 호스트로부터의 상기 프로그램 요청 또는 상기 소거 요청에 응답하여 상기 복수의 메모리 장치들로 프로그램 커맨드를 제공하는 것을 특징으로 하는 메모리 컨트롤러.
  3. 제1 항에 있어서, 상기 프로세서는
    상기 기입 암호화 데이터를 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 프로그램하도록 제어하고, 상기 제1 암호화 보안키 및 상기 제2 보안키를 상기 복수의 비휘발성 메모리들 중 제2 비휘발성 메모리에 프로그램하도록 제어하는 것을 특징으로 하는 메모리 컨트롤러.
  4. 제1 항에 있어서, 각 비휘발성 메모리는 복수의 메모리 블록들을 포함하고,
    상기 프로세서는 상기 기입 암호화 데이터를 상기 복수의 메모리 블록들 중 제1 메모리 블록에 프로그램하도록 제어하고, 상기 제1 암호화 보안키 및 상기 제2 보안키를 상기 복수의 메모리 블록들 중 제2 메모리 블록에 프로그램하도록 제어하는 것을 특징으로 하는 메모리 컨트롤러.
  5. 제1 항에 있어서, 상기 프로세서는
    상기 호스트로부터의 독출 요청에 기초하여 상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 독출하고,
    상기 암복호화 회로는 상기 제2 보안키에 기초하여 상기 제1 암호화 보안키를 복호화하여 상기 제1 보안키를 생성하고, 상기 기입 암호화 데이터를 상기 제1 보안키에 기초하여 복호화하여 상기 기입 데이터를 생성하는 것을 특징으로 하는 메모리 컨트롤러.
  6. 제1 항에 있어서, 상기 프로세서는
    상기 호스트로부터의 키 스위칭 요청에 기초하여 상기 복수의 비휘발성 메모리들로 독출 커맨드 및 프로그램 커맨드를 제공하는 것을 특징으로 하는 메모리 컨트롤러.
  7. 제6 항에 있어서,
    상기 키 생성기는 상기 호스트로부터의 키 스위칭 요청에 기초하여 제3 보안키 및 제4 보안키를 생성하고,
    상기 프로세서는 상기 복수의 비휘발성 메모리들로부터 상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 독출하고,
    상기 암복호화 회로는 상기 제2 보안키에 기초하여 상기 제1 암호화 보안키를 복호화하여 상기 제1 보안키를 생성하고, 상기 제1 보안키에 기초하여 상기 기입 암호화 데이터를 복호화하여 상기 기입 데이터를 생성하고, 상기 제3 보안키에 기초하여 상기 기입 데이터를 암호화하여 새로운 기입 암호화 데이터를 생성하고, 상기 제4 보안키에 기초하여 상기 제3 보안키를 암호화하여 제3 암호화 보안키를 생성하며,
    상기 프로세서는 상기 새로운 기입 암호화 데이터, 상기 제3 암호화 보안키 및 상기 제4 보안키를 상기 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하는 것을 특징으로 하는 메모리 컨트롤러.
  8. 제1 항에 있어서, 상기 프로세서는
    상기 호스트로부터의 프로그램 요청에 기초하여 상기 제1 암호화 보안키 및 상기 제2 보안키에 상응하는 어드레스 맵핑 테이블을 생성하는 것을 특징으로 하는 메모리 컨트롤러.
  9. 제1 항에 있어서, 상기 프로세서는
    상기 호스트로부터의 소거 요청에 기초하여 상기 기입 암호화 데이터에 상응하는 어드레스 맵핑 테이블을 업데이트하는 것을 특징으로 하는 메모리 컨트롤러.
  10. 호스트로부터 프로그램 요청을 수신하는 단계;
    제1 보안키 및 제2 보안키를 생성하는 단계;
    상기 제1 보안키에 기초하여 상기 프로그램 요청에 상응하는 기입 데이터를 암호화하여 기입 암호화 데이터를 생성하고, 상기 제2 보안키에 기초하여 상기 제1 보안키를 암호화하여 제1 암호화 보안키를 생성하는 단계
    상기 기입 암호화 데이터, 상기 제1 암호화 보안키 및 상기 제2 보안키를 복수의 비휘발성 메모리들 중 적어도 하나에 프로그램하도록 제어하는 단계; 및
    상기 호스트로부터의 소거 요청에 기초하여 상기 복수의 비휘발성 메모리들에 프로그램 된 상기 기입 암호화 데이터를 소거하는 대신에 상기 제2 보안키가 프로그램되어 있는 상기 메모리 메모리의 페이지를 더미 프로그램하도록 제어하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
KR1020200101191A 2020-08-12 2020-08-12 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법 KR20220020636A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200101191A KR20220020636A (ko) 2020-08-12 2020-08-12 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법
US17/224,573 US11675504B2 (en) 2020-08-12 2021-04-07 Memory controller, memory system including the same, and method of operating the same
EP21179883.0A EP3955116B1 (en) 2020-08-12 2021-06-16 Memory controller, and memory system including the same
CN202110744295.3A CN114077556A (zh) 2020-08-12 2021-07-01 存储器控制器、包括其的存储器***及操作其的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200101191A KR20220020636A (ko) 2020-08-12 2020-08-12 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220020636A true KR20220020636A (ko) 2022-02-21

Family

ID=76623856

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200101191A KR20220020636A (ko) 2020-08-12 2020-08-12 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법

Country Status (4)

Country Link
US (1) US11675504B2 (ko)
EP (1) EP3955116B1 (ko)
KR (1) KR20220020636A (ko)
CN (1) CN114077556A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230056920A (ko) * 2021-10-21 2023-04-28 삼성전자주식회사 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
CN116881934B (zh) * 2023-06-05 2024-02-23 珠海妙存科技有限公司 一种数据的加解密方法、***、装置及存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4206529B2 (ja) * 1998-09-17 2009-01-14 ソニー株式会社 コンテンツ管理方法及びコンテンツ記憶システム
US7734043B1 (en) 2005-01-25 2010-06-08 Altera Corporation Encryption key obfuscation and storage
EP1906412A1 (en) * 2006-09-29 2008-04-02 Koninklijke Philips Electronics N.V. A secure non-volatile memory device and a method of protecting data therein
KR100874872B1 (ko) 2007-06-20 2008-12-19 한양대학교 산학협력단 안전한 갱신을 지원하는 플래시 메모리 기반 보안 2차 저장장치
US20090052670A1 (en) * 2007-08-21 2009-02-26 Samsung Electronics Co., Ltd. Method and apparatus for storing digital content in storage device
JP2009064126A (ja) 2007-09-05 2009-03-26 Fuji Electric Retail Systems Co Ltd Icカードシステム、その端末装置、プログラム
JP5134894B2 (ja) * 2007-09-07 2013-01-30 株式会社日立製作所 ストレージ装置及び暗号鍵変更方法
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8175276B2 (en) * 2008-02-04 2012-05-08 Freescale Semiconductor, Inc. Encryption apparatus with diverse key retention schemes
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
KR101105384B1 (ko) 2010-03-04 2012-01-16 부산대학교 산학협력단 키 암호화 및 셔플링이 적용된 부채널 공격에 안전한 키 관리방법
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9612978B2 (en) * 2010-12-31 2017-04-04 International Business Machines Corporation Encrypted flash-based data storage system with confidentiality mode
JP5640845B2 (ja) 2011-03-18 2014-12-17 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
KR101231592B1 (ko) 2011-04-18 2013-02-08 고려대학교 산학협력단 안전한 삭제를 위한 플래시 메모리 제어 장치 및 방법
US9749132B1 (en) 2011-11-28 2017-08-29 Amazon Technologies, Inc. System and method for secure deletion of data
CN103390139A (zh) 2012-05-11 2013-11-13 慧荣科技股份有限公司 数据储存装置以及其数据保护方法
US9092370B2 (en) * 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US20170039397A1 (en) 2015-08-06 2017-02-09 Kabushiki Kaisha Toshiba Encryption/decryption apparatus, controller and encryption key protection method
KR102435026B1 (ko) 2015-12-15 2022-08-22 삼성전자주식회사 저장 장치의 동작 방법
KR101859606B1 (ko) 2016-05-31 2018-05-21 유넷시스템주식회사 키 관리 장치
US10985916B2 (en) 2017-10-31 2021-04-20 International Business Machines Corporation Obfuscation of keys on a storage medium to enable storage erasure
US10756888B2 (en) 2017-11-20 2020-08-25 Rubrik, Inc. Managing key encryption keys using a key wrapping tree
KR102420158B1 (ko) 2017-12-27 2022-07-13 삼성전자주식회사 파일 단위의 암호화 키에 기반하여 암호화를 수행하도록 구성되는 스토리지 장치, 스토리지 시스템, 및 그 동작 방법
JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
JP7048411B2 (ja) * 2018-05-22 2022-04-05 キオクシア株式会社 メモリシステムおよび制御方法

Also Published As

Publication number Publication date
CN114077556A (zh) 2022-02-22
US11675504B2 (en) 2023-06-13
US20220050608A1 (en) 2022-02-17
EP3955116B1 (en) 2024-01-10
EP3955116A1 (en) 2022-02-16

Similar Documents

Publication Publication Date Title
KR102466412B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
CN111090388B (zh) 使用主机存储器缓冲器的数据存储设备及其操作方法
KR102083271B1 (ko) 플래시 메모리의 물리적 특성을 이용하여 난수를 생성하는 플래시 메모리 시스템 및 그것의 난수 생성 방법
US11714578B2 (en) Method of operating storage device, storage device performing the same and method of operating storage system using the same
KR101869059B1 (ko) 저장 장치 및 그것의 메모리 컨트롤러
US20140032935A1 (en) Memory system and encryption method in memory system
KR20190099693A (ko) 메모리 시스템 및 그것의 동작 방법
KR20130128685A (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR102637478B1 (ko) 오픈 채널 솔리드 스테이트 드라이브, 이를 포함하는 비휘발성 메모리 시스템 및 오픈 채널 솔리드 스테이트 드라이브의 파워 로스 프로텍션 방법
EP3955116B1 (en) Memory controller, and memory system including the same
KR20200079852A (ko) 메모리 시스템 및 그것의 동작방법
KR20220055034A (ko) 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
US11681638B2 (en) Method of synchronizing time between host device and storage device and system performing the same
US11552801B2 (en) Method of operating memory system with replay attack countermeasure and memory system performing the same
US20230350578A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
KR102499614B1 (ko) 호스트 장치, 저장 장치, 이들을 포함하는 vuc 인증 시스템 및 vuc 인증 방법
US20230126685A1 (en) Storage device and electronic system
KR102472330B1 (ko) 컨텍스트 기반 프리페치를 수행하는 분산 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
US11556252B2 (en) Storage device and method of operating the same
US20200356669A1 (en) Storage system with separated rpmb sub-systems and method of operating the same
US20230153238A1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
EP4184332A1 (en) Storage controller and storage device including the same
EP4290355A1 (en) Method of writing data in storage device using write throttling and storage device performing the same
US12007884B2 (en) Method of allocating and protecting memory in computational storage device, computational storage device performing the same and method of operating storage system using the same
CN115904218A (zh) 包括主机和存储装置的存储***以及存储***的操作方法

Legal Events

Date Code Title Description
A201 Request for examination