KR20230121382A - 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법 - Google Patents

반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법 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
English (en)
Inventor
카우식 아칸크샤
Original Assignee
에이치엘만도 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이치엘만도 주식회사 filed Critical 에이치엘만도 주식회사
Priority to KR1020220018165A priority Critical patent/KR20230121382A/ko
Publication of KR20230121382A publication Critical patent/KR20230121382A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)

Abstract

반도체 칩에 있어서, 프로세스 코어, ECDSA(Elliptic Curve Digital Signature Algorithm)를 기초로, 상기 프로세스 코어에 실행되는 소프트웨어의 코드의 서명을 암호화 방식으로 확인하여 인증하는 코드 인증부 및 상기 코드 인증부에 대칭 및 비대칭 암호화 키를 생성하여 배포하는 키 관리부를 포함할 수 있다.

Description

반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법{SEMICONDUCTOR CHIP AND SOFTWARE SECURITY EXECUTION METHOD USING THEREOF}
개시된 발명은 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법에 관한 것으로서, 더욱 상세하게는 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법에 관한 것이다.
수천 개의 연결된 리소스를 포함한 컴퓨팅 장치를 보호하는 것은 오늘날 주요 과제이다. 시스템의 무결성과 소프트웨어 공급업체의 신뢰성을 보장하기 위해 보안 부팅은 여러 상용 프로세서에서 지원된다. 그러나 기존의 보안 부팅 솔루션은 복잡하거나 가벼운 공격에 의해 보안이 무너졌다.
부팅은 시스템 무결성이 손상될 수 있는 보안 시스템의 수명 동안 중요한 지점 중 하나이다. 많은 공격은 장치의 전원이 꺼져 있는 동안 소프트웨어를 손상시키며, 예를 들어 OS 커널 이미지를 변조된 이미지로 교체하여 시스템을 취약하게 만드는 공격을 수행하게 된다. 보안 시스템에 적용되는 원칙 중 하나는 첫 번째 부트 로더에서 신뢰할 수 있는 응용 프로그램까지 실행되는 모든 소프트웨어 부분에 대한 신뢰 체인 생성이며, 이는 쉽게 변조될 수 없는 신뢰 루트에서 설정되어야 한다. 따라서 랩톱, 데스크톱, 스마트폰 및 IoT 장치를 포함한 모든 보안 장치는 시스템 무결성을 보장하기 위해 보안 부팅을 구현해야 할 필요가 있다.
보다 상세하게, 소프트웨어 기반 보안 기술에서는 OS(Operation System) 등의 취약점을 이용한 공격이 새로 나올 때마다 이에 대해 지속적으로 보안 업데이트를 해야 했다. 따라서 보안 공격을 방지하기 위해서 하드웨어 모듈 차원의 보안 공격 방지 설계와 운용이 제시되었다. 이러한 하드웨어 모듈 차원의 보안 방법으로, ARM 사의 TrustZone 기술이 사용되고 있다.
TrustZone 기술과 같은 하드웨어 기반 보안 기술에서는 부팅 단계에서 OS 이미지의 무결성을 검증 후 읽어 들이기 때문에 플랫폼의 무결성을 시스템 시작 단계에서부터 스탭 바이 스탭으로 보장할 수 있게 된다. 이는 하드웨어가 OS를 비롯한 소프트웨어의 무결성을 검증하는 방식이다. 그러나, 소프트웨어의 시점에서 하드웨어의 무결성을 검증하는 것은 아니다.
개시된 발명의 일 측면은 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법을 제공하고자 한다.
개시된 발명의 일 측면에 따른 반도체 칩에 있어서, 프로세스 코어, ECDSA(Elliptic Curve Digital Signature Algorithm)를 기초로, 상기 프로세스 코어에 실행되는 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 코드 인증부 및 상기 코드 인증부에 대칭 및 비대칭 암호화 키를 생성하여 배포하는 키 관리부를 포함할 수 있다.
상기 프로세스 코어는, 베어 메탈 부트(Bare Metal Boot) 프로그램이 로드된 ROM(160)(Readable Only Memory)를 포함할 수 있다.
상기 프로세스 코어는, BBL(Berkeley Boot Loader)를 실행하되, 상기 BBL은, 상기 반도체 칩을 초기화하는 것, 페이지 테이블 및 가상 메모리를 설정하는 것, 커널을 가상 메모리에 로드하고 상기 커널을 부팅하는 것 중 적어도 하나의 동작을 수행할 수 있다.
상기 BBL은, 상기 프로세스 코어에 전기적으로 연결된 외부 스토리지에 상기 커널을 로드할 수 있다.
상기 코드 인증부는, 상기 베어 메탈 부트의 코드의 서명을 암호화 방식으로 인증하고, 상기 베어 메탈 부트의 코드의 서명이 인증된 것에 응답하여, 상기 BBL의 코드의 서명을 암호화 방식으로 인증할 수 있다.
상기 프로세스 코어는, 상기 BBL의 코드의 서명이 인증된 것에 응답하여, 애플리케이션을 실행할 수 있다.
상기 반도체 칩은, 부팅 프로세스의 흐름을 시퀸스하는 부팅 시퀀서를 더 포함할 수 있다.
상기 부팅 시퀀서는, 상기 코드 인증부의 인증 결과를 수집하고, 상기 부팅 프로세서의 중단 여부를 결정할 수 있다.
상기 부팅 시퀀서는, 메모리에서 코드를 읽고 SHA3 하드웨어 블록을 사용하여 해시를 계산할 수 있다.
상기 키 관리부는, TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리 중 적어도 하나를 포함할 수 있다.
상기 PUF(140)는, 오류 수정 코드(ECC) 인코딩 회로를 포함하여, 신드롬을 계산하고, 챌린지와 함께 메모리에 저장할 수 있다.
개시된 발명의 일 측면에 따른 제1항에 따른 반도체 칩을 이용하여 소프트웨어 보안 실행하는 방법에 있어서, 프로세스 코어에 의해 소프트웨어를 실행하고, 키 관리부에 의해 대칭 및 비대칭 암호화 키를 생성 및 배포하고, 코드 인증부에 의해 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 소프트웨어 보안 실행할 수 있다.
개시된 발명의 일 측면에 따르면, 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지할 수 있는 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법을 제공할 수 있다.
도 1은 일 실시예에 의한 반도체 칩의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.
도 2은 일 실시예에 의한 반도체 칩의 구성을 설명하기 위한 블록도이다.
도 3은 일 실시예에 의한 반도체 칩의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.
도 4는 종래의 부팅 흐름을 설명하기 위한 개념도이다.
도 5는 일 실시예에 의한 반도체 칩을 이용한 부팅 흐름을 설명하기 위한 개념도이다.
도 6은 일 실시예에 의한 반도체 칩을 이용한 소프트웨어 보안 실행 방법을 설명하기 위한 순서도이다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭한다. 본 명세서가 실시예들의 모든 요소들을 설명하는 것은 아니며, 개시된 발명이 속하는 기술분야에서 일반적인 내용 또는 실시예들 간에 중복되는 내용은 생략한다. 명세서에서 사용되는 '부, 모듈, 부재, 블록'이라는 용어는 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예들에 따라 복수의 '부, 모듈, 부재, 블록'이 하나의 구성요소로 구현되거나, 하나의 '부, 모듈, 부재, 블록'이 복수의 구성요소들을 포함하는 것도 가능하다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 간접적으로 연결되어 있는 경우를 포함하고, 간접적인 연결은 무선 통신망을 통해 연결되는 것을 포함한다.
또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
명세서 전체에서, 어떤 부재가 다른 부재 "상에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.
제 1, 제 2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위해 사용되는 것으로, 구성요소가 전술된 용어들에 의해 제한되는 것은 아니다.
단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함한다.
각 단계들에 있어 식별부호는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 실시될 수 있다.
위에서 언급한 바와 같이 하드웨어 기반의 보안 기술 중 secure booting과 같은 절차로 하드웨어가 소프트웨어의 무결성을 검증하는 기술이 보편적이다. 만약 스마트폰이나 핸드헬드 디바이스의 OS가 무결한 이미지가 아니라 손상되거나 해킹 등으로 보안 기능이 변조된 것이 발견되는 경우, 하드웨어가 이를 부팅 단계에서 발견하거나, 및/또는 특정 어플리케이션의 시행 단계에서 발견하여 보안 위험을 막는 것 등이다. 해커에 의해 변조된 OS가 설치된 스마트폰에서 모바일 뱅킹이나 패이먼트 어플리케이션을 실행할 때 해킹된 OS가 아닌지 검증하여 절차 진행이 중지되는 것과 같은 일은 이제 흔하다.
그런데 반대로 OS나 어플리케이션 소프트웨어가 하드웨어를 인증하는 것은 제시된 바 없다. 요즈음과 같이 스마트폰의 모바일 OS부터, 전자 장비의 펌웨어, 임베디드 소프트웨어 및 각종 어플리케이션이 온-에어 배포(distribution on air)되는 경우, 개발자 또는 매뉴팩처 입장에서 이들이 설치되어 운용될 장비가 정품이고 변조/손상되지 않은 무결한 것임을 보장받는 것은 충분히 필요한 기술이다. 이하에서 제시되는 여러 실시예들에서는, 불법 모조 하드웨어, 계약에 의한 사용 기간이 만료된 하드웨어, 원래의 기기에서는 보안에 의해 막혀 있는 기능이나 정보에 접근하기 위해 변조된 하드웨어 등을 방지하기 위해 소프트웨어 스스로 하드웨어를 인증하는 기술이 제시된다. 물론 하드웨어가 소프트웨어를 인증하는 내용을 함께 포함하므로, 이러한 면에서는 하드웨어와 소프트웨어의 상호 인증을 통한 안전성이 보장되는 시스템으로 이해되어도 좋다.
이하의 실시예에서는 시스템 온 칩 레벨의 장치에서 하드웨어와 소프트웨어의 상호 인증 기술이 예시적으로 설명되나, 반드시 이러한 예에 국한되는 것은 아니다. 따라서 핸드 핼드 장비의 하드웨어와 그 OS 또는 펌웨어의 상호 인증, 나아가 자동차나 항공기와 그 운영 소프트웨어의 상호 인증 등 발명의 사상을 벗어나지 않는 범위에서의 유사한 응용은 얼마든지 있을 수 있다.
한편, 이하에서는 본 발명의 이해를 돕기 위하여, 본 발명의 주요 개념을 설명하도록 한다. 보다 상세하게, 보안 부팅 및 디지털 서명에 대하여 설명한다.
보안 부팅과 관련해서, 부팅 프로세스의 모든 단계는 다음 단계의 무결성을 확인한다. 보안 부팅은 버전 2.2부터 UEFI(Unified Extensible Firmware Interface) 사양을 참조하면 이해할 수 있다. UEFI 보안 부팅은 해시를 계산하고 그 결과를 암호화 서명과 비교하여 부팅 프로세스의 각 단계의 무결성을 확인할 수 있다.
서명을 확인할 수 있도록 부팅 시 신뢰할 수 있는 공개 키의 키 데이터베이스에 액세스할 수 있어야 하며, 보안 부팅에서 무결성 검사가 실패하면 부팅이 중단될 수 있다. 부팅 프로세스가 성공하면 시스템은 신뢰할 수 있는 상태에서 실행될 것으로 높은 신뢰도를 가지고 예상할 수 있다.
신뢰할 수 있는 부팅, 검증된 부팅, 인증된 부팅, 인증된 부팅 또는 측정된 부팅과 같은 무결성 검사 프로세스를 설명하는 보안 부팅의 추가 용어 및 변형은 상용 제품 및 일부 연구 기사에서도 모두 다른 의미를 내포하고 있다. 예를 들어 인텔 프로세서는 측정 모드와 검증 모드의 두 가지 모드에서 보안 부팅을 지원할 수 있다. 예시적으로, 두 모드 모두에서 프로세서 코어의 마이크로 코드는 부팅 순서에 대한 신뢰의 루트일 수 있다. 측정 모드에서 TPM(신뢰할 수 있는 플랫폼 모듈)은 측정값을 저장하고 증명하는 역할을 하는 반면, 검증 모드에서는 각 구성 요소에 제조업체가 서명하고 구성 요소를 로드하기 전에 이러한 서명을 확인할 수 있다.
다른 실시예로, 보안 부팅 메커니즘의 신뢰 루트가 전용 보안 프로세서 내부에 통합된 변경할 수 없는 하드웨어에 구축될 수 있다. 예를 들어 HVB(Hardware Validated Boot)는 ROM(160)(Read only Momory)에 대한 신뢰를 기반으로 하는 AMD 고유의 보안 부팅 형식이다. ROM(160)은 나중에 시스템 플래시에서 가져온 더 큰 프로세서 펌웨어를 확인하는 데 사용되는 보안 부팅 키를 확인할 수 있다.
디지털 서명 기반 인증은 대부분의 웹 브라우저(SSL용) 및 이메일 패키지에서 사용될 수 있다. 모든 공개 키 암호화 시스템은 해결하기 어려운 특정 수학적 문제를 기반으로 하는 보안을 가지고 있다. 예를 들어, RSA는 정수 인수분해의 어려움에 기반한 보안을 가지고 있다. 이와 유사하게, 타원 곡선 암호화(ECC)는 타원 곡선 이산 로그 문제(ECDLP)를 기반으로 하는 보안을 가지고 있다.
타원 곡선을 사용하는 가장 널리 사용되는 서명 방식은 ECDSA(Elliptic Curve Digital Signature Algorithm), 가장 널리 사용되는 암호화 방식은 ECIES(Elliptic Curve Integrated Encryption Scheme), 가장 널리 사용되는 키 합의 방식은 Elliptic Curve Diffie- Hellman(ECDH)일 수 있다.
디지털 서명에 대한 NIST 표준은 프라임 필드를 사용하거나 타원 곡선에 이진 확장 필드를 사용할 것을 권장한다. 이진 확장 필드는 필드 추가가 XOR 연산으로 수행될 수 있으므로 캐리가 포함되지 않는다는 이점이 있다. 이것은 더 적은 용량을 필요로 하고 더 나은 성능을 갖는 구현으로 이어질 수 있다.
SECG(Standards for Efficient Cryptography Group)는 온라인 암호화폐 비트코인에서 사용되는 Koblitz 곡선 secp256k1을 정의한다. NIST 곡선은 더 널리 사용되며 다른 SECG 곡선보다 더 정밀한 것을 특징으로 한다.
이하 첨부된 도면들을 참고하여 개시된 발명의 작용 원리 및 실시예들에 대해 설명한다.
도 1은 본원의 일 실시예에 의한 반도체 칩(100)의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.
도 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(직접 메모리 액세스)를 사용할 수 있다.
본원의 일 실시예에 의한 반도체 칩(100)은, 소프트웨어 공급업체의 시스템 무결성과 신뢰성을 보장하는 보안 부팅을 위한 새로운 경량 아키텍처를 제공할 수 있다. 또한, 반도체 칩(100)은, 최적화된 PUF(140)(Physical Unclonable Function)을 사용하는 키 관리부(130)를 포함하는 프레임워크를 수행할 수 있다. 또한, 코드 인증부(120)를 RISC-V SoC(반도체 칩(100))에 통합할 수 있다.
도 2는 본원의 일 실시예에 의한 반도체 칩(100)의 구성을 설명하기 위한 블록도이다.
도 2를 참조하면, 반도체 칩(100)은, 프로세스 코어(110), 코드 인증부(120), 키 관리부(130), PUF(140), 부팅 시퀀서(150) 및 ROM(160)을 포함할 수 있다.
프로세스 코어(110)는, 예를 들어, RISC-V 프로세서의 코어일 수 있다. 예시적으로, 프로세서 코어(110)는, 소프트웨어를 실행할 수 있다. 보다 구체적으로 , 소프트웨어는, 베어 메탈 부트(Bare Metal Boot) 프로그램 및/또는 BBL(Berkely Boot Loader) 프로그램을 포함할 수 있다.
RISC-V에 대한 주요 부트 로딩 절차 지침은 SoC의 실제 부트 로더인 BBL(Berkeley Boot Loader)에 정의되어 있다. BBL은 모든 주변 장치 초기화, 페이지 테이블 및 가상 메모리 설정, 선택한 커널(Linux)을 가상 메모리에 로드하고 최종적으로 커널을 부팅하는 등의 여러 기능을 수행할 수 있다.
전체 부팅 흐름은 여러 단계로 구분되어 수행될 수 있다. 반도체 칩(100)에는 베어메탈 부트(C 프로그램)가 로드된 스토리지 ROM(160)이 포함될 수 있다. 이 부트 프로그램은 실제 부트로더인 BBL을 로드하는 데 필요할 수 있다. 다음으로 2단계에서는 BBL을 DDR RAM으로 복사/이동하는 작업이 포함될 수 있다. BBL의 용량은 사실 온칩 부트 ROM(160)보다 클 수 있다. 이에 따라서 RISC-V의 최근 개발에서는 이 프로세스를 용이하게 하기 위해 사용할 수 있는 두 가지 옵션을 채택할 수 있다. 예시적으로, SD-Boot에서, BBL은 프로세스 코어(110)에 외부적으로 연결된 외부 스토리지에서 커널을 로드할 수 있다. 또한, Ether-boot에서, 베어 메탈 부트 로더는 네트워크에 있는 자신의 존재를 수신 ARP 쿼리에 알릴 수 있다.
이를 통해 로드된 프로그램은 커널(예: Linux)을 선택하여 BBL을 포함하는 ELF 파일이 될 수 있다. 한편, 두 번째 옵션에서 ELF 파일( BBL+ 커널)은 네트워크를 통해 보내기 전에 UDP 패킷으로 분할될 수 있다.
최종 단계 3은 머신 모드에서 BBL을 시작하고 머신 모드 트랩 벡터를 설정하고 커널 실행을 진행하는 것을 포함할 수 있다.
코드 인증부(120)는, 하드웨어 구성 요소로서, ECDSA(타원 곡선 디지털 서명 알고리즘)를 사용하여 프로세서에서 실행될 각 신뢰할 수 있는 코드의 서명을 암호화 방식으로 확인하여 인증할 수 있다. 코드 인증부(120)는 처음 부팅부터 응용 프로그램까지 실행할 각 소프트웨어 코드를 확인하여 인증할 수 있다. 이러한 메커니즘은 무단 또는 수정된 코드가 보안 SoC에서 실행되는 것을 효과적으로 방지할 수 있다.
최근 RISC-V 개발은 재구성 가능한 메모리 매핑(고정 메모리 맵 대신)을 사용할 수 있다. 여기서 주소는 주변기기 사용자 지정을 위한 빌드 명령에 따라 자동으로 생성할 수 있다. 이 접근 방식은 주소 경계를 넘는 것을 방지하기 위해 시작 주소의 올바른 정렬을 보장하므로 더 유리할 수 있다.
최종 메모리 맵(예를 들어, 구성 문자열이라고 함)이 사용되며 C-프로그램(및 기타 하드웨어 모듈)에 자동으로 연결될 수 있다. 따라서 하드 코딩된 명령 ROM(160)은 점프 명령, 재설정 벡터 및 구성 문자열로 구성될 수 있다. 이 코드 조각은 서명되고 서명은 코드 줄 끝에 추가될 수 있다.
ROM(160)은 메모리 주소 0x10000에 매핑되며 이 주소 중 첫 번째 데이터 코드 인증부(120)가 서명 확인을 수행하기 시작할 것임을 표시할 수 있다. 얻은 값은 코드 끝에 추가된 서명과 일치할 수 있다. 긍정적인 일치 결과는 다음 부팅 단계로 이어질 수 있다. 그렇지 않으면 소프트웨어 실행이 일시 중단될 수 있다.
키 관리부(130)는, 대칭 및 비대칭 암호화 키의 생성 및 배포를 담당할 수있다. TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리로 구성될 수 있다.
TRNG는 대칭 키 챌린지에 대한 임의의 챌린지를 생성하고 챌린지는 해당 ID와 함께 저장소에 저장될 수 있다. 특정 키를 검색하기 위해 PUF(140)에 챌린지가 입력되고 키로 사용되는 응답이 출력될 수 있다. 이러한 대칭 키는 메모리 보호 장치(메모리 암호화 및 무결성) 및 보안 디버그 장치와 같은 SoC 내부 보안 블록의 일부에서 사용될 수 있다.
코드 인증부(120)는 공개 키 알고리즘에 필요한 비대칭 키를 사용할 수 있다. 공개 키는 OTP 메모리를 사용하여 키 관리부(130)에 융합될 수 있다.
PUF(Physical unclonable function)(140)는 칩의 전원이 켜져 있을 때만 존재하는 반도체 제조 변형에서 휘발성 비밀 키를 추출할 수 있다. 보안 프로세서 설정에서 PUF(140) 생성 키의 문서화된 최초 사용은 AEGIS 프로세서에서 였다.
PUF(140)는 암호화 프로토콜을 통해 클라이언트와 공유되는 대칭 키를 생성하는 데 사용될 수 있다. PUF(140)는 Xilinx FPGA 및 Intel FPGA와 같은 상용 제품에서 대칭 키 생성기로 사용될 수 있다. PKA(공개 키 알고리즘)의 경우 PUF(140)를 사용하여 보안 프로세서 내부의 비대칭(공개/개인) 키 생성기에 대한 임의 시드를 생성할 수 있다.
PUF(140)가 오류 수정 코드에서 보안 키를 파생하는 데는 키 초기화 및 재생성이라는 두 가지 주요 단계가 있다. 첫 번째 단계에서는 오류 수정 코드(ECC) 인코딩 회로를 통해 PUF(140)에서 신드롬을 계산하고 챌린지와 쌍으로 메모리에 저장할 수 있다. 이것은 PUF(140) 응답에서 발견된 오류를 수정하는 데 사용될 수 있다. 다음으로, PUF(140)로부터 잡음이 있는 응답이 취해지고 해당 신드롬(특정 챌린지에 대한)이 ECC 디코더로 전송될 수 있다. 저장된 신드롬의 도움으로 ECC는 PUF(140) 응답에서 발생한 오류를 수정할 수 있다.
PUF(140)는, 전압 및 온도의 변화로 인해 오류가 발생할 수 있다. 보다 구체적으로, 이 설계는 7비트 메시지를 15비트 코드(8비트 신드롬이 있는 7비트 메시지)로 인코딩하고 임의의 위치에서 최대 2개의 오류를 수정할 수 있는 오류 수정 코드로 BCH를 사용할 수 있다.
부팅 시퀀서(150)는, 반도체 칩(100)의 부팅 프로세스의 흐름을 시퀀스하는 FSM(Finite State Machine)일 수 있다. 부팅 시퀸서(150)는, 부팅의 새 단계가 실행될 때마다 호출될 수 있다. 부팅 시퀸서(150)는 키 관리부(130)와 통신하여 관련 키를 코드 인증부(120)에 보낼 수 있다. 그 후 부팅 시퀸서(150)는, 코드 인증부(120)에게 메모리에서 해당 코드를 읽고 ECDSA를 사용하여 서명을 인증하도록 요청할 수 있다.
부팅 시퀸서(150)는 인증 결과(통과 또는 실패)를 수집하고 이를 기반으로 부팅 시퀀스를 계속할지 아니면 중단할지를 결정할 수 있다. 현재 구현에서 부팅 시퀸서(150)는 하드웨어 상태 머신이지만 향후 버전에서는 더 나은 프로그래밍 가능성과 패치 가능성을 위해 소형 마이크로 컨트롤러로 대체될 수 있다. 다만, 이에 한정되는 것은 아니다.
도 3은 본원의 일 실시예에 의한 반도체 칩(100)의 하드웨어 기반 보안 부팅 아키텍처를 설명하기 위한 도면이다.
도 3을 참조하면, 키 관리부(130)는 코드 인증부(120), 보안 디버그 및 메모리 보호 장치와 같은 다양한 보안 블록에 키를 생성하고 배포할 수 있다.
코드 인증부(120)는, 이미지 해킹, 봇넷 등록 및 콜드 부트 공격과 같은 공격으로부터 하드웨어를 보호할 수 있다. 보안 부팅은 코드 인증부(120)(Code Authentication Unit) 및 부팅 시퀸서(150)를 사용하여 구현될 수 있다.
보안 디버그(31)는, 키추출, 불법 디버깅, 프로빙(Probing) 및 SCA(Side Channel Attacks)와 같은 다양한 하드웨어 위협으로부터 보호할 수 있다.
TEE(신뢰할 수 있는 실행 환경)는 신뢰할 수 있는 응용 프로그램에 대한 격리된 실행 환경을 보장하며, 이 기능은 소프트웨어 악용, 권한 상승 및 봇넷 등록과 같은 공격으로부터 보호하는 데 필수적일 수 있다. 이에 따라 로켓 코어(32)(Rocket Core)는, 이러한 TEE 환경을 제공할 수 있다.
신뢰할 수 있는 오프칩 메모리는 SCA(Side-Channel Attacks), 프로빙 및 주 메모리에서 키 추출을 방지하는 필수 기능일 수 있다. 이에 따라서, 메모리 보호부(33)(Memory Protection Unit, MPU) 또한 TEE에서 신뢰할 수 있는 응용 프로그램을 로드하고 실행하는 데 사용하므로 실행 중인 응용 프로그램의 코드와 데이터를 보호할 수 있다. 이 백서에서는 보안 RISC-V SoC에서 보안 부팅을 제공하는 데 중요한 역할을 하는 코드 인증부(120)(코드 인증부(120))와 키 관리부(130)(키 관리부(130))라는 두 가지 주요 설계가 핵심일 수 있다..
반도체 칩(100)은 부팅 시퀀스(150)의 초기 단계에서 신뢰 체인을 설정해야 하며 OS 및 애플리케이션이 실행되는 동안 유지되어야 할 수 있다. 체인은 변경할 수 없는 부트로더가 ROM(160)(읽기 전용 메모리)에서 실행되는 첫 번째 단계에서 시작될 수 있다. 이 부트로더는 체인에서 두 번째 단계 부트로더의 서명을 암호 방식으로 확인한 다음, 이 후속 부트로더는 다음 소프트웨어 이미지 등의 서명을 다시 암호 방식으로 인증할 수 있다. 체인 끝에서 신뢰할 수 있는 애플리케이션은 SoC의 TEE(신뢰할 수 있는 실행 환경)에서 실행되기 전에 확인될 수 있다.
반도체 칩(100)의 부팅 프로세스는 하드 코딩된 명령(uncore /src/main/scala /ROM(160).scala에 있는 ROM(160) 슬레이브라고 함)을 실행하는 것으로 시작할 수 있다. 이 명령의 유일한 목적은 리셋 벡터(리셋 벡터라고 함)에서 Jump하는 것일 수 있다. 즉, 이에 따라, BRAM의 시작 부분으로 이동할 수 있다. 따라서 이러한 하드 코딩된 명령어는 구성 파일(src/main/scala/Configs.scala에 있는 치즐 코드)에 특성화되어 있는 재설정 벡터를 기반으로 계산될 수 있다.
초기 리셋 벡터는 부팅이 BRAM(일반 FPGA 실행의 경우)에서 시작하거나 DDR로 직접 시작해야 하는 명령어로 구성된 함수 make Boot ROM(src/main/scala/Low RISC Chip.scala에 있는 치즐 코드)로 이해할 수 있다. 반도체 칩(100)에서 안전한 부팅 흐름을 달성하기 위해 본 발명이 제안하는 프레임워크는 부팅 로딩 단계 사이에 코드 인증 절차를 시행하여 신뢰 체인을 설정할 수 있다. 이러한 인증은 서명 검증 절차를 통합하는 제시된 코드 인증부(120) 를 통해 수행될 수 있다.
도 4 및 도 5는 각각 종래의 부팅 흐름을 설명하는 개념도 및 본원의 일 실시예에 의한 반도체 칩(100)을 이용한 부팅 흐름을 설명하는 개념도이다.
보다 구체적으로, 도 4를 참조하면, 도 4는, SHA3 및 ECDSA의 소프트웨어 기반 구현(예: Sanctum)을 사용하는 기존 흐름을 이해할 수 있다. 소프트웨어는 RISCV 코어와 같은 프로세스 코어에서 실행될 수 있다.
한편, 도 5를 참조하면, 도 5는, 반도체 칩(100)을 이용하여 하드웨어 유닛(코드 인증부(120) 및 부팅 시퀸서(150))을 더 사용하여 보안 부팅을 구현할 수 있음을 이해할 수 있다.
본원의 일 실시예에 의한 반도체 칩(100)을 통한 하드웨어 보안 부팅은, 소프트웨어 보안 부팅보다 더 나은 성능과 에너지 효율성을 제공할 수 있다.
본원의 일 실시예에 따른 반도체 칩(100)은, RISC-V 경량 SoC에 구현된 보안 부팅 프레임워크를 수행할 수 있다. 프레임워크는 최적화된 ECDSA(Elliptic Curve Digital Signature Algorithm), SHA3(Secure Hash Algorithm 3) 해싱 알고리즘, PUF(140)(Physical Unclonable Function) 및 DMA(직접 메모리 액세스)를 사용할 수 있다.
보안 부팅은 운영체제가 로드되기 전에 부팅 프로세스 초기에 악성 코드가 로드되고 실행되는 것을 방지하기 위해 설계되었다. 이는 악성 소프트웨어가 "부트 키트를 설치하고 존재를 숨기기 위해 컴퓨터에 대한 제어를 유지하는 것을 방지하기 위한 것이다.
보안 부팅은 UEFI BIOS와 최종적으로 실행되는 소프트웨어(예: 부트로더, OS, UEFI 드라이버 및 유틸리티) 간에 신뢰 관계를 설정할 수 있다. 보안 부팅을 사용 설정하고 구성한 후에는 승인된 키로 서명된 소프트웨어 또는 펌웨어만 실행할 수 있다.
또한, 공격자가 커널 cmd 행 매개변수를 변경하지 못하도록 방지할 수 있다. 그러나 이 접근 방식은 대부분의 컴퓨터에서 새 부트로더를 설치하여 쉽게 우회할 수 있다. 본원의 일 실시예에 따른 반도체 칩(100)이 실행하는 부트로더는 원래 부트로더에 의해 부과된 제한 사항을 준수할 필요가 없을 수 있다. 이에 따라서, 많은 경우 부트로더 교체가 불필요할 수 있습니다. GRUB 및 기타 부트로더는 암호와 같은 보안 제한을 우회하도록 편집할 수 있는 별도의 구성 파일을 통해 완전히 구성할 수 있다.
도 6은 일 실시예에 의한 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법을 설명하기 위한 순서도이다.
도 6에 도시된 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법은 앞서 설명된 반도체 칩(100) 에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도, 반도체 칩(100)에 대하여 설명된 내용은 반도체 칩(100)을 이용한 소프트웨어 보안 실행 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 6을 참조하면, 반도체 칩(100)은, 소프트웨어를 실행할 수 있다(S100).
또한, 반도체 칩(100)은, 대칭 및 비대칭 암호화 키를 생성 및 배포할 수 있다(S200).
또한, 반도체 칩(100)은, 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증할 수 있다(S300).
한편, 개시된 실시예들은 컴퓨터에 의해 실행 가능한 명령어를 저장하는 기록매체의 형태로 구현될 수 있다. 명령어는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 프로그램 모듈을 생성하여 개시된 실시예들의 동작을 수행할 수 있다. 기록매체는 컴퓨터로 읽을 수 있는 기록매체로 구현될 수 있다.
컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터에 의하여 해독될 수 있는 명령어가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(160)(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래시 메모리, 광 데이터 저장장치 등이 있을 수 있다.
이상에서와 같이 첨부된 도면을 참조하여 개시된 실시예들을 설명하였다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고도, 개시된 실시예들과 다른 형태로 본 발명이 실시될 수 있음을 이해할 것이다. 개시된 실시예들은 예시적인 것이며, 한정적으로 해석되어서는 안 된다.
100: 반도체 칩
110: 프로세스 코어 120: 코드 인증부
130: 키 관리부 140: PUF(140)
150: 부팅 시퀀서 160: ROM(160)

Claims (13)

  1. 반도체 칩에 있어서,
    프로세스 코어;
    ECDSA(Elliptic Curve Digital Signature Algorithm)를 기초로, 상기 프로세스 코어에 실행되는 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 코드 인증부; 및
    상기 코드 인증부에 대칭 및 비대칭 암호화 키를 생성하여 배포하는 키 관리부;를 포함하는 반도체 칩.
  2. 제1항에 있어서,
    상기 프로세스 코어는,
    베어 메탈 부트(Bare Metal Boot) 프로그램이 로드된 ROM(160)(Readable Only Memory)를 포함하는 반도체 칩.
  3. 제2항에 있어서,
    상기 프로세스 코어는,
    BBL(Berkeley Boot Loader)를 실행하되, 상기 BBL은, 상기 반도체 칩을 초기화하는 것, 페이지 테이블 및 가상 메모리를 설정하는 것, 커널을 가상 메모리에 로드하고 상기 커널을 부팅하는 것 중 적어도 하나의 동작을 수행하는 반도체 칩.
  4. 제3항에 있어서,
    상기 BBL은, 상기 프로세스 코어에 전기적으로 연결된 외부 스토리지에 상기 커널을 로드하는 반도체 칩
  5. 제4항에 있어서,
    상기 코드 인증부는,
    상기 베어 메탈 부트의 코드의 서명을 암호화 방식으로 인증하고, 상기 베어 메탈 부트의 코드의 서명이 인증된 것에 응답하여, 상기 BBL의 코드의 서명을 암호화 방식으로 인증하는 반도체 칩.
  6. 제5항에 있어서,
    상기 프로세스 코어는,
    상기 BBL의 코드의 서명이 인증된 것에 응답하여, 애플리케이션을 실행하는 반도체 칩.
  7. 제6항에 있어서,
    상기 반도체 칩은,
    부팅 프로세스의 흐름을 시퀸스하는 부팅 시퀀서를 더 포함하는 반도체 칩.
  8. 제7항에 있어서,
    상기 부팅 시퀀서는,
    상기 코드 인증부의 인증 결과를 수집하고, 상기 부팅 프로세서의 중단 여부를 결정하는 반도체 칩.
  9. 제8항에 있어서,
    상기 부팅 시퀀서는,
    메모리에서 코드를 읽고 SHA3 하드웨어 블록을 사용하여 해시를 계산하는 반도체 칩.
  10. 제9항에 있어서,
    상기 키 관리부는,
    TRNG(True Random Number Generator), PUF(140)(Physical Unclonable Function), Challenges Storage 및 OTP(One-Time Programmable) 메모리 중 적어도 하나를 포함하는 반도체 칩.
  11. 제10항에 있어서,
    상기 PUF(140)는,
    오류 수정 코드(ECC) 인코딩 회로를 포함하여, 신드롬을 계산하고, 챌린지와 함께 메모리에 저장하는 반도체 칩.
  12. 제1항에 따른 반도체 칩을 이용하여 소프트웨어 보안 실행하는 방법에 있어서,
    프로세스 코어에 의해 소프트웨어를 실행하고,
    키 관리부에 의해 대칭 및 비대칭 암호화 키를 생성 및 배포하고,
    코드 인증부에 의해 상기 소프트웨어의 코드의 서명을 암호화 방식으로 인증하는 소프트웨어 보안 실행하는 방법
  13. 제12항의 소프트웨어 보안 실행하는 방법을 실행시킬 수 있는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
KR1020220018165A 2022-02-11 2022-02-11 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법 KR20230121382A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220018165A KR20230121382A (ko) 2022-02-11 2022-02-11 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220018165A KR20230121382A (ko) 2022-02-11 2022-02-11 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법

Publications (1)

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

Family

ID=87802003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220018165A KR20230121382A (ko) 2022-02-11 2022-02-11 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법

Country Status (1)

Country Link
KR (1) KR20230121382A (ko)

Similar Documents

Publication Publication Date Title
CN109313690B (zh) 自包含的加密引导策略验证
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
US9749141B2 (en) Secure boot devices, systems, and methods
US11106798B2 (en) Automatically replacing versions of a key database for secure boots
US11354417B2 (en) Enhanced secure boot
US20240104213A1 (en) Securing node groups
KR102089435B1 (ko) 안전한 usb 장치를 보장하는 부트 방법
KR20230121382A (ko) 반도체 칩 및 이를 이용한 소프트웨어 보안 실행 방법

Legal Events

Date Code Title Description
A201 Request for examination