KR20210134053A - 오버-디-에어 업데이트 유효성 확인 방법 - Google Patents

오버-디-에어 업데이트 유효성 확인 방법 Download PDF

Info

Publication number
KR20210134053A
KR20210134053A KR1020217034336A KR20217034336A KR20210134053A KR 20210134053 A KR20210134053 A KR 20210134053A KR 1020217034336 A KR1020217034336 A KR 1020217034336A KR 20217034336 A KR20217034336 A KR 20217034336A KR 20210134053 A KR20210134053 A KR 20210134053A
Authority
KR
South Korea
Prior art keywords
update
memory
host
signature
received
Prior art date
Application number
KR1020217034336A
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 마이크론 테크놀로지, 인크
Publication of KR20210134053A publication Critical patent/KR20210134053A/ko

Links

Images

Classifications

    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/45Structures or tools for the administration of authentication
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • H04W12/041Key generation or derivation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • H04W12/047Key management, e.g. using generic bootstrapping architecture [GBA] without using a trusted network node as an anchor
    • H04W12/0471Key exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/10Integrity
    • H04W12/106Packet or message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/121Wireless intrusion detection systems [WIDS]; Wireless intrusion prevention systems [WIPS]
    • H04W12/122Counter-measures against attacks; Protection against rogue devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

본 개시는 오버-디-에어 업데이트의 유효성 확인을 위한 장치, 방법 및 시스템을 포함한다. 일 실시예는 메모리, 및 메모리와 연관된 회로부를 포함하며, 상기 회로부는 오버-디-에어 업데이트들의 수신을 위해 메모리를 모니터링하고, 수신된 업데이트를 메모리의 보안 어레이에 저장하고, 수신된 업데이트와 연관된 서명의 해시를 수신하고 수신된 서명의 해시를 메모리의 레지스터에 저장하고, 수신된 업데이트가 진본이라는 표시를 수신하되, 상기 표시는 예상된 서명의 해시를 포함하고, 수신된 업데이트가 진본이라는 표시에 응답하여 액션을 취하도록 구성된다.

Description

오버-디-에어 업데이트 유효성 확인 방법
본 개시는 일반적으로 반도체 메모리 및 방법에 관한 것으로, 보다 구체적으로는 메모리를 사용하여 오버-디-에어(over-the-air) 업데이트의 유효성을 확인하는 것에 관한 것이다.
메모리 장치들은 일반적으로 컴퓨터들 또는 다른 전자 장치들의 내부 반도체 집적 회로 및/또는 외부 탈착식 장치들로 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 많은 다른 유형의 메모리가 있다. 휘발성 메모리는 그 데이터를 유지하기 위한 전력을 필요로 할 수 있으며, 그 중에서도 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함할 수 있다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있으며, 그 중에서도, NAND 플래시 메모리, NOR 플래시 메모리, 읽기 전용 메모리(ROM), 및 상 변화 랜덤 액세스 메모리(PCRAM), 저항 랜덤 액세스 메모리(RRAM) 및 자기 랜덤 액세스 메모리(MRAM)와 같은 저항 가변 메모리를 포함할 수 있다.
메모리 장치들은 함께 결합되어 솔리드 스테이트 드라이브(SSD), 내장형 멀티미디어카드(e.MMC) 및/또는 범용 플래시 저장(UFS) 장치를 형성할 수 있다. SSD, e.MMC 및/또는 UFS 장치는 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서, 비휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고/있거나 휘발성 메모리(예를 들어, DRAM 및/또는 SDRAM)를 포함할 수 있다. 비휘발성 메모리는, 그 중에서도, 개인용 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 휴대 전화, 예컨대 MP3 플레이터, 무비 플레이어와 같은 휴대용 뮤직 플레이어들과 같은 광범위한 전자 애플리케이션들에 사용될 수 있다.
플래시 메모리 장치들은 예를 들어, 플로팅 게이트와 같은 전하 저장 구조에 데이터를 저장하는 메모리 셀들을 포함할 수 있다. 플래시 메모리 장치들은 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소비를 허용하는 단일 트랜지스터 메모리 셀을 사용한다. 저항 가변 메모리 장치들은 저장 소자(예를 들어, 가변 저항을 갖는 저항성 메모리 소자)의 저항 상태에 기초하여 데이터를 저장할 수 있는 저항성 메모리 셀들을 포함할 수 있다.
메모리 셀들은 어레이들로 배열될 수 있으며, 어레이 아키텍처의 메모리 셀들은 타겟(예를 들어, 원하는) 상태로 프로그래밍될 수 있다. 예를 들어, 특정 데이터 상태로 셀을 프로그램하기 위해 플래시 메모리 셀의 전하 저장 구조(예를 들어, 플로팅 게이트)에 전하가 놓이거나 제거될 수 있다. 셀의 전하 저장 구조에 저장된 전하는 셀의 임계 전압(Vt)을 나타낼 수 있다. 플래시 메모리 셀의 상태는 셀의 전하 저장 구조(예를 들어, Vt)에 저장된 전하를 감지함으로써 결정될 수 있다.
많은 위협이 메모리 장치의 메모리 셀들에 저장된 데이터에 영향을 줄 수 있다. 이러한 위협들은 예를 들어, 메모리 장치에서 발생하는 결함들 및/또는 해커들 또는 기타 악의적인 사용자들로부터의 위협을 포함할 수 있다. 이러한 위협들은 상당한 재정적 손실을 야기할 수 있고/또는 심각한 안전 및/또는 보안 문제를 일으킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 다수의 물리적 블록들을 갖는 메모리 어레이 일부의 도면을 예시한다.
도 2는 본 개시의 일 실시예에 따른 메모리 장치 형태의 호스트 및 장치를 포함하는 컴퓨팅 시스템의 블록도이다.
도 3은 본 개시의 일 실시예에 따른 예시적인 메모리 장치를 사용하는 오더-디-에어 업데이트 유효성 확인을 위한 예시적인 시스템을 예시한다.
도 4는 본 개시의 일 실시예에 따른 예시적인 메모리 장치를 사용하는 오더-디-에어 업데이트 유효성 확인을 위한 예시적인 흐름도를 예시한다.
도 5a는 본 개시의 일 실시예에 따른 보안 메모리 어레이를 정의하는 데 사용된 레지스터 쌍의 일 예를 예시한다.
도 5b는 본 개시의 일 실시예에 따라 정의된 보안 메모리 어레이를 포함하는 메모리 어레이 일부의 도면을 예시한다.
도 6은 본 개시의 일 실시예에 따른 호스트 및 메모리 장치를 포함하는 예시적인 시스템의 블록도이다.
도 7은 본 개시의 일 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다.
도 8은 본 개시의 일 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다.
도 9는 본 개시의 일 실시예에 따른 인증서를 확인하기 위한 예시적인 프로세스의 블록도이다.
도 10은 본 개시의 일 실시예에 따른 서명을 확인하기 위한 예시적인 프로세스의 블록도이다.
도 11은 본 개시의 일 실시예에 따른 예시적인 메모리 장치의 블록도이다.
본 개시는 메모리를 사용하여 오버-디-에어 업데이트의 유효성을 확인하는 장치, 방법 및 시스템을 포함한다. 일 실시예는 메모리, 및 유효성 확인을 위한 오버-디-에어 업데이트들을 위해 메모리 장치를 모니터링하도록 구성된 회로부를 포함한다. 업데이트들은 호스트 장치로부터 메모리 장치에 의해 수신될 수 있으며, 호스트 장치는 호스트 장치에 의해 모니터링되는 장치들을 위한 오버-디-에어 업데이트들을 전송한다. 예를 들어, 호스트 장치는 네트워크 환경에서 다수의 장치들을 모니터링하는 서버일 수 있다. 서버는 모니터링되는 장치들에 업데이트들이 필요할 때 모니터링되는 장치들에 업데이트들을 전파할 수 있다. 오버-디-에어 업데이트들은 무선 컴퓨팅 네트워크를 사용하여 업데이트들을 무선으로 전송할 수 있기 때문이다. 업데이트들은 데이터를 포함한다(예를 들어, 트랜잭션, 소프트웨어 업데이트, 하드웨어 업데이트 또는 아니면 소프트웨어, 하드웨어, 코드, 펌웨어 또는 코드 일부 등을 수정하는 데이터)를 포함하는 블록들을 포함한다.
메모리 장치는 개별 호스트 또는 다수의 호스트들과 연관될 수 있다. 각 호스트는 개별 장치 또는 다수의 장치들을 모니터링할 수 있으며, 여기서 호스트에 의해 생성된 각 업데이트는 개별 장치, 다수의 장치들 및/또는 특정 범주 또는 지정의 장치들(예를 들어, 특정 장치 유형, 장치 브랜드, 장치 식별 등의 특정 지리학적 위치에 있는 모든 장차들에 대한 업데이트)과 연관될 수 있다. 일부 예들에서, 호스트에 의해 모니터링된 장치들은 업데이트를 구현하기 전에 업데이트의 유효성을 확인하기 위한 메모리 또는 컴퓨팅 능력이 없을 수 있다.
이러한 장치들은 업데이트들이 필요할 수 있지만 업데이트를 보호 및/또는 그의 유효성을 확인하는 데 필요한 컨트롤러들, 메모리, 하드웨어 보안 모듈(HSM) 등이 부족한 사물 인터넷(IoT) 장치일 수 있다. 예를 들어, 호스트(예를 들어, 서버)는 업데이트들을 위해 다수의 장치들 및/또는 장치 유형들(예를 들어, 장치 유형, 브랜드 등)을 모니터링할 수 있다. 본원에 사용된 바와 같이, 장치 유형은 예를 들어 센서들, 컴퓨팅 장치들, 웨어러블 장치들, 자동차 장치들 등과 같은 장치 메트릭을 기반으로 하는 장치들의 카테고리 및/또는 그룹화를 지칭한다. 모니터링되는 장치들 중 일부는 더 복잡하고, 비용이 많이 들고, 강력한 장치의 정교함이 부족한 저가 장치들일 수 있다. 예를 들어, 센서는 IoT 기능을 포함하고 호스트(예를 들어, 서버)에 의해 모니터링될 수 있지만, 자체 업데이트의 유효성을 확인하고, 이를 보안하고 및/또는 검증할 컴포넌트들이 부족할 수 있다. 그에 반해, 자율 차량용 컴퓨팅 컴포넌트들과 같은 더 복잡한 장치들은 업데이트가 수신될 때 업데이트들을 검증하거나, 그의 유효성을 확인하거나 아니면 보안하기 위한HSM 컴포넌트들 등을 포함할 수 있다. 일부 예들에서, 호스트(예를 들어, 서버)는 장치(예를 들어, IoT 센서들)의 제조자와 연관되고 서버에 의해 모니터링되는 다양한 IoT 센서들에 필요한 업데이트들을 푸시할 수 있다. IoT 센서에는 업데이트의 유효성을 확인하는 정교한 기능이 부족할 수 있으므로, 서버는 유효성 확인을 위해 보안 메모리 어레이에 업데이트를 저장하기 위한 외부 부트 메모리 장치 및 회로부를 활용할 수 있다.
장치에 업데이트를 구현하기 전에 업데이트의 유효성을 확인하는 방법이 없으면 장치 및/또는 호스트가 업데이트를 통해 장치에 대한 위협 및/또는 부주의한 변경에 취약해진다. 해커에 의해 수행되는 이러한 활동들은 장치의 소프트웨어 또는 하드웨어에 부정 업데이트를 제공하는 것을 포함할 수 있다. 예를 들어, 악의적인 사용자는, 그 중에서도, (예를 들어, 지불을 확인하는 코드를 스킵함으로써 제공되는 서비스에 대한 결제가 이루어졌다고 거짓으로 나타내기 위해) 펌웨어를 사용하여 수행되는 상업 거래, (예를 들어, 펌웨어의 소프트웨어가 라이센스를 확인하는 코드를 스킵함으로써 적절히 인가되었다고 거짓으로 나타내기 위해) 펌웨어에서 수행되는 소프트웨어 라이선스 확인, 또는 (예를 들어, 부품의 진위 여부 확인, 환경 확인, 또는 오작동 경보 확인 등을 스킵하기 위해) 펌웨어를 사용하여 수행되는 자동차 제어에 부정적인 영향을 미치기 위해(예를 들어, 이들의 흐름을 전환하기 위해) 업데이트를 통해 메모리에 저장된 데이터를 변경하려고 시도할 수 있다.
예를 들어, 많은 위협들은 소프트웨어, 하드웨어, 펌웨어 및/또는 그 안에 저장된 데이터의 구성을 변경함으로써 장치의 동작에 영향을 줄 수 있다. 해커 또는 기타 악의적인 사용자는 악의적인 목적으로 소프트웨어, 하드웨어, 펌웨어 및/또는 그 안에 저장된 데이터를 변경함으로써, 장치의 동작을 무단으로 변경하도록 하는 활동들(예를 들어, 공격들)을 수행하려고 시도할 수 있다. 장치의 동작에 대한 변경은 장치들에 전송된 업데이트들(예를 들어, 펌웨어 업데이트)를 통해 구현될 수 있다. 예를 들어, 업데이트는 메모리 장치와 연관된 호스트에 의해 모니터링되는 IoT 장치를 구성하기 위한 인스트럭션들을 포함할 수 있다. 일부 예들에서, 해킹 공격은 그들이 승인된 호스트인 것처럼 작동하는 장치에 업데이트를 부정하게 전파할 수 있다. 이러한 해킹 활동들은 상당한 재정적 손실을 야기할 수 있고/또는 심각한 안전 및/또는 보안 문제를 일으킬 수 있다.
이와 같이, 장치에 대한 보안 업데이트를 보장하기 위해, 장치에 저장된 데이터(예를 들어, 펌웨어)에 대한 업데이트가 진본인지(예를 들어, 인증/인증된 엔티티로부터, 정확한지) 또는 해킹 활동이나 기타 무단 변경 및/또는 의도하지 않은 변경에 의해 부정하게 제공되지 않았음을 확인(예를 들어, 인증 및/또는 입증)하는 것이 중요하다.
본원의 예시적인 실시예들은 메모리를 사용하여 업데이트가 승인된 호스트로부터 온 것이고, 수신된 업데이트가 변경되거나 인터셉트되지 않았음을 확인하는 시스템들, 장치들 및 방법들을 설명한다. 호스트와 관련된 메모리 및 회로부는 업데이트 및 업데이트에 대응하는 서명을 수신하여 업데이트가 업데이트될 장치와 관련된 호스트로부터 온 것임을 확인할 수 있다. 메모리 장치는 예상된 서명을 수신된 서명과 비교하여 호스트에 의해 모니터링되는 장치에 대한 업데이트의 유효성을 확인할 수 있다.
일단 확인되면, 메모리 장치는 확인된 업데이트를 메모리 어레이의 다른 부분에 복사함으로써 업데이트될 장치에 업데이트가 이용 가능하게 만들 수 있다. 이 방법을 사용하여, 장치는 정교한 컴퓨팅 성능을 소유할 필요 없이, 외부 메모리 장치를 통해 호스트로부터 확인된 업데이트를 수신할 수 있다. 예를 들어, 본 개시의 실시예들은 메모리의 기존 회로부(예를 들어, 외부 메모리 장치의 기존 펌웨어)를 수정, 활용 및/또는 다르게 동작시켜 메모리에 추가(예를 들어, 새로운) 컴포넌트들 및 회로부를 추가할 필요 없이 메모리를 오버-디-에어 업데이트 유효성 확인 장치로 사용할 수 있다.
본원에 사용된 바와 같이, "하나(a)", "하나(an)" 또는 "다수의(a number of)"는 하나 이상의 무언가를 나타낼 수 있으며, "복수의(a plurality of)"는 둘 이상의 그러한 것들을 나타낼 수 있다. 예를 들어, 메모리 장치는 하나 이상의 메모리 장치들을 지칭할 수 있고, 복수의 메모리 장치들은 둘 이상의 메모리 장치들을 지칭할 수 있다. 추가로, 특히 도면들의 참조 부호들과 관련하여, 본원에 사용된 바와 같은, “R”, “B”, “S” 및 “N”과 같은 지정자들은 이렇게 지정된 많은 특정 특징이 본 개시의 많은 실시예들에 포함될 수 있음을 나타낸다. 숫자는 지정자들 간 동일하거나 다를 수 있다.
본원에서 도면들은 첫 번째 숫자 또는 숫자들이 도면 번호에 해당하고 나머지 숫자들이 도면에서의 요소 또는 구성요소를 식별하는 넘버링 관례를 따른다. 다른 도면들 간 유사한 요소들 또는 구성요소들이 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 101은 도 1의 요소 "01"을 참조 표시할 수 있으며, 유사한 요소는 도 2의 201로 참조 표시될 수 있다.
도 1은 본 개시의 일 실시예에 따른 다수의 물리적 블록들을 갖는 메모리 어레이 일부(101)의 도면을 예시한다. 메모리 어레이(101)는, 예를 들어, NAND 및/또는 NOR 플래시 메모리 어레이와 같은 플래시 메모리 어레이일 수 있다. 한 예시적인 실시예에서, 메모리(101)는 NOR 플래시 메모리 어레이(101)이다. 한 추가 예로서, 메모리 어레이(101)는, 그 중에서도, PCRAM, RRAM, MMRAM, 또는 스핀 토크 전달(STT) 어레이와 같은 저항 가변 메모리 어레이일 수 있다. 그러나, 본 개시의 실시예들은 특정 유형의 메모리 어레이로 제한되지는 않는다. 또한, 메모리 어레이(101)는 본원에 추가로 설명되는 바와 같이 보안 메모리 어레이일 수 있다. 또한, 도 1에 도시되지는 않았지만, 메모리 어레이(101)는 그 동작과 관련된 다양한 주변 회로부와 함께 특정 반도체 다이 상에 위치될 수 있다.
도 1에 도시된 바와 같이, 메모리 어레이(101)는 메모리 셀들의 다수의 물리적 블록들(107-0(블록 0), 107-1(블록 1), ..., 107-B(블록 B))을 갖는다. 메모리 셀들은 단일 레벨 셀들 및/또는 예를 들어, 투 레벨 셀들, 트리플 레벨 셀들(TLC들) 또는 쿼드러플 레벨 셀들(QLC들)과 같은 다중 레벨 셀들일 수 있다. 일 예로서, 메모리 어레이(101)의 물리적 블록들의 수는 128개의 블록들, 512개의 블록들, 또는 1,024개의 블록들일 수 있지만, 실시예들은 메모리 어레이(101)의 특정 수의 물리적 블록들 또는 특정 2의 거듭제곱으로 제한되지는 않는다.
메모리 셀들의 다수의 물리적 블록들(예를 들어, 블록들(107-0, 107-1, ..., 107-B))은 메모리 셀들의 평면에 포함될 수 있고, 다수의 메모리 셀들의 평면들은 다이 상에 포함될 수 있다. 예를 들어, 도 1에 도시된 예에서, 각 물리적 블록(107-0, 107-1, ..., 107-B)은 단일 다이의 일부일 수 있다. 즉, 도 1에 예시된 메모리 어레이(101)의 부분은 메모리 셀들의 다이일 수 있다.
도 1에 도시된 바와 같이, 각 물리적 블록(107-0, 107-1, ..., 107-B)은 액세스 라인들(예를 들어, 워드 라인들)에 결합된 메모리 셀들의 다수의 물리적 행들(예를 들어, 103-0, 103-1, ..., 103-R)을 포함한다. 각 물리적 블록의 행들(예를 들어, 워드 라인들)의 수는 32개일 수 있지만, 실시예들은 물리적 블록당 특정 개수의 행들(103-0, 103-1, ...,103-R)로 제한되지는 않는다. 또한, 도 1에 도시되지는 않았지만, 메모리 셀들은 감지 라인들의 열들(예를 들어, 데이터 라인들 및/또는 디지트 라인들)에 결합될 수 있다.
당업자가 이해할 수 있는 바와 같이, 각 행(103-0, 103-1, ..., 103-R)은 메모리 셀들의 다수의 페이지들(예를 들어, 물리적 페이지들)을 포함할 수 있다. 물리적 페이지는 프로그래밍 및/또는 감지의 단위(예를 들어, 기능 그룹으로 함께 프로그래밍 및/또는 감지되는 메모리 셀들의 수)를 말한다. 도 1에 도시된 실시예에서, 각 행(103-0, 103-1, ..., 103-R)은 메모리 셀들의 하나의 물리적 페이지를 포함한다. 그러나, 본 개시의 실시예는 이에 제한되지 않는다. 예를 들어, 일 실시예에서, 각 행은 메모리 셀들의 다수의 물리적 페이지들(예를 들어, 짝수 데이터 라인들에 결합된 메모리 셀들의 하나 이상의 짝수 페이지들, 및 홀수 데이터 라인들에 결합된 메모리 셀들의 하나 이상의 홀수 페이지들)을 포함할 수 있다. 추가로, 다중 레벨 셀들을 포함하는 실시예들의 경우, 메모리 셀들의 물리적 페이지는 데이터의 다수의 페이지들(예를 들어, 논리적 페이지들)(예를 들어, 물리적 페이지의 각 셀이 데이터의 상위 페이지를 향해 하나 이상의 비트들을 저장하고 데이터의 하위 페이지를 향해 하나 이상의 비트들을 저장하는, 데이터의 상위 페이지 및 데이터의 하위 페이지)을 저장할 수 있다.
도 1에 도시된 바와 같이, 메모리 셀들의 페이지는 다수의 물리적 섹터들(105-0, 105-1, ..., 105-S)(예를 들어, 메모리 셀들의 서브셋)을 포함할 수 있다. 셀들의 각 물리적 섹터(105-0, 105-1, ..., 105-S)는 다수의 논리적 데이터 섹터들을 저장할 수 있다. 추가로, 각 논리적 데이터 섹터는 특정 데이터 페이지의 일부에 대응할 수 있다. 일 예로서, 특정 물리적 섹터에 저장된 데이터의 제1 논리적 섹터는 데이터의 제1 페이지에 대응하는 논리적 섹터에 대응할 수 있고, 특정 물리적 섹터에 저장된 데이터의 제2 논리적 섹터는 데이터의 제2 페이지에 대응할 수 있다. 각 물리적 섹터(105-0, 105-1, ..., 105-S)는 시스템 및/또는 사용자 데이터를 저장할 수 있고/있거나 에러 정정 코드(ECC) 데이터, 논리적 블록 어드레스(LBA) 데이터 및 메타데이터와 같은 오버헤드 데이터를 포함할 수 있다.
논리적 블록 어드레싱은 데이터의 논리적 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 방식이다. 예를 들어, 각 논리적 섹터는 고유한 논리적 블록 어드레스(LBA)에 대응할 수 있다. 추가로, LBA는 또한 메모리에서 데이터의 해당 논리적 섹터의 물리적 위치를 나타낼 수 있는, 물리적 블록 어드레스(PBA)와 같은, 물리적 어드레스에 대응(예를 들어, 동적으로 매핑)할 수 있다. 데이터의 논리적 섹터는 데이터의 바이트 수(예를 들어, 256 바이트, 512 바이트, 1,024 바이트 또는 4,096 바이트)일 수 있다. 그러나, 실시예들은 이러한 예들로 제한되지는 않는다.
물리적 블록들(107-0, 107-1, ..., 107-B), 행들(103-0, 103-1, ..., 103-R), 섹터들(105-0, 105-1, ..., 105-S) 및 페이지들에 대한 다른 구성들이 가능하다는 점에 유의한다. 예를 들어, 행들(103-0, 103-1, ..., 103-R)의 물리적 블록들(107-0, 107-1, ..., 107-B)은 각각 예를 들어, 512 바이트보다 많거나 적은 데이터를 포함할 수 있는 단일 논리적 섹터에 해당하는 데이터를 저장할 수 있다.
도 2는 본 개시의 일 실시예에 따른 메모리 장치(206) 형태의 호스트(202) 및 장치를 포함하는 컴퓨팅 시스템(200)의 블록도이다. 본원에 사용된 바와 같이, "장치(apparatus)"는, 이에 제한되는 것은 아니나, 예를 들어, 회로 또는 회로부, 다이 또는 다이들, 모듈 또는 모듈들, 장치 또는 장치들, 또는 시스템 또는 시스템들과 같은 임의의 다양한 구조들 또는 구조들의 조합들로 지칭할 수 있다. 또한, 일 실시예에서, 컴퓨팅 시스템(200)은 메모리 장치(206)와 유사한 다수의 메모리 장치들을 포함할 수 있다.
도 2에 예시된 실시예에서, 메모리 장치(206)는 메모리 어레이(201)를 갖는 메모리(216)를 포함할 수 있다. 메모리 어레이(201)는 도 1과 관련하여 앞서 설명된 메모리 어레이(101)와 유사할 수 있다. 또한, 메모리 어레이(201)는 본원에 추가로 설명되는 바와 같이 보안 어레이일 수 있다. 하나의 메모리 어레이(201)가 도 2에 예시되어 있지만, 메모리(216)는 메모리 어레이(201)와 유사한 임의의 수의 메모리 어레이들을 포함할 수 있다.
도 2에 예시된 바와 같이, 호스트(202)는 인터페이스(204)를 통해 메모리 장치(206)에 결합될 수 있다. 호스트(202) 및 메모리 장치(206)는 인터페이스(204) 상에서 통신(예를 들어, 명령들 및/또는 데이터를 전송)할 수 있다. 호스트(202) 및/또는 메모리 장치(206)는 랩톱 컴퓨터, 개인용 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 장치, 모바일 폰, PDA, 메모리 카드 리더, 인터페이스 허브, 또는 예를 들어, 다른 호스트 시스템 중에서도, 자동차(예를 들어, 차량 및/또는 운송 인프라) IoT 가능 장치 또는 의료(예를 들어, 이식 가능 및/또는 건강 모니터링) IoT 가능 장치와 같은 사물 인터넷(IoT) 가능 장치이거나, 그 일 일부일 수 있으며, 메모리 액세스 장치(예를 들어, 프로세서)를 포함할 수 있다. 당업자들은 "프로세서"가 병렬 처리 시스템, 다수의 코프로세서들 등과 같은 하나 이상의 프로세서들을 의미할 수 있음을 이해할 것이다.
인터페이스(204)는 표준화된 물리적 인터페이스 형태일 수 있다. 예를 들어, 메모리 장치(206)가 컴퓨팅 시스템(200)에 정보 저장을 위해 사용될 때, 인터페이스(204)는, 다른 물리적 커넥터들 및/또는 인터페이스들 중에서도, 직렬 고급 기술 결합(SATA) 물리적 인터페이스, 주변 컴포넌트 인터커넥트 익스프레스(PCIe) 물리적 인터페이스, 범용 직렬 버스(USB) 물리적 인터페이스 또는 소형 컴퓨터 시스템 인터페이스(SCSI)일 수 있다. 그러나, 일반적으로, 인터페이스(204)는 메모리 장치(206)와 인터페이스(204)에 대한 호환 가능한 수용체를 갖는 호스트(예를 들어, 호스트(202)) 사이에 제어, 어드레스, 정보(예를 들어, 데이터), 및 기타 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
다른 예들에서, 인터페이스(204)는 비-물리적 인터페이스일 수 있다. 예를 들어, 메모리 장치(206)는 무선 네트워크의 일부로서 무선 인터페이스, 및/또는 물리적 연결이 없는 비접촉 인터페이스를 통해 호스트(202)에 통신 가능하게 결합될 수 있다. 무선 네트워크의 일부 예들로는 무선 근거리 통신망(WLAN), 무선 개인 영역 통신망(WPNS), 무선 대도시 지역 통신망(WMANS) 및 무선 광역 통신망(WWANS)이 있다. 일부 예들에서, 인터페이스(204)는 호스트(202)가 네트워크 장치(예를 들어, 클라우드 환경에서의 서버)인 경우 무선 환경에서 활용될 수 있다. 이러한 예들에서, 호스트(202)는 호스트(202)에 의해 모니터링되는 장치에 오버-디-에어(예를 들어, 무선으로) 업데이트들을 전파할 수 있다.
메모리 장치(206)는 호스트(202) 및 메모리(216)(예를 들어, 메모리 어레이(201))와 통신하는 컨트롤러(208)를 포함한다. 예를 들어, 컨트롤러(208)는, 다른 동작들 중에서도, 데이터를 감지(예를 들어, 판독), 프로그래밍(예를 들어, 기입), 이동 및/또는 소거하는 동작들을 포함하는, 메모리 어레이(201)에 대한 동작들을 수행하도록 하는 명령들을 전송할 수 있다.
컨트롤러(208)는 메모리(216)와 동일한 물리적 장치(예를 들어, 동일한 다이)에 포함될 수 있다. 대안으로, 컨트롤러(208)는 메모리(216)를 포함하는 물리적 장치에 통신 가능하게 결합되는 별도의 물리적 장치에 포함될 수 있다. 일 실시예에서, 컨트롤러(208)의 컴포넌트들은 분산형 컨트롤러로서 다수의 물리적 장치들(예를 들어, 메모리와 동일한 다이 상의 일부 컴포넌트들 및 다른 다이, 모듈 또는 보드 상의 일부 컴포넌트들)에 걸쳐 분산될 수 있다.
호스트(202)는 메모리 장치(206)와 통신하기 위한 호스트 컨트롤러(도 2에 도시되지 않음)를 포함할 수 있다. 호스트 컨트롤러는 인터페이스(204)를 통해 메모리 장치(206)에 명령들을 전송할 수 있다. 호스트 컨트롤러는, 다른 동작 중에서도, 메모리 장치(206) 및/또는 메모리 장치(206) 상의 컨트롤러(208)와 통신하여 데이터를 판독, 기입, 저장 및/또는 소거할 수 있다. 또한, 일 실시예에서, 호스트(202)는 서버 및/또는 앞서 본원에 설명된 바와 같이, IoT 통신 능력을 갖는 IoT 가능 장치일 수 있다.
예를 들어, 호스트(202)는 무선 네트워크 내의 개별 및/또는 다수의 장치들(예를 들어, IoT 장치들)을 모니터링하는 네트워크 장치(예를 들어, 서버)일 수 있으며, 장치들은 펌웨어 및/또는 기타 구성 변경들에 대한 업데이트들을 요구할 수 있다. 호스트(202)에 의해 모니터링되는 장치들은 호스트(202)로부터 오버-디-에어로 전송된 업데이트들의 유효성을 확인하는 능력이 부족할 수 있는 정교하지 않고, 저비용의, 적당한 IoT 장치들(예를 들어, 온도 센서 등)일 수 있다. 이는 유효성 확인 등을 수행하는 능력을 가질 수 있는 정교한 IoT 장치들(예를 들어, IoT 차량 컴퓨팅 시스템 등)과 대조된다. 또한, 호스트(202)는 여러 유형의 장치들의 제조자와 연관된 서버일 수 있다. 본원에 사용된 바와 같이, 메모리 어레이(201)에 저장된 업데이트(220)의 유효성을 확인 및/또는 이를 검증하는 것은 업데이트가 진본이고(예를 들어, 원래 프로그래밍되고/되거나 관련 호스트로부터 수신된 것과 동일함), 해커에 의해 자주 제공되는 해킹 활동 또는 무단/의도하지 않은 변경을 포함하는 것에 의해 변경되지 않았음을 인증 및/또는 입증하는 것을 포함 및/또는 참조할 수 있다.
예를 들어, 호스트(202)는 IoT 장치들의 다른 브랜드들, IoT 장치들의 다른 유형들(예를 들어, 온도 센서, 압력 센서 등), 특정 지리적 위치들의 IoT 장치들 등을 모니터링하는 서버일 수 있으며, 오버-디-에어로 다수의 장치들에 업데이트들을 푸시할 수 있다. 이러한 IoT 장치들은 호스트(202)에 의해 이들에 푸시된 업데이트들의 보안을 제공 및/또는 유지하는 능력이 부족할 수 있기 때문에, 호스트(202)는 업데이트들의 유효성 확인을 위해 메모리 장치(206)와 연관될 수 있다.
메모리 장치(206) 상의 컨트롤러(208) 및/또는 호스트(202) 상의 호스트 컨트롤러는 제어 회로부 및/또는 로직(예를 들어, 하드웨어 및 펌웨어)을 포함할 수 있다. 일 실시예에서, 메모리 장치(206) 상의 컨트롤러(208) 및/또는 호스트(202) 상의 호스트 컨트롤러는 물리적 인터페이스를 포함하는 인쇄 회로 기판에 결합된 주문형 반도체(ASIC)일 수 있다. 또한, 메모리 장치(206) 및/또는 호스트(202)는 휘발성 및/또는 비휘발성 메모리의 버퍼 및 다수의 레지스터들을 포함할 수 있다.
예를 들어, 도 2에 도시된 바와 같이, 메모리 장치(206)는 회로부(210)를 포함할 수 있다. 도 2에 예시된 실시예에서, 회로부(210)는 컨트롤러(208)에 포함된다. 그러나, 본 개시의 실시예는 이에 제한되지 않는다. 예를 들어, 일 실시예에서, 회로부(210)는 (예를 들어, 컨트롤러(208) 대신에) 메모리(216)에(예를 들어, 이 메모리와 동일한 다이 상에) 포함될 수 있다. 회로부(210)는 예를 들어, 하드웨어, 펌웨어 및/또는 처리 리소스에 대한 통신 인스트럭션들을 포함할 수 있다.
회로부(210)는 메모리 장치(206)와 연관된 호스트(202)로부터 수신된 오버-디-에어 업데이트들에 대해 메모리 장치(206)를 모니터링하도록 구성될 수 있다. 오버-디-에어 업데이트가 메모리 장치(206)에 의해 수신될 때, 회로부(210)는 수신된 업데이트(220)를 메모리(216)의 보안 어레이(201)에 저장할 수 있다. 메모리(216)는 업데이트(220)와 연관된 서명을 수신하고 수신된 서명을 메모리(216)의 전용 서명 레지스터(218)에 저장할 수 있다. 수신된 서명은 호스트(202)에 의해 계산되고 업데이트(220)와 관련하여 제공되는 해시이다(예를 들어, 업데이트(220)와 함께 전송될 수 있음).
호스트(202)는 업데이트(220)의 유효성을 확인 서명 레지스터(218)에 저장하는 데 사용될 서명을 계산하기 위해 회로부(210) 및/또는 메모리(216)에 신선도 값을 요청하는 신호를 전송할 수 있다. 예를 들어, 회로부(210)는 호스트(202)가 업데이트(220)와 연관된 서명을 생성할 때(예를 들어, 단조 카운터로부터의) 신선도 값을 제공하도록 구성될 수 있다.
수신된 업데이트(220)가 진본이라는 예시적인 표시는 수신된 업데이트(220)와 연관된 서명을 수신하는 것, 및/또는 업데이트(220)의 예상된 서명을 계산하는 것일 수 있다. 예를 들어, 메모리(216)가 업데이트(220)와 연관된 서명을 수신하고 수신된 서명의 유효성을 확인하기 위해 예상된 서명을 계산하는 것은 수신된 업데이트(220)가 진본이라는 표시일 수 있다. 회로부(210)는 업데이트(220)가 진본이라는 표시에 응답하여 액션을 취할 수 있다. 예를 들어, 진본의 표시에 응답하여 취해진 액션은 수신된 서명을 재계산된 서명과 비교함으로써(예를 들어, 예상된 서명을 생성함으로써) 업데이트(220)의 유효성을 추가로 확인하는 것일 수 있다. 예상된 서명은 수신된 업데이트(220)를 실행하기 위해 호스트(202)로부터 메모리 장치(206)에 의해 수신된 신호에 응답하여 생성될 수 있다. 본원에서 사용되는 바와 같이, "업데이트를 실행하다"라는 용어는 호스트(202)에 의해 모니터링되는 장치에 업데이트(220)를 이용 가능하게 하는 메모리 장치(206)를 지칭한다. 메모리(216)는 업데이트(220)의 유효성을 확인하고 이를 메모리 어레이(201)의 다른 부분에 복사하여 호스트(202)에 의해 모니터링되는 장치에 이용 가능하게 할 수 있다.
구체적으로, 회로부(210)는, 신호를 수신하는 것에 응답하여, 예상된 서명을 생성하고 수신된 업데이트(220)의 유효성을 확인하기 위한 동작의 일부로서 예상된 서명을 수신된 서명과 비교할 수 있다. 메모리는 업데이트(220)와 함께 메모리에 전송할 서명을 계산하기 위해 호스트(202)에 신선도 값을 제공했기 때문에, 메모리(216)는 예상되는 서명과 동일한 값을 생성해야 한다. 다시 말해, 서명 레지스터(218)에 저장된 수신된 서명의 해시와 메모리(216)가 업데이트(220)의 유효성을 확인할 때 메모리(216)에 의해 생성된 예상된 서명의 해시는 업데이트(220)가 진본인(예를 들어, 유효한) 것으로 결정될 때 동일하다.
반대로, 서명 레지스터(218)에 저장된 수신된 서명의 해시와 메모리(216)가 업데이트(220)의 유효성을 확인할 때 메모리(216)에 의해 생성된 예상된 서명의 해시는 업데이트(220)가 유효하지 않은 것으로 결정될 때 다르다. 유효하지 않은 업데이트는 업데이트가 실수로 장치에 푸시되었고/되었거나 해킹 이벤트가 시도되었다는 표시일 수 있다. 어느 경우든, 메모리 장치(206)는 호스트에 통지하고 업데이트(220)를 폐기할 수 있다.
예상된 서명은 호스트(202)로부터 수신된 업데이트에 포함된 데이터에 의해 업데이트, 변경, 구성 및/또는 아니면 변경될 수 있는 메모리 어레이(201)에 저장된 콘텐트의 암호화 해시이다. 그러나, 본원의 이러한 예들에서, 메모리 어레이는 메모리 장치(206) 자체에서 업데이트를 실행하는 것과 대조적으로 유효성 확인을 위해 업데이트를 저장할 수 있다. 일부 예들에서, 예상된 서명은 예를 들어 SHA-256 암호화 해시를 포함할 수 있다. 또한, 메모리 어레이(201)에 저장된 데이터(예를 들어, 업데이트(220))의 암호화 해시 및 수신된 서명의 암호화 해시는 각각 256바이트의 데이터를 포함할 수 있다.
메모리 어레이(201)에 저장된 업데이트(220)에 대한 예상된 서명의 암호화 해시는 예를 들어 회로부(210)에 의해 생성(예를 들어, 계산)될 수 있다. 이러한 예에서, 저장된 업데이트(220)의 예상된 서명의 암호화 해시는 인터페이스(204) 상에서 이동하는 외부 데이터 없이 메모리 장치(206)에 의해 내부적으로 생성될 수 있다. 추가 예로서, 서명 레지스터(218)에 저장되고 업데이트(220)와 연관된 수신된 서명의 암호화 해시는 외부 엔티티(예를 들어, 호스트(202))로부터 전달될 수 있다. 예를 들어, 호스트(202)는 메모리 어레이(201)에 저장된 업데이트(220)와 연관된 수신된 서명의 암호화 해시를 생성하고, 수신된 서명의 생성된 암호화 해시를 메모리 장치(206)로 보낼 수 있다(예를 들어, 회로부(210)는 메모리 어레이(201)에 저장된 업데이트(220)와 연관된 수신된 서명의 암호화 해시를 호스트(202)로부터 수신할 수 있음).
업데이트(220)와 연관된 예상된 서명은 예를 들어, 호스트(202)로부터 수신된 명령(예를 들어, 신호)과 같은, 외부 명령에 기초하여(예를 들어, 이에 응답하여) 회로부(210)에 의해 생성(예를 들어, 계산)될 수 있다. 예를 들어, 예상된 서명은 대칭 또는 비대칭 암호화를 사용하여 생성될 수 있다. 예상된 서명은 (업데이트(220)와 관련하여 수신된 서명을 생성하기 위해 호스트(202)에 제공된 신선도 값과 일치해야 하는) 단조 카운터로부터의 값의 형태의 신선도 값을 포함할 수 있다. 예를 들어, 호스트(202)는 서명을 생성하고, 생성된 서명을 메모리 장치(206)로 전송(예를 들어, 제공)할 수 있다(예를 들어, 회로부(210)는 호스트(202)로부터 서명을 수신할 수 있음).
신선도 값은 호스트(202)로부터 수신된 각 업데이트(220)에 따라 변경될 수 있다. 따라서, 신선도 값은 들어오는 업데이트(220)가 유효한 업데이트인지 확인하는데 사용될 수 있다. 이는 업데이트(220)와 관련된 서명을 계산하는 데 신선도 값이 사용되기 때문에, 이와 같이, 호스트(202)는 요청된 신선도 값을 사용하여 업데이트(220)에 대한 서명을 생성한다. 업데이트(220)는 수신된 서명이 호스트(202)가 정확한 신선도 값을 갖기 때문에 들어오는 업데이트(220)가 호스트(202)와 관련되어 있음을 나타낼 때 유효한 것으로 확인된다. 따라서, 신선도 값은 서명을 계산하는 데 사용될 수 있기 때문에, 서명은 들어오는 업데이트(220)마다 다를 수 있다.
언급된 바와 같이, 서명은 예를 들어, 비대칭 암호화를 사용하여(예를 들어, 공개 및/또는 개인 키를 기반으로) 생성된 디지털 서명일 수 있으며, 예를 들어 타원 곡선 디지털 서명을 포함할 수 있다. 한 추가 예로서, 서명은 대칭 암호화를 사용하여(예를 들어, 호스트(202)와 메모리 장치(206) 간에 공유되는 고유한 비밀 키를 기반으로) 생성될 수 있다. 비밀 키는 모든 비대칭 프로토콜(예를 들어, 디피 헬먼(Diffie-Hellman) 프로토콜)을 사용하여 교환될 수 있다. 다른 예들에서, 키는 안전한 환경(예를 들어, 공장 생산, 보안 제조 등)에서 호스트(202)와 공유될 수 있다. 비밀 키의 생성 및 확인은 도 6 내지 11과 관련하여 추가로 논의된다.
도 2에 도시된 바와 같이, 업데이트(220)는 물론 업데이트(220)와 관련된 수신된 서명은 메모리 어레이(201)에 저장될 수 있다. 예를 들어, 업데이트(220)는 메모리 장치(206), 호스트(202)에 의해 모니터링된 장치 및/또는 호스트(202)의 사용자가 액세스할 수 없는 메모리 어레이(201)의 일부에(예를 들어, 메모리 어레이(201)의 "히든(hidden)" 영역에) 저장될 수 있다. 업데이트(220)가 메모리(216)에 의해 확인될 때까지 이를 메모리 어레이(201)에 저장하는 것은 부정한 또는 부주의한 업데이트가 호스트(202)에 의해 모니터링되는 장치에서 실행되는 것을 방지할 수 있다.
일 실시예에서, 메모리 어레이(201)(예를 들어, 메모리 어레이(201)의 서브셋 또는 전체 어레이(201))는 보안 어레이(예를 들어, 제어 하에 유지될 메모리(216)의 영역)일 수 있다. 도 2는 한 쌍의 레지스터들(214-1 및 214-2)을 도시하지만, 실시예들은 이에 제한되지 않으며, 하나 이상의 레지스터들 및/또는 하나 이상의 레지스터 쌍들이 사용될 수 있다. 예를 들어, 메모리 어레이(201)에 저장된 데이터(예를 들어, 업데이트(220))는 민감한 애플리케이션들을 위해 실행될 장치 펌웨어 및/또는 코드와 같은, 민감한(예를 들어, 비사용자) 데이터를 포함할 수 있다. 이러한 실시예에서, 한 쌍의 비휘발성 레지스터들을 사용하여 보안 어레이를 정의할 수 있다. 예를 들어, 도 2에 예시된 실시예에서, 회로부(210)는 보안 어레이를 정의하는데 사용될 수 있는 레지스터들(214-1, 214-2)을 포함한다. 예를 들어, 레지스터(214-1)는 보안 어레이의 어드레스(예를 들어, 데이터의 시작 LBA)를 정의할 수 있으며, 레지스터(214-2)는 보안 어레이의 크기(예를 들어, 데이터의 종료 LBA)를 정의할 수 있다. 이러한 레지스터들의 일 예, 및 보안 어레이를 정의하는 데 있어서의 사용은 (도 5a-5b와 관련하여) 본원에 추가로 설명될 것이다.
보안 어레이가 정의되면, 회로부(210)는 인증 및 재생 방지 보호 명령들을 사용한, 본원에서는 골든 해시(예를 들어, 메모리 장치(206)만이 골든 해시를 알고 있고, 메모리 장치(206)만이 이를 생성 및 업데이트할 수 있도록 함)라고 할 수 있는, 보안 어레이와 연관된 암호화 해시를 생성(예를 들어, 계산)할 수 있다. 골든 해시는 메모리 어레이(201)의 접근 불가능 부분(예를 들어, 업데이트(220)가 위치되는 동일한 접근 불가능 부분)에 저장될 수 있으며, 본원에 더 설명되는 바와 같이, 보안 어레이(201)의 업데이트(220)를 확인하는 프로세스 동안 사용될 수 있다. 앞의 예에서, 골든 해시 값은 업데이트(220)의 유효성을 확인하기 위해 계산된 예상된 서명이다.
구체적으로, 호스트(202)와 연관된 메모리 장치(206)는 호스트(202)와 연관된 장치에 대한 업데이트(220)를 수신하고 업데이트(220)를 메모리 어레이(220)에 저장할 수 있다. 언급된 바와 같이, 호스트(202)로부터 수신된 업데이트(220)는 업데이트와 연관된 생성된 수신된 서명을 포함한다. 예를 들어, 메모리 장치(206)는 업데이트(220)와 연관된 서명을 수신할 수 있다. 수신된 서명은 신선도 값이 메모리 장치(206)와 호스트(202) 사이에서 교환되기 때문에 업데이트(220)가 호스트(202)와 연관됨을 나타내는 신선도 값을 포함한다. 메모리 장치(206)는 업데이트(220)의 유효성을 확인할 수 있다.
예를 들어, 메모리 장치(206)는 수신된 서명과 예상된 서명(예를 들어, 골든 해시) 간의 비교에 기초하여 업데이트(220)가 유효한지 여부를 결정할 수 있다. 수신된 서명과 값이 동일한 예상된 서명은 업데이트가 유효함을 나타내며; 메모리는 수신된 서명과 상기 예상된 서명이 동일하다는 결정에 응답하여 업데이트(220)를 메모리 장치(206)의 보안 메모리 어레이(201)로부터 비-보안 부분으로 복사할 수 있다.
업데이트(220)를 메모리 어레이의 다른 부분으로 복사하는 것은 업데이트(220)를 메모리 어레이(201)의 보안 부분에서 메모리 어레이(201)의 비-보안 부분으로 복사하는 것을 포함할 수 있다. 일부 예들에서, 확인된 업데이트(220)는 메모리 어레이(201)의 다른 보안 부분, 또는 메모리(216)의 보안 부분과 비보안 부분의 조합들로 복사될 수 있다. 임의의 실시예에서, 업데이트(220)의 확인에 응답하여 업데이트(220)를 메모리 어레이(201)의 다른 부분으로 복사하는 것은 업데이트(220)를 호스트(202)에 의해 모니터링되는 장치에 이용 가능하게 만든다. 이 방식으로, 호스트(202)에 의해 모니터링되는 장치는 추가적인 컴퓨팅 컴포넌트들에 대한 필요 없이 확인된 오버-디-에어로 업데이트를 수신할 수 있다.
일부 예들에서, 업데이트(220)의 유효성 확인은 메모리 장치(206)에 신호를 전송하는 호스트(202)에 의해 개시될 수 있다. 다른 예들에서, 유효성 확인은 업데이트(220)가 수신되었음을 감지하는 회로부(210)에 의해 개시된다. 예를 들어, 회로부(210)는 메모리 어레이(201)에 저장된 업데이트(220) 및 서명 레지스터(218)에 있는 수신된 서명을 감지(예를 들어, 판독)할 수 있다. 회로부가 업데이트(220)를 감지하는 것에 응답하여, 회로부는 메모리 장치(206)의 전원 공급(예를 들어, 파워 온 및/또는 파워 업)에 응답하여 업데이트(220)의 유효성을 확인하기 위해 예상된 서명(예를 들어, 골든 해시)을 생성할 수 있다. 이와 같이, 메모리 어레이(201)에 저장된 업데이트(220)의 확인은 메모리 장치(206)의 전원 공급 시 (예를 들어, 자동으로) 개시될 수 있다.
예를 들어, 메모리 어레이(201)가 보안 어레이인 실시예들에서, 본원에서 앞서 설명된 골든 해시는 메모리 어레이(201)에 저장된 업데이트(220)를 확인하는데 사용될 수 있다. 예를 들어, 업데이트(220)와 함께 수신되는 수신된 서명 해시(서명 레지스터(218)에 저장됨)가 생성(예를 들어, 계산)되며, 골든 해시(예를 들어, 예상 서명)와 비교될 수 있다. 비교 결과 서명 레지스터(218)에 저장된 수신된 서명과 예상된 서명이 일치하는 것으로 나타나는 경우, 보안 어레이가 변경되지 않았으므로 그 안에 저장된 데이터가 유효하다고 결정될 수 있다. 또한, 이는 호스트(202)가 예상된 서명(예를 들어, 골든 해시)과 일치하도록 서명을 계산하기 위해 정확한 신선도 값을 가져야 하기 때문에, 업데이트(220)가 호스트(202)로부터 온 것임을 나타낸다. 그러나, 비교 결과 수신된 서명과 예상된 서명이 일치하지 않는 것으로 나타나는 경우, 보안 어레이(201)에 저장된 업데이트(220)가 (예를 들어, 해커, 메모리 오류 및/또는 의도하지 않은 행동으로 인해) 변경되었고, 및/또는 부정한(예를 들어, 임포스터) 호스트로부터 전송되었음을 나타낼 수 있으며, 이는 호스트(202)에 보고될 수 있다.
도 2에 예시된 실시예는 본 개시의 실시예들을 모호하게 하지 않도록 예시되지 않는 추가 회로부, 로직 및/또는 컴포넌트들을 포함할 수 있다. 예를 들어, 메모리 장치(206)는 I/O 회로부를 통해 I/O 커넥터들을 통해 제공된 어드레스 신호들을 래칭하는 어드레스 회로부를 포함할 수 있다. 어드레스 신호들은 메모리 어레이(201)에 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신 및 디코딩될 수 있다. 또한, 메모리 장치(206)는 메모리 어레이(201) 외에 및/또는 별도인, 예를 들어, DRAM 또는 SDRAM과 같은 메인 메모리를 포함할 수 있다. 메모리 장치(206)의 추가 회로부, 로직, 및/또는 컴포넌트들을 더 예시하는 일 예가 (예를 들어, 도 11과 관련하여) 본원에 더 설명될 것이다.
도 3은 본 개시의 일 실시예에 따른 예시적인 메모리 장치(예를 들어, 도 2와 관련하여 앞서 설명된 메모리 장치(206))를 사용하여 오버-디-에어 업데이트 유효성 확인을 위한 예시적인 시스템(309)을 예시한다. 도 3은 호스트(302)를 포함하는 시스템(309)을 예시한다. 본원에 언급된 바와 같이, 호스트(302)는 각각의 펌웨어 등에 필요한 업데이트들을 위해 개별 장치 또는 다수의 장치들(도 3에 예시되지 않음)를 모니터링할 수 있다. 도 3에 예시된 바와 같이, 호스트(302)는 개별 및/또는 다수의 업데이트들(예를 들어, 321-1, 321-2 및 321-3)을 포함할 수 있으며, 여기서 각 업데이트는 대응하는 서명(예를 들어, 333-1, 333-2 및 333-3)을 포함한다. 각 업데이트는 오버-디-에어로 각각의 장치들에 전송될 수 있다. 예를 들어, 업데이트(321-1)는 호스트(302)에 의해 모니터링되는 제1 유형의 IoT 장치에 대한 것일 수 있고, 업데이트(321-2)는 호스트(302)에 의해 모니터링되는 제2 유형의 IoT 장치에 대한 것일 수 있으며, 321-3은 호스트(302)에 의해 모니터링되는 제3 유형의 IoT 장치에 대한 것일 수 있다. 업데이트들(321-1, 321-2 및 321-3)은 IoT 장치들의 유형보다는 카테고리, 지리학적 영역, 브랜드, 장치의 연식, 환경적 요인 등에 적용될 수 있다.
메모리(316)는 호스트(302)와 공개 키 및 개인 키를 교환함으로써 호스트(302)와의 보안 통신에 참여할 수 있다. 예를 들어, 메모리(316)는 호스트(302)와 연관된 개인 키(344)를 포함할 수 있다. 공개 키와 개인 키의 교환은 보안 통신 및/또는 보안 위치(예를 들어, 제조 동안 등)를 사용하여 발생할 수 있다. 메모리(316)는 개인 키(344)를 사용하여 호스트(302)로부터의 메시지들(예를 들어, 업데이트들(321-1, 321-2 및 321-3))을 복호화할 수 있고, 메모리(316)는 호스트(302)의 공개 키(도시되지 않음)를 사용하여 업데이트들(321)과 연관된 서명들(333-1, 333-2 및 333-3)의 유효성을 확인할 수 있다. 언급된 바와 같이, 비밀 키(예를 들어, 개인 키(344))의 생성 및 유효성 확인은 도 6 내지 11과 관련하여 더 논의된다.
일부 예들에서, 메모리(316)는 동시에 및/또는 일정 시간 기간 동안 다수의 업데이트들(예를 들어, 업데이트들(321-1, 321-2, 및/또는 321-3))을 보호하기 위한 메모리 어레이(예를 들어, 보안 메모리 어레이(301))의 다수의 영역들을 포함할 수 있다. 메모리(316)는 개별 호스트(예를 들어, 호스트(302)) 및/또는 다수의 상이한 호스트들로부터의 다수의 업데이트들을 저장할 수 있다. 메모리(316)가 다수의 상이한 호스트들로부터 업데이트들을 수신하는 경우, 메모리(316)는 각 호스트에 대응하는 서로 다른 개인 키(예를 들어, 개인 키(344))를 포함할 수 있다. 이러한 실시예들은 도 4를 참조하여 더 논의된다.
업데이트들(321)의 유효성 확인을 제공하기 위해, 호스트(302)는 인터페이스(304)(도 2의 인터페이스(204)와 유사함)를 통해 업데이트들(321)을 메모리(316)로 전송할 수 있다. 예를 들어, 업데이트들(321)은 호스트(302)가 호스트(302)에 의해 관리되는 다수의 장치들을 위한 업데이트들(예를 들어, 321-1, 321-2 및 321-3)을 전송하는 것에 응답하여 호스트(302)로부터 오버-디-에어로 수신된다. 이 방식으로, 메모리(316)는 호스트(302)에 의해 관리되는 각각의 장치(예를 들어, 각각의 장치 그룹)에 대한 각각의 업데이트의 유효성을 확인할 수 있다.
예를 들어, 회로부(예를 들어, 도 2와 관련하여 설명된 회로부(210)) 및/또는 메모리(316)는 서명(331-1) 및 서명(333-1)에 대응하는 업데이트(321-1)를 호스트(302)로부터 수신할 수 있으며, 여기서 업데이트(321-1)는 호스트(302)에 의해 모니터링되는 장치에 대한 것이다. 회로부는 보안 메모리 어레이(301)(예를 들어, 보안 어레이)에 업데이트(321-1)를 업데이트(320)로서 저장(화살표(337)로 표시됨)하고, 수신된 서명(333-1)을 서명 레지스터(318)에 저장(화살표(332)로 표시됨)할 수 있다.
앞서 설명된 바와 같이, 수신된 서명(331-1)은 메모리(316)로부터 획득된 신선도 값을 사용하여 호스트(302)에 의해 생성된다. 예를 들어, 업데이트(321-1)에 대응하는 서명(333-1)을 생성하기 위해, 호스트(302)는 메모리(316)의 (예를 들어, 단조 카운터에 의해 생성된) 신선도 필드(324)로부터 신선도 값을 수신(화살표(335)로 표시됨)할 수 있다. 업데이트마다(예를 들어, 321-1, 321-2 및 321-3) 신선도 값이 변경되기 때문에, 각 서명(예를 들어, 333-1, 333-2 및 333-3)은 서로 다를 것이다. 따라서, 서명(333-1)은 333-2와 다르며, 이는 333-3과 다르다. 또한, 호스트(302)가 메모리(316)로부터 신선도 값을 획득하기 때문에, 메모리(316)와 호스트(302)만이 동일한 서명들을 생성할 수 있고, 따라서 수신된 서명(333-1)과 예상된 서명(도 4와 관련하여 더 상세하게 설명됨)이 동일할 때 업데이트가 임포스터로부터 온 것이 아니라 것이 확인된다.
예를 들어, 회로부는 업데이트(320)를 확인하기 위해 예상된 서명을 생성할 수 있으며, 여기서 업데이트(320)는 예상된 서명과 수신된 서명(333-1)이 동일할 때 확인된다. 본원에 언급된 바와 같이, 일부 에들에서, 유효성 확인 프로세스는 메모리(316)가 파워 온 될 때 개시될 수 있다. 다른 예들에서, 회로부는 서명(333-1)을 판독하고 예상된 서명(예를 들어, 골든 해시)을 생성하라는 명령을 호스트(302)로부터 수신할 수 있으며, 여기서 예상된 서명은 수신된 서명(333-1)과 관련된 업데이트(320)를 저장하고 있는 보안 어레이(예를 들어, 보안 메모리 어레이(301))의 해시이다.
수신된 서명(333-1)과 생성된 예상된 서명이 동일하다고 결정함으로써 업데이트(320)의 유효성을 확인하는 것에 응답하여, 회로부는 업데이트(320)를 업데이트하고자 하는 장치에 이용 가능하게 할 수 있다. 예를 들어, 회로부는 업데이트(320)의 유효성이 확인될 때 메모리(316)의 비-보안 어레이(326)(예를 들어, 보안 메모리 어레이(301)의 비-보안 부분)에 업데이트(320)를 복사할 수 있다. 이 방식으로, 오버-디-에어 업데이트(320)의 유효성이 확인될 수 있고, 호스트(302)에 의해 모니터링되는 장치(및/또는 다수의 장치들)는 비-보안 어레이(326)로부터 업데이트(320)를 검색하고 장치의 정교함에 관계없이 그들 각각의 펌웨어를 업데이트할 수 있다. 도 3과 관련하여 설명된 방법들 및 구성들은 서명(333-2)와 관련된 업데이트(321-2) 및 서명(333-3)과 관련된 업데이트(321-3)에 적용될 수 있다.
도 4는 본 개시의 일 실시예에 따른 예시적인 메모리 장치(예를 들어, 메모리(416))를 사용하는 오더-디-에어 업데이트 확인을 위한 예시적인 흐름도(449)를 예시한다. 흐름도(449)는 개인 키들(444-1 및 444-2), 서명 레지스터(418), 신선도 필드(424), 보안 메모리 어레이들(401-1 및 401-2)(예를 들어, 메모리 어레이(201) 및/또는 도 2의 메모리 어레이(201)의 일부) 및 비-보안 어레이(426)를 포함하는 예시적인 메모리(416)를 예시한다. 도 4는 호스트(402)로부터 업데이트로서 수신된 후 보안 메모리 어레이(401-1) 내부에 저장된 업데이트(420-1)(예를 들어, 도 3과 관련하여 설명된 업데이트(321-1))를 예시한다. 보안 메모리 어레이(401-1 및 401-2)는 레지스터들(예를 들어, 도 2와 관련하여 논의된 레지스터들(214-1 및 214-2))에 의해 정의된다. 도 4는 호스트(402)로부터 업데이트(예를 들어, 도 3과 관련하여 설명된 업데이트(321-2))로서 수신된 후 보안 메모리 어레이(401-2) 내부에 저장된 업데이트(420-2)를 예시한다. 또한, 도 4는 비보안 어레이(426)에 저장된 확인된 업데이트(422)(이는 업데이트(420-1) 및/또는 업데이트(420-2) 사후 유효성 확인일 수 있음)를 예시하며, 여기서 확인된 업데이트(422)는 도 4와 관련하여 실시예들에서 설명되는 바와 같이, 확인된 업데이트를 나타낸다.
본 개시의 예들을 모호하게 하지 않기 위해 도 4에 예시되지 않았지만, 호스트(402)는 각각의 서명들(예를 들어, 도 3과 관련하여 논의된 333-1, 333-2 및 333-3)과 함께 업데이트들(예를 들어, 도 3과 관련하여 논의된 업데이트들(321-1, 321-2 및 321-3))을 포함할 수 있다. 호스트(402)는 인터페이스(404)를 통해 메모리(416)에 통신 가능하게 결합된다. 호스트(402)는 IoT 장치(448)와 같은 개별 및/또는 다수의 장치들을 모니터링할 수 있다. 개별 장치(448)가 도 4에 예시되어 있지만, 다수의 장치들이 호스트(402)에 의해 모니터링될 수 있다.
개별 호스트(402)를 포함하는 것으로 예시되어 있지만, 메모리(416)는 다수의 호스트들(예를 들어, 호스트(402))로부터 업데이트들(420-1, 420-2)을 수신할 수 있다. 다중 호스트 실시예에서, 메모리(416)는 각 개인 키가 특정 호스트와 연관될 수 있는 하나 이상의 개인 키들(예를 들어, 444-1 및 444-2)을 포함할 수 있다. 예를 들어, 제1 호스트(예를 들어, 호스트(416))는 개인 키(444-1)를 사용하여 메모리(416)와 안전하게 통신할 수 있고, 제2 호스트(예시되지 않음)는 개인 키(444-2)를 사용하여 메모리(416)와 안전하게 통신할 수 있다.
예시의 편의를 위해, 개별 호스트(402)가 예시된다. 일부 예들에서, 호스트(402)는 메모리(416)에 의해 수신되고 유효성 확인을 위한 보안 메모리 어레이에 저장될 수 있는 다수의 업데이트들(예를 들어, 도 3과 관련된 업데이트들(321-1, 321-2 및 321-3))을 제공할 수 있다. 예를 들어, 호스트(402)는 업데이트(420-1)로서 보안 메모리 어레이(401-1)에 저장될 오버-디-에어 제1 업데이트(예를 들어, 도 3의 업데이트(321-1)) 및 업데이트(420-2)로서 보안 메모리 어레이(401-2)에 저장될 제2 업데이트(예를 들어, 도 3의 321-1)를 제공할 수 있다. 본원에 설명된 방법들을 사용하여, 메모리(416)는 다수의 업데이트들(예를 들어, 업데이트들(420-1 및 420-2)) 및/또는 개별 업데이트에 대한 오버-디-에어 업데이트 유효성 확인을 제공할 수 있다.
호스트(402)는 메모리(416)가 호스트(402)에 의해 모니터링되는 장치들(예를 들어, IoT 장치(448))에 대한 오버-디-에어 업데이트 유효성 확인을 수행할 수 있도록 메모리(416)와 연관될 수 있다. 예를 들어, 메모리 장치(416)에 의해, 서명(예를 들어, 333-1) 및 서명에 대응하는 업데이트(321-1)을 호스트402)로부터 수신하는 것으로서, 여기서 업데이트는 호스트(402)에 의해 모니터링되는 IoT 장치(448)에 대한 것이다. 이 예에서, 호스트(402)로부터 서명을 수신하는 것은 메모리(416)가 호스트(402)로부터 수신된 신호(439)에 응답하여, 신선도 필드(424)로부터의 신선도 값을 호스트(402)로 전송하는 것을 더 포함한다. 구체적으로, 439에서 신호(요청 및/또는 데이터 전송)를 통해, 호스트(402)는 확인될 업데이트에 대응하는 서명이 생성될 수 있도록 메모리(416)에 신선도 값을 요청할 수 있다. IoT 장치(448)에 대응하는 호스트(402)로부터 수신된 업데이트(420-1)는 보안 어레이(401-1)에 저장될 수 있고 메모리(416)에 의해 안전하게 확인될 수 있다.
예를 들어, 메모리(416)에 의해, 업데이트(420-1)를 보안 메모리 어레이(401-1)에 저장하고 수신된 서명을 서명 레지스터(418)에 저장하는 것은 수신되었지만 확인되지 않는 업데이트(420-1)가 IoT 장치(448)에 이용 가능하게 되는 것을 방지한다. 그런 다음, 메모리(416)는 서명 레지스터(418)에 저장된 수신된 서명을 생성된 예상된 서명(예를 들어, 골든 해시)과 비교할 수 있다. 예를 들어, 440에서, 메모리(416)에 의해, 수신된 업데이트(420-1)를 실행하라는 명령을 호스트(402)로부터 수신하는 것에 응답하여 예상된 서명을 생성한다. 다시 말해, 441에서, 메모리(416)에 의해, 예상된 서명(예를 들어, 골든 해시)를 수신된 서명(서명 레지스터(418)에 저장됨)을 비교하는 것으로, 예상된 서명은 업데이트(420-1)의 유효성을 확인하기 위해 생성된다. 일부 예들에서, 예상된 서명과 수신된 서명이 일치하지 않으며, 이는 업데이트(420-1)가 부정확하거나, 부정한 것이거나, 악의적이거나, 및/또는 아니면 승인되지 않았음을 나타낼 수 있다.
예를 들어, 442에서, 메모리(416)는 예상된 서명과 수신된 서명이 일치되지 않았다(예를 들어, 444에서 "아니오")고 결정할 수 있다. 이 예에서는, 446에서, 메모리(416)는 업데이트(420-1)를 보안 메모리 어레이(401-1) 외부의 위치로 복사하는 것을 금지할 수 있다. 다시 말해, 업데이트(420-1)가 레지스터들(예를 들어, 도 2와 관련하여 논의된 레지스터들(214-1 및 214-2))에 의해 정의된 보안 메모리 어레이(401-1)에 저장되기 때문에, 업데이트(420-1)는 다른 사용자들, 장치들 및/또는 호스트들로부터 보안된다. 따라서, 잠재적으로 손상된 업데이트(420-1)는 IoT 장치(448) 및/또는 호스트(402)를 손상시키지 않고 메모리(416)로부터 제거될 수 있다. 다른 예들에서, 예상된 서명과 수신된 서명이 일치하며, 이는 업데이트(420-1)가 호스트(402)로부터 온 것이고 업데이트가 확인되었음을 나타낸다.
예를 들어, 442에서, 메모리(416)는 예상된 서명과 수신된 서명이 일치한다(예를 들어, 443에서 "예")고 결정할 수 있다. 화살표(445)로 나타낸 이 예에서, 메모리(416)는 업데이트(420-1)를 보안 메모리 어레이(401-1) 외부의 위치에 복사할 수 있다(예를 들어, 복사는 비보안 어레이(426)에서 업데이트(422)의 유효성이 확인됨). 예를 들어, 메모리(416)에 의해, 업데이트(420-1)의 유효성이 확인되고 확인된 업데이트(422)가 되는 것에 응답하여 업데이트(420-1)를 메모리(416)의 보안 메모리 어레이(401-1)로부터 어레이(426)의 비-보안 부분으로 복사하는 것으로서, 여기서 확인된 업데이트(422)는 업데이트(420-1)가 복사될 때(확인된 업데이트(422)가 될 때) IoT 장치(448)에 이용 가능하다. 다시 말해, 확인된 업데이트(422)가 비-보안 어레이(426)에 저장되기 때문에, 확인된 업데이트(422)는 사용자들, 장치들 및/또는 호스트들에 이용 가능하다. 또한, 일부 예들에서, 메모리(416)는 오버-디-에어 업데이트를 수신하고자 했던 호스트(402)에 의해 모니터링된 장치들에 확인된 업데이트(422)를 전송할 수 있다.
도 4와 관련하여 본원에 설명된 방법들은 다수의 업데이트들에 적용될 수 있다. 예를 들어, 업데이트(420-1)에 적용된 오버-디-에어 업데이트 유효성 확인의 방법들 및 예들은 보안 메모리 어레이(401-2)에 저장된 업데이트(420-2)에 적용될 수 있다.
도 5a는 본 개시의 일 실시예에 따른 보안 메모리 어레이를 정의하는데 사용되는 한 쌍의 레지스터들(514-1, 514-2)의 예를 예시하고, 도 5b는 본 개시의 일 실시예에 따른 레지스터들(514-1 및 514-2)을 사용하여 정의된 보안 메모리 어레이를 포함하는 메모리 어레이(501)의 일부의 도면을 예시한다. 예를 들어, 레지스터들(514-1 및 514-2)은 각각 앞서 도 2와 관련하여 설명된 레지스터들(214-1 및 214-2)일 수 있으며, 보안 메모리 어레이(501)는 예를 들어, 앞서 도 2와 관련하여 설명된 메모리 어레이(201)일 수 있다. 예를 들어, 도 5b에 도시된 바와 같이, 보안 메모리 어레이(501)는 메모리 셀들의 다수의 물리적 블록들(507-0, 507-1, ..., 507-B)를 포함할 수 있으며, 각각은 도 1과 관련하여 앞서 설명된 메모리 어레이(101)와 유사한 방식으로, 메모리 셀들의 다수의 섹터들을 갖는 다수의 물리적 행들(503-0, 503-1, ..., 503-R)을 포함한다.
도 5a에 도시된 바와 같이, 레지스터(514-1)는 보안 어레이의 어드레스들(예를 들어, 보안 어레이의 다른 부분들의 어드레스들)을 정의할 수 있고, 레지스터(514-2)는 보안 어레이의 크기들(예를 들어, 보안 어레이의 다른 부분의 크기들)을 정의할 수 있다. 레지스터(514-1)에 의해 정의된 보안 어레이의 어드레스들은, 예를 들어, 보안 어레이의 시작 지점들(예를 들어, 시작 LBA들)(예를 들어, 보안 어레이의 다른 부분들의 시작 지점들)에 대응할 수 있고, 레지스터(514-2)에 의해 정의된 보안 어레이의 크기들은, 예를 들어, 보안 어레이의 종료 지점들(예를 들어, LBA의 종료)(예를 들어, 보안 어레이의 다른 지점들의 종료 지점들)에 대응할 수 있다.
예를 들어, 도 5a에 도시된 바와 같이, 레지스터들(514-1 및 514-2)은 N 쌍의 값들을 정의할 수 있으며, 각각의 개별 쌍은 레지스터(514-1)에 의해 정의된 어드레스 값(예를 들어, addr) 및 레지스터(514-2)에 의해 정의된 크기 값(예를 들어, size)을 포함한다. 예를 들어, 도 5a에 예시된 예에서, Pair0은 어드레스 값 addr0과 크기 값 size0(예를 들어, Pair0 = [addr0, size0])을 포함하고, Pair1은 어드레스 값 addr1과 크기 값 size1(예를 들어, Pair1 = [addr1, size1]) 등을 포함하며, PairN은 어드레스 값 addrN 및 크기 값 sizeN(예를 들어, PairN = [addrN, sizeN])를 포함한다. 한 쌍의 어드레스 값은 보안 어레이의 일부의 시작 지점(예를 들어, 시작 LBA)에 대응할 수 있으며, 해당 쌍의 어드레스 값과 크기 값의 합은 보안 어레이의 해당 부분의 종료 지점(예를 들어, 종료 LBA)에 대응할 수 있다. 이와 같이, 전체 보안 어레이(예를 들어, 전체 보안 어레이를 포함하는 부분들)는 다음과 같이 주어질 수 있다: [addr0, addr0 + size0] ∪ [addr1, addr1 + size1] ∪ … ∪ [addrN, addrN + sizeN].
레지스터(514-2)에 의해 정의된 크기 값이 0인 첫 번째 쌍은 보안 어레이의 정의를 중지할 수 있다. 예를 들어, 도 5a에 예시된 예에서, Pair2의 크기 값이 0이면, 보안 어레이는 다음과 같이 주어질 것이다: [addr0, addr0 + size0] ∪ [addr1, addr1 + size1].
레지스터들(514-1 및 514-2)에 의해 정의된 보안 어레이의 일 예(예를 들어, 레지스터(514-2)에 의해 0이 아닌 것으로 정의된 모든 크기 값들을 가짐)가 도 5b에 예시된다. 예를 들어, 도 5b에 도시된 바와 같이, 메모리 어레이(501)의 섹터(505-0)와 연관된 어드레스(예를 들어, LBA)는 addr0이고, 메모리 어레이(501)의 섹터(505-1)와 연관된 어드레스는 addr0 + size0이고, 메모리 어레이(501)의 섹터(505-2)와 연관된 어드레스는 addr1이고, 메모리 어레이(501)의 섹터(505-3)와 연관된 어드레스는 addr1 + size1이고, 메모리 어레이(501)의 섹터(505-4)와 연관된 어드레스는 addrN이고, 메모리 어레이(501)의 섹터(505-5)와 연관된 어드레스는 addrN + sizeN이다. 이와 같이, 보안 어레이는 섹터들(예를 들어, 섹터들에 저장된 데이터)(505-0 내지 505-1), 섹터들(505-2 내지 505-3 및 505-4 내지 505-5)을 포함한다. 그러나, 섹터(505-0) 앞에 있는 메모리 어레이(501)의 섹터들, 및 메모리 어레이(501)의 섹터들(505-1 내지 505-2)은 보안 어레이의 일부가 아니다(예를 들어, 보안 어레이는 어레이(501)의 서브셋을 포함한다).
도 6은 본 개시의 일 실시예에 따른 호스트(602) 및 메모리 장치(606)를 포함하는 예시적인 시스템의 블록도이다. 호스트(602) 및 메모리 장치(606)는 각각 예를 들어, 도 2와 관련하여 앞서 설명된, 호스트(202) 및 메모리 장치(206)일 수 있다.
컴퓨팅 장치는 계층들을 사용하여 단계적으로 부팅할 수 있으며, 각 계층은 후속 계층을 인증 및 로드하고 각 계층에서 점점 더 정교한 런타임 서비스들을 제공한다. 계층은 이전 계층에 의해 제공될 수 있고, 후속 층에 제공될 수 있으며, 이에 의해 하위 계층들 위에 구축되고 더 높은 차수의 계층들을 제공하는 계층들의 상호 연결된 웹을 생성한다. 도 6에 예시된 바와 같이, 계층 0("L0")(651) 및 계층 1("L1")(653)은 호스트 내에 있다. 계층 0(651)은 펌웨어 파생 비밀(FDS) 키(652)를 계층 1(653)에 제공할 수 있다. FDS 키(652)는 계층 1(653)의 코드의 아이덴티티 및 다른 보안 관련 데이터를 기술할 수 있다. 일 예에서, 특정 프로토콜(예컨대 강력한 사물 인터넷(RIOT) 코어 프로토콜)은 FDS(652)를 사용하여 이를 로드하는 계층 1(653)의 코드를 확인할 수 있다. 일 예에서, 특정 프로토콜은 장치 식별 구성 엔진(device identification composition engine; DICE) 및/또는 RIOT 코어 프로토콜을 포함할 수 있다. 일 예로서, FDS은 계층 1 펌웨어 이미지 자체, 인증된 계층 1 펌웨어를 암호화 방식으로 식별하는 매니페스트, 보안 부팅 구현의 맥락에서 서명된 펌웨어의 펌웨어 버전 번호 및/또는 장치의 보안에 중요한 구성 설정들을 포함할 수 있다. 장치 시크릿(658)을 사용하여 FDS(652)를 생성하고 호스트(602)와 관련된 메모리에 저장할 수 있다.
호스트는 화살표(654)로 예시된 바와 같이 데이터를 메모리 장치(606)에 전송할 수 있다. 전송된 데이터는 공개인 외부 식별, 인증서(예를 들어, 외부 식별 인증서) 및/또는 외부 공개 키를 포함할 수 있다. 메모리 장치(606)의 계층 2("L2")(655)는 전송된 데이터를 수신하고, 운영 체제("OS")(657)의 동작들 시 및 제1 애플리케이션(659-1) 및 제2 애플리케이션(659-2)에서 데이터를 실행할 수 있다.
예시적인 동작에서, 호스트(602)는 장치 시크릿(658)을 판독, Layer 1(653)의 아이덴티티를 해시하고, 다음을 포함하는 계산을 수행할 수 있다:
KL1 = KDF [Fs(s), 해시("변경 불가능 정보")]
여기서, KL1은 외부 공개 키이고, KDF(예를 들어, NIST(National Institute of Standards and Technology) 특별 간행물 800-108에 정의된 KDF)는 키 유도 함수(예를 들어, HMAC-SHA256)이며, Fs(s)는 장치 시크릿(658)이다. FDS(652)는 다음을 수행하여 결정될 수 있다:
FDS = HMAC-SHA256 [ Fs(s), SHA256(“변경 불가능 정보”)]
마찬가지로, 메모리 장치(606)는 데이터를 화살표(656)로 예시된 바와 같이 호스트(602)로 전송할 수 있다.
도 7은 본 개시의 일 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다. 도 7은, 메모리 장치(예를 들어, 도 6의 606)의, 화살표(754)로 표시된, 계층2(예를 들어, 계층 2(655))로 전송되는, 외부 공개 식별 정보, 외부 인증서 및 외부 공개 키를 포함하는 파라미터들의 결정의 일 예이다. 도 7의 계층 0("L0")(751)은 도 6의 계층 0(651)에 대응하고, 마찬가지로 FDS(752)는 FDS(652)에 대응하고, 계층 1(753)은 계층 1(653)에 대응하고, 화살표들(754 및 756)은 각각 화살표들(654 및 656)에 대응한다.
계층 0(751)의 FDS(752)는 계층 1(753)로 전송되고, 비대칭 ID 생성기(761)에 의해 사용되어 공개 ID("IDlk public")(765) 및 개인 ID(767)를 생성한다. 약어 "IDlk public"에서 "lk"는 계층 k(이 예에서는 계층 1)를 나타내고, "public"은 ID가 공개적으로 공유됨을 나타낸다. 공개 식별 정보(765)는 호스트의 계층 1(753)의 오른쪽 및 외부로 연장되는 화살표에 의해 공유되는 것으로 예시된다. 생성된 개인 식별 정보(767)는 암호화기(773)에 입력되는 키로서 사용된다. 암호화기(773)는 데이터를 암호화하는데 사용되는 임의의 프로세서, 컴퓨팅 장치 등일 수 있다.
호스트의 계층 1(753)은 비대칭 키 생성기(763)를 포함할 수 있다. 적어도 한 예에서, 난수 생성기(RND)(736)는 선택적으로 비대칭 키 생성기(763)에 난수를 입력할 수 있다. 비대칭 키 생성기(763)는 도 6의 호스트(602)와 같은 호스트와 관련된 공개 키("KLk public")(769)(외부 공개 키라고 함) 및 개인 키("KLK private")(771)(외부 개인 키라고 함)를 생성할 수 있다. 외부 공개 키(769)는 암호화기(773)에 대한 입력("데이터"로서)일 수 있다. 암호화기(773)는 외부 개인 식별 정보(767) 및 외부 공개 키(769)의 입력들을 사용하여 결과(K')(775)를 생성할 수 있다. 외부 개인 키(771)와 결과(K')(775)는 추가 암호화기(777)에 입력될 수 있으며, 그 결과 출력(K'')(779)이 생성된다. 출력(K'')(779)은 계층 2(도 6의 655)로 전송된 외부 인증서("IDL1 certificate")(781)이다. 외부 인증서(781)는 장치로부터 전송된 데이터의 출처를 확인 및/또는 인증하는 기능을 제공할 수 있다. 일 예로서, 호스트에서 보낸 데이터는 도 9와 관련하여 자세히 설명되는 바와 같이, 인증서를 확인하여 호스트의 ID와 연관될 수 있다. 또한, 외부 공개 키("KL1 public key")(783)는 계층 2로 전송될 수 있다. 그러므로, 호스트의 공개 식별 정보(765), 인증서(781) 및 외부 공개 키(783)는 메모리 장치의 계층 2로 전송될 수 있다.
도 8은 본 개시의 일 실시예에 따른 다수의 파라미터들을 결정하기 위한 예시적인 프로세스의 블록도이다. 도 8은 장치 식별 정보("IDL2 public")(866), 장치 인증서("IDL2 Certificate")(882), 및 장치 공개 키("KL2 public key")(884)를 생성하는 메모리 장치(예를 들어, 도 6의 메모리 장치(606))의 계층 2(855)를 예시한다.
도 7에 설명된 바와 같이, 호스트의 계층 1에서 메모리 장치의 계층 2(855)로 전송된 외부 공개 키("KL1 public key")(883)는 메모리 장치의 공개 식별 정보("IDlk public")(866) 및 개인 식별 정보(868)을 생성하기 위해 메모리 장치의 비대칭 ID 생성기(862)에 의해 사용된다. 약어 "IDlk public"에서 "lk"는 계층 k(이 예에서는 계층 2)를 나타내고, "public"은 ID가 공개적으로 공유됨을 나타낸다. 공개 식별 정보(866)는 계층 2(855)의 오른쪽 및 외부로 연장되는 화살표에 의해 공유되는 것으로 예시된다. 생성된 개인 식별 정보(868)는 암호화기(874)에 입력되는 키로서 사용된다.
도 8에 도시된 바와 같이, 외부 인증서(881) 및 외부 식별 정보(865)는 외부 공개 키(883)와 함께 인증서 확인기(847)에 의해 사용된다. 인증서 확인기(847)는 호스트(예를 들어, 호스트(602))로부터 수신된 외부 인증서(881)를 확인할 수 있으며, 외부 인증서(881)의 확인 여부에 응답하여, 호스트로부터 수신한 데이터를 수락할지 또는 폐기할지 여부를 결정할 수 있다. 외부 인증서(881)를 검증하는 추가 세부사항들이 도 9와 관련하여 설명된다.
메모리 장치의 계층 2(855)는 비대칭 키 생성기(864)를 포함할 수 있다. 적어도 한 예에서, 난수 생성기(RND)(838)는 선택적으로 비대칭 키 생성기(864)에 난수를 입력할 수 있다. 비대칭 키 생성기(864)는 도 6의 메모리 장치(606)와 같은 메모리 장치와 관련된 공개 키("KLk public")(870)(장치 공개 키라고 함) 및 개인 키("KLK private")(872)(장치 개인 키라고 함)를 생성할 수 있다. 장치 공개 키(870)는 암호화기(874)에 대한 입력("데이터"로서)일 수 있다. 암호화기(874)는 장치 개인 식별 정보(868) 및 장치 공개 키(870)의 입력들을 사용하여 결과(K')(876)를 생성할 수 있다. 장치 개인 키(872)와 결과(K')(876)는 추가 암호화기(878)에 입력될 수 있으며, 그 결과 출력(K'')(880)이 생성된다. 출력(K'')(880)은 계층 1(도 6의 653)로 다시 전송된 장치 인증서("IDL2 certificate")(882)이다. 장치 인증서(882)는 장치로부터 전송된 데이터의 출처를 확인 및/또는 인증하는 기능을 제공할 수 있다. 일 예로서, 메모리 장치에서 보낸 데이터는 도 9와 관련하여 자세히 설명되는 바와 같이, 인증서를 확인하여 메모리 장치의 아이덴티티와 연관될 수 있다. 또한, 장치 공개 키("KL2 public key")(884)는 계층 1로 전송될 수 있다. 그러므로, 메모리 장치의 공개 식별 정보(866), 인증서(882) 및 장치 공개 키(884)는 호스트의 계층 1로 전송될 수 있다.
일 예에서, 호스트가 메모리 장치로부터 공개 키를 수신하는 것에 응답하여, 호스트는 장치 공개 키를 사용하여 메모리 장치로 전송될 데이터를 암호화할 수 있다. 반대로, 메모리 장치는 외부 공개 키를 사용하여 호스트로 전송될 데이터를 암호화할 수 있다. 메모리 장치가 장치 공개 기를 사용하여 암호화된 데이터를 수신하는 것에 응답하여, 메모리 장치는 그 자신의 장치 개인 키를 사용하여 데이터를 복호화할 수 있다. 마찬가지로, 호스트 장치가 외부 공개 키를 사용하여 암호화된 데이터를 수신하는 것에 응답하여, 호스트는 그 자신의 외부 개인 키를 사용하여 데이터를 복호화할 수 있다. 장치 개인 키는 메모리 장치 외부의 다른 장치와 공유되지 않고 외부 개인 키는 호스트 외부의 다른 장치와 공유되지 않으므로, 메모리 장치와 호스트로 전송되는 데이터는 안전하게 유지된다.
도 9는 본 개시의 일 실시예에 따른 인증서를 확인하기 위한 예시적인 프로세스의 블록도이다. 도 9의 예시된 예에서, 공개 키(983), 인증서(981) 및 공개 식별 정보(965)는 호스트로부터(예를 들어, 도 6의 호스트(602)의 계층 1(653)로부터) 제공된다. 인증서(981) 및 외부 공개 키(983)의 데이터는 복호화기(985)로의 입력들로 사용될 수 있다. 복호화기(985)는 데이터를 복호화하는데 사용되는 임의의 프로세서, 컴퓨팅 장치 등일 수 있다. 인증서(981) 및 외부 공개 키(983)의 복호화 결과는 공개 식별 정보와 함께 2차 복호화기(987)로의 입력으로서 사용될 수 있으며, 그 결과 출력이 생성된다. 외부 공개 키(983) 및 복호화기(987)의 출력은, 989에 예시된 바와 같이, 인증서가 비교에 의해 확인되었는지 여부를 나타낼 수 있으며, 결과적으로 예 또는 아니오(991)가 출력으로 생성된다. 인증서가 확인되는 것에 응답하여, 확인중인 장치로부터 수신된 데이터가 수락, 복호화 및 처리된다. 인증서가 확인되지 않는 것에 응답하여, 확인중인 장치로부터 수신된 데이터가 폐기, 제거 및/또는 무시된다. 이러한 방식으로, 부정한 데이터를 보내는 부정한 장치들이 검출되고 방지될 수 있다. 일 예로서, 처리될 데이터를 보내는 해커가 식별될 수 있으며 해킹 데이터가 처리되지 않을 수 있다.
도 10은 본 개시의 일 실시예에 따른 서명을 확인하기 위한 예시적인 프로세스의 블록도이다. 장치가 후속 거부를 피하기 위해 확인될 수 있는 데이터를 보내는 경우, 서명이 생성되어 데이터와 함께 전송될 수 있다. 일 예로서, 제1 장치는 제2 장치에 대한 요청을 할 수 있으며, 제2 장치가 요청을 수행하면, 제1 장치는 제1 장치가 이러한 요청을 한 적이 없음을 나타낼 수 있다. 서명을 사용하는 것과 같은 부인 방지 접근 방식은 제1 장치에 의한 부인을 방지하고, 제2 장치가 후속 어려움 없이 요청된 작업을 수행할 수 있도록 보장할 수 있다.
메모리 장치(1006)(도 2의 메모리 장치(206)와 같은)는 데이터(1090)를 (도 2의 호스트(202)와 같은) 호스트로 전송할 수 있다. 메모리 장치(1006)는, 1094에서, 장치 개인 키(1071)를 사용하여 서명(1096)을 생성할 수 있다. 서명(1096)은 호스트(1002)로 전송될 수 있다. 호스트(1002)는, 1098에서, 이전에 수신된 데이터(1092) 및 외부 공개 키(1069)를 사용하여 서명을 검증할 수 있다. 이러한 방식으로, 서명은 개인 키를 사용하여 생성되고 공개 키를 사용하여 확인된다. 이러한 방식으로, 고유 서명을 생성하는 데 사용되는 개인 키는 서명을 보내는 장치에 대해 비공개로 유지될 수 있으며, 수신 장치가 확인을 위해 전송 장치의 공개 키를 사용하여 서명을 복호화할 수 있도록 한다. 이는 데이터의 암복호화/복호화와 대조되는 것으로, 이는 수신 장치의 공개 키를 사용하여 전송 장치에 의해 암호화되고 수신기의 개인 키를 사용하여 수신 장치에 의해 복호화된다. 적어도 하나의 예에서, 장치는 내부 암호화 프로세스(예를 들어, 타원 곡선 디지털 서명(Elliptical Curve Digital signature; ECDSA)) 또는 유사한 프로세스를 사용하여 디지털 서명을 확인할 수 있다.
도 11은 본 개시의 일 실시예에 따른 예시적인 메모리 장치(1106)의 블록도이다. 메모리 장치(1106)는 예를 들어 도 2와 관련하여 앞서 설명된 메모리 장치(206)일 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 다수의 메모리 어레이들(1101-1 내지 1101-7)을 포함할 수 있다. 메모리 어레이들(1101-1 내지 1101-7)은 도 1과 관련하여 앞서 설명된 메모리 어레이(101)와 유사할 수 있다. 또한, 도 11에 예시된 예에서, 메모리 어레이(1101-3)는 보안 어레이이고, 메모리 어레이(1101-6)의 서브셋(1111)은 보안 어레이를 포함하며, 메모리 어레이(1101-7)의 서브셋들(1113 및 1115)은 보안 어레이를 포함한다. 서브셋들(1111, 1113, 1115)은 각각 예를 들어 4 킬로바이트의 데이터를 포함할 수 있다. 그러나, 본 개시의 실시예들은 메모리 어레이 또는 보안 어레이의 특정 수 또는 배열로 제한되지 않는다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 교정(예를 들어, 복구) 블록(1117)을 포함할 수 있다. 교정 블록(1117)은 메모리 장치(1106)의 동작 동안 발생할 수 있는 오류들(예를 들어, 불일치들)의 경우 데이터 소스로서 사용될 수 있다. 교정 블록(1117)은 호스트에 의해 어드레스 가능한 메모리 장치(1106)의 영역 밖에 있을 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 직렬 주변기기 인터페이스(SPI)(1104) 및 컨트롤러(1108)를 포함할 수 있다. 메모리 장치(1106)는 SPI(1104) 및 컨트롤러(1108)를 사용하여 앞서 본원에 설명된 바와 같이(예를 들어, 도 2와 관련하여), 호스트 및 메모리 어레이들(1101-1 내지 1101-7)과 통신할 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 메모리 장치(1106)의 보안을 관리하기 위한 보안 레지스터(1119)를 포함할 수 있다. 예를 들어, 보안 레지스터(1119)는 애플리케이션 컨트롤러를 구성하고 외부에서 통신할 수 있다. 또한, 제2 레지스터(1119)는 인증 명령에 의해 수정 가능할 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 키들(1121)을 포함할 수 있다. 예를 들어, 메모리 장치(1106)는 루트 키, DICE-RIOT 키, 및/또는 다른 외부 세션 키들과 같은 키들을 저장하기 위한 8개의 상이한 슬롯들을 포함할 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 전자적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM)(1123)를 포함할 수 있다. EEPROM(1123)은 데이터의 개별 바이트가 소거되고 프로그래밍될 수 있는 호스트에 사용할 수 있는 보안 비휘발성 영역을 제공할 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 카운터들(예를 들어, 단조 카운터들)(1125)을 포함할 수 있다. 카운터들(1125)은 호스트로부터 수신 및/또는 호스트로 전송된 (예를 들어, 명령 세트 또는 시퀀스에 서명하기 위한) 명령들에 대한 재생 방지 메커니즘(예를 들어, 신선도 생성기)으로서 사용될 수 있다. 예를 들어, 메모리 장치(1106)는 6개의 서로 다른 단조 카운터들을 포함할 수 있으며, 그 중 2개는 인증된 명령들을 위해 메모리 장치(1106)에 의해 사용될 수 있고, 그 중 4개는 호스트에 의해 사용될 수 있다.
도 11에 도시된 바와 같이, 메모리 장치(1106)는 SHA-256 암호화 해시 함수(1127) 및/또는 HMAC-SHA256 암호화 해시 함수(1129)를 포함할 수 있다. SHA-256 및/또는 HMAC-SHA256 암호화 해시 함수들(1127 및 1129)은 메모리 장치(1106)에 의해 사용되어 예를 들어, 도 2와 관련하여 본원에서 앞서 설명된 바와 같은 업데이트(220)의 암호화 해시 및/또는 본원에서 앞서 설명된 바와 같은 메모리 어레이들(1101-1 내지 1101-7)에 저장된 데이터의 유효성을 확인하는데 사용된 골든 해시와 같은, 암호화 해시들을 생성할 수 있다. 또한, 메모리 장치(1106)는 DICE-RIOT(1131)의 L0 및 L1을 지원할 수 있다.
특정 실시예들이 본원에 예시되고 설명되었지만, 당업자들은 동일한 결과들을 달성하도록 계산된 배열이 도시된 특정 실시예들로 대체될 수 있음을 이해할 것이다. 이 개시는 본 개시의 많은 실시예들의 적응 또는 변형을 커버하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것으로 이해해야 한다. 상기 실시예들과 본원에 구체적으로 설명되지 않은 다른 실시예들의 조합은 상기 설명을 검토할 때 통상의 당업자들에게 명백할 것이다. 본 개시의 많은 실시예들의 범위는 상기 구조들 및 방법들이 사용된 다른 어플리케이션들을 포함한다. 따라서, 본 개시의 많은 실시예들의 범위는 첨부된 청구항과, 이와 함께 이러한 청구항들이 부여되는 등가물들의 전체 범위를 참조하여 결정되어야 한다.
전술한 상세한 설명에서, 본 개시를 간소화하기 위해 일부 특징들이 단일 실시예에 함께 그룹화된다. 이 개시 방법은 본 개시의 개시된 실시예들이 각 청구항에 명백히 인용된 것보다 더 많은 특징들을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 실시예의 모든 특징들 이내에 있다. 따라서, 다음의 청구항들은 이에 의해 상세한 설명으로 통합되며, 각 청구항은 그 자체가 별도의 실시예로서 존재한다.

Claims (24)

  1. 장치에 있어서,
    메모리; 및
    상기 메모리와 연관된 회로부로서, 상기 회로부는,
    오버-디-에어 업데이트들을 수신하기 위해 상기 메모리를 모니터링하고;
    수신된 업데이트를 상기 메모리의 보안 어레이에 저장하고;
    상기 수신된 업데이트와 관련된 서명의 해시를 수신하고 상기 수신된 서명의 상기 해시를 상기 메모리의 레지스터에 저장하고;
    상기 수신된 업데이트가 진본이라는 표시를 수신하되, 상기 표시는 예상된 서명의 해시를 포함하고;
    상기 수신된 업데이트가 진본이라는 상기 표시에 응답하여 액션을 취하도록 구성되는, 상기 회로부를 포함하는, 장치.
  2. 청구항 1에 있어서, 상기 회로부는 상기 수신된 업데이트를 실행하기 위해 호스트로부터 상기 메모리에 의해 수신된 신호에 응답하여 상기 예상된 서명의 상기 해시를 생성하도록 구성되는, 장치.
  3. 청구항 1에 있어서, 상기 업데이트는 상기 메모리와 연관된 호스트에 의해 모니터링되는 사물 인터넷(IoT) 장치를 구성하기 위한 인스트럭션들을 포함하는, 장치.
  4. 청구항 1에 있어서, 상기 회로부는,
    신호를 수신하는 것에 응답하여, 상기 예상된 서명의 상기 해시를 생성하고;
    상기 신호를 수신하는 것에 응답하여, 상기 수신된 업데이트의 유효성을 확인하기 위한 동작의 일부로서 상기 예상된 서명의 상기 해시와 상기 수신된 서명의 상기 해시를 비교하도록 더 구성되는, 장치.
  5. 청구항 4에 있어서, 상기 수신된 서명의 상기 해시와 상기 예상된 서명의 상기 해시는 상기 업데이트가 유효하지 않은 것으로 판단될 때 서로 다른, 장치.
  6. 청구항 4에 있어서, 상기 수신된 서명의 상기 해시와 상기 예상된 서명의 상기 해시는 상기 업데이트가 진본일 때 동일한, 장치.
  7. 청구항 1에 있어서, 상기 메모리는 호스트와 연관되고, 상기 호스트는 사물 인터넷(IoT) 장치를 관리하는, 장치.
  8. 청구항 7에 있어서, 상기 수신된 업데이트는 오버-디-에어로 상기 호스트로부터 상기 메모리로 전송되는, 장치.
  9. 청구항 7에 있어서, 상기 메모리는 상기 수신된 업데이트가 상기 메모리에 의해 유효한 것으로 결정될 때 상기 수신된 업데이트를 상기 IoT 장치에 제공하는, 장치.
  10. 청구항 1에 있어서, 상기 액션은 상기 수신된 업데이트를 상기 보안 어레이로부터 상기 수신된 업데이트가 호스트에 의해 모니터링된 장치에 액세스 가능한 상기 메모리의 비-보안 부분으로 복사하는 것인, 장치.
  11. 청구항 1에 있어서, 상기 액션은 상기 수신된 업데이트를 상기 보안 어레이로부터 상기 수신된 업데이트가 호스트에 의해 모니터링된 장치에 액세스 가능한 상기 메모리의 상기 보안 어레이의 다른 부분으로 복사하는 것인, 장치.
  12. 장치에 있어서,
    호스트와 연관된 메모리; 및
    상기 메모리와 연관된 회로부로서, 상기 회로부는,
    상기 호스트와 연관된 업데이트를 수신하고 상기 업데이트를 상기 메모리의 보안 어레이에 저장하고;
    상기 업데이트와 연관된 서명을 수신하되, 상기 수신된 서명은 상기 업데이트가 상기 호스트와 연관됨을 나타내는 신선도 값을 포함하고;
    상기 업데이트가 상기 수신된 서명과 예상된 서명 사이의 비교에 기초하여 유효한지 여부를 결정하되, 상기 수신된 서명과 상기 예상된 서명 사이의 차이는 상기 업데이트가 유효하지 않음을 나타내고;
    상기 수신된 서명과 상기 예상된 서명이 동일하다는 결정에 응답하여 상기 업데이트를 상기 보안 어레이로부터 상기 메모리의 비-보안 부분으로 복사하도록 구성된, 상기 회로부를 포함하는, 장치.
  13. 청구항 12에 있어서, 상기 메모리는 상기 호스트에 의해 관리된 장치에 대한 상기 업데이트의 유효성을 확인하는, 장치.
  14. 청구항 13에 있어서, 상기 장치는 상기 업데이트가 상기 메모리의 상기 보안 어레이로부터 상기 비-보안 부분으로 복사될 때 상기 유효성이 확인된 업데이트에 액세스하는, 장치.
  15. 청구항 12에 있어서, 상기 업데이트는 상기 호스트가 상기 호스트에 의해 관리된 다수의 장치들에 대한 상기 업데이트를 전송하는 것에 응답하여 오버-디-에어로 상기 호스트로부터 수신되는, 장치.
  16. 청구항 12에 있어서, 상기 회로부는 상기 호스트가 상기 업데이트와 연관된 상기 수신된 서명을 생성할 때 상기 신선도 값을 상기 호스트에 제공하도록 더 구성되는, 장치.
  17. 시스템에 있어서,
    호스트;
    상기 호스트와 연관된 메모리 장치; 및
    회로부로서,
    서명을 수신하고 상기 호스트로부터 상기 수신된 서명에 대응하는 업데이트를 수신하되, 상기 업데이트는 상기 호스트에 의해 모니터링된 장치에 대한 것이고;
    상기 호스트에 의해 모니터링된 상기 장치에 대응하는 상기 업데이트를 상기 메모리 장치의 보안 어레이에 저장하고, 상기 수신된 서명을 상기 메모리 장치의 서명 레지스터에 저장하고;
    상기 업데이트를 검증하기 위해 예상된 서명을 생성하되, 상기 업데이트는 상기 예상된 서명과 상기 수신된 서명이 동일할 때 검증되고;
    상기 업데이트가 검증될 때 상기 업데이트를 상기 메모리 장치의 비-보안 부분으로 복사하도록 구성된, 상기 회로부를 포함하는, 시스템.
  18. 청구항 17에 있어서, 상기 회로부는,
    상기 호스트로부터 상기 서명을 판독하라는 명령을 수신하고;
    상기 예상된 서명을 생성하되, 상기 예상된 서명은 상기 수신된 서명과 연관된 상기 업데이트를 저장하고 있는 상기 보안 어레이의 해시인, 상기 예상된 서명을 생성하도록 더 구성되는, 장치.
  19. 청구항 17에 있어서, 상기 호스트에 의해 모니터링된 상기 장치는 사물 인터넷(IoT) 센서인, 시스템.
  20. 방법에 있어서,
    메모리 장치에 의해, 호스트로부터, 서명 및 상기 서명에 대응하는 업데이트를 수신하는 단계로서, 상기 업데이트는 상기 호스트에 의해 모니터링되는 사물 인터넷(IoT) 장치에 대한 것인, 상기 수신하는 단계;
    상기 메모리 장치에 의해, 상기 업데이트를 상기 메모리 장치의 보안 어레이에 저장하고, 상기 수신된 서명을 상기 메모리 장치의 레지스터에 저장하는 단계;
    상기 메모리 장치에 의해, 예상된 서명과 상기 수신된 서명을 비교하는 단계로서, 상기 예상된 서명은 상기 업데이트를 검증하기 위해 생성되는, 상기 비교하는 단계; 및
    상기 메모리 장치에 의해, 상기 업데이트가 검증되는 것에 응답하여 상기 업데이트를 상기 메모리 장치의 상기 보안 어레이로부터 상기 메모리 장치의 비-보안 부분으로 복사하는 단계로서, 상기 업데이트는 상기 업데이트가 상기 메모리 장치의 상기 비-보안 부분으로 복사될 때 상기 IoT 장치에 이용 가능한, 상기 복사하는 단계를 포함하는, 방법.
  21. 청구항 20에 있어서, 상기 호스트로부터 상기 서명을 수신하는 단계는 상기 메모리 장치가, 상기 호스트로부터 수신된 신호에 응답하여, 신선도 값을 상기 호스트로 전송하는 단계를 더 포함하는, 방법.
  22. 청구항 20에 있어서, 상기 예상된 서명과 상기 수신된 서명을 비교하는 단계는 상기 호스트로부터 상기 수신된 업데이트를 실행하라는 명령을 수신하는 것에 응답하여 상기 예상된 서명의 해시를 생성하는 단계를 더 포함하는, 방법.
  23. 청구항 20에 있어서, 상기 업데이트를 상기 메모리 장치의 상기 보안 어레이로부터 상기 메모리 장치의 상기 비-보안 부분으로 복사하는 단계는 상기 업데이트를 실행을 위한 상기 IoT 장치로 전송하는 단계를 더 포함하는, 방법.
  24. 청구항 20에 있어서, 상기 호스트는 상기 IoT 장치의 제조자인, 방법.
KR1020217034336A 2019-03-25 2020-03-12 오버-디-에어 업데이트 유효성 확인 방법 KR20210134053A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/362,790 2019-03-25
US16/362,790 US20200310776A1 (en) 2019-03-25 2019-03-25 Over-the-air update validation
PCT/US2020/022212 WO2020197775A1 (en) 2019-03-25 2020-03-12 Over-the-air update validation

Publications (1)

Publication Number Publication Date
KR20210134053A true KR20210134053A (ko) 2021-11-08

Family

ID=72605719

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217034336A KR20210134053A (ko) 2019-03-25 2020-03-12 오버-디-에어 업데이트 유효성 확인 방법

Country Status (6)

Country Link
US (1) US20200310776A1 (ko)
EP (1) EP3948522A4 (ko)
JP (1) JP2022527904A (ko)
KR (1) KR20210134053A (ko)
CN (1) CN113826071A (ko)
WO (1) WO2020197775A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11240006B2 (en) * 2019-03-25 2022-02-01 Micron Technology, Inc. Secure communication for a key exchange
US11997212B2 (en) * 2019-06-26 2024-05-28 Micron Technology, Inc. Payload validation for a memory system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240201B2 (en) * 2003-08-01 2007-07-03 Hewlett-Packard Development Company, L.P. Method and apparatus to provide secure communication between systems
US10289688B2 (en) * 2010-06-22 2019-05-14 International Business Machines Corporation Metadata access in a dispersed storage network
US8560823B1 (en) * 2007-04-24 2013-10-15 Marvell International Ltd. Trusted modular firmware update using digital certificate
US8463254B2 (en) * 2008-11-25 2013-06-11 Research In Motion Limited System and method for over-the-air software loading in mobile device
US8707019B2 (en) * 2011-07-02 2014-04-22 Intel Corporation Component update using management engine
US8631239B2 (en) * 2012-01-12 2014-01-14 Facebook, Inc. Multiple system images for over-the-air updates
US9183393B2 (en) * 2012-01-12 2015-11-10 Facebook, Inc. Multiple system images for over-the-air updates
WO2016138431A1 (en) * 2015-02-27 2016-09-01 Pcms Holdings, Inc. Systems and methods for secure roll-over of device ownership
US10362114B2 (en) * 2015-12-14 2019-07-23 Afero, Inc. Internet of things (IoT) apparatus and method for coin operated devices
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US20180081666A1 (en) * 2016-03-11 2018-03-22 Oleksii Surdu Reliable and Secure Firmware Update for Internet of Things (IoT) Devices
KR101795457B1 (ko) * 2016-09-27 2017-11-10 시큐리티플랫폼 주식회사 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법

Also Published As

Publication number Publication date
EP3948522A4 (en) 2022-12-21
JP2022527904A (ja) 2022-06-07
WO2020197775A1 (en) 2020-10-01
CN113826071A (zh) 2021-12-21
US20200310776A1 (en) 2020-10-01
EP3948522A1 (en) 2022-02-09

Similar Documents

Publication Publication Date Title
US11321168B2 (en) Error identification in executed code
CN113632084B (zh) 运行时代码执行验证方法、设备及系统
US11960632B2 (en) Data attestation in memory
KR20210128016A (ko) 보안 업데이트를 위한 로컬 원장 블록 체인
US11683155B2 (en) Validating data stored in memory using cryptographic hashes
KR20210134054A (ko) 보안 전자 제어 유닛 업데이트를 위한 로컬 원장 블록 체인
US11669643B2 (en) Block chain based validation of memory commands
KR20210134053A (ko) 오버-디-에어 업데이트 유효성 확인 방법
KR20210132730A (ko) 메모리를 블록 체인의 블록으로 사용하는 방법
US20220138114A1 (en) Using memory as a block in a block chain

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application