KR20210021285A - 안전한 컴퓨터 시스템 - Google Patents

안전한 컴퓨터 시스템 Download PDF

Info

Publication number
KR20210021285A
KR20210021285A KR1020207030436A KR20207030436A KR20210021285A KR 20210021285 A KR20210021285 A KR 20210021285A KR 1020207030436 A KR1020207030436 A KR 1020207030436A KR 20207030436 A KR20207030436 A KR 20207030436A KR 20210021285 A KR20210021285 A KR 20210021285A
Authority
KR
South Korea
Prior art keywords
module
secure
data
key
computer system
Prior art date
Application number
KR1020207030436A
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 KR20210021285A publication Critical patent/KR20210021285A/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/109Address translation 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/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
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Abstract

입력 주변 장치 및 출력 주변 장치에 동작 가능하게 연결된 프로세싱 및 메모리 유닛(PMU)을 포함하는 보안 컴퓨터 시스템이 제공된다. PMU는 보호된 메모리 및 공유 메모리를 포함하는 시스템 메모리, 및 시스템 메모리에 동작 가능하게 결합된 프로세서를 포함하고, 프로세서는 보호된 메모리를 통한 안전한 데이터 저장 및 실행을 가능하게 하는 명령 세트를 포함한다. PMU는 운영체제와 운영체제에 의해 실행 가능한 모듈 그룹을 더 포함하고, 모듈 그룹 내의 각 모듈은 보호된 메모리 내에서 실행될 지정된 보안 영역을 갖고, 모듈 그룹은 인증을 생성하고 복합 키를 사용하여 그것에 액세스 가능한 공유 메모리를 통해 입력 데이터를 안전하게 공유하도록 구성되고, 복합 키는 명령 세트에 의해 활성화된 지정된 보안 영역 간의 데이터 공유 메커니즘을 사용하여 그룹 내에서 생성된다.

Description

안전한 컴퓨터 시스템
본 발명은 일반적으로 컴퓨터 시스템 분야에 관한 것이고, 보다 구체적으로는 보안 컴퓨터 시스템에 관한 것이다.
컴퓨터 장치 및 컴퓨터 네트워크는 악성 소스로부터 점점 더 많은 공격을 받고 있다. 보안 업계가 참신함, 효율성, 특징 세트 및 전반적인 보안 접근 방식 측면에서 보안 제품에서 급속한 발전을 이루었지만, 조직은 계속해서 놀라운 속도와 정교함으로 침해를 당하고 있으며 이러한 공격을 탐지하고 완화하고자 시도하는데 상당한 자원을 투자해야 할 수도 있다.
기존의 컴퓨터 보안 솔루션은 손상(compromise)을 방지하거나 탐지하는 것을 목표로 한다. 그러나, 컴퓨터 시스템이 손상된 후 및 지속적으로 손상되고 있을 때, 현재 솔루션은 일반적으로 사용자가 이러한 상황에서 작업할 수 있게 해주는 임의의 추가 보안 절차를 제공하지 않는다.
본 발명의 특정 양태에 따라, 보안 컴퓨터 시스템이 제공되며, 이 보안 컴퓨터 시스템은 입력 주변 장치 컴포넌트 및 출력 주변 장치 컴포넌트에 동작 가능하게 연결된 프로세서 및 메모리 유닛(PMU)을 포함하고, 입력 주변 장치 컴포넌트는 사용자로부터 입력 데이터를 수신하고 입력 데이터를 PMU로 전송하도록 구성되고; 출력 주변 장치 컴포넌트는 PMU로부터 처리된 출력 데이터를 수신하도록 구성되고; PMU는 보호된 메모리 및 공유 메모리를 포함하는 시스템 메모리, 및 시스템 메모리에 동작 가능하게 결합된 프로세서를 포함하며, 프로세서는 보호된 메모리를 통한 보안 데이터 저장 및 실행을 가능하게 하는 명령 세트를 포함하고; PMU는 운영체제 및 운영체제에 의해 실행 가능한 모듈 그룹을 더 포함하고, 모듈 그룹 내 각 모듈은 보호된 메모리 내에서 실행될 지정된 보안 영역을 갖고, 모듈 그룹은 인증을 생성하고 복합 키를 사용하여 그것에 액세스 가능한 공유 메모리를 통해 입력 데이터를 안전하게 공유하도록 구성되고, 복합 키는 명령 세트에 의해 활성화된 지정된 보안 영역 간의 데이터 공유 메커니즘을 사용하여 그룹 내에서 생성되고, 모듈 그룹은: 입력 주변 장치 컴포넌트로부터 입력 데이터를 수신하고, 복합 키를 사용하여 입력 데이터를 암호화하고, 그 암호화된 입력 데이터를 공유 메모리에 기록하도록 구성된 적어도 하나의 기록기 모듈; 및 공유 메모리로부터 암호화된 입력 데이터를 판독하고, 복합 키를 사용하여 암호화된 입력 데이터를 복호화하고, 그 복호화된 입력 데이터를 사용하도록 구성된 적어도 하나의 판독기 모듈을 포함한다.
상기 특징에 더하여, 본 발명의 이 양태에 따른 시스템은 아래에 나열된 특징 (i) 내지 (xvi) 중 하나 이상을 기술적으로 가능한 임의의 바람직한 조합 또는 순열로 포함할 수 있다.
(i). 프로세서는 보안 엔클레이브를 지원할 수 있고, 명령 세트는 복수의 보안 엔클레이브 명령을 포함할 수 있으며, 지정된 보안 영역은 보안엔클레이브이다.
(ii). 적어도 하나의 판독기 모듈은 운영체제 내의 환경 상태를 모니터링하도록 구성된 상태 관리자 모듈; 입력 데이터를 원격 연결을 통해 원격 작업 환경으로 안전하게 전송하고, 처리된 출력 데이터를 원격 작업 환경으로부터 안전하게 수신하도록 구성된 보안 환경 모듈; 및 처리된 출력 데이터를 출력 주변 장치 컴포넌트에 제공하도록 구성된 출력 관리자 모듈을 포함하는 그룹으로부터 선택될 수 있다.
(iii). 그룹 내 각각의 주어진 모듈은: 그것에 지정된 보안 엔클레이브에서 특정 세션에 대한 키 구성 요소를 생성하고 지정된 보안 엔클레이브에 키 구성 요소를 저장하는 단계; 보안 엔클레이브의 봉인 및 봉인 해제 메커니즘을 사용하여 공유 메모리를 통해 모듈 그룹 내의 키 구성 요소를 안전하게 교환하여 모듈 그룹 내의 다른 모듈로부터 각각의 키 구성 요소를 획득하는 단계; 및 그룹 모듈 내 각 모듈의 각각의 키 구성 요소를 사용하여 지정된 보안 엔클레이브에서 복합 키를 독립적으로 생성함으로써 복합 키를 사용하여 모듈 그룹 내 보안 데이터 통신을 허용하는 단계에 의해 복합 키를 생성하도록 구성될 수 있다.
(iv). 지정된 보안 엔클레이브는 보안 엔클레이브에 서명하는 기관 엔티티의 서명 아이덴티티와 연관될 수 있다. 그룹 내의 각각의 주어진 모듈은: 키 구성 요소를 봉인하고, 봉인된 키 구성 요소를 공유 메모리에 복사하고, 다른 모듈의 각각의 봉인된 키 구성 요소를 공유 메모리로부터 지정된 보안 엔클레이브로 복사하고, 그리고 각각의 봉인된 키 구성 요소를 봉인 해제함으로써 키 구성 요소를 안전하게 교환하도록 구성될 수 있다. 주어진 모듈에 의한 성공적인 봉인 해제 동작은 유효성 인증을 제공한다.
(v). 적어도 하나의 기록기 모듈은 복합 키를 생성하는 동안 위상을 조정하도록 더 구성될 수 있다.
(vi). 입력 주변 장치 컴포넌트는 사용자로부터 입력 키 스트로크를 수신 및 암호화하고, 암호화된 입력 데이터를 PMU로 전송하도록 구성된 보안 키보드일 수 있다.
(vii). 출력 주변 장치 컴포넌트는 PMU로부터 암호화된 처리된 출력 데이터를 수신하고 디스플레이를 위해 렌더링하기 위해 암호화된 처리된 출력 데이터를 복호화하도록 구성된 보안 디스플레이일 수 있다.
(viii). 공유 메모리는 그룹 내의 각 모듈이 독립적으로 액세스할 수 있는 보안 링 캐시로 표시될 수 있다.
(ix). 그룹에 새 모듈이 합류하거나 시간 기간의 경과 시 새로운 복합 키가 생성될 수 있다.
(x). 적어도 하나의 기록기 모듈은 새로운 입력 데이터를 기록할 때 그 값이 앞으로만 진행할 것으로 예상되는 세션 모노토닉 카운터를 사용하도록 구성될 수 있다. 적어도 하나의 판독기 모듈 각각은 매 판독 세션마다 세션 모노토닉 카운터의 로컬 사본을 저장하고 새로운 판독 세션 시 세션 모노토닉 카운터의 현재 값을 판독하고 이전에 저장된 값과 비교하도록 구성될 수 있다.
(xi). 복합 키는, 복합 키를 사용하여 공유 메모리로부터 주어진 모듈을 성공적으로 판독한 때 주어진 모듈에 의해 검증될 수 있다.
(xii). 시스템은 운영체제에 의해 실행 가능한 가상화된 로컬 환경 모듈을 더 포함할 수 있고, 운영체제의 상태는 보안 환경 모듈에 의해 제공되는 보안 환경과 가상화된 로컬 환경 모듈에 의해 제공되는 가상화된 로컬 환경 간에 전환 가능하다.
(xiii). 시스템은 보안 컴퓨터 장치에 내장되고 가상화된 로컬 환경과 보안 환경 간의 전환 시 물리적 표시를 제공하도록 구성된 물리적 표시기를 더 포함할 수 있다.
(xiv). 시스템은 사용자로부터 환경 전환의 명령을 수신하고 가상화된 로컬 환경과 보안 환경 간 전환을 트리거하도록 구성된, 보안 컴퓨터 장치 상에 내장되는 물리적 스위치를 더 포함할 수 있다.
(xv). 물리적 표시기는 입력 주변 장치 컴포넌트에 내장된 시각적 표시기이며 성공적인 전환의 알림을 수신하면 시각적 표시를 제공하도록 구성될 수 있다.
(xvi). 시스템은 운영체제를 부팅할지 여부를 판정하기 위해 검증을 수행하도록 구성된 BIOS 컴포넌트를 더 포함할 수 있다.
본 발명의 다른 양태에 따르면, 보안 컴퓨터 시스템의 일부 또는 모든 양태를 구현하거나 운영하기 위한 하나 이상의 컴퓨터화된 방법이 제공되며, 본 발명의 이 양태는 시스템과 관련하여 위에 나열된 특징 (i) 내지 (xvi) 중 하나 이상을 기술적으로 가능한 임의의 원하는 조합 또는 순열로 포함할 수 있다.
본 발명의 다른 양태에 따르면, 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 보안 컴퓨터 시스템의 일부 또는 모든 양태를 구현하거나 운영하기 위한 하나 이상의 컴퓨터화된 방법을 수행하게끔 하는 명령어들의 프로그램을 실재적으로 내장한 비일시적 컴퓨터 판독 가능한 저장 매체가 제공되며, 본 발명의 이 양태는 시스템과 관련하여 위에 나열된 특징 (i) 내지 (xvi) 중 하나 이상을 기술적으로 가능한 임의의 원하는 조합 또는 순열로 포함할 수 있다.
이제 본 발명을 이해하고 실제로 수행될 수 있는 방법을 보기 위해, 첨부 된 도면을 참조하여 비 제한적인 예로서만 실시예들이 설명될 것이다.
도 1a는 본 발명의 특정 실시예에 따른 보안 컴퓨터 시스템의 개략적인 블록도를 도시한다.
도 1b는 본 발명의 특정 실시예에 따른 보안 컴퓨터 시스템의 PMU에 포함된 기능적 구성 요소의 개략적인 블록도를 도시한다.
도 2는 본 발명의 특정 실시예에 따른 모듈 그룹의 개략적이고 예시적인 구현예를 도시한다.
도 3은 본 발명의 특정 실시예에 따른 공유 메모리의 데이터 구조의 개략적 표현을 도시한다.
도 4는 본 발명의 특정 실시예에 따른 모듈 그룹 내의 각각의 주어진 모듈에 의해 복합 키를 생성하는 일반화된 흐름도를 도시한다.
도 5는 본 발명의 특정 실시예에 따라 공유 메모리에 대해 모듈 그룹에 의해 수행되는 오퍼레이션의 일반화된 흐름도를 도시한다.
도 6은 본 발명의 특정 실시예에 따른 운영체제에서의 환경 전환의 일반화 된 흐름도를 도시한다.
도 7은 본 발명의 특정 실시예에 따른 보안 클라우드 환경의 개략도를 예시한다.
도 8은 본 발명의 특정 실시예에 따라 기록기 모듈과 판독기 모듈 사이의 메모리 액세스 상태 전환의 개략도를 도시한다.
아래의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 본 발명은 이러한 특정 세부 사항 없이도 실시될 수 있다는 것을 당업자는 이해할 것이다. 다른 예에서, 본 발명을 모호하게 하지 않도록 잘 알려진 방법, 절차, 구성 요소 및 회로는 상세하게 설명되지 않았다.
달리 구체적으로 언급하지 않는 한, 다음 논의에서 명백한 바와 같이, 명세서 전체에 걸쳐, "~을 수신하는", "~을 가능하게 하는", "~을 전송하는", "~을 표시하는", "~을 생성하는", "~을 공유하는", "~을 사용하는", "~을 암호화하는", "~을 기록하는", "~을 판독하는", "~을 복호화하는", "~을 모니터링하는", "~을 전달하는", "~을 제공하는", "~을 발생시키는", "~을 봉인하는", "~을 봉인 해제하는""~을 교환하는", "~을 저장하는", "~을 서명하는", "~을 조정하는", "~을 검증하는", "~을 전환하는", "~을 수행하는" 등과 같은 용어를 이용하는 것은 데이터를 조작 및/또는 다른 데이터로 변환하는 컴퓨터의 액션(들) 및/또는 프로세스(들)를 지칭하는 것을 알 수 있고, 상기 데이터는 전자적, 수량과 같은, 물리적으로 표현되고 및/또는 상기 데이터는 물리적 대상을 나타낸다. 컴퓨터"라는 용어는 비 제한적인 예로서 본 명세서에 개시된 바와 같이 보안 컴퓨터 시스템 및 그것의 일부, 뿐만 아니라 그 안에 포함된 프로세싱 및 메모리 유닛(PMU) 및 프로세서를 포함하는, 데이터 처리 기능을 갖는 임의의 종류의 하드웨어 기반 전자 장치를 포함하도록 광범위하게 해석되어야 한다.
본 명세서에서 사용되는 "비 일시적 메모리"및 "비 일시적 저장 매체"라는 용어는 본 발명에 적합한 임의의 휘발성 또는 비 휘발성 컴퓨터 메모리를 포괄하도록 광범위하게 해석되어야 한다.
본 발명의 실시예들은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에 설명된 바와 같이 본 발명의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있음이 이해될 것이다.
본 명세서에서 사용된 바와 같이, "예를 들어", "~와 같은", "예컨대" 및 이들의 변형은 본 발명의 비 제한적인 실시예를 설명한다. 명세서에서 "일 경우", "일부 경우", "다른 경우" 또는 이들의 변형에 대한 언급은 실시예(들)와 관련지어 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, "일 경우", "일부 경우", "다른 경우" 또는 이들의 변형의 표현이 반드시 동일한 실시예(들)를 지칭하는 것은 아니다.
달리 구체적으로 언급되지 않는 한, 별개의 실시예의 맥락에서 설명된 본 발명의 특정 특징들이 단일 실시예에서 조합되어 제공될 수도 있다는 것이 이해된다. 반대로, 단일 실시예의 맥락에서 설명된 본 발명의 다양한 특징들이 또한 개별적으로 또는 임의의 적절한 하위 조합으로 제공될 수도 있다. 아래의 상세한 설명에서, 방법 및 장치에 대한 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다.
이를 염두에 두고, 본 발명의 특정 실시예에 따른 보안 컴퓨터 시스템의 개략적인 블록도를 도시하는 도 1a에 주의를 기울인다.
도 1에 도시된 시스템(100)은 입력 주변 장치 컴포넌트(본 명세서에서 입력 주변 장치라고도 함)(104) 및 출력 주변 장치 컴포넌트(본 명세서에서 출력 주변 장치라고도 함)(106)에 동작적으로 연결된 프로세싱 및 메모리 유닛(PMU)(102)을 포함하는 보안 컴퓨터 장치(본 명세서에서 보안 컴퓨터 장치라고도 함)이다.
특정 실시예에 따르면, 입력 주변 장치(104)는 사용자로부터 입력 데이터를 수신하고 그 입력 데이터를 PMU(102)로 전송하도록 구성된 입력 장치이다. 입력 장치의 비 제한적인 예에는 키보드, 포인팅 장치(예컨대, 마우스, 터치 패드, 포인팅 스틱, 터치 스크린, 트랙볼 등) 및 미디어 입력 장치(예컨대, 디지털 카메라, 스캐너, 웹캠, 레코더 등)를 포함할 수 있다. 본 개시물은 특정 유형의 입력 장치로 제한되지 않으며 임의의 적절한 입력 장치(들)가 여기에서 입력 데이터를 제공할 목적으로 이용될 수 있다는 점에 유의해야 한다.
일부 실시예에서, 입력 주변 장치(104)는 사용자로부터 입력 키 스트로크를 수신 및 암호화하고 암호화된 입력 데이터(본 명세서에서 보안 입력 데이터라고도 함)를 PMU로 전송하도록 구성된 보안 키보드일 수 있다. 일 실시예에서, 보안 키보드는 키 로깅 공격을 방지할 목적으로 키 스트로크 암호화 알고리즘을 입력 키 스트로크에 적용하도록 구성된 키보드 컨트롤러(예를 들어, 프로세서)를 포함할 수 있다. 예를 들어, RSA, AES, SHA, OTP 및 임의의 다른 적절한 알고리즘과 같은 대칭 또는 비대칭 암호화 체계가 사용될 수 있다. 예를 들어, 대칭 암호화 키는 입력 키 스트로크의 암호화와 암호화된 데이터의 복호화 모두를 위해 입력 주변 장치와 수신 모듈(예를 들어, 입력 관리자 모듈)간에 공유될 수 있다.
특정 실시예에 따르면, 출력 주변 장치(106)는 PMU로부터 처리된 출력 데이터를 수신하도록 구성된 출력 장치이다. 출력 장치의 비 제한적인 예는 시각 디스플레이 장치(예컨대, 화면, 모니터 등), 사운드 출력 장치(예컨대, 스피커, 헤드폰 등) 및 프린터 등을 포함할 수 있다. 본 개시물은 특정 유형의 출력 장치로 제한되지 않으며 임의의 적절한 출력 장치(들)가 출력 데이터를 제공하기 위해 본 명세서에서 사용될 수 있다는 점에 유의해야 한다.
일부 실시예에서, 출력 주변 장치(106)는 PMU로부터 암호화된 처리된 출력 데이터를 수신하고 디스플레이를 위한 렌더링을 위해 암호화된 처리된 출력 데이터를 복호화하도록 구성된 보안 디스플레이일 수 있다.
PMU(102)는 도 4-6을 참조하여 아래에서 더 상세히 설명되는 바와 같이 운영체제(100)에 필요한 모든 프로세싱을 제공하도록 구성된다. PMU(102)는 프로세서(108) 및 프로세서에 동작 가능하게 연결된 시스템 메모리(110)를 포함한다. 일부 실시예에서, 시스템 메모리(110)는 프로세서에 직접 액세스할 수 있는 메모리를 지칭할 수 있다. 프로세서는 저장된 명령을 읽고 필요에 따라 실행하도록 구성될 수 있다. 특정 실시예에 따르면, 시스템 메모리(110)는 보호 메모리(112) 및 공유 메모리(114)를 포함할 수 있다. 특히, 프로세서는 보호된 메모리를 통해 안전한 데이터 저장 및 실행을 가능하게 하기 위한 명령 세트를 포함하거나 이와 연관될 수 있다. 특정 실시예에서, 보호된 메모리는 시스템 메모리에서 분리되고 암호화된 영역으로서 구현될 수 있다. 구현 세부사항은 다른 플랫폼 및 아키텍처에서 상이할 수 있다는 것을 이해해야 한다. 또한, 본 명세서에서 언급되는 프로세서라는 용어는 데이터 처리 능력을 갖는 임의의 처리 회로를 포함하도록 광범위하게 해석되어야 하며, 본 개시는 그 유형 또는 플랫폼, 또는 그 안에 포함된 처리 코어의 수로 제한되지 않는다는 점에 유의해야 한다.
일부 실시예에서, 보안 엔클레이브(본 명세서에서 SE 또는 엔클레이브라고도 함)는 OS 프로세스의 맥락에서 애플리케이션이 내부에 데이터를 저장하고 코드를 실행하게 하기 위한 보안 영역(예를 들어, 분리되고 및 암호화된 영역)을 제공하는 애플리케이션 또는 프로세스에 내장된 신뢰할 수 있는 실행 환경이다. 보안 엔클레이브는 예를 들어 보안 엔클레이브 명령과 관련된 프로세서에 의해 제공되는 액세스 제어 메커니즘을 사용하여 데이터가 보호되는 EPC(Enclave Page Cache)에서 실행될 수 있다. EPC는 엔클레이브 코드가 실행되고 보호된 엔클레이브 데이터에 액세스하는 위치일 수 있다. EPC는 플랫폼의 물리적 주소 공간 내에 위치할 수 있지만 SE 명령어를 사용해서만 액세스할 수 있다. 예로서, EPC는 보호된 메모리(112) 또는 그 일부로서 구현될 수 있다. EPC는 많은 상이한 엔클레이브로부터의 페이지들을 담고 있을 수 있고, 페이지의 무결성과 기밀성을 보호하기 위한 액세스 제어 메커니즘을 제공한다. 페이지 캐시는 플랫폼에서 일관된 물리적 메모리에 사용되는 것과 유사한 일관된 프로토콜을 유지할 수 있다. 엔클레이브 페이지는 OS에 의해 EPC에 로드될 수 있다. 보안 엔클레이브는 도 2를 참조하여 아래에 자세히 설명되어 있다.
일부 실시예에서, 프로세서(108)는 보안 엔클레이브를 지원하는 프로세서 일 수 있다. 일부 실시예에서, 보안 엔클레이브를 지원하는 프로세서는 인텔 SGX(Software Guard Extensions)를 이용할 수 있다. SGX는 해당 메모리 보호 의미 체계 및 관리에 사용되는 명령을 갖는 프로세서 상의 새로운 실행 모드이다. SGX는 보호된 메모리 페이지를 원하는 코드와 데이터로 채우고, 코드와 데이터를 엔클레이브 내에 잠그고, 그 안에서 측정을 수행하여 보안 엔클레이브를 생성할 수 있다. 프로세서는 엔클레이브 내부에서 코드를 실행할 수 있다. 커널(링 0) 또는 하이퍼바이저(링 "-1"), SMM(링 "-2") 또는 AMT(링 "-3")를 포함한 다른 엔티티는 엔클레이브에 속하는 메모리 페이지를 판독 및 기록할 권한이 없다. 일부 실시예에서, 보안 엔클레이브를 지원하는 프로세서는 예를 들어 어드밴스드 마이크로 디바이스즈(Advanced Micro Devices)의 메모리 암호화 기술을 활용할 수 있다.
보안 엔클레이브를 지원하는 프로세서(본 명세서에서 보안 엔클레이브 지원 프로세서라고도 함)는 보안 엔클레이브를 사용하여 보안 데이터 저장 및 실행을 가능하게 하는 복수의 보안 엔클레이브 명령을 포함하는 명령 세트 아키텍처를 갖는 것으로 인식될 수 있다.
단지 예시를 위해, SGX 및 보안 엔클레이브와 관련하여 아래 설명의 특정 실시예가 제공된다. 마찬가지로, 실시예들은 AMD 및 ARM(예컨대, 'TrustZone')과 같은 유사한 데이터 보안 및 액세스 제어 메커니즘을 구현하는데 사용할 수 있는 다른 플랫폼 및/또는 공급 업체의 기술에 적용 가능하다.
PMU는 부팅 프로세스(파워 온 스타트업) 동안 하드웨어 초기화를 수행하고 운영체제 및 프로그램에 대한 런타임 서비스를 제공하도록 구성된 BIOS(Basic Input/Output System) 컴포넌트(130)를 더 포함할 수 있다. 일 실시예에서, BIOS(130)는 컴퓨터의 시스템 보드에 사전 설치된 펌웨어로 구현될 수 있다. 본 명세서에서 언급되는 BIOS는 임의의 종류의 시스템 초기화 및 사전 부팅 환경 도구를 포함하도록 광범위하게 해석되어야 하며, 본 개시는 이들의 상이한 구현 및 설계에 의해 제한되어서는 안된다는 점에 유의해야 한다.
어떤 경우에, UEFI(Unified Extensible Firmware Interface)가 BIOS의 개선 된 버전으로 사용될 수 있다. UEFI는 마더 보드의 플래시 메모리에 저장되거나 다른 저장 장치에서 로드될 수 있다. UEFI는 보안 부팅 또는 측정된 부팅 등을 지원할 수 있다. 즉, 운영체제의 유효성을 검사하여 멀웨어가 부팅 프로세스를 조작하지 않았는지 확인할 수 있다. TPM 및/또는 HSM 장치를 사용하여 유효성 검증을 용이하게 할 수 있는 다른 방법이 부팅 및/또는 사전 부팅 환경의 유효성을 검증하는데 사용될 수 있다. UEFI 펌웨어 자체에서 바로 네트워킹 기능을 지원하여 고급 인증 및 유효성 검사를 수행할 수 있다(예컨대, 토큰 기반 원격 승인 부팅, 부팅 권한 취소 등).
특정 실시예에서, BIOS 컴포넌트(130)(예를 들어, UEFI 또는 임의의 다른 사전-부팅 환경 도구)는 사용자의 인증, 현재 사용자 및 세션의 인증 및 어바웃 투 부트(about-to-boot) 운영체제의 검증을 제공하도록 구성될 수 있다. 이것은 일부 경우 운영체제가 부팅되기 전에도 암호화 방식으로 지원될 수 있는 보안 조치를 제공하기 위한 것이다. 일 실시예에서, BIOS는 운영체제를 부팅할지 여부를 결정하기 위해 검증을 수행하도록 구성될 수 있다. 예를 들어, BIOS는 예를 들어 클라우드 환경과 같은 원격 환경에 대한 인터넷 연결이 있는지 확인하도록 구성할 수 있으며 유효한 연결이 있는 경우에만 OS를 부팅하도록 결정할 수 있다. 또한, 유효한 연결이 있는 경우, BIOS는 OS 부팅에 사용할 토큰을 추가로 요청할 수 있다. 다른 예로, BIOS는 GPS 위치 확인을 시행하도록 구성되어 OS가 특정 지리적 경계 내에서 부팅되도록(또는 부팅되지 않도록) 할 수 있다. 또 다른 예로서, BIOS는 조직의 승인을 받은 경우에만 부팅 프로세스를 수행하도록 구성할 수 있다. 부여되는 승인 레벨에 따라 운영체제가 작동할 수 있는 여러 상태가 있을 수 있다.
특정 실시예에 따르면, 보안 컴퓨터 시스템(100)은 운영체제(100)에 필요한 임의의 데이터를 저장하도록 구성될 수 있는 저장 유닛(도면에 도시되지 않음)을 포함할 수 있다. 저장 장치는 시스템에 보조 저장 장치를 제공할 수 있으며 하드 디스크, 플래시 메모리 등을 포함할 수 있다. 시스템(100)은 또한 사용자 지정 입력을 가능하게 하고 시스템(100)과 관련된 출력을 렌더링하도록 구성된 그래픽 사용자 인터페이스(GUI)를 포함할 수 있다.
일부 실시예에서, 보안 컴퓨터 장치(100)는 물리적 보안 측면에서 더욱 향상될 수 있다. 예를 들어, 보안 컴퓨터 장치에는 물리적 변조 방지 인클로저(140)가 장착될 수 있다(도 1a에 도시됨). 예를 들어, 컴퓨터 장치의 외부 케이스는 예를 들어 FIPS 140-2 레벨 4와 같은 업계 관행 및 표준을 기반으로 변조 방지될 수 있으므로 물리적 검사 또는 분해에 대한 보호를 제공할 수 있고, 이러한 시도가 있을 경우 데이터에 대한 추가 보호를 제공한다. 부가적으로 또는 대안으로서, 사용자 개입이나 의도없이 악용될 수 있는 특정 주변 장치(예컨대, 카메라, 마이크, 무선/블루투스 구성 요소 등)에 대한 액세스를 제어하기 위해 하나 이상의 하드웨어 스위치를 도입할 수 있다. 부가적으로 또는 대안으로서, 보안 컴퓨터 장치는 사이드 채널 공격을 방지하기 위해 임의의 물리적 잡음(예를 들어, 열 편차, 전기 플럭스, RF 잡음, 음향 등)을 생성하는 물리적 마이크로 유닛일 수 있는 열/전기적 잡음 발생기를 장착할 수 있다. 부가적으로 또는 대안으로서, 물리적 변조 방지 인클로저(140)는 인클로저(예를 들어, 외부 케이싱, 하드웨어 스위치 등)로부터 입력을 수신하고, 임의의 변조 이벤트가 있는지 결정하고, 그에 따라 보호 조치를 제공하도록 구성된 회로를 더 포함할 수 있다.
보안 컴퓨터 장치(100)는 예를 들어 랩톱, 데스크탑 등과 같은 임의의 유형의 독립형 컴퓨터 장치일 수 있다는 점에 유의해야 한다. 입력 주변 장치(104) 및 출력 주변 장치(106)가 컴퓨터 장치(100)의 일부로서 통합되는 것이 도 1a에 도시되어 있지만, 일부 경우에 이러한 구성 요소는 분리된 유닛으로 구현될 수 있고 컴퓨터 장치 동작적으로 연결될 수 있음을 이해해야 한다.
당업자는 본 발명의 교시가 도 1a에 도시된 시스템에 의해 구속되지 않는다는 것을 쉽게 인식할 것이다. 동등 및/또는 수정 된 기능은 통합되거나 다른 방식으로 분할 될 수 있으며 소프트웨어와 펌웨어 및 하드웨어의 적절한 조합으로 구현될 수 있다.
이제 도 1b로 돌아가면, 본 발명의 특정 실시예에 따른 보안 컴퓨터 시스템의 PMU에 포함된 기능적 구성 요소의 개략적인 블록도가 도시되어 있다.
프로세서(108)는 시스템 메모리(110)에 포함된 비 일시적 컴퓨터 판독 가능 메모리 상에 구현된 컴퓨터 판독 가능 명령어에 따라 여러 기능적 구성 요소/모듈을 실행하도록 구성될 수 있다. 이러한 기능 모듈은 PMU(102)에 포함된 것으로 이하에서 언급된다.
PMU(102)에 포함된 기능적 구성 요소는 운영체제(OS)(116) 및 운영체제(116)에 의해 실행 가능한 모듈 그룹(120)을 포함할 수 있다. OS 116은 보안 강화 확장(예컨대, SELinux, GRSec)과 함께 리눅스(Linux) 커널의 축소/제거된 버전을 포함할 수 있는 안전한 기본 OS일 수 있다. 일부 실시예에서, BSD 파생 커널/유저 랜드는 사용 및 평가될 수 있을 뿐만 아니라, 예를 들어 'capsicom', 'pledge' 등과 같은 추가 보안 기능도 사용할 수 있다. 이러한 기본 OS에서 직접 사용되지 않는 각 구성 요소는 커널로 컴파일(또는 동적으로 로딩)되지 않지만 특정 고급 보안 커널 확장은 추가 보안을 위해 컴파일된다. 예를 들어, 사용되지 않는 바이너리는 사용자 공간에서 제거될 수 있다. 선택사항으로서, 추가 컴파일 시간 보안 기능을 사용하여 라이브러리를 최소 필수 기능 세트로 다시 컴파일 할 수 있다. COW(copy on write) 파일 시스템의 별도의 풀(pool)이 판독 전용 연속 스냅 샷 생성 및 블록 레벨 체크 합산 및 파일 시스템 메타 데이터 의미 체계의 고급 사용과 함께 사용된다. 이를 통해 유효성 검사 및 복구와 같은 주요 기능을 사용할 수 있다. 특히, OS는 도 2를 참조하여 아래에서 설명하는 바와 같이 OS 자체(커널 포함)가 손상 되더라도 키 손상을 방지하는 보안 엔클레이브 지원 장치 암호화를 가능하게 한다.
특정 실시예에 따르면, 모듈 그룹(120)은 적어도 하나의 기록기 모듈(122)(본 명세서에서 기록기라고도 함) 및 적어도 하나의 판독기 모듈(124)(본 명세서에서 판독기라고도 함)을 포함할 수 있다. 모듈 그룹 내의 각 모듈은 보호된 메모리 내에서 실행될 지정된 보안 영역을 포함할 수 있다. 모듈 그룹은 인증을 생성하고 복합 키를 사용하여 액세스 할 수 있는 공유 메모리를 통해 입력 데이터를 안전하게 공유하도록 구성되고, 복합 키는 명령 세트에 의해 활성화된 지정된 보안 영역 간의 데이터 공유 메커니즘을 사용하여 그룹 내에서 생성되며, 이는 도 2를 참조하여 아래에 자세히 설명된다.
그룹 내의 이들 모듈은 시스템 레벨 모듈/프로세스뿐만 아니라 서로 작동 가능하게 연결되고 데이터를 공유할 수 있는 애플리케이션 레벨 모듈/프로세스를 모두 포함하도록 광범위하게 구성되어야한다는 점에 유의해야 한다. 모듈 그룹은 기능을 설명할 목적으로 일반적인 레이아웃 방식으로 설명되지만 실제 시스템 계층 또는 구조를 반영하려는 의도는 아니다. 이들 모듈의 특성 및 기능에 따라 이러한 모듈의 임의의 적절한 구현이 적용될 수 있으며, 본 개시는 특정 구현에 제한되지 않음을 이해해야 한다.
이를 염두에 두고, 본 발명의 특정 실시예에 따른 모듈 그룹의 개략적이고 예시적인 구현예를 나타내는 도 2를 참조한다.
도 2에 도시된 바와 같이, 일 실시예에서, 적어도 하나의 기록기 모듈(122)은 입력 관리자 모듈(202)을 포함할 수 있다. 적어도 하나의 판독기 모듈(124)은 상태 관리자 모듈(204), 보안 환경 모듈(206) 및 출력 관리자 모듈(208)을 포함하는 그룹으로부터 선택된 하나 이상의 모듈을 포함할 수 있다. 각 모듈에는 모듈이 코드를 실행하고 데이터를 저장할 수 있는 보안 환경을 제공하는 지정된 보안 영역(각 모듈에 설명됨)이 내장되어 있다. 엔클레이브는 보호된 메모리 내에서 실행될 수 있다. 상술한 보안 엔클레이브를 지원하는 플랫폼의 경우, 보안 영역은 EPC 영역에서 실행되는 보안 엔클레이브를 의미할 수 있다. 위에서 설명한 것처럼, EPC는 별도의 컨테이너로 유지되는 보호 영역이 될 수 있으며 실행이 엔클레이브 내부가 아닌 경우 액세스 할 수 없다. 엔클레이브가 입력되면 제어가 EPC 내부 엔클레이브 코드로 전송될 수 있다. SE 명령은 현재 권한 수준 및 CPU 모드(ring3/사용자-모드, ring0/커널 모드, SMM, VMM 또는 다른 영역)에 관계없이 (주어진 모듈의) 주어진 엔클레이브에 속하는 영역 메모리 페이지를 해당 영역 외부에서 읽거나 쓸 수 없도록 하는 액세스 제어 메커니즘을 제공할 수 있다. 따라서, 각 모듈은 다른 엔티티가 액세스 할 수 없는 지정된 엔클레이브를 사용하여 자체 코드와 데이터를 안전하게 보호할 수 있다.
본 발명의 특정 실시예에 따르면, 전술한 보안 엔클레이브 메커니즘은 보안 데이터 보호의 원래 의도 및 사용에 추가하여 그룹 내의 모듈 사이에서 신뢰 및 인증을 설정하는 데 사용될 수 있다.
구체적으로, 모듈 그룹은 인증을 생성하고 복합 키를 사용하여 액세스 가능한 공유 메모리(114)를 통해 데이터(예를 들어, 입력 데이터)를 안전하게 공유하도록 구성될 수 있다. 특정 실시예에 따르면, 보안 엔클레이브 지원 플랫폼의 경우, 복합 키는 보안 엔클레이브 명령에 의해 제공되는 봉인 및 봉인 해제 메커니즘을 사용하여 그룹의 각 모듈에 의해 제공되는 각각의 키 구성 요소를 사용하여 각 모듈에 의해 독립적으로 생성되며, 이는 도 4를 참조하여 아래에서 더 자세히 설명된다.
신뢰 설정을 가능하게 하는 보안 엔클레이브 메커니즘을 도입한 후, 본 발명의 특정 실시예에 따라 공유 메모리에 대해 모듈 그룹에 의해 수행되는 동작의 일반화된 흐름도를 도시하는 도 5를 참조한다.
공유 메모리는 그룹의 각 모듈에 액세스 할 수 있다. 적어도 하나의 기록기 모듈(122)은 입력 주변 장치 컴포넌트(104)로부터 입력 데이터를 수신(502)하고, 도 4를 참조하여 설명된 프로세스에서 생성된 복합 키를 사용하여 입력 데이터를 암호화(504)하고, 공유 메모리(114)에 암호화된 입력 데이터를 기록(506)한다.
입력 주변 장치 컴포넌트(104)로부터 수신된 입력 데이터가 보안 입력 데이터(예를 들어, 대칭 키를 사용하여 보안 키보드에 의해 암호화 됨)인 경우, 기록기 모듈(122)은 보안 키보드와 공유된 대칭 키를 사용하여 보안 입력 데이터를 추가로 복호화하고, 복합 키를 사용하여 입력 데이터를 재 암호화하고, 재 암호화된 입력 데이터를 공유 메모리(114)에 기록하도록 구성될 수 있다.
적어도 하나의 판독기 모듈(124)은 공유 메모리로부터 데이터(예를 들어, 암호화된 입력 데이터)를 판독(508)하고, 복합 키를 사용하여 암호화된 입력 데이터를 복호화(510)하고, 복호화된 입력 데이터를 사용(512)하도록 구성될 수 있다. 전술한 바와 같이, 적어도 하나의 판독기 모듈(124)은 상태 관리자 모듈(204), 보안 환경 모듈(206) 및 출력 관리자 모듈(208)을 포함하는 그룹으로부터 선택된 하나 이상의 모듈을 포함할 수 있다.
이러한 판독기 모듈은 모두 위에서 설명한 방식으로 공유 메모리로부터 판독할 수 있다. 몇몇 경우에, 이들 각각은 그들과 관련된/연관된 데이터를 선택적으로 판독할 수 있다. 일부 실시예에 따르면, 상태 관리자 모듈(204)은 운영체제의 환경 상태, 예를 들어, 시스템이 보안 환경에서 작동하는지 가상화된 로컬 환경에서 작동하는지 여부를 모니터링하기 위해 시스템의 상태 정보를 판독하도록 구성될 수 있다. 환경이 전환되는 경우(예를 들어, 가상화된 로컬 환경에서 보안 환경으로 또는 그 반대로), 상태 관리자 모듈(204)은 관련 모듈과 구성 요소 사이의 조정자 역할을 하도록 구성될 수 있고, 이는 도 6을 참조하여 아래에 설명될 것이다.
보안 환경 모듈(206)은 공유 메모리로부터 암호화된 입력 데이터(기록기 모듈, 예를 들어, 입력 관리자 모듈(202)에 의해 암호화됨)를 판독하고, 암호화된 입력 데이터를 복호화하고, 원격 연결을 통해 입력 데이터를 원격 작업 환경으로 안전하게 전달하고, 그리고 원격 작업 환경에서 안전하게 처리된 출력 데이터를 수신하도록 구성될 수 있다. 예를 들어, 보안 환경 모듈(206)은 예를 들어 입력 데이터가 전송되고 처리되는 원격 PC, 원격 서버, 클라우드 등과 같은 원격 작업 환경에 연결하는데 사용될 수 있는 원격 데스크톱(RDP) 클라이언트의 애플리케이션 일 수 있다. 따라서, 몇몇 경우에 보안 환경 모듈을 원격 환경 모듈이라고도 한다. 보안 환경 모듈(206)은 위에서 설명한 보안 데이터 공유 및 보호 메커니즘을 활용하여 지속적으로 보안된 작업 환경을 유지하는 보안 엔클레이브 인식 런타임 환경이다.
RDP 클라이언트와 원격 작업 환경 간의 보안 통신은 다양한 방식으로 구현 될 수 있다. 예를 들어, 종단 간 암호화, TLS/SSL(Transport Layer Security/Secure Sockets Layer) 암호화, 일회용 암호 및 기타 독점 알고리즘 등과 같은 암호화 체계를 사용할 수 있다. 이러한 암호화 체계는 비 제한적인 예로서 전송 및/또는 페이로드 암호화 등에 사용될 수 있다. 일부 실시예에서, 장치와 원격 엔티티 사이의 원격 인증 프로세스가 확립될 수 있으며, 이는 도 7을 참조하여 아래에서 설명될 것이다.
출력 관리자 모듈(208)은 처리된 출력 데이터를 출력 주변 컴포넌트(106)에 제공하도록 구성될 수 있다. 예를 들어, 처리된 출력 데이터가 RDP 클라이언트에 의해 원격 작업 환경으로부터 수신되면 RDP 클라이언트는 출력 데이터를 공유 메모리에 쓸 수 있고 출력 관리자 모듈(208)은 그로부터 출력 데이터를 판독하고 그것을(예컨대, 디스플레이를 위한 렌더링을 위해) 출력 주변 장치에 제공할 수 있다. 이러한 보안 출력 경로의 구현예는 아래에서 자세히 설명된다.
이러한 안전한 작업 환경에서, 일단 보안 입력 데이터가 입력 주변 컴포넌트로부터 수신되면, 이 데이터는 모듈 그룹간에 안전하게 공유될 수 있고(보안 엔클레이브에 기반한 보안 데이터 공유 및 보호 메커니즘에 의해 활성화됨), 그러므로 입력에서 출력에 이르는 전체 프로세스가 종단 간 안전하게 보호됨이 보장되며, 이러한 보호는 커널 레벨/SMM/ME 공격에 대해 유효하다.
이제 도 4로 돌아가면, 본 발명의 특정 실시예에 따라 모듈 그룹에서 각각의 주어진 모듈에 의해 복합 키를 생성하는 일반화된 흐름도가 도시되어 있다.
전술한 바와 같이, 각각의 주어진 모듈에는 모듈이 코드를 실행하고 데이터를 저장하는 보안 환경을 제공하는 지정된 보안 엔클레이브가 내장되어 있다. 모듈 그룹의 각 주어진 모듈은 지정된 보안 엔클레이브에서 특정 세션에 대한 개인 키 구성 요소를 생성하고(402) 그 안에 키 구성 요소를 저장하도록 구성될 수 있다. 키 구성 요소는 예를 들어 임시적인 논스(ephemeral nonce)로서 무작위로 생성될 수 있다. 키 구성 요소가 생성되고 보안 엔클레이브에 저장되기 때문에 SE 명령에서 제공하는 액세스 제어 메커니즘으로 인해 주어진 모듈 자체를 제외한 다른 엔티티는 이 키 정보에 액세스 할 수 없다.
각각의 주어진 모듈은 그룹 내의 다른 모듈로부터 각각의 키 구성 요소를 획득하기 위해 공유 메모리를 통해 그룹 내에서 자신의 키 구성 요소를 안전하게 교환(406)할 수 있다. 특정 실시예에 따르면, 이 키 교환은 보안 엔클레이브의 봉인 및 봉인 해제 메커니즘을 사용함으로써 가능하다.
봉인은 엔클레이브 데이터의 기밀성을 보호하고 엔클레이브가 EPC로 다시로드될 때 변조를 감지하기 위해 디스크에 영구 저장하기 위해 엔클레이브 데이터를 암호화하는 프로세스를 의미한다. 이를 통해 엔클레이브가 해체된 경우(예컨대, 전원 이벤트 또는 애플리케이션 자체에 기인함), 엔클레이브 데이터를 검색하고 나중에 다시 가져올 수 있다. 어떤 면에서 봉인은 해당 특정 플랫폼 및 영역에 고유하고 다른 엔티티에는 알려지지 않은 개인 봉인 키를 사용하는 암호화로 간주될 수 있다. 서로 다른 엔클레이브 ID를 사용하여 봉인하는 여러 가지 방법이 존재한다. 엔클레이브와 관련된 ID 중 하나는 배포 전에 해당 엔클레이브에 서명하는 권한 엔터티(예컨대, 개발 회사)에서 제공하는 서명 ID이다. 이 값을 'MRSIGNER'라고 하며 동일한 권한 엔티티로 서명된 모든 엔클레이브에 대해 동일하다. 따라서, 이러한 엔클레이브가 모두 동일한 권한 엔티티로 서명되는 한 동일한 봉인 키를 다른 엔클레이브에 사용할 수 있다.
본 발명의 특정 실시예에 따르면, 그룹 내의 복수의 모듈에 지정된 보안 엔클레이브는 모두 동일한 권한 엔티티(예컨대 모듈의 소유자/생산자)에 의해 서명되고, 모두 기관 엔티티의 서명 아이덴티티와 연관된다. 서명 아이덴티티를 사용하여 봉인된 지정된 보안 엔클레이브의 엔클레이브 데이터는 지정된 보안 엔클레이브와 동일한 서명 아이덴티티를 공유하는 유효하고 적절하게 인스턴스화된 보안 엔클레이브에 의해서만 동일한 플랫폼에서 성공적으로 봉인 해제될 수 있다. 따라서, 서명 아이덴티티를 사용하는 봉인 및 봉인 해제 메커니즘은 동일한 기관 엔티티에 의해 소유/생성된 상이한 모듈들의 복수의 엔클레이브간에 엔클레이브 데이터를 안전하게 공유할 수 있으므로 그룹의 모듈간에 하드웨어 기반 인증 및 신뢰를 구축할 수 있다.
전술한 바와 같이 키 구성 요소의 보안 교환(406)을 다시 참조하면, 구체적으로 그룹 내의 하나의 모듈(예를 들어, 기록기 모듈)은 교환 프로세스 동안 다른 단계/스테이지를 조정하기 위한 조정자 모듈로 작동할 수 있다. 제 1 스테이지에서, 각각의 주어진 모듈은 키 구성 요소를 봉인(408)하고 봉인된 키 구성 요소를 공유 메모리에 복사할 수 있다. 모든 모듈의 모든 봉인된 키 구성 요소가 공유 메모리로 복사되면, 코디네이터 모듈은 스테이지 변경을 그룹에 알릴 수 있으며, 각각의 주어진 모듈은 공유 메모리로부터 자신의 지정된 보안 엔클레이브로 다른 모듈의 각각의 봉인된 키 구성 요소를 복사(410)하고, 지정된 보안 엔클레이브에서 각각의 봉인된 키 구성 요소를 봉인 해제(412)하도록 구성될 수 있다. 주어진 구성 요소에 의해 봉인된 키 구성 요소를 성공적으로 봉인 해제하면, 해당 구성 요소가 유효하고 신뢰할 수 있으며 변조되지 않은 엔티티임이 증명된다.
그룹의 다른 모든 모듈로부터의 모든 키 구성 요소가 성공적으로 봉인 해제되면, 각 주어진 모듈은 지정된 보안 엔클레이브에서 그룹 내의 각 모듈로부터의 각각의 키 구성 요소를 사용하여 복합 키를 독립적으로 생성할 수 있다(414). 복합 키는 그룹에 있는 모든 모듈의 모든 주요 구성 요소에서 파생되어야 한다. 각 활성 참여 모듈은 복합 키를 만드는 데 사용할 핵심 구성 요소를 제공하여 가능한 리플레이 공격을 방지해야 한다. 또한 각 모듈은 공유 메모리에서 복사된 다른 모듈의 키 구성 요소와 로컬에 저장된 자체 키 구성 요소를 사용하여 복합 키를 생성한다.
각 모듈에 의해 독립적인 복합 키 생성이 완료되면, 코디네이터 모듈은 그룹에 스테이지 변경을 알릴 수 있으며, 도 5를 참조하여 그룹은 상술한 바와 같이 복합 키를 이용하여 그룹 내 보안 데이터 통신을 시작할 수 있다. 일 실시예에서, 기록기 모듈은 자체적으로 생성된 복합 키를 사용하여 데이터를 암호화하고 암호화된 데이터를 공유 메모리에 기록할 수 있다. 판독기 모듈이, 공유 메모리로부터 암호화된 데이터를 판독할 때, 자체 생성된 복합 키를 사용하여 암호화된 데이터를 성공적으로 복호화할 수 있는 경우, 이는 반드시 자체 키 구성 요소가 복합 키를 생성하는데 사용되었음을 나타내고, 이는 다른 모듈의 유효성 검증 및 보안을 제공한다.
특히, 본 발명에서, 서명 아이덴티티를 사용하는 봉인 및 봉인 해제 메커니즘은 단순히 데이터를 공유하는 것이 아니라 신뢰 및 보안을 구축하는데 사용된다는 점에 유의해야 한다. 봉인된 데이터를 성공적으로 전송하고 새로운 암호화된 데이터(복합 키 사용)를 검사함으로써, 성공적인 봉인 해제 오퍼레이션이 수행될 수 있다. 모든 참여 모듈에서 성공적인 봉인/봉인 해제 오퍼레이션을 수행한다는 개념이 신뢰를 신뢰를 생성하는데, 유효하고 신뢰할 수 있으며 변조되지 않은 엔클레이브 만이 이것을 수행할 수 있기 때문이다. 따라서, 이 신뢰에 대한 하드웨어 앵커가 구축된다.
특정 실시예에 따르면, 모듈 그룹에 참여하는 모듈의 수는 제한되거나 미리 정의되지 않는다. 임의의 주어진 시간에 새 모듈이 그룹에 합류할 수 있으며, 이 때 현재 참여중인 모든 모듈에서 새로운 복합 키가 상술한 것과 유사한 프로세스로 생성되며(새로 가입하는 모듈에 의해 요청됨), 이는 모든 참여 모듈의 상태를 효과적으로 검증할 뿐만 아니라 리플레이 어택을 방지한다. 이러한 키 재생성은 키 리플레시 또는 키 롤오버라고도 한다. 예를 들어, 새로 가입하는 모듈이 새로운 복합 키를 독립적으로 생성한 후 그 새로운 복합 키를 사용하여 데이터를 성공적으로 판독할 수 있다면, 이는 새로운 모듈과 나머지 멤버 간의 키 교환이 성공적이고 단지 그것의 키 구성 요소가 새로운 복합 키에 사용된다는 것을 의미한다. 다른 예로써, 새로 합류하는 모듈이 독립적으로 새로운 복합 키를 생성한 후 신뢰할 수 없는 엔티티로부터 오래된 키를 사용했던 플레이백 메모리를 수신하면, 그 새로 가입하는 모듈은 그것이 유효하지 신뢰할 수 있는 엔티티로부터 온 것이 아님을 검증할 수 있을 것이다. 또 다른 예로써, 키 변경 시, 기록기 모듈은 모듈로부터 제공된 키 구성 요소를 검사하고 현재 활성화된 모듈을 검증할 수 있다.
일부 실시예에서, 복합 키는 또한 키 신선도를 강화하고 키 마모를 방지하기 위해 주어진 시간 인터벌마다 반복적으로 재생성되도록 요구될 수 있다. 선택사항으로서, 키 구성 요소를 기반으로 복합 키를 생성하는데 사용되는 정책/알고리즘도 다양할 수 있으며 키 구성 요소가 변경되지 않고 유지되더라도 그것으로부터 야기된 실제 복합 키는 상이할 수 있기 때문에, 하나의 세트의 미리 정의된 옵션 중에서 선택될 수 있고, 이는 추가적인 보안 보호를 제공한다. 임의의 주어진 시간에, 기존 맴버 모듈은 현재 복합 키에 영향을 주지 않고 그룹에서 나갈 수 있다.
특정 실시예에 따르면, 전술한 바와 같은 새로 합류하는 모듈 리플레이 보호에 더하여, 지속적인 리플레이 보호도 제공된다. 예를 들어, 기록기 모듈은 제공자로서 기록 세션이 시작될 때 시작되고 새로운 데이터 유닛이 제공될 때 이 카운터를 지속적으로 증가시키는 세션 모노토닉 카운터를 사용할 수 있다. 모노토닉 카운터는 데이터 유닛/요소 당 카운터이다. 판독기 모듈은 소비자로서 데이터를 판독할 때 이 카운터 값을 판독할 수 있으며 이 값을 로컬에 저장할 수 있다. 이 카운터 값이 앞으로만 진행될 것으로 예상되기 때문에, 판독기 모듈에 의해 현재 판독된 값이 이전에 저장된 값보다 낮으면 판독기 모듈은 데이터에 손상이 있다고 가정할 수 있다. 또한, 판독기 모듈은 세션 모노토닉 카운터를 지속적으로 추적한다. 유효한 증분 카운터는 유효한 기록기 모듈을 나타낼 수 있다.
이제 도 3으로 돌아가면, 본 발명의 특정 실시예에 따른 공유 메모리의 데이터 구조의 개략적 표현이 도시되어 있다. 공유 메모리(114)는 비 제한적인 예로서 보안 링 캐시(300)의 데이터 구조로서 대표적으로 도시되어 있다. (메모리가 링으로서 물리적으로 생성되지 않으므로, 링 캐시(300)는 대표 목적으로만 도시된 것임을 이해해야 한다. 여기에 설명된 것과 동등한 기능을 갖는 선형 표현이 구현에 사용될 수 있다. 일부 실시예에서, 링 캐시의 구현은 오버플로에 대한 보호를 구현해야한다는 점에 유의해야 한다.) 일부 실시예에서, 다수의 판독기 및 다수의 기록기를 지원하고 데이터를 판독해도 삭제되지 않는 적절한 데이터 구조와 같은 상이한 데이터 구조가 사용될 수 있다.
링 구조는 실제 시작점이나 끝점이 없으며 데이터는 링 주위를 순환할 수 있다. 링 캐시에 저장된 기본 데이터 요소는 메타 데이터(302) 및 페이로드(304)를 포함하는 데이터 패킷(301)으로 도시되어 있다. 메타 데이터 및 페이로드는 모두 암호화될 수 있고, 또는 대안으로서 페이로드만 암호화될 수 있다. 메타 데이터(302)는, 예를 들어 설명자, 타임스탬프, 패킷 카운터 등과 같은 오버 헤드 정보를 포함할 수 있다. 페이로드(304)는 전달되는 실제 데이터를 포함한다. 데이터 패킷은 그것을 구현하는 프로토콜에 따라 구조와 기능이 다를 수 있다. 데이터 패킷은 판독 전용이지만 소모(즉, 삭제)되지 않는다. 완전한 원에 도달하면, 가장 오래된 데이터 패킷이 덮어쓰기 된다. 링 캐시는 판독기가 데이터가 덮어 쓰기 되기 전에 데이터를 판독할 수 있는 충분한 시간을 가질 수 있도록, 충분히 큰 방식으로 구축될 수 있다. 일 실시예에서, 링 캐시는 100-200 개의 키 스트로크를 수용하도록 크기 조정될 수 있다. 링 캐시 크기는, 예를 들어, 입력 유형 및 처리량과 같은 요인에 따라 달라질 수 있다는 점에 유의해야 한다. 입력 주변 장치가, 예컨대, 마이크로폰인 경우, 링 캐시는 시간 단위로 크기 조정될 수 있다.
특정 실시예에 따르면, 데이터 패킷에 더하여, 링 캐시는 기록기 데이터(예를 들어, 마지막 기록 위치(306) 및 기록기 활성 플래그 등을 포함), 판독기 데이터(예를 들어, 판독기 활성 플래그 등 포함), 암호화 처리 데이터(봉인된 키 구성 요소, 키 롤오버 플래그 등 포함) 및 링 메타 데이터를 포함하는 글로벌 데이터를 전달할 수 있다.
설명한 바와 같이, (기록기 데이터의 일부로서) 마지막 기록 위치(306)를 나타내는 마커가 제공된다. 기록기는 모든 기록 작업 후 이것을 업데이트한다. 마지막 기록 위치는 모든 기록 상태가 끝날 때 기록기에 의해 업데이트된다. 기록기 마커는 마지막 기록 위치를 나타내는 공개 값이다. 모든 판독기는 이 값을 독립적으로 추적하여 기록기 액션을 계속 추적할 수 있다.
각 판독기는 다른 것에게 영향을 주지 않고 독립적으로 데이터를 판독한다. 각 판독기는 개별적으로 기록기를 따라갈 수 있으며, 예를 들어, 마지막 판독 위치를 추적하여, 그것의 마지막 판독 이후 기록된 새 데이터의 양과 내용을 판정할 수 있다. 마지막 판독 위치는 그 특정 판독기가 마지막으로 판독했던 위치를 나타내는 비공개 값이다. 이것은 공개되지 않으며 각 판독기 모듈 내에서 내부적으로 유지된다. 판독기가 그룹에 참여하면, 마지막 기록 위치를 마지막 판독 위치로 기록하고 기록기 추적을 시작한다. 판독기가 새로운 시간에 판독할 때, 판독기는 내부적으로 저장된 마지막 판독 위치를 현재 공개된 마지막 기록 위치와 비교하고, 같지 않은 경우, 카운트의 차이는 기록기가 마지막 판독 이후 만든 새로운 기록을 반영한다. 판독 동안, 각 판독기는 마지막 판독 이후 기록된 일부 또는 모든 새 데이터 패킷을 판독할 수 있다.
일부 실시예에서, 기록기와 판독기는 공유 메모리를 통해 데이터 공유 시스템에서 서로 느슨하게 결합된 것으로 간주될 수 있다. 기록기는 지속적으로 판독기와는 독립적으로 데이터를 기록할 수 있고, 반면 판독기는 지속적으로 다른 판독기와는 독립적으로 데이터를 판독할 수 있다. 이것은 본 발명의 특정 실시예에 따라 도 8에 도시 된 바와 같이, 메모리 액세스 상태(모드라고도 함) 스위칭을 사용하여 동기화를 위한 임의의 잠금 메커니즘의 사용을 피함으로써 달성될 수 있다.
도 8에 도시된 바와 같은 아래의 상태들이 사용될 수 있다.
● 초기 상태
- 현재, 판독기 또는 기록기 상태가 아님.
● 판독기 상태
- 임의의 판독기가 판독기 상태로 상태 변경을 시작할 수 있다.
- 실제 상태 변경은 기록기 상태가 아닌 경우 즉시 또는 초기 상태로 변경된 후에 발생할 것이다.
- 판독기 요청 플래그가 "업(up)"인 경우, 새로운 판독기는 판독기 상태가 완료될 때까지 대기할 것이다.
- 하나 이상의 판독기가 동시에 또는 차례로 변경을 시작할 수 있다. 판독기 상태는 마지막 판독기가 완료된 후 다시 초기 상태로 변경될 것이다.
- 판독기는 독립적이며 서로 간섭하지 않는다. 판독기들은 오직 기록기와 만 조정한다.
● 판독기 대기 상태
- 기록기 플래그를 만나는 새로운 판독기는 기록기가 기록기의 작업을 완료할 수 있도록 대기 상태에 들어간다.
● 기록기 상태
- 기록기는 기록기 요청 플래그로 신호를 보냄므로써, 언제든지 기록 상태로의 변경을 요청할 수 있다. 실제 상태 변경은 모든 활성 판독기가 완료되고 상태가 초기 상태로 변경될 때 발생할 것이다.
● 기록기 대기 상태
- 기록은 기록 상태로 들어가기 전에 모든 활성 판독기가 완료되기를 기다릴 것이다.
기록기는 모든 기록 상태에서 0, 1 또는 그 이상의 데이터 패킷을 기록할 수 있다. 판독기는 새로운 데이터의 양이 사용 가능하다고 가정하면, 모든 판독 상태에서 0, 1 또는 그 이상의 데이터 패킷을 판독할 수 있다. 판독기 상태/모드에 들어가면, 판독기는 타임 스탬프를 생성할 수 있다. 판독기 모드에 들어가기 전에, 판독기는 타임 스탬프를 체크하고, 상태의 최대 시간에 도달하면, 판독기는 기록기가 기록 상태에 들어가고 기록기 굶주림(starvation)을 방지하기 위해 대기할 것이다. 기록기가 기록을 기다리지 않는 한, 판독 상태로 변경함으로써 또는 판독 상태를 계속함으로써 복수의 판독기가 동시에 판독을 시작할 수 있다.
일부 실시예에서, 링 캐시에 기록하는 다수의 기록기가 있을 수 있다. 예를 들어, 2 개의 입력 관리자 모듈이 있을 수 있으며, 각 모듈은 각각의 입력 주변 장치 컴포넌트에 작동 가능하게 연결된다. 2 개의 입력 주변 장치는 동일한 종류(예컨대, 2 개의 키보드)일 수도 있고 또는 다른 종류(예컨대, 1 개의 키보드 및 1 개의 마우스)일 수도 있다. 이러한 경우, 각 데이터 패킷은 기록기 출처를 나타내는 추가 메타 데이터를 포함하여야 한다.
전술한 링 데이터 구조, 그 기능, 뿐만 아니라 그와 관련된 기록기 및 판독기 동작은 예시적인 목적을 위해 도시되었으며, 어떤 방식으로든 본 개시 내용을 제한하는 것으로 해석되어서는 안된다는 점에 유의해야 한다. 임의의 다른 적절한 데이터 구조 및/또는 참여자 행동이 위의 내용을 대신하거나 추가하여 적용될 수 있다.
이제 본 발명의 특정 실시예에 따른 운영체제에서 환경 전환의 일반화된 흐름도를 도시하는 도 6을 참조한다.
일부 실시예에서, 보안 환경 모듈(206)이 위에서 설명된 보안 데이터 공유 및 보호 메커니즘을 사용하여 가동 및 실행될 때 제공되는 보안 환경을 제외하고, 보안 컴퓨터 장치의 운영체제에 의해 실행 가능한 가상화된 로컬 환경 모듈(도면에 도시되지 않음)도 존재할 수 있다. 이 모듈은 사용자에게 수정되지 않은 제 3 자 운영체제(예컨대, 윈도우즈(Windows), 리눅스(Linux) 또는 임의의 다른 독점 또는 레거시 OS 등의 VM)를 제공한다. 이 구성 요소의 복수의 인스턴스가 있을 수 있으며, 모두 다양한 레벨의 하드웨어 에뮬레이션, 연결 및 부가장치를 갖는 상이한 버전, 상이한 애플리케이션을 실행할 수 있다.
이 모듈은 보안 엔클레이브 인식 환경이고 그러므로 상술한 보안 데이터 공유 및 보호 메커니즘이 이 환경에서 제공되지 않는다는 점에서 위에서 설명한 보안 환경 모듈에 비해 상대적으로 덜 안전하다. 가상화된 로컬 환경 모듈과 보안 환경 모듈은 암호화 방식으로 서로 분리되어 있으며 상호 배타적으로 실행될 수 있다. 또한 보안 환경에서는 영구 데이터가 원격으로 저장되는 반면 가상화된 로컬 환경에서는 이러한 데이터가 암호화되어 로컬 디스크에 저장된다. 이러한 맥락에서 "영구 데이터"는 일시적인 데이터(예컨대, 그것을 디스플레이하는 프로세스 동안 일시적으로 사용 가능한 데이터)를 제외할 수 있다.
운영체제가 부팅되면, 사용자에게 통합 사용자 인터페이스가 제공되어 두 환경 중 하나에 연결될 수 있다. 이때, 예를 들어, 시스템에서 실행되는 두 개의 모듈, 입력 관리자 모듈과 상태 관리자 모듈이 함께 모듈 그룹을 구성할 수 있다. 이 두 모듈은 위에서 설명한대로 복합 키에 동의하고 공유 메모리(예컨대, 보안 링 캐시)를 통해 키를 사용하여 데이터 공유를 시작할 수 있다. 이제 사용자로부터 가상화된 로컬 환경(예컨대, 윈도우즈 VM)으로 들어가라는 지시를 받았다고 가정하면 가상화 된 로컬 환경 모듈이 작동 중이다(up and running). 가상화된 로컬 환경에서도 보안 링 캐시는 여전히 위에서 설명한 방식으로 작동하지만 가상화된 로컬 환경 모듈(예컨대, 윈도우즈 VM)에 액세스 할 수 없다. 가상화된 로컬 환경에서 작업할 때 입력 관리자 모듈은 부 채널 공격을 방지하기 위해 암호화된 데이터를(예컨대, 안전한 원격 작업 환경(700)로) 지속적으로 전송할 수 있다.
사용자로부터 가상화된 로컬 환경에서 보안 환경으로 전환하라는 명령을 수신하면(602), 링으로부터 데이터를 읽고 환경의 상태를 모니터링하는 상태 관리자는 가상화 된 로컬 환경 모듈에 현재 상태를 일시 중지하고 저장하도록 지시할 수 있다(604). 일부 실시예에서, 환경 간 전환 명령은, 예를 들어, 버튼 또는 키보드의 스위치 버튼과 같은 보안 컴퓨터 장치에 내장/통합된 물리적 스위치를 통해 또는 아래에 설명된 바와 같이 성공적인 전환시 물리적 표시를 추가로 제공할 수 있는 물리적 구성 요소(예컨대, 물리적 표시기)를 통해 사용자에 의해 제공될 수 있다. 보안 스위치는 모듈 그룹 내의 기존 모듈을 통해 또는 지정된 보안 엔클레이브가 있는 지정된 모듈을 통해 보안 드라이버를 사용하여 구현될 수 있다. 일부 다른 실시예에서, 키보드를 통한 키 스트로크 조합을 사용하여 환경 사이의 전환 명령이 제공될 수 있다. 상태 관리자로부터 지시를 받으면 윈도우즈 VM의(예컨대) VM 관리자는 현재 상태의 스냅 샷을 찍어 저장하고 나중에 특정 시점으로 되돌리는데 사용할 수 있다. 그 다음, 상태 관리자 모듈은 입력 관리자 모듈에 비보안 환경에서 보안 환경으로 전환하도록 지시한다(606). 입력 관리자 모듈은 상태 관리자로부터 명령을 받으면, 시뮬레이션 된 비보안 입력 데이터를 윈도우즈 VM으로 보내는 것을 중지한다.
상태 관리자 모듈은 또한 모듈 그룹을 새로운 구성원으로 결합하는 보안 환경 모듈(예컨대, RDP 클라이언트)을 로드(608)하여 키 롤오버를 트리거한다. 새로운 복합 키는 모듈 그룹(예컨대, 보안 환경 모듈, 입력 관리자 모듈 및 상태 관리자 모듈)간에 생성될 수 있으며 그룹 내에서 후속 보안 데이터 공유에 사용될 수 있다. 성공적인 전환이 완료되면, 상태 관리자는 전환이 성공적으로 완료되었음을 사용자에게 물리적 표시를 제공하도록 지시할 수 있다(610). 예를 들어, 키보드 또는 컴퓨터 장치의 임의의 다른 적절한 구성 요소 상에 설치될 수 있는 시각적 표시기, LED 또는 소리 표시기(예컨대, 진동기) 등과 같은 보안 컴퓨터 장치에 내장된 물리적 구성 요소/표시기는, 예를 들어 조명, 미니 스크린, 버즈, 사운드 등을 통해 성공적인 전환 알림을 수신한 때 물리적 표시를 제공하여 사용자가 전환이 실제로 발생했다는 표시를받을 수 있다. 이것은 전환을 위조하여 시스템의 제어를 취하려는 악의적인 구성 요소로부터 효과적으로 보호할 수 있다.
이제 도 7로 돌아 가면, 본 발명의 특정 실시예에 따른 보안 클라우드 환경의 개략도가 도시되어 있다.
현재, 진정한 제로 지식, 즉, 예를 들어, 사용자에 의해 제공되는 암호화 키와 같은 민감한 데이터를 제공하는 클라우드 솔루션 벤더는 극소수이며, 이는 벤더에게 알려지지 않았다. 일부 기존 솔루션 내에서 제로 지식은 제한된 애플리케이션 하위 집합(예컨대, 보안 파일 스토리지, 보안 이메일 등)에서만 제공될 수 있다. 대부분의 클라우드 제공 업체, 확실히 가상 컴퓨팅을 제공하는 업체에서 사용자는 공급 업체와 하이퍼 바이저(즉, 가상화를 담당하는 소프트웨어 스택)를 맹목적으로 신뢰해야 한다. 하이퍼 바이저를 신뢰하는 것은 중요한 보안 단점이다. 클라우드 공급자에서 실행되는 가상화된 운영체제와 모든 메모리 공간(사용자 내 권한 분리에 관계없이), 실행중인 프로세스, 데이터 등은 하이퍼 바이저에 대해 완전히 투명하다. 예를 들어, 클라우드 공급자를 위해 일하는 악의적인 직원, 공급자에게 제공된 소환장, 하이퍼 바이저 수준의 손상 또는 VM 간 손상과 같은 악의적 인 활동은 모두 클라이언트의 VM(및 데이터)을 큰 위험에 빠뜨린다.
보안 데이터 공유 및 보호 메커니즘에 의해 가능해진 안전한 작업 환경과 종단 간 데이터 보호를 갖춘 전술한 보안 컴퓨터 시스템을 사용하여 진정한 제로 트러스트 클라우드 환경을 구현할 수 있다. 일부 실시예에서, 사용자는 안전한 물리적 환경에서 사용자의 요청에 따라 보안 컴퓨터 장치(700)를 설치하고 맞춤화하는 데 사용될 수 있는 통합 파일(예컨대, ISO 파일)의 모든 시스템 구성 및 사용자 정보를 제공할 수 있다. 이러한 보안 컴퓨터 장치는 전술한 바와 같이 보안 데이터 공유 및 보호 체계를 가능하게 하도록 이미 사전 구성되어 있음에 유의해야 한다. 보안 컴퓨터 장치(700)가 맞춤화되고 닫히면, 예를 들어, 하드웨어 스위치를 사용하여 컴퓨터 장치가 다시 열리지 않도록 물리적 변조 방지 조치가 사용될 수 있다. 이 보안 컴퓨터 장치(700)는 클라우드에 배치될 수 있고 사용자에게 보안 원격 작업 환경을 제공하는데 사용될 수 있다. 클라우드 공급자의 어떤 엔티티도 장치를 조작하거나 장치에 저장된 데이터 또는 해당 데이터에 대한 계산에 액세스할 수 없다. 세계 어디에서나 위치하는 사용자는 로컬 보안 컴퓨터(예를 들어, 보안 컴퓨터 시스템(100))를 사용하여 이전에 구성된 개인 자격 증명을 사용하여 보안 컴퓨터 장치(700)에 연결할 수 있다. 또한, 원격 컴퓨터는 클라우드의 다른 컴퓨터에 연결하는 데 사용될 수 있으므로 최종 사용자가 컴퓨터 시스템(100)을 사용하여 액세스하는 조직 네트워크의 역할을하는 상호 연결된 원격 컴퓨터의 네트워크를 형성 할 수 있다.
로컬 보안 컴퓨터(100)와 보안 원격 작업 환경(700) 사이의 보안 통신은 다양한 방식으로 구현될 수 있다. 본 발명의 특정 실시예에 따라 로컬 장치와 원격 엔티티 사이에 원격 인증을 설정하는 예시 된 방법이 이제 설명된다. TLS/SSL, VPN, RDP 등과 같은 기타 알려진 또는 독점 프로토콜이 원격 인증을 설정하거나 로컬 장치와 원격 엔티티 간의 보안 통신을 활성화하는데 사용될 수 있다.
장치 생성 시, 클라이언트(100)와 서버(700) 사이에 미리 공유된 비밀이 봉인되어 원격 증명이 필요하지 않게 된다. 이는 시스템이 손상되지 않고 악성 소프트웨어 또는 기타 보안 위험없이 장치 프로비저닝을 수행할 수 있는 정의된 보안 안전 생산 환경에서 수행될 수 있다.
구체적으로, 이 특정 장치를 서버에 인식할 수 있는 고유한 인증서를 생성 할 수 있다. 이 특정 장치의 공용 인증서는 서버에 저장할 수 있다. 장치에서, 이 특정 장치의 인증서(공개 및 개인 키)와 서버의 공용 인증서를 저장할 수 있다. 그 다음, 이 정보를 봉인할 수 있다(예컨대, 보안 엔클레이브 특정 봉인 메커니즘 사용). 즉, 이 특정 장치 만이 정보를 봉인 해제할 수 있고 신뢰할 수 있는 엔터티가 서명한 적절하게 인스턴스화된 보안 엔클레이브에서만 가능하다. 장치 조작, 하드웨어 속성 변경, 봉인된 데이터 편집 또는 삭제는 봉인을 해제하고 장치 인증에 실패할 것이다. 이 데이터가 없으면, 이 장치는 손상된 것으로 간주되어 사용할 수 없으며 안전한 프로덕션 환경에서 새 ID로 다시 프로비저닝해야 한다.
예시된 원격 인증 흐름은 다음과 같이 수행될 수 있다. 원격 보안을 협상 할 때, 암호화된 채널을 구축한 후 클라이언트는 인증 데이터를 봉인 해제하고 저장된 서버 인증서를 사용하여 서버를 인증할 수 있다. 인증된 경우, 클라이언트는 유효성 검사를 위해 이 장치 별 서명된 인증서를 서버에 보낼 수 있다. 올바른 서명된 인증서를 받는 서버는 데이터가 적절하게 봉인 해제되지 않았다고 간주될 수 있으며, 이는 적절하게 인스턴스화된 보안 엔클레이브를 갖는 올바른 장치에서만 수행될 수 있다. 위의 인증 프로세스는 인텔이 제안했던 원격 증명만큼 안전하다고 가정된다. 또한 양방향 원격 인증을 위한 간단하고 안전한 방법을 제공하며 특별한 서버 나 인증 서비스 등록 및 사용이 필요하지 않다. 또한 각 장치가 개별적으로 인증되고 인식되므로 손상된 것으로 간주되는 경우 특정 장치를 비활성화하는 옵션도 제공한다.
특정 실시예에 따르면, 도 3 및 도 5를 참조하여 전술한 바와 같이 모듈 그룹 사이에서 입력 데이터를 안전하게 공유하는데 사용되는 보안 링 캐시(300)의 구현예와 유사한 링 데이터 구조는 관련 엔터티 및 모듈간에 처리된 출력 데이터를 안전하게 공유하는데 사용되므로 출력 데이터로 전송할 보안 출력 경로를 형성한다. 일 실시예에서, 제 2 링 캐시는 유사한 구현 메커니즘에서 생성될 수 있고 처리된 데이터를 출력하기 위해 관련된 제 2 모듈 그룹 사이에서 사용될 수 있다. 제 2 모듈 그룹은 적어도, 예를 들어, 원격 환경에서 처리 된 데이터를 수신하고 제 2 링 캐시에 기록하기 위한 기록기 모듈 역할을 할 수 있는 RDP 클라이언트 모듈, 및 제 2 링 캐시로부터 처리 된 데이터를 판독하기 위한 판독기 모듈 중 하나로서 역할 수 있는 출력 관리자 모듈을 포함할 수 있다. 제 2 그룹에 참여하는 다른 모듈이 있을 수 있다. 다른 실시예에서, 동일한 보안 링 캐시(300)가 입력 및 출력 데이터 모두를 공유하기 위해 사용될 수 있으며, 이 경우 링에 기록하는 2 개 이상의 기록기(예컨대, 입력 관리자 모듈 및 RDP 클라이언트)가 있을 수 있고 따라서 조정되어야한다. 본 개시는 이 특정 구현예에 의해 제한되지 않는다.
도면에 도시되고 위에서 설명된 예는 단지 예시적인 목적을 위한 것이며 어떠한 방식으로든 본 개시를 제한하는 것으로 간주되어서는 안된다는 점에 유의해야한다. 당업자라면 임의의 다른 적절한 구현예 또는 예시가 도시된 예에 추가로 또는 대신에 사용될 수 있음을 쉽게 이해할 것이다.
또한, 도 4 내지 6에 도시된 흐름도가 시스템(100)의 요소를 참조하여 설명되었으나, 이는 결코 구속이 아니며, 오퍼레이션은 여기에 설명된 요소 이외의 요소에 의해 수행될 수 있다.
본 발명은 본 명세서에 포함된 설명 및 도면에 도시된 것에 제시된 세부 사항에 적용으로 제한되지 않음을 이해해야 한다. 본 발명은 다른 실시예가 가능하고 다양한 방식으로 실행 및 수행될 수 있다. 따라서, 본 명세서에 사용된 어법 및 용어는 설명을 위한 것이며 제한하는 것으로 간주되어서는 안된다는 것을 이해해야 한다. 이와 같이, 당업자는 본 개시의 기초가 되는 개념이 본 발명의 여러 목적을 수행하기 위한 다른 구조, 방법 및 시스템을 설계하기 위한 기초로서 쉽게 이용될 수 있음을 인식할 것이다.
또한, 본 발명에 따른 시스템은 적절하게 프로그래밍된 컴퓨터에서 적어도 부분적으로 구현될 수 있음을 이해할 것이다. 마찬가지로, 본 발명은 본 발명의 방법을 실행하기 위해 컴퓨터에 의해 판독 가능한 컴퓨터 프로그램을 고려한다. 본 발명은 또한 본 발명의 방법을 실행하기 위해 컴퓨터에 의해 실행 가능한 명령어 프로그램을 실체적으로 구현하는 비 일시적 컴퓨터 판독 가능 저장 매체를 고려한다.
당업자는 첨부된 청구 범위에 정의된 범위를 벗어나지 않으면서 본 발명의 실시예에 다양한 수정 및 변경이 적용될 수 있음을 쉽게 이해할 것이다.

Claims (17)

  1. 보안 컴퓨터 시스템으로서,
    입력 주변 장치 컴포넌트 및 출력 주변 장치 컴포넌트에 동작 가능하게 연결된 프로세서 및 메모리 유닛(PMU)을 포함하고,
    상기 입력 주변 장치 컴포넌트는 사용자로부터 입력 데이터를 수신하고 상기 입력 데이터를 상기 PMU로 전송하도록 구성되고;
    상기 출력 주변 장치 컴포넌트는 상기 PMU로부터 처리된 출력 데이터를 수신하도록 구성되고;
    상기 PMU는 보호된 메모리 및 공유 메모리를 포함하는 시스템 메모리, 및 상기 시스템 메모리에 동작 가능하게 결합된 프로세서를 포함하며, 상기 프로세서는 상기 보호된 메모리를 통한 보안 데이터 저장 및 실행을 가능하게 하는 명령 세트를 포함하고;
    상기 PMU는 운영체제 및 상기 운영체제에 의해 실행 가능한 모듈 그룹을 더 포함하고, 상기 모듈 그룹 내 각 모듈은 상기 보호된 메모리 내에서 실행될 지정된 보안 영역을 갖고, 상기 모듈 그룹은 인증을 생성하고 복합 키를 사용하여 그것에 액세스 가능한 상기 공유 메모리를 통해 상기 입력 데이터를 안전하게 공유하도록 구성되고, 상기 복합 키는 상기 명령 세트에 의해 활성화된 상기 지정된 보안 영역 간의 데이터 공유 메커니즘을 사용하여 상기 모듈 그룹 내에서 생성되고,
    상기 모듈 그룹은:
    상기 입력 주변 장치 컴포넌트로부터 상기 입력 데이터를 수신하고, 상기 복합 키를 사용하여 상기 입력 데이터를 암호화하고, 암호화된 입력 데이터를 상기 공유 메모리에 기록하도록 구성된 적어도 하나의 기록기 모듈; 및
    상기 공유 메모리로부터 상기 암호화된 입력 데이터를 판독하고, 상기 복합 키를 사용하여 상기 암호화된 입력 데이터를 복호화하고, 복호화된 입력 데이터를 사용하도록 구성된 적어도 하나의 판독기 모듈을 포함하는 것을 특징으로 하는 보안 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 프로세서는 보안 엔클레이브를 지원하고 상기 명령 세트는 복수의 보안 엔클레이브 명령을 포함하고, 상기 지정된 보안 영역은 보안 엔클레이브인 것을 특징으로 하는 보안 컴퓨터 시스템.
  3. 제 1 항에 있어서, 상기 적어도 하나의 판독기 모듈은:
    상기 운영체제 내의 환경 상태를 모니터링하도록 구성된 상태 관리자 모듈;
    상기 입력 데이터를 원격 연결을 통해 원격 작업 환경으로 안전하게 전송하고, 처리된 출력 데이터를 원격 작업 환경으로부터 안전하게 수신하도록 구성된 보안 환경 모듈; 및
    처리된 출력 데이터를 상기 출력 주변 장치 컴포넌트에 제공하도록 구성된 출력 관리자 모듈
    을 포함하는 그룹에서 선택되는 것을 특징으로 하는 보안 컴퓨터 시스템.
  4. 제 2 항에 있어서, 상기 모듈 그룹 내 각각의 주어진 모듈은:
    그것에 지정된 보안 엔클레이브에서 특정 세션에 대한 키 구성 요소를 생성하고 상기 지정된 보안 엔클레이브에 상기 키 구성 요소를 저장하는 단계;
    상기 보안 엔클레이브의 봉인 및 봉인 해제 메커니즘을 사용하여 공유 메모리를 통해 상기 모듈 그룹 내의 상기 키 구성 요소를 안전하게 교환하여 상기 모듈 그룹 내의 다른 모듈로부터 각각의 키 구성 요소를 획득하는 단계; 및
    상기 모듈 그룹 내 각 모듈의 각각의 키 구성 요소를 사용하여 상기 지정된 보안 엔클레이브에서 복합 키를 독립적으로 생성함으로써 상기 복합 키를 사용하여 상기 모듈 그룹 내 보안 데이터 통신을 허용하는 단계
    에 의해 복합 키를 생성하도록 구성된 것을 특징으로 하는 보안 컴퓨터 시스템.
  5. 제 4 항에 있어서, 상기 지정된 보안 엔클레이브는 상기 보안 엔클레이브에 서명하는 기관 엔티티의 서명 아이덴티티와 연관되며, 상기 모듈 그룹 내의 각각의 주어진 모듈은: 상기 키 구성 요소를 봉인하고, 봉인된 키 구성 요소를 상기 공유 메모리에 복사하고, 다른 모듈의 각각의 봉인된 키 구성 요소를 상기 공유 메모리로부터 상기 지정된 보안 엔클레이브로 복사하고, 그리고 각각의 봉인된 키 구성 요소를 봉인 해제함으로써 상기 키 구성 요소를 안전하게 교환하도록 구성되며, 상기 주어진 모듈에 의한 성공적인 봉인 해제 동작은 유효성 인증을 제공하는 것을 특징으로 하는 보안 컴퓨터 시스템.
  6. 제 5 항에 있어서, 상기 적어도 하나의 기록기 모듈은 상기 복합 키를 생성하는 동안 위상을 조정하도록 더 구성된 것을 특징으로 하는 보안 컴퓨터 시스템.
  7. 제 1 항에 있어서, 상기 입력 주변 장치 컴포넌트는 상기 사용자로부터 입력 키 스트로크를 수신 및 암호화하고, 암호화된 입력 데이터를 상기 PMU로 전송하도록 구성된 보안 키보드인 것을 특징으로 하는 보안 컴퓨터 시스템.
  8. 제 1 항에 있어서, 상기 출력 주변 장치 컴포넌트는 상기 PMU로부터 암호화된 처리된 출력 데이터를 수신하고 디스플레이를 위해 렌더링하기 위해 암호화된 처리된 출력 데이터를 복호화하도록 구성된 보안 디스플레이인 것을 특징으로 하는 보안 컴퓨터 시스템.
  9. 제 1 항에 있어서, 상기 공유 메모리는 상기 모듈 그룹 내의 각 모듈이 독립적으로 액세스하는 보안 링 캐시로 표시되는 것을 특징으로 하는 보안 컴퓨터 시스템.
  10. 제 1 항에 있어서, 상기 모듈 그룹에 새 모듈이 합류하거나 시간 기간의 경과 시 새로운 복합 키가 생성되는 것을 특징으로 하는 보안 컴퓨터 시스템.
  11. 제 1 항에 있어서, 상기 적어도 하나의 기록기 모듈은 새로운 입력 데이터를 기록할 때 그 값이 앞으로만 진행할 것으로 예상되는 세션 모노토닉 카운터를 사용하도록 구성되고, 상기 적어도 하나의 판독기 모듈 각각은 매 판독 세션마다 상기 세션 모노토닉 카운터의 로컬 사본을 저장하고 새로운 판독 세션시 상기 세션 모노토닉 카운터의 현재 값을 판독하고 이전에 저장된 값과 비교하도록 구성된 것을 특징으로 하는 보안 컴퓨터 시스템.
  12. 제 1 항에 있어서, 상기 복합 키는, 상기 복합 키를 사용하여 상기 공유 메모리로부터 주어진 모듈을 성공적으로 판독한 때 상기 주어진 모듈에 의해 검증되는 것을 특징으로 하는 보안 컴퓨터 시스템.
  13. 제 1 항에 있어서, 상기 운영체제에 의해 실행 가능한 가상화된 로컬 환경 모듈을 더 포함하고, 상기 운영체제의 상태는 상기 보안 환경 모듈에 의해 제공되는 보안 환경과 상기 가상화된 로컬 환경 모듈에 의해 제공되는 가상화된 로컬 환경 간에 전환 가능한 것을 특징으로 하는 보안 컴퓨터 시스템.
  14. 제 13 항에 있어서, 상기 보안 컴퓨터 장치에 내장되고 상기 가상화된 로컬 환경과 상기 보안 환경 간의 전환 시 물리적 표시를 제공하도록 구성된 물리적 표시기를 더 포함하는 것을 특징으로 하는 보안 컴퓨터 시스템.
  15. 제 13 항에 있어서, 사용자로부터 환경 전환의 명령을 수신하고 상기 가상화된 로컬 환경과 상기 보안 환경 간 전환을 트리거하도록 구성된, 상기 보안 컴퓨터 장치 상에 내장되는 물리적 스위치를 더 포함하는 것을 특징으로 하는 보안 컴퓨터 시스템.
  16. 제 14 항에 있어서, 상기 물리적 표시기는 상기 입력 주변 장치 컴포넌트에 내장된 시각적 표시기이며 성공적인 전환의 알림을 수신하면 시각적 표시를 제공하도록 구성된 것을 특징으로 하는 보안 컴퓨터 시스템.
  17. 제 1 항에 있어서, 상기 운영체제를 부팅할지 여부를 판정하기 위해 검증을 수행하도록 구성된 BIOS 컴포넌트를 더 포함하는 것을 특징으로 하는 보안 컴퓨터 시스템.
KR1020207030436A 2018-03-26 2019-03-26 안전한 컴퓨터 시스템 KR20210021285A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL258368A IL258368B2 (en) 2018-03-26 2018-03-26 Secure computer system
IL258368 2018-03-26
PCT/IL2019/050343 WO2019186546A1 (en) 2018-03-26 2019-03-26 Secured computer system

Publications (1)

Publication Number Publication Date
KR20210021285A true KR20210021285A (ko) 2021-02-25

Family

ID=62454968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207030436A KR20210021285A (ko) 2018-03-26 2019-03-26 안전한 컴퓨터 시스템

Country Status (8)

Country Link
US (1) US11727115B2 (ko)
EP (1) EP3776223B1 (ko)
JP (1) JP7256861B2 (ko)
KR (1) KR20210021285A (ko)
AU (1) AU2019245506A1 (ko)
IL (1) IL258368B2 (ko)
SG (1) SG11202009327VA (ko)
WO (1) WO2019186546A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614968B (zh) * 2018-05-04 2020-11-24 飞天诚信科技股份有限公司 一种在通用平台下安全交互的方法及智能终端
US11449601B2 (en) * 2020-01-08 2022-09-20 Red Hat, Inc. Proof of code compliance and protected integrity using a trusted execution environment
US11977662B2 (en) * 2020-04-30 2024-05-07 Dell Products, L.P. One-time programmable features for storage devices
EP4285548A1 (en) 2021-01-26 2023-12-06 Citrix Systems, Inc. Configuration of headless network appliances
IL284485A (en) * 2021-06-29 2023-01-01 Kazuar Advanced Tech Ltd Secure communication between a client computer and a remote computer

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US8181176B2 (en) * 2010-06-21 2012-05-15 Intel Corporation Uniform storage device access using partial virtual machine executing within a secure enclave session
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8516271B2 (en) 2011-03-11 2013-08-20 Hewlett-Packard Development Company, L. P. Securing non-volatile memory regions
US8876620B2 (en) * 2011-08-22 2014-11-04 Erik Ahlberg Sporting equipment handle grip improvement apparatus
FR2980285B1 (fr) 2011-09-15 2013-11-15 Maxim Integrated Products Systemes et procedes de gestion de cles cryptographiques dans un microcontroleur securise
US8615656B2 (en) * 2012-01-09 2013-12-24 The Mitre Corporation Secure remote peripheral encryption tunnel
US10248442B2 (en) * 2012-07-12 2019-04-02 Unisys Corporation Automated provisioning of virtual machines
US10681036B2 (en) 2014-03-28 2020-06-09 Ncr Corporation Composite security interconnect device and methods
US10019605B2 (en) * 2015-03-30 2018-07-10 Square, Inc. Systems, methods and apparatus for secure peripheral communication
US10469265B2 (en) * 2016-03-31 2019-11-05 Intel Corporation Technologies for secure inter-enclave communications
US10491387B2 (en) * 2016-11-15 2019-11-26 International Business Machines Corporation End-to-end encryption of a block storage device with protected key
US10742408B2 (en) * 2017-02-27 2020-08-11 Cord3 Innovation Inc. Many-to-many symmetric cryptographic system and method

Also Published As

Publication number Publication date
EP3776223A4 (en) 2021-12-29
JP2021519564A (ja) 2021-08-10
WO2019186546A1 (en) 2019-10-03
JP7256861B2 (ja) 2023-04-12
IL258368B2 (en) 2024-04-01
AU2019245506A1 (en) 2020-11-19
EP3776223A1 (en) 2021-02-17
US11727115B2 (en) 2023-08-15
IL258368A (en) 2018-05-31
SG11202009327VA (en) 2020-10-29
US20210117546A1 (en) 2021-04-22
IL258368B1 (en) 2023-12-01
EP3776223B1 (en) 2024-05-15

Similar Documents

Publication Publication Date Title
CN107003866B (zh) 来自加密模板的加密虚拟机的安全创建
EP3087524B1 (en) Virtual machine assurances
Li et al. A trusted virtual machine in an untrusted management environment
US8627414B1 (en) Methods and apparatuses for user-verifiable execution of security-sensitive code
US8074262B2 (en) Method and apparatus for migrating virtual trusted platform modules
JP4732513B2 (ja) ソフトウェア・ベースのセキュリティ・コプロセッサを提供する方法および装置
CN103069428B (zh) 不可信云基础设施中的安全虚拟机引导
JP7256861B2 (ja) セキュアコンピュータシステム
US20150261978A1 (en) Method and apparatus for remotely provisioning software-based security coprocessors
US10990690B2 (en) Disk encryption
US10719346B2 (en) Disk encryption
US10754680B2 (en) Disk encription
JP2017520959A (ja) 信頼実行環境を含むホストのアテステーション
US11714895B2 (en) Secure runtime systems and methods
JP2016021220A (ja) 退避ファイルの一貫性を検証する方法、コンピュータおよびコンピュータ・プログラム
Mirzamohammadi et al. Ditio: Trustworthy auditing of sensor activities in mobile & IoT devices
Raj et al. Credo: Trusted computing for guest VMs with a commodity hypervisor
WO2023273647A1 (zh) 虚拟化可信平台模块实现方法、安全处理器及存储介质
Brasser et al. Softer Smartcards: Usable Cryptographic Tokens with Secure Execution
Feng Trusted Computing: Principles and Applications
Gazidedja HW-SW architectures for security and data protection at the edge
Fitzek Development of an ARM TrustZone aware operating system ANDIX OS
KR20210071813A (ko) 신뢰실행환경 간의 데이터 공유
Sadeghi et al. Design and implementation of a secure linux device encryption architecture
Butler Leveraging Emerging Disk Functionality for New Security Services