KR101066779B1 - 컴퓨팅 장치의 보안 부팅 - Google Patents

컴퓨팅 장치의 보안 부팅 Download PDF

Info

Publication number
KR101066779B1
KR101066779B1 KR1020117014059A KR20117014059A KR101066779B1 KR 101066779 B1 KR101066779 B1 KR 101066779B1 KR 1020117014059 A KR1020117014059 A KR 1020117014059A KR 20117014059 A KR20117014059 A KR 20117014059A KR 101066779 B1 KR101066779 B1 KR 101066779B1
Authority
KR
South Korea
Prior art keywords
code image
code
image
block
processing logic
Prior art date
Application number
KR1020117014059A
Other languages
English (en)
Other versions
KR20110075050A (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 KR20110075050A publication Critical patent/KR20110075050A/ko
Application granted granted Critical
Publication of KR101066779B1 publication Critical patent/KR101066779B1/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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user

Abstract

장치에 내장된 코드를 실행하여 장치의 메모리에 로딩되는 코드 이미지를 검증하는 방법 및 장치에 대하여 기재한다. 코드 이미지는 신뢰성 있는 코드 이미지로서 검증된 후에 실행될 수 있다. 내장 코드는 장치의 보안 ROM(read only memory) 칩에 저장될 수 있다. 한 실시예에서, 코드 이미지의 검증은 보안 ROM 칩 내에 저장된 키에 기초한다. 키는 각 장치에 고유할 수 있다. 키로의 접근은 해당 보안 ROM 칩에 의하여 제어될 수 있다. 장치는 검증된 코드 이미지를 실행한 후 동작 환경의 구축을 완료할 수 있다.

Description

컴퓨팅 장치의 보안 부팅{SECURE BOOTING A COMPUTING DEVICE}
본 발명은 일반적으로 전자 보안에 관한 것이다. 특히, 본 발명은 컴퓨팅 장치를 안전하게 부팅하는 것에 관한 것이다.
사람들의 일상 생활에 점점 더 많은 컴퓨팅 장치가 사용되면서, 보안성이 사용자와 콘텐츠 제공자에게 일반적인 관심사가 되어 왔다. 바이러스, 웜(worm), 트로이 목마, 주민번호 도용, 소프트웨어 및 미디어 콘텐츠 침해, 그리고 데이터 파괴 위협을 이용한 강탈이 만연하고 있다. 통상적으로, 이러한 공격은 시스템, 콘텐츠 제공자, 사용자 또는 애플리케이션에 있어서는 사적 영역일 장치 자원으로 접근을 노출시키는 악의적인 소프트웨어 코드를 설치하고 실행하는 것과 관련이 있다.
예를 들어, 해커 프로그램은, 헐리우드 영화 또는 음악과 같은 오디오/비디오 콘텐츠를 재생하도록 개발된 소비자 컴퓨팅 장치에서 실행되고 있는 경우, 그 A/V 콘텐츠를 안전하게 하는데에 이용되는 암호화를 크래킹(cracking)하는 것을 잠재적으로 허용할 수 있다. 따라서, 이러한 장치에는 통상적으로 높은 수준의 보안성이 필요하다.
운영 체제는 이러한 공격을 방어하기 위한 약간의 보안 특성을 제공할 수 있다. 하지만, 운영 체제의 보안 특성은 종종 매일 발생하는 새로운 공격을 따라가지 못한다. 더욱이, 컴퓨팅 장치를 부팅할 때, 보안 특성이 아직 초기화되지 않을 수 있고 바이패스(bypass) 및/또는 탬퍼링(tampering)에 취약하다.
이러한 공격을 방어하는 다른 방법은 공장에서 컴퓨팅 장치가 출하된 후 어떠한 부가적인 소프트웨어를 설치 및/또는 실행하는 것을 완전히 봉쇄하는 것이다. 하지만, 이러한 엄격한 조치는 컴퓨팅 장치의 잠재적인 능력 및 융통성을 심각하게 제한한다. 컴퓨팅 장치의 업그레이드에 비용이 들면서 어려운 것은 물론, 장치 외부로부터의 소프트웨어 코드를 다운로드하고 실행할 필요가 점차 많아지는 애플리케이션을 활용할 수 없게 된다. 또한, 일반적으로 급속한 기술의 발전은 컴퓨팅 장치 내에 최초에 설치된 애플리케이션 또는 기능을 매우 단시간내에 구식으로 만들어 버린다.
따라서, 현재의 보안 조치는 컴퓨팅 장치 내의 애플리케이션 및 콘텐츠를 보호하는 확실한 해법을 제시하지 못함은 물론 장치에 대한 소프트웨어 및 펌웨어를 업데이트하는 융통성을 제공하지 못한다.
장치에 내장된 코드를 실행하여 장치의 메모리에 로딩되는 코드 이미지를 검증하는 방법 및 장치에 대하여 본원에 기재한다. 코드 이미지는 신뢰성 있는 코드 이미지인 것으로 검증된 후에 실행될 수 있다. 내장된 코드는 장치의 보안 ROM(read only memory)등의 보안 저장 영역에 저장될 수 있다. 한 실시예에서, 코드 이미지의 검증은 보안 저장 영역내에 저장된 키에 기초한다. 키는 각 장치에 고유할 수 있다. 키로의 접근은 연관된 보안 저장 영역에 의하여 제어될 수 있다. 장치는 검증된 코드 이미지를 실행한 후 동작 환경의 구축을 완료할 수 있다.
대체 실시예에서, 코드 이미지는 장치의 동작 환경을 제공하는 운영 체제(OS)의 커널을 나타낼 수 있다. 코드 이미지는 장치의 대용량 저장 장치로부터 로딩될 수 있다. 코드 이미지는, 보안 ROM 내에 저장되어 있는, 장치를 고유하게 식별하는 키를 이용하여 성공적으로 검증된 경우, 장치의 메인 메모리에서 실행되어 장치의 동작 환경을 구축하도록 OS의 커널을 설정할 수 있다. 한 실시예에서, 장치는 휴대용 장치이다.
대체 실시예에서, 장치의 보안 ROM으로부터 내장된 제1 실행 가능 이미지를 실행하여 장치와 연계된 대용량 저장 장치를 초기화시킴으로써 대용량 저장 장치로 접근을 가능하게 한다. 보안 ROM은 장치를 고유하게 식별하는 고유 식별자(ID)를 저장할 수 있다. 대용량 저장 장치를 성공적으로 초기화시킨 경우, 보안 ROM 내에 내장된 고유 식별자(ID)를 이용하여, 대용량 저장 장치에 저장된 제2 실행 가능 이미지를 찾아 내고 검증할 수 있다. 성공적으로 검증한 후, 제2 실행 가능 이미지를 실행하여 상기 장치에서 저레벨 하드웨어 초기화를 수행할 수 있다. 제2 실행 가능 이미지가, 제3 실행 가능 이미지를 찾아 내고 실행하도록, 성공적으로 실행되어, 장치에 대한 운영 체제(OS)의 커널 이미지를 검증하고 로딩할 수 있다. 장치에 대한 OS의 나머지를 초기화하고 구성하도록, 상기 커널 이미지가 성공적으로 실행될 수 있다.
본 발명의 다른 특징은 첨부 도면과 이하의 상세한 설명으로부터 명백해질 것이다.
본 발명은 예를 통하여 설명되며 유사한 도면 부호는 유사한 요소를 나타내는 첨부 도면의 형상으로 제한되지 않는다.
도 1은 보안 부팅을 위한 시스템 구성 요소의 한 실시예를 나타내는 블록도이다.
도 2는 보안 부팅을 실행하는 시스템 구성 요소의 한 실시예를 나타내는 블록도이다.
도 3은 보안 부팅을 행하는 처리의 한 실시예를 나타내는 흐름도이다.
도 4는 UID(Unique Identifier) 및 시드열(seed string)에 기초하여 코드 이미지로부터 서명(signature)을 생성하는 처리의 한 실시예를 나타내는 흐름도이다.
도 5는 호스트가 보안적으로 장치를 부팅하는 네트워크 연결의 한 실시예를 나타내는 블록도이다.
도 6은 호스트에서 장치로 동작 환경을 보안적으로 복원하는 처리의 한 실시예를 나타내는 흐름도이다.
도 7은 호스트에서 장치로 동작 환경의 최소 보안 복원을 행하는 처리의 한 실시예를 나타내는 상태도이다.
도 8은 호스트에서 장치로 소프트웨어 구성 요소를 보안적으로 복구하는 처리의 한 실시예를 나타내는 흐름도이다.
도 9는 호스트에서 장치로 애플리케이션을 보안적으로 업데이트하는 처리의 한 실시예를 나타내는 흐름도이다.
도 10은 미인증 코드 이미지를 실행하는 처리의 한 실시예를 나타내는 흐름도이다.
도 11은 여기서 기재하는 실시예와 함께 사용될 수 있는 통상의 컴퓨터 시스템의 한 예를 나타낸다.
도 12는 본 발명의 한 실시예와 함께 사용될 수 있는 데이터 처리 시스템의 한 예를 나타낸다.
컴퓨팅 장치의 보안 부팅 방법 및 장치에 대하여 여기에 기재한다. 이하의 설명에서, 특정한 여러 상세는 본 발명의 실시예의 설명을 통하여 제공되도록 기재된다. 하지만, 본 발명의 실시예는 이러한 특정 상세 없이도 실시될 수 있음은 당업자에게 자명하다. 다른 경우, 공지의 구성요소, 구조 및 기술은 본 기재의 이해를 명확히 하기 위해서 상세히 나타내지 않았다.
명세서 한 실시예("one embodiment", "an embodiment")라는 언급은 그 실시예와 관련하여 기재되는 특별한 특징, 구조 또는 특성이 본 발명의 적어도 한 실시예에 포함될 수 있음을 의미한다. 명세서의 여러 곳에서 나타나는 "한 실시예에서"라는 것은 반드시 동일한 실시예를 지칭하지 않는다.
첨부하는 도면에서 나타낸 처리는 하드웨어(예를 들어, 회로, 전용 로직 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기계 상에서 실행되는 것과 같은), 또는 이들 둘의 조합으로 이루어지는 처리 로직에 의하여 수행된다. 처리가 일부 순차적인 동작의 관점에서 기술하지만, 기술된 동작의 일부는 상이한 순서로 수행될 수 있다. 또한, 일부 동작은 순차적이 아닌 병렬적으로 수행될 수 있다.
"호스트(host)" 및 "장치(device)"라는 용어는 호스트에 대한 폼 팩터(form factor) 대 장치에 대한 특정 폼 팩터를 지칭하기 보다는 일반적으로 데이터 처리 시스템을 지칭하고자 한다.
한 실시예에서, 장치의 보안 부팅은 장치 내의 주요 자원이 동작 환경에서 확실히 보호되도록 설계될 수 있다. 한편, 장치의 보안 부팅은 장치 내에서 실행되는 소프트웨어를, 불필요한 관리, 재료(material) 및/또는 실행 비용이 필요 없이 상이한 정책 및 절차에서 업데이트하고 설치할 수 있는 융통성을 제공할 수 있다. 한 실시예에서, 장치를 부팅하는 보안은 장치 내에 함께 집적되는 ROM(Read Only Memory), 또는 보안 ROM이라 불리는 보안 저장 영역 내에 저장된 코드 및 데이터에 의하여 이루어진다. 보안 ROM의 내용은 장치 제조 단계에서 저장될 수 있다. 보안 ROM은 장치를 고유하게 식별하는 UID(Unique Identifier)와 관련될 수 있다. 장치에서 실행되는 소프트웨어 코드의 신뢰성은 UID에 기초하는 보안 ROM을 통해 서명되는 코드 이미지(code image)로부터 기원할 수 있다.
한 실시예에 따르면, 장치의 보안 ROM은 신뢰 개체(trusted entity)의 기본적인 증명인 지문을 포함할 수 있다. 신뢰 개체를 통해 증명된 코드 이미지는 안심하고 지문에 기초한 보안 ROM을 통한 증명 처리에 따라 장치 내에서 실행되도록 할 수 있다. 한 실시예에서, 장치의 보안 부팅은 보안 ROM에 따라 신뢰 개체에 결합될 때 신뢰 소프트웨어 코드를 복원할 수 있다. 보안 ROM은 저장된 장치 UID에 기초한 지문을 통하여 증명된 코드 이미지로 신뢰를 확장할 수 있다. 한 실시예에서, 보안 ROM은 외부 연결로부터 다운로드되는 코드 이미지를 증명함으로써 애플리케이션 소프트웨어를 복원할 수 있다. 다른 실시예에서, 보안 ROM은 외부 연결을 통해 다운로드되는 신뢰 소프트웨어 코드에 의하여 장치 내에 저장된 사용자 데이터를 강제로 클리닝(cleaning up)할 수 있다.
도 1은 보안 부팅을 위한 시스템 구성요소의 한 실시예를 나타내는 블록도이다. 시스템(100)은 장치 내의 하나 이상의 칩에 내장될 수 있다. 한 실시예에서, 시스템(100)은 메모리 구성요소(103)와 연결되는 칩(105)을 포함할 수 있다. 칩(105)은 SRAM(Static Random Access Memory) 또는 EDRAM(Embedded Dynamic Random Access Memory)와 같은 RAM 구성요소(111)를 포함할 수 있다. 코드 이미지는 장치에 의하여 실행되기 전에 메모리 구성요소(103)에 로딩될 수 있다. 코드 이미지는 실행될 때 사용자 또는 시스템 애플리케이션을 지원하는 장치에 대한 사용자 애플리케이션, 시스템 애플리케이션 및/또는 동작 환경(예를 들어, 운영 체제)을 작동시킬 수 있다. 한 실시예에서, 메모리 구성요소(103)는 DDR(Double Data Rate) 메모리를 포함한다. 칩(105)은 코드(115) 및 관련 데이터(117)를 저장하는 ROM(113)을 포함할 수 있다. 코드(115)는 암호 작성 해시 기능(cryptographic hash function) SHA-1, SHA-22, SHA-256, SHA-384 및 SHA-512와 같은 SHA(Secure Hashing Algorithm) 해싱 기능의 구현을 포함할 수 있다. 또한, 코드(115)는 AES(Advanced Encryption Standard) 암호화와 같은 데이터 암호화 알고리즘의 구현을 포함할 수 있다. 한 실시예에서, 코드(115)는 장치에 대한 하드웨어를 초기화시켜서 USB(Universal Serial Bus)와 같은 접속 또는 통신 인터페이스를 지원할 수 있다. 코드(115)는 장치의 클록 레이트(clock rate)를 변경시키는 명령어를 포함할 수 있다. 본 출원 전체에서, SHA 및 AES는 설명을 위한 예로만 사용됨을 유의하여야 하며, 다른 해싱 및/또는 암호화 기술을 또한 이용할 수 있음을 인식할 것이다.
한 실시예에서, 코드(115)는 메모리 구성요소(103) 또는 RAM(111)과 같은 장치 메모리에 코드 이미지를 로딩시킬 수 있다. 코드 이미지는 칩(105)과 연결되는 저장 장치 구성요소(109)로부터 로딩될 수 있다. 저장 장치 구성요소(109)는 플래시 메모리, 예를 들어, NAND 플래시, NOR 플래시 또는 다른 대용량 저장 장치(예: 하드 디스크) 구성요소일 수 있다. 다른 실시예에서, 코드 이미지는 장치 외부의 소스로부터 접속 인터페이스(101)를 통하여 로딩될 수 있다. 접속 인터페이스(101)는 USB 접속, 이더넷 접속 또는 무선 네트워크 접속(예: IEEE 802.1x) 등에 기초할 수 있다. 한 실시예에서, 코드(115)는 코드 이미지가 신뢰 코드만을 포함하는지 검증한 후에 장치 메모리에서 저장 장치 구성요소(109)로 코드 이미지를 저장시킬 수 있다.
장치가 장치 메모리에 로딩된 코드 이미지를 실행시키기 전에, 코드(115)는 코드 이미지가 확실히 신뢰할만한지 확인하기 위해 로딩된 코드 이미지에 대한 검증 동작을 수행할 수 있다. 한 실시예에서, 코드(115)는 ROM 내의 데이터 섹션(117), UID(119) 및/또는 GID(Global Identifier)(121)과 같이 칩(105) 내에 포함된 데이터에 따라 로딩된 코드 이미지를 검증할 수 있다. UID(119)는 각 장치에 있어서 고유한 것일 수 있다. 한 실시예에서, 모든 장치는 단일 GID(121)와 연관되어 있다. 한 실시예에서, GID는 코드 이미지를 암호화하는데 사용하여 코드 검사(code inspection)를 방지할 수 있다. ROM(115)의 데이터 섹션(117)은 공개 키 인증서(public key certification)와 같은 신뢰 개체로부터의 서명에 기초한 지문을 저장할 수 있다. 한 실시예에서, 개별 장치는 동일 신뢰 개체에 기초한 지문(123)을 포함할 수 있다.
도 2는 보안 부팅을 실행하는 시스템 구성요소의 한 실시예를 나타내는 블록도이다. 시스템(100)은 저장 장치 구성요소(109)로부터의 LLB(Low Level Boot) 코드 이미지(229)를 LLB(225)로서 RAM(111)에 로딩할 수 있다. LLB(225)는 시스템(100)의 장기 전력 관리에 관할 것일 수 있다. 한 실시예에서, LLB(225)는 시스템(100) 버전의 식별을 포함할 수 있다. 코드 이미지 LLB(225)는 코드(115)의 실행에 기초하여 로딩될 수 있다. 한 실시예에서, 코드 이미지 LLB(229)는 코드(115)의 실행을 통하여 코드 이미지 LLB(225)에 기초하여 RAM(111)으로부터 저장될 수 있다.
한 실시예에 따라, 코드 이미지 iBoot(227)는 LLB(225)의 실행에 따른 코드 이미지 iBoot(231)에 기초하여 저장 장치(109)로부터 메모리 구성요소(111)로 로딩될 수 있다. 코드 이미지 iBoot(231)는 시스템(100)을 수용하는 장치에 동작 환경을 제공하는 운영 체제에 대하여 하드웨어 초기화를 시킬 수 있다. 장치는 성공적인 부팅 후에 동작 환경에 진입할 수 있다. 동작 환경은 장치 내에서 실행되는 여러 사용자 및/또는 시스템 애플리케이션을 지원할 수 있다. 한 실시예에서, 코드 이미지 iBoot(231)는 장치의 대용량 저장 장치 구성요소를 동작시키고, 사용자 인터페이스용 그래픽 구성요소를 초기화시키며/시키거나 장치에 대한 화면 구성요소 등을 활성화시킬 수 있다. 코드 이미지 iBoot(231)는 코드 이미지 LLB(225)의 실행을 통하여 코드 이미지 iBoot(227)에 기초하여 RAM(111)으로부터 저장될 수 있다.
한 실시예에서, 코드 이미지 커널캐시(Kernelcache)(223)는 코드 이미지 커널캐시(233)에 기초하여 저장 장치(109)에서 메모리(103)로 로딩될 수 있다. 코드 이미지 커널캐시(223)는 장치에 대한 동작 환경을 지원하는 운영 체제의 커널의 일부일 수 있다. 한 실시예에서, 코드 이미지 커널캐시(223)는 커널 및 운영 체제 구성요소(235)를 저장 장치(109)로부터 메모리(103)로 로딩시킬 수 있다. 운영 체제 구성요소는 사용자 애플리케이션, 라이브러리, 그래픽 사용자 인터페이스 구성요소 및/또는 사용자 데이터(235)를 포함할 수 있다. 사용자 데이터는 음악, 이미지, 비디오 또는 장치 사용자와 관련된 다른 디지털 콘텐츠를 포함할 수 있다. 예를 들어, 이러한 사용자 데이터는 사용이 제한되는 DRM(digital right management) 부합 데이터일 수 있다. 코드 이미지 커널캐시(223)는 커널 및 운영 체제 구성요소(235)를 메모리(103)에 로딩시킬 수 있다. 한 실시예에서, 코드 이미지 커널캐시(223)는 커널이 메모리(103)에서 실행되기 전에 그 커널이 확실히 신뢰성이 있는지 검증 과정을 거칠 수 있다. 다른 실시예에서, 코드 이미지 커널캐시(223)는 운영 체제가 메모리(103)에서 실행되기 전에 그 운영 체제의 신뢰성 확보를 위한 검증 과정을 거칠 수 있다. 코드 이미지 커널캐시(223)는 UID(119) 또는 지문(123)에 기초하여 운영 체제 구성요소(235)가 신뢰성이 있는지를 결정하도록 실행될 수 있다. 한 실시예에서, 코드 이미지 커널캐시(223)는 GID(121)에 따라 메모리(103)에서 운영 체제 구성요소(235)를 복호화시킬 수 있다. 한 실시예에서, 코드 이미지 커널캐시(223)는 운영 체제 구성요소(235)를 메모리(103)에서 저장 장치(109)로 저장하도록 실행될 수 있다. 코드 이미지 커널캐시(223)는 운영 체제 구성요소(235)를 저장 장치(109)에 저장하기 전에 암호화할 수 있다.
한 실시예에서, UID(119)는 특권 모드(privileged mode)로 동작하는 일부 운영 체제 구성요소에 접근할 수 있다. 운영 체제의 커널은 애플리케이션이 특권 모드로 동작하는지에 따라 그 애플리케이션이 애플리케이션에 의한 UID(119)로의 접근을 거부 또는 승인할 수 있다. 한 실시예에서, 운영 체제의 커널은 애플리케이션의 해당 코드 이미지가 적정한 애플리케이션을 포함하는지에 기초하여 애플리케이션이 특권 모드로 동작할 수 있는지를 판단할 수 있다. DRM 시스템은 특권 모드로 동작하여 UID(119)에 기초하는 운영 체제 구성요소(235)의 사용자 데이터로의 접근을 제어할 수 있다. 애플리케이션은 DRM 시스템을 통하여 사용자 데이터에 접근할 수 있다. 일부 실시예에서, 운영 체제의 네트워크 유틸리티가 특권화될 수 있다. 네트워크 유틸리티는 기저 대역 칩과 같은 인터페이스 칩을 통하여 외부 자원과 장치를 연결시킬 수 있다. 다른 실시예에서, 바이러스 방지 소프트웨어는 특권 모드로 동작하는 운영 체제에 의하여 제공될 수 있다.
따라서, 시스템 내에서 실행되는 모든 소프트웨어 구성요소는 소프트웨어 구성요소가 어떤 소정의 조건을 충족하지 않으면[예를 들어, 신용 업체(trust vendor)에서 제공하거나 장치의 제조나 소프트웨어 구성요소의 시험과 같은 어떤 환경 하에서], 실행 전에 검증 또는 인증이 행해져야 한다. 한 실시예에서, 시스템에서의 보안 저장 영역의 설정은 소정 조건과 연관될 수 있다. 그 결과, DRM 부합 데이터와 같은 임의의 데이터는 적절한 검증 또는 인증이 없이는 접근이나 손상이 되지 않는다.
도 3은 보안 부팅을 수행하는 처리의 한 실시예를 나타내는 흐름도이다. 예를 들어, 처리(300)는 도 1의 시스템(100)에 의하여 수행될 수 있다. 한 실시예에 따르면, 장치의 부팅 처리시, 블록(301)에서 처리(300)의 처리 로직은 ROM 칩에서 명령어를 실행함으로써 장치 내에서 코드 이미지를 찾아낼 수 있다. 명령어는 도 1의 코드(115)에서와 같이 ROM 칩의 코드 섹션으로부터 읽어 올 수 있다. 코드 이미지는 장치의 메모리 구성요소 또는 저장 장치 구성요소에 저장될 수 있다. 메모리 구성요소는 RAM일 수 있다. 저장 장치 구성요소는 장치에 부착되는 플래시 메모리나 대용량 저장 장치일 수 있다. 한 실시예에서, 코드 이미지를 찾을 수 없는 경우, 블록(309)에서 부팅 처리는 인터럽트되고 장치는 DFU(Device Firmware Upgrade) 모드로 진입할 수 있다. 한 실시예에 따르면, 코드 이미지를 성공적으로 찾아낸 경우, 블록(303)에서 처리(300)의 처리 로직은 이 코드 이미지를 메모리에 로딩할 수 있다. 다른 실시예에서, 코드 이미지를 찾아낼 때 이 코드 이미지는 이미 로딩되어 있을 수 있다.
한 실시예에 따르면, 블록(305)에서, 처리(300)의 처리 로직은 로딩된 코드 이미지가 도 1의 UID(119)와 같은 장치와 관련된 UID에 기초하여 신뢰성이 있는지를 검증할 수 있다. 처리(300)의 처리 로직은 코드 이미지로부터 헤더값(header value)을 추출할 수 있다. 코드 이미지 내의 헤더값의 위치는 미리 정해질 수 있다. 한 실시예에서, 헤더값은 코드 이미지 내의 속성값 페어(pair)에서의 기설정 속성에 기초하여 추출될 수 있다. 헤더값은 공지의 해싱 및 암호화 알고리즘을 통하여 장치의 UID에 따라 코드 이미지에 서명된 서명값을 포함할 수 있다. 한 실시예에서, 처리(300)의 처리 로직은 블록(305)에서 동일한 공지의 해싱 및 암호화 알고리즘을 통하여 UID에 따라 코드 이미지로부터 또 다른 서명값을 끌어낸다(derive). 처리(300)의 처리 로직은 끌어낸 서명값과 추출된 서명값을 비교하여 코드 이미지가 신뢰성이 있는지 검증한다. 한 실시예에서, 끌어낸 서명값과 추출된 서명값이 서로 일치하는 경우 검증이 성공할 수 있다. 그렇지 않으면 검증은 실패할 수 있다. 검증이 성공하지 못한 경우, 처리(300)의 처리 로직은 블록(309)에서 DFU 모드로 장치를 진입시킬 수 있다. 한 실시예에서, 처리(300)의 처리 로직은 블록(309)에서 장치가 DFU 모드로 진입하기 전에 메모리에서 코드 이미지를 제거할 수 있다.
검증이 성공하면, 처리(300)의 처리 로직은 블록(311)에서 코드 이미지를 실행할 수 있다. 한 실시예에서, 코드 이미지는 도 2에 도시한 225, 227 및 223과 같은 LLB, iBoot 또는 커널캐시일 수 있다. 처리(300)의 처리 로직은 블록(311)에서 장치에 대한 부팅 동작을 수행할 수 있다. 부팅 동작은 제품 식별, 시동 장치 전원 관리, 대용량 저장 장치 구성요소 작동, 사용자 인터페이스용 그래픽 구성요소 초기화, 화면 구성요소 활성화 및/또는 장치 하드웨어 초기화 등을 포함할 수 있다. 한 실시예에서, 부팅 동작은 도 2의 235에 도시한 것과 같은 커널 및 운영 체제 구성요소를 포함하여 메모리에 운영 체제를 로딩시키는 것을 포함할 수 있다. 처리(300)의 처리 로직은 메모리 내의 신뢰된 코드 이미지에 신뢰 표시기를 부착하여 검증이 성공했음을 나타낼 수 있다. 한 실시예에서, 메모리에 위치한 신뢰 표시기와 연관된 코드 이미지는 검증 없이 신뢰받은 코드로서 실행될 수 있다. 블록(313)에서, 처리(300)의 처리 로직은 장치가 완전히 부팅되었는지를 판단할 수 있다. 장치가 완전히 부팅된 경우, 블록(315)에서 장치는 동작 가능하게 되며 정상 동작 가능 모드로 진입한다. 한 실시예에서, 커널캐시(227)는 장치가 정상 동작한 후 사용자 모드에서 실행되는 사용자 애플리케이션을 시작시킬 수 있다. 사용자 모드에서 실행되는 애플리케이션은 도 2의 UID(119)와 GID(121)와 같은 장치 하드웨어 관련 정보에는 접근할 수 없다. 블록(313)에서의 부팅 동작이 실패하는 경우 장치는 DFU 모드로 진입할 수 있다.
한 실시예에 따르면, 블록(317)에서, 처리(300)의 처리 로직이 장치 부팅 처리가 블록(313)에서 완료되지 않았다고 판단한 경우 부팅 처리가 계속될 수 있다. 처리(300)의 처리 로직이 현재 코드 이미지의 실행에 기초하여 블록(313)에서 다른 코드 이미지를 찾아낼 수 있다. 한 실시예에서, 코드 이미지 LLB를 실행시킴으로써 도 2에 도시한 것과 같은 코드 이미지 iBoot를 찾아낼 수 있다. 다른 실시예에서, 코드 이미지 iBoot를 실행시킴으로써 도 2에 도시한 것과 같은 코드 이미지 커널캐시를 찾아낼 수 있다. 일부 실시예에서, 코드 이미지 커널캐시를 실행시킴으로써 도 2에 도시한 것과 같은 커널 및 운영 체제 구성요소를 포함하는 코드 이미지를 찾아낼 수 있다. 처리(300)의 처리 로직은 블록(319)으로 귀환하여 블록(317)에서 다음 코드 이미지를 찾아낸 결과에 따라 부팅 처리를 계속한다.
도 4는 UID 및 시드열(seed string)에 기초하여 코드 이미지로부터 서명을 생성하는 처리의 한 실시예를 나타내는 흐름도이다. 예를 들어, 처리(400)는 도 1에 도시한 것과 같은 시스템에 의하여 수행될 수 있다. 한 실시예에서, 처리(400)의 처리 로직은 도 2에 도시한 LLB(225), iBoot(227) 또는 커널캐시(223)와 같이, 코드 이미지(411)에 대하여 해싱 동작(409)을 수행한다. 해싱 동작은 암호 해시 기능 SHA-1, SHA-22, SHA-256, SHA-384 및 SHA-512와 같은 SHA(Secure Hashing Algorithm) 해싱 기능에 기초할 수 있다. 한 실시예에서, 해싱 동작(409)은 키열(413)을 생성할 수 있다. 키열(413)은 20 바이트 길이일 수 있다. 한 실시예에서, 처리(400)의 처리 로직은 블록(403)에서 암호화 동작을 수행하여 장치와 연관된 키열(413), UID(401) 및 시드열(407)에 기초하여 서명(405)을 생성한다. 한 실시예에서, 암호화 동작은 블록(403)에서 AES(Advanced Encryption Standard) 알고리즘에 기초할 수 있다. 처리(400)의 처리 로직은 키열(413) 20 바이트 중 4 바이트를 버리는 것과 같이, 블록(403)에서 키열(413)을 절삭(truncate)할 수 있다. 한 실시예에서, AES 알고리즘은 블록(403)에서 16 바이트에 기초할 수 있다. UID(401)는 도 1에 도시한 UID(119)와 같은 장치 내에 저장될 수 있다. 시드열(407)은 장치에 기초한 시드 생성 기능을 통해 생성될 수 있다. 한 실시예에서, 시드열(407)은 시드 생성 기능이 동일 장치에 대하여 적용될 때마다 동일할 수 있다.
도 5는 도 1의 시스템에 따른 장치를 호스트가 보안적으로 부팅하기 위한 네트워크 연결의 한 실시예를 나타내는 블록도이다. 한 실시예에서, 장치는 호스트에 연결됨으로써 부팅을 위한 DFU 모드로 진입할 수 있다. 장치는 사용자로부터의 초기화에 기초하여 DFU 모드로 강제 진입할 수 있다. 한 실시예에서, 장치는 사용자가 장치의 버튼을 누르는 것과 같이 소정 동작을 행하는 것에 응답하여 DFU 모드로 진입할 수 있다. 사용자는 예를 들어, 사용자 데이터 클리닝, 하드웨어 드라이버 업그레이드, 사용자 애플리케이션 업그레이드 및/또는 새로운 애플리케이션 설치 등을 포함하는, 장치에 대한 시스템 관리 태스크를 수행하기 위하여 장치에 대하여 DFU 모드로 진입하도록 요청할 수 있다. 장치는 도 3의 블록(309)에 도시한 것처럼 부팅 과정 중 적어도 한 단계에서 부팅이 실패할 경우 자동으로 DFU 모드로 진입할 수 있다. 이와는 달리, 장치는 오류 데이터나 손상된 소프트웨어 구성요소가 검출되는 경우와 같이 정상 동작 중에 운영 체제가 비정상인 상황을 맞이할 때 DFU 모드로 진입할 수 있다.
한 실시예에 따르면, 네트워크(500)는 호스트(503)와 연결되는 장치(501)를 포함할 수 있다. 장치(501)는 예를 들어, 연결된 호스트(503)로부터 운영 체제 구성요소를 복구하는 복구 데몬 애플리케이션(restoring daemon application)을 실행시키는 애플 컴퓨터사의 아이팟(iPod)과 같은 미디어 플레이어일 수 있다. 장치(501)는 접속 인터페이스 지원 TCP/IP 프로토콜을 통하여 호스트(503)와 연결될 수 있다. 접속 인터페이스는 USB, 무선 네트워크 또는 이더넷등에 기초할 수 있다. 한 실시예에서, 호스트(503)는 애플 컴퓨터사의 아이튠(iTune)과 같은 맥(Mac) 또는 윈도우 기반 컴퓨터 실행 애플리케이션 소프트웨어일 수 있다. 호스트(503)는 WAN(wide area network)(예: 인터넷) 또는 LAN(local area network)(예: 인트라넷 또는 피어 투 피어 네트워크)와 같은 네트워크(505)를 통하여 중앙 서버(507)에 연결될 수 있다. 한 실시예에서, 중앙 서버(507)는 공개적으로 접근 가능한 웹 서버에 기초할 수 있다. 이와는 달리, 서버(507)는 인트라넷 또는 로컬 서버일 수 있다.
도 6은 호스트로부터 장치로 동작 환경을 보안적으로 복원하는 처리의 한 실시예를 나타내는 흐름도이다. 예를 들어, 처리(600)는 도 1 및/또는 도 5에 도시한 것과 같은 시스템에 의하여 수행될 수 있다. 한 실시예에서, 처리(600)의 처리 로직은 블록(601)에서 장치가 복원 모드(recovery mode)임을 나타내는 상태를 호스트 컴퓨터로 전송한다. 장치는 코드 이미지 검증 실패에 응답하여 복원 모드로 진입할 수 있다. 호스트 컴퓨터는 도 5에 도시한 것과 같이 처리(600)를 수행하는 장치에 연결될 수 있다. 한 실시예에서, 상태는 제품 ID 및/또는 업체 ID를 포함할 수 있다. 호스트 컴퓨터는 코드 이미지를 준비하여 수신되는 상태에 기초하여 연결된 장치를 복원시킬 수 있다. 한 실시예에서, 코드 이미지는 도 5에 도시한 네트워크(505)와 같은 네트워크를 통하여 연결되는 호스트 컴퓨터에 의하여 중앙 서버 컴퓨터로부터 검색될 수 있다. 한 실시예에 따르면, 블록(603)에서 처리(600)의 처리 로직은 호스트 컴퓨터로부터 도 1에 도시한 메모리(103)와 같이 장치의 메모리 구성요소로 코드 이미지를 수신할 수 있다. 처리(600)의 처리 로직은 블록(605)에서 호스트 컴퓨터로부터 명령을 수신하여 수신된 코드 이미지를 실행할 수 있다. 한 실시예에서, 처리(600)는 맥 기반 컴퓨터에서 실행되는 아이튠과 같이 호스트 컴퓨터에서 실행되는 복원 소프트웨어에 의하여 제어될 수 있다.
한 실시예에 따르면, 블록(607)에서, 처리(600)의 처리 로직은 장치의 메모리에 수신된 코드 이미지에 첨부된 증명서를 추출할 수 있다. 코드 이미지는 도 2에 도시한 것과 같은 LLB, iBoot 및/또는 커널캐시일 수 있다. 코드 이미지는 RSA(Ralph Shamir Adelman) 공개 키 암호 작성법(cryptography)과 같은 공개 키 암호 작성법에 따라 암호화될 수 있다. 증명서는 X.509 표준에 기초한 키를 포함할 수 있다. 블록(609)에서, 처리(600)의 처리 로직은 도 1에 도시한 코드(115)와 같이 장치의 보안 ROM에 저장된 코드에 따라 증명서를 검증할 수 있다. 한 실시예에서, 처리(600)의 처리 로직은 일련의 증명서들을 증명하여 기본 증명서(root certificate)를 갖는 추출 증명서를 그 일련의 증명서들 내의 마지막 증명서로서 검증할 수 있다. 처리(600)의 처리 로직은 연결된 호스트 컴퓨터에서 증명서들을 검색할 수 있다. 한 실시예에서, 기본 증명서는 도 1에 도시한 지문(123)과 같이, 장치의 보안 ROM에 저장되어 있는 지문에 기초하여 검증될 수 있다. 기본 증명서는 애플 컴퓨터사가 발행할 수 있다. 검증이 실패하면, 처리(600)의 처리 로직은 장치를 다시 DFU 모드로 돌아가게 하여 블록(613)에서 복원되도록 한다.
코드 이미지의 증명서가 성공적으로 검증되는 경우, 처리(600)의 처리 로직은 블록(615)에 복원 처리를 계속하여 검증된 증명서에 포함된 키에 기초하여 코드 이미지를 복호화한다. 블록(617)에서, 처리(600)의 처리 로직은 도 1에 도시한 UID(119)와 같이 장치의 보안 ROM에 저장된 UID에 기초하여 코드 이미지에서 해시 서명을 끌어낼 수 있다. 한 실시예에서, 해시 서명은 예를 들어 도 4에 도시한 것과 같은 처리에 따라 얻어질 수 있다. 블록(619)에서, 처리(600)의 처리 로직은 끌어낸 서명을 코드 이미지에 서명할 수 있다. 한 실시예에서, 끌어낸 서명을 코드 이미지의 헤더값으로 서명할 수 있다. 처리(600)의 처리 로직은 블록(621)에서, 예를 들어 도 1에 도시한 저장 장치(109)와 같이 장치의 저장 장치에 서명된 코드 이미지를 저장할 수 있다. 한 실시예에서, 서명된 코드 이미지를 저장하여 장치에서 검증이 실패된 다른 코드 이미지를 리페어(repair)할 수 있다. 한 실시예에서, 코드 이미지는 장치의 저장 장치에 저장되기 전에 실행될 수 있다. 다른 실시예에서, 코드 이미지가 성공적으로 실행된 뒤에 장치의 저장 장치에 저장될 수 있다.
도 7은 호스트로부터 장치로 동작 환경의 보안 복원을 수행하는 처리의 한 실시예를 나타내는 상태도이다. 예를 들어, 상태(700)는 도 1 및/또는 도 5에 도시한 것과 같은 시스템의 어떤 동작 상태를 나타낼 수 있다. 한 실시예에서, 장치는 부팅 처리를 시작하는 초기 상태 Boot(701)에 진입할 수 있다. 장치의 보안 ROM에 저장된 명령은 상태 Boot(701)시 실행될 수 있다. 한 실시예에서, 상태 Boot(701)시, 도 2에 도시한 LLB(229)와 같이 저레벨 부팅 프로그램을 장치 내에서 찾을 수 있다. 저레벨 부팅 프로그램을 찾아내어, 장치의 메모리에 로딩시킬 수 있다. 한 실시예에서, 찾아낸 저레벨 부팅 프로그램은 도 3의 블록(305)에서 설명한 것과 같은 처리에 따라 신뢰성있는 코드 이미지인 것으로 검증될 수 있다. 저레벨 부팅 프로그램을 성공적으로 찾아내어 검증한 경우, 상태(700)는 천이 Success(711)에 따라 상태 Boot(701)에서 상태 LLB(703)로 진입할 수 있다. 그렇지 않으면, 한 실시예에 따라, 상태(700)는 장치가 DFU 모드로 진입하면서 천이 DFU(713)를 거쳐서 상태 Recovery1(717)로 진입할 수 있다.
상태 Recovery1(717)에서, 장치는 호스트 컴퓨터에 연결되어 도 5에 도시한 것과 같은 복원 처리를 수행할 수 있다. 한 실시예에서, 장치는 상태 Recovery1(717)에 기초하여 상태를 공개할 수 있다. 호스트 컴퓨터는 장치로부터 수신한 상태에 대응되는 코드 이미지를 보낼 수 있다. 한 실시예에서, 코드 이미지는 도 2에 도시한 것과 같은 LLB(229)일 수 있다. 장치는 일련의 증명을 수행하여 도 1의 UID(119)와 지문(123)과 같이 장치의 보안 ROM에 저장된 UID 및 지문에 기초하여, 수신된 코드 이미지가 신뢰성이 있는지를 검증할 수 있다. 일련의 증명은 도 6에 도시한 블록(609)에서의 처리(600)와 유사한 처리에 기초하여 행해질 수 있다. 코드 이미지를 성공적으로 찾아내어 검증한 경우, 한 실시예서, 장치의 상태는 상태 Recovery1(717)에서 천이 Load(715)를 거쳐 상태 LLB(703)로 천이할 수 있다.
한 실시예에서, 상태 LLB(701) 동안, 장치는 검증된 저레벨 부팅 프로그램(예를 들어, LLB 또는 전술한 저레벨 라이브러리)을 실행하여 도 2에 도시한 것과 같은 iBoot(231)와 같은 다른 부팅 프로그램을 장치 내에서 찾아낼 수 있다. 부팅 이미지를 찾아 내어, 상태 LLB(701)에서 장치의 메모리 구성요소에 로딩시킬 수 있다. 한 실시예에서, 부팅 이미지는 도 3의 블록(305)에서 전술한 것과 같은 처리에 따라 신뢰성 있는 코드 이미지인 것으로 검증될 수 있다. 부팅 이미지를 성공적으로 찾아 내어 검증한 경우, 상태(700)는 상태 LLB(703)에서 상태 iBoot(705)로 진입할 수 있다. 이와는 달리, 한 실시예에 따라, 상태(700)는 장치가 DFU 모드로 진입하면 상태 Recovery2(719)로 진입할 수 있다.
상태 Receovery2(719)에서, 장치는 호스트 컴퓨터와 연결되어 도 5에 도시한 것과 같은 복원 처리를 수행할 수 있다. 한 실시예에서, 장치는 상태 Recovery2(719)에 기초하여 상태를 공개할 수 있다. 호스트 컴퓨터는 상태 Recovery2(719)에서 장치로부터 수신한 상태에 대응되는 코드 이미지를 보낼 수 있다. 한 실시예에서, 코드 이미지는 도 2에 도시한 것과 같은 iBoot(231)일 수 있다. 장치는 일련의 증명을 수행하여 도 1의 UID(119)와 지문(123)과 같이 장치의 보안 ROM에 저장된 UID 및 지문에 기초하여, 수신된 코드 이미지가 신뢰성이 있는지를 검증할 수 있다. 일련의 증명은 도 6에 도시한 블록(609)에서의 처리(600)와 유사한 처리에 기초하여 행해질 수 있다. 코드 이미지를 성공적으로 찾아 내어 검증한 경우, 한 실시예서, 장치의 상태는 상태 Recovery2(719)에서 상태 커널캐시(707)로 천이할 수 있다.
한 실시예에 따르면, 상태 iBoot(705) 동안, 장치는 검증된 부팅 프로그램을 실행하여 도 2에 도시한 것과 같은 커널캐시(233)와 같은 커널 이미지를 장치 내에서 찾아낼 수 있다. 커널 이미지는 상태 iBoot(705) 동안 찾아져서, 장치의 메모리 구성요소에 로딩될 수 있다. 한 실시예에서, 커널 이미지는 도 3의 블록(305)에서 설명한 것과 같은 처리에 따라 신뢰성 있는 코드로서 검증될 수 있다. 커널 이미지를 성공적으로 찾아 내어 검증한 경우, 상태(700)는 상태 iBoot(705)에서 커널캐시(707)로 진입할 수 있다. 그렇지 않으면, 한 실시예에 따라 상태(700)는 장치가 DFU 모드로 진입하면 상태 Recovery3(721)로 진입할 수 있다.
상태 Recovery3(721) 동안, 장치는 호스트 컴퓨터와 연결되어 도 5에 도시한 것과 같은 복원 처리를 수행할 수 있다. 한 실시예에서, 장치는 상태 Recovery3(721)에 기초하여 상태를 공개할 수 있다. 호스트 컴퓨터는 상태 Recovery3(721)에서 장치로부터 수신한 상태에 대응되는 코드 이미지를 보낼 수 있다. 한 실시예에서, 코드 이미지는 도 2의 커널캐시(233)와 같은 커널 이미지일 수 있다. 장치는 일련의 증명을 수행하여 도 1의 UID(119)와 지문(123)과 같이 장치의 보안 ROM에 저장된 UID 및 지문에 기초하여, 수신된 코드 이미지가 신뢰성이 있는지를 검증할 수 있다. 일련의 증명은 도 6에 도시한 블록(609)에서의 처리(600)와 유사한 처리에 기초하여 행해질 수 있다. 코드 이미지를 성공적으로 찾아 내어 검증한 경우, 한 실시예서, 장치의 상태는 상태 Recovery3(721)에서 상태 커널캐시(707)로 천이할 수 있다.
한 실시예에서, 상태 커널캐시(707) 동안, 장치는 검증된 커널 이미지를 실행하여 도 2의 235와 같은 운영 체제 구성요소를 찾아낼 수 있다. 상태 커널캐시(707) 동안 검증된 커널 이미지의 실행에 따라, 찾아낸 운영 체제 구성요소를 장치의 메모리 구성요소에 로딩하여 신뢰성이 있는 것으로 검증할 수 있다. 한 실시예에서, 커널 이미지는 도 3의 블록(305)에서 설명한 것과 같은 처리에 따라 운영 체제 구성요소가 신뢰성이 있는지 판단할 수 있다. 커널 이미지에 기초하여 특권 모드를 신뢰된 운영 체제 구성요소에 할당하여 도 2의 UID(119) 또는 GID(123)와 같은, 장치의 하드웨어 레벨 인터페이스에 접근하게 할 수 있다. 사인된(signed) 서명이 없는 운영 체제 구성요소는 상태 커널캐시(707) 동안에는 사용자 모드 특권을 할당 받을 수 있다. 한 실시예에서, 운영 체제 구성요소는 장치의 하드웨어 레벨 인터페이스로의 접근이 허용되지 않을 수 있다. 운영 체제를 장치의 메모리에 성공적으로 로딩시킨 경우, 상태(700)는 상태 커널캐시(707)에서 정상 동작 환경에 해당되는 상태 OS(709)로 천이할 수 있다. 사용자 애플리케이션은 상태 OS(709) 동안 할당 받은 사용자 모드에서 실행을 시작할 수 있다. 한 실시예에서, 상태 커널캐시(707)에서 장치는 DFU 모드로 진입하여 연결된 호스트 컴퓨터로부터 기본 이미지를 수신하고 장치에 대한 운영 체제 구성요소를 복구 또는 업데이트한다.
도 8은 호스트로부터 장치로 소프트웨어 구성요소를 보안적으로 복구하는 처리의 한 실시예를 나타내는 흐름도이다. 예를 들어, 처리(800)는 도 1 및/또는 도 5에 도시한 것과 같은 시스템에 의하여 수행될 수 있다. 한 실시예에서, 처리(800)의 처리 로직은 블록(801)에서 장치를 부팅 장치로서 구성할 수 있다. 부팅 장치는 DFU 모드에 있을 수 있다. 사용자는 장치의 정상 동작시 장치의 버튼을 눌러 부팅 장치를 DFU 모드로 구성시킬 수 있다. 처리(800)의 처리 로직은 장치 사용자에 의하여 의도적으로 활성화되어 손상된 애플리케이션 소프트웨어의 리페어, 펌웨어 구성요소 설치 또는 장치에 저장된 기존 사용자 데이터를 관리할 수 있다. 블록(803)에서, 한 실시예에 따르면, 처리(800)의 처리 로직은 호스트 컴퓨터와 네트워크 연결을 구축할 수 있다. 장치와 호스트 컴퓨터는 도 5에 도시한 것과 같은 네트워크 인터페이스를 통하여 연결될 수 있다. 애플 컴퓨터사의 아이튠과 같은 복구 소프트웨어는 장치와 통신하는 호스트 컴퓨터 상에서 실행될 수 있다. 처리(800)의 처리 로직은 블록(805)에서 상태를 호스트 컴퓨터에 공개하여 장치가 복구 모드에 있는지 네트워크 연결을 통하여 식별할 수 있다. 복구 모드의 장치는 또한 DFU 모드일 수 있다. 한 실시예에서, 상태는 장치 ID 및/또는 제품 ID와 같은 정보를 포함할 수 있다. 상태는 호스트 컴퓨터로부터 필요한 코드 이미지의 표시를 포함할 수 있다.
한 실시예에 따르면, 블록(807)에서, 처리(800)의 처리 로직은 연결된 호스트 컴퓨터로부터 부팅 이미지를 수신할 수 있다. 부팅 이미지는 도 2에 도시한 LLB(229) 또는 iBoot(231)와 같은 부팅 로더(boot loader)를 포함할 수 있다. 한 실시예에서, 부팅 이미지는 도 2의 커널캐시(233)과 같은 커널 캐시를 포함할 수 있다. 부팅 이미지는 블록(805)에서 호스트 컴퓨터에 공개된 상태에 기초하여 수신될 수 있다. 한 실시예에서, 부팅 이미지는 도 1의 메모리(103)와 같은 장치의 메모리 구성요소에 로딩될 수 있다. 처리(800)의 처리 로직은 블록(809)에서 연결된 호스트 컴퓨터로부터 기본 이미지를 수신할 수 있다. 기본 이미지는 장치에 대한 운영 체제의 스트립트 다운 버전(stripped down version)의 RAM일 수 있다. 한 실시예에서, 기본 이미지는 복구 애플리케이션을 포함할 수 있다.
한 실시예에 따르면, 블록(811)에서, 처리(800)의 처리 로직은 연결된 컴퓨터로부터 커맨드를 수신하여 수신된 부팅 이미지를 실행시킬 수 있다. 부팅 이미지는 부팅 로더일 수 있다. 처리(800)의 처리 로직은 이에 응답하여 블록(813)에서 부팅 이미지가 신뢰성이 있는지 검증할 수 있다. 한 실시예에서, 처리(800)의 처리 로직은 도 6에 도시한 것과 같은 처리를 수행하여 부팅 이미지가 도 1의 칩(105)과 같은 보안 ROM 칩에 기초하여 신뢰할 수 있는지를 판단할 수 있다. 한 실시예에서, 처리(800)의 처리 로직은 블록(815)에서 연결된 호스트 컴퓨터로부터 수신한 커널캐시에 대하여 신뢰된 부팅 이미지를 실행함으로써 신뢰성이 있는지 검증할 수 있다. 처리(800)의 처리 로직은 도 6에 도시한 것과 같은 처리를 수행하여 커널캐시가 도 1의 지문(123)과 같이 장치에 저장된 기본 증명 지문에 기초하여 신뢰할 수 있는지를 판단할 수 있다. 블록(817)에서, 처리(800)의 처리 로직은 기본 이미지로부터의 복구 데몬 애플리케이션에 대하여 신뢰된 커널캐시를 실행하여 신뢰성이 있는지를 검증할 수 있다. 한 실시예에서, 처리(800)의 처리 로직은 기본 이미지가 신뢰성있는 코드 이미지인지를 검증하여 복구 데몬 애플리케이션을 신뢰할 수 있는지를 판단할 수 있다. 처리(800)의 처리 로직은 도 6에 도시한 것과 같은 처리를 수행하여 기본 이미지에 포함된 복구 데몬 애플리케이션을 신뢰할 수 있는지 판단한다.
한 실시예에 따르면, 블록(819)에서 처리(800)의 처리 로직은 복구 데몬 애플리케이션을 통하여 호스트 컴퓨터로부터의 커맨드 콜(command call)을 수신하여 소프트웨어 복구 동작을 수행할 수 있다. 한 실시예에서, 소프트웨어 복구 동작은 대용량 저장 장치의 파일 시스템의 분할 및 포맷팅(formatting), 장치 레벨 재저장 또는 신 펌웨어의 장치로의 로딩을 포함할 수 있다. 처리 로직은 기본 이미지에 포함되어 있는 OS를 기동시켜 복구 데몬을 장치에 론칭(launching)할 수 있다. 한 실시예에서, OS의 감소 부분 또는 최소 부분만이 기동된다. 이 데몬 애플리케이션은 XML(Extensible Markup Language) 프로토콜에 기초하여 연결된 호스트 컴퓨터에서 실행되는 복구 소프트웨어와 통신할 수 있다. 한 실시예에서, 복구 데몬은 호스트 컴퓨터에서 실행되는 복구 소프트웨어로 하여금 장치가 실행하는 임의의 커맨드를 발행하도록 할 수 있다. 커맨드는 RAM 디스크에 포함된 보조 툴의 실행 및/또는 라이브러리의 콜을 포함할 수 있다. 한 실시예에서, 커맨드는 대용량 저장 장치에 저장된 소프트웨어 전체 세트 및 장치의 프로그래머블 ROM을 대체하게 할 수 있다. 블록(821)에서, 처리(800)의 처리 로직은 연결된 호스트 컴퓨터로부터 커맨드를 수신하여 장치를 다시 시작하게 할 수 있다. 이에 응답하여, 처리(800)의 처리 로직은 장치를 리셋시킬 수 있다. 이어서, 장치는 장치의 대용량 저장 장치에 저장된 운영 체제로부터 재부팅될 수 있다.
도 9는 호스트에서 장치로 애플리케이션을 보안적으로 업데이트하는 처리의 한 실시예를 나타내는 흐름도이다. 예를 들어, 처리(900)는 도 1 및/또는 도 5에 도시한 것과 같은 시스템에 의하여 수행될 수 있다. 처리(900)의 처리 로직은 블록(901)에서 호스트 컴퓨터와 네트워크 연결을 구축할 수 있다. 장치와 호스트 컴퓨터는 도 5에 도시한 것과 같은 네트워크 인터페이스를 통하여 연결될 수 있다. 애플 컴퓨터사의 아이튠과 같은 업데이트 소프트웨어는 장치와 통신하도록 호스트 컴퓨터에서 실행될 수 있다. 처리(800)의 처리 로직은 블록(803)에서 상태를 호스트 컴퓨터에 공개하여 장치가 업데이트 모드에 있는지를 네트워크 연결을 통하여 식별할 수 있다. 업데이트 모드의 장치는 또한 DFU 모드일 수 있다. 한 실시예에서, 상태는 장치 ID 및/또는 제품 ID와 같은 정보를 포함할 수 있다. 상태는 장치 내에 현재 포함된 애플리케이션의 버전 ID의 표시를 포함할 수 있다.
한 실시예에 따르면, 블록(905)에서, 처리(900)의 처리 로직은 연결된 호스트 컴퓨터로부터 코드 이미지를 수신할 수 있다. 코드 이미지는 블록(903)에서 호스트 컴퓨터가 수신하는 공개 상태로부터의 버전 ID에 기초하여 애플리케이션의 업데이트 버전에 관련된 소프트웨어 패키지를 포함할 수 있다. 한 실시예에서, 코드 이미지는 도 1에 도시한 메모리(103)와 같은 장치의 메모리 구성요소에 로딩될 수 있다. 한 실시예에 따르면, 블록(907)에서, 처리(900)의 처리 로직은 코드 이미지의 신뢰성에 대하여 검증할 수 있다. 처리(900)의 처리 로직은 도 6에 도시한 것과 같은 처리를 수행하여 코드 이미지가 도 1에 도시한 칩(105) 내의 지문(123)과 같이 보안 ROM 칩의 기본 증명서의 지문에 기초하여 신뢰할 수 있는지를 판단할 수 있다. 한 실시예에서, 처리(900)의 처리 로직은, 블록(909)에서 검증된 코드 이미지를 실행하여 포함된 소프트웨어 패키지에서 파일을 풀고 장치의 파일 시스템 내에 그 파일을 위치시킨다. 소프트웨어 패키지로부터의 파일은 새로운 파일 또는 장치에 대한 기존 파일의 업데이트 버전일 수 있다. 처리(900)의 처리 로직은 소프트웨어 패키지로부터의 파일에 대한 완전성 검사를 하여 그 파일을 장치의 파일 시스템에 위치시키기 전에 파일이 손상되거나 오류가 없도록 확실히 한다. 한 실시예에서, 파일의 완전성은 파일 컨텐츠 상의 해시에 따른 서명에 기초하여 검사될 수 있다. 블록(911)에서, 처리(900)의 처리 로직은 장치를 리셋하여 장치 내에 저장된 운영 체제로부터 재부팅시킨다.
도 10은 미검증 코드 이미지를 실행하는 처리의 한 실시예를 나타내는 흐름도이다. 예를 들어, 처리(1000)는 도 1에 도시한 것과 같은 시스템에 의하여 수행될 수 있다. 블록(1001)에서, 처리(1000)의 처리 로직은 도 1의 UID(119)와 같은, 장치의 보안 ROM의 UID로의 접근을 못하게 한다. 한 실시예에서, 신뢰된 코드 이미지는 실행될 때 UID로의 접근을 차단하도록 구성될 수 있다. 다른 실시예에서, 하드웨어 스위치는 UID로의 접근을 차단하는 설정을 포함할 수 있다. UID의 접근 구성은 장치의 진단이나 시험 요건에 따라 특정될 수 있다. 신뢰된 코드 이미지는 도 1의 코드(115)와 같이 장치의 보안 ROM 내의 코드에 의하여 검증된 부팅 이미지일 수 있다. 한 실시예에서, 검증은 도 6에 도시한 것과 유사한 처리로 행해질 수 있다. 부팅 이미지는 도 2에 도시한 것과 같은 LLB(225) 또는 iBoot(227)일 수 있다. 블록(1003)에서, 처리(1000)의 처리 로직은 도 1의 RAM(111)과 같은 장치의 메모리 구성요소에 코드 이미지를 로딩할 수 있다. 한 실시예에서, 처리(1000)의 처리 로직은 현재 실행 중인 신뢰된 코드 이미지에 기초하여 코드 이미지를 로딩할 수 있다. 코드 이미지는 외부의 네트워크 연결이나 장치에 연결된 대용량 저장 장치로부터 로딩될 수 있다. 한 실시예에서, 코드 이미지는 장치에 대한 진단 소프트웨어를 포함할 수 있다.
블록(1005)에서, 처리(1000)의 처리 로직은 프로그래밍 인터페이스를 활성화시켜 코드 이미지를 실행함으로써 장치 하드웨어에 접근할 수 있다. 장치 하드웨어는 장치 하드웨어 파라미터의 값을 판독하거나 설정함으로써 접근 가능하다. 처리 로직은 로딩된 코드 이미지로부터 해시값을 끌어내어 코드 이미지가 손상되지 않았는지(예를 들어, 오류가 없는지)를 판단할 수 있다. 이 판단은 끌어낸 해시값과 코드 이미지로부터의 헤더값의 비교에 기초할 수 있다. 한 실시예에서, 블록(1007)에서, 처리(1000)의 처리 로직은 UID가 비활성(inactive)인지를 판단할 수 있다. 장치 하드웨어에 접근하는 프로그래밍 인터페이스는 도 1의 코드(115)와 같이 보안 ROM 내의 코드를 실행하여 UID의 활성 여부를 판단할 수 있다. 블록(1009)에서, 처리(1000)의 처리 로직은 장치 하드웨어로의 접근 없이 계속하여 코드 이미지를 실행시킨다. 한 실시예에서, 장치 하드웨어로의 접근은 해당 UID의 활성 여부에 따라 장치의 보안 ROM 내의 코드에 의하여 제어될 수 있다. 다른 실시예에서, 사용자 데이터는 UID가 비활성일 때에는 접근 불가할 수 있다. 미검증 애플리케이션이 장치에 로딩되고 실행되는 경우일지라도, UID가 비활성이라면 어떠한 장치 하드웨어 또는 사용자 감응 데이터(user sensitive data)도 손상되지 않을 수 있다.
도 11은 본 발명의 한 실시예와 함께 사용될 수 있는 데이터 처리 시스템의 한 예를 나타낸다. 예를 들어, 시스템(1100)은 도 5에 도시한 것과 같은 호스트를 포함하여 구현될 수 있다. 도 11은 컴퓨터 시스템의 다양한 구성요소를 나타내지만, 이와 같이 상세한 구성요소의 특정 구조나 상호 연결 방식이 본 발명과 밀접한 관계가 있는 것을 나타내고자 하는 것이 아님을 유의하여야 한다. 또한, 더 적거나 많은 구성요소를 구비한 네트워크 컴퓨터와 다른 데이터 처리 시스템도 본 발명과 사용될 수 있음을 인식할 것이다.
도 11에 도시한 것처럼, 데이터 처리 시스템의 형태인 컴퓨터 시스템(1100)은 마이크로프로세서(들)(1105), ROM(1107), 휘발성 RAM(1109) 및 불휘발성 메모리(1111)에 연결되어 있는 버스(1103)를 포함한다. 마이크로프로세서(1105)는 메모리(1107, 1109, 1111)로부터의 명령을 검색하고 그 명령을 실행하여 전술한 동작을 행한다. 버스(1103)는 이러한 여러 구성요소를 서로 연결시키는 것은 물론, 이들 구성요소(1105, 1107, 1109, 1111)를 표시 제어기 및 표시 장치(1113)와, 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터 및 기타 공지의 다른 장치일 수 있는 입출력(I/O) 장치에 서로 연결시킨다. 일반적으로, 입출력 장치(1115)는 입출력 제어기(1117)를 통하여 시스템에 연결되어 있다. 휘발성 RAM(1109)은 메모리에 데이터를 리프레시하거나 유지하기 위하여 전원을 지속적으로 필요로 하는 동적 RAM(DRAM)으로 일반적으로 구현된다.
대용량 저장 장치(1111)는 통상적으로 자기 하드 드라이브, 자기 광 드라이브, 광 드라이브, DVD RAM, 플래시 메모리 또는 전원이 시스템에서 제거된 후에도 데이터(예: 대용량의 데이터)를 유지하는 다른 유형의 메모리 시스템이다. 일반적으로, 이것이 필요하지 않을 지라도 대용량 저장 장치(1111)는 랜덤 액세스 메모리일 수 있다. 도 11은 대용량 저장 장치(1111)가 데이터 처리 시스템에서 나머지 구성요소에 직접 연결되어 있는 로컬 장치임을 나타내지만, 본 발명은 시스템과 이격되어 있는 불휘발성 메모리, 예를 들어, 모뎀, 이더넷 인터페이스 또는 무선 네트워크와 네트워크 인터페이스를 통하여 데이터 처리 시스템에 연결되는 네트워트 저장 장치를 이용할 수 있다. 버스(1103)는 공지된 바와 같이 여러 브리지, 제어기 및/또는 어댑터(adapter)를 통하여 서로 연결되는 하나 이상의 버스를 포함할 수 있다.
도 12는 본 발명의 한 실시예와 함께 사용될 수 있는 다른 데이터 처리 시스템의 한 예를 나타낸다. 예를 들어, 시스템(1200)은 도 1에 도시한 것과 같은 시스템의 일부로서 구현될 수 있다. 도 12에 도시한 데이터 처리 시스템(1200)은 하나 이상의 마이크로프로세서 또는 칩이 집적된 회로 상의 시스템일 수 있는 처리 시스템(1211)을 포함하고, 또한 처리 시스템에 의하여 실행되는 데이터 및 프로그램을 저장하는 메모리(1201)를 포함한다. 시스템(1200)은 또한 마이크로폰과 스피커를 포함하여 음악을 재생하거나 그 스피커와 마이크로폰을 통하여 전화 기능을 제공한다.
표시 제어기 및 표시 장치(1207)는 사용자에 시각적인 사용자 인터페이스를 제공하고, 이러한 디지털 인터페이스는 OS X 운영 체제 소프트웨어가 실행될 때 MAC킨토시 컴퓨터 상에 나타나는 것과 유사한 그래픽 사용자 인터페이스를 포함할 수 있다. 또한, 시스템(1200)은 도 11의 시스템(1100)과 같이 다른 데이터 처리 시스템과 통신하는 하나 이상의 무선 트랜시버(1203)를 포함한다. 무선 트랜시버는 WiFi 트랜시버, 적외선 트랜시버, 블루투스 트랜시버 및/또는 무선 셀룰러 전화 트랜시버일 수 있다. 어떤 실시예에서는 도시하지 않은 부가적인 구성요소가 시스템(1200)의 일부가 될 수 있고, 어떤 실시예에서는 도 12에 도시한 것보다 적은 구성요소가 데이터 처리 시스템에 사용될 수도 있음을 인식할 것이다.
데이터 처리 시스템(1200)은 또한 사용자가 시스템에 입력을 제공하게 하는 하나 이상의 입력 장치(1213)를 포함한다. 입력 장치는 키패드, 키보드, 터치 패널 또는 멀티 터치 패널일 수 있다. 데이터 처리 시스템(1200)은 또한 도크(dock)에 대한 커넥터일 수 있는 입출력 장치(1215)를 선택적으로 포함한다. 도시하지 않은 하나 이상의 버스가 공지된 바와 같이 여러 구성요소를 서로 연결시키는데 사용될 수 있음을 인식할 것이다. 도 12에 도시한 데이터 처리 시스템은 핸드헬드 컴퓨터(handheld computer), PDA(personal digital assistant), PDA 유사 기능을 가진 셀룰러 전화, 아이팟과 같은 미디어 플레이어, 또는 한 장치에 PDA 및 셀룰러 전화와 결합된 미디어 플레이어와 같이 이들 장치의 양상 또는 기능을 결합시키는 장치일 수 있다. 다른 실시예에서, 데이터 처리 시스템(1200)은 네트워크 컴퓨터, 다른 장치에 내장된 처리 시스템, 또는 도 12에 도시한 것보다 적거나 많을 수 있는 구성요소를 구비한 다른 유형의 데이터 처리 시스템일 수 있다.
본 발명의 적어도 어떤 실시예는 휴대용 음악 및/또는 비디오 미디어 플레이어와 같은 디지털 미디어 플레이어의 일부일 수 있으며, 미디어를 표시하는 미디어 처리 시스템과 미디어를 저장하는 저장 장치를 포함할 수 있고 안테나 시스템과 미디어 처리 시스템에 연결되는 RF(radio frequency) 트랜시버(예를 들어, 셀룰러 전화용 RF 트랜시버)를 더 포함할 수 있다. 어떤 실시예에서, 원격 저장 장치에 저장되어 있는 미디어를 RF 트랜시버를 통하여 미디어 플레이어로 전송할 수 있다. 미디어는 예를 들어, 하나 이상의 음악 또는 다른 오디오, 정지 영상 또는 동영상일 수 있다.
휴대용 미디어 플레이어는 캘리포니아, Cupertino 소재 애플 컴퓨터사의 iPod® 또는 iPod Nano® 미디어 플레이어의 클릭 휠 입력 장치, 터치 스크린 입력 장치, 푸시 버튼 장치, 이동 가능한 포인팅 입력 장치 또는 기타 입력 장치와 같은 미디어 선택 장치를 포함할 수 있다. 미디어 선택 장치는 저장 장치 및/또는 원격 저장 장치에 저장된 미디어를 선택하는데 사용될 수 있다. 휴대용 미디어 플레이어는 적어도 어떤 실시예에서 미디어 처리 시스템에 연결되어, 입력 장치를 통하여 선택되고 스피커나 이어폰을 통하여 또는 표시 장치 또는 표시 장치와 스피커나 이어폰 상에서 제공되는 미디어의 제목 또는 다른 표시자를 표시하는 표시 장치를 포함한다. 휴대용 미디어 플레이어의 예는 미국 공개 특허 출원 번호 제2003/0095096호와 2004/0224638호에 기재되어 있으며 이 둘은 참고로 여기에 편입된다.
전술한 것의 일부분은 전용 로직 회로와 같은 로직 회로, 마이크로 제어기 또는 프로그램 명령어 코드를 실행하는 다른 형태의 처리 코어(processing core)로 구현될 수 있다. 따라서, 상기 전술한 기재가 교시하는 처리는 이러한 명령어를 실행하여 어떤 기능을 수행하게 하는 기계 실행 가능 명령어와 같은 프로그램 코드로 수행될 수 있다. 이러한 의미에서, "기계"는 중간 형태[또는 "앱스트랙트(abstract)"] 명령어를 프로세서 특정 명령어[예를 들어, "가상 기계"(예: Java Virtual Machine), 인터프리터(interpreter), 커먼 랭귀지 런타임(Common Language Runtime), 고레벨 랭귀지 가상 기계와 같은 앱스트랙트 실행 환경]으로 변환하는 기계, 및/또는 범용 프로세서 및/또는 전용 프로세서와 같이 명령어를 실행하도록 설계된 반도체 칩[예를 들어, 트랜지스터로 구현되는 "로직 회로"] 상에 배치되어 있는 전자 회로일 수 있다. 전술한 기재가 교시하는 처리는 또한 프로그램 코드의 실행 없이 그 처리(또는 그 일부)를 수행하도록 설계된 전자 회로에 의하여(이와는 달리, 기계 또는 기계와의 결합으로) 행해질 수 있다.
또한, 본 발명은 여기서 기재한 동작을 수행하는 장치에 관한 것이다. 이 장치는 필요한 목적으로 특별히 구성될 수 있으며, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의하여 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 예를 들어, 플로피 디스크, 광 디스크, CD-ROM, 광자기 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어를 저장하기에 적당한 어떠한 유형의 매체를 포함하지만 이에 한정되지 않는 컴퓨터 판독 가능 매체에 저장될 수 있고, 이들 각각은 컴퓨터 시스템 버스에 연결된다.
기계 판독 가능 매체는 기계(예: 컴퓨터)로 판독되는 형태로 정보를 저장하거나 전송하는 임의의 메커니즘을 포함한다. 예를 들어, ROM; RAM; 자기 디스크 저장 매체; 광 저장 매체; 플래시 메모리 장치; 전기, 광학, 음향 또는 다른 형태의 전파 신호 등(예를 들어, 반송파, 적외선 신호, 디지털 신호 등)을 포함한다.
제품(article of manufacture)은 프로그램 코드를 저장하는데 사용될 수 있다. 프로그램 코드를 저장하는 제품은 예를 들어, 하나 이상의 메모리[예를 들어, 하나 이상의 플래시 메모리, 랜덤 액세스 메모리(정적, 동적, 기타)], 광 디스크, CD-ROM, DVD ROM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어를 저장하기에 적당한 어떠한 유형의 매체를 포함하지만 이에 한정되지 않는 것으로 실시될 수 있다. 또한, 프로그램 코드는 전파 매체에서 실시되는 데이터 신호를 통하여[예를 들어, 통신 링크(예: 네트워크 연결)를 통하여] 원격 컴퓨터(예: 서버)에서 요청 컴퓨터(예: 클라이언트)로 다운로드될 수 있다.
전술한 상세한 설명은 컴퓨터 메모리 내의 데이터 비트 상의 동작의 알고리즘 및 상징적인 표현의 관점에서 제공되었다. 이러한 알고리즘적인 설명과 표현은 데이터 처리 기술의 당업자가 다른 당업자에게 그 동작의 내용을 가장 효과적으로 전달할 때 사용되는 도구이다. 알고리즘은 여기서 그리고 일반적으로 원하는 결과로 이끄는 동작의 모순이 없는 시퀀스로 여겨진다. 동작은 물리적인 양의 물리적인 조작을 요하는 것이다. 보통, 반드시 필요한 것은 아니지만 이러한 양은 저장, 전송, 결합, 비교 및 이와는 달리 조작 가능한 전기 또는 자기 신호의 형태를 취한다. 이러한 신호는 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이 주로 공통적인 사용의 이유로 가끔 편리하다는 것이 입증되었다.
하지만, 이러한 그리고 유사한 모든 용어는 적절한 물리량과 관련되어 있고 이러한 양에 적용되는 단지 편리한 라벨임을 명심하여야 한다. 본 기재로부터 명백한 대로 달리 특별히 언급하지 않는 한, 명세서 전체를 통하여 "처리," "컴퓨팅," "계산," "판단," 또는 "표시" 등과 같은 용어를 이용하는 기재는, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로 표현되는 데이터를 조작하고 컴퓨터 시스템 메모리나 레지스터 또는 다른 정보 저장 장치, 전송 또는 표시 장치 내의 물리량으로 유사하게 표현되는 다른 데이터로 변환시키는 컴퓨터 시스템이나 유사 전자 컴퓨팅 장치의 조치 및 처리를 말한다.
여기서 제공하는 처리 및 표시는 내재적으로 어떠한 특정 컴퓨터 또는 다른 장치에 관련된 것이 아니다. 다양한 범용 시스템을 여기서의 교시에 따른 프로그램과 함께 사용할 수 있거나, 좀 더 특별한 장치를 구성하여 전술한 동작을 수행하는 것이 편리하다는 것이 입증될 수 있다. 이러한 다양한 시스템에 대하여 필요로 하는 구조는 이하의 설명으로부터 명백할 것이다. 또한, 본 발명은 어느 특정한 프로그래밍 언어를 참고로 하여 기술되지 않는다. 다양한 프로그래밍 언어를 이용하여 여기서 기재한 바대로의 본 발명의 교시를 구현할 수 있음을 인식할 것이다.
전술한 기재는 본 발명의 일부 예시적인 실시예를 설명한 것뿐이다. 당업자는 이러한 기재, 첨부 도면 및 청구범위로부터 본 발명의 사상과 범위에서 벗어남이 없이 다양한 변형예가 이루어질 수 있음을 쉽게 인식할 것이다.

Claims (2)

  1. 기계에 의하여 실행될 때 기계로 하여금 방법을 수행하도록 하기 위한 명령어들을 가지는 기계 판독 가능 매체로서, 상기 방법은:
    장치의 ROM(read only memory)에 내장된 코드를 상기 ROM 내부에 저장된 키를 이용해 실행해 제1 코드 이미지를 검증하는 단계;
    상기 제1 코드 이미지를 성공적으로 검증한 것에 응답하여 상기 장치의 메인 메모리 내의 상기 검증된 제1 코드 이미지를 실행하여 상기 장치에 대한 동작 환경을 구축하는 단계;
    상기 제1 코드 이미지로부터 해시값을 도출하는 단계; 및
    상기 키에 기초하여 상기 해시값과 상기 제1 코드 이미지로부터의 제1 헤더값 간의 일치 여부를 판단하는 단계 - 상기 제1 헤더값이 상기 제1 코드 이미지에 디지털적으로 서명함 - 를 포함하고,
    상기 검증된 제1 코드 이미지의 실행은:
    제2 헤더값을 갖는 제2 코드 이미지로부터 제2 해시값을 도출하는 단계 - 상기 제2 헤더값은 상기 제2 코드 이미지에 디지털적으로 서명함 -; 및
    상기 키에 기초하여 상기 제2 해시값과 상기 제2 헤더값의 일치 여부를 판단하는 단계를 포함하는, 기계 판독 가능 매체.
  2. 제1항에 있어서, 상기 판단하는 단계는,
    상기 제2 해시값을 상기 키와 관련된 서명값으로 암호화하는 단계; 및
    상기 서명값과 상기 제2 헤더값을 비교하는 단계를 포함하고,
    상기 서명값은 상기 장치와 관련된 시드열에 기초하는, 기계 판독 가능 매체.
KR1020117014059A 2007-01-07 2007-12-20 컴퓨팅 장치의 보안 부팅 KR101066779B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/620,689 US8254568B2 (en) 2007-01-07 2007-01-07 Secure booting a computing device
US11/620,689 2007-01-07

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020097016608A Division KR101066727B1 (ko) 2007-01-07 2007-12-20 컴퓨팅 장치의 보안 부팅

Publications (2)

Publication Number Publication Date
KR20110075050A KR20110075050A (ko) 2011-07-05
KR101066779B1 true KR101066779B1 (ko) 2011-09-21

Family

ID=39361471

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117014059A KR101066779B1 (ko) 2007-01-07 2007-12-20 컴퓨팅 장치의 보안 부팅
KR1020097016608A KR101066727B1 (ko) 2007-01-07 2007-12-20 컴퓨팅 장치의 보안 부팅

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020097016608A KR101066727B1 (ko) 2007-01-07 2007-12-20 컴퓨팅 장치의 보안 부팅

Country Status (6)

Country Link
US (2) US8254568B2 (ko)
EP (2) EP2111598A2 (ko)
JP (1) JP4971466B2 (ko)
KR (2) KR101066779B1 (ko)
CN (1) CN101578609B (ko)
WO (1) WO2008085449A2 (ko)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) * 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8108856B2 (en) * 2007-03-30 2012-01-31 Intel Corporation Method and apparatus for adaptive integrity measurement of computer software
US8230412B2 (en) * 2007-08-31 2012-07-24 Apple Inc. Compatible trust in a computing device
WO2009044533A1 (ja) * 2007-10-05 2009-04-09 Panasonic Corporation セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US9164925B2 (en) * 2008-01-15 2015-10-20 Samsung Electronics Co., Ltd. Method and apparatus for authorizing host to access portable storage device
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US20090204803A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Handling of secure storage key in always on domain
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
WO2010033497A1 (en) 2008-09-18 2010-03-25 Marvell World Trade Ltd. Preloading applications onto memory at least partially during boot up
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US8855601B2 (en) 2009-02-17 2014-10-07 Lookout, Inc. System and method for remotely-initiated audio communication
US9955352B2 (en) 2009-02-17 2018-04-24 Lookout, Inc. Methods and systems for addressing mobile communications devices that are lost or stolen but not yet reported as such
US9058491B1 (en) 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
WO2011042892A1 (en) * 2009-10-09 2011-04-14 Nokia Corporation Platform security
US8812854B2 (en) 2009-10-13 2014-08-19 Google Inc. Firmware verified boot
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
WO2011064833A1 (ja) * 2009-11-24 2011-06-03 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
US9336410B2 (en) 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
US8589667B2 (en) 2010-04-19 2013-11-19 Apple Inc. Booting and configuring a subsystem securely from non-local storage
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US9544396B2 (en) 2011-02-23 2017-01-10 Lookout, Inc. Remote application installation and control for a mobile device
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US9635048B2 (en) * 2011-03-09 2017-04-25 Irdeto B.V. Method and system for dynamic platform security in a device operating system
US9032214B2 (en) * 2011-06-30 2015-05-12 Dell Products L.P. System and method for providing an image to an information handling system
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
WO2013012435A1 (en) 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Security parameter zeroization
US9141394B2 (en) * 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
WO2013024497A1 (en) * 2011-08-12 2013-02-21 Power-One Italy S.P.A. Method and system for protected transmission of files
US8732527B2 (en) * 2011-08-16 2014-05-20 Google Inc. Secure recovery apparatus and method
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US20140173638A1 (en) * 2011-12-05 2014-06-19 Thomas G. Anderson App Creation and Distribution System
JP5476363B2 (ja) * 2011-12-19 2014-04-23 レノボ・シンガポール・プライベート・リミテッド 生体認証装置を利用したコンピュータの起動方法およびコンピュータ
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
CN102722670B (zh) * 2012-05-29 2014-10-22 中国联合网络通信集团有限公司 基于移动存储设备的文件保护方法、设备和系统
US9407443B2 (en) 2012-06-05 2016-08-02 Lookout, Inc. Component analysis of software applications on computing devices
US9589129B2 (en) 2012-06-05 2017-03-07 Lookout, Inc. Determining source of side-loaded software
CN103514411A (zh) * 2012-06-25 2014-01-15 联想(北京)有限公司 启动电子设备的方法及电子设备安全系统
US9285981B1 (en) 2012-07-16 2016-03-15 Wickr Inc. Discouraging screen capture
US10586260B2 (en) 2012-07-19 2020-03-10 Apple Inc. Securing in-app purchases
US9141809B2 (en) * 2012-07-23 2015-09-22 Qualcomm Incorporated Method and apparatus for deterring a timing-based glitch attack during a secure boot process
US8898654B2 (en) * 2012-08-29 2014-11-25 Microsoft Corporation Secure firmware updates
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
CN103914658B (zh) * 2013-01-05 2017-02-22 展讯通信(上海)有限公司 终端设备的安全启动方法及终端设备
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9336395B2 (en) * 2013-01-25 2016-05-10 Hewlett-Packard Development Company, L.P. Boot driver verification
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
US10084603B2 (en) * 2013-06-12 2018-09-25 Lookout, Inc. Method and system for rendering a stolen mobile communications device inoperative
US10567349B2 (en) 2013-06-25 2020-02-18 Wickr Inc. Secure time-to-live
US10129260B1 (en) 2013-06-25 2018-11-13 Wickr Inc. Mutual privacy management
US9830089B1 (en) 2013-06-25 2017-11-28 Wickr Inc. Digital data sanitization
US9866591B1 (en) 2013-06-25 2018-01-09 Wickr Inc. Enterprise messaging platform
KR20150008546A (ko) * 2013-07-15 2015-01-23 삼성전자주식회사 보안 다운로드 및 기능 실행방법 및 장치
CN105518621B (zh) 2013-07-31 2019-09-17 马维尔国际贸易有限公司 将引导操作并行化的方法
US9578052B2 (en) 2013-10-24 2017-02-21 Mcafee, Inc. Agent assisted malicious application blocking in a network environment
US9753796B2 (en) 2013-12-06 2017-09-05 Lookout, Inc. Distributed monitoring, evaluation, and response for multiple devices
US10122747B2 (en) 2013-12-06 2018-11-06 Lookout, Inc. Response generation after distributed monitoring and evaluation of multiple devices
CN106030526B (zh) * 2013-12-13 2019-01-18 雷蛇(亚太)私人有限公司 装置、更新器、控制装置的方法、及控制更新器的方法
US9698976B1 (en) 2014-02-24 2017-07-04 Wickr Inc. Key management and dynamic perfect forward secrecy
KR102139546B1 (ko) 2014-03-11 2020-07-30 삼성전자주식회사 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법
CN103870745B (zh) * 2014-04-01 2017-08-29 联想(北京)有限公司 电子设备和安全启动电子设备的方法
US9195831B1 (en) * 2014-05-02 2015-11-24 Google Inc. Verified boot
WO2015172352A1 (en) * 2014-05-15 2015-11-19 Seagate Technology Llc Storage device tampering detection
CN103955648B (zh) * 2014-05-15 2017-02-01 乐视致新电子科技(天津)有限公司 校验系统镜像合法性的方法及装置
JP6188633B2 (ja) * 2014-05-26 2017-08-30 Kddi株式会社 コンピュータシステム、コンピュータ、半導体装置、情報処理方法およびコンピュータプログラム
US9584530B1 (en) 2014-06-27 2017-02-28 Wickr Inc. In-band identity verification and man-in-the-middle defense
TWI526867B (zh) * 2014-09-11 2016-03-21 普易科技股份有限公司 電子裝置與其資訊更新控制模組
CN105765897B (zh) 2014-11-06 2019-06-28 华为技术有限公司 一种安全信息配制方法、安全验证方法以及相关芯片
US9489542B2 (en) 2014-11-12 2016-11-08 Seagate Technology Llc Split-key arrangement in a multi-device storage enclosure
CN104317668A (zh) * 2014-11-18 2015-01-28 深圳市汇顶科技股份有限公司 移动终端中恶意操作的识别方法和装置
US9654288B1 (en) 2014-12-11 2017-05-16 Wickr Inc. Securing group communications
CN105989306B (zh) * 2015-02-13 2020-04-28 中兴通讯股份有限公司 操作系统的文件签名方法、文件校验方法及装置
EP3289510B1 (en) 2015-05-01 2020-06-17 Lookout Inc. Determining source of side-loaded software
US9954871B2 (en) * 2015-05-06 2018-04-24 Hand Held Products, Inc. Method and system to protect software-based network-connected devices from advanced persistent threat
CN104866343A (zh) * 2015-05-15 2015-08-26 长城信息产业股份有限公司 一种嵌入式设备的安全启动方法及启动安全的嵌入式设备
US9697371B1 (en) * 2015-06-30 2017-07-04 Google Inc. Remote authorization of usage of protected data in trusted execution environments
US10754956B2 (en) 2015-11-17 2020-08-25 Andium Inc. Security stack for embedded systems
US11386067B2 (en) * 2015-12-15 2022-07-12 Red Hat, Inc. Data integrity checking in a distributed filesystem using object versioning
US9590956B1 (en) 2015-12-18 2017-03-07 Wickr Inc. Decentralized authoritative messaging
US10291607B1 (en) 2016-02-02 2019-05-14 Wickr Inc. Providing real-time events to applications
US10659234B2 (en) 2016-02-10 2020-05-19 Cisco Technology, Inc. Dual-signed executable images for customer-provided integrity
US10037201B2 (en) * 2016-02-26 2018-07-31 Dell Products L.P. Secure live media boot system
WO2017168228A1 (en) 2016-03-08 2017-10-05 Marvell World Trade Ltd. Methods and apparatus for secure device authentication
US9596079B1 (en) 2016-04-14 2017-03-14 Wickr Inc. Secure telecommunications
US9590958B1 (en) 2016-04-14 2017-03-07 Wickr Inc. Secure file transfer
US9916452B2 (en) 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10789371B2 (en) * 2016-06-20 2020-09-29 Intel Corporation Technologies for trusted I/O with a channel identifier filter and processor-based cryptographic engine
JP6585019B2 (ja) * 2016-09-13 2019-10-02 株式会社東芝 ネットワーク監視装置、ネットワークシステムおよびプログラム
US10528765B2 (en) * 2016-09-16 2020-01-07 Intel Corporation Technologies for secure boot provisioning and management of field-programmable gate array images
US10212113B2 (en) * 2016-09-19 2019-02-19 Google Llc Uniform resource identifier and image sharing for contextual information display
WO2018053855A1 (en) * 2016-09-26 2018-03-29 Mcafee, Inc. Enhanced secure boot
CN106656502B (zh) * 2016-09-26 2020-09-01 上海兆芯集成电路有限公司 计算机系统及安全执行的方法
US10069633B2 (en) * 2016-09-30 2018-09-04 Data I/O Corporation Unified programming environment for programmable devices
US10992482B2 (en) 2017-01-12 2021-04-27 Google Llc Verified boot and key rotation
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
US10521617B2 (en) 2017-08-14 2019-12-31 Western Digital Technologies, Inc. Non-volatile memory device with secure read
CN109614798B (zh) * 2017-09-30 2022-12-27 华为技术有限公司 安全启动方法、装置及终端设备
CN109725980B (zh) * 2017-10-27 2023-05-16 伊姆西Ip控股有限责任公司 生成镜像标签的方法、设备以及计算机可读介质
US10541814B2 (en) 2017-11-08 2020-01-21 Wickr Inc. End-to-end encryption during a secure communication session
US10855440B1 (en) 2017-11-08 2020-12-01 Wickr Inc. Generating new encryption keys during a secure communication session
US10778432B2 (en) 2017-11-08 2020-09-15 Wickr Inc. End-to-end encryption during a secure communication session
US11101999B2 (en) 2017-11-08 2021-08-24 Amazon Technologies, Inc. Two-way handshake for key establishment for secure communications
IL256042B (en) * 2017-11-30 2018-11-29 Aspir Oren System and method for code protection against cyber threat
CN108287662A (zh) * 2017-12-08 2018-07-17 五八有限公司 获取设备唯一标识的方法、设备及计算机可读存储介质
EP3509003B1 (en) * 2018-01-04 2021-04-21 Shenzhen Goodix Technology Co., Ltd. Method and apparatus to protect code processed by an embedded micro-processor against altering
KR102501695B1 (ko) * 2018-01-15 2023-02-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10984107B2 (en) * 2018-04-24 2021-04-20 Mellanox Technologies, Ltd. Secure boot
US11055105B2 (en) * 2018-08-31 2021-07-06 Micron Technology, Inc. Concurrent image measurement and execution
CN113056739A (zh) * 2018-09-27 2021-06-29 兰迪斯+盖尔创新有限公司 到瞬态、非持久性存储电路中的文件系统的验证和安装
US11562073B2 (en) * 2018-11-28 2023-01-24 The Boeing Company Systems and methods of software load verification
WO2020140257A1 (en) * 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
CN112347481B (zh) * 2019-08-06 2024-04-23 华为技术有限公司 安全启动方法、控制器和控制系统
KR20210041932A (ko) * 2019-10-08 2021-04-16 한화테크윈 주식회사 보안 부팅 장치 및 그 동작 방법
CN111125725A (zh) * 2019-11-22 2020-05-08 苏州浪潮智能科技有限公司 一种镜像校验的加解密方法、设备及介质
WO2021118471A1 (en) * 2019-12-11 2021-06-17 Skylab Networks Pte. Ltd. System and method for processing data
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
WO2022055804A1 (en) * 2020-09-08 2022-03-17 Osom Products, Inc. Mobile device with secure private memory
US11741232B2 (en) 2021-02-01 2023-08-29 Mellanox Technologies, Ltd. Secure in-service firmware update
WO2022261865A1 (zh) * 2021-06-16 2022-12-22 华为技术有限公司 一种芯片安全启动方法及芯片
CN117009003B (zh) * 2023-09-28 2024-01-09 飞腾信息技术有限公司 一种安全启动方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US20030056107A1 (en) 2001-09-17 2003-03-20 Cammack William E. Secure bootloader for securing digital devices
US20050138409A1 (en) 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121345A (en) * 1988-11-03 1992-06-09 Lentz Stephen A System and method for protecting integrity of computer data and software
US4975950A (en) * 1988-11-03 1990-12-04 Lentz Stephen A System and method of protecting integrity of computer data and software
US5713024A (en) * 1994-06-10 1998-01-27 Exabyte Corporation Cold boot data backup system
US7124302B2 (en) 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US6620047B1 (en) 1995-06-29 2003-09-16 Igt Electronic gaming apparatus having authentication data sets
US7092369B2 (en) * 1995-11-17 2006-08-15 Symbol Technologies, Inc. Communications network with wireless gateways for mobile terminal access
US6260078B1 (en) * 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US7020638B1 (en) 1996-11-18 2006-03-28 Microsoft Corporation System and method for flexible micropayment of low value electronic assets
US6370249B1 (en) 1997-07-25 2002-04-09 Entrust Technologies, Ltd. Method and apparatus for public key management
US6167521A (en) * 1997-08-29 2000-12-26 International Business Machines Corporation Securely downloading and executing code from mutually suspicious authorities
US5991399A (en) 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
US6532451B1 (en) * 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US6965999B2 (en) * 1998-05-01 2005-11-15 Microsoft Corporation Intelligent trust management method and system
DE69942712D1 (de) 1998-05-29 2010-10-14 Texas Instruments Inc Sichere Rechnervorrichtung
US6473791B1 (en) * 1998-08-17 2002-10-29 Microsoft Corporation Object load balancing
US6330670B1 (en) * 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6587947B1 (en) * 1999-04-01 2003-07-01 Intel Corporation System and method for verification of off-chip processor code
EP1085396A1 (en) 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6715067B1 (en) * 1999-09-21 2004-03-30 Intel Corporation Initializing a processor-based system from a non-volatile re-programmable semiconductor memory
US7080037B2 (en) 1999-09-28 2006-07-18 Chameleon Network Inc. Portable electronic authorization system and method
US6711688B1 (en) 1999-11-30 2004-03-23 International Business Machines Corporation Pre-execution logon (PEL)
US6757824B1 (en) 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US6188602B1 (en) * 2000-01-25 2001-02-13 Dell Usa, L.P. Mechanism to commit data to a memory device with read-only access
CA2417770C (en) 2000-08-04 2011-10-25 First Data Corporation Trusted authentication digital signature (tads) system
US7010691B2 (en) 2000-08-04 2006-03-07 First Data Corporation ABDS system utilizing security information in authenticating entity access
US20020078380A1 (en) 2000-12-20 2002-06-20 Jyh-Han Lin Method for permitting debugging and testing of software on a mobile communication device in a secure environment
KR20020094031A (ko) * 2001-03-09 2002-12-16 코닌클리케 필립스 일렉트로닉스 엔.브이. 새로운 컴포넌트들을 검증하는 서버를 가진 시스템
US7721110B2 (en) 2001-04-06 2010-05-18 Mcafee, Inc. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US7624444B2 (en) 2001-06-13 2009-11-24 Mcafee, Inc. Method and apparatus for detecting intrusions on a computer system
FI114416B (fi) * 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
DE60228027D1 (de) 2001-07-06 2008-09-18 Texas Instruments Inc Sicherer Bootloader zum Sichern digitaler Geräte
US7178141B2 (en) 2001-07-30 2007-02-13 International Business Machines Corporation Method and system for identifying compatibility between firmware images
US20070277037A1 (en) 2001-09-06 2007-11-29 Randy Langer Software component authentication via encrypted embedded self-signatures
US20030059049A1 (en) * 2001-09-24 2003-03-27 Mihm Thomas J. Method and apparatus for secure mobile transaction
US7345671B2 (en) * 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
US7243230B2 (en) * 2001-11-16 2007-07-10 Microsoft Corporation Transferring application secrets in a trusted operating system environment
US7558953B2 (en) * 2002-01-18 2009-07-07 Telefonaktiebolaget L M Ericsson (Publ) Loading data into a mobile terminal
US7017004B1 (en) 2002-03-29 2006-03-21 Microsoft Corporation System and method for updating contents of a flash ROM
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US6907522B2 (en) 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
WO2004015553A1 (en) * 2002-08-13 2004-02-19 Nokia Corporation Computer architecture for executing a program in a secure of insecure mode
US7587600B2 (en) * 2002-09-16 2009-09-08 Telefonaktiebolaget L M Ericsson (Publ.) Loading data onto an electronic device
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot
US20040092310A1 (en) * 2002-11-07 2004-05-13 Igt Identifying message senders
US7440571B2 (en) 2002-12-03 2008-10-21 Nagravision S.A. Method for securing software updates
JP2004265286A (ja) * 2003-03-04 2004-09-24 Fujitsu Ltd 環境に応じて選択されたセキュリティ・ポリシーに従うモバイル機器の管理
US8041957B2 (en) 2003-04-08 2011-10-18 Qualcomm Incorporated Associating software with hardware using cryptography
US7627343B2 (en) * 2003-04-25 2009-12-01 Apple Inc. Media player system
US7257623B2 (en) 2003-05-28 2007-08-14 Oracle International Corporation Method and apparatus for ensuring an allowable client configuration for an application
CN1553315A (zh) 2003-06-06 2004-12-08 微软公司 在安全引导装载程序中使用散列技术
US7313690B2 (en) 2003-06-27 2007-12-25 Microsoft Corporation Three way validation and authentication of boot files transmitted from server to client
US7142891B2 (en) 2003-10-10 2006-11-28 Texas Instruments Incorporated Device bound flashing/booting for cloning prevention
US20050132357A1 (en) 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
EP2506486A1 (en) * 2004-02-23 2012-10-03 Lexar Media, Inc. Secure compact flash
US8112618B2 (en) * 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
US7805614B2 (en) 2004-04-26 2010-09-28 Northrop Grumman Corporation Secure local or remote biometric(s) identity and privilege (BIOTOKEN)
CN1961557B (zh) * 2004-05-31 2011-03-30 意大利电信股份公司 通信网络中的安全连接方法和系统
WO2006003675A2 (en) 2004-07-12 2006-01-12 Syed Ibrahim Abdul Hameed Khan System, method of generation and use of bilaterally generated variable instant passwords
US20060064488A1 (en) 2004-09-17 2006-03-23 Ebert Robert F Electronic software distribution method and system using a digital rights management method based on hardware identification
US7690033B2 (en) * 2004-09-28 2010-03-30 Exobox Technologies Corp. Electronic computer system secured from unauthorized access to and manipulation of data
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
EP1659472A1 (en) 2004-11-22 2006-05-24 Research In Motion Limited Method and Device for Authenticating Software
US7383438B2 (en) 2004-12-18 2008-06-03 Comcast Cable Holdings, Llc System and method for secure conditional access download and reconfiguration
US7454616B2 (en) * 2005-01-07 2008-11-18 General Instrument Corporation Code authentication upon bootup for cable modems
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
US8024488B2 (en) 2005-03-02 2011-09-20 Cisco Technology, Inc. Methods and apparatus to validate configuration of computerized devices
US7591014B2 (en) * 2005-03-04 2009-09-15 Microsoft Corporation Program authentication on environment
WO2006122228A2 (en) * 2005-05-10 2006-11-16 Angeline Brent J Internet operating system
US7913289B2 (en) * 2005-05-23 2011-03-22 Broadcom Corporation Method and apparatus for security policy and enforcing mechanism for a set-top box security processor
US7702821B2 (en) 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20070136807A1 (en) 2005-12-13 2007-06-14 Deliberato Daniel C System and method for detecting unauthorized boots
SE531992C2 (sv) 2006-02-24 2009-09-22 Oniteo Ab Metod och system för säker programvaruprovisionering
DE602006005220D1 (de) 2006-03-06 2009-04-02 St Microelectronics Res & Dev Schaltungssicherheit
US20100146380A1 (en) 2006-09-26 2010-06-10 Accoona Corp. Apparatuses, Methods and Systems For An Information Comparator Preview Generator
US20080082680A1 (en) 2006-09-29 2008-04-03 Karanvir Grewal Method for provisioning of credentials and software images in secure network environments
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US8615799B2 (en) 2008-05-24 2013-12-24 Via Technologies, Inc. Microprocessor having secure non-volatile storage access
US8719901B2 (en) 2008-10-24 2014-05-06 Synopsys, Inc. Secure consultation system
US20100161879A1 (en) 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US20030056107A1 (en) 2001-09-17 2003-03-20 Cammack William E. Secure bootloader for securing digital devices
US20050138409A1 (en) 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device

Also Published As

Publication number Publication date
US20080165952A1 (en) 2008-07-10
KR20110075050A (ko) 2011-07-05
CN101578609A (zh) 2009-11-11
US8254568B2 (en) 2012-08-28
KR20090108706A (ko) 2009-10-16
US20130024677A1 (en) 2013-01-24
EP2111598A2 (en) 2009-10-28
WO2008085449A2 (en) 2008-07-17
JP2010515966A (ja) 2010-05-13
WO2008085449A3 (en) 2008-10-16
EP3575999A1 (en) 2019-12-04
KR101066727B1 (ko) 2011-09-21
US8688967B2 (en) 2014-04-01
CN101578609B (zh) 2013-08-21
JP4971466B2 (ja) 2012-07-11

Similar Documents

Publication Publication Date Title
US10931451B2 (en) Securely recovering a computing device
KR101066779B1 (ko) 컴퓨팅 장치의 보안 부팅
US8826405B2 (en) Trusting an unverified code image in a computing device
US8789037B2 (en) Compatible trust in a computing device
US8560820B2 (en) Single security model in booting a computing device
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
US20090259855A1 (en) Code Image Personalization For A Computing Device
JP4848458B2 (ja) 永続的セキュリティシステム及び永続的セキュリティ方法
JP2010073193A5 (ko)
JP2010073193A (ja) モバイルインターネットデバイス(mid)でuefiファームウェア及びuefiアウェアなオペレーティングシステムのセキュアなブートのためのシステム及び方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140825

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 8