KR20230131750A - Storage device and method thereof - Google Patents

Storage device and method thereof Download PDF

Info

Publication number
KR20230131750A
KR20230131750A KR1020220066817A KR20220066817A KR20230131750A KR 20230131750 A KR20230131750 A KR 20230131750A KR 1020220066817 A KR1020220066817 A KR 1020220066817A KR 20220066817 A KR20220066817 A KR 20220066817A KR 20230131750 A KR20230131750 A KR 20230131750A
Authority
KR
South Korea
Prior art keywords
firmware
certificate
signature
storage device
image
Prior art date
Application number
KR1020220066817A
Other languages
Korean (ko)
Inventor
홍유리
노경우
최병찬
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US18/146,363 priority Critical patent/US20230281312A1/en
Priority to CN202310205281.3A priority patent/CN116720228A/en
Publication of KR20230131750A publication Critical patent/KR20230131750A/en

Links

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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

Abstract

일 실시예에 따른 스토리지 장치는, 펌웨어 이미지 영역을 포함하는 메모리, 그리고 펌웨어 서명, 펌웨어 데이터, 및 펌웨어 서명을 검증하기 위한 제1 인증서 공용키 및 펌웨어 핑거프린트를 포함하는 제1 인증서 및 제1 인증서를 검증하기 위한 제2 인증서 공용키를 포함하는 제2 인증서를 포함하는 제1 펌웨어 이미지를 수신하고, 제2 인증서 공용키를 사용하여 제1 인증서를 검증하고, 상기 제1 인증서의 검증이 완료되면, 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하는지 여부를 비교하고, 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하면 제1 인증서 공용키를 사용하여 펌웨어 서명을 검증하고, 펌웨어 서명이 검증되면 제1 펌웨어 이미지를 펌웨어 이미지 영역에 저장하는 메모리 컨트롤러를 포함한다.A storage device according to an embodiment includes a memory including a firmware image area, a firmware signature, firmware data, and a first certificate including a first certificate public key and a firmware fingerprint for verifying the firmware signature, and a first certificate. Receive a first firmware image including a second certificate including a second certificate public key for verifying, verify the first certificate using the second certificate public key, and when verification of the first certificate is completed , Compare whether the hash value of the firmware data and the firmware fingerprint match, and if the hash value of the firmware data and the firmware fingerprint match, the firmware signature is verified using the first certificate public key, and if the firmware signature is verified, the firmware signature is verified. 1 Includes a memory controller that stores the firmware image in the firmware image area.

Description

스토리지 장치 및 이의 동작 방법{STORAGE DEVICE AND METHOD THEREOF}Storage device and method of operation thereof {STORAGE DEVICE AND METHOD THEREOF}

개시 내용은 스토리지 장치 및 이의 동작 방법에 관한 것이다.The disclosure relates to storage devices and methods of operating the same.

스토리지 장치(storage device)는 펌웨어(firmware)를 통해 구동될 수 있다. 펌웨어는 스토리지 장치의 ROM(Read Only Memory)에 저장될 수 있다. 펌웨어는 수정되거나 업데이트될 수 있다.A storage device can be driven through firmware. Firmware may be stored in ROM (Read Only Memory) of a storage device. Firmware may be modified or updated.

스토리지 장치가 호스트로부터 업데이트된 펌웨어 이미지를 제공받으면, 스토리지 장치는 수신한 펌웨어 이미지가 유효한지 여부를 검증할 수 있다. 펌웨어 이미지에 이상이 없는 경우에, 스토리지 장치는 해당 펌웨어 이미지를 이용하여 업데이트를 수행할 수 있다. 스토리지 장치는 스토리지 장치의 롬에 저장된 여러 공용키들 중 OTP 메모리(One-Time Programmable Memory)에 저장된 값이 지시하는 공용키를 사용하여 펌웨어 서명을 검증하여 펌웨어 이미지가 유효한지 여부를 검증할 수 있다. When the storage device receives an updated firmware image from the host, the storage device can verify whether the received firmware image is valid. If there is no problem with the firmware image, the storage device can perform an update using the firmware image. The storage device can verify whether the firmware image is valid by verifying the firmware signature using a public key indicated by a value stored in OTP memory (One-Time Programmable Memory), among several public keys stored in the ROM of the storage device.

일 실시예는 펌웨어 서명을 생성하는 데 사용되는 비밀키가 유출되더라도, OTP 메모리를 업데이트하지 않고, 펌웨어 이미지를 검증할 수 있는 스토리지 장치 및 이의 동작 방법을 제공하고자 한다.One embodiment is intended to provide a storage device and a method of operating the same that can verify a firmware image without updating the OTP memory even if the secret key used to generate the firmware signature is leaked.

이러한 기술적 과제를 해결하기 위한 일 실시예에 따른 스토리지 장치는, 펌웨어 이미지 영역을 포함하는 메모리, 그리고 펌웨어 서명, 펌웨어 데이터, 및 펌웨어 서명을 검증하기 위한 제1 인증서 공용키 및 펌웨어 핑거프린트를 포함하는 제1 인증서 및 제1 인증서를 검증하기 위한 제2 인증서 공용키를 포함하는 제2 인증서를 포함하는 제1 펌웨어 이미지를 수신하고, 제2 인증서 공용키를 사용하여 제1 인증서를 검증하고, 상기 제1 인증서의 검증이 완료되면, 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하는지 여부를 비교하고, 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하면 제1 인증서 공용키를 사용하여 펌웨어 서명을 검증하고, 펌웨어 서명이 검증되면 제1 펌웨어 이미지를 펌웨어 이미지 영역에 저장하는 메모리 컨트롤러를 포함한다.A storage device according to an embodiment to solve this technical challenge includes a memory including a firmware image area, a firmware signature, firmware data, and a first certificate public key and firmware fingerprint for verifying the firmware signature. Receive a first firmware image including a first certificate and a second certificate including a second certificate public key for verifying the first certificate, verify the first certificate using the second certificate public key, and 1 When verification of the certificate is completed, compare the hash value of the firmware data and the firmware fingerprint to see if they match. If the hash value of the firmware data and the firmware fingerprint match, the firmware signature is verified using the first certificate public key. , and a memory controller that stores the first firmware image in the firmware image area when the firmware signature is verified.

메모리 컨트롤러는 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하지 않으면, 펌웨어 이미지가 조작된 것으로 결정할 수 있다.If the hash value of the firmware data and the firmware fingerprint do not match, the memory controller may determine that the firmware image has been manipulated.

펌웨어 이미지 영역에는 스토리지 장치의 제2 펌웨어 이미지가 저장되어 있고, 제2 펌웨어 이미지와 제1 펌웨어 이미지 각각은 펌웨어 키 버전 정보를 포함하고, 메모리 컨트롤러는 제1 펌웨어 이미지의 펌웨어 키 버전이 제2 펌웨어 이미지의 펌웨어 키 버전 이상이면, 제1 펌웨어 이미지의 펌웨어 데이터의 해시 값과 제1 펌웨어 이미지의 펌웨어 핑거프린트가 일치하는지 여부를 비교할 수 있다.A second firmware image of the storage device is stored in the firmware image area, each of the second firmware image and the first firmware image includes firmware key version information, and the memory controller determines that the firmware key version of the first firmware image is the second firmware If the firmware key version of the image is higher than the firmware key version, it may be compared to determine whether the hash value of the firmware data of the first firmware image and the firmware fingerprint of the first firmware image match.

메모리 컨트롤러는 제1 펌웨어 이미지의 펌웨어 키 버전이 제2 펌웨어 이미지의 펌웨어 키 버전보다 낮으면, 제1 펌웨어 이미지의 버전이 제2 펌웨어 이미지의 버전보다 낮은 것으로 결정할 수 있다.If the firmware key version of the first firmware image is lower than the firmware key version of the second firmware image, the memory controller may determine that the version of the first firmware image is lower than the version of the second firmware image.

메모리 컨트롤러는 제1 인증서의 검증이 완료되면 제2 펌웨어 이미지와 제1 펌웨어 이미지 각각의 키 버전을 서로 비교할 수 있다.When verification of the first certificate is completed, the memory controller may compare the key versions of the second firmware image and the first firmware image.

공용키를 저장하는 롬을 더 포함하고, 메모리 컨트롤러는 롬에 저장된 공용키를 사용하여 제2 인증서를 검증하고, 제2 인증서의 검증이 완료되면 제1 인증서를 검증할 수 있다.It may further include a ROM for storing a public key, and the memory controller may verify the second certificate using the public key stored in the ROM, and may verify the first certificate when verification of the second certificate is completed.

제1 인증서는 제1 인증서의 서명을 포함하고, 제2 인증서는 제2 인증서의 서명을 포함하며, 제1 인증서의 서명과 제2 인증서의 서명은 동일한 비밀키로써 생성될 수 있다.The first certificate includes the signature of the first certificate, the second certificate includes the signature of the second certificate, and the signature of the first certificate and the signature of the second certificate may be generated with the same private key.

메모리 컨트롤러는 롬에 저장된 공용키를 사용하여 제2 인증서의 서명을 검증할 수 있다.The memory controller can verify the signature of the second certificate using the public key stored in the ROM.

메모리 컨트롤러는 제2 인증서 공용키를 사용하여 제1 인증서의 서명을 검증할 수 있다.The memory controller may verify the signature of the first certificate using the second certificate public key.

일 실시예에 따른 스토리지 장치의 펌웨어 업데이트 방법은, 호스트로부터 펌웨어 서명, 펌웨어 데이터, 및 펌웨어 서명을 검증하기 위한 제1 인증서 공용키 및 펌웨어 핑거프린트를 포함하는 제1 인증서를 포함하는 제1 펌웨어 이미지를 수신하는 단계, 펌웨어 데이터에 해시 함수를 적용하여 해시 값을 획득하는 단계, 해시 값과 펌웨어 핑거프린트가 일치하는지 여부를 비교하는 단계, 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하면, 제1 인증서 공용키를 사용하여 펌웨어 서명을 검증하는 단계, 그리고 펌웨어 서명이 검증되면 제1 펌웨어 이미지를 펌웨어 이미지 영역에 저장하는 단계를 포함한다.A method of updating firmware of a storage device according to an embodiment includes a first firmware image including a firmware signature, firmware data, and a first certificate including a firmware fingerprint and a first certificate public key for verifying the firmware signature from a host. receiving, applying a hash function to the firmware data to obtain a hash value, comparing whether the hash value and the firmware fingerprint match, if the hash value of the firmware data and the firmware fingerprint match, the first It includes verifying the firmware signature using the certificate public key, and once the firmware signature is verified, storing the first firmware image in the firmware image area.

펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하지 않으면, 펌웨어 이미지가 조작된 것으로 결정하는 단계를 더 포함할 수 있다.If the hash value of the firmware data and the firmware fingerprint do not match, a step of determining that the firmware image has been manipulated may be further included.

제1 펌웨어 이미지의 펌웨어 키 버전과 스토리지 장치의 펌웨어 이미지 영역에 저장되어 있는 제2 펌웨어 이미지의 펌웨어 키 버전을 비교하는 단계를 더 포함하고, 제1 펌웨어 이미지의 펌웨어 키 버전이 스토리지 장치의 펌웨어 이미지 영역에 저장되어 있는 제2 펌웨어 이미지의 펌웨어 키 버전 이상이면, 해시 값을 획득하는 단계를 수행할 수 있다.Further comprising comparing the firmware key version of the first firmware image with the firmware key version of the second firmware image stored in the firmware image area of the storage device, wherein the firmware key version of the first firmware image is the firmware image of the storage device. If the firmware key version of the second firmware image stored in the area is higher than the firmware key version, a step of obtaining a hash value can be performed.

제1 펌웨어 이미지의 펌웨어 키 버전 정보가 제2 펌웨어 이미지의 펌웨어 키 버전 정보보다 낮으면, 제1 펌웨어 이미지의 버전이 제2 펌웨어 이미지의 버전보다 낮은 것으로 결정하는 단계를 더 포함할 수 있다.If the firmware key version information of the first firmware image is lower than the firmware key version information of the second firmware image, the method may further include determining that the version of the first firmware image is lower than the version of the second firmware image.

펌웨어 이미지는 제1 인증서를 검증하기 위한 제2 인증서 공용키를 포함하는 제2 인증서를 더 포함하고, 펌웨어 업데이트 방법은, 제2 인증서 공용키를 사용하여 제1 인증서를 검증하는 단계를 더 포함하고, 제1 인증서의 검증이 완료되면 제1 펌웨어 이미지의 펌웨어 키 버전과 스토리지 장치의 펌웨어 이미지 영역에 저장되어 있는 제2 펌웨어 이미지의 펌웨어 키 버전을 비교하는 단계를 수행할 수 있다.The firmware image further includes a second certificate including a second certificate public key for verifying the first certificate, and the firmware update method further includes verifying the first certificate using the second certificate public key. , When verification of the first certificate is completed, a step of comparing the firmware key version of the first firmware image with the firmware key version of the second firmware image stored in the firmware image area of the storage device can be performed.

스토리지 장치의 롬에 저장된 공용키를 사용하여 제2 인증서를 검증하는 단계를 더 포함하고, 제2 인증서의 검증이 완료되면 제1 인증서를 검증하는 단계를 수행할 수 있다.A step of verifying the second certificate using a public key stored in the ROM of the storage device may be further included, and when verification of the second certificate is completed, a step of verifying the first certificate may be performed.

제1 인증서는 제1 인증서의 서명을 포함하고, 제2 인증서는 제2 인증서의 서명을 포함하며, 제1 인증서의 서명과 제2 인증서의 서명은 동일한 비밀키로써 생성될 수 있다.The first certificate includes the signature of the first certificate, the second certificate includes the signature of the second certificate, and the signature of the first certificate and the signature of the second certificate may be generated with the same private key.

제2 인증서를 검증하는 단계는, 롬에 저장된 공용키를 사용하여 제2 인증서의 서명을 검증하는 단계를 포함할 수 있다.Verifying the second certificate may include verifying the signature of the second certificate using a public key stored in the ROM.

제1 인증서를 검증하는 단계는, 제2 인증서 공용키를 사용하여 제1 인증서의 서명을 검증하는 단계를 포함할 수 있다.Verifying the first certificate may include verifying the signature of the first certificate using the second certificate public key.

일 실시예에 따른 스토리지 장치는, 복수의 메모리 시스템, 그리고 복수의 메모리 시스템을 제어하고, 신호 커넥터를 통해 호스트로부터 펌웨어 데이터 및 펌웨어 핑거프린트를 포함하는 펌웨어 이미지를 수신하고, 펌웨어 데이터의 해시 값과 펌웨어 핑거프린트가 일치하지 않으면, 펌웨어 이미지가 조작된 것임을 호스트에 보고하는 컨트롤러를 포함한다.A storage device according to an embodiment controls a plurality of memory systems and a plurality of memory systems, receives a firmware image including firmware data and a firmware fingerprint from a host through a signal connector, and receives a hash value of the firmware data and a firmware fingerprint. If the firmware fingerprints do not match, it includes a controller that reports to the host that the firmware image has been tampered with.

펌웨어 이미지는 펌웨어 핑거프린트에 기초한 인증서의 서명을 포함하고, 컨트롤러는 펌웨어 핑거프린트의 해시 값과 인증서의 서명을 복호화한 해시 값이 일치하지 않으면, 펌웨어 이미지가 조작된 것임을 호스트에 보고할 수 있다.The firmware image includes the signature of a certificate based on the firmware fingerprint, and if the hash value of the firmware fingerprint and the hash value obtained by decrypting the signature of the certificate do not match, the controller may report to the host that the firmware image has been manipulated.

도 1은 일 실시예에 따른 스토리지 시스템의 예시 블록도이다.
도 2는 일 실시예에 따른 스토리지 장치를 나타낸 블록도이다.
도 3은 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸 순서도이다.
도 4는 일 실시예에 따른 스토리지 장치의 펌웨어를 설명하기 위한 예시도이다.
도 5는 일 실시예에 따른 스토리지 시스템의 동작 방법을 나타낸 순서도이다.
도 6 내지 도 8은 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하는 도면들이다.
도 9는 일 실시예에 따른 스토리지 장치를 SSD (solid-state drive) 시스템에 적용한 예를 나타내는 블록도이다.
1 is an example block diagram of a storage system according to one embodiment.
Figure 2 is a block diagram showing a storage device according to an embodiment.
Figure 3 is a flowchart showing a method of operating a storage device according to an embodiment.
Figure 4 is an example diagram for explaining firmware of a storage device according to an embodiment.
Figure 5 is a flowchart showing a method of operating a storage system according to an embodiment.
6 to 8 are diagrams explaining the operation of a memory controller according to an embodiment.
FIG. 9 is a block diagram illustrating an example of applying a storage device according to an embodiment to a solid-state drive (SSD) system.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.Below, with reference to the attached drawings, embodiments of the present invention will be described in detail so that those skilled in the art can easily implement the present invention. However, the present invention may be implemented in many different forms and is not limited to the embodiments described herein.

그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.In order to clearly explain the present invention in the drawings, parts that are not related to the description are omitted, and similar parts are given similar reference numerals throughout the specification. In the flowchart described with reference to the drawings, the order of operations may be changed, several operations may be merged, certain operations may be divided, and certain operations may not be performed.

또한, 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다. 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 구성요소는 이러한 용어에 의해 한정되지는 않는다. 이들 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다.Additionally, expressions written in the singular may be interpreted as singular or plural, unless explicit expressions such as “one” or “single” are used. Terms containing ordinal numbers, such as first, second, etc., may be used to describe various components, but the components are not limited by these terms. These terms may be used for the purpose of distinguishing one component from another.

도 1은 일 실시예에 따른 스토리지 시스템의 예시 블록도이다.1 is an example block diagram of a storage system according to one embodiment.

도 1을 참조하면, 스토리지 시스템(100)은 호스트(110) 및 스토리지 장치(120)를 포함할 수 있다.Referring to FIG. 1, the storage system 100 may include a host 110 and a storage device 120.

호스트(110)는 펌웨어를 스토리지 장치(120)로 전송할 수 있다. 스토리지 장치(120)는 수신한 펌웨어를 기초로 스토리지 장치(120) 또는 스토리지 장치(120) 내부의 하드웨어를 제어할 수 있다. 스토리지 장치(120)에 이미 펌웨어가 존재하고, 존재하는 펌웨어의 업데이트된 버전의 펌웨어를 수신한 경우, 스토리지 장치(120)는 새로 수신한 펌웨어로 업데이트할 수 있다. The host 110 may transmit firmware to the storage device 120. The storage device 120 may control the storage device 120 or hardware within the storage device 120 based on the received firmware. If firmware already exists in the storage device 120 and an updated version of the existing firmware is received, the storage device 120 may be updated with the newly received firmware.

일례로, 호스트(110)는 펌웨어 이미지 다운로드 요청(FW UPDATE REQ)(또는 펌웨어 이미지 다운로드 커맨드(FW DL CMD))과 다운로드 대상이 되는 펌웨어 이미지(FW IMAGE)를 함께 스토리지 장치(120)에 전송할 수 있다.For example, the host 110 may transmit a firmware image download request (FW UPDATE REQ) (or a firmware image download command (FW DL CMD)) and a firmware image to be downloaded (FW IMAGE) to the storage device 120. there is.

다른 예로, 호스트(110)는 호스트(110)의 서브미션 큐(Submission Queue)에 펌웨어 이미지 다운로드 커맨드를 저장할 수 있다. 이때 펌웨어 이미지 다운로드 커맨드에 대한 펌웨어 이미지(111)의 정보가 함께 서브미션 큐에 저장될 수 있다. 스토리지 장치(120)는 서브미션 큐에 저장된 정보들을 기초로 펌웨어 이미지(111)를 획득할 수 있다. 호스트(110)는 다양한 방법으로 스토리지 장치(120)에 펌웨어 이미지(111)를 전송할 수 있으며, 전송 방법은 어느 하나로 제한되지 않는다.As another example, the host 110 may store a firmware image download command in the submission queue of the host 110. At this time, information on the firmware image 111 for the firmware image download command may be stored together in the submission queue. The storage device 120 may obtain the firmware image 111 based on information stored in the submission queue. The host 110 can transmit the firmware image 111 to the storage device 120 in various ways, and the transmission method is not limited to one.

호스트(110)는 전송된 펌웨어 이미지(111)에 대한 펌웨어 업데이트 요청을 스토리지 장치(120)로 전송할 수 있다. The host 110 may transmit a firmware update request for the transmitted firmware image 111 to the storage device 120.

펌웨어는 이미지의 형태일 수 있다. 따라서, 호스트(110)가 스토리지 장치(120)에 제공하는 펌웨어를 펌웨어 이미지(111)로 호칭할 수 있다. 펌웨어 이미지(111)는 펌웨어 서명(112)을 포함할 수 있다. 어떤 실시예에서, 펌웨어 서명(112)은 펌웨어 이미지(111)와 제조사의 비밀키를 이용하여 생성될 수 있다. 펌웨어 이미지(111)는 복수의 인증서(113, 114)를 포함할 수 있다. 어떤 실시예에서, 복수의 인증서(113, 114)는 동일한 비밀키로써 생성된 서명을 각각 포함할 수 있다. 복수의 인증서(113, 114) 중 어느 하나(114)는 펌웨어 서명(112)에 대한 공용키를 포함할 수 있다. 복수의 인증서(113, 114) 중 어느 하나(113)는 다른 하나(114)를 검증할 수 있는 공용키를 포함할 수 있다. 펌웨어 이미지(111)는 펌웨어 핑거프린트(115)를 포함할 수 있다. 어떤 실시예에서, 복수의 인증서(113, 114) 중 어느 하나는 펌웨어 핑거프린트(115)를 포함할 수 있다. 펌웨어 핑거프린트(115)는 펌웨어 바이너리의 해시(hash) 값을 포함할 수 있다. Firmware may be in the form of an image. Accordingly, the firmware provided by the host 110 to the storage device 120 may be referred to as the firmware image 111. The firmware image 111 may include a firmware signature 112. In some embodiments, the firmware signature 112 may be generated using the firmware image 111 and the manufacturer's secret key. The firmware image 111 may include a plurality of certificates 113 and 114. In some embodiments, multiple certificates 113, 114 may each include a signature generated with the same secret key. One of the plurality of certificates 113 and 114 (114) may include a public key for the firmware signature (112). One of the plurality of certificates 113 and 114 (113) may include a public key that can verify the other certificate (114). The firmware image 111 may include a firmware fingerprint 115. In some embodiments, one of the plurality of certificates 113, 114 may include a firmware fingerprint 115. The firmware fingerprint 115 may include a hash value of the firmware binary.

스토리지 장치(120)는 메모리 컨트롤러(121) 및 메모리(122)를 포함할 수 있다.The storage device 120 may include a memory controller 121 and a memory 122.

메모리 컨트롤러(121)는 호스트(110)로부터 제공받은 펌웨어 이미지(111)를 검증할 수 있다. 메모리 컨트롤러(121)는 무결성 검사 또는 유효성 검사를 수행할 수 있다. 무결성 검사의 한 예로서, 체크섬(Checksum) 방식, 해시 함수 방식, 전자 서명 방식 또는 MAC(Message Authentication Code) 방식이 사용될 수 있다. 검증의 종류는 어느 하나로 제한되지 않는다. 어떤 실시예에서, 메모리 컨트롤러(121)는 복수의 인증서(113, 114)에 대한 검증을 완료하고, 복수의 인증서(113, 114) 중 어느 하나에 포함된 펌웨어 서명(112)에 대한 공용키를 사용하여, 펌웨어 이미지(111)의 펌웨어 서명(112)을 검증할 수 있다. 어떤 실시예에서, 메모리 컨트롤러(121)는 펌웨어 이미지(111)가 임의로 조작되었는지 여부를 핑거프린트(115)를 사용하여 검증할 수 있다. 예를 들어, 메모리 컨트롤러(121)는 펌웨어 이미지(111)의 바이너리 해시 값을 생성하고, 이를 펌웨어 핑거프린트(115)와 비교하여, 펌웨어 이미지(111)를 검증할 수 있다. The memory controller 121 may verify the firmware image 111 provided from the host 110. The memory controller 121 may perform an integrity check or a validity check. As an example of an integrity check, a checksum method, a hash function method, a digital signature method, or a MAC (Message Authentication Code) method may be used. The type of verification is not limited to any one. In some embodiments, the memory controller 121 completes verification of the plurality of certificates 113 and 114 and generates a public key for the firmware signature 112 included in any one of the plurality of certificates 113 and 114. Using this, the firmware signature 112 of the firmware image 111 can be verified. In some embodiments, the memory controller 121 may use the fingerprint 115 to verify whether the firmware image 111 has been tampered with. For example, the memory controller 121 may generate a binary hash value of the firmware image 111 and compare it with the firmware fingerprint 115 to verify the firmware image 111.

메모리 컨트롤러(121)는 펌웨어 업데이트 요청에 따라 검증이 완료된 펌웨어 이미지(111)를 메모리(122)에 저장할 수 있다. 메모리 컨트롤러(121)는 펌웨어 서명(112)에 대한 검증이 완료되면, 펌웨어 이미지(111)에 대한 업데이트를 수행할 수 있다.The memory controller 121 may store the verified firmware image 111 in the memory 122 in response to a firmware update request. When verification of the firmware signature 112 is completed, the memory controller 121 may update the firmware image 111.

스토리지 장치(120)는 호스트(110)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일례로, 스토리지 장치(120)는 하나 이상의 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 포함할 수 있다. 스토리지 장치(120)가 SSD를 포함하는 경우, 메모리(122)는 데이터를 불휘발성하게 저장하는 다수 개의 플래시 메모리 칩들(예를 들어, NAND 메모리 칩들)을 포함할 수 있다. 한편, 메모리(122)는 하나의 플래시 메모리 장치에 해당할 수도 있으며, 또는 메모리(122)는 하나 이상의 플래시 메모리 칩들을 포함하는 메모리 카드를 포함할 수도 있다.The storage device 120 may include storage media for storing data according to a request from the host 110. As an example, the storage device 120 may include one or more solid state drives (SSDs). When the storage device 120 includes an SSD, the memory 122 may include a plurality of flash memory chips (eg, NAND memory chips) that non-volatilely store data. Meanwhile, the memory 122 may correspond to one flash memory device, or the memory 122 may include a memory card including one or more flash memory chips.

스토리지 장치(120)가 플래시 메모리를 포함할 때, 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역을 가지는 메모리 셀들의 어레이들, 또는 메모리 셀들의 동작과 관련된 회로로서 기판상에 또는 기판 내에 형성된 회로의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 용어 "모놀리식"은 어레이를 구성하는 각 레벨의 층들이 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 Vertical NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.When the storage device 120 includes flash memory, the flash memory may include a 2D NAND memory array or a 3D (or vertical) NAND (VNAND) memory array. A 3D memory array is an array of memory cells having an active area disposed on a silicon substrate, or circuitry associated with the operation of the memory cells, and is formed monolithically on at least one physical level of a circuit formed on or within a substrate. The term “monolithic” means that the layers of each level of the array are stacked directly on top of the layers of each lower level of the array. A 3D memory array includes vertical NAND strings arranged in a vertical direction so that at least one memory cell is located on top of other memory cells. At least one memory cell may include a charge trap layer.

다른 예로, 스토리지 장치(120)는 다른 다양한 종류의 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(120)는 불휘발성 메모리를 포함할 수 있으며, 불휘발성 메모리는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM), 나노튜브 RAM(Nanotube RAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory) 등 다양한 종류의 메모리가 적용될 수 있다.As another example, the storage device 120 may include various other types of memories. For example, the storage device 120 may include non-volatile memory, which may include magnetic RAM (MRAM), spin-transfer torque MRAM (Spin-Transfer Torque MRAM), conductive bridging RAM (CBRAM), and FeRAM ( Ferroelectric RAM, PRAM (Phase RAM), Resistive RAM, Nanotube RAM, Polymer RAM (PoRAM), Nano Floating Gate Memory (NFGM), Holographic Memory Various types of memory can be applied, such as holographic memory, molecular electronics memory, or insulation resistance change memory.

메모리(122)는 eMMC(embedded Multi-Media Card) 또는 임베디드 UFS(Universal Flash Storage) 메모리 장치일 수 있다. 일례로, 메모리(122)는 스토리지 장치(120)에 탈착 가능한 외장(external) 메모리일 수 있다. 구체적으로, 메모리(122)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있으나, 이에 제한되지 않는다.The memory 122 may be an embedded Multi-Media Card (eMMC) or an embedded Universal Flash Storage (UFS) memory device. For example, the memory 122 may be an external memory that is removable from the storage device 120 . Specifically, the memory 122 may be a UFS memory card, Compact Flash (CF), Secure Digital (SD), Micro Secure Digital (Micro-SD), Mini Secure Digital (Mini-SD), extreme Digital (xD), or memory stick. It may be a (Memory Stick), but is not limited thereto.

호스트(110)는 다양한 인터페이스를 통하여 스토리지 장치(120)와 통신할 수 있다. 한 예로서, 호스트(110)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), NVMe(Non-Volatile Memory Express) 등과 같은 다양한 인터페이스를 통해 스토리지 장치(120)와 통신할 수 있다.The host 110 may communicate with the storage device 120 through various interfaces. As an example, the host 110 supports Universal Serial Bus (USB), MultiMediaCard (MMC), PCIExpress (PCI-E), AT Attachment (ATA), Serial AT Attachment (SATA), Parallel AT Attachment (PATA), and SCSI ( Communicate with the storage device 120 through various interfaces such as Small Computer System Interface (SAS), Serial Attached SCSI (SAS), Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE), and Non-Volatile Memory Express (NVMe). You can.

도 2는 일 실시예에 따른 스토리지 장치를 나타낸 블록도이다.Figure 2 is a block diagram showing a storage device according to an embodiment.

도 2를 참조하면, 스토리지 장치(200)는, 시스템 버스(205), 메모리 컨트롤러(210), 롬(220), 제1 메모리(230), 및 메모리(240)를 포함할 수 있다.Referring to FIG. 2 , the storage device 200 may include a system bus 205, a memory controller 210, a ROM 220, a first memory 230, and a memory 240.

메모리 컨트롤러(210)는 롬(220) 및 메모리(230)의 전반적인 동작을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 호스트로부터 데이터, 어드레스 및 커맨드를 수신하고, 이에 응답하여 메모리(230)의 동작을 제어할 수 있다.The memory controller 210 may control the overall operation of the ROM 220 and memory 230. For example, the memory controller 210 may receive data, addresses, and commands from the host, and control the operation of the memory 230 in response.

롬(220)은 공용키(221)를 포함할 수 있다. 공용키(221)는 스토리지 장치(200)의 제조 과정에서 롬(220)에 저장될 수 있다.ROM 220 may include a public key 221. The public key 221 may be stored in the ROM 220 during the manufacturing process of the storage device 200.

메모리(230)는 유저 데이터 영역(231)과 펌웨어 이미지 영역(232)을 포함할 수 있다. 유저 데이터 영역(231)은 호스트에 의해 액세스될 수 있는 영역일 수 있다. 예를 들어, 유저 데이터 영역(231)은 호스트로부터 제공된 리드 또는 라이트 등의 커맨드에 따라 메모리 컨트롤러(210)에 의해 데이터가 라이트되고 리드되는 영역일 수 있다. 즉, 유저 데이터 영역(231)은 메모리(230)에서 데이터가 라이트되고 저장되는 대부분의 영역일 수 있다.The memory 230 may include a user data area 231 and a firmware image area 232. The user data area 231 may be an area that can be accessed by the host. For example, the user data area 231 may be an area where data is written and read by the memory controller 210 according to a command such as read or write provided from the host. That is, the user data area 231 may be most of the area in the memory 230 where data is written and stored.

펌웨어 이미지 영역(232)은 호스트에 의한 액세스가 제한되는 영역일 수 있다. 펌웨어 이미지 영역(232)은 펌웨어 이미지(233)가 저장될 수 있다. 펌웨어 이미지(233)는 스토리지 장치(200)의 제조 과정에서 펌웨어 이미지 영역(232)에 저장될 수 있다. 또는 스토리지 장치(200)의 출고 후 펌웨어 업데이트에 의해 새로운 펌웨어 이미지가 펌웨어 이미지 영역(232)에 저장될 수 있다.The firmware image area 232 may be an area where access by the host is restricted. The firmware image area 232 may store the firmware image 233. The firmware image 233 may be stored in the firmware image area 232 during the manufacturing process of the storage device 200. Alternatively, a new firmware image may be stored in the firmware image area 232 by updating the firmware after the storage device 200 is shipped.

메모리(230)는 비휘발성 메모리를 포함할 수 있다. 메모리(230)는 예를 들어, 낸드 플래쉬 메모리(NAND Flash Memory), 수직형 낸드 플래쉬 메모리(Vertical NAND: VNAND, 3D), 노아 플래시 메모리(NOR Flash Memory), PRAM(Phase-Change Random Access Memory), RRAM(Resistive Random Access Memory), MRAM(Magnetroresistive Random Access Memory), FRAM(Ferroelectric Random Access Memory), STT-RAM(Spin Transfer Torque Random Access Memory) 또는 이와 유사한 비휘발성 메모리 장치 등이 포함될 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.Memory 230 may include non-volatile memory. The memory 230 includes, for example, NAND flash memory, vertical NAND (VNAND, 3D), NOR flash memory, and PRAM (Phase-Change Random Access Memory). , Resistive Random Access Memory (RRAM), Magnetoresistive Random Access Memory (MRAM), Ferroelectric Random Access Memory (FRAM), Spin Transfer Torque Random Access Memory (STT-RAM), or similar non-volatile memory devices. However, this embodiment is not limited to this.

시스템 버스(205)는 메모리 컨트롤러(210), 롬(220), 및 메모리(230) 사이의 연결을 수행할 수 있다.The system bus 205 may perform a connection between the memory controller 210, ROM 220, and memory 230.

도 3은 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸 순서도이다.Figure 3 is a flowchart showing a method of operating a storage device according to an embodiment.

도 2 및 도 3을 참조하면, 메모리 컨트롤러(210)는 호스트로부터 펌웨어 이미지 다운로드 커맨드와 다운로드 대상이 되는 펌웨어 이미지를 수신(S300)한다. Referring to Figures 2 and 3, the memory controller 210 receives a firmware image download command and a firmware image to be downloaded from the host (S300).

메모리 컨트롤러(210)는 수신한 펌웨어 이미지 내의 인증서를 검증(S310)한다. 어떤 실시예에서, 메모리 컨트롤러(210)는 롬(220)에 저장되어 있는 공용키(221)를 펌웨어 이미지 내의 인증서를 검증할 수 있다. 인증서에 대한 검증이 완료되면, 메모리 컨트롤러(210)는 검증된 인증서에 포함된 펌웨어 서명을 검증하기 위한 공용키를 획득할 수 있다. The memory controller 210 verifies the certificate in the received firmware image (S310). In some embodiments, the memory controller 210 may use the public key 221 stored in the ROM 220 to verify a certificate in the firmware image. When verification of the certificate is completed, the memory controller 210 may obtain a public key to verify the firmware signature included in the verified certificate.

메모리 컨트롤러(210)는 펌웨어 이미지 내의 펌웨어 핑거프린트를 검증(S320)한다. 어떤 실시예에서, 메모리 컨트롤러(210)는 펌웨어 이미지의 펌웨어 바이너리 코드에 대한 해시 값을 생성할 수 있다. 메모리 컨트롤러(210)는 생성된 해시 값과 펌웨어 핑거프린트를 비교하여, 펌웨어 핑거프린트를 검증할 수 있다. The memory controller 210 verifies the firmware fingerprint in the firmware image (S320). In some embodiments, memory controller 210 may generate a hash value for the firmware binary code of the firmware image. The memory controller 210 may compare the generated hash value and the firmware fingerprint to verify the firmware fingerprint.

메모리 컨트롤러(210)는 펌웨어 핑거프린트에 대한 검증에 실패하면, 펌웨어 이미지가 조작된 것으로 결정할 수 있다. 또한, 메모리 컨트롤러(210)는 호스트에 펌웨어 이미지가 조작되었음을 보고할 수 있다. 그러면 호스트는 펌웨어 이미지가 조작되었고, 펌웨어 이미지의 펌웨어 서명에 사용된 비밀키가 유출되었음을 제조사에 보고할 수 있다.메모리 컨트롤러(210)는 수신한 펌웨어 이미지 내의 펌웨어 서명을 검증(S330)한다. 어떤 실시예에서, 메모리 컨트롤러(210)는 단계(S310)에서 획득한 공용키를 사용하여 펌웨어 서명을 검증할 수 있다.If verification of the firmware fingerprint fails, the memory controller 210 may determine that the firmware image has been manipulated. Additionally, the memory controller 210 may report to the host that the firmware image has been manipulated. Then, the host can report to the manufacturer that the firmware image has been manipulated and that the secret key used to sign the firmware of the firmware image has been leaked. The memory controller 210 verifies the firmware signature in the received firmware image (S330). In some embodiments, the memory controller 210 may verify the firmware signature using the public key obtained in step S310.

메모리 컨트롤러(210)는 펌웨어 서명에 대한 검증이 완료되면, 펌웨어 이미지를 업데이트(S340)한다. 예를 들어, 펌웨어 서명에 대한 검증이 성공하면, 메모리 컨트롤러(210)는 검증된 펌웨어 이미지를 메모리(230)의 펌웨어 이미지 영역(232)에 저장하고, 수신한 펌웨어 이미지로 스토리지 장치(200)의 펌웨어를 업데이트할 수 있다. 다른 예로서, 펌웨어 서명에 대한 검증이 실패한 경우, 메모리 컨트롤러(210)는 펌웨어 이미지를 메모리(230)에 저장하지 않을 수 있다.When verification of the firmware signature is completed, the memory controller 210 updates the firmware image (S340). For example, if verification of the firmware signature is successful, the memory controller 210 stores the verified firmware image in the firmware image area 232 of the memory 230 and stores the received firmware image in the storage device 200. You can update firmware. As another example, if verification of the firmware signature fails, the memory controller 210 may not store the firmware image in the memory 230.

도 4는 일 실시예에 따른 스토리지 장치의 펌웨어를 설명하기 위한 예시도이다. Figure 4 is an example diagram for explaining firmware of a storage device according to an embodiment.

도 4를 참조하면, 펌웨어 이미지(400)는 펌웨어 서명(410), 펌웨어 데이터(420), 및 복수의 인증서(430, 440)를 포함할 수 있다. Referring to FIG. 4 , the firmware image 400 may include a firmware signature 410, firmware data 420, and a plurality of certificates 430 and 440.

펌웨어 서명(410)은 펌웨어 이미지(400)의 검증을 수행하기 위해 필요한 정보들을 포함할 수 있다. 펌웨어 서명(410)은 펌웨어 이미지(400)에 적용되는 디지털 서명 알고리즘(DSA: Digital Signature Algorithm)에 따라 다른 정보를 가질 수 있다. 디지털 서명 알고리즘이란, 주어진 데이터에 자신만이 알고 있는 비밀키를 이용하여 서명을 생성하는 알고리즘을 의미할 수 있다. 제3자는 검증용 공용키를 이용하여 서명 검증을 통해 데이터가 검증된 자로부터 만들어 졌음을 확인할 수 있다. 예를 들어, 펌웨어 이미지(400)에 대해 RSA(Rivest Shamir Adleman) 알고리즘에 따른 인증이 수행되는 경우, 펌웨어 데이터(420)에 해시 함수를 적용하여 얻은 해시 값을 비밀키로 서명한 결과가 펌웨어 서명(410)에 포함될 수 있다. 펌웨어 서명(410)은 서로 관련된 복수의 인증서(430, 440) 중 어느 하나에 포함된 공용키로써 검증될 수 있다. The firmware signature 410 may include information necessary to verify the firmware image 400. The firmware signature 410 may have different information depending on the digital signature algorithm (DSA) applied to the firmware image 400. A digital signature algorithm may refer to an algorithm that generates a signature on given data using a secret key known only to the user. A third party can confirm that the data was created by a verified person through signature verification using the public key for verification. For example, when authentication according to the RSA (Rivest Shamir Adleman) algorithm is performed on the firmware image 400, the result of signing the hash value obtained by applying a hash function to the firmware data 420 with a secret key is the firmware signature ( 410). The firmware signature 410 can be verified with a public key included in one of the plurality of certificates 430 and 440 that are related to each other.

펌웨어 데이터(420)는 펌웨어 프로그램 코드를 포함할 수 있다. Firmware data 420 may include firmware program code.

제1 인증서(430)는 제1 인증서 서명(431) 및 제1 인증서 공용키(432)를 포함할 수 있다. 제1 인증서 서명(431)은 제조사의 비밀키에 의해 서명된 결과를 포함할 수 있다. 제1 인증서 서명(431)은 스토리지 장치의 롬에 저장되어 있는 공용키로써 검증될 수 있다. 제1 인증서(430)는 RoT(Root of Trust)로서, 스토리지 장치는 제1 인증서 서명(431)을 검증함으로써, 제1 인증서(430)가 제조사의 비밀키에 의해 생성된 신뢰할 만한 인증서인지를 검증할 수 있다.The first certificate 430 may include a first certificate signature 431 and a first certificate public key 432. The first certificate signature 431 may include a result signed by the manufacturer's private key. The first certificate signature 431 can be verified using the public key stored in the ROM of the storage device. The first certificate 430 is a root of trust (RoT), and the storage device verifies the first certificate signature 431 to verify that the first certificate 430 is a trustworthy certificate generated by the manufacturer's secret key. can do.

제2 인증서(440)는 제2 인증서 서명(441), 제2 인증서 공용키(442), 펌웨어 핑거프린트(443), 및 펌웨어 키 버전 정보(444)를 포함할 수 있다. 제2 인증서 서명(441)은 제조사에서 비밀키에 의해 서명된 결과를 포함할 수 있다. 제2 인증서 서명(441)은 제1 인증서 공용키(432)로써 검증될 수 있다.The second certificate 440 may include a second certificate signature 441, a second certificate public key 442, a firmware fingerprint 443, and firmware key version information 444. The second certificate signature 441 may include a result signed by the manufacturer with a private key. The second certificate signature 441 can be verified with the first certificate public key 432.

펌웨어 핑거프린트(443)는 펌웨어 데이터(420)의 바이너리 해시 값을 포함할 수 있다. 어떤 실시예에서, 펌웨어 핑거프린트(443)는 펌웨어 데이터(420)의 바이너리에 해시 함수를 적용하여 계산된 해시 값을 포함할 수 있다. The firmware fingerprint 443 may include a binary hash value of the firmware data 420. In some embodiments, firmware fingerprint 443 may include a hash value calculated by applying a hash function to the binary of firmware data 420.

펌웨어 키 버전 정보(444)는 펌웨어 이미지(400) 생성 시에 펌웨어 서명(410)을 생성하는 데 사용된 비밀키의 버전 정보를 포함할 수 있다. 펌웨어 서명(410)을 생성하는 데 사용된 비밀키가 유출되는 경우, 제조사에 의해 새로운 비밀키로써 펌웨어 서명(410)이 생성되며, 비밀키의 버전이 변경될 수 있다. The firmware key version information 444 may include version information of the secret key used to generate the firmware signature 410 when creating the firmware image 400. If the secret key used to generate the firmware signature 410 is leaked, the firmware signature 410 is created with a new secret key by the manufacturer, and the version of the secret key may be changed.

도 5는 일 실시예에 따른 스토리지 시스템의 동작 방법을 나타낸 순서도이다.Figure 5 is a flowchart showing a method of operating a storage system according to an embodiment.

도 5를 참조하면, 호스트는 스토리지 장치에 펌웨어 이미지 다운로드를 요청(S500)한다. 호스트는 이미지 다운로드 커맨드와 다운로드 대상이 되는 펌웨어 이미지를 스토리지 장치에 전송할 수 있다. Referring to FIG. 5, the host requests a firmware image download to the storage device (S500). The host can transmit the image download command and the firmware image to be downloaded to the storage device.

스토리지 장치는 호스트로부터 새로운 펌웨어 이미지를 수신(S510)한다. 스토리지 장치는 메모리의 일 영역에 새로운 펌웨어 이미지를 저장할 수 있다. The storage device receives a new firmware image from the host (S510). The storage device may store the new firmware image in an area of memory.

스토리지 장치의 메모리 컨트롤러는 롬에 저장되어 있는 공용키를 사용하여 수신한 펌웨어 이미지의 제1 인증서의 서명을 검증(S520)한다. The memory controller of the storage device verifies the signature of the first certificate of the received firmware image using the public key stored in the ROM (S520).

제1 인증서의 서명에 대한 검증이 성공하면, 스토리지 장치의 메모리 컨트롤러는 제1 인증서에 포함된 제1 인증서의 공용키를 사용하여 수신한 펌웨어 이미지의 제2 인증서의 서명을 검증(S530)한다. 스토리지 장치의 메모리 컨트롤러는 제2 인증서에 포함된 데이터(펌웨어 핑거프린트, 펌웨어 키 버전 정보, 및 펌웨어 서명)의 해시 값과, 제1 인증서의 공용키를 사용하여 제2 인증서의 서명을 복호화한 해시 값이 일치하는지를 검증할 수 있다. 제2 인증서를 서명한 비밀키가 유출되지 않았으나, 펌웨어 핑거프린트가 조작되는 경우, 제2 인증서에 포함된 데이터의 해시 값과 제1 인증서의 공용키를 사용하여 제2 인증서의 서명을 복호화한 해시 값이 일치하지 않으므로, 제2 인증서의 서명에 대한 검증이 실패한다. If verification of the signature of the first certificate is successful, the memory controller of the storage device verifies the signature of the second certificate of the received firmware image using the public key of the first certificate included in the first certificate (S530). The memory controller of the storage device decrypts the hash value of the data included in the second certificate (firmware fingerprint, firmware key version information, and firmware signature) and the signature of the second certificate using the public key of the first certificate. You can verify that the values match. If the private key that signed the second certificate is not leaked, but the firmware fingerprint is manipulated, the hash value of the data contained in the second certificate and the public key of the first certificate are used to decrypt the signature of the second certificate. Because the values do not match, verification of the second certificate's signature fails.

제2 인증서의 서명에 대한 검증이 성공하면, 스토리지 장치의 메모리 컨트롤러는 새로운 펌웨어의 키 버전이 기존 펌웨어 키 버전 이상의 버전인지 결정(S540)한다.If verification of the signature of the second certificate is successful, the memory controller of the storage device determines whether the key version of the new firmware is a version higher than the existing firmware key version (S540).

새로운 펌웨어의 키 버전이 기존 펌웨어 키 버전 이상의 버전이면, 스토리지 장치의 메모리 컨트롤러는 수신한 펌웨어 이미지의 펌웨어 데이터의 바이너리에 대한 해시 값을 생성(S550)한다.If the key version of the new firmware is a version higher than the existing firmware key version, the memory controller of the storage device generates a hash value for the binary of the firmware data of the received firmware image (S550).

스토리지 장치의 메모리 컨트롤러는 해시 값과 수신한 펌웨어 이미지의 펌웨어 핑거프린트를 비교(S560)한다. The memory controller of the storage device compares the hash value and the firmware fingerprint of the received firmware image (S560).

스토리지 장치의 메모리 컨트롤러는 해시 값과 수신한 펌웨어 이미지의 펌웨어 핑거프린트가 동일하면, 제2 인증서에 포함된 제2 인증서의 공용키를 사용하여 수신한 펌웨어 이미지의 펌웨어 서명을 검증(S570)한다. If the hash value and the firmware fingerprint of the received firmware image are the same, the memory controller of the storage device verifies the firmware signature of the received firmware image using the public key of the second certificate included in the second certificate (S570).

펌웨어 서명에 대한 검증이 성공하면, 스토리지 장치의 메모리 컨트롤러는 수신한 펌웨어 이미지를 펌웨어 이미지 영역에 기록하여 업데이트를 수행(S580)한다. If verification of the firmware signature is successful, the memory controller of the storage device records the received firmware image in the firmware image area and performs an update (S580).

단계(S520)에서 제1 인증서의 서명에 대한 검증이 실패하는 경우, 단계(S530)에서 제2 인증서의 서명에 대한 검증이 실패하는 경우, 단계(S540)에서 새로운 펌웨어의 키 버전이 기존 펌웨어 키 버전 미만인 경우, 단계(S560)에서 해시 값과 수신한 펌웨어 이미지의 펌웨어 핑거프린트가 상이한 경우, 또는 단계(S570)에서 펌웨어 서명에 대한 검증이 실패하는 경우에 스토리지 장치의 메모리 컨트롤러는 펌웨어 업데이트를 중단(S582)한다. If verification of the signature of the first certificate fails in step S520, and if verification of the signature of the second certificate fails in step S530, the key version of the new firmware is changed to the existing firmware key in step S540. If it is less than the version, if the hash value in step S560 and the firmware fingerprint of the received firmware image are different, or if verification of the firmware signature fails in step S570, the memory controller of the storage device stops updating the firmware. (S582) Do.

단계(S540)에서 새로운 펌웨어의 키 버전이 기존 펌웨어 키 버전 미만인 경우, 스토리지 장치의 메모리 컨트롤러는 호스트에 펌웨어 이미지의 버전이 스토리지 장치에 저장된 펌웨어 이미지의 버전보다 낮은 것으로 결정하고, 이를 호스트에 보고할 수 있다. In step S540, if the key version of the new firmware is lower than the existing firmware key version, the memory controller of the storage device determines that the version of the firmware image to the host is lower than the version of the firmware image stored in the storage device and reports this to the host. You can.

단계(S560)에서 해시 값과 수신한 펌웨어 이미지의 펌웨어 핑거프린트가 상이한 경우, 스토리지 장치의 메모리 컨트롤러는 호스트에 펌웨어 이미지가 조작되었음을 보고할 수 있다. 호스트는 펌웨어 이미지가 조작되었고, 펌웨어 이미지의 펌웨어 서명에 사용된 비밀키가 유출되었음을 제조사에 보고할 수 있다. If the hash value and the firmware fingerprint of the received firmware image are different in step S560, the memory controller of the storage device may report to the host that the firmware image has been manipulated. The host can report to the manufacturer that the firmware image has been manipulated and that the secret key used to sign the firmware in the firmware image has been leaked.

스토리지 장치의 메모리 컨트롤러는 펌웨어 다운로드 요청에 대한 응답으로서, 펌웨어 업데이트의 성공 또는 실패를 지시하는 완료 표시를 호스트에 전달(S590)한다.In response to the firmware download request, the memory controller of the storage device transmits a completion indication indicating success or failure of the firmware update to the host (S590).

도 6 내지 도 8은 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하는 도면들이다.6 to 8 are diagrams explaining the operation of a memory controller according to an embodiment.

도 6은 일반적인 펌웨어 이미지의 업데이트를 나타낸 도면이다. 도 6을 참조하면, 스토리지 장치(650)는 정상적인 펌웨어 이미지(600)를 수신하고 펌웨어 이미지 업데이트를 수행할 수 있다. 정상적인 펌웨어 이미지(600)는 펌웨어 서명을 생성한 비밀키가 유출되지 않은 경우 제조된 이미지일 수 있다. 따라서, 새로운 펌웨어 이미지(600)의 펌웨어 키 버전(644)이 변경되어 있지 않다. Figure 6 is a diagram showing the update of a general firmware image. Referring to FIG. 6, the storage device 650 may receive a normal firmware image 600 and perform a firmware image update. The normal firmware image 600 may be an image manufactured when the secret key that created the firmware signature has not been leaked. Accordingly, the firmware key version 644 of the new firmware image 600 has not changed.

메모리 컨트롤러(655)는 롬(660)에 저장된 공용키(661)를 사용하여 제1 인증서(630)의 서명(631)을 검증할 수 있다(①).The memory controller 655 can verify the signature 631 of the first certificate 630 using the public key 661 stored in the ROM 660 (①).

제1 인증서(630)의 서명(631)에 대한 검증이 완료되면, 메모리 컨트롤러(655)는 제1 인증서(630)의 공용키(632)를 사용하여 제2 인증서의 서명(641)을 검증할 수 있다(②).When verification of the signature 631 of the first certificate 630 is completed, the memory controller 655 verifies the signature 641 of the second certificate using the public key 632 of the first certificate 630. You can (②).

제2 인증서(640)의 서명(641)에 대한 검증이 완료되면, 메모리 컨트롤러(655)는 메모리(670)에 저장된 펌웨어 이미지의 제2 인증서(674)에 저장된 펌웨어 키 버전과 새로운 펌웨어 이미지(600)의 펌웨어 키 버전(644)을 비교할 수 있다(③). When verification of the signature 641 of the second certificate 640 is completed, the memory controller 655 updates the firmware key version stored in the second certificate 674 of the firmware image stored in the memory 670 and the new firmware image 600. ) You can compare the firmware key version (644) (③).

새로운 펌웨어 이미지(600)의 펌웨어 키 버전(644)이 메모리(670)에 저장된 펌웨어 이미지의 제2 인증서(674)에 저장된 펌웨어 키 버전과 동일하므로, 메모리 컨트롤러(655)는 펌웨어 데이터(620)의 바이너리에 대한 해시 값을 생성하여 펌웨어 핑거프린트(643)와 비교할 수 있다(④).Since the firmware key version 644 of the new firmware image 600 is the same as the firmware key version stored in the second certificate 674 of the firmware image stored in memory 670, the memory controller 655 A hash value for the binary can be generated and compared with the firmware fingerprint (643) (④).

해시 값과 펌웨어 핑거프린트(643)가 동일하므로, 메모리 컨트롤러(655)는 제2 인증서(640)의 공용키(642)를 사용하여 펌웨어 서명에 대한 검증을 수행할 수 있다(⑤).Since the hash value and the firmware fingerprint 643 are the same, the memory controller 655 can verify the firmware signature using the public key 642 of the second certificate 640 (⑤).

도 7은 펌웨어 서명을 생성한 비밀키가 유출된 경우 비밀키를 업데이트한 펌웨어 이미지의 업데이트를 나타낸 도면이다. 도 7을 참조하면, 스토리지 장치(750)는 비밀키를 업데이트한 펌웨어 이미지(700)를 수신하고 펌웨어 이미지 업데이트를 수행할 수 있다. 새로운 펌웨어 이미지(700)의 펌웨어 키 버전(744)이 업데이트되어 있다. Figure 7 is a diagram showing the update of the firmware image by updating the secret key when the secret key that created the firmware signature is leaked. Referring to FIG. 7, the storage device 750 may receive a firmware image 700 with an updated secret key and perform a firmware image update. The firmware key version 744 of the new firmware image 700 is updated.

메모리 컨트롤러(755)는 롬(760)에 저장된 공용키(761)를 사용하여 제1 인증서(730)의 서명(731)을 검증할 수 있다(①).The memory controller 755 can verify the signature 731 of the first certificate 730 using the public key 761 stored in the ROM 760 (①).

제1 인증서(730)의 서명(731)에 대한 검증이 완료되면, 메모리 컨트롤러(755)는 제1 인증서(730)의 공용키(732)를 사용하여 제2 인증서(740)의 서명(741)을 검증할 수 있다(②).When verification of the signature 731 of the first certificate 730 is completed, the memory controller 755 uses the public key 732 of the first certificate 730 to verify the signature 741 of the second certificate 740. can be verified (②).

제2 인증서(740)의 서명(741)에 대한 검증이 완료되면, 메모리 컨트롤러(755)는 메모리(770)에 저장된 펌웨어 이미지의 제2 인증서(774)에 저장된 펌웨어 키 버전과 새로운 펌웨어 이미지(700)의 펌웨어 키 버전(744)을 비교할 수 있다(③). When verification of the signature 741 of the second certificate 740 is completed, the memory controller 755 stores the firmware key version stored in the second certificate 774 of the firmware image stored in the memory 770 and the new firmware image 700. ) You can compare the firmware key version (744) (③).

새로운 펌웨어 이미지(700)의 펌웨어 키 버전(744)이 메모리(770)에 저장된 펌웨어 이미지의 제2 인증서(774)에 저장된 펌웨어 키 버전 보다 높으므로, 메모리 컨트롤러(755)는 펌웨어 데이터(720)의 바이너리에 대한 해시 값을 생성하여 펌웨어 핑거프린트(743)와 비교할 수 있다(④).Since the firmware key version 744 of the new firmware image 700 is higher than the firmware key version stored in the second certificate 774 of the firmware image stored in memory 770, the memory controller 755 A hash value for the binary can be generated and compared with the firmware fingerprint (743) (④).

해시 값과 펌웨어 핑거프린트(743)가 동일하므로, 메모리 컨트롤러(755)는 제2 인증서(740)의 공용키(742)를 사용하여 펌웨어 서명에 대한 검증을 수행할 수 있다(⑤).Since the hash value and the firmware fingerprint 743 are the same, the memory controller 755 can perform verification of the firmware signature using the public key 742 of the second certificate 740 (⑤).

도 8은 펌웨어 서명을 생성한 비밀키가 유출된 경우 악의로 조작된 펌웨어 서명을 갖는 펌웨어 이미지의 업데이트를 나타낸 도면이다. 도 8을 참조하면, 스토리지 장치(850)는 악의로 조작된 펌웨어 서명을 갖는 펌웨어 이미지(800)를 수신할 수 있다. 그러나, 스토리지 장치(850)는 펌웨어 이미지 검증을 통해 펌웨어 이미지 업데이트를 수행하지 않을 수 있다. 펌웨어 이미지(800)는 펌웨어 서명(810)과 펌웨어 데이터(820)가 조작된 이미지일 수 있다. Figure 8 is a diagram illustrating the update of a firmware image with a maliciously manipulated firmware signature when the private key that created the firmware signature is leaked. Referring to FIG. 8, the storage device 850 may receive a firmware image 800 with a maliciously manipulated firmware signature. However, the storage device 850 may not perform firmware image update through firmware image verification. The firmware image 800 may be an image in which the firmware signature 810 and firmware data 820 have been manipulated.

펌웨어 서명(810)에 사용된 비밀키가 유출될 수 있고, 이 경우 펌웨어 서명(810)과 펌웨어 데이터(820)가 조작될 수 있다. 그러나, 제1 인증서(830)와 제2 인증서(840)를 생성하는 데 사용된 비밀키, 즉 제1 인증서(830)의 비밀키는 유출되지 않으므로, 제1 인증서(830)와 제2 인증서(840)는 조작될 수 없다. 따라서, 제1 인증서(830)와 제2 인증서(840)에 포함된 펌웨어 핑거프린트(843)와 펌웨어 키 버전에 대한 정보(844)는 조작될 수 없다. 그러므로, 조작된 펌웨어 이미지(800)는 조작된 펌웨어 서명(810) 및 조작된 펌웨어 데이터(820)와 정상적인 제1 인증서(830) 및 정상적인 제2 인증서(840)를 포함할 수 있다.The secret key used for the firmware signature 810 may be leaked, and in this case, the firmware signature 810 and firmware data 820 may be manipulated. However, since the secret key used to generate the first certificate 830 and the second certificate 840, that is, the secret key of the first certificate 830 is not leaked, the first certificate 830 and the second certificate ( 840) cannot be manipulated. Accordingly, the firmware fingerprint 843 and information 844 about the firmware key version included in the first certificate 830 and the second certificate 840 cannot be manipulated. Therefore, the manipulated firmware image 800 may include a manipulated firmware signature 810, a manipulated firmware data 820, a normal first certificate 830, and a normal second certificate 840.

메모리 컨트롤러(855)는 롬(860)에 저장된 공용키(861)를 사용하여 제1 인증서(830)의 서명(831)을 검증할 수 있다(①).The memory controller 855 can verify the signature 831 of the first certificate 830 using the public key 861 stored in the ROM 860 (①).

제1 인증서(830)의 서명(831)에 대한 검증이 완료되면, 메모리 컨트롤러(855)는 제1 인증서(830)의 공용키(832)를 사용하여 제2 인증서(840)의 서명(841)을 검증할 수 있다(②).When verification of the signature 831 of the first certificate 830 is completed, the memory controller 855 uses the public key 832 of the first certificate 830 to verify the signature 841 of the second certificate 840. can be verified (②).

제2 인증서(840)의 서명(841)에 대한 검증이 완료되면, 메모리 컨트롤러(855)는 메모리(870)에 저장된 펌웨어 이미지의 제2 인증서(874)에 저장된 펌웨어 키 버전과 새로운 펌웨어 이미지(800)의 펌웨어 키 버전(844)을 비교할 수 있다(③). When verification of the signature 841 of the second certificate 840 is completed, the memory controller 855 stores the firmware key version stored in the second certificate 874 of the firmware image stored in the memory 870 and the new firmware image 800. ) You can compare the firmware key version (844) (③).

새로운 펌웨어 이미지(800)의 펌웨어 키 버전(844)이 메모리(870)에 저장된 펌웨어 이미지의 제2 인증서(874)에 저장된 펌웨어 키 버전과 동일하므로, 메모리 컨트롤러(855)는 펌웨어 데이터(820)의 바이너리에 대한 해시 값을 생성하여 펌웨어 핑거프린트(843)와 비교할 수 있다(④).Since the firmware key version 844 of the new firmware image 800 is the same as the firmware key version stored in the second certificate 874 of the firmware image stored in memory 870, the memory controller 855 A hash value for the binary can be generated and compared with the firmware fingerprint (843) (④).

조작된 펌웨어 데이터(820)의 해시 값은 정상의 펌웨어 핑거프린트(843)와 상이하므로, 메모리 컨트롤러(855)는 펌웨어 이미지(800)의 업데이트를 중단할 수 있다. Since the hash value of the manipulated firmware data 820 is different from the normal firmware fingerprint 843, the memory controller 855 may stop updating the firmware image 800.

종래에는 스토리지 장치의 롬에 스토리지 장치의 전체 수명기간 동안 펌웨어 서명 검증에 사용될 공용키들을 모두 저장하고, 이 공용키들 중 OTP 메모리에 저장된 값이 지시하는 공용키를 선택하여 펌웨어 서명 검증에 사용하고 있다. 따라서, OTP 메모리라는 하드웨어에 의존적이고, 롬에 저장한 공용키의 개수만큼의 공용키를 변경하여 사용할 수 있다는 제약사항이 있다.Conventionally, all public keys to be used for firmware signature verification during the entire lifespan of the storage device are stored in the ROM of the storage device, and among these public keys, the public key indicated by the value stored in the OTP memory is selected and used for firmware signature verification. . Therefore, it depends on the hardware called OTP memory, and there is a limitation that the number of public keys stored in ROM can be changed and used.

일 실시예는 스토리지 장치의 롬에 하나의 공용키를 저장하여 사용할 수 있으므로, 펌웨어 서명을 생성하는 데 사용되는 비밀키가 유출된 경우에도, 공용키의 교체가 요구되지 않으며, 별도의 OTP 메모리도 요구되지 않는다.In one embodiment, one public key can be stored and used in the ROM of the storage device, so even if the private key used to generate the firmware signature is leaked, replacement of the public key is not required, and a separate OTP memory is also required. Not required.

일 실시예에 따르면, 펌웨어 서명을 생성하는 데 사용되는 비밀키가 유출된 경우에도, 복수의 인증서 내에 펌웨어 이미지를 검증하기 위한 정보(예를 들어, 펌웨어 핑거프린트 및 펌웨어 키 버전 정보)를 포함시켜, 조작된 펌웨어 이미지를 사용한 스토리지 장치의 펌웨어 업데이트를 방지할 수 있다.According to one embodiment, even if the secret key used to generate the firmware signature is leaked, information for verifying the firmware image (e.g., firmware fingerprint and firmware key version information) is included in the plurality of certificates. , it is possible to prevent firmware updates of storage devices using manipulated firmware images.

일 실시예에 따르면, 펌웨어 핑거프린트가 조작되는 경우, 제2 인증서에 대한 검증이 실패하므로, 조작된 펌웨어 이미지를 사용한 스토리지 장치의 펌웨어 업데이트를 방지할 수 있다.According to one embodiment, if the firmware fingerprint is manipulated, verification of the second certificate fails, thereby preventing firmware update of the storage device using the manipulated firmware image.

도 9는 일 실시예에 따른 스토리지 장치를 SSD(solid-state drive) 시스템에 적용한 예를 나타내는 블록도이다.FIG. 9 is a block diagram illustrating an example of applying a storage device according to an embodiment to a solid-state drive (SSD) system.

도 9를 참조하면, SSD 시스템(900)은 호스트(910) 및 SSD(920)를 포함할 수 있다.Referring to FIG. 9 , the SSD system 900 may include a host 910 and an SSD 920.

SSD(920)는 도 1 내지 도 8을 참조하여 설명된 실시예들을 이용하여 구현될 수 있다. SSD(920)는 신호 커넥터(SGL: signal connector)를 통해 호스트(910)와 신호를 주고 받을 수 있고, 전원 커넥터(PWR: power connector)를 통해 전원을 입력받을 수 있다.SSD 920 may be implemented using the embodiments described with reference to FIGS. 1 to 8 . The SSD 920 can exchange signals with the host 910 through a signal connector (SGL) and receive power through a power connector (PWR).

SSD(920)는 신호 커넥터(SGL)를 통해 펌웨어 이미지 다운로드 커맨드 및 다운로드 대상이 되는 펌웨어 이미지를 수신할 수 있다.The SSD 920 can receive a firmware image download command and a firmware image to be downloaded through a signal connector (SGL).

SSD(920)는 컨트롤러(921), 보조 전원 장치(922) 및 복수의 메모리 시스템(923, 924, 925)을 포함할 수 있다. 복수의 메모리 시스템(923, 924, 925) 각각은 스토리지 장치로서 하나 이상의 플래시 메모리 장치를 포함할 수 있다. 또한, 각각의 플래시 메모리 장치는 하나 이상의 다이(DIE)들을 포함할 수 있으며, 각각의 다이(DIE)에는 하나 이상의 블록들이 배치될 수 있다.The SSD 920 may include a controller 921, an auxiliary power device 922, and a plurality of memory systems 923, 924, and 925. Each of the plurality of memory systems 923, 924, and 925 may include one or more flash memory devices as storage devices. Additionally, each flash memory device may include one or more dies (DIE), and one or more blocks may be disposed on each die (DIE).

컨트롤러(921)는 복수의 메모리 시스템(923, 924, 925)과 다수의 채널들(Ch1, …, Chn)을 통해 통신할 수 있다. 컨트롤러(921)는 SSD(920) 내에서 펌웨어 이미지의 검증 및 펌웨어 이미지를 기초로 한 업데이트 동작을 수행할 수 있다. The controller 921 may communicate with a plurality of memory systems 923, 924, and 925 through a plurality of channels (Ch1,..., Chn). The controller 921 may verify the firmware image within the SSD 920 and perform an update operation based on the firmware image.

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements made by those skilled in the art using the basic concept of the present invention defined in the following claims are also possible. It falls within the scope of rights.

Claims (10)

펌웨어 이미지 영역을 포함하는 메모리, 그리고
펌웨어 서명, 펌웨어 데이터, 및 상기 펌웨어 서명을 검증하기 위한 제1 인증서 공용키 및 펌웨어 핑거프린트를 포함하는 제1 인증서 및 상기 제1 인증서를 검증하기 위한 제2 인증서 공용키를 포함하는 제2 인증서를 포함하는 제1 펌웨어 이미지를 수신하고, 상기 제2 인증서 공용키를 사용하여 상기 제1 인증서를 검증하고, 상기 제1 인증서의 검증이 완료되면, 상기 펌웨어 데이터의 해시 값과 상기 펌웨어 핑거프린트가 일치하는지 여부를 비교하고, 상기 펌웨어 데이터의 해시 값과 상기 펌웨어 핑거프린트가 일치하면 상기 제1 인증서 공용키를 사용하여 상기 펌웨어 서명을 검증하고, 상기 펌웨어 서명이 검증되면 상기 제1 펌웨어 이미지를 상기 펌웨어 이미지 영역에 저장하는 메모리 컨트롤러
를 포함하는 스토리지 장치.
memory containing the firmware image area, and
a first certificate comprising a firmware signature, firmware data, and a first certificate public key and a firmware fingerprint for verifying the firmware signature, and a second certificate comprising a second certificate public key for verifying the first certificate. Receive a first firmware image including, verify the first certificate using the second certificate public key, and when verification of the first certificate is completed, the hash value of the firmware data and the firmware fingerprint match compare whether the hash value of the firmware data matches the firmware fingerprint, and if the hash value of the firmware data matches the firmware fingerprint, the firmware signature is verified using the first certificate public key, and if the firmware signature is verified, the first firmware image is sent to the firmware Memory controller that saves to the image area
A storage device containing a.
제1항에 있어서,
상기 메모리 컨트롤러는 상기 펌웨어 데이터의 해시 값과 상기 펌웨어 핑거프린트가 일치하지 않으면, 상기 펌웨어 이미지가 조작된 것으로 결정하는,
스토리지 장치.
According to paragraph 1,
If the hash value of the firmware data and the firmware fingerprint do not match, the memory controller determines that the firmware image has been manipulated.
Storage device.
제1항에 있어서,
상기 펌웨어 이미지 영역에는 상기 스토리지 장치의 제2 펌웨어 이미지가 저장되어 있고,
상기 제2 펌웨어 이미지와 상기 제1 펌웨어 이미지 각각은 펌웨어 키 버전 정보를 포함하고,
상기 메모리 컨트롤러는 상기 제1 펌웨어 이미지의 펌웨어 키 버전이 상기 제2 펌웨어 이미지의 펌웨어 키 버전 이상이면, 상기 제1 펌웨어 이미지의 펌웨어 데이터의 해시 값과 상기 제1 펌웨어 이미지의 펌웨어 핑거프린트가 일치하는지 여부를 비교하는,
스토리지 장치.
According to paragraph 1,
A second firmware image of the storage device is stored in the firmware image area,
Each of the second firmware image and the first firmware image includes firmware key version information,
If the firmware key version of the first firmware image is higher than the firmware key version of the second firmware image, the memory controller determines whether the hash value of the firmware data of the first firmware image and the firmware fingerprint of the first firmware image match. To compare whether,
Storage device.
제3항에 있어서,
상기 메모리 컨트롤러는 상기 제1 펌웨어 이미지의 펌웨어 키 버전이 상기 제2 펌웨어 이미지의 펌웨어 키 버전보다 낮으면, 상기 제1 펌웨어 이미지의 버전이 상기 제2 펌웨어 이미지의 버전보다 낮은 것으로 결정하는,
스토리지 장치.
According to paragraph 3,
If the firmware key version of the first firmware image is lower than the firmware key version of the second firmware image, the memory controller determines that the version of the first firmware image is lower than the version of the second firmware image.
Storage device.
제3항에 있어서,
상기 메모리 컨트롤러는 상기 제1 인증서의 검증이 완료되면 상기 제2 펌웨어 이미지와 상기 제1 펌웨어 이미지 각각의 키 버전을 서로 비교하는,
스토리지 장치.
According to paragraph 3,
The memory controller compares the key versions of each of the second firmware image and the first firmware image when verification of the first certificate is completed,
Storage device.
제5항에 있어서,
공용키를 저장하는 롬을 더 포함하고,
상기 메모리 컨트롤러는 상기 롬에 저장된 공용키를 사용하여 상기 제2 인증서를 검증하고, 상기 제2 인증서의 검증이 완료되면 상기 제1 인증서를 검증하는,
스토리지 장치.
According to clause 5,
It further includes a ROM that stores the public key,
The memory controller verifies the second certificate using the public key stored in the ROM, and verifies the first certificate when verification of the second certificate is completed.
Storage device.
제6항에 있어서,
상기 제1 인증서는 상기 제1 인증서의 서명을 포함하고, 상기 제2 인증서는 상기 제2 인증서의 서명을 포함하며, 상기 제1 인증서의 서명과 상기 제2 인증서의 서명은 동일한 비밀키로써 생성된,
스토리지 장치.
According to clause 6,
The first certificate includes the signature of the first certificate, the second certificate includes the signature of the second certificate, and the signature of the first certificate and the signature of the second certificate are generated with the same private key. ,
Storage device.
제7항에 있어서,
상기 메모리 컨트롤러는 상기 롬에 저장된 공용키를 사용하여 상기 제2 인증서의 서명을 검증하는,
스토리지 장치.
In clause 7,
The memory controller verifies the signature of the second certificate using the public key stored in the ROM,
Storage device.
제7항에 있어서,
상기 메모리 컨트롤러는 상기 제2 인증서 공용키를 사용하여 상기 제1 인증서의 서명을 검증하는,
스토리지 장치.
In clause 7,
The memory controller verifies the signature of the first certificate using the second certificate public key,
Storage device.
복수의 메모리 시스템, 그리고
상기 복수의 메모리 시스템을 제어하고, 신호 커넥터를 통해 호스트로부터 펌웨어 데이터 및 펌웨어 핑거프린트를 포함하는 펌웨어 이미지를 수신하고, 상기 펌웨어 데이터의 해시 값과 상기 펌웨어 핑거프린트가 일치하지 않으면, 상기 펌웨어 이미지가 조작된 것임을 상기 호스트에 보고하는 컨트롤러
포함하는 스토리지 장치.스토리지 장치.
multiple memory systems, and
Control the plurality of memory systems, receive a firmware image including firmware data and a firmware fingerprint from a host through a signal connector, and if the hash value of the firmware data and the firmware fingerprint do not match, the firmware image is A controller that reports to the host that it has been tampered with.
Contains a storage device.storage device.
KR1020220066817A 2022-03-07 2022-05-31 Storage device and method thereof KR20230131750A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US18/146,363 US20230281312A1 (en) 2022-03-07 2022-12-24 Storage device and operation method thereof
CN202310205281.3A CN116720228A (en) 2022-03-07 2023-03-06 Memory device and operating method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220028948 2022-03-07
KR1020220028948 2022-03-07

Publications (1)

Publication Number Publication Date
KR20230131750A true KR20230131750A (en) 2023-09-14

Family

ID=88014012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220066817A KR20230131750A (en) 2022-03-07 2022-05-31 Storage device and method thereof

Country Status (1)

Country Link
KR (1) KR20230131750A (en)

Similar Documents

Publication Publication Date Title
CN111066007B (en) RPMB improvement for managed NAND
US10521617B2 (en) Non-volatile memory device with secure read
US10997297B1 (en) Validating firmware for data storage devices
US11520483B2 (en) Operating method for performing firmware image chunk update and verification of whether damage as occurred on storage device
US20140032935A1 (en) Memory system and encryption method in memory system
US10255200B2 (en) Data storage device and method of operation using multiple security protocols
US11783044B2 (en) Endpoint authentication based on boot-time binding of multiple components
US10339318B2 (en) Semiconductor memory system and operating method thereof
JP2022527163A (en) Verification of the validity of data stored in memory using cryptographic hashes
US20220366025A1 (en) Vendor unique command authentication system, and a host device, storage device, and method employing the same
US11698970B2 (en) Double wrapping for verification
CN115576483A (en) Secure identity linking between trusted computing based components
US20200310776A1 (en) Over-the-air update validation
KR20230131750A (en) Storage device and method thereof
US11736453B2 (en) Secure key storage devices
US11531476B2 (en) Memory system and memory system discard method
US20230281312A1 (en) Storage device and operation method thereof
KR20220128394A (en) Multi-factor authentication-capable memory subsystem
CN116720228A (en) Memory device and operating method thereof
KR20220045758A (en) Storage device and operating method thereof
US20230057004A1 (en) Secure Collection of Diagnostics Data about Integrated Circuit Memory Cells
KR102430495B1 (en) Storage device, host device and data tranfering method thereof
US20230222219A1 (en) Storage controller, storage system, and method of operating storage device
CN115408729A (en) Vendor independent facility for a provisioning application to access a secure memory device
CN115809488A (en) Storage device, method of generating key in storage device and method of performing authentication in storage device