KR20230091660A - 소프트웨어의 무결성 검증 방법 및 그 장치 - Google Patents

소프트웨어의 무결성 검증 방법 및 그 장치 Download PDF

Info

Publication number
KR20230091660A
KR20230091660A KR1020210180988A KR20210180988A KR20230091660A KR 20230091660 A KR20230091660 A KR 20230091660A KR 1020210180988 A KR1020210180988 A KR 1020210180988A KR 20210180988 A KR20210180988 A KR 20210180988A KR 20230091660 A KR20230091660 A KR 20230091660A
Authority
KR
South Korea
Prior art keywords
hash
integrity verification
software
flash memory
hash table
Prior art date
Application number
KR1020210180988A
Other languages
English (en)
Other versions
KR102598510B1 (ko
Inventor
한성민
홍기문
Original Assignee
주식회사 텔레칩스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 텔레칩스 filed Critical 주식회사 텔레칩스
Priority to KR1020210180988A priority Critical patent/KR102598510B1/ko
Publication of KR20230091660A publication Critical patent/KR20230091660A/ko
Application granted granted Critical
Publication of KR102598510B1 publication Critical patent/KR102598510B1/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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/442Shutdown
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

하드웨어 보안 모듈이 소프트웨어의 무결성을 검증하는 방법으로서, 시리얼 플래시 메모리에 저장된 소프트웨어가 실행되면, 상기 시리얼 플래시 메모리로부터 상기 소프트웨어에 대한 해시값들을 저장한 해시 테이블을 획득하여 상기 하드웨어 보안 모듈의 내부 메모리에 로딩하는 단계, 상기 소프트웨어의 분할 블록 단위로 해시값들을 연산하는 단계, 분할 블록 순서대로, 상기 분할 블록에 대하여 연산한 해시값을 상기 해시 테이블에 저장된 상기 분할 블록의 해시값과 비교하여 일치 여부를 판단하는 단계, 그리고 일치하면, 무결성 검증을 종료하고, 불일치하면, 시스템을 재부팅시키는 단계를 포함한다.

Description

소프트웨어의 무결성 검증 방법 및 그 장치{METHOD AND APPARATUS FOR VERIFY SOFTWARE INTEGRITY}
본 발명은 시리얼 플래시 메모리에서 XIP(eXecute-In-Place)로 동작하는 소프트웨어의 무결성 검증 방법에 관한 것이다.
차량용 ECU(Electronic Control Unit)는 빠른 부팅과 CAN(Controller Area Network) 응답을 위해 XIP를 지원하는 시리얼 플래시 메모리를 저장 장치로 사용한다.
그러나, 시리얼 플래시 메모리의 XIP는 읽기 성능이 낮기 때문에 시리얼 플래시 메모리에 저장된 소프트웨어의 무결성을 검증하는데 많은 시간이 소요된다. 따라서, 일반적으로 사용되는 "ROM → 부트 로더 → 소프트웨어 실행 코드" 로 연결되는 신뢰 체인을 사용할 경우, 부팅 시간이 길어진다.
부팅 시간을 해결하기 위하여, 종래에 시리얼 플래시 메모리에 저장된 소프트웨어 실행 코드를 먼저 실행하고 HSM(Hardware Security Module)에서 소프트웨어 실행 코드의 무결성을 검증하는 방법이 있다.
이때, 종래 방식은 소프트웨어 실행 코드에 대한 단일 해시를 사용한다. 그러나, 이 방식은 시리얼 플래시 메모리의 낮은 읽기 속도로 인해서 무결성 검증 시간이 길어지고, 그로 인해서 검증이 완료될 때까지 소프트웨어가 장시간 실행되어야 하는 문제점이 있다. 또한, 무결성 검증이 완료되고 오류를 발견하여 시스템을 재부팅할 때까지 장시간 소프트웨어가 검증되지 않은 상태로 동작하는 문제점이 있다.
해결하고자 하는 과제는 해시 테이블을 이용하여 시리얼 플래시 메모리에서 XIP(eXecute-In-Place)로 동작하는 소프트웨어의 무결성 검증 방법 및 그 장치를 제공하는 것이다.
한 특징에 따르면, 하드웨어 보안 모듈이 소프트웨어의 무결성을 검증하는 방법으로서, 시리얼 플래시 메모리에 저장된 소프트웨어가 실행되면, 상기 시리얼 플래시 메모리로부터 상기 소프트웨어에 대한 해시값들을 저장한 해시 테이블을 획득하여 상기 하드웨어 보안 모듈의 내부 메모리에 로딩하는 단계, 상기 소프트웨어의 분할 블록 단위로 해시값들을 연산하는 단계, 분할 블록 순서대로, 상기 분할 블록에 대하여 연산한 해시값을 상기 해시 테이블에 저장된 상기 분할 블록의 해시값과 비교하여 일치 여부를 판단하는 단계, 그리고 일치하면, 무결성 검증을 종료하고, 불일치하면, 시스템을 재부팅시키는 단계를 포함한다.
상기 로딩하는 단계와 상기 해시값들을 연산하는 단계 사이에, 상기 해시 테이블에 대한 해시값을 연산하는 단계, 상기 시리얼 플래시 메모리로부터 상기 해시 테이블에 대해 연산된 해시값을 독출하는 단계, 상기 연산한 해시 테이블의 해시값과 상기 독출한 해시 테이블의 해시값을 비교하여 무결성 검증을 수행하고, 상기 무결성 검증에 실패하면 시스템을 재부팅시키는 단계를 더 포함할 수 있다.
상기 재부팅시키는 단계는, 상기 연산한 해시 테이블의 해시값을 토대로 전자 서명값을 계산하는 단계, 상기 시리얼 플래시 메모리로부터 상기 해시 테이블의 해시값을 토대로 생성된 전자 서명값을 독출하는 단계, 그리고 상기 계산한 전자 서명값을 상기 독출한 전자 서명값과 비교하여 불일치하면 무결성 검증 실패로 판단하고, 상기 시스템을 재부팅시키는 단계를 포함할 수 있다.
상기 소프트웨어는, 시리얼 플래시 메모리에서 XIP(eXecute-In-Place) 모드로 실행될 수 있다.
다른 특징에 따르면, 무결성 검증 장치는 소프트웨어 실행 코드와, 상기 소프트웨어 실행 코드를 복수개로 분할한 복수의 분할 블록에 대한 해시값들을 포함하는 해시 테이블을 저장하는 시리얼 플래시 메모리, 그리고 상기 소프트웨어 실행 코드가 실행되면, 실행된 소프트웨어 실행 코드를 복수개로 분할하여 분할 블록의 순서대로 분할 블록의 해시값을 연산하고, 연산한 분할 블록의 해시값을 상기 해시 테이블에 저장된 대응하는 분할 블록의 해시값과 비교하여 일치 여부를 판단하는 하드웨어 보안 모듈을 포함하고, 상기 하드웨어 보안 모듈은, 상기 연산한 분할 블록의 해시값이 상기 해시 테이블에 저장된 분할 블록의 해시값과 일치하면, 무결성 검증을 완료하고, 불일치하면 시스템을 재부팅시킨다.
상기 하드웨어 보안 모듈은, 상기 해시 테이블에 대한 전자 서명값을 생성하고, 상기 시리얼 플래시 메모리에 저장된 전자 서명값을 독출하여, 생성한 전자 서명값과 상기 독축한 전자 서명값이 불일치하면, 시스템을 재부팅시키고, 일치하면 상기 분할 블록 단위로 해시값 검증을 수행할 수 있다.
상기 하드웨어 보안 모듈은, 상기 시리얼 플래시 메모리에 직접 접근하여 상기 시리얼 플래시 메모리에 저장된 해시 테이블과 전자 서명값을 독출할 수 있다.
상기 전자 서명값은, 상기 해시 테이블에 대한 해시값을 토대로 생성될 수 있다.
상기 무결성 검증 장치는 미검증 상태에서 상기 소프트웨어 실행 코드를 실행하는 MCU(microcontroller unit)를 더 포함하고, 상기 하드웨어 보안 모듈은, 상기 MCU의 소프트웨어 실행 코드 실행과 동시에 상기 MCU와 독립적으로 실행된 소프트웨어 실행 코드에 대한 무결성 검증 동작을 수행할 수 있다.
상기 무결성 검증 장치는 상기 소프트웨어 실행 코드를 상기 시리얼 플래시 메모리의 XIP(eXecute-In-Place) 모드에서 실행하는 MCU(microcontroller unit)를 더 포함 할 수 있다.
실시예에 따르면, 소프트웨어 실행 코드를 일정 크기로 분할하여 블록 단위로 해시를 검증하고, 하나의 블록에서 오류가 검출되면 즉시 시스템을 재부팅함으로써, 검증되지 않은 소프트웨어가 실행되는 시간을 최소화할 수 있다.
도 1은 실시예에 따른 소프트웨어 무결성 검증 장치의 구성을 나타낸 블록도이다.
도 2는 실시예에 따른 소프트웨어의 무결성 검증을 위한 해시 테이블 생성 예시도이다.
도 3은 실시예에 따른 해시 테이블을 이용한 소프트웨어의 무결성 검증 동작을 설명한다.
도 4는 실시예에 따른 소프트웨어의 무결성 검증 동작을 나타낸 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.
본 명세서에서 "전송 또는 제공"은 직접적인 전송 또는 제공하는 것 뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서, 제1, 제2 등과 같이 서수를 포함하는 용어들은 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
본 명세서에서 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
도 1은 실시예에 따른 소프트웨어 무결성 검증 장치의 구성을 나타낸 블록도이고, 도 2는 실시예에 따른 소프트웨어의 무결성 검증을 위한 해시 테이블 생성 예시도이고, 도 3은 실시예에 따른 해시 테이블을 이용한 소프트웨어의 무결성 검증 동작을 설명한다.
먼저, 도 1을 참조하면, 소프트웨어 무결성 검증 장치(100)는 칩(Chip) 내에 포함되며, 소프트웨어 무결성 검증에 관련있는 구성요소 위주로 도시하였다. 소프트웨어 무결성 검증 장치(100)는 MCU(microcontroller unit)(120) 및 하드웨어 보안 모듈(Hardware Security Module, 이하, 'HSM'으로 통칭함)(130)을 포함한다.
MCU(120)는 시리얼 플래시 메모리(111) 및 프로세서(120)를 포함한다.
시리얼 플래시 메모리(111)는 MCU(120)가 적용되는 장치에 필요한 소프트웨어를 저장한다.
프로세서(120)는 시리얼 플래시 메모리(111)로 부트로더를 로드하여 소프트웨어를 실행한다.
이때, 무결성 검증 대상인 소프트웨어는 시리얼 플래시 메모리(111)에서 XIP(Execute In-Place)로 동작한다. XIP는 프로그램 코드를 메인 메모리에 적재하는 과정 없이 비휘발성 메모리에서 직접 실행하는 기술로서, 커널 부팅에서 커널 이미지를 비휘발성 메모리로부터 메인 메모리로 적재하는 과정과, 압축된 커널 이미지를 해제하는 과정과, 압축 해제하는 과정에서 압축 해제되는 커널을 메인 메모리에 쓰는 과정을 생락할 수 있다.
HSM(130)은 시리얼 플래시 메모리(111)에서 XIP로 동작하는 소프트웨어의 무결성을 검증한다.
도 2를 참조하면, 시리얼 플래시 메모리(111)는 XIP 모드에서 실행되는 소프트웨어 실행 코드, 해시 테이블, 해시 테이블의 해시값에 기초하여 생성된 전자 서명값을 저장한다. 소프트웨어 실행 코드, 해시 테이블, 전자 서명값은 외부에서 시리얼 플래시 메모리(111)로 사전에 입력 및 저장될 수 있다.
시리얼 플래시 메모리(111)에 저장된 소프트웨어 실행 코드가 XIP 모드에서 실행되는 경우, 시리얼 플래시 메모리(111)의 낮은 읽기 성능으로 인해 소프트웨어 실행 코드에 대한 무결성 검증을 위해 많은 시간이 소요된다. 이러한 문제점을 방지하기 위해 본 발명의 실시예에서는 소프트웨어 실행 코드를 복수개 블록으로 분할하여 블록 단위로 무결성 검증이 수행되도록 한다. 따라서, 소프트웨어 실행 코드는 복수의 블록으로 분할되는데, 블록의 크기는 동일할 수도 있고, 다를 수도 있다.
해시 테이블은 소프트웨어 실행 코드로부터 분할된 복수의 블록에 대하여 해시 연산을 통해 도출된 각각의 해시값들을 포함한다. 이때, 소프트웨어 실행 코드를 구성하는 복수의 분할 블록의 순서대로 대응하는 해시값들이 순차적으로 해시 테이블로 구성될 수 있다.
전자 서명값은 해시 테이블에 대하여 연산된 해시값을 이용하여 생성된다.
도 3을 참조하면, HSM(130)은 시리얼 플래시 메모리(111)로부터 해시 테이블및 전자 서명값을 로딩한다.
HSM(130)은 로딩한 해시 테이블에 대하여 해시값을 연산한다. HSM(130)은 연산한 해시값과 공개키를 토대로, 로딩한 전자 서명값을 검증한다. 이때, 공개키는 HSM(130)만 접근이 가능한 별도의 메모리에 저장되어 있다.
또한, HSM(130)은 시리얼 플래시 메모리(111)에 저장된 소프트웨어 실행 코드를 분할하고, 분할 블록들에 대한 해시값들을 연산한다.
HSM(130)의 해시값 연산은 공지된 해시 알고리즘을 사용할 수 있는데, 예를들어, SHA(Secure Hash Algorithm) 알고리즘을 사용할 수 있다. 그러나, 이러한 해시 알고리즘에 국한되는 것은 아니다. HSM(130)의 해시값 연산 알고리즘은 시리얼 플래시 메모리(111)에 저장된 해시값들에 사용된 해시 알고리즘과 동일하다.
HSM(130)은 연산한 해시값들을 해시 테이블에 저장된 해시값들과 비교하여 일치 여부를 판단하는 무결성 검증을 수행한다.
이때, 분할 블록들은 일렬로 나열되므로, HSM(130)은 나열된 순서대로 해시값들을 비교한다.
HSM(130)은 첫번째 블록의 해시값이 해시 테이블의 첫번째 블록의 해시값과 불일치하면, 무결성 검증 실패로 판단하고, MCU(110)를 재부팅한다.
HSM(130)은 첫번째 블록의 해시값이 해시 테이블의 첫번째 블록의 해시값과 일치하면, 다음 블록에 대해 무결성 검증을 수행한다. 이와 같이, 블록 단위로 무결성 검증을 수행하다가 해시값이 일치하지 않는 블록이 발생하면, 무결성 검증 실패로 판단하고, MCU(110)를 재부팅한다.
도 4는 실시예에 따른 소프트웨어의 무결성 검증 동작을 나타낸 흐름도이다.
도 4를 참조하면, 부팅이 되면, MCU(110)는 시리얼 플래시 메모리(111)로부터 소프트웨어 실행 코드를 로딩하여 실행한다(S101).
MCU(110)는 HSM(130)에게 검증 요청을 전송한다(S102). 따라서, HSM(130)은 MCU(110)의 소프트웨어 실행 코드 실행과 동시에 소프트웨어 실행 코드에 대한 무결성 검증 동작을 수행한다.
HSM(130)은 시리얼 플래시 메모리(111)에 저장된 해시 테이블을 HSM(130)의 내부 메모리에 로딩(S103)하고, 해시 테이블에 대한 해시값을 계산한다(S104). 해시 연산 속도는 입력 데이터의 크기에 비례한다. 소프트웨어 실행 코드의 크기에 비해 해시 테이블의 크기는 매우 작기 때문에 해시 테이블의 해시를 계산함으로써, 무결성 검증 속도를 빠르게 진행할 수 있다.
또한, MCU(110)와 HSM(130)을 포함하는 칩(Chip)이 부팅하자마다 MCU(110)는 OS와 같은 소프트웨어 실행 코드를 검증없이 실행한다. 따라서, OS에서 HSM(130)으로 어떤 값을 전달하는 것은 신뢰할 수 없다. 예를 들면, OS를 누군가가 조작하면 HSM(130)으로 아무런 값도 전달되지 않도록 할 수 있기 때문이다. 따라서, OS를 검증하는 과정은 MCU(110)와 무관하게 진행되어야 하므로, HSM(130)은 시리얼 플래시 메모리(111)로부터 직접 해시 테이블을 리드(Read)한다.
HSM(130)은 S104에서 계산한 해시 테이블의 해시값과 사전에 저장된 공개키를 이용하여, 시리얼 플래시 메모리(111)로부터 로딩한 전자 서명값을 검증하는 루트 해시 검증의 성공 여부를 판단한다(S105).
HSM(130)은 S105에서 루트 해시 검증 성공으로 판단되면, 시리얼 플래시 메모리(111)의 소프트웨어 실행 코드를 복수개로 분할하고, 분할 블록 중 첫번째 블록을 선정한다(S106).
HSM(130)은 첫번째 블록에 대한 해시값을 계산한다(S107). 앞서 언급한 바와 같이, 해시 연산 속도는 입력 데이터의 크기에 비례하기 때문에 종래처럼 소프트웨어 실행 코드 전체의 해시를 계산하는 것 보다 하나의 블록에 대한 해시를 계산함으로써, 무결성 검증 속도를 빠르게 진행할 수 있다.
HSM(130)은 S107에서 계산한 해시값을 해시 테이블의 첫번째 블록에 대한 해시값과 비교하여 일치 여부를 판단한다(S108).
S108에서 일치하면, HSM(130)은 S107에서 해시값이 계산된 블록이 마지막 블록인지 판단(S109)하고, 마지막 블록이 아니면 다음 블록을 선정한다(S110). 그리고 HSM(130)은 선정(S110)한 블록에 대하여 S107~S109를 수행하기를 반복한다.
S109에서 마지막 블록으로 판단되면, HSM(130)은 모든 블록에 대하여 무결성 검증이 성공으로 처리된 것으로 판단하고, 검증을 완료한다(S111).
반면, S105에서 루트 해시 검증 실패로 판단되거나 또는 S108에서 해시값 검증에 실패하면, HSM(130)은 무결성 검증 실패로 판단하고 시스템을 재부팅한다(S112). 즉, HSM(130)은 MCU(110)에게 재부팅 명령어를 전송하여 MCU(110)를 재부팅시킬 수 있다.
이와 같이, 본 발명의 실시예에 따르면, MCU(110)는 OS(Operating System)와 같은 소프트웨어 실행 코드를 검증없이 일단 실행하고, HSM(130) → 해시 테이블 →소프트웨어 실행 코드로 신뢰 체인을 형성한다. HSM(130)에서 소프트웨어 실행 코드를 바로 검증하지 않고, 해시 테이블을 이용하여 블록 단위로 검증함으로써, 오류를 최대한 빠르게 발견할 수 있다. 종래에는 소프트웨어 실행 코드 전체에 대해 검증 절차를 수행하므로, 첫번째 블록에 오류가 있더라도, 소프트웨어 전체 검증으로 인한 시간이 오래 걸리는 문제점이 있으나, 본 발명의 실시예에서는 이러한 문제점을 해결할 수 있다.
또한, 종래에는 ROM → OS(Operating System) 로더(Loader) → OS의 신뢰 체인을 형성한다. 이러한 신뢰 체인은 ROM에서 OS Loader를 검증하고, OS Loader에서 OS를 검증하는 체인을 의미한다. 그러나 시리얼 플래시 메모리를 사용하는 경우, 시리얼 플래시의 읽기 성능이 낮아 부팅 시간이 길어진다. 이와 달리, 본 발명의 실시예에서는 HSM -> 해시 테이블 -> OS의 신뢰 체인을 통해서 해시 테이블을 검증한다. 그리고 단일 해시를 이용하여 OS를 검증하면 플래시 메모리의 성능으로 인해 검증 시간이 길어지므로, 블록 단위로 검증을 진행한다. 따라서, MCU(110)는 신뢰 체인 없이 소프트웨어 실행 코드(예, OS)를 실행하지만, HSM(130)이 대신 신뢰 체인을 형성하여 소프트웨어 실행 코드를 검증할 수 있다.
또한, 해시 연산 속도는 해시 연산 속도는 입력 데이터의 크기에 비례한다.
소프트웨어 실행 코드 전체에 대해서 해시를 계산하고 검증하는 것은 많은 시간이 소요된다. 해시 테이블의 크기는 소프트웨어 실행 코드에 비해 매우 작다. 따라서 해시를 계산하는 시간이 짧다. 예를 들면, 소프트웨어 크기가 10240 킬로바이트(Kbyte)이고, 해시 알고리즘으로 SHA256을 사용하고 블록 사이즈를 8 Kbyte로 하는 경우, 해시 테이블의 크기는 40KByte = (10240 KByte / 8 KByte) × 32Byte 이다. 이때, SHA256의 해시 크기는 32Byte이다. 따라서, 첫번째 블록에서 오류가 발견하기 위해, 종래 기술은 10240 KByte에 대한 해시를 계산해야 하지만, 본 발명의 실시예에 따르면, 첫번째 블록의 무결성 검증하는데 48KB(=40KB+8KB)의 해시를 계산하면 되므로, 소프트웨어 실행 코드의 오류를 빠르게 발견하고 대응할 수 있다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 하드웨어 보안 모듈이 소프트웨어의 무결성을 검증하는 방법으로서,
    시리얼 플래시 메모리에 저장된 소프트웨어가 실행되면, 상기 시리얼 플래시 메모리로부터 상기 소프트웨어에 대한 해시값들을 저장한 해시 테이블을 획득하여 상기 하드웨어 보안 모듈의 내부 메모리에 로딩하는 단계,
    상기 소프트웨어의 분할 블록 단위로 해시값들을 연산하는 단계,
    분할 블록 순서대로, 각각의 분할 블록에 대하여 연산한 해시값을 상기 해시 테이블에 저장된 대응하는 분할 블록의 해시값과 비교하여 일치 여부를 판단하는 단계, 그리고
    일치하면, 무결성 검증을 종료하고, 불일치하면, 시스템을 재부팅시키는 단계
    를 포함하는, 무결성 검증 방법.
  2. 제1항에서,
    상기 로딩하는 단계와 상기 해시값들을 연산하는 단계 사이에,
    상기 해시 테이블에 대한 해시값을 연산하는 단계,
    상기 시리얼 플래시 메모리로부터 상기 해시 테이블에 대해 연산된 해시값을 독출하는 단계,
    상기 연산한 해시 테이블의 해시값과 상기 독출한 해시 테이블의 해시값을 비교하여 무결성 검증을 수행하고, 상기 무결성 검증에 실패하면 시스템을 재부팅시키는 단계
    를 더 포함하는, 무결성 검증 방법.
  3. 제2항에서,
    상기 재부팅시키는 단계는,
    상기 연산한 해시 테이블의 해시값을 토대로 전자 서명값을 계산하는 단계,
    상기 시리얼 플래시 메모리로부터 상기 해시 테이블의 해시값을 토대로 생성된 전자 서명값을 독출하는 단계, 그리고
    상기 계산한 전자 서명값을 상기 독출한 전자 서명값과 비교하여 불일치하면 무결성 검증 실패로 판단하고, 상기 시스템을 재부팅시키는 단계
    를 포함하는, 무결성 검증 방법.
  4. 제1항에서,
    상기 소프트웨어는,
    시리얼 플래시 메모리에서 XIP(eXecute-In-Place) 모드로 실행되는, 무결성 검증 방법.
  5. 소프트웨어 실행 코드와, 상기 소프트웨어 실행 코드를 복수개로 분할한 복수의 분할 블록에 대한 해시값들을 포함하는 해시 테이블을 저장하는 시리얼 플래시 메모리, 그리고
    상기 소프트웨어 실행 코드가 실행되면, 실행된 소프트웨어 실행 코드를 복수개로 분할하여 분할 블록의 순서대로 분할 블록의 해시값을 연산하고, 연산한 분할 블록의 해시값을 상기 해시 테이블에 저장된 대응하는 분할 블록의 해시값과 비교하여 일치 여부를 판단하는 하드웨어 보안 모듈을 포함하고,
    상기 하드웨어 보안 모듈은,
    상기 연산한 분할 블록의 해시값이 상기 해시 테이블에 저장된 분할 블록의 해시값과 일치하면, 무결성 검증을 완료하고, 불일치하면 시스템을 재부팅시키는, 무결성 검증 장치.
  6. 제5항에서,
    상기 하드웨어 보안 모듈은,
    상기 해시 테이블에 대한 전자 서명값을 생성하고, 상기 시리얼 플래시 메모리에 저장된 전자 서명값을 독출하여,
    생성한 전자 서명값과 상기 독축한 전자 서명값이 불일치하면, 시스템을 재부팅시키고, 일치하면 상기 분할 블록 단위로 해시값 검증을 수행하는, 무결성 검증 장치.
  7. 제6항에서,
    상기 하드웨어 보안 모듈은,
    상기 시리얼 플래시 메모리에 직접 접근하여 상기 시리얼 플래시 메모리에 저장된 해시 테이블과 전자 서명값을 독출하는, 무결성 검증 장치.
  8. 제6항에서,
    상기 전자 서명값은,
    상기 해시 테이블에 대한 해시값을 토대로 생성되는, 무결성 검증 장치.
  9. 제6항에서,
    미검증 상태에서 상기 소프트웨어 실행 코드를 실행하는 MCU(microcontroller unit)를 더 포함하고,
    상기 하드웨어 보안 모듈은,
    상기 MCU의 소프트웨어 실행 코드 실행과 동시에 상기 MCU와 독립적으로 실행된 소프트웨어 실행 코드에 대한 무결성 검증 동작을 수행하는, 무결성 검증 장치.
  10. 제5항에서,
    상기 소프트웨어 실행 코드를 상기 시리얼 플래시 메모리의XIP(eXecute-In-Place) 모드에서 실행하는 MCU(microcontroller unit)
    를 더 포함하는, 무결성 검증 장치.
KR1020210180988A 2021-12-16 2021-12-16 소프트웨어의 무결성 검증 방법 및 그 장치 KR102598510B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210180988A KR102598510B1 (ko) 2021-12-16 2021-12-16 소프트웨어의 무결성 검증 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210180988A KR102598510B1 (ko) 2021-12-16 2021-12-16 소프트웨어의 무결성 검증 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20230091660A true KR20230091660A (ko) 2023-06-23
KR102598510B1 KR102598510B1 (ko) 2023-11-06

Family

ID=86993745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210180988A KR102598510B1 (ko) 2021-12-16 2021-12-16 소프트웨어의 무결성 검증 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102598510B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117193863A (zh) * 2023-09-08 2023-12-08 上海合芯数字科技有限公司 主机引导程序的启动方法、装置、系统和处理器
CN117478175A (zh) * 2023-10-25 2024-01-30 中通服网盈科技有限公司 一种电力通信传输优化系统及运行方法
CN117193863B (zh) * 2023-09-08 2024-05-24 上海合芯数字科技有限公司 主机引导程序的启动方法、装置、系统和处理器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101434860B1 (ko) * 2013-08-16 2014-09-02 (주)잉카엔트웍스 해시를 이용한 동적코드의 무결성 검증 방법
KR20160096391A (ko) * 2015-02-05 2016-08-16 한국전자통신연구원 플랫폼 무결성 검증 기반 단말기 보안 장치 및 방법
KR101699955B1 (ko) * 2015-09-21 2017-01-26 주식회사 텔레칩스 Dram 데이터 변조 자동 탐지 시스템 및 방법
KR20180062882A (ko) * 2016-12-01 2018-06-11 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
KR20210022915A (ko) * 2019-08-21 2021-03-04 한국전자통신연구원 실행코드를 검증하는 하드웨어 보안모듈 및 그것을 갖는 디바이스 및 그것의 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101434860B1 (ko) * 2013-08-16 2014-09-02 (주)잉카엔트웍스 해시를 이용한 동적코드의 무결성 검증 방법
KR20160096391A (ko) * 2015-02-05 2016-08-16 한국전자통신연구원 플랫폼 무결성 검증 기반 단말기 보안 장치 및 방법
KR101699955B1 (ko) * 2015-09-21 2017-01-26 주식회사 텔레칩스 Dram 데이터 변조 자동 탐지 시스템 및 방법
KR20180062882A (ko) * 2016-12-01 2018-06-11 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
KR20210022915A (ko) * 2019-08-21 2021-03-04 한국전자통신연구원 실행코드를 검증하는 하드웨어 보안모듈 및 그것을 갖는 디바이스 및 그것의 동작 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117193863A (zh) * 2023-09-08 2023-12-08 上海合芯数字科技有限公司 主机引导程序的启动方法、装置、系统和处理器
CN117193863B (zh) * 2023-09-08 2024-05-24 上海合芯数字科技有限公司 主机引导程序的启动方法、装置、系统和处理器
CN117478175A (zh) * 2023-10-25 2024-01-30 中通服网盈科技有限公司 一种电力通信传输优化系统及运行方法
CN117478175B (zh) * 2023-10-25 2024-04-30 中通服网盈科技有限公司 一种电力通信传输优化系统及运行方法

Also Published As

Publication number Publication date
KR102598510B1 (ko) 2023-11-06

Similar Documents

Publication Publication Date Title
US9658858B2 (en) Multi-threaded low-level startup for system boot efficiency
US9098300B2 (en) Providing silicon integrated code for a system
US20040255106A1 (en) Recovery of operating system configuration data by firmware of computer system
US11163886B2 (en) Information handling system firmware bit error detection and correction
US11042644B2 (en) Method and system for security verification in a booting process with a multi-core processor
US20100125731A1 (en) Method for securely merging multiple nodes having trusted platform modules
US10776493B2 (en) Secure management and execution of computing code including firmware
US10083084B2 (en) Method of error detecting during a booting process, and a computer system for implementing the same
CN113127011A (zh) 电子设备及电子设备的操作方法
US6591352B2 (en) Method and apparatus for executing firmware from a valid startup block
KR102598510B1 (ko) 소프트웨어의 무결성 검증 방법 및 그 장치
US20230342476A1 (en) Bootloaders
CN113238790B (zh) 基于sd卡和eeprom的固件程序更新方法及系统
US10846421B2 (en) Method for protecting unauthorized data access from a memory
CN112292679A (zh) 密码模块和用于密码模块的运行方法
US20110289591A1 (en) Software Validity Period Changing Apparatus, Method,and Installation Package
TWI743480B (zh) 電腦系統與其開機方法
JP6708596B2 (ja) 電子制御装置及び制御プログラム検証方法
US7490232B2 (en) Disk device using disk to rewrite firmware and firmware determination method
CN112015582B (zh) 自修正存储器系统、提供错误修正至存储器内容的方法
US20230394156A1 (en) Embedded electronic device and boot method thereof
KR20220138639A (ko) 분할 에러 검출을 이용한 데이터 유효성 검사 방법 및 그 장치
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
US20230094673A1 (en) Information handling systems and related methods to prevent tampering and verify the integrity of non-volatile data stored within non-volatile memory
KR20230082388A (ko) 차량 제어기의 부트로더 검증 장치 및 그 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant