KR20040101342A - 집적 시스템 내에서의 초기화 방법, 관리 방법, 업데이트방법 및 복원 방법 - Google Patents

집적 시스템 내에서의 초기화 방법, 관리 방법, 업데이트방법 및 복원 방법 Download PDF

Info

Publication number
KR20040101342A
KR20040101342A KR10-2004-7014979A KR20047014979A KR20040101342A KR 20040101342 A KR20040101342 A KR 20040101342A KR 20047014979 A KR20047014979 A KR 20047014979A KR 20040101342 A KR20040101342 A KR 20040101342A
Authority
KR
South Korea
Prior art keywords
integrated system
data
software
control function
access control
Prior art date
Application number
KR10-2004-7014979A
Other languages
English (en)
Other versions
KR100809977B1 (ko
Inventor
포스터에릭엠
홀윌리엄이
로수마르셀-카탈린
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20040101342A publication Critical patent/KR20040101342A/ko
Application granted granted Critical
Publication of KR100809977B1 publication Critical patent/KR100809977B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

집적 시스템(200) 내에서 보안 운영(secure operation)을 초기화(initializing), 관리(maintaining), 업데이트(updating) 및 복원(recovering)하는 기법이 제공되어 있다. 집적 시스템(200) 내의 데이터 액세스 제어 기능부(240)를 이용하는 이러한 기법은 집적 시스템 내에서 현재 레벨의 소프트웨어를 가지고 다음 레벨의 소프트웨어를 인증(authenticating)하는 것을 포함한다. 이러한 인증은 다음 레벨의 소프트웨어로 제어가 전달되기 전에 수행된다. 또한, 집적 시스템의 운영 특성(operational characteristic)을 수정하는 다음 레벨의 소프트웨어의 능력은 데이터 액세스 제어 기능부(240)를 이용하여 선택적으로 제한될 수 있다. 또한, 집적 시스템(200)의 보안 운영을 초기화하고, 제 1 키 세트를 이용하여 암호화(encrypted)된 데이터를 제 2 키 세트를 이용하여 암호화된 데이터로 변환하고, 집적 시스템(200) 내의 소프트웨어와 키를 업데이트하고, 트리거 이벤트(trigger event)에 후속하여 집적 시스템(200)의 기능을 복원하는 기법이 제공되어 있다.

Description

집적 시스템 내에서의 초기화 방법, 관리 방법, 업데이트 방법 및 복원 방법{INITIALIZING, MAINTAINING, UPDATING AND RECOVERING SECURE OPERATION WITHIN AN INTEGRATED SYSTEM EMPLOYING A DATA ACCESS CONTROL FUNCTION}
오늘날 다수의 마스터 기능(master function)이 단일 시스템 칩 상에 공통으로 집적되고 있다. 먼저 다수의 이산 소자를 단일 칩 상에 집적시키기 위한 아키텍처를 정의할 때, 외부 장치로의 액세스가 문제가 될 수 있다. 예를 들면, MPEG 비디오 디코더 시스템은 때때로 다양한 데이터 영역을 위해 외부 메모리를 사용하거나 프레임 버퍼(frame buffers) 등과 같은 버퍼를 사용한다. 종래 기술에서 이러한 외부 메모리는 DRAM 또는 SDRAM 기법을 사용하여 구현되었다.
본 기술 분야에 있어서 오프-칩 장치(off-chip devices)를 액세스하기 위해서는 2가지의 접근법이 일반적이다. 그 중 한가지의 접근법에서는, 각각의 온-칩 기능성 유닛(on-chip function unit)이 이러한 특정 유닛 전용으로 제공된 데이터버스를 통해 요구되는 외부 장치에 액세스한다. 이 접근법은 국부적으로 외부 장치를 액세스하는 데 있어서 유효하긴 하지만, 집적 시스템 내에서 전체적으로 볼 때에는 최적의 대책이 될 수 없다. 예를 들어, 각각의 기능은 그 자신의 외부 메모리 영역에 대한 완전한 액세스를 가질 수 있겠지만, 집적 시스템의 기능들 사이에는 공유 액세스가 존재하지 않는다. 따라서, 때때로 시스템의 하나의 메모리 영역으로부터 다른 메모리 영역으로 데이터를 전송할 필요가 있다. 이는 명백하게 데이터 전송량을 증가시키고, 공유형 메모리 시스템에 비해서 시스템의 전체 성능을 저하시킬 수 있다.
다른 접근법은 집적 시스템 내에서 단일 공통 버스를 사용하는 것으로서, 이 접근법은 시스템의 하나 이상의 기능성 유닛이 단일 포트를 통해 외부 장치와 통신할 수 있게 한다. 이 접근법은 장치의 공유를 가능하게 하기는 하지만, 이 접근법에는 집적 시스템 내의 컨텐츠 또는 다른 중요한 정보에 대한 액세스를 제어하는 것과 관련된 하나의 문제점이 존재한다. 예를 들어, 집적된 설계 내의 대형 공통 메모리 풀(common memory pool)을 이용하면, 전송 디멀티플렉서(transport demultiplxer)에 의해서 셋톱박스(set-top box)의 디코더에 공급되는 압축된 데이터 등과 같이 보호되는 메모리 공간에 있는 데이터에 대한 무허가 액세스를 방지하는 것이 어려워진다. 이는 프로그래밍 인터페이스가 개방되어 있고, 외부 확장이 요구되는 시스템에서 더욱 그러하다. 각각의 기능성 마스터는 메모리 공간을 액세스할 수 있지만, 임의의 액세스가 신뢰성있는 마스터에 의한 것인지 또는 예를 들면, 비신뢰성 마스터(untrusted master) 또는 개방 마스터(open master)를 통해 입력되는 외부로부터의 요청에 의한 것인지 여부를 구별할 수 없다.
추가하여, 다수의 기능성 마스터를 구비하는 시스템-온-칩(system-on-chip) 설계를 가지고 공유형 메모리를 이용하여 작업을 수행할 경우에, 특히 데이터가 장치의 시스템 프로그래밍 코드를 포함할 때에는 허가받지 않은 액세스로부터 데이터를 보호하는 메커니즘을 제공하는 것이 바람직하다. 보다 구체적으로는, 시스템 코드가 보안 상태로 유지되고, 의도되는 기능을 수행한다는 것을 확인함으로써, 보안 운영 환경의 초기화에 대한 활성화가 시작된다. 그러므로, 보안 운영 환경임을 확인하기 위해서, 집적 시스템은 보안 모드로 활성화되거나 부팅(booting)되어야 한다.
상술한 내용의 관점에서, 본 기술 분야에는 집적 시스템을 위한 강화된 데이터 액세스 제어 접근법에 대한 여러 필요성이 존재한다. 보다 구체적으로, 집적 시스템의 보안 운영에 대한 초기화, 관리, 업데이트 및 복원하기 위한 필요성이 존재한다.
관련 출원에 대한 상호 참조
본 출원은 이하의 관련 특허 출원의 청구 대상과 관련된 청구 대상을 포함하고, 각각의 출원은 본 출원과 동일한 양수인에게 허여되고 본 출원과 동일 날짜로 출원되었다. 이하에 열거된 각 출원은 그 전체가 본 발명의 참조 문서로서 인용되어 있다.
- Evans 등에 의해 2002년 4월 18일에 미국 출원된 "Control Function Employing a Requesting Master ID and a Data Address to Qualify Data Access Within an Integrated System"라는 명칭의 미국 특허 출원 제 10/125,803 호.
- Foster 등에 의해 2002년 04월 18일에 미국 출원된 "Control Function with Multiple Security States for Facilitating Secure Operation of an Integrated System"라는 명칭의 미국 특허 출원 제 10/125,115 호.
- Foster 등에 의해 2002년 04월 18일에 미국 출원된 "Control FunctionImplementing Selective Transparent Data Authentication Within an Integrated System"라는 명칭의 미국 특허 출원 제 10/125,708 호.
기술 분야
본 발명은 일반적으로 데이터 요청(data request)의 처리 및 집적 시스템 내에서 데이터의 전송에 관한 것으로서, 보다 구체적으로 말하자면, 적어도 부분적으로는 집적 시스템의 데이터 액세스 제어 기능부에 의해서 구현되는 집적 시스템의 보안 운영(secure operation)을 초기화(initializing), 관리(maintaining), 업데이트(updating) 및 복원(recovering)하는 기법에 관한 것이다.
도 1은 메모리 서브시스템을 통과하는 공통 메모리 액세스를 사용하는 전형적인 집적 장치의 일례를 도시하는 도면이다.
도 2는 본 발명의 특징에 따른 집적 장치의 보안 메모리 서브시스템 내에서 구현되는 액세스 제어 기능부의 일실시예를 도시하는 도면이다.
도 3은 본 명세서에 설명되어 있고, 본 발명의 특징에 따른 보안 운영 기법에 의해 인식되고 해결되는 문제점을 나타내는 도면이다.
도 4는 본 발명의 특징에 따른 여러 레벨의 소프트웨어를 구비하는 집적 장치의 보안 운영을 활성화하는 기법에 대한 일실시예를 도시하는 도면이다.
도 5는 본 발명의 특징에 따른 집적 시스템의 데이터 액세스 제어 기능부와 연결된 액세스 테이블에 도 4에 도시된 기법을 적용하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 6은 본 발명의 특징에 따른 집적 시스템 내에 코드를 로딩하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 7a는 본 발명의 특징에 따른 집적 시스템 내에 암호화된 부트 코드(boot code)를 먼저 저장하는 프로세스의 일실시예를 도시하는 도면이다.
도 7b는 본 발명의 특징에 따라서 도 7a의 프로세스에 의해 저장된 암호화된 코드를 휘발성 메모리로부터 비휘발성 메모리로 복제하는 프로세스의 일실시예를 도시하는 도면이다.
도 8은 본 발명의 특징에 따라서 소프트웨어의 레벨들을 인증하고 소프트웨어의 레벨들 사이에서 제어를 전달할 뿐만 아니라, 부트 코드 업데이트가 수행 가능할 때 부트 코드를 업데이트하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 9는 본 발명의 특징에 따라서 보안 상태에서 액세스 제어 기능부를 구비하는 집적 시스템의 구성 요소들 사이의 신호 전달의 초기화에 대한 일실시예를 도시하는 도면이다.
도 10은 본 발명의 특징에 따른 여러 레벨의 소프트웨어를 구비하는 집적 시스템 내에서 임의의 레벨의 소프트웨어에 대해 보안을 유지하면서 업데이트하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 11은 본 발명의 특징에 따른 집적 시스템의 데이터 액세스 제어 기능부에서 사용되는 키 세트를 관리하고 업데이트하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 12a는 본 발명의 특징에 따른 집적 시스템 내에 저장되는 암호화된 데이터를 수신하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 12b는 본 발명의 특징에 따라서 도 12a에서 저장된 암호화된 데이터를 검색하고, 보안 코드를 사용하여 소프트웨어로 데이터를 해독하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 12c는 본 발명의 특징에 따라서 액세스 제어 하드웨어를 이용하여 해독된 데이터를 재암호화하여 보안 메모리 내에 저장하는 프로세스에 대한 일실시예를 도시하는 도면이다.
도 13은 본 발명의 특징에 따라서 집적 시스템의 컴퓨터 환경 내에서 발생되는 탬퍼링 트리거 이벤트 이후에 집적 회로 기능을 복원시키는 프로세스에 대한 일실시예를 도시하는 도면이다.
여러 레벨의 소프트웨어를 갖는 집적 장치의 보안 운영을 활성화하는 방법을 제공함으로써, 종래 기술의 단점을 극복하고 추가적인 이점을 제공한다. 이러한 방법은, 집적 시스템의 제어를 다음 레벨의 소프트웨어로 진행시키기 전에 현재 레벨의 소프트웨어를 이용하여 여러 레벨의 소프트웨어 중에서 다음 레벨의 소프트웨어를 인증하는 단계와, 집적 시스템의 운영 특성을 수정하는 다음 레벨의 소프트웨어의 능력을 제한하는 단계를 포함하는데, 여기에서 제한 단계는 집적 시스템의 데이터 액세스 제어 기능부에서 실행된다.
다른 특징에 있어서, 집적 시스템의 보안 운영을 초기화하는 방법이 제공된다. 이러한 방법은, 집적 시스템을 위한 적어도 하나의 키를 생성하는 단계와, 초기화 코드(initial code)를 집적 시스템 내에 로딩하는 단계-이러한 로딩 단계는 적어도 하나의 키를 사용하여 집적 시스템의 데이터 액세스 제어 기능부를 통해 초기화 코드를 암호화(encrypting)하는 것을 포함함-과, 암호화된 초기화 코드를 이용하여 집적 시스템을 재초기화(re-initializing)하는 단계를 포함한다.
또 다른 특징에 있어서, 제 1 키 세트를 이용하여 암호화된 데이터를 제 2 키 세트를 이용하여 암호화된 데이터로 변경시키는 방법이 제공된다. 이러한 방법은, 제 1 키 세트를 이용하여 암호화된 데이터를 해독(decrypting)하는 단계와, 및 집적 시스템 내의 데이터 액세스 제어 기능부에 의해서 제 2 키 세트를 이용하여 데이터를 재암호화(re-encrypting)하는 단계를 포함한다. 데이터 액세스 제어 기능부를 이용함으로써, 데이터의 암호화가 집적 시스템에 고유하게 되어 유리하다.
추가적인 특징에 있어서, 트리거 이벤트(trigger event) 이후에 집적 시스템의 기능을 복원하는 방법이 제공된다. 이러한 방법은 탬퍼링 검출(tamper detection) 트리거 이벤트 이후에 집적 시스템 내의 감소된 레벨의 기능을 자동적으로 설정하는 단계와, 사용자가 신뢰성있는 복원 절차(recovery procedure)를 선택적으로 사용하게 하여 집적 시스템의 완전한 기능 복원을 허용하는 단계를 포함한다.
또한 본 명세서에는 상술된 방법을 실행하기 위한 시스템 및 컴퓨터 프로그램 제품도 개시되어 있다.
본 명세서에 개시된 보안 운영 기법은 집적 시스템 내의 보안 운영 환경을 초기화, 관리, 업데이트 및/또는 복원하는 데 이용될 수 있으므로 유리하다. 보다 구체적으로, 제시된 기법은 데이터 액세스 제어 기능부에 의해서 관리되는 운영 특성(operational characteristics)의 업데이트를 제한하는 기능을 제공한다. 운영 특성은 집적 시스템 내에서 서로 다른 레벨의 소프트웨어에 의해 사용되는 하나 이상의 키 세트(key set), 액세스 테이블(access table), 액세스 레벨 및 액세스 파라미터를 포함할 수 있다. 이와 같이 업데이트를 제한하는 능력은 서로 다른 레벨의 소프트웨어에 계층적 보안 권한(hierarchical security privileges)을 제공한다.
본 명세서에 제시된 기법은, 구 버전(older version)의 소프트웨어 또는 다른 데이터가 재생(replay)되는 것을 방지하기 위해, 버전 번호를 사용하는 것을 포함하여 보안 방식으로 필드 내에 업데이트가 이루어지게 하는 능력을 더 제공한다. 또한, 키 관리 프로세스의 일부로서 및/또는 다른 시스템으로부터 보호된 데이터를 받아들이기 위해서, 제 1 키 세트로 암호화된 데이터를 제 2 키 세트로 암호화된 데이터로 변경시키는 능력도 제공된다. 또한, 집적 시스템이 탬퍼링 트리거 상태가 되는 때에도 해당 기능을 제공하는 기능이 제시되어 있다. 특히, 비밀 데이터 및 애플리케이션에 액세스하지 않는 제한된 기능성뿐만 아니라 제한된 서비스 수단 의존성을 가지고 최대 기능을 복원하는 메커니즘이 자동적으로 제공될 수 있다.
본 발명의 기법을 통해 추가적인 특징 및 이점이 구현될 수 있다. 본 발명의 다른 실시예 및 특징은 본 명세서에 상세하게 설명되어 있으며 청구되는 본 발명의 일부로서 고려된다.
본 발명에서 고려되는 청구 대상은 본 명세서의 결론부에 있는 청구항에 별도로 지시되고 명확하게 기재되어 있다. 상술된 본 발명의 목적, 특징 및 이점과 그 외의 목적, 특징 및 이점은 첨부된 도면을 참조하여 설명된 이하의 세부 설명으로부터 명확해질 것이다.
도 l은 다수의 내부 기능 마스터(1101, 1102, 1103... l10n)를 구비하는 종래의 집적 장치에 참조 부호(100)를 부여하여 도시하였다. 마스터(1101)는 프로세서 코어(112) 및 메모리 관리 유닛(114)을 구비하는 프로세서로서 도시되어 있다. 이 예에서 내부 마스터(1101, 1102, 1103... l10n)는 공유 버스의 버스 제어 로직(130)을 포함하는 메모리 서브시스템(memory subsystem)(120)에 접속된다. 당업자라면 버스 제어 로직(130)이 메모리 서브시스템 내부에 있는 것으로 도시되어 있으나, 그와 다르게 버스 제어 로직(130)이 메모리 서브시스템(120)의 외부에 존재할 수 있다는 이해할 수 있을 것이다.
버스 제어 유닛(130)은 집적 장치 내에서 슬레이브(slaves)에 대한 요청을 조정하고 통합시킨다. 예를 들면, 제 1 슬레이브는 플래시 메모리 등과 같이 개방 메모리 부분(155)을 갖는 외부 비휘발성 메모리(150)에 접속되어 있는 외부 버스 제어기(140)를 포함할 수 있다. 제 2 슬레이브인 메모리 제어기(160)는 SDRAM 또는 DRAM 등과 같은 외부 휘발성 메모리(170)에 접속된다. 메모리(170)는 개방 메모리 부분(175)을 포함한다. 일반적으로, 메모리 비용을 절감하고, 여러 기능들 사이에서의 데이터 전송을 용이하게 하기 위해, 이 집적된 설계 내에서의 기능들은 공통 메모리 풀을 공유한다. 이와 같이, 모든 내부 마스터는 비휘발성 메모리와 휘발성 메모리에 대해 동일한 액세스를 갖고, 이러한 메모리의 저장 공간은 개방 상태로 지정되는데, 이는 데이터 액세스에 대한 제한이 존재하지 않는다는 것을 의미한다.
전형적으로, 비휘발성 메모리는 영구 저장 장치용으로 사용되는데, 여기에서 데이터는 전원이 공급되지 않을 때에도 유지되어야 한다. 이러한 메모리는 부트 코드, 운영 코드(operational code)(운영 체제 및 드라이버 등) 및 임의의 영구적 데이터 구조를 포함할 수 있다. 휘발성 메모리는 세션 지향형 저장(session oriented storage)용으로 사용되고, 일반적으로 다른 마스터들의 데이터 구조뿐만 아니라 애플리케이션 데이터를 포함한다. 휘발성 메모리는 비휘발성 메모리보다 빠르기 때문에, 운영 코드를 휘발성 메모리로 옮기고, 집적 장치가 작동될 때 이휘발성 메모리에서 인스트럭션을 실행하는 것이 일반적이다.
도 1에 도시된 것과 같은 전형적인 시스템 내에는 몇 가지의 보안 위험성이 존재한다는 것을 유의하라. 즉, 그 보안 위험성은 다음과 같다.
1. 프로세서의 작용은 운영 코드 또는 데이터 구조를 수정함으로써 제어될 수 있고, 내부 데이터 또는 동작이 손상될 수 있다.
2. 통신 제어기 등에서와 같은 특정한 경우에, 내부 마스터는 외부 소스에 의해서 제어될 수 있고, 메모리가 공유되기 때문에 내부 마스터는 내부 코드 또는 데이터를 손상시키는 데 사용될 수 있다.
3. 소프트웨어 개발에서 사용되는 디버깅 툴(Debug tool) 및 개발 툴(development tool)은 프로세서의 작용을 수정하거나 모니터링하는 용도로 사용될 수 있다.
4. 메모리가 공유되기 때문에 특정한 마스터는 다른 내부 마스터의 동작에 계획되지 않은 오류를 발생시키거나 손상을 유발할 수 있다.
상술된 보안 위험성에 대해 본 명세서에서 제시된 해결책은 버스 제어 장치와 슬레이브 장치 사이의 데이터 경로 내에 액세스 제어 기능을 할당하는 것을 포함한다. 일실시예에서 이러한 액세스 제어 기능부는, 기능성 마스터를 슬레이브 장치에 접속시켜서 보안 제어 정보의 세트에 기초하여 액세스에 대한 각각의 요청이 추가적인 권한을 갖게 하고, 원하는 경우에는 해당 요청을 방해할 수 있는 내부 버스의 특성을 이용할 수 있다. 이러한 액세스 제어 기능부는 데이터가 어느 곳에 저장되었는지 뿐만 아니라 어떤 마스터가 데이터 요청을 생성하였는지에 따라서 액세스를 구별하고, 그 후에 그 결과에 따라 액세스를 승인 또는 제한하거나, 그렇지 않으면 액세스 자격을 부여하는 능력을 제공한다. 또한 본 명세서에는 본 발명의 다른 특징에 따른 추가적인 액세스 제어 기능부도 설명되어 있다.
도 2는 본 발명의 특징에 따른 액세스 제어 기능부(240)를 포함하는 시스템(200으로 참조 부호가 표시됨)에 대한 일실시예가 도시되어 있다. 여기에서도 시스템(200)은 버스 제어부(230)를 통해 하나 이상의 슬레이브(250, 270)와 통신하는 다수의 기능성 마스터(2101... 210n)를 포함한다. 이 경우에, 액세스 제어 기능부(240)는 버스 제어부(230)와 슬레이브(250, 270) 사이의 데이터 경로에서 중재(intercede)한다. 다른 실시예로서, 버스 제어 유닛(230)은 보안 메모리 서브시스템 유닛의 외부에 존재할 수 있다. 도시된 바와 같이, 제 1 슬레이브 장치는 외부 버스 제어기(250)를 포함하고, 제 2 슬레이브 장치는 메모리 제어기(270)를 포함한다. 이와 관련하여, 버스 제어 유닛, 액세스 제어 유닛 및 외부 제어기의 조합은 보안 메모리 서브시스템(220)을 구성한다. 결과적으로, 비휘발성 메모리(260) 및 휘발성 메모리(280)로 정의되는 외부 어드레스 공간은 제각기 개방 영역(262)과 보안 영역(264) 및 개방 영역(282)과 보안 영역(284)으로 세분될 수 있다. 이러한 용도에서, "보안(secure)"이라는 용어는 마스터(2101... 210n)가 액세스 제어 유닛(240) 내에서 정의된 공간만을 액세스할 수 있다는 것을 의미한다. 액세스 제어 기능부는 개방 영역 및 보안 영역 모두에 대한 액세스를 모두 제어한다는 것을 유의하라.
유닛(240)의 액세스 제어 기능부에 대한 상세한 설명은, 앞서 인용된 "Control Function Employing A Requesting Master ID And A Data Address To Qualify Data Access Within An Integrated System"이라는 명칭의 특허에 포함되어 있다. 또한, 앞서 인용된 특허에는, 데이터 및 요청되는 데이터의 어드레스를 요청하는 기능성 마스터의 액세스 레벨을 기초로 하여 데이터에 대한 요청의 자격을 부여하는 데 있어서 액세스 테이블(248) 및 암호화/해독화 기능(249)을 이용하는 것에 대해 보다 상세하게 설명되어 있다.
간략하게 설명하자면, 버스 제어 유닛에 의한 제어를 승인받은 마스터로부터의 요청은 요청된 어드레스 및 연관된 제어(예를 들면, 판독 또는 기록 등)와 함께 액세스 제어 유닛에 전송된다. 액세스 제어 기능부는 액세스 테이블을 이용하여 요청된 어드레스, 마스터 id, 및 판독 또는 기록 표시자를 해당 마스터에게 허용된 액세스 능력에 대한 정의와 비교한다. 제공된 요청은 차단(종료)되어 소거되거나 암호화/해독화를 허용받을 수 있다. 요청된 전송이 허용 가능하다면, 버스 신호는 슬레이브에 전달되고, 액세스 테이블에 기반하는 요청과 연관된 액세스 파라미터는 (암호화/해독화가 허용 가능한 경우에) 암호화/해독화 엔진에 전송된다. 암호화/해독화 엔진은 연관된 액세스 파라미터를 이용하여 기록 데이터가 주어진 슬레이브로 전송될 때 이 기록 데이터를 암호화하거나, 판독 데이터가 주어진 슬레이브로부터 반환될 때 판독 데이터를 해독하는 데 이용될 수 있다.
요청되는 마스터 id 및 요청되는 어드레스를 기반으로 데이터 액세스 자격을 부여하는 기능에 추가하여, 예를 들면, 액세스 테이블(248) 및 암호화/해독화 기능(249)의 동작 제어를 위한 액세스 제어 기능부에 보안 상태 머신(security state machine)(242)을 추가하는 개념은 앞서 인용된 "Control Function With Multiple Security States For Facilitating Secure Operation Of An Integrated System"라는 명칭의 특허에 설명되어 있다. 또한, 온-칩 저장 장치(243)를 보안 상태 머신(242)과 함께 사용하여 대체 부트 어드레스(substitute boot address)(245) 및 마스터 키 세트(246)를 유지한다. 이 저장 장치는 전체 전원이 제거된다고 해도 해당 값을 유지하기 때문에 영구 저장 장치이다. 결과적으로, 초기화되면, 이하에서 설명되는 바와 같이 보안 상태의 변동에 따라서 이러한 값이 리셋(reset) 또는 소거(erased)될 때까지는 이 값을 사용할 수 있다.
데이터 액세스 제어 기능부의 보안 상태 머신은 널 상태(null state)와 보안 상태(secured state)를 포함하는 다수의 가능한 보안 상태 중 하나의 상태일 수 있다. 보안 상태에서, 제어 기능은 부트 코드에 대한 요청과 연관된 표준 부트 코드 어드레스를 대체 부트 코드 어드레스(substitute boot code address)로 대체한다. 대체 부트 코드 어드레스는 부트 코드의 암호화된 버전을 어드레싱하고, 다음에 이 부트 코드는 영구 저장 장치 내에 유지되는 마스터 키 세트를 사용하여 제어 기능에 의해 해독된다. 널 상태인 경우에, 마스터 키 세트는 소거된다.
상술된 데이터 액세스 제어 기능부를 더욱 강화하는 것으로서, 앞서 인용된 "Control Function Implementing Selective Transparent Data Authentication Within An Integrated System"이라는 명칭의 특허에는 요청되는 데이터를 선택적으로 인증하는 제어 기능을 추가하는 개념이 설명되어 있다. 이러한 선택적 인증은데이터 요청을 개시하는 집적 장치의 기능성 마스터가 인식할 수 없어야 한다. 요청된 데이터는 외부 메모리 내에 암호화된 형태로 저장되는 코드 또는 데이터를 포함할 수 있다(청구항을 포함하여 본 명세서에서 총칭적으로 사용된 "데이터"는 코드 또는 데이터를 지칭한다는 것을 유의하라). 상술된 데이터 액세스 제어 기능부의 암호화 기능은 데이터에 대한 직접적인 관측 및 수정을 방지하고, 무결성 검사 기능(integrity check function)은 암호화된 값이 메모리에 원래 기록된 값과 동일한 값인지 여부를 추가적으로 검증하는 능력을 추가한다.
일실시예에서, 본 발명의 특징에 따른 무결성 검사 기능은 앞서 인용된 특허에서 설명된 액세스 테이블 및 액세스 파라미터와 함께 작용한다. 인증된 데이터와 연관되는 어드레스 범위는 액세스 테이블 내의 추가적인 파라미터에 의해 표시될 수 있다. 무결성 검사 기능(245)은 요청된 데이터 전송량에 기반하여 메모리 내의 무결성 값의 위치를 결정하고, 이하에 설명되는 바와 같이 무결성 값을 계산하고 비교한다.
간략하게 요약하면, 이러한 프로세스는 저장전 단계(pre-storage step) 및 저장후 단계(post-storage step)로 구분될 수 있는데, 예를 들면, 다음과 같다.
저장전 단계
- 보안되고 인증되는 데이터의 수학적으로 보정된 버전인 제 1 무결성 검사값을 생성하는 단계
- 데이터를 암호화하고 제 1 무결성 검사값을 암호화하는 단계
- 암호화된 무결성 값과 암호화된 데이터를 메모리 내에 저장하는 단계
저장후 단계
- 메모리에서 무결성 값 및 암호화된 데이터를 검색 및 해독하는 단계
- 제 1 무결성 검사값을 생성할 때 사용된 것과 동일한 기능을 이용하여 제 2 무결성 검사값을 생성하는 단계
- 제 1 무결성 검사값과 제 2 무결성 검사값을 비교하는 단계-만약 일치되면 데이터는 인증되고, 일치되지 않으면 데이터는 손상된 것이고 보정 동작이 취해져야 함-
선택적으로, 무결성 검사 기능(245)은 이하에 설명된 집적 시스템을 위한 강화된 보안 운영 개념과 조합하여 이용될 수 있다.
도 3은 전형적인 집적 장치 내에서 사용되는 소프트웨어의 레벨을 나타낸다. 도시된 바와 같이, 장치의 하드웨어(300)는 소프트웨어 레벨이 작동하기 위한 기반이 된다. 부트 코드(310)는 장치가 최초로 턴-온되고, 초기화 데이터(312)를 이용하여 초기화 기능을 수행할 때 작용한다. 제 1 레벨에서 추출된 커널(kernel)(320)은 초기화 이후에 부트 코드에 의해 호출된다. 커널(320)은 일반 시스템 설정(322) 및 등록(registrations)(324)을 포함하는 운영 체제 서비스 및 리소스를 제공한다. 다음으로, 소프트웨어 액세스 제어 또는 패스워드(332) 및 키(334)를 가지고 작동되는 네트워크 서비스, 파일 관리, 매체 처리 등과 같은 미들웨어(middleware) 및 서비스 기능(330)을 포함하는 하나 이상의 소프트웨어 레벨이후속하여 호출된다. 애플리케이션 소프트웨어(340)는 미들웨어 및 서비스 소프트웨어 레벨(330)의 상위에 존재하고, 개인 정보(342) 및 그 외의 컨텐츠(344) 등과 같은 사용자 데이터를 가지고 작동된다.
도 3은 집적 장치 또는 시스템에 보안을 제공하기 위한 한 가지의 시도를 나타낸다. 일반적으로, 소프트웨어 레벨이 기반 하드웨어에 가까울수록, 보다 더 보안이 유지되거나 신뢰성있는 소프트웨어이다. 그러나, 그와 반대로, 애플리케이션 등과 같이 소프트웨어 레벨이 사용자에게 가까울수록, 보다 더 중요한 데이터이다. 이는 가장 중요한 데이터를 가장 약하게 보호하는 보안 소프트웨어가 되게 한다.
도 4는 집적 시스템의 보안을 제공하는 접근법에 대해 도시한다. 하드웨어(400)에서 출발하여, 각 소프트웨어의 레벨은 기반이 되는 레벨에 의해 인증받는다. 부트 코드(410)의 경우에, 이 부트 코드(410)는 앞서 인용된 특허 출원에서 정의된 바와 같이 해독화를 이용하고 하드웨어 내의 마스터 키 세트를 이용하여 인증되는데, 여기에서 부트 코드(또는 초기화 코드)는 외부 메모리 내에 암호화된 형태로 저장된다. 또한, 인증을 실행한 다음에, 또한 다음 레벨의 소프트웨어(420, 430, 440 등)로 제어를 전달하기 전에, 각각의 선행하는 소프트웨어 레벨은 다음 레벨이 시스템을 제어하거나 수정하는 능력을 제한할 수 있다. 그러므로, 각 레벨이 로딩됨에 따라서, 각 레벨은 검증되고, 시스템의 보안을 실행하는 능력은 추가적으로 제한될 수 있다.
도 5는 도 2에 도시된 바와 같은 집적 시스템과 관련하여 도 4에 도시된 접근법의 구현을 도시한다. 보다 구체적으로, 이 구현은 앞서 설명되고, 앞서 인용된 특허 출원에 기재된 액세스 제어 기능부를 이용함으로서 이루어진다. 부트 코드(400)는 앞서 설명된 하드웨어에 의해 인증되고, 그에 따라서 가장 신뢰성있는 소프트웨어 레벨로 간주된다. 해독에 사용되는 키 세트와, 어떤 방식으로 어드레스가 해석되는지를 정의하는 어드레스 테이블과, 마스터 id 및 어드레스 범위를 기반으로 하여 허용되는 트랜잭션을 지정하는 액세스 레벨과, 어떤 방식으로 요청이 처리되는지를 정의하는 액세스 파라미터를 포함하는 부트 코드는 액세스 제어 기능부를 완전히 구성할 수 있다. 여기에서도, 이러한 모든 정보는 앞서 설명된 액세스 제어 기능부에 의해서 관리된다.
다음 레벨의 소프트웨어, 즉 제 1 레벨(410)로 제어를 전달하기 전에, 이 예에서의 부트 코드는 키 값을 은폐(hide)하여 소프트웨어가 직접적으로 관찰할 수 없게 하고, 어드레스 테이블 및 액세스 레벨 엔트리(이 둘은 모두 액세스 테이블 내에 포함되어 있음)를 차단하여 이들이 다음 레벨의 소프트웨어에 의해서 수정되지 않게 한다. 그러나, 이 예에 있어서, 액세스 파라미터는 이러한 다음 레벨에서 추가적으로 업데이트될 수 있다. 판독 액세스를 방지함으로써 하드웨어 내에서 은폐(hiding)를 달성할 수 있고, 기록 액세스를 방지함으로써 하드웨어 내에서 차단(locking)을 달성할 수 있다는 것을 유의하라. 당업자라면 권한이 있는 인스트럭션을 사용하도록 강제하고, 온-칩 비밀 버스에 대한 레지스터만을 접속시키며, 해당 레지스터를 메모리-매핑(memory-mapping)하고, 액세스 제어 유닛 내에 존재하는 설정을 이용하여 레지스터에 대한 액세스를 제한하는 등과 같이 액세스 제어 유닛의 레지스터에 대한 액세스를 제어(또는 차단)하는 여러 가지의 방법이 존재한다는것을 이해할 것이다.
도시된 바와 같이, 최소 신뢰성을 갖는 소프트웨어 레벨(440)로 제어를 전달하기 전에, 액세스 제어 기능을 나타내는 마지막 운영 특성, 즉 액세스 파라미터를 차단하여 이 액세스 파라미터가 수정되지 않게 한다.
도 6은 컴퓨터 시스템 내에 조립된 집적 장치를 위한 보안 운영 환경을 초기화하는 프로세스에 대한 일실시예를 나타낸다. 도시된 바와 같이, 집적 장치는 더 큰 시스템(605) 내에 조립되고, 전원이 공급된다(610). 전체 시스템 또는 컴퓨터 환경은 시스템 제조자와 관련된 물리적 보안 환경(600)으로 이동되는데, 여기에서 집적 장치는 보안 운영을 위한 구성 단계를 거치게 된다. 특히, 보안 모드가 진보되고(612), 비밀 키가 생성되며(615), 이러한 키와 대체 부트 어드레스가 장치의 데이터 액세스 제어 기능부와 연결된 영구 저장 장치 내에 로딩된다(620). 비밀 키는 제조자에 의해서 제공되거나 집적 장치에서 자체적으로 생성될 수 있다는 것을 유의하라. 집적 장치에서 자체적으로 생성되는 경우에, 해당 키는 조건부 날인 증서(escrow) 내에 유지되는 것이 가장 적합할 것이다.
다음에 도 7a 및 도 7b와 관련하여 이하에 설명되는 바와 같이, 휘발성 메모리에 기록된 데이터가 마스터 키 세트로 암호화되고, 화이트닝(whitening)을 위해 비휘발성 메모리 어드레스를 이용하도록 액세스 테이블을 구성한다(625). 휘발성 메모리에서 판독되는 데이터는 암호화 처리되지 않고 변경되지 않은 상태로 유지될 것이다. 또한, 비휘발성 메모리에 기록된 데이터가 변경되지 않도록 액세스 테이블을 구성한다.
다음에, 부트 코드는 디버그 인터페이스(debug interface)(도 7a 및 도 7b 참조)를 통해 로딩되고, 데이터가 휘발성 메모리(630)에 기록될 때 데이터 액세스 제어 기능부에 의해 마스터 키 세트를 이용하여 암호화된다. 다음에 이러한 코드는 이하에서 설명되는 바와 같이 그 자체에 대한 해독없이 휘발성 메모리로부터 비휘발성 메모리로 복제된다(365). 마지막으로, 집적 장치는 앞서 인용된 특허에서 설명된 바와 같이 보안 모드(640)로 구성된다. 이러한 처리에 의한 결과로서, 이러한 암호화는 특정한 집적 시스템에 대해 고유하게 된다는 것을 유의해야 한다.
이러한 관점에서, 컴퓨터 시스템은 물리적 보안 위치(600)에서 제거될 수 있다. 다음에, 시스템은 로딩된 보안 부트 코드를 이용하여 재부팅되고(645), 그 이후에 이러한 로딩된 보안 부트 코드를 사용하여 원하는 경우에 보안 방식으로 자체 생성된 키 값을 가지고 추가적인 코드를 로딩할 수 있다(650). 도 6에 도시된 프로세스에서의 최종 단계는 컴퓨터 시스템을 테스트하고 출하(ship)하는 것이다(655).
도 7a는 도 6의 프로세스(630)를 추가적으로 도시한다. (도 7a와 후속 도면은 명료성을 위해서 도 2의 집적 시스템에서 버스 제어부 및 슬레이브가 생략되어 있는 개략도임을 유의해야 한다.) 도시된 바와 같이, 디버그 인터페이스 또는 IDE(integrated development environment)를 사용하여 보안 운영을 위해 구성된 집적 장치 내에 암호화되지 않은 부트 코드를 로딩할 수 있다. 집적 장치(200)는 액세스 제어 기능부(240)의 영구 저장 장치(243) 내에 저장된 내부 마스터 키를 이용하여 부트 코드(249)를 암호화하고, 암호화된 부트 코드(700)를 휘발성 메모리(280) 내의 규정된 위치에 기록한다. 플래시 메모리 등과 같은 비휘발성 메모리는 주어진 데이터 값을 기록하는데 있어서 다수의 동작을 필요로 하고, 그에 따라 하나의 블록 동작으로 구현될 수 없기 때문에, 먼저 암호화된 부트 코드를 휘발성 메모리 내에 기록해야 한다는 것을 유의하라. 암호화된 부트 코드(700)는 이후에 외부 메모리 내의 다른 위치에 복제되어야 하므로, 암호화 동작과 관련된 액세스 테이블(248) 엔트리는 화이트닝을 위한 값으로서 비휘발성 메모리 내의 최종 어드레스 위치를 사용하도록 구성되어야 한다. 화이트닝은 앞서 인용된 특허 중 하나 이상의 특허에 상세하게 설명되어 있다.
도 7b는 예를 들면, 프로세서(2101)를 이용하여 휘발성 메모리로부터 비휘발성 메모리(260)로 암호화된 부트 코드를 복제하는 프로세스(635)를 도시한다. 부트 코드는 이미 마스터 키 세트와, 화이트닝을 위한 비휘발성 메모리 어드레스에 의해 암호화되어 있으므로, 이 부트 코드는 임의의 암호화 변환을 필요로 하지 않으며, 해독을 거치지 않고 비휘발성 메모리에 직접적으로 복제된다.
도 8은 본 발명의 특징에 따른 하나의 초기화 프로세스에 대한 흐름도를 나타낸다. 부트 절차(800)에서 시작하자면, 집적 장치를 턴-온하고(805), 데이터 액세스 제어 기능부에 의해 대체 부트 어드레스를 이용하여 리디렉트(redirect)되는 부트 요청을 발행한다(810). 메모리로부터 인출(fetched)되는 암호화된 코드는 데이터 액세스 제어 기능부에 의해서 마스터 키 세트를 이용하여 해독된다(815). 실행되는 제 1 인스트럭션들 중에서, 업데이트된 부트 코드 이미지를 입수할 수 있는지 여부를 확인하기 위한 검사를 수행한다(820). 다른 레벨의 소프트웨어는 부트 코드를 변경시키는 권한을 가질 수 없기 때문에, 이 검사는 해당 부트 절차 동안에 수행되어야 한다.
업데이트가 수행되지 않는다면, 부트 코드는 개시되는 주어진 세션에서 이용될 런타임 키(runtime keys)를 생성한다(825). 이전의 세션에서 반드시 사용되어야 하는 데이터 구조가 존재한다면, 부트 코드는 또한 이전의 세션에 의해 저장되어야 하는 암호화된 키 값을 검색할 수 있다는 것을 유의해야 한다. 다음으로, 부트 코드는, 메모리 내에서 소프트웨어를 수학적으로 처리하여 고유한 다이제스트(digest) 또는 해시(hash) 값에 도달하게 하고, 그 다음에 해당 결과를 기대되는 값과 비교하는 확립된 기법을 사용하여 다음 레벨의 소프트웨어를 인증한다(830). 이는 소프트웨어 내에서 보안 부트 코드를 사용하여 달성될 수 있다. 허가(authorization)에 추가하여, 부트 코드는 또한 다음 레벨의 소프트웨어의 수정 능력을 제한하거나, 보안 설정 및 액세스 제어 기능과 연관된 운영 특성을 관찰할 수 있다. 보안 기능의 인증 및 차단이 완료되면, 제어는 다음 레벨의 소프트웨어로 전달된다(835). 만약 이것이 최종 레벨이라면(840), 소프트웨어를 로딩하는 프로세스는 완료되고, 장치의 보안 운영이 개시된다(845). 만약 추가적인 레벨이 존재한다면, 다음 레벨을 인증하는 작업 및 선택적으로는 보안 기능을 제한하는 작업을 다시 수행하고, 모든 레벨이 로딩될 때까지 이 루프는 계속된다.
부트 코드에 대한 업데이트가 존재한다면, 부트 업데이트 절차(850)에 대한 질의(820)가 후속하여 실행된다. 먼저, 현재의 부트 코드(즉, 장치가 최초로 턴-온될 때 실행되는 코드)를 사용하여 새로운 부트 코드 이미지를 인증하고 해독한다(855). 새로운 이미지는 집적 장치에서 내부적으로 사용되는 것과는 상이하게 암호화된 형태로 시스템에 전송된다는 것을 유의하라. 이와 같은 경우에, 부트 코드는 소프트웨어 내에서 해독 단계를 수행한다. 다음에, 실행 중인 부트 코드는 액세스 제어 기능부를 가지고 새로운 부트 코드를 메모리에 기록하여, 시스템이 최초로 조립될 때(860)와 동일한 방식으로 집적 장치의 마스터 키 세트로 새로운 코드를 암호화할 수 있게 한다. 그러나, 새로운 부트 코드 이미지는 실행 중인 부트 코드에 대해 별도의 위치에 기록되어, 시스템이 해당 절차 도중에 갑자기 중단되면 실행 중인 부트 코드가 완료되고 새로운 부트 코드가 메모리 내에서 실행되게 된다. 새로운 부트 코드 이미지가 완전히 인증되고 비휘발성 메모리에 기록되면, 실행 중인 부트 코드는 대체 부트 어드레스를 업데이트하여 새로운 부트 코드 이미지를 지시하게 한다(865). 업데이트가 완료되면, 시스템은 재부팅되고(870), 부트 절차(800)의 개시 시점으로 되돌아간다. 이러한 프로세스의 확장으로서, 더 높은 보안 권한을 갖는 임의의 레벨의 소프트웨어에서 요구되는 것에 따라서 부트 코드 또는 초기화 코드 이외에 하나 이상의 레벨을 갖는 코드를 추가할 수 있다. 예를 들면, 부트 코드를 사용하여 커널을 업데이트할 수 있다.
부트 업데이트 절차(850)의 확장으로서, 새로운 버전 번호를 새로운 부트 코드 이미지에 적용할 수 있다(860). 이는 하나 이상의 앞서 인용된 특허에서 설명된 바와 같이, 데이터 액세스 제어 기능부와 연결된 온-칩 영구 메모리에 저장된 값에 버전 번호 파라미터를 추가하는 것을 필요로 한다. 여기에서도, 버전 번호를사용하여 제 1 인스트럭션 해독의 일부분으로서 화이트닝 절차를 수행한다. 부트 코드 이미지에 대한 버전 번호를 포함하면, 공격자(attacker)가 예전의 부트 코드의 복제하고 그것을 재생함으로써 예전의 부트 코드를 재사용하는 것을 방지하기 때문에 유리하다.
도 9는 도 8에 도시된 부트 프로세스를 이용하여 개시되는 집적 시스템 내의 프로세스를 도시한다. 집적 장치의 주 전원이 턴-온되면, 프로세서(2101)의 첫 번째 동작은 사전 규정된 어드레스에서 데이터(부트 코드)를 요청하는 것이다. 이러한 외부 데이터 요청은 데이터 액세스 제어 기능부(240)로 전달되고, 데이터 액세스 제어 기능부(240)는 어드레스를 기반으로 하여 해당 요청을 부트 코드 요청으로서 식별하며, 어드레스의 전부 또는 일부를 제어 기능부의 영구 저장 장치(243) 내에 포함된 대체 부트 어드레스로 대체한다. 다음에, 수정된 요청은 외부 메모리(260)에서 계속된다. 대체 부트 어드레스는 마스터 키 세트를 이용하여 이전에 암호화된 코드를 포함하는 메모리의 섹션을 지시하도록 정의되어 있다. 이 암호화된 코드(710)는 비휘발성 메모리(260)의 보안 영역 내에 유지된다. 암호화된 코드는 액세스 제어 유닛으로 복귀되는데, 이 액세스 제어 유닛은 대체 부트 어드레스를 기반으로 하여, 마스터 키 세트를 가지고 복귀된 데이터를 해독하도록 구성되어 있다. 다음에 해독된(또한 보안된) 부트 코드는 실행을 위해 프로세서로 복귀된다. 상술된 단계는 프로세서가 부트 코드 시퀀스를 실행하는 것에 따라서 반복된다.
도 10은 집적 시스템이 작동되고 있는 동안에 코드 업데이트를 가능하게 하는 프로세스를 도시한다. 이 업데이트 검사 절차(1000)는 보안 운영 모드(1005)로 작동되는 시스템에 의해 개시된다. 내부적 주기 시간 트리거(internal periodic time trigger) 또는 외부 통지 등과 같은 조건부 이벤트를 기반으로 하여, 시스템은 검사를 수행하여(1010) 업데이트가 가능한지 여부를 확인한다(1015). 업데이트가 가능하지 않다면, 집적 시스템은 이전의 보안 운영 상태로 되돌아가서 해당 절차를 진행한다. 업데이트가 가능하다면, 현 산업계에서 확립되어 있는 보안 네트워크 프로토콜(1020)을 이용하여 업데이트를 다운로딩할 수 있다. 이와 다르게, 업데이트는 고정된 매체로부터 판독될 수 있다. 다음에, 현재 레벨의 소프트웨어는 요청되는 업데이트를 수행하도록 허가되어 있는지 여부를 판정한다(1025). 상술된 바와 같이, 주어진 레벨의 소프트웨어는 해당 레벨과 동일하거나 더 높은 레벨의 권한을 갖는 소프트웨어에 의해서만 인증될 수 있다.
현재 레벨의 소프트웨어가 업데이트를 수행하도록 허가되지 않았다면, 해당 소프트웨어는 업데이트가 가능하다는 것을 표시하고, 올바른 레벨의 소프트웨어가 집적 장치의 제어에 있어서 다음 레벨일 때, 그 올바른 레벨의 소프트웨어에 의해서 그 업데이트를 이용하기 위해서 해당 업데이트를 저장한다. 이는 일반적으로 저장 장치가 비휘발성 메모리 내에 존재하여 다음 세션에서 업데이트가 가능해지도록 할 필요가 있다는 것을 유의하라.
현재 레벨의 소프트웨어가 허가되었다면, 그 이후에 업데이트 절차(1050)가 수행된다. 이러한 절차는 부트 코드의 업데이트를 위한 앞서 설명된 프로세스를 이용하여 해당 업데이트를 인증하고 해독하는 것을 포함한다. 그러나, 마스터 키세트를 가지고 업데이트를 암호화할 필요는 없다. 그 대신에, 런타임 키를 사용할 수 있다. 또한, 업데이트를 위한 버전 번호가 온-칩 영구 메모리 내에 반드시 저장되어야 하는 것은 아니지만, 이 번호는 부트 코드에 의해서 로딩될 것이므로 외부 보안 메모리 내에서 암호화되고 저장될 수 있어야 한다(1060). 다음에, 시스템 초기화 동안에 로딩 이전에 업데이트된 코드를 검증하는 데 사용하기 위해 인증 값을 업데이트한다.
도 11은 필요한 경우에 키를 관리하고 키를 업데이트하는 프로세스를 도시한다. 일반적으로, 이러한 프로세스는 임의의 암호화 형태로부터 다른 암호화 형태로 변형하기 위한 수단으로서 데이터 액세스 제어 기능부를 이용한다.
고유한 데이터 블록에서 비밀 키를 과도하게 사용하면 암호 해독(cryptoanalysis)을 위해 이용될 가능성이 있는 샘플의 개수가 증가하게 된다. 그러므로, 비밀 키를 보호하기 위해서, 해당 키를 이용하는 샘플의 개수는 제한되어야 한다. 그 한계는 공격자가 사용할 수 있는 분석의 타입 및 사용된 암호화 알고리즘, 키 및 물리적 차단(shielding)의 세기에 의존한다. 현대의 기술에 있어서, 고유한 데이터 블록에서 비밀키가 사용되는 회수를 정확하게 카운트하는 것을 불가능하다. 키 세트당 해당 개수의 저장 장치를 필요로 하는 이러한 카운트에 대한 매우 근접한 근사값 추정은 키 세트당 기록 동작의 개수를 기록하는 카운터를 이용하여 수행될 수 있고, 이 근사값은 생성되는 고유한 샘플의 개수 이상이 된다. 보다 덜 유효한 근사값으로서, 판독 및 기록 동작을 모두 카운트할 수 있지만, 이것은 카운트 임계값이 증가될 수 있다는 것을 의미하지는 않을 것이다.
키 관리 절차(1100)에서 나타난 바와 같이, 단일 세션 동안에 또는 여러 세션에 걸쳐 사용되는 런타임 키를 생성한다(이는 부트 절차와 관련하여 앞서 설명되어 있음)(1105). 그와 동시에, 키 사용 카운터(key usage counter)는 주어진 임계값으로 초기화된다. 이 카운터는 소프트웨어로 구현될 수 있으나, 카운터를 구동하는 데 필요한 정보를 입수할 수 있기 때문에 액세스 제어 기능부의 일부로서 하드웨어로 구현되는 것이 더욱 유리하다. 또한, 이러한 카운터를 온-칩 영구 저장 장치와 접속시켜서 세션들 사이에서 카운트를 관리하거나, 소프트웨어를 사용하여 해당 결과를 획득하고, 그 결과를 암호화하며, 시스템이 턴-오프될 때 해당 결과를 저장한 다음 시스템이 다시 개시될 때 카운트를 재로딩(reload)할 수도 있다.
선택적으로, 제어는 다음 레벨의 소프트웨어로 전달될 수 있다(1110). 이와 다르게 현재 레벨의 소프트웨어가 계속 실행되어 해당 키를 직접적으로 사용할 수도 있다. 키 사용 카운터는 해당 키가 암호화된 데이터를 기록하기 위해 사용될 때마다 증가된다(1120). 선택적으로, 이 키 사용 카운터는 판독 이벤트를 모니터링하기 위해 사용될 수 있으나, 이는 기록 이벤트에 추가된 것일 뿐이고 기록 이벤트를 대체하는 것이 아니다.
어느 지점에서, 키 사용 카운터는 임계값을 초과할 것이다(1125). 초과하게 될 때, 초기에 해당 키를 생성했던 것과 동일한 레벨의 소프트웨어가 작동된다면, 키 업데이트 절차(1150)가 호출된다(1130). 현재 레벨의 소프트웨어가 상이하다면, 시스템은 원래 키를 생성했던 레벨의 소프트웨어로 복귀되고, 키 업데이트 절차(1135)가 호출된다.
키 업데이트 절차(1150)는 액세스 제어 기능부를 이용하여 하나의 키 세트를 다른 키 세트로 변환시키는 것을 활성화한다. 액세스 제어 기능부의 액세스 테이블은 최초에 수정되어, 이동되는 데이터의 현재 위치가 기존의 키 세트를 이용하는 해독화를 위해 정의되게 하고, 데이터의 새로운 위치가 새로운 키 세트에 의한 암호화를 위해 정의되게 한다(1155). 액세스 테이블을 이용하여 어드레스 해석을 수행할 수 있으므로, 집적 시스템의 내부 마스터는 현재의 데이터 위치와 새로운 데이터 위치를 메모리 내에서 별도의 어드레스 범위로 확인할 수 있으나, 어드레스 해석 이후의 외부 요청은 이 두 개의 위치가 동일한 어드레스 범위가 되도록 정의할 수 있다. 이는 주어진 블록이 그 기존의 위치에서 판독될 수 있게 하고, 이후에 동일 위치에 다시 기록될 수 있게 한다.
다음에 새로운 액세스 테이블 정의를 이용하면, 현재의 위치에 있는 데이터를 판독하고 새로운 위치에 기록할 수 있으며, 새로운 키 세트를 가지고 데이터를 효과적으로 재암호화할 수 있다(1160). 다음에, 액세스 테이블은 다시 수정되어 새로운 키 세트를 가지고 암호화 및 해독화를 수행하기 위한 새로운 위치를 정의할 수 있게 되고(1165), 예전의 키 세트에 대한 모든 참조 및 연관된 데이터 위치는 소거된다(1170).
도 12a 내지 도 12c는 외부 소스에 의해 공급되는 데이터를 하나의 암호화 형태로부터 다른 암호화 형태로 변환하는 관련 기법에 대해 도시한다. 이 경우에, 외부 암호화 형태는 내부 암호화 접근법과는 상이한 알고리즘 및 키 세트를 가질 수 있다. 도 12a에 도시된 바와 같이, 이 경우에 데이터는 외부 알고리즘에 의해암호화된 외부 소스로부터 통신 포트(1200)를 통해 수신된다. 액세스 제어 기능부(240)는 수정을 수행하지 않고 이러한 외부 데이터를 외부 메모리(280) 내에 직접 저장하도록 정의된다. 도 12b에 도시된 바와 같이, 다음에 프로세서(2101)는 블록 내의 자신의 캐시(cache)로 외부 데이터를 판독하고, 해독을 위한 소프트웨어를 이용하여 주어진 블록을 해독한다. 해독되면, 이후에 암호화되지 않은 블록(clear block)은 도 12c에 도시된 바와 같이 외부 메모리(280)에 기록된다. 그러나, 액세스 제어 기능부는 내부 알고리즘 및 키 세트를 이용하여 데이터를 암호화하도록 구성되어 있다. 이 프로세스의 결과는 외부로부터 수신되는 모든 데이터가 고유한 암호화된 형태로 변환되고, 이러한 하나의 집적 장치에 의해서 제어된다는 것이다. 이는 액세스 제어 기능부의 하드웨어 가속을 활용하면서, 암호화된 데이터의 보안을 유지하는 이점을 제공한다.
도 13은 하나 이상의 앞서 인용된 특허에서 설명된 바와 같이, 집적 시스템이 이러한 필드에서 사용되고, 탬퍼링 이벤트가 해당 시스템을 보안 상태로부터 널 상태(null state)로 전이되도록 트리거한 이후에, 집적 시스템의 복원 보안 운영에 사용되는 프로세스의 일실시예를 도시한다. 도시된 바와 같이, 트리거된 이후의 부트 절차(1300)에 의해서, 탬퍼링 이벤트 이후에 집적 시스템은 턴-온되고(1305) 부트 요청은 더 이상 리디렉트되지 않는다(1310). 암호화되지 않은 코드는 표준 부트 어드레스에서 실행되어 시스템을 초기화한다(1315). 초기화된 시스템은 감소된 레벨의 기능성으로 작동되고 보안 데이터 또는 애플리케이션에 대한 액세스가제공되지 않는다(1325). 이와 다르게, 원래의 집적 시스템 기능을 복원하려는 시도가 이루어질 수 있다(1320).
집적 시스템 소유자가 완전한 복원을 시도하도록 선택하였다면, 집적 시스템은 보안된 물리적 위치(1350)를 포함하는 인가된 서비스 센터로 전달된다. 서비스 센터는 디버그 툴(debug tools)(도 7a 참조)을 이용하여 복원 부트 코드 및 제조자의 공개 키를 포함하는 암호화되지 않은 초기화 코드를 로딩한다(1355).
다음에, 집적 시스템은 재기동되어 초기화 코드를 실행하는데, 이 초기화 코드는 가장 먼저 새로운 마스터 키 세트를 생성하고, 다음에 마스터 키 세트를 데이터 액세스 제어 기능부와 연결된 온-칩 영구 저장 장치에 기록할 것이다(1360). 다음에, 액세스 제어 기능부는 도 7a와 관련하여 앞서 설명된 바와 같이 마스터 키 세트를 이용하여 복원 부트 코드를 암호화하도록 구성된다. 새로운 부트 코드의 위치는 대체 부트 어드레스 필드에 기록된다. 다음에, 부트 코드는 내부적으로 공개/비밀 키 쌍을 생성하고, 비휘발성 메모리 내에 비밀 키를 보안된 상태로 저장한다. 생성된 공개 키는 (이전에 초기화 코드와 함께 공급된) 제조자의 공개 키를 이용하여 암호화되어 서비스 센터로 복귀되고, 이 서비스 센터는 해당 키를 제조자에게 전달한다(1365). 이러한 관점에서, 집적 시스템은 보안된 물리적 위치(1350)에서 제거될 수 있다.
시스템은 재기동되고, 복원 부트 코드가 실행된다(1370). 초기화된 시스템은 제조자에 대한 보안 네트워크 접속을 형성하고(1375), 다음에, 알려진 기법을 이용하여 시스템의 원래의 기능을 재형성하는 데 필요한 데이터 및 코드를 다운로딩할 수 있고 집적 시스템 상에 인스톨(install)할 수 있다(1380).
요약하자면, 본 명세서에는 집적 시스템 내에서 보안 운영을 초기화, 관리, 업데이트 및 복원하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품이 설명되어 있다. 이러한 기법은 집적 시스템 내에서 데이터 액세스 제어 기능부를 활용한다. 시스템 및 컴퓨터 프로그램 제품은 이하에 제시되는 것과 같이 대략적으로 요약될 수 있다.
본 명세서에는 여러 레벨의 소프트웨어를 갖는 집적 시스템의 보안 운영을 활성화하는 시스템의 일실시예가 제공되어 있다. 이러한 시스템은, 집적 시스템의 제어를 다음 레벨의 소프트웨어로 전달하기 전에, 현재 레벨의 소프트웨어에 의해 여러 레벨의 소프트웨어 중 다음 레벨의 소프트웨어를 인증하는 수단을 포함한다. 또한, 다음 레벨의 소프트웨어가 집적 시스템의 운영 특성을 수정하는 능력을 제한하는 수단을 포함하는 데이터 액세스 제어기도 제공된다.
또한, 집적 시스템의 보안 운영을 초기화하는 시스템은 다른 실시예에 제공되어 있다. 이러한 시스템은 집적 시스템 및 집적 시스템 내의 데이터 액세스 제어 기능부를 위한 적어도 하나의 키를 생성하는 수단을 포함한다. 데이터 액세스 제어 기능부는 집적 시스템 내에서 초기화 코드를 수신하고, 적어도 하나의 키를 사용하여 초기화 코드를 암호화한다. 초기화 시스템은 암호화된 초기화 코드를 이용하여 집적 시스템을 재초기화(reinitializing)하는 수단을 더 포함한다.
제 1 키 세트를 이용하여 암호화된 데이터를 제 2 키 세트를 이용하여 암호화된 데이터로 변환시키는 시스템이 추가적으로 제공되어 있다. 이러한 시스템은집적 시스템 내에서 제 1 키 세트를 이용하여 암호화된 데이터를 해독하는 수단과, 제 2 키 세트를 이용하여 데이터를 재암호화하는 수단을 포함하는 집적 시스템 내의 데이터 액세스 제어 기능부를 포함한다.
다른 실시예에서, 트리거 이벤트에 후속하여 집적 시스템의 기능을 복원하는 시스템이 설명되어 있다. 이 시스템은 지정된 복원 절차를 선택적으로 이용함으로써 집적 시스템의 완전한 기능적 복원을 가능하게 하는 수단뿐만 아니라, 집적 시스템 내에서 감소된 레벨의 기능을 자동적으로 형성하는 수단을 포함한다.
다른 실시예에서, 여러 레벨의 소프트웨어를 갖는 집적 시스템의 보안 운영을 활성화하는 방법을 수행하도록 머신에 의해서 실행 가능한 적어도 하나의 프로그램의 인스트럭션을 실체적으로 구현하는, 머신에 의해서 판독 가능한 적어도 하나의 프로그램 저장 장치가 제공되어 있다. 이러한 방법은 집적 시스템의 제어를 다음 레벨의 소프트웨어로 전달하기 전에, 현재 레벨의 소프트웨어에 의해서, 여러 레벨의 소프트웨어 중에서 다음 레벨의 소프트웨어를 인증하는 단계와, 다음 레벨의 소프트웨어가 집적 시스템의 운영 특성을 수정하는 능력을 제한하는 단계를 포함하는데, 이러한 제한 단계는 집적 시스템의 데이터 액세스 제어 기능부에 의해 실행된다.
또 다른 실시예에서, 머신에 의해 실행가능한 적어도 하나의 프로그램의 인스트럭션을 실체적으로 구현하는, 머신에 의해 판독 가능한 적어도 하나의 프로그램 저장 장치는, 집적 시스템의 보안 운영을 초기화하는 방법을 수행하도록 제공되어 있다. 이 방법은 집적 시스템을 위한 적어도 하나의 키를 생성하는 단계와, 초기화 코드를 집적 시스템 내에 로딩하는 단계-이러한 로딩 단계는 적어도 하나의 키를 사용하여 집적 시스템의 데이터 액세스 제어 기능부를 통해 초기화 코드를 암호화하는 단계를 포함함-와, 암호화된 초기화 코드를 이용하여 집적 시스템을 재초기화하는 단계를 포함한다.
또 다른 실시예에서, 머신에 의해 실행 가능한 적어도 하나의 프로그램의 인스트럭션을 실체적으로 구현하는, 머신에 의해 판독 가능한 적어도 하나의 프로그램 저장 장치는, 제 1 키 세트를 이용하여 암호화된 데이터를 제 2 키 세트를 이용하여 암호화된 데이터로 변환시키는 방법을 수행하도록 제공되어 있다. 이 방법은, 제 1 키 세트를 이용하여 암호화된 데이터를 해독하는 단계와, 집적 시스템 내의 데이터 액세스 제어 기능부에 의해 제 2 키 세트를 이용하여 해당 데이터를 재암호화하는 단계를 포함한다.
다른 실시예에서, 머신에 의해서 실행 가능한 적어도 하나의 프로그램의 인스트럭션을 실체적으로 구현하는, 머신에 의해 판독 가능한 적어도 하나의 프로그램 저장 장치는, 트리거 이벤트에 후속하여 집적 시스템 기능을 복원하는 방법을 수행하도록 제공되어 있다. 이 방법은 집적 시스템 내에 감소된 레벨의 기능을 자동적으로 형성하는 단계와, 선택적 복원 절차를 사용함으로써 집적 시스템의 완전한 기능적 복원을 가능하게 하는 단계를 포함한다.
당업자라면 상술된 논의로부터, 본 발명이 예를 들면, 컴퓨터 이용 가능 매체 등을 구비하는 제조물(예를 들면, 하나 이상의 컴퓨터 프로그램 제품) 내에 포함될 수 있다는 것을 인식할 수 있을 것이다. 이러한 매체는 예를 들면, 본 발명의 능력을 제공하고 활성화하기 위한 컴퓨터 판독 가능 프로그램 코드 수단으로 구현될 수 있다. 이러한 제조물은 컴퓨터 시스템의 일부분으로서 포함되거나 별도로 판매될 수 있다.
추가하여, 머신에 의해서 본 발명의 능력을 실행하도록 실행 가능한 적어도 하나의 프로그램의 인스트럭션을 실체적으로 구현하는, 머신에 의해서 판독 가능한 적어도 하나의 프로그램 저장 장치 판독 기능을 제공할 수 있다.
본 명세서에서 설명된 흐름도는 예에 불과하다. 본 발명의 정신을 벗어나지 않으면서 본 명세서에 설명된 도면 또는 단계(또는 동작)에 대한 여러 변경이 이루어질 수 있는데, 이는 예를 들면, 단계들을 상이한 순서로 수행하거나 단계들을 추가, 소거 또는 수정하는 것 등이다. 이러한 변경은 모두 본 발명에서 청구되는 것의 일부분으로서 간주된다.
본 명세서에서는 바람직한 실시예가 서술되고 도시하였으나, 당업자라면, 본 발명의 정신을 벗어나지 않으면서 여러 변경, 추가, 대체 등이 이루어질 수 있고, 그에 따라 이러한 수정은 이하의 청구항에 규정되는 본 발명의 범주를 벗어나지 않는 것으로 간주된다는 것이 명백할 것이다.
본 발명은 처리 및 변경 전에 암호화되어야 하는 중요한 데이터를 처리하는 보안 집적 시스템 분야에서 광범위하게 이용될 수 있다.

Claims (31)

  1. 여러 레벨의 소프트웨어를 구비하는 집적 시스템의 보안 운영(secure operation)을 활성화하는 방법으로서,
    상기 집적 시스템의 제어를 다음 레벨의 소프트웨어에 전달하기 전에, 현재 레벨의 소프트웨어에 의해 상기 여러 레벨의 소프트웨어 중에서 상기 다음 레벨의 소프트웨어를 인증(authenticating)하는 단계와,
    상기 다음 레벨의 소프트웨어가 상기 집적 시스템의 운영 특성(an operational characteristic)을 수정하는 능력을 제한하는 단계-상기 제한 단계는 상기 집적 시스템의 데이터 액세스 제어 기능부에서 실행됨-
    를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제한 단계는 상기 다음 레벨의 소프트웨어가 상기 데이터 액세스 제어 기능부에 의해서 관리되는 키 세트(들)(key set(s)), 액세스 테이블(들)(access table(s)), 액세스 레벨(들)(access level(s)) 및 액세스 파라미터(들)(access parameter(s)) 중에서 적어도 하나를 수정하는 능력을 제한하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 제어는 상기 키 세트(들)의 은폐(hiding) 또는 상기 데이터 액세스 제어 기능부에 의해서 관리되는 상기 액세스 테이블(들), 상기 액세스 레벨(들) 또는 상기 액세스 파라미터(들)에 대한 액세스의 차단(locking) 중 적어도 하나를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 집적 시스템의 보안 운영을 초기화하는 데 사용될 초기화 코드를 인증하는 단계-상기 초기화 코드의 상기 인증은 상기 집적 시스템의 상기 데이터 액세스 제어 기능부에 의해서 수행됨-를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 방법은 소프트웨어의 레벨을 업데이트하는 방법과 함께 사용되고,
    상기 소프트웨어의 레벨 업데이트 방법은,
    소프트웨어 레벨 업데이트가 가능한지 판정하는 단계와,
    상기 현재 레벨의 소프트웨어가 상기 업데이트된 레벨의 소프트웨어를 인증하는 권한을 갖는지 여부를 판정하고, 해당 권한을 갖는다면 상기 데이터 액세스제어 기능부를 이용하는 상기 집적 시스템 내에 상기 소프트웨어 레벨 업데이트를 수용하도록 진행하는 단계
    를 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 업데이트된 레벨의 소프트웨어는 초기화 코드 업데이트(initialization code update)를 포함하고,
    상기 방법은,
    상기 초기화 코드 업데이트를 인증하고 해독(decrypting)하는 단계와,
    상기 데이터 액세스 제어 기능부에 의해서 관리되는 마스터 키 세트(master key set)와 새로운 버전 번호를 가지고 상기 해독된 초기화 코드 업데이트를 암호화(encrypting)하는 단계와,
    상기 데이터 액세스 제어 기능부에 의해서 관리되는 초기화 리디렉션 어드레스(initialization re-direction address)를 새롭게 업데이트된 초기화 위치 어드레스로 업데이트하는 단계
    를 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 현재 레벨의 소프트웨어가 상기 소프트웨어 레벨 업데이트를 인증할 수 없다면, 적절한 레벨의 소프트웨어가 실행되어 상기 소프트웨어 레벨 업데이트를 인증할 수 있을 때까지 상기 집적 시스템에서 상기 소프트웨어 레벨 업데이트를 보류하는 방법.
  8. 제 5 항에 있어서,
    상기 집적 시스템에 상기 소프트웨어 레벨 업데이트를 수용하도록 진행하는 상기 단계는 상기 소프트웨어 레벨 업데이트를 저장하기 위해 암호화하는 단계를 포함하되, 상기 암호화 단계는 상기 소프트웨어 레벨 업데이트를 암호화할 때 새로운 버전 번호를 이용하는 단계를 포함하는 방법.
  9. 집적 시스템의 보안 운영을 초기화하는 방법으로서,
    상기 집적 시스템을 위한 적어도 하나의 키를 생성하는 단계와,
    상기 집적 시스템에 초기화 코드를 로딩하는 단계-상기 로딩 단계는 상기 적어도 하나의 키를 이용하여 상기 집적 시스템의 데이터 액세스 제어 기능부를 통해 상기 초기화 코드를 암호화하는 단계를 포함함-와,
    상기 암호화된 초기화 코드를 이용하여 상기 집적 시스템을 재초기화(re-initializing)하는 단계
    를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 생성 단계는 상기 집적 시스템 내에 상기 적어도 하나의 키를 생성하는 단계를 포함하는 방법.
  11. 제 9 항에 있어서,
    상기 데이터 액세스 제어 기능부는 상기 집적 시스템의 하드웨어 구성 요소를 포함하는 방법.
  12. 제 9 항에 있어서,
    상기 암호화된 초기화 코드를 이용하여 상기 집적 시스템에 추가적인 코드를 로딩하는 단계를 더 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 추가적인 코드를 로딩하는 단계는, 상기 집적 시스템 내에서 상기 암호화된 초기화 코드를 이용하여 상기 데이터 액세스 제어 기능부에 의해 상기 추가적인 코드를 암호화하는 데 사용되는 랜덤 키 생성을 실행하는 단계를 포함하는 방법.
  14. 제 9 항에 있어서,
    상기 로딩 단계는 화이트닝(whitening)을 위해 상기 적어도 하나의 키와 메모리 어드레스를 이용하여 상기 초기화 코드를 암호화하는 단계를 더 포함하는 방법.
  15. 제 1 키 세트를 이용하여 암호화된 데이터를 제 2 키 세트를 이용하여 암호화된 데이터로 변환(migrating)하는 방법으로서,
    상기 제 1 키 세트를 이용하여 암호화된 데이터를 해독하는 단계와,
    집적 시스템 내의 데이터 액세스 제어 기능부에 의해, 제 2 키 세트를 이용하여 상기 데이터를 재암호화하는 단계
    를 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 데이터 액세스 제어 기능부는 상기 집적 시스템의 하드웨어 구성 요소를 포함하는 방법.
  17. 제 15 항에 있어서,
    상기 해독 단계는 상기 집적 회로의 상기 데이터 액세스 제어 기능부에 의해서 실행되는 방법.
  18. 제 15 항에 있어서,
    상기 제 1 키 세트를 이용하여 암호화된 상기 데이터를 해독하기 위해 상기 집적 시스템과 연결된 저장 장치에서 검색하는 단계를 더 포함하는 방법.
  19. 제 15 항에 있어서,
    상기 데이터 액세스 제어 기능부와 연관된 적어도 하나의 운영 특성(operational characteristic)을 수정하는 단계를 더 포함하되,
    상기 적어도 하나의 운영 특성은 상기 데이터 액세스 제어 기능부에 의해서 이용되는 액세스 테이블 내에 유지되고,
    상기 수정 단계는 상기 액세스 테이블을 수정하여 현재의 위치에 있는 암호화된 데이터가 상기 제 1 키 세트를 이용하여 해독될 것임과, 새로운 데이터 위치에 저장될 때는 상기 제 2 키 세트를 이용하여 재암호화될 것임을 나타내는 단계를 포함하는 방법.
  20. 제 15 항에 있어서,
    상기 해독 단계 및 상기 재암호화 단계는 데이터 암호화 및 데이터 해독화 중 적어도 하나를 위해 사전 결정된 카운트 수만큼 사용되는 상기 제 1 키 세트에 대응되고,
    상기 방법은 상기 데이터 암호화 및 데이터 해독 중 적어도 하나에서 상기 제 1 키 세트가 사용된 회수를 카운트하는 단계를 더 포함하는 방법.
  21. 제 20 항에 있어서,
    상기 카운트 단계는 상기 집적 시스템의 상기 데이터 액세스 제어 기능부에 의해서 관리되는 키 사용 카운터(key usage counter)를 이용하는 단계를 포함하는 방법.
  22. 제 15 항에 있어서,
    상기 제 1 키 세트를 이용하여 암호화된 상기 데이터는 상기 집적 시스템의 외부에 있는 소스로부터 수신되는 방법.
  23. 제 22 항에 있어서,
    상기 해독 단계는 상기 집적 시스템 내의 소프트웨어에서 수행되고, 상기 재암호화 단계는 상기 집적 시스템의 하드웨어에서 상기 데이터 액세스 제어 기능부에 의해 수행되는 방법.
  24. 제 23 항에 있어서,
    상기 제 2 키 세트는 상기 집적 시스템에 있어서 고유한 키 세트인 방법.
  25. 트리거 이벤트(trigger event)에 후속하여 집적 시스템 기능을 복원하는 방법으로서,
    상기 집적 시스템 내에 감소된 레벨의 기능(a reduced level of functionality)을 자동적으로 형성하는 단계와,
    선택적 복원 절차(selective recovery procedure)를 이용함으로써 상기 집적 시스템의 완전한 기능적 복원을 가능하게 하는 단계
    를 포함하는 방법.
  26. 제 25 항에 있어서,
    상기 복원 절차는 상기 집적 시스템 내의 보안된 물리적 위치에 초기화 코드를 로딩하는 단계를 포함하는 방법.
  27. 제 26 항에 있어서,
    상기 초기화 코드를 로딩하는 단계는 복원 초기화 코드(restoration initialization code)를 포함하는 암호화되지 않은 초기화 코드를 상기 집적 시스템에 로딩하는 단계를 더 포함하고,
    상기 방법은,
    상기 복원 초기화 코드를 실행하여 마스터 키 및 대체 초기화 어드레스(substitute initialization address)를 획득하는 단계와,
    상기 마스터 키로 상기 복원 초기화 코드를 암호화하고 상기 대체 초기화 어드레스에서 상기 암호화된 초기화 코드를 저장하는 단계와,
    상기 대체 초기화 어드레스에 저장되어 있는 상기 암호화된 초기화 코드를 이용하여 상기 집적 시스템을 재초기화하는 단계
    를 포함하는 방법.
  28. 제 27 항에 있어서,
    상기 집적 시스템의 데이터 액세스 제어 기능부와 연결된 영구 저장 장치 내에 상기 마스터 키 및 상기 대체 초기화 어드레스를 저장하는 단계를 더 포함하는 방법.
  29. 제 27 항에 있어서,
    상기 초기화 코드는 제조자의 공개 키(public key)를 더 포함하고,
    상기 방법은,
    상기 집적 시스템에서 공개 키/비밀 키의 쌍을 생성하는 단계와,
    보안을 유지하면서 상기 집적 시스템의 비밀 키를 저장하는 단계와,
    상기 제조자의 공개 키를 이용하여 상기 집적 시스템의 공개 키를 암호화하는 단계
    를 더 포함하는 방법.
  30. 제 29 항에 있어서,
    상기 생성된 공개 키/비밀 키의 쌍을 이용하여 상기 집적 시스템과 제조자 사이에 보안 네트워크 접속을 형성하는 단계와,
    상기 보안 네트워크 접속을 통해 필요한 코드 및 데이터를 다운로딩하여 상기 집적 시스템의 완전한 기능을 재형성(reestablish)하는 단계
    를 더 포함하는 방법.
  31. 제 25 항에 있어서,
    상기 집적 시스템 내에서 상기 감소된 레벨의 기능을 자동적으로 형성하는 단계는 상기 집적 시스템 내의 보안 코드 및 데이터에 대한 액세스를 제한하는 단계를 포함하는 방법.
KR1020047014979A 2002-04-18 2003-04-16 집적 시스템 내에서의 보안 운영의 활성화 방법, 보안 운영의 초기화 방법, 암호화된 데이터의 변환 방법 및 집적 시스템 기능의 복원 방법 KR100809977B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/125,803 US6715085B2 (en) 2002-04-18 2002-04-18 Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US10/125,803 2002-04-18
PCT/US2003/011907 WO2003090402A1 (en) 2002-04-18 2003-04-16 Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function

Publications (2)

Publication Number Publication Date
KR20040101342A true KR20040101342A (ko) 2004-12-02
KR100809977B1 KR100809977B1 (ko) 2008-03-07

Family

ID=29214852

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047014979A KR100809977B1 (ko) 2002-04-18 2003-04-16 집적 시스템 내에서의 보안 운영의 활성화 방법, 보안 운영의 초기화 방법, 암호화된 데이터의 변환 방법 및 집적 시스템 기능의 복원 방법

Country Status (11)

Country Link
US (3) US6715085B2 (ko)
EP (2) EP1648109B1 (ko)
JP (2) JP4464689B2 (ko)
KR (1) KR100809977B1 (ko)
CN (1) CN1647443B (ko)
AU (1) AU2003223671A1 (ko)
CA (1) CA2481569C (ko)
IL (1) IL164718A (ko)
PL (1) PL372374A1 (ko)
RU (1) RU2295834C2 (ko)
WO (1) WO2003090402A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155697B1 (ko) * 2009-03-04 2012-06-12 애플 인크. 비휘발성 메모리에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 데이터 화이트닝
WO2022055899A1 (en) * 2020-09-08 2022-03-17 Micron Technology, Inc. Cloud-based creation of a customer-specific symmetric key activation database

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996670B1 (en) 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip
US6993007B2 (en) * 1999-10-27 2006-01-31 Broadcom Corporation System and method for suppressing silence in voice traffic over an asynchronous communication medium
EP1338939A1 (en) * 2002-02-22 2003-08-27 Hewlett-Packard Company State validation device for a computer
US7444682B2 (en) * 2002-07-03 2008-10-28 Macronix International Co., Ltd. Security memory device and method for making same
JP2004054834A (ja) * 2002-07-24 2004-02-19 Matsushita Electric Ind Co Ltd プログラム開発方法、プログラム開発支援装置およびプログラム実装方法
CA2421825C (en) * 2002-09-20 2012-07-10 Mks Inc. Version control system for software development
US7266786B2 (en) * 2002-11-05 2007-09-04 Sonics, Inc. Method and apparatus for configurable address mapping and protection architecture and hardware for on-chip systems
JP4099039B2 (ja) * 2002-11-15 2008-06-11 松下電器産業株式会社 プログラム更新方法
US7194626B2 (en) * 2002-11-21 2007-03-20 International Business Machines Corporation Hardware-based secure code authentication
US8140824B2 (en) * 2002-11-21 2012-03-20 International Business Machines Corporation Secure code authentication
US7974416B2 (en) 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
US7137109B2 (en) * 2002-12-17 2006-11-14 Hewlett-Packard Development Company, L.P. System and method for managing access to a controlled space in a simulator environment
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US7568110B2 (en) 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US20040123120A1 (en) * 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US7392404B2 (en) * 2002-12-20 2008-06-24 Gemalto, Inc. Enhancing data integrity and security in a processor-based system
CA2516580C (en) * 2003-02-21 2011-01-25 Research In Motion Limited System and method of multiple-level control of electronic devices
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
JP2004287590A (ja) * 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd デバッグシステム、マイクロプロセッサ及びデバッガ
US7171563B2 (en) * 2003-05-15 2007-01-30 International Business Machines Corporation Method and system for ensuring security of code in a system on a chip
US7478433B2 (en) * 2003-06-19 2009-01-13 Panasonic Corporation Program execution system having authentication function
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US7900250B1 (en) * 2003-09-12 2011-03-01 Nortel Networks Limited Method of providing secure groups using a combination of group and pair-wise keying
US7369815B2 (en) * 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
US7571484B2 (en) * 2003-12-04 2009-08-04 Microsoft Corporation System and method for image authentication of a resource-sparing operating system
JP4574994B2 (ja) * 2004-01-26 2010-11-04 東芝マイクロエレクトロニクス株式会社 メモリ外付けマイコン
US8112618B2 (en) 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
JP2005332221A (ja) * 2004-05-20 2005-12-02 Renesas Technology Corp 記憶装置
JP4612461B2 (ja) * 2004-06-24 2011-01-12 株式会社東芝 マイクロプロセッサ
US7461268B2 (en) * 2004-07-15 2008-12-02 International Business Machines Corporation E-fuses for storing security version data
US20060026417A1 (en) 2004-07-30 2006-02-02 Information Assurance Systems L.L.C. High-assurance secure boot content protection
US8954751B2 (en) 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US7958369B2 (en) * 2004-10-22 2011-06-07 Hewlett-Packard Development Company, L.P. Systems and methods for multiple level control of access of privileges to protected media content
EP1659472A1 (en) * 2004-11-22 2006-05-24 Research In Motion Limited Method and Device for Authenticating Software
US20060136717A1 (en) 2004-12-20 2006-06-22 Mark Buer System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US20060136705A1 (en) * 2004-12-21 2006-06-22 Motorola, Inc. Multiple stage software verification
JP2008524740A (ja) * 2004-12-21 2008-07-10 エヌエックスピー ビー ヴィ 装置のセキュリティを改良した集積回路
WO2006082988A2 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for facilitating a secure processor functional transition
WO2006082994A2 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for facilitating a secure session between a processor and an external device
JP4489030B2 (ja) * 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント プロセッサ内にセキュアな起動シーケンスを提供する方法および装置
JP4669708B2 (ja) * 2005-02-16 2011-04-13 株式会社日立製作所 ストレージシステム、データ移動方法及び管理計算機
CN100358303C (zh) * 2005-02-28 2007-12-26 联想(北京)有限公司 一种对被管理设备进行监控的方法
CN1703004B (zh) 2005-02-28 2010-08-25 联想(北京)有限公司 一种实现网络接入认证的方法
US8364792B2 (en) * 2005-03-09 2013-01-29 Vudu, Inc. Method and system for distributing restricted media to consumers
US7509250B2 (en) * 2005-04-20 2009-03-24 Honeywell International Inc. Hardware key control of debug interface
US20070005987A1 (en) * 2005-06-30 2007-01-04 Durham Lenitra M Wireless detection and/or containment of compromised electronic devices in multiple power states
JP4728060B2 (ja) * 2005-07-21 2011-07-20 株式会社日立製作所 ストレージ装置
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US20070055862A1 (en) * 2005-09-08 2007-03-08 Interdigital Technology Corporation Method and system for distributing data
US8656487B2 (en) * 2005-09-23 2014-02-18 Intel Corporation System and method for filtering write requests to selected output ports
KR100746012B1 (ko) * 2005-11-07 2007-08-06 삼성전자주식회사 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
US8627109B2 (en) * 2005-11-23 2014-01-07 Hewlett-Packard Development Company, L.P. Method of securing access to a hard disk drive of a computer system with an enhanced security mode
US20070136609A1 (en) * 2005-12-13 2007-06-14 Rudelic John C Methods and apparatus for providing a secure channel associated with a flash device
US7900060B2 (en) * 2006-02-17 2011-03-01 Vudu, Inc. Method and system for securing a disk key
EP1826697A1 (en) * 2006-02-24 2007-08-29 Giga Games System, SL Method for booting and using software for AWP and B type amusing gaming machines, and for C type casino machines
US8239686B1 (en) 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
GB0615392D0 (en) * 2006-08-03 2006-09-13 Wivenhoe Technology Ltd Pseudo random number circuitry
US8032940B1 (en) * 2006-10-25 2011-10-04 Chaperon, LLC Method and system for generating and employing a secure integrated development environment
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
EP2122531B1 (en) * 2007-01-19 2014-10-01 BlackBerry Limited Selectively wiping a remote device
US8615665B2 (en) * 2007-01-26 2013-12-24 Harris Corporation Method for providing high assurance integrity of installed software images in a software defined radio
EA200700455A1 (ru) * 2007-02-13 2008-08-29 Общество С Ограниченной Ответственностью "Крипто-Про" Способ обновления средства обеспечения безопасности программного средства
EP1970782B1 (de) * 2007-03-12 2010-08-18 Secunet Security Networks Aktiengesellschaft Schutzeinrichtung für eine programmierbare datenverarbeitende Einheit
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US8095816B1 (en) 2007-04-05 2012-01-10 Marvell International Ltd. Processor management using a buffer
US8443187B1 (en) 2007-04-12 2013-05-14 Marvell International Ltd. Authentication of computing devices in server based on mapping between port identifier and MAC address that allows actions-per-group instead of just actions-per-single device
US8145903B2 (en) * 2007-05-25 2012-03-27 Red Hat, Inc. Method and system for a kernel lock validator
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8522043B2 (en) * 2007-06-21 2013-08-27 Microsoft Corporation Hardware-based computer theft deterrence
JP4956292B2 (ja) * 2007-06-25 2012-06-20 パナソニック株式会社 情報セキュリティ装置およびカウンタ制御方法
US8321706B2 (en) 2007-07-23 2012-11-27 Marvell World Trade Ltd. USB self-idling techniques
JP2009032038A (ja) * 2007-07-27 2009-02-12 Hitachi Ltd リムーバブルな暗号化/復号化モジュールが接続されるストレージシステム
US20090055639A1 (en) * 2007-08-20 2009-02-26 Kimmo Kuusilinna Methods and system for modular device booting
JP2009053901A (ja) * 2007-08-27 2009-03-12 Seiko Epson Corp プリンタ
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US8555049B2 (en) * 2007-10-05 2013-10-08 Panasonic Corporation Secure boot terminal, secure boot method, secure boot program, recording medium, and integrated circuit
US20090119503A1 (en) * 2007-11-06 2009-05-07 L3 Communications Corporation Secure programmable hardware component
US8171309B1 (en) * 2007-11-16 2012-05-01 Marvell International Ltd. Secure memory controlled access
US8661234B2 (en) * 2008-01-31 2014-02-25 Microsoft Corporation Individualized per device initialization of computing devices in avoidance of mass exploitation of vulnerabilities
US8656190B2 (en) * 2008-01-31 2014-02-18 Microsoft Corporation One time settable tamper resistant software repository
US8090108B2 (en) * 2008-04-15 2012-01-03 Adaptive Chips, Inc. Secure debug interface and memory of a media security circuit and method
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
KR101595043B1 (ko) 2008-09-18 2016-02-17 마벨 월드 트레이드 리미티드 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
US10255463B2 (en) 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
US10452844B2 (en) * 2008-11-26 2019-10-22 International Business Machines Corporation Protecting isolated secret data of integrated circuit devices
WO2010073444A1 (ja) * 2008-12-24 2010-07-01 パナソニック株式会社 バスコントローラ及び初期ブートプログラムのパッチ方法
JP5565778B2 (ja) * 2009-01-05 2014-08-06 マーベル ワールド トレード リミテッド 不揮発性メモリデバイスを利用するハイバネートまたはサスペンド方法およびシステム
US9058491B1 (en) 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
JP4747288B2 (ja) * 2009-04-03 2011-08-17 株式会社バッファロー 外付け記憶装置及びその制御方法
US8424071B2 (en) * 2009-04-15 2013-04-16 International Business Machines Corporation Method and apparatus for secure and reliable computing
GB2474250B (en) * 2009-10-07 2015-05-06 Advanced Risc Mach Ltd Video reference frame retrieval
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
US9336410B2 (en) 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
US8442235B2 (en) * 2010-04-14 2013-05-14 Microsoft Corporation Extensible management of self-encrypting storage devices
US8555059B2 (en) * 2010-04-16 2013-10-08 Microsoft Corporation Secure local update of content management software
WO2012010205A1 (en) * 2010-07-22 2012-01-26 Nagravision S.A. A processor-implemented method for ensuring software integrity
CA2759971A1 (en) * 2010-11-29 2012-05-29 Groupe Cgi Inc. Method for storing (hiding) a key in a table and corresponding method for retrieving the key from the table
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
US20140149729A1 (en) 2011-07-18 2014-05-29 Ted A. Hadley Reset vectors for boot instructions
US9141394B2 (en) 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US8732527B2 (en) * 2011-08-16 2014-05-20 Google Inc. Secure recovery apparatus and method
US8756594B2 (en) * 2011-10-28 2014-06-17 Microsoft Corporation Reactive anti-tampering system for protected services in an enterprise computing system
US9021246B2 (en) * 2011-10-28 2015-04-28 GM Global Technology Operations LLC Method to replace bootloader public key
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
KR101301609B1 (ko) * 2012-05-31 2013-08-29 서울대학교산학협력단 비밀키 생성 장치 및 방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9798901B2 (en) 2013-04-30 2017-10-24 Nxp Usa, Inc. Device having a security module
US20140344581A1 (en) * 2013-05-16 2014-11-20 Cisco Technology, Inc. Secure Upgrades for Field Programmable Devices
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
WO2015015305A1 (en) 2013-07-31 2015-02-05 Marvell Word Trade Ltd. Parallelizing boot operations
US9497221B2 (en) * 2013-09-12 2016-11-15 The Boeing Company Mobile communication device and method of operating thereof
US9607177B2 (en) * 2013-09-30 2017-03-28 Qualcomm Incorporated Method for securing content in dynamically allocated memory using different domain-specific keys
EP3087471A4 (en) * 2013-12-27 2017-10-11 Intel Corporation Controlled customization of silicon initialization
US20150286823A1 (en) * 2014-04-07 2015-10-08 Qualcomm Incorporated System and method for boot sequence modification using chip-restricted instructions residing on an external memory device
US10691838B2 (en) 2014-06-20 2020-06-23 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
US10169618B2 (en) 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US10192062B2 (en) * 2014-06-20 2019-01-29 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
CN104320248A (zh) * 2014-11-14 2015-01-28 中国建设银行股份有限公司 一种系统间密钥同步的方法及系统
EP3040896A1 (en) 2014-12-30 2016-07-06 Gemalto Sa Secure element
US10541811B2 (en) * 2015-03-02 2020-01-21 Salesforce.Com, Inc. Systems and methods for securing data
US10114958B2 (en) * 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions
US20160378151A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Rack scale architecture (rsa) and shared memory controller (smc) techniques of fast zeroing
US9996479B2 (en) * 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9917687B2 (en) * 2015-10-12 2018-03-13 Microsoft Technology Licensing, Llc Migrating secrets using hardware roots of trust for devices
EP3427435A1 (en) 2016-03-08 2019-01-16 Marvell World Trade Ltd. Methods and apparatus for secure device authentication
SG10201602449PA (en) * 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
CN107808099B (zh) * 2016-09-08 2021-03-16 北京自动化控制设备研究所 嵌入式软件加密/解密系统及方法
US10896267B2 (en) * 2017-01-31 2021-01-19 Hewlett Packard Enterprise Development Lp Input/output data encryption
US10872043B2 (en) * 2017-08-17 2020-12-22 Microchip Technology Incorporated Systems and methods for integrity checking of code or data in a mixed security system while preserving confidentiality
CN108108631A (zh) * 2017-11-29 2018-06-01 晨星半导体股份有限公司 一种根密钥处理方法及相关装置
US10757087B2 (en) 2018-01-02 2020-08-25 Winbond Electronics Corporation Secure client authentication based on conditional provisioning of code signature
US11314858B2 (en) * 2018-10-10 2022-04-26 Comcast Cable Communications, Llc Event monitoring
FR3098613A1 (fr) * 2019-07-09 2021-01-15 STMicroelectronics (Grand Ouest) SAS Procede de gestion du fonctionnement d’au moins un logiciel applicatif chiffre et circuit integre correspondant
CN112241272B (zh) * 2019-07-17 2023-08-01 宇通客车股份有限公司 一种车载仪表及其升级方法、系统
CN113496016A (zh) * 2020-04-08 2021-10-12 深圳市中兴微电子技术有限公司 一种内存的访问方法、系统级芯片和电子设备
US11416621B2 (en) * 2020-06-18 2022-08-16 Micron Technology, Inc. Authenticating software images
JP7391802B2 (ja) * 2020-09-11 2023-12-05 株式会社東芝 情報処理装置、情報処理方法及びコンピュータプログラム
US11580215B2 (en) * 2020-09-14 2023-02-14 Micron Technology, Inc. Authenticating software images

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168396A (en) 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4465901A (en) 1979-06-04 1984-08-14 Best Robert M Crypto microprocessor that executes enciphered programs
US6822553B1 (en) 1985-10-16 2004-11-23 Ge Interlogix, Inc. Secure entry system with radio reprogramming
US4797853A (en) 1985-11-15 1989-01-10 Unisys Corporation Direct memory access controller for improved system security, memory to memory transfers, and interrupt processing
US4920483A (en) 1985-11-15 1990-04-24 Data General Corporation A computer memory for accessing any word-sized group of contiguous bits
US4951249A (en) * 1986-10-24 1990-08-21 Harcom Security Systems Corp. Method and apparatus for controlled access to a computer system
US5144659A (en) 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
DE69130519T2 (de) * 1990-06-29 1999-06-10 Digital Equipment Corp Hochleistungsfähiger Multiprozessor mit Gleitkommaeinheit und Verfahren zu seinem Betrieb
GB2255260B (en) 1991-04-24 1995-06-14 Mars Inc Transaction systems
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5918007A (en) 1992-05-27 1999-06-29 International Business Machines Corporation Trusted personal computer system with limited accessibility
US5440713A (en) 1992-05-29 1995-08-08 Industrial Technology Research Institute M-way N-port paged-interleaved memory system
US5603081A (en) 1993-11-01 1997-02-11 Telefonaktiebolaget Lm Ericsson Method for communicating in a wireless communication system
EP0681768B1 (en) 1992-12-30 2001-03-28 Telstra Corporation Limited A method and apparatus for generating a cipher stream
US5561817A (en) 1993-08-16 1996-10-01 Thermo King Corporation Method of securely controlling direct memory access (DMA) of a shared memory by a DMA device on an expansion board
US5841868A (en) 1993-09-21 1998-11-24 Helbig, Sr.; Walter Allen Trusted computer system
US5491827A (en) 1994-01-14 1996-02-13 Bull Hn Information Systems Inc. Secure application card for sharing application data and procedures among a plurality of microprocessors
US5805706A (en) * 1996-04-17 1998-09-08 Intel Corporation Apparatus and method for re-encrypting data without unsecured exposure of its non-encrypted format
US5564054A (en) * 1994-08-25 1996-10-08 International Business Machines Corporation Fail-safe computer boot apparatus and method
US5544255A (en) 1994-08-31 1996-08-06 Peripheral Vision Limited Method and system for the capture, storage, transport and authentication of handwritten signatures
US5893921A (en) 1995-02-10 1999-04-13 International Business Machines Corporation Method for maintaining memory coherency in a computer system having a cache utilizing snoop address injection during a read transaction by a dual memory bus controller
US5610980A (en) * 1995-02-13 1997-03-11 Eta Technologies Corporation Method and apparatus for re-initializing a processing device and a storage device
US5757915A (en) 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
DE19536169A1 (de) 1995-09-29 1997-04-03 Ibm Multifunktionale Chipkarte
US6577734B1 (en) * 1995-10-31 2003-06-10 Lucent Technologies Inc. Data encryption key management system
US5809230A (en) 1996-01-16 1998-09-15 Mclellan Software International, Llc System and method for controlling access to personal computer system resources
US5825878A (en) 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
US6101543A (en) 1996-10-25 2000-08-08 Digital Equipment Corporation Pseudo network adapter for frame capture, encapsulation and encryption
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
JPH10177560A (ja) 1996-12-17 1998-06-30 Ricoh Co Ltd 記憶装置
US5887131A (en) 1996-12-31 1999-03-23 Compaq Computer Corporation Method for controlling access to a computer system by utilizing an external device containing a hash value representation of a user password
US5930824A (en) * 1997-02-04 1999-07-27 International Business Machines Corporation System and method for demand-base data recovery
DE19708616C2 (de) 1997-03-03 1999-09-02 Siemens Ag Elektronische Datenverarbeitungseinrichtung und -system
GB2325061B (en) 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
US5935247A (en) 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US6438666B2 (en) * 1997-09-26 2002-08-20 Hughes Electronics Corporation Method and apparatus for controlling access to confidential data by analyzing property inherent in data
US6023510A (en) 1997-12-24 2000-02-08 Philips Electronics North America Corporation Method of secure anonymous query by electronic messages transported via a public network and method of response
US6230269B1 (en) 1998-03-04 2001-05-08 Microsoft Corporation Distributed authentication system and method
US6226742B1 (en) 1998-04-20 2001-05-01 Microsoft Corporation Cryptographic technique that provides fast encryption and decryption and assures integrity of a ciphertext message through use of a message authentication code formed through cipher block chaining of the plaintext message
US6141756A (en) * 1998-04-27 2000-10-31 Motorola, Inc. Apparatus and method of reading a program into a processor
US6775778B1 (en) * 1998-05-29 2004-08-10 Texas Instruments Incorporated Secure computing device having boot read only memory verification of program code
DE69942712D1 (de) * 1998-05-29 2010-10-14 Texas Instruments Inc Sichere Rechnervorrichtung
US6182142B1 (en) 1998-07-10 2001-01-30 Encommerce, Inc. Distributed access management of information resources
US6385727B1 (en) * 1998-09-25 2002-05-07 Hughes Electronics Corporation Apparatus for providing a secure processing environment
US6116402A (en) 1998-10-23 2000-09-12 Coinstar, Inc. Voucher coding for self-service coin discriminator
US20020013911A1 (en) * 1998-11-24 2002-01-31 Cordella Robert H. Compact hardware architecture for secure exchange of information and advanced computing
US20020032867A1 (en) * 1998-11-24 2002-03-14 Kellum Charles W. Multi-system architecture using general purpose active-backplane and expansion-bus compatible single board computers and their peripherals for secure exchange of information and advanced computing
US6408387B1 (en) * 1999-01-22 2002-06-18 Intel Corporation Preventing unauthorized updates to a non-volatile memory
US6311255B1 (en) 1999-04-29 2001-10-30 International Business Machines Corporation System and method for selectively restricting access to memory for bus attached unit IDs
US6711684B1 (en) * 1999-06-08 2004-03-23 General Instrument Corporation Variable security code download for an embedded processor
US6609169B1 (en) * 1999-06-14 2003-08-19 Jay Powell Solid-state audio-video playback system
US20020042882A1 (en) * 2000-10-10 2002-04-11 Dervan R. Donald Computer security system
US7055038B2 (en) * 2001-05-07 2006-05-30 Ati International Srl Method and apparatus for maintaining secure and nonsecure data in a shared memory system
US20020184512A1 (en) * 2001-05-31 2002-12-05 Cardoso Augusto C. Method and apparatus for supporting remote configuration to facilitate subscriber management
US6971051B2 (en) * 2002-01-10 2005-11-29 Agilent Technologies, Inc. System and method of recovering from soft memory errors

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155697B1 (ko) * 2009-03-04 2012-06-12 애플 인크. 비휘발성 메모리에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 데이터 화이트닝
US8589700B2 (en) 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
US8918655B2 (en) 2009-03-04 2014-12-23 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
WO2022055899A1 (en) * 2020-09-08 2022-03-17 Micron Technology, Inc. Cloud-based creation of a customer-specific symmetric key activation database

Also Published As

Publication number Publication date
JP2009032282A (ja) 2009-02-12
US20040088559A1 (en) 2004-05-06
EP1648109B1 (en) 2013-03-27
CN1647443B (zh) 2010-05-05
EP1500225A1 (en) 2005-01-26
US6957335B2 (en) 2005-10-18
EP1648109A2 (en) 2006-04-19
CN1647443A (zh) 2005-07-27
JP4473330B2 (ja) 2010-06-02
US20030200454A1 (en) 2003-10-23
US7356707B2 (en) 2008-04-08
EP1500225A4 (en) 2007-12-12
WO2003090402A1 (en) 2003-10-30
JP4464689B2 (ja) 2010-05-19
RU2004133759A (ru) 2005-08-27
US6715085B2 (en) 2004-03-30
IL164718A (en) 2009-11-18
EP1648109A3 (en) 2007-12-26
CA2481569C (en) 2008-10-07
RU2295834C2 (ru) 2007-03-20
IL164718A0 (en) 2005-12-18
JP2005523537A (ja) 2005-08-04
AU2003223671A1 (en) 2003-11-03
CA2481569A1 (en) 2003-10-30
US20040083375A1 (en) 2004-04-29
WO2003090402A8 (en) 2004-12-29
KR100809977B1 (ko) 2008-03-07
PL372374A1 (en) 2005-07-25

Similar Documents

Publication Publication Date Title
KR100809977B1 (ko) 집적 시스템 내에서의 보안 운영의 활성화 방법, 보안 운영의 초기화 방법, 암호화된 데이터의 변환 방법 및 집적 시스템 기능의 복원 방법
US7266842B2 (en) Control function implementing selective transparent data authentication within an integrated system
US7089419B2 (en) Control function with multiple security states for facilitating secure operation of an integrated system
US6735696B1 (en) Digital content protection using a secure booting method and apparatus
US8838950B2 (en) Security architecture for system on chip
US6895506B1 (en) Secure storage and execution of processor control programs by encryption and a program loader/decryption mechanism
JP5636371B2 (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
EP2706478B1 (en) Protecting secure software in a multi-security-CPU system
US20100329456A1 (en) Semiconductor device including encryption section, semiconductor device including external interface, and content reproduction method
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
US9171170B2 (en) Data and key separation using a secure central processing unit
AU743775B2 (en) An apparatus for providing a secure processing environment
CA2638955C (en) Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
AU750573B2 (en) Method and apparatus for controlling access to confidential data
US20050210274A1 (en) Apparatus and method for intellectual property protection using the microprocessor serial number
MXPA00005081A (en) An apparatus for providing a secure processing environment

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20130124

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140124

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150127

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee