KR20110034631A - 테스트 동작모드 동안 집적회로 상의 디지털 정보를 보호하기 위한 장치 및 방법 - Google Patents

테스트 동작모드 동안 집적회로 상의 디지털 정보를 보호하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20110034631A
KR20110034631A KR1020117000172A KR20117000172A KR20110034631A KR 20110034631 A KR20110034631 A KR 20110034631A KR 1020117000172 A KR1020117000172 A KR 1020117000172A KR 20117000172 A KR20117000172 A KR 20117000172A KR 20110034631 A KR20110034631 A KR 20110034631A
Authority
KR
South Korea
Prior art keywords
test
mode
integrated circuit
registers
control logic
Prior art date
Application number
KR1020117000172A
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 KR20110034631A publication Critical patent/KR20110034631A/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318555Control logic
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/30Accessing single arrays
    • G11C2029/3202Scan chain

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Storage Device Security (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

본 발명의 실시예들은 테스트를 위한 설계(DFT) 혹은 다른 테스트 모드 공격으로부터 IC를 보호한다. 레지스터, 래치, RAM 등에 저장되는 임시적인 비밀들 및/또는 ROM 및/또는 PROM 등에 저장되는 영속적인 비밀들이 보호된다. IC 상의 정보를 보호하는 일실시예는, 테스트 모드로 진입하는 단계와 상기 테스트 모드로 진입하는 것에 응답하여 그리고 테스트 모드 커맨드를 수신하기 전에, 각각의 레지스터들을 리셋팅하는 단계를 포함한다. 집적회로 일실시예는, 집적회로를 테스트 모드로 설정하며 그리고 테스트 모드에서 집적회로를 제어하도록 된 테스트 제어 로직, 레지스터들의 세트, 및 상기 테스트 제어 로직 및 상기 레지스터들의 세트에 접속되며, 그리고 상기 테스트 제어 로직으로부터 리셋 커맨드를 수신하고 그리고 상기 테스트 모드로 진입하기 위한 커맨드에 응답하여 상기 리셋 커맨드를 레지스터들의 상기 세트에 제공하도록 된 기능 리셋 제어기를 포함한다.

Description

테스트 동작모드 동안 집적회로 상의 디지털 정보를 보호하기 위한 장치 및 방법{METHOD AND APPARATUS FOR SECURING DIGITAL INFORMATION ON AN INTEGRATED CIRCUIT DURING TEST OPERATING MODES}
관련 출원들에 대한 상호-참조
본 출원은, 본 출원과 함께 출원중인 "Method and Apparatus For Securing Digital Information On An Integrated Circuit Read Only Memory During Test Operating Modes" 라는 명칭의 미국출원(대리인 문서번호 00100.07.0125)과 관련되며, 상기 관련 출원은 본 출원과 함께 ATI Technologies ULC 에 양도되었다.
일반적으로, 본 발명은 집적회로(IC) 분야 및 가령, 테스트를 위한 설계(Design for Test : DFT) 모드를 포함하는 테스트 모드들과 같은 IC의 다양한 동작 모드 분야에 관한 것이다. 또한, 본 발명은 IC 내에 포함된 암호화 키, 패스워드 및 다른 정보에도 관련되며, 좀더 상세하게는 DFT 혹은 유사한 테스트 모드에서 IC를 동작시킴으로 인한 액세스로부터 상기 암호화키, 패스워드 및 다른 정보를 보호하는 방법 및 장치에 관한 것이다.
전자 디바이스의 동작을 위해 요구될 수 있는 디지털 콘텐츠와 다른 정보의 보호는, 집적회로(IC) 상의 다양한 위치들에 저장된 암호화 키와 패스워드에 의해 종종 용이해진다. 인가된 사용자가 아닌 다른 누군가에 의한 상기 키에 대한 액세스 혹은 심지어 인가된 사용자 그 자신의 액세스는, 저작권으로 보호되는(copyrighted) 혹은 다른 방법으로 보호되는 디지털 내용물의 도난 혹은 무단이용(misappropriation)을 야기할 수 있다. 또한, 보호되는 디지털 콘텐츠 혹은 다른 비밀 정보는 전술한 암호화 키를 이용하여 종종 디코딩 혹은 해독되며, 그리고 IC에 의해서 메모리 내에 혹은 레지스터 위치에 일시적으로 저장된다. 메모리 혹은 레지스터에 대한 액세스는 또한, 인가되지 않은(혹은, 비인가) 사용자에 의한 콘텐츠 도난 혹은 무단이용을 야기할 수 있다.
현재, 보호되는 디지털 콘텐츠를 불법적으로 획득하고자 하는 시도들이 성행하고 있는바, 이 경우 IC 내부 레지스터들 및 메모리에 대한 액세스를 시도함으로써, 인가되지 않은 사용자는 보호되는 디지털 내용물에 대해 IC 레벨에서 액세스를 시도할 수 있다. 이러한 공격들은 IC 설계 그 자체를 활용하며 그리고 가령, 테스트를 위한 설계 모드(Design for Test mode)라고 알려진 동작 모드 등과 같은 통합된 IC 테스트 피처들을 이용하려 한다. 따라서, Design-for-Test 공격들(DFT 공격)은 정보 보안 분야에서 새로운 걱정거리가 되어 왔으며, 그리고 정적 랜덤 액세스 메모리(SRAM), 판독 전용 메모리(ROM), 프로그램가능 판독 전용 메모리(PROM), 레지스터, 및 플립 플롭 등과 같은 다양한 IC 부분들의 정보 보안을 위협하고 있다.
최근에 제안된 방법들은 DFT 공격으로부터 레지스터들 및 래치들의 보호하고자 시도해 왔다. 레지스터를 보호하기 위해 최근에 제안된 이러한 방법들 중 하나는, "비밀-포함(secret-bearing)" 레지스터들을 열거하고(enumerate) 그리고 이들을 DFT 프로세스로부터 배제하는 것이다. 하지만, 상기 방법은 몇가지 심각한 단점들을 갖는다. 첫째로, 상기 방법은 레지스터들을 배제하므로, DFT를 위한 테스트 범위가 감소되며 따라서 전체 IC 수율이 감소된다. 두번째로, 상기 방법은 에러가 발생하기 쉽다. 왜나하면, 상기 방법에서는 설계자가 "비밀-포함" 레지스터들을 식별하고 그리고 이들 "비밀-포함" 레지스터들을 수동으로 제거할 것을 요구하고 있으며, 또한 특정한 비밀-포함 레지스터들을 정확하게 식별하는 것은 매우 어려울 뿐만 아니라 어떤 경우에는 불가능하기 때문이다. 세번째로, 상기 방법은 비밀 정보가 메모리가 아니라 레지스터 내에만 포함된다고 가정한다.
제안된 다른 방법은, 서로 다른 레지스터들의 내용물들이 의사 랜덤 방식(pseudo random fashion)으로 함께 멀티플렉싱되는 난독화(obfuscation)에 기초한다. 하지만, 이 방법에서는 특화된 DFT 알고리즘을 필요로 하는데, 이 알고리즘은 산업 표준의 컴퓨터 이용 설계(computer-aided design) 툴에서 지원되지 않는 다라는 점에서, 이 방법 역시 단점을 갖는다. 상기 방법의 두번째 단점은 난독화의 신뢰성인데, 난독화는 해커에 의해서 역-설계(reverse-engineering) 될 수도 있다.
따라서, Design-for-Test 공격 혹은 IC 테스트 모드를 이용하는 유사한 공격들과 같은 IC 동작 모드 공격들을 채용하여 비인가 사용자에 의해 시도되는 액세스로부터 보호 정보를 안전하게 할 수 있는 방법 및 장치에 관한 요구가 존재한다.
본 명세서에 개시된 다양한 실시예들은 IC를 테스트 동작모드에서 사용함에 따른 액세스로부터 IC 상의 비밀 정보를 보호한다. 예를 들면, 본 명세서에 개시된 다양한 실시예들은 테스트를 위한 설계(Design for Test : DFT) 공격으로부터 IC를 보호한다. 본 발명의 실시예들은 레지스터들 혹은 래치들에 저장된 임시적인 비밀들, RAM에 저장된 임시적인 비밀들, 판독 전용 메모리(ROM)에 저장된 영속적인 비밀들 및/또는 가령, 온-칩 퓨즈(on-chip fuse)와 같은 프로그램가능 ROM(PROM)에 저장된 영속적인 비밀들을 보호한다.
본 명세서에 개시된 집적회로 상의 정보를 보호하는 방법은, 테스트 동작모드(test mode of operation)로 진입하는 단계 및 상기 테스트 동작모드에 진입하는 것에 응답하여 그리고 테스트 모드 커맨드를 수신하기 전에, 레지스터들의 세트의 각각의 레지스터들을 리셋팅하는 단계를 포함한다. 상기 방법은 또한, 스캔 모드로 진입하기 위한 커맨드를 수신하는 단계, 레지스터들의 상기 세트를 하나 이상의 스캔 체인으로 구성하는 단계, 스캔 동작을 수행하는 단계, 상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하는 단계, 그리고 상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하는 것에 응답하여 그리고 기능 모드로 진입하기 전에, 레지스터들의 상기 세트의 각각의 레지스터를 테스트 제어 로직을 통해 리셋팅하는 단계를 포함할 수 있다. 상기 리셋팅하는 방법은 디바이스 내의 기능 리셋 제어기(Functional Reset Controller : FRC)에 의해 제공되는 리셋 커맨드를 통해 수행될 수 있다. 상기 방법은 또한, 플립 플롭들을 리셋팅하는 단계를 포함할 수 있으며, 그리고 상기 방법은 또한, 테스트 동작 모드로 진입하는 것에 응답하여 그리고 RAM 판독 커맨드를 초기에 차단한 후, 알려진 비트 패턴을 랜덤 액세스 메모리(RAM)의 모든 위치들에 기입(write)하는 단계, 그리고 알려진 비트 패턴을 기입한 후에 후속 RAM 판독 커맨드들을 허용하는 단계를 포함할 수 있다.
집적회로 상의 정보를 보호하는 다른 방법은, 테스트 동작모드(test mode of operation)로 진입하는 단계, 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드(functional mode of operation)에서 동작했었는지를 상기 테스트 동작모드로 진입하는 것에 응답하여 판별하는 단계, 그리고 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 상기 기능 동작모드에서 동작했었다는 판별에 응답하여, 상기 테스트 동작모드 시에 랜덤 액세스 메모리(RAM) 판독 커맨드를 차단하는 단계를 포함한다. 상기 방법은 또한, 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드에서 동작했었는지를 판별하는 단계를 포함하며, 상기 테스트 동작모드로 진입하는 것에 응답하여, 레지스터들의 세트가 암호화된 데이터를 포함하는지를 판별하는 단계를 더 포함하며, 여기서 레지스터들의 상기 세트는 스캔 체인 구성과는 별도이다.
집적회로 상의 정보를 보호하는 또 다른 방법은, 테스트 동작모드로 진입하는 단계, 판독 전용 메모리(ROM) 판독 커맨드를 수신하는 단계, 상기 ROM 판독 커맨드를 수신하는 것에 응답하여, 복수의 ROM 어드레스 위치들로부터의 데이터를 암호화 로직에 기입하는 단계, 그리고 상기 암호화 로직의 암호화 로직 출력을 테스트 제어 로직에 기입하는 단계를 포함하며, 상기 암호화 로직 출력은 상기 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타낸다. 상기 방법은 또한, 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 암호화 로직에 기입하는 단계를 더 포함할 수 있으며, 상기 방법은 또한, ROM 판독 커맨드에 응답하여 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 다중 입력 쉬프트 레지스터(MISR)에 기입하는 단계, 그리고 MISR 출력을 테스트 제어 로직에 기입하는 단계를 포함하며, MISR 출력은 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타낸다.
집적회로 상의 정보를 보호하는 또 다른 방법은, 테스트 동작모드로 진입하는 단계, 테스트 모드로 진입하는 것에 후속하여 PROM 판독 커맨드를 수신하는 단계, 상기 PROM 판독 커맨드는 판독 어드레스를 특정하며, 상기 판독 어드레스가 비밀 정보를 가리키고 있는지를 판별하는 단계 그리고 PROM 판독 커맨드에 응답하여 양성(benign)의 출력 패턴을 제공하는 단계를 포함한다. 여기서, 판독 어드레스가 비밀 정보를 가리키는지를 판별하는 상기 방법은 하나 이상의 PROM 어드레스 위치를 판독하는 단계와, PROM 어드레스 위치는 비밀 정보가 PROM 내의 어디에 저장되는지를 식별하며, 그리고 PROM 어드레스 위치를 PROM 보호 레지스터에 저장하는 단계를 포함할 수 있다.
집적회로 상의 정보를 보호하는 또 다른 방법은, 테스트 동작모드로 진입하는 단계, 상기 테스트 동작모드로 진입하는 것에 응답하여 그리고 테스트 모드 커맨드를 수신하기 이전에, 레지스터들의 세트의 각각의 레지스터를 리셋팅하는 단계, 상기 테스트 동작모드로 진입하는 것에 응답하여, 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드에서 동작했었는지를 판별하는 단계, 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 상기 기능 동작모드에서 동작했었다는 판별에 응답하여, 상기 테스트 동작모드 시에 랜덤 액세스 메모리(RAM) 판독 커맨드를 차단하는 단계, 판독 전용 메모리(ROM) 판독 커맨드를 수신하는 단계, 상기 ROM 판독 커맨드를 수신하는 것에 응답하여, 복수의 ROM 어드레스 위치들로부터의 데이터를 암호화 로직에 기입하는 단계, 상기 암호화 로직의 암호화 로직 출력을 테스트 제어 로직에 기입하는 단계, 상기 암호화 로직 출력은 상기 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타내며, 테스트 동작모드로 진입하는 것에 후속하여, 프로그램가능한 판독 전용 메모리(PROM) 판독 커맨드를 수신하는 단계, 상기 PROM 판독 커맨드는 판독 어드레스를 특정하며, 상기 판독 어드레스가 비밀 정보를 가리키고 있는지를 판별하는 단계, 및 상기 PROM 판독 커맨드에 응답하여 양성(benign)의 출력 패턴을 제공하는 단계를 포함한다.
본 명세서에 개시된 집적회로는, 집적회로를 테스트 모드로 설정하며 그리고 상기 테스트 모드에서 상기 집적회로를 제어하도록 된 테스트 제어 로직, 레지스터들의 세트, 그리고 상기 테스트 제어 로직 및 상기 레지스터들의 세트에 접속되며, 그리고 상기 테스트 제어 로직으로부터 리셋 커맨드를 수신하고 그리고 상기 테스트 모드로 진입하기 위한 커맨드에 응답하여 상기 리셋 커맨드를 레지스터들의 상기 세트에 제공하도록 된 기능 리셋 제어기를 포함한다. 집적회로 테스트 제어 로직은 또한, 스캔 모드로 진입하기 위한 커맨드를 수신하고, 스캔 모드로 진입하기 위한 커맨드에 응답하여 레지스터들의 상기 세트를 하나 이상의 스캔 체인으로 구성하고, 상기 하나 이상의 스캔 체인에 대해 스캔 동작을 수행하고, 상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하고, 상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하는 것에 응답하여 그리고 기능 모드로 진입하기 전에, 레지스터들의 상기 세트의 각각의 레지스터를 리셋팅하도록 동작할 수 있다.
본 명세서에 개시된 또 다른 집적회로는, 하나 이상의 랜덤 액세스 메모리(RAM), 상기 하나 이상의 RAM에 접속되는 테스트 제어 로직을 포함하며, 상기 테스트 제어 로직은, 상기 집적회로를 테스트 모드로 설정하며 그리고 상기 테스트 모드에서 상기 집적회로를 제어하며, 상기 테스트 모드로 진입하는 것에 응답하여, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 기능 모드(functional mode)에서 동작했었는지를 판별하며, 및 상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었다는 판별에 응답하여, 상기 테스트 모드 시에 RAM 판독 커맨드를 차단하도록 동작할 수 있다. 상기 집적회로는 또한, 상기 테스트 제어 로직에 접속되며 상기 테스트 모드의 스캔 체인 구성과는 별도인 레지스터들의 세트를 더 포함하며, 상기 테스트 제어 로직은, 또한, 상기 테스트 모드로 진입하는 것에 응답하여 레지스터들의 상기 세트가 선험적으로 알려진 데이터를 포함하는지를 판별함으로써, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었는지를 판별하도록 동작할 수 있다.
본 명세서에 개시된 또 다른 집적회로는, 하나 이상의 판독 전용 메모리(ROM), 암호화 로직, 및 하나 이상의 ROM 및 암호화 로직에 접속되는 테스트 제어 로직을 포함하며, 테스트 제어 로직은 집적회로를 테스트 모드로 설정하고, ROM 판독 커맨드를 수신하고, 상기 ROM 판독 커맨드를 수신하는 것에 응답하여 복수의 ROM 어드레스 위치들로부터의 데이터를 암호화 로직에 기입하고, 그리고 암호화 로직의 암호화 로직 출력을 테스트 제어 로직에 기입하도록 동작하며, 상기 암호화 로직 출력은 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타낸다. 집적회로 암호화 로직은 또한, 테스트 제어 로직에 접속되는 하나 이상의 다중 입력 쉬프트 레지스터(MISR)를 포함할 수 있으며, 테스트 제어 로직은 ROM 판독 커맨드에 응답하여 복수의 ROM 어드레스 위치들로부터의 데이터를 하나 이상의 MISR에 기입하고, 그리고 MISR 출력을 테스트 제어 로직에 기입하도록 동작하며, MISR 출력은 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타낸다.
본 명세서에 개시된 또 다른 집적회로는, 하나 이상의 프로그램가능 판독 전용 메모리(PROM), 하나 이상의 PROM에 접속되는 테스트 제어 로직을 포함하며, 상기 테스트 제어 로직은, 집적회로를 테스트 모드로 설정하며 그리고 테스트 모드에서 집적회로를 제어하며, 테스트 모드로 진입하는 것에 후속하여 PROM 판독 커맨드를 수신하고, 상기 PROM 판독 커맨드는 판독 어드레스를 특정하며, 상기 판독 어드레스가 비밀 정보를 가리키고 있는지를 판별하며; 그리고 상기 PROM 판독 커맨드에 응답하여 양성(benign)의 출력 패턴을 제공하도록 동작한다. 상기 집적회로는 또한, 하나 이상의 PROM에 접속되는 PROM 액세스 로직, 상기 하나 이상의 PROM과 PROM 액세스 로직에 접속되는 PROM 보호 레지스터, PROM 보호 레지스터, 하나 이상의 PROM, 및 테스트 제어 로직에 접속되는 PROM 보호 레지스터 제어기를 포함하며, 테스트 제어 로직은 또한, PROM 액세스 로직에게 제어 신호를 전송함으로써, 상기 판독 어드레스가 비밀 정보를 가리키는지를 판별하도록 동작하며, PROM 액세스 로직은 하나 이상의 PROM 어드레스 위치를 판독하며, PROM 어드레스 위치는 비밀 정보가 PROM 내의 어디에 저장되는지를 식별하며, 그리고 PROM 어드레스 위치를 PROM 보호 레지스터에 저장하도록 동작한다.
본 명세서에 개시된 또 다른 집적회로는, 상기 집적회로를 테스트 모드로 설정하며 그리고 상기 테스트 모드에서 상기 집적회로를 제어하도록 된 테스트 제어 로직, 레지스터들의 세트, 상기 테스트 제어 로직 및 레지스터들의 상기 세트에 접속되며, 그리고 상기 테스트 제어 로직으로부터 리셋 커맨드를 수신하고 그리고 상기 테스트 모드로 진입하기 위한 커맨드에 응답하여 상기 리셋 커맨드를 레지스터들의 상기 세트에 제공하도록 된 기능 리셋 제어기, 상기 테스트 제어 로직에 접속되는 하나 이상의 랜덤 액세스 메모리(RAM), 상기 테스트 제어 로직에 접속되는 하나 이상의 판독 전용 메모리(ROM), 상기 테스트 제어 로직에 접속되는 암호화 로직; 및 상기 테스트 제어 로직에 접속되는 하나 이상의 프로그램가능 판독 전용 메모리(PROM)를 포함하며, 상기 테스트 제어 로직은 또한, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 기능 모드에서 동작했었는지를 상기 테스트 모드로 진입하는 것에 응답하여 판별하고, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었다는 판별에 응답하여, 상기 테스트 모드 시에 RAM 판독 커맨드를 차단하고, ROM 판독 커맨드를 수신하고, 상기 ROM 판독 커맨드를 수신하는 것에 응답하여 복수의 ROM 어드레스 위치들로부터의 데이터를 상기 암호화 로직에 기입하고, 상기 암호화 로직의 암호화 로직 출력을 수신하고, 상기 암호화 로직 출력은 상기 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타내며, 상기 테스트 모드로 진입하는 것에 후속하여 PROM 판독 커맨드를 수신하고, 상기 PROM 판독 커맨드는 판독 어드레스를 특정하며, 상기 판독 어드레스가 비밀 정보를 가리키고 있는지를 판별하며, 그리고 상기 PROM 판독 커맨드에 응답하여 양성(benign)의 출력 패턴을 제공하도록 동작한다.
도1은 본 발명의 일실시예에 따른 집적회로의 블록도이다.
도2는 본 발명의 일실시예에 따라 테스트 모드에 있으며 그리고 스캔 체인을 갖는 집적회로의 블록도이다.
도3은 레지스터 데이터를 보호하기 위한 일실시예의 동작 방법에 관한 순서도이다.
도4는 본 발명의 일실시예에 따라 레지스터 데이터를 보호하기 위한 방법의 더 상세한 내용을 제공하는 순서도이다.
도5는 IC의 다양한 위치들, 특히 도5의 레지스터 및 RAM에서 데이터를 보호하기 위한 실시예의 세부 동작을 예시한 순서도이다.
도6은 도5에 이어서 IC의 다양한 위치들에서 데이터를 보호하고 그리고 PROM을 보호하기 위한 실시예의 세부 동작을 예시한 순서도이다.
도7은 도5에 이어서 IC의 다양한 위치들에서 데이터를 보호하고 그리고 RAM을 보호하기 위한 실시예의 세부 동작을 예시한 순서도이다.
도8은 도5에 이어서 IC의 다양한 위치들에서 데이터를 보호하고 그리고 ROM을 보호하기 위한 실시예의 세부 동작을 예시한 순서도이다.
도9는 RAM을 보호하기 위한 대안 실시예의 세부 동작을 예시한 순서도이다.
도10은 RAM을 보호하기 위한 실시예의 동작을 예시한 순서도이다.
도11은 RAM을 보호하기 위한 실시예의 추가 세부사항들을 예시한 순서도이다.
도12는 본 발명의 일실시예에 따른 집적회로 PROM 보호의 블록도이다.
도13은 도12에 도시된 실시예의 동작 방법을 예시한 순서도이다.
도14는 본 발명의 일실시예에 따른 집적회로 ROM 보호의 블록도이다.
도15는 도14에 도시된 실시예의 동작 방법을 예시한 순서도이다.
도16은 ROM 보호를 위한 대안적인 실시예의 순서도이다.
도17은 일실시예에 따라 집적회로를 동작시키는 방법의 순서도이다.
이제, 유사한 도면부호들은 유사한 구성요소들을 나타내는 도면들을 참조하면, 도1은 본 발명의 일실시예 따른 예시적인 집적회로(IC)(100)의 블록도이다. IC(100)는 하나의 전자 디바이스(101)에 통합될 수도 있으며, 전자 디바이스(101)는 안테나(103)를 통해 통신하는 무선 통신 디바이스, PDA, 랩탑 컴퓨터, 데스크탑 컴퓨터, 등등과 같은 임의의 적절한 전자 디바이스가 될 수 있지만, 이에 한정되는 것은 아니다. IC(100) 내부 회로들은 2개의 논리 도메인들로 분류될 수 있는바, 하나는 기능 도메인(Functional Domain)(104)이고 다른 하나는 테스트 도메인(Test Domain)(105)이다. 기능 도메인(104)은, 예컨대, 기능 블록(133) 내지 기능 블록(135) 및 다양한 메모리들과 같이, IC(100)의 정상 동작을 위해 요구되는 모든 회로들 및/또는 구성요소들을 포함한다. 기능 블록(133) 내지 기능 블록(135)은 IC(100)의 동작을 위해 필요한 다양한 레지스터들, 플립 플롭들, 래치들 및/또는 논리 게이트들을 포함할 수 있다. 다양한 메모리들은, 가령, 정적 RAM 메모리(123), 판독 전용 메모리(ROM)(125), 그리고 프로그램가능 ROM(PROM)(127) 등과 같은 랜덤 액세스 메모리(RAM)를 포함할 수 있다.
기능 리셋 제어기(107)는 다양한 기능 블록들(133 내지 135)에 접속되며 그리고 리셋 트리(Reset Tree)(109)라고 알려진 논리 구조를 통해 기능 도메인(104) 내의 모든 기능 블록들에게 리셋 신호를 제공한다. 예를 들어, 상기 리셋 신호는, 기능 블록들(133 내지 135)의 각각의 레지스터의 내용물을 소거하는데 이용될 수 있으며 그리고 각 레지스터의 상태를 IC(100) 설계자에 의해 결정될 수도 있는 공지의 값으로 강제하는데 이용될 수 있다. 상기 리셋 신호는, 동작의 개시 이전에 모든 레지스터들을 리셋시키기에 충분한 기간 동안, 기능 리셋 제어기(107)에 의해 리셋 트리(109)에 인가된다.
기능 블록들(133 내지 135)과 이에 포함된 임의의 레지스터들, 플립 플롭들, 래치들 등등은, 기능 블록들에게 타이밍 신호를 제공하기 위한 대응 클록들(미도시)에게 접속된다. 또한, 상기 클록들은 다양한 클록 트리(136)에 더 연결될 수 있으며, 클록 트리는 클록 제어기(137)에 또한 접속된다. 클록 제어기(137)는 기능 도메인(104) 내에 제공되며, 그리고 적절한 동작을 보장하기 위해서 IC(100)의 모든 동기 구성요소들에게 다양한 클록 신호들을 생성 및/또는 라우팅하도록 동작하며, 그리고 동기 신호를 제공함으로써 클록 트리(136)에 연결된 모든 클록들을 동기화시킨다. 또한, 몇몇 실시예에서 클록 제어기(137)와 클록 트리(136)는 테스트 도메인(105)에서 작동할 수도 있다.
IC(100)는 데이터를 수신하고 그리고 데이터를 출력하기 위한, 쓰기 기능 입력 패드(write functional input pad)(119)와 읽기 기능 출력 패드(read functional output pad)(121)를 각각 포함한다. 쓰기 기능 입력 패드(119)와 읽기 기능 출력 패드(121)는 전자 디바이스(101)의 추가적인 내부 회로(미도시)에 접속될 수도 있으며, 여기서 내부 회로는 입력들과 출력들을 예컨대, 전자 디바이스(101)의 물리적 연결 포트에 제공할 수 있어, 상기 IC(100)는 외부 연결로/외부 연결로부터 데이터를 판독(read) 및 기입(write)할 수 있다. 몇몇 실시예에서, IC(100)는 쓰기 기능 입력 패드(119)와 읽기 기능 출력 패드(121)를 통해, 전자 디바이스(101)의 물리적인 입력/출력 연결부에 직접 연결될 수도 있다.
몇몇 실시예에서는 테스트를 위한 설계(Design-for-Test : DFT) 동작 모드에 대응될 수 있는, IC(100) 테스트 도메인(105)에서는, 정상적인 IC(100) 동작 동안에는 활성화되지 않을 수 있거나 혹은 동작되지 않을 수 있는 다양한 다른 구성요소들이 활성화된다. 예를 들어, 테스트 도메인(105)은 테스트 제어 로직(106)을 포함하는바, 이는 IC(100)를 테스트 모드에 있게하고 그리고 테스트 모드 동안 IC를 제어한다. 테스트 제어 로직(106)은 하나 이상의 제어라인들(115)을 통하여 테스트 도메인(105)을 제어하는바, 테스트 제어 로직(106)은 하나 이상의 제어라인들(115)을 통하여 커맨드를 전송하고 그리고 기능 도메인(104)의 다양한 구성요소들(예컨대, 기능 블록들 133 내지 135을 들 수 있지만 이에 한정되는 것은 아님)로부터 응답을 수신한다. 상기 기능 블록들(133 내지 135)은 다양한 레지스터, 플립 플롭, 래치, 논리 게이트 등등을 포함한다. 테스트 제어 로직(106)은 또한, 클록 제어 신호 라인(139)을 통해 클록 제어기(137)에 접속되며 그리고 다양한 클록들을 활성화 및 정지시키는 커맨드들을 클록 제어기(137)로 전송하도록 동작하여, 클록 제어기(137)로 하여금 이에 응답하여 클록 트리(136)에 연결된 모든 클록들에게 동기화 클록 신호, 혹은 신호들을 제공하게 하거나 혹은 보유하게 한다.
테스트 제어 로직(106)은 테스트 제어 신호 입력 및 출력 포트(117)에 접속되는바, 이는 IC(100)의 하나 이상의 핀에 대응할 수 있다. 상기 테스트 제어 신호 입력 및 출력 포트(117)는 DFT 입력 및 출력 포트가 될 수 있다. 상기 테스트 제어 신호 입력 및 출력 포트(117)는, 테스팅 기능들에 대한 액세스를 제공하기 위해서, 전자 디바이스(101)의 상의 대응 커넥터에 또한 접속될 수도 있다. 하지만, 몇몇 실시예에서는, 테스트 제어 신호 입력 및 출력 포트(117)와 인터페이스하기 위해서는, IC(100) 그 자체가 혹은 전자 디바이스(101)의 내부 회로 기판(IC(100)를 포함하고 있는)가 직접 액세스되어야만 한다. 따라서, 임의의 경우에서, 악의있는 사용자 혹은 해커가 테스트 제어 신호 입력 및 출력 포트(117)에 액세스함으로써, 테스트 제어 로직(106)에 액세스를 시도할 수 있는 잠재적인 위험이 존재한다. 달리 말하면, 몇몇 경우에 있어서, 해커는 IC(100) 테스트 기능들에 대한 액세스를 획득하기 위하여 전자 디바이스(101)를 부분적으로 분해할 필요가 있을 수도 있다. 예컨대, 디바이스를 분해하거나 혹은 물리적인 연결을 통한 액세스에 의해서, 해커에 의해 획득될 수 있는 테스트 제어 로직(106)에 대한 임의 유형의 액세스는, 본 명세서에 개시된 다양한 실시예들에 의해 방지된다.
테스트 제어 로직(106)은 예컨대, TC(108)와 같은 하나 이상의 테스트 제어기(Test Controller : TC)를 포함할 수 있으며, 그리고 예컨대, MTC(110)와 같은 하나 이상의 메모리 테스트 제어기(Memory Test Controller : MTC)를 더 포함할 수 있다. 몇몇 실시예에서, MTC(110)와 같은 하나 이상의 MTC들은 기능 도메인(104) 내에 위치될 수도 있다. 테스트 제어 로직은 RAM(123), ROM(125), 및 PROM(127)을 포함하는 다양한 메모리들로/로부터 커맨드들을 전송하고 그리고 데이터를 수신하기 위한 다양한 제어 라인들(129)을 갖는다. 몇몇 실시예에서, 상기 MTC(110)는 제어 라인들(129)을 이용하여 하나 이상의 메모리들과 통신할 것이며 그리고 다양한 테스트 커맨드들을 메모리에게 전송하고 그리고 테스트 결과를 메모리로부터 수신할 수 있다.
본 명세서의 도1 및 다른 모든 도면들은 단지 예시적인 것일 뿐이며, 본 명세서에 개시된 다양한 실시예들을 어떻게 구성하고 이용하는지를 해당 기술분야의 당업자에게 서술 및 설명하기 위한 것일 뿐이다. 따라서, 도1 및 다른 도면들은, 본 발명의 다양한 실시예들을 어떻게 만들고 이용하는지를 해당 기술분야의 당업자가 용이하게 이해하는데 도움을 주는 소자들, 구성요소들 등등을 보여주기 위한 것에 불과할 뿐이며, 그리고 본 명세서에 개시된 실시예들이 구체화되어 있는 임의의 IC 혹은 전자 디바이스들을 완벽하게 도식적으로 표현하는 것이라고 간주되어서는 아니된다. 따라서, 해당 기술분야의 당업자라면, IC 및/또는 전자 디바이스가 IC 및/또는 전자 디바이스의 동작을 위해 필요한 다양한 다른 소자들, 다른 구성요소들 등등을 포함할 수도 있다는 점을 능히 이해할 것이다. 또한, 해당 기술분야의 당업자라면, 도1과 관련하여, 테스트 도메인(105)과 기능 도메인(104)이, 도1 및/또는 다른 도면들에 도시되어 있지 않은 다른 블록들, 소자들, 구성요소들 등등을 포함할 수도 있다는 점을 능히 이해할 것이며, 그리고 IC의 적절한 동작을 위해 필요할 수도 있는 이러한 블록들이 필요에 따라 제공될 수도 있음을 능히 이해할 것이다.
IC(100)의 정상 동작 동안, 테스트 제어 로직(106), 그리고 가령, TC(108) 및 MTC(110)와 같은 임의의 TC들 및 MTC들은 비활성화되며 그리고 IC(100) 기능 도메인(104) 동작들을 방해하지 않는다. 하지만, 사용자가 IC(100)의 테스트 모드를 활성화시키고 따라서 테스트 도메인(105)을 활성화시키는 때에, 예컨대, 테스트 제어 로직(106), TC(108), MTC(110) 및 임의의 다른 TC들, MTC들을 포함하는 IC(100)의 테스트 기능들이 활성화된다. 테스트 동작 모드는 예를 들어, IC(100)의 테스트를-위한-설계(Design-for-Test : DFT) 동작 모드가 될 수 있다. IC(100)의 이러한 테스트 기능들이 활성화되는 경우, 상기 IC(100)는 "테스트 모드"에 있다고 지칭된다.
따라서, IC(100)가 테스트 모드에 있는 경우, 테스트 도메인(105)이 활성화되다. 일실시예의 테스트 제어 로직(106)은 테스트 리셋 커맨드 라인(113)을 통해 기능 리셋 제어기(Functional Reset Controller : FRC)(107)에 접속된다. 상기 기능 리셋 제어기(107)는, 테스트 리셋 커맨드 라인(113)을 통해 테스트 리셋 커맨드를 수신하고, 그리고 리셋 커맨드를 기능 블록들(133 내지 135)의 레지스터들 및 플립 플롭들에게 제공하도록 구성되는바, 이에 대해서는 후술한다.
IC(100)가 테스트 모드에서 동작하는 동안, 사용자는, IC(100) 내부 회로들에 대해 다양한 테스트들이 실시되도록, 상기 테스트 제어 신호 입력 및 출력 포트(117)를 통해 테스트 제어 로직(106)에게 명령할 수 있다. 예를 들어, 중요한 DFT 테스트들 중 하나는 "스캔 테스트(Scan Test : ST)" 라고 알려진 것이다. 스캔 테스트를 관리하기 위하여, 테스트 제어 로직(106)은 IC(100) 내의 모든 레지스터들 및 다른 로직들을 하나 이상의 "스캔 체인들(Scan Chains)"로 재구성할 것이다. 이러한 구성하에서, 상기 IC(100)는 "스캔 모드"에 있다고 지칭된다.
도2는 스캔 모드에서 구성되며 그리고 스캔 체인(201)과 같은 하나 이상의 스캔 체인들을 갖는 IC(100)를 예시한 도면이다. 가령, 스캔 체인(201)과 같은 스캔 체인들은 다양한 레지스터들(203) 및/또는 다른 대응 로직(205)으로 구성된다. 상기 로직(205)은 예를 들어 플립 플롭 혹은 다른 로직 소자들을 포함할 수 있다. 몇몇 실시예에서, MTC(110)와 같은 MTC들은 스캔 체인 구성의 일부가 되도록 강요될 수도 있다.
스캔 모드 동안, 기능 입력 패드(119)을 통해 새로운 데이터를 쉬프트시키고 그리고 기능 출력 패드(121)를 통해 레지스터 데이터를 판독함으로써, 테스트 데이터가 IC(100) 내부로 전파된다. 따라서, IC(100) 레지스터(203) 내에 저장된 비밀들을 손상시킬 수도 있으며, 본 발명에서 고려되는 가능한 공격 벡터(possible attack vector)는 다음의 것들을 포함할 수 있다. 1) IC(100)를 리셋시키고 그리고 IC(100) 레지스터(203), 혹은 플립 플롭들, 래치들 등과 같은 다른 로직들 내에 비밀이 존재할 때까지 기능 모드에서 동작시키는 경우. 2) IC(100)를 테스트 모드로 스위칭시키고 이후 스캔 모드로 스위칭하는 경우. 3) 비트들의 출력 스트림을 판독하고 그리고 IC(100) 레지스터(203)의 콘텐츠를 포함하고 있는 기능 출력 패드(121)를 테스트 모드로 진입하기 전에 판독하는 경우. 4) 출력 비트 스트림으로부터 레지스터(203) 상주(resident) 비밀들을 추출하는 경우.
IC(100) 레지스터(203) 내에 저장된 비밀들을 손상시킬 수도 있으며, 본 발명에서 고려되는 제 2의 가능한 공격 벡터(possible attack vector)는 다음의 것들을 포함할 수 있다. 1) 칩을 리셋시키고 그리고 IC(100) 레지스터(203) 내에 비밀이 존재할 때까지 기능 모드에서 동작시키는 경우. 2) IC(100)를 테스트 모드로 스위칭시키고 이후 스캔 모드로 스위칭하는 경우. 3) 레지스터(203)의 최종 콘텐츠가 기능 모드의 보안 피처들을 무력화하도록, 기능 입력 패드(119)를 통해 레지스터 구성(register configuration)을 도입(injecting)하는 경우. 4) IC(100)를 기능 모드로 복귀시키는 경우. 5) IC(100) 레지스터(203)와 메모리들(RAM 123, ROM 125, PROM 127) 내의 비밀들에 액세스하기 위하여, IC(100)의 약화된 보안 상태를 이용하는 경우.
본 발명의 다양한 실시예들은, 스캔 모드로 진입하기 이전에 모든 레지스터들을 리셋시킴으로써 그리고 몇몇 실시예에서는 스캔 모드를 빠져나간 후에, 하지만 기능 모드로 진입하기 전에 모든 레지스터들을 리셋시킴으로써, 이들 고려되는 2가지 공격 벡터들을 무력화시킬 수 있다. 일실시예의 테스트 제어 로직(106)은 IC(100)의 스캔 모드로의 진입 및 진출을 담당한다. IC(100)가 테스트 모드에 있는 경우, 테스트 제어 로직(106)은, 스캔 모드로 진입하기 위하여 그리고 IC(100)를 스캔 체인(210)과 같은 스캔 체인들로 구성하기 위하여, 외부 커맨드, 예컨대, 테스트 제어 신호 입력 출력 포트(107)로부터의 외부 커맨드를 기다릴 것이다.
IC(100) 스캔 체인들을 구성하기 이전인 이 시점에서, 테스트 제어 로직(106)은, 모든 클록 동기화 신호들을 활성화시키기 위하여 클록 제어기(137)에게 커맨드를 전송할 것이며, 이후 테스트 리셋 커맨드 라인(113)을 통해 테스트 리셋 커맨드를 기능 리셋 제어기(107)에게 전송한다. 이에 응답하여, 기능 리셋 제어기(107)는 리셋 트리(109)를 통해 리셋 커맨드를 전송할 것이며 그리고 IC(100) 내의 모든 레지스터들(203)을 리셋시킬 것이다. 또한, 이러한 리셋은, 모든 래치들, 플립 플롭들, 및 상태 데이터를 저장할 수도 있는 임의의 다른 로직 소자들을 리셋시키는 것을 포함할 수 있다.
리셋 이후에, 테스트 제어 로직(106)은 도2에 도시된 바와 같이 IC(100)를 스캔 모드에 있게하며, 이에 따라 IC(100)를 스캔 체인(201)과 같은 하나 이상의 스캔 체인들로 구성한다. 이후, 테스트 제어 로직(106)은 또 다른 외부 커맨드, 예컨대, IC(100)를 기능 모드로 되돌리는 커맨드를 기다린다. 몇몇 실시예에서, 테스트 제어 로직(106)은, 모든 레지스터들(203) 및 IC(100) 내의 다른 로직들(205)에 대한 또 다른 리셋을 수행하는바, 이는 임의의 비밀 데이터에 대한 액세스를 방지한다. 이후, 상기 테스트 제어 로직(106)은 IC(100)를 도1에 도시된 바와 같은 기능 모드로 되돌릴수 있다.
도3은 전술한 동작 방법에 관한 순서도이다. 블록 301에서, IC는 테스트 동작 모드로 진입하며 그리고 블록 303에서, 이에 응답하여 일세트의 레지스터들(예를 들면, 스캔 체인들 내의 모든 레지스터들)의 각각의 레지스터를 리셋시킨다. 블록 303에 도시된 바와 같이, 상기 IC가 임의의 테스트 모드 커맨드를 수신하기 이전에 리셋이 수행된다. 일실시예에 따르면, 테스트 제어 로직(106)은, 테스트 리셋 커맨드 라인(113)을 통해 상기 리셋을 제공한다.
도3에 도시된 바와 같이 모든 레지스터들을 리셋시키는 것은, 다양한 방식으로 수행될 수 있다. 예를 들면, 리셋 트리(109) 이외의 새로운 리셋 트리가 IC(100)에 포함될 수 있다. 이러한 실시예에서, 상기 새로운 리셋 트리는 테스트 제어 로직(106)에 의해 구동될 수 있다. 하지만, 이러한 실시예는 제 2 리셋 트리가 IC 내에 삽입될 것을 요구하는데, 리셋 트리들은 매우 큰 IC 면적과 전력을 소모한다.
따라서, 다른 실시예에서, 테스트 제어 로직(106)은 기존의 리셋 트리(109)를 이용할 수 있는바, 이는 기능 리셋 제어기(107)로부터 방사하여(emanate), 모든 IC 레지스터들의 리셋을 수행한다. 이러한 실시예에서, 테스트 제어 로직(106)으로부터 발행된 테스트 리셋 커맨드 신호는, 테스트 리셋 커맨드 라인(113)을 거쳐 기능 리셋 제어기(107)로 향한다. 테스트 제어 로직(106)이 테스트 리셋 커맨드를 어써트(assert)하는 때에, 상기 기능 리셋 제어기(107)는 리셋 트리(109)를 통해 IC 내의 모든 레지스터들에게 리셋을 발행하며, 따라서, IC 내의 모든 레지스터들의 콘텐츠를 소거할 수 있다. 따라서, 이 실시예에서는 제 2 리셋 트리가 필요없으며, 따라서 전체 IC 면적 및 복잡도를 감소시킬 수 있다.
도4는 도3에 도시된 실시예에 따른 방법의 좀더 상세한 내용을 예시한 도면으로, 도4에서는 기능 리셋 제어기(107)가 리셋 커맨드를 발행하는데 이용된다. 블록 303에서의 리셋에 후속하여, 테스트 제어 로직(106)은 스캔 모드로 진입하기 위한 커맨드를 예컨대, 테스트 제어 신호 입력 및 출력 포트(117)를 통해 수신한다(블록 401). 이후, 테스트 제어 로직(106)은 레지스터들을 가령, 스캔 체인(201)과 같은, 하나 이상의 스캔 체인들로 구성한다(블록 403). 테스트 제어 로직(106)은 블록 405에 도시된 바와 같이 스캔 동작이 수행되는 것을 허용하도록 진행할 수도 있다. 블록 407에 도시된 바와 같이 스캔 모드를 빠져나오라는 커맨드를 테스트 제어 로직(106)이 수신하면, 테스트 제어 로직(106)은 기능 리셋 제어기(107)에게 테스트 리셋 커맨드를 다시 전송하여, 리셋 트리(109) 상의 모든 레지스터들의 리셋을 야기할 수 있다. 따라서, 이는 소정의 테스트 동작의 결과로서 혹은 다른 이유로 인해, 임의의 레지스터들이 비밀 정보를 포함하고 있는 경우에 대해, 추가적인 보안 대책을 제공한다.
도5는 본 발명의 몇몇 실시예들에 따른 동작에 대한 좀더 상세한 내용을 예시한 도면이다. 블록 501에 도시된 바와 같이, IC(100)가 테스트 모드에 진입하는 경우, 테스트 제어 로직(106)은 클록 제어 신호 라인(139)을 통해 클록 제어 신호를 클록 제어기(137)에게 전송할 수 있다. 클록 제어기(137)는 이에 응답하여, 모든 레지스터 클록들로 향하는 모든 클록 동기화 신호들을 클록 트리(136)를 이용하여 활성화시킬 것이다. 클록 동기화 이후, 테스트 제어 로직(106)은 블록 505에 도시된 바와 같이, 기능 리셋 제어기(107)에게 리셋을 제공할 수 있다. 기능 리셋 제어기(107)에 의해 제공되는 리셋은, 블록 507에 도시된 바와 같이, RAM(123)에게도 리셋을 또한 제공하여, RAM 콘텐츠가 소거되게 한다. 이러한 것은 예컨대, 알려진 비트 패턴을 RAM(123)의 모든 메모리 위치들에 기입함으로써 이루어질 수 있다. 만일, 테스트 제어 로직(106) 혹은 MTC(110)와 MTC가 모든 RAM(123) 메모리 위치들을 동시에 덮어쓰기(혹은, 오버라이트 : overwrite) 할 수 있다면, 테스트 제어 로직(106)(혹은, 몇몇 실시예에서는 TC 108)은, MTC(110)가 RAM 덮어쓰기 작업을 완료하기를 기다린다. 하지만, 만일 상기 MTC(110)가 한번에 하나의 RAM(123) 메모리 위치만을 기입할 수 있다면, 테스트 제어 로직(106)의 TC(108)는, MTC(110)가 각각의 RAM(123) 메모리 위치를 오버라이트하도록 강요하는 쓰기 커맨드들의 스트림을 발행할 것이다.
이후, 테스트 제어 로직(106)은 블록 509에 도시된 바와 같이, 스캔 모드로 진입하기 위한 외부 커맨드를 기다릴 수 있다. 만일, 상기 스캔 모드 커맨드가 블록 511에서 수신된다면, 테스트 제어 로직(106)은 IC(100)를 스캔 모드에 있게 할 것이며, 그리고 블록 513에서 레지스터들을 도2에 도시된 바와 같은 하나 이상의 스캔 체인들 안으로 연결할 것이다. 블록 515에서, 테스트 제어 로직(106)은 스캔 동작을 수행할 수 있다. 스캔 동작은 또 다른 커맨드에 응답할 수도 있으며 혹은 몇몇 실시예에서는 테스트 모드 구성의 통상적인 코스에서 수행될 수도 있다. 블록 517에서, 테스트 제어 로직(106)은 스캔 모드를 빠져나가라는 커맨드를 기다릴 것이며, 그리고 블록 519에서는 몇몇 실시예에서 레지스터들을 다시 리셋시킬 것인바, 이에 대해서는 전술한 바와 같다. 이후, 테스트 제어 로직(106)은 IC(100)를 기능 모드로 되돌릴 것인바, 도1에 도시된 바와 같은 기능 도메인(104)으로 되돌린다. 본 발명의 실시예들에 따른 레지스터 보호 방법은 블록 523에 도시된 바와 같이 종료된다.
또한, 몇몇 실시예에서는 레지스터들이 비동기(asynchronous)식으로 리셋될 수도 있는바, 즉, 이 경우에는 클록이 필요없다. 대안적으로는, 상기 레지스터들은 동기식으로 리셋될 수도 있는데, 이 경우에는 전술한 바와 같이 클록 제어기(137)가 테스트 제어 로직(106)으로부터 클록 제어 신호를 수신한다.
도5에 예시된 방법은 테스트 모드 동안에 IC(100) 상의 디지털 정보를 보호하기 위한 추가 방법들과 연계하여 수행될 수도 있으며, 이들 추가 방법들은 도6, 7, 8, 9에 도시된다. IC(100) 상의 다른 부분들 상의 디지털 정보를 보호하기 위한 이들 추가 방법들이 이제 설명될 것이다.
테스트 모드에서, 외부의 사용자는 테스트 제어 로직(106)에게 전송함으로써 적절한 커맨드를 전송함으로써 IC(100) RAM(123)의 테스트를 개시할 수도 있다. 좀더 상세하게는 몇몇 실시예에서, 가령, TC(108)와 같은 하나 이상의 테스트 제어기(Test Controller)를 통해 MTC(110)와 같은 메모리 테스트 제어기(MTC)에게 커맨드를 전송한다. 몇몇 MTC 커맨드는 예를 들면, 판독 기능 출력 패드(121)를 통해 사용자에 의해서 RAM(123)의 콘텐츠가 판독되게 야기할 수 있다. 따라서, 악의있는 사용자는 예컨대, 다음의 RAM 테스트 공격 알고리즘을 이용하여 RAM(123) 내에 저장된 비밀들을 판독할 수 있다. 1) IC(100)를 리셋시키고 그리고 IC(100) RAM(123) 내에 비밀들이 존재할 때까지 기능 모드에서 동작시킨다. 2) IC(100)를 테스트 모드로 스위칭시킨다. 3) RAM(123)의 콘텐츠를 판독하는 커맨드를 MTC(110)와 같은 하나 이상의 MTC들에게 발행한다. 4) RAM(123)의 콘텐츠로부터 RAM(123) 상주 비밀들을 추출한다.
이러한 RAM-기반의 공격을 격퇴하기 위해서, 본 발명의 일실시예에서는 외부 사용자가 RAM의 임의의 콘텐츠에 액세스하는 것을 허용하기 이전에, 예컨대, IC(100)의 RAM(123)과 같은 IC 내의 모든 RAM의 모든 콘텐츠가 소거된다. RAM을 보호하기 위한 다양한 실시예들이 이제 설명될 것이다.
제 1 실시예는 도5의 블록 507에 도시되었는바, 여기에서는, 테스트 모드에 진입하면 테스트 제어 로직(106)은 모든 메모리들을 소거할 수 있다. 하지만, 전체 RAM을 소거하는 것은 시간이 소모되며 따라서 IC(100)의 테스트 비용을 증가시킬 수 있다. 따라서, 도7에 도시된 바와 같은 제 2 실시예에서는 RAM의 완전한 소거를 요구하지 않으며, 대신에, RAM(123)과 같은 내부 RAM의 판독에 관계된 제 1 커맨드를 테스트 제어 로직(106)이 수신하는 경우에만 RAM을 소거한다.
따라서, 도7의 블록 703에서, 가령, MTC(110)와 같은 MTC를 통해, RAM을 액세스하기 위한 혹은 RAM을 액세스하는 커맨드가 외부 사용자로부터 수신될 수 있다. RAM 액세스 커맨드를 수신하기 이전에, 테스트 제어 로직(106) 혹은 TC(108)는, 모든 RAM-비관련(all non-RAM related) 테스트 커맨드를 정상적으로 처리할 수 있다. 하지만, 제 1 RAM-관련 커맨드(first RAM-related command)를 외부 사용자로부터 수신하면, 테스트 제어 로직(106)은 내부 커맨드를 MTC(110)와 같은 각각의 MTC 에게 발행하여, 알려진 패턴들로 모든 RAM(123) 위치들을 덮어쓴다(overwrite). 만일, 테스트 제어 로직(106), 혹은 MTC(110)가 모든 RAM(123) 위치들을 자동으로 덮어쓸수 있다면, 테스트 제어 로직(106)은 MTC(110)가 자신의 태스크를 완료하기를 기다린다. 따라서, 블록 707에서, RAM(123) 메모리 위치들이 덮어쓰기 되었다면, 이후 임의의 후속 커맨드들이 블록 711에 도시된 바와 같이 정상적으로 처리될 수 있다. 하지만, 만일 블록 707에서 MTC(110)가 한번에 하나의 RAM(123) 메모리 위치만을 기입(write)할 수 있다면, 테스트 제어 로직(106)은 블록 709에서, MTC(110)로 하여금 각각의 RAM(123) 메모리 위치를 덮어쓰게하는 쓰기 커맨드들의 스트림을 발행할 것이다. 이후, 테스트 제어 로직(106)은 블록 711로 진행하여 제 1 RAM-관련 테스트 커맨드를 처리할 수 있다. 후속의 RAM-관련 테스트 커맨드들은 RAM(123)을 두번째로 소거해야할 필요없이 처리된다.
따라서, 여기에 개시된 실시예들은 IC(100)의 이전 상태에 관계없이 실행될 수 있다. 하지만, 몇몇 실시예에서, 몇몇 방법들은 IC 생산 테스트 동안에 생략될 수도 있는바, 동적으로 생성되는(dynamically created) 그 어떤 비밀들도 IC가 포함하지 않는 경우, 테스트 시간을 감소시키고 따라서 IC의 생산 비용을 절감하기 위해서, 몇몇 방법들은 IC 생산 테스트 동안에 생략될 수 있다. 따라서, RAM을 보호하기 위한 제 3 실시예가 도2 및 도9에 도시되는바, 제 3 실시예에서는 IC 생산 테스트 동안 RAM 보호 방법들이 생략될 수도 있다. 또한, 몇몇 실시예에서는 레지스터 보호 방법들도 IC 생산 테스트로부터 생략될 수 있다.
도2는 보호 및 비밀 시그니처 레지스터(secure and secret Signature Register)(217)들의 그룹을 도시하는바, 상기 보호 및 비밀 시그니처 레지스터들은 임의의 스캔 체인에 포함되지 않으며 따라서, 스캔 불가능하다(비록, 이들은 몇몇 실시예에서는 리셋가능할 수도 있지만). 보호 시그니처 레지스터(217)들의 그룹은 IC(100)의 기능 도메인(104) 내에 삽입된다. 이들 시그니처 레지스터(217)들은 기능 도메인 회로들(211)에 의해서, 예컨대, 쓰기 입력 라인들(213)에 의해서 기입가능하며, 그리고 테스트 제어 로직(106)에 의해서, 예컨대, 판독 라인들(215)에 의해서 판독가능하다.
시그니처 레지스터들(217)을 갖는 실시예들의 동작 방법이 도9에 예시된다. IC(100)의 파워-업 시에 시그니처 레지스터(217)의 값은 랜덤하며 그리고 알려저 있지 않다. 블록 901에 도시된 바와 같이 IC(100)가 기능 모드에서 동작할 때, IC(100)의 기능 도메인 회로들(211)은, 블록 903에 도시된 바와 같이, 임의의 비밀 정보를 생성하기 전에 혹은 비밀 정보를 외부로부터 수신하기 전에, 소정의 시그니처 패스워드를 시그니처 레지스터(217)에 기입한다.
블록 905에서 테스트 모드가 인에이블될 때마다, 테스트 제어 로직(106)은 블록 907에 도시된 바와 같이 시그니처 레지스터(217)의 값들을 체크한다. 만일, 시그니처 레지스터가 소정의 시그니처 패스워드를 포함하고 있다면(블록 909), RAM(123)은 기능 모드 동작으로 인해 비밀 정보를 가지고 있다고 간주된다(블록 913). 따라서, 블록 915에서 테스트 제어 로직(106)은 외부 테스트 커맨드를 수신하기를 거부할 것이며 그리고 모든 테스트 동작들, 예컨대, DFT 동작들은 디스에이블될 것이다. 하지만, 시그니처 패스워드가 블록 909에서 존재하지 않는다면, 테스트 제어 로직(106)은, 블록 911에 도시된 바와 같이, 통상적인 RAM(123) 액세스를 허용할 것이다.
RAM(123)에 대한 테스트 제어 로직(106) 기능들을 재-활성화(re-activate)시키기 위하여, IC(100) 파워가 제거되어야만 하며 그리고 이후 재인가되어야만 한다. IC(100)에 대한 파워를 제거 및 복구하는 이러한 프로세스는, 모든 레지스터들 및 RAM의 콘텐츠들이 랜덤한 상태 및 모르는 상태로 되돌아가게 할 것이다. 소정의 시그니처 패스워드를 갖고있는 시그니처 레지스터(217)의 개수는, 레지스터들의 파워-업 값과 소정의 시그니처 패스워드가 동일한 상황이 발생할 가능성이 매우 낮을정도로 충분히 많아야 한다.
비록, 전술한 실시예는 시그니처 레지스터(217)를 적용하고 있지만, 본 발명의 실시예들에 따르면, 암호화된 데이터의 임의의 적절한 형태가 이용될 수 있다. 일실시예에 따른 방법이 도10에 예시된다. 도10의 실시예에서 IC는 블록 1001에서 테스트 모드로 진입하며, 그리고 이에 응답하여 블록 1003에서 상기 IC가 테스트 모드로 진입하기 전에 기능 모드에서 동작했었는지를 판별한다. 블록 1005에서, 테스트 모드에서 읽기 커맨드들에 의한 RAM 액세스가 차단되는바, 이는 블록 1003에서의 판별에 기초하여 RAM이 비밀 정보를 갖고 있을 것이라고 테스트 제어 로직(106)이 가정하기 때문이다. 도11에서는, 블록 1101에서 테스트 모드에 진입한 이후, 일 세트의 레지스터들이 암호화된 데이터를 포함한다고 판별되는바(블록 1103), 여기서 레지스터들의 상기 세트는 임의의 스캔 체인과는 별도이다. 블록 1105에서, 테스트 모드에서 읽기 커맨드들에 의한 RAM 액세스가 차단되는바, 이는 블록 1103에서의 판별에 기초하여 RAM이 비밀 정보를 갖고 있을 것이라고 테스트 제어 로직(106)이 가정하기 때문이다. 몇몇 실시예에서는, 레지스터 콘텐츠와 선험적으로 알려진 암호화된 데이터(a priori known encrypted data)를 비교하고 그리고 상기 레지스터 콘텐츠와 선험적으로 알려진 암호화된 데이터가 서로 매치하는지를 판별함으로써, 레지스터들이 암호화된 데이터를 갖고 있을 거라는 판별이 수행될 수도 있다.
이제 PROMDML 보호를 위한 실시예들이 설명될 것이다. 가령, 퓨즈와 같은 온-칩 프로그램가능한 판독 전용 메모리(On-chip PROM)는, 다양한 키(Key)들과 비밀 IC 식별 정보를 저장하는데 이용된다. 통상적으로 PROM은, 쓰기 기능 입력 패드(119)와 읽기 기능 출력 패드(121)와 같은 외부 IC 패드들을 통하여, 혹은 먹스(Mux)(131)를 통하여 액세스 가능하다. 따라서, 이들 PROM은 제조 설비에서 프로그래밍될 수 있다.
하지만, 이러한 프로그래밍 단계가 일단 수행되면, PROM의 콘텐츠는 악의있는 사용자에 의해 판독가능해서는 않된다. PROM에 대한 액세스는, DFT 모드들과 같은 테스트 모드 동안에 손상되어서는 않된다. 만일, 공격자가 DFT 모드와 같은 테스트 모드 동안에 기능 입력 패드(119)의 입력값들을 조작할 수 있다면, 도1에 도시된 바와 같은 외부 패드(기능 입력 패드 119, 121)로의 PROM의 직접 연결은, 상기 PROM을 공격자에게 취약하게 만든다.
도12는 IC(100) 테스트 모드 동안, PROM(127) 콘텐츠를 보호하기 위한 PROM 보호 로직(223)에 관한 일실시예를 예시한다. PROM은 비동기 방식으로 판독되는바, 위치 어드레스(1211) 및 제어 신호(1209)(리드 인에이블, 메모리 인에이블)가 PROM(127)에 제공된다. PROM(127)은 위치 어드레스의 콘텐츠를 읽기 데이터 신호 라인(1215) 상에 출력함으로써 이에 응답한다. 전술한 바와 같은 테스트 제어 로직(106)-개시 리셋 동안, 입력 위치 어드레스(1211) 및 제어 신호(1209)의 값들은, PROM(127) 내의 특정 위치(예를 들면, 위치 어드레스 0)를 판독하도록 설계된다. 상기 위치의 콘텐츠는 PROM(127)의 다른 영역들에 대한 읽기-액세스 규칙(만일, 있다면)을 특정한다. 리셋 동안, 이들 읽기-액세스 보호 규칙들은, PROM 보호 레지스터(1203) 내에 저장된다. 일단 리셋이 제거되면, PROM 보호 레지스터(1203)의 콘텐츠는 변경될 수 없다. 테스트 모드 동안, 모든 사용자-요청 판독 동작들은, 상기 판독 동작들을 PROM(127)에 전달하기 이전에, PROM 액세스 로직(1201)에 의해 평가된다. 만일, PROM 보호 레지스터(1203)에 저장된 값들이, 읽기 액세스를 위한 사용자 요청이 소정의 보호되는 위치를 타겟팅하고 있음을 나타낸다면, PROM 액세스 로직(1201)은 상기 요청들을 인터셉트하며 그리고 상기 요청들이 PROM(127)으로 전달되지 못하게 막는다.
도13은 동작 방법을 예시한 것으로 블록 1301에서 IC(100)는 테스트 모드로 진입한다. 블록 1303에서, 테스트 모드로 진입한 이후에 PROM 읽기 커맨드가 수신되는바, 여기서 PROM 읽기 커맨드는 PROM 위치 어드레스를 특정한다. 블록 1305에서, PROM 읽기 커맨드에 의해 특정된 상기 어드레스 위치가 비밀 정보를 가리키고 있는지가 판별된다. 이후, PROM 읽기 커맨드에 응답하여, 양성의(benign) 출력(즉, 쓰레기 데이터 : garbage data)가 제공될 수 있다(블록 1307).
도6은 또한, 도5에 개시된 방법과 함께 병렬로 작동될 수 있는 방법을 도시한다. 블록 501에서 테스트 모드로 진입한 이후, 테스트 제어 로직(106)은 리셋 커맨드를 발행하는바, 이는 리셋(1207)을 통해 PROM 액세스 로직(1201)을 리셋시킨다. PROM 액세스 로직(1201)은 상기 리셋에 응답하여, PROM의 어드레스, 예를 들면 위치 어드레스 0 혹은 판독되지 말아야할 따라서 비밀인 어드레스들의 식별자들을 포함하는 임의의 다른 어드레스를 판독한다(블록 605). 블록 607에서, PROM 액세스 로직(1201)은 위치 어드레스(가령, 위치 어드레스 0, 등등)의 콘텐츠를 PROM 보호 레지스터(1203)에 저장한다. 상기 방법은 블록 609에서 종료한다.
ROM을 보호하기 위한 실시예들이 이제 설명될 것이다. ROM 및 PROM의 콘텐츠는 IC 제조 프로세스 동안 고정된다(fixed). 상기 콘텐츠는 악의의 사용자로부터 보호되어야만 하며 아울러 이와 동시에 ROM 콘텐츠의 유효성을 테스트하는 매커니즘이 제공되어야 한다. 전통적으로, ROM들은 MTC(110)와 같은 메모리 테스트 제어기(MTC)를 이용하여 테스트되는바, 이는 테스트 모드 동안 테스트 제어 로직(106)을 통해 PROM의 콘텐츠에 대한 액세스를 공격자가 획득할 수 있게 한다.
본 실시예는 개별 ROM 로우(row)에 대한 모든 읽기 동작들을 디스에이블시킴으로써, MTC-기반의 읽기 공격으로부터 ROM을 보호한다. 하지만, ROM들이 여전히 테스트가능한 상태로 남아있게 하는 것을 보장하기 위하여, 본 실시예는 ROM MTC(110) 내에 구비되는 특별한 읽기 기능을 포함한다. 이러한 읽기 기능은 MTC(110)가 매우 많은 수의 로우들(rows)을 내부적으로 판독하는 것을 허용하며 그리고 암호화 로직 및 몇몇 실시예에서는 다중-입력 쉬프트 레지스터(multi-input shift register : MISR)를 이용하여, 암호화된 값 혹은 이들 로우들의 콘텐츠에 대한 시그니처를 계산할 수 있게 한다. 얻어진 암호화 데이터 혹은 시그니처는 결함없는(non-faulty) ROM의 예상값과 비교될 수 있는바, 이는 외부 사용자에게 ROM 콘텐츠를 누설하는 일 없이, 테스트 중인 ROM에 제조상의 결함이 없다는 점을 보장하기 위한 것이다.
도14를 참조하면, 테스트 제어 로직(105)은 MTC(110)를 통해 읽기 커맨드(401)를 ROM(125)에게 발행할 수 있다. 이에 응답하여, ROM은 그 자신의 로우들(rows)의 데이터(1403)를 암호화 로직(225)에게 기입할 것이다(1403). 이에 응답하여, 암호화 로직(225)은 테스트 제어 로직(106) 혹은 MTC(110)에게 출력(1405)을 기입할 것이다. 도15는 도14에 도시된 ROM 보호 실시예에 따른 방법을 예시한다. 블록 1501에서 IC(100)는 테스트 모드로 진입한다. 블록 1503에서, ROM 읽기 커맨드(1401)가 수신되는바, 이는 MTC(110)로부터 올 수도 있다. 블록 1505에서, 상기 ROM(125)은 읽기 커맨드(1401)에 응답하여 그 자신의 로우들(rows)의 데이터(1403)를 암호화 로직(225)에게 기입한다. 암호화 로직(225)은 블록 1507에서 테스트 제어 로직(106) 혹은 MTC(110)에게 암호화 출력을 기입하는바, 여기서 상기 암호화 출력은 ROM 콘텐츠를 나타낸다. 상기 암호화 출력은 테스트 제어 입력 및 출력 포트(117)를 통해 외부 세계로 제공될 수도 있다.
도16은 블록 1605 및 1607에 도시된 바와 같이 MISR가 이용되어 ROM 콘텐츠를 나타내는 출력을 제공하는 대안적인 실시예를 예시한 도면이다. 도8은 도5, 도6 및 도7의 방법들과 병렬로 그리고 함께 사용되는 방법을 예시한 도면이다.
도17은 본 명세서에 개시된 모든 다양한 실시예들을 통합하여 따라서 본 명세서에 개시된 모든 레지스터들, 래치들, ROM, RAM 및 PROM 을 보호하는 예시적인 방법에 관한 도면이다.
104: 기능 도메인 105: 테스트 도메인
106: 테스트 제어 로직 107: 기능 리셋 제어기
108: 테스트 제어기 110: 메모리 테스트 제어기
123: SRAM 125: ROM
127: PROM 131: 먹스
133: 기능 블록 137: 클록 제어기

Claims (26)

  1. 집적회로 상의 정보를 보호하는 방법으로서,
    테스트 동작모드(test mode of operation)로 진입하는 단계; 및
    상기 테스트 동작모드에 진입하는 것에 응답하여 그리고 테스트 모드 커맨드를 수신하기 전에, 레지스터들의 세트의 각각의 레지스터들을 리셋팅하는 단계
    를 포함하는 집적회로 상의 정보를 보호하는 방법.
  2. 제1항에 있어서,
    스캔 모드로 진입하기 위한 커맨드를 수신하는 단계;
    레지스터들의 상기 세트를 하나 이상의 스캔 체인으로 구성하는 단계;
    스캔 동작을 수행하는 단계;
    상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하는 단계;
    상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하는 것에 응답하여 그리고 기능 모드로 진입하기 전에, 레지스터들의 상기 세트의 각각의 레지스터를 테스트 제어 로직을 통해 리셋팅하는 단계
    를 더 포함하는 집적회로 상의 정보를 보호하는 방법.
  3. 제1항에 있어서,
    상기 리셋팅은 기능 리셋 제어기에 의해 제공되는 리셋 커맨드를 통해 수행되는 것을 특징으로 하는 집적회로 상의 정보를 보호하는 방법.
  4. 제1항에 있어서,
    레지스터들의 상기 세트의 각각의 레지스터를 리셋팅하는 단계는,
    플립 플롭들의 세트의 각각의 플립 플롭들을 리셋팅하는 단계를 더 포함하는 것을 특징으로 하는 집적회로 상의 정보를 보호하는 방법.
  5. 제1항에 있어서,
    상기 테스트 동작 모드로 진입하는 것에 응답하여, 알려진 비트 패턴을 랜덤 액세스 메모리(RAM)의 모든 위치들에 기입(write)하는 단계; 및
    후속 RAM 판독(read) 커맨드들을 허용하는 단계
    를 더 포함하는 집적회로 상의 정보를 보호하는 방법.
  6. 제1항에 있어서,
    상기 테스트 동작모드로 진입한 이후 및 상기 리셋팅하기 전에, 레지스터들의 상기 세트를 위한 레지스터 클록들을 동기화시키기 위하여 클록 제어 신호를 클록 제어기에게 전송하는 단계
    를 더 포함하는 집적회로 상의 정보를 보호하는 방법.
  7. 집적회로 상의 정보를 보호하는 방법으로서,
    테스트 동작모드(test mode of operation)로 진입하는 단계;
    상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드(functional mode of operation)에서 동작했었는지를 상기 테스트 동작모드로 진입하는 것에 응답하여 판별하는 단계; 및
    상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 상기 기능 동작모드에서 동작했었다는 판별에 응답하여, 상기 테스트 동작모드 시에 랜덤 액세스 메모리(RAM) 판독 커맨드를 차단하는 단계
    를 포함하는 집적회로 상의 정보를 보호하는 방법.
  8. 제7항에 있어서,
    상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드에서 동작했었는지를 판별하는 단계는,
    상기 테스트 동작모드로 진입하는 것에 응답하여, 레지스터들의 세트가 선험적으로 알려진 데이터(a priori known data)를 포함하는지를 판별하는 단계를 더 포함하며,
    레지스터들의 상기 세트는 스캔 체인 구성과는 별도인 것을 특징으로 하는 집적회로 상의 정보를 보호하는 방법.
  9. 제8항에 있어서,
    레지스터들의 상기 세트가 선험적으로 알려진 데이터를 포함하는지를 판별하는 상기 단계는,
    레지스터들의 상기 세트의 콘텐츠와 저장된 데이터를 비교하는 단계;
    상기 콘텐츠와 상기 저장된 데이터가 매치하는지를 판별하는 단계;
    상기 매치에 응답하여, 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드에서 동작했었는지를 판별하고, 그리고 상기 RAM이 상기 기능 동작모드에서의 동작으로 인해 비밀 정보를 포함할 것인지를 판별하는 단계; 및
    상기 집적회로의 테스트 사용자 인터페이스로부터 상기 RAM 판독 커맨드를 차단하는 단계
    를 더 포함하는 집적회로 상의 정보를 보호하는 방법.
  10. 제9항에 있어서,
    상기 암호화된 데이터는, 상기 집적회로가 상기 기능 동작모드에 있는 동안에 상기 RAM에 의해 보유된 데이터 상에 수행되는 해싱(hashing) 동작에 의해 획득되며, 상기 암호화된 데이터는 상기 RAM에 의해 보유된 데이터를 나타내는 것을 특징으로 하는 집적회로 상의 정보를 보호하는 방법.
  11. 제8항에 있어서,
    레지스터들의 상기 세트가 선험적으로 알려진 데이터를 포함하는지를 판별하는 상기 단계는,
    레지스터들의 상기 세트의 콘텐츠와 저장된 데이터를 비교하는 단계;
    상기 콘텐츠와 상기 저장된 데이터가 매치하는지를 판별하는 단계;
    상기 매치에 응답하여, 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드에서 동작했었는지를 판별하고, 그리고 상기 RAM이 상기 기능 동작모드에서의 동작으로 인해 비밀 정보를 포함할 것인지를 판별하는 단계;
    상기 RAM 판독 커맨드를 차단하는 것에 후속하여, 상기 RAM이 상기 기능 모드에서 동작했었다는 판별에 응답하여, 알려진 비트 패턴을 상기 RAM의 모든 위치들에 기입하는 단계; 및
    후속 RAM 판독 커맨드들을 허용하는 단계
    를 더 포함하는 집적회로 상의 정보를 보호하는 방법.
  12. 집적회로 상의 정보를 보호하는 방법으로서,
    테스트 동작모드로 진입하는 단계;
    상기 테스트 동작모드로 진입하는 것에 응답하여, 알려진 비트 패턴을 랜덤 액세스 메모리(RAM)의 모든 위치들에 기입하는 단계; 및
    후속 RAM 판독 커맨드들을 허용하는 단계
    를 포함하는 집적회로 상의 정보를 보호하는 방법.
  13. 집적회로 상의 정보를 보호하는 방법으로서,
    테스트 동작모드로 진입하는 단계;
    상기 테스트 동작모드로 진입하는 것에 응답하여 그리고 테스트 모드 커맨드를 수신하기 이전에, 레지스터들의 세트의 각각의 레지스터를 리셋팅하는 단계;
    상기 테스트 동작모드로 진입하는 것에 응답하여, 상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 기능 동작모드에서 동작했었는지를 판별하는 단계;
    상기 집적회로가 상기 테스트 동작모드로 진입하기 전에 상기 기능 동작모드에서 동작했었다는 판별에 응답하여, 상기 테스트 동작모드 시에 랜덤 액세스 메모리(RAM) 판독 커맨드를 차단하는 단계;
    상기 RAM이 상기 기능 모드에서 동작했었다는 판별에 응답하여, 알려진 비트 패턴을 상기 RAM의 모든 위치들에 기입하는 단계;
    후속 RAM 판독 커맨드들을 허용하는 단계;
    판독 전용 메모리(ROM) 판독 커맨드를 수신하는 단계;
    상기 ROM 판독 커맨드를 수신하는 것에 응답하여, 복수의 ROM 어드레스 위치들로부터의 데이터를 암호화 로직에 기입하는 단계;
    상기 암호화 로직의 암호화 로직 출력을 테스트 제어 로직에 기입하는 단계, 상기 암호화 로직 출력은 상기 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타내며;
    테스트 동작모드로 진입하는 것에 후속하여, 프로그램가능한 판독 전용 메모리(PROM) 판독 커맨드를 수신하는 단계, 상기 PROM 판독 커맨드는 판독 어드레스를 특정하며;
    상기 판독 어드레스가 비밀 정보를 가리키는지를 판별하는 단계; 및
    상기 PROM 판독 커맨드에 응답하여 양성(benign)의 출력 패턴을 제공하는 단계
    를 포함하는 집적회로 상의 정보를 보호하는 방법.
  14. 제13항에 있어서,
    스캔 동작모드(scan mode of operation)를 빠져나오는 단계; 및
    상기 스캔 동작모드를 빠져나오는 것에 응답하여 레지스터들의 세트의 각 레지스터를 리셋팅하는 단계
    를 더 포함하는 집적회로 상의 정보를 보호하는 방법.
  15. 집적회로로서,
    상기 집적회로를 테스트 모드로 설정하며 그리고 상기 테스트 모드에서 상기 집적회로를 제어하도록 된 테스트 제어 로직;
    레지스터들의 세트; 및
    상기 테스트 제어 로직 및 상기 레지스터들의 세트에 접속되며, 그리고 상기 테스트 제어 로직으로부터 리셋 커맨드를 수신하고 그리고 상기 테스트 모드로 진입하기 위한 커맨드에 응답하여 상기 리셋 커맨드를 레지스터들의 상기 세트에 제공하도록 된 기능 리셋 제어기
    를 포함하는 집적회로.
  16. 제15항에 있어서,
    상기 테스트 제어 로직은, 또한,
    스캔 모드로 진입하기 위한 커맨드를 수신하고;
    스캔 모드로 진입하기 위한 커맨드에 응답하여 레지스터들의 상기 세트를 하나 이상의 스캔 체인으로 구성하고;
    상기 하나 이상의 스캔 체인에 대해 스캔 동작을 수행하고;
    상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하고;
    상기 스캔 모드를 빠져나오기 위한 커맨드를 수신하는 것에 응답하여 그리고 기능 모드로 진입하기 전에, 레지스터들의 상기 세트의 각각의 레지스터를 리셋팅하도록 된 것을 특징으로 하는 집적회로.
  17. 제15항에 있어서,
    상기 테스트 제어 로직 및 기능 리셋 제어기에 접속되며 그리고 상기 테스트 제어 로직으로부터 상기 리셋 커맨드를 수신하도록된 플립 플롭들의 세트
    를 더 포함하는 집적회로.
  18. 제15항에 있어서,
    레지스터들의 상기 세트에 접속된 복수의 클록들; 및
    상기 복수의 클록들에 접속되며 그리고 상기 테스트 제어 로직에 접속되는 클록 제어기
    를 더 포함하며,
    상기 클록 제어기는 상기 테스트 제어 로직으로부터 클록 리셋 신호를 수신하고 그리고 상기 클록 리셋 신호를 수신하는 것에 응답하여 상기 복수의 클록들에게 동기 신호를 제공하는 것을 특징으로 하는 집적회로.
  19. 제15항에 있어서,
    상기 테스트 제어 로직에 접속되는 하나 이상의 랜덤 액세스 메모리(RAM)를 더 포함하며,
    상기 테스트 제어 로직은, 상기 테스트 모드로 진입하는 것에 응답하여 그리고 상기 스캔 모드로 진입하기 위한 상기 커맨드를 수신하기 전에, 알려진 비트 패턴을 상기 하나 이상의 랜덤 액세스 메모리(RAM)의 모든 위치들에 기입(write)하는 것을 특징으로 하는 집적회로.
  20. 제15항에 있어서,
    상기 테스트 제어 로직에 접속되어, 상기 테스트 모드로 진입하기 위한 상기 커맨드를 수신하는 테스트 입력 포트;
    레지스터들의 상기 세트로부터 출력 데이터를 수신하기 위해 상기 테스트 제어 로직에 접속되는 테스트 출력 포트
    를 더 포함하며,
    상기 테스트 제어 로직은, 기능 리셋 제어기가 상기 리셋 커맨드를 수신하도록 테스트 커맨드 리셋 신호 라인을 통해 상기 기능 리셋 제어기에 접속되며,
    상기 기능 리셋 제어기는 리셋 트리를 통해 레지스터들의 상기 세트에 접속되며, 상기 리셋 트리는 레지스터들의 상기 세트에게 상기 리셋 커맨드를 제공하는 것을 특징으로 하는 집적회로.
  21. 집적회로로서,
    하나 이상의 랜덤 액세스 메모리(RAM);
    상기 하나 이상의 RAM에 접속되는 테스트 제어 로직을 포함하며,
    상기 테스트 제어 로직은,
    상기 집적회로를 테스트 모드로 설정하며 그리고 상기 테스트 모드에서 상기 집적회로를 제어하며;
    상기 테스트 모드로 진입하는 것에 응답하여, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 기능 모드(functional mode)에서 동작했었는지를 판별하며; 및
    상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었다는 판별에 응답하여, 상기 테스트 모드 시에 RAM 판독 커맨드를 차단하도록 된 것을 특징으로 하는 집적회로.
  22. 제21항에 있어서,
    상기 테스트 제어 로직에 접속되며 상기 테스트 모드의 스캔 체인 구성과는 별도인 레지스터들의 세트를 더 포함하며,
    상기 테스트 제어 로직은,
    상기 테스트 모드로 진입하는 것에 응답하여 레지스터들의 상기 세트가 선험적으로 알려진 데이터를 포함하는지를 판별함으로써, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었는지를 판별하도록 된 것을 특징으로 하는 집적회로.
  23. 제22항에 있어서,
    상기 테스트 제어기는,
    레지스터들의 상기 세트의 콘텐츠와 저장된 데이터를 비교하고;
    상기 콘텐츠와 상기 저장된 데이터가 매치하는지를 판별하고;
    상기 매치에 응답하여, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 기능 모드에서 동작했었는지를 판별하고, 그리고 상기 RAM이 상기 기능 모드에서의 동작으로 인해 비밀 정보를 포함할 것인지를 판별하고; 그리고
    상기 집적회로의 테스트 사용자 인터페이스로부터 상기 RAM 판독 커맨드를 차단함으로써,
    레지스터들의 상기 세트가 선험적으로 알려진 데이터를 포함하는지를 판별하도록 된 것을 특징으로 하는 집적회로.
  24. 제22항에 있어서,
    상기 테스트 제어 로직에 접속되어, 상기 RAM 판독 커맨드들을 수신하는 테스트 입력 포트;
    상기 RAM으로부터 출력 데이터를 수신하기 위해 상기 테스트 제어 로직에 접속되는 테스트 출력 포트
    를 더 포함하며,
    상기 테스트 제어 로직은, 상기 RAM에 접속되는 하나 이상의 메모리 테스트 제어 로직을 더 포함하며, 상기 메모리 테스트 제어 로직은, 상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었다는 판별에 응답하여 상기 테스트 모드 시에 RAM 판독 커맨드를 차단하도록 동작하는 것을 특징으로 하는 집적회로.
  25. 제24항에 있어서,
    상기 집적회로는 RAM 집적회로인 것을 특징으로 하는 집적회로.
  26. 집적회로로서,
    상기 집적회로를 테스트 모드로 설정하며 그리고 상기 테스트 모드에서 상기 집적회로를 제어하도록 된 테스트 제어 로직;
    레지스터들의 세트;
    상기 테스트 제어 로직 및 레지스터들의 상기 세트에 접속되며, 그리고 상기 테스트 제어 로직으로부터 리셋 커맨드를 수신하고 그리고 상기 테스트 모드로 진입하기 위한 커맨드에 응답하여 상기 리셋 커맨드를 레지스터들의 상기 세트에 제공하도록 된 기능 리셋 제어기;
    상기 테스트 제어 로직에 접속되는 하나 이상의 랜덤 액세스 메모리(RAM);
    상기 테스트 제어 로직에 접속되는 하나 이상의 판독 전용 메모리(ROM);
    상기 테스트 제어 로직에 접속되는 암호화 로직; 및
    상기 테스트 제어 로직에 접속되는 하나 이상의 프로그램가능 판독 전용 메모리(PROM)
    를 포함하며,
    상기 테스트 제어 로직은 또한,
    상기 집적회로가 상기 테스트 모드로 진입하기 전에 기능 모드에서 동작했었는지를 상기 테스트 모드로 진입하는 것에 응답하여 판별하고;
    상기 집적회로가 상기 테스트 모드로 진입하기 전에 상기 기능 모드에서 동작했었다는 판별에 응답하여, 상기 테스트 모드 시에 RAM 판독 커맨드를 차단하고;
    ROM 판독 커맨드를 수신하고;
    상기 ROM 판독 커맨드를 수신하는 것에 응답하여 복수의 ROM 어드레스 위치들로부터의 데이터를 상기 암호화 로직에 기입하고;
    상기 암호화 로직의 암호화 로직 출력을 수신하고, 상기 암호화 로직 출력은 상기 복수의 ROM 어드레스 위치들로부터의 상기 데이터를 나타내며;
    상기 테스트 모드로 진입하는 것에 후속하여 PROM 판독 커맨드를 수신하고, 상기 PROM 판독 커맨드는 판독 어드레스를 특정하며;
    상기 판독 어드레스가 비밀 정보를 가리키고 있는지를 판별하며; 그리고
    상기 PROM 판독 커맨드에 응답하여 양성(benign)의 출력 패턴을 제공하도록 된 것을 특징으로 하는 집적회로.
KR1020117000172A 2008-06-04 2009-06-03 테스트 동작모드 동안 집적회로 상의 디지털 정보를 보호하기 위한 장치 및 방법 KR20110034631A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/133,173 US8051345B2 (en) 2008-06-04 2008-06-04 Method and apparatus for securing digital information on an integrated circuit during test operating modes
US12/133,173 2008-06-04

Publications (1)

Publication Number Publication Date
KR20110034631A true KR20110034631A (ko) 2011-04-05

Family

ID=40999923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117000172A KR20110034631A (ko) 2008-06-04 2009-06-03 테스트 동작모드 동안 집적회로 상의 디지털 정보를 보호하기 위한 장치 및 방법

Country Status (6)

Country Link
US (1) US8051345B2 (ko)
EP (1) EP2291667A1 (ko)
JP (1) JP2011525015A (ko)
KR (1) KR20110034631A (ko)
CN (1) CN102066963A (ko)
WO (1) WO2009149160A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190083996A (ko) * 2018-01-05 2019-07-15 주식회사 아이씨티케이 홀딩스 테스트 모드에서 데이터 보호 장치 및 방법

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397079B2 (en) * 2008-06-04 2013-03-12 Ati Technologies Ulc Method and apparatus for securing digital information on an integrated circuit read only memory during test operating modes
US8844023B2 (en) * 2008-12-02 2014-09-23 Micron Technology, Inc. Password protected built-in test mode for memories
CN102495356B (zh) * 2011-11-30 2014-11-05 福州大学 扫描链异步复位寄存器复位端口处理方法
KR102301651B1 (ko) * 2015-06-02 2021-09-14 에스케이하이닉스 주식회사 테스트 패턴 발생 장치 및 방법, 이를 이용한 테스트 시스템과, 컴퓨터 프로그램
JP6656398B2 (ja) * 2016-03-16 2020-03-04 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 論理チップの作動モードとテストモードとの間の移行を制御する方法、テストモード移行制御回路、及び論理チップ
KR20180037422A (ko) * 2016-10-04 2018-04-12 삼성전자주식회사 집적 회로 및 애플리케이션 프로세서
US10222417B1 (en) * 2016-11-28 2019-03-05 Cadence Design Systems, Inc. Securing access to integrated circuit scan mode and data
CN106707139B (zh) * 2017-01-03 2019-06-04 大唐微电子技术有限公司 一种扫描链测试装置及实现方法
CN108268940B (zh) * 2017-01-04 2022-02-18 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US10481205B2 (en) 2017-07-27 2019-11-19 Seagate Technology Llc Robust secure testing of integrated circuits
US10622345B2 (en) 2018-01-24 2020-04-14 Honeywell International Inc. Wafer trust via location locked circuit layout with measurable integrity
WO2020145432A1 (ko) * 2019-01-09 2020-07-16 엘지전자 주식회사 Multi soc 시스템을 통해 차량을 제어하는 방법
CN110601811B (zh) * 2019-09-12 2022-10-21 北京大学软件与微电子学院 一种在dft中使用的安全性的测试模式译码电路

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0827730B2 (ja) * 1986-11-07 1996-03-21 沖電気工業株式会社 シングルチップマイクロコンピュータ及びそのテスト方法
JP3057326B2 (ja) * 1990-11-14 2000-06-26 三菱電機株式会社 Icカード
US5357572A (en) * 1992-09-22 1994-10-18 Hughes Aircraft Company Apparatus and method for sensitive circuit protection with set-scan testing
JP3461234B2 (ja) * 1996-01-22 2003-10-27 株式会社東芝 データ保護回路
US6578180B2 (en) * 2000-11-30 2003-06-10 International Business Machines Corporation Method and system for testing interconnected integrated circuits
KR100446317B1 (ko) * 2001-12-24 2004-09-01 주식회사 하이닉스반도체 코드 롬의 테스트시 데이터를 보호하기 위한 장치
JP2003303500A (ja) * 2002-04-05 2003-10-24 Matsushita Electric Ind Co Ltd 半導体集積回路及び半導体集積回路の検査方法
US7185249B2 (en) * 2002-04-30 2007-02-27 Freescale Semiconductor, Inc. Method and apparatus for secure scan testing
JP3671948B2 (ja) * 2002-09-24 2005-07-13 ソニー株式会社 半導体集積回路とその試験方法
JP2004170244A (ja) * 2002-11-20 2004-06-17 Matsushita Electric Ind Co Ltd 組み込み自己検査回路
US7490231B2 (en) * 2004-07-23 2009-02-10 Broadcom Corporation Method and system for blocking data in scan registers from being shifted out of a device
JP4262265B2 (ja) * 2006-06-20 2009-05-13 キヤノン株式会社 半導体集積回路
US8397079B2 (en) * 2008-06-04 2013-03-12 Ati Technologies Ulc Method and apparatus for securing digital information on an integrated circuit read only memory during test operating modes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190083996A (ko) * 2018-01-05 2019-07-15 주식회사 아이씨티케이 홀딩스 테스트 모드에서 데이터 보호 장치 및 방법

Also Published As

Publication number Publication date
EP2291667A1 (en) 2011-03-09
JP2011525015A (ja) 2011-09-08
US8051345B2 (en) 2011-11-01
WO2009149160A1 (en) 2009-12-10
US20090307411A1 (en) 2009-12-10
CN102066963A (zh) 2011-05-18

Similar Documents

Publication Publication Date Title
KR20110034631A (ko) 테스트 동작모드 동안 집적회로 상의 디지털 정보를 보호하기 위한 장치 및 방법
US6622184B1 (en) Information processing system
US7117352B1 (en) Debug port disable mechanism
US8549630B2 (en) Trojan-resistant bus architecture and methods
US9165143B1 (en) Image file generation and loading
US7185249B2 (en) Method and apparatus for secure scan testing
US6968420B1 (en) Use of EEPROM for storage of security objects in secure systems
Wang et al. IIPS: Infrastructure IP for secure SoC design
US20110145934A1 (en) Autonomous distributed programmable logic for monitoring and securing electronic systems
US20110314514A1 (en) Method and apparatus for providing scan chain security
JP2003058426A (ja) 集積回路およびその回路構成方法ならびにプログラム
KR20090095843A (ko) 보안 기능을 갖는 프로세서 장치
Zhang et al. Thwarting security threats from malicious FPGA tools with novel FPGA-oriented moving target defense
Dworak et al. A call to action: Securing IEEE 1687 and the need for an IEEE test security standard
US8397079B2 (en) Method and apparatus for securing digital information on an integrated circuit read only memory during test operating modes
JP6771523B2 (ja) メモリー保護装置および方法
Streit et al. Secure boot from non-volatile memory for programmable SoC architectures
Sami et al. End-to-end secure soc lifecycle management
US7254716B1 (en) Security supervisor governing allowed transactions on a system bus
Lee et al. A brief review on jtag security
Tshagharyan et al. Securing test infrastructure of system-on-chips
EP2316041B1 (en) Circuit with testable circuit coupled to privileged information supply circuit
US7254720B1 (en) Precise exit logic for removal of security overlay of instruction space
Kumar et al. A novel holistic security framework for in-field firmware updates
Huang et al. Enhancing Architecture-level Security of SoC Designs via the Distributed Security IPs Deployment Methodology.

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid