KR20230082388A - 차량 제어기의 부트로더 검증 장치 및 그 방법 - Google Patents

차량 제어기의 부트로더 검증 장치 및 그 방법 Download PDF

Info

Publication number
KR20230082388A
KR20230082388A KR1020210170271A KR20210170271A KR20230082388A KR 20230082388 A KR20230082388 A KR 20230082388A KR 1020210170271 A KR1020210170271 A KR 1020210170271A KR 20210170271 A KR20210170271 A KR 20210170271A KR 20230082388 A KR20230082388 A KR 20230082388A
Authority
KR
South Korea
Prior art keywords
bootloader
vehicle controller
firmware
mac
electronic signature
Prior art date
Application number
KR1020210170271A
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 현대자동차주식회사
Priority to KR1020210170271A priority Critical patent/KR20230082388A/ko
Priority to US17/811,814 priority patent/US20230169174A1/en
Publication of KR20230082388A publication Critical patent/KR20230082388A/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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/602Providing cryptographic facilities or services
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures

Abstract

본 발명은 차량 제어기의 부트로더 검증 장치 및 그 방법에 관한 것으로, 전자서명(Digital Signature)이 삽입된 펌웨어가 차량 제어기의 부트로더에 로드되는 과정에서 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 변경함으로써, 차량 제어기가 부트로더를 안전하게 업데이트할 수 있게 하는 것은 물론, 차량 제어기의 부트로더가 업데이트된 이후에도 정상적인 부팅을 가능하게 하는 차량 제어기의 부트로더 검증 장치 및 그 방법을 제공하고자 한다.
이를 위하여, 본 발명은 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 저장하는 저장부; 및 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC을 변경하는 제어부를 포함할 수 있다.

Description

차량 제어기의 부트로더 검증 장치 및 그 방법{APPARATUS FOR VERIFYING BOOTLOADER OF ECU AND METHOD THEREOF}
본 발명은 차량 제어기에 구비된 부트로더(bootloader)를 검증하는 기술에 관한 것이다.
차량 제어기에 구비된 부트로더(bootloader)는 일종의 프로그램으로서, 플랫폼을 초기화하고, 차량 제어기의 펌웨어를 프로세서들에 로드하고, 프로세서들을 실행하여 로드된 펌웨어와 함께 구동한다.
이러한 부트로더는 생산 시설에서 EEPROM(Electrically Erasable Programmable Read-Only Memory)과 같은 영구 메모리(persistent memory)에 저장되며, 잦은 업데이트가 계획되지는 않지만 문제가 발생한 경우에 한해서 업데이트될 수 있다. 예를 들어, 차량 제어기가 새로운 기능(new feature)을 지원하는 경우, 이러한 새로운 기능에는 새로운 부트로더가 요구되는 바, 부트로더가 업데이트될 수 있다.
일반적으로, 차량 제어기의 부트로더를 업데이트하는 것은 매우 중요한 프로세스이기 때문에, 이에 대한 충분한 검증 과정이 수반되어야 하나 그렇지 못한 것이 현실이다.
특히, 악의적인 의도로 차량 제어기의 부트로더를 업데이트하는 경우, 즉 악성코드가 삽입된 펌웨어를 이용하여 차량 제어기의 부트로더를 업데이트하는 경우, 이에 대한 충분한 검증이 이루어지지 않기 때문에 차량 제어기가 정상적인 기능을 수행하지 못해 결국 차량 탑승자의 안전을 저해할 수 있다.
이 배경기술 부분에 기재된 사항은 발명의 배경에 대한 이해를 증진하기 위하여 작성된 것으로서, 이 기술이 속하는 분야에서 통상의 지식을 가진 자에게 이미 알려진 종래기술이 아닌 사항을 포함할 수 있다.
상기와 같은 종래 기술의 문제점을 해결하기 위하여, 본 발명은 전자서명(Digital Signature)이 삽입된 펌웨어가 차량 제어기의 부트로더에 로드되는 과정에서 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 변경함으로써, 차량 제어기가 부트로더를 안전하게 업데이트할 수 있게 하는 것은 물론, 차량 제어기의 부트로더가 업데이트된 이후에도 정상적인 부팅을 가능하게 하는 차량 제어기의 부트로더 검증 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치는, 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 저장하는 저장부; 및 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC을 변경하는 제어부를 포함할 수 있다.
본 발명의 일 실시예에서, 상기 저장부는 상기 펌웨어의 전자서명을 검증하기 위한 부트 공개키(Boot Public Key), 상기 부트로더에 대한 정보를 더 저장할 수 있다.
본 발명의 일 실시예에서, 상기 제어부는 상기 부트 공개키를 기반으로 상기 전자서명을 복호화하여 제1 해시값을 추출하고, 상기 부트로더에 대한 제2 해시값을 산출하며, 상기 제1 해시값과 상기 제2 해시값이 동일한 경우에 정상으로 판단할 수 있다.
본 발명의 일 실시예에서, 상기 제어부는 상기 부트로더에 대한 정보로서 크기 및 시작주소에 기초하여 상기 부트로더에 대한 제2 해시값을 산출할 수 있다.
본 발명의 일 실시예에서, 상기 제어부는 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을, 변경 후의 부트로더에 대한 MAC으로 업데이트할 수 있다.
본 발명의 일 실시예에서, 상기 제어부는 상기 펌웨어의 전자서명에 대한 검증결과가 비정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을 유지할 수 있다.
본 발명의 일 실시예에서, 상기 제어부는 디버깅 툴에 의해 상기 펌웨어가 상기 차량 제어기에 로드(load) 된 경우, 상기 차량 제어기로부터 상기 펌웨어의 전자서명을 수신할 수 있다.
본 발명의 일 실시예에서, 상기 디버깅 툴은 부트 개인키(Boot Private Key)를 기반으로 상기 펌웨어에 전자서명을 추가할 수 있다.
본 발명의 일 실시예에서, 상기 디버깅 툴은 JTAG(Joint Test Action Group)를 포함할 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법은, 저장부가 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 저장하는 단계; 제어부가 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하는 단계; 및 상기 제어부가 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC을 변경하는 단계를 포함할 수 있다.
본 발명의 일 실시예는, 상기 저장부가 상기 펌웨어의 전자서명을 검증하기 위한 부트 공개키(Boot Public Key), 상기 부트로더에 대한 정보를 저장하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예는, 상기 부트 공개키를 기반으로 상기 전자서명을 복호화하여 제1 해시값을 추출하는 단계; 상기 부트로더에 대한 제2 해시값을 산출하는 단계; 및 상기 제1 해시값과 상기 제2 해시값이 동일한 경우에 정상으로 판단하는 단계를 포함할 수 있다.
본 발명의 일 실시예는, 상기 부트로더에 대한 정보로서 크기 및 시작주소에 기초하여 상기 부트로더에 대한 제2 해시값을 산출하는 단계를 포함할 수 있다.
본 발명의 일 실시예는, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을, 변경 후의 부트로더에 대한 MAC으로 업데이트하는 단계; 및 상기 펌웨어의 전자서명에 대한 검증결과가 비정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을 유지하는 단계를 포함할 수 있다.
본 발명의 일 실시예는, 디버깅 툴에 의해 상기 펌웨어가 상기 차량 제어기에 로드(load) 된 경우, 상기 차량 제어기로부터 상기 펌웨어의 전자서명을 수신하는 단계를 포함할 수 있다.
본 발명의 일 실시예는, 상기 디버깅 툴이 부트 개인키(Boot Private Key)를 기반으로 상기 펌웨어에 전자서명을 추가하는 단계를 포함할 수 있다.
상기와 같은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치 및 그 방법은, 전자서명(Digital Signature)이 삽입된 펌웨어가 차량 제어기의 부트로더에 로드되는 과정에서 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 변경함으로써, 차량 제어기가 부트로더를 안전하게 업데이트할 수 있게 하는 것은 물론, 차량 제어기의 부트로더가 업데이트된 이후에도 정상적인 부팅을 가능하게 할 수 있다.
도 1 은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치에 대한 구성도,
도 2 는 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치가 차량 제어기 내에서 HSM으로 구현된 예를 나타내는 도면,
도 3 은 본 발명의 일 실시예에 따른 HSM을 구비한 차량 제어기의 메모리 구성의 일례를 나타내는 도면,
도 4 는 본 발명의 일 실시예에 따른 HSM을 구비한 차량 제어기의 부팅 절차의 일례를 나타내는 도면,
도 5 는 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법에 대한 상세 흐름도,
도 6 은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법에 대한 전체 흐름도,
도 7 은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법을 실행하기 위한 컴퓨팅 시스템을 보여주는 블록도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 실시예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1 은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치에 대한 구성도이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치(100)는, 저장부(10) 및 제어부(Controller, 20)를 포함할 수 있다. 이때, 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치(100)를 실시하는 방식에 따라 각 구성요소는 서로 결합되어 하나로 구현될 수도 있고, 일부의 구성요소가 생략될 수도 있다.
아울러, 차량 제어기(200)는 차량에 구비된 각종 ECU(Electronic Control Unit)로서, 차량 제어기(200)를 구동하기 위한 애플리케이션(app)과 부트로더를 구비할 수 있다.
또한, 디버깅 툴(Debugging Tool, 300)은 디버깅 포트(일례로, JTAG(Joint Test Action Group))를 통해 전자서명이 추가된 펌웨어(310)를 차량 제어기(200)에 로드(load)할 수 있다. 그러면, 차량 제어기(200)는 펌웨어(310)의 전자서명을 검증 장치(100)로 전달할 수 있다. 이때, 디버깅 툴(300)은 부트 개인키(Boot Private Key)를 기반으로 펌웨어에 전자서명을 추가할 수 있다.
한편, 검증 장치(100)의 각 구성요소들에 대해 살펴보면, 먼저 저장부(10)는 차량 제어기(200)가 부트로더의 펌웨어 업데이트를 수행하는 과정에서 상기 차량 제어기(200)로부터 수신한 펌웨어의 전자서명(Digital Signature)을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기(200)의 부트로더에 대한 MAC(Message Authentication Code)을 변경하는 과정에서 요구되는 각종 로직과 알고리즘 및 프로그램을 저장할 수 있다.
저장부(10)는 전자서명(Digital Signature)이 삽입된 펌웨어가 차량 제어기(200)의 부트로더에 로드되는 과정에서 상기 차량 제어기(200)로부터 수신한 펌웨어의 전자서명(Digital Signature)을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기(200)의 부트로더에 대한 MAC(Message Authentication Code)을 변경하는 과정에서 요구되는 각종 로직과 알고리즘 및 프로그램을 저장할 수 있다.
저장부(10)는 제어부(20)에 의해 생성된 차량 제어기(200)의 부트로더에 대한 MAC을 부트 MAC으로서 저장할 수 있다.
저장부(10)는 펌웨어의 전자서명을 검증하기 위한 부트 공개키(Boot Public Key)를 저장할 수 있다.
저장부(10)는 부트로더에 대한 정보(일례로, 크기, 시작주소 등)를 저장할 수 있다.
저장부(10)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 마이크로 타입(micro type), 및 카드 타입(예컨대, SD 카드(Secure Digital Card) 또는 XD 카드(eXtream Digital Card)) 등의 메모리와, 램(RAM, Random Access Memory), SRAM(Static RAM), 롬(ROM, Read-Only Memory), PROM(Programmable ROM), EEPROM(Electrically Erasable PROM), 자기 메모리(MRAM, Magnetic RAM), 자기 디스크(magnetic disk), 및 광디스크(optical disk) 타입의 메모리 중 적어도 하나의 타입의 기록 매체(storage medium)를 포함할 수 있다.
제어부(20)는 상기 각 구성요소들이 제 기능을 정상적으로 수행할 수 있도록 전반적인 제어를 수행할 수 있다. 이러한 제어부(20)는 하드웨어의 형태로 구현되거나, 또는 소프트웨어의 형태로 구현되거나, 또는 하드웨어 및 소프트웨어가 결합된 형태로 구현될 수 있다. 바람직하게는, 제어부(20)는 마이크로프로세서로 구현될 수 있으나 이에 한정되는 것은 아니다.
제어부(20)는 차량 제어기(200)가 부트로더의 펌웨어 업데이트를 수행하는 과정에서 상기 차량 제어기(200)로부터 수신한 펌웨어의 전자서명(Digital Signature)을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기(200)의 부트로더에 대한 MAC(Message Authentication Code)을 변경하는 과정에서 각종 제어를 수행할 수 있다.
제어부(20)는 전자서명(Digital Signature)이 삽입된 펌웨어가 차량 제어기(200)의 부트로더에 로드되는 과정에서 상기 차량 제어기(200)로부터 수신한 펌웨어의 전자서명(Digital Signature)을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기(200)의 부트로더에 대한 MAC(Message Authentication Code)을 변경하는 과정에서 각종 제어를 수행할 수 있다.
제어부(20)는 펌웨어의 전자서명을 검증하는 과정에서, 저장부(10)에 저장되어 있는 부트 공개키(Boot Public Key)를 기반으로 상기 전자서명을 복호화하여 해시(hash)값을 추출하고, 상기 추출한 해시값을 펌웨어의 헤더에 저장된 해시값(변경된 부트로더의 해시값)과 비교하며, 상기 비교결과 동일하면 정상으로 판단하고, 동일하지 않으면 비정상으로 판단할 수 있다. 이때, 제어부(20)는 부트로더에 대한 정보로서 크기 및 시작주소를 이용하여 부트로더에 대한 해시값을 산출해 낼 수 있다.
제어부(20)는 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우, 저장부(10)에 저장되어 있는 변경 전의 부트로더(펌웨어 업데이트 전의 부트로더)에 대한 MAC을, 변경 후의 부트로더(펌웨어 업데이트 후의 부트로더)에 대한 MAC으로 업데이트할 수 있다. 이때, 상기 펌웨어의 전자서명에 대한 검증결과가 비정상이어서 저장부(10)에 변경 전의 부트로더에 대한 MAC이 유지되고 있는 경우, 이후 부팅 과정에서 생성한 부트로더에 대한 MAC과 저장부(10)에 저장되어 있는 MAC이 동일하지 않기 때문에(검증 실패), 차량 제어기(200)는 정상 동작하지 않는다.
결국, 전자서명이 없는 펌웨어를 이용하여 차량 제어기의 부트로더를 업데이트한 경우, 저장부(10)에 저장되어 있는 MAC에 대한 업데이트가 이루어지지 않기 때문에 차량 제어기(200)는 정상적으로 동작하지 않게 되고, 이러한 정보는 사용자에게 제공되어 이러한 상황에 대해 대처할 수 있도록 한다.
도 2 는 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 장치가 차량 제어기 내에서 HSM으로 구현된 예를 나타내는 도면이다.
도 2에 도시된 바와 같이, 차량 제어기(200)는 호스트(Host)와 HSM(Hardware Security Module)을 구비할 수 있으며, 호스트는 차량 제어기(200)의 구동을 위한 애플리케이션과 부트로더를 구비할 수 있고, HSM은 각종 보안 부트(Secure Boot) 정보를 저장할 수 있다. 여기서, 보안 부트 정보는 부트로더에 대한 정보(일례로, 크기, 시작주소 등), 부트 MAC, 부트 키, 부트 공개키(Boot Public Key) 등을 포함할 수 있다.
하드웨어 보안 모듈(HSM)은 암호화 키의 수명주기를 보호하기 위해 특별히 설계된 암호화 프로세서를 의미하며, 강화된 위조 방지 장치 내에서 암호화 처리, 키 보호 및 키 관리를 수행할 수 있다. 차량 제어기 도메인에서 사용되는 HSM은 일반적으로 키를 안전하게 저장할 수 있는 보안 메모리(Secure Memory)를 구비할 수 있다. 예컨대, 보안 메모리는 호스트 시스템(즉, 애플리케이션)과 별개로 보안성이 높은 HSM 전용 RAM이나 ROM을 포함할 수 있으며, HSM은 전용의 중앙처리장치(CPU)를 통해 일련의 동작을 수행하여 잠재적 공격자의 공격으로부터 상대적으로 안전하게 기능을 수행할 수 있다.
특히, HSM은 차량 제어기의 보안 부팅(Secure Booting) 기능을 제공할 수 있다. 보안 부팅이란 HSM을 통해 부팅 시 차량 제어기의 펌웨어의 무결성을 검증하는 기능이다. 구체적으로, 부팅 시 HSM은 호스트 부트로더의 무결성을 검증하고, 무결성 검증이 통과된 경우에만 제어권을 호스트 부트로더로 넘긴다. 따라서, 부트로더의 무결성이 검증된 경우에만 정상적으로 호스트의 부팅 절차가 진행될 수 있다.
이하, 도 3과 도 4 및 [표 1]을 참조하여 HSM을 이용한 호스트의 부팅 과정에 대해 살펴보기로 한다.
도 3 은 본 발명의 일 실시예에 따른 HSM을 구비한 차량 제어기의 메모리 구성의 일례를, 도 4 는 본 발명의 일 실시예에 따른 HSM을 구비한 차량 제어기의 부팅 절차의 일례를 각각 나타낸다. 또한, [표 1]은 도 3에 도시된 메모리 구성의 설정을 나타낸다.
먼저, HSM을 구비한 차량 제어기(200)는 적어도 호스트 메모리(11)와 HSM 메모리(12)를 구비할 수 있다. 여기서, 호스트 메모리(11)는 HSM을 이용한 보안 부팅의 설정 여부를 나타내는 보안 부트 설정(Secure Boot Enable)과, 호스트 애플리케이션 프로그램 및 데이터 등을 저장할 수 있다. 또한, HSM 메모리(12)는 보안 부트 플래그(Secure Boot Flag1), 제1 메시지 인증 코드(1st_MAC) 및 인스턴트 메시지 인증 코드(Instant_MAC) 등을 저장할 수 있다.
각 메모리(11, 12)에 저장되는 데이터는 서로 다른 메모리 주소로 구분될 수 있으며, 데이터 중 적어도 일부는 각 메모리(11, 12)에서 미리 저장될 영역이 설정되어 있을 수 있다.
아래 [표 1]은 각 메모리(11, 12)에 저장되는 데이터별로 저장되는 영역과 업데이트, 접근 가능 여부가 설정되는 형태의 일례를 나타낸다.
[표 1]
Figure pat00001
[표 1]에서 NVM은 비휘발성 메모리를, VM은 휘발성 메모리를 각각 의미하며, 보안 디버거는 보안성이 확보된 디버거를 의미한다. 이하, 각 데이터를 구체적으로 설명한다.
[표 1]을 참조하면, 보안 부트 설정(Secure Boot Enable)은 '0'이나 '1'로 설정될 수 있으며, '0'으로 설정되면 차량 제어기(200)에서 보안 부팅 과정이 수행되지 않으며, '1'로 설정되면 보안 부팅 과정이 수행될 수 있다. 보안 부팅 설정이 한번 '1'로 세팅되면, '1'에서 '0'으로의 데이터 값 변경(Writing)은 어떤 경로로도 절대로 허용되지 않는다.
보안 부트 플래그(Secure Boot Flag)는 최초 부팅시 제1 메시지 인증 코드(1st_MAC)를 생성했는지에 대한 여부를 확인하는 플래그이다. 이러한 보안 부트 플래그는 일반 디버거나 무선(OTA) 업데이트 등 일반적인 경로를 통한 읽기 및 쓰기를 차단함으로써 데이터의 무결성을 갖게 된다.
호스트 애플리케이션은 임의의 경로를 통한 접근으로 읽기 및 쓰기가 가능한 일반적인 애플리케이션 데이터 영역을 의미할 수 있다.
제1 메시지 인증 코드는 호스트 애플리케이션 프로그램과, HSM내 저장된 고유 키(Boot Key) 값을 입력으로 하여 HSM 내에 저장된 고유의 암호화 알고리즘을 통해 생성되는(출력되는) 암호화 인증 코드를 의미한다.
인스턴트 메시지 인증 코드는 최초 부팅시 제1 메시지 인증 코드가 생성된 이후의 부팅에서 로드된 애플리케이션 데이터를 통해 생성된 메시지 인증 코드를 의미하며, 후술할 보안 부팅 과정에서는 제1 메시지 인증 코드와의 비교를 통해 애플리케이션 데이터의 무결성을 판단할 때 이용된다.
이하에서는, 도 3 및 [표 1]을 참조하여 상술한 데이터와 데이터별 메모리 설정을 기반으로 보안 부팅 과정을 설명한다. 도 4에서 보안 부트 설정은 '1'로 세팅된 상황을 가정한다.
도 4를 참조하면, 보안 부트 설정이 '1'로 설정된 상황이므로 보안 부팅 절차가 시작된다. 먼저, HSM 메모리(12)에 최초 부트 플래그(1st Boot Flag)의 설정 여부가 판단될 수 있다(S210). 최초 부트 플래그는 '0'으로 설정되면 보안 부팅 절차가 처음 수행됨을 나타내고, '1'로 설정되면 처음 부팅이 아님을 의미한다.
최초 부트 플래그가 '0'으로 설정된 경우, HSM은 호스트 메모리의 호스트 애플리케이션 프로그램과 HSM 내에 저장된 고유키 값을 이용하여 제1 메시지 인증 코드를 생성한다(S220).
상기 생성된 제1 메시지 인증 코드는 HSM 메모리의 보안 영역에 저장될 수 있다(S230).
제1 메시지 인증 코드의 생성 및 저장이 수행됨에 따라, 최초 부트 플래그는 '1'로 설정되며(S240), 호스트 시스템(차량 제어기)은 리셋된다(S280A).
호스트 시스템 리셋에 의해 다시 보안 부팅 절차가 개시되고, HSM 메모리(12)에 최초 부트 플래그(1st Boot Flag)가 '1'로 설정되어 있으므로(S210의 no) HSM은 호스트 메모리(11)의 호스트 애플리케이션 프로그램과 HSM 내에 저장된 고유 키 값을 이용하여 인스턴트 메시지 인증 코드를 생성한다(S250).
HSM은 인스턴트 메시지 인증 코드를 보안 영역에 저장된 제1 메시지 인증 코드와 비교하여 동일성 여부를 판단한다(S260).
상기 판단 결과, 동일하면 애플리케이션 데이터의 무결성에 이상이 없는 것으로 판단하여 호스트 시스템을 정상 부팅하며(S280B), 그렇지 않은 경우 기 설정된 회수만큼 인스턴트 메시지 인증 코드의 생성과 비교를 반복한다(S270).
만일, 기 설정된 회수만큼 인스턴트 메시지 인증 코드의 생성과 비교를 반복해도 무결성이 확보되지 않는 경우, HSM은 호스트 시스템을 리셋한다(S280C).
도 5 는 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법에 대한 상세 흐름도이다.
먼저, 저장부(10)가 차량 제어기(200)의 부트로더에 대한 MAC(Message Authentication Code)을 저장한다(501).
이후, 제어부(20)가 상기 차량 제어기(200)로부터 수신한 펌웨어의 전자서명을 검증한다(502).
이후, 제어부(20)가 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기(200)의 부트로더에 대한 MAC을 변경한다(503).
도 6 은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법에 대한 전체 흐름도이다.
먼저, 디버깅 툴(300)은 부트 개인키를 이용하여 부트로더 업데이트 펌웨어에 전자서명을 추가한다(601). 이때, 부트 개인키를 이용하여 부트로더 업데이트 펌웨어에 전자서명을 추가하는 과정은 서버나 그외 다른 툴에서 수행될 수도 있다.
이후, 디버깅 툴(300)은 전자서명이 추가된 부트로더 업데이트 펌웨어를 차량 제어기(300)에 로드(load)한다(602).
이후, 차량 제어기(200)는 디버깅 툴(300)에 의해 로드된 펌웨어를 이용하여 부트로더를 업데이트한다(603).
또한, 차량 제어기(200)는 상기 펌웨어로부터 전자서명을 추출하여 검증 장치(100)로 전달한다(604, 605).
이후, 검증 장치(100)는 차량 제어기(200)로부터 전달받은 전자서명을 검증한다(606).
상기 검증 결과가 정상이면(607), 저장부(10)에 저장되어 있는 변경 전의 부트로더(펌웨어 업데이트 전의 부트로더)에 대한 MAC을, 변경 후의 부트로더(펌웨어 업데이트 후의 부트로더)에 대한 MAC으로 업데이트한다(608).
도 7 은 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법을 실행하기 위한 컴퓨팅 시스템을 보여주는 블록도이다.
도 7을 참조하면, 상술한 본 발명의 일 실시예에 따른 차량 제어기의 부트로더 검증 방법은 컴퓨팅 시스템을 통해서도 구현될 수 있다. 컴퓨팅 시스템(1000)은 시스템 버스(1200)를 통해 연결되는 적어도 하나의 프로세서(1100), 메모리(1300), 사용자 인터페이스 입력 장치(1400), 사용자 인터페이스 출력 장치(1500), 스토리지(1600), 및 네트워크 인터페이스(1700)를 포함할 수 있다.
프로세서(1100)는 중앙 처리 장치(CPU) 또는 메모리(1300) 및/또는 스토리지(1600)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. 메모리(1300) 및 스토리지(1600)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리(1300)는 ROM(Read Only Memory, 1310) 및 RAM(Random Access Memory, 1320)을 포함할 수 있다.
따라서, 본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(1100)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, SSD(Solid State Drive), 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(1300) 및/또는 스토리지(1600))에 상주할 수도 있다. 예시적인 저장 매체는 프로세서(1100)에 커플링되며, 그 프로세서(1100)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(1100)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다.
따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 저장부
20: 제어부
100: 검증 장치
200: 차량 제어기
300: 디버깅 툴

Claims (16)

  1. 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 저장하는 저장부; 및
    상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하고, 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC을 변경하는 제어부
    를 포함하는 차량 제어기의 부트로더 검증 장치.
  2. 제 1 항에 있어서,
    상기 저장부는,
    상기 펌웨어의 전자서명을 검증하기 위한 부트 공개키(Boot Public Key), 상기 부트로더에 대한 정보를 더 저장하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  3. 제 2 항에 있어서,
    상기 제어부는,
    상기 부트 공개키를 기반으로 상기 전자서명을 복호화하여 제1 해시값을 추출하고, 상기 부트로더에 대한 제2 해시값을 산출하며, 상기 제1 해시값과 상기 제2 해시값이 동일한 경우에 정상으로 판단하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  4. 제 3 항에 있어서,
    상기 제어부는,
    상기 부트로더에 대한 정보로서 크기 및 시작주소에 기초하여 상기 부트로더에 대한 제2 해시값을 산출하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  5. 제 1 항에 있어서,
    상기 제어부는,
    상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을, 변경 후의 부트로더에 대한 MAC으로 업데이트하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  6. 제 1 항에 있어서,
    상기 제어부는,
    상기 펌웨어의 전자서명에 대한 검증결과가 비정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을 유지하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  7. 제 1 항에 있어서,
    상기 제어부는,
    디버깅 툴에 의해 상기 펌웨어가 상기 차량 제어기에 로드(load) 된 경우, 상기 차량 제어기로부터 상기 펌웨어의 전자서명을 수신하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  8. 제 7 항에 있어서,
    상기 디버깅 툴은,
    부트 개인키(Boot Private Key)를 기반으로 상기 펌웨어에 전자서명을 추가하는 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  9. 제 7 항에 있어서,
    상기 디버깅 툴은,
    JTAG(Joint Test Action Group)인 것을 특징으로 하는 차량 제어기의 부트로더 검증 장치.
  10. 저장부가 차량 제어기의 부트로더에 대한 MAC(Message Authentication Code)을 저장하는 단계;
    제어부가 상기 차량 제어기로부터 수신한 펌웨어의 전자서명을 검증하는 단계; 및
    상기 제어부가 상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우에 상기 차량 제어기의 부트로더에 대한 MAC을 변경하는 단계
    를 포함하는 차량 제어기의 부트로더 검증 방법.
  11. 제 10 항에 있어서,
    상기 저장부가 상기 펌웨어의 전자서명을 검증하기 위한 부트 공개키(Boot Public Key), 상기 부트로더에 대한 정보를 저장하는 단계
    를 더 포함하는 차량 제어기의 부트로더 검증 방법.
  12. 제 11 항에 있어서,
    상기 펌웨어의 전자서명을 검증하는 단계는,
    상기 부트 공개키를 기반으로 상기 전자서명을 복호화하여 제1 해시값을 추출하는 단계;
    상기 부트로더에 대한 제2 해시값을 산출하는 단계; 및
    상기 제1 해시값과 상기 제2 해시값이 동일한 경우에 정상으로 판단하는 단계
    를 포함하는 차량 제어기의 부트로더 검증 방법.
  13. 제 12 항에 있어서,
    상기 제2 해시값을 산출하는 단계는,
    상기 부트로더에 대한 정보로서 크기 및 시작주소에 기초하여 상기 부트로더에 대한 제2 해시값을 산출하는 단계
    를 포함하는 차량 제어기의 부트로더 검증 방법.
  14. 제 10 항에 있어서,
    상기 차량 제어기의 부트로더에 대한 MAC을 변경하는 단계는,
    상기 펌웨어의 전자서명에 대한 검증결과가 정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을, 변경 후의 부트로더에 대한 MAC으로 업데이트하는 단계; 및
    상기 펌웨어의 전자서명에 대한 검증결과가 비정상인 경우, 상기 저장부에 저장되어 있는 변경 전의 부트로더에 대한 MAC을 유지하는 단계
    를 포함하는 차량 제어기의 부트로더 검증 방법.
  15. 제 10 항에 있어서,
    상기 펌웨어의 전자서명을 검증하는 단계는,
    디버깅 툴에 의해 상기 펌웨어가 상기 차량 제어기에 로드(load) 된 경우, 상기 차량 제어기로부터 상기 펌웨어의 전자서명을 수신하는 단계
    를 포함하는 차량 제어기의 부트로더 검증 방법.
  16. 제 15 항에 있어서,
    상기 펌웨어의 전자서명을 수신하는 단계는,
    상기 디버깅 툴이 부트 개인키(Boot Private Key)를 기반으로 상기 펌웨어에 전자서명을 추가하는 단계
    를 포함하는 차량 제어기의 부트로더 검증 방법.
KR1020210170271A 2021-12-01 2021-12-01 차량 제어기의 부트로더 검증 장치 및 그 방법 KR20230082388A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210170271A KR20230082388A (ko) 2021-12-01 2021-12-01 차량 제어기의 부트로더 검증 장치 및 그 방법
US17/811,814 US20230169174A1 (en) 2021-12-01 2022-07-11 Apparatus for verifying bootloader of ecu and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210170271A KR20230082388A (ko) 2021-12-01 2021-12-01 차량 제어기의 부트로더 검증 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR20230082388A true KR20230082388A (ko) 2023-06-08

Family

ID=86500103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210170271A KR20230082388A (ko) 2021-12-01 2021-12-01 차량 제어기의 부트로더 검증 장치 및 그 방법

Country Status (2)

Country Link
US (1) US20230169174A1 (ko)
KR (1) KR20230082388A (ko)

Also Published As

Publication number Publication date
US20230169174A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
CN108399339B (zh) 一种基于安全芯片的可信启动方法
EP2069992B1 (en) Protecting interfaces on processor architectures
CN101432752B (zh) 可信平台现场升级系统和方法
JP2014518428A (ja) Biosフラッシュ攻撃に対する保護および通知
EP1334419B1 (en) System and method for verifying the integrity of stored information within an electronic device
US20210149681A1 (en) Secure Firmware Management with Hierarchical Boot Sequence using Last Known Good Firmware
TW201500960A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術
CN107908977B (zh) 基于TrustZone的智能移动终端信任链安全传递方法及系统
CN102298529A (zh) 为系统提供硅集成代码
WO2021249359A1 (zh) 数据完整性保护的方法和装置
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
US20210367781A1 (en) Method and system for accelerating verification procedure for image file
CN115033294A (zh) 用于安全非易失性存储器的系统、方法和设备
KR20190039645A (ko) 인증 가속화를 위해 신뢰할 수 있는 저장 장치에 대한 검사 생성
CN113127011A (zh) 电子设备及电子设备的操作方法
US20160350537A1 (en) Central processing unit and method to verify mainboard data
US20210117545A1 (en) Semiconductor device including secure patchable rom and patch method thereof
US11366911B2 (en) Cryptography module and method for operating same
CN115062291A (zh) 用于管理容器的方法、系统和计算机可读介质
CN114547618A (zh) 基于Linux系统的安全启动方法、装置、电子设备及存储介质
CN112231649A (zh) 一种固件加密处理方法、装置、设备及介质
WO2016024967A1 (en) Secure non-volatile random access memory
KR20230082388A (ko) 차량 제어기의 부트로더 검증 장치 및 그 방법
US11113399B2 (en) Electronic apparatus and control method of electronic apparatus
US20230129942A1 (en) Method for locking a rewritable non-volatile memory and electronic device implementing said method