KR20230071695A - 스토리지 장치 및 그것의 동작 방법 - Google Patents

스토리지 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20230071695A
KR20230071695A KR1020220043054A KR20220043054A KR20230071695A KR 20230071695 A KR20230071695 A KR 20230071695A KR 1020220043054 A KR1020220043054 A KR 1020220043054A KR 20220043054 A KR20220043054 A KR 20220043054A KR 20230071695 A KR20230071695 A KR 20230071695A
Authority
KR
South Korea
Prior art keywords
host
encryption key
command
lifetime
storage device
Prior art date
Application number
KR1020220043054A
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 US17/938,291 priority Critical patent/US20230152987A1/en
Priority to EP22204003.2A priority patent/EP4180997A1/en
Priority to CN202211425820.6A priority patent/CN116136746A/zh
Publication of KR20230071695A publication Critical patent/KR20230071695A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/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
    • G06F21/725Protecting 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 operating on a secure reference time value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Abstract

본 개시의 실시 예에 따르면 불휘발성 메모리 장치를 포함하고 암호화 키에 기초하여 호스트와 통신하도록 구성된 스토리지 장치의 동작 방법이 개시된다. 스토리지 장치의 동작 방법은, 호스트로부터 수신된 제1 커맨드에 기초하여 제1 암호화 키에 대한 제1 키 식별자 및 제1 라이프 타임을 설정하는 단계, 및 제1 라이프 타임이 만료된 후, 호스트로부터 제1 키 식별자를 포함하는 제2 커맨드가 수신된 경우 제1 암호화 키에 대한 데이터 보호 동작을 수행하는 단계를 포함할 수 있다.

Description

스토리지 장치 및 그것의 동작 방법{STORAGE DEVICE AND OPERATION METHOD THEREOF}
본 발명은 반도체 메모리에 관한 것으로, 더욱 상세하게는 스토리지 장치 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치는 SRAM(Static Random Access Memory) 장치, DRAM(Dynamic Random Access Memory) 장치 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, MRAM(Magnetic Random Access Memory) 장치, FRAM(Ferroelectric Random Access Memory) 장치, ReRAM(Resistive Random Access Memory) 장치, PRAM(Phase-change Random Access Memory) 장치 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
플래시 메모리 장치 기반의 SSD(solid state drive)는 대용량 저장매체로서 널리 사용된다. 일반적으로, SSD는 호스트와 미리 정해진 인터페이스 및 암호화 키(cryptographic key)를 통해 통신한다. 예를 들어, SSD는 호스트로부터 수신된 데이터를 미리 정해진 암호화 키로 암호화하여 저장하도록 구성된다. 이 경우, 다른 호스트의 액세스에 의한 데이터 유출 및 SSD 도난에 의한 데이터 유출이 방지될 수 있다. 그러나, 호스트가 해킹된 경우에는 SSD에 저장된 데이터가 유출 또는 손상될 수 있다.
본 개시의 목적은 상술된 기술적 과제를 해결하는 것에 있다. 보다 상세하게는, 본 개시의 목적은 호스트가 해킹된 경우에도 데이터의 유출 및 손상이 방지되는 스토리지 장치 및 그것의 동작 방법을 제공하는 것에 있다.
본 개시의 일 실시 예에 따른, 불휘발성 메모리 장치를 포함하고, 암호화 키(Cryptographic Key)에 기초하여 호스트와 통신하도록 구성된 스토리지 장치의 동작 방법은, 상기 호스트로부터 수신된 제1 커맨드에 기초하여 제1 암호화 키에 대한 제1 키 식별자 및 제1 라이프 타임을 설정하는 단계, 및 상기 제1 라이프 타임이 만료된 후, 상기 호스트로부터 상기 제1 키 식별자를 포함하는 제2 커맨드가 수신된 경우 상기 제1 암호화 키에 대한 데이터 보호 동작을 수행하는 단계를 포함할 수 있다.
본 개시의 일 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 및 호스트와 암호화 키에 기초하여 통신하고, 상기 호스트의 제어에 기초하여 상기 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 상기 호스트로부터 제공된 제1 암호화 키에 대해 제1 라이프 타임을 설정하고, 상기 제1 라이프 타임이 만료된 후 상기 호스트로부터 상기 제1 암호화 키와 관련된 제1 커맨드를 수신함에 응답하여, 상기 호스트로 에러 또는 더미 응답을 반환하도록 구성될 수 있다.
본 개시의 일 실시 예에 따른 스토리지 시스템은, 불휘발성 메모리 장치를 포함하는 스토리지 장치, 제1 암호화 키, 상기 제1 암호화 키에 대한 제1 키 식별자, 및 상기 제1 암호화 키에 대한 제1 라이프 타임을 설정하기 위한 제1 커맨드를 상기 스토리지 장치로 송신하는 호스트를 포함하고, 상기 제1 라이프 타임이 만료된 후 상기 호스트로부터 상기 제1 암호화 키에 대한 액세스가 발생하는 경우, 상기 스토리지 장치는 에러 또는 더미 응답을 상기 호스트로 반환하도록 구성될 수 있다.
본 개시의 실시 예에 따르면, 스토리지 장치는 암호화 키 별로 라이프 타임 또는 내구도를 설정할 수 있다. 따라서, 호스트가 해킹된 경우에도 스토리지 장치에 저장된 데이터의 유출 및 손상이 방지될 수 있다. 즉, 본 개시의 실시 예에 따르면, 보안성이 향상된 스토리지 장치 및 그것의 동작 방법이 제공된다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 보다 상세하게 보여주는 블록도이다.
도 3은 잔여 라이프 타임에 대한 도 2의 스토리지 컨트롤러의 동작을 보여주는 테이블이다.
도 4는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다.
도 5는 도 1의 호스트로부터 발행된 커맨드에 응답하여 동작하는, 스토리지 장치의 동작 방법을 보여주는 흐름도이다.
도 6은 도 5의 S140 단계에 대한 일 실시 예를 보여주는 도면이다.
도 7a 및 도 7b는 도 5의 S140 단계에 대한 다른 실시 예를 보여주는 도면이다.
도 8은 호스트의 제어에 기초하여 라이프 타임을 연장하는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다.
도 9는 호스트의 제어에 기초하여 라이프 타임을 갱신하는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다.
도 10은 본 개시의 다른 실시 예에 따른 도 1의 스토리지 컨트롤러를 보여주는 블록도이다.
도 11은 카운트 값에 따른 도 10의 스토리지 컨트롤러의 동작을 보여주는 테이블이다.
도 12는 도 10의 스토리지 컨트롤러를 포함하는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다.
도 13은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 예를 보여주는 블록도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다. 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 개시의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 개시의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 당업자에 의해 수행될 수 있다. 더욱이, 잘 알려진 기능들 및 구조들에 대한 설명들은 명확성 및 간결성을 위하여 생략된다. 이하의 도면들 또는 상세한 설명에서의 구성들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 본문에서 사용된 용어들은 본 개시의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
상세한 설명에서 사용되는 드라이버(driver) 또는 블록(block) 등의 용어를 참조하여 설명되는 구성 요소들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 어플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(Micro Electro Mechanical System; MEMS), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(1; Storage System)은 호스트(10; Host) 및 스토리지 장치(100; Storage Device)을 포함할 수 있다. 일 실시 예에서, 스토리지 시스템(1)은 개인용 컴퓨터, 랩탑 컴퓨터, 서버, 워크스테이션, 스마트폰, 태블릿 PC 등과 같은 다양한 정보 처리 장치들 중 적어도 하나에 포함될 수 있다.
호스트(10)는 스토리지 장치(100)에 액세스할 수 있다. 예를 들어, 호스트(10)는 스토리지 장치(100)에 커맨드를 송신하여, 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다.
스토리지 장치(100)는 스토리지 컨트롤러(110; Storage Controller) 및 불휘발성 메모리 장치(120; Nonvolatile Memory Device)를 포함할 수 있다. 스토리지 장치(100)는 호스트(10)의 제어에 응답하여 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 호스트(10)로부터 발행된 커맨드에 기초하여, 불휘발성 메모리 장치(120)에 데이터를 저장하거나 불휘발성 메모리 장치(120)로부터 데이터를 독출할 수 있다.
일 실시 예에서, 스토리지 장치(100)는, 호스트(10)와 PCI-express(Peripheral Component Interconnect express) 인터페이스 또는 PCI-express 기반의 NVMe(nonvolatile memory express) 인터페이스에 기초하여 통신할 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 스토리지 장치(100) 및 호스트(10)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들을 기반으로 서로 통신할 수 있다.
스토리지 컨트롤러(110)는 암호화 키(cryptographic key)를 사용하여 호스트(10)와 통신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 암호화 모듈(111; cryptographic module)을 포함할 수 있다. 암호화 모듈(111)은 암호화 키에 기초하여, 불휘발성 메모리 장치(120)에 저장될 데이터를 암호화(encoding)하거나 또는 불휘발성 메모리 장치(120)로부터 읽은 데이터를 복호화(decoding)할 수 있다.
보다 상세하게는, 스토리지 컨트롤러(110)는 호스트(10)로부터 로우 데이터(raw data)를 수신할 수 있다. 암호화 모듈(111)은 수신된 로우 데이터를 암호화 키로 암호화(encoding)할 수 있고, 스토리지 컨트롤러(110)는 암호화 된 데이터를 불휘발성 메모리 장치(120)에 저장할 수 있다. 암호화 모듈(111)은 불휘발성 메모리 장치(120)에 저장된 데이터를 복호화(decoding)할 수 있고, 스토리지 컨트롤러(110)는 복호화된 데이터를 호스트(10)로 제공할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)는 호스트(10)와 복수의 암호화 키들에 기초하여 통신할 수 있다. 이 경우, 복수의 암호화 키들 각각은 서로 다를 수 있다. 복수의 암호화 키들 각각은 불휘발성 메모리 장치(120)의 서로 다른 영역에 대응될 수 있다.
호스트(10)는 암호화 키에 대한 라이프 타임을 결정할 수 있다. 즉, 스토리지 컨트롤러(110)는 호스트(10)의 제어에 기초하여 암호화 키에 대해 라이프 타임을 설정할 수 있다. 예를 들어, 스토리지 장치(100)는 보안 모듈(112; Security Module)을 포함할 수 있다. 보안 모듈(112)은 호스트(10)의 제어에 기초하여 복수의 암호화 키들 각각에 대해 라이프 타임을 설정할 수 있다. 보안 모듈(112)은 라이프 타임이 만료된 암호화 키에 대해 데이터 보호 동작을 수행하도록 스토리지 컨트롤러(110)를 제어할 수 있다.
예를 들어, 호스트(10)로부터 스토리지 컨트롤러(110)로 제공된 제1 커맨드(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)는 제1 암호화 키와 대응되는 제1 키 식별자(Key ID; Key identifier)를 포함할 수 있다. 이 경우, 보안 모듈(112)은 제1 커맨드에 포함되는 제1 키 식별자와 대응되는 제1 암호화 키를 식별할 수 있다. 보안 모듈(112)은 식별된 제1 암호화 키의 라이프 타임이 만료되었는지 여부를 판별할 수 있다. 즉, 보안 모듈(112)은 호스트(10)로부터 수신된 제1 커맨드와 관련된 제1 암호화 키의 라이프 타임이 만료되었는지 여부를 판별할 수 있다.
제1 암호화 키의 라이프 타임이 만료되지 않았다고 판별된 경우, 보안 모듈(112)은 일반적인 동작(normal operation)을 수행하도록 스토리지 컨트롤러(110)를 제어할 수 있다. 이 경우, 암호화 모듈(111)은 제1 암호화 키를 사용하여 데이터를 암호화 또는 복호화 할 수 있다. 스토리지 컨트롤러(110)는 암호화된 데이터를 불휘발성 메모리 장치(120)에 저장하거나, 복호화된 데이터를 호스트(10)로 송신할 수 있다.
반대로, 제1 암호화 키의 라이프 타임이 만료되었다고 판별된 경우, 보안 모듈(112)은 제1 커맨드에 대해 에러 또는 더미 응답(dummy response)을 반환하도록 스토리지 컨트롤러(110)를 제어할 수 있다. 이 경우, 호스트(10)가 해킹(hacking)되더라도, 해킹된 호스트로부터 스토리지 장치(100)에 저장된 데이터가 보호될 수 있다.
예를 들어, 제1 커맨드가 읽기 커맨드인 경우 스토리지 컨트롤러(110)는 호스트(10)로 에러 또는 가비지 데이터(garbage data)를 반환할 수 있다. 이 경우, 가비지 데이터는 불휘발성 메모리 장치(120)에 저장된 데이터와 무관하거나 또는 랜덤하게 생성된 데이터일 수 있다. 반면, 제1 커맨드가 쓰기 커맨드인 경우, 스토리지 컨트롤러(110)는 호스트(10)로 에러를 반환하거나, 또는 호스트로(10) 컴플리션(completion)을 반환하되 불휘발성 메모리 장치(120)에 데이터를 쓰지 않을 수 있다. 이와 유사하게, 제1 커맨드가 소거 커맨드인 경우, 스토리지 컨트롤러(110)는 호스트(10)로 에러를 반환하거나, 또는 호스트로(10) 컴플리션(completion)을 반환하되 불휘발성 메모리 장치(120)에 저장된 데이터를 소거하지 않을 수 있다.
즉, 스토리지 장치(100)가 해킹된 호스트로 에러 또는 더미 응답을 반환함으로써 불휘발성 메모리 장치(120)에 저장된 데이터가 보호될 수 있다. 따라서, 본 개시의 실시 예에 따르면 스토리지 장치의 보안성이 향상될 수 있다. 보안 모듈(112)의 구성, 및 스토리지 장치(100)의 동작은 이하의 도면들을 참조하여 보다 상세하게 설명된다.
도 2는 도 1의 스토리지 컨트롤러를 보다 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 암호화 모듈(111), 보안 모듈(112), 프로세서(113; processor), 호스트 인터페이스 레이어(114; host interface layer), 휘발성 메모리 장치(115; volatile memory device), 및 불휘발성 메모리 장치 인터페이스(116; nonvolatile memory device interface)를 포함할 수 있다. 보안 모듈(112), 프로세서(113), 호스트 인터페이스 레이어(114), 휘발성 메모리 장치(115), 및 불휘발성 메모리 장치 인터페이스(116)는 버스를 통해 서로 연결될 수 있다.
프로세서(113)는 스토리지 컨트롤러(110)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(113)는 스토리지 컨트롤러(110)에서 실행되는 다양한 어플리케이션(예를 들어, 플래시 변환 레이어(FTL; flash translation layer))을 실행할 수 있다.
스토리지 컨트롤러(110)는 호스트 인터페이스 레이어(114)를 통해 호스트(10)와 통신할 수 있다. 예를 들어, 호스트 인터페이스 레이어(114)는 PCI-express(Peripheral Component Interconnect express) 인터페이스, NVMe(nonvolatile memory express) 인터페이스, SATA(Serial ATA) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, UFS(Universal Flash Storage) 인터페이스 등과 같은 다양한 호스트 인터페이스들 중 적어도 하나를 포함할 수 있다. 보다 간결한 설명을 위해, 이하에서는 호스트 인터페이스 레이어(114)가 PCI-express 인터페이스에 기초하여 호스트(10)와 통신하는 것으로 가정된다.
휘발성 메모리 장치(115)는 스토리지 컨트롤러(110)의 버퍼 메모리, 동작 메모리, 또는 캐시 메모리로서 사용될 수 있다. 예를 들어, 휘발성 메모리 장치(115)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등으로 구현될 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 장치 인터페이스(116)를 통해 불휘발성 메모리 장치(120)와 통신할 수 있다. 예를 들어, 불휘발성 메모리 장치 인터페이스(116)는 낸드(NAND) 인터페이스일 수 있다.
보안 모듈(112)은 호스트(10)와의 통신에 사용되는 암호화 키에 대한 라이프 타임을 설정, 저장 및 관리할 수 있다. 예를 들어, 보안 모듈(112)은 키 스토리지(112a), 타이머(112b), 및 키 매니저(112c)를 포함할 수 있다.
키 스토리지(112a)는 호스트(10)와의 통신에 사용되는 암호화 키와 관련된 다양한 정보를 저장할 수 있다. 예를 들어, 키 스토리지(112a)는 암호화 키, 암호화 키에 대한 키 식별자(Key ID; Key identifier), 및 암호화 키에 대해 설정된 라이프 타임 정보를 저장할 수 있다.
일 실시 예에서, 키 식별자는 대응되는 암호화 키를 호출하기 위해 사용될 수 있다. 예를 들어, 호스트(10)는 읽기 커맨드, 쓰기 커맨드 등과 같은 다양한 유형의 커맨드를 스토리지 장치(100)로 송신할 수 있다. 이 경우, 호스트(10)는 송신하는 커맨드에 암호화 키를 직접 포함시키는 대신, 대응되는 키 식별자를 포함시킬 수 있다. 스토리지 장치(100)는 호스트(10)로부터 제공된 커맨드에 포함된 키 식별자와 대응되는 암호화 키에 기초하여, 불휘발성 메모리 장치(120)에 대해 읽기 동작, 쓰기 동작 등의 다양한 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(120)는 호스트(10)로부터의 커맨드에 기초하여, 암호화 모듈(111)을 통해 암호화된 데이터를 불휘발성 메모리 장치(120)에 저장하거나, 암호화 모듈(111)을 통해 복호화된 데이터를 호스트(10)로 반환할 수 있다.
타이머(112b)는 암호화 키에 대한 라이프 타임이 설정된 시점으로부터 경과한 시간을 측정할 수 있다. 예를 들어, 타이머(112b)는 클럭 신호에 기초하여, 특정한 암호화 키에 대한 라이프 타임이 설정된 시점으로부터 경과된 시간의 길이를 측정하도록 구성될 수 있다. 일 실시 예에서, 타이머(112b)는 스토리지 장치(100)의 전원이 턴-온 된 경우에만 시간 측정 동작을 수행할 수 있다.
키 매니저(112c)는 암호화 키에 대해 설정된 라이프 타임에 기초하여, 스토리지 컨트롤러(110)를 제어할 수 있다. 예를 들어, 키 매니저(112c)는 설정된 라이프 타임과 타이머(112b)에 의해 측정된 시간의 차이로부터 암호화 키에 대한 잔여 라이프 타임(Remained lifetime)을 계산할 수 있다. 이하에서는 보다 간결한 설명을 위해, 설정된 라이프 타임에서 타이머(112b)에 의해 측정된 시간을 뺀 값이 0보다 작은 경우 잔여 라이프 타임이 0인 것으로 지칭된다.
키 매니저(112c)는 라이프 타임이 만료된(즉, 잔여 라이프 타임이 0인) 암호화 키에 대해 데이터 보호 동작을 수행하도록 스토리지 컨트롤러(110)를 제어할 수 있다. 이하에서는 특정한 잔여 라이프 타임이 0인 경우, 대응되는 암호화 키의 라이프 타임이 만료된 것으로 지칭된다. 반대로, 특정한 잔여 라이프 타임이 0이 아닌 경우, 대응되는 암호화 키의 라이프 타임이 만료되지 않은 것으로 지칭된다.
즉, 키 매니저(112c)는 키 스토리지(112a)에 저장된 라이프 타임보다 타이머(112b)에 의해 측정된 시간이 더 긴 암호화 키에 대해 데이터 보호 동작을 수행하도록, 스토리지 컨트롤러(110)를 제어할 수 있다. 예를 들어, 키 매니저(112c)는 제1 암호화 키에 대해 설정된 라이프 타임보다 제1 암호화 키가 설정된 후 경과한 시간이 긴 경우, 제1 암호화 키의 라이프 타임이 만료된 것으로 판별할 수 있다. 이 경우, 키 매니저(112c)는 제1 암호화 키에 대해 데이터 보호 동작을 수행하도록 스토리지 컨트롤러(110)를 제어할 수 있다.
일 실시 예에서, 키 매니저(112c)는 호스트(10)의 제어에 기초하여 키 스토리지(112a)에 저장된 라이프 타임을 연장할 수 있다. 호스트(10)의 제어에 기초한 스토리지 장치(100)의 라이프 타임 연장 동작은 이하의 도 8을 참조하여 보다 상세하게 설명된다.
일 실시 예에서, 키 매니저(112c)는 호스트(10)의 제어에 기초하여 만료된 라이프 타임을 갱신할 수 있다. 호스트(10)의 제어에 기초한 스토리지 장치(100)의 라이프 타임 갱신 동작은 이하의 도 9를 참조하여 보다 상세하게 설명된다.
일 실시 예에서, 암호화 모듈(111) 및 보안 모듈(112)은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 예를 들어, 암호화 모듈(111) 또는 보안 모듈(112)의 적어도 일부는 별도의 회로, 장치, 또는 칩의 형태로서 스토리지 컨트롤러(110)에 포함될 수 있다. 그리고, 암호화 모듈(111) 또는 보안 모듈(112)의 적어도 일부는 프로세서(113)에 의해 휘발성 메모리 장치(115)로 로드되는 소프트웨어 모듈로도 구현될 수 있다. 즉, 보다 간결한 설명을 위해 도 2에는 암호화 모듈(111) 및 보안 모듈(112)이 별도의 구성 요소인 것으로 도시되었으나, 본 개시의 범위는 이에 한정되지 않는다. 예를 들어, 다른 구성요소들 중 하나 이상에 암호화 모듈(111) 및 보안 모듈(112)의 일부 또는 전부가 포함될 수 있다.
도 3은 잔여 라이프 타임에 대한 도 2의 스토리지 컨트롤러의 동작을 보여주는 테이블이다. 도 1 내지 도 3을 참조하면, 스토리지 컨트롤러(110)는 호스트(10)와 다양한 암호화 키들에 기초하여 통신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 “0x123ABC”암호화 키(이하 제1 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, “0x123DEF”암호화 키(이하 제2 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, “0x123GHI”암호화 키(이하 제3 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, “0x123JKL”암호화 키(이하 제4 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, 또는 “0x123MNO”암호화 키(이하 제5 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신할 수 있다.
제1 내지 제5 암호화 키들 각각은 서로 다른 키 식별자(Key ID; Key identifier)를 통해 호출될 수 있다. 예를 들어, 제1 암호화 키는 “A”키 식별자를 통해 호출될 수 있고, 제2 암호화 키는 “B”키 식별자를 통해 호출될 수 있고, 제3 암호화 키는 “C”키 식별자를 통해 호출될 수 있고, 제4 암호화 키는 “D”키 식별자를 통해 호출될 수 있고, 그리고 제5 암호화 키는 “E”키 식별자를 통해 호출될 수 있다. 그러나, 상술된 암호화 키들 및 키 식별자들은 보다 간결한 설명을 위해 사용되는 것으로써, 본 개시의 범위는 암호화 키의 수, 암호화 키의 사이즈(size), 또는 키 식별자의 사이즈에 한정되지 않는다.
호스트(10)는 암호화 키를 호출하기 위해, 대응되는 키 식별자를 사용할 수 있다. 즉, 호스트(10)가 스토리지 장치(100)로 송신하는 커맨드는 암호화 키를 포함하는 대신, 대응되는 키 식별자를 포함할 수 있다. 예를 들어, 호스트(10)가 제1 암호화 키로 암호화된 데이터에 대한 읽기 커맨드를 스토리지 장치(100)로 송신하는 경우, 읽기 커맨드에는 “A”키 식별자가 포함될 수 있다. 이 경우, 스토리지 컨트롤러(110)는 제1 암호화 키를 이용하여 불휘발성 메모리 장치(120)에 저장된 데이터를 복호화할 수 있다. 그리고, 스토리지 컨트롤러(110)는 복호화된 데이터(즉, 로우 데이터)를 호스트(10)로 제공할 수 있다.
스토리지 컨트롤러(110)는 호스트(10)의 제어에 기초하여 제1 내지 제5 암호화 키들 각각에 대해 라이프 타임을 설정하거나 설정하지 않을 수 있다. 이하에서는 스토리지 컨트롤러(110)가 호스트(10)의 제어에 기초하여 제1 암호화 키에 대하여는 라이프 타임을 설정하지 않고, 제2 내지 제5 암호화 키에 대하여는 라이프 타임을 설정한 실시 예가 대표적으로 설명된다.
스토리지 컨트롤러(110)는 호스트(10)의 제어에 기초하여 제1 암호화 키에 대한 라이프 타임을 설정하지 않을 수 있다. 이 경우, 스토리지 장치(100)는 제1 암호화 키에 대해 비보호 모드(Unprotect mode)로 동작할 수 있다. 즉, 스토리지 장치(100)는 호스트(10)로부터 수신된 커맨드에 따라 통상적으로(Normally) 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 라이프 타임과 무관하게, “A”키 식별자를 포함하는 읽기 커맨드가 수신된 경우 불휘발성 메모리 장치(120)에 대한 읽기 동작을 수행할 수 있고, “A”키 식별자를 포함하는 쓰기 커맨드가 수신된 경우 불휘발성 메모리 장치(120)에 대한 쓰기 동작을 수행할 수 있고, 그리고 “A”키 식별자를 포함하는 소거 커맨드가 수신된 경우 불휘발성 메모리 장치(120)에 저장된 데이터를 소거할 수 있다.
스토리지 컨트롤러(110)는 호스트(10)의 제어에 기초하여 제2 내지 제4 암호화 키들 각각에 대해 라이프 타임을 설정할 수 있다. 이 경우, 제2 내지 제4 암호화 키들 각각에 대해 설정된 라이프 타임은 서로 같거나 다를 수 있고, 제2 내지 제4 암호화 키들 각각에 대한 잔여 라이프 타임은 서로 같거나 다를 수 있다. 예를 들어, 제2 암호화 키에 대한 잔여 라이프 타임은 Ta일 수 있고, 제3 암호화 키에 대한 잔여 라이프 타임은 Tb일 수 있고, 제4 및 제5 암호화 키에 대한 잔여 라이프 타임은 0일 수 있다.
스토리지 장치(100)는 잔여 라이프 타임이 0보다 큰 암호화 키에 대해 보호 모드(Protect mode)로 동작할 수 있다. 예를 들어, 스토리지 장치(100)는 제2 및 제3 암호화 키에 대해 보호 모드로 동작할 수 있다. 이 경우, 스토리지 장치(100)는, 잔여 라이프 타임이 0이 될 때까지, 호스트(10)로부터 수신된 커맨드에 따라(즉, 일반적으로(normally)) 동작할 수 있다. 호스트(10)로부터 수신된 커맨드에 따라 동작하는 스토리지 장치(100)의 동작은 앞서 설명된 것과 유사하므로 상세한 설명은 생략된다.
스토리지 장치(100)는 잔여 라이프 타임이 0인 암호화 키에 대해 락 모드(Lock mode)로 동작할 수 있다. 예를 들어, 스토리지 장치(100)는 제4 및 제5 암호화 키에 대해 락 모드로 동작할 수 있다. 이 경우, 스토리지 컨트롤러(110)는, 제4 또는 제5 암호화 키와 관련된 커맨드에 응답하여 데이터 보호 동작(data protect operation)을 수행할 수 있다.
락 모드로 동작하는 스토리지 장치(100)는 호스트로부터의 요청에 응답하여 에러(Error)를 반환할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는, 제4 암호화 키와 관련된 커맨드에 응답하여 에러를 반환할 수 있다. 즉, 스토리지 컨트롤러(110)는 “D”키 식별자를 포함하는 커맨드에 응답하여 에러를 반환할 수 있다.
또는, 락 모드로 동작하는 스토리지 장치(100)는 호스트로부터의 요청에 응답하여 더미 응답(dummy response)을 반환할 수도 있다. 예를 들어, 스토리지 컨트롤러(110)는, 제5 암호화 키와 관련된 커맨드에 응답하여 더미 응답을 반환할 수 있다. 즉, 스토리지 컨트롤러(110)는 “E”키 식별자를 포함하는 커맨드에 응답하여 더미 응답을 반환할 수 있다.
보다 상세하게는, 스토리지 컨트롤러(110)는 “E”키 식별자를 포함하는 읽기 커맨드가 수신된 경우, 불휘발성 메모리 장치(120)에 저장된 데이터 대신 가비지 데이터(garbage data)를 호스트(10)로 반환할 수 있다. 스토리지 컨트롤러(110)는 “E”키 식별자를 포함하는 쓰기 커맨드가 수신된 경우, 불휘발성 메모리 장치(120)에 데이터를 쓰지 않고 호스트(10)로 컴플리션(completion)을 반환할 수 있다. 그리고, 스토리지 컨트롤러(110)는 “E”키 식별자를 포함하는 소거 커맨드가 수신된 경우, 불휘발성 메모리 장치(120)에 저장된 데이터를 소거하지 않고 호스트(10)로 컴플리션(completion)을 반환할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)가 데이터 보호 동작(data protect operation)을 수행하는 경우, 호스트(10)로 에러(Error)를 반환할 지 또는 더미 응답(Dummy response)를 반환할 지 여부는 암호화 키의 설정 단계에서 결정될 수 있다. 즉, 호스트(10)는 특정한 암호화 키와 관련된 데이터의 보호 방식을 결정할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)가 호스트(10)의 제어에 기초하여 암호화 키에 대해 라이프 타임을 설정함으로써, 스토리지 장치(100)의 보안성이 향상될 수 있다. 예를 들어, 호스트(10)가 해킹된 후 특정한 암호화 키에 대한 라이프 타임을 연장하지 않는 경우, 스토리지 장치(100)는 그 암호화 키에 대한 라이프 타임이 만료된 후 락 모드로 진입할 수 있다. 이 경우, 스토리지 장치(100)에 저장된 데이터에 대해 해킹된 호스트로부터의 액세스가 차단되므로, 호스트가 해킹된 경우에도 스토리지 장치(100)의 데이터가 보호될 수 있다.
일 실시 예에서, 라이프 타임이 만료된 암호화 키에 대해, 스토리지 컨트롤러(110)가 호스트(10)로 더미 응답을 반환함으로써 스토리지 장치(100)의 보안성이 향상될 수 있다. 예를 들어, 해킹된 호스트가 스토리지 장치(100)로 읽기 커맨드를 송신한 경우, 해킹된 호스트는 가비지 데이터를 수신할 수 있다. 이 경우, 해킹된 호스트는 스토리지 장치(100)에 저장된 데이터가 손상된 것으로 판별할 수 있다. 따라서, 스토리지 장치(100)의 보안성이 향상될 수 있다.
도 4는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다. 도 1 내지 도 4를 참조하면, S11 단계에서, 스토리지 장치(100)는 복수의 암호화 키들 각각에 대해 라이프 타임을 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 호스트(10)로부터 수신된 커맨드들(이하에서는 설정 커맨드들로 지칭될 수 있다.)에 기초하여 암호화 키에 대한 라이프 타임을 설정할 수 있다. 이 경우, 설정 커맨드들 각각은 암호화 키, 키 식별자, 및 라이프 타임의 길이 정보를 포함할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)는 호스트(10)와의 통신에 사용되는 복수의 암호화 키들 중 일부 또는 전부에 대하여 라이프 타임을 설정하도록 구성될 수 있다.
S12 단계에서, 스토리지 장치(100)는 복수의 암호화 키들 중 하나와 관련된 커맨드를 수신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 호스트(10)로부터 특정한 암호화 키와 관련된 커맨드를 수신할 수 있다. 이하에서는 보다 간결한 설명을 위해, 스토리지 컨트롤러(110)가 제1 암호화 키와 관련된 제1 커맨드를 수신한 실시 예가 대표적으로 설명된다. 이 경우, 제1 커맨드는 제1 키 식별자를 포함하는 것으로 가정된다.
S13 단계에서, 스토리지 장치(100)는 수신된 커맨드와 관련된 암호화 키의 라이프 타임이 만료되었는지 여부를 식별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 암호화 키에 대해 설정된 라이프 타임이 만료되었는지를 식별할 수 있다. 즉, 스토리지 장치(100)는 제1 암호화 키에 대한 스토리지 장치(100)의 동작 모드를 결정할 수 있다.
일 실시 예에서, 암호화 키에 대한 라이프 타임이 만료된 경우 이하의 S14 단계가 수행될 수 있다. 즉, 스토리지 장치(100)가 제1 암호화 키에 대해 락 모드로 동작하는 경우(예를 들어, 제1 암호화 키의 잔여 라이프 타임이 0인 경우) 이하의 S14 단계가 수행될 수 있다.
일 실시 예에서, 암호화 키에 대한 라이프 타임이 만료되지 않은 경우 이하의 S15 단계가 수행될 수 있다. 즉, 스토리지 장치(100)가 제1 암호화 키에 대해 보호 모드로 동작하는 경우(예를 들어, 제1 암호화 키의 잔여 라이프 타임이 0보다 큰 경우) 이하의 S15 단계가 수행될 수 있다.
S14 단계에서, 스토리지 장치(100)는 데이터 보호 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 커맨드에 응답하여 에러 또는 더미 응답을 반환할 수 있다.
S15 단계에서, 스토리지 장치(100)는 일반 동작(normal operation)을 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 제1 커맨드에 응답하여 에러 또는 더미 응답을 반환할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 커맨드가 읽기 커맨드인 경우 불휘발성 메모리 장치(120)에 대한 읽기 동작을 수행할 수 있고, 제1 커맨드가 쓰기 커맨드인 경우 불휘발성 메모리 장치(120)에 대한 쓰기 동작을 수행할 수 있고, 그리고 제1 커맨드가 소거 커맨드인 경우 불휘발성 메모리 장치(120)에 저장된 데이터를 소거할 수 있다.
도 5는 도 1의 호스트로부터 발행된 커맨드에 응답하여 동작하는, 스토리지 장치의 동작 방법을 보여주는 흐름도이다. 도 1 내지 도 3, 및 도 5를 참조하면, S110 단계에서, 호스트(10)는 암호화 키에 대한 라이프 타임을 설정하기 위한 커맨드(예를 들어, 설정 커맨드)를 스토리지 장치(100)로 송신할 수 있다. 이 경우, 스토리지 장치(100)는 설정 커맨드에 기초하여 암호화 키에 대한 라이프 타임을 설정할 수 있다.
이하에서는 보다 간결한 설명을 위해, 설정 커맨드에 기초하여, 제1 암호화 키에 대해 제1 키 식별자 및 제1 시간(T1)의 라이프 타임이 설정되고, 제1 암호화 키는 제1 키 식별자를 통해 호출되는 것으로 가정된다. 예를 들어, 설정 커맨드는 제1 암호화 키, 제1 키 식별자, 및 제1 시간(T1) 정보를 포함할 수 있다. 그러나 본 개시의 범위는 이에 한정되지 않고, 암호화 키에 대한 키 식별자 및 라이프 타임은 별개의 커맨드를 통해 설정될 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(10)로부터 제1 설정 커맨드를 수신하여 제1 암호화 키, 및 제1 암호화 키에 대한 제1 키 식별자를 설정할 수 있다. 이후, 스토리지 장치(100)는 호스트(10)로부터 제2 설정 커맨드를 수신하여 제1 암호화 키에 대한 라이프 타임을 설정할 수 있다.
일 실시 예에서, 설정 커맨드에 라이프 타임 정보가 포함되지 않은 경우, 스토리지 장치(100)는 암호화 키에 대해 사전에 결정된 라이프 타임을 설정할 수 있다. 예를 들어, 호스트(10)는 제1 암호화 키, 및 제1 암호화 키와 대응되는 제1 키 식별자를 포함하는(즉, 라이프 타임 정보를 포함하지 않는) 제1 설정 커맨드를 스토리지 장치(100)로 제공할 수 있다. 스토리지 장치(100)는 제1 설정 커맨드에 응답하여, 제1 암호화 키에 대해 사전에 결정된 시간 길이의 라이프 타임을 설정할 수 있다.
일 실시 예에서, 설정 커맨드는 암호화 키, 암호화 키에 대한 키 식별자, 라이프 타임의 길이 정보 등을 포함할 수 있다.
라이프 타임이 만료되기 전, S120 단계에서, 스토리지 장치(100)는 보호 모드(protection mode)로 동작할 수 있다. 즉, 스토리지 장치(100)는 제1 시간(T1)이 경과하기 전까지, 호스트(10)로부터 수신된 커맨드에 따라 동작할 수 있다.
보다 상세하게는, S120 단계는 S121 단계 및 S122 단계를 포함할 수 있다. S121 단계에서, 호스트(10)는 스토리지 장치(100)로 암호화 키와 관련된 커맨드를 송신할 수 있다. 예를 들어, 호스트(10)는 제1 키 식별자를 포함하는 커맨드를 송신할 수 있다. S122 단계에서, 스토리지 장치(100)는 호스트(10)로부터 수신된 커맨드에 따라 일반 동작(normal operation)을 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 읽기 커맨드를 수신한 경우 불휘발성 메모리 장치(120)에 대한 읽기 동작을 수행할 수 있고, 쓰기 커맨드를 수신한 경우 불휘발성 메모리 장치(120)에 대한 쓰기 동작을 수행할 수 있고, 소거 커맨드를 수신한 경우 불휘발성 메모리 장치(120)에 저장된 데이터에 대한 소거 동작을 수행할 수 있다.
일 실시 예에서, 스토리지 장치(100)는 특정한 암호화 키의 라이프 타임이 만료되기 전, 호스트(10)의 제어에 응답하여 라이프 타임을 연장할 수 있다. 라이프 타임 연장과 관련된 실시 예는 이하의 도 8을 참조하여 보다 상세하게 설명된다.
라이프 타임이 만료된 경우, S130 단계에서, 스토리지 장치(100)는 대응되는 암호화 키에 대한 락 모드(lock mode)로 진입할 수 있다. 예를 들어, 스토리지 장치(100)는, 제1 시간(T1)이 경과함에 응답하여, 제1 암호화 키에 대한 락 모드로 진입할 수 있다.
라이프 타임이 만료된 후, S140 단계에서, 스토리지 장치(100)는 락 모드(lock mode)로 동작할 수 있다. 즉, 스토리지 장치(100)는 제1 시간(T1)이 경과한 후, 호스트(10)로부터 수신된 제1 암호화 키와 관련된 커맨드에 응답하여 데이터 보호 동작을 수행할 수 있다.
보다 상세하게는 S140 단계는 S141 단계 및 S142 단계를 포함할 수 있다. S141 단계에서, 호스트(10)는 스토리지 장치(100)로 암호화 키와 관련된 커맨드를 송신할 수 있다. 예를 들어, 호스트(10)는 제1 키 식별자를 포함하는 커맨드를 송신할 수 있다. S142 단계에서, 스토리지 장치(100)는 호스트(10)로부터 수신된 커맨드에 응답하여, 암호화 키에 대한 데이터 보호 동작을 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(10)로 에러 또는 더미 응답을 반환할 수 있다. 스토리지 장치(100)의 데이터 보호 동작은 이하의 도 6, 도 7a, 및 도 7b를 참조하여 보다 상세하게 설명된다.
일 실시 예에서, 스토리지 장치(100)는 특정한 암호화 키의 라이프 타임이 만료된 후, 호스트(10)의 제어에 응답하여 라이프 타임을 갱신할 수 있다. 라이프 타임 갱신과 관련된 실시 예는 이하의 도 9를 참조하여 보다 상세하게 설명된다.
일 실시 예에서, 호스트(10)가 해킹된 경우, 암호화 키에 대한 라이프 타임이 연장되지 않을 수 있다. 이 경우, 스토리지 장치(100)는 락 모드로 동작할 수 있다. 따라서, 해킹된 호스트는 라이프 타임이 만료된 암호화 키와 관련된 데이터에 액세스(예를 들어, 데이터 읽기, 또는 데이터 수정)하지 못할 수 있다. 즉, 해킹된 호스트로부터 라이프 타임이 만료된 암호화 키와 관련된 데이터가 보호될 수 있다. 따라서 스토리지 장치(100)의 보안성이 향상될 수 있다.
일 실시 예에서, 라이프 타임이 만료된 암호화 키에 대한 액세스가 발생한 경우, 스토리지 장치(100)는 모든 암호화 키들에 대하여 락 모드로 동작하도록 구현될 수도 있다. 예를 들어, 제1 암호화 키에 대한 라이프 타임이 만료된 이후, 호스트(10)로부터의 제1 암호화 키에 대한 액세스가 발생할 수 있다. 이 경우, 스토리지 장치(100)는 제1 암호화 키뿐 아니라, 제2 암호화 키에 대하여도 락 모드로 동작할 수 있다. 그러나 본 개시의 범위는 이에 한정되지 않는다.
도 6은 도 5의 S140 단계에 대한 일 실시 예를 보여주는 도면이다. 도 6에서는 호스트(10)의 커맨드를 수신하고 에러를 반환하는 스토리지 장치(100)의 동작이 설명된다. 도 1 내지 도 3, 및 도 5 내지 도 6을 참조하면, S140 단계는 S141a 단계 및 S142a 단계를 포함할 수 있다. 이 경우, S141a 단계는 S140 단계와 대응될 수 있고, S142a 단계는 S142 단계와 대응될 수 있다.
S141a 단계에서, 호스트(10)는 스토리지 장치(100)로 암호화 키와 관련된 커맨드를 송신할 수 있다. 이 경우, 호스트(10)가 송신하는 커맨드는 라이프 타임이 만료된 암호화 키와 관련될 수 있다. 예를 들어, 호스트(10)가 송신하는 커맨드는 라이프 타임이 만료된 암호화 키(예를 들어, 제1 암호화 키)에 대한 키 식별자(예를 들어, 제1 키 식별자)를 포함할 수 있다. 일 실시 예에서, S141a 단계에서 송신되는 커맨드는 읽기 커맨드, 쓰기 커맨드, 소거 커맨드 등과 같은 다양한 유형의 커맨드들 중 하나일 수 있다.
S142a 단계에서, 스토리지 장치(100)는 호스트(10)로 에러를 반환할 수 있다. 예를 들어, 스토리지 장치(100)는 제1 암호화 키와 관련된(또는, 제1 키 식별자를 포함하는) 모든 커맨드에 대하여 에러를 반환할 수 있다.
도 7a 및 도 7b는 도 5의 S140 단계에 대한 다른 실시 예를 보여주는 도면이다. 도 7a 및 도 7b에서는 호스트(10)의 커맨드를 수신하고 더미 응답을 반환하는 스토리지 장치(100)의 동작이 설명된다.
도 1 내지 도 3, 도 5, 및 도 7a를 참조하면, S140 단계는 S141b 단계, S142b_1 단계, S142b_2 단계, 및 S142b_3를 포함할 수 있다. 이 경우, S141b 단계는 S140 단계와 대응될 수 있고, S142b_1 내지 S142b_3 단계는 S142 단계와 대응될 수 있다.
S141b 단계에서, 호스트(10)는 스토리지 컨트롤러(110)로 읽기 커맨드를 송신할 수 있다. 이 경우, 호스트(10)로부터 송신된 커맨드는 라이프 타임이 만료된 암호화 키와 관련될 수 있다. 즉, 호스트(10)가 송신하는 커맨드는 라이프 타임이 만료된 암호화 키(예를 들어, 제1 암호화 키)에 대한 키 식별자(예를 들어, 제1 키 식별자)를 포함할 수 있다.
S142b_1 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 데이터를 읽지 않을 수 있다. 즉, 스토리지 컨트롤러(110)는 호스트(10)로부터 수신된 읽기 커맨드에 따라 동작하지 않을 수 있다.
S142b_2 단계에서, 스토리지 컨트롤러(110)는 가비지 데이터(garbage data)를 생성할 수 있다. 이 경우, 가비지 데이터는 호스트(10)가 송신한 읽기 커맨드와 관련된 데이터와 무관하도록 구성될 수 있다. 보다 상세하게는, 가비지 데이터는 호스트(10)로부터의 읽기 커맨드와 대응되는 불휘발성 메모리 장치(120)의 물리 어드레스에 저장된 데이터와 무관할 수 있다. 예를 들어, 가비지 데이터는 랜덤 데이터(random data)일 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)는 동일한 읽기 커맨드에 대해 동일한 가비지 데이터를 생성할 수 있다. 즉, 스토리지 장치(100)는 동일한 읽기 커맨드에 응답하여 동일한 가비지 데이터를 반복적으로 반환하도록 구성될 수 있다.
S143b_3 단계에서, 스토리지 컨트롤러(110)는 생성된 가비지 데이터를 호스트(10)로 반환할 수 있다. 따라서, 해킹된 호스트는 송신한 읽기 커맨드에 대한 데이터가 손상된 것으로 판단할 수 있다. 이 경우, 스토리지 장치(100)의 보안성이 향상될 수 있다.
도 1 내지 도 3, 도 5, 및 도 7b를 참조하면, S140 단계는 S141c 단계, S142c_1 단계, 및 S142c_2 단계를 포함할 수 있다. 이 경우, S141c 단계는 S140 단계와 대응될 수 있고, S142c_1 내지 S142c_2 단계는 S142 단계와 대응될 수 있다.
S141c 단계에서, 호스트(10)는 스토리지 컨트롤러(110)로 쓰기 커맨드 또는 소거 커맨드를 송신할 수 있다. 쓰기 커맨드 또는 소거 커맨드의 구성은 앞서 도 7a를 참조하여 설명된 읽기 커맨드과 유사하므로, 상세한 설명은 생략된다.
S142c_1 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)에에 대해 데이터를 쓰거나 소거하지 않을 수 있다. 즉, 스토리지 컨트롤러(110)는 호스트(10)로부터 수신된 쓰기 커맨드 또는 소거 커맨드에 따라 동작하지 않을 수 있다.
S143c_2 단계에서, 스토리지 컨트롤러(110)는 호스트(10)로 컴플리션(completion)을 반환할 수 있다. 즉, 스토리지 컨트롤러(110)는 호스트(10)에 대해, 수신된 명령이 성공적으로 처리되었음을 알릴 수 있다. 따라서, 해킹된 호스트는 송신된 쓰기 커맨드 또는 소거 커맨드가 성공적으로 처리된 것으로 판단할 수 있다. 이 경우, 스토리지 장치(100)의 보안성이 향상될 수 있다.
도 8은 호스트의 제어에 기초하여 라이프 타임을 연장하는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다. 도 1 내지 도 3, 도 5 내지 도 8을 참조하면, S210 단계에서, 호스트(10)는 설정 커맨드를 스토리지 장치(100)로 송신할 수 있다. S210 단계는 도 5를 참조하여 설명된 S110 단계와 실질적으로 동일하므로 상세한 설명은 생략된다. 이하에서는 보다 간결한 설명을 위해, 스토리지 장치(100)가 설정 커맨드에 기초하여 제1 커맨드에 대해 제1 시간(T1)의 라이프 타임을 설정한 것으로 가정된다.
S220 단계에서, 라이프 타임이 만료되기 전에, 호스트(10)는 스토리지 장치(100)로 암호화 키에 대한 연장 커맨드(extension command)를 송신할 수 있다. 이 경우, 연장 커맨드는 암호화 키에 대한 라이프 타임을 연장할 것을 요청하는 커맨드를 지칭할 수 있다. 예를 들어, 호스트(10)는 스토리지 컨트롤러(110)로 제1 암호화 키에 대한 연장 커맨드를 송신할 수 있다.
일 실시 예에서, 연장 커맨드는 라이프 타임을 연장하고자 하는 암호화 키 대신, 라이프 타임을 연장하고자 하는 암호화 키에 대한 키 식별자를 포함할 수 있다. 예를 들어, 제1 암호화 키에 대한 연장 커맨드는 제1 키 식별자를 포함할 수 있다.
S230 단계에서, 스토리지 장치(100)는 호스트(10)로부터의 연장 커맨드에 기초하여 라이프 타임을 연장할 수 있다. 예를 들어, 스토리지 장치(100)는 연장 커맨드에 응답하여 제1 암호화 키의 라이프 타임을 제2 시간(T2)만큼 연장할 수 있다. 이 경우, 키 스토리지(112a)에 저장된 제1 암호화 키에 대한 라이프 타임은 제1 시간(T1)과 제2 시간(T2)의 합으로 수정될 수 있다.
일 실시 예에서, 제2 시간(T2)의 길이에 대한 정보는 S220 단계에서 송신된 연장 커맨드에 포함될 수 있다. 또는, 제2 시간(T2)의 길이는 S210 단계의 설정 커맨드에서 정의될 수 있다.
일 실시 예에서, 연장 커맨드는 호스트(10)와 스토리지 장치(100) 사이에 사전에 정의된 프라이빗 키(private key)로 암호화될 수 있다. 예를 들어, 연장 커맨드에 포함된 키 식별자 및/또는 연장되는 시간(예를 들어 제2 시간(T2)의 길이에 대한 정보)정보는 프라이빗 키로 암호화될 수 있다. 이 경우, 키 식별자 및/또는 연장되는 시간 정보가 유출될 가능성이 감소할 수 있다.
또한, 본 개시의 범위는 연장 커맨드의 구현 방식에 한정되지 않으며, 호스트(10)와 스토리지 장치(100) 사이에 결정된 다양한 방식을 통해, 암호화 키에 대한 라이프 타임이 연장될 수 있다.
예를 들어, 연장 커맨드는 라이프 타임 연장을 위해 정의된 관리 커맨드(admin command)가 아닌, 읽기 커맨드 및 쓰기 커맨드 등의 일반적인 커맨드(예를 들어, NVM 커맨드)로 구현될 수 있다. 예를 들어, 호스트(10)는 일부 필드(field)에 라이프 타임 연장과 관련된 정보를 포함하는 제1 커맨드를 송신할 수 있다. 스토리지 장치(100)는 제1 커맨드에 기초하여 동작(예를 들어, 읽기 동작 등)하고, 제1 커맨드와 관련된 암호화 키의 라이프 타임을 연장할 수 있다. 이 경우, 호스트(10)는 별도의 관리 커맨드를 통해 라이프 타임을 연장하는 대신, 일반적으로 송신하는 커맨드들(예를 들어, 읽기 커맨드 또는 쓰기 커맨드 등)을 통해 지속적으로 라이프 타임을 연장할 수 있다.
다른 예를 들어, 연장 커맨드는 호스트(10)의 암호화 키에 대한 액세스 패턴에 기초하여 정의될 수 있다. 예를 들어, 상술된 바와 같이, 연장 커맨드는 라이프 타임 연장을 위해 정의된 관리 커맨드(admin command)로 구성되지 않을 수 있다. 대신, 스토리지 컨트롤러(110)는 호스트(10)가 특정한 암호화 키에 대해 반복적으로(또는 규칙적으로) 액세스하는 경우, 라이프 타임을 연장하도록 구성될 수 있다.
연장된 라이프 타임이 만료되기 전, S240 단계에서, 스토리지 장치(100)는 보호 모드로 동작할 수 있다. 즉, 스토리지 장치(100)는 연장된 제2 시간(T2)이 경과하기 전까지, 호스트(10)로부터 수신된 커맨드에 따라 동작할 수 있다. S240 단계에서의 호스트(10) 및 스토리지 장치(100)의 동작은 앞서 설명된 S120 단계와 동일하므로 상세한 설명은 생략된다. 예를 들어, S240 단계는, S121 단계와 동일한 S241 단계, 및 S122 단계와 동일한 S242 단계를 포함할 수 있다.
연장된 라이프 타임이 만료된 경우, S250 단계에서, 스토리지 장치(100)는 대응되는 암호화 키에 대해 락 모드(lock mode)로 진입할 수 있다. 예를 들어, 스토리지 장치(100)는, 제1 시간(T1) 및 제2 시간(T2)이 모두 경과한 경우, 제1 암호화 키에 대한 락 모드로 진입할 수 있다.
연장된 라이프 타임이 만료된 후, S260 단계에서, 스토리지 장치(100)는 락 모드(lock mode)로 동작할 수 있다. 즉, 스토리지 장치(100)는 제1 시간(T1) 및 제2 시간(T2)이 모두 경과한 후, 호스트(10)로부터 수신된 커맨드에 대해 데이터 보호 동작을 수행할 수 있다. S260 단계에서의 호스트(10) 및 스토리지 장치(100)의 동작은 앞서 설명된 S140 단계와 동일하므로 상세한 설명은 생략된다. 예를 들어, S260 단계는, S141 단계와 동일한 S261 단계, 및 S142 단계와 동일한 S262 단계를 포함할 수 있다.
즉, 호스트(10)가 해킹된 후 특정한 암호화 키에 대한 라이프 타임을 연장하지 않는 경우, 스토리지 장치(100)는 그 암호화 키에 대한 라이프 타임이 만료된 후 락 모드로 진입할 수 있다. 이 경우, 스토리지 장치(100)에 저장된 데이터에 대한 해킹된 호스트로부터의 액세스가 차단되므로, 호스트가 해킹된 경우에도 스토리지 장치(100)의 데이터가 보호될 수 있다.
일 실시 예에서, 스토리지 장치(100)는 호스트(10)의 제어에 기초하여 복수의 암호화 키에 대한 복수의 라이프 타임들을 일괄적으로 연장할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(10)로부터 수신된 연장 커맨드에 응답하여, 제1 암호화 키에 대한 라이프 타임 및 제2 암호화 키에 대한 라이프 타임을 연장할 수 있다.
도 9는 호스트의 제어에 기초하여 라이프 타임을 갱신하는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다. 도 1 내지 도 3, 도 5 내지 도 9을 참조하면, S310 단계에서, 호스트(10)는 설정 커맨드를 스토리지 장치(100)로 송신할 수 있다. 연장된 라이프 타임이 만료된 경우, S320 단계에서, 스토리지 장치(100)는 락 모드로 진입할 수 있다. S310 단계는 앞서 설명된 S110 단계 및 S210와 실질적으로 동일하고, S320 단계는 앞서 설명된 S130 단계 및 S250 단계와 실질적으로 동일하므로 상세한 설명은 생략된다. 이하에서는 보다 간결한 설명을 위해, 스토리지 장치(100)가 제1 암호화 키에 대한 라이프 타임을 갱신하는 동작이 대표적으로 설명된다.
일 실시 예에서, 스토리지 장치(100)는, S310 단계 및 S320 단계 사이에, 1회 이상의 라이프 타임 연장 동작을 수행할 수 있다. 예를 들어, S310 단계 및 S320 단계 사이에는, 스토리지 장치(100)가 호스트(10)로부터 제1 암호화 키에 대한 연장 커맨드를 수신하고, 제1 암호화 키에 대한 라이프 타임을 연장하는 단계가 더 포함될 수 있다.
S330 단계에서, 스토리지 장치(100)는 호스트(10)로 라이프 타임이 만료된 암호화 키를 알릴 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(10)로 제1 암호화 키에 대한 라이프 타임이 만료되었음을 알릴 수 있다. 이 경우, 스토리지 장치(100)는 인터럽트(interrupt) 방식에 기초하여 호스트(10)로 라이프 타임 만료를 알릴 수 있다. 그러나 본 개시의 범위는 스토리지 장치(100)가 호스트(10)로 라이프 타임 만료를 알리는 방식에 한정되지 않는다.
S340 단계에서, 호스트(10)는 라이프 타임이 만료된 암호화 키에 대한 갱신 커맨드(renew command)를 스토리지 장치(100)로 송신할 수 있다. 이 경우, 갱신 커맨드는 재인증 정보를 포함할 수 있다. 예를 들어, 갱신 커맨드는 라이프 타임이 만료된 암호화 키에 대한 키 식별자를 포함할 수 있다.
일 실시 예에서, 갱신 커맨드(renew command)는 S220 단계에서 설명된 연장 커맨드(extension command)와 동일하게 구성될 수 있다. 예를 들어, 갱신 커맨드는 프라이빗 키에 기초하여 암호화될 수 있다.
또한, 본 개시의 범위는 갱신 커맨드의 구현 방식에 한정되지 않으며, 호스트(10)와 스토리지 장치(100) 사이에 결정된 다양한 방식을 통해, 암호화 키에 대한 라이프 타임이 갱신될 수 있다. 갱신 커맨드가 구현되는 방식과 관련된 다양한 실시 예들은 앞서 도 8을 참조하여 설명된 것과 유사하므로, 보다 상세한 설명은 생략된다. 일 실시 예에서, S340 단계는, S320 단계 이후 스토리지 장치의 전원이 턴-오프(turn-off)되고 다시 턴-온(turn-on)된 후에 실행될 수 있다. 즉, 특정한 키에 대해 락 모드에 진입한 스토리지 장치(100)는 재부팅(reboot)된 후, 재인증 정보를 수신하기 전까지 데이터 보호 동작을 수행할 수 있다.
일 실시 예에서, S330 단계는 생략될 수 있다. 예를 들어, S320 단계 이후, 스토리지 장치(100)는 호스트(10)로 라이프 타임 만료를 알리지 않을 수 있다. 이 경우, S320 단계 이후 갱신 커맨드를 호스트(10)로부터 수신하기 전까지, 스토리지 장치(100)는 데이터 보호 동작을 수행할 수 있다.
S350 단계에서, 스토리지 장치(100)는 갱신 커맨드에 대응되는 암호화 키의 라이프 타임을 갱신하고, 보호 모드(protect mode)로 진입할 수 있다. 예를 들어, 스토리지 장치(100)는 제1 암호화 키의 라이프 타임을 제3 시간(T3)으로 설정할 수 있다. 이 경우, 제3 시간(T3)의 길이는 제1 시간(T1)의 길이와 같거나 다를 수 있다.
갱신된 라이프 타임이 만료된 경우, S360 단계에서, 스토리지 장치(100)는 다시 락 모드로 진입할 수 있다. 예를 들어, 제3 시간(T3)이 경과한 경우, 스토리지 장치(100)는 제1 암호화 키에 대한 락 모드로 진입할 수 있다. 이 경우, 스토리지 장치(100)는 제1 암호화 키에 대해 데이터 보호 동작을 수행할 수 있다.
일 실시 예에서, 복수의 암호화 키들에 대한 복수의 라이프 타임들이 만료된 경우, 스토리지 장치(100)는 호스트(10)의 제어에 기초하여 복수의 라이프 타임들을 일괄적으로 갱신할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(10)로부터 수신된 갱신 커맨드에 응답하여, 제1 암호화 키에 대한 라이프 타임 및 제2 암호화 키에 대한 라이프 타임을 갱신할 수 있다.
도 10은 본 개시의 다른 실시 예에 따른 도 1의 스토리지 컨트롤러를 보여주는 블록도이다. 보다 간결한 설명을 위하여, 이하에서는 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 10을 참조하면, 스토리지 컨트롤러(211)는 보안 모듈(212)을 포함할 수 있다. 스토리지 컨트롤러(210)는 암호화 모듈(211), 보안 모듈(212), 프로세서(213), 호스트 인터페이스 레이어(214), 휘발성 메모리 장치(215), 및 불휘발성 메모리 장치 인터페이스(216)를 포함할 수 있다. 암호화 모듈(211), 보안 모듈(212), 프로세서(213), 호스트 인터페이스 레이어(214), 휘발성 메모리 장치(215), 및 불휘발성 메모리 장치 인터페이스(216)는 버스를 통해 서로 연결될 수 있다. 암호화 모듈(211), 프로세서(213), 호스트 인터페이스 레이어(214), 휘발성 메모리 장치(215), 및 불휘발성 메모리 장치 인터페이스(216)는 앞서 도 2를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
일 실시 예에서, 도 1 내지 도 9를 참조하여 설명된 보안 모듈(112)은 암호화 키에 대한 라이프 타임에 기초하여 데이터 보호 동작을 수행할 수 있다. 반면에, 도 10의 보안 모듈(212)은 암호화 키의 액세스에 대한 내구도(Durability)를 설정하여 데이터 보호 동작을 수행하도록 구성될 수 있다. 즉, 도 10의 보안 모듈(212)은 호스트(10)가 암호화 키에 액세스 하는 횟수에 대한 한도를 설정할 수 있다.
예를 들어, 보안 모듈(212)는 키 스토리지(212a; key storage), 카운터(212b; counter), 및 키 매니저(212c; key manager)를 포함할 수 있다.
키 스토리지(212a)는 호스트(10)와의 통신에 사용되는 암호화 키와 관련된 다양한 정보를 저장할 수 있다. 예를 들어, 키 스토리지(212a)는 암호화 키, 암호화 키에 대한 키 식별자(key ID), 및 암호화 키에 대해 설정된 내구도를 저장할 수 있다.
카운터(212b)는 암호화 키에 대한 액세스 횟수를 카운트할 수 있다. 즉, 카운터(212b)는 특정한 암호화 키에 대한 액세스가 발생한 경우 대응되는 카운트 값(value of count)을 증가시킬 수 있다. 예를 들어, 호스트(10)로부터 제1 암호화 키에 대한 액세스가 발생한 경우, 카운터(212b)는 제1 암호화 키에 대한 카운트 값을 증가시킬 수 있다.
일 실시 예에서, 액세스는 호스트(10)로부터 송신된, 암호화 키와 관련된 커맨드를 지칭할 수 있다. 예를 들어, 제1 암호화 키에 대한 액세스는 제1 키 식별자를 포함하는 커맨드들을 지칭할 수 있다. 즉, 액세스는 읽기 커맨드, 쓰기 커맨드, 소거 커맨드 등과 같은 다양한 유형의 커맨드들을 포함할 수 있다.
키 매니저(212c)는 암호화 키에 대해 설정된 내구도에 기초하여, 스토리지 컨트롤러(210)를 제어할 수 있다. 보다 상세하게는, 키 매니저(212c)는 카운터(212b)에 측정된 카운트 값이 내구도보다 큰 경우, 스토리지 컨트롤러(210)로 하여금 데이터 보호 동작을 수행하도록 제어할 수 있다. 예를 들어, 키 매니저(212c)는 제1 암호화 키에 대한 내구도보다 제1 암호화 키에 대한 카운트 값이 큰 경우, 제1 암호화 키에 대해 데이터 보호 동작을 수행하도록 스토리지 컨트롤러(110)를 제어할 수 있다.
도 11은 카운트 값에 따른 도 10의 스토리지 컨트롤러의 동작을 보여주는 테이블이다. 도 10 내지 도 11을 참조하면, 스토리지 컨트롤러(210)는 호스트(10)와 다양한 암호화 키들에 기초하여 통신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 “0x456ABC”암호화 키(이하 제1 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, “0x456DEF”암호화 키(이하 제2 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, “0x456GHI”암호화 키(이하 제3 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, “0x456JKL”암호화 키(이하 제4 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신하거나, 또는 “0x456MNO”암호화 키(이하 제5 암호화 키로 지칭될 수 있다.)에 기초하여 호스트(10)와 통신할 수 있다.
제1 내지 제5 암호화 키들 각각은 서로 다른 키 식별자를 통해 호출될 수 있다. 예를 들어, 제1 내지 제5 암호화 키들은 각각 “F”, “G”, “H”, “I”, “J”키 식별자를 통해 호출될 수 있다.
스토리지 컨트롤러(210)는 호스트(10)의 제어에 기초하여 제1 내지 제5 암호화 키들 각각에 대해 내구도를 설정하거나 설정하지 않을 수 있다. 이하에서는 스토리지 컨트롤러(210)가 제1 암호화 키에 대하여는 내구도를 설정하지 않고, 제2 내지 제5 암호화 키에 대하여는 내구도를 설정한 실시 예가 대표적으로 설명된다.
스토리지 컨트롤러(210)는 호스트(10)의 제어에 기초하여 제1 암호화 키에 대한 라이프 타임을 설정하지 않을 수 있다. 이 경우, 스토리지 장치(100)는 제1 암호화 키에 대해 비보호 모드(Unprotect mode)로 동작할 수 있다.
스토리지 장치(100)는 내구도가 대응되는 카운트 값보다 크거나 같은 암호화 키에 대해 보호 모드(Protect mode)로 동작할 수 있다. 예를 들어, 키 매니저(212c)는, 제2 암호화 키(내구도 Nb가 0보다 큰 경우) 및 제3 암호화 키(내구도와 카운트 값이 같은 경우)에 대해 보호 모드로 동작하도록 스토리지 장치(100)를 제어할 수 있다.
스토리지 장치(100)는 내구도가 대응되는 카운트 값보다 작은 암호화 키에 대해 락 모드(Lock mode)로 동작할 수 있다. 예를 들어, 스토리지 장치(100)는 제4 및 제5 암호화 키에 대해 락 모드로 동작할 수 있다.
일 실시 예에서, 특정한 암호화 키에 대한 내구도가 대응되는 카운트 값보다 작은 경우, 그 암호화 키에 대한 내구도가 소진된 것으로 지칭될 수 있다.
비보호 모드(Unprotect mode), 보호 모드(Protect mode), 및 락 모드(Lock mode)의 스토리지 장치(100)의 동작 방법은 앞서 도 1 내지 도 6, 도 7a 및 도 7b를 참조하여 설명된 것과 유사하므로 상세한 설명은 생략된다.
일 실시 예에서, 스토리지 장치(100)는 특정한 암호화 키의 내구도가 만료되기 전, 호스트(10)의 제어에 응답하여 내구도를 증가시키거나 카운터의 값을 감소시킬 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(10)로부터 리커버리 커맨드(recovery command)를 수신하여 대응되는 암호화 키에 대한 내구도를 증가시키거나, 카운터의 값을 감소시킬 수 있다.
일 실시 예에서, 리커버리 커맨드는 내구도를 증가시키거나 카운터의 값을 감소시킬 암호화 키에 대한 키 식별자를 포함할 수 있다.
일 실시 예에서, 리커버리 커맨드는 프라이빗 키로 암호화될 수 있다. 예를 들어, 리커버리 커맨드는 암호화된 키 식별자를 포함할 수 있다.
도 12는 도 10의 스토리지 컨트롤러를 포함하는 도 1의 스토리지 장치의 동작 방법을 보여주는 흐름도이다. 도 1, 도 10 내지 도 12를 참조하면, S21 단계에서, 스토리지 장치(100)는 호스트(10)의 제어에 기초하여 암호화 키에 대한 내구도를 설정할 수 있다. 이하에서는 제1 암호화 키에 대해 내구도가 설정된 실시 예가 대표적으로 설명된다.
S22 단계에서, 스토리지 장치(100)는 내구도가 설정된 암호화 키와 관련된 커맨드를 수신할 수 있다. 즉, 스토리지 장치(100)는 호스트(10)로부터 암호화 키와 관련된 액세스를 수신할 수 있다. 예를 들어, 스토리지 장치(100)는 제1 암호화 키와 대응되는 키 식별자를 포함하는 커맨드를 수신할 수 있다.
S23 단계에서, 스토리지 장치(100)는 내구도와 카운트의 값을 비교할 수 있다. 예를 들어, 키 매니저(212c)는 제1 암호화 키에 대한 내구도와 제1 암호화 키에 대한 카운트의 값을 비교할 수 있다.
일 실시 예에서, 카운트의 값이 내구도보다 작거나 같은 경우, 이하의 S24 및 S25 단계가 수행될 수 있다. S24 단계에서, 스토리지 장치(100)는 일반적인 동작을 수행할 수 있다. 즉, 스토리지 장치(100)는 호스트(10)로부터 수신된 커맨드에 따라 동작할 수 있다. 예를 들어, S22 단계에서 수신된 커맨드가 읽기 커맨드인 경우, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(120)로부터 데이터를 읽을 수 있다.
S25 단계에서, 스토리지 장치(100)는 카운트의 값을 1 증가시킬 수 있다. 예를 들어, 카운터(212b)는 제1 암호화 키에 대한 카운트의 값을 1만큼 증가시킬 수 있다.
일 실시 예에서, 카운트의 값이 내구도보다 큰 경우, 이하의 S26 단계가 수행될 수 있다. S26 단계에서, 스토리지 장치(100)는 데이터 보호 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 암호화 키에 대한 데이터 보호 동작을 수행할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(210)가 암호화 키에 대해 내구도를 설정함으로써 스토리지 장치(100)의 보안성이 향상될 수 있다. 예를 들어, 호스트(10)가 해킹된 후 특정한 암호화 키에 대한 리커버리 커맨드를 송신하지 않는 경우, 스토리지 장치(100)는 그 암호화 키에 대한 내구도가 소진된 후 락 모드로 진입할 수 있다. 이 경우, 스토리지 장치(100)에 저장된 데이터에 대해 해킹된 호스트로부터의 액세스가 차단되므로, 호스트가 해킹된 경우에도 스토리지 장치(100)의 데이터가 보호될 수 있다.
도 13은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터의 예를 보여주는 블록도이다. 데이터 센터(2000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(200)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(2100_1~2100_n)의 개수 및 복수의 스토리지 서버들(2200_1~2200_m)의 개수는 다양하게 변형될 수 있다.
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(2200_1)의 예시가 설명된다. 나머지 스토리지 서버들(2200_2~2200_m) 및 복수의 애플리케이션 서버들(2100_1~2100_n) 각각은 제1 스토리지 서버(2200_1)와 유사한 구조를 가질 수 있다.
제1 스토리지 서버(2200_1)는 프로세서(2210_1), 메모리(2220_1), 스위치(2230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(2240_1), 및 스토리지 장치(2250_1)를 포함할 수 있다. 프로세서(2210_1)는 제1 스토리지 서버(2200_1)의 전반적인 동작을 제어할 수 있다. 메모리(2220_1)는 프로세서(2210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(2210_1)는 메모리(2220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 일 실시 예에서, 메모리(2220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다.
일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1) 및 메모리(2220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(2200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 서로 다를 수 있다. 프로세서(2210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
스위치(2230_1)는 프로세서(2210_1)의 제어에 따라 프로세서(2210_1) 및 스토리지 장치(2250_1) 사이를 선택적으로 연결시키거나 또는 NIC(2240_1) 및 스토리지 장치(2250_1) 사이를 선택적으로 연결시킬 수 있다.
NIC(2240_1)는 제1 스토리지 서버(2200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(2240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(2240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2210_1) 또는 스위치(2230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 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) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, NIC(2240_1)는 프로세서(2210_1), 스위치(2230_1), 및 스토리지 장치(2250_1) 중 적어도 하나와 통합될 수도 있다.
스토리지 장치(2250_1)는 프로세서(2210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(2250_1)는 컨트롤러(2251_1), 불휘발성 메모리(2252_1), DRAM(2253_1), 및 인터페이스(2254_1)를 포함할 수 있다. 일 실시 예에서, 스토리지 장치(2250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 더 포함할 수 있다.
컨트롤러(2251_1)는 스토리지 장치(2250_1)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 컨트롤러(2251_1)는 SRAM을 포함할 수 있다. 컨트롤러(2251_1)는 인터페이스(2254_1)를 통해 수신된 신호들에 응답하여 불휘발성 메모리(2252_1)에 데이터를 저장하거나 또는 불휘발성 메모리(2252_1)에 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 컨트롤러(2251_1)는 토글 인터페이스 또는 ONFI 인터페이스를 기반으로 불휘발성 메모리(2252_1)를 제어하도록 구성될 수 있다.
DRAM(2253_1)은 불휘발성 메모리(2252_1)에 저장될 데이터 또는 불휘발성 메모리(2252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(2253_1)은 컨트롤러(2251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(2254_1)는 프로세서(2210_1), 스위치(2230_1), 또는 NIC(2240_1)와 컨트롤러(2251_1) 사이의 물리적 연결을 제공할 수 있다. 일 실시 예에서, 인터페이스(2254_1)는 스토리지 장치(2250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 일 실시 예에서, 인터페이스(2254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다.
상술된 제1 스토리지 서버(2200_1)의 구성들은 예시적인 것이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(2200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 일 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 각각에서, 스토리지 장치(2150_1)는 선택적으로 생략될 수 있다.
복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(2200_1~2200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
일 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(2100_1~2100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다.
예를 들어, 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(2100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
즉, 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 2100_n)의 메모리(2120_n) 또는 스토리지 장치(2150_n)를 액세스할 수 있다. 또는 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(2200_1)의 메모리(2220_1) 또는 스토리지 장치(2250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2~2100_n) 또는 복수의 스토리지 서버들(2200_1~2200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2~2100_n) 또는 복수의 스토리지 서버들(2200_1~2200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(2200_1~2200_m)의 스토리지 장치들(2250_1~2250_m)로부터 스토리지 서버들(2200_1~2200_m)의 메모리들(2220_1~2220_m)을 거치거나 또는 직접 애플리케이션 서버들(2100_1~2100_n)의 메모리들(2120_1~2120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
일 실시 예에서, 상술된 스토리지 서버들(2200_1~2200_m) 또는 스토리지 장치들(2150_1~2150_n, 2250_1~2250_m)은 본 개시의 실시 예에 따른 보안 모듈을 포함할 수 있다. 즉, 스토리지 서버들(2200_1~2200_m) 또는 스토리지 장치들(2150_1~2150_n, 2250_1~2250_m) 중 적어도 하나는 도 1 내지 도 12를 참조하여 설명된 방식에 기초하여, 암호화 키에 대한 데이터 보호 동작을 수행하도록 구성될 수 있다.
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 본 개시의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
1: 스토리지 시스템
10: 호스트
100: 스토리지 장치
110: 스토리지 컨트롤러
111: 암호화 모듈
112: 보안 모듈
120: 불휘발성 메모리 장치

Claims (20)

  1. 불휘발성 메모리 장치를 포함하고, 암호화 키에 기초하여 호스트와 통신하도록 구성된 스토리지 장치의 동작 방법에 있어서,
    상기 호스트로부터 수신된 제1 커맨드에 기초하여 제1 암호화 키에 대한 제1 키 식별자 및 제1 라이프 타임을 설정하는 단계; 및
    상기 제1 라이프 타임이 만료된 후, 상기 호스트로부터 상기 제1 키 식별자를 포함하는 제2 커맨드가 수신된 경우 상기 제1 암호화 키에 대한 데이터 보호 동작을 수행하는 단계를 포함하는 방법.
  2. 제1 항에 있어서,
    상기 데이터 보호 동작을 수행하는 단계는:
    상기 제2 커맨드에 응답하여 상기 호스트로 에러를 반환하는 단계를 포함하는 방법.
  3. 제1 항에 있어서,
    상기 데이터 보호 동작을 수행하는 단계는,
    상기 제2 커맨드에 응답하여 상기 호스트로 더미 응답을 반환하는 단계를 포함하는 방법.
  4. 제3 항에 있어서,
    상기 제2 커맨드가 읽기 커맨드인 경우,
    상기 더미 응답은 가비지 데이터를 포함하는 방법.
  5. 제1 항에 있어서,
    상기 제1 라이프 타임이 만료되기 전, 상기 호스트로부터 상기 제1 암호화 키에 대한 연장 커맨드를 수신함에 응답하여, 상기 제1 라이프 타임을 연장하는 단계를 더 포함하는 방법.
  6. 제5 항에 있어서,
    상기 연장 커맨드는 상기 호스트 및 상기 스토리지 장치 사이에 공유되는 프라이빗 키(private key)로 암호화된 상기 제1 키 식별자를 포함하는 방법.
  7. 제5 항에 있어서,
    상기 제1 라이프 타임이 만료된 후, 상기 호스트로부터 상기 제1 암호화 키에 대한 갱신 커맨드를 수신하는 단계; 및
    상기 갱신 커맨드에 응답하여, 상기 제1 라이프 타임을 갱신하는 단계를 포함하는 방법.
  8. 제7 항에 있어서,
    상기 갱신 커맨드는 상기 연장 커맨드와 동일하게 구성되는 방법.
  9. 제1 항에 있어서,
    상기 호스트로부터 수신된 제3 커맨드에 기초하여 제2 암호화 키에 대한 제2 키 식별자 및 제2 라이프 타임을 설정하는 단계; 및
    상기 제2 라이프 타임이 만료된 후, 상기 호스트로부터 상기 제2 키 식별자를 포함하는 제4 커맨드가 수신된 경우 상기 제2 암호화 키에 대한 데이터 보호 동작을 수행하는 단계를 더 포함하는 방법.
  10. 제9 항에 있어서,
    상기 제1 및 제2 라이프 타임들이 만료되기 전, 상기 호스트로부터 수신된 연장 커맨드에 응답하여, 상기 제1 라이프 타임 및 상기 제2 라이프 타임을 연장하는 단계를 더 포함하는 방법.
  11. 불휘발성 메모리 장치; 및
    호스트와 암호화 키에 기초하여 통신하고, 상기 호스트의 제어에 기초하여 상기 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는:
    상기 호스트로부터 제공된 제1 암호화 키에 대해 제1 라이프 타임을 설정하고, 상기 제1 라이프 타임이 만료된 후 상기 호스트로부터 상기 제1 암호화 키와 관련된 제1 커맨드를 수신함에 응답하여, 상기 호스트로 에러 또는 더미 응답을 반환하도록 구성되는 스토리지 장치.
  12. 제11 항에 있어서,
    상기 스토리지 컨트롤러는:
    상기 제1 암호화 키 및 상기 제1 라이프 타임을 저장하는 키 스토리지;
    상기 제1 라이프 타임이 설정된 후 경과된 시간을 측정하는 타이머; 및
    상기 제1 라이프 타임의 만료 여부를 판별하도록 구성된 키 매니저를 포함하는 스토리지 장치.
  13. 제11 항에 있어서,
    상기 스토리지 컨트롤러는:
    상기 제1 라이프 타임이 만료되기 전, 상기 호스트로부터 상기 제1 암호화 키에 대한 연장 커맨드를 수신함에 응답하여 상기 제1 라이프 타임을 연장하도록 더 구성되는 스토리지 장치.
  14. 제13 항에 있어서,
    상기 스토리지 컨트롤러는 상기 제1 암호화 키에 대한 제1 키 식별자를 저장하도록 더 구성되고,
    상기 연장 커맨드는 프라이빗 키로 암호화된 상기 제1 키 식별자를 포함하는 스토리지 장치.
  15. 제11 항에 있어서,
    상기 스토리지 컨트롤러는:
    상기 호스트로부터 제공된 제2 암호화 키에 대해 제2 라이프 타임을 설정하고,
    상기 제2 라이프 타임이 만료된 후 상기 호스트로부터 상기 제2 암호화 키와 관련된 제2 커맨드를 수신함에 응답하여, 상기 호스트로 에러 또는 가비지 데이터를 반환하도록 더 구성되는 스토리지 장치.
  16. 불휘발성 메모리 장치를 포함하는 스토리지 장치;
    제1 암호화 키, 상기 제1 암호화 키에 대한 제1 키 식별자, 및 상기 제1 암호화 키에 대한 제1 라이프 타임을 설정하기 위한 제1 커맨드를 상기 스토리지 장치로 송신하는 호스트를 포함하고,
    상기 제1 라이프 타임이 만료된 후 상기 호스트로부터 상기 제1 암호화 키에 대한 액세스가 발생하는 경우, 상기 스토리지 장치는 에러 또는 더미 응답을 상기 호스트로 반환하도록 구성되는 스토리지 시스템.
  17. 제16 항에 있어서,
    상기 스토리지 장치는:
    상기 제1 암호화 키 및 상기 제1 라이프 타임을 저장하는 키 스토리지;
    상기 제1 라이프 타임이 설정된 후 경과된 시간을 측정하는 타이머; 및
    상기 제1 라이프 타임의 만료 여부를 판별하도록 구성된 키 매니저를 포함하는 스토리지 시스템.
  18. 제16 항에 있어서,
    상기 액세스는, 상기 제1 키 식별자를 포함하는 읽기 커맨드, 쓰기 커맨드, 및 소거 커맨드 중 하나인 스토리지 시스템.
  19. 제18 항에 있어서,
    상기 액세스가 상기 제1 키 식별자를 포함하는 읽기 커맨드인 경우,
    상기 더미 응답은 가비지 데이터인 스토리지 시스템.
  20. 제16 항에 있어서,
    상기 제1 라이프 타임이 만료되기 전 상기 호스트가 상기 제1 라이프 타임을 연장하기 위한 제2 커맨드를 송신하는 스토리지 시스템.
KR1020220043054A 2021-11-16 2022-04-06 스토리지 장치 및 그것의 동작 방법 KR20230071695A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/938,291 US20230152987A1 (en) 2021-11-16 2022-10-05 Storage device and operation method thereof
EP22204003.2A EP4180997A1 (en) 2021-11-16 2022-10-27 Storage device and operation method thereof
CN202211425820.6A CN116136746A (zh) 2021-11-16 2022-11-14 存储设备及其操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210157135 2021-11-16
KR20210157135 2021-11-16

Publications (1)

Publication Number Publication Date
KR20230071695A true KR20230071695A (ko) 2023-05-23

Family

ID=86544846

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220043054A KR20230071695A (ko) 2021-11-16 2022-04-06 스토리지 장치 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR20230071695A (ko)

Similar Documents

Publication Publication Date Title
US10997297B1 (en) Validating firmware for data storage devices
KR101457451B1 (ko) 암호화된 전송 고체 상태 디스크 제어기
US10929251B2 (en) Data loss prevention for integrated memory buffer of a self encrypting drive
US11714548B2 (en) System and method for identifying SSDs with lowest tail latencies
US11544205B2 (en) Peer storage devices sharing host control data
WO2015118630A1 (ja) ストレージシステムおよびストレージシステム用キャッシュ制御装置
KR20140128823A (ko) 멀티-트랜잭션의 아토믹 라이트 방법
KR20210121660A (ko) 메모리 시스템 및 그것의 동작 방법
KR20230071695A (ko) 스토리지 장치 및 그것의 동작 방법
EP4180997A1 (en) Storage device and operation method thereof
US20230152987A1 (en) Storage device and operation method thereof
KR102213665B1 (ko) 인증 프로그램을 갖는 메모리 카드, 그것을 포함하는 스토리지 시스템, 및 그것의 동작 방법
KR20230082807A (ko) 스토리지 장치 및 전자 시스템의 동작 방법
CN115017556A (zh) 具有加密功能的存储设备
US9058295B2 (en) Encrypt data of storage device
US20230144135A1 (en) Trusted computing device and operating method thereof
US11914879B2 (en) Storage controller and storage system comprising the same
KR102590439B1 (ko) 메모리 시스템
US20230128638A1 (en) Method of operating storage device and method of operating storage system using the same
US20230152988A1 (en) Storage device and operation method thereof
US20220377054A1 (en) Data storage device data recovery using remote network storage
KR20230071023A (ko) 스토리지 장치 및 이의 동작 방법
KR20230067439A (ko) 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치
TW202321897A (zh) 儲存裝置及其操作方法
CN116108442A (zh) 安全处理器及其操作方法和包括该安全处理器的存储装置