KR20150036614A - 저전력 상태시 메모리 영역 보호 방법 및 장치 - Google Patents

저전력 상태시 메모리 영역 보호 방법 및 장치 Download PDF

Info

Publication number
KR20150036614A
KR20150036614A KR1020157003891A KR20157003891A KR20150036614A KR 20150036614 A KR20150036614 A KR 20150036614A KR 1020157003891 A KR1020157003891 A KR 1020157003891A KR 20157003891 A KR20157003891 A KR 20157003891A KR 20150036614 A KR20150036614 A KR 20150036614A
Authority
KR
South Korea
Prior art keywords
str
signature
memory
data structure
processor system
Prior art date
Application number
KR1020157003891A
Other languages
English (en)
Other versions
KR101662616B1 (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 KR20150036614A publication Critical patent/KR20150036614A/ko
Application granted granted Critical
Publication of KR101662616B1 publication Critical patent/KR101662616B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

개시된 예시적 방법은, 프로세서 시스템을 저전력 모드로 천이하는 경우, 그 저전력 모드 동안에 보호되는 메모리 영역들의 메모리 어드레스들을 저장하는 데이터 구조에 기초하여 적어도 제 1 시그너쳐를 생성하는 단계를 포함한다. 저전력 모드로부터 프로세서 시스템의 재개 프로세스 동안, 저전력 모드 동안에 보호되는 메모리 영역들의 메모리 어드레스들을 저장하는 데이터 구조에 기초하여 적어도 제 2 시그너쳐가 생성된다. 제 1 시그너쳐가 제 2 시그너쳐와 일치하면, 프로세서 시스템은 저전력 모드로부터 프로세서 시스템을 재개한다. 제 1 시그너쳐가 제 2 시그너쳐와 일치하지 않으면, 에러가 생성된다.

Description

저전력 상태시 메모리 영역 보호 방법 및 장치{METHODS AND APPARATUS TO PROTECT MEMORY REGIONS DURING LOW-POWER STATES}
본 발명은 일반적으로 프로세서 시스템에 관한 것으로, 보다 구체적으로는 저전력 상태시에 프로세서 시스템의 메모리 영역을 보호하기 위한 방법 및 장치에 관한 것이다.
에너지 스타(Energy Star) 표준은 전자 장치의 허용가능한 저전력 소비 등급에 대한 전력 레벨을 정의한다. 이러한 에너지 스타 표준을 준수하기 위해, 전자 장치는 종종 하나 이상의 저전력 모드를 실행한다. 이러한 저전력 모드는 풀-오프(full-off) 전력 상태, 서스펜드-투-RAM(STR; suspend-to-RAM)) 전력 상태, 서스펜드-투-디스크(STD; suspend-to-disk)(하이버네이트(hibernate)) 상태, 및/또는 하나 이상의 타입의 대기 전력 상태들을 포함한다. 풀-오프 전력 상태는 일반적으로 임의의 플랫폼 전력 상태의 최저량의 전력을 소비한다. 그러나, 풀-오프 전력 상태는 전원-온(power-on) 동작이 재적용된 후에 플랫폼이 플랫폼 소프트웨어의 풀 부트(a full boot)를 완료할 것을 요구한다. 이러한 풀 부트는 바람직하지 못한 부트 지연(boot latencies)을 초래한다.
STR 전력 상태는 풀-오프 상태의 대안이다. STR 전력 상태는 STR 전력 상태에 진입하기 직전에 존재한 것과 같이 플랫폼 소프트웨어의 동작 상태를 유지한다. STR 전력 상태 동안에 RAM에서 플랫폼 소프트웨어 동작 상태가 유지되기 때문에, 플랫폼 소프트웨어는 STR 상태에 진입하기 전에 중단된 부트 프로세스의 부분들만을 계속해서 실행해야 한다.
도 1은 액티브 전력 상태(active power state)와 STR(suspend-to-RAM) 전력 상태 사이에서 천이하는 예시적인 프로세서 시스템을 도시한다.
도 2는 프로세서 시스템의 저전력 상태 동안에 메모리 영역을 보호하기 위해 사용될 수 있는 도 1의 예시적인 프로세서 시스템의 예시적인 구성요소들을 도시한다.
도 3은 저전력 상태 동안에 시스템 메모리에 저장된 플랫폼 소프트웨어의 보호 영역에 대한 위치 정보 및 시그너쳐들(signatures)을 저장하는 예시적인 데이터 구조를 나타낸다.
도 4는 본 발명의 개시내용에 따라 저전력 모드 전력 상태와 액티브 전력 상태 사이에서 도 1의 프로세서 시스템을 천이하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
도 5는 저전력 상태로부터 콜드 부트(a cold boot) 또는 재개(resume)시에 프로세서 시스템을 부트하기 위한 호스트 부트 시퀀스를 수행하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
도 6은 프로세서 시스템을 저전력 상태로 천이하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
도 7a 및 도 7b는 소프트웨어 플랫폼 동작 상태에 대한 데이터를 저장하는 시스템 메모리의 보호 영역을 검증하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
도 8은 저전력 상태로부터 재시작하기 위한 재개 프로세스 또는 콜드 부트 프로세스 하에서 프로세서 시스템을 부트하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
도 9는 STR 데이터 구조를 인증하는 데 사용할 수 있는 시그너쳐들을 생성하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
도 10은 STR 데이터 구조의 유효성을 검증하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다.
여기서 개시되는 예시적인 방법, 장치, 시스템 및 제조품은 프로세서 시스템의 저전력 상태시에 메모리의 영역을 보호할 수 있게 한다. 개시된 예들은 여기서 STR(suspend-to-RAM) 전력 상태와 관련해서 설명된다. 그러나, 여기서 개시된 예들은 프로세서 시스템의 다른 전력 상태들 동안에 메모리의 영역들을 보호하기 위해 추가적으로 또는 대안으로서 사용될 수 있다.
프로세서 시스템은 풀-파워-온(full-power-on) 상태에서부터 완전히 오프 상태(fully off state)에까지 이르는 상이한 전력 상태들 사이에서 천이하도록 구성될 수 있다. 이들 상이한 전력 상태들은 전력을 절약하기 위해 제공된다. STR 전력 상태와 같은 중간(intermediate)의 전력 상태들은, 완전히 오프 상태(a fully off state) 또는 STD(suspend-to-disk)(예를 들어, 하이버네이트) 전력 상태로부터 콜드 부트를 수행할 때에 가능한 것보다 비교적 빠르게 동작을 재개하는(예를 들어, STR 전력 상태를 완전히 온 상태(a fully on state)로 나가게 하는) 능력을 갖는 것과 저전력 소비와의 균형을 깨트리는 데 종종 사용된다. STR 전력 상태는, 프로세서 시스템이 STR 상태로 시스템의 천이를 개시할 때에 실행하고 있는 플랫폼 소프트웨어(예를 들어, 운영 시스템(OS) 및/또는 애플리케이션)의 랜덤 액세스 메모리에서의 상태 또는 상태들을 프로세서 시스템이 유지하는 저전력 상태이다. 프로세서 시스템이 STR 상태를 완전히 온 전력 상태로 재개하거나 나가게 하면, 프로세서 시스템은 완전히 오프 상태 또는 하이버네이트 상태로부터 콜드 부트를 수행할 때에 요구되는 바와 같이 전체의 플랫폼 부트 소프트웨어를 실행할 필요가 없다. 기존 시스템들에서는, 플랫폼 시스템 메모리가 STR 전력 상태에 있을 때에 손상될 수 있기 때문에, 재개시에 전체의 플랫폼 부트 소프트웨어를 실행하지 않는 것은 잠재적인 보안 리스크를 가져온다. 예컨대, 플랫폼 소프트웨어의 동작 상태(들)를 저장하는 메모리 영역들에 악성 코드가 기록될 수 있다. 이러한 기존 시스템들의 STR 상태로부터 재개시에, 손상된 플랫폼 소프트웨어는 실행될 수 있어, 공격자가 시스템의 제어를 할 수 있게 하거나 아니면 시스템을 손상시킬 수 있게 한다.
STR 전력 상태에 있을 때에 보안 취약성을 갖는 기존 시스템들과는 달리, 프로세서 시스템들이 서스펜드(suspend) 전력 상태 또는 저전력 상태(예를 들어, STR 전력 상태)에 있을 때에 플랫폼 소프트웨어를 보호하는 특징들을 시스템 인티그레이터 및 플랫폼 소프트웨어에 제공하도록 신뢰되는 재개(a trusted resume)를 구현하는 데 여기서 개시된 예들이 사용될 수 있다.
도 1은 프로세서 시스템(100)의 저전력 상태 동안에 메모리 영역들을 보호하도록 여기서 개시된 예들을 구현하는 데 사용될 수 있는 예시적인 프로세서 시스템(100)을 도시한다. 도시된 예에서, 프로세서 시스템(100)은 액티브 전력 상태(102)와 STR 전력 상태(104) 사이에서 천이하는 것으로 도시되어 있다. 도시된 예의 액티브 전력 상태(102)에서, 마이크로프로세서(uP) 서브시스템(106), 통신 서브시스템(108), 메모리 서브시스템(110), 및 사용자 인터페이스(I/F) 서브시스템(112)은 완전히 전력 공급된 것으로 도시되어 있다. 도시된 예의 STR 전력 상태(104)에서, 마이크로프로세서 서브시스템(106), 통신 서브시스템(108), 메모리 서브시스템(110), 및 디스플레이 서브시스템(112)은 그 부분들에서 전력이 없어진 저전력 상태에 있는 것으로 도시되어 있다.
도시된 예에서, 전력이 부분들(114, 116, 118, 120)에 인가된 상태를 유지함에 따라 마이크로프로세서 서브시스템(106), 통신 서브시스템(108), 메모리 서브시스템(110), 및 디스플레이 서브시스템(112)은 단지 부분적으로 전력 공급된다. 이와 같이, 전력 공급된 부분들(114, 116, 118, 120)은 STR 전력 상태(104)로부터 프로세서 시스템(100)의 액티브 전력 상태(102)를 재개하기 위해 사용가능하다. 도시된 예에서, 전력 공급된 마이크로프로세서 부분(120)은 STR 전력 상태(104) 동안에 RAM(예를 들어, 도 2의 시스템 메모리(210))에 저장된 플랫폼 소프트웨어의 메모리 어드레스 위치들 및 보안 파라미터들(예를 들어, 시그너쳐들)을 저장하고 있는 인증 테이블로의 포인터(예를 들어, 도 2의 STR 데이터 구조로의 포인터) 또는 어드레스를 저장하기 위해 연속적으로 전력 공급되는 메모리(예를 들어, 도 2의 연속적으로 전력 공급되는 메모리(212))를 포함한다. 도시된 예에서, 전력 공급된 통신 서브시스템 부분(114)은 네트워크 통신을 이용하여 프로세서 시스템(100)을 재개하기 위해 웨이크 온 LNA(wake-on-LAN) 회로 또는 다른 웨이크 온 네트워크(wake-on-network) 회로에 전력을 공급하는 것을 포함할 수 있다. 도시된 예에서, 전력 공급된 메모리 서브시스템 부분(116)은, 프로세서 시스템(100)이 STR 전력 상태(104)에 있을 때에 플랫폼 소프트웨어의 상태 또는 상태들을 저장하기 위해 사용되는 시스템 메모리(예를 들어, 도 2의 시스템 메모리(210))를 포함한다. 도시된 예의 전력 공급된 사용자 인터페이스 부분(118)은 전원/웨이크 버튼의 해제(de-pressing), 혹은 키보드 키 또는 HID(human interface device)의 임의의 다른 형태의 다른 사용자 입력의 해제를 검출하기 위해 전력이 공급되는 것을 포함할 수 있다.
여기서 개시된 예들은 다수의 예시적인 보호 특징들 또는 신뢰 특징들을 제공함으로써 STR 전력 상태(104)로부터 액티브 상태(102)로 프로세서 시스템(100)을 천이하는 신뢰되는 재개의 이용을 가능하게 한다. 도시된 예들에서, 신뢰되는 재개는 (a) 저전력 모드(예를 들어, STR 전력 상태(104))에 있을 때에 플랫폼 소프트웨어의 상태(들)을 저장하는 시스템 메모리(예를 들어, 도 2의 시스템 메모리(210))의 콘텐츠를 변경시키는 악성 공격의 가능성을 실질적으로 감소시키고, (b) 시스템 메모리의 리플레이 공격(replay attacks) 및/또는 롤백 공격(rollback attacks)을 수행하는 가능성을 실질적으로 감소시키고, (c) 시스템 메모리(예를 들어, 도 2의 시스템 메모리(210))에서 다수의 인증된/비인증된 영역을 지정할 수 있게 하며, (d) 서명 키(signing key)에 대한 지식 없이 호스트 프로세서(예를 들어, 도 2의 호스트 프로세서(202))가 선택된 보호 영역(예를 들어, 도 2의 보호 영역(218))에 대한 시그너쳐를 생성/인증할 수 있게 하며, (e) 여기서 개시된 신뢰되는 재개 기술들 하에서 인증 및 검증 프로세서를 사용함으로써 보호되는 보호 영역(예를 들어, 도 2의 보호 영역(218))의 양(예를 들어, 적어도 최소한의 양)을 (예를 들어, 호스트 프로세서(예를 들어, 도 2의 호스트 프로세서(202)), 보안 프로세서(예를 들어, 도 2의 보안 프로세서(204)), 및/또는 프로세서 시스템의) 하드웨어 제조자 및 제3자 공급자가 특정할 수 있게 한다. 이하에 상세하게 기재되는 바와 같이, 여기서 개시된 예들은, STR 전력 상태(104)로의 천이시에 시스템 메모리(예를 들어, DRAM)의 중요 부분들을 인증/서명하고, STR 상태(104)에서 액티브 전력 상태(102)로 재개할 때에 시스템 메모리의 상기 인증/서명된 중요 부분들을 검증함으로써 이러한 보호를 제공한다. 개시된 예들에서, 부트 시퀀스의 스테이지 N이 스테이지 N+1에 대한 보호 영역(예를 들어, 도 2의 보호 영역(218))을 추가하도록 부트 시퀀스의 중요 부분들은 부트 시퀀스 동안에 집약된다. 롤백 공격을 보호하기 위해, 랜덤 또는 의사-랜덤 값(pseudo-random value)(예를 들어, 임시값(a nonce value))은 STR 전력 상태(104) 동안에 인증/서명 프로세스에 통합되고, 연속적으로 전력 공급되는 메모리(예를 들어, 도 2의 연속 전력 공급 메모리(212))에 저장된다.
도 2는 프로세서 시스템(100)의 전력 상태 천이를 관리하는 데 사용될 수 있는 도 1의 예시적인 프로세서 시스템(100)의 예시적인 구성요소들을 도시한다. 도시된 예에서, 프로세서 시스템(100)은 호스트 프로세서(CPU)(202), 보안 프로세서(CPU)(204), 플래시 메모리(206), 호스트 부트 RAM(208), 시스템 메모리(210), 및 연속 전력 공급 메모리(212)를 포함한다. 도시된 예의 프로세서 시스템(100)은, 예를 들어, 서버, 퍼스널 컴퓨터, 이동전화(예를 들어, 휴대폰), PDA, 인터넷 어플라이언스, DVD 플레이어, CD 플레이어, 디지털 비디오 레코더, 블루레이 플레이어, 게임 콘솔, 퍼스널 비디오 레코더, 셋톱 박스, 또는 임의의 다른 형태의 컴퓨팅 디바이스일 수 있다.
도시된 예에서, 호스트 CPU(202), 보안 CPU(204) 및 호스트 부트 RAM(208)이 동일한 실리콘 다이 상에 위치되어서, 프로세서들(202, 204) 간의 상호 프로세서 통신 및 호스트 부트 RAM(208)과의 통신은 실리콘 다이 외부에 노출되지 않는다. 이는, 호스트 CPU(202), 보안 CPU(204), 및/또는 호스트 부트 RAM(208) 사이에서 교환되는 보안 데이터 및 보안 통신에 대한 외부 접근성을 실질적으로 줄임으로써 여기서 개시된 예에 보안성을 더욱 제공한다. 또한, 도시된 예에서, 호스트 CPU(202), 보안 CPU(204), 및 호스트 부트 RAM(208)을 포함하는 실리콘 다이와 동일한 회로 기판 상에 위치되는 별도의 집적 회로 상에 플래시 메모리(206) 및 시스템 메모리(210)가 위치된다.
프로세서들(202, 204)은 임의의 바람직한 단체 또는 제조자로부터 제어기 또는 프로세서를 이용함으로써 구현될 수 있다. 도시된 예에서, 상호 프로세서 통신(IPC; inter-processor communication) 경로(214)는 프로세서들(202, 204) 사이에서 제공되어 그것들 사이의 상호 프로세서 통신을 가능하게 한다. 도시된 예에서, 호스트 프로세서(202)는 내장형 SRAM(static random access memory)을 이용하여 구현될 수 있는 연속 전력 공급 메모리(212)를 포함한다. SRAM은 휘발성 메모리이기 때문에, 도 1의 STR 전력 상태(104)와 같은 저전력 모드 동안에 도시된 예들에서 전력 공급을 유지(또는 그 일부가 전력 공급되는 것을 유지)하여서, 거기에 저장된 데이터가 보존된다.
프로세서들(202, 204)은 플래시 메모리(206), 호스트 부트 RAM(208), 및 시스템 메모리(210)와 통신하고 있다. 도시되어 있진 않지만, 프로세서들(202, 204)은 운영 시스템 및/또는 애플리케이션을 저장하는 대용량 메모리(예를 들어, 하드 드라이브)와 통신하고 있을 수도 있다. 도시된 예에서, 플래시 메모리(206)는 프로세서 시스템(100)을 부트하기 위한 파라미터들(예를 들어, 전력이 완전히 없어질 때에 휘발성 메모리에 보존되지 않는 보안 파라미터들 및/또는 다른 파라미터들)을 저장하는 데 사용되는 비휘발성 메모리이다. 도시된 예의 호스트 부트 RAM(208)은 프로세서 시스템(100)을 부트하고 운영 시스템을 로드하기 위한 부트 코드를 저장한다. 또한, 도시된 예의 호스트 부트 RAM(208)은 시스템 메모리(210)에 저장된 플랫폼 소프트웨어의 보호 영역(예를 들어, 도 2의 보호 영역(218))을 표시하기 위해 제조자 요구 영역 테이블(224)을 저장한다. 도시된 예에서, 호스트 CPU(202), 보안 CPU(204), 프로세서 시스템(100), 및/또는 프로세서 시스템(100)의 하나 이상의 하드웨어 구성요소의 하드웨어 제조자가 제조자 요구 영역 테이블(224)에서 표시된 영역(예를 들어, 보호 영역(218))을 특정하여서, 그 특정된 영역은 신뢰되는 재개를 구현하기 위해 STR 전력 상태(104)(도 1) 동안에 여기서 개시된 예들을 이용하여 보호된다.
도시된 예에서, 호스트 부트 RAM(208)은 시스템 메모리(210)에 저장된 플랫폼 소프트웨어의 제3자 특정의 보호 영역(예를 들어, 도 2의 보호 영역(218))을 표시하기 위해 조건적 액세스(CA; conditional access) 요구 영역 테이블(226)(예를 들어, 제3자 요구 영역 테이블)을 또한 저장한다. 도시된 예들에서, CA 요구 영역 테이블(226)은 애프터 마켓(after-market) 생산품 또는 개발품(예를 들어, 프로세서 시스템(100)에서의 애프터 마켓 소프트웨어 및/또는 하드웨어 설비)을 위해 제3자에 의해 액세스 및 변경될 수 있다. 예컨대, 하나 이상의 제3자가 CA 요구 영역 테이블(226)에 표시된 영역(예를 들어, 보호 영역(218))을 특정하여, 그 특정된 영역은 신뢰되는 재개를 구현하기 위해 STR 전력 상태(104)(도 1) 동안에 여기서 개시된 예들을 이용하여 보호된다. 도시된 예들에서, 호스트 CPU(202)가 인스트럭션의 실행을 시작하기 전에 CA 요구 영역 테이블(226)은 보안 CPU(204)에 의해 호스트 부트 RAM(208)에 복사되고 호스트 부트 RAM(208)으로부터 인증된다. 도시된 예들에서, 이는 호스트 CPU(202)가 자신의 리셋 벡터로부터 부트하는 전력 상태 천이시에(예를 들어, STR 전력 상태(104)로부터 재개하는 경우에 및/또는 콜드 부트시에) 발생한다. 일부 예들에서, CA 요구 영역 테이블(226)은 스테이지-1 부트 로더(예를 들어, 도 5에 도시된 스테이지-1 부트 프로세스) 동안에 인증되는 호스트 부트 RAM(208)의 인증 영역에 저장될 수 있다. 이와 달리, CA 요구 영역 테이블(226)은 스테이지-1 부트 로더 파라미터 블록의 부분으로서 구현될 수 있다.
제조자 요구 영역 테이블(224) 및 CA 요구 영역 테이블(226)을 사용함으로써, 하드웨어 제조자 및 제3자로 하여금, 여기서 개시된 예들을 이용하여 보호하기에 유용하다고 생각하는 보호 영역(예를 들어, 보호 영역(218))을 특정할 수 있게 한다. 이와는 달리, 일부 예들에서, 제조자 요구 영역 테이블(224) 및 CA 요구 영역 테이블(226)은 호스트 부트 RAM(208)에 저장된 단일 테이블로서 구현될 수 있다.
도시된 예들의 시스템 메모리(210)는 프로세서 시스템(100)이 액티브 전력 상태(102)로부터 도 1의 STR 전력 상태(104)로 천이할 때에 실행중인 플랫폼 소프트웨어(예를 들어, 운영 시스템 및/또는 애플리케이션)의 동작 상태를 저장한다. 이러한 방식으로, 프로세서 시스템(102)은 시스템 메모리(210)에 저장된 플랫폼 소프트웨어 상태(들)에 기초하여 STR 전력 상태(104)에서 액티브 전력 상태(102)로 천이하여, STR 전력 상태(104)에 진입하기 전에 있었던 동일한 동작 상태를 재개할 수 있다. 예컨대, 운영 시스템은 자신의 동일한 이전 동작 상태로 재개할 수 있고, 또한 이전에 로드되어 실행중이었던 애플리케이션들은 그것들의 동일한 이전 동작 상태로 재개할 수 있다.
도시된 예의 시스템 메모리(210)는 휘발성 DRAM(dynamic random access memory)을 이용하여 구현된다. 일부 예들에서, 이러한 휘발성 DRAM이 STR 전력 상태(104)에 있는 동안에 자신의 데이터를 지속시킬 수 있기 위해서, 적어도 최소량의 전력이 휘발성 DRAM에 공급되고, 그 휘발성 DRAM은 거기에 저장된 데이터가 지속되는 저전력 셀프 리프레쉬 모드(a low-power, self-refresh mode)에서 동작하도록 설정된다. 다른 예들에서, 시스템 메모리(210)는 캐시 메모리, 휘발성 SRAM, 및/또는 휘발성 또는 비휘발성 메모리의 임의의 다른 형태를 이용하여 구현될 수 있다.
도시된 예에서, 시스템 메모리(210)는 플랫폼 소프트웨어의 STR 데이터 구조(216) 및 보호 영역(218)을 저장한다. 도시된 예에서, 보호 영역(218)은, STR 전력 상태(104) 동안에 시스템 메모리(210)에 저장되며, 보안 파라미터들(예를 들어, 시그너쳐들)을 이용하여 보호 영역(218)을 서명 또는 인증함으로써 공격으로부터 보호되는 플랫폼 소프트웨어의 선택된 부분들을 저장한다. STR 데이터 구조(216)는 STR 전력 상태(104) 동안에 여기서 개시된 예들을 이용하여 보호되는 시스템 메모리(210) 내의 플랫폼 소프트웨어의 보호 영역(218)에 대한 포인터 또는 어드레스를 저장한다. 또한, 도시된 예의 STR 데이터 구조(216)는 STR 전력 상태(104)로부터의 재개시에 데이터를 인증하고 그 데이터의 유효성을 판정하기 위한 보안 파라미터들(예를 들어, 시그너쳐들)을 저장한다. 도시된 예들에서 STR 데이터 구조(216)를 구현하는 데 사용되는 예시적인 포맷은 도 3과 관련해서 이하에서 설명된다.
프로세서 시스템(100)이 완전하게 액티브 전력 상태(102)로 재개할 때에 호스트 CPU(202)가 이러한 악성 코드를 실행하도록 하게 하는 시도에 있어서 악성 소프트웨어를 저장하는 시스템 메모리(210)의 다른 영역들을 가리키도록 STR 데이터 구조(216) 내의 정보를 변경하는 공격자에 의해 프로세서 시스템(100) 상에서 공격이 시도될 수 있다. 이러한 변경이 STR 데이터 구조(216)에 존재하는지를 검출하기 위해, 여기서 개시된 검증 프로세스는 프로세서 시스템(100)의 신뢰되는 재개시에 수행되고, 그 검증 프로세스는 STR 전력 상태(104) 동안에 STR 데이터 구조(216)가 변경되었다고 검출되면 에러를 생성한다. 이러한 방식으로, 호스트 CPU(202) 및/또는 보안 CPU(204)는 프로세서 시스템(100)이 재개 프로세스를 갖고서 진행하는 것을 막을 수 있어서, 프로세서 시스템(100)은 악성 소프트웨어에 의해 손상될 수 없다.
도시된 예에서, 호스트 CPU(202)의 연속 전력 공급 메모리(212)는 시스템 메모리(210) 내의 STR 데이터 구조(216)의 저장 위치(예를 들어, 메모리 어드레스)를 가리키는 예시적인 STR 데이터 구조 포인터(220)를 저장한다. 프로세서 시스템(100)을 STR 전력 상태(104)에서 천이하기 위한 신뢰되는 재개 프로세스 동안에, 호스트 CPU(202)는 플랫폼 소프트웨어의 보호 영역(218)의 무결성을 검증할 수 있게 하기 위해 STR 데이터 구조(216)의 위치를 찾아내는 STR 데이터 구조 포인터(220)를 검색할 수 있다.
도시된 예에서, 호스트 CPU(202)의 연속 전력 공급 메모리(212)는 또한 예시적인 랜덤/의사-랜덤 값(222)을 저장한다. 도시된 예의 랜덤/의사-랜덤 값(222)은 STR 전력 상태(104) 동안에 시스템 메모리(210)에 저장된 플랫폼 소프트웨어의 보호 영역(208)의 무결성을 확인하기 위한 검증 시그너쳐들을 생성하는 데 임시값으로서 사용된다. 도시된 예에서, 프로세서 시스템(100)이 STR 전력 상태(104)로 천이하고 있을 때에 랜덤/의사-랜덤 값(222)은 검증 시그너쳐들을 생성하는 데 사용된다. 검증 시그너쳐들을 생성한 후에, 랜덤/의사-랜덤 값(222)은 바람직하지 못한 액세스로부터 안전하게 연속 전력 공급 메모리(212)에 저장된다. 이렇게 하여, STR 전력 상태(104)에서 재개하는 경우, 랜덤/의사-랜덤 값(222)은 연속 전력 공급 메모리(212)로부터 검색되어, 플랫폼 소프트웨어의 보호 영역(218)의 무결성을 검증하는 데 사용될 수 있다. 도시된 예에서, 랜덤/의사-랜덤 값(222)은 임의의 잠재적인 공격자가 액세스 또는 변경하는 것이 매우 어려운 고유 비밀값으로서 기능함으로써 리플레이/롤백 공격을 보호하기 위해 사용되는데, 이는 랜덤/의사-랜덤 값(222)이 호스트 CPU(202)의 연속 전력 공급 메모리(212)에 저장되기 때문이다. 또한, 랜덤/의사-랜덤 값(222)은 충분히 랜덤하기 때문에 공격자에 의해 용이하게 예측할 수 없다. 일부 예들에서, 랜덤/의사-랜덤 값(222)을 위해 비교적 큰 수의 비트(예를 들어, 64비트 이상)를 선택하는 것은, 충돌 공격(a collision attack)을 시작하는 공격자에 대한 시간 및 저장 관점에서 이를 매우 고비용으로 만듦으로써 리플레이/롤백 공격을 보호한다. 예컨대, 비교적 많은 수의 비트를 갖는 랜덤/의사-랜덤 값(222)을 이용함으로써, 충돌 공격을 시작하기 위해 공격자가 다수의 DRAM/STR 데이터 구조 순열(permutations)을 저장해야 할 것이다.
도 3은 도 1의 STR 전력 상태(104) 동안에 도 2의 시스템 메모리(210)에서 지속되는 플랫폼 소프트웨어의 보호 영역(218)을 인증하기 위한 시그너쳐들 및 위치 정보를 저장하는 도 2의 STR 데이터 구조(216)를 구현하는 데 사용될 수 있는 예시적인 STR 데이터 구조 포맷을 도시한다. 도시된 예에서, STR 데이터 구조 포맷(300)은, 제로(0)의 바이트 오프셋에 STR 시그너쳐를 저장하고 STR 데이터 구조(216)에서 16바이트의 데이터 사이즈를 차지하는 STR 헤더 시그너쳐 필드(302)를 포함한다. 도시된 예의 STR 헤더 시그너쳐는 STR 데이터 구조(216)의 (예를 들어, STR 헤더 필드(308)에 저장된) STR 헤더를 인증하여, 그것이 유효한지(예를 들어, STR 전력 상태(104) 동안에 대체 또는 손상되지 않았는지)를 확인하기 위해 사용된다.
도시된 예의 STR 데이터 구조 포맷(300)은 16의 바이트 오프셋에 STR 분산/수집(scatter/gather) 테이블 시그너쳐를 저장하고, STR 데이터 구조에 16바이트의 데이터 사이즈를 차지하는 STR 분산/수집 테이블 시그너쳐 필드(304)를 포함한다. 도시된 예들에서, STR 분산/수집 테이블 시그너쳐는 STR 데이터 구조(216)에 저장된 N×8-바이트 분산/수집 테이블(310)을 인증하여, 그것이 유효한지(예를 들어, STR 전력 상태(104) 동안에 대체 또는 손상되지 않았는지)를 확인하기 위해 사용된다. 도시된 예에서, 분산/수집 테이블(310)은 플랫폼 소프트웨어의 보호 영역(218)을 저장하는 시스템 메모리(210)에서의 위치들에 대한 포인터들을 저장한다.
또한, 도시된 예의 STR 데이터 구조 포맷(300)은, 32의 바이트 오프셋에 STR DRAM 시그너쳐를 저장하고 STR 데이터 구조(216)에 16바이트의 데이터 사이즈를 차지하는 STR DRAM 시그너쳐 필드(306)를 포함한다. 도시된 예들에서, STR DRAM 시그너쳐는 STR 데이터 구조(216)에 저장된 분산/수집 테이블(310)에서 규정된 DRAM 영역을 인증하여 그것이 유효한지(STR 전력 상태(104) 동안에 대체 또는 손상되지 않았는지)를 확인하는 데 사용된다. 도시된 예에서, 분산/수집 테이블(310)에 의해 규정된 DRAM 영역은 포인터-0 필드(312)에 저장된 포인터에 의해 가리켜지고, 이는 보호 영역(218)(도 2) 중 최초 16-바이트 정렬 버퍼이다.
도시된 예들에서, STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에 저장된 시그너쳐들은 프로세서 시스템(100)이 STR 전력 상태(104)로 천이하고 있을 때에 STR 데이터 구조(216)에 서명하기 위해 사용된다. 이렇게 하여, 저장된 시그너쳐들은 STR 전력 상태(104)에서 프로세서 시스템(100)을 재개하는 경우에 사용되어, STR 데이터 구조(216)가 유효한지(예를 들어, STR 전력 상태(104) 동안에 대체 또는 손상되지 않았는지)를 판정할 수 있다. 예컨대, 프로세서 시스템(100)이 완전하게 액티브 전력 상태(102)로 재개할 때에, 이러한 악성 코드를 호스트 CPU(202)가 실행시키도록 하는 시도에 있어서, 악성 소프트웨어를 저장하는 시스템 메모리(210)의 상이한 영역을 가리키도록 STR 데이터 구조(216) 내의 정보를 잠재적인 공격자들이 변경할 수 있다. 이러한 변경이 STR 데이터 구조(216)에 존재하면, 프로세서 시스템(100)의 신뢰되는 재개 동안에 수행되는 검증 프로세스는 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및/또는 STR DRAM 시그너쳐 필드(306) 중 하나 이상의 시그너쳐(들)에 기초하여 에러를 생성한다.
도 3에 3개의 시그너쳐 필드(302, 304, 306)가 도시되어 있지만, 보다 적은 시그너쳐(예를 들어, 1개의 시그너쳐 또는 2개의 시그너쳐) 또는 보다 많은 시그너쳐(예를 들어, 3개 이상의 시그너쳐)가 재개 동작 동안에 STR 데이터 구조(216)를 인증/서명하고 그 유효성을 확인하기 위해 여기서 개시된 예들과 함께 사용될 수 있다. 또한, 특정한 형태의 시그너쳐들이 여기서 개시되어 있지만(예를 들어, 헤더 시그너쳐, 분산/수집 테이블 시그너쳐, 및 DRAM 시그너쳐), 다른 형태의 시그너쳐들 및/또는 시그너쳐들의 다른 생성 방식들이 재개 동작 동안에 STR 데이터 구조(216)를 인증/서명하고 그 유효성을 확인하기 위해 여기서 개시된 예들과 함께 사용될 수 있다. 예컨대, 저전력 모드의 진입시에 STR 데이터 구조(216)를 인증/서명하고, 이를 재개 프로세스 동안에 검증하기 위해 시그너쳐(들)이 사용될 수 있는 한, 하나 이상의 시그너쳐는 STR 데이터 구조(216) 내의 상이한 정보(예를 들어, 보다 많은 정보, 보다 적은 정보, 또는 상이하게 분할된 정보)에 기초하여 생성될 수 있다.
도시된 예의 STR 헤더 필드(308)는 STR 데이터 구조 포맷(300)의 수정 사항(revision)을 표시하는 STR 데이터 구조 버전 필드(316), 및 분산/수집 테이블(310)에 저장된 분산/수집 엔트리의 개수를 표시하는 분산/수집 어레이 엔트리 개수 필드(318)를 포함한다.
도시된 예에서, 분산/수집 테이블(310)에서의 각 분산/수집 엔트리는 보호 영역(218)(도 2) 내의 대응 메모리 영역의 메모리 어드레스 위치 및 데이터 사이즈를 포함한다. 분산/수집 테이블(310)은 STR DRAM 시그너쳐 필드(306)에 저장된 STR DRAM 시그너쳐에 의해 보호되는 최초 16-바이트 정렬 버퍼의 시스템 메모리(210)에서의 메모리 어드레스 위치를 가리키고 있는 포인터를 저장하기 위한 포인터-0 필드(312)를 포함한다. 분산/수집 테이블(310)의 사이즈-0 필드(320)는 최초 16-바이트 정렬 버퍼의 바이트에 데이터 사이즈를 저장한다. 도시된 예의 분산/수집 테이블(310)은, 시스템 메모리(210)에서의 메모리 어드레스 위치, 및 포인터-N 필드(324) 및 사이즈-N 필드(326)에 대응하는 N번째 16-바이트 정렬 버퍼까지의 다른 16-바이트 정렬 버퍼의 대응 데이터 사이즈를 표시하는 복수의 다른 포인터/사이즈 필드쌍(322)을 포함한다. 도시된 예에서, 포인터 및 사이즈 필드(312, 320, 322, 324, 326)는 보호 영역(218)을 저장하는 시스템 메모리(210)에서의 16-바이트 정렬 버퍼를 가리킨다. 이러한 방식으로 보호 영역(218)의 어드레스 및 사이즈를 STR 데이터 구조(216)에 저장함으로써, 여기서 개시된 예들은 STR 전력 상태(104)로부터 재개할 때에 보호 영역(218)에 액세스하는 것이 안전한지를 STR 데이터 구조(216)의 인증/서명에 의존하여 판정할 수 있다.
도시된 예에서, 분산/수집 테이블(310)은 16바이트의 배수인 사이즈로 되도록 확장가능하다. 이러한 확장성을 위해, 분산/수집 테이블(310)에는 패딩 바이트(328)가 제공된다.
도 3에는 특정한 사이즈(예를 들어, 4바이트, 8바이트, 16바이트, 32바이트, 등)와 관련해서 예시적인 STR 데이터 구조 포맷(300)이 도시되어 있지만, 다른 데이터 사이즈 및/또는 바이트 오프셋이 STR 데이터 구조 포맷(300)의 파라미터(예를 들어, 시그너쳐의 데이터 사이즈 및/또는 바이트 오프셋 및/또는 다른 파라미터)를 위해 사용될 수 있다. 분산/수집 테이블(310)이 16-바이트 정렬 버퍼를 가리키지만, 분산/수집 테이블(310)은 다른 버퍼 사이즈의 사용을 위해 적응될 수 있다. 또한, 분산/수집 테이블(310)에서의 포인터들 및/또는 사이즈 값들이 보호 영역(218)(도 2)의 위치들 및 사이즈들을 특정하기 위해 도시된 예에서 사용되지만, 보호 영역(218)의 위치들 및/또는 사이즈들을 특정하기 위한 다른 적절한 방식들이 부가적으로 또는 대안적으로 사용될 수 있다.
도 4, 5, 6, 7(a), 7(b) 및 8~10은 여기서 개시된 바와 같이 저전력 상태 동안에 메모리의 영역을 보호하도록 프로세서 시스템(100)(도 1 및 2)에 의해 실행될 수 있는 머신 판독가능 인스트럭션을 나타낸다. 이 예들에서, 머신 판독가능 인스트럭션은 도 2의 호스트 CPU(202) 및 보안 CPU(204)와 같은 하나 이상의 프로세서에 의해 실행되는 프로그램을 포함한다. 프로그램은 유형의 컴퓨터 판독가능 매체, 예를 들어 CD-ROM, 플로피 디스크, 하드 드라이브, DVD, 블루레이 디스크, 또는 프로세서(202, 204)와 연관된 메모리에 저장된 소프트웨어로 구현될 수 있지만, 이와 달리 전체 프로그램 및/또는 그 일부는 프로세서(202, 204) 이외의 디바이스에 의해 실행될 수 있고 및/또는 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 또한, 예시적인 프로그램이 도 4, 5, 6, 7(a), 7(b) 및 8~10에 도시된 흐름도를 참조하여 설명되지만, 예시적인 프로세서 시스템(100)을 구현하는 다수의 다른 방법들이 대안으로서 사용될 수 있다. 예컨대, 블록들의 실행 순서가 변경될 수 있고, 및/또는 설명되는 블록들의 일부가 변경, 제거, 또는 결합될 수 있다.
상기한 바와 같이, 도 4, 5, 6, 7(a), 7(b) 및 8~10의 예시적인 프로세스들은 유형의 컴퓨터 판독가능 매체, 예를 들어 하드 디스크 드라이브, 플래시 메모리, ROM, CD, DVD, 캐시, RAM 및/또는 임의의 지속 기간 동안(예를 들어, 연장되는 시간 구간 동안, 간단하게는 영구적으로, 일시적으로 버퍼링하는 동안, 및/또는 정보의 캐싱 동안) 정보가 저장되는 임의의 다른 저장 매체 상에 저장된 부호화된 인스트럭션(예를 들어, 컴퓨터 판독가능 인스트럭션)을 이용하여 구현될 수 있다. 여기서 사용되는 바와 같이, 유형의 컴퓨터 판독가능 매체라는 용어는 임의의 형태의 컴퓨터 판독가능 저장 장치를 포함하고 전파 신호를 배제하도록 정의된다. 부가적으로 또는 대안으로서, 도 4, 5, 6, 7(a), 7(b) 및 8~10의 예시적인 프로세스들은 비일시적 컴퓨터 판독가능 매체, 예를 들어 하드 디스크 드라이브, 플래시 메모리, ROM, CD, DVD, 캐시, RAM 및/또는 임의의 지속 기간 동안(예를 들어, 연장되는 시간 구간 동안, 간단하게는 영구적으로, 일시적으로 버퍼링하는 동안, 및/또는 정보의 캐싱 동안) 정보가 저장되는 임의의 다른 저장 매체 상에 저장된 부호화된 인스트럭션(예를 들어, 컴퓨터 판독가능 인스트럭션)을 이용하여 구현될 수 있다. 여기서 사용되는 바와 같이, 비일시적인 컴퓨터 판독가능 매체라는 용어는 임의의 형태의 컴퓨터 판독가능 저장 장치 또는 저장 디스크를 포함하고 전파 신호를 배제하도록 정의된다. 여기서 사용되는 바와 같이, "적어도"라는 구절이 청구항의 전제부에서 전환(transition) 용어로서 사용되는 경우, 이는 "포함하는"이란 용어가 제한이 없는 것과 동일한 방식으로 제한을 두지 않는다. 따라서, 전제부에서 전환 용어로서 "적어도"를 사용하는 청구항은 그 청구항에 인용된 것들에 부가하여 요소들을 포함할 수 있다.
도 4는 본 발명의 개시내용에 따라 액티브 전력 상태(102)(도 1)와 STR 전력 상태(104)(도 1) 사이에서 도 1의 프로세서 시스템을 천이시키는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도이다. 보다 상세한 논의를 위해, 이하에 설명되는 도 4, 5, 6, 7(a), 7(b) 및 8~10은 여기서 개시된 바와 같이 액티브 전력 상태(102)와 STR 전력 상태(104) 사이에서 프로세서 시스템(100)을 천이하기 위해 수행될 수 있는 추가적인 예시적 동작들을 나타낸다.
상세하게 도 4를 참조하면, 먼저, 호스트 CPU(202)(도 2)는 저전력 모드 인스트럭션을 수신한다(블록 402). 도시된 예의 저전력 모드 인스트럭션은 프로세서 시스템(100)(도 1 및 2)을 STR 전력 상태(104)(도 1)로 천이하기 위한 인스트럭션이다. 보안 CPU(204)(도 2)는 도 2의 STR 데이터 구조(216) 내의 보호 영역(218)을 식별하기 위한 엔트리를 추가한다(블록 404). 예컨대, 보안 CPU(204)는 STR 데이터 구조(216)(도 2)의 보호 영역(218)의 수량을 표시하는 정보를 분산/수집 어레이 엔트리 개수 필드(318)에 저장하고, 보호 영역(218)의 위치 및 사이즈를 설명하는 STR 데이터 구조(216)의 분산/수집 테이블(310)에 엔트리를 저장한다. 도시된 예에서, 보안 CPU(204)는 도 2의 제조자 요구 영역 테이블(224)에서 하드웨어 제조자에 의해 특정된 메모리 영역 및/또는 도 2의 조건적 액세스 요구 영역 테이블(226)에서 하나 이상의 제3자에 의해 특정된 메모리 영역에 기초하여 어떤 메모리 영역이 보호 영역(218)으로 되어야 하는지를 결정한다.
보안 CPU(204)는 STR 데이터 구조(216)를 인증하기 위해 시그너쳐들을 생성한다(블록 406). 예컨대, 보안 CPU(204)는 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에 저장하기 위한 시그너쳐들을 생성한다. 보안 CPU(204)는 시그너쳐들을 생성하기 위한 임의의 적절한 함수를 사용할 수 있고, 이 함수는 예를 들어 암호 기반 메시지 인증 코드(CMAC; cipher-based message authentication code) 함수, 해시 기반 메시지 인증 코드(HMAC; hash-based message authentication code), 또는 시그너처 생성을 위한 임의의 다른 적절한 함수를 포함한다. 도시된 예에서, 보안 CPU(204)는 STR 데이터 구조(216)의 STR 헤더 필드(308)(도 3)에 저장된 STR 헤더에 시그너쳐 생성 함수를 적용함으로써 STR 헤더 시그너쳐를 생성한다. 도시된 예에서, 보안 CPU(204)는 STR 데이터 구조(216)의 STR 분산/수집 테이블(310)(도 3)에 저장된 STR 분산/수집 테이블에 시그너쳐 생성 함수를 적용함으로써 STR 분산/수집 테이블 시그너쳐를 생성한다. 도시된 예에서, 보안 CPU(204)는, 분산/수집 테이블(310)의 포인터-0 필드(312)에 의해 가리켜지는 DRAM 영역에 시그너쳐 생성 함수를 적용하고 보호 영역(218)(도 2) 중 최초 16-바이트 정렬 버퍼를 차지함으로써 STR DRAM 시그너쳐를 생성한다. 일부 예들에서, 시그너쳐 생성 함수는 추가적인 인증 강화를 가중시키기 위해 시그너쳐를 생성할 때에 다른 데이터(예를 들어, 랜덤/의사-랜덤 값)와 결합되어 사용될 수 있다.
보안 CPU(204)는 STR 데이터 구조(216)에 시그너쳐들을 저장한다(블록 408). 예컨대, 보안 CPU(204)는 STR 데이터 구조(216)(도 2)의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에 시그너쳐들을 저장한다. 프로세서 시스템(100)은 저전력 모드에 진입한다(블록 410). 도시된 예에서, 저전력 모드는 도 1의 STR 전력 상태(104)이다.
어느 정도 이후에, 프로세서 시스템(100)은 재개 인스트럭션을 수신한다(블록 412). 예컨대, 프로세서 시스템(100)은 도 1의 통신 서브시스템을 거쳐 웨이크 온 LNA 인스트럭션을 수신하거나, 또는 도 1의 사용자 인터페이스(112)를 거쳐 사용자 입력을 수신하거나, 또는 프로세서 시스템(100)을 STR 상태(104)로부터 액티브 상태(102)로 천이하기 위한 임의의 다른 적절한 입력(예를 들어, 웨이크 업 타이머 입력, 서비스 인터럽트, 등)을 수신한다.
보안 CPU(204)는 시스템 메모리(210)로부터 STR 데이터 구조를 판독한다(블록 414). 보안 CPU(204)는 STR 데이터 구조(216)가 유효한지를 판정한다(블록 416). 예컨대, 보안 CPU(204)는 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에 저장된 시그너쳐들과 비교하기 위해 블록 406과 관련해서 상기한 것과 동일한 방식으로 시그너쳐들을 재생성한다. 이렇게 하여, 보안 CPU(204)는, STR 데이터 구조(216)의 상이한 부분을 검증하고 STR 데이터 구조(216)가 유효한지를 확인하기 위해, 블록 416에서 생성된 각 시그너쳐를 블록 406에서 생성된 대응하는 시그너쳐(예를 들어, STR 헤더 시그너쳐, STR 분산/수집 테이블 시그너쳐, 및 STR DRAM 시그너쳐)와 비교할수 있다. 임의의 재생성된 시그너쳐가 블록 406으로부터의 대응하는 시그너쳐와 일치하지 않으면, 보안 CPU(204)는 프로세서 시스템(100) 상의 잠재적인 공격이 시도되고 있다고 판정할 수 있다.
STR 데이터 구조(216)가 유효하다고 보안 CPU(204)가 판정하면(블록 418), 호스트 CPU(202)는 플랫폼 소프트웨어의 상태(들)를 복구한다(블록 420). 호스트 CPU(202)가 프로세서 시스템(100)의 액티브 전력 상태(102)를 가능하게 한다(블록 422). 그러나, 블록 418에서 보안 CPU(204)가 STR 데이터 구조(216)가 유효하지 않다고(예를 들어, 재생성된 시그너쳐들 중 하나가 블록 406에서 생성되어 STR 데이터 구조(216)에 저장된 대응하는 시그너쳐와 일치하지 않다고) 판정하면, 보안 CPU(204)는 호스트 CPU(202)로 에러를 리턴한다(블록 424). 이러한 방식으로, 호스트 CPU(202)는 프로세서 시스템(100)이 액티브 상태(102)를 재개하지 못하게 할 수 있고, 또한 프로세서 시스템(100) 상의 공격을 방지하기 위해 사전 정의된 동작 또는 프로세스를 수행할 수 있다. 일부 예들에서, 이러한 사전 정의된 동작 또는 프로세스는 프로세서 시스템(100)의 하드 리셋(hard reset)의 개시를 포함한다. 블록 422에서 액티브 전력 상태(102)를 가능하게 한 이후 또는 블록 424에서 에러를 리턴한 이후에, 도 4의 예시적인 프로세스는 종료된다.
도 5는 STR 전력 상태(104)(도 1)로부터의 콜드 부트 또는 재개시에 프로세서 시스템(100)(도 1 및 2)을 부트하기 위한 호스트 부트 시퀀스를 수행하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다. 도시된 예에서, 블록 518을 포함해서 거기까지의 동작들은 스테이지-1(S1) 부트 프로세스의 부분으로서 수행되고, 블록 520, 522, 524의 동작들은 스테이지-2(S2) 부트 프로세스 동안에 수행된다.
먼저, 호스트 CPU(202)는 호스트 부트 RAM(208)에 저장된 호스트 부트 RAM 인스트럭션을 실행한다(블록 502). 호스트 CPU(202)는 캐시 및 플래시 메모리(206)를 초기화한다(블록 504). 호스트 CPU(202)는 외장 DRAM을 초기화한다(블록 506). 도시된 예에서, 외장 DRAM은 시스템 메모리(210)이다. 일부 예들에서, 호스트 CPU(202)는 호스트 부트 RAM(208)에 저장된 S1 파라미터(스테이지-1 부트 로더 파라미터)를 이용하여 외장 DRAM을 초기화한다.
호스트 CPU(202)는 도 2의 프로세서간 통신 경로(214)를 거쳐 보안 CPU(204)로 ADD 영역 IPC 인스트럭션을 전송한다(블록 508). 도시된 예에서, 호스트 CPU(202)가 ADD 영역 IPC 인스트럭션을 발행함으로써, 스테이지 2 부트 프로세스 동안에 저장/생성된 플랫폼 소프트웨어의 영역은, 여기서 개시된 서명/인증 기술들을 이용하여 보호될 수 있도록, 보호 영역(218)(도 2)으로서 지정될 수 있다.
호스트 CPU(202)는 자신이 완전한 파워-오프 상태(a full power-off state)로부터 콜드 부트를 수행하고 있는지를 판정한다(블록 510). 콜드 부트를 수행하고 있으면, 호스트 CPU(202)는 콜드 부트를 로그하고(블록 512), 스테이지-2 인증 시퀀스를 호출한다(블록 514). 그렇지 않고, 호스트 CPU(202)가 콜드 부트를 수행하고 있지 않다고 판정하면(블록 510), STR 전력 상태(104)(도 1)로부터 재개하여 호스트 CPU(202)는 검증 DRAM 프로세스를 호출한다(블록 516). 블록 516에서 호출될 수 있는 DRAM을 검증하기 위한 예시적인 프로세스는 도 7a 및 7b와 관련해서 이하에서 설명된다.
블록 514에서 스테이지-2 인증 시퀀스를 호출한 후에, 또는 블록 516에서 검증 DRAM 프로세스를 호출한 후에, 호스트 CPU(202)는 스테이지-2 공통 엔트리 포인트로 점프한다(블록 518). 도시된 예에서, 스테이지-2 커먼 엔트리 포인트는 호스트 CPU(202)로 하여금 스테이지-2 부트 프로세스를 실행할 수 있게 한다.
스테이지-2 부트 프로세스 동안에, 호스트 CPU(202)는 다른 초기화 동작들을 수행한다(블록 520). 이러한 다른 초기화 동작들은 마이크로프로세서 서브시스템(106) 및/또는 메모리 서브시스템(110)의 다른 부분들의 다른 초기화, 통신 서브시스템(108)의 부분들에 대한 초기화, 도 1의 사용자 인터페이스 서브시스템(112)의 다른 부분들에 대한 초기화, 및/또는 스테이지-2 부트 프로세스 동안에 발생해야 한다고 시스템 설계자에 의해 구성되는 임의의 다른 초기화의 수행을 포함할 수 있다.
호스트 CPU(202)는 재개 스위치 프로세스(a resume switch process)를 호출한다(블록 522). 블록 522에서 호출될 수 있는 예시적인 재개 스위치 프로세스는 도 8과 관련해서 이하에서 설명된다. 도시된 예들에서, 재개 스위치 프로세스는 ACPI 테이블을 보호 영역(218)으로서 추가할 수 있게 한다. 그 후에, 호스트 CPU(202)는 나머지 부트 동작들을 완료한다(블록 524). 도시된 예에서, 수행되는 나머지 부트 동작들은 호스트 CPU(202)가 콜드 부트 또는 재개를 수행하고 있는지를 기초로 한다. 그 후에, 도 5의 예시적인 프로세스가 종료된다.
도 6은 프로세서 시스템(100)(도 1 및 2)을 액티브 전력 상태(102)(도 1)로부터 STR 전력 상태(104)(도 1)로 천이하기 위해 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다. 도시된 예에서, 도 6의 예시적인 프로세스는 사용자 입력(예를 들어, 슬립 버튼(a sleep button)의 사용자 입력/선택), 타임아웃 인터럽트, 혹은 프로세서 시스템(100)을 저전력 모드로 천이하기 위한 임의의 다른 적절한 사용자 및/또는 머신 입력에 의해 작동될 수 있다.
먼저, 호스트 CPU(202)는, 예를 들어 프로세서 시스템(100)이 액티브 전력 상태(102)로 돌아올 때까지 임의의 추가적인 실행으로부터, 애플리케이션 및 미들웨어를 프리즈(freeze)시킨다(블록 602). 호스트 CPU(202)는 드라이버를 중지시킨다(블록 604). 호스트 CPU(202)는 STR 데이터 구조(216)에 보호 영역(218)을 추가한다(블록 606). 도시된 예에서, 호스트 CPU(202)는 도 3의 분산/수집 테이블(310)의 포맷에 따라 STR 데이터 구조(216)의 분산/수집 테이블에 위치 및 사이즈 정보를 추가함으로써 STR 데이터 구조(216)에 플랫폼 소프트웨어의 보호 영역(218)을 추가한다. 이렇게 하여, STR 데이터 구조(216)는 보호 영역(218)을 시스템 메모리(210)에 위치시키는 데 사용될 수 있다. 호스트 CPU(202)는 IPC 인스트럭션을 보안 CPU(204)로 전송하여 DRAM을 서명/인증한다(블록 608). 도시된 예의 서명 DRAM IPC 인스트럭션은 보안 CPU(204)가 시스템 메모리(210)에 저장된 STR 데이터 구조(216)에 서명하게 한다.
그 후에, 보안 CPU(204)는 STR 데이터 구조(216)에 서명하기 위한 동작들을 수행한다. 먼저, 보안 CPU(204)는 임시값을 생성한다(블록 610). 도시된 예에서, 생성된 임시값은 도 2의 랜덤 또는 의사-랜덤 값(222)이고, 이는 STR 데이터 구조(216)를 서명/인증하기 위한 시그너쳐들을 생성하는 데 사용된다. 도시된 예의 시그너쳐들은 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에 저장되는 시그너쳐들을 포함한다. 도시된 예에서, 랜덤/의사-랜덤 값(222)은 임의의 잠재적 공격자가 DRAM의 콘텐츠를 재생하기 어렵게 만들어 주는 임시값을 위해 사용된다.
보안 CPU(204)는 임시값(예를 들어, 랜덤/의사-랜덤 값(222)) 및 STR 데이터 구조 포인터(220)(도 2)를 연속 전력 공급 메모리(212)에 저장한다(블록 612). 이렇게 하여, 연속 전력 공급 메모리(212)가 STR 전력 상태(104) 동안에 전력 공급이 유지되지 때문에, 임시값(예를 들어, 랜덤/의사-랜덤 값(222)) 및 STR 데이터 구조 포인터(220)는 STR 전력 상태(104) 동안에 지속되며, 액티브 전력 상태(102)로 재개하기 위해 액세스될 수 있다.
보안 CPU(204)는 도 2의 STR 데이터 구조(216)에 서명한다(블록 614). 도시된 예에서, 보안 CPU(204)는 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에 대응하는 시그너쳐들을 생성함으로써 STR 데이터 구조(216)에 서명한다. 블록 614를 구현하는 데 사용될 수 있는 예시적인 서명 프로세스는 도 9과 관련해서 이하에서 설명된다.
보안 CPU(204)는 STR 데이터 구조(216) 및 시그너쳐(예를 들어, STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에서의 시그너쳐들)를 저장한다(블록 616). 호스트 CPU(202)는 프로세서 시스템(100)을 STR 전력 상태(104)로 천이한다(블록 618). 그 후에, 도 6의 예시적인 프로세스는 종료된다.
도 7a 및 7b는 소프트웨어 플랫폼 동작 상태에 대한 데이터를 저장하는 시스템 메모리(210)(도 2)에서의 보호 영역(218)(도 2)의 유효성을 검증하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 나타낸다. 도 7a 및 7b의 예시적인 프로세스는 도 5의 블록 516으로부터 예를 들어 설명될 수 있다. 도 7a에 도시된 바와 같이, 먼저, 호스트 CPU(202)는 검증 IPC 커맨드를 보안 CPU(204)로 전송한다(블록 702). 검증 IPC 커맨드는 보안 CPU(204)가 보호 영역(218)의 유효성을 검증하기 위한 검증 프로세스를 수행하도록 하게 한다. 보안 CPU(204)는 연속 전력 공급 메모리(212)로부터 임시값(예를 들어, 랜덤/의사-랜덤 값(222))을 판독한다(블록 704). 도시된 예에서, 임시값은 프로세서 시스템(100)을 STR 전력 상태(104)로 천이할 때에 도 6의 블록 610에서 생성된 랜덤/의사-랜덤 값(222)(도 2)이다.
보안 CPU(204)는 연속 전력 공급 메모리(212)에서, 예컨대, 임의의 랜덤 데이터로 임시값(예를 들어, 랜덤/의사-랜덤 값(222))을 오버라이팅한다. 도시된 예에서, 이러한 방식으로 임시값을 오버라이팅하는 것은, 잠재적인 공격자에 의한 재사용을 위해 노출된 임시값을 남겨두지 않음으로써 리플레이 공격을 방어한다. 보안 CPU(204)는 연속 전력 공급 메모리(212)로부터 STR 데이터 구조 포인터(220)를 판독한다(블록 708). 보안 CPU(204)는 STR 데이터 구조 포인터(220)를 이용하여 시스템 메모리(210)로부터 STR 데이터 구조(216)의 로케이팅(locate) 및 판독을 행한다(블록 710). 보안 CPU(204)는 STR 데이터 구조(216)의 유효성을 검증한다(블록 712). 블록 712에서 STR 데이터 구조(216)의 유효성을 검증하는 데 사용될 수 있는 예시적인 프로세스는 도 10과 관련해서 이하에서 설명된다.
보안 CPU(204)는 시그너쳐들이 검증되었는지를 판정한다(블록 714)(도 7b). 도시된 예에서, 유효성을 위해 검사되는 시그너쳐들은 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)에서의 시그너쳐들이다. 블록 714에서 보안 CPU(204)가 시그너쳐들 중 하나 이상이 유효하다고 검증되지 않으면, 보안 CPU(204)는 에러를 생성한다(블록 716). 블록 716에서 에러를 생성한 후에, 또는 보안 CPU(204)가 블록 714에서 모든 시그너쳐들이 유효한 것으로 검증된다고 판정하면, 보안 CPU(204)는 도 2의 CA 요구 영역 테이블(226)을 판독한다(블록 718). 또한, 보안 CPU(204)는 도 2의 제조자 요구 영역 테이블(224)을 판독한다(블록 720). 도시된 예에서, 보안 CPU(204)는 호스트 CPU(202)에 의해 제공된 어드레스에서 호스트 부트 RAM(208)으로부터 CA 요구 영역 테이블(226) 및 제조자 요구 영역 테이블(224)을 검색할 수 있다. 예컨대, CA 요구 영역 테이블(226) 및 제조자 요구 영역 테이블(224)이 로케이팅되는 어드레스는 S1 파라미터에 포인터로서 저장될 수 있고, 또한 S1 파라미터로부터 호스트 CPU(202)에 의해 검색될 수 있다.
보안 CPU(204)는 CA 요구 영역 테이블(226)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버되는지를 판정한다(블록 722). 예컨대, 보안 CPU(204)는 CA 요구 영역 테이블(226)에서 특정된 영역을 STR 데이터 구조(216)의 분산/수집 테이블(310)(도 3)에서 특정된 보호 영역(218)과 비교한다. CA 요구 영역 테이블(226)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버되지 않으면(블록 722), 보안 CPU(204)는 에러를 생성한다(블록 724). 블록 724에서 에러를 생성한 후에, 또는 블록 722에서 보안 CPU(204)가 CA 요구 영역 테이블(226)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버된다고 판정하면, 보안 CPU(204)는 제조자 요구 영역 테이블(224)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버되는지를 판정한다(블록 726). 예컨대, 보안 CPU(204)는 제조자 요구 영역 테이블(224)에서 특정된 영역을 STR 데이터 구조(216)의 분산/수집 테이블(310)(도 3)에서 특정된 보호 영역(218)과 비교한다. 제조자 요구 영역 테이블(224)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버되지 않으면(블록 726), 보안 CPU(204)는 에러를 생성한다(블록 728). 블록 728에서 에러를 생성한 후에, 또는 블록 726에서 제조자 요구 영역 테이블(224)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버된다고 보안 CPU(204)가 판정하면, 보안 CPU(204)는, 예를 들어 임의의 검증 에러가 생성되었는지, 블록 714에서 시그너쳐들이 유효한 것으로 성공적으로 검증되었는지, 및/또는 CA 요구 영역 테이블(226) 및 제조자 요구 영역 테이블(224)에서 특정된 영역이 STR 데이터 구조(216)에 의해 커버되는지를 표시하는 상태를 호스트 CPU(202)로 리턴한다(블록 730).
호스트 CPU(202)는 DRAM(예를 들어, 시스템 메모리(210))이 유효한 것으로 검증되는지를, 예컨대, 보안 CPU(204)로부터 수신된 상태(예를 들어, 에러 상태 또는 검증 성공 상태)에 기초하여 판정한다. DRAM이 검증되지 않으면, 호스트 CPU(202)는 하드웨어 리셋을 수행한다(블록 734). 도시된 예에서, DRAM이 검증되지 않으면, 프로세서 시스템(100) 상에서 공격이 이루어질 수 있다. 이와 같이, 프로세서 시스템(100)을 재초기화하여 콜드 부트로부터 다시 부트하기 위해 블록 734에서 하드웨어 리셋이 사용되어서, 시스템 메모리(210)의 콘텐츠는 폐기되고 또한 재로드 및/또는 재초기화된다. 하드웨어 리셋(734)을 수행한 후에, 또는 블록 732에서 DRAM이 유효한 것으로 검증되면, 도 7a 및 7b의 예시적인 프로세스는 종료되고 및/또는 도 5의 예시적인 프로세스와 같은 프로세스 또는 호출 함수로 리턴한다.
도 8은 콜드 부트 프로세스 또는 STR 재개 프로세스 하에서 프로세서 시스템(100)(도 1 및 2)을 부트하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다. 도 8의 예시적인 프로세스는 도 5의 블록 522의 호출 재개 스위치 동작에 의해 예시될 수 있다. 먼저, 호스트 CPU(202)는 온-칩 레지스터로부터 콜드 부트 재개 플래그를 판독한다(블록 802). 예컨대, 콜드 부트 재개 플래그는, 부트 프로세스가 콜드 부트 프로세스인지 또는 STR 전력 상태(104)와 같은 저전력 모드로부터 도 1의 액티브 전력 상태(102)로 프로세서 시스템(100)을 천이하기 위한 재개 프로세스인지를 표시하기 위해 호스트 CPU(202) 내의 온-칩 레지스터에서 설정될 수 있다.
호스트 CPU(202)는 블록 802에서 판독된 콜드 부트 재개 플래그에 기초하여 부트 프로세스가 콜드 부트 또는 재개인지를 판정한다(블록 804). 부트 프로세스가 콜드 부트이면(블록 804), 호스트 CPU(202)는 ACPI 테이블을 생성하고(블록 806), CEFDK(Consumer Electronics Firmware Development Kit) 스테이지-2 프로세스의 일부로서 ACPI 테이블을 보호 영역(218)에 추가한다(블록 808). 도시된 예에서, ACPI 테이블이 보호 영역(218)에 추가되어서, ACPI 테이블은 STR 데이터 구조(216)의 서명/인증에 의해 보호된다. 운영 시스템 프로세스의 일부로서 호스트 CPU(202)는 웨이크 벡터를 ACPI 테이블에서 설정한다(블록 810). 그 후에, 제어는 (예를 들어, 도 5에서의) 콜드 부트 경로로 리턴하고, 도 8의 예시적인 프로세스는 종료된다.
호스트 CPU(202)가 블록 804에서 부트 프로세스가 재개라고 판정하면, 호스트 CPU(202)는 이전에 생성 및 저장된 ACPI 테이블을 판독하고(블록 812), 재개 프로세스를 진행하기 위한 CEFDK 스테이지-2 프로세스의 일부로서 ACPI 테이블에서의 웨이크 벡터를 운영 시스템에서의 엔트리 포인트로서 사용한다(블록 814). 도시된 예에서, 블록 812 및 814에서 액세스된 ACPI 테이블은 콜드 부트 동안에(예를 들어, 블록 806 및 808에서) 보호 영역(218)에 생성 및 저장된 ACPI 테이블일 수 있고, 블록 814에서 사용된 웨이크 벡터는 콜드 부트 프로세스 동안에(예를 들어, 블록 810에서) 설정된 웨이크 벡터일 수 있다. 그 후에, 제어는 재개 엔트리 포인트로 점프하고, 도 8의 예시적인 프로세스는 종료된다.
도 9는 도 2의 STR 데이터 구조(216)를 인증/서명하는 데 사용할 수 있는 시그너쳐들을 생성하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다. 도 9의 예시적인 프로세스는 도 6의 블록 614의 동작을 구현하는 데 사용될 수 있다. 도 9의 예시적인 프로세스는 도 2의 STR 데이터 구조(216)에 서명하기 위한 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)의 시그너쳐들을 생성하는 데 사용되는 키들을 생성한다. 도 9의 프로세스에서 생성된 키들은 안전하게 처리되는 온-다이 비밀키들(on-die secret keys)이어서, 그 키들은 호스트 소프트웨어에 의해 액세스될 수 없다. 도시된 예에서, 키들의 보안성을 확실히 하기 위해, 오직 보안 CPU(204)만이 키들을 생성할 수 있다. 또한, 도시된 예의 보안 CPU(204)는, 예컨대, 키가 재형성되어야 할 때에 동일한 값을 온-다이 키 생성기에 공급함으로써, 보안 CPU(204)가 키들을 나중에 동일하게 재형성 또는 재생성할 수 있게 하는 프로세스를 이용하여 키들을 생성하도록 구성된다. 도시된 예의 키들은 동일하게 재형성 가능하여서, 보안 CPU(204)는 STR 전력 상태(104)로의 천이시에 생성된 키들에 기초하여 STR 데이터 구조(216)에 서명할 수 있고, 또한 STR 전력 상태(104)로부터의 재재시에, 보안 CPU(204)는 STR 전력 상태(104)로 진입한 때에 발생한 STR 데이터 구조(216)의 인증/서명의 확인에 사용하기 위한 동일한 키들을 생성할 수 있다.
도 9에 도시된 바와 같이, 먼저, 보안 CPU(204)는 STR 루트 생성 키를 생성한다(블록 902). 도시된 예에서, 보안 CPU(204)는 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 필드(304), 및 STR DRAM 시그너쳐 필드(306)의 시그너쳐들을 생성하는 후속 키들을 생성하는 데 STR 루트 생성 키를 사용한다. 보안 CPU(204)는 STR 루트 생성 키를 이용하여 STR 헤더 키를 생성한다(블록 904). 보안 CPU(204)는 예를 들어 STR 헤더 시그너쳐 필드(302)에 대응하는 STR 헤더 시그너쳐를 생성한다(블록 906). 도시된 예에서, 보안 CPU(204)는 시그너쳐 함수(예를 들어, CMAC 함수, HMAC 함수, 등)를 블록 904에서 생성된 STR 헤더 키에 적용함으로써 STR 헤더 시그너쳐를 생성하고, (예를 들어, 도 3의 STR 헤더(308)에 저장된) STR 헤더와 임시값(예를 들어, 도 2의 랜덤/의사-랜덤 값(222))의 연결성(concatenation)을 생성한다. 예컨대, 블록 906에서 사용된 시그너쳐 생성 함수는 SIGNATURE(STR HEADER KEY, CONCATENATE(STR HEADER, NONCE))일 수 있다.
보안 CPU(204)는 STR 루트 생성 키를 이용하여 STR 분산/수집 테이블 키를 생성한다(블록 908). 보안 CPU(204)는, 예를 들어, 도 3의 STR 분산/수집 테이블(310)에 대응하는 STR 분산/수집 테이블 시그너쳐를 생성한다(블록 910). 도시된 예에서, 보안 CPU(204)는 시그너쳐 함수(예를 들어, CMAC 함수, HMAC 함수, 등)를 블록 908에서 생성된 STR 분산/수집 테이블 키에 적용함으로써 STR 분산/수집 테이블 시그너쳐를 생성하고, STR 분산/수집 테이블(310)에 저장된 정보(예를 들어, 도 3의 STR 분산/수집 테이블(310)의 필드(312, 320, 322, 324, 326, 328)에 저장된 포인터 및 사이즈 정보)와 임시값(예를 들어, 도 2의 랜덤/의사-랜덤 값(222))의 연결성을 생성한다. 예컨대, 블록 906에서 사용된 시그너쳐 생성 함수는 SIGNATURE(STR SCATTER/GATHER TABLE KEY, CONCATENATE(SCATTER/GATHER TABLE, NONCE))일 수 있다.
보안 CPU(204)는 STR 루트 생성 키를 이용하여 STR DRAM 키를 생성한다(블록 912). 보안 CPU(204)는, 예를 들어, 분산/수집 테이블(310)의 포인터-0 필드(312)에 저장된 포인터에 의해 가리켜지는 보호 영역(218)의 최초 16-바이트 정렬 버퍼에 대응하는 STR DRAM 시그너쳐를 생성한다(블록 914). 도시된 예에서, 보안 CPU(204)는 블록 912에서 생성된 STR DRAM 키에 시그너쳐 함수(예를 들어, CMAC 함수, HMAC 함수, 등)을 적용함으로써 STR DRAM 시그너쳐를 생성하고, 포인터-0 필드(312)에서의 포인터에 의해 가리켜지는 보호 영역(218)의 16-바이트 정렬 버퍼와 임시값(예를 들어, 도 2의 랜덤/의사-랜덤 값(222))의 연결성을 생성한다. 예컨대, 블록 914에서 사용된 시그너쳐 생성 함수는 SIGNATURE(STR DRAM KEY, CONCATENATE(STR DRAM AREA, NONCE))일 수 있다.
보안 CPU(204)는 블록 902, 904, 908, 912에서 생성된 키들을 파괴한다(블록 916). 키들을 파괴하는 것은, 바람직하지 못한 방식으로 액세스되고 있는 키들에 대한 추가적인 보호를 제공한다. 도 9의 예시적인 프로세스는 STR 헤더 시그너쳐, STR SG 테이블 시그너쳐, 및 STR DRAM 키를 도 6의 예시적인 프로세스와 같은 호출 함수 또는 프로세스로 리턴한다(블록 918). 그 후에, 도 9의 예시적인 프로세스는 종료된다.
도 9의 예시적인 프로세스가 3개의 시그너쳐들(즉, 블록 906, 910, 914에서 생성된 시그너쳐들)을 생성한다고 설명되었지만, 다른 예들에서는, 보다 적은 시그너쳐들(예를 들어, 1개의 시그너쳐 또는 2개의 시그너쳐들) 또는 보다 많은 시그너쳐들(예를 들어, 3개 이상의 시그너쳐들)이 STR 데이터 구조(216)의 인증/서명에 사용하기 위해 생성될 수 있다.
도 10은 STR 데이터 구조(216)(도 2)의 유효성을 검증하도록 실행될 수 있는 컴퓨터 판독가능 인스트럭션을 나타내는 예시적인 흐름도를 도시한다. 도 1의 STR 전력 상태(104)로부터의 재개 프로세스 동안에 DRAM을 검증할 때에 도 7a의 712의 동작을 구현하는 데 도 10의 예시적인 프로세스가 사용될 수 있다. STR 데이터 구조(218)의 유효성을 확인하기 위해, 도 9와 관련해서 상기한 바와 동일한 방식으로 키들 및 시그너쳐들을 생성하는 데 예시적인 프로세스가 사용된다. 상기한 바와 같이, 시그너쳐들을 생성하는 데 사용되는 키들은, 예를 들어 도 9의 프로세스에서 사용된 것과 동일한 시드값을 키 생성기에 공급함으로써 나중에 보안 CUP(204)에 의해 동일하게 재형성가능하다. 그 후에, 키들은 STR 데이터 구조(216)에(예를 들어, 도 3의 STR 헤더 시그너쳐 필드(302), STR 분산/수집 테이블 시그너쳐 테이블(304), 및 STR DRAM 시그너쳐 필드(306)에) 저장된 시그너쳐들과 비교하기 위해 STR 데이터 구조(216)에 기초하여 시그너쳐들을 생성하는 데 사용된다. 도 10의 예시적인 프로세스에서 생성된 키들이 도 9의 예시적인 프로세스에서 생성된 키들과 동일하기 때문에, STR 데이터 구조(216)의 콘텐츠가 교체되지 않았으면(예를 들어, 잠재적 공격자에 의해 손상되지 않았으면), STR 전력 상태(104)로부터의 재개시에 도 10의 검증 프로세스에서 생성된 시그너쳐들은 STR 전력 상태(104)로의 진입시에 도 9의 인증 프로세스에서 생성된 시그너쳐들과 일치해야 한다.
도 10에 도시된 바와 같이, 먼저, 보안 CPU(204)는 STR 루트 생성 키를 생성한다(블록 1002). 예컨대, 보안 CPU(204)는 도 9의 블록 902에서 STR 루트 생성키가 생성된 것과 동일한 방식으로 STR 루트 생성 키를 생성할 수 있다. 보안 CPU(204)는, 예를 들어 도 9의 블록 904에서 STR 헤더 키가 생성된 것과 동일한 방식으로, STR 헤더 키를 생성한다(블록 1004). 보안 CPU(204)는, 예를 들어 도 9의 블록 906에서 (예를 들어, STR 헤더 시그너쳐 필드(302)의) STR 헤더 시그너쳐가 생성된 것과 동일한 방식으로 STR 헤더 시그너쳐를 생성한다(블록 1006).
보안 CPU(204)는 STR 데이터 구조(216)의 STR 헤더를 검증한다(블록 1008). 예컨대, 보안 CPU(204)는 블록 1006에서 생성된 STR 헤더 시그너쳐를 STR 데이터 구조(216)에(예를 들어, 도 3의 STR 헤더 시그너쳐 필드(302)에) 저장된 STR 헤더 시그너쳐와 비교하여, STR 데이터 구조(216)의 STR 헤더(예를 들어, 도 3의 STR 헤더 필드(308)에서의 STR 헤더)가 유효한지를 판정한다. 프로세서 시스템(100)이 STR 전력 상태(104)에 진입한 이후로 STR 헤더가 변경되지 않았으면, 시그너쳐들은 STR 헤더가 유효한 것으로 확인되도록 일치할 것이다.
보안 CPU(204)는, 예를 들어 도 9의 블록 908에서 STR 분산/수집 테이블 키가 생성된 것과 동일한 방식으로 STR 분산/수집 테이블 키를 생성한다(블록 1010). 보안 CPU(204)는, 예를 들어 도 9의 블록 910에서 STR 분산/수집 테이블 시그너쳐가 생성된 것과 동일한 방식으로 STR 분산/수집 테이블 시그너쳐를 생성한다(블록 1012). 보안 CPU(204)는 STR 데이터 구조(216)의 STR 분산/수집 테이블을 검증한다(블록 1014). 예컨대, 보안 CPU(204)는 블록 1006에서 생성된 STR 분산/수집 시그너쳐를 STR 데이터 구조(216)에(예를 들어, 도 3의 STR 분산/수집 시그너쳐 필드(304)에) 저장된 STR 분산/수집 시그너쳐와 비교하여, STR 데이터 구조(216)의 STR 분산/수집 테이블(예를 들어, 도 3의 STR 분산/수집 테이블(310)에서의 STR 분산/수집 테이블 위치 및 사이즈 정보)이 유효한지를 판정한다. STR 분산/수집 테이블 정보가 프로세서 시스템(100)이 STR 전력 상태(104)에 진입한 이후로 변경되지 않았으면, 시그너쳐들은 STR 분산/수집 테이블 정보가 유효한 것으로 확인되도록 일치할 것이다.
보안 CPU(204)는, 예를 들어 도 9의 블록 912에서 STR DRAM 키가 생성된 것과 동일한 방식으로 STR DRAM 키를 생성한다(블록 1016). 보안 CPU(204)는, 예를 들어 도 9의 블록 914에서 STR DRAM 시그너쳐가 생성된 것과 동일한 방식으로 STR DRAM 시그너쳐를 생성한다(블록 1018). 보안 CPU(204)는 STR 데이터 구조(216)에 의해 가리켜지는 STR DRAM 영역을 검증한다(블록 1020). 예컨대, 보안 CPU(204)는 블록 1018에서 생성된 STR DRAM 시그너쳐를 STR 데이터 구조(216)에(예를 들어, 도 3의 STR DRAM 시그너쳐 필드(306)에) 저장된 STR DRAM 시그너쳐와 비교하여, 도 3의 포인터-0(312)에 의해 가리켜지는 보호 영역(218)의 16-바이트 정렬 버퍼가 유효한지를 판정한다. 프로세서 시스템(100)이 STR 전력 상태(104)에 진입한 이후로 16-바이트 정렬 버퍼의 정보가 변경되지 않았으면, 시그너쳐들은 포인터-0 필드(312)의 포인터에 의해 가리켜지는 보호 영역의 16-바이트 정렬 버퍼가 유효한 것으로 확인되도록 일치할 것이다.
보안 CPU(204)는 블록 1002, 1004, 1010, 1016에서 생성된 키들을 파괴한다(블록 1022). 키들을 파괴함으로써, 바람직하지 못한 방식으로 액세스되고 있는 키들에 대한 추가적인 보호를 제공한다. 도 10의 예시적인 프로세스는 호출 함수 또는 프로세스, 예를 들어 도 7a 및 7b의 예시적인 프로세스로 검증 상태를 리턴하고, 도 10의 예시적인 프로세스가 종료된다.
도 10의 예시적인 프로세스가 3개의 시그너쳐들(즉, 블록 1006, 1012, 1018에서 생성된 시그너쳐들)을 생성하는 것으로 설명되고 있지만, 다른 예들에서는, 보다 적은 시그너쳐들(예를 들어, 1개의 시그너쳐 또는 2개의 시그너쳐들) 또흔 보다 많은 시그너쳐들(예를 들어, 3개 이상의 시그너쳐들)이 STR 데이터 구조(216)의 유효성 검증에 사용하기 위해 생성될 수 있다. 어쨌든, 도 9의 예시적인 프로세스에서 생성된 것과 같이 동일한 개수의 시그너쳐(들)이 도 10의 예시적인 프로세스에서 생성되어야 한다.
개시된 예시적 방법들은 프로세서 시스템에서 전력 상태를 관리한다. 일부 개시된 예시적 방법들은, 프로세서 시스템을 저전력 모드로 천이하는 경우, 저전력 모드 동안에 보호되는 메모리 영역의 메모리 어드레스들을 저장하는 데이터 구조에 기초하여 적어도 제 1 시그너쳐를 생성하는 단계를 포함한다. 또한, 일부 개시된 예시적인 방법들은, 저전력 모드로부터 프로세서 시스템의 재개 프로세스 동안에, 저전력 모드 동안에 보호되는 메모리 영역의 메모리 어드레스들을 저장하는 데이터 구조에 기초하여 적어도 제 2 시그너쳐를 생성하는 단계를 포함한다. 또한, 일부 개시된 예시적 방법들은 제 1 시그너쳐가 제 2 시그너쳐와 일치하면 저전력 모드로부터 프로세서 시스템을 재개하는 단계, 및/또는 제 1 시그너쳐가 제 2 시그너쳐와 일치하지 않으면 에러를 생성하는 단계를 포함한다. 일부 예들에서, 저전력 모드는, STR 전력 상태 동안의 전력 공급을 유지하는 랜덤 액세스 메모리에 플랫폼 소프트웨어의 동작 상태들이 저장되는 STR 전력 상태이다.
또한, 일부 개시된 예들은 적어도 하나의 키 및 랜덤 또는 의사-랜덤 값을 생성하는 단계, 및 제 1 시그너쳐를 생성하기 위해 데이터 구조의 정보와 결합하여 적어도 하나의 키 및 랜덤 또는 의사-랜덤 값을 이용하는 단계를 포함한다. 일부 예들에서, 데이터 구조의 정보는 데이터 구조 헤더 또는 보호되는 메모리 영역의 메모리 어드레스들 및 데이터 사이즈들 중 적어도 하나를 포함한다. 또한, 일부 개시된 예들은 적어도 하나의 키를 재생성하는 단계, 재개 프로세스 동안에 연속 전력 공급 메모리로부터 랜덤 또는 의사-랜덤 값을 검색하는 단계, 및 제 2 시그너쳐를 생성하기 위해 재생성된 키 및 검색된 랜덤 또는 의사-랜덤 값을 이용하는 단계를 포함한다.
또한, 일부 개시된 예들은 보호되는 메모리 영역의 적어도 일부를 프로세서 시스템의 하드웨어 제조자 또는 프로세서 시스템의 구성요소가 특정하는 제조자 요구 영역 테이블에 기초하여, 보호되는 메모리 영역들 중 적어도 하나 또는 일부를 결정하는 단계를 포함한다. 또한, 일부 개시된 예들은 보호되는 메모리 영역들 중 다른 메모리 영역을 제3자가 특정하는 제3자 요구 영역 테이블에 기초하여, 보호되는 메모리 영역들 중 다른 메모리 영역을 결정하는 단계를 포함한다.
또한, 일부 개시된 예들은 저전력 모드 동안에 연속 전력 공급 메모리에 데이터 구조로의 포인터를 저장하는 단계를 포함한다. 또한, 일부 개시된 예들은 재개 프로세스 동안에 연속 전력 공급 메모리로부터 포인터를 검색하는 단계, 및 포인터에 기초하여 재개 프로세스 동안에 데이터 구조를 로케이팅하는 단계를 포함한다.
또한, 실행시에, 여기서 개시된 적어도 일부 예시적 방법들을 머신이 수행할 수 있게 하는 개시된 예시적 인스트럭션을 포함하는 예시적인 유형의 컴퓨터 판독가능 저장 매체가 개시된다.
개시된 예시적 장치는 프로세서 시스템을 중지시킨다. 일부 개시된 예시적 장치는 제 1 메모리, 및 제 1 메모리와 통신하는 프로세서를 포함한다. 일부 예들에서, 제 1 메모리는 프로세서 시스템이 저전력 모드에 있을 때의 전력 공급을 유지하고, 제 1 제모리는 랜덤 또는 의사-랜덤 값 및 데이터 구조로의 포인터를 저장한다. 일부 예들에서, 데이터 구조는 저전력 모드 동안에 프로세서 시스템의 동작 상태를 저장하도록 메모리 영역을 특정하는 데이터 구조에 저장된 정보를 인증하기 위해 적어도 제 1 시그너쳐를 저장한다. 일부 예들에서, 프로세서는, 프로세서 시스템이 저전력 모드로 천이하고 있는 경우에 데이터 구조 및 랜덤 또는 의사-랜덤 값에 기초하여 제 1 시그너쳐를 생성한다. 일부 예들에서, 프로세서 시스템이 저전력 모드로부터 재개하는 재개 프로세스에 있으면, 프로세서는 데이터 구조 및 의사-랜덤 값에 기초하여 적어도 제 2 시그너쳐를 생성하고, 적어도 제 1 시그너쳐 및 제 2 시그너쳐의 비교에 기초하여 데이터 구조가 유효한지를 판정한다. 일부 예들에서, 저전력 모드는, STR 전력 상태 동안의 전력 공급을 유지하는 랜덤 액세스 메모리에 동작 상태가 저장되는 STR 전력 상태이다. 일부 예들에서, 제 1 메모리는 내장형 정적 랜덤 액세스 메모리이고, 예시적인 장치는 데이터 구조를 저장하기 위해 동적 랜덤 액세스 메모리를 더 포함한다.
일부 예들에서, 프로세서는 메모리 영역들의 적어도 일부를 프로세서 시스템의 하드웨어 제조자 또는 프로세서 시스템의 구성요소가 특정하는 제조자 요구 영역 테이블에 기초하여 메모리 영역들의 적어도 일부를 추가로 결정한다. 일부 예들에서, 프로세서는 메모리 영역들 중 두 번째 메모리 영역을 제3자가 특정하는 제3자 요구 영역 테이블에 기초하여 메모리 영역들 중 두 번째 메모리 영역을 추가로 결정한다. 일부 예들에서, 프로세서는 데이터 구조 헤더 또는 보호 메모리 영역들의 메모리 어드레스들 및 데이터 사이즈들 중 적어도 하나에 기초하여 제 1 및 제 2 시그너쳐를 생성한다.
일부 예들에서, 프로세서는 호스트 프로세서와 통신하는 보안 프로세서이다. 이러한 일부 예들에서, 적어도 제 1 시그너쳐와 제 2 시그너쳐와의 비교에 기초하여 데이터 구조가 유효하지 않으면, 보안 프로세서는 호스트 프로세서와 에러 상태를 통신하고, 호스트 프로세서는 에러 상태에 기초하여 하드웨어 리셋을 수행한다.
소정의 예시적 방법들, 장치 및 제조품이 여기서 설명되었지만, 본 발명의 포함 범위는 이로 제한되지 않는다. 반면에, 본 발명은 본 발명의 청구범위 내에 확실히 들어가는 모든 방법들, 장치 및 제조품을 포함한다.

Claims (20)

  1. 프로세서 시스템에서 전력 상태를 관리하는 방법으로서,
    프로세서 시스템을 저전력 모드로 천이하는 경우, 상기 저전력 모드 동안에 보호되는 메모리 영역의 메모리 어드레스를 저장하는 데이터 구조에 기초하여 적어도 제 1 시그너쳐를 생성하는 단계와,
    상기 저전력 모드로부터 상기 프로세서 시스템의 재개 프로세스(a resume process) 동안, 상기 저전력 모드 동안에 보호되는 상기 메모리 영역의 메모리 어드레스를 저장하는 상기 데이터 구조에 기초하여 적어도 제 2 시그너쳐를 생성하는 단계와,
    상기 제 1 시그너쳐가 상기 제 2 시그너쳐와 일치하면, 상기 저전력 모드로부터 상기 프로세서 시스템을 재개하는 단계와,
    상기 제 1 시그너쳐가 상기 제 2 시그너쳐와 일치하지 않으면, 에러를 생성하는 단계를 포함하는
    전력 상태 관리 방법.
  2. 제 1 항에 있어서,
    상기 저전력 모드는 서스펜드-투-RAM(suspend-to-random access memory; STR) 전력 상태이고,
    상기 STR 전력 상태에서, 플랫폼 소프트웨어의 동작 상태는 상기 STR 전력 상태 동안의 전력 공급을 유지하는 랜덤 액세스 메모리에 저장되는
    전력 상태 관리 방법.
  3. 제 1 항에 있어서,
    적어도 하나의 키 및 랜덤 또는 의사-랜덤 값을 생성하는 단계와,
    상기 제 1 시그너쳐를 생성하기 위해 상기 데이터 구조의 정보와 결합하여 상기 적어도 하나의 키 및 상기 랜덤 또는 의사-랜덤 값을 이용하는 단계를 더 포함하는
    전력 상태 관리 방법.
  4. 제 3 항에 있어서,
    상기 데이터 구조의 정보는 보호되는 메모리 영역의 메모리 어드레스 및 데이터 사이즈 또는 데이터 구조 헤더 중 적어도 하나를 포함하는
    전력 상태 관리 방법.
  5. 제 3 항에 있어서,
    상기 적어도 하나의 키를 재생성하는 단계와,
    재개 프로세스 동안에 연속 전력 공급 메모리(a continuously powered memory)로부터 상기 랜덤 또는 의사-랜덤 값을 검색하는 단계와,
    상기 제 2 시그너쳐를 생성하기 위해 상기 재생성된 키 및 상기 검색된 랜덤 또는 의사-랜덤 값을 이용하는 단계를 더 포함하는
    전력 상태 관리 방법.
  6. 제 1 항에 있어서,
    상기 프로세서 시스템의 하드웨어 제조자 또는 상기 프로세서 시스템의 구성요소가 보호되는 상기 메모리 영역 중 적어도 일부를 특정하는 제조자 요구 영역 테이블(a manufacturer required regions table)에 기초하여, 상기 보호되는 메모리 영역 중 상기 적어도 일부를 결정하는 단계를 더 포함하는
    전력 상태 관리 방법.
  7. 제 6 항에 있어서,
    상기 보호되는 메모리 영역 중 다른 메모리 영역을 제3자가 특정하는 제3자 요구 영역 테이블(a third-party required regions table)에 기초하여, 상기 보호되는 메모리 영역 중 상기 다른 메모리 영역을 결정하는 단계를 더 포함하는
    전력 상태 관리 방법.
  8. 제 1 항에 있어서,
    상기 저전력 모드 동안에 상기 데이터 구조로의 포인터를 연속 전력 공급 메모리에 저장하는 단계를 더 포함하는
    전력 상태 관리 방법.
  9. 제 8 항에 있어서,
    재개 프로세스 동안에 상기 연속 전력 공급 메모리로부터 상기 포인터를 검색하는 단계와,
    상기 포인터에 기초하여 상기 재개 프로세스 동안에 상기 데이터 구조를 로케이팅(locating)하는 단계를 더 포함하는
    전력 상태 관리 방법.
  10. 프로세서 시스템을 중지시키는 장치로서,
    프로세서 시스템이 저전력 모드에 있을 때의 전력 공급을 유지하는 제 1 메모리와,
    상기 제 1 메모리와 통신하는 프로세서를 포함하되,
    상기 제 1 메모리는 랜덤 또는 의사-랜덤 값, 및 데이터 구조로의 포인터를 저장하고, 상기 데이터 구조는 상기 저전력 모드 동안에 상기 프로세서 시스템의 동작 상태를 저장하도록 메모리 영역을 특정하는 상기 데이터 구조에 저장된 정보를 인증하기 위해 적어도 제 1 시그너쳐를 저장하며,
    상기 프로세서는,
    상기 프로세서 시스템이 상기 저전력 모드로 천이하고 있을 때에 상기 데이터 구조 및 상기 랜덤 또는 의사-랜덤 값에 기초하여 상기 제 1 시그너쳐를 생성하고,
    상기 프로세서 시스템이 상기 저전력 모드로부터 재개하는 재개 프로세스에 있는 경우, 상기 데이터 구조 및 상기 랜덤 또는 의사-랜덤 값에 기초하여 적어도 제 2 시그너쳐를 생성하고, 적어도 상기 제 1 시그너쳐와 상기 제 2 시그너쳐와의 비교에 기초하여 상기 데이터 구조가 유효한지를 판정하는
    프로세서 시스템 중지 장치.
  11. 제 10 항에 있어서,
    상기 저전력 모드는 서스펜드-투- RAM(STR) 전력 상태이고,
    상기 STR 전력 상태에서, 상기 동작 상태는 상기 STR 전력 상태 동안의 전력 공급을 유지하는 랜덤 액세스 메모리에 저장되는
    프로세서 시스템 중지 장치.
  12. 제 10 항에 있어서,
    상기 프로세서는, 상기 메모리 영역의 적어도 일부를 상기 프로세서 시스템의 하드웨어 제조자 또는 상기 프로세서 시스템의 구성요소가 특정하는 제조자 요구 영역 테이블에 기초하여 상기 메모리 영역의 상기 적어도 일부를 더 결정하는
    프로세서 시스템 중지 장치.
  13. 제 12 항에 있어서,
    상기 프로세서는, 상기 메모리 영역 중 두 번째 메모리 영역을 제3자가 특정하는 제3자 요구 영역 테이블에 기초하여 상기 메모리 영역 중 상기 두 번째 메모리 영역을 더 결정하는
    프로세서 시스템 중지 장치.
  14. 제 10 항에 있어서,
    상기 프로세서는, 보호되는 메모리 영역의 메모리 어드레스 및 데이터 사이즈 또는 데이터 구조 헤더 중 적어도 하나에 기초하여 상기 제 1 시그너쳐 및 상기 제 2 시그너쳐를 생성하는
    프로세서 시스템 중지 장치.
  15. 제 10 항에 있어서,
    상기 프로세서는 보안 프로세서이고,
    상기 프로세서 시스템 중지 장치는 상기 보안 프로세서와 통신하는 호스트 프로세서를 더 포함하되,
    적어도 상기 제 1 시그너쳐와 상기 제 2 시그너쳐와의 비교에 기초하여 상기 데이터 구조가 유효하지 않은 경우, 상기 보안 프로세서는 상기 호스트 프로세서와 에러 상태(an error status)를 통신하고, 상기 호스트 프로세서는 상기 에러 상태에 기초하여 하드웨어 리셋을 수행하는
    프로세서 시스템 중지 장치.
  16. 제 10 항에 있어서,
    상기 제 1 메모리는 내장형 정적 랜덤 액세스 메모리이고,
    상기 프로세서 시스템 중지 장치는 상기 데이터 구조를 저장하기 위한 동적 랜덤 액세스 메모리를 더 포함하는
    프로세서 시스템 중지 장치.
  17. 유형의 컴퓨터 판독가능 저장 매체로서,
    실행시에, 머신으로 하여금 적어도,
    프로세서 시스템을 저전력 모드로 천이할 때에, 상기 저전력 모드 동안 보호되는 메모리 영역의 메모리 어드레스를 저장하는 데이터 구조에 기초하여 적어도 제 1 시그너쳐를 생성하고,
    상기 저전력 모드로부터 상기 프로세서 시스템의 재개 프로세스 동안에, 상기 저전력 모드 동안 보호되는 상기 메모리 영역의 메모리 어드레스를 저장하는 상기 데이터 구조에 기초하여 적어도 제 2 시그너쳐를 생성하고,
    상기 제 1 시그너쳐가 상기 제 2 시그너쳐와 일치하면, 상기 저전력 모드로부터 상기 프로세서 시스템을 재개하고,
    상기 제 1 시그너쳐가 상기 제 2 시그너쳐와 일치하지 않으면, 에러를 생성하도록 하게 하는 인스트럭션을 포함하는
    컴퓨터 판독가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 인스트럭션은, 또한 상기 머신으로 하여금, 보호되는 상기 메모리 영역 중 적어도 하나의 메모리 영역을 상기 프로세서 시스템의 하드웨어 제조자 또는 상기 프로세서 시스템의 구성요소가 특정하는 제조자 요구 영역 테이블에 기초하여, 보호되는 상기 메모리 영역 중 상기 적어도 하나의 메모리 영역을 결정하도록 하게 하는
    컴퓨터 판독가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 인스트럭션은, 또한 상기 머신으로 하여금, 보호되는 상기 메모리 영역 중 두 번째 메모리 영역을 제3자가 특정하는 제3자 요구 영역 테이블에 기초하여, 보호되는 상기 메모리 영역 중 상기 두 번째 메모리 영역을 결정하도록 하게 하는
    컴퓨터 판독가능 저장 매체.
  20. 제 17 항에 있어서,
    상기 인스트럭션은, 또한 상기 머신으로 하여금,
    적어도 하나의 키 및 랜덤 또는 의사-랜덤 값을 생성하고, 상기 제 1 시그너쳐를 생성하기 위해 상기 데이터 구조의 정보와 결합하여 상기 적어도 하나의 키 및 상기 랜덤 또는 의사-랜덤 값을 이용하고,
    상기 적어도 하나의 키를 재생성하고, 재개 프로세스 동안 연속 전력 공급 메모리로부터 상기 랜덤 또는 의사-랜덤 값을 검색하고, 상기 제 2 시그너쳐를 생성하기 위해 상기 재생성된 키 및 상기 검색된 랜덤 또는 의사-랜덤 값을 이용하도록 하게 하는
    컴퓨터 판독가능 저장 매체.
KR1020157003891A 2012-09-14 2012-09-14 저전력 상태시 메모리 영역 보호 방법 및 장치 KR101662616B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/055580 WO2014042650A1 (en) 2012-09-14 2012-09-14 Methods and apparatus to protect memory regions during low-power states

Publications (2)

Publication Number Publication Date
KR20150036614A true KR20150036614A (ko) 2015-04-07
KR101662616B1 KR101662616B1 (ko) 2016-10-05

Family

ID=50275922

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157003891A KR101662616B1 (ko) 2012-09-14 2012-09-14 저전력 상태시 메모리 영역 보호 방법 및 장치

Country Status (6)

Country Link
US (3) US8978135B2 (ko)
EP (1) EP2895935A4 (ko)
JP (1) JP6026666B2 (ko)
KR (1) KR101662616B1 (ko)
CN (1) CN104520872B (ko)
WO (1) WO2014042650A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8978135B2 (en) 2012-09-14 2015-03-10 Intel Corporation Methods and apparatus to protect memory regions during low-power states
JP5796725B2 (ja) 2013-03-22 2015-10-21 カシオ計算機株式会社 認証処理装置、認証処理方法及びプログラム
US9407636B2 (en) * 2014-05-19 2016-08-02 Intel Corporation Method and apparatus for securely saving and restoring the state of a computing platform
US10055370B2 (en) * 2014-07-09 2018-08-21 Advanced Micro Devices, Inc. Method and apparatis for processor standby
US10032029B2 (en) * 2014-07-14 2018-07-24 Lenovo (Singapore) Pte. Ltd. Verifying integrity of backup file in a multiple operating system environment
EP3474148B1 (en) * 2014-07-23 2019-12-04 GrammaTech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US9621549B2 (en) * 2014-07-25 2017-04-11 Qualcomm Incorporated Integrated circuit for determining whether data stored in external nonvolative memory is valid
US9959124B1 (en) 2014-09-26 2018-05-01 Apple Inc. Secure bypass of low-level configuration in reconfiguration of a computing system
US9639425B1 (en) * 2015-01-13 2017-05-02 Marvell International Ltd. Signature-based sleep recovery operation flow
DE102015202049B3 (de) * 2015-02-05 2016-08-18 Infineon Technologies Ag System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen
JP2016206951A (ja) * 2015-04-22 2016-12-08 富士通株式会社 電子装置及び電子装置の制御方法
US9760591B2 (en) 2015-05-14 2017-09-12 Walleye Software, LLC Dynamic code loading
US10297003B2 (en) 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
US10185633B2 (en) * 2015-12-15 2019-01-22 Intel Corporation Processor state integrity protection using hash verification
US10152599B2 (en) 2015-12-18 2018-12-11 Intel IP Corporation Security mechanisms for extreme deep sleep state
CN105611409B (zh) * 2016-01-04 2019-12-27 京东方科技集团股份有限公司 一种广告机控制系统及其控制方法和广告机
DE102016109892B4 (de) * 2016-05-30 2018-03-01 Infineon Technologies Ag Datenverarbeitungsvorrichtung und Verfahren zum Einsparen von Leistung in einer Datenverarbeitungsvorrichtung
EP3373178A1 (en) * 2017-03-08 2018-09-12 Secure-IC SAS Comparison of execution context data signatures with references
JP6918576B2 (ja) * 2017-05-24 2021-08-11 キヤノン株式会社 システム、情報処理装置、方法及びプログラム
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
EP3514686B1 (en) * 2017-12-20 2023-11-08 Samsung Electronics Co., Ltd. Display apparatus and method of operating the same
US11354415B2 (en) * 2019-06-29 2022-06-07 Intel Corporation Warm boot attack mitigations for non-volatile memory modules
US11340796B2 (en) * 2019-08-30 2022-05-24 Dell Products L.P. Method for managing sleep mode at a data storage device and system therefor
US11068035B2 (en) * 2019-09-12 2021-07-20 Dell Products L.P. Dynamic secure ACPI power resource enumeration objects for embedded devices
US20210097184A1 (en) * 2019-09-27 2021-04-01 Advanced Micro Devices, Inc. Secure buffer for bootloader
US11573815B2 (en) * 2020-04-29 2023-02-07 Red Hat, Inc. Dynamic power management states for virtual machine migration
US11544412B2 (en) * 2020-08-12 2023-01-03 Micron Technology, Inc. Protection against unintended content change in DRAM during standby mode
US11250891B1 (en) 2020-08-12 2022-02-15 Micron Technology, Inc. Validation of DRAM content using internal data signature
US11843939B2 (en) * 2020-12-16 2023-12-12 Itron, Inc. Secure messaging for outage events
US20230205430A1 (en) * 2021-12-28 2023-06-29 Micron Technology, Inc. Verification of a volatile memory using a unique identifier
WO2023216077A1 (zh) * 2022-05-09 2023-11-16 华为技术有限公司 一种验证方法、装置和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073358A1 (en) * 2000-12-07 2002-06-13 Atkinson Lee. W. Method for redundant suspend to RAM
US20040003273A1 (en) * 2002-06-26 2004-01-01 Grawrock David W. Sleep protection
JP2004005466A (ja) * 1991-05-17 2004-01-08 Nec Corp 保護モードマイクロプロセッサ及びハードディスクのための中断及び再開機能とアイドルモードとを実現する装置および方法
JP2004005432A (ja) * 2002-03-12 2004-01-08 Internatl Business Mach Corp <Ibm> 近接センサにより機能強化された電力管理方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3024308B2 (ja) * 1991-09-30 2000-03-21 カシオ計算機株式会社 データ処理装置
US5539879A (en) 1995-05-24 1996-07-23 Dell U.S.A., L.P. Checksum technique for verifying integrity of disk space reserved for suspend-to-disk operations
US6081752A (en) 1995-06-07 2000-06-27 International Business Machines Corporation Computer system having power supply primary sense to facilitate performance of tasks at power off
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6247151B1 (en) 1998-06-30 2001-06-12 Intel Corporation Method and apparatus for verifying that data stored in a memory has not been corrupted
US6449683B1 (en) * 1999-12-14 2002-09-10 Intel Corporation Using non-volatile memory for power management in a computer
AU2001247941B2 (en) * 2000-04-11 2007-09-06 Mathis, Richard M. Method and apparatus for computer memory protection and verification
US6968469B1 (en) * 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US7107487B2 (en) 2002-04-12 2006-09-12 Lenovo (Singapore) Pte Ltd. Fault tolerant sleep mode of operation
US6930949B2 (en) * 2002-08-26 2005-08-16 Micron Technology, Inc. Power savings in active standby mode
US7284136B2 (en) * 2003-01-23 2007-10-16 Intel Corporation Methods and apparatus for implementing a secure resume
US8199686B1 (en) * 2004-03-04 2012-06-12 Marvell International Ltd. Wireless local area network infrastructure mode for reducing power consumption
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
MXPA06015236A (es) * 2004-06-29 2007-08-21 Sk Telecom Co Ltd Metodo de apagado disfrazado para una terminal de comunicacion movil.
US7373530B2 (en) * 2005-03-16 2008-05-13 Microsoft Corporation Systems and methods for providing power-loss protection to sleeping computers systems
JP2007121374A (ja) * 2005-10-25 2007-05-17 Seiko Epson Corp 情報表示装置
US7793127B2 (en) * 2005-12-30 2010-09-07 Intel Corporation Processor state restoration and method for resume
JP4835206B2 (ja) * 2006-03-06 2011-12-14 富士ゼロックス株式会社 情報処理装置
US8248629B2 (en) * 2007-06-21 2012-08-21 Kyocera Mita Corporation Image forming apparatus with a power mode control section for allocating a printout for a reserved low-key print setting job
JP4867892B2 (ja) * 2007-11-01 2012-02-01 日本電気株式会社 メモリ制御装置、システム、プログラム、および、方法
JP5565778B2 (ja) * 2009-01-05 2014-08-06 マーベル ワールド トレード リミテッド 不揮発性メモリデバイスを利用するハイバネートまたはサスペンド方法およびシステム
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
JP2012173919A (ja) * 2011-02-21 2012-09-10 Toyota Motor Corp 情報処理装置、車両用電子制御ユニット、データ記憶方法
US8874926B1 (en) * 2012-03-08 2014-10-28 Sandia Corporation Increasing security in inter-chip communication
US8978135B2 (en) 2012-09-14 2015-03-10 Intel Corporation Methods and apparatus to protect memory regions during low-power states

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005466A (ja) * 1991-05-17 2004-01-08 Nec Corp 保護モードマイクロプロセッサ及びハードディスクのための中断及び再開機能とアイドルモードとを実現する装置および方法
US20020073358A1 (en) * 2000-12-07 2002-06-13 Atkinson Lee. W. Method for redundant suspend to RAM
JP2004005432A (ja) * 2002-03-12 2004-01-08 Internatl Business Mach Corp <Ibm> 近接センサにより機能強化された電力管理方法
US20040003273A1 (en) * 2002-06-26 2004-01-01 Grawrock David W. Sleep protection

Also Published As

Publication number Publication date
US8978135B2 (en) 2015-03-10
US20140082724A1 (en) 2014-03-20
JP6026666B2 (ja) 2016-11-16
CN104520872B (zh) 2018-02-23
KR101662616B1 (ko) 2016-10-05
US9542114B2 (en) 2017-01-10
US20150178500A1 (en) 2015-06-25
EP2895935A4 (en) 2016-05-11
WO2014042650A1 (en) 2014-03-20
US9372993B2 (en) 2016-06-21
US20160299721A1 (en) 2016-10-13
JP2015537274A (ja) 2015-12-24
CN104520872A (zh) 2015-04-15
EP2895935A1 (en) 2015-07-22

Similar Documents

Publication Publication Date Title
KR101662616B1 (ko) 저전력 상태시 메모리 영역 보호 방법 및 장치
US10516533B2 (en) Password triggered trusted encryption key deletion
KR100823374B1 (ko) 휴면 보호
JP6053786B2 (ja) Arm(登録商標)トラストゾーン実施のためのファームウェア基盤トラステッドプラットフォームモジュール(tpm)
US9098301B2 (en) Electronic device and booting method
US7822960B2 (en) Platform management processor assisted resume
US20130081124A1 (en) Trusting an unverified code image in a computing device
WO2008085447A2 (en) Securely recovering a computing device
US20240193264A1 (en) Fuse based replay protection with aggressive fuse usage and countermeasures for fuse voltage cut attacks
US11347858B2 (en) System and method to inhibit firmware downgrade
EP3757838A1 (en) Warm boot attack mitigations for non-volatile memory modules
EP4315124A1 (en) Fuse based replay protection with conservative fuse usage
EP4315122A1 (en) Fuse based replay protection with dynamic fuse usage and countermeasures for fuse voltage cut attacks
US7624442B2 (en) Memory security device for flexible software environment
JP6494143B2 (ja) 装置、方法、集積回路、プログラム、及び有形のコンピュータ可読記憶媒体
JP6316370B2 (ja) 装置、方法、集積回路、プログラム、及び有形のコンピュータ可読記憶媒体

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 4