KR20220026079A - 스토리지 장치 - Google Patents

스토리지 장치 Download PDF

Info

Publication number
KR20220026079A
KR20220026079A KR1020200106697A KR20200106697A KR20220026079A KR 20220026079 A KR20220026079 A KR 20220026079A KR 1020200106697 A KR1020200106697 A KR 1020200106697A KR 20200106697 A KR20200106697 A KR 20200106697A KR 20220026079 A KR20220026079 A KR 20220026079A
Authority
KR
South Korea
Prior art keywords
boot
firmware
memory
signature
image
Prior art date
Application number
KR1020200106697A
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 KR1020200106697A priority Critical patent/KR20220026079A/ko
Priority to US17/237,532 priority patent/US11520896B2/en
Priority to EP21192352.9A priority patent/EP3961451B1/en
Priority to CN202110980516.7A priority patent/CN114115712A/zh
Publication of KR20220026079A publication Critical patent/KR20220026079A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

스토리지 장치가 제공된다. 스토리지 장치는, 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬, 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리, 복수의 공용키 및 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역, 및 플래시 부트 이미지에 대한 제1 부트 서명이 저장된 제2 영역을 포함하는 제1 메모리, 유저 데이터 영역과, 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리, 및 제1 펌웨어 서명과 다른 제2 펌웨어 서명을 포함하는 제2 펌웨어 이미지를 제공받고, 제2 펌웨어 이미지의 제공에 응답하여 제1 메모리의 제1 영역으로부터 복수의 공용키 중 제2 공용키와 플래시 부트 이미지를 수신하고, 제1 메모리의 제2 영역에 제2 부트 서명을 라이트하는 메모리 컨트롤러를 포함한다.

Description

스토리지 장치{STORAGE DEVICE}
본 발명은 스토리지 장치에 관한 것이다.
컴퓨터 등과 같은 전자 장치의 하드웨어 기능이 다양화됨에 따라 운영 체제(Operating System; OS)도 함께 발전하여 왔다. 이에 따라 최근 운영 체제는 다양한 기능을 제공하고 각종 응용 프로그램(application)도 수행할 수 있는 형태로 구현되었으나, 복잡한 기능으로 인해 용량이 과도하게 커짐에 따라 부팅과 동시에 커널(Kernel)을 실행하여 운영 체제를 실행하는 데에는 많은 시간이 소요되는 문제가 발생하였다.
이러한 문제를 해결하기 위해, 최근 스마트폰, PDA, 인터넷 가전 등과 같은 전자 장치에서는 운영 체제를 컴퓨터와 같이 디스크에서 읽어들이는 것이 아니라 별도의 칩에 저장하여 기기에 내장시킨 임베디드 운영 체제 기반의 시스템을 주로 사용하고 있다.
본 발명이 해결하고자 하는 기술적 과제는 스토리지 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬, 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리, 복수의 공용키 및 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역, 및 플래시 부트 이미지에 대한 제1 부트 서명이 저장된 제2 영역을 포함하는 제1 메모리, 유저 데이터 영역과, 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리, 및 제1 펌웨어 서명과 다른 제2 펌웨어 서명을 포함하는 제2 펌웨어 이미지를 제공받고, 제2 펌웨어 이미지의 제공에 응답하여 제1 메모리의 제1 영역으로부터 복수의 공용키 중 제2 공용키와 플래시 부트 이미지를 수신하고, 제1 메모리의 제2 영역에 제2 부트 서명을 라이트하는 메모리 컨트롤러를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬, 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리, 복수의 공용키 및 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역, 및 플래시 부트 이미지에 대한 제1 부트 서명이 저장된 제1 영역과 다른 제2 영역을 포함하는 제1 메모리, 유저 데이터 영역과, 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리, 및 제1 펌웨어 서명과 다른 제2 펌웨어 서명을 포함하는 제2 펌웨어 이미지를 제공받고, 제2 펌웨어 이미지의 제공에 응답하여 펌웨어 이미지 영역에 제2 펌웨어 이미지를 라이트하는 메모리 컨트롤러를 포함하되, 제1 메모리의 제1 영역은 메모리 컨트롤러에 의해 리드만 가능한 영역이고, 제1 메모리의 제2 영역은 메모리 컨트롤러에 의해 리드 및 라이트가 가능한 영역이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬, 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리, 복수의 공용키, 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역 및 플래시 부트 이미지에 대한 제1 부트 서명이 저장되고 제1 영역과 다른 제2 영역을 포함하는 제1 메모리, 유저 데이터 영역과, 제1 공용키에 대응하는 제1 비밀키에 의해 생성된 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리, 및 제1 펌웨어 서명과 다른 제2 펌웨어 서명을 포함하는 제2 펌웨어 이미지를 제공받아, 제2 펌웨어 이미지의 제공에 응답하여 플래시 부트 이미지에 대한 제2 부트 서명을 제1 메모리의 제2 영역에 라이트하고, OTP 메모리가 복수의 공용키 중 제1 공용키와 다른 제2 공용키를 지시하도록 OTP 메모리에 데이터를 라이트하는 메모리 컨트롤러를 포함하되, 제2 펌웨어 서명은, 제2 공용키에 대응되는 제2 비밀키와 제2 펌웨어 이미지에 의해 생성되고, 메모리 컨트롤러는,OTP 메모리가 제2 공용키를 지시하도록 OTP 메모리에 데이터를 라이트 한 후, 제1 메모리의 제2 영역에 저장된 제1 부트 서명을 삭제한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예들에 따른 반도체 메모리 장치를 설명하기 위한 메모리 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 스토리지 장치를 설명하기 위한 블록도이다.
도 3은 도 2의 스토리지 장치의 부팅 과정을 설명하기 위한 도면이다.
도 4는 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 블록도이다.
도 5는 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 흐름도이다.
도 6은 도 5에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 블록도이다.
도 7은 도 5의 새로운 펌웨어 이미지를 설명하기 위한 블록도이다.
도 8은 도 5의 S70단계를 설명하기 위한 블록도이다.
도 9는 도 5의 S72단계를 설명하기 위한 블록도이다.
도 10은 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 흐름도이다.
도 11은 도 10의 S82 단계를 설명하기 위한 블록도이다.
도 12는 도 10의 S82 단계를 설명하기 위한 블록도이다.
도 13은 도 10의 S82 단계를 설명하기 위한 블록도이다.
도 14는 도 10의 S82 단계를 설명하기 위한 블록도이다.
도 15는 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 흐름도이다.
도 16은 도 15의 S92 및 S94 단계를 설명하기 위한 블록도이다.
도 1은 몇몇 실시예들에 따른 반도체 메모리 장치를 설명하기 위한 메모리 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 몇몇 실시예들에 따른 반도체 메모리 시스템은 호스트 장치(100) 및 스토리지 장치(200)를 포함한다.
호스트 장치(100)는 스토리지 장치(200)에 데이터와 읽기(Read), 쓰기(Write) 및 지우기(Erase) 등의 커맨드를 전송할 수 있다. 스토리지 장치(200)는 호스트 장치(100)로부터 전송된 커맨드에 응답하여 데이터를 읽거나, 데이터를 쓰거나, 데이터를 지울 수 있다.
호스트 장치(100)는 PC(Personal Computer), 랩탑 컴퓨터(laptop computer), 이동 전화기(mobile phone), 스마트폰(smartphone), 태블릿 PC(tablet PC), PDA(Personnal Digital Assistant), EDA(Enterprise Digital Assistant), 디지털 카메라(digital camera), PMP(Portable Multimedia Player), PND(Portable Navigation Device), MP3 플레이어들, 또는 e-북(e-book) 등으로 구현될 수 있다.
호스트 장치(100)는 중앙 처리 장치(CPU; Central Processing Unit)(110), ROM(Read Only Memory)(120), RAM(Random Access Memory)(130), 메모리 인터페이스(140)를 포함할 수 있다.
중앙 처리 장치(110)는 ROM(120)이나 RAM(130)에 저장되거나 상주한 운영 프로그램(OS)을 실행할 수 있다. 중앙 처리 장치(110)는 ROM(120)이나 메모리 시스템(150)에 저장된 프로그램을 실행하고 제어할 수 있다. 중앙 처리 장치(110)는 호스트 장치(100)의 전반적인 동작을 제어할 수 있다.
ROM(120)은 호스트 장치(100)를 부팅하기 위해 필요한 데이터가 저장될 수 있다. RAM(130)은 호스트 장치(100)의 메인 메모리나 캐시 메모리로 사용되거나, 메모리 시스템(150)으로 제공될 데이터를 임시적으로 저장할 수 있다.
RAM(130)은 예를 들어, DRAM, SDRAM (Synchronous DRAM), DDR SDRAM (Double Data Rate SDRAM), LPDDR SDRAM (Low Power Double Data Rate SDRAM), GDDR SDRAM (Graphics Double Data Rate SDRAM), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM 등과 같은 동적 랜덤 억세스 메모리 또는 SRAM 일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
호스트 장치(100)와 스토리지 장치(200)는 메모리 인터페이스(140)를 통해 데이터를 주고 받을 수 있다. 메모리 인터페이스(140)는 UFS(Universal Flash Storage), SCSI((Small Computer System Interface), SAS(Serial Attached SCSI), SATA(Serial Advanced Technology Attachment), PCIe(Peripheral Component Interconnect Express), eMMC(embedded MultiMediaCard), FC(Fibre Channel), ATA(Advanced Technology Attachment), IDE(Intergrated Drive Electronics), USB(Universal Serial Bus), IEEE 1394(Firewire)등 일 수 있다. 또한 메모리 인터페이스(140)는 호스트 장치(100)와 스토리지 장치(200)가 데이터를 주고 받을 수 있게 하는 임의의 인터페이스일 수 있다.
스토리지 장치(200)는 데이터가 전기적으로 기입되고 소거될 수 있는 비휘발성 데이터 저장 매체일 수 있다. 스토리지 장치(200)는 SSD(Solid State Driver), 메모리 카드(flash memory card), 멀티미디어 카드(multimedia card: MMC), USB 플래쉬 드라이버(USB flash driver), 스마트미디어(smartmedia), 컴팩트 플래쉬, 메모리 스틱(memory stick), SD 카드(secure digital card), 유니버셜 플래쉬 저장 장치(Universal flash storage: UFS) 등 일 수 있다.
시스템 버스(105)는 중앙 처리 장치(110), ROM(120), RAM(130) 및 메모리 인터페이스(140) 사이의 연결을 수행할 수 있다.
도 2는 도 1의 스토리지 장치를 설명하기 위한 블록도이다.
도 2를 참조하면, 몇몇 실시예들에 따른 스토리지 장치(200)는, 시스템 버스(205), 메모리 컨트롤러(210), OTP 메모리(220), 부트 롬(230), 제1 메모리(260) 및 제2 메모리(270)를 포함할 수 있다.
메모리 컨트롤러(210)는 OTP 메모리(220), 부트 롬(230), 제1 메모리(260) 및 제2 메모리(270)의 전반적인 동작을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 호스트 장치(100)로부터 데이터, 어드레스 및 커맨드를 수신하고, 이에 응답하여 제2 메모리(270)의 동작을 제어할 수 있다.
OTP 메모리(One-Time Programmable Memory, 220)는 부팅 시 사용되는 공용키를 지시할 수 있다. 예를 들어, 부트 롬(230) 내에 저장된 복수의 공용키(235) 중 하나를 지시할 수 있다. 제1 메모리(260)의 제1 영역(240)에 저장된 복수의 공용키 중 하나를 지시할 수 있다. 즉 OTP 메모리(220)는 공용키(235, 245)의 주소를 지시할 수 있다. 메모리 컨트롤러(210)는 OTP 메모리(220)가 지시하는 공용키(235, 245)를 이용하여 스토리지 장치(200)를 부팅할 수 있다.
부트 롬(230)은 부트 롬 이미지(232)를 포함할 수 있다. 부트 롬 이미지(232)는 스토리지 장치(200)의 부팅 시 실행되는 부트 코드를 포함할 수 있다. 부트 롬 이미지(232)는 복수의 공용키(235)를 포함할 수 있다. 공용키 (235)는 스토리지 장치(200)의 제조 과정에서 부트 롬 이미지(232)에 주입될 수 있다.
제1 메모리(260)는 스토리지 장치(200)의 부팅 시, 부트 롬(230)이 실행된 이후 실행되는 부트 코드를 포함할 수 있다. 따라서 제1 메모리(260)는 호스트(도 1의 100)에 의해 액세스가 제한되는 메모리일 수 있다. 즉, 제1 메모리(260)는 호스트에 의해 데이터가 라이트되거나 리드되는 영역이 아닐 수 있다.
제1 메모리(260)는 제1 영역(240)과 제2 영역(250)을 포함할 수 있다.
제1 영역(240)은 부트 롬 이미지(232)와 다른 플래시 부트 이미지(252)가 저장될 수 있다. 플래시 부트 이미지(252)는 스토리지 장치(200)의 부팅 시 실행되는 부트 코드를 포함할 수 있다. 제1 영역(240)은 메모리 컨트롤러(210)에 의해 리드만 가능하며 라이트가 불가한 영역일 수 있다.
플래시 부트 이미지(252)는 복수의 공용키(245)를 포함할 수 있다. 복수의 공용키(245)는 스토리지 장치(200)의 제조 과정에서 플래시 부트 이미지(252)에 주입될 수 있다.
제2 영역(250)은 플래시 부트 이미지(252)에 대한 부트 서명(255)이 저장될 수 있다. 즉, 몇몇 실시예들에 따른 제1 메모리(260)는 플래시 부트 이미지(252)가 저장되는 제1 영역(240)과 부트 서명(255)이 저장되는 제2 영역(250)이 분리될 수 있다.
부트 서명(255)은 예를 들어, 부트 서명(255)은 플래시 부트 이미지(252)와 복수의 공용키(245) 중 하나의 공용키를 이용하여 생성될 수 있다. 부트 서명(255)은 스토리지 장치(200)의 제조 시 제1 영역(240)의 플래시 부트 이미지(252)와 함께 제2 영역(250)에 저장될 수 있다. 또한 부트 서명(255)은 메모리 컨트롤러(210)에 의해 스토리지 장치(20)의 업데이트 과정에서 라이트될 수 있다. 즉, 제2 영역(250)은 메모리 컨트롤러(210)에 의해 리드 및 라이트가 가능한 영역일 수 있다.
제1 메모리(260)는 비휘발성 메모리를 포함할 수 있다. 제1 메모리(260)는 예를 들어, 노아 플래시 메모리(NOR Flash Memory)일 수 있다.
제2 메모리(270)는 유저 데이터 영역(280)과 펌웨어 이미지 영역(290)을 포함할 수 있다.
유저 데이터 영역(280)은 호스트에 의해 액세스될 수 있는 영역일 수 있다. 예를 들어, 유저 데이터 영역(280)은 호스트로부터 제공된 리드 또는 라이트 등의 커맨드에 따라 메모리 컨트롤러(210)에 의해 데이터가 라이트되고 리드되는 영역일 수 있다. 즉, 유저 데이터 영역(280)은 제2 메모리(270)에서 데이터가 라이트되고 저장되는 대부분의 영역일 수 있다.
이에 반해, 펌웨어 이미지 영역(290)은 호스트에 의한 액세스가 제한되는 영역일 수 있다. 펌웨어 이미지 영역(290)은 펌웨어 이미지가 저장될 수 있다. 펌웨어 이미지는 메모리 컨트롤러(210)의 펌웨어(215)의 부팅 시 실행되는 부트 코드를 포함할 수 있다. 펌웨어 이미지는 스토리지 장치(200)의 제조 과정에서 펌웨어 이미지 영역(290)에 저장될 수 있다. 또는 스토리지 장치(200)의 출고 후 펌웨어 업데이트에 의해 새로운 펌웨어 이미지가 펌웨어 이미지 영역(290)에 저장될 수 있다.
제2 메모리(270)는 비휘발성 메모리를 포함할 수 있다. 제2 메모리(270)는 예를 들어, 낸드 플래쉬 메모리(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) 또는 이와 유사한 비휘발성 메모리 장치 등이 포함될 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
OTP 메모리(220), 부트 롬(230), 제1 메모리(260) 및 제2 메모리(270)의 펌웨어 이미지 영역(290)은 스토리지 장치(200)의 부팅에 사용되는 정보, 부트 코드가 저장되는 공간으로서 호스트가 임의로 변경할 수 없으며 보안성이 유지되는 영역일 수 있다. 이하 도 3을 참조하여 자세히 설명한다.
시스템 버스(205)는 메모리 컨트롤러(210), OTP 메모리(220), 부트 롬(230), 제1 메모리(260) 및 제2 메모리(270) 사이의 연결을 수행할 수 있다.
도 3은 도 2의 스토리지 장치의 부팅 과정을 설명하기 위한 도면이다.
도 2 및 도 3을 참조하면, 스토리지 장치(200)에 파워가 인가되면, 부트 롬(230)은 메모리 컨트롤러(210)로 복사될 수 있다. 복사된 부트 롬 이미지(232)는 메모리 컨트롤러(210)에 의해 실행될 수 있다. 이에 따라 메모리 컨트롤러(210)는 부트 롬(230)의 코어로 변경될 수 있다.
이어서, 제1 메모리(260)가 메모리 컨트롤러(210)로 복사될 수 있다. 메모리 컨트롤러(210)는 복사된 플래시 부트 이미지(242)를 검증할 수 있다. 메모리 컨트롤러(210)는 OTP 메모리(220)에 라이트 데이터 읽을 수 있다. 메모리 컨트롤러(210)는 OTP 메모리(220)에 라이트 데이터에 기초하여, 부트 롬 이미지(232) 내의 제1 공용키(236)를 이용하여 플래시 부트 이미지(242)의 부트 서명(256)을 검증할 수 있다. 예를 들어, 메모리 컨트롤러(210)는 OTP 메모리(220)가 지시하는 제1 공용키(236)를 이용하여 플래시 부트 이미지(242)의 부트 서명(256)을 검증할 수 있다. 제1 공용키(236)는 플래시 부트 이미지(242)가 인증된 곳에서 제조되었음을 확인하기 위한 값일 수 있다.
플래시 부트 이미지(242)의 부트 서명(256)이 검증되면, 플래시 부트 이미지(242)는 메모리 컨트롤러(210)에 의해 실행될 수 있다. 이에 따라 메모리 컨트롤러(210)는 제2 메모리(270)의 코어로 변경될 수 있다.
이어서, 제2 메모리(270)의 펌웨어 이미지 영역(290)으로부터 펌웨어 이미지(292)가 메모리 컨트롤러(210)로 복사될 수 있다. 펌웨어 이미지(292)는 펌웨어 서명(296)을 포함할 수 있다. 펌웨어 서명(296)은 펌웨어 이미지(292)와 제조사의 비밀키를 이용하여 생성될 수 있다. 펌웨어 서명(296)은 스토리지 장치(200)의 제조 시 펌웨어 이미지(292)와 함께 펌웨어 이미지 영역(290)에 저장될 수 있다.
메모리 컨트롤러(210)는 복사된 펌웨어 이미지(292)를 검증할 수 있다. 메모리 컨트롤러(210)는 OTP 메모리(220)에 라이트된 데이터에 기초하여, 제1 메모리(260) 내의 제1 공용키(246)를 이용하여 펌웨어 이미지(292)의 펌웨어 서명(296)을 검증할 수 있다. 이에 따라 펌웨어 이미지(292)가 인증된 곳에서 제조되었음이 확인될 수 있다.
부트 롬 이미지(232)에 저장된 공용키(236, 237, 238) 각각의 주소는 플래시 부트 이미지(242)에 저장된 공용키(246, 247, 248) 각각의 주소와 대응될 수 있다. 예를 들어, 부트 롬 이미지(232) 내에 제1 공용키(236)가 저장된 주소는 플래시 부트 이미지(242) 내에 제1 공용키(246)가 저장된 주소에 대응될 수 있다. OTP 메모리(220)에 라이트된 데이터에 기초하여 부팅 시, 부트 롬 이미지(232)에 저장된 복수의 공용키(236, 237, 238) 및 플래시 부트 이미지(242)에 저장된 복수의 공용키(246, 247, 248)가 이용되기 때문이다. 이에 따라 플래시 부트 이미지(242)의 검증과 펌웨어 서명(296)의 검증은 동일한 공용키에 의해 수행될 수 있다.
펌웨어 이미지(192)의 펌웨어 서명(296)이 검증되면, 펌웨어 이미지(292)는 메모리 컨트롤러(210)에 의해 실행될 수 있다. 이에 따라 메모리 컨트롤러(210)는 펌웨어의 코어로 변경될 수 있다. 즉, 메모리 컨트롤러(210)는 펌웨어에 의해 동작될 수 있다.
이에 따라 스토리지 장치(200)는 보안 부팅될 수 있다. 이후 스토리지 장치(200)는 펌웨어에 의해 구동될 수 있다.
도 4는 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 블록도이다.
도 4를 참조하면, 스토리지 장치(200)는 제2 메모리(270)의 펌웨어 이미지 영역(290)의 보안 업데이트(Secure Update)를 수행할 수 있다. 보안 업데이트는 스토리지 장치(200)가 부팅되어 있는 상태에서 수행될 수 있다. 즉, 메모리 컨트롤러(210)는 펌웨어(215)에 의해 구동되는 상태일 수 있다. 보안 업데이트는 펌웨어(215)에 의해 수행될 수 있다.
스토리지 장치(200)는 외부로부터 새로운 펌웨어 이미지를 제공받을 수 있다. 펌웨어(215)는 새로운 펌웨어 이미지 제공에 응답하여, 제2 메모리(270)의 펌웨어 이미지 영역(290)에 새로운 펌웨어 이미지를 라이트할 수 있고, 제1 메모리(260)의 제2 영역(250)에 새로운 부트 서명(255)을 라이트할 수 있다. 또한 펌웨어(215)는 새로운 펌웨어 이미지 제공에 응답하여 OTP 메모리(220)에 공용키 라이트 커맨드를 제공할 수 있다. OTP 메모리(220)는 공용키 라이트 커맨드에 응답하여 다른 공용키를 지시할 수 있다. 이하, 도 5 내지 도 9를 참조하여 자세히 설명한다.
도 5는 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 흐름도이다. 도 6은 도 5에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 블록도이다. 도 7은 도 5의 새로운 펌웨어 이미지를 설명하기 위한 블록도이다. 도 8은 도 5의 S70단계를 설명하기 위한 블록도이다. 도 9는 도 5의 S72단계를 설명하기 위한 블록도이다.
도 5 및 도 6을 참조하면, 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법은, 펌웨어(도 4의 215, 이하 215)가 새로운 제2 펌웨어 이미지(302)를 제공받으면서 시작될 수 있다(S10). 예를 들어, 펌웨어(215)는 외부로부터 제2 펌웨어 이미지(302)를 포함하는 업데이트 커맨드를 제공받을 수 있다.
펌웨어(215)는 제2 펌웨어 이미지(302) 수신에 응답하여, 제2 펌웨어 이미지(302)를 제2 메모리(270)의 펌웨어 이미지 영역(290)에 라이트할 수 있다.
펌웨어(215)는 제2 펌웨어 이미지(302) 수신에 응답하여, 제1 공용키(236, 246)의 폐기가 필요한지 판단할 수 있다(S15). 펌웨어(215)는 제2 펌웨어 이미지(302)에 포함된 제2 펌웨어 서명(307)에 기초하여 제1 공용키(236, 246)의 폐기가 필요한지 판단할 수 있다. 예를 들어, 제2 펌웨어 서명(307)에 사용된 비밀키가 기존의 제1 펌웨어 서명(296)에 사용된 비밀키와 다른 경우, 펌웨어(215)는 제1 공용키(236, 246)의 폐기가 필요하다고 판단할 수 있다.
펌웨어(215)는 제1 공용키(236, 246)의 폐기가 필요하다고 판단되면, 제2 펌웨어 이미지(302)로부터 새로운 제2 부트 서명(257)을 리드할 수 있다(S20).
예를 들어, 도 7을 참조하면, 펌웨어(215)가 제공받은 제2 펌웨어 이미지(302)는 암호화된 상태일 수 있다. 제2 펌웨어 이미지(302)는 제2 펌웨어 서명(307) 및 제2 부트 서명(257)을 포함할 수 있다. 제2 펌웨어 서명(307)은 제2 펌웨어 이미지(302)와 제2 개인키(317)를 이용하여 디지털 서명 알고리즘(Digital Signature Algorithm, DSA)에 의해 생성될 수 있다. 제2 부트 서명(257)은 플래시 부트 이미지(242)와 제2 개인키(317)를 이용하여 디지털 서명 알고리즘에 의해 생성될 수 있다.
디지털 서명 알고리즘이란, 주어진 데이터에 자신만이 알고 있는 비밀키를 이용하여 서명을 생성하는 알고리즘을 의미할 수 있다. 제3자는 검증용 공용키를 이용하여 서명 검증을 통해 데이터가 검증된 이로부터 만들어 졌음을 확인할 수 있다.
따라서, 제2 펌웨어 서명(307)을 통해 제2 펌웨어 이미지(302)는 제조사에 의해 생성되었음이 검증될 수 있다. 이를 통해 제2 펌웨어 이미지(302)의 제조사 인증과 무결성이 확보될 수 있다. 제1 펌웨어 서명(296)은 제1 비밀키에 의해 생성되고 제2 펌웨어 서명(307)은 제1 비밀키와 다른 제2 비밀키에 의해 생성되었기 때문에 펌웨어(215)는 제1 공용키(236, 246)의 폐기가 필요하다고 판단할 수 있다. 따라서 펌웨어(215)는 제2 펌웨어 이미지(302)로부터 새로운 제2 부트 서명(257)을 리드할 수 있다.
다시 도 5 및 도 6을 참조하면, 펌웨어(215)는 새로운 제2 부트 서명(257)을 제1 메모리의 제2 영역(250)에 라이트할 수 있다(S30).
이어서, 펌웨어(215)는 OTP 메모리(220)에 데이터를 라이트할 수 있다(S40). 이에 따라 OTP 메모리(220)는 다른 공용키, 즉 제2 공용키(237, 247)를 지시할 수 있다.
OTP 메모리(220)의 특성에 의해, OTP 메모리(220)는 제1 공용키(236, 246)을 다시 지시할 수 없다. 즉, 부트 롬 이미지(232)에 저장된 제1 공용키(236)와 플래시 부트 이미지(242)에 저장된 제1 공용키(246)는 다시 사용될 수 없으며, 폐기(revoke)될 수 있다. 따라서 몇몇 실시예들에 따른 스토리지 장치는 업데이트 과정에서 공용키가 이전 공용키로 롤 백(roll back)하는 것을 방지할 수 있다.
이어서, 펌웨어(215)는 제1 메모리의 제2 영역(250)에 라이트된 이전의 제1 부트 서명(256)을 삭제할 수 있다(S50).
이에 따라 펌웨어(215)는 펌웨어 업데이트를 성공하고(S60), 스토리지 장치는 새로운 제2 공용키(237, 247)를 이용하여 보안 부팅될 수 있다(S70).
즉, 앞서 도 3을 이용하여 설명한 바와 같이, 도 8을 참조하면, 스토리지 장치에 파워가 인가되면, 부트 롬 이미지(232)는 메모리 컨트롤러(210)로 복사될 수 있다. 메모리 컨트롤러(210)는 부트 롬(230)의 코어로 변경될 수 있다.
이어서, 플래시 부트 이미지(242) 및 제2 부트 서명(257)은 메모리 컨트롤러(210)로 복사될 수 있다. 메모리 컨트롤러(210)는 OTP 메모리(220)에 라이트 데이터를 리드할 수 있다.
메모리 컨트롤러(210)는 리드된 OTP 메모리(220)의 데이터에 따라 부트 롬 이미지(232) 내의 제2 공용키(237)를 이용하여 제2 부트 서명(257)을 검증할 수 있다. 제2 부트 서명(257)은 플래시 부트 이미지(242) 내의 제2 공용키(247)를 이용하여 생성된 것이기 때문에, 부트 롬 이미지(232) 내의 제2 공용키(237)에 의해 검증될 수 있다. 이에 따라, 플래시 부트 이미지(242)가 실행될 수 있고, 메모리 컨트롤러(210)는 제2 메모리(270)의 코어로 변경될 수 있다.
이어서, 제2 펌웨어 이미지(302)는 메모리 컨트롤러(210)로 복사될 수 있다. 메모리 컨트롤러(210)는 OTP 메모리(220)의 데이터를 리드할 수 있다.
메모리 컨트롤러(210)는 리드된 OTP 메모리(220)에 라이트된 데이터에 따라 플래시 부트 이미지(242) 내의 제2 공용키(247)를 이용하여 제2 펌웨어 서명(307)을 검증할 수 있다. 제2 펌웨어 서명(307)은 제2 공용키(237, 247)에 대응되는 제2 비밀키에 의해 생성된 것이기 때문에 플래시 부트 이미지(242) 내의 제2 공용키(247)에 의해 검증될 수 있다. 이에 따라 제2 펌웨어 이미지(302)가 실행될 수 있고, 메모리 컨트롤러(210)는 펌웨어(215)의 코어로 변경될 수 있다.
이에 따라 스토리지 장치(200)는 업데이트된 제2 펌웨어 이미지(302)를 이용하여 보안 부팅될 수 있다.
반면, S15 단계에서 제1 공용키(236, 246)의 폐기가 필요한지 않다고 판단되면, 펌웨어(215)는 제2 펌웨어 이미지(302)를 펌웨어 이미지 영역(290)에 라이트 한 후, 펌웨어 업데이트를 성공할 수 있다(S62). 예를 들어, 펌웨어(215)는 제2 펌웨어 서명(307)과 제1 펌웨어 서명(296)이 서로 동일한 비밀키에 의해 생성된 경우, 제1 공용키(236, 246)의 폐기가 필요하지 않다고 판단할 수 있다. 제2 펌웨어 서명(306)이 제1 비밀키에 의해 생성된 경우, OTP 메모리(220)는 이미 제1 비밀키에 대응되는 부트 롬 이미지(232) 내의 제1 공용키(236) 및 플래시 부트 이미지(242) 내의 제1 공용키(246)를 지시하고 있기 때문에, OTP 메모리(220)에 라이트된 데이터를 변경할 필요가 없기 때문이다.
또한, 부트 롬 이미지(232) 내의 제1 공용키(236) 및 플래시 부트 이미지(242) 내의 제1 공용키(246)는 제1 비밀키에 대응되기 때문에, 부트 롬 이미지(232) 내의 제1 공용키(236) 및 플래시 부트 이미지(242) 내의 제1 공용키(246)를 폐기할 필요가 없기 때문이다.
이에 따라 펌웨어(215)는 펌웨어 업데이트를 성공하고, 스토리지 장치(200)는 기존의 제1 공용키(236, 246)를 이용하여 보안 부팅될 수 있다(S70). 도 9를 참조하면, 스토리지 장치(200)는 부트 롬 이미지(232)를 실행하고, 제1 공용키(236)를 이용하여 제1 부트 서명(256)을 검증하고 플래시 부트 이미지(242)를 실행하고, 제1 공용키(246)를 이용하여 제2 펌웨어 서명(306)을 검증하고 제2 펌웨어 이미지(302)를 실행하여 보안 부팅될 수 있다.
보안 부팅을 지원하는 스토리지 장치에서 보안 부팅에 사용되는 공용키 등이 노출되었거나 공용키에 문제가 생긴 경우, 공용키를 폐기하는 방법이 필요하다. 이 경우, 새로운 비밀키로 서명된 펌웨어 서명을 포함하는 새로운 펌웨어 이미지가 스토리지 장치에 제공되어야 한다. 스토리지 장치 내 부트 롬 이미지와 플래시 부트 이미지에는 제조 시 복수의 공용키가 각각 저장될 수 있다. 따라서 스토리지 장치는 새로운 펌웨어 이미지를 제공받으면, 복수의 공용키 중 새로운 펌웨어 이미지에 포함된 펌웨어 서명에 대응되는 공용키를 이용하여 기존의 공용키를 폐기하고 새로운 펌웨어에 따라 새로운 공용키를 이용하여 부팅될 수 있다.
부트 롬과 제1 메모리를 이용하여 부팅되는 스토리지 장치의 경우, 기존의 공용키를 폐기하고 새로운 공용키를 이용하여 부팅되기 위해서는, 새로운 플래시 부트 이미지와 새로운 펌웨어 이미지가 필요하다. 하지만, 제1 메모리는 부팅에 대한 정보를 저장하고 있기 때문에 접근이 제한되는 메모리이므로 스토리지 장치의 출고 후 스토리지 장치에 새로운 플래시 부트 이미지를 제공하는 것은 불가하다. 또한, 제1 메모리의 제2 영역에 모든 공용키들에 대한 부트 서명을 제조시에 주입하기는 힘들다. 따라서, 부트 롬과 제1 메모리를 이용하여 부팅되는 스토리지 장치는 제조사에서 회수하여 업데이트할 수 밖에 없다.
이에 반해 몇몇 실시예들에 따른 스토리지 장치(200)는 새로운 부트 서명(257)이 포함된 새로운 펌웨어 이미지(302)가 제공되면, 펌웨어(215)에 의해 제1 메모리(260) 내에 새로운 부트 서명(257)이 라이트될 수 있다. 또한 OTP 메모리(220)에 라이트된 데이터가 변경되어 제1 메모리(260) 내의 기존의 공용키가 폐기될 수 있다.
따라서, 스토리지 장치(200)는 새로운 플래시 부트 이미지의 제공 없이, 새로운 펌웨어 이미지(302)를 제공받아 기존의 공용키(236, 246)가 폐기하고 새로운 공용키(237, 247)로 업데이트될 수 있다. 즉, 플래시 부트 이미지의 변경 없이 펌웨어 이미지 제공만으로 스토리지 장치(200)가 업데이트될 수 있다. 다르게 설명하면, 제조사는 새로운 부트 서명(257)과 새로운 펌웨어 서명(307)을 포함하는 새로운 펌웨어 이미지(302)만을 제공하여 스토리지 장치(200)에 공용키의 업데이트를 제공할 수 있다. 또한 스토리지 장치(200)는 보안 부팅의 순서의 변경 없이, 기존의 보안 부팅의 순서에 따라 부팅될 수 있다.
도 10은 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 흐름도이다. 도 11 내지 도 14는 도 10의 S82 단계를 설명하기 위한 블록도이다. 도 4 내지 도 9를 이용하여 설명한 것과 다른 것을 중심으로 설명한다.
도 10을 참조하면, 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법은, 펌웨어(215)가 새로운 제2 펌웨어 이미지(302)를 제공받으면서 시작될 수 있다(S10). 스토리지 장치는 앞서 설명한 바와 같이 S20 내지 S70단계에 의해 업데이트될 수 있다.
다만, S15 내지 S40 단계를 중 갑자기 전원이 꺼지는 서든 파워 오프(SPO; Sudden Power Off)가 발생할 수 있다(S80).
이 때 스토리지 장치는 이전의 제1 공용키를 보안 부팅될 수 있다(S82).
예를 들어, 도 5, 도 6 및 도 11을 참조하면, 펌웨어가 제2 펌웨어 이미지(302_1, 302_2)를 제공받아, 제2 메모리(270)의 펌웨어 이미지 영역(290)에 제2 펌웨어 이미지(302_1, 302_2)를 라이트하는 도중 서든 파워 오프가 발생할 수 있다. 제2 메모리(270)의 펌웨어 이미지 영역(290)에 제2 펌웨어 이미지(302_1, 302_2)를 라이트하는 것은 예를 들어, 제1 메모리의 제2 영역(250)에 새로운 제2 부트 서명(257)을 라이트 하는 것(S30단계)과 교대로 수행될 수 있다. 즉, 제2 메모리(270)의 펌웨어 이미지 영역(290)의 적어도 일부에 제2 펌웨어 이미지(302_1, 302_2)를 라이트한 후, S30단계가 수행될 수 있다. 또는 제2 메모리(270)의 펌웨어 이미지 영역(290)에 제2 펌웨어 이미지(302_1, 302_2)를 모두 라이트한 후, S30단계가 수행될 수 있다.
펌웨어 이미지 영역(290)은 복수의 펌웨어 이미지 저장 영역(290_1~290_n)을 포함할 수 있다. 각각의 펌웨어 이미지 저장 영역(290_1~290_n)은 각각 펌웨어 이미지(302_1, 302_2, 292)가 저장될 수 있다. 복수의 펌웨어 이미지 저장 영역(290_1~290_n) 중 일부는 제2 펌웨어 이미지(302_1, 302_2)가 저장되어 있을 수 있고, 나머지 영역은 제1 펌웨어 이미지(292)가 저장되어 있을 수 있다.
이 경우, OTP 메모리에 저장된 데이터는 아직 변경되지 않았기 때문에, 스토리지 장치는 제1 공용키(236)를 이용하여 제1 부트 서명(256)을 검증하고 플래시 부트 이미지(242)가 실행되고, 제1 공용키(246)를 이용하여 제1 펌웨어 서명(296)을 검증하고 제1 펌웨어 이미지(292)가 실행되어 보안 부팅될 수 있다.
스토리지 장치는 보안 부팅 후, 새로운 펌웨어 이미지를 다시 제공받는 경우, S10 내지 S70 단계에 의해 업데이트될 수 있다.
또 다른 예를 들어, 도 12를 참조하면, 새로운 제2 부트 서명(257_1)을 제1 메모리의 제2 영역(250)에 라이트하는 도중 또는 제2 부트 서명(257_1)이 제2 메모리의 제2 영역(250)에 라이트된 후 서든 파워 오프가 발생할 수 있다.
이 경우, 제2 부트 서명(257_1)의 일부가 제2 영역(250)에 라이트되었으나 OTP 메모리(220)에 라이트된 데이터는 변경되기 전일 수 있다. 따라서 도 13을 참조하면, 스토리지 장치는 부트 롬 이미지(232), OTP 메모리(220)에 라이트된 데이터에 따른 제1 공용키(236) 및 제1 부트 서명(256)에 의해 검증된 플래시 부트 이미지(242), 및 OTP 메모리(220)에 라이트된 데이터에 따른 제1 공용키(246) 및 제1 펌웨어 서명(296)에 의해 검증된 제1 펌웨어 이미지(262)를 이용하여 보안 부팅될 수 있다.
스토리지 장치는 보안 부팅 후, 새로운 펌웨어 이미지를 다시 제공받는 경우, S10 내지 S70 단계에 의해 업데이트될 수 있다.
몇몇 실시예들에 다른 스토리지 장치는 새로운 제2 부트 서명(257_1)이 제2 메모리의 제2 영역(250)에 라이트 된 후, OTP 메모리(220)에 데이터가 라이트되고, 그 후 기존의 제1 부트 서명(256)이 삭제되어, 업데이트가 완료될 수 있다. 이에 따라 스토리지 장치는 업데이트 과정 중 서든 파워 오프가 발생하더라도 업데이트 이전의 제1 공용키(236, 246)를 이용하여 보안 부팅될 수 있다. 또한 스토리지 장치는 기존의 보안 부팅의 순서에 따라 보안 부팅될 수 있다.
도 14는 도 10에서 S82 단계 이후 S10단계가 수행되는 경우를 설명하기 위한 블록도이다.
도 14를 참조하면, 스토리지 장치는 업데이트 도중 서든 파워 오프에 의해 펌웨어 업데이트가 실패한 후, 다시 새로운 제2 펌웨어 이미지(302)를 제공받을 수 있다. 새로운 제2 펌웨어 이미지(302)는 서든 파워 오프에 의해 실패한 펌웨어 업데이트에서 제공된 펌웨어 이미지와 동일한 비밀키에 의해 생성된 펌웨어 이미지일 수 있다. 펌웨어(215)는 새로운 제2 펌웨어 이미지(302)로부터 새로운 제2 부트 서명(257_2)을 리드할 수 있다. 이 경우, 기존에 라이트된 제2 부트 서명(257_1)과 새로운 제2 부트 서명(257_2)이 동일한 비밀키에 의해 생성되었기 때문에, 새로운 제2 부트 서명(257_2)은 기존의 제2 부트 서명(257_1)이 제2 영역(250)에 라이트된 주소에 라이트 되어야한다. 따라서 펌웨어(215)는 기존의 제2 부트 서명(257_1)을 삭제하고, 기존의 제2 부트 서명(257_1)이 삭제된 주소에 새로운 제2 펌웨어 이미지(302)로부터 제2 부트 서명(257_2)을 라이트할 수 있다.
또 다른 예를 들어, 새로운 펌웨어 이미지(302)는 서든 파워 오프에 의해 실패한 펌웨어 업데이트에서 제공된 펌웨어 이미지와 다른 비밀키에 의해 생성된 다른 펌웨어 이미지가 제공될 수 있다. 이 경우, 펌웨어(215)는 앞서 설명한 바와 같이, 제공된 다른 펌웨어 이미지로부터 새로운 부트 서명을 리드하고, 제1 영역(240) 내 상기 공용키가 저장된 주소에 대응되는 제2 영역(250) 내 주소에 새로운 부트 서명을 라이트할 수 있다.
따라서 제2 영역(250) 내 실패한 펌웨어 업데이트에 의해 라이트된 부트 서명이 존재하더라도 스토리지 장치의 업데이트 및 부팅에 아무런 문제가 발생하지 않을 수 있다.
도 15는 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법을 설명하기 위한 흐름도이다. 도 16은 도 15의 S92 및 S94단계를 설명하기 위한 블록도이다. 도 4 내지 도 9를 이용하여 설명한 것과 다른 것을 중심으로 설명한다.
도 15 및 도 16을 참조하면, 몇몇 실시예들에 따른 스토리지 장치의 업데이트 방법 중 S50 단계에서 서든 파워 오프가 발생할 수 있다(S90).
이 때 스토리지 장치는 OTP 메모리(220)가 제2 공용키(237, 247)를 지시하도록 라이트 되었으므로, 제1 부트 서명(256)이 삭제되지 않은 상태이더라도 제2 공용키(237, 247)를 이용하여 부팅될 수 있다(S92).
스토리지 장치는 제2 공용키(237)를 이용하여 제2 부트 서명(257)을 검증하고 이에 따라 플래시 부트 이미지(242)가 실행될 수 있다. 또한, 스토리지 장치는 제2 공용키(247)를 이용하여 제2 펌웨어 서명(307)을 검증하고 이에 따라 제1 펌웨어 이미지(262)가 실행되어 보안 부팅될 수 있다.
이어서 펌웨어는 제1 메모리의 제2 영역(250)에 제1 부트 서명(256)과 제2 부트 서명(257)이 모두 라이트된 경우, 제1 부트 서명(256)을 삭제할 수 있다(S94). 즉, 펌웨어는 OTP 메모리(220)가 제2 공용키(237, 247)을 지시하도록 라이트되어 기존의 제1 공용키(236, 246)가 폐기된 경우, 제1 메모리의 제2 영역(250) 내에 존재하는 기존의 제1 부트 서명(256)을 삭제할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
200: 스토리지 장치 210: 메모리 컨트롤러
215: 펌웨어 220: OTP 메모리
230: 부트 롬 260: 제1 메모리
270: 제2 메모리

Claims (10)

  1. 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬;
    상기 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리;
    상기 복수의 공용키 및 상기 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역, 및 상기 플래시 부트 이미지에 대한 제1 부트 서명이 저장된 제2 영역을 포함하는 제1 메모리;
    유저 데이터 영역과, 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리; 및
    상기 제1 펌웨어 서명과 다른 제2 펌웨어 서명 및 상기 제1 부트 서명과 다른 제2 부트 서명을 포함하는 제2 펌웨어 이미지를 제공받고, 상기 제2 펌웨어 이미지의 제공에 응답하여 상기 제1 메모리의 상기 제1 영역으로부터 상기 복수의 공용키 중 제2 공용키와 상기 플래시 부트 이미지를 수신하고, 상기 제1 메모리의 상기 제2 영역에 상기 제2 부트 서명을 라이트하는 메모리 컨트롤러를 포함하는 스토리지 장치.
  2. 제 1항에 있어서,
    상기 제1 메모리의 상기 제1 영역은 상기 메모리 컨트롤러에 의해 리드만 가능한 영역이고, 상기 제1 메모리의 상기 제2 영역은 상기 메모리 컨트롤러에 의해 리드 및 라이트가 가능한 영역인 스토리지 장치.
  3. 제 2항에 있어서,
    상기 메모리 컨트롤러는, 상기 제2 펌웨어 이미지의 제공에 응답하여 제1 메모리의 상기 제2 영역에 라이트가 가능한 스토리지 장치.
  4. 제 1항에 있어서,
    상기 제1 펌웨어 서명은 상기 제1 공용키에 대응되는 제1 비밀키에 의해 생성되고,
    상기 제2 펌웨어 서명은 상기 제2 공용키에 대응되는 제2 비밀키에 의해 생성되고,
    상기 제1 비밀키와 상기 제2 비밀키는 동일하고,
    상기 제1 부트 서명과 상기 제2 부트 서명은 동일한 스토리지 장치.
  5. 제 4항에 있어서,
    상기 제1 부트 서명은 상기 제1 메모리의 상기 제2 영역 내 제1 주소에 라이트되고,
    상기 제2 부트 서명은 상기 제1 주소에 라이트된 상기 제1 부트 서명을 삭제하고, 상기 제1 주소에 라이트되는 스토리지 장치.
  6. 제 1항에 있어서,
    상기 제1 펌웨어 서명은 상기 제1 공용키에 대응되는 제1 비밀키에 의해 생성되고,
    상기 제2 펌웨어 서명은 상기 제2 공용키에 대응되고 상기 제1 비밀키와 다른 제2 비밀키에 의해 생성되고,
    상기 제2 부트 서명은 상기 플래시 부트 이미지와 상기 제2 비밀키에 의해 생성되는 스토리지 장치.
  7. 제 6항에 있어서,
    상기 제1 부트 서명은 상기 제1 메모리의 상기 제2 영역 내 제1 주소에 라이트되고,
    상기 제2 부트 서명은 상기 제1 메모리의 상기 제2 영역 내 상기 제1 주소와 다른 제2 주소에 라이트되는 스토리지 장치.
  8. 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬;
    상기 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리;
    상기 복수의 공용키 및 상기 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역, 및 상기 플래시 부트 이미지에 대한 제1 부트 서명이 저장된 상기 제1 영역과 다른 제2 영역을 포함하는 제1 메모리;
    유저 데이터 영역과, 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리; 및
    상기 제1 펌웨어 서명과 다른 제2 펌웨어 서명을 포함하는 제2 펌웨어 이미지를 제공받고, 상기 제2 펌웨어 이미지의 제공에 응답하여 상기 펌웨어 이미지 영역에 상기 제2 펌웨어 이미지를 라이트하는 메모리 컨트롤러를 포함하되,
    상기 제1 메모리의 상기 제1 영역은 상기 메모리 컨트롤러에 의해 리드만 가능한 영역이고, 상기 제1 메모리의 상기 제2 영역은 상기 메모리 컨트롤러에 의해 리드 및 라이트가 가능한 영역인 스토리지 장치.
  9. 제 8항에 있어서,
    상기 메모리 컨트롤러는, 상기 제2 영역에 상기 제2 펌웨어 이미지를 라이트를 하는 도중 서든 파워 오프가 발생하는 경우, 상기 제1 공용키를 이용하여 상기 제1 펌웨어 이미지를 검증하는 스토리지 장치.
  10. 복수의 공용키와 부트 롬 이미지가 저장된 부트 롬;
    상기 복수의 공용키 중 제1 공용키를 지시하는 OTP 메모리;
    상기 복수의 공용키, 상기 부트 롬 이미지와 다른 플래시 부트 이미지가 저장된 제1 영역 및 상기 플래시 부트 이미지에 대한 제1 부트 서명이 저장되고 상기 제1 영역과 다른 제2 영역을 포함하는 제1 메모리;
    유저 데이터 영역과, 제1 공용키에 대응하는 제1 비밀키에 의해 생성된 제1 펌웨어 서명을 포함하는 제1 펌웨어 이미지가 저장된 펌웨어 이미지 영역을 포함하는 제2 메모리; 및
    상기 제1 펌웨어 서명과 다른 제2 펌웨어 서명 및 상기 제1 부트 서명과 다른 제2 부트 서명을 포함하는 제2 펌웨어 이미지를 제공받고, 상기 제2 펌웨어 이미지의 제공에 응답하여 상기 제2 부트 서명을 상기 제1 메모리의 상기 제2 영역에 라이트하고, 상기 OTP 메모리가 상기 복수의 공용키 중 상기 제1 공용키와 다른 제2 공용키를 지시하도록 상기 OTP 메모리에 데이터를 라이트하는 메모리 컨트롤러를 포함하되,
    상기 제2 펌웨어 서명은, 상기 제2 공용키에 대응되는 제2 비밀키와 상기 제2 펌웨어 이미지에 의해 생성되고,
    상기 메모리 컨트롤러는, 상기 OTP 메모리가 상기 제2 공용키를 지시하도록 상기 OTP 메모리에 상기 데이터를 라이트 한 후, 상기 제1 메모리의 상기 제2 영역에 저장된 상기 제1 부트 서명을 삭제하는 스토리지 장치.
KR1020200106697A 2020-08-25 2020-08-25 스토리지 장치 KR20220026079A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200106697A KR20220026079A (ko) 2020-08-25 2020-08-25 스토리지 장치
US17/237,532 US11520896B2 (en) 2020-08-25 2021-04-22 Storage device
EP21192352.9A EP3961451B1 (en) 2020-08-25 2021-08-20 Storage device
CN202110980516.7A CN114115712A (zh) 2020-08-25 2021-08-25 存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200106697A KR20220026079A (ko) 2020-08-25 2020-08-25 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20220026079A true KR20220026079A (ko) 2022-03-04

Family

ID=77431195

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200106697A KR20220026079A (ko) 2020-08-25 2020-08-25 스토리지 장치

Country Status (4)

Country Link
US (1) US11520896B2 (ko)
EP (1) EP3961451B1 (ko)
KR (1) KR20220026079A (ko)
CN (1) CN114115712A (ko)

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730326B2 (en) 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
US20060143600A1 (en) 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
JP2007047993A (ja) * 2005-08-09 2007-02-22 Rohm Co Ltd 制御回路、それを用いた電子機器およびファームウェアの更新方法
US8918575B2 (en) * 2009-09-14 2014-12-23 Broadcom Corporation Method and system for securely programming OTP memory
US8417962B2 (en) 2010-06-11 2013-04-09 Microsoft Corporation Device booting with an initial protection component
US20120117365A1 (en) * 2010-11-08 2012-05-10 Delta Electronics (Thailand) Public Co., Ltd. Firmware update method and system for micro-controller unit in power supply unit
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
CN103886246B (zh) 2012-12-22 2018-08-31 三星电子株式会社 支持认证装置安全引导的动态改变的方法和设备
US9575768B1 (en) * 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
CN104995627B (zh) 2013-03-15 2018-04-27 英特尔公司 片上系统设备中的密钥撤消
EP2854066B1 (en) 2013-08-21 2018-02-28 Nxp B.V. System and method for firmware integrity verification using multiple keys and OTP memory
US9697359B2 (en) 2015-04-15 2017-07-04 Qualcomm Incorporated Secure software authentication and verification
US9798887B2 (en) 2015-08-26 2017-10-24 Qualcomm Incorporated Computing device to securely activate or revoke a key
US10181956B2 (en) 2015-12-21 2019-01-15 Hewlett-Packard Development Company, L.P. Key revocation
US10447467B2 (en) 2016-05-04 2019-10-15 International Business Machines Corporation Revocable PKI signatures
KR101782378B1 (ko) * 2016-11-03 2017-09-27 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
US10346071B2 (en) * 2016-12-29 2019-07-09 Western Digital Technologies, Inc. Validating firmware for data storage devices
CN108347332A (zh) * 2017-06-06 2018-07-31 清华大学 验证固件签名的方法及装置
KR102089435B1 (ko) 2018-04-11 2020-03-16 고려대학교 세종산학협력단 안전한 usb 장치를 보장하는 부트 방법
KR102567097B1 (ko) 2018-12-05 2023-08-14 삼성전자주식회사 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법

Also Published As

Publication number Publication date
US20220067166A1 (en) 2022-03-03
EP3961451B1 (en) 2023-11-15
CN114115712A (zh) 2022-03-01
EP3961451A1 (en) 2022-03-02
US11520896B2 (en) 2022-12-06

Similar Documents

Publication Publication Date Title
US11216206B2 (en) Method of operating data storage device
KR102567097B1 (ko) 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법
US9760503B2 (en) Operation method of memory controller and nonvolatile memory system including the memory controller
KR101395778B1 (ko) 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
CN110046506B (zh) 存储设备和包括存储设备的存储系统及使用其进行操作的方法
KR20200046264A (ko) 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법
CN110929261B (zh) 存储器系统及其操作方法
CN111459527B (zh) 存储器系统及其操作方法
CN114254402A (zh) 数据存储装置及其操作方法
KR20210032629A (ko) 지문 인식 센서를 포함하는 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
EP3961451B1 (en) Storage device
US11531476B2 (en) Memory system and memory system discard method
US11314453B2 (en) Memory system managing map data based on risk of malware—infection of host, and operating method thereof
KR20230037255A (ko) 이벤트 로그 관리 방법, 컨트롤러 및 저장 장치
CN113918086A (zh) 控制器及其操作方法
KR20210051803A (ko) 메모리 시스템 및 컨트롤러
US20240176542A1 (en) Interworking method external device and storage device
US20230134534A1 (en) Memory controller and storage device
US20230152987A1 (en) Storage device and operation method thereof
KR20230064538A (ko) 메모리 컨트롤러 및 스토리지 장치
KR20230133666A (ko) 전자 장치 및 그 동작 방법
CN116795278A (zh) 存储装置及其操作方法
KR20240077059A (ko) 맵 세그먼트를 로드하고 외부 장치로 전송하는 스토리지 장치 및 그 동작 방법
CN114510752A (zh) 数据存储装置及操作数据存储装置的方法
WO2019019800A1 (zh) 一种硬盘数据访问方法及装置

Legal Events

Date Code Title Description
A201 Request for examination