KR20140054204A - 디바이스의 펌웨어 무결성 검증 - Google Patents

디바이스의 펌웨어 무결성 검증 Download PDF

Info

Publication number
KR20140054204A
KR20140054204A KR1020147006107A KR20147006107A KR20140054204A KR 20140054204 A KR20140054204 A KR 20140054204A KR 1020147006107 A KR1020147006107 A KR 1020147006107A KR 20147006107 A KR20147006107 A KR 20147006107A KR 20140054204 A KR20140054204 A KR 20140054204A
Authority
KR
South Korea
Prior art keywords
firmware
pointer
integrity
measurement
violation
Prior art date
Application number
KR1020147006107A
Other languages
English (en)
Other versions
KR101689204B1 (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 KR20140054204A publication Critical patent/KR20140054204A/ko
Application granted granted Critical
Publication of KR101689204B1 publication Critical patent/KR101689204B1/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3031Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a motherboard or an expansion card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/577Assessing vulnerabilities and evaluating computer system security
    • 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/82Protecting input, output or interconnection devices
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에서, 본 발명은 컴퓨터 시스템의 디바이스에서 디바이스 외부의 소프트웨어 엔티티로부터 무결성 요청을 수신하는 단계, 디바이스의 무결성 측정 로직을 사용하여 디바이스의 펌웨어의 측정을 수행하는 단계, 디바이스의 복수의 포인터 구조들을 분석하여 잠재적 보안 위반이 존재하는지 여부를 판단하는 단계, 측정 및 분석에 대한 상태 보고서를 소프트웨어 엔티티에 전송하는 단계를 포함하는 방법을 포함한다. 그 밖의 다른 실시예들이 설명 및/또는 청구된다.

Description

디바이스의 펌웨어 무결성 검증{VERIFYING FIRMWARE INTEGRITY OF A DEVICE}
개인용 컴퓨터(PC) 기반뿐 아니라 태블릿 컴퓨터, 넷북, 모바일 인터넷 디바이스 등의 새로운 폼 팩터인 현재 컴퓨터 시스템들은 통상 다양한 타입의 프로세싱 회로, 메모리, 그래픽 프로세싱 등을 포함하는 다양한 반도체 컴포넌트들을 포함한다. 또한, 시간이 지남에 따라, 프로세서와 같은 여러 반도체 컴포넌트 및 일정한 컴포넌트들은 별개의 디바이스들에 의해 핸들링되도록 사용되는 많은 기능성을 통합하고 있다. 예를 들어, 이제 인터럽트 제어, 네트워크 인터페이싱, 칩셋과 같은 인터페이스 회로, 메모리 컨트롤러 기능성 등과 같은 다양한 주변 기능성이 예를 들어, 멀티코어 프로세서 내에 단일 반도체 컴포넌트로 종종 구현될 수 있다.
또한, 소정의 컴퓨터 시스템은 고급 그래픽 프로세싱 카드, 네트워킹 카드, 및 다른 주변 디바이스들과 같은 애드-인 카드(add-in card)들을 통해 시스템 내에 존재하는 다른 반도체 컴포넌트와 같은 다양한 하드웨어 디바이스를 가질 수 있다. 그 결과, 반도체 디바이스 내외부의 이들 다양한 컴포넌트는 펌웨어 또는 다른 감시 소프트웨어(supervisory software)에 따라 의도한 동작들을 실행하는 마이크로컨트롤러 등과 같은 자신의 프로세싱 회로를 포함할 수 있다. 이러한 펌웨어는 일반적으로 안티바이러스 소프트웨어와 같은 보안 모니터링 소프트웨어에 액세스할 수 없다. 그 결과, 악성 소프트웨어가 보안 모니터링 소프트웨어의 시야 밖에서 이러한 하드웨어 디바이스들 내의 펌웨어로서 존속할 수 있다. 따라서, 일정한 위협들이 이러한 펌웨어를 통해 컴퓨터 시스템을 위태롭게 할 수 있다.
통상적으로, 실행 중인 펌웨어는 마이크로컨트롤러로 원래 로드/부트스트랩되었던 것으로부터 위협받거나 변경되지 않는다고 단순히 가정한다. 펌웨어가 변경될 수 있다는 임의의 실행 시간 우려가 여전히 존재하면, 통상적인 실시는 디바이스 리셋을 수행하여 마이크로컨트롤러로 하여금 현재 실행 중인 펌웨어를 플러쉬(flush)하고 부트스트랩 이미지를 리로드하게 하는 것이다.
도 1은 본 발명의 일 실시예에 따라 무결성(integrity) 평가를 수행하는 방법의 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 시스템의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 대표 디바이스의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 무결성 분석의 구체적 설명을 예시한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 시스템의 블록도이다.
다양한 실시예에서, 하드웨어 디바이스는 외부 모니터링 에이전트로 하여금 하드웨어 디바이스 내에서 실행 중인 펌웨어의 무결성에 관해 신뢰할 수 있도록 질의하게 할 수 있는 메커니즘을 외부 모니터링 에이전트, 예를 들어 (디바이스 외부의) 외부 소프트웨어에 공개할 수 있다. 이러한 방식으로, 안티바이러스 소프트웨어 등의 외부 보안 모니터링 소프트웨어는 컴퓨팅 에코시스템에서 하드웨어 디바이스의 무결성 위반 또는 위협을 검출하는데 사용될 수 있다. 매우 다양한 하드웨어 디바이스들이 여기에 설명된 실시예들을 사용하여 무결성 검증될 수 있다는 점에 유의한다. 제한이 아닌 예시의 목적의 일례로서, 하드웨어 디바이스들은 프로그래머블 컨트롤러를 포함하는 PC 또는 다른 컴퓨터 에코시스템 내에 존재하는 임의의 방식의 하드웨어일 수 있다. 이러한 디바이스들은 애드-인 카드, 시스템의 칩셋에 연결된 주변 디바이스, 칩셋 컴포넌트, 중앙 처리 장치(CPU), 또는 이러한 다른 디바이스 또는 그 일부일 수 있다.
도 1을 참조하면, 본 발명의 일 실시예에 따라 무결성 평가를 수행하는 방법의 흐름도가 도시된다. 도 1에 도시된 바와 같이, 방법(100)은 무결성 체크될 펌웨어 또는 그 밖의 소프트웨어를 갖는 디바이스의 하드웨어 내에 구현될 수 있다. 펌웨어는 예를 들어, RAM(random access memory), ROM(read only memory), 플래시 메모리 등의 휘발성 또는 비휘발성 메모리 구조에 저장되어 프로세서 또는 마이크로컨트롤러와 같은 프로그래머블 로직의 감시 제어를 제공하는 루틴을 포함한다. 여기에 사용된 바와 같이, “펌웨어”란 용어는 운영 소프트웨어 및/또는 감시 소프트웨어, 또는 디바이스 외부의 엔티티들이 알아볼 수 없는 디바이스 컨트롤러 내에서 실행되는 그 밖의 소프트웨어를 포함하는 것을 의도한다. 또한, 방법(100)은 컴퓨터 시스템에 존재하거나 네트워크를 통해 컴퓨터 시스템으로 원격 액세스 가능한 무결성 소프트웨어, 예를 들어, 안티바이러스 소프트웨어와 같은 외부 엔티티를 통해 부분적으로 더 실행될 수 있다. 다른 실시예에서, 무결성 체크를 수행하기 위한 하드웨어 서포트(hardware support)뿐 아니라, 예를 들어 펌웨어 자체의 별도의 코드 섹션이 무결성 분석의 적어도 일부를 수행하는데 사용될 수 있다. 즉, 전용 무결성 로직이 없는 실시예들에서, 디바이스의 마이크로컨트롤러는 ROM에 저장된 무결성 소프트웨어를 실행하는 부분적 신뢰 가능 상태(trusted state)에 일시적으로 위치할 수 있다. 이러한 무결성 소프트웨어 또는 측정 코드가 파티션화된다는 점에 유의한다. 측정 코드의 실행 후, 측정 정보는 기록되고, 마이크로컨트롤러는 신뢰 불가 상태로 돌아간다.
도 1에 도시된 바와 같이, 방법(100)은 디바이스에서 외부 엔티티로부터 무결성 요청을 수신함으로써 시작될 수 있다(블록(110)). 설명을 위해, 외부 엔티티는 여기서의 설명을 위해, 마이크로컨트롤러를 갖는 애드-인 카드라고 가정될 수 있는 디바이스의 펌웨어의 무결성을 테스트하려는 시스템의 프로세서에서 실행되는 안티바이러스 소프트웨어라고 가정한다. 이로써 이러한 요청은 마이크로컨트롤러에 의해 수신될 수 있다.
이 요청에 응답하여, 디바이스의 전용 무결성 검증(verification) 로직은 펌웨어의 측정을 수행할 수 있다(블록(120)). 다양한 실시예에서, 측정은 디바이스의 하나 이상의 프로그래머블 컨트롤러에 실행될 하나 이상의 이미지(예를 들어, 디바이스 펌웨어 및/또는 다른 컨트롤러 코드)의 해시(hash)와 같은 암호화 측정(cryptographic measurement)일 수 있다. 상이한 구현예에서, 이미지들의 실제 해시들을 포함하는 매니페스트(manifest)가 해싱되거나, 이미지 자체가 직접 해싱될 수 있다. 이러한 해시는 무결성 검증 로직의 (보안 해시 알고리즘 1(Sha1), Sha2, 고급 암호화 표준 해시-기반 메시지 인증 코드(HMAC), 암호 메시지 인증 코드(CMAC) 등) 내장 해싱 함수(embedded hashing function)를 사용하여 컴퓨팅될 수 있다. 다음으로, 측정은 디바이스 스토리지에 저장될 수 있다(블록(125)). 일부 실시예에서, 이러한 디바이스 스토리지는 무결성 검증 로직 내의 또는 무결성 검증 로직에만 액세스할 수 있는 레지스터 등의 보안 스토리지일 수 있다. 그러나, 다른 실시예들에서, 이러한 측정은 디바이스의 SRAM(static random access memory) 등의 다른 위치에 저장될 수 있다.
무결성 검증 로직은 이러한 펌웨어 측정뿐 아니라 컨트롤러 포인터 구조의 분석을 더 수행할 수 있다(블록(130)). 이하 더 후술되는 바와 같이, 다양한 실시예에서, 이들 포인터 구조들은 명령 포인터, 인터럽트 포인터, 및 예외 핸들링 포인터(exception handling pointer)를 포함할 수 있다. 이들 구조 각각은 블록(120)에서 전술한 측정 대상이었던 펌웨어 또는 다른 코드 내의 대응하는 위치들을 포인팅하는지 여부를 판단하기 위해 검사될 수 있다. 포인터가 측정 코드 외부의 위치를 포인팅하는 경우, 이는 코드를 변경하지 않고, 측정 코드 블록의 외부에 있는 새로운 코드를 추가하고 포인터를 변경하여 이러한 잠재적 악성 코드에 대한 제어를 재지향(redirect)함으로써 공격자가 관여하는 경로가 될 수 있다. 비-펌웨어 포인팅 참조는 실제 위반은 아닐 수 있지만, 잠재적 보안 위반이 존재하는 징후로서 시스템을 위태롭게 하는데 사용될 수 있다는 것에 유의한다. 이로 인해, 이러한 분석에 응답하여 다이아몬드(140)에서 임의의 포인터가 측정 디바이스 펌웨어 외부의 위치를 참조하는지 여부가 판단될 수 있다. 참조하는 경우, 제어는 블록(150)으로 진행하여, 예를 들어 상태 메시지의 대응하는 필드에서 위반을 식별함으로써 위반이 표시될 수 있다. 다이아몬드(140)와 블록(150) 양자 모두로부터, 제어는 블록(160)으로 진행하여, 측정 및 상태 메시지가 외부 엔티티로 전송될 수 있다. 이러한 외부 엔티티에 대한 정보의 보고는 디바이스에서 실제 실행 중인 것에 관한 비밀 또는 민감한 정보를 공개하지 않는다는 점에 유의한다. 즉, 제공된 정보는 펌웨어 코드의 실제 식별이 아니라 코드의 아이덴티티를 포함하지 않는 방식(또는 코드 자체를 전혀 포함하지 않는 방식)의 코드 측정일 수 있다.
방법(100)의 프로세스에서의 포인트 포워드(point forward)로부터, 외부 엔티티에 의하거나 그 제어 하에서 행동들이 수행될 수 있다. 우선, 다이아몬드(165)에서, 측정이 디바이스 펌웨어를 위한 화이트리스트(whitelist)의 엔트리와 일치(match)하는지 여부가 판단될 수 있다. 즉, 외부 엔티티는 다양한 엔트리를 갖는 데이터 구조를 포함하거나 데이터 구조에 액세스할 수 있는데, 각각의 엔트리는 컴퓨터 시스템에 존재하는 다양한 디바이스들의 펌웨어와 같은 인가 코드 부분을 위한 측정값에 대응한다. 또한, 이러한 화이트리스트는 컴퓨터 시스템으로부터 외부에 위치하고 외부 엔티티가 액세스할 수 있다. 화이트리스트는 판매사에 의해 공급되거나, 소정의 디바이스가 처음 실행됨에 따라 실행 시간 중에 동적으로 생성될 수 있다. 측정이 일치하지 않는다고 판단되면, 제어는 블록(190)으로 직접 진행하여, 무결성 실패 보고서가 예를 들어 시스템의 사용자에게 제공되고/되거나 선후책(remedial measures)이 취해질 수 있다. 본 발명의 범위가 이로 제한되는 것은 아니지만, 다양한 구현에서, 이러한 선후책은 시스템을 셧다운하는 것, 의심스러운 펌웨어를 리로딩하는 것 또는 시스템이 신뢰 불가 상태라고 다른 하드웨어 또는 소프트웨어 엔티티들에게 시그널링하는 등의 다른 동작을 포함할 수 있다. 이는 다른 엔티티들이 이에 따라 반응(예를 들어, 보안 민감 동작들의 실행 거절)하게 할 수 있다. 보고서를 전송하는 대신 다른 실시예들에서, 미리 결정된 위치로 전송될 수 있는 로그 엔트리가 생성될 수 있다는 점에 유의한다.
다이아몬드(165)에서 측정이 일치한다면, 제어는 다이아몬드(170)로 진행하여 상태 메시지가 위반을 표시하는지 여부가 판단될 수 있다. 위반을 표시하지 않으면, 제어는 블록(180)으로 진행하여, 무결성이 예를 들어, 사용자 또는 다른 위치에 대한 보고서를 통하거나, 디바이스의 추가 실행을 가능하게 함으로써, 임의의 다른 방식으로 확인될 수 있다. 대신 상태 메시지가 위반을 표시하면, 제어는 전술한 블록(190)으로 진행한다. 도 1의 실시예에서의 이러한 특정 구현예와 함께 도시되었지만, 본 발명의 범위는 이로 제한되지 않는다는 점을 이해한다.
전술한 바와 같이, 본 발명의 일 실시예에 따른 무결성 검증은 여러 상이한 타입의 컴퓨팅 시스템에 적용될 수 있다. 도 2를 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시된다. 시스템(200)은 서버 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿, 넷북 컴퓨터, 모바일 인터넷 디바이스, 스마트폰 등과 같은 임의의 타입의 컴퓨터 시스템일 수 있다는 점에 유의한다. 예시 목적으로, 도 2에서, 시스템(200)은 다양한 컴포넌트들이 다양한 인터커넥트를 통해 연결되어 있는 PCI Express(Peripheral Component Interconnect Express)™ (PCIe™) 기반 시스템일 수 있다. 이러한 시스템은 PCIe™ Base Specification version 2.0(2007년 1월 17에 간행됨)에 따를 수 있다. 구체적으로, 도 2의 실시예에서, 프로세서(220)는 버스(230)를 통해 입출력 허브(IOH; 240)에 연결되고, 그 후 버스(250)를 통해 주변 컨트롤러 허브(PCH; 260)에 연결한다. 그 결과, PCH(260)는 신뢰 플랫폼 모듈(TPM; 290) 및 다른 디바이스들에 연결될 수 있다. 도시된 바와 같이, 이들 컴포넌트 각각은 다양한 내부 디바이스를 포함할 수 있고, 하나 이상의 다른 디바이스에 더 연결될 수 있다. 이러한 각각의 디바이스는 구성 정보를 포함할 수 있는 로컬 메모리의 일부일 수 있는 PCI 구성 공간을 포함하거나 이와 관련되어 있을 수 있다. 다양한 실시예에서, 이러한 구성 공간들은 본 발명의 일 실시예에 따른 무결성 보고 구성을 더 포함할 수 있다.
도 2에서 알 수 있듯이, 프로세서(220)는 복수의 코어(2220-n)를 포함하여 하나 이상의 스레드의 명령을 실행할 수 있다. 또한, 프로세서(220)는 프로세서 코어 외부에서 실행되는 프로세서의 다양한 시스템 에이전트 로직을 포함할 수 있는 언코어(uncore; 225)를 더 포함할 수 있다. 또한, 프로세서(220)는 도 2에 도시된 실시예에서 DRAM(dynamic random access memory)일 수 있는 시스템 메모리(235)에 연결될 수 있는 통합 메모리 컨트롤러(IMC; 228)를 더 포함할 수 있다. 도 2의 실시예에서 더 알 수 있듯이, IOH(240)는 또한 DMI(direct media interface) 프로토콜에 따를 수 있는 브릿지(245)를 포함할 수 있다.
도 2에 더 도시된 바와 같이, PCH(260)는 브릿지 및 컨트롤러를 포함하는 다양한 컴포넌트들을 포함할 수 있다. 또한, 가상화 엔진(virtualization engine (VE); 262) 및 매니지어빌리티 엔진(manageability engine (ME); 264)은 다양한 주변 디바이스에 제어 기능을 제공하기 위해 존재할 수 있다. 알 수 있듯이, PCH(260)는 컨트롤러 및 브릿지(268, 270, 272, 274, 및 276)를 더 포함하여, 다양한 기능성을 제공하고 PCH에 연결된 다양한 디바이스와 인터페이싱할 수 있다. 구체적으로, PCIe™ 브릿지(268)가 특히 SATA(serial advanced technology attach) 컨트롤러(270), XHCI(extensible host controller interface) 컨트롤러(272), LPC(low pin count) 컨트롤러(276), 및 SPI(serial peripheral interface) 컨트롤러(274)를 포함하는 컨트롤러와 함께 존재할 수 있다. 일부 실시예에서, PCH와 함께 추가 컴포넌트들이 센서 및 전용 디바이스들을 포함할 수 있다. 예시 목적으로, 도 2는 이들 상이한 컨트롤러 및 브릿지에 연결될 수 있는 다양한 디바이스를 더 도시한다. 구체적으로, 디스크 드라이브 또는 다른 대용량 스토리지와 같은 SATA 스토리지(280)는 SATA 컨트롤러(270)에 연결될 수 있고, XHCI 디바이스(282)는 XCHCI 컨트롤러(272)에 연결될 수 있고, SPI 디바이스(284)는 SPI 컨트롤러(274)에 연결될 수 있다.
다양한 디바이스들은 PCIe™ 브릿지(268)에 연결된 PCIe™ 컨트롤러(292)에 연결될 수 있다. 도 2에 도시된 예시에서, 이러한 디바이스는 네트워크 인터페이스 컨트롤러(NIC; 296)를 포함하여, 시스템(200)과 유선 네트워크, 예를 들어 LAN(local area network), 무선 LAN(WLAN)과 같은 무선 네트워크, 또는 셀룰러 네트워크와 같은 광역 무선 네트워크 등과 같은 네트워크의 다른 에이전트 사이의 통신을 가능하게 할 수 있다. 또한, PCIe™ 디바이스(294)는 PCIe™ 컨트롤러에 연결될 수도 있다. 다른 실시예에서, IOH가 존재하지 않을 수 있으며, 대신 프로세서(220)가 DMI 또는 다른 이러한 인터커넥트를 통해 PCH(250)에 직접 연결될 수 있다.
브릿지, 컨트롤러, 및 디바이스들이 로드 가능 펌웨어, 지원 패치, 및 업데이터를 가질 수 있고, 다른 버스 또는 네트워크에 연결될 수 있다. 그러므로 사기 소프트웨어(rogue software)에 의한 악용 위험 또는 디바이스에 대한 다른 공격이 존재한다. 이로 인해, 실시예들은 외부 엔티티를 통해 컴포넌트에서 실행되는 적어도 일정한 코드의 무결성을 검증할 능력을 제공할 수 있다.
도 3을 참조하면, 도 2에 관해 전술된 디바이스 중 어느 하나에 일반적으로 대응할 수 있는 대표 디바이스(210)의 블록도가 도시되어 있다. 디바이스(210) 각각은 디바이스의 비휘발성 메모리일 수 있는 펌웨어 스토리지에 저장된 대응하는 펌웨어 이미지 및 구성 공간(213)을 포함할 수 있다. 실행 중에, 펌웨어 이미지는 SRAM(static random access memory)과 같은 고속 메모리, 즉 디바이스 메모리(216)에 저장될 수 있다. 또한, 디바이스의 적어도 일부는 TPM PCR(platform configuration register)(211)를 포함하여 본 발명의 일 실시예에 따른 무결성 분석을 수행하는 것을 도울 수 있다. 도 2에서 알 수 있는 바와 같이, 무결성 측정 로직(214)이 존재하는데, 이는 외부 엔티티로부터 수신된 트리거에 응답하여 디바이스의 펌웨어 및/또는 다른 코드에 대해 무결성 체크를 수행하는 하드웨어를 포함할 수 있다. 일반적으로, 무결성 측정 로직은 본 발명의 일 실시예에 따른 무결성 분석을 수행하도록 구성된 내장형 고정 기능 하드웨어일 수 있다. 이러한 실시예에서, 이러한 고정 기능 유닛은 외부 보안 모니터링 에이전트, 예를 들어 안티바이러스 소프트웨어로부터의 요청 수신에만 응답하여 동작할 수 있다. 또한, 디바이스(210)는 하나 이상의 무결성 레지스터(215)를 포함하여 무결성 측정 로직에 의해 행해진 측정을 저장할 수 있다. 일부 실시예에서 이들 레지스터는 TPM PCR에 대응할 수 있으며, 다른 실시예에서 이들 레지스터들은 상이한 구조 세트일 수 있다. 또한, 이들 레지스터 중 적어도 하나는 무결성 측정 로직에 의해 기록되어 디바이스의 다양한 다른 구조들의 상태를 표시할 수 있는 다수의 필드를 포함하는 상태 메시지를 저장하도록 구성될 수 있다. 구체적으로, 도 2에서 더 알 수 있듯이, 디바이스(210)는 복수의 포인터 구조(219a-c)를 포함할 수 있다. 이러한 포인터 구조들은 명령 포인터, 인터럽트 포인터, 및 예외 핸들링 포인터들을 포함할 수 있다. 이들 다양한 포인터를 저장하기 위한 하드웨어 구조들로서 설명되어 있지만, 다른 실시예들에서 이러한 포인터들은 예를 들어, 이러한 구조들로 존재하는 다양한 포인터들이 측정된 코드 외부의 위치들을 포인팅하지 않는다고 확인하기 위한 무결성 분석 동작 중에 액세스될 로컬 메모리에 저장될 수 있다는 점을 이해한다.
더 알 수 있듯이, 디바이스(210)는 디바이스 펌웨어가 실행될 수 있는 하나 이상의 컨트롤러(218)(예를 들어, 마이크로컨트롤러)를 포함할 수 있다. 컨트롤러(218)는 일부 실시예에서 RISC(reduced instruction set computing) 모델 또는 CISC(complex instruction set computing) 모델에 따른 마이크로코드를 포함할 수 있는 펌웨어 제어 하에서 동작할 수 있다. 컨트롤러(218)는 호스트 프로세서 또는 다른 로직에 의해 디바이스로 제공되는 이러한 코드로부터 다양한 애플리케이션 및 다른 사용자 레벨 코드 또는 적어도 명령들을 더 실행할 수 있다. 일반적으로, 실시예들은 컨트롤러(218)에서 실행되고 디바이스 메모리(216)에 동작 중에 저장되는 실행 중인 펌웨어의 무결성 판단에 초점을 맞출 수 있다. 도 3의 실시예에서의 이러한 특정 컴포넌트들과 함께 도시되었지만, 본 발명의 범위는 이로 제한되지 않는다는 점을 이해한다.
도 4는 본 발명의 일 실시예에 따른 무결성 분석의 구체적 설명을 예시한 흐름도이다. 도 4에 도시된 바와 같이, 방법(300)은 분석 대상 디바이스에 트리거를 전송하는 외부 엔티티, 예를 들어 소프트웨어에 의해 시작될 수 있다(블록(305)). 본 발명의 범위가 이로 제한되지 않지만, 일 실시예에서, 하드웨어 디바이스는 트리거를 외부 소프트웨어에 (예를 들어, PCIe™ MMIO(memory management input/output) 레지스터들을 통해) 노출시킬 수 있다. 이들 레지스터는 시스템 초기화 중에 호스트 시스템에 의해 구성될 수 있다는 점을 유의한다. 이로 인해, 하드웨어 디바이스는 트리거 이벤트를 수신하여 다양한 동작을 개시함으로써 하드웨어 디바이스에서 실행되는 소프트웨어/펌웨어의 신뢰도를 판단할 수 있다(블록(310)). 하나의 동작으로서, 디바이스의 무결성 로직은 하드웨어 디바이스의 내부 마이크로컨트롤러(들)에 의해 사용되는 현재 실행 중인/활성인 펌웨어 프로그램 코드(내부 디바이스 SRAM에 저장될 수 있음)의 암호화 조치(cryptographic measure)(예를 들어, 해시 또는 HMAC)를 수행할 수 있다(블록(320)). 그 후 암호화 조치는, 예를 들어 무결성 로직의 레지스터 등의 스토리지에 저장될 수 있다(블록(325)).
이러한 조치뿐 아니라, 하드웨어 디바이스는 (예를 들어, 비트 플래그와 같은 하나 이상의 상태 지시자를 포함하는) 보고서, 즉 추가 실행 상태 메시지를 평가 및 생성하여 마이크로컨트롤러의 현재 실행 중인 (대상 마이크로컨트롤러에 적절한) 명령 포인터(들), 인터럽트 테이블 포인터(들), 예외 핸들러 포인터(들) 각각이 암호화 조치 대상이었던 펌웨어 프로그램 코드의 주소 범위(들) 내의 위치를 참조하는지 여부를 표시할 수 있다(블록(330)). 알 수 있듯이, 이들 포인터 평가는 다이아몬드(335 및 340) 및 블록(345)을 통해 루프를 형성할 수 있다.
포인터 분석 완료 시에, 제어는 블록(350)으로 진행하여 암호화 조치 값(cryptographic measure value) 및 실행 상태 메시지가 초기 트리거에 대한 응답으로서 외부 엔티티 소프트웨어에 (예를 들어, 외부 소프트웨어에 의해 판독된 후속 PCI/PCI-express MMIO 레지스터(들)를 통해) 보고될 수 있다. 당연히, 상이한 실시예들에서, 외부 소프트웨어 요청에 응답하여 추가 또는 상이한 동작들이 하드웨어 디바이스에서 수행될 수 있다. 또한, 무결성 분석은 디바이스 초기화 시 및/또는 시스템 동작 중의 다른 시점, 예를 들어 안티바이러스 소프트웨어 스캔이 실행될 때마다 수행될 수 있다는 점에 유의한다.
그 후 제어는 블록(360)으로 진행하여 외부 소프트웨어는 이러한 정보에 기반하여 디바이스 무결성을 판단할 수 있다. 예시적인 사용 시나리오로서, 측정 정보의 수신 시에 수신된 측정 정보를 분석하는 것은 외부 소프트웨어의 담당이다. 일례로서, 이 소프트웨어는 이로 인한 암호화 조치 해시값을 공지/신뢰 펌웨어 해시 값들의 리스트와 비교하여 해시가 값들 중 하나와 일치하는지 여부를 판단할 수 있다. 또한, 이 소프트웨어는 어떠한 실행 상태 플래그들도 하드웨어 디바이스 내부 마이크로컨트롤러가 암호화 조치 대상이 아니었던 프로그램 코드를 참조/사용한다고 표시하지 않는다는 것을 보장할 수 있다. 실행 상태 플래그들의 개수 및 특성은 마이크로컨트롤러에 따라 달라질 수 있다는 점에 유의한다. 예시로서, 일 실시예는 하나의 단일 실행 상태 플래그를 사용하여 하나의 이상의 포인터 전체에 의한 위반을 표현하거나, 하나의 실행 상태 플래그를 더 그래뉼라인 실행 상태 보고를 위한 각각의 포인터에 전용하는 것을 선택할 수 있다.
외부 소프트웨어가 측정된 해시 일치를 판단하고, 실행 상태 플래그들이 적절하다고 판단하면, 외부 소프트웨어는 하드웨어 디바이스에서 실행 중인 펌웨어의 무결성을 수용할 수 있다. 이로 인해 외부 소프트웨어는 적어도 합리적인 확신을 가지고, 하드웨어 디바이스에서 실행 중인 펌웨어가 위태롭게 되지 않거나 무결성에 영향을 받았다고 표시할 수 있다. 이로써 하드웨어 또는 소프트웨어는 시스템이 보안 상태라고 보장한 후(즉, 무결성이 검증된 후) 보안-민감 동작들을 수행하도록 추진할 수 있다. 실행 상태 플래그들은 임의의 마이크로컨트롤러 실행 포인터(예를 들어, 인터럽트 테이블 포인터, 예외 포인터, 실행 명령 포인터)가 측정 대상이 아닌 코드를 지칭하는지 여부를 표시할 수 있다. 이러한 방법으로, 악성 프로그램 코드가 원래 펌웨어 프로그램 코드를 변형하지 않은 채로 남겨두는 대신 SRAM의 미측정 프로그램 데이터 영역에 존재하는 대체 악성 코드를 사용하는 것이 방지될 수 있다.
다양한 실시예들에서, 하드웨어 디바이스에서 수행되는 암호화 조치는 하드웨어 디바이스의 마이크로컨트롤러(들) SRAM에 존재하는 정적 펌웨어 프로그램 코드만을 측정할 수 있다. 그러나 실행시간 프로그램 데이터를 측정하는 것은 비상관성/비결정성 조치 값(uncorrelated/non-deterministic measure value)들을 초래할 수 있기 때문에 이러한 조치는 SRAM에 또한 존재하는 펌웨어 프로그램 데이터를 포함하지 않을 수 있다.
다양한 실시예에서, 외부 소프트웨어 요청에 응답하여 수행된 무결성 체크는 하드웨어에 의해 전적으로 구현 및 서비스될 수 있고, 동작에 전혀 영향을 받지 않거나 하드웨어 디바이스의 마이크로컨트롤러에서 실행 중인 펌웨어에 의해 직접 영향을 받는 결과를 가질 수 있다. 이러한 방식으로, 악성 펌웨어가 보고된 조치에 영향을 미치는 것이 저절로 방지될 수 있다. 그러나, 다른 실시예에서 마이크로컨트롤러 자체는 코드를 실행하여 자기 자신의 SRAM 내용을 측정할 수 있다. 그러나, 이러한 상황의 경우, 다양한 전제 조건들이 존재할 수 있다. 예를 들어, 측정 프로그램 코드는 ROM(read only memory) 영역 또는 신뢰 불가 상태 중에 마이크로컨트롤러에 의해 수정될 수 없는 다른 영역에 존재할 수 있다. 또한, 마이크로컨트롤러는 현재(신뢰 불가) 상태와 무관하게, 마이크로컨트롤러의 타입에 따라 달라질 수 있는 ROM 에서의 측정 프로그램 코드의 정확한 실행을 보증하는 신뢰 가능 상태에 놓일 수 있다. 예를 들어, 일부 실시예에서, 이러한 신뢰 가능 상태는 시스템 관리 모드(SMM), 인증 코드 모듈(ACM) 등일 수 있다. 또한, 측정값은 측정 프로그램 코드를 사용하여 신뢰 가능 상태에서 마이크로컨트롤러에 의해 보고된 후 일단 마이크로컨트롤러가 이전의 신뢰 불가 상태를 재개하거나 신뢰 불가 상태로 돌아가면 마이크로컨트롤러에 의해 변경 또는 중복 기입될 수 있다. 전반적으로, "신뢰 가능" 상태는 현재의 펌웨어 실행을 중단시키고 상이한 펌웨어 세트의 실행으로 전환시키는 마이크로컨트롤러의 동작 프로세스로서 일반적으로 정의될 수 있으며, 제2 펌웨어 세트는 제1 펌웨어의 영향과 완전히 독립적으로 동작한다. 제1 펌웨어 세트는 "신뢰 불가"라고 인식되고, 제2 펌웨어 세트는 "신뢰 가능"이라고 인식된다. 일 실시예에서, 신뢰 가능 상태는 “신뢰 불가” 펌웨어(즉, 측정될 펌웨어)의 실행을 중지시키고, 신뢰 불가 펌웨어의 실행에 관한 모든 마이크로컨트롤러 상태를 세이브하고, 모든 마이트로컨트롤러 상태를 프레시 (신뢰 가능) 값들로 리셋/재초기화함으로써 들어갈 수 있다.
다양한 실시예에서, 하드웨어 디바이스의 마이크로컨트롤러의 상세한 동작 상태의 의도하지 않은 사이드 채널 정보 개시 시나리오들을 감소시키기 위해 프로그램 코드 SRAM 콘텐츠와 실행 상태 플래그의 암호화 해시만이 하드웨어 디바이스와 외부 소프트웨어 사이에 전달될 수 있다.
이로 인해, 다양한 실시예들에 따르면, 불필요한 디바이스 리셋이 회피될 수 있고, 높은 레벨의 가시성 및 하드웨어 디바이스 내에서 실행 중인 펌웨어 프로그램 코드가 변형되지 않았다는 확신이 이루어질 수 있으며, 이로써 더 신뢰 가능한 컴퓨팅 에코시스템을 초래한다.
실시예들은 여러 상이한 시스템 타입에서 구현될 수 있다. 도 5를 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시된다. 도 5에 도시된 바와 같이, 멀티프로세서 시스템(500)은 포인트-투-포인트 인터커넥트 시스템으로서 포인트-투-포인트 인터커넥트(550)를 통해 연결된 제1 프로세서(570) 및 제2 프로세서(580)를 포함한다. 도 5에 도시된 바와 같이, 프로세서(570 및 580) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(574a 및 574b) 및 프로세서 코어(584a 및 584b))를 포함하는 멀티코어 프로세서일 수 있으나, 더 많은 코어들이 프로세서에 잠재적으로 존재할 수 있다. 이러한 프로세서들은 시스템(500)의 추가 컴포넌트 중 하나 이상에 존재하는 전용 무결성 하드웨어와 통신할 수 있는 안티바이러스 소프트웨어를 실행할 수 있다.
도 5를 다시 참조하면, 제1 프로세서(570)는 메모리 컨트롤러 허브(MCH; 572) 및 포인트-투-포인트 (P-P) 인터페이스(576 및 578)를 더 포함한다. 이와 유사하게, 제2 프로세서(580)는 MCH(582) 및 P-P 인터페이스(586 및 588)를 포함한다. 도 5에 도시된 바와 같이, MCH(572 및 582)는 개별 프로세서에 로컬 부착된 메인 메모리(예를 들어, DRAM(dynamic random access memory))의 일부일 수 있는 각각의 메모리, 즉 메모리(532) 및 메모리(534)에 프로세서를 연결한다. 제1 프로세서(570) 및 제2 프로세서(580)는 각각 P-P 인터커넥트(552 및 554)를 통해 칩셋(590)에 연결될 수 있다. 도 5에 도시된 바와 같이, 칩셋(590)은 P-P 인터페이스(594 및 598)를 포함한다. 일례로서, 칩셋(590)은 무결성 로직(595)을 포함하여 펌웨어 스토리지(598)에 저장된 펌웨어의 무결성을 측정할 수 있다.
게다가, 칩셋(590)은 인터페이스(592)를 포함하여 P-P 인터커넥트(539)에 의해 고성능 그래픽 엔진(538)과 칩셋(590)을 연결할 수 있다. 다음으로, 칩셋(590)은 인터페이스(596)를 통해 제1 버스(516)에 연결될 수 있다. 도 5에 도시된 바와 같이, 제1 버스(516)를 제2 버스(520)에 연결시키는 버스 브릿지(518)와 함께, 다양한 입출력(I/O) 디바이스들(514)이 제1 버스(516)에 연결될 수 있다. 예를 들어, 키보드/마우스(522), 통신 디바이스(526), 및 코드(530)를 포함할 수 있는 디스크 드라이브 또는 그 밖의 다른 대용량 스토리지 디바이스와 같은 데이터 스토리지 유닛(528)을 포함하여 다양한 디바이스가 제2 버스(520)에 연결되어, 예를 들어 본 발명의 일 실시예에 따라 디바이스 펌웨어 보안 동작들을 수행할 수 있다. 또한, 오디오 I/O(524)는 제2 버스(520)에 연결될 수 있다.
실시예들은 코드로 구현될 수 있고, 시스템을 프로그래밍하여 명령어들을 수행하는데 사용될 수 있는 명령들이 저장된 비-일시적 저장 매체에 저장될 수 있다. 저장 매체는 이들로 제한되는 것은 아니지만, 플로피 디스크, 광학 디스크, SSD(solid state drive), CD-ROM(compact disk read-only memory), CD-RW(compact disk rewritable), 및 광자기 디스크를 포함하는 임의의 타입의 디스크, ROM(read-only memory), DRAM(dynamic RAM) 및 SRAM(static RAM)과 같은 RAM(random access memory), EPROM(erasable programmable ROM), 플래시 메모리, EEPROM(electrically EPROM)과 같은 반도체 디바이스, 자기 또는 광 카드, 또는 전자 명령들을 저장하는데 적합한 임의의 다른 타입의 매체를 포함할 수 있다.
본 발명은 제한적인 개수의 실시예에 관해 설명되어 있지만, 당업자는 이로부터 여러 수정예 및 변형예를 이해할 것이다. 첨부된 청구항들이 본 발명의 사상 및 범위 내에 있는 이러한 모든 수정 및 변형을 포괄하는 것을 목적으로 한다.

Claims (20)

  1. 방법으로서,
    컴퓨터 시스템의 디바이스에서 상기 디바이스 외부의 모니터링 엔티티로부터 무결성(integrity) 요청을 수신하는 단계;
    상기 디바이스의 무결성 측정 로직을 사용하여 상기 디바이스의 펌웨어의 측정을 수행하고 상기 디바이스의 스토리지에 상기 측정을 저장하는 단계;
    상기 디바이스의 복수의 포인터 구조를 분석하여 잠재적 보안 위반이 존재하는지 여부를 판단하는 단계; 및
    상기 측정 및 상기 분석에 대한 상태 보고서를 상기 모니터링 엔티티에 전송하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 분석하는 단계는 상기 포인터 구조 중 어느 하나가 상기 측정된 펌웨어의 외부의 위치를 포인팅하는지 여부를 판단하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 포인터 구조 중 제1 포인터 구조가 상기 측정된 펌웨어의 외부의 위치를 포인팅하는 경우 상기 디바이스의 상태 스토리지의 제1 필드에서 위반을 식별하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서, 상기 측정을 상기 디바이스의 스토리지로부터 상기 모니터링 엔티티에 전송하여, 상기 모니터링 엔티티로 하여금 상기 측정이 상기 디바이스를 위한 화이트리스트의 엔트리와 일치(match)하는지 여부를 판단하게 하는 단계를 더 포함하며,
    상기 화이트리스트는 각각이 대응하는 디바이스의 펌웨어를 위한 측정을 저장하는 복수의 엔트리를 포함하는, 방법.
  5. 제4항에 있어서, 상기 측정이 상기 화이트리스트의 엔트리와 일치하지 않는 경우 상기 모니터링 엔티티는 무결성 위반을 보고하는, 방법.
  6. 제4항에 있어서, 상기 측정이 상기 화이트리스트의 엔트리와 일치하는 경우, 상기 모니터링 엔티티는 상기 디바이스의 동작을 가능하게 하는, 방법.
  7. 제1항에 있어서, 상기 측정을 수행하는 단계는 무결성 코드 블록을 실행하는 상기 무결성 측정 로직을 사용하여 상기 디바이스의 펌웨어 스토리지에 저장된 상기 펌웨어의 암호화 조치(cryptographic measure)를 수행하는 단계를 포함하는, 방법.
  8. 제1항에 있어서, 상기 디바이스로부터 상기 모니터링 엔티티로 상기 상태 보고서를 전송하여, 상기 모니터링 엔티티로 하여금 상기 측정된 펌웨어의 영역을 넘어 확장되는 상기 복수의 포인터 구조 중 하나의 포인터에 기반하여 잠재적 포인터 위반이 표시되는지 여부를 판단하게 하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서, 상기 잠재적 포인터 위반이 표시되는 경우, 상기 모니터링 엔티티는 무결성 위반을 보고하는, 방법.
  10. 제1항에 있어서, 상기 컴퓨터 시스템 외부의 상기 모니터링 엔티티로부터 상기 무결성 요청을 수신하는 단계를 더 포함하는, 방법.
  11. 디바이스로서,
    디바이스 펌웨어를 실행하는 마이크로컨트롤러;
    상기 디바이스 펌웨어를 저장하는 비휘발성 스토리지;
    적어도 하나의 명령 포인터를 저장하는 제1 포인터 구조, 적어도 하나의 인터럽트 핸들러 포인터를 저장하는 제2 포인터 구조, 및 적어도 하나의 예외 핸들러 포인터를 저장하는 제3 포인터 구조를 포함하는 복수의 포인터 구조; 및
    외부 보안 모니터링 에이전트로부터 무결성 입증(validation) 요청을 수신하고, 상기 디바이스 펌웨어를 측정하고 상기 디바이스의 제2 스토리지에 상기 디바이스 펌웨어의 암호화 조치를 저장하고, 상기 복수의 포인터 구조 중 어느 하나가 상기 측정된 디바이스 펌웨어의 외부의 위치를 포인팅하는지 여부를 판단하고, 포인팅하는 경우 상태 메시지의 대응하는 지시자를 설정하고, 상기 암호화 조치 및 상태 메시지를 상기 외부 보안 모니터링 에이전트에 보고하는 무결성 로직
    을 포함하는, 디바이스.
  12. 제11항에 있어서, 상기 디바이스는 컴퓨터 시스템의 주변 컨트롤러 허브(PCH)에 연결된 주변 디바이스를 포함하며, 상기 PCH는 상기 컴퓨터 시스템의 프로세서에 연결되고, 상기 외부 보안 모니터링 에이전트는 상기 프로세서에서 실행되는 안티바이러스 소프트웨어인, 디바이스.
  13. 제11항에 있어서, 상기 디바이스는 제1 컴퓨터 시스템의 주변 디바이스를 포함하고, 상기 외부 보안 모니터링 에이전트는 상기 제1 컴퓨터 시스템에 원격으로 연결된 제2 컴퓨터 시스템의 프로세서에서 실행되는 소프트웨어를 포함하는, 디바이스.
  14. 제13항에 있어서, 상기 무결성 로직은 상기 외부 보안 모니터링 에이전트로부터의 상기 무결성 입증 요청의 수신에만 응답하여 동작하는 고정 기능 유닛을 포함하는, 디바이스.
  15. 제11항에 있어서, 상기 마이크로컨트롤러는 상기 무결성 로직을 포함하며, 상기 마이크로컨트롤러는 상기 무결성 입증 요청에 응답하여 상기 디바이스 펌웨어로부터 분리된 무결성 코드 블록의 실행 전에 신뢰 가능 상태(trusted state)에 위치하고, 상기 디바이스 펌웨어 측정 및 포인터 구조 판단 후에 상기 신뢰 가능 상태에서 나오는, 디바이스.
  16. 시스템으로서,
    보안 소프트웨어를 실행하는 프로세서; 및
    상기 프로세스에 연결된 주변 디바이스
    를 포함하며,
    상기 주변 디바이스는 펌웨어 이미지를 실행하는 컨트롤러, 상기 펌웨어 이미지를 저장하는 비휘발성 스토리지, 및 상기 보안 소프트웨어로부터 무결성 입증 요청을 수신하고 상기 펌웨어 이미지를 측정하여 상기 펌웨어 이미지의 암호화 조치를 생성하며 상기 암호화 조치를 상기 보안 소프트웨어에 보고하는 무결성 로직을 포함하는, 시스템.
  17. 제16항에 있어서, 상기 주변 디바이스는 복수의 포인터 구조를 더 포함하고,
    상기 복수의 포인터 구조는,
    적어도 하나의 명령 포인터를 저장하는 제1 포인터 구조;
    적어도 하나의 인터럽트 핸들러 포인터를 저장하는 제2 포인터 구조; 및
    적어도 하나의 예외 핸들러 포인터를 저장하는 제3 포인터 구조
    를 포함하고,
    상기 주변 디바이스는 상기 무결성 입증 요청에 응답하여 상기 복수의 포인터 구조에 액세스하여 잠재적 보안 위반이 존재하는지 여부를 판단하며, 존재하는 경우 상기 잠재적 보안 위반을 상기 보안 소프트웨어에 보고하는, 시스템.
  18. 제17항에 있어서, 상기 보안 소프트웨어는 상기 잠재적 보안 위반이 보고되는 경우 무결성 위반을 보고하고, 상기 잠재적 보안 위반은 상기 복수의 포인터 구조 중 적어도 하나가 상기 펌웨어 이미지의 외부의 위치를 포인팅한다고 표시하는, 시스템.
  19. 제16항에 있어서, 상기 보안 소프트웨어는 상기 암호화 조치가 화이트리스트의 엔트리와 일치하지 않는 경우 무결성 위반을 보고하고, 그렇지 않고 상기 암호화 조치가 상기 화이트리스트의 엔트리와 일치하는 경우 상기 주변 디바이스의 동작을 가능하게 하는, 시스템.
  20. 제16항에 있어서, 상기 주변 디바이스는 상기 시스템의 주변 컨트롤러 허브(PCH)에 연결되는, 시스템.
KR1020147006107A 2011-09-07 2011-09-07 디바이스의 펌웨어 무결성 검증 KR101689204B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/050610 WO2013036223A1 (en) 2011-09-07 2011-09-07 Verifying firmware integrity of a device

Publications (2)

Publication Number Publication Date
KR20140054204A true KR20140054204A (ko) 2014-05-08
KR101689204B1 KR101689204B1 (ko) 2016-12-23

Family

ID=47832465

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006107A KR101689204B1 (ko) 2011-09-07 2011-09-07 디바이스의 펌웨어 무결성 검증

Country Status (6)

Country Link
US (1) US9081954B2 (ko)
EP (1) EP2754085B1 (ko)
JP (1) JP5816373B2 (ko)
KR (1) KR101689204B1 (ko)
CN (1) CN103765427B (ko)
WO (1) WO2013036223A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200116311A (ko) * 2019-04-01 2020-10-12 서울대학교산학협력단 커널 무결성 검증 장치 및 그 방법
US11474713B2 (en) 2020-10-06 2022-10-18 SK Hynix Inc. Storage device and operating method thereof
US11550662B2 (en) 2020-12-04 2023-01-10 SK Hynix Inc. Storage device and computing system
KR102582134B1 (ko) * 2022-11-22 2023-09-25 리벨리온 주식회사 프로세싱 장치 및 그의 시큐어 부팅 방법

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
US9773102B2 (en) * 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US8990561B2 (en) 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
DE102012217743B4 (de) * 2012-09-28 2018-10-31 Siemens Ag Überprüfung einer Integrität von Eigenschaftsdaten eines Gerätes durch ein Prüfgerät
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
US8832435B2 (en) * 2012-12-17 2014-09-09 International Business Machines Corporation Providing a real-time indication of platform trust
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
US20150169901A1 (en) * 2013-12-12 2015-06-18 Sandisk Technologies Inc. Method and Systems for Integrity Checking a Set of Signed Data Sections
US9817975B2 (en) * 2015-01-26 2017-11-14 Dell Products, Lp Method for logging firmware attack event and system therefor
KR102365532B1 (ko) 2015-09-22 2022-02-21 삼성전자주식회사 보안 기능 수행 방법 및 이를 지원하는 전자 장치
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US10621351B2 (en) 2016-11-01 2020-04-14 Raptor Engineering, LLC. Systems and methods for tamper-resistant verification of firmware with a trusted platform module
AU2018321586B2 (en) 2017-08-22 2023-03-09 Absolute Software Corporation Firmware integrity check using silver measurements
US11522679B2 (en) * 2017-10-05 2022-12-06 Intel Corporation Exposing cryptographic measurements of peripheral component interconnect express (PCIe) device controller firmware
US10853090B2 (en) * 2018-01-22 2020-12-01 Hewlett Packard Enterprise Development Lp Integrity verification of an entity
CN110677250B (zh) 2018-07-02 2022-09-02 阿里巴巴集团控股有限公司 密钥和证书分发方法、身份信息处理方法、设备、介质
CN110795742B (zh) 2018-08-02 2023-05-02 阿里巴巴集团控股有限公司 高速密码运算的度量处理方法、装置、存储介质及处理器
CN110795774B (zh) 2018-08-02 2023-04-11 阿里巴巴集团控股有限公司 基于可信高速加密卡的度量方法、设备和系统
KR20200019444A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN110874478B (zh) 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 密钥处理方法及装置、存储介质和处理器
US20220021690A1 (en) * 2018-10-23 2022-01-20 Nokia Technologies Oy Method and apparatus for attesting physical attacks
JP7147873B2 (ja) * 2019-01-07 2022-10-05 日本電気株式会社 情報処理装置、検証システムおよび情報処理方法
EP3918743A4 (en) * 2019-01-30 2022-08-31 Nokia Solutions and Networks Oy DISTRIBUTED OR CLOUD COMPUTING SYSTEM INFORMATION
WO2020167287A1 (en) 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery via backups of recovery information
US11016755B2 (en) * 2019-07-31 2021-05-25 Dell Products L.P. System and method to secure embedded controller flashing process
EP3869367A1 (de) * 2020-02-18 2021-08-25 Siemens Aktiengesellschaft Computergestütztes verfahren zum speichern eines integritätsstatus, integritätsstatusvorrichtung und computerprogrammprodukt
US20210334380A1 (en) * 2020-04-24 2021-10-28 Vmware, Inc. Trusted firmware verification
US11501002B2 (en) * 2020-07-10 2022-11-15 Dell Products L.P. Protocol security system
US11514166B2 (en) * 2020-10-20 2022-11-29 Dell Products L.P. Systems and methods to protect unified extensible firmware interface protocol serviceability
CN113591141B (zh) * 2021-05-28 2023-09-26 山东英信计算机技术有限公司 基于模糊测试的固件镜像文件刷写校验方法、系统及终端

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144825A1 (en) * 2007-11-30 2009-06-04 Schluessler Travis T Chipset based cheat detection platform for online applications

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464348B2 (en) * 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
US7739517B2 (en) * 2005-03-31 2010-06-15 Intel Corporation Hardware-based authentication of a software program
CA2606981C (en) * 2005-05-05 2016-09-06 Certicom Corp. Retrofitting authentication onto firmware
US7907531B2 (en) * 2005-06-13 2011-03-15 Qualcomm Incorporated Apparatus and methods for managing firmware verification on a wireless device
US8429418B2 (en) * 2006-02-15 2013-04-23 Intel Corporation Technique for providing secure firmware
US7870394B2 (en) * 2006-05-26 2011-01-11 Symantec Corporation Method and system to scan firmware for malware
US7945786B2 (en) 2007-03-30 2011-05-17 Intel Corporation Method and apparatus to re-create trust model after sleep state
DE102007034525B4 (de) 2007-07-24 2010-02-11 Siemens Ag Verfahren und System zum Überprüfen der Integrität von in einem vorbestimmten Speicherbereich eines Speichers gespeicherten Daten
US20090132837A1 (en) 2007-11-15 2009-05-21 Mcm Portfolio Llc System and Method for Dynamically Selecting Clock Frequency
US8171321B2 (en) 2007-12-26 2012-05-01 Intel Corporation Method and apparatus for cost and power efficient, scalable operating system independent services
US20090172639A1 (en) * 2007-12-27 2009-07-02 Mahesh Natu Firmware integrity verification
US20100064048A1 (en) * 2008-09-05 2010-03-11 Hoggan Stuart A Firmware/software validation
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US8516551B2 (en) 2010-07-28 2013-08-20 Intel Corporation Providing a multi-phase lockstep integrity reporting mechanism

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144825A1 (en) * 2007-11-30 2009-06-04 Schluessler Travis T Chipset based cheat detection platform for online applications

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200116311A (ko) * 2019-04-01 2020-10-12 서울대학교산학협력단 커널 무결성 검증 장치 및 그 방법
US11474713B2 (en) 2020-10-06 2022-10-18 SK Hynix Inc. Storage device and operating method thereof
US11550662B2 (en) 2020-12-04 2023-01-10 SK Hynix Inc. Storage device and computing system
KR102582134B1 (ko) * 2022-11-22 2023-09-25 리벨리온 주식회사 프로세싱 장치 및 그의 시큐어 부팅 방법
US11983274B1 (en) 2022-11-22 2024-05-14 Rebellions Inc. Processing device and method for secure booting thereof

Also Published As

Publication number Publication date
CN103765427B (zh) 2017-02-15
US9081954B2 (en) 2015-07-14
JP2014525637A (ja) 2014-09-29
CN103765427A (zh) 2014-04-30
EP2754085B1 (en) 2018-10-24
EP2754085A1 (en) 2014-07-16
EP2754085A4 (en) 2015-04-29
US20130263262A1 (en) 2013-10-03
WO2013036223A1 (en) 2013-03-14
KR101689204B1 (ko) 2016-12-23
JP5816373B2 (ja) 2015-11-18

Similar Documents

Publication Publication Date Title
KR101689204B1 (ko) 디바이스의 펌웨어 무결성 검증
KR101458780B1 (ko) 다단계 락스텝 무결성 보고 메커니즘 제공
US8701187B2 (en) Runtime integrity chain verification
CN110334521B (zh) 可信计算系统构建方法、装置、可信计算系统及处理器
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
JP5164285B2 (ja) アンチマルウェアを有するコンピュータシステム
US8549644B2 (en) Systems and method for regulating software access to security-sensitive processor resources
KR101701014B1 (ko) 운영 체제에의 악성 활동 보고
US11775649B2 (en) Perform verification check in response to change in page table base register
US8800052B2 (en) Timer for hardware protection of virtual machine monitor runtime integrity watcher
JP2015166952A (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US20180226136A1 (en) System management mode test operations
US11556645B2 (en) Monitoring control-flow integrity
CN114462041A (zh) 基于双体系架构的动态可信访问控制方法及系统
US11308202B2 (en) Intrusion detection systems
Degani et al. μ IPS: Software-Based Intrusion Prevention for Bare-Metal Embedded Systems

Legal Events

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