KR20160129852A - 장치 간 신뢰 애플리케이션을 위한 보안 하드웨어 - Google Patents

장치 간 신뢰 애플리케이션을 위한 보안 하드웨어 Download PDF

Info

Publication number
KR20160129852A
KR20160129852A KR1020167024631A KR20167024631A KR20160129852A KR 20160129852 A KR20160129852 A KR 20160129852A KR 1020167024631 A KR1020167024631 A KR 1020167024631A KR 20167024631 A KR20167024631 A KR 20167024631A KR 20160129852 A KR20160129852 A KR 20160129852A
Authority
KR
South Korea
Prior art keywords
computing system
server computing
hardware
shared secret
message
Prior art date
Application number
KR1020167024631A
Other languages
English (en)
Other versions
KR102331595B1 (ko
Inventor
히만슈 라즈
스테판 사로이우
알라스테어 월만
첸 첸
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160129852A publication Critical patent/KR20160129852A/ko
Application granted granted Critical
Publication of KR102331595B1 publication Critical patent/KR102331595B1/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/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1012Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to domains
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1076Revocation
    • 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/604Tools and structures for managing or administering access control 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6272Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1002
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/2115Third party
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Databases & Information Systems (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

본 명세서에 기재된 다양한 기법은 보안 하드웨어(가령, TPM, 프로세싱 플랫폼의 보안 프로세서, 소프트웨어 기반 TPM을 포함하는 보호되는 메모리 등)를 포함하는 컴퓨팅 장치와 관련된다. 상기 보안 하드웨어는 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유되는 공유 시크릿을 포함한다. 상기 공유 시크릿은 서버 컴퓨팅 시스템 또는 상기 서버 컴퓨팅 시스템과 제휴된 측의 프로비저닝 컴퓨팅 시스템에 의해 제공된다. 상기 보안 하드웨어는 공유 시크릿 또는 상기 공유 시크릿으로부터 생성된 키를 이용해 암호화 알고리즘을 실행할 수 있는 암호화 엔진을 더 포함한다. 상기 암호화 엔진은 상기 암호화 알고리즘을 실행시켜 암호화, 복호화, 인증, 및/또는 증명을 수행할 수 있다.

Description

장치 간 신뢰 애플리케이션을 위한 보안 하드웨어{SECURE HARDWARE FOR CROSS-DEVICE TRUSTED APPLICATIONS}
사람들은 점점 더 두 대 이상의 컴퓨팅 장치를 필요로 한다. 따라서 단일 사용자가 소유하는 컴퓨팅 장치들 간 사진, 비디오, 애플리케이션, 데이터, 및 게임의 자동 동기화가 점점 더 일반적이 되고 있다. 한편, 컴퓨팅 장치는 점점 더 신뢰되는 컴퓨팅 하드웨어를 포함하고 있다. 예를 들어, 신뢰 플랫폼 모듈(TPM)(Trusted Platform Module)이 컴퓨팅 장치에 포함되어 펌웨어 롤백(firmware rollback)을 방지하고 사용자의 데이터 암호화 키를 저장 및 증명할 수 있다.
불행히도, 이들 2개의 트렌드는 상충할 수 있다. 종래의 신뢰 컴퓨팅 하드웨어, 가령, 전통적인 TPM이 장치 간 기능(cross-device functionality)을 잘 지원하지 않는다. 설계면에서, 이러한 TPM은 단일 자립형 장치에 얽매이는 하드웨어 신뢰의 뿌리(root-of-trust)를 제안한다. TPM은 TPM 하드웨어 칩을 결코 떠나지 않는 개인 부분을 갖는 암호화 키를 구비함으로써, 이들 키가 손상될 수 있는 가능성을 낮춘다. TPM이 보장하는 단일 장치와 장치 간 공유 필요성 간 긴장상태에 의해, 신뢰 애플리케이션에서 다중 장치 시나리오에 대처하기 어렵다. 따라서 현재의 TPM은 복수의 컴퓨팅 장치들 간에 데이터의 매끄러운 공유를 저해하기 때문에, 이들 TPM은 신뢰 모바일 애플리케이션에서의 장치 간 시나리오(cross-device scenario)에 부적합할 수 있다.
덧붙여, 전통적인 TPM은 종종 느리고 비효율적이다. TPM의 최소 성능 요건이 신뢰 컴퓨팅 그룹(Trusted Computing Group)(TCG)의 이용 가능한 TPM 규격(가령, 버전 1.2 또는 버전 2.0)의 일부로서 설정되지 않았다. 일반적으로 전통적인 TPM의 성능 핸디캡이 이러한 TPM의 사용을 빠르거나 빈번한 작업을 필요로 하지 않는 시나리오로 제한한다. TPM의 성능은 이러한 TPM을 더 빠른 내부 부분을 갖도록 구축함으로써 향상될 수 있지만, 이러한 부분을 포함시키면 TPM의 비용은 증가된다.
본 명세서에서는 보안 하드웨어(가령, TPM, 적어도 하나의 다른 프로세서를 포함하는 프로세싱 플랫폼, 소프트웨어 기반 TPM을 포함하는 보호되는 메모리 등)를 포함하는 컴퓨팅 장치에 대해 기재된다. 보안 하드웨어는 공유 시크릿을 포함한다. 공유 시크릿은 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유된다. 공유 시크릿은 서버 컴퓨팅 시스템 또는 상기 서버 컴퓨팅 시스템과 제휴된 측의 프로비저닝 컴퓨팅 시스템에 의해 제공(provisioning)된다. 보안 하드웨어는 공유 시크릿 또는 상기 공유 시크릿으로부터 생성된 키를 이용하는 암호화 알고리즘을 실행시킬 수 있는 암호화 엔진을 더 포함한다. 상기 암호화 엔진은 상기 암호화 알고리즘을 실행시켜 암호화, 복호화, 인증, 및/또는 증명(attestation)을 수행할 수 있다.
또한, 보안 하드웨어는 서버 컴퓨팅 시스템의 원격 자원(가령, 원격 스토리지, 키, 연산, 클록 값 등)을 액세스하기 위한 메시지를 생성할 수 있는 원격 액세스 제어 구성요소를 포함할 수 있으며, 이때, 메시지는 보안 하드웨어가 명령어를 수신한 것에 응답하여 생성될 수 있다. 암호화 엔진은 서버 컴퓨팅 시스템으로 전송될 메시지를 암호화할 수 있다. 상기 메시지는 공유 시크릿 또는 공유 시크릿으로부터 생성된 키를 이용해 암호화 엔진에 의해 암호화되어 암호화된 메시지를 생성할 수 있다. 또한, 암호화된 메시지는 서버 컴퓨팅 시스템의 원격 자원으로의 액세스를 야기하도록 구성된다.
상기의 개요는 본 명세서에서 논의되는 시스템 및/또는 방법의 일부 형태의 기본 이해를 제공하기 위해 간단한 요약을 제공한다. 이 개요는 본 명세서의 시스템 및/또는 방법의 포괄적 소개가 아니다. 이 개요는 핵심/중요 요소를 식별하기 위한 것이 아니며 이러한 시스템 및/또는 방법의 범위를 상세히 기술하기 위한 것이 아니다. 이 개요의 유일한 목적은 이하에서 제공될 더 상세한 설명에 대한 도입으로서 일부 개념들을 단순화된 형태로 제공하기 위함이다.
도 1은 장치 간 신뢰 컴퓨팅을 가능하게 하는 예시적 시스템의 기능 블록도이다.
도 2는 복수의 컴퓨팅 장치 간에 하드웨어 보호되는 상태의 공유를 제어하는 예시적 시스템의 기능 블록도이다.
도 3은 서버 컴퓨팅 시스템의 원격 스토리지에 데이터를 중앙집중적으로 저장하고 이러한 데이터를 컴퓨팅 장치에 로컬하게 저장하는 예시적 시스템의 기능 블록도이다.
도 4는 장치 간 신뢰 애플리케이션을 지원하는 예시적 시스템의 기능 블록도이다.
도 5는 도 4에 도시된 예시적 시스템의 TPM에 의해 지원되는 예시적 제어 도메인을 도시한다.
도 6-7은 도 4에 도시된 예시적 시스템의 TPM으로 컴퓨팅 장치의 발신자 구성요소에 의해 발행되는 명령에 응답하여 데이터를 교환하기 위한 예시적 호출 흐름도이다.
도 8은 서버 컴퓨팅 시스템의 원격 비휘발성 스토리지로부터 비휘발성 엔트리가 풀될 때의 예시적 동기화 프로토콜을 도시한다.
도 9는 서버 컴퓨팅 시스템의 원격 비휘발성 스토리지로 비휘발성 엔트리가 푸시될 때의 예시적 동기화 프로토콜을 도시한다.
도 10은 서버 컴퓨팅 시스템으로 전송되기 위해 보안 하드웨어에 의해 생성되는 메시지를 암호화하기 위한 예시적 방법을 도시하는 흐름도이다.
도 11은 복수의 컴퓨팅 장치 간 하드웨어 보호되는 상태의 공유를 제어하기 위한 예시적 방법을 도시하는 흐름도이다.
도 12는 예시적 컴퓨팅 장치를 도시한다.
도 13은 예시적 컴퓨팅 시스템을 도시한다.
서버 컴퓨팅 시스템과 공유되는 공유 시크릿(shared secret)을 제공받는 보안 하드웨어(secure hardware)를 이용해 장치 간 신뢰 컴퓨팅을 활성화하는 것과 관련된 다양한 기법이 도면을 참조하여 지금부터 기재되며, 이때, 유사한 도면부호가 유사한 요소를 지칭하는 데 사용된다. 이하의 기재에서, 설명 목적으로, 복수의 구체적 세부사항이 제공되어 발명의 하나 이상의 형태에 대한 완전한 이해를 제공할 수 있다. 그러나 이러한 형태(들)는 이들 구체적 세부사항 없이도 실시될 수 있음이 자명할 수 있다. 한편, 잘 알려진 구조물 및 장치가 블록도 형태로 도시되어 하나 이상의 형태를 기술하는 것을 가능하게 할 수 있다. 또한, 특정 시스템 구성요소에 의해 수행되는 것으로 기재되는 기능이 복수의 구성요소에 의해 수행될 수 있음이 이해될 것이다. 마찬가지로, 하나의 구성요소가 복수의 구성요소에 의해 수행되는 것으로 기재된 기능을 수행하도록 구성될 수 있다.
덧붙여, 용어 "또는"은 배타적 "또는"이 아니라 포괄적 "또는"을 의미하도록 의도된다. 즉, 달리 특정되지 않는 한, 또는 문맥상 명백하지 않는 한, "X는 A 또는 B를 채용한다"라는 구문은 자연 포괄적 순열 중 임의의 것을 의미하도록 의도된다. 즉, "X는 A 또는 B를 채용한다"라는 구문은 다음의 사례 중 임의의 것에 의해 만족된다: X는 A를 채용한다, X는 B를 채용한다, 또는 X는 A와 B를 모두 채용한다. 덧붙여, 일반적으로, 달리 특정되지 않는 한 또는 맥락상 단수 형태를 지시하지 않는 한, 본 명세서와 청구범위에서 사용되는 단수형은 "하나 이상"을 의미하도록 해석되어야 한다.
본 발명에 따라, 컴퓨팅 장치의 보안 하드웨어(secure hardware)가 서버 컴퓨팅 시스템과 공유되는 공유 시크릿(shared secret)을 제공받는다. 상기 공유 시크릿은 신뢰 애플리케이션이 종래의 보안 하드웨어, 가령, 종래의 TPM이 갖고 있는 장치 간 제한을 극복할 수 있도록 하는 데 사용될 수 있다. 공유 시크릿에 의해 서버 컴퓨팅 시스템은 보안 하드웨어의 자원의 일부분, 즉 공유 시크릿을 기초로 암호화된 것을 제어할 수 있다. 또한 서버 컴퓨팅 시스템은 그 밖의 다른 장치 로컬 시크릿에 의해 보호되는 보안 하드웨어의 그 밖의 다른 자원을 액세스하지 못하게 제한된 상태를 유지한다. 덧붙여, 공유 시크릿에 의해, 보안 하드웨어는 서버 컴퓨팅 시스템의 원격 자원(가령, 원격 스토리지, 키(key), 연산, 클록 값 등)을 액세스할 수 있다. 서버 컴퓨팅 시스템은 원격 스토리지에 보안 하드웨어에 의해 판독될 수 있는 시간을 주기적으로 기록함으로써, 신뢰되고, 동기화되며, 정확한 시간 소스를 제공할 수 있다. 이와 달리, 종래의 보안 하드웨어에는 신뢰되는 시간 소스가 없다. 덧붙여, 종래의 보안 하드웨어의 스토리지에 비교할 때, 서버 컴퓨팅 시스템의 원격 스토리지가 신뢰되는 애플리케이션에 대해 더 많은 양의 원격 스토리지(가령, 비휘발성 스토리지 등)를 제안하고 원격 스토리지에 더 빈번한 쓰기를 가능하게 한다. 따라서 본 명세서에 기재된 보안 하드웨어 및 서버 컴퓨팅 시스템이 종래의 보안 하드웨어의 일반적인 자원 및 성능 한계를 완화할 수 있다.
도면을 참조하면, 도 1은 장치 간 신뢰 컴퓨팅을 가능하게 하는 시스템(100)을 도시한다. 상기 시스템(100)은 컴퓨팅 장치(102)를 포함한다. 상기 컴퓨팅 장치(102)는 적어도 하나의 프로세서(104) 및 컴퓨터 판독형 스토리지(106)를 포함한다. 상기 프로세서(104)는 스토리지(106)로 로딩되는 명령을 실행하도록 구성된다. 하나의 예를 들면, 스토리지(106)는 컴퓨팅 장치(102)의 운영 체제(OS), 하나 이상의 애플리케이션 등을 포함할 수 있고, 따라서 프로세서(104)는 OS, 하나 이상의 애플리케이션 등을 실행시키도록 구성될 수 있다.
컴퓨팅 장치(102)는 실질적으로 임의의 유형의 컴퓨팅 장치일 수 있다. 컴퓨팅 장치(102)의 예시는 데스크톱 컴퓨팅 장치, 서버 컴퓨팅 장치, 모바일 컴퓨팅 장치(가령, 랩톱 컴퓨팅 장치, 넷북 컴퓨팅 장치, 모바일 전화기, 태블릿 컴퓨팅 장치, 웨어러블 컴퓨팅 장치, 핸드헬드 컴퓨팅 장치, 휴대용 게임 장치, 개인 디지털 보조기 등), 게임 콘솔, 엔터테인먼트 어플라이언스, 셋-톱 박스, 텔레비전, 임베디드 컴퓨팅 장치, 네트워크 장치, 자동차용 컴퓨터 등을 포함한다.
컴퓨팅 장치(102)는 보안 하드웨어(108)를 포함한다(가령, 스토리지(106)는 보안 하드웨어(108) 외부에 있음). 보안 하드웨어(108)는 적어도 하나의 보안 프로세서(secure processor)(110)를 포함할 수 있다. 상기 보안 프로세서(110)는 보안 하드웨어(108) 외부의 소스에 의한 액세스 또는 이로부터의 간섭으로부터 차폐되는 보안화된 방식으로 동작한다. 예를 들어, 보안 프로세서(110)는 보안 하드웨어(108) 외부의 컴퓨팅 장치(102)의 구성요소 또는 모듈에 의한 액세스 또는 이로부터의 간섭으로부터 차폐될 수 있다. 그러나 또 다른 예를 들면, 보안 하드웨어(108)가 보안 프로세서를 포함할 필요가 없고, 오히려, 보안 하드웨어(108)와 외부 세계(가령, 보안 하드웨어의 외부, 스토리지(106)) 간 프로세서(104)의 시-기반(time-based) 공유가 채용될 수 있다. 따라서 보안 프로세서(110)를 포함하는 보안 하드웨어(108)를 기술하는 예시가 프로세서(104)의 시-기반 공유가 채용되는 아키텍처로 확장될 수 있다.
또한 보안 하드웨어(108)는 보안 스토리지(112)를 포함한다. 보안 스토리지(112)는 보안 하드웨어(108) 외부 소스에 의해 액세스 가능하지 않다. 따라서 보안 스토리지(112)가 보호되고 보안 하드웨어(108)의 특정 기능 또는 그 밖의 다른 구성요소에 의해서만 액세스될 수 있다. 예를 들어, OS 또는 프로세서(104)에 의해 실행되는 애플리케이션이 보안 스토리지(112)를 읽거나, 쓰거나, 수정할 수 없다. 상기 보안 스토리지(112)는 보안 비-휘발성(NV) 스토리지 및 보안 휘발성 스토리지를 포함할 수 있다.
시스템(100)은 서버 컴퓨팅 시스템(114)을 더 포함한다. 상기 서버 컴퓨팅 시스템(114)은 하나 이상의 서버 컴퓨팅 장치이거나 이를 포함할 수 있다. 예를 들어, 서버 컴퓨팅 시스템(114)은 하나 이상의 데이터센터이거나 이를 포함할 수 있고, 이때 데이터센터는 복수의 서버 컴퓨팅 장치를 포함한다. 하나 이상의 데이터센터는 서버 컴퓨팅 시스템(114)을 대안적으로 포함할 수 있다. 또한 서버 컴퓨팅 시스템(114)은 분산 컴퓨팅 시스템일 수 있다. 예를 들면, 서버 컴퓨팅 시스템(114)은 클라우드일 수 있다.
서버 컴퓨팅 시스템(114)은 컴퓨팅 장치(102)의 보안 하드웨어(108)에 대한 다양한 원격 자원을 제공한다. 예를 들어, 서버 컴퓨팅 시스템(114)은 컴퓨팅 장치(102)의 보안 하드웨어(108)에 대해 중앙집중형 데이터 스토리지를 제공할 수 있다. 서버 컴퓨팅 시스템(114)은 원격 스토리지(116)를 포함한다. 따라서 원격 스토리지(116)는 컴퓨팅 장치(102)와 분리된다. 이하에서 더 상세히 기재될 바와 같이, 컴퓨팅 장치(102)의 보안 하드웨어(108)에 의해 데이터가 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 써질 수 있거나 및/또는 데이터가 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)로부터 읽힐 수 있다. 원격 스토리지(116)는 데이터 값을 영속적으로 저장하는 데이터 구조를 포함할 수 있다.
컴퓨팅 장치(102)의 보안 하드웨어(108)는 공유 시크릿(118)을 제공받는다. 보안 스토리지(112)는 공유 시크릿(118)을 포함한다. 보안 하드웨어는 공유 시크릿(118)이 보안 하드웨어(108)를 떠나지 않도록 설계된다. 또한, 공유 시크릿(118)은 서버 컴퓨팅 시스템(114)과 공유된다. 따라서 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)는 공유 시크릿(118)과 매칭되는 공유 시크릿(120)을 포함한다(예를 들어, 공유 시크릿(118)과 공유 시크릿(120)은 동일하다). 또한, 서버 컴퓨팅 시스템(114)은 공유 시크릿(120)이 원격 스토리지(116)를 떠나지 못하게 보호한다. 예를 들어, 소형 TCB(Trusted Computing Base), 좁은 인터페이스, 또는 클라우드 관리자에 대해 향상된 보호를 갖는 보안 하이퍼바이저가 사용되어 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)를 보호할 수 있다(가령, 다른 경우라면 공유시크릿(120)을 손상할 수 있는 맬웨어를 모니터링 및 제거할 수 있다). 공유 시크릿(118)과 공유 시크릿(120)이 다 함께 공유 시크릿(118-120)이라고 지칭된다.
보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)에 의해 공유되는 공유 시크릿(118-120)은 서버 컴퓨팅 시스템(114) 또는 상기 서버 컴퓨팅 시스템(114)에 의해 제휴된 측의 프로비저닝 컴퓨팅 시스템에 의해 제공된다. 보안 하드웨어(108)가 공유 시크릿(118)을 제공받을 때 서버 컴퓨팅 시스템(114)은 공유 시크릿(120)에 의해 제공될 수 있다. 보안 하드웨어(108)는 사설 인터페이스를 통해 공유 시크릿(118)을 제공받을 수 있다(예컨대, 사설 인터페이스는 보안 하드웨어(108)의 제조업체에게만 이용 가능할 수 있다). 일례를 들면, 보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)은 보안 하드웨어(108)의 제조 동안 공유 시크릿(118-120)을 제공받을 수 있다. 덧붙여, 보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)은 보안 리키잉 수단(secure rekeying mechanism)(가령, 보안 리키잉을 수행하기 위한 특수 하드웨어, 프로비저닝 컴퓨팅 시스템)을 통해 새 공유 시크릿을 발행받을 수 있다. 예를 들면, 컴퓨팅 장치(102)의 사용자가 인가된 개체의 직원이 특수 하드웨어를 갖고 보안 리키잉을 수행할 수 있는 인가된 개체(가령, 서버 컴퓨팅 시스템(114)과 제휴된 측), 가령, 모바일 운영자 스토어의 설립에 컴퓨팅 장치(102)를 이용할 수 있다.
보안 하드웨어(108)의 공유 시크릿(118)을 제공하는 다양한 예시가 고려된다. 그러나 다음의 예시의 조합이 보안 하드웨어(108)의 공유 시크릿(118)을 제공하는 데 사용될 수 있다. 예를 들어, 서버 컴퓨팅 시스템(114) 또는 서버 컴퓨팅 시스템(114)과 제휴된 측의 프로비저닝 컴퓨팅 시스템이, 보안 하드웨어(108)가 비보안 환경에 최초로 도입되기 전에, 공유 시크릿(118)을 보안 하드웨어(108)로 삽입함으로써 보안 하드웨어(108)의 공유 시크릿(118)을 제공할 수 있다(가령, 공유 시크릿(118)이 제조 동안 보안 하드웨어(108)로 삽입될 수 있다). 이러한 공유 시크릿(118)의 보안 하드웨어(108)로의 제공은 1회성 동작일 수 있는데, 예를 들어, 보안 하드웨어(108)는 공유 시크릿(118)을 제공받은 후에 수정되어, 보안 하드웨어(108)가 차후에 다시 제공되지(re-provisioning) 못하게 금지될 수 있다. 또 다른 예를 들면, 공유 시크릿(118)은 특수 하드웨어를 이용해 보안 하드웨어(108)로 제공(또는 다시 제공)될 수 있고, 이 예시에 따르면, 보안 하드웨어(108)는 공유 시크릿(118)을 삽입하려 시도하는 특수 하드웨어를 인증하기 위한 수단을 포함할 수 있다(가령, 수단은 특수 하드웨어가 공유 시크릿(118)을 보안 하드웨어(108)로 삽입하는 것을 허용 또는 거절할지 여부를 평가할 수 있다).
덧붙여, 일례에 따르면, 공유 시크릿(118-120)은 상이한 컴퓨팅 장치의 상이한 보안 하드웨어에 의해 더 공유될 수 있다(가령, 보안 하드웨어(108), 상이한 보안 하드웨어, 및 서버 컴퓨팅 시스템(114)이 공유 시크릿(118-120)을 공유할 수 있다). 이 예시에 따르면, 보안 하드웨어(108), 상이한 컴퓨팅 장치의 상이한 보안 하드웨어, 및 서버 컴퓨팅 시스템(114)은 서버 컴퓨팅 시스템(114) 또는 상기 서버 컴퓨팅 시스템(114)과 제휴되는 측의 프로비저닝 컴퓨팅 시스템에 의해, 공유 시크릿(118-120)을 제공받을 수 있다.
일례에 따르면, 공유 시크릿(118-120)은 공유 1차 시드(shared primary seed)일 수 있다. 공유 1차 시드는 보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)에 영구적으로 저장되는 랜덤 값이다. 그러나 보안 하드웨어(108)에 의해, 공유 1차 시드(및 상기 공유 1차 시드에 의해 보호되는 시크릿)가 (가령, 사용자가 컴퓨팅 장치(102)를 폐기할 준비를 할 때) 보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)로부터 제거될 수 있고, 따라서 그 후 보안 리키잉이 수행될 수 있다. 공유 1차 시드는 보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)에 의해 사용되어 클라우드 제어 도메인(cloud control domain)에 대한 대칭/비대칭 키 및 증거(proof)를 생성할 수 있다.
보안 하드웨어(108)는 공유 시크릿(118)을 이용해, 대칭 키(symmetric key)(122) 및 스토리지 루트 키(스토리지 root key)(124)(가령, 비대칭 스토리지 루트 키)를 생성할 수 있다. 대칭 키(122) 및 스토리지 루트 키(124)는 공유 시크릿(118)으로부터 얻어진다. 또한 대칭 키(122) 및 스토리지 루트 키(124)는 보안 스토리지(112)에 저장된다. 마찬가지로 서버 컴퓨팅 시스템(114)에 의해 공유 시크릿(120)이 대칭 키(126) 및 스토리지 루트 키(128)를 생성할 수 있다. 대칭 키(126) 및 스토리지 루트 키(128)는 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 저장된다. 본 명세서에서 대칭 키는 또한 클라우드 통신 키(cloud communication key)(CCK)라고도 지칭된다. 덧붙여, 공유 시크릿(118-120)을 기반으로 생성된 스토리지 루트 키가 또한 클라우드 루트 키(cloud root key)(CRK)라고도 지칭된다.
대칭 키(122 및 126)를 생성하기 위한 키 유도(key derivation)가, 보안 하드웨어(108)에 의해 1회 그리고 서버 컴퓨팅 시스템(114)에 의해 1회, 즉, 2회 발생한다. 마찬가지로, 스토리지 루트 키(124 및 128)를 생성하기 위한 키 유도가, 보안 하드웨어(108)에 의해 1회 그리고 서버 컴퓨팅 시스템(114)에 의해 1회, 즉 2회 발생한다. 키 유도는 결정론적(deterministic)인데, 따라서 보안 하드웨어(108) 및 서버 컴퓨팅 시스템(114)은 동일한 키 복사본을 생성한다(가령, 대칭 키(122) 및 대칭 키(126)가 동일하며, 스토리지 루트 키(124)와 스토리지 루트 키(128)가 동일하다). 보안 하드웨어(108)는 키 유도 함수(KDF)(가령, SP800-108) 및 공유 시크릿(118)(가령, 공유 1차 시드)을 이용해 대칭 키(122) 및 스토리지 루트 키(124)를 생성할 수 있고, 서버 컴퓨팅 시스템(114)은 KDF 및 공유 시크릿(120)(가령, 공유 1차 시드)을 이용해 대칭 키(126) 및 스토리지 루트 키(128)를 생성할 수 있다.
보안 하드웨어(108)는 암호화 알고리즘의 세트를 실행하도록 구성된 암호화 엔진(130)을 더 포함한다. 암호화 엔진(130)은 공유 시크릿(118) 또는 상기 공유 시크릿(118)으로부터 생성된 키(가령, 대칭 키(122), 스토리지 루트 키(124), 스토리지 루트 키(124)로부터 생성된 키 등)를 이용해 암호화 알고리즘을 실행할 수 있다. 또한, 암호화 엔진(130)은 암호화 알고리즘을 실행시켜 암호화, 복호화, 인증, 및/또는 증명(attestation)을 수행할 수 있다. 하나의 예시에 따르면, 보안 하드웨어(108)의 보안 스토리지(112)는 암호화 엔진(130)을 포함할 수 있으며, 이 예시에 따르면, 암호화 엔진(130)은 보안 프로세서(110)에 의해 실행 가능할 수 있다.
보안 하드웨어(108)는 서버 컴퓨팅 시스템(114)의 원격 자원(가령, 원격 스토리지(116), 키, 연산, 클록 값 등)을 액세스하기 위한 메시지를 생성하는 원격 액세스 제어 구성요소(132)를 더 포함한다. 원격 액세스 제어 구성요소(132)는 보안 하드웨어(108)가 명령어(command)를 수신한 것에 응답하여 메시지를 생성할 수 있다. 예를 들어, 원격 스토리지(116)는 원격 스토리지(116)에 저장된 데이터(134)를 쓰기, 읽기, 또는 수정하기 위해 액세스될 수 있다. 보안 하드웨어(108)의 보안 스토리지(112)는, 예를 들어, 원격 액세스 제어 구성요소(132)를 포함할 수 있고 원격 액세스 제어 구성요소(132)는 보안 프로세서(110)에 의해 실행될 수 있다.
하나의 예시에 따르면, 원격 액세스 제어 구성요소(132)가 생성하는 메시지가 원격 스토리지(116) 내 판독될 데이터(134)를 특정하는 지시자(가령, 인덱스 등)를 포함할 수 있다. 또 다른 예를 들면, 원격 액세스 제어 구성요소(132)가 생성하는 메시지는 원격 스토리지(116)에 저장되기 위해 서버 컴퓨팅 시스템(114)으로 전송될 데이터를 포함할 수 있다(가령, 원격 액세스 제어 구성요소(132)가 생성하는 메시지 내 데이터가 서버 컴퓨팅 시스템(114)에 의해 데이터(134)로서 저장될 수 있다).
암호화 엔진(130)은 서버 컴퓨팅 시스템(114)으로 전송되도록 원격 액세스 제어 구성요소(132)가 생성한 메시지를 암호화한다. 암호화 엔진(130)은 공유 시크릿(118) 또는 상기 공유 시크릿으로부터 생성된 키를 이용해 메시지를 암호화하여 암호화된 메시지를 생성할 수 있다. 하나의 예를 들면, 암호화 엔진(130)이 대칭 키(122)를 이용해 메시지를 암호화하여 암호화된 메시지를 생성할 수 있다. 상기 암호화된 메시지는 서버 컴퓨팅 시스템(114)의 원격 자원으로의 액세스를 가능하게 하도록 구성된다. 암호화된 메시지는 예를 들어 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)로의 액세스를 가능하게 하여 데이터(134) 읽기, 데이터를 원격 스토리지(116)에 쓰기, 데이터(134) 수정하기 등을 할 수 있도록 구성될 수 있다.
암호화된 메시지는 컴퓨팅 장치(102)에 의해 서버 컴퓨팅 시스템(114)으로 전송될 수 있다. 상기 서버 컴퓨팅 시스템(114)은 암호화된 메시지를, 공유 시크릿(120) 또는 상기 공유 시크릿(120)으로부터 생성된 키를 이용할 수 있다. 예를 들어, 서버 컴퓨팅 시스템(114)은 컴퓨팅 장치(102)로부터 수신된 암호화된 메시지를 대칭 키(126)를 이용해 복호화할 수 있다.
또한, 서버 컴퓨팅 시스템(114)은 보안 하드웨어(108)가 생성한 암호화된 메시지에 응답하여 응답 메시지를 생성할 수 있다. 서버 컴퓨팅 시스템(114)은 공유 시크릿(120) 또는 상기 공유 시크릿으로부터 생성된 키(가령, 대칭 키(126))를 이용해 응답 메시지를 암호화하여 암호화된 응답 메시지를 생성할 수 있다. 덧붙여, 암호화된 응답 메시지는 서버 컴퓨팅 시스템(114)에 의해 컴퓨팅 장치(102)로 전송될 수 있다. 암호화된 응답 메시지는 보안 하드웨어(108)로 입력될 수 있다. 상기 암호화 엔진(130)은 암호화된 응답 메시지를, 공유 시크릿(118) 또는 상기 공유 시크릿(118)(가령, 대칭 키(122))을 이용해 복호화할 수 있다.
일례에 따르면, 암호화 엔진(130)이 출력한 암호화된 메시지는 서버 컴퓨팅 시스템(114)으로 하여금 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)로 데이터를 쓰게 하도록 구성될 수 있다. 이 예시에 따르면, 암호화된 메시지는 보안 하드웨어(108)의 보안 스토리지(112)로부터의 데이터를 포함할 수 있고(가령, 이러한 데이터는 보안 스토리지(112)에 비-영속적으로 유지될 수 있고), 암호화된 메시지는 데이터가 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 데이터(134)로서 써지게 할 수 있다. 원격 스토리지(116)에 저장된 데이터(134)는 영속 데이터(persistent data)일 수 있지만, 본 발명은 이에 국한되지 않는다.
또 다른 예를 들면, 암호화 엔진(130)가 출력하는 암호화된 메시지는 서버 컴퓨팅 시스템(114)으로 하여금 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)로부터 데이터(134)를 읽게 하도록 구성될 수 있다. 이 예시에 따르면, 암호화 엔진(130)은 암호화된 응답 메시지를 복호화하여 데이터(134)를 출력할 수 있고, 여기서, 암호화된 응답 메시지는 서버 컴퓨팅 시스템(114)으로 하여금 원격 스토리지(116)로부터 데이터(134)를 읽게 하도록 구성된 암호화된 메시지에 응답한다(가령, 응답 메시지는 데이터(134)를 포함한다). 덧붙여 보안 스토리지(112)는 데이터(134)를 로컬하게 저장할 수 있다.
데이터(134)는 원격 스토리지(116)에 영속적으로 저장될 수 있지만, 보안 스토리지(112)에 로컬 캐싱은 영속적이지 않으며, 따라서 서버 컴퓨팅 시스템(114)으로부터 불러온 데이터(134)가 보안 스토리지(112)에 영속적으로 저장되지 않는다. 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)로부터 읽히고 보안 스토리지(112)에 저장된 데이터(134)가 보안 하드웨어(108)의 보안 스토리지(112)에 데이터를 로컬하게 캐싱하기 위한 최대 지속시간을 특정하는 대응하는 생존 시간(TTL)을 가질 수 있고, 따라서 TTL의 만료 후 이러한 로컬하게 캐싱된 데이터(134)가 보안 스토리지(112)로부터 삭제될 수 있다. 또 다른 예를 들면, TTL 대신 감분 카운터(decrementing counter)가 사용되어 보안 하드웨어(108)의 보안 스토리지(112)로부터 로컬하게 캐싱된 데이터(134)를 삭제할 수 있다.
보안 하드웨어(108)가 이전에 서버 컴퓨팅 시스템(114)이 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 데이터(134)를 쓸 수 있게 했을 수 있다고 가정하면, 그 후 보안 하드웨어(108)는 서버 컴퓨팅 시스템(114)이 데이터(134)를 읽게 할 수 있다. 또 다른 예를 들면, 보안 하드웨어(108)가 데이터가 읽힐 수 있게 하기 전에, 상이한 컴퓨팅 장치의 상이한 보안 하드웨어가 서버 컴퓨팅 시스템(114)이 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 데이터(134)를 쓸 수 있게 했을 수 있다.
컴퓨팅 장치(102)의 스토리지(106)는 발신자 구성요소(caller component)(136)를 포함할 수 있고, 발신자 구성요소(136)는 프로세서(104)에 의해 실행될 수 있다. 컴퓨팅 장치(102)의 동작 동안, 발신자 구성요소(136)가, 보안 하드웨어(108)로, 보안 하드웨어(108)가 저장한 데이터(가령, 영속 데이터)(가령, 보안 스토리지(112)에 저장된 데이터, 원격 스토리지(116)에 저장된 데이터)로의 액세스를 필요로 하는 명령어를 전송할 수 있다. 또한, 발신자 구성요소(136)는 보안 하드웨어(108)로부터 암호화된 메시지를 수신하고 암호화된 메시지를 서버 컴퓨팅 시스템(114)으로 전송할 수 있다. 상기 발신자 구성요소(136)는 암호화된 응답 메시지를 서버 컴퓨팅 시스템(114)으로부터 수신하고, 암호화된 응답 메시지를 보안 하드웨어(108)로 전송하고, 보안 하드웨어(108)로부터 결과를 수신할 수 있다.
발신자 구성요소(136)는 다양한 방식으로, 가령, 컴퓨팅 장치(102)의 OS의 일부이도록, 또는 컴퓨팅 장치(102)의 OS와 별개인 애플리케이션이도록(또는 이러한 애플리케이션의 일부이도록) 등의 방식으로, 구현될 수 있다. 발신자 구성요소(136)는 하드웨어 보호된 객체에 저장되는 정보로의 액세스를 요청하기 위해 보안 하드웨어(108)에 의해 저장된 데이터로의 액세스를 필요로 하는 명령어를 전송할 수 있다. 하드웨어 보호된 객체에 저장된 정보는, 가령, 암호화 키일 수 있다. 발신자 구성요소(136)는 하드웨어 보호되는 객체 내 정보를 다양한 방식으로, 가령, 컴퓨팅 장치(102)의 그 밖의 다른 기능으로의 액세스 권한을 검증하는 방식(가령, 컴퓨팅 장치(102)로 로그인), 컴퓨팅 장치(102)의 스토리지(106)에 저장된 암호화된 데이터를 액세스(가령, 복호화)하는 방식, 컴퓨팅 장치(102)의 사용자의 신원을 원격 장치 또는 서비스(가령, 가상 스마트 카드 등)에게 입증하는 방식 등으로 이용할 수 있다. 예를 들어, 하드웨어 보호되는 객체가 스토리지 루트 키(124)(또는 상기 스토리지 루트 키(124)로부터 유도된 키)를 이용해 암호화 엔진(130)에 의해 복호화될 수 있다.
발신자 구성요소(136)로부터의 명령어의 수신에 응답하여, 명령어에 대해 신뢰 되는 데이터가 보안 하드웨어(108)의 보안 스토리지(112)에 유지되는 경우, 보안 하드웨어(108)는 결과를 반환할 수 있다. 대안적으로, 명령어에 대해 신뢰 되는 데이터가 보안 하드웨어(108)의 보안 스토리지(112)에 유지되지 않고, 대신 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 유지되는 경우, 보안 하드웨어(108)의 원격 액세스 제어 구성요소(132)는 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)를 액세스하기 위한 메시지를 생성할 수 있고 암호화 엔진(130)은 메시지를 암호화하여 암호화된 메시지를 생성할 수 있다. 따라서 보안 하드웨어(108)는 이러한 명령어의 수신에 응답하여 발신자 구성요소(136)로 암호화된 메시지를 반환할 수 있다. 발신자 구성요소(136)는 암호화된 메시지를 서버 컴퓨팅 시스템(114)으로 전송하며, 서버 컴퓨팅 시스템(114)에 의해 허용되는 경우, 서버 컴퓨팅 시스템(114)으로부터 암호화된 응답 메시지를 수신한다. 발신자 구성요소(136)는 암호화된 응답 메시지를 보안 하드웨어(108)에 제공하고 보안 하드웨어(108)는 발신자 구성요소(136)로 결과를 반환할 수 있다.
앞서 언급된 바와 같이, (가령, 보안 하드웨어(108)가 보안 프로세서(110)를 포함하는 것 대신) 보안 하드웨어(108)와 외부 세계(가령, 보안 하드웨어의 외부, 스토리지(106), 보통 세계(Normal World)) 간에 프로세서(104)의 시-기반 공유가 사용될 수 있다. 따라서 예를 들어 발신자 구성요소(136)는 제1 시간 주기 세트 동안 프로세서(104)에 의해 실행될 수 있다. 제1 시간 주기 세트 동안 프로세서(104)에 의해 실행되는 것에 응답하여, 발신자 구성요소(136)는 명령어를 보안 하드웨어(108)로 전송하고 상기 보안 하드웨어(108)로부터 암호화된 메시지를 수신하며, 암호화된 메시지를 서버 컴퓨팅 시스템(114)으로 전송 등을 할 수 있다. 덧붙여, 프로세서(104)는 제2 시간 주기 세트 동안 발신자 구성요소(136)(또는 보안 하드웨어(108)의 외부의 그 밖의 다른 구성요소(들))를 실행하지 못하게 금지될 수 있으며, 이때, 제1 시간 주기 세트와 제2 시간 주기 세트가 겹치지 않는다. 이 예시에 따르면, 원격 액세스 제어 구성요소(132) 및 암호화 엔진(130)은 제2 시간 주기 세트 동안 프로세서(104)에 의해 실행될 수 있다. 또한, 상기 프로세서(104)는 제1 시간 주기 세트 동안 원격 액세스 제어 구성요소(132)를 실행하는 것이 금지되고 암호화 엔진(130)을 실행하는 것이 금지될 수 있다.
공유 시크릿(118-120)에 의해 신뢰되는 애플리케이션이 서버 컴퓨팅 시스템(114)의 도움으로 장치 간 한계를 극복할 수 있다. 덧붙여, 보안 하드웨어(108)는 공유 시크릿(118-120)을 이용해 원격 스토리지(116)를 할당할 수 있다. 원격 스토리지(116)는 보안 하드웨어(108)의 보안 스토리지(112)에 비교할 때 더 많은 양의 스토리지(가령, NV 스토리지)를 제공할 수 있다. 상기 원격 스토리지(116)는 보안 하드웨어(108)의 보안 스토리지(112)에 비교할 때, 더 빈번한 쓰기(가령, NV 쓰기)를 가능하게 할 수 있다. 또한, 원격 스토리지(116)에 의해, 서버 컴퓨팅 시스템(114)은 원격 스토리지(116)에 시간을 주기적으로 기록함으로써, 신뢰되고, 동기화되며 정확한 시간 소스를 제공할 수 있으며, 따라서 원격 스토리지(116) 내 데이터(134)가 (가령, 서버 컴퓨팅 시스템(114) 또는 신뢰 되는 시간 소스에 의해 설정된) 클록 값이거나 클록 값을 포함할 수 있으며, 상기 클록 값은 본 명세서에 기재된 바와 같이 보안 하드웨어(108)에 의해 판독되고 보안 하드웨어(108)의 보안 스토리지(112)에 로컬하게 저장될 수 있다.
하나의 예시를 따르면, 서버 컴퓨팅 시스템(114)은 보안 하드웨어(108)의 하드웨어 보호된 상태의 일부분을 관리할 수 있다. 예를 들어, 서버 컴퓨팅 시스템(114)은 서버-측 철회를 제어하는 동작을 수행할 수 있다.
도 2를 참조하면, 복수의 컴퓨팅 장치 간에 하드웨어 보호되는 상태를 공유하는 것을 제어하는 시스템(200)이 도시된다. 시스템(200)은 원격 스토리지(116)를 더 포함하는 서버 컴퓨팅 시스템(114)을 포함한다. 추가로, 시스템(200)은 컴퓨팅 장치 A(202) 및 컴퓨팅 장치 B(204)(본 명세서에서 다 함께 컴퓨팅 장치(202-204)라고 지칭됨)를 포함한다. 도시되지는 않았지만, 시스템(200)은 컴퓨팅 장치(202-204)에 추가로, 실질적으로 임의의 개수의 컴퓨팅 장치를 포함할 수 있음이 고려된다.
컴퓨팅 장치(202-204) 각각은 컴퓨팅 장치(102)와 실질적으로 유사할 수 있다. 더 구체적으로, 컴퓨팅 장치 A(202)는 보안 하드웨어 A(206)를 포함하고 컴퓨팅 장치 B(204)는 보안 하드웨어 B(208)를 포함하며, 이들 각각은 보안 하드웨어(108)와 실질적으로 유사할 수 있다. 보안 하드웨어 A(206)는 서버 컴퓨팅 시스템(114)과 공유되는 공유 시크릿 A(210)을 포함하고, 보안 하드웨어 B(208)는 서버 컴퓨팅 시스템(114)과 공유되는 공유 시크릿 B(212)를 포함한다. 따라서 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)는 (공유 시크릿 A(210)와 동일한) 공유 시크릿 A(214) 및 (공유 시크릿 B(212)와 동일한) 공유 시크릿 B(216)를 포함한다.
서버 컴퓨팅 시스템(114)은 암호화 엔진(218)을 더 포함한다. 상기 암호화 엔진(218)는 보안 하드웨어(108)의 암호화 엔진(130)과 실질적으로 유사할 수 있다. 도시되지 않았지만, 보안 하드웨어 A(206) 및 보안 하드웨어 B(208) 각각은 암호화 엔진(130)과 실질적으로 유사한 각자의 암호화 엔진을 포함한다.
서버 컴퓨팅 시스템(114)은 컴퓨팅 장치 A(202)와 컴퓨팅 장치 B(204) 간 하드웨어 보호되는 상태를 동기화할 수 있다. 하드웨어 보호되는 상태는 (가령, 서버 컴퓨팅 시스템(114)의 원격 스토리지(116) 및 컴퓨팅 장치(202-204)의 보안 스토리지에 의해 저장되는) 데이터를 포함한다. 하드웨어 보호되는 상태는 서버 컴퓨팅 시스템(114)과 컴퓨팅 장치 A(202) 간에 통신되는 암호화된 메시지 및 서버 컴퓨팅 시스템(114)과 컴퓨팅 장치 B(204) 간에 통신되는 암호화된 메시지를 기초로 동기화될 수 있다. 서버 컴퓨팅 시스템(114)과 컴퓨팅 장치 A(202) 간에 통신되는 암호화된 메시지는 공유 시크릿 A를 기초로(가령, 공유 시크릿 A로부터 유도된 대칭 키를 이용해) (가령, 암호화 엔진(218) 또는 보안 하드웨어 A(206)의 암호화 엔진에 의해) 암호화되고, 이러한 암호화된 메시지는 또한 공유 시크릿 A를 기초로(가령, 공유 시크릿 A로부터 유도된 대칭 키를 이용해) (가령, 암호화 엔진(218) 또는 보안 하드웨어 A(206)의 암호화 엔진에 의해) 복호화된다. 덧붙여, 서버 컴퓨팅 시스템(114)과 컴퓨팅 장치 B(204) 간 통신되는 암호화된 메시지가 공유 시크릿 B를 기초로(가령, 공유 시크릿 B로부터 유도된 대칭 키를 이용해) (가령, 암호화 엔진(218) 또는 보안 하드웨어 B(208)의 암호화 엔진에 의해) 암호화되며, 이들 암호화된 메시지가 또한 공유 시크릿 B를 기초로(가령, 공유 시크릿 B로부터 유도된 대칭 키를 이용해) (가령, 암호화 엔진(218) 또는 보안 하드웨어 B(208)의 암호화 엔진에 의해) 복호화된다.
예를 들어, 서버 컴퓨팅 시스템(114)은 컴퓨팅 장치 A(202)와 컴퓨팅 장치 B(204) 간 하드웨어 보호되는 상태를 동기화하는 것의 일부로서 다음을 수행할 수 있다. 데이터(220)(가령, 데이터(134))가 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 저장될 수 있다. 데이터(220)는 컴퓨팅 장치(202-204) 중 하나로부터의 수신된 암호화된 메시지에 응답하여, 써질 수 있다. 대안적으로, 서버 컴퓨팅 시스템(114)의 제어 구성요소(222)가 원격 스토리지(116)에 데이터(220)를 쓸 수 있다. 암호화 엔진(218)은 보안 하드웨어 A(206)에 대한 제1 메시지를 암호화할 수 있고, 이때 제1 메시지는 데이터(220)를 포함한다. 제1 메시지는 공유 시크릿 A(214)를 기초로 암호화 엔진(218)에 의해 암호화되어 제1 암호화된 메시지를 생성할 수 있다. 또한, 서버 컴퓨팅 시스템(114)은 제1 암호화된 메시지를 컴퓨팅 장치 A(202)로 전송할 수 있다. 덧붙여, 암호화 엔진(218)은 보안 하드웨어 B(208)에 대한 제2 메시지를 암호화할 수 있고, 이때, 제2 메시지는 데이터(220)를 포함한다. 제2 메시지는 공유 시크릿 B(216)를 기초로 암호화 엔진(218)에 의해 암호화되어, 제2 암호화된 메시지를 생성할 수 있다. 서버 컴퓨팅 시스템(114)은 제2 암호화된 메시지를 컴퓨팅 장치 B(204)로 전송할 수 있다.
덧붙여, 서버 컴퓨팅 시스템(114)이 암호화된 메시지를 컴퓨팅 장치로 송신한 후(가령, 앞서의 예시에서, 제1 암호화된 메시지를 컴퓨팅 장치 A(202)로 전송하거나 제2 암호화된 메시지를 컴퓨팅 장치 B(204)로 전송한 후), 서버 컴퓨팅 시스템(114)의 원격 스토리지(116) 내 데이터(220)가 수정될 수 있다. 예를 들어, 데이터(220)는 컴퓨팅 장치(202-204) 중 하나로부터 수신된 암호화된 메시지에 응답하여 또는 서버 컴퓨팅 시스템(114)의 제어 구성요소(222)에 의해 수정될 수 있다. 그 후, 암호화 엔진(218)은 보안 하드웨어 A(206)에 대한 후속 메시지를 암호화할 수 있으며, 이때, 후속 메시지는 수정된 상태의 데이터(220)를 포함한다. 상기 후속 메시지는 공유 시크릿 A(214)를 기초로 암호화 엔진(218)에 의해 암호화되어 후속 암호화된 메시지를 생성할 수 있다. 후속 암호화된 메시지가 서버 컴퓨팅 시스템(114)에 의해 컴퓨팅 장치 A(202)로 전송될 수 있다. 추가적으로 또는 대안적으로, 보안 하드웨어 B(208)에 대한 후속 메시지가 마찬가지로 암호화되고 컴퓨팅 장치 B(204)로 전송될 수 있다.
서버 컴퓨팅 시스템(114)은 특정 하드웨어 보호 상태가 동기화될 컴퓨팅 장치(가령, 컴퓨팅 장치(202-204))를 식별할 수 있는 가입 구성요소(join component)(224)를 더 포함할 수 있다. 예를 들어, 하드웨어 보호되는 상태의 장치 간 동기화가 동일 사용자가 소유하는 컴퓨팅 장치 간에 이뤄질 수 있다. 또 다른 예를 들면, 하드웨어 보호되는 상태의 장치 간 동기화가 특정된 사용자 그룹이 소유하는 컴퓨팅 장치 간에 이뤄질 수 있다.
예를 들어, 동일한 사용자에게 등록된 컴퓨팅 장치들, 가령, 컴퓨팅 장치(202-204)가 사용자의 자격증명(credential)과 관련된 키를 각자 가질 수 있다. 예를 들어, 동일 사용자가 소유하는 장치들 간에 공유 키가 생성될 수 있다. 예를 들자면, "bob@xyz.com"가 서버 컴퓨팅 시스템(114)을 호출할 때, 공유 키가 Bob의 각각의 장치 상의 보안 하드웨어로 자동으로 제공될 수 있다. 이 공유 키는 다양한 데이터 공유 시나리오를 부트스트랩할 수 있다.
덧붙여, 서버 컴퓨팅 시스템(114)은 클록 값을 업데이트할 수 있는 클록(226)을 포함할 수 있다(가령, 데이터(220)는 클록 값이거나 클록 값을 포함할 수 있다). 클록(226)은 실시간 클록 기능을 제공한다. 클록(226)은 초기화되면 지방 시를 판독할 수 있다. 또한 클록(226)은 네트워크 시 프로토콜(NTP)을 이용해 기준 클록과 동기화될 수 있다.
또한, 제어 구성요소(222)에 의해 데이터가 서버 컴퓨팅 시스템(114)에 의해 제어될 수 있다. 예를 들어, 제어 구성요소(222)는 콘텐츠로의 액세스 권한을 철회하도록 데이터(220)를 수정할 수 있다. 따라서 서버측 철회가 시스템(200)에 의해 지원될 수 있다. 이와 달리, 클라이언트가 이러한 철회를 허용할 코드를 실행시키는 데 동의해야 할 것이기 때문에(가령, 이러한 코드를 실행시킬 것을 거절하는 것이 서버가 철회를 야기하지 못하도록 막을 수 있음), 종래의 TPM을 이용하는 서버측 철회는 어려울 것이다.
도 3을 참조하면, 데이터(가령, 데이터(134))를 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)에 중앙집중적으로 저장하고 이러한 데이터를 컴퓨팅 장치(102) 상에 로컬하게 저장하는 시스템(300)이 도시된다. 다시 말하면, 시스템(300)은 컴퓨팅 장치(102)와 서버 컴퓨팅 시스템(114)을 포함한다. 상기 컴퓨팅 장치(102)는 보안 하드웨어(108)를 더 포함하며, 상기 보안 하드웨어는 보안 프로세서(110) 및 보안 스토리지(112)를 포함할 수 있다. 상기 보안 스토리지(112)는 공유 시크릿(118)을 포함한다. 상기 보안 스토리지(112)는 대칭 키(122) 및 스토리지 루트 키(124)를 더 포함할 수 있다.
보안 스토리지(112)는 로컬 캐시(local cache)(302)를 더 포함한다. 상기 로컬 캐시(302)는, 예를 들어, 보안 휘발성 스토리지(가령, 랜덤-액세스 메모리(RAM))일 수 있다. 로컬 캐시(302)는 원격 스토리지(116)에 저장된 데이터의 복사본(가령, 데이터(134))을 유지할 수 있다. 덧붙여, 로컬 캐시(302)는 원격 스토리지(116)에 써질 데이터를 포함할 수 있다.
로컬 캐시(302) 내 데이터는 보안 하드웨어(108)의 인증 구성요소(304)에 의해 사용되어, 하드웨어 보호되는 객체(306)의 정보의 액세스를 허가할지 또는 금지할지를 결정할 수 있다. 예를 들어, 하드웨어 보호되는 객체(306)는 암호화 키를 포함할 수 있다. 하드웨어 보호되는 객체(306)는 컴퓨팅 장치(102)의 스토리지(106)에 저장될 수 있지만, 또 다른 예에 따르면, 보안 스토리지(112)가 하드웨어 보호되는 객체(306)를 추가로 또는 대안적으로 포함할 수 있다. 인증 구성요소(304)에 의해 허가될 때, 암호화 엔진(130)은 보안 하드웨어(108)에 의해 수신된 하드웨어 보호되는 객체(306)를 (가령, 스토리지 루트 키(124)를 이용해) 복호화할 수 있다. 일례에 따르면, 하드웨어 보호되는 객체(306)는 서버 컴퓨팅 시스템(114)에 의해 암호화됐을 수 있지만, 본 발명은 이에 한정되지 않는다.
발신자 구성요소(136)가 하드웨어 보호되는 객체(306)에 포함되는 정보(가령, 암호화 키)를 액세스할 수 있도록 하기 위해, 인증 구성요소(304)는 로컬 캐시(302) 내 데이터(가령, 서버 컴퓨팅 시스템(114)의 원격 스토리지(116)로부터 불러온 데이터(134))를 기초로, 정책에서 특정된 조건(또는 복수의 조건)이 만족되는지 여부를 검증할 수 있다. 정책은 하드웨어 보호되는 객체(306)에 대응한다. 예를 들어, 인증 구성요소(304)는 인증 정보, 모노토닉 카운터 값, 클록 값, 이들의 조합 등을 검증할 수 있다. 인증 구성요소(304)에 의해 조건이 만족되지 않는다고 식별될 때 암호화 엔진(130)은 하드웨어 보호되는 객체(306)를 복호화하지 못하게 금지될 수 있다. 또는, 인증 구성요소(304)가 어떠한 조건도 만족되지 않는다고 검증한 경우, 암호화 엔진(130)은 스토리지 루트 키(124)를 이용해 하드웨어 보호되는 객체(306)를 복호화하도록 허가될 수 있다.
일례에 따르면, NV 인덱스라고 지칭되는 데이터 구조가 사용되어 원격 스토리지(116)(가령, 원격 NV 스토리지)에 영속적으로 데이터 값(가령, 데이터(134))을 저장할 수 있다. (가령, 발신자 구성요소(136)로부터 보안 하드웨어(108)에 의해 수신된) 명령어에서 영속 객체가 참조될 때, 보안 하드웨어(108)는 객체를 로컬 캐시(302)로 로딩한다. 새 NV 인덱스를 할당할 때, 애플리케이션이 이러한 NV 인덱스에 대한 액세스 제어(읽기-전용(read-only) 또는 읽기-쓰기(read-write)), 유형, 및 크기를 특정한다. 예를 들어, NV 인덱스의 다음의 4개의 가능한 유형이 존재할 수 있다: (1) 데이터 블롭(data blob)을 저장하기 위한 보통(ordinary), (2) 보안 모노토닉 카운터를 저장하기 위한 카운터, (3) 개별적으로 설정될 수 있는 비트-필드, 및 (4) 플랫폼 구성 레지스터(PCR)와 유사한 확장 연산을 이용해 수정될 수 있는 확장.
원격 스토리지(116)는 키-값 저장(key-value store)이거나 이를 포함할 수 있는데, 이때, 키-값 저장의 키는 NV 인덱스이다. 본 명세서에서 더 상세히 기재될 바와 같이, 컴퓨팅 장치(102)의 OS(가령, 발신자 구성요소(136))는 보안 하드웨어(108)와 서버 컴퓨팅 시스템(114) 간 통신을 보조할 수 있다. 예를 들어, 원격 스토리지(116)의 키-값 저장을 액세스하는 데 사용되는 동작이 비동기식일 수 있다.
원격 NV 엔트리가 로컬 캐시(302)에 로컬하게 캐싱될 수 있다. 이를 위해, TTL이 원격 NV 엔트리의 일부로서 포함될 수 있다. TTL은 보안 하드웨어(108)가 NV 엔트리를 로컬 캐시(302)에 캐싱할 수 있는 지속시간(가령 초 단위)을 특정한다. TTL이 만료되면, NV 인덱스가 로컬 캐시(302)로부터 삭제되고 원격 스토리지(116)로부터 신선한(fresh) 최신 복사본으로 재-로딩된다. 보안 스토리지(112)의 로컬 캐시(302)는 영속적이지 않다, 즉, 컴퓨팅 장치(102)가 재-부팅될 때마다 완전히 소거된다. 동기화 타임스탬프(ST)가 또한 추가되어 엔트리가 마지막으로 로컬하게 캐싱되었을 때로 설정될 수 있다. 로컬 캐시(302)에 NV 인덱스의 어떠한 캐싱된 엔트리도 없는 경우, 이 타임스탬프는 널(null)일 수 있다.
로컬 캐싱의 이점은 성능 및 가용성이며, 엔트리가 로컬 캐시(302)로부터 읽힐 수 있는 경우, 원격 NV 읽기 동작이 서버 컴퓨팅 시스템(114)까지의 라운드-트립을 필요로 하지 않을 수 있다(따라서 대기시간 및 네트워크 대역폭 사용율이 감소될 수 있다). 이로 인해, 컴퓨팅 장치(102)가 서버 컴퓨팅 시스템(114)으로부터 연결해제될 때에도 TTL이 만료되지 않는 한 NV 스토리지 엔트리의 읽기가 가능하다. 상충점은 로컬 캐싱된 엔트리가 낡을 수 있다(stale)는 것이다. TTL이 만료된 후에야 원격 스토리지(116) 내 NV 엔트리로의 서버측 업데이트가 로컬하게 반영된다. TTL은 각각의 NV 인덱스 엔트리에 대해 성능과 낡음 간 상충관계를 제어한다.
쓰기(write)의 경우, 발신자 구성요소(136)가 로컬 캐시(302)에 써진 데이터를 원격 NV 스토리지에 써지도록 전파하는 데 신뢰될 수 있다. 발신자 구성요소(136)로부터 보안 하드웨어(108)에 의해 수신된 NV 쓰기 명령어에 응답하여, 보안 하드웨어(108)는 우선 이러한 명령어를 기초로 로컬 캐시(302)를 업데이트할 수 있다. 덧붙여, 보안 하드웨어(108)는 NV 스토리지로의 다시 쓰기(write back)가 계류 중임을 가리키는 에러 코드를 반환할 수 있다. 발신자 구성요소(136)는 원격 스토리지(116)로의 쓰기 프로토콜을 개시할 수 있다. 발신자 구성요소(136)가 다시 쓰기를 완료하지 못한 경우, 쓰기는 휘발성을 유지하며 영속에 대한 어떠한 보장도 이뤄지지 않는다.
발신자 구성요소(136)(가령, 컴퓨팅 장치(102)의 OS)에 의해 네트워크 시그널링 및 통신이 이뤄지기 때문에, 보안 하드웨어(108)와 서버 컴퓨팅 시스템(114) 간 연결성의 손실이 보안 하드웨어(108)에게 투명하다. 이하에서 더 상세히 기술되겠지만, 비동기식 명령어가 사용되어 원격 스토리지(116) 내 데이터(134)를 액세스할 수 있다. 비동기식 명령어의 속성(가령 2단계 프로세스) 때문에, 보안 하드웨어(108)는 (가령, 로컬 캐시(302)에) 단계들 사이에 메모리 내 상태(in-memory state)를 유지한다. 이러한 상태 유지는 서비스 거부 공격에 자원 할당을 할 가능성을 도입하며, 이때 악의적 OS가 보안 하드웨어(108)의 로컬 캐시(302)가 가득 차게 하는 많은 비동기식 명령어를 발생시킬 수 있다. 추가로 또는 대안적으로, 공격자는 낡음 공격(staleness attack)을 시작할 수 있고, 이로 인해, 서버 컴퓨팅 시스템(114)과의 통신에 인공적인 딜레이가 도입된다. 이러한 유형의 공격에 대비해 보호하기 위해, 보안 하드웨어(108)는 전역 라우트 타임아웃(global route timeout)(GRT) 값을 유지할 수 있다. 보안 하드웨어(108)가 발신자 구성요소(136)로부터 비동기식 요청을 수신할 때마다, 상기 보안 하드웨어(108)는 GRT로 셋팅된 타이머를 시작한다. 추가로, 로컬 캐시(302)를 비우기 위해, 보안 하드웨어(108)는 미결 비동기식 명령어를 스캔하고 이중 만료된 타이머를 갖는 것을 폐기한다. GRT의 값이 예를 들어 보안 하드웨어(108)의 소유자에 의해 설정될 수 있다. 일례에 따르면, GRT의 디폴트 값이 5분일 수 있지만, GRT의 그 밖의 다른 디폴트 값이 본 명세서의 청구범위 내에 속하는 것으로 간주된다.
덧붙여, 클록 값이 원격 스토리지(116)에 저장된 (사전-할당된 NV 인덱스를 갖는) NV 엔트리이다. 서버 컴퓨팅 시스템(114)만 클록 NV 엔트리를 업데이트할 수 있다. 보안 하드웨어(108)는 클록 NV 엔트리에 대해 NV 읽기 명령어를 발행함으로써 클록 값을 읽을 수 있다. 클록 NV 엔트리 읽기는, GRT보다 엄격할 수 있는, 전역 클록 타임아웃(global clock timeout)(GCT)이라고 지칭되는 타임아웃의 대상이다. 서버 컴퓨팅 시스템(114)으로부터 읽히는 클록 NV 엔트리가 보안 스토리지(112)의 로컬 캐시(302)에 저장될 수 있다. 이러한 방식으로 보안 하드웨어(108)는 클록 NV 엔트리의 동기화 타임스탬프(ST)에 현재 타이머 틱 카운트를 더함으로써, 현재 시각을 액세스할 수 있다.
maxClockError ≤ TTL x drift + GCT (1)
수학식(1)은 TTL, 드리프트(drift), 및 GCT의 함수로서, 보안 하드웨어(108)의 로컬 클록의 정확도의 상한을 기술한다. 디폴트로, 예를 들어, TTL은 1일로 설정될 수 있고 전역 클록 타임아웃(GCT)는 1초로 설정될 수 있지만, 본 발명은 이에 한정되지 않는다. 낮은 GCT가 로컬 클록 정확도를 개선하지만, 장치-서버 컴퓨팅 시스템 간 통신이 높은 대기시간을 갖는 경우 이용 가능하지 못할 수 있다. 앞서 언급된 디폴트 값이 다양한 모바일 시나리오를 지원하는 데 충분히 정확할 수 있다. 지원되는 예시적 모바일 시나리오에 따르면, 하드웨어 보호되는 객체(306)가 금요일 자정에 복호화되도록 허가될 수 있다(가령, 이 시각에 영화가 배포될 수 있다). GCT를 1초보다 낮게 설정함으로써, 정확도를 추가로 개선할 수 있고, TTL을 1일보다 낮게 설정하는 것은 드리프트의 영향을 감소시킬 수 있다.
컴퓨팅 장치(102)의 OS에 의해 연결성 손실이 감춰질 수 있지만, 컴퓨팅 장치(102)는 연장된 시간 주기 동안 오프라인일 수 있다(가령, 서버 컴퓨팅 시스템(114)으로부터 연결해제될 수 있다). 이러한 시나리오에 따르면, 보안 하드웨어(108)는 서버 컴퓨팅 시스템(114)과 동기 상태에서 벗어날 수 있지만, 이러한 시나리오에서는 보안 우려가 제기되지 않는다. 대신, 연결해제의 주기가 길 때, 보안 하드웨어(108)는 로컬 캐시(302) 내 엔트리가 낡아짐(stale)에 따라 천천히 열화(degrade)될 수 있다. 컴퓨팅 장치(102)가 서버 컴퓨팅 시스템(114)과 재연결할 때, 보안 하드웨어(108)의 하드웨어 보호되는 상태가 재-동기화될 수 있다.
보안 하드웨어(108)의 다양한 아키텍처가 본 발명의 범위 내에 속하는 것으로 의도된다. 이하에서, 몇 가지 예시적 아키텍처가 기술되지만, 보안 하드웨어(108)의 그 밖의 다른 아키텍처가 본 발명의 범위 내에 속하는 것으로 이해되어야 한다. 예시적 아키텍처에 따르면, 보안 하드웨어(108)는 물리 TPM 칩일 수 있다.
또 다른 예시적 아키텍처에서, 보안 하드웨어(108)는 컴퓨팅 장치(102)의 보호되는 메모리이거나 이를 포함할 수 있다. 이 예시에 따르면, 보호되는 메모리는 소프트웨어 기반 TPM을 포함할 수 있다(가령, 소프트웨어-기반 TPM은 공유 시크릿(118), TPM 소프트웨어 스택 등을 포함한다). 보호되는 메모리는 보통 세계(Normal World)의 비-신뢰되는 구성요소에 의해 읽히거나 수정될 수 없는 컴퓨팅 장치(102)의 스토리지이다. 보통 동작(Normal operation)은 보호되는 메모리 내에 포함된 데이터 및 기능을 읽지도 쓰지도 못할 수 있다. 예를 들어, 컴퓨팅 장치(102)의 OS는 보통 세계(Normal World)에서 동작하며, 소프트웨어 기반 TPM을 포함하는 보호되는 메모리(가령, 보안 세계(Secure World))를 읽거나 쓸 수 없다. 일례에 따르면, 하드웨어(가령, 메모리, 스토리지 제어기 등)이 보안 세계에 의해서만 사용되도록 스토리지의 영역을 분할(partition)할 수 있다. OS가 보통 세계에서 실행되고 보안 세계에서는 실행되지 않기 때문에, OS는 보호되는 것으로 표시된 어떠한 메모리도 액세스할 수 없다(가령, OS는 보안 세계에서 동작하는 소프트웨어-기반 TPM으로 명령어를 전송할 수 있다).
또 다른 예시적 아키텍처에 따르면, 컴퓨팅 장치(102)는 프로세싱 플랫폼을 포함할 수 있다. 상기 프로세싱 플랫폼은 컴퓨팅 장치(102)의 OS를 실행하도록 구성된 적어도 하나의 프로세서(가령, 프로세서(104))를 포함한다. 상기 프로세싱 플랫폼은 적어도 하나의 프로세서와 통신하는 적어도 하나의 보안 프로세서(가령, 보안 프로세서(110))를 더 포함한다. 따라서 보안 하드웨어(108)는 보안 프로세서(들)를 포함한다. 보안 프로세서는 공유 시크릿(118)(그리고 보안 스토리지(12) 내에 보유되는 경우 대칭 키(122) 및 스토리지 루트 키(124)도)을 액세스할 수 있다. 보안 프로세서(들)는 공유 시크릿(118)을 기초로 다양한 기능(가령, 암호화, 복호화, 증명, 인증 등)을 더 실행할 수 있다. 덧붙여, OS를 실행하도록 구성된 프로세싱 플랫폼의 적어도 하나의 프로세서가 공유 시크릿(118)(및 대칭 키(122) 및 스토리지 루트 키(124))을 액세스하지 못하게 금지된다.
또 다른 예시적 아키텍처에 따르면, 보안 하드웨어(108)는 프로세서 상에 보안 엔클레이브(secure enclave)를 포함할 수 있다. 이 예시에 따르면, 보안 엔클레이브가 공유 시크릿(118)(그리고 보유되는 경우 대칭 키(122) 및 스토리지 루트 키(124)도)을 저장하고 보안 하드웨어(108)의 외부의 소스로부터 보호할 수 있다.
도 4-9는 보안 하드웨어(108)가 물리 TPM 칩인 예시적 아키텍처와 관련된 다양한 예시를 기술한다. 이들 예시는 보안 하드웨어(108)의 또 다른 아키텍처로 확장될 수 있음이 자명할 것이다.
도 4를 참조하면, 장치 간 신뢰되는 애플리케이션을 지원하는 시스템(400)이 도시된다. 시스템(400)은 다시 컴퓨팅 장치(102) 및 서버 컴퓨팅 시스템(114)을 포함한다. 도 4에서 도시된 예시에서, 보안 하드웨어(108)는 본 명세서에서 cTPM(402)으로 지칭되는 물리 TPM 칩이며, 따라서 컴퓨팅 장치(102)는 cTPM(402)를 포함한다. cTPM(402)는 서버 컴퓨팅 시스템(114)과 공유되는 공유 시크릿(가령, 공유 시크릿(118), 공유 1차 시드)을 구비한다. 도시되지는 않아도, cTPM(402)는 또한 서버 컴퓨팅 시스템(114)과 공유되지 않는 하나 이상의 다른 시크릿(가령, 공유 1차 시드가 아닌 다른 하나 이상의 1차 시드)을 구비할 수 있다.
cTPM(402)은 보안 프로세서(110) 및 보안 스토리지(가령, 보안 스토리지(112))를 포함한다. 상기 보안 스토리지는 보안 NV 스토리지(404) 및 보안 휘발성 스토리지(406)(가령, 랜덤-액세스 메모리(RAM), 로컬 캐시(302))를 포함한다. 보안 휘발성 스토리지(406)는 컴퓨팅 장치(102)의 재부팅 시 재설정이 보장되는 플랫폼 구성 레지스터(PCR)의 세트이거나 이를 포함할 수 있다. PCR은 컴퓨팅 장치(102) 상에서 부팅되는 소프트웨어(가령, BIOS, 펌웨어, 및 OS 부트로더(bootloader))의 일부분의 핑거프린트(fingerprint)를 저장하는 데 사용될 수 있다.
덧붙여, cTPM(402)는 암호화 엔진(130), 원격 액세스 제어 구성요소(132), 및 타이머(408)를 포함한다. 암호화 엔진(130)은 다양한 암호화 알고리즘을 실행하도록 구성된다. 암호화 알고리즘의 예시는 SHA-1(secure hash algorithm-1)(보안 해시 알고리즘), SHA-2, RSA, 및 ECC(elliptic curve cryptography)(타원 곡선 암호화)가 있다. 예를 들어, TCG로부터 이용 가능한 버전 1.2의 TPM 규격이 SHA-1 및 RSA를 포함하는 암호화 알고리즘 세트를 제공하며, 반면에, 버전 2.0의 TPM 규격은 SHA-1, SHA-2, RSA, 및 ECC를 포함하는 암호화 알고리즘 세트를 제공한다. 따라서 암호화 엔진(130)은 특정 버전의 TPM 규격에 의해 특정되는 암호화 알고리즘의 세트를 실행하도록 구성될 수 있다. 또한 타이머(408)는 cTPM(402)에 대한 내부 신뢰 타이머를 제공한다.
도 4의 예시적 아키텍처에 도시된 바와 같이, 서버 컴퓨팅 시스템(114)은 서버 컴퓨팅 시스템(114)의 하나 이상의 물리 장치 상에서 실행되는 cTPM 가상 머신(VM)(410)을 포함한다. cTPM VM(410)은 프로세서(412) 및 원격 스토리지(가령, 원격 스토리지(116))를 포함할 수 있다. 원격 스토리지는 원격 NV 스토리지(414) 및 휘발성 스토리지(416)를 포함할 수 있다. 또 다른 예시에 따르면, 원격 NV 스토리지(414)는 cTPM VM(410)와 분리될 수 있음이 고려된다. cTPM VM(410)는 또한 암호화 엔진(218) 및 클록(226)을 포함할 수 있다. 원격 NV 스토리지(414)는 클라우드 스토리지일 수 있다. 각각의 컴퓨팅 장치(가령, 각각의 cTPM, 컴퓨팅 장치 A(202) 및 컴퓨팅 장치 B(204))가 개별 cTPM VM과 연관될 수 있다.
cTPM(402)과 cTPM VM(410) 모두 추가 cTPM 특징을 갖는 TPM 소프트웨어 스택을 구현한다. 따라서 cTPM(402)에 이뤄지는 (가령, cTPM VM(410)에 의해 개시되는) 클라우드 작업이 TPM 시맨틱(semantic)을 따르고, 따라서 이러한 작업의 보안 속성이 재-검증될 필요가 없다. 장치측(가령, 컴퓨팅 장치(102))에서, cTPM 소프트웨어 스택이 보안 하드웨어(가령, cTPM 칩 등) 내에서 운영되며, 반면에, 서버 컴퓨팅 시스템(114)은 cTPM VM(410) 내부에서 cTPM 소프트웨어를 운영할 수 있다. 서버 컴퓨팅 시스템(114) 내에서 운영될 때, cTPM 자원(가령, 원격 NV 스토리지(414), 휘발성 스토리지(416), 암호화 엔진(218), 클록(226))이 하드웨어에서 캡슐화될 필요가 없는데, 왜냐하면 cTPM VM(410)에서 운영되는 OS가 신뢰되는 것으로 간주되기 때문이다. 이와 달리, 컴퓨팅 장치(102)의 프로세서(104)에 의해 실행되는 OS는 신뢰되지 않으며, 따라서 보안 하드웨어(가령, cTPM 칩)가 이들 자원을 OS로부터 고립되어 제안할 수 있는 것이 바람직하다.
도 4에 제공된 예시에서, 공유 시크릿(가령, 공유 시크릿(118) 및 공유 시크릿(120))은 cTPM(402)과 서버 컴퓨팅 시스템(114) 간에 공유되는 공유 1차 시드이다. 공유 1차 시드는 cTPM(402) 및 서버 컴퓨팅 시스템(114)에 영구적으로 저장되는 랜덤 값이다(공유 1차 시드는 cTPM(402) 및 서버 컴퓨팅 시스템(114)을 떠나지 않는 것이 바람직하다). 따라서 cTPM(402)의 보안 NV 스토리지(404)가 공유 1차 시드(418)를 영구적으로 저장할 수 있고 서버 컴퓨팅 시스템(114)의 원격 NV 스토리지(414)는 공유 1차 시드(420)를 영구적으로 저장할 수 있으며, 이때, 공유 1차 시드(418)와 공유 1차 시드(420)가 매칭된다. 공유 1차 시드(418 및 420)는 각각 cTPM(402) 및 cTPM VM(410)에 의해 사용되어 클라우드 제어 도메인을 위한 대칭/비대칭 키 및 증거를 생성할 수 있다. 다시, 공유 1차 시드(418 및 420)는 각각 cTPM(402) 및 cTPM VM(410)에 의해 사용되어 비대칭 스토리지 루트 키(가령, CRK(422) 및 CRK(426)) 및 대칭 키(가령, CCK(424) 및 CCK(428))를 생성할 수 있다.
CRK(422) 및 CRK(426)의 시맨틱은 소유자 제어 도메인(owner control domain)에 대한 스토리지 루트 키(SRK)의 시맨틱과 실질적으로 유사할 수 있다. CRK(422) 및 CRK(426)가 각각 암호화 엔진(130) 및 암호화 엔진(218)에 의해 사용되어 클라우드 제어 도메인 내에서 보호되는 객체를 (소유자 제어 도메인 내 객체를 암호화하는 데 SRK가 사용되는 방식과 유사하게) 암호화할 수 있다. CCK(424) 및 CCK(428)는 클라우드 제어 도메인에 특정적이다. 암호화 엔진(130) 및 암호화 엔진(218) 각각이 CCK(424) 및 CCK(428)를 이용해 cTPM(402)과 서버 컴퓨팅 시스템(114) 간에 교환되는 데이터를 보호할 수 있다.
도 5는 cTPM(402)에 의해 지원되는 예시적 제어 도메인을 도시한다. 상이한 개체가 cTPM(402)의 서로 다른 자원을 제어할 수 있다. 제어 도메인(가령, 계층구조)은 특정 개체가 제어할 수 있는 특정 자원을 지칭한다. 도 5에 나타난 예시에 따르면, cTPM(402)이 다음의 4개의 제어 도메인을 지원할 수 있다: 플랫폼 제조업체 제어 도메인(platform manufacturer control domain)(500), 소유자 제어 도메인(502), 프라이버시 관리자 제어 도메인(504), 및 클라우드 제어 도메인(506)(본 명세서에서 총칭하여 제어 도메인(500-506)이라 칭함). 그러나 앞서 언급된 제어 도메인 중 하나 이상(클라우드 제어 도메인(506)이 아닌 다른 제어 도메인)이 cTPM(402)에 의해 지원될 필요는 없다. 또한, 제어 도메인(500-506)에 추가로 또 다른 제어 도메인이 cTPM(402)에 의해 지원될 수 있다.
플랫폼 제조업체는 자원(508)을 플랫폼 제조업체 제어 도메인(500)의 일부로서 제어할 수 있다. 플랫폼 제조업체 제어 도메인(500)은 cTPM(402)의 펌웨어를 업데이트할 수 있다. 또한, 소유자는 자원(510)을 소유자 제어 도메인(502)의 일부로서 제어할 수 있다. 소유자 제어 도메인(502)은 사용자 및 애플리케이션을 대리하여 키 및 데이터를 보호한다. 프라이버시 관리자가 자원(512)을 프라이버시 관리자 제어 도메인(504)의 일부로서 제어할 수 있다. 프라이버시 관리자 제어 도메인(504)은 프라이버시-민감성 데이터를 보호한다. 프라이버시 관리자는, 예를 들어, 기업의 IT 부서일 수 있으며, 이때, IT 부서는 기업의 컴퓨팅 장치의 TPM(가령, cTPM)에 대한 프라이버시 관리자이다. 소유자는 또한 클라우드 제어 도메인(506)의 일부로서 자원(514)을 제어할 수 있다. 소유자 제어 도메인(502)과 유사하게, 클라우드 제어 도메인(506)은 사용자 및 애플리케이션을 대리하여 키 및 데이터를 보호한다.
각각의 제어 도메인(500-506)은 대응하는 1차 시드를 가진다. 1차 시드는 대응하는 제어 도메인(500-506)에 대한 대칭/비대칭 키 및 증거를 생성하는 데 사용된다. 따라서 플랫폼 제조업체 제어 도메인(500)은 1차 시드(516)를 가지며, 소유자 제어 도메인(502)은 1차 시드(518)를 갖고, 프라이버시 관리자 제어 도메인(504)은 1차 시드(520)를 가지며, 클라우드 제어 도메인(506)은 공유 1차 시드(418-420)를 가진다. 각각의 1차 시드는 큰 랜덤 값이다. 1차 시드(516), 1차 시드(518), 1차 시드(520), 및 공유 1차 시드(418)는 cTPM(402)에 (가령, 보안 NV 스토리지(404) 내에) 영구적으로 저장된다. 덧붙여, 공유 1차 시드(420)는 서버 컴퓨팅 시스템(114)에 (가령, 원격 NV 스토리지(414)에) 영구적으로 저장된다. 일례에 따르면, 제조 시점에서, cTPM(402)이 1차 시드(516), 1차 시드(518), 1차 시드(520), 및 공유 1차 시드(418)로 제공될 수 있다.
클라우드 제어 도메인(506)은, 공유 1차 시드(418-420)가 cTPM(402)과 서버 컴퓨팅 시스템(114) 간에 공유되나, 이와 달리, 1차 시드(518)가 cTPM(402) 외부에서 이용 가능하지 않는다(가령, 서버 컴퓨팅 시스템(114)은 1차 시드(518)에 대한 액세스 권한을 갖지 않는다)는 점을 제외하고, 소유자 제어 도메인(502)과 실질적으로 유사한 기능을 제안한다. cTPM(402)과 서버 컴퓨팅 시스템(114) 간 공유 1차 시드(418-420)를 공유함으로써, cTPM(402) 및 서버 컴퓨팅 시스템(114) 모두 동일한 클라우드 루트 키(가령, CRK(422) 및 CRK(426))를 생성할 수 있다. 클라우드 루트 키를 서버 컴퓨팅 시스템(114)의 원격 스토리지(가령, 원격 NV 스토리지(414))와 조합함으로써, 종래의 TPM과 달리, 서버 컴퓨팅 시스템(114)을 통한 데이터의 개선된 공유가 가능하며, 신뢰되는 실시간 클록으로의 액세스를 제공하고 원격 NV 스토리지(414)로의 액세스를 제공한다. 원격 NV 스토리지(414)는 종래의 TPM에 의해 일반적으로 제공되는 스토리지의 양에 비교할 때 cTPM(402)에 대해 많은 양의 스토리지를 제공하며, 종래의 TPM에 비교할 때 더 빈번한 쓰기를 가능하게 한다.
종래의 TPM은 하드웨어 보호가 장치 간으로 확장되지 않는 단일 컴퓨팅 장치에 대한 보장을 제안한다. 예를 들어, 소유자 제어 도메인(502)은 단일 TPM에 대한 고립 수단만을 제공할 수 있다. 새로운 소유자가 TPM의 소유권을 가질 때, 이들은 소유자 제어 도메인(502)에서 이전 소유자의 TPM-보호되는 시크릿을 액세스할 수 없다. 동일한 사용자가 (2개의 상이한 장치 상에) 2개의 상이한 TPM을 가질 때, 각각의 TPM의 소유자 제어 도메인은 고립된 채 유지되고 사용자의 키 및 데이터의 하드웨어-기반 보호를 공동으로 제안하지 못한다. 따라서 장치 간 서비스가 홀로 장치들 간 보안 데이터 공유를 활성화하기 위해 종래의 (클라우드 제어 도메인(506)이 없는) TPM을 이용할 수 없다.
일례에 따르면, 시작할 때, cTPM(402)이 공유 1차 시드(418)가 존재하는지 여부를 체크할 수 있다. 존재하지 않는 경우, cTPM(402)은 클라우드 제어 도메인(506) 및 이러한 도메인(506)과 연관된 명령어를 비활성화할 수 있다.
또 다른 예를 들면, 서버 컴퓨팅 시스템(114)이 손상되는 경우(가령, 클라우드 제어 도메인(506)이 손상되는 경우), 플랫폼 제조업체 제어 도메인(500), 소유자 제어 도메인(502), 및 프라이버시 관리자 제어 도메인(504)이 보호하는 시크릿은 손상되지 않은 채 유지될 것이다. 예를 들어, 소유자 제어 도메인(502)에서 보호되는 장치-특정적 시크릿이 이러한 상황에서 손상되지 않은 채 유지될 것이다. 이러한 손상으로부터 복원되기 위해, cTPM(402) 및 서버 컴퓨팅 시스템(114)은 새 공유 1차 시드(418-420)로 재-키설정(rekey)될 수 있다.
도 6 및 7은 발신자 구성요소(136)에 의해 cTPM(402)으로 발행되는 명령어에 응답하여 데이터를 교환하기 위한 예시적 콜 흐름도를 도시한다. 도 6은 발신자 구성요소(136)가 서버 컴퓨팅 시스템(114)의 원격 NV 스토리지(414)로의 액세스를 필요로 하지 않는 명령어(cmd)를 발행하는 예시적 시나리오를 도시한다. (600)에서, 발신자 구성요소(136)는 cTPM(402)으로 명령어를 전송한다. (602)에서, 명령어에 응답하여, cTPM(402)은 발신자 구성요소(136)로 결과를 전송한다. 명령어가 원격 NV 스토리지(414)로의 액세스를 필요로 하지 않을 때, cTPM(402)과 발신자 구성요소(136) 간 통신이 동기화된다. 따라서 이러한 명령어가 cTPM(402)에 도착할 때, 명령어가 종료될 때까지 발신자 구성요소(136)는 또 다른 명령어를 차단하고 cTPM(402)은 이를 처리할 수 없다.
이와 달리, 도 7은 발신자 구성요소(136)가 cTPM(402)이 서버 컴퓨팅 시스템(114)의 원격 NV 스토리지(414)를 액세스할 것을 필요로 하는 명령어(cmd)를 발행하는 예시적 시나리오를 도시한다. 도시된 바와 같이, (700)에서 발신자 구성요소(136)는 이러한 명령어를 cTPM(402)으로 전송한다. cTPM(402)은 서버 컴퓨팅 시스템(114)과 직접 통신할 수 없다. 대신, cTPM(402)은 발신자 구성요소(136)(가령, 컴퓨팅 장치(102)의 OS)를 이용하여 서버 컴퓨팅 시스템(114)과 통신할 수 있다. OS는 신뢰되지 않기 때문에, cTPM(402)은 cTPM(402)과 서버 컴퓨팅 시스템(114)(가령, 원격 NV 스토리지(414)) 간에 교환되는 데이터의 무결성(integrity) 및 비밀보장성(confidentiality)을 보호하고, 또한 롤백 공격(rollback attack)에 대비해 보호한다. OS는 정보를 서버 컴퓨팅 시스템(114)으로 전달하고 이로부터 전달받는 비보안 채널(insecure channel)로 간주될 수 있다.
보안을 보장하는 것에 추가로, 발신자 구성요소(136)에서 cTPM(402)으로 전송되는 명령어가 원격 NV 스토리지(414)로의 액세스를 필요로 할 때 cTPM(402)과 서버 컴퓨팅 시스템(114) 간 비동기식 통신이 채용된다. (702)에서, 원격 NV 스토리지(414)로의 액세스를 필요로 하는 명령어의 수신에 응답하여, cTPM(402)은 발신자 구성요소(136)로 암호화된 메시지(가령, 암호화된 블롭(encrypted blob))을 반환(return)한다. 암호화된 메시지는 암호화 엔진(130)에 의해 CCK(424)를 이용해 암호화될 수 있다. (704)에서, 발신자 구성요소(136)는 암호화된 메시지를 서버 컴퓨팅 시스템(114)으로 전송하고, 서버 컴퓨팅 시스템(114)에 의해 수락되는 경우, (706)에서, 서버 컴퓨팅 시스템(114)으로부터 암호화된 응답 메시지(가령, 응답되는 상이한 암호화된 블롭, 즉, 블롭')를 수신한다. (708)에서, 발신자 구성요소(136)는 암호화된 응답 메시지를 cTPM(402)로 제공하고, (710)에서 cTPM(402)은 결과를 발신자 구성요소(136)로 반환할 수 있다. cTPM(402)은 서버 컴퓨팅 시스템(114)과의 비동기식 통신 동안 그 밖의 다른 명령어에 응답 가능 상태를 유지할 수 있다.
따라서 cTPM(402)과 서버 컴퓨팅 시스템(114) 간 통신이 비동기식이다. 이와 달리, 종래의 TPM은 싱글-스레드형이며, 전통적인 TPM 명령어는 (도 6에 도시된 예시와 유사하게) 동기식이다. 그러나 cTPM(402)과 서버 컴퓨팅 시스템(114) 간 통신을 동기식으로 만듦으로써, 수용할 수 없는 성능이 도출될 것이다. 예를 들면, 원격 NV 스토리지(414) 내 카운터를 증분시키는 cTPM 명령어를 발행하는 발신자 구성요소(136)를 고려할 수 있다. 통신이 동기식으로 이뤄진 경우, 이 명령어는, 증분 업데이트가 서버 컴퓨팅 시스템(114)으로 전파되고 응답이 cTPM(402)으로 반환될 때까지 cTPM(402)을 무응답 및 차단 상태로 만들 것이다.
cTPM의 예시적 설계 및 구현이 이제 기재된다. TPM-보호되는 키(가령, 하드웨어 보호되는 객체(306))가 서버 컴퓨팅 시스템(114)과 컴퓨팅 장치(102) 간에 공유될 수 있는 방식 및 NV 읽기 및 쓰기를 지원하기 위한 변화가 이뤄지는 방식에 대한 기재가 제공된다. 또한 동기화를 구현하는 데 추가될 수 있는 예시적 클라우드/장치 동기화 프로토콜 및 TPM 명령어가 기재된다.
TPM-보호되는 키를 공유하는 것이 지금부터 기재된다. 일례에 따르면, 키 생성을 키 사용으로부터 분리시킴으로써, TPM 2.0 API가 TPM-보호되는 키의 공유를 촉진시킨다. TPM2_Create(), 즉, TPM 2.0 명령어가 대칭 키 또는 비대칭 키-쌍을 생성한다. TPM은 키를 내부적으로 생성하고, 이들을 발신자로 반환하기 전에, 자신의 스토리지 키를 이용해 임의의 개인(또는 대칭) 키를 암호화할 수 있다. 키를 이용하기 위해, 발신자가 공개 스토리지 키 및 암호화된 개인(또는 대칭) 키에 실리는 TPM2_Load() 명령어를 발행한다. TPM은 개인 키를 복호화하며 이를 휘발성 스토리지에 로딩한다. 그 후 TPM은 키를 이용해 암호화 또는 복호화를 시작할 수 있다.
생성과 로딩의 분리는 TPM 칩 상에서 이용 가능한 제한된 RAM 덕분이다. 생성과 로딩 간 분리에 의해 또한 발신자는 모두 RAM으로 로딩시킬 필요 없이 많은 키를 생성할 수 있다. 스토리지 루트 키(SRK)가 칩을 떠나지 않는 한, SRK를 이용해 새 키의 개인 부분(private part)을 암호화하는 것이 키의 비밀보장성을 보장할 수 있다. 이 분리에 의해 cTPM(402)가 컴퓨팅 장치(102) 상에서 클라우드-생성되는 키를 이용할 수 있다. 따라서 장치들 간 키 공유가 사소한 일이 된다. 서버 컴퓨팅 시스템(114)은 2개의 cTPM VM(가령, 각각 상이한 컴퓨팅 장치와 연관된 cTPM VM(410)과 이와 상이한 cTPM VM) 간 키 공유 프로토콜을 수행할 수 있다. 이러한 키 공유 프로토콜은 공개 키 인프라구조(PKI)를 이용할 필요가 없으며, 보안 실행 모드(SEM)에서 실행될 필요도 없다. 공유된 키가 2개의 cTPM VM 간에 생성되면, 두 컴퓨팅 장치 모두 TPM2_Load() 명령어를 발행함으로써 키를 자신의 칩에 개별적으로 로딩할 수 있다. 덧붙여, 컴퓨팅 장치(102)가 오프라인일 때에도 키 생성이 수행될 수 있다. 따라서 사용자는 자신의 장치들이 온라인 상태임을 먼저 확신할 필요 없이, 자신의 장치들 간에 공유되는 키를 생성할 수 있다.
지금부터 cTPM(402)를 이용해 원격 NV 스토리지(414)를 액세스하는 것이 기재된다. cTPM(402)은 원격 NV 스토리지(414)로 이뤄지는 읽기 및 쓰기의 로컬 캐시(가령, 보안 휘발성 스토리지(406) 내 로컬 캐시(302))를 유지한다. 읽기는 캐시 엔트리를 반환(return)하고, 쓰기는 캐시 엔트리만 업데이트한다. cTPM(402)은 스스로 원격 NV 스토리지(414)를 업데이트하지 않으며, 대신, 발신자 구성요소(136)가 칩 상의 로컬 캐시를 원격 NV 스토리지(414)와 동기화시킨다. 이는 동기화 프로토콜을 이용해 이뤄진다.
원격 NV 스토리지(414)로부터의 읽기가 지금부터 기재된다. 발신자 구성요소(136)로부터 NV 읽기 명령어를 수신하면, 대응하는 NV 엔트리가 로컬 캐시로부터 반환된다. 발견되지 않으면, cTPM(402)은 에러 코드를 반환한다. 그 후 발신자 구성요소(136)는 이하에서 기재될 바와 같이 풀(pull) 동기화 동작을 개시하여 로컬 캐시를 업데이트함으로써 원격 NV 스토리지(414)를 체크할 수 있다. 동기화가 완료된 후, 발신자 구성요소(136)는 로컬 캐시로부터 성공적으로 대답 받을 수 있는 읽기 TPM 명령어를 재발행한다. 로컬 캐시로부터 원격 NV 엔트리를 읽기 위한 예시적 의사코드(pseudocode)가 이하에서 제공된다.
1. NV_Read(NVIndex idx) {
2. //모든 로컬 캐시 가비지 콜렉트
3. for each nvIdx in LocalCache
4. if LocalCache[nvIdx].TTL is Expired
5. delete nvIdx from LocalCache
6. endif
7. end for each
8. // 존재한다면 NV 엔트리를 반환
9. if idx in LocalCache return LocalCache [idx]
10. // 캐시 내 리턴 값이 발견되지 않음
11. Return ErrorCode.NotFoundlnCache
12. }
상기의 의사코드에서, 라인 3-6은 가비지 콜렉션(garbage collection)을 기술하며, 여기서 만료된 TTL을 갖는 NV 엔트리는 로컬 캐시로부터 삭제된다. 라인 9에서, NV 엔트리가 로컬 캐시에서 발견되는 경우 반환된다. NV 엔트리가 로컬 캐시에서 발견되지 않는 경우, 라인 11에서 에러가 반환된다.
이하에서 원격 NV 스토리지(414)에 쓰기가 기재된다. NV 쓰기 명령어는 우선 캐시를 업데이트하고 원격 NV 스토리지(414)에의 다시 쓰기(write back)가 계류중임을 가리키는 에러 코드를 반환한다. 발신자 구성요소(136)는 이하에서 기재될 바와 같이 발신자 NV에의 푸시(push) 동기화 동작을 개시한다. 발신자 구성요소(136)가 다시 쓰기를 완료하지 못한 경우, 쓰기는 휘발성 상태로 유지되고 cTPM(402)이 이의 영속에 대해 어떠한 보장도 하지 않는다. 다음에서 NV 엔트리를 로컬 캐시에 쓰기 위한 예시적 의사코드가 제공된다.
1. NV_Write(NVEntry entry) {
2. // 모든 로컬 캐시에서 가비지 콜렉션
3. for each nvIdx in LocalCache
4. if LocalCache[nvIdx].TTL is Expired
5. delete nvIdx from LocalCache
6. end if
7. end for each
8. //캐시에 엔트리 삽입
9. idx = LocalCache.Append(entry)
10. //엔트리의 TTL 설정
11. LocalCache[idx].TTL = DefaultTTL
12. }
상기의 의사코드에서, 라인 3-6은 가비지 콜렉션을 기술한다. 라인 9에서, NV 엔트리는 로컬 캐시에 삽입된다. 라인 11에서, NV 엔트리에 대한 TTL이 설정된다.
이하에서 동기화 프로토콜이 제공된다. 동기화 프로토콜은 (1) NV 읽기를 위해 원격 NV 스토리지(414)로부터의 엔트리로 로컬 캐시를 업데이트하고, (2) NV 쓰기를 위해 업데이트된 캐시 엔트리를 원격 NV 스토리지(414)에 다시 쓰도록 기능한다. 컴퓨팅 장치 측에서, 발신자 구성요소(136)는 2개의 명령어, 즉, TPM2_Sync_Begin() 및 TPM2_Sync_End()를 이용해 프로토콜을 수행한다. 이들 명령어는 읽기와 쓰기를 구별하기 위해 "풀(pull)" 또는 "푸시(push)"로 설정될 수 있는 "방향(direction)"이라고 칭해지는 파라미터를 취한다. 메시지는 CCK(가령, CCK(424), CCK(428)), 대칭 키로 암호화된다.
원격 NV 스토리지(414)로부터 풀(pull)하기 위해, cTPM(402)은 자신의 내부 타이머(408)의 값(가령, 타임스탬프1(TS1))을 기록하고 요청된 NV 인덱스(가령, NV_Idx) 및 넌스(nonce)를 포함하는 메시지를 전송한다. 넌스는 응답의 신선도를 체크하고 재생 공격(replay attack)에 대해 보호한다. 수신되면, 서버 컴퓨팅 시스템(114)은 메시지를 복호화하고 이의 무결성을 체크한다. 이에 응답하여, 서버 컴퓨팅 시스템(114)은 넌스를 요청된 NV 인덱스에 대응하는 값(가령, NV)과 함께 되 전송한다. cTPM(402)은 메시지를 복호화하고 이의 무결성을 체크하며 넌스를 검증한다. 이들 체크가 성공적인 경우, cTPM(402)은 응답의 딜레이가 전역 읽기 타임아웃(GRT) 값을 초과하지 않았음을 검증하기 위한 체크를 (가령, TS2를 기초로) 수행한다. 상기 체크에 통과하면, cTPM(402)은 읽기를 성공적으로 처리한다. 도 8은 비휘발성 엔트리(non-volatile entry)가 서버 컴퓨팅 시스템(114)의 원격 NV 스토리지(414)로부터 풀(pull)될 때의 예시적 동기화 프로토콜을 도시한다. 원격 NV 스토리지(414)로부터 NV 엔트리를 읽기 위해 cTPM(402)과 서버 컴퓨팅 시스템(114) 간에 교환되는 예시적 메시지가 도시된다.
이하에서 NV 스토리지(414)로의 푸시(push)가 기재된다. NV 엔트리를 다시 쓰기 위한 프로토콜이 공격자가 쓰기 동작들을 재정렬하려 시도할 수 있는 가능성을 다룰 수 있다. 예를 들어, 악의적 OS 또는 애플리케이션이 오래된 쓰기를 저장하고 이를 나중에 재적용하여, 최신 값을 효과적으로 덮어쓰려는 시도를 할 수 있다. 이를 극복하기 위해, 프로토콜은 서버 컴퓨팅 시스템(114)에 의해 유지되는 보안 모노토닉 카운터(ctr)를 이용한다. 각각의 쓰기 동작은 적용될 카운터의 현재 값을 표시하며, 따라서 낡은(stale) 쓰기가 재생(replay)될 수 없다. cTPM(402)는 이전에 기재된 풀 프로토콜을 이용해 보안 카운터의 현재 값을 읽을 수 있다.
도 9는 비휘발성 엔트리가 서버 컴퓨팅 시스템(114)의 원격 NV 스토리지(414)로 푸시될 때의 예시적 동기화 프로토콜을 도시한다. 원격 NV 엔트리를 원격 NV 스토리지(414)로 쓰기 위해 cTPM(402)과 서버 컴퓨팅 시스템(114) 간 교환되는 예시적 메시지가 도시된다. cTPM(402)이 최신 값을 RAM에 로컬하게 캐싱하기 때문에 보안 카운터를 읽는 것은 각각의 쓰기에서 이뤄질 필요가 없다. 서버 컴퓨팅 시스템(114)이 푸시 동기화 프로토콜을 통해 NV 엔트리를 수신할 때, 원격 NV 스토리지(414)를 업데이트한다. 이를 위해, cTPM(402)에 (프로세스를 위한) TPM2_Sync_Proc()라고 불리우는 제3 명령어가 구비된다. 이 명령어는 서버 컴퓨팅 시스템(114)에 의해서만 발행될 수 있으며, 서버 컴퓨팅 시스템(114)은 컴퓨팅 장치(102)로부터 수신된 메시지를 취하며 이를 이용해 동기화 프로세스를 호출한다. 서버 컴퓨팅 시스템(114)은 메시지를 복호화하고 NV 업데이트를 적용한다.
도 10-11은 보안 하드웨어를 이용해 장치 간 신뢰되는 컴퓨팅을 가능하게 하기 위한 예시적 방법을 도시하며, 여기서 보안 하드웨어는 서버 컴퓨팅 시스템과 공유되는 공유 시크릿으로 제공된다. 방법이 시퀀스로 수행되는 일련의 동작들로 도시되고 기재되지만, 방법이 시퀀스의 순서로 한정되지 않음이 이해되어야 한다. 예를 들어, 일부 동작은 본 명세서에 기재된 것과 다른 순서로 발생할 수 있다. 덧붙여, 한 동작이 또 다른 동작과 동시에 발생할 수 있다. 또한, 일부 경우, 본 명세서에 기재된 방법을 구현하는 데 모든 동작이 필요한 것은 아닐 수 있다.
덧붙여, 본 명세서에 기재된 동작은 하나 이상의 프로세서에 의해 구현 및/또는 컴퓨터 판독형 매체 상에 저장될 수 있는 컴퓨터 실행형 명령일 수 있다. 컴퓨터 실행형 명령은 루틴, 서브루틴, 프로그램, 실행 스레드 등을 포함할 수 있다. 또한 방법의 동작들의 결과가 컴퓨터 판독형 매체에 저장될 수 있거나, 디스플레이 장치 상에 디스플레이될 수 있는 등이다.
도 10은 서버 컴퓨팅 시스템으로 전송되도록 보안 하드웨어가 생성한 메시지를 암호화하기 위한 방법(1000)을 도시한다. (1002)에서, 공유 시크릿을 기초로 보안 하드웨어에 의해 대칭 키가 생성될 수 있다. 상기 공유 시크릿은 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유된다. (1004)에서, 서버 컴퓨팅 시스템의 원격 자원을 액세스하기 위한 메시지가 보안 하드웨어에 의해 생성될 수 있다. 메시지는 보안 하드웨어가 명령어를 수신한 것에 응답하여 생성될 수 잇다. (1006)에서, 메시지가 서버 컴퓨팅 시스템으로 전송되기 위해 암호화될 수 있다. 메시지는 대칭 키를 이용해 암호화되어 암호화된 메시지가 생성될 수 있다. 덧붙여, 암호화된 메시지는 서버 컴퓨팅 시스템의 원격 자원으로의 액세스를 야기하도록 구성될 수 있다.
도 11을 참조하면, 복수의 컴퓨팅 장치 간 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법(1100)이 도시된다. (1102)에서, 서버 컴퓨팅의 스토리지 내 제1 공유 시크릿이 액세스될 수 있다. 제1 공유 시크릿은 서버 컴퓨팅 시스템 및 제1 컴퓨팅 장치의 제1 보안 하드웨어에 의해 공유된다. (1104)에서, 서버 컴퓨팅 시스템의 스토리지 내 제2 공유 시크릿이 액세스될 수 있다. 제2 공유 시크릿은 서버 컴퓨팅 시스템 및 제2 컴퓨팅 장치의 제2 보안 하드웨어에 의해 공유된다. (1106)에서, 제1 보안 하드웨어와 제2 보안 하드웨어 간에 하드웨어 보호되는 상태가 동기화될 수 있다. 상기 하드웨어 보호되는 상태는 서버 컴퓨팅 시스템과 제1 컴퓨팅 장치 간에 통신되는 제1 암호화된 메시지를 기초로 동기화될 수 있으며, 이때, 제1 암호화된 메시지가 서버 컴퓨팅 시스템 및 제1 보안 하드웨어에 의해 공유되는 제1 공유 시크릿을 기초로 암호화된다. 덧붙여, 하드웨어 보호되는 상태는 서버 컴퓨팅 시스템과 제2 컴퓨팅 장치 간 통신되는 제2 암호화된 메시지를 기초로 동기화될 수 있고, 이때, 제2 암호화된 메시지는 서버 컴퓨팅 시스템과 제2 보안 하드웨어에 의해 공유되는 제2 공유 시크릿을 기초로 암호화된다.
도 12를 참조하면, 본 명세서에 개시된 시스템 및 방법에 따라 사용될 수 있는 예시적 컴퓨팅 장치(1200)의 하이-레벨 도시가 제공된다. 예를 들어, 컴퓨팅 장치(1200)는 컴퓨팅 장치(102), 컴퓨팅 장치 A(202), 또는 컴퓨팅 장치 B(204)일 수 있다. 컴퓨팅 장치(1200)는 메모리(1204)(가령, 스토리지(106))에 저장되는 적어도 하나의 프로세서(1202)(가령, 프로세서(104))를 포함한다. 명령은, 예를 들어, 앞서 언급된 하나 이상의 구성요소에 의해 수행되는 기능을 구현하기 위한 명령 또는 앞서 기재된 방법 중 하나 이상을 구현하기 위한 명령일 수 있다. 프로세서(1202)는 시스템 버스(1206)를 통해 메모리(1204)를 액세스할 수 있다. 실행형 명령을 저장하는 것에 추가로, 메모리(1204)는 로컬 저장 데이터, 하드웨어 보호되는 객체 등도 저장할 수 있다.
컴퓨팅 장치(1200)는 시스템 버스(1206)를 이용해 프로세서(1202)가 액세스 가능한 데이터 저장부(1208)(가령, 스토리지(106))를 더 포함한다. 상기 데이터 저장부(1208)는 실행형 명령, 하드웨어 보호되는 객체 등을 포함할 수 있다. 덧붙여, 컴퓨팅 장치(1200)는 보안 하드웨어(108)를 포함한다. 컴퓨팅 장치(1200)는 외부 장치가 컴퓨팅 장치(1200)와 통신할 수 있게 하는 입력 인터페이스(1210)를 더 포함한다. 예를 들어, 입력 인터페이스(1210)는 외부 컴퓨터 장치, 사용자 등으로부터의 명령을 수신하는 데 사용될 수 있다. 컴퓨팅 장치(1200)는 컴퓨팅 장치(1200)가 하나 이상의 외부 장치와 인터페이싱하기 위한 출력 인터페이스(1212)를 더 포함한다. 예를 들어, 컴퓨팅 장치(1200)는 출력 인터페이스(1212)를 통해 텍스트, 이미지 등을 디스플레이할 수 있다.
입력 인터페이스(1210) 및 출력 인터페이스(1212)를 통해 컴퓨팅 장치(1200)와 통신하는 외부 장치가 사용자가 대화할 수 있게 하는 실질적으로 모든 유형의 사용자 인터페이스를 제공하는 환경에 포함될 수 있음이 고려된다. 사용자 인터페이스 유형의 예시로는 그래픽 사용자 인터페이스, 자연 사용자 인터페이스(natural user interface) 등이 있다. 예를 들어, 그래픽 사용자 인터페이스는 사용자가 사용하는 입력 장치, 가령, 키보드, 마우스, 원격 제어기 등으로부터의 입력을 수용할 수 있고 출력 장치, 가령, 디스플레이로 출력을 제공할 수 있다. 또한 자연 사용자 인터페이스는 키보드, 마우스, 원격 제어기 등의 장치에 의해 부가되는 제약에서 자유로운 방식으로 사용자가 컴퓨팅 장치(1200)와 대화할 수 있게 한다. 대신, 자연 사용자 인터페이스는 음성 인식, 터치 및 스타일러스 인식, 스크린에 접촉하거나 스크린에 인접한 제스처 인식, 공중 제스처, 두부 및 안구 추적, 목소리 및 음성, 시각, 터치, 제스처, 기계 지능 등을 이용할 수 있다.
추가로, 단일 시스템으로서 도시되지만, 컴퓨팅 장치(1200)는 분산 시스템일 수 있음이 이해될 것이다. 따라서 예를 들어 몇 개의 장치가 네트워크 연결을 통해 통신할 수 있으며, 컴퓨팅 장치(1200)에 의해 수행되는 것으로 기재된 작업을 함께 수행할 수 있다.
도 13을 참조하면, 본 명세서에 개시된 시스템 및 방법에 따라 사용될 수 있는 예시적 컴퓨팅 시스템의 하이-레벨 도시가 제공된다. 예를 들어, 컴퓨팅 시스템(1300)은 서버 컴퓨팅 시스템(114)이거나 이를 포함할 수 있다. 추가로 또는 대안으로, 서버 컴퓨팅 시스템(114)은 컴퓨팅 시스템(1300)을 포함할 수 있다.
컴퓨팅 시스템(1300)은 복수의 서버 컴퓨팅 장치, 즉, 서버 컴퓨팅 장치(1302), ... 서버 컴퓨팅 장치(1304)(총칭하여 서버 컴퓨팅 장치(1302-1304))를 포함한다. 서버 컴퓨팅 장치(1302)는 적어도 하나의 프로세서 및 컴퓨터 판독형 스토리지를 포함하고, 적어도 하나의 프로세서가 스토리지에 저장된 명령을 실행한다. 명령은 예를 들어, 앞서 기재된 하나 이상의 구성요소에 의해 실행되는 것으로 기재된 기능을 구현하기 위한 명령 또는 앞서 기재된 방법 중 하나 이상을 구현하기 위한 명령일 수 있다. 서버 컴퓨팅 장치(1302)와 유사하게, 서버 컴퓨팅 장치(1302)가 아닌 다른 서버 컴퓨팅 장치(1302-1304)의 적어도 서브세트 각각은 적어도 하나의 프로세서 및 스토리지를 포함한다. 서버 컴퓨팅 장치(1302-1304) 중 하나 이상의 서버 컴퓨팅 장치의 스토리지는 원격 스토리지(116), 휘발성 스토리지(416), 및/또는 원격 NV 스토리지(414)이거나 이들을 포함할 수 있다.
컴퓨팅 시스템(1300)은 서버 컴퓨팅 장치(1302-1304) 간에 데이터를 전송하는 다양한 네트워크 노드(1306)를 더 포함한다. 덧붙여, 네트워크 노드(1302)는 네트워크(1308)에 의해 서버 컴퓨팅 장치(1302-1304)로부터 데이터를 외부 노드(가령, 컴퓨팅 시스템(1300)의 외부의 노드)로 전송한다. 상기 네트워크 노드(1302)는 또한 네트워크(1308)를 통해 외부 노드로부터 데이터를 서버 컴퓨팅 장치(1302-1304)로 전송한다. 상기 네트워크(1308)는 예를 들어, 인터넷, 셀룰러 네트워크 등일 수 있다. 상기 네트워크 노드(1306)는 스위치, 라우터, 로드 밸런서 등을 포함한다.
컴퓨팅 시스템(1300)의 패브릭 제어기(1310)가 서버 컴퓨팅 장치(1302-1304)의 하드웨어 자원(가령, 서버 컴퓨팅 장치(1302-1304)의 프로세서, 메모리, 데이터 저장부 등)을 관리한다. 상기 패브릭 제어기(1310)는 네트워크 노드(1306)를 더 관리한다. 덧붙여, 패브릭 제어기(1310)는 서버 컴퓨팅 장치(1302-1304)에서 인스턴스화되는 가상 머신의 생성, 제공, 회수(de-provisioning), 및 감독(supervising)을 관리한다.
이하에서 다양한 예시가 제공된다.
예시 1: 컴퓨팅 장치로서, 상기 컴퓨팅 장치는 보안 하드웨어를 포함하고, 상기 보안 하드웨어는, 공유 시크릿 - 상기 공유 시크릿은 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유되며, 공유 시크릿은 서버 컴퓨팅 시스템 및 서버 컴퓨팅 시스템과 제휴된 측의 프로비저닝 컴퓨팅 시스템 중 적어도 하나에 의해 제공됨 - 과, 공유 시크릿 및 공유 시크릿으로부터 생성된 키 중 적어도 하나를 이용해 암호화 알고리즘을 실행하는 암호화 엔진 - 암호화 엔진은 암호화 알고리즘을 실행시켜 암호화, 복호화, 인증 및 증명 중 적어도 하나를 수행할 수 있음 - 을 포함하는, 컴퓨팅 장치.
예시 2: 예시 1에 있어서, 보안 하드웨어는, 서버 컴퓨팅 시스템의 원격 자원을 액세스하기 위한 메시지를 생성하는 원격 액세스 제어 구성요소 - 메시지는 보안 하드웨어가 명령어를 수신한 것에 응답하여 생성됨 - 를 더 포함하며, 암호화 엔진은 서버 컴퓨팅 시스템으로 전송되도록 메시지를 암호화하며, 암호화 엔진은 공유 시크릿 및 공유 시크릿으로부터 생성된 키 중 적어도 하나를 이용해 메시지를 암호화하여, 암호화된 메시지를 생성하고, 암호화된 메시지는 서버 컴퓨팅 시스템의 원격 자원으로의 액세스를 야기하도록 구성되는, 컴퓨팅 장치.
예시 3: 예시 2에 있어서, 적어도 하나의 프로세서, 및 보안 하드웨어 외부의 스토리지 - 스토리지는 발신자 구성요소(caller component)를 포함하고, 발신자 구성요소는 적어도 하나의 프로세서에 의해 실행되며, 발신자 구성요소는 보안 하드웨어로 명령어를 전송하며, 보안 하드웨어로부터 암호화된 메시지를 수신하고, 암호화된 메시지를 서버 컴퓨팅 시스템으로 전송함 - 를 더 포함하고, 보안 하드웨어는 보안 하드웨어 외부의 소스로부터의 액세스 또는 간섭으로부터 차폐되는 적어도 하나의 보안 프로세서, 및 보안 하드웨어 외부의 소스에 의해 액세스될 수 없는 보안 스토리지를 포함하는, 컴퓨팅 장치.
예시 4: 예시 2에 있어서, 적어도 하나의 프로세서, 및 보안 하드웨어 외부의 스토리지 - 스토리지는 발신자 구성요소를 포함함 - 를 더 포함하고, 발신자 구성요소는 제1 시간 주기 세트 동안 적어도 하나의 프로세서에 의해 실행 가능하며, 제1 시간 주기 세트 동안 적어도 하나의 프로세서에 의해 실행되는 것에 응답하여, 발신자 구성요소는 보안 하드웨어로 명령어를 전송하고 보안 하드웨어로부터 암호화된 메시지를 수신하고, 암호화된 메시지를 서버 컴퓨팅 시스템으로 전송하며, 적어도 하나의 프로세서는 제2 시간 주기 세트 동안 발신자 구성요소를 실행하지 못하게 금지되며, 제1 시간 주기 세트 및 제2 시간 주기 세트는 서로 겹치지 않고, 원격 액세스 제어 구성요소 및 암호화 엔진은 제2 시간 주기 세트 동안 적어도 하나의 프로세서에 의해 실행 가능하며, 적어도 하나의 프로세서는 제1 시간 주기 세트 동안 원격 액세스 제어 구성요소를 실행하지 못하게 금지되며 암호화 엔진을 실행하지 못하게 금지되는, 컴퓨팅 장치.
예시 5: 예시 1 내지 4 중 어느 한 예시에 있어서, 암호화된 메시지는 서버 컴퓨팅 시스템으로 하여금 서버 컴퓨팅 시스템의 원격 스토리지로 데이터를 쓰기를 하도록 구성되는, 컴퓨팅 장치.
예시 6: 예시 1 내지 5 중 어느 한 예시에 있어서, 암호화된 메시지는 서버 컴퓨팅 시스템으로 하여금 서버 컴퓨팅 시스템의 원격 스토리지로부터 데이터를 읽기를 하도록 구성되는, 컴퓨팅 장치.
예시 7: 예시 1 내지 6 중 어느 한 예시에 있어서, 암호화 엔진은 공유 시크릿 및 공유 시크릿으로부터 생성된 키 중 적어도 하나를 이용해 암호화된 응답 메시지를 복호화하고, 암호화된 응답 메시지는 암호화된 메시지에 응답하여, 암호화된 응답 메시지는 복호화되어 데이터를 출력하고, 보안 하드웨어는 보안 스토리지를 더 포함하고, 보안 스토리지는 데이터를 로컬 저장하는, 컴퓨팅 장치.
예시 8: 예시 1 내지 7 중 어느 한 예시에 있어서, 상이한 컴퓨팅 장치의 상이한 보안 하드웨어가 서버 컴퓨팅 시스템으로 하여금 서버 컴퓨팅 시스템의 원격 스토리지로 데이터를 쓰기를 하도록 하는, 컴퓨팅 장치.
예시 9: 예시 1 내지 8 중 어느 한 예시에 있어서, 암호화된 메시지는 서버 컴퓨팅 시스템으로부터 클록 값을 불러오도록 구성된, 컴퓨팅 장치.
예시 10: 예시 1 내지 9 중 어느 한 예시에 있어서, 공유 시크릿은 상이한 컴퓨팅 장치의 상이한 보안 하드웨어에 의해 더 공유되며, 보안 하드웨어, 상이한 컴퓨팅 장치의 상이한 보안 하드웨어, 및 서버 컴퓨팅 시스템이 서버 컴퓨팅 시스템 및 서버 컴퓨팅 시스템과 제휴되는 측의 프로비저닝 컴퓨팅 시스템 중 적어도 하나에 의해 공유 시크릿으로 제공되는, 컴퓨팅 장치.
예시 11: 예시 1 내지 10 중 어느 한 예시에 있어서, 보안 하드웨어는, 서버 컴퓨팅 시스템으로부터 불러온 데이터를 기초로 정책(policy)에 특정된 조건이 만족되는지 여부를 검증하는 인증 구성요소 - 정책은 보안 하드웨어가 수신한 하드웨어 보호되는 객체에 대응함 - 를 더 포함하고, 암호화 엔진은 조건이 만족된다고 식별될 때 공유 시크릿 및 공유 시크릿으로부터 생성된 키 중 적어도 하나를 이용해 하드웨어 보호되는 객체를 복호화하며, 조건이 만족되지 않는다고 식별될 때 암호화 엔진은 하드웨어 보호되는 객체를 복호화하지 못하게 금지되는, 컴퓨팅 장치.
예시 12: 예시 1 내지 11 중 어느 한 예시에 있어서, 보안 하드웨어는 물리 TPM(Trusted Platform Module) 칩인, 컴퓨팅 장치.
예시 13: 예시 1 내지 11 중 어느 한 예시에 있어서, 프로세싱 플랫폼을 더 포함하며, 프로세싱 플랫폼은 컴퓨팅 장치의 운영 체제를 실행하도록 구성된 적어도 하나의 프로세서, 및 적어도 하나의 프로세서와 통신하는 적어도 하나의 보안 프로세서 - 보안 하드웨어는 적어도 하나의 보안 프로세서를 포함하고, 적어도 하나의 보안 프로세서는 공유 시크릿을 액세스할 수 있음 - 를 포함하며, 적어도 하나의 프로세서는 공유 시크릿을 액세스하지 못하게 금지되는, 컴퓨팅 장치.
예시 14: 예시 1 내지 11 중 어느 한 예시에 있어서, 보안 하드웨어는 컴퓨팅 장치의 보호되는 메모리 - 보호되는 메모리는 소프트웨어 기반 TPM(Trusted Platform Module)을 포함하고, 소프트웨어 기반 TPM은 공유 시크릿 및 암호화 엔진을 포함함 - 를 포함하는, 컴퓨팅 장치.
예시 15: 예시 1 내지 11 중 어느 한 예시에 있어서, 보안 하드웨어는 프로세서 상에 보안 엔클레이브(secure enclave) - 보안 엔클레이브는 공유 시크릿을 저장하고 보안 하드웨어 외부의 소스로부터 공유 시크릿을 보호함 - 를 포함하는 컴퓨팅 장치.
예시 16: 복수의 컴퓨팅 장치 간 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법으로서, 서버 컴퓨팅 시스템의 스토리지 내 제1 공유 시크릿을 액세스하는 단계 - 제1 공유 시크릿은 서버 컴퓨팅 시스템과 제1 컴퓨팅 장치의 제1 보안 하드웨어에 의해 공유됨 - 와, 서버 컴퓨팅 시스템의 스토리지 내 제2 공유 시크릿을 액세스하는 단계 - 제2 공유 시크릿은 서버 컴퓨팅 시스템과 제2 컴퓨팅 장치의 제2 보안 하드웨어에 의해 공유됨 - 와, 제1 보안 하드웨어와 제2 보안 하드웨어 간 하드웨어 보호되는 상태를 동기화하는 단계 - 하드웨어 보호되는 상태는, 서버 컴퓨팅 시스템과 제1 컴퓨팅 장치 간에 통신되는 제1 암호화된 메시지 - 제1 암호화된 메시지는 서버 컴퓨팅 시스템과 제1 보안 하드웨어에 의해 공유되는 제1 공유 시크릿을 기초로 암호화됨 - 와, 서버 컴퓨팅 시스템과 제2 컴퓨팅 장치 간에 통신되는 제2 암호화된 메시지 - 제2 암호화된 메시지는 서버 컴퓨팅 시스템과 제2 보안 하드웨어에 의해 공유되는 제2 공유 시크릿을 기초로 암호화됨 - 를 기초로 동기화됨 - 를 포함하는, 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
예시 17: 예시 16에 있어서, 서버 컴퓨팅 시스템의 스토리지에 데이터를 저장하는 단계와, 제1 보안 하드웨어에 대한 제1 메시지를 암호화하는 단계 - 제1 메시지는 데이터를 포함하며, 제1 메시지는 제1 공유 시크릿을 기초로 암호화되어 제1 암호화된 메시지를 생성함 - 와, 제1 암호화된 메시지를 제1 컴퓨팅 장치로 전송하는 단계와, 제2 보안 하드웨어에 대한 제2 메시지를 암호화하는 단계 - 제2 메시지는 데이터를 포함하고, 제2 메시지는 제2 공유 시크릿을 기초로 암호화되어 제2 암호화된 메시지를 생성함 - 와, 제2 암호화된 메시지를 제2 컴퓨팅 장치로 전송하는 단계를 더 포함하는, 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
예시 18: 예시 16 또는 17에 있어서, 서버 컴퓨팅 시스템의 스토리지에 데이터를 저장하는 단계와, 제1 보안 하드웨어에 대한 메시지를 암호화하는 단계 - 메시지는 데이터를 포함하고, 메시지는 제1 공유 시크릿을 기초로 암호화되어 암호화된 메시지를 생성함 - 와, 암호화된 메시지를 제1 컴퓨팅 장치로 전송하는 단계와, 제1 컴퓨팅 장치로 암호화된 메시지를 전송한 후, 서버 컴퓨팅 시스템의 스토리지 내 데이터를 수정하는 단계와, 제1 보안 하드웨어에 대한 후속 메시지(subsequent message)를 암호화하는 단계 - 후속 메시지는 수정된 상태의 데이터를 포함하고, 후속 메시지는 제1 공유 시크릿을 기초로 암호화되어, 후속 암호화된 메시지를 생성함 - 와, 후속 암호화된 메시지를 제1 컴퓨팅 장치로 전송하는 단계를 더 포함하는, 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
예시 19: 예시 18에 있어서, 데이터는 클록 값인, 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
예시 20: 보안 하드웨어로서, 공유 시크릿 - 공유 시크릿은 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유됨 - 과, 공유 시크릿을 기초로 보안 하드웨어가 생성하는 대칭 키와, 서버 컴퓨팅 시스템의 원격 스토리지를 액세스하기 위한 메시지를 생성하는 원격 액세스 제어 구성요소 - 메시지는 보안 하드웨어가 명령어(command)를 수신한 것에 응답하여 생성됨 - 와, 서버 컴퓨팅 시스템으로 전송되도록 메시지를 암호화하는 암호화 엔진 - 암호화 엔진은 대칭 키를 이용해 메시지를 암호화하여 암호화된 메시지를 생성하고, 암호화된 메시지는, 서버 컴퓨팅 시스템의 원격 스토리지로 하여금, 서버 컴퓨팅 시스템의 원격 스토리지로 데이터를 쓰기, 및 서버 컴퓨팅 시스템의 원격 스토리지로부터 데이터를 읽기 중 하나를 하게 하도록 구성됨 - 을 포함하는, 보안 하드웨어.
본 명세서에서 사용될 때, 용어 "구성요소" 및 "시스템"은 프로세서에 의해 실행될 때 특정 기능이 수행되게 하는 컴퓨터 실행 명령에 의해 설정되는 컴퓨터 판독형 데이터 스토리지를 포함하려는 의도를 가진다. 컴퓨터 실행 명령은 루틴, 함수 등을 포함할 수 있다. 구성요소 또는 시스템은 단일 장치 상에서 로컬화되거나 복수의 장치에 걸쳐 분산될 수 있다.
또한, 본 명세서에서 사용될 때, 용어 "예시적"은 "무언가의 실례 또는 예시로서 역할한다"는 의미를 가진다.
본 명세서에 기재된 다양한 기능이 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 소프트웨어로 구현될 때, 기능은 컴퓨터 판독형 매체 상의 하나 이상의 명령 또는 코드를 통해 저장되거나 전송될 수 있다. 컴퓨터 판독형 매체는 컴퓨터 판독형 저장 매체를 포함한다. 컴퓨터 판독형 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 저장 매체일 수 있다. 비제한적 예를 들면, 이러한 컴퓨터 판독형 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 그 밖의 다른 광학 디스크 저장장치, 자기 디스크 저장장치 또는 그 밖의 다른 자기 저장 장치, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 그 밖의 다른 임의의 매체가 있다. 본 명세서에서 사용될 때, 디스크(disk 및 disc)는 컴팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 다목적 디스크(DVD), 플로피 디스크, 및 블루레이 디스크(BD)를 포함하며, 이때, 디스크는 일반적으로 데이터를 자기적으로 재생하고 일반적으로 레이저에 의해 데이터를 광학적으로 재생한다. 또한, 전파된 신호가 컴퓨터 판독형 저장 매체 범위 내에 포함되지 않는다. 컴퓨터 판독형 매체는 컴퓨터 프로그램을 한 위치에서 다른 위치로 전달하는 것을 촉진하는 임의의 매체를 포함하는 통신 매체를 포함한다. 연결부는, 예를 들어, 통신 매체일 수 있다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 다지털 가입자 라인(DSL), 또는 무선 기법, 가령, 적외선, 라디오, 및 마이크로파를 이용해 웹사이트, 서버, 또는 그 밖의 다른 원격 소스로부터 전송되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 무선 기법, 가령, 적외선, 라디오 및 마이크로파가 통신 매체의 정의에 포함된다. 상기 언급된 것들의 조합이 또한 컴퓨터 판독형 매체의 범위에 포함되어야 한다.
대안으로, 또는 추가로, 본 명세서에 기재된 기능이, 적어도 부분적으로, 하나 이상의 하드웨어 로직 구성요소에 의해 수행될 수 있다. 비제한적 예를 들어, 사용될 수 있는 하드웨어 로직 구성요소의 유형으로는, FPGA(Field-programmable Gate Array), ASIC(Program-specific Integrated Circuit), ASSP(Program-specific Standard Product), SOC(System-on-a-chip system), CPLD(Complex Programmable Logic Device) 등이 있다.
앞서 기재된 바는 하나 이상의 실시예의 예시를 포함한다. 물론, 앞서 언급된 형태를 기술하기 위한 목적으로 상기 장치 또는 방법의 모든 가능한 수정 및 변경을 기술하는 것이 불가능하며, 해당 분야의 통상의 기술자라면 다양한 형태의 여러 추가 수정 및 순열이 가능함을 알 것이다. 따라서 기재된 양태가 이하의 특허청구범위에 속하는 이러한 모든 변경, 수정, 및 변형을 포함하는 것으로 의도된다. 또한, 용어 "포함하다(include)"는 상세한 설명 또는 청구범위에서 사용될 때, "포함하는(comprising)"이 청구항에서 연결어로서 사용될 때처럼 해석된다.

Claims (15)

  1. 보안 하드웨어(secure hardware)를 포함하는 컴퓨팅 장치로서,
    상기 보안 하드웨어는,
    공유 시크릿(shared secret) - 상기 공유 시크릿은 상기 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유되며, 상기 공유 시크릿은 상기 서버 컴퓨팅 시스템 및 상기 서버 컴퓨팅 시스템과 제휴된 측(party)의 프로비저닝 컴퓨팅 시스템 중 적어도 하나에 의해 제공(provisioning)됨 - 과,
    상기 공유 시크릿 및 상기 공유 시크릿으로부터 생성된 키(key) 중 적어도 하나를 이용하는 암호화 알고리즘을 실행하는 암호화 엔진 - 상기 암호화 엔진은 암호화 알고리즘을 실행하여, 암호화, 복호화, 인증, 및 증명(attestation) 중 적어도 하나를 수행함 - 을 포함하는
    컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 보안 하드웨어는
    상기 서버 컴퓨팅 시스템의 원격 자원을 액세스하기 위한 메시지를 생성하는 원격 액세스 제어 구성요소 - 상기 메시지는 상기 보안 하드웨어가 명령어를 수신한 것에 응답하여 생성됨 - 를 더 포함하며,
    상기 암호화 엔진은 상기 서버 컴퓨팅 시스템으로 전송할 상기 메시지를 암호화하며, 상기 암호화 엔진은 상기 공유 시크릿 및 상기 공유 시크릿으로부터 생성된 상기 키 중 적어도 하나를 이용해 상기 메시지를 암호화하여 암호화된 메시지를 생성하고, 상기 암호화된 메시지는 상기 서버 컴퓨팅 시스템의 원격 자원에 액세스하게 하도록 구성되는
    컴퓨팅 장치.
  3. 제2항에 있어서,
    적어도 하나의 프로세서와,
    상기 보안 하드웨어 외부의 스토리지 - 상기 스토리지는 발신자 구성요소(caller component)를 포함하고, 상기 발신자 구성요소는 상기 적어도 하나의 프로세서에 의해 실행되며, 상기 발신자 구성요소는 상기 보안 하드웨어로 상기 명령어를 전송하며, 상기 보안 하드웨어로부터 상기 암호화된 메시지를 수신하고, 상기 암호화된 메시지를 상기 서버 컴퓨팅 시스템으로 전송함 - 를 더 포함하고,
    상기 보안 하드웨어는
    상기 보안 하드웨어 외부의 소스로부터의 액세스 또는 간섭으로부터 차폐되는 적어도 하나의 보안 프로세서와,
    상기 보안 하드웨어 외부의 소스에 의해 액세스될 수 없는 보안 스토리지를 포함하는
    컴퓨팅 장치.
  4. 제2항에 있어서,
    상기 암호화된 메시지는 상기 서버 컴퓨팅 시스템으로부터 클록 값(clock value)을 불러오도록(retrieve) 구성된
    컴퓨팅 장치.
  5. 제1항에 있어서,
    상기 보안 하드웨어는 물리 TPM(Trusted Platform Module, 신뢰 플랫폼 모듈) 칩인
    컴퓨팅 장치.
  6. 제1항에 있어서,
    프로세싱 플랫폼을 더 포함하며, 상기 프로세싱 플랫폼은,
    상기 컴퓨팅 장치의 운영 체제를 실행하도록 구성된 적어도 하나의 프로세서와,
    상기 적어도 하나의 프로세서와 통신하는 적어도 하나의 보안 프로세서 - 상기 보안 하드웨어는 적어도 하나의 보안 프로세서를 포함하고, 상기 적어도 하나의 보안 프로세서는 상기 공유 시크릿을 액세스할 수 있음 - 를 포함하며,
    상기 적어도 하나의 프로세서는 상기 공유 시크릿을 액세스하지 못하게 금지되는
    컴퓨팅 장치.
  7. 제1항에 있어서,
    상기 보안 하드웨어는
    상기 컴퓨팅 장치의 보호되는 메모리 - 상기 보호되는 메모리는 소프트웨어 기반 TPM(Trusted Platform Module)을 포함하고, 상기 소프트웨어 기반 TPM은 상기 공유 시크릿 및 상기 암호화 엔진을 포함함 - 를 포함하는
    컴퓨팅 장치.
  8. 제1항에 있어서,
    상기 보안 하드웨어는
    프로세서 상에 보안 엔클레이브(secure enclave) - 상기 보안 엔클레이브는 상기 공유 시크릿을 저장하고 상기 보안 하드웨어 외부의 소스로부터 상기 공유 시크릿을 보호함 - 를 포함하는
    컴퓨팅 장치.
  9. 복수의 컴퓨팅 장치 간 하드웨어 보호되는 상태의 공유를 제어하기 위한 방법으로서,
    서버 컴퓨팅 시스템의 스토리지 내 제1 공유 시크릿을 액세스하는 단계 - 상기 제1 공유 시크릿은 상기 서버 컴퓨팅 시스템과 제1 컴퓨팅 장치의 제1 보안 하드웨어에 의해 공유됨 - 와,
    상기 서버 컴퓨팅 시스템의 상기 스토리지 내 제2 공유 시크릿을 액세스하는 단계 - 상기 제2 공유 시크릿은 상기 서버 컴퓨팅 시스템과 제2 컴퓨팅 장치의 제2 보안 하드웨어에 의해 공유됨 - 와,
    상기 제1 보안 하드웨어와 상기 제2 보안 하드웨어 간 하드웨어 보호되는 상태를 동기화하는 단계 - 상기 하드웨어 보호되는 상태는 제1 암호화된 메시지 및 제2 암호화된 메시지에 기초하여 동기화됨 - 을 포함하되,
    상기 제1 암호화된 메시지는 상기 서버 컴퓨팅 시스템과 상기 제1 컴퓨팅 장치 간에 통신되고, 상기 제1 암호화된 메시지는 상기 서버 컴퓨팅 시스템과 상기 제1 보안 하드웨어에 의해 공유되는 상기 제1 공유 시크릿을 기초로 암호화되고,
    상기 제2 암호화된 메시지는 상기 서버 컴퓨팅 시스템과 상기 제2 컴퓨팅 장치 간에 통신되고, 상기 제2 암호화된 메시지는 상기 서버 컴퓨팅 시스템과 상기 제2 보안 하드웨어에 의해 공유되는 상기 제2 공유 시크릿을 기초로 암호화되는
    하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
  10. 보안 하드웨어로서,
    공유 시크릿 - 상기 공유 시크릿은 상기 보안 하드웨어와 서버 컴퓨팅 시스템에 의해 공유됨 - 과,
    상기 공유 시크릿을 기초로 상기 보안 하드웨어가 생성하는 대칭 키와,
    상기 서버 컴퓨팅 시스템의 원격 스토리지를 액세스하기 위한 메시지를 생성하는 원격 액세스 제어 구성요소 - 상기 메시지는 상기 보안 하드웨어가 명령어(command)를 수신한 것에 응답하여 생성됨 - 와,
    상기 서버 컴퓨팅 시스템으로 전송되도록 상기 메시지를 암호화하는 암호화 엔진 - 상기 암호화 엔진은 상기 대칭 키를 이용해 상기 메시지를 암호화하여 암호화된 메시지를 생성하고, 상기 암호화된 메시지는, 상기 서버 컴퓨팅 시스템의 상기 원격 스토리지로 하여금, 상기 서버 컴퓨팅 시스템의 상기 원격 스토리지로 데이터를 쓰기, 및 상기 서버 컴퓨팅 시스템의 상기 원격 스토리지로부터 데이터를 읽기 중 하나를 수행하게 하도록 구성됨 - 을 포함하는
    보안 하드웨어.
  11. 제2항에 있어서,
    상기 암호화된 메시지는 상기 서버 컴퓨팅 시스템으로 하여금, 서버 컴퓨팅 시스템의 원격 스토리지로 데이터를 쓰기, 및 상기 서버 컴퓨팅 시스템의 상기 원격 스토리지로부터 데이터를 읽기 중 하나를 수행하게 하도록 구성되는
    컴퓨팅 장치.
  12. 제1항에 있어서,
    상기 공유 시크릿은 상이한 컴퓨팅 장치의 상이한 보안 하드웨어에 의해 또한 공유되며,
    상기 보안 하드웨어, 상기 상이한 컴퓨팅 장치의 상이한 보안 하드웨어, 및 상기 서버 컴퓨팅 시스템이, 상기 서버 컴퓨팅 시스템 및 상기 서버 컴퓨팅 시스템과 제휴된 측의 프로비저닝 컴퓨팅 시스템 중 적어도 하나에 의해 상기 공유 시크릿을 제공받는
    컴퓨팅 장치.
  13. 제1항에 있어서,
    상기 보안 하드웨어는
    상기 서버 컴퓨팅 시스템으로부터 불러온 데이터를 기초로 정책(policy)에 특정된 조건이 만족되는지 여부를 검증하는 인증 구성요소 - 상기 정책은 상기 보안 하드웨어가 수신한 하드웨어 보호되는 객체에 대응함 - 를 더 포함하고,
    상기 암호화 엔진은 상기 조건이 만족된다고 식별될 때 상기 공유 시크릿 및 상기 공유 시크릿으로부터 생성된 키 중 적어도 하나를 이용해 상기 하드웨어 보호되는 객체를 복호화하며, 상기 조건이 만족되지 않는다고 식별될 때 상기 암호화 엔진은 하드웨어 보호되는 객체를 복호화하는 것이 금지되는
    컴퓨팅 장치.
  14. 제9항에 있어서,
    상기 서버 컴퓨팅 시스템의 상기 스토리지에 데이터를 저장하는 단계와,
    상기 제1 보안 하드웨어에 대한 제1 메시지를 암호화하는 단계 - 상기 제1 메시지는 데이터를 포함하며, 상기 제1 메시지는 상기 제1 공유 시크릿을 기초로 암호화되어 제1 암호화된 메시지를 생성함 - 와,
    상기 제1 암호화된 메시지를 상기 제1 컴퓨팅 장치로 전송하는 단계와,
    상기 제2 보안 하드웨어에 대한 제2 메시지를 암호화하는 단계 - 상기 제2 메시지는 상기 데이터를 포함하고, 상기 제2 메시지는 상기 제2 공유 시크릿을 기초로 암호화되어 제2 암호화된 메시지를 생성함 - 와,
    상기 제2 암호화된 메시지를 상기 제2 컴퓨팅 장치로 전송하는 단계를 더 포함하는
    하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
  15. 제9항에 있어서,
    상기 서버 컴퓨팅 시스템의 상기 스토리지에 데이터를 저장하는 단계와,
    상기 제1 보안 하드웨어에 대한 메시지를 암호화하는 단계 - 상기 메시지는 데이터를 포함하고, 상기 메시지는 상기 제1 공유 시크릿을 기초로 암호화되어 암호화된 메시지를 생성함 - 와,
    상기 암호화된 메시지를 상기 제1 컴퓨팅 장치로 전송하는 단계와,
    상기 제1 컴퓨팅 장치로 상기 암호화된 메시지를 전송한 후, 상기 서버 컴퓨팅 시스템의 상기 스토리지 내 데이터를 수정하는 단계와,
    상기 제1 보안 하드웨어에 대한 후속 메시지(subsequent message)를 암호화하는 단계 - 상기 후속 메시지는 수정된 상태의 데이터를 포함하고, 상기 후속 메시지는 상기 제1 공유 시크릿을 기초로 암호화되어, 후속 암호화된 메시지를 생성함 - 와,
    상기 후속 암호화된 메시지를 상기 제1 컴퓨팅 장치로 전송하는 단계를 더 포함하는
    하드웨어 보호되는 상태의 공유를 제어하기 위한 방법.
KR1020167024631A 2014-03-06 2015-03-05 장치 간 신뢰 애플리케이션을 위한 보안 하드웨어 KR102331595B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461949211P 2014-03-06 2014-03-06
US61/949,211 2014-03-06
US14/629,501 US9686077B2 (en) 2014-03-06 2015-02-24 Secure hardware for cross-device trusted applications
US14/629,501 2015-02-24
PCT/US2015/018988 WO2015134760A2 (en) 2014-03-06 2015-03-05 Secure hardware for cross-device trusted applications

Publications (2)

Publication Number Publication Date
KR20160129852A true KR20160129852A (ko) 2016-11-09
KR102331595B1 KR102331595B1 (ko) 2021-11-25

Family

ID=54018513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167024631A KR102331595B1 (ko) 2014-03-06 2015-03-05 장치 간 신뢰 애플리케이션을 위한 보안 하드웨어

Country Status (5)

Country Link
US (2) US9686077B2 (ko)
EP (1) EP3114604A2 (ko)
KR (1) KR102331595B1 (ko)
CN (1) CN106104558B (ko)
WO (1) WO2015134760A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190065524A (ko) * 2017-12-02 2019-06-12 고하준 Tpm 하드웨어 보안칩을 사용하여 로컬 기기의 네트워크 접속을 제어하는 방법
KR20200098872A (ko) * 2019-02-13 2020-08-21 세종대학교산학협력단 무인 항공기를 위한 신뢰성 보장형 원격 데이터 삭제 기술
KR20210056049A (ko) * 2019-11-08 2021-05-18 한국과학기술원 Kms 및 hsm를 함께 이용하는 보안 시스템 및 그 동작 방법
KR102655473B1 (ko) * 2022-11-17 2024-05-09 (주)아이앤씨테크놀로지 대칭키 암호 알고리즘을 이용한 보안 디버깅 시스템 및 이를 이용한 보안 디버깅 방법

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949818B2 (en) * 2012-06-29 2015-02-03 Intel Corporation Mechanism for facilitating dynamic and trusted cloud-based extension upgrades for computing systems
US9686077B2 (en) 2014-03-06 2017-06-20 Microsoft Technology Licensing, Llc Secure hardware for cross-device trusted applications
US10303879B1 (en) * 2014-11-06 2019-05-28 Amazon Technologies, Inc. Multi-tenant trusted platform modules
US9578054B1 (en) * 2015-08-31 2017-02-21 Newman H-R Computer Design, LLC Hacking-resistant computer design
US10277597B2 (en) 2015-11-09 2019-04-30 Silvercar, Inc. Vehicle access systems and methods
CN105718794B (zh) * 2016-01-27 2018-06-05 华为技术有限公司 基于vtpm对虚拟机进行安全保护的方法及系统
US10404569B2 (en) * 2016-08-22 2019-09-03 General Electric Company Internet of things associate
US10645165B2 (en) * 2016-09-22 2020-05-05 Spectra Logic Corporation Hybrid cloud
WO2018095329A1 (en) * 2016-11-26 2018-05-31 Huawei Technologies Co., Ltd. Password based key derivation function for ntp
US10482034B2 (en) * 2016-11-29 2019-11-19 Microsoft Technology Licensing, Llc Remote attestation model for secure memory applications
EP3333750A1 (en) 2016-12-06 2018-06-13 Safenet Canada Inc. Method to create a trusted pool of devices
US10897459B2 (en) * 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
US10972265B2 (en) 2017-01-26 2021-04-06 Microsoft Technology Licensing, Llc Addressing a trusted execution environment
US10505730B2 (en) 2017-02-06 2019-12-10 Red Hat, Inc. Secure data management
US10116635B1 (en) * 2017-04-27 2018-10-30 Otis Elevator Company Mobile-based equipment service system using encrypted code offloading
US10547449B2 (en) * 2017-05-30 2020-01-28 Nxp B.V. Protection against relay attacks in a white-box implementation
CN107659567A (zh) * 2017-09-19 2018-02-02 北京许继电气有限公司 基于公钥系统的细粒度轻量级的密文访问控制方法和系统
US10810311B2 (en) * 2017-09-21 2020-10-20 Samsung Electronics Co., Ltd. Internet-of-things module
US10747885B2 (en) * 2018-01-12 2020-08-18 Intel Corporation Technologies for pre-boot biometric authentication
US11074173B1 (en) 2018-04-26 2021-07-27 Lightbits Labs Ltd. Method and system to determine an optimal over-provisioning ratio
US11093408B1 (en) * 2018-04-26 2021-08-17 Lightbits Labs Ltd. System and method for optimizing write amplification of non-volatile memory storage media
US10740084B2 (en) * 2018-08-16 2020-08-11 Intel Corporation Soc-assisted resilient boot
US11153299B2 (en) 2019-03-11 2021-10-19 International Business Machines Corporation Secure data transport using trusted identities
KR20200129776A (ko) * 2019-05-10 2020-11-18 삼성전자주식회사 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
US11256717B2 (en) * 2019-10-21 2022-02-22 Vmware, Inc. Storage of key-value entries in a distributed storage system
KR20210089486A (ko) 2020-01-08 2021-07-16 삼성전자주식회사 키를 안전하게 관리하기 위한 장치 및 방법
US11385798B1 (en) 2020-12-28 2022-07-12 Lightbits Labs Ltd. Method and system for application aware, management of write operations on non-volatile storage
US11429396B1 (en) * 2021-05-19 2022-08-30 Dell Products L.P. Validating and enumerating device partitions in a computing environment
US11652729B1 (en) * 2022-07-19 2023-05-16 Uab 360 It Enabling efficient communications in a mesh network

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060127229A (ko) * 2004-03-24 2006-12-11 인텔 코오퍼레이션 네트워크 도메인 내의 네트워크 엔드포인트의 임베디드에이전트와 암호화 키를 공유하기 위한 방법, 장치들 및컴퓨터 프로그램 제품
US20090216907A1 (en) * 2008-02-25 2009-08-27 Simdesk Technologies, Inc. Secure block read and write protocol for remotely stored files
KR20090094236A (ko) * 2006-11-03 2009-09-04 루센트 테크놀러지스 인크 제어 메시지 전달 방법 및 장치
KR20110139130A (ko) * 2010-06-21 2011-12-28 인텔 코오퍼레이션 부분 가상화 머신에 의한 균일한 저장 디바이스

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199055B1 (en) * 1997-11-05 2001-03-06 E-Stamp Corporation System and method for providing fault tolerant transcriptions over an unsecured communication channel
FR2772532B1 (fr) * 1997-12-16 2000-01-07 Schlumberger Ind Sa Procede de securisation de la transmission d'un message d'un dispositif emetteur a un dispositif recepteur
US20020157002A1 (en) 2001-04-18 2002-10-24 Messerges Thomas S. System and method for secure and convenient management of digital electronic content
US8504665B1 (en) * 2004-06-30 2013-08-06 Kaseya International Limited Management of a device connected to a remote computer using the remote computer to effect management actions
US7620707B1 (en) * 2004-06-30 2009-11-17 Kaseya International Limited Remote computer management when a proxy server is present at the site of a managed computer
US7660964B2 (en) * 2005-08-02 2010-02-09 International Business Machines Corporation Windowing external block translations
EP2034458A3 (en) * 2007-03-09 2009-09-02 ActivIdentity, Inc. One-time passwords
US8612773B2 (en) * 2007-05-03 2013-12-17 International Business Machines Corporation Method and system for software installation
US8689010B2 (en) 2007-06-28 2014-04-01 Microsoft Corporation Secure storage for digital rights management
US8543091B2 (en) * 2008-06-06 2013-09-24 Ebay Inc. Secure short message service (SMS) communications
GB2464966B (en) 2008-10-31 2012-08-29 Hewlett Packard Development Co Policy enforcement in trusted platforms
US8627075B2 (en) * 2008-12-26 2014-01-07 Panasonic Corporation Communication device that receives external device information from an external device using near field communication
US9276935B2 (en) 2009-05-27 2016-03-01 Microsoft Technology Licensing, Llc Domain manager for extending digital-media longevity
JP5552870B2 (ja) * 2010-04-01 2014-07-16 ソニー株式会社 メモリ装置、ホスト装置、およびメモリシステム
US20120297134A1 (en) 2011-05-16 2012-11-22 Dell Products, Lp System and Method to Isolate Passive Disk Transfers to Improve Storage Performance
US8375221B1 (en) 2011-07-29 2013-02-12 Microsoft Corporation Firmware-based trusted platform module for arm processor architectures and trustzone security extensions
US9424439B2 (en) 2011-09-12 2016-08-23 Microsoft Technology Licensing, Llc Secure data synchronization
KR101275773B1 (ko) 2011-10-04 2013-07-30 한국과학기술원 클라우드 컴퓨팅 서비스에서 생성된 미터링 데이터에 대한 위조 및 변조를 방지하는 시스템
US8782387B2 (en) 2011-12-31 2014-07-15 International Business Machines Corporation Secure boot of a data breakout appliance with multiple subsystems at the edge of a mobile data network
US8913801B2 (en) 2012-06-29 2014-12-16 Apple Inc. Enrollment using synthetic fingerprint image and fingerprint sensing systems
US8984582B2 (en) 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US9776078B2 (en) * 2012-10-02 2017-10-03 Razer (Asia-Pacific) Pte. Ltd. Application state backup and restoration across multiple devices
US8839353B2 (en) 2012-11-09 2014-09-16 Microsoft Corporation Attack protection for trusted platform modules
US9396320B2 (en) * 2013-03-22 2016-07-19 Nok Nok Labs, Inc. System and method for non-intrusive, privacy-preserving authentication
US9686077B2 (en) 2014-03-06 2017-06-20 Microsoft Technology Licensing, Llc Secure hardware for cross-device trusted applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060127229A (ko) * 2004-03-24 2006-12-11 인텔 코오퍼레이션 네트워크 도메인 내의 네트워크 엔드포인트의 임베디드에이전트와 암호화 키를 공유하기 위한 방법, 장치들 및컴퓨터 프로그램 제품
KR20090094236A (ko) * 2006-11-03 2009-09-04 루센트 테크놀러지스 인크 제어 메시지 전달 방법 및 장치
US20090216907A1 (en) * 2008-02-25 2009-08-27 Simdesk Technologies, Inc. Secure block read and write protocol for remotely stored files
KR20110139130A (ko) * 2010-06-21 2011-12-28 인텔 코오퍼레이션 부분 가상화 머신에 의한 균일한 저장 디바이스

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190065524A (ko) * 2017-12-02 2019-06-12 고하준 Tpm 하드웨어 보안칩을 사용하여 로컬 기기의 네트워크 접속을 제어하는 방법
KR20200098872A (ko) * 2019-02-13 2020-08-21 세종대학교산학협력단 무인 항공기를 위한 신뢰성 보장형 원격 데이터 삭제 기술
KR20210056049A (ko) * 2019-11-08 2021-05-18 한국과학기술원 Kms 및 hsm를 함께 이용하는 보안 시스템 및 그 동작 방법
US11411719B2 (en) 2019-11-08 2022-08-09 Korea Advanced Institute Of Science And Technology Security system and method thereof using both KMS and HSM
KR102655473B1 (ko) * 2022-11-17 2024-05-09 (주)아이앤씨테크놀로지 대칭키 암호 알고리즘을 이용한 보안 디버깅 시스템 및 이를 이용한 보안 디버깅 방법

Also Published As

Publication number Publication date
US10404466B2 (en) 2019-09-03
WO2015134760A3 (en) 2015-11-12
EP3114604A2 (en) 2017-01-11
WO2015134760A2 (en) 2015-09-11
US9686077B2 (en) 2017-06-20
US20170187533A1 (en) 2017-06-29
CN106104558B (zh) 2020-07-10
CN106104558A (zh) 2016-11-09
KR102331595B1 (ko) 2021-11-25
US20150256332A1 (en) 2015-09-10

Similar Documents

Publication Publication Date Title
US10404466B2 (en) Secure hardware for cross-device trusted applications
Chen et al. {cTPM}: A cloud {TPM} for {Cross-Device} trusted applications
US10346622B2 (en) Facilitating communication between mobile applications
US10013274B2 (en) Migrating virtual machines to perform boot processes
US9858428B2 (en) Controlling mobile device access to secure data
US10091001B2 (en) Autonomous private key recovery
US8977842B1 (en) Hypervisor enabled secure inter-container communications
US10965449B2 (en) Autonomous secrets management for a key distribution service
US9455992B2 (en) Trusted hardware component for distributed systems
EP3937045B1 (en) Hash updating methods and apparatuses of blockchain integrated station
US11200300B2 (en) Secure sharing of license data in computing systems
JP2017515413A (ja) 継続的な所有者アクセスを伴う、暗号化された仮想マシンの安全なトランスポート
US11019033B1 (en) Trust domain secure enclaves in cloud infrastructure
Soriente et al. Replicatee: Enabling seamless replication of sgx enclaves in the cloud
US20230222230A1 (en) Key distribution system in a secure enclave
KR20220002616A (ko) 멀티-노드 클러스터에서 신뢰할 수 있는 컨테이너들 간의 암호화 키 오케스트레이션
US10887095B2 (en) Allocating security parameter index values using time-based one-time passwords
US20240086562A1 (en) User data management method and related device
US11171786B1 (en) Chained trusted platform modules (TPMs) as a secure bus for pre-placement of device capabilities
WO2024050869A1 (zh) 基于去中心化信任的公有云下tee状态连续性保护方法

Legal Events

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