KR20210088004A - 애플리케이션마다 조정 가능한 보안 레벨들을 가진 프로세서들 - Google Patents

애플리케이션마다 조정 가능한 보안 레벨들을 가진 프로세서들 Download PDF

Info

Publication number
KR20210088004A
KR20210088004A KR1020217020459A KR20217020459A KR20210088004A KR 20210088004 A KR20210088004 A KR 20210088004A KR 1020217020459 A KR1020217020459 A KR 1020217020459A KR 20217020459 A KR20217020459 A KR 20217020459A KR 20210088004 A KR20210088004 A KR 20210088004A
Authority
KR
South Korea
Prior art keywords
register
mode
processor
security
setting
Prior art date
Application number
KR1020217020459A
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 KR20210088004A publication Critical patent/KR20210088004A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • 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
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세서들에서 조정 가능한 보안 레벨들과 관련된 방법들, 시스템들, 및 장치들이 설명된다. 프로세서는 기능 유닛들 및 기능 유닛들의 보안 동작들을 제어하도록 구성된 레지스터를 가질 수 있다. 레지스터는 레지스터가 제 1 설정을 포함할 때 제 1 모드의 보안 동작들로 동작하도록 기능 유닛들을 구성하며; 레지스터는 레지스터가 제 2 설정을 포함할 때 제 2 모드의 보안 동작들로 동작하도록 기능 유닛들을 구성한다(예컨대, 강화된 실행 속도를 위해 보안 동작 회로의 세트를 스킵/바이패싱).

Description

애플리케이션마다 조정 가능한 보안 레벨들을 가진 프로세서들
관련 출원
본 출원은 2018년 12월 5일에 출원된 "애플리케이션들마다 조정 가능한 보안 레벨들을 가진 프로세서들"이라는 제목의 미국 특허 출원 일련 번호 제16/210,605호에 대한 우선권을 주장하며, 그 전체 개시는 본 출원에서 참조로서 통합된다.
기술 분야
본 출원에서 개시된 적어도 몇몇 실시예들은 전반적으로 컴퓨터 아키텍처 및 더 구체적으로, 이에 한정되지 않지만, 프로세서들의 보안 및 성능에 관한 것이다.
통상적인 컴퓨터 프로세서는 프로세싱을 위해 컴퓨터 시스템의 메인 메모리로부터 지시들 및/또는 데이터를 수신한다. 지시들 및/또는 데이터는 프로세서를 위해 캐싱될 수 있다. 몇몇 인스턴스들에서, 메인 메모리 또는 프로세서 캐시에서의 콘텐츠로 허가되지 않은 액세스가 이루어질 수 있다. 예를 들어, 동일한 다이 상에 형성된 다수의 프로세서들 또는 프로세싱 코어들은 메인 메모리를 공유할 수 있다. 하나의 프로세서 또는 프로세싱 코어는 메모리 공유 및/또는 캐시 코히어런스 프로토콜을 통해 공유 메인 메모리 및/또는 프로세서 캐시를 거쳐 또 다른 프로세서 또는 프로세싱 코어를 위한 콘텐츠를 액세스할 수 있다.
예를 들어, 추측 실행은, 이러한 지시들이 실행되어야 하는지 여부에 대한 결정 결과가 이용 가능하기 전에, 이러한 지시들이 몇몇 조건들하에서 실행될 필요가 있다는 추측에 기초하여 프로세서가 하나 이상의 지시들을 실행하는 컴퓨팅 기술이다. 추측 실행은 콘텐츠로의 허가되지 않은 액세스가 이루어질 수 있는 보안 취약성들을 야기할 수 있다. 컴퓨터 프로세서들에서 보안 취약성들의 예들은 2018년 공개된 멜트다운(Meltdown) 및 스펙터(Spectre)를 포함한다. 멜트다운은 로그 프로세스가 허가 없이 모든 메모리를 판독하도록 허용하는 하드웨어 취약성이다.
실시예들은 수반된 도면들의 도들에서 예로서 제한 없이 예시되며 여기에서 유사한 참조들은 유사한 요소들을 나타낸다.
도 1은 일 실시예에 따른 그것들의 실행을 위해 애플리케이션에 의해 또는 그것을 위해 구성 가능한 보안 레벨 레지스터를 가진 프로세서를 도시한다.
도 2는 일 실시예에 따른 프로세서에서 데이터 스크램블링 동작들을 제어하는 보안 레벨 레지스터의 예를 도시한다.
도 3은 일 실시예에 따른 프로세서에서 데이터 경로들을 제어하는 보안 레벨 레지스터의 또 다른 예를 도시한다.
도 4는 일 실시예에 따른 프로세서에서 데이터 경로들을 제어하는 보안 레벨 레지스터의 추가 예를 도시한다.
도 5는 일 실시예에 따른 프로세서에서 보안 동작들을 구성하기 위한 방법을 도시한다.
도 6은 도 5의 방법이 구현될 수 있는 컴퓨팅 시스템을 도시한다.
본 개시는 컴퓨터 프로세서에서 보안 및 성능의 균형을 이루기 위한 기술들을 포함한다.
로직 회로들은 컴퓨터 프로세서의 보안을 강화하기 위해 컴퓨터 프로세서에 부가될 수 있다. 그러나, 보안을 개선하기 위해 이루어진 이러한 배열들은 컴퓨터 프로세서의 성능을 저하시킬 수 있다. 그 결과, 개선된 보안을 갖고 구성된 컴퓨터 프로세서는 보안 개선들이 없는 컴퓨터 프로세서보다 낮은 성능 레벨을 가질 수 있다.
일반적으로, 동일한 컴퓨터 프로세서상에서 실행되도록 프로그램된 상이한 애플리케이션들은 상이한 보안 요건들을 가질 수 있다. 몇몇 애플리케이션들은 임의의 정보, 데이터, 및/또는 지시 실행 상태로의 허가되지 않은 액세스를 제거하거나, 또는 최대 정도로 감소시키기 위해 높은 보안 레벨들을 요구할 수 있다. 그러나, 다른 애플리케이션들은 이러한 높은 보안 레벨을 요구하지 않을 수 있다.
본 개시에서, 컴퓨터 프로세서는 성능 및 보안 사이에서 상이한 트레이드-오프들을 위해 구성된 상이한 모드들의 동작들을 갖도록 구성된다. 컴퓨터 프로그램의 지시들의 세트는 주어진 데이터 세트로부터 동일한 실행 결과를 얻기 위해 컴퓨터 프로세서의 보안 모드들 중 임의의 것에서 실행될 수 있다. 그러나, 하나의 모드에서 지시들의 세트를 실행하는 것은 강화된 보안 보호를 제공할 수 있지만(예컨대, 성능의 비용으로), 또 다른 모드에서 동일한 세트의 지시들을 실행하는 것은 강화된 성능/속도를 제공할 수 있다(예컨대, 감소된 보안 보호를 갖고). 따라서, 지시들의 세트의 사용자들 및/또는 프로그래머들은 특정한 컴퓨터 프로그램을 위해 및/또는 컴퓨터 프로그램의 실행의 특정한 인스턴스를 위해 최적화되는 실행 모드를 선택하기 위한 옵션들을 제공받는다. 몇몇 인스턴스들에서, 컴퓨터 시스템의 운영 시스템은 규칙들의 세트에 따라(예컨대, 프로그램을 구동하는 사용자의 아이덴티티에 기초하여) 보안 레벨을 선택할 수 있다.
바람직하게는, 컴퓨터 프로세서가 지시들의 세트를 실행하는 보안 모드는 프로그램의 속성, 프로그램의 가상 어드레스, 또는 프로그램의 실행의 인스턴스에 대한 설정 또는 선호에 기초하여 프로그램의 지시들을 위해 선택될 수 있다. 따라서, 도 1에 예시된 바와 같이, 컴퓨터 프로세서가 제 1 프로그램의 지시들을 실행하고 있을 때, 컴퓨터 프로세서는 제 1 보안 모드(예컨대, 강화된 보안 모드를 위해 구성된)로 구동하도록 동적으로 구성되며; 컴퓨터 프로세서가 제 2 프로그램의 지시들을 실행하고 있을 때, 컴퓨터 프로세서는 제 2 보안 모드(예컨대, 강화된 성능을 위해 구성된)로 구동하도록 동적으로 구성될 수 있다.
도 1은 일 실시예에 따른 실행을 위해 애플리케이션들(예컨대, 135, ..., 136)에 의해 또는 그것을 위해 구성 가능한 보안 레벨 레지스터(121)를 가진 프로세서(101)를 도시한다.
도 1의 프로세서(101)는 기능 유닛들(123)(예컨대, 실행 유닛들, 제어 로직)의 세트를 갖는다. 기능 유닛들(123)에서 구성된 보안 동작들은 보안 레벨 레지스터(121)에서 콘텐츠에 의해 조정될 수 있다.
예를 들어, 보안 레벨 레지스터(121)는 고-성능 모드를 식별하는 설정을 포함할 수 있다. 이러한 설정이 보안 레벨 레지스터(121)에 포함될 때, 기능 유닛들(123)은 강화된 성능 레벨을 위해 보안 동작들을 완화하도록 동적으로 구성된다.
예를 들어, 보안 레벨 레지스터(121)는 대안적으로 고-보안 모드를 식별하는 설정을 포함할 수 있다. 이러한 설정이 보안 레벨 레지스터(121)에 포함될 때, 기능 유닛들(123)은 강화된 보안 레벨을 위해 보안 동작들을 엄격하게 하도록 동적으로 구성된다.
선택적으로, 보안 레벨 레지스터(121)는 복수의 미리 정의된 레벨 표시자들로부터 선택된 레벨 표시자를 저장하도록 구성될 수 있다. 미리 정의된 레벨 표시자들의 각각은 기능 유닛들(123)이 보안-성능 트레이드-오프들의 특정한 조합을 구현하게 한다.
대안적으로, 보안 레벨 레지스터(121)는 보안 피처 선택기들의 세트를 포함할 수 있으며; 보안 피처들의 각각은 하나 이상의 파라미터들을 사용하여 개별적으로/별도로 선택/구성될 수 있다. 보안 레지스터는 참조된 오브젝트의 속성들(예컨대, 도 2에 예시된 메모리 어드레스 레지스터(169)를 통해 참조된 바와 같이)에 기초하여 컴퓨터 시스템의 운영 시스템에 의해 및/또는 프로세서(101)에 의해 설정될 수 있다. 몇몇 인스턴스들에서, 컴퓨터 시스템은 보안 레벨 레지스터(121)를 수정하거나 또는 액세스하도록 컴퓨터 프로그램의 사용자에게 특권을 제공하지 않는다.
도 1의 프로세서(101)는 프로세싱 및 실행을 위해 데이터 및 지시들을 메모리(131)로부터 프로세서(101)의 내부 캐시(107)로 로딩하도록 구성된 메모리 관리 유닛(MMU)(125)을 갖는다. 도 2 및 도 6에 예시된 바와 같이, 메모리(131)는 메모리 디바이스(105), 외부 메모리(103), 또는 저장 디바이스(104)일 수 있다. 일반적으로, 애플리케이션(135 또는 136)의 지시들은 프로세서(101)의 기능 유닛들(123)에 의한 실행을 위해 MMU(125)에 의해 내부 캐시(107)로 로딩될 수 있다. 각각의 지시들의 데이터/피연산자들은 각각의 지시들에 의한 프로세싱을 위해 레지스터들(111)로 로딩될 수 있으며; 실행 결과들은 처음에 레지스터들(111)에 위치될 수 있다.
바람직하게는, 보안 레벨 레지스터(121)는 애플리케이션들(예컨대, 135, ..., 136)의 보안 선호 설정들(예컨대, 137, ..., 138)에 기초하여 상이한 애플리케이션들(예컨대, 135, ..., 136)의 실행을 위해 상이하게 구성될 수 있다. 예를 들어, 하나의 보안 선호 설정들(예컨대, 137)은 감소된 성능을 갖고 고 보안 모드에서 프로세서(101)를 구성하도록 보안 레벨 레지스터(121)에서 사용될 수 있으며; 또 다른 보안 선호 설정들(예컨대, 137)은 완화된 보안 동작들을 갖고 고 성능 모드에서 프로세서(101)를 구성하도록 보안 레벨 레지스터(121)에서 사용될 수 있다.
예를 들어, 애플리케이션 A(135)는 보안 선호 설정 A(137)를 가질 수 있으며; 애플리케이션 B(136)는 상이한 보안 선호 설정 B(138)를 가질 수 있다. 애플리케이션 A(135)가 실행을 위해 프로세서(101)의 내부 캐시(107)에 로딩될 때, 보안 레벨 레지스터(121)는 보안 선호 설정 A(137)를 포함하도록 구성되며; 애플리케이션 B(136)가 실행을 위해 프로세서(101)의 내부 캐시(107)에 로딩될 때, 보안 레벨 레지스터(121)는 보안 선호 설정 B(138)를 포함하도록 구성된다. 보안 레벨 레지스터(121)를 구성하기 위한 동작들은 컴퓨터 시스템의 운영 시스템에 의해 프로그램(예컨대, 135 또는 136)의 실행을 시작하는 부분으로서 수행될 수 있다. 일반적으로, 프로그램(예컨대, 135 또는 136)이 시작될 때, 다양한 레지스터들이 운영 시스템에 의해 초기화되고; 미리 결정된 규칙들의 세트를 사용하여, 운영 시스템이 보안 레벨 레지스터(121)의 콘텐츠를 결정할 수 있다(예컨대, 프로그램(예컨대, 135 또는 136)을 구동하는 사용자의 아이덴티티, 및/또는 프로그램(예컨대, 135 또는 136)의 보안 선호 설정에 기초하여).
몇몇 구현들에서, 애플리케이션들(135, ..., 136)은 그것들의 보안 기준 설정들(137, ..., 138)을 보안 레벨 레지스터(121)로 로딩할 책임이 있는 지시들을 갖도록 프로그램될 수 있다.
다른 구현들에서, 보안 선호 설정들(137, ..., 138)은 각각의 애플리케이션들(135, ..., 136)의 보안 속성들로서 구성된다. 애플리케이션(예컨대, 135 또는 136)의 임의의 지시가 프로세서(101)에 의해 실행되고 있을 때, 프로세서(101) 및/또는 컴퓨터 시스템의 운영 시스템은 각각의 보안 선호 설정(예컨대, 137 또는 138)을 보안 레벨 레지스터(121)에 로딩하도록 구성된다. 예를 들어, 보안 속성들은 각각의 애플리케이션들(135, ..., 136)의 가상 메모리 어드레스들에 기초하여 식별될 수 있다.
몇몇 인스턴스들에서, 동일한 애플리케이션(예컨대, 135, 또는 136)의 상이한 사용자들은 상이한 보안 요건들을 가질 수 있다. 따라서, 보안 선호 설정들(예컨대, 137, 또는 138)은 각각의 애플리케이션(예컨대, 135, 또는 136)의 구동 시간 환경 파라미터로서 구성될 수 있다. 구동 시간 환경 파라미터는 컴퓨터 시스템의 운영 시스템에 의해 관리되며 애플리케이션(예컨대, 135, 또는 136)의 하나의 실행 인스턴스로부터 동일한 애플리케이션(예컨대, 135, 또는 136)의 또 다른 실행 인스턴스로 변경될 수 있다.
프로세서(101)에서의 실행이 애플리케이션 A(135)의 지시에서 애플리케이션 B(136)의 지시로 스위칭할 때, 보안 레벨 레지스터(121)의 콘텐츠는 보안 선호 설정 A(137)에서 보안 선호 설정 B(138)로 변경되며; 기능 유닛들(123)의 동작의 보안 모드는 보안 레벨 레지스터(121)에서의 콘텐츠에 따라 변경된다.
일반적으로, 애플리케이션들(135, ..., 136)은 상이한 보안 선호 설정들(137, ..., 138)을 가진 별개의 프로그램들일 수 있다. 몇몇 인스턴스들에서, 애플리케이션들(135, ..., 136)은 상이한 보안 선호 설정들(137, ..., 138)을 가진 별개의 루틴들일 수 있으며; 하나의 루틴은 서비스들을 위한 또 다른 루틴을 호출할 수 있다.
도 1의 보안 레벨 레지스터(121)는 개개의 애플리케이션들(135, ..., 136)이 보안 및 성능의 선호된 밸런스 포인트에서 실행되도록 허용한다.
예를 들어, 컴퓨터 프로세서(101)는 강화된 보안을 위해 일 모드로 내부 캐시(107)에서 스크램블링 형태로 데이터에 대해 동작하며, 강화된 성능을 위해 또 다른 모드로 내부 캐시(107)에서 언스크램블링 데이터에 대해 동작하도록 구성될 수 있으며; 보안 레벨 레지스터(121)는 내부 캐시(107)에서의 데이터가 스크램블링되는지 여부를 나타낸다.
예를 들어, 컴퓨터 프로세서(101)는 강화된 보안을 위해 일 모드로 내부 캐시(107)에서 긴 스크램블 키를 사용하여 안전하게 된 데이터에 대해 동작하며, 강화된 성능을 위해 또 다른 모드로 내부 캐시(107)에서 짧은 스크램블 키를 사용하여 안전하게 된 데이터에 대해 동작하도록 구성될 수 있으며; 보안 레벨 레지스터(121)는 보안 동작에서 사용된 스크램블 키들의 길이를 나타낸다. 언스크램블러(113) 및 스크램블러(112)는 둘 모두가 짧고 긴 스크램블 키들을 사용하여 프로세싱하는 것이 가능하다. 예를 들어, 짧은 스크램블 키는 64-비트 워드를 스크램블링하기 위해 각각 64-비트 워드의 제 1 및 제 2 절반에 적용되는 단지 32 랜덤 비트들만을 가질 수 있으며; 대안적으로, 긴 스크램블 키는 전체 64-비트 워드에 적용되는 64 랜덤 비트들을 가질 수 있다.
또 다른 예에서, 컴퓨터 프로세서(101)는 강화된 보안을 위해 일 모드로 내부 캐시(107)에서 계산-집약적 암호화 키를 사용하여 안전하게 된 데이터에 대해 동작하며, 강화된 성능을 위해 또 다른 모드로 내부 캐시(107)에서 계산-효율적 스크램블 키를 사용하여 안전하게 된 데이터에 대해 동작하도록 구성될 수 있다.
추가 예에서, 컴퓨터 프로세서(101)는 강화된 보안을 위해 일 모드로 내부 캐시(107)에서 스크램블 키 및 반전 키를 사용하여 안전하게 된 데이터에 대해 동작하고, 또 다른 모드로 내부 캐시(107)에서 스크램블 키를 사용하여 안전하게 된 데이터에 대해 동작하고, 또 다른 모드로 내부 캐시(107)에서 반전 키를 사용하여 안전하게 된 데이터에 대해 동작하며, 감소된 보안 보호를 가진 추가의 강화된 성능을 위해 추가 모드로 내부 캐시(107)에서 언스크램블링 데이터에 대해 동작하도록 구성될 수 있다.
예를 들어, 스크램블 키들은 비트들의 값들을 변경하지 않고 데이터 워드 내에서 비트들의 위치들을 재배열하기 위해 사용될 수 있다. 원래 데이터 워드의 비트들의 위치들을 섞은 후, 스크램블링 데이터 워드가 생성된다. 스크램블 키들(또는 대응하는 언스크램블 키들) 없이, 원래 데이터 워드는 스크램블링 데이터 워드로부터 복구될 수 없다.
예를 들어, 반전 키는 반전 키에 의해 식별된 선택된 위치들에서 데이터 워드의 비트 값을 선택적으로 반전시키기 위해 사용될 수 있다. 원래 데이터 워드의 비트 값들을 선택적으로 반전시킨 후, 안전하게 된 데이터 워드가 생성된다. 반전 키들 없이, 원래 데이터 워드는 안전하게 된 데이터 워드로부터 복구될 수 없다.
예를 들어, 암호화 키는 미리 결정된 암호화 알고리즘을 사용하여 원래 데이터 워드의 비트들의 값들을 조합하고 이를 암호화된 데이터 워드의 비트들의 값들로 변환하기 위해 사용될 수 있다. 암호화는 암호화된 데이터 워드를 복호화하기 위해 동일한 암호화 키를 요구하는 대칭 암호화 알고리즘, 또는 암호화된 데이터 워드를 복호화하기 위해 상이한 복호화 키를 요구하는 비대칭 암호화 알고리즘을 사용하여 수행될 수 있으며, 여기에서 복호화 키는 암호화 키로부터 식별하기 어려울 수 있다. 상이한 암호화 알고리즘들은 성능 및 보안에서 상이한 트레이드-오프들을 갖는다.
일반적으로, 컴퓨터 프로세서(101)는 보안 레벨 레지스터(121)를 통해 선택 가능한 다양한 보안 모드들을 위한 다양한 조합들로 보안 동작들을 수행하도록 구성될 수 있다. 예를 들어, 데이터 아이템은 원하는 레벨의 성능-보안 밸런스를 위해 상이한 암호화 알고리즘을 통해 구현된 스크램블 키들, 반전 키들, 및/또는 암호화 키들을 통해 프로그램(예컨대, 135 또는 136)을 위한 캐시(107) 및 메모리(131)에서 안전하게 될 수 있거나, 또는 최소화된 성능 영역을 위해 위험을 벗어나(예컨대, 스크램블링, 반전, 암호화 없이) 캐시(107) 및 메모리(131)에 저장될 수 있다.
예를 들어, 프로세서(101) 내에서 데이터 스크램블링에 관련된 보안 동작들은 도 2 및/또는 도 3에 예시된 방식들로 보안 레벨 레지스터(121)에 의해 제어될 수 있다.
도 2는 일 실시예에 따른 프로세서(101)에서 데이터 스크램블링 동작들을 제어하는 보안 레벨 레지스터(121)의 예를 도시한다. 예를 들어, 도 2의 프로세서(101)는 도 1의 프로세서(101)의 구현예일 수 있다.
도 2는 데이터 보안을 위한 프로세서(101)에서의 키 저장소(167)를 도시한다.
도 2에서, 프로세서(101)는 전통적인 컴퓨터 프로세서 기술들이 언스크램블링 구역(163)에서 계산들을 수행하기 위해 사용될 수 있도록 언스크램블링 형태로 데이터(117)에 대해 계산을 수행하기 위한 언스크램블링 구역(163)을 갖는다. 다른 프로세서들(예컨대, 102)은 저장 디바이스(104), 메모리 디바이스(105), 외부 캐시(103), 및/또는 내부 캐시(107)와 같은, 프로세서(101)의 특정한 리소스들로의 액세스를 제공받을 수 있다. 그러나, 이들 프로세서들(예컨대, 102)은 프로세서(101)의 언스크램블링 구역(163)을 액세스하는 것이 방지된다. 예를 들어, 프로세서들(101 및 102)은 동일한 실리콘 다이 상에 형성되며 및/또는 동일한 집적 회로 칩에 패키징된 상이한 프로세싱 코어들일 수 있다. 다른 예들에서, 프로세서들(101 및 102)은 상이한 집적 회로 칩들에 패키징되며 버스, 상호접속, 네트워크 등과 같은, 통신 연결을 통해 연결될 수 있다.
예를 들어, 악의적인 프로그램이 프로세서(102)에서 구동될 수 있으며 프로세서(101)에 의해 프로세싱될 콘텐츠로 허가되지 않은 액세스를 하려고 시도할 수 있다(예컨대, 멜트다운 및 스펙터와 같은 보안 취약성들을 사용하여). 허가되지 않은 액세스에 대해 보호하기 위해, 데이터(109)는 언스크램블링 구역(163) 밖 위치들에서 스크램블링 형태로 저장될 수 있다. 예를 들어, 데이터(109)는 저장 디바이스(104)에서, 컴퓨터의 메모리 디바이스(105)에서, 및 프로세서들(101 및 102) 간에 공유된 외부 캐시(103)에서 스크램블링 형태로 저장된다. 뿐만 아니라, 데이터(109)는 프로세서(102)가 캐시 코히어런스 프로토콜을 통해 내부 캐시(107)를 액세스할 수 있을 때, 프로세서(101)의 내부 캐시(107)와 같은, 프로세서(101)의 스크램블링 구역(161)에서 스크램블링 형태로 저장될 수 있다.
도 2에서, 프로세서(101)의 언스크램블러(113)는 프로세서(101)가 스크램블링 데이터(109)를 프로세싱하도록 허가되는 지시들을 구동할 때 스크램블링 데이터(109)를 언스크램블링 데이터(117)로 변환한다. 언스크램블링 데이터(117)의 존재는 언스크램블링 구역(163) 내에 국한된다. 또 다른 프로세서(102)가 프로세서(101)의 언스크램블링 구역(163)을 액세스하는 것이 방지되므로, 프로세서(102)에서 구동하는 악의적인 프로그램은 언스크램블링 데이터(117)로 허가되지 않은 액세스를 하는 것이(예컨대, 멜트다운 및 스펙터와 같은 보안 취약성들을 통해) 방지될 수 있다.
도 2에서, 프로세서(101)는 키 저장소(167) 및 보안 레벨 레지스터(121)를 포함하는 보안 구역(165)을 가진다. 키 저장소(167)는 다양한 데이터 오브젝트들에 대한 언스크램블러(113) 및 스크램블러(112)를 위한 키들을 가진다. 오브젝트들의 각각의 키들로의 액세스 없이, 프로세서들(101 및 102)은 스크램블링 데이터(109)로부터 언스크램블링 데이터(117)를 복구할 수 없다.
도 2에서, 키 저장소(167)로의 액세스는 언스크램블링 구역(163) 내에서 수행될 동작들을 위한 스크램블링 데이터(109)를 로딩하기 위해 사용된 가상 어드레스(195)에 적어도 부분적으로 기초한다.
예를 들어, 가상 어드레스(195)는 오브젝트 ID(199), 오브젝트 유형(198), 및/또는 오프셋(196)과 같은 필드들을 포함할 수 있다.
예를 들어, 가상 메모리 어드레스(195)는 미리 결정된 폭(미리 결정된 비트들)을 가지며 프로세서(101)의 메모리 어드레스 레지스터(169)에 저장될 수 있다. 가상 어드레스(195)는 오브젝트 ID(199)를 나타내는 부분 및 오브젝트 ID(199)에 의해 표현된 오브젝트 내에서의 오프셋(196)을 나타내는 부분을 포함할 수 있다.
예를 들어, 가상 어드레스(195)에 위치된 오브젝트는 지시들의 세트 또는 루틴일 수 있으며; 가상 어드레스(195)의 오브젝트 ID(199)는 액세스 권한들과 같은, 지시 및/또는 루틴의 특정한 속성들을 식별하기 위해 사용될 수 있다.
예를 들어, 가상 어드레스(195)에 위치된 오브젝트는 데이터 파일, 데이터 세트, 또는 데이터 아이템일 수 있으며; 가상 어드레스(195)의 오브젝트 ID(199)는 데이터의 액세스 권한들을 식별하기 위해 사용될 수 있다.
몇몇 인스턴스들에서, 오브젝트 이름 서버는 오브젝트 ID(199)를 통해 식별된 오브젝트의 속성들을 저장하도록 구성된다. 프로세서들(101 및 102)은 액세스 제어를 위한 속성들을 얻기 위해 오브젝트 이름 서버에 질의할 수 있다.
몇몇 인스턴스들에서, 미리 결정된 값(예컨대, 0)의 정적 오브젝트 ID는 운영 시스템(104)의 커널 오브젝트를 나타내기 위해 사용될 수 있다. 따라서, 메모리 어드레스에서 특정된 정적 오브젝트 ID는 오브젝트 이름 서버와 통신할 필요 없이 특정한 액세스 제한들을 식별하기 위해 사용될 수 있다. 실행을 위한 지시들을 로딩하기 위해 컴퓨터 프로세서들에 대한 메모리 어드레스들에서 정적 오브젝트 ID들의 몇몇 세부사항들 및 예들은 2018년 7월 6일에 출원되고 "오브젝트-기반 메모리 액세스에서의 정적 식별들"이라는 제목의 미국 특허 출원 일련 번호 제16/028,840호에서 발견될 수 있으며, 그 출원의 전체 개시는 본 출원에서 참조로서 통합된다.
몇몇 인스턴스들에서, 메모리 어드레스의 가상 메모리 어드레스(195) 및/또는 오브젝트 ID(예컨대, 199)는 오브젝트 유형(198)을 나타내는 부분을 포함할 수 있다. 예를 들어, 0 내지 3의 값의 오브젝트 유형(198)은 운영 시스템의 커널 오브젝트를 식별하기 위해 사용될 수 있다. 예를 들어, 4 내지 5의 값의 오브젝트 유형(198)은 오프셋이 상이한 폭들의 어드레스임을 특정하기 위해 사용될 수 있다(예컨대, 64-비트 어드레스 또는 32-비트 어드레스는 128비트를 가진 메모리 어드레스 내에 포함된다). 예를 들어, 6 내지 7의 값의 오브젝트 유형(198)은 오브젝트 ID의 미리 결정된 부분이 분할된 전역적 어드레스 공간(PGAS)에서의 오브젝트 또는 로컬 오브젝트의 식별자로서 해석될 것임을 특정하기 위해 사용될 수 있다. 예를 들어, 32의 값의 오브젝트 유형(198)은 오브젝트 ID의 남아있는 부분이 서버(예컨대, 197)에서 정의된 오브젝트의 식별자로서 해석될 것임을 특정하기 위해 사용될 수 있다.
오브젝트 유형(198) 및/또는 오브젝트 ID(199)는 액세스 특권들, 구동 시간 환경 파라미터들, 보안 선호 설정들(예컨대, 137, ..., 138)을 결정하기 위해 선택적으로 사용될 수 있다.
도 2에서, 오브젝트 ID(199)는 오브젝트 ID(199)에 의해 표현된 오브젝트에 대한 키를 검색하도록 키 저장소(167)를 액세스하기 위해 사용될 수 있다. 따라서, 언스크램블링 구역(163)이 가상 어드레스(195)를 통해, 스크램블링 데이터(109)를 프로세싱을 위해 언스크램블링 구역(163)으로 로딩하도록 허가될 때, 언스크램블러(113)를 위한 키는 스크램블링 데이터(109)로부터 언스크램블링 데이터(117)를 생성하기 위해 키 저장소(167)로부터 검색되거나 또는 획득될 수 있다.
언스크램블링 데이터(117)가 언스크램블링 구역(163)을 떠날 때(예컨대, 계산 결과로서 및/또는 오브젝트 ID(199)에 의해 표현된 오브젝트의 부분으로서 가상 어드레스(195)에 저장되도록), 스크램블러(112)는 언스크램블링 데이터(117)를 스크램블링 데이터(109)로 변환한다. 언스크램블링 데이터(117)의 위치들 및 존재의 지속 기간을 감소시킴으로써, 컴퓨터 시스템의 데이터 보안이 개선된다.
오브젝트 ID(199)는 또한 오브젝트 ID(199)에 의해 표현된 오브젝트의 보안 선호 설정들(예컨대, 137, ..., 138)을 식별하며 키 저장소(167)의 동작들을 제어하도록 오브젝트의 보안 선호 설정들(예컨대, 137, ..., 138)을 적용하기 위해 사용될 수 있다.
예를 들어, 보안 레벨 레지스터(121)는 언스크램블러(113) 및 스크램블러(112)에서 사용된 스크램블 키들의 길이를 제어할 수 있다. 더 짧은 길이의 스크램블 키들이 사용될 때, 스크램블링/언스크램블링 동작들의 성능 영향은 감소될 수 있지만, 스크램블링/언스크램블링을 통해 제공된 보안 보호가 또한 감소된다. 더 긴 길이의 스크램블 키들이 사용될 때, 스크램블링/언스크램블링 동작들의 성능 영향은 증가될 수 있지만, 스크램블링/언스크램블링을 통해 제공된 보안 보호가 또한 개선된다.
몇몇 인스턴스들에서, 도 3에 추가로 예시되는 바와 같이, 하나의 오브젝트는 스크램블러(112) 및 언스크램블러(113)에서 미리 결정된 길이의 키들을 사용하는 보안 선호 설정(예컨대, 137)을 가질 수 있지만, 또 다른 오브젝트는 내부 캐시(107)에서 언스크램블링 데이터를 사용하고 스크램블러(112) 및 언스크램블러(113)를 바이패스하는 보안 선호 설정(예컨대, 137)을 가질 수 있다.
일반적으로, 언스크램블링 데이터(117)는 지시, 피연산자, 및/또는 지시를 실행하는 실행 유닛(115)의 결과일 수 있다. 언스크램블링 구역(163)은 스크램블링 피연산자들을 언스크램블링 구역(163)으로 로딩하기 위해 가상 어드레스를 저장하기 위한 레지스터, 언스크램블링 구역(163)으로부터의 스크램블링 결과들을 내보내기 위해 가상 어드레스를 저장하기 위한 어드레스, 및/또는 스크램블링 지시들을 언스크램블링 구역(163)으로 로딩하기 위해 가상 어드레스를 저장하기 위한 레지스터(예컨대, 프로그램 카운터)를 포함할 수 있다.
예를 들어, 언스크램블링 구역(163)은 프로그램 카운터, 프로그래머 가시적 레지스터 파일들, 및/또는 메모리 어드레스 레지스터를 포함할 수 있다. 프로세서(101)의 언스크램블링 구역(163)의 바깥쪽에서(예컨대, 별개의 프로세싱 코어와 같은, 또 다른 프로세서(102)에서) 구동하는 프로그램들은 일반적으로 프로세서(101)의 언스크램블링 구역(163)을 액세스하는 것이 방지되지만, 이러한 외부 프로그램들은 콘텐츠가 스크램블링 형태로 있는 캐시들(예컨대, 103 및/또는 107) 및 메인 메모리(예컨대, 105)를 액세스할 수 있다.
실행 유닛들(예컨대, 115)은 레지스터들에 저장된 피연산자들에 대한 동작들(예컨대, 산술 연산들)을 수행하며 레지스터들에서 결과들을 생성할 수 있다. 피연산자들 및 결과들에 대한 이러한 레지스터들은 실행 유닛들(예컨대, 115)이 언스크램블링 형태로 동작하며 데이터를 생성하도록 언스크램블링 구역(163)에서 구성될 수 있으며; 그러므로, 언스크램블링 구역(163)의 밖에서 스크램블링하는 것은 실행 유닛들(예컨대, 115)의 동작들 및/또는 효율에 영향을 주지 않는다.
프로그램 카운터는 다음 지시를 실행하기 위해 1만큼 그 안에 저장된 어드레스를 증가시키거나, 또는 주어진 브랜치 어드레스에서 지시를 실행하기 위해 브랜치 어드레스를 할당받을 수 있다. 프로그램 카운터는 또한 그 동작들이 언스크램블링 어드레스들에 기초하도록 언스크램블링 구역(163)에서 구성될 수 있다. 따라서, 프로그램 카운터의 콘텐츠 및 메인 메모리(예컨대, 105)에서 피연산자들을 식별하기 위한 어드레스들은 언스크램블링 구역(163)에서의 언스크램블링 어드레스들일 수 있다.
도 3은 일 실시예에 따른 프로세서(101)에서 데이터 경로들을 제어하는 보안 레벨 레지스터(121)의 또 다른 예를 도시한다. 예를 들어, 도 3의 프로세서(101)는 도 1의 프로세서(101)의 구현일 수 있다. 예를 들어, 데이터 경로 선택기(127)가 도 2의 프로세서(101)에서 구현될 수 있다. 예를 들어, 보안 레벨 레지스터(121)의 콘텐츠는 도 2에 예시된 바와 같이 오브젝트 ID(199)에 기초하여 설정될 수 있다.
도 3의 프로세서(101)는 보안 레벨 레지스터(121)의 콘텐츠에 의해 제어된 데이터 경로 선택기(127)를 갖는다.
보안 레벨 레지스터(121)가 미리 결정된 보안 선호 설정(예컨대, 137)을 가질 때, 언스크램블링 구역(163)에서 프로세싱된 내부 캐시(107)에서의 데이터는 스크램블링되지 않는다. 따라서, 데이터 경로 선택기(127)는 언스크램블러(113) 및 스크램블러(112)를 바이패스하는 데이터 경로(133)를 선택/사용하며, 따라서 언스크램블러(113) 및 스크램블러(122)에 의해 야기된 데이터 지연은 감소되거나 또는 제거될 수 있다.
보안 레벨 레지스터(121)가 또 다른 보안 선호 설정(예컨대, 138)을 가질 때, 언스크램블링 구역(163)에서 프로세싱을 위한 내부 캐시(107)에서의 데이터가 스크램블링된다. 따라서, 데이터 경로 선택기(127)는 언스크램블러(113) 및 스크램블러(112)를 거치는 데이터 경로(134)를 사용하며, 따라서 실행의 데이터 보안은 프로세서(101) 내에서의 스크램블링 구역(161)에서 스크램블링된 데이터를 유지하는 것을 통해 개선된다.
언스크램블러(113) 및 스크램블러(112)는 출력을 생성하기 위해 입력에서 비트들(또는 데이터 아이템들)의 순서를 재배열하도록 키들의 세트에 따라 비트들(또는 데이터 아이템들)을 선택하는 다중화기들을 사용하여 구현될 수 있다. 예를 들어, 입력이 언스크램블링 데이터(117)일 때, 키들의 세트에 따라 재배열된 비트들을 가진 출력은 스크램블링 데이터(109)를 제공하며; 키들의 세트에 따라 스크램블링 데이터(109)에서 비트들의 순서를 재배열하는 것은 언스크램블링 데이터(117)를 복구할 수 있다. 언스크램블러(113) 및 스크램블러(112)의 세부사항들 및 예들은 2018년 8월 3일에 출원된, "컴퓨터 프로세서들에서의 데이터 보호"라는 제목의, 미국 특허 출원 일련 번호 제16/054,913, 및 2018년 9월 18일에 출원된 "컴퓨터 프로세서들에서 키 관리"라는 제목의 제16/134,387호에서 발견될 수 있으며, 그 출원들의 전체 개시들은 본 출원에서 참조로서 통합된다.
도 2 및 도 3은 프로세서(101)에서 데이터 스크램블링의 배치 및/또는 스크램블링/언스크램블링을 위해 사용된 키들의 길이를 선택적으로 제어하기 위한 보안 레벨 레지스터(121)의 사용을 예시한다. 일반적으로, 보안 레벨 레지스터(121)는 다른 보안 조치들의 배치를 조정하기 위해 또한 사용될 수 있다.
예를 들어, 도 4에 예시된 바와 같이, 도 3의 프로세서(101)는 데이터를 안전하게 하기 위해 반전 키들을 사용하는 반전 회로들(예컨대, 145), 및/또는 데이터를 안전하게 하기 위해 암호화/복호화 키들을 사용하는 암호화/복호화 회로들(예컨대, 143)을 포함하기 위해 증대될 수 있다. 뿐만 아니라, 상이한 암호화/복호화 회로들은 상이한 보안/성능 트레이드-오프들을 가진 상이한 암호화 알고리즘들을 구현할 수 있다. 데이터 경로 선택기(127)는 프로세서(101)의 보안 회로들(140) 중 일부 또는 모두를 선택적으로 바이패스하기 위해 보안 레벨 레지스터(121)에 의해 제어될 수 있다. 보안 회로들(140)는 스크램블링 회로들(예컨대, 141)(언스크램블러(113) 및 스크램블러(112)와 같은), 암호화/복호화 회로들(예컨대, 143), 및/또는 반전 회로들(예컨대, 145)을 포함할 수 있다. 데이터 경로 선택기(127)는 보안 레벨 레지스터(121)의 콘텐츠에 의해 식별된 선택된 순서로 보안 회로들(140)의 서브세트를 선택적으로 적용하기 위해 보안 레벨 레지스터(121)에 의해 제어될 수 있다. 예를 들어, 하나의 경로는 반전(145)에 앞서 스크램블링(141)을 적용하도록 구성될 수 있지만, 또 다른 경로는 스크램블링(141) 또는 암호화(143)에 앞서 반전(145)을 적용하도록 구성될 수 있다.
예를 들어, 2018년 7월 6일에 출원된, 미국 특허 출원 일련 번호 제16/029,135호는 상이한 레벨들의 호출들을 위해 별개의 브랜치 타겟 버퍼들을 사용하는 보안 기술을 개시하며, 출원의 전체 개시는 본 출원에서 참조로서 통합된다. 보안 레벨 레지스터(121)의 콘텐츠는 보안 측정의 선택적 배치 및/또는 별개의 브랜치 타겟 버퍼들에 의해 분리될 호출들의 레벨을 제어하기 위해 사용될 수 있다.
예를 들어, 2018년 7월 6일에 출원된, 미국 특허 출원 일련 번호 제16/028,930호는 조건부 추측 지시 실행을 안전하게 하기 위해 섀도우 캐시를 사용하는 보안 기술들을 개시하며, 그 출원의 전체 개시는 본 출원에서 참조로서 통합된다. 보안 레벨 레지스터(121)의 콘텐츠는 섀도우 캐시의 선택적 배치를 제어하기 위해 사용될 수 있다.
도 5는 일 실시예에 따른 프로세서(101)에서 보안 동작들을 구성하기 위한 방법을 도시한다. 예를 들어, 도 5의 방법은 도 1, 도 2, 도 3, 또는 도 4의 프로세서(101)에서 구현될 수 있다.
블록 201에서, 프로세서(101)는 제 1 프로그램(예컨대, 135)과 연관된 제 1 보안 선호 설정(예컨대, 137)을 결정한다.
예를 들어, 제 1 보안 선호 설정(예컨대, 137)은 제 1 프로그램(예컨대, 135)의 실행을 위해 운영 시스템에 의해 관리된 환경 변수로서 제 1 프로그램(예컨대, 135)과 연관될 수 있다.
예를 들어, 제 1 보안 선호 설정(예컨대, 137)은 제 1 프로그램(예컨대, 135)의 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하기 위해 사용된 룩 업 테이블에 구성된 제 1 프로그램(예컨대, 135)의 보안 파라미터로서 제 1 프로그램(예컨대, 135)과 연관될 수 있다.
예를 들어, 제 1 보안 선호 설정(예컨대, 137)은 제 1 프로그램(예컨대, 135)에서 프로그램될 수 있으며, 여기에서 제 1 프로그램의 하나 이상의 지시들은 제 1 보안 선호 설정(예컨대, 137)을 식별하거나 또는 계산하기 위해 실행될 수 있다.
블록 203에서, 프로세서(101)는 제 1 보안 선호 설정(예컨대, 137)을 프로세서(101)의 보안 레벨 레지스터(121)로 로딩한다.
블록 205에서, 프로세서(101)는 보안 레벨 레지스터(121)에서의 제 1 보안 선호 설정(예컨대, 137)에 따라 제 1 모드의 보안 동작으로 기능 유닛들(123)을 구성한다.
블록 207에서, 프로세서(101)는 제 1 모드의 보안 동작들을 갖고 제 1 프로그램(예컨대, 135)의 지시들을 실행한다.
예를 들어, 제 1 모드의 보안 동작들은 내부 캐시(107)에서 스크램블링 형태로 데이터를 유지하는 것, 조건부 추측 지시 실행을 안전하게 하기 위해 섀도우 캐시를 사용하는 것, 및/또는 상이한 레벨들의 호출들을 위해 별개의 브랜치 타겟 버퍼들을 사용하는 것을 포함할 수 있다.
블록 209에서, 프로세서(101)는 제 2 프로그램(예컨대, 136)과 연관된 제 2 보안 선호 설정(예컨대, 138)을 결정한다.
블록 211에서, 프로세서(101)는 제 2 보안 선호 설정(예컨대, 138)을 프로세서(101)의 보안 레벨 레지스터(121)로 로딩한다.
블록 213에서, 프로세서(101)는 보안 레벨 레지스터(121)에서 제 2 보안 선호 설정(예컨대, 138)에 따라 제 2 모드의 보안 동작들로 기능 유닛들(123)을 구성한다.
블록 215에서, 프로세서(101)는 제 2 모드의 보안 동작들을 갖고 제 2 프로그램(예컨대, 136)의 지시들을 실행한다.
예를 들어, 제 1 모드는 제 2 모드에서 수행되지 않은 수행된 보안 동작들의 세트를 포함할 수 있다. 제 1 모드에서 수행되지만 제 2 모드에서 수행되지 않은 이러한 보안 동작들의 일 예는 프로세서(101)의 언스크램블링 구역(163)에 대한 캐시(107)에서 데이터를 언스크램블링하며 언스크램블링 구역(163)으로부터 캐시(107)로 데이터를 출력하기 전에 데이터를 스크램블링하는 것이다.
제 1 모드에서 수행되지만 제 2 모드에서 수행되지 않은 이러한 보안 동작들의 또 다른 예는 상이한 레벨들의 호출들에 대한 별개의 브랜치 타겟 버퍼들을 사용하는 것이다.
제 1 모드에서 수행되지만 제 2 모드에서 수행되지 않은 이러한 보안 동작들의 추가 예는 조건부 추측 지시 실행을 안전하게 하기 위한 섀도우 캐시이다.
제 1 보안 모드로 동일한 데이터 세트에 대해 실행된 지시들은 제 2 보안 모드로 실행되는 것과 동일한 결과들을 제공할 수 있다. 그러나, 실행이 제 1 보안 모드에 있을 때, 보안 위반의 가능성이 감소된다. 실행이 제 2 보안 모드에 있을 때, 실행 시간 지속 기간은 감소된다.
도 3 및 도 4에 예시된 바와 같이, 보안 레벨 레지스터(121)는 보안 레벨 레지스터(121)가 제 2 설정(예컨대, 138)을 포함할 때 로직 회로(예컨대, 113 및 112)를 바이패스하도록 기능 유닛들(121)을 동적으로 구성할 수 있다. 로직 회로(예컨대, 113 및 112)는 제 1 보안 모드에서 활성이지만, 제 2 보안 모드에서 사용되지 않는다. 기능 유닛들(121)은 프로세서(101)의 실행 유닛들(115), 데이터 경로 선택기(127), 언스크램블러(113)/스크램블러(112), 섀도우 캐시, 및/또는 별개의 브랜치 타겟 버퍼들을 포함할 수 있다.
도 6은 도 5의 방법이 구현될 수 있는 컴퓨팅 시스템을 도시한다.
도 6의 컴퓨팅 시스템은 내부 캐시(191)를 가진 프로세서(101), 메모리 디바이스(105), 외부 캐시(107), 및 상호연결(185)을 통해 프로세서(101) 및/또는 메모리 디바이스(105)에 연결되는 저장 디바이스(104)를 포함할 수 있다.
예를 들어, 프로세서(101)는 지시들을 실행하기 위해 기능 유닛들(124)을 가질 수 있다. 프로세서(101)는 메모리 어드레스들, 기능 유닛들(123)에서 실행될 지시들의 데이터/피연산자들, 및/또는 지시들의 실행 결과들을 포함하기 위해 레지스터들(111)을 추가로 포함할 수 있다.
예를 들어, 레지스터들(111)은 실행을 위한 지시들을 로딩하기 위한 프로그램 카운터, 및 메모리 어드레스 레지스터를 포함할 수 있다. 지시가 프로세서(101)에서 실행되고 있을 때, 메모리 어드레스 레지스터에 저장된 메모리 어드레스는 지시의 피연산자를 로딩하며, 및/또는 지시를 실행하는 것에서 생성된 컴퓨팅 결과를 저장하기 위해 사용될 수 있다.
프로세서(101)는 보안 레벨 레지스터(121)에 포함된 콘텐츠/설정에 기초하여 기능 유닛들(123)의 보안 동작들을 동적으로 구성할 수 있다. 예를 들어, 보안 레벨 레지스터(121)는 데이터 경로(133 또는 134)를 선택하도록 도 3 또는 도 4의 데이터 경로 선택기(127)를 제어하며, 및/또는 스크램블러(112) 및 언스크램블러(113)에 대한 키들의 길이를 식별하도록 도 2의 키 저장소(167)를 제어할 수 있다.
몇몇 인스턴스들에서, 프로세서(101)의 레지스터들에서 사용된 어드레스들은 가상 메모리 어드레스들이며; 메모리 관리 유닛(MMU)(125)은 외부 캐시(107), 메모리 디바이스(105), 및/또는 저장 디바이스(104)를 액세스하기 위해 가상 메모리 어드레스들을 물리 메모리 어드레스들로 변환할 수 있다.
예를 들어, 메모리 디바이스(105)에서의 데이터는 프로세서(101)의 외부 캐시(107) 및/또는 프로세서(101)의 내부 캐시(191)에 캐싱될 수 있다.
예를 들어, 외부 캐시(107)에서의 데이터는 내부 캐시(191)에 캐싱될 수 있다.
예를 들어, 저장 디바이스(104)에서의 데이터는 메모리 디바이스(105)에, 외부 캐시(107)에, 및/또는 내부 캐시(191)에 캐싱될 수 있다.
몇몇 인스턴스들에서, 메모리 관리 유닛(MMU)(125)은 내부 캐시(191), 외부 캐시(107), 및 메모리 디바이스(198) 간에 데이터 움직임을 제어한다.
본 출원에서 개시된 기술들은 적어도 프로세서들이 메모리로부터 분리되며 프로세서들이 통신 버스들 및/또는 컴퓨터 네트워크들을 통해 메모리 및 저장 디바이스들과 통신하는 컴퓨터 시스템들에 적용될 수 있다. 뿐만 아니라, 본 출원에서 개시된 기술들은 프로세싱 능력들이 메모리/저장장치 내에 통합되는 컴퓨터 시스템들에 적용될 수 있다. 예를 들어, 통상적인 프로세서의 실행 유닛들 및/또는 레지스터들을 포함한, 프로세싱 회로들은 메모리 디바이스 내에서 프로세싱을 수행하기 위해 메모리 미디어의 집적 회로들 및/또는 집적 회로 패키지들 내에 구현될 수 있다. 따라서, 상기 논의되고 도면들에서 예시된 프로세서(예컨대, 101)는 반드시 폰 노이만 아키텍처에서의 중앙 프로세싱 유닛인 것은 아니다. 프로세서는 데이터에서 대기시간에 의해 야기된 스루풋에서의 제한의 결과가 폰 노이만 아키텍처에 따라 별도로 구성된 중앙 프로세싱 유닛과 메모리 사이에서 이동할 때 컴퓨팅 성능을 제한하는 폰 노이만 병목현상을 극복하기 위해 메모리 내에 통합된 유닛일 수 있다.
본 개시의 설명 및 도면들은 예시적이며 제한적인 것으로 해석되지 않을 것이다. 다수의 특정 세부사항들이 철저한 이해를 제공하기 위해 설명된다. 그러나, 특정한 인스턴스들에서, 잘 알려진 또는 종래의 세부사항들은 설명을 모호하게 하는 것을 피하기 위해 설명되지 않는다. 본 개시에서 하나 이상의 실시예에 대한 참조들은 반드시 동일한 실시예에 대한 참조들인 것은 아니며; 이러한 참조들은 적어도 하나를 의미한다.
앞서 말한 명세서에서, 본 개시는 그것의 특정 대표적인 실시예들을 참조하여 설명되었다. 다양한 수정들이 이어지는 청구항들에서 제시된 바와 같이 더 넓은 사상 및 범위로부터 벗어나지 않고 그것에 대해 이루어질 수 있다는 것이 명백할 것이다. 명세서 및 도면들은, 따라서, 제한적인 의미보다는 예시적인 의미로 간주될 것이다.

Claims (16)

  1. 프로세서에 있어서,
    프로그램의 지시들을 실행하도록 구성된 하나 이상의 기능 유닛들; 및
    상기 기능 유닛들의 보안 동작들을 제어하도록 구성된 레지스터를 포함하며;
    상기 기능 유닛들은 상기 레지스터가 제 1 설정을 포함할 때 제 1 모드의 보안 동작들로 동작하도록 상기 레지스터에 의해 구성 가능하며; 및
    상기 기능 유닛들은 상기 레지스터가 제 2 설정을 포함할 때 제 2 모드의 보안 동작들로 동작하도록 상기 레지스터에 의해 구성 가능한, 프로세서.
  2. 청구항 1에 있어서,
    상기 제 1 모드에서의 보안 동작들의 세트는 상기 제 2 모드에서의 보안 동작들의 세트와 상이한, 프로세서.
  3. 청구항 2에 있어서,
    상기 기능 유닛들은 상기 레지스터가 상기 제 2 설정을 포함할 때 상기 제 1 모드에서 활성인 로직 회로를 바이패스(bypass)하도록 상기 레지스터에 의해 구성 가능한, 프로세서.
  4. 청구항 2에 있어서,
    상기 기능 유닛들은 상기 제 1 모드에서보다 상기 제 2 모드에서 더 빠르게 지시를 실행하도록 구성 가능한, 프로세서.
  5. 청구항 1에 있어서,
    캐시를 더 포함하며;
    상기 기능 유닛들은:
    데이터 경로 선택기;
    실행 유닛들;
    상기 데이터 경로 선택기와 상기 실행 유닛들 간의 제 1 데이터 경로;
    상기 데이터 경로 선택기와 상기 실행 유닛들 간의 제 2 데이터 경로를 포함하며;
    상기 데이터 경로 선택기는 상기 제 1 모드에 있을 때 상기 제 1 데이터 경로를 통해 상기 실행 유닛들에 상기 캐시를 연결하며;
    상기 데이터 경로 선택기는 상기 제 2 모드에 있을 때 상기 제 2 데이터 경로를 통해 상기 실행 유닛들에 상기 캐시를 연결하는, 프로세서.
  6. 청구항 5에 있어서,
    상기 제 1 데이터 경로는 보안 회로를 포함하며; 상기 제 2 데이터 경로는 상기 보안 회로를 바이패스하고; 상기 보안 회로는 스크램블러(scrambler) 및 언스크램블러(unscrambler), 암호화 및 복호화 회로, 또는 반전 회로, 또는 이들의 임의의 조합을 포함하며; 상기 스크램블러 및 상기 언스크램블러는 키들에 따라 비트들의 순서들을 재배열함으로써 데이터를 변경하도록 구성된 다중화기들을 포함하고; 상기 반전 회로는 키들에 따라 비트들의 값들을 반전시키며; 상기 암호화 및 복호화 회로는 키들에 따라 비트들의 값들을 조합하는, 프로세서.
  7. 청구항 1에 있어서,
    상기 레지스터는 상기 프로세서가 제 1 프로그램의 지시들을 실행할 때 제 1 설정을 포함하며; 상기 레지스터는 상기 프로세서가 제 2 프로그램의 지시들을 실행할 때 제 2 설정을 포함하는, 프로세서.
  8. 청구항 7에 있어서,
    상기 제 1 프로그램의 지시는 제 1 프로그램의 실행 동안 상기 제 1 설정을 상기 레지스터로 로딩하며; 상기 제 2 프로그램의 지시는 제 2 프로그램의 실행 동안 상기 제 2 설정을 상기 레지스터로 로딩하는, 프로세서.
  9. 청구항 7에 있어서,
    상기 프로세서는 상기 지시가 상기 프로세서에서 실행되고 있을 때 지시의 가상 어드레스에서 제공된 식별자에 의해 식별된 오브젝트와 연관된 보안 선호 설정을 로딩하도록 구성되는, 프로세서.
  10. 방법에 있어서,
    제 1 프로그램과 연관된 제 1 설정을 프로세서의 레지스터로 로딩하는 단계로서, 상기 프로세서는 상기 레지스터에 의해 제어된 기능 유닛들을 갖는, 상기 제 1 설정을 로딩 단계;
    상기 레지스터에서 로딩된 상기 제 1 설정에 따라 제 1 모드의 보안 동작들로 상기 기능 유닛들을 구성하는 단계;
    상기 제 1 모드의 보안 동작들로 상기 프로세서에서 제 1 프로그램의 지시들을 실행하는 단계;
    제 2 프로그램과 연관된 제 2 설정을 상기 레지스터로 로딩하는 단계;
    상기 레지스터에서 로딩된 상기 제 2 설정에 따라 제 2 모드의 보안 동작들로 상기 기능 유닛들을 구성하는 단계; 및
    상기 제 2 모드의 보안 동작들로 상기 프로세서에서 제 2 프로그램의 지시들을 실행하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서,
    상기 제 1 모드로 수행된 적어도 하나의 보안 동작은 상기 제 2 모드로 수행되지 않으며; 상기 기능 유닛들은 상기 제 1 모드에서보다 상기 제 2 모드에서 더 빠르게 동일한 지시를 실행하는, 방법.
  12. 청구항 10에 있어서,
    상기 레지스터에서의 콘텐츠에 기초하여 상기 프로세서의 캐시와 상기 프로세서의 실행 유닛들 사이에서 데이터 경로를 선택하는 단계를 더 포함하는, 방법.
  13. 청구항 12에 있어서,
    제 1 데이터 경로는 상기 제 1 모드에 있을 때 상기 레지스터에 의해 선택되고; 제 2 데이터 경로는 상기 제 2 모드에 있을 때 상기 레지스터에 의해 선택되며; 상기 제 2 데이터 경로는 로직 회로를 바이패스하고; 상기 제 1 데이터 경로는 스크램블러 및 언스크램블러를 포함하고; 상기 제 2 데이터 경로는 상기 스크램블러 및 상기 언스크램블러를 바이패스하며, 상기 방법은:
    상기 제 1 모드에 있을 때 상기 캐시와 상기 실행 유닛들 사이에서의 상기 제 1 데이터 경로 상에서 데이터를 언스크램블링하는 단계 및 스크램블링하는 단계를 더 포함하는, 방법.
  14. 청구항 13에 있어서,
    상기 제 1 설정을 상기 레지스터로 로딩하기 위해 상기 제 1 프로그램의 지시의 가상 어드레스에 기초하여 상기 제 1 설정을 식별하는 단계; 및
    상기 제 2 설정을 상기 레지스터로 로딩하기 위해 상기 제 2 프로그램의 지시의 가상 어드레스에 기초하여 상기 제 2 설정을 식별하는 단계를 더 포함하는, 방법.
  15. 청구항 13에 있어서,
    상기 제 1 설정을 상기 레지스터로 로딩하기 위해 상기 제 1 프로그램의 제 1 지시를 실행하는 단계; 및
    상기 제 2 설정을 상기 레지스터로 로딩하기 위해 상기 제 2 프로그램의 제 2 지시를 실행하는 단계를 더 포함하는, 방법.
  16. 지시들을 저장한 비 일시적 컴퓨터 판독 가능한 매체에 있어서,
    상기 지시들은 레지스터 및 기능 유닛들을 가진 프로세서에서 실행될 때, 상기 프로세서로 하여금 청구항 10 내지 청구항 15 중 어느 한 항의 방법을 수행하게 하는, 비 일시적 컴퓨터 판독 가능한 매체.
KR1020217020459A 2018-12-05 2019-12-02 애플리케이션마다 조정 가능한 보안 레벨들을 가진 프로세서들 KR20210088004A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/210,605 US11100254B2 (en) 2018-12-05 2018-12-05 Processors with security levels adjustable per applications
US16/210,605 2018-12-05
PCT/US2019/063990 WO2020117665A1 (en) 2018-12-05 2019-12-02 Processors with security levels adjustable per applications

Publications (1)

Publication Number Publication Date
KR20210088004A true KR20210088004A (ko) 2021-07-13

Family

ID=70970471

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217020459A KR20210088004A (ko) 2018-12-05 2019-12-02 애플리케이션마다 조정 가능한 보안 레벨들을 가진 프로세서들

Country Status (5)

Country Link
US (2) US11100254B2 (ko)
EP (1) EP3891643A4 (ko)
KR (1) KR20210088004A (ko)
CN (1) CN113168486A (ko)
WO (1) WO2020117665A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11100254B2 (en) * 2018-12-05 2021-08-24 Micron Technology, Inc. Processors with security levels adjustable per applications
US20220028301A1 (en) * 2019-01-30 2022-01-27 Sony Group Corporation Encryption device and encryption method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5943421A (en) * 1995-09-11 1999-08-24 Norand Corporation Processor having compression and encryption circuitry
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US7849311B2 (en) 2005-03-15 2010-12-07 Silicon Graphics International Computer system with dual operating modes
US9177176B2 (en) * 2006-02-27 2015-11-03 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
US10372924B2 (en) * 2008-05-12 2019-08-06 George Madathilparambil George Master device for controlling application security environments
US20110154061A1 (en) 2009-12-21 2011-06-23 Babu Chilukuri Data secure memory/storage control
KR101642756B1 (ko) 2009-12-24 2016-07-26 삼성전자주식회사 화상형성장치 및 보안정책 설정 방법
TWI516978B (zh) 2013-10-31 2016-01-11 萬國商業機器公司 在電腦裝置中管理應用程式的執行所適用的安全模式
US9952865B2 (en) * 2015-04-04 2018-04-24 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file
GB2540388B (en) * 2015-07-15 2019-01-23 Advanced Risc Mach Ltd Secure mode state data access tracking
US9959418B2 (en) * 2015-07-20 2018-05-01 Intel Corporation Supporting configurable security levels for memory address ranges
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
US10437735B2 (en) * 2017-12-13 2019-10-08 Red Hat, Inc. Process isolation for out of process page fault handling
US11100254B2 (en) * 2018-12-05 2021-08-24 Micron Technology, Inc. Processors with security levels adjustable per applications

Also Published As

Publication number Publication date
US20210374289A1 (en) 2021-12-02
US11100254B2 (en) 2021-08-24
WO2020117665A1 (en) 2020-06-11
US20200184112A1 (en) 2020-06-11
CN113168486A (zh) 2021-07-23
EP3891643A4 (en) 2022-08-31
EP3891643A1 (en) 2021-10-13

Similar Documents

Publication Publication Date Title
US11868274B2 (en) Key management in computer processors
US9954681B2 (en) Systems and methods for data encryption
US10237059B2 (en) Diversified instruction set processing to enhance security
US20120260106A1 (en) System and method for binary layout randomization
KR20210084223A (ko) 동적 키 유도에 기초한 다중 키 전체 메모리 암호화를 위한 방법 및 장치
US20210374289A1 (en) Processors with Security Levels Adjustable per Applications
Zhao et al. A lightweight isolation mechanism for secure branch predictors
US11914756B2 (en) Data protection in computer processors
US11669467B2 (en) Memory access instructions
KR20180059217A (ko) 메모리 데이터 보안 처리 장치 및 방법
US20220100907A1 (en) Cryptographic computing with context information for transient side channel security
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing
Fujieda et al. A Complement to Enhanced Instruction Register File against Embedded Software Falsification
KR20210088005A (ko) 재정렬 버퍼를 통한 타이밍 기반 보안 공격으로부터의 보호

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right