KR20030095301A - 보안 부트 로더에서의 해싱의 사용 - Google Patents

보안 부트 로더에서의 해싱의 사용 Download PDF

Info

Publication number
KR20030095301A
KR20030095301A KR10-2003-0036264A KR20030036264A KR20030095301A KR 20030095301 A KR20030095301 A KR 20030095301A KR 20030036264 A KR20030036264 A KR 20030036264A KR 20030095301 A KR20030095301 A KR 20030095301A
Authority
KR
South Korea
Prior art keywords
code
hash value
preloader
electronic device
processor
Prior art date
Application number
KR10-2003-0036264A
Other languages
English (en)
Other versions
KR100965717B1 (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 KR20030095301A publication Critical patent/KR20030095301A/ko
Application granted granted Critical
Publication of KR100965717B1 publication Critical patent/KR100965717B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Hardware Redundancy (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)
  • Diaphragms And Bellows (AREA)
  • Footwear And Its Accessory, Manufacturing Method And Apparatuses (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

부트스트랩 코드(bootstrap code)를 포함하는 기계 명령어는 전자 게임 콘솔의 중요한 소자 내에 내장되는데, 이러한 기계 명령어는 손쉽게 액세스되거나 변경될 수 없다. 읽기 전용 메모리(ROM) 내의 프리로더 부분(preloader portion)은 부트스트랩 코드에 의해 해시되고(hash), 그 결과는 부트스트랩 코드에서 유지되는 예상 해시 값과 비교된다. 부트-업 프로세스(boot up process)의 다른 검증이 프리로더에 의해 수행되는데, 이 프리로더는 ROM의 코드를 해시하여 코드의 해시 값을 얻는다. 그 결과는 이 해시의 예상 값을 정의하는 전자 서명(digital signature)으로 검증된다. 임의의 예상 결과를 얻는데 실패하면 부트-업 프로세스가 종결된다. 부트스트랩 코드는 프리로더를 확인하고, 이 프리로더는 ROM의 코드의 나머지를 확인하기 때문에, 본 발명은 전자 장치의 부트-업에 사용되는 코드가 변경되지 않았거나 대체되지 않았다는 것을 보증하는데 유용하다.

Description

보안 부트 로더에서의 해싱의 사용{USE OF HASHING IN A SECURE BOOT LOADER}
본 발명은 일반적으로 프로세서를 포함하는 전자 장치를 안전하게 부트-업(boot up) 하는 것에 관한 것으로, 특히 대용 또는 대체 기계 명령어(substitute or alternative machine instructions)가 부트-업 프로세스 중에 실행되는 것을 방지하기 위하여, 이러한 전자 장치를 부트-업 할 때에는 오직 원하는 기계 명령어만이 프로세서에 의해 실행되도록 보증하는 것과 관련이 있다.
초기에 전압을 가하거나 리셋할 때에 부트-업 프로세스를 수행해야만 하는 전자 장치는 그 형태가 다양하다. 부트-업 프로세스 중에, 대개 전자 장치의 기본 운영 특성을 제어하는 기계 명령어는 읽기 전용 메모리(read only memory; 이하 ROM)에 저장되는 위치에 액세스되고, 실행되어 전자 장치를 초기화하며, 다른 기계 명령어가 임의 액세스 메모리(random access memory; 이하 RAM)에 로딩될 수 있도록 한다. 이 때 RAM은 전자 장치로 하여금 또 다른 기능을 구현할 수 있도록 실행되는 역할을 한다. 예를 들어, 개인용 컴퓨터가 부트-업 될 때, 기본 입출력 시스템(basic input-output system; BIOS)을 포함하는 명령어가 실행되어 운영체제가 하드 드라이브로부터 RAM으로 로딩되고, 컴퓨터의 중앙 처리 장치(central processing unit; 이하 CPU)에 의해 실행되도록 한다. "부트-업"은 초기의 더 기술적인 용어인 "부트스트랩(bootstrap)"의 간결한 형태이다.
부트-업이 되어야 하는 다른 형태의 전자 장치로는 게임 콘솔, 디지털 기록 장치, 게인용 데이터 시스템, 및 추가적인 기계 명령어가 메모리에 로딩되고 실행될 때, 다른 기능 수행이 가능하도록 한 세트의 초기 기계 명령어를 실행하여야 하는 형태의 프로세서를 포함하는 전자 제품이 있다. 부트-업 프로세스가 전자 장치의 초기 상태를 결정하기 때문에, 그 프로세스는 전자 장치의 중요한 운영 파라미터에 영향을 미치며, 부트-업 프로세스가 완료된 후에는 전자 장치가 사용되는 방법에 실질적인 영향을 줄 수 있다. 부트-업 프로세스의 변경을 방지하는 것은 전자 장치를 판매하는 회사에게 중요한 문제가 될 수 있는데, 이는 그 장치를 사용함으로써 발생하는 수입의 손실을 회피하기 위함이다.
예를 들어, 전자 게임 산업에서, 전자 게임용으로 판매되는 게임 콘솔의 상업적 가치의 많은 부분은 게임 콘솔 상에서 실행되는 게임 소프트웨어에 의해 발생되는 라이센싱 수입에서 비롯된다. 따라서, 부트-업 프로세스 중에 로딩되는 기계 명령어는 소프트웨어의 불법 복사물이 게임 콘솔 상에서 실행되는 것을 방지하는 기능을 수행하고, 전자 게임용 게임 콘솔의 사용과 관련한 생산업체의 정책을 강제한다. 어떤 사용자는 소프트웨어의 불법 복사물의 실행을 제한하거나, 게임 콘솔상에 그러한 정책을 강제하는 제한을 게임 콘솔 사용시에 과한 도전 또는 달갑지 않은 제한으로 바라보는 경향이 있다. 그러한 사용자는 게임 콘솔 회로 및 소프트웨어를 "해킹(hacking)"하여 이러한 제한을 극복하기 위한 노력을 한다. 예를 들어, 이러한 제한을 회피하는 하나의 방법은 게임 콘솔 상에서 실행되는 부트-업 프로세스로 하여금 어떠한 변화가 일어난 변경된 소프트웨어 커널(altered software kernel)을 로딩하도록 하는 것이다. 이러한 변화에 의해 게임 콘솔 생산업체에 의해 부과된 제한이 제거되는데, 이로 인하여 생산업체는 게임 콘솔이 사용되는 방법에 관한 제어를 상실할 수 있고, 그것에 의해 소프트웨어 게임의 불법 복제물이 게임 콘솔 상에서 실행된다면 수입 손실을 입을 수 있다. 따라서, 해커가 부트-업 프로세스 중에 변경된 소프트웨어 커널을 사용할 수 있도록 하는 것을 방지하기 위한 실질적인 노력이 게임 콘솔 생산업체에 의해 수행되는 것이 보통이다.
부트-업을 해야만 하는 전자 장치를 채용하는 다른 기술 분야에도 유사한 문제가 존재한다. 예를 들어, 사용자가 납부하는 월 사용료에 기초하여 수신되는 채널을 한정하는 위성 텔레비전 수신기 생산업체는 소비자가 라이센스 조건에 따라서만 전자 장치를 사용할 수 있도록 하기 위하여, 그 제품의 보안 정책이나 그 제품의 사용과 관련된 정책이 준수될 수 있도록 보증하여야만 한다. 해커는 위성 수신기의 처리기로 하여금 사용자가 시청하기 위하여 지불한 텔레비전 채널을 결정하도록 하는 코드를 변경할 수 있을지 모르며, 그것에 의해 라이센스 요금을 적절하게 지불하지 않고서도 모든 채널을 수신하여 시청하는 것이 가능해진다.
따라서, 전자 장치의 부트-업 중에 오직 허가된 소프트웨어 코드만이 실행되도록 보증하는 것이 바람직하다. 사용되는 어떠한 기술도 변경 또는 대체된 기계 명령어 세트가 전자 장치의 부트-업 중에 실행되도록 의도된 허가된 소프트웨어로 대체되는 것은 방지해야 하며, 이에 따라서 전자 장치를 생산 및/또는 최종 사용자에게 공급하는 회사의 기능과 정책을 전자 장치가 수행하도록 보증해야 한다. 해커가 전자 장치의 부트-업시 로딩되는 코드 내에 포함되어 있는 전자 장치의 사용과 관련한 제한 및 정책을 무력화하는 것을 방지하는 데에 사용되는 공지된 접근법은, 완전히 성공적이지 못하다는 것이 명백하다. 대체 소프트웨어 코드를 포함하는 애드-인 회로 카드(add-in circuit card)를 사용함으로써, 공지된 보안 접근법은 회로 카드를 전자 장치의 회로에 결합하는 해커에 의해 적어도 부분적으로 무력화될 수 있다. 전자 장치의 부트-업 프로세스 중에 선택 코드가 삽입되어 실행되는 것을 방지하기 위하여 더 안전하고 엄격한 접근법을 분명히 필요로 한다.
일반적으로 본 발명은 프로세서를 포함하고, 전자 장치의 다른 기능이 수행될 수 있도록 초기에 전압을 가하거나 리셋할 때에 부트-업을 해야 하는 거의 어떠한 전자 장치에도 적용될 수 있다. 그러한 장치에서는 자주, 그 장치의 동작 중에 사용되는 비밀 정보(proprietary information)를 보호하고, 부트-업 프로세스 중에 전자 장치의 동작이나 응용과 관련한 정책을 파괴하기 위한 무허가 코드가 실행되는 것을 방지하는 것이 중요하다.
전자 장치의 원하는 정책 및 기능을 파괴하기 위하여 대체될 가능성이 가장 높은 소자 중의 하나는 전자 장치가 사용되는 방법을 정의하는 기계 명령어가 저장되는 비휘발성 메모리(non-volatile memory)이다. 따라서, 본 발명은 그러한 메모리 내의 기계 명령어를 포함하는 코드가 허가된 것인지(즉, 코드가 변경되지 않거나, 또는 코드가 전자 장치의 원하는 기능 및 정책을 변화시키는 기계 명령어로 대체되지 않는 것인지) 확인하려는 시도를 한다. 본 발명에서, 허가된 코드는 사전 정의된 부분{프리로더(preloader)라고 함}을 포함한다. 이 사전 정의된 부분은, 심지어 허가된 코드의 나머지에 변화가 일어나거나 전자 장치가 부트-업이 되지 않을 때에도, 변함이 없어야 한다.
처음에 코드의 사전 정의된 부분이 허가된 것인지를 보증하는 것으로 절차가 수행된다. 이 절차에서, 사전 정의된 부분은 해시(hash)되거나 첫 번째 해시 값을 발생시킨다. 그 후 제1 해시 값은, 코드의 사전 정의된 부분이 허가된 것인지를 검증하기 위하여, 전자 장치의 회로 소자 내에서 유지되고, 코드가 저장되는 메모리로부터 분리되어 있는 저장된 해시 값과 비교된다. 제1 해시 값이 저장된 해시 값과 동일하다면 코드의 사전 정의된 부분의 실행이 가능하고, 그렇지 않다면 전자 장치의 부트-업은 종결된다. 코드의 사전 정의된 부분이 실행 가능하다면 제2 해시 값을 결정하기 위하여 실질적으로 모든 코드가 해시된다. 전자 서명은 코드의 사전 정의된 부분과는 다른 부분에 포함된다. 그 후 제2 해시 값은 서명의 신빙성을 보증하기 위하여 전자 서명을 검증한다. 전자 서명이 신빙성이 있다고 검증되면 코드 실행이 가능하고, 그렇지 않으면 전자 장치의 부트-업은 종결된다.
제1 해시 값과 저장된 해시 값을 비교하기 위하여, 회로 소자의 비휘발성 저장 부분에서 유지되는 초기 코드(initial code)가 실행된다. 이 초기 코드는 저장된 해시 값을 포함하고 그래픽 프로세서 내에 유지되는 것이지만, 저장된 해시 값은 음성 프로세서, 입력 프로세서, 출력 프로세서, 통신 프로세서 또는 전자 서명 프로세서와 같은 다른 형태의 보조 프로세서 내에서 유지될 수 있다는 것이 예상된다. 실제로, 초기 코드 및 예상되는 해시 값을 초기 코드를 실행하는 프로세서 내에 유지하는 것이 더욱 바람직하다. 초기 코드는 실행되어 사전 정의된 부분을 해시하고, 제 1 해시 값과 저장된 해시 값을 비교한다. 본 발명의 바람직한 형태로는, 초기 코드가 펌웨어(firmware) 내에서 사전 결정된 바이트 수로서 영구적으로 정의되는 것이다. 부가적으로, 코드의 사전 정의된 부분은 코드 내에서 사전 결정된 위치에 배치되는 사전 결정된 바이트 수를 포함하는 것이 바람직하다. 저장된 해시 값이 일치되게 변화되지 않는다면, 그 때의 저장된 해시 값은 제 1 해시 값과 동일하지 않기 때문에 코드의 사전 정의된 부분의 크기 및 내용은 변경될 수 없음이 분명하다.
또한 사전 정의된 코드는 전자 서명을 검증하는 데에 사용되는 공개 키(public key)를 포함하며, 코드의 암호로 된 커널 부분이 해독되게 하는 기계 명령어를 갖는다. 그 후 해독된 커널은 실행되어 전자 장치의 부트-업을 완료한다. 사전 정의된 코드는 코드의 커널 부분의 해독을 구현하기 위하여 스트리밍 사이퍼(streaming cipher)를 사용한다.
본 발명의 또 다른 형태는 코드가 허가된 것인지 여부를 결정하기 위하여 전자 장치의 부트-업 중에 액세스되는 기계 명령어를 포함하는 코드가 저장되는 메모리 매체에 관한 것이다. 메모리 매체는 일반적으로 위에서 언급한 바와 같이, 커널 부분, 부트 로더 부분, 프리로더 부분 및 전자 서명을 포함한다.
본 발명의 또 다른 형태는 동작하기 위하여 부트-업 되어야만 하는 전자 장치에 관한 것이다. 전자 장치는 복수의 기계 명령어가 저장되는 비휘발성 메모리를 포함한다. 비휘발성 메모리는 주 부분과 사전 정의된 내용, 크기 및 위치를 갖는 프리로더 부분을 포함한다. 프로세서는 비휘발성 메모리에 결합되어 부트-업 프로세스 중에 기계 명령어를 실행한다. 부트스트랩 코드 펌웨어 요소(bootstrap code firmware element)는 해싱 알고리즘 및 예상되는 해시 값을 정의하는 기계 명령어를 지정한다. 부트스트랩 코드 펌웨어의 기계 명령어는 전자 장치의 부트-업 중의 초기에 프로세서에 의해 실행되는데, 이 명령어에 의해 프로세서는 프리로더 부분을 해싱하고 예상되는 해시 값에 대한 결과를 비교한다. 전자 장치 및 그 기능에 대한 다른 상세한 내용은 위에서 언급한 방법의 단계와 대개 일치한다.
게임 콘솔과 같은 전자 장치에 본 발명을 채용함으로써, 부트-업 프로세스 중에 실행되는 기계 명령어를 변화시키거나 다른 메모리를 다른 기계 명령어로 치환하려고 시도한다면 전자 장치가 성공적으로 부트-업 되는 것이 방지될 것임에 명백하다. 따라서, 본 발명은 전자 장치의 부트-업 중에 오직 허가된 코드만이 실행되는 것을 보증함으로써, 일반적으로 전자 장치에 의해 구현될 기본적인 기능을 변경하지 못하게 하거나, 전자 장치에 의해 구현될 원하는 정책이 회피되는 것을 방지한다.
전술한 본 발명의 형태 및 많은 부수의 장점은 다음과 같은 첨부된 도면을 함께 고려하여 다음의 상세한 설명을 참조하여 본원 발명을 더 잘 이해함으로써 더손쉽게 이해될 것이다.
도 1은 본 발명을 채용하는 게임 콘솔의 등축 개략도.
도 2a는 도 1의 게임 콘솔에 포함되는 몇 개의 기능 소자의 블록도.
도 2b는 부트-업 되고 프로세서 및 메모리를 포함하는 일반적인 전자 장치의 기능 블록도.
도 3은 본 발명에서 구성되는 바와 같은 메모리의 부분을 나타내는 개략도.
도 4는 본 발명에서 구현되는 논리를 나타내는 흐름도.
<도면의 부호의 설명>
100 : 전자 게임 시스템
102 : 게임 콘솔
104a 및 104b : 제어기
106 : 휴대용 매체 드라이브
108 : 광학 저장 디스크
110 : 슬롯
112 : 파워 버튼
114 : 배출 버튼
120 : 음성/영상 인터페이스 케이블
130 : USB 케이블
132a 및 132b : 썸스틱(thumbstick)
134 : D-패드
138 : 트리거
140 : 착탈식 또는 휴대용 메모리 유닛
본 발명의 처음의 바람직한 실시예가 실제로 게임 콘솔상에서 사용된다고 해도, 본 발명이 게임 콘솔 용도로 한정하려는 의도가 아니라는 것은 강조되어야 한다. 본 발명은 코드를 리버스 엔지니어링(reverse engineering) 하려고 하고 전자 게임용 게임 콘솔의 사용과 관련한 라이센싱 제한 및 정책을 회피하고자 하는 사용자에게 비밀 정보가 노출되지 않도록 하는 것을 보증하기 위하여 개발되었다.
도 1에 도시된 바와 같이, 전형적인 전자 게임 시스템(100)은 게임 콘솔(102) 및 제어기(104a 및 104b)와 같은 네 개의 사용자 입력 장치까지 지원하는 시스템을 포함한다. 게임 콘솔(102)은 내부 하드 디스크 드라이브(도시되어 있지 않음) 및 광학 저장 디스크(108)로 대표되는, 다양한 형태의 휴대용 광학 저장 매체를 지원하는 휴대용 매체 드라이브(106)를 포함한다. 적합한 휴대용 저장 매체의 예로서는 DVD 디스크 및 CD-ROM 디스크가 있다. 이 게임 시스템에서, 게임 프로그램은 DVD 디스크 상의 게임 콘솔용으로 배치되는 것이 바람직하나, 그 대신에 다른 저장 매체가 데이터 보안 정책을 강제하고 시스템에 입력되는 디지털 데이터의 신빙성을 보증하기 위하여, 본 발명을 이용하는 본 시스템 또는 다른 형태의 시스템 상에서 사용될 수 있다는 것을 예상할 수 있다.
슬롯의 숫자와 배열이 변경될 수 있어도, 게임 콘솔(102)의 전면에는 제어기에 연결하거나 지원하기 의한 네 개의 슬롯(110)이 있다. 파워 버튼(112) 및 배출 버튼(114) 또한 게임 콘솔(102)의 전면에 배치된다. 파워 버튼(112)은 게임 콘솔에 공급되는 전력을 제어하며, 배출 버튼(114)은 휴대용 매체 드라이브(106)의 트레이(도시되지 않음)를 교대로 개폐하여 저장 디스크(108)의 삽입 및 추출이 가능하게 함으로써 디스크 상의 디지털 데이터가 게임 콘솔에 의해 사용 목적으로 판독될 수 있게 한다.
게임 콘솔(102)은 음성/영상(audio/video; A/V) 인터페이스 케이블(120)을 통하여 텔레비전 또는 다른 디스플레이 모니터 또는 스크린(도시되지 않음)에 연결된다. 파워 케이블 플러그(122)이 일반적인 교류 라인 소스(도시되지 않음)에 연결될 때, 이 플러그를 통하여 게임 콘솔에 전력이 전달된다. 게임 콘솔(102)은 예를 들어, 일반적인 전화 모뎀, 또는 더 바람직하게는 광대역 접속을 경유하여 인터넷과 같은 네트워크를 통하여 데이터를 전달하는 데이터 연결자(124)를 더 구비할 수 있다.
각 제어기(104a 및 104b)는 리드(또는 대안으로서 무선 인터페이스)를 통하여 게임 콘솔(102)에 결합된다. 개시된 구현예에서, 제어기는 USB(Universal Serial Bus; 이하 USB)와 호환 가능하고 USB 케이블(130)을 통하여 게임 콘솔(102)에 연결된다. 게임 콘솔(102)은 게임 소프트웨어와 인터페이스하고 이 소프트웨어를 제어하기 위한 광범위한 사용자 디바이스 중의 어떠한 것이라도 구비할 수 있다. 제어기(104a)의 모든 상세한 내용이 도 1에 도시되지 않았지만, 각 제어기(104a 및 104b)는 두 개의 썸스틱(thumbstick, 132a 및 132b), D-패드(134), 버튼(136) 및 두 개의 트리거(trigger, 138)를 구비한다. 이 제어기는 단지 예시적인 것으로서, 다른 게임 입출력 기구가 게임 콘솔(102)과의 사용을 위하여 도 1에 도시된 것을 대체하거나 추가될 수 있다.
착탈식 또는 휴대용 메모리 유닛(memory unit; 이하 MU, 140)은 추가의 착탈식 저장 장치를 제공하기 위하여 제어기(104)에 선택적으로 삽입될 수 있다. 휴대용 MU는, 다른 제어기에 휴대용 MU를 삽입하는 것에 의해 다른 콘솔 상에서의 플레이를 위하여, 사용자가 게임 파라미터를 저장하고 그 변수를 전달할 수 있도록 한다. 개시된 구현예에서, 각 제어기는 두 개의 MU를 수용하도록 구성되어 있으나, 더 많거나 더 적은 수의 MU가 그 대신 사용될 수 있다.
게임 시스템(100)으로는 게임을 하거나, 음악을 듣거나 비디오를 볼 수 있다. 다른 기능은 하드 디스크 드라이브 상에 저장된 디지털 데이터 또는 드라이브(106) 내의 광학 저장 디스크(108), 온라인 소스 또는 메모리 유닛(140)으로부터 판독되는 디지털 데이터를 사용하여 구현될 수 있는 것이 예상된다. 게임 콘솔은 전자 게임 디스크의 불법 복사물이 게임 콘솔 상에서 사용되지 않도록 설계된다. 또한, 게임 콘솔에 의해 소정의 정책이 강제되기도 한다. 예를 들어, 한 지역에서 판매된 소프트웨어는 다른 지역에서 판매된 게임 콘솔 상에서 실행되는 것이 배제될 수 있다. 또한, 비디오 DVD의 복사 방지를 위한 산업 표준 방식(MACROVISIONTM)이 게임 콘솔 소프트웨어에 의해 구현되기도 한다.
어떤 사용자는 게임 콘솔에 의해 구현된 이러한 기능적 한정과 정책을 무력화하고 싶어한다. 이러한 한정 및 정책을 회피하려는 시도로서 하나의 방법은 게임 콘솔 내에 집적 회로(이하, IC) 또는 모듈을 설치하는 것으로, 이러한 IC 또는모듈은 원래의 ROM 및 그 안에 저장되어 있는 게임 콘솔의 부트-업시 사용되는 코드를 수정판으로 대체하는 것이다. 이러한 대체 모듈에서 기계 명령어에 대한 변경은 부트-업 프로세스 중에 동작하도록 의도되고, 게임 콘솔의 생산 또는 설계업체에 의해 부과되어 불법 복사물 및 비디오 DVD의 복사를 방지하는 제한, 그리고, 게임 콘솔의 다른 기능적인 측면 및/또는 정책을 제거 또는 변화시킨다. 그러나, 본 발명은 부트-업 프로세스를 변경하는 불법 대체 ROM 모듈의 삽입을 극도로 어렵게 하며, 게임 콘솔의 부트-업 중에 다른 코드나 불법 코드를 사용하려는 시도가 감지되면 부트-업 프로세스를 종결시킨다.
부트-업 프로세스와 관련한 비밀 정보가 밝혀지는 것을 방지하고 부트-업 프로세스 중에 변경된 또는 다른 코드가 사용되는 것을 방지하기 위하여, 부트-업 중에 실행되는 기계 명령어의 적어도 일부분은 게임 콘솔 또는 다른 전자 장치의 ROM 내에 포함되는 대부분의 기계 명령어로부터 분리된 상태가 유지되어야 한다. 일반적으로, 전자 장치의 하우징(housing)이 개방됨으로써, 전자 장치를 해킹하기 위하여 새로운 연결 및 변경이 물리적으로 이루어지는 것이 가능하다면, 전자 장치의 인쇄 회로 보드 상의 IC, 트레이스, 연결점 및 비아(via)에는 손쉽게 액세스할 수 있다. 누군가가 인쇄 회로 보드에 액세스하지 못하게 하는 것이 어렵다고 하여도, 본 발명은 인쇄 회로 보드 상에 장착된 IC 중 하나에 펌웨어로서 내장된 기계 명령어에 액세스하는 것을 더욱 곤란하게 한다. 바람직하게, 이러한 용도로 사용되는 IC는 전자 장치의 생산업체만을 위하여 주문 제작되는 것이므로, 그 공급업체로부터 일반 공중이 쉽게 입수할 수 없다. 또한, 이러한 의도로 사용되는 IC는 전자장치의 동작에 필수적이어야 하고, 그 결과 IC 내에 내장된 펌웨어에 액세스하려는 시도가 이루어진다면, IC의 동작, 그리고, 이에 따라서 전자 장치의 동작에 역효과를 가져올 가능성이 아주 높다.
도 2A는 게임 콘솔 (100) 내에 포함된 다수의 IC 소자를 나타낸다. CPU(202)는 주 프로세서이고 게임 콘솔의 대부분의 처리 기능을 수행하는 데에 사용된다. CPU(202)는 대부분의 프로세서가 그러하듯이 게임 콘솔이 구현하도록 설계된 여러 가지 기능이 수행될 수 있도록 초기에 부트-업 되어야 한다. CPU(202)는 NVIDIA Corporation에 의해 생산되고 NV2A 칩이라고 명명된 버스 및 메모리 제어기 칩(204)이기도 한 맞춤형 그래픽 프로세서에 양방향으로 연결된다. NV2A 칩은 RAM(206) 및 또 다른 NVIDIA 맞춤형 칩인 매체 통신 프로세서(media communications processor, 이하 MCP, 208)에 연결되는데, 이 MCP는 음성 신호 프로세서 성능을 가지며 시스템 메모리에 연결되거나, 또한 데이터 통신을 위한 USB 포트 및 이더네트(Ethernet) 포트에 연결되기도 한다. MCP(208) 내에는 부트스트랩 코드(212)를 포함하는 512 바이트의 펌웨어가 포함된다. 부트스트랩 코드(212)는 실제로 MCP(208) 내의 다른 층 밑에 내장되고(buried), 단순하게 이 모듈을 디캐핑(decapping) 하여 액세스할 수 없다. 부트스트랩 코드(212)에 물리적으로 액세스하기 위하여, 다른 피개층(overlying layers)을 제거하는 것이 필요한데, 이는 MCP 모듈을 사실상 파괴하고, 그렇게 함으로써 게임 콘솔을 쓸모 없게 만든다. 더군다나, MCP(208)는 게임 콘솔 생산업체에 맞춤형으로 제조되기 때문에, 공개 시장에서 다른 생산업체가 구할 수 없다. 심지어 부트스트랩 코드가 펌웨어를 포함하는 기계 명령어를 볼 수 있도록 만드는 어떠한 방법에 의해 액세스된다고 하더라도, 본 발명은 부트 순서를 변경할 수 없게 한다. MCP(208)는 ROM(210)와 결합하는데, 이 ROM은 게임 콘솔(100)의 부트-업 중에 사용되는 대부분의 기계 명령어를 포함한다.
본 발명의 더 일반적인 응용예가 도 2B에 소자와 관련하여 도시된다. 맞춤 CPU(220)는 CPU 내부의 CPU의 다른 층 밑에 "내장된" 펌웨어 부트스트랩 코드(222)를 포함할 수 있다는 것이 예상된다. 도 2B에 도시된 바와 같이, CPU(222)는 RAM(206) 및 ROM(210)에 결합된다. 부트스트랩 코드(222)는 CPU(220) 내의 펌웨어를 포함하기 때문에, CPU의 처리부와 부트스트랩 코드(222) 사이의 신호는 일반적으로 액세스가 불가능하다. 따라서, 도 2B에 도시된 실시예에서, 부트스트랩 코드(222)에 액세스하여 그 내용을 결정하는 것은 더더욱 어렵고, 따라서 도 2B의 실시예는 도 2A의 실시예와 관련하여 더욱 개선된 보안 방법을 제공한다.
도 3은 본 발명에서 사용되는 ROM(210)의 다른 부분을 도시한다. 게임 콘솔(100)에 사용되는 바람직한 실시예에서, ROM(210)은 256 kB(kilobyte) 메모리 모듈을 포함한다. ROM(210)에는 암호화되지 않은 프리로더(230)가 포함된다. 바람직한 실시예에서 프리로더(230)는 대략 11 kB의 고정된 크기를 가지는데, ROM(210) 내에서 프리로더의 내용, 크기 및 위치는 모두 사전 정의되어 있다. 프리로더(230)가 암호화된 공개 키(231)를 포함하는 것을 주목하는 것이 중요하다. 다음의 설명으로부터 명백한 바와 같이, 펌웨어 부트스트랩 코드(212)에 대해 상응하는 변화가 일어나지 않는다면, 프리로더(230)의 내용이 변화하지 않게 유지하는필요성 또한 중요하다. ROM(210) 또한 암호화되지 않은 부트 로더(232)를 포함하기도 한다. 부가적으로, ROM(210)은 전자 서명(234) 및 대칭 키(236)를 포함한다. ROM(210)의 훨씬 더 많은 부분이 커널(238)을 포함하는 기계 명령어를 저장하는데 사용된다. 커널(238)은 압축되고 암호화되어 있다. 커널(238) 내에 포함되는 기계 명령어는 많은 기능을 정의하고 게임 콘솔(100)의 동작과 관련한 정책을 확립한다. 끝으로, 칩세트 초기화 코드(240)가 포함되고, 게임 콘솔에 처음 전력을 공급할 때 이 코드가 실행된다.
도 4는 게임 콘솔(102)에 처음 전압을 가하거나 리셋될 때 구현되는 논리적 단계를 나타낸다. 단계(250)는 ROM(210)에서 칩세트 초기화 코드를 실행하는 단계이다. 칩세트 초기화 코드(240) 내에 포함된 기계 명령어는 암호화되어 있지 않다; 이 명령어는 게임 콘솔의 완전한 아키텍쳐(architecture)에 적합한 특정 배치 정보(specific configuration information) 및 특정 배치 순서를 정의한다. 칩세트 배치를 수행하는데 필요한 기계 코드는 부트스트랩 코드 내에 포함된다; 특정 값 및 순서는 칩세트 초기화 코드의 부분이다. 또한, CPU의 초기화 순서는 부트스트랩 코드 내에 포함되며 칩세트 초기화 코드의 나머지에 앞서 실행된다. 다음으로, 블록(252)에서, 펌웨어 부트스트랩 코드(212) 내에 포함된 기계 명령어는 MCP(208)에 내장되고, ROM(210) 내의 프리로더(230)의 해시 값을 결정하는 단방향 해싱 알고리즘(one-way hashing algorithm)을 실행한다. 위에서 특별히 언급한 바와 같이, 게임 콘솔(100) 생산시 그 내부에 설치되는 원래의 ROM(210)에서, 프리로더(230)는 ROM(210) 내에서 특정 내용, 크기 및 위치를 가질 것이다. 따라서, 프리로더(230) 내에 포함된 기계 명령어의 해싱에 의해 얻게되는 해시 값은, 프리로더(230)가 변경되지 않거나 불법 코드에 의해 대체되지 않는 한, 항상 동일한 값을 유지하여야 한다. 바람직한 실시예에서, SHA-1 단방향 해시 알고리즘이 프리로더를 해시하기 위하여 적용된다. 또한, 그 대신에 MD5 해싱 알고리즘이 사용될 수도 있으며, 당업자는 또 다른 해싱 일고리즘이 사용될 수 있다는 것을 이해할 것이다. 사용되는 해싱 알고리즘은 부트스트랩 코드(212)의 기계 명령어 내에 포함된다.
또한 부트스트랩 코드(212) 내에는 프리로더(230)의 예상 해시 값과 대칭 키가 포함된다. 단계(254)는 부트스트랩 코드로부터 저장된 해시 값을 로드한다. 부트스트랩 코드(212) 내의 기계 명령어는 부트스트랩 코드로부터의 저장된 해시 값과 단계(252)에서 방금 결정된 프리로더(230)의 해시 값을 비교한다. 결정 단계(256)에서 저장된 해시 값과 결정된 실제 해시 값이 동일한지가 비교된다. 동일하지 않다면, 부트스트랩 코드(212) 내의 기계 명령어는 단계(258)를 구현하여, 게임 콘솔(102)의 부트-업 프로세스가 종료된다. 따라서, 다른 ROM이 원래의 ROM을 대체하거나, 새롭게 대체된 ROM 또는 불법 ROM에 단방향 해시 알고리즘으로 처리할 때 예상 해시 값을 생성하는 동일한 프리로더 부분이 포함되지 않는다면, 결정 단계(256)가 프리로더(230)의 변경을 검출하여 부트-업 프로세스를 종료할 것임이 명백하다.
저장된 예상 해시 값이 결정된 실제 해시 값과 동일하다고 가정하면, 단계(260)는 ROM(210)의 프리로더 코드 부분을 포함하는 기계 명령어를 실행한다. 프리로더 기계 명령어가 게임 콘솔 내에 그 생산업체에 의해 설치된 ROM에 원래 포함된 프리로더 코드와 동일한 것이 명백하기 때문에, 이 단계는 구현될 수 있다.
다음으로, 단계(262)에서 전자 서명(234)을 제외한 전체 ROM(210)의 해시 값을 결정한다. 또한 프리로더는 단방향 해시 값을 결정하는 기계 명령어를 포함하기도 하며, 바람직하게는 ROM(210)의 내용의 대부분{전자 서명은 해시된 ROM(210)의 내용 중에 포함되지 않는다}의 해시 값을 결정하기 위하여, SHA-1 또는 MD5 해싱 알고리즘(또는 공지된 단방향 해시 알고리즘 중의 하나)의 어느 하나를 다시 한번 사용한다. 동일한 해시 알고리즘이 적용되는 한, 기계 명령어가 변화되거나 불법 기계 명령어로 대체되지 않는다면, 그 결과는 항상 동일해야만 한다. ROM(210)에서 해시된 기계 명령어에서 단지 단일 비트가 변화되어도 최종 해시 값은 실질적으로 변화될 것이다.
단계(264)에서, ROM(210)의 공개 키(231)가 전자 서명(234)에 적용되어 전자 서명의 대응 값을 생성한다(공개 키가 적용될 수 있기 전에, MCP의 부트스트랩 코드에 저장된 대칭 키에 의해 전자 서명이 해독되지만, 공개 키가 대칭 키로 암호화되지 않는 경우 이 단계는 필요로 하지 않는다). 다음으로, 프리로더(230)의 기계 명령어는 공개 키가 도 4의 결정 단계(266)에서 서명을 검증할 수 있는지 여부를 결정한다; 이 단계는 단계(264)로부터의 값이 단계(262)에서 결정된 ROM의 해시 값과 동일한지 여부를 결정한다. 동일하지 않다면, ROM의 원래 내용이 생성된 이후 ROM의 서명이 변화된 것은 확실하기 때문에, 단계(268)에서 부트-업 동작이 종료된다. 공지된 바와 같이, 전자 서명이 원래 게임 콘솔의 생산업체에게만 알려진 개인 키(private key)를 사용하여 서명된다면, 그 서명의 유효성은 공개 키를 사용하여 확안될 수 있다. 누군가가 게임 콘솔(100)을 해킹하여 ROM(210)의 임의의 부분을 변경하려 한다면, 결정 단계(266)에서 해시 값의 변화가 검출되며, 이로 인해 부트-업 프로세스가 단계(268)에서 종료될 것이다. 역으로, 전자 서명이 ROM의 해시와 부합한다면, ROM 내용이 허가된 원래 내용과 동일하다는 사실이 명백할 것이다.
단계(264)에서의 전자 서명으로부터 결정된 값이 결정 단계(266)에서 ROM의 해시를 검증한다고 가정하면, 단계(270)에서 커널(238)이 RAM(206)으로 복사된 후에 RAM에서 압축이 해제되고 암호화가 해제되도록 하여, 부트-업이 완료될 수 있도록 한다. 프리로더(230)는 부트 로더를 해독하는 기계 명령어를 포함한다. MCP에서 유지되는 펌웨어 부트스트랩 코드의 대칭 키는 ROM(210)의 대칭 키(236)와 결합하여, 프리로더의 기계 명령어에 따라 부트 로더를 해독하는 데에 사용되는 새로운 대칭 코드를 생성한다.
부트 로더는 당업자에게 잘 알려져 있는 RC4 스트림 사이퍼 알고리즘에 따라서, 압축되고 암호화된 커널의 스트림 사이퍼 해독을 구현하는 기계 명령어를 포함한다. RAM(206)에서 압축 해제되고 해독된 커널을 포함하는 기계 명령어는 CPU(202)에 의해 실행되어, 예를 들어, 오직 허가된 게임 소프트웨어만 로딩하고, 비디오 DVD의 복사를 방지하는 알고리즘을 실행하며, 허가된 부트-업 코드에 의해 정의된 대로 게임 콘솔의 생산업체에 의해 요구되는 다른 모든 정책 및 기능을 수행하는 것을 보증하는 등, 게임 콘솔의 모든 기능을 수행할 수 있다.
본 발명은 바람직한 실시예와 연결되어 설명된다고 해도, 당업자라면 다음의특허청구범위 내에서 다양한 변경이 이루어질 수 있다는 사실을 이해할 것이다. 따라서, 본 발명의 범위는 어떤 방법으로도 위의 설명에 의해 제한되지 않으며, 그 대신에 다음의 특허청구범위를 참조하여 전적으로 결정될 것이다.
본 발명은 프로세서를 포함하는 전자 장치를 안전하게 부트-업 하는 것에 관한 것으로, 이러한 전자 장치를 부트-업 할 때에는 오직 원하는 기계 명령어만이 프로세서에 의해 실행되도록 함으로써, 대체 또는 선택 기계 명령어가 부트-업 프로세스 중에 실행되는 것을 방지하는 효과가 있다.

Claims (29)

  1. 전자 장치의 부트-업(boot-up) 중에 실행하기 위해 제공되는 코드가 허가된 것인지를 결정하는 방법으로서, 상기 방법은
    (a) 상기 코드의 사전 정의된 부분을 해싱하여 제1 해시 값(hash value)을 생성하는 단계;
    (b) 상기 코드의 상기 사전 정의된 부분이 허가된 것인지를 검증하기 위하여, 상기 전자 장치의 회로 소자 내에서 유지되고, 상기 코드가 저장되는 메모리로부터 분리되어 있는 저장된 해시 값과 상기 제1 해시 값을 비교하는 단계; 및
    (c) 상기 제1 해시 값이 상기 저장된 해시 값과 동일하면 상기 코드의 상기 사전 정의된 부분의 실행을 가능하게 하고, 동일하지 않다면 상기 전자 장치의 상기 부트-업을 종결하는 단계를 포함하며,
    (d) 허가된 상기 코드의 상기 사전 정의된 부분을 실행하는 단계는
    (i) 실질적으로 모든 코드를 해싱하여 제2 해시 값을 결정하는 단계; 및
    (ii) 상기 코드 내에 포함된 전자 서명(digital signature)이 상기 제2 해시 값과 부합하는지를 검증하고, 만약 부합한다면 상기 코드의 실행을 가능하게 하고, 만약 부합하지 않는다면 상기 전자 장치의 상기 부트-업을 종결하는 단계를 수행하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제1 해시 값과 상기 저장된 해시 값을 비교하는 단계는 상기 회로 소자의 비휘발성 저장 부분에 유지되고, 상기 저장된 해시 값을 포함하는 초기 코드(initial code)를 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 초기 코드는 보조 프로세서에서 유지되는 것을 특징으로 하는 방법.
  4. 제2항에 있어서,
    상기 초기 코드는,
    (a) 그래픽 프로세서;
    (b) 음성 프로세서;
    (c) 입력 프로세서;
    (d) 출력 프로세서;
    (e) 통신 프로세서; 및
    (f) 디지털 신호 프로세서
    중의 하나에서 유지되는 것을 특징으로 하는 방법.
  5. 제2항에 있어서,
    상기 초기 코드는 상기 초기 코드를 실행하는 프로세서에서 유지되는 것을특징으로 하는 방법.
  6. 제2항에 있어서,
    상기 초기 코드는 실행되어 청구항 1의 단계 (a)에서 단계 (c)를 수행하는 것을 특징으로 하는 방법.
  7. 제2항에 있어서,
    상기 초기 코드는 펌웨어(firmware)에서 사전 결정된 바이트의 수로서 영구적으로 정의되는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 코드의 상기 사전 정의된 부분은 상기 코드 내에 사전 결정된 위치에서 사전 결정된 바이트 수를 가지는 프리로더 코드(preloader code)를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 전자 서명을 검증하는 단계는 상기 프리로더 코드에 포함된 공개 키(public key)로 수행되는 것을 특징으로 하는 방법.
  10. 전자 장치의 부트-업 중에 액세스되는 기계 명령어를 포함하는 코드 - 상기기계 명령어는 상기 코드가 허가된 것인지를 결정하는 데에 부분적으로 유용함 -가 저장되는 메모리 매체에서, 상기 메모리 매체는
    (a) 상기 코드를 포함하는 상기 기계 명령어의 실질적으로 대부분이 저장되는 커널 부분(kernel portion);
    (b) 상기 전자 장치의 실행을 위하여, 상기 커널 부분에 포함된 기계 명령어를 로드하도록 적응된 부트 로더;
    (c) 사전 정의된 바이트 수 및 사전 정의된 내용을 가지며, 상기 메모리 매체 상에 사전 결정된 위치에 배치되는 프리로더 부분; 및
    (d) 상기 코드가 허가된 것인지를 결정하는 용도로서 상기 코드의 해싱에 의해 얻어지는 해시 값과 비교하기 위한 확인 해시 값(confirming hash value)을 제공하는 전자 서명 부분을 포함하는 것을 특징으로 하는 메모리 매체.
  11. 제10항에 있어서,
    상기 프리로더 부분에 포함된 공개 키는 상기 서명 부분을 해독하는 데에 사용 가능한 것을 특징으로 하는 메모리 매체.
  12. 제10항에 있어서,
    상기 메모리 매체는 읽기 전용 메모리(ROM)를 포함하는 것을 특징으로 하는 메모리 매체.
  13. 제10항에 있어서,
    상기 프리로더 부분은 단방향 해싱 알고리즘(one-way hashing algorithm)을 정의하는 기계 명령어를 포함하는 것을 특징으로 하는 메모리 매체.
  14. 제10항에 있어서,
    상기 프리로더 부분은 상기 프리로더 부분 내에 저장된 공개 키를 사용하여 상기 전자 서명의 검증을 가능하게 하는 기계 명령어를 포함하는 것을 특징으로 하는 메모리 매체.
  15. 제10항에 있어서,
    상기 커널 부분은 부호화(encode)되는 것을 특징으로 하는 메모리 매체.
  16. 제10항에 있어서,
    상기 프리로더 부분은 상기 커널 부분의 스트림 사이퍼 해독(stream cipher decoding)을 수행하는 기계 명령어를 포함하는 것을 특징으로 하는 메모리 매체.
  17. 제10항에 있어서,
    상기 프리로더 부분은 대응하는 개인 키(private key)로 서명된 서명을 검증하는 용도로 적어도 하나의 공개 키를 포함하는 것을 특징으로 하는 메모리 매체.
  18. 동작하기 위해서는 부트-업 되어야 하는 전자 장치로서,
    (a) 다수의 기계 명령어가 저장된 비휘발성 메모리로서, 주 부분과 내용, 크기 및 위치에 관하여 사전 설정된 프리로더 부분을 포함하는 비휘발성 메모리;
    (b) 상기 비휘발성 메모리에 결합되어 상기 기계 명령어를 수행하는 프로세서; 및
    (c) 해싱 알고리즘 및 예상 해시 값을 정의하는 기계 명령어를 특정하는 부트스트랩(bootstrap) 코드 펌웨어 요소를 포함하며, 상기 부트스트랩 코드 펌웨어의 상기 기계 명령어는 상기 전자 장치의 부트-업 중의 초기에 상기 프로세서에 의해 실행되어, 상기 프로세서가
    (i) 상기 비휘발성 메모리의 상기 프리로더 부분을 해시하여 프리로더 해시 값을 결정하고;
    (ii) 상기 예상 해시 값을 상기 프리로더 해시 값과 비교하며;
    (iii) 상기 프리로더 해시 값과 상기 예상 해시 값이 동일하지 않다면 상기 전자 장치의 상기 부트-업을 종결하도록 하는 것을 특징으로 하는 전자 장치.
  19. 제18항에 있어서,
    상기 비휘발성 메모리의 상기 프리로더 부분은, 상기 프로세서가
    (a) 상기 비휘발성 메모리를 해시하여, 메모리 해시 값을 생성하고;
    (b) 상기 메모리 해시 값과 상기 프리로더 부분에 포함된 예상 메모리 해시값을 비교하며;
    (c) 상기 메모리 해시 값과 상기 예상 메모리 해시 값이 동일하지 않다면 상기 전자 장치의 상기 부트-업을 종결하게 하는 기계 명령어를 포함하는 것을 특징으로 하는 전자 장치.
  20. 제19항에 있어서,
    상기 예상 메모리 해시 값은 상기 비휘발성 메모리 내의 전자 서명으로서 포함되나, 상기 비휘발성 메모리가 해시될 때는 배제되는 것을 특징으로 하는 전자 장치.
  21. 제20항에 있어서,
    상기 비휘발성 메모리의 상기 프리로더 부분의 상기 기계 명령어는 상기 예상 메모리 해시 값을 결정하기 위하여 상기 프로세서가 상기 전자 서명을 더 검증하게 하는 것을 특징으로 하는 전자 장치.
  22. 제20항에 있어서,
    상기 비휘발성 메모리의 상기 프리로더 부분의 상기 기계 명령어는 상기 전자 서명을 검증하기 위하여 상기 프로세서가 상기 프리로더 부분에 포함된 공개 키를 더 적용하게 하는 것을 특징으로 하는 전자 장치.
  23. 제18항에 있어서,
    상기 비휘발성 메모리의 상기 주 부분의 적어도 일부분은 암호화되고, 상기 비휘발성 메모리의 상기 프리로더 부분은 상기 프로세서가 암호화된 상기 비휘발성 메모리의 상기 주 부분의 상기 적어도 일부분을 해독하도록 하는 기계 명령어를 포함함으로써, 상기 전자 장치의 상기 부트-업이 상기 비휘발성 메모리의 상기 주 부분에 포함된 기계 명령어에 의해 지속될 수 있도록 하는 것을 특징으로 하는 전자 장치.
  24. 제18항에 있어서,
    상기 부트스트랩 코드 펌웨어 요소는 상기 전자 장치의 다른 소자 내에 배치되고, 상기 전자 장치가 동작 가능하지 않도록 충분하게 상기 다른 소자를 손상시키지 않으면 실제 물리적으로 액세스가 가능하지 않는 것을 특징으로 하는 전자 장치.
  25. 제18항에 있어서,
    상기 다른 소자는 보조 프로세서를 포함하는 것을 특징으로 하는 전자 장치.
  26. 제18항에 있어서,
    상기 다른 소자는
    (a) 그래픽 프로세서;
    (b) 음성 프로세서;
    (c) 입력 프로세서;
    (d) 출력 프로세서;
    (e) 통신 프로세서; 및
    (f) 디지털 신호 프로세서
    중의 하나를 포함하는 것을 특징으로 하는 전자 장치.
  27. 제18항에 있어서,
    상기 부트스트랩 코드 펌웨어 요소는 상기 프로세서 내에 배치되는 것을 특징으로 하는 전자 장치.
  28. 제18항에 있어서,
    상기 비휘발성 메모리의 상기 주 부분의 적어도 일부분은 암호화되고, 상기 비휘발성 메모리의 상기 프리로더 부분은,
    (a) 단방향 해싱 알고리즘을 정의하는 기계 명령어;
    (b) 상기 비휘발성 메모리의 상기 주 부분의 상기 적어도 일부분을 해독하는 기계 명령어;
    (c) 부트 로더를 포함하는 기계 명령어; 및
    (d) 최소한 하나의 공개 키
    를 포함하는 것을 특징으로 하는 전자 장치.
  29. 제18항에 있어서,
    상기 전자 장치는 게임 콘솔을 포함하는 것을 특징으로 하는 전자 장치.
KR1020030036264A 2002-06-07 2003-06-05 전자 장치, 이 전자 장치의 부트­업 동안 실행하기 위해 제공되는 코드가 허가된 것인지를 결정하기 위한 방법 및 이 코드가 저장되는 메모리 매체 KR100965717B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/165,519 2002-06-07
US10/165,519 US6907522B2 (en) 2002-06-07 2002-06-07 Use of hashing in a secure boot loader

Publications (2)

Publication Number Publication Date
KR20030095301A true KR20030095301A (ko) 2003-12-18
KR100965717B1 KR100965717B1 (ko) 2010-06-24

Family

ID=29549377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030036264A KR100965717B1 (ko) 2002-06-07 2003-06-05 전자 장치, 이 전자 장치의 부트­업 동안 실행하기 위해 제공되는 코드가 허가된 것인지를 결정하기 위한 방법 및 이 코드가 저장되는 메모리 매체

Country Status (10)

Country Link
US (2) US6907522B2 (ko)
EP (1) EP1369764B1 (ko)
JP (1) JP4052978B2 (ko)
KR (1) KR100965717B1 (ko)
CN (1) CN100492277C (ko)
AT (1) ATE453162T1 (ko)
AU (1) AU2003204376B2 (ko)
DE (1) DE60330627D1 (ko)
HK (1) HK1058561A1 (ko)
TW (1) TWI292556B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832454B2 (en) 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification
KR101427646B1 (ko) * 2007-05-14 2014-09-23 삼성전자주식회사 펌웨어의 무결성 검사 방법 및 장치
KR101502032B1 (ko) * 2008-03-06 2015-03-12 삼성전자주식회사 보안 기능을 갖는 프로세서 장치

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675152B1 (en) * 2000-09-13 2004-01-06 Igt Transaction signature
US20020147918A1 (en) * 2001-04-05 2002-10-10 Osthoff Harro R. System and method for securing information in memory
US8708828B2 (en) 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US7931533B2 (en) 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
US6902481B2 (en) 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
EP1338939A1 (en) * 2002-02-22 2003-08-27 Hewlett-Packard Company State validation device for a computer
US8140824B2 (en) * 2002-11-21 2012-03-20 International Business Machines Corporation Secure code authentication
US7194626B2 (en) * 2002-11-21 2007-03-20 International Business Machines Corporation Hardware-based secure code authentication
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US8784195B1 (en) * 2003-03-05 2014-07-22 Bally Gaming, Inc. Authentication system for gaming machines
EP1465038B1 (en) * 2003-04-03 2013-03-27 STMicroelectronics (Research & Development) Limited Memory security device for flexible software environment
US7171563B2 (en) * 2003-05-15 2007-01-30 International Business Machines Corporation Method and system for ensuring security of code in a system on a chip
US7725740B2 (en) * 2003-05-23 2010-05-25 Nagravision S.A. Generating a root key for decryption of a transmission key allowing secure communications
US7475254B2 (en) * 2003-06-19 2009-01-06 International Business Machines Corporation Method for authenticating software using protected master key
US7434231B2 (en) * 2003-06-27 2008-10-07 Intel Corporation Methods and apparatus to protect a protocol interface
FR2867929B1 (fr) * 2004-03-19 2007-03-02 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique
JP4544901B2 (ja) * 2004-04-19 2010-09-15 株式会社日立製作所 記憶制御システム及びブート制御システム
US20050262337A1 (en) * 2004-05-24 2005-11-24 Siemens Vdo Automotive Corporation Method and device for determining flash software compatibility with hardware
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7694121B2 (en) * 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
US7937593B2 (en) * 2004-08-06 2011-05-03 Broadcom Corporation Storage device content authentication
DE102004047191A1 (de) * 2004-09-29 2006-04-06 Robert Bosch Gmbh Manipulationsgeschütztes Mikroprozessorsystem und Betriebsverfahren dafür
US8954738B2 (en) * 2004-11-22 2015-02-10 Core Wireless Licensing, S.a.r.l. Method and device for verifying the integrity of platform software of an electronic device
KR100654446B1 (ko) * 2004-12-09 2006-12-06 삼성전자주식회사 보안 부팅 장치 및 방법
US7725703B2 (en) * 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
US8181020B2 (en) * 2005-02-02 2012-05-15 Insyde Software Corp. System and method for securely storing firmware
US7722468B2 (en) * 2005-03-09 2010-05-25 Igt Magnetoresistive memory units as read only memory devices in gaming machines
US7736234B2 (en) * 2005-03-09 2010-06-15 Igt MRAM as critical event storage for powered down gaming machines
US20060205513A1 (en) * 2005-03-09 2006-09-14 Igt MRAM as nonvolatile safe storage for power hit and ESD tolerance in gaming machines
US20060236122A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Secure boot
CN102142070B (zh) * 2005-09-14 2013-11-06 桑迪士克科技公司 存储卡控制器固件的硬件驱动器完整性检查
US8966284B2 (en) 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
KR100675186B1 (ko) 2005-09-29 2007-01-30 엘지전자 주식회사 사용자식별모듈의 사용자식별정보 해시 기능을 가지는이동통신 단말기 및 그 부팅 방법
WO2007041501A2 (en) * 2005-09-30 2007-04-12 Phoenix Technologies Ltd. Secure execution environment by preventing execution of unauthorized boot loaders
US20070101156A1 (en) * 2005-10-31 2007-05-03 Manuel Novoa Methods and systems for associating an embedded security chip with a computer
US20090285280A1 (en) 2005-11-29 2009-11-19 Thomas Patrick Newberry Method and Apparatus for Securing Digital Content
EP2030124A4 (en) * 2006-05-24 2012-12-12 Safend Ltd METHOD AND SYSTEM FOR DEFENSE OF SECURITY SOFTWARE IN A USER'S COMPUTER
EP1868127A1 (en) * 2006-06-15 2007-12-19 Thomson Telecom Belgium Device comprising a public and a private area and a method for securely initializing the device
US8117429B2 (en) * 2006-11-01 2012-02-14 Nokia Corporation System and method for a distributed and flexible configuration of a TCG TPM-based local verifier
US8254568B2 (en) 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8291480B2 (en) 2007-01-07 2012-10-16 Apple Inc. Trusting an unverified code image in a computing device
US20080178257A1 (en) * 2007-01-20 2008-07-24 Takuya Mishina Method for integrity metrics management
US7617493B2 (en) * 2007-01-23 2009-11-10 International Business Machines Corporation Defining memory indifferent trace handles
KR101209252B1 (ko) * 2007-02-02 2012-12-06 삼성전자주식회사 전자기기의 부팅 방법 및 부팅 인증 방법
JP4903818B2 (ja) * 2007-02-09 2012-03-28 株式会社エヌ・ティ・ティ・ドコモ 端末装置及びソフトウエア検査方法
US20080222428A1 (en) * 2007-03-07 2008-09-11 Andrew Dellow Method for Securing Authenticity of Data in a Digital Processing System
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
WO2009013825A1 (ja) * 2007-07-25 2009-01-29 Panasonic Corporation 情報処理装置、及び改竄検証方法
US8068614B2 (en) * 2007-09-28 2011-11-29 Intel Corporation Methods and apparatus for batch bound authentication
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US8166304B2 (en) * 2007-10-02 2012-04-24 International Business Machines Corporation Support for multiple security policies on a unified authentication architecture
US20090172420A1 (en) * 2007-12-31 2009-07-02 Kabushiki Kaisha Toshiba Tamper resistant method and apparatus for a storage device
AU2009201191A1 (en) * 2008-03-26 2009-10-15 Aristocrat Technologies Australia Pty Limited A gaming machine
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
DE102008021567B4 (de) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
US9122864B2 (en) * 2008-08-05 2015-09-01 International Business Machines Corporation Method and apparatus for transitive program verification
US20100064125A1 (en) * 2008-09-11 2010-03-11 Mediatek Inc. Programmable device and booting method
US9653004B2 (en) * 2008-10-16 2017-05-16 Cypress Semiconductor Corporation Systems and methods for downloading code and data into a secure non-volatile memory
US8806220B2 (en) 2009-01-07 2014-08-12 Microsoft Corporation Device side host integrity validation
DE102010005726A1 (de) * 2010-01-26 2011-07-28 Giesecke & Devrient GmbH, 81677 Verfahren zum Zuordnen eines tragbaren Datenträgers, insbesondere einer Chipkarte, zu einem Terminal
KR20120092222A (ko) 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
JP2014170255A (ja) * 2011-06-29 2014-09-18 Panasonic Corp セキュアブート方法
GB2509001B (en) * 2011-09-30 2020-08-05 Hewlett Packard Development Co Option read-only memory use
TW201346764A (zh) * 2012-05-11 2013-11-16 Ibase Technology Inc 開機保全軟體方法
GB2512376A (en) 2013-03-28 2014-10-01 Ibm Secure execution of software modules on a computer
US9671945B2 (en) * 2013-12-17 2017-06-06 American Megatrends, Inc. Techniques of launching virtual machine from thin client
US20150286823A1 (en) * 2014-04-07 2015-10-08 Qualcomm Incorporated System and method for boot sequence modification using chip-restricted instructions residing on an external memory device
GB2525409B (en) * 2014-04-24 2016-11-02 Ibm Enabling an external operating system to access encrypted data units of a data storage system
US9195831B1 (en) 2014-05-02 2015-11-24 Google Inc. Verified boot
US10387652B2 (en) * 2015-04-17 2019-08-20 Hewlett Packard Enterprise Development Lp Firmware map data
US20160314288A1 (en) * 2015-04-22 2016-10-27 Qualcomm Incorporated Method and apparatus for write restricted storage
US10176094B2 (en) * 2015-06-30 2019-01-08 Renesas Electronics America Inc. Common MCU self-identification information
BR112017023452B1 (pt) * 2015-07-31 2022-12-20 Hewlett-Packard Development Company, L.P. Aparelho compreendendo suprimentos de imageamento
WO2017066194A1 (en) 2015-10-11 2017-04-20 Renesas Electronics America Inc. Data driven embedded application building and configuration
US9916452B2 (en) 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10365961B2 (en) * 2016-09-09 2019-07-30 Dell Products L.P. Information handling system pre-boot fault management
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
CN106778283B (zh) 2016-11-21 2020-04-07 惠州Tcl移动通信有限公司 一种系统分区关键数据的保护方法及系统
US11263326B2 (en) 2017-06-02 2022-03-01 Apple Inc. Method and apparatus for secure system boot
US10417429B2 (en) 2017-06-02 2019-09-17 Apple Inc. Method and apparatus for boot variable protection
WO2020027815A1 (en) * 2018-07-31 2020-02-06 Hewlett-Packard Development Company, L.P. Executing instructions
CN112805703A (zh) 2018-10-12 2021-05-14 三菱电机株式会社 软件验证装置、软件验证方法以及软件验证程序
CN110262840B (zh) * 2019-06-17 2023-01-10 Oppo广东移动通信有限公司 设备启动监控方法及相关产品
US11960608B2 (en) * 2021-04-29 2024-04-16 Infineon Technologies Ag Fast secure booting method and system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4654480A (en) * 1985-11-26 1987-03-31 Weiss Jeffrey A Method and apparatus for synchronizing encrypting and decrypting systems
WO1993017388A1 (en) * 1992-02-26 1993-09-02 Clark Paul C System for protecting computers via intelligent tokens or smart cards
US5643086A (en) * 1995-06-29 1997-07-01 Silicon Gaming, Inc. Electronic casino gaming apparatus with improved play capacity, authentication and security
AU6282096A (en) * 1995-06-29 1997-01-30 Silicon Gaming, Inc. Electronic casino gaming system with improved play capacity, authentication and security
JP3293760B2 (ja) 1997-05-27 2002-06-17 株式会社エヌイーシー情報システムズ 改ざん検知機能付きコンピュータシステム
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6081890A (en) * 1998-11-30 2000-06-27 Intel Corporation Method of communication between firmware written for different instruction set architectures
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6988250B1 (en) * 1999-02-15 2006-01-17 Hewlett-Packard Development Company, L.P. Trusted computing platform using a trusted device assembly
US6625730B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Development Company, L.P. System for validating a bios program and memory coupled therewith by using a boot block program having a validation routine
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101427646B1 (ko) * 2007-05-14 2014-09-23 삼성전자주식회사 펌웨어의 무결성 검사 방법 및 장치
KR101502032B1 (ko) * 2008-03-06 2015-03-12 삼성전자주식회사 보안 기능을 갖는 프로세서 장치
US8832454B2 (en) 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification

Also Published As

Publication number Publication date
AU2003204376A1 (en) 2004-01-08
DE60330627D1 (de) 2010-02-04
US20030229777A1 (en) 2003-12-11
ATE453162T1 (de) 2010-01-15
CN1469238A (zh) 2004-01-21
AU2003204376B2 (en) 2009-11-26
EP1369764A3 (en) 2005-05-18
CN100492277C (zh) 2009-05-27
TW200401228A (en) 2004-01-16
JP4052978B2 (ja) 2008-02-27
JP2004013905A (ja) 2004-01-15
US6907522B2 (en) 2005-06-14
EP1369764A2 (en) 2003-12-10
US7676840B2 (en) 2010-03-09
KR100965717B1 (ko) 2010-06-24
HK1058561A1 (en) 2004-05-21
US20050138270A1 (en) 2005-06-23
EP1369764B1 (en) 2009-12-23
TWI292556B (en) 2008-01-11

Similar Documents

Publication Publication Date Title
KR100965717B1 (ko) 전자 장치, 이 전자 장치의 부트­업 동안 실행하기 위해 제공되는 코드가 허가된 것인지를 결정하기 위한 방법 및 이 코드가 저장되는 메모리 매체
US8751786B1 (en) Method and integrated circuit for loading and executing firmware based on programing of one-time programmable memory
US6735696B1 (en) Digital content protection using a secure booting method and apparatus
CA2543572C (en) Tamper-resistant trusted virtual machine
US9613215B2 (en) Method and system for implementing a secure chain of trust
US9363481B2 (en) Protected media pipeline
US20020116632A1 (en) Tamper-resistant computer system
TWI489308B (zh) 未知安全金鑰下開機影像之安全更新
JP2003337632A (ja) ポリシーを実行された安全なデジタルデータフォーマットおよびコード
JP2004532495A (ja) 長期にリニューアル可能なセキュリティを提供するコンテンツセキュリティレイヤ
CN113656086A (zh) 安全存储及加载固件的方法及电子装置
US9129139B2 (en) Solid state memory and method for protecting digital contents by interrupting copying or accessing and proceeding only upon user verification or authentication
JP2009517972A (ja) デジタルコンテンツを保護する方法及び装置
KR101238496B1 (ko) 보호 컴퓨팅 환경
JP2003143141A (ja) ソフトウェアにより制御される装置
CN1553315A (zh) 在安全引导装载程序中使用散列技术
US8661234B2 (en) Individualized per device initialization of computing devices in avoidance of mass exploitation of vulnerabilities

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
LAPS Lapse due to unpaid annual fee