KR102048111B1 - 보안 펌웨어 업데이트 기법 - Google Patents

보안 펌웨어 업데이트 기법 Download PDF

Info

Publication number
KR102048111B1
KR102048111B1 KR1020157005237A KR20157005237A KR102048111B1 KR 102048111 B1 KR102048111 B1 KR 102048111B1 KR 1020157005237 A KR1020157005237 A KR 1020157005237A KR 20157005237 A KR20157005237 A KR 20157005237A KR 102048111 B1 KR102048111 B1 KR 102048111B1
Authority
KR
South Korea
Prior art keywords
firmware
update
computing device
hardware resources
boot
Prior art date
Application number
KR1020157005237A
Other languages
English (en)
Other versions
KR20150048136A (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
Priority claimed from US13/597,641 external-priority patent/US9218178B2/en
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20150048136A publication Critical patent/KR20150048136A/ko
Application granted granted Critical
Publication of KR102048111B1 publication Critical patent/KR102048111B1/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

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

Abstract

하드웨어 자원에 대한 보안 펌웨어 업데이트를 정의된 일관성 있는 방식으로 전체적으로 처리하는 펌웨어 업데이트 시스템이 설명된다. 펌웨어 업데이트 시스템은 부팅-전 환경(예컨대, 운영 체제가 로딩되기 전)에서 적어도 일부 펌웨어 업데이트를 처리하도록 구성될 수 있다. 그렇게 함으로써, 펌웨어 업데이트 시스템은 업데이트를 통제하고 공격자에게 노출된 진입점을 줄일 수 있다. 하나의 접근 방법으로, 펌웨어 업데이트 시스템에 의해 관리되는 하드웨어 자원에 대해 업데이트 상태가 정의된다. 부팅-전 환경에서, 관리된 하드웨어 자원에 대한 업데이트 상태는 펌웨어 업데이트를 할 수 있는 것으로 설정된다. 이후에 펌웨어 업데이트 시스템은 관리된 하드웨어 자원이 이용 가능한 펌웨어 업데이트를 탐지하고 적용할 수 있다. 안전한 부팅-전 환경의 외부에서는 관리된 자원들에 대한 펌웨어 업데이트를 하지 못하도록 운영 체제 로딩 전에 업데이트 상태가 사용 불가로 설정된다.

Description

보안 펌웨어 업데이트 기법{SECURE FIRMWARE UPDATES}
컴퓨팅 플랫폼의 다른 하드웨어 자원들(예컨대, 모듈, 컴포넌트, 및 장치들)은 가끔 업데이트가 공개되는 펌웨어를 갖고 있을 수 있다. 전통적으로, IHV(independent hardware vendor)와 OEM(original equipment manufacturer)이 그들 자신의 하드웨어 자원에 대한 펌웨어 업데이트를 처리할 책임이 있다. 따라서, 서로 다른 판매 회사 및 제조 업체들은 업데이트된 펌웨어를 배치하고 적용하기 위해 다른, 독립적인 및/또는 전용 메커니즘을 구축할 수 있고, 이는 일반적으로 부팅-후(post-boot) 환경(예컨대, 운영 체제가 컴퓨팅 플랫폼에서 로딩된 후)에서 동작한다. 이런 다수의 제삼자 메커니즘들은 하드웨어 자원에 부적절한 및/또는 유해한 펌웨어를 주입하는 데 악용될 수 있는 대응 진입점을 제공함으로써 보안상 위협이 될 수 있다. 따라서, 부팅-후 환경에서 사용 가능한 종래의 펌웨어 업데이트는 컴퓨팅 플랫폼을 장악하거나 및/또는 컴퓨팅 플랫폼에 해를 가하도록 사용될 가능성이 있는 보안상 위협을 야기하게 된다.
본 요약은 아래의 상세한 설명에서 추가로 설명되는 개념들의 선택을 단순화된 형식으로 소개하기 위해 제공되었다. 본 요약은 특허청구된 대상의 핵심 특성 또는 중요 특성을 식별하기 위한 것이 아니며, 특허청구된 대상의 범위를 제한하기 위해 사용되기 위한 것도 아니다.
보안 펌웨어 업데이트가 설명된다. 하나 이상의 실시예에서, 하드웨어 자원에 대한 펌웨어 업데이트를 정의된 일관성 있는 방식으로 전체적으로 처리하도록 펌웨어 업데이트 시스템이 구현된다. 펌웨어 업데이트 시스템이 부팅-전 환경(예컨대, 운영 체제가 로딩되기 전)에서 적어도 일부 펌웨어 업데이트를 처리하도록 구성될 수 있다. 그렇게 함으로써, 펌웨어 업데이트 시스템은 업데이트를 통제하고 공격자에게 노출된 진입점을 줄일 수 있다. 하나의 접근 방법으로, 펌웨어 업데이트 시스템에 의해 관리되는 하드웨어 자원에 대해 업데이트 상태가 정의된다. 부팅-전 환경에서, 관리된 하드웨어 자원에 대한 업데이트 상태는 펌웨어 업데이트를 할 수 있는 것으로 설정된다. 이후에 펌웨어 업데이트 시스템은 관리된 하드웨어 자원이 이용 가능한 펌웨어 업데이트를 탐지하고 적용할 수 있다. 업데이트의 적용 후에, 업데이트 상태는 펌웨어 업데이트를 하지 못하게 설정되고 운영 체제가 로딩된다. 로딩된 운영 체제의 실행 환경에서는, 관리된 하드웨어 자원에 대한 펌웨어 업데이트를 하지 못하게 된다.
도 1은 보안 펌웨어 업데이트의 하나 이상의 실시예를 이용할 수 있는 예시적인 운영 환경을 도시한다.
도 2는 하나 이상의 실시예에 따른 장치의 예시적인 자원들을 도시하는 다이어그램이다.
도 3은 하나 이상의 실시예에 따른 예시적인 절차의 세부 사항을 설명하는 순서도이다.
도 4는 하나 이상의 실시예에 따른 다른 예시적인 절차의 세부 사항을 설명하는 순서도이다.
도 5는 하나 이상의 실시예에 따른 또 다른 예시적인 절차의 세부 사항을 설명하는 순서도이다.
도 6은 다양한 실시예를 구현할 수 있는 시스템의 블록도이다.
개관
전통적으로, IHV(independent hardware vendor)와 OEM(original equipment manufacturer)이 그들 자신의 하드웨어 자원에 대한 펌웨어 업데이트를 처리할 책임이 있고, 이는 공격자들이 유해한 펌웨어를 주입하는 데 악용할 수 있는 통제되지 않는 진입점을 노출시킬 수 있다.
보안 펌웨어 업데이트가 설명된다. 하나 이상의 실시예에서, 하드웨어 자원에 대한 펌웨어 업데이트를 정의된 일관성 있는 방식으로 전체적으로 처리하도록 펌웨어 업데이트 시스템이 구현된다. 펌웨어 업데이트 시스템이 부팅-전 환경(예컨대, 운영 체제가 로딩되기 전)에서 적어도 일부 펌웨어 업데이트를 처리하도록 구성될 수 있다. 그렇게 함으로써, 펌웨어 업데이트 시스템은 업데이트를 통제하고 공격자에게 노출된 진입점을 줄일 수 있다. 하나의 접근 방법으로, 펌웨어 업데이트 시스템에 의해 관리되는 하드웨어 자원에 대해 업데이트 상태가 정의된다. 부팅-전 환경에서, 관리된 하드웨어 자원에 대한 업데이트 상태는 펌웨어 업데이트를 할 수 있는 것으로 설정된다. 이후에 펌웨어 업데이트 시스템은 관리된 하드웨어 자원이 이용 가능한 펌웨어 업데이트를 탐지하고 적용할 수 있다. 업데이트의 적용 후에, 업데이트 상태는 펌웨어 업데이트를 하지 못하게 설정되고 운영 체제가 로딩된다. 로딩된 운영 체제의 실행 환경에서는, 관리된 하드웨어 자원에 대한 펌웨어 업데이트를 하지 못하게 된다.
다음의 논의에서, “운영 환경”이라는 제목의 섹션이 제공되고, 이는 하나 이상의 실시예가 이용될 수 있는 어떤 하나의 환경을 설명한다. 그 다음으로, “보안 펌웨어 업데이트 예시”라는 제목의 섹션에서는 하나 이상의 실시예에 따른 예시적인 기법 및 세부 사항을 설명한다. 마지막으로, “예시적인 시스템”이라는 제목의 섹션에서는 하나 이상의 실시예를 구현하기 위해 이용 가능한 예시적인 컴퓨팅 시스템 및 장치를 설명한다.
운영 환경
도 1은 보통 100에서, 하나 이상의 실시예에 따른 운영 환경을 도시한다. 이 환경(100)은 처리 시스템(104), 하나 이상의 컴퓨터 판독 가능 매체(106), 운영 체제(108), 및 컴퓨터 판독 가능 매체에 위치하고 프로세서(들)에 의해 실행 가능한 하나 이상의 애플리케이션(110)을 갖고 있는 컴퓨팅 장치(102)를 포함한다. 처리 시스템(104)은 게임, 업무 생산성, 이메일, 미디어 관리, 인쇄, 네트워킹, 웹-브라우징 등을 포함하는, 그러나 이에 제한되지는 않는 다양한 기능을 컴퓨팅 장치(102)에 제공하기 위해, 애플리케이션(110)에서 컴퓨터-프로그램 인스트럭션을 검색하고 이를 실행하도록 다양한 방식으로 구성될 수 있다. 애플리케이션(110)에 관련된 다양한 데이터 및 프로그램 파일들이 포함될 수도 있고, 그 예로 게임 파일, 사무용 문서, 멀티미디어 파일, 이메일, 데이터 파일, 웹 페이지, 사용자 프로파일 및/또는 선호도 데이터 등이 포함된다.
컴퓨팅 장치(102)는 예를 들어, 그러나 제한 없이, 게임 시스템, 데스크탑 컴퓨터, 휴대용 컴퓨터, 태블릿 또는 슬레이트 컴퓨터, PDA(personal digital assistant)와 같은 핸드헬드 컴퓨터, 휴대 전화, 셋탑 박스 등의 적절한 임의의 컴퓨팅 시스템 및/또는 장치로 구현될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 컴퓨팅 장치(102)는 미디어 컨텐츠를 디스플레이하기 위해 디스플레이 장치(118)에 연결된 텔레비전 클라이언트 장치(112), 컴퓨터(114), 및/또는 게임 시스템(116)으로 구현될 수 있다. 또는, 컴퓨팅 장치는 임의의 유형의 휴대용 컴퓨터, 이동 전화, 휴대용 장치(120), 태블릿 또는 슬레이트 장치(112)일 수 있고, 및/또는 통합 디스플레이를 포함할 수도 있다. 임의의 컴퓨팅 장치는 하나 이상의 프로세서 및 메모리 장치를 비롯한 다양한 컴포넌트들뿐만 아니라, 다른 컴포넌트들의 임의의 조합으로도 구현될 수 있다. 컴퓨팅 장치(102)를 포함하는 다양한 시스템 및/또는 장치들을 표현할 수 있는 컴퓨팅 시스템의 일례가 도 6에 도시되어 있으며 아래에서 설명된다.
예를 들어, 그러나 제한 없이, 컴퓨터 판독 가능 매체는 통상 컴퓨팅 장치와 관련된 모든 형태의 휘발성 및/또는 비휘발성 메모리 및/또는 저장 매체를 포함할 수 있다. 이런 매체에는 ROM, RAM, 플래시 메모리, 하드 디스크, 이동식 매체 등이 포함될 수 있다. 컴퓨터 판독 가능 매체는 “컴퓨터 판독 가능 저장 매체”와 “통신 매체” 모두를 포함할 수 있으며, 그 예는 도 6의 예시적인 컴퓨팅 시스템의 논의에서 찾을 수 있다.
또한 컴퓨팅 장치(102)는 일반적으로 컴퓨팅 장치들에 관련된 다른 컴포넌트들 및 장치들을 나타내는 여러 다른 하드웨어 자원들(124)을 포함할 수 있다. 하드웨어 자원들(124)은 통합 컴포넌트, 이동식 컴포넌트, 및 유선 및/또는 무선 접속을 통해 컴퓨팅 장치(102)에 연결 가능한 외부 주변 장치들을 포함할 수 있다. 하드웨어 자원들(124)의 적어도 일부가 상기에서 그리고 이하에서 설명되는 기법에 따라 업데이트될 수 있는 관련 펌웨어(126)를 갖고 있을 수 있다. 몇몇 예시적인 하드웨어 자원들(124)이 도 2와 관련해서 아래에서 논의된다.
도 1의 컴퓨팅 장치(102)는 또한 컴퓨팅 판독 가능 매체에 배치되고 프로세서(들)에 의해 실행될 수 있는 펌웨어 시스템(128)과 보안 업데이트 모듈(secure update module, 130)을 포함한다. 펌웨어 시스템(128)은 펌웨어 인터페이스를 구현하고, 상기에서 그리고 아래에서 논의되는 바와 같이, 복수의 하드웨어 자원들(124)에 관한 펌웨어 업데이트를 전체적으로 관리하기 위한 다양한 기법을 실행하는 기능을 나타낸다. 펌웨어 시스템(128)은 도 1에 도시된 바와 같이 독립형 컴포넌트로 구현될 수 있다. 또한 펌웨어 시스템(128)은 운영 체제(108)의 통합 컴포넌트로서 구현될 수도 있다.
보안 업데이트 모듈(130)은 상기에서 그리고 아래에서 설명되는 보안 펌웨어 업데이트 기법을 구현하기 위한 기능을 나타낸다. 특히, 보안 업데이트 모듈은 컴퓨팅 장치의 선택된 하드웨어 자원들에 대한 업데이트를 관리할 수 있다. 개략적으로 말하자면, 이는 부팅-전 환경에서의 관리된 하드웨어 자원들에 대한 업데이트 허용, 이용 가능한 펌웨어의 업데이트의 적용이 부팅-전 환경에서 일어나도록 하기 위해 펌웨어 시스템(128)의 호출 및 펌웨어 시스템(128)과의 인터랙션, 및 그 후 OS의 부팅 전에 관리된 하드웨어 자원들에 대한 펌웨어 업데이트의 금지를 포함한다. 이와 같은 방식으로, 관리된 하드웨어 자원들에 대한 펌웨어 업데이트가 보안 업데이트 모듈(130)에 의해 제어되는 안전한 부팅-전 환경의 외부에서는 금지된다. 보안 업데이트 모듈(130)은 도 1에 도시된 바와 같이 독립형 컴포넌트로 구현될 수 있다. 보안 업데이트 모듈(130) 및/또는 펌웨어 시스템(128)과 관련하여 본원에서 설명된 몇몇 기능은 컴퓨팅 장치(102)의 부팅 프로그램(booting program)에 의해 및/또는 운영 체제(108)에 의해 구현될 수 있다.
펌웨어 시스템(128)에서의 펌웨어 업데이트의 관리는 자원의 발견, 및 펌웨어 업데이트 시스템을 통해 펌웨어 업데이트를 얻기 위해 등록되었거나 또는 지정된 특정 자원들에 대한 펌웨어 업데이트의 탐지, 분석, 획득, 분배, 설치, 및 추적을 포함하며, 다만 이에 제한되지는 않는다. 일반적으로 말해서, 시스템에 의한 펌웨어 처리를 위해 지정된 자원들이 식별되고 그 자원들에 대해 이용 가능한 업데이트가 탐지된다. 나아가 펌웨어 시스템(128)은 적절한 형태로 업데이트를 획득하고, 설치를 시작하기 위해 적절한 자원들에 업데이트를 배치/분배하도록 동작할 수 있다. 펌웨어 시스템(128)은 성공 또는 실패를 식별하고, 설치된 펌웨어의 버전 정보를 기록하고, 펌웨어의 롤백(rollback)을 가능하게 하기 위해 업데이트의 추적을 실행할 수도 있다.
이와 같은 방식으로, 펌웨어 시스템(128)과 함께 보안 업데이트 모듈(130)을 통해 부팅-전 환경에서 안전하게 펌웨어 업데이트를 실행할 수 있다. 다른 하드웨어 자원들(124) 및/또는 대응 IHV 및 OEM을 대신하여 전체적으로 펌웨어 업데이트를 관리하도록 구성된 펌웨어 시스템(128)으로 펌웨어 업데이트의 처리가 전가된다. 이후에 보안 업데이트 모듈(130)은 부팅-전 환경의 외부에서 펌웨어 업데이트를 금지하도록 동작한다. 이들 및 그 밖의 다른 양태들은 다음의 도면과 관련하여 보다 상세하게 설명된다.
펌웨어 시스템에 의한 관리를 위해 지정될 수 있는 여러 다른 하드웨어 자원들(124)이 고려된다. 예를 들어, 그러나 제한 없이, 도 2는 보통 200에서 예시적인 컴퓨팅 장치(102)와 관련하여 전형적인 몇몇 하드웨어 자원들(124)을 도시한다. 도 2에 도시된 컴퓨팅 장치(102)는, 본 예시에서 다양한 방식으로 구성 가능한 중앙 처리 장치(CPU, 124(1))로 도시되어 있는, 장치에 대한 특정 처리 시스템, 아키텍처, 및/또는 플랫폼에 연계될 수 있는 시스템 펌웨어(202)를 포함한다. 예를 들어, CPU는 다수의 상이한 통합 하드웨어 컴포넌트들을 단일 칩으로서 포함하도록 구성된 시스템-온-칩(SoC)으로 구현될 수 있다. ARM-기반 및 x86 아키텍처를 포함하는 다른 유형의 CPU 아키텍처도 고려된다. 업데이트 가능한 대응 장치 펌웨어(204)를 갖는 도 2에 도시된 다양한 기타 예시적인 하드웨어 자원들에는 다른 통신 무선 장치(124(2))(예컨대, WiFi, 모바일 브로드밴드, 블루투스, NFC(Near Field Communication) 등), 마이크로프로세서들(124(3)), 센서들(124(4))(예컨대, 카메라, 자이로스코프, 가속도계, GPS, 압력 센서, 근접 센서(proximity sensor) 등), 컨트롤러들(124(4))(예컨대, 터치 컨트롤러, 오디오/비디오 컨트롤러, 메모리 컨트롤러, USB 컨트롤러 등), 및 컴퓨팅 장치의 기타(124(5)) 통합 하드웨어 자원들이 포함된다.
본원에 설명된 보안 펌웨어 업데이트 기법은 대응 인터페이스(208)를 통해 컴퓨팅 장치(102)에 연결 가능한 부속 장치들(206)에도 적용될 수 있다. 유선 및/또는 무선 인터페이스를 통해 연결 가능한 여러 다른 부속 용품들이 고려된다. 부속 장치들(206)은 컴퓨팅 장치(102)의 대응 포트, 베이(bay), 또는 기타 통합 연결 포트에 의해 수신되어 연결되도록 구성된 외부 주변 장치들 및/또는 이동식, 교환 가능한 장치들을 포함한다. 어떤 경우에는 다른 부속 장치들(206)이 컴퓨팅 장치(102)에 연결될 수 있다. 적어도 일부 부속 장치들(206)이 고속 교환 가능한(예컨대, 플러그 앤 플레이) 장치들로 구성된다. 예를 들어, 그러나 제한 없이, 부속 장치들(206)은 입력 장치들(206(1))(예컨대, 키보드, 마우스, 스타일러스 등), 출력 장치들(206(2))(예컨대, 스피커, 헤드셋, 프린트 등), 및 디스플레이 장치들(206(3))뿐만 아니라, 게임 컨트롤러, 전원 어댑터, 음악 부속 장치 등을 비롯한 다양한 기타(206(4)) 장치들을 포함할 수 있다. 부속 장치들(206)은 펌웨어 시스템을 통해 업데이트될 수 있는, 도 2에 도시된 바와 같은 장치들에서 유지되는 관련 펌웨어(204)를 가지고 있을 수 있다.
따라서 각각의 자원은 그 자신의 관련 장치 펌웨어(204)를 갖고 있을 수 있다. 장치 펌웨어(204)에 대한 업데이트가 자원들에 매치되고 통합 및 부속 장치들 모두에 개별적으로 적용될 수 있다. 추가적으로 또는 이를 대신해서, 일부 자원들에 대한 장치 펌웨어(204)는 시스템 펌웨어(202)에 대한 업데이트의 일부로서 결합된 방식으로 업데이트될 수 있다. 예를 들어, 복수의 마이크로프로세서, 컨트롤러, 및 그 밖의 다른 컴포넌트들이 SoC 프로세서 또는 기타 CPU의 일부로서 통합되어 함께 업데이트될 수 있다. 일반적으로 본원에서 설명된 보안 펌웨어 업데이트는 통합 컴포넌트 및 부속 장치 모두를 포함할 수 있는 지정된 하드웨어 자원들의 선택 그룹에 대해 부팅-전 환경에서 선택적으로 적용될 수 있다. 시스템을 통한 관리를 위해 지정된 하드웨어 자원은 다양한 기준에 따라 컴퓨팅 장치의 핵심 컴포넌트로서 선택될 수 있다. 예를 들어, 핵심 컴포넌트 자원들은 컴퓨팅 장치 제조 업체에 의해 개발되거나 또는 컴퓨팅 장치 제조 업체와 밀접하게 관련된 자원들, 파트너 OEM/IHV와 관련된 자원들, 핵심 처리/메모리/디스플레이 컴포넌트와 같이 장치 운영 및 사용자 경험에서 중요하다고 여겨지는 자원들, 및/또는 장치 디자인 및/또는 기본 구성의 일부로서 제공되는 자원들을 포함할 수 있다. SoC 디자인의 통합 컴포넌트는 시스템을 통한 전체 관리를 위해 지정될 수 있는 핵심 하드웨어 자원들의 일례가 된다. 여러 다른 마이크로프로세서, 컨트롤러, 및/또는 기타 개별 컴포넌트들도 시스템을 통한 펌웨어의 관리를 위해 지정될 수 있다.
경우에 따라서, 일부 선택되지 않은 하드웨어 자원들에 대한 펌웨어 업데이트가 종래의 기법을 사용하여 펌웨어 시스템(128)의 외부에서 및/또는 부팅-후 환경에서 관리될 수 있다. 다만, 하나 이상의 실시예에서, 보안 업데이트 모듈(130)은 부팅-전 환경의 외부에서 어떤 펌웨어 업데이트도 일어나지 못하게 제한하거나 막도록 구성될 수 있다. 이런 접근 방법에서, 보안 업데이트 모듈(130)은 펌웨어 시스템(128)을 통해 컴퓨팅 장치의 각각의 하드웨어 자원들(124)에 대한 펌웨어 업데이트를 안전한 방식으로 제어하도록 구현된다.
예시적인 운영 환경에 대해 설명하였으며, 이제부터는 하나 이상의 실시예에 따른 보안 펌웨어 업데이트에 관한 예시적인 세부 사항을 살펴보자.
보안 펌웨어 업데이트 예시
다음 섹션에서는, 보안 펌웨어 업데이트의 구현 세부 사항과 예시적인 기법이 논의된다. 이 논의에는 임의의 적절한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 결합과 관련하여 구현될 수 있는 예시적인 몇몇 절차(들)가 포함된다. 적어도 일부 실시예에서, 이 절차들은 펌웨어 시스템(128)과 보안 업데이트 모듈(130)을 포함하거나 이용하는 도 1의 예시적인 컴퓨팅 장치(102)와 같이, 적절하게 구성된 컴퓨팅 장치로 구현될 수 있다.
도 3은 보안 펌웨어 업데이트가 부팅-전 환경에서 실행되는 예시적인 절차(300)를 도시한다. 안전한 부팅-전 환경이 컴퓨팅 장치의 스타트-업(start-up)에 바로 대응하도록 구축된다(블록(302)). 특히, 컴퓨팅 장치의 전원이 켜지거나 컴퓨팅 장치가 다시 시작할 때, 장치에 내장된 통합 부팅 프로그램이 시스템 초기화, 자체 테스트 실행, 및 시스템의 하드웨어 자원들(124) 식별을 일반적으로 실행한다. 나아가, 부팅 프로그램은 사용할 하드웨어 자원을 구성하고 장치의 운영 체제를 로딩하는 동작을 실행할 수도 있다.
부팅 프로그램은 본원에 설명된 바와 같은 펌웨어 시스템(128) 및/또는 보안 업데이트 모듈(130)을 포함하거나 이용할 수 있다. 펌웨어 시스템(128) 및/또는 보안 업데이트 모듈(130)은 하드웨어 자원들을 초기화하고, 그 자원들에 대한 적절한 드라이버를 로딩하고, 시스템을 셋업하기 위해 부팅 시퀀스에서 정의된 동작들을 실행하도록 구성된 펌웨어 인터페이스를 제공한다. 본원에서 설명된 기법은 여러 다른 유형의 펌웨어 시스템과 함께 구현될 수 있다. 적절한 펌웨어 시스템의 예시로는 UEFI(Unified Extensible Firmware Interface), ACPI(Advanced Configuration and Power Interface), BIOS(Basic Input Output System) 인터페이스, 및/또는 커스텀 API (Application Programing Interface)를 포함하지만 이에 제한되지는 않는다.
또한 보안 업데이트 모듈(130)은 장치의 보안 부팅 모드를 구현하도록 구성될 수 있다. 보안 부팅 모드는 신뢰할 수 없고, 인지되지 않고, 및/또는 유해한 코드의 실행을 방지하는 안전한 부팅-전 환경을 제공한다. 특히, 보안 업데이트 모듈(130)은 어떤 종류의 프로그램 및 부팅 서비스가 부팅-전 환경에서 실행될 수 있고 제한되는지를 정의하는 보안 정책을 구현하고 실시할 수 있다. 보안 부팅 모드에서 실행되도록 허용된 코드를 신뢰할 수 있음을 보장하기 위해 코드를 인증하는 다양한 기법이 이용될 수 있다. 예를 들어, 알려진, 신뢰할만한 엔티티와 관련된 디지털 키에 대해 코드와 관련된 디지털 서명을 확인함으로써 신뢰 결정이 내려질 수 있다. 코드에 대응하는 디지털 서명이 유효하다고 결정됨을 가정하면, 이 코드는 신뢰할 수 있다고 지정되어 실행이 허용된다. 반면, 서명이 없거나 유요한 디지털 서명을 갖고 있지 않은 코드는 신뢰할 수 없다고 지정되고 신뢰할 수 없는 코드의 실행이 금지된다. 또한, 보안 업데이트 모듈(130)은 부팅 프로그램 및/또는 컴퓨팅 장치에 로딩될 대응 운영 체제를 신뢰할 수 있음을 보장할 수 있다.
부팅-전 환경에서 컴퓨팅 장치의 선택된 하드웨어 자원들에 대한 펌웨어 업데이트를 할 수 있게 된다(블록(304)). 여기에서, 펌웨어 업데이트가 선택적으로 사용 가능 또는 사용 불가능해지도록 하드웨어 자원들이 서로 다른 업데이트 상태들 사이에서 전환하도록 구성될 수 있다. 이는 다양한 방식으로 실행될 수 있다. 예를 들어, 하드웨어 자원들(124)에 관련된 펌웨어(126)는 대응 이벤트, 입력, 및/또는 트리거에 대응하여 업데이트 가능 상태와 업데이트 불가능 상태 사이에서 펌웨어 업데이트를 제어하도록 정의된 데이터 필드를 토글하도록 구성될 수 있다. 하나의 접근 방법으로, 컴퓨팅 장치의 전원이 켜지거나 리셋될 때 업데이트를 할 수 있도록 하기 위해 불린(Boolean) 필드 혹은 하드웨어 자원들(124)에 관련된 그 밖의 다른 적절한 업데이트 상태 데이터 객체/파라미터가 기본으로 설정될 수 있다. 추가적으로 또는 그 대신에, 하드웨어 자원들(124)이 펌웨어 업데이트를 할 수 있게 하는 명령어를 부팅 시퀀스의 일부로서 전송하도록 보안 업데이트 모듈(130)이 구성될 수 있다. 사용 가능 명령어에 대한 응답으로, 하드웨어 자원들(124)에 관련된 펌웨어 또는 그 밖의 다른 코드는 펌웨어 업데이트를 할 수 있도록 적절한 데이터 필드를 설정하거나 행동을 취할 수 있다.
선택된 하드웨어 자원들이 이용 가능한 펌웨어 업데이트들의 설치가 안전한 부팅-전 환경에서 시작된다(블록(306)). 특히, 보안 펌웨어 업데이트는 부팅-전 환경에서 앞서 언급한 바와 같이 통합 컴포넌트 및 부속 장치들 모두를 포함할 수 있는 지정된 하드웨어 자원들의 선택 그룹에 적용된다. 적절한 명령어 등에 대응하여, 안전한 부팅-전 환경에서 지정된 하드웨어 자원들에 대한 업데이트가 기본으로 사용 가능해질 수 있다.
언급한 바대로, 펌웨어 시스템(128)은 자원의 발견, 및 펌웨어 업데이트 시스템을 통해 펌웨어 업데이트를 얻기 위해 등록되었거나 또는 지정된 특정 자원들에 대한 펌웨어 업데이트의 탐지, 분석, 획득, 분배, 설치, 및 추적을 포함하는 펌웨어 업데이트를 관리하도록 구성된다. UEFI, ACPI, 및/또는 BIOS 펌웨어 인터페이스와 관련된 기법을 포함하는 여러 다른 기법을 사용하여 업데이트를 발견, 획득 및 적용할 수 있다. 몇몇 시나리오에서는 펌웨어 업데이트를 구현하기 위한 전용 및 커스텀 API 및 코드를 이용할 수도 있다.
펌웨어 업데이트에서, 안전한 부팅-전 환경에서 적용되는 임의의 업데이트는 구축된 보안 정책을 따른다. 따라서, 펌웨어 시스템에 의해 처리되어 적용되는 업데이트 패키지는 신뢰할 수 있다고 시스템에 의해 디지털로 서명되고 식별된다. 업데이트 프로세스의 일부로서, 시스템은 버전이 정확한지, 펌웨어가 플랫폼의 자원에 제대로 매치되었는지, 펌웨어가 안전하고/신뢰할만한지를 인증하기 위해 이용 가능한 업데이트 및/또는 펌웨어의 설치 버전을 검사할 수 있다. 시스템은 어떤 문제점이든 표시를 하거나 보고를 하고, 적절한 상황에서 올바른 펌웨어를 찾아서 다시 적용함으로써 자동으로 결함을 수정하도록 구성될 수 있다.
또한, 분리된 부속 장치와 같이 이용할 수 없는 장치들에 대한 업데이트를 스테이징하도록 지연된 펌웨어 업데이트 특징을 구현할 수 있다. 이 경우에, 시스템은 이용 가능한 업데이트를 얻어서, 장치가 이용 가능해질 때까지 각각의 재부팅 시에 대응 자원을 계속해서 확인할 수 있다. 이후에 적절한 자원에 대해 업데이트가 적용된다. 하나의 접근 방법으로, 일부 하드웨어 자원들(예컨대, 지정된 CPU 또는 마이크로컨트롤러)이 지연된 것을 포함하여 그 밖의 다른 자원들에 펌웨어 업데이트를 넘겨주도록 구성될 수 있다. 이런 접근 방법에서, “마스터” 자원은 펌웨어 시스템의 지시 하에 다른 컴포넌트들에 대한 업데이트를 스테이징하고 그 후에 업데이트를 적용하기 위해 그 다른 컴포넌트들과의 인터랙션을 처리할 수 있다. 이는 스타트-업 시에 컴포넌트들의 이용 가능성을 확인하고 적절하게 업데이트를 분배하는 것을 포함할 수 있다.
이용 가능한 임의의 업데이트의 적용 후에, 안전한 부팅-전 환경의 외부에서는 선택된 자원들에 대한 펌웨어 업데이트를 하지 못하게 된다(블록(308)). 이와 같은 방식으로, 업데이트가 안전한 부팅-전 환경 안에서는 실행되고 이렇게 제어되는 환경 외부에서는 금지되도록, 펌웨어 시스템(128)이 관리된 장치들에 대한 펌웨어 업데이트를 제어할 수 있다. 관리된 장치들에 대한 펌웨어 업데이트를 하지 못하게 하기 위해서, 보안 업데이트 모듈은 하드웨어 자원들이 펌웨어 업데이트를 하지 못하게 하는 적절한 명령어를 하드웨어 자원들(124)에 전달할 수 있다. 시스템이 안전한 부팅-전 환경을 구축하지 못할 때 업데이트를 못하게 하고 펌웨어 업데이트 프로세스를 건너뛰도록 하기 위해 사용 불가 명령어 또는 그 외의 비슷한 기법들을 이용할 수 있다. 펌웨어 업데이트에 제한된 기간을 설정하는 타이머를 장치에 연계시키는 것이 또 다른 옵션이다. 아래에서 보다 상세하게 설명되는 바와 같이 타이머에 따라 업데이트가 사용 불가능해질 수 있다. 전술한 사용 가능 명령어 또는 스타트-업 시에 사용 가능하게 하는 동작(enable on start-up behavior)에서와 마찬가지로, 하드웨어 자원들(124)에 관련된 펌웨어 또는 그 밖의 다른 코드는 펌웨어 업데이트를 못하게 하는 사용 불가 명령에 대응하여 적절한 데이터 필드를 설정하거나 대응 행동을 취할 수 있다.
다음으로 부팅 프로그램은 관리된 자원들에 대해 사용 불가능해진 펌웨어 업데이트를 운영 체제에 로딩하기 위해 부트 로더(boot loader)에 제어 및 핸드오프 처리를 전달할 수 있다. 따라서, 펌웨어 업데이트는 OS에 대한 실행 환경에서는 사용 불가능하다. 펌웨어 업데이트가 장치 레벨에서 사용 불가능하므로, 실행 시에 노출된 잠재적인 진입점이 유해한 펌웨어를 설치하는 데 사용될 수 없다. 보안 펌웨어 업데이트의 이들 및 그 밖의 다른 양태들에 관한 추가 세부 사항이 다음의 예시적인 절차와 관련하여 논의된다.
도 4는 하나 이상의 실시예에 따른 보안 펌웨어 업데이트에 관한 예시적인 로직을 나타내는 절차(400)를 도시한다. 컴퓨팅 장치의 부팅 프로그램이 실행된다(블록(402)). 예를 들어, 컴퓨팅 장치의 전원이 켜지거나 컴퓨팅 장치가 리셋될 때 컴퓨팅 장치의 스타트-업/초기화를 다루는 기본 부팅 코드가 실행될 수 있다. 앞서 언급한 바와 같이, 부팅 프로그램은 컴퓨팅 장치와 관련 하드웨어 자원들(124)을 초기화하기 위한 부팅 시퀀스를 구현한다. 부팅 프로그램은 또한 보안 펌웨어 업데이트를 구현하도록 구성된 보안 업데이트 모듈(130)을 호출하거나 보안 업데이트 모듈(130)과 인터랙션함으로써 하드웨어 자원들(124)에 관련된 펌웨어(126)에 대한 업데이트를 제어할 수 있다.
부팅 프로그램에 의해 안전한 환경이 구축되었는지에 관한 결정이 내려진다(블록(404)). 예를 들어, 보안 업데이트 모듈(130)은 보안 부팅 모드를 구현할 수 있다. 보안 부팅 모드는, 신뢰할 수 없는 코드를 실행 제한 및/또는 금지하는 안전한 부팅-전 환경을 제공하기 위해 장치의 전용 혹은 선택적인 부팅 모드로서 이용될 수 있다. 일부 장치들의 경우, 보안 부팅 모드의 활성화 여부를 제어하도록 사용자-선택 가능 옵션이 설정될 수 있다. 다른 사용자-선택 가능 옵션에서는 보안 펌웨어 업데이트의 활성화 여부를 제어할 수 있다. 이용 가능한 펌웨어 업데이트 적용의 선행 작업으로, 보안 업데이트 모듈(130)은 보안 부팅 모드 및 보안 업데이트의 활성화 여부를 결정하기 위한 하나 이상의 확인을 할 수 있다. 보안 부팅 모드가 활성화된 경우, 보안 업데이트 모듈(130)은 안전한 부팅-전 환경이 성공적으로 구축되었는지 여부를 결정한다.
상기의 결정의 결과에 기반하여 펌웨어 업데이트 프로세스가 선택적으로 실행될 수 있다. 일반적으로, 안전한 부팅-전 환경이 구축될 때 관리된 자원들에 대한 보안 펌웨어 업데이트가 적용된다. 그러나, 보안 부팅 모드가 비활성화되거나 또는 다른 이유로 인해 안전한 부팅-전 환경이 구축되지 못한 경우, 펌웨어 업데이트 프로세스를 건너뛸 수 있다.
블록(404)에서 안전한 환경이 존재한다고 가정하면, 펌웨어 시스템을 통한 펌웨어 업데이트로 관리되도록 지정된 하드웨어 자원들이 결정된다(블록(406)). 그 후에, 블록(404)에서 결정된 관리된 하드웨어 자원들이 이용 가능한 업데이트가 존재하는지 여부에 관한 결정이 내려진다(블록(408)). 업데이트가 이용 가능한 경우, 이용 가능한 업데이트가 적용된다(블록(410)). 블록(410)은 펌웨어 업데이트를 구현하기 위해 이용 가능한 다양한 기법 및 동작을 나타낸다.
예를 들어, 컴퓨팅 장치(120)에 관련된 하드웨어 자원들(124) 및 대응 펌웨어(126)의 특성을 식별하고 설명하는 정의된 포맷의 데이터 구조를 참조하도록 펌웨어 시스템(128) 및/또는 운영 체제(108)가 구성될 수 있다. 데이터 구조는 시스템에 대한 업데이트를 위해 시스템 펌웨어, 장치 펌웨어, 및 부속 장치 펌웨어를 식별하는 메커니즘을 제공한다. 적어도 일부 실시예에서, 핵심 시스템 펌웨어가 지정된 포맷으로 데이터 구조를 배정하고 채울 책임이 있다. 추가적으로 또는 그 대신에, 컴퓨팅 장치에 관련된 하드웨어 자원들을 열거하기 위해 부팅 프로그램이 데이터 구조를 생성하고 채우도록 동작할 수도 있다. 이는 컴퓨팅 플랫폼의 부팅 시퀀스 중에 일어날 수 있다. 펌웨어 자원들에 대한 현재 데이터를 반영하기 위해 각각의 부팅 시퀀스에서 데이터 구조의 다른 인스턴스가 인스턴스화될 수 있다. 데이터 구조는 UEFI 또는 다른 적절한 인터페이스(예컨대, ACPI, BIOS, 커스텀 API 등)을 통해 노출될 수 있다. 다음으로 펌웨어 시스템(128) 및/또는 보안 업데이트 모듈(130)은 자원들을 발견하고, 펌웨어 업데이트를 구성하고, 업데이트를 배치하고, 데이터 구조에서 열거된 장치들에 대한 펌웨어 업데이트를 처리하기 위해, 데이터 구조에 포함된 자원들에 관한 데이터 엔트리를 이용할 수 있다.
단지 하나의 예를 들자면, 데이터 구조는 UEFI(Unified Extensible Firmware Interface) 시스템을 위한 표로서 구성될 수 있다. UEFI는 부팅-전 환경에서 플랫폼에 대한 운영 체제와 펌웨어 간의 인터페이스의 파라미터들을 정의한 표준이다. UEFI는 함수, 메소드, 표 등을 통해 플랫폼의 양태들을 OS에 설명하는 표준 협약을 제공한다. 구체적으로, UEFI는 데이터 교환 및, 부팅 중에 시스템 부팅 코드 및 OS의 부트 로더 간의 인터랙션에 관한 기본 체제, 협약, 및 기법을 제공한다. 적어도 일부 실시예에서, 보안 펌웨어 업데이트의 구현을 위한 적절한 데이터 구조를 생성하기 위해 UEFI에서 정의된 기본 체제를 이용할 수 있다. 그렇지만, 하드웨어 자원들을 비슷한 방식으로 펌웨어 시스템에 열거하기 위해 여러 다른 종류의 기법, 시스템, 표, 데이터베이스, 및/또는 데이터 구조를 이용할 수 있음을 이해해야 한다.
적절한 데이터 구조의 엔트리는 업데이트 가능한 펌웨어를 갖는 하드웨어 자원들을 식별하고 설명한다. 이는 자원 유형 및 분류 데이터; 자원과 인터랙션하고 자원을 업데이트하는 방법에 관한 인스트럭션/세부 사항; 업데이트 등록, 다운로드, 또는 획득을 위해 사용될 수 있는 링크, 위치, 및/또는 주소 등을 포함할 수 있다. 또한, 엔트리의 메타데이터는 기술된 자원들에 대응하는 상태/버전 정보를 기록할 수 있다. 보안 업데이트 모듈(130)이 업데이트를 셋업하고 실행할 수 있도록 충분한 정보를 캡쳐하기 위해 엔트리에 대한 다양한 다른 필드들이 정의될 수 있다. 적어도 일부 실시예에서, 다른 필드들은 대응 자원에 대한 펌웨어 업데이트를 사용 가능 또는 사용 불가능하게 하도록 본원에 기술된 기법에 따라 선택적으로 설정될 수 있는, 전술한 바와 같은 업데이트 상태 필드를 포함한다. 데이터 구조의 엔트리에 관련된 업데이트 상태 필드들은 열거된 하드웨어 자원들에 관련된 펌웨어에 포함된 대응 업데이트 상태 필드들을 반영한다. 따라서, 특정 자원에 대한 업데이트 상태 필드의 값을 설정함으로써 그 특정 자원에 대한 펌웨어 내의 값을 변경할 수 있다.
전술한 표 및/또는 UEFI 구현예는 펌웨어 업데이트 시스템에서 사용하기에 적합한 데이터 구조의 예시로서 제공되는 것임을 다시 한 번 알 것이다. 실제로, 하드웨어 자원들에 관한 데이터를 노출하는 여러 다른 포맷과 기법을 이용할 수 있다. 예를 들어, ACPI, 커스텀 API, 및 BIOS 인터페이스를 포함하는, 그러나 이에 제한되지는 않는, OS 및 시스템 부팅 코드 간의 다른 종류의 인터페이스를 위해 상술한 예시와 비슷한 표 혹은 그 밖의 다른 데이터 구조가 구성될 수 있다.
이용된 펌웨어 업데이트 프로세스는 구현된 특정 유형의 펌웨어 시스템(128)에 따라 달라질 수 있다. 하지만, 일반적으로, 보안 업데이트 모듈(130)은 노출된 데이터 구조로부터 식별된 자원들에 대한 업데이트 이용 가능 여부를 확인할 수 있다. 예를 들어, 자원들에 대해 현재 설치된 펌웨어가 최신인지를 결정하기 위해 데이터 구조에 포함된 펌웨어 버전 정보를 공개된 업데이트와 비교할 수 있다. 그 후에 보안 업데이트 모듈은 그 특정 펌웨어 시스템에 규정한 방식으로 오래된 펌웨어에 대한 이용 가능한 업데이트를 찾아서 얻을 수 있다. 보안 업데이트 모듈(130)은 또한 전술한 바와 같이 신뢰 결정을 내리기 위해 업데이트와 관련된 디지털 서명 및/또는 기타 크리덴셜(credential)을 검사할 수 있다. 신뢰할 수 있는 업데이트는 안전한 부팅-전 환경 내에서 적용될 수 있다. 이는 업데이트를 적용할 대응 하드웨어 자원들에 의한 사용을 신뢰할만한 업데이트 패키지의 분배를 포함할 수 있다. 업데이트 패키지는 UEFI 또는 플랫폼에 의해 구현된 다른 펌웨어 시스템에 따라 구성되고 분배될 수 있다. 다른 접근 방법으로, 보안 업데이트 모듈(130)은 적어도 일부 하드웨어 자원들을 대신하여 업데이트를 적용하도록 구성될 수 있다. 반면, 보안 업데이트 모듈(130)은 신뢰할 수 없는 업데이트가 시스템에 의해 실행 및 적용되지 못하도록 폐기, 삭제, 무시, 격리 또는 금지함으로써 신뢰할 수 없는 업데이트를 거부하도록 구성될 수 있다.
보안 업데이트 모듈이 지시한대로 이용 가능한 업데이트가 처리되면, 관리된 자원들이 펌웨어 업데이트를 하지 못하도록 관리된 자원들에 통지를 보낸다(블록(412)). 이는 안전한 부팅-전 환경 외부에서 관리된 자원들에 대한 펌웨어 업데이트를 효과적으로 사용 금지시킨다. 통지에는 하드웨어 자원들에 의한 처리를 위한 사용 불가 명령어가 포함될 수 있다. 특히, 하드웨어 자원들(124)의 펌웨어는 지시된 대로 펌웨어 업데이트를 사용하도록 또는 사용하지 못하도록 하기 위해 펌웨어 시스템(128)의 명령어를 처리하도록 구성된다. 글로벌 통지 메시지가 다수의 자원들에 전송될 수 있다. 추가적으로 또는 그 대신에, 장치에 특정된 메시지가 적어도 일부 자원들에 전송될 수 있다.
나아가, 일부 자원의 경우, 펌웨어 업데이트를 제어하고 정의된 기간 외에서는 업데이트가 일어나지 못하게 하기 위해 타이머를 사용할 수 있다. 예를 들어, 장치의 전원이 켜질 때 타이머가 설정되어, 전원이 켜진 후 정의된 기간 동안 업데이트를 할 수 있게 된다. 타이머가 만료되면, 업데이트는 자동으로 사용 불가능해진다. 이와 같은 접근 방법에서, OS가 로딩되기 전에 업데이트를 하지 못하게 하기 위해 부팅 시퀀스에 예상되는 시간보다 타이머의 시간이 짧게 설정될 수 있다.
다음으로 관리된 자원들에 대해 사용 불가능해진 펌웨어 업데이트가 운영 체제에 로딩될 수 있다(블록(414)). 이 때, 설명된 방식으로 펌웨어 업데이트가 사용 불가능해진 후에 처리가 부트 로더에 핸드오프될 수 있다. 그 다음에 부트 로더는 OS의 부팅을 처리한다. OS의 실행 환경에서는, 이들 자원이 장치 레벨에서 업데이트하지 못하게 설정되었으므로 관리된 하드웨어 자원들의 펌웨어를 업데이트하려는 시도가 거부된다.
블록(408)에서 업데이트를 이용할 수 없는 경우, 절차(400)는 블록(410)으로 표현된 업데이트 적용 동작을 실행하지 않고 블록(412)의 사용 불가 통지 및 블록(414)의 운영 체제 로딩으로 바로 진행할 수 있다. 마찬가지로, 블록(404)에서 안전한 환경이 존재하지 않는 경우, 절차(400)는 블록(412)에서 사용 불가 명령어에 의해 업데이트를 못하게 한 후에 블록(414)에서 운영 체제를 로딩할 수 있다. 이 경우에, 안전한 환경이 이용 가능하지 않을 때 시스템은 펌웨어 업데이트를 완전히 건너뛸 수 있다.
경우에 따라서, 안전한 환경이 이용 가능하지 않을 때 부팅 프로그램은 오류 메시지를 생성할 수 있다. 오류를 처리하는 옵션에 관한 입력을 사용자에게 요청하기 위해 프롬프트가 프레젠테이션될 수 있다. 예를 들어, 사용자에게 로딩 중단, 정상 시작, 축소된 기능 집합을 제공하는 안전 모드로 시작 등의 여부를 나타내는 입력을 요청할 수 있다. 또는, 안전한 환경이 존재하지 않을 때 시스템이 자동으로 부팅 시퀀스를 중단하도록 구성될 수 있다.
도 5는 하나 이상의 실시예에 따른 보안 펌웨어 업데이트를 구현하기 위해 업데이트 상태가 선택적으로 설정되는 절차(500)를 도시한다. 안전한 부팅-전 환경에서 펌웨어 업데이트를 할 수 있도록 컴퓨팅 장치와 관련된 하나 이상의 관리된 하드웨어 자원의 업데이트 상태가 설정된다(블록(502)). 업데이트 상태는 전술한 방식으로 다른 자원들에 대해 개별적으로 설정될 수 있다. 이 상태들은 자원들에 관련된 지정된 필드 또는 그 밖의 다른 적절한 데이터 객체/파라미터를 사용하여 설정될 수 있다. 업데이트 상태는 시스템의 전원이 켜질 때, 통지/명령어에 대응하여 기본으로 설정될 수 있다.
다른 접근 방법으로, SoC 장치 또는 기타 지정된 컴포넌트(예컨대, 지정된 중앙 처리 장치(CPU), 마이크로프로세서, 또는 컨트롤러 장치)에 대한 핵심 시스템 펌웨어가 관리된 하드웨어 자원 각각에 연결된 게이트 키퍼로서 구성될 수 있다. 이런 접근 방법에서, 관리된 하드웨어 자원들에 대한 펌웨어 업데이트가 게이트 키퍼 장치에 대응하는 시스템 펌웨어(202)를 통해 전체적으로 업데이트되고 처리될 수 있다. 시스템 펌웨어(202)는 펌웨어 업데이트가 사용 가능해질 때 다른 자원들에 업데이트를 분배하는 책임을 질 수 있다. 따라서, SoC 장치 또는 기타 지정된 게이트 키퍼에 대한 업데이트 상태를 관리함으로써 다수의 다른 하드웨어 자원들에 대한 업데이트를 제어할 수 있다. 지정된 게이트 키퍼 장치에 대한 업데이트 상태가 사용 불가 업데이트로 설정된 경우, 시스템 펌웨어는 다른 장치들/자원들에 업데이트를 분배하지 않도록 구성된다. 이와 같은 방식으로, 지정된 게이트 키퍼 장치와 관련된 상태를 관리함으로써 선택된 장치 그룹에 대한 펌웨어 업데이트가 사용 가능 혹은 사용 불가능해질 수 있다.
하나 이상의 관리된 하드웨어 자원들에 대해 이용 가능한 업데이트들이 탐지되고(블록(504)), 탐지된 이용 가능한 업데이트들이 적용된다(블록(506)). 업데이트의 처리 및 설치는 다른 펌웨어 시스템들(128)과 전술한 방식의 기법을 사용하여 실행될 수 있다. 일반적으로, 이는 시스템을 통한 펌웨어 관리를 위해 지정된 하드웨어 자원들의 그룹을 열거하는 것을 포함한다. 열거된 자원들에 대한 보안 업데이트가 사용 가능한 동안은, 보안 업데이트 모듈(130)과 함께 펌웨어 시스템(128)이 열거된 자원들에서 이용 가능한 업데이트를 발견하고 배치할 수 있다. 예를 들어, 시스템은 업데이트 패키지들을 얻고 각각의 자원에 의한 업데이트 적용을 위해 이 업데이트 패키지들을 분배할 수 있다. 지정된 게이트 키퍼를 이용하는 경우, 펌웨어 시스템에 따라 포맷된 업데이트 패키지들을 찾아서 게이트 키퍼 장치의 펌웨어를 통해 전체적으로 배치할 수 있다. 일부 실시예에서, 보안 업데이트 모듈(130)은 지정된 하드웨어 자원들에 대해 전체적으로 보안 펌웨어 업데이트를 처리하기 위한 게이트 키퍼 장치의 컴포넌트로서 구성된다.
부팅-후 환경에서 펌웨어 업데이트를 하지 못하도록 업데이트 상태를 변경하기 위해 업데이트의 적용 후에 하나 이상의 관리된 하드웨어 자원으로 사용 불가 명령어가 전달된다(블록(508)). 이는 OS를 로딩하기 위해 부트 로더에 컨트롤이 전달되기 직전에 일어날 수 있다. 다시, 각각의 다른 하드웨어 자원에 관련된 업데이트 필드를 설정함으로써 자원들에 대한 업데이트가 개별적으로 사용 불가능해질 수 있다. 다만, 지정된 게이트 키퍼 장치를 이용하는 경우에, 다수의 자원들에 대한 업데이트를 사용 불가능하게 하는 게이트 키퍼 장치 자체의 상태를 설정함으로써 게이트 키퍼 장치를 통해 전체적으로 관리되는 자원들에 대한 업데이트가 함께 사용 불가능해질 수 있다. 사용 불가한 것으로 상태를 설정함으로써 게이트 키퍼 장치가 다른 자원들에 어떤 펌웨어 업데이트도 분배하지 못하게 한다.
보안 펌웨어 업데이트에 관한 예시적인 세부 사항과 기법에 대해 논의하였으며, 하나 이상의 실시예에 따른 예시적인 시스템에 대한 논의를 살펴보자.
예시적인 시스템
도 6는 하나 이상의 컴퓨팅 시스템 및/또는 본원에 기술된 다양한 기법을 구현할 수 있는 장치를 나타내는 예시적인 컴퓨팅 장치(602)를 포함하는 예시적인 시스템(600)을 도시한다. 컴퓨팅 장치(602)는, 예를 들어, 서비스 제공자의 서버, 클라이언트와 관련된 장치(예컨대, 클라이언트 장치), 온-칩 시스템(on-chip system) 및/또는 그 밖의 임의의 적합한 컴퓨팅 장치 또는 컴퓨팅 시스템일 수 있다.
도시된 바와 같이 예시적인 컴퓨팅 장치(602)는 처리 시스템(604), 하나 이상의 컴퓨터 판독 가능 매체(606), 및 서로 통신 가능하게 연결된 하나 이상의 I/O 인터페이스(608)를 포함한다. 도시되어 있지는 않지만, 컴퓨팅 장치(602)는 다양한 컴포넌트들을 서로 결합시키는 시스템 버스 또는 기타 데이터 및 명령어 전송 시스템을 더 포함할 수 있다. 시스템 버스는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, USB, 및/또는 임의의 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 비롯한 임의의 하나 또는 상이한 버스 구조들의 조합을 포함할 수 있다. 컨트롤 및 데이터 라인과 같이 여러 다른 예시들도 고려된다.
처리 시스템(604)은 하드웨어를 사용하여 하나 이상의 동작을 수행하는 기능을 나타낸다. 따라서, 처리 시스템(604)은 프로세서, 기능 블록 등으로 구성될 수 있는 하드웨어 구성요소(610)를 포함하는 것으로 도시된다. 이는 하나 이상의 반도체를 사용하여 형성된 ASIC(application specific integrated circuit) 또는 기타 로직 장치로서의 하드웨어로의 구현을 포함할 수 있다. 하드웨어 구성요소(610)는 하드웨어 구성요소를 형성하는 물질이나 또는 이용된 처리 메커니즘에 제한되지 않는다. 예를 들어, 프로세서는 반도체(들) 및/또는 트랜지스터(전자 집적 회로(IC))를 포함할 수 있다. 이런 맥락에서, 프로세서 실행 가능 인스트럭션은 전자적으로 실행 가능한 인스트럭션일 수 있다.
컴퓨터 판독 가능 매체(606)는 메모리/저장 장치(612)를 포함하는 것으로 도시된다. 메모리/저장 장치(612)는 하나 이상의 컴퓨터 판독 가능 매체와 관련된 메모리/저장 장치 기능을 나타낸다. 메모리/저장 장치(612)는 (랜덤 액세스 메모리(RAM)와 같은) 휘발성 매체 및/또는 (판독 전용 메모리(ROM), 플래시 메모리, 광 디스크, 자기 디스크 등의) 비휘발성 매체를 포함할 수 있다. 메모리/저장 장치(612)는 고정식 매체(예컨대, RAM, ROM, 고정 하드 드라이브 등)뿐만 아니라 이동식 매체(예컨대, 플래시 메모리, 이동식 하드 드라이브, 광 디스크 등)를 포함할 수 있다. 컴퓨터 판독 가능 매체(606)는 후술하는 바와 같이 다양한 다른 방식으로 구성될 수 있다.
입/출력 인터페이스(들)(608)는 사용자가 컴퓨팅 장치(602)로 명령어 및 정보를 입력할 수 있고, 또한 다양한 입/출력 장치를 이용해 사용자 및/또는 그 밖의 다른 컴포넌트 또는 장치로 정보를 제공하는 기능을 나타낸다. 입력 장치의 예로는 키보드, 커서 제어 장치(예컨대, 마우스), 음성 작동을 위한 마이크로폰, 스캐너, 터치 기능(예컨대, 물리적 터치를 탐지하도록 구성된 정전 용량형 또는 기타 센서), 카메라(예컨대, 터치를 포함하지 않는 움직임을 제스처로서 탐지하기 위해 적외선 주파수와 같은 가시 또는 비가시 파장을 이용할 수 있음) 등을 포함한다. 출력 장치의 예로는 디스플레이 장치(예컨대, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각 반응 장치 등을 포함한다. 따라서, 컴퓨팅 장치(602)는 사용자 인터랙션을 지원하기 위해 아래에서 추가로 설명되는 것처럼 다양한 방식으로 구성될 수 있다.
본원에서는 다양한 기법이 소프트웨어, 하드웨어 구성요소, 또는 프로그램 모듈로서 일반적으로 설명된다. 일반적으로, 이런 모듈은 특정 작업을 실행하거나 특정 추상화 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 컴포넌트, 데이터 구조 등을 포함한다. 본원에서 사용된 용어 "모듈" 및 "기능” 및 “컴포넌트”는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 본원에 기술된 기법의 특징은 플랫폼 독립적(platform-independent)이며, 이는 기법이 다양한 프로세서를 갖는 다양한 상업용 컴퓨팅 플랫폼 상에서 구현될 수 있음을 의미한다.
전술한 모듈과 기법의 구현은 임의의 형태의 컴퓨터 판독 가능 매체를 통해 저장되거나 전송될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 장치(602)에 의해 액세스 가능한 다양한 매체를 포함할 수 있다. 예를 들면, 컴퓨터 판독 가능 매체는 "컴퓨터 판독 가능 저장 매체"와 "통신 매체"를 포함할 수 있으며, 이에 제한되지는 않는다.
"컴퓨터 판독 가능 저장 매체"는 단순 신호 전송, 반송파, 또는 신호 그 자체와 달리 정보의 영속적인(persistent) 저장을 가능하게 하는 매체 및/또는 장치를 지칭할 수 있다. 따라서, 컴퓨터 판독 가능 저장 매체는 신호 운반(bearing) 또는 일시적(transitory) 매체를 포함하지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 판독 가능 인스트럭션, 데이터 구조, 프로그램 모듈, 로직 요소/회로, 또는 그 밖의 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기법으로 구현되는 휘발성 및 비-휘발성, 이동식 및 비-이동식 매체 및/또는 저장 장치 등의 하드웨어를 포함한다. 컴퓨터 판독 가능 저장 매체의 예로는, RAM, ROM, EEPROM, 플래시 메모리 또는 그 밖의 다른 메모리 기법, CD-ROM, DVD(digital versatile disk), 또는 기타 광 저장 장치, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 그 밖의 다른 저장 장치, 유형 매체(tangible media) 또는 컴퓨터에 의해 액세스될 수 있는 바람직한 정보를 저장하기에 적합한 제조 물품이 있으며, 그러나 이에 제한되지는 않는다.
"통신 매체"는 가령 네트워크를 통해 컴퓨팅 장치(602)의 하드웨어에 인스트럭션을 전송하도록 구성된 신호 운반 매체를 지칭할 수 있다. 일반적으로 통신 매체는 컴퓨터 판독 가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 기타 데이터를 반송파, 데이터 신호 또는 그 밖의 다른 전송 메커니즘을 비롯한 변조 데이터 신호로 구현할 수 있다. 통신 매체는 임의의 정보 전달 매체를 더 포함한다. "변조된 데이터 신호"라는 용어는 신호 내 정보를 인코딩하도록 특징들 중 하나 이상 설정 또는 변경된 신호를 의미한다. 예를 들어, 그러나 제한 없이, 통신 매체는 유선 네트워크 또는 직접 배선된 연결과 같은 유선 매체, 및 음향, RF, 적외선 및 그 밖의 다른 무선 매체와 같은 무선 매체를 포함한다.
전술한 바와 같이, 하드웨어 구성요소(610) 및 컴퓨터 판독 가능 매체(606)는 본원에 기술된 기법의 적어도 일부 양태를 구현하기 위해 몇몇 실시예에서 이용할 수 있는 하드웨어로 구성된 인스트럭션, 모듈, 프로그램 가능한 장치 로직 및/또는 고정 장치 로직을 나타낸다. 하드웨어 구성요소는 집적 회로 또는 온-칩 시스템, ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), CPLD(complex programmable logic device), 및 실리콘 또는 기타 하드웨어 장치에서의 기타 구현예의 컴포넌트들을 포함할 수 있다. 이런 맥락에서, 하드웨어 구성요소는 인스트럭션에 의해 정의되는 프로그램 태스크를 실행하는 처리 장치, 모듈, 및/또는 하드웨어 구성요소에 의해 구현되는 로직은 물론, 실행을 위한 인스트럭션을 저장하는 데 이용되는 하드웨어 장치, 예컨대, 전술한 컴퓨터 판독 가능 저장 매체로서 동작할 수 있다.
본원에 설명된 다양한 기법 및 모듈을 구현하기 위해 전술한 것들의 조합을 이용할 수 있다. 따라서, 운영 체제(108), 애플리케이션들(110), 펌웨어 시스템(128), 보안 업데이트 모듈(130)을 포함하는 소프트웨어, 하드웨어, 또는 프로그램 모듈, 및 그 밖의 다른 프로그램 모듈은 임의의 형태의 컴퓨터 판독 가능 저장 매체에 구현된 하나 이상의 인스트럭션 및/또는 로직으로서 및/또는 하나 이상의 하드웨어 요소(610)에 의해 구현될 수 있다. 컴퓨팅 장치(602)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 인스트럭션 및/또는 기능을 구현하도록 구성될 수 있다. 따라서, 소프트웨어로서 컴퓨팅 장치(602)에 의해 실행될 수 있는 모듈로서의 모듈들은 예컨대, 컴퓨터 판독 가능 저장 매체 및/또는 처리 시스템의 하드웨어 요소(610)를 사용하여 적어도 부분적으로는 하드웨어로 구현될 수 있다. 인스트럭션 및/또는 기능은 본원에 설명된 기법, 모듈, 및 예시를 구현하기 위해 하나 이상의 제조 물품(예컨대, 하나 이상의 컴퓨팅 장치(602) 및/또는 처리 시스템(604))으로 실행/동작될 수 있다.
도 6에 도시된 바와 같이, 예시적인 시스템(600)에 의해, 애플리케이션을 개인 컴퓨터(PC), 텔레비전 장치, 및/또는 모바일 장치에서 실행시킬 때 매끄러운 사용자 경험을 위한 유비쿼터스 환경이 가능해진다. 애플리케이션을 이용하고, 비디오 게임을 하며, 비디오를 시청하는 등의 동안 하나의 장치에서 다른 장치로 전환될 때, 공통 사용자 경험을 위해 세 가지 환경 모두에서 서비스 및 애플리케이션이 실질적으로 유사하게 실행된다.
예시적인 시스템(600)에서, 다수의 장치가 중앙 컴퓨팅 장치를 통해 상호 연결된다. 상기 중앙 컴퓨팅 장치는 다수의 장치에 로컬이거나 상기 다수의 장치로부터 원격으로 위치할 수 있다. 일 실시예에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷, 또는 그 밖의 다른 데이터 통신 링크를 통해 다수의 장치로 연결되어 있는 하나 이상의 서버 컴퓨터를 통해 구현되는 분산 클라우드 환경일 수 있다.
일 실시예에서, 이러한 상호 연결 아키텍처에 의해 기능이 다수의 장치 간에 전달되어, 다수의 장치의 한 명의 사용자에게 공통되는 매끄러운 경험이 제공될 수 있다. 다수의 장치 각각은 서로 다른 물리적 요건 및 기능을 가질 수 있고, 중앙 컴퓨팅 장치는 장치에 대해 맞춤 구성되지만 모든 장치에 대해 공통이기도 한 경험을 장치로 전달 가능하게 하는 플랫폼을 이용한다. 일 실시예에서, 타겟 장치의 클래스가 생성되고 경험이 장치의 일반적인 클래스에 대해 맞춤 구성된다. 장치의 클래스가 장치의 물리적 특징, 사용성의 유형, 또는 그 밖의 다른 공통 특성에 의해 정의될 수 있다.
다양한 구현예에서, 컴퓨팅 장치(602)는 컴퓨터(614) 용, 모바일(616) 용, 및 텔레비전(618) 용의 다양한 다른 구성을 가정할 수 있다. 이들 구성 각각은 일반적으로 상이한 구성 및 기능을 가질 수 있는 장치를 포함하고, 따라서 컴퓨팅 장치(602)가 서로 다른 장치 클래스 중 하나 이상에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(602)는 개인 컴퓨터, 데스크탑 컴퓨터, 다중-스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 장치의 컴퓨터(614) 클래스로서 구현될 수 있다.
또한 컴퓨팅 장치(602)는 모바일 폰, 휴대용 음악 재생기, 휴대용 게임 장치, 태블릿 컴퓨터, 다중-스크린 컴퓨터 등의 모바일 장치를 포함하는 장치의 모바일(616) 클래스로서 구현될 수 있다. 또한 상기 컴퓨팅 장치(602)는 보통의 시청 환경에서 일반적으로 더 큰 스크린을 갖거나 이에 연결된 장치를 포함하는 장치의 텔레비전(618) 클래스로서 구현될 수 있다. 이들 장치는 텔레비전, 셋-탑 박스, 게임 콘솔 등을 포함한다.
본 명세서에 기술된 기법은 이런 다양한 구성의 컴퓨팅 장치(602)에 의해 지원될 수 있지만, 본 명세서에 기술된 기법의 특정 예시로 국한되는 것은 아니다. 이는 컴퓨팅 장치(602) 상에 보안 업데이트 모듈(130)을 포함하는 것으로 도시되어 있다. 보안 업데이트 모듈(130) 및 그 밖의 모듈/애플리케이션으로 표현된 기능은 이하에서 설명되는 것처럼 플랫폼(622)을 통한 “클라우드”(620) 상에서와 같이 분산 시스템을 사용하여 전부 혹은 부분적으로 구현될 수 있다.
클라우드(620)는 자원들(624)을 위한 플랫폼(622)을 포함하거나, 및/또는 나타낸다. 플랫폼(622)은 클라우드(620)의 하드웨어(예컨대, 서버) 및 소프트웨어 자원의 기저 기능을 추상화한다. 자원들(624)은 컴퓨팅 장치(602)와 원격인 서버 상에 컴퓨터 처리가 실행되는 동안 사용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 자원들(624)은 인터넷 및/또는 가입자 네트워크, 가령, 셀룰러 또는 WiFi 네트워크를 통해 제공되는 서비스 역시 포함할 수 있다.
플랫폼(622)은 컴퓨팅 장치(602)를 그 밖의 다른 컴퓨팅 장치와 연결하기 위해 자원 및 기능을 추상화할 수 있다. 또한 플랫폼(622)은 자원의 확장(scaling)을 추상화하도록 기능하여, 플랫폼(622)을 통해 구현되는 자원들(624)이 직면하는 수요에 대응하는 확장 수준을 제공할 수 있다. 따라서 상호 연결된 장치 실시예에서, 본 명세서에 기술된 기능의 구현이 시스템(600)을 통해 분산될 수 있다. 예를 들어, 기능은 컴퓨팅 장치(602) 상에서 부분적으로 구현될 뿐 아니라 클라우드(620)의 기능을 추상화하는 플랫폼(622)을 통해 부분적으로 구현될 수 있다.
결론
본 대상이 구조적 특징부 및/또는 방법적 동작에 특정적인 언어로 기술되었지만, 첨부된 특허청구범위에서 정의되는 본 대상이 전술한 특정 특징부 또는 동작에 한정되는 것은 아님을 이해해야 한다. 오히려, 전술한 특정 특징부 및 동작은 청구항을 구현하기 위한 예시적인 형태로서 개시된 것이다.

Claims (20)

  1. 업데이트 가능한 펌웨어를 갖는 하나 이상의 하드웨어 자원과,
    보안 업데이트 모듈을 저장하는 메모리를 포함하되,
    상기 보안 업데이트 모듈은
    컴퓨팅 장치의 스타트-업을 위해 안전한 부팅-전 환경(secure pre-boot environment)을 구축하고,
    상기 컴퓨팅 장치의 부팅 시퀀스 중에 정의된 지속 시간(defined duration of time) 동안 펌웨어 업데이트를 사용 가능하게(enable) 하고 상기 컴퓨팅 장치의 운영 체제를 로딩하기 전에 상기 펌웨어 업데이트를 사용 불가능하게(disable) 하는 데 효과적인 타이머를 설정하고,
    펌웨어 시스템을 통해 상기 안전한 부팅-전 환경 내에서 상기 하나 이상의 하드웨어 자원에 대한 펌웨어 업데이트를 사용 가능하게 하고,
    상기 타이머의 만료에 응답하여 상기 하나 이상의 하드웨어 자원에 대한 펌웨어 업데이트를 사용 불가능하게 하여 상기 안전한 부팅-전 환경의 외부에서 추가적인 펌웨어 업데이트가 발생하는 것을 제한하도록 구성되는
    컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 보안 업데이트 모듈은, 또한,
    상기 하나 이상의 하드웨어 자원에 대해 이용 가능한 업데이트를 탐지하고,
    상기 안전한 부팅-전 환경에서 탐지된 상기 업데이트의 설치를 시작하도록 구성되는
    컴퓨팅 장치.
  3. 제 2 항에 있어서,
    상기 업데이트의 설치를 시작하는 것은,
    상기 펌웨어 시스템을 통해 이용 가능한 상기 업데이트에 대한 업데이트 패키지를 획득하는 것과,
    상기 하나 이상의 하드웨어 자원에 의한 상기 업데이트의 적용을 위해 상기 하나 이상의 하드웨어 자원에 상기 패키지를 분배하는 것
    을 포함하는
    컴퓨팅 장치.
  4. 제 1 항에 있어서,
    상기 보안 업데이트 모듈은, 또한,
    상기 하나 이상의 하드웨어 자원을 설명하는 엔트리로 채워진 데이터 구조를 참조함으로써 상기 안전한 부팅-전 환경에서 펌웨어 업데이트의 처리를 위해 지정된 상기 하나 이상의 하드웨어 자원을 열거하도록 구성되는
    컴퓨팅 장치.
  5. 제 1 항에 있어서,
    상기 보안 업데이트 모듈은 또한
    상기 하나 이상의 하드웨어 자원에 대한 상기 펌웨어 업데이트를 사용 불가능하게 한 후에 상기 컴퓨팅 장치의 운영 체제를 부팅하기 위해 부트 로더에 컨트롤을 넘기도록 구성되는
    컴퓨팅 장치.
  6. 제 1 항에 있어서,
    상기 하나 이상의 하드웨어 자원의 적어도 일부가 상기 컴퓨팅 장치의 시스템-온-칩 프로세서의 통합 컴포넌트로서 제공되는
    컴퓨팅 장치.
  7. 제 1 항에 있어서,
    상기 하나 이상의 하드웨어 자원은 대응 인터페이스를 통해 상기 컴퓨팅 장치에 연결 가능한 부속 장치를 포함하는
    컴퓨팅 장치.
  8. 제 1 항에 있어서,
    상기 하나 이상의 하드웨어 자원은 상기 컴퓨팅 장치의 복수의 마이크로프로세서를 포함하는
    컴퓨팅 장치.
  9. 제 1 항에 있어서,
    상기 펌웨어 시스템은 UEFI(Unified Extensible Firmware Interface)로서 구현되는
    컴퓨팅 장치.
  10. 제 1 항에 있어서,
    상기 컴퓨팅 장치의 스타트-업 시에 펌웨어 업데이트를 사용 가능하게 하기 위해 상기 하나 이상의 하드웨어 자원과 관련된 하나 이상의 업데이트 상태가 기본으로 설정되는
    컴퓨팅 장치.
  11. 제 1 항에 있어서,
    상기 펌웨어 업데이트를 사용 가능하게 하는 것은 상기 안전한 부팅-전 환경의 구축에 응답하여 상기 하나 이상의 하드웨어 자원에 사용 가능 명령(enable command)을 전송하는 것을 포함하고,
    상기 사용 가능 명령은 상기 안전한 부팅-전 환경에서 상기 펌웨어 업데이트를 사용 가능하게 하도록 상기 하나 이상의 하드웨어 자원과 관련된 하나 이상의 업데이트 상태를 설정하도록 구성되는
    컴퓨팅 장치.
  12. 제 1 항에 있어서,
    상기 펌웨어 업데이트를 사용 불가능하게 하는 것은 상기 컴퓨팅 장치의 운영 체제를 부팅하기 전에 상기 하나 이상의 하드웨어 자원에 사용 불가 명령(disable command)을 전송하는 것을 포함하고,
    상기 사용 불가 명령은 상기 안전한 부팅-전 환경의 외부에서 상기 펌웨어 업데이트를 사용 불가능하게 하도록 상기 하나 이상의 하드웨어 자원과 관련된 하나 이상의 업데이트 상태를 설정하도록 구성되는
    컴퓨팅 장치.
  13. 컴퓨팅 장치에 의해 구현되는 방법으로서,
    상기 컴퓨팅 장치의 스타트-업 시에 실행되는 부팅 프로그램에 의해 안전한 부팅-전 환경이 구축되는지 여부를 판정하는 단계와,
    상기 안전한 부팅-전 환경이 구축될 때, 상기 안전한 부팅-전 환경에서 상기 컴퓨팅 장치의 하나 이상의 하드웨어 자원에 대한 펌웨어 업데이트를 수행하는 단계 - 상기 펌웨어 업데이트는 상기 컴퓨팅 장치의 스타트-업 시에 설정된 타이머에 의해 정의된 시구간 내에서 수행되고, 상기 타이머는 상기 컴퓨팅 장치의 부팅 시퀀스에 대해 예상되는 지속 시간의 만료 전에 만료되도록 설정되고 상기 컴퓨팅 장치의 운영 체제를 로딩하기 전에 펌웨어 업데이트를 사용 불가능하게 하는 데 효과적임 -, 및
    상기 타이머의 만료에 응답하여, 상기 하나 이상의 하드웨어 자원으로 하여금 상기 안전한 부팅-전 환경의 외부에서 상기 하나 이상의 하드웨어 자원에 대한 펌웨어 업데이트를 사용 불가능하게 하는 적어도 하나의 통지를 전송하는 단계
    를 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 안전한 부팅-전 환경에서 상기 펌웨어 업데이트를 수행하는 단계는,
    상기 안전한 부팅-전 환경에서 상기 컴퓨팅 장치의 펌웨어 시스템에 의한 펌웨어 업데이트의 처리를 위해 지정된 하나 이상의 하드웨어 자원을 식별하는 단계와,
    상기 펌웨어 업데이트가 상기 식별된 하드웨어 자원에 대해 이용 가능한지 여부를 판정하는 단계와,
    상기 펌웨어 업데이트를 구현하도록 구성된 업데이트 패키지를 획득하고 상기 하나 이상의 하드웨어 자원에 의한 사용을 위해 상기 업데이트 패키지를 분배함으로써 이용 가능한 펌웨어 업데이트를 적용하는 단계
    를 포함하는 방법.
  15. 제 13 항에 있어서,
    상기 안전한 부팅-전 환경은 상기 안전한 부팅-전 환경에서 신뢰할 수 없는 코드가 실행되는 것을 방지하는 보안 정책을 시행하도록 구성되는
    방법.
  16. 제 15 항에 있어서,
    게이트 키퍼 장치(gatekeeper device)로서 동작하는 상기 하드웨어 자원 중 하나에 상기 적어도 하나의 통지가 전송되고 상기 적어도 하나의 통지는 상기 게이트 키퍼 장치를 사용 불가 상태로 설정하는 사용 불가 명령을 포함하며,
    상기 게이트 키퍼 장치는 상기 하드웨어 자원의 적어도 일부에 대한 펌웨어 업데이트를 전체적으로(collectively) 관리하도록 구성되고,
    상기 사용 불가 상태일 때, 상기 게이트 키퍼 장치는 상기 게이트 키퍼 장치에 의해 관리되는 하드웨어 자원에 펌웨어 업데이트를 분배하지 않도록 구성되는
    방법.
  17. 컴퓨팅 장치에 의해 실행될 때 상기 컴퓨팅 장치로 하여금 동작을 수행하기위한 펌웨어 시스템을 구현하게 하는 인스트럭션을 저장하는 하나 이상의 컴퓨터 판독 가능 저장 매체로서,
    상기 동작은
    안전한 부팅-전 환경에서 펌웨어 업데이트를 사용 가능하게 하기 위해 상기 컴퓨팅 장치와 연관된 하나 이상의 관리되는 하드웨어 자원에 대한 업데이트 상태를 설정하는 것과,
    상기 컴퓨팅 장치의 부팅 시퀀스 중에 정의된 지속 시간 동안 펌웨어 업데이트를 사용 가능하게 하는 타이머를 설정하는 것 - 상기 타이머는 상기 컴퓨팅 장치의 운영 체제를 부팅하기 전에 만료되도록 설정되고 상기 컴퓨팅 장치의 운영 체제를 로딩하기 전에 상기 펌웨어 업데이트를 사용 불가능하게 하는 데 효과적임 - 과,
    상기 하나 이상의 관리되는 하드웨어 자원에 대해 이용 가능한 펌웨어 업데이트를 탐지하는 것과,
    상기 안전한 부팅-전 환경에서 탐지된 상기 이용 가능한 펌웨어 업데이트를 적용하는 것과,
    상기 펌웨어 업데이트의 적용 후에 상기 타이머의 만료에 응답하여, 부팅-후(post-boot) 환경에서 추가 펌웨어 업데이트가 발생하는 것을 제한하도록 상기 업데이트 상태를 변경하기 위해 사용 불가 명령을 상기 하나 이상의 관리되는 하드웨어 자원에 통신하는 것을 포함하는
    컴퓨터 판독 가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 업데이트 상태를 설정하는 것은 상기 안전한 부팅-전 환경이 상기 컴퓨팅 장치의 부트 코드에 의해 구축된다는 판정에 응답하여 사용 가능 명령을 상기 하나 이상의 관리되는 하드웨어 자원에 통신하는 것을 포함하는
    컴퓨터 판독 가능 저장 매체.
  19. 제 17 항에 있어서,
    상기 이용 가능한 펌웨어 업데이트를 적용하기 전에, 상기 이용 가능한 펌웨어 업데이트와 관련된 디지털 서명을 검증함으로써 상기 안전한 부팅-전 환경에 의해 구현되는 보안 정책에 따라 상기 이용 가능한 펌웨어 업데이트를 신뢰할 수 있는지 여부를 판정하는 것을 더 포함하고,
    상기 적용하는 것은 상기 판정에 기초하여 신뢰할 수 있는 펌웨어 업데이트를 적용하는 것을 포함하는
    컴퓨터 판독 가능 저장 매체.
  20. 제 17 항에 있어서,
    상기 사용 불가 명령은 관련된 시스템 펌웨어를 통해 하나 이상의 하드웨어 장치에 대한 펌웨어 업데이트를 전체적으로 관리하기 위해 상기 하나 이상의 하드웨어 장치에 대한 게이트 키퍼로서 구성된 컴포넌트로 전송되고,
    상기 사용 불가 명령은 상기 관련된 시스템 펌웨어가 상기 안전한 부팅-전 환경의 외부에서 상기 하나 이상의 관리되는 하드웨어 자원에 펌웨어 업데이트를 분배하는 것을 금지하도록 구성되는
    컴퓨터 판독 가능 저장 매체.
KR1020157005237A 2012-08-29 2013-08-26 보안 펌웨어 업데이트 기법 KR102048111B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/597,641 2012-08-29
US13/597,641 US9218178B2 (en) 2012-08-29 2012-08-29 Secure firmware updates
US13/651,252 US8898654B2 (en) 2012-08-29 2012-10-12 Secure firmware updates
US13/651,252 2012-10-12
PCT/US2013/056688 WO2014035908A1 (en) 2012-08-29 2013-08-26 Secure firmware updates

Publications (2)

Publication Number Publication Date
KR20150048136A KR20150048136A (ko) 2015-05-06
KR102048111B1 true KR102048111B1 (ko) 2019-12-02

Family

ID=49151325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157005237A KR102048111B1 (ko) 2012-08-29 2013-08-26 보안 펌웨어 업데이트 기법

Country Status (6)

Country Link
US (1) US8898654B2 (ko)
EP (1) EP2917870A1 (ko)
JP (1) JP2015531500A (ko)
KR (1) KR102048111B1 (ko)
CN (1) CN104603792B (ko)
WO (1) WO2014035908A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886887B2 (en) 2020-09-09 2024-01-30 Samsung Electronics Co., Ltd. Management method and device for updating underlying multi-level firmware programs using verifying controllers

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789034B1 (en) * 2011-12-31 2014-07-22 Parallels IP Holdings GmbH Method for updating operating system without memory reset
US9218178B2 (en) 2012-08-29 2015-12-22 Microsoft Technology Licensing, Llc Secure firmware updates
US8594850B1 (en) * 2012-09-30 2013-11-26 Nest Labs, Inc. Updating control software on a network-connected HVAC controller
US9189225B2 (en) 2012-10-16 2015-11-17 Imprivata, Inc. Secure, non-disruptive firmware updating
US9015694B2 (en) 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
US9349009B2 (en) * 2013-07-15 2016-05-24 Paul A. Rivera Method and apparatus for firmware based system security, integrity, and restoration
US20150193620A1 (en) * 2014-01-07 2015-07-09 Dell Products, Lp System and Method for Managing UEFI Secure Boot Certificates
KR20150098263A (ko) * 2014-02-19 2015-08-28 삼성전자주식회사 펌웨어를 갱신하기 위한 전자 장치 및 방법
GB201413836D0 (en) 2014-08-05 2014-09-17 Arm Ip Ltd Device security apparatus and methods
US20160147259A1 (en) * 2014-11-21 2016-05-26 Kabushiki Kaisha Toshiba Electronic device
US9524158B2 (en) * 2015-02-23 2016-12-20 Apple Inc. Managing firmware updates for integrated components within mobile devices
US10664573B2 (en) 2015-06-17 2020-05-26 Intel Corporation Computing apparatus and method with persistent memory
US9960912B2 (en) * 2015-07-06 2018-05-01 Quanta Computer Inc. Key management for a rack server system
GB2540961B (en) * 2015-07-31 2019-09-18 Arm Ip Ltd Controlling configuration data storage
GB2540965B (en) 2015-07-31 2019-01-30 Arm Ip Ltd Secure configuration data storage
CN105159707B (zh) * 2015-08-14 2018-06-29 飞天诚信科技股份有限公司 一种安全的金融终端的固件烧写方法及金融终端
CN108334372B (zh) * 2015-09-22 2021-04-09 Oppo广东移动通信有限公司 固件升级处理方法、装置和系统
US10592228B2 (en) * 2016-02-12 2020-03-17 Microsoft Technology Licensing, Llc Stylus firmware updates
EP3208717A1 (en) * 2016-02-17 2017-08-23 Gemalto Sa Method for managing objects in a secure element
CN107491698A (zh) * 2016-06-12 2017-12-19 联想(上海)信息技术有限公司 Hdd加密固件更新方法、装置及电子设备
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
US10416991B2 (en) 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10402273B2 (en) 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US10621353B2 (en) * 2016-12-28 2020-04-14 Intel Corporation Firmware loading for exploit resistance
US11263320B2 (en) 2017-01-20 2022-03-01 Hewlett-Packard Development Company, L.P. Updating firmware
JP6263294B1 (ja) * 2017-03-31 2018-01-17 西日本電信電話株式会社 セキュリティ製品評価装置、セキュリティ製品評価方法及びセキュリティ製品評価プログラム
US10754955B2 (en) * 2017-08-04 2020-08-25 Dell Products, L.P. Authenticating a boot path update
CA3073751C (en) * 2017-09-06 2023-08-15 Absolute Software Corporation Secure firmware interface
US10983925B2 (en) * 2017-12-12 2021-04-20 Hewlett-Packard Development Company, L.P. Configuration profile updates
KR20190074857A (ko) * 2017-12-20 2019-06-28 삼성전자주식회사 펌웨어를 업데이트하는 인터페이스 장치, 모바일 장치 및 펌웨어 업데이트 방법
EP3729760A1 (en) * 2017-12-22 2020-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Method for restricting memory write access in iot devices
EP3752913A4 (en) * 2018-02-16 2021-12-15 Reneo, Inc. SCALABLE HARDWARE LIFE CYCLE MAINTENANCE
CN112655228A (zh) * 2018-09-14 2021-04-13 昕诺飞控股有限公司 用于产生更新报告的系统和方法
CN111083001B (zh) * 2018-10-18 2021-09-21 杭州海康威视数字技术股份有限公司 一种固件异常检测方法及装置
JP7138043B2 (ja) * 2018-12-28 2022-09-15 日立Astemo株式会社 情報処理装置
US11194589B2 (en) * 2019-01-08 2021-12-07 Dell Products L.P. Information handling system adaptive component reset
US11550593B2 (en) * 2019-01-08 2023-01-10 Dell Products L.P. Information handling system quick boot
US11301566B2 (en) 2019-07-03 2022-04-12 Ati Technologies Ulc Firmware anti-rollback
US11016755B2 (en) * 2019-07-31 2021-05-25 Dell Products L.P. System and method to secure embedded controller flashing process
CN111045739B (zh) * 2019-12-03 2022-06-07 福州瑞芯微电子股份有限公司 基于启动程序的固件引导方法、介质及设备
US11582418B1 (en) 2020-01-06 2023-02-14 Cisco Technology, Inc. Secured communications with display device
US11947987B2 (en) * 2020-06-03 2024-04-02 Dell Products L.P. Live node imaging
US11416614B2 (en) * 2020-07-01 2022-08-16 Dell Products L.P. Statistical detection of firmware-level compromises
KR20220032268A (ko) 2020-09-07 2022-03-15 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11989551B2 (en) * 2021-03-18 2024-05-21 Quanta Computer Inc. Modular firmware composition
US11809851B2 (en) * 2021-06-10 2023-11-07 Dell Products L.P. System and method for managing update installation lockdown policies for firmware devices and driver-managed devices
US11861010B2 (en) * 2022-02-14 2024-01-02 Xilinx, Inc. Extensible device hosted root of trust architecture for integrated circuits
US11989305B2 (en) * 2022-07-21 2024-05-21 Dell Products L.P. Automated update of a customized secure boot policy

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7974416B2 (en) 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069452B1 (en) 2000-07-12 2006-06-27 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US6834340B2 (en) * 2001-03-01 2004-12-21 International Business Machines Corporation Mechanism to safely perform system firmware update in logically partitioned (LPAR) machines
US7243347B2 (en) 2002-06-21 2007-07-10 International Business Machines Corporation Method and system for maintaining firmware versions in a data processing system
US7099967B2 (en) * 2003-12-22 2006-08-29 Hewlett-Packard Development Company, L.P. System and method for storing an image file in a computer system
US7457945B2 (en) 2004-03-23 2008-11-25 Dell Products L.P. System and method for providing a secure firmware update to a device in a computer system
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
KR100706471B1 (ko) * 2005-06-30 2007-04-10 주식회사 대우일렉트로닉스 전자기기의 펌웨어 업데이트 방법
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
KR20080090939A (ko) 2007-04-06 2008-10-09 삼성전자주식회사 펌웨어의 업데이트 파일 생성 방법, 펌웨어 업데이트파일을 이용한 업데이트 방법 및 그 장치
US20090327741A1 (en) 2008-06-30 2009-12-31 Zimmer Vincent J System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid)
US8606377B2 (en) * 2009-07-23 2013-12-10 Biosense Webster, Inc. Preventing disruptive computer events during medical procedures
US8275560B2 (en) * 2009-09-10 2012-09-25 Intel Corporation Power measurement techniques of a system-on-chip (SOC)
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
WO2011075139A1 (en) 2009-12-18 2011-06-23 Hewlett-Packard Development Company, L.P. Methods and devices for updating firmware of a component using a firmware update application
US8522322B2 (en) * 2010-09-22 2013-08-27 Intel Corporation Platform firmware armoring technology
KR20120041384A (ko) * 2010-10-21 2012-05-02 삼성전자주식회사 모바일 디바이스의 펌웨어 업데이트 방법 및 장치
US9218178B2 (en) 2012-08-29 2015-12-22 Microsoft Technology Licensing, Llc Secure firmware updates

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7974416B2 (en) 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886887B2 (en) 2020-09-09 2024-01-30 Samsung Electronics Co., Ltd. Management method and device for updating underlying multi-level firmware programs using verifying controllers

Also Published As

Publication number Publication date
US8898654B2 (en) 2014-11-25
EP2917870A1 (en) 2015-09-16
WO2014035908A1 (en) 2014-03-06
JP2015531500A (ja) 2015-11-02
CN104603792B (zh) 2019-08-06
KR20150048136A (ko) 2015-05-06
US20140068585A1 (en) 2014-03-06
CN104603792A (zh) 2015-05-06

Similar Documents

Publication Publication Date Title
KR102048111B1 (ko) 보안 펌웨어 업데이트 기법
US9218178B2 (en) Secure firmware updates
US9262153B2 (en) Firmware update discovery and distribution
CN110199271B (zh) 用于现场可编程门阵列虚拟化的方法和设备
US8589902B2 (en) Policy description technique in UEFI firmware
US9110761B2 (en) Resource data structures for firmware updates
JP6293657B2 (ja) 他のオペレーティング・システムへのブート動作の動的なリダイレクト
US10338933B2 (en) Method for generating custom BIOS setup interface and system therefor
KR20160147862A (ko) 확장자가 애플리케이션의 기능을 다른 애플리케이션으로 확장하게 하는 고정적 확장 포인트
US10922445B2 (en) Computing systems and methods
US10628588B2 (en) Information processing apparatus and computer readable storage medium
US10430589B2 (en) Dynamic firmware module loader in a trusted execution environment container
US20140149730A1 (en) Systems and methods for enforcing secure boot credential isolation among multiple operating systems
US11861577B2 (en) System and method for distributed enforcement of configuration limitations
WO2013159632A1 (zh) 实现安全防护的方法、防火墙、终端及可读存储介质
US11829740B2 (en) System and method for deployment level management of subscription based solutions
US20190332773A1 (en) Remote integrity assurance of a secured virtual environment
US20230221784A1 (en) System and method for power state enforced subscription management
US11671379B1 (en) System and method for subscription management using dynamically composed management entities
CN107615293B (zh) 包括期满检测的平台管理方法和装备
JP2015197916A (ja) 複数のオペレーティングシステムを動作させる方法および電子装置
US20070214345A1 (en) System and method for porting an operating system
CN106484481B (zh) 一种多开应用的配置方法、装置及终端
US20220229666A1 (en) Managing deployment model migrations for enrolled devices
WO2015081678A1 (zh) 用户接口界面加载方法、装置和瘦终端

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant