KR20220084336A - 보안 저장 디바이스의 탄력적인 소프트웨어 업데이트 - Google Patents

보안 저장 디바이스의 탄력적인 소프트웨어 업데이트 Download PDF

Info

Publication number
KR20220084336A
KR20220084336A KR1020227016152A KR20227016152A KR20220084336A KR 20220084336 A KR20220084336 A KR 20220084336A KR 1020227016152 A KR1020227016152 A KR 1020227016152A KR 20227016152 A KR20227016152 A KR 20227016152A KR 20220084336 A KR20220084336 A KR 20220084336A
Authority
KR
South Korea
Prior art keywords
update
golden
measurement
software
block
Prior art date
Application number
KR1020227016152A
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 KR20220084336A publication Critical patent/KR20220084336A/ko

Links

Images

Classifications

    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

본 명세서에는 소프트웨어 업데이트를 수행하기 위한 방법, 컴퓨터 판독가능 매체, 및 디바이스가 개시되어 있다. 일 실시형태에서, 보안 저장 디바이스의 저장 공간을 복수의 부분으로 초기화하는 단계; 업데이트 프로그램을 상기 부분의 제1 부분에 복사하고 업데이트 데이터를 상기 부분의 제2 부분에 복사하는 단계; 상기 제1 부분에 대한 제1 골든 측정값 및 상기 제2 부분에 대한 제2 골든 측정값을 생성하는 단계; 제1 부분을 측정하는 단계; 상기 제1 부분의 측정값이 상기 제1 부분의 제1 골든 측정값과 일치하지 않는다는 결정에 응답하여 보안 디바이스에 대한 업데이트를 업데이트하거나 롤백하는 단계; 및 상기 제1 부분의 측정값이 상기 제1 부분의 제1 골든 측정값과 일치한다고 결정하면 업데이트 동작을 검증하는 단계를 포함한다.

Description

보안 저장 디바이스의 탄력적인 소프트웨어 업데이트
관련 출원
본 출원은 "보안 저장 디바이스의 탄력적인 소프트웨어 업데이트"라는 제목으로 2019년 11월 25일에 출원된 미국 특허출원 제16/694,583호에 대한 우선권을 주장하며, 상기 특허출원의 전체 개시는 본 명세서에 참조로 통합된다.
저작권 고지
이 특허 문서의 개시 중 일부는 저작권 보호 대상인 자료를 포함하고 있다. 저작권 소유자는 미국 특허상표청 특허 파일 또는 기록에 나타나듯이 특허 문서 및 특허 개시에 대한 팩스 복제에 반대하지 않지만, 그렇지 않으면 어떤 경우에도 모든 저작권을 보유한다.
배경
개시된 실시형태는 보안 저장 디바이스의 소프트웨어 업데이트에 관한 것이다. 구체적으로, 개시된 실시형태는 그러한 보안 저장 디바이스에 대해 잠재적으로 가변적인 환경에서 신뢰할 수 있고 탄력적인 업데이트를 제공하는 것에 관한 것이다.
많은 환경에서, 보안 저장 디바이스는 저장 디바이스 소프트웨어 업데이트 오류(failures)를 피하거나 적절하게 처리해야 하는 조건에서 자주 업데이트된다. 예를 들어, 자율주행 차량의 운영 체제에 대한 소프트웨어 업데이트는 차량이 움직이는 동안 설치될 수 있다. 소프트웨어 업데이트 프로세스에서의 오류는 잠재적으로 차량의 하드웨어 시스템이 응답하지 못하도록 유발할 수 있어 잠재적으로 충돌을 초래할 수 있다.
현재, 보안 저장 디바이스의 많은 업데이트 절차는 저장 디바이스가 특수 모드에 놓일 것을 효과적으로 요구하거나 보안 저장 디바이스가 소프트웨어 업데이트를 실행하기 전에 특정 환경에 있을 것을 요구한다. 이 요구사항은 소프트웨어 업데이트 프로세스의 오류가 디바이스 또는 디바이스에 의존하는 구성요소의 사용자에게 부정적인 영향을 미치지 않도록 보장한다.
이러한 현재 절차는 소프트웨어 업데이트의 빈도를 불필요하게 제한하고 그러한 저장 디바이스를 사용하는 시스템에 대한 사용자 경험에 부정적인 영향을 미친다. 이와 같이, 신뢰할 수 있고 탄력적인 방식으로 언제든지 소프트웨어 업데이트를 지원하는 개선된 보안 저장 디바이스가 당업계에 필요하다. 개시된 실시형태는 그러한 기술적 솔루션을 제공한다.
도 1은 본 개시의 일부 실시형태에 따른 소프트웨어 업데이트를 관리하기 위한 컴퓨터 시스템을 예시하는 블록도이다.
도 2는 본 개시의 일부 실시형태에 따른 소프트웨어 업데이트를 위한 보안 저장 디바이스를 초기화하는 방법을 예시하는 흐름도이다.
도 3은 본 개시의 일부 실시형태에 따른 부트 시간 시퀀스를 실행하기 위한 방법을 예시하는 흐름도이다.
도 4는 본 개시의 일부 실시형태에 따른 런타임 관리 업데이트를 실행하기 위한 방법을 예시하는 흐름도이다.
도 5는 본 개시의 일부 실시형태에 따른 소프트웨어 업데이트를 완료하는 방법을 예시하는 흐름도이다.
도 6은 본 개시의 일부 실시형태에 따른 컴퓨팅 디바이스의 블록도이다.
도 7은 본 개시의 일부 실시형태에 따른 저장 디바이스의 레이아웃을 나타내는 블록도이다.
개시된 실시형태는 소프트웨어 이미지의 실행을 손상시키지 않으면서 보안 저장 디바이스에 저장된 소프트웨어 이미지의 임의의 부분에 대한 수정을 가능하게 하는 기술을 설명한다. 개시된 실시형태는 소프트웨어 업데이트가 전력 사이클에 걸쳐 더 탄력적일 수 있게 함으로써 상기 문제를 해결하고, 따라서 디바이스 소프트웨어의 손상을 방지한다. 그렇게 함으로써, 개시된 실시형태는 소프트웨어 업데이트가 위험이 거의 내지 전혀 없이 컴퓨터 시스템의 중요한 부분에서 수행될 수 있게 하여, 그렇지 않으면 심하게 제한된 조건에서 구현되어야 할 수 있는 소프트웨어 업데이트의 비용 및 전산적 복잡성을 크게 감소시킨다.
기술은 제1 시점에서 시작하고, 이벤트에 의해 중단될 수 있고, 나중에(심지어 재부팅 후에도) 소프트웨어 업데이트를 되돌리거나 재개할 수 있는 소프트웨어 업데이트 시퀀스를 포함한다. 또 다른 양태에서, 개시된 실시형태는 권한있는(privileged) 사용자만이 전술한 소프트웨어 업데이트 시퀀스의 개시 및 구성을 제어하도록 허용할 수 있다. 추가로, 또 다른 양태에서, 개시된 실시형태는 A/B(전체 이미지) 소프트웨어 업데이트 및 차등적(부분적) 소프트웨어 업데이트를 포함하는 여러 유형의 소프트웨어 업데이트 방식을 지원한다.
본 명세서에 설명된 실시형태에서, 소프트웨어 업데이트는 부트 프로그램을 포함할 수 있다. 이러한 실시형태에서, 업데이트 프로세스의 임의의 오작동은 디바이스를 작동불능(즉, 디바이스를 "브릭(brick)")으로 만들고 디바이스를 부팅할 수 없게 만들 수 있다. 오작동의 예는 정전, 통신 링크 중단, 및 악의적인 행위자 개입을 포함한다. 개시된 실시형태는 보안 저장 디바이스의 특징을 레버리징함으로써 이러한 오작동과 관련된 위험을 감소시킨다. 특히, 개시된 실시형태는 비승인(unauthorized) 사용자가 소프트웨어 업데이트 절차를 시작하는 것을 방지하기 위해 권한있는 사용자의 개념을 활용한다. 또한, 개시된 실시형태는 보안 저장 디바이스가 시스템을 이전 상태로 되돌리거나 업데이트 시퀀스를 재개할 수 있게 하는 부트 시퀀스에 걸쳐 상태를 유지할 수 있게 하는 상태-추적 기능을 제공한다.
상술한 바와 같이, 개시된 실시형태는 전체 업데이트 및 부분 업데이트를 지원한다. 전체 이미지 업데이트 방식이 구현되면, 신규 이미지를 설치할 준비가 될 때까지 보안 디바이스의 이전 소프트웨어 이미지를 저장할 수 있으며, 그런 다음 신규 이미지에 활성 이미지로 부트 포인터를 할당할 수 있다. 그러나, 기존 시스템에서는 포인터 변경 작업이 실패하여 디바이스를 브릭화할 수 있는 위험이 여전히 있다. 개시된 실시형태는 본 명세서에 더 상세히 설명된 바와 같이 이 문제를 해결한다.
신규 이미지가 크고 이 이미지에 도입된 변화가 비교적 작다면, 전체 이미지 업데이트는 많은 양의 통신 페이로드와 저장 디바이스의 대용량(large-sized) 버퍼 공간을 불필요하게 소모한다. 차등적 업데이트는 이러한 시나리오에서 통신 및 버퍼 사용의 크기를 감소시킨다. 그러나, 이러한 업데이트의 "분할(piecemeal)" 특성으로 인해 업데이트 절차 중에 추가적인 복잡성이 추가된다. 이러한 복잡성은 또한 개시된 실시형태에 의해 다루어지는 추가적인 오류 지점을 추가한다.
도 1은 본 개시의 일부 실시형태에 따른 소프트웨어 업데이트를 관리하기 위한 컴퓨터 시스템을 예시하는 블록도이다.
예시된 실시형태에서, 시스템(100)은 네트워크(110)를 통해 통신적으로 연결된 원격 컴퓨팅 디바이스(112) 및 타겟 컴퓨팅 디바이스(102)를 포함한다. 단독으로 예시되었지만, 시스템(100)은 다수의 디바이스(112, 102)를 포함할 수 있고 다수의 네트워크를 통해 통신할 수 있다. 예시된 실시형태에서, 디바이스(102, 112)는 도 7에 예시된 것과 같은 컴퓨팅 디바이스를 포함한다. 예를 들어, 원격 컴퓨팅 디바이스(112)는 하나 이상의 서버 컴퓨터를 포함할 수 있고 타겟 컴퓨팅 디바이스(102)는 소비자 컴퓨팅 디바이스를 포함할 수 있다. 일부 실시형태에서, 타겟 컴퓨팅 디바이스(102)는 차량 내 전자 제어 유닛(ECU) 또는 다른 디바이스를 포함할 수 있다. 다른 실시형태에서, 타겟 컴퓨팅 디바이스(102)는 랩탑, 데스크탑, 모바일, 웨어러블, 또는 다른 소비자 컴퓨팅 디바이스를 포함할 수 있다. 다른 실시형태에서, 타겟 컴퓨팅 디바이스(102)는 그 자체가 서버 또는 다른 네트워크 디바이스를 포함할 수 있다. 본 개시는 디바이스(102, 112)의 유형 및 사용에 제한을 두지 않는다.
예시된 실시형태에서, 원격 컴퓨팅 디바이스(112)는 소프트웨어 이미지 저장 디바이스(114) 및 업데이트 매니저(116)를 포함한다. 일 실시형태에서, 소프트웨어 이미지 저장 디바이스(114)는 원격 컴퓨팅 디바이스(112)의 외부에 있다. 일부 실시형태에서, 소프트웨어 이미지 저장 디바이스(114)는 소프트웨어 이미지를 저장하는 파일 시스템을 포함한다. 다른 실시형태에서, 소프트웨어 이미지 저장 디바이스(114)는 소프트웨어 이미지를 저장하는 데이터베이스를 포함한다. 이들 실시형태에서, 데이터베이스는 관계형, NoSQL, 키-값, 또는 파일을 저장하기 위한 임의의 다른 유형의 데이터베이스를 포함할 수 있다. 예시된 실시형태에서, 소프트웨어 이미지는 소프트웨어의 일부를 정의하는 파일을 지칭한다. 일부 실시형태에서, 소프트웨어 이미지는 소프트웨어의 이전 버전을 대체하도록 설계된, 대체 소프트웨어의 조각의 소스 코드 이미지를 지칭한다. 다른 실시형태에서, 소프트웨어 이미지는 부분적 업데이트를 의미한다. 부분적 업데이트는 일정 조각의 소프트웨어에 대한 업데이트를 포함하며, 업데이트는 전체 조작의 소프트웨어에 비해 적은 것을 포함한다. 일부 실시형태에서, 소프트웨어 이미지 저장 디바이스(114)는 전체 및 부분 소프트웨어 이미지를 모두 저장한다. 소프트웨어 이미지는 사람-판독가능 소스 코드 또는 기계-판독가능 바이너리(컴파일된) 코드의 형태를 취할 수 있다. 본 개시는 소프트웨어 이미지의 특정 데이터 형식에 제한을 두지 않는다. 소프트웨어 이미지는 일반적으로 원격 컴퓨팅 디바이스(112)의 오퍼레이터에 의해 관리된다. 소프트웨어에 대한 업데이트가 소프트웨어 이미지의 형태로 생성됨에 따라, 오퍼레이터는 소프트웨어 이미지를 소프트웨어 이미지 저장 디바이스(114)에 업로딩한다. 소프트웨어 이미지를 소프트웨어 이미지 저장 디바이스(114)에 삽입하기 위해 다른 기술, 예컨대 버전 제어 시스템(예를 들어, 깃(git)), 연속 통합 시스템, 또는 기타 시스템이 사용될 수 있다.
원격 컴퓨팅 디바이스(112)는 업데이트 매니저(116)를 추가로 포함한다. 일부 실시형태에서, 업데이트 매니저(116) 및 소프트웨어 이미지 저장 디바이스(114)는 단일 디바이스에서 (예를 들어, 각각, 데이터베이스 및 애플리케이션 서버로) 구현될 수 있다. 다른 실시형태에서, 업데이트 매니저(116)는 독립형 컴퓨팅 디바이스(예를 들어, 서버)를 포함한다. 예시된 바와 같이, 업데이트 매니저(116)는 소프트웨어 이미지 저장 디바이스(114)에 접근한다. 예시된 실시형태에서, 업데이트 매니저(116)는 소프트웨어 이미지 저장 디바이스(114)로부터 소프트웨어 이미지를 검색한다. 일부 실시형태에서, 업데이트 매니저(116)는 타겟 컴퓨팅 디바이스(102)로부터의 업데이트에 대한 요청에 응답하여 소프트웨어 이미지 저장 디바이스(114)로부터 소프트웨어 이미지를 검색한다. 대안적으로, 또는 전술한 것과 연계하여, 업데이트 매니저(116)는 소프트웨어 이미지 저장 디바이스(114)에 저장된 새로운 소프트웨어 이미지를 주기적으로 확인하고 새로운 이미지를 감지하는 것에 응답하여 소프트웨어 이미지를 검색할 수 있다. 대안적으로, 또는 전술한 내용과 연계하여, 업데이트 매니저(116)는 소프트웨어 이미지 저장 디바이스(114)에 가입할 수 있고 소프트웨어 이미지 저장 디바이스(114)는 소프트웨어 이미지 저장 디바이스(114)에 새로 저장될 때 소프트웨어 이미지를 업데이트 매니저(116)에 푸시할 수 있다. 업데이트 매니저가 소프트웨어 이미지를 가져오는 특정 메커니즘은 제한하려는 의도는 아니다.
예시된 실시형태에서, 업데이트 매니저(116)는 특정 이미지에 대한 다양한 동작을 수행한다. 예를 들어, 업데이트 매니저(116)는 소프트웨어 이미지의 무결성을 보장하기 위해 소프트웨어 이미지에 대한 체크섬(checksum) 검증을 수행하도록 구성될 수 있다. 다른 실시형태에서, 업데이트 매니저(116)는 소프트웨어 이미지의 무결성을 가정하고 다른 디바이스에 의해 사용될 소프트웨어 이미지에 대한 체크섬(예를 들어, MD5)을 생성한다. 그러나, 주로, 업데이트 매니저(116)는 원격 컴퓨팅 디바이스(112)에서 타겟 컴퓨팅 디바이스(102)로의 소프트웨어 이미지 전송을 조정하는 역할을 한다. 이 역할은 앞에서 설명하였으며 여기서 반복 설명하지 않는다.
원격 컴퓨팅 디바이스(112)는 하나 이상의 네트워크(110)를 통해 소프트웨어 이미지를 타겟 컴퓨팅 디바이스(102)로 전송한다. 예시된 실시형태에서, 네트워크(110)는 인터넷(네트워크들의 네트워크)을 포함한다. 이 실시형태에서, 네트워크(110)는 광역 네트워크(WAN)를 포함하지만, 임의의 구체적으로 설명된 네트워크 대신에 다른 네트워크 유형이 이용될 수 있다.
타겟 컴퓨팅 디바이스(102)는 네트워크(110)를 통해 소프트웨어 이미지를 수신한다. 구체적으로, 타겟 컴퓨팅 디바이스(102)는 대응하는 업데이트 매니저(108)를 통해 소프트웨어 이미지를 수신한다. 업데이트 매니저(108)는 수신된 소프트웨어 이미지를 처리하고 소프트웨어 이미지(106)를 보안 저장 디바이스(104)에 로딩하도록 구성된다. 예시된 실시형태에서, 업데이트 매니저(108)는 소프트웨어로 또는 전용 하드웨어를 통해 구현될 수 있다. 업데이트 매니저(108)의 구체적인 동작은 도 2 내지 도 6의 설명에 더 상세히 설명되어 있고, 이 설명은 그 전체가 본 명세서에 참조로 통합된다.
예시된 실시형태에서, 보안 저장 디바이스(104)는 저장 디바이스(예를 들어, 플래시 기반, 자기 디스크 기반 등)를 비롯하여 보안 플랫폼 모듈(SPM)을 포함한다. 일부 실시형태에서, 이 보안 플랫폼 모듈은 ISO/IEC 11889 표준을 준수하는 모듈을 포함할 수 있고 신뢰 플랫폼 모듈(Trusted Platform Module)을 포함할 수 있다. 사용된 특정 표준은 제한되지 아니한다. 일반적으로, 보안 저장 디바이스(104)는 소프트웨어 이미지를 저장할 뿐만 아니라 기본 저장 매체의 무결성을 검증하도록 구성된다. SPM은 난수(random number) 생성, 암호화 키 생성 기능, 암호화/복호화 기능, 증명 기능, 및 기타 보안 기능과 같은 특징을 포함할 수 있다. 일부 실시형태에서, SPM은 대안적으로 업데이트 매니저(108)의 일부로서 구현될 수 있다.
예시된 실시형태에서, 보안 저장 디바이스(104)는 다수의 부분으로 분할될 수 있다. 이러한 부분은 비승인된(unauthorized) 사용자의 쓰기를 활성화 및 비활성화하는 다양한 속성으로 구성될 수 있다. 보안 저장 디바이스(104)는 일반적으로 현재 소프트웨어 이미지를 저장하는 "활성 소프트웨어 공간(active software space)"으로 지칭되는 부분을 포함한다. 활성 저장 공간에 추가하여, 보안 저장 디바이스(104)는 숨겨진 저장 부분을 포함할 수 있다.
이제 도 2 내지 도 5를 참조하여, 시스템이 소프트웨어 이미지를 안전하게 업데이트하기 위해 사용하는 프로세스를 설명한다.
도 2는 본 개시의 일부 실시형태에 따른 소프트웨어 업데이트를 위한 보안 저장 디바이스를 초기화하는 방법을 예시하는 흐름도이다. 도 2에 도시된 방법을 실행하기 전에, 디바이스 실행 방법은 제1 소프트웨어 이미지(이미지 A로 지칭됨)를 포함하고 임의의 소프트웨어 업데이트 단계를 실행하는 것을 시작하지 않았다. 예시된 방법은 디바이스 업데이트를 위한 이미지를 준비하고, 그런 다음 디바이스를 재부팅하여 업데이트 절차를 시작하거나 재개한다. 예시된 실시형태에서, 방법(200)은 디바이스의 권한있는 사용자(원격 권한있는 사용자 포함)에 의해 수행된다.
블록(202)에서, 방법(200)은 쓰기-방지 모드에서 동작하도록 보안 저장 디바이스의 제1 부분을 구성한다. 이 제1 부분은 "소프트웨어 업데이트 소스 코드 이미지 공간"이라고도 지징된다. 예시된 실시형태에서, 방법(200)은 저장 공간의 권한있는 사용자에 의해 작동된다. 도 1을 참조하면, 이 권한있는 사용자는 업데이트 매니저(108)를 포함할 수 있다. 명확성을 기하기 위해, 권한있는 "사용자"는 타깃 컴퓨팅 시스템(예를 들어, 102)에 대한 사용자 계정을 지칭하며 인간 사용자를 지칭하는 것은 아니다. 따라서, 권한있는 사용자는 권한있는 사용자 계정으로 실행되는 소프트웨어 애플리케이션을 포함할 수 있다. 예시된 실시형태에서, 이후 제1 부분은 쓰기-방지되도록 설정되고, 권한있는 사용자만이 해당 제1 부분에 쓸 수 있으며, 다른 모든 사용자 계정은 제1 부분에 대한 쓰기가 차단된다.
블록(204)에서, 방법(200)은 블록(202)에서 구성된 제1 부분에 소프트웨어 이미지를 다운로딩한다. 이전에 설명된 바와 같이, 방법(200)은 네트워크를 통해 원격 저장소로부터 소프트웨어 이미지를 검색할 수 있다. 소프트웨어 이미지를 수신한 것에 응답하여, 방법(200)은 블록(202)에서 구성된 쓰기-방지된 제1 부분에 이미지를 복사하거나 전송한다. 예시된 실시형태에서, 제1 부분은 소프트웨어 업데이트를 실행하는 프로그램에 대한 소스 코드를 저장한다. 일반적으로, 이것은 업데이트 절차를 관리하기 위한 1-단계 부트로더(FSBL) 및 시스템 코드를 포함할 수 있다.
일부 실시형태에서, 블록(204)에서, 방법(200)은 제1 부분의 기존 콘텐츠를 동시에 메모리에 저장한다. 즉, 블록(204)을 실행하기 전에, 방법(200)은 새로운 소프트웨어 이미지를 제1 부분에 쓰기 전에 제1 부분의 현재 콘텐츠를 메모리에 복사한다. 일부 실시형태에서, 제1 부분의 현재 콘텐츠는 디바이스에 설치된 소프트웨어의 현재 버전을 설치하기 위한 코드를 포함한다.
블록(206)에서, 방법(200)은 쓰기-방지 모드에서 동작하도록 보안 저장 디바이스의 제2 부분을 구성한다. 이 제1 부분은 "소프트웨어 업데이트 버퍼 공간"이라고도 지칭된다. 쓰기-방지된 부분으로서 보안 저장 디바이스의 제2 부분의 생성은 블록(202)의 설명에서 설명된 바와 같이 수행될 수 있다.
블록(208)에서, 방법(200)은 제2 부분의 데이터를 메모리로 전송하고 업데이트된 소프트웨어 이미지를 제2 부분으로 다운로딩한다. 예시된 실시형태에서, 제2 부분에서 메모리로의 데이터 전송은 블록(204)의 설명에서 이전에 설명된 것과 유사하게 수행된다. 예시된 실시형태에서, 제2 부분에 저장된 데이터는 디바이스의 소프트웨어를 업데이트하는 데 사용되는 실제 업데이트 데이터를 포함한다. 일부 실시형태에서, 전체 업데이트 이미지가 다운로딩되는 반면 다른 실시형태에서는 부분적인 업데이트 데이터만 다운로딩된다.
블록(210)에서, 방법(200)은 블록(202)에서 생성된 제1 부분을 포인팅하도록 보안 저장 디바이스의 복구 블록을 수정한다. 방법(200)은 또한 메모리에 복구 블록을 캐싱한다. 블록(210)을 실행함으로써, 방법은 업데이트 절차가 완료될 때까지 재부팅할 때마다 업데이트되는 것을 보장한다. 이전 복구 블록은 업데이트 절차 완료 시 정상 작동을 복원할 수 있도록 캐싱된다.
예시된 실시형태에서, 복구 블록은, FSBL이 실행되기 전에, 부팅 시 실행되는 보안 저장 디바이스의 제1 블록을 지칭한다. 일반적으로, 복구 블록은 메모리 감지 코드를 비롯하여 낮은 수준의 디스크 유효성 검사 및 복구 코드를 포함한다. 블록(210)에서, 방법(200)은 제1 부분에 쓰여진 소프트웨어 이미지를 로딩하는 FSBL을 대신 포인팅하도록 이 복구 블록을 덮어쓴다. 일반적으로, FSBL은 메모리 세그먼트를 설정하고, 디스크를 재설정하고, 2-단계 부트로더(즉, 제1 부분)를 찾고, 2-단계 부트로더(즉, 제1 부분)를 메모리로 읽고, 2-단계 부트로더(즉, 제1 부분)에 대한 제어를 전송하도록 구성된 적당히 작은 프로그램이다. 예시된 실시형태에서, FSBL은 제1 부분에 로딩되는 업데이트 절차를 로딩하고 시작하는 역할을 하는 FSBL을 포함한다.
블록(212)에서, 방법(200)은 이전 블록에서 다운로딩된 업데이트된 소프트웨어 이미지에 대한 새로운 골든 측정값(golden measurement)을 계산한다. 본 명세서에서 사용된 것과 같은, 골든 측정값은 소프트웨어를 안전하게 식별하는 데 사용할 수 있는 임의의 값을 지칭한다. 일반적으로, 골든 측정값은 하나 이상의 암호화 기능을 사용하여 생성된다. 예를 들어, 소프트웨어의 일정 조각의 해시(hash)를 골든 측정값으로 사용할 수 있다. 다른 실시형태에서, 골든 측정값은 업데이트된 소프트웨어 이미지의 해시 트리를 포함할 수 있다. 이 골든 측정값은 다른 소프트웨어가 예상 형식 및 값과 일치하는지 검증하는 데 사용할 수 있다는 점에서 신뢰의 근간을 이룬다.
예시된 실시형태에서, 골든 측정값은 제2-부분 측정값을 포함한다. 제1 측정값은 제1 부분에 로딩된 1 단계 부트로더의 해시를 포함한다. 제2 골든 측정값은 제2 부분에 저장된 전체 업데이트 이미지의 해시를 포함한다. 일부 실시형태에서, 해시는 또한 디바이스에 저장된 비밀 키를 포함할 수 있으며, 기본 데이터의 해시-기반 메시지 인증 코드(HMAC)를 포함할 수 있다.
예시된 실시형태에서, 방법(200)은 제1 및 제2 부분에 대해 계산된 기존 골든 측정값을 추가로 캐싱한다. 이것은 시스템의 현재 상태에 대한 골든 측정값을 효과적으로 캐싱한다.
블록(214)에서, 방법(200)은 보안 저장 디바이스의 현재 업데이트 상태 정보를 캐싱하고 새로운 업데이트 상태 정보를 초기 상태로 초기화한다. 본 명세서에서 사용된, "상태(state)"는 보안 저장 디바이스의 작동 상태를 나타낸다. 이러한 상태는 주어진 디바이스의 현재 작동 상태를 정의한다. 본 명세서에 사용된 것과 같이, 초기 상태는 보안 저장 디바이스가 초기화가 필요한 상태에 있음을 나타내도록 구성된 하나 이상의 값을 의미한다. 일 실시형태에서, 초기화의 일부는 골든 측정값 및 예시된 실시형태에서 블록(212)에서 계산된 골든 측정값을 사용하여 새로운 신뢰 루트를 설정하는 것을 포함한다.
블록(216)에서, 방법(200)은 쓰기-가능 모드에 있도록 보안 저장 디바이스의 제3 부분을 구성한다. 이 제3 부분은 "활성 저장 공간(active storage space)"이라고도 지칭된다. 전술한 바와 같이, 제3 부분은 업데이트될 현재 동작하는 소프트웨어 이미지(이미지 A로 지칭됨)를 포함한다. 제3 부분을 쓰기-가능으로 설정함으로써, 방법(200)은 임의의 사용자(또는 사용자의 서브세트)가 활성 저장 공간에 데이터를 쓸 수 있게 한다.
따라서, 블록(216)의 실행 후에, 보안 저장 디바이스는 3개의 개별 부분으로 구성된다: 저장 매체의 숨겨진 부분에 저장된 쓰기-방지된 제1 부분 및 제2 부분 및 사용 중인 활성 소프트웨어 이미지를 저장하는 제3 쓰기-가능 부분. 방법(200)은 업데이트된 소프트웨어 이미지를 포함하는 제1 부분의 부팅을 위해 보안 저장 디바이스의 부팅 선호도를 추가로 수정한다. 새 소프트웨어 이미지의 복사본은 제2 부분에 추가로 저장된다.
블록(218)에서, 보안 저장 디바이스 부분을 재구성하고 부트 프로세스를 수정한 후, 방법(200)은 디바이스를 재부팅한다. 예시된 실시형태에서, 재부팅은 소프트웨어 개시 재부팅을 포함한다. 일부 실시형태에서, 방법(200)은 보안 저장 디바이스를 재부팅하도록 강제할 수 있다. 재부팅 후, 방법(200)은 종료되고 도 3에 설명된 방법이 후속할 수 있다.
일부 실시형태에서, 블록(218)에서의 재부팅은 추가적인 보안을 보장한다. 다른 실시형태에서, 방법(200)은 재부팅을 선행할 수 있다.
도 3은 본 개시의 일부 실시형태에 따른 부트 시간 시퀀스를 실행하기 위한 방법을 예시하는 흐름도이다. 방법(300)은 권한없는(non-privileged) 디바이스의 사용자에 의해 실행될 수 있다. 예시된 실시형태에서, 방법(300)은 부팅-시간에 수행되고 해킹하기 훨씬 더 어렵기 때문에 안전한 것으로 간주되는 콘텍스트에서 오프라인으로 수행된다. 대조적으로, 방법(400, 500)은 런타임에 실행되며 악의적인 행위자의 간섭을 받을 수 있다. 따라서, 방법(400, 500)은 알려진 키에 대한 접근 권한있는 사용자에 의해 수행된다.
블록(302)에서, 방법(300)은 제1 부분(블록(202)의 설명에서 소프트웨어 업데이트 소스 코드 이미지 공간으로도 지칭됨)에 대한 제1 측정값을 계산하기 위해 제1 부분의 콘텐츠를 측정한다. 이는 상술한 바와 같이, 해시 함수 또는 이와 유사한 함수와 같은 암호화 함수를 사용하여 수행될 수 있다. 그런 다음, 방법(300)은 이 제1 측정값을 도 2의 블록(212)에서 시스템에 의해 생성된 제1 부분에 대한 골든 측정값과 비교한다. 본질적으로, 방법(300)은 1-단계 부트로더가 유효한지를 결정한다.
블록(304)에서, 방법(300)은 블록(302)에서 생성된 제1 측정치가 (블록(212)에서 생성된) 제1 부분의 골든 측정값과 일치하는지를 결정한다.
블록(306)에서, 방법(300)이 제1 측정값이 제1 골든 측정값과 일치한다고 결정하면(즉, 부트로더가 유효함), 방법은 제2 골든 측정값을 계산하고 부트 시퀀스를 완료한다.
블록(308)에서, 방법(300)은 부트 시퀀스를 완료한 후에 런타임 업데이트 검증 절차를 실행한다. 블록(308)의 세부사항은, 본 명세서에 통합된 도 4에 제공되어 있으며, 반복 설명하지 않는다.
일반적으로, 첫 번째 재부팅 동안, 제1 골든 측정값은 FSBL과 일치하지 않을 것이고 방법은 블록(310)을 처리할 것이다.
블록(310)에서, 방법(300)은 복구 블록을 부트 코드 위치에 복사한다. 전술한 바와 같이, 복구 블록은 제1 부분에 저장된 부트 코드 위치에 대한 포인터를 포함한다.
블록(312)에서, 방법(300)은 FSBL을 실행한다. 예시된 실시형태에서, FSBL은 시스템을 초기화하고 제1 부분 내에 저장된 소프트웨어 업데이트 이미지에 대한 포인트를 되돌린다.
블록(314)에서, 방법(300)은 제1 부분 내에 저장된 소프트웨어 업데이트 이미지를 로딩하고 실행한다. 일 실시형태에서, FSBL은 제1 부분에 로딩된 업데이트 소프트웨어에 제어를 넘긴 다음 본 명세서에 설명된 처리를 제어한다.
블록(316)에서, 방법(300)은 업데이트 소프트웨어를 실행할 때 디바이스의 상태를 로딩한다. 일 실시형태에서, 디바이스의 상태는 디바이스의 하나 이상의 비휘발성 레지스터에 저장된 데이터를 지칭한다. 본 개시는 특정 유형의 데이터에 제한되지 않는다. 일 실시형태에서, 상태는 모든 전원(power) 사이클에서 자동으로 증분되는 업데이트 카운터를 포함할 수 있다. 대안적으로, 또는 전술한 내용과 함께, 상태 정보는 여기에 설명된 다양한 상태 순열을 저장하는 레지스터 데이터를 포함할 수 있다. 일부 실시형태에서, 상태를 저장하는 레지스터는 플랫폼 구성 레지스터를 포함할 수 있다.
블록(318)에서, 방법(300)은 디바이스의 상태를 분석한다. 설명한 것과 같이, 블록(316)에서 로딩된 상태 레지스터는 재부팅 이전에 실행된 임의의 업데이트 또는 롤백 작업의 현재 상태를 표시한다.
방법(300)이 마지막 전원 사이클 동안 되돌리기 또는 업데이트 동작이 완료되었다고 결정하면, 방법은 블록(306)에서 부트 시퀀스를 계속하고 궁극적으로 블록(308)에서 런타임 업데이트 검증 절차를 실행한다. 이 블록에서, 방법(300)이 성공적으로 디바이스를 업데이트(또는 롤백)했으며 작업이 정상적으로 재개될 수 있다. 블록(318)에서 사용된 바와 같이, 업데이트 동작은 블록(322, 326, 332)에서 설명된 업데이트 동작의 쓰기 부분을 지칭한다.
블록(320)에서, 방법(300)은 상태 정보가 롤백 동작이 진행 중임을 표시한다고 결정하면 상태 정보를 검증한다. 예시된 실시형태에서, 롤백 동작은 시스템이 이미지 A로 되돌려져야 함을 나타낸다. 일부 실시형태에서, 방법(300)은 업데이트의 현재 상태를 측정하고 그 측정값을 레지스터 파일 내에 저장된 값과 비교한다. 일치를 감지하면, 방법(300)이 진행될 수 있다. 방법(300)이 불일치를 감지하면, 방법(300)은 디바이스를 종료하거나 선제적으로 복원할 수 있다.
블록(322)에서, 상태 정보를 검증한 후, 방법(300)은 이전 소프트웨어 이미지로 롤백하기 시작한다. 예시된 실시형태에서, 방법(300)은 제2 부분 내에 저장된 데이터를 사용하여 활성 저장 공간에 대한 연속적인 쓰기 동작을 수행함으로써 이 블록을 실행한다. 동시에, 방법(300)은 또한 각각의 연속적인 쓰기 후에 소프트웨어 이미지의 예상된 측정값으로 상태 정보를 업데이트하여, 전원 손실 또는 다른 중단의 경우에도 롤백이 진행될 수 있음을 보장한다.
블록(324)에서, 방법(300)은 디바이스를 재부팅하고 프로세스는 방법(300)을 재시작할 수 있다. 이 시나리오에서, 방법(300)이 업데이트를 완전히 롤백하면, 블록(318)의 결정이 블록(306)으로 분기될 것이다. 대안적으로, 방법(300)이 롤백 도중 중단되면, 방법(300)은 롤백을 계속하기 위해 궁극적으로 블록(320)으로 되돌아갈 것이다.
대안적으로, 방법(300)은 상태 정보가 업데이트가 시작되어야 함을 표시한다고 결정할 수 있다. 이 시나리오에서, 블록(326)에서, 방법(300)은 업데이트 이미지(이미지 B)에 대한 업데이트를 시작하고 상태 정보를 점증적으로 업데이트한다. 블록(322)에 설명된 동작과 유사하게, 방법(300)은 제2 부분에 저장된 업데이트 이미지에 접근하고 소프트웨어를 업데이트하기 위해 제3 부분에 데이터를 연속적으로 쓴다. 동시에, 방법(300)은 또한 각각의 연속적인 쓰기 후에 업데이트된 소프트웨어 이미지의 예상된 측정값으로 상태 정보를 업데이트하고, 그에 따라 전력 손실 또는 기타 중단의 경우에도 업데이트가 진행될 수 있음을 보장한다.
블록(328)에서, 방법(300)은 모든 쓰기가 수행된 후 디바이스를 재부팅하고 방법(300)이 재시작된다. 블록(324)과 관련하여 설명된 것과 유사하다. 업데이트가 완료되면, 방법(300)은 궁극적으로 블록(306)으로 되돌아 갈 것이다. 그러나, 업데이트가 중단되면, 방법(300)은 궁극적으로 블록(330)으로 분기하여 업데이트를 재개할 것이다.
블록(330)에서, 방법(300)은 상태 정보가 업데이트 동작이 진행 중임을 표시한다고 결정할 때 상태 정보를 검증한다. 일부 실시형태에서, 방법(300)은 업데이트의 현재 상태를 측정하고 그 측정값을 레지스터 파일 내에 저장된 값과 비교한다. 일치를 감지하면, 방법(300)이 진행될 수 있다. 방법(300)이 불일치를 감지하면, 방법(300)은 디바이스를 종료하거나 선제적으로 복원할 수 있다.
블록(332)에서, 방법(300)은 업데이트 이미지(이미지 B)에 대한 업데이트를 계속하고 상태 정보를 점증적으로 업데이트한다. 블록(322 및 326)에 설명된 동작과 유사하게, 방법(300)은 제2 부분에 저장된 업데이트 이미지에 접근하고 소프트웨어를 업데이트하기 위해, 제3 부분에 데이터를 연속적으로 쓴다. 동시에, 방법(300)은 또한 각각의 연속적인 쓰기 후에 업데이트된 소프트웨어 이미지의 예상된 측정값으로 상태 정보를 업데이트하고, 그에 따라 전력 손실 또는 기타 중단의 경우에도 업데이트가 진행될 수 있음을 보장한다.
블록(334)에서, 방법(300)은 모든 쓰기가 수행된 후 디바이스를 재부팅하고 방법(300)이 재시작된다. 이 프로세스는 재개된 업데이트가 전력 손실로 인해 중지되지 않도록 보장하기 위해 블록(328)에서 수행된 재부팅에서 설명된 것과 유사하게 수행된다.
도 4는 본 개시의 일부 실시형태에 따른 런타임 관리 업데이트를 실행하기 위한 방법을 예시하는 흐름도이다. 예시된 실시형태에서, 방법(400)은 디바이스의 권한있는 사용자에 의해 수행될 수 있다.
블록(402)에서, 디바이스 부팅이 완료되고, 방법은 권한있는 사용자에게 연결하고, 업데이트 관리 작업을 요청한다. 일부 실시형태에서, 권한있는 사용자는 원격 사용자를 포함한다.
블록(404)에서, 권한있는 사용자는 상태 정보 및 디바이스 레지스터로부터의 제2 골든 측정값을 원격 서버로 업로딩한다. 일부 실시형태에서, 이 정보는 부트 시퀀스 동안 디바이스에 의해 생성된 정보를 포함하며, 골든 측정값과 레지스터의 콘텐츠를 포함한다. 일부 실시형태에서, 정보는 업데이트가 필요한 경우에만 원격 서버로 전송된다. 일부 실시형태에서, 정보는 방법(400)이 업데이트 이미지가 완전하게 쓰여졌지만 방법(400)의 나머지 부분이 실행되지 않은 것으로 결정한 경우에만 전송된다. 이것은 쓰기 후, 그러나 방법(400)의 업데이트가 완료되기 전에 재부팅을 가능하게 할 수 있다.
블록(406)에서, 방법(400)은 (블록(206)에서 설명된 바와 같이 "소프트웨어 업데이트 버퍼 공간"으로 대안적으로 지칭되는, 제2 부분의) 부트 동안 생성된 제2 측정값을 제2 골든 측정값과 비교한다. 다시 말해서, 블록(310)에서, 방법은 제2 부분의 제2 측정치를 업데이트 이미지와 연관된 제2 골든 측정값 및 이전 이미지와 연관된 제2 골든 측정값과 비교한다. 업데이트 이미지와 이전 이미지는, 각각, 이미지 B와 A로 지칭된다.
블록(408)에서, 방법(400)은 업데이트 이미지(제2 부분에 저장된 이미지)의 골든 측정값 및 이전 이미지(제2 부분으로부터 캐싱된 이미지)의 골든 측정값과 제2 측정값을 비교한다. 블록(408)에서, 방법(400)은 계산이 이미지 A, 이미지 B, 또는 다른 값과 일치하는지를 결정한다. 현재 제2 부분에 대한 골든 측정값이 골든 측정값 B라고 지칭되는 반면 캐시된 제2 부분에 대한 골든 측정값을 골든 측정값 A라고 지칭된다. 위에서 설명한 것처럼 제2 측정값은 업데이트 이미지 자체의 해시를 지칭한다. 따라서, 방법(400)은 기존의 알려진 골든 측정값에 적용할 업데이트 데이터의 값을 비교한다. 예시된 실시형태에서, 제2 측정값은 부팅 시간에 수행되는 제2 부분의 측정값을 지칭한다.
블록(410)에서, 방법은 제2 측정값이 이미지 B(업데이트 이미지)에 대한 골든 측정값과 일치한다고 결정하면 업데이트 절차를 완료한다. 이 시나리오에서는, 업데이트가 성공적으로 완료되었으며 예상되는 업데이트 이미지 콘텐츠가 활성 저장 공간에 있다. 따라서, 방법(400)은 도 5에 더 상세히 설명되어 있는 업데이트 절차를 안전하게 완료할 수 있다.
블록(412)에서, 방법(400)은 제2 측정값이 골든 측정값 A(이전 이미지 A와 연관됨)와 일치함을 결정한다. 이 시나리오에서, 방법(400)은 현재 업데이트를 취소한 다음 소프트웨어가 업데이트를 시작하기 이전의 상태로 복원되었는지 검증함으로써 소프트웨어 업데이트를 완료한다. 이 시나리오에서, 방법(400)은 (예를 들어, 블록(320, 322, 324)에서 수행된 롤백 동작을 통해) 이전 이미지로 복귀된다. 따라서, 방법(400)은 업데이트 절차를 취소하고(즉, 상태 레지스터를 업데이트함으로써) 도 5의 완전한 절차를 종료하도록 진행한다.
제2 측정값이 제2 골든 측정값 A 또는 B와 일치하지 않으면, 방법(400)은 블록(414)으로 진행한다. 블록(414)에서, 방법(400)은 활성 저장 공간이 잠재적으로 손상된 데이터를 포함한다고 결정한다. 그러나, 방법(400)은 먼저 업데이트 재시도 횟수가 충족되었는지 여부를 결정한다. 전술한 바와 같이, 카운터는 오류를 시그널링하기 전에 업데이트 시도의 횟수를 제어하기 위해 사용될 수 있다. 특히, 도 3에 설명된 방법은 궁극적으로 이미지 A 또는 이미지 B 중 어느 하나가 활성 저장 공간에 쓰여지도록 초래하며, 악의적인 사용자는 업데이트 절차를 가로채고 블록(306) 후에 활성 저장 공간에 다른 이미지를 쓸 수 있다. 따라서, 블록(414)의 결정은 이러한 하이재킹을 방지한다.
블록(416)에서, 방법(400)은 업데이트 시퀀스의 재시작을 강제하기 위해 시스템 상태를 재초기화한다. 본 명세서에 설명된 바와 같이, 보안 디바이스는 재부팅 사이에 디바이스의 상태를 지속적으로 저장하는 하나 이상의 레지스터를 포함한다. 블록(416)에서, 방법(400)은 디바이스가 도 5의 블록(502)에서 초기화된 상태로 재시작해야 함을 나타내기 위해 이 시스템 상태를 수정한다. 이후, 방법(400)은 디바이스를 재부팅하고(418), 도 5에 설명된 재부팅 루틴(블록 420)을 수행하도록 진행한다.
블록(422)에서, 방법(400)은 손상된 상태를 검출하고 그에 따라 시스템 상태를 변경한다. 일 실시형태에서, 방법(400)은 롤백 동작이 발생해야 함을 나타내기 위해 시스템 레지스터를 수정한다. 롤백 동작에 대한 세부 사항은 도 5에 제공되어 있다. 다음으로, 방법(400)은 시스템 복원(424)을 강제한다. 이후, 방법(400)은 시스템 복원을 실행하기 위해 보안 디바이스의 재부팅(블록 426)을 강제한다. 재부팅 후, 방법(400)은 도 5에 설명된 재부팅 루틴(블록 420)을 수행한다.
도 5는 본 개시의 일부 실시형태에 따른 소프트웨어 업데이트를 완료하는 방법을 예시하는 흐름도이다. 예시된 실시형태에서, 방법(500)은 디바이스의 권한있는 사용자에 의해 수행될 수 있다.
블록(502)에서, 방법(500)은 보안 저장 디바이스의 활성 저장 공간의 추가 측정값을 요청한다. 전술한 바와 같이, 이 측정값은 활성 저장 공간의 암호화 측정값을 포함할 수 있다.
블록(504)에서, 방법(500)은 상기 추가 측정값을 이전 소프트웨어 이미지 및 업데이트된 소프트웨어 이미지에 대한 골든 측정값 모두와 비교한다. 추가 측정값이 원하는 골든 측정값과 일치하지 않는 경우(업데이트 또는 되돌리기에 대한 결정에 기초하여), 방법(500)은 블록(506)으로 진행한다.
블록(506)에서, 방법(500)은 알람을 발생시킨다. 알람에 대한 특정 세부 사항은 제한하려는 것이 아니며 손상된 상태에 대한 응답으로 알람을 발생시키는 기술을 사용할 수 있다. 예를 들어, 방법(500)은 활성 저장 공간이 유효한 상태가 아님을 제3자에게 통지할 수 있다. 대안적으로, 또는 전술한 것과 함께, 방법(500)은 이에 관해 사용자에게 알람을 제공할 수 있다.
블록(508)에서, 방법(500)은 디바이스를 청소할 수 있거나, 또는 일부 실시형태에서 실패할 수 있다. 일 실시형태에서, 방법(500)은 디바이스의 동작을 방지하기 위해 보안 저장 디바이스의 관련 부분을 포맷함으로써 디바이스를 청소할 수 있다. 다른 실시형태에서, 방법(500)은 단순히 디바이스의 전원을 끌 수 있거나 그렇지 않으면 보통 실패할 수 있다. 블록(508)을 실행한 후, 방법(500)이 종료된다.
블록(510)에서, 방법(500)은 추가 측정값이 원하는 골든 측정값과 일치한다는 결정에 응답하여 활성 저장 공간을 잠근다. 일 실시형태에서, 활성 저장 공간을 잠그는 것은 알려진 암호화 키를 사용하여 수행된다.
블록(512)에서, 활성 저장 공간을 잠근 후, 방법(500)은 보안 저장 디바이스의 활성 저장 공간의 제2 추가 측정값을 요청한다. 전술한 바와 같이, 이 제2 측정값은 활성 저장 공간의 암호화 측정값을 포함할 수 있다. 그런 다음, 방법(500)은 이전 소프트웨어 이미지 및 업데이트된 소프트웨어 이미지에 대한 골든 측정값 모두와 제2 추가 측정값을 비교한다. 추가 측정값이 원하는 골든 측정값과 일치하지 않으면(업데이트 또는 되돌리기에 대한 결정에 기초하여), 방법(500)은 블록(506 및 508)으로 진행한다. 블록(506 및 508)은 앞서 설명하였으며 이에 대한 설명은 여기에 반복하지 않는다.
블록(514 및 516)에서, 방법(500)은 메모리에 이전에 저장된 데이터를 원래 위치로 복원한다. 예시된 실시형태에서, 이러한 이전에 저장된 데이터는 복구 블록 이미지, 레지스터 콘텐츠, 보안 저장 디바이스의 제1 및 제2 부분의 콘텐츠를 포함한다. 일 실시형태에서, 보안 저장 디바이스의 제1 및 제2 부분의 이전 콘텐츠를 복원할 때, 방법(500)은 제1 및 제2 부분이 쓰기-가능하도록 구성한다.
블록(518)에서, 방법(500)은 완료된 업데이트를 시그널링한다. 일부 실시형태들에서, 완료된 업데이트를 시그널링하는 것은 새로운 소프트웨어 이미지를 사용하여 디바이스를 부팅하는 것을 포함할 수 있다. 대안적으로, 또는 전술한 것과 관련하여, 방법(500)은 디바이스가 업데이트되고 동작할 준비가 되었음을 나타내는 외부 신호를 생성할 수 있다.
도 6은 본 개시의 일부 실시형태에 따른 컴퓨팅 디바이스의 블록도이다.
예시된 실시형태에서, 컴퓨팅 디바이스(600)는 인터페이스(606)를 통해 버스(608)에 통신 가능하게 결합된다. 버스(608)는 이더넷, 컨트롤러 영역 네트워크(CAN), FlexRay, 미디어 지향 시스템 전송(MOST) 버스 또는 유사한 유형의 버스를 포함할 수 있다. 대응하여, 인터페이스(606)는 사용된 특정 유형의 버스에 접근하기 위한 유사한 인터페이스를 포함할 수 있다.
컴퓨팅 디바이스(600)는 마이크로컨트롤러(602), R/F 서브시스템(610), 애플리케이션-특화 컴포넌트(ASC)(612) 및 메모리 시스템(604)을 추가로 포함한다. 예시된 실시형태에서, 마이크로컨트롤러(602)는 컴퓨팅 디바이스(600)의 동작을 제어하도록 구성된 프로세서 또는 더 작은 마이크로컨트롤러를 포함할 수 있다. 일부 실시형태에서, 마이크로컨트롤러(602)는 메모리 시스템(604)에 저장된 프로그램 명령(instructions)에 접근하고, 이러한 명령에 따라 ASC(612)를 구동한다. ASC(612)의 예는 주변 디바이스 및 기타 용도별(예를 들어, 자동차) 디바이스를 포함한다. 컴퓨팅 디바이스(600)에 의해 사용되는 ASC의 유형은 제한적이지 않으며, 임의의 유형의 ASC가 컴퓨팅 디바이스(600)에 의해 사용될 수 있다.
컴퓨팅 디바이스(600)는 R/F 시스템(610)을 추가로 포함한다. 예시된 실시형태에서, R/F 시스템(610)은 무선 네트워크와 통신하기 위한 하나 이상의 라디오 또는 트랜시버를 포함할 수 있다. R/F 시스템(610)은 블루투스, Wi-Fi 또는 셀룰러 라디오 또는 위성 트랜시버를 포함할 수 있다. 일부 실시형태에서, R/F 시스템(610)은 라디오 또는 트랜시버의 조합을 포함한다. 일부 실시형태에서, 컴퓨팅 디바이스(600)는 R/F 시스템(610)을 포함하지 않을 수 있고 대신에 앞서 설명된 바와 같이 차량-전체의(vehicle-wide) R/F 시스템을 사용할 수 있다.
마이크로컨트롤러(602)는 메모리 시스템(604)을 관리한다. 예시된 실시형태에서, 메모리 시스템(604)은 이전에 설명된 보안 저장 디바이스를 포함할 수 있다. 예시된 실시형태에서, 메모리 시스템(604)은 SRAM(604a), EEPROM(604b), 및 플래시 스토리지(604c)를 포함한다. 예시된 실시형태에서, SRAM(604a)은 마이크로컨트롤러(602)를 위한 L1 또는 L2 캐시로서 활용될 수 있다. 유사하게, EEPROM(604b)은 컴퓨팅 디바이스(600)를 위한 펌웨어 저장소로 사용될 수 있다. SRAM(604a) 및 EERPOM(604b)의 특정 세부사항(또는 존재)은 제한되지 아니한다.
메모리 시스템(604)은 플래시 저장 디바이스(604c)를 추가로 포함한다. 예시된 실시형태에서, 플래시 저장 디바이스(604c)는 PCB에 납땜되고 도 6에 도시된 다른 구성요소에 (PCB를 통해) 연결된 NAND 플래시 저장 디바이스를 포함한다. 플래시 저장 디바이스(604c)는 이전에 설명된 바와 같이 컴퓨팅 디바이스(600)에 의해 사용되는 데이터 뿐만 아니라 운영 코드를 저장하는 데 활용된다.
도 7은 본 개시의 일부 실시형태에 따른 저장 디바이스의 레이아웃을 나타내는 블록도이다.
도시된 저장 시스템(700)에는 2개의 논리적 저장 공간이 존재한다: 디바이스 저장 공간(702) 및 권한있는 사용자(PU) 저장 공간(710). 일반적으로, 공간(702)은 기본적으로 권한없는 사용자가 접근할 수 있는 반면, 공간(710)은 권한있는 사용자만 접근할 수 있다.
디바이스 저장 공간(702)은 활성 소프트웨어 이미지(이미지 A, 704)를 포함한다. 이 이미지(704)는 디바이스에서 현재 실행 중인 소프트웨어를 포함할 수 있다. 추가적으로, 디바이스 저장 공간(702)은 암호화 키(706a), 레지스터 세트(706b), 및 복구 블록(706c)을 포함하는 보안 저장 공간(706)을 포함한다. 일 실시형태에서, 보안 저장 공간(706)은 사용자(예를 들어, 권한있는 사용자)만이 확립된 키로 보안 저장 공간(706)에 접근할 수 있도록 암호적으로 보호된다. 마지막으로, 디바이스 저장 공간(702)은 제1 부분(708a), 제2 부분(708b), 및 제3 부분(708c)을 포함하는 범용 공간(708)을 포함한다. 일반적으로, 범용 공간(708)은 권한있는 사용자 및 권한없는 사용자가 접근할 수 있으며 필요에 따라 쓰기-방지되도록 구성될 수 있다. 쓰기-방지된 경우, 권한있는 사용자만 쓰기-방지된 부분의 내용을 수정할 수 있다.
PU 저장 공간(710)은 권한있는 사용자만 접근할 수 있는 보안 저장 영역을 포함한다. PU 저장 공간(710)은 원본 이미지 A(712)뿐만 아니라 업데이트 이미지 B(714)의 복사본을 포함할 수 있다. 추가로, PU 저장 공간(710)은 보안 저장 공간(706)뿐만 아니라 임의의 쓰기-방지된 부분(708a, 708b)에 접근하는 데 사용되는 암호화 키(716)를 포함한다. 추가적으로, PU 저장 공간(710)은 백업 공간(718)을 포함한다. 이 백업 공간(718)은 전술한 도면에서 설명된 바와 같이 제1 부분(718a), 제2 부분(718b), 레지스터(718c), 및 복구 블록(718d)의 복사본을 백업하는 데 사용될 수 있는 저장 부분을 포함한다.
본 개시는 본 명세서의 일부를 형성하고, 예시로서, 특정 예시적인 실시형태를 도시하는 첨부 도면을 참조하여 이하에서 보다 완전하게 설명되었다. 그러나, 발명 주제는 다양한 다른 형태로 구체화될 수 있으며, 따라서, 커버되거나 청구된 발명 주제는 본 명세서에 설명된 임의의 예시적인 실시형예에 제한되지 않는 것으로 해석되도록 의도되며; 예시적인 실시형태는 단지 예시를 위해 제공된다. 마찬가지로, 청구되거나 커버된 발명 주제에 대해 합리적으로 넓은 범위가 의도된다. 무엇보다도, 예를 들어, 발명 주제는 방법, 디바이스, 구성요소, 또는 시스템으로 구체화될 수 있다. 따라서, 실시형태는, 예를 들어, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합(소프트웨어 자체는 제외)의 형태를 취할 수 있다. 따라서, 이하의 상세한 설명은 제한적인 의미로 받아들여지도록 의도되지 아니한다.
본 명세서 및 청구범위 전체에 걸쳐, 용어는 명시적으로 언급된 의미를 넘어 문맥에서 제시되거나 내포된 미묘한 의미를 가질 수 있다. 마찬가지로, 본 명세서에서 사용된 "일 실시형예에서"라는 문구는 반드시 동일한 실시형예를 지칭하는 것은 아니며, 본 명세서에서 사용되는 "또 다른 실시형태에서"라는 문구가 반드시 다른 실시형예를 지칭하는 것은 아니다. 예를 들어, 청구된 발명 주제는 전체 또는 부분적으로 예시적인 실시형태의 조합을 포함하도록 의도된다.
일반적으로, 용어는 문맥에서의 용법으로부터 적어도 부분적으로 이해될 수 있다. 예를 들어, 위에서 사용된, "및", "또는", 또는 "및/또는"과 같은 용어는 이러한 용어가 사용되는 문맥에 적어도 부분적으로 의존할 수 있는 다양한 의미를 포함할 수 있다. 일반적으로, "또는"이 A, B 또는 C와 같은 목록을 연결하는 데 사용되면, 본 명세서에서 포괄적인 의미로 사용되는 A, B, 및 C를 비롯하여, 본 명세서에서 배타적인 의미로 사용되는 A, B 또는 C를 의미하도록 의도된다. 또한, 본 명세서에 사용된 용어 "하나 이상"은, 문맥에 따라 적어도 부분적으로, 단수 의미로 임의의 특징, 구조 또는 특성을 설명하는 데 사용될 수 있거나 복수의 의미로 특징, 구조 또는 특성의 조합을 설명하는 데 사용될 수 있다. 유사하게, "a", "an" 또는 "the"와 같은 용어는 문맥에 따라 적어도 부분적으로는 단수 용법을 전달하거나 복수 용법을 전달하는 것으로 이해될 수 있다. 또한, "~에 기초한"이라는 용어는 배타적 요소 세트를 전달하는 것으로 반드시 의도되지 않은 것으로 이해될 수 있으며, 대신에, 다시, 적어도 부분적으로 문맥에 따라, 반드시 명시적으로 설명되지 않은 추가 요소의 존재를 허용할 수 있다.
본 개시는 블록도 및 방법 및 디바이스의 동작 예시를 참조하여 설명되었다. 블록도 또는 작동 예시의 각 블록, 및 블록도 또는 작동 예시의 블록 조합은 아날로그 또는 디지털 하드웨어 및 컴퓨터 프로그램 명령에 의해 구현될 수 있음을 이해해야 한다. 이러한 컴퓨터 프로그램 명령은 범용 프로세서, 특수-목적 컴퓨터, ASIC, 또는 기타 프로그램 가능한 데이터 처리 디바이스에 제공될 수 있으며, 그래서 컴퓨터 또는 기타 프로그램 가능한 데이터 처리 디바이스의 프로세서를 통해 실행되는 명령은 블록도 또는 작동 블록 또는 블록들에 지정된 기능/작용(acts)을 구현한다. 일부 대안적인 구현예에서, 블록에 언급된 기능/작용은 작동 예시에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 표시된 2개의 블록은 실제로 실질적으로 동시에 실행될 수 있거나 관련된 기능/작용에 따라 블록이 때때로 역순으로 실행될 수 있다.
본 개시의 목적을 위해, 컴퓨터-판독가능 매체(또는 컴퓨터-판독가능 저장 매체/매체)는 컴퓨터 데이터를 저장하고, 이 데이터는, 기계가 읽을 수 있는 형식으로, 컴퓨터에 의해 실행가능한 컴퓨터 프로그램 코드(또는 컴퓨터-실행가능 명령)를 포함할 수 있다. 제한이 아닌 예시로서, 컴퓨터-판독가능 매체는 데이터의 유형적(tangible) 또는 고정된 저장을 위한, 컴퓨터-판독가능 저장 매체, 또는 코드-포함 신호의 일시적인 해석을 위한 통신 매체를 포함할 수 있다. 본 명세서에서 사용되는, 컴퓨터-판독가능 저장 매체는 물리적 또는 유형적 저장(신호와 반대)을 지칭하며 컴퓨터-판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 유형적 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈식 및 비이동식 매체를 제한 없이 포함한다. 컴퓨터-판독가능 저장 매체는, 이로만 제한되는 것은 아니지만, RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 기타 솔리드-스테이트 메모리 기술, CD-ROM, DVD 또는 기타 광 저장 디바이스, 자기 카세트, 자기 테이프, 자기 디스크 저장 디바이스 또는 기타 자기 저장 디바이스, 또는 원하는 정보, 데이터 또는 명령을 유형적으로 저장하는 데 사용할 수 있고 컴퓨터 또는 프로세서로 접근할 수 있는 임의의 기타 물리적 또는 물질적 매체를 포함한다.

Claims (20)

  1. 보안 저장 디바이스의 저장 공간을 복수의 부분으로 초기화하는 단계;
    업데이트 프로그램을 상기 부분의 제1 부분에 복사하고 업데이트 데이터를 k상기 부분의 제2 부분에 복사하는 단계;
    상기 제1 부분에 대한 제1 골든 측정값 및 상기 제2 부분에 대한 제2 골든 측정값을 생성하는 단계;
    상기 제1 부분을 측정하는 단계;
    상기 제1 부분의 측정이 상기 제1 부분의 제1 골든 측정값과 일치하지 않는다는 결정에 응답하여 상기 보안 디바이스에 대한 업데이트를 업데이트하거나 롤백하는 단계; 및
    상기 제1 부분의 측정이 상기 제1 부분의 제1 골든 측정값과 일치한다고 결정하면 업데이트 동작을 검증하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 저장 공간을 초기화하는 단계가 소프트웨어 업데이트를 수신하는 것에 응답하여 수행되는, 방법.
  3. 제1항에 있어서,
    1-단계 부트로더(FSBL)를 포인팅하도록 상기 저장 공간의 복구 블록을 수정하는 단계를 더 포함하고, 상기 FSBL은 상기 제1 부분으로 제어를 전송하도록 구성되는, 방법.
  4. 제3항에 있어서,
    상기 제1 및 제2 골든 측정값을 생성한 후에 상기 보안 저장 디바이스를 재부팅하는 단계를 더 포함하는, 방법.
  5. 제3항에 있어서,
    상기 보안 디바이스에 대한 업데이트를 업데이트하거나 롤백하는 단계가,
    상기 FSBL을 실행하고 상기 보안 디바이스의 제어를 상기 업데이트 프로그램에 전송하는 단계;
    하나 이상의 상태 레지스터의 콘텐츠를 판독하는 단계로서, 상기 상태 레지스터는 상기 보안 디바이스의 상태를 저장하는 것인, 단계; 및
    상기 상태 레지스터가 업데이트가 시작되어야 하는지 또는 업데이트가 현재 실행 중임을 나타내는지 결정하면 상기 보안 디바이스를 업데이트하는 단계를 포함하는, 방법.
  6. 제5항에 있어서,
    상기 업데이트하는 단계가 상기 제2 부분으로부터 활성 저장 공간으로 데이터를 연속적으로 쓰는 단계를 포함하는, 방법.
  7. 제6항에 있어서,
    상기 데이터를 연속적으로 쓰는 단계가 각각의 쓰기 후에 상기 상태 레지스터를 동시에 업데이트하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 업데이트 동작을 검증하는 단계가,
    상기 제2 부분을 측정하는 단계; 및
    상기 제2 부분의 측정값을 제2 골든 측정값과 비교하는 단계를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 제2 부분의 측정값이 상기 제1 또는 제2 골든 측정값과 일치하지 않고 재시도 횟수가 초과되지 않은 것으로 결정하면 업데이트 시퀀스를 재시작하는 단계;
    상기 제2 부분의 측정값이 상기 제1 또는 제2 골든 측정값과 일치하지 않고 재시도 횟수가 초과된 것으로 결정하면 업데이트 시퀀스를 취소하는 단계;
    상기 제2 부분의 측정값이 상기 제2 골든 측정값과 일치하지 않고 이전에 저장된 제2 골든 측정값과 일치하지 않는 것으로 결정하면 보안 디바이스를 복원하는 단계; 및
    상기 제2 부분의 측정값이 상기 제2 골든 측정값과 같으면 업데이트 시퀀스를 완료하는 단계,
    중 하나 이상을 더 포함하는, 방법.
  10. 제9항에 있어서,
    상기 업데이트 시퀀스를 완료하는 단계가 상기 보안 디바이스의 활성 저장 공간을 측정하는 단계 및 상기 측정값이 예상된 값과 일치하는지 확인하는 단계를 포함하는, 방법.
  11. 컴퓨터 프로세서에 의해 실행될 수 있는 컴퓨터 프로그램 명령을 유형적으로 저장하기 위한 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 프로그램 명령은,
    보안 저장 디바이스의 저장 공간을 복수의 부분으로 초기화하는 단계;
    업데이트 프로그램을 상기 부분의 제1 부분에 복사하고 업데이트 데이터를 상기 부분의 제2 부분에 복사하는 단계;
    상기 제1 부분에 대한 제1 골든 측정값 및 상기 제2 부분에 대한 제2 골든 측정값을 생성하는 단계;
    상기 제1 부분을 측정하는 단계;
    상기 제1 부분의 측정값이 상기 제1 부분의 제1 골든 측정값과 일치하지 않는다는 결정에 응답하여 상기 보안 디바이스에 대한 업데이트를 업데이트하거나 롤백하는 단계; 및
    상기 제1 부분의 측정값이 상기 제1 부분의 제1 골든 측정값과 일치한다고 결정하면 업데이트 동작을 검증하는 단계,
    를 정의하는, 비일시적 컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 저장 공간을 초기화하는 단계가 소프트웨어 업데이트를 수신하는 것에 응답하여 수행되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제11항에 있어서,
    1-단계 부트로더(FSBL)를 포인팅하도록 상기 저장 공간의 복구 블록을 수정하는 단계를 더 포함하고, 상기 FSBL은 상기 제1 부분에 제어를 전송하도록 구성되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서,
    상기 제1 및 제2 골든 측정값을 생성한 후에 상기 보안 저장 디바이스를 재부팅하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제13항에 있어서,
    상기 보안 디바이스에 대한 업데이트를 업데이트하거나 롤백하는 단계가,
    상기 FSBL을 실행하고 상기 보안 디바이스의 제어를 업데이트 프로그램에 전송하는 단계;
    하나 이상의 상태 레지스터의 콘텐츠를 판독하는 단계로서, 상기 상태 레지스터는 상기 보안 디바이스의 상태를 저장하는 것인, 단계; 및
    상기 상태 레지스터가 업데이트가 시작되어야 하는지 또는 업데이트가 현재 실행 중임을 나타내는지 결정하면, 상기 보안 디바이스를 업데이트하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제15항에 있어서,
    상기 업데이트 단계가 상기 제2 부분으로부터 활성 저장 공간으로 데이터를 연속적으로 쓰는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제16항에 있어서,
    상기 데이터를 연속적으로 쓰는 단계가 각각의 쓰기 후에 상기 상태 레지스터를 동시에 업데이트하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제11항에 있어서,
    상기 업데이트 동작을 검증하는 단계가,
    상기 제2 부분을 측정하는 단계; 및
    상기 제2 부분의 측정값을 제2 골든 측정값과 비교하는 단계,
    를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제18항에 있어서,
    상기 제2 부분의 측정값이 상기 제1 또는 제2 골든 측정값과 일치하지 않고 재시도 횟수가 초과되지 않았다고 결정하면 업데이트 시퀀스를 재시작하는 단계;
    상기 제2 부분의 측정값이 상기 제1 또는 제2 골든 측정값과 일치하지 않고 재시도 횟수가 초과되었다고 결정하면 업데이트 시퀀스를 취소하는 단계;
    상기 제2 부분의 측정값이 상기 제2 황금 측정값과 일치하지 않고 이전에 저장된 제2 황금 측정값과 일치하지 않는다고 결정하면 상기 보안 디바이스를 복원하는 단계; 및
    상기 제2 부분의 측정값이 상기 제2 골든 측정값과 같으면 상기 업데이트 시퀀스를 완료하는 단계,
    중 하나 이상을 더 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 디바이스로서,
    프로세서; 및
    상기 프로세서에 의한 실행을 위한 프로그램 로직을 유형적으로 저장하기 위한 저장 매체를 포함하며,
    상기 저장된 프로그램 로직은 상기 프로세서가,
    보안 저장 디바이스의 저장 공간을 복수의 부분으로 초기화하는 동작;
    업데이트 프로그램을 상기 부분의 제1 부분에 복사하고 업데이트 데이터를 상기 부분의 제2 부분에 복사하는 동작;
    상기 제1 부분에 대한 제1 골든 측정값 및 상기 제2 부분에 대한 제2 골든 측정값을 생성하는 동작;
    상기 제1 부분을 측정하는 동작;
    상기 제1 부분의 측정값이 상기 제1 부분의 제1 골든 측정값과 일치하지 않는다는 결정에 응답하여 상기 보안 디바이스에 대한 업데이트를 업데이트하거나 롤백하는 동작; 및
    상기 제1 부분의 측정값이 상기 제1 부분의 제1 골든 측정값과 일치한다고 결정하면 업데이트 동작을 검증하는 동작,
    을 수행하도록 하는 명령을 포함하는, 디바이스.
KR1020227016152A 2019-11-25 2020-11-19 보안 저장 디바이스의 탄력적인 소프트웨어 업데이트 KR20220084336A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/694,583 2019-11-25
US16/694,583 US11080039B2 (en) 2019-11-25 2019-11-25 Resilient software updates in secure storage devices
PCT/US2020/061310 WO2021108221A1 (en) 2019-11-25 2020-11-19 Resilient software updates in secure storage devices

Publications (1)

Publication Number Publication Date
KR20220084336A true KR20220084336A (ko) 2022-06-21

Family

ID=75974896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227016152A KR20220084336A (ko) 2019-11-25 2020-11-19 보안 저장 디바이스의 탄력적인 소프트웨어 업데이트

Country Status (6)

Country Link
US (3) US11080039B2 (ko)
EP (1) EP4066135A4 (ko)
JP (1) JP7392147B2 (ko)
KR (1) KR20220084336A (ko)
CN (1) CN114746860A (ko)
WO (1) WO2021108221A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080039B2 (en) 2019-11-25 2021-08-03 Micron Technology, Inc. Resilient software updates in secure storage devices
US11188450B2 (en) * 2020-04-02 2021-11-30 Sap Se Cloud application architecture using edge computing
WO2024073646A1 (en) * 2022-09-30 2024-04-04 Schlumberger Technology Corporation Field system
WO2024105303A1 (en) * 2022-11-17 2024-05-23 Kone Corporation Management of an operation of an application

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080371B1 (en) * 1998-03-03 2006-07-18 Siebel Systems, Inc. Method, system, apparatus and program product for distribution and instantiation of software upgrades
US7974416B2 (en) 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
US7743241B1 (en) * 2003-09-12 2010-06-22 American Megatrends, Inc. Securing the contents of data storage devices within a computer
JP4945788B2 (ja) 2007-11-30 2012-06-06 株式会社東芝 通信アダプタ
US8566603B2 (en) * 2010-06-14 2013-10-22 Seagate Technology Llc Managing security operating modes
US8924778B2 (en) * 2010-12-29 2014-12-30 Lsi Corporation Method to synchronize a replacement controller's firmware version to the native configuration database version on a simplex array
CN103329093B (zh) 2011-01-19 2017-09-12 国际商业机器公司 用于更新执行环境中的代码的方法和系统
CN102830984B (zh) 2011-06-14 2016-07-06 联想(北京)有限公司 固件更新的方法、芯片以及通信终端
US9063822B2 (en) * 2011-09-02 2015-06-23 Microsoft Technology Licensing, Llc Efficient application-aware disaster recovery
US9262637B2 (en) * 2012-03-29 2016-02-16 Cisco Technology, Inc. System and method for verifying integrity of platform object using locally stored measurement
US20160321057A1 (en) 2013-12-27 2016-11-03 Kyocera Document Solutions Inc. Electronic apparatus
US10025576B2 (en) 2015-07-10 2018-07-17 Dell Products, Lp Method for deploying BIOS integrity measurement via BIOS update package and system therefor
JP6740789B2 (ja) * 2016-08-03 2020-08-19 富士通株式会社 ストレージ制御装置および記憶装置管理プログラム
KR101795457B1 (ko) * 2016-09-27 2017-11-10 시큐리티플랫폼 주식회사 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
US10353779B2 (en) 2017-05-05 2019-07-16 Dell Products L.P. Systems and methods for detection of firmware image corruption and initiation of recovery
US11455396B2 (en) * 2017-05-12 2022-09-27 Hewlett Packard Enterprise Development Lp Using trusted platform module (TPM) emulator engines to measure firmware images
US10333951B1 (en) * 2017-07-31 2019-06-25 EMC IP Holding Company LLC Method and system for implementing golden container storage
US11379593B2 (en) * 2017-08-16 2022-07-05 Hewlett-Packard Development Company, L.P. Storage monitoring
EP3673401A4 (en) * 2017-08-22 2021-04-14 Absolute Software Corporation CHECKING FIRMWARE INTEGRITY USING SILVER MEASUREMENTS
US10733142B1 (en) * 2017-09-30 2020-08-04 EMC IP Holding Company LLC Method and apparatus to have snapshots for the files in a tier in a de-duplication file system
US10452384B2 (en) 2018-02-05 2019-10-22 Microsoft Technology Licensing, Llc Device health tickets
US10409585B2 (en) * 2018-02-14 2019-09-10 Micron Technology, Inc. Over-the-air (OTA) update for firmware of a vehicle component
US11080039B2 (en) 2019-11-25 2021-08-03 Micron Technology, Inc. Resilient software updates in secure storage devices

Also Published As

Publication number Publication date
EP4066135A1 (en) 2022-10-05
US20210357203A1 (en) 2021-11-18
US20230153101A1 (en) 2023-05-18
US11775283B2 (en) 2023-10-03
US11561788B2 (en) 2023-01-24
WO2021108221A1 (en) 2021-06-03
CN114746860A (zh) 2022-07-12
TW202133016A (zh) 2021-09-01
JP7392147B2 (ja) 2023-12-05
US11080039B2 (en) 2021-08-03
EP4066135A4 (en) 2023-12-27
JP2023502511A (ja) 2023-01-24
US20210157563A1 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
US11561788B2 (en) Resilient software updates in secure storage devices
US10701084B2 (en) Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices
US20190155598A1 (en) Techniques for updating a file using a multi-version patch file
US9189340B2 (en) Secure recovery apparatus and method
US9880908B2 (en) Recovering from compromised system boot code
JP4980064B2 (ja) 携帯端末内に格納されたデータを第1のデータバージョンから更新データバージョンに差分的に更新する方法、携帯端末及びコンピュータプログラム
US10452375B1 (en) Memory-efficient upgrade staging
US11163886B2 (en) Information handling system firmware bit error detection and correction
US10809944B1 (en) Memory device resilient to cyber-attacks and malfunction
US10684913B2 (en) Systems and methods for detecting errors and/or restoring non-volatile random access memory using error correction code
US20130024850A1 (en) Systems, methods and apparatus for fast file transfer
CN112416406A (zh) 终端设备升级方法、装置、终端设备和介质
US11210173B2 (en) Fault tolerant device upgrade
TWI839587B (zh) 用於管理軟體更新之方法及裝置,以及非暫時性電腦可讀儲存媒體
JP2008226167A (ja) データ配布システム及びデータ配布プログラム
CN114144759A (zh) 用于更新车辆的车载计算机的软件的更新方法和更新装置,所述车载计算机包括执行存储器、备份存储器和检查存储器
US11762756B2 (en) System and method for startup data verification
US20230185564A1 (en) Control device and management method
US20230129942A1 (en) Method for locking a rewritable non-volatile memory and electronic device implementing said method
US20220404991A1 (en) System and Method for Self-Encrypting Drive Reversion During Re-initialization of a Storage Array
JP2016143103A (ja) 制御装置