KR20230121382A - Semiconductor chip and software security execution method using thereof - Google Patents
Semiconductor chip and software security execution method using thereof Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/73—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/76—Protecting 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
개시된 발명은 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법에 관한 것으로서, 더욱 상세하게는 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법에 관한 것이다.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
개시된 발명의 일 측면에 따른 제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).
디지털 서명 기반 인증은 대부분의 웹 브라우저(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
도 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
본원의 일 실시예에 의한 반도체 칩(100)은, 소프트웨어 공급업체의 시스템 무결성과 신뢰성을 보장하는 보안 부팅을 위한 새로운 경량 아키텍처를 제공할 수 있다. 또한, 반도체 칩(100)은, 최적화된 PUF(140)(Physical Unclonable Function)을 사용하는 키 관리부(130)를 포함하는 프레임워크를 수행할 수 있다. 또한, 코드 인증부(120)를 RISC-V SoC(반도체 칩(100))에 통합할 수 있다.The
도 2는 본원의 일 실시예에 의한 반도체 칩(100)의 구성을 설명하기 위한 블록도이다.2 is a block diagram illustrating a configuration of a
도 2를 참조하면, 반도체 칩(100)은, 프로세스 코어(110), 코드 인증부(120), 키 관리부(130), PUF(140), 부팅 시퀀서(150) 및 ROM(160)을 포함할 수 있다.Referring to FIG. 2 , the
프로세스 코어(110)는, 예를 들어, RISC-V 프로세서의 코어일 수 있다. 예시적으로, 프로세서 코어(110)는, 소프트웨어를 실행할 수 있다. 보다 구체적으로 , 소프트웨어는, 베어 메탈 부트(Bare Metal Boot) 프로그램 및/또는 BBL(Berkely Boot Loader) 프로그램을 포함할 수 있다.
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
이를 통해 로드된 프로그램은 커널(예: 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
최근 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
ROM(160)은 메모리 주소 0x10000에 매핑되며 이 주소 중 첫 번째 데이터 코드 인증부(120)가 서명 확인을 수행하기 시작할 것임을 표시할 수 있다. 얻은 값은 코드 끝에 추가된 서명과 일치할 수 있다. 긍정적인 일치 결과는 다음 부팅 단계로 이어질 수 있다. 그렇지 않으면 소프트웨어 실행이 일시 중단될 수 있다.
키 관리부(130)는, 대칭 및 비대칭 암호화 키의 생성 및 배포를 담당할 수있다. TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리로 구성될 수 있다.The
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
코드 인증부(120)는 공개 키 알고리즘에 필요한 비대칭 키를 사용할 수 있다. 공개 키는 OTP 메모리를 사용하여 키 관리부(130)에 융합될 수 있다.The
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)는 암호화 프로토콜을 통해 클라이언트와 공유되는 대칭 키를 생성하는 데 사용될 수 있다. PUF(140)는 Xilinx FPGA 및 Intel FPGA와 같은 상용 제품에서 대칭 키 생성기로 사용될 수 있다. PKA(공개 키 알고리즘)의 경우 PUF(140)를 사용하여 보안 프로세서 내부의 비대칭(공개/개인) 키 생성기에 대한 임의 시드를 생성할 수 있다.
PUF(140)가 오류 수정 코드에서 보안 키를 파생하는 데는 키 초기화 및 재생성이라는 두 가지 주요 단계가 있다. 첫 번째 단계에서는 오류 수정 코드(ECC) 인코딩 회로를 통해 PUF(140)에서 신드롬을 계산하고 챌린지와 쌍으로 메모리에 저장할 수 있다. 이것은 PUF(140) 응답에서 발견된 오류를 수정하는 데 사용될 수 있다. 다음으로, PUF(140)로부터 잡음이 있는 응답이 취해지고 해당 신드롬(특정 챌린지에 대한)이 ECC 디코더로 전송될 수 있다. 저장된 신드롬의 도움으로 ECC는 PUF(140) 응답에서 발생한 오류를 수정할 수 있다.There are two main steps for
PUF(140)는, 전압 및 온도의 변화로 인해 오류가 발생할 수 있다. 보다 구체적으로, 이 설계는 7비트 메시지를 15비트 코드(8비트 신드롬이 있는 7비트 메시지)로 인코딩하고 임의의 위치에서 최대 2개의 오류를 수정할 수 있는 오류 수정 코드로 BCH를 사용할 수 있다.An error may occur in the
부팅 시퀀서(150)는, 반도체 칩(100)의 부팅 프로세스의 흐름을 시퀀스하는 FSM(Finite State Machine)일 수 있다. 부팅 시퀸서(150)는, 부팅의 새 단계가 실행될 때마다 호출될 수 있다. 부팅 시퀸서(150)는 키 관리부(130)와 통신하여 관련 키를 코드 인증부(120)에 보낼 수 있다. 그 후 부팅 시퀸서(150)는, 코드 인증부(120)에게 메모리에서 해당 코드를 읽고 ECDSA를 사용하여 서명을 인증하도록 요청할 수 있다.The
부팅 시퀸서(150)는 인증 결과(통과 또는 실패)를 수집하고 이를 기반으로 부팅 시퀀스를 계속할지 아니면 중단할지를 결정할 수 있다. 현재 구현에서 부팅 시퀸서(150)는 하드웨어 상태 머신이지만 향후 버전에서는 더 나은 프로그래밍 가능성과 패치 가능성을 위해 소형 마이크로 컨트롤러로 대체될 수 있다. 다만, 이에 한정되는 것은 아니다.The
도 3은 본원의 일 실시예에 의한 반도체 칩(100)의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.3 is a diagram for explaining a hardware-based secure booting architecture of the
도 3을 참조하면, 키 관리부(130)는 코드 인증부(120), 보안 디버그 및 메모리 보호 장치와 같은 다양한 보안 블록에 키를 생성하고 배포할 수 있다.Referring to FIG. 3 , the
코드 인증부(120)는, 이미지 해킹, 봇넷 등록 및 콜드 부트 공격과 같은 공격으로부터 하드웨어를 보호할 수 있다. 보안 부팅은 코드 인증부(120)(Code Authentication Unit) 및 부팅 시퀸서(150)를 사용하여 구현될 수 있다.The
보안 디버그(31)는, 키추출, 불법 디버깅, 프로빙(Probing) 및 SCA(Side Channel Attacks)와 같은 다양한 하드웨어 위협으로부터 보호할 수 있다.The
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
반도체 칩(100)의 부팅 프로세스는 하드 코딩된 명령(uncore /src/main/scala /ROM(160).scala에 있는 ROM(160) 슬레이브라고 함)을 실행하는 것으로 시작할 수 있다. 이 명령의 유일한 목적은 리셋 벡터(리셋 벡터라고 함)에서 Jump하는 것일 수 있다. 즉, 이에 따라, BRAM의 시작 부분으로 이동할 수 있다. 따라서 이러한 하드 코딩된 명령어는 구성 파일(src/main/scala/Configs.scala에 있는 치즐 코드)에 특성화되어 있는 재설정 벡터를 기반으로 계산될 수 있다.The booting process of the
초기 리셋 벡터는 부팅이 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
도 4 및 도 5는 각각 종래의 부팅 흐름을 설명하는 개념도 및 본원의 일 실시예에 의한 반도체 칩(100)을 이용한 부팅 흐름을 설명하는 개념도이다.4 and 5 are conceptual views illustrating a conventional booting flow and a conceptual diagram illustrating a booting flow using the
보다 구체적으로, 도 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 (
본원의 일 실시예에 의한 반도체 칩(100)을 통한 하드웨어 보안 부팅은, 소프트웨어 보안 부팅보다 더 나은 성능과 에너지 효율성을 제공할 수 있다.Hardware secure booting through the
본원의 일 실시예에 따른 반도체 칩(100)은, RISC-V 경량 SoC에 구현된 보안 부팅 프레임워크를 수행할 수 있다. 프레임워크는 최적화된 ECDSA(Elliptic Curve Digital Signature Algorithm), SHA3(Secure Hash Algorithm 3) 해싱 알고리즘, PUF(140)(Physical Unclonable Function) 및 DMA(직접 메모리 액세스)를 사용할 수 있다.The
보안 부팅은 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지하기 위해 설계되었다. 이는 악성 소프트웨어가 "부트 키트를 설치하고 존재를 숨기기 위해 컴퓨터에 대한 제어를 유지하는 것을 방지하기 위한 것이다.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
도 6은 일 실시예에 의한 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법을 설명하기 위한 순서도이다.6 is a flowchart illustrating a software security execution method using the
도 6에 도시된 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법은 앞서 설명된 반도체 칩(100) 에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도, 반도체 칩(100)에 대하여 설명된 내용은 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법에 대한 설명에도 동일하게 적용될 수 있다.The software security execution method using the
도 6을 참조하면, 반도체 칩(100)은, 소프트웨어를 실행할 수 있다(S100).Referring to FIG. 6 , the
또한, 반도체 칩(100)은, 대칭 및 비대칭 암호화 키를 생성 및 배포할 수 있다(S200).Also, the
또한, 반도체 칩(100)은, 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증할 수 있다(S300).In addition, the
한편, 개시된 실시예들은 컴퓨터에 의해 실행 가능한 명령어를 저장하는 기록매체의 형태로 구현될 수 있다. 명령어는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 프로그램 모듈을 생성하여 개시된 실시예들의 동작을 수행할 수 있다. 기록매체는 컴퓨터로 읽을 수 있는 기록매체로 구현될 수 있다.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.
상기 프로세스 코어는,
베어 메탈 부트(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.
상기 프로세스 코어는,
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
상기 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.
상기 코드 인증부는,
상기 베어 메탈 부트의 코드의 서명을 암호화 방식으로 인증하고, 상기 베어 메탈 부트의 코드의 서명이 인증된 것에 응답하여, 상기 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.
상기 프로세스 코어는,
상기 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.
상기 반도체 칩은,
부팅 프로세스의 흐름을 시퀸스하는 부팅 시퀀서를 더 포함하는 반도체 칩.According to claim 6,
The semiconductor chip,
A semiconductor chip that further includes a boot sequencer that sequences the flow of a boot process.
상기 부팅 시퀀서는,
상기 코드 인증부의 인증 결과를 수집하고, 상기 부팅 프로세서의 중단 여부를 결정하는 반도체 칩.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.
상기 부팅 시퀀서는,
메모리에서 코드를 읽고 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.
상기 키 관리부는,
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.
상기 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.
프로세스 코어에 의해 소프트웨어를 실행하고,
키 관리부에 의해 대칭 및 비대칭 암호화 키를 생성 및 배포하고,
코드 인증부에 의해 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 소프트웨어 보안 실행하는 방법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.
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) |
-
2022
- 2022-02-11 KR KR1020220018165A patent/KR20230121382A/en unknown
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 |