KR20150129694A - 프로그램가능 디바이스의 개인화 구성 - Google Patents

프로그램가능 디바이스의 개인화 구성 Download PDF

Info

Publication number
KR20150129694A
KR20150129694A KR1020157023688A KR20157023688A KR20150129694A KR 20150129694 A KR20150129694 A KR 20150129694A KR 1020157023688 A KR1020157023688 A KR 1020157023688A KR 20157023688 A KR20157023688 A KR 20157023688A KR 20150129694 A KR20150129694 A KR 20150129694A
Authority
KR
South Korea
Prior art keywords
key
sub
memory
configurable
semiconductor device
Prior art date
Application number
KR1020157023688A
Other languages
English (en)
Inventor
마이클 시몬스
Original Assignee
마이크로칩 테크놀로지 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로칩 테크놀로지 인코포레이티드 filed Critical 마이크로칩 테크놀로지 인코포레이티드
Publication of KR20150129694A publication Critical patent/KR20150129694A/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/78Protecting 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/79Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]

Landscapes

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

Abstract

반도체 디바이스는, 프로그램가능 키를 저장하도록 구성된 보안 메모리, 보안 메모리의 프로그램가능 키를 프로그램하기 위한 인터페이스부, 및 프로그램가능 키와 관련된 반도체 디바이스의 복수의 구성가능 특징부들을 포함하고, 각 구성가능 특징부는 한 세트의 다수의 선택가능 구성들을 가지며, 키의 값은 구성가능 특징부들의 각각을 위해 다수의 구성들 중 하나의 구성에 대한 선택을 정의한다. 예를 들면, 키는 다수의 서브-키들을 포함할 수 있으며, 각각은 구성가능 특징부들 중 하나의 특징부와 관련되며, 각 서브-키의 값은 해당 서브-키와 관련된 구성가능 특징부를 위해 다수의 구성들 중 하나의 구성에 대한 선택을 정의한다. 또한, 전체 프로그램가능 키는 반도체 디바이스의 추가 기능성부를 인에이블할 수 있다.

Description

프로그램가능 디바이스의 개인화 구성{PROGRAMMABLE DEVICE PERSONALIZATION}
본 출원은 2013년 3월 14일에 출원된 미국 가출원 No. 61/780,994의 이익을 청구하며, 상기 가출원은 그 전체가 본 명세서에 통합된다.
본 발명은 프로그램가능 디바이스의 개인화 구성에 관한 것으로서, 특히 반도체 디바이스들을 위한 프로그램가능 디바이스의 개인화 구성에 관한 것이다.
오늘날 고객들의 하나의 보안 관심사는 제품을 복제로부터 보호하는 것이다. 예를 들면 자동차 전자 열쇠(key fob)에서, 시스템 보안 부분은, 실제 주문형 반도체(ASIC) 또는 시스템 온 칩(SoC)이 고객에게 고유하다는 사실에 의존한다. 이는, 반도체 제조자가, 해당하는 범용 디바이스 마스크 세트의 특징들과는 다른 몇몇의 근본적인 특징들(메모리 맵, 핀아웃, 기능들 등)을 갖는 신규 마스크 세트(mask set)를 만들어야함을 의미한다.
다양한 실시예들에 따르면, 최종 고객들이 범용 제품들로부터 고유한 디바이스들(unique devices)을 생성하게 할 수 있는 체계(scheme)를 제공하는 프로그램가능 디바이스 개인화 구성이 제공될 수 있다.
예를 들면, 하나의 실시예는 반도체 디바이스를 제공하는데, 그 반도체 디바이스는, 여기에서 "디바이스 개인화 키"로써 참조되는 프로그램가능 키를 저장하도록 구성된 보안 메모리, 보안 메모리에 프로그램가능 키를 프로그램하기 위한 인터페이스부, 및 프로그램가능 키와 관련된 반도체 디바이스의 복수의 구성가능 특징부들을 포함하고, 각 구성가능 특징부는 다수의 선택가능 구성들을 가지며, 키의 값은 구성가능 특징부들 각각의 다수의 구성들 중 하나의 구성에 대한 선택을 정의한다. 예를 들면, 키는 다수의 서브-키들을 포함할 수 있으며, 각각은 구성가능 특징부들 중 하나의 특징와 관련되며, 각 서브-키의 값은 해당 서브-키와 관련된 구성가능 특징부의 다수의 구성들 중 하나의 구성에 대한 선택을 정의한다. 또한, 전체 프로그램가능 키는 반도체 디바이스의 추가 기능성부를 인에이블할 수 있다.
또하나의 실시예는, 접근가능 메모리, 보안 메모리, 구성 인터페이스부, 및 복수의 구성가능 특징부들(각 구성가능 특징부는 한 세트의 다수의 선택가능 구성들을 가짐)을 구비한 반도체 디바이스를 구성하는 방법을 제공한다. 상기 방법은, 반도체 디바이스에 제공된 구성 인터페이스부를 이용하여 보안 메모리의 키를 프로그래밍하는 것을 포함할 수 있는데, 그 키의 값은 구성가능 특징부들 각각의 다수의 구성들 중 하나의 구성에 대한 선택을 정의한다.
따라서, 다양한 실시예들에 따르면, 프로그램가능한 "디바이스 개인화 키"가 범용 디바이스 내에 구축될 수 있다. 반도체 디바이스 제조자가 다수의 고객들에게 디바이스들을 공급하는 상황에 있어서, 각 고객은 제조자, 고객 자신, 및 제3자(another party) 중 어느 하나에 의해, 각자의 디바이스 내에 프로그램된 디바이스 개인화 키에 근거하여 고유한 디바이스를 가질 수 있다. 상술한 바와 같이, 각 프로그램가능 키는 다수의 서브-키들(각 서브-키는 전체 키의 비트들의 서브-세트를 포함함)을 포함할 수 있고, 각 서브-키는, 디바이스의 특정 측면 또는 특징, 예를 들어 디바이스 메모리를 위한 메모리 맵, 테스트 엔트리 코드, 주변장치 세트의 식별 또는 이용가능성, 핀아웃 구성, 인터럽트 벡터 테이블 위치, 프로그램 어드레스 스크램블링/매핑(scrambling/mapping) 구성들 등을 구성하는데 이용될 것이다. 디바이스의 각 구성가능 특징부는 다수의 다른 가능 구성들을 가질 수 있으며, 각 서브-키의 값은 구성가능 특징부와 관련된 구성가능 특징부의 다수의 가능 구성들 중 특정한 하나의 구성에 대한 선택을 정의할 수 있다.
일부 실시예들에서, 이들 서브-키의 디코딩은, 각 서브-키(또는 적어도 일부 서브-키들)의 다수의 값들이 결과적으로 특징 선택이 되도록, 설계될 수 있다. 예를 들면, 테스트 엔트리 코드 서브-키에 대해서는, 값들(1, 3, 7)은 결과적으로 테스트 엔트리 코드 'A'가 될 수 있고, 한편, 값들(2, 5)은 테스트 엔트리 코드 'B'가 될 수 있고, 값들(4, 6)은 테스트 엔트리 코드 'C'가 될 수 있다. 이로 인해, 만일 디바이스의 특징 세트(즉, 다양한 구성가능 특징부들을 위하여 선택된 구성들) 자체가 역설계(reverse engineer)될 수 있는 경우(event)에는, 디바이스 개인화 키를 역설계하는 것이 어렵다는 점이 증가된다. 예를 들어 상술한 예시를 참조하면, 특정 디바이스가 테스트 엔트리 코드 'B' 또는 'C' 대신에 'A'를 이용하고 있다는 지식은, 디바이스 개인화 키의 올바른 테스트 엔트리 코드 서브-키 값을 표시하지 않지만, 오히려 그 테스트 엔트리 코드(예를 들면, 디바이스가 테스트 엔트리 코드 'A'를 이용하고 있다는 지식)에 대응하는 디바이스의 가능한 세트의 서브-키들 값들만이 엔트리 코드 서브-키 값이 1, 3, 또는 7임을 단지 표시한다. 디바이스의 복제 또는 역설계를 추가로 단념시키기 위한, 이러한 체계의 특정 장점은, 이후 논의되는 것처럼, 전체 디바이스 개인화 키에 의해 인에이블된 추가 디바이스 특징의 관점에서 이해된다.
일부 실시예들에서, 전체 디바이스 개인화 키는 추가 값 또는 "서브-키"를 계산하는 데에 이용될 수 있고, 추가 값은 프로그램 어드레스 스크램블링/매핑과 같은 추가 특징을 구성하거나 개인화 구성하는 데에 이용될 수 있다. 일부 실시예들에서는, 현재의 CRC 주변장치 또는 해쉬 기능이, 긴 디바이스 개인화 키로부터 코드 번호를 발생시키는데 이용될 수 있다. 따라서, 특정 디바이스에서는, 사용자가 디바이스의 각 서브-특징을 올바르게 구성하기 위해 적절한 서브-키를 결정할지라도, 전체 디바이스 개인화 키의 올바른 지식이 없다면, 전체 디바이스 개인화 키에 의해 인에이블된 추가 특징이 제공될 수 없다.
일부 실시예들에서, 디바이스는 키가 제조자 및 고객 자신 중 어느 하나에 의해서 프로그램될 수 있도록 설계된다. 고객에게 자신의 고유한 키를 프로그램할 수 있다면, 전체 공급망을 고객 자신들의 제어하에 두는 추가 이득을 제공한다. 즉, 제조자는 최초 고객에 의해 이용된 디바이스 개인화 키를 알지 못하기 때문에, 제조자가 최초 고객의 "주문형" 디바이스를 두번째 고객에게 판매하는 것을 불가능해진다. 대안적으로, 제조자에 의한 키의 프로그래밍은, 종래의 개인화 구성 체계들에서와 같이, 제조자가 제품마다의 다수의 마스크들을 형성하지 않고도 개인화 구성된 디바이스들을 제공하게 한다. 다시 말해서, 개인화 구성는 디바이스가 패키징된 이후에 수행될 수도 있다.
일부 실시예들에서, 위에서 논의된 본 발명의 특징들에 따르면, 제품을 복제하기 위해서는, 사용자가 원시 프로그램 코드(또는 이미지), 범용 부분의 어느 부분이 이용되는지에 대한 지식, 및 올바른 전체 디바이스 개인화 키를 소유해야만 한다.
따라서, 다양한 실시예에 따르면, 디바이스 개인화 구성 서비스들을 제공하는 디바이스 및 방법이 저비용이면서 광범위한 고객 기반으로 이용가능하다.
예시의 실시예들이 도면들을 참조하여 이하에서 논의된다.
도 1은, 다양한 실시예들에 따른, 디바이스 개인화 키를 이용하여 개인화 구성이 가능한 예시의 반도체 디바이스, 예를 들면 마이크로컨트롤러의 블록도를 도시한다.
도 2는, 예시의 실시예에 따른, 도 1의 디바이스 내에 프로그램될 수 있고 다수의 서브-키들을 구비한 예시의 n-비트 프로그램가능 키를 도시한다.
도 3은, 특정의 구성가능한 특징을 위해 각 선택가능 구성에 다수의 서브-키 값들을 할당하는 개념을 도시한다.
도 4는, 개인화 구성된 디바이스의 또하나의 특징을 인에이블시키거나 구성하는 데에 이용될 수 있는, 프로그램가능 키로부터의 "서명" 값의 발생을 도시한다.
도 1은, 본 개시의 다양한 특징들에 따라 개인화 구성이 가능한 예시의 반도체 디바이스, 예를 들면 마이크로컨트롤러의 블록도를 도시한다. 디바이스(10)는 프로세서(12), 데이터 메모리(14), 디바이스(10)의 다양한 기능성을 제공하기 위한 하나 이상의 프로그램들(17)을 저장하는 프로그램 메모리(15), 옵션용 추가 메모리(18), 보안 메모리(20), 개인화 키 저장 및 디코딩 유닛(22), 및 다수의 구성가능 특징부들(24)을 포함할 수 있다. 이 예시에서, 구성가능 특징부들(24)은, 예를 들면, 구성가능 메모리 어드레스 스크램블러(24A), 핀아웃 테이블들(24B), 인터럽트 벡터 테이블(들)(24C), 및 내부 테스트 유닛(24D)을 포함한다. 보안 메모리(20)는 복수의 서브-키들(32)을 포함하는 디바이스 개인화 키(30)를 저장할 수 있다. 디바이스 개인화 키(30)는 임의의 적절한 개수의 서브-키들(32)을 포함할 수 있다.
프로세서(12)는, 예를 들면, 구성가능 메모리 어드레스 스크램블러(24A)를 통해서 데이터 메모리에 대해 접근할 수 있는 프로세서 코어(MCU)일 수 있으며, 어드레스 스크램블러(24A)는, 보안 메모리(20)에 저장된 디바이스 개인화 키(30)의 서브-키들(32) 중 하나에 의해 정의된 하나 이상의 방법들에 따라, 어드레스 스크램블링을 수행한다. 일부 실시예들에서, 범용 디바이스에서는 일반적으로는 접근할 수 없는 추가 데이터 메모리(18)가 서브-키들(32) 중 하나에 의해 활성화될 수 있다. 메모리 어드레스 스크램블러(24A) 이외에, 마이크로컨트롤러(10)의 다양한 다른 구성가능 특징부들(24), 예를 들어, 핀아웃 테이블(24B)에 의해 정의된 특정 핀아웃의 구성, 인터럽트 벡터 테이블(들)(24C)의 어드레스(들), 내부 테스트 유닛(24D)에 의해 정의된 내부 테스트 엔트리 시퀀스들, 및 상술한 바와 같은 기타 구성가능 기능들이 개인화 키(30)에 의해 정의될 수도 있다.
데이터 메모리(14), 프로그램 메모리(17), 추가 메모리(18), 및 보안 메모리(20)가 개별적인(discrete) 메모리 구조들로써 형성될 수 있거나, 또는 그러한 메모리들 중 임의의 2 이상(또는 모두)의 메모리들이 통합 메모리 구조의 특정 영역들을 포함할 수도 있다. 예를 들면, 보안 메모리(20)는 데이터 메모리(14), 추가 메모리(16), 및/또는 프로그램 메모리(17)와는 물리적으로 구별되는(distinct) 메모리 구조일 수 있으며, 또는, 통합 메모리 디바이스의 소정의 할당 영역을 포함할 수도 있다.
개인화 키 저장 및 디코딩 유닛(22)은, 키(30)를 보안 메모리(20) 내에 기록(즉, 키를 보안 메모리(20) 내에 프로그래밍함)하기 위한 인터페이스부를 제공하거나, 또는 그렇지않다면, 키(30)를 보안 메모리(30) 내에 기록하는 것을 용이하게 할 수 있고, 그리고 키(30)를 디코드하도록 구성될 수 있다. 일부 실시예들에서는, 다수의 서브-키 값들이, 예를 들어 도 3을 참조하여 후술하는 바와 같이, 동일한 기능 구성에 할당될 수 있으므로, 디코딩은 비교기들과 같은 단순 로직에 의해 수행될 수 있다.
따라서, 고유한 코드를 갖는 개인화 키(30)를 단지 프로그래밍함으로써 고객-특화 디바이스들(10)이 만들어질 수 있다. 그렇지않다면, 그러한 디바이스들은 단일 버전으로 제조될 수도 있다. 일부 실시예들에 따르면, 제조 라인의 최종단에서, 그러한 디바이스에는, 디바이스의 하우징 상에 다른 디바이스 번호들이 제공될 수 있고, 또는 선택적으로 마킹들이 전혀 없이 제공될 수도 있다. 하지만, 디바이스들은 여전히 범용 디바이스의 동일한 마킹들을 단순히 포함할 수 있다. 따라서, 제3자는, 디바이스가 범용 디바이스와 실제적으로 다르게 구성되었는지 알 수 없을 것이다.
도 2 내지 도 4는 특정한 실시예들에 따른, 디바이스 개인화 키(30)의 다양한 측면들을 도시한다.
도 2는, 디바이스(10) 내에, 예를 들면, 보안 메모리(20)의 관련된 레지스터 내에 프로그램될 수 있는 n-비트 프로그램가능 키(30)의 예시를 도시한다. 사용자에 의해 판독될 수 없는 키를 비휘발성으로 저장할 수 있는 보안 메모리(20)가 제공될 수 있다. 일부 실시예들에서, 메모리(20)는, 단 1회 기록될 수 있고, 일단 프로그램되면 사용자가 이 메모리에 어떤 접근도 할 수 없게 액세스할 수 없도록 구성된다.
도시된 바와 같이, 개인화 키(30)는 몇개의 "서브-키들"(32)을 포함할 수 있다. 이 예시에서, 키(30)는, A-F로 표시된 6개의 서브-키들(32)을 포함한다. 하지만, 키(30)는 이밖에 다른 적절한 개수의 서브-키들(32)을 가질 수도 있다. 더욱, 키(30)의 각 서브-키(32)는 임의의 적절한 길이(예를 들면, 비트수)를 가질 수 있다. 더욱, 특정 키(30)의 서브-키들(32)은 동일한 길이 또는 서로 다른 길이들을 가질 수 있다. 각 서브-키(32)는 디바이스(10)의 특정한 구성가능 특징부들 또는 국면(aspect)에 할당될 수 있다. 도 2에 도시된 예에서, 서브-키들(A-F)은 디바이스(10)의 다음의 6가지 구성가능한 국면들에 할당된다: (A) 예를 들면, 데이터 메모리(14) 내의 SRAM(정적 랜덤-액세스 메모리) 영역의 시작 위치; (B) 예를 들면, 프로그램 메모리(16) 내의 인터럽트 벡터 테이블(24C)의 어드레스; (C) 디바이스(10)와 관련된 주변장치 세트의 이용가능성 또는 인에이블 상태; (D) 내부 테스트 엔트리 시퀀스(예를 들면, 내부 테스트 유닛(24D)에 의해 정의될 수 있음); (E) SFR(특수 기능 레지스터) 메모리 맵(예를 들면, 메모리 어드레스 스크램블러(24A)에 의해 이용됨); 및 (F) 핀아웃 구성(예를 들면, 핀아웃 테이블(24B)에 의해 정의됨).
그러한 구성가능 특징부들의 각각은, 다수의 다른 가능 구성들을 구비할 수 있다. 각 서브-키(A-F)는, 대응하는 구성가능 특징부의 다수의 가능 구성들 중 특정한 하나에 대한 선택을 정의하는 n-비트 값을 갖는다. 예를 들면, 서브-키(D)의 값은, 3가지의 다른 가능 테스트 엔트리 시퀀스들로부터 선택된 특정 테스트 엔트리 시퀀스를 정의할 수 있다. 또하나의 예시로써, 서브-키(F)의 값은 6가지의 가능 핀아웃 구성들로부터 선택된 특정의 핀아웃 구성을 정의할 수 있다.
따라서, 디바이스(10)의 다양한 구성들 또는 기능성들이 다수의 서브-키들(32)을 이용하여 다양한 방법들로 정의될 수 있다. 예를 들면, 구성가능하고 프로그램가능한 핀 할당(서브-키(F)에 의해 정의됨)은, 반도체 디바이스(10), 예를 들면 마이크로컨트롤러의 외부 핀들(특수 주변장치에 연결됨)에게, 특정 주변장치에 연결되도록 명하는 것을 가능케 할 수 있다. 올바른 코드를 사용하지 않고 복제된 펌웨어를 이용할 때에는 디바이스를 동작불가하게 하는 이러한 기능은, 활성화하지 않을 수 있다.
각 구성가능 특징부는 임의의 적절한 개수의 가능하고 선택가능한 구성들을 구비할 수 있다. 더욱, 각 서브-키는 임의의 적절한 길이(비트 단위)를 가질 수 있어서, 어떤 개수의 가능 값들도 허용할 수 있다. 하나의 예시적인 실시예에서, 서브-키(32)는 4비트 길이일 수 있으며, 따라서 16가지 가능 값들을 정의할 수 있다.
일부 실시예들에서, 각 서브-키는 관련된 구성가능 특징부의 가능하고 선택가능한 구성들보다 많은 가능 값들을 가질 수 있어서, 상기 특징의 각 선택가능 구성에 다수의 서브-키 값들의 할당을 가능케한다. 이 때문에, 디바이스를 복제하거나 역설계하는 것에 대한 추가적인 보호가 제공될 수 있다.
예를 들면, 도 3은, 구성가능 테스트 엔트리 시퀀스에 해당하는 서브-키 "D"를 강조한다. 테스트 엔트리 시퀀스는 4가지의 선택가능 시퀀스들을 가질 수 있다; 시퀀스 #1, 시퀀스 #2, 시퀀스 #3, 및 시퀀스 #4. 서브-키(D)는 4-비트 값을 가질 수 있어서, 16가지의 가능한 서브-키 값들을 정의할 수 있다. 따라서, 도시된 바와 같이, 4개의 다른 4-비트 서브-키 값들이 4개의 시퀀스들 각각에 매핑된다.
이런 매핑 할당 때문에, 특징 세트들/구성들에 대한 지식으로부터 키(30)의 역설계를 방지할 수 있다. 게다가, 구성된 테스트 엔트리 시퀀스(예를 들면, 시퀀스 #3)를 구하는 것(figuring out)은, (시퀀스 #3에 할당된 4개의 서브-키 값들 중에서) 하나의 가능 서브-키 값을 단지 표시할 수 있는데, 그것은 올바른 값의 키가 아닐 수 있다(예를 들면, 키(30) 내의 실제 시퀀스 #3 서브-키 값은 "1010"이지만, 시퀀스 #3 서브-값으로 "1000"이 식별될 수 있음). 도 4를 참조하여 이하에서 설명되는 바와 같이, 이런 잘못된 식별 때문에, 복제자는 전체의 올바른 키(30)에 의해서만 인에이블되는 기능에 접근할 수 없다.
내부적으로, 다수의 서브-키 값들이 동일한 기능 구성에 할당될 수 있으므로, 디코딩 유닛(22)에 의해 제공되는 서브-키 디코딩은 비교기들과 같은 단순 로직만을 필요로 한다. 만일 각 서브-키 값이 고유한 기능 구성을 발생시키면, 단순 디코더가 이용될 수도 있다. 범용 디바이스는 이러한 추가의 개인화 구성 특징부를 포함할 수 있고, 소정 키(30)가 저장될 수 있다. 추가로, 디바이스(10)는, 키(30)의 우연한 프로그래밍을 방지하는 로직을 포함할 수 있다. 따라서, 디바이스(10)는, 키(30)의 1회성(one-time-only) 프로그래밍이 우발적으로 덮어쓰기되는 것, 예를 들어 이러한 기능성을 원하지 않는 사용자들에 의해 우발적으로 덮어쓰기되는 것을 방지하게 할 수 있는, 특정 프로그래밍 시퀀스를 포함할 수 있다.
게다가, 일부 실시예들에서, 범용 디바이스들에 대해 상기 기능성이 문서화되지 않을 수 있다. 이 기능성을 요구하는 고객들에게만 관련된 개인화 구성 기능이 제공될 것이다. 예를 들면, 제조자가 고객을 위해서 개별적으로 키(30)를 프로그램하는 실시예에 있어서는, 특정 키(30)에 의해 설정된 특정 기능들을 설명하는 전용 데이터 시트가, 이런 고객에게 제공될 수 있다. 하지만, 각자의 키들을 발생시키는 다양한 설정을 설명하는 더 복잡한 데이터 시트가 제공될 수도 있을 것이다.
위에서 논의된 바와 같이, 일부 실시예들에서, 전체 디바이스 개인화 키(30)는, 디바이스(10)의 특정의 특징부 또는 기능을 인에이블시키거나 구성하거나 또는 개인화하기 위해, 추가 값 또는 "서명"을 계산하는데 이용될 수 있다. 도 4는 이러한 측면에 대한 예시를 도시한다. 도시된 바와 같이, 소정의 알고리즘 또는 기능부(40)는 키 서명값(42)을 발생시키기 위해 전체 개인화 키(30)에 적용될 수 있으며, 키 서명값(42)은 디바이스(10)의 특정의 특징부를 인에이블시키거나 구성하거나 또는 개인화 구성하는데 이용될 수 있다. 예를 들면, 키 서명 값(42)은, 각 서브-키(24)와 유사한 방식으로, 구성가능 특징부의 선택을 정의할 수 있다. 대안적으로, 키 서명 값(42) 자체가 소정 기능을 제공하기 위해 이용될 수 있다. 예를 들어, 키 서명 값(42) 자체는, 암호화 키, 예를 들면, 내부 디바이스 통신들을 위한, 또는 외부 디바이스들과의 통신들을 위한, 암호화 키로서 이용될 수 있다.
알고리즘 또는 기능부(40)는, 키(30)를 키 서명 값(42)으로 변형시키거나 변환하기 위한 임의의 알고리즘 또는 기능을 포함할 수 있다. 예를 들면, 순환 중복 검사(CRC) 또는 해쉬 기능과 같은 일-방향 기능이, 긴 디바이스 개인화 키(30)로부터 코드 번호(키 서명 값(42))를 발생시키는데 이용될 수 있다.
따라서, 디바이스(10)의 특정한 특징부 또는 기능을 인에이블시키거나 구성하거나 또는 개인화 구성하기 위해서는, 모든 서브-키들(24)을 포함하는 전체의 올바른 키(30)가 알려져야만 한다. 따라서, 특정 디바이스에서는, 사용자가 디바이스의 각 특징을 정확하게 구성하기 위한 적절한 서브-키를 결정할지라도, 전체 디바이스 개인화 키(30)의 올바른 지식이 없다면, 전체 디바이스 개인화 키(30)에 의해서(예를 들면, 전체 키(30)로부터 발생된 키 서명 값(42)에 의해서) 인에이블되거나 구성된 추가 특징부가 제공될 수 없다.
다른 실시예들에서, 키 서명 값(42)은, 키의 다수의 서브-키들(24)에 근거하여 발생될 수 있지만, 전체 키(30)보다는 작게 발생될 수 있다. 예를 들면, 키 서명 값(42)은, 서브-키 값들의 임의의 서브 세트에 근거하여 또는 모든 서브-키 값의 일부분에 근거하여 발생될 수 있다.
따라서, 상술한 바에 따르면, 일부 실시예들에서, 제품을 복제(clone)하기 위해서, 사용자는, 원시 프로그램 코드(또는 이미지)와, 어느 범용 부분이 이용되고 있는지에 대한 지식, 및 정확하고 완전한 디바이스 개인화 키를 소유해야만 한다.
다양한 실시예들에 따르면, 개인화 키(30)를 디코딩하기 위해서 어떤 암호화 키 절차가 이용될 수 있다. 개시된 방법은, 제조 동안에 다른 마스크 세트를 적용할 필요 없이, 프로그래밍 인터페이스부를 포함하는 임의의 반도체 디바이스에 디바이스 개인화 구성의 추가를 가능케한다. 개별적인 개인화 키의 저장은, 고객의 프로그램 코드가 복제되고 그리고 누군가가 어느 제조자 디바이스가 이용되는지를 알지라도, 그들이 상당한 노력없이는 디바이스를 복제할 수 없다는 것을 보장한다. 일부 실시예들에서, 제조자가 개인화 키를 프로그램하고, 그리고 상술한 바와 같이 디바이스에 맞는 맞춤형 데이터 시트를 제공하는 것이 기본적인 방안일 수 있다. 다른 실시예들에서의 확장된 방안은, 고객이 그들 자신의 개인화 구성키를 프로그램하게 하는 것인데, 이로 인해, 고객은 그들 자신의 공급망을 총괄 제어할 수 있다. 고객은 다양한 디바이스 특징들(예를 들면, 소망하는 특징들의 세트, 소망하는 메모리 맵, 소망하는 핀아웃, 등)을 위해 소망하는 구성의 세트를 제조자에 통보할 수 있고, 제조자는 각 특징의 선택된 구성에 해당하는 서브-키 값의 리스트를 제공할 수 있다(도 3을 참조하여 논의된 바와 같이, 각 구성은 다수의 할당된 서브-키 값들을 가질 수 있기 때문임). 고객은, 이들 서브-키 값들 중 어느 것으로부터 개인화 키를 만들 수 있고, 결과 키를 그들의 디바이스 내에 프로그램할 수 있고, 그렇게 함으로써 고객에게 제조자가 모르는 개인화 키를 제공할 수 있다.
비록 개시된 실시예들이 본 명세서에 상세하게 기재되었지만, 실시예들의 사상과 범위를 일탈하지 않으면서도 실시예들에 대하여 다양한 변경들, 치환들, 및 개량들이 이루어질 수 있음이 이해되어야 한다.

Claims (19)

  1. 프로그램가능 키를 저장하도록 구성된 보안 메모리;
    상기 보안 메모리에 상기 프로그램가능 키를 프로그래밍하기 위한 인터페이스부; 및
    상기 프로그램가능 키와 관련된 반도체 디바이스의 복수의 구성가능 특징부들을 포함하고,
    각 구성가능 특징부는 다수의 선택가능 구성들을 가지며,
    상기 키의 값은 상기 구성가능 특징부들 각각의 상기 다수의 구성들 중 하나의 구성에 대한 선택을 정의하는, 반도체 디바이스.
  2. 제1항에 있어서,
    상기 키는 복수의 서브-키를 포함하고,
    각 서브-키는 상기 복수의 구성가능 특징부들 중 하나의 특징부와 관련되고,
    각 서브-키의 값은 해당 서브-키와 관련된 상기 구성가능 특징부의 상기 다수의 구성들 중 하나의 구성에 대한 선택을 정의하는, 반도체 디바이스.
  3. 제1항에 있어서,
    상기 복수의 구성가능 특징부들은, 핀아웃 구성부, 상기 반도체 디바이스의 메모리의 메모리 매핑부, 테스트 엔트리 시퀀스부, 주변장치 세트 이용가능성부, 인터럽트 벡터 테이블 위치부, 및 SRAM 시작 위치부 중 적어도 하나의 구성을 포함하는, 반도체 디바이스.
  4. 제1항에 있어서,
    상기 전체 프로그램가능 키는 상기 반도체 디바이스의 추가 기능성부를 인에이블하는, 반도체 디바이스.
  5. 제4항에 있어서,
    상기 반도체 디바이스의 상기 추가 기능성부는, 논리 알고리즘이 상기 전체 프로그램가능 키에 적용되어서 얻어지는(resulting from) 값에 의해 인에이블되는, 반도체 디바이스.
  6. 제5항에 있어서,
    상기 논리 알고리즘은, 순환 중복검사 체크 또는 해쉬 기능을 포함하는, 반도체 디바이스.
  7. 제4항에 있어서,
    상기 전체 프로그램가능 키에 의해 전부 인에이블된(full enabled) 상기 추가 기능성부는, 메모리 어드레스 기능부 또는 코드 스크램블링 기능부인, 반도체 디바이스.
  8. 제1항에 있어서,
    상기 프로그램가능 키를 단 1회만 프로그램되게 할 수 있는 전자장비를 포함하는, 반도체 디바이스.
  9. 제8항에 있어서,
    상기 키를 기록하고 상기 키가 우발적으로 덮어쓰기되는 것을 방지하도록 구성된 액세스 디바이스를 포함하는, 반도체 디바이스.
  10. 제1항에 있어서,
    상기 프로그램가능 키는 프로그램되어 상기 보안 메모리에 저장되는, 반도체 디바이스.
  11. 접근가능 메모리, 보안 메모리, 구성 인터페이스부, 및 복수의 구성가능 특징부들 -각 구성가능 특징부는 다수의 선택가능 구성들을 가짐- 을 구비한 반도체 디바이스를 구성하기 위한 방법으로서:
    상기 반도체 디바이스에 제공된 상기 구성 인터페이스부를 이용하여 상기 보안 메모리의 키를 프로그램하는 것을 포함하고,
    상기 키의 값은 상기 구성가능 특징부들 각각의 상기 다수의 구성들 중 하나의 구성에 대한 선택을 정의하는, 반도체 디바이스 구성 방법.
  12. 제11항에 있어서,
    상기 키는 복수의 서브-키들을 포함하고,
    각 서브-키는 상기 복수의 구성가능 특징부들 중 하나의 특징부에 관련되고,
    각 서브-키의 값은 해당 서브-키와 관련된 상기 구성가능 특징부의 상기 다수의 구성들 중 하나의 구성에 대한 선택을 정의하는, 방법.
  13. 제11항에 있어서,
    상기 복수의 구성가능 특징부들은, 핀아웃 구성부, 상기 반도체 디바이스의 메모리의 메모리 매핑부, 테스트 엔트리 시퀀스부, 주변장치 세트 이용가능성부, 인터럽트 벡터 테이블 위치부, 및 SRAM 시작 위치부 중 적어도 하나의 구성을 포함하는, 방법.
  14. 제11항에 있어서,
    상기 전체 키는 상기 반도체 디바이스의 추가 기능성부를 인에이블하는, 방법.
  15. 제14항에 있어서,
    상기 반도체 디바이스의 상기 추가 기능성부를 인에이블시키는 값을 발생하기 위해, 논리 알고리즘을 상기 전체 키에 적용시키는 것을 포함하는, 방법.
  16. 제15항에 있어서,
    상기 논리 알고리즘은, 순환 중복제거 검사 또는 해쉬 기능을 포함하는, 방법.
  17. 제14항에 있어서,
    상기 전체 키에 의해 전부 인에이블된(full enabled) 상기 추가 기능성부는, 메모리 어드레스 기능부 또는 코드 스크램블링 기능부인, 방법.
  18. 제11항에 있어서,
    상기 디바이스는 상기 키가 1회 초과하여 프로그램될 수 없게 하는, 방법.
  19. 제11항에 있어서,
    상기 디바이스는, 상기 키를 기록하고 상기 키가 우발적으로 덮어쓰기되는 것을 방지하기 위한 액세스 디바이스를 이용하여, 상기 키가 1회 초과하여 프로그램될 수 없게 하는, 방법.
KR1020157023688A 2013-03-14 2014-02-28 프로그램가능 디바이스의 개인화 구성 KR20150129694A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361780994P 2013-03-14 2013-03-14
US61/780,994 2013-03-14
US14/181,971 US9754133B2 (en) 2013-03-14 2014-02-17 Programmable device personalization
US14/181,971 2014-02-17
PCT/US2014/019316 WO2014158692A1 (en) 2013-03-14 2014-02-28 Programmable device personalization

Publications (1)

Publication Number Publication Date
KR20150129694A true KR20150129694A (ko) 2015-11-20

Family

ID=50336529

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157023688A KR20150129694A (ko) 2013-03-14 2014-02-28 프로그램가능 디바이스의 개인화 구성

Country Status (6)

Country Link
US (1) US9754133B2 (ko)
EP (1) EP2973197B1 (ko)
KR (1) KR20150129694A (ko)
CN (1) CN105190642B (ko)
TW (1) TWI641967B (ko)
WO (1) WO2014158692A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017174788A1 (en) * 2016-04-07 2017-10-12 Nagravision Sa Flexible cryptographic device
US10959635B2 (en) 2017-10-02 2021-03-30 Biosense Webster (Israel) Ltd. Random pinout catheter

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122704A (en) 1989-05-15 2000-09-19 Dallas Semiconductor Corp. Integrated circuit for identifying an item via a serial port
US5619066A (en) 1990-05-15 1997-04-08 Dallas Semiconductor Corporation Memory for an electronic token
US5434562A (en) * 1991-09-06 1995-07-18 Reardon; David C. Method for limiting computer access to peripheral devices
WO1993010498A1 (en) * 1991-11-12 1993-05-27 Microchip Technology Inc. Security for on-chip microcontroller memory
US5812848A (en) * 1995-08-23 1998-09-22 Symantec Corporation Subclassing system for computer that operates with portable-executable (PE) modules
US5611042A (en) * 1995-10-10 1997-03-11 Lordi; Angela L. Data error detection and correction for a shared SRAM
US6005814A (en) * 1998-04-03 1999-12-21 Cypress Semiconductor Corporation Test mode entrance through clocked addresses
US7681043B1 (en) * 2002-05-08 2010-03-16 Broadcom Corporation System and method for configuring device features via programmable memory
US6480948B1 (en) * 1999-06-24 2002-11-12 Cirrus Logic, Inc. Configurable system memory map
US6496971B1 (en) * 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US6775776B1 (en) * 2000-06-27 2004-08-10 Intel Corporation Biometric-based authentication in a nonvolatile memory device
US8176296B2 (en) * 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US7117373B1 (en) * 2000-11-28 2006-10-03 Xilinx, Inc. Bitstream for configuring a PLD with encrypted design data
US6931543B1 (en) * 2000-11-28 2005-08-16 Xilinx, Inc. Programmable logic device with decryption algorithm and decryption key
JP2002278839A (ja) 2001-03-15 2002-09-27 Sony Corp データアクセス管理システム、メモリ搭載デバイス、およびデータアクセス管理方法、並びにプログラム記憶媒体
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US8051303B2 (en) * 2002-06-10 2011-11-01 Hewlett-Packard Development Company, L.P. Secure read and write access to configuration registers in computer devices
US6788097B1 (en) * 2003-04-30 2004-09-07 Xilinx, Inc. Security improvements for programmable devices
EP1859289A4 (en) * 2005-03-16 2011-03-30 Gaterocket Inc FPGA MATRIX EMULATION SYSTEM
EP1748343A1 (en) * 2005-07-29 2007-01-31 STMicroelectronics Limited Circuit personalisation
IL171963A0 (en) * 2005-11-14 2006-04-10 Nds Ltd Secure read-write storage device
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
US7800919B2 (en) * 2006-03-24 2010-09-21 Rockwell Automation Technologies, Inc. Programmable routing module
US7675313B1 (en) * 2006-08-03 2010-03-09 Lattice Semiconductor Corporation Methods and systems for storing a security key using programmable fuses
US8024579B2 (en) * 2006-12-29 2011-09-20 Lenovo (Singapore) Pte Ltd. Authenticating suspect data using key tables
US8555015B2 (en) * 2008-10-23 2013-10-08 Maxim Integrated Products, Inc. Multi-layer content protecting microcontroller
US20110154061A1 (en) * 2009-12-21 2011-06-23 Babu Chilukuri Data secure memory/storage control
US20120060039A1 (en) * 2010-03-05 2012-03-08 Maxlinear, Inc. Code Download and Firewall for Embedded Secure Application
EP2506176A1 (en) * 2011-03-30 2012-10-03 Irdeto Corporate B.V. Establishing unique key during chip manufacturing

Also Published As

Publication number Publication date
TWI641967B (zh) 2018-11-21
WO2014158692A1 (en) 2014-10-02
EP2973197B1 (en) 2020-04-01
CN105190642A (zh) 2015-12-23
US20160085997A9 (en) 2016-03-24
US9754133B2 (en) 2017-09-05
TW201443691A (zh) 2014-11-16
EP2973197A1 (en) 2016-01-20
US20150235057A1 (en) 2015-08-20
CN105190642B (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
US8572410B1 (en) Virtualized protected storage
EP1785902B1 (en) Decryption key table access control on ASIC or ASSP
US20090196418A1 (en) Encryption Apparatus with Diverse Key Retention Schemes
GB2303721A (en) Safeguarding hard drive data
CN105389265B (zh) 当加密参数改变时在垃圾数据上生成零内容的方法和装置
EP3561705B1 (en) Secure activation of functionality in a data processing system using iteratively derived keys
US11582033B2 (en) Cryptographic management of lifecycle states
US9754133B2 (en) Programmable device personalization
EP3435586B1 (en) Method to reduce aging of a cache memory
US20100138916A1 (en) Apparatus and Method for Secure Administrator Access to Networked Machines
JP5759827B2 (ja) メモリシステム、情報処理装置、メモリ装置、およびメモリシステムの動作方法
JP2000235523A (ja) 電子式データ処理用回路装置
JP5798007B2 (ja) マイクロコンピュータおよびデータ処理装置
CN110032529B (zh) 一种内存管理方法及相关装置
JP2000250815A (ja) 電子メモリおよびこのようなメモリを備えた電子デバイス
JPH04287124A (ja) 計算機システムにおけるソフトウェア無断使用禁止方法およびその装置
JP2017108293A (ja) 半導体集積回路装置およびデータ処理装置
JP2007515027A (ja) メモリの状態情報を記憶および/または変更するための方法、集積回路およびデータ記憶媒体
CN112149185A (zh) 安全微处理器的存储器的修改
JP2013073472A (ja) マイクロコンピュータ
JP2004220403A (ja) 携帯可能情報記録媒体
JP2007334729A (ja) 制御装置
JP2016045795A (ja) 不揮発性メモリ初期化システム及び不揮発性メモリ初期化方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application