KR102430219B1 - 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법 - Google Patents

스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법 Download PDF

Info

Publication number
KR102430219B1
KR102430219B1 KR1020210123214A KR20210123214A KR102430219B1 KR 102430219 B1 KR102430219 B1 KR 102430219B1 KR 1020210123214 A KR1020210123214 A KR 1020210123214A KR 20210123214 A KR20210123214 A KR 20210123214A KR 102430219 B1 KR102430219 B1 KR 102430219B1
Authority
KR
South Korea
Prior art keywords
key
generator
random number
storage device
salt value
Prior art date
Application number
KR1020210123214A
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 KR1020210123214A priority Critical patent/KR102430219B1/ko
Priority to US17/842,201 priority patent/US20230082136A1/en
Application granted granted Critical
Publication of KR102430219B1 publication Critical patent/KR102430219B1/ko
Priority to EP22189304.3A priority patent/EP4152686A1/en
Priority to CN202211111730.XA priority patent/CN115809488A/zh

Links

Images

Classifications

    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/73Protecting 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 by creating or determining hardware identification, e.g. serial numbers
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time 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
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3278Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response using physically unclonable functions [PUF]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Mathematical Physics (AREA)
  • Read Only Memory (AREA)

Abstract

스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법이 제공된다. 스토리지 장치는, 비휘발성 메모리, 및 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 키 머티리얼(key material)을 생성하는 키 머티리얼 생성기와, 펌웨어로부터 키 아이디를 제공받고, 키 아이디에 매칭되는 솔트(salt) 값이 비휘발성 메모리에 저장된 것에 응답하여, 비휘발성 메모리에 저장된 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 프라이빗 키(private key)를 생성하고, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장되지 않은 것에 응답하여, 펌웨어로부터 솔트 값을 제공받고, 펌웨어로부터 제공받은 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 프라이빗 키를 생성하고, 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리에 저장하는 키 생성기를 포함한다.

Description

스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법{Storage device and method for generating key and performing certification of the storage device}
본 발명은 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법에 관한 것이다.
스토리지 장치에서 비대칭 키 알고리즘(asymmetric-key algorithm) 기반의 암호화 또는 복호화 프로세싱을 수행하기 위해서는 스토리지 장치에 직접 키를 생성하는 기능이 포함되어야 한다.
그런데, 스토리지 장치에서 키를 직접 생성할 경우, 스토리지 장치의 펌웨어가 해킹되는 등의 보안 이슈가 발생할 때 키가 외부로 유출될 위험이 존재한다. 따라서, 이를 방지하기 위한 연구가 필요하다.
한국공개특허 10-2019-0078962호 (2019년 7월 5일 공개)
본 발명이 해결하고자 하는 기술적 과제는 보안 신뢰성이 향상되고 고속으로 키 생성이 가능한 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 보안 신뢰성이 향상되고 고속으로 키 생성이 가능한 스토리지 장치의 키 생성 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 보안 신뢰성이 향상되고 고속으로 키 생성이 가능한 스토리지 장치의 인증 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 비휘발성 메모리, 및 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 키 머티리얼(key material)을 생성하는 키 머티리얼 생성기와, 펌웨어로부터 키 아이디를 제공받고, 키 아이디에 매칭되는 솔트(salt) 값이 비휘발성 메모리에 저장된 것에 응답하여, 비휘발성 메모리에 저장된 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 프라이빗 키(private key)를 생성하고, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장되지 않은 것에 응답하여, 펌웨어로부터 솔트 값을 제공받고, 펌웨어로부터 제공받은 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 프라이빗 키를 생성하고, 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리에 저장하는 키 생성기를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 비휘발성 메모리, 및 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 키 머티리얼(key material)을 생성하는 키 머티리얼 생성기와, 비대칭 키 알고리즘을 이용한 비대칭 암호화 동작을 수행하는 비대칭 암호화 모듈과, 프라이빗 키를 생성하는 키 생성기를 포함하되, 키 생성기는, 펌웨어로부터 솔트 값을 제공받고, 펌웨어로부터 제공받은 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 프라이빗 키를 생성하고, 생성된 프라이빗 키를 비대칭 암호화 모듈에 전송하고, 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리에 저장한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 비휘발성 메모리, 및 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 호스트 장치로부터 인증 요청을 수신하고, 인증 요청에 응답하여, 비휘발성 메모리에 저장된 솔트 값과, 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 생성된 프라이빗 키를 기초로 인증 정보를 생성하고, 인증 정보를 호스트 장치에 전송한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치의 키 생성 방법은, 펌웨어로부터 솔트 값을 수신하고, 키 머티리얼 생성기로부터 키 머티리얼을 수신하고, 펌웨어로부터 제공받은 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 프라이빗 키를 생성하고, 생성된 프라이빗 키를 비대칭 암호화 모듈에 전송하고, 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리에 저장하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치의 키 생성 방법은, 펌웨어로부터 키 아이디를 제공받고, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장된 것에 응답하여, 비휘발성 메모리에 저장된 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 제1 프라이빗 키(private key)를 생성하고, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장되지 않은 것에 응답하여, 펌웨어로부터 솔트 값을 제공받고, 펌웨어로부터 제공받은 솔트 값과 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 제2 프라이빗 키를 생성하고, 제2 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리에 저장하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치의 인증 방법은, 호스트 장치로부터 인증 요청을 수신하고, 인증 요청에 응답하여, 비휘발성 메모리에 저장된 솔트 값과, 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 생성된 프라이빗 키를 기초로 인증 정보를 생성하고, 인증 정보를 호스트 장치에 전송하는 것을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 메모리 시스템을 도시한 블록도이다.
도 2는 도 1의 키 생성기를 도시한 도면이다.
도 3은 도 1의 스토리지 장치의 스토리지 컨트롤러와 비휘발성 메모리를 재구성한 도면이다.
도 4는 도 1의 스토리지 컨트롤러, 메모리 인터페이스 및 비휘발성 메모리를 재구성하여 도시한 도면이다.
도 5은 도 4의 비휘발성 메모리를 나타내는 예시적인 블록도이다.
도 6은 몇몇 실시예에 따른 비휘발성 메모리에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다.
도 7은 몇몇 실시예에 따른 키 생성기의 프라이빗 키 생성 동작을 설명하기 위한 순서도이다.
도 8 내지 도 13은 키 생성기의 프라이빗 키 생성 동작을 설명하기 위한 도면들이다.
도 14는 몇몇 실시예에 따른 스토리지 장치의 인증 동작을 설명하기 위한 순서도이다.
도 15는 몇몇 실시예에 따른 스토리지 장치의 인증 동작을 설명하기 위한 도면이다.
도 16은 몇몇 실시예에 따른 스토리지 장치가 적용된 데이터 센터를 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 메모리 시스템을 도시한 블록도이다. 도 2는 도 1의 키 생성기를 도시한 도면이다.
도 1을 참조하면, 메모리 시스템(10)은 호스트 장치(100) 및 스토리지 장치(200)를 포함할 수 있다. 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리(NVM, 220)를 포함할 수 있다. 호스트 장치(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트 장치(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 예를 들어, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 예를 들어, NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다.
스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트 장치(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 비휘발성 메모리(220)가 플래시 메모리를 포함할 때, 이러한 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리를 포함할 수 있다.
몇몇 실시예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또한, 몇몇 실시예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 이러한 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 어플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 버퍼 영역의 데이터(예컨대, 라이트 데이터)를 비휘발성 메모리(220)에 저장하거나, 비휘발성 메모리(220)의 데이터(예컨대, 리드 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 프로세서(213a), 플래시 변환 레이어(Flash Translation Layer(FTL), 213b), 키 생성기(214), 패킷 매니저(215), 버퍼 메모리(216a), ECC(error correction code) 엔진(216b), AES(advanced encryption standard) 엔진(216c), 키 머티리얼(key material) 생성기(217) 및 비대칭 암호화 모듈(218)을 포함할 수 있다.
스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 213b)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 프로세서(213a)가 플래시 변환 레이어(213b)를 실행하는 것에 의해 비휘발성 메모리(220)에 대한 데이터 라이트 및 리드 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트 장치(100)와 패킷(packet)을 송수신할 수 있다. 호스트 장치(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(220)에 라이트될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트 장치(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(220)로부터 리드된 데이터 등을 포함할 수 있다.
메모리 인터페이스(212)는 비휘발성 메모리(220)에 라이트될 데이터를 비휘발성 메모리(220)로 송신하거나, 비휘발성 메모리(220)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 레이어(213b)는 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다.
웨어-레벨링은 비휘발성 메모리(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
키 생성기(214)는 비대칭 암호화 모듈(218)의 동작에 필요한 프라이빗 키(private key)를 생성할 수 있다. 키 생성기(214)가 프라이빗 키를 생성하는데 이용된 솔트 값(salt value)(ST)은 비휘발성 메모리(220)에 저장될 수 있다. 몇몇 실시예에서, 이러한 키 생성기(214)는 하드웨어로 구현될 수 있으나, 실시예가 이에 제한되는 것은 아니다.
도 2를 참조하면, 키 생성기(214)는 시드(seed) 생성기(214a), 랜덤 넘버 생성기(214b), 키 계산기(214c), 유효 키 검증기(214d)를 포함할 수 있다.
시드 생성기(214a)는 스토리지 장치(도 1의 200)를 구동하는 펌웨어(firmware)로부터 제공받은 솔트 값(salt value)과 키 머티리얼 생성기(도 1의 217)로부터 제공받은 키 머티리얼(key material)을 기초로 시드(seed)를 생성할 수 있다.
몇몇 실시예에서, 시드 생성기(214a)는 펌웨어로부터 제공받은 솔트 값과 키 머티리얼 생성기(도 1의 217)로부터 제공받은 키 머티리얼에 대한 해시 값(hash value)을 시드로 생성할 수 있으나, 실시예가 이에 제한되는 것은 아니다.
랜덤 넘버 생성기(214b)는 시드 생성기(214a)가 생성한 시드를 기초로 랜덤 넘버(random number)를 생성할 수 있다.
몇몇 실시예에서, 랜덤 넘버 생성기(214b)는 DRBG(Deterministic Random Bit Generator)를 포함할 수 있다. 랜덤 넘버 생성기(214b)가 DRBG를 포함하는 경우, 랜덤 넘버 생성기(214b)는 동일한 시드(입력)에 대해서 결정론적 알고리즘을 통해 동일한 결과 값을 생성할 수 있다.
몇몇 실시예에서, 랜덤 넘버 생성기(214b)는 시드 생성기(214a)가 생성한 시드를 기초로 제1 랜덤 넘버와 제2 랜덤 넘버를 생성할 수 있다. 그리고, 랜덤 넘버 생성기(214b)는 생성된 제1 랜덤 넘버와 제2 랜덤 넘버가 각각 프라이빗 키 생성에 적절한 수인지 확인할 수 있다. 몇몇 실시예에서, 랜덤 넘버 생성기(214b)는 생성된 제1 랜덤 넘버와 제2 랜덤 넘버가 각각 소수(prime number)인지 확인하여, 제1 및 제2 랜덤 넘버가 각각 소수인 경우, 제1 및 제2 랜덤 넘버를 키 계산기(214c)에 제공할 수 있다. 반대로, 제1 및 제2 랜덤 넘버가 각각 소수가 아닌 경우, 랜덤 넘버 생성기(214b)는 제1 랜덤 넘버와 제2 랜덤 넘버를 다시 생성할 수 있다.
키 계산기(214c)는 랜덤 넘버 생성기(214b)가 생성한 랜덤 넘버를 기초로 프리미티브 키(primitive key)를 생성할 수 있다. 예를 들어, 키 계산기(214c)는 랜덤 넘버 생성기(214b)가 생성한 랜덤 넘버를 입력받고 미리 정한 연산을 수행하여 프리미티브 키를 생성할 수 있다.
유효 키 검증기(214d)는 키 계산기(214c)가 생성한 프리미티브 키가 유효한 키인지 검증할 수 있다. 몇몇 실시예에서, 유효 키 검증기(214d)는 키 계산기(214c)가 생성한 프리미티브 키를 공개 키(public key)와 비교하여 서로 서로소(mutually prime)인지 확인하는 방법으로 검증을 수행할 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
이러한 키 생성기(214)의 동작에 관한 보다 구체적인 설명은 후술한다.
다시 도 1을 참조하면, 패킷 매니저(215)는 호스트 장치(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(packet)을 생성하거나, 호스트 장치(100)로부터 수신된 패킷으로부터 각종 정보를 파싱할 수 있다.
버퍼 메모리(216a)는 비휘발성 메모리(220)에 라이트될 데이터 혹은 비휘발성 메모리(220)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216a)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 실시예에 따라 스토리지 컨트롤러(210)의 외부에 배치될 수도 있다.
ECC 엔진(216b)은 비휘발성 메모리(220)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 예를 들어, ECC 엔진(216b)은 비휘발성 메모리(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 라이트 데이터와 함께 비휘발성 메모리(220) 내에 저장될 수 있다. 비휘발성 메모리(220)로부터의 데이터 리드 시, ECC 엔진(216b)은 리드 데이터와 함께 비휘발성 메모리(220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
AES 엔진(216c)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.
키 머티리얼 생성기(217)는 키 생성기(214)가 프라이빗 키를 생성하는데 필요한 키 머티리얼을 생성할 수 있다. 여기서, 키 머티리얼은 스토리지 장치(200)와 관련된 고유 정보(unique information)일 수 있다. 즉, 스토리지 장치(200)마다 서로 다른 키 머티리얼을 가질 수 있으며, 예를 들어, 제1 스토리지 장치는 제1 키 머티리얼을 생성하고, 제2 스토리지 장치는 제1 키 머티리얼과 다른 제2 키 머티리얼을 생성할 수 있다.
몇몇 실시예에서, 키 머티리얼 생성기(217)는 PUF(Physical Unclonable Function)와 OTP(One Time Password) 중 적어도 하나를 이용하여 이러한 키 머티리얼을 생성할 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
비대칭 암호화 모듈(218)은 비대칭 키 알고리즘(asymmetric-key algorithm)을 이용한 비대칭 암호화 동작을 수행할 수 있다. 이러한 비대칭 암호화 모듈(218)의 동작은 대칭 키 알고리즘을 이용하여 암호화 동작을 수행하는 AES 엔진(216c)과 구별될 수 있다.
키 생성기(214)가 생성한 프라이빗 키는 비대칭 암호화 모듈(218) 내에 보관될 수 있으며, 비대칭 암호화 모듈(218)의 암호화 동작에 사용될 수 있다.
도 3은 도 1의 스토리지 장치의 스토리지 컨트롤러와 비휘발성 메모리를 재구성한 도면이다.
도 3을 참조하면, 스토리지 장치(200)는 비휘발성 메모리(220) 및 스토리지 컨트롤러(210)를 포함할 수 있다. 스토리지 장치(200)는 복수의 채널들(CH1~CHm)을 지원할 수 있고, 비휘발성 메모리(220)와 스토리지 컨트롤러(210)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 스토리지 장치(200)는 SSD(Solid State Drive)와 같은 스토리지 장치로 구현될 수 있다.
비휘발성 메모리(220)는 복수의 비휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVM1n)은 웨이들(W11~W1n)을 통해 제1 채널(CH1)에 연결되고, 비휘발성 메모리 장치들(NVM21~NVM2n)은 웨이들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있다. 예시적인 실시 예에서, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 스토리지 컨트롤러(210)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
스토리지 컨트롤러(210)는 복수의 채널들(CH1~CHm)을 통해 비휘발성 메모리(220)와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 채널들(CH1~CHm)을 통해 비휘발성 메모리(220)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 비휘발성 메모리(220)로 전송하거나, 비휘발성 메모리(220)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
스토리지 컨트롤러(210)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리 장치들 중 하나를 선택하고, 선택된 비휘발성 메모리 장치와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)에 연결된 비휘발성 메모리 장치들(NVM11~NVM1n) 중 비휘발성 메모리 장치(NVM11)를 선택할 수 있다. 스토리지 컨트롤러(210)는 선택된 비휘발성 메모리 장치(NVM11)로 제1 채널(CH1)을 통해 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)를 전송하거나, 선택된 비휘발성 메모리 장치(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.
스토리지 컨트롤러(210)는 서로 다른 채널들을 통해 비휘발성 메모리(220)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 비휘발성 메모리(220)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 비휘발성 메모리(220)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)을 통해 비휘발성 메모리(220)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 비휘발성 메모리(220)로부터 데이터(DATAb)를 수신할 수 있다.
스토리지 컨트롤러(210)는 비휘발성 메모리(220)의 전반적인 동작을 제어할 수 있다. 스토리지 컨트롤러(210)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 비휘발성 메모리 장치들(NVM11~NVMmn) 각각을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송하여 비휘발성 메모리 장치들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.
비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 스토리지 컨트롤러(210)의 제어에 따라 동작할 수 있다. 예를 들어, 비휘발성 메모리 장치(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)에 따라 데이터(DATAa)를 프로그램(또는 라이트)할 수 있다. 예를 들어, 비휘발성 메모리 장치(NVM21)는 제2 채널(CH2)로 제공되는 커맨드(CMDb) 및 어드레스(ADDRb)에 따라 데이터(DATAb)를 리드하고, 리드된 데이터(DATAb)를 스토리지 컨트롤러(210)로 전송할 수 있다.
도 3에는 비휘발성 메모리(220)가 m개의 채널을 통해 스토리지 컨트롤러(210)와 통신하고, 비휘발성 메모리(220)가 각각의 채널에 대응하여 n개의 비휘발성 메모리 장치를 포함하는 것으로 도시되나, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리 장치의 개수는 다양하게 변경될 수 있다. 앞서 설명한 도 1의 솔트 값(ST)은 이러한 데이터(DATAa~DATAm)의 형태로 비휘발성 메모리(220)에 전달되어 저장될 수 있다.
도 4는 도 1의 스토리지 컨트롤러, 메모리 인터페이스 및 비휘발성 메모리를 재구성하여 도시한 도면이다. 도 1의 메모리 인터페이스(212)는 도 4의 컨트롤러 인터페이스 회로(212a)를 포함할 수 있다.
비휘발성 메모리(220)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(212b), 제어 로직 회로(510), 및 메모리 셀 어레이(520)를 포함할 수 있다.
메모리 인터페이스 회로(212b)는 제1 핀(P11)을 통해 스토리지 컨트롤러(210)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(212b)는 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(212b)는 제2 내지 제4 핀들(P12~P14)을 통해 스토리지 컨트롤러(210)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 제7 핀(P17)을 통해 스토리지 컨트롤러(210)로부터 데이터 신호(DQ)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수 개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(212b)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(212b)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
몇몇 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(212b)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(212b)는 제5 핀(P15)을 통해 스토리지 컨트롤러(210)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 제6 핀(P16)을 통해 스토리지 컨트롤러(210)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(212b)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(212b)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(212b)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(210)로 전송될 수 있다. 앞서 설명한 비휘발성 메모리(220)에 저장된 도 1의 솔트 값(ST)은 이러한 동작을 통해 스토리지 컨트롤러(210)에 제공될 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 입력 동작에서, 스토리지 컨트롤러(210)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(212b)는 스토리지 컨트롤러(210)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(212b)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다. 앞서 설명한 비휘발성 메모리(220)에 저장된 도 1의 솔트 값(ST)은 이러한 동작을 통해 스토리지 컨트롤러(210)로부터 비휘발성 메모리(220)에 저장될 수 있다.
메모리 인터페이스 회로(212b)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 메모리 인터페이스 회로(212b)는 레디/비지 출력 신호(nR/B)를 통해 비휘발성 메모리(220)의 상태 정보를 스토리지 컨트롤러(210)로 전송할 수 있다. 비휘발성 메모리(220)가 비지 상태인 경우(즉, 비휘발성 메모리(220) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(212b)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 비휘발성 메모리(220)가 레디 상태인 경우(즉, 비휘발성 메모리(220) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(212b)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다.
예를 들어, 비휘발성 메모리(220)가 페이지 리드 명령에 응답하여 메모리 셀 어레이(520)로부터 데이터(DATA)를 리드하는 동안, 메모리 인터페이스 회로(212b)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 예를 들어, 비휘발성 메모리(220)가 프로그램 명령에 응답하여 메모리 셀 어레이(520)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(212b)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다.
제어 로직 회로(510)는 비휘발성 메모리(220)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(510)는 메모리 인터페이스 회로(212b)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(510)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 비휘발성 메모리(220)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(510)는 메모리 셀 어레이(520)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(520)로부터 데이터(DATA)를 리드하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(520)는 제어 로직 회로(510)의 제어에 따라 메모리 인터페이스 회로(212b)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(520)는 제어 로직 회로(510)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(212b)로 출력할 수 있다.
메모리 셀 어레이(520)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
스토리지 컨트롤러(210)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(212a)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 비휘발성 메모리(220)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제1 핀(P21)을 통해 비휘발성 메모리(220)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 칩 인에이블 신호(nCE)를 통해 선택한 비휘발성 메모리(220)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 비휘발성 메모리(220)로 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 제7 핀(P27)을 통해 비휘발성 메모리(220)로 데이터 신호(DQ)를 전송하거나, 비휘발성 메모리(220)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(212a)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제5 핀(P25)을 통해 비휘발성 메모리(220)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 제6 핀(P26)을 통해 비휘발성 메모리(220)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 비휘발성 메모리(220)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(212a)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 비휘발성 메모리(220)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(212a)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 비휘발성 메모리(220)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(212a)는 비휘발성 메모리(220)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(212a)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 앞서 설명한 비휘발성 메모리(220)에 저장된 도 1의 솔트 값(ST)은 이러한 동작을 통해 스토리지 컨트롤러(210)에 제공될 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(212a)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(212a)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(212a)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송할 수 있다. 앞서 설명한 비휘발성 메모리(220)에 저장된 도 1의 솔트 값(ST)은 이러한 동작을 통해 스토리지 컨트롤러(210)로부터 비휘발성 메모리(220)에 저장될 수 있다.
컨트롤러 인터페이스 회로(212a)는 제8 핀(P28)을 통해 비휘발성 메모리(220)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(212a)는 레디/비지 출력 신호(nR/B)에 기초하여 비휘발성 메모리(220)의 상태 정보를 판별할 수 있다.
도 5은 도 4의 비휘발성 메모리를 나타내는 예시적인 블록도이다.
도 5를 참조하면, 비휘발성 메모리(220)는 제어 로직 회로(510), 메모리 셀 어레이(520), 페이지 버퍼부(550), 전압 생성기(530), 및 로우 디코더(540)를 포함할 수 있다. 도 5에는 도시되지 않았으나, 비휘발성 메모리(220)는 도 4에 도시된 메모리 인터페이스 회로(212b)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.
제어 로직 회로(510)는 비휘발성 메모리(220) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(510)는 메모리 인터페이스 회로(도 4의 212b)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(510)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(520)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(520)는 비트 라인들(BL)을 통해 페이지 버퍼부(550)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(540)에 연결될 수 있다.
예시적인 실시 예에서, 메모리 셀 어레이(520)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 예시적인 실시 예에서, 메모리 셀 어레이(520)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼부(550)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼부(550)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼부(550)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼부(550)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 리드 동작 시, 페이지 버퍼부(550)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(530)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 리드, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(530)는 워드 라인 전압(VWL)으로서 프로그램 전압, 리드 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(540)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(540)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 리드 동작 시, 선택된 워드 라인으로 리드 전압을 인가할 수 있다.
도 6은 몇몇 실시예에 따른 비휘발성 메모리에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다. 스토리지 장치의 스토리지 모듈이 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 스토리지 모듈을 구성하는 복수의 메모리 블록 각각은 도 6에 도시된 것과 같은 등가 회로로 표현될 수 있다.
도 6에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 6을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 6에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 6에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
도 7은 몇몇 실시예에 따른 키 생성기의 프라이빗 키 생성 동작을 설명하기 위한 순서도이다. 도 8 내지 도 13은 키 생성기의 프라이빗 키 생성 동작을 설명하기 위한 도면들이다.
도 7을 참조하면, 프라이빗 키 생성 동작을 시작한다. 이러한 프라이빗 키의 생성 동작은 예를 들어, 스토리지 장치(도 1의 200)가 부트업(boot-up)되거나, 스토리지 장치(도 1의 200)에 파워가 공급되는 시점에 시작될 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니며, 프라이빗 키의 생성 동작은 예를 들어, 호스트 장치(도 1의 100)로부터 제공되는 커맨드나 외부로부터 제공되는 인터럽트 신호 등에 의해 시작될 수도 있다.
도 7을 참조하면, 키 아이디를 제공받는다(S100).
예를 들어, 도 8을 참조하면, 키 생성기(214)는 스토리지 장치를 구동하는 펌웨어(219)로부터 키 아이디(KID)를 제공받을 수 있다. 몇몇 실시예에서, 펌웨어(219)는 카 아이디(KID)를 입력으로 키 생성기(214)를 호출할 수 있다.
도 7을 참조하면, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장되어 있는지 확인한다(S200).
예를 들어, 도 8을 참조하면, 키 생성기(214)는 펌웨어(219)로부터 제공받은 키 아이디(KID)에 매칭되는 솔트 값(ST)이 비휘발성 메모리(220)에 저장되어 있는지 확인할 수 있다.
도 7을 참조하면, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장되어 있지 않으면(S200-N), 미리 정한 프로세스에 따라 프라이빗 키를 생성한다(S300). 반대로, 키 아이디에 매칭되는 솔트 값이 비휘발성 메모리에 저장되어 있다면(S200-Y), 비휘발성 메모리에 저장된 솔트 값을 이용하여 프라이빗 키를 생성한다(S400).
이하, 도 9 내지 도 12를 참조하여, 미리 정한 프로세스에 따라 프라이빗 키를 생성하는 동작(S300)에 대해 먼저 설명한다.
도 9 및 도 10을 참조하면, 키 생성기(214)의 시드 생성기(214a)는 펌웨어(219)로부터 솔트 값(ST)을 제공받는다(S301). 그리고, 키 생성기(214)는 키 머티리얼 생성기(217)로부터 키 머티리얼(KM)을 제공받는다(S302).
여기서, 펌웨어(219)는 솔트 값(ST)을 입력으로 키 생성기(214)를 호출하기 때문에, 펌웨어(219)는 키 머티리얼 생성기(217)가 생성한 키 머티리얼(KM)에 접근할 수 없다. 따라서, 펌웨어(219)가 해킹되는 등의 보안 이슈가 발생하더라도, 키 생성기(214)가 생성하는 프라이빗 키는 안전하게 보호될 수 있다. 즉, 스토리지 장치(200)의 보안 신뢰성이 향상될 수 있다.
여기서, 키 머티리얼(KM)은 스토리지 장치(200)와 관련된 고유 정보일 수 있다. 키 머티리얼(KM)은 예를 들어, PUF와 OTP 중 적어도 하나를 이용하여 생성될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
다음, 도 9 및 도 11을 참조하면, 키 생성기(214)의 시드 생성기(214a)는 펌웨어(219)로부터 제공받은 솔트 값(ST)과, 키 머티리얼 생성기(217)로부터 제공 받은 키 머티리얼(KM)을 기초로 시드를 생성한다(S310).
몇몇 실시예에서, 시드 생성기(214a)는 펌웨어(219)로부터 제공받은 솔트 값(ST)과 키 머티리얼 생성기(217)로부터 제공받은 키 머티리얼(KM)에 대한 해시 값을 시드(seed)로 생성할 수 있으나, 실시예가 이에 제한되는 것은 아니다.
다음, 도 9 및 도 11을 참조하면, 키 생성기(214)의 랜덤 넘버 생성기(214b)는 시드 생성기(214a)가 생성한 시드를 기초로 랜덤 넘버를 생성한다(S320).
몇몇 실시예에서, 랜덤 넘버 생성기(214b)는 DRBG를 포함할 수 있다. 랜덤 넘버 생성기(214b)가 DRBG를 포함하는 경우, 랜덤 넘버 생성기(214b)는 동일한 시드(입력)에 대해서 결정론적 알고리즘을 통해 동일한 결과 값을 생성할 수 있다.
몇몇 실시예에서, 랜덤 넘버 생성기(214b)는 시드 생성기(214a)가 생성한 시드를 기초로 랜덤 넘버 p와 q를 생성할 수 있다(S320). 그리고, 랜덤 넘버 생성기(214b)는 p와 q가 각각 프라이빗 키 생성에 적절한 수인지 확인할 수 있다(S330). 몇몇 실시예에서, 랜덤 넘버 생성기(214b)는 p와 q가 각각 소수인지 확인할 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
랜덤 넘버 생성기(214b)는 p와 q가 각각 소수인지 확인하여, p와 q가 각각 소수인 경우(S330-Y), p와 q를 키 계산기(214c)에 제공한다.
반대로, p와 q가 각각 소수가 아닌 경우(S330-N), 랜덤 넘버 생성기(214b)는 p와 q를 다시 생성한다(S320).
다음, 도 9 및 도 11을 참조하면, 키 생성기(214)의 키 계산기(214c)는 랜덤 넘버 생성기(214b)가 생성한 랜덤 넘버를 기초로 프리미티브 키를 생성한다(S340).
예를 들어, 키 계산기(214c)는 랜덤 넘버 생성기(214b)가 생성한 랜덤 넘버를 입력받고 미리 정한 연산을 수행하여 프리미티브 키를 생성할 수 있다.
다음, 도 9 및 도 11을 참조하면, 키 생성기(214)의 유효 키 검증기(214d)는 키 계산기(214c)가 생성한 프리미티브 키를 검증한다(S350).
예를 들어, 유효 키 검증기(214d)는 키 계산기(214c)가 생성한 프리미티브 키를 공개 키(public key)와 비교하여 서로 서로소(mutually prime)인지 확인할 수 있다.
검증 결과, 키 계산기(214c)가 생성한 프리미티브 키와 공개 키가 서로소가 아니라면(S350-N), 도 12에 도시된 것과 같이, 키 생성기(214)는 펌웨어(219)에 새로운 솔트 값(ST)을 요청한다. 이에 대응하여 펌웨어(219)는 새로운 솔트 값(ST)을 키 생성기(214)에 제공하고, 시드 생성 동작(S310)을 다시 수행하기 위해, 펌웨어(219)가 시드 생성기(214c)에 새로운 솔트 값(ST)을 제공할 수 있다. 예를 들어, 펌웨어(219)는 새로운 솔트 값(ST)을 입력으로 키 생성기(214)를 다시 호출할 수 있다.
검증 결과, 키 계산기(214c)가 생성한 프리미티브 키와 공개 키가 서로소라면(S350-Y), 키 생성기(214)는 프리미티브 키를 이용하여 프라이빗 키를 생성한다(S360).
그리고, 키 생성기(214)는 생성된 프라이빗 키를 비대칭 암호화 모듈(218)에 제공한다(S370). 비대칭 암호화 모듈(218)은 전송받은 프라이빗 키를 그 내부에 보관할 수 있으며, 향후 비대칭 암호화 모듈(218)의 암호화 동작에 이를 사용한다.
그리고, 키 생성기(214)는 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리(220)에 저장한다(S371). 이 때, 솔트 값은 펌웨어로부터 제공받은 키 아이디(도 8의 KID)에 매칭되어 비휘발성 메모리(220)에 저장될 수 있다.
이와 같이 키 생성기(214)가 프라이빗 키 생성에 사용된 솔트 값을 비휘발성 메모리(220)에 저장하는 이유는, 추후 프라이빗 키 생성이 필요할 경우 고속으로 키를 생성하기 위함이다. 만약, 프라이빗 키 생성에 사용된 솔트 값이 비휘발성 메모리(220)에 저장되어 있지 않다면, 스토리지 장치가 부트업(boot up)되거나 파워온(power on)될 때 마다, 앞서 설명한 도 9의 검증 동작(S350)을 수 없이 반복할 수 있다. 이러한 반복 동작은 스토리지 장치의 성능 저하로 이어질 수 있는데, 본 실시예 따른 스토리지 장치에서는 이를 개선할 수 있다.
다시 말해, 스토리지 장치의 펌웨어가 해킹되더라도 보안이 유지되면서 고속으로 암호화 동작에 사용되는 키를 생성할 수 있다.
다음, 도 13을 참조하여, 비휘발성 메모리에 저장된 솔트 값을 이용하여 프라이빗 키를 생성하는 동작(도 7의 S400)에 대해 설명한다.
도 13을 참조하면, 비휘발성 메모리에 저장된 솔트 값이 존재하므로, 키 생성기(214)는 비휘발성 메모리(220)로부터 솔트 값을 제공받는다(S401). 그리고, 키 생성기(214)는 키 머티리얼 생성기(217)로부터 키 머티리얼(KM)을 제공받는다(S402).
그리고, 키 생성기(214)는 비휘발성 메모리(220)로부터 제공받은 솔트 값과 키 머티리얼 생성기(217)로부터 제공받은 키 머티리얼(KM)을 기초로 프라이빗 키를 생성한다(S410). 이에 대한 동작은 도 9에 도시된 동작과 유사하나, 한 번의 검증으로 프라이빗 키가 생성될 수 있다.
이후, 키 생성기(214)는 생성된 프라이빗 키를 비대칭 암호화 모듈(218)에 제공한다(S420). 비대칭 암호화 모듈(218)은 전송받은 프라이빗 키를 그 내부에 보관할 수 있으며, 향후 비대칭 암호화 모듈(218)의 암호화 동작에 이를 사용한다.
도 14는 몇몇 실시예에 따른 스토리지 장치의 인증 동작을 설명하기 위한 순서도이다. 도 15는 몇몇 실시예에 따른 스토리지 장치의 인증 동작을 설명하기 위한 도면이다.
먼저, 도 14를 참조하면, 호스트 장치(100)가 스토리지 컨트롤러(210)에 인증을 요청한다(S500).
인증 요청을 수신한 스토리지 컨트롤러(210)는 프라이빗 키를 이용하여 인증 정보를 생성한다(S510).
예를 들어, 도 15를 참조하면, 펌웨어(219)는 키 아이디(KID)와 예를 들어, 호스트 장치(100)로부터 제공받은 데이터(DT)를 비대칭 암호화 모듈(218)에 제공한다. 예를 들어, 펌웨어(219)는 키 아이디(KID)와 데이터(DT)를 입력으로 비대칭 암호화 모듈(218)을 호출할 수 있다.
비대칭 암호화 모듈(218)은 그 내부에 보관된 프라이빗 키(PK)를 이용하여 데이터(DT)를 암호화하고, 암호화된 결과(CR)를 펌웨어(219)에 전송할 수 있다.
여기서, 비대칭 암호화 모듈(218) 내부에 보관된 프라이빗 키(PK)는 앞서 설명한 동작들을 통해 생성된 프라이빗 키(PK)일 수 있다. 즉, 도 9에 도시된 동작을 통해 생성되었거나, 도 14에 도시된 동작을 통해 생성된 프라이빗 키(PK)일 수 있다.
다음, 도 14를 참조하면, 스토리지 컨트롤러(210)가 프라이빗 키로 암호화된 인증 정보를 호스트 장치(100)에 전송한다(S520). 호스트 장치(100)는 예를 들어, 암호화된 인증 정보를 공개 키를 이용하여 인증할 수 있다.
도 16은 몇몇 실시예에 따른 스토리지 장치가 적용된 데이터 센터를 도시한 도면이다.
도 16을 참조하면, 데이터 센터(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(Fibre 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일 수 있다. 다른 실시예에서, 네트워크(1300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(1300)는 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)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(3200-3200m) 또는 어플리케이션 서버(3100-3100n)에서 프로세서는 스토리지 장치(3130-3130n, 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)로부터 제공될 수 있다. 몇몇 실시예에서, 컨트롤러(3251)는 앞서 설명한 스토리지 컨트롤러(도 1의 210)과 유사한 구성을 가질 수 있다. 몇몇 실시예에서, 컨트롤러(3251)는 앞서 설명한 키 생성기(도 1의 214)를 포함할 수 있다. 낸드 플래시(3252)에는 앞서 설명한 프라이빗 키 생성에 사용된 솔트 값(도 1의 ST)이 저장될 수 있다.
DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트 장치
200: 스토리지 장치
210: 스토리지 컨트롤러
214: 키 생성기

Claims (19)

  1. 호스트 장치로부터 커맨드를 제공받아 데이터를 저장하는 스토리지 장치로서, 상기 스토리지 장치는 그 내부에,
    비휘발성 메모리; 및
    상기 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는,
    키 머티리얼(key material)을 생성하는 키 머티리얼 생성기와,
    펌웨어로부터 키 아이디를 제공받고,
    상기 키 아이디에 매칭되는 솔트(salt) 값이 상기 비휘발성 메모리에 저장된 것에 응답하여, 상기 비휘발성 메모리에 저장된 솔트 값과 상기 키 머티리얼 생성기가 생성한 상기 키 머티리얼을 이용하여 프라이빗 키(private key)를 생성하고,
    상기 키 아이디에 매칭되는 솔트 값이 상기 비휘발성 메모리에 저장되지 않은 것에 응답하여, 상기 펌웨어로부터 솔트 값을 제공받고, 상기 펌웨어로부터 제공받은 솔트 값과 상기 키 머티리얼 생성기가 생성한 상기 키 머티리얼을 이용하여 프라이빗 키를 생성하고, 상기 프라이빗 키 생성에 사용된 상기 솔트 값을 상기 비휘발성 메모리에 저장하는 키 생성기를 포함하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 키 머티리얼은 상기 스토리지 장치와 관련된 고유 정보(unique information)인 스토리지 장치.
  3. 제2항에 있어서,
    상기 키 머티리얼 생성기는, PUF(Physical Unclonable Function)와 OTP(One Time Password) 중 적어도 하나를 이용하여 상기 키 머티리얼을 생성하는 스토리지 장치.
  4. 제1항에 있어서,
    상기 스토리지 컨트롤러는,
    비대칭 키 알고리즘(asymmetric-key algorithm)을 이용한 비대칭 암호화 동작을 수행하는 비대칭 암호화 모듈을 더 포함하고,
    상기 키 생성기는,
    상기 생성된 프라이빗 키를 상기 비대칭 암호화 모듈에 전송하는 스토리지 장치.
  5. 제1항에 있어서,
    상기 키 생성기는,
    상기 펌웨어로부터 제공받은 솔트 값과 상기 키 머티리얼 생성기로부터 제공받은 키 머티리얼을 기초로 시드(seed)를 생성하는 시드 생성기와,
    상기 시드를 기초로 랜덤 넘버(random number)를 생성하는 랜덤 넘버 생성기와,
    상기 랜덤 넘버를 기초로 프리미티브 키(primitive key)를 생성하는 키 계산기와,
    상기 프리미티브 키를 검증하는 유효 키 검증기를 포함하는 스토리지 장치.
  6. 제5항에 있어서,
    상기 시드 생성기는, 상기 펌웨어로부터 제공받은 솔트 값과 상기 키 머티리얼 생성기로부터 제공받은 키 머티리얼에 대한 해시 값(hash value)을 상기 시드로 생성하는 스토리지 장치.
  7. 제5항에 있어서,
    상기 랜덤 넘버 생성기는, 상기 시드를 기초로 제1 랜덤 넘버와 제2 랜덤 넘버를 생성하는 DRBG(Deterministic Random Bit Generator)를 포함하는 스토리지 장치.
  8. 제7항에 있어서,
    상기 랜덤 넘버 생성기는,
    상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버가 각각 소수(prime number)인지 확인하고,
    상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버가 각각 소수인 것에 응답하여, 상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버를 상기 키 계산기에 제공하고,
    상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버가 각각 소수가 아닌 것에 응답하여, 상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버를 다시 생성하는 스토리지 장치.
  9. 제5항에 있어서,
    상기 유효 키 검증기는,
    상기 키 계산기가 생성한 상기 프리미티브 키와 공개 키가 서로소(mutually prime)인지 확인하고,
    상기 키 생성기는,
    상기 프리미티브 키와 상기 공개 키가 서로소인 것에 응답하여, 상기 프리미티브 키를 이용하여 상기 프라이빗 키를 생성하고,
    상기 프리미티브 키와 상기 공개 키가 서로소가 아닌 것에 응답하여, 상기 펌웨어에 새로운 솔트 값을 요청하는 스토리지 장치.
  10. 비휘발성 메모리; 및
    상기 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는,
    키 머티리얼(key material)을 생성하는 키 머티리얼 생성기와,
    비대칭 키 알고리즘을 이용한 비대칭 암호화 동작을 수행하는 비대칭 암호화 모듈과,
    프라이빗 키를 생성하는 키 생성기를 포함하되,
    상기 키 생성기는,
    펌웨어로부터 솔트 값을 제공받고,
    상기 펌웨어로부터 제공받은 솔트 값과 상기 키 머티리얼 생성기가 생성한 상기 키 머티리얼을 이용하여 상기 프라이빗 키를 생성하고,
    상기 생성된 프라이빗 키를 상기 비대칭 암호화 모듈에 전송하고,
    상기 프라이빗 키 생성에 사용된 상기 솔트 값을 상기 비휘발성 메모리에 저장하는 스토리지 장치.
  11. 제10항에 있어서,
    상기 펌웨어는 상기 키 머티리얼 생성기가 생성한 상기 키 머티리얼에 접근할 수 없는 스토리지 장치.
  12. 제10항에 있어서,
    상기 스토리지 컨트롤러는, 상기 스토리지 컨트롤러로 입력되는 데이터에 대한 암호화 동작과 복호화 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행하는 대칭 암호화 모듈을 더 포함하는 스토리지 장치.
  13. 제10항에 있어서,
    상기 키 머티리얼 생성기는, PUF와 OTP 중 적어도 하나를 이용하여 상기 스토리지 장치와 관련된 고유 정보인 상기 키 머티리얼을 생성하는 스토리지 장치.
  14. 제10항에 있어서,
    상기 키 생성기는,
    상기 펌웨어로부터 제공받은 솔트 값과 상기 키 머티리얼 생성기로부터 제공받은 키 머티리얼을 기초로 시드(seed)를 생성하는 시드 생성기와,
    상기 시드를 기초로 랜덤 넘버(random number)를 생성하는 랜덤 넘버 생성기와,
    상기 랜덤 넘버를 기초로 프리미티브 키(primitive key)를 생성하는 키 계산기와,
    상기 프리미티브 키를 검증하는 유효 키 검증기를 포함하는 스토리지 장치.
  15. 제14항에 있어서,
    상기 랜덤 넘버 생성기는,
    상기 시드를 기초로 제1 랜덤 넘버와 제2 랜덤 넘버를 생성하는 DRBG(Deterministic Random Bit Generator)를 포함하고,
    상기 DRBG는,
    상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버가 각각 소수인지 확인하고,
    상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버가 각각 소수인 것에 응답하여, 상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버를 상기 키 계산기에 제공하고,
    상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버가 각각 소수가 아닌 것에 응답하여, 상기 제1 랜덤 넘버와 상기 제2 랜덤 넘버를 다시 생성하는 스토리지 장치.
  16. 제15항에 있어서,
    상기 유효 키 검증기는,
    상기 키 계산기가 생성한 상기 프리미티브 키와 공개 키가 서로소인지 확인하고,
    상기 키 생성기는,
    상기 프리미티브 키와 상기 공개 키가 서로소인 것에 응답하여, 상기 프리미티브 키를 이용하여 상기 프라이빗 키를 생성하고,
    상기 프리미티브 키와 상기 공개 키가 서로소가 아닌 것에 응답하여, 상기 펌웨어에 새로운 솔트 값을 요청하는 스토리지 장치.
  17. 비휘발성 메모리; 및
    상기 비휘발성 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는,
    호스트 장치로부터 인증 요청을 수신하고,
    상기 인증 요청에 응답하여, 상기 비휘발성 메모리에 저장된 솔트 값과, 키 머티리얼 생성기가 생성한 키 머티리얼을 이용하여 생성된 프라이빗 키를 기초로 인증 정보를 생성하고,
    상기 인증 정보를 상기 호스트 장치에 전송하고,
    상기 비휘발성 메모리에 저장된 솔트 값은, 펌웨어로부터 제공받은 복수의 솔트 값 중 상기 프라이빗 키를 생성하는데 이용된 솔트 값인 스토리지 장치.
  18. 제17항에 있어서,
    상기 프라이빗 키는, 상기 호스트 장치로부터의 인증 요청 수신 전에 생성되어, 비대칭 암호화 모듈에 저장되는 스토리지 장치.
  19. 삭제
KR1020210123214A 2021-09-15 2021-09-15 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법 KR102430219B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210123214A KR102430219B1 (ko) 2021-09-15 2021-09-15 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법
US17/842,201 US20230082136A1 (en) 2021-09-15 2022-06-16 Storage device, method for generating key in storage device, and method for performing certification of storage device
EP22189304.3A EP4152686A1 (en) 2021-09-15 2022-08-08 Storage device, method for generating key in storage device, and method for performing certification of storage device
CN202211111730.XA CN115809488A (zh) 2021-09-15 2022-09-13 存储设备、在存储设备中生成密钥和执行认证的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210123214A KR102430219B1 (ko) 2021-09-15 2021-09-15 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법

Publications (1)

Publication Number Publication Date
KR102430219B1 true KR102430219B1 (ko) 2022-08-05

Family

ID=82826516

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210123214A KR102430219B1 (ko) 2021-09-15 2021-09-15 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법

Country Status (4)

Country Link
US (1) US20230082136A1 (ko)
EP (1) EP4152686A1 (ko)
KR (1) KR102430219B1 (ko)
CN (1) CN115809488A (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423789B1 (en) * 2007-05-22 2013-04-16 Marvell International Ltd. Key generation techniques
KR20190078962A (ko) 2017-12-27 2019-07-05 삼성전자주식회사 파일 단위의 암호화 키에 기반하여 암호화를 수행하도록 구성되는 스토리지 장치, 스토리지 시스템, 및 그 동작 방법
KR20200071682A (ko) * 2018-12-10 2020-06-19 마벨 월드 트레이드 리미티드 자체-암호화 드라이브(sed)
KR20210064854A (ko) * 2019-11-26 2021-06-03 삼성전자주식회사 메모리 컨트롤러, 메모리 컨트롤러를 포함하는 스토리지 장치, 및 메모리 컨트롤러의 동작 방법

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307936B1 (en) * 1997-09-16 2001-10-23 Safenet, Inc. Cryptographic key management scheme
US7865730B2 (en) * 2006-01-30 2011-01-04 Kronos Technology Systems Limited Partnership Bcencryption (BCE)—a public-key based method to encrypt a data stream
US7987367B2 (en) * 2006-08-30 2011-07-26 Samsung Electronics Co., Ltd. Method and apparatus for key agreement between devices using polynomial ring
CA2621147C (en) * 2008-02-15 2013-10-08 Connotech Experts-Conseils Inc. Method of bootstrapping an authenticated data session configuration
KR101496975B1 (ko) * 2008-05-28 2015-03-02 삼성전자주식회사 고체 상태 디스크 및 이에 대한 입출력방법
KR20090131696A (ko) * 2008-06-19 2009-12-30 삼성전자주식회사 암/복호화 장치 및 이를 포함하는 보안 저장 장치
KR20100094862A (ko) * 2009-02-19 2010-08-27 삼성전자주식회사 스토리지 장치 및 그것의 데이터 관리 방법
KR101808188B1 (ko) * 2011-07-04 2017-12-13 삼성전자주식회사 이동 기기에 대한 그룹 키 관리를 위한 방법 및 장치
EP2730048A2 (en) * 2011-07-07 2014-05-14 Verayo, Inc. Cryptographic security using fuzzy credentials for device and server communications
KR101878682B1 (ko) * 2011-11-14 2018-07-18 삼성전자주식회사 컨텐츠를 보호하기 위한 방법 및 저장 매체
KR20140050322A (ko) * 2012-10-19 2014-04-29 삼성전자주식회사 사용자 디바이스의 고유 식별자 제공 방법 및 장치
KR20150017844A (ko) * 2013-08-08 2015-02-23 삼성전자주식회사 페이지 구성 방법 및 이를 지원하는 전자 장치
KR20150032970A (ko) * 2013-09-23 2015-04-01 삼성전자주식회사 보안 기능을 제공하는 저장 매체 및 그 보안 방법
EP3051744B1 (en) * 2013-10-28 2019-01-02 Huawei Device (Dongguan) Co., Ltd. Key configuration method and apparatus
KR20150095273A (ko) * 2014-02-13 2015-08-21 삼성전자주식회사 모바일 스토리지의 파일별 암복호화 방법들
US9904651B2 (en) * 2014-07-31 2018-02-27 Samsung Electronics Co., Ltd. Operating method of controller for setting link between interfaces of electronic devices, and storage device including controller
KR102292641B1 (ko) * 2014-12-30 2021-08-23 삼성전자주식회사 메모리 컨트롤러, 그 동작 방법 및 이를 포함하는 메모리 시스템
US10778435B1 (en) * 2015-12-30 2020-09-15 Jpmorgan Chase Bank, N.A. Systems and methods for enhanced mobile device authentication
KR20180013524A (ko) * 2016-07-29 2018-02-07 삼성전자주식회사 전자 장치 및 전자 장치의 생체 정보 인증 방법
US10389688B2 (en) * 2016-08-23 2019-08-20 NXT-Security, LLC Vaultless tokenization engine
WO2018046073A1 (en) * 2016-09-06 2018-03-15 Huawei Technologies Co., Ltd. Apparatus and methods for distributed certificate enrollment
KR20180119201A (ko) * 2017-04-24 2018-11-02 삼성전자주식회사 인증 시스템을 위한 전자 장치
US10917251B2 (en) * 2018-03-30 2021-02-09 Intel Corporation Apparatus and method for generating hybrid static/dynamic entropy physically unclonable function
US10862680B2 (en) * 2018-09-26 2020-12-08 Intel Corporation Encoding process for multiple RSA and ECC keys
US10754619B2 (en) * 2018-09-27 2020-08-25 Intel Corporation Self-calibrated von-neumann extractor
EP3663956A1 (de) * 2018-12-03 2020-06-10 Steen Harbach AG Mikrocontroller
US11636470B2 (en) * 2019-09-25 2023-04-25 Visa International Service Association Key-value map commitments system and method
US11290271B2 (en) * 2020-02-27 2022-03-29 Ford Global Technologies, Llc Secure storage enhancements for authentication systems
US11522686B2 (en) * 2020-07-16 2022-12-06 Salesforce, Inc. Securing data using key agreement
US11728974B2 (en) * 2021-01-29 2023-08-15 Salesforce, Inc. Tenant-based database encryption
US11893141B2 (en) * 2021-02-18 2024-02-06 PUFsecurity Corporation Method and control circuit for managing information of electronic device
US20230032099A1 (en) * 2021-07-15 2023-02-02 Nanyang Technological University Physical unclonable function based mutual authentication and key exchange
JP2023037732A (ja) * 2021-09-06 2023-03-16 キヤノン株式会社 情報処理方法、プログラム及び情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423789B1 (en) * 2007-05-22 2013-04-16 Marvell International Ltd. Key generation techniques
KR20190078962A (ko) 2017-12-27 2019-07-05 삼성전자주식회사 파일 단위의 암호화 키에 기반하여 암호화를 수행하도록 구성되는 스토리지 장치, 스토리지 시스템, 및 그 동작 방법
KR20200071682A (ko) * 2018-12-10 2020-06-19 마벨 월드 트레이드 리미티드 자체-암호화 드라이브(sed)
KR20210064854A (ko) * 2019-11-26 2021-06-03 삼성전자주식회사 메모리 컨트롤러, 메모리 컨트롤러를 포함하는 스토리지 장치, 및 메모리 컨트롤러의 동작 방법

Also Published As

Publication number Publication date
CN115809488A (zh) 2023-03-17
US20230082136A1 (en) 2023-03-16
EP4152686A1 (en) 2023-03-22

Similar Documents

Publication Publication Date Title
KR20230068935A (ko) 스토리지 장치 및 그 구동 방법
US20240045958A1 (en) Anti-malware algorithm and hw/fw for internal ssd health and storage space protection against cyber-attacks
KR102430219B1 (ko) 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법
US11733875B2 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
US11675504B2 (en) Memory controller, memory system including the same, and method of operating the same
CN114546903A (zh) 存储装置和包括其的存储系统
US20230139519A1 (en) Storage device supporting multi-tenant operation and methods of operating same
EP4398111A1 (en) Computational storage device and method for operating the device
US20230141409A1 (en) Storage device and operating method thereof
US12032699B2 (en) Storage device and method of operating the same
US11842076B2 (en) Storage system and operating method for same
EP4184332A1 (en) Storage controller and storage device including the same
US20240220151A1 (en) Computational storage device and method for operating the device
US20230143189A1 (en) Storage device and method of operating the same
US20230195332A1 (en) Storage devices, methods of operating storage devices, and methods of operating host devices
US20240193105A1 (en) Computational storage device and method of operating the same
US11921625B2 (en) Storage device for graph data
US20230114199A1 (en) Storage device
KR102545465B1 (ko) 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치
CN118298877A (en) Computing storage device and method for operating a computing storage device
KR20240108972A (ko) 연산 스토리지 장치 및 그 구동 방법
KR20230067430A (ko) 스토리지 장치 및 그 구동 방법
KR20230068939A (ko) 스토리지 장치 및 그 구동 방법
KR20240057106A (ko) 연산 스토리지 장치 및 그 구동 방법, 호스트 장치의 구동 방법
CN116107799A (zh) 存储设备

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant