KR20230121382A - Semiconductor chip and software security execution method using thereof - Google Patents

Semiconductor chip and software security execution method using thereof Download PDF

Info

Publication number
KR20230121382A
KR20230121382A KR1020220018165A KR20220018165A KR20230121382A KR 20230121382 A KR20230121382 A KR 20230121382A KR 1020220018165 A KR1020220018165 A KR 1020220018165A KR 20220018165 A KR20220018165 A KR 20220018165A KR 20230121382 A KR20230121382 A KR 20230121382A
Authority
KR
South Korea
Prior art keywords
semiconductor chip
code
boot
software
signature
Prior art date
Application number
KR1020220018165A
Other languages
Korean (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 KR1020220018165A priority Critical patent/KR20230121382A/en
Publication of KR20230121382A publication Critical patent/KR20230121382A/en

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/72Protecting 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 in cryptographic circuits
    • 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/73Protecting 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 by creating or determining hardware identification, e.g. serial numbers
    • 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/76Protecting 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 in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]

Abstract

반도체 칩에 있어서, 프로세스 코어, ECDSA(Elliptic Curve Digital Signature Algorithm)를 기초로, 상기 프로세스 코어에 실행되는 소프트웨어의 코드의 서명을 암호화 방식으로 확인하여 인증하는 코드 인증부 및 상기 코드 인증부에 대칭 및 비대칭 암호화 키를 생성하여 배포하는 키 관리부를 포함할 수 있다.In a semiconductor chip, a process core, based on an Elliptic Curve Digital Signature Algorithm (ECDSA), a code authentication unit that cryptographically confirms and authenticates a signature of a software code executed in the process core, and the code authentication unit is symmetrical and A key management unit generating and distributing an asymmetric encryption key may be included.

Description

반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법{SEMICONDUCTOR CHIP AND SOFTWARE SECURITY EXECUTION METHOD USING THEREOF}Semiconductor chip and software security execution method using the same

개시된 발명은 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법에 관한 것으로서, 더욱 상세하게는 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법에 관한 것이다.The disclosed invention relates to a semiconductor chip and a software security execution method using the same, and more particularly, to a semiconductor chip capable of preventing a malicious code from being loaded and executed at an early stage of a booting process before an operating system is loaded, and a software security execution method using the same It is about.

수천 개의 연결된 리소스를 포함한 컴퓨팅 장치를 보호하는 것은 오늘날 주요 과제이다. 시스템의 무결성과 소프트웨어 공급업체의 신뢰성을 보장하기 위해 보안 부팅은 여러 상용 프로세서에서 지원된다. 그러나 기존의 보안 부팅 솔루션은 복잡하거나 가벼운 공격에 의해 보안이 무너졌다.Securing computing devices containing thousands of connected resources is a major challenge today. To ensure system integrity and software vendor reliability, secure boot is supported on many commercial processors. However, existing secure boot solutions have been compromised by complex or light attacks.

부팅은 시스템 무결성이 손상될 수 있는 보안 시스템의 수명 동안 중요한 지점 중 하나이다. 많은 공격은 장치의 전원이 꺼져 있는 동안 소프트웨어를 손상시키며, 예를 들어 OS 커널 이미지를 변조된 이미지로 교체하여 시스템을 취약하게 만드는 공격을 수행하게 된다. 보안 시스템에 적용되는 원칙 중 하나는 첫 번째 부트 로더에서 신뢰할 수 있는 응용 프로그램까지 실행되는 모든 소프트웨어 부분에 대한 신뢰 체인 생성이며, 이는 쉽게 변조될 수 없는 신뢰 루트에서 설정되어야 한다. 따라서 랩톱, 데스크톱, 스마트폰 및 IoT 장치를 포함한 모든 보안 장치는 시스템 무결성을 보장하기 위해 보안 부팅을 구현해야 할 필요가 있다.Booting is one of the critical points in the life of a secure system where system integrity can be compromised. Many attacks compromise software while the device is powered off, for example by replacing the OS kernel image with a compromised image, making the system vulnerable. One of the principles governing secure systems is the creation of a chain of trust for every piece of software that runs, from the first boot loader to the trusted application, which must be established from a root of trust that cannot be easily tampered with. Therefore, all secure devices including laptops, desktops, smartphones and IoT devices need to implement secure boot to ensure system integrity.

보다 상세하게, 소프트웨어 기반 보안 기술에서는 OS(Operation System) 등의 취약점을 이용한 공격이 새로 나올 때마다 이에 대해 지속적으로 보안 업데이트를 해야 했다. 따라서 보안 공격을 방지하기 위해서 하드웨어 모듈 차원의 보안 공격 방지 설계와 운용이 제시되었다. 이러한 하드웨어 모듈 차원의 보안 방법으로, ARM 사의 TrustZone 기술이 사용되고 있다.More specifically, in the software-based security technology, whenever a new attack using a vulnerability such as an OS (Operation System) comes out, it is necessary to continuously update the security. Therefore, in order to prevent security attacks, the design and operation of security attack prevention at the hardware module level were proposed. As a security method at the hardware module level, ARM's TrustZone technology is used.

TrustZone 기술과 같은 하드웨어 기반 보안 기술에서는 부팅 단계에서 OS 이미지의 무결성을 검증 후 읽어 들이기 때문에 플랫폼의 무결성을 시스템 시작 단계에서부터 스탭 바이 스탭으로 보장할 수 있게 된다. 이는 하드웨어가 OS를 비롯한 소프트웨어의 무결성을 검증하는 방식이다. 그러나, 소프트웨어의 시점에서 하드웨어의 무결성을 검증하는 것은 아니다.Hardware-based security technologies such as the TrustZone technology verify and read the integrity of the OS image at the booting stage, so the integrity of the platform can be guaranteed step-by-step from the system startup stage. This is a way for the hardware to verify the integrity of the OS and software. However, it does not verify the integrity of hardware from the point of view of software.

개시된 발명의 일 측면은 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법을 제공하고자 한다.One aspect of the disclosed invention is to provide a semiconductor chip capable of preventing malicious code from being loaded and executed at an early stage of a booting process before an operating system is loaded, and a software security execution method using the same.

개시된 발명의 일 측면에 따른 반도체 칩에 있어서, 프로세스 코어, ECDSA(Elliptic Curve Digital Signature Algorithm)를 기초로, 상기 프로세스 코어에 실행되는 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 코드 인증부 및 상기 코드 인증부에 대칭 및 비대칭 암호화 키를 생성하여 배포하는 키 관리부를 포함할 수 있다.In a semiconductor chip according to an aspect of the disclosed subject matter, a process core, a code authenticator configured to authenticate a signature of a code of software executed in the process core based on an Elliptic Curve Digital Signature Algorithm (ECDSA), and the code The authentication unit may include a key management unit generating and distributing symmetric and asymmetric encryption keys.

상기 프로세스 코어는, 베어 메탈 부트(Bare Metal Boot) 프로그램이 로드된 ROM(160)(Readable Only Memory)를 포함할 수 있다.The process core may include a ROM 160 (Readable Only Memory) loaded with a bare metal boot program.

상기 프로세스 코어는, BBL(Berkeley Boot Loader)를 실행하되, 상기 BBL은, 상기 반도체 칩을 초기화하는 것, 페이지 테이블 및 가상 메모리를 설정하는 것, 커널을 가상 메모리에 로드하고 상기 커널을 부팅하는 것 중 적어도 하나의 동작을 수행할 수 있다.The process core executes a Berkeley Boot Loader (BBL), wherein the BBL initializes the semiconductor chip, sets a page table and virtual memory, loads a kernel into the virtual memory, and boots the kernel. At least one of the operations may be performed.

상기 BBL은, 상기 프로세스 코어에 전기적으로 연결된 외부 스토리지에 상기 커널을 로드할 수 있다.The BBL may load the kernel to an external storage electrically connected to the process core.

상기 코드 인증부는, 상기 베어 메탈 부트의 코드의 서명을 암호화 방식으로 인증하고, 상기 베어 메탈 부트의 코드의 서명이 인증된 것에 응답하여, 상기 BBL의 코드의 서명을 암호화 방식으로 인증할 수 있다.The code authenticator may authenticate the signature of the code of the bare metal boot in an encryption method, and in response to the authentication of the code signature of the bare metal boot, authenticate the code signature of the BBL in an encryption method.

상기 프로세스 코어는, 상기 BBL의 코드의 서명이 인증된 것에 응답하여, 애플리케이션을 실행할 수 있다.The process core may execute an application in response to the verification of the signature of the code of the BBL.

상기 반도체 칩은, 부팅 프로세스의 흐름을 시퀸스하는 부팅 시퀀서를 더 포함할 수 있다.The semiconductor chip may further include a booting sequencer that sequences the flow of a booting process.

상기 부팅 시퀀서는, 상기 코드 인증부의 인증 결과를 수집하고, 상기 부팅 프로세서의 중단 여부를 결정할 수 있다.The booting sequencer may collect authentication results of the code verification unit and determine whether to stop the booting process.

상기 부팅 시퀀서는, 메모리에서 코드를 읽고 SHA3 하드웨어 블록을 사용하여 해시를 계산할 수 있다.The boot sequencer can read code from memory and calculate a hash using the SHA3 hardware block.

상기 키 관리부는, TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리 중 적어도 하나를 포함할 수 있다.The key management unit may include at least one of a True Random Number Generator (TRNG), a Physical Unclonable Function (PUF) 140, a Challenges Storage, and a One-Time Programmable (OTP) memory.

상기 PUF(140)는, 오류 수정 코드(ECC) 인코딩 회로를 포함하여, 신드롬을 계산하고, 챌린지와 함께 메모리에 저장할 수 있다.The PUF 140 may include an error correction code (ECC) encoding circuit to calculate a syndrome and store it in a memory together with a challenge.

개시된 발명의 일 측면에 따른 제1항에 따른 반도체 칩을 이용하여 소프트웨어 보안 실행하는 방법에 있어서, 프로세스 코어에 의해 소프트웨어를 실행하고, 키 관리부에 의해 대칭 및 비대칭 암호화 키를 생성 및 배포하고, 코드 인증부에 의해 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 소프트웨어 보안 실행할 수 있다.A method for executing software security using the semiconductor chip according to claim 1 according to an aspect of the disclosed invention, wherein software is executed by a process core, symmetric and asymmetric encryption keys are generated and distributed by a key management unit, and code Software security may be performed by the authentication unit to authenticate the signature of the software code using an encryption method.

개시된 발명의 일 측면에 따르면, 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법을 제공할 수 있다.According to one aspect of the disclosed invention, it is possible to provide a semiconductor chip capable of preventing malicious code from being loaded and executed at an early booting process before an operating system is loaded, and a software security execution method using the same.

도 1은 일 실시예에 의한 반도체 칩의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.
도 2은 일 실시예에 의한 반도체 칩의 구성을 설명하기 위한 블록도이다.
도 3은 일 실시예에 의한 반도체 칩의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.
도 4는 종래의 부팅 흐름을 설명하기 위한 개념도이다.
도 5는 일 실시예에 의한 반도체 칩을 이용한 부팅 흐름을 설명하기 위한 개념도이다.
도 6은 일 실시예에 의한 반도체 칩을 이용한 소프트웨어 보안 실행 방법을 설명하기 위한 순서도이다.
1 is a diagram for explaining a hardware-based secure booting architecture of a semiconductor chip according to an exemplary embodiment.
2 is a block diagram illustrating a configuration of a semiconductor chip according to an exemplary embodiment.
3 is a diagram for describing a hardware-based secure booting architecture of a semiconductor chip according to an exemplary embodiment.
4 is a conceptual diagram for explaining a conventional booting flow.
5 is a conceptual diagram illustrating a booting flow using a semiconductor chip according to an exemplary embodiment.
6 is a flowchart illustrating a software security execution method using a semiconductor chip, according to an exemplary embodiment.

명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭한다. 본 명세서가 실시예들의 모든 요소들을 설명하는 것은 아니며, 개시된 발명이 속하는 기술분야에서 일반적인 내용 또는 실시예들 간에 중복되는 내용은 생략한다. 명세서에서 사용되는 '부, 모듈, 부재, 블록'이라는 용어는 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예들에 따라 복수의 '부, 모듈, 부재, 블록'이 하나의 구성요소로 구현되거나, 하나의 '부, 모듈, 부재, 블록'이 복수의 구성요소들을 포함하는 것도 가능하다.Like reference numbers designate like elements throughout the specification. This specification does not describe all elements of the embodiments, and general content or overlapping content between the embodiments in the technical field to which the disclosed invention belongs is omitted. The term 'unit, module, member, or block' used in the specification may be implemented as software or hardware, and according to embodiments, a plurality of 'units, modules, members, or blocks' may be implemented as one component, It is also possible that one 'part, module, member, block' includes a plurality of components.

명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 간접적으로 연결되어 있는 경우를 포함하고, 간접적인 연결은 무선 통신망을 통해 연결되는 것을 포함한다.Throughout the specification, when a part is said to be "connected" to another part, this includes not only the case of being directly connected but also the case of being indirectly connected, and indirect connection includes being connected through a wireless communication network. do.

또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.In addition, when a certain component is said to "include", this means that it may further include other components without excluding other components unless otherwise stated.

명세서 전체에서, 어떤 부재가 다른 부재 "상에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.Throughout the specification, when a member is said to be located “on” another member, this includes not only a case where a member is in contact with another member, but also a case where another member exists between the two members.

제 1, 제 2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위해 사용되는 것으로, 구성요소가 전술된 용어들에 의해 제한되는 것은 아니다. Terms such as first and second are used to distinguish one component from another, and the components are not limited by the aforementioned terms.

단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함한다.Expressions in the singular number include plural expressions unless the context clearly dictates otherwise.

각 단계들에 있어 식별부호는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 실시될 수 있다.In each step, the identification code is used for convenience of description, and the identification code does not explain the order of each step, and each step may be performed in a different order from the specified order unless a specific order is clearly described in context. there is.

위에서 언급한 바와 같이 하드웨어 기반의 보안 기술 중 secure booting과 같은 절차로 하드웨어가 소프트웨어의 무결성을 검증하는 기술이 보편적이다. 만약 스마트폰이나 핸드헬드 디바이스의 OS가 무결한 이미지가 아니라 손상되거나 해킹 등으로 보안 기능이 변조된 것이 발견되는 경우, 하드웨어가 이를 부팅 단계에서 발견하거나, 및/또는 특정 어플리케이션의 시행 단계에서 발견하여 보안 위험을 막는 것 등이다. 해커에 의해 변조된 OS가 설치된 스마트폰에서 모바일 뱅킹이나 패이먼트 어플리케이션을 실행할 때 해킹된 OS가 아닌지 검증하여 절차 진행이 중지되는 것과 같은 일은 이제 흔하다.As mentioned above, among hardware-based security technologies, a technology in which hardware verifies the integrity of software through a procedure such as secure booting is common. If the OS of a smartphone or handheld device is not a flawless image, but is damaged or its security features have been tampered with by hacking, the hardware detects it at the booting stage and/or at the execution stage of a specific application. such as preventing security risks. When running a mobile banking or payment application on a smartphone with an OS modified by hackers, it is now common to verify that the OS is not hacked and the process is stopped.

그런데 반대로 OS나 어플리케이션 소프트웨어가 하드웨어를 인증하는 것은 제시된 바 없다. 요즈음과 같이 스마트폰의 모바일 OS부터, 전자 장비의 펌웨어, 임베디드 소프트웨어 및 각종 어플리케이션이 온-에어 배포(distribution on air)되는 경우, 개발자 또는 매뉴팩처 입장에서 이들이 설치되어 운용될 장비가 정품이고 변조/손상되지 않은 무결한 것임을 보장받는 것은 충분히 필요한 기술이다. 이하에서 제시되는 여러 실시예들에서는, 불법 모조 하드웨어, 계약에 의한 사용 기간이 만료된 하드웨어, 원래의 기기에서는 보안에 의해 막혀 있는 기능이나 정보에 접근하기 위해 변조된 하드웨어 등을 방지하기 위해 소프트웨어 스스로 하드웨어를 인증하는 기술이 제시된다. 물론 하드웨어가 소프트웨어를 인증하는 내용을 함께 포함하므로, 이러한 면에서는 하드웨어와 소프트웨어의 상호 인증을 통한 안전성이 보장되는 시스템으로 이해되어도 좋다.Conversely, however, it has not been proposed that the OS or application software authenticate the hardware. As in these days, when the mobile OS of a smartphone, firmware of electronic equipment, embedded software, and various applications are distributed on-air, from the developer or manufacturer's point of view, the equipment to be installed and operated is genuine and tampered / damaged It is a sufficiently necessary skill to be guaranteed to be flawless. In the various embodiments presented below, the software itself is designed to prevent illegal imitation hardware, hardware whose use period has expired, hardware modified to access functions or information blocked by security in the original device, and the like. A technique for authenticating hardware is presented. Of course, since hardware includes content for authenticating software, in this respect, it may be understood as a system in which safety is guaranteed through mutual authentication of hardware and software.

이하의 실시예에서는 시스템 온 칩 레벨의 장치에서 하드웨어와 소프트웨어의 상호 인증 기술이 예시적으로 설명되나, 반드시 이러한 예에 국한되는 것은 아니다. 따라서 핸드 핼드 장비의 하드웨어와 그 OS 또는 펌웨어의 상호 인증, 나아가 자동차나 항공기와 그 운영 소프트웨어의 상호 인증 등 발명의 사상을 벗어나지 않는 범위에서의 유사한 응용은 얼마든지 있을 수 있다.In the following embodiments, a mutual authentication technology of hardware and software in a system-on-chip level device is illustratively described, but is not necessarily limited to this example. Therefore, there may be any number of similar applications without departing from the spirit of the invention, such as mutual authentication between hardware of handheld equipment and its OS or firmware, and furthermore, mutual authentication between automobiles or aircraft and their operating software.

한편, 이하에서는 본 발명의 이해를 돕기 위하여, 본 발명의 주요 개념을 설명하도록 한다. 보다 상세하게, 보안 부팅 및 디지털 서명에 대하여 설명한다.Meanwhile, in order to help understanding of the present invention, the main concept of the present invention will be described below. In more detail, secure booting and digital signatures are described.

보안 부팅과 관련해서, 부팅 프로세스의 모든 단계는 다음 단계의 무결성을 확인한다. 보안 부팅은 버전 2.2부터 UEFI(Unified Extensible Firmware Interface) 사양을 참조하면 이해할 수 있다. UEFI 보안 부팅은 해시를 계산하고 그 결과를 암호화 서명과 비교하여 부팅 프로세스의 각 단계의 무결성을 확인할 수 있다.Regarding secure boot, every step in the boot process verifies the integrity of the next step. Secure boot can be understood by referring to the Unified Extensible Firmware Interface (UEFI) specification, starting with version 2.2. UEFI secure boot can verify the integrity of each step in the boot process by calculating hashes and comparing the result to cryptographic signatures.

서명을 확인할 수 있도록 부팅 시 신뢰할 수 있는 공개 키의 키 데이터베이스에 액세스할 수 있어야 하며, 보안 부팅에서 무결성 검사가 실패하면 부팅이 중단될 수 있다. 부팅 프로세스가 성공하면 시스템은 신뢰할 수 있는 상태에서 실행될 것으로 높은 신뢰도를 가지고 예상할 수 있다.You need to have access to the key database of trusted public keys at boot time to be able to verify signatures, and if secure boot fails the integrity check, booting can be aborted. If the boot process succeeds, the system can be expected with high confidence to run in a trusted state.

신뢰할 수 있는 부팅, 검증된 부팅, 인증된 부팅, 인증된 부팅 또는 측정된 부팅과 같은 무결성 검사 프로세스를 설명하는 보안 부팅의 추가 용어 및 변형은 상용 제품 및 일부 연구 기사에서도 모두 다른 의미를 내포하고 있다. 예를 들어 인텔 프로세서는 측정 모드와 검증 모드의 두 가지 모드에서 보안 부팅을 지원할 수 있다. 예시적으로, 두 모드 모두에서 프로세서 코어의 마이크로 코드는 부팅 순서에 대한 신뢰의 루트일 수 있다. 측정 모드에서 TPM(신뢰할 수 있는 플랫폼 모듈)은 측정값을 저장하고 증명하는 역할을 하는 반면, 검증 모드에서는 각 구성 요소에 제조업체가 서명하고 구성 요소를 로드하기 전에 이러한 서명을 확인할 수 있다.Additional terms and variants of Secure Boot describing the integrity checking process, such as Trusted Boot, Verified Boot, Verified Boot, Verified Boot, or Measured Boot, both in commercial products and in some research articles, have different meanings. . For example, Intel processors can support secure boot in two modes: measurement mode and verification mode. Illustratively, in both modes, the processor core's microcode may be the root of trust for the boot sequence. In measurement mode, the Trusted Platform Module (TPM) is responsible for storing and attesting measurements, while in verification mode, each component is signed by the manufacturer and these signatures can be verified before loading the component.

다른 실시예로, 보안 부팅 메커니즘의 신뢰 루트가 전용 보안 프로세서 내부에 통합된 변경할 수 없는 하드웨어에 구축될 수 있다. 예를 들어 HVB(Hardware Validated Boot)는 ROM(160)(Read only Momory)에 대한 신뢰를 기반으로 하는 AMD 고유의 보안 부팅 형식이다. ROM(160)은 나중에 시스템 플래시에서 가져온 더 큰 프로세서 펌웨어를 확인하는 데 사용되는 보안 부팅 키를 확인할 수 있다.In another embodiment, the secure boot mechanism's root of trust may be built into immutable hardware integrated inside a dedicated secure processor. For example, Hardware Validated Boot (HVB) is AMD's proprietary secure boot format based on trust in read only memory (ROM 160). ROM 160 may verify a secure boot key that is later used to verify larger processor firmware fetched from the system flash.

디지털 서명 기반 인증은 대부분의 웹 브라우저(SSL용) 및 이메일 패키지에서 사용될 수 있다. 모든 공개 키 암호화 시스템은 해결하기 어려운 특정 수학적 문제를 기반으로 하는 보안을 가지고 있다. 예를 들어, RSA는 정수 인수분해의 어려움에 기반한 보안을 가지고 있다. 이와 유사하게, 타원 곡선 암호화(ECC)는 타원 곡선 이산 로그 문제(ECDLP)를 기반으로 하는 보안을 가지고 있다.Digital signature based authentication can be used in most web browsers (for SSL) and email packages. All public-key cryptosystems have security based on certain difficult-to-solve mathematical problems. For example, RSA has security based on the difficulty of integer factorization. Similarly, elliptic curve cryptography (ECC) has a security based on the elliptic curve discrete logarithm problem (ECDLP).

타원 곡선을 사용하는 가장 널리 사용되는 서명 방식은 ECDSA(Elliptic Curve Digital Signature Algorithm), 가장 널리 사용되는 암호화 방식은 ECIES(Elliptic Curve Integrated Encryption Scheme), 가장 널리 사용되는 키 합의 방식은 Elliptic Curve Diffie- Hellman(ECDH)일 수 있다.The most popular signature method using an elliptic curve is the Elliptic Curve Digital Signature Algorithm (ECDSA), the most popular encryption method is the Elliptic Curve Integrated Encryption Scheme (ECIES), and the most popular key agreement method is the Elliptic Curve Diffie- Hellman (ECDH).

디지털 서명에 대한 NIST 표준은 프라임 필드를 사용하거나 타원 곡선에 이진 확장 필드를 사용할 것을 권장한다. 이진 확장 필드는 필드 추가가 XOR 연산으로 수행될 수 있으므로 캐리가 포함되지 않는다는 이점이 있다. 이것은 더 적은 용량을 필요로 하고 더 나은 성능을 갖는 구현으로 이어질 수 있다.The NIST standard for digital signatures recommends using prime fields, or binary extended fields for elliptic curves. Binary extended fields have the advantage that no carry is involved since field addition can be done with an XOR operation. This may lead to implementations that require less capacity and have better performance.

SECG(Standards for Efficient Cryptography Group)는 온라인 암호화폐 비트코인에서 사용되는 Koblitz 곡선 secp256k1을 정의한다. NIST 곡선은 더 널리 사용되며 다른 SECG 곡선보다 더 정밀한 것을 특징으로 한다.The Standards for Efficient Cryptography Group (SECG) defines the Koblitz curve secp256k1 used in the online cryptocurrency Bitcoin. NIST curves are more widely used and are characterized as more precise than other SECG curves.

이하 첨부된 도면들을 참고하여 개시된 발명의 작용 원리 및 실시예들에 대해 설명한다.Hereinafter, the working principle and embodiments of the disclosed invention will be described with reference to the accompanying drawings.

도 1은 본원의 일 실시예에 의한 반도체 칩(100)의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.1 is a diagram for explaining a hardware-based secure booting architecture of a semiconductor chip 100 according to an exemplary embodiment of the present disclosure.

도 1을 참조하면, 본원의 일 실시예에 의한 반도체 칩(100)은, 첫 번째 부트 로더에서 시작하여 애플리케이션까지 신뢰 체인의 무결성을 확인하는 코드 인증부(120)를 이해할 수 있다. 코드 인증부(120)(Code Authentication Unit, CAU)는 ECDSA(Elliptic Curve Digital Signature Algorithm) 및 보안 해시 알고리즘(SHA3)을 수행할 수 있다. ECDSA를 사용하면 비대칭 키 생성 및 관리를 위한 PUF(140)(Physical Unclonable)를 보다 쉽게 통합할 수 있으며, 이는 키 관리부(130)(Key Management Unit, KMU)를 사용하여 구현될 수 있다. 또한 코드 인증부(120)는 빠른 코드 읽기 및 인증을 위해 DMA(직접 메모리 액세스)를 사용할 수 있다.Referring to FIG. 1 , the semiconductor chip 100 according to an exemplary embodiment of the present disclosure can understand the code authenticator 120 that checks the integrity of the trust chain starting from the first boot loader to the application. The code authentication unit 120 (Code Authentication Unit, CAU) may perform an Elliptic Curve Digital Signature Algorithm (ECDSA) and a secure hash algorithm (SHA3). ECDSA makes it easier to integrate a Physical Unclonable (PUF) 140 for asymmetric key generation and management, which can be implemented using a Key Management Unit (KMU). Also, the code verification unit 120 may use DMA (Direct Memory Access) for quick code reading and verification.

본원의 일 실시예에 의한 반도체 칩(100)은, 소프트웨어 공급업체의 시스템 무결성과 신뢰성을 보장하는 보안 부팅을 위한 새로운 경량 아키텍처를 제공할 수 있다. 또한, 반도체 칩(100)은, 최적화된 PUF(140)(Physical Unclonable Function)을 사용하는 키 관리부(130)를 포함하는 프레임워크를 수행할 수 있다. 또한, 코드 인증부(120)를 RISC-V SoC(반도체 칩(100))에 통합할 수 있다.The semiconductor chip 100 according to an embodiment of the present disclosure may provide a novel lightweight architecture for secure booting that guarantees system integrity and reliability of a software supplier. In addition, the semiconductor chip 100 may perform a framework including the key management unit 130 using an optimized PUF 140 (Physical Unclonable Function). In addition, the code authentication unit 120 can be integrated into the RISC-V SoC (semiconductor chip 100).

도 2는 본원의 일 실시예에 의한 반도체 칩(100)의 구성을 설명하기 위한 블록도이다.2 is a block diagram illustrating a configuration of a semiconductor chip 100 according to an exemplary embodiment of the present disclosure.

도 2를 참조하면, 반도체 칩(100)은, 프로세스 코어(110), 코드 인증부(120), 키 관리부(130), PUF(140), 부팅 시퀀서(150) 및 ROM(160)을 포함할 수 있다.Referring to FIG. 2 , the semiconductor chip 100 may include a process core 110, a code authenticator 120, a key management unit 130, a PUF 140, a boot sequencer 150, and a ROM 160. can

프로세스 코어(110)는, 예를 들어, RISC-V 프로세서의 코어일 수 있다. 예시적으로, 프로세서 코어(110)는, 소프트웨어를 실행할 수 있다. 보다 구체적으로 , 소프트웨어는, 베어 메탈 부트(Bare Metal Boot) 프로그램 및/또는 BBL(Berkely Boot Loader) 프로그램을 포함할 수 있다.Process core 110 may be, for example, a core of a RISC-V processor. Illustratively, the processor core 110 may execute software. More specifically, the software may include a bare metal boot program and/or a Berkely Boot Loader (BBL) program.

RISC-V에 대한 주요 부트 로딩 절차 지침은 SoC의 실제 부트 로더인 BBL(Berkeley Boot Loader)에 정의되어 있다. BBL은 모든 주변 장치 초기화, 페이지 테이블 및 가상 메모리 설정, 선택한 커널(Linux)을 가상 메모리에 로드하고 최종적으로 커널을 부팅하는 등의 여러 기능을 수행할 수 있다.The main boot loading procedure instructions for RISC-V are defined in the Berkeley Boot Loader (BBL), the SoC's actual boot loader. BBL can perform several functions, such as initializing all peripherals, setting up page tables and virtual memory, loading a selected kernel (Linux) into virtual memory, and finally booting the kernel.

전체 부팅 흐름은 여러 단계로 구분되어 수행될 수 있다. 반도체 칩(100)에는 베어메탈 부트(C 프로그램)가 로드된 스토리지 ROM(160)이 포함될 수 있다. 이 부트 프로그램은 실제 부트로더인 BBL을 로드하는 데 필요할 수 있다. 다음으로 2단계에서는 BBL을 DDR RAM으로 복사/이동하는 작업이 포함될 수 있다. BBL의 용량은 사실 온칩 부트 ROM(160)보다 클 수 있다. 이에 따라서 RISC-V의 최근 개발에서는 이 프로세스를 용이하게 하기 위해 사용할 수 있는 두 가지 옵션을 채택할 수 있다. 예시적으로, SD-Boot에서, BBL은 프로세스 코어(110)에 외부적으로 연결된 외부 스토리지에서 커널을 로드할 수 있다. 또한, Ether-boot에서, 베어 메탈 부트 로더는 네트워크에 있는 자신의 존재를 수신 ARP 쿼리에 알릴 수 있다.The entire boot flow can be broken down into several steps. The semiconductor chip 100 may include a storage ROM 160 loaded with a bare metal boot (C program). This boot program may be needed to load the actual bootloader, BBL. Next, step 2 may involve copying/moving the BBL into DDR RAM. The capacity of the BBL may in fact be larger than the on-chip boot ROM 160. Accordingly, recent developments in RISC-V can employ two options available to facilitate this process. Illustratively, in SD-Boot, the BBL may load a kernel from external storage connected externally to the process core 110. Also, in Ether-boot, the bare metal bootloader can advertise its presence on the network to incoming ARP queries.

이를 통해 로드된 프로그램은 커널(예: Linux)을 선택하여 BBL을 포함하는 ELF 파일이 될 수 있다. 한편, 두 번째 옵션에서 ELF 파일( BBL+ 커널)은 네트워크를 통해 보내기 전에 UDP 패킷으로 분할될 수 있다. Programs loaded through this can choose a kernel (e.g. Linux) to be an ELF file containing a BBL. On the other hand, in the second option, the ELF file (BBL+ kernel) can be split into UDP packets before sending over the network.

최종 단계 3은 머신 모드에서 BBL을 시작하고 머신 모드 트랩 벡터를 설정하고 커널 실행을 진행하는 것을 포함할 수 있다.Final step 3 may include starting the BBL in machine mode, setting the machine mode trap vector and proceeding with kernel execution.

코드 인증부(120)는, 하드웨어 구성 요소로서, ECDSA(타원 곡선 디지털 서명 알고리즘)를 사용하여 프로세서에서 실행될 각 신뢰할 수 있는 코드의 서명을 암호화 방식으로 확인하여 인증할 수 있다. 코드 인증부(120)는 처음 부팅부터 응용 프로그램까지 실행할 각 소프트웨어 코드를 확인하여 인증할 수 있다. 이러한 메커니즘은 무단 또는 수정된 코드가 보안 SoC에서 실행되는 것을 효과적으로 방지할 수 있다.The code verification unit 120, as a hardware component, may cryptographically verify and authenticate the signature of each trusted code to be executed in the processor using an elliptic curve digital signature algorithm (ECDSA). The code authentication unit 120 may verify and authenticate each software code to be executed from initial booting to an application program. These mechanisms can effectively prevent unauthorized or modified code from running on the secure SoC.

최근 RISC-V 개발은 재구성 가능한 메모리 매핑(고정 메모리 맵 대신)을 사용할 수 있다. 여기서 주소는 주변기기 사용자 지정을 위한 빌드 명령에 따라 자동으로 생성할 수 있다. 이 접근 방식은 주소 경계를 넘는 것을 방지하기 위해 시작 주소의 올바른 정렬을 보장하므로 더 유리할 수 있다.Recent RISC-V developments may use reconfigurable memory mapping (instead of a fixed memory map). Here, the address can be automatically generated according to the build command for peripheral customization. This approach can be more advantageous as it ensures correct alignment of the starting address to prevent crossing the address boundary.

최종 메모리 맵(예를 들어, 구성 문자열이라고 함)이 사용되며 C-프로그램(및 기타 하드웨어 모듈)에 자동으로 연결될 수 있다. 따라서 하드 코딩된 명령 ROM(160)은 점프 명령, 재설정 벡터 및 구성 문자열로 구성될 수 있다. 이 코드 조각은 서명되고 서명은 코드 줄 끝에 추가될 수 있다.The final memory map (called a configuration string, for example) is used and can be automatically linked to C-programs (and other hardware modules). Thus, hard-coded instruction ROM 160 may consist of jump instructions, reset vectors, and configuration strings. This piece of code is signed and the signature can be appended to the end of the line of code.

ROM(160)은 메모리 주소 0x10000에 매핑되며 이 주소 중 첫 번째 데이터 코드 인증부(120)가 서명 확인을 수행하기 시작할 것임을 표시할 수 있다. 얻은 값은 코드 끝에 추가된 서명과 일치할 수 있다. 긍정적인 일치 결과는 다음 부팅 단계로 이어질 수 있다. 그렇지 않으면 소프트웨어 실행이 일시 중단될 수 있다.ROM 160 is mapped to memory address 0x10000, and the first of these addresses may indicate that data code authenticator 120 will start performing signature verification. The value obtained can match the signature appended to the end of the code. A positive match result can lead to the next boot step. Otherwise, software execution may be suspended.

키 관리부(130)는, 대칭 및 비대칭 암호화 키의 생성 및 배포를 담당할 수있다. TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리로 구성될 수 있다.The key management unit 130 may be responsible for generating and distributing symmetric and asymmetric encryption keys. It can be composed of TRNG (True Random Number Generator), PUF (140) (Physical Unclonable Function), Challenges Storage, and OTP (One-Time Programmable) memory.

TRNG는 대칭 키 챌린지에 대한 임의의 챌린지를 생성하고 챌린지는 해당 ID와 함께 저장소에 저장될 수 있다. 특정 키를 검색하기 위해 PUF(140)에 챌린지가 입력되고 키로 사용되는 응답이 출력될 수 있다. 이러한 대칭 키는 메모리 보호 장치(메모리 암호화 및 무결성) 및 보안 디버그 장치와 같은 SoC 내부 보안 블록의 일부에서 사용될 수 있다.The TRNG creates a random challenge for the symmetric key challenge, and the challenge can be stored with its ID in storage. A challenge may be input to the PUF 140 to search for a specific key, and a response used as the key may be output. These symmetric keys can be used in some of the SoC's internal security blocks, such as memory protection units (memory encryption and integrity) and secure debug units.

코드 인증부(120)는 공개 키 알고리즘에 필요한 비대칭 키를 사용할 수 있다. 공개 키는 OTP 메모리를 사용하여 키 관리부(130)에 융합될 수 있다.The code authentication unit 120 may use an asymmetric key required for a public key algorithm. The public key may be fused to the key management unit 130 using the OTP memory.

PUF(Physical unclonable function)(140)는 칩의 전원이 켜져 있을 때만 존재하는 반도체 제조 변형에서 휘발성 비밀 키를 추출할 수 있다. 보안 프로세서 설정에서 PUF(140) 생성 키의 문서화된 최초 사용은 AEGIS 프로세서에서 였다.Physical unclonable function (PUF) 140 can extract volatile secret keys from semiconductor manufacturing variants that only exist when the chip is powered on. The first documented use of a PUF 140 generated key in a secure processor setup was in an AEGIS processor.

PUF(140)는 암호화 프로토콜을 통해 클라이언트와 공유되는 대칭 키를 생성하는 데 사용될 수 있다. PUF(140)는 Xilinx FPGA 및 Intel FPGA와 같은 상용 제품에서 대칭 키 생성기로 사용될 수 있다. PKA(공개 키 알고리즘)의 경우 PUF(140)를 사용하여 보안 프로세서 내부의 비대칭(공개/개인) 키 생성기에 대한 임의 시드를 생성할 수 있다.PUF 140 may be used to generate a symmetric key that is shared with clients via a cryptographic protocol. PUF 140 can be used as a symmetric key generator in commercial products such as Xilinx FPGAs and Intel FPGAs. In the case of a public key algorithm (PKA), the PUF 140 can be used to generate a random seed for an asymmetric (public/private) key generator inside the secure processor.

PUF(140)가 오류 수정 코드에서 보안 키를 파생하는 데는 키 초기화 및 재생성이라는 두 가지 주요 단계가 있다. 첫 번째 단계에서는 오류 수정 코드(ECC) 인코딩 회로를 통해 PUF(140)에서 신드롬을 계산하고 챌린지와 쌍으로 메모리에 저장할 수 있다. 이것은 PUF(140) 응답에서 발견된 오류를 수정하는 데 사용될 수 있다. 다음으로, PUF(140)로부터 잡음이 있는 응답이 취해지고 해당 신드롬(특정 챌린지에 대한)이 ECC 디코더로 전송될 수 있다. 저장된 신드롬의 도움으로 ECC는 PUF(140) 응답에서 발생한 오류를 수정할 수 있다.There are two main steps for PUF 140 to derive a security key from an error correcting code: key initialization and regeneration. In a first step, a syndrome may be calculated in the PUF 140 through an error correction code (ECC) encoding circuit and stored in memory in pairs with a challenge. This may be used to correct errors found in the PUF 140 response. Next, a noisy response is taken from the PUF 140 and the corresponding syndrome (for the specific challenge) can be sent to the ECC decoder. With the help of the stored syndrome, the ECC can correct errors generated in the PUF 140 response.

PUF(140)는, 전압 및 온도의 변화로 인해 오류가 발생할 수 있다. 보다 구체적으로, 이 설계는 7비트 메시지를 15비트 코드(8비트 신드롬이 있는 7비트 메시지)로 인코딩하고 임의의 위치에서 최대 2개의 오류를 수정할 수 있는 오류 수정 코드로 BCH를 사용할 수 있다.An error may occur in the PUF 140 due to changes in voltage and temperature. More specifically, this design can encode a 7-bit message into a 15-bit code (7-bit message with 8-bit syndrome) and use BCH as an error-correcting code that can correct up to two errors at any position.

부팅 시퀀서(150)는, 반도체 칩(100)의 부팅 프로세스의 흐름을 시퀀스하는 FSM(Finite State Machine)일 수 있다. 부팅 시퀸서(150)는, 부팅의 새 단계가 실행될 때마다 호출될 수 있다. 부팅 시퀸서(150)는 키 관리부(130)와 통신하여 관련 키를 코드 인증부(120)에 보낼 수 있다. 그 후 부팅 시퀸서(150)는, 코드 인증부(120)에게 메모리에서 해당 코드를 읽고 ECDSA를 사용하여 서명을 인증하도록 요청할 수 있다.The boot sequencer 150 may be a finite state machine (FSM) that sequences the flow of the boot process of the semiconductor chip 100 . Boot sequencer 150 may be called whenever a new phase of booting is executed. The boot sequencer 150 may communicate with the key management unit 130 and send a related key to the code authentication unit 120 . After that, the boot sequencer 150 may request the code verification unit 120 to read the corresponding code from the memory and authenticate the signature using ECDSA.

부팅 시퀸서(150)는 인증 결과(통과 또는 실패)를 수집하고 이를 기반으로 부팅 시퀀스를 계속할지 아니면 중단할지를 결정할 수 있다. 현재 구현에서 부팅 시퀸서(150)는 하드웨어 상태 머신이지만 향후 버전에서는 더 나은 프로그래밍 가능성과 패치 가능성을 위해 소형 마이크로 컨트롤러로 대체될 수 있다. 다만, 이에 한정되는 것은 아니다.The boot sequencer 150 may collect authentication results (pass or fail) and determine whether to continue or stop the boot sequence based on this. In the current implementation, boot sequencer 150 is a hardware state machine, but in future versions it may be replaced by a small microcontroller for better programmability and patchability. However, it is not limited thereto.

도 3은 본원의 일 실시예에 의한 반도체 칩(100)의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.3 is a diagram for explaining a hardware-based secure booting architecture of the semiconductor chip 100 according to an exemplary embodiment of the present disclosure.

도 3을 참조하면, 키 관리부(130)는 코드 인증부(120), 보안 디버그 및 메모리 보호 장치와 같은 다양한 보안 블록에 키를 생성하고 배포할 수 있다.Referring to FIG. 3 , the key management unit 130 may generate and distribute keys to various security blocks, such as the code authentication unit 120, security debug and memory protection devices.

코드 인증부(120)는, 이미지 해킹, 봇넷 등록 및 콜드 부트 공격과 같은 공격으로부터 하드웨어를 보호할 수 있다. 보안 부팅은 코드 인증부(120)(Code Authentication Unit) 및 부팅 시퀸서(150)를 사용하여 구현될 수 있다.The code authenticator 120 may protect hardware from attacks such as image hacking, botnet registration, and cold boot attacks. Secure booting may be implemented using a code authentication unit 120 and a boot sequencer 150 .

보안 디버그(31)는, 키추출, 불법 디버깅, 프로빙(Probing) 및 SCA(Side Channel Attacks)와 같은 다양한 하드웨어 위협으로부터 보호할 수 있다.The secure debug 31 can protect against various hardware threats such as key extraction, illegal debugging, probing and SCA (Side Channel Attacks).

TEE(신뢰할 수 있는 실행 환경)는 신뢰할 수 있는 응용 프로그램에 대한 격리된 실행 환경을 보장하며, 이 기능은 소프트웨어 악용, 권한 상승 및 봇넷 등록과 같은 공격으로부터 보호하는 데 필수적일 수 있다. 이에 따라 로켓 코어(32)(Rocket Core)는, 이러한 TEE 환경을 제공할 수 있다.A Trusted Execution Environment (TEE) ensures an isolated execution environment for trusted applications, and this feature can be essential to protect against attacks such as software exploitation, privilege escalation, and botnet registrations. Accordingly, the rocket core 32 (Rocket Core) can provide such a TEE environment.

신뢰할 수 있는 오프칩 메모리는 SCA(Side-Channel Attacks), 프로빙 및 주 메모리에서 키 추출을 방지하는 필수 기능일 수 있다. 이에 따라서, 메모리 보호부(33)(Memory Protection Unit, MPU) 또한 TEE에서 신뢰할 수 있는 응용 프로그램을 로드하고 실행하는 데 사용하므로 실행 중인 응용 프로그램의 코드와 데이터를 보호할 수 있다. 이 백서에서는 보안 RISC-V SoC에서 보안 부팅을 제공하는 데 중요한 역할을 하는 코드 인증부(120)(코드 인증부(120))와 키 관리부(130)(키 관리부(130))라는 두 가지 주요 설계가 핵심일 수 있다..Trusted off-chip memory can be an essential feature to prevent Side-Channel Attacks (SCA), probing, and key extraction from main memory. Accordingly, since the memory protection unit 33 (Memory Protection Unit, MPU) is also used to load and execute a trusted application program in the TEE, the code and data of the running application program can be protected. In this white paper, two main factors, code authentication unit 120 (code authentication unit 120) and key management unit 130 (key management unit 130), play an important role in providing secure boot in secure RISC-V SoCs. Design can be key.

반도체 칩(100)은 부팅 시퀀스(150)의 초기 단계에서 신뢰 체인을 설정해야 하며 OS 및 애플리케이션이 실행되는 동안 유지되어야 할 수 있다. 체인은 변경할 수 없는 부트로더가 ROM(160)(읽기 전용 메모리)에서 실행되는 첫 번째 단계에서 시작될 수 있다. 이 부트로더는 체인에서 두 번째 단계 부트로더의 서명을 암호 방식으로 확인한 다음, 이 후속 부트로더는 다음 소프트웨어 이미지 등의 서명을 다시 암호 방식으로 인증할 수 있다. 체인 끝에서 신뢰할 수 있는 애플리케이션은 SoC의 TEE(신뢰할 수 있는 실행 환경)에서 실행되기 전에 확인될 수 있다.In the semiconductor chip 100 , a trust chain must be established at an early stage of the booting sequence 150 and may be maintained while the OS and applications are executed. The chain may begin with the first step where an immutable bootloader runs in ROM 160 (read-only memory). This bootloader can cryptographically verify the signature of the second stage bootloader in the chain, and then this subsequent bootloader can cryptographically verify the signature of the next software image, etc. At the end of the chain, trusted applications can be verified before running in the SoC's Trusted Execution Environment (TEE).

반도체 칩(100)의 부팅 프로세스는 하드 코딩된 명령(uncore /src/main/scala /ROM(160).scala에 있는 ROM(160) 슬레이브라고 함)을 실행하는 것으로 시작할 수 있다. 이 명령의 유일한 목적은 리셋 벡터(리셋 벡터라고 함)에서 Jump하는 것일 수 있다. 즉, 이에 따라, BRAM의 시작 부분으로 이동할 수 있다. 따라서 이러한 하드 코딩된 명령어는 구성 파일(src/main/scala/Configs.scala에 있는 치즐 코드)에 특성화되어 있는 재설정 벡터를 기반으로 계산될 수 있다.The booting process of the semiconductor chip 100 may start by executing a hard-coded command (referred to as a ROM 160 slave in uncore /src/main/scala /ROM(160).scala). The sole purpose of this instruction may be to jump on the reset vector (referred to as the reset vector). That is, according to this, it is possible to move to the beginning of the BRAM. So these hard-coded instructions can be computed based on the reset vectors specified in the configuration file (chisel code in src/main/scala/Configs.scala).

초기 리셋 벡터는 부팅이 BRAM(일반 FPGA 실행의 경우)에서 시작하거나 DDR로 직접 시작해야 하는 명령어로 구성된 함수 make Boot ROM(src/main/scala/Low RISC Chip.scala에 있는 치즐 코드)로 이해할 수 있다. 반도체 칩(100)에서 안전한 부팅 흐름을 달성하기 위해 본 발명이 제안하는 프레임워크는 부팅 로딩 단계 사이에 코드 인증 절차를 시행하여 신뢰 체인을 설정할 수 있다. 이러한 인증은 서명 검증 절차를 통합하는 제시된 코드 인증부(120) 를 통해 수행될 수 있다.The initial reset vector can be understood as a function make Boot ROM (chisel code located in src/main/scala/Low RISC Chip. there is. In order to achieve a secure boot flow in the semiconductor chip 100, the framework proposed by the present invention may establish a chain of trust by executing a code authentication procedure between boot loading steps. This authentication can be performed through the proposed code verification unit 120 integrating the signature verification procedure.

도 4 및 도 5는 각각 종래의 부팅 흐름을 설명하는 개념도 및 본원의 일 실시예에 의한 반도체 칩(100)을 이용한 부팅 흐름을 설명하는 개념도이다.4 and 5 are conceptual views illustrating a conventional booting flow and a conceptual diagram illustrating a booting flow using the semiconductor chip 100 according to an exemplary embodiment of the present disclosure.

보다 구체적으로, 도 4를 참조하면, 도 4는, SHA3 및 ECDSA의 소프트웨어 기반 구현(예: Sanctum)을 사용하는 기존 흐름을 이해할 수 있다. 소프트웨어는 RISCV 코어와 같은 프로세스 코어에서 실행될 수 있다.More specifically, referring to FIG. 4 , an existing flow using SHA3 and a software-based implementation of ECDSA (eg Sanctum) can be understood. Software can run on a process core, such as a RISCV core.

한편, 도 5를 참조하면, 도 5는, 반도체 칩(100)을 이용하여 하드웨어 유닛(코드 인증부(120) 및 부팅 시퀸서(150))을 더 사용하여 보안 부팅을 구현할 수 있음을 이해할 수 있다.Meanwhile, referring to FIG. 5 , it can be understood that secure booting may be implemented by further using hardware units (code authenticator 120 and boot sequencer 150) using the semiconductor chip 100. .

본원의 일 실시예에 의한 반도체 칩(100)을 통한 하드웨어 보안 부팅은, 소프트웨어 보안 부팅보다 더 나은 성능과 에너지 효율성을 제공할 수 있다.Hardware secure booting through the semiconductor chip 100 according to an exemplary embodiment of the present disclosure may provide better performance and energy efficiency than software secure booting.

본원의 일 실시예에 따른 반도체 칩(100)은, RISC-V 경량 SoC에 구현된 보안 부팅 프레임워크를 수행할 수 있다. 프레임워크는 최적화된 ECDSA(Elliptic Curve Digital Signature Algorithm), SHA3(Secure Hash Algorithm 3) 해싱 알고리즘, PUF(140)(Physical Unclonable Function) 및 DMA(직접 메모리 액세스)를 사용할 수 있다.The semiconductor chip 100 according to an embodiment of the present disclosure may perform a secure boot framework implemented in a RISC-V lightweight SoC. The framework may use optimized Elliptic Curve Digital Signature Algorithm (ECDSA), Secure Hash Algorithm 3 (SHA3) hashing algorithm, Physical Unclonable Function (PUF) 140, and Direct Memory Access (DMA).

보안 부팅은 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지하기 위해 설계되었다. 이는 악성 소프트웨어가 "부트 키트를 설치하고 존재를 숨기기 위해 컴퓨터에 대한 제어를 유지하는 것을 방지하기 위한 것이다.Secure boot is designed to prevent malicious code from loading and running early in the boot process, before the operating system loads. This is to prevent malicious software from "installing a boot kit and maintaining control of the computer to hide its existence."

보안 부팅은 UEFI BIOS와 최종적으로 실행되는 소프트웨어(예: 부트로더, OS, UEFI 드라이버 및 유틸리티) 간에 신뢰 관계를 설정할 수 있다. 보안 부팅을 사용 설정하고 구성한 후에는 승인된 키로 서명된 소프트웨어 또는 펌웨어만 실행할 수 있다.Secure boot can establish a trust relationship between the UEFI BIOS and the eventually running software (e.g. bootloader, OS, UEFI drivers and utilities). After enabling and configuring secure boot, only software or firmware signed with an approved key can run.

또한, 공격자가 커널 cmd 행 매개변수를 변경하지 못하도록 방지할 수 있다. 그러나 이 접근 방식은 대부분의 컴퓨터에서 새 부트로더를 설치하여 쉽게 우회할 수 있다. 본원의 일 실시예에 따른 반도체 칩(100)이 실행하는 부트로더는 원래 부트로더에 의해 부과된 제한 사항을 준수할 필요가 없을 수 있다. 이에 따라서, 많은 경우 부트로더 교체가 불필요할 수 있습니다. GRUB 및 기타 부트로더는 암호와 같은 보안 제한을 우회하도록 편집할 수 있는 별도의 구성 파일을 통해 완전히 구성할 수 있다.It also prevents attackers from changing kernel cmd line parameters. However, this approach can be easily circumvented on most computers by installing a new bootloader. The bootloader executed by the semiconductor chip 100 according to an exemplary embodiment of the present disclosure may not need to comply with restrictions originally imposed by the bootloader. As a result, bootloader replacement may not be necessary in many cases. GRUB and other bootloaders are fully configurable via separate configuration files that can be edited to bypass security restrictions such as passwords.

도 6은 일 실시예에 의한 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법을 설명하기 위한 순서도이다.6 is a flowchart illustrating a software security execution method using the semiconductor chip 100 according to an exemplary embodiment.

도 6에 도시된 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법은 앞서 설명된 반도체 칩(100) 에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도, 반도체 칩(100)에 대하여 설명된 내용은 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법에 대한 설명에도 동일하게 적용될 수 있다.The software security execution method using the semiconductor chip 100 shown in FIG. 6 can be performed by the semiconductor chip 100 described above. Therefore, even if the contents are omitted below, the description of the semiconductor chip 100 can be equally applied to the description of the software security execution method using the semiconductor chip 100 .

도 6을 참조하면, 반도체 칩(100)은, 소프트웨어를 실행할 수 있다(S100).Referring to FIG. 6 , the semiconductor chip 100 may execute software (S100).

또한, 반도체 칩(100)은, 대칭 및 비대칭 암호화 키를 생성 및 배포할 수 있다(S200).Also, the semiconductor chip 100 may generate and distribute symmetric and asymmetric encryption keys (S200).

또한, 반도체 칩(100)은, 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증할 수 있다(S300).In addition, the semiconductor chip 100 may authenticate the signature of the software code using an encryption method (S300).

한편, 개시된 실시예들은 컴퓨터에 의해 실행 가능한 명령어를 저장하는 기록매체의 형태로 구현될 수 있다. 명령어는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 프로그램 모듈을 생성하여 개시된 실시예들의 동작을 수행할 수 있다. 기록매체는 컴퓨터로 읽을 수 있는 기록매체로 구현될 수 있다.Meanwhile, the disclosed embodiments may be implemented in the form of a recording medium storing instructions executable by a computer. Instructions may be stored in the form of program codes, and when executed by a processor, create program modules to perform operations of the disclosed embodiments. The recording medium may be implemented as a computer-readable recording medium.

컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터에 의하여 해독될 수 있는 명령어가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(160)(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래시 메모리, 광 데이터 저장장치 등이 있을 수 있다. Computer-readable recording media include all types of recording media in which instructions that can be decoded by a computer are stored. For example, there may be a ROM 160 (Read Only Memory), RAM (Random Access Memory), magnetic tape, magnetic disk, flash memory, optical data storage device, and the like.

이상에서와 같이 첨부된 도면을 참조하여 개시된 실시예들을 설명하였다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고도, 개시된 실시예들과 다른 형태로 본 발명이 실시될 수 있음을 이해할 것이다. 개시된 실시예들은 예시적인 것이며, 한정적으로 해석되어서는 안 된다.As above, the disclosed embodiments have been described with reference to the accompanying drawings. Those skilled in the art to which the present invention pertains will understand that the present invention can be implemented in a form different from the disclosed embodiments without changing the technical spirit or essential features of the present invention. The disclosed embodiments are illustrative and should not be construed as limiting.

100: 반도체 칩
110: 프로세스 코어 120: 코드 인증부
130: 키 관리부 140: PUF(140)
150: 부팅 시퀀서 160: ROM(160)
100: semiconductor chip
110: process core 120: code authentication unit
130: key management unit 140: PUF (140)
150: boot sequencer 160: ROM (160)

Claims (13)

반도체 칩에 있어서,
프로세스 코어;
ECDSA(Elliptic Curve Digital Signature Algorithm)를 기초로, 상기 프로세스 코어에 실행되는 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 코드 인증부; 및
상기 코드 인증부에 대칭 및 비대칭 암호화 키를 생성하여 배포하는 키 관리부;를 포함하는 반도체 칩.
In the semiconductor chip,
process core;
a code verification unit that cryptographically authenticates a signature of a code of software executed in the process core based on ECDSA (Elliptic Curve Digital Signature Algorithm); and
and a key management unit generating and distributing symmetric and asymmetric encryption keys to the code authentication unit.
제1항에 있어서,
상기 프로세스 코어는,
베어 메탈 부트(Bare Metal Boot) 프로그램이 로드된 ROM(160)(Readable Only Memory)를 포함하는 반도체 칩.
According to claim 1,
The process core,
A semiconductor chip including a ROM 160 (Readable Only Memory) loaded with a bare metal boot program.
제2항에 있어서,
상기 프로세스 코어는,
BBL(Berkeley Boot Loader)를 실행하되, 상기 BBL은, 상기 반도체 칩을 초기화하는 것, 페이지 테이블 및 가상 메모리를 설정하는 것, 커널을 가상 메모리에 로드하고 상기 커널을 부팅하는 것 중 적어도 하나의 동작을 수행하는 반도체 칩.
According to claim 2,
The process core,
A Berkeley Boot Loader (BBL) is executed, and the BBL performs at least one of initializing the semiconductor chip, setting a page table and virtual memory, and loading a kernel into the virtual memory and booting the kernel. A semiconductor chip that performs
제3항에 있어서,
상기 BBL은, 상기 프로세스 코어에 전기적으로 연결된 외부 스토리지에 상기 커널을 로드하는 반도체 칩
According to claim 3,
The BBL is a semiconductor chip that loads the kernel to an external storage electrically connected to the process core.
제4항에 있어서,
상기 코드 인증부는,
상기 베어 메탈 부트의 코드의 서명을 암호화 방식으로 인증하고, 상기 베어 메탈 부트의 코드의 서명이 인증된 것에 응답하여, 상기 BBL의 코드의 서명을 암호화 방식으로 인증하는 반도체 칩.
According to claim 4,
The code authentication unit,
A semiconductor chip that authenticates the signature of the code of the bare metal boot by a cryptographic method, and authenticates the signature of the code of the BBL by a cryptographic method in response to the authentication of the signature of the code of the bare metal boot.
제5항에 있어서,
상기 프로세스 코어는,
상기 BBL의 코드의 서명이 인증된 것에 응답하여, 애플리케이션을 실행하는 반도체 칩.
According to claim 5,
The process core,
A semiconductor chip that executes an application in response to authentication of the signature of the code of the BBL.
제6항에 있어서,
상기 반도체 칩은,
부팅 프로세스의 흐름을 시퀸스하는 부팅 시퀀서를 더 포함하는 반도체 칩.
According to claim 6,
The semiconductor chip,
A semiconductor chip that further includes a boot sequencer that sequences the flow of a boot process.
제7항에 있어서,
상기 부팅 시퀀서는,
상기 코드 인증부의 인증 결과를 수집하고, 상기 부팅 프로세서의 중단 여부를 결정하는 반도체 칩.
According to claim 7,
The boot sequencer,
A semiconductor chip that collects authentication results of the code authentication unit and determines whether to stop the booting process.
제8항에 있어서,
상기 부팅 시퀀서는,
메모리에서 코드를 읽고 SHA3 하드웨어 블록을 사용하여 해시를 계산하는 반도체 칩.
According to claim 8,
The boot sequencer,
A semiconductor chip that reads code from memory and uses the SHA3 hardware block to calculate a hash.
제9항에 있어서,
상기 키 관리부는,
TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리 중 적어도 하나를 포함하는 반도체 칩.
According to claim 9,
The key management unit,
A semiconductor chip including at least one of a True Random Number Generator (TRNG), a Physical Unclonable Function (PUF), a Challenges Storage, and a One-Time Programmable (OTP) memory.
제10항에 있어서,
상기 PUF(140)는,
오류 수정 코드(ECC) 인코딩 회로를 포함하여, 신드롬을 계산하고, 챌린지와 함께 메모리에 저장하는 반도체 칩.
According to claim 10,
The PUF 140,
A semiconductor chip that includes an error correction code (ECC) encoding circuit to calculate a syndrome and store it in a memory together with a challenge.
제1항에 따른 반도체 칩을 이용하여 소프트웨어 보안 실행하는 방법에 있어서,
프로세스 코어에 의해 소프트웨어를 실행하고,
키 관리부에 의해 대칭 및 비대칭 암호화 키를 생성 및 배포하고,
코드 인증부에 의해 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 소프트웨어 보안 실행하는 방법
A method for executing software security using the semiconductor chip according to claim 1,
run the software by the process core,
Generates and distributes symmetric and asymmetric encryption keys by the key management unit,
A software security execution method in which a code signature of the software is authenticated by a code authentication unit in a cryptographic manner.
제12항의 소프트웨어 보안 실행하는 방법을 실행시킬 수 있는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.A computer-readable recording medium on which a program capable of executing the software security execution method of claim 12 is recorded.
KR1020220018165A 2022-02-11 2022-02-11 Semiconductor chip and software security execution method using thereof KR20230121382A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220018165A KR20230121382A (en) 2022-02-11 2022-02-11 Semiconductor chip and software security execution method using thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220018165A KR20230121382A (en) 2022-02-11 2022-02-11 Semiconductor chip and software security execution method using thereof

Publications (1)

Publication Number Publication Date
KR20230121382A true KR20230121382A (en) 2023-08-18

Family

ID=87802003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220018165A KR20230121382A (en) 2022-02-11 2022-02-11 Semiconductor chip and software security execution method using thereof

Country Status (1)

Country Link
KR (1) KR20230121382A (en)

Similar Documents

Publication Publication Date Title
CN109313690B (en) Self-contained encrypted boot policy verification
US10931451B2 (en) Securely recovering a computing device
US10771264B2 (en) Securing firmware
US8254568B2 (en) Secure booting a computing device
US8732445B2 (en) Information processing device, information processing method, information processing program, and integrated circuit
US8590040B2 (en) Runtime platform firmware verification
US8826405B2 (en) Trusting an unverified code image in a computing device
US8230412B2 (en) Compatible trust in a computing device
US9235719B2 (en) Apparatus, system, and method for providing memory access control
US20110093693A1 (en) Binding a cryptographic module to a platform
US11354417B2 (en) Enhanced secure boot
US11106798B2 (en) Automatically replacing versions of a key database for secure boots
US20240104213A1 (en) Securing node groups
KR20230121382A (en) Semiconductor chip and software security execution method using thereof
KR102089435B1 (en) A secure boot method for secure usb device
Yadav SECURE BOOTLOADER IN EMBEDDED SYSTEM USING MISRA-C