KR101190479B1 - 티켓 인증 보안 설치 및 부트 - Google Patents

티켓 인증 보안 설치 및 부트 Download PDF

Info

Publication number
KR101190479B1
KR101190479B1 KR1020117004775A KR20117004775A KR101190479B1 KR 101190479 B1 KR101190479 B1 KR 101190479B1 KR 1020117004775 A KR1020117004775 A KR 1020117004775A KR 20117004775 A KR20117004775 A KR 20117004775A KR 101190479 B1 KR101190479 B1 KR 101190479B1
Authority
KR
South Korea
Prior art keywords
ticket
component
boot
components
machine
Prior art date
Application number
KR1020117004775A
Other languages
English (en)
Other versions
KR20110050488A (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 KR20110050488A publication Critical patent/KR20110050488A/ko
Application granted granted Critical
Publication of KR101190479B1 publication Critical patent/KR101190479B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Abstract

티켓에 의해 인증되는 장치를 부팅하기 위한 보안 소프트웨어 설치를 위한 방법 및 장치가 본 명세서에서 설명된다. 장치를 오퍼레이팅 상태로 부팅하기 위한 하나 이상의 구성요소에 대한 속성들을 포함하는 티켓을 요청하는 장치의 장치 식별자를 포함하는 티켓 요청이 송신된다. 티켓이 암호적으로 유효화되어 하나 이상의 구성요소를 티켓에 포함되는 대응하는 속성들과 매치시킨다. 성공적으로 매치되면, 하나 이상의 구성요소가 실행되어 장치를 부팅한다.

Description

티켓 인증 보안 설치 및 부트{TICKET AUTHORIZED SECURE INSTALLATION AND BOOT}
본 출원은 2008년 7월 28일 출원된 Jerry Hauck 등의 발명의 명칭이 "인증된 설치 및 상호 구성요소 보안 부트(Authorized Installation and Cross-Component Secured Boot)"인 미국 특허 가출원 제61/084,170호와 관련되고 이에 우선권을 주장하며, 이 내용은 전체가 본 명세서에서 참조에 의해 통합된다.
본 발명은 일반적으로 장치의 소프트웨어 설치 및 부팅에 관한 것이다. 보다 구체적으로, 본 발명은 부트 구성요소들을 안전하게 설치하고 수신된 티켓에 따라 인증된 오퍼레이팅 상태로 장치를 부팅하는 것에 관한 것이다.
더욱 더 많은 컴퓨팅 장치들이 사람들의 일상 생활에서 사용됨에 따라, 사용자 및 콘텐츠 제공자에게 있어 전반적으로 보안 문제가 관심 사항이 되었다. 바이러스, 웜, 트로이 목마, 아이디 도용, 소프트웨어 및 매체 콘텐츠 해적, 및 데이터 파괴의 위협을 이용하는 강탈이 만연해 있다. 대체로, 이러한 공격들은 원래는 시스템, 콘텐츠 제공자, 사용자 또는 애플리케이션에 전용되는 장치 자원들로의 액세스를 노출하는 악의적인 소프트웨어 코드를 설치 및 실행하는 것을 수반한다.
오퍼레이팅 시스템은 이러한 공격들에 대해 보호하는 일부 보안 기능을 제공할 수 있다. 그러나, 오퍼레이팅 시스템의 보안 기능은 종종 매일 발생하는 새로운 공격들에 맞서지 못한다. 더욱이, 컴퓨터 장치를 부팅하는 경우, 보안 기능이 아직 초기화되지 않을 수 있고 바이패스 및/또는 조작에 취약하다.
시스템 부당 이용의 가능성을 줄이기 위해, 보안 부트 시스템이 사용되어 각각의 제작 소프트웨어 이미지에 대해 서명 확인을 요구할 수 있다. 그러나, 이러한 코드 검사 방법은, 관여된 코드들의 수가 보통은 매우 크고 계속하여 증가하기 때문에 완전한 보호 수단이 될 수 없다.
따라서, 기존의 보안 수단들은 컴퓨팅 장치 내의 애플리케이션 및 콘텐츠를 보호하면서 그와 동시에 장치에 대해 소프트웨어 및/또는 펌웨어를 업데이트하는 유연성을 제공하는 안정적 해결책을 제시하지 못한다.
티켓에 의해 인증된 장치를 부팅하기 위한 보안 소프트웨어 설치를 위한 방법 및 장치가 본 명세서에서 설명된다. 장치의 장치 식별자를 포함하는 티켓 요청이 장치를 오퍼레이팅 상태로 부팅하기 위한 하나 이상의 구성요소에 대한 속성들을 포함하는 티켓에 대해 보내진다. 티켓이 하나 이상의 구성요소를 티켓에 포함되는 대응하는 속성들과 매치(match)시키기 위해 암호로 검증된다. 만약 성공적으로 매치되면, 하나 이상의 구성요소가 실행되어 장치를 부팅한다.
본 발명의 다른 특징들은 첨부된 도면 및 이하의 상세한 설명으로부터 명확해질 것이다.
본 발명은 예로서 설명되는 것이고, 유사한 참조번호는 유사한 요소를 지칭하는 첨부된 도면들에 한정되는 것이 아니다.
도 1은 인증된 티켓들에 따라 장치를 안전하게 부팅하기 위한 부트 구성요소들을 설치하는 것을 인증하는 네트워킹된 시스템들의 일 실시예를 도시한 블록도.
도 2는 장치를 부팅하기 위한 부트 구성요소들을 설치하기 위한 인증된 티켓을 수신하는 시스템 구성요소들의 일 실시예를 도시한 블록도.
도 3은 티켓에 의해 인증된 부트 구성요소들을 설치하는 프로세스의 일 실시예를 도시한 흐름도.
도 4는 티켓이 기초하여 장치를 부팅하는 프로세스의 일 실시예를 도시한 흐름도.
도 5는 티켓에 의해 인증된 부트 구성요소들을 설치하여 장치를 부팅하는 프로세스의 일 실시예를 도시한 흐름도.
도 6은 장치에 대해 개인화된 부트 구성요소를 검증하는 프로세스의 일 실시예를 도시한 흐름도.
도 7은 장치를 부팅하기 위한 부트 구성요소들을 인증하는 티켓을 요청하는 프로세스의 일 실시예를 도시한 흐름도.
도 8은 티켓에 따라 장치를 부팅하는데 개인화된 부트 구성요소들을 설치하는 프로세스의 일 실시예를 도시한 흐름도.
도 9는 장치를 부팅하기 위한 티켓에 의해 인증된 부트 구성요소들을 설치하는 프로세스의 일 실시예를 도시한 순서도.
도 10은 장치를 부팅하기 위한 부트 구성요소들을 인증하기 위한 티켓의 일 예를 도시하는 샘플 포맷.
도 11은 본 명세서에서 설명된 실시예들과 함께 사용될 수 있는 통상적인 컴퓨터 시스템의 일 예를 도시하는 도면.
도 12는 본 발명의 일 실시예와 함께 사용될 수 있는 데이터 프로세싱 시스템의 예를 보여주는 도면.
티켓에 의해 인증된 장치를 부팅하기 위한 보안 소프트웨어 설치를 위한 방법 및 장치가 본 명세서에서 설명된다. 다음의 설명에서, 여러 구체적인 상세한 설명들이 본 발명의 실시예들의 상세한 설명을 제공하기 위해 제시된다. 그러나, 당업자라면 본 발명의 실시예들은 구체적인 상세한 내용 없이도 실시될 수 있음을 알 수 있다. 다른 예에서, 공지의 구성요소들, 구조들, 및 기술들은 본 설명의 이해에 지장을 주지 않기 위해 상세하게 설명되지 않았다.
명세서에서 "일 실시예" 또는 "하나의 실시예"의 언급은 실시예와 함께 설명되는 특정 기능, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 본 명세서의 여러 곳에서의 "일 실시예에서"라는 구문의 언급은 반드시 동일한 실시예를 의미하지 않는다.
아래의 도면들에서 묘사되는 프로세스들은 하드웨어(예컨대, 회로, 전용 로직 등), 소프트웨어(이를테면 범용 컴퓨터 시스템 또는 전용 머신 상에서 운용되는 것), 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 프로세스들이 아래에서 일부 순차적인 작업들에 의해 설명되지만, 이는 설명되는 작업들 중 일부가 다른 순서로 수행될 수 있다는 것을 알 수 있다. 더욱이, 일부 작업들은 순차적이 아닌 병렬적으로 수행될 수 있다.
"호스트"라는 용어 및 "장치"라는 용어는 구체적으로 장치에 대한 폼 팩터 대비 호스트에 대한 특정 폼 팩터를 언급하기보다는 데이터 프로세싱 시스템을 일반적으로 지칭한다.
일 실시예에서, 장치당 디지털 서명이 원격 서버에 의해 설치 시간 동안 생성되도록 함으로써, 소위 말하는 개발자들이 고양이를 다시 가방에 담도록 하는 기법이 본 명세서에서 설명된다. 따라서, 만약 소프트웨어의 특정 버전에 부당이용이 발견되면, 서버는 임의의 유닛이 이 버전을 설치하는 것을 거부할 수 있다. 더욱이, 서버 생성 개인화된 서명은 설치된 부트 구성요소들의 집합 전체를 보호하여, 개별적으로 서명된 구성요소들의 혼합 및 매칭으로부터 잠재적 노출을 줄일 수 있다. 부트 구성요소는 장치를 부팅하기 위한 소프트웨어 구성요소가 될 수 있다.
본 발명의 특정 실시예들에 따르면, 잠재적으로 세가지 주요 보안 보호가 제공된다
·새롭게 제작된 유닛들이 부당이용가능한 릴리스(release) 설치하는 것을 막음
·기존의 인필드 유닛들이 부당이용가능한 릴리스를 다시 설치하는 것을 막음
·서명된 구성요소들의 임의의 혼합 및 매칭을 막음
처음 두 보호를 만족시키는데 필요한 릴리스 후 철회가 장치별로 코드 서명들을 개인화하여 달성될 수 있다. 예를 들어, Apple ROM(리드 온니 메모리)의 Image 3 기초를 이용하여, 개별 장치들이 장치에 대해 개인화되지 않은 임의의 로우 레벨 부트 구성요소들을 실행하지 못하게 할 수 있다. 장치별 서명(각 장치에 고유함)은 원격 서버에 의해 설치 시간에 효과적으로 생성되어, 장치 측 서명 및 개인화에 내재하는 보안 위험을 피할 수 있다. 주어진 릴리스의 필요한 개인화를 유보하거나 안전하게 유지하는 서버 측 결정은 적어도 신규 제조 유닛의 측면으로부터 릴리스의 설치자의 철회에 해당한다. 장치 발생 랜덤 일회값(nonce)을 서버 교환에 포함시키는 것은 인필드 유닛들 상의 이전 설치들의 다시보기를 제거할 수 있다.
서버 생성 개인화는 "티켓"의 생성을 포함한다. 티켓은 보안 부트 및 복구 프로세스의 각 구성요소에 대한 버전 식별자들 및 예상 해시들의 모음을 제공할 수 있다. 모음은 장치 고유 식별자를 통해 주어진 유닛으로 개인화된다. 개인화를 포함하는 전체 모음은 단일 서명으로 보호될 수 있다. 일단 유닛(예컨대, 전자 장치)으로 전달되고 검증되면, 티켓이 장치에 대한 특정 릴리스를 정의하는 예상 및 허용된 구성요소 버전들에 대한 중앙 권한자로 역할을 할 수 있다. 중앙 티켓의 해당 값들에 대하여 각 스테이지의 차후 부트 시간 측정을 검증함으로써, 장치는 서버에 대한 구성요소들의 혼합 및 매칭의 권한을 그만둘 수 있다.
서버 측 개인화 및 인증 기능들에 유지되는 유연한 방침들은 여러 보안 및 논리적 문제점들, 예컨대 시스템의 P2 버전에 관한 문제점들을 해결할 수 있다. 예를 들어, 특수 소프트웨어는 인증되지 않거나 제3 자의 코드를 실행하는 것이 요구되지 않는다. 추가적으로, 서버 상의 많은 바람직한 리스트는 생산 유닛들을 개발 유닛들로 및 그 반대로 전환할 수 있거나, 주어진 캐리어 또는 디버그 빌드를 운영할 수 있는 장치들의 수를 빠르게 제한할 수 있다.
도 1은 인증된 티켓들에 따라 장치를 안전하게 부팅하기 위한 부트 구성요소들을 설치하는 것을 인증하는 네트워킹된 시스템들(100)의 일 실시예를 도시한 블록도이다. 네트워킹된 시스템들(100)은 신뢰 및/또는 비신뢰 네트워크를 통해 장치에 결합되는 하나 이상의 서버를 포함하여 장치를 부팅하기 위한 티켓에 의해 인증되는 부트 구성요소들을 제공할 수 있다. 일 실시예에서, 네트워크 시스템들(100)은 장치(115)에 대해 상이한 빌드의 오퍼레이팅 환경들을 생성할 수 있는 구성요소 빌드 서버(101)를 포함한다. 각 빌드는 다양한 버전의 복수의 부트 구성요소를 포함할 수 있다. 빌드가 구성요소 빌드 서버(101)로부터 릴리스되는 경우, 구성요소 빌드 서버(101)는 티켓 서명 인증들을 생성하여 티켓 인증 서버(113)를 설정할 수 있다. 티켓 서명 인증은 예컨대 장치 식별자 및/또는 장치 클래스 식별자 등에 기초하여 어떤 버전의 부트 구성요소들 및/또는 부트 구성요소들의 조합이 특정 장치에 대해 허용되는지를 명시하는 명령들을 포함할 수 있다.
일 실시예에서, 작업 방침들(operational policies)이 발행된 티켓 서명 인증의 종류를 결정한다. 작업 방침들은 생산 방침, 내부 방침, 공장 방침, 및 기타 옵션 방침을 포함할 수 있다. 생산 방침에 관하여, 구성요소 빌드 서버(101)와 같은 구성요소 빌드 서버만이 생산에 대한 티켓 서명 인증을 발행할 것이다. 생산 티켓 서명 인증은 장치의 바람직한 리스트(whitelist) 뿐만 아니라 와일드카드 다이제스트를 포함하지 않을 수 있어, 장치 클래스 뿐만 아니라 티켓 요청의 모든 다이제스트들이 티켓 서명 인증의 것들과 매치하도록 요구한다. 내부 방침에 대해, 내부 티켓 서명 인증들이 장치가 임의의 소프트웨어를 설치하고 실행하도록 하는 내부 사용을 위해 와일드카드 다이제스트 및/또는 장치의 바람직한 리스트를 포함할 수 있다. 통상적으로, 내부 티켓 서명 인증을 갖는 티켓 인증 서버들은 내부 네트워크 상에서만 액세스가능하거나, 보안된 통신 채널을 통해서만 액세스가능할 수 있다. 와일드카드 다이제스트는 티켓 요청에 포함된 실제 다이제스트/해시 값들에 상관없이 티켓 요청에 매치할 수 있다. 서명 인증 내의 장치의 바림직한 리스트는 장치의 고유 식별자가 바람직한 리스트 내에 있어야만 장치에 대한 티켓을 발행할 수 있다.
공장 방침에 대해, 공장 티켓 서명 인증은 선택된 부트 구성요소들(예컨대, 커널캐시 구성요소 및 NOR 진단 구성요소)에 대한 와일드카드 다이제스트들을 포함하여 장치가 어느 버전의 선택된 부트 구성요소가 현재 장치에서 실행되고 있는지에 관계없이 릴리스된 소프트웨어를 설치할 수 있게 한다. 공장 티켓 서명 인증을 갖는 공장 인증 서버는 공장 밖에서 액세스가능하지 않을 수 있다. 신규 방침들은제한된 유효 날짜 또는 바람직하게 리스트된 유닛들을 갖는 티켓 서명 인증들을 생성하여 온 더 플라이(on the fly)로 생성될 수 있다(예컨대, 캐리어 드롭이 사전설정된 장치 목록 상에서 운영될 수 있다).
티켓 인증 서버(113)가 구성되는 경우, 구성 데이터가 수신된 티켓 서명 인증에 따라 업데이트될 수 있다. 일 실시예에서, 구성요소 빌드 서버(101) 및 티켓 인증 서버(113)는 신뢰 네트워크 연결(111)을 통해 통신적으로 결합된다. 네트워크는 보안 위치에 물리적으로 위치하여 신뢰될 수 있다. 또는, 네트워크는 암호 프로토콜에 기초한 보안 연결, 예컨대 SSL(Secure Socket Layer), PVN(Private Virtual Networking), 또는 기타 보안 연결에 따라 신뢰될 수 있다.
일 실시예에서, 호스팅 서버(107)가 비신뢰 네트워크, 예컨대 인터넷 또는 인트라넷이 될 수 있는 네트워크(111)를 통해 구성요소 빌드 서버(101)로부터 릴리스된 빌드들을 다운로드할 수 있다. 호스팅 서버 내의 빌드 저장소(109)는 다운르드된 빌드들을 저장할 수 있다. 각 빌드는 원시 부트 구성요소들 그룹을 포함할 수 있다. 일 실시예에서, 구성요소 빌드 서버(101)는 티켓 템플릿들을 송신하여 호스팅 서버(107)에 저장되도록 한다. 티켓 템플릿은 단일 빌드에 대한 및/또는 복수의 빌드에 걸친(혼합 및 매치) 원시 부트 구성요소들의 하나 이상의 식별자를 포함할 수 있다. 일 실시예에서, 부트 구성요소의 식별자들은 부트 구성요소 및/또는 버전 수의 콘텐츠로부터 발생된 암호 다이제스트를 포함할 수 있다. 티켓 템플릿은, 예컨대 구성요소 빌드 서버(101)로부터 릴리스된 특정 빌드에 기초하여 호스팅 서버(107)에 저장된 부트 구성요소들의 식별자들을 포함할 수 있다. 원시 부트 구성요소는 특정 장치에 대해 개인화되지 않은 부트 구성요소가 될 수 있다. 일 실시예에서, 장치(115)는 인터넷과 같은 오픈 네트워크(111)를 통해 호스팅 서버(107)로부터 장치(115)를 부팅하는데 필요한 부트 구성요소들을 다운로드할 수 있다. 예를 들어, 장치(115)는 주기적으로 신규 빌드들의 이용가능여부에 대한 조사를 호스팅 서버(107)로 주기적으로 송신하여(예컨대, 장치(115)와 연관된 버전 수에 기초함) 이용가능한 경우 연관된 원시 부트 구성요소들 및/또는 티켓 템플릿들을 다운로드할 수 있다.
통상적으로, 장치(115)는 장치(115) 내부에 저장된(예컨대, 플래시 내) 하나 이상의 개인화된 구성요소들(117)의 그룹에 따라 오퍼레이팅 상태로 부팅할 수 있다. 일 실시예에서, 장치에 대한 개인화된 구성요소는 장치에 대해 고유하게 암호화된, 즉 개인화된 원시 부트 구성요소에 기초할 수 있다. 개인화된 구성요소들(117)의 그룹은, 예컨대 서명된 티켓(119)에 따라 장치(115)에 특수한 하나의 빌드 및/또는 가로지르는 상이한 빌드들로부터 선택된 호스팅 서버로부터 다운로드된 원시 부트 구성요소들의 조합에 기초할 수 있다. 일 실시예에서, 장치(115)는, 예컨대 호스팅 서버(107)로부터 다운로드된 원시 티켓을 포함하는 티켓 요청을 오픈 네트워크(111)를 통해 티켓 인증 서버(113)로 송신하여 부팅하기 위한 장치(115)를 개인화한다. 티켓 인증 서버(113)는 장치(115)에 대한 개인화된 구성요소들(117)의 그룹을 결정하여 구성요소 빌드 서버(101)로부터 수신된 인증들에 따라 구성되도록 티켓을 생성할 수 있다. 서명된 티켓(119)은 티켓 인증 서버(113)에 의해 암호로 서명된 서명을 포함할 수 있다.
도 2는 인증된 티켓을 수신하여 장치를 부팅하기 위한 부트 구성요소들을 설치하는 시스템(200) 구성요소들의 일 실시예를 도시한 블록도이다. 시스템(200)은 도 1의 장치(115)와 같은 장치에 호스팅될 수 있다. 일 실시예에서, 시스템(200)은 메모리, 예컨대 대용량 저장소(221), 예컨대 플래시에 결합된 RAM 및/또는 ROM에 저장된 장치 시스템(207)을 포함한다. 장치 시스템(207)은 외부 인터페이스(201)를 통해 네트워크(219)에 걸쳐 도 1의 호스팅 서버(107) 또는 티켓 인증 서버(113)와 같이 원격 서버와 결합될 수 있다. 일 실시예에서, 장치 시스템(207)은, 예컨대 외부 인터페이스(201)를 통한 USB(Universal Serial Bus) 연결을 이용하여 호스트 장치에 지역적으로 결합될 수 있다.
장치 시스템(207)은 공개 키 암호 작성술에 따라, 예컨대 공장에서 장치 제조 동안 공지의 보안 인가를 위해 사전설치된 루트 공개 키(205)를 포함할 수 있다. 추가적으로, 장치 시스템(207)은 칩 식별자, 칩 시리얼 번호, 장치 클래스 식별자 또는 기타 고유 식별자(unique identifier; UID)와 같은 하나 이상의 장치 식별자(209)를 포함할 수 있다. 장치 식별자들은 장치의 비휘발성 저장소에 저장될 수 있다. 장치의 UID는 장치의 ROM 내에서 제한적으로 액세스될 수 있다. 장치 시스템(207)의 추가적인 고유 식별자가 장치 식별자들(209)로부터의 하나 보다 많은 식별자, 예컨대 칩 식별자 및 칩 시리얼 번호를 조합하여 도출될 수 있다. 일 실시예에서, 대용량 저장소(221)는 로컬 티켓(또는 로컬 부트 티켓)(223) 및 하나 이상의 부트 구성요소, 예컨대 장치 시스템(207)을 부팅하기 위한 구성요소_i(225) 및 구성요소_j(227)를 저장할 수 있다. 로컬 티켓(223)은 장치 시스템(207)의 현재 오퍼레이팅 환경과 연관될 수 있다. 구성요소_i(225) 및 구성요소_j(227)는 도 1의 호스팅 서버(107)와 같은 호스팅 서버로부터 다운로드된 원시 부트 구성요소들(아직 검증 및/또는 개인화되지 않음)이 될 수 있다.
일 실시예에서, 장치 시스템(207)은 티켓 검색 모듈(217), 암호 모듈(213) 및 부트 모듈(215)을 포함한다. 암호 모듈(213)은 예컨대, SHA-1, SHA-224, SHA-256, SHA-384 및 SHA 512와 같은 보안 해싱 알고리즘(Secure Hashing Algorithm; SHA) 해싱 기능, 고급 암호 표준(Advanced Encryption Standard; AES)과 같은 데이터 암호 알고리즘, 및/또는 RSA(Ralph Shamir Adelman) 공개 키 암호 기법과 같은 공개 키 암호 기법에 기초하여 암호화 작업들의 구현을 포함할 수 있다. 티켓 검색 모듈(217)은 도 1의 티켓 인증 서버(113)와 같은 인증 서버로 티켓 요청을 송신하여 장치 시스템(207)을 부팅하기 위한 티켓을 인증할 수 있다. 일 실시예에서, 티켓 검색 모듈(217)이 외부 인터페이스(201)를 통해 수신된 외부 명령에 응답하여 티켓 요청을 송신한다. 티켓 검색 모듈(217)은 티켓 요청에 대해 일회값(211)과 같은 하나 이상의 난수(예컨대, 장치 내부의 기저대역 시스템을 위한 별도의 일회값)를 온 더 플라이로 생성할 수 있다. 일 실시예에서, 티켓 요청은 장치를 부팅하는 설치를 수행하는 경우 서명된 티켓 내에 장치가 액세스하는 하나 이상의 필드를 포함할 수 있다. 예를 들어, 티켓 요청의 필드들은 장치 식별자들(209)과 같은 장치에 대한 식별자들, 일회값(211)과 같은 생성된 난수, 및/또는 포괄적인 구성요소 이름들(또는 포괄적인 ID)의 지도 및 대응하는 고유 구성요소 식별자들(예컨대, 명명된 구성요소로부터 생성된 암호 다이제스트)을 포함할 수 있다. 티켓 요청 내의 장치 식별자는 장치 식별자들(209)로부터의 시리얼 번호 및 칩 식별자의 조합과 같은 장치에 저장된 하나 이상의 식별자로부터 도출될 수 있다. 일부 실시예에서, 티켓 요청은 또한 도 1의 티켓 인증 서버(113)와 같은 인증 서버(또는 티켓 서명 서버)에 제공하는 메타데이터를 포함하여 어느 방침(예컨대, 어느 구성요소가 허용되는지에 관한 제약사항들의 그룹)을 서명된 티켓을 생성하는데 적용하는지 결정한다. 수신된, 예컨대 티켓 인증 서버(113)로부터 수신된 서명된 티켓(119)에 응답하여, 티켓 검색 모듈(217)이 암호 모듈(213)을 호출하여 서명된 티켓(119)이 대응하는 티켓 요청에 대해 생성되는 루트 공개 키(205) 및/또는 일회값(211)에 기초하여 정확한지를 입증할 수 있다. 티켓 검색 모듈(217)은 대용량 저장소(221)에 성공적으로 검증된 티켓을 저장할 수 있다.
일 실시예에 따르면, 부트 모듈(215)은 대용량 저장소(221)로부터 구성요소_j(227)과 같은 부트 구성요소를 로딩하는 것을 포함하는 하나 이상의 부트 작업을 수행한다. 이와 달리 부트 모듈(215)은 외부 인터페이스(201)로부터 외부적으로 부트 구성요소를 수신할 수 있다. 부트 모듈(215)은 암호 모듈(213)을 호출하여 서명된 티켓(119), 장치 식별자(209) 및/또는 루트 공개 키(205)에 따라, 구성요소_j(227)와 같은 부트 구성요소를 검증할 수 있다. 일 실시예에서, 부트 작업은 부트 플래그들(203)에 설정된 값들과 연관된다. 부트 모듈(215)은 부트 작업을 수행하는 경우 부트 플래그들(203)을 업데이트할 수 있다. 일부 실시예에서, 부트 모듈(215)은 암호 모듈(213)을 호출하여 장치 식별자들(209)에 따라 검증된 부트 구성요소를 개인화(예컨대, 암호화)하고 검증된 부트 구성요소를 대용량 저장소(221)에 저장한다. 부트 모듈(215)에서 수행되는 부트 작업은 구성요소_j(227)에서와 같이 검증된 부트 모듈을 활성화하는 것을 포함할 수 있다.
도 3은 티켓에 의해 인증된 부트 구성요소들을 설치하기 위한 프로세스(300)의 일 실시예를 도시하는 흐름도이다. 예시적인 프로세스(300)는 하드웨어(회로, 전용 로직 등), 소프트웨어(전용 머신에서 실행되는 것), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(300)는 도 2의 장치 시스템(207)에 의해 수행될 수 있다. 일 실시예에서, 단계(301)에서, 프로세스(300)의 프로세싱 로직은 티켓 요청을 도 1의 인증(또는 티켓 서명) 서버(113)와 같은 사전결정된 원격 서버로 송신하여 (소프트웨어) 구성요소들 그룹이 장치를 오퍼레이팅 상태로 부팅하도록 한다. 프로세스(300)의 프로세싱 로직은 도 2의 부트 플래그들(203)과 같이 장치에서 설정된 부트 모드에 따라 장치를 부팅하기 위한 티켓 요청을 생성할 수 있다. 티켓 요청은 이름(또는 속성) 값 쌍과 같은 하나 이상의 필드를 포함할 수 있다. 티켓 요청의 필드는 도 2의 장치 식별자들(209)과 같은 장치에 대한 식별자에 대응할 수 있다. 일 실시예에서, 이름 값 쌍은 장치를 부팅시켜 구성요소로부터 생성된 구성요소 식별자 (이름) 및 다이제스트 (값)을 맵핑하기 위한 예상 부트 구성요소들을 명시한다. 다이제스트는 부트 구성요소 내의 이진 코드들의 해시와 같은 고유 암호 값에 의할 수 있다. 일 실시예에서, 프로세스(300)의 프로세싱 로직은 도 2의 대용량 저장소(221)와 같은 저장 장치로부터 검색된 티켓 템플릿에 기초하여 티켓 요청에 대한 하나 이상의 필드를 생성한다. 프로세스(300)의 프로세싱 로직은 난수를 티켓 요청에 포함될 랜덤 챌린저(random challenger)로 생성할 수 있다. 생성된 난수는 도 2의 일회값(211)과 같이 장치에 일시적으로 저장될 수 있다. 각 티켓 요청은 상이한 난수와 고유하게 연관될 수 있다.
다음 단계(303)에서, 프로세스(300)의 프로세싱 로직은 티켓 요청에 응답하여 티켓 인증 서버로부터 서명된 티켓을 수신할 수 있다. 서명된 티켓은 티켓 요청에 따라 장치에 대해 개인화된 필드의 집합을 포함할 수 있다. 예를 들어, 티켓 인증 서버는 티켓 요청 필드에 따라 명시된 부트 구성요소가 티켓 요청에서 식별되는 장치에 대하여 허용되는지 여부를 결정할 수 있다(예컨대, 구성된 방침에 따른 장치에 대한 클래스 및/또는 하나 이상의 고유 식별자에 기초함). 일부 실시예에서, 티켓 인증 서버는 필드를 삽입하여 해당하는 티켓 요청에서 언급되지 않은 부트 구성요소를 명시할 수 있다. 이와 달리, 티켓 인증 서버는 티켓 요청에 포함된 속성 값들과는 다른 속성 값들, 예컨대 상이한 다이제스트 값들을 갖는 상이한 버전들과 연관되는 대응하는 티켓 요청 내에 식별되는 부트 구성요소를 서명된 티켓에 명시할 수 있다. 따라서, 개인화된 티켓들은 상이한 장치들에 대한 부트 구성요소들의 상이한 모음들을 명시할 수 있다.
단계(305)에서, 일 실시예에서, 프로세스(300)의 프로세싱 로직은 수신된 서명된 티켓을 유효화한다. 중요하게, 서명된 티켓은 티켓 인증 서버에 의해 암호화되어 서명된 서명을 포함할 수 있다. 일 실시예에서, 티켓 인증 서버는 장치에 대한 고유 식별자(예컨대, 티켓 요청에 포함됨)를 이용하여 서명된 서명을 암호화하여 서명된 서명을 개인화할 수 있다. 프로세스(300)의 프로세싱 로직은, 예컨대 도 2의 암호 모듈(213)에 따라 서명된 티켓에 대해 암호화 작업을 수행할 수 있다. 일 실시예에서, 서명된 티켓은 증명서 또는 일련의 증명서를 포함한다. 프로세스(300)의 프로세싱 로직은 도 2의 루트 공개 키(205)와 같이 장치에 이미 저장된 신뢰 키에 따라 서명된 티켓 내에 포함된 증명서를 검증하여 포함된 서명에 대하여 서명된 티켓으로부터 생성되는 다이제스트를 확인할 수 있다. 일 실시예에서, 장치에 대해 개인화된 서명된 티켓은 장치에 대한 별개의 식별자들에 의해, 예컨대 장치에 대한 시리즈 번호 및 칩 식별자 각각에 따라 암호화되는 서명 및 증명서를 포함한다. 추가적으로, 서명된 티켓은 랜덤 챌린저(수)를 포함할 수 있다. 프로세스(300)의 프로세싱 로직은 도 2의 일회값(211)과 장치에 저장된 일회값을 갖는 서명된 티켓 내에 포함되는 랜덤 챌린저를 비교하여 서명된 티켓의 유효성을 판단하는데, 예컨대 일회값이 랜덤 챌린저에 매치하는지 여부를 판단한다.
단계(309)에서, 만약 서명된 티켓이 단계(307)에서 유효하다고 판단되면, 프로세스(300)의 프로세싱 로직이 서명된 티켓에 따라 설치를 위한 하나 이상의 부트 구성요소를 로딩할 수 있다. 예를 들어, 프로세스(300)의 프로세싱 로직은 서명된 티켓에서 식별되는 부트 구성요소를 메모리로 로딩할 수 있다. 일 실시예에서, 프로세스(300)의 프로세싱 로직은 도 2의 대용량 저장소(221)와 같은 로컬 저장소로부터 부트 구성요소를 로딩한다. 이와 달리, 프로세스(300)의 프로세싱 로직은 외부 소스, 예컨대 USB를 이용하여 지역적으로 결합된 호스트 장치로부터 수신되는 것과 같이 부트 구성요소를 로딩할 수 있다. 프로세스(300)의 프로세싱 로직은 사전결정된 순서로 로딩할 서명된 티켓에 명시된 부트 구성요소들 중 하나를 선택할 수 있다. 만약 서명된 티켓이 단계(307)에서 유효하지 않다고 판단되면, 프로세스(300)의 프로세싱 로직은 단계(313)에서 유효하지 않은 티켓 핸들링 루틴들을 실행하도록 진행할 수 있는데, 예컨대 도 2의 부트 플래그들(203)과 같은 플래그들을 업데이트하여 부트 오류를 나타낼 수 있다.
단계(311)에서, 프로세스(300)의 프로세싱 로직은 하나 이상의 로딩된 부트 구성요소가 유효한지 여부를 판단할 수 있다. 일 실시예에서, 프로세스(300)의 프로세싱 로직은 부트 구성요소의 암호 다이제스트와 서명된 티켓에 명시된 대응하는 다이제스트를 비교한다. 프로세스(300)의 프로세싱 로직은, 예컨대 도 2의 암호 모듈(213)에 의해 수행되는 해시 기능들에 따라 암호 다이제스트를 생성할 수 있다. 일부 실시예에서, 서명된 티켓 내의 부트 구성요소의 다이제스트를 포함하는 필드는 장치의 고유 식별자에 따라 개인화(예컨대, 암호화)될 수 있다. 프로세스(300)의 프로세싱 로직은 로딩된 부트 구성요소에 대한 서명된 티켓 내에 명시된 버전 수를 로딩된 구성요소 내에(예컨대, 헤더 내에) 포함된 버전 수와 비교할 수 있다. 로딩된 부트 구성요소의 다른 속성들이 서명된 티켓에 명시된 것과 비교될 수 있다. 프로세스(300)의 프로세싱 로직은 만약 부트 구성요소와 연관된 임의의 속성이 서명된 티켓에 명시된 대응하는 속성과 매치하지 않으면 로딩된 부트 구성요소를 무효화할 수 있다.
만약 로딩된 부트 구성요소가 단계(315)에서 유효하면, 일 실시예에서, 프로세스(300)의 프로세싱 로직은 단계(319)에서 로딩된 부트 구성요소들을 시스템으로 설치한다. 부트 구성요소를 설치하는 것은 대용량 저장 장치, 예컨대 도 2의 대용량 저장소(221)에 저장될 부트 구성요소를 개인화하는 것을 포함할 수 있다. 프로세스(300)의 프로세싱 로직은 부트 구성요소를 암호화하여, 예컨대 도 2의 장치 식별자들(209)로부터 도출되는 것과 같이, 장치의 고유 식별자에 따라 부트 구성요소를 개인화할 수 있다. 일 실시예에서, 부트 구성요소를 설치하는 것은 장치를 부팅하기 위한 부트 구성요소를 실행하는 것을 포함한다. 장치를 부팅하기 위한 부트 구성요소를 실행하는 것은 서명된 티켓을 부트 구성요소를 위한 인수(argument)로 전달하는 것을 포함할 수 있다. 만약 로딩된 부트 구성요소가 단계(315)에서 유효하지 않다고 결정되면, 프로세스(300)의 프로세싱 로직은 단계(317)에서 유효하지 않은 구성요소 핸들링 루틴들을 실행하도록 진행하는데, 예컨대 도 2의 부트 플래그들(203)과 같은 플래그들을 업데이트하여, 부트 오류를 나타낼 수 있다.
도 4는 티켓에 기초하여 장치를 부팅하는 프로세스(400)의 일 실시예를 도시하는 흐름도이다. 예시적인 프로세스(400)는 하드웨어(회로, 전용 로직 등), 소프트웨어(전용 머신에서 실행되는 것), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(400)는 도 2의 시스템(200)의 일부 구성요소들에 의해 수행될 수 있다. 단계(401)에서, 일 실시예에서, 프로세스(400)의 프로세싱 로직은, 예컨대 도 2의 부트 플래그들(203)의 설정에 따라 장치에 대한 부트 모드를 결정한다. 만약 장치가 장치 펌웨어 업그레이드(Device Firmware Upgrade; DFU) 모드에 있으면, 일 실시예에서, 프로세싱 로직은 DFU 작업(435)을 수행하도록 진행한다. 그렇지 않으면, 프로세스(400)의 프로세싱 로직은 만약 지역적으로 저장된 로우 레벨 부트(Low Level Boot; LLB) 구성요소가 단계(403)에서 진본인지 암호적으로 확인할 수 있다. LLB 구성요소는 장치를 부팅하기 위한 부트 구성요소가 될 수 있다. 장치, 예컨대 도 2의 대용량 저장소(221)에 지역적으로 저장되는 경우, LLB 구성요소는 UID, 예컨대 도 2의 장치 식별자들(209)을 이용하여 암호화될 수 있다. 장치에 대한 UID는 장치의 ROM 내부에서만 엄격히 액세스가능할 수 있다. 일 실시예에서, LLB 구성요소와 같은 실행가능한 부트 구성요소는, 예컨대 (서명된 또는 미서명된) 다이제스트에 기초하여 버전 식별자, 증명서 및/또는 신뢰 인가에 의해 암호적으로 서명된 서명을 포함한다. 프로세스(400)의 프로세싱 로직은 (예컨대, 하드웨어 설정에 기초하여) 장치에 저장된 연식(epoch) 수를 LLB 구성요소에 포함된 버전 식별자와 비교하여 LLB 구성요소가 진본인지 여부를 판단할 수 있다. 예를 들어, 장치에 저장된 연식 수보다 작은 버전 식별자를 갖는 LLB 구성요소는 장치에서 실행되지 못하게 될 수 있다.
만약 LLB가 단계(405)에서 진본으로 판단되면, 일 실시예에서, 프로세스(400)의 프로세싱 로직은 단계(411)에서 로컬 티켓(지역적으로 저장된 부트 티켓)을 도 2의 대용량 저장소(221)와 같은 저장 장치로부터 보안 RAM으로 복사한다. 프로세스(400)의 프로세싱 로직은, 예컨대 도 3의 단계(305)에서 프로세스(300)의 프로세싱 로직에 의해 수행되는 것과 유사한 작업들에 따라 단계(413)에서 로컬 티켓을 검증할 수 있다. 만약 로컬 티켓이 단계(415)에서 유효하지 않은 것으로 판단되면, 단계(417)에서 프로세스(400)의 프로세싱 로직은 도 2의 부트 플래그들(203)에서와 같이 장치 설정을 업데이트하여 장치를 DFU 모드로 만든다. 그렇지 않으면, 단계(419)에서, 프로세스(400)의 프로세싱 로직은 LLB 구성요소의 버전 식별자를 LLB 구성요소에 대응하는 필드에 따라 로컬 티켓에 명시된 버전과 비교할 수 있다. 만약 LLB 구성요소가 단계(421)에서 로컬 티켓과 매치하는 버전을 포함하지 않으면, 프로세스(400)의 프로세싱 로직은 단계(417)에서 장치를 DFU 모드로 구성할 수 있다. 그렇지 않으면, 일 실시예에서, 단계(423)에서, 프로세스(400)의 프로세싱 로직은 도 2의 대용량 저장소(221)와 같은 로컬 저장 장치에 위치하는 iBoot 구성요소로부터 암호 다이제스트를 생성하여 로컬 티켓에 명시된 대응하는 다이제스트와 비교할 다이제스트를 생성한다. iBoot 구성요소는 제2 스테이지 부트 로더를 위한 부트 구성요소가 될 수 있다.
단계(425)에서, 만약 iBoot 구성요소에 대해 생성된 다이제스트가 로컬 티켓에 명시된 다이제스트와 매치하면, 프로세스의 프로세싱 로직이 IBoot 작업들(433)을 수행하도록 진행하여(예컨대, iBoot 구성요소를 실행하여), 장치를 부팅할 수 있다. 그렇지 않으면, 프로세스(400)의 프로세싱 로직은 단계(417)에서 장치를 DFU 모드로 진입시킬 수 있다. 일 실시예에서, 만약 LLB 구성요소가 유효하지 않다고, 예컨대 단계(405)에서 입증되지 않는다고 판단되거나, 또는 부정확하다고, 예컨대 버전들이 단계(421)에서와 같이 매치하지 않으면, 프로세스(400)의 프로세싱 로직은 LLB 구성요소에 포함된 서명을 무효화하거나, 로컬 저장 장치로부터 LLB 구성요소를 제거할 수 있다. 일부 실시예에서, 프로세스(400)의 프로세싱 로직의 일부는 마스크 ROM(427) 또는 LLB 구성요소(429) 내부에서 수행될 수 있다.
도 5는 장치를 부팅하는 티켓에 의해 인증되는 부트 구성요소들을 설치하는 프로세스(500)의 일 실시예를 도시하는 흐름도이다. 예시적인 프로세스(500)는 하드웨어(회로, 전용 로직 등), 소프트웨어(전용 머신에서 실행되는 것), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(500)는 도 2의 시스템(200)의 일부 구성요소들에 의해 수행될 수 있다. 단계(501)의 일 실시예에서, 프로세스(500)의 프로세싱 로직은 제1 로고 구성요소, 예컨대 회사 로고 이미지를 포함하는 구성요소로부터 생성되는 다이제스트를 도 4의 프로세스(400)의 단계(419)에서 인증된 로컬 티켓과 같은 로컬 티켓에 명시된 대응하는 다이제스트와 비교한다. 만약 두 다이제스트가 단계(503)에서 매치하면, 프로세스(500)의 프로세싱 로직은 단계(505)에서 제1 로고 구성요소를 디스플레이할 수 있다. 그렇지 않으면, 프로세스(500)의 프로세싱 로직은, 예컨대 도 2의 부트 플래그들(203)의 장치 설정에 따라 장치가 강제 복구(Force Recovery; FR) 모드에 있는지 여부를 판단할 수 있다. 만약 장치가 FR 모드에 있지 않으면, 프로세스(500)의 프로세싱 로직은 단계(509)에서, 예컨대 장치 설정에 기초하여 장치가 자동 부트(Auto_Boot) 모드에 있는지 여부를 판단할 수 있다.
만약 장치가 AB 모드에 있다고 판단되면, 단계(511)의 일 실시예에서, 프로세스(500)의 프로세싱 로직은 지역적으로, 예컨대 도 2의 대용량 저장 장치(221)에 저장된 장치 트리 구성요소 및 커널캐시 구성요소로부터 각각 장치 트리 다이제스터 및 커널캐시 다이제스트를 생성할 수 있다. 장치 트리 구성요소 및 커널캐시 구성요소는 장치를 부팅하기 위한 부트 구성요소들이 될 수 있다. 일 실시예에서, 프로세스(500)의 프로세싱 로직은 장치 트리 다이제스트 및 커널캐시 다이제스트를 로컬 티켓에 명시된 대응하는 다이제스트들과 비교할 수 있다. 만약 두 다이제스트가 로컬 티켓의 대응하는 다이제스트들과 매치하면, 프로세스(500)의 프로세싱 로직은 단계(515)에서 커널캐시 구성요소를 실행할 수 있는데, 예컨대 로컬 티켓을 파라미터로 전달하는 것을 포함한다. 만약 단계(513)에서 매치하지 않거나, 장치가 단계(507)에서 FR 모드에 있거나, 단계(509)에서 장치가 FR 모드 및 AB 모드에 있지 않으면, 프로세스(500)의 프로세싱 로직은, 예컨대 부트 상태 로고의 이미지를 포함하는 제2 로고 구성요소로부터 생성된 다이제스트를 단계(517)에서 로컬 티켓 내에 명시된 대응하는 다이제스트와 비교할 수 있다. 만약 두 다이제스트가 단계(519)에서 매치하면, 프로세스(500)의 프로세싱 로직은 단계(521)에서 제2 로고 구성요소를 디스플레이할 수 있다. 그렇지 않으면, 프로세스(500)의 프로세싱 로직은 단계(523)에서 복구 작업을 수행하여 장치를 부팅할 수 있다. 일 실시예에서, 프로세스(500)의 프로세싱 로직의 일부가 iBoot 구성요소에서 실시될 수 있다.
도 6은 장치에 대하여 개인화된 부트 구성요소를 검증하는 프로세스(600)의 일 실시예를 도시하는 흐름도이다. 예시적인 프로세스(600)는 하드웨어(회로, 전용 로직 등), 소프트웨어(전용 머신 상에서 실행되는 것), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(600)는 도 2의 시스템(200)의 일부 구성요소들에 의해 수행될 수 있다. 일 실시예에서, 프로세스(600)의 프로세싱 로직이 USB 연결을 통해 MAC(Machintosh) 컴퓨터와 같은 호스트 장치에 결합된 DFU 모드의 장치를 부팅하기 위한 작업들을 수행한다. 단계(601)에서, 프로세스(600)의 프로세싱 로직이 장치에 대한 고유 식별자를, 예컨대 도 2의 장치 식별자들(209)에 기초하여 장치가 DFU 모드에 있다고 나타내는 표시자들을 포함하는 호스트 장치로 송신한다.
다음으로 단계(603)에서, 프로세스(600)의 프로세싱 로직은 호스트로부터 DFU 구성요소를 수신하여 메모리(예컨대, 장치의 RAM)에 넣을 수 있다. DFU 구성요소는 고유 식별자에 따라 개인화(예컨대, 암호화)될 수 있다. 일 실시예에서, DFU 구성요소는 장치를 부팅하기 위한 부트 구성요소, 이를테면 iBoot 구성요소 또는 iBSS 구성요소(대용량 저장 지원이 없는 LLB 구성요소 및 iBoot 구성요소를 포함함)이다. 단계(605)에서, 프로세스(600)의 프로세싱 로직은 수신된 DFU 구성요소가 유효한지 여부를 판단할 수 있는데, 예컨대 도 4의 단계(403)에서의 프로세스(400)와 유사한 작업들을 수행한다. 만약 단계(607)에서 DFU 구성요소가 유효하지 않은 것을 판단되면, 프로세스(600)의 프로세싱 로직은 고유 식별자를 연결된 단계(601)의 호스트 절차로 다시 돌려보낼 수 있다. 그렇지 않으면, 만약 DFU 구성요소가 유효하다면, 프로세스(600)의 프로세싱 로직은 장치를 부팅하기 위한 복구 작업들(523)을 계속하여 수행할 수 있다. 일 실시예에서, 프로세스(600)의 프로세싱 로직은 장치의 마스크 ROM 내부에 로딩되는 부트 구성요소들에서 실행될 수 있다.
도 7은 장치를 부팅하기 위한 부트 구성요소들을 인증하는 티켓을 요청하는 프로세스(700)의 일 실시예를 도시하는 흐름도이다. 예시적인 프로세스(700)는 하드웨어(회로, 전용 로직 등), 소프트웨어(전용 머신 상에서 실행되는 것), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(700)는 도 2의 시스템(200)의 일부 구성요소들에 의해 수행될 수 있다. 일 실시예에서, 프로세스(700)의 프로세싱 로직은 장치를 부팅하기 위한 복구 작업들(523)을 수행한다. 단계(701)에서, 프로세스(700)의 프로세싱 로직은, 예컨대 USB 연결을 통해 장치와 지역적으로 결합되는 복구 호스트로부터 외부적으로 명령들 및/또는 파일들을 수신할 수 있다. 프로세스(700)의 프로세싱 로직은 단계(703)에서 수신된 명령이 도전 요청인지 여부를 검출할 수 있다. 만약 수신된 명령이 도전 요청이면, 단계(705)에서, 프로세스(700)의 프로세싱 로직은 일회값(또는 난수)을 생성할 수 있다. 일 실시예에서, 프로세스(700)의 프로세싱 로직은 도 2의 일회값(211)과 같이 장치에 생성된 일회값을 지역적으로 저장한다. 프로세스(700)의 프로세싱 로직은 일회값이 생성되는 경우 일회값 생성 플래그와 같은 플래그 값을 설정할 수 있다. 단계(707)에서, 프로세스(700)의 프로세싱 로직은 설치 도전을 복구 호스트로 송신할 수 있다. 설치 도전은 장치에 대한 고유 식별자들(예컨대, 장치 ID), 장치에 의해 생성된 일회값, 장치 내의 현재 부트 티켓 및/또는 하나 이상의 부트 구성요소의 버전 수(예컨대, LLB 및 장치에 현재 로딩된 iBoot 또는 iBSS 구성요소)를 포함할 수 있다. 현재 부트 티켓은, 예컨대 도 2의 대용량 저장소(221)와 같이, 저장 장치로부터 검색된 지역 티켓에 기초하여 장치의 메모리에 현재 로딩되는 부트 티켓이 될 수 있다. 일 실시예에서, 복구 호스트가 네트워크 연결들을 통해 도 1의 티켓 인증 서버(113)와 같은 티켓 인증 서버와 통신적으로 원격 결합된다. 복구 호스트는 지역적으로 결합된 장치로부터 수신된 설치 도전에 따라 생성되는 티켓 요청을 티켓 인증 서버로 송신할 수 있다.
만약 단계(703)에서 수신된 명령이 도전 요청이 아니면, 프로세스(700)의 프로세싱 로직은 단계(709)에서 수신된 명령이 복구 호스트로부터 수신된 파일이 DFU 파일임을 나타내는 DFU 파일 통지인지 여부를 판단할 수 있다. 만약 DFU 파일이 수신되었다면, 프로세스(700)의 프로세싱 로직은 단계(711)에서 DFU 파일을 압축해제하여 보안 RAM에 넣을 수 있다. DFU 파일은 회사 로고와 같은 부트 구성요소들, 장치 트리, 램디스크, 커널캐시 구성요소 및/또는 복원 확장(restore extensions)을 갖는 부트 티켓을 포함할 수 있다. 부트 티켓은 필드를 장치가 부팅을 위한 복원 작업들을 수행하기 위한 부트 구성요소, 예컨대 램디스크를 명시하기 위한 복원 확장으로 포함할 수 있다.
만약 단계(709)에서 수신된 외부 파일이 DFU 파일이 아니면, 프로세스(700)의 프로세싱 로직은 사전결정된 명령 그룹 중 하나이다(예컨대, 부트 명령 또는 그림설정(setpicture) 명령). 만약 단계(713)에서 수신된 외부 명령이 사전결정된 명령 그룹 중 하나가 아니면, 프로세스(700)의 프로세싱 로직은 단계(701)에서 외부 명령들 및/또는 파일들을 수신하는 것을 계속할 수 있다. 그렇지 않으면, 프로세스(700)의 프로세싱 로직은 단계(715)에서 일회값이, 예컨대, 도 2의 부트 플래그들(203) 내의 일회값 생성 값과 같은 플래그 값에 기초하여, 복구 호스트로 보내졌는지 여부를 체크할 수 있다. 만약 일회값이 단계(715)에서 복구 호스트로 보내지지 않았다면, 프로세스(700)의 프로세싱 로직은 단계(701)의 외부 명령어들 및/또는 파일들을 수신하는 것을 계속할 수 있다. 그렇지 않으면, 단계(717)에서, 프로세스(700)의 프로세싱 로직은 (확장을 포함하는) 부트 티켓, 예컨대 복구 호스트로부터 수신된 부트 티켓을 검증할 수 있다. 일 실시예에서, 프로세스(700)의 프로세싱 로직은 도 3의 단계(305)에서 프로세스(300)에 유사한 암호화 작업들을 수행하여 부트 티켓이 유효한지 여부를 판단한다.
만약 부트 티켓이 단계(721)에서 유효하지 않다면, 프로세스(700)의 프로세싱 로직은 단계(701)에서의 외부 명령들 및/또는 파일들을 수신하는 것을 계속할 수 있다. 그렇지 않으면, 단계(719)에서, 프로세스(700)의 프로세싱 로직은 장치에 지역적으로 저장된 하나 이상의 부트 구성요소의 버전을 부트 티켓(예컨대, 복구 호스트로부터 수신된 부트 티켓)에 명시된 대응하는 버전과 비교할 수 있다. 일 실시예에서, 프로세스(700)의 프로세싱 로직은 부트 티켓이 유효화되면, 일회값 생성 플래그와 같은 플래그를 되돌린다. 단계(723)에서 불일치가 식별되는 경우, 프로세스(700)의 프로세싱 로직은 단계(701)에서의 외부 명령들 및/또는 파일들을 수신하는 것을 계속할 수 있다. 그렇지 않으면, 프로세스(700)의 프로세싱 로직은 단계(725)에서 (예컨대, 복구 호스트로부터의) 수신된 외부 명령이 그림설정 명령인지 여부를 판단할 수 있다. 일 실시예에서, 프로세스(700)의 프로세싱 로직은 단계(723)에서 불일치가 식별되지 않는 경우, 메모리 내의 현재 부트 티켓을 수신된 부트 티켓으로 교체한다.
만약 수신된 외부 명령이 단계(725)에서 그림설정 명령이면, 프로세스(700)의 프로세싱 로직은 단계(727)에서, 예컨대 DFU 파일의 복구 호스트로부터 수신된 회사 로고 구성요소에 따라 회사 로고를 디스플레이할 수 있다. 그렇지 않으면, 프로세스(700)의 프로세싱 로직은 단계(731)에서, 예컨대 도 2의 암호 모듈(213)에 따라 DFU 파일에 수신된 부트 구성요소들을 위한 암호 다이제스트들을 계산(또는 생성)할 수 있다. 일 실시예에서, 프로세스(700)의 프로세싱 로직은 단계(729)에서 계산된 다이제스트들이 (예컨대, 복구 호스트로부터 수신된) 부트 티켓 내에 명시된 대응하는 다이제스트들과 매치하는지 여부를 판단한다. 단계(729)에서 다이제스트들의 불일치가 있는 경우, 프로세스(700)의 프로세싱 로직은 단계(701)의 외부 명령들 및/또는 파일들을 수신하는 것을 계속할 수 있다. 그렇지 않으면, 프로세스(700)의 프로세싱 로직은 장치를 부팅하기 위한 복원 작업들(733)을 수행하도록 진행할 수 있다. 일 실시예에서, iBoot 구성요소 또는 iBSS 구성요소와 같은 부트 구성요소는 프로세스(700)의 프로세싱 로직을 위한 구현을 포함한다.
도 8은 티켓에 따라 장치를 부팅하기 위해 개인화된 부트 구성요소들을 설치하는 프로세스(800)의 일 실시예를 도시하는 흐름도이다. 예시적인 프로세스(800)는 하드웨어(회로, 전용 로직 등), 소프트웨어(전용 머신 상에서 실행되는 것), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(800)는 도 2의 시스템(200)의 일부 구성요소들에 의해 수행될 수 있다. 일 실시예에서, 프로세스(800)의 프로세싱 로직은 장치를 부팅하기 위한 복원 작업들(733)을 수행한다. 단계(801)에서, 프로세스(800)의 프로세싱 로직은, 예컨대 도 2의 대용량 저장소(221)와 같은 저장 장치에 저장된 로컬 부트 티켓에 FR 플래그를 설정할 수 있다. FR 플래그는 부팅하는 경우 장치를 위한 FR 모드를 나타낼 수 있다. 일 실시예에서, 단계(803)에서, 프로세스(800)의 프로세싱 로직은, 예컨대 Apple Software Restore(ASR) 작업들에 기초하여 장치를 부팅하기 위한 디스크 이미지를 생성할 수 있다. 디스크 이미지는 데이터 및 코드를 포함하는 부트 구성요소가 될 수 있다. 단계(805)에서, 프로세스(800)의 프로세싱 로직은 디스크 이미지로부터 암호적으로 생성된 다이제스트를 부트 티켓에(예컨대, 복구 호스트로부터 수신된 부트 티켓의 확장 필드에) 명시된 대응하는 다이제스트와 비교할 수 있다. 만약 단계(807)에서 다이제스트들이 매치하지 않으면, 프로세스(800)의 프로세싱 로직은 리부트 작업들(431)을 수행하도록 바로 진행할 수 있다.
그렇지 않으면, 만약 생성된 디스크 이미지 및 부트 티켓이 일치하면, 프로세스(800)의 프로세싱 로직은 단계(809)에서 플래시 구성요소들 목록(예컨대, all_flash plist)을 포함하는 파일을 수신할 수 있다. 플래시 구성요소는 장치를 부팅하기 위한 부트 구성요소가 될 수 있다. 프로세스(800)의 프로세싱 로직은 단계(811)에서 각 목록화된 플래시 구성요소를 위한 암호 다이제스트를 계산(생성)할 수 있다. 일 실시예에서, 프로세스(800)의 프로세싱 로직은 단계(813)에서 각 플래시 구성요소를 위한 다이제스트를 부트 티켓에 명시된 대응하는 다이제스트와 비교한다. 만약 단계(815)에서 불일치가 발견되면, 프로세스(800)의 프로세싱 로직은 리부트 작업들(431)을 수행하도록 진행할 수 있다. 그렇지 않으면, 단계(817)에서, 프로세스(800)의 프로세싱 로직은 고유 식별자, 예컨대 도 2의 장치 식별자들(209)의 UID에 따라 메모리에 현재 로딩된 하나 이상의 부트 구성요소(예컨대, LLB 구성요소)를 개인화(예컨대, 암호화)할 수 있다. 일 실시예에서 단계(819)에서, 프로세스(800)의 프로세싱 로직은 LLB 구성요소(개인화됨)와 같은 부트 구성요소들, 로고 구성요소들, 장치 트리 구성요소, iBoot 구성요소 등을 장치의 플래시, 예컨대 도 2의 대용량 저장소(221)에 저장할 수 있다. 다음으로, 프로세스(800)의 프로세싱 로직은 단계(821)에서 메모리로부터의 부트 티켓(예컨대, 복구 호스트로부터 수신된 현재 부트 티켓)을 플래시에 저장하여 지역적으로 저장된 부트 티켓을 교체할 수 있다. 프로세스(800)의 프로세싱 로직은 단계(823)에서 도 2의 부트 플래그들(203)과 같은 장치를 부팅하기 위한 부트 플래그들을 업데이트할 수 있다. 예를 들어, 프로세스(800)의 프로세싱 로직은 부트 OS 플래그를 설정(인에이블)하고 리부트 작업들(431)을 위한 FR 플래그를 클리어할 수 있다.
도 9는 장치를 부팅하기 위한 티켓에 의해 인증되는 부트 구성요소들을 설치하는 프로세스(900)의 일 실시예를 도시하는 순서도이다. 일 실시예에서, IPhone(901)은 도 1의 장치(115)와 같이 오퍼레이팅 상태로 부팅하는 장치이다. PR/ITune(903)은 USB 연결을 통해 IPhone(901)과 지역적으로 결합되는 호스트가 될 수 있다. AuthServer(905)는 도 1의 티켓 인증 서버(113)와 같이, 티켓을 서명하기 위한 네트워크를 통해 PR/ITune(903)과 통신적으로 결합되는 서버가 될 수 있다. IPhone(901)은 시퀀스 DFU(925), 복구(927) 및 복원(929)에 따라 순차적으로 부팅 작업들을 수행할 수 있다. 일 실시예에서, IPhone(901)은 작업들을 부팅하기 위한 시퀀스들(907, 913 및 919) 동안 명령들 및/또는 파일들을 포함하는 메시지들을 PR/ITune(903)과 교환할 수 있다. 마찬가지로, PR/ITunes(903)은 시퀀스들(909, 915 및 921) 동안 IPhone(901) 및 AuthServer(905)와 통신하는데, 이는 시퀀스(917) 동안 IPhone(910)을 개인화하기 위한 티켓을 서명하는 IPhone(901) 및 AuthServer(905) 간에서 티켓 요청 및 대응하는 서명된 티켓을 포함하는 메시지들을 전달하는 것을 포함한다. 일 실시예에서, IPhone(901)에 대한 부트 구성요소, 예컨대 IBSS 구성요소 또는 LLB 구성요소를 개인화하는 것은 시퀀스들(911 및 923) 동안 AuthServer(905)에 의해 수행되는 것과 같이 IPhone(901)의 장치 ID 및 부트 구성요소의 해시에 따라 부트 구성요소를 위한 AuthServer(905)에 의해 서명된 서명을 포함할 수 있다.
도 10은 도 1의 서명된 티켓(119)과 같이, 장치를 부팅하기 위한 부트 구성요소들을 인증하는 티켓의 일 예를 도시하는 샘플 포맷이다. 일 실시예에 따르면, 티켓은 신뢰 증명서(또는 키)에 의해 서명된다. 티켓의 서명은 장치를 부팅하기 위한 부트 구성요소들 또는 각 시스템 구성요소들의 버전 식별자들 또는 SHA1 다이제스트들을 장치(또는 유닛) 내의 상이한 프로세스들을 위한 고유 DeviceID 세트로 묶을 수 있다. 일 실시예에서, 서명은 또한 설치 동안 사용되는 다이제스트들을 장치 상의 iBoot 구성요소 또는 iBSS 구성요소에 의해 생성되는 일회값으로 묶어, 티켓들은 동일한 소프트웨어를 1회 초과하여 재설치하는데 사용될 수 없게 된다. 티켓은 하나 이상의 이름 값 쌍을 명시하는 속성 필드(1001) 목록을 포함할 수 있다. 이름 값 쌍은 명시적 또는 암시적 이름 태그를 포함할 수 있다. 도 10을 참고하면, 태그(1003)는 속성 필드(1001)의 시퀀스에 따라 암시적으로 지정될 수 있다.
도 11은 본 발명의 일 실시예와 함께 사용될 수 있는 데이터 프로세싱 시스템(1100)의 일 예를 보여준다. 예를 들어, 시스템(1100)은 도 2에 도시된 시스템을 포함하여 실시될 수 있다. 도 11이 컴퓨터 시스템의 다양한 구성요소들을 설명하지만, 이는 구성요소들을 상호연결하는 임의의 특정 아키텍처 또는 방식을 나타내도록 의도된 것이 아니며 이러한 상세한 내용은 본 발명과 밀접한 관련이 없다. 더 적은 구성요소 또는 더 많은 구성요소를 가지는 네트워크 컴퓨터 및 기타 데이터 프로세싱 시스템이 본 발명에 대해 사용될 수 있음을 또한 알 수 있다.
도 11에 도시된 바와 같이, 데이터 프로세싱 시스템 형태인 컴퓨터 시스템(1100)은 마이크로프로세서(1105) 및 ROM(Read Only Memory)(1107) 및 휘발성 RAM(1109) 및 비휘발성 메모리(1111)에 결합되는 버스(1103)를 포함한다. 마이크로프로세서(1105)는 메모리들(1107, 1109, 1111)로부터 명령어들을 검색하고 이 명령어들을 실행하여 위에서 설명된 작업들을 수행할 수 있다. 버스(1103)는 이러한 다양한 구성요소들을 함께 상호연결하고 또한 이러한 구성요소들(1105, 1107, 1109 및 1111)을 디스플레이 제어기 및 디스플레이 장치(1113)로 상호연결하고 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터 및 공지의 기타 장치가 될 수 있는 입력/출력(I/O) 장치들과 같은 주변 장치들로 상호연결한다. 통상적으로, 입력/출력 장치들(1115)은 입력/출력 제어기(1117)를 통해 시스템에 결합된다. 휘발성 RAM(Random Access Memory)(1109)은 통상적으로 메모리에 데이터를 리프레시하거나 유지하기 위해서 지속적으로 전력을 필요로 하는 동적 RAM(DRAM)으로 구현된다.
대용량 저장소(1111)는 통상적으로 자기 하드 드라이브 또는 자기 광 드라이브 또는 광 드라이브 또는 DVD RAM 또는 플래시 메모리 또는 전력이 시스템으로부터 제거된 후에도 데이터(예컨대, 대량의 데이터)를 유지하는 기타 유형의 메모리 시스템이다. 통상적으로, 대용량 저장소(1111)는 또한 필수적인 것은 아니지만 랜덤 액세스 메모리가 될 것이다. 도 11은 대용량 저장소(1111)가 데이터 프로세싱 시스템 내의 나머지 구성요소들에 직접 결합되는 로컬 장치인 것으로 보여주는 반면, 본 발명은 시스템으로부터 원격인 비휘발성 메모리, 이를테면 모뎀, 이더넷 인터페이스 또는 무선 네트워크와 같은 네트워크 인터페이스를 통해 데이터 프로세싱 시스템으로 결합되는 네트워크 저장 장치를 활용할 수 있다. 버스(1103)는 공지의 다양한 브리지, 제어기 및/또는 어댑터를 통해 서로 연결되는 하나 이상의 버스를 포함할 수 있다.
도 12는 본 발명의 일 실시예에서 사용될 수 있는 또 다른 데이터 프로세싱 시스템(1200)의 예를 보여준다. 예를 들어, 시스템(1200)은 도 2에 도시된 바와 같이 시스템의 일부로 실시될 수 있다. 도 12에 도시된 데이터 프로세싱 시스템(1200)은 하나 이상의 마이크로프로세서가 될 수 있거나, 칩 집적회로 상의 시스템이 될 수 있는 프로세싱 시스템(1211)을 포함하고 시스템은 또한 프로세싱 시스템에 의해 실행할 데이터 및 프로그램들을 저장하기 위한 메모리(1201)를 포함한다. 시스템(1200)은 또한, 예컨대 배경 음악을 재생하거나 스피커 및 마이크로폰을 통해 전화 기능을 제공하기 위한 마이크로폰 및 스피커를 포함할 수 있는 오디오 입력/출력 서브시스템(1205)을 포함한다.
디스플레이 제어기 및 디스플레이 장치(1207)는 사용자를 위한 시각 사용자 인터페이스를 제공하고, 이 디지털 인터페이스는 OS X 오퍼레이팅 시스템 소프트웨어를 실행하는 경우 Macintosh 컴퓨터 상에서 보여지는 것과 유사한 그래픽 사용자 인터페이스를 포함할 수 있다. 시스템(1200)은 또한 하나 이상의 무선 송수신기(1203)를 포함하여 도 11의 시스템(1100)과 같은 또 다른 데이터 프로세싱 시스템과 통신한다. 무선 송수신기는 WiFi 송수신기, 적외선 송수신기, 블루투스 송수신기, 및/또는 무선 셀룰러 전화 송수신기가 될 수 있다. 도시되지 않은 추가적인 구성요소들이 또한 특정 실시예들의 시스템(1200)의 일부가 될 수 있고, 특정 실시예에서 도 12에 도시된 것보다 적은 구성요소들이 또한 데이터 프로세싱 시스템에 사용될 수 있다.
데이터 프로세싱 시스템(1200)은 또한 사용자가 시스템에 입력을 제공하도록 제공되는 하나 이상의 입력 장치(1213)를 포함한다. 이러한 입력 장치들은 키패드 또는 키보드 또는 터치 패널 또는 멀티 터치 패널이 될 수 있다. 데이터 프로세싱 시스템(1200)은 또한 도킹을 위한 커넥터가 될 수 있는 옵션의 입력/출력 장치(1215)를 포함한다. 도시되지 않은 하나 이상의 버스가 공지의 다양한 구성요소들을 상호연결하는데 사용될 수 있다는 것을 알 것이다. 도 12에 도시된 데이터 프로세싱 시스템은 핸드헬드 컴퓨터 또는 개인용 디지털 보조기(PDA), 또는 PDA와 유사한 기능을 갖는 셀룰러 전화기, 또는 휴대용 게임 장치를 포함하는 핸드헬드 컴퓨터, 또는 셀룰러 전화기, 또는 iPod와 같은 매체 재생기, 또는 하나의 장치에 PDA 및 셀룰러 전화기와 결합된 매체 재생기와 같은 이러한 장치들의 기능 또는 특징을 결합하는 장치들이 될 수 있다. 다른 실시예에서, 데이터 프로세싱 시스템(1200)은 네트워크 컴퓨터 또는 또 다른 장치 내의 임베디드 프로세싱 장치, 또는 도 12에 도시된 것보다 적은 구성요소 또는 많은 구성요소를 갖는 기타 유형의 데이터 프로세싱 시스템이 될 수 있다.
적어도 본 발명의 특정 실시예들은 매체를 보여주는 매체 프로세싱 시스템, 매체를 저장하는 저장 장치를 포함할 수 있고 안테나 시스템 및 매체 프로세싱 시스템과 결합되는 무선 주파수(RF) 송수신기(예컨대, 셀룰러 전화기를 위한 RF 송수신기)를 더 포함할 수 있는 휴대용 음악 및/또는 비디오 매체 재생기와 같은 디지털 매체 재생기의 일부가 될 수 있다. 특정 실시예에서, 원격 저장 장치 상에 저장된 매체는 RF 송수신기를 통해 매체 재생기로 송신될 수 있다. 예컨대, 매체는 하나 이상의 음악 또는 기타 오디오, 사진, 또는 동영상이 될 수 있다.
휴대용 매체 재생기는 캘리포니아 Cupertino의 Apple Computer, Inc.로부터의 iPod?, iPod Nano? 매체 재생기 상의 클릭 휠 입력 장치, 터치 스크린 입력 장치, 푸시버튼 장치, 이동가능 포인팅 입력 장치 또는 기타 입력 장치와 같은 매체 선택 장치를 포함할 수 있다. 매체 선택 장치는 저장 장치 및/또는 원격 저장 장치 상에 저장된 매체를 선택하는데 사용될 수 있다. 휴대용 매체 재생기는, 적어도 특정 실시예에서, 매체 프로세싱 시스템에 결합되는 디스플레이 장치를 포함하여 입력 장치를 통해 선택되고 있고 스피커나 이어폰을 통해서, 또는 디스플레이 장치 상에, 또는 디스플레이 장치 및 스피커 또는 이어폰 상에 제공되고 있는 매체의 제목들 또는 기타 지표들을 디스플레이한다. 휴대용 매체 재생기의 예는 공개된 미국 특허 출원 번호 2003/0095096 및 2004/0224638에 설명되어 있고, 이 둘은 본 명세서에서 참조로 포함된다.
위에서 설명된 내용 중 일부는 전용 로직 회로와 같은 로직 회로로 구현되거나 마이크로컨트롤러 또는 프로그램 코드 명령어들을 실행하는 다른 형태의 프로세싱 코어로 구현될 수 있다. 따라서, 위의 내용에 의해 설명된 프로세스들은 명령어들을 실행하는 머신으로 하여금 특정 기능들을 수행하도록 하는 머신 실행가능 명령어들과 같은 프로그램 코드로 수행될 수 있다. 이러한 맥락에서, "머신"은 중간 형태(또는 "추상(abstract)") 명령어들을 프로세서 특정 명령어들(예컨대, "가상 머신"(예컨대, 자바 가상 머신), 인터프리터, Common Language Runtime, 하이 레벨 언어 가상 머신 등과 같은 추상 실행 환경), 및/또는 범용 프로세서 및/또는 특수 목적 프로세서와 같이 명령어들을 실행하도록 설계된 반도체 칩(예컨대, 트랜지스터로 구현되는 "로직 회로") 상에 놓이는 전자 회로로 변환하는 머신이 될 수 있다. 위의 내용에 의해 설명된 프로세스들은 프로그램 코드의 실행 없이도 프로세스들(또는 이의 일부)을 수행하도록 설계된 전자 회로에 의해 (머시 대신 또는 머신과 함께) 또한 수행될 수 있다.
본 발명은 또한 본 명세서에 설명되는 작업들을 수행하기 위한 장치와 관한 것이다. 이 장치는 요구되는 목적을 위해 특수하게 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 이하에 한정되지 않지만 플로피 디스크, 광 디스크, CD-ROM, 및 자기광 디스크를 포함하는 임의의 유형의 디스크, 리드 온니 메모리(ROM), RAM, EPROM, EEPROM, 자기 또는 광 카드와 같은 컴퓨터 판독가능 저장 매체, 또는 전자 명령어들을 저장하기에 적절한 임의의 유형의 매체에 저장될 수 있고, 이들 각각은 컴퓨터 시스템 버스에 결합된다.
머신 판독가능 매체는 머신(예컨대, 컴퓨터)에 의해 식별가능한 형태의 정보를 저장 또는 송신하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독가능 매체는 리드 온니 메모리("ROM"); 랜덤 액세스 메모리("RAM"); 자기 디스크 저장 매체; 광 저장 매체; 플래시 메모리 장치들; 전기, 광, 음향 또는 다른 형태의 전송 신호들(예컨대, 캐리어 파, 적외선 신호들, 디지털 신호들 등) 등을 포함한다.
제조품이 프로그램 코드를 저장하는데 사용될 수 있다. 프로그램 코드를 저장하는 제조품은 이하에 한정되지 않지만 하나 이상의 메모리(예컨대, 하나 이상의 플래시 메모리, 랜덤 액세스 메모리(정적, 동적 또는 기타)), 광 디스크, CD-ROM, DVD ROM, EPROM, EEPROM, 자기 또는 광 카드 또는 전자 명령어들을 저장하기에 적합한 기타 유형의 머신 판독가능 매체로 구현될 수 있다. 프로그램 코드는 또한 전송 매체에 구현되는 데이터 신호들에 의해(예컨대, 통신 링크(예컨대, 네트워크 연결)를 통해) 원격 컴퓨터(예컨대, 서버)로부터 요청 컴퓨터(예컨대, 클라이언트)로 다운로드될 수 있다. 이전의 상세한 설명은 알고리즘 및 컴퓨터 메모리 안의 데이터 비트들에 대한 작업들의 상징적 표현에 의해 제공되었다. 이러한 알고리즘 설명 및 표현은 데이터 프로세싱 분야의 당업자에 의해 가장 효과적으로 자신의 연구 내용을 다른 당업자에게 전달하는데 사용되는 도구들이다. 알고리즘은 본 명세서에서, 그리고 일반적으로, 원하는 결과를 가져오는 작업들의 자기 일관적인 시퀀스로 고려된다. 이 작업들은 물리적 양들의 물리적 조작들을 요구하는 작업들이다. 보통, 필수적이지는 않지만, 이러한 양들은 저장되고, 전송되고, 결합되고, 비교되고, 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 띤다. 때때로 이러한 신호들을 비트, 값, 요소, 심볼, 기호, 용어, 숫자 등으로 언급하는 것이 원칙적으로 관습상의 이유로 편리하다고 알려져 있다.
그러나, 이 모든 또는 유사한 용어들이 적절한 물리적 양들과 연관되는 것이고 단지 이러한 양들에 적용되는 편리한 라벨들임을 알아야 한다. 위의 설명으로부터 명백한 것과 다르게 특별히 기술되지 않는 한, 본 명세서 전체에 걸쳐서, "프로세스하는" 또는 "계산하는" 또는 "연산하는" 또는 "판단하는" 또는 "디스플레이하는" 등과 같은 용어들을 사용하는 설명은 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적 (전자) 양들로 표현되는 데이터를 조작하고 이 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 이러한 정보 저장소, 송신 또는 디스플레이 장치들 내의 물리적 양들로 유사하게 나타나는 다른 데이터로 전환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 액션 및 프로세스들을 의미한다.
본 명세서에서 나타나는 프로세스 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 또는 기타 장치에 관한 것이 아니다. 다양한 범용 시스템들이 본 명세서의 교시내용들에 따른 프로그램들과 함께 사용될 수 있거나, 보다 특수한 장치를 구성하여 설명된 작업들을 수행하는 것이 용이할 수 있다. 다양한 이러한 시스템들을 위해 필요한 구조는 아래의 설명으로부터 명확할 것이다. 또한, 본 발명은 임의의 특정 프로그래밍 언어를 참고하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에서 설명되는 발명의 내용을 실시하는데 사용될 수 있다.
앞의 설명은 단지 본 발명의 일부 예시적인 실시예를 설명하는 것에 불과하다. 당업자라면 이러한 설명, 첨부된 도면 및 청구항으로부터 본 발명의 사상 및 범위를 넘지 않으면서 다양한 수정이 이루어질 수 있음을 충분히 알 수 있다.

Claims (21)

  1. 머신(machine) 판독가능 저장 매체로서,
    머신에 의해 실행될 때 머신으로 하여금,
    하나 이상의 구성요소에 기초하여 장치를 오퍼레이팅 상태로 부팅하기 위한 티켓을 수신하는 것에 응답하여 - 상기 티켓은 원격 인증 서버에 의해 인증되고 또한 상기 장치와 연관된 고유 식별자에 의해 개인화(personalize)됨 -, 상기 하나 이상의 구성요소를 인증하기 위한 속성들을 포함하는 티켓을 암호적으로 검증하는 단계;
    상기 티켓이 유효하면, 상기 하나 이상의 구성요소 중 특정 구성요소를 상기 특정 구성요소에 대응하는 상기 속성들 중 적어도 하나와 매치하는 단계; 및
    상기 특정 구성요소가 상기 티켓의 속성들 중 적어도 하나와 매치(match)하면 상기 특정 구성요소를 실행하는 단계를 포함하는 방법을 수행하도록 야기하는 명령어들을 갖는
    머신 판독가능 저장 매체.
  2. 제1항에 있어서,
    상기 장치는 상기 고유 식별자를 포함하는 하나 이상의 장치 식별자를 저장하고,
    상기 방법은 상기 티켓에 대한 티켓 요청을 송신하는 단계 - 상기 티켓 요청은 상기 특정 구성요소의 버전 및 상기 하나 이상의 장치 식별자를 포함함 - 를 더 포함하는
    머신 판독가능 저장 매체.
  3. 제2항에 있어서,
    상기 방법은,
    상기 고유 식별자를 이용하여 상기 특정 구성요소를 암호화(encrypt)하는 단계; 및
    암호화된 상기 특정 구성요소를 상기 장치의 저장소에 저장하는 단계를 더 포함하는
    머신 판독가능 저장 매체.
  4. 제3항에 있어서,
    상기 티켓 요청은 상기 특정 구성요소의 버전을 갖는 원시 티켓(raw ticket)을 포함하고,
    상기 방법은 호스팅 서버로부터의 상기 특정 구성요소 및 상기 원시 티켓을 검색(retrieving)하는 단계를 더 포함하는
    머신 판독가능 저장 매체.
  5. 제2항에 있어서,
    상기 티켓은 서명 및 증명서들의 체인(chain)을 포함하고, 상기 티켓을 유효화하는 단계는,
    상기 고유 식별자에 따라 상기 서명을 해독(decrypt)하는 단계;
    상기 티켓으로부터 암호적으로 티켓 다이제스트(digest)를 생성하는 단계; 및
    상기 증명서들의 체인을 이용하여 입증된 암호 키에 따라 해독된 상기 서명을 해독하는 단계를 포함하는
    머신 판독가능 저장 매체.
  6. 제2항에 있어서,
    상기 티켓은 도전 수(challenge number)를 포함하고, 상기 티켓 요청은 난수를 포함하며, 상기 방법은,
    상기 난수를 온 더 플라이(on the fly)로 생성하는 단계; 및
    상기 도전 수 및 상기 난수를 비교하는 단계를 더 포함하는
    머신 판독가능 저장 매체.
  7. 제2항에 있어서,
    상기 속성들 중 적어도 하나는 다이제스트 속성을 포함하고, 상기 매치하는 단계는,
    상기 특정 구성요소로부터 암호적으로 구성요소 다이제스트를 생성하는 단계; 및
    상기 다이제스트 속성과 생성된 상기 구성요소 다이제스트를 비교하는 단계를 포함하는
    머신 판독가능 저장 매체.
  8. 제2항에 있어서,
    상기 속성들 중 적어도 하나는 버전 속성을 포함하고,
    상기 매치하는 단계는 상기 버전 속성을 상기 특정 구성요소의 버전과 비교하는 단계를 포함하는
    머신 판독가능 저장 매체.
  9. 제1항에 있어서,
    상기 특정 구성요소를 실행하는 단계는,
    상기 하나 이상의 구성요소로부터 차순의 구성요소를 결정하는 단계;
    상기 차순의 구성요소를 상기 티켓과 매치하는 단계; 및
    상기 차순의 구성요소가 상기 티켓과 매치하면, 상기 장치를 부팅하기 위해 상기 차순의 구성요소를 실행하는 단계를 포함하는
    머신 판독가능 저장 매체.
  10. 제9항에 있어서,
    상기 차순의 구성요소를 결정하는 단계는 수신된 외부 통지에 기초하는 머신 판독가능 저장 매체.
  11. 제9항에 있어서,
    상기 차순의 구성요소를 결정하는 단계는 상기 특정 구성요소 내부에 저장된 포인터에 기초하는 머신 판독가능 저장 매체.
  12. 제1항에 있어서,
    복수의 구성요소로부터 상기 하나 이상의 구성요소를 선택하는 단계를 더 포함하고, 각 선택된 구성요소는 상기 티켓과 매치하는 머신 판독가능 저장 매체.
  13. 머신 판독가능 저장 매체로서,
    머신에 의해 실행될 때 머신으로 하여금,
    장치를 오퍼레이팅 상태로 부팅하기 위한 부트 패키지를 호스팅 서버로부터 검색하는 단계 - 상기 부트 패키지는 복수의 구성요소를 식별하는 복수의 속성을 갖는 원시 티켓을 포함함 -;
    상기 원시 티켓 및 상기 장치에 대한 고유 장치 식별자를 포함하는 티켓 요청을 네트워크를 통해 원격 인증 시설에게 송신하는 단계; 및
    상기 원격 인증 시설로부터 상기 티켓 요청에 따른 티켓을 수신하는 것에 응답하여, 상기 장치를 부팅하기 위해 상기 복수의 구성요소로부터 하나 이상의 구성요소를 선택하는 단계를 포함하는 방법을 수행하도록 야기하는 명령어들을 갖는
    머신 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 티켓은 서명을 포함하고, 상기 장치는 루트 공개 키(root public key)를 저장하고,
    상기 방법은 상기 고유 장치 식별자 및 상기 루트 공개 키에 따라 상기 티켓의 서명을 암호적으로 검증(validate)하는 단계를 더 포함하는
    머신 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 티켓은 각 선택된 구성요소에 대한 다이제스트를 포함하고, 상기 패키지는 상기 복수의 구성요소를 포함하며,
    상기 하나 이상의 구성요소를 선택하는 단계는,
    상기 선택된 구성요소에 대한 다이제스트를 암호적으로 생성하는 단계; 및
    상기 생성된 다이제스트를 상기 티켓 내의 선택된 구성요소에 대한 다이제스트와 비교하는 단계를 포함하는
    머신 판독가능 저장 매체.
  16. 데이터 처리 시스템으로서,
    하나 이상의 구성요소에 기초하여 장치를 오퍼레이팅 상태로 부팅하기 위한 티켓을 수신하는 것에 응답하여 - 상기 티켓은 원격 인증 서버에 의해 인증되고 또한 상기 장치와 연관된 고유 식별자에 의해 개인화됨 -, 상기 하나 이상의 구성요소를 인증하기 위한 속성들을 포함하는 티켓을 암호적으로 검증하기 위한 수단;
    상기 티켓이 유효하면, 상기 하나 이상의 구성요소 중 특정 구성요소를 상기 특정 구성요소에 대응하는 속성들 중 적어도 하나와 매치하기 위한 수단; 및
    상기 특정 구성요소가 상기 티켓의 속성들 중 상기 적어도 하나와 매치하면 상기 특정 구성요소를 실행하기 위한 수단
    을 포함하는 데이터 처리 시스템.
  17. 머신 판독가능 저장 매체로서,
    머신에 의해 실행될 때 머신으로 하여금,
    원격 장치로부터 티켓 요청을 수신하는 것에 응답하여, 상기 원격 장치가 오퍼레이팅 상태로 부팅하기 위한 부트 구성요소들의 모음을 개인화하는 단계;
    상기 장치에 대한 부트 구성요소들의 개인화된 모음을 인증하기 위한 하나 이상의 속성을 포함하는 티켓을 생성하는 단계 - 상기 하나 이상의 속성은 상기 티켓을 검증하기 위한 적어도 하나의 암호화 서명을 포함함 -; 및
    상기 티켓을 상기 원격 장치에게 송신하는 단계를 포함하는 방법을 수행하도록 야기하는 명령어들을 갖는 머신 판독가능 저장 매체.
  18. 제17항에 있어서,
    상기 티켓 요청은 상기 원격 장치에 대한 하나 이상의 구성요소 식별자를 포함하고,
    상기 부트 구성요소들의 모음을 개인화하는 단계는,
    상기 하나 이상의 구성요소 식별자에 따라 상기 부트 구성요소들의 모음 중 특정한 하나를 티켓 서명 구성에 대해 매치하는 단계 - 상기 티켓 서명 구성은 하나 이상의 구성요소 식별자에 따라 인증된 하나 이상의 부트 구성요소를 구성함 -;
    상기 특정한 부트 구성요소가 상기 티켓 서명 구성과 매치하면, 상기 특정 부트 구성요소로부터 암호 해시(hash)를 생성하는 단계; 및
    상기 티켓 요청에 기초하여 상기 암호 해시를 암호화하는 단계를 포함하고,
    상기 하나 이상의 속성은 상기 특정한 부트 구성요소에 대한 암호화된 상기 암호 해시를 포함하는
    머신 판독가능 저장 매체.
  19. 제18항에 있어서,
    상기 티켓 서명 구성은 상기 특정 부트 구성요소에 대해 지정된 와일드카드를 포함하고, 상기 특정 부트 구성요소의 매치는 상기 하나 이상의 구성요소 식별자와 관계없이 성공적인 머신 판독가능 저장 매체.
  20. 제17항에 있어서,
    상기 티켓 요청은 일회값(nonce)을 포함하고
    상기 티켓을 생성하는 단계는,
    상기 일회값을 상기 티켓 내의 하나 이상의 속성 중 하나에 복사하는 단계를 포함하는
    머신 판독가능 저장 매체.
  21. 삭제
KR1020117004775A 2008-07-28 2009-07-24 티켓 인증 보안 설치 및 부트 KR101190479B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8417008P 2008-07-28 2008-07-28
US61/084,170 2008-07-28
US12/329,377 2008-12-05
US12/329,377 US8095799B2 (en) 2008-07-28 2008-12-05 Ticket authorized secure installation and boot
PCT/US2009/051766 WO2010014514A1 (en) 2008-07-28 2009-07-24 Ticket authorized secure installation and boot

Publications (2)

Publication Number Publication Date
KR20110050488A KR20110050488A (ko) 2011-05-13
KR101190479B1 true KR101190479B1 (ko) 2012-10-12

Family

ID=41137535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117004775A KR101190479B1 (ko) 2008-07-28 2009-07-24 티켓 인증 보안 설치 및 부트

Country Status (6)

Country Link
US (2) US8095799B2 (ko)
EP (1) EP2151782A1 (ko)
KR (1) KR101190479B1 (ko)
CN (1) CN102165457B (ko)
GB (1) GB2474200B (ko)
WO (1) WO2010014514A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7922321B2 (en) 2003-10-09 2011-04-12 Ipventure, Inc. Eyewear supporting after-market electrical components
JP4526574B2 (ja) * 2008-03-31 2010-08-18 富士通株式会社 暗号データ管理システム、および暗号データ管理方法
US8589667B2 (en) 2010-04-19 2013-11-19 Apple Inc. Booting and configuring a subsystem securely from non-local storage
EP2393007B1 (en) * 2010-06-03 2013-03-27 Telefonaktiebolaget LM Ericsson (publ) Processing device
US20120084545A1 (en) * 2010-10-04 2012-04-05 Ralph Rabat Farina Methods and systems for implementing a secure boot device using cryptographically secure communications across unsecured networks
DE102010038179B4 (de) * 2010-10-14 2013-10-24 Kobil Systems Gmbh Individuelle Aktualisierung von Computerprogrammen
US9256745B2 (en) * 2011-03-01 2016-02-09 Microsoft Technology Licensing, Llc Protecting operating system configuration values using a policy identifying operating system configuration settings
US8607343B2 (en) * 2011-06-05 2013-12-10 Apple Inc. Ticket-based personalization
CN102999852B (zh) * 2011-09-14 2017-03-01 阿里巴巴集团控股有限公司 电子券数据的生成方法及装置
JP6007075B2 (ja) * 2012-11-16 2016-10-12 任天堂株式会社 サービス提供システム、サービス提供方法、サーバシステムおよびサービス提供プログラム
KR20150008546A (ko) 2013-07-15 2015-01-23 삼성전자주식회사 보안 다운로드 및 기능 실행방법 및 장치
US9542558B2 (en) 2014-03-12 2017-01-10 Apple Inc. Secure factory data generation and restoration
US20160065374A1 (en) 2014-09-02 2016-03-03 Apple Inc. Method of using one device to unlock another device
US9735968B2 (en) * 2014-10-20 2017-08-15 Microsoft Technology Licensing, Llc Trust service for a client device
US9843451B2 (en) 2014-10-30 2017-12-12 Motorola Solutions, Inc. Apparatus and method for multi-state code signing
WO2016073411A2 (en) * 2014-11-03 2016-05-12 Rubicon Labs, Inc. System and method for a renewable secure boot
EP3098744A1 (en) * 2015-05-29 2016-11-30 Orange A remotely protected electronic device
US10078748B2 (en) * 2015-11-13 2018-09-18 Microsoft Technology Licensing, Llc Unlock and recovery for encrypted devices
GB201608749D0 (en) 2016-05-18 2016-06-29 Tixserve Ltd An electronic ticketing system
JP6883196B2 (ja) * 2017-01-24 2021-06-09 富士フイルムビジネスイノベーション株式会社 処理装置、情報処理装置、処理システム、処理プログラム及び情報処理プログラム
CA3073751C (en) * 2017-09-06 2023-08-15 Absolute Software Corporation Secure firmware interface
US10482253B2 (en) * 2018-03-30 2019-11-19 Dell Products L. P. Configuring basic input output system (BIOS) features based on a policy
US11615188B2 (en) * 2018-05-02 2023-03-28 Hewlett-Packard Development Company, L.P. Executing software
US20220083666A1 (en) * 2019-06-03 2022-03-17 Hewlett-Packard Development Company, L.P. Key authentication
CN111444793A (zh) * 2020-03-13 2020-07-24 安诚迈科(北京)信息技术有限公司 基于ocr的票据识别方法、设备、存储介质及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020638B1 (en) * 1996-11-18 2006-03-28 Microsoft Corporation System and method for flexible micropayment of low value electronic assets
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
US7345671B2 (en) 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
US7627343B2 (en) 2003-04-25 2009-12-01 Apple Inc. Media player system
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
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
SE531992C2 (sv) * 2006-02-24 2009-09-22 Oniteo Ab Metod och system för säker programvaruprovisionering
US20080082680A1 (en) * 2006-09-29 2008-04-03 Karanvir Grewal Method for provisioning of credentials and software images in secure network environments
US20100161879A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors

Also Published As

Publication number Publication date
EP2151782A1 (en) 2010-02-10
GB2474200A (en) 2011-04-06
CN102165457B (zh) 2016-03-16
US20120131317A1 (en) 2012-05-24
GB201102069D0 (en) 2011-03-23
CN102165457A (zh) 2011-08-24
US8095799B2 (en) 2012-01-10
KR20110050488A (ko) 2011-05-13
GB2474200B (en) 2013-04-03
US20100023778A1 (en) 2010-01-28
US8443204B2 (en) 2013-05-14
WO2010014514A1 (en) 2010-02-04

Similar Documents

Publication Publication Date Title
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
US10931451B2 (en) Securely recovering a computing device
US8789037B2 (en) Compatible trust in a computing device
JP4971466B2 (ja) コンピューティング・デバイスの安全なブート
US8291480B2 (en) Trusting an unverified code image in a computing device
US8150039B2 (en) Single security model in booting a computing device
US20090259855A1 (en) Code Image Personalization For A Computing Device

Legal Events

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

Payment date: 20150918

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 7