KR20150079880A - 집적 회로를 위한 보안 키 도출 및 암호화 로직 - Google Patents

집적 회로를 위한 보안 키 도출 및 암호화 로직 Download PDF

Info

Publication number
KR20150079880A
KR20150079880A KR1020157014039A KR20157014039A KR20150079880A KR 20150079880 A KR20150079880 A KR 20150079880A KR 1020157014039 A KR1020157014039 A KR 1020157014039A KR 20157014039 A KR20157014039 A KR 20157014039A KR 20150079880 A KR20150079880 A KR 20150079880A
Authority
KR
South Korea
Prior art keywords
logic
processor
encryption
puf
root key
Prior art date
Application number
KR1020157014039A
Other languages
English (en)
Other versions
KR101726108B1 (ko
Inventor
조지 더블유. 콕스
데이비드 존스턴
지앙타오 리
아난드 라잔
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20150079880A publication Critical patent/KR20150079880A/ko
Application granted granted Critical
Publication of KR101726108B1 publication Critical patent/KR101726108B1/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/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/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
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

일 양상의 프로세서는 루트 키를 생성하기 위한 루트 키 생성 로직을 포함한다. 루트 키 생성 로직은 정적 및 엔트로피 비트들의 소스를 포함한다. 프로세서는 또한 루트 키 생성 로직과 결합된 키 도출 로직을 포함한다. 키 도출 로직은 루트 키로부터 하나 이상의 키를 도출하기 위한 것이다. 프로세서는 또한 상기 루트 키 생성 로직과 결합된 암호화 프리미티브 로직을 포함한다. 암호화 프리미티브 로직은 암호화 연산을 수행하기 위한 것이다. 프로세서는 또한 루트 키 생성 로직, 키 도출 로직 및 암호화 프리미티브 로직을 포함하는 보안 경계를 포함한다. 다른 프로세서, 방법 및 시스템이 또한 개시된다.

Description

집적 회로를 위한 보안 키 도출 및 암호화 로직{SECURE KEY DERIVATION AND CRYPTOGRAPHY LOGIC FOR INTEGRATED CIRCUITS}
실시예들은 집적 회로의 분야와 관련된다. 특히, 실시예들은 집적 회로에서 보안의 분야와 관련된다.
데스크톱 컴퓨터, 랩톱 컴퓨터, 노트북, 태블릿, 스마트폰, 셀폰, 멀티미디어 콘텐츠 플레이어, 스마트 텔레비전, 셋톱 박스, 서버, 및 각종 다른 유형의 가전 제품 또는 전자 디바이스는 통상 민감성 또는 보안성 정보를 다루는데 사용된다. 예로서, 민감성 또는 보안성 정보는 재무 정보, 기밀문서, 개인 이메일, 디지털 권리 보호 콘텐츠 등을 포함할 수 있다.
이런 전자 디바이스에 사용되는, 프로세서, 칩 세트 컴포넌트, 시스템-온-칩(SoC), 보안-관련 집적 회로, 및 다른 유형의 집적 회로에는 통상 비밀 키와 같은 비밀이 제공되고, 이는 민감성 또는 보안성 정보를 보호하는데 사용된다. 예를 들어, 비밀 키는 암호화/복호화를 통하여 정보를 보호하는데 사용될 수 있다.
본 발명은 본 발명의 실시예를 예시하는데 사용되는 발명의 상세한 설명 및 첨부 도면을 참조하여 가장 잘 이해될 수 있다. 도면에서:
도 1은 보안 키 도출 및 암호화 로직을 갖춘 프로세서의 일 실시예의 블록도이다.
도 2는 PUF 기반 루트 키 생성 시스템의 일 실시예의 블록도이다.
도 3은 테스트 및 디버그 로직의 일 실시예를 선택적으로 포함하는, 보안 키 도출 및 암호화 로직을 갖춘 프로세서의 일 실시예의 블록도이다.
도 4는 물리적 및/또는 논리적 보안 인증 경계를 선택적으로 포함하는 보안 키 도출 및 암호화 로직을 갖춘 프로세서의 일 실시예의 블록도이다.
도 5는 디지털 난수 발생기 로직 및 연관된 버퍼들을 선택적으로 포함하는, 보안 키 도출 및 암호화 로직을 갖춘 프로세서의 일 실시예의 블록도이다.
도 6은 암호화로 시행된 도메인 분리를 제공하도록 동작 가능한, 보안 키 도출 및 암호화 로직을 포함하는 프로세서를 갖춘 컴퓨팅 시스템의 블록도이다.
도 7은 PUF로부터 도출된 키들을 이용하여 퓨즈 값들을 암호화하고 복호화하도록 동작 가능한 퓨즈 로직의 일 실시예의 블록도이다.
도 8a는 본 발명의 실시예들에 따르는, 예시적인 순차 파이프라인, 예시적인 레지스터 재명명, 비순차 발행/실행 파이프라인 모두를 도시한 블록도이다.
도 8b는 본 발명의 실시예들에 따르는, 프로세서에 포함될, 순차 아키텍처 코어의 예시적인 실시예, 예시적인 레지스터 재명명, 비순차 발행/실행 아키텍처 코어 모두를 도시한 블록도이다.
도 9a는 본 발명의 실시예들에 따르는, 단일 프로세서 코어와, 이와 온-다이 상호 접속 네트워크와의 접속 및 레벨 2(L2) 캐시의 그 로컬 서브셋을 함께 도시한 블록도이다.
도 9b는 본 발명의 실시예들에 따르는 도 9a의 프로세서 코어의 일부의 확대도이다.
도 10은 본 발명의 실시예들에 따르는, 2개 이상의 코어를 가질 수 있고, 통합된 메모리 제어기를 가질 수 있으며, 통합된 그래픽을 가질 수 있는 프로세서의 블록도를 도시한다.
도 11은 본 발명의 일 실시예에 따르는 시스템의 블록도를 도시한다.
도 12는 본 발명의 일 실시예에 따르는 제1의 더욱 특정한 예시적인 시스템의 블록도를 도시한다.
도 13은 본 발명의 일 실시예에 따르는 제2의 더욱 특정한 예시적인 시스템의 블록도를 도시한다.
도 14는 본 발명의 일 실시예에 따르는 SoC의 블록도를 도시한다.
도 15는 본 발명의 실시예들에 따르는, 소스 명령어 세트에서의 이진수 명령어들을 목표 명령어 세트에서의 이진수 명령어들로 변환하기 위한 소프트웨어 명령어 변환기를 사용하는 것을 대조하는 블록도이다.
본 명세서에는 프로세서들 및 다른 집적 회로들을 위한 보안 키 도출 및 암호화 로직이 개시된다. 아래의 설명에서는, 다수의 특정 상세(예를 들어, 특정 암호화 알고리즘, 로직 분할/통합 상세, 로직 구현, 동작들의 시퀀스, 시스템 컴포넌트의 유형 및 상호관계 등)가 설명된다. 그러나, 본 발명의 실시예가 이러한 세부사항들 없이도 실시될 수 있다는 것은 이해된다. 다른 경우에, 공지된 회로, 구조 및 기술은 본 명세서의 설명의 이해를 불명료하게 하지 않도록 상세히 도시되지 않았다.
도 1은 보안 키 도출 및 암호화 로직(102)을 갖춘 프로세서(100)의 일 실시예의 블록도이다. 일부 실시예들에서, 프로세서는 (예를 들어, 데스크톱, 랩톱, 넷북, 태블릿, 스마트폰, 셀 폰, 서버, 스마트 텔레비전, 세트-톱 박스, 및 유사한 컴퓨팅 디바이스에 사용되는 유형의) 범용 프로세서일 수 있다. 대안적으로, 프로세서는 특수 목적 프로세서일 수 있다. 적절한 특수 목적 프로세서들의 예들은 단지 몇 가지 예로서, 암호화 프로세서, 보안 프로세서, 네트워크 프로세서, 통신 프로세서, 코-프로세서, 내장형 프로세서, 및 디지털 신호 프로세서(DSP)를 포함하지만 이에 한정되지 않는다.
프로세서는 보안 키 도출 및 암호화 로직(102)을 포함한다. 보안 키 도출 및 암호화 로직은 루트 키 생성 로직(104), 암호화 프리미티브 로직(cryptographic primitive logic)(106), 키 도출 로직(108), 선택적 도출 키 스토리지(110) 및 선택적 암호화/복호화 로직(112)을 포함한다. 이런 컴포넌트들은 모두 로컬 상호 접속부(114)와 연결되고 또한 이에 의해 함께 연결된다. 보안 키 도출 및 암호화 로직은 전적으로 온-다이 및/또는 온-프로세서에 포함될 것이다(예를 들어, 프로세싱이 메모리로부터 프로세서상에 로딩된 소프트웨어에 의해 수행될 필요가 없을 수도 있다). 일부 실시예들에서, 보안 키 도출 및 암호화 로직은 하드웨어 온-다이 및/또는 온-프로세서에서 주로 구현될 수 있거나, 거의 전적으로 구현될 수 있거나, 또는 전적으로 구현될 수 있다. 일부 실시예들에서, 보안 키 도출 및 암호화 로직은 실질적으로 재사용 가능하고 확장 가능한(scalable) 실질적인 수직 IP(intellectual property) 블록으로서 구현될 수 있다. 일부 실시예들에서, 수직 IP 블록은 하나의 프로세서 설계로부터 다른 프로세서 설계로 이동 가능하고, 확장 가능하고, 재사용 가능하고, 실질적으로 자급식(self-contained)이고, 잘 정의된 인터페이스를 통해 다른 컴포넌트들에 연결 가능하도록 설계될 수 있어, 수직 IP 블록이 설계들 간에 재사용될 수 있게 도울 수 있다. 일부 실시예들에서, 보안 키 도출 및 암호화 로직의 모든 컴포넌트들은 경계를 떠나는 보안 또는 비밀 정보 없이 물리적 및/또는 논리적 경계(116) 내에서 실질적으로 자급식일 수 있다.
보안 키 도출 및 암호화 로직(102)은 루트 키 생성 로직(104)을 포함한다. 루트 키 생성 로직은 하나 이상의 비밀 또는 보안 루트 키를 생성하도록 동작 가능하다. 일부 실시예들에서, 루트 키는 보안 로직의 경계를 떠나지 않을 수도 있다. 루트 키(들)은 하나 이상의 다른 비밀 또는 보안 도출 키를 도출시키는데 사용될 수 있다. 이하에 더욱 설명되는 바와 같이, 비밀 또는 보안 도출 키(들)은 다양한 목적들(예를 들어, 암호화/복호화를 수행하고, 챌린지(challenge)에 대한 응답을 제공하는 등)에 사용될 수 있다. 도시된 바와 같이, 일부 실시예에서, 루트 키 생성 로직은 물리적으로 복제 가능하지 않은 기능(PUF; physical unclonable function) 기반 루트 키 생성 로직(105)을 선택적으로 포함할 수 있다. PUF는 아래 더욱 상세히 설명될 것이다. PUF 기반 루트 키 생성 로직은 하나 이상의 비밀 또는 보안 PUF 기반 루트 키를 생성하도록 동작 가능할 수 있다. 다른 선택사항으로서, 일부 실시예에서, 루트 키 생성 로직은 선택적으로 퓨즈 기반 루트 키 생성 로직(도시 안됨)을 포함할 수 있다. 퓨즈 기반 루트 키 생성 로직은 하나 이상의 비밀 또는 보안 퓨즈 기반 루트 키를 생성하도록 동작 가능할 수 있다. 또 다른 실시예들에서, PUF 기반 및 퓨즈 기반 루트 키 생성 로직들의 조합이 이용될 수 있다. 대안적으로, 퓨즈들 및 PUF를 위한 대체물들, 또는 실질적으로 정적이며 실질적으로 엔트로피/랜덤인 비트들의 다른 소스들이 이용될 수 있다.
보안 키 도출 및 암호화 로직(102)은 또한 암호화 프리미티브 로직(106)을 포함한다. 일부 실시예들에서, 암호화 프리미티브 로직은 블록 암호를 수행하도록 동작 가능한 블록 암호화 로직(예를 들어, 블록 암호 엔진 또는 모듈), 및/또는 해시 연산을 계산하도록 동작 가능한 암호화 해시 함수 로직(예를 들어, 보안 해시 알고리즘 로직)을 포함할 수 있다. 블록 암호들은 데이터를 암호화 및 복호화하는데 모두 사용되는 대칭 키를 이용한 일정한 변환(unvarying transformation)으로 블록들이라 불리는 고정 길이의 비트 그룹들에 대해 동작하는 결정론적 암호화 알고리즘을 일반적으로 나타낸다. 예로서, 블록 암호화 로직은 AES(Advanced Encryption Standard) 로직(예를 들어, AES 엔진 또는 모듈)를 포함할 수 있다. AES는 2001년 11월 26일에 발표된 미국 FIPS(Federal Information Processing Standards) PUB 197에 더욱 설명되는 미국 NIST(National Institute of Standards and Technology) 승인 암호화 알고리즘이다. 대안적으로, 다른 블록 암호화 온-다이 로직 구현 알고리즘들(예를 들어, NIST 또는 FIPS에 의해 승인된 다른 알고리즘들)이 선택적으로 AES 대신에 이용될 수 있다. 일부 실시예들에서, 암호화 프리미티브 로직은 보안 키 도출, 암호화 로직, 및 온-다이 및/또는 온-프로세서의 경계(116) 내에서 하드웨어로 주로 구현되거나, 거의 전적으로 구현되거나 또는 전적으로 구현될 수 있다.
암호화 프리미티브 로직은 다양한 목적들에 사용될 수 있다. 일부 실시예에서, 예를 들어 암호화 프리미티브 로직은 데이터를 암호화하고 복호화하는데 사용될 수 있다. 또 다른 예로서, 암호화 프리미티브 로직은 보안 키 도출 및 암호화 로직 내에서 다른 암호화 로직 또는 프로토콜을 지원하는데 사용될 수 있다. 예를 들어, 이하 더욱 설명되는 바와 같이, 암호화 프리미티브 로직은 키 도출 로직(108) 및/또는 키 도출을 지원하는데 사용될 수 있다. 또 다른 예로서, 이하 더욱 설명되는 바와 같이, 암호화 프리미티브 로직은 PUF 기반 루트 키 생성과 관련하여 수행된 엔트로피 추출 및/또는 PUF 비트 컨디셔닝(bit conditioning)을 지원하는데 사용될 수 있다. 또 다른 예로서, 이하 더욱 설명되는 바와 같이, 암호화 프리미티브 로직은 암호화/복호화 로직(112) 및/또는 암호화/복호화를 지원하는데 사용될 수 있다. 또 다른 예로서, 이하 더욱 설명되는 바와 같이 암호화 프리미티브 로직은 디지털 난수 발생(DRNG: digital random number generation)을 지원하는데 사용될 수 있다.
도 1을 다시 참조하면, 보안 키 도출 및 암호화 로직(102)은 또한 키 도출 로직(108)(예를 들어, 키 도출 엔진 또는 모듈)을 포함한다. 키 도출 로직은 하나 이상의 루트 키로부터 하나 이상의 도출 키를 도출하도록 동작 가능할 수 있다. 예로서, 하나 이상의 도출 키는 온-다이 로직으로 구현된 키 도출 알고리즘을 하나 이상의 루트 키로 평가함으로써 생성되거나 도출된다. 상이한 키 도출 알고리즘들은 상이한 실시예들에 적합하다. 적절한 키 도출 알고리즘들의 예들은 NIST SP800-108, SP800-56C, 해시 함수들을 기반으로 하는 키 도출 알고리즘들, 블록 암호들을 기반으로 하는 키 도출 알고리즘들, 다른 NIST 또는 FIPS 승인 키 도출 알고리즘들 등을 포함하지만 여기에 한정되지 않는다. 일부 실시예들에서, 키 도출 로직은 보안 키 도출, 암호화 로직, 및 온-다이 및/또는 온-프로세서의 경계(116) 내에서 하드웨어로 주로 구현되거나, 거의 전적으로 또는 전적으로 구현될 수 있다. 일부 실시예들에서, 루트 키 생성 로직 및 키 도출 로직은 수직 IP 블록으로서 보안 인증된 경계 내에서 하드웨어로 구현될 수 있다. 유리하게, 하나 이상의 도출 키는 하나 이상의 루트 키(예를 들어, 하나 이상의 PUF 기반 루트 키)로부터 암호적으로 도출될 수 있다. 일 양상에서, 이는 PUF 또는 퓨즈의 다수의 상이한 세트를 가질 필요 없이 다수의 상이한 도출 키를 제공하는데 이용될 수 있고, 이는 그렇지 않으면 로직의 크기, 제조 비용 및 전력 소모를 증가시키는 경향이 있을 것이다.
일부 실시예들에서, 키 도출 로직(108)은 보안 키 도출 및 암호화 로직(102) 외부의 프로세서(100)의 다양한 컴포넌트들(예를 들어, 다른 로직(118)), 및/또는 프로세서가 배치된 시스템의 다양한 컴포넌트들을 위한 키들을 생성하거나 도출시키기 위해 이용될 수 있다. 예를 들어, 일부 실시예에서, 다른 컴포넌트들(예를 들어, 다른 로직(118))은 온-다이 로직으로 구현된 키 도출 알고리즘을 평가하는데 사용되는 추가 비트들 또는 데이터를 제공할 수 있다. 일례로서, 도출된 키는 도출된 키를 요구하고 있는 다른 컴포넌트(예를 들어, 다른 로직(118))에 의해 제공된 하나 이상의 루트 키 및 한 세트의 비트들(예를 들어, 도출 스트링, 개인화 스트링 등)을 이용하여 키 도출 알고리즘을 평가함으로써 생성될 수 있다. 예로서, 다른 로직(118)은 프로세서들 또는 다른 집적 회로들에서 발견된 키 활용 및/또는 보안 로직의 각종 상이한 타입들을 나타낼 수 있다. 이런 로직의 예들은 암호화 로직(encryption logic), 복호화 로직(decryption logic), 암호 로직(cryptographic logic) 또는 모듈들, 신뢰받는 플랫폼 모듈들, 보안 엔진들, 보안 제어기들, 암호-프로세서들, 암호-코프로세서(crypto-coprocessor)들 등을 포함하지만 여기에 한정되지 않는다.
키 도출 로직(108)의 다른 용도들도 또한 예상된다. 예를 들어, 일부 실시예에서, 도출 키는 입력으로서 수신된 챌린지에 응답하여 출력으로서 제공된 응답으로서 이용될 수 있다. 예를 들어, 챌린지(예를 들어, 한 세트의 비트들)는 다른 컴포넌트(예를 들어, 다른 로직(118))에 의해 키 도출 로직에 제공될 수 있다. 키 도출 로직은 키 도출 알고리즘을 하나 이상의 루트 키 및 챌린지를 이용하여 평가할 수 있다. 도출 키는 챌린지에 대한 응답을 나타낼 수 있다. 유리하게, 응답은 루트 키(예를 들어, PUF 기반 루트 키)를 기초로 하여 암호적으로 도출된다. 챌린지-응답 기능성을 제공하기 위한 다른 가능한 방법은 암호 키 도출 또는 프로세싱을 통과함이 없이 (아마도 에러 정정을 이용하여) 직접적으로 챌린지를 PUF 셀들에게 제공하고 PUF 셀들로부터 직접적으로 응답을 제공하는 것일 것이다. 그러나, 후자의 접근법은 소정의 단점을 일반적으로 갖는다. 그 중 하나는, PUF 셀들로부터 이용 가능한 챌린지-응답 쌍들의 수가 일반적으로 제한된다(예를 들어, 정적 랜덤 액세스 메모리(SRAM) 유형의 PUF에서 챌린지들은 제한된 수의 응답이 가능하도록 물리적 어드레스들을 나타낼 수 있다). 더욱이, 아비터-타입(arbiter-type) PUF에서, 수많은 챌린지-응답 쌍들은 공격의 모델링을 허용하는 경향이 있을 수 있다. 다른 하나는, PUF 셀들로부터의 응답이 일반적으로 노이즈가 있는 경향이 있다. 이와 달리, 도출된 키를 챌린지에 대한 응답으로서 사용하면, 많은 수의 또는 심지어 거의 무제한의 수의 에러가 없는 챌린지-응답 쌍을 허용할 수 있다. 이런 챌린지-응답 능력은 각종 목적, 예를 들어, 본 기술 분야들에 알려진 인증, 위조 검출 및 다른 목적에 유용할 수 있다.
일부 실시예들에서, 키 도출 로직(108)은 하나 이상의 루트 키로부터, 보안 키 도출 및 암호화 로직(102)의 경계(116) 내에 안전하게 유지될, 하나 이상의 비밀 또는 보안 키를 도출하는데 사용될 수 있다. 예를 들어, 비밀 또는 보안 도출된 키는 (예를 들어, 퓨즈로부터의, RAM에 저장된, 아니면 암호화 로직 내에 보존된, 등) 추가 비트들과 잠재적으로 결합된 하나 이상의 루트 키를 이용하여 키 도출 알고리즘을 평가함으로써 생성될 수 있다. 일부 실시예들에서, 이들 하나 이상의 비밀 또는 보안 키(111)는 선택적 도출 키 스토리지(110)에 저장될 수 있다. 일부 실시예들에서, 이러한 하나 이상의 비밀 또는 보안 키(111)는 암호화 및/또는 복호화 로직(112)에 의해 사용될 수 있는 하나 이상의 암호화 및/또는 복호화 키를 포함할 수 있다. 일부 실시예들에서, 하나 이상의 루트 키(예를 들어, PUF 기반 루트 키들)가 경계(116) 외부에 노출되지 않을 뿐만 아니라, 하나 이상의 루트 키를 기반으로 도출된 하나 이상의 비밀 또는 보안 도출 키도 또한 경계(116)의 외부에 노출되지 않는다.
도 1을 다시 참조하면, 보안 키 도출 및 암호화 로직(102)은 또한 선택적 암호화 및/또는 복호화 로직(112)(예를 들어, 암호화 및/또는 복호화 엔진 또는 모듈)을 포함한다. 암호화/복호화 로직은 데이터를 암호화 및/또는 복호화하도록 동작 가능할 수 있다. 적절한 암호화/복호화 알고리즘들의 예들은 AES-ECB, AES-CBC, AES-CTR, 다른 블록 암호 알고리즘들, 다른 NIST 또는 FIPS 승인 암호화/복호화 알고리즘 등을 포함하지만 이에 한정되지 않는다. 암호화 프리미티브 로직(106)과 비교할 때, 암호화/복호화 로직(112)은 일반적으로 크고 유동적인 크기의 데이터에 대해 동작하는 반면, 암호화 프리미티브 로직은, 비록 요구되지 않을지라도, 일반적으로 작고 고정된 크기의 블록들(예를 들어, 64-비트 블록들, 128-비트 블록들 등)에 대해 동작한다. 일부 실시예들에서, 암호화/복호화 로직은 보안 키 도출, 암호화 로직, 및 온-다이 및/또는 온-프로세서의 경계(116) 내에서 하드웨어로 주로 구현되거나, 거의 전적으로 또는 전적으로 구현될 수 있다. 다른 실시예들에서, 암호화/복호화 로직은 보안 키 도출 및 암호화 로직이 암호화 및/또는 복호화를 수행하는데 요구되지 않는 한 선택적으로 생략될 수 있다. 예를 들어, 이는 로직(102)이 암호화/복호화가 아닌 챌린지 응답 용도에 사용되는 경우 사실일 수 있다.
다양한 실시예들에서, 암호화/복호화 로직은 루트 키 생성 로직(104)으로부터의 루트 키들, 키 도출 로직(108)에 의해 루트 키들로부터 도출된 키들, 도출 키 스토리지(110)로부터의 도출된 키들(111), 또는 다른 키들을 사용할 수 있다. 일례로서, 일부 실시예에서 컴포넌트(예를 들어, 다른 로직 (118))가 한 세트의 비트들(예를 들어, 도출 스트링, 개인화 스트링 등) 및 암호화될 평문 데이터를 제공할 수 있다. 키 도출 로직은 루트 키 및 제공된 비트들의 세트(예를 들어, 도출 또는 개인화 스트링)를 기반으로 키를 도출시킬 수 있다. 그 후, 암호화/복호화 로직은 평문 데이터를 도출된 키를 이용하여 암호화하고 암호화된 데이터(예를 들어, 암호문)을 요청 컴포넌트에 다시 제공할 수 있다. 다른 예로서 일부 실시예에서, 컴포넌트(예를 들어, 다른 로직 (118))가 한 세트의 비트들(예를 들어, 도출 스트링, 개인화 스트링 등) 및 복호화될 암호화된 데이터(예를 들어, 암호문)를 제공할 수 있다. 키 도출 로직은 루트 키 및 제공된 비트들의 세트(예를 들어, 도출 또는 개인화 스트링)를 기반으로 키를 도출시킬 수 있다. 그 후, 암호화/복호화 로직은 도출된 키를 이용하여 암호화된 데이터를 복호화하고 복호화된 또는 평문 데이터(예를 들어, 암호문)를 요청 컴포넌트에 다시 제공할 수 있다.
전술한 바와 같이, 도 1의 루트 키 생성 로직(104)은 선택적으로 퓨즈 기반 루트 키 생성 로직을 포함할 수 있다. 퓨즈 사용의 한가지 잠재적인 단점은, 특정 구현 및 보안에 대한 요구에 따라서는, 퓨즈에 저장된 비밀이 일부 경우에 부분적으로 너무 단순해서 리버스 엔지니어링할 수 있기 때문에 불충분한 보안이 될 수 있다는 것이다. 예를 들어, 집적 회로는 퓨즈들에 저장된 키들의 값을 결정하기 위해 물리적으로 실험실에서 엄격하게 조사될 수 있다. 퓨즈들에 저장된 키들이 결정되는 것을 허용하는 것은 집적 회로의 보안 및 집적 회로가 처리하는 보안성 및 민감성 데이터를 위협하거나, 또는 적어도 위협하는 데 기여할 수 있다. 일부 실시예들에서, PUF들은 보안 레벨을 높이는 것을 돕기 위해 퓨즈 대신에 사용될 수 있고/있거나 이에 덧붙여 사용될 수 있다.
도 2는 PUF 기반 루트 키 생성 시스템(205)의 일 실시예의 블록도이다. 일부 실시예들에서, 도 2의 PUF 기반 루트 키 생성 시스템은 도 1의 프로세서 및/또는 보안 키 도출 및 암호화 로직에 사용될 수 있다. 대안적으로, 도 2의 PUF 기반 루트 키 생성 시스템은 유사하거나 또는 전적으로 상이한 프로세서 및/또는 보안 키 도출 및 암호화 로직에 사용될 수 있다. 더욱이, 도 1의 프로세서 및/또는 보안 키 도출 및 암호화 로직은 도 2의 시스템과 동일, 유사 또는 전적으로 상이한 PUF 기반 루트 키 세대 시스템을 이용할 수 있다.
PUF 기반 루트 키 세대 시스템(205)은 한 세트의 PUF 셀들(220)을 포함한다. PUF 셀들은 또한 본 명세서에서 간단히 PUF들로 언급될 수 있다. PUF들은 때때로 또한 POWF(physical one-way function)들, 또는 다른 명칭들로 알려졌다. PUF 셀들 각각은 대응하는 PUF 비트를 생성하도록 동작 가능할 수 있다. PUF 셀들 또는 PUF 비트들의 수는 본 발명의 범위를 제한함이 없이 임의의 종래의 수 또는 적절한 수일 수 있다. 보통, 비교적 높은 보안의 범용 프로세서의 경우, 비록 본 발명의 범위가 임의의 수로 제한되지 않을지라도, 수십, 수백, 수천의 PUF 셀들 및/또는 PUF 비트들이 어딘가에 있을 수 있다. 자연적인 가공 프로세스 변동들은 디바이스당 실질적으로 고유한(예를 들어, 실질적으로 플랫폼 고유한) PUF 비트들을 가져올 수 있다. PUF 비트들은 또한 디바이스의 수명 전체에 걸쳐 각각의 디바이스에 대해 실질적으로 정적이며 실질적으로 엔트로피 또는 랜덤인 경향이 있다. PUF 비트들은 PUF 루트 키들이 얻어지는 소스일 수 있다.
본 기술 분야에 알려진 매우 다양한 상이한 유형의 PUF(220)가 이용될 수 있다. 종래에 PUF인 것으로 알려진 디바이스, 회로 및 물리적 시스템의 모든 상이한 유형들 주위에 정확한 경계를 배치하는 것은 어려운 경향이 있다. 이 논의는 PUF인 것으로 간주되는 디바이스, 회로 및 물리적 시스템을 제외하는 것으로 의도되지 않고 이용해서도 안 된다. 대부분의 PUF는 기능(예를 들어, PUF가 출력/응답을 입력/챌린지로부터 생성함)를 나타내고, 이는 물리적이고(예를 들어, 매체에 내장되고, 집적 회로를 포함하며, 구조 또는 마이크로 구조(예를 들어, 마이크로 전자 구조)를 포함하고, 물질들을 포함하며, 물리적 매체 등에 구현됨), 실질적으로 복제 가능하지 않다. 실질적으로 복제 가능하지 않다는 용어는 동일한 제조 프로세스를 이용할지라도, 동일한 두드러진 특징들을 가지고 있을(예를 들어, 동일한 출력/응답(예를 들어, PUF 비트들)을 제공할 것인) PUF의 세트의 다른 카피를 연속해서 제조하는 것은, 한 세트의 PUF의 제조업자라 할지라도, 실행 불가능하지는 않더라도 매우 어려울 것이라는 것을 의미한다. PUF 셀들에 의해 생성된 PUF 비트들의 특정 이진수 값들은 일반적으로 대응하는 PUF 셀들의 물리적 특징에 종속하고, 이런 물리적 특징은 대응하는 PUF 셀들을 제조하는데 사용된 특정 제조 프로세스에 종속하며, 이는 사실상 정확히 재현하는 것이 비현실적이거나 실현 불가능한, 제조 프로세스 동안 직면하게 되는 일반적으로 제어할 수 없는 프로세스 변동들에 종속하는 것을 포함한다.
일부 실시예들에서, PUF(220)는 실리콘 진성(silicon intrinsic) PUF, 또는 더 일반적으로는 반도체 진성 PUF, 또는 상보형 금속 산화물 반도체(CMOS) PUF를 나타낼 수 있다. 일부 실시예들에서, PUF 셀들은 또한 집적 회로의 트랜지스터들 및/또는 다른 로직을 제조하는데 사용되는 CMOS 제조 프로세스를 이용하여 제조되었을 수 있다. 일부 실시예들에서, PUF 셀들 각각은 예를 들어 집적 회로의 일부, 및/또는 반도체들로 형성된 구조 또는 디바이스, 및/또는 CMOS 프로세스에 의해 형성된 구조 또는 디바이스를 포함하는 집적 회로 기판 내에 내장될 수 있다. PUF들의 적절한 유형들의 예는, 지연 PUF들(예를 들어, 디지털 지연 측정들을 기반으로 하는 진성 PUF들), 지연 루프 PUF들, 메모리 PUF들(예를 들어, 디지털 메모리 소자들의 안정 상태(settling state)를 기반으로 한 진성 PUF들), SRAM PUF들, 교차 결합된 PUF들, 아비터 PUF들(예를 들어, MUX들 및 아비터를 기반으로 하는 PUF들), 링-발진기 PUF들, 쌍안정 링 PUF들, 버터플라이 PUF들, 래치 PUF들, 플립-플롭 PUF들, D 타입 플립플롭 PUF들, 코팅 PUF들, 본 기술 분야들에 알려진 추가적인 반도체 또는 CMOS PUF들, 및 이들의 조합을 포함하지만, 이게 한정되지 않는다. 실리콘, 반도체 또는 CMOS PUF들의 경우, PUF의 특정 유형에 따라서는, 생성된 PUF 비트들의 이진수 값들은 반도체 물질들의 도펀트 농도들, 집적 회로들의 선 폭들, 층 두께들, 한 영역에서 다음 영역까지의 변동 등과 같은 인자들에 따라 결정되는 경향이 있을 수 있고, 이는 예측 불가능한 방식으로 제조 프로세스 변동에 종속한다.
도 2를 다시 참조하면, PUF 기반 루트 키 생성 로직(205)은 또한 PUF 셀들(220)과 인터페이스하기 위한 PUF 인터페이스 로직(221)을 포함한다. PUF 인터페이스 로직(221)은 PUF 셀들로부터 PUF 비트들(예를 들어, 한 세트의 이진수 또는 비트 값들)을 판독하도록 동작 가능할 수 있다. 일부 실시예들에서, PUF 인터페이스 로직은 이것이 요구되지 않을지라도, 선택적으로 PUF 드라이브백(driveback)을 제공하도록 동작 가능할 수 있다. PUF 드라이브백은 각각의 PUF 셀로부터 판독된 값을 취하고, 이를 반전시키고, PUF 셀 상에 이를 다시 구동할 수 있다. 유리하게, 이는 PUF 셀의 에이징이 PUF를 정의되지 않은 또는 가변 상태가 아닌 정의된 또는 정적인 상태를 향하도록 더욱 구동되게 하는데 도움이 될 것이다.
일반적으로, PUF 셀들로부터 PUF 비트들을 판독할 때 PUF 비트들은 일반적으로 상당히 정적인 경향이 있다. 예를 들어, PUF 셀들로부터 PUF 비트들을 여러 번 판독할 때, 전형적으로 대부분의 PUF 비트들은 판독들 간에 동일한 이진수 값을 갖는 경향이 있다. "약한(weaker)" PUF 비트들로서 언급되는 일부 PUF 비트들은 다른 것보다 더 빈번히 판독들 간에 이진수 값을 플립(flip) 또는 바꾸는 경향이 있다. 예를 들어, 5개의 PUF 셀의 제1 판독은 PUF 비트들 "01101"를 가져올 수 있는 반면, 동일한 5개의 PUF 셀의 제2 판독은 PUF 비트들 "0l111"를 가져올 수 있다. PUF 비트가 제1 판독과 제2 판독 사이에서 이진수 0에서 이진수 1로 플립됨에 유의하자. 이는 PUF 비트 에러를 나타낸다. 보안에 사용될 때, 이런 PUF 비트 에러들은 일반적으로 바람직하지 않다(예를 들어, 이들 에러가 다양한 예측 불가능하거나 반복할 수 없는 키들이 생성되도록 유발할 수 있기 때문이다).
도시된 바와 같이, PUF 인터페이스 로직(221)은 PUF 셀들로부터 판독된 PUF 비트들을 에러 정정 로직(222)에 제공할 수 있다. 에러 정정 로직은 PUF 비트들에 대한 에러 정정을 수행하고 존재할 수 있는 임의의 에러를 적어도 소정 레벨의 에러까지 수정하도록 동작 가능할 수 있다. 도시된 바와 같이, 일부 실시예에서, 에러 정정 로직은 에러 정정 데이터를 수신할 수 있다. 에러 정정 데이터는 종종 또한 에러 정정 코드 또는 헬퍼 데이터(helper data)로서 언급된다. 일부 실시예들에서, 에러 정정 데이터는 퓨즈들, 다른 비휘발성 메모리 등에 저장될 수 있다. 일부 실시예들에서, 에러 정정 로직은 예를 들어 제조시, 나중의 사용을 위해, 에러 정정 데이터를 생성하고 저장하도록 동작 가능할 수 있다. 그 후, 에러를 갖는 PUF 비트들이 에러 정정 로직에 제공될 때, 에러 정정 로직은 에러 정정된 PUF 비트들을 획득하기 위해서, PUF 비트들에서 최소한 소정 레벨까지 에러들을 정정하기 위해 에러 정정 데이터를 사용하도록 동작 가능할 수 있다. 본 기술 분야에 알려진 다양한 에러 정정 기법이 이용될 수 있다. 일부 실시예들에서, 에러 정정 로직은 온-다이 및/또는 온-프로세서에서 전적으로 구현되고, 하드웨어 로직에서 주로, 거의 전적으로 또는 전적으로 구현된다.
일반적으로 PUF 비트들이 충분한 레벨의 엔트로피 또는 랜덤성을 갖는 것이 바람직하다. 엔트로피 또는 랜덤성이 하이 레벨에 있을 때, 일반적으로 두 개의 상이한 집적 회로들로부터의 PUF 비트들의 동일한 세트가 생길 가능성은 상대적으로 낮은 경향이 있다. 예를 들어, 단지 일례로서 5개의 PUF 셀의 제1 세트로부터의 PUF 비트들은 "01101"일 수 있고, 5개의 PUF 셀의 제2 세트로부터의 PUF 비트들은 "10100"일 수 있고, 5개의 PUF 셀의 제3 세트로부터의 PUF 비트들은 "10111"일 수 있다. PUF 비트의 세트들이 상이함에 유의하자. 엔트로피가 비교적 하이 레벨에 있을 때, 주어진 충분한 PUF 비트의 세트들, PUF 비트의 스트링이 비교적 하이 레벨의 랜덤성 값들을 제공하기 위해 가능한 이진수 값들 모두에 대략 걸치도록 각각의 비트가 이진수-0 또는 이진수-1 중 하나를 갖는 가능성이 거의 동일해야 한다. 보안에 사용될 때, 일반적으로 PUF 비트들이 적어도 상당히 엔트로피 또는 랜덤인 것이 바람직한데, 그 이유는 이것이 보안을 강화하는데 도움을 주기 때문이다.
도 2를 다시 참조하면, 에러 정정 로직은 에러 정정된 PUF 비트들을 엔트로피 추출 로직(224)에 제공할 수 있다. 엔트로피 추출 로직은 에러 정정된 PUF 비트들에 대해 엔트로피 추출을 수행하도록 동작 가능할 수 있다. 엔트로피 추출은 엔트로피 또는 랜덤성을 장려하거나 촉진하는데 도움을 주는 컨디셔닝을 일반적으로 나타낸다. 적절한 엔트로피 추출 접근법의 예들은 AES-CMAC 알고리즘을 기반으로 한 접근법, 블록 암호화 알고리즘들을 기반으로 한 접근법, 메시지 인증 코드를 기반으로 한 접근법, 해시 함수들을 기반으로 한 접근법, 또는 본 기술 분야에 알려진 다른 엔트로피 추출 접근법을 포함하지만 이에 한정되지 않는다. 일부 실시예들에서, 엔트로피 추출 로직은 온-다이 및/또는 온-프로세서에서 전적으로 구현되고, 하드웨어 로직에서 주로, 거의 전적으로 또는 전적으로 구현된다. 엔트로피 추출 로직은 PUF 루트 키를 출력으로서 나타내는 엔트로피 추출된 PUF 비트들을 제공할 수 있다.
이것이 적절한 PUF 기반 루트 키 생성 로직의 단지 하나의 예시적인 예인 것을 이해해야 한다. 다른 실시예들은 PUF 비트들의 더 많은 또는 더 적은 처리를 수행하기 위해 더 많은 또는 더 적은 컴포넌트를 포함할 수 있다. 예를 들어, 다른 실시예들은 선택적으로 PUF 드라이브백을 생략할 수 있다. 다른 예로서, 다른 실시예들은 선택적으로 엔트로피 추출을 생략할 수 있다(예를 들어, PUF 비트들이 특정 구현을 위해 충분한 엔트로피를 갖고 있다고 이미 보증된다면). 전술한 PUF 비트들은 루트 키 생성 로직을 위해 본 명세서에 개시된 실시예들 중 임의의 실시예에 사용될 수 있다. 또한, PUF가 본 명세서에서 자주 설명되었지만, 다른 실시예들은 그 대신에 퓨즈들, 또는 루트 키에 적합한 비트들의 다른 정적인 엔트로피 소스들을 이용할 수 있다.
보안을 위해 PUF들을 사용하는 한가지 장점은 PUF 비트들 및/또는 PUF 루트 키들이 일반적으로 퓨즈들(또한 ROM, RTL, 타이-업/타이 다운(tie-up/tie-down) 등)에 저장된 키들보다 더 안전하고/안전하거나 (예를 들어, 리버스 엔지니어링, 물리적 공격 등을 통하여) 찾는 것에 훨씬 덜 취약한 경향이 있다는 것이다. PUF들은 루트 키들이 실행시간 동안 획득되는 PUF 비트들을 생성한다. PUF 비트들 및/또는 PUF 루트 키를 결정하기 위해서, 집적 회로 또는 다른 디바이스는 실행되거나 또는 전력이 공급되고/공급되거나 PUF 비트들의 값들을 변경하는 방식으로 변경되지 않을 필요가 있을 수 있다. 이들 팩터는 리버스 엔지니러링을 통해 PUF 비트들 및/또는 PUF 루트 키들의 값을 결정하기가 훨씬 더 어렵게 하는 경향이 있다. 유리하게, 이는 집적 회로들 또는 디바이스들의 보안뿐만 아니라 이들이 처리하기 위해 사용되는 민감성 정보를 개선하는데 도움을 줄 수 있다. 또한, PUF 비트들 및/또는 PUF 루트 키들은 집적 회로상의 보안 키 도출 및 암호화 로직 내에 알려질 수 있으나, 외부로, 일부 경우에 집적 회로 제조업자의 가장 신뢰받는 엔티티에게조차 알려지지 않을 수 있으며, 이는 제조업자의 책임, 위험, 및 의무를 제한하는 데 도움이 될 수 있다.
제조 동안 제조의 다양한 제조 스테이지에서 집적 회로들 및 집적 회로 패키지들을 테스트하고/하거나 디버깅하는 것은 흔한 일이다. 이것은 다양한 목적들을 위해, 예를 들어, 적절한 동작을 위해 집적 회로 기판을 테스트하고, 버그들 또는 결함들을 검출하기 위해, 버그들 또는 결함들을 고치려고 시도하기 위해, 폐기되거나 재작업해야 하는 부적절하게 기능하는 집적 회로로부터 적절히 기능하는 집적 회로를 소팅하기 위해, 테스팅을 기초로 한 데이터를 집적 회로에 프로그래밍하기 위해, 행해질 수 있다. 이런 테스팅 또는 디버깅은 집적 회로 테스트 및/또는 디버그 장비(예를 들어, 테스터 및 프로버) 및/또는 다른 집적 회로 제조 장비에 의해 행해질 수 있다. 예로서, 장비는 집적 회로의 노출된 전기 접촉들(예를 들어, 핀들)과 연결하는데 사용되는 한 세트의 전기 프로브들을 가질 수 있다. 장비는 전기 신호들을 테스트 패턴에 따라서 프로브들 및 핀들을 통해 집적 회로 기판과 교환할 수 있다. 예를 들어, 장비는 전기 신호들을 집적 회로로 전송하고, 이에 응답하여 대응하는 전기 신호들을 수신할 수 있고, 이 전기 신호들은 테스팅 또는 디버깅의 일부로서 분석될 수 있다. 하나의 어려운 문제는 장비가 원하는 만큼 크게 안전하지 않을 수 있다는 것이다. 잠재적으로 다수의 직원들(예를 들어, 운영자들) 또는 다른 사람들이 장비에 액세스할 수 있다. 운영자, 직원, 또는 장비(예를 들어, 테스터 및 프로버)에 대한 액세스를 갖는 다른 개인이 비밀 정보(예를 들어, 키들)를 획득하려고 시도하기 위해 비밀스럽게 악성 소프트웨어(예를 들어, 손상된 테스팅 프로그램)를 설치할 수 있다는 위험이 있다. 더욱이, 심지어 제조 설비 외부에서도, 공격자들은 외부 접촉들을 통해 비밀들(예를 들어, 키들)에 액세스를 시도하기 위해 그들의 자신 장비를 이용하려고 시도할 수 있다. 비밀들이 발견된다면, 그것은 집적 회로의 보안 및/또는 집적 회로 안에서 처리되는 비밀 정보를 위협할 수 있거나 또는 적어도 위협하는데 기여할 수 있다.
도 3은 선택적으로 테스트 및 디버그 로직(330)의 일 실시예를 포함하는 보안 키 도출 및 암호화 로직(302)을 갖춘 프로세서(300)의 일 실시예의 블록도이다. 보안 키 도출 및 암호화 로직(302)은 루트 키 생성 로직(304), 암호화 프리미티브 로직(306), 선택적 키 도출 로직(308), 도출 키 스토리지(310), 선택적 암호화/복호화 로직(312), 및 로컬 상호 접속부(314)를 포함한다. 프로세서는 또한 다른 로직(318)을 포함한다. 이들 컴포넌트의 각각은 선택적으로 도 1의 프로세서(100)의 대응하는 명칭의 컴포넌트들과 동일한 또는 유사한 특징을 가지고 있을 수 있다. 더욱이, 일부 실시예에서 루트 키 생성 로직(304)은 도 2의 로직과 동일 또는 유사할 수 있다. 설명이 불명료하지 않도록, 도 3의 프로세서(300)의 상이하고/하거나 추가적인 구조 및 특징을 우선적으로 이하 상세히 설명할 것이다.
일부 실시예들에서, 보안 키 도출 및 암호화 로직(302)은 물리적 및/또는 논리적 외부 테스트 및/또는 디버그 금지된 경계(316) 내에 포함될 수 있다. 일부 실시예들에서, 경계(316) 외부의 엔티티들(예를 들어, 테스터 및 프로버, 제조 장비, 외부 스캔 체인, 경계 외부의 온-프로세서 로직 등)에 의해 경계(316) 내의 로직의 스캐닝, 테스팅 및/또는 디버깅은 금지 또는 불가능하게 된다(즉, 수행되도록 허용되지 않는다). 경계는 외부 스캔 금지 또는 불가능하게 된 경계, 외부 테스트가 금지 또는 불가능하게 된 경계, 외부 디버그가 금지 또는 불가능하게 된 경계 등을 나타낼 수 있다. 외부 엔티티들은 경계 내에 로직의 내부 상태를 검사하거나 알도록 허용되지 않을 수 있다. 예를 들어, 일부 실시예에서는 경계 내의 로직의 내부 상태가 프로세서의 노출된 또는 외부 접촉들(예를 들어, 핀들, 접촉 패드들 등)을 통해 액세스 되거나 검사되는 것을 허용하기 위한 라인들, 와이어들 또는 다른 상호 접속부들 및/또는 로직이 없을 수 있다. 유사하게, 일부 실시예에서는 경계 내의 로직의 내부 상태가 경계 밖의 프로세서의 온-다이 로직에 의해 액세스 되거나 검사되는 것을 허용하기 위한 상호 접속부들 및/또는 로직이 없을 수 있다. 예로서, 일반적인 칩-와이드(chip-wide) 디버그 능력들, 예를 들어, 스캔 체인들 및 칩-와이드 내장형 자체 테스트(BIST: built in self test)는 경계 내에서 이용되지 않았을 수 있다. 이와 반대로, 외부 엔티티들은 경계(예를 들어, 로직(318)) 외부의 프로세서의 다른 로직을 스캔, 테스트 또는 디버그할 수 있다. 선택적으로, 보안 키 도출 및 암호화 로직이 임의의 비밀 또는 보안 정보에 액세스할 수 없고 보안을 위협하는 임의의 커다란 위험 없이 외부 엔티티에 의해 스캐닝, 테스팅 및/또는 디버깅될 수 있는 소정 로직을 포함한다면, 이런 로직은 금지된 경계로부터 잠재적으로 또한 선택적으로 배제될 수 있다. 유리하게, 이는 손상된 시험 장비 또는 다른 공격 엔티티들이 보안 키 도출의 내부 상태 및 경계 내의 암호화 로직을 스캐닝하거나, 잠재적으로 비밀 또는 보안 정보(예를 들어, 루트 키, 도출 키 등)를 획득하거나, 또는 로직이 불안전한 방식으로 동작하게 구성하려고 시도하는 것 등을 방지하는데 도움이 될 것이다.
일부 실시예들에서, 스캔, 테스트 및/또는 디버그 로직(330)은 경계(316) 내에 포함될 수 있다. 일부 실시예들에서, 스캔, 테스트 및/또는 디버그 로직은 경계의 범위 내의 로직(302)의 적어도 일부 또는 모두를 스캔, 테스트 및/또는 디버그하도록 동작 가능할 수 있다. 즉, 로직(302) 또는 적어도 그 일부는 자족 스캔, 테스트 및/또는 디버그를 수행하기 위해 스캔, 테스트 및/또는 디버그 로직을 이용할 수 있다. 스캐닝 또는 테스팅은 로직이 적당히 및/또는 원하는 대로 기능하는지(예를 들어, 하나 이상의 버그들이 있는지)를 결정하는 것을 허용할 수 있다. 일부 경우에, 로직이 적당히 및/또는 원하는 대로 기능하지 않는다면, 경계의 범위 내로부터 모두, 예를 들어 로직을 재구성하고, 부적절하게 기능하는 로직을 불가능하게 하는 등에 의해 버그들을 수정하기 위한 소정의 능력이 있을 수 있다. 일부 실시예들에서, 스캔, 테스트 및/또는 디버그 로직은 스캔 기반 내장형 자체 테스트(BIST) 및 선택적 디버그 로직을 포함할 수 있다. 대안적으로, 다른 실시예들에서, 로직(102)을 스캐닝, 테스팅 및/또는 디버깅하는 것이 요구되지 않거나 또는 보안을 증가시키기 위해 희생되는 것이 바람직한 실시예들에서는 스캔, 테스트 및/또는 디버그 로직(330)은 선택적으로 생략될 수 있다.
도 4는 물리적 및/또는 논리적 보안 인증된 경계(416)를 선택적으로 포함하는 보안 키 도출 및 암호화 로직(402)을 갖춘 프로세서(400)의 일 실시예의 블록도이다. 보안 키 도출 및 암호화 로직(402)은 루트 키 생성 로직(404), 암호화 프리미티브 로직(406), 키 도출 로직(408), 선택적 도출 키 스토리지(410), 선택적 암호화/복호화 로직(412), 로컬 상호 접속부(414), 및 선택적 스캔, 테스트 및/또는 디버그 로직(430)을 포함한다. 프로세서는 또한 다른 로직(418)을 포함한다. 이들 컴포넌트 각각은 선택적으로 도 1의 프로세서(100) 및/또는 도 3의 프로세서(300)의 대응하게 명명된 컴포넌트와 동일하거나 또는 유사한 특징을 가지고 있을 수 있다. 더욱이, 일부 실시예에서 루트 키 생성 로직(404)은 도 2의 로직과 동일하거나 유사한 것일 수 있다. 설명이 불명료하지 않도록, 도 4의 프로세서(400)와 상이하고/하거나 추가적인 구조 및 특징이 우선적으로 이하 상세히 설명될 것이다.
보안 인증 경계(416)는 보안 키 도출 및 암호화 로직(402)을 포함한다. 일부 실시예들에서, 보안 인증 경계는 연합 정부 연구소, 연합 정부 기관, 연합 정부 규제 기관, 연합 정부 표준화 단체 등에 의해 안전하다고 인증된다. 일부 실시예들에서, 보안 인증 경계는 평판이 좋은 보안 업체, 표준화 단체 등에 의해 안전하다고 인증된다. 일부 실시예들에서, 보안 인증 경계는 연방정부 정보처리 표준(FIPS) 인증 경계를 나타낼 수 있다. 일부 실시예들에서, FIPS 인증 경계는 비록 이것이 요구되지 않을지라도, FIPS 공개물 140-2(2001년 5월 25일에 발표되고 2002년 12월 3일로 갱신된)하에서 인증될 수 있다.
일부 실시예들에서, 보안 인증 경계 내에서, 모든 암호화 알고리즘(예를 들어, 키 도출 알고리즘, 암호화 알고리즘, 복호화 알고리즘, 해싱 알고리즘 등)은 보안을 인증하는 엔티티에 의해 수용된 표준화된 알고리즘일 수 있다. 일부 실시예들에서, 알고리즘들 모두 또는 대부분은 미국 국립 표준 기술 연구소(NIST) 표준화된 알고리즘들, 연방 정보 처리 표준(FIPS) 표준화된 알고리즘 또는 다른 미국 연방 정부 수용 표준화된 알고리즘일 수 있다. 일부 실시예들에서, 이렇게 표준화되지 않은 임의의 알고리즘은 미국 국립 표준 연구소(ANSI), 국제 표준 기구(ISO), 전기 전자 기술자 협회(IEEE) 또는 유사하게 표준화된 알고리즘들일 수 있다. 일부 실시예들에서, 보안 인증 경계 내에서, 모든 암호화 알고리즘들은 경계의 FIPS 인증에 적합할 수 있다.
일부 실시예들에서, 보안 인증 경계 내의 로직은 보안 인증 경계 외부의 엔티티에 의해 스캐닝, 테스팅, 및/또는 디버깅 되기 않을 수 있다. 일부 실시예들에서, 내부 스캔, 테스트 및/또는 디버그 로직(430)은 경계 내에 포함될 수 있다. 대안적으로, 다른 실시예들에서 내부 스캔, 테스트 및/또는 디버그 로직은 생략될 수 있다.
일부 실시예들에서, 모든 보안 키 도출 및 암호화 로직(402)은 온-다이 또는 온-프로세서 로직(즉, 잠재적으로 일부 펌웨어를 갖지만 임의의 소프트웨어를 갖지 않는 하드웨어)에서 구현될 수 있다. 일부 실시예들에서, 모든 보안 키 도출 및 암호화 로직은 전적으로 온-다이 또는 온-프로세서 하드웨어 로직으로 구현될 수 있다.
도 5는 선택적으로 디지털 난수 발생기 로직(540) 및 연관된 버퍼들(542)을 포함하는 보안 키 도출 및 암호화 로직(502)을 갖춘 프로세서(500)의 일 실시예의 블록도이다. 보안 키 도출 및 암호화 로직(502)은 루트 키 생성 로직(504), 암호화 프리미티브 로직(506), 키 도출 로직(508), 선택적 도출 키 스토리지(510), 선택적 암호화/복호화 로직(512), 및 로컬 상호 접속부(514)를 포함한다. 프로세서는 또한 다른 로직(418)을 포함한다. 이들 컴포넌트 각각은 선택적으로 도 1의 프로세서에서 대응하게 명명된 컴포넌트들과 동일하거나 유사한 특징을 가지고 있을 수 있다. 보안 키 도출 및 암호화 로직(502)은 또한 도 3의 로직의 스캔, 테스트 및/또는 디버그와 동일하거나 유사한 특징을 선택적으로 가질 수 있는 선택적 스캔, 테스트 및/또는 디버그 로직(530)을 포함한다. 보안 키 도출 및 암호화 로직(502)은 경계(516) 내에 포함된다. 경계(516)는 선택적으로 도 1의 경계 및/또는 도 3의 경계 및/또는 도 4의 경계와 동일하거나 유사한 특징을 가지고 있을 수 있다. 일부 실시예들에서, 경계(516)는 이것이 요구되지 않을지라도 FIPS 인증된 경계이다. 설명이 불명료하지 않도록, 도 5의 프로세서의 상이하고/하거나 추가적인 구조 및 특징이 우선적으로 이하 설명될 것이다.
디지털 난수 발생기(DRNG) 로직(540) 및 그 연관 버퍼들(542)은 통상 프로세서들 또는 다른 집적 회로들에 포함된다. DRNG 로직 및 버퍼들의 적절한 예들은 본 기술 분야에 알려졌다. 예로서, 이들은 랜덤 키들을 생성하기 위해 사용될 수 있다. 도시된 바와 같이, 일부 실시예들에서 DRNG 로직 및 버퍼들은 보안 키 도출 및 암호화 로직(502)에 및/또는 경계(516) 내에 포함된다. DRNG 로직 및 버퍼들을 로직(502) 및/또는 경계 내에 포함하는 하나의 장점은 DRNG 로직 및 로직(502)의 다른 부분 모두에 의해 소정 로직의 재사용 또는 공유를 허용하는 효율적인 구현에 있다. 이런 로직의 재사용 또는 공유는 로직의 전체량의 감소를 허용하며(예를 들어, 로직의 반복을 회피함으로써), 이는 예를 들어 집적 회로의 제조 비용 및 전력 소모를 줄이는데 도움이 될 수 있다.
예를 들어, 일부 실시예에서, 암호화 프리미티브 로직(506)(예를 들어, 블록 암호화 로직)은 DRNG 로직(540)과 하나 이상의 키 도출 로직(508) 모두, 키 도출 로직(508) 및/또는 암호화/복호화 로직(512)에 의해 사용되고/되거나 공유될 수 있다. 다른 예로서, 일부 실시예에서, 스캔, 테스트 및/또는 디버그 로직(530)은 DRNG 로직(540)과 하나 이상의 키 도출 로직(508) 모두, 키 도출 로직(508) 및/또는 암호화/복호화 로직(512)에 의해 사용되고/되거나 공유될 수 있다. 일부 실시예들에서, 스캔, 테스트 및/또는 디버그 로직은 하나 이상의 로직(504-514)을 스캔, 테스트 및/또는 디버그하기 위한 로직(544)의 제1 부분, 및 로직(540 및 542)을 스캔, 테스트 및/또는 디버그하기 위한 로직(546)의 제2 부분을 포함할 수 있다. 추가 예로서, 일부 실시예에서 엔트로피 추출 로직(예를 들어, 엔트로피 추출 로직(224))은 PUF 기반 루트 키 생성 시스템 및 DRNG 로직(540) 모두에 의해 사용되고/되거나 공유될 수 있다. DRNG 로직을 위한 엔트로피 소스는 완전하지 않을 수 있고, 엔트로피/랜덤성을 향상 또는 조절하기 위해서 엔트로피 추출 로직으로부터 이익을 얻을 수 있다. 로직을 복제하기보다는 오히려 엔트로피 추출 로직은 양쪽 모두의 목적을 위해 공유되거나 재사용된다. 또 다른 예로서, 일부 실시예에서, 로컬 상호 접속부(514)는 DRNG 로직(540)과 하나 이상의 키 도출 로직(508) 모두, 키 도출 로직(508) 및/또는 암호화/복호화 로직(512)에 의해 사용되고/되거나 공유될 수 있다. 또 다른 예로서, 일부 실시예에서 버스 엔드포인트 로직(547), 및 클록 및 전력(예를 들어, 전력 게이팅) 로직(548)은 DRNG 로직(540)과 하나 이상의 키 도출 로직(508) 모두, 키 도출 로직(508) 및/또는 암호화/복호화 로직(512)에 의해 사용되고/되거나 공유될 수 있다.
도 6은 암호화가 강제된 도메인 분리를 제공하도록 동작 가능한 보안 키 도출 및 암호화 로직(602)을 포함하는 프로세서(600)를 갖춘 컴퓨팅 시스템(650)의 블록도이다. 보안 키 도출 및 암호화 로직(602)은 도 1, 3, 4 또는 5의 프로세서들 중 임의의 프로세서에서 사용될 수 있다. 대안적으로, 보안 키 도출 및 암호화 로직(602)은 유사한 또는 상이한 프로세서에서 사용될 수 있다. 더욱이, 도 1, 3, 4 또는 5의 프로세서들은 도 6의 프로세서와 동일한, 유사한 또는 상이한 보안 키 도출 및 암호화 로직을 이용할 수 있다. 일부 실시예들에서, 보안 키 도출 및 암호화 로직(602)은 이것이 요구되지 않을지라도, 도 2의 PUF 기반 루트 키 생성 로직을 포함할 수 있다.
프로세서 및 컴퓨팅 시스템은 다수의 도메인(654)을 포함한다. 도시된 바와 같이, 일부 도메인은 온-다이 또는 온-프로세서, 예를 들어 도메인 1 내지 X일 수 있으며, 반면에 다른 도메인들은 도메인 X+1 내지 N과 같은 컴퓨팅 시스템 내의 오프-다이 또는 오프-프로세서일 수 있다. 수 X 및 N는 특정 구현을 위한 임의의 적당한 수(예를 들어, 몇몇에서 수천 개 정도까지)일 수 있다. 임의의 종래의 프로세서-레벨 또는 시스템-레벨 컴포넌트, 로직 또는 엔티티는 잠재적으로 도메인으로서 이용될 수 있다. 몇가지 대표적인 예들은 스레드, 코어, 하드웨어 유닛, 암호화 로직, 코-프로세서, 그래픽 프로세서, 그래픽 카드, 통신 카드, 가상 머신, 가상 머신 모니터, 보안 엔진, 암호화 모듈, 센서 허브, 하드웨어 IP 블록 등을 포함하지만, 이에 제한되지 않는다.
보안 키 도출 및 암호화 로직(602)은 도메인 식별자 스토리지(656)를 포함한다. 예시된 실시예에서, 도메인 식별자 스토리지(656)는 이것이 요구되지 않을지라도, 보안 키 도출 및 암호화 로직(602) 내에 있는 것으로 선택적으로 도시된다. 다른 실시예들에서, 스토리지(656)는 예를 들어 액세스 제어 로직(652)의 어디나 위치할 수 있다. 도메인 식별자 스토리지는 시스템에서 다수의 도메인 각각을 위한 상이한 도메인 식별자(ID)(658)를 포함하거나 저장한다. 예를 들어, N개의 도메인 중 상이한 하나에 각각 대응하는 도메인 ID 1 내지 도메인 ID N이 있을 수 있다. 예로서, 상이한 도메인 ID들 각각은 해당 도메인에 고유한 비트들의 상이한 미리 결정된 정적 시퀀스일 수 있다. 예로서, 도메인 ID당 이런 비트들의 수는 약 5 내지 수십 정도이다. 이들 도메인 ID는 암호화 알고리즘을 평가하기 위해 도메인 특정 잉여 정보로서 나타날 수 있고 이용될 수 있다. 예로서, 이들 도메인 ID는 보안 키 도출 및 암호화 로직 내(예를 들어, FIPS 경계, 디버그 불가능 경계, 또는 본 명세서에 개시된 바와 같이 보안 키 도출 및 암호화 로직 주위의 다른 경계 내)의 비휘발성 메모리에 저장될 수 있다.
일부 실시예들에서, 다양한 도메인(654)은 프로세서의 선택적 액세스 제어 로직(652)을 통해 보안 키 도출 및 암호화 로직에 액세스할 수 있다. 일반적으로, 이는 주로 도메인 분리 및 액세스 제어를 실시하기 위한 하드웨어 로직이다. 본 기술 분야들에 알려진 종래의 액세스 제어 로직이 적절하다. 액세스 제어 로직은 한 도메인이 다른 도메인을 위해 의도된 데이터를 획득하는 것을 방지함으로써 도메인 분리를 실시하는 것을 도울 수 있다. 예를 들어 제1 도메인이 데이터를 요구하는 경우, 액세스 제어 로직은 다른 도메인들이 데이터를 획득할 수 있게 허용함이 없이 데이터를 제1 도메인에게 제공할 수 있다. 예로서, 액세스 제어 로직은 예를 들어 도메인이 연결되는 버스의 엔드 포인트에서, 데이터가 의도되지 않은 도메인들에 의해 획득되는 것을 방지하기 위해 데이터를 선택적으로 필터링하도록 동작 가능한 하드웨어 필터링 메커니즘을 포함할 수 있다. 일부 실시예들에서, 액세스 제어 로직은 본 출원의 양수인에게 양도된 2010년 9월 24일자 출원된 발명의 명칭이 "METHOD FOR ENFORCING RESOURCE ACCESS CONTROL IN COMPUTER SYSTEMS"인 특허출원 제12/890,040호에 기술된 바와 같을 수 있다. 대안적으로, 다른 액세스 제어 로직은 이 대신에 사용될 수 있다. 또 다른 실시예에서, 액세스 제어 로직은 선택적으로 생략될 수 있다.
일부 실시예들에서, 암호화 로직(607)은 도메인 분리하는 것을 돕기 위해 도메인 ID들을 사용할 수 있다. 일부 실시예들에서, 암호화 로직(607)은 도메인 ID들을 기반으로 하는/하거나 종속하는 하나 이상의 키를 도출시키도록 동작 가능한 키 도출 로직을 포함할 수 있다. 예를 들어, 주어진 도메인이 키에 대한 요구를 로직(602)에 제공할 때(예를 들어, 도출 스트링을 제공할 때), 키 도출 로직은 해당 도메인에 대응하는 주어진 도메인 ID를 기반으로 한 키를 생성할 수 있다(예를 들어, 키 도출 함수는 제공된 도출 스트링 및 주어진 도메인 ID에 의해서 평가될 수 있다). 유사하게, 다른 도메인들이 키에 대한 요구를 할 때, 키는 그들의 대응하는 상이하고 고유한 도메인 ID들을 기반으로 생성될 것이다. 예로서, "793"의 개인화 스트링을 갖는 도메인 X로부터의 제1 키 도출 요구는 "793"의 개인화 스트링을 갖는 도메인 N으로부터 제2 키 도출 요구와 동일한 도출 키를 반환하지 않을 것인데, 그 이유는 도메인들 X 및 N이 키 도출 함수의 평가에 포함될 것인 상이한 도메인 ID들을 가지고 있기 때문이다. 유리하게, 이는 도메인 분리 기반 키 도출을 제공하는데 이용될 수 있다.
일부 실시예들에서, 암호화 로직(607)은 도메인 ID들을 기반으로 하고/하거나 종속하여 챌린지들에 대한 응답들을 제공하도록 동작 가능한 키 도출 로직 및/또는 다른 응답 생성 로직을 포함할 수 있다. 예를 들어, 주어진 도메인으로부터의 챌린지는 해당 주어진 도메인을 위한 대응하는 도메인 ID를 기반으로 한 응답을 유도할 수 있다(예를 들어, 키 도출 알고리즘은 해당 도메인에 대응하는 주어진 도메인 ID에 적어도 부분적으로 기초하여 평가될 수 있다). 이는 상이한 도메인이 챌린지에 대해 동일한 응답을 얻는 것을 방지할 수 있다.
일부 실시예들에서, 암호화 로직(607)은 도메인 ID들을 기반으로 하는/하거나 종속하여 데이터를 암호화하고/하거나 복호화하도록 동작 가능한 암호화 및/또는 복호화 로직을 포함할 수 있다. 예를 들어, 도메인으로부터 평문 데이터의 암호화에 대한 요구는 해당 도메인을 위한 대응하는 도메인 ID를 기반으로 할 수 있다(예를 들어, 암호화 알고리즘은 평문 데이터 및 주어진 도메인 ID에 의해서 평가될 수 있다). 또 다른 예로서, 도메인으로부터의 암호문의 복호화에 대한 요구는 해당 도메인을 위한 대응하는 도메인 ID를 기반으로 할 수 있다(예를 들어, 복호화 알고리즘이 암호문 및 주어진 도메인 ID에 의해서 평가될 수 있다).
유리하게, 도메인 ID들, 및 이들을 이용하도록 동작 가능한 암호화 로직은 간섭 또는 교차 도메인 비밀 공유의 위험이 줄어든 서비스를 독립적으로 이용하면서 상이한 도메인이 보안 키 도출 및 암호화 로직을 공유하는 것을 허용할 수 있다. 이는 관심 있는 프라이버시 및/또는 플랫폼 일련번호 클래스의 위험을 회피하거나 또는 적어도 줄이는데 도울 수 있다. 일부 실시예들에서, 이런 도메인 ID들 및 암호화로 시행된 도메인 분리의 사용은 선택적으로 가능하거나 불가능하도록 사용자에 의해 구성 가능할 수 있다.
도 7은 PUF로부터 도출된 키들을 이용하여 퓨즈 값들을 암호화하고 복호화하도록 동작 가능한 퓨즈 로직(760)의 일 실시예의 블록도이다. 퓨즈 로직은 도 1, 3, 4, 5 또는 6의 프로세서들 중 임의의 프로세서에 사용될 수 있다. 대안적으로, 퓨즈 로직은 유사하거나 상이한 프로세서에 사용될 수 있다. 더욱이, 도 1, 3, 4, 5 또는 6의 프로세서들은 도 7의 프로세서와 동일한, 유사한 또는 상이한 퓨즈 로직을 이용할 수 있다.
퓨즈 로직은 여러 유형의 랜덤 액세스 메모리(RAM) 중 임의의 하나를 포함할 수 있는 퓨즈 메모리(762), 퓨즈들이 버닝되거나(burned) 다른 방식으로 프로그램화되는 퓨즈 어레이(764), 퓨즈 제어 로직(766), 및 보안 키 도출 및 암호화 로직(702)을 포함한다. 보안 키 도출 및 암호화 로직(702)은 도 1, 3, 4, 5 또는 6에서 대응하게 명명된 로직과 동일, 유사 또는 상이한 것일 수 있다.
프로그램화되기 위한 퓨즈 값은 퓨즈 메모리(762)에 저장될 수 있다. 퓨즈 제어 로직이 퓨즈 값을 퓨즈 어레이(764)에 프로그램화하기 전에, 퓨즈 값들은 암호화될 수 있다. 퓨즈 값들은 보안 키 도출 및 암호화 로직(702)에 제공될 수 있다. 이것의 암호화 로직(712)은 PUF 기반 루트 키 생성 로직(705)로부터 PUF 루트 키를 기반으로 한 하나 이상의 키를 이용하여 퓨즈 값들을 암호화할 수 있다. 일부 실시예들에서는, PUF 루트 키가 이용될 수 있다. 다른 실시예들에서는, PUF 루트 키로부터 도출된 키가 이용될 수 있다. 일부 실시예들에서, PUF 기반 루트 키 생성 로직(705)은 도 2의 것과 동일, 유사 또는 상이한 것일 수 있다. 암호화된 퓨즈 값들은 퓨즈들을 퓨즈 어레이 내로 프로그램화하기 위해 프로그래밍 로직(767)을 이용할 수 있는 퓨즈 제어 논리에 다시 제공될 수 있다. 암호화된 퓨즈 값들이 감지 로직(765)에 의해 퓨즈 어레이로부터 판독될 때(예를 들어, 플랫폼 리셋 후), 퓨즈 제어기는 암호화된 퓨즈 값들을 보안 키 도출의 복호화 로직(712) 및 암호화 로직(702)에게 제공할 수 있다. 복호화 로직은 암호화된 퓨즈 값들을 복호화하고 복호화된 퓨즈 값들을 퓨즈 제어 로직에게 제공할 수 있다. 퓨즈 제어 로직은 복호화된 퓨즈 값을 퓨즈 메모리(762)에 기입하거나 저장할 수 있다.
유리하게, 퓨즈 값들의 암호화는 물리적 공격들로부터 퓨즈에 저장된 키를 보호하는데 도울 수 있다. 공격자가 퓨즈를 판독할 수 있을지라도, 이용된 키가 PUF 기반 보안 키 도출 및 암호화 로직(702)으로부터의 키에 의해 암호화되기 때문에, 공격자들은 이용되는 실제 키들을 일반적으로 알 수 없다. 일부 실시예들에서, 퓨즈 값 암호화는 외부 엔티티들(예를 들어, 테스터 및 프로브들 또는 제조 환경)에 보이지 않을 수 있다. 일부 실시예들에서, 퓨즈 로직(760)은 본 명세서에 개시된 바와 같이 FIPS 경계, 다른 보안 인증 경계, 다른 디버그 불가능 경계 또는 다른 경계에 포함될 수 있다.
설명을 불명확하게 하지 않기 위해, 비교적 간단한 프로세서가 도시되고 설명되었다. 다른 실시예들에서, 프로세서는 선택적으로 다른 공지된 컴포넌트들을 포함할 수 있다. 그러한 컴포넌트들의 예들은 명령어 페치 유닛, 명령어 스케줄링 유닛, 분기 예측 유닛, 명령어 및 데이터 캐시들, 명령어 및 데이터 변환 색인 버퍼들, 프리페치 버퍼들, 마이크로명령어 큐들, 마이크로명령어 시퀀서들, 버스 인터페이스 유닛들, 2차 이상의 레벨 캐시들, 회수 유닛, 레지스터 재명명 유닛, 프로세서들에 포함된 다른 컴포넌트들, 및 이들의 다양한 조합들을 포함하나, 이에 한정되지 않는다. 실시예들은 다수의 코어, 로직 프로세서 또는 실행 엔진을 가질 수 있다. 프로세서들 내의 컴포넌트들의 사실상 다수의 상이한 조합들 및 구성들이 존재하고, 실시예들은 임의의 특정 조합 또는 구성으로 한정되지 않는다. 프로세서는 집적 회로 또는 하나 이상의 반도체 다이 또는 칩의 세트(예를 들어, 단일 다이 또는 칩, 또는 둘 이상의 다이 또는 칩을 포함하는 패키지)를 나타낼 수 있다. 일부 실시예들에서, 프로세서는 시스템-온-칩(SoC)를 나타낼 수 있다.
예시적인 코어 아키텍처들, 프로세서들 및 컴퓨터 아키텍처들
프로세서 코어들은 상이한 방식으로, 상이한 목적을 위해, 그리고 상이한 프로세서에서 구현될 수 있다. 예를 들어, 이런 코어들의 구현은 다음을 포함할 수 있다: (1) 범용 컴퓨팅을 위해 의도된 범용 순차 코어; (2) 범용 컴퓨팅을 위해 의의도된 고성능 범용 비순차 코어; 및 (3) 그래픽 및/또는 과학적(처리율) 컴퓨팅을 주로 의도하는 특수 목적 코어. 상이한 프로세서들의 구현들은 다음을 포함할 수 있다: (1) 범용 컴퓨팅을 위해 의도된 하나 이상의 범용 순차 코어 및/또는 범용 컴퓨팅을 위해 의도된 하나 이상의 범용 비순차 코어를 포함하는 CPU; 및 (2) 그래픽 및/또는 과학적(처리율)인 것을 주로 의도하는 하나 이상의 특수 목적 코어를 포함하는 코프로세서. 이런 상이한 프로세서들은 다음을 포함할 수 있는 상이한 컴퓨터 시스템 아키텍처들을 가져온다: (1) CPU와는 별개인 칩 상의 코프로세서; (2) CPU와 동일한 패키지 내의 별개의 다이 상의 코프로세서; (3) CPU와 동일한 다이 상의 코프로세서(이 경우에, 이러한 코프로세서를 때때로 통합 그래픽 및/또는 과학적 (처리율) 로직 등의 특수 목적 로직이라고 하거나, 또는 특수 목적 코어들이라고 함); 및 (4) 설명된 CPU(때때로 애플리케이션 코어(들) 또는 애플리케이션 프로세서(들)라고 함), 전술한 코프로세서, 및 부가적인 기능성과 동일한 다이 상에 포함할 수 있는 시스템 온 칩(system on a chip)을 포함할 수 있다. 예시적인 코어 아키텍처들이 다음에 설명되고, 예시적인 프로세서들 및 컴퓨터 아키텍처들의 설명이 후속된다.
예시적인 코어 아키텍처들
순차 및 비순차 코어 블록도
도 8a는 본 발명의 실시예들에 따른, 예시적인 순차 파이프라인 및 예시적인 레지스터 재명명, 비순차 발행/실행 파이프라인 모두를 나타낸 블록도이다. 도 8b는 본 발명의 실시예들에 따른, 프로세서에 포함될 순차 아키텍처 코어의 예시적인 실시예 및 예시적인 레지스터 재명명, 비순차 발행/실행 아키텍처 코어 모두를 나타낸 블록도이다. 도 8a 및 도 8b에서의 실선 박스들은 순차 파이프라인 및 순차 코어를 나타내는 반면, 파선 박스들의 선택적인 부가는 레지스터 재명명, 비순차 발행/실행 파이프라인 및 코어를 나타낸다. 순차적 양태가 비순차적 양태의 서브셋라는 것을 고려하여, 비순차적 양태가 설명될 것이다.
도 8a에서, 프로세서 파이프라인(800)은 페치 스테이지(802), 길이 디코드 스테이지(804), 디코드 스테이지(806), 할당 스테이지(808), 재명명 스테이지(810), 스케줄링(디스패치(dispatch) 또는 발행이라고도 함) 스테이지(812), 레지스터 판독/메모리 판독 스테이지(814), 실행 스테이지(816), 후기입(write back)/메모리 기입 스테이지(818), 예외 처리 스테이지(822), 및 커밋(commit) 스테이지(824)를 포함한다.
도 8b는 실행 엔진 유닛(850)에 결합된 프런트 엔드 유닛(front end unit)(830) - 둘 다는 메모리 유닛(870)에 결합되어 있음 - 을 포함하는 프로세서 코어(890)를 도시한다. 코어(890)는 RISC(reduced instruction set computing) 코어, CISC(complex instruction set computing) 코어, VLIW(very long instruction word) 코어, 또는 하이브리드 또는 대안의 코어 유형일 수 있다. 또 다른 옵션으로서, 코어(890)는, 예를 들어, 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, 범용 컴퓨팅 그래픽 처리 유닛(GPGPU:general purpose computing graphics processing unit) 코어, 그래픽 코어 등과 같은 특수 목적 코어일 수 있다.
프런트 엔드 유닛(830)은 명령어 캐시 유닛(834)에 결합된 분기 예측 유닛(832)을 포함하고, 명령어 캐시 유닛은 명령어 TLB(translation lookaside buffer)(836)에 결합되고, 명령어 TLB는 명령어 페치 유닛(838)에 결합되고, 명령어 페치 유닛은 디코드 유닛(840)에 결합된다. 디코드 유닛(840)(또는 디코더)은 명령어들을 디코딩할 수 있으며, 오리지널 명령어들로부터 디코딩되거나, 또는 그렇지 않으면 이들을 반영하거나, 또는 이들로부터 도출되는, 하나 이상의 마이크로-연산, 마이크로-코드 엔트리 포인트, 마이크로명령어, 다른 명령어 또는 다른 제어 신호를 출력으로서 생성할 수 있다. 디코드 유닛(840)은 각종 상이한 메커니즘들을 이용하여 구현될 수 있다. 적절한 메커니즘들의 예들은 룩업 테이블들, 하드웨어 구현들, 프로그래머블 로직 어레이(PLA)들, 마이크로코드 판독 전용 메모리(ROM)들 등을 포함하지만 이에 한정되지 않는다. 일 실시예에서, 코어(890)는 소정의 매크로 명령어들을 위한 마이크로코드를 저장하는 (예를 들어, 디코드 유닛(840)에서, 또는 아니면 프론트 엔트 유닛(830) 내에서) 마이크로코드 ROM 또는 다른 매체를 포함한다. 디코드 유닛(840)은 실행 엔진 유닛(850) 내의 재명명/할당기 유닛(852)에 결합된다.
실행 엔진 유닛(850)은 회수 유닛(854) 및 하나 이상의 스케줄러 유닛(들)(856)의 세트에 결합된 재명명/할당기 유닛(852)을 포함한다. 스케줄러 유닛(들)(856)은 임의 수의 상이한 스케줄러를 나타내고, 예약 스테이션들, 중앙 명령어 윈도 등을 포함한다. 스케줄러 유닛(들)(856)은 물리적 레지스터 파일(들) 유닛(들)(858)에 결합된다. 물리적 레지스터 파일(들) 유닛(들)(858) 각각은 하나 이상의 물리적 레지스터 파일들을 나타내고, 그 중 상이한 물리적 레지스터 파일들은 스칼라 정수, 스칼라 부동 소수점, 압축 정수(packed integer), 압축 부동 소수점(packed floating point), 벡터 정수, 벡터 부동 소수점, 상태(예컨대, 실행될 다음 명령어의 주소인 명령어 포인터) 등과 같은 하나 이상의 상이한 데이터 유형들을 저장한다. 일 실시예에서, 물리적 레지스터 파일(들) 유닛(858)은 벡터 레지스터 유닛, 기입 마스크 레지스터 유닛, 및 스칼라 레지스터 유닛을 포함한다. 이러한 레지스터 유닛들은 아키텍처성 벡터 레지스터들, 벡터 마스크 레지스터들 및 범용 레지스터들을 제공할 수 있다. 레지스터 재명명 및 비순차 실행이 구현될 수 있는 다양한 방식들(예컨대, 재정렬 버퍼(들) 및 회수 레지스터 파일(들)을 사용하는 것; 장래 파일(future file)(들), 이력 버퍼(history buffer)(들), 및 회수 레지스터 파일(들)을 사용하는 것; 레지스터 맵 및 레지스터들의 풀(pool)을 사용하는 것 등)을 나타내기 위해, 물리적 레지스터 파일(들) 유닛(들)(858)이 회수 유닛(854)과 중첩되어 있다(overlapped). 회수 유닛(854) 및 물리적 레지스터 파일(들) 유닛(들)(858)이 실행 클러스터(들)(860)에 결합되어 있다. 실행 클러스터(들)(860)는 하나 이상의 실행 유닛(862)의 세트 및 하나 이상의 메모리 액세스 유닛(864)의 세트를 포함한다. 실행 유닛들(862)은 다양한 유형의 데이터(예컨대, 스칼라 부동 소수점, 압축 정수, 압축 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대한 다양한 연산들(예컨대, 시프트, 덧셈, 뺄셈, 곱셈)을 수행할 수 있다. 일부 실시예들은 특정 기능들이나 기능들의 세트들에 전용의 다수의 실행 유닛들을 포함할 수 있지만, 다른 실시예들은 단 하나의 실행 유닛, 또는 모두가 모든 기능을 수행하는 다수의 실행 유닛을 포함할 수 있다. 스케줄러 유닛(들)(856), 물리적 레지스터 파일(들) 유닛(들)(858), 및 실행 클러스터(들)(860)가 가능한 복수개인 것으로 도시되어 있는데, 그 이유는 소정 실시예들이 소정 유형의 데이터/연산에 대해 개별적인 파이프라인(예컨대, 각각이 그 자신의 스케줄러 유닛, 물리적 레지스터 파일(들) 유닛, 및/또는 실행 클러스터를 갖는 스칼라 정수 파이프라인, 스칼라 부동 소수점/압축 정수/압축 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인, 및/또는 메모리 액세스 파이프라인; 개별적인 메모리 액세스 파이프라인의 경우에, 이 파이프라인의 실행 클러스터만이 메모리 액세스 유닛(들)(864)을 갖는 소정 실시예들이 구현됨)을 생성하기 때문이다. 개별 파이프라인들이 사용되는 경우, 이들 파이프라인들 중 하나 이상은 비순차적 발행/실행일 수 있고 나머지는 순차적일 수 있다는 점도 이해되어야 한다.
메모리 액세스 유닛들(864)의 세트는 L2(level 2) 캐시 유닛(876)에 결합된 데이터 캐시 유닛(874)에 결합된 데이터 TLB 유닛(872)을 포함하는 메모리 유닛(870)에 결합된다. 일 예시적인 실시예에서, 메모리 액세스 유닛들(864)은 로드 유닛(load unit), 주소 저장 유닛(store address unit), 및 데이터 저장 유닛(store data unit)을 포함할 수 있고, 이들 각각은 메모리 유닛(870) 내의 데이터 TLB 유닛(872)에 결합되어 있다. 명령어 캐시 유닛(834)은 또한 메모리 유닛(870) 내의 L2(level 2) 캐시 유닛(876)에 결합되어 있다. L2 캐시 유닛(876)은 하나 이상의 다른 레벨의 캐시에 그리고 궁극적으로 주 메모리에 결합된다.
예로서, 예시적인 레지스터 재명명, 비순차 발행/실행 코어 아키텍처는 다음과 같이 파이프라인(800)을 구현할 수 있다: (1) 명령어 페치(838)는 페치 스테이지(802) 및 길이 디코딩 스테이지(804)를 수행함; (2) 디코드 유닛(840)은 디코드 스테이지(806)를 수행함; (3) 재명명/할당기 유닛(852)은 할당 스테이지(808) 및 재명명 스테이지(810)를 수행함; (4) 스케줄러 유닛(들)(856)은 스케줄 스테이지(812)를 수행함; (5) 물리적 레지스터 파일(들) 유닛(들)(858) 및 메모리 유닛(870)은 레지스터 판독/메모리 판독 스테이지(814)를 수행하고; 실행 클러스터(860)는 실행 스테이지(816)를 수행함; (6) 메모리 유닛(870) 및 물리적 레지스터 파일(들) 유닛(들)(858)은 후기입/메모리 기입 스테이지(818)를 수행함; (7) 다양한 유닛이 예외 처리 스테이지(822)에 관여되어 있을 수 있음; 및 (8) 회수 유닛(854) 및 물리적 레지스터 파일(들) 유닛(들)(858)은 커밋 스테이지(824)를 수행함.
코어(890)는 본 명세서에 설명된 명령어(들)를 포함하는, 하나 이상의 명령어 세트들(예컨대, (보다 최신의 버전에서 추가된 일부 확장을 갖는) x86 명령어 세트; 미국 캘리포니아주 서니베일 소재의 MIPS Technologies의 MIPS 명령어 세트; 미국 캘리포니아주 서니베일 소재의 ARM Holdings의 (NEON 등의 선택적인 부가의 확장을 갖는) ARM 명령어 세트)을 지원할 수 있다. 일 실시예에서, 코어(890)는 패킹된 데이터 명령어 세트 확장(예컨대, AVX1, AVX2)을 지원하는 로직을 포함하고, 이로 인해 많은 멀티미디어 애플리케이션들에 의해 사용되는 연산들이 패킹된 데이터를 사용하여 수행될 수 있게 한다.
코어는 (2 이상의 병렬 세트들의 연산이나 스레드들을 실행하는) 멀티스레딩을 지원할 수 있고, 시분할 멀티스레딩(time sliced multithreading), (단일의 물리적 코어가, 물리적 코어가 동시에 멀티스레딩할 수 있는 스레드들 각각에 대해 논리적 코어를 제공하는) 동시 멀티스레딩, 또는 이들의 조합(예를 들어, Intel 등록상표 Hyperthreading Technology에서 시분할 페칭 및 디코딩과 그 이후의 동시 멀티쓰레딩)을 포함하는 다양한 방식으로 멀티스레딩을 지원할 수 있다는 점이 이해되어야 한다.
레지스터 재명명이 비순차적 실행의 맥락에서 설명된다 할지라도, 레지스터 재명명이 순차적 아키텍처에 사용될 수 있다는 것을 이해해야 한다. 프로세서의 예시된 실시예가 또한 개별적인 명령어 캐시 유닛(834) 및 데이터 캐시 유닛(874)과, 공유 L2 캐시 유닛(876)을 포함하고 있지만, 대안의 실시예들은, 예를 들어, L1(Level 1) 내부 캐시 또는 다수의 레벨의 내부 캐시와 같은, 명령어들 및 데이터 둘 다에 대한 단일의 내부 캐시를 가질 수 있다. 일부 실시예들에서, 시스템은 내부 캐시, 및 코어 및/또는 프로세서 외부에 있는 외부 캐시의 조합을 포함할 수 있다. 대안적으로, 모든 캐쉬는 코어 및/또는 프로세서 외부에 있을 수 있다.
특정의 예시적인 순차적 코어 아키텍처
도 9a 및 도 9b는 보다 구체적인 예시적인 순차 코어 아키텍처의 블록도를 나타낸 것이고, 이 코어는 칩 내의 여러 로직 블록(동일한 유형 및/또는 상이한 유형들의 다른 코어들을 포함함) 중 하나일 것이다. 로직 블록들은 애플리케이션에 따라서, 일부 고정된 기능 로직, 메모리 I/O 인터페이스들, 및 다른 필요한 I/O 로직과 고 대역폭 상호 접속 네트워크(예를 들어, 링 네트워크)를 통해 통신한다.
도 9a는 본 발명의 실시예들에 따르는, 단일 프로세서 코어를, 이와 온-다이 상호접속 네트워크(902)의 접속 및 레벨 2(L2) 캐시의 그 로컬 서브셋(904)과 함께, 나타낸 블록도이다. 일 실시예에서, 명령어 디코더(900)는 패킹된 데이터 명령어 세트 확장을 갖는 x86 명령어 세트를 지원한다. L1 캐시(906)는 스칼라 및 벡터 유닛들 내의 캐시 메모리에 대한 저 지연시간 액세스를 가능하게 한다. 일 실시예에서, (설계를 단순화하기 위해) 스칼라 유닛(908) 및 벡터 유닛(910)이 개별적인 레지스터 세트들(각각, 스칼라 레지스터들(912) 및 벡터 레지스터들(914))을 사용하고 이들 사이에서 전달되는 데이터가 메모리에 기입된 다음에 L1(level 1) 캐시(906)로부터 다시 판독되지만, 본 발명의 대안의 실시예들은 상이한 접근법을 사용할 수 있다(예컨대, 단일의 레지스터 세트를 사용하거나, 기입 및 다시 판독되는 일 없이 2개의 레지스터 파일들 간에 데이터가 전달될 수 있게 하는 통신 경로를 포함함).
L2 캐시의 로컬 서브셋(904)은, 프로세서 코어당 하나씩, 개별적인 로컬 서브셋들로 나누어져 있는 전역 L2 캐시의 일부이다. 각각의 프로세서 코어는 L2 캐시의 그 자신의 로컬 서브셋(904)에 대한 직접적인 액세스 경로를 갖는다. 프로세서 코어에 의해 판독된 데이터는 그의 L2 캐시 서브셋(904)에 저장되고, 그 자신의 로컬 L2 캐시 서브셋들에 액세스하는 다른 프로세서 코어들과 병렬로 빠르게 액세스될 수 있다. 프로세서 코어에 의해 기입된 데이터는 그 자신의 L2 캐시 서브셋(904)에 저장되고, 필요한 경우, 다른 서브셋들부터 플러시된다(flushed). 링 네트워크는 공유 데이터에 대한 일관성(coherency)을 보장한다. 링 네트워크는 양-방향성이어서, 프로세서 코어들, L2 캐시들 및 다른 논리 블럭들 등의 에이전트들이 칩 내에서 상호 통신하는 것을 허용한다. 각각의 링 데이터 경로는 방향당 1012 비트 폭이다.
도 9b는 본 발명의 실시예들에 따르는 도 9a의 프로세서 코어의 부분 확대도이다. 도 9b는 L1 캐시(904)의 L1 데이터 캐시(906A) 부분은 물론, 벡터 유닛(910) 및 벡터 레지스터들(914)에 관한 부가 상세를 포함하고 있다. 구체적으로는, 벡터 유닛(910)은 정수, 단정도 부동 소수점, 및 배정도 부동 소수점 명령어들 중 하나 이상을 실행하는 16-와이드(16-wide) 벡터 처리 유닛(VPU: vector processing unit)(16-와이드 ALU(928)를 참조)이다. VPU는 뒤섞기 유닛(swizzle unit)(920)에 의해 레지스터 입력들을 뒤섞는 것, 수치 변환 유닛들(922A 및 922B)에 의한 수치 변환, 및 메모리 입력에 대한 복제 유닛(924)에 의한 복제를 지원한다. 기입 마스크 레지스터들(926)은 얻어지는 벡터 기입들을 예측하는 것을 가능하게 한다.
통합 메모리 컨트롤러 및 그래픽들을 갖는 프로세서
도 10은 본 발명의 실시예들에 따르는, 2개 이상의 코어를 가질 수 있고, 통합된 메모리 제어기를 가질 수 있고, 통합된 그래픽을 가질 수 있는 프로세서(1000)의 블록도이다. 도 10에서의 실선 박스들은 단일의 코어(1002A), 시스템 에이전트(1010), 및 하나 이상의 버스 제어기 유닛(1016)의 세트를 갖는 프로세서(1000)를 나타낸 것인 반면, 파선 박스들의 선택적인 부가는 다수의 코어(1002A 내지 1002N), 시스템 에이전트 유닛(1010) 내의 하나 이상의 통합된 메모리 제어기 유닛(들)(1014)의 세트, 및 특수 목적 로직(1008)을 갖는 대안의 프로세서(1000)를 나타낸 것이다.
따라서, 프로세서(1000)의 상이한 구현은 다음을 포함할 수 있다: (1) (하나 이상의 코어를 포함할 수 있는) 통합된 그래픽 및/또는 과학적(처리율) 로직인 특수 목적 로직(1008), 및 하나 이상의 범용 코어(예컨대, 범용 순차 코어들, 범용 비순차 코어들, 이 둘의 조합)인 코어들(1002A 내지 1002N)을 갖는 CPU; (2) 주로 그래픽 및/또는 과학적(처리율)인 것을 의도하는 다수의 특수 목적 코어들인 코어들(1002A 내지 1002N)을 갖는 코프로세서; 및 (3) 많은 수의 범용 순차 코어들인 코어들(1002A 내지 1002N)을 갖는 코프로세서. 따라서, 프로세서(1000)는 범용 프로세서, 코프로세서 또는 특수 목적 프로세서, 예를 들어 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, 범용 그래픽 처리 유닛(GPGPU: General Purpose Graphics Processing Unit), 높은 처리율 MIC(Many Integrated Core) 코프로세서(30개 이상의 코어를 포함함), 임베디드 프로세서 등일 수 있다. 프로세서는 하나 이상의 칩 상에 구현될 수 있다. 프로세서(1000)는, 예를 들어, BiCMOS, CMOS, 또는 NMOS 등의 다수의 프로세스 기술들 중 임의의 것을 사용하여 하나 이상의 기판들의 일부가 될 수 있고/있거나 이들 기판 상에 구현될 수 있다.
메모리 계층구조는 코어들 내의 하나 이상의 레벨의 캐시, 하나 이상의 공유 캐시 유닛들(1006)의 세트, 및 통합된 메모리 제어기 유닛들(1014)의 세트에 결합되어 있는 외부 메모리(도시 안됨)를 포함한다. 공유 캐시 유닛들(1006)의 세트는 L2(level 2), L3(level 3), L4(level 4), 또는 기타 레벨들의 캐시 등의 하나 이상의 중간 레벨 캐시들, LLC(last level cache), 및/또는 이들의 조합을 포함할 수 있다. 일 실시예에서, 링 기반 상호접속 유닛(1012)은 통합된 그래픽 로직(1008), 공유 캐시 유닛들(1006)의 세트, 및 시스템 에이전트 유닛(1010)/통합된 메모리 제어기 유닛(들)(1014)을 상호접속시키는 반면, 대안의 실시예들은 이러한 유닛들을 상호접속시키는 데 임의의 수의 공지된 기법들을 사용할 수 있다. 일 실시예에서, 하나 이상의 캐시 유닛(1006)과 코어들(1002A 내지 1002N) 사이에 일관성이 유지된다.
일부 실시예들에서, 코어들(1002A 내지 1002N) 중 하나 이상은 멀티스레딩을 할 수 있다. 시스템 에이전트(1010)는 코어들(1002A 내지 1002N)을 조정하고 동작시키는 그 컴포넌트들을 포함한다. 시스템 에이전트 유닛(1010)은, 예를 들어, 전력 제어 유닛(PCU: power control unit) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(1002A 내지 1002N) 및 통합된 그래픽 로직(1008)의 전력 상태를 조절하는 데 필요한 로직 및 컴포넌트들이거나 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속되는 디스플레이들을 구동하기 위한 것이다.
코어들(1002A 내지 1002N)은 아키텍처 명령어 세트의 관점에서 동종(homogenous)이거나 이종(heterogeneous)일 수 있다; 즉, 코어들(1002A 내지 1002N) 중 2개 이상은 동일한 명령어 세트를 실행할 수 있는 반면, 다른 것들은 그 명령어 세트의 서브셋만 또는 다른 명령어 세트를 실행할 수 있다.
예시적인 컴퓨터 아키텍처
도 11-14는 예시적 컴퓨터 아키텍처들의 블록도들이다. 랩톱들, 데스크톱들, 핸드헬드 PC들, 퍼스널 디지털 어시스턴트들, 엔지니어링 워크스테이션들, 서버들, 네트워크 디바이스들, 네트워크 허브들, 스위치들, 임베디드 프로세서들, 디지털 신호 프로세서(DSP)들, 그래픽 디바이스들, 비디오 게임 디바이스들, 셋톱박스들, 마이크로 컨트롤러들, 휴대 전화들, 휴대용 미디어 플레이어들, 핸드헬드 디바이스들, 및 다양한 다른 전자 디바이스들을 위해 이 기술분야에 알려진 다른 시스템 설계들 및 구성들도 적합하다. 일반적으로, 본 명세서에 개시된 바와 같은 프로세서 및/또는 다른 실행 로직을 통합할 수 있는 매우 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
이제 도 11을 참조하면, 본 발명의 일 실시예에 따른 시스템(1100)의 블록도가 도시되어 있다. 시스템(1100)은 하나 이상 프로세서(1110, 1115)를 포함할 수 있으며, 이들은 제어기 허브(1120)에 결합된다. 일 실시예에서, 제어기 허브(1120)는 그래픽 메모리 제어기 허브(GMCH: graphics memory controller hub)(1190) 및 입/출력 허브(IOH: Input/Output Hub)(1150)(개별적인 칩들 상에 있을 수 있음)를 포함하고; GMCH(1190)는 메모리(1140) 및 코프로세서(1145)에 결합되어 있는 메모리 및 그래픽 제어기들을 포함하며; IOH(1150)는 I/O(input/output) 디바이스들(1160)을 GMCH(1190)에 결합시킨다. 대안적으로, 메모리 및 그래픽 제어기들 중 하나 또는 둘 다는 (본 명세서에 기술된 바와 같이) 프로세서 내에 통합되어 있고, 메모리(1140) 및 코프로세서(1145)는 프로세서(1110), 및 IOH(1150)를 갖는 단일 칩 내의 제어기 허브(1120)에 직접 결합되어 있다.
부가의 프로세서들(1115)의 선택적인 특성은 도 11에서 파선들로 나타내어져 있다. 각각의 프로세서(1110, 1115)는 본 명세서에 설명된 하나 이상의 프로세싱 코어를 포함할 수 있고, 프로세서(1000)의 일부 버전일 수 있다.
메모리(1140)는, 예를 들어, DRAM(dynamic random access memory), PCM(phase change memory), 또는 이 둘의 조합일 수 있다. 적어도 일 실시예에서, 제어기 허브(1120)는 FSB(frontside bus)와 같은 멀티-드롭 버스(multi-drop bus), QPI(QuickPath Interconnect)와 같은 점대점 인터페이스, 또는 유사한 접속(1195)을 통해 프로세서(들)(1110, 1115)와 통신한다.
일 실시예에서, 코프로세서(1145)는, 예를 들어, 고처리율 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 특수 목적 프로세서이다. 일 실시예에서, 제어기 허브(1120)는 통합된 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소모 특성 등을 포함하는 다양한 성능 척도(a spectrum of metric of merit)들의 관점에서 물리적 자원들(1110, 1115) 간에 다양한 차이점들이 있을 수 있다.
일 실시예에서, 프로세서(1110)는 일반 유형의 데이터 처리 동작들을 제어하는 명령어들을 실행한다. 명령어들 내에는 코프로세서 명령어들이 내장될 수 있다. 프로세서(1110)는 이들 코프로세서 명령어를 부착된(attached) 코프로세서(1145)에 의해 실행되어야만 하는 유형인 것으로 인식한다. 이에 따라, 프로세서(1110)는 이 코프로세서 명령어들(또는 코프로세서 명령어들을 나타내는 제어 신호들)을 코프로세서 버스 또는 다른 상호접속을 통해 코프로세서(1145)로 발행한다. 코프로세서(들)(1145)는 수신된 코프로세서 명령어들을 접수하고 실행한다.
이제 도 12를 참조하면, 도 12는 본 발명의 일 실시예에 따른, 제1의 보다 구체적이고 예시적인 시스템(1200)의 블록도가 도시된다. 도 12에 도시된 바와 같이, 멀티프로세서 시스템(1200)은 점대점 상호접속 시스템이고, 점대점 상호접속(1250)을 통해 결합되어 있는 제1 프로세서(1270) 및 제2 프로세서(1280)를 포함하고 있다. 프로세서들(1270 및 1280) 각각은 프로세서(1000)의 일부 버전일 수 있다. 본 발명의 일 실시예에서, 프로세서들(1270 및 1280)은 각각 프로세서들(1110 및 1115)인 반면, 코프로세서(1238)는 코프로세서(1145)이다. 다른 실시예에서, 프로세서들(1270 및 1280)은, 각각, 프로세서(1110) 및 코프로세서(1145)이다.
프로세서들(1270 및 1280)은, 각각, 통합된 메모리 제어기(IMC: integrated memory controller) 유닛들(1272 및 1282)을 포함하는 것으로 도시되어 있다. 프로세서(1270)는 또한, 그의 버스 제어기 유닛들의 일부로서, P-P(point-to-point) 인터페이스들(1276 및 1278)을 포함하고; 이와 유사하게, 제2 프로세서(1280)는 P-P 인터페이스들(1286 및 1288)을 포함하고 있다. 프로세서들(1270, 1280)은 P-P(point-to-point) 인터페이스 회로들(1278, 1288)을 사용하여 P-P 인터페이스(1250)를 통해 정보를 교환할 수 있다. 도 12에 도시된 바와 같이, IMC들(1272 및 1282)은 프로세서들을 각자의 메모리들, 즉 각자의 프로세서들에 로컬로 부착되어 있는 주 메모리의 일부분들일 수 있는 메모리(1232) 및 메모리(1234)에 결합시킨다.
프로세서들(1270, 1280) 각각은 점대점 인터페이스 회로들(1276, 1294, 1286, 1298)을 사용하여 개개의 P-P 인터페이스들(1252, 1254)을 통해 칩셋(1290)과 정보를 교환할 수 있다. 칩셋(1290)은 선택적으로 고성능 인터페이스(1239)를 통해 코프로세서(1238)와 정보를 교환할 수 있다. 일 실시예에서, 코프로세서(1238)는, 예를 들어, 고처리율 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 특수 목적 프로세서이다.
공유 캐시(도시 안됨)가 어느 한 프로세서 내에 또는 양쪽 프로세서들의 외부에 포함되어 있을 수 있지만, P-P 상호 접속부를 통해 프로세서들과 연결되어 있을 수 있으며, 따라서 프로세서가 저전력 모드에 있는 경우, 어느 한 프로세서 또는 양쪽 프로세서들의 로컬 캐시 정보가 공유 캐시에 저장될 수 있다.
칩셋(1290)은 인터페이스(1296)를 통해 제1 버스(1216)에 결합될 수 있다. 일 실시예에서, 제1 버스(1216)는 주변 컴포넌트 상호접속(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 본 발명의 범위는 이에 한정되지 않는다.
도 12에 도시된 바와 같이, 제1 버스(1216)를 제2 버스(1220)에 결합시키는 버스 브리지(1218)와 함께, 다양한 I/O 디바이스들(1214)이 제1 버스(1216)에 결합될 수 있다. 일 실시예에서, 코프로세서들, 고처리율 MIC 프로세서들, GPGPU들, 가속기들(예컨대, 그래픽 가속기들 또는 DSP(digital signal processing) 유닛들 등), 필드 프로그램가능 게이트 어레이들, 또는 임의의 다른 프로세서와 같은 하나 이상의 부가의 프로세서(들)(1215)이 제1 버스(1216)에 결합되어 있다. 일 실시예에서, 제2 버스(1220)는 LPC(low pin count) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드 및/또는 마우스(1222), 통신 디바이스들(1227), 그리고 명령어들/코드 및 데이터(1230)를 포함할 수 있는 디스크 드라이브 또는 기타 대용량 저장 디바이스와 같은 저장 유닛(1228)을 포함하는 다양한 디바이스들이 제2 버스(1220)에 결합될 수 있다. 게다가, 오디오 I/O(1224)가 제2 버스(1220)에 결합될 수 있다. 다른 아키텍처들도 가능하다는 점에 유의한다. 예를 들어, 도 12의 점대점 구조 대신에, 시스템은 멀티 드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
이제 도 13을 참조하면, 본 발명의 일 실시예에 따른, 제2의 보다 구체적이고 예시적인 시스템(1300)의 블록도가 도시되어 있다. 도 12 및 도 13에서의 유사한 요소들은 유사한 참조 번호들을 지니고 있으며, 도 13의 다른 측면들을 불명료하게 하는 것을 피하기 위해 도 12의 소정의 양태들이 도 13으로부터 생략되어 있다.
도 13은 프로세서들(1270, 1280)이, 각각, 통합된 메모리 및 I/O 제어 로직("CL")(1272 및 1282)을 포함할 수 있다는 것을 나타내고 있다. 따라서, CL(1272, 1282)은 통합된 메모리 제어기 유닛들을 포함하고 I/O 제어 로직을 포함한다. 도 13은 메모리들(1232, 1234)이 CL(1272, 1282)에 결합되어 있을 뿐만 아니라 I/O 디바이스들(1314)이 또한 제어 로직(1272, 1282)에 결합되어 있는 것을 나타내고 있다. 레거시 I/O 디바이스들(1315)이 칩셋(1290)에 결합되어 있다.
이제 도 14를 참조하면, 본 발명의 일 실시예에 따른 SoC(1400)의 블록도가 도시되어 있다. 도 10에 있는 유사한 요소들은 동일한 참조 부호를 갖는다. 또한, 점선 박스는 더욱 개선된 SoC들에 관한 선택적 특징들이다. 도 14에서, 상호접속 유닛(들)(1402)은, 하나 이상의 코어들(202A 내지 202N)의 세트 및 공유 캐시 유닛(들)(1006)을 포함하는 애플리케이션 프로세서(1410); 시스템 에이전트 유닛(1010); 버스 제어기 유닛(들)(1016); 통합된 메모리 제어기 유닛(들)(1014); 통합된 그래픽 로직, 영상 프로세서, 오디오 프로세서, 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서들(1420)의 세트; SRAM(static random access memory) 유닛(1430); DMA(direct memory access) 유닛(1432); 및 하나 이상의 외부 디스플레이들에 결합하기 위한 디스플레이 유닛(1440)에 결합되어 있다. 일 실시예에서, 코프로세서(들)(1420)는, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 고처리율 MIC 프로세서, 임베디드 프로세서 등과 같은 특수 목적 프로세서를 포함한다.
본 명세서에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어 또는 이러한 구현 접근법들의 조합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 불휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그램 가능한 시스템들에서 실행하는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 12에 예시된 코드(1230)와 같은 프로그램 코드는 본 명세서에 개시된 기능을 수행하기 위한 명령어를 입력하며 출력 정보를 생성하기 위해 적용될 수 있다. 출력 정보는 공지 방식으로 하나 이상의 출력 디바이스에 적용될 수 있다. 본 출원의 목적으로, 처리 시스템은 예를 들어 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 집적 회로(ASIC) 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 프로세싱 시스템과 통신하기 위해 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는 또한 원한다면 어셈블리 또는 기계 언어로 구현될 수 있다. 사실상, 본원에 설명된 메커니즘들은 임의의 특정 프로그래밍 언어로 범위가 한정되지 않는다. 어느 경우에나, 언어는 컴파일되거나 해석되는 언어일 수 있다.
적어도 일 실시예의 하나 이상의 양태는 기계에 의해 판독될 때 기계로 하여금 본 명세서에서 설명되는 기술들을 수행하기 위한 논리를 제조하게 하는, 프로세서 내의 다양한 논리를 표현하는, 기계 판독 가능 매체상에 저장된 전형적인 명령어들에 의해 구현될 수 있다. "IP 코어들"로서 알려진 그러한 표현들은 유형의(tangible) 기계 판독 가능 매체상에 저장될 수 있으며, 다양한 고객들 또는 제조 설비에 제공되어, 논리 또는 프로세서를 실제로 제조하는 제조 기계들 내에 로딩될 수 있다.
이러한 기계 판독가능 저장 매체는 하드 디스크와, 플로피 디스크, 광 디스크, CD-ROM(compact disk read-only memory), CD-RW(compact disk rewritable) 및 광자기 디스크를 포함하는 임의의 다른 유형의 디스크, DRAM(dynamic random access memory), SRAM(static random access memory), EPROM(erasable programmable read-only memory), 플래시 메모리, EEPROM(electrically erasable programmable read-only memory)과 같은 RAM(random access memory), ROM(read-only memory), PCM(phase change memory)을 포함하는 반도체 디바이스, 자기 또는 광 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 다른 유형의 매체와 같은 저장 매체를 포함하는, 기계 또는 디바이스에 의해 제조 또는 형성되는 물품들의 비일시적, 유형의(tangible) 구성들을 포함할 수 있지만, 이들로 제한되지 않는다.
따라서, 본 발명의 실시예들은, 또한, 명령어들을 포함하거나, 또는 본 명세서에 개시되는 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는, HDL(Hardware Description Language) 등의 설계 데이터를 포함하는 비-일시적이고 유형인 머신 판독가능 매체를 포함한다. 이러한 실시예들은 프로그램 제품들로도 참조될 수 있다.
에뮬레이션(이진수 해석, 코드 모핑 등을 포함함)
일부 경우에는, 명령어 변환기가 소스 명령어 세트로부터 타겟 명령어 세트로 명령어를 변환하는데 사용될 수 있다. 예를 들어, 명령어 변환기는 코어에 의해 처리될 하나 이상의 다른 명령어들로 명령어를 (예를 들어, 정적 이진수 해석, 동적 편집(dynamic compilation)을 포함하는 동적 이진수 해석을 이용하여) 해석하거나, 모프하거나, 에뮬레이트하거나, 또는 다른 방식으로 변환할 수 있다. 명령어 변환기는 소프트웨어, 하드웨어, 펌웨어, 또는 그의 조합으로 구현될 수 있다. 명령어 변환기는 온-프로세서(on processor)에, 오프-프로세서(off processor)에, 또는 일부는 온-프로세서에 일부는 오프-프로세서에 있을 수 있다.
도 15는 본 발명의 실시예들에 따른, 소스 명령어 세트에서의 이진수 명령어들을 목표 명령어 세트에서의 이진수 명령어들로 변환하기 위해 소프트웨어 명령어 변환기를 사용하는 것을 대비하는 블록도이다. 예시된 실시예에서, 명령어 변환기는 소프트웨어 명령어 변환기이지만, 대안적으로 명령어 변환기가 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 다양한 조합들로 구현될 수 있다. 도 15는 적어도 하나의 x86 명령어 세트 코어(1516)를 갖는 프로세서에 의해 기본적으로 실행될 수 있는 x86 이진수 코드(1506)를 발생시키기 위해 고수준 언어(1502)로 된 프로그램이 x86 컴파일러(1504)를 사용하여 컴파일될 수 있다는 것을 나타낸 것이다. 적어도 하나의 x86 명령어 세트 코어(1516)를 갖는 프로세서는, 적어도 하나의 x86 명령어 세트 코어를 갖는 Intel 프로세서와 실질적으로 동일한 결과를 달성하기 위해, (1) Intel x86 명령어 세트 코어의 명령어 세트의 상당 부분, 또는 (2) 적어도 하나의 x86 명령어 세트 코어를 갖는 Intel 프로세서상에서 실행되도록 되어 있는 애플리케이션들 또는 다른 소프트웨어의 오브젝트 코드 버전들을, 호환 가능하게 실행하거나 다른 방식으로 처리함으로써 적어도 하나의 x86 명령어 세트 코어를 갖는 Intel 프로세서와 실질적으로 동일한 기능들을 수행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(1504)는, 부가의 링크(linkage) 처리에 의해 또는 부가의 링크 처리 없이, 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(1516) 상에서 실행될 수 있는 x86 이진수 코드(1506)(예컨대, 오브젝트 코드)를 발생시키도록 동작 가능한 컴파일러를 나타낸다. 이와 유사하게, 도 15는 적어도 하나의 x86 명령어 세트 코어가 없는 프로세서(1514)(예컨대, 미국 캘리포니아주 서니베일 소재의 MIPS Technologies의 MIPS 명령어 세트를 실행하는 및/또는 미국 캘리포니아주 서니베일 소재의 ARM Holdings의 ARM 명령어 세트를 실행하는 코어들을 갖는 프로세서)에 의해 기본적으로 실행될 수 있는 대안의 명령어 세트 이진수 코드(1510)를 발생시키기 위해 고수준 언어(1502)로 된 프로그램이 대안의 명령어 세트 컴파일러(1508)를 사용하여 컴파일될 수 있다는 것을 나타낸 것이다. 명령어 변환기(1512)는 x86 이진수 코드(1506)를 x86 명령어 세트 코어를 갖지 않는 프로세서(1514)에 의해 기본적으로 실행될 수 있는 코드로 변환하는 데 사용된다. 이것을 할 수 있는 명령어 변환기를 만드는 것이 어렵기 때문에 이같이 변환된 코드가 대안의 명령어 세트 이진수 코드(1510)와 동일하지 않을 가능성이 있지만; 변환된 코드는 일반적인 연산을 달성할 것이고 대안의 명령어 세트로부터의 명령어들로 이루어져 있을 것이다. 이와 같이, 명령어 변환기(1512)는, 에뮬레이션, 시뮬레이션 또는 임의의 다른 프로세스를 통해, x86 명령어 세트 프로세서 또는 코어를 갖지 않는 프로세서 또는 다른 전자 디바이스가 x86 이진수 코드(1506)를 실행할 수 있게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다.
설명 및 청구항들에서, 용어 "결합" 및 "접속"이 이들의 도출어들과 함께 사용되었을 수 있다. 이 용어들은 동의어로 의도된 것이 아님을 이해해야 한다. 오히려, 특정한 실시예에서, "접속된"은 2개 이상의 엘리먼트가 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 사용될 수 있다. "결합"은 2개 이상의 엘리먼트가 직접적인 물리적 또는 전기적 접촉을 하고 있는 것을 의미할 수 있다. 그러나, "결합된"은 또한 2개 이상의 엘리먼트들이 서로 직접 접촉하고 있지 않을 수 있지만, 여전히 서로 협력 또는 상호작용할 수 있음을 의미할 수 있다.
"및/또는(and/or)"이란 용어가 사용되었을 수 있다. 본 명세서에서 사용되는 바와 같이, "및/또는"이란 용어는 하나 또는 나머지 또는 양자 모두를 의미한다(예를 들어, A 및/또는 B는 A 또는 B 또는 A와 B 양자 모두를 의미한다).
위의 설명에서, 설명의 목적으로, 본 발명의 실시예들의 철저한 이해를 제공하기 위하여 다수의 특정 상세가 설명되었다. 그러나, 하나 이상의 다른 실시예들이 이들 특정 상세 중 일부가 없이 실시될 수 있다는 것이 이 기술분야의 통상의 기술자에게 명백할 것이다. 기재된 특정 실시예는 본 발명을 제한하기 위하여 제공되지 않고 설명하기 위하여 제공된다. 본 발명의 범위는 위에 제공된 특정 예들에 의해 결정되지 않고, 아래 청구항들에 의해서만 결정된다. 도면에 도시되고 명세서에 기재된 것에 대한 모든 동등한 관계는 본 발명의 실시예 내에 포함된다. 다른 경우들에서, 잘 알려진 회로들, 구조들, 디바이스들, 및 동작들은 설명의 이해를 불명료하게 하는 것을 피하기 위해 블록도 형태로 또는 상세 없이 도시되었다.
적절한 것으로 간주되는 경우, 참조 번호들 또는 참조 번호들의 끝 부분들은, 달리 특정되거나 명백히 분명하지 않는 한, 선택적으로 유사하거나 동일한 특성들을 가질 수 있는, 대응하는 또는 유사한 엘리먼트들을 나타내기 위해 도면들 사이에서 반복되었다. 일부 경우에, 다수의 컴포넌트가 도시되고 설명된 경우에도 이들 컴포넌트들은 단일 컴포넌트로 통합될 수 있다. 다른 경우에, 단일 컴포넌트가 도시되고 설명된 경우에도, 이들을 2 이상의 컴포넌트로 분리할 수 있다. 도면에서, 화살표는 결합을 나타내며, 양방향 화살표는 양방향 결합을 나타낸다.
다양한 동작들 및 방법들이 설명되었다. 방법들 중 일부는 흐름도에서 비교적 기본적인 형태로 개시되었지만, 연산들은 선택적으로 방법들에 추가되고/되거나 방법들에서 제거될 수 있다. 또한, 흐름도는 예시적인 실시예에 따라 특정한 순서의 작업들을 나타내지만, 특정한 순서는 예시적임을 이해해야 한다. 대안적인 실시예들은 선택적으로 동작을 상이한 순서로 수행하고, 소정 동작을 결합하며, 소정 동작을 중첩하는 등을 할 수 있다. 많은 수정 및 변형은 방법들로 이루어질 수 있고 생각될 수 있다. 본 명세서에서 장치에 대해 설명된 컴포넌트들, 특징들 및 특정 옵션 상세들은 실시예들에서 이런 장치에 의해서/이런 장치 내에서 수행될 수 있는 방법에도 옵션으로서 적용된다.
본 명세서에 걸쳐서 "일 실시예", "실시예", 또는 "하나 이상의 실시예"에 대한 참조는 특정 특징이 본 발명의 실행에 포함될 수 있다는 것을 의미하는 것을 인식해야 한다. 유사하게, 본 명세서를 간소화하고 다양한 본 발명의 양상들의 이해를 도울 목적으로, 설명에서는 다양한 특징들이 때때로 단일 실시예, 도면, 또는 그의 설명에서 함께 그룹화된다. 그러나, 본 명세서에 개시된 방법은 본 발명이 각 청구항에 명백하게 기재된 것보다 많은 특징들을 요구하는 의도를 반영하는 것으로서 해석되어서는 안 된다. 오히려, 다음의 청구항들이 반영하는 바에 따라, 본 발명의 양태들은 단일의 개시된 실시예의 모든 특징보다 적게 놓일 수 있다. 따라서, 상세한 설명을 뒤따르는 청구항들은 이로써 본 상세한 설명 내로 명백하게 통합되고, 각 청구항은 본 발명의 별개의 실시예로서 자립한다.

Claims (27)

  1. 프로세서로서,
    루트 키를 생성하며, 정적 및 엔트로피 비트(static and entropic bit)들의 소스를 포함하는 루트 키 생성 로직;
    상기 루트 키 생성 로직과 결합하며, 상기 루트 키로부터 하나 이상의 키를 도출하기 위한 키 도출 로직;
    암호화 연산을 수행하기 위해 상기 루트 키 생성 로직과 결합된 암호화 프리미티브 로직(cryptographic primitive logic); 및
    상기 루트 키 생성 로직, 상기 키 도출 로직, 및 상기 암호화 프리미티브 로직을 포함하는 보안 경계
    를 포함하는 프로세서.
  2. 제1항에 있어서, 상기 정적 및 엔트로피 비트들의 소스는 물리적으로 복제 가능하지 않은 기능(PUF: physically unclonable function) 비트들을 생성하기 위한 PUF를 포함하는 프로세서.
  3. 제2항에 있어서, 상기 PUF 비트들에 대해 에러 정정 및 엔트로피 추출을 각각 수행하기 위한 에러 정정 로직 및 엔트로피 추출 로직을 더 포함하고, 상기 에러 정정 로직 및 상기 엔트로피 추출 로직은 상기 보안 경계 내에 포함되는 프로세서.
  4. 제1항에 있어서, 상기 정적 및 엔트로피 비트들의 소스는 퓨즈들을 포함하는 프로세서.
  5. 제1항에 있어서, 보안 경계 내에서는 외부 엔티티들에 의한 로직 상태의 스캐닝이 불가능하게 되는(disabled) 프로세서.
  6. 제4항에 있어서, 상기 보안 경계 내로부터 적어도 상기 키 도출 로직을 테스트하기 위한, 상기 보안 경계 내의 테스트 로직을 더 포함하는 프로세서.
  7. 제1항에 있어서, 상기 보안 경계는 연방 정부에 의해 보안이 인증된 보안 인증 경계를 포함하는 프로세서.
  8. 제7항에 있어서, 상기 보안 인증 경계는 연방 정보 처리 표준(FIPS: Federal Information Processing Standards) 인증 경계를 포함하는 프로세서.
  9. 제1항에 있어서, 상기 루트 키 생성 로직, 상기 키 도출 로직 및 상기 암호화 프리미티브 로직은 본질적으로 하드웨어로 이루어지는 프로세서.
  10. 제1항에 있어서, 상이한 도메인에 각각 대응하는 복수의 상이한 도메인 식별자를 더 포함하고,
    상기 키 도출 로직은 상기 상이한 대응하는 도메인 식별자들에 기초하여 상기 상이한 도메인들에 대한 상이한 키들을 도출하기 위한 것인 프로세서.
  11. 제1항에 있어서, 상기 하나 이상의 도출된 키를 이용하여 암호화 및 복호화를 수행하기 위한 암호화 및 복호화 로직을 더 포함하는 프로세서.
  12. 제11항에 있어서, 상기 루트 키 생성 로직은 PUF 기반 루트 키 생성 로직을 포함하고, 상기 암호화 및 복호화 로직에 퓨즈 값들을 제공하고, PUF 기반 루트 키에 기초하여 상기 암호화 및 복호화 로직에 의해 암호화된 암호화 퓨즈 값들을 퓨즈 어레이에 프로그램화하기 위한 퓨즈 제어 로직을 더 포함하는 프로세서.
  13. 제1항에 있어서, 상기 보안 경계 내에 디지털 난수 발생기 로직을 더 포함하고,
    상기 디지털 난수 발생기 로직 및 상기 키 도출 로직은 상기 암호화 프리미티브 로직을 공유하기 위한 것인 프로세서.
  14. 제1항에 있어서, 상기 루트 키 생성 로직, 상기 키 도출 로직, 및 상기 암호화 프리미티브 로직은 수직(vertical), 확장 가능한(scalable), 재사용 가능한 IP(intellectual property) 블록의 일부인, 프로세서.
  15. 방법으로서,
    정적 및 엔트로피 비트들의 소스로부터 프로세서의 보안 경계 내의 루트 키를 생성하는 단계;
    상기 보안 경계 내의 상기 루트 키로부터 하나 이상의 키를 도출하는 단계; 및
    상기 보안 경계 내의 상기 루트 키에 기초하여 암호화 프리미티브 연산들을 수행하는 단계
    를 포함하는 방법.
  16. 제15항에 있어서, 상기 생성하는 단계는 물리적으로 복제 가능하지 않은 기능(PUF) 비트들로부터 상기 루트 키를 생성하는 단계를 포함하는 방법.
  17. 제16항에 있어서, 상기 보안 경계 내의 상기 PUF 비트들에 대해 에러 정정 및 엔트로피 추출을 수행하는 단계를 더 포함하는 방법.
  18. 제15항에 있어서, 상기 생성하는 단계는 퓨즈들로부터 상기 루트 키를 생성하는 단계를 포함하는 방법.
  19. 제15항에 있어서, 상기 보안 경계 내로부터 상기 암호화 프리미티브 연산을 수행하는데 이용되는 로직을 테스트하는 단계를 더 포함하고, 상기 보안 경계 외부로부터 상기 암호화 프리미티브 연산들을 수행하는데 사용되는 상기 로직의 테스팅은 불가능하게 되는, 방법.
  20. 제15항에 있어서, 상기 도출하는 단계는 연방 정부에 의해 보안이 인증된 보안 경계 내의 상기 루트 키로부터 상기 하나 이상의 키를 도출하는 단계를 포함하는 방법.
  21. 제20항에 있어서, 상기 보안 인증 경계는 연방 정보 처리 표준(FIPS) 경계를 포함하는 방법.
  22. 제15항에 있어서, 상기 도출하는 단계는 상이한 대응하는 도메인 식별자들에 기초하여 상이한 도메인들에 대한 키들을 상기 보안 경계 내의 상기 루트 키로부터 도출하는 단계를 포함하는 방법.
  23. 제15항에 있어서, 상기 보안 경계 내의 상기 하나 이상의 도출된 키를 이용하여 암호화 및 복호화를 수행하는 단계를 더 포함하는 방법.
  24. 제23항에 있어서, 상기 생성하는 단계는 PUF 비트들로부터 상기 루트 키를 생성하는 단계를 포함하고,
    상기 PUF 비트들로부터 도출된 키들을 이용하여 퓨즈 값들을 암호화하는 단계; 및
    상기 암호화된 퓨즈 값들을 퓨즈 어레이에 프로그램화하는 단계를 더 포함하는 방법.
  25. 시스템으로서,
    상호 접속부;
    상기 상호 접속부에 결합된 프로세서; 및
    상기 상호 접속부에 결합된 동적 랜덤 액세스 메모리(DRAM)
    를 포함하고,
    상기 프로세서는,
    루트 키를 생성하며, 정적 및 엔트로피 비트들의 소스를 포함하는 루트 키 생성 로직;
    상기 루트 키 생성 로직과 결합하며, 상기 루트 키로부터 하나 이상의 키를 도출하기 위한 키 도출 로직;
    암호화 연산을 수행하기 위해 상기 루트 키 생성 로직과 결합된 암호화 프리미티브 로직; 및
    상기 루트 키 생성 로직, 상기 키 도출 로직, 및 상기 암호화 프리미티브 로직을 포함하는 보안 경계를 포함하는 시스템.
  26. 제25항에 있어서, 상기 정적 및 엔트로피 비트들의 소스는 물리적으로 복제 가능하지 않은 기능(PUF) 비트들을 생성하기 위한 PUF를 포함하고,
    상기 PUF 비트들에 대해 에러 정정 및 엔트로피 추출을 각각 수행하기 위한 에러 정정 로직 및 엔트로피 추출 로직을 더 포함하며, 상기 에러 정정 로직 및 상기 엔트로피 추출 로직은 상기 보안 경계 내에 포함되는 시스템.
  27. 제25항에 있어서, 상기 보안 경계 내로부터 적어도 상기 키 도출 로직을 테스트하기 위한, 상기 보안 경계 내의 테스트 로직을 더 포함하고, 상기 보안 경계는 연방 정보 처리 표준(FIPS) 인증 경계를 포함하는 시스템.
KR1020157014039A 2012-12-29 2013-06-19 집적 회로를 위한 보안 키 도출 및 암호화 로직 KR101726108B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,829 US9390291B2 (en) 2012-12-29 2012-12-29 Secure key derivation and cryptography logic for integrated circuits
US13/730,829 2012-12-29
PCT/US2013/046636 WO2014105146A1 (en) 2012-12-29 2013-06-19 Secure key derivation and cryptography logic for integrated circuits

Publications (2)

Publication Number Publication Date
KR20150079880A true KR20150079880A (ko) 2015-07-08
KR101726108B1 KR101726108B1 (ko) 2017-04-11

Family

ID=51018724

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014039A KR101726108B1 (ko) 2012-12-29 2013-06-19 집적 회로를 위한 보안 키 도출 및 암호화 로직

Country Status (5)

Country Link
US (1) US9390291B2 (ko)
KR (1) KR101726108B1 (ko)
CN (1) CN105027136B (ko)
DE (1) DE112013005431T5 (ko)
WO (1) WO2014105146A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190034324A (ko) * 2016-09-23 2019-04-01 애플 인크. 네트워크 트래픽의 보안 통신
KR20190135100A (ko) * 2018-05-28 2019-12-06 한국과학기술연구원 사용자 인증 시스템에 사용되는 puf 장치 및 그것의 동작 방법
KR20230099867A (ko) * 2021-12-28 2023-07-05 연세대학교 산학협력단 보안 스캔 체인 회로 및 스캔 체인 회로 보안 방법

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9742563B2 (en) 2012-09-28 2017-08-22 Intel Corporation Secure provisioning of secret keys during integrated circuit manufacturing
US9390291B2 (en) 2012-12-29 2016-07-12 Intel Corporation Secure key derivation and cryptography logic for integrated circuits
US10432409B2 (en) 2014-05-05 2019-10-01 Analog Devices, Inc. Authentication system and device including physical unclonable function and threshold cryptography
KR102201642B1 (ko) * 2014-11-28 2021-01-13 삼성전자주식회사 Puf 회로 및 그것의 키 등록 방법
US10650169B2 (en) 2015-09-14 2020-05-12 Hewlett Packard Enterprise Development Lp Secure memory systems
US9838201B2 (en) 2015-10-13 2017-12-05 Sony Interactive Entertainment America Llc Secure key store derivation and management from a single secure root key
US10146464B2 (en) * 2016-06-30 2018-12-04 Nxp B.V. Method for performing multiple enrollments of a physically uncloneable function
US10469271B2 (en) 2016-08-04 2019-11-05 Macronix International Co., Ltd. Physical unclonable function for non-volatile memory
US10855477B2 (en) 2016-08-04 2020-12-01 Macronix International Co., Ltd. Non-volatile memory with physical unclonable function and random number generator
US10911229B2 (en) * 2016-08-04 2021-02-02 Macronix International Co., Ltd. Unchangeable physical unclonable function in non-volatile memory
US10680809B2 (en) 2016-08-04 2020-06-09 Macronix International Co., Ltd. Physical unclonable function for security key
US11258599B2 (en) * 2016-08-04 2022-02-22 Macronix International Co., Ltd. Stable physically unclonable function
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
US11063758B1 (en) * 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10708073B2 (en) * 2016-11-08 2020-07-07 Honeywell International Inc. Configuration based cryptographic key generation
EP3373178A1 (en) * 2017-03-08 2018-09-12 Secure-IC SAS Comparison of execution context data signatures with references
CN106991340B (zh) * 2017-03-17 2018-05-15 广州小微电子技术有限公司 芯片加密方法
WO2018183572A1 (en) * 2017-03-29 2018-10-04 Board Of Regents, The University Of Texas System Reducing amount of helper data in silicon physical unclonable functions via lossy compression without production-time error characterization
US10579339B2 (en) * 2017-04-05 2020-03-03 Intel Corporation Random number generator that includes physically unclonable circuits
EP3407335B1 (en) * 2017-05-22 2023-07-26 Macronix International Co., Ltd. Non-volatile memory based physically unclonable function with random number generator
US10958452B2 (en) 2017-06-06 2021-03-23 Analog Devices, Inc. System and device including reconfigurable physical unclonable functions and threshold cryptography
US10949546B2 (en) * 2017-08-02 2021-03-16 Samsung Electronics Co., Ltd. Security devices, electronic devices and methods of operating electronic devices
US10951411B2 (en) 2017-08-23 2021-03-16 Semiconductor Components Industries, Llc Methods and apparatus for a password-protected integrated circuit
US10649735B2 (en) * 2017-09-12 2020-05-12 Ememory Technology Inc. Security system with entropy bits
US10841107B2 (en) 2017-11-20 2020-11-17 Analog Devices, Inc. Efficient delay-based PUF implementation using optimal racing strategy
US10897364B2 (en) * 2017-12-18 2021-01-19 Intel Corporation Physically unclonable function implemented with spin orbit coupling based magnetic memory
JP6692792B2 (ja) * 2017-12-28 2020-05-13 三菱重工業株式会社 監視装置、監視システム、監視方法及びプログラム
EP3509247A1 (de) * 2018-01-03 2019-07-10 Siemens Aktiengesellschaft Verfahren und schlüsselgenerator zum rechnergestützten erzeugen eines gesamtschlüssels
US11144649B2 (en) * 2018-01-25 2021-10-12 Kigen (Uk) Limited Sensitive information provision process
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
US10742406B2 (en) * 2018-05-03 2020-08-11 Micron Technology, Inc. Key generation and secure storage in a noisy environment
KR102556091B1 (ko) 2018-10-04 2023-07-14 삼성전자주식회사 보안 정보의 주입을 위한 장치 및 방법
CN109946595B (zh) * 2019-03-25 2022-01-04 中国科学院微电子研究所 一种扫描测试执行方法、装置及系统
EP3720039A1 (de) * 2019-04-05 2020-10-07 Siemens Aktiengesellschaft Verfahren für das konfigurieren eines sicherheitsmoduls mit mindestens einem abgeleiteten schlüssel
US11373011B2 (en) * 2019-07-01 2022-06-28 Rockwell Collins, Inc. Security module with multiple independent physical and virtual lanes
CN110380854A (zh) * 2019-08-12 2019-10-25 南京芯驰半导体科技有限公司 针对多个系统的根密钥生成、隔离方法及根密钥模块
US11997199B2 (en) 2019-09-12 2024-05-28 Fingerprint Cards Anacatum Ip Ab Biometric device with cryptographic circuitry
US11132470B2 (en) * 2019-11-07 2021-09-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11182308B2 (en) 2019-11-07 2021-11-23 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11494522B2 (en) 2019-11-07 2022-11-08 Micron Technology, Inc. Semiconductor device with self-lock security and associated methods and systems
US11030124B2 (en) 2019-11-07 2021-06-08 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US10979054B1 (en) * 2020-01-14 2021-04-13 Nuvotonn Technology Corporation Coupling of combinational logic circuits for protection against side-channel attacks
GB202010823D0 (en) * 2020-07-14 2020-08-26 Graphcore Ltd System and method for reading and writing encryted data
US11380379B2 (en) 2020-11-02 2022-07-05 Macronix International Co., Ltd. PUF applications in memories
US20220222386A1 (en) * 2021-01-13 2022-07-14 University Of Florida Research Foundation, Inc. Decommissioning and erasing entropy in microelectronic systems
CN114465711A (zh) * 2022-01-29 2022-05-10 支付宝(杭州)信息技术有限公司 一种存储器的硬件秘钥重构方法及装置
EP4383645A1 (en) * 2022-12-05 2024-06-12 Intelligent Information Security Technology Inc. Device with multiple hardware signatures from a single puf circuit source and related methods and applications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169636A1 (en) * 2003-10-02 2010-07-01 Davis John M System and Method For a Secure I/O Interface
US20100199104A1 (en) * 2007-07-20 2010-08-05 Nxp B.V. Device with a secure virtual machine
US20110161586A1 (en) * 2009-12-29 2011-06-30 Miodrag Potkonjak Shared Memories for Energy Efficient Multi-Core Processors
US20120137137A1 (en) * 2010-11-30 2012-05-31 Brickell Ernest F Method and apparatus for key provisioning of hardware devices

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1267515A3 (en) * 2000-01-21 2004-04-07 Sony Computer Entertainment Inc. Method and apparatus for symmetric encryption/decryption of recorded data
US7840803B2 (en) * 2002-04-16 2010-11-23 Massachusetts Institute Of Technology Authentication of integrated circuits
US7773754B2 (en) * 2002-07-08 2010-08-10 Broadcom Corporation Key management system and method
US20060059369A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Circuit chip for cryptographic processing having a secure interface to an external memory
US20060133607A1 (en) 2004-12-22 2006-06-22 Seagate Technology Llc Apparatus and method for generating a secret key
US7873830B2 (en) * 2006-01-13 2011-01-18 International Business Machines Corporation Methods for coordinating access to memory from at least two cryptography secure processing units
US7870395B2 (en) * 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US9252960B2 (en) * 2009-03-06 2016-02-02 Intrinsic Id B.V. System for establishing a cryptographic key depending on a physical system
US8745410B2 (en) * 2009-03-18 2014-06-03 Atmel Corporation Method and apparatus to scramble data stored in memories accessed by microprocessors
JP5423088B2 (ja) * 2009-03-25 2014-02-19 ソニー株式会社 集積回路、暗号通信装置、暗号通信システム、情報処理方法、及び暗号通信方法
US8837718B2 (en) 2009-03-27 2014-09-16 Microsoft Corporation User-specified sharing of data via policy and/or inference from a hierarchical cryptographic store
US8160248B2 (en) 2009-04-02 2012-04-17 Broadcom Corporation Authenticated mode control
US8489660B2 (en) * 2009-06-26 2013-07-16 Intel Corporation Digital random number generator using partially entropic data
US8402401B2 (en) * 2009-11-09 2013-03-19 Case Western University Protection of intellectual property cores through a design flow
KR101133988B1 (ko) 2010-04-23 2012-04-05 한국과학기술원 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템
US8516269B1 (en) * 2010-07-28 2013-08-20 Sandia Corporation Hardware device to physical structure binding and authentication
US8953790B2 (en) * 2011-11-21 2015-02-10 Broadcom Corporation Secure generation of a device root key in the field
US8590010B2 (en) * 2011-11-22 2013-11-19 International Business Machines Corporation Retention based intrinsic fingerprint identification featuring a fuzzy algorithm and a dynamic key
US20130147511A1 (en) * 2011-12-07 2013-06-13 Patrick Koeberl Offline Device Authentication and Anti-Counterfeiting Using Physically Unclonable Functions
WO2014055148A2 (en) * 2012-07-09 2014-04-10 Massachusetts Institute Of Technology Cryptography and key management device and architecture
US10079678B2 (en) * 2012-07-24 2018-09-18 Intel Corporation Providing access to encrypted data
US8938792B2 (en) * 2012-12-28 2015-01-20 Intel Corporation Device authentication using a physically unclonable functions based key generation system
US9390291B2 (en) 2012-12-29 2016-07-12 Intel Corporation Secure key derivation and cryptography logic for integrated circuits

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169636A1 (en) * 2003-10-02 2010-07-01 Davis John M System and Method For a Secure I/O Interface
US20100199104A1 (en) * 2007-07-20 2010-08-05 Nxp B.V. Device with a secure virtual machine
US20110161586A1 (en) * 2009-12-29 2011-06-30 Miodrag Potkonjak Shared Memories for Energy Efficient Multi-Core Processors
US20120137137A1 (en) * 2010-11-30 2012-05-31 Brickell Ernest F Method and apparatus for key provisioning of hardware devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190034324A (ko) * 2016-09-23 2019-04-01 애플 인크. 네트워크 트래픽의 보안 통신
US11595366B2 (en) 2016-09-23 2023-02-28 Apple Inc. Secure communication of network traffic
KR20190135100A (ko) * 2018-05-28 2019-12-06 한국과학기술연구원 사용자 인증 시스템에 사용되는 puf 장치 및 그것의 동작 방법
KR20230099867A (ko) * 2021-12-28 2023-07-05 연세대학교 산학협력단 보안 스캔 체인 회로 및 스캔 체인 회로 보안 방법

Also Published As

Publication number Publication date
US20140189365A1 (en) 2014-07-03
WO2014105146A1 (en) 2014-07-03
US9390291B2 (en) 2016-07-12
DE112013005431T5 (de) 2015-07-30
KR101726108B1 (ko) 2017-04-11
CN105027136A (zh) 2015-11-04
CN105027136B (zh) 2018-02-02

Similar Documents

Publication Publication Date Title
KR101726108B1 (ko) 집적 회로를 위한 보안 키 도출 및 암호화 로직
US8928347B2 (en) Integrated circuits having accessible and inaccessible physically unclonable functions
US9742563B2 (en) Secure provisioning of secret keys during integrated circuit manufacturing
US11664994B2 (en) Secure unlock systems for locked devices
CN107851170B (zh) 支持用于存储器地址范围的可配置安全级别
US9264048B2 (en) Secret operations using reconfigurable logics
CN112149148A (zh) 计算环境中存储器隔间的密码隔离
KR20190031136A (ko) 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공
CN114692131A (zh) 带有分解式存储器的密码式计算
US10491381B2 (en) In-field system test security
KR20170033891A (ko) 보호 영역에서의 메모리 초기화
US10462110B2 (en) System, apparatus and method for providing a unique identifier in a fuseless semiconductor device
TWI706321B (zh) 安全模指數處理器、方法、系統、及指令
US10642947B2 (en) System, method and computer-accessible medium providing secure integrated circuit camouflaging for minterm protection
US11544174B2 (en) Method and apparatus for protecting trace data of a remote debug session
EP4020285A1 (en) Simulation state to detect transient execution attack
TWI522914B (zh) 微處理器以及撤銷第一密碼之方法
US10859627B2 (en) In-field system testing
US20240110975A1 (en) Secure Remote Debugging
TWI428824B (zh) 微處理器及限制存取的方法
Rakshit EFFICIENT SECURITY IN EMERGING MEMORIES
Mahmod Towards Unclonable System Design for Resource-Constrained Application
Al Mahmod Towards Unclonable System Design for Resource-Constrained Applications
JP2024513716A (ja) 読み取り専用メモリ(rom)のセキュリティ

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