KR101626397B1 - Bios 플래시 어택 보호 및 통지 - Google Patents

Bios 플래시 어택 보호 및 통지 Download PDF

Info

Publication number
KR101626397B1
KR101626397B1 KR1020147001515A KR20147001515A KR101626397B1 KR 101626397 B1 KR101626397 B1 KR 101626397B1 KR 1020147001515 A KR1020147001515 A KR 1020147001515A KR 20147001515 A KR20147001515 A KR 20147001515A KR 101626397 B1 KR101626397 B1 KR 101626397B1
Authority
KR
South Korea
Prior art keywords
bios
firmware
initialization
processor
computing platform
Prior art date
Application number
KR1020147001515A
Other languages
English (en)
Other versions
KR20140043126A (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 KR20140043126A publication Critical patent/KR20140043126A/ko
Application granted granted Critical
Publication of KR101626397B1 publication Critical patent/KR101626397B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/2153Using hardware token as a secondary aspect
    • 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

Abstract

BIOS 플래시 어택 보호 및 통지를 위한 시스템 및 방법이 개시된다. 초기화 펌웨어 검증 모듈을 포함하는 프로세서 초기화 모듈은 파워 온 및/또는 리셋에 응답하여 우선 실행되고 비휘발성 메모리에 저장된 초기화 펌웨어를 프로세서 패키지에서 검증하도록 구성될 수 있다. 초기화 펌웨어는 BIOS를 검증하도록 구성된다. 초기화 펌웨어 및/또는 BIOS의 검증이 실패하면, 시스템은 BIOS가 실행되는 것을 방지하는 것, 복구를 개시하는 것, 검증 실패를 보고하는 것, 홀트하는 것, 셧다운하는 것 및/또는 BIOS가 실행되는 것을 허용하고 운영 체제(OS)가 제한된 기능성 모드에서 부팅되는 것을 허용하는 것을 포함하지만, 이들에 제한되지 않는 복수의 응답들 중 적어도 하나를 선택하도록 구성된다.

Description

BIOS 플래시 어택 보호 및 통지{BIOS FLASH ATTACK PROTECTION AND NOTIFICATION}
본 개시는 BIOS 보호에 관한 것으로, 특히 BIOS 플래시 어택 보호 및 통지에 관한 것이다.
컴퓨팅 장치들, 개인용 컴퓨터들, 워크스테이션들, 및 서버들(이하 "컴퓨터" 또는 "컴퓨터들")은 전형적으로 기본 입출력 시스템(BIOS:basic input and output system)을 컴퓨터 하드웨어(예를 들어, 프로세서, 칩셋들, 메모리 등)와 운영 체제(OS) 사이의 인터페이스로서 포함한다. BIOS는 기본 키보드, 비디오, 디스크 드라이브, 입력/출력(I/O) 포트(들), 및 컴퓨터 마더보드와 연관되는 칩셋 드라이버들(예를 들어, 메모리 컨트롤러들)과 같은 컴퓨터의 로우 레벨 하드웨어 서비스들을 초기화하여 인에이블하기 위해 펌웨어 및/또는 소프트웨어 코드를 포함한다.
기본 입출력 시스템(BIOS)과 같은 펌웨어에 의한 컴퓨터 시스템의 초기화 및 구성은 사전 부팅(pre-boot) 페이즈 동안 발생한다. 리셋 후에, 프로세서는 BIOS 펌웨어를 저장하는 비휘발성 저장 장치에 매핑되는 미리 결정된 어드레스를 참조한다. 프로세서는 BIOS 명령어들을 순차적으로 인출(fetch)한다. 이 명령어들은 전형적으로 컴퓨터가 그것의 전자 하드웨어를 초기화하고, 그의 주변 장치들을 초기화하며, 운영 체제를 부팅하게 한다. UEFI(Unified Extensible Firmware Interface)는 수개의 페이즈들, 예를 들어 보안 페이즈(SEC:security phase), 플랫폼 환경 초기화(PEI:platform environmental initialization), 드라이버 실행 환경(DXE:driver execution environment) 페이즈, 및 부팅 장치 선택(BDS:boot device select) 페이즈를 포함하는 최신 BIOS 펌웨어 아키텍처이다.
플랫폼 펌웨어를 손상시키는 방법들은 계속적으로 개발되고 있다. 플랫폼 펌웨어를 손상시키면 축적된 툴은 시스템을 공격할 수 있다. 소프트웨어 공격들과 달리, 손상된 펌웨어는 검출하기 힘들고 복구가 곤란한다. 손상된 펌웨어는 일반적으로 대부분의 안티 바이러스 및 스파이웨어 툴을 포함하는 시스템의 소프트웨어 계층에 보이지 않는다. 펌웨어의 보이지 않는 지속적 성질은 악성 루트킷들에게 이상적이다. 루트킷들은 실행 소프트웨어에 대한 최고의 가능한 권한 및 최저의 가시성을 달성하는 플랫폼 내의 작은 휴면의 악성 훅들이다. 그의 주요 기능은 공격을 전달하거나 감염된 시스템 상의 다른 바이러스들 및 웜들에 대한 API를 제공하는 것이다.
BIOS는 전형적으로 플래시 메모리에 저장되어 재프로그램가능성을 허용한다. 그 다음, 프로그래밍은 폼 팩터 및 최종 사용자 편의 이유들 때문에 점퍼 변경들 없이 수행될 수 있다. 이러한 재프로그램가능성은 비인가자들 및/또는 멀웨어에 의한 공격에 취약성을 야기한다. BIOS의 취약성이 활용될 수도 있다. 시스템 BIOS에 대한 액세스를 통해, 시스템 재부팅을 지속하는 루트킷이 설치될 수 있다. 안티 바이러스 소프트웨어는 이러한 "지속적" 루트킷을 신뢰성있게 검출할 수 없다.
일부 상황들에서, BIOS는 실제 ROM에 저장될 수 있어, 재프로그램가능성을 방지한다. 그러나, 시스템 및 BIOS를 저장하는 ROM에 대한 물리적 액세스를 통해서만 구현될 수 있는 BIOS 갱신들 및 다른 적당한 수정들이 필요할 수 있다.
청구된 발명 대상의 특징들 및 장점들은 그것에 따른 실시예들의 이하의 상세한 설명으로부터 분명할 것이며, 그 설명은 첨부 도면들을 참조하여 고려되어야 한다.
도 1은 본 개시의 다양한 실시예들에 따른 시스템(컴퓨팅 플랫폼)을 예시한다.
도 2는 본 개시의 일 실시예에 따른 플래시 메모리에 저장되는 정보에 대한 예시적 저장 배열을 예시한다.
도 3은 본 개시에 따른 BIOS를 검증하는 예시적 동작들의 흐름도를 예시한다.
도 4는 본 개시에 따른 BIOS를 검증하는 예시적 동작들의 다른 흐름도를 예시한다.
도 5는 본 개시의 일 실시예에 따른 리셋으로부터 OS 부팅으로의 부팅 프로세스와 연관되는 동작들의 그래픽 예시이다.
이하의 상세한 설명은 예시적 실시예들을 참조하는 것으로 진행하지만, 그것의 많은 대안들, 수정들, 및 변형들은 당업자들에게 분명할 것이다.
일반적으로, 본 개시는 BIOS 스토리지 어택 보호 및 통지를 위한 시스템들(및 방법들)을 제공한다. 하나의 예시적 시스템(컴퓨팅 플랫폼)은 프로세서 및 프로세서에 결합된 오프 다이 비휘발성 메모리(off-die non-volatile memory)를 포함하는 프로세서 컴플렉스(processor complex)를 포함한다. 프로세서는 프로세서 초기화 모듈을 포함하고 휘발성 및 비휘발성 메모리를 포함할 수 있다. 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함하고 프로세서 컴플렉스는 초기화 펌웨어를 포함한다. 초기화 펌웨어는 프로세서의 ISA(Instruction Set Architecture)에 기록될 수 있고 오프 다이 비휘발성 메모리에 저장될 수 있다.
프로세서 초기화 모듈은 프로세서의 내부 초기화를 수행하기 위해 리셋에 응답하여 우선 실행되도록 구성된다. 리셋은 파워 온 및/또는 모델 특정 레지스터의 상태에 의해 트리거될 수 있다. 본 명세서에 사용되는 바와 같이, "리셋"은 흐름 제어가 프로세서 초기화 모듈에 복귀되는 재시작 이벤트이다. 리셋은 시스템의 전기 구성요소들이 재시작 전에 파워가 제거된 파워 온 리셋을 포함한다. 메모리 내용은 후속 복구를 위해 저장될 수 있거나 저장되지 않을 수 있다. 리셋은 파워가 시스템의 전기 구성요소들에 유지되는 CPU 전용 리셋을 더 포함한다.
초기화 펌웨어 검증 모듈은 프로세서 초기화 모듈의 일부로서, 초기화 펌웨어를 검증하도록(즉 검증 또는 인증하려고 시도하도록) 구성된다. 프로세서 초기화 모듈 및/또는 초기화 펌웨어 검증 모듈은 프로세서 휘발성 및/또는 비휘발성 메모리에 저장된 마이크로코드, 회로 및/또는 상태 정보를 포함할 수 있다. 초기화 펌웨어는 초기화 펌웨어 검증 모듈 뒤에 실행되도록 구성되고 BIOS를 검증하도록(즉, 검증하려고 시도하도록) 구성된다. 초기화 펌웨어는 프로세서 ISA 또는 내부 포맷일 수 있다. 초기화 펌웨어 및/또는 BIOS의 검증이 실패하면, 시스템은 하나 이상의 응답(들)을 개시하도록 구성된다. 응답들은 초기화 펌웨어 및/또는 BIOS가 실행되는 것을 방지하는 것, 복구를 (예를 들어, 대역외(OOB:out-of-band) 통신을 사용하여) 개시하는 것, 모델 특정 레지스터(MSR:model-specific register)를 사용하여 검증 실패를 보고하는 것, 홀트하는(halting) 것, 셧다운하는(shutting down) 것, 및/또는 "격리 모드(quarantine mode)"에서의 동작을 위해 컴퓨팅 플랫폼을 구성하여, BIOS가 실행되는 것을 허용하고 운영 체제(OS)가 부팅되는 것을 허용하는 것을 포함하지만 이들에 제한되지 않는다. 격리 모드에서, 시스템의 일부 기능성은 BIOS 및 OS에 이용가능하지 않을 수 있다.
유리하게, 프로세서 초기화 모듈, 초기화 펌웨어 검증 모듈 및 초기화 펌웨어는 프로세서 패키지에 통합되고 전형적으로 프로세서 제조자 이외의 당사자들에게 이용가능하지 않다. 초기화 펌웨어 출처(provenance) 및 진정성(authenticity)은 프로세서 컴플렉스에 의해 보증될 수 있고, 초기화 펌웨어는 분할된 메모리를 포함할 수 있는 분리된 실행 모드에서 실행될 수 있다. UEFI BIOS와 달리, 내부 프로세서 초기화/리셋 및 펌웨어 인터페이스들은 일반적으로 이용가능하지 않을 수 있다. 격리 모드에서 동작을 허용하는 것은 동작을 전체적으로 방지하는 것보다는 오히려 BIOS 검증이 실패할 때 제한된 동작을 제공한다. 그 다음, BIOS 검증 실패는 사용자에게 통신될 수 있다. 예를 들어, BIOS는 예를 들어 마더보드 상의 물리적 점퍼 설정들을 사용하여 국부적으로 갱신될 수 있다. 다른 예에서, BIOS는 원격 에이전트와의 OOB 통신을 사용하여 네트워크를 통해 갱신될 수 있다.
시스템 아키텍처
도 1은 본 개시의 다양한 실시예들에 따른 시스템을 예시한다. 도 1의 시스템(100)은 프로세서 컴플렉스(102), 시스템 메모리(RAM)(104)(OS(150)를 포함함), 플랫폼 컨트롤러 허브(PCH:platform controller hub)(106), TPM(trusted platform module)(108), 하나 이상의 디스크 드라이브(들)(110), 마이크로프로세서 서브시스템(112), EEPROM(114) 및 네트워크 포트(116)를 포함할 수 있다. 시스템(100)은 네트워크(120), 및 네트워크 포트(116)를 통해 원격 에이전트(118)에 결합될 수 있다. 분리된 블록으로 도시되지만, 일부 실시예들에서, TPM(108)은 마이크로프로세서 서브시스템(112) 내에 포함될 수 있다.
시스템(100)의 일반적 개요로서, 프로세서 컴플렉스(102)는 초기화 펌웨어 검증 모듈(128)을 포함하는 프로세서 초기화 모듈(126)을 실행하도록 구성되고, 시스템 리셋에 응답하여, 예를 들어 시스템의 파워 온 및/또는 모델 특정 레지스터(MSR:model-specific register)의 상태에 응답하여 초기화 펌웨어(130)를 실행할 수 있다. 프로세서 초기화 모듈(126) 및 초기화 펌웨어 검증 모듈(128)은 마이크로코드 및/또는 회로로 구현될 수 있다. 초기화 펌웨어 검증 모듈(128)은 초기화 펌웨어(130)를 검증하도록 구성되고 초기화 펌웨어(130)는 BIOS를 검증하도록 구성된다. 초기화 펌웨어 검증 모듈(128)은 온 다이(즉, 프로세서(122) 다이 상에) 및/또는 온 패키지(즉, 프로세서 컴플렉스(102) 내에) 포함될 수 있다. 예를 들어, 전용 상태 머신들 및/또는 내장(종속) 컨트롤러들은 검증 활동들을 원조하며/하거나 수행할 수 있다. 그러한 전용 상태 머신들 및/또는 내장 컨트롤러들은 프로세서 컴플렉스(102) 내에 포함될 수 있다. 예를 들어, 초기화 펌웨어(130)는 검증된 부팅을 구현하기 위해 암호화 무결성 체크를 암호화 서명된 BIOS 상에 수행할 수 있다. BIOS 검증이 실패하면, 이 때 프로세서 컴플렉스(102)는 하나 이상의 응답들을 개시하도록 구성된다. 응답들은 일부 시스템 기술들에 대한 BIOS(및 OS) 액세스를 제한하는 것 및/또는 일부 시스템 기술들을 디스에이블하는 것(즉, 격리 모드에서 부팅하는 것), 모델 특정 레지스터를 갱신하는 것(예를 들어, 보고하기 위해), 복구를 (예를 들어, 대역외(OOB:out-of-band) 기능성을 통해) 개시하는 것, BIOS의 동작을 방지하는 것, OS의 부팅을 방지하는 것, 홀트하는 것, 셧다운하는 것 및/또는 그것의 조합들을 포함하지만, 이들에 제한되지 않는다. 특정 응답(들)은 본 명세서에 설명되는 바와 같이, 제조 시에 선택될 수 있으며/있거나 프로세서 구성 및/또는 초기화 펌웨어를 갱신함으로써 선택될 수 있다.
프로세서 컴플렉스(102)는 프로세서(CPU)(122) 및 오프 다이 비휘발성 메모리(124)를 포함할 수 있다. 예를 들어, 오프 다이 비휘발성 메모리(124)는 프로세서(122) 및 오프 다이 비휘발성 메모리(124)를 포함하는 프로세서 컴플렉스 패키지 내에 포함될 수 있다. 다른 예에서, 비휘발성 메모리(124)는 프로세서(122) 내에, 예를 들어 동일한 다이 상에 포함될 수 있다. 프로세서(122)는 비휘발성 메모리(123), 프로세서 초기화 모듈(126), 초기화 펌웨어 검증 모듈(128), pMSR들(132) 및/또는 eMSR들(133)을 포함할 수 있다. 초기화 펌웨어 검증 모듈(128)은 프로세서 초기화 모듈(126) 내에 포함될 수 있거나 분리 모듈일 수 있다. 프로세서 초기화 모듈(126) 및/또는 초기화 펌웨어 검증 모듈(128)은 휘발성 및/또는 비휘발성 메모리에 저장된 마이크로코드, 회로 및/또는 상태 정보를 포함할 수 있다.
온 다이 및/또는 온 패키지 비휘발성 메모리는 내용이 제조 시에 설정되는 판독 전용(예를 들어, ROM들), 공장 갱신가능(예를 들어, 퓨즈들), 및/또는 현장 갱신가능(예를 들어, 퓨즈들, 플래시)을 포함하지만, 이들에 제한되지 않는 복수의 비휘발성 메모리 기술들을 포함할 수 있다. 예를 들어, 프로세서 비휘발성 메모리(123)는 마이크로코드 및/또는 다른 지속 프로세서 상태 정보를 저장하도록 구성될 수 있다. 오프 다이 비휘발성 메모리(124)는 초기화 펌웨어(130)를 저장하도록 구성된다. 초기화 펌웨어 검증 모듈(128) 및 초기화 펌웨어(130)는 전형적으로 프로세서 제조자에 의해 생성되고, 제조 프로세스 동안 저장될 수 있다. 초기화 펌웨어 검증 모듈(128) 및 초기화 펌웨어(130)를 포함하는 프로세서 컴플렉스(102)는 비교적 안전하고 일반적으로 멀웨어에 의한 어택들이 접속불가능할 수 있다. 초기화 펌웨어 검증 모듈(128)(예를 들어, 퓨즈들 및/또는 재프로그램가능 상태 머신들을 포함함) 및 초기화 펌웨어(130)는 예를 들어 암호화 키들을 사용하여 안전하게 갱신될 수 있다.
프로세서 비휘발성 메모리(123)의 적어도 일부는 하나 이상의 모델 특정 레지스터들(MSRs)(132, 133)을 통해 액세스가능할 수 있다. MSR들은 프로세서 구성에 액세스하며/하거나 프로세서 구성을 제어하도록 구성될 수 있다. MSR들은 pMSR들(persistent MSR들)(132) 및/또는 eMSR들(ephemeral MSR들)(133)을 포함할 수 있다. pMSR들(persistent MSRs)(132)은 파워 사이클들에 걸쳐 지속하도록 구성되며, 즉 비휘발성인 것으로 간주될 수 있다. eMSR들(ephemeral MSRs)(133)은 시스템(100)이 전원 공급되고 실행하고 있는 동안에만 지속하도록 구성되며, 즉 휘발성인 것으로 간주될 수 있다. pMSR들(132) 및 eMSR들(133) 둘 다는 구성 정책을 노출하고 프로세서(122) 상태를 제3자들에게 보고하도록 구성된다. 예를 들어, MSR들(132, 133)은 파워 관리 기능들을 턴 온 또는 턴 오프하고, 에러들을 보고하고, 상태를 보고하며/하거나 특정 기능성(예를 들어, 하이퍼바이저)을 턴 온 또는 턴 오프하기 위해 사용될 수 있다. 일부 실시예들에서, eMSR들(133)은 검증 실패를 보고하기 위해 사용될 수 있다. 예를 들어, BIOS_VERIFICATION MSR은 BIOS 검증이 실패하면 설정될 수 있다. 유리하게, BIOS_VERIFICATION MSR을 eMSR(ephemeral MSR)(133)로 구성하는 것은 BIOS 판매 회사가 BIOS를 컴퓨팅 플랫폼의 동작 수명 동안 갱신하는 것을 허용한다.
일반적으로, MSR들(132, 133)은 판독 MSR(예를 들어, 액세스 상태) 또는 기록 MSR 명령어(예를 들어, MSR의 변경 내용)를 사용하여 제3자 기능들에 의해 액세스될 수 있다. MSR들(132, 133)의 일부는 "변경불가능(immutable)"할 수 있고 이는 변경불가능 MSR들의 내용이 제3자 대역외 또는 대역내 프로세서 ISA 코드 실행 동작에 의해 변경될 수 없는 것을 의미한다. 예를 들어, BIOS_VERIFICATION MSR은 변경불가능할 수 있다. 멀웨어는 변경불가능 MSR이 예를 들어 BIOS의 상태를 보고하기 위해 비교적 안전한 채널을 제공할 수 있도록 변경불가능 MSR의 내용을 변경할 수 없다. 일 실시예에서, MSR들(132, 133)은 초기화 펌웨어 검증 모듈(128) 및 초기화 펌웨어(130)의 실행 및 그의 연관된 검증 동작들을 트리거하도록 구성되는 Platform_Update MSR을 포함할 수 있다. 예를 들어, Platform_Update MSR은 후보 BIOS 펌웨어 갱신과 함께 기록될 때 실행을 트리거할 수 있다.
프로세서 컴플렉스(102)는 시스템(100) 리셋에 응답하여 초기화 펌웨어 검증 모듈(128)을 포함하는 프로세서 초기화 모듈(126)을 실행하도록 구성된다. 프로세서 컴플렉스(102)는 모델 특정 레지스터, 예를 들어 Platform_Update MSR에 기초하여 프로세서 초기화 모듈(126) 및 초기화 펌웨어 검증 모듈(128)을 실행하도록 구성될 수 있다. 초기화 펌웨어 검증 모듈(128)은 본 명세서에 설명된 바와 같이, 초기화 펌웨어(130)를 검증하도록 구성된다. 초기화 펌웨어(130)의 검증이 실패하면, 초기화 펌웨어 검증 모듈(128)은 본 명세서에 설명된 바와 같이, 하나 이상의 응답(들)을 개시하도록 구성될 수 있다. 예를 들어, 프로세서 초기화 모듈(126) 및 초기화 펌웨어 검증 모듈(128)은 휘발성 및/또는 비휘발성 스토리지에 저장된 마이크로코드, 회로 및/또는 상태 정보를 포함할 수 있다. 초기화 펌웨어(130)의 검증이 성공적이면, 프로세서 컴플렉스(102)는 초기화 펌웨어(130)를 실행하도록 구성된다. 이러한 방식으로, 초기화 펌웨어는 BIOS를 검증하기 전에 체크(검증)될 수 있다. 본 명세서에 설명된 방법 및 시스템은 프로세서 초기화 모듈(126) 및 초기화 펌웨어 검증 모듈(128)에 정착된(rooted) 다음에, 초기화 펌웨어(130)로 확장된 후에, BIOS(134)로 확장되는 일련의 신뢰를 설정하도록 구성된다.
EEPROM(114)은 BIOS(134), 펌웨어 인터페이스 테이블(FIT: firmware interface table)(136) 및 매니지어빌리티 엔진(ME:manageability engine) 펌웨어(138)를 저장하도록 구성된다. EEPROM(114)은 재프로그램가능하여 BIOS(134)에 대한 갱신들을 허용한다. BIOS(134)는 예를 들어 마이크로프로세서 서브시스템(112) 및 매니지어빌리티 엔진(manageability engine) 펌웨어(138)를 통해 네트워크(120)에 결합될 수 있어 원격 프로그래밍을 허용한다. 예를 들어, EEPROM(114)은 국부적으로 또는 원격으로 재프로그램되도록 구성되는 플래시 메모리일 수 있다. 예를 들어, 플래시 메모리는 NOR-타입 플래시 메모리일 수 있다. NOR 플래시 메모리는 전형적으로 바이트 기록가능하고, 블록 소거가능하며, NAND 타입 플래시 메모리보다 더 작고(예를 들어, NOR에 대한 1 메가바이트 내지 16 메가바이트 대 NAND에 대한 기가바이트) 전형적으로 제자리 실행(execute-in-place) 코드에 사용된다. EEPROM(114)은 저항 기반 및/또는 충전 기반 메모리들(예를 들어, 페라이트 코어 메모리), PCM(Phase Change Memory), 자기 기반 메모리(MRAM:Magnetic-based memory), 탄소 나노튜브 기반 비휘발성 메모리 기술들 등을 포함하지만, 이들에 제한되지 않는 다른 타입의 재프로그램가능 비휘발성 스토리지일 수 있다. 그러한 기술들은 재프로그램가능할 때 "비휘발성 RAM" 또는 "NVRAM"으로 칭해질 수 있고, 퓨즈들/퓨즈 어레이들과 같은 한번 기록 스토리지(write-once storage)를 포함할 수 있다. NOR-플래시 및 플래시 메모리들이 본 명세서에서 논의되지만, 다른 비휘발성 메모리 기술들이 본 개시에 따라 이용될 수 있다. 사용된 특정 메모리 기술은 시스템 요건들에 의존할 수 있고 설계 선택적이다.
도 2는 플래시 메모리(114)에 저장된 정보에 대한 예시적 저장 배열(200)을 예시한다. 플래시는 BIOS 초기화 모듈(202), BIOS(204) 및 다른 펌웨어(206)를 포함할 수 있다. BIOS 초기화 모듈(202)은 프로세서 리셋 벡터(208), FIT 포인터(210) 및 FIT 구조(212)를 포함할 수 있다. FIT 구조(212)는 엔드-오브-FIT(end-of-FIT) 마커(214), BIOS 초기화 모듈 포인터(216), 검증 인증서(218) 및/또는 FIT 헤더(220)를 포함할 수 있다. 도 2의 FIT 구조(212)는 도 1의 FIT(136)에 대응하고 도 2의 BIOS(204)는 도 1의 BIOS(134)에 대응한다.
FIT(136)는 플래시 메모리(114)에 저장된 BIOS(134)를 포함하는 펌웨어에 대한 인터페이스(즉, 포인터들)를 제공하도록 구성된다. FIT(136)가 비어 있거나 무효화되면, 프로세서 부트스트랩은 디폴트 프로세서 부트스트랩 또는 리셋 벡터 어드레스로 복귀되도록 구성될 수 있다. FIT(136)가 비어 있지 않으면, 그것은 실행가능 코드 및/또는 데이터를 기재하도록 구성되는 다양한 레코드들을 포함할 수 있다. 그러한 레코드들은 디폴트 리셋 벡터 어드레스 대신에 또는 더하여 실행될 플래시 메모리 내의 코드/데이터의 블록에 포인터들과 같은 포인터들 및 다른 메타데이터를 포함할 수 있다. FIT(136), 또는 유사한 메커니즘은 프로세서의 디폴트 리셋 벡터(208)를 사용하여 구현되는 디폴트 동작들 대신에 또는 이에 더하여 대체 사양 및/또는 기능성 로딩을 고려하도록 구성된다. 이러한 구성은 시스템 커스터마이즈화 및 패칭(patching) 목적들에 사용될 수 있다. 초기화 펌웨어(130)는 FIT 구조(212) 내의 포인터(예를 들어, BIOS 초기화 모듈 포인터(216))를 사용하여 플래시(114) 내의 BIOS(134)의 위치를 결정할 수 있다. 일부 실시예들에서, 초기화 펌웨어(130)는 BIOS(134)의 위치를 결정하기 위해 다른 기술들, 예를 들어 검색 플래시(114) 및/또는 플랫폼 스트래핑(platform strapping) 옵션들을 사용할 수 있다.
BIOS(134)는 하드웨어를 초기화하여 테스트하고 OS(150)를 로드하도록 구성된다. 재프로그램가능성은 BIOS(134)가 (EEPROM(114)을 교체하는 것 없이) 갱신되는 것을 허용하지만 또한 악성 프로그램들에 의한 공격을 위한 애비뉴(avenue)를 제공한다. BIOS(134)를 손상시킬 수 있는 악성 프로그램들은 전형적으로 비교적 높은 권한 레벨에서 실행되므로 종래의 안티 멀웨어 프로그램들에 의해 검출하는 것은 어렵다. 유리하게, 본 개시에 따른 초기화 펌웨어 검증 모듈(128) 및 초기화 펌웨어(130)는 프로세서(122)가 BIOS(134) 코드를 인출하며/하거나 실행하기 전에 실행되도록 구성되고, 따라서 그것의 실행 전에 손상된 BIOS를 검출할 수 있다. BIOS(134)가 손상되면(즉, 검증이 실패하면), 초기화 펌웨어(130)는 본 명세서에 설명된 하나 이상의 응답들을 개시하도록 구성된다. 예를 들어, 손상된 시스템의 검출에 응답하여, 대체 FIT 엔트리는 EEPROM(114) 내의 저장 구조(200)의 복구 BIOS 블록으로 향하도록 구성될 수 있다. 다른 예에서, EEPROM(114)은 손상된 시스템의 검출에 응답하여 액세스(디코딩)될 수 있는 EEPROM(114)(또는 다른 별개 EEPROM)의 분리 영역에 저장된 BIOS(134)의 사본을 포함할 수 있다. 다시 말하면, 시스템(100)은 BIOS(134)의 검증이 실패하면 실행되도록 구성되는 "백업" BIOS를 포함할 수 있다. 백업 BIOS는 EEPROM(114) 및/또는 다른 EEPROM에 저장될 수 있다.
도 1을 다시 참조하면, 마이크로프로세서 서브시스템(112)은 내장 마이크로프로세서(140), 캐시 메모리(142) 및 비휘발성 메모리(ROM)(144)를 포함할 수 있다. 마이크로프로세서 서브시스템(112)은 플래시 메모리(114)에 저장된 매니지어빌리티 엔진 펌웨어(138)를 실행하도록 구성된다. 이 실시예에서, 마이크로프로세서 서브시스템(112)은 플랫폼 컨트롤러 허브(PCH:Platform Controller Hub)(106)를 통해 프로세서 컴플렉스(102)에 결합되고 네트워크 포트(116)를 통해 네트워크(120) 및 원격 에이전트(118)에 결합된다. 마이크로프로세서 서브시스템(112)은 대역외 통신을 제공하도록 구성된다. 대역외 통신은 마이크로프로세서 서브시스템(112)과 프로세서 컴플렉스(102) 사이 및/또는 시스템(100)과 원격 에이전트(118) 사이일 수 있다. 예를 들어, BIOS(134)의 검증이 실패하면, 마이크로프로세서 서브시스템(112)(및 매니지어빌리티 엔진 펌웨어(138))은 원격 에이전트(118)와 OOB 통신하여 갱신되고 검증된 BIOS를 원격 에이전트(118)로부터 검색하도록 구성될 수 있다. 유리하게, 이것은 플래시 메모리(114)에 대한 실제적인 온사이트 물리적 액세스를 필요로 하는 것 없이, 공격받았던 플래시 메모리에 저장된 BIOS를 원격으로 갱신하는 것 및/또는 인증하는 것을 허용할 수 있다.
따라서, 리셋(예를 들어, 파워 온에 연관되며/되거나 모델 특정 레지스터의 상태에 기초함)에 응답하여, 시스템(100)은 초기화 시퀀스(즉, 프로세서(122) 초기화 페이즈)를 실행하기 위한 프로세서 초기화 모듈(126) 및 프로세서 컴플렉스(102)에 포함된 초기화 펌웨어(130)를 검증하도록 구성된 초기화 펌웨어 검증 모듈(128)을 실행하도록 구성된다. 시스템(100)은 초기화 펌웨어(130)를 실행하여 BIOS(134)를 검증하도록 더 구성된다. 초기화 펌웨어(130) 및/또는 BIOS(134)의 검증이 실패하면, 시스템(100)은 시스템(컴퓨팅 플랫폼)을 구성하여 제한된 기능성을 갖는 격리 모드에서 부팅하는 것, 복구 프로세스(예를 들어, OOB 기능성을 통해)를 개시하는 것, 하나 이상의 MSR들을 사용하여 검증 상태를 보고하는 것, 초기화 펌웨어 및/또는 BIOS가 실행되는 것을 방지하는 것, 프로세서를 셧다운하는 것 및/또는 정지시키는 것을 포함하지만, 이들에 제한되지 않는 하나 이상의 응답들을 개시하도록 더 구성된다. 유리하게, BIOS(134)와 달리, 프로세서 컴플렉스(102)에 포함된 프로세서 초기화 모듈(126), 초기화 펌웨어 검증 모듈(128) 및 초기화 펌웨어(130)는 상대적으로 액세스불가능하고(예를 들어, 그들은 온 다이이거나 온 프로세서 패키지 기판임) 일반적으로 공개된 인터페이스 프로토콜을 포함하지 않는다. 이러한 구성의 프로세서 초기화 모듈(126), 초기화 펌웨어 검증 모듈(128), 초기화 펌웨어(130) 및 프로세서 컴플렉스(102)는 BIOS(134)가 검증될 수 있는 "신뢰 루트"를 제공한다.
예시적 방법
도 3은 본 개시에 따른 BIOS를 검증(인증)하는 예시적 동작들의 흐름도(300)를 예시한다. 이 실시예에 예시된 동작들은 시스템(100)과 연관되는 회로, 펌웨어 및/또는 소프트웨어 모듈들(예를 들어, CPU(122)를 포함하는 프로세서 컴플렉스(102))에 의해 수행될 수 있다. 절차 흐름은 동작(305)에서 시작할 수 있다. 동작(305)은 리셋, 예를 들어 파워 온 리셋 또는 CPU 전용 리셋을 포함한다. 동작(310)은 프로세서 초기화 모듈을 실행하는 것을 포함한다. 동작(310)은 초기화 펌웨어 검증 모듈을 실행하는 것을 포함하고 파워 온과 연관되는 다른 프로세서 활동들을 포함할 수 있다. 초기화 펌웨어가 검증되는지(즉, 검증을 통과하는지)는 동작(315)에서 판단될 수 있다.
초기화 펌웨어가 검증되면, 초기화 펌웨어는 동작(330)에서 실행될 수 있다. BIOS가 검증되는지는 동작(335)에서 판단될 수 있다. BIOS가 검증되면, 전체 시스템 부팅은 동작(340)에서 인에이블될 수 있다. 예를 들어, 검증은 디폴트 리셋 벡터 경로 또는 대체 FIT 특정 경로들 또는 모듈들을 따라 하나 이상의 BIOS 요소들을 포함할 수 있다. 전체 시스템 부팅은 모든 시스템 기능성이 BIOS 및 OS에 이용가능할 수 있는 것을 의미한다. 동작(345)은 제어를 BIOS에 전달하는 것을 포함할 수 있다. 예를 들어, 초기화 펌웨어(130)는 시스템(100)의 제어를 BIOS(134)에 전달할 수 있다. 동작(350)은 시스템 하드웨어를 초기화하는 것 및 OS를 로드하는 것을 포함하여 시스템을 부팅하는 것을 포함할 수 있다.
초기화 펌웨어가 검증되지 않으며/않거나 BIOS가 검증되지 않으면(즉, 검증을 실패하면), 하나 이상의 응답(들)이 동작(355)에서 개시될 수 있다. 초기화 펌웨어 검증 모듈(128)은 초기화 펌웨어가 검증을 실패하면 이 응답(들)을 선택하여 개시하도록 구성될 수 있다. 초기화 펌웨어(130)는 BIOS가 검증을 실패하면 이 응답(들)을 선택하여 개시하도록 구성될 수 있다. 응답(들)은 동작들(360, 365, 370 (및 375), 380, 385, 390 및 395) 중 하나 이상을 포함할 수 있다. 동작(380)은 홀트하는 것을 포함한다. 예를 들어, 프로세서(122)는 동작(380)에서 홀트될 수 있다. 동작(385)은 초기화 펌웨어 및/또는 BIOS의 실행을 방지하는 것을 포함한다. 시스템(예를 들어, 시스템(100))은 동작(395)에서 셧다운될 수 있다.
동작(360)은 시스템을 격리 모드(즉, 한정된 또는 제한된 동작 모드)에서 부팅하는 것을 포함한다. 격리 모드에서, 일부 시스템 구성요소들에 대한 일부 시스템 기능성 및/또는 액세스가 디스에이블될 수 있다. 격리 모드는 초기화 펌웨어 및/또는 BIOS가 검증을 실패할 때 제한된 시스템 기능성을 허용하도록 구성된다. 예를 들어, 하이퍼바이저와 같은 "상위" 시스템 기능들이 디스에이블될 수 있다. 동작(365)은 모델 특정 레지스터(MSR:model-specific register)를 갱신하는 것을 포함한다. 모델 특정 레지스터의 갱신은 초기화 펌웨어 및/또는 BIOS 검증 실패를 통신하도록 구성될 수 있다. 모델 특정 레지스터는 비교적 안전한 보고 방법을 제공하는 제3자들에 의해 변경될 수 없도록 변경불가능할 수 있다. 예를 들어, MSR은 실패 조건의 상세들을 통신하는 것 없이 실패를 통신하도록 갱신될 수 있다. 이 제한된 보고는 공격자가 실패 조건의 상세들을 사용하여 검출 기능성을 손상시키는 것을 방지하도록 구성된다.
복구 프로세스는 동작(370)에서 개시될 수 있다. 동작(370)은 리셋을 포함하는 초기 재시도를 허용하도록 구성되는 크로스 리셋 상태를 유지하는 것, 초기화 펌웨어 및/또는 BIOS의 백업 사본으로 롤 오버하는 것, 초기화 펌웨어 및/또는 BIOS의 이전 이미지로 롤 백하는 것 및/또는 초기화 펌웨어 및/또는 BIOS를 갱신하는 것을 포함할 수 있다. 초기화 펌웨어의 백업 사본이 존재하는지는 비휘발성 메모리와 연관되는 특성들에 의존할 수 있다. 동작(370)에서의 재시도들의 횟수가 제한될 수 있다. 예를 들어, 재시도들의 횟수가 미리 결정된 값에 도달하면 복구 프로세스로부터 종료(exit)를 트리거하도록 구성되는 카운터가 구현될 수 있다. 다른 예에서, 롤 오버 또는 롤 백은 후속 재시도가 복구 프로세스로부터 종료를 트리거할 수 있도록 지속 상태의 수정을 야기할 수 있다. 초기화 펌웨어 및/또는 BIOS는 보안(즉, 암호) 기술들을 사용하여 갱신될 수 있다.
동작(370)은 대역외(OOB:Out-Of-Band) 통신들을 통해 초기화 펌웨어 및/또는 BIOS를 갱신하는 것을 포함할 수 있다. 예를 들어, 도 1의 마이크로프로세서 서브시스템(112)은 원격 에이전트(118)와 네트워크(120)를 통해 OOB 통신으로 통신하여 갱신된 손상되지 않은 BIOS를 검색하도록 구성될 수 있다. 예를 들어, 갱신된 BIOS에 대한 (예를 들어, 초기에 가능한 잘못된 BIOS에 대한 롤 백 공격들을 회피하기 위해) 실패된 BIOS 보다 더 높은 모노토닉 리비전(monotonic revision)을 가질 수 있다. 마이크로프로세서 서브시스템(112)은 플래시 메모리(114)를 검색된 BIOS에 의해 재프로그램하도록 더 구성될 수 있다. 그 다음, 리셋은 동작(375)에서 개시될 수 있다.
동작(390)은 시간 지연을 구현하는 것을 포함할 수 있다. 예를 들어, 시간 지연은 응답들 사이에 삽입될 수 있다. 다른 예에서, 시간 지연은 동작(370)에서 재시도들 사이에 삽입될 수 있다. 시간 지연(들)은 공격 레이트 및 공격이 성공 또는 실패로서 평가될 수 있는 레이트를 감소시키도록 구성된다.
동작들(360, 365, 370, 375, 380, 385, 390 및 395)에 의해 설명되는 응답들은 개별적으로 또는 조합하여 수행될 수 있다. 특정 응답(들)은 미리 결정되고 예를 들어 오프 다이 비휘발성 메모리(124)에 저장될 수 있다. 예를 들어, 응답들은 다양한 시간들에서 그리고 제조 시에, 초기 동작에서, 점퍼들에 의해, 특수 보호된 사용자 초기 셋업에 의해, 및/또는 초기화 펌웨어 검증 모듈 및/또는 초기화 펌웨어를 갱신하는 것에 의한 것을 포함하지만, 이들에 제한되지 않는 다양한 방법들을 사용하여 선택될 수 있다.
따라서, 흐름도(300)에 예시된 바와 같이, 프로세서 초기화 모듈 및 초기화 펌웨어 검증 모듈은 초기화 펌웨어 및 BIOS를 검증하기 위해 초기화 펌웨어 및 BIOS 전에 실행하도록 구성될 수 있다. 초기화 펌웨어 및/또는 BIOS가 검증을 실패하면, 하나 이상의 응답들이 개시될 수 있다. 유리하게, 응답들의 일부는 시스템, 예를 들어 시스템(100)이 격리 모드에서 동작하고, 초기화 펌웨어 및/또는 BIOS를 갱신하며/하거나 초기화 펌웨어 및/또는 BIOS 검증 실패를 통신하는 것을 허용하도록 구성된다. 따라서, BIOS 검증 실패에 대한 응답은 시스템(100)을 정지시키는 것에 제한되지 않는다.
도 4는 본 개시에 따른 BIOS를 검증하는 예시적 동작들의 다른 흐름도(400)를 예시한다. 이 실시예에 예시된 동작들은 시스템(100)과 연관되는 회로, 펌웨어 및/또는 소프트웨어 모듈들(예를 들어, CPU(122)를 포함하는 프로세서 컴플렉스(102))에 의해 수행될 수 있다. 도 4에서, BIOS를 검증하는 것과 연관되는 동작들은 도 1의 초기화 ROM(127)에 대응하는 초기화 ROM(402)에 포함되고 BIOS와 연관되는 동작들은 BIOS(134)에 대응하는 UEFI(BIOS) 펌웨어(404)에 포함된다.
프로그램 흐름은 동작(405)에서 시작할 수 있다. 동작(405)은 시스템 리셋에 응답하여 수행될 수 있다. 동작(405)은 초기화 펌웨어 검증 모듈을 포함하는 프로세서 초기화 모듈의 실행 및 초기화 펌웨어의 검증, 및 초기화 펌웨어의 실행을 포함할 수 있다. 초기화 펌웨어 검증 모듈이 초기화 펌웨어를 성공적으로 검증하면, 프로세서는 초기화 펌웨어의 실행을 개시할 수 있다. 동작(405)은 기본 메모리 기능들을 초기화하는 것(예를 들어 시스템 메모리를 설정하는 것) 및/또는 인터커넥트 패브릭(interconnect fabric)과 같은 다른 시스템 요소들을 초기화하는 것을 선택적으로 포함할 수 있다. QPI(Quick Path Interface)는 프로세서 서브시스템을 플랫폼 컨트롤러 허브 및/또는 마이크로프로세서 서브시스템과 상호 연결하도록 구성될 수 있는 인터커넥트 패브릭의 일 예이다. 동작(410)은 플래시 메모리에, 서명된 매니페스트(manifest)를 갖는 펌웨어 인터페이스 테이블(FIT: firmware interface table) 및 OEM BIOS 블록이 존재하는지를 판단하는 것을 포함한다. 예를 들어, TPM(108)을 포함하는 시스템들에서, 동작(410)은 매니페스트의 해시를 TPM(108)의 NV 데이터 레지스터 내의 저장된 해시 값과 비교함으로써 서명된 매니페스트의 무결성을 확인하는 것을 포함할 수 있다.
플래시 메모리에, 서명된 메니페스트를 갖는 펌웨어 인터페이스 테이블(FIT: firmware interface table)이 존재하지 않거나 OEM BIOS 블록이 존재하지 않으면, 동작(415)이 수행될 수 있다. 동작(415)은 변경불가능 모델 특정 레지스터(NOT_SIGNED_MSR)를 설정하는 것 및/또는 프로세서 서브시스템을 홀트하는 것을 포함한다. 플래시 메모리에, 서명된 매니페스트를 갖는 FIT 및 OEM BIOS 블록이 존재하면, 동작(420)이 수행될 수 있다. 동작(420)은 서명된 매니페스트 및 연관된 OEM UEFI BIOS 펌웨어 볼륨을 판독하는 것을 포함한다. 동작(420)은 서명된 매니페스트(디지털 서명)를 원격 인증 기관(CA:certificate authority)에 의해 검증하는 것을 더 포함할 수 있다. 예를 들어, 서명된 매니페스트를 검증하는 것은 마이크로프로세서 서브시스템(112) 및 매니지어빌리티 엔진 펌웨어(138)를 사용하여 OOB로 수행될 수 있다.
디지털 서명이 매치되고 연관된 공개 키가 취소(revoke)되지 않았고 만료되지 않고 IN_UPDATE_MSR 모델 특정 레지스터가 FALSE인지는 동작(425)에서 판단될 수 이다. 그렇지 않으면, FIT 내의 다음 엔트리는 동작(430)에서 판독될 수 있다. FIT 엔트리들이 소진되었는지는 동작(435)에서 판단될 수 이다. FIT 엔트리들이 소진되었다면(즉, FIT 내에 어떤 비테스트된 엔트리들이 없으면), 동작(415)이 수행될 수 있다. 디지털 서명이 매치되고 연관된 공개 키가 취소되지 않았고 만료되지 않고 IN_UPDATE_MSR 모델 특정 레지스터가 FALSE이면, 전체 부팅은 동작(440)에서 인에이블될 수 있다. 전체 부팅은 하이 레벨 기술 및 다른 하드웨어 능력들을 인에이블하는 것을 포함할 수 있다.
동작(445)은 제어를, 보안 페이즈(SEC:security phase), 플랫폼 환경 초기화 페이즈(PEI:platform environment initialization phase) 및/또는 드라이버 실행 환경(DXE:driver execution environment)를 포함할 수 있는 UEFI BIOS 펌웨어에 전달하는 것을 포함할 수 있다. UEFI 펌웨어 갱신이 존재하는지는 동작(450)에서 판단될 수 있다. UEFI 펌웨어 갱신이 존재하면, 갱신은 동작(455)에서 UEFI 펌웨어 유효성 검사(validation)를 사용하여 인증될 수 있다. 동작(460)은 모델 특정 레지스터(IN_UPDATE_MSR)를 설정하는 것, UEFI 펌웨어를 플래시 메모리에서 갱신하는 것 및 모델 특정 레지스터(IN_UPDATE_MSR)를 클리어하는(clearing) 것을 포함한다. 그 다음, 리셋은 동작(465)에서 개시될 수 있다. UEFI 펌웨어 갱신이 존재하지 않으면, UEFI BIOS 펌웨어는 동작(470)에서 부팅을 완료할 수 있다.
도 5는 리셋으로부터 OS 부팅으로의 부팅 프로세스(500)와 연관되는 동작들의 그래픽 예시이다. 도 5의 부팅 프로세스(500)는 본 명세서에 설명된 바와 같은 BIOS 펌웨어의 성공적 검증에 대응한다. 프로세스(500)는 2개의 페이즈(페이즈 1 및 페이즈 2) 및 복수의 서브페이즈들을 포함할 수 있다. 프로세스(500)는 리셋(예를 들어, 파워 온 또는 CPU 전용)(502)에 의해 개시될 수 있다. 리셋에 응답하여, 초기화 펌웨어 검증 모듈을 포함하는 프로세서 초기화 모듈은 서브페이즈(504) 동안, 본 명세서에 설명된 바와 같이 실행될 수 있다. 초기화 펌웨어 검증 모듈은 본 명세서에 설명된 바와 같이 FIT를 로케이팅(locate)하고 초기화 펌웨어를 인증하도록 구성될 수 있다. 그 다음, 초기화 펌웨어는 서브페이즈(506) 동안 본 명세서에 설명된 바와 같이 OEM BIOS를 검증하며/하거나 인터커넥트 패브릭(예를 들어 QPI) 및 시스템 메모리를 인에이블할 수 있다. 서브페이즈(504) 및 서브페이즈(506)는 페이즈 1에 포함된다. 페이즈 1 동작들은 프로세서 초기화 모듈 및 초기화 펌웨어에 의해 수행될 수 있고 따라서 비교적 안전할 수 있다. 그 다음, UEFI BIOS 펌웨어는 서브페이즈(508) 동안 SEC, PEI 및 DXE를 포함하는 플랫폼(예를 들어, 시스템(100))을 초기화할 수 있다. SEC는 PEI 코어 및 PEI 모듈들을 실행하기 위해 프로세서 CAR(Cache As RAM)을 사용하는 것을 포함하지만 이에 제한되지 않는 일시적 메모리 스토어를 설정한다. DXE가 개시되면, 초기화된 메모리가 이용가능해져야 한다. DXE는 PCI, UI, USB, I/O, 레거시 BIOS, SMBIOS 및/또는 ACPI를 포함할 수 있다. 프로세스는 서브페이즈(510), 즉 운영 체제의 부팅을 개시하는 것에 대응하는 부팅 장치 선택으로 끝날 수 있다. 서브페이즈(508) 및 서브페이즈(510)는 페이즈 2에 포함된다. 페이즈 1은 초기화 펌웨어 검증 및 BIOS 검증을 포함한다. 페이즈 2는 검증된 UEFI BIOS 펌웨어의 개시 및 실행 및 부팅 장치 선택을 포함한다.
일반적으로, 본 개시는 BIOS 스토리지 어택 보호 및 통지를 위한 시스템들(및 방법들)을 제공한다. 하나의 예시적 시스템은 프로세서 비휘발성 메모리에 저장된 프로세서 제어 및/또는 데이터 상태 및 프로세서에 결합된, 프로세서 패키지 내의 비휘발성 메모리에 저장된 초기화 펌웨어를 포함할 수 있는 프로세서 초기화 모듈을 포함한다. 초기화 펌웨어 검증 모듈을 포함하는 프로세서 초기화 모듈은 리셋에 응답하여 우선 실행되도록 구성되고 초기화 펌웨어 검증 모듈은 초기화 펌웨어를 검증하도록 구성된다. 초기화 펌웨어는 초기화 펌웨어 검증 모듈에 의한 검증 후에 실행되도록 구성되고, 차례로 BIOS를 검증하도록 구성된다. 초기화 펌웨어 및/또는 BIOS의 검증이 실패하면, 시스템은 초기화 펌웨어 및/또는 BIOS가 실행되는 것을 방지하는 것, 복구를 (예를 들어, 대역외(OOB:out-of-band) 통신을 사용하여) 개시하는 것, 모델 특정 레지스터(MSR:model-specific register)를 사용하여 검증 실패를 보고하는 것, 프로세서를 홀트하는 것, 셧다운하는 것 및/또는 BIOS가 실행되는 것을 허용하고 운영 체제(OS)가 제한된 기능성("격리") 모드에서 부팅되는 것을 허용하는 것 중 적어도 하나로 구성된다. 격리 모드에서, 시스템의 일부 기능성은 BIOS 및 OS에 이용가능하지 않을 수 있다.
"회로"는, 본 명세서에서 임의의 실시예에 사용되는 바와 같이, 예를 들어 개별적으로 또는 임의의 조합으로, 하드와이어드 회로, 프로그램가능 회로, 상태 머신 회로, 내장 컨트롤러들, 및/또는 프로그램가능 회로에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다.
OS(150)는 임의의 일반 목적 또는 커스텀 운영 체제를 포함할 수 있다. 예를 들어, OS(150)는 마이크로소프트 윈도우즈, HP-UX, Linux, 또는 UNIX, 및/또는 다른 일반 목적 운영 체제를 사용하여 구현될 수 있다.
도 3, 도 4 및 도 5가 다양한 실시예들에 따른 방법들을 예시하지만, 임의의 실시예에서 이 동작들의 모두가 필요한 것은 아니라는 점이 이해되어야 한다. 실제로, 본 개시의 다른 실시예들에서, 도 3, 도 4 및/또는 도 5에 도시된 동작들은 도면들 중 어느 하나에 구체적으로 도시되지는 않았지만, 여전히 본 개시와 완전히 일치하는 방식으로 결합될 수 있다는 점이 본 명세서에서 충분히 고려된다. 따라서, 하나의 도면에 정확히 도시되지 않은 특징들 및/또는 동작들에 겨냥되는 청구항들은 본 개시의 범위 및 내용 내에서 생각된다.
본 명세서에 설명되는 실시예들은 예를 들어 본 명세서에 설명되는 방법들 및/또는 동작들을 수행하기 위해 하드웨어, 소프트웨어, 및/또는 펌웨어를 사용하여 구현될 수 있다. 본 명세서에 설명되는 특정 실시예들은 머신에 의해 실행되면, 머신이 본 명세서에 설명되는 방법들 및/또는 동작들을 수행하게 하는 머신 실행가능 명령어들을 저장하는 유형의 머신 판독가능 매체로서 제공될 수 있다. 유형의 머신 판독가능 매체는 플로피 디스크들, 광 디스크들, CD-ROM들(compact disk read-only memories), CD-RW들(compact disk rewritables), 및 광 자기 디스크들(magneto-optical disks)을 포함하는 임의의 타입의 디스크, ROM들(read-only memories), 동적 및 정적 RAM들(random access memories)과 같은 RAM들, EPROM들(erasable programmable read-only memories), EEPROM들(electrically erasable programmable read-only memories), 플래시 메모리들과 같은 반도체 장치들, 자기 또는 광 카드들, 또는 전자 명령어들을 저장하는데 적절한 임의의 타입의 유형의 매체를 포함할 수 있지만, 이들에 제한되지 않는다. 머신은 임의의 적절한 처리 플랫폼, 장치 또는 시스템, 컴퓨팅 플랫폼, 장치 또는 시스템을 포함할 수 있고 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합을 사용하여 구현될 수 있다. 명령어들은 임의의 적절한 타입의 코드를 포함할 수 있고 임의의 적절한 프로그래밍 언어를 사용하여 구현될 수 있다.
따라서, 일 실시예에서, 본 개시는 컴퓨팅 플랫폼의 기본 입출력 시스템(BIOS)을 검증하는 방법을 제공한다. 방법은 리셋에 응답하여 프로세서 초기화 모듈을 실행하는 단계 - 프로세서 초기화 모듈은 컴퓨팅 플랫폼 내의 프로세서에 포함되고 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함함 - ; 초기화 펌웨어 검증 모듈을 사용하여 비휘발성 메모리에 저장된 초기화 펌웨어를 컴퓨팅 플랫폼 내의 프로세서 패키지에서 검증하려고 시도하는 단계; 초기화 펌웨어를 사용하여 BIOS를 검증하려고 시도하는 단계 - BIOS는 재프로그램가능 비휘발성 메모리에 포함됨 - ; 및 초기화 펌웨어 및 BIOS 중 적어도 하나가 검증 실패되면 적어도 하나의 응답을 개시하는 단계를 포함한다.
다른 실시예에서, 본 개시는 컴퓨팅 플랫폼을 포함한다. 컴퓨팅 플랫폼은 프로세서 초기화 모듈을 포함하는 프로세서 - 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함함 - , 및 초기화 펌웨어를 저장한 오프 다이 비휘발성 메모리를 포함하는 프로세서 패키지를 포함한다. 컴퓨팅 플랫폼은 기본 입출력 시스템(BIOS) 펌웨어를 저장하는 재프로그램가능 비휘발성 메모리를 더 포함한다. 프로세서는 컴퓨팅 플랫폼의 리셋에 응답하여 프로세서 초기화 모듈을 실행하고, 초기화 펌웨어 검증 모듈을 사용하여 초기화 펌웨어를 검증하려고 시도하고, 초기화 펌웨어를 사용하여 BIOS 펌웨어를 검증하려고 시도하며 초기화 펌웨어 및 BIOS 펌웨어 중 적어도 하나가 검증을 실패히면 적어도 하나의 응답을 개시하도록 구성된다.
다른 실시예에서, 본 개시는 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 리셋에 응답하여 프로세서 초기화 모듈을 실행하는 동작 - 프로세서 초기화 모듈은 컴퓨팅 플랫폼 내의 프로세서에 포함되고 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함함 - ; 초기화 펌웨어 검증 모듈을 사용하여 비휘발성 메모리에 저장된 초기화 펌웨어를 컴퓨팅 플랫폼 내의 프로세서 패키지에서 검증하려고 시도하는 동작; 초기화 펌웨어를 사용하여 BIOS를 검증하려고 시도하는 동작 - BIOS는 재프로그램가능 비휘발성 메모리에 포함됨 - ; 및 초기화 펌웨어 및 BIOS 중 적어도 하나가 검증 실패되면 적어도 하나의 응답을 개시하는 동작을 포함하는 동작들을 수행하게 하는 저장된 명령어들을 포함하는 유형의 컴퓨터 판독가능 매체를 제공한다.
본 명세서에 이용된 용어들 및 표현들은 제한이 아닌 설명의 용어들로 사용되고, 그러한 용어들 및 표현들의 사용에서, 도시되고 설명된 특징들의 임의의 균등물들(또는 그것의 부분들)을 배제할 의도는 없으며, 다양한 수정들은 청구항들의 범위 내에서 가능하다는 점이 인식된다. 따라서, 청구항들은 모든 그러한 균등물들을 커버하도록 의도된다.
다양한 특징들, 양상들, 및 실시예들은 본 명세서에 설명되었다. 특징들, 양상들, 및 실시예들은 당업자들에 의해 이해되는 바와 같이, 변형 및 수정뿐만 아니라 서로의 조합을 허용한다. 그러므로, 본 개시는 그러한 조합들, 변형들, 및 수정들을 포함하는 것으로 간주되어야 한다.

Claims (18)

  1. 컴퓨팅 플랫폼의 기본 입출력 시스템(BIOS:basic input/output system)을 검증하는(verifying) 방법으로서,
    리셋에 응답하여 프로세서 초기화 모듈을 실행하는 단계 - 상기 프로세서 초기화 모듈은 상기 컴퓨팅 플랫폼 내의 프로세서에 포함되고 상기 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함함 -;
    상기 초기화 펌웨어 검증 모듈을 사용하여 상기 컴퓨팅 플랫폼 내의 프로세서 패키지 내의 비휘발성 메모리에 저장된 초기화 펌웨어를 검증하려고 시도하는 단계;
    상기 초기화 펌웨어를 사용하여 BIOS를 검증하려고 시도하는 단계 - 상기 BIOS는 재프로그램가능 비휘발성 메모리에 포함되도록 구성되고, 상기 BIOS를 검증하려고 시도하는 단계는,
    상기 초기화 펌웨어에 의해, BIOS 블록과 서명된 메니페스트를 포함하는 엔트리를 갖는 펌웨어 인터페이스 테이블(FIT: firmware interface table)이 존재하는지 판정하는 단계;
    상기 메니페스트의 해시를 저장된 해시 값에 비교함으로써 상기 서명된 메니페스트의 무결성을 확인하는 단계; 및
    상기 무결성이 확인되지 않는 경우, 상기 FIT 내의 다음 엔트리를 판독하고, 상기 무결성이 확인되거나 더 이상의 엔트리가 상기 FIT에 존재하지 않을 때까지 상기 확인하는 단계를 반복하는 단계
    를 포함함 - ; 및
    상기 초기화 펌웨어 및 상기 BIOS 중 적어도 하나가 검증 실패되면 적어도 하나의 응답을 개시하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 컴퓨팅 플랫폼의 제어를 상기 BIOS에 전달하는 단계를 더 포함하고, 상기 적어도 하나의 응답은 제한된 플랫폼 기능성을 갖는 격리 모드(quarantine mode)에서의 동작을 위해 상기 컴퓨팅 플랫폼을 구성하는 것을 포함하는 방법.
  3. 제1항에 있어서, 상기 적어도 하나의 응답은, 상기 초기화 펌웨어가 실행되는 것을 방지하는 것, 상기 BIOS가 실행되는 것을 방지하는 것, 복구를 개시하는 것, 모델 특정 레지스터를 사용하여 검증 실패를 보고하는 것, 상기 프로세서를 홀트하는(halting) 것, 상기 컴퓨팅 플랫폼을 셧다운하는(shutting down) 것 및 제한된 플랫폼 기능성을 갖는 격리 모드에서의 동작을 위해 상기 컴퓨팅 플랫폼을 구성하는 것을 포함하는 복수의 응답들로부터 선택되는 방법.
  4. 제1항에 있어서, 상기 초기화 펌웨어의 검증 실패에 응답하여 상기 초기화 펌웨어를 갱신하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 적어도 하나의 응답은, 상기 BIOS를 대역외 통신을 사용하는 네트워크를 통해 상기 컴퓨팅 플랫폼의 마이크로프로세서 서브시스템을 경유하여 갱신하는 것을 포함하는 방법.
  6. 제1항에 있어서, 후보 BIOS 펌웨어 갱신을 모델 특정 레지스터에 기록하는 것에 응답하여 상기 초기화 펌웨어 검증 모듈 및 상기 초기화 펌웨어의 실행을 트리거하는 단계를 더 포함하는 방법.
  7. 컴퓨팅 플랫폼으로서,
    프로세서 초기화 모듈을 포함하는 프로세서 - 상기 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함함 -, 및 내부에 초기화 펌웨어를 저장한 오프 다이 비휘발성 메모리(off-die non-volatile memory)를 포함하는 프로세서 패키지; 및
    내부에 기본 입출력 시스템(BIOS) 펌웨어를 저장한 재프로그램가능 비휘발성 메모리
    를 포함하고,
    상기 프로세서는,
    상기 컴퓨팅 플랫폼의 리셋에 응답하여 상기 프로세서 초기화 모듈을 실행하고,
    상기 초기화 펌웨어 검증 모듈을 사용하여 상기 초기화 펌웨어를 검증하려고 시도하고,
    상기 초기화 펌웨어를 사용하여 상기 BIOS 펌웨어를 검증하려고 시도하고 - 상기 BIOS 펌웨어를 검증하려고 시도하는 것은, 상기 초기화 펌웨어에 의해, BIOS 블록과 서명된 메니페스트를 포함하는 엔트리를 갖는 펌웨어 인터페이스 테이블(FIT)이 존재하는지 판정하는 것을 포함함 -,
    상기 초기화 펌웨어 및 상기 BIOS 펌웨어 중 적어도 하나가 검증을 실패하면 적어도 하나의 응답을 개시하도록 구성되는
    컴퓨팅 플랫폼.
  8. 제7항에 있어서, 상기 프로세서는 상기 컴퓨팅 플랫폼의 제어를 상기 BIOS에 전달하도록 더 구성되고, 상기 적어도 하나의 응답은 제한된 플랫폼 기능성을 갖는 격리 모드에서의 동작을 위해 상기 컴퓨팅 플랫폼을 구성하는 것을 포함하는 컴퓨팅 플랫폼.
  9. 제7항에 있어서, 상기 적어도 하나의 응답은, 상기 초기화 펌웨어가 실행되는 것을 방지하는 것, 상기 BIOS가 실행되는 것을 방지하는 것, 복구를 개시하는 것, 모델 특정 레지스터를 사용하여 검증 실패를 보고하는 것, 상기 프로세서를 홀트하는 것, 상기 컴퓨팅 플랫폼을 셧다운하는 것 및 제한된 플랫폼 기능성을 갖는 격리 모드에서의 동작을 위해 상기 컴퓨팅 플랫폼을 구성하는 것을 포함하는 복수의 응답들로부터 선택되는 컴퓨팅 플랫폼.
  10. 제7항에 있어서, 상기 프로세서는 상기 초기화 펌웨어의 검증 실패에 응답하여 상기 초기화 펌웨어를 갱신하도록 더 구성되는 컴퓨팅 플랫폼.
  11. 제7항에 있어서, 상기 BIOS 펌웨어를 대역외 통신을 사용하는 네트워크를 통해 갱신하도록 구성되는 마이크로프로세서 서브시스템을 더 포함하는 컴퓨팅 플랫폼.
  12. 제7항에 있어서, 모델 특정 레지스터를 더 포함하고, 상기 프로세서는 후보 BIOS 펌웨어가 상기 모델 특정 레지스터에 기록되는 것에 응답하여 상기 초기화 펌웨어 검증 모듈 및 상기 초기화 펌웨어를 실행하도록 구성되는 컴퓨팅 플랫폼.
  13. 명령어들을 저장한, 유형(tangible)의 컴퓨터로 판독가능한 기록 매체로서,
    상기 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    리셋에 응답하여 프로세서 초기화 모듈을 실행하는 단계 - 상기 프로세서 초기화 모듈은 컴퓨팅 플랫폼 내의 프로세서에 포함되고 상기 프로세서 초기화 모듈은 초기화 펌웨어 검증 모듈을 포함함 -;
    상기 초기화 펌웨어 검증 모듈을 사용하여 상기 컴퓨팅 플랫폼 내의 프로세서 패키지 내의 비휘발성 메모리에 저장되도록 구성되는 초기화 펌웨어를 검증하려고 시도하는 단계;
    상기 초기화 펌웨어를 사용하여 BIOS를 검증하려고 시도하는 단계 - 상기 BIOS는 재프로그램가능 비휘발성 메모리에 포함되도록 구성되고, 상기 BIOS를 검증하려고 시도하는 단계는,
    상기 초기화 펌웨어에 의해, BIOS 블록과 서명된 메니페스트를 포함하는 엔트리를 갖는 펌웨어 인터페이스 테이블(FIT)이 존재하는지 판정하는 단계;
    상기 메니페스트의 해시를 저장된 해시 값에 비교함으로써 상기 서명된 메니페스트의 무결성을 확인하는 단계; 및
    상기 무결성이 확인되지 않는 경우, 상기 FIT 내의 다음 엔트리를 판독하고, 상기 무결성이 확인되거나 더 이상의 엔트리가 상기 FIT에 존재하지 않을 때까지 상기 확인하는 단계를 반복하는 단계
    를 포함함 - ; 및
    상기 초기화 펌웨어 및 상기 BIOS 중 적어도 하나가 검증 실패되면 적어도 하나의 응답을 개시하는 단계
    를 포함하는 동작들을 수행하게 하는, 컴퓨터로 판독가능한 기록 매체.
  14. 제13항에 있어서, 상기 동작들은 상기 컴퓨팅 플랫폼의 제어를 상기 BIOS에 전달하는 단계를 더 포함하고, 상기 적어도 하나의 응답은 제한된 플랫폼 기능성을 갖는 격리 모드에서의 동작을 위해 상기 컴퓨팅 플랫폼을 구성하는 것을 포함하는 컴퓨터로 판독가능한 기록 매체.
  15. 제13항에 있어서, 상기 적어도 하나의 응답은, 상기 초기화 펌웨어가 실행되는 것을 방지하는 것, 상기 BIOS가 실행되는 것을 방지하는 것, 복구를 개시하는 것, 모델 특정 레지스터를 사용하여 검증 실패를 보고하는 것, 상기 프로세서를 홀트하는 것, 상기 컴퓨팅 플랫폼을 셧다운하는 것 및 제한된 플랫폼 기능성을 갖는 격리 모드에서의 동작을 위해 상기 컴퓨팅 플랫폼을 구성하는 것을 포함하는 복수의 응답들로부터 선택되는 컴퓨터로 판독가능한 기록 매체.
  16. 제13항에 있어서, 상기 동작들은 상기 초기화 펌웨어의 검증 실패에 응답하여 상기 초기화 펌웨어를 갱신하는 단계를 더 포함하는 컴퓨터로 판독가능한 기록 매체.
  17. 제13항에 있어서, 상기 적어도 하나의 응답은, 상기 BIOS를 대역외 통신을 사용하는 네트워크를 통해 상기 컴퓨팅 플랫폼의 마이크로프로세서 서브시스템을 경유하여 갱신하는 것을 포함하는 컴퓨터로 판독가능한 기록 매체.
  18. 제13항에 있어서, 상기 동작들은 후보 BIOS 펌웨어 갱신을 모델 특정 레지스터에 기록하는 것에 응답하여 상기 초기화 펌웨어 검증 모듈 및 상기 초기화 펌웨어의 실행을 트리거하는 단계를 더 포함하는 컴퓨터로 판독가능한 기록 매체.
KR1020147001515A 2011-07-07 2012-07-05 Bios 플래시 어택 보호 및 통지 KR101626397B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/178,338 2011-07-07
US13/178,338 US9015455B2 (en) 2011-07-07 2011-07-07 Processsor integral technologies for BIOS flash attack protection and notification
PCT/US2012/045551 WO2013006698A1 (en) 2011-07-07 2012-07-05 Bios flash attack protection and notification

Publications (2)

Publication Number Publication Date
KR20140043126A KR20140043126A (ko) 2014-04-08
KR101626397B1 true KR101626397B1 (ko) 2016-06-01

Family

ID=47437440

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147001515A KR101626397B1 (ko) 2011-07-07 2012-07-05 Bios 플래시 어택 보호 및 통지

Country Status (6)

Country Link
US (1) US9015455B2 (ko)
EP (2) EP3543888A1 (ko)
JP (1) JP5767751B2 (ko)
KR (1) KR101626397B1 (ko)
CN (1) CN103718165B (ko)
WO (1) WO2013006698A1 (ko)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8971144B2 (en) * 2012-01-19 2015-03-03 Quixant Plc Hardware write-protection
US8909983B2 (en) * 2012-03-08 2014-12-09 Synology Incorporated Method of operating a storage device
US9256744B2 (en) * 2012-04-10 2016-02-09 Asmedia Technology Inc. System-on-chip and booting method thereof
US20130326404A1 (en) * 2012-05-30 2013-12-05 Robert C. Brooks Disable Feature of Computing Device
US8904162B2 (en) * 2012-08-01 2014-12-02 Intel Corporation Methods and apparatus for performing secure BIOS upgrade
US10581763B2 (en) 2012-09-21 2020-03-03 Avago Technologies International Sales Pte. Limited High availability application messaging layer
US9967106B2 (en) 2012-09-24 2018-05-08 Brocade Communications Systems LLC Role based multicast messaging infrastructure
US20140208133A1 (en) * 2013-01-23 2014-07-24 Dell Products L.P. Systems and methods for out-of-band management of an information handling system
WO2014139162A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Security co-processor boot performance
US10733288B2 (en) 2013-04-23 2020-08-04 Hewlett-Packard Development Company, L.P. Verifying controller code and system boot code
US10055588B2 (en) 2013-11-13 2018-08-21 Via Technologies, Inc. Event-based apparatus and method for securing BIOS in a trusted computing system during execution
US10095868B2 (en) 2013-11-13 2018-10-09 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
US9129113B2 (en) 2013-11-13 2015-09-08 Via Technologies, Inc. Partition-based apparatus and method for securing bios in a trusted computing system during execution
US9798880B2 (en) 2013-11-13 2017-10-24 Via Technologies, Inc. Fuse-enabled secure bios mechanism with override feature
US9547767B2 (en) 2013-11-13 2017-01-17 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
US9767288B2 (en) 2013-11-13 2017-09-19 Via Technologies, Inc. JTAG-based secure BIOS mechanism in a trusted computing system
US9367689B2 (en) 2013-11-13 2016-06-14 Via Technologies, Inc. Apparatus and method for securing BIOS in a trusted computing system
US9507942B2 (en) 2013-11-13 2016-11-29 Via Technologies, Inc. Secure BIOS mechanism in a trusted computing system
US9779242B2 (en) 2013-11-13 2017-10-03 Via Technologies, Inc. Programmable secure bios mechanism in a trusted computing system
US10049217B2 (en) 2013-11-13 2018-08-14 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
US9183394B2 (en) 2013-11-13 2015-11-10 Via Technologies, Inc. Secure BIOS tamper protection mechanism
US9779243B2 (en) 2013-11-13 2017-10-03 Via Technologies, Inc. Fuse-enabled secure BIOS mechanism in a trusted computing system
CN103632086B (zh) * 2013-11-15 2017-04-05 北京奇虎科技有限公司 修复基本输入输出系统bios恶意程序的方法和装置
CN104679685B (zh) * 2013-11-29 2017-10-31 英业达科技有限公司 基板管理控制器存取方法
TW201525858A (zh) 2013-12-31 2015-07-01 Ibm 基板管理控制器與其韌體載入方法
CN104915591A (zh) * 2014-03-10 2015-09-16 联想(北京)有限公司 一种数据处理方法及电子设备
CN103996002B (zh) * 2014-05-29 2016-04-06 广西电网有限责任公司 一种防病毒终端设备启动方法
US9563437B2 (en) * 2014-06-27 2017-02-07 Intel Corporation Technologies for pre-memory phase initialization of a computing device
TWI505078B (zh) * 2014-07-28 2015-10-21 Ibm 系統管理控制器、電腦系統、以及系統管理方法
CN104239760A (zh) * 2014-09-03 2014-12-24 山东超越数控电子有限公司 一种安全等级可配置的计算机的实现方法
JP6482211B2 (ja) * 2014-09-03 2019-03-13 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US9619349B2 (en) * 2014-10-14 2017-04-11 Brocade Communications Systems, Inc. Biasing active-standby determination
WO2016093856A1 (en) * 2014-12-12 2016-06-16 Hewlett Packard Enterprise Development Lp Determining resting times for memory blocks
CN106158038B (zh) * 2015-04-14 2021-03-09 恩智浦美国有限公司 从非易失性存储器读取数据的方法
US20160306623A1 (en) * 2015-04-16 2016-10-20 Aic Inc. Control module of node and firmware updating method for the control module
US9742568B2 (en) 2015-09-23 2017-08-22 Dell Products, L.P. Trusted support processor authentication of host BIOS/UEFI
CN105224459B (zh) * 2015-10-21 2018-04-13 浪潮电子信息产业股份有限公司 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法
WO2017131621A1 (en) * 2016-01-25 2017-08-03 Hewlett-Packard Development Company, L.P. Protecting basic input/output (bios) code
EP3314515B1 (en) * 2016-01-25 2020-03-18 Hewlett-Packard Development Company, L.P. Notice of intrusion into firmware
US10445506B2 (en) 2016-03-30 2019-10-15 Airwatch Llc Detecting vulnerabilities in managed client devices
US10585648B2 (en) * 2016-06-01 2020-03-10 The Mathworks, Inc. Systems and methods for aggregating implicit and explicit event code of executable models
US10635607B2 (en) * 2016-06-30 2020-04-28 Intel Corporation Methods, systems and apparatus to improve boot efficiency
JP6585019B2 (ja) * 2016-09-13 2019-10-02 株式会社東芝 ネットワーク監視装置、ネットワークシステムおよびプログラム
KR101795457B1 (ko) * 2016-09-27 2017-11-10 시큐리티플랫폼 주식회사 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
US10382436B2 (en) * 2016-11-22 2019-08-13 Daniel Chien Network security based on device identifiers and network addresses
US10248485B2 (en) * 2016-12-16 2019-04-02 International Business Machines Corporation Dual physical-channel systems firmware initialization and recovery
WO2018124894A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Embedded oem code for fault recovery
US10223531B2 (en) 2016-12-30 2019-03-05 Google Llc Secure device state apparatus and method and lifecycle management
US10623130B2 (en) * 2017-07-27 2020-04-14 Rolls-Royce North American Technologes, Inc. Determining a frequency for propulsor engine communication sessions
US10460111B2 (en) * 2017-08-04 2019-10-29 Dell Products, Lp System and method to isolate host and system management in an information handling system
US20200202002A1 (en) * 2017-09-18 2020-06-25 Hewlett-Packard Development Company, L.P. Firmware security
US20200302060A1 (en) * 2017-12-14 2020-09-24 Hewlett-Packard Development Company, L.P. Enabling access to capturing devices by basic input and output systems (bios)
JP6584487B2 (ja) * 2017-12-20 2019-10-02 キヤノン株式会社 情報処理装置、その制御方法およびプログラム
CN111133414A (zh) * 2017-12-25 2020-05-08 英特尔公司 存储器初始化前多线程并行计算平台
US11163887B2 (en) * 2018-02-14 2021-11-02 Microsoft Technology Licensing, Llc Clearance of bare metal resource to trusted state usable in cloud computing
TWI647615B (zh) * 2018-03-29 2019-01-11 緯創資通股份有限公司 使用多嵌入式控制器韌體的韌體系統的開機方法
US11074151B2 (en) 2018-03-30 2021-07-27 Intel Corporation Processor having embedded non-volatile random access memory to support processor monitoring software
US10691466B2 (en) 2018-04-02 2020-06-23 Intel Corporation Booting a computing system using embedded non-volatile memory
CN108845834A (zh) * 2018-06-01 2018-11-20 上海兆芯集成电路有限公司 计算机装置
US10936324B2 (en) * 2018-08-02 2021-03-02 Dell Products L.P. Proactive host device access monitoring and reporting system
US10740084B2 (en) * 2018-08-16 2020-08-11 Intel Corporation Soc-assisted resilient boot
US10789061B2 (en) * 2018-09-26 2020-09-29 Intel Corporation Processor based component firmware update method and apparatus
US11188622B2 (en) 2018-09-28 2021-11-30 Daniel Chien Systems and methods for computer security
US10826912B2 (en) 2018-12-14 2020-11-03 Daniel Chien Timestamp-based authentication
US10848489B2 (en) 2018-12-14 2020-11-24 Daniel Chien Timestamp-based authentication with redirection
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
WO2020167283A1 (en) * 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery from corruption
WO2020167287A1 (en) * 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery via backups of recovery information
US11003461B2 (en) * 2019-03-29 2021-05-11 Dell Products L.P. Boot process security self-check system
JP7263101B2 (ja) * 2019-04-26 2023-04-24 キヤノン株式会社 情報処理装置、データ検証方法
US11151256B2 (en) * 2019-05-13 2021-10-19 Dell Products, L.P. Detecting security threats by monitoring chains of configuration changes made to basic input/output system (BIOS) or unified extensible firmware interface (UEFI) attributes
EP4318285A3 (en) 2019-06-10 2024-03-13 Google LLC Secure verification of firmware
FR3099607B1 (fr) * 2019-07-30 2021-11-05 Stmicroelectronics Grand Ouest Sas Composant électronique à micrologiciel
US11016755B2 (en) * 2019-07-31 2021-05-25 Dell Products L.P. System and method to secure embedded controller flashing process
US11416607B2 (en) * 2019-11-04 2022-08-16 Dell Products L.P. Security risk indicator and method therefor
US11385902B2 (en) * 2019-11-17 2022-07-12 Nuvoton Technology Corporation Secure firmware management with hierarchical boot sequence using last known good firmware
US11677754B2 (en) 2019-12-09 2023-06-13 Daniel Chien Access control systems and methods
US10809944B1 (en) 2020-01-22 2020-10-20 Cypress Semiconductor Corporation Memory device resilient to cyber-attacks and malfunction
US11347519B2 (en) * 2020-05-27 2022-05-31 Dell Products L.P. Systems and methods for detecting short-term changes to BIOS setup
US11438145B2 (en) 2020-05-31 2022-09-06 Daniel Chien Shared key generation based on dual clocks
US11509463B2 (en) 2020-05-31 2022-11-22 Daniel Chien Timestamp-based shared key generation
US11907386B2 (en) * 2020-09-22 2024-02-20 Dell Products L.P. Platform root-of-trust system
WO2022093254A1 (en) * 2020-10-30 2022-05-05 Hewlett-Packard Development Company, L.P. Hashed function point identifiers for data processing security
US11822663B2 (en) 2020-11-30 2023-11-21 Red Hat, Inc. Supervisor-based firmware hardening
US11847227B2 (en) 2020-11-30 2023-12-19 Red Hat, Inc. Firmware version corruption attack prevention
US20210103662A1 (en) * 2020-12-18 2021-04-08 Chinmay Ashok Techniques for restricted deployment of targeted processor firmware updates
US20220197746A1 (en) * 2020-12-18 2022-06-23 Advanced Micro Devices, Inc. Combination bios with a/b recovery
US20210224061A1 (en) * 2020-12-23 2021-07-22 Intel Corporation Firmware update technologies
US20230064398A1 (en) * 2021-08-27 2023-03-02 Dell Products L.P. Uefi extensions for analysis and remediation of bios issues in an information handling system
US11928210B2 (en) * 2022-03-02 2024-03-12 Flexxon Pte. Ltd. Module and method for monitoring systems of a host device for security exploitations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192611A1 (en) * 2006-02-15 2007-08-16 Datta Shamanna M Technique for providing secure firmware
US20080288762A1 (en) 2004-05-08 2008-11-20 Lechong Chen Firmware Interface Runtime Environment Protection Field
US20090164770A1 (en) 2007-12-20 2009-06-25 Zimmer Vincent J Hypervisor runtime integrity support

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
TW452733B (en) * 1999-11-26 2001-09-01 Inventec Corp Method for preventing BIOS from viruses infection
US6711675B1 (en) 2000-02-11 2004-03-23 Intel Corporation Protected boot flow
EP1273996B1 (en) * 2001-07-06 2008-08-06 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7237121B2 (en) 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7350063B2 (en) * 2002-06-11 2008-03-25 Intel Corporation System and method to filter processors by health during early firmware for split recovery architecture
TWI319147B (en) * 2003-04-10 2010-01-01 Lenovo Singapore Pte Ltd Apparatus, motherboard, method and computer-readable storage medium recording instructions capable of determinging physical presence in a trusted platform in a computer system
US7269747B2 (en) 2003-04-10 2007-09-11 Lenovo (Singapore) Pte. Ltd. Physical presence determination in a trusted platform
JP3981066B2 (ja) * 2003-11-07 2007-09-26 株式会社東芝 ホスト機器、メモリカード、メモリ容量変更方法及びメモリ容量変更プログラム
JP2006106914A (ja) 2004-10-01 2006-04-20 Fujitsu Ltd ファームウェアで動作する処理装置およびファームウェア更新方法
US20060101310A1 (en) 2004-10-22 2006-05-11 Nimrod Diamant Device, system and method for verifying integrity of software programs
US8464348B2 (en) * 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
US7500094B2 (en) 2005-10-18 2009-03-03 American Megatrends, Inc. BIOS identification, initialization and management
US8001267B2 (en) 2005-12-15 2011-08-16 International Business Machines Corporation Apparatus, system, and method for automatically verifying access to a multipathed target at boot time
US9053323B2 (en) * 2007-04-13 2015-06-09 Hewlett-Packard Development Company, L.P. Trusted component update system and method
US7840837B2 (en) 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US8555049B2 (en) 2007-10-05 2013-10-08 Panasonic Corporation Secure boot terminal, secure boot method, secure boot program, recording medium, and integrated circuit
US20090172639A1 (en) * 2007-12-27 2009-07-02 Mahesh Natu Firmware integrity verification
JP2009169841A (ja) 2008-01-18 2009-07-30 Panasonic Corp 情報処理装置および携帯電話装置
DE102008021567B4 (de) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
US7984286B2 (en) * 2008-06-25 2011-07-19 Intel Corporation Apparatus and method for secure boot environment
US8041794B2 (en) 2008-09-29 2011-10-18 Intel Corporation Platform discovery, asset inventory, configuration, and provisioning in a pre-boot environment using web services
US8490189B2 (en) * 2009-09-25 2013-07-16 Intel Corporation Using chipset-based protected firmware for host software tamper detection and protection
US8893112B2 (en) * 2009-12-21 2014-11-18 Intel Corporation Providing software distribution and update services regardless of the state or physical location of an end point machine
US8918907B2 (en) * 2011-04-13 2014-12-23 Phoenix Technologies Ltd. Approaches for firmware to trust an application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288762A1 (en) 2004-05-08 2008-11-20 Lechong Chen Firmware Interface Runtime Environment Protection Field
US20070192611A1 (en) * 2006-02-15 2007-08-16 Datta Shamanna M Technique for providing secure firmware
US20090164770A1 (en) 2007-12-20 2009-06-25 Zimmer Vincent J Hypervisor runtime integrity support

Also Published As

Publication number Publication date
EP2729896A4 (en) 2015-04-22
US9015455B2 (en) 2015-04-21
EP2729896A1 (en) 2014-05-14
JP2014518428A (ja) 2014-07-28
US20130013905A1 (en) 2013-01-10
WO2013006698A1 (en) 2013-01-10
CN103718165A (zh) 2014-04-09
CN103718165B (zh) 2016-08-17
KR20140043126A (ko) 2014-04-08
JP5767751B2 (ja) 2015-08-19
EP3543888A1 (en) 2019-09-25
EP2729896B1 (en) 2019-05-15

Similar Documents

Publication Publication Date Title
KR101626397B1 (ko) Bios 플래시 어택 보호 및 통지
US11520894B2 (en) Verifying controller code
US10740468B2 (en) Multiple roots of trust to verify integrity
US9785596B2 (en) Redundant system boot code in a secondary non-volatile memory
US9880908B2 (en) Recovering from compromised system boot code
US8028174B2 (en) Controlling update of content of a programmable read-only memory
JP6054908B2 (ja) 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ
EP2745228B1 (en) Secure recovery apparatus and method
US8819330B1 (en) System and method for updating a locally stored recovery image
JP2011070654A (ja) アンチマルウェアを有するコンピュータシステムおよび方法
TW201506788A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全啓動覆蓋技術
US10101928B2 (en) System and method for enhanced security and update of SMM to prevent malware injection
WO2014175863A1 (en) Configuring a system
US9245122B1 (en) Anti-malware support for firmware
US8838952B2 (en) Information processing apparatus with secure boot capability capable of verification of configuration change
US20190005245A1 (en) Executing protected code
US11861011B2 (en) Secure boot process
CN116415248A (zh) 在一开盖窜改事件中使一安全启动失败的计算机系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee