KR101869059B1 - 저장 장치 및 그것의 메모리 컨트롤러 - Google Patents

저장 장치 및 그것의 메모리 컨트롤러 Download PDF

Info

Publication number
KR101869059B1
KR101869059B1 KR1020120020322A KR20120020322A KR101869059B1 KR 101869059 B1 KR101869059 B1 KR 101869059B1 KR 1020120020322 A KR1020120020322 A KR 1020120020322A KR 20120020322 A KR20120020322 A KR 20120020322A KR 101869059 B1 KR101869059 B1 KR 101869059B1
Authority
KR
South Korea
Prior art keywords
logical address
key
host
encryption
mapper
Prior art date
Application number
KR1020120020322A
Other languages
English (en)
Other versions
KR20130098641A (ko
Inventor
조영진
김현식
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020120020322A priority Critical patent/KR101869059B1/ko
Priority to US13/674,174 priority patent/US9049005B2/en
Publication of KR20130098641A publication Critical patent/KR20130098641A/ko
Priority to US14/700,936 priority patent/US9378396B2/en
Application granted granted Critical
Publication of KR101869059B1 publication Critical patent/KR101869059B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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

Abstract

본 발명은 저장 장치에 관한 것으로, 좀더 자세하게는 암호화 동작을 지원하는 저장 장치 및 그것의 메모리 컨트롤러에 관한 것이다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러는 호스트로부터 전송된 논리 주소에 따라 암호화 키를 제공하는 암호화 키 제공기 및 상기 암호화 키 제공기에서 제공하는 암호화 키를 이용하여, 상기 호스트로부터 전송된 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치로부터 전송된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진을 포함한다. 본 발명의 실시 예에 따른 메모리 컨트롤러 및 저장 장치는 마이크로 프로세서와 별도로 암호화 키 공급기를 구비한다. 따라서, 빠른 속도로 암호화 동작 및 복호화 동작을 수행하는 것이 가능하다.

Description

저장 장치 및 그것의 메모리 컨트롤러{STORAGE DEVICE AND MEMORY CONTROLLER THEREOF}
본 발명은 저장 장치에 관한 것으로, 좀더 자세하게는 암호화 동작을 지원하는 저장 장치 및 그것의 메모리 컨트롤러에 관한 것이다.
저장 장치로 주로 사용되는 반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
최근 들어 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면 MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지기 때문에, 하드디스크를 대신하여 플래시 메모리가 저장장치로 널리 사용되고 있다.
저장 장치에 대한 사용이 증가함에 따라, 저장 장치에 저장되어 있는 데이터의 보안(security)이 중요해지고 있다. 여기서, 데이터의 보안은 저장 장치에 저장되어 있는 데이터를 허락받지 않은 일반인이 독출하여 외부로 유출하지 못하도록 하는 것이다.
본 발명은 마이크로 프로세서의 부담을 경감함으로써, 빠른 속도로 암호화 동작 및 복호화 동작을 수행할 수 있는 저장 장치 및 그것의 메모리 컨트롤러를 제공하는 데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러는 호스트로부터 전송된 논리 주소에 따라 암호화 키를 제공하는 암호화 키 제공기; 및 상기 암호화 키 제공기에서 제공하는 암호화 키를 이용하여, 상기 호스트로부터 전송된 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치로부터 전송된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진을 포함한다.
실시 예로써, 상기 암호화 키 제공기는 논리 주소 범위들에 대응하는 키 인덱스들을 관리하는 키 맵퍼를 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소를 상기 논리 주소 범위들 중 선택된 논리 주소 범위와 비교한다.
실시 예로써, 상기 암호화 키 제공기는 상기 논리 주소 범위들에 대응하는 암호화 키들을 관리하는 키 테이블 모듈을 더 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 선택된 논리 주소 범위에 속하는 경우, 상기 선택된 논리 주소 범위에 대응하는 키 인덱스를 상기 키 테이블 모듈에 전송한다.
실시 예로써, 상기 키 테이블 모듈은 상기 암호화 키들 중 상기 키 인덱스에 대응하는 암호화 키를 상기 암호화 엔진에 제공한다.
실시 예로써, 상기 암호화 엔진 및 상기 암호화 키 제공기를 제어하는 마이크로 프로세서를 더 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 논리 주소 범위들에 속하지 않는 경우, 인터럽트 신호를 상기 마이크로 프로세서에 제공한다.
실시 예로써, 상기 마이크로 프로세서는 상기 인터럽트 신호에 응답하여, 상기 논리 주소를 포함하는 논리 주소 범위를 상기 키 맵퍼에 추가한다.
실시 예로써, 상기 키 맵퍼는 상기 논리 주소 범위들 중 서치 동작이 시작되는 논리 주소 범위의 위치 정보를 저장하는 제 1 레지스터; 및 상기 논리 주소 범위들 중 서치 동작이 수행 중인 논리 주소 범위의 위치 정보를 저장하는 제 2 레지스터를 포함한다.
실시 예로써, 상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하지 않는 경우에, 상기 키 맵퍼는 상기 논리 주소 범위들 중 제 2 논리 주소 범위와 상기 제 1 논리 주소를 비교하고, 상기 제 2 논리 주소 범위의 위치 정보를 상기 제 2 레지스터에 저장한다.
실시 예로써, 상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하고, 상기 제 1 논리 주소를 수신한 이 후에 상기 호스트로부터 제 2 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하는 경우, 상기 키 맵퍼는 상기 제 2 논리 주소를 상기 제 1 논리 주소 범위와 비교한다.
실시 예로써, 상기 키 맵퍼는 상기 논리 주소 범위의 논리 주소 하위 값을 상기 논리 주소와 비교하는 제 1 비교기; 상기 논리 주소 범위의 논리 주소 상위 값을 상기 논리 주소와 비교하는 제 2 비교기; 및 상기 제 1 비교기의 출력 값과 상기 제 2 비교기의 출력 값에 대한 논리 연산을 수행하는 논리 게이트를 포함한다.
본 발명의 실시 예에 따른 저장 장치는 불휘발성 메모리 장치; 및 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하며, 상기 메모리 컨트롤러는 상기 불휘발성 메모리 장치에 저장될 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치에 저장된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진; 및 호스트로부터 제공되는 논리 주소에 따라, 상기 암호화 엔진에 암호화 키를 제공하는 암호화 키 공급기를 포함한다.
실시 예로써, 상기 암호화 키 공급기는 복수의 키 인덱스 엔트리들을 포함하며, 상기 복수의 키 인덱스 엔트리들은 각각 논리 주소 범위 및 키 인덱스에 대한 정보를 관리하는 키 맵퍼; 및 복수의 암호화 키 엔트리들을 포함하며, 상기 복수의 암호화 키 인덱스들은 각각 상기 키 인덱스에 대응하는 암호화 키에 대한 정보를 관리하는 키 테이블 모듈을 포함한다.
실시 예로써, 상기 키 맵퍼는 호스트로부터 제공되는 논리 주소를 상기 복수의 키 인덱스 엔트리들 중 선택된 키 인덱스 엔트리의 논리 주소 범위와 비교하는 서치 모듈; 및 상기 복수의 키 인덱스 엔트리들 중 상기 서치 모듈에 의하여 서치 동작이 수행 중인 인덱스에 대한 위치 정보를 저장하는 현재 인덱스 레지스터를 포함한다.
실시 예로써, 상기 키 맵퍼는 상기 복수의 키 인덱스 엔트리들 중 서치 동작이 시작된 엔트리에 대한 위치 정보를 저장하는 서치 시작 레지스터를 더 포함한다.
실시 예로써, 상기 복수의 키 인덱스 엔트리들 중 제 1 키 인덱스 엔트리의 논리 주소 범위에 상기 제 1 논리 주소가 속하는 경우, 상기 서치 모듈은 상기 제 1 논리 주소가 제공된 이후에 제공되는 제 2 논리 주소를 상기 복수의 키 인덱스 엔트리들 중 상기 제 1 키 인덱스 엔트리의 논리 주소 범위와 우선적으로 비교한다.
본 발명의 실시 예에 따른 저장 장치 및 메모리 컨트롤러는 마이크로 프로세서와 별도로 암호화 키 공급기를 구비한다. 따라서, 빠른 속도로 암호화 동작 및 복호화 동작을 수행하는 것이 가능하다.
도 1은 본 발명의 실시 예에 따른 암호화 장치를 보여주는 블록도이다.
도 2는 본 발명의 다른 실시 예에 의한 암호화 장치를 보여주는 블록도이다.
도 3은 도 2의 암호화 키 공급기를 좀더 자세히 보여주는 도면이다.
도 4는 도 3의 키 맵퍼를 좀더 자세히 보여주는 도면이다.
도 5는 도 4의 서치 모듈을 구현하는 하나의 예를 보여주는 도면이다.
도 6은 도 4의 키 맵퍼의 동작을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 10은 도 9에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다.
도 12는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 13은 도 12에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일 또는 유사한 참조번호들이 동일 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위하여 불휘발성 메모리를 사용하는 저장 장치를 한 예로 사용할 것이다. 불휘발성 메모리로서 플래시 메모리가 사용될 수 있으며, MRAM, ReRAM, FRAM, PRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되어 사용될 수도 있다.
또한, 이하에서는, 본 발명의 특징 및 기능을 설명하기 위하여 호스트로부터 논리 블록 주소(Logical Block Address: LBA)가 전달되는 경우를 한 예로 사용할 것이다. 다만, 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 예를 들어, 호스트로부터 논리 페이지 주소(Logical Page Address), 논리 섹터 주소(Logical Sector Address) 등의 논리 주소가 전달될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상, 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명의 기술적 사상에 따른 실시 예들이 첨부된 도면을 참조하여 좀더 자세히 설명된다.
도 1은 본 발명의 실시 예에 따른 암호화 장치(100)를 보여주는 블록도이다. 도 1의 암호화 장치(100)는 외부의 불휘발성 메모리 장치(미도시)를 제어하는 메모리 컨트롤러로 사용되며, 불휘발성 메모리 장치에 저장되는 데이터에 보안성을 제공하기 위한 암호화 엔진(120)을 탑재한다.
도 1을 참조하면, 암호화 장치(100)는 호스트 컨트롤러(110), 암호화 엔진(120), 호스트 다이렉트 메모리 엑세스(130), 버퍼 메모리(140), 불휘발성 메모리 다이렉트 메모리 엑세스(150), 불휘발성 메모리 컨트롤러(160), 그리고 마이크로 프로세서(170)를 포함한다.
호스트 컨트롤러(110)는 호스트와 암호화 장치(100) 사이의 물리적 연결을 제공한다. 즉, 호스트 컨트롤러(110)는 호스트의 버스 포맷(Bus format)에 대응하여 암호화 장치(100)와의 인터페이싱을 제공한다. 호스트의 버스 포맷으로 USB(Universal Serial Bus), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA) 등이 사용될 수 있다.
또한, 호스트 컨트롤러(110)는 호스트가 암호화 장치(100) 및 암호화 장치(100)에 연결된 불휘발성 메모리 장치(미도시)를 하드 디스크 드라이버(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 지원할 수 있다. 예를 들어, 호스트 컨트롤러(110)는 삭제 연산을 숨기기 위한 플래시 변환 계층(Flash Translation Layer: FTL)과 같은 기능을 제공할 수 있다.
암호화 엔진(120)은 호스트로부터 전송된 유저 데이터를 불휘발성 메모리 장치에 안전하게 저장하기 위한 암호화 동작을 수행한다. 또한, 암호화 엔진(120)은 불휘발성 메모리 장치에 암호화되어 저장된 데이터를 호스트에 제공하기 위한 복호화 동작을 수행한다. 암호화 엔진(120)은, 예를 들어, DES(Data Encryption Standard), T-DES(Tripple-Data Encryption Standard), AES(Advanced Encryption Standard) 등에 부합되도록 구현될 수 있다.
호스트 다이렉트 메모리 엑세스(이하, 호스트 DMA)(130)는 호스트와 버퍼 메모리(140) 사이의 데이터 전송을 담당한다. 예를 들어, 호스트 DMA(130)는 암호화 엔진(120)에 의하여 암호화된 데이터를 버퍼 메모리(140)에 전송하거나, 버퍼 메모리(140)에 임시로 저장된 데이터를 암호화 엔진(120)에 전송한다.
버퍼 메모리(140)는 호스트 측으로부터 전송되는 암호화된 데이터 또는 불휘발성 메모리로부터 읽어낸 암호화된 데이터를 임시로 저장하는 버퍼의 역할을 수행한다. 버퍼 메모리(140)는 DRAM, SRAM 등의 휘발성 메모리로 구현될 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 버퍼 메모리(140)는 플래시 메모리, PRAM, ReRAM, FRAM 등의 불휘발성 메모리로도 구현될 수 있다.
불휘발성 메모리 다이렉트 메모리 엑세스(이하, 불휘발성 메모리 DMA)(150)는 버퍼 메모리(140)와 불휘발성 메모리 컨트롤러(160) 사이의 데이터 전송을 담당한다. 예를 들어, 불휘발성 메모리 DMA(150)는 불휘발성 메모리 장치로부터 읽어낸 암호화된 데이터를 버퍼 메모리(140)에 전송한다.
불휘발성 메모리 컨트롤러(160)는 암호화 장치(100)와 외부의 불휘발성 메모리 장치 사이의 인터페이싱을 담당한다. 예를 들어, 불휘발성 메모리 컨트롤러(160)는 불휘발성 메모리 장치와 복수의 채널들을 통하여 연결될 수 있으며, 쓰기 동작 시 호스트 측으로부터 전송된 암호화된 데이터를 불휘발성 메모리 장치로 스캐터링(scattering)한다. 또한, 불휘발성 메모리 컨트롤러(160)는 읽기 동작 시에 불휘발성 메모리 장치에 저장된 암호화된 데이터를 복수의 채널들을 통하여 전송받는다.
마이크로 프로세서(170)는 암호화 장치(100)의 전반적인 동작을 제어한다. 또한, 쓰기 동작 또는 읽기 동작 시에, 마이크로 프로세서(170)는 호스트로부터 논리 블록 주소(LBA)를 전송받고, 해당 논리 블록 주소에 대응하는 암호화 키를 암호화 엔진(120)에 제공한다. 암호화 엔진(120)은 전송받은 암호화 키를 이용하여, 데이터에 대한 암호화 동작 또는 암호화된 데이터에 대한 복호화 동작을 수행한다.
상술한 바와 같이, 도 1의 암호화 장치(100)는 마이크로 프로세서(170)에 의하여 논리 블록 주소에 대응하는 암호화 키를 서치(search)하는 동작이 수행된다. 이 경우, 마이크로 프로세서(170)의 제한된 성능으로 인하여, 읽기 또는 쓰기 동작의 퍼포먼스(performance) 하락이 야기될 수 있다.
또한, 암호화 장치(100)에 연결되는 불휘발성 메몰 장치는 물리적으로 또는 논리적으로 복수의 파티션(partition)으로 구분될 수 있다. 또한, 각 파티션 별로 서로 다른 암호화 알고리즘 및 암호화 키가 사용될 수 있다. 이 경우, 마이크로 프로세서(170)는 호스트로부터 전송된 논리 블록 주소에 해당하는 암호화 키를 각 파티션을 고려하여 서치하여야 한다. 따라서, 마이크로 프로세서(170)에 가중되는 부담으로 인하여, 읽기 또는 쓰기 동작의 퍼포먼스가 더욱 하락할 수 있다.
이하에서는, 마이크로 프로세서의 부담을 경감하고, 읽기 또는 쓰기 퍼포먼스를 향상시킬 수 있는 본 발명의 다른 실시 예가 설명된다.
도 2는 본 발명의 다른 실시 예에 의한 암호화 장치(200)를 보여주는 블록도이다. 도 2의 암호화 장치(200)는 도 1의 암호화 장치(100)와 유사하다. 따라서, 이하에서 유사한 구성요소는 유사한 참조번호를 사용하여 설명되며, 유사한 설명은 생략된다.
도 2의 암호화 장치(200)는 도 1의 암호화 장치(100)에 비하여 암호화 키 공급기(280)를 더 포함한다. 암호화 키 공급기(280)는 호스트 컨트롤러(210)로부터 논리 블록 주소(LBA)를 수신하고, 해당 논리 블록 주소에 대응하는 암호화 알고리즘, 암호화 키 등을 서치하여 암호화 엔진(220)에 제공한다. 암호화 엔진(220)은 전송된 암호화 알고리즘, 암호화 키 등을 이용하여, 암호화 동작 또는 복호화 동작을 수행한다.
도 2의 암호화 장치(200)는 암호화 키 등을 서치하는 암호화 키 공급기(280)를 별도로 구비함으로써, 마이크로 프로세서(270)의 부담을 경감시킬 수 있다. 따라서, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다. 더욱이, 불휘발성 메모리 장치가 복수의 파티션으로 구분되는 경우, 도 1의 암호화 장치(100)에 비하여 더욱 향상된 퍼포먼스가 보장될 수 있다.
도 3은 도 2의 암호화 키 공급기(280)를 좀더 자세히 보여주는 도면이다. 도 3을 참조하면, 암호화 키 공급기(280)는 키 맵퍼(281) 및 키 테이블 모듈(282)을 포함한다.
키 맵퍼(281)는 복수의 엔트리 구조를 갖는 테이블을 포함한다. 키 맵퍼(281)의 테이블은 논리 블록 주소 범위(LBA_RANGE)에 관한 정보 및 이에 대응하는 키 인덱스(Key Index)에 관한 정보를 관리한다. 키 맵퍼(281)는 호스트 컨트롤러(210, 도 1 참조)를 통하여 호스트로부터 요청된 논리 블록 주소(LBA)를 전송받고, 전송받은 논리 블록 주소(LBA)가 속하는 논리 블록 주소 범위(LBA_RANGE)가 있는 지를 판단한다.
전송받은 논리 블록 주소(LBA)가 속하는 논리 블록 범위(LBA_RANGE)가 존재하는 경우, 키 맵퍼(281)는 해당 논리 블록 범위(LBA_RANGE)에 대응하는 키 인덱스(Key Index)를 키 테이블 모듈(282)에 제공한다.
전송받은 논리 블록 주소(LBA)가 속하는 논리 블록 범위(LBA_RANGE)가 존재하지 않는 경우, 키 맵퍼(281)는 인터럽트 신호(Interrupt signal)을 발생하고, 이를 마이크로 프로세서(270, 도 2 참조)에 전달한다. 마이크로 프로세서(270)는 인터럽트 신호에 응답하여, 소정의 동작을 수행한다.
예를 들어, 호스트가 엑세스(access) 하려는 데이터(또는 파티션)의 패스워드(password)와 호스트로부터 입력된 패스워드의 불일치로 인하여, 인터럽트 신호가 발생할 수 있다. 이 경우, 마이크로 프로세서(270)는 호스트 컨트롤러(210)를 통하여 호스트에 어보트 신호(abort signal)을 전송함으로써, 해당 데이터에 대한 접근권한이 없음을 호스트에 통보할 수 있다.
다른 예로, 호스트가 엑세스 하려는 데이터에 대한 접근 권한이 있으나 키 맵퍼(281)에서 관리하지 않고 있기 때문에, 인터럽트 신호가 발생할 수 있다. 이 경우, 마이크로 프로세서(270)는 키 맵퍼(281)에 해당 논리 블록 주소에 대응하는 엔트리(entry)를 추가하는 동작을 수행할 수 있다.
키 테이블 모듈(282)은 복수의 엔트리 구조를 갖는 테이블을 포함한다. 키 테이블 모듈(282)의 테이블은, 예를 들어, 암호화 알고리즘(Algorithm)에 관한 정보, 암호화 키(Cipher Key)에 관한 정보, 트윅 키(Tweak Key)에 관한 정보 등의 암호화 정보를 관리할 수 있다. 다만, 이는 예시적인 것이며, 암호화 방법 및 설계자의 설계 방법에 따라 다양하게 변경될 수 있다.
키 테이블 모듈(282)은 키 맵퍼(281)로부터 키 인덱스(Key Index)를 전송받고, 해당 키 인덱스에 대응하는 암호화 정보를 암호화 엔진(220, 도 2 참조)에 제공한다. 암호화 엔진(220)은 키 테이블 모듈(282)로부터 전송된 암호화 정보를 이용하여, 암호화 동작 또는 복호화 동작을 수행한다.
키 테이블 모듈(282)의 엔트리 수는 키 맵퍼(281)의 엔트리 수와 동일할 수 있으며, 상이할 수도 있다. 예를 들어, 키 테이블 모듈(282)의 엔트리 수가 키 맵퍼(281)의 엔트리 수보다 작은 경우, 키 테이블 모듈(282)의 하나의 엔트리는 키 맵퍼(281)의 두 개 이상의 엔트리를 공유할 수 있다.
한편, 키 맵퍼(281)의 테이블 및 키 테이블 모듈(282)의 테이블은 버퍼 메모리(240)에 저장될 수 있으며, 별도의 메모리에 저장될 수도 있고, 버스(Bus) 상에 위치할 수도 있다. 또한, 키 맵퍼(281)의 테이블 및 키 테이블 모듈(282)의 테이블은 외부의 불휘발성 메모리에 저장될 수 있으며, 파워 업(power-up) 시에 버퍼 메모리(240) 등에 로딩(loading)되는 방식으로 구현될 수도 있다.
도 4는 도 3의 키 맵퍼(281)를 좀더 자세히 보여주는 도면이다. 도 4를 참조하면, 키 맵퍼(281)는 키 테이블(281_1), 서치 시작 레지스터(281_2), 현재 인덱스 레지스터(281_3), 그리고 서치 모듈(281_4)을 포함한다.
키 테이블(281_1)은 복수의 엔트리 구조를 가지며, 논리 블록 범위(LBA_RANGE)에 관한 정보 및 키 인덱스(Key Index)에 관한 정보를 관리한다. 구체적으로, 키 테이블(281_1)의 하나의 엔트리는 논리 블록 범위에 관한 정보로써 논리 블록 하위 값(LBA lower bound) 및 논리 블록 상위 값(LBA upper bound)에 관한 값들을 관리하며, 이에 대응하는 키 인덱스(key Index) 값을 관리한다. 도 4에 도시된 바와 같이, 서로 다른 엔트리가 동일한 키 인덱스를 가질 수도 있다.
서치 시작 레지스터(Search Start Register: SSR)(281_2)는 키 테이블(281_1)의 복수의 엔트리들 중 서치 동작이 시작되는 엔트리의 위치를 기록한다. 예를 들어, 논리 블록 범위가 <0, 1000>에 해당하는 엔트리부터 서치 동작이 시작되는 경우, 서치 시작 레지스터(281_2)는 해당 엔트리에 '0'의 값을 부여하고, 이를 저장한다.
현재 인덱스 레지스터(Current Index Register:CIR)(281_3)는 키 테이블(281_1)의 복수의 엔트리들 중 현재 서치 동작이 수행되고 있는 엔트리의 위치를 기록한다. 예를 들어, 논리 블록 범위가 <0, 1000>에 해당하는 엔트리에 대한 서치 동작이 최초로 수행 중인 경우, 현재 인덱스 레지스터(281_3)는 해당 엔트리에 서치 시작 레지스터(281_2)의 값과 동일한 값인 '0'을 부여하고, 이를 저장한다.
만약, 해당 엔트리가 호스트로부터 전송된 논리 블록 주소(LBA)를 포함하지 않는 경우, 그 다음 엔트리(이하, 제 2 엔트리)에 대한 서치 동작이 수행되며, 현재 인덱스 레지스터(281_3)는 제 2 엔트리에 '1'의 값을 부여하고, 이를 저장한다. 동일한 방식으로, 현재 인덱스 레지스터(281_3)는 각 엔트리에 대하여 서치 동작이 수행될 때마다 '1' 씩 증가하는 값을 부여하고, 이를 저장한다.
만약, 키 테이블(281_1)의 모든 엔트리들에 대한 서치 동작이 수행되어 더 이상의 엔트리가 남아있지 않은 경우, 현재 인덱스 레지스터(281_3)는 다시 최초로 서치 동작이 수행된 엔트리에 부여된 값과 동일한 값인 '0'을 다시 저장한다.
서치 모듈(281_4)은 호스트로부터 논리 블록 주소(LBA)를 전달받고, 키 테이블(281_1)의 선택된 엔트리에서 관리되는 논리 블록 하위 값(LBA lower bound), 논리 블록 상위 값(LBA upper bound) 및 키 인덱스(Key Index)를 전달받는다. 서치 모듈(281_4)은 호스트로부터 전달받은 논리 블록 주소(LBA)가 선택된 엔트리의 논리 블록 범위에 속하는 지를 판단하는 서치 동작을 수행한다.
호스트로부터 전달받은 논리 블록 주소(LBA)가 키 테이블(281_1)의 선택된 엔트리의 논리 블록 범위에 속하지 않는 경우, 서치 모듈(281_4)은 다음 엔트리에 대한 서치 동작을 수행한다.
만약, 호스트로부터 전달받은 논리 블록 주소(LBA)가 키 테이블(281_1)의 선택된 엔트리의 논리 블록 범위에 속한다면, 서치 모듈(281_4)은 해당 엔트리를 히트(Hit) 엔트리로 결정하고, 히트 엔트리의 키 인덱스(Key Index)를 키 테이블 모듈(282, 도 3 참조)에 전달한다.
만약, 호스트로부터 전달받은 논리 블록 주소(LBA)가 키 테이블(281_1)의 모든 엔트리에 속하지 않는다면(즉, 서치 시작 레지스터(281_2)에 저장된 값과 현재 인덱스 레지스터(281_3)에 저장된 값이 동일하다면), 서치 모듈(281_4)은 해당 논리 블록 주소(LBA)를 미스(Miss)로 결정하고, 인터럽트 신호(Interrupt Signal)를 마이크로 프로세서(270)에 전달한다.
한편, 호스트로부터 전송되는 요청 및 논리 블록 주소(LBA)는 시간 및 공간의 지역성(temporal and spartial locality)을 갖는다. 따라서, 현재 요청된 논리 블록 주소에 대응하는 엔트리는 이전에 히트(Hit)로 판단된 엔트리와 시간적 공간적 유사성을 가질 수 있다. 따라서, 현재 요청된 논리 블록 주소에 대응하는 엔트리에 대한 서치 동작을 수행하는 경우, 서치 시작 레지스터(281_2)는 서치가 시작되는 엔트리를 이전에 히트로 판단된 엔트리로 지정할 수 있다. 따라서, 서치에 소요되는 시간이 감소 될 수 있다.
또한, 이전에 히트로 판단된 엔트리를 이용하여 암호화 엔진(220, 도 2 참조)에서 암호화 또는 복호화하는 도중에, 현재의 명령 및 논리 블록 주소가 수신될 수 있다. 이 경우, 이전에 히트로 판단된 엔트리가 소실된다면, 암호화 또는 복호화 동작의 에러가 초래될 수 있다. 특히, 키 테이블(281_1)에서 관리하는 엔트리의 수가 소정 숫자로 제한되는 경우, 이전에 히트로 판단된 엔트리가 소실될 가능성이 있다. 이러한 위험을 방지하기 위하여, 암호화 키 공급기(280)는 히트로 판단된 엔트리에 관한 정보를 마이크로 프로세서(270)에 제공함으로써, 해당 엔트리가 키 테이블(281_1)에서 삭제되지 않도록 할 수 있다.
도 5는 도 4의 서치 모듈(281_4)을 구현하는 하나의 예를 보여주는 도면이다. 도 5를 참조하면, 서치 모듈(281_)은 두 개의 비교기 및 하나의 앤드 게이트를 사용하여, 히트(Hit) 또는 미스(Miss)를 결정하는 동작을 수행하도록 구현될 수 있다.
제 1 비교기(1)는 논리 블록 하위 값(LBA lower bound) 및 논리 블록 주소(LBA)의 값의 크기를 비교한다. 논리 블록 주소의 값이 논리 블록 하위 값보다 크거나 같으면, 제 1 비교기(1)는 '1'을 출력한다. 논리 블록 주소의 값이 논리 블록 하위 값보다 작으면, 제 1 비교기(1)는 '0'을 출력한다.
제 2 비교기(2)는 논리 블록 상위 값(LBA upper bound) 및 논리 블록 주소(LBA)의 값의 크기를 비교한다. 논리 블록 주소의 값이 논리 블록 상위 값보다 작으면, 제 2 비교기(2)는 '1'을 출력한다. 논리 블록 주소의 값이 논리 블록 상위 값보다 크거나 같으면, 제 2 비교기(2)는 '0'을 출력한다.
앤드 게이트(3)는 제 1 비교기(1) 및 제 2 비교기(2)의 출력 값들을 수신하고, 이에 대한 논리 연산을 수행한다. 앤드 게이트(3)의 논리 연산 결과가 '1'인 경우, 이는 히트(Hit)를 의미한다. 앤드 게이트(3)의 논리 연산 결과가 '0'인 경우, 이는 미스(Miss)를 의미한다.
도 6은 도 4의 키 맵퍼(281)의 동작을 보여주는 순서도이다.
S110 단계에서, 키 맵퍼(281)는 호스트 컨트롤러(210, 도 2 참조)를 통하여 논리 블록 주소(LBA)를 수신한다.
S120 단계에서, 키 맵퍼(281)의 현재 인덱스 레지스터(281_3)가 첫 번째 값으로 초기화된다. 예를 들어, 현재 인덱스 레지스터(281_3)에 저장된 값은 '0'의 값으로 초기화된다.
S130 단계에서, 서치 동작이 시작되는 키 테이블(281_1)의 엔트리의 위치가 서치 시작 레지스터(281_2)에 의하여 표시된다. 예를 들어, 현재 인덱스 레지스터(281_3)에 저장된 '0'의 값이 서치 시작 레지스터(281_2)에 백업(back up)되며, 현재 인덱스 레지스터(281_3)가 가리키는 엔트리가 서치 시작 레지스터(281_2)에 백업된다.
S140 단계에서, 서치 모듈(281_4)은 논리 블록 주소(LBA)를 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)와 비교하고, S150 단계에서 서치 모듈(281_4)은 논리 블록 주소(LBA)가 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)에 속하는 지를 판단한다.
논리 블록 주소(LBA)가 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)에 속하는 경우, 서치 모듈(281_4)은 선택된 엔트리의 키 인덱스(Key Index) 값을 키 테이블 모듈(282, 도 3 참조)에 전달한다(S160 단계).
논리 블록 주소(LBA)가 현재 선택된 엔트리의 논리 블록 범위(LBA_RANGE)에 속하지 않는 경우, S170 단계에서, 서치 모듈(281_4)은 키 테이블(281_1)의 인덱스들 중 다음 인덱스를 선택하고, 현재 인덱스 레지스터(281_3)에 저장된 값을 '1' 만큼 증가시킨다. 이 후, S180 단계에서, 서치 모듈(281_4)은 현재 인덱스 레지스터(281_3)에 저장된 값과 서치 시작 레지스터(281_2)에 저장된 값이 일치하는 지를 판단한다.
현재 인덱스 레지스터(281_3)에 저장된 값과 서치 시작 레지스터(281_2)에 저장된 값이 일치하는 경우, 서치 모듈(281_4)은 미스(Miss)로 판단하고, 인터럽트 신호(Interrupt Signal)를 마이크로 프로세서(270)에 제공한다(S190 단계).
현재 인덱스 레지스터(281_3)에 저장된 값과 서치 시작 레지스터(281_2)에 저장된 값이 일치하지 않는 경우, 서치 모듈(281_4)은 선택된 인덱스와 논리 블록 주소의 값을 비교하는 동작을 수행한다.
도 2 내지 도 6을 참조하여 설명된 바와 같이, 도 2의 암호화 장치(200)는 암호화 엔진(200)에 암호화 알고리즘, 암호화 키 등을 제공하는 암호화 키 공급기(280)를 포함한다. 도 2의 암호화 장치(200)는 암호화 키 등을 제공하는 암호화 키 공급기(280)를 별도로 구비함으로써, 마이크로 프로세서(270)의 부담을 경감시킬 수 있다. 따라서, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
도 2의 암호화 장치(200)는 다양한 분야에 적용 및 응용될 수 있다. 이하에서는 도 2의 암호화 장치(200)의 다양한 적용 예 및 응용 예들이 설명된다.
도 7은 본 발명의 실시 예에 따른 저장 장치(1000)를 보여주는 블록도이다. 도 7을 참조하면, 저장 장치(1000)는 메모리 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함한다. 메모리 컨트롤러(1100)는 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)의 읽기 동작, 쓰기 동작, 소거 동작 등을 제어한다. 또한, 메모리 컨트롤러(1100)는 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 포함한다. 메모리 컨트롤러(1100)는 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 이용하여 호스트로부터 전송된 데이터를 암호화하여 불휘발성 메모리 장치(1200)에 저장한다. 또한, 암호화 엔진(1110) 및 암호화 키 공급기(1120)를 이용하여 불휘발성 메모리 장치(1200)에 저장된 암호화된 데이터를 복호화하여 호스트에 제공한다. 즉, 도 7에 도시된 바와 같이, 도 2의 암호화 장치(200, 도 1 참조)는 불휘발성 메모리 장치(1200)를 제어하기 위한 메모리 컨트롤러(1100)로 사용될 수 있다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다. 메모리 카드 시스템(2000)은 호스트(2100)와 메모리 카드(2200)를 포함한다. 호스트(2100)는 호스트 컨트롤러(2110), 호스트 접속 유닛(2120), 그리고 디램(2130)을 포함한다.
호스트(2100)는 메모리 카드(2200)에 데이터를 쓰거나, 메모리 카드(2200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(2110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(2100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(2120)을 통해 메모리 카드(2200)로 전송한다. 디램(2130)은 호스트(2100)의 메인 메모리이다.
메모리 카드(2200)는 카드 접속 유닛(2210), 카드 컨트롤러(2220), 그리고 플래시 메모리(2230)를 포함한다. 카드 컨트롤러(2220)는 카드 접속 유닛(2210)을 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(2230)에 저장한다. 플래시 메모리(2230)는 호스트(2100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(2100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 8에 도시된 메모리 카드 시스템(2000)은 카드 컨트롤러(2220) 내에 암호화 엔진 및 암호화 엔진에 암호화 키 등을 공급하기 위한 암호화 키 공급기를 포함할 수 있다. 암호화 키 등을 제공하는 암호화 키 공급기를 별도로 구비함으로써, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 9를 참조하면, SSD 시스템(3000)은 호스트(3100)와 SSD(3200)를 포함한다. 호스트(3100)는 호스트 인터페이스(4111), 호스트 컨트롤러(3120), 그리고 디램(3130)을 포함한다.
호스트(3100)는 SSD(3200)에 데이터를 쓰거나, SSD(3200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(3120)는 커맨드, 어드레스, 제어 신호 등의 신호(SGL)를 호스트 인터페이스(4111)를 통해 SSD(3200)로 전송한다. 디램(3130)은 호스트(3100)의 메인 메모리이다.
SSD(3200)는 호스트 인터페이스(3211)를 통해 호스트(3100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 3221)를 통해 전원을 입력받는다. SSD(3200)는 복수의 불휘발성 메모리(3201~320n), SSD 컨트롤러(3210), 그리고 보조 전원 장치(3220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(3201~320n)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(3201~320n)는 SSD(3200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(3201~320n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(3210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(3210)는 호스트 인터페이스(3211)를 통해 호스트(3100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(3210)는 호스트(3100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(3210)의 내부 구성은 도 10를 참조하여 상세하게 설명된다.
보조 전원 장치(3220)는 전원 커넥터(3221)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3220)는 호스트(3100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(3220)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3220)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
도 10은 도 9에 도시된 SSD 컨트롤러(3210)의 구성을 예시적으로 보여주는 블록도이다. 도 10을 참조하면, SSD 컨트롤러(3210)는 NVM 인터페이스(3211), 호스트 인터페이스(3212), 암호화 엔진(3213), 제어 유닛(3214), 에스램(3215), DRAM(3216), 그리고 암호화 키 공급기(3217)를 포함한다.
NVM 인터페이스(3211)는 호스트(3100)의 메인 메모리로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(3211)는 불휘발성 메모리(3201~320n)로부터 읽은 데이터를 호스트 인터페이스(3212)를 경유하여 호스트(3100)로 전달한다.
호스트 인터페이스(3212)는 호스트(3100)의 프로토콜에 대응하여 SSD(3200)와의 인터페이싱을 제공한다. 호스트 인터페이스(3212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(3100)와 통신할 수 있다. 또한, 호스트 인터페이스(3212)는 호스트(3100)가 SSD(3200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
에스램(3215)은 불휘발성 메모리(3201~320n)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는 데 사용될 수 있다. 또한, 에스램(3215)은 호스트(3100)의 메인 메모리로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 에스램(3215)에 저장된 메타 데이터나 캐시 데이터는 보조 전원 장치(3220)를 이용하여 불휘발성 메모리(3201~320n)에 저장될 수 있다.
DRAM(3216)은 호스트로부터 전송된 데이터 또는 불휘발성 메모리(3201~320n)로부터 전송된 데이터를 임시로 저장한다. DRAM(3216)은 SSD 컨트롤러(3210) 내부에 위치한다. 다만, 이는 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, DRAM(3216)은 SSD 컨트롤러(3210)의 위부에 위치하도록 구현될 수도 있다. 또한, 도 9 및 도 10에서 SRAM(3215) 및 DRAM(3216)은 불휘발성 메모리로 대체될 수도 있다. 즉, 본 발명의 다른 실시 예에 따른 SSD 시스템(3000)은 SRAM(3215) 및 DRAM(3216)의 역할을 플래시 메모리, PRAM, RRAM, MRAM 등의 불휘발성 메모리가 수행하도록 구현될 수도 있다.
암호화 엔진(3213)은 데이터에 대한 암호화 동작 또는 복호화 동작을 수행한다. 암호화 엔진(3213)은, 예를 들어, DES(Data Encryption Standard), T-DES(Tripple-Data Encryption Standard), AES(Advanced Encryption Standard) 등에 부합되도록 구현될 수 있다.
암호화 키 공급기(3217)는 암호화 엔진(3213)에 암호화 키 등을 공급하기 위하여 구비된다. 암호화 키 등을 제공하는 암호화 키 공급기(3217)를 별도로 구비함으로써, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다. 여기에서, 전자 장치(4000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 11을 참조하면, 전자 장치(4000)는 메모리 시스템(4100), 전원 장치(4200), 보조 전원 장치(4250), 중앙처리장치(4300), 디램(4400), 그리고 사용자 인터페이스(4500)를 포함한다. 메모리 시스템(4100)은 플래시 메모리(4110) 및 메모리 컨트롤러(4120)를 포함한다. 메모리 시스템(4100)은 전자 장치(4000)에 내장될 수 있다.
앞에서 설명한 바와 같이, 본 발명에 따른 전자 장치(4000)는 암호화 엔진 및 암호화 엔진에 암호화 키 등을 공급하기 위한 암호화 키 공급기를 포함할 수 있다. 암호화 키 등을 제공하는 암호화 키 공급기를 별도로 구비함으로써, 읽기 또는 쓰기 동작의 퍼포먼스 하락이 방지될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 2차원 구조를 갖는 플래시 메모리뿐만 아니라, 3차원 구조를 갖는 플래시 메모리에도 적용될 수 있다.
도 12는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다. 도 12를 참조하면, 플래시 메모리(5000)는 3차원 셀 어레이(5110), 데이터 입출력 회로(5120), 어드레스 디코더(5130), 그리고 제어 로직(5140)을 포함한다.
3차원 셀 어레이(5110)는 복수의 메모리 블록(BLK1~BLKz)을 포함한다. 각각의 메모리 블록은 3차원 구조 (또는 수직 구조)를 가질 수 있다. 2차원 구조 (또는 수평 구조)를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수평 방향으로 형성된다. 그러나 3차원 구조를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수직 방향으로 형성된다. 각각의 메모리 블록은 플래시 메모리(3100)의 소거 단위를 이룬다.
데이터 입출력 회로(5120)는 복수의 비트 라인(BLs)을 통해 3차원 셀 어레이(5110)와 연결된다. 데이터 입출력 회로(5120)는 외부로부터 데이터(DATA)를 입력받거나, 3차원 셀 어레이(5110)로부터 읽은 데이터(DATA)를 외부로 출력한다. 어드레스 디코더(5130)는 복수의 워드 라인(WLs) 및 선택 라인(GSL, SSL)을 통해 3차원 셀 어레이(5110)와 연결된다. 어드레스 디코더(5130)는 어드레스(ADDR)를 입력받고 워드 라인을 선택한다.
제어 로직(5140)은 플래시 메모리(5000)의 프로그램, 읽기, 소거 등의 동작을 제어한다. 예를 들면, 제어 로직(5140)은 프로그램 동작 시에, 어드레스 디코더(5130)를 제어함으로 선택 워드 라인으로 프로그램 전압이 제공되도록 하고, 데이터 입출력 회로(5120)를 제어함으로 데이터가 프로그램되도록 할 수 있다.
도 13은 도 12에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다. 도 13을 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 13을 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 13에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 14를 참조하면, 비트 라인(BL1~BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11~NS33)이 연결되어 있다. 각각의 낸드 스트링(예를 들면, NS11)은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀(MC1~MC8), 그리고 접지 선택 트랜지스터(GST)를 포함한다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(String Selection Line; SSL1~SSL3)에 연결되어 있다. 복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결되어 있다. 그리고 접지 선택 트랜지스터(GST)는 접지 선택 라인(Ground Selection Line; GSL1~GSL3)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결되어 있다.
계속해서 도 14를 참조하면, 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 접지 선택 라인(GSL1~GSL3) 및 스트링 선택 라인(SSL1~SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀(이하, 페이지라 함)을 프로그램하는 경우에는, 제 1 워드 라인(WL1)과 제 1 선택 라인(SSL1, GSL1)이 선택된다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
110, 210: 호스트 컨트롤러
120, 220: 암호화 엔진
130, 230: 호스트 DMA
140, 240: 버퍼 메모리
150, 250: 불휘발성 메모리 DMA
160, 260: 불휘발성 메모리 컨트롤러
170, 270: 마이크로 프로세서
280: 암호화 키 제공기

Claims (10)

  1. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러에 있어서:
    호스트로부터 전송된 논리 주소에 따라 암호화 키를 제공하는 암호화 키 제공기;
    상기 암호화 키 제공기에서 제공하는 암호화 키를 이용하여, 상기 호스트로부터 전송된 데이터에 대한 암호화 동작 또는 상기 불휘발성 메모리 장치로부터 전송된 데이터에 대한 복호화 동작을 수행하는 암호화 엔진; 및
    상기 암호화 엔진 및 상기 암호화 키 제공기를 제어하는 마이크로 프로세서를 더 포함하되,
    상기 암호화 키 제공기는 논리 주소 범위들에 대응하는 키 인덱스들을 관리하는 키 맵퍼를 포함하며, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소를 상기 논리 주소 범위들 중 선택된 논리 주소 범위와 비교하고, 상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 논리 주소 범위들에 속하지 않는 경우, 인터럽트 신호를 상기 마이크로 프로세서에 제공하는 메모리 컨트롤러.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 암호화 키 제공기는 상기 논리 주소 범위들에 대응하는 암호화 키들을 관리하는 키 테이블 모듈을 더 포함하며,
    상기 키 맵퍼는 상기 호스트로부터 전송된 논리 주소가 상기 선택된 논리 주소 범위에 속하는 경우, 상기 선택된 논리 주소 범위에 대응하는 키 인덱스를 상기 키 테이블 모듈에 전송하는 메모리 컨트롤러.
  4. 제 3 항에 있어서,
    상기 키 테이블 모듈은 상기 암호화 키들 중 상기 키 인덱스에 대응하는 암호화 키를 상기 암호화 엔진에 제공하는 메모리 컨트롤러.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 마이크로 프로세서는 상기 인터럽트 신호에 응답하여, 상기 논리 주소를 포함하는 논리 주소 범위를 상기 키 맵퍼에 추가하는 메모리 컨트롤러.
  7. 제 1 항에 있어서,
    상기 키 맵퍼는 상기 논리 주소 범위들 중 서치 동작이 시작되는 논리 주소 범위의 위치 정보를 저장하는 제 1 레지스터; 및
    상기 논리 주소 범위들 중 서치 동작이 수행 중인 논리 주소 범위의 위치 정보를 저장하는 제 2 레지스터를 포함하는 메모리 컨트롤러.
  8. 제 7 항에 있어서,
    상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하지 않는 경우에, 상기 키 맵퍼는 상기 논리 주소 범위들 중 다음 논리 주소 범위와 상기 제 1 논리 주소를 비교하고, 상기 다음 논리 주소 범위의 위치 정보를 상기 제 2 레지스터에 저장하는 메모리 컨트롤러.
  9. 제 1 항에 있어서,
    상기 키 맵퍼는 상기 호스트로부터 제 1 논리 주소를 수신하고, 상기 제 1 논리 주소를 수신한 이 후에 상기 호스트로부터 제 2 논리 주소를 수신하며, 상기 제 1 논리 주소가 상기 논리 주소 범위들 중 제 1 논리 주소 범위에 속하는 경우, 상기 키 맵퍼는 상기 제 2 논리 주소를 상기 제 1 논리 주소 범위와 비교하는 메모리 컨트롤러.
  10. 제 1 항에 있어서,
    상기 키 맵퍼는 상기 논리 주소 범위의 논리 주소 하위 값을 상기 논리 주소와 비교하는 제 1 비교기;
    상기 논리 주소 범위의 논리 주소 상위 값을 상기 논리 주소와 비교하는 제 2 비교기; 및
    상기 제 1 비교기의 출력 값과 상기 제 2 비교기의 출력 값에 대한 논리 연산을 수행하는 논리 게이트를 포함하는 메모리 컨트롤러.
KR1020120020322A 2012-02-28 2012-02-28 저장 장치 및 그것의 메모리 컨트롤러 KR101869059B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120020322A KR101869059B1 (ko) 2012-02-28 2012-02-28 저장 장치 및 그것의 메모리 컨트롤러
US13/674,174 US9049005B2 (en) 2012-02-28 2012-11-12 Storage device and memory controller thereof
US14/700,936 US9378396B2 (en) 2012-02-28 2015-04-30 Storage device and memory controller thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120020322A KR101869059B1 (ko) 2012-02-28 2012-02-28 저장 장치 및 그것의 메모리 컨트롤러

Publications (2)

Publication Number Publication Date
KR20130098641A KR20130098641A (ko) 2013-09-05
KR101869059B1 true KR101869059B1 (ko) 2018-06-20

Family

ID=49002887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120020322A KR101869059B1 (ko) 2012-02-28 2012-02-28 저장 장치 및 그것의 메모리 컨트롤러

Country Status (2)

Country Link
US (2) US9049005B2 (ko)
KR (1) KR101869059B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101869059B1 (ko) * 2012-02-28 2018-06-20 삼성전자주식회사 저장 장치 및 그것의 메모리 컨트롤러
CN105706071A (zh) * 2013-09-26 2016-06-22 英特尔公司 持久性存储器的块存储孔
US9245140B2 (en) 2013-11-15 2016-01-26 Kabushiki Kaisha Toshiba Secure data encryption in shared storage using namespaces
US20160259754A1 (en) 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
CN107787568B (zh) * 2015-04-24 2021-09-07 7隧道公司 随机密码密码本密码学
US9811477B2 (en) * 2015-10-07 2017-11-07 Sandisk Technologies Llc Memory system and method for writing data to a block of an erased page
US11126565B2 (en) 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
US10229047B2 (en) 2016-08-06 2019-03-12 Wolley Inc. Apparatus and method of wear leveling for storage class memory using cache filtering
US10474831B1 (en) * 2016-11-28 2019-11-12 Amazon Technologies, Inc. Large network attached storage encryption
CN109558347B (zh) * 2017-09-27 2023-04-28 成都忆芯科技有限公司 PCIe控制器与使用PCIe控制器的密钥更新
US10715321B2 (en) 2017-12-22 2020-07-14 Micron Technology, Inc. Physical unclonable function using message authentication code
US10906506B2 (en) 2017-12-28 2021-02-02 Micron Technology, Inc. Security of user data stored in shared vehicles
CN110007849B (zh) * 2018-01-04 2021-03-12 澜起科技股份有限公司 存储器控制器以及用于对存储模块进行访问控制的方法
US10936212B2 (en) * 2018-01-04 2021-03-02 Montage Technology Co., Ltd. Memory controller, method for performing access control to memory module
US10983711B2 (en) * 2018-01-04 2021-04-20 Montage Technology Co., Ltd. Memory controller, method for performing access control to memory module
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates
US10778661B2 (en) 2018-04-27 2020-09-15 Micron Technology, Inc. Secure distribution of secret key using a monotonic counter
GB201807257D0 (en) * 2018-05-02 2018-06-13 Nordic Semiconductor Asa Cryptographic key distribution
US11301370B2 (en) * 2020-03-24 2022-04-12 Samsung Electronics Co., Ltd. Parallel overlap management for commands with overlapping ranges
CN113448891B (zh) * 2020-03-25 2023-07-21 澜起科技股份有限公司 存储器控制器以及用于监测对存储模块的访问的方法
US11704444B2 (en) * 2021-03-08 2023-07-18 Micron Technology, Inc. Managing encryption keys per logical block on a persistent memory device
CN116932422A (zh) * 2022-03-30 2023-10-24 华为技术有限公司 数据处理方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070136606A1 (en) * 2005-12-08 2007-06-14 Makio Mizuno Storage system with built-in encryption function

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5687237A (en) 1995-11-13 1997-11-11 Pitney Bowes Inc. Encryption key management system for an integrated circuit
US7966421B2 (en) * 2000-06-21 2011-06-21 SAtech Group, A.B. Limited Liability Company Method and apparatus for logically expanding the length of a search key
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US8165302B2 (en) * 2005-06-07 2012-04-24 Sony Corporation Key table and authorization table management
US20070061597A1 (en) 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
US7877603B2 (en) 2006-09-07 2011-01-25 International Business Machines Corporation Configuring a storage drive to communicate with encryption and key managers
JP4877962B2 (ja) * 2006-10-25 2012-02-15 株式会社日立製作所 暗号化機能を備えたストレージサブシステム
US20090196417A1 (en) 2008-02-01 2009-08-06 Seagate Technology Llc Secure disposal of storage data
US7522723B1 (en) 2008-05-29 2009-04-21 Cheman Shaik Password self encryption method and system and encryption by keys generated from personal secret information
US8266449B2 (en) 2009-03-31 2012-09-11 Lenovo (Singapore) Pte. Ltd. Security for storage devices
US20130173931A1 (en) * 2011-12-30 2013-07-04 Yonatan Tzafrir Host Device and Method for Partitioning Attributes in a Storage Device
KR101869059B1 (ko) * 2012-02-28 2018-06-20 삼성전자주식회사 저장 장치 및 그것의 메모리 컨트롤러

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070136606A1 (en) * 2005-12-08 2007-06-14 Makio Mizuno Storage system with built-in encryption function

Also Published As

Publication number Publication date
KR20130098641A (ko) 2013-09-05
US9049005B2 (en) 2015-06-02
US20130223628A1 (en) 2013-08-29
US20150235056A1 (en) 2015-08-20
US9378396B2 (en) 2016-06-28

Similar Documents

Publication Publication Date Title
KR101869059B1 (ko) 저장 장치 및 그것의 메모리 컨트롤러
US10509575B2 (en) Storage device and operating method of storage device
JP6193629B2 (ja) 不揮発性メモリセルの物理的特性を利用して乱数を生成する方法
US9032138B2 (en) Storage device based on a flash memory and user device including the same
KR102318561B1 (ko) 스토리지 장치, 스토리지 장치의 동작 방법
US20140032935A1 (en) Memory system and encryption method in memory system
US20140129761A1 (en) Non-volatile memory device and host device configured to communication with the same
KR20190099693A (ko) 메모리 시스템 및 그것의 동작 방법
US20140047246A1 (en) Flash memory device including key control logic and encryption key storing method
KR20080069018A (ko) 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치
US8886963B2 (en) Secure relocation of encrypted files
KR20190078962A (ko) 파일 단위의 암호화 키에 기반하여 암호화를 수행하도록 구성되는 스토리지 장치, 스토리지 시스템, 및 그 동작 방법
US11556271B2 (en) Storage device storing data on key-value basis and operating method thereof
CN114255813A (zh) 存储装置、主机装置、包括两者的电子装置及其操作方法
US9811477B2 (en) Memory system and method for writing data to a block of an erased page
EP3955116B1 (en) Memory controller, and memory system including the same
JP2014044788A (ja) 不揮発性半導体記憶装置を用いた記憶媒体及び情報端末
US7840745B2 (en) Data accessing system, controller and storage device having the same, and operation method thereof
US11556252B2 (en) Storage device and method of operating the same
US11644983B2 (en) Storage device having encryption
TW201830284A (zh) 資料儲存系統、資料儲存方法及資料讀取方法
US11822800B2 (en) Storage system including host and storage device and operation method thereof
US20230289071A1 (en) Electronic device and method of operating the same
US20240097885A1 (en) Memory controller and storage device including same
KR20220007931A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant