KR20110020800A - 보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법 - Google Patents

보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법 Download PDF

Info

Publication number
KR20110020800A
KR20110020800A KR1020107027548A KR20107027548A KR20110020800A KR 20110020800 A KR20110020800 A KR 20110020800A KR 1020107027548 A KR1020107027548 A KR 1020107027548A KR 20107027548 A KR20107027548 A KR 20107027548A KR 20110020800 A KR20110020800 A KR 20110020800A
Authority
KR
South Korea
Prior art keywords
code image
hardware
key
logic
hardware unique
Prior art date
Application number
KR1020107027548A
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 KR20110020800A publication Critical patent/KR20110020800A/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity

Abstract

여기에 개시되는 다양한 실시예들은, 집적 회로(100)가 외부 장치(127)로부터 코드 이미지를 수신하고, 암호 로직(113)을 이용하여 하드웨어 고유 키에 의해 코드 이미지를 암호화함으로써, 하드웨어 고유 코드 이미지(119)를 생성하는 것을 포함하는 방법을 포함하는바, 이 하드웨어 고유 키는 외부 장치(127)에 대해서는 액세스불가능하다. 그런 다음, 집적 회로(100)는 상기 하드웨어 고유 코드 이미지를 저장하며, 이러한 하드웨어 고유 코드 이미지는 하드웨어 고유 키를 사용하여 복호화한 이후에만 실행가능하다. 또한, 상기 방법은 하드웨어 고유 키를 이용하여 암호 로직(113)에 의해 하드웨어 고유 코드 이미지를 복호화할 것을 요청하는 명령을 암호 로직(113)에 전송하는 단계와, 그리고 복호화 이후 부트 소프트웨어(103)에 의해 하드웨어 고유 코드 이미지를 실행하는 단계를 포함한다.

Description

보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법{INTEGRATED CIRCUIT WITH SECURED SOFTWARE IMAGE AND METHOD THEREFOR}
본 발명은 다양한 집적 회로 프로세서들에 의해 실행하기 위한 소프트웨어 이미지들을 보호(secure)하는 것에 관한 것이다.
무선 통신 장치들과 같은 전자 장치들은 기술의 진보, 소비자 요구, 제품 차별화 요구와 같은 마케팅 경향에 근거하여 높은 레벨의 성능을 갖도록 끊임없이 요구되고 있다. 오늘날 이용가능한 프로세싱 파워는, 이러한 많은 요건들을, 프로그램가능한 특성을 통해 높은 레벨의 성능 및 유연성(flexibility)을 제공하는 SOC(System-on-Chip) 집적 회로와 같은 정교한 프로세서들을 이용하여, 충족시킬 수 있다.
결과적으로, 성능들, 새로운 특징들 및 기능들을 제공하기 위해서는, 소프트웨어 및 소프트웨어 개발이 중요하게 되었다. 하지만, 소프트웨어의 보급과 함께, 악의적인 목적을 위한 변경 또는 악용으로부터 소프트웨어를 보호할 필요가 있다. 예를 들어, 소프트웨어는 심지어, 칩의 특정 피쳐들 및 기능들에 대해 의도된 공격들에 의해 집적 회로 레벨에서도 악용되거나 또는 변경될 수도 있다. 동시에, 디버깅(debugging), 업데이트, 또는 다양한 개발 요구를 위해 소프트웨어를 액세스할 필요가 있다. 또한, 1차본(primary copy)이 부패하고 이용가능하게 된 경우에는 소프트웨어의 백업(back-up)을 제공하는 것이 바람직하다. 하지만, 소프트웨어 카피들이 쉽게 액세스가능하게 되는 것은 부적절한데, 왜냐하면 이는 코드의 악용 등을 야기할 수 있기 때문이다.
예를 들어, 소정의 전자 장치, 보다 특정하게는 이 전자 장치 내의 집적 회로에 대해 특정한 다양한 코드 이미지들을 가짐으로써, 이러한 코드 이미지들이 어떠한 다른 장치에 의해 사용되거나 변경될 수 없도록 하는 것이 바람직하다.
여기에 개시되는 다양한 실시예들은, 집적 회로가 외부 장치로부터 코드 이미지를 수신하고, 암호 로직을 이용하여 하드웨어 고유 키(Hardware Unique Key)에 의해 상기 코드 이미지를 암호화함으로써, 하드웨어 고유 코드 이미지를 생성하는 것을 포함하는 방법을 포함하는 바, 이 하드웨어 고유 키는 외부 장치에 대해서는 액세스불가능하다. 그런 다음, 집적 회로는 상기 하드웨어 고유 코드 이미지를 저장하며, 이러한 하드웨어 고유 코드 이미지는 하드웨어 고유 키를 사용하여 복호화한 이후에만 실행가능하다.
또한, 상기 방법은 하드웨어 고유 키를 이용하여 암호 로직에 의해 하드웨어 고유 코드 이미지를 복호화할 것을 요청하는 명령을 전송하는 단계, 및 복호화 이후 부트 소프트웨어에 의해 하드웨어 고유 코드 이미지를 실행하는 단계를 포함한다.
또한, 여기에 개시되는 실시예들은 메모리 및 이 메모리에 결합된 암호 로직을 포함하는 집적 회로를 제공한다. 상기 암호 로직은 하드웨어 고유 키를 이용하여 코드 이미지를 암호화함으로써, 하드웨어 고유 코드 이미지를 생성하며, 상기 하드웨어 고유 키는 상기 집적 회로의 어떤 포트를 통해서도 액세스 불가능하다. 상기 집적 회로는 하드웨어 고유 코드 이미지를 메모리에 저장하는 능력을 더 포함하며, 상기 하드웨어 고유 코드 이미지는 하드웨어 고유 키를 이용한 복호화 이후에만 실행가능하다.
여기에서 개시되는 집적 회로는 또한, 코드 이미지를 수신하기 위해 외부 장치를 제어하는 주변 제어기(peripheral controller)와, 암호 로직에 연결된 메모리 제어기와, 그리고 메모리 제어기에 연결되어, 하드웨어 고유 키를 이용하여 암호 로직에 의해 하드웨어 고유 코드 이미지를 복호할 것을 요청하는 요청을 전송하고, 복호화 이후 상기 하드웨어 고유 코드 이미지를 실행하는 부트 롬(boot ROM)을 포함한다.
여기에 개시되는 집적 회로는 코드 이미지를 수신하기 위해 외부 장치를 제어하는 주변 제어기와, 메모리와, 하드웨어 고유 키 로직과, 그리고 상기 메모리 및 상기 하드웨어 고유 키 로직에 연결된 암호 로직을 포함하며, 여기서 상기 암호 로직은 상기 하드웨어 고유 키 로직에 하드웨어 고유 키에 대한 요청을 전송하고, 상기 요청에 응답하여 상기 하드웨어 고유 키 로직으로부터 하드웨어 고유 키를 수신하고, 이 하드웨어 고유 키를 이용하여 코드 이미지를 암호화함으로써, 하드웨어 고유 코드 이미지를 생성하며(여기서, 상기 하드웨어 고유 키는 집적 회로의 어떤 포트를 통해서도 액세스 불가능하다), 그리고 상기 하드웨어 고유 코드 이미지를 메모리에 저장하며, 상기 하드웨어 고유 코드 이미지는 상기 하드웨어 고유 키를 이용하여 복호화한 이후에만 실행가능하다. 상기 집적 회로는 암호 로직에 연결된 메모리 제어기 및 이 메모리 제어기에 연결된 부트 ROM을 더 포함하며, 상기 부트 ROM은 하드웨어 고유 키를 이용하여 암호 로직에 의해 하드웨어 고유 코드 이미지를 복호화할 것을 요청하는 요청을 암호 로직에 전송하고, 복호화 이후 하드웨어 고유 코드 이미지를 실행한다.
여기에 개시되는 집적 회로는 또한, 메모리에 대한 액세스를 중재하도록 동작하는 메모리 제어기를 포함할 수 있다. 상기 집적 회로는 또한, 부트 ROM에 의한 요청에 응답하여 암호 로직에 명령을 전송함으로써, 암호 로직으로 하여금 랜덤 키를 발생시키게 한다. 여기서, 상기 암호 로직은 또한, 상기 명령에 응답하여 상기 랜덤 키를 발생시키고, 암호화된 랜덤 키를 생성하기 위해 하드웨어 고유 키를 이용하여 상기 랜덤 키를 암호화하고, 상기 암호화된 랜덤 키를 키 저장 메모리에 저장하고, 이러한 암호화된 랜덤 키를 이용하여 코드 이미지를 암호화하도록 동작한다. 대안적으로, 몇몇 실시예들에서, 상기 랜덤 키는 암호화되지 않은 형태(unencrypted form)로 이용될 수도 있다.
여기에 개시되는 집적 회로는 또한 주변 제어기를 더 포함하는데, 이 주변 제어기는 집적 회로의 내부 메모리 내에 플래쉬 로더 코드(flash loader code)의 푸시(push)를 수신하도록 동작하고, 상기 부트 ROM은 상기 플래쉬 로더 코드가 신뢰된 코드(trusted code)인지를 검증하고, 상기 플래쉬 로더 코드를 실행하고, 외부 장치에 대해 챌린지/응답 보안 루틴(challenge/response security routine)을 수행하며, 그리고 상기 챌린지/응답 보안 루틴에 대한 정확한 응답에 응답하여 상기 외부 장치로부터 상기 코드 이미지의 푸쉬를 획득한다.
도 1은 일 실시예에 따른 집적 회로의 블록도이다.
도 2는 일 실시예에 따른 하드웨어 고유 키 로직에 연결된 암호 로직을 도시하는 블록도이다.
도 3은 일 실시예에 따른 집적 회로의 하이 레벨 동작을 설명하는 흐름도이며, 여기서 코드 이미지는 외부 장치로부터 수신되어, 하드웨어 고유 키를 사용하여 암호화(encrypt)된다.
도 4는 하드웨어 고유 키를 사용하여 하드웨어 고유 코드 이미지의 복호화(decrypt)를 요청하기 위해 명령을 전송하는 일 실시예의 동작을 설명하는 흐름도이다.
도 5는 암호 로직이 하드웨어 고유 키 로직으로부터 하드웨어 고유 키를 획득하는 일 실시예의 동작을 설명하는 흐름도이다.
도 6은 일반적인 코드 이미지(generic code image)가 집적 회로 내에 푸쉬(push)되고, 암호화된 랜덤 키(encrypted random key)를 사용하여 암호화되는 일 실시예에 대한 흐름도이다.
도 7은 하드웨어 고유 키를 사용하여 암호화된 랜덤 키를 사용하여 소프트웨어를 복호화하는 일 실시예에 대한 흐름도이다.
도 8은 플래싱 로더(flashing loader)를 이용하는 일 실시예에 대한 흐름도이다.
도 9는 업그레이드가 요구되는 경우 이전에 저장된 코드를 검출하는 것을 설명하는 흐름도이다.
도 10은 하드웨어 고유 키 로직과 암호 로직(cryptographic logic) 간의 보안 통신 라인(secure communication line)을 구비하여, 이들 간에 하드웨어 고유 키 정보를 안전하게 전달하는 일 실시예를 상세히 설명하는 블록도이다.
도 11은 장치 ID, 하드웨어 고유 키 및 록킹 비트(locking bit)를 포함하는 하드웨어 고유 키 정보를 도시하는 비트 맵(bit map)이다.
도 12는 도 10에 도시된 실시예의 동작을 설명하는 흐름도이다.
이제, 도면을 참조하여 설명하는 바, 도면들에서 같은 부호들은 같은 구성요소들을 나타낸다. 도 1은 몇몇 실시예들에서 SOC(System-on-Chip) 집적 회로가 될 수 있는 집적 회로(IC)(100)의 블록도이다. 집적 회로(100)는 이 집적 회로(100)를 외부 장치(127) 및 외부 저장소(129)(하지만, 오직 이것들로만 한정되지 않는다)와 같은 외부 장치들에 연결될 수 있게 하는 물리 접속(131 및 133)과 같은 물리적인 연결들을 갖는다. 외부 장치(127)는 서버, 또는 명령들을 전송 및 수신하기 위해 집적 회로(100)와 통신할 수 있는 프로세서를 갖는 적절한 장치가 될 수 있다. 다시 말해, 외부 장치(127)는 프로토콜을 이용하여 집적 회로(100)와 통신할 수 있으며, 이 프로토콜은 핸드쉐이킹(handshaking), 또는 공개키/개인키 교환(하지만, 오직 이것으로만 한정되지 않는다)을 포함하는 보안 절차들을 포함하는 다른 교섭 절차(negotiation procedure)들을 포함할 수 있다. 외부 저장소(129)는, 예를 들어 SD 메모리, NAND 플래쉬 메모리와 같은 다양한 타입의 저장 장치, 또는 USB 하드 드라이브(하지만 오직 이것으로만 한정되지 않는다)와 같은 임의의 다른 적절한 저장 장치가 될 수 있다. 상기 외부 저장소(129)는 주변 제어기(106)를 통해 집적 회로(100)와 상호 작용을 할 수 있으며, 상기 주변 제어기는 중앙 처리 장치(105)에 연결되어 이 중앙 처리 장치(105)와 상호 작용을 한다. 부가적으로, 상기 중앙 처리 장치(105)는 메모리 제어기(101)에 결합된다. 이 메모리 제어기(101)는 CPU 및 기타 구성요소들에 의한 내부 램(RAM)(107) 및 외부 램(RAM)(117)과 같은 메모리로의 액세스를 중재한다. 또한, 상기 메모리 제어기(101)는, CPU의 지시하에서, 메모리의 다양한 영역들을 보안 메모리로서 마크(mark)한다.
스택 RAM이 될 수 있는 상기 내부 RAM(107)은 집적 회로의 다이 위에 물리적으로 위치될 수 있다. 외부 RAM(117)(예를 들어, DRAM)은 집적 회로(100)의 패키지 내에 물리적으로 위치될 수 있지만, 반드시 메모리 제어기와 같이 동일한 다이 위에 있을 필요는 없다. 하지만, 메모리는 집적 회로(100)의 다이 위에 있든, 아니면 다이로부터 떨어져있든지 간에, 임의의 적절한 장소에 위치될 수 있다. 메모리 제어기(101)는 또한 부트 ROM(103)에 결합된다. 이 부트 ROM(103)은 부트 ROM 소프트웨어 그리고/또는 집적 회로(100)의 부팅 절차(booting procedure)를 제어하고, 집적 회로(100)를 부트업(boot up)시키기 위한 로직을 포함할 수 있다. 예를 들어, 상기 부트 ROM(103)은 이 부트 ROM(103)으로부터 실행되는 소프트웨어를 참조할 수 있으며, 부트 ROM 소프트웨어는 중앙 처리 장치(105)에 의해 실행된다. 다른 실시예들에서, 상기 부트 ROM(103)은 소프트웨어, 및 소프트웨어와 상호작용하거나 또는 소프트웨어와 상관없이 동작하는 로직에 의한 로직 동작들을 포함할 수 있다. 또한, 상기 부트 ROM103)은 보안 메모리를 포함할 수 있는 바, 이 보안 메모리는 집적 회로(100)의 다양한 비-부트 관련 로직(non-boot related logic)에 의한 액세스로부터 로크(lock)된다.
상기 메모리 제어기(101)는 또한 암호화 로직(encryption logic)(102)에 여결될 수 있으며, 이 암호화 로직은 소프트웨어 코드, 또는 비디오 미디어 소프트웨어 등(하지만 오직 이것들로만 한정되지 않는다)의 소프트웨어를 암호화 및 복호화하는 다양한 암호 키들과 같은, 집적 회로(100)에 의해 이용되는 다양한 정보를 암호화한다. 상기 암호화 로직(102)은, 예를 들어 해싱 로직(hashing logic)이 될 수 있는데, 이 해싱 로직은 소프트웨어 코드를 해싱하고, 저장소(예를 들어, 내부 RAM(107) 또는 외부 RAM(117))에 저장하기 위해 메모리 제어기에 해시(hash)를 제공한다. 또한, 상기 메모리 제어기(101)는 암호 로직(cryptographic logic)(113)에 결합된다. 이 암호 로직(113)은, 예를 들어 중앙 처리 장치(105)에 의해 집적 회로(100)에 로드되어 실행될 다양한 소프트웨어 이미지들의 유효성(validity)을 체크하는 데에 이용된다. 몇몇 실시예들에서, 상기 암호 로직(113)은 암호 코어 프로세서(crypto core processor), ASIC, 또는 여기에 제공되는 설명에 따라 소프트웨어 코드를 암호화 및 복호화하는 데에 적합한 다른 적절한 로직이 될 수 있다. 몇몇 실시예들에서, 상기 암호 로직은 난수(random number) 발생기(121), 키 저장 메모리(123) 및 하드웨어 고유 키 저장소(125)를 더 포함할 수 있다.
상기 집적 회로(100)는 이 집적 회로(100) 구성과 관련된 정보를 포함할 수 있는 하드웨어 고유 키 로직(115)을 더 포함할 수 있다. 이 하드웨어 고유 키 로직(115)은 퓨즈(fuse)들을 포함하는데, 이러한 퓨즈들은, 일단 끊어지게 되면(blown), 복구될 수 없다. 따라서, 상기 하드웨어 고유 키 로직(115)은 집적 회로(100) 내의 다양한 소프트웨어를 암호화하는 데에 이용될 수 있는 영구적인 비트들의 세트(permanent set of bits)를 생성한다. 이에 따라, 상기 하드웨어 고유 키 로직(115)은 이미지들을 암호화하는 데에 이용하기 위한 하드웨어 고유 키를 생성하는 바, 이에 대해서는 본원에서 더 설명될 것이다.
상기 하드웨어 고유 키 로직은 암호 로직(113)에 연결되고, 상기 암호 로직(113)과 클럭 로직(clock logic)(114)으로부터의 클럭 신호를 공유한다. 하드웨어 고유 키를 구성하는 하드웨어 고유 키 로직(115) 비트 패턴은 클럭 로직(114)으로부터의 클럭 신호를 이용하여 상기 암호 로직(113) 내로 연속적으로 클럭킹(clocking)될 수 있다. 상기 암호 로직은 하드웨어 고유 키 저장 메모리(125)에 하드웨어 고유 키를 저장할 수 있다. 이러한 하드웨어 고유 키는 집적 회로(100)에 대해 특정하며, 임의의 다른 집적 회로의 경우에서의 임의의 다른 하드웨어 고유 키와 다르다. 상기 하드웨어 고유 키 로직(115)에 의해 포함되고 하드웨어 고유 키 저장 메모리(125) 내에 있는 하드웨어 고유 키는, 집적 회로(100)의 어떤 인터페이스를 통해서도 액세스될 수 없다. 다시 말해, 이러한 하드웨어 고유 키는 하드웨어 고유 키 로직(115)으로부터 판독될 수 없고, 메모리 제어기(101) 또는 집적 회로(100) 내의 어떠한 다른 로직을 통해서도 상기 암호 로직(113)으로부터 판독될 수 없다.
이러한 프로세스는 도 2에서 더 상세히 설명된다. 도 2에 도시된 바와 같이, 하드웨어 고유 키 로직(115)은 시리얼 로더(serial loader)(201)를 포함하며, 이 시리얼 로더는 암호 로직(113) 내의 해당 시리얼 수신기(203)에 결합된다. 하드웨어 고유 키 로직(115)으로부터의 하드웨어 고유 키를 나타내는 비트 패턴은, 클럭 로직(114)에 의해 발생되는 클럭 신호를 이용하여, 상기 시리얼 로더(201)를 통해 상기 암호 로직(113)의 시리얼 수신기(203)에 클럭된다. 상기 시리얼 수신기(203)는 하드웨어 고유 키를 하드웨어 고유 키 저장 메모리(125)에 전달하는데, 이 하드웨어 고유 키 저장 메모리는 암호 로직(113) 외부의 로직에 의해 액세스될 수 없다.
다양한 실시예들에 따르면, 암호 로직(113) 내에 저장된 하드웨어 고유 키는 집적 회로(100) 내에 로드되는 소프트웨어를 암호화하는 데에 이용될 수 있으며, 이에 따라 하드웨어 고유 키를 이용하여 암호화되는 소프트웨어는 집적 회로(100)에 대해 고유하며, 어떠한 다른 집적 호로 또는 장치에 의해 이용될 수 없다. 도 3은 다양한 실시예들의 예시적인 방법을 도시한다. 301에서, 집적 회로는 외부 장치로부터 코드 이미지를 수신한다. 이러한 외부 장치는 서버(예를 들어, 서버(127)), 외부 저장소(예를 들어, NAND 플래시 메모리), 또는 SD 메모리(예를 들어, 외부 저장소(129)가 될 수 있다. 303에서, 상기 코드 이미지가 상기 하드웨어 고유 키를 사용하여 상기 암호 로직(113)에 의해 암호화됨으로써, 하드웨어 고유 코드 이미지를 생성하며, 상기 하드웨어 고유 키는 외부 장치(127)에 대해 액세스가 불가능하다. 마찬가지로, 암호화된 코드 이미지는 어떠한 외부 장치 또는 외부 집적 회로에 의해서도 이용될 수 없다. 305에서, 상기 하드웨어 고유 코드 이미지는 상기 집적 회로(100)에 저장될 수 있는데, 여기서 상기 하드웨어 고유 코드 이미지는, 상기 코드 이미지를 복호화하기 위해 상기 하드웨어 고유 키를 사용하여 복호화 동작을 행한 이후에만 실행가능하다. 예를 들어, 도 1에서, 외부 장치(127)는 코드 이미지(111)를 제공할 수 있는데, 이 코드 이미지는 주변 제어기들(106)을 통해 획득되고, 내부 RAM(107)에 이미지(111)로서 저장될 수 있다. CPU(105)는, 암호 로직(113)이 하드웨어 고유 키 저장 메모리(125)에 저장된 하드웨어 고유 키를 이용하여, 이미지(111)을 암호화할 것을 요청할 수 있다. 이미지(111)를 암호화한 후, 암호화된 이미지는, 예를 들어 도 1에 나타낸 외부 RAM(117) 내에 최종 집적 회로 이미지(119)로서 저장될 수 있다. 이후, 이러한 최종 집적 회로 이미지(119)는 집적 회로(100) 외부의 어떠한 장치에 의해서도 이용될 수 없게 된다.
도 4는 최종 집적 회로 이미지(119)가 중앙 처리 장치(105)에 의해 실행될 수 있는 다양한 실시예들의 방법을 도시한다. 예를 들어, 401에서, 부트 ROM(103)은 하드웨어 고유 키를 사용하여, 하드웨어 고유 코드 이미지인 최종 집적 회로 이미지(119)의 복호화를 요청하기 위해 상기 암호 로직(113)에 명령을 전송할 수 있다. 상기 암호 로직(113)은 외부 RAM(117)으로부터 최종 집적 회로 이미지(119)를 획득한 다음, 이를 하드웨어 고유 키 저장 메모리(125)에 저장된 하드웨어 고유 키를 이용하여 복호화할 수 있다. 403에 나타낸 바와 같이, 상기 부트 ROM(103)은 복호화 이후 하드웨어 고유 코드 이미지를 실행할 수 있게 된다.
도 5는 도 2와 관련하여 이전에 설명된 방법을 도시한다. 501에 나타낸 바와 같이, 상기 암호 로직(113)은 상기 하드웨어 고유 키 로직(115)으로부터 하드웨어 고유 키 데이터를 요청할 수 있다. 그리고, 503에서, 상기 하드웨어 고유 키 로직(115)은, 도 2에 나타낸 제어기(202)를 통해, 시리얼 로드(201)에게 암호 로직의 시리얼 수신기(203)에 하드웨어 고유 키 패턴을 전송할 것을 지시한다. 505에 나타낸 바와 같이, 암호 로직(113)은 하드웨어 고유 키 저장 메모리(125)에 하드웨어 고유 키를 저장한다. 도 6은, 601에 나타낸 바와 같이, 일반적인 코드 이미지가 집적 회로(100) 내로 푸쉬되는 다양한 실시예들을 상세히 설명한다. 비록 도 6에 나타내지는 않았지만, 부트 ROM(103) 소프트웨어는 집적 회로(100) 내레 푸쉬된 일반적인 코드가 유효한 코드인 지를 검증할 수 있다. 예를 들어, 집적 회로(100)는, 외부 장치(127)가 집적 회로(100)에 대한 허가된(authorized) 소프트웨어 제공자인지를 검증하기 위해, 이러한 외부 장치(127)와 집적 회로(100) 간에 챌린지/응답 또는 어떠한 다른 적절한 보안 메커니즘을 수행할 수 있다. 따라서, 실시예들에 따르면, 601에 나타낸 바와 같이 IC에 푸시되는 일반적인 코드 이미지는, 코드 이미지에 대한 어떠한 추가의 동작이 수행되기 전에, 집적 회로(100)에 의해 검증될 것이다. 603에서, 집적 회로(100)는 다양한 메모리 위치들을 판독함으로써, 내부 RAM(107) 또는 외부 RAM(117)과 같은 메모리 내에 상기 일반적인 코드 이미지의 이전에 저장된 어떠한 암호화된 버전도 존재하지 않음을 검출할 것이다. 이 동작은, 예를 들어 부트 ROM(103)에 의해 수행될 수 있다.
603에서, 이전에 저장된 어떠한 버전도 위치하지 않는다고 가정하면, 부트 ROM(103)은 암호 로직(113)에게 랜덤 키를 발생시킬 것을 요청하는 명령을 전송할 수 있다. 607에 나타낸 바와 같이, 암호 로직(113)은 요청되는 랜덤 키를 발생시키기 위해 난수 발생기(121)를 사용할 수 있는데, 몇몇 실시예들에서, 이러한 난수 발생기는 진난수 발생기(true random number generator, TRNG)가 될 수 있다. 609에 나타낸 바와 같이, 암호 로직(113)은 하드웨어 고유 키 저장소(125)에 저장된 하드웨어 고유 키를 이용하여 랜덤키를 암호화하며, 이후 부트 ROM(103)은 암호화된 랜덤 키를 메모리 내의 적절한 위치에 저장할 수 있다. 그런 다음, 611에 나타낸 바와 같이, 암호 로직은 암호화된 랜덤 키를 이용하여 코드 이미지(111) 등의 코드 이미지를 암호화한 다음, 암호화된 코드 이미지를, 예를 들어 최종 집적 회로 이미지(119)로서 저장할 수 있다.
이러한 최종 집적 회로 이미지 코드를 실행하기 위해, 부트 ROM 소프트웨어(103)는 랜덤 키를 암호화된 형태로 암호 로직(113)에 전송하고, 암호 로직(113)에게 랜덤 키를 이용하여 상기 최종 집적 회로 이미지(119)를 복호화할 것을 요청한다. 몇몇 실시예들에서, 이러한 랜덤 키는 하드웨어 고유 키를 사용하여 복호화되어야 한다. 703에 나타낸 바와 같이, 랜덤 키를 이용하여 최종 집적 회로 이미지(119)를 복호화하라는 부트 ROM(113)으로부터의 요청에 의해, 이러한 최종 집적 회로 이미지(119)는 암호 로직에 전달될 것이다. 705에서, 상기 암호 로직은 복호화된 이미지에 대해 추가적인 해싱 테스트(hashing test)를 실행할 수 있으며, 이러한 해시 역시 하드웨어 고유 키를 이용하여 암호화된다.
도 8은 상기 집적 회로(100)가 신뢰 플래쉬 로더 코드(trusted flash loader code)의 푸쉬를 수신함으로써 처음에 플래쉬(flash)될 수 있는 다른 실시예를 도시한다. 일반적인 코드 이미지는, 801로 나타낸 바와 같이, 처음에 집적 회로 내에 푸쉬되거나, 또는 대안적으로는, 809로 나타낸 바와 같이, 원격 서버(127), 또는 외부 저장소(129) 등의 로컬 장치(local device)를 통해 집적 회로 내에 푸쉬될 수 있다. 2개의 실시예들 중 어느 쪽이든지 간에, 집적 회로(100) 내로의 신뢰 플래쉬 로더 코드의 푸쉬는 803에 도시된 바와 같이 일어날 것이다. 부트 ROM(103)은, 예를 들어 보안 해시(secure hash)를 이용하여 플래쉬 로더 코드를 체크할 것이다. 이것은 당업자에게 이해되는, 예를 들어 공개키/개인키 쌍 또는 어떠한 다른 적절한 보안 메커니즘을 이용할 것을 필요로 한다. 807에서, 도 1에 도시된 플래시 로딩 모듈(109)과 같은 플래시 로더 코드는 외부 서버(127)와 같은 외부 장치에 대해 챌린지/응답을 수행하여, 809에 나타낸 바와 같이 일반적인 코드의 푸쉬를 획득한다. 다양한 실시예들에 따르면, 이러한 일반적인 코드는 이전에 설명한 바와 같이 하드웨어 고유 키를 이용하여 암호화될 수 있다.
도 9는 일반적인 코드 이미지가 집적 회로에 제공되는 다양한 상황들에 대한 집적 회로(100)의 동작을 도시한다. 예를 들어, 집적 회로 내에 일반적인 코드 이미지가 푸쉬되면, 부트 ROM(103)은, 901에 나타낸 바와 같이, 다양한 메모리 위치들을 판독함으로써 이전에 저장된 어떠한 암호화된 버전도 존재하지 않음을 검출하기 위해 체크를 행한다. 903에 나타낸 바와 같이, 부트 ROM은, 예를 들어 구 버전(older version)이 메모리에 존재하지만, 업그레이드 실시의 목적으로 신 버전(newer version)이 장치 내에 푸쉬될 때에, 코드가 존재하지만 새로운 코드가 여전히 요구됨을 검출할 수 있다. 907에서, 부트 ROM(103)은 상기 설명한 암호화 프로세스, 또는 도 8과 관련하여 설명한 플래시 로더 프로세스를 개시할 수 있다.
도 10은 하드웨어 고유 키 로직(115)으로부터 암호 로직(113)에 하드웨어 고유 키 정보를 안전하게 전송하는 일 실시예를 도시한다. 도시된 실시예에 따르면, 하드웨어 고유 키 로직(115) 및 암호 로직(113)은 요청 라인(request line)(1001), 유효화 라인(validation line)(1003) 및 데이터 라인(1005)으로 이루어지는 보안 통신 라인을 갖는다. 이러한 보안 통신 라인은 집적 회로의 모든 스캔 체인들(scan chains)로부터, 그리고 모든 테스트 메커니즘으로부터 분리되며, 이에 따라 암호 로직(113) 이외의 어떠한 메커니즘도 하드웨어 고유 키 정보를 액세스할 수 없다. 상기 하드웨어 고유 키 로직(115)은 하드웨어 고유 키, 및 예를 들어 집적 회로의 제조시와 같은 보안 환경에서는 장치 ID에 의해 최초에 프로그램된다.
도 11은 예시적인 하드웨어 고유 키 정보를 도시하는 비트 맵이다. 예를 들어, 몇몇 실시예들에서, 하드웨어 고유 키 정보는 장치 ID(1101) 및 하드웨어 고유 키(1103)를 포함할 수 있다. 몇몇 실시예들에서, 이러한 하드웨어 고유 키 정보는 로크(lock)(1105)를 더 포함할 수 있으며, 이 로크는 단일 비트가 될 수 있다. 예로서, 장치 ID(110)는 128 비트 길이가 될 수 있고, 하드웨어 고유 키는 128 비트 길이가 될 수 있으며, 그리고 상기 로크는 단일 비트가 될 수 있다. 이에 따라, 암호 로직(113)은 장치 ID(1101)를 저장하기 위한 장치 ID 저장소(1007)를 포함할 수 있다.
도 12는 도 10에 도시된 실시예의 동작을 설명한다. 1201에서, 하드웨어 고유 키 로직(115) 또는 집적 회로의 리셋이 이루어진다. 1203에서, 하드웨어 고유 키 로직(115)은 상기 설명한 보안 환경 프로그래밍에 해당하는 보안된 내부 고정 비트 영역(secure internal fixed bit region)을 판독한다. 1205에서, 하드웨어 고유 키 로직(115)은 비트 패턴에 대해 순환 중복 검사(CRC)를 수행하여 그 유효성을 보증할 수 있다. 1207에 나타낸 바와 같이, 암호 로직(113)은 보안 데이터 요청 라인(1001)을 통해 하드웨어 고유 키 정보를 요청할 수 있다. 그런 다음, 하드웨어 고유 키 로직은 유효화 라인(1003)을 통해 하드웨어 고유 키 정보의 유효성을 확인하고, 1209에 나타낸 바와 같이, 데이터 라인(1005)을 통해 암호 로직(113)에 하드웨어 고유 키 정보를 제공할 수 있다. 도 11에 도시한 바와 같이, 로크 비트(1105)가 직렬 라인 상의 첫 번째 비트로서 암호 로직(113)에 전송되고, 하드웨어 고유 키(103)(이는, 예를 들어 128 비트가 될 수 있다)가 그 다음으로 전송되고, 장치 ID(1101)(이것 역시 128 비트가 될 수 있다)가 그 다음으로 전송되며, 몇몇 실시예들에서, 이러한 직렬 전송은 최하위 비트로부터 최상위 비트로 이루어진다. 상기 로크 비트는 암호 로직(113)에 대한 플래그(flag)의 기능을 한다. 이후, 1211에 나타낸 바와 같이, 암호 로직(113)은 요청 라인(1001) 상에서 상기 요청을 디어서트(de-assert)한다. 데이터 라인(1005)을 통한 하드웨어 고유 키 정보의 전송은 될 수 있다.
상기 상세한 설명 및 설명된 예들은 단지 예시 및 설명을 위해 제시된 것으로서, 본원 발명을 한정하기 위한 것이 아니다. 예를 들어, 설명된 동작들은 임의의 적절한 방식으로 이루어질 수 있다. 상기 방법 단계들은, 설명된 동작 및 결과들을 여전히 제공하면서, 임의의 적절한 순서로 행해질 수 있다. 따라서, 본 실시예들은 상기 개시되어 본원에서 청구되는 기본적인 기초 원리들의 정신 및 범위 내에 있는 임의의 모든 수정들, 변형들 또는 등가들을 포괄하는 것으로 의도된다.

Claims (20)

  1. 하드웨어 고유 코드 이미지(hardware unique code image)를 생성하기 위해, 하드웨어 고유 키(hardware unique key)를 이용하여 암호 로직(cryptographic logic)에 의해, 외부 장치로부터의 코드 이미지를 암호화하는 단계와, 여기서 상기 하드웨어 고유 키는 상기 외부 장치에 대해 액세스불가능하며; 그리고
    상기 하드웨어 고유 코드 이미지를 저장하는 단계를 포함하며,
    여기서, 상기 하드웨어 고유 코드 이미지는 상기 하드웨어 고유 키를 이용하여 상기 하드웨어 고유 코드 이미지를 복호화한 이후에만 실행가능한 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 하드웨어 고유 키를 이용하여 상기 암호 로직에 의해 상기 하드웨어 고유 코드 이미지를 복호화할 것을 요청하는 명령을 상기 암호 로직에 전송하는 단계와;
    상기 하드웨어 고유 코드 이미지를 복호화하는 단계와; 그리고
    상기 복호화 이후 부트 소프트웨어(boot software)에 의해 상기 하드웨어 고유 코드 이미지를 실행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 하드웨어 고유 코드 이미지를 생성하기 위해, 하드웨어 고유 키를 이용하여 암호 로직에 의해, 외부 장치로부터의 코드 이미지를 암호화하는 단계는,
    상기 암호 로직에게 랜덤 키(random key)를 발생시킬 것을 요청하는 명령을 상기 암호 로직에 전송하는 단계와;
    상기 암호 로직에 의해 상기 랜덤 키를 발생시키는 단계와;
    상기 하드웨어 고유 키를 사용하여 상기 암호 로직에 의해 상기 랜덤 키를 암호화하는 단계와;
    상기 암호화된 랜덤 키를 메모리에 저장하는 단계와;
    상기 암호화된 랜덤 키를 사용하여 상기 암호 로직에 의해 상기 코드 이미지를 암호화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 외부 장치로부터 상기 코드 이미지를 수신한 후, 상기 코드 이미지의 어떠한 이전 암호화된 버전도 메모리에 존재하지 않음을 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서,
    상기 외부 장치로부터 상기 코드 이미지를 수신한 후, 상기 코드 이미지의 이전 암호화된 버전이 메모리에 존재하며, 코드 업데이트가 요구됨을 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서,
    상기 코드 이미지의 이전 암호화된 버전이 메모리에 존재하며, 코드 업데이트가 요구됨을 결정하는 단계 이후,
    플래싱 로더 코드(flashing loader code)를 메모리에 푸시(push)하는 단계와;
    부트 소프트웨어에 의해, 상기 플래싱 로더 코드가 신뢰된(trusted) 것인 지를 검증하는 단계와;
    상기 플래싱 로더 코드를 실행시키는 단계와;
    상기 외부 장치에 대해 챌린지/응답 보안 루틴(challenge/response security routine)을 수행하는 단계와; 그리고
    상기 외부 장치로부터 코드 이미지의 푸시를 획득하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 하드웨어 고유 키를 이용하여 암호 로직에 의해, 외부 장치로부터의 코드 이미지를 암호화하는 단계 이전에,
    하드웨어 고유 키 시리얼 로더(hardware unique key serial loader)로부터 상기 하드웨어 고유 키를 요청하는 단계와;
    시리얼 수신기에 의해 상기 시리얼 로더로부터, 상기 하드웨어 고유키에 대응하는 시리얼 비트들의 세트를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 집적 회로로서,
    메모리와;
    상기 메모리에 결합된 암호 로직을 포함하여 구성되며,
    여기서, 상기 암호 로직은,
    하드웨어 고유 키를 이용하여 코드 이미지를 암호화함으로써, 하드웨어 고유 코드 이미지를 생성하고, 상기 하드웨어 고유 키는 상기 집적 회로의 어떤 포트를 통해서도 액세스 불가능하며; 그리고
    상기 하드웨어 고유 코드 이미지를 메모리에 저장하며, 상기 하드웨어 고유 코드 이미지는 상기 하드웨어 고유 키를 이용하여 상기 하드웨어 고유 코드 이미지를 복호화한 이후에만 실행가능한 것을 특징으로 하는 집적 회로.
  9. 제 8 항에 있어서,
    상기 코드 이미지를 수신하기 위해 외부 장치를 제어하는 주변 제어기(peripheral controller)와;
    상기 암호 로직에 연결된 메모리 제어기와; 그리고
    상기 메모리 제어기에 연결된 부트 ROM을 더 포함하며,
    여기서, 상기 부트 ROM은,
    상기 하드웨어 고유 키를 이용하여 상기 암호 로직에 의해 상기 하드웨어 고유 코드 이미지를 복호화할 것을 요청하는 요청을 상기 암호 로직에 전송하며; 그리고
    상기 복호화 이후 상기 하드웨어 고유 코드 이미지를 실행시키는 것을 특징으로 하는 집적 회로.
  10. 제 8 항에 있어서,
    상기 메모리 및 상기 암호 로직에 연결된 CPU를 더 포함하며,
    여기서, 상기 메모리 제어기는, 상기 메모리 제어기에 의한 상기 요청에 응답하여, 상기 암호 로직이 랜덤 키를 발생시키도록 상기 암호 로직에 명령을 전송하고,
    상기 암호 로직은,
    상기 명령에 응답하여 상기 랜덤 키를 발생시키고,
    상기 하드웨어 고유 키를 이용하여 상기 랜덤 키를 암호화함으로써, 암호화된 랜덤 키를 생성하고,
    상기 암호화된 랜덤 키를 키 저장 메모리(key storage memory)에 저장하며, 그리고
    상기 암호화된 랜덤 키를 이용하여 상기 코드 이미지를 암호화하는 것을 특징으로 하는 집적 회로.
  11. 제 9 항에 있어서, 상기 부트 ROM은 또한,
    상기 외부 장치로부터 상기 코드 이미지를 수신한 후, 상기 집적 회로의 내부 메모리에 상기 코드 이미지의 어떠한 이전 암호화된 버전도 존재하지 않음을 결정하는 것을 특징으로 하는 집적 회로.
  12. 제 9 항에 있어서, 상기 부트 ROM은 또한,
    상기 외부 장치로부터 상기 코드 이미지를 수신한 후, 상기 집적 회로의 내부 메모리에 상기 코드 이미지의 이전 암호화된 버전이 존재함을 결정하고, 그리고
    상기 코드 이미지의 코드 업데이트가 요구됨을 결정하는 것을 특징으로 하는 집적 회로.
  13. 제 12 항에 있어서,
    상기 주변 제어기는 또한, 상기 집적 회로의 상기 내부 메모리 내로 플래싱 로더 코드의 푸시를 수신하고,
    상기 부트 ROM은 또한, 상기 플래싱 로더 코드가 신뢰된 것인지를 검증하고, 상기 플래싱 로더 코드를 실행하도록 동작하며,
    상기 플래싱 로더 코드는, 상기 외부 장치에 대해 챌린지/응답 보안 루틴을 수행하고, 상기 챌린지/응답 보안 루틴에 대한 정확한 응답에 응답하여 상기 외부 장치로부터 상기 코드 이미지의 푸시를 획득하는 것을 특징으로 하는 집적 회로.
  14. 제 8 항에 있어서,
    상기 암호 로직에 연결된 하드웨어 고유 키 로직을 더 포함하며,
    상기 하드웨어 고유 키 로직은,
    상기 하드웨어 고유 키에 대한 상기 암호 로직으로부터 요청을 수신하고,
    상기 요청에 응답하여 상기 암호 로직에 상기 하드웨어 고유 키를 전송하는 것을 특징으로 하는 집적 회로.
  15. 제 14 항에 있어서,
    상기 하드웨어 고유 키 로직은 시리얼 로더(serial loader)를 더 포함하고,
    상기 암호 로직은, 상기 하드웨어 고유 키 로직의 상기 시리얼 로더에 연결된 시리얼 수신기를 더 포함하고, 상기 시리얼 수신기는 상기 시리얼 로더로부터 시리얼 비트들의 세트를 수신하며, 상기 시리얼 비트들의 세트는 상기 하드웨어 고유 키에 대응하는 것을 특징으로 하는 집적 회로.
  16. 제 15 항에 있어서,
    상기 하드웨어 고유 키 로직은 처음에 미리 결정된 비트 패턴(predetermined bit pattern)으로 구성가능하며, 상기 비트 패턴은 상기 하드웨어 고유 키에 대응하는 상기 직렬 비트들의 세트를 생성하기 위한 것이며, 상기 하드웨어 고유 키 로직은 초기 구성 이후 상기 미리 결정된 비트 패턴으로 영구적으로 구성되는 것을 특징으로 하는 집적 회로.
  17. 제 10 항에 있어서,
    상기 암호 로직은 상기 랜덤 키를 발생시키는 난수 발생기 로직(random number generator logic)을 더 포함하는 것을 특징으로 하는 집적 회로.
  18. 집적 회로로서,
    코드 이미지를 수신하기 위해 외부 장치를 제어하는 주변 제어기와;
    메모리와;
    하드웨어 고유 키 로직과;
    상기 메모리 및 상기 하드웨어 고유 키 로직에 연결된 암호 로직과;
    상기 암호 로직에 연결된 메모리 제어기와; 그리고
    상기 메모리 제어기에 연결된 부트 ROM을 포함하며,
    여기서, 상기 암호 로직은,
    상기 하드웨어 고유 키 로직에 하드웨어 고유 키에 대한 요청을 전송하고,
    상기 요청에 응답하여 상기 하드웨어 고유 키 로직으로부터 하드웨어 고유 키를 수신하고,
    상기 하드웨어 고유 키를 이용하여 상기 코드 이미지를 암호화함으로써, 하드웨어 고유 코드 이미지를 생성하고, 여기서 상기 하드웨어 고유 키는 상기 집적 회로의 어떤 포트를 통해서도 액세스 불가능하며, 그리고
    상기 하드웨어 고유 코드 이미지를 메모리에 저장하며, 상기 하드웨어 고유 코드 이미지는 상기 하드웨어 고유 키를 이용하여 상기 하드웨어 고유 코드 이미지를 복호화한 이후에만 실행가능하며,
    상기 부트 ROM은,
    상기 하드웨어 고유 키를 이용하여 상기 암호 로직에 의해 상기 하드웨어 고유 코드 이미지를 복호화할 것을 요청하는 요청을 상기 암호 로직에 전송하고,
    상기 복호화 이후 상기 하드웨어 고유 코드 이미지를 실행하는 것을 특징으로 하는 집적 회로.
  19. 제 18 항에 있어서,
    상기 주변 제어기, 상기 메모리, 상기 하드웨어 고유 키 로직, 상기 암호 로직, 상기 메모리 제어기 및 상기 부트 ROM에 연결된 CPU를 더 포함하며,
    여기서, 상기 CPU는, 상기 부트 ROM에 의한 상기 요청에 응답하여, 상기 암호 로직이 랜덤 키를 발생시키도록 상기 암호 로직에 명령을 전송하고,
    상기 암호 로직은 또한,
    상기 명령에 응답하여 상기 랜덤 키를 발생시키고,
    상기 하드웨어 고유 키를 이용하여 상기 랜덤 키를 암호화함으로써, 암호화된 랜덤 키를 생성하고,
    상기 암호화된 랜덤 키를 키 저장 메모리에 저장하며, 그리고
    상기 암호화된 랜덤 키를 이용하여 상기 코드 이미지를 암호화하는 것을 특징으로 하는 집적 회로.
  20. 제 19 항에 있어서,
    상기 주변 제어기는 또한 상기 집적 회로의 상기 내부 메모리 내로 플래싱 로더 코드의 푸쉬를 수신하며, 그리고
    상기 부트 ROM은,
    상기 플래싱 로더 코드가 신뢰된 것인 지를 검증하고,
    상기 플래싱 로더 코드를 실행시키고,
    상기 외부 장치에 대해 챌린지/응답 보안 루틴을 수행하며, 그리고
    상기 챌린지/응답 보안 루틴에 대한 정확한 응답에 응답하여, 상기 외부 장치로부터 상기 코드 이미지의 푸시를 획득하는 것을 특징으로 하는 집적 회로.
KR1020107027548A 2008-05-16 2009-05-14 보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법 KR20110020800A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/122,444 US20090285390A1 (en) 2008-05-16 2008-05-16 Integrated circuit with secured software image and method therefor
US12/122,444 2008-05-16

Publications (1)

Publication Number Publication Date
KR20110020800A true KR20110020800A (ko) 2011-03-03

Family

ID=41203689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027548A KR20110020800A (ko) 2008-05-16 2009-05-14 보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법

Country Status (6)

Country Link
US (1) US20090285390A1 (ko)
EP (1) EP2286539A1 (ko)
JP (1) JP2011522469A (ko)
KR (1) KR20110020800A (ko)
CN (1) CN102027707A (ko)
WO (1) WO2009140487A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464011B2 (en) * 2008-10-27 2013-06-11 Advanced Micro Devices, Inc. Method and apparatus for providing secure register access
US9058491B1 (en) 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
US9336410B2 (en) 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
TWI497344B (zh) * 2010-05-17 2015-08-21 Via Tech Inc 微處理器及產生不可預測之鑰的方法
US8774407B2 (en) * 2010-08-25 2014-07-08 Cisco Technology, Inc. System and method for executing encrypted binaries in a cryptographic processor
PT2503518E (pt) * 2011-03-22 2013-09-09 Kapsch Trafficcom Ag Processo de validação de uma transacção de portagens
US9628875B1 (en) 2011-06-14 2017-04-18 Amazon Technologies, Inc. Provisioning a device to be an authentication device
US9639825B1 (en) * 2011-06-14 2017-05-02 Amazon Technologies, Inc. Securing multifactor authentication
JP6182371B2 (ja) * 2013-06-28 2017-08-16 ルネサスエレクトロニクス株式会社 半導体集積回路を含むシステム
KR102277666B1 (ko) * 2014-06-30 2021-07-15 삼성전자 주식회사 영상처리장치 및 그 제어방법
US10303626B2 (en) * 2015-03-31 2019-05-28 Cavium, Llc. Approach for chip-level flop insertion and verification based on logic interface definition
EP3373178A1 (en) * 2017-03-08 2018-09-12 Secure-IC SAS Comparison of execution context data signatures with references
JP6926671B2 (ja) * 2017-05-22 2021-08-25 株式会社デンソー 電子制御装置および電子制御装置における鍵登録方法
US10643006B2 (en) * 2017-06-14 2020-05-05 International Business Machines Corporation Semiconductor chip including integrated security circuit
US10587776B2 (en) 2017-07-24 2020-03-10 Samsung Electronics Co., Ltd. Electronic device and method for controlling the electronic device
US10949546B2 (en) 2017-08-02 2021-03-16 Samsung Electronics Co., Ltd. Security devices, electronic devices and methods of operating electronic devices
US10979232B2 (en) * 2018-05-31 2021-04-13 Motorola Solutions, Inc. Method for provisioning device certificates for electronic processors in untrusted environments
US20200210534A1 (en) * 2018-12-31 2020-07-02 Realtek Semiconductor Corporation Integrated circuitry development system, integrated circuitry development method, and integrated circuitry
CN110456260A (zh) * 2019-07-01 2019-11-15 南京邮电大学 一种密钥隔离安全扫描链电路

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4633388A (en) * 1984-01-18 1986-12-30 Siemens Corporate Research & Support, Inc. On-chip microprocessor instruction decoder having hardware for selectively bypassing on-chip circuitry used to decipher encrypted instruction codes
CA1238427A (en) * 1984-12-18 1988-06-21 Jonathan Oseas Code protection using cryptography
US4817140A (en) * 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5222133A (en) * 1991-10-17 1993-06-22 Wayne W. Chou Method of protecting computer software from unauthorized execution using multiple keys
US7055040B2 (en) * 1999-04-02 2006-05-30 Hewlett-Packard Development Company, L.P. Method and apparatus for uniquely and securely loading software to an individual computer
US7313828B2 (en) * 2001-09-04 2007-12-25 Nokia Corporation Method and apparatus for protecting software against unauthorized use
US20030084332A1 (en) * 2001-10-26 2003-05-01 Koninklijke Philips Electronics N.V. Method for binding a software data domain to specific hardware
US7475254B2 (en) * 2003-06-19 2009-01-06 International Business Machines Corporation Method for authenticating software using protected master key
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US7142891B2 (en) * 2003-10-10 2006-11-28 Texas Instruments Incorporated Device bound flashing/booting for cloning prevention
US7421588B2 (en) * 2003-12-30 2008-09-02 Lenovo Pte Ltd Apparatus, system, and method for sealing a data repository to a trusted computing platform
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8239673B2 (en) * 2004-04-08 2012-08-07 Texas Instruments Incorporated Methods, apparatus and systems with loadable kernel architecture for processors
EP2005642A4 (en) * 2006-04-07 2011-12-21 Intel Corp METHOD AND DEVICE FOR CONNECTING AN EXTERNAL CODE IMAGE WITH A PRIVATE ON-CHIP KEY
US8190917B2 (en) * 2006-09-12 2012-05-29 International Business Machines Corporation System and method for securely saving and restoring a context of a secure program loader
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
US8150039B2 (en) * 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US8214630B2 (en) * 2009-02-24 2012-07-03 General Instrument Corporation Method and apparatus for controlling enablement of JTAG interface

Also Published As

Publication number Publication date
WO2009140487A1 (en) 2009-11-19
JP2011522469A (ja) 2011-07-28
US20090285390A1 (en) 2009-11-19
CN102027707A (zh) 2011-04-20
EP2286539A1 (en) 2011-02-23

Similar Documents

Publication Publication Date Title
KR20110020800A (ko) 보안 소프트웨어 이미지를 갖는 집적 회로 및 그 방법
US8560820B2 (en) Single security model in booting a computing device
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US7849331B2 (en) Program update method and server
CN109937419B (zh) 安全功能强化的设备的初始化方法及设备的固件更新方法
US8782388B2 (en) Information processing apparatus, method, and computer-readable storage medium that encrypt data in a blob based on a hash value
US20090259855A1 (en) Code Image Personalization For A Computing Device
US20090193261A1 (en) Apparatus and method for authenticating a flash program
JP4791250B2 (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
US11481523B2 (en) Secure element
US11533172B2 (en) Apparatus and method for securely managing keys
US11874928B2 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
CN117763587A (zh) 一种算法加密的处理方法、装置、设备及介质
JP2007272923A5 (ko)
JP2007272923A (ja) サーバ
JP2010044792A (ja) セキュアデバイス、集積回路および暗号化方法

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