KR101312832B1 - 펌웨어 이미지들의 다중 소유자 전개 - Google Patents

펌웨어 이미지들의 다중 소유자 전개 Download PDF

Info

Publication number
KR101312832B1
KR101312832B1 KR1020110056330A KR20110056330A KR101312832B1 KR 101312832 B1 KR101312832 B1 KR 101312832B1 KR 1020110056330 A KR1020110056330 A KR 1020110056330A KR 20110056330 A KR20110056330 A KR 20110056330A KR 101312832 B1 KR101312832 B1 KR 101312832B1
Authority
KR
South Korea
Prior art keywords
code
owner
signed
access control
update
Prior art date
Application number
KR1020110056330A
Other languages
English (en)
Other versions
KR20110138165A (ko
Inventor
팔사미 사크시쿠마르
로버트 씨. 스완슨
빈센트 제이. 지머
마이클 에이. 로스만
말리크 블루수
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20110138165A publication Critical patent/KR20110138165A/ko
Application granted granted Critical
Publication of KR101312832B1 publication Critical patent/KR101312832B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/22Microcontrol or microprogram arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

펌웨어 이미지들의 다중 소유자 전개를 위한 방법, 장치, 시스템 및 컴퓨터 프로그램 제품이 개시된다. 이 방법은 제1 코드 소유자에 의해 서명된 제1 코드 모듈 및 제2 코드 소유자에 의해 서명된 제2 코드 모듈을 포함하는 서명된 펌웨어 이미지를 취득하는 단계를 포함한다. 이 방법은 제1 코드 모듈에 대한 갱신된 코드를 포함하는 갱신된 제1 코드 모듈을 취득하는 단계, 갱신된 제1 코드 모듈이 제1 코드 소유자에 의해 서명된 것을 검증하는 단계, 및 갱신된 제1 코드 모듈이 제1 코드 소유자에 의해 서명된 것을 검증하는 것에 응답하여, 갱신된 제1 코드 모듈을 갖도록 서명된 펌웨어 이미지를 갱신하는 단계를 더 포함한다. 서명된 펌웨어 이미지는 제1 코드 소유자에 의한 제1 코드 모듈에 대한 갱신들 및 제2 코드 소유자에 의한 제2 코드 모듈에 대한 갱신들을 허가하는 액세스 제어 리스트를 더 포함할 수 있다.

Description

펌웨어 이미지들의 다중 소유자 전개{MULTI-OWNER DEPLOYMENT OF FIRMWARE IMAGES}
저작권 공고
본 명세서에는 저작권 보호를 받는 내용이 포함되어 있다. 저작권 소유자는 본 특허 명세서가 특허청의 특허 파일들 또는 레코드들에 실릴 때 누군가에 의한 본 특허 명세서의 사본 재생에 반대하지 않지만, 그 외에는 저작권에 대한 모든 권리를 보유한다.
기술 분야
본 발명은 일반적으로 컴퓨터 시스템들 내의 BIOS 및 다른 펌웨어 코드의 전개에 관한 것이다.
처음에 IBM PC 호환 컴퓨터용으로 개발된 시스템 BIOS라고도 하는 기본 입출력 시스템(BIOS)은 펌웨어 인터페이스를 정의하는 사실상의 표준이다. BIOS는 시동시에 PC에 의해 실행되는 최초 코드이도록 설계되는 부트 펌웨어이다. BIOS의 초기 기능은 비디오 디스플레이 카드, 하드 디스크, 플로피 디스크 및 기타 하드웨어와 같은 시스템 장치들을 식별하고, 테스트하고, 초기화하는 것이다. 이러한 초기화는 기계를 공지 상태로 준비하여, 호환 매체들 상에 저장된 운영 시스템과 같은 소프트웨어가 PC에 로딩되고, 실행되고, PC의 제어를 받을 수 있게 한다. 이러한 프로세스는 부트스트랩핑의 약어인 부팅 또는 부팅 업이라고 한다.
BIOS 프로그램들은 키보드, 텍스트 표시 기능 등과 같은 주변 장치들을 조작하고 제어하도록 호출될 수 있는 기본 입출력 기능들의 소규모 라이브러리를 제공한다. 시스템이 시동될 때, BIOS는 시스템 구성 환경을 검사하고, 하드웨어 컴포넌트들과 운영 시스템 사이에서 번역기들로서 동작하는 프로그램들을 메모리에 로딩한다. 예를 들어, 사용자가 키보드 상의 키를 누를 때, 신호가 키보드 인터럽트 핸들러로 전송되고, 키보드 인터럽트 핸들러는 그 신호가 무엇인지를 프로세서에 알리고, 이를 운영 시스템으로 전달한다.
BIOS는 프로세서들이 16비트 프로세서 모드로 동작하고 어드레스 가능 메모리가 1 메가비트로 제한될 때 IBM PC용으로 개발되었으며, BIOS 코드는 IBM PC AT 하드웨어 의존성을 나타냈다. 이후에 32비트 프로세서용으로 개발된 운영 시스템들은 BIOS에 의해 제공되는 16비트 런타임 인터페이스의 호출에 의존하는 것이 아니라 I/O를 처리하기 위한 장치 드라이버들을 포함하기 시작하였다. 이러한 장치 드라이버들은 종종 플랫폼 펌웨어에 의해 제공되며, 운영 시스템을 로딩하기 전에 BIOS 초기화 동안에 메모리에 로딩된다. 운영 시스템이 인터페이스할 수 있는 많은 수의 주변 장치로 인해, 그러한 플랫폼 펌웨어는 종종 시스템 제조자가 아닌 다른 엔티티들에 의해 제공된다. 다수의 당사자가 연관됨에 따라, 펌웨어 이미지들의 배포가 복잡해진다.
오늘날의 컴퓨팅 환경들에서 멀웨어의 확산과 더불어 펌웨어의 검증의 중요성도 커졌다. 디지털 시그니처 또는 디지털 시그니처 스킴은 디지털 메시지 또는 문서의 신빙성을 입증하기 위한 수학적 스킴이다. 유효한 디지털 시그니처는, 메시지가 공지된 송신자에 의해 생성되었고 송신중에 변경되지 않았음을 믿는 이유를 수신자에게 제공한다. 디지털 시그니처는 일반적으로 소프트웨어 배포에 이용되며, 디지털 시그니처들은 펌웨어 이미지 배포에 이용되는 것이 바람직하다.
도 1은 종래 기술의 서명된 펌웨어 이미지의 블록도.
도 2a는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자에 의해 서명된 펌웨어 이미지의 블록도.
도 2b는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자에 대한 액세스 제어 리스트를 나타내는 도 2a의 펌웨어 이미지의 블록도.
도 2c는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자 및 OEM 펌웨어 코드 소유자 양자에 의해 서명된 펌웨어 이미지의 블록도.
도 2d는 본 발명의 일 실시예에 따른 OEM 펌웨어 코드 소유자에 대한 액세스 제어 리스트를 나타내는 도 2c의 펌웨어 이미지의 블록도.
도 2e는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자, OEM 펌웨어 코드 소유자 및 채널 배포자 펌웨어 코드 소유자에 의해 서명된 펌웨어 이미지의 블록도.
도 2f는 본 발명의 일 실시예에 따른 채널 배포자 펌웨어 코드 소유자에 대한 액세스 제어 리스트를 나타내는 도 2e의 펌웨어 이미지의 블록도.
도 3은 도 2a 내지 2f의 서명된 펌웨어 이미지를 갱신하기 위한 권한을 서명 및 위임하기 위한 프로세스를 나타내는 흐름도.
도 4는 본 발명의 일 실시예에 따른 도 2a 내지 2f 및 도 3의 서명된 펌웨어 이미지에 대한 액세스 제어 리스트를 갱신하기 위한 방법의 흐름도.
도 5는 본 발명의 일 실시예에 따른 도 2a 내지 2f 및 도 3의 서명된 펌웨어 이미지를 갱신하기 위한 방법의 흐름도.
도 6은 본 발명의 일 실시예에 따른, 펌웨어 이미지들이 다수의 임차인에 의해 서명되는 것을 가능하게 하도록 구성되는 시스템의 블록도.
본 발명의 실시예들은 시스템 배포 채널 내의 상이한 엔티티들에 의해 서명된 코드 모듈들을 포함하는 서명된 루트 펌웨어 이미지를 전개하기 위한 방법, 장치, 시스템 및 컴퓨터 프로그램 제품을 제공할 수 있다.
일 실시예에서, 방법은 제1 코드 소유자에 의해 서명된 제1 코드 모듈 및 제2 코드 소유자에 의해 서명된 제2 코드 모듈을 포함하는 서명된 펌웨어 이미지를 취득하는 단계를 포함한다. 이 방법은 제1 코드 모듈에 대한 갱신된 코드를 포함하는 갱신된 제1 코드 모듈을 취득하는 단계, 갱신된 제1 코드 모듈이 제1 코드 소유자에 의해 서명된 것을 검증하는 단계, 및 갱신된 제1 코드 모듈이 제1 코드 소유자에 의해 서명된 것을 검증하는 것에 응답하여, 갱신된 제1 코드 모듈을 갖도록 서명된 펌웨어 이미지를 갱신하는 단계를 더 포함한다. 서명된 펌웨어 이미지는 제1 코드 소유자에 의한 제1 코드 모듈에 대한 갱신들 및 제2 코드 소유자에 의한 제2 코드 모듈에 대한 갱신들을 허가하는 액세스 제어 리스트를 더 포함할 수 있다.
이 방법은 서명된 펌웨어 이미지의 제3 코드 모듈을 갱신하기 위한 제3 코드 소유자용 공개 키 및 제3 코드 소유자에 대한 허가를 포함하는 액세스 제어 토큰을 취득하는 단계; 액세스 제어 토큰이 액세스 제어 리스트로부터의 허가된 코드 소유자에 의하여 서명된 것을 검증하는 단계; 허가된 코드 소유자가 제3 코드 모듈을 갱신하도록 허가된 것을 검증하는 단계; 및 제3 코드 모듈을 갱신하기 위한 제3 코드 소유자용 공개 키 및 제3 코드 소유자에 대한 허가를 포함하도록 액세스 제어 리스트를 갱신하는 단계를 더 포함할 수 있다. 이 방법은 제3 코드 소유자로부터 갱신된 제3 코드 모듈을 수신하는 단계, 갱신된 제3 코드 모듈이 제3 코드 소유자에 의해 서명된 것을 검증하는 단계, 및 갱신된 제3 코드 모듈이 제3 코드 소유자에 의해 서명된 것을 검증하는 것에 응답하여, 갱신된 제3 코드 모듈을 갖도록 서명된 펌웨어 이미지를 갱신하는 단계를 더 포함할 수 있다.
본 발명은 전통적인 BIOS/플랫폼 펌웨어 모놀리식 이미지 갱신 프로세스를 개선하며, 상이한 소유자들이 개별 펌웨어 코드 모듈들에 서명하는 것을 가능하게 한다. 본 발명은 특정 BIOS/플랫폼 펌웨어 코드 모듈/드라이버 또는 애플리케이션에 대해 갱신들이 수행되는 것을 가능하게 한다. 플랫폼 펌웨어가 점점 더 정교해지고, 보안 특징들과 같은 중대한 기능을 제공함에 따라, 이제는 오리지널 장비 제조자가 시스템의 플래시 메모리의 전체 BIOS/플랫폼 펌웨어 영역에 대한 새로운 모놀리식 이미지를 제공하는 것을 필요로 하지 않고, BIOS 및 플랫폼 펌웨어 내의 결함들이 기업 관리 서버들에 의해 즉시 교정되어 제공될 수 있다.
본 명세서에서 본 발명의 "하나의 실시예" 또는 "일 실시예"의 인용은 그 실시예와 관련하여 설명되는 구체적인 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 명세서 전반의 다양한 곳에 나오는 "일 실시예에서", "일 실시예에 따르면" 등과 같은 문구들의 출현들 모두가 반드시 동일 실시예를 지칭하지는 않는다.
설명의 목적으로, 본 발명의 충분한 이해를 제공하기 위해 구체적인 구성들 및 상세들이 설명된다. 그러나, 본 발명의 실시예들은 여기에 제공되는 구체적인 상세들 없이도 실시될 수 있다는 것은 이 분야의 통상의 기술자에게 명백할 것이다. 더욱이, 본 발명을 불명확하게 하지 않기 위해 공지된 특징들은 생략되거나 간략화될 수 있다. 본 설명 전반에서 다양한 예들이 제공될 수 있다. 이들은 본 발명의 구체적인 실시예들의 설명일 뿐이다. 본 발명의 범위는 주어지는 예들로 한정되지 않는다.
멀웨어의 정교화의 진행에 따라, 펌웨어 이미지들과 같은 시스템 소프트웨어의 제공자들은 펌웨어 이미지의 주어진 버전이 신빙성이 있고 탬퍼링되지 않았음을 검증하는 것이 바람직하다. 이러한 검증은 종종 데이터를 암호화하고 서명하기 위한 공개 및 비공개 키들을 제공하는 RSA(Rivest Shamir Adleman) 암호화 알고리즘과 같은 암호화 스킴에 따른 펌웨어 이미지 파일의 디지털 시그니처로서 제공된다. 이 분야의 기술자는 여기에 설명되는 발명이 RSA 암호화 알고리즘 하의 디지털 시그니처로 한정되는 것이 아니라, 신빙성을 검증하기 위한 디지털 시그니처를 제공하기 위한 임의의 방법이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
디지털 시그니처 스킴은 일반적으로 3개의 알고리즘으로 구성된다. (1) 한 세트의 가능한 비공개 키들로부터 임의로 균등하게 비공개 키를 선택하는 키 생성 알고리즘. 이 알고리즘은 비공개 키 및 대응하는 공개 키를 출력한다. (2) 메시지 및 비공개 키가 주어지는 경우에 시그니처를 생성하는 서명 알고리즘. (3) 메시지, 공개 키 및 시그니처가 주어지는 경우에 신빙성에 대한 메시지의 요구를 승인 또는 거절하는 시그니처 검증 알고리즘. 두 가지의 중요한 특성이 필요하다. 첫째, 일정한 메시지 및 일정한 비공개 키로부터 생성된 시그니처는 대응하는 공개 키를 이용하여 그 메시지의 신빙성을 검증해야 한다. 둘째, 비공개 키를 소유하지 않은 당사자에 대한 유효한 시그니처를 생성하는 것이 계산적으로 불가능하여야 한다.
도 1은 종래 기술의 서명된 펌웨어 이미지의 블록도이다. 루트 펌웨어 이미지(110)는 단일 엔티티의 비공개 키(120)에 의해 서명된다. 비공개 키(120)의 소유자만이 루트 펌웨어 이미지(110)를 갱신할 수 있다. 예를 들어, 시스템 제조자가 시스템 제조자의 비공개 키(120)를 이용하여 루트 펌웨어 이미지(110)에 서명한 것으로 가정한다. 루트 펌웨어 이미지(110)가 서명된 후에 OEM들 또는 채널 고객들과 같은 전개 체인 내의 다른 엔티티들에 의해 루트 펌웨어 이미지(110) 내에 포함된 모듈들에 대한 갱신들이 요구되는 경우, 그러한 엔티티들은 루트 펌웨어 이미지(110)의 후속 릴리스에 포함될 그들의 맞춤화된 펌웨어 이미지 코드 모듈들을 비공개 키(120)의 소유자에게 제공해야 한다. 이러한 구현은 맞춤화된 펌웨어 이미지 모듈들을 유지하고, 갱신된 루트 펌웨어 이미지(110)를 외부 엔티티들의 스케줄들에 따라 전개하기 위한 기반 구조를 필요로 한다.
비공개 키(120)의 소유자가 아닌 다른 엔티티에 의해 제공되는 맞춤화된 펌웨어 이미지 코드 모듈에 의해 가능해지는 보안 파괴는 전체 루트 펌웨어 이미지(110)의 보안을 손상시킨다. 이러한 보안 파괴는 비공개 키(120)의 소유자에 의해서만 교정될 수 있다. 이러한 이유 때문에, 오늘날의 대부분의 구현들은 배포 채널의 하단에 있는 엔티티들에 의해서만 서명된다. 시스템 제조자 및/또는 OEM들에 의해 제공되는 루트 펌웨어 이미지 코드 모듈들은 전술한 문제들을 방지하기 위해 종종 서명되지 않는다. 그러나, 많은 펌웨어 이미지 코드 모듈들의 제공자에 의한 디지털 시그니처가 없을 경우, 시스템의 최종 사용자들은 펌웨어 이미지를 덜 신뢰성 있는 것으로 간주할 수 있다.
도 2a는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자에 의해 서명된 펌웨어 이미지의 블록도이다. 이 예에서, (여기서 "루트"로 지칭되는) 시스템 제조자와 같은 루트 펌웨어 이미지의 최초 소유자는 루트 비공개 키(220)를 이용하여 5개의 펌웨어 볼륨(FV1 211, FV2 213, FV3 215, FV4 217, FV5 219) 내의 펌웨어 이미지 코드 모듈들의 각각에 서명하였다. 코드 모듈의 서명은 코드 모듈에 디지털 시그니처를 첨부하는 것을 포함할 수 있다. 여기에 도시된 예들에서, 코드 모듈에 대한 시그니처는 코드 모듈을 포함하는 펌웨어 볼륨과 관련된 시그니처로서 도시된다. 유사하게, 주어진 코드 모듈을 갱신하기 위한 권한은 코드 모듈을 포함하는 펌웨어 볼륨을 갱신하기 위한 권한으로서 설명된다. 이 분야의 기술자는 둘 이상의 코드 모듈이 주어진 펌웨어 볼륨 내에 포함될 수 있고, 펌웨어 볼륨 내의 상이한 코드 모듈들이 상이한 시그니처들 및/또는 갱신 권한들을 가질 수 있지만, 여기서는 간략화를 위해 코드 모듈 및 펌웨어 볼륨이 일대일 관계를 갖는 것으로 설명된다는 것을 이해할 것이다.
표 230A는 루트 코드 소유자 "루트"에 대한 공개 키(231) 및 코드 소유자 "루트"에 대한 액세스 제어 리스트(ACL; 232)를 포함하는 보안 정보를 제공한다. ACL(232)은 공개 키(231)에 의해 소유되는 펌웨어 이미지 코드 모듈들(즉, 펌웨어 볼륨들)을 지시한다. 액세스 제어 리스트(232)에 대한 추가적인 상세들은 도 2b에 제공된다.
도 2b는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자 "루트"에 대한 액세스 제어 리스트를 나타내는 도 2a의 펌웨어 이미지의 블록도이다. 도시된 예에서, ACL(232)은 5개의 펌웨어 볼륨(FV1 211, FV2 213, FV3 215, FV4 217, FV5 219)의 각각 내의 코드 모듈들에 대한 포인터들(232A 내지 232E)을 포함한다. 이러한 포인터들은 아래의 도 3과 관련하여 도시되고 더 상세히 설명된다.
도 2c는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자 및 OEM 펌웨어 코드 소유자(여기서 "OEM"으로 참조됨) 양자에 의해 서명된 펌웨어 이미지의 블록도이다. 이 예에서, 도 2a에서 공개 키(220)를 소유하는 시스템 제조자의 OEM 고객과 같은 펌웨어 이미지의 코드 모듈들의 제2 소유자는 맞춤화된 루트 펌웨어 모듈들을 제공하였다. 예를 들어, OEM 펌웨어 코드 소유자는 컴퓨터 시스템을 블레이드 서버 제품으로서 제공할 수 있으며, 코드 소유자 "OEM"에 의해 제공된 펌웨어 이미지 코드 모듈들은 펌웨어를 블레이드 서버 구성에서 동작하도록 구성할 수 있다.
도 2c에서, 제2 소유자 "OEM"는 OEM 비공개 키(240)를 이용하여, 이제 OEM 펌웨어 이미지(210B)로서 참조되는 펌웨어 이미지 내의 선택된 펌웨어 볼륨들에 서명하였다. 이 예에서, 펌웨어 볼륨들(FV3 215, FV5 219)이 OEM 비공개 키(240)에 의해 서명되었다. 표 230B는 "OEM 코드 소유자에 대한 공개 키(241) 및 공개 키(241)에 의해 소유되는 펌웨어 이미지 코드 모듈들(즉, 펌웨어 볼륨들)을 지시하는 액세스 제어 리스트(ACL; 242)를 포함하는 새로운 보안 정보를 제공한다. ACL(242)에 대한 추가 상세들은 도 2d에 제공된다.
도 2d는 본 발명의 일 실시예에 따른 "OEM" 펌웨어 코드 소유자에 대한 액세스 제어 리스트를 나타내는 도 2c의 펌웨어 이미지의 블록도이다. 도시된 예에서, ACL(242)은 2개의 펌웨어 볼륨(FV3 215, FV5 219) 각각에 대한 각각의 포인터들(242C, 242E)을 포함한다. 이러한 새로운 보안 정보는 도 2a 및 2b에 관련하여 설명된 바와 같은 펌웨어 코드 소유자 "루트"에 대한 공개 키(231) 및 ACL(232)도 포함하는 표 230B의 일부이다. 그러나, 루트 펌웨어 코드 소유자 "루트"는 펌웨어 코드 소유자 "OEM"에게 FV3(215) 및 FV5(219)를 갱신하기 위한 권한을 위임하며, ACL(232)의 포인터들(232C, 232E)은 ACL(242)의 포인터들(242C, 242E)에 의해 무효화된다. 펌웨어 코드 모듈들을 갱신하기 위한 권한을 위임하는 프로세스는 아래의 도 3 내지 5와 관련하여 더 설명된다.
도 2e는 본 발명의 일 실시예에 따른 루트 펌웨어 코드 소유자 "루트", OEM 펌웨어 코드 소유자 "OEM" 및 채널 배포자 펌웨어 코드 소유자 "Chnl"에 의해 서명된 펌웨어 이미지의 블록도이다. 이 예에서, 도 2b의 비공개 키(240)를 소유하는 OEM의 채널 고객과 같은 펌웨어 이미지의 코드 모듈들의 제3 소유자는 맞춤화된 루트 펌웨어 모듈들을 제공하였다. 제3 소유자 "Chnl"는 채널(Chnl) 비공개 키(250)를 이용하여, 이제 채널 고객 펌웨어 이미지(210C)로서 참조되는 펌웨어 이미지 내의 하나의 펌웨어 볼륨에 서명하였다. 이 예에서, 펌웨어 볼륨(FV5 219)이 Chnl 비공개 키(250)에 의해 서명되었다. 표 230C는 채널 고객 소유자 "Chnl"에 대한 공개 키(251) 및 공개 키(251)에 의해 소유되는 펌웨어 이미지 코드 모듈들(즉, 펌웨어 볼륨들)을 지시하는 액세스 제어 리스트(ACL; 252)를 포함하는 새로운 보안 정보를 제공한다.
도 2f는 본 발명의 일 실시예에 따른 채널 배포자 펌웨어 코드 소유자 "Chnl"에 대한 채널 제어 리스트를 나타내는 도 2e의 펌웨어 이미지의 블록도이다. 도시된 예에서, ACL(252)은 펌웨어 볼륨(FV5 219)에 대한 포인터(252E)를 포함한다. 이러한 새로운 보안 정보는 도 2a 및 2b와 관련하여 설명된 바와 같은 루트 펌웨어 코드 소유자 "루트"에 대한 공개 키(231) 및 ACL(232), 및 도 2c 및 2d와 관련하여 전술한 바와 같은 펌웨어 코드 소유자 "OEM"에 대한 공개 키(241) 및 ACL(242)도 포함하는 표 230C의 일부이다. 포인터(252E)는 펌웨어 코드 소유자 "루트"에 대한 ACL(232)의 포인터(232E) 및 펌웨어 코드 소유자 "OEM"에 대한 ACL(242)의 포인터(242E) 양자를 무효화한다.
도 3은 도 2a 내지 2f의 서명된 펌웨어 이미지를 갱신하기 위한 권한에 서명하고 위임하기 위한 프로세스를 나타내는 흐름도이다. 먼저, 루트 펌웨어 이미지(310A)는 도 2a의 루트 펌웨어 이미지(210A)와 관련하여 설명된 바와 같은 루트 펌웨어 코드 소유자 "루트"에 의해 서명되었다. 표 330A는 (비공개 키(320)를 갖는 "루트" 소유자에 대응하는) 공개 키(331)를 갖는 엔티티가 포인터들(332A 내지 332E)을 포함하는 액세스 제어 리스트(332)를 가져서, 공개 키(331)의 소유자가 펌웨어 볼륨들(FV1 311, FV2 313, FV3 315, FV4 317, FV5 319) 각각에 포함된 코드 모듈들을 갱신하는 것이 가능함을 지시한다.
액션 3.1에서, 비공개 키(320)의 소유자 "루트"는 루트 펌웨어 이미지(310A)의 후속 갱신들을 허가하기 위해 서명된 토큰(360)을 생성한다. 토큰(360)에 서명함으로써, 비공개 키(320)의 소유자, 즉 "루트" 펌웨어 코드 소유자는 "루트" 공개 키(321)를 토큰(360)과 연관시킨다. 토큰(360)은 루트 펌웨어 이미지(310A)를 갱신하도록 허가되는 엔티티의 공개 키(362) 및 대응하는 공개 키(362)에 의해 갱신될 수 있는 루트 펌웨어 이미지(310A) 내의 펌웨어 모듈들을 지시하는 액세스 제어 리스트(364)와 같은, 권한이 위임되는 정보를 포함하도록 생성된다. 이 예에서는, OEM 공개 키(362)의 소유자가 펌웨어 볼륨들(FV3 315, FV5 319)을 갱신하는 것을 가능하게 하는 액세스 제어 리스트(364)와 함께 펌웨어 코드 소유자 "OEM"에 대한 공개 키(362)가 토큰(360)에 포함되었다.
액션 3.2에서, 루트 펌웨어 이미지(310A)가 갱신되기 전에, 토큰(360)에 의해 위임되려고 하는 권한이 검증된다. 루트 펌웨어 이미지(310A)는 표 330A를 참고하여, 토큰(360)에 대한 공개 키의 소유자, 즉 토큰 공개 키(321)에 대한 소유자 "루트"가 토크(360) 내에 포함된 펌웨어 볼륨들을 갱신하도록 허가된 것을 보증한다. 이 예에서, 표 330A는 토큰(360)에 대한 공개 키(321)의 소유자("루트")가 표 330A에 나타나고, 토큰(360)에 대한 공개 키(321)의 소유자("루트")가 펌웨어 볼륨들(FV3 315, FV5 319)을 갱신하기 위한 권한을 갖는 것을 보증하기 위해 참고된다.
액션 3.3에서, 토큰(360)에 대한 공개 키(321)의 소유자 "루트"가 펌웨어 볼륨들(FV3 315, FV5 319)을 갱신하기 위한 권한을 갖는 것을 확인한 후에, FV3(315) 및 FV5(319) 내의 코드를 갱신하여 OEM 펌웨어 이미지(310B)를 형성한다. OEM 펌웨어 이미지(310B) 내의 표 330B도 공개 키(333)와 같은 "OEM" 펌웨어 코드 소유자에 대한 공개 키 및 대응하는 액세스 제어 리스트(ACL; 334)를 포함하도록 갱신된다. 표 330B에 대한 갱신의 결과로서, 이제 액세스 제어 리스트는 "루트" 펌웨어 코드 소유자에 대한 3개의 포인터, 즉 FV1(311)에 대한 포인터(332A), FV2(313)에 대한 포인터(332B) 및 FV4(317)에 대한 포인터(332D) 및 "OEM" 펌웨어 코드 소유자에 대한 2개의 포인터, 즉 FV3(315)에 대한 포인터(334C) 및 FV5(319)에 대한 포인터(334E)를 포함한다.
액션 3.4에서, "OEM" 펌웨어 코드 소유자(비공개 키(340)의 소유자)는 OEM 펌웨어 이미지(310B)의 후속 갱신들을 허가하기 위해 서명된 토큰(370)을 생성한다. 토큰(370)에 서명함으로써, 비공개 키(340)의 소유자, 즉 "OEM" 펌웨어 코드 소유자는 "OEM" 공개 키(341)를 토큰(370)과 연관시킨다. 토큰(370)은 OEM 펌웨어 이미지(310B)를 갱신하도록 허가되는 엔티티의 공개 키(372) 및 대응하는 공개 키(372)에 의해 갱신될 수 있는 OEM 펌웨어 이미지(310B) 내의 펌웨어 모듈들을 지시하는 액세스 제어 리스트(374)와 같은, 권한이 위임되는 정보를 포함하도록 생성된다. 이 예에서는, Chnl 공개 키(372)의 소유자가 펌웨어 볼륨(FV5 319)을 갱신하는 것을 가능하게 하는 액세스 제어 리스트(374)와 함께 펌웨어 코드 소유자 "Chnl"에 대한 공개 키(372)가 토큰(370)에 포함되었다.
액션 3.5에서, OEM 펌웨어 이미지(310B)가 갱신되기 전에, 토큰(370)에 의해 위임되려고 하는 권한이 검증된다. OEM 펌웨어 이미지(310B)는 표 330B를 참고하여, 토큰(370)에 대한 공개 키(341)의 소유자가 토큰(370) 내에 포함된 펌웨어 볼륨들을 갱신하도록 허가된 것을 보증한다. 이 예에서, 표 330B는 토큰(370)에 대한 공개 키(341)의 소유자("OEM")가 표 330B에 나타나고, 토큰(370)에 대한 공개 키(341)의 소유자("OEM")가 펌웨어 볼륨(FV5 319)을 갱신하기 위한 권한을 갖는 것을 보증하기 위해 참고된다.
액션 3.6에서, 토큰(360)에 대한 공개 키의 소유자 "OEM"이 펌웨어 볼륨(FV5 319)을 갱신하기 위한 권한을 갖는 것을 확인한 후에, FV5(319) 내의 코드를 갱신하여 채널 고객 펌웨어 이미지(310C)를 형성한다. 채널 고객 펌웨어 이미지(310C) 내의 표 330C도 "Chnl" 공개 키(335)와 같은 펌웨어 코드 소유자에 대한 공개 키 및 대응하는 액세스 제어 리스트(ACL; 336)를 포함하도록 갱신된다. 표 330C에 대한 갱신의 결과로서, 이제 액세스 제어 리스트는 "루트" 펌웨어 코드 소유자에 대한 3개의 포인터, 즉 FV1(311)에 대한 포인터(332A), FV2(313)에 대한 포인터(332B) 및 FV4(317)에 대한 포인터(332D); "OEM" 펌웨어 코드 소유자에 대한 하나의 포인터, 즉 FV3(315)에 대한 포인터(334C); 및 "Chnl" 펌웨어 코드 소유자에 대한 하나의 포인터, 즉 FV5(319)에 대한 포인터(336E)를 포함한다.
도 4는 본 발명의 일 실시예에 따른 도 2a 내지 2f 및 도 3의 서명된 펌웨어 이미지에 대한 액세스 제어 리스트를 갱신하기 위한 방법의 흐름도이다. 도 4에서 설명되는 단계들은 서명된 펌웨어 이미지를 갱신하기 위한 권한을 다른 엔티티에게 위임하기 위해 도 3의 서명된 루트 펌웨어 이미지(310A)와 같은 기존 펌웨어 이미지의 소유자에 의해 수행된다. 펌웨어 이미지를 갱신하기 위한 권을 위임하는 엔티티는 여기서 "위임 엔티티"로서 참조된다. 도 2a 내지 2f의 이전 예에서, 도 4에 설명되는 단계들은 액션들 3.2 및 3.3에서 "OEM" 펌웨어 코드 소유자에게 권한을 위임하기 위해 "루트" 펌웨어 코드 소유자에 의해 수행될 것이다. 유사하게, 도 4의 단계들은 액션들 3.5 및 3.6에서 "Chnl" 펌웨어 코드 소유자에게 권한을 위임하기 위해 "OEM" 펌웨어 코드 소유자에 의해 수행될 것이다. 도 4의 단계들은 루트 펌웨어 이미지(310A)의 액세스 제어 리스트(330A) 또는 OEM 펌웨어 이미지(310B)의 액세스 제어 리스트(330B)와 같은 기존 펌웨어 이미지의 액세스 제어 리스트를 갱신하도록 동작할 것이다.
"액세스 제어(AC) 포워드 토큰 취득" 단계 410에서, 도 3의 토큰(360) 또는 토큰(370)과 같은 액세스 제어 토큰이 위임 엔티티로부터 취득된다. 도 2a 내지 2f 및 도 3과 관련하여 전술한 바와 같이, 도 3의 토큰(360) 또는 토큰(370)과 같은 액세스 제어 토큰은 배포 채널 내의 하나의 엔티티에 의해 배포 채널 내의 후속 엔티티에게 펌웨어 이미지의 주어진 버전을 변경하도록 허가하기 위해 생성될 수 있다. 액세스 제어 토큰은 위임 엔티티의 비공개 키를 이용하여 서명되며, 따라서 위임 엔티티의 공개 키는 액세스 제어 토큰과 연관된다. 액세스 제어 토큰이 배포 채널 내의 위임 엔티티로부터 얻어지면, 제어는 "위임 엔티티를 식별하고, 위임 엔티티의 공개 키의 시그니처와 ACL을 매칭시키는" 단계 420으로 진행한다.
"위임 엔티티를 식별하고, 위임 엔티티의 공개 키의 시그니처와 ACL을 매칭시키는" 단계 420에서, 위임 엔티티는 액세스 제어 토큰에 서명한 엔티티로서 식별된다. 도 3의 예에서, 액션 3.2를 수행하는 시점에서, 위임 엔티티는 "루트" 펌웨어 코드 소유자이다. 액세스 제어 토큰과 관련된 공개 키는 갱신 권한이 위임될 펌웨어 이미지의 액세스 제어 리스트 내에 나타나는 공개 키들과 매칭된다. 액세스 제어 토큰과 관련된 공개 키가 펌웨어 이미지의 액세스 제어 리스트 내에 나타나는 경우, 제어는 "AC 포워드 토큰의 시그니처를 검증하는" 단계 430으로 진행한다.
"AC 포워드 토큰의 시그니처를 검증하는" 단계 430에서, 위임 엔티티에 대한 공개 키를 이용하여, 액세스 제어 토큰의 시그니처를 검증한다. 이러한 시그니처 검증을 수행하기 위해, 서명된 액세스 제어 토큰으로부터 해시 값이 계산될 수 있다. 공개 키는 디지털 시그니처 및 서명된 데이터를 해독하는 데에도 사용될 수 있으며, 이어서 해독된 데이터로부터 다른 해시 값이 계산될 수 있다. 2개의 계산된 해시 값이 매칭되는 경우, 디지털 시그니처는 유효한 것으로 간주될 수 있다. 액세스 제어 토큰의 시그니처가 검증된 후, 제어는 "ACL에 대한 변경을 필요로 하는 코드 모듈들을 식별하는" 단계 440으로 진행한다.
"ACL에 대한 변경을 필요로 하는 코드 모듈들을 식별하는" 단계 440에서, 권한이 위임될 펌웨어 볼륨들이 식별된다. 액 3.2의 예에서, 액세스 제어 토큰(360)에서 식별된 펌웨어 볼륨들은 펌웨어 볼륨들 FV3(315) 및 FV5(319)이었다. 펌웨어 볼륨들이 식별되면, 제어는 "위임 엔티티가 AC를 변경하도록 허가됨을 검증하는" 단계 450으로 진행한다.
"위임 엔티티가 AC를 변경하도록 허가됨을 검증하는" 단계 450에서, 위임 엔티티가 기존 펌웨어 이미지의 액세스 제어 리스트를 변경하도록 허가되는지를 결정한다. 전술한 바와 같이, 위임 엔티티, 즉 "루트" 펌웨어 코드 소유자는 펌웨어 볼륨들 FV1(311) 내지 FV5(319)에 대한 액세스 제어 리스트의 소유자로서 지정되었다. 결과적으로, 위임 엔티티는 이러한 펌웨어 볼륨들에 대한 액세스 제어 리스트를 변경하도록 허가된다. 이어서, 제어는 "ACL을 갱신: 즉 새로운 엔티티의 공개 키를 입력하고, 코드 모듈들에 대한 ACL들을 갱신하는" 단계 460으로 진행한다.
"ACL을 갱신: 즉 새로운 엔티티의 공개 키를 입력하고, 코드 모듈들에 대한 ACL들을 갱신하는" 단계 460에서, 권한을 위임받는 엔티티, 이 예에서는 "OEM" 펌웨어 코드 소유자에 대한 공개 키가 액세스 제어 리스트에 추가되고, 펌웨어 볼륨들 FV3(315) 및 FV5(319)에 대한 액세스 제어 리스트들이 갱신된다. 펌웨어 볼륨들 FV3(315) 및 FV5(319)에 대한 갱신들을 위한 권한은 "OEM" 펌웨어 코드 소유자에게 위임되었다.
도 5는 본 발명의 일 실시예에 따른 도 2a 내지 2f 및 도 3의 서명된 펌웨어 이미지를 갱신하기 위한 방법의 흐름도이다. "서명된 모듈을 처리하는" 단계 510에서, 루트 펌웨어 이미지(310A)와 같은 기존 펌웨어 이미지가 서명된 모듈을 처리하기 위한 요청을 수신한다. 서명된 모듈의 처리는 서명된 모듈에 포함된 펌웨어 볼륨들의 수와 같은 정보를 언랩핑하고 그리고/또는 서명된 모듈에 서명하는 데 사용되는 키를 언랩핑하는 것을 포함할 수 있다. 각각의 서명된 코드 모듈은 도 5의 단계들에 따라 처리될 것이다. 제어는 "공개 키의 시그니처와 ACL을 매칭시키고, 갱신 엔티티를 식별하는" 단계 520으로 진행한다.
"공개 키의 시그니처와 ACL을 매칭시키고, 갱신 엔티티를 식별하는" 단계 520에서, 서명된 모듈에 서명하는 데 사용된 비공개 키에 대응하는 공개 키가 기존 펌웨어 이미지의 액세스 제어 리스트와 비교되며, 갱신 엔티티가 식별된다. 서명된 모듈에 대한 공개 키가 기존 펌웨어 이미지의 액세스 제어 리스트에 나타나는 경우, 제어는 "모듈의 시그니처를 검증하는" 단계 530으로 진행한다.
"모듈의 시그니처를 검증하는" 단계 530에서, 모듈의 시그니처가 검증된다. 이러한 시그니처 검증을 수행하기 위하여, 서명된 모듈로부터 해시 값이 계산될 수 있다. 공개 키는 디지털 시그니처 및 서명된 데이터를 해독하는 데에도 사용될 수 있으며, 이어서 해독된 데이터로부터 다른 해시 값이 계산될 수 있다. 2개의 계산된 해시 값이 매칭되는 경우, 디지털 시그니처는 유효한 것으로 간주될 수 있다. 모듈의 시그니처가 검증된 경우, 제어는 "갱신할 코드 모듈들을 식별하는" 단계 540으로 진행한다.
"갱신할 코드 모듈들을 식별하는" 단계 540에서, 기존 펌웨어 이미지에서 갱신될 펌웨어 볼륨들 내의 코드 모듈들이 식별된다. 펌웨어 볼륨들 내의 코드 모듈들이 식별되면, 제어는 "갱신 엔티티가 요청된 코드 모듈들을 갱신하도록 허가됨을 검증하는" 단계 550으로 진행한다.
"갱신 엔티티가 요청된 코드 모듈들을 갱신하도록 허가됨을 검증하는" 단계 550에서, 갱신 엔티티가 요청된 펌웨어 볼륨들을 갱신하도록 허가되는지를 결정한다. 갱신 엔티티가 허가되는 경우, 제어는 "코드 모듈들을 갱신하는" 단계 560으로 진행한다. "코드 모듈들을 갱신하는" 단계 560에서, 기존 펌웨어 이미지 내의 코드 모듈들이 갱신된다.
도 6은 본 발명의 일 실시예에 따른 다수의 코드 소유자에 의해 펌웨어 이미지들이 서명되는 것을 가능하게 하도록 구성되는 시스템의 블록도이다. 호스트 컴퓨터 시스템에 대응하는 플랫폼(600)은 데스크탑 관리 인터페이스(DMI; 611)를 통해 칩셋(620)에 접속되는 프로세서(610)를 포함한다. 프로세서(610)는 플랫폼(600)에 처리 능력을 제공하고, 단일 코어 또는 멀티 코어 프로세서일 수 있으며, 둘 이상의 프로세서가 플랫폼(600) 내에 포함될 수 있다. 프로세서(610)는 하나 이상의 시스템 버스, 통신 경로 또는 매체(도시되지 않음)를 통해 플랫폼(600)의 다른 컴포넌트들에 접속될 수 있다.
칩셋(620)은 플랫폼(600)의 구성 및 동작을 관리하기 위해 호스트 프로세서(610)와 무관하게 동작하는 내장 마이크로프로세서로서 구현될 수 있는 관리성 엔진(ME; 630)을 포함한다. 일 실시예에서, 프로세서(610)는 호스트 운영 시스템(도시되지 않음)의 관리하에 동작하는 반면, 관리성 엔진(ME; 630)은 호스트 운영 시스템이 액세스할 수 없는 안전하고 격리된 환경을 제공한다. 일 실시예에서, 관리성 엔진(ME; 630)은 사용자들을 인증하고, 주변 장치들에 대한 액세스를 제어하고, 플랫폼(600)의 저장 장치들에 저장된 데이터의 보호를 위한 암호화 키들을 관리하며, 네트워크 제어기(660)를 통해 기업 서비스들(670)에 대한 인터페이스를 제공한다. 기업 서비스들(670)을 이용하여, 관리성 엔진(ME; 630)은 본 발명의 일 실시예에 따른 다중 소유자 서명된 펌웨어 갱신 관리자의 제공을 포함하는, 플랫폼(600)과 같은 플랫폼들의 구성 및 관리를 위한 전사적 정책들과의 일관성을 유지한다. 다중 소유자 서명된 펌웨어 갱신 관리자는 관리성 엔진(ME; 630)에 의해 실행되는 펌웨어로서 구현될 수 있다.
ME(630)와 기업 서비스들(670) 사이의 통신은 대역외 통신 채널(671)을 통해 이루어진다. 일 실시예에서, 대역외 통신 채널(671)은 호스트 시스템 상의 관리성 엔진(ME; 630)과 호스트 시스템을 관리하는 기업 서비스들(670) 사이의 안전한 통시 채널이다. 플랫폼(600)과 기업 서비스들(670) 사이의 안전한 통신을 가능하게 하는 암호/해독 키들은 칩셋(620) 및 관리성 엔진(ME; 630)의 제조 동안에 도 6의 플래시 메모리(690)에 저장될 수 있다.
도 6에 도시된 실시예에서, 관리성 엔진(ME; 630)은 관리성 엔진 제어기 인터페이스(MECI; 631)를 통해 마이크로컨트롤러(640)에 결합된다. 일 실시예에서, 마이크로컨트롤러(640)는 저장 명령 디코딩 및 다른 가속화된 동작들을 수행하는 범용 제어기이다. 도시된 실시예에서, 관리성 엔진(ME; 630)은 마이크로컨트롤러(640)의 거동을 제어하며, 또한 마이크로컨트롤러는 저장 제어기(650)의 거동을 제어한다. 마이크로컨트롤러(640)는 저장 제어기(650)에 대한 드라이버들은 물론, 임의의 디스크 암호화 기능에 관한 논리도 포함한다. 저장 제어기(650)는 저장 장치(652)와 같은 저장 장치들에 대한 제어기이며, 마이크로컨트롤러(640) 및 ME(630)가 저장 장치(652)에 저장된 데이터에 액세스하는 것을 가능하게 한다.
플랫폼(600)은 동적 랜덤 액세스 메모리(DRAM; 612), 칩셋(620) 내의 정적 랜덤 액세스 메모리(SRAM; 622), 및 플래시 메모리(690)와 같은 메모리 장치들은 물론, 저장 제어기(650)를 통해 액세스 가능한 저장 장치(652)도 포함한다. 이러한 메모리 장치들은 랜덤 액세스 메모리(RAM) 및 판독 전용 메모리(ROM)를 포함할 수 있다. 본 개시의 목적으로, "ROM"이라는 용어는 일반적으로 소거 및 프로그래밍 가능한 ROM(EPROM), 전기적으로 소거 및 프로그래밍 가능한 ROM(EEPROM), 플래시 ROM, 플래시 메모리 등과 같은 비휘발성 메모리 장치를 지칭하는 데 사용될 수 있다. 저장 장치(652)는 통합 드라이브 전자 장치(IDE) 하드 드라이브 및/또는 플로피 디스크, 광학 저장 장치, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 저장 장치 등과 같은 다른 장치 또는 매체와 같은 대용량 저장 장치를 포함할 수 있다.
플래시 메모리(690)는 플래시 인터페이스(691)를 통해 칩셋(620)에 의해 액세스될 수 있다. 저장 장치(652) 및/또는 메모리 장치들 DRAM(612), SRAM(622) 및 플래시 메모리(690)에 저장된 데이터는 암호화될 수 있다.
플래시 메모리(690)는 플랫폼(600)을 초기화하는 데 사용되는 펌웨어를 포함한다. 이러한 초기화 펌웨어는 (비디오 디스플레이 카드 및 하드 디스크와 같은) 시스템 컴포넌트 하드웨어 및 관리성 엔진(ME; 630)을 포함하는 소정의 다른 하드웨어 장치들을 식별하고 초기화하기 위한 기본 입출력 시스템(BIOS) 펌웨어(692)를 포함한다. BIOS 펌웨어(692)는 플랫폼(600)의 시스템 컴포넌트 하드웨어를 공지된 저능력 상태에서 동작하도록 준비하며, 따라서 운영 시스템을 포함하는 다양한 매체 상에 저장된 다른 소프트웨어 프로그램들은 플랫폼(600)에 로딩되고, 실행되고, 플랫폼의 제어를 받을 수 있다. BIOS 펌웨어(692)는 부트 프로세스 동안에 관리성 엔진(ME; 630)의 초기 구성을 가능하게 하는 BIOS/ME 통신 모듈(693)을 포함한다. 일 실시예에서, 관리성 엔진(ME; 630)은 운영 시스템이 플랫폼(600)에 로딩되기 바로 전에 통지를 수신하기 위하여 BIOS/ME 통신 모듈(693)에 등록한다. 이 통지는 관리성 엔진(ME; 630)이 운영 시스템의 로딩을 준비하기 위해 소정의 명령어들을 수행할 수 있게 한다.
플래시 메모리(690)는 네트워크 제어기(660)를 구성하기 위한 네트워크 제어기 펌웨어(695) 및 칩셋(620)을 구성하기 위한 칩셋 펌웨어(696)를 더 포함한다. 플래시 메모리(690)는 데이터 영역(698)을 더 포함한다. 일 실시예에서, 데이터 영역(698)은 암호화되며, 관리성 엔진(ME; 630)에 의해서만 판독될 수 있다. BIOS/부트 펌웨어 다중 소유자 관리 서비스들을 제공하기 위해 ME(630)에 의해 사용되는 정보는 플래시 메모리(690)의 데이터 영역(698)에 또는 저장 장치(652)에 저장될 수 있다.
프로세서(610)는 비디오 제어기, 소형 컴퓨터 시스템 인터페이스(SCSI) 제어기, 네트워크 제어기, 유니버설 직렬 버스(USB) 제어기, 키보드 및 마우스와 같은 입력 장치 등과 같은 추가 컴포넌트들에 통신 결합될 수도 있다. 플랫폼(600)은 다양한 시스템 컴포넌트들을 통신 결합하기 위한 메모리 제어기 허브, 입출력(I/O) 제어기 허브, PCI 루트 브리지 등과 같은 하나 이상의 브리지 또는 허브도 포함할 수 있다. 본 명세서에서 사용될 때, "버스"라는 용어는 공유 통신 경로들은 물론, 점대점 경로들을 지칭하는 데 사용될 수 있다.
예를 들어, 네트워크 제어기(660)와 같은 일부 컴포넌트들은 버스와 통신하기 위한 인터페이스들(예를 들어, PCI 커넥터)을 갖는 어댑터 카드로서 구현될 수 있다. 일 실시예에서, 하나 이상의 장치는 프로그래밍 가능하거나 가능하지 않은 논리 장치 또는 어레이, 주문형 집적 회로(ASIC), 내장 컴퓨터, 스마트 카드 등과 같은 컴포넌트들을 이용하여 내장 제어기로서 구현될 수 있다.
본 명세서에서 사용될 때, "처리 시스템" 및 "데이터 처리 시스템"이라는 용어들은 단일 기계, 또는 함께 동작하는 통신 결합된 기계들 또는 장치들의 시스템을 넓게 포함하는 것을 의도한다. 예시적인 처리 시스템들은 분산 컴퓨팅 시스템, 수퍼컴퓨터, 고성능 컴퓨팅 시스템, 컴퓨팅 클러스터, 메인프레임 컴퓨터, 미니 컴퓨터, 클라이언트-서버 시스템, 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 랩탑 컴퓨터, 타블렛, 전화, 개인용 휴대 단말기(PDA), 핸드헬드 장치, 오디오 및/또는 비디오 장치와 같은 엔터테인먼트 장치, 및 정보를 처리 또는 전송하기 위한 다른 장치를 포함하지만 이에 한정되지 않는다.
플랫폼(600)은 키보드, 마우스 등과 같은 통상의 입력 장치들로부터의 입력에 의해 그리고/또는 다른 기계로부터 수신되는 명령들, 바이오메트릭 피드백 또는 다른 입력 소스 또는 신호에 의해 적어도 부분적으로 제어될 수 있다. 플랫폼(600)은 네트워크 인터페이스 제어기(NIC; 660), 모뎀 또는 다른 통신 포트 또는 결합 등을 통해 하나 이상의 원격 데이터 처리 시스템(도시되지 않음)에 대한 하나 이상의 접속을 이용할 수 있다.
플랫폼(600)은 근거리 네트워크(LAN), 광역 네트워크(WAN), 인트라넷, 인터넷 등과 같은 물리 및/또는 논리 네트워크를 통해 다른 처리 시스템들(도시되지 않음)에 상호접속될 수 있다. 네트워크를 수반하는 통신들은 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 및/또는 무선 단거리 또는 장거리 캐리어들 및 프로토콜들을 이용할 수 있다.
여기에 개시되는 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 또는 그러한 구현 접근법들의 조합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그래밍 가능한 시스템들 상에서 실행되는 컴퓨터 프로그램들로서 구현될 수 있다.
프로그램 코드는 여기에 설명되는 기능들을 수행하고 출력 정보를 생성하기 위해 입력 데이터에 인가될 수 있다. 본 발명의 실시예들은 여기에 설명되는 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는 HDL과 같은, 본 발명의 동작들을 수행하기 위한 명령어들을 포함하거나 설계 데이터를 포함하는 기계 액세스 가능 매체도 포함한다. 이러한 실시예들은 프로그램 제품으로도 지칭될 수 있다.
그러한 기계 액세스 가능 저장 매체들은 하드 디스크, 플로피 디스크, 광 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 재기입 가능 컴팩트 디스크(CD-RW) 및 광자기 디스크를 포함하는 임의의 다른 타입의 디스크, 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍 가능한 판독 전용 메모리(EPROM), 플래시 프로그래밍 가능 메모리(FLASH), 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM), 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 다른 타입의 매체와 같은 저장 매체들을 포함하는 기계 또는 장치에 의해 제조 또는 형성되는 파티클들의 유형 배열들을 포함할 수 있지만, 이에 한정되지 않는다.
출력 정보는 하나 이상의 출력 장치에 공지 방식으로 인가될 수 있다. 본 출원의 목적으로, 처리 시스템은 예를 들어 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 집적 회로(ASIC) 또는 마이크로프로세서와 같은 프로세서를 구비한 임의의 시스템을 포함한다.
프로그램들은 처리 시스템과 통신하기 위해 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램들은 필요한 경우에 어셈블리 또는 기계 언어로도 구현될 수 있다. 사실상, 여기에 설명되는 메커니즘들은 그 범위가 임의의 특정 프로그래밍 언어로 한정되지 않는다. 어느 경우에나, 언어는 컴파일되거나 해석되는 언어일 수 있다.
다중 소유자 서명된 펌웨어를 전개하기 위한 방법들 및 시스템들의 실시예들이 본 명세서에 제공된다. 본 발명의 특정 실시예들이 도시되고 설명되었지만, 첨부된 청구항들의 범위로부터 벗어나지 않고 다양한 변경, 변형 및 개량이 이루어질 수 있다는 것이 이 분야의 기술자들에게 명백할 것이다. 따라서, 이 분야의 기술자는 본 발명으로부터 벗어나지 않고 그의 더 넓은 양태들에서 변경들 및 개량들이 이루어질 수 있다는 것을 인식할 것이다. 첨부된 청구항들은 본 발명의 진정한 범위 및 사상 안에 있는 그러한 모든 변경, 변형 및 개량을 그들의 범위 내에 포함한다.

Claims (15)

  1. 적어도 제1 코드 소유자에 의해 서명된 제1 코드 모듈 및 액세스 제어 리스트를 포함하는 서명된 펌웨어 이미지를 취득하는 단계 - 상기 액세스 제어 리스트는 상기 제1 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가함 - ;
    상기 제1 코드 모듈에 대한 갱신된 코드를 포함하는 갱신된 제1 코드 모듈 및 상기 제1 코드 모듈을 갱신하는 권한을 상기 제1 코드 소유자로부터 제2 코드 소유자로 위임하는 갱신된 액세스 제어 리스트를 취득하는 단계;
    상기 갱신된 제1 코드 모듈이 상기 제2 코드 소유자에 의해 서명되고, 상기 제2 코드 소유자가 상기 갱신된 액세스 제어 리스트에 적어도 부분적으로 기초하여 갱신하도록 허가된 것을 검증하는 단계; 및
    상기 갱신된 제1 코드 모듈이 상기 제2 코드 소유자에 의해 서명되고, 상기 제2 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 것에 응답하여, 상기 갱신된 제1 코드 모듈을 이용하여 상기 서명된 펌웨어 이미지를 갱신하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 삭제
  3. 제1항에 있어서,
    액세스 제어 토큰을 취득하는 단계 - 상기 액세스 제어 토큰은 상기 제2 코드 소유자에 대한 공개 키 및 상기 서명된 펌웨어 이미지의 상기 제1 코드 모듈을 갱신하기 위한 상기 제2 코드 소유자에 대한 허가를 포함함 -;
    상기 액세스 제어 토큰이 상기 액세스 제어 리스트로부터 허가된 코드 소유자에 의해 서명된 것을 검증하는 단계;
    상기 허가된 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 단계; 및
    상기 제2 코드 소유자에 대한 공개 키 및 상기 제1 코드 모듈을 갱신하기 위한 상기 제2 코드 소유자에 대한 허가를 포함하도록 상기 액세스 제어 리스트를 갱신하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 서명된 펌웨어 이미지를 갱신하기 전에 상기 제1 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 단계를 더 포함하는 컴퓨터 구현 방법.
  6. 적어도 제1 코드 소유자에 의해 서명된 제1 코드 모듈 및 액세스 제어 리스트를 포함하는 서명된 펌웨어 이미지를 취득하기 위한 수단 - 상기 액세스 제어 리스트는 상기 제1 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가함 - ;
    상기 제1 코드 모듈에 대한 갱신된 코드를 포함하는 갱신된 제1 코드 모듈 및 상기 제1 코드 모듈을 갱신하는 권한을 상기 제1 코드 소유자로부터 제2 코드 소유자로 위임하는 갱신된 액세스 제어 리스트를 취득하기 위한 수단;
    상기 갱신된 제1 코드 모듈이 상기 제2 코드 소유자에 의해 서명되고, 상기 제2 코드 소유자가 상기 갱신된 액세스 제어 리스트에 적어도 부분적으로 기초하여 갱신하도록 허가된 것을 검증하기 위한 수단; 및
    상기 갱신된 제1 코드 모듈이 상기 제2 코드 소유자에 의해 서명되고, 상기 제2 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 것에 응답하여, 상기 갱신된 제1 코드 모듈을 이용하여 상기 서명된 펌웨어 이미지를 갱신하기 위한 수단
    을 포함하는 시스템.
  7. 삭제
  8. 제6항에 있어서,
    액세스 제어 토큰을 수신하기 위한 수단 - 상기 액세스 제어 토큰은 상기 제2 코드 소유자에 대한 공개 키 및 상기 서명된 펌웨어 이미지의 상기 제1 코드 모듈을 갱신하기 위한 상기 제2 코드 소유자에 대한 허가를 포함함 -;
    상기 액세스 제어 토큰이 상기 액세스 제어 리스트로부터 허가된 코드 소유자에 의해 서명된 것을 검증하기 위한 수단;
    상기 허가된 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하기 위한 수단; 및
    상기 제2 코드 소유자에 대한 공개 키 및 상기 제1 코드 모듈을 갱신하기 위한 상기 제2 코드 소유자에 대한 허가를 포함하도록 상기 액세스 제어 리스트를 갱신하기 위한 수단
    을 더 포함하는 시스템.
  9. 삭제
  10. 제6항에 있어서,
    상기 서명된 펌웨어 이미지를 갱신하기 전에 상기 제1 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하기 위한 수단을 더 포함하는 시스템.
  11. 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체로서,
    상기 명령어들은 처리 시스템에서 실행될 때 상기 처리 시스템으로 하여금,
    적어도 제1 코드 소유자에 의해 서명된 제1 코드 모듈 및 액세스 제어 리스트를 포함하는 서명된 펌웨어 이미지를 취득하는 단계 - 상기 액세스 제어 리스트는 상기 제1 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가함 - ;
    상기 제1 코드 모듈에 대한 갱신된 코드를 포함하는 갱신된 제1 코드 모듈 및 상기 제1 코드 모듈을 갱신하는 권한을 상기 제1 코드 소유자로부터 제2 코드 소유자로 위임하는 갱신된 액세스 제어 리스트를 취득하는 단계;
    상기 갱신된 제1 코드 모듈이 상기 제2 코드 소유자에 의해 서명되고, 상기 제2 코드 소유자가 상기 갱신된 액세스 제어 리스트에 적어도 부분적으로 기초하여 갱신하도록 허가된 것을 검증하는 단계; 및
    상기 갱신된 제1 코드 모듈이 상기 제2 코드 소유자에 의해 서명되고, 상기 제2 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 것에 응답하여, 상기 갱신된 제1 코드 모듈을 이용하여 상기 서명된 펌웨어 이미지를 갱신하는 단계
    를 포함하는 동작들을 수행하게 하는 컴퓨터 판독 가능 저장 매체.
  12. 삭제
  13. 제11항에 있어서,
    상기 명령어들은 상기 처리 시스템으로 하여금,
    액세스 제어 토큰을 수신하는 단계 - 상기 액세스 제어 토큰은 상기 제2 코드 소유자에 대한 공개 키 및 상기 서명된 펌웨어 이미지의 상기 제1 코드 모듈을 갱신하기 위한 상기 제2 코드 소유자에 대한 허가를 포함함 -;
    상기 액세스 제어 토큰이 상기 액세스 제어 리스트로부터 허가된 코드 소유자에 의해 서명된 것을 검증하는 단계;
    상기 허가된 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 단계; 및
    상기 제2 코드 소유자에 대한 공개 키 및 상기 제1 코드 모듈을 갱신하기 위한 상기 제2 코드 소유자에 대한 허가를 포함하도록 상기 액세스 제어 리스트를 갱신하는 단계
    를 포함하는 동작들을 더 수행하게 하는 컴퓨터 판독 가능 저장 매체.
  14. 삭제
  15. 제11항에 있어서,
    상기 명령어들은 상기 처리 시스템으로 하여금, 상기 서명된 펌웨어 이미지를 갱신하기 전에 상기 제1 코드 소유자가 상기 제1 코드 모듈을 갱신하도록 허가된 것을 검증하는 단계를 포함하는 동작들을 더 수행하게 하는 컴퓨터 판독 가능 저장 매체.
KR1020110056330A 2010-06-11 2011-06-10 펌웨어 이미지들의 다중 소유자 전개 KR101312832B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/814,246 US8566613B2 (en) 2010-06-11 2010-06-11 Multi-owner deployment of firmware images
US12/814,246 2010-06-11

Publications (2)

Publication Number Publication Date
KR20110138165A KR20110138165A (ko) 2011-12-26
KR101312832B1 true KR101312832B1 (ko) 2013-09-27

Family

ID=44337607

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110056330A KR101312832B1 (ko) 2010-06-11 2011-06-10 펌웨어 이미지들의 다중 소유자 전개

Country Status (9)

Country Link
US (1) US8566613B2 (ko)
EP (1) EP2395449B1 (ko)
JP (1) JP5301609B2 (ko)
KR (1) KR101312832B1 (ko)
CN (2) CN102289627B (ko)
HK (1) HK1165038A1 (ko)
RU (1) RU2510952C2 (ko)
SG (1) SG176870A1 (ko)
WO (1) WO2011156738A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images
US8428929B2 (en) 2010-09-30 2013-04-23 Intel Corporation Demand based USB proxy for data stores in service processor complex
US8924737B2 (en) * 2011-08-25 2014-12-30 Microsoft Corporation Digital signing authority dependent platform secret
CN103777971A (zh) * 2012-10-23 2014-05-07 新加坡商华科国际股份有限公司 电子装置、更新固件的方法与电脑可读取记录媒体
KR101416381B1 (ko) 2012-12-17 2014-08-06 현대자동차 주식회사 펌웨어 업데이트 시스템 및 방법
US9160542B2 (en) 2013-03-18 2015-10-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Authorizing use of a test key signed build
GB2515536A (en) * 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
US9524390B2 (en) 2014-09-09 2016-12-20 Dell Products, Lp Method for authenticating firmware volume and system therefor
WO2016076880A1 (en) 2014-11-14 2016-05-19 Hewlett Packard Enterprise Development Lp Secure update of firmware and software
CN104636140B (zh) * 2015-01-29 2018-05-29 小米科技有限责任公司 固件压缩方法、固件解压方法和装置
KR101782378B1 (ko) * 2016-11-03 2017-09-27 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
US10872155B2 (en) * 2016-11-16 2020-12-22 Samsung Electronics Co., Ltd. Computing system for managing firmware and firmware managing method thereof
US10489594B2 (en) 2017-07-19 2019-11-26 Dell Products, Lp System and method for secure migration of virtual machines between host servers
US10551814B2 (en) * 2017-07-20 2020-02-04 Fisher-Rosemount Systems, Inc. Generic shadowing in industrial process plants
DE102017219188A1 (de) * 2017-10-26 2019-05-02 Robert Bosch Gmbh Verfahren zum Aktualisieren von Softwarekomponenten eines Netzwerkteilnehmers eines Netzwerks
US11170105B2 (en) 2019-02-28 2021-11-09 International Business Machines Corporation Verifying updates based on update behavior-based profiles
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
US20220129259A1 (en) * 2020-10-26 2022-04-28 Micron Technology, Inc. Endpoint Customization via Online Firmware Store
CN116964580A (zh) * 2021-02-24 2023-10-27 谷歌有限责任公司 数字设备的可信计算
CN117494079B (zh) * 2023-12-25 2024-03-26 飞腾信息技术有限公司 一种镜像权转移方法、安全启动方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125652A1 (en) 2003-12-04 2005-06-09 Singer Matthew D. BIOS update file
KR20050061353A (ko) * 2003-12-16 2005-06-22 마이크로소프트 코포레이션 소프트웨어 업데이트가 특정 디바이스 또는 특정 클래스의디바이스들 상에서만 설치 또는 실행될 수 있을 것을보장하는 방법 및 시스템
KR20070064872A (ko) * 2005-12-19 2007-06-22 엘지전자 주식회사 케이블 방송의 소프트웨어 수신방법
US20070300068A1 (en) 2006-06-21 2007-12-27 Rudelic John C Method and apparatus for flash updates with secure flash

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US7069452B1 (en) 2000-07-12 2006-06-27 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
RU2258252C2 (ru) * 2000-07-25 2005-08-10 Макровижн Корпорейшн Система и способ проверки подлинности динамически подключаемых исполняемых образов
KR20030033396A (ko) 2001-10-22 2003-05-01 주식회사 지트랜코리아 무선 단말기의 업그레이드 방법
US7036007B2 (en) 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7644288B2 (en) * 2003-03-19 2010-01-05 Ricoh Company, Ltd. Image forming apparauts that checks authenticity of an update program
JP2004303209A (ja) 2003-03-19 2004-10-28 Ricoh Co Ltd 画像形成装置、プログラム更新方法、及び更新用記憶媒体
US20050262497A1 (en) * 2004-05-19 2005-11-24 Microsoft Corporation System and method for generating embedded resource updates for output device
JP2006058995A (ja) 2004-08-18 2006-03-02 Nippon Telegr & Teleph Corp <Ntt> アクセス権限設定装置、方法およびシステム
US7730326B2 (en) 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
US8464348B2 (en) * 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
US20070294404A1 (en) * 2006-06-15 2007-12-20 International Business Machines Corporation Method and system for authorization and access control delegation in an on demand grid environment
US7770165B2 (en) 2006-08-25 2010-08-03 Microsoft Corporation Providing firmware updates to portable media devices
US20080126854A1 (en) * 2006-09-27 2008-05-29 Anderson Gary D Redundant service processor failover protocol
US8245307B1 (en) * 2006-12-18 2012-08-14 Nvidia Corporation Providing secure access to a secret
JP2008305035A (ja) 2007-06-06 2008-12-18 Hitachi Ltd 装置、更新方法、および制御ソフト。
US8495354B2 (en) 2008-09-24 2013-07-23 Hewlett-Packard Development Company, L.P. Apparatus for determining during a power-on sequence, a value to be written to a first register in a secure area and the same value to a second register in non-secure area, which during a protected mode, the value is compared such that if it is equal, enabling writing to a memory
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125652A1 (en) 2003-12-04 2005-06-09 Singer Matthew D. BIOS update file
KR20050061353A (ko) * 2003-12-16 2005-06-22 마이크로소프트 코포레이션 소프트웨어 업데이트가 특정 디바이스 또는 특정 클래스의디바이스들 상에서만 설치 또는 실행될 수 있을 것을보장하는 방법 및 시스템
KR20070064872A (ko) * 2005-12-19 2007-06-22 엘지전자 주식회사 케이블 방송의 소프트웨어 수신방법
US20070300068A1 (en) 2006-06-21 2007-12-27 Rudelic John C Method and apparatus for flash updates with secure flash

Also Published As

Publication number Publication date
RU2011153332A (ru) 2013-07-10
RU2510952C2 (ru) 2014-04-10
US20110307712A1 (en) 2011-12-15
CN102289627B (zh) 2015-07-29
CN102289627A (zh) 2011-12-21
WO2011156738A2 (en) 2011-12-15
EP2395449B1 (en) 2019-02-13
HK1165038A1 (zh) 2012-09-28
CN102934073A (zh) 2013-02-13
JP2012003758A (ja) 2012-01-05
EP2395449A1 (en) 2011-12-14
JP5301609B2 (ja) 2013-09-25
WO2011156738A3 (en) 2012-04-05
SG176870A1 (en) 2012-01-30
KR20110138165A (ko) 2011-12-26
US8566613B2 (en) 2013-10-22

Similar Documents

Publication Publication Date Title
KR101312832B1 (ko) 펌웨어 이미지들의 다중 소유자 전개
US11741230B2 (en) Technologies for secure hardware and software attestation for trusted I/O
US8909940B2 (en) Extensible pre-boot authentication
US8074262B2 (en) Method and apparatus for migrating virtual trusted platform modules
KR100930218B1 (ko) 소프트웨어 기반 보안 코프로세서를 제공하는 방법, 장치및 처리 시스템
US7577839B2 (en) Transferring application secrets in a trusted operating system environment
US20070204166A1 (en) Trusted host platform
US11416616B2 (en) Secure boot chain for live boot systems
US8984296B1 (en) Device driver self authentication method and system
US9147076B2 (en) System and method for establishing perpetual trust among platform domains
US11106798B2 (en) Automatically replacing versions of a key database for secure boots
US9160542B2 (en) Authorizing use of a test key signed build
US11909882B2 (en) Systems and methods to cryptographically verify an identity of an information handling system
CN116566613A (zh) 使用平台密钥保护与安全处理器的通信
Futral et al. Fundamental principles of intel® txt
US20240037216A1 (en) Systems And Methods For Creating Trustworthy Orchestration Instructions Within A Containerized Computing Environment For Validation Within An Alternate Computing Environment
US20230106491A1 (en) Security dominion of computing device
US20230208651A1 (en) Automatic security authentication for access to management controller
US20230239302A1 (en) Role-based access control for cloud features
US20220121748A1 (en) Modifications to firmware functionality
CN117370983A (zh) 基于云技术的可信执行系统及方法
Proudler et al. Futures for Trusted Computing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160831

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee