KR20140068867A - 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법 - Google Patents

부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20140068867A
KR20140068867A KR1020147003011A KR20147003011A KR20140068867A KR 20140068867 A KR20140068867 A KR 20140068867A KR 1020147003011 A KR1020147003011 A KR 1020147003011A KR 20147003011 A KR20147003011 A KR 20147003011A KR 20140068867 A KR20140068867 A KR 20140068867A
Authority
KR
South Korea
Prior art keywords
valid
computing device
microcode
operating system
determined
Prior art date
Application number
KR1020147003011A
Other languages
English (en)
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 KR20140068867A publication Critical patent/KR20140068867A/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
    • 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/2105Dual mode as a secondary aspect

Landscapes

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

Abstract

컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법 및 시스템이 여기에서 설명된다. 상기 방법은 작동 시작 신호를 검출하는 단계, 작동 시작 신호를 검출하는 것에 응답하여, 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계를 포함할 수 있다. 소프트웨어 구성요소들이 유효한 것으로 판정되는 경우, 컴퓨팅 디바이스는 동작 상태로 이동하도록 허용될 수 있다. 그러나, 소프트웨어 구성요소들 중 적어도 일부가 유효하지 않은 것으로 판정되는 경우, 컴퓨팅 디바이스는 동작 상태로 이동하는 것이 방지될 수 있다. 일 배치에서, 컴퓨팅 디바이스가 동작 상태로 이동하는 것이 방지되는 경우, 컴퓨팅 디바이스가 동작 상태로 이동하도록 허용하기 위한 노력으로 수정 동작이 취해질 수 있다.

Description

부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법{System and method for validating components during a booting process}
관련 출원에 대한 교차 참조
본 발명은 2011년 7월 8일에 출원된 미국 가특허출원 제61/506,017호에 대해 우선권을 주장하며, 이것은 전부 참조에 의해 여기에 포함된다.
기술분야
본 발명은 부팅 프로세스 동안 컴퓨팅 디바이스의 구성요소들을 인증하기 위한 시스템 및 방법에 관한 것이다.
최근 관리용 이동 디바이스들로의 움직임이 있었다. 이러한 구성으로, 기업은 관리용 디바이스의 사용자가 민감한 회사의 데이터에 접근하는 것을 허용할 수 있다. 이러한 접근 때문에, 이러한 관리용 디바이스들의 무결성(integrity)을 유지하는 것이 중요하다. 예를 들어, 관리용 디바이스들의 일부 사용자들은 그들이 본래의 제조자에 의해 의도되지 않았던 소정의 작업(task)들을 수행할 수 있도록 그 디바이스들을 수정할 수 있다. 이러한 프로세스는 일반적으로 디바이스를 "탈옥하는 것(jailbreaking)"으로 지칭된다. 이러한 시나리오에서, 제조자에 의해 디바이스 상에 도입된 제한들, 운영 시스템(OS), 프레임워크 또는 실행 환경(runtime environment)이 제거될 수 있고, 이것은 승인되지 않은(unauthorized) 애플리케이션들이 설치되거나, 숨겨진 능력들이 활성화되거나, 보안 특성들이 우회되거나, 또는 일반적으로 접근할 수 없는 정보가 검색되는 것을 허용할 수 있다. 이처럼, 기업은 그것의 보호되는 데이터가 이러한 방식으로 변형된 디바이스에 의해 손상되지 않음을 확실히 해야만 한다.
컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법이 여기에서 설명된다. 상기 방법은 작동 시작 신호를 검출하는 단계 및 상기 작동 시작 신호를 검출하는 것에 응답하여 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계를 포함할 수 있다. 소프트웨어 구성요소들이 유효한 것으로 판정되는 경우, 컴퓨팅 디바이스는 동작 상태로 이동하는 것이 허용될 수 있다. 소프트웨어 구성요소들 중 적어도 일부가 유효하지 않은 것으로 판정되는 경우, 컴퓨팅 디바이스는 동작 상태로 이동하는 것이 방지될 수 있다. 또한, 컴퓨팅 디바이스가 동작 상태로 이동하는 것이 방지되는 경우, 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 허용하기 위한 노력으로 수정 동작(corrective action)이 취해질 수 있다.
예시로서, 소프트웨어 구성요소들은 마이크로코드(microcode), 부트로더(bootloader) 및 하나 이상의 OS들을 포함할 수 있다. 다른 예시에서, 마이크로코드는 컴퓨팅 디바이스의 메모리 구성요소의 안전한 부분(secure partition)에 저장될 수 있다. 일 배치에서, 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계는 마이크로코드가 유효한지 여부를 우선 판정하는 단계 및 마이크로코드가 유효한지 여부 및 마이크로코드가 유효한지 여부를 판정한 후에 마이크로코드가 유효한 경우에만 부트로드가 유효한지 여부를 판정하는 단계를 포함할 수 있다. 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계는 부트로더가 유효한지 여부를 판정한 후에 부트로더가 유효한 경우에만 OS가 유효한지 여부를 판정하는 단계를 더 포함할 수 있다.
예시로서, 소프트웨어 구성요소들은 다수의 OS들을 포함하여 컴퓨팅 디바이스가 다수의 OS들 중 임의의 하나를 동작시킬 수 있다. 또한, 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계는 병렬 방식으로 다수의 OS들이 유효한지 여부를 판정하는 단계를 포함할 수 있다. 예시로써, 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 가질 수 있다. 예를 들어, 다수의 OS들은 수직적 구성요소를 형성하기 위해 병렬로 인증될 수 있는 반면에, 단일 OS는 수평적 구성요소를 실현시키기 위해 그 자신이 병렬로 인증된다. 다른 예시로서, 수정 동작을 취하는 단계는 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소 대신에 대안적인 소프트웨어 구성요소로 돌아가는 단계 또는 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소에 대한 대체물을 획득하기 위해 관리자에게 신호를 보내는 단계를 포함할 수 있다.
다수의 OS들 중 하나를 동작시킬 수 있는 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법이 여기에서 설명된다. 이러한 방법은 작동 시작 신호를 검출하는 단계 및 작동 신호를 검출하는 것에 응답하여, 컴퓨팅 디바이스의 마이크로코드가 유효한지 여부를 판정하는 단계를 포함할 수 있다. 마이크로코드가 유효한 경우, 마이크로코드가 실행될 수 있고, 컴퓨팅 디바이스의 부트로더가 유효한지 여부가 판정될 수 있다. 부트로더가 유효한 경우, 부트로더가 실행될 수 있고, 병렬 방식으로 OS들이 유효한지 여부가 판정될 수 있다. 예시로서, 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 가질 수 있다.
상기 방법은 여기에서 또한 OS들 중 하나가 유효한 것으로 판정되었다면 그 OS를 선택적으로 로딩하는 단계를 포함할 수 있다. 또한, 로딩되는 OS는 미리 결정된 순위에 기초하여 선택될 수 있다. 상기 방법은 또한 OS들이 유효한지 여부를 판정하는 단계의 일부로서 마스터 부트 레코드(master boot record)를 판독하는 단계를 포함할 수 있다.
제1 OS가 유효하지 않은 것으로 판정된 경우, 제2 OS가 유효한 것으로 판정되면 제2 OS가 선택적으로 로딩될 수 있다. 제2 OS는 미리 결정된 순위에 기초하여 선택될 수 있고, 제2 OS의 미리 결정된 순위는 제1 OS의 미리 결정된 순위보다 낮은 우선순위를 가질 수 있다.
일 배치에서, 마이크로코드, 부트로더 또는 운영 시스템 중 임의의 것이 유효하지 않은 것으로 판정되는 경우, 수정 동작이 취해질 수 있다. 수정 동작의 예시들은 (1) 부팅 프로세스를 중지시키고 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 방지하는 것, (2) 부팅 프로세스를 중지시키고 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 방지하고 고 부팅 프로세스의 실패를 사용자에게 알리는 것, (3) 제1 OS가 유효하지 않은 것으로 판정되는 경우 대안적인 OS를 로딩하는 것 또는 (4) 마이크로코드, 부트로더 또는 OS 중 어느 하나가 유효하지 않은 것으로 판정되는 경우 마이크로코드, 부트로더 또는 OS에 대한 대체물을 획득하기 위한 노력으로 (수동으로 또는 자동화된 계획에 따른 방법을 통해) 관리자에게 신호를 보내는 것 중 임의의 하나를 포함한다.
컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 유효하게 하기 위한 시스템이 또한 여기에서 설명된다. 상기 시스템은 작동 시작 신호를 수신하도록 구성될 수 있는 전원 관리 엔진을 포함할 수 있고, 부팅 프로세스에 관한 소프트웨어 구성요소들을 저장하도록 구성될 수 있는 제1 메모리 구성요소를 포함할 수 있다. 상기 시스템은 또한 그 중 하나가 OS일 수 있는 소프트웨어 구성요소들을 저장하도록 구성될 수 있는 제2 메모리 구성요소를 포함할 수 있다.
상기 시스템은 또한 컨트롤러를 포함할 수 있다. 컨트롤러는 OS 및 부팅 프로세스에 관련된 소프트웨어 구성요소들이 유효한지 여부를 계속적으로 판정하도록 동작 가능할 수 있다. 소프트웨어 구성요소들 및 OS가 유효한 경우, 컨트롤러는 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 허용할 수 있다. 그러나 소프트웨어 구성요소들 또는 OS 중 어느 것도 유효하지 않은 것으로 판정되지 않은 경우, 구성요소는 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 방지할 수 있다. 컴퓨팅 디바이스가 동작 상태로 이동하는 것이 방지되는 경우, 컨트롤러는 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 허용하기 위한 노력으로 수정 동작을 취할 수 있다.
예시로써, 컨트롤러는 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소 또는 OS를 대신하여 대안적인 소프트웨어 구성요소로 돌아감으로써 수정동작을 취하도록 동작 가능할 수 있다. 컨트롤러가 수정 동작을 취하는 다른 예시는 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소 또는 OS에 대한 대체물을 획득하기 위해 관리자에게 신호를 보내는 것이다.
일 배치에서, 제1 메모리 구성요소는 안전 파티션(secure partition) 및 비안전 파티션(non-secure partition)을 포함할 수 있고, 부팅 프로세스와 관련된 소프트웨어 구성요소들은 마이크로코드 및 부트로더이다. 또한, 마이크로코드는 안전 파티션에 저장될 수 있고, 부트로더는 비안전 파티션에 저장될 수 있다. 제2 메모리 구성요소는 다수의 파티션들을 포함할 수 있고, 다수의 OS들을 저장하도록 구성될 수 있다. 일 배치에서, 제1 메모리 구성요소 및 제2 메모리 구성요소는 개별적인 메모리 구성요소들이다.
예시로써, 부팅 프로세스에 관련된 소프트웨어 구성요들은 마이크로코드 및 부트로더일 수 있다. 또한, 컨트롤러는 마이크로코드가 유효한지 여부를 우선 판정하고 마이크로코드가 유효한지 여부를 판정한 후 마이크로코드가 유효한 경우에만 부트로더가 유효한지 여부를 판정함으로써 부팅 프로세스에 관련된 소프트웨어 구성요소들이 유효한지 여부를 계속적으로 판정하도록 동작 가능할 수 있다. 다른 예시로서, 컨트롤러는, 부트로더가 유효한지 여부를 판정한 후에 부트로더가 유효한 경우에만 OS가 유효한지 여부를 판정함으로써 OS 및 부팅 프로세스에 관련된 소프트웨어 구성요소들이 유효한지 여부를 계속적으로 판정하도록 동작 가능할 수 있다. 일 실시예에서, 컨트롤러는 다수의 OS들이 병렬 방식으로 유효한지 여부를 판정하도록 동작 가능할 수 있고, 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 가질 수 있다.
컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 다른 시스템이 여기에서 설명된다. 상기 시스템은 제1 메모리 구성요소 및 제2 메모리 구성요소를 포함할 수 있다. 제1 메모리 구성요소는 마이크로코드 및 부트로더를 저장하도록 구성될 수 있고, 제2 메모리 구성요소가 다수의 OS들을 저장할 수 있도록 제2 메모리 구성요소는 다수의 파티션들을 포함할 수 있다. 상기 시스템은 또한 컨트롤러를 포함할 수 있고, 컨트롤러는 부트스트랩(bootstrap)을 실행시키고 마이크로코드가 유효한지 여부를 판정하도록 동작 가능할 수 있다. 마이크로코드가 유효한 경우, 컨트롤러는 마이크로코드를 실행시킬 수 있고 (마이크로코드를 통해) 부트로더가 유효한지 여부를 판정할 수 있다. 부트로더가 유효한 경우, 컨트롤러는 또한 부트로더를 실행시킬 수 있고 (부트로더를 통해) 병렬 방식으로 다수의 OS들이 유효한지 여부를 판정할 수 있다. 예시로서, 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 가진다.
일 배치에서, 컨트롤러는 OS들 중 하나가 유효하다고 판정되었다면 로딩을 위해 그 OS를 선택하도록 더 동작 가능하고, 선택된 OS는 미리 결정된 순위에 기초할 수 있다. 제1 OS가 유효하지 않은 것으로 판정된 경우, 컨트롤러는 제2 OS가 유효한 것으로 판정된다면 로딩을 위해 제2 OS를 선택하도록 더 동작 가능할 수 있다. 제2 OS는 미리 결정된 순위에 기초하여 선택될 수 있고, 제2 OS의 미리 결정된 순위는 제1 OS의 미리 결정된 순위보다 낮은 우선 순위를 가질 수 있다. 명확성을 위해, 컨트롤러는 부트로더의 동작을 통해 이러한 기능들을 수행하도록 동작 가능할 수 있다.
일 배치에서, 제1 메모리 구성요소는 안전 파티션 및 비안전 파티션을 가질 수 있다. 예시로서, 마이크로코드는 안전 파티션에 저장될 수 있고, 부트로더는 비안전 파티션에 저장될 수 있다. 상기 시스템은 또한 전원 관리 엔진이 전원 인증(power on) 신호를 수신한 경우 컨트롤러로 신호를 보내도록 구성될 수 있는 전원 관리 엔진을 포함할 수 있다.
추가적인 특징들 및 효과들뿐만 아니라 다양한 실시예들의 구조 및 동작이 첨부한 도면들을 참조하여 이하에서 상세하게 설명된다. 이러한 설명은 여기에서 제시된 특정한 실시예들에 제한되지 않는다는 것이 주목된다. 이러한 실시예들은 오직 설명의 목적으로만 제공된다. 추가적인 실시예들은 여기에서 포함된 내용들에 기초하여 해당 분야의 통상의 기술자에게 명확할 것이다.
여기에 통합되고 명세서의 일부를 형성하는 첨부한 도면들은 여기에서 설명된 대상의 실시예들을 설명하고, 설명과 함께 이러한 대상의 원리들을 설명하고 통상의 기술자가 그 대상을 만들고 이용하도록 할 수 있도록 더 기여한다.
도 1은 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템의 예시를 도시한다.
도 2는 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법의 예시를 도시한다.
도 3은 컴퓨팅 디바이스의 마이크로코드 및 키들을 배열로 나타내는 예시적인 구성을 도시한다.
도 4는 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 다른 방법의 일부의 예시를 도시한다.
도 5는 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 도 4의 방법의 나머지 부분의 예시를 도시한다.
도 6은 메모리 구성요소의 파티션의 예시 및 메모리 구성요소의 예시를 도시한다.
출원인들은 도면들에 포함된 임의의 제3자 상표들 또는 저작권 소유의 이미지들에 대한 임의의 권리를 분명히 포기한다. 이러한 마크들 및 이미지들은 오직 설명의 목적으로 포함되고, 그것들의 각각의 소유권자들의 단독 재산을 구성한다.
여기에서 실시예들의 특징들 및 효과들은 도면과 결합될 때 이하에서 제시되는 상세한 설명으로부터 더 명확해질 것이다. 도면에서, 유사한 참조 번호들은 일반적으로 동일하고/하거나, 기능적으로 유사하고/하거나, 구조적으로 유사한 엘리먼트들을 나타낸다.
이하의 상세한 설명은 예시적인 실시예들을 설명하는 첨부한 도면과 관련 있다; 그러나, 본 청구항의 범위는 이러한 실시예들에 제한되지 않는다. 따라서, 설명된 실시예들의 수정된 버전과 같은 첨부한 도면들에서 도시된 것들 이상의 실시예들이 그럼에도 불구하고 본 청구항들에 의해 포함될 수 있다.
명세서에서 "일 실시예", "실시예", "예시적인 실시예", "일 배치", "배치" 등의 언급은 기재된 실시예 또는 배치가 특정한 특징, 구조, 또는 특성들을 포함할 수 있지만, 모든 실시예가 반드시 특정한 특징, 구조, 또는 특성을 포함하지 않을 수 있다는 것을 나타낸다. 또한, 이러한 문구들은 반드시 동일한 실시예 또는 배치를 지칭하는 것은 아니다. 또한, 특정한 특징, 구조, 또는 특성이 실시예 또는 배치와 관련하여 설명되는 경우, 명시적으로 설명되는지 아니든지 간에, 다른 실시예들 또는 배치들과 관련하여 이러한 특징, 구조, 또는 특성을 구현하는 것은 통상의 기술자의 지식 내의 것임이 제시된다.
이 문서를 통해 적용되는 다양한 정의들이 여기서 제시될 것이다. 여기에서 사용되는 "예시적인"이라는 용어는 오브젝트(object), 장치, 시스템, 엔티티(entity), 구성(composition), 방법, 단계 또는 프로세스의 예시 또는 사례로서 정의된다. "통신 상으로 연결된"이라는 용어는 2개 이상의 구성요소들이 무선으로, 유선 연결을 통해 또는 그 둘의 결합으로 단방향의 또는 양방향의 (또는 다중 방향의) 방식으로 그 구성요소들 사이에서 통신 신호들이 교환될 수 있도록 연결되는 상태로서 정의된다. "컴퓨팅 디바이스"는 사용자를 위해 일부 프로세스 또는 기능을 수행하도록 구성되고 이동 디바이스 및 비이동 디바이스 양쪽 모두를 포함하는 구성요소로서 정의된다. "애플리케이션"은 사용자가 하나 이상의 특정한 작업들에 따라서 컴퓨팅 디바이스를 동작시킬 수 있도록 인터페이스를 제공하는 프로그램 또는 프로그램들로서 정의된다. "운영 시스템"이라는 용어는 다른 프로그램들의 실행을 제어하고 스케줄링하고, 저장, 입력/출력 및 통신 리소스들을 관리하는 것을 포함하는, 컴퓨팅 디바이스의 동작들을 명령하는 소프트웨어 구성요소들의 집합으로서 정의된다.
"부팅 프로세스"라는 용어는 컴퓨팅 디바이스가 활성화될 때 컴퓨팅 디바이스의 실행 환경 또는 운영 시스템을 로딩하기 위해 실행되는 단계들의 초기 시리즈들로 정의된다. "작동 시작 신호"라는 용어는 컴퓨팅 디바이스를 활성화시키고자 하는 사용자 행동에 대응하는 신호로서 정의된다. "마이크로코드"라는 용어는 컴퓨팅 디바이스에서 더 높은 레벨의 기계어 명령어들(machine code instructions)의 구현에 포함된 데이터 구조들 또는 하드웨어 레벨의 명령어들의 레이어(layer)로서 정의된다. "부트로더"라는 용어는 컴퓨팅 디바이스가 활성화될 때 컴퓨팅 디바이스의 실행 환경 또는 운영 시스템을 로딩하기 위해 부팅 프로세스 동안 실행되는 프로그램으로서 정의된다.
"인터페이스"는 제1 구성요소로부터 신호들을 적어도 수신하고 그 신호들을 제2 구성요소와 호환 가능한 형태로 제2 구성요소로 변환시키는 구성요소 또는 구성요소들의 그룹으로서 정의된다. "컨트롤러"는 명령어들의 집합들을 실행시키는 하나 이상의 구성요소들로서 정의된다. "메모리 구성요소"라는 용어는 데이터를 일시적으로 또는 지속적으로 저장하도록 구성된 하나 이상의 구성요소들로 정의된다. "소프트웨어 구성요소"는 프로그램 또는 명령어들의 집합이 메모리에 있을 때 인증 프로세스(validation process)가 프로그램 또는 명령어들의 집합 상에서 처리될 수 있는 메모리에 포함된 비휘발성 프로그램 또는 명령어들의 집합이다.
앞서 주목된 것처럼, 민감한 기업의 데이터에 접속할 수 있는 관리용 디바이스들은, 예를 들어 제조자, OS, 프레임 워크 또는 실행 환경에 의해 디바이스 상에서 부과되는 제한들에 따른다. 해결책을 실현시키기 위해, 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법이 여기에서 설명된다. 특히, 작동 시작 신호가 검출될 수 있고, 작동 시작 신호를 검출하는 것에 응답하여, 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부가 계속적으로 판정될 수 있다. 소프트웨어 구성요소들이 유효한 것으로 판정되는 경우, 컴퓨팅 디바이스는 동작 상태로 이동하는 것이 허용될 수 있다. 그러나, 소프트웨어 구성요소들 중 적어도 일부가 유효하지 않은 것으로 판정되는 경우, 컴퓨팅 디바이스는 동작 상태로 이동하는 것이 방지될 수 있다. 일 배치에서, 컴퓨팅 디바이스가 동작 상태로 이동하는 것이 방지되는 경우, 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 허용하기 위한 노력으로 수정 동작이 취해질 수 있다.
실제로, 이러한 구성요소들의 인증은, 점진적인 인증이 가장 낮은 레벨의 시스템으로부터 가장 높은 레벨의 시스템으로의 안전한 동작을 가능하게 하는 연쇄(chain)를 형성할 수 있다. 예를 들어, 디바이스의 마이크로코드가 유효한 것으로 판정되는 경우, 마이크로코드는 실행될 수 있고, 디바이스의 부트로더를 인증하는 것을 책임질 수 있다. 부트로더가 인증을 통과하는 경우, 부트로더는 실행될 수 있고, OS 인증을 책임질 수 있다. 이러한 방식으로, 부트 프로세스에 포함된 각각의 구성요소는 안전한 부팅 프로세스를 확실하게 하는 연쇄에서의 링크로 또는 오직 하나의 단계로 향할 수 있다.
이처럼, 루트 파일 시스템(root file system), OS에 대한 변경들 또는 허용되지 않은 콘텐츠의 설치를 포함하는, 승인되지 않은 컴퓨팅 디바이스에 대한 변경들은 디바이스가 작동 시작하는 경우 검출될 수 있다. 이러한 검출에 응답하여, 컴퓨팅 디바이스는 그것의 실행 환경을 시작하는 것이 방지될 수 있다. 이처럼, 초기 검출은 이러한 바람직하지 않은 수정들이 컴퓨팅 디바이스의 동작에 영향을 주고 잠재적으로 기업 데이터를 위험에 노출시키는 것을 방지할 수 있다. 취해질 수 있는 수정 동작의 예시는 디바이스의 사용자에게 디바이스가 실행 환경을 시작하도록 허용되지 않을 것임을 알리거나 또는 디바이스가 관리자에게 접속하여 영향을 받은 소프트웨어 구성요소들을 삭제하고 아마도 교체할 수 있음을 알리는 것을 포함한다. 추가적인 상세한 내용 및 예시들이 이하에서 설명될 것이다.
도 1을 참조하면, 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템(100)이 도시된다. 일 배치에서, 시스템(100)은 프로세싱 유닛(105), 제1 메모리 구성요소(110) 및 제2 메모리 구성요소(115)를 포함할 수 있다. 제1 메모리 구성요소(110) 및 제2 메모리 구성요소(115) 양쪽 모두는 다양한 소프트웨어 구성요소들을 저장할 수 있고, 이들의 일부 예시들이 이하에서 제시될 것이다. 프로세싱 유닛(105)은, 예를 들어, 전원 관리 엔진(120), 부트스트랩 엔진(125), 컨트롤러(130)(하나 이상의 구성요소들로 구성될 수 있음), 메모리 드라이버(135), 메모리(140) 및 1회 프로그램 가능(one time programmable, OTP) 어레이(145)를 포함할 수 있다. OTP 어레이(145)는, 다양한 상이한 소프트웨어 구성요소들과 연관된 서명(signature)들과 비교하여 사용될 수 있는 키(key)들과 같은, 소프트웨어 구성요소들을 인증하는데 도움이 될 수 있는 안전 값(secure value)들을 지속적으로 저장할 수 있다. 이러한 구성요소들의 각각은 스마트폰, 랩탑(laptop), 데스크탑 또는 소정의 다른 유사한 유닛과 같은 컴퓨팅 디바이스(150)의 일부일 수 있다.
다른 예시로서, 제1 메모리 구성요소(110)는 안전 부분 또는 파티션(155) 및 비안전 파티션(160)을 포함할 수 있다. 더 상세한 예시로서, 제1 메모리 구성요소(110)는 NAND 메모리 디바이스일 수 있지만, 시스템(100)이 그렇게 제한되지 않는 것으로 이해된다. 일 실시예에서, 안전 파티션(155)은 마이크로코드(165)를 저장할 수 있는 반면에, 비안전 파티션(160)은 부트로더(170)를 수용할 수 있고, 이러한 소프트웨어 구성요소들의 각각은 컴퓨터 디바이스(150)의 부팅 프로세스 동안 중요하다. 다른 예시에서, 제2 메모리 구성요소(115)는 다수의 파티션들(175)을 포함할 수 있다. 일 제한적이지 않은 배치에서, 제2 메모리 구성요소(115)는 각각의 OS가 파티션(175)에 연관되는 다수의 OS들을 저장할 능력을 갖거나 저장하도록 구성될 수 있다. 예시로서, 제2 메모리 구성요소(115)는 내장된 멀티미디어 카드(e-MMC)일 수 있지만, 당연히 다른 메모리 엘리먼트들이 여기에서의 설명과 양립될 수 있다. 제1 메모리 구성요소(110) 및 제2 메모리 구성요소(115)가 도 1에서 도시된 것처럼 물리적으로 별개이고 구분된 유닛들이지만, 이러한 구성요소들(110, 115)이 단일 메모리의 일부를 형성할 수 있고 프로세서와 같은 일부 다른 엘리먼트 내에 내장될 수 있다는 것이 이해된다.
프로세싱 유닛(105)으로 돌아가서, 전원 관리 엔진(120)은, 컴퓨팅 디바이스(150)가 활성화될 때 컨트롤러(130)로 신호를 보내도록 구성될 수 있다. 이러한 경우, 디바이스(150)를 활성화시키는 것은 디바이스(150)를 켜거나(turn on) 또는 디바이스(150)의 소프트 리부트(soft reboot)를 수행하는 것을 의미한다. 이에 응답하여, 컨트롤러(130)는 부트스트랩(125)을 실행시키는 것을 시작할 수 있고, 이것은 컨트롤러(130)가 메모리 드라이버(135)에게 명령하여 제1 메모리 구성요소(110)의 안전 파티션(155)으로부터 마이크로코드(165)를 불러오고 메모리(140)에 마이크로코드(165)를 로딩하도록 할 수 있다. 일 배치에서, 메모리(140)는 SRAM일 수 있지만, 다른 형태의 메모리가 여기에서 사용될 수 있다. 이 시점에서, 컨트롤러(130)는, 부트스트랩 엔진(125)을 통해, 마이크로코드(165)가 유효한지 여부를 판정할 수 있다. 마이크로코드(165)가 유효하지 않다고 컨트롤러(130)가 판정하는 경우, 컨트롤러(130)는 부팅 프로세스를 중지시키거나, 사용자에게 그 실패를 알리거나 또는 관리자로부터의 지원과 같은 원격 지원을 찾기 위해 실행하는 단계들과 같은 수정 동작을 취할 수 있다. 그럴 것 같지는 않지만, 마이크로코드(165)가 유효하지 않다는 판정은 마이크로코드(165)의 일부 승인되지 않은 수정의 결과 또는 마이크로코드(165)로 작업하도록 제작된 또는 마이크로코드(165)와 관련된 일부 소프트웨어 또는 하드웨어의 결과일 수 있다. 그러나 마이크로코드(165)가 유효하다고 컨트롤러(130)가 판정하는 경우, 컨트롤러(130)는 마이크로코드(165)를 실행시킬 수 있다.
마이크로코드(165)를 실행할 때, 다수의 하드웨어 구성요소들의 활성화 및 버스 트래픽의 유도(directing)와 같은 소정의 종래의 프로세스들이 실행될 수 있다. 또한, 컨트롤러(130)는, 마이크로코드의 실행을 통해, 제1 메모리 구성요소(110)의 비안전 파티션(160)으로부터 부트로더(170)를 불러오고 메모리(140)에 부트로더(170)를 로딩하도록 메모리 드라이버(135)에게 명령할 수 있다. 여기서, 상술한 프로세스와 유사하게, 컨트롤러(130)는 (마이크로코드(165)를 통해) 부트로더(170)가 유효한지 여부를 판정할 수 있다. 일부 승인되지 않은 수정의 결과와 같이, 부트로더(170)가 유효하지 않다고 컨트롤러(130)가 판정하는 경우, 컨트롤러(130)는 마이크로코드(165) 실패에 관하여 상술한 것과 유사한 수정 동작을 취할 수 있다. 반면에 부트로더(170)가 유효하다고 컨트롤러(130)가 판정하는 경우, 컨트롤러(130)는 부트로더(170)를 실행시킬 수 있다.
앞서 주목한 것처럼, 제2 메모리 구성요소(115)는 OS를 저장할 수 있다. 일단 부트로더(170)가 인증되면, 부트로더(170)는, 예를 들어 OS의 커널(kernel)을 로딩하고 실행시킬 수 있고, 그 커널은 차례로 OS의 루트 파일 시스템을 마운트(mount)시키고 이용할 수 있다. 그러나 이러한 프로세스가 시작되기 전에, 시스템(100)은, 마이크로코드(165) 및 부트로더(170)에 대해 실행되는 프로세스와 같이, OS가 유효한지 여부를 판정할 수 있다. OS가 유효하지 않다고 컨트롤러(130)가 판정하는 경우, OS는 로딩되도록 허용될 수 없고, 컨트롤러(130)는 미리 논의된 옵션들에 따를 수 있는 수정 동작을 취할 수 있다. OS가 유효한 것으로 판정되는 경우, OS는 로딩될 수 있고, 컴퓨팅 디바이스(150)는 동작 상태로 이동될 수 있다. 위에서 기재된 소프트웨어 구성요소들의 인증의 추가적인 설명이 이하에서 제시될 것이다.
앞서 또한 설명된 것처럼, 제2 메모리 구성요소(115)는 다수의 OS들을 저장할 수 있다. 이러한 구성은 컴퓨팅 디바이스(150)가 복수의 OS들 중 어느 하나를 실행하도록 허용할 수 있다. 일 배치에서, 제2 메모리 구성요소(115)에 저장된 각각의 OS는 위에서 기재된 프로세스에 따라 인증될 수 있다. 따라서, 시스템(100)은 OS들 중 어느 하나를 동작시킬 수 있는 디바이스 상에서 다수의 OS들을 인증할 수 있다. 이러한 프로세스의 효율을 증가시키기 위한 노력으로, 병렬 방식으로 다수의 OS들이 유효한지 여부가 판정될 수 있다. 즉, OS를 인증하는 것에 대해 상술한 단계들이 제2 메모리 구성요소(115)의 다수의 OS들에 대해 적어도 실질적으로 동시에 실행될 수 있다. 다른 옵션으로서, OS들을 저장하는 파티션들(175) 중 어느 하나가 분할될 수 있다. 파티션들(175)을 분할함으로써, 각각의 OS는, 제공된 OS의 편리한 인증을 위한 다수의 부트로더 스레드(thread)들에 의해 동작될 수 있는 다수의 구성요소들로 분리될 수 있다. 이러한 방식으로, 병렬 방식은 인증을 위한 수직적 구성요소(즉, 다수의 OS들 각각) 및 수평적 구성요소(즉, 개별적인 OS의 세그먼트들)를 가질 수 있다. 이러한 프로세스의 추가적인 설명은 이하에서 제시될 것이다.
다른 배치에서, OS들은 일 OS를 다른 OS를 통해 로딩하고 실행시키는 것이 채택될 수 있도록 OS들이 우선순위가 매겨질 수 있다. 이러한 특징은 또한 일 OS가 유효하지 않은 것으로 여겨지는 경우 대안을 제공할 수 있다. 예를 들어 제2 메모리 구성요소(115)에 저장된 2개의 OS들이 있고, 인증 프로세스가 거의 동일한 시간에 이러한 2개의 OS들에 대해 실행된다고 가정한다. 실제로, 예를 들어 루트 파일 구조에서 승인되지 않은 변경으로 인해, 디폴트(default) OS(즉, 예를 들어 마스터 부트 레코드(master boot record)에서 표시된 가장 우선 순위의 OS)가 유효하지 않은 것으로 판정될 수 있다. 옵션으로서, 시스템(100)은 우선 순위 리스트 상의 다음 OS, 이 경우에서는 백업 OS(즉, 더 낮은 우선 순위의 OS)로 이동할 수 있다. 이러한 OS가 유효한 것으로 여겨지는 경우, 이러한 OS는 로딩되고 실행될 수 있고, 컴퓨팅 디바이스(150)는 동작 상태로 이동될 수 있다.
도 2를 참조하면, 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법(200)이 도시된다. 여기에서의 많은 설명이 다수의 OS들을 포함하는 디바이스들에 대한 것이지만, 이 예시에서 그 설명은 하나의 OS를 갖는 컴퓨팅 디바이스에 집중될 것이다. 이러한 방법(200)은 사실상 예시적이고, 여기서 제시되는 단계들은 이러한 특정한 연대 순서에 제한되지 않는다. 또한, 방법(200)은 여기에서 도시된 것들에 비해 더 적은 단계들 또는 추가적인 단계들로 실행될 수 있다. 방법(200)을 설명하기 위해 참조들이 도 1에 대해 이루어질 수 있지만, 방법(200)은 다른 적절한 시스템들 및 구성요소들로 실행될 수 있다.
단계(205)에서, 작동 시작 신호가 검출될 수 있고, 그 신호의 검출에 응답하여, 단계(210)에서 나타난 것처럼, 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부가 점진적으로 판정될 수 있다. 판정 단계(215)에서, 소프트웨어 구성요소들이 유효한 것으로 여겨지면, 컴퓨팅 디바이스는 단계(220)에서 나타난 것처럼, 동작 상태로 이동하는 것이 허용될 수 있다. 그러나, 소프트웨어 구성요소들이 유효하지 않은 것으로 여겨지는 경우, 컴퓨팅 디바이스는 단계(225)에서 나타난 것처럼 동작 상태로 이동하는 것이 방지될 수 있다. 단계(230)에서, 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 허용하기 위한 노력으로 수정 동작이 취해질 수 있고, 다수의 대안들이 있다. 예를 들어, 단계(235)에서, 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소를 대신하여 대안적인 소프트웨어 구성요소로 돌리는 프로세스가 이행될 수 있다. 다른 예시로서, 단계(240)에서 나타난 것처럼 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소에 대한 대체물을 획득하기 위해 관리자가 신호를 받을 수 있다.
방법(200)의 예시적인 설명이 이제 제시될 것이다. 앞서 설명된 것처럼, 전원 관리 엔진(120)은 작동 시작 신호를 검출할 수 있고, 이에 따라 컨트롤러(130)로 신호를 보낼 수 있다. 컨트롤러는 컴퓨팅 디바이스(150)의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 것을 시작할 수 있다. "소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정한다"라는 용어는 복수의 소프트웨어 구성요소들이 승인되지 방식으로 수정되었는지 여부를 판정하기 위한 노력으로 이러한 소프트웨어 구성요소들이 연속하여 평가되고 그 다음의 소프트웨어 구성요소들이 그것들의 평가를 위해 이전에 인증된 구성요소들에 의존하는 프로세스로서 정의된다. 일부 예시적인(즉, 제한적이지 않은) 컴퓨팅 디바이스(150)의 소프트웨어 구성요소들은 마이크로코드, 부트로더 및 OS를 포함한다.
예시로서, 실행 이전에, 마이크로코드(165)는 인증될 수 있다. 도 3을 참조하면, 마이크로코드(165)는 실행 가능한 코드(315)를 포함할 수 있는 페이로드 섹션(310) 및 헤더(305)를 포함할 수 있다. 일 배치에서, 헤더(305)는, 공개키(320)의 개인키 구성요소로 암호화되는(다른 공개-개인 키 조합들이 여기에서 이용될 수 있음) 실행 가능한 코드(315)의 해쉬(hash)일 수 있는 서명(325) 및 공개키(320)와 같은 하나 이상의 안전 값들을 포함할 수 있다. 다른 배치에서, OTP 어레이(145)는 마이크로코드(165)의 헤더(305)의 공개키(320)를 보완하는 개인키(330)와 같은 대응하는 안전 값으로 프로그램될 수 있다. OTP 어레이(145)는 또한 다른 소프트웨어 구성요소들과 연관된 다른 안전 값들에 대응할 수 있는 키들(335)과 같은 다수의 다른 안전 값들을 포함할 수 있다.
마이크로코드(165)가 유효한지 여부를 판정하기 위해, 컨트롤러(130)는 - 부트스트랩(125)의 실행을 통해 - 마이크로코드(165)를 판독하고, 실행 가능한 코드(315)에 기초하여 해쉬를 생성하고, 서명을 생성하기 위해, 예를 들어 헤더(305)의 키(320)로 이러한 해쉬를 암호화할 수 있다. 이러한 생성된 서명은, 헤더(305)의 키(320)가 공개/개인 키 쌍의 매칭하는 보완물(complement)인지 여부를 판정할 수 있는, OTP 어레이(145)의 키(330)를 사용하여 검증된다. 생성된 서명이 유효하지 않은 것으로 판정되는 경우, 부트 프로세서는 실패할 수 있다(이러한 시나리오에 대한 추가 설명이 이하에서 제시될 것이다). 생성된 서명이 유효한 것으로 판정되는 경우, 생성된 서명은 헤더(305)의 서명(325)과 비교될 수 있다. 서명이 매칭되지 않는 경우, 부트 프로세스는 실패할 수 있다. 반대로, 서명이 매칭하는 경우, 마이크로코드(165)는 유효한 것으로 고려될 수 있고 실행될 수 있다. 따라서, 이러한 흐름은 결국 서명(325)을 형성하는 암호화된 해쉬가 코드(315)가 변형되지 않았음을 나타내는 코드(315)의 해쉬의 프로그램의 재컴퓨팅(re-computing)에 의해 반복될 수 있다는 것을 확실히 할 수 있다.
이 시점에서, 시스템(100)은, 이 예시에서 부트로더(170)일 수 있는 다음 소프트웨어 구성요소로 이동할 수 있다. 즉, 마이크로코드(165)가 유효한지 여부를 판정한 다음에 그리고 마이크로코드(165)가 유효한 경우에만 부트로더(170)가 유효한지 여부가 판정될 수 있다. 부트로더(170)가 유효한지 여부를 판정하는 프로세스는 마이크로코드(165)가 유효한지 여부를 판정하는 것에 대해 상술한 프로세스와 유사할 수 있다. 예를 들어, 부트로더(170)는 개인-공개키 쌍의 공개키와 같은 키 및 서명을 포함하는 헤더를 포함할 수 있다. 헤더에서의 서명은 헤더의 키로 암호화된 부트로더(170)의 실행 가능한 코드의 암호화된 해쉬일 수 있다. 이러한 키 및 서명은 상술한 설명에 따라 인증될 수 있다. 키 및 서명 양쪽 모두가 인증될 수 없는 경우, 부팅 프로세스는 실패할 수 있다. 일 배치에서, RSA 알고리즘이 OTP 어레이(145)에 의지하는 인증을 대신하여 사용될 수 있다. 이러한 특징은 하드웨어 지원 OPT 타입 인증이 지원되지 않는 시스템에서 유용할 수 있다.
부트로더(170)가 인증되면, 부트로더(170)가 실행될 수 있다. 이러한 인증 후에, 컴퓨팅 디바이스(150)의 OS가 유효한지 여부가 판정될 수 있고, 이것은 부트로더(170)가 유효한 것으로 판정되는 경우에만 발생할 수 있다. 예시로서, OS의 루트 파일 시스템 및 커널이 인증될 수 있다. OS의 인증의 일부로서, 부트로더(170)는, OS의 서명에 관한 관련 정보를 제공할 수 있는, 마스터 부트 레코드를 판독할 수 있다. 또한, OS에 대한 인증 프로세스는 마이크로코드(165) 및 부트로더(170)에 대한 것과 유사할 수 있다. 특히, OS는, 헤더가 실행 가능한 코드에 기초하여 서명 및 키를 포함하는 실행 가능한 코드 및 헤더를 포함할 수 있다. 예시로서, 이러한 헤더는 제2 메모리 구성요소(115) 또는 일부 다른 적절한 메모리 엘리먼트에 저장될 수 있다. 컨트롤러(130)는, 부트로더(170)의 실행을 통해, 키 및 서명을 허용할 수 있고, 양쪽 모두의 엘리먼트들이 유효한 것으로 판정되는 경우, OS가 실행될 수 있다. 이러한 인증은 컴퓨팅 디바이스(130)가 동작 상태로 이동하도록 허용할 수 있다. "동작 상태"는, 기계가 부팅 프로세스 이후로 이동하고, 사용자 입력에 응답하고 그것의 의도된 능력으로 작동하는 능력을 포함하는, 그것의 일반적인 동작들을 수행할 수 있는 상태로서 정의된다.
OS가 유효한 것으로 판정될 수 없는 경우, 부팅 프로세스는 실패할 수 있고, 컴퓨팅 디바이스(130)는 동작 상태로 이동하는 것이 방지될 수 있다. 사실, 상술한 설명으로부터 얻어질 수 있는 것처럼, 컴퓨팅 디바이스(130)의 소프트웨어 구성요소들 중 임의의 것(예를 들어, 마이크로코드(165), 부트로더(170) 또는 OS)가 인증될 수 없는 경우, 부팅 프로세스는 실패할 수 있고, 디바이스(130)는 동작 상태로 이동하는 것이 방지될 수 있다.
부팅 프로세스가 실패하는 경우, 컨트롤러(130)는, 부트로더(170)의 실행을 통해, 컴퓨팅 디바이스(150)가 동작 상태로 이동하도록 허용하기 위한 노력으로 수정 동작을 취할 수 있고, 이것의 다수의 예시들이 이제 제시될 것이다. 일 실시예에서, 컨트롤러(130)는 컴퓨팅 디바이스(150)의 사용자가 부팅 프로세스의 실패에 대해 통지 받는 것을 야기할 수 있는 신호를 생성할 수 있다. 다른 예시에서, 컨트롤러(130)는, 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소를 대신하여 대안적인 소프트웨어 구성요소로 돌릴 수 있다. 다음의 예시적인 시나리오를 고려한다. 부팅 프로세스 동안, 부트로더(170)가 손상되고 인증될 수 없다고 판정될 수 있다. 컴퓨팅 디바이스(150)는, 검색될 수 있고 인증되는 경우 부팅 프로세스를 계속하도록 실행될 수 있는 백업 부트로더 프로그램을 포함할 수 있다. 다른 예시로서, 컨트롤러(130)는, 관리자가 컴퓨팅 디바이스(150)의 부팅 프로세스가 실패했음을 통지 받도록 하게 할 수 있는 신호를 생성할 수 있다. 예를 들어, 부트로더(170)는 이러한 실패를 가능하게 하기 위해 IP 스택을 관리하기에 충분한 실행 레벨(runlevel)을 설정하는 능력을 가질 수 있다. 이러한 프로세스의 일부로서, 관리자는, 유효하지 않은 것으로 판정되었던 소프트웨어 구성요소, 이 예시에서는 부트로더(170)에 대한 대체물을 획득할 수 있다. 관리자는 새로운 부트로더 또는 다른 소프트웨어 구성요소를 디바이스(150)로 푸쉬(push)할 수 있거나, 다른 원격지로부터 그러한 구성요소들을 검색하도록 디바이스(150)를 명령할 수 있다. 일단 설치되면, 새로운 구성요소들은 시스템(100)에 의해 선택적으로 인증될 수 있고, 동작 상태로 디바이스(150)를 이동시키는데 도움이 될 수 있다.
이제 도 4를 참조하면, 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 다른 방법(400)이 도시된다. 방법(400)의 다수의 단계들은 도 2의 방법(200)에서 설명된 단계들과 유사하다. 그러나, 방법(400)은 다수의 OS들을 지원할 수 있는 컴퓨팅 디바이스 상에서 실행될 수 있는 추가 프로세스들을 보여준다.
방법(200)과 유사하게, 이러한 방법(400)은 사실상 예시적이고, 여기에서 제시된 단계들은 이러한 특정한 연대 순서에 제한되지 않는다. 또한, 방법(400)은 여기에서 도시된 것에 비해 더 적은 단계로 또는 추가적인 단계로 실행될 수 있다. 방법(400)을 설명하기 위해 도 1 및 3에 대한 참조들이 이루어질 것이지만, 방법(400)이 다른 적합한 시스템들 및 구성요소들로 실행될 수 있다는 것이 이해된다.
단계(405)에서, 컴퓨팅 디바이스에서의 작동 시작 신호가 검출될 수 있고, 이러한 검출에 응답하여, 단계(410)에서 나타난 것처럼, 디바이스의 마이크로코드가 유효한지 여부가 판정될 수 있다. 단계(420)에서 나타난 것처럼, 판정 단계(415)에서 마이크로코드가 유효한 경우, 마이크로코드가 실행될 수 있고, 디바이스의 부트로더가 유효한지 여부가 판정될 수 있다. 단계들(430 및 435)에서 각각 나타난 것처럼, 판정 단계(425)에서 부트로더가 유효한 경우, 부트로더가 실행될 수 있고, 마스터 부트 레코드가 판독될 수 있다. 단계(440)에서, 병렬 방식으로 다수의 OS들이 유효한지 여부가 판정될 수 있다. 판정 단계(445)에서 선택된 OS가 유효한 경우, 그 OS는 로딩될 수 있고, 이것은 미리 결정된 순서에 적어도 부분적으로 기초할 수 있다.
마이크로코드, 부트로더 또는 선택된 OS가 유효하지 않은 것으로 여겨지는 경우, (이동 기호 A를 통해) 도 5의 단계(455)에서 나타난 것처럼 수정 동작이 취해질 수 있다. 여기에서 수정 동작을 취하기 위한 다수의 대안들이 있다. 예를 들어, 단계(460)에서 나타난 것처럼 부팅 프로세스가 중지될 수 있거나, 단계(465)에서 나타난 것처럼, 제1 OS가 유효하지 않은 것으로 판정되었던 경우, 미리 결정된 순서에 적어도 일부분 기초하여 대안적인 OS가 로딩될 수 있다. 다른 예시로서, 단계(470)에서, 마이크로코드, 부트로더 또는 OS 중 어느 하나가 유효하지 않은 것으로 판정되는 경우, 마이크로코드, 부트로더 또는 OS에 대한 대체물을 획득하기 위한 노력으로 관리자가 신호를 받을 수 있다.
앞서 설명된 것처럼, 컴퓨팅 디바이스(150)는 다수의 OS들을 저장하고 이러한 OS들 중 어느 하나를 실행할 수 있다. 부팅 프로세스 동안, 컴퓨팅 디바이스(150)의 마이크로코드(165) 및 부트로더(170)는 상술한 설명에 따라 인증될 수 있다. 부트로더(170)가 인증되고 그것의 실행이 시작되면, 부트로더(170)는 마스트 부트 레코드를 판독할 수 있다. 제2 메모리 구성요소(115)가 다수의 OS들을 저장할 가능성을 고려하여, 마스터 부트 레코드는, 예를 들어 OS들의 각각에 대한 다음의 상세한 사항들: 파티션 번호, OS 타입, OS 수정 및 미리 결정된 상태 또는 순위를 나타낼 수 있다. 부트로더(170)는 이러한 정보를 사용하여 다수의 OS들의 인증을 시작할 수 있다. 이후에 설명될 것처럼, 미리 결정된 순위는, 하나 이상의 OS들이 인증될 수 없는 경우에 대안적인 동작들을 취하는데 유용할 수 있다.
OS들을 인증하는 프로세스는 방법(200)의 단일 OS 인증에 관하여 설명된 것과 유사할 수 있다. 즉, 각각의 OS는 OS의 실행 가능한 코드에 기초하는 서명 및 키를 포함하는 헤더를 가질 수 있다. 헤더의 키는 OTP 어레이(145)의 키(335)와 비교되어 그것의 인증을 확실히 할 수 있다. 컨트롤러(130)는 또한 서명을 생성하고 이러한 생성된 서명을 헤더의 서명과 비교할 수 있다. 서명들이 매칭하는 경우, 그 OS는 유효한 것으로 고려될 수 있다. 헤더 키 또는 서명 인증이 실패하는 경우, 인증될 수 없는 OS는 로딩되는 것이 방지될 수 있고, 이에 의해 (적어도 초기에는) 컴퓨팅 디바이스(150)가 동작 상태로 진입하는 것을 방지할 수 있다.
OS를 인증하는데 어느 정도 시간이 걸릴 수 있기 때문에, 이러한 프로세스를 직렬 방식으로 수행하는 것은 일부 환경들에 대해서 너무 오래 걸릴 수 있다. 부팅/인증 절차를 더 효율적으로 하기 위해, 다수의 OS들은 병렬 방식으로 인증될 수 있다. 이러한 기술의 설명을 돕기 위해, 도 6에 대한 참조가 이루어질 것이다. 거기에서, 2개의 파티션들(175A, 175B)이 구성요소(115)의 일부로서 도시되는 제2 메모리 구성요소(115)가 도시된다. 이 예시에서, 파티션(175A)이 제1 OS를 수용하고, 파티션(175B)이 제2 OS를 포함한다고 가정할 수 있다. 부팅 프로세스 동안, 제1 OS 및 제2 OS 양쪽 모두는 상술한 인증 프로세스에 따라 평가 될 수 있고, 이러한 절차는 양쪽 모두의 OS들에 대해 거의 동일한 시간에 실행될 수 있다. 즉, 컨트롤러(130)는, 승인된 부트로더(170)의 실행을 통해, 이러한 OS들의 양쪽 모두가 실질적으로 동일한 시간에 유효한지 여부를 판정할 수 있다.
다수의 OS들의 동시 인증과 함께, 다른 대안이 이용되어 프로세스를 심지어 더 효율적으로 만들 수 있다. 예를 들어, 파티션(175A)은 도 6에서 별도로 도시되고, 파티션(175A)은 세그먼트들(175A1, 175A2, 175A3 및 175A4)로 분할된다. 세그먼트들(175A1-175A4) 각각은, 이전에 설명된 레이아웃들과 유사한, 키 및 서명을 포함하는 헤더를 가질 수 있다. 일 배치에서, 헤더 키는 세그먼트들(175A1-175A4)의 각각에 대한 동일한 키일 수 있고, 이러한 키는 OTP 어레이(145)에서 보완 키(335)와의 비교를 통해 인증될 수 있다. 다른 배치에서, 헤더의 서명은 그 세그먼트와 연관되는 세그먼트 내에서 포함되는 실행 가능한 코드에 기초할 수 있다. 예를 들어, 세그먼트(175A1)에 대한 헤더의 서명은 세그먼트(175A1)의 코드에 기초할 수 있다. 세그먼트들(175A1-175A4) 각각은 상술한 설명에 따라 승인될 수 있고, 효율을 향상시키기 위해, 세그먼트들(175A1-175A4)은 실질적으로 동시에 인증될 수 있다.
알 수 있듯이, 병렬 방식으로 다수의 OS들이 유효한지 여부를 판정하는 것은 다수의 구성요소들을 포함한다. 제1 예시는 다수의 OS들이 동시에 승인될 수 있는 수직적 구성요소이다. 제2 예시는 OS가 다수의 세그먼트들로 다시 나누어지고, 그 세그먼트들이 동시에 승인될 수 있는 수평적 구성요소이다. 이러한 설명에서, 이것은 파티션(175A)과 연관된 제1 OS의 4개의 세그먼트들(175A1-175A4)이 동시에 인증될 수 있는 동안, 그와 동시에, 파티션(176A)과 연관된 제2 OS의 세그먼트들(도시 안됨)이 동시에 인증될 수 있다는 것을 의미한다. "병렬 방식으로 운영 시스템들이 유효한지 여부를 판정한다"라는 문구는 제1 OS의 적어도 일부분이 제2 OS의 일부분과 동시에 인증될 수 있다는 것을 의미한다.
병렬 방식으로 인증하는 것이 수직적 구성요소 및 수평적 구성요소 양쪽 모두를 포함할 수 있지만, 이러한 기술이 이에 제한되는 것은 아니다. 예를 들어, 복수의 OS들의 각각의 OS가 전체로서 동시에 인증될 수 있기 때문에, OS들을 분할하는 것이 반드시 필요한 것은 아니다. 실현될 수 있는 다른 배치들도 있다. 예를 들어, 제1 OS는 분할될 수 있지만, 제2 OS는 분할되지 않을 수 있다. 따라서, 인증 동안, 제1 OS의 세그먼트들은 동시에 승인될 수 있는 반면, 제2 OS는 전체로서 동시에 인증될 수 있다. 제2 OS의 인증은 제1 OS의 인증보다 더 오래 걸릴 수 있지만, 제2 OS에 대한 인증이 제1 OS의 적어도 일부분을 중복시켜야만 한다. 다수의 OS들이 연속적이거나 직렬 방식으로 인증될 수 있기 때문에, 다수의 OS들이 반드시 병렬 방식으로 인증될 필요는 없다는 것이 또한 이해되어야 한다. 또한, OS가 분할되는 경우, 그 세그먼트들의 각각이 동시에 인증될 필요는 없다. 예를 들어, 세그먼트들(175A1-175A4)을 고려하여, 첫 번째 2개의 세그먼트들(175A1및 175A2)은 동시에 승인될 수 있고, 나머지 2개의 세그먼트들(175A3및 175A4)은 첫 번째 2개의 세그먼트들(175A1-A2)과 중복하지 않는 이후의 시간에 동시에 인증될 수 있다.
실제로 1/2, 1/3, 1/8 등을 포함하는, 임의의 적합한 단편적인 분할이 이용될 수 있기 때문에, OS들이 1/4로 분할되는 것으로 제한되지 않는다. 사실, 단편적인 분할들이 서로 균등할 필요는 없다. 예를 들어, 일 세그먼트는 OS의 1/2과 동일할 수 있는 반면에, 나머지 2개의 세그먼트들은 OS의 1/4과 동일할 수 있다.
어느 하나의 배치에서, OS들 중 적어도 하나가 유효한 것으로 판정되는 경우, 그 OS가 로딩될 수 있고, 컴퓨팅 디바이스(150)는 동작 상태로 이동할 수 있다. 그러나, OS가 유효하지 않은 것으로 판정되는 경우, 수정 동작이 취해질 수 있다. 수정 동작의 일부 예시들은 이전에 제시된 것과 유사할 수 있다. 예를 들어, 부팅 프로세스가 간단히 저장될 수 있고, 사용자는 그 사안을 통지 받을 수 있다. 다른 배치에서, 관리자는 신호를 받을 수 있고, 영향을 받은 OS에 대한 대체물이 컴퓨팅 디바이스(150)로 푸쉬될 수 있다.
디바이스(150)에서의 다수의 OS들의 포함은 다른 대안을 제시한다. 특히, 병렬 인증 프로세스 동안에서와 같이 대안적인 OS가 승인되는 경우, 영향을 받은 OS를 대신하여 대안적인 OS가 로딩될 수 있다. 앞서 설명된 것처럼, 마스터 부트 레코드는 미리 결정된 상태 또는 순위필드를 포함할 수 있고, 이러한 미리 결정된 순위는 다수의 OS들을 로딩하는 우선 순위에 대한 표시를 제공할 수 있다. 컴퓨팅 디바이스(150)가 2개의 OS들을 지원하는 예시를 고려한다. 제1 OS가 디폴트 OS일 수 있는 반면, 제2 OS는 백업 OS로 고려될 수 있고, 이것은 제2 OS가 제1 OS보다 더 낮은 우선 순위를 가진다는 것을 나타낸다. 이러한 구성은 마스터 부트 레코드에서 반영될 수 있다. 이처럼, 양쪽 모두의 OS들이 인증되는 경우, 디폴트 OS는 로딩될 수 있다. 그러나, 제1 OS가 인증될 수 없는 경우, 제2 OS가 로딩될 수 있다. 인증의 병렬 기술을 고려하여, 백업(즉, 제2) OS는 더 빨리 로딩될 수 있다. 이러한 미리 결정된 순위 특징은 컴퓨팅 디바이스(150)가 지원할 수 있는 임의의 수의 OS들에 적용될 수 있다.
도면들의 순서도 및 블록도는 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 설명한다. 이와 관련하여, 순서도 또는 블록도의 각각의 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어들을 포함하는, 코드의 모듈, 세그먼트, 또는 일부분을 나타낼 수 있다. 일부 대안적인 구현들에서, 블록에서 표시되는 기능들이 도면들에서 표시된 순서로 발행할 수 있다는 것이 또한 주목되어야만 한다. 예를 들어, 연속으로 도시된 2개의 블록들은, 사실은, 실질적으로 동시에 실행될 수 있건, 그 블록들은 때로는, 포함된 기능에 따라, 반대의 순서로 실행될 수 있다.
다양한 실시예들이 상술되었지만, 그것들은 제한이 아닌 예시로서 제시되었다는 것이 이해되어야 한다. 첨부된 청구항들에서 정의된 본 발명의 의도 및 범위를 벗어나지 않고 형식 및 상세한 내용에서의 다양한 변경들이 이루어질 수 있다는 것이 관련 분야의 통상의 기술자에 의해 이해될 것이다. 따라서, 청구항들 및 그것의 균등물들의 폭 및 범위는 상술한 예시적인 실시예들에 의해 제한되지 않아야 한다.

Claims (29)

  1. 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법에 있어서,
    작동 시작 신호를 검출하는 단계;
    상기 작동 시작 신호를 검출하는 것에 응답하여, 상기 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계;
    상기 소프트웨어 구성요소들이 유효한 것으로 판정되는 경우, 상기 컴퓨팅 디바이스가 동작 상태로 이동하도록 허용하는 단계;
    상기 소프트웨어 구성요소들의 적어도 일부가 유효하지 않은 것으로 판정되는 경우, 상기 컴퓨팅 디바이스가 상기 동작 상태로 이동하는 것을 방지하는 단계; 및
    상기 컴퓨팅 디바이스가 상기 동작 상태로 이동하는 것이 방지되는 경우, 상기 컴퓨팅 디바이스가 상기 동작 상태로 이동하는 것을 허용하기 위한 노력으로 수정 동작을 취하는 단계
    를 포함하는 인증 방법.
  2. 제1항에 있어서,
    상기 소프트웨어 구성요소들은 마이크로코드, 부트로더 및 하나 이상의 운영 시스템들을 포함하는 인증 방법.
  3. 제2항에 있어서,
    상기 마이크로코드는 상기 컴퓨팅 디바이스의 메모리 구성요소의 안전한 부분에 저장되는 인증 방법.
  4. 제2항에 있어서,
    상기 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계는 상기 마이크로코드가 유효한지 여부를 우선 판정하는 단계 및 상기 마이크로코드가 유효한지 여부를 판정한 다음에 그리고 상기 마이크로코드가 유효한 경우에만 상기 부트로더가 유효한지 여부를 판정하는 단계를 포함하는 인증 방법.
  5. 제4항에 있어서,
    상기 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계는 상기 부트로더가 유효한지 여부를 판정한 다음에 그리고 상기 부트로더가 유효한 경우에만 상기 운영 시스템이 유효한지 여부를 판정하는 단계를 더 포함하는 인증 방법.
  6. 제5항에 있어서,
    상기 소프트웨어 구성요소들은 다수의 운영 시스템들을 포함하여 상기 컴퓨팅 디바이스가 상기 다수의 운영 시스템들 중 어느 하나를 동작시킬 수 있는 인증 방법.
  7. 제6항에 있어서,
    상기 컴퓨팅 디바이스의 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하는 단계는 병렬 방식으로 상기 다수의 운영 시스템들이 유효한지 여부를 판정하는 단계를 더 포함하는 인증 방법.
  8. 제7항에 있어서,
    상기 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 갖는 인증 방법.
  9. 제1항에 있어서,
    상기 수정 동작을 취하는 단계는,
    유효하지 않은 것으로 판정되었던 소프트웨어 구성요소를 대신하여 대안적인 소프트웨어 구성요소로 돌리는 단계; 또는
    유효하지 않은 것으로 판정되었던 소프트웨어 구성요소에 대한 대체물을 획득하기 위해 관리자에게 신호를 보내는 단계
    를 포함하는 인증 방법.
  10. 다수의 운영 시스템들 중 하나를 동작시킬 수 있는 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 방법에 있어서.
    작동 시작 신호를 검출하는 단계;
    상기 작동 시작 신호를 검출하는 것에 응답하여, 상기 컴퓨팅 디바이스의 마이크로코드가 유효한지 여부를 판정하는 단계;
    상기 마이크로코드가 유효한 경우, 상기 마이크로코드를 실행시키고 상기 컴퓨팅 디바이스의 부트로더가 유효한지 여부를 판정하는 단계; 및
    상기 부트로더가 유효한 경우, 상기 부트로더를 실행시키고 병렬 방식으로 상기 운영 시스템들이 유효한지 여부를 판정하는 단계
    를 포함하는 인증 방법.
  11. 제10항에 있어서,
    상기 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 갖는 인증 방법.
  12. 제10항에 있어서,
    상기 운영 시스템들 중 하나가 유효한 것으로 판정되었다면 그 운영 시스템들 중 하나를 선택적으로 로딩하는 단계를 더 포함하고,
    상기 로딩된 운영 시스템은 미리 결정된 순위에 기초하여 선택되는 인증 방법.
  13. 제12항에 있어서,
    상기 운영 시스템들이 유효한지 여부를 판정하는 단계의 일부로서 마스터 부트 레코드를 판독하는 단계를 더 포함하고,
    상기 미리 결정된 순위는 상기 마스터 부트 레코드의 일부인 인증 방법.
  14. 제12항에 있어서,
    제1 운영 시스템이 유효하지 않은 것으로 판정되는 경우, 상기 방법은 제2 운영 시스템이 유효한 것으로 판정된다면 상기 제2 운영 시스템을 선택적으로 로딩하는 단계를 더 포함하고, 상기 제2 운영 시스템은 상기 미리 결정된 순위에 기초하여 선택되고, 상기 제2 운영 시스템의 미리 결정된 순위는 상기 제1 운영 시스템의 미리 결정된 순위보다 낮은 우선 순위를 갖는 인증 방법.
  15. 제10항에 있어서,
    상기 마이크로코드, 상기 부트로더 또는 운영 시스템 중 어느 것도 유효하지 않은 것으로 판정되는 경우, 상기 방법은 수정 동작을 취하는 단계를 더 포함하고,
    이러한 수정 동작은,
    상기 부팅 프로세스를 중지시키고 상기 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 방지하는 것;
    상기 부팅 프로세스를 중지시키고, 상기 컴퓨팅 디바이스가 동작 상태로 이동하는 것을 방지하고, 상기 부팅 프로세스의 실패를 사용자에게 알리는 것;
    제1 운영 시스템이 유효하지 않은 것으로 판정되는 경우 대안적인 운영 시스템을 로딩하는 것; 또는
    상기 마이크로코드, 상기 부트로더 또는 운영 시스템 중 어느 하나가 유효하지 않은 것으로 판정되는 경우, 상기 마이크로코드, 상기 부트로더 또는 상기 운영 시스템에 대한 대체물을 획득하기 위한 노력으로 관리자에게 신호를 보내는 것
    중 하나를 포함하는 인증 방법.
  16. 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템에 있어서,
    작동 시작 신호를 수신하도록 구성된 전원 관리 엔진;
    부팅 프로세스에 관한 소프트웨어 구성요소들을 저장하도록 구성된 제1 메모리 구성요소;
    소프트웨어 구성요소들 - 이 중 하나는 운영 시스템임 - 을 저장하도록 구성된 제2 메모리 구성요소; 및
    컨트롤러
    를 포함하고,
    상기 컨트롤러는,
    상기 운영 시스템 및 상기 부팅 프로세스에 관한 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하고;
    상기 소프트웨어 구성요소들 및 상기 운영 시스템이 유효한 경우, 상기 컴퓨팅 디바이스가 동작 상태로 이동하도록 허용하고;
    상기 소프트웨어 구성요소들 또는 상기 운영 시스템 중 어느 것도 유효하지 않은 것으로 판정되는 경우, 상기 컴퓨팅 디바이스가 상기 동작 상태로 이동하는 것을 방지하고;
    상기 컴퓨팅 디바이스가 상기 동작 상태로 이동하는 것이 방지되는 경우, 상기 컴퓨팅 디바이스가 상기 동작 상태로 이동하도록 허용하기 위한 노력으로 수정 동작을 취하도록 동작 가능한 인증 시스템.
  17. 제16항에 있어서,
    상기 컨트롤러는,
    유효하지 않은 것으로 판정되었던 상기 운영 시스템 또는 상기 소프트웨어 구성요소를 대신하여 대안적인 소프트웨어 구성요소로 돌리거나, 또는
    유효하지 않은 것으로 판정되었던 상기 운영 시스템 또는 상기 소프트웨어 구성요소에 대한 대체물을 획득하기 위해 관리자에게 신호를 보냄으로써 수정 동작을 취하도록 동작 가능한 인증 시스템.
  18. 제16항에 있어서,
    상기 제1 메모리 구성요소는 안전 파티션 및 비안전 파티션을 갖고, 상기 부팅 프로세스에 관한 소프트웨어 구성요소들은 마이크로코드 및 부트로더이고, 상기 마이크로코드는 상기 안전 파티션에 저장되고, 상기 부트로더는 상기 비안전 파티션에 저장되는 인증 시스템.
  19. 제18항에 있어서,
    상기 제2 메모리 구성요소는 다수의 파티션들을 포함하고 다수의 운영 시스템들을 저장하도록 구성되며, 상기 제1 메모리 구성요소 및 제2 메모리 구성요소는 분리된 메모리 구성요소들인 인증 시스템.
  20. 제16항에 있어서,
    상기 부팅 프로세스에 관한 소프트웨어 구성요소들은 마이크로코드 및 부트로더이고, 상기 컨트롤러는, 상기 마이크로코드가 유효한지 여부를 먼저 판정하고 상기 마이크로코드가 유효한지 여부를 판정한 다음에 그리고 상기 마이크로코드가 유효한 경우에만 상기 부트로더가 유효한지 여부를 판정함으로써 상기 부팅 프로세스에 관한 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하도록 동작 가능한 인증 시스템.
  21. 제20항에 있어서,
    상기 컨트롤러는, 상기 부트로더가 유효한지 여부를 판정한 다음에 그리고 상기 부트로더가 유효한 경우에만 상기 운영 시스템이 유효한지 여부를 판정함으로써 상기 운영 시스템 및 상기 부팅 프로세스에 관한 소프트웨어 구성요소들이 유효한지 여부를 점진적으로 판정하도록 동작 가능한 인증 시스템.
  22. 제16항에 있어서,
    상기 컨트롤러는 병렬 방식으로 다수의 운영 시스템들이 유효한지 여부를 판정하도록 동작 가능하고, 상기 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 갖는 인증 시스템.
  23. 컴퓨팅 디바이스의 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템에 있어서,
    마이크로코드 및 부트로더를 저장하도록 구성된 제1 메모리 구성요소;
    다수의 운영 시스템들을 저장할 수 있도록 다수의 파티션들을 포함하는 제2 메모리 구성요소;
    컨트롤러
    를 포함하고, 상기 컨트롤러는,
    부트스트랩을 실행하고 상기 마이크로코드가 유효한지 여부를 판정하고;
    상기 마이크로코드가 유효한 경우, 상기 마이크로코드를 실행하고 상기 부트로더가 유효한지 여부를 판정하고;
    상기 부트로더가 유효한 경우, 상기 부트로더를 실행하고 상기 다수의 운영 시스템들이 유효한지 여부를 병렬 방식으로 판정하도록 동작 가능한 인증 시스템.
  24. 제23항에 있어서,
    상기 병렬 방식은 수직적 구성요소 및 수평적 구성요소를 갖는 인증 시스템.
  25. 제23항에 있어서,
    상기 컨트롤러는, 상기 운영 시스템들 중 하나가 유효하도록 판정되었다면 그 운영 시스템을 선택하도록 동작 가능하고, 상기 선택된 운영 시스템은 미리 결정된 순위에 기초하는 인증 시스템.
  26. 없음
  27. 제23항에 있어서,
    제1 운영 시스템이 유효하지 않은 것으로 판정되는 경우, 상기 컨트롤러는 제2 운영 시스템이 유효한 것으로 판정된다면 로딩을 위해 상기 제2 운영 시스템을 선택하도록 동작 가능하고, 상기 제2 운영 시스템은 상기 미리 결정된 순위에 기초하여 선택되고, 상기 제2 운영 시스템의 미리 결정된 순위는 상기 제1 운영 시스템의 미리 결정된 순위보다 낮은 우선 순위를 갖는 인증 시스템.
  28. 제23항에 있어서,
    상기 제1 메모리 구성요소는 안전 파티션 및 비안전 파티션을 갖고, 상기 마이크로코드는 상기 안전 파티션에 저장되고 상기 부트로더는 상기 비안전 파티션에 저장되는 인증 시스템.
  29. 제23항에 있어서,
    전원 관리 엔진을 더 포함하고,
    상기 전원 관리 엔진은, 상기 전원 관리 엔진이 전원 인증 신호를 수신하는 경우, 상기 컨트롤러로 신호를 보내도록 구성되는 인증 시스템.
KR1020147003011A 2011-07-08 2012-07-06 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법 KR20140068867A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161506017P 2011-07-08 2011-07-08
US61/506,017 2011-07-08
PCT/US2012/045753 WO2013009619A2 (en) 2011-07-08 2012-07-06 System and method for validating components during a booting process
US13/542,833 2012-07-06
US13/542,833 US8850177B2 (en) 2011-07-08 2012-07-06 System and method for validating components during a booting process

Publications (1)

Publication Number Publication Date
KR20140068867A true KR20140068867A (ko) 2014-06-09

Family

ID=47439382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147003011A KR20140068867A (ko) 2011-07-08 2012-07-06 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법

Country Status (4)

Country Link
US (2) US8850177B2 (ko)
EP (1) EP2729870A4 (ko)
KR (1) KR20140068867A (ko)
WO (1) WO2013009619A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170041687A (ko) * 2014-06-11 2017-04-17 홈 컨트롤 싱가포르 피티이. 엘티디. 소형 메모리 디바이스에 소프트웨어를 설치하기 위한 시스템
KR20180062882A (ko) * 2016-12-01 2018-06-11 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
KR20200030448A (ko) * 2018-09-12 2020-03-20 캐논 가부시끼가이샤 정보 처리장치, 정보 처리장치의 제어방법, 및 기억매체

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2729870A4 (en) 2011-07-08 2014-12-17 Openpeak Inc SYSTEM AND METHOD FOR VALIDATING COMPONENTS DURING A STARTING PROCESS
US9183380B2 (en) 2011-10-11 2015-11-10 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US9367107B2 (en) * 2011-10-19 2016-06-14 Psion Inc. Method and system for controlling reset state change in a system-on-a-chip device
WO2014062804A1 (en) 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US20140149868A1 (en) * 2012-11-28 2014-05-29 Yahoo! Inc. Method and system for providing audio assistance for non-visual navigation of data
KR20140099757A (ko) * 2013-02-04 2014-08-13 삼성전자주식회사 전자장치 및 전자장치의 펌웨어 업그레이드 방법
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
CN106462712B (zh) * 2014-05-16 2020-02-07 索尼半导体解决方案公司 信息处理装置、信息处理方法和电子设备
US10296740B2 (en) * 2014-05-18 2019-05-21 B.G. Negev Technologies and Application Ltd., at Ben-Gurion University System and method for detecting activities within a bootstrap of a computerized device based on monitoring of power consumption
KR20160008885A (ko) * 2014-07-15 2016-01-25 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 관리 방법
US9779262B2 (en) 2015-04-20 2017-10-03 Qualcomm Incorporated Apparatus and method to decrypt file segments in parallel
CN105068800B (zh) * 2015-07-31 2018-09-14 深圳市华星光电技术有限公司 一种下载配置代码的方法、系统及计时器/计数器控制寄存器
US10402792B2 (en) * 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
KR101703826B1 (ko) 2015-10-23 2017-02-08 한국전자통신연구원 스마트 기기 대상 비인가 행위 기반 플래시 메모리 내부의 데이터 보호 장치 및 방법
DE102015119802A1 (de) 2015-11-16 2017-05-18 Weidmüller Interface GmbH & Co. KG Verfahren zum Laden eines sicheren Speicherabbilds eines Mikrocontrollers und Anordnung mit einem Mikrocontroller
US10181956B2 (en) * 2015-12-21 2019-01-15 Hewlett-Packard Development Company, L.P. Key revocation
EP3319000A1 (en) * 2016-11-02 2018-05-09 Skeyecode Method for securing a transaction performed from a non-secure terminal
US10503574B1 (en) * 2017-04-10 2019-12-10 Palantir Technologies Inc. Systems and methods for validating data
CN107707981B (zh) * 2017-09-27 2020-10-30 晶晨半导体(上海)股份有限公司 一种基于Trustzone技术的微码签名安全管理系统及方法
US11042644B2 (en) * 2018-02-01 2021-06-22 Quixant Plc Method and system for security verification in a booting process with a multi-core processor
US10719606B2 (en) * 2018-02-23 2020-07-21 Infineon Technologies Ag Security processor for an embedded system
US10853498B2 (en) * 2018-09-19 2020-12-01 Dell Products L.P. Secure boot orchestration device in a virtual desktop infrastructure
US11861011B2 (en) * 2019-06-25 2024-01-02 ZPE Systems, Inc. Secure boot process
US20230214492A1 (en) * 2021-12-30 2023-07-06 Moxa Inc. Computer System for Failing a Secure Boot in a Case Tampering Event

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2986299B2 (ja) * 1992-04-15 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション 周辺装置接続検出システム
US5826012A (en) * 1995-04-21 1998-10-20 Lettvin; Jonathan D. Boot-time anti-virus and maintenance facility
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
US6601165B2 (en) * 1999-03-26 2003-07-29 Hewlett-Packard Company Apparatus and method for implementing fault resilient booting in a multi-processor system by using a flush command to control resetting of the processors and isolating failed processors
US6757838B1 (en) 2000-10-13 2004-06-29 Hewlett-Packard Development Company, L.P. Hardware independent implementation of computer system BIOS recovery
US7036023B2 (en) * 2001-01-19 2006-04-25 Microsoft Corporation Systems and methods for detecting tampering of a computer system by calculating a boot signature
US6792564B2 (en) * 2001-03-01 2004-09-14 International Business Machines Corporation Standardized format for reporting error events occurring within logically partitioned multiprocessing systems
JP4434539B2 (ja) * 2001-12-26 2010-03-17 富士通マイクロエレクトロニクス株式会社 プロセッサおよびそのブート方法
US7111202B2 (en) * 2002-06-28 2006-09-19 Hewlett-Packard Development Company, L.P. Autonomous boot failure detection and recovery
US20050015606A1 (en) * 2003-07-17 2005-01-20 Blamires Colin John Malware scanning using a boot with a non-installed operating system and download of malware detection files
US20050033952A1 (en) * 2003-08-07 2005-02-10 International Business Machines Corporation Dynamic scheduling of diagnostic tests to be performed during a system boot process
US7694121B2 (en) * 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
US7725703B2 (en) * 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
US7565553B2 (en) * 2005-01-14 2009-07-21 Microsoft Corporation Systems and methods for controlling access to data on a computer with a secure boot process
US7506380B2 (en) * 2005-01-14 2009-03-17 Microsoft Corporation Systems and methods for boot recovery in a secure boot process on a computer with a hardware security module
US8028172B2 (en) * 2005-01-14 2011-09-27 Microsoft Corporation Systems and methods for updating a secure boot process on a computer with a hardware security module
JP4489030B2 (ja) * 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント プロセッサ内にセキュアな起動シーケンスを提供する方法および装置
US20070101156A1 (en) * 2005-10-31 2007-05-03 Manuel Novoa Methods and systems for associating an embedded security chip with a computer
US7472266B2 (en) * 2005-12-30 2008-12-30 Intel Corporation Fault resilient boot in multi-processor systems
CN100437502C (zh) * 2005-12-30 2008-11-26 联想(北京)有限公司 基于安全芯片的防病毒方法
US8769703B2 (en) * 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
US8122258B2 (en) * 2006-05-22 2012-02-21 Hewlett-Packard Development Company, L.P. System and method for secure operating system boot
US20070288740A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for secure boot across a plurality of processors
US7424398B2 (en) * 2006-06-22 2008-09-09 Lexmark International, Inc. Boot validation system and method
US7743422B2 (en) * 2006-08-21 2010-06-22 International Business Machines Corporation System and method for validating a computer platform when booting from an external device
TWI410793B (zh) * 2007-12-28 2013-10-01 Asustek Comp Inc 電腦系統及其基本輸入輸出系統的偵錯方法與開機方法
US8407671B2 (en) * 2008-01-13 2013-03-26 Apple Inc. Accessory validation system
US8793477B2 (en) * 2008-02-12 2014-07-29 Mcafee, Inc. Bootstrap OS protection and recovery
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US20090327741A1 (en) * 2008-06-30 2009-12-31 Zimmer Vincent J System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid)
US8990116B2 (en) 2008-10-07 2015-03-24 Mocana Corporation Preventing execution of tampered application code in a computer system
US8171272B1 (en) 2009-04-09 2012-05-01 Symantec Corporation Critical pre-OS driver verification
US8745598B2 (en) 2010-12-14 2014-06-03 Bmc Software, Inc. Running injected code prior to execution of an application
US8560845B2 (en) 2011-01-14 2013-10-15 Apple Inc. System and method for tamper-resistant booting
EP2729870A4 (en) 2011-07-08 2014-12-17 Openpeak Inc SYSTEM AND METHOD FOR VALIDATING COMPONENTS DURING A STARTING PROCESS

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170041687A (ko) * 2014-06-11 2017-04-17 홈 컨트롤 싱가포르 피티이. 엘티디. 소형 메모리 디바이스에 소프트웨어를 설치하기 위한 시스템
KR20180062882A (ko) * 2016-12-01 2018-06-11 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
US10614220B2 (en) 2016-12-01 2020-04-07 Hyundai Autron Co., Ltd. System and method for secure boot of engine management system
KR20200030448A (ko) * 2018-09-12 2020-03-20 캐논 가부시끼가이샤 정보 처리장치, 정보 처리장치의 제어방법, 및 기억매체
US11514169B2 (en) 2018-09-12 2022-11-29 Canon Kabushiki Kaisha Information processing apparatus, method of controlling information processing apparatus, and storage medium

Also Published As

Publication number Publication date
WO2013009619A8 (en) 2014-01-23
US9367692B2 (en) 2016-06-14
US20150149757A1 (en) 2015-05-28
EP2729870A2 (en) 2014-05-14
US8850177B2 (en) 2014-09-30
WO2013009619A3 (en) 2013-04-11
WO2013009619A2 (en) 2013-01-17
EP2729870A4 (en) 2014-12-17
WO2013009619A9 (en) 2013-02-28
US20130013906A1 (en) 2013-01-10

Similar Documents

Publication Publication Date Title
KR20140068867A (ko) 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법
RU2720068C2 (ru) Устройство обработки информации, способ для его управления и носитель хранения данных
EP2989579B1 (en) Redundant system boot code in a secondary non-volatile memory
US7543150B2 (en) Method and system for setting up hosting environments in safety
US9880908B2 (en) Recovering from compromised system boot code
JP5582909B2 (ja) プラットフォーム完全性検証システム
US10032029B2 (en) Verifying integrity of backup file in a multiple operating system environment
CN108073816B (zh) 信息处理装置
JP6391439B2 (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
US10592661B2 (en) Package processing
JP2020160747A (ja) 情報処理装置、その制御方法、及びプログラム
KR102402373B1 (ko) 정보 처리 장치 및 정보 처리 방법
WO2016184180A1 (zh) 一种系统安全启动方法及装置
JP6462540B2 (ja) ドライバ装置、情報処理システム、プログラムおよび方法
US20220327215A1 (en) System and method for signing and interlocking a boot information file to a host computing system
CN114116381A (zh) 基于容器的存储系统及容器处理方法
US11914715B2 (en) Device unit suitable for operation in a protected and/or open operating state and associated method
CN111143826A (zh) 一种bios的用户账号密码设置方法、装置及相关设备
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
US20230129942A1 (en) Method for locking a rewritable non-volatile memory and electronic device implementing said method
CN116880265A (zh) 辅助驾驶系统的安全监控装置、方法、计算机设备及介质
CN114201224A (zh) 处理器启动方法、异构处理器系统及处理器启动装置
JP2020135645A (ja) 情報処理装置、その制御方法およびプログラム

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination