KR20190085387A - 반도체 장치 및 반도체 장치의 동작 방법 - Google Patents
반도체 장치 및 반도체 장치의 동작 방법 Download PDFInfo
- Publication number
- KR20190085387A KR20190085387A KR1020180003456A KR20180003456A KR20190085387A KR 20190085387 A KR20190085387 A KR 20190085387A KR 1020180003456 A KR1020180003456 A KR 1020180003456A KR 20180003456 A KR20180003456 A KR 20180003456A KR 20190085387 A KR20190085387 A KR 20190085387A
- Authority
- KR
- South Korea
- Prior art keywords
- key
- register
- protection
- enable bit
- otp memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/14—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
- G11C17/16—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using electrically-fusible links
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using 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/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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- 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]
-
- 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/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/08—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards using semiconductor devices, e.g. bipolar elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/14—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
- G11C17/143—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using laser-fusible links
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C17/00—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
- G11C17/14—Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
- G11C17/18—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/24—Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Optics & Photonics (AREA)
- Storage Device Security (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
Abstract
반도체 장치 및 반도체 장치의 동작 방법이 제공된다. 반도체 장치는 키(key)를 저장하는 키 프로그램 영역 및 상기 키 프로그램 영역에 저장된 상기 키를 보호하기 위한 설정 값이 프로그램되는 키 보호 설정 영역을 포함하는 OTP 메모리(One-Time Programmable Memory); 상기 OTP 메모리에 저장된 상기 키를 로드(load)하여 보안 소프트웨어(secure software)에 제공하는 키 레지스터; 및 상기 OTP 메모리의 상기 키 보호 설정 영역의 프로그램 여부에 따라, 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하는 키 보호 제어 로직을 포함한다.
Description
본 발명은 반도체 장치 및 반도체 장치의 동작 방법에 관한 것이다.
보안 어플리케이션(secure application)을 비롯한 보안 소프트웨어(secure software)를 실행할 수 있는 반도체 장치는, 보안 소프트웨어가 사용하는 키(key)를 영구적으로 프로그램하기 위해, 그 내부에 키를 저장해 둘 필요가 있다. 예를 들어, 상기 반도체 장치에 탑재되는 칩 또는 칩셋을 제조하는 공정에서, 예컨대 반도체 장치의 일 구성으로 포함된 OTP 메모리(One-Time Programmable Memory)에 키의 값을 퓨징(fusing)해 놓을 수 있다.
그런데 이와 같은 제조 공정이 완료된 후, 칩이 다른 곳으로 유통되거나 상기 칩을 이용하여 제품 개발이 되는 경우에, 허가되지 않은 제3자가 칩에 퓨징되어 있는 키를 유출할 우려가 있다.
즉, 보안 키가 퓨징된 칩을 탑재한 반도체 장치에 대해, 보안 부팅(secure boot) 기능 및 디버그 포트 보호(debug port protection) 기능 등을 비롯한 보안 기능(security feature)이 활성화될 때까지, 상기 칩에 퓨징되어 있는 키를 제3자로부터 보호하기 위한 방안이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는 보안 기능(security feature)이 활성화되기 전에 OTP 메모리(One-Time Programmable Memory)에 퓨징(fusing)된 키(key)가 유출되는 것을 방지하기 위한 반도체 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 보안 기능이 활성화되기 전에 OTP 메모리에 퓨징된 키가 유출되는 것을 방지하기 위한 반도체 장치의 동작 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치는, 키(key)를 저장하는 키 프로그램 영역 및 키 프로그램 영역에 저장된 키를 보호하기 위한 설정 값이 프로그램되는 키 보호 설정 영역을 포함하는 OTP 메모리(One-Time Programmable Memory); OTP 메모리에 저장된 키를 로드(load)하여 보안 소프트웨어(secure software)에 제공하는 키 레지스터(Key Register); 및 OTP 메모리의 키 보호 설정 영역의 프로그램 여부에 따라, OTP 메모리에 저장된 키를 키 레지스터에 로드하는 키 보호 제어 로직(Key Protection Control Logic)을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치는, 키를 저장하는 키 프로그램 영역 및 키 프로그램 영역에 저장된 키를 보호하기 위한 설정 값이 저장되는 키 보호 설정 영역을 포함하는 OTP 메모리; OTP 메모리에 저장된 키를 로드하여 보안 소프트웨어에 제공하는 키 레지스터; 및 OTP 메모리의 키 보호 설정 영역에 저장된 설정 값에 대해 하나 이상의 논리 연산을 수행하여, 그 결과 값에 따라 OTP 메모리에 저장된 키를 키 레지스터에 로드할 지 여부를 결정하는 키 보호 제어 로직을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법은, OTP 메모리의 키 보호 설정 영역으로부터 하나 이상의 설정 값을 제공받고, 하나 이상의 설정 값에 대해 하나 이상의 논리 연산을 수행하고, 하나 이상의 논리 연산을 수행한 결과에 따라, OTP 메모리에 저장된 키를 키 레지스터에 로드할 지 여부를 결정하는 것을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 5는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 6은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 7은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 8은 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 9는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 10은 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 5는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 6은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 7은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 8은 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 9는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 10은 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 1은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 블록도이고, 도 2는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 1 및 도 2를 함께 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)는 어플리케이션 프로세서(Application Processor)(5), OTP 메모리(One-Time Programmable Memory)(10), OTP 메모리 컨트롤러(OTP Memory Controller)(20), 접근 제어기(Access Controller)(30), ROM(Read-Only Memory)(40), 디버그 포트 보호 로직(Debug Port Protection Logic)(50), 디버그 포트(60), 키 보호 제어 로직(Key Protection Control Logic)(100) 및 키 레지스터(Key Register)(110)를 포함할 수 있다.
또한, 본 발명의 몇몇의 실시예에서, 본 발명의 일 실시예에 따른 반도체 장치(1)는 키 보호 활성화 레지스터(Key Protection Enable Register)(120)를 더 포함할 수 있다.
어플리케이션 프로세서(5)는 반도체 장치(1)의 여러 구성 요소들을 제어하고, 다양한 종류의 소프트웨어를 실행시킬 수 있다. 예를 들어, 어플리케이션 프로세서(5)는 미리 정해진 기준에 따라 허가된 작업만을 실행하기 위한 보안 소프트웨어(secure software)를 실행시킬 수도 있고, 허가 여부에 무관하게 임의의 작업을 실행할 수 있는 비보안 소프트웨어(non-secure software)를 실행시킬 수도 있다. 일례로, 어플리케이션 프로세서(5)는 반도체 장치(1)의 부팅(booting) 과정에서 인증된 부트 이미지(boot image)와 같은 바이너리(binary)를 실행할 수 있다.
본 발명의 몇몇의 실시예에서, 어플리케이션 프로세서(5)는 복수의 CPU 코어(Central Processing Unit Cores)를 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
OTP 메모리(10)는 어플리케이션 프로세서(5)가 보안 소프트웨어를 실행하기 위해 사용되는 키(key)를 저장할 수 있다. 본 발명의 몇몇의 실시예에서, 키는 반도체 장치(1)가 제조되는 공정에서, 미리 정해진 값으로 OTP 메모리(10)에 영구적으로 프로그램될 수 있다.
본 실시예에서, OTP 메모리(100)는 특히 키 프로그램 영역(12) 및 키 보호 설정 영역(14, 16, 18)을 포함한다.
키 프로그램 영역(12)은 어플리케이션 프로세서(5)가 보안 소프트웨어를 실행하기 위해 사용되는 키가 프로그램되는 영역으로서, 어플리케이션 프로세서(5)에 의해 실행되는 소프트웨어는 키 프로그램 영역(12)을 직접 접근할 수는 없다. 어플리케이션 프로세서(5)에 의해 실행되는 소프트웨어가 키를 접근하기 위해서는 후술할 키 레지스터(110)를 이용하여야 한다.
키 보호 설정 영역(14, 16, 18)은 키 프로그램 영역(12)에 저장된 키를 보호하기 위한 설정 값이 프로그램되는 영역이다. 키 보호 설정 영역(14, 16, 18)은 키 보호 활성화(Key Protection Enable) 비트(14), 보안 부팅 활성화(Secure Boot Enable) 비트(16), 디버깅 포트 보호 활성화(Debug Port Protection Enable) 비트(18)를 포함할 수 있다.
키 보호 제어 로직(100)은 키 보호 설정 영역(14, 16, 18)에 프로그램된 값에 기초하여, OTP 메모리(100)의 키 프로그램 영역(12)에 프로그램된 키를 어플리케이션 프로세서(5)에 의해 실행되는 소프트웨어가 접근할 수 있는 키 레지스터(110)에 로드(load)할 지 여부를 결정한다.
키 보호 설정 영역(14, 16, 18)에 대한 세부적인 내용과, 키 보호 제어 로직(100)이 키 보호 설정 영역(14, 16, 18)에 프로그램된 값에 따라 키를 키 레지스터(110)에 로드할 지 여부를 결정하는 구체적인 내용에 대해서는 도 3 내지 도 7과 관련하여 후술하도록 한다.
키 보호 설정 영역(14, 16, 18) 역시 소프트웨어에 의한 접근이 불가능하다. 키 보호 설정 영역(14, 16, 18)은 하드웨어로 구현된 키 보호 제어 로직(100)에 의해 접근 가능하다.
OTP 메모리 컨트롤러(20)는 키 보호 제어 로직(100)에 의해 결정된 내용에 따라 OTP 메모리(100)에 저장된 키를 키 레지스터(110)에 로드하는 작업을 수행한다. OTP 메모리 컨트롤러(20)는 오로지 보안 소프트웨어에 의해서만 제어될 수 있다.
키 레지스터(110)는 로드된 키를 보안 소프트웨어에 제공할 수 있는 하드웨어 인터페이스(hardware interface)이다. 다시 말해, 보안 소프트웨어는 키 레지스터(110)에 로드된 키를 리드(read)할 수 있다. 또한, 키 레지스터(110)는 후술할 디버그 포트(60)를 통한 접근이 불가능하다.
키 보호 제어 로직(100)은 앞서 설명한 것과 같이, OTP 메모리(10)의 키 보호 설정 영역(14, 16, 18)의 프로그램 여부에 따라, OTP 메모리(10)에 저장된 키를 상기 키 레지스터(110)에 로드할 지 여부를 결정한다.
예를 들어, 키 보호 제어 로직(100)은 키 보호 설정 영역(14, 16, 18)에 저장된 설정 값들에 대해 하나 이상의 논리 연산을 수행하여, 그 결과 값에 따라 OTP 메모리(10)에 저장된 키를 키 레지스터(110)에 로드할 지 여부를 결정할 수 있다.
접근 제어기(30)는 키 레지스터(110)에 대한 비보안 소프트웨어의 접근을 차단한다. 나아가, 접근 제어기(30)는 비보안 소프트웨어가 OTP 메모리 컨트롤러(20), 키 보호 제어 로직(100), 키 보호 활성화 레지스터(120) 등과 같은 보안이 요구되는 요소들에 대해 접근하는 것을 차단한다.
ROM(40)은 반도체 장치(1)의 부팅 시 실행되는 바이너리를 저장하고, 이에 대한 서명 검증을 수행할 수 있다. 특히, ROM(40)은, OTP 메모리(10)의 키 보호 설정 영역(14, 16, 18) 중 보안 부팅 활성화 비트(16)의 값에 따라 바이너리에 대한 서명 검증을 수행 또는 비수행할 수 있다.
디버그 포트(60)는 사용자에게 디버그 인터페이스(debug interface)를 제공한다. 특히 디버그 포트(60)는 디버스 포트 보호 로직(50)의 제어 하에, OTP 메모리(10)의 키 보호 설정 영역(14, 16, 18) 중 디버깅 포트 보호 활성화 비트(18)의 값에 따라 사용자의 접근을 허용 또는 비허용할 수 있다.
키 보호 활성화 레지스터(120)는 보안 소프트웨어에 의해 접근 가능하며, 키 보호 제어 로직(100)은 키 보호 활성화 레지스터(120)에 프로그램된 값에 기초하여, OTP 메모리(100)의 키 프로그램 영역(12)에 프로그램된 키를 키 레지스터(110)에 로드할 지 여부를 결정할 수도 있다. 구체적으로, 보안 소프트웨어가 키 보호 활성화 레지스터(120)에 미리 정해진 값을 프로그램하면, 키 보호 제어 로직(100)은 OTP 메모리(10)에 저장된 키를 키 레지스터(110)에 로드하지 않을 수 있다.
본 발명의 몇몇의 실시예에서, 키 보호 활성화 레지스터(120)는 반도체 장치(1)의 동작 중 1회에 한해 변경 가능하도록 구현된다. 다시 말해서, 키 보호 활성화 레지스터(120)에 저장된 설정 값은, 반도체 장치(1)가 재부팅되기 전에는 반도체 장치(1)의 동작 중 1회에 한해 변경 가능하다.
이하에서는 보안 기능이 활성화되기 전에 OTP 메모리(10)에 퓨징된 키가 유출되는 것을 방지하기 위한 반도체 장치(1)의 구체적인 동작을 설명하도록 한다.
도 3은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 3을 참조하면, 먼저 OTP 메모리(10)의 키 보호 설정 영역(14, 16, 18)은 디폴트(default)로 제1 값(예컨대 0)을 갖는 것으로 가정한다. 또한, 키 보호 활성화 레지스터(120)에 저장된 설정 값 역시 디폴트로 제1 값(예컨대 0)을 갖는 것으로 가정한다.
본 명세서에서는 제1 값과 제2 값을 예컨대 바이너리 숫자 0과 1로 표현하고 있으나, 이것은 일 구현례를 의미하는 것에 불과하여 본 발명의 범위가 이에 제한되는 것은 아니다.
예를 들어, 구현 방식에 따라 제1 값과 제2 값은 각각 바이너리 숫자 1과 0으로 구현될 수도 있다. 나아가 구현 방식에 따라 키 보호 활성화 비트(14)의 제1 값과, 보안 부팅 활성화 비트(16)의 제1 값과, 디버깅 포트 보호 활성화 비트(18)의 제1 값은 실제 구현에 있어서 동일한 값으로 구현되지 않을 수 있다. 즉, 키 보호 활성화 비트(14)의 제1 값이 바이너리 숫자 0으로 구현된다고 해서, 보안 부팅 활성화 비트(16)의 제1 값이나 디버깅 포트 보호 활성화 비트(18)의 제1 값이 반드시 바이너리 숫자 0으로 구현되어야 하는 것은 아니다.
이와 같은 구현 상 변경 사항들은 본 발명의 범위를 제한하지 않으며 해당 기술 분야의 통상의 기술자가 이해할 수 있는 사항에 불과하다.
다시 도 3을 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)에서, OTP 메모리(10)의 키 프로그램 영역(12)에는 키 "0x123456789ABC..."가 프로그램되어 있다. 키 "0x123456789ABC..."는 반도체 장치(1)가 제조되는 공정에서 OTP 메모리(10)에 퓨징된 것이다.
그리고 본 실시예에서 OTP 메모리(10)의 키 보호 활성화 비트(14)는 디폴트 값인 제1 값(예컨대 0)이다. 이 경우 키 보호 제어 로직(100)은 OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드하는 것으로 결정한다.
예를 들어, 키 보호 제어 로직(100)은 제2 값(예컨대 1)을 갖는 출력 신호를 키 레지스터(110)에 제공하여 키 레지스터(110)가 키 프로그램 영역(12)에 저장된 키를 노출하도록 설정한다. 상기 제2 값을 갖는 키 보호 제어 로직(100)의 출력 신호는, 키 레지스터(110)에 키가 로드되어 보안 소프트웨어가 리드할 수 있다("Key Enable=ON")는 신호에 해당한다.
이에 따라 도 3의 키 레지스터(110)에는 키 "0x123456789ABC..."가 로드되었음을 확인할 수 있다. 즉, 본 실시예는 키에 대한 보호가 비활성화(disable)되어 있는 경우를 나타낸다.
한편, 도 2 내지 도 7에서는 키 보호 제어 로직(100) 내부에 인버터, AND 논리 게이트, OR 논리 게이트를 포함하는 논리 회로도가 도시되어 있으나, 상기 논리 회로도는 키 보호 제어 로직(100)의 동작을 개념적으로 설명하기 위해 표현한 것에 불과하다. 즉, 키 보호 제어 로직(100)은 도시된 논리 회로도에 따라 그 구현이 제한되는 것이 아니며, 반드시 물리적으로 도시된 논리 회로를 포함하는 것도 아니다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)에서, OTP 메모리(10)의 키 보호 활성화 비트(14)는 제2 값(예컨대 1)으로 프로그램될 수 있다. 그리고 나머지 키 보호 설정 영역의 나머지 영역(16, 18)과 키 보호 활성화 레지스터(120)에 저장된 설정 값은 디폴트 값을 유지하고 있다.
키 보호 활성화 비트(14)가 제2 값(예컨대 1)인 경우, 키 보호 제어 로직(100)은 OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드하지 않는 것으로 결정한다.
예를 들어, 키 보호 제어 로직(100)은 제1 값(예컨대 0)을 갖는 출력 신호를 키 레지스터(110)에 제공하여 키 레지스터(110)가 키 프로그램 영역(12)에 저장된 키를 노출하지 않도록 설정한다. 상기 제1 값을 갖는 키 보호 제어 로직(100)의 출력 신호는, 키 레지스터(110)에 키가 로드되지 않아 보안 소프트웨어가 리드할 수 없다("Key Enable=OFF")는 신호에 해당한다.
이에 따라 도 4의 OTP 메모리(10)의 키 프로그램 영역(12)에 프로그램된 키 "0x123456789ABC..."가 키 레지스터(110)에는 로드되지 않았음을 확인할 수 있다. 즉, 본 실시예는 키에 대한 보호가 활성화되어 있는 경우를 나타낸다.
이와 같은 하드웨어로서 구현되는 키 보호 제어 로직(100)에 의한 키 보호 방식에 따라, 소프트웨어, 나아가 보안 소프트웨어 조차도 키를 리드하는 것을 원천적으로 차단할 수 있다.
한편, 본 명세서에서, 키에 대한 보호가 활성화된 경우, 도면 상으로 키 레지스터(110)에 "0x000000000000..."로 표시하였으나, 이 역시 설명을 위한 개념적인 표시에 해당할 뿐, 실제 키 레지스터(110)의 구현은 이에 제한되지 않는다. 예를 들어, 키에 대한 보호가 활성화된 경우, 키 레지스터(110)가 의미 없는 쓰레기 값(garbage value)을 갖도록 구현할 수도 있다.
도 5는 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)에서, OTP 메모리(10)의 키 보호 활성화 비트(14), 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)는 제2 값(예컨대 1)으로 프로그램될 수 있다. 그리고 키 보호 활성화 레지스터(120)에 저장된 설정 값은 디폴트 값을 유지하고 있다.
키 보호 활성화 비트(14) 및 보안 부팅 활성화 비트(16)가 프로그램된 경우, 키 보호 제어 로직(100)은 보안 기능 중 보안 부팅(secure boot) 기능이 활성화된 것으로 인지하고, OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드할 수 있다.
또한, 키 보호 활성화 비트(14) 및 디버깅 포트 보호 활성화 비트(18)가 프로그램된 경우, 키 보호 제어 로직(100)은 보안 기능 중 디버그 포트 보호(debug port protection) 기능이 활성화된 것으로 인지하고, OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드할 수 있다.
특히, 키 보호 제어 로직(100)은, 보안 부팅 활성화 비트(16) 및 상기 디버깅 포트 보호 활성화 비트(18)에 대해 제1 논리 연산을 수행하고, 제1 논리 연산의 결과와 키 보호 활성화 비트(14)에 대해 제2 논리 연산을 수행하여, 그 값에 따라 OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드할 지 여부를 결정할 수 있다. 즉, 키 보호 제어 로직(100)은 보안 부팅 기능과 디버그 포트 보호 기능이 모두 활성화되었음을 확인하고, 보안 소프트웨어가 키에 접근할 수 있도록 허용할 수 있다.
본 발명의 몇몇의 실시예에서, 디버그 포트 보호 기능은, 예를 들어, 디버그 포트를 영구적으로 차단할 수도 있고, 비영구적으로 차단할 수도 있다. 디버그 포트 보호 기능은 디버그 포트를 비영구적으로 차단하는 경우, 보안 인증(secure JTAG)을 비롯한 사용자 인증을 적용할 수 있다.
본 발명의 몇몇의 실시예에서, 제1 논리 연산은 AND 논리 연산을 포함하고, 제2 논리 연산은 OR 논리 연산을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
예를 들어, 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)가 제2 값(예컨대 1)이므로, 키 보호 제어 로직(100)은 이에 대해 AND 논리 연산을 수행한다.
다음으로 키 보호 제어 로직(100)은 AND 논리 연산의 결과(예컨대 1)와 제2 값(예컨대 1)을 갖는 키 보호 활성화 비트(14)의 반전된 값에 대해 OR 논리 연산을 수행한다.
다음으로 키 보호 제어 로직(100)은 OR 논리 연산의 결과(예컨대 1)에 따라 제2 값(예컨대 1)을 갖는 출력 신호를 키 레지스터(110)에 제공하여 키 레지스터(110)가 키 프로그램 영역(12)에 저장된 키를 노출하도록 설정한다.
이에 따라 도 5의 OTP 메모리(10)의 키 프로그램 영역(12)에 프로그램된 키 "0x123456789ABC..."가 키 레지스터(110)에는 로드되었음을 확인할 수 있다. 즉, 본 실시예는 키에 대한 보호가 비활성화되어 있으나 이미 보안 기능이 작동하고 있는 경우를 나타낸다.
이와 같은 하드웨어로서 구현되는 키 보호 제어 로직(100)에 의한 키 보호 방식에 따라, 반도체 장치(1)는 허용된 소프트웨어만을 실행시키고 디버그 포트(60)의 사용을 제한할 수 있어, OTP 메모리(10)에 저장된 키를 안전하게 보호할 수 있다.
도 6은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)에서, OTP 메모리(10)의 키 보호 활성화 비트(14), 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)뿐 아니라, 키 보호 활성화 레지스터(120) 역시 제2 값(예컨대 1)으로 프로그램될 수 있다.
이 경우, 보안 기능 중 디버그 포트 보호 기능이 활성화되었음에도 불구하고, 키 보호 활성화 레지스터(120)가 프로그램된 경우, 키 보호 제어 로직(100)은 OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드하지 않는다.
특히, 키 보호 제어 로직(100)은, 보안 부팅 활성화 비트(16) 및 상기 디버깅 포트 보호 활성화 비트(18)에 대해 제1 논리 연산을 수행하고, 제1 논리 연산의 결과와 키 보호 활성화 비트(14)에 대해 제2 논리 연산을 수행하고, 제2 논리 연산의 결과와 키 보호 활성화 레지스터(120)로부터 제공된 설정 값에 대해 제3 논리 연산을 수행하여, 그 값에 따라 OTP 메모리(10)의 키 프로그램 영역(12)에 저장된 키를 키 레지스터(110)에 로드할 지 여부를 결정할 수 있다. 즉, 키 보호 제어 로직(100)은 보안 부팅 기능과 디버그 포트 보호 기능이 모두 활성화되었음을 확인한 후에도, 필요에 따라 보안 소프트웨어가 키에 접근하는 것을 차단할 수 있다.
본 발명의 몇몇의 실시예에서, 제1 논리 연산 및 제3 논리 연산은 AND 논리 연산을 포함하고, 제2 논리 연산은 OR 논리 연산을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
예를 들어, 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)가 제2 값(예컨대 1)이므로, 키 보호 제어 로직(100)은 이에 대해 AND 논리 연산을 수행한다.
다음으로 키 보호 제어 로직(100)은 AND 논리 연산의 결과(예컨대 1)와 제2 값(예컨대 1)을 갖는 키 보호 활성화 비트(14)의 반전된 값에 대해 OR 논리 연산을 수행한다.
다음으로 키 보호 제어 로직(100)은 OR 논리 연산의 결과(예컨대 1)와 제2 값(예컨대 1)을 갖는 키 보호 활성화 비트(14)의 반전된 값에 대해 AND 논리 연산을 수행한다.
다음으로 키 보호 제어 로직(100)은 AND 논리 연산의 결과(예컨대 0)에 따라 제1 값(예컨대 0)을 갖는 출력 신호를 키 레지스터(110)에 제공하여 키 레지스터(110)가 키 프로그램 영역(12)에 저장된 키를 노출하지 않도록 설정한다.
이에 따라 도 6의 OTP 메모리(10)의 키 프로그램 영역(12)에 프로그램된 키 "0x123456789ABC..."가 키 레지스터(110)에는 로드되지 않았음을 확인할 수 있다. 즉, 본 실시예는 보안 기능이 작동하고 있더라도 필요에 따라 키에 대한 보호가 활성화된 경우를 나타낸다.
본 발명의 몇몇의 실시예에서, 키 보호 활성화 레지스터(120)는 반도체 장치(1)의 동작 중 1회에 한해 변경 가능하도록 구현된다. 다시 말해서, 키 보호 활성화 레지스터(120)에 저장된 설정 값은, 반도체 장치(1)가 재부팅되기 전에는 반도체 장치(1)의 동작 중 1회에 한해 변경 가능하다.
이와 같은 하드웨어로서 구현되는 키 보호 제어 로직(100)에 의한 키 보호 방식에 따라, 예컨대 반도체 장치(1)가 부팅 시 OTP 메모리(10)에 저장된 키를 사용한 후, 반도체 장치(1)의 리셋(reset) 전까지 더 이상 키를 사용하지 않기 위해 키에 대한 보호를 활성화함으로써, OTP 메모리(10)에 저장된 키의 보호 수준을 더 높일 수 있다.
도 7은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 개략도이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)에서, OTP 메모리(10)의 키 보호 활성화 비트(14), 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)는 모두 디폴트 값인 제1 값(예컨대 0)이다. 즉, 도 3의 키에 대한 보호가 비활성화되어 있는 경우와 마찬가지의 상태이다.
본 실시예에서, OTP 메모리(10)의 키 보호 활성화 비트(14), 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)가 프로그램되지 않더라도, 사용자의 필요에 따라, 키 보호 활성화 레지스터(120) 역시 제2 값(예컨대 1)으로 프로그램함으로써 키에 대한 보호를 활성화할 수도 있다.
앞서 설명한 바와 같이, 키 보호 활성화 비트(14), 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)로부터 키에 대한 보호 여부를 결정하는 키 보호 제어 로직(100)은 하드웨어 요소인 반면, 키 보호 활성화 레지스터(120)는 보안 소프트웨어에 의해 접근되어 그 내용이 변경되는 요소이다.
다시 말해, 반도체 장치(1)에 대한 보안 기능과 무관하게, 보안 소프트웨어 고유의 정책에 따라 키에 대한 보호를 활성화할 수 있다.
본 발명의 몇몇의 실시예에서, 키 보호 활성화 레지스터(120)는 반도체 장치(1)의 동작 중 1회에 한해 변경 가능하도록 구현된다. 다시 말해서, 키 보호 활성화 레지스터(120)에 저장된 설정 값은, 반도체 장치(1)가 재부팅되기 전에는 반도체 장치(1)의 동작 중 1회에 한해 변경 가능하다.
이와 같은 보안 소프트웨어의 제어 하에 키 보호 여부를 결정할 수도 있어, 예컨대 사용자가 특정 시점에만 OTP 메모리(10)에 저장된 키를 사용한 후, 반도체 장치(1)의 리셋 전까지 더 이상 키를 사용하지 않기 위해 키에 대한 보호를 활성화함으로써, OTP 메모리(10)에 저장된 키를 안전하게 보호할 수 있다.
도 8은 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 8을 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)의 동작 방법은 OTP 메모리(10)의 키 프로그램 영역(12)에 어플리케이션 프로세서(5)가 보안 소프트웨어를 실행하기 위해 사용될 키를 퓨징(S801)한다.
다음으로, 상기 방법은 OTP 메모리(100)의 키 보호 설정 영역(14, 16, 18) 중 키 보호 활성화 비트(14)를 퓨징(S803)한다. 이에 따라 키에 대한 보호를 활성화할 수 있다.
다음으로, 상기 방법은 OTP 메모리(100)의 키 보호 설정 영역(14, 16, 18) 중 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)를 퓨징(S805)한다. 이에 따라 보안 부팅 기능과 디버그 포트 보호 기능이 모두 활성화된 경우, 보안 소프트웨어가 키에 접근할 수 있도록 허용할 수 있다.
도 9는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 9를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)의 동작 방법은 OTP 메모리(10)의 키 프로그램 영역(12)에 어플리케이션 프로세서(5)가 보안 소프트웨어를 실행하기 위해 사용될 키를 퓨징(S901)한다.
다음으로, 상기 방법은 OTP 메모리(100)의 키 보호 설정 영역(14, 16, 18) 중 키 보호 활성화 비트(14)를 퓨징(S903)한다. 이에 따라 키에 대한 보호를 활성화할 수 있다.
다음으로, 상기 방법은 OTP 메모리(100)의 키 보호 설정 영역(14, 16, 18) 중 보안 부팅 활성화 비트(16) 및 디버깅 포트 보호 활성화 비트(18)를 퓨징(S905)한다. 이에 따라 보안 부팅 기능과 디버그 포트 보호 기능이 모두 활성화된 경우, 보안 소프트웨어가 키에 접근할 수 있도록 허용할 수 있다.
다음으로, 상기 방법은 보안 소프트웨어의 제어 하에, 키 보호 활성화 레지스터(120)를 프로그램(S907)한다. 이에 따라 보안 부팅 기능과 디버그 포트 보호 기능이 모두 활성화되었음을 확인한 후에도, 필요에 따라 보안 소프트웨어가 키에 접근하는 것을 차단할 수 있다.
도 10은 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 10을 참조하면, 본 발명의 일 실시예에 따른 반도체 장치(1)의 동작 방법은 OTP 메모리(10)의 키 프로그램 영역(12)에 어플리케이션 프로세서(5)가 보안 소프트웨어를 실행하기 위해 사용될 키를 퓨징(S1001)한다.
다음으로, 상기 방법은 보안 소프트웨어의 제어 하에, 키 보호 활성화 레지스터(120)를 프로그램(S1003)한다. 이에 따라 반도체 장치(1)에 대한 보안 기능과 무관하게, 보안 소프트웨어 고유의 정책에 따라 키에 대한 보호를 활성화할 수 있다.
특히, 도 8 내지 도 10에 있어서, 상기 방법은, OTP 메모리(10)의 키 보호 설정 영역(14, 16, 18)으로부터 하나 이상의 설정 값을 제공받고, 상기 하나 이상의 설정 값에 대해 하나 이상의 논리 연산을 수행하고, 상기 하나 이상의 논리 연산을 수행한 결과에 따라, OTP 메모리(10)에 저장된 키를 키 레지스터(110)에 로드할 지 여부를 결정한다.
이에 대한 구체적인 방법은 도 3 내지 도 7에 걸쳐 상세하게 설명한 바 있으므로, 중복되는 설명은 생략하도록 한다.
이제까지 설명한 본 발명의 다양한 실시예에 따른 키 보호 제어 로직(100)에 의한 키 보호 방식에 따라, 소프트웨어, 나아가 보안 소프트웨어 조차도 키를 리드하는 것을 원천적으로 차단할 수 있다.
나아가, 상기 방식에 따라 반도체 장치(1)는 허용된 소프트웨어만을 실행시키고 디버그 포트(60)의 사용을 제한할 수 있어, OTP 메모리(10)에 저장된 키를 안전하게 보호할 수 있다.
나아가, 예컨대 반도체 장치(1)가 부팅 시 OTP 메모리(10)에 저장된 키를 사용한 후, 반도체 장치(1)의 리셋 전까지 더 이상 키를 사용하지 않기 위해 키에 대한 보호를 활성화함으로써, OTP 메모리(10)에 저장된 키의 보호 수준을 더 높일 수 있다.
나아가, 예컨대 사용자가 특정 시점에만 OTP 메모리(10)에 저장된 키를 사용한 후, 반도체 장치(1)의 리셋 전까지 더 이상 키를 사용하지 않기 위해 키에 대한 보호를 활성화함으로써, OTP 메모리(10)에 저장된 키를 안전하게 보호할 수 있다.
결국 키가 칩에 퓨징되는 제조 공정이 완료된 후, 칩이 다른 곳으로 유통되거나 상기 칩을 이용하여 제품 개발이 되는 경우에, 보안 부팅 기능 및 디버그 포트 보호 기능 등을 비롯한 보안 기능이 활성화될 때까지, 허가되지 않은 제3자가 칩에 퓨징되어 있는 키를 유출하는 것을 효과적으로 방지할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: 반도체 장치
5: 어플리케이션 프로세서
10: OTP 메모리 12: 키 프로그램 영역
14: 키 보호 활성화 비트 16: 보안 부팅 활성화 비트
18: 디버깅 포트 보호 활성화 비트 20: OTP 메모리 컨트롤러
30: 접근 제어기 40: ROM
50: 디버그 포트 보호 로직 60: 디버그 포트
100: 키 보호 제어 로직 110: 키 레지스터
120: 키 보호 활성화 레지스터
10: OTP 메모리 12: 키 프로그램 영역
14: 키 보호 활성화 비트 16: 보안 부팅 활성화 비트
18: 디버깅 포트 보호 활성화 비트 20: OTP 메모리 컨트롤러
30: 접근 제어기 40: ROM
50: 디버그 포트 보호 로직 60: 디버그 포트
100: 키 보호 제어 로직 110: 키 레지스터
120: 키 보호 활성화 레지스터
Claims (20)
- 키(key)를 저장하는 키 프로그램 영역 및 상기 키 프로그램 영역에 저장된 상기 키를 보호하기 위한 설정 값이 프로그램되는 키 보호 설정 영역을 포함하는 OTP 메모리(One-Time Programmable Memory);
상기 OTP 메모리에 저장된 상기 키를 로드(load)하여 보안 소프트웨어(secure software)에 제공하는 키 레지스터(Key Register); 및
상기 OTP 메모리의 상기 키 보호 설정 영역의 프로그램 여부에 따라, 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하는 키 보호 제어 로직(Key Protection Control Logic)을 포함하는 반도체 장치. - 제1항에 있어서,
상기 키 보호 설정 영역은 키 보호 활성화(Key Protection Enable) 비트를 포함하고,
상기 키 보호 활성화 비트가 프로그램된 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하지 않는 반도체 장치. - 제2항에 있어서,
상기 키 보호 설정 영역은 보안 부팅 활성화(Secure Boot Enable) 비트를 포함하고,
부팅(booting) 시 실행되는 바이너리(binary)에 대한 서명 검증을 수행하되, 상기 보안 부팅 활성화 비트의 값에 따라 상기 서명 검증을 수행 또는 비수행하는 ROM(Read-Only Memory)을 더 포함하는 반도체 장치. - 제3항에 있어서,
상기 키 보호 활성화 비트 및 상기 보안 부팅 활성화 비트가 프로그램된 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하는 반도체 장치. - 제2항에 있어서,
상기 키 보호 설정 영역은 디버깅 포트 보호 활성화(Debug Port Protection Enable) 비트를 포함하고,
사용자에게 디버그 인터페이스(debug interface)를 제공하되, 상기 디버깅 포트 보호 활성화 비트의 값에 따라 상기 사용자의 접근을 허용 또는 비허용하는 디버그 포트를 더 포함하는 반도체 장치. - 제5항에 있어서,
상기 키 보호 활성화 비트 및 상기 디버깅 포트 보호 활성화 비트가 프로그램된 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하는 반도체 장치. - 제5항에 있어서,
상기 키 레지스터는 상기 디버그 포트를 통한 접근이 불가능한 반도체 장치. - 제1항에 있어서,
상기 보안 소프트웨어에 의해 설정 값이 기록되는 키 보호 활성화 레지스터(Key Protection Enable Register)를 더 포함하고,
상기 키 보호 활성화 레지스터가 프로그램된 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하지 않는 반도체 장치. - 제8항에 있어서,
상기 키 보호 활성화 레지스터에 저장된 설정 값은, 상기 반도체 장치의 동작 중 1회에 한해 변경 가능한 반도체 장치. - 제1항에 있어서,
상기 키 레지스터에 대한 비보안 소프트웨어(non-secure software)의 접근을 차단하는 접근 제어기(Access Controller)를 더 포함하는 반도체 장치. - 키(key)를 저장하는 키 프로그램 영역 및 상기 키 프로그램 영역에 저장된 상기 키를 보호하기 위한 설정 값이 저장되는 키 보호 설정 영역을 포함하는 OTP 메모리(One-Time Programmable Memory);
상기 OTP 메모리에 저장된 상기 키를 로드(load)하여 보안 소프트웨어(secure software)에 제공하는 키 레지스터(Key Register); 및
상기 OTP 메모리의 상기 키 보호 설정 영역에 저장된 설정 값에 대해 하나 이상의 논리 연산을 수행하여, 그 결과 값에 따라 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드할 지 여부를 결정하는 키 보호 제어 로직(Key Protection Control Logic)을 포함하는 반도체 장치. - 제1항에 있어서,
상기 키 보호 설정 영역은 키 보호 활성화(Key Protection Enable) 비트를 포함하고,
상기 키 보호 활성화 비트가 제1 값인 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하는 것으로 결정하고,
상기 키 보호 활성화 비트가 제2 값인 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하지 않는 것으로 결정하는 반도체 장치. - 제12항에 있어서,
상기 키 보호 설정 영역은 보안 부팅 활성화(Secure Boot Enable) 비트 및 디버깅 포트 보호 활성화(Debug Port Protection Enable) 비트를 포함하고,
상기 반도체 장치는,
부팅(booting) 시 실행되는 바이너리(binary)에 대한 서명 검증을 수행하되, 상기 보안 부팅 활성화 비트의 값에 따라 상기 서명 검증을 수행 또는 비수행하는 ROM(Read-Only Memory)와,
사용자에게 디버그 인터페이스(debug interface)를 제공하되, 상기 디버깅 포트 보호 활성화 비트의 값에 따라 상기 사용자의 접근을 허용 또는 비허용하는 디버그 포트를 더 포함하는 반도체 장치. - 제13항에 있어서,
상기 키 보호 제어 로직은, 보안 부팅 활성화 비트 및 상기 디버깅 포트 보호 활성화 비트에 대해 제1 논리 연산을 수행하고, 상기 제1 논리 연산의 결과와 상기 키 보호 활성화 비트에 대해 제2 논리 연산을 수행하여, 그 값에 따라 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드할 지 여부를 결정하는 반도체 장치. - 제14항에 있어서,
상기 보안 소프트웨어에 의해 설정 값이 기록되는 키 보호 활성화 레지스터(Key Protection Enable Register)를 더 포함하고,
상기 키 보호 제어 로직은, 상기 제2 논리 연산의 결과와 상기 키 보호 활성화 레지스터에 기록된 값에 대해 제3 논리 연산을 수행하여, 그 값에 따라 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드할 지 여부를 결정하는 반도체 장치. - 제15항에 있어서,
상기 키 보호 활성화 레지스터에 저장된 설정 값은, 상기 반도체 장치의 동작 중 1회에 한해 변경 가능한 반도체 장치. - 제13항에 있어서,
상기 키 레지스터는 상기 디버그 포트를 통한 접근이 불가능한 반도체 장치. - 제11항에 있어서,
상기 보안 소프트웨어에 의해 설정 값이 기록되는 키 보호 활성화 레지스터(Key Protection Enable Register)를 더 포함하고,
상기 키 보호 활성화 레지스터가 프로그램된 경우, 상기 키 보호 제어 로직은 상기 OTP 메모리에 저장된 상기 키를 상기 키 레지스터에 로드하지 않는 반도체 장치. - 제18항에 있어서,
상기 키 보호 활성화 레지스터에 저장된 설정 값은, 상기 반도체 장치의 동작 중 1회에 한해 변경 가능한 반도체 장치. - 제11항에 있어서,
상기 키 레지스터에 대한 비보안 소프트웨어(non-secure software)의 접근을 차단하는 접근 제어기(Access Controller)를 더 포함하는 반도체 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180003456A KR102432451B1 (ko) | 2018-01-10 | 2018-01-10 | 반도체 장치 및 반도체 장치의 동작 방법 |
US16/106,267 US10923203B2 (en) | 2018-01-10 | 2018-08-21 | Semiconductor device and method of operating semiconductor device |
CN201811258060.8A CN110020561B (zh) | 2018-01-10 | 2018-10-26 | 半导体装置和操作半导体装置的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180003456A KR102432451B1 (ko) | 2018-01-10 | 2018-01-10 | 반도체 장치 및 반도체 장치의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190085387A true KR20190085387A (ko) | 2019-07-18 |
KR102432451B1 KR102432451B1 (ko) | 2022-08-12 |
Family
ID=67140188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180003456A KR102432451B1 (ko) | 2018-01-10 | 2018-01-10 | 반도체 장치 및 반도체 장치의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10923203B2 (ko) |
KR (1) | KR102432451B1 (ko) |
CN (1) | CN110020561B (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112468296B (zh) * | 2020-11-26 | 2022-10-14 | 湖南国科微电子股份有限公司 | 一种密钥编程方法、系统、电子设备及存储介质 |
US20230083979A1 (en) * | 2021-09-10 | 2023-03-16 | Ampere Computing Llc | Method and system for secure boot and rma intervention |
CN114785512A (zh) * | 2022-03-03 | 2022-07-22 | 瑞芯微电子股份有限公司 | 处理安全密钥的方法和装置及电子设备 |
US12008107B2 (en) * | 2022-06-27 | 2024-06-11 | Nuvoton Technology Corporation | Chip and method capable of authenticating off-chip debug firmware program and debug user |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148001A1 (en) * | 2006-12-14 | 2008-06-19 | Telefonaktiebolaget L M Ericsson (Publ) | Virtual Secure On-Chip One Time Programming |
US20130163764A1 (en) * | 2011-03-28 | 2013-06-27 | Nxp B.V. | Secure dynamic on chip key programming |
KR20140019599A (ko) * | 2012-08-06 | 2014-02-17 | 삼성전자주식회사 | 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치 |
US20160078251A1 (en) * | 2014-09-16 | 2016-03-17 | Freescale Semiconductor, Inc. | Key storage and revocation in a secure memory system |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3734408B2 (ja) * | 2000-07-03 | 2006-01-11 | シャープ株式会社 | 半導体記憶装置 |
US6996692B2 (en) * | 2002-04-17 | 2006-02-07 | Matsushita Electric Industrial Co., Ltd. | Nonvolatile semiconductor memory device and method for providing security for the same |
KR100636150B1 (ko) * | 2004-07-01 | 2006-10-19 | 삼성전자주식회사 | 암호화 모듈을 포함하는 멀티미디어 장치 |
US7725738B1 (en) * | 2005-01-25 | 2010-05-25 | Altera Corporation | FPGA configuration bitstream protection using multiple keys |
US7757295B1 (en) * | 2005-02-09 | 2010-07-13 | Lsi Corporation | Methods and structure for serially controlled chip security |
ATE499658T1 (de) * | 2005-08-03 | 2011-03-15 | St Ericsson Sa | Sicheres endgerät, routine und verfahren zum schützen eines geheimen schlüssels |
US20070094507A1 (en) * | 2005-10-21 | 2007-04-26 | Rush Frederick A | Method and system for securing a wireless communication apparatus |
CN101174942A (zh) * | 2006-10-31 | 2008-05-07 | 华为技术有限公司 | 一种实现密钥保护的方法及系统 |
US7778074B2 (en) * | 2007-03-23 | 2010-08-17 | Sigmatel, Inc. | System and method to control one time programmable memory |
US8594333B2 (en) * | 2008-09-05 | 2013-11-26 | Vixs Systems, Inc | Secure key access with one-time programmable memory and applications thereof |
US9501429B2 (en) * | 2008-09-05 | 2016-11-22 | Vixs Systems Inc. | Dynamic key and rule storage protection |
US8781127B2 (en) * | 2008-09-05 | 2014-07-15 | Vixs Systems, Inc. | Device with privileged memory and applications thereof |
US8644499B2 (en) * | 2009-09-14 | 2014-02-04 | Broadcom Corporation | Method and system for securely protecting a semiconductor chip without compromising test and debug capabilities |
KR101061313B1 (ko) * | 2010-01-28 | 2011-08-31 | 주식회사 하이닉스반도체 | 보안 제어장치를 포함하는 반도체 메모리 장치 |
US9019791B2 (en) * | 2010-11-03 | 2015-04-28 | Shine C. Chung | Low-pin-count non-volatile memory interface for 3D IC |
KR20130008939A (ko) * | 2011-07-13 | 2013-01-23 | 삼성전자주식회사 | 휴대 단말기에서 단말 고유 정보의 복제를 방지하는 장치 및 방법 |
CN104025500B (zh) * | 2011-12-29 | 2017-07-25 | 英特尔公司 | 使用在物理上不可克隆的函数的安全密钥存储 |
CN104350500B (zh) * | 2012-05-30 | 2017-04-12 | 飞思卡尔半导体公司 | 半导体装置以及制造半导体装置的方法 |
KR20140073384A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법 |
US20140164753A1 (en) * | 2012-12-06 | 2014-06-12 | Samsung Electronics Co., Ltd | System on chip for performing secure boot, image forming apparatus using the same, and method thereof |
US9390246B2 (en) | 2013-09-25 | 2016-07-12 | Intel Corporation | Creating secure original equipment manufacturer (OEM) identification |
KR102104564B1 (ko) * | 2013-11-21 | 2020-04-24 | 삼성전자주식회사 | 디지털 상관 이중 샘플링 회로 및 이를 포함하는 이미지 센서 |
JP2015176501A (ja) * | 2014-03-17 | 2015-10-05 | 株式会社リコー | 情報処理プログラム、情報処理装置、および画像処理システム |
US10353638B2 (en) * | 2014-11-18 | 2019-07-16 | Microsemi SoC Corporation | Security method and apparatus to prevent replay of external memory data to integrated circuits having only one-time programmable non-volatile memory |
TW201633207A (zh) * | 2014-12-12 | 2016-09-16 | 納格維遜股份有限公司 | 裝置金鑰保護 |
US20170053716A1 (en) * | 2015-08-20 | 2017-02-23 | Samsung Electronics Co., Ltd. | Otp memory including test cell array and method of testing the same |
US10521618B1 (en) * | 2015-10-20 | 2019-12-31 | Marvell International Ltd. | Methods and apparatus for secure root key provisioning |
US10302857B2 (en) * | 2017-05-03 | 2019-05-28 | Corning Incorporated | Low bend loss optical fiber with a germania doped core |
-
2018
- 2018-01-10 KR KR1020180003456A patent/KR102432451B1/ko active IP Right Grant
- 2018-08-21 US US16/106,267 patent/US10923203B2/en active Active
- 2018-10-26 CN CN201811258060.8A patent/CN110020561B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148001A1 (en) * | 2006-12-14 | 2008-06-19 | Telefonaktiebolaget L M Ericsson (Publ) | Virtual Secure On-Chip One Time Programming |
US20130163764A1 (en) * | 2011-03-28 | 2013-06-27 | Nxp B.V. | Secure dynamic on chip key programming |
KR20140019599A (ko) * | 2012-08-06 | 2014-02-17 | 삼성전자주식회사 | 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치 |
US20160078251A1 (en) * | 2014-09-16 | 2016-03-17 | Freescale Semiconductor, Inc. | Key storage and revocation in a secure memory system |
Also Published As
Publication number | Publication date |
---|---|
CN110020561B (zh) | 2023-12-15 |
US20190214102A1 (en) | 2019-07-11 |
US10923203B2 (en) | 2021-02-16 |
KR102432451B1 (ko) | 2022-08-12 |
CN110020561A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5114617B2 (ja) | 秘密鍵を保護する、セキュア端末、プログラム、および方法 | |
US9389793B2 (en) | Trusted execution and access protection for embedded memory | |
KR100294829B1 (ko) | 플래시 메모리를 보호하는 방법 및 장치 | |
TWI581099B (zh) | 積體電路裝置及控制積體電路裝置上記憶體存取的方法 | |
US20150058979A1 (en) | Processing system | |
KR100929870B1 (ko) | 컴퓨터 시스템의 바이오스 보안 유지방법 | |
US20030140238A1 (en) | Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory | |
KR20190085387A (ko) | 반도체 장치 및 반도체 장치의 동작 방법 | |
CN109918919A (zh) | 认证变量的管理 | |
US9355276B2 (en) | Processing system | |
US20070237325A1 (en) | Method and apparatus to improve security of cryptographic systems | |
JP2014513348A (ja) | 統合拡張ファームウェアインタフェース準拠計算装置内のシステムセキュリティデータベースおよびファームウェア格納部を変更する要求を処理するシステムおよび方法 | |
KR20060135467A (ko) | 보호된 비휘발성 메모리를 사용하는 시스템 및 방법 | |
JP4256859B2 (ja) | 半導体記憶装置 | |
JP2017033149A (ja) | 情報処理装置、コントローラ、及び、情報処理装置の制御方法 | |
TW201821998A (zh) | 記憶體保護邏輯 | |
US11544413B2 (en) | Cryptographic key distribution | |
WO2020063975A1 (zh) | 一种非易失性存储器的分区保护方法及装置 | |
JP6652669B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JP2005535953A (ja) | セキュアモードまたは非セキュアモードでプログラムを実行するコンピュータアーキテクチャ | |
CN114785512A (zh) | 处理安全密钥的方法和装置及电子设备 | |
CN114968117A (zh) | 存储器保护系统 | |
JP2000322319A (ja) | 半導体記憶装置用セキュリティ回路およびセキュリティシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |