KR20210046418A - 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 - Google Patents
보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 Download PDFInfo
- Publication number
- KR20210046418A KR20210046418A KR1020190130091A KR20190130091A KR20210046418A KR 20210046418 A KR20210046418 A KR 20210046418A KR 1020190130091 A KR1020190130091 A KR 1020190130091A KR 20190130091 A KR20190130091 A KR 20190130091A KR 20210046418 A KR20210046418 A KR 20210046418A
- Authority
- KR
- South Korea
- Prior art keywords
- function
- firmware
- patchable
- ram
- rom
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 79
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000012795 verification Methods 0.000 claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 10
- 238000013507 mapping Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 238
- 238000010586 diagram Methods 0.000 description 16
- 230000015654 memory Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000415 inactivating effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/66—Updates of program code stored in read-only memory [ROM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
본 발명의 실시 예에 따른 중앙처리장치(CPU), 롬(ROM), 그리고 램(RAM)을 포함하는 반도체 장치의 롬(ROM)에 프로그램된 패치 가능한 함수를 램(RAM)에 로드되는 펌웨어를 사용하여 패치하는 방법은, 상기 램에 로드될 암호화되고 전자 서명된 펌웨어 이미지를 수신하는 단계, 상기 펌웨어 이미지를 공개키와 비밀키를 사용하여 검증하는 단계, 상기 검증 결과에 따라, 상기 펌웨어 이미지를 보안키를 사용하여 복호하는 단계, 상기 펌웨어 이미지로부터 복호된 펌웨어를 상기 램에 로드하는 단계, 그리고 상기 패치 가능한 함수가 호출될 경우, 상기 펌웨어에 포함된 상기 패치 가능한 함수의 식별자에 대응하는 대체 함수를 실행하는 단계를 포함한다.
Description
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 램에 로드된 함수로 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법에 관한 것이다.
모바일 시스템을 구성하는 일부의 반도체 장치들은 펌웨어(Firmware)를 통해서 응용 프로그램이나 운영 체제(OS)와는 독립적으로 하드웨어와 같이 구동될 수 있다. 이러한 펌웨어나 기능들은 주로 롬(Read Only Memory: 이하, ROM)에 프로그램되어 부팅시나 호출시에 실행된다. 따라서, 추후에 갱신될 필요가 없는 필수적인 기능이나 펌웨어들이 반도체 장치의 롬에 프로그램되어 제공된다.
하지만, 안정된 성능과 버그 수정을 위해 반도체 장치의 출시 이후에도 이러한 펌웨어나 기능들이 새로운 버전으로 업데이트되어야 할 경우가 발생할 수 있다. 예컨대, 롬(ROM)에 구현된 기능에 오류가 있거나, 생산 당시에는 고려하지 않았던 사항을 반영해야 하는 경우가 발생할 수 있다. 이러한 상황을 대처하기 위해서 롬(ROM)의 기능들을 업데이트하기 위한 다양한 기술들이 제시되고 있다. 이러한 기술을 롬(ROM)을 패치(Patch)한다거나, 갱신(Update), 또는 대체(Replace)한다고 표현한다.
최근에는 반도체 칩들을 포함하는 시스템에 대한 보안 공격이 증가하고 있고, 공격 기술도 진보하고 있다. 따라서, 보안성을 고려한 롬(ROM)의 패치나 대체에 대한 요구가 증가하고 있다.
본 발명의 목적은 램에 로드된 펌웨어를 사용하여 롬의 기능을 패치할 때, 공격이나 오류로부터 안전한 반도체 장치 및 그것의 패치 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 중앙처리장치(CPU), 롬(ROM), 그리고 램(RAM)을 포함하는 반도체 장치의 롬(ROM)에 프로그램된 패치 가능한 함수를 램(RAM)에 로드되는 펌웨어를 사용하여 패치하는 방법은, 상기 램에 로드될 암호화되고 전자 서명된 펌웨어 이미지를 수신하는 단계, 상기 펌웨어 이미지를 공개키와 비밀키를 사용하여 검증하는 단계, 상기 검증 결과에 따라, 상기 펌웨어 이미지를 보안키를 사용하여 복호하는 단계, 상기 펌웨어 이미지로부터 복호된 펌웨어를 상기 램에 로드하는 단계, 그리고 상기 패치 가능한 함수가 호출될 경우, 상기 펌웨어에 포함된 상기 패치 가능한 함수의 식별자에 대응하는 대체 함수를 실행하는 단계를 포함한다.
본 발명의 실시 예에 따른 반도체 장치는, 적어도 하나의 패치 가능한 함수가 프로그램되는 롬(ROM), 상기 적어도 하나의 패치 가능한 함수를 대체하기 위한 대체 함수를 갖는 펌웨어가 로드되는 램(RAM), 상기 롬에 프로그램된 펌웨어 검증 및 복호화 함수를 실행하여 상기 펌웨어에 대한 사용자 인증을 수행하고, 상기 적어도 하나의 패치 가능한 함수가 호출될 때, 상기 펌웨어를 사용하여 상기 대체 함수를 실행하는 중앙처리장치(CPU), 상기 사용자 인증을 위한 공개키와 전자 서명, 그리고 상기 펌웨어의 복호를 위한 보안키를 저장하는 보안 스토리지, 그리고 상기 사용자 인증의 결과를 저장하는 검증 결과 레지스터를 포함하되, 상기 펌웨어는 상기 적어도 하나의 패치 가능한 함수와 상기 대체 함수를 맵핑하는 룩업 테이블을 포함한다.
본 발명의 실시 예에 따른 롬(ROM)에 프로그램된 제 1 함수를 실행하는 반도체 장치의 패치 방법은, 상기 제 1 함수를 대체하기 위한 램(RAM)에 로드될 암호화되고 전자 서명된 펌웨어 이미지를 수신하는 단계, 상기 펌웨어 이미지에 대한 사용자 인증을 수행하는 단계, 상기 사용자 인증의 결과에 따라, 상기 펌웨어 이미지를 복호하여 상기 램에 펌웨어로서 로드하는 단계, 그리고 상기 제 1 함수가 호출될 경우, 상기 사용자 인증의 결과에 따라 상기 펌웨어에 포함된 제 2 함수를 실행하는 단계를 포함한다.
상술한 본 발명의 실시 예에 따르면, 램에 로드된 펌웨어나 기능들로 롬을 패치할 때, 높은 보안 성능을 제공할 수 있다. 따라서, 반도체 장치의 롬에 구현된 펌웨어나 기능들에 대한 안정적인 업데이트가 가능하다.
도 1은 본 발명의 실시 예에 따른 반도체 장치의 구성을 보여주는 블록도이다.
도 2는 도 1의 롬의 패치 가능한 함수를 예시적으로 보여주는 블록도이다.
도 3은 도 2의 펌웨어의 이미지 구조를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 복호된 펌웨어의 구조를 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 롬의 함수를 패치하는 절차를 보여주는 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 반도체 장치(200)를 간략히 보여주는 블록도이다.
도 7은 도 6의 롬의 패치 가능한 함수를 예시적으로 보여주는 블록도이다.
도 8은 본 발명의 펌웨어 구조를 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 롬의 함수를 패치하는 절차를 보여주는 순서도이다.
도 10은 본 발명의 또 다른 실시 예를 간략히 보여주는 블록도이다.
도 2는 도 1의 롬의 패치 가능한 함수를 예시적으로 보여주는 블록도이다.
도 3은 도 2의 펌웨어의 이미지 구조를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 복호된 펌웨어의 구조를 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 롬의 함수를 패치하는 절차를 보여주는 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 반도체 장치(200)를 간략히 보여주는 블록도이다.
도 7은 도 6의 롬의 패치 가능한 함수를 예시적으로 보여주는 블록도이다.
도 8은 본 발명의 펌웨어 구조를 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 롬의 함수를 패치하는 절차를 보여주는 순서도이다.
도 10은 본 발명의 또 다른 실시 예를 간략히 보여주는 블록도이다.
이하에서는, 반도체 장치 또는 반도체 칩에 포함되는 롬(ROM)과 램(RAM)이 본 발명의 특징 및 기능을 설명하기 위한 구성들로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 더불어, 이하에서는 패치(Patch), 업데이트(Update), 그리고 대체(Replace)란 용어가 사용될 것이다. 하지만, 이들 용어들은 모두 롬(ROM)에 구현된 함수 대신에 램(RAM)에 로드된 대체 함수를 실행하는 동작을 일컫는 의미로 사용될 것이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 반도체 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 반도체 장치(100)는 중앙처리장치(CPU, 110), 롬(ROM, 120), 램(RAM, 130), 보안 스토리지(140), 검증 상태 레지스터(150), 그리고 인터커넥터(160)를 포함한다. 반도체 장치(100)는 상술한 구성들을 통해서 램(130)에 로드된 펌웨어(Firmware)나 함수(Function)를 사용하여 롬(120)에 프로그램된 함수들을 대체할 수 있다. 여기서, 반도체 장치(100)는 하나의 칩 또는 하나의 반도체 패키지로 구현될 수 있다. 하지만, 반도체 장치(100)의 범위는 여기의 개시에만 국한되지 않음은 잘 이해될 것이다.
CPU(110)는 반도체 장치(100)에서 수행될 펌웨어 또는 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행할 수 있다. 본 발명의 CPU(110)는 롬(120)에 프로그램된 펌웨어, 함수, 코드(Code) 또는 램(130)에 로드된 펌웨어나 코드를 실행할 수 있다. CPU(110)는 부트 시퀀스에 따라 롬(120)에 프로그램된 함수들 또는 펌웨어를 실행할 수 있다. 특히, 롬(120)으로부터 패치 가능한 함수(예를 들면, 122)를 호출해야 하는 경우, CPU(110)는 롬(120)으로부터 펌웨어 검증 및 복호화 함수(126)을 실행하게 될 것이다. 따라서, CPU(110)는 패치(Patch)를 위해 제공되는 펌웨어에 대한 검증(또는 인증)을 수행한다. 검증이 완료되면, CPU(110)는 패치를 위해 제공되는 펌웨어를 복호(Decrypt)하여 램(130)에 로드한다. 이어서, CPU(110)는 롬(120)의 패치 가능한 함수를 대신하여 램(130)에 로드된 대체 함수를 실행하게 될 것이다. 이러한 동작들은 후술하는 도면들을 통해서 보다 상세히 설명하기로 한다.
롬(120)에는 반도체 장치(100)를 구동 또는 제어하기 위한 코드들이나 펌웨어, 함수들이 프로그램될 수 있다. 예를 들면, 특정 목적을 위해 제조되는 반도체 장치(100)의 기본적인 함수들을 수행하기 위한 펌웨어가 롬(120)에 프로그램될 수 있다. 또는, 반도체 장치(100)의 부팅시 수행될 시퀀스들을 정의하는 부트 로더(Boot loader)와 같은 코드가 롬(120)에 프로그램될 수 있다. 특히, 본 발명의 롬(120)에는 패치 가능한 함수들(122, 124)이 롬(120)에 저장된다. 패치 가능한 함수들(122, 124)은 패치(또는 대체)되어야 하는 함수들 또는 펌웨어들을 의미한다. 더불어, 패치 가능한 함수들(122, 124)에 대한 대체 또는 업데이트를 수행하기 위한 펌웨어 검증 및 복호화 함수(126)가 롬(120)에 프로그램될 수 있다.
패치 가능한 함수들(122, 124)은 램(130)에 로드되는 함수들로 대체되는 펌웨어나 함수일 수 있다. 즉, 패치 가능한 함수들(122, 124)의 코드는 변경되지 않지만, 패치를 위해 제공되는 대체 함수가 램(130)에 존재하는 경우, 패치 가능한 함수들(122, 124)은 대체될 수 있다. 펌웨어 검증 및 복호화 함수(126)는 패치 가능한 함수들(122, 124)이 호출될 경우에, 패치를 위해 제공된 펌웨어를 검증하고, 검증된 펌웨어를 복호하여 램(130)에 로드하는 기능을 수행할 수 있다.
롬(120)에는 반도체 장치(100)를 제어하고 동작시키기 위한 다양한 기본 함수들이나 코드들이 프로그램될 수 있을 것이다. 롬(120)은 마스크롬(Mask ROM), 피롬(PROM, Programable ROM), 이피롬(EPROM, Erasable PROM), 이이피롬(EEPROM, Electrically Erasable PROM) 중 적어도 하나의 형태로 제공될 수 있지만, 본 발명의 롬(120)은 여기의 개시에만 국한되지 않는다.
램(130)은 반도체 장치(100)의 동작 메모리(Working memory)로 사용될 수 있다. 램(130)에는 반도체 장치(100)를 제어하기 위한 소프트웨어(또는, 펌웨어)나 데이터가 로드(Load)될 수 있다. 저장된 소프트웨어 및 데이터는 CPU(110)에 의해 구동되거나 처리된다. 본 발명의 실시 예에 따르면, 램(130)에는 복호된 펌웨어(132)가 로드될 수 있다. 복호된 펌웨어(132)는 롬(120)에 프로그램된 함수나 펌웨어를 패치(Patch)하기 위한 함수일 수 있다. 복호된 펌웨어(132)는 램(130)에 로드되기 전에 공개키 및 전자 서명을 사용하여 인증되어야 한다. 램(130)에 로드된 펌웨어(132)를 사용하여 패치 가능한 함수들(122, 124)이 대체되거나 업데이트될 수 있다.
보안 스토리지(140)는 반도체 장치(100)의 불휘발성 저장 매체(Non-volatile storage medium)로서 제공된다. 보안 스토리지(140)에는 펌웨어(132)를 인증하기 위한 공개키/전자 서명(142)이 저장될 수 있다. 펌웨어(132)는 암호화된 이미지 데이터로 반도체 장치(100)에 제공된다. 따라서, 복호된 펌웨어(132)는 펌웨어 검증 및 복호화 함수(126)에 의해서 복호된 이후에 램(130)에 로드된다. 펌웨어(132)의 복호에 사용되는 복호화 키(144)도 보안 스토리지(140)에 저장되어 있어야 한다.
그리고 보안 스토리지(140)에 저장된 공개키/전자 서명(142) 및 복호화 키(144)는 CPU(110) 이외의 구성들에 의한 접근이 차단되어야 한다. 보안 스토리지(140)는 불휘발성 메모리로 구성된다. 예를 들면, 보안 스토리지(140)는 플래시 메모리(Flash memory), PRAM, MRAM, ReRAM, FRAM 등의 불휘발성 메모리나 OTP(One Time Programming) 메모리, 퓨즈 등으로 구현될 수도 있을 것이다.
검증 상태 레지스터(150)는 램(130)에 로드된 복호된 펌웨어(132)에 대한 인증 또는 검증 결과를 저장한다. 검증 상태 레지스터(150)는 롬(120)에 구현된 함수나 펌웨어의 패치를 위해 제공되는 펌웨어(132)의 인증 결과를 저장하므로, 불휘발성 메모리로 구현될 필요는 없다. 예를 들면, 검증 상태 레지스터(150)는 제조시 미리 그 기능을 정해두는 특수 기능 레지스터(SFR: Special Function Register)로 구현될 수도 있을 것이다.
인터커넥터(160)는 반도체 장치(100)의 내부 하드웨어들 간에 네트워크를 제공하기 위한 버스(Bus) 또는 채널이다. 인터커넥터(160)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 수 있다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 데이터 버스(Data bus)는 램(120)이나 저장 장치(130)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 하드웨어들 사이의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 하드웨어들 사이의 제어 신호를 전달하는 경로를 제공한다. 하지만, 인터커넥터(160)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
본 발명의 반도체 장치(100)에 따르면, 롬(120)에 프로그램된 펌웨어나 함수들이 램(130)에 로드되는 펌웨어나 함수들에 의하여 패치될 수 있다. 특히, 패치 과정에서 램에 로드되는 펌웨어나 함수는 인증 절차를 거치게 된다. 그리고 인증 절차에서 검증된 펌웨어나 함수들만이 복호되어 램(130)에 로드될 수 있다. 따라서, 본 발명의 반도체 장치(100)는 보안이 취약해질 수 있는 롬(120)의 패치 과정에서 발생할 수 있는 공격이나 오류로부터 높은 보안 성능을 제공할 수 있다. 더불어, 본 발명의 반도체 장치(100)는 모바일 응용 프로세서, 차량용 반도체, 사물 인터넷(IoT)에 탑재되는 반도체 칩으로 구현될 수 있을 것이다.
도 2는 도 1의 롬의 패치 가능한 함수를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 패치 가능한 함수(122)는 대체 플래그 체커(122a), 펌웨어 상태 체커(122b), 대체 호출 로직(122c), 그리고 함수 바디(122d)를 포함할 수 있다. 패치 가능한 함수(122)의 상술한 구성은 램(130)에 로드된 펌웨어를 사용하여 롬(120)의 함수를 패치하기 위한 최소한의 구성이다.
대체 플래그 체커(122a)는 펌웨어(132)에 포함되는 대체 플래그(Replacement Flag)의 값을 체크한다. 패치 가능한 함수(122)가 CPU(110)에서 호출되면, 먼저 대체 플래그 체커(122a)에 의해서 패치 가능한 함수(122)가 램(130)에 로드된 펌웨어(132)로 대체 가능한지 체크된다. 램(130)에 로드된 펌웨어(132)에 포함되는 대체 함수들 각각이 롬(120)의 함수들을 대체할 수 있는지를 나타내는 대체 플래그(Replacement Flag)가 펌웨어(132)의 특정 필드에 존재해야 한다. 대체 플래그 체커(122a)는 펌웨어(132)에 기입된 대체 플래그(Replacement Flag)의 값을 체크하여, 패치 가능한 함수(122)의 대체 가능 여부를 확인할 수 있다.
펌웨어 상태 체커(122b)는 검증 상태 레지스터(150)에 저장된 펌웨어 검증 상태를 체크한다. 펌웨어 상태 체커(122b)는 펌웨어 검증 상태(Verify status)의 값이 검증 성공(Verify pass)에 해당하는 경우, 펌웨어(132)를 사용하는 패치 동작을 실행한다. 반면, 펌웨어 상태 체커(122b)는 펌웨어 검증 상태(Verify status)의 값이 검증 실패(Verify fail)에 해당하는 경우, 펌웨어(132)를 사용하는 제반 동작을 중단할 것이다. 그리고 펌웨어 상태 체커(122b)는 기존에 롬(120)에 프로그램된 함수 바디(122d)를 실행하도록 제반 시퀀스를 설정할 것이다.
대체 호출 로직(122c)는 패치 가능한 함수(122)가 CPU(110)에 의해서 호출되는지를 모니터링한다. 롬(120)에 프로그램된 코드들이나 함수들이 호출될 때, 패치 가능한 함수가 호출될 수도 있고, 패치 기능을 지원하지 않는 함수도 호출될 수 있다. 만일, 패치 가능한 함수가 호출되는 경우, 대체 호출 로직(122c)은 함수나 펌웨어의 패치를 위한 시퀀스를 활성화할 것이다.
함수 바디(122d)는 패치 가능한 함수(122)의 원래 기능을 수행하기 위하여 롬(120)에 프로그램된 함수이다. 만일, 패치 가능한 함수(122)가 호출되더라도 램(130)에 로드되는 펌웨어(132)의 인증이 실패하거나, 대체할 필요가 없는 것으로 판단되면, 함수 바디(122d)가 실행될 것이다.
이상에서는 패치 가능한 함수(122)에 포함되는 최소한의 정보들이 간략히 설명되었다. 하지만, 패치 가능한 함수(122)에는 인증 방식이나 권한 레벨에 따라 다양한 기능들이 더 추가될 수 있음은 잘 이해될 것이다.
도 3은 도 2의 펌웨어의 이미지 구조를 예시적으로 보여주는 도면이다. 도 3을 참조하면, 펌웨어 이미지(131)는 이미지 헤더(131a), 이미지 바디(131b), 그리고 이미지 푸터(131c)를 포함할 수 있다. 펌웨어 이미지(131)는 롬(120)에 프로그램된 패치 가능한 함수(122 또는 124)를 업데이트 또는 패치하기 위해 반도체 장치(100)의 외부에서 입력되는 이미지 데이터이다.
이미지 헤더(131a)는 펌웨어 이미지(131)가 램(130)에 로드되기 전에 수행되는 인증 절차에서 사용되는 정보를 갖는다. 예를 들면, 이미지 헤더(131a)는 펌웨어 이미지(131)가 허용된 공급자로부터 정당하게 제공된 것인지를 검증하기 위한 공개키(133a)와 전자 서명(133b)를 포함할 수 있다. 공개키(133a)는 보안 스토리지(140)에 저장된 공개키/전자 서명(142)에 포함된 공개키와 비교될 것이다. 만일, 공개키(133a)가 보안 스토리지(140)에 저장된 공개키와 불일치하거나, 전자 서명(133b)이 다른 경우, 펌웨어 이미지(131)에 대한 인증은 실패하게 된다.
이미지 바디(131b)는 도 2의 함수 바디(122d)를 대체하기 위한 펌웨어의 메인 정보에 해당한다. 하지만, 이미지 바디(131b)는 암호화되어 있으며, 인증이 패스되면 복호된 후에 램(130)에 로드될 것이다. 이미지 푸터(131c)는 펌웨어 이미지(131)의 각종 태그 정보들이 포함될 수 있다.
본 발명의 반도체 장치(100)는 펌웨어 이미지(131)를 수신하면, 공개키(133a)와 전자 서명(133b)을 사용하여 인증을 수행한다. 패치를 위해 제공되는 대체 함수에 구현된 기능은 정당한 사용자만이 구성할 수 있어야 한다. 악의적인 사용자가 구성한 대체 함수에 의해 보안 체계가 위협 받을 수 있기 때문이다. 따라서, 펌웨어 이미지(131)는 암호화되고 전자 서명이 되어 있어야 한다. 암호화와 전자 서명에 사용될 키는 반도체 장치(100) 내의 보안 스토리지(140)에 저장되어 있어야 하며, 앞서 언급한 CPU(110) 만이 접근하여 사용할 수 있어야 한다.
만일, 펌웨어 이미지(131)에 대한 인증이 실패하면, CPU(110)는 패치 절차를 중지하고 롬(120)에 프로그램된 패치 가능한 함수(122)의 함수 바디(122d)를 실행할 것이다. 반면, 인증이 성공하면, CPU(110)는 패치 절차에 따라 이미지 바디(131b)를 복호하여 램(130)에 패치를 위한 펌웨어(132)로서 저장하게 될 것이다.
도 4는 본 발명의 복호된 펌웨어의 구조를 예시적으로 보여주는 도면이다. 도 4를 참조하면, 램(130)에 로드되는 복호된 펌웨어(132)는 룩업 테이블(132a, Look-up table)과 대체 함수들(132b, 132c)을 포함할 수 있다.
룩업 테이블(132a)은 롬(120)의 패치 가능한 함수(122 또는 124)가 실행될 때 CPU(110)에 대체 가능 여부와 대체 함수들(132b, 132c)의 램(130) 상에서의 위치 정보를 제공한다. 룩업 테이블(132a)은 함수 식별자(Function ID), 대체 플래그(Replacement Flag), 그리고 대체 함수의 위치(Location)에 대한 정보를 포함한다. 예를 들면, 롬(120)의 패치 가능한 함수(122)가 CPU(110)에 의해서 실행되는 경우를 가정하기로 하자. 패치 가능한 함수(122)의 함수 식별자(Function ID)는 'ID_1'이므로, 룩업 테이블(132a)의 'ID_1'에 대응하는 정보를 참조하여 패치 가능한 함수(122)의 패치가 수행될 것이다. 그리고 룩업 테이블(132a)의 'ID_1'에 기재된 대체 플래그(Replacement Flag)의 값이 'Yes'에 해당하고, 대체 함수의 위치는 램(130)의 어드레스(Addr_1)에 대응한다. 따라서, 패치 가능한 함수(122)는 램(130)의 어드레스(Addr_1)에 로드된 대체 함수(132b)에 의해서 패치될 수 있음을 알 수 있다.
반면, 룩업 테이블(132)에 기재된 함수 식별자 'ID_2'에 대응하는 롬(120)의 함수에 대응하는 대체 플래그(Replacement Flag)는 'No'에 해당한다. 따라서, 함수 식별자 'ID_2'의 함수가 실행되는 경우에는 램(130)에 로드된 함수나 펌웨어에 의한 패치는 발생하지 않을 것이다. 함수 식별자 'ID_n'에 대응하는 대체 플래그(Replacement Flag)는 'Yes'이다. 따라서, 함수 식별자 'ID_n'의 함수가 실행되는 경우에는 패치 가능한 함수(124)는 램(130)의 어드레스(Addr_n)에 로드된 대체 함수(132c)에 의해서 패치될 수 있다.
도 5는 본 발명의 실시 예에 따른 롬의 함수를 패치하는 절차를 보여주는 순서도이다. 도 5를 참조하면, 본 발명의 반도체 장치(100, 도 1 참조)는 롬(120, 도 1 참조)에 프로그램된 패치 가능한 함수나 펌웨어가 호출되는 경우, 램(130, 도 1 참조)에 로드되는 펌웨어에 대한 인증(Verification) 및 복호(Decryption)를 수행한다. 그리고, 램(130)에 저장된 룩업 테이블(132a, 도 4 참조)을 참조하여 대체 가능 여부 및 대체 함수의 위치가 확인될 수 있다.
S110 단계에서, CPU(110)는 암호화되고 전자 서명된 펌웨어 이미지(131, 도 3 참조)를 불러오거나(Fetch) 또는 수신한다. 펌웨어 이미지(131)는 반도체 장치(100)의 외부에서 입력될 수 있다. 예컨대, 펌웨어 이미지(131)는 반도체 장치(100)의 펌웨어 업데이트를 위해 제공되는 스토리지나 업데이트 장비로부터 제공될 수도 있을 것이다.
S120 단계에서, CPU(110)는 암호화된 펌웨어 이미지(131)에 대한 인증 또는 검증 동작을 수행한다. 예를 들면, CPU(110)는 펌웨어 이미지(131)에 포함된 공개키(133a)와 전자 서명(133b)을 반도체 장치(100)에 포함된 보안 스토리지(140)에 저장된 공개키/전자 서명(142)과 비교할 수 있다. 만일, 공개키와 전자 서명들 중 어느 하나라도 일치하지 않으면, 암호화된 펌웨어 이미지(131)에 대한 검증은 실패로 판정될 것이다. 더불어, CPU(110)는 암호화된 펌웨어 이미지(131)에 대한 검증 결과를 보안 스토리지(140)에 구비된 검증 상태 레지스터(150)에 저장한다.
S125 단계에서, CPU(110)는 암호화된 펌웨어 이미지(131)에 대한 검증 결과에 따른 동작 분기를 수행한다. 만일, 암호화된 펌웨어 이미지(131)에 대한 검증이 실패로 결정되면(No 방향), 절차는 S180 단계로 이동한다. 반면, 암호화된 펌웨어 이미지(131)에 대한 검증이 성공으로 결정되면(Yes 방향), 절차는 S130 단계로 이동한다.
S130 단계에서, CPU(110)는 암호화된 펌웨어 이미지(131)를 복호한다. 예를 들면, CPU(110)는 보안 스토리지(140)에 저장된 복호화 키(144, 도 1 참조)를 사용하여 암호화된 펌웨어 이미지(131)를 복호할 수 있다. 복호된 펌웨어(132)는 램(130)에 로드될 것이다. 복호화 과정에서 CPU(110)는 룩업 테이블(132a)를 구성하고, 램(130) 상에서의 대체 함수들의 어드레스(Addr_i, i는 자연수)를 생성할 수 있다. 램(130)에 복호된 펌웨어(132)가 로드되면, 이후로는 롬(120)의 패치 가능한 함수들이 호출될 때마다 룩업 테이블(132a)이 참조될 것이다.
S140 단계에서, CPU(110)에 의해서 패치 가능한 함수가 호출된다. 예를 들면, 복수의 패치 가능한 함수들 중에서 어느 하나의 패치 가능한 함수(122)가 호출될 수 있을 것이다. 패치 가능한 함수의 호출 이벤트는 부팅 중에 발생할 수도 있고, 반도체 장치(100)의 구동 중에 발생할 수도 있다.
S150 단계에서, CPU(110)는 펌웨어(132)의 유효성을 확인하기 위해 검증 상태 레지스터(150)를 체크한다. 즉, CPU(110)는 S120 단계에서 수행된 검증 결과를 참조하기 위해 검증 상태 레지스터(150)에 저장된 검증 결과를 읽어 낸다. 만일, 검증 상태 레지스터(150)의 값이 검증 실패(Fail)인 경우, 절차는 S180 단계로 이동할 것이다. 반면, 검증 상태 레지스터(150)의 값이 검증 성공(Pass)에 대응하는 경우, 절차는 S160 단계로 이동할 것이다.
S160 단계에서, CPU(110)는 룩업 테이블(132a)에 포함된 대체 플래그(Replacement Flag)를 체크한다. 예를 들면, S140 단계에서 호출된 패치 가능한 함수(122)의 경우, 룩업 테이블(132a) 상에서 함수 식별자(ID_1)에 대응하는 대체 플래그(Replacement Flag)가 체크될 것이다. 만일, 대체 플래그(Replacement Flag)의 값이 대체 가능함을 나타내는 'Yes'인 경우, 절차는 S170 단계로 이동한다. 반면, 대체 플래그(Replacement Flag)의 값이 대체 불가함을 나타내는 'No'인 경우, 절차는 S180 단계로 이동한다.
S170 단계에서, CPU(110)는 호출된 패치 가능한 함수를 대체하기 위한 램(130)에 로드된 대체 함수를 실행할 것이다. 예컨대, S140 단계에서 호출된 패치 가능한 함수(122) 대신에 함수 식별자(ID_1)에 대응하는 어드레스(Addr_1)에 대응하는 대체 함수(132b)가 실행될 것이다.
S180 단계에서, CPU(110)는 롬(120)에 저장된 원래 함수(122)를 실행할 것이다. 즉, 암호화된 펌웨어 이미지(131)에 대한 검증이 실패한 경우 이거나, 대체 플래그(Replacement Flag)의 값이 대체 불가를 지시하는 'No'인 경우, CPU(110)는 롬(120)에 저장된 패치 가능한 함수(122)의 함수 바디(122d)를 실행해야 한다.
이상에서는 본 발명의 실시 예에 따른 롬(120)에 존재하는 펌웨어나 함수를 대체하기 위해 램(130)에 로드되는 펌웨어에 대한 검증 방법이 간략히 설명되었다.
도 6은 본 발명의 다른 실시 예에 따른 반도체 장치(200)를 간략히 보여주는 블록도이다. 도 6을 참조하면, 반도체 장치(200)는 CPU(210), 롬(220), 램(230), 보안 스토리지(240), 검증 상태 레지스터(250), 그리고 인터커넥터(260)를 포함한다. 반도체 장치(200)는 상술한 구성들을 통해서 램(230)에 로드된 펌웨어(Firmware)나 함수(Function)를 사용하여 롬(220)의 기능들을 대체할 수 있다. 특히, 본 발명의 반도체 장치(200)의 경우, 롬(220)의 함수들 중에서 불필요한 함수들은 부팅 시에 제외가 가능하고, 이전의 패치 버전이 사용될 수 없도록 설정될 수 있다.
CPU(210)는 반도체 장치(200)에서 수행되는 펌웨어 또는 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행할 수 있다. CPU(210)는 부트 시퀀스에 따라 롬(220)에 프로그램된 함수들 또는 펌웨어를 실행할 수 있다. 롬(220)의 패치 가능한 함수(예를 들면, 222)가 호출되어 실행되는 경우, CPU(210)는 펌웨어 검증 및 복호화 함수(226)을 실행하게 될 것이다. 펌웨어 검증 및 복호화 함수(226)의 실행에 따라, CPU(210)는 패치(Patch)를 위해 제공되는 함수나 펌웨어에 대한 인증 또는 검증을 수행할 수 있다. CPU(210)는 패치되어야 할 롬(220)의 함수를 대신하여 램(230)에 로드된 함수를 실행하게 될 것이다.
롬(220)에는 반도체 장치(200)를 구동 또는 제어하기 위한 코드들이나 펌웨어, 함수들이 프로그램될 수 있다. 예를 들면, 특정 목적을 위해 제조되는 반도체 장치(200)의 기본적인 함수들을 수행하기 위한 펌웨어가 롬(220)에 프로그램될 수 있다. 또는, 반도체 장치(200)의 부팅시 수행될 시퀀스들을 정의하는 부트 로더(Boot loader)와 같은 코드가 롬(220)에 프로그램될 수 있다. 특히, 본 발명의 롬(220)에는 패치 가능한 함수들(222, 224)이 롬(220)에 프로그램된다. 패치 가능한 함수들(222, 224)은 추후 업데이트되어야 하는 기능들 또는 펌웨어를 의미한다. 더불어, 패치 가능한 함수들(222, 224)에 대한 대체 또는 업데이트를 수행하기 위한 펌웨어 검증 및 복호화 함수(226)가 롬(220)에 프로그램될 수 있다. 롬(120)은 마스크롬(Mask ROM), 피롬(PROM, Programable ROM), 이피롬(EPROM, Erasable PROM), 이이피롬(EEPROM, Electrically Erasable PROM) 중 적어도 하나의 형태로 제공될 수 있을 것이다.
램(230)은 반도체 장치(200)의 동작 메모리(Working memory)로 사용될 수 있다. 램(230)에는 반도체 장치(200)를 제어하기 위한 소프트웨어(또는, 펌웨어)나 데이터가 로드(Load)될 수 있다. 저장된 소프트웨어 및 데이터는 CPU(210)에 의해 구동되거나 처리된다. 본 발명의 실시 예에 따르면, 램(230)에는 롬(220)의 함수나 펌웨어를 패치하기 위한 펌웨어(232)가 로드될 수 있다. 펌웨어(232)는 램(230)에 로드되기 전에 공개키/전자 서명을 사용하여 인증되어야 한다. 그리고 인증된 펌웨어(232)가 복호되어 램(230)에 로드될 수 있다. 램(230)에 로드된 펌웨어(232)를 사용하여 패치 가능한 함수들(222, 224)이 대체되거나 업데이트될 수 있다.
보안 스토리지(240)는 반도체 장치(200)의 불휘발성 저장 매체(Non-volatile storage medium)로서 제공된다. 보안 스토리지(240)에는 펌웨어(232)를 인증하기 위한 보안키/전자 서명(242)이 저장될 수 있다. 펌웨어(232)는 암호화된 데이터로 반도체 장치(200)에 제공된다. 따라서, 펌웨어(232)는 펌웨어 검증 및 복호화 함수(226)에 의해서 복호된 이후에 램(230)에 로드된다. 펌웨어(232)의 복호에 사용되는 복호화 키(244)도 보안 스토리지(240)에 저장되어 있어야 한다.
더불어, 보안 스토리지(240)에는 롤백 카운터(246), 디스에이블 플래그(249), 인증 레벨 키(249)가 포함될 수 있다. 롤백 카운터(246)는 펌웨어(232)의 패치 버전을 지시한다. 예를 들면, 패치를 위해서 생성된 펌웨어(232)의 버전과 롤백 카운터(246)에 프로그램된 카운트값이 불일치하면, 펌웨어(232)의 실행은 차단될 것이다. 롤백 카운터(246)를 통해서 이전 버전의 펌웨어(232)를 사용하는 악의적인 공격 시도를 차단할 수 있다. 디스에이블 플래그(248)는 롬(220)에 존재하는 함수나 펌웨어 중에서 오류가 존재하거나 불필요한 것들은 부팅시에 비활성화시키기 위한 플래그 값이다. 권한 키(249)는 인증을 위한 사용자 권한에 따른 인증 키를 제공할 수 있다.
검증 상태 레지스터(250)는 램(230)에 로드된 펌웨어(232)에 대한 인증 또는 검증 결과를 저장한다. 검증 상태 레지스터(250)는 롬(220)에 구현된 함수나 펌웨어의 패치를 위해 제공되는 펌웨어(232)의 인증 결과를 저장하므로, 휘발성 메모리로 구현될 수도 있다.
인터커넥터(260)는 반도체 장치(200)의 내부 하드웨어들 간에 네트워크를 제공하기 위한 버스(Bus) 또는 채널로 제공된다.
본 발명의 반도체 장치(200)에 따르면, 롬(220)에 프로그램된 펌웨어나 함수들이 램(230)에 로드되는 펌웨어나 함수들을 사용하여 패치될 수 있다. 특히, 패치 과정에서 펌웨어나 함수는 사용자 인증 절차를 거치게 된다. 그리고 인증 절차에서 검증된 펌웨어나 함수들만이 복호되어 램(230)에 로드될 수 있다. 더불어, 롤백 카운터(246)의 적용에 따라 버전이 불일치하는 펌웨어의 실행은 차단된다. 그리고 디스에이블 플래그(248)를 사용하여 롬(220)의 펌웨어나 함수들 중에서도 오류가 존재하거나 불필요한 것들의 실행이 차단될 수 있다. 따라서, 본 발명의 반도체 장치(200)는 보안이 취약해질 수 있는 롬(20)의 패치 과정에서 발생할 수 있는 공격이나 오류로부터 높은 보안 성능을 제공할 수 있다.
도 7은 도 6의 롬의 패치 가능한 함수를 예시적으로 보여주는 블록도이다. 도 7을 참조하면, 패치 가능한 함수(222)는 대체 플래그 체커(222a), 펌웨어 상태 체커(222b), 대체 호출 로직(222c), 디스에이블 플래그 체커(222d), 권한 체커(222e), 그리고 함수 바디(222f)를 포함할 수 있다. 대체 플래그 체커(222a)는 펌웨어(232)에 포함되는 대체 플래그(Replacement Flag)의 값을 체크한다. 패치 가능한 함수(222)가 CPU(210)에서 호출되면, 먼저 대체 플래그 체커(222a)에 의해서 패치 가능한 함수(222)가 램(230)에 로드된 함수나 펌웨어(232)로 대체 가능한지 체크된다. 램(230)에 로드된 함수들 각각이 롬(220)의 함수들을 대체할 수 있는지를 나타내는 대체 플래그(Replacement Flag)가 펌웨어(232)의 특정 필드에 존재한다. 대체 플래그 체커(222a)는 복호된 펌웨어(232)에 기입된 대체 플래그(Replacement Flag)의 값을 체크하여, 패치 가능한 함수(222)의 대체 가능 여부를 확인할 수 있다.
펌웨어 상태 체커(222b)는 검증 상태 레지스터(250)에 저장된 펌웨어(232)에 대한 검증 결과를 체크한다. 펌웨어 상태 체커(222b)는 펌웨어 검증 상태의 값이 검증 성공(Verify pass)에 해당하는 경우, 펌웨어(232)를 사용하는 패치 동작을 실행한다. 반면, 펌웨어 상태 체커(222b)는 펌웨어 검증 상태의 값이 검증 실패(Verify fail)에 해당하는 경우, 펌웨어(232)를 사용하는 제반 동작을 중단할 것이다. 그리고 펌웨어 상태 체커(222b)는 기존에 롬(120)에 프로그램된 함수 바디(222f)를 실행하도록 제반 시퀀스를 설정할 것이다.
대체 호출 로직(222c)는 패치 가능한 함수(222)가 CPU(210)에 의해서 호출되는지를 모니터링한다. 롬(220)에 프로그램된 코드들이나 함수들이 호출될 때, 패치 가능한 함수가 호출될 수도 있고, 패치 기능을 지원하지 않는 함수도 호출될 수 있다. 만일, 패치 가능한 함수가 호출되는 경우, 대체 호출 로직(222c)은 함수나 펌웨어의 패치를 위한 시퀀스를 활성화할 것이다.
디스에이블 플래그 체커(222d)가 디스에이블 플래그(248)를 참조하여 롬(220)에 기록된 펌웨어나 함수들 중에서 오류가 존재하거나 불필요한 것들의 실행을 차단한다. 권한 체커(222e)는 펌웨어(232)의 룩업 테이블에 포함되는 권한 레벨에 따라 패치 권한을 제공할 수 있다.
함수 바디(222f)는 패치 가능한 함수(222)의 최초 프로그램된 형태의 함수이다. 만일, 패치 가능한 함수(222)가 호출되더라도 램(230)에 로드되는 펌웨어의 인증이 실패하거나, 대체할 필요가 없는 것으로 판단되면, 함수 바디(222f)가 실행될 것이다.
이상에서는 패치 가능한 함수(222)에 포함되는 정보들이 간략히 설명되었다. 하지만, 패치 가능한 함수(222)에는 인증 방식이나 보안 레벨에 따라 다양한 기능들이 더 추가될 수 있음은 잘 이해될 것이다.
도 8은 본 발명의 펌웨어 구조를 예시적으로 보여주는 도면이다. 도 8을 참조하면, 램(230)에 로드되는 펌웨어(232)는 룩업 테이블(232a)과 대체 함수들(232b, 232c)을 포함할 수 있다.
룩업 테이블(232a)은 롬(220)의 패치 가능한 함수(222 또는 224)가 실행될 때 CPU(210)에 대체 가능 여부와 대체 함수들(232b, 232c)의 램(230) 상에서의 위치 정보를 제공한다. 룩업 테이블(232a)은 함수 식별자(Function ID), 대체 플래그(Replacement Flag), 권한 레벨(Authority Level), 그리고 대체 함수의 위치(Location)에 대한 정보를 포함한다. 예를 들면, 롬(220)의 패치 가능한 함수(222)가 실행되는 경우를 가정하기로 하자. 패치 가능한 함수(222)의 함수 식별자(Function ID)는 'ID_1'이므로, 룩업 테이블(232a)의 'ID_1'에 대응하는 정보를 참조하여 패치 가능한 함수(222)의 패치가 수행될 것이다. 그리고 대체 플래그(Replacement Flag)의 값이 'Yes'에 해당하고, 대체 함수의 위치는 램(230)의 어드레스(Addr_1)에 대응한다. 더불어, 권한 레벨(Authority Level)이 '루트(Root)'인 경우, 패치 또는 대체를 요구하는 사용자의 권한이 시스템의 루트 권한을 가진 것을 의미한다. 따라서, 패치 가능한 함수(222)는 램(230)의 어드레스(Addr_1)에 로드된 대체 함수(232b)에 의해서 패치될 수 있으며, 패치를 요구한 사용자는 시스템의 루트 권한을 가진 사용자임을 알 수 있다.
반면, 룩업 테이블(232a)에 기재된 함수 식별자 'ID_2'에 대응하는 롬(220)의 함수에 대응하는 대체 플래그(Replacement Flag)는 'No'에 해당한다. 따라서, 함수 식별자 'ID_2'의 함수가 실행되는 경우에는 램(230)에 로드된 함수나 펌웨어에 의한 패치는 발생하지 않을 것이다. 함수 식별자 'ID_n'에 대응하는 대체 플래그(Replacement Flag)는 'Yes'이다. 따라서, 함수 식별자 'ID_n'의 함수가 실행되는 경우에는 패치 가능한 함수(224)는 램(230)의 어드레스(Addr_n)에 로드된 대체 함수(232c)에 의해서 패치될 수 있다.
도 9는 본 발명의 실시 예에 따른 롬의 함수를 패치하는 절차를 보여주는 순서도이다. 도 9를 참조하면, 본 발명의 반도체 장치(200, 도 6 참조)는 롬(220)에 프로그램된 패치 가능한 함수나 펌웨어가 호출되는 경우, 램(230)에 로드되는 펌웨어 이미지에 대한 사용자 인증 및 복호를 수행한다. 그리고, 램(230)에 저장된 룩업 테이블(232a, 도 8 참조)을 참조하여 대체 가능 여부 및 대체 함수의 위치를 확인할 수 있다.
S210 단계에서, CPU(110)는 롤백 카운터(246)를 체크한다. CPU(110)는 보안 스토리지(240) 내에 기입된 롤백 카운터(246)의 값이 램(230)에 로드된 펌웨어(232)의 패치 버전과 일치되는지 판단할 것이다. 만일, 롤백 카운터(246)의 값이 펌웨어(232)의 패치 버전과 불일치하는 경우(Fail), 제반 절차는 종료된다. 하지만, 롤백 카운터(246)의 값이 펌웨어(232)의 패치 버전과 일치하는 경우(Pass), 절차는 S215 단계로 이동한다.
S215 단계에서, CPU(210)는 암호화되고 전자 서명된 펌웨어 이미지를 패치(Fetch)하거나 또는 수신한다. 펌웨어 이미지는 반도체 장치(200)의 외부에서 입력될 수 있다. 예컨대, 펌웨어 이미지는 반도체 장치(200)의 펌웨어 업데이트를 위해 제공되는 스토리지나 업데이트 장치로부터 제공될 수도 있을 것이다.
S220 단계에서, CPU(210)는 암호화된 펌웨어 이미지에 대한 인증 또는 검증 동작을 수행한다. 예를 들면, CPU(210)는 펌웨어 이미지에 포함된 공개키와 전자 서명과 보안 스토리지(240)에 저장된 공개키/전자 서명(242)을 비교할 수 있다. 만일, 공개키와 전자 서명들 중 어느 하나라도 일치하지 않으면, 암호화된 펌웨어 이미지에 대한 검증은 실패로 판정될 것이다. 더불어, CPU(210)는 암호화된 펌웨어 이미지에 대한 검증 결과를 검증 상태 레지스터(250)에 저장한다.
S225 단계에서, CPU(210)는 암호화된 펌웨어 이미지(231)에 대한 검증 결과에 따른 동작 분기를 수행한다. 만일, 암호화된 펌웨어 이미지에 대한 검증이 실패로 결정되면(No 방향), 절차는 S280 단계로 이동한다. 반면, 암호화된 펌웨어 이미지에 대한 검증이 성공으로 결정되면(Yes 방향), 절차는 S230 단계로 이동한다.
S230 단계에서, CPU(210)는 암호화된 펌웨어 이미지를 복호한다. 예를 들면, CPU(210)는 보안 스토리지(240)에 저장된 복호화 키(244)를 사용하여 암호화된 펌웨어 이미지를 복호할 수 있다. 복호된 펌웨어(232)는 램(230)에 로드될 것이다. 복호화 과정에서 CPU(210)는 룩업 테이블(232a)를 구성하고, 램(230) 상에서의 대체 함수들의 어드레스를 생성할 수 있다. 램(230)에 복호된 펌웨어(232)가 로드되면, 이후로는 롬(220)의 패치 가능한 함수들이 호출될 때마다 룩업 테이블(232a)이 참조될 것이다.
S240 단계에서, CPU(210)에 의해서 패치 가능한 함수가 호출된다. 예를 들면, 패치 가능한 함수(222)가 호출될 수 있을 것이다. 패치 가능한 함수의 호출 이벤트는 부팅 중에 발생할 수도 있고, 반도체 장치(200)의 구동 중에 발생할 수도 있다.
S250 단계에서, CPU(210)는 디스에이블 플래그(248)을 체크한다. 만일, 디스에이블 플래그(248)의 값이 디스에이블(Disable)인 경우, 제반 절차는 종료될 것이다. 반면, 디스에이블 플래그(248)의 값이 인에이블(Enable)인 경우, 절차는 S255 단계로 이동할 것이다.
S255 단계에서, CPU(210)는 복호된 펌웨어(232)의 유효성을 확인하기 위해 검증 상태 레지스터(250)를 체크한다. 즉, CPU(210)는 S220 단계에서 수행된 검증 결과를 참조하기 위해 검증 상태 레지스터(250)에 저장된 검증 결과를 읽어 낸다. 만일, 검증 상태 레지스터(250)의 값이 검증 실패(Fail)인 경우, 절차는 S280 단계로 이동할 것이다. 반면, 검증 상태 레지스터(250)의 값이 검증 성공(Pass)에 대응하는 경우, 절차는 S260 단계로 이동할 것이다.
S260 단계에서, CPU(210)는 룩업 테이블(232a)에 포함된 대체 플래그(Replacement Flag)를 체크한다. 예를 들면, S240 단계에서 호출된 패치 가능한 함수(222)의 경우, 룩업 테이블(232a) 상에서 함수 식별자(ID_1)에 대응하는 대체 플래그(Replacement Flag)가 체크될 것이다. 만일, 대체 플래그(Replacement Flag)의 값이 대체 가능함을 나타내는 'Yes'인 경우, 절차는 S265 단계로 이동한다. 반면, 대체 플래그(Replacement Flag)의 값이 대체 불가함을 나타내는 'No'인 경우, 절차는 S280 단계로 이동한다.
S260 단계에서, CPU(210)는 룩업 테이블(232a)에 기재된 권한 레벨(Authority level)을 체크한다. 만일, 권한 레벨(Authority level)이 대체 가능함을 나타내면(Acceptable), 절차는 S270 단계로 이동한다. 하지만, 권한 레벨(Authority level)이 대체 불가함을 나타내면(Not acceptable), 절차는 S280 단계로 이동한다.
S270 단계에서, CPU(210)는 호출된 패치 가능한 함수를 대체하기 위한 램(230)에 로드된 대체 함수를 실행할 것이다. 예컨대, S240 단계에서 호출된 패치 가능한 함수(222) 대신에 함수 식별자(ID_1)에 대응하는 어드레스(Addr_1)에 대응하는 대체 함수(232b)가 실행될 것이다.
S280 단계에서, CPU(210)는 롬(220)에 저장된 원래 함수(222)를 실행할 것이다. 즉, 암호화된 펌웨어 이미지에 대한 검증이 실패한 경우나 대체 플래그의 값이 대체 불가 'No'에 해당하는 경우, CPU(210)는 롬(220)에 저장된 원래 함수(222)를 실행해야 한다.
이상에서는 본 발명의 실시 예에 따른 롬(220)에 존재하는 펌웨어나 함수를 대체하기 위해 램(230)에 로드되는 펌웨어 또는 함수에 대한 검증 방법이 간략히 설명되었다.
도 10은 본 발명의 또 다른 실시 예를 간략히 보여주는 블록도이다. 도 10을 참조하면, 본 발명의 반도체 장치(300)는 임베디드(Embedded)되지 않은 램(400)을 동작 메모리로 사용할 수 있다. 따라서, 반도체 장치(300)는 메모리 컨트롤러(330)를 사용하여 램(400)을 제어하고, 접근할 수 있다. 램(400)이 반도체 장치(300)의 외부에 위치하는 것을 제외하고는 도 10의 반도체 장치(300)의 동작은 실질적으로 도 1의 그것과 동일하다. 따라서, 이것들에 대한 구체적인 설명은 생략하기로 한다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
Claims (20)
- 반도체 장치의 롬(ROM)에 프로그램된 패치 가능한 함수를 램(RAM)에 로드되는 펌웨어를 사용하여 패치하는 방법에 있어서:
상기 램에 로드될 암호화되고 전자 서명된 펌웨어 이미지를 수신하는 단계;
상기 펌웨어 이미지를 공개키와 비밀키를 사용하여 검증하는 단계;
상기 검증 결과에 따라, 상기 펌웨어 이미지를 보안키를 사용하여 복호하는 단계;
상기 펌웨어 이미지로부터 복호된 펌웨어를 상기 램에 로드하는 단계; 그리고
상기 패치 가능한 함수가 호출될 경우, 상기 펌웨어에 포함된 상기 패치 가능한 함수의 식별자에 대응하는 대체 함수를 실행하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 롬에는 상기 펌웨어 이미지를 상기 공개키와 상기 비밀키를 사용하여 인증하고, 암호화된 상기 펌웨어 이미지를 상기 비밀키를 사용하여 복호하는 펌웨어 검증 및 복호화 함수가 포함되는 방법. - 제 1 항에 있어서,
상기 펌웨어는:
상기 패치 가능한 함수를 대체하기 위한 대체 함수와; 그리고
상기 패치 가능한 함수와 상기 대체 함수를 맵핑하는 룩업 테이블을 포함하는 방법. - 제 3 항에 있어서,
상기 룩업 테이블은, 상기 패치 가능한 함수의 상기 대체 함수로의 대체 가능 여부를 지시하는 대체 플래그와, 상기 대체 함수의 상기 램 상에서의 어드레스를 포함하는 방법. - 제 4 항에 있어서,
상기 패치 가능한 함수는 중앙처리장치에 의해서 호출될 경우에 상기 대체 플래그를 체크하고, 상기 검증 결과를 체크하는 기능을 포함하는 방법. - 제 1 항에 있어서,
상기 반도체 장치는 상기 공개키, 상기 비밀키, 그리고 상기 보안키를 저장하기 위한 보안 스토리지를 더 포함하는 방법. - 제 6 항에 있어서,
상기 보안 스토리지는 상기 중앙처리장치만이 접근 가능하도록 제어되는 방법. - 제 7 항에 있어서,
상기 반도체 장치는 상기 검증 결과를 저장하는 레지스터를 포함하는 방법. - 제 1 항에 있어서,
상기 반도체 장치는 상기 패치 가능한 함수의 패치 버전 정보를 저장하는 롤백 카운터를 포함하며, 상기 펌웨어 이미지에 저장된 버전 정보와 상기 롤백 카운터를 비교하는 단계를 더 포함하는 방법. - 제 9 항에 있어서,
상기 롤백 카운터와 상기 버전 정보가 불일치하는 경우, 상기 패치 가능한 함수의 실행은 종료되는 방법. - 반도체 장치에 있어서:
적어도 하나의 패치 가능한 함수가 프로그램되는 롬(ROM);
상기 적어도 하나의 패치 가능한 함수를 대체하기 위한 대체 함수를 갖는 펌웨어가 로드되는 램(RAM);
상기 롬에 프로그램된 펌웨어 검증 및 복호화 함수를 실행하여 상기 펌웨어에 대한 사용자 인증을 수행하고, 상기 적어도 하나의 패치 가능한 함수가 호출될 때, 상기 펌웨어를 사용하여 상기 대체 함수를 실행하는 중앙처리장치(CPU);
상기 사용자 인증을 위한 공개키와 전자 서명, 그리고 상기 펌웨어의 복호를 위한 보안키를 저장하는 보안 스토리지; 그리고
상기 사용자 인증의 결과를 저장하는 검증 결과 레지스터를 포함하되,
상기 펌웨어는 상기 적어도 하나의 패치 가능한 함수와 상기 대체 함수를 맵핑하는 룩업 테이블을 포함하는 반도체 장치. - 제 11 항에 있어서,
상기 적어도 하나의 패치 가능한 함수는 함수 식별자를 포함하고,
상기 룩업 테이블에는 상기 함수 식별자별 대체 플래그와 상기 대체 함수의 상기 램 상에서의 어드레스가 포함되는 반도체 장치. - 제 12 항에 있어서,
상기 검증 결과 레지스터에 저장된 상기 사용자 인증의 결과가 실패에 대응하는 경우 또는 상기 대체 플래그가 비활성화된 경우에는, 상기 대체 함수의 실행은 차단되고 상기 적어도 하나의 패치 가능한 함수가 실행되는 반도체 장치. - 제 13 항에 있어서,
상기 적어도 하나의 패치 가능한 함수는, 상기 중앙처리장치에 의해서 호출될 경우에 상기 대체 플래그를 체크하고, 상기 사용자 인증 결과를 체크하는 기능을 포함하는 반도체 장치. - 제 12 항에 있어서,
상기 룩업 테이블에는 상기 함수 식별자별 사용자의 권한 레벨 정보를 더 포함하는 반도체 장치. - 제 10 항에 있어서,
상기 적어도 하나의 패치 가능한 함수의 패치 버전 정보를 저장하는 롤백 카운터를 더 포함하며,
상기 중앙처리장치는 상기 펌웨어에 저장된 버전 정보와 상기 롤백 카운터를 비교하는 반도체 장치. - 제 16 항에 있어서,
상기 중앙처리장치는 상기 펌웨어에 저장된 버전 정보와 상기 롤백 카운터가 불일치하는 경우, 상기 패치 가능한 함수 및 상기 사용자 인증의 실행을 종료시키는 반도체 장치. - 롬(ROM)에 프로그램된 제 1 함수를 실행하는 반도체 장치의 패치 방법에 있어서:
상기 제 1 함수를 대체하기 위한 램(RAM)에 로드될 암호화되고 전자 서명된 펌웨어 이미지를 수신하는 단계;
상기 펌웨어 이미지에 대한 사용자 인증을 수행하는 단계;
상기 사용자 인증의 결과에 따라, 상기 펌웨어 이미지를 복호하여 상기 램에 펌웨어로서 로드하는 단계; 그리고
상기 제 1 함수가 호출될 경우, 상기 사용자 인증의 결과에 따라 상기 펌웨어에 포함된 제 2 함수를 실행하는 단계를 포함하는 패치 방법. - 제 18 항에 있어서,
상기 사용자 인증이 실패에 대응하는 경우, 상기 제 1 함수가 실행되는 패치 방법. - 제 18 항에 있어서,
상기 사용자 인증을 수행하는 단계는,
상기 펌웨어 이미지에 포함되는 공개키 및 전자 서명과 상기 반도체 메모리 장치에 구비된 보안 스토리지에 저장된 공개키 및 전자 서명을 비교하는 단계를 포함하는 패치 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190130091A KR20210046418A (ko) | 2019-10-18 | 2019-10-18 | 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 |
US16/858,963 US11270003B2 (en) | 2019-10-18 | 2020-04-27 | Semiconductor device including secure patchable ROM and patch method thereof |
CN202010679902.8A CN112685338B (zh) | 2019-10-18 | 2020-07-15 | 包括安全可修补rom的半导体装置及其修补方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190130091A KR20210046418A (ko) | 2019-10-18 | 2019-10-18 | 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210046418A true KR20210046418A (ko) | 2021-04-28 |
Family
ID=75445388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190130091A KR20210046418A (ko) | 2019-10-18 | 2019-10-18 | 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11270003B2 (ko) |
KR (1) | KR20210046418A (ko) |
CN (1) | CN112685338B (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11281450B2 (en) | 2020-06-23 | 2022-03-22 | Toyota Motor North America, Inc. | Secure transport software update |
US11880670B2 (en) * | 2020-06-23 | 2024-01-23 | Toyota Motor North America, Inc. | Execution of transport software update |
US20220334820A1 (en) * | 2021-04-20 | 2022-10-20 | Dell Products, L.P. | System and method for intermediate software upgrades for information handling systems |
CN117743011B (zh) * | 2023-12-20 | 2024-08-13 | 无锡众星微系统技术有限公司 | 一种RomCode运行错误修复方法和装置 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3563768B2 (ja) | 1994-05-31 | 2004-09-08 | 株式会社ルネサステクノロジ | Romプログラム変更装置 |
US6138236A (en) * | 1996-07-01 | 2000-10-24 | Sun Microsystems, Inc. | Method and apparatus for firmware authentication |
US6247168B1 (en) * | 1997-04-29 | 2001-06-12 | Rockwell Technologies, Llc | Embedded non-volatile programming tool |
US6009524A (en) * | 1997-08-29 | 1999-12-28 | Compact Computer Corp | Method for the secure remote flashing of a BIOS memory |
JPH11249887A (ja) | 1998-02-26 | 1999-09-17 | Toshiba Corp | プログラム訂正装置 |
US6976163B1 (en) * | 2000-07-12 | 2005-12-13 | International Business Machines Corporation | Methods, systems and computer program products for rule based firmware updates utilizing certificate extensions and certificates for use therein |
JP2002259148A (ja) | 2001-02-28 | 2002-09-13 | Star Micronics Co Ltd | プログラマブルromのデータ書換方法およびデータ書換装置 |
JP4288893B2 (ja) * | 2001-09-26 | 2009-07-01 | ソニー株式会社 | 情報処理装置、プログラムロード方法、記録媒体、プログラム更新方法及び回路素子 |
US20030079097A1 (en) * | 2001-10-22 | 2003-04-24 | Patrick Wei | Optical navigation sensor with shadow memory |
US20030084229A1 (en) | 2001-10-23 | 2003-05-01 | Ho Tat N. | Methods and apparatus for modifying programs stored in read only memory |
JP4828816B2 (ja) | 2004-10-25 | 2011-11-30 | 株式会社東芝 | メモリカード、半導体装置、及びメモリカードの制御方法 |
US8000735B1 (en) * | 2004-12-01 | 2011-08-16 | Globalfoundries Inc. | Wireless modem architecture for reducing memory components |
US7873959B2 (en) * | 2005-02-01 | 2011-01-18 | Microsoft Corporation | Publishing the status of and updating firmware components |
US7603562B2 (en) * | 2005-02-02 | 2009-10-13 | Insyde Software Corporation | System and method for reducing memory requirements of firmware |
US7770165B2 (en) * | 2006-08-25 | 2010-08-03 | Microsoft Corporation | Providing firmware updates to portable media devices |
US9348730B2 (en) | 2007-01-31 | 2016-05-24 | Standard Microsystems Corporation | Firmware ROM patch method |
JP5116325B2 (ja) * | 2007-03-15 | 2013-01-09 | 株式会社リコー | 情報処理装置、ソフトウェア更新方法及び画像処理装置 |
US8898477B2 (en) * | 2007-11-12 | 2014-11-25 | Gemalto Inc. | System and method for secure firmware update of a secure token having a flash memory controller and a smart card |
US9348597B2 (en) | 2008-06-30 | 2016-05-24 | Infineon Technologies Ag | Device and method for bypassing a first program code portion with a replacement program code portion |
US8296579B2 (en) * | 2009-11-06 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | System and method for updating a basic input/output system (BIOS) |
US8589302B2 (en) * | 2009-11-30 | 2013-11-19 | Intel Corporation | Automated modular and secure boot firmware update |
WO2011119985A2 (en) * | 2010-03-26 | 2011-09-29 | Maxlinear, Inc. | Firmware authentication and deciphering for secure tv receiver |
US20130013849A1 (en) | 2011-07-06 | 2013-01-10 | Varma Vishal V | Programmable Patch Architecture for ROM |
JP5984625B2 (ja) * | 2012-10-31 | 2016-09-06 | ルネサスエレクトロニクス株式会社 | 半導体装置及び暗号鍵書き込み方法 |
US20140164789A1 (en) * | 2012-12-07 | 2014-06-12 | Advanced Micro Devices, Inc. | Authenticating microcode patches with external encryption engine |
JP6107191B2 (ja) | 2013-02-08 | 2017-04-05 | 凸版印刷株式会社 | Icカード |
EP2959378A1 (en) | 2013-02-22 | 2015-12-30 | Marvell World Trade Ltd. | Patching boot code of read-only memory |
WO2015081268A1 (en) | 2013-11-27 | 2015-06-04 | Abbott Diabetes Care Inc. | Systems and methods for revising permanent rom-based programming |
EP3007094B1 (en) * | 2014-10-08 | 2021-05-05 | Nintendo Co., Ltd. | Boot program, information processing apparatus, information processing system, information processing method, semiconductor apparatus, and program |
JP6595822B2 (ja) * | 2015-07-07 | 2019-10-23 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
US20190034195A1 (en) | 2017-07-26 | 2019-01-31 | Qualcomm Incorporated | Systems and methods for providing patchable rom firmware |
US10346157B2 (en) * | 2017-07-31 | 2019-07-09 | Qualcomm Incorporated | Patch infrastructure for ROM firmware |
US10997297B1 (en) * | 2019-12-06 | 2021-05-04 | Western Digital Technologies, Inc. | Validating firmware for data storage devices |
-
2019
- 2019-10-18 KR KR1020190130091A patent/KR20210046418A/ko not_active Application Discontinuation
-
2020
- 2020-04-27 US US16/858,963 patent/US11270003B2/en active Active
- 2020-07-15 CN CN202010679902.8A patent/CN112685338B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US11270003B2 (en) | 2022-03-08 |
CN112685338B (zh) | 2024-08-09 |
US20210117545A1 (en) | 2021-04-22 |
CN112685338A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9372699B2 (en) | System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device | |
KR20210046418A (ko) | 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 | |
EP2854066B1 (en) | System and method for firmware integrity verification using multiple keys and OTP memory | |
US7774619B2 (en) | Secure code execution using external memory | |
EP2668566B1 (en) | Authenticate a hypervisor with encoded information | |
JP2007293873A (ja) | 電子装置の安全性を保証する方法、セキュリティシステム及び電子装置 | |
JP2006018825A (ja) | 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法 | |
EP3343424B1 (en) | Control board secure start method, and software package upgrade method and device | |
WO2020101832A1 (en) | Secure boot assist for devices, and related systems, methods and devices | |
US20100100966A1 (en) | Method and system for blocking installation of some processes | |
WO2014206170A1 (zh) | 一种验证方法及设备 | |
US11704442B2 (en) | Instance handling of a trusted execution environment | |
CN111177709A (zh) | 一种终端可信组件的执行方法、装置及计算机设备 | |
KR101988404B1 (ko) | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 | |
US11947676B2 (en) | Processor system with a communication interface | |
EP3382590B1 (en) | Method for initializing a computerized system and computerized system against rollback attacks | |
US11775650B2 (en) | Processor system | |
US10067770B2 (en) | Platform key hierarchy | |
CN117813795A (zh) | 设备身份密钥 | |
US20230244789A1 (en) | Method for booting an electronic device | |
TW202001661A (zh) | 通訊裝置、安全服務控制元件與安全服務控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |