KR20220090527A - 안전한 임베디드 마이크로컨트롤러 이미지 로드 - Google Patents

안전한 임베디드 마이크로컨트롤러 이미지 로드 Download PDF

Info

Publication number
KR20220090527A
KR20220090527A KR1020227015752A KR20227015752A KR20220090527A KR 20220090527 A KR20220090527 A KR 20220090527A KR 1020227015752 A KR1020227015752 A KR 1020227015752A KR 20227015752 A KR20227015752 A KR 20227015752A KR 20220090527 A KR20220090527 A KR 20220090527A
Authority
KR
South Korea
Prior art keywords
microcontroller
checksum
checksum value
boot image
response
Prior art date
Application number
KR1020227015752A
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 KR20220090527A publication Critical patent/KR20220090527A/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/4406Loading of operating system
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Detection And Correction Of Errors (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

안전한 임베디드 마이크로컨트롤러 이미지 로드(secure embedded Microcontroller image load)
보안 이미지 로드를 제공하기 위한 시스템 및 방법이 제공된다. 상기 시스템은 마이크로 컨트롤러를 포함한다. 상기 마이크로컨트롤러는 복수의 물리적으로 수정 가능한 내부 컴포넌트(PMIC)들을 갖는다. 상기 복수의 PMIC들 각각은 한 번만 수정될 수 있다. 상기 시스템은 상기 마이크로컨트롤러의 메모리로부터 부트 이미지를 로드 하도록 구성된 이미지 로더, 및 상기 부트 이미지에 대한 체크섬 값을 계산하도록 구성된 체크섬 계산기를 더 포함한다. 상기 시스템은 상기 이미지에 대한 체크섬 값의 이진 표현을 생성하기 위해 상기 복수의 PMIC들을 수정하도록 구성된 체크섬 버너를 더 포함한다. 상기 이미지에 대한 체크섬 값이 계산된다. 이 체크섬 값은 상기 마이크로컨트롤러로 쓰여 진다. 상기 값은 상기 PMIC들을 사용하여 마이크로컨트롤러로 번인 된다. 또한, 체크섬 불일치에 대한 응답들이 상기 마이크로컨트롤러에 존재하는 PMIC들을 사용하여 상기 마이크로컨트롤러로 번인 된다.

Description

안전한 임베디드 마이크로컨트롤러 이미지 로드
[0001] 본 발명은 이미지 로딩(image loading)에 관한 것으로, 보다 구체적으로 올바른 부트 이미지(the correct boot image)가 로드 되는 것을 보장하는 것에 관한 것이다.
[0002] 오늘날, 컴퓨터들은 오프 칩 비-휘발성 스토리지(an off chip non-volatile storage)로부터 이미지를 로드 한다.
이 이미지는 유효하고 안전한 것으로 간주된다. 그러나, 공격자(an attacker)는 상기 이미지와 컴퓨터 보안을 손상시킬 수 있는데(compromise), 수정된 이미지를 로드 함에 의해서 손상시킬 수 있다. 만일 손상된 이미지가 연관된 컴퓨터에 로드 되면, 그 컴퓨터는 이미지를 수정한 사람이 원했던 목적을 위해 사용될 수 있다. 이러한 목적은 사용자가 의도한 것일 수도 또는 의도하지 않은 것일 수 있으며 조직 내에서 악의적인 보안 취약점을 유발할 수 있다.
[0003] 따라서, 전술한 문제를 해결하기 위한 기술이 필요하다.
[0004] 일 실시 예에 따라, 본 발명은 보안 부트 이미지 로딩을 제공하기 위한 시스템을 제공하고, 상기 시스템은: 마이크로컨트롤러; 상기 마이크로컨트롤러 상에 배치된 복수의 물리적으로 수정 가능한 내부 컴포넌트(PMIC)들 - 상기 복수의 PMIC들 각각은 한 번만 수정될 수 있음 -; 상기 마이크로컨트롤러의 메모리로부터 부트 이미지를 로드 하도록 구성된 이미지 로더; 상기 부트 이미지에 대한 체크섬 값을 계산하도록 구성된 체크섬 계산기; 및 상기 부트 이미지에 대한 체크섬 값의 이진 표현을 생성하기 위해 상기 복수의 PMIC들을 수정하도록 구성된 체크섬 버너를 포함한다.
[0005] 다른 실시 예에 따라, 본 발명은 방법을 제공하고, 상기 방법은: 부트 이미지에 대한 체크섬 값을 계산하는 단계; 상기 체크섬 값을 마이크로컨트롤러에 쓰기 하는 단계; 상기 체크섬 값을 마이크로컨트롤러로 번인 하는 단계(burning in); 및 체크섬 불일치에 대한 응답들을 마이크로컨트롤러로 번인 하는 단계를 포함한다.
[0006] 다른 실시 예에 따라, 본 발명은 부트 이미지 로드를 보호하기 위한 방법을 제공하고, 상기 방법은: 마이크로컨트롤러로부터 상기 부트 이미지를 로드 하는 단계; 상기 부트 이미지에 대한 체크섬 값을 계산하는 단계; 상기 체크섬 값을 저장된 체크섬 값과 비교하는 단계 - 상기 저장된 체크섬 값은 마이크로컨트롤러에 영구적으로 번인 됨 -; 상기 체크섬 값을 상기 저장된 체크섬 값과 비교할 때 일치에 응답하여 상기 부트 이미지가 로딩을 계속하도록 허용하는 단계; 및 상기 체크섬 값을 상기 저장된 체크섬 값과 비교할 때 불일치에 응답하여 불일치 응답을 실행하는 단계를 포함한다.
[0007] 다른 실시 예에 따라, 본 발명은 부트 이미지 로드를 보호하기 위한 컴퓨터 프로그램 제품을 제공하고, 상기 컴퓨터 프로그램은: 처리 회로에 의해 판독 가능하고 상기 처리 회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독 가능 스토리지 매체를 포함하며, 상기 명령들은 본 발명의 단계들을 수행하기 위한방법을 수행한다.
[0008] 다른 실시 예에 따라, 본 발명은 컴퓨터 프로그램을 제공하고, 상기 컴퓨터 프로그램은 컴퓨터 판독 가능 매체 상에 저장되고 디지털 컴퓨터의 내부 메모리로 로드 가능하며, 컴퓨터에서 실행될 때 본 발명의 단계들을 수행하기 위한 소프트웨어 코드 부분을 포함한다.
[0009] 본 발명의 실시 예들은 보안 이미지 로딩을 제공하기 위한 시스템에 관한 것이다. 상기 시스템은 마이크로컨트롤러를 포함한다. 상기 마이크로컨트롤러는 복수의 물리적으로 수정 가능한 내부 컴포넌트(PMIC)들을 갖는다. 상기 복수의 PMIC들 각각은 한 번만 수정될 수 있다. 상기 시스템은 상기 마이크로컨트롤러의 메모리로부터 부트 이미지를 로드 하도록 구성된 이미지 로더, 및 상기 부트 이미지에 대한 체크섬 값을 계산하도록 구성된 체크섬 계산기를 더 포함한다. 상기 시스템은 상기 부트 이미지에 대한 체크섬 값의 이진 표현을 생성하기 위해 상기 복수의 PMIC들을 수정하도록 구성된 체크섬 버너를 더 포함한다.
[0010] 본 발명의 실시 예들은 마이크로컨트롤러에서 보안 이미지를 생성하기 위한 방법에 관한 것이다. 상기 이미지에 대한 체크섬 값이 계산된다. 그 다음 상기 체크섬 값은 상기 마이크로컨트롤러에 쓰여 진다. 그 다음 상기 값은 상기 마이크로컨트롤러에 존재하는 PMIC들을 사용하여 상기 마이크로컨트롤러로 번인 된다(burned into). 더 나아가, 체크섬 불일치에 대한 응답들도 또한 상기 마이크로컨트롤러에 존재하는 PMIC들을 사용하여 상기 마이크로컨트롤러로 번인 된다.
[0011] 본 발명의 실시 예들은 부트 이미지 로드를 보호하기 위한 방법에 관한 것이다. 마이크로컨트롤러로부터 상기 부트 이미지가 로드 된다. 다음 상기 부트 이미지에 대한 체크섬 값이 계산된다. 그 다음 상기 값은 상기 마이크로컨트롤러상에 저장되고 상기 마이크로컨트롤러에 영구적으로 번인 된 체크섬 값과 비교된다. 상기 체크섬 값과 상기 저장된 체크섬 값 사이에 일치가 발견될 때 상기 부트 이미지는 로딩을 계속하도록 허용된다. 불일치가 발견될 때 불일치 응답이 실행된다. 상기 불일치 응답은 상기 마이크로컨트롤러로 프로그램된다.
[0012] 위의 요약은 본 발명의 각각의 예시된 실시예 또는 모든 구현을 설명하기 위한 것이 의도된 것은 아니다.
[0013] 본 출원에 포함된 도면들은 명세서에 통합되고 명세서의 일부를 형성한다. 그것들은 본 발명의 실시예들을 예시하고, 설명과 함께, 발명의 원리들을 설명하는 역할을 한다. 도면들은 특정 실시예들의 예시일 뿐이며 본 발명을 제한하지 않는다.
[0014] 도 1은 예시적인 실시예들에 따른 보안 임베디드 마이크로컨트롤러 이미지 로드를 채용하는 시스템의 블록도이다.
[0015] 도 2는 예시적인 실시예들에 따른 시스템이 체크섬 값을 마이크로컨트롤러에 로드하고 번인하는 프로세스를 나타내는 플로차트이다.
[0016] 도 3은 예시적인 실시예들에 따른 시스템이 정상 작동 동안 어떻게 작동하는지에 관한 프로세스를 도시하는 플로차트다.
[0017] 도 4는 일 실시예에 따른 컴퓨팅 시스템을 예시하는 블록도이다.
[0018] 본 발명은 다양한 수정들 및 대안적인 형태들을 수용할 수 있지만, 그 세부사항들은 도면들에서 예로서 도시되었고 상세하게 설명될 것이다. 그러나, 설명된 특정 실시예들로 본 발명을 제한하려는 의도가 아님을 이해해야 한다. 반대로, 본 발명의 범위에 속하는 모든 수정들, 균등물들 및 대안들을 포함하는 것이 의도이다.
[0019] 본 발명의 실시 예들은 이미지 로딩에 관한 것으로, 보다 구체적으로 올바른 부트 이미지가 로드 되도록 보장하는 것에 관한 것이다. 본 발명이 반드시 그러한 애플리케이션들로 제한되는 것은 아니지만, 본 발명의 다양한 실시예들은 이러한 맥락을 사용하는 다양한 예들의 논의를 통해 이해될 수 있다.
[0020] 본 발명은 시스템 초기화 동안 로드 된 이미지가 시스템에 원래 제공된 것과 일치하는지를 검증하기 위해 체크섬을 사용한다. 이는 외부 메모리가 제조 후 감지되지 않고 수정되거나 손상되는 것을 방지할 수 있다.
[0021] 부트 이미지(120)를 검증하는 다른 접근 방식들은 보안 헤더 또는 암호화 키들을 사용한다. 이 헤더는 개인 키로 이미지에 서명함으로써 생성된다. 그러나, 서명된 이미지(a signed image)를 사용하는 이 접근 방식의 단점(downside)은 시스템이 기대하는 보안 서명을 생성하도록 루즈 이미지(a rouge image)가 로드되고 작업 키(a working key)로 서명될 수 있다는 것이다. 이것은 악의적인 공격들에 대한 시스템의 취약성을 증가시킨다. 본 발명은 추가적인 보호 수준으로서 암호화의 사용을 요구하거나 금지하지 않는다. 이것은 신중한 회사 또는 개인이 원치 않은 또는 의도적인 수정으로부터 부트 이미지(120)를 보호하는 모든 방법들을 사용할 수 있게 해 준다.
[0022] 도 1은 실시예들에 따른 보안 임베디드 마이크로컨트롤러(110) 이미지 로드를 채용하는 시스템의 블록도이다. 시스템은 마이크로컨트롤러(110), 부트 이미지(120), 이미지 로더(130), 체크섬 계산기(140) 및 체크섬 버너(150)를 포함한다.
[0023] 마이크로컨트롤러(110)는 상기 시스템을 위해 임베드된 애플리케이션을 제공하는 시스템의 컴포넌트이다. 마이크로컨트롤러(110)는 단일 집적 회로 칩에 구현된다. 마이크로컨트롤러(110)는 하나 또는 그 이상의 프로세서 코어들(CPUs), 메모리 및 입출력 주변장치들을 포함한다. 마이크로컨트롤러(110)의 구성에 따라, 프로그램 메모리는 공장에서만 프로그램 될 수 있는 영구적인 읽기 전용 메모리일 수 있거나, 또는 필드-변경 가능한 플래시 또는 소거 가능한 읽기 전용 메모리일 수 있다. 필드에서 메모리가 변경될 수 있는 경우들에서, 마이크로컨트롤러(110)에 처음으로(originally) 로드된 이후로 연관된 데이터가 변경되지 않았음을 보장하기 위해 마이크로컨트롤러(110)에서 상기 연관된 데이터의 무결성을 검증하는 것이 유용할 수 있다. 왜냐하면, 마이크로컨트롤러(110)는 물리적으로 수정 가능한 다수의 내부 컴포넌트들(125-1, 125-2, …125-N)(집합적으로 PMIC 또는 PMIC(125))를 포함할 수 있기 때문이다.
[0024] 물리적으로 수정 가능한 내부 컴포넌트(PMIC)가 있는 전자 마이크로컨트롤러(110)는 현재 로딩 중인 부트 이미지(120)가 마이크로컨트롤러(110)에 제공된 원래의 부트 이미지(120)와 일치하는 것을 보장함으로써 기존 보안 기술보다 이점들을 제공할 수 있다. PMIC(125)는 마이크로컨트롤러(110) 내부에 포함되어 있다. 일부 실시들예에서, PMIC(125)는 컴퓨터 칩의 동적 실시간 재프로그래밍을 위한 기술인 이-퓨즈(eFuse)를 사용하여 구현된다. 이-퓨즈는 "퓨즈"가 한번 타버리면(burned) 원래 상태로 복원할 수 없다는 이점들이 있다. 그러나, 일부 실시 예들들에서, PMIC(125)는 이-퓨즈들의 어레이, 또는 논리 회로를 통한 EEPROM, 또는 이-퓨즈에 의해 게이트 되는 EEPROM일 수 있다. 이-퓨즈에 의해 게이트 될 때 상기 게이트는 이-퓨즈 게이트를 지나서 위치하는 데이터/이미지의 수정을 방지하는 방지 메커니즘으로 작동한다.
[0025] 마이크로컨트롤러(110)의 PMIC(125)는 개방 회로를 생성하도록 구성된 하나 또는 그 이상의 파손 가능한 디바이스들(예를 들어, 퓨즈, 와이어, 정의된 취약성(a defined brittleness)을 갖는 전도성 재료)로 구성된다. 각각의 파손 가능한 디바이스들은 파손과 같은 희생적 동작을 통해 작동할 수 있다. 파손되기 전에, 각 파손 가능한 디바이스는 전류가 한쪽 끝에서 다른 쪽 끝으로 흐를 수 있는 전자 경로이다. 전기는 파손될 수 있는 디바이스를 검증하기 위해 계속적으로 또는 요청에 응답하여 흐를 수 있다. 만일 전기가 다른 쪽 끝에 도달한다면, 그 회로는 닫힌 회로로 간주되고 닫힌 회로는 "1" 또는 "0"과 같은 값을 표시할 수 있다. 파손된 후에, 각 파손 가능한 디바이스는 전류가 더 이상 한쪽 끝에서 다른 쪽 끝으로 흐르지 않도록 파손된다. 예를 들어, 파손 가능한 디바이스는 열, 전류 또는 기타 관련 원인에 반응하여 절단되거나 기화되는 깨지기 쉬운 특성(a fragile nature)으로 구성될 수 있다. 만일 전기가 다른 쪽 끝에 도달하지 않는다면, 그 회로는 개방된 것으로 간주되고 그 개방 회로는 '0' 또는 '1'과 같은 값을 표시할 수 있다. 개방 또는 폐쇄 회로를 표시하는 값은 반대 값이다. 즉, 예를 들어 개방 회로의 값이 "1"이면 폐쇄 회로의 값이 "0"이고 그 반대의 경우도 마찬가지이다. 회로를 차단하는 프로세스는, 예를 들어, 기화, 용융, 연소, 블로잉, 파열, 물리적 변형 또는 특정 회로를 통한 전류의 흐름을 달리 방해함으로써 수행될 수 있다. 각각의 파손 가능한 디바이스는 개방 회로를 생성하는 전류(예: 과전류, 과도한 부하)를 수신하여 작동할 수 있다.
[0026] PMIC(125)는 동작을 직접적으로 실행할 수 있다. 일부 실시 예들에서, PMIC(125)는 파손 가능한 디바이스의 수 및 현재 상태를 판독하는 로직을 포함할 수 있다. 일부 실시 예들에서, 상기 로직은 PMIC(125) 내에 포함되지 않는다. 예를 들어, 상기 로직은 PMIC(125)를 수용하는 센서 또는 컴퓨터 내에 위치할 수 있다. 다른 예에서, 상기 로직은 제2 집적 회로에 위치할 수 있고 PMIC(125)에 통신 가능하게 결합될 수 있는데, 회로 기판의 논리적 트레이스들 또는 통신 케이블 또는 기타 와이어를 통해 통신 가능하게 결합될 수 있다. 일부 실시 예들에서, PMIC(125)는 전류를 파손 가능한 디바이스에 직접 인가할 수 있다. 일부 실시 예들에서, PMIC(125)는 파손 가능한 디바이스에 간접적으로 전류를 인가하고 그리고 상기 파손 가능한 디바이스에 직접 제2 전류를 인가할 수 있다. 제1 예에서, 제1 전류는 복수의 파손 가능한 디바이스들에 인접한 와이어에 인가되어 파손 가능한 디바이스의 온도(예를 들어, 가열)를 증가시킨다. 가열 후, 제2 전류가 복수의 파손 가능한 디바이스들 중 하나 또는 그 이상에 직접 인가되어 하나 또는 그 이상의 파손 가능한 디바이스들이 파손되고 결과적으로 하나 또는 그 이상의 영구적인 개방 회로들이 생성된다. 일부 실시 예들에서, 파손을 일으키기 위해 PMIC(125)의 파손 가능한 디바이스들에 인가되는 전류는 외부 소스에 의해 제공된다. 이 실시예에서, PMIC(125)는 파손 가능한 디바이스들 중 어느 것도 파손하는 내부 능력을 갖지 않는다. 이러한 방식으로, 일단 마이크로컨트롤러(110)가 프로그램 되면 상기 파손 가능한 디바이스들의 패턴이 쉽게 변경될 수 없다.
[0027] 부트 이미지(120)는 컴퓨터 스토리지 매체의 완전한 컨텐츠 및 구조를 포함하는 컴퓨터 파일이다. 부트 이미지(120)가 마이크로컨트롤러(110)로 전송될 때 마이크로컨트롤러(110)의 관련 하드웨어가 부팅 또는 로드되도록 한다. 부트 이미지(120)는 운영 체제, 유틸리티 및 진단을 포함한다. 부트 이미지(120)는 또한 부팅 및 데이터 복구 정보를 포함할 수 있다. 상기 이미지는 또한 마이크로컨트롤러(110)의 특정한 최종 용도에 특정한 애플리케이션들을 포함할 수 있다. 일단 부트 이미지(120)가 구축되면, 그것은 단순히 디바이스에 복사될 수 있고, 합리적인 한계들 내에서 패치될 수 있으며, 어떤 문제들이 발생하면 처분할 수 있는 상태로 유지된다(remains disposable). 이 것은 다른 이미지와 달리 순수 부트 이미지(120)에 미션 크리티컬 데이터(mission-critical data)가 없기 때문에 가능하다. 순수 부트 이미지(120)는 구성들 또는 상용 실행 파일들(configurations or off-the-shelf executables)로부터 재생될 수 없는 데이터를 포함하고 있지 않다. 특히, 최종 사용자 데이터는 부트 이미지(120)의 일부가 아니지만, 일부 운영 체제들은 사용자 선호도들 또는 구성 파일들(a copy of user preferences or configuration files)(예를 들어 마이크로소프트 윈도우 레지스트리(Microsoft Windows registry))의 사본이 부트 이미지(120) 자체 내에 유지되기를 요구한다. 본 발명의 부트 이미지(120)는 일반적으로 마이크로 컨트롤러(110)가 관련 시스템에 설치된 시점에 고정되어 대응하는 시스템의 수명 동안 부트 이미지(120)의 수정이 예상되지 않는다. 그러나 부트 이미지(120)가 수정될 수 있는 경우들도 있을 수 있다. 이들 변경들은 의도적일 수 있는데, 예를 들어, 배포 후 부트 이미지(120)에서 오류가 나중에 식별되었을 때 변경들이 있을 수 있다. 반대로, 이들 변경들은 의도하지 않은 것일 수도 있는데(시스템 소유자의 관점에서), 예를 들어 해커 또는 기타 악의적인 소스가 부트 이미지(120)를 수정하여 관련 시스템 또는 상기 시스템 데이터의 악의적인 사용을 허용하게 하는 경우이다. 본 발명은 부트 이미지로서의 이미지를 논의하지만, 사용자가 손상 또는 다른 수정으로부터 보호하고자 하는 모든 이미지, 예를 들어 애플리케이션 이미지가 사용될 수 있음을 이해해야 한다.
[0028] 이미지 로더(130)는 마이크로컨트롤러(110)의 메모리로부터 시스템의 메모리로 부트 이미지(120)를 로드 하는 시스템의 일부이다. 이미지 로더(130)는 시스템의 ROM에 저장된다. 그러나 일부 실시 예들에서는 다른 위치들에 저장될 수 있다. 이미지 로더(130)는 부트 이미지(120)의 실행을 준비하기 위해 부트 이미지(120)를 메모리에 배치한다. 이미지 로더(130)는 부트 이미지(120)의 컨텐츠를 메모리로 읽어들이고, 실행을 위해 부트 이미지(120)를 준비하는 다른 필요한 작업들을 수행한다. 일단 로드가 완료되면, 컨트롤은 로드된 프로그램 코드로 넘어간다. 이미지 로더(130)는 시스템이 부트 이미지(120)를 실행할 준비가 되었는지 확인하기 위해 일련의 기본 하드웨어 테스트들을 실행할 수 있다. 이미지 로더(130)가 수행하는 테스트들 중 하나는 로드된 부트 이미지(120)와 관련된 체크섬을 검증하는 것이다. 만일 부트 이미지(120)의 체크섬이 마이크로컨트롤러(110)으로 번인 된(burned into) 체크섬과 일치(match)하지 않으면, 이미지 로더(130)는 마이크로컨트롤러(110)으로 번인 된 명령들의 세트를 따르도록 진행한다. 이들 명령들은 체크섬들 간의 불일치(mismatch)가 있는 경우 이미지 로더(130)가 진행하는 방법을 알려준다. 이들 명령들은 부트 이미지(120)의 로딩 및 실행을 중지 또는 중단하고, 관리자 또는 다른 사용자에게 불일치를 알리거나, 또는 부트 이미지(120)의 로딩 및 실행을 진행하기 전에 추가 사용자 입력을 요청하는 명령을 포함할 수 있다. 불일치에 대한 다른 응답들도 또한 마이크로컨트롤러(110)에 프로그램 될 수 있다. 일부 실시 예들에서, 마이크로컨트롤러(110)는 체크섬 값을 체크하고 상기 불일치 명령들을 실행하는 프로세스를 수행할 수 있다.
[0029] 체크섬 계산기(140)는 부트 이미지(120)에 대한 체크섬을 계산하는 시스템의 컴포넌트다. 체크섬 계산기(140)는 부트 이미지(120)를 가져와 부트 이미지(120)에 프로세스를 적용하여 부트 이미지(120)에 대한 체크섬 값을 계산한다. 체크섬 계산기(140)는 체크섬을 계산하기 위해, 패리티 바이트, 패리티 워드, 모듈러 섬(modular sum) 또는 위치 종속(position dependent)과 같은, 모든 접근 방식을 채용할 수 있다. 또한, 일부 실시 예들에서 체크섬은 해시 함수들을 사용하여 계산될 수 있다. 체크섬의 길이는 마이크로컨트롤러(110)에 존재하는 이-퓨즈의 수뿐만 아니라 디바이스에서 원하는 보안 레벨에 따라 달라질 수 있다. 체크섬의 크기는 1과 1024비트 사이의 범위일 수 있다. 그러나 암호화 해시 함수가 사용되는 경우 체크섬은 비트 수에 제한이 없다. 체크섬 계산기(140)는, 공장에서와 같이, 처음으로 마이크로컨트롤러(110)에 부트 이미지(120)가 로드되기 전에 부트 이미지(120)에 대한 체크섬을 계산한다. 체크섬 계산기(140)는 또한 부트 이미지(120)가 이미지 로더(130)에 의해 로드 될 때마다 부트 이미지(120)에 대한 체크섬을 계산한다. 이 체크섬 값은 제1 인스턴스에서는 체크섬 버너(150)에 제공되고 모든 후속 인스턴스들에서는 이미지 로더(130)에 제공된다. 일부 실시 예들에서, 2개의 체크섬 계산기들(140, 141)이 제공된다. 제1 체크섬 계산기(140)는 부트 이미지(120)가 마이크로컨트롤러(110)에 처음 로드되는 위치에 유지되고, 제2 체크섬 계산기(141)는 부트 이미지와 연관된 디바이스 상에 위치한다. 이 실시예에서 체크섬 계산기들(140, 141) 모두 체크섬을 계산하기 위한 동일한 접근 방식을 구현하여, 두 계산기들 모두 동일한 부트 이미지(120)에 대해 동일한 값에 도달하도록 한다.
[0030] 체크섬 버너(150)는 체크섬 계산기(140)에 의해 계산된 체크섬 값을 마이크로컨트롤러(110)로 번인하는(burn into) 시스템의 컴포넌트이다. 체크섬은 마이크로컨트롤러(110)의 PMIC(125) 부분들을 사용하여 마이크로컨트롤러(110)로 번인 된다. 체크섬은 이진 값으로 변환된다. 이 이진 값은 다수의 PMIC(125)를 파손된/파손 안된 상태를 변경함으로써 번인 되어(burned in) 대응하는 값이 체크섬 값을 나타내도록 한다. 예를 들어, 만일 256비트 체크섬이 사용되고 계산된 값이 "120EA8A25E5D487BF68B5F7096440019"이라고 하면, 체크섬의 대응하는 이진 표현은 다음과 같다:
Figure pct00001
[0031] 이 값을 마이크로컨트롤러(110)로 번인 하기 위해, 마이크로컨트롤러(110)는 적어도 256개의 PMIC(125)들이 이용 가능해야 한다. 그 다음, 체크섬 버너(150)는, "0" 또는 "1"을 결정하는 데 사용되는 방법에 따라, 대응하는 회로를 번인 하여 회로를 열거나 닫는다. 그러나, 마이크로컨트롤러(110)는 이용가능한 PMIC(125) 모두가 체크섬에 사용되지 않도록 임의의 수의 PMIC(125)들을 가질 수 있다. 또한 체크섬은 어떠한 수의 비트도 가질 수 있다. 그러나, 마이크로컨트롤러(110)는 적어도 체크섬의 비트 수만큼의 PMIC(125)들은 가져야 한다.
[0032] 체크섬 버너(150)는 또한 상기 번인 된 체크섬(the burned in checksum)과 부트 이미지(120)의 로딩시 부트 이미지(120)에 대해 계산된 체크섬(the calculated checksum) 간의 불일치에 대해 이미지 로더(130)가 응답하는 방법에 대한 명령을 마이크로컨트롤러(110)로 번인(burn into)하도록 구성된다. 명령들의 완전한 세트(A complete set of instructions)가 마이크로컨트롤러(110)로 번인 될 수 있다. 상기 명령들의 완전한 세트를 번인하기 위해 마이크로컨트롤러(110)는 이진수 형태로 명령들의 설치를 허용하기에 충분한 수의 이용 가능한 PMIC(125)들을 가질 필요가 있다. 그러나, 일부 실시 예들에서, 상기 명령들의 일부만이 마이크로컨트롤러(110)로 번인 된다. 이들 실시예들에서, 상기 명령들의 일부는 상기 명령들의 완전한 세트가 저장되는 위치에 대한 포인터를 포함할 수 있다. 예를 들어, 하나의 주소가 마이크로컨트롤러(110)에 번인 될 수 있는데, 이는 불일치가 발생했을 때 이미지 로더(130)가 마이크로컨트롤러(110)로부터 이 주소를 액세스하여 상기 불일치에 응답하여 구현할 필요가 있는 명령들의 세트를 획득하기 위해 이 주소로 진행하도록 하기 위함이다. 그러나, 번인 된 PMIC(125)들을 통해 상기 명령들의 세트로 이미지 로더(130)를 진행시키는 다른 방법도 사용될 수 있다.
[0033] 도 2는 실시예들에 따라 시스템이 마이크로컨트롤러(110)로 체크섬 이-퓨즈들을 로드하고 번인 하는 방법의 프로세스를 도시하는 플로차트이다. 상기 프로세스는 마이크로프로세서에 로드 될 이미지에 대한 체크섬을 계산하는 단계에 의해서 시작된다. 이것은 단계(210)에 예시되어 있다. 상기 프로세스는 패리티 바이트, 패리티 워드, 모듈러 섬, 또는 포지션 디펜던트(parity byte, parity word, modular sum, or position dependent)과 같은 체크섬을 계산하기 위한 모든 접근법을 채용할 수 있다. 또한, 일부 실시 예들에서, 상기 체크섬은 해시 함수들을 사용하여 계산될 수 있다. 상기 체크섬의 길이는 디바이스에서 원하는 보안 수준과 존재하는 이-퓨즈들의 수에 따라 다르다. 상기 체크섬의 크기는 1에서 2048비트 사이의 범위가 될 수 있다. 체크섬에 이용 가능한 비트들의 수가 계속 증가할 것으로 예상되므로, 상기 체크섬의 비트들의 수는 위의 비트들의 수에 의해 제한되지 않는다. 그러나 암호화 해시 함수가 사용되는 인스턴스들에서, 체크섬은 비트들의 수에 제한이 없다. 원하는 부트 이미지(120) 체크섬의 값을 결정하기 위해 체크섬 계산기(140)를 통과해야 한다.
[0034] 일단 체크섬이 계산되면 시스템은 체크섬을 마이크로프로세서에 쓰기 하도록 진행한다. 이것은 단계(220)에 예시되어 있다. 체크섬을 마이크로프로세서에 쓰기 하기 위해 체크섬 버너(150)는 체크섬 값을 수신한 다음 마이크로컨트롤러(110)의 어떤 PMIC(125)가 파손되어야 하는지를 결정한다. 이러한 방식으로 체크섬 버너(150)는 어떤 PMIC(125)가 그들의 대응하는 값이 변경되어야 하는지를 결정한다. 다시 말하면, 시스템이 "0" 또는 "1"을 무엇으로 할 지를 결정하는 방법에 따라 어떤 특정 PMIC(125)가 파손될 것인지가 결정될 것이다.
[0035] 체크섬이 하드웨어에 쓰여진 후, 시스템은 체크섬을 PMIC(125)들로 번인하도록 진행한다. 이것은 단계(230)에 예시되어 있다. 마이크로프로세서에 체크섬을 쓰기 하기 위해 체크섬 버너(150)는 대응하는 PMIC(125)들에 대해 파손들(breaks)을 인가하여 "1" 또는 "0"의 대응하는 값이 생성되도록 한다. 회로를 파손하는 프로세스는, 예를 들어 기화, 용융, 연소, 블로잉, 파열, 물리적 변형(vaporizing, melting, burning, blowing, rupturing, physically modifying) 또는 특정 회로를 통한 전류의 흐름을 달리 방해함으로써 수행될 수 있다. PMIC(125)들 각각은 개방 회로(예: 과전류, 과부하)를 발생시키는 전류를 수신함에 의해서 동작할 수 있다.
[0036] 체크섬의 버닝(burning) 다음에, 시스템은 상기 체크섬이 로드되는 이미지에 대한 체크섬과 일치하지 않을 때 하드웨어가 가져야 하는 응답을 결정하기 위해 진행한다. 이것은 단계(240)에 예시되어 있다. 그 다음 체크섬 버너(150)는 마이크로컨트롤러(110)에 탑재된 추가 PMIC(125)들 통해 이 응답을 마이크로컨트롤러(110)로 번인 한다. 일부 실시 예들에서, 불일치에 대한 응답들의 완전한 세트는 마이크로컨트롤러(110)로 번인 된다. 그러나, 다른 실시예들에서는 상기 응답의 일부만이 마이크로컨트롤러(110)로 번인 된다. 예를 들어, 명령들의 완전한 세트에 대한 주소 또는 기타 포인터는 마이크로컨트롤러(110)로 번인 될 수 있는데, 불일치에 대한 응답으로 명령들의 완전한 세트를 획득하고 실행하기 위해 제공된 주소를 이미지 로더(130)가 따르도록 마이크로컨트롤러(110)로 번인 될 수 있다.
[0037] 도 3은 시스템이 적절하게 로드되도록 하기 위해 정상 작동 중에 시스템이 작동하는 프로세스를 예시하는 플로차트이다. 상기 프로세스는 부트 이미지(120)를 sRAM에 로드 함으로써 시작된다. 이것은 단계(310)에서 예시된다. 부트 이미지(120)는 이미지를 메모리에 로드 하기 위한 모든 알려진 방법을 사용하여 sRAM에 로딩될 수 있다. 일부 실시 예들에서, 부트 이미지(120)는 sRAM이 아닌 다른 메모리 위치들에 로드 될 수 있다.
[0038] 부트 이미지(120)가 메모리로 로드됨에 따라 부트 이미지(120)에 대한 체크섬이 계산된다. 이것은 단계(320)에 예시되어 있다. 체크섬 계산기(140)는 마이크로컨트롤러(110)로 번인 되는 체크섬 값을 계산하는 데 사용된 동일한 프로세스를 사용하여 부트 이미지(120)에 대한 체크섬 값을 계산한다. 예를 들어, 체크섬 계산기(140)는, 패리티 바이트, 패리티 워드, 모듈러 섬 또는 포지션 디펜던트와 같은, 체크섬을 계산하기 위한 모든 접근 방식을 채용할 수 있다. 또한, 일부 실시 예들에서 체크섬은 해시 함수들을 사용하여 계산될 수 있다. 체크섬의 크기는 1에서 2048비트 사이 범위이다. 그러나 암호화 해시 함수가 사용되는 인스턴스들에서 체크섬은 비트들의 수에 제한이 없다.
[0039] 상기 체크섬 값은 이미지 로더(130)에 제공된다. 그 다음, 이미지 로더(130)는 체크섬 계산기(140)로부터 수신된 체크섬 값을 마이크로컨트롤러(110)로 번인 된 체크섬 값과 비교한다. 이것은 단계(330)에서 예시된다. 만일 상기 체크섬 값이 일치하면 이미지 로더(130)는 부트 이미지(120)를 로드 하도록 진행하고 부트 이미지(120)가 자신의 프로세스를 계속할 수 있게 한다. 이것은 단계(340)에 예시되어 있다.
[0040] 만일 상기 체크섬 값이 일치하지 않으면, 이미지 로더(130)는 상기 불일치에 대한 응답을 결정하도록 진행한다. 이것은 단계(350)에 예시되어 있다. 이미지 로더(130)는 불일치의 경우에 따라야 하는 명령들의 세트가 있는지를 결정하기 위해 마이크로컨트롤러(110)를 체크하도록 진행한다. 이들 명령들은 상기 불일치에 대응하는 방법으로 완전 명령들 또는 부분 명령들(either full instructions or partial instructions)을 포함할 수 있다. 만일 완전 명령들이 제공된다면, 상기 이미지는 이들 명령들을 따른다. 그러나, 만일 부분 명령들이 제공된다면, 이미지 로더(130)는 명령들의 완전 세트를 획득하기 위해 이들 부분 명령들을 따를 수 있다. 위에서 논의된 바와 같이, 상기 부분 명령들은 상기 명령어들의 완전한 세트를 획득하기 위해 특정 위치로 이동하도록 이미지 로더(130)에 지시할 수 있다. 상기 명령들의 완전한 세트에 대한 포인터만을 가짐으로써, 시스템 사용자는 전체 시스템의 보안에 영향을 주지 않고 나중에 이들 명령들을 수정할 수 있다. 상기 명령들은 이미지 로더(130)에게, 예를 들어, 부트 이미지(120)의 로딩을 중지하거나, 부트 이미지(120)를 여전히 로드하면서 사용자 또는 관리자에게 불일치를 통지하거나, 불일치를 사용자 또는 관리자에게 통지하고 그 들로부터 추가 지시를 기다리거나, 추가 조치 없이 이미지 로드를 허용하거나, 또는 사용자 또는 관리자가 원하는 다른 조치를 취하도록 지시할 수 있다.
[0041] 이제 도 4를 참조하면, 본 발명의 개시내용의 실시예들에 따르면, 여기에 설명된 방법들, 도구들, 및 모듈들, 및 모든 관련 기능들 중 하나 혹은 그 이상을 구현하는 데 사용될 수 있는 예시적인 컴퓨터 시스템(401)의 고수준 블록도가 도시되어 있다(예를 들어, 컴퓨터의 하나 혹은 그 이상의 프로세서 회로 또는 컴퓨터 프로세서 사용). 일부 실시 예들에서, 컴퓨터 시스템(401)의 주요 컴포넌트들은 하나 혹은 그 이상의 CPU들(402), 메모리 서브시스템(404), 터미널 인터페이스(412), 스토리지 인터페이스(416), I/O(입력/출력) 디바이스 인터페이스(414), 및 네트워크 인터페이스(418), 이들 모두는 직접적으로 또는 간접적으로 통신 가능하게 결합될 수 있고, 메모리 버스(403), I/O 버스(408), 및 I/O 버스 인터페이스 유닛(410)을 통한 컴포넌트 간 통신을 위해 구성될 수 있다.
[0042] 컴퓨터 시스템(401)은 여기에서 일반적으로 CPU(402)로 지칭되는 하나 혹은 그 이상의 범용 프로그래밍 가능한 중앙 처리 디바이스들(CPUs)(402-1, 402-2, 402-3, 402-N)을 포함할 수 있다. 일부 실시 예들에서, 컴퓨터 시스템(401)은 비교적 큰 시스템의 전형적인 다수의 프로세서들을 포함할 수 있고; 하지만, 다른 실시 예들에서 컴퓨터 시스템(401)은 대안적으로 단일 CPU 시스템일 수 있다. 각각의 CPU(402)는 메모리 서브시스템(404)에 저장된 명령들을 실행할 수 있고 하나 혹은 그 이상의 레벨들의 온-보드 캐시를 포함할 수 있다.
[0043] 시스템 메모리(404)는 랜덤 액세스 메모리(RAM)(422) 또는 캐시 메모리(424)와 같은, 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함할 수 있다. 컴퓨터 시스템(401)은 다른 착탈식/비-착탈식, 휘발성/비-휘발성 컴퓨터 시스템 스토리지 매체를 더 포함할 수 있다. 단지 예로서, 스토리지 시스템(426)은 "하드 드라이브"와 같은 비-착탈식, 비-휘발성 자기 매체에 대한 읽기 및 쓰기를 위해 제공될 수 있다. 도시되지는 않았지만, 착탈식, 비-휘발성 자기 디스크(예를 들어, "플로피 디스크")에 읽기 및 쓰기를 위한 자기 디스크 드라이브, 또는 CD-ROM, DVD-ROM 또는 기타 광 매체와 같은, 착탈식, 비-휘발성 광 디스크에서 읽거나 쓰기 위한 광 디스크 드라이브가 제공될 수 있다. 또한, 메모리(404)는 플래시 메모리, 예를 들어, 플래시 메모리 스틱 드라이브 또는 플래시 드라이브를 포함할 수 있다. 메모리 디바이스들은 하나 혹은 그 이상의 데이터 미디어 인터페이스들에 의해 메모리 버스(403)에 연결될 수 있다. 메모리(404)는 다양한 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0044] 메모리 버스(403)가 도 4에서 CPU들(402) 사이의 직접적인 통신 경로를 제공하는 단일 버스 구조로 도시되어 있지만, 메모리 서브시스템(404), 및 I/O 버스 인터페이스(410), 메모리 버스(403)는, 일부 실시 예들에서, 계층 구조의 지점 간 링크들, 스타 또는 웹 구성의 포인트-포인트 링크들, 다수 계층 버스들, 병렬 및 중복 경로들 또는 기타 적절한 유형의 구성과 같이 다양한 형태들로 배열될 수 있는 여러 개의 서로 다른 버스들 또는 통신 경로들을 포함한다. 더욱이, I/O 버스 인터페이스(410) 및 I/O 버스(408)가 단일 개별 유닛들로 도시되어 있지만, 컴퓨터 시스템(401)은, 일부 실시 예들에서, 다수의 I/O 버스 인터페이스 유닛들(410), 다수의 I/O 버스들(408) 또는 둘 다를 포함할 수 있다. 뿐만 아니라, 다양한 I/O 디바이스들로 실행되는 다양한 통신들 경로들로부터 I/O 버스(408)를 분리하는, 다수의 I/O 인터페이스 유닛들이 도시되어 있지만, 다른 실시 예들에서 I/O 디바이스들의 일부 또는 전부는 하나 혹은 그 이상의 시스템 I/O 버스들에 직접 연결될 수 있다.
[0045] 일부 실시 예들에서, 컴퓨터 시스템(401)은 다수-사용자 메인프레임 컴퓨터 시스템, 단일-사용자 시스템, 또는 서버 컴퓨터 또는 직접적인 사용자 인터페이스가 거의 또는 전혀 없지만 다른 컴퓨터 시스템들(클라이언트들)로부터 요청들을 수신하는 유사한 디바이스일 수 있다. 뿐만 아니라, 일부 실시 예들에서, 컴퓨터 시스템(401)은 데스크탑 컴퓨터, 휴대용 컴퓨터, 랩탑 또는 노트북 컴퓨터, 태블릿 컴퓨터, 포켓 컴퓨터, 전화, 스마트 폰, 네트워크 스위치 또는 라우터, 또는 모든 다른 적절한 유형의 전자 디바이스로서 구현될 수 있다.
[0046] 도 4는 예시적인 컴퓨터 시스템(401)의 대표적인 주요 컴포넌트들을 묘사하기 위한 것임에 유의해야한다. 하지만, 일부 실시 예들에서, 개별 컴포넌트들은 도 4에 표시된 것보다 더 크거나 더 적은 복잡성을 가질 수 있고, 도 4에 도시된 것 이외의 또는 추가의 컴포넌트들이 존재할 수 있으며, 그러한 컴포넌트들의 수, 유형 및 구성은 변할 수 있다.
[0047] 하나 또는 그 이상의 프로그램들/유틸리티들(428)는 메모리(404)에 저장될 수 있고, 하나 또는 그 이상의 프로그램들/유틸리티들(428) 각각은 적어도 하나의 세트의 프로그램 모듈들(430)을 갖는다. 상기 프로그램들/유틸리티들(428)은 하이퍼바이저(가상 머신 모니터라고도 함), 하나 혹은 그 이상의 운영 체제들, 하나 혹은 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터를 포함할 수 있다. 각각의 운영 체제들, 하나 혹은 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 일부 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램들(428) 및/또는 프로그램 모듈(430)은 일반적으로 본 발명의 다양한 실시 예들의 기능들 또는 방법들을 수행한다.
[0048] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 프로세서로 하여금 본 발명의 실시 예들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령을 갖는 컴퓨터 판독가능 스토리지 매체(또는 매체)를 포함할 수 있다.
[0049] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파 관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0050] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0051] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0052] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0053] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0054] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0055] 도면들 내 플로 차트들 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 동작(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 실시 예들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 플로 차트 예시도의 각 블록, 및 블록도들 및/또는 플로 차트 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0056] 본 발명의 개시내용의 다양한 실시 예들의 설명들은 예시의 목적으로 제시되었지만, 개시된 실시 예들이 전부라거나 이들로 제한하도록 의도되지는 않았다. 기술된 실시 예들의 범위 및 사상을 벗어나지 않으면서 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 여기에서 사용된 용어는 실시 예들의 원리들, 시장에서 발견되는 기술에 대한 실질적인 응용 또는 기술적 개선을 설명하거나, 또는 당업자가 여기에 개시된 실시 예들을 이해할 수 있게 하기 위해 선택되었다.

Claims (22)

  1. 보안 부트 이미지 로딩을 제공하기 위한 시스템에 있어서, 상기 시스템은:
    마이크로컨트롤러;
    상기 마이크로컨트롤러 상에 배치된 복수의 물리적으로 수정 가능한 내부 컴포넌트(PMIC)들 - 상기 복수의 PMIC들 각각은 한 번만 수정될 수 있음 -;
    상기 마이크로컨트롤러의 메모리로부터 부트 이미지를 로드 하도록 구성된 이미지 로더;
    상기 부트 이미지에 대한 체크섬 값을 계산하도록 구성된 체크섬 계산기; 및
    상기 부트 이미지에 대한 체크섬 값의 이진 표현을 생성하기 위해 상기 복수의 PMIC들을 수정하도록 구성된 체크섬 버너를 포함하는
    시스템.
  2. 제1항에 있어서, 상기 이미지 로더는 상기 부트 이미지가 로드될 때마다 상기 부트 이미지에 대한 제2 체크섬 값을 계산하기 위해 체크섬 계산기를 호출하고, 상기 제2 체크섬 값과 상기 체크섬 값이 동일한지를 결정하기 위해 상기 제2 체크섬 값을 상기 복수의 PMIC 내의 체크섬 값과 비교하도록 구성되는
    시스템.
  3. 제2항에 있어서, 상기 제2 체크섬 값과 상기 체크섬 값은 동일하고, 상기 이미지 로더는 상기 부트 이미지를 계속 로드 하도록 구성되는
    시스템.
  4. 제2항에 있어서, 상기 제2 체크섬 값과 상기 제1 체크섬 값은 동일하지 않고, 상기 이미지 로더는 불일치 응답(a mismatch response)을 실행하도록 구성되는
    시스템.
  5. 제4항에 있어서, 상기 불일치 응답은 상기 복수의 PMIC로 번인 되는(burned into)
    시스템.
  6. 제5항에 있어서, 상기 불일치 응답은 상기 부트 이미지의 추가 로딩을 금지하는(prevent)
    시스템.
  7. 제5항 또는 제6항에 있어서, 상기 불일치 응답은 사용자에게 상기 불일치를 경고(alert)하는
    시스템.
  8. 제7항에 있어서, 상기 불일치 응답은 사용자로부터 응답이 수신될 때까지 상기 부트 이미지의 추가 로딩을 금지하는
    시스템.
  9. 제5항 내지 제8항의 항들 중 어느 한 항에 있어서, 상기 복수의 PMIC들로 번인 되는 상기 불일치 응답은 부분 응답인
    시스템.
  10. 제9항에 있어서, 상기 부분 응답은 완전한 불일치 응답(a complete mismatch response)이 저장되는 주소에 대한 포인터인
    시스템.
  11. 부트 이미지 로드를 보호하기 위한 방법에 있어서, 상기 방법은:
    부트 이미지에 대한 체크섬 값을 계산하는 단계;
    상기 체크섬 값을 마이크로컨트롤러에 쓰기 하는 단계;
    상기 체크섬 값을 마이크로컨트롤러로 번인 하는 단계(burning in); 및
    체크섬 불일치에 대한 응답들을 마이크로컨트롤러로 번인 하는 단계를 포함하는
    방법.
  12. 제11항에 있어서, 상기 체크섬 값은 상기 마이크로컨트롤러 상에 배치된 복수의 물리적으로 수정 가능한 내부 컴포넌트(PMIC)들로 번인 되고, 상기 복수의 PMIC들 각각은 한 번만 수정될 수 있는
    방법.
  13. 제11항 또는 제12항에 있어서, 체크섬 불일치에 대한 상기 응답은 상기 마이크로컨트롤러 상에 배치된 복수의 물리적으로 수정 가능한 내부 컴포넌트(PMIC)들로 번인 되고, 상기 복수의 PMIC들 각각은 한 번만 수정될 수 있는
    방법.
  14. 제11항 내지 제13항의 항들 중 어느 한 항에 있어서, 상기 체크섬 값은 상기 체크섬 값의 이진 표현으로서 상기 복수의 PMIC들로 번인 되는
    방법.
  15. 제11항 내지 제14항의 항들 중 어느 한 항에 있어서, 상기 방법은:
    마이크로컨트롤러로부터 상기 부트 이미지를 로드 하는 단계;
    상기 부트 이미지에 대한 체크섬 값을 계산하는 단계;
    상기 체크섬 값을 저장된 체크섬 값과 비교하는 단계 - 상기 저장된 체크섬 값은 마이크로컨트롤러에 영구적으로 번인 됨 -;
    상기 체크섬 값을 상기 저장된 체크섬 값과 비교할 때 일치에 응답하여 상기 부트 이미지가 로딩을 계속하도록 허용하는 단계; 및
    상기 체크섬 값을 상기 저장된 체크섬 값과 비교할 때 불일치에 응답하여 불일치 응답을 실행하는 단계를 더 포함하는
    방법.
  16. 제15항에 있어서, 상기 불일치 응답은 마이크로컨트롤러로 영구적으로 번인 되는
    방법.
  17. 제16항에 있어서, 상기 불일치 응답은 상기 부트 이미지의 추가 로딩을 중지하는
    방법.
  18. 제16항에 있어서, 상기 불일치 응답은 불일치의 사용을 경고하는(alert)
    방법.
  19. 제18항에 있어서, 상기 불일치 응답은 사용자로부터 응답이 수신될 때까지 상기부트 이미지의 추가 로딩을 추가로 중지하는
    방법.
  20. 제16항 내지 제19항의 항들 중 어느 한 항에 있어서, 상기 불일치 응답은 완전한 불일치 응답이 저장되는 주소에 대한 포인터로서 부분 응답인
    방법.
  21. 부트 이미지 로드를 보호하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램은:
    처리 회로에 의해 판독 가능하고 상기 처리 회로에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독 가능 스토리지 매체를 포함하고, 상기 명령들은 제11항 내지 제20항의 항들 중 어느 한 항에 따른 방법을 수행하는
    컴퓨터 프로그램 제품.
  22. 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은 컴퓨터 판독 가능 매체 상에 저장되고 디지털 컴퓨터의 내부 메모리로 로드 가능하며, 컴퓨터에서 실행될 때 제11항 내지 제20항의 항들 중 어느 한 항의 방법을 수행하기 위한 소프트웨어 코드 부분을 포함하는
    컴퓨터 프로그램.
KR1020227015752A 2019-12-02 2020-11-27 안전한 임베디드 마이크로컨트롤러 이미지 로드 KR20220090527A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/700,708 US11409882B2 (en) 2019-12-02 2019-12-02 Secure embedded microcontroller image load
US16/700,708 2019-12-02
PCT/IB2020/061206 WO2021111264A1 (en) 2019-12-02 2020-11-27 Secure embedded microcontroller image load

Publications (1)

Publication Number Publication Date
KR20220090527A true KR20220090527A (ko) 2022-06-29

Family

ID=76091657

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227015752A KR20220090527A (ko) 2019-12-02 2020-11-27 안전한 임베디드 마이크로컨트롤러 이미지 로드

Country Status (8)

Country Link
US (2) US11409882B2 (ko)
JP (1) JP2023503627A (ko)
KR (1) KR20220090527A (ko)
CN (1) CN114787808B (ko)
AU (1) AU2020398071B2 (ko)
DE (1) DE112020005933T5 (ko)
GB (1) GB2606905B (ko)
WO (1) WO2021111264A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409882B2 (en) * 2019-12-02 2022-08-09 International Business Machines Corporation Secure embedded microcontroller image load
CN115543349A (zh) * 2021-06-29 2022-12-30 广州视琨电子科技有限公司 Eeprom烧录方法、烧录器及通过eeprom烧录板卡方法、系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363531B2 (en) * 2003-05-30 2008-04-22 Sun Microsystems, Inc. Data synchronization for system controllers
TWI263939B (en) 2004-09-22 2006-10-11 Lite On Technology Corp Dynamic boot system and method, machine readable medium thereof, and construction method for an operating system image
RU2472215C1 (ru) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Способ выявления неизвестных программ с использованием эмуляции процесса загрузки
US8843650B2 (en) * 2012-01-09 2014-09-23 Fujitsu Limited Trusted network booting system and method
US9992024B2 (en) 2012-01-25 2018-06-05 Fujitsu Limited Establishing a chain of trust within a virtual machine
WO2013115767A1 (en) 2012-01-30 2013-08-08 Hewlett-Packard Development Company, L.P. Booting a server using a remote read-only memory image
US9165143B1 (en) 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
US9411688B1 (en) 2013-12-11 2016-08-09 Xilinx, Inc. System and method for searching multiple boot devices for boot images
US9639425B1 (en) 2015-01-13 2017-05-02 Marvell International Ltd. Signature-based sleep recovery operation flow
CN106295318A (zh) 2015-06-05 2017-01-04 北京壹人壹本信息科技有限公司 一种系统启动引导方法和装置
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
US9583210B1 (en) * 2015-12-22 2017-02-28 Intel Corporation Fuse-based integrity protection
US10139876B2 (en) 2016-06-23 2018-11-27 Vmware Inc. Efficient reboot of an operating system executed in a virtual machine
US10769272B2 (en) 2017-09-29 2020-09-08 Intel Corporation Technology to protect virtual machines from malicious virtual machine managers
US11409882B2 (en) * 2019-12-02 2022-08-09 International Business Machines Corporation Secure embedded microcontroller image load

Also Published As

Publication number Publication date
US20210165884A1 (en) 2021-06-03
DE112020005933T5 (de) 2022-09-22
GB2606905A (en) 2022-11-23
CN114787808B (zh) 2023-02-03
AU2020398071B2 (en) 2023-11-09
US11880469B2 (en) 2024-01-23
US20220335133A1 (en) 2022-10-20
GB202209605D0 (en) 2022-08-17
JP2023503627A (ja) 2023-01-31
WO2021111264A1 (en) 2021-06-10
GB2606905B (en) 2023-12-13
AU2020398071A1 (en) 2022-05-26
CN114787808A (zh) 2022-07-22
US11409882B2 (en) 2022-08-09

Similar Documents

Publication Publication Date Title
CN109446815B (zh) 基本输入输出系统固件的管理方法、装置和服务器
US10516533B2 (en) Password triggered trusted encryption key deletion
US10592670B2 (en) Technologies for provisioning and managing secure launch enclave with platform firmware
US10528765B2 (en) Technologies for secure boot provisioning and management of field-programmable gate array images
US10685122B2 (en) Portable executable and non-portable executable boot file security
US9319380B2 (en) Below-OS security solution for distributed network endpoints
US10073966B2 (en) Operating system-independent integrity verification
KR101066727B1 (ko) 컴퓨팅 장치의 보안 부팅
CN106682497B (zh) 在管理程序模式下安全执行代码的系统和方法
US10999081B2 (en) Dynamic certificate management for a distributed authentication system
US11880469B2 (en) Secure embedded microcontroller image load
WO2018229640A1 (en) Securing operating system configuration using hardware
US9824220B2 (en) Secure execution of software modules on a computer
US11281768B1 (en) Firmware security vulnerability verification service
BRPI0608821A2 (pt) inicialização segura
US10936722B2 (en) Binding of TPM and root device
US10776493B2 (en) Secure management and execution of computing code including firmware
CN112955888A (zh) 保护节点组
EP3454216B1 (en) Method for protecting unauthorized data access from a memory
US20230359741A1 (en) Trusted boot method and apparatus, electronic device, and readable storage medium
Yao et al. Configuration
US20230308261A1 (en) Pairing devices for enhanced security
Holoubková Rešerše a ukázka zabezpečení platformy (TPM)
Günes et al. Verified boot in embedded systems with hard boot time constraints

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal