[go: up one dir, main page]

KR101237527B1 - 보안 부팅 메커니즘을 포함하는 컴퓨터 시스템 - Google Patents

보안 부팅 메커니즘을 포함하는 컴퓨터 시스템 Download PDF

Info

Publication number
KR101237527B1
KR101237527B1 KR1020107021808A KR20107021808A KR101237527B1 KR 101237527 B1 KR101237527 B1 KR 101237527B1 KR 1020107021808 A KR1020107021808 A KR 1020107021808A KR 20107021808 A KR20107021808 A KR 20107021808A KR 101237527 B1 KR101237527 B1 KR 101237527B1
Authority
KR
South Korea
Prior art keywords
data set
boot
memory
data
volatile memory
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020107021808A
Other languages
English (en)
Other versions
KR20100125371A (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 KR20100125371A publication Critical patent/KR20100125371A/ko
Application granted granted Critical
Publication of KR101237527B1 publication Critical patent/KR101237527B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/72Protecting 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 in cryptographic circuits

Landscapes

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

Abstract

보안 부팅 프로세싱이 CPU(100)의 통합 파트인 비휘발성 메모리(103)를 바탕으로 달성될 수 있으며, 여기서 상기 비휘발성 메모리는 일단 사전-부팅 정보(pre-boot information)가 상기 비휘발성 메모리 내에 프로그램되면 수정될 수 없다. 리셋 이벤트 또는 파워-온 이벤트 중에, 내부 비휘발성 메모리(103)로부터 실행이 시작될 수 있으며, 상기 비휘발성 메모리(103)는 또한 부팅 루틴의 일부에 대한 시그니처를 검증하기 위한 공용 복호화 키들을 포함할 수 있다. 부팅 루틴의 각 부분에 대한 검증은 내부 랜덤 액세스 메모리(101)를 사용하여 달성될 수 있으며, 그럼으로써 부팅 루틴의 검증 중에 외부의 액세스가 방지된다. 따라서, 예를 들어, BIOS 칩들의 교체에 의한 BIOS 변경에 대해, 높은 수준의 탬퍼링 방지(tamper resistance)가 달성될 수 있다.

Description

보안 부팅 메커니즘을 포함하는 컴퓨터 시스템{A COMPUTER SYSTEM COMPRISING A SECURE BOOT MECHANISM}
본 발명은 일반적으로 무결성(integrity)이 향상된 컴퓨터 시스템 분야 및 상기 컴퓨터 시스템에 구현된 대응 메커니즘들에 관한 것으로서, 이러한 메커니즘들은 개선된 보안 표준을 제공함으로써 보안 컴퓨터 플래폼(secure computer platform)을 필요로하는 애플리케이션들의 효율성을 향상시켜 줄 수 있다.
컴퓨터 시스템의 광범위한 사용은 전자 컴퓨터 시스템 기반의 정보 처리를 현저히 증가시켜왔으며, 그럼으로써 대량의 디지털 데이터를 생성, 분배 및 처리하는 것을 수반한다. 전자 형태로 제공되는 많은 데이터와 연관되어있을 수 있는 보호권리에도 불구하고, 데이터 저장 용량 및 증가된 처리 속도의 관점에서 증가된 컴퓨터 시스템 자원을 사용하여, 더욱 많은 사람들이 오디오 데이터, 영화 등과 같은 대량 데이터 세트들을 복제(reproduction)할 수 있게 되었으며 이러한 복제가 빈번하게 행해지게 되었다. 따라서, 전자 데이터의 불법적인 복제, 저장 및 재배포에 의해 현저한 경제적 손실이 발생될 수 있다. 더욱이, 인터넷과 같은 널리퍼져있는 네트워크를 통해 애플리케이션 프로그램이 배포되는 것 또한 악성 소프트웨어 애플리케이션들이 배포될 가능성을 제공해주는바, 이러한 악성 소프트웨어 애플리케이션들은 각각의 컴퓨터 플래폼의 데이터 및/또는 구성을 조작하는 데 사용될 수 있다. 예를 들어, 저장된 데이터와 같은 소프트웨어 파일들을 조작하고, 플래폼의 실제 사용자가 모르게 인터넷을 통해 정보를 통신하고, 서비스 거부(DoS: denial of service) 공격을 시작하는 소프트웨어 애플리케이션들이 유입되어, 가능하게는 특정 상태의 플래폼에 필요한 전용 애플리케이션에서 상기 플래폼이 더 이상 사용될 수 없게 함으로써, 사설 환경(private environment), 그리고 특히 산업분야에서 심각한 손실이 발생할 수 있다.
이러한 이유로, 예를 들어, 악성 소프트웨어, DoS 공격, 스니핑(sniffing), 스푸핑(spoofing) 등의 형태의 "성공적인" 외부 공격 가능성을 감소시키고, 또한 컴퓨터 플래폼에 대한 내부 조작에 대해 데이터 무결성을 향상시키기 위하여, 컴퓨터 플래폼의 무결성을 향상시키는 메커니즘을 개발하는 데 상당한 노력이 행해지고 있다. 예를 들어, 데이터의 전송 및 저장 중에 제3자에 의해 데이터가 탬퍼링(tampering)(간섭 또는 부정 조작)되는 것을 높은 수준으로 방지하면서 데이터의 교환을 가능하게 해주는 대칭 또는 비대칭 암호화/복호화 기법들과 같은 복수의 암호화 기법들이 사용가능하다. 예를 들어, 비대칭 암호화 기법들에서, 개인 키와 공용 키의 쌍은, 상기 키들 중 하나를 사용하여 데이터를 암호화하고 다른 키를 사용하여 데이터를 복호화하도록 사용될 수 있으며, 여기서 상기 키들 중 하나는 공개적으로 액세스가능하다. 이러한 기법들은 데이터 통신 및 데이터 저장시 향상된 무결성을 제공해줄 수 있지만, 컴퓨터 보안을 향상시키도록 된 많은 애플리케이션들이 신뢰 플래폼 구성(trusted platform configuration)에 의존하므로, 고려중인 컴퓨터 플래폼의 실제 구성은 여전히 복수의 공격들에 대한 가능성을 제공할 수 있다.
신뢰 컴퓨터 플래폼(trusted computer platform)은, 하드웨어 구성 및 소프트웨어 애플리케이션들이 전용 구성(dedicated configuration)으로 되어 있다고 가정되는 컴퓨터 시스템으로 간주될 수 있다. 그러나, 보안 플래폼 구성은 신뢰 플래폼 레벨들의 "체인"을 확립하는 것에 의해서만 확립될 수 있으며, 여기서 만약 후속 레벨(subsequent level)의 무결성이 검증되었다면, 각각의 후속 레벨은 선행 레벨(preceding level)에 의해서만 초기화될 수 있다. 따라서, 시스템 레벨에서의 무결성이 무결성 검증 체인을 통해 보호될 수 있으며, 여기서, 최고 레벨(즉, 사용자 애플리케이션 레벨)의 초기화 후에 시스템의 무결성에 대해 높은 신뢰성(confidence)이 달성되도록, 검증 단계들의 체인의 루트(root)에 높은 수준의 탬퍼링 방지(tamper resistance) 기능이 제공된다.
일반적인 컴퓨터 플래폼에서, 시스템의 초기화는 예를 들어, 중앙 처리 유닛(CPU)를 초기화하는 것, 시스템 메모리를 초기화하는 것(일반적으로 CPU 외부에서 제공됨), 외부 고용량 저장 장치로부터 시스템 메모리로 운영 시스템을 로딩하는 것, 그리고 마지막으로 사용자 애플리케이션들을 실행하는 것과 관련된 다양한 수준의 추상화(abstraction)를 요구한다. 따라서, 시스템의 전체적인 무결성을 향상시키는 관점에서, 운영 시스템 및 사용자 애플리케이션의 무결성에 의존하기 위하여 운영 시스템을 로딩하기 전의 다양한 시스템 동작들을 안전한 것으로 고려할 수 있다고 가정하는 것은 충분하지 않은데, 이는 운영 시스템이 "비신뢰적(mistrusted)" 프로세스에 의해 호출되어 하드웨어 및 소프트웨어 요소들을 변경함으로써 기본 플래폼 구성을 조작할 가능성이 있기 때문이다. 따라서, 향상된 전체 시스템 무결성을 제공하기 위하여, 시스템 메모리와 같은 컴퓨터 시스템의 다양한 하드웨어 요소들을 초기화하고 더 높은 시스템 레벨들을 초기화하기 위해 상기 시스템 메모리에 포함된 명령어들을 실행하는 프로세스(부트 스트래핑(boot strapping) 또는 부팅(booting)으로 지칭될 수 있음)가 신뢰 체인에 통합되어야 한다.
전원을 인가한 후 또는 리셋 이벤트 후 컴퓨터 시스템을 초기화하기 위한 일반적인 시작 시퀀스는 CPU의 "파워 온 셀프-테스트"가 발생하게 하며, 여기서 또한 프로세서는 프로세서의 리셋 벡터에 의해 표시되는 전용 엔트리 주소에서 명령어들의 실행을 시작한다. 즉, 초기 프로세서 셀프-테스트 후, 명령어들의 실행은 엔트리 포인트(상기 엔트리 포인트는 일반적으로 소프트웨어 루틴의 주소임)에서 시작할 수 있는바, 상기 소프트웨어 루틴은 종종 BIOS(기본 입/출력 시스템)라 지칭되며, BIOS는 컴퓨터 플래폼의 전용 외부 비휘발성 메모리 내에 저장될 수 있다. BIOS의 제어 하에서, 나머지 셀프-테스트가 수행될 수 있으며, 플래폼의 하드웨어 구성이 결정되거나 "측정(measure)"될 수 있다. 그후, 대용량 저장 디바이스(예를 들어, 컴퓨터 시스템의 하드 디스크, 디스크, CD-ROM, 확장 카드 등)와 같은 부팅가능 디바이스에 대한 검색이 수행될 수 있으며, 이 부팅가능 디바이스로부터 주요 부팅 블록이 시스템 메모리로 로딩될 수 있고, 그후 제어가 주요 부팅 블록으로 패스되며, 상기 주요 부팅 블록은 운영 시스템을 시스템 메모리 내에 로딩할 수 있다.
전체적인 부팅 프로세스의 보안을 향상시키는 데에 많은 노력이 행해져 왔으나, 예를 들어, BIOS 소프트웨어를 포함하는 비휘발성 메모리 칩의 교체와 같은 플래폼 변경의 관점에서, 부팅 프로세스를 위한 신뢰성있는 CRTM(core root of trust for measurement)를 제공하는 것은 어려운데, 이는 해당 칩 교체가 신뢰 체인을 방해하여, 모든 후속적인 검증 단계들을 신뢰할수 없게 만들 수 있기 때문이다.
본 개시는 위에서 제기된 하나 이상의 문제점들 피하거나 적어도 감소시킬 수 있는 다양한 디바이스들 및 방법들에 관한 것이다.
하기에서는 본 명세서에 개시된 일부 양상들에 대한 기본적인 이해를 제공하기 위하여 본 개시의 간략화된 요약을 제시한다. 본 요약은 총체적인 개요가 아니며, 본 발명의 주요한 요소들을 지정하거나 본 발명의 범주를 설명하기 위해 의도된 것은 아니다. 이것의 유일한 목적은 추후에 논의될 보다 상세한 설명의 개괄로서 간략화된 형태로 몇가지 개념들을 제공하는 것이다.
일반적으로, 본 개시는 측정을 위한 정적 신뢰 루트(static root of trust)를 확립함으로써 컴퓨터 시스템의 무결성을 향상시키기 위한 디바이스 및 메커니즘에 관한 것이며, 여기서 실행가능한 명령어들 및 데이터 값들을 포함하는 특정 데이터 세트가 제공되는바, 상기 데이터 세트는 전용 데이터 세트에 대한 액세스를 우회(circumventing)할 가능성을 제공함이 없이 스타트업시 어느경우에나 마이크로프로세서에 의해 액세스될 수 있으므로, 플래폼의 초기화를 위한 정의된 루트가 얻어진다. 또한, 조작을 위한 어떠한 공격들에 대해서도 높은 수준의 방어를 달성하는 방식으로 데이터 세트가 구현된다. 데이터 세트에 포함된 명령어들의 실행 중에 대응 루틴이 변경 또는 중단되지 않음으로써 이러한 데이터 세트에 대해 고도의 무결성이 제공되며, 상기 데이터 세트는 명령어들 및 데이터 값들의 사전-부팅(pre-boot) 세트로서 고려될 수 있다. 사전-부팅 데이터의 개개의 명령어들의 처리는 시스템의 시동시 반드시 행해져야하는 것이므로, 신뢰 소프트웨어 체인이 시작될 수 있고, 따라서 고도의 시스템 무결성이 확립될 수 있는바, 이는 사전-부팅 데이터의 전용 세트가 후속적인 검증 단계들의 체인을 위한 정적 코어 루트를 나타내기 때문이다. 이러한 목적으로, 사전-부팅 데이터 세트가 CPU 코어 자체의 비휘발성 메모리 내에 유지될 수 있으며, 그럼으로써 BIOS 칩 등을 교체하는 것과 관련된 어떠한 공격들도 실질적으로 방지할 수 있게 된다.
본 명세서에 개시된 일 예시적인 방법은 컴퓨터 시스템을 시동(starting)하는 것에 관한 것이다. 본 방법은 중앙 처리 유닛(CPU)의 비휘발성 메모리 영역 내에 저장된 제1 데이터 세트에 액세스하는 단계를 포함하며, 여기서 제1 데이터 세트는 CPU의 코어 회로로 하여금 CPU의 랜덤 액세스 메모리를 초기화하게 하는 제1 명령을 포함한다. 본 방법은 비휘발성 메모리로부터 제2 데이터 세트의 이미지를 초기화된 랜덤 액세스 메모리에 로딩하는 단계를 더 포함하며, 여기서 상기 제2 데이터 세트는 상기 제2 데이터 세트의 무결성을 검증하기 위한 시그니처(signature) 및, CPU로 하여금 컴퓨터의 시스템 메모리를 초기화하게 하는 제2 명령어들을 더 포함한다. 또한, 본 방법은 상기 시그니처 및 상기 제1 데이터 세트에 포함된 복호화 키를 사용하여 상기 제2 데이터 세트의 무결성을 검증하는 단계를 포함한다. 마지막으로, 본 방법은 상기 제2 데이터 세트의 검증이 성공적일 때, 제2 명령어들을 사용하여 시스템 메모리를 초기화하는 단계를 포함한다.
본 명세서에 개시된 추가의 예시적인 방법은 컴퓨터 시스템을 시작하는 것과 관련되며, 상기 방법은 파워-업 이벤트 및 리셋 이벤트중 적어도 하나가 발생할 시에, CPU의 내부 비휘발성 메모리를 액세스하는 것을 포함한다. 비휘발성 메모리는 CPU의 내부 랜덤 액세스 메모리를 초기화하고 컴퓨터 시스템의 비휘발성 메모리에 저장된 부팅 데이터 값들 및 부팅 명령어들의 적어도 일부에 대한 무결성을 검증하기 위한 사전-부팅 명령어들 및 데이터 값들을 포함한다. 본 방법은 사전-부팅 명령어들을 실행함으로써 비휘발성 메모리로부터 내부 랜덤 액세스 메모리로 부팅 명령어들 및 부팅 데이터 값들의 일부를 로딩하는 단계를 더 포함한다. 또한, 부팅 명령어들 및 부팅 데이터 값들의 적어도 일부에 대한 무결성이, 사전-부팅 명령어들을 실행함으로써 검증된다. 마지막으로, 본 방법은, 부팅 명령어들 및 부팅 데이터 값들의 적어도 일부에 대해 성공적으로 무결성을 검증한 후, 부팅 명령어들을 실행하는 단계를 포함한다.
본 명세서에 개시된 예시적인 중앙 처리 유닛(CPU)은 기판을 포함하는바, 상기 기판은 그 위에 CPU 코어, 랜덤 액세스 메모리, 비휘발성 메모리, 및 CPU 코어와 랜덤 액세스 메모리와 비휘발성 메모리를 연결하기 위한 버스 시스템을 정의하는 회로 소자들이 형성되어 있다. 또한, CPU는 비휘발성 메모리 내에 저장된 사전-부팅 정보(pre-boot information)를 포함하며, 여기서 상기 사전-부팅 정보는 CPU 코어에 의해 실행가능한 명령어들을 포함하고, 또한 휘발성 랜덤 액세스 메모리를 초기화하고 외부 메모리 디바이스로부터 공급될 부팅 루틴의 적어도 일부를 검증하기 위한 데이터 값들을 포함한다.
본 명세서에 개시된 추가의 예시적인 양상에서, 위에서 설명된 중앙 처리 유닛은, CPU에 부가하여, 시스템 메모리, 부팅 루틴을 포함하는 메모리 디바이스, 그리고 CPU와 부팅 루틴을 포함하는 시스템 메모리와 메모리 디바이스를 연결하기 위한 인터페이스 시스템을 포함하는 컴퓨터 시스템의 일부일 수 있다.
본 개시는 첨부의 도면들과 함께 하기의 설명을 참조로 이해될 수 있으며, 도면에서 유사한 참조 부호들은 유사한 요소들을 나타낸다.
도 1a는 예시적인 실시예에 따라 랜덤 액세스 메모리(캐시), CPU 코어, 그리고 사전-부팅 정보를 포함하는 비휘발성 메모리를 포함하는 중앙 처리 유닛(CPU)를 개략적으로 도시한다.
도 1b는 다른 예시적인 실시예에 따라 내부 사전-부팅 정보를 포함하는 CPU를 포함하는 컴퓨터 시스템을 개략적으로 도시한다.
도 1c는 예시적인 실시예에 따라 부팅 정보의 제1부분에 대한 시그니처를 생성하기 위한 프로세스 중의 명령어들 및 데이터 값들을 포함하는 부트스트랩 데이터를 조작하기 위한 프로세스 단계들을 개략적으로 도시한다.
도 1d는 예시적인 실시예에 따라 부팅 정보의 일부에 대한 시그니처를 검증하기 위한 프로세스를 개략적으로 도시한다.
도 1e는 일 예시적인 실시예에 따라 도 1b에 도시된 컴퓨터 시스템의 오퍼레이션을 설명하는 흐름도를 도시한다. 그리고,
도 1f는 또 다른 예시적인 실시예에 따라 도 1a의 CPU와 같은 CPU를 포함하는 컴퓨터 시스템의 오퍼레이션을 설명하는 흐름도를 도시한다.
본 명세서에 개시된 내용은 다양한 수정 및 대안적인 형태가 가능하며, 이에 대한 구체적인 실시예가 도면에 예로써 도시되었으며 하기에서 상세하게 설명된다. 그러나, 구체적인 실시예들에 대한 본 명세서의 설명이 본 발명을 개시된 특정 형태로 제한하려 의도된 것이 아니며, 반대로, 첨부의 청구항들에 의해 정의된 것과 같은 발명의 정신 및 범주 내에 들어오는 모든 수정, 등가, 및 대안적인 형태를 포함하는 것으로 의도되었음이 이해되어야만 한다.
본 발명의 다양한 실시예들이 하기에서 설명된다. 명료성을 위하여, 본 명세서에서 실제 실시예들의 모든 피쳐들이 설명되지는 않는다. 물론, 임의의 그러한 실제 실시예의 개발에서, 실시예들 마다 다른 시스템 또는 비지니스 관련 제약들에 대한 호환성과 같은 개발자의 구체적인 목표를 달성하기 위해서는, 다수의 구현별 특정(implementation-specific) 결정들이 이루어져야 하는 것을 알아야 한다. 또한, 그러한 개발 노력은 복잡하고 시간 소모적일 것이나, 그럼에도 불구하고 본 개시의 이점을 갖는 당업자들에게는 일상적인 일일 것이다.
본 명세서의 내용이 이제 첨부의 도면을 참조하여 설명될 것이다. 다양한 구조들, 시스템 및 디바이스들이 단지 예시의 목적으로, 그리고 당업자들에게 잘 알려진 세부사항들로 본 개시를 모호하게 하지 않기 위하여 도면에 개략적으로 표현된다. 그러나, 본 개시의 예시적인 실시예들을 설명하고 묘사하기 위하여 첨부의 도면들이 포함된다. 본 명세서에서 사용된 단어 및 표현들은 그 단어 및 표현들이 당업자에 의해 이해되는 것과 같은 의미를 가지도록 이해되고 해석되어야 한다. 본 명세서에서의 용어 또는 구의 일관된 사용에 의해, 용어 또는 구의 특정 정의, 즉, 당업자들에 의해 이해되는 것과 같은 보통의 관습적인 의미들과 다른 정의가 의도되지는 않는다. 용어 또는 구가 특정 의미, 즉, 당업자에 의해 이해되는 것과 다른 의미를 가지는 한, 그러한 특정한 정의는, 직접적이고 명확하게 그 용어 또는 구의 특정 정의를 제공하는 정의적인 방식으로 본 명세서에서 명백히 설명될 것이다.
일반적으로, 본 발명은, 스타트 업 또는 리셋 또는 시스템의 초기화를 필요로하는 임의의 다른 동작 상태에서, 명령어들을 실행시키고 중앙 처리 유닛의 일부인 비휘발성 메모리 내에 저장된 데이터를 사용함으로써, 비휘발성 메모리 내에 포함된 데이터 세트를 조작할 가능성을 현저하게 감소시켜주는 시스템 및 메커니즘을 제공한다. 결과적으로, CPU의 파워-업 또는 리셋시 제1 명령어가 비휘발성 메모리로부터 페치되게 함으로써, 비휘발성 메모리의 내용들이 CPU 및 전체 컴퓨터 시스템의 초기화 동안 측정을 위한 정적 신뢰 루트로서 사용될 수 있다. 따라서, 비휘발성 메모리 내에 포함된 데이터 세트가, 변수들 및 스택과 같은 운영 데이터(operational data) 및 BIOS 소프트웨어 부분을 구동하기 위한 명령어들을 저장하는데에 사용될 수 있는 내부 랜덤 액세스 메모리와 같은 추가적인 시스템 요소들을 초기화할 수 있게 해주는 사전-부팅(pre-boot) 또는 사전-BIOS(pre-BIOS) 컴포넌트로서 기능할 수 있다. 예를 들어, 랜덤 액세스 메모리 영역의 부분으로서의 데이터 캐시 및 명령어 캐시가, 내부 비휘발성 메모리의 사전-부팅 데이터에 의해 초기화될 수 있으며, 그럼으로써, 초기화 프로세스 동안에 메모리에 포함된 데이터에 대한 외부적인 액세스 가능성을 실질적으로 방지해준다. 즉, 랜덤 액세스 메모리 영역(즉, 데이터 캐시 및 명령어 캐시)은 CPU-내부 컴포넌트들이며, 특히 외부 시스템 메모리가 이 단계에서 초기화되지 않으므로, 원치않는 조작이 매우 어려울 수 있다. 랜덤 액세스 메모리의 저장 용량에 따라, BIOS 무결성의 관점에서 하나 이상의 시그니처들의 검증이 랜덤 액세스 메모리 내에서 명령어 캐시에 맞는 사이즈를 가지도록 된 제1 부분에 대해 수행될 수 있게끔, BIOS 루틴이 두개 이상의 부분들로 분할될 수 있다. 따라서, 부팅 정보의 이 부분은, 그것의 무결성을 검증한 후, 랜덤 액세스 메모리로부터 직접적으로 실행될 수 있다. 결과적으로 사전-부팅 명령어들을 실행함으로써 랜덤 액세스 메모리를 초기화하고 부팅 정보의 일부를 로딩하는 동안, 사전-부팅 정보가 외부에서 액세스될 수 없으며, 그럼으로써 제1 시그니처 검증 프로세서에 대한 어떠한 조작도 실질적으로 방지된다. 일부 예시적인 실시예들에서, 예를 들어, BIOS 업그레이드 버전 등의 무결성을 평가하기 위한 복호화 키들에 액세스하기 위해, 외부 애플리케이션에 의한 시그니처 검증 후 사전-부팅 정보가 액세스될 수 있다.
결과적으로, 부팅 정보의 제1 부분에 대한 시그니처 검증 후, 흐름 제어가 이 부분으로 패스될 수 있으며, 추가의 부팅 정보 부분에 대한 무결성을 검증하는 한편 시스템 메모리를 초기화하고 나머지 부팅 정보를 카피함으로써 추가의 부팅 프로세싱이 계속될 수 있다. 결과적으로, CPU의 통합 파트(integral part)로서 제공된 비휘발성 메모리 내에 포함된 데이터(즉, 명령어들 및 데이터 값들)가 정적 CTRM(core root of trust for measurement)로서 사용될 수 있으며, 그럼으로써, 탬퍼링 방지(tamper-resistant) 하드웨어 및 소프트웨어 구성이 달성되는 컴퓨터 플래폼을 제공해 준다. 특히, BIOS 칩의 교체와 같은 공격의 관점에서, 본 명세서에 개시된 실시예들의 메커니즘은 신뢰성있는 컴퓨터 플래폼의 필요에 기반을 둔 금융 거래 또는 디지털 권리 관리와 같은 맥락에서 플래폼을 사용하는 전형적인 실제 애플리케이션들을 위한 향상된 보안을 제공해줄 수 있다.
도 1a는 높은 수준의 탬퍼링 방지와 함께 CRTM이 구현된 예시적인 실시예에 따른 중앙 처리 유닛(CPU)(100)을 개략적으로 도시한다. CPU(100)는 산술 연산, 로직 연산 등을 수행하는 것과 같은 데이터 처리를 위한 요소들을 포함하는 CPU 코어(102)를 포함한다. CPU 코어(102)는 복수의 정적 RAM 셀 등을 포함하는 랜덤 액세스 메모리(101)에 기능적으로 연결되며, 상기 랜덤 액세스 메모리(101)는 CPU(100)의 전체 구성과 호환된다. 일 예시적인 실시예에서, RAM(101)은 데이터 캐시(101A)로 표시된 제1 메모리 부분, 및 명령어 캐시(101B)로 표시된 제2 메모리 부분을 포함할 수 있다. 예를 들어, RAM(101)은 고속 메모리 기법으로 구현되어, 일반적으로 복잡한 집적 회로에서 요구되는 것과 같이, CPU(100)의 전체 성능을 향상시킬 수 있다. 그러나, CPU(100)의 초기화 중에 외부 액세스의 가능성 없이 CPU 코어(102)를 통한 메모리(101)의 직접적인 제어가 달성될 수 있다면, 메모리(101)에 대해 임의의 적절한 메모리 기법이 사용될 수 있음이 이해되어야 한다.
또한, CPU(100)는 비휘발성 메모리(103)를 포함하며, 이 비휘발성 메모리는, 메모리(103)의 내용을 변경하려는 외부 액세스를 불가능하게 해주는 임의의 적절한 메모리 기법, 예를 들어, 플래시 메모리 또는 임의의 다른 판독전용 메모리 기법의 형태로 제공될 수 있다. 그러므로, 메모리(103)는 보안 메모리 영역으로서 간주될 수 있으며, 따라서 상기 메모리의 내용은 정적 신뢰 루트(static root of trust)를 나타낸다. 이러한 목적으로, CPU 코어(102)에 의해 실행가능한 명령어들 및 명령어들의 오퍼랜드 등을 나타내는 데이터 값들로서 여겨지는 데이터 세트(103A)가 메모리(103)의 적어도 일부분(메모리(103)의 각 부분이 일단 프로그램되면, 이 부분에는 새로운 데이터가 재기입될 수 없음)에 제공된다. 데이터 세트(103A)를 포함하는 메모리(103)는 버스 시스템(104)에 의해 CPU 코어(102)에 연결되어, 파워-업 또는 리셋 시에, 메모리(103)의 특정 주소로의 점프가 행해진다. 결과적으로, CPU 코어(102)의 리셋 벡터에 대한 "하드-와이어드" 타겟이 제공되어, 적어도 파워-업 이벤트 및 리셋 이벤트에 대해, 명령어들의 실행이 보안 메모리(103)로부터 시작되게 해준다.
CPU(100)는, 반도체 기판등과 같은 적절한 캐리어 물질이 트랜지스터 소자, 커패시터, 저항 등이 CPU(100)의 특정 디바이스 구조에 따라 형성될 수 있는 CMOS 공정등과 같은 고려되는 기법을 바탕으로 형성된 복수의 회로 소자들을 수용할 수 있도록 된 복잡한 반도체 제조 기법들을 바탕으로 형성될 수 있다는 것이 이해되어야 한다. 본 명세서에 예시된 실시예에서, CPU(100)의 다양한 구성요소들은 공통 제조 공정 흐름 중에 공통 기판 위에 형성되며, 그럼으로써 메모리(101, 103)를 디바이스(100)의 내부 또는 통합 요소들로서 제공할 수 있다. 예를 들어, CPU 코어(102)에서 요구되는 바에 따라, 휘발성 고속 메모리 셀들이 비휘발성 메모리 셀들 및 고 성능 로직 게이트들과 함께 형성될 수 있는 각각의 제조 기법들이 잘 확립되어 있다. 추가적으로, 데이터 세트(103A)를 포함하는 메모리(103) 또는 적어도 그 일부에 프로그래밍한 후, 데이터 세트(103A)에 대한 보호 환경을 제공하기 위하여, 데이터 비트들을 변경하기 위한 추가적인 액세스가 금지되는 적절한 메커니즘이 제공될 수 있다.
도 1b는 앞에서 설명한 것과 같이 데이터(103A) 세트에 대한 보호 환경을 제공하는 CPU(100)를 포함하는 컴퓨터 시스템(150)을 개략적으로 도시하며, 도시된 실시예에서, CPU(100)는 데이터 캐시(101A) 및 명령어 캐시(101B) 형태의 랜덤 액세스 메모리(101)를 포함하며, 상기 랜덤 액세스 메모리(101)는 부팅 정보의 일부를 수용하고 데이터 세트(103A)의 명령어들을 수행할 때 "시스템 RAM"으로서 동작하기 위하여 64kB의 사이즈를 가질 수 있다. 마찬가지로, 명령어 캐시(101B)는 64kB의 사이즈로 제공될 수 있으며, 여기서 검증 프로세스 중에 메모리(101)로부터 수행될 부팅 정보의 각 부분의 사이즈에 호환되는 임의의 다른 적절한 메모리 사이즈가 사용될 수 있음이 이해되어야 한다. 마찬가지로, 내부 비휘발성 메모리(103)는 컴퓨터 시스템(150)의 CRTM을 나타내는 데이터(103A) 요구조건에 부합되도록, 예를 들어 32k와 같은 임의의 적절한 사이즈로 제공될 수 있다. 예를 들어, 검증 공정을 수행하기 위하여, 데이터 세트(103A)는 부팅 정보의 각 부분을 내부 메모리(101)에 로딩하기 위한 보안 로드 루틴을 나타내는 데이터 값들 및 명령어들을 포함할 수 있다. 추가적으로, 데이터(103A) 세트는, 부팅 정보의 사인 영역(signed portion)이 메모리(101) 내에서 검증될 수 있게 하기 위하여, 비대칭 암호화/복호화 알고리즘에 대한 공용 키들일 수 있는 하나 이상의 복호화 키들을 포함할 수 있다. 데이터 세트(103A) 내의 공용 키들의 개수는 예를 들어, 높은 수준의 무결성 등으로 각각의 키 쌍들을 제공하기 위해 적절한 인프라스트럭쳐를 유지하는 측면에서의 안전 고려조건에 따라 선택될 수 있다.
컴퓨터 시스템(150)은 또한, 예를 들어, 동적 RAM 셀 등과 같은 랜덤 액세스 메모리 셀들을 포함하는 임의의 적절한 메모리 디바이스 형태의 시스템 메모리(110)를 더 포함할 수 있다. 시스템 메모리(110)의 사이즈는 성능 및 저장 용량의 측면에서 시스템(150) 요구조건들에 따라 변경될 수 있다. 추가적으로, 시스템(150)은 정보(BIOS 정보라고도 지칭됨)를 포함하는 플래시 메모리 등과 같은 비휘발성 메모리(120)를 포함할 수 있으며, 그것의 적어도 일부는 사인 영역(signed portion)일 수 있다. 상기 사인 영역은 암호화 메커니즘과 결합된 적절한 해시 알고리즘을 기반으로 얻어진 시그니처를 포함할 수 있으며, 앞에서 설명한 것과 같이, 하나 이상의 적절한 복호화 키들이 데이터 세트(103A)에 포함될 수 있다.
일 예시적인 실시예에서, 비휘발성 메모리(120)는 두 부분으로 분할되는 부팅 정보를 포함할 수 있으며, 여기서 제1 부분은, 시스템 메모리(110)와 같은 다른 시스템 요소들을 초기화하고, 부팅 정보의 제2 부분을 수용하고, 상기 제1 부분이 CPU(100)에 의해 제공된 보호 영역을 바탕으로 검증되면 상기 제2 부분을 실행하기 위한 명령어들 및 데이터를 포함할 수 있다. 비휘발성 메모리(120) 내의 부팅 정보의 보다 자세한 구성은 도 1c 및 1d를 참조로 추후에 설명될 것이다.
컴퓨터 시스템(150)은 또한 시스템 메모리(110)와 비휘발성 메모리(120)를 CPU(100)와 동작적으로 연결하도록 된 인터페이스 시스템(140)를 더 포함한다. 일 예시적인 실시예에서, 시스템(150)은 예를 들어, 부팅 소스 및 관련 파라미터들에 관한 플래폼 고유 정보를 포함하는 OTP(one-time programmable) 메모리(130)를 더 포함할 수 있다. 예를 들어, 도시된 바와 같이, OTP 메모리(130)는, 내부 메모리(103)로부터 부팅할지 여부를 CPU(100)에 표시해주기 위하여 부팅 옵션들에 관련된 정보를 포함할 수 있다. 또한, 메모리(130) 내에 제공된 보안 비트들은 리셋 후 CPU(100)의 초기 명령어 페치가 어디로 루트되는지를 결정하는 각각의 비트를 포함할 수 있다. 예를 들어, 이 비트가 "1"로 세트되면, 실행은 내부 메모리(103)로 패스될 수 있으며, 따라서, 보안 부팅 프로세싱이 가능해진다. 몇몇 경우에는, 개발/디버그 목적으로 보안 부팅 기능을 할 수 없게하는 것이 바람직할 수 있다. 다른 경우에는, 플래폼 요구조건에 따라, 신뢰 플래폼 보안 피쳐들을 사용할 수 없게 하거나 바이패스하는 것이 가능할 수 있다. 이 경우, 이 비트의 상태를 변경하는 것이 보안 부팅 프로세싱 동안에 허용되지 않을 수 있다. 이러한 목적으로, 적어도 부팅 시간 동안에 모든 디버그 모드들(JTAG,...)이 디스에이블된다. 하기에서 자세히 설명될 바와 같이, 각각의 디버그 모드들을 디스에이블한 후, 보안 부팅 프로세스의 실행이 수행될 수 있다. 마찬가지로, 메모리(130)는 보안 부팅 프로세스 중에 디버그 피쳐들을 제어하기 위한 비트를 포함할 수 있으며, 이는 개발 기간 동안에 유익할 수 있으나, 제품에 대해서는, 디버그 피쳐들에 대한 개개의 제어는 디스에이블 될 것이다. 이러한 보안 비트들에 부가하여, 메모리(130)는 벤더 신원 또는 디지털 권리 관리 애플리케이션등에 사용할 수 있는 임의의 고유 숫자와 같은 다른 정보를 포함할 수 있다. 다른 예시적인 실시예들에서, OTP 메모리(130)가 생략되거나 개발 및 실제 애플리케이션 동안 보안 부팅 프로세싱을 제어하는 다른 정보를 포함하도록 제공될 수 있음이 이해되어야 한다.
도 1c는 비휘발성 메모리(120) 내에 저장될 수 있는 부팅 정보(121)의 구성을 개략적으로 도시한다. 도 1c에 도시된 실시예에서, BIOS로도 지칭될 수 있는 부팅 정보(121)는, 앞에서 설명된 것과 같이, 메모리(101)의 사이즈에 호환되도록 된 사이즈를 가지는 명령어들 및 데이터 값들을 포함하는 데이터 세트를 나타내는 제1 부분(121A)를 포함할 수 있다. 예를 들어, 각각의 RAM 영역들(101A, 101B)에 대해 위에서 주어진 64kB의 예시적인 값들에 대해서, 부분(121A)의 최대 사이즈는 대략적으로 32kB로 제한될 수 있다. 그러나, RAM(101) 내에 저장 가능한 양에 따라 부분(121A)에 대해 임의의 다른 적절한 사이즈가 적용될 수 있다는 것이 이해되어야 한다. 일반적인 부팅 루틴은 수백 kByte 이상의 사이즈를 가질 수 있으므로, 전체 부팅 프로세싱이 메모리(101)를 바탕으로 수행되지 않게끔, 메모리(101)의 사이즈를 초과하는 부팅 정보(121)를 위해 부분(121A)를 제공하는 것이 필요하다. 추후에 보다 상세히 논의될 바와 같이, 다른 경우에는, 충분한 저장 공간이 사용가능할 때, 전체로서의 부팅 정보(121)가 보안 부팅 프로세싱 동안에 사용될 수 있다.
따라서, 도 1c에 도시된 것과 같이 부분(121A)가 제공된다면, 그 부분은 제2 부분(121B)를 위한 초기 BIOS "로더"로서 기능할 수 있으며, 여기서 제1 부분(121A)은 그 내부에 부분(121B)에 대해 얻어진 해시값을 포함할 수 있다. 부분(121B)에 대한 해시 값은 또한 제1 부분(121A)에 대해 얻어진 해시 값을 바탕으로 부분(121A) 내에 포함된 시그니처에 의해 보호될 수 있으며, 이는 전용 신뢰 센터(dedicated trust center) 내에서 달성될 수 있다. 따라서, 제2 부분의 해시 값에 대한 암호화는 필요하지 않다. 부분(121A)에 대한 해시 값(들)의 시그니처는 보안 부팅 프로세싱 중에 부분(121A)을 검증하는 데 사용될 수 있다. 따라서, 부분(121A)은 메모리 제어기 등의 초기화와 같은 필요한 플래폼 초기화 동작들을 행하도록 되어있으며, 그후 메모리(120)로부터 초기화 시스템 메모리(110)로 부분(121B)을 새도잉(shadowing)한다.
부분(121A)의 실행에 따라, 해시값은 또한 시스템 메모리(110) 내에 카피된 이미지(121B)에 대해 계산될 수 있으며, 그후 상기 해시값이 부분(121A)에 초기에 포함된 해시값과 비교될 수 있다. 따라서, 부분(121A)에 포함된 해시값을 바탕으로 부분(121B)의 무결성이 검증될 수 있으며, 그럼으로써 무결성 신뢰 체인을 제공해준다. 결과적으로, 도 1c에 도시된 바와 같이, 시그니처를 얻기 위해 부분(121A)이 프로세스되며, 이는 적절한 신뢰가능 환경을 바탕으로 적절한 신뢰 센터에서 달성될 수 있다. 이러한 목적으로, 적절한 제어 데이터와 함께, 예를 들어, 해시 0, 해시 1, 해시 2로 표시된 하나 이상의 해시 값들을 제공하도록, 보안 해시 알고리즘들이 적용될 수 있다. 그후, 예를 들어, 임의의 적절한 암호화 기법(예를 들어, 적절한 개인 키를 사용하는 RSA(Rivest, Schamir, Adelman) 알고리즘)이 사용될 수 있으며, 그럼으로써 도 1c의 우측에 표시된 것과 같은 암호화된 해시 값들이 얻어진다. 앞에서 설명한 바와 같이, 적절한 수의 공용 키들이 데이터세트(103A)에 포함될 수 있으며, 그럼으로써, 도 1c에 도시된 시퀀스 동안에 생성된 암호화된 해시 값들 또는 시그니처들을 복호화할 수 있게 해준다.
도 1d는 부분(121A)에 포함된 시그니처를 검증하기 위한 시퀀스를 개략적으로 도시하며, 이는 시스템(150)의 스타트업 동안에 데이터 세트(103A)를 바탕으로 행해질 수 있다. 검증은, 예를 들어, 공용 키를 사용하는 RSA 알고리즘을 바탕으로 행해질 수 있으며, 그럼으로써 해시 0, 해시 1, 해시 2와 같은 초기에 생성된 해시 값들을 얻을 수 있다. 초기에 생성된 해시 값들은 그후 RAM 메모리(101)에 카피되는 부분(121A)에 대해 적절한 해시 알고리즘을 적용함으로써 얻어질 수 있는 각각의 해시 값들과 비교된다. 계산된 해시 값(들)이 도 1d의 좌측에 도시된 부분(121A) 내의 시그니처들을 복호화하여 얻어진 초기에 생성된 해시 값(들)과 매치되면, 부분(121A)은 검증된 것으로 여겨질 수 있다.
도 1e 및 1f를 참조로, 보안 부팅 프로세싱 동안의 예시적인 실시예들에 따른 시스템(150)의 동작이 보다 자세히 설명될 것이다. 앞에서 설명된 바와 같이, 보안 플래폼을 제공하는 관점에서, 고려중인 컴퓨터 시스템의 리셋 또는 파워 업 후 운영 시스템의 보안 스타트 업을 가능하게 하기 위해서 정적 신뢰 루트가 구현되어야 한다. 이러한 목적으로, 신뢰 데이터 세트(103A)를 바탕으로 적어도 부분(121A)를 검증함으로써 신뢰 BIOS 정보(121)에 대한 정의된 실행이 달성될 수 있으며, 이러한 실행에서는 실질적으로 임의의 외부적인 조작이 방지된다. 따라서, 시스템이 활성화 될 때마다, 보안 부팅 프로세스가 초기화되며, 여기서, 암호화 기법을 사용함으로써, 초기 하드웨어 및 소프트웨어 구성에 대한 무결성 검증이 달성될 수 있다. 따라서, 부팅 정보(121)(즉, 도시된 실시예에서, 영역(121A, 121B))의 무결성을 검증함에 따라, 전체 부팅 프로세스의 무결성이 확인되며, 그럼으로써 보안 민감 애플리케이션들을 수행하는 데 사용될 수 있는 운영 시스템에 대한 신뢰된 초기화가 가능해 진다. 반면에, 예를 들어, 부분(121A 또는 121B)의 검증 동안 무결성 테스트가 실패하면, 예를 들어, 시스템에 의해 제공되는 서비스들을 제한하기 위해, 또는 다른 예시적인 실시예들에서 실질적으로 부팅 프로세싱을 디스에이블함으로써 적절한 정책이 적용될 수 있다.
따라서, 본 명세서에 개시된 보안 부팅 구조는 "클래스 브레이크(class break)"(상기 클래스 브레이크는 주어진 보안 시스템의 모든 인스턴스에 대해 작용하는 공격으로서 이해됨)를 방지할 수 있다. 예를 들어, 외부 소스에 의해 생성된 임의의 소프트웨어가 클래스 브레이크로서 간주될 수 있으며, 이러한 소프트웨어는 인스톨하기 쉽고 보안/보호 측정(security/protective measures)의 우회(circumvention)를 가능하게 해주며, 그럼으로써 플래폼에 대한 비인가된 사용을 가능하게 해준다. 디지털 권리 관리(DRM) 환경에서, DRM 보호 데이터 파일이 일단 깨지게될 때, 클래스 브레이크가 이미 주어질 수 있으며, 그럼으로써, 보호되지 않은 파일에 대한 재분배를 가능하게 해준다. 결과적으로, 본 명세서에 개시된 시스템 및 메커니즘은, 보호 환경이 CPU 자체 내의 통합 부분을 바탕으로 달성될 수 있으므로, 클래스 브레이크와 관련하여 개선된 보안을 제공해주며, 그럼으로써, CPU 자체에 대한 조작, 또는 부팅 정보를 사인하고 보안 키들을 유지하기 위한 인프라스트럭쳐에서 각각의 결함들에 대한 조작을 필요로 하는데, 이 두 경우 모두 시간 및 비용의 측면에서 상당한 노력을 필요로 한다.
도 1e는 시스템(150)의 동작을 설명하는 흐름도를 개략적으로 도시한다. 단계(S100)에서, 시스템(150)이 리셋되거나 전원이 시스템에 공급되거나 또는 보안 부팅 프로세싱을 필요로 하는 임의의 다른 이벤트가 발생할 수 있다. 결과적으로, 적절한 셀프-테스트가 CPU 코어(102) 및 레지스터 등과 같은 각각의 요소들에 의해 행해질 수 있으며, 초기화될 수 있다. 일부 실시예들에서는, 운영 시스템이 시스템(150)의 제어하에 있을 수 있는 운영 상태에서 보안 부팅 프로세싱이 가능하지 않을 수 있다는 것이 이해되어야 한다. 단계(S110)에서, 제1 명령어가 내부 비휘발성 메모리(103)으로부터 페치되고, 이는 내부 비휘발성 메모리(103)를 해당 리셋 벡터 주소에 매핑함으로써 달성될 수 있다. 결과적으로, 리셋 벡터로의 점프가 임의의 외부 이벤트에 의해 야기되는 임의의 경우에, CPU(100)는 보안 데이터 세트(103A)를 바탕으로 실행을 시작한다. 단계(S120)에서, 데이터 세트(103A) 내에 포함되는 명령어들의 실행에 의해 내부 랜덤 액세스 메모리(101)가 초기화될 수 있다. 단계(S130)에서, 적어도 부팅 정보(121)의 일부, 예를 들어, 시그니처를 포함하는 부분(121a)이 내부 랜덤 액세스 메모리(101)에 로딩될 수 있다. 단계(S140)에서, 데이터 세트(103A) 내에 포함된 복호화 키를 사용하여 부팅 정보(121) 또는 부분(121A)의 무결성이 검증될 수 있다.
즉, 메모리(101)의 초기화 후, 부팅 정보(121) 또는 적어도 부분(121A)에 대한 시그니처 검사가 시작된다. 이러한 목적으로, 일부 예시적인 실시예들에서, SHA1과 같은 해시 값들이 보안 해시 알고리즘들을 바탕으로 계산될 수 있으며, 여기서 부팅 정보(121) 또는 부분(121A)에 대한 하나 이상의 시그니처들이 스킵될 수 있다. 또한, 일부 경우들에서는 OTP 메모리(130) 내에 포함된 벤더 신원과 같은 추가 정보가 사용될 수 있으며, 하나 이상의 해시 값들을 계산하기 위해 이러한 추가 정보가 포함될 수 있다. 하나 이상의 계산된 해시 값들은 그후 도 1b를 참조로 앞에서 설명된 것과 같은 데이터(121 또는 121A)의 전용 위치 내에 포함된 하나 이상의 해시 값들과 비교될 수 있다. 이러한 목적으로, 초기 해시 값들을 얻기 위하여, 하나 이상의 시그니처들로부터의 해시 값들이 데이터 세트(103a) 내에 포함된 공용 복호화 키들을 사용하여 검색될 수 있다. 계산된 해시 값들과 초기 해시 값들이 일치하면, 단계(S150)에서 부팅 정보(121) 또는 부분(121A)가 신뢰할 수 있는 것으로 고려되고, 단계(S160)에서 부팅 프로세싱이 계속된다. 단계(S150)에서 무결성 체크가 실패하면, 단계(S170)에서, 대응하는 부팅 실패가 표시될 수 있으며, 이는 일 예시적인 실시예에서 부팅 프로세싱을 종료하고 대응하는 에러 코드를 발행함으로써 달성될 수 있다.
위에서 기술한 실시예에서, 실행을 부팅 정보(121) 또는 부분(121A)로 넘기기 전에, 보안 부팅 프로세스(즉, 단계(S100-S150)에 의해 표시된 프로세스 흐름)는 시스템(150)의 어떤 컴포넌트들에도 리셋 과정을 적용하지 않을 것이며, 그럼으로써 시스템(150)의 하드웨어 구성에 대한 신뢰성있는 "측정(measure)"을 가능하게 해준다.
도 1f는 다른 예시적인 실시예들에 따른 보안 부팅 프로세싱을 개략적으로 도시한다. 도시된 바와 같이, 단계(S101)에서, 보안 부팅 프로세싱이 가능한지 여부가 결정된다. 각각의 표시는 메모리(130) 내에 포함된 각각의 보안 비트들을 설정함으로써 얻어질 수 있다. 단계(S100)에 따라, 앞에서 설명한 바와 같이, 비휘발성 메모리(103)에서 실행이 시작된다. 단계(S102)에서, 예를 들어, 출력 포트를 적절하게 설정하기 위하여 상태 정보가 제공될 수 있다. 예를 들어, 단계(S102)에서, 내부 셀프-테스트 중에 보안 부팅 프로세싱이 시작되는 것이 표시될 수 있다. 단계(S120)에서, 시스템(150) 그리고 특히 CPU(100)가 초기화될 수 있으며, 상기 단계(S120)는, 예를 들어, 단계들(S121-S129) 중 하나 이상을 포함할 수 있다. 예를 들어, 단계(S121)에서, 맨 처음 명령어가 메모리(103)로부터 페치되도록, 메모리(103)의 주소들이 적절하게 재매핑(remapping)될 수 있다. 단계(S122)에서, 부팅 소스가 검출될 수 있으며, 단계(S123)에서 초기화될 수 있다. 또한, 단계(S124, S125)에서 메모리(101)(즉, 데이터 캐시(101A) 및 명령어 캐시(101B))가 초기화될 수 있으며, 단계(S126)에서 데이터 캐시에 대한 비실제 모드(unreal mode)가 셋업될 수 있다. 또한, 부팅 정보(121) 또는 부분(121A)의 이미지가 데이터 캐시(101A)에 카피될 수 있으며, 단계(S128)에서, 데이터 캐시(101A) 내의 변수들을 위한 저장 공간이 할당될 수 있다. 마지막으로, 필요하다면, 단계(S129)에서, 벤더 신원(vendor identification)이 검색될 수 있다.
단계(S141)에서, 부팅 정보(121) 또는 부분(121A)의 블록이 판독되고, 단계(S142)에서, 최초의 해시 값을 얻기 위해 각각의 해시 알고리즘이 수행될 수 있다. 단계(S143)에서, 앞에서 판독된 데이터 블록이 최종 블록이었는지 여부가 결정된다. 앞에서 판독된 데이터 블록이 최종 블록이 아니었다면, 프로세스 흐름은 단계(S141)로 되돌아가 추가의 데이터 블록을 판독하고, 후속적인 단계(S142)에서, 해시 값이 계산되어 앞에서 얻어진 값을 갱신한다. 단계(S143)에서, 최종 블록이 판독된다면, 단계(S144)에서, 계산된 해시 값이 저장되고, 단계(S145)에서, 데이터(121 또는 121A)의 관련 부분이 판독될 수 있다. 내부에 포함된 시그니처들을 얻기 위하여 관련된 데이터(121 또는 121A) 부분이 판독될 수 있다. 이러한 목적으로, 예를 들어, 정보(121) 또는 부분(121A)의 헤더 블록이 사용될 수 있다. 단계(S146)에서, 하나 이상의 시그니처들이 검색되고, 단계(S147)에서, 하나 이상의 공용 키들이 적용되어 단계(S146)에서 얻어진 시그니처들을 복호화하는데 적용된다. 단계(S150)에서, 단계(S144)에 저장된 해시 값 또는 값들이 단계(S147)을 행함으로써 얻어진 본래 해시 값들과 비교되어, 데이터(121 또는 121A)가 신뢰할 수 있는 데이터인지 여부가 결정된다.
단계(150)에서 해시 값들이 매치되면, 데이터 캐시(101A) 내의 부팅 데이터를 검증하기 위하여, 앞에서 초기화된 명령어 캐시가, 현재 데이터 캐시(101A) 내에 포함된 부팅 데이터(121 또는 121A)로 갱신된다. 단계(S162)에서, 보안 부팅 프로세스의 상태가 표시될 수 있으며, 마지막으로, 단계(163)에서, 예를 들어, 시스템 메모리(110)의 초기화, 부분(121B)와 같은 부팅 데이터(121)의 나머지 부분의 검색, 그리고 해시 값을 계산하고 계산된 해시 값을 부분(121A)에 포함된 본래 해시 값과 비교함으로써 부팅 데이터의 무결성을 검증하는 것을 포함하는 명령어 캐시로부터의 명령어들을 수행함으로써 부팅이 계속될 수 있다. 단계(S150)에서 무결성이 확인되지 않을 때, 단계(S171)에서, 대응하는 상태 정보(예를 들어, 0xCD)가 제공될 수 있으며, 단계(S172)에서, 일 예시적인 실시예에서, 실행이 종료될 수 있다.
결과적으로, 본 명세서에 개시된 시스템 및 메커니즘들은 비휘발성 메모리 내에 포함된 사전-부팅 루틴(pre-boot routine)을 바탕으로 보안 부팅 프로세싱을 제공함으로써 컴퓨터 플래폼의 개선된 무결성을 제공해주며, 상기 비휘발성 메모리는 일단 데이터가 상기 비휘발성 메모리 내에 기입되고 나면 재기입이 되지 않는다. 비휘발성 메모리가 CPU 자체의 일부이므로, 비휘발성 내부 메모리 내에 저장된 사전-부팅 정보를 바탕으로 시스템 초기화가 달성될 수 있으며, 이는 또한 사인된 부팅 정보 또는 적어도 상기 부팅 정보의 사인된 부분에 적용될 수 있는 적절한 복호화 키들을 포함할 수 있다. 부팅 정보 또는 그것의 일부에 대한 적절한 해시 값들을 계산하는 과정 및 상기 부팅 정보에 암호화된 형태로 저장된 본래 생성된 값들과 비교하는 과정은 CPU의 내부 랜덤 액세스 메모리를 사용함으로써 달성될 수 있으며, 그럼으로써, 외부 액세스 가능성을 방지해주며 따라서 시스템 구성을 조작할 가능성이 방지된다. 그러므로, 내부에 저장된 사전-부팅 정보가 시스템 초기화 중에 측정을 위한 코어 신뢰 루트로서 사용될 수 있다.
앞서 개시된 특정한 실시예들은 단지 예시적인 것으로, 본 발명은 본 명세서에 개시된 내용의 이점을 갖는 해당 기술분야의 당업자들에게는 자명한, 상이하지만 등가적인 방식으로 변경 및 실행될 수 있다. 예를 들면, 앞서 설명된 공정 단계들은 다른 순서로 실행될 수도 있다. 또한, 하기의 특허청구범위에 기술된 바를 제외하면, 여기에 도시한 구성 혹은 디자인의 세부사항에 대해 그 어떤 제한도 의도되지 않는다. 따라서, 상기 설명된 특정 실시예들은 변경 혹은 수정될 수 있으며, 그러한 모든 변형예들은 본 발명의 범위 및 기술적 사상 내에 있다고 고려된다. 따라서, 본 명세서에서 보호받고자 하는 사항은 하기의 특허청구범위에 서술된 바와 같다.

Claims (12)

  1. 컴퓨터 시스템(150)의 시동(start) 방법으로서,
    중앙 처리 유닛(100)의 비휘발성 메모리(103)에 저장된 제1 데이터 세트(103A)에 액세스하는 단계와, 상기 제1 데이터 세트(103A)는 상기 중앙 처리 유닛(100)의 코어 회로(102)로 하여금 상기 중앙 처리 유닛의 내부 휘발성 메모리(101)를 초기화하게 하는 제1 명령어들을 포함하고;
    비휘발성 메모리(120)로부터의 제2 데이터 세트(121)의 이미지를 초기화된 상기 내부 휘발성 메모리(101)에 로딩하는 단계와, 상기 제2 데이터 세트(121)는 상기 제2 데이터 세트(121)의 무결성(integrity)을 검증하기 위한 시그니처(signature)를 포함하고, 상기 제2 데이터 세트(121)는 상기 중앙 처리 유닛(100)으로 하여금 상기 컴퓨터 시스템(100)의 시스템 메모리(110)를 초기화하게 하는 제2 명령어들(121A)을 더 포함하며;
    상기 제1 데이터 세트에 포함된 복호화 키 및 상기 시그니처를 사용하여 상기 제2 데이터 세트(121)의 무결성을 검증하는 단계와; 그리고
    상기 제2 데이터 세트(121)의 검증이 성공적일 때 상기 제2 명령어들(121A)을 사용하여 상기 시스템 메모리(110)를 초기화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  2. 제1 항에 있어서,
    상기 비휘발성 메모리(120)로부터의 제3 데이터 세트(121B)를 상기 시스템 메모리(110)에 로딩하고 상기 제3 데이터 세트(121B)의 무결성을 검증하는 단계와; 그리고
    상기 제3 데이터 세트(121B) 내에 포함된 제3 명령어들(121B)을 실행하는 단계를 더 포함하며, 상기 제3 명령어들(121B)은 운영 시스템을 상기 컴퓨터 시스템에 연결된 부팅가능한 디바이스로부터 상기 시스템 메모리(120)으로 로딩되게 하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  3. 제2 항에 있어서,
    상기 제3 데이터 세트(121B)의 무결성을 검증하는 단계는, 상기 제3 데이터 세트(121B)에 대한 해시 값을 결정하는 것과 결정된 해시 값을 상기 제2 데이터 세트(121A)에 포함된 상기 제3 데이터 세트(121B)의 초기 해시 값(initial hash value)과 비교하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  4. 제1 항에 있어서,
    상기 내부 휘발성 메모리(101)를 초기화하는 것은, 상기 중앙 처리 유닛(100)의 데이터 캐시(101A) 및 명령어 캐시(101B)를 초기화하는 것을 포함하며, 여기서 상기 제2 데이터 세트(121A)는 상기 데이터 캐시(101A)에 로딩되고, 상기 방법은, 상기 제2 명령어들(121A)을 실행하기 위하여 상기 제2 데이터 세트(121A)의 무결성이 성공적으로 검증되었을 때 상기 제2 데이터 세트(121A)를 상기 명령어 캐시(101B)에 카피하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  5. 제1 항에 있어서,
    상기 제2 데이터 세트(121)를 상기 내부 휘발성 메모리(101) 내에 로딩하는 단계는, 상기 제2 데이터 세트(121)의 해시 값을 결정하기 위하여 해시 알고리즘을 수행(performing)하는 것을 포함하며, 상기 제2 데이터 세트(121)의 무결성을 검증하는 단계는, 상기 복호화 키를 상기 시그니처에 적용하여 얻어진 초기 해시 값과 상기 제2 데이터 세트(121)의 해시 값을 비교하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  6. 제1 항에 있어서,
    상기 제1 데이터 세트(103A)는 상기 중앙 처리 유닛(100)이 리셋되거나 파워업 될 때마다 액세스되는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  7. 제1 항에 있어서,
    상기 제2 데이터 세트(121)의 성공적인 검증 후 적어도 상기 복호화 키에 대한 외부 액세스(external acess)를 허용하기 위하여, 상기 제1 데이터 세트(103A)의 주소들을 상기 중앙 처리 유닛(100)의 가상 주소 공간 내에 재매핑(reamapping)하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  8. 제1 항에 있어서,
    상기 제2 데이터 세트(121)의 적어도 검증 상태에 대한 상태 정보를 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  9. 제1 항에 있어서,
    상기 제1 데이터 세트(103A)를 상기 시스템 메모리(120)에 카피하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  10. 제1 항에 있어서,
    상기 제1 데이터 세트(103A)는 상기 중앙 처리 유닛(100)의 상기 내부 휘발성 메모리(103)를 초기화하기 위한 사전-부팅(pre-boot) 명령어들 및 데이터 값들을 포함하며, 상기 제2 데이터 세트(121)는 부팅 명령어들 및 부팅 데이터 값들을 포함하는 것을 특징으로 하는 컴퓨터 시스템(150) 시동 방법.
  11. 중앙 처리 유닛(CPU)(100)으로서,
    기판과, 상기 기판 위에는 CPU 코어(102), 내부 휘발성 메모리(internal volatile memory)(101), 내부 비휘발성 메모리(internal non-volatile memory)(103), 및 상기 CPU 코어(102)와 상기 내부 휘발성 메모리(101)와 상기 내부 비휘발성 메모리(103)를 연결하기 위한 버스 시스템(104)을 정의하는 회로 소자들이 형성되어 있고; 그리고
    상기 내부 비휘발성 메모리(103) 내에 저장된 사전-부팅 정보(pre-boot information)(103A)를 포함하며, 상기 사전-부팅 정보(103A)는 상기 내부 휘발성 메모리(101)를 초기화하고 부팅 루틴의 적어도 일부를 검증하기 위한 데이터 값들 및 상기 CPU 코어(102)에 의해 실행가능한 사전-부팅 명령어들을 포함하고,
    상기 CPU 코어(102)는, 상기 내부 비휘발성 메모리(103)로부터 직접(directly) 상기 사전-부팅 명령어들을 실행하여, 상기 내부 휘발성 메모리(101)를 초기화고, 상기 부팅 루틴의 적어도 일부의 무결성을 검증하고, 그리고 상기 부팅 루틴의 상기 적어도 일부의 무결성을 검증한 후, 상기 부팅 루틴의 적어도 일부를 상기 초기화된 내부 휘발성 메모리(101)에 로딩하고 상기 부팅 명령어들을 실행하도록 동작가능한 것을 특징으로 하는 중앙 처리 유닛.
  12. 제11 항에 있어서,
    상기 사전-부팅 정보(103A)는 상기 부팅 루틴의 적어도 일부의 시그니처를 복호화할 수 있게 해주는 하나 이상의 복호화 키들을 포함하는 것을 특징으로 하는 중앙 처리 유닛.
KR1020107021808A 2008-02-29 2009-02-27 보안 부팅 메커니즘을 포함하는 컴퓨터 시스템 Expired - Fee Related KR101237527B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
DE102008011925.3A DE102008011925B4 (de) 2008-02-29 2008-02-29 Sicheres Initialisieren von Computersystemen
DE102008011925.3 2008-02-29
US12/186,821 2008-08-06
US12/186,821 US8656146B2 (en) 2008-02-29 2008-08-06 Computer system comprising a secure boot mechanism
PCT/US2009/001289 WO2009108371A1 (en) 2008-02-29 2009-02-27 A computer system comprising a secure boot mechanism

Publications (2)

Publication Number Publication Date
KR20100125371A KR20100125371A (ko) 2010-11-30
KR101237527B1 true KR101237527B1 (ko) 2013-02-26

Family

ID=40911374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021808A Expired - Fee Related KR101237527B1 (ko) 2008-02-29 2009-02-27 보안 부팅 메커니즘을 포함하는 컴퓨터 시스템

Country Status (8)

Country Link
US (1) US8656146B2 (ko)
EP (1) EP2250599A1 (ko)
JP (1) JP2011527777A (ko)
KR (1) KR101237527B1 (ko)
CN (1) CN101965570B (ko)
DE (1) DE102008011925B4 (ko)
TW (1) TWI498768B (ko)
WO (1) WO2009108371A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12282558B2 (en) 2019-10-08 2025-04-22 Hanwha Techwin Co., Ltd. Secure booting apparatus and operating method thereof

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582676B2 (en) * 2005-01-31 2017-02-28 Unisys Corporation Adding or replacing disks with re-key processing
US10776489B2 (en) 2007-03-06 2020-09-15 Unisys Corporation Methods and systems for providing and controlling cryptographic secure communications terminal operable to provide a plurality of desktop environments
US8522066B2 (en) 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
US11030305B2 (en) 2010-10-04 2021-06-08 Unisys Corporation Virtual relay device for providing a secure connection to a remote device
US8812828B2 (en) * 2010-11-16 2014-08-19 Intel Corporation Methods and apparatuses for recovering usage of trusted platform module
US8560845B2 (en) * 2011-01-14 2013-10-15 Apple Inc. System and method for tamper-resistant booting
US20120204254A1 (en) * 2011-02-04 2012-08-09 Motorola Mobility, Inc. Method and apparatus for managing security state transitions
US9021244B2 (en) * 2011-11-04 2015-04-28 Insyde Software Corp. Secure boot administration in a Unified Extensible Firmware Interface (UEFI)-compliant computing device
JP5441984B2 (ja) * 2011-11-08 2014-03-12 シャープ株式会社 電子機器システム、電子機器及び記憶媒体
US8775784B2 (en) 2011-11-11 2014-07-08 International Business Machines Corporation Secure boot up of a computer based on a hardware based root of trust
US20130173906A1 (en) * 2011-12-29 2013-07-04 Eric T. Obligacion Cloning storage devices through secure communications links
US9262637B2 (en) * 2012-03-29 2016-02-16 Cisco Technology, Inc. System and method for verifying integrity of platform object using locally stored measurement
CN104272250A (zh) * 2012-04-30 2015-01-07 惠普发展公司,有限责任合伙企业 可配置的计算机存储器
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
US9047471B2 (en) * 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
CN102929674B (zh) * 2012-11-02 2016-02-10 威盛电子股份有限公司 电子装置以及开机方法
US20140164753A1 (en) * 2012-12-06 2014-06-12 Samsung Electronics Co., Ltd System on chip for performing secure boot, image forming apparatus using the same, and method thereof
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
WO2014175862A1 (en) * 2013-04-23 2014-10-30 Hewlett-Packard Development Company, L.P. Redundant system boot code in a secondary non-volatile memory
US10733288B2 (en) 2013-04-23 2020-08-04 Hewlett-Packard Development Company, L.P. Verifying controller code and system boot code
US9235710B2 (en) 2013-05-23 2016-01-12 Cisco Technology, Inc. Out of band management of basic input/output system secure boot variables
KR101656092B1 (ko) * 2013-08-13 2016-09-08 윈본드 일렉트로닉스 코포레이션 비동기적인 인증을 갖는 보안 컴퓨팅 시스템
US9779242B2 (en) * 2013-11-13 2017-10-03 Via Technologies, Inc. Programmable 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
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
US9767288B2 (en) * 2013-11-13 2017-09-19 Via Technologies, Inc. JTAG-based secure BIOS mechanism in a trusted computing system
US9507942B2 (en) * 2013-11-13 2016-11-29 Via Technologies, Inc. Secure BIOS mechanism in a trusted computing system
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
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
US9779243B2 (en) * 2013-11-13 2017-10-03 Via Technologies, Inc. Fuse-enabled 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
TWI560611B (en) * 2013-11-13 2016-12-01 Via Tech Inc Apparatus and method for securing bios
US9798880B2 (en) * 2013-11-13 2017-10-24 Via Technologies, Inc. Fuse-enabled secure bios mechanism with override feature
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
KR20150078644A (ko) * 2013-12-31 2015-07-08 에릭슨엘지엔터프라이즈 주식회사 소프트웨어 이미지 이중화 방법 및 장치
KR102227263B1 (ko) * 2013-12-31 2021-03-15 삼성전자주식회사 보안 부트 변경 변경시스템, 방법 및 이 변경시스템을 구비한 전자장치
KR20150085301A (ko) * 2014-01-15 2015-07-23 삼성전자주식회사 메모리 시스템의 동작 방법 및 이를 포함하는 메모리 시스템의 초기화 방법
CN104866757B (zh) * 2014-02-24 2019-01-15 联想(北京)有限公司 一种验证方法及电子设备
CN106104561B (zh) 2014-03-28 2019-10-22 惠普发展公司,有限责任合伙企业 允许针对bios的安装使用测试密钥的方法和设备
CN105022589A (zh) * 2014-04-29 2015-11-04 光宝科技股份有限公司 电子装置及其操作方法
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
US9842212B2 (en) * 2014-11-03 2017-12-12 Rubicon Labs, Inc. System and method for a renewable secure boot
US11456876B2 (en) * 2015-03-26 2022-09-27 Assa Abloy Ab Virtual credentials and licenses
CN104866343A (zh) * 2015-05-15 2015-08-26 长城信息产业股份有限公司 一种嵌入式设备的安全启动方法及启动安全的嵌入式设备
CN104881345B (zh) * 2015-05-25 2018-10-23 上海兆芯集成电路有限公司 中央处理器和计算机开机自检的方法
CN104899524B (zh) * 2015-05-25 2018-11-27 上海兆芯集成电路有限公司 中央处理器和验证主机板数据的方法
US10467418B2 (en) * 2015-08-28 2019-11-05 Ncr Corporation Computer pre-boot security verification, enforcement, and remediation
US9996711B2 (en) * 2015-10-30 2018-06-12 Intel Corporation Asset protection of integrated circuits during transport
CN105681032B (zh) * 2016-01-08 2017-09-12 腾讯科技(深圳)有限公司 密钥存储方法、密钥管理方法及装置
US10242195B2 (en) * 2016-07-22 2019-03-26 Hewlett Packard Enterprise Development Lp Integrity values for beginning booting instructions
CN106484477B (zh) * 2016-10-11 2019-11-12 上海华虹集成电路有限责任公司 安全的软件下载与启动方法
US11455396B2 (en) * 2017-05-12 2022-09-27 Hewlett Packard Enterprise Development Lp Using trusted platform module (TPM) emulator engines to measure firmware images
EP3673401B1 (en) 2017-08-22 2025-09-10 Absolute Software Corporation Firmware integrity check using silver measurements
CN109714303B (zh) 2017-10-25 2022-05-27 阿里巴巴集团控股有限公司 Bios启动方法及数据处理方法
CN109710315B (zh) 2017-10-25 2022-05-10 阿里巴巴集团控股有限公司 Bios刷写方法及bios镜像文件的处理方法
US10757087B2 (en) * 2018-01-02 2020-08-25 Winbond Electronics Corporation Secure client authentication based on conditional provisioning of code signature
WO2019240759A1 (en) * 2018-06-11 2019-12-19 Hewlett-Packard Development Company, L.P. Overriding sub-system identifiers with protected variable values
JP7059127B2 (ja) * 2018-06-26 2022-04-25 キヤノン株式会社 起動時に実行されるソフトウェアの改ざんを検知する情報処理装置及びその制御方法
CN109446815B (zh) * 2018-09-30 2020-12-25 华为技术有限公司 基本输入输出系统固件的管理方法、装置和服务器
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
US10726133B1 (en) * 2019-02-04 2020-07-28 Dell Products L.P. Securely loading UEFI images at runtime
WO2020167283A1 (en) 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery from corruption
JP7286381B2 (ja) * 2019-04-01 2023-06-05 キヤノン株式会社 情報処理装置とその制御方法
US11347856B2 (en) * 2019-05-24 2022-05-31 Dell Products L.P. Bios method to block compromised preboot features
US11657157B2 (en) * 2019-06-06 2023-05-23 Macronix International Co., Ltd. Secure boot system, method and apparatus
EP4022430A4 (en) * 2019-08-28 2023-05-24 Hewlett-Packard Development Company, L.P. ARRAY SIGNATURES ENCRYPTION
TWI756631B (zh) 2020-02-12 2022-03-01 瑞昱半導體股份有限公司 具有韌體驗證機制的電腦系統及其韌體驗證方法
CN113282930B (zh) * 2020-02-19 2024-03-01 瑞昱半导体股份有限公司 具有固件验证机制的电脑系统及其固件验证方法
US11768611B2 (en) 2020-04-02 2023-09-26 Axiado Corporation Secure boot of a processing chip
US11528276B2 (en) 2020-04-16 2022-12-13 Bank Of America Corporation System for prevention of unauthorized access using authorized environment hash outputs
US11263109B2 (en) 2020-04-16 2022-03-01 Bank Of America Corporation Virtual environment system for validating executable data using accelerated time-based process execution
US11425123B2 (en) 2020-04-16 2022-08-23 Bank Of America Corporation System for network isolation of affected computing systems using environment hash outputs
US11423160B2 (en) 2020-04-16 2022-08-23 Bank Of America Corporation System for analysis and authorization for use of executable environment data in a computing system using hash outputs
US11481484B2 (en) 2020-04-16 2022-10-25 Bank Of America Corporation Virtual environment system for secure execution of program code using cryptographic hashes
CN113553115B (zh) * 2020-04-23 2024-09-10 上汽通用汽车有限公司 一种基于异构多核芯片的启动方法以及存储介质
FR3111441B1 (fr) 2020-06-10 2022-08-05 Proton World Int Nv Démarrage sécurisé d'un circuit électronique
US11372982B2 (en) 2020-07-02 2022-06-28 Bank Of America Corporation Centralized network environment for processing validated executable data based on authorized hash outputs
US12278830B2 (en) 2021-08-31 2025-04-15 Axiado Corporation Systems and methods using network artificial intelligence to manage control plane security in real-time
US20230083979A1 (en) * 2021-09-10 2023-03-16 Ampere Computing Llc Method and system for secure boot and rma intervention
US20250139298A1 (en) * 2023-10-31 2025-05-01 Dell Products L.P. Out of band component validation
EP4579501A1 (en) * 2023-12-27 2025-07-02 Nxp B.V. Virtually immutable firmware attestation, recovery, and related security

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010007131A1 (en) * 1997-09-11 2001-07-05 Leonard J. Galasso Method for validating expansion roms using cryptography
US20050076226A1 (en) * 2003-10-01 2005-04-07 International Business Machines Corporation Computing device that securely runs authorized software
US20060107320A1 (en) * 2004-11-15 2006-05-18 Intel Corporation Secure boot scheme from external memory using internal memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146788A (ja) * 1993-11-22 1995-06-06 Fujitsu Ltd ウイルス診断機構の作成システムと作成方法並びにウイルス診断機構と診断方法
JP3293760B2 (ja) * 1997-05-27 2002-06-17 株式会社エヌイーシー情報システムズ 改ざん検知機能付きコンピュータシステム
JPH1139158A (ja) * 1997-07-18 1999-02-12 Nippon Telegr & Teleph Corp <Ntt> 実行プログラムの保護方法およびその装置
JP2002366748A (ja) * 2001-06-05 2002-12-20 Dainippon Printing Co Ltd Icカードを利用した新規口座開設方式
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
JP2004348677A (ja) * 2003-05-26 2004-12-09 Sony Corp プログラムおよび情報処理方法
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
EP1659472A1 (en) * 2004-11-22 2006-05-24 Research In Motion Limited Method and Device for Authenticating Software
US20060179308A1 (en) 2005-02-07 2006-08-10 Andrew Morgan System and method for providing a secure boot architecture
US8291226B2 (en) 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device
CN1822013A (zh) * 2006-03-14 2006-08-23 上海一维科技有限公司 基于可信平台模块的指纹生物识别引擎系统及其识别方法
TWI353124B (en) * 2006-03-30 2011-11-21 Silicon Image Inc Inter-port communication in a multi-port memory de
CN100504779C (zh) * 2006-06-30 2009-06-24 联想(北京)有限公司 一种加速bios运行的方法
CN1900939A (zh) * 2006-07-18 2007-01-24 上海一维科技有限公司 安全计算机的指纹生物识别装置及其识别方法
US8068614B2 (en) * 2007-09-28 2011-11-29 Intel Corporation Methods and apparatus for batch bound authentication
US8583908B2 (en) * 2007-12-31 2013-11-12 Intel Corporation Enhanced network and local boot of Unified Extensible Firmware Interface images
DE102008021567B4 (de) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010007131A1 (en) * 1997-09-11 2001-07-05 Leonard J. Galasso Method for validating expansion roms using cryptography
US20050076226A1 (en) * 2003-10-01 2005-04-07 International Business Machines Corporation Computing device that securely runs authorized software
US20060107320A1 (en) * 2004-11-15 2006-05-18 Intel Corporation Secure boot scheme from external memory using internal memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12282558B2 (en) 2019-10-08 2025-04-22 Hanwha Techwin Co., Ltd. Secure booting apparatus and operating method thereof

Also Published As

Publication number Publication date
WO2009108371A1 (en) 2009-09-03
US8656146B2 (en) 2014-02-18
CN101965570B (zh) 2013-09-18
TW200943123A (en) 2009-10-16
DE102008011925A1 (de) 2009-09-03
US20090222653A1 (en) 2009-09-03
DE102008011925B4 (de) 2018-03-15
TWI498768B (zh) 2015-09-01
CN101965570A (zh) 2011-02-02
EP2250599A1 (en) 2010-11-17
JP2011527777A (ja) 2011-11-04
KR20100125371A (ko) 2010-11-30

Similar Documents

Publication Publication Date Title
KR101237527B1 (ko) 보안 부팅 메커니즘을 포함하는 컴퓨터 시스템
US8464037B2 (en) Computer system comprising a secure boot mechanism on the basis of symmetric key encryption
US11089016B2 (en) Secure system on chip
US7308576B2 (en) Authenticated code module
US7974416B2 (en) Providing a secure execution mode in a pre-boot environment
JP4486288B2 (ja) コンピュータにおいてトラステッドコア初期化プロセスを安全に実行するためのプログラム、方法、メモリコントローラ、装置及びコンピュータ
KR100668000B1 (ko) 인증된 코드 방법 및 장치
US8806224B2 (en) Low cost trusted platform
US20030126453A1 (en) Processor supporting execution of an authenticated code instruction
EP2854066A1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
US8689318B2 (en) Trusted computing entities
US20040151319A1 (en) Method and apparatus for managing a hierarchy of nodes
CN101273363A (zh) 用于具有快闪大容量存储存储器的安全装置的安全而灵活的系统结构
CN100504897C (zh) 一种启动受保护分区的方法
US8108905B2 (en) System and method for an isolated process to control address translation
CN119293791A (zh) 一种基于risc-v架构服务器的固件加密系统及方法
EP3440586B1 (en) Method for write-protecting boot code if boot sequence integrity check fails
CN108595981B (zh) 加密安卓系统的方法
US7913074B2 (en) Securely launching encrypted operating systems
Muramoto et al. Improving Hardware Security on Talos II Architecture Through Boot Image Encryption
JP2023026017A (ja) 起動検証プログラム、情報処理装置および起動検証方法
HK40068985A (en) Virtual environment type validation for policy enforcement
GB2397981A (en) method and apparatus for managing a hierarchy of nodes

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

N231 Notification of change of applicant
PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R13-asn-PN2301

St.27 status event code: A-3-3-R10-R11-asn-PN2301

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20170221

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20170221