KR20180011866A - 메모리 암호화 제외 방법 및 장치 - Google Patents

메모리 암호화 제외 방법 및 장치 Download PDF

Info

Publication number
KR20180011866A
KR20180011866A KR1020187002154A KR20187002154A KR20180011866A KR 20180011866 A KR20180011866 A KR 20180011866A KR 1020187002154 A KR1020187002154 A KR 1020187002154A KR 20187002154 A KR20187002154 A KR 20187002154A KR 20180011866 A KR20180011866 A KR 20180011866A
Authority
KR
South Korea
Prior art keywords
memory
encryption
service
firmware
ranges
Prior art date
Application number
KR1020187002154A
Other languages
English (en)
Inventor
니콜라스 제이. 애덤스
빈센트 제이. 짐머
바이주 브이. 파텔
라제쉬 푸르나찬드란
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20180011866A publication Critical patent/KR20180011866A/ko

Links

Images

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
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

메모리 암호화 제외와 연관된 장치들, 방법들 및 저장 매체가 본 명세서에서 개시된다. 실시예들에서, 장치는 운영 체제에 기본 입력/출력 서비스들을 제공하기 위해 하나 이상의 프로세서, 메모리 및 펌웨어를 포함할 수 있다. 추가로, 장치는 메모리로의 액세스를 제어하기 위한 메모리 제어기를 포함할 수 있고, 메모리 제어기는 데이터가 메모리의 암호화 영역에 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하기 위한 암호화 엔진을 포함하며, 암호화 엔진은 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 암호화 키를 재생성한다. 또한, 장치는 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하기 위해 하나 이상의 메모리 파라미터를 저장하기 위한 하나 이상의 저장 위치를 포함할 수 있다.

Description

메모리 암호화 제외 방법 및 장치
관련 출원
본 출원은 2015년 6월 24일자로 출원된 "MEMORY ENCRYPTION EXCLUSION METHOD AND APPARATUS"라는 발명의 명칭의 미국 특허 출원 제14/749,301호에 대한 우선권을 주장한다.
기술분야
본 개시내용은 컴퓨팅 분야에 관한 것이다. 더 구체적으로, 본 개시내용은 메모리에 하나 이상의 암호화 제외 영역의 제공에 관한 것이다.
본 명세서에 제공된 배경 설명은 본 개시내용의 맥락을 일반적으로 제시하기 위한 것이다. 본 명세서에 달리 지시되지 않는 한, 본 섹션에 설명된 자료들은 본 출원에서의 청구항들에 대한 종래 기술이 아니며, 본 섹션에서의 포함에 의해 종래 기술인 것으로 인정되지는 않는다.
컴퓨팅 플랫폼(이하 플랫폼)의 제공에서 역사적인 난제들 중 하나는 펌웨어 업데이트들의 원활한 구현 및 다른 원격 측정 정보를 플랫폼으로 다시 전달하는 것을 포함한다. 전통적으로, 공급 업체들은 그들의 업데이트들을 조정하기 위해 그 자신들의 유틸리티들, 커스텀 드라이버들 및 부팅 환경들을 갖는다. UEFI(Unified Extensible Firmware Interface) 기술의 비상 사태는 캡슐(Capsule), 또는 페이로드 및 애플리케이션과 함께 이진 블롭(binary blob)을 사용하는 능력을 도입하여 이러한 업데이트들 및/또는 원격 측정 정보의 제공을 수행할 수 있었다. 런타임 API(application programming interface) UpdateCapsule() 서비스와 함께 운영 체제(OS) 런타임은 OS가 활성인 동안 원격 측정 정보의 업데이트 또는 전달을 조정할 수 있다(즉, 커스텀 환경 등으로 재부팅할 필요가 없음). Microsoft Corporation의 Windows®8은 시스템 온 칩(SOC) 플랫폼들에 이 능력을 제공한다. Windows® OS뿐만 아니라 다른 OS에서도 이 능력을 추가적인 플랫폼들에 제공할 것으로 예상된다. 캡슐에 대한 추가 정보에 대해서는, 2013년 9월, Intel® Corp.으로부터 이용가능한, 버전 0.9의 “Intel® Platform Innovation on Framework for EFI Capsule Specification”을 참조한다.
그러나, 다른 플랫폼 하드웨어 보호 기술들은 캡슐 메커니즘과 경쟁하고 있다. 특히, 캡슐 업데이트 API는 종종 시스템 메모리를 비-메모리 파괴적인 재시작을 거쳐 플랫폼 펌웨어로 전달되는 캡슐 데이터의 전송으로서 사용한다. 하지만 TME(Total Memory Encryption)와 같은 신기술은 플랫폼 펌웨어를 적대적인 것으로 간주하고 재시작/리셋에 걸쳐 다시 펌웨어로의 임의의 호출이 공격 벡터로 간주될 수 있으며 여기서 구성되어 있을 수 있는 펌웨어에 대해 OS 비밀들이 드러날 수 있다. 결과적으로, TME 하드웨어 구현들은 전형적으로 이러한 우려를 개선하기 위해 재시작/리셋에 걸쳐 암호화 키를 스크램블링한다.
실시예들은 첨부 도면들과 함께 이하의 상세한 설명에 의해 쉽게 이해될 것이다. 이러한 설명을 용이하게 하기 위해서, 유사한 참조 번호들은 유사한 구조적 요소들을 지시한다. 실시예들은 첨부 도면들의 도면들에 제한적이 아니라 예시적으로 도시되어 있다.
도 1은 다양한 실시예들에 따른, 본 개시내용의 메모리 암호화 제외 기술을 갖는 컴퓨팅 디바이스를 도시한다.
도 2는 다양한 실시예들에 따라 메모리에서 암호화 제외 영역을 구성하기 위한 다양한 예시적인 메모리 파라미터들을 도시한다.
도 3은 다양한 실시예들에 따라, 베이스 어드레스 및 마스크를 사용하는 예시적인 암호화 제외를 보다 상세히 도시한다.
도 4는 다양한 실시예들에 따라, 리셋 동안 암호화 제외 영역을 제공하기 위한 예시적인 프로세스를 도시한다.
도 5는 다양한 실시예들에 따라 캡슐을 검증하기 위한 예시적인 프로세스를 도시한다.
도 6은 다양한 실시예들에 따라, 본 개시내용의 양태들을 실시하기 위해 사용하기에 적합한 예시적인 컴퓨터 시스템을 도시한다.
도 7은 다양한 실시예들에 따라 도 4 내지 도 5를 참조하여 설명된 방법들을 실시하기 위한 명령어들을 갖는 저장 매체를 도시한다.
메모리 암호화 제외와 연관된 장치들, 방법들 및 저장 매체가 본 명세서에서 개시된다. 실시예들에서, 장치는 운영 체제에 기본 입력/출력 서비스들을 제공하기 위해 하나 이상의 프로세서, 메모리 및 펌웨어를 포함할 수 있다. 추가로, 장치는 메모리로의 액세스를 제어하기 위한 메모리 제어기를 포함할 수 있고, 메모리 제어기는 데이터가 메모리의 암호화 영역에 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하기 위한 암호화 엔진을 포함하며, 암호화 엔진은 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 암호화 키를 재생성한다. 또한, 장치는 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하기 위해 하나 이상의 메모리 파라미터를 저장하기 위한 하나 이상의 저장 위치를 포함할 수 있다.
실시예들에서, 펌웨어의 기본 입력/출력 서비스들은, 메모리의 암호화 제외 영역을 제공하기 위해 메모리의 범위를 확보하도록 또는 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 미리 확보된 범위를 언셋(unset)하도록 하나 이상의 메모리 파라미터를 구성하는 하나 이상의 암호화 제외 서비스를 포함할 수 있다.
실시예들에서, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 더 포함할 수 있으며, 시스템 리셋 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함하고, 제1 암호화 제외 서비스는 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 메모리의 범위를 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정한다. 추가로, 시스템 리셋 서비스는 장치를 리셋하는 것의 일부로서, 운영 체제에 의해 생성된 캡슐을 암호화 영역으로부터 암호화 제외 영역으로 복사할 수 있다. 또한, 펌웨어의 기본 입력/출력 서비스들은 암호화 제외 서비스의 제2 암호화 제외 서비스를 포함하는 초기화 서비스를 포함할 수 있으며, 제2 암호화 제외 서비스는 사전 부팅 단계 종료 동안 호출시, 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 확보된 범위를 언셋하도록 하나 이상의 메모리 파라미터를 리셋한다.
다음의 상세한 설명에서, 본 명세서의 일부를 형성하고, 명세서 전체에서 유사한 번호들이 유사한 부분들을 지시하고, 실시될 수 있는 실시예들이 예시로서 도시되는 첨부 도면들이 참조된다. 다른 실시예들이 이용될 수 있고, 본 개시내용의 범위 내에서 구조적 또는 논리적 변경들이 이루어질 수 있다는 점이 이해되어야 한다. 그러므로, 다음의 상세한 설명은 제한하는 의미로 간주되어서는 안 되며, 실시예들의 범위는 첨부 청구항들 및 그것의 등가물들에 의해 규정된다.
본 개시내용의 양태들은 첨부된 설명에서 개시된다. 본 개시내용의 대안 실시예들 및 그의 등가물들이 본 개시내용의 사상 또는 범위로부터 벗어나지 않고서 안출될 수 있다. 아래에 개시되는 유사한 요소들은 도면들에서 유사한 참조 번호들에 의해 표시된다는 점에 유의해야 한다.
다양한 동작들이 청구된 발명 대상을 이해하는 데 가장 유용한 방식으로 복수의 개별적인 액션 또는 동작으로서 차례로 설명될 수 있다. 그러나, 설명 순서는 이러한 동작들이 반드시 순서 종속적이라고 암시하는 것으로 해석되어서는 안된다. 특히, 이러한 동작들은 제시된 순서로 수행되지 않을 수 있다. 설명된 동작들은 설명된 실시예와 다른 순서로 수행될 수 있다. 다양한 추가적인 동작들이 수행될 수 있으며, 그리고/또는 설명된 동작들이 추가적인 실시예들에서 생략될 수 있다.
본 개시내용의 목적으로, 어구 "A 및/또는 B"는 (A), (B), 또는 (A 및 B)를 의미한다. 본 개시내용의 목적으로, 어구 "A, B, 및/또는 C"는 (A), (B), (C), (A 및 B), (A 및 C), (B 및 C), 또는 (A, B 및 C)를 의미한다.
설명은 동일한 또는 상이한 실시예들 중 하나 이상을 각각 참조할 수 있는 어구들 "실시예에서" 또는 "실시예들에서"를 사용할 수 있다. 더욱이, 본 개시내용의 실시예들에 관해 사용되는 용어들 "포함하는(comprising)", "포함하는(including)", "갖는(having)" 등은 동의어들이다.
본 명세서에서 사용된 용어 "모듈"은, ASIC(Application Specific Integrated Circuit), 전자 회로, 하나 이상의 소프트웨어 또는 펌웨어 프로그램들을 실행하는 (공유, 전용, 또는 그룹) 프로세서 및/또는 (공유, 전용, 또는 그룹) 메모리, 조합 로직 회로 및/또는 설명한 기능성을 제공하는 다른 적합한 컴포넌트들을 참조하거나, 이들의 일부일 수 있거나, 또는 이들을 포함할 수 있다.
이제 도 1을 참조하면, 다양한 실시예들에 따른, 본 개시내용의 메모리 암호화 제외 기술을 갖는 컴퓨팅 디바이스가 도시된다. 도시된 바와 같이, 컴퓨팅 디바이스(100)는 하나 이상의 프로세서(102), 메모리(104), 및 메모리 제어기(106)를 포함할 수 있다. 프로세서들(102) 각각은 하나 이상의 프로세서 코어를 갖는 본 기술분야에 공지된 다수의 프로세서 중 임의의 하나일 수 있다. 마찬가지로, 메모리(104)는 본 기술분야에서 데이터를 저장하기에 적합한 임의의 공지된 휘발성 또는 비휘발성 메모리일 수 있다. 메모리 제어기(106)는 메모리(104)에 대한 액세스들을 제어하도록 구성될 수 있다. 실시예들에서, 메모리 제어기(106)는, 데이터가 암호화로부터 제외된 메모리(104)의 영역으로 저장되지 않는 한, 데이터를 메모리(104)로 저장하기 전에 디폴트로 암호화 키를 사용하여 데이터를 암호화하도록 구성된 암호화 엔진(122)을 포함할 수 있다. 추가로, 암호화 엔진(122)은 리셋시 암호화 키를 스크램블링하여, 리셋으로 진입시에 모든 암호화 데이터가 "손실"되게 할 수 있다. 실시예들에서, 메모리 제어기(106)는 데이터가 암호화되어 저장되는 것으로부터 제외되는 것으로 메모리(104)의 하나 이상의 영역 또는 범위를 정의하도록 구성된 하나 이상의 파라미터를 저장하기 위한 하나 이상의 저장 위치, 예를 들어 레지스터들을 더 포함할 수 있다. 달리 말해서, 디폴트로, 메모리 제어기(106)는 메모리(104)의 하나 이상의 영역 또는 범위의 선택가능한 제외를 보강한 TME(total memory encryption)를 제공한다. 메모리(104)의 하나 이상의 영역 또는 범위의 선택가능한 제외를 제외하고, 메모리 제어기(104)는 본 기술분야에 공지된 다수의 메모리 제어기 중 임의의 하나일 수 있다. 암호화로부터 메모리(104)의 하나 이상의 영역 또는 범위의 선택가능한 제외 및 그 사용은 도 2 내지 도 5를 참조하여 이하에서 더 설명될 것이다.
여전히 도 1을 참조하면, 컴퓨팅 디바이스(100)는 다수의 입력/출력(I/O) 디바이스(108)를 더 포함할 수 있다. I/O 디바이스들의 예들은 이더넷, WiFi, 3G/4G, Bluetooth®, 근거리 통신(Near Field Communication), USB(Universal Serial Bus) 등과 같은 통신 또는 네트워킹 인터페이스들, 고체 상태, 자기 및/또는 광학 드라이브들과 같은 저장 디바이스들, 키보드, 마우스, 터치 감지 스크린 등과 같은 입력 디바이스들 및 디스플레이 디바이스들, 프린터들 등과 같은 출력 디바이스들을 포함할 수 있다.
추가로, 컴퓨팅 디바이스(100)는 펌웨어(110), OS(112) 및 애플리케이션들(114)을 포함할 수 있다. 애플리케이션들(114)은 본 기술분야에 공지된 다수의 애플리케이션 중 임의의 하나일 수 있다. OS(112)는 펌웨어(110)에 의해 사용되거나 펌웨어(110)를 업데이트하기 위해 데이터로 하나 이상의 캡슐을 생성하는 서비스를 포함하는 다양한 서비스들 및 유틸리티들(130)을 포함할 수 있다. 실시예들에서, OS(112)는 시스템 리셋이 하나 이상의 캡슐을 펌웨어(110)로 전달하게 할 수 있다. 따라서, OS(112)는 마찬가지로 본 기술분야에 공지된 다수의 OS 중 임의의 하나일 수 있다.
펌웨어(110)는 다수의 기본 입력/출력 서비스를 포함할 수 있다. 실시예들에서, 이러한 기본 입력/출력 서비스들은 예를 들어 컴퓨팅 디바이스(100)의 기동시에 사전 부팅/초기화 단계 동안 수행될 초기화 서비스들(126), 및 컴퓨팅 디바이스(100)를 리셋하기 위한 리셋 서비스(128)를 포함할 수 있다. 실시예들에서, 펌웨어(110)는 UEFI를 구현 및 지원할 수 있고, 초기화 서비스들(126)은 PEI(pre-EFI initialization) 단계, 드라이버 실행 환경(DXE) 및 부팅 디바이스 선택 단계(BDS)를 포함하는 다수의 사전 부팅 단계를 구현 및 지원할 수 있다. 이러한 실시예들에서, 초기화 서비스들(126)은 사전 부팅 단계들 동안 캡슐들의 검증 및/또는 처리를 추가로 지원할 수 있다.
실시예들에서, 펌웨어(110)의 기본 입력/출력 서비스들은, 메모리의 하나 이상의 암호화 제외 영역을 제공하기 위해 메모리의 하나 이상의 범위를 확보하도록 또는 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 미리 확보된 하나 이상의 범위를 언셋(unset)하도록 하나 이상의 메모리 파라미터를 구성하는 하나 이상의 암호화 제외 서비스를 포함할 수 있다. 실시예들에서, 리셋 서비스(128)는 리셋의 시작시, 메모리(104)의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록, 그리고 사전 부팅 단계들 동안 검증 및 처리를 위해 OS(112)에 의해 생성된 하나 이상의 캡슐을 펌웨어(110)로 전송하기 위해 하나 이상의 암호화 제외 영역을 사용하도록 파라미터 스토리지(124)에서 메모리 파라미터들을 구성하기 위한 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있다. 이러한 실시예들에서, 초기화 서비스들(126)은 사전 부팅 단계들의 종료에서, 하나 이상의 영역으로 데이터가 암호화되어 저장되는 것으로부터 더 이상 제외되지 않는 것으로 메모리(104)의 미리 확보된 하나 이상의 범위를 언셋하도록 파라미터 스토리지(124)에서 메모리 파라미터들을 구성하기 위한 하나 이상의 암호화 제외 서비스 중 제2 암호화 제외 서비스를 포함할 수 있다.
실시예들에서, 리셋 서비스(128)에 추가하여 또는 이에 대신하여 초기화 서비스(126)의 제2 암호화 제외 서비스는 각각의 파워 업시에 사전 부팅 단계 동안, 메모리(104)의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하기 위해 파라미터 스토리지(124)에서 메모리 파라미터들을 구성하도록 구성될 수 있다. 이렇게 생성된 하나 이상의 암호화 제외 영역은 컴퓨팅 디바이스(100)가 파워 다운될 때까지 리셋들에 걸쳐서 지속될 수 있다.
실시예들에서, 암호화 제외 서비스는 암호화 제외 서비스가 리셋 서비스(128) 또는 초기화 서비스(126)의 일부인지 여부에 관계없이, 특수 보호 메모리 영역 밖에서 실행될 수 있다. 특수 보호 메모리 영역의 일례는 시스템 관리 모드와 같이 특수 보호 실행 모드 동안에 스와핑된 특수 메모리 영역일 수 있다. 특수 보호 실행 모드는 예를 들어, 마스크 불가능한 인터럽트(unmaskable interrupt)와 같은 인터럽트를 통해 진입될 수 있다.
이해의 용이함을 위해, 나머지 설명은 일반적으로 메모리의 범위를 암호화 제외 영역으로서 확보하는 맥락에서 제시될 것이지만, 본 개시내용은 그렇게 제한되지는 않는다. 이 설명은 임의의 한 시점에 메모리의 2개 이상의 범위를 2개 이상의 암호화 제외 영역으로서 설정하는 것에 적용된다.
이제 도 2를 참조하여, 다양한 실시예들에 따라, 메모리에서 암호화 제외 영역을 구성하기 위한 다양한 예시적인 메모리 파라미터들이 도시된다. 도시된 바와 같이, 파라미터 스토리지(124)는 2개의 메모리 파라미터, 암호화 제외 베이스 어드레스 및 암호화 제외 마스크를 저장하기 위한 2개의 저장 위치(202 및 204)를 포함할 수 있다. 암호화 제외 베이스 어드레스는 암호화 제외 영역의 시작 어드레스를 식별할 수 있다. 암호화 제외 마스크는 기입 동작의 메모리 어드레스의 특정 비트를 마스크 아웃하기 위해 사용될 수 있고, 암호화 제외 베이스 어드레스와 결합하여, (암호화 제외 베이스 어드레스로부터) 암호화 제외 영역의 익스텐트(extent)를 효과적으로 정의한다. 전술한 바와 같이, 실시예들에서, 저장 위치들(202 및 204)은 메모리 제어기(106)의 2개의 각자의 레지스터일 수 있다. 예시된 실시예들의 경우, 암호화 제외 베이스 어드레스 및 암호화 제외 마스크는 저장 위치들/레지스터들(202 및 204)의 비트 12 이상(최대 최상위 비트(MSB)까지)으로 각각 저장될 수 있다. 마스크 필드들 및 베이스 어드레스의 크기들은 메모리(104)의 크기에 의존할 수 있고, 및/또는 암호화 제외 영역의 가장 큰 익스텐트가 확보될 수 있다. 예시된 실시예들에서, 저장 위치/레지스터(204)의 비트 11은, 메모리(104)의 범위를 암호화 제외 영역으로서 확보하는 피처가 인에이블인지를 표시하기 위한 인에이블 표시자- 예를 들어, 값 0은 피처가 디스에이블인 것을 표시하고, 값 1은 피처가 인에이블인 것을 표시함 -를 저장하기 위해 사용될 수 있다.
이제 도 3을 참조하면, 다양한 실시예들에 따른, 베이스 어드레스 및 마스크를 사용하는 예시적인 암호화 제외가 더 상세히 설명된다. 도시된 바와 같이, 기입 어드레스(306)는 베이스 어드레스(204) 및 마스크(202)와 결합되어(312) 평문(plain text) 데이터(304) 또는 (암호화 엔진(122)에 의해 암호화된) 암호화 데이터(302)를 메모리(106)에 기입할지를 선택할 때 선택기(310)를 제어하기 위한 제어 신호를 생성한다. 동작들은 익스텐트/영역(322)에 대한 암호화 제외를 효과적으로 달성한다. 이해의 용이함을 위해, 결합(마스킹) 로직(312), 선택기(310) 및 암호화 엔진(122)은 별개의 요소들로서 도시되지만, 실시예들에서는 이들 요소들 중 2개 이상의 요소가 동일한 회로 블록으로 결합될 수 있다.
이제 도 4를 참조하면, 다양한 실시예들에 따라, 리셋 동안 암호화 제외 영역을 제공하기 위한 예시적인 프로세스가 도시된다. 메모리에 암호화 제외 영역을 제공하기 위한 예시적인 프로세스(400)는, 암호화 제외 영역이 동적으로 리셋의 시작시에 생성되고 리셋의 종료시에 제거되는 실시예들의 맥락에서 설명될 것이다. 도시된 바와 같이, 예시된 실시예들의 경우, 메모리에서 암호화 제외 영역을 제공하기 위한 프로세스(400)는 블록들 402-420에서 수행되는 동작들을 포함할 수 있다. 블록들 402-406에서의 동작들은 예를 들어, 도 1의 OS(112)에 의해 수행될 수 있고, 블록들 408-420에서의 동작들은 예를 들어 도 1의 펌웨어(110)에 의해 수행될 수 있다. 특히, 블록들 408-412에서의 동작들은 예를 들어 리셋 서비스(128)에 의해 수행될 수 있고, 블록들 414-420에서의 동작들은 예를 들어 초기화 서비스(126)에 의해 수행될 수 있다. 대안적인 실시예들에서, 프로세스(400)는 더 많거나 더 적은 동작을 포함할 수 있거나, 동작들 중 일부는 다른 순서로 수행될 수 있다.
프로세스(400)는 블록 402에서 시작될 수 있다. 블록 402에서, 캡슐은 예를 들어 OS(112)에 의해 준비될 수 있다. 전술한 바와 같이, 캡슐은 펌웨어(110)에 의해 사용되거나 펌웨어(110)를 업데이트하기 위한 데이터를 포함할 수 있다. 이러한 실시예들의 경우, 캡슐의 생성 동안, 암호화 제외 영역이 없기 때문에, 결과적으로 메모리에 저장된 캡슐은 암호화된다는 점을 유의한다.
다음으로, 블록 404에서, 시스템은 OS(112)로부터 펌웨어(110)의 사전 부팅 단계로 실행 제어를 전송하도록 리셋될 수 있다. 그러한 시점에서, 리셋 서비스(128)가 호출될 수 있고 제어권을 부여받을 수 있다. 프로세스(400)는 블록 408로 진행할 수 있다.
블록 408에서, 메모리에서 암호화 제외 영역은 예를 들어, 리셋 서비스(128)에 의해; 보다 구체적으로는, 리셋 서비스(128)의 암호화 제외 서비스에 의해 셋업될 수 있다. 암호화 제외 영역은, 예를 들어 전술한 베이스 어드레스 및 마스크와 같은 적용가능한 메모리 파라미터들을 구성하는 것에 의해 셋업될 수 있다. 실시예들에서, 전술한 바와 같이, 리셋 서비스(128)의 암호화 제외 서비스는 특수 보호 실행 모드 하에서 스와핑되는 특수 보호 메모리로부터 실행될 수 있다. 특수 보호 실행 모드는 인터럽트를 통해 호출될 수 있다.
다음으로, 블록 410에서, 예를 들어, 리셋 서비스(128)에 의해 캡슐 데이터가 암호화 제외 영역으로 복사되어, 그 결과 캡슐 데이터는 캡슐 데이터의 평문으로 메모리에 저장될 수 있다. 실시예들에서, 캡슐 데이터는 암호화 영역에서의 다양한 불연속 메모리 블록들로부터 암호화 제외 영역에서의 연속 메모리 블록으로 복사될 수 있다.
그 후, 블록 412에서, 웜 리셋이 예를 들어, 리셋(reset) 서비스(128)에 의해 수행되어, 펌웨어(110)로 하여금 사전 부팅 단계로 진입하게 하고, 실행 제어는 초기화 서비스(126)로 전송될 수 있다.
블록 414에서, PEI 단계와 연관된 동작들의 수행이 시작될 수 있다. 특히, 블록 416에서, 캡슐의 검증이 수행될 수 있다. 블록 418에서, 캡슐 처리를 포함하는 사전 부팅 DXE 및 BDS 단계들과 연관된 동작들이 수행될 수 있다. 실시예들에서, BDS 단계는 캡슐의 헤더 섹션에서 핸드 오프 블록(hand-off block)(HOB) 내의 설명 정보에 따라 캡슐 데이터를 추출하는 것을 포함할 수 있다. 추출된 캡슐 데이터는 DXE 단계 동안 처리된다.
동작들의 완료시, 예를 들어 초기화 서비스(126)에 의해, 보다 구체적으로는 초기화 서비스(126)의 암호화 제외 서비스에 의해, 메모리 파라미터들이 다시 구성되어, 암호화 제외 영역을 디폴트 암호화 영역으로 복귀시킬 수 있다. 실시예들에서, 전술한 바와 같이, 초기화 서비스(126)의 암호화 제외 서비스는 특수 보호 실행 모드 하에서 스와핑될 수 있는 특수 보호 메모리로부터 실행될 수 있다. 특수 보호 실행 모드는 인터럽트를 통해 호출될 수 있다. 암호화 제외 영역을 디폴트 암호화 영역으로 복귀시킬 때, 사전 부팅 단계는 OS(112) 및 애플리케이션(114)의 실행이 계속될 수 있는 OS(112)로 실행 제어가 리턴되면서 종료될 수 있다. 사전 부팅 PEI, DXE 및 BDS 단계들과 연관된 동작들은 플랫폼 의존적이고, 본 기술분야에 공지되어 있으며, 이에 따라 캡슐 검증을 제외하고는 더 설명되지 않을 것이다.
이제 도 5를 참조하면, 다양한 실시예들에 따른, 캡슐을 검증하기 위한 예시적인 프로세스가 도시된다. 캡슐을 검증하기 위한 예시적인 프로세스(500)는 블록들 502-512에서 수행되는 동작들을 포함할 수 있다. 블록들 502-512에서의 동작들은, 예를 들어 도 1의 펌웨어(110)의 초기화 서비스(126)에 의해 수행될 수 있다. 대안적인 실시예들에서, 프로세스(500)는 더 많거나 더 적은 동작을 포함할 수 있거나, 동작들 중 일부는 다른 순서로 수행될 수 있다.
프로세스(500)는 블록 502에서 시작될 수 있다. 블록 502에서, 캡슐이 서명되어 있는지에 대한 결정이 이루어질 수 있다. 캡슐이 서명되어 있는 경우, 프로세스(500)는 블록 504로 진행할 수 있다. 블록 504에서, 서명을 검증하기 위한 시도가 이루어질 수 있다. 블록 506에서, 서명을 검증하려는 시도가 성공적이었는지에 대한 결정이 이루어질 수 있다. 검증이 성공적이었을 경우, 처리는 블록 508에서 계속될 수 있다. 검증이 성공적이지 않았을 경우, 프로세스(500)는 블록 512로 진행할 수 있다.
다시 블록 502로 돌아와서, 캡슐이 서명되지 않은 경우, 프로세스(500)는 블록 510으로 진행할 수 있다. 블록 510에서, 서명되지 않은 캡슐이 플랫폼에 수용가능한지에 대해 다른 결정이 이루어질 수 있다. 결정은 플랫폼 의존 방식을 통해 이루어질 수 있다. 서명되지 않은 캡슐이 플랫폼에 수용 가능한 경우, 프로세스(500)는 블록 508로 진행할 수 있고, 블록 508로부터 전술한 바와 같이 계속될 수 있으며, 그렇지 않으면 프로세스(500)는 블록 512로 진행할 수 있다.
블록 512에서, 보안 위반이 결정된다. 보안 위반은 플랫폼 의존 방식으로 처리될 수 있다. 실시예들에서, 플랫폼은 셧다운되고 디스에이블될 수 있다.
도 6은 본 개시내용의 선택된 양태들을 실시하기 위해 사용하기에 적합할 수 있는 예시적인 컴퓨터 시스템을 도시한다. 도시된 바와 같이, 컴퓨터(600)는 하나 이상의 프로세서 또는 프로세서 코어(602), 판독 전용 메모리(ROM)(603) 및 시스템 메모리(604)를 포함할 수 있다. 청구항들을 포함하여 본 출원의 목적을 위해, "프로세서"라는 용어는 물리적 프로세서를 지칭하고, "프로세서" 및 "프로세서 코어"라는 용어들은 문맥이 명확히 다른 것을 요구하지 않는 한, 동의어로 간주될 수 있다. 추가로, 컴퓨터 시스템(600)은 대용량 저장 디바이스들(606)을 포함할 수 있다. 대용량 저장 디바이스들(606)의 예는 테이프 드라이브들, 하드 드라이브들, CD-ROM(compact disc read-only memory) 등을 포함할 수 있지만, 이에 제한되는 것은 아니다. 또한, 컴퓨터 시스템(600)은 (디스플레이, 키보드, 커서 제어 등과 같은) 입력/출력 디바이스들(608) 및 (네트워크 인터페이스 카드들, 모뎀들 등과 같은) 통신 인터페이스들(610)을 포함할 수 있다. 요소들은, 하나 이상의 버스를 나타낼 수 있는, 시스템 버스(612)를 통해 서로 결합될 수 있다. 다수의 버스의 경우, 이들은 하나 이상의 버스 브리지(도시되지 않음)에 의해 브리징될 수 있다.
이 요소들 각각은 본 기술분야에 공지된 그의 종래의 기능들을 수행할 수 있다. 특히, ROM(603)은 전술한 바와 같이 도 1의 초기화 서비스(126) 및 리셋 서비스(128)를 포함하는 기본 입력/출력 시스템 서비스들(BIOS)(605)을 포함할 수 있다. 시스템 메모리(604) 및 대용량 저장 디바이스들(606)은 총괄하여 계산 로직(622)으로서 지칭되는, 전술한 바와 같이 애플리케이션들(112) 및 게스트 OS(114)와 연관된 동작들을 구현하는 프로그래밍 명령어들의 작업 사본 및 영구적 사본을 저장하기 위해 이용될 수 있다. 다양한 요소들은 프로세서(들)(602)에 의해 지원되는 어셈블러 명령어들 또는 그러한 명령어들로 컴파일될 수 있는 예를 들어 C와 같은 고급 언어들에 의해 구현될 수 있다.
이러한 요소들(610-612)의 수, 능력 및/또는 용량은 컴퓨터 시스템(600)이 웨어러블 디바이스, 스마트폰, 컴퓨터 태블릿, 랩톱 등과 같은 모바일 디바이스로서 사용되는지 또는 데스크톱 컴퓨터, 서버, 게임 콘솔, 셋톱 박스, 인포테인먼트 콘솔 등과 같은 고정형 디바이스로서 사용되는지에 따라 달라질 수 있다. 그렇지 않으면, 요소들(610-612)의 구성들은 공지되어 있고, 이에 따라 더 설명되지 않을 것이다.
본 기술분야의 통상의 기술자에 의해 이해될 바와 같이, 본 개시내용은 방법들 또는 컴퓨터 프로그램 제품들로서 구현될 수 있다. 따라서, 본 개시내용은 전술한 바와 같이 하드웨어로 구현되는 것 이외에, (펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함하는) 완전 소프트웨어 실시예 또는 모두가 일반적으로 "회로", "모듈" 또는 "시스템"으로서 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 결합한 실시예의 형태를 취할 수 있다. 또한, 본 개시내용은 매체에서 구현된 컴퓨터 사용가능 프로그램 코드를 갖는 표현의 임의의 유형적인 또는 비일시적인 매체로 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 도 7은 장치에 의한 명령어들의 실행에 응답하여 장치로 하여금 본 개시내용의 선택된 양태들을 실시하게 하는 명령어들을 저장하기 위해 사용하기에 적합할 수 있는 예시적인 컴퓨터 판독가능 비일시적 저장 매체를 도시한다. 도시된 바와 같이, 비일시적 컴퓨터 판독가능 저장 매체(702)는 다수의 프로그래밍 명령어(704)를 포함할 수 있다. 프로그래밍 명령어들(704)은 프로그래밍 명령어들의 실행에 응답하여 펌웨어(110), OS(112) 및/또는 애플리케이션들(114)(의 양태들)을 구현하기 위해 디바이스, 예를 들어 컴퓨터(600)를 인에이블하도록 구성될 수 있다. 대안적인 실시예들에서, 프로그래밍 명령어들(704)이 그 대신에 다수의 컴퓨터 판독가능 비일시적 저장 매체(702) 상에 배치될 수 있다. 또 다른 실시예들에서, 프로그래밍 명령어들(704)은 신호들과 같은 컴퓨터 판독가능 일시적 저장 매체(702) 상에 배치될 수 있다.
하나 이상의 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는, 예를 들어, 이에 제한되는 것은 아니지만, 전자, 자기, 광, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스, 또는 전파 매체일 수 있다. 컴퓨터 판독가능 매체의 보다 구체적인 예들(비총체적 리스트: non-exhaustive list)은 다음을 포함할 것이다: 하나 이상의 와이어를 갖는 전기 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거가능 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 광 섬유, 휴대용 CD-ROM(compact disc read-only memory), 광 저장 디바이스, 인터넷 또는 인트라넷을 지원하는 것들과 같은 송신 매체, 또는 자기 저장 디바이스를 포함할 것이다. 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 심지어 종이 또는 프로그램이 인쇄되기에 적합한 다른 매체일 수 있는데, 그 이유는 프로그램이, 예를 들어, 종이 또는 다른 매체의 광 스캐닝을 통해, 전자적으로 캡처되고, 다음으로, 필요하다면, 적합한 방식으로 컴파일링, 해석, 또는 달리 처리되고 나서, 컴퓨터 메모리에 저장될 수 있기 때문이라는 점을 유의한다. 본 문헌의 맥락에서, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 그와 관련하여 사용하기 위한 프로그램을 포함, 저장, 통신, 전파 또는 전송할 수 있는 임의의 매체일 수 있다. 컴퓨터 사용가능 매체는 컴퓨터 사용가능 프로그램 코드가 구현되어 있는 전파 데이터 신호를, 기저대역 내에 또는 반송파(carrier wave)의 일부로서 포함할 수 있다. 컴퓨터 사용가능 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등을 포함하지만 이에 제한되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.
본 개시내용의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 자바, 스몰토크, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차형 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기입될 수 있다. 프로그램 코드는, 완전히 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 단독형 소프트웨어 패키지로서, 부분적으로는 사용자의 컴퓨터 상에서 그리고 부분적으로는 원격 컴퓨터 상에서 또는 완전히 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하여, 임의의 유형의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 접속은 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터로 이루어질 수 있다.
본 개시내용은 본 개시내용의 실시예들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도 예시들 및/또는 블록도들을 참조하여 설명된다. 흐름도 예시들 및/또는 블록도들의 각각의 블록, 및 흐름도 예시들 및/또는 블록도들 내의 블록들의 결합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것이 이해될 것이다. 이 컴퓨터 프로그램 명령어들은 머신을 생성하기 위해 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 프로세서에 제공될 수 있고, 따라서 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 프로세서를 통해 실행되는 명령어들은 흐름도 및/또는 블록도 블록 또는 블록들에서 지정된 기능들/동작들을 구현하기 위한 수단을 만든다.
이 컴퓨터 프로그램 명령어들은 또한 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치가 특정한 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있어서, 컴퓨터 판독가능 매체에 저장된 명령어들은 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/동작을 구현하는 명령어 수단을 포함하는 제조물을 생성한다.
컴퓨터 프로그램 명령어들은 또한 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치에 로딩되어, 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 명령어들이 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능들/동작들을 구현하기 위한 프로세스들을 제공하도록 일련의 동작 단계들이 컴퓨터 구현 프로세스를 생성하기 위해 컴퓨터 또는 다른 프로그램가능 장치 상에서 수행되게 할 수 있다.
도면들 내의 흐름도 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도들에서의 각각의 블록은 모듈, 세그먼트, 또는 코드의 일부를 나타낼 수 있고, 이들은 지정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함한다. 또한 일부 대안적인 구현예들에서, 블록에서 언급된 기능들은 도면들에 언급된 순서에서 벗어나서 발생할 수 있다는 점을 유의해야 한다. 예를 들어 연속한 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 블록들은 때로는 관련 기능성에 따라서는 역순으로 실행될 수 있다. 블록도들 및/또는 흐름도 예시의 각각의 블록, 및 블록도들 및/또는 흐름도 예시 내의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어와 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 점이 또한 유의될 것이다.
본 명세서에서 사용되는 용어는 특정 실시예들을 설명하기 위한 것일 뿐이며, 본 개시내용을 한정하고자 하지 않는다. 본 명세서에서 사용된 바와 같이, 단수 형태들("a", "an" 및 "the")은 문맥이 명백하게 달리 나타내지 않는 한 복수형 형태들도 포함하도록 의도된다. 용어들 "포함한다" 및/또는 "포함하는"은 본 명세서에서 사용되는 때에, 진술된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들을 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작, 요소들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 추가를 제외하지 않는다는 것이 더 이해될 것이다.
실시예들은 컴퓨터 프로세스, 컴퓨팅 시스템, 또는 제조물, 예컨대 컴퓨터 판독가능 매체의 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하기 위한 컴퓨터 프로그램 명령어들을 인코딩하는 컴퓨터 저장 매체일 수 있다.
이하의 청구항들에서의 모든 수단 또는 단계 플러스 기능 요소들의 대응하는 구조들, 재료, 동작들, 및 등가물들은 구체적으로 청구되는 다른 청구된 요소들과 조합하여 기능을 수행하기 위한 임의의 구조, 재료, 또는 동작을 포함하는 것으로 의도된다. 본 개시내용의 설명은 예시 및 설명을 위해 제시되었지만, 총망라한 것으로도 의도되지 않고 본 개시내용을 개시된 형태들로 제한하는 것으로도 의도되지 않는다. 통상의 기술자들에게는 본 개시내용의 범위 및 사상을 벗어나지 않고 다수의 수정 및 변경이 명백할 것이다. 실시예는 본 개시내용의 원리들 및 실제 적용을 가장 잘 설명하고, 본 기술분야의 통상의 지식을 가진 다른 자들이 고려되는 특정 이용에 적합한 것과 같은 다양한 수정들과 함께 실시예들에 대해 본 개시내용을 이해할 수 있도록 하기 위해 선택되고 설명되어 있다.
도 6을 다시 참조하면, 일 실시예에 대해서, 프로세서들(602) 중 적어도 하나는 펌웨어(110) 및/또는 OS(112)의 양태들을 갖는 메모리와 함께 패키징될 수 있다. 일 실시예에 대해서, 프로세서들(602) 중 적어도 하나는 시스템 인 패키지(System in Package)(SiP)를 형성하기 위해 펌웨어(110) 및/또는 OS(112)의 양태들을 갖는 메모리와 함께 패키징될 수 있다. 일 실시예에 대해, 프로세서들(602) 중 적어도 하나는 펌웨어(110) 및/또는 OS(112)의 양태들을 갖는 메모리와 동일한 다이 상에 집적될 수 있다. 일 실시예에 대해서, 프로세서들(602) 중 적어도 하나는 시스템 온 칩(System on Chip)(SoC)을 형성하기 위해 펌웨어(110) 및/또는 OS(112)의 양태들을 갖는 메모리와 함께 패키징될 수 있다. 적어도 하나의 실시예에 대해서, SoC는 예를 들어, 스마트폰 또는 컴퓨팅 태블릿에서 이용될 수 있지만 이에 제한되지는 않는다.
이와 같이 다음을 포함하지만 이에 제한되지 않는 본 개시내용의 다양한 예시적인 실시예들이 설명되어 있다:
예 1은 컴퓨팅을 위한 장치일 수 있고, 컴퓨팅을 위한 장치는: 하나 이상의 프로세서, 및 메모리; 하나 이상의 프로세서에 의해 동작되는 운영 체제에 기본 입력/출력 서비스들을 제공하기 위해 하나 이상의 프로세서 및 메모리와 결합된 펌웨어; 메모리로의 액세스를 제어하기 위해 메모리와 결합된 메모리 제어기- 메모리 제어기는 데이터가 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하기 위한 암호화 엔진을 포함할 수 있고, 암호화 엔진은 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 암호화 키를 재생성함 -; 및 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하기 위해 하나 이상의 메모리 파라미터를 저장하기 위한 하나 이상의 저장 위치를 포함한다.
예 2는 예 1일 수 있고, 하나 이상의 저장 위치는 하나 이상의 암호화 제외 영역 중 제1 암호화 제외 영역의 베이스 어드레스를 저장하기 위한 제1 저장 위치, 및 베이스 어드레스로부터 연장되는 제1 암호화 제외 영역의 범위를 효과적으로 정의하기 위해 어드레스 마스크를 저장하기 위한 제2 저장 위치를 포함할 수 있다.
예 3은 예 1일 수 있고, 하나 이상의 저장 위치는 메모리 제어기의 하나 이상의 레지스터를 포함할 수 있다.
예 4는 예 1일 수 있고, 펌웨어의 기본 입력/출력 서비스들은, 메모리의 하나 이상의 암호화 제외 영역을 제공하기 위해 메모리의 하나 이상의 범위를 확보하도록 또는 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 하나 이상의 미리 확보된 범위를 언셋하도록 하나 이상의 메모리 파라미터를 구성하는 하나 이상의 암호화 제외 서비스를 포함할 수 있다.
예 5는 예 4일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함할 수 있으며, 시스템 리셋 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있고, 제1 암호화 제외 서비스는 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정할 수 있다.
예 6은 예 5일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함할 수 있고; 시스템 리셋 서비스는, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보 시, 장치를 부팅 단계로 진입시키기 위한 웜 스타트(warm start)를 수행하고, 시스템 초기화 서비스를 호출하여 장치를 초기화할 수 있다.
예 7은 예 6일 수 있고, 시스템 초기화 서비스는 하나 이상의 암호화 제외 서비스 중 제2 암호화 제외 서비스를 포함할 수 있고; 제2 암호화 제외 서비스는, 초기화 단계의 종료에서 호출시, 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 확보된 하나 이상의 범위를 언셋하도록 하나 이상의 메모리 파라미터를 리셋할 수 있다.
예 8은 예들 4-7 중 어느 하나일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함할 수 있으며, 시스템 초기화 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있고, 제1 암호화 제외 서비스는 장치의 초기화 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정할 수 있다.
예 9는 예들 4-7 중 어느 하나일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함할 수 있으며, 시스템 리셋 서비스는, 장치를 리셋하는 것의 일부로서, 운영 체제에 의해 생성된 캡슐을 암호화 영역으로부터 하나 이상의 암호화 제외 영역 중 하나 이상의 암호화 제외 영역으로 복사할 수 있다.
예 10은 예 9일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 더 포함할 수 있고; 시스템 초기화 서비스는 장치의 사전 부팅 단계 동안 캡슐을 처리할 수 있다.
예 11은 컴퓨팅을 위한 방법일 수 있고, 컴퓨팅을 위한 방법은: 컴퓨팅 디바이스의 메모리 제어기에 의해, 컴퓨팅 디바이스의 메모리로의 액세스들을 제어하는 단계- 제어하는 단계는 데이터가 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하는 단계, 및 컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 컴퓨팅 디바이스의 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 암호화 키를 재생성하는 단계를 포함할 수 있음 -; 및 펌웨어의 기본 입력/출력 서비스들에 의해, 메모리의 하나 이상의 범위를 메모리의 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 구성하는 단계를 포함한다.
예 12는 예 11일 수 있고, 구성하는 단계는 하나 이상의 암호화 제외 영역 중 제1 암호화 제외 영역의 베이스 어드레스를 저장하기 위한 제1 저장 위치, 및 베이스 어드레스로부터 연장되는 제1 암호화 제외 영역의 범위를 효과적으로 정의하기 위해 어드레스 마스크를 저장하기 위한 제2 저장 위치를 구성하는 단계를 포함할 수 있다.
예 13은 에 11일 수 있고, 구성하는 단계는, 펌웨어의 기본 입력/출력 서비스들의 하나 이상의 암호화 제외 서비스가, 메모리의 하나 이상의 암호화 제외 영역을 제공하기 위해 메모리의 하나 이상의 범위를 확보하도록 또는 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 하나 이상의 미리 확보된 범위를 언셋하도록 하나 이상의 메모리 파라미터를 구성하는 단계를 포함할 수 있다.
예 14는 예 13일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함할 수 있으며, 시스템 리셋 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있고, 구성하는 단계는, 제1 암호화 제외 서비스가 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정하는 단계를 포함할 수 있다.
예 15는 예 14일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함할 수 있고; 방법은, 시스템 리셋 서비스가 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보 시, 컴퓨팅 디바이스를 부팅 단계로 진입시키기 위한 웜 스타트를 수행하고, 시스템 초기화 서비스를 호출하여 컴퓨팅 디바이스를 초기화하는 단계를 더 포함할 수 있다.
예 16은 예 15일 수 있고, 시스템 초기화 서비스는 하나 이상의 암호화 제외 서비스 중 제2 암호화 제외 서비스를 포함할 수 있고; 방법은, 제2 암호화 제외 서비스가 초기화 단계의 종료에서 호출시, 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 확보된 하나 이상의 범위를 언셋하도록 하나 이상의 메모리 파라미터를 리셋하는 단계를 더 포함할 수 있다.
예 17은 예들 13-16 중 어느 하나일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함할 수 있으며, 시스템 초기화 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있고, 구성하는 단계는, 제1 암호화 제외 서비스가 장치의 초기화 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정하는 단계를 포함할 수 있다.
예 18은 예들 13-16 중 어느 하나일 수 있으며, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함할 수 있으며, 방법은, 시스템 리셋 서비스가 컴퓨팅 디바이스를 리셋하는 단계의 일부로서, 운영 체제에 의해 생성된 캡슐을 암호화 영역으로부터 하나 이상의 암호화 제외 영역 중 하나 이상의 암호화 제외 영역으로 복사하는 단계를 더 포함할 수 있다.
예 19는 예 18일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 더 포함할 수 있고; 방법은, 시스템 초기화 서비스가 장치의 사전 부팅 단계 동안 캡슐을 처리하는 단계를 더 포함할 수 있다.
예 20은 컴퓨팅 디바이스로 하여금 컴퓨팅 디바이스의 프로세서에 의한 명령어들의 실행에 응답하여, 프로세서에 의해 동작되는 운영 체제에 기본 입력/출력 서비스들을 제공하게 하는 명령어들을 포함하는, 하나 이상의 컴퓨터 판독가능 매체일 수 있고; 기본 입력/출력 서비스들의 제공은 컴퓨팅 디바이스의 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하기 위한 하나 이상의 메모리 파라미터의 구성을 포함할 수 있고; 메모리로의 액세스가 메모리 제어기에 의해 제어되며, 액세스의 제어는 데이터가 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하는 데이터의 암호화, 및 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 암호화 키의 재생성을 포함할 수 있다.
예 21은 예 20일 수 있고, 하나 이상의 저장 위치의 구성은 하나 이상의 암호화 제외 영역 중 제1 암호화 제외 영역의 베이스 어드레스를 저장하기 위한 제1 저장 위치, 및 베이스 어드레스로부터 연장되는 제1 암호화 제외 영역의 범위를 효과적으로 정의하기 위해 어드레스 마스크를 저장하기 위한 제2 저장 위치의 구성을 포함할 수 있다.
예 22는 예 20일 수 있고, 펌웨어의 기본 입력/출력 서비스들은, 메모리의 하나 이상의 암호화 제외 영역을 제공하기 위해 메모리의 하나 이상의 범위를 확보하도록 또는 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 하나 이상의 미리 확보된 범위를 언셋하도록 하나 이상의 메모리 파라미터를 구성하는 하나 이상의 암호화 제외 서비스를 포함할 수 있다.
예 23은 예 22일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함할 수 있으며, 시스템 리셋 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있고, 제1 암호화 제외 서비스는 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정할 수 있다.
예 24는 예 23일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함할 수 있고; 시스템 리셋 서비스는, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보 시, 컴퓨팅 디바이스를 부팅 단계로 진입시키기 위한 웜 스타트를 수행할 수 있고, 시스템 초기화 서비스를 호출하여 컴퓨팅 디바이스를 초기화한다.
예 25는 예 24일 수 있고, 시스템 초기화 서비스는 하나 이상의 암호화 제외 서비스 중 제2 암호화 제외 서비스를 포함할 수 있고; 제2 암호화 제외 서비스는, 초기화 단계의 종료에서 호출시, 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 확보된 하나 이상의 범위를 언셋하도록 하나 이상의 메모리 파라미터를 리셋할 수 있다.
예 26은 예일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함할 수 있으며, 시스템 초기화 서비스는 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함할 수 있고, 제1 암호화 제외 서비스는 컴퓨팅 디바이스의 초기화 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정할 수 있다.
예 27은 예일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함할 수 있으며, 시스템 리셋 서비스는, 컴퓨팅 디바이스를 리셋하는 것의 일부로서, 운영 체제에 의해 생성된 캡슐을 암호화 영역으로부터 하나 이상의 암호화 제외 영역 중 하나 이상의 암호화 제외 영역으로 복사할 수 있다.
예 28은 예일 수 있고, 펌웨어의 기본 입력/출력 서비스들은 시스템 초기화 서비스를 더 포함할 수 있고; 시스템 초기화 서비스는 컴퓨팅 디바이스의 사전 부팅 단계 동안 캡슐을 처리할 수 있다.
예 29는 컴퓨팅을 위한 장치일 수 있고, 컴퓨팅을 위한 장치는: 컴퓨팅 디바이스의 메모리로의 액세스들을 제어하기 위한 수단- 제어하기 위한 수단은 데이터가 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하기 위한 수단, 및 컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 컴퓨팅 디바이스의 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 암호화 키를 재생성하기 위한 수단을 포함할 수 있음 -; 및 메모리의 하나 이상의 범위를 메모리의 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 구성하기 위한 수단을 포함한다.
예 30은 예 29일 수 있고, 구성하기 위한 수단은 하나 이상의 암호화 제외 영역 중 제1 암호화 제외 영역의 베이스 어드레스를 저장하기 위한 제1 저장 위치, 및 베이스 어드레스로부터 연장되는 제1 암호화 제외 영역의 범위를 효과적으로 정의하기 위해 어드레스 마스크를 저장하기 위한 제2 저장 위치를 구성하기 위한 수단을 포함할 수 있다.
예 31은 예 29일 수 있고, 구성하기 위한 수단은, 메모리의 하나 이상의 암호화 제외 영역을 제공하기 위해 메모리의 하나 이상의 범위를 확보하도록 또는 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 하나 이상의 미리 확보된 범위를 언셋하도록 하나 이상의 메모리 파라미터를 구성하기 위한 수단을 갖는 암호화를 제외하기 위한 하나 이상의 수단을 포함할 수 있다.
예 32는 예 31일 수 있고, 운영 체제로부터 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정하기 위해 암호화를 제외하기 위한 수단들 중 하나의 암호화를 제외하기 위한 수단을 포함하는, 장치를 리셋하기 위한 수단을 더 포함한다.
예 33은 예 32일 수 있고, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보 시, 장치를 부팅 단계로 진입시키기 위한 웜 스타트를 수행하고, 장치를 초기화하기 위한 장치를 리셋하기 위한 수단을 포함하는, 장치를 초기화하기 위한 수단을 더 포함한다.
예 34는 예 33일 수 있고, 장치를 초기화하기 위한 수단은 초기화 단계의 종료에서 호출시, 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 메모리의 확보된 하나 이상의 범위를 언셋하도록 하나 이상의 메모리 파라미터를 리셋하기 위한 암호화를 제외하기 위한 수단들 중 제2 수단을 포함할 수 있다.
예 35는 예들 31-34일 수 있고, 장치를 초기화하기 위한 수단은, 장치의 초기화 동안 호출시, 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 설정하기 위한 암호화를 제외하기 위한 수단들 중 제1 수단을 포함할 수 있다.
예 36은 예 31-34일 수 있고, 장치를 리셋하는 것의 일부로서, 운영 체제에 의해 생성된 캡슐을 암호화 영역으로부터 하나 이상의 암호화 제외 영역 중 하나 이상의 암호화 제외 영역으로 복사하기 위한 장치를 리셋하기 위한 수단을 더 포함한다.
예 37은 예 36일 수 있고, 장치의 사전 부팅 단계 동안 캡슐을 처리하기 위한 장치를 초기화하기 위한 수단을 더 포함한다.
본 개시내용의 사상 또는 범위를 벗어나지 않고 개시된 디바이스 및 관련 방법들의 개시된 실시예들에서 다양한 수정들 및 변경들이 이루어질 수 있음은 본 기술분야의 통상의 기술자에게 명백할 것이다. 따라서, 본 개시내용은, 이러한 수정들 및 변경들이 임의의 청구항들 및 그들의 등가물들의 범위 내에 속한다면 위에 개시된 실시예들의 수정들 및 변경들을 포괄하는 것으로 의도된다.

Claims (25)

  1. 컴퓨팅을 위한 장치로서,
    하나 이상의 프로세서, 및 메모리;
    상기 하나 이상의 프로세서에 의해 동작되는 운영 체제에 기본 입력/출력 서비스들을 제공하기 위해 상기 하나 이상의 프로세서 및 메모리와 결합된 펌웨어;
    상기 메모리로의 액세스를 제어하기 위해 상기 메모리와 결합된 메모리 제어기- 상기 메모리 제어기는 데이터가 상기 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하기 위한 암호화 엔진을 포함하고, 상기 암호화 엔진은 상기 하나 이상의 프로세서에 의해 동작되는 상기 운영 체제로부터 상기 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 상기 암호화 키를 재생성함 -; 및
    상기 메모리의 하나 이상의 범위를 하나 이상의 암호화 제외 영역으로서 확보하기 위해 하나 이상의 메모리 파라미터를 저장하기 위한 하나 이상의 저장 위치를 포함하는, 컴퓨팅을 위한 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 저장 위치는 상기 하나 이상의 암호화 제외 영역 중 제1 암호화 제외 영역의 베이스 어드레스를 저장하기 위한 제1 저장 위치, 및 상기 베이스 어드레스로부터 연장되는 상기 제1 암호화 제외 영역의 범위를 효과적으로 정의하기 위해 어드레스 마스크를 저장하기 위한 제2 저장 위치를 포함하는, 컴퓨팅을 위한 장치.
  3. 제1항에 있어서,
    상기 하나 이상의 저장 위치는 상기 메모리 제어기의 하나 이상의 레지스터를 포함하는, 컴퓨팅을 위한 장치.
  4. 제1항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은, 상기 메모리의 상기 하나 이상의 암호화 제외 영역을 제공하기 위해 상기 메모리의 상기 하나 이상의 범위를 확보하도록 또는 상기 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 상기 메모리의 하나 이상의 미리 확보된 범위를 언셋(unset)하도록 하나 이상의 메모리 파라미터를 구성하는 하나 이상의 암호화 제외 서비스를 포함하는, 컴퓨팅을 위한 장치.
  5. 제4항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함하며, 상기 시스템 리셋 서비스는 상기 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함하고, 상기 제1 암호화 제외 서비스는 상기 운영 체제로부터 상기 펌웨어의 상기 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보하도록 상기 하나 이상의 메모리 파라미터를 설정하는 것인, 컴퓨팅을 위한 장치.
  6. 제5항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함하고; 상기 시스템 리셋 서비스는, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보 시, 상기 장치를 부팅 단계로 진입시키기 위한 웜 스타트(warm start)를 수행하고, 상기 시스템 초기화 서비스를 호출하여 상기 장치를 초기화하는 것인, 컴퓨팅을 위한 장치.
  7. 제6항에 있어서,
    상기 시스템 초기화 서비스는 상기 하나 이상의 암호화 제외 서비스 중 제2 암호화 제외 서비스를 포함하고; 상기 제2 암호화 제외 서비스는, 상기 초기화 단계의 종료에서 호출시, 상기 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 상기 메모리의 상기 확보된 하나 이상의 범위를 언셋하도록 상기 하나 이상의 메모리 파라미터를 리셋하는 것인, 컴퓨팅을 위한 장치.
  8. 제4항 내지 제7항 중 어느 한 항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함하며, 상기 시스템 초기화 서비스는 상기 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함하고, 상기 제1 암호화 제외 서비스는 상기 장치의 초기화 동안 호출시, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보하도록 상기 하나 이상의 메모리 파라미터를 설정하는 것인, 컴퓨팅을 위한 장치.
  9. 제4항 내지 제7항 중 어느 한 항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함하며, 상기 시스템 리셋 서비스는, 상기 장치를 리셋하는 것의 일부로서, 상기 운영 체제에 의해 생성된 캡슐을 상기 암호화 영역으로부터 상기 하나 이상의 암호화 제외 영역 중 상기 하나 이상의 암호화 제외 영역으로 복사하는 것인, 컴퓨팅을 위한 장치.
  10. 제9항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 초기화 서비스를 더 포함하고; 상기 시스템 초기화 서비스는 상기 장치의 상기 사전 부팅 단계 동안 상기 캡슐을 처리하는 것인, 컴퓨팅을 위한 장치.
  11. 컴퓨팅을 위한 방법으로서,
    컴퓨팅 디바이스의 메모리 제어기에 의해, 상기 컴퓨팅 디바이스의 메모리로의 액세스들을 제어하는 단계- 제어하는 단계는 데이터가 상기 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하는 단계, 및 상기 컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 상기 컴퓨팅 디바이스의 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 상기 암호화 키를 재생성하는 단계를 포함함 -; 및
    상기 펌웨어의 기본 입력/출력 서비스들에 의해, 상기 메모리의 하나 이상의 범위를 상기 메모리의 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 구성하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 구성하는 단계는 상기 하나 이상의 암호화 제외 영역 중 제1 암호화 제외 영역의 베이스 어드레스를 저장하기 위한 제1 저장 위치, 및 상기 베이스 어드레스로부터 연장되는 상기 제1 암호화 제외 영역의 범위를 효과적으로 정의하기 위해 어드레스 마스크를 저장하기 위한 제2 저장 위치를 구성하는 단계를 포함하는, 방법.
  13. 제11항에 있어서,
    상기 구성하는 단계는, 상기 펌웨어의 상기 기본 입력/출력 서비스들의 하나 이상의 암호화 제외 서비스가, 상기 메모리의 상기 하나 이상의 암호화 제외 영역을 제공하기 위해 상기 메모리의 상기 하나 이상의 범위를 확보하도록 또는 상기 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 상기 메모리의 하나 이상의 미리 확보된 범위를 언셋하도록 상기 하나 이상의 메모리 파라미터를 구성하는 단계를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함하며, 상기 시스템 리셋 서비스는 상기 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함하고, 구성하는 단계는, 상기 제1 암호화 제외 서비스가 상기 운영 체제로부터 상기 펌웨어의 상기 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보하도록 상기 하나 이상의 메모리 파라미터를 설정하는 단계를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함하고; 상기 방법은, 상기 시스템 리셋 서비스가 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보 시, 상기 컴퓨팅 디바이스를 부팅 단계로 진입시키기 위한 웜 스타트를 수행하고, 상기 시스템 초기화 서비스를 호출하여 상기 컴퓨팅 디바이스를 초기화하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 시스템 초기화 서비스는 상기 하나 이상의 암호화 제외 서비스 중 제2 암호화 제외 서비스를 포함하고; 상기 방법은, 상기 제2 암호화 제외 서비스가 상기 초기화 단계의 종료에서 호출시, 상기 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 상기 메모리의 상기 확보된 하나 이상의 범위를 언셋하도록 상기 하나 이상의 메모리 파라미터를 리셋하는 단계를 더 포함하는, 방법.
  17. 제13항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 초기화 서비스를 포함하며, 상기 시스템 초기화 서비스는 상기 하나 이상의 암호화 제외 서비스 중 제1 암호화 제외 서비스를 포함하고, 구성하는 단계는, 상기 제1 암호화 제외 서비스가 상기 장치의 초기화 동안 호출시, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보하도록 상기 하나 이상의 메모리 파라미터를 설정하는 단계를 포함하는, 방법.
  18. 제13항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 리셋 서비스를 포함하며, 상기 방법은, 상기 시스템 리셋 서비스가 상기 컴퓨팅 디바이스를 리셋하는 단계의 일부로서, 상기 운영 체제에 의해 생성된 캡슐을 상기 암호화 영역으로부터 상기 하나 이상의 암호화 제외 영역 중 상기 하나 이상의 암호화 제외 영역으로 복사하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서,
    상기 펌웨어의 상기 기본 입력/출력 서비스들은 시스템 초기화 서비스를 더 포함하고; 상기 방법은, 상기 시스템 초기화 서비스가 상기 장치의 상기 사전 부팅 단계 동안 상기 캡슐을 처리하는 단계를 더 포함하는, 방법.
  20. 제11항 내지 제19항의 상기 방법들 중 어느 한 항의 방법을 실시하기 위해, 컴퓨팅 디바이스로 하여금 상기 컴퓨팅 디바이스의 프로세서에 의한 명령어들의 실행에 응답하여, 상기 프로세서에 의해 동작되는 운영 체제에 기본 입력/출력 서비스들을 제공하게 하는 명령어들을 포함하는, 하나 이상의 컴퓨터 판독가능 매체.
  21. 컴퓨팅을 위한 장치로서,
    컴퓨팅 디바이스의 메모리로의 액세스들을 제어하기 위한 수단- 제어하기 위한 수단은 데이터가 상기 메모리의 암호화 영역으로 저장되기 전에 암호화 키를 사용하여 데이터를 암호화하기 위한 수단, 및 상기 컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 동작되는 운영 체제로부터 상기 컴퓨팅 디바이스의 펌웨어의 사전 부팅 단계로 실행을 이전하는 리셋시 상기 암호화 키를 재생성하기 위한 수단을 포함함 -; 및
    상기 메모리의 하나 이상의 범위를 상기 메모리의 하나 이상의 암호화 제외 영역으로서 확보하도록 하나 이상의 메모리 파라미터를 구성하기 위한 수단을 포함하는, 컴퓨팅을 위한 장치.
  22. 제21항에 있어서,
    구성하기 위한 수단은, 상기 메모리의 상기 하나 이상의 암호화 제외 영역을 제공하기 위해 상기 메모리의 상기 하나 이상의 범위를 확보하도록 또는 상기 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 상기 메모리의 하나 이상의 미리 확보된 범위를 언셋하도록 상기 하나 이상의 메모리 파라미터를 구성하기 위한 수단을 갖는 암호화를 제외하기 위한 하나 이상의 수단을 포함하는, 컴퓨팅을 위한 장치.
  23. 제22항에 있어서,
    상기 운영 체제로부터 상기 펌웨어의 상기 사전 부팅 단계로 실행을 이전하는 리셋의 시작 동안 호출시, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보하도록 상기 하나 이상의 메모리 파라미터를 설정하기 위해 암호화를 제외하기 위한 상기 수단들 중 하나의 암호화를 제외하기 위한 수단을 포함하는, 상기 장치를 리셋하기 위한 수단;
    상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보 시, 상기 장치를 부팅 단계로 진입시키기 위한 웜 스타트를 수행하고, 상기 장치를 초기화하기 위한 상기 장치를 리셋하기 위한 상기 수단을 포함하는, 상기 장치를 초기화하기 위한 수단을 더 포함하고;
    상기 장치를 초기화하기 위한 상기 수단은 상기 초기화 단계의 종료에서 호출시, 상기 하나 이상의 영역을 암호화로부터 더 이상 제외하지 않기 위해 상기 메모리의 상기 확보된 하나 이상의 범위를 언셋하도록 상기 하나 이상의 메모리 파라미터를 리셋하기 위한 암호화를 제외하기 위한 상기 수단들 중 제2 수단을 포함하는, 컴퓨팅을 위한 장치.
  24. 제22항 또는 제23항에 있어서,
    상기 장치를 초기화하기 위한 상기 수단은, 상기 장치의 초기화 동안 호출시, 상기 메모리의 하나 이상의 범위를 상기 하나 이상의 암호화 제외 영역으로서 확보하도록 상기 하나 이상의 메모리 파라미터를 설정하기 위한 암호화를 제외하기 위한 상기 수단들 중 제1 수단을 포함하는, 컴퓨팅을 위한 장치.
  25. 제22항 또는 제23항에 있어서,
    상기 장치를 리셋하는 것의 일부로서, 상기 운영 체제에 의해 생성된 캡슐을 상기 암호화 영역으로부터 상기 하나 이상의 암호화 제외 영역 중 상기 하나 이상의 암호화 제외 영역으로 복사하기 위한 상기 장치를 리셋하기 위한 수단; 및 상기 장치의 상기 사전 부팅 단계 동안 상기 캡슐을 처리하기 위한 상기 장치를 초기화하기 위한 수단을 더 포함하는, 컴퓨팅을 위한 장치.
KR1020187002154A 2015-06-24 2016-05-11 메모리 암호화 제외 방법 및 장치 KR20180011866A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/749,301 US20160378686A1 (en) 2015-06-24 2015-06-24 Memory encryption exclusion method and apparatus
US14/749,301 2015-06-24
PCT/US2016/031916 WO2016209395A1 (en) 2015-06-24 2016-05-11 Memory encryption exclusion method and apparatus

Publications (1)

Publication Number Publication Date
KR20180011866A true KR20180011866A (ko) 2018-02-02

Family

ID=57586099

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187002154A KR20180011866A (ko) 2015-06-24 2016-05-11 메모리 암호화 제외 방법 및 장치

Country Status (5)

Country Link
US (1) US20160378686A1 (ko)
EP (1) EP3314443A4 (ko)
KR (1) KR20180011866A (ko)
CN (1) CN107667356A (ko)
WO (1) WO2016209395A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10958990B2 (en) * 2017-05-03 2021-03-23 Intel Corporation Trusted platform telemetry mechanisms inaccessible to software
US11301261B2 (en) * 2019-10-22 2022-04-12 Dell Products L.P. System and method for displaying an image through a platform initialization process
CN114817936B (zh) * 2022-05-31 2024-06-25 苏州浪潮智能科技有限公司 基于异构内存的内存全加密管理方法、装置、设备及介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
KR100604828B1 (ko) * 2004-01-09 2006-07-28 삼성전자주식회사 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US8839000B2 (en) * 2009-03-23 2014-09-16 Hewlett-Packard Development Company, L.P. System and method for securely storing data in an electronic device
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
US8566574B2 (en) * 2010-12-09 2013-10-22 International Business Machines Corporation Secure encrypted boot with simplified firmware update
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US9025358B2 (en) * 2011-10-13 2015-05-05 Zeno Semiconductor Inc Semiconductor memory having both volatile and non-volatile functionality comprising resistive change material and method of operating
US8924952B1 (en) * 2012-06-27 2014-12-30 Amazon Technologies, Inc. Updating software utilizing multiple partitions
US20140010365A1 (en) * 2012-07-06 2014-01-09 Vincent Von Bokern Replaceable encryption key provisioning
US20150033034A1 (en) * 2013-07-23 2015-01-29 Gideon Gerzon Measuring a secure enclave

Also Published As

Publication number Publication date
EP3314443A4 (en) 2019-03-20
US20160378686A1 (en) 2016-12-29
EP3314443A1 (en) 2018-05-02
CN107667356A (zh) 2018-02-06
WO2016209395A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
CN109918919B (zh) 认证变量的管理
Lentz et al. Secloak: Arm trustzone-based mobile peripheral control
CN109726549B (zh) 用于采用处理器沙箱支持的不可信代码执行的技术
EP3646223B1 (en) Remote attestation for multi-core processor
US20150271139A1 (en) Below-OS Security Solution For Distributed Network Endpoints
US10474454B2 (en) System and method for updating a trusted application (TA) on a device
US20150270960A1 (en) System and method for deriving secrets from a master key bound to an application on a device
CN107567629B (zh) 在可信执行环境容器中的动态固件模块加载器
US10846408B2 (en) Remote integrity assurance of a secured virtual environment
US9183391B2 (en) Managing device driver cross ring accesses
US9824225B1 (en) Protecting virtual machines processing sensitive information
US10853086B2 (en) Information handling systems and related methods for establishing trust between boot firmware and applications based on user physical presence verification
AU2020235010B2 (en) Starting a secure guest using an initial program load mechanism
CN106462548B (zh) 固件传感器层
CN117882071A (zh) 到虚拟机中的硬件虚拟化tpm
EP1983460B1 (en) Apparatus and method for protecting system in virtualized environment
KR20180011866A (ko) 메모리 암호화 제외 방법 및 장치
WO2018085183A1 (en) Exclusive execution environment within a system-on-a-chip computing system
US11025594B2 (en) Secret information distribution method and device
JP6898519B2 (ja) 暗号化キーのセキュリティ
WO2019209893A1 (en) Operating system on a computing system
US20230146526A1 (en) Firmware memory map namespace for concurrent containers
US20210334122A1 (en) Processor control register configuration support
CN109937407B (zh) 用于smm传输监控器的扩展存储器