KR20200085724A - 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템 - Google Patents

호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20200085724A
KR20200085724A KR1020207004306A KR20207004306A KR20200085724A KR 20200085724 A KR20200085724 A KR 20200085724A KR 1020207004306 A KR1020207004306 A KR 1020207004306A KR 20207004306 A KR20207004306 A KR 20207004306A KR 20200085724 A KR20200085724 A KR 20200085724A
Authority
KR
South Korea
Prior art keywords
accelerator
host system
data
memory location
command
Prior art date
Application number
KR1020207004306A
Other languages
English (en)
Other versions
KR102323763B1 (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 KR20200085724A publication Critical patent/KR20200085724A/ko
Application granted granted Critical
Publication of KR102323763B1 publication Critical patent/KR102323763B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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
    • 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
    • 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/0442Network 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 asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/062Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys

Abstract

일 실시예에 따르면, 시스템은 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 보안 연결을 구축하며, 상기 보안 연결은 하나 또는 다수의 데이터 채널을 포함한다. 상기 시스템은 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청하기 위한 제1 명령어를 전송한다. 상기 시스템은 상기 데이터 채널을 통해 상기 DP 가속기로부터, 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신한다. 상기 제1 요청에 응답하여, 상기 시스템은 상기 데이터 채널을 통해 상기 제1 데이터를 상기 DP 가속기에 전송하며, 상기 제1 데이터는 계산 또는 구성 동작에 이용된다. 상기 시스템은 상기 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제2 명령어를 전송하여 상기 계산 또는 상기 구성 동작을 수행한다.

Description

호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
본 발명의 실시예는 일반적으로 컨텐츠 검색에 관한 것이다. 더 구체적으로, 본 발명의 실시예는 호스트 시스템과 데이터 처리(DP) 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템에 관한 것이다.
민감한 트랜잭션은 인공 지능(AI) 가속기 또는 코프로세서(co-processor)와 같은 데이터 처리(DP) 가속기에 의해 점점 더 많이 수행되고 있다. 이는 DP 가속기에 대한 통신 채널을 보호하고 호스트 시스템의 환경을 보호하여 호스트 시스템을 무단 액세스로부터 보호해야 할 필요성을 증가시켰다.
예를 들어, AI 트레이닝 데이터, 모델 및 추론 출력은 보호되지 않으므로 신뢰할 수 없는 당사자에게 누설될 수 있다. 따라서, 데이터 처리 가속기에 의해 처리된 데이터를 보호할 수 있는 시스템이 필요하다.
본 개시의 제1 양태에 따르면, 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법을 제공하며, 상기 방법은, 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 데이터 채널을 포함하는 보안 연결을 구축하는 단계; 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제1 명령어를 전송하는 단계 - 상기 제1 명령어는 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청함 -; 상기 제1 명령어에 응답하여, 상기 데이터 채널을 통해 상기 DP 가속기로부터, 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신하는 단계; 상기 제1 요청에 응답하여, 상기 데이터 채널을 통해 상기 호스트 시스템의 상기 제1 메모리 위치로부터 검색된 상기 제1 데이터를 상기 DP 가속기에 전송하는 단계 - 상기 제1 데이터는 계산 또는 구성 동작에 이용됨; 및 상기 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제2 명령어를 전송하는 단계 - 상기 제2 명령어는 상기 DP 가속기가 상기 연산 또는 상기 구성 동작을 수행하도록 요청함 -를 포함한다.
본 개시의 제2 양태에 따르면, 비일시적인 기계 판독 가능한 매체를 제공하고, 상기 비일시적인 기계 판독 가능한 매체에는, 프로세서에 의해 실행될 경우 상기 프로세서로 하여금 동작들을 수행하도록 하는 명령어가 저장되며, 상기 동작들은, 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 데이터 채널을 포함하는 보안 연결을 구축하는 단계; 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제1 명령어를 전송하는 단계 - 상기 제1 명령어는 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청함 -; 상기 제1 명령어에 응답하여, 상기 데이터 채널을 통해 상기 DP 가속기로부터, 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신하는 단계; 상기 제1 요청에 응답하여, 상기 데이터 채널을 통해 상기 호스트 시스템의 상기 제1 메모리 위치로부터 검색된 상기 제1 데이터를 상기 DP 가속기에 전송하는 단계 - 상기 제1 데이터는 계산 또는 구성 동작에 이용됨; 및
상기 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제2 명령어를 전송하는 단계 - 상기 제2 명령어는 상기 DP 가속기가 상기 연산 또는 상기 구성 동작을 수행하도록 요청함 -를 포함한다.
본 개시의 제3 양태에 따르면, 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법을 제공하고, 상기 방법은, 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 데이터 채널을 포함하는 보안 연결을 구축하는 단계; 상기 DP 가속기에서, 명령 채널을 통해 상기 호스트 시스템으로부터 제1 명령어를 수신하는 단계 - 상기 제1 명령어는 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청함 -; 상기 제1 명령어에 응답하여, 상기 데이터 채널을 통해 상기 DP 가속기로부터 상기 호스트 시스템에 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 전송하고, 상기 데이터 채널을 통해 상기 호스트 시스템으로부터 상기 제1 데이터를 수신하는 단계 - 상기 제1 데이터는 상기 호스트 시스템에 의해 상기 호스트 시스템의 상기 제1 메모리 위치로부터 검색됨 -; 상기 명령 채널을 통해 상기 호스트 시스템으로부터 제2 명령어를 수신하는 단계 - 상기 제2 명령어는 상기 DP 가속기가 계산 또는 구성 동작을 수행하도록 요청함; 및 적어도 상기 제1 데이터에 기반하여 상기 계산 또는 상기 구성 동작을 수행하는 단계를 포함한다.
본 발명의 실시예는 첨부된 도면에서 제한적인 것이 아니라 단지 예로서 도시되며, 첨부된 도면에서 유사한 첨부기호는 유사한 구성요소를 가리킨다.
도 1은 일부 실시예에 따른 호스트와 데이터 처리(DP) 가속기 사이의 통신 보안을 위한 시스템 구성의 예시를 나타내는 블록도이다.
도 2는 일부 실시예에 따른 호스트와 데이터 처리(DP) 가속기 사이의 통신 보안을 위한 다중 레이어 보호 솔루션의 예시를 나타내는 블록도이다.
도 3은 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다.
도 4는 일 실시예에 따른 I/O 관리자를 구비하는 호스트의 예시를 나타내는 블록도이다.
도 5는 일부 실시예에 따른 DP 가속기와 통신하는 I/O 관리자의 예시를 더 나타내는 블록도이다.
도 6은 일 실시예에 따른 복수의 DP 가속기에 할당된 메모리의 영역을 나타내는 블록도이다.
도 7은 일 실시예에 따른 호스트와 DP 가속기 사이의 예시적인 통신을 나타내는 블록도이다.
도 8a 및 도 8b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다.
도 9는 일 실시예에 따른 호스트 채널 관리자(HCM)를 구비하는 호스트의 예시를 나타내는 블록도이다.
도 10은 일부 실시예에 따른 하나 또는 다수의 가속기 채널 관리자(ACM)에 통신 연결되는 호스트 채널 관리자(HCM)의 예시를 나타내는 블록도이다.
도 11은 일 실시 예에 따른 채널/세션 키를 이용하여 사용자 애플리케이션 대 채널 매핑을 나타내는 블록도이다.
도 12a 및 도 12b는 일 실시예에 따른 호스트와 DP 가속기 사이의 보안 정보 교환의 예시를 나타내는 블록도이다.
도 13a 및 도 13b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다.
도 14는 일 실시예에 따른 호스트 채널 관리자(HCM)와 가속기 채널 관리자(ACM) 사이에서 보안 정보 교환 채널을 구축하기 위한 예시적인 시스템을 나타내는 블록도이다.
도 15는 일 실시예에 따른 호스트와 DP 가속기 사이의 세션 키를 도출하기 위한 예시적인 정보 교환을 나타내는 블록도이다.
도 16a 및 도 16b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다.
도 17은 일 실시예에 따른 DP 가속기의 메모리 버퍼를 보호하기 위한 보안 메모리 관리자(MM)를 구비하는 호스트의 예시를 나타내는 블록도이다.
도 18은 일부 실시예에 따른 메모리 관리자(MM)의 예시를 나타내는 블록도이다.
도 19는 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다.
도 20은 일 실시예에 따른 DP 가속기에 통신 연결되는 호스트 서버의 예시를 나타내는 블록도이다.
도 21은 일 실시예에 따른 타임 유닛의 예시를 나타내는 블록도이다.
도 22는 일 실시예에 따른 보안 유닛의 예시를 나타내는 블록도이다.
도 23은 일 실시예에 따른 DP 가속기에 통신 연결되어 커널 오브젝트를 검증하는 호스트 서버의 예시를 나타내는 블록도이다.
도 24는 일 실시예에 따른 예시적인 커널 오브젝트 검증(verification) 프로토콜을 나타내는 흐름도이다.
도 25는 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다.
도 26은 일 실시예에 따른 커널 인증(attestation)을 위해 DP 가속기에 통신 연결되는 호스트 서버의 예시를 나타내는 블록도이다.
도 27은 일 실시예에 따른 예시적인 인증 프로토콜을 나타내는 흐름도이다.
도 28a 및 도 28b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다.
도 29는 일 실시예에 따른 DP 가속기 및 신뢰할 수 있는 서버에 통신 연결되는 호스트 서버의 예시를 나타내는 블록도이다.
도 30은 일 실시예에 따른 예시적인 DP 가속기 검증(validation) 프로토콜을 나타내는 흐름도이다.
도 31은 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다.
도 32는 일 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
본 발명의 다양한 실시예 alc 양태는 이하 기술되는 세부 사항을 참조하여 설명될 것이며, 첨부 도면은 상기 다양한 실시예들을 예시한다. 이하의 설명과 도면은 본 발명에 대한 설명일 뿐, 본 발명을 제한하는 것으로 해석하여서는 아니된다. 본 발명의 다양한 실시예들에 대한 철저한 이해를 제공하기 위해 대량의 특정 세부 사항들이 설명된다. 그러나, 어떤 경우에는, 본 발명의 실시예에 대한 간결한 설명을 제공하기 위해 이미 잘 알려진 또는 통상적인 세부 사항들은 설명되지 않는다.
본 명세서에 있어서, "일 실시예" 또는 "실시예"에 대한 언급은 해당 실시예를 관련하여 설명한 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서의 다양한 곳에 기재된 문구 "일 실시예에 있어서"는 반드시 모두 동일한 실시예를 지칭하는 것은 아니다.
본 개시의 제1 양태에 따르면, 데이터 처리 시스템은 호스트 시스템의 보안 모듈(예를 들어, 신뢰할 수 있는 플랫폼 모듈(TPM))을 이용하여 보안 부팅을 수행한다. 시스템은 운영 체제(OS) 및 데이터 처리(DP) 가속기와 연관된 가속기 드라이버를 포함하는 하나 또는 다수의 드라이버가 신뢰할 수 있는 소스에 의해 제공되는지를 검증한다. 시스템은 OS 내에서 가속기 드라이버를 시작한다. 시스템은 호스트 시스템의 하나 또는 다수의 프로세서와 연관된 신뢰할 수 있는 실행 환경(TEE)을 구축한다. 시스템은 TEE 내에서 애플리케이션 및 런타임 라이브러리를 시작하고, 여기서, 애플리케이션은 런타임 라이브러리 및 가속기 드라이버를 경유하여 DP 가속기와 통신한다.
제2 양태에 따르면, 시스템은 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 보안 연결(하나 또는 다수의 보안 채널을 가짐)을 구축하며, 보안 연결은 하나 또는 다수의 명령 채널 및/또는 데이터 채널을 포함한다. 일 실시예에 있어서, 하나 또는 다수의 명령 채널은 안전하지 않을 수 있다. 시스템은 명령 채널을 통해 제1 명령어를 호스트 시스템에서 DP 가속기에 전송하며, 제1 명령어는 DP 가속기가 데이터 준비 동작을 수행하도록 요청한다. 제1 명령어에 응답하여, 시스템은 데이터 채널을 통해 DP 가속기에서 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신한다. 요청에 응답하여, 시스템은 데이터 채널을 통해 호스트 시스템의 제1 메모리 위치로부터 검색된 제1 데이터를 DP 가속기에 전송하고, 여기서, 제1 데이터는 컴퓨팅 또는 구성 동작에 이용된다. 시스템은 명령 채널을 통해 제2 명령어를 호스트 시스템에서 DP 가속기에 전송하며, 제2 명령어는 DP 가속기가 컴퓨팅 또는 구성 동작을 수행하도록 요청한다.
일 실시예에 있어서, 시스템은 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 보안 연결을 구축하며, 보안 연결은 하나 또는 다수의 명령 채널 및/또는 데이터 채널을 포함한다. 명령 채널은 안전하지 않을 수 있다. 시스템은 DP 가속기에서 명령 채널을 경유하여 호스트 시스템에서 제1 명령어를 수신하며, 제1 명령어는 DP 가속기가 데이터 준비 동작을 수행하도록 요청한다. 제1 명령어에 응답하여, 시스템은 데이터 채널을 경유하여 제1 요청을 DP 가속기에서 호스트 시스템에 전송하여 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독한다. 시스템은 데이터 채널을 경유하여 호스트 시스템에서 제1 데이터를 수신하고, 여기서, 제1 데이터는 호스트 시스템에 의해 호스트 시스템의 제1 메모리 위치로부터 검색된다. 시스템은 명령 채널을 경유하여 호스트 시스템에서 제2 명령어를 수신하며, 제2 명령어는 DP 가속기가 컴퓨팅 또는 구성 동작을 수행하도록 요청한다. 시스템은 적어도 제1 데이터에 기반하여 컴퓨팅 또는 구성 동작을 수행한다.
제3 양태에 따르면, 시스템은 호스트 시스템의 호스트 채널 관리자(HCM)에서 애플리케이션으로부터 요청을 수신하여 데이터 처리(DP) 가속기와의 보안 채널을 구축하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 요청에 응답하여, 시스템은 HCM과 연관된 제1 키쌍의 제1 개인 키 및 DP 가속기와 연관된 제2 키쌍의 제2 공개 키에 기반하여 보안 채널에 대한 제1 세션 키를 생성한다. DP 가속기에 발송될 애플리케이션과 연관된 제1 데이터에 응답하여, 시스템은 제1 세션 키를 이용하여 제1 데이터를 암호화한다. 다음, 시스템은 버스를 통해 보안 채널을 경유하여 암호화된 제1 데이터를 DP 가속기에 전송한다.
일 실시예에 있어서, 시스템은 데이터 처리(DP) 가속기의 가속기 채널 관리자(ACM)에서, 호스트 시스템의 호스트 채널 관리자(HCM)의 애플리케이션으로부터 요청을 수신하여, 호스트 시스템과 DP 가속기 사이에서 보안 채널을 구축하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 요청에 응답하여, 시스템은 보안 채널에 대한 제2 세션 키를 생성하고, 암호화된 제2 세션 키를 HCM에 발송하기 전에 DP 가속기와 연관된 제2 키쌍의 제2 개인 키 및 HCM과 연관된 제1 키쌍의 제1 공개 키에 기반하여 제2 세션 키를 암호화한다. 호스트 시스템에 전송될 제1 데이터에 응답하여, 시스템은 제2 세션 키를 이용하여 제1 데이터를 암호화한다. 다음, 시스템은 보안 채널을 경유하여 암호화된 제1 데이터를 호스트 시스템의 HCM에 전송한다.
제4 양태에 따르면, 데이터 처리(DP) 가속기에서 임시 공개 키(PK_d)를 수신하는 것에 응답하여, 시스템은 호스트 시스템에서 제1 논스(nonce; nc)를 생성하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 시스템은 세션 키를 생성하는 요청을 호스트 시스템에서 DP 가속기에 전송하며, 요청은 호스트 공개 키(PK_O) 및 제1 논스를 포함한다. 시스템은 DP 가속기에서 제2 논스(ns)를 수신하고, 여기서, 제2 논스는 호스트 공개 키 및 임시 공개 키에 대응되는 임시 개인 키(SK_d)를 이용하여 암호화된다. 시스템은 제1 논스 및 제2 논스에 기반하여 제1 세션 키를 생성하고, 이는 호스트 시스템과 DP 가속기 사이의 후속적인 데이터 교환의 암호화 또는 복호화에 이용된다.
일 실시예에 있어서, 호스트 시스템으로부터 수신된 요청에 응답하여, 시스템은 데이터 처리(DP) 가속기에서, 임시 개인 키 및 임시 공개 키를 생성하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 시스템은 DP 가속기와 연관된 가속기 개인 루트 키를 이용하여 임시 공개 키를 암호화한다. 시스템은 암호화되지 않은 형식의 임시 공개 키와 암호화된 임시 공개 키를 호스트 시스템에 전송하여, 호스트 시스템으로 하여금 임시 공개 키를 검증할 수 있도록 한다. 시스템은 호스트 시스템에서 제1 논스를 수신하고, 여기서, 제1 논스는 임시 공개 키가 이미 검증된 후 호스트 시스템에 의해 생성된다. 시스템은 제1 논스 및 제2 논스에 기반하여 세션 키를 생성하고, 여기서, 제2 논스는 이미 DP 가속기에서 로컬로 생성된다.
제5 양태에 따르면, 시스템은 호스트 시스템의 보안 모듈(예를 들어, 신뢰할 수 있는 플랫폼 모듈(TPM))을 이용하여 보안 부팅을 수행한다. 시스템은 호스트 시스템의 하나 또는 다수의 프로세서와 연관된 신뢰할 수 있는 실행 환경(TEE)을 구축한다. 시스템은 TEE 내에서 메모리 관리자를 시작하고, 여기서, 메모리 관리자는 버스를 통해 호스트 시스템에 연결된 데이터 처리(DP) 가속기의 메모리 자원을 관리하도록 구성되고, 따라서 DP 가속기의 글로벌 메모리의 메모리 이용 정보를 유지하는 것을 포함한다. DP 가속기의 메모리 위치에 액세스하기 위해 TEE 내에서 실행되는 애플리케이션으로부터 수신된 요청에 응답하여, 시스템은 메모리 이용 정보에 기반하여 요청을 허용 또는 거부한다.
제6 양태에 따르면, DP 가속기는 버스를 통해 연결된 호스트 시스템로부터 수신된 명령어에 응답하여 데이터 처리 동작을 수행하도록 구성된 하나 또는 다수의 실행 유닛(EU)을 포함한다. DP 가속기는 보안 유닛(SU)을 포함하며, 보안 유닛(SU)은 호스트 시스템과의 보안 채널을 구축하고 유지하여, 데이터 처리 동작과 연관된 명령 및 데이터를 교환하도록 구성된다. DP 가속기는 보안 유닛에 연결되어 보안 유닛에 타임 스탬프 서비스를 제공하는 타임 유닛(TU)을 포함하고, 여기서, 타임 유닛은 외부 소스에서 클럭 신호를 도출할 필요없이 클럭 신호를 로컬로 생성하는 클럭 생성부를 포함한다. TU는 클럭 생성부에 연결되어 클럭 신호에 기반하여 타임 스탬프를 생성하는 타임 스탬프 생성부와, 클럭 생성부 및 타임 스탬프 생성부에 전력을 제공하는 전원 장치를 포함한다.
일 실시예에 있어서, TU는 클럭 생성부에 연결되어 클럭 생성부로부터 생성된 클럭 신호에 기반하여 카운트 값을 카운트하는 카운터와, 카운트 값을 저장하는 영구 저장 장치를 더 포함하고, 여기서, 카운트 값은 타임 스탬프 생성부에 의해 이용되어 타임 스탬프를 생성한다. 다른 일 실시예에 있어서, 카운터는 클럭 신호 각각에 응답하여 카운트 값을 증가시키고, 여기서, 영구 저장 장치는 32 비트 변수를 포함한다. 그러나, 영구 저장 장치는 8 비트, 16 비트, 64 비트 등과 같은 모든 크기의 변수를 포함할 수 있다.
일 실시예에 있어서, 타임 유닛은 클럭 생성부에 연결되어 정확한 펄스 신호를 제공하는 로컬 오실레이터를 더 포함한다. 일 실시예에 있어서, 전원 장치는 외부 전원 장치로부터 전력을 끌어들일 필요없이 전력을 제공하는 배터리를 포함한다. 일 실시예에 있어서, 클럭 신호는 외부 클럭 소스와 통신할 필요없이 생성된다. 일 실시예에 있어서, 타임 유닛은 클럭 생성부를 교정하도록 구성된 클럭 교정기를 더 포함한다.
일 실시예에 있어서, 타임 스탬프는 보안 유닛(1020)에 의해 이용되어, DP 가속기와 호스트 시스템 사이의 교환된 데이터를 암호화하기 위한 세션 키에 타임 스탬프를 찍을 수 있다. 다른 일 실시예에 있어서, 타임 스탬프는 DP 가속기에 대한 정보 교환에 타임 스탬프를 찍는 데 이용되고, 타임 스탬프는 정보 교환의 신선도를 결정함에 이용될 수 있다. 다른 일 실시예에 있어서, 세션 키의 타임 스탬프는 세션 키가 만료되었는지 여부를 결정함에 이용된다.
제7 양태에 따르면, DP 가속기는 버스를 통해 연결된 호스트 시스템으로부터 수신된 명령어에 응답하여 데이터 처리 동작을 수행하도록 구성된 하나 또는 다수의 실행 유닛(EU)을 포함한다. DP 가속기는 보안 유닛에 연결되어 타임 스탬프 서비스를 제공하는 타임 유닛(TU)을 포함한다. DP 가속기는 호스트 시스템과 함께 보안 채널을 구축하고 유지하여 데이터 처리 동작과 연관된 명령 및 데이터를 교환하도록 구성된 보안 유닛(SU)을 포함하고, 여기서, 보안 유닛은 DP 가속기와 연관된 개인 루트 키를 저장하는 보안 저장 영역을 포함하고, 여기서, 개인 루트 키는 인증에 이용된다. SU는 난수(random number)를 생성하는 난수 생성부와, 난수에 기반하여 도출된 세션 키를 이용하여 버스를 통해 호스트 시스템과 교환된 데이터에 대해 암호화 동작을 수행하는 암호화 엔진을 포함한다.
일 실시예에 있어서, 개인 루트 키는 DP 가속기의 제조 동안 보안 저장 영역에 미리 구성되고 저장된다. 일 실시예에 있어서, 보안 유닛은 호스트 시스템에서 요청을 수신하여 DP 가속기와의 보안 연결을 구축하고, 요청에 응답하여 난수 생성부에 의해 생성된 난수에 기반하여 세션 키를 생성할 것이고, 여기서, 세션 키는 보안 연결을 통해 호스트 시스템과 교환된 데이터의 암호화 또는 복호화에 이용된다.
다른 일 실시예에 있어서, 난수 생성부는 시드 값에 기반하여 난수를 생성할 수 있다. 다른 일 실시예에 있어서, 타임 스탬프는 세션 키가 만료되었는지 여부를 더 결정할 것이고, 여기서, 새로운 세션 키는 생성될 수 있다.
다른 일 실시예에 있어서, 난수에 기반하여 세션 키 생성 시, 보안 유닛은 임시 개인 키와 임시 공개 키를 구비하는 임시 키쌍을 생성하고, 임시 공개 키와 서명된(또는 싸인; signed) 임시 공개 키를 호스트에 전송할 것이고, 여기서, 서명된 임시 공개 키는 개인 루트 키에 의해 서명되어, 호스트 시스템으로 하여금 DP 가속기를 인증하고, 호스트 시스템에서 제1 논스를 수신하고, DP 가속기에서 로컬로 생성된 제1 논스 및 제2 논스에 기반하여 제1 세션 키를 생성할 수 있도록 한다. 다른 일 실시예에 있어서, 보안 유닛은 개인 루트 키(예를 들어, DP 가속기의 개인 루트 키)에 의해 서명되고 호스트 시스템과 연관된 공개 키에 의해 암호화된 제1 논스 및 제2 논스를 더 전송하도록 구성된다.
다른 일 실시예에 있어서, 호스트 시스템은 개인 루트 키에 대응되는 공개 루트 키(예를 들어, DP 가속기의 공개 루트 키) 및 호스트 시스템의 개인 루트 키를 이용하여 암호화된 제1 논스 및 제2 논스를 복호화하여 제1 논스 및 제2 논스를 복구하도록 구성된다. 다른 일 실시예에 있어서, 호스트 시스템은 복구된 제1 논스 및 제2 논스에 기반하여 제2 세션 키를 생성하도록 구성되고, 여기서, 제2 세션 키는 호스트 시스템에 의해 이용되어 암호화 및 복호화를 수행한다.
일 실시예에 있어서, 타임 유닛은 외부 소스에서 클럭 신호를 도출할 필요없이 클럭 신호를 로컬로 생성하는 클럭 생성부, 클럭 생성부에 연결되어 클럭 신호에 기반하여 타임 스탬프를 생성하는 타임 스탬프 생성부, 및 외부 전원에서 전력을 끌어들일 필요없이 클럭 생성부 및 타임 스탬프 생성부에 전력을 제공하는 전원 장치를 포함한다.
제8 양태에 따르면, 시스템은 호스트 시스템의 신뢰할 수 있는 실행 환경(TEE) 내에서 실행되는 런타임 라이브러리에서, 애플리케이션으로부터 요청을 수신하여 기정된 기능을 호출하여 미리 정의된 동작을 수행한다. 요청에 응답하여, 시스템은 기정된 기능과 연관된 커널 오브젝트를 식별한다. 시스템은 커널 오브젝트의 실행 가능한 이미지의 서명에 이용된 개인 키에 대응되는 공개 키를 이용하여 커널 오브젝트의 실행 가능한 이미지를 검증한다. 커널 오브젝트의 실행 가능한 이미지를 성공적으로 검증하는 것에 응답하여, 시스템은 커널 오브젝트의 검증된 실행 가능한 이미지가 데이터 처리(DP) 가속기에 의해 실행되어 미리 정의된 동작을 수행하도록 버스를 통해 커널 오브젝트의 검증된 실행 가능한 이미지를 DP 가속기에 전송한다.
제9 양태에 따르면, 시스템은 호스트 시스템에서, 버스를 통해 데이터 처리(DP) 가속기에서 공개 인증 키(PK_ATT) 또는 서명된 PK_ATT를 수신한다. 시스템은 DP 가속기와 연관된 공개 루트 키(PK_RK)를 이용하여 PK_ATT를 검증한다. PK_ATT를 성공적으로 검증하는 것에 응답하여, 시스템은 커널 식별자(ID)를 DP 가속기에 전송하여 DP 가속기에 저장된 커널 오브젝트의 인증을 요청한다. DP 가속기에서 커널 오브젝트에 대응되는 커널 다이제스트 또는 서명된 커널 다이제스트를 수신하는 것에 응답하여, 시스템은 PK_ATT를 이용하여 커널 다이제스트를 검증한다. 시스템은 검증 결과를 DP 가속기에 발송하여 DP 가속기로 하여금 검증 결과에 기반하여 커널 오브젝트에 액세스하도록 한다.
일 실시예에 있어서, 호스트 시스템로부터 수신된 인증 요청에 응답하여, 시스템은 데이터 처리(DP) 가속기에서, 공개 인증 키(PK_ATT)와 개인 인증 키(SK_ATT)를 구비하는 인증 키쌍을 생성한다. 시스템은 PK_ATT 또는 서명된 PK_ATT를 DP 가속기에서 호스트 시스템에 전송하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 시스템은 호스트 시스템에서 커널 오브젝트를 식별하는 커널 식별자(ID)를 수신하고, 여기서, 커널 ID는 PK_ATT의 성공적인 검증에 응답하여 수신된다. 시스템은 커널 ID에 응답하여 커널 오브젝트의 실행 가능한 이미지를 해시함으로써 커널 다이제스트를 생성한다. 시스템은 커널 다이제스트 또는 서명된 커널 다이제스트를 호스트 시스템에 전송하여, 호스트 시스템으로 하여금 DP 가속기 내에서 실행될 커널 오브젝트에 액세스하기 전에 커널 오브젝트를 검증하고 인증할 수 있도록 한다.
제10 양태에 따르면, 시스템은 호스트 시스템에서, 데이터 처리(DP) 가속기로부터 DP 가속기를 고유하게 식별하는 가속기 식별자(ID)를 수신하고, 여기서, 호스트 시스템은 버스를 통해 DP 가속기에 연결된다. 시스템은 네트워크를 통해 가속기 ID를 기정된 신뢰할 수 있는 서버에 전송한다. 시스템은 네트워크를 통해 기정된 신뢰할 수 있는 서버로부터 인증서(certificates)를 수신하며, 인증서는 DP 가속기를 인증한다. 선택적으로, 시스템은, 예를 들어, 신뢰할 수 있는 서버에 대한 인증서 체인을 검증함으로써 인증서가 신뢰할 수 있는 서버와 관련되는지를 검증한다. 시스템은 인증서에서 공개 루트 키(PK_RK)를 추출하며, PK_RK는 DP 가속기와 연관된 개인 루트 키(SK_RK)에 대응된다. 시스템은 PK_RK를 이용하여 DP 가속기와의 보안 채널을 구축하여 호스트 시스템과 DP 가속기 사이에서 데이터를 안전하게 교환한다.
도 1은 일부 실시예에 따른 호스트와 데이터 처리(DP) 가속기 사이의 통신 보안을 위한 시스템 구성의 예시를 나타내는 블록도이다. 도 1을 참조하면, 시스템 구성(100)은 네트워크(103)를 통해 DP 서버(104)에 통신 연결되는 하나 또는 다수의 클라이언트 장치(101-102)를 포함하나, 이에 한정되지 않는다. 클라이언트 장치(101-102)는 임의 유형의 클라이언트 장치일 수 있고, 예를 들어, 개인용 컴퓨터(예를 들어, 데스크톱, 랩톱 및 태블릿), "씬(thin)" 클라이언트, 개인용 휴대 단말기(PDA), 웹 지원 기기(Web enabled appliance), 스마트 워치, 또는 휴대폰(예를 들어, 스마트 폰) 등일 수 있다. 선택적으로, 클라이언트 장치(101-102)는 기타 장치일 수 있다. 네트워크(103)는 임의 유형의 네트워크일 수 있고, 예를 들어, 유선 또는 무선의 근거리 통신망(LAN), 인터넷과 같은 광역 통신망(WAN) 또는 이들의 조합일 수 있다.
서버(104; 예를 들어, 호스트)는 임의 종류의 서버 또는 서버 클러스터일 수 있고, 예를 들어, 웹 또는 클라우드 서버, 애플리케이션 서버, 백엔드 서버 또는 이들의 조합일 수 있다. 서버(104)는 클라이언트 장치(101-102)와 같은 클라이언트로 하여금 서버(104)에 의해 제공된 자원 또는 서비스(예를 들어, 서버(104)를 경유하여 DP 가속기에 의해 제공되는 자원 및 서비스)에 액세스할 수 있도록 인터페이스(미도시)를 더 포함한다. 서버(104)는 클라우드 서버일 수 있거나, 클라이언트에 다양한 클라우드 서비스(예를 들어, 클라우드 저장 장치, 클라우드 컴퓨팅 서비스, 기계 학습 트레이닝 서비스, 데이터 마이닝 서비스 등과 같은 클라우드 서비스)를 제공하는 데이터 센터의 서버일 수 있다. 서버(104)는 클라우드(사설 클라우드, 공용 클라우드 또는 하이브리드 클라우드일 수 있음) 상의 SaaS (Software-as-a-Service) 또는 PaaS (Platform-as-a-Service) 시스템의 일부분으로 구성될 수 있다. 인터페이스는 웹 인터페이스, API(Application Programming Interface) 및/또는 CLI(Command Line Interface)를 포함할 수 있다.
예를 들어, 클라이언트, 즉, 본 예시의 클라이언트 장치(101)의 사용자 애플리케이션(예를 들어, 웹 브라우저, 애플리케이션)은 서버(104)로 실행하고자 하는 명령어(예를 들어, 인공 지능(AI) 트레이닝, 추론 명령어 등)를 발송하거나 전송할 수 있고, 해당 명령어는 네트워크(103)를 통해 인터페이스를 경유하여 서버(104)에 의해 수신된다. 해당 명령어에 응답하여, 서버(104)는 DP 가속기(105-107)와 통신하여 명령어의 실행을 완료한다. 일부 실시예에 있어서, 명령어는 기계 학습 유형의 명령어이고, 여기서, DP 가속기는 전용 기계 또는 전용 프로세서로서 서버(104)에 의해 실행되는 것보다 훨씬 빠른 속도로 명령어를 실행할 수 있다. 따라서, 서버(104)는 분산 방식으로 하나 또는 다수의 DP 가속기에 대한 실행 작업을 제어/관리할 수 있다. 이후, 서버(104)는 실행 결과를 클라이언트 장치(101-102)에 반환한다. DP 가속기 또는 AI 가속기는 Baidu, Inc.사의 바이두 인공 지능(AI) 칩셋과 같은 하나 또는 다수의 전용 프로세서를 포함할 수 있거나, 선택적으로, DP 가속기는 NVIDIA, Intel 또는 기타 AI 칩셋 공급 업체의 AI 칩셋일 수 있다.
일 실시예에 따르면, DP 가속기(105-107) 중 임의의 하나에 접속하여 DP 서버(104; 호스트로도 지칭됨)에 의해 호스팅되는 애플리케이션 각각은 애플리케이션이 신뢰할 수 있는 소스 또는 벤더에 의해 제공되는 애플리케이션임을 검증할 수 있다. 각 애플리케이션은 호스트(104)의 중앙 처리 장치(CPU)에 의해 독점적으로 구성되어 실행되는 TEE(Trusted Execution Environment) 내에서 시작되어 실행될 수 있다. 애플리케이션이 DP 가속기(105-107) 중 어느 하나에 액세스하도록 구성될 경우, 호스트(104)와 DP 가속기(105-107) 중의 대응되는 DP 가속기 사이에서 보안 연결이 구축되어, 호스트(104)와 DP 가속기(105-107) 각각 사이에서 교환되는 데이터는 맬웨어의 공격으로부터 보호받는다.
도 2는 일부 실시예에 따른 호스트 시스템과 데이터 처리(DP) 가속기 사이의 통신 보안을 위한 다중 레이어 보호 솔루션의 예시를 나타내는 블록도이다. 일 실시예에 있어서, 시스템(200)은 DP 가속기에 대한 하드웨어 수정 여부와 관계없이 호스트와 DP 가속기 사이의 보안 통신을 위한 보호 방안을 제공한다. 도 2를 참조하면, 호스트 머신 또는 서버(104)는 침입으로부터 보호받을 하나 또는 다수의 계층(예를 들어, 사용자 애플리케이션(203), 런타임 라이브러리(205), 드라이버(209), 운영 체제(211) 및 하드웨어(213; 예를 들어, 보안 모듈(TPM; Trusted Platform Module))/CPU(Central Processing Unit))을 갖는 시스템으로 설명될 수 있다. 호스트 머신(104)은 통상적으로 호스트 시스템 또는 DP 가속기(105-107) 상에서 실행 작업을 제어하고 관리할 수 있는 CPU 시스템이다. DP 가속기와 호스트 머신 사이의 통신 채널의 보안을 위해, 데이터 침입 또는 공격의 영향을 받기 쉬운 호스트 시스템의 다른 계층을 보호하기 위한 다른 구성 요소가 필요하다. 예를 들어, 신뢰할 수 있는 실행 환경(TEE)은 데이터 침입으로부터 사용자 애플리케이션 계층과 런타임 라이브러리 계층을 보호할 수 있다.
도 2를 참조하면, 시스템(200)은 일부 실시예에 따른 호스트 시스템(104) 및 DP 가속기(105-107)를 포함한다. DP 가속기는 바이두 AI 칩셋 또는 AI 집약적 컴퓨팅 작업을 수행할 수 있는 NVIDIA 그래픽 처리 장치(GPU)와 같은 기타 AI 칩셋을 포함한다. 일 실시예에 있어서, 호스트 시스템(104)은 호스트 머신(104) 내에서 보안 모듈(예를 들어, 신뢰할 수 있는 플랫폼 모듈(TPM))이 장착된 하나 또는 다수의 CPU(213)를 구비하는 하드웨어를 포함해야 한다. TPM은 호스트 시스템에 특화된 하드웨어 인증 용 암호화 키(예를 들어, RSA 암호화 키)를 저장하는 엔드 포인트 디바이스 상의 전용 칩이다. 각 TPM 칩은 인돌스먼트 키(EK; endorsement keys) 또는 인돌스먼트 크리덴셜(EC; endorsement credentials; 즉, 루트 키)이라고 하는 하나 또는 다수의 RSA 키쌍(key pairs; 예를 들어, 공개 및 개인 키쌍)을 포함할 수 있다. 키쌍은 TPM 칩 내부에 유지되고 소프트웨어에 의해 액세스될 수 없다. 다음, 펌웨어 및 소프트웨어의 주요 부분은 실행되기 전에 EK 또는 EC에 의해 해싱되어 시스템을 무단 펌웨어 및 소프트웨어 수정으로부터 보호할 수 있다. 호스트 머신 상의 TPM 칩은 보안 부팅을 위한 신뢰의 루트 역할을 할 수 있다.
또한, TPM 칩은 DP 가속기와의 통신을 위해드라이버(209) 및 운영 체제(211; OS)를 작업 커널 공간에 고정한다. 여기서, 드라이버(209)는 DP 가속기 벤더에 의해 제공되며, 호스트와 DP 가속기 사이의 통신 채널을 제어하는 사용자 애플리케이션의 드라이버 역할을 할 수 있다. TPM 칩과 보안 부팅은 커널 공간에서 OS 및 드라이버를 보호하므로, TPM은 또한 드라이버(209) 및 운영 체제(211)를 효과적으로 보호할 수 있다.
DP 가속기(105-107)의 통신 채널은 OS 및 드라이버에 의해 독점적으로 점유될 수 있으므로, 통신 채널은 또한 TPM 칩을 통해 보호된다.
일 실시예에 있어서, 호스트 머신(104)은 TPM/CPU(213)에 의해 강제로 보안되는 신뢰할 수 있는 실행 환경(TEE; 201)을 포함한다. TEE는 보안 환경이다. TEE는 TEE 내부에 로딩된 코드 및 데이터를 보호하여 기밀성 및 무결성을 보호한다. TEE의 예시는 SGX (Intel software guard extensions) 또는 AMD SEV (secure encrypted virtualization)이다. Intel SGX 및/또는 AMD SEV는 사용자 레벨 코드로 하여금 더 높은 권한 레벨에서 실행하는 프로세스로부터 보호받는 CPU 메모리의 개인 영역을 할당할 수 있도록 하는 일련의 중앙 처리 장치(CPU) 명령어 코드를 포함할 수 있다. 여기서, TEE(201)는 사용자 애플리케이션(203) 및 런타임 라이브러리(205)를 보호할 수 있고, 사용자 애플리케이션(203) 및 런타임 라이브러리(205)는 각각 최종 사용자 및 DP 가속기 벤더에 의해 제공될 수 있다. 여기서, 런타임 라이브러리(205)는 API 호출을 DP 가속기의 실행, 구성 및/또는 제어를 위한 명령으로 전환할 수 있다. 일 실시예에 있어서, 런타임 라이브러리(205)는 사용자 애플리케이션에 의해 실행되는 소정의(예를 들어, 미리 정의된) 커널 집합을 제공한다.
다른 일 실시예에 있어서, 호스트 머신(104)은 Rust 및 GoLang 등과 같은 메모리 보안 언어를 이용하여 구현되는 하나 또는 다수의 메모리 보안 애플리케이션(207)을 포함한다. MesaLock Linux와 같은 메모리 보안 Linux 배포판(releases) 상에서 실행되는 이러한 메모리 보안 애플리케이션들은 데이터 기밀성 및 무결성 공격으로부터 시스템(200)을 더욱 보호할 수 있다. 그러나, 운영 체제는 임의의 Linux 배포판, UNIX, Windows OS 또는 Mac OS일 수 있다.
일 실시예에 있어서, 시스템은 다음과 같이 설정될 수 있다. 메모리 보안 Linux 배포판은 TPM 보안 부팅이 장착된 시스템(예를 들어, 도 2의 호스트 시스템(104)) 상에 설치된다. 설치는 제조 또는 준비 단계 동안에 오프라인으로 수행될 수 있다. 설치는 또한 호스트 시스템의 사용자 공간의 애플리케이션이 메모리 보안 프로그래밍 언어를 이용하여 프로그래밍되도록 확보할 수 있다. 호스트 시스템(104) 상에서 실행되는 기타 애플리케이션이 메모리 보안 애플리케이션이 되도록 확보하는 것은 호스트 시스템(104)에 대한 잠재적인 기밀성 및 무결성 공격을 더욱 완화시킬 수 있다.
설치 후, 다음, 시스템은 이어서 TPM 기반의 보안 부팅을 통해 부팅될 수 있다. TPM 보안 부팅은 서명된/인증된 운영 체제와 가속기 드라이버만 가속기 서비스를 제공하는 커널 공간에서 시작되도록 한다. 일 실시예에 있어서, 운영 체제는 하이퍼바이저(hypervisor)를 통해 로딩될 수 있다. 하이퍼바이저 또는 가상 시스템 관리자는 가상 기계를 생성하고 실행하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어이다. 커널 공간은 사용자 애플리케이션에 기능 및 서비스를 제공하도록 커널(즉, 실행을 위해 기정된(예를 들어, 미리 정의된) 기능 집합)이 식별되는 선언 영역 또는 범위임을 유의하여야 한다. 시스템의 무결성이 손상될 경우, TPM 보안 부팅은 부팅되지 않고, 대신에 시스템이 종료될 수 있다.
보안 부팅 후, 런타임 라이브러리(205)는 TEE(201)를 실행하고 생성하고, 따라서, 런타임 라이브러리(205)를 CPU(213)와 연관된 신뢰할 수 있는 메모리 공간에 배치한다. 다음, 사용자 애플리케이션(203)은 TEE(201)에서 시작된다. 일 실시예에 있어서, 사용자 애플리케이션(203)과 런타임 라이브러리(205)는 정적으로 링크되어 함께 시작된다. 다른 일 실시예에 있어서, 런타임(205)은 먼저 TEE에서 시작된 다음, 사용자 애플리케이션(203)은 TEE(201)에서 동적으로 로딩된다. 다른 일 실시예에 있어서, 사용자 애플리케이션(203)은 먼저 TEE에서 시작된 다음, 런타임(205)은 TEE(201)에서 동적으로 로딩된다. 정적으로 링크된 라이브러리는 컴파일 시간에 애플리케이션에 링크된 라이브러리임을 유의하여야 한다. 동적 로딩은 동적 링커에 의해 수행될 수 있다. 동적 링커는 실행 시에 사용자 애플리케이션을 실행하기 위해 공유 라이브러리를 로딩하고 링크한다. 여기서, TEE(201) 내의 사용자 애플리케이션(203) 및 런타임 라이브러리(205)는 런타임에 서로에게 가시적이다. 예를 들어, 모든 프로세스 데이터는 서로에 대하여 가시적이다. 그러나, TEE에 대한 외부 액세스는 거부된다.
다른 일 실시예에 있어서, 사용자 애플리케이션은 런타임 라이브러리(205)에 의해 기정된 한 세트의 커널로부터 커널을 호출할 수 있다. 다른 일 실시예에 있어서, 사용자 애플리케이션(203) 및 런타임 라이브러리(205)는 캐시 기반의 사이드 채널 공격과 같은 사이드 채널 공격을 방어하기 위해 사이드 채널 프리 알고리즘에 의해 강화된다. 사이드 채널 공격은 구현된 알고리즘 자체의 취약점(예를 들어, 암호화 분석 및 소프트웨어 버그)이 아니라, 컴퓨터 시스템의 구현에서 얻은 정보를 기반으로 하는 공격이다. 사이드 채널 공격의 예시에는 가상화된 환경 또는 클라우드 환경에서 공격자가 공유 물리적 시스템의 캐시를 모니터링하는 능력을 기반으로 하는 공격인 캐시 공격이 포함된다. 강화는 캐시에 대한 마스킹, 및 알고리즘에 의해 생성된 출력을 캐시에 배치하는 것을 포함할 수 있다. 다음으로, 사용자 애플리케이션이 실행을 완료할 경우, 사용자 애플리케이션은 실행을 종료하고 TEE를 종료한다.
요약하면, 시스템(200)은 데이터 기밀성 및 무결성의 손실로부터 DP 가속기(예를 들어, 기계 학습 모델, 트레이닝 데이터 및 추론 출력과 같은 데이터의 통신)를 보호하기 위해 다중 보호 계층을 제공한다. 시스템(200)은 TPM 기반의 보안 부팅 보호 계층, TEE 보호 계층 및 커널 확인/검증 계층을 포함할 수 있다. 또한, 시스템(200)은 호스트 머신 상의 기타 애플리케이션이 메모리 보안 프로그래밍 언어를 이용하여 구현되도록 함으로써 메모리 보안 사용자 공간을 제공할 수 있고, 이는 잠재적인 메모리 손상/취약성을 제거함으로써 공격을 추가로 제거할 수 있다. 또한, 시스템(200)은 사이드 채널 프리 알고리즘을 사용하여 캐시 기반의 사이드 채널 공격과 같은 사이드 채널 공격을 방어하는 애플리케이션을 포함할 수 있다.
도 3은 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다. 프로세스(300)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(300)는 도 1의 호스트 시스템(104)과 같은 호스트 시스템에 의해 수행될 수 있다. 도 3을 참조하면, 블록(301)에서, 프로세싱 로직은 호스트 시스템의 보안 모듈(예를 들어, 신뢰할 수 있는 플랫폼 모듈(TPM))을 이용하여 보안 부팅을 수행한다. 블록(302)에서, 프로세싱 로직은 운영 체제(OS) 및 데이터 처리(DP) 가속기와 연관된 가속기 드라이버가 신뢰할 수 있는 소스에 의해 제공되는지를 검증한다. 블록(303)에서, 프로세싱 로직은 OS 내에서 가속기 드라이버를 시작한다. 블록(304)에서, 프로세싱 로직은 호스트 시스템의 CPU와 연관된 신뢰할 수 있는 실행 환경(TEE)을 생성한다. 블록(305)에서, 프로세싱 로직은 TEE 내에서 애플리케이션 및 런타임 라이브러리를 시작하고, 여기서, 애플리케이션은 런타임 라이브러리 및 가속기 드라이버를 경유하여 DP 가속기와 통신한다.
일 실시예에 있어서, 애플리케이션 및 런타임 라이브러리는 정적으로 링크되고 함께 시작된다. 다른 일 실시예에 있어서, 런타임 라이브러리는 TEE에서 시작되고, 애플리케이션은 런타임 라이브러리가 시작된 후 실행을 위해 동적으로 로딩된다. 일 실시예에 있어서, 프로세싱 로직은 호스트 머신 상에서 기타 애플리케이션(즉, 메모리 보안 애플리케이션이)을 더 시작한다. 다른 일 실시예에 있어서, 메모리 보안 애플리케이션은 하나 또는 다수의 메모리 보안 프로그래밍 언어로 구현된다. 일 실시예에 있어서, 런타임 라이브러리는 애플리케이션에 의해 시작될 기정된 커널 집합을 제공하여 DP 가속기에 의해 태스크를 실행한다. 일 실시예에 있어서, 프로세싱 로직은 캐시 기반의 사이드 채널 공격을 방어하기 위해 사이드 채널 프리 알고리즘을 이용하여 TEE에서 실행되는 애플리케이션 및 런타임 라이브러리를 더욱 강화시킨다.
도 4는 일 실시예에 따른 I/O 관리자를 구비하는 호스트의 예시를 나타내는 블록도이다. 시스템(400)은 호스트와 DP 가속기 사이의 보안 통신을 위한 보호 방안을 제공하는, 도 2의 시스템(200)을 표시할 수 있다. 도 4를 참조하면, 일 실시예에 있어서, 호스트 시스템(104)의 TEE(201)는 I/O 관리자(401)를 포함한다. 일 실시예에 있어서, DP 가속기(405-407)는 I/O 인터페이스(415-417)를 포함한다. I/O 인터페이스(415-417)는 각각 호스트가 DP 가속기의 메모리에 직접 액세스하는 것을 차단, 금지 또는 거부한다. 한편, I/O 관리자(401)는 DP 가속기가 호스트의 일부 메모리 블록에만 액세스하도록 한다.
종래의 DP 가속기는 호스트 머신에 DP 가속기의 전체 글로벌 메모리에 대한 액세스 권한을 부여하는 I/O 인터페이스를 갖는다. 실제로, 악의적인 애플리케이션은 DP 가속기의 글로벌 메모리 중의 메모리 버퍼를 훔치거나 변경하기 위해 이러한 권한을 남용할 수 있다. 이러한 기술적 문제를 해결하기 위해, 본 개시의 실시예는 DP 가속기의 메모리 시스템에 대한 액세스를 금지하는 통신 프로토콜을 구현한다. 예를 들어, 호스트 시스템은 명령을 발송하기 위해 명령 채널을 통해서만 DP 가속기와 통신할 수 있으며, DP 가속기는 데이터 채널을 통해 통신하여, 호스트 머신의 I/O 관리자를 통해 호스트 시스템으로부터 데이터를 판독하거나 데이터를 호스트 시스템에 기록할 수 있다. 따라서, I/O 관리자는 DP 가속기에 의한 데이터 액세스를 추가로 특성화할 수 있고, DP 가속기로 하여금 호스트 시스템의 제한된 메모리 범위에만 액세스하도록 할 수 있다.
설명을 위해, DP에 의해 수행되는 예시적인 연산은 덧셈 연산(예를 들어, 1 + 2 = 3)일 수 있다. 이러한 경우, 덧셈 연산이 수행되기 전에, DP 가속기의 메모리 주소에 액세스할 수 있는 호스트 시스템은 복수의 데이터 준비 명령어를 원격으로 발송하여 데이터를 DP 가속기의 메모리 버퍼에 로딩할 수 있다.
그러나, DP 가속기에 대한 메모리 액세스가 없는 호스트 시스템은 가속기의 메모리 주소를 참조할 수 없고, 데이터 준비 동작을 위한 다른 세트의 프로세서 명령어를 발송해야 한다. 이어서, DP 가속기는 호스트 머신으로부터 데이터 판독을 진행함으로써 데이터(예를 들어, 덧셈 명령어의 피연산자)를 획득하기 위한 후속 명령어를 발송한다. 여기서, DP 가속기의 메모리 주소는 호스트 시스템에 보이지 않는다.
도 5는 일부 실시예에 따른 DP 가속기와 통신하는 I/O 관리자의 예시를 나타내는 블록도이다. 시스템(500)은 도 4의 시스템(400)의 상세한 도면일 수 있다. 도 5를 참조하면, 일 실시예에 있어서, I/O 관리자(401)는 명령 생성부(501), 맵드 메모리(503; mapped memory) 및 액세스 제어 리스트(ACL) 모듈(505)을 포함한다. I/O 관리자(401)는 드라이버(209)에 통신 연결될 수 있고, 드라이버(209)는 ACL 맵(507; 예를 들어, IO MMU)을 포함할 수 있다. 명령 생성부(501)는 DP 가속기에 발송될 명령을 생성할 수 있다. 맵드 메모리(503)는 호스트 서버(104)의 복수의 메모리 영역을 포함할 수 있고, 메모리 영역은 각 DP 가속기에 매핑된다. 맵드 메모리(503)는 호스트 서버(104)의 메모리(예를 들어, 도 4의 하드웨어(213)의 일부분)일 수 있다. ACL 모듈(505)은 대응되는 DP 가속기에 대한 로직 테이블에 따라 호스트 서버(104)의 대응되는 맵드 메모리 영역에 대한 액세스를 제어(예를 들어, 허용 또는 거부)할 수 있다. ACL 맵(507)은 도 6에 도시된 바와 같이 메모리(503)의 상이한 메모리 영역을 DP 가속기에 매핑하는 매핑 테이블을 포함할 수 있다. 여기서, 도 6은 일 실시예에 따라 DP 가속기 1이 하나 이상의 영역(예를 들어, 영역 1 ?? 11)에 매핑되고, DP 가속기 2가 영역 12에 매핑되는 것을 나타낸다. 예를 들어, 각 DP 가속기는 복수의 메모리 영역에 매핑될 수 있다.
예를 들어, 일 실시예에 있어서, DP 가속기는 호스트 서버의 메모리 위치(예를 들어, 맵드 메모리(503))에 직접 액세스할 수 없다. 그러나, ACL 맵(507)이 액세스될 메모리 영역(들)에 매핑된 DP 가속기의 엔트리를 포함할 경우, DP 가속기는 (ACL 모듈(505)을 통해) 호스트 서버의 메모리 영역에 액세스할 수 있다. 일 실시예에 있어서, DP 가속기가 호스트 시스템(104)에 추가될 경우, 예를 들어, 호스트 시스템(104)이 새로운 DP 가속기가 연결되었음을 발견할 경우, ACL 모듈(505)은 DP 가속기에 식별자를 할당하고, DP 가속기에 대응되는 ACL 맵(507) 상에 엔트리를 삽입하며, 및/또는 DP 가속기를 위해 메모리(503; 예를 들어, 도 4의 하드웨어(213)의 일부분인 호스트 서버(104)의 메모리)에서 이용 가능한 메모리 블록을 보류(reserve)하거나 할당한다. 일 실시예에 있어서, ACL 모듈(505)은 DP 가속기로 알림을 전송하여 DP 가속기에 이용 가능한 메모리 블록을 통보할 수 있다. 일 실시예에 있어서, DP 가속기 식별자는 생성된 GUID/UUID(범용 고유 식별자), MAC 주소, DP 가속기와 연관된 IP 주소, 또는 이들의 조합일 수 있다. 일부 실시예에 있어서, 호스트 시스템은 복수의 DP 가속기에 연결된다. 일 실시예에 있어서, DP 가속기가 호스트 시스템(104)에서 해제될 경우, 예를 들어, 호스트 시스템(104)이 기존 DP 가속기가 더 이상 호스트 서버(104)에 연결되지 않음을 발견할 경우, ACL 모듈은 DP 가속기에 대응되는 ACL 맵(507)에서 엔트리를 제거할 수 있고, 및/또는 DP 가속기에 대응되는 메모리(503)로부터 메모리 블록의 할당을 해제할 수 있다.
도 5를 참조하면, 일 실시예에 있어서, DP 가속기(405)의 I/O 인터페이스(415)는 제어 레지스터(511) 및 명령 디코더(513)와 같은 모듈을 포함한다. 제어 레지스터(511)는 실행 유닛(517) 및/또는 글로벌 메모리의 성능을 제어할 수 있다. 명령 디코더(513)는 DP 가속기(405)에 의해 수신된 명령을 디코딩할 수 있다. 일 실시예에 있어서, DP 가속기(405)는 IO 관리자(401)로부터 데이터를 획득하기 위한 명령을 판독하고 상기 명령어를 IO 관리자(401)에 기록하는 명령 등과 같은 후속 명령을 발송하여 요청된 명령을 완료할 수 있다.
도 7은 일 실시예에 따른 호스트와 DP 가속기 사이의 예시적인 통신을 나타내는 블록도이다. 동작(700)은 호스트 서버(104) 및/또는 DP 가속기(405)에 의해 수행될 수 있다. 도 7을 참조하면, 동작(701)에서, 호스트 서버(104)는 명령 채널을 경유하여 DP 가속기에 의해 처리되도록 데이터 준비 명령 요청(예를 들어, 데이터 준비 동작을 수행하는 데이터 준비 명령어)을 DP 가속기(405)에 발송한다. 동작(702)에서, DP 가속기(405)는 요청된 명령을 디코딩하여, 명령의 유형이 데이터 준비 동작 명령임을 결정한다.
요청된 명령을 완료하도록 호스트 서버(104)로부터의 데이터가 필요한 것으로 결정될 경우, 동작(703)에서, DP 가속기(405)는 호스트 메모리로부터의 데이터에 대한 판독 액세스(예를 들어, 판독 동작)를 요청하고, 여기서, 데이터는 호스트 시스템의 제1 메모리 위치(예를 들어, 도 5의 맵드 메모리(503))에 있을 수 있다. 동작(704)에서, 판독 액세스 요청을 수신하는 것에 응답하여, 호스트 서버(104)는 요청하는 DP 가속기 및 요청되는 호스트 서버(104) 상의 메모리 영역(예를 들어, 제1 메모리 위치)을 식별하고, ACL 맵을 조회하여 DP 가속기가 요청된 메모리 영역에 대한 액세스 권한을 구비하는지 여부를 결정한다.
예를 들어, 호스트 서버(104)는 DP 가속기와 연관된 식별자를 통해 DP 가속기에 대한 ACL 맵을 조회할 수 있다. 조회 결과 엔트리가 존재할 경우, 호스트 서버(104)는 결과 엔트리로부터 요청된 메모리 위치가 메모리 영역 내에 있는지 여부를 결정할 수 있다. 메모리 영역 내에 있는 것으로 결정될 경우, DP 가속기(405)는 판독/기록 액세스 권한을 구비한다. DP 가속기가 메모리 영역에 대한 판독 액세스 권한을 구비하는 것으로 결정될 경우, 동작(705)에서, 호스트 서버(104)는 요청된 데이터를 데이터 채널을 통해 반환한다. DP 가속기가 판독 액세스 권한을 구비하지 않는 것으로 결정될 경우, 호스트 서버(104)는 판독 실패에 대한 알림을 DP 가속기(405)에 발송할 수 있다.
동작(706)에서, 호스트 서버(104)는 DP 명령 또는 컴퓨팅 또는 구성 명령 또는 DP 명령어를 발송한다. 동작(707)에서, DP 가속기(405)는 DP 명령 또는 DP 동작을 처리한다. 동작(708)에서, 요청된 명령이 완료될 경우, DP 가속기(405)는 완료 결과를 DP 가속기(405)의 글로벌 메모리(예를 들어, 도 5의 글로벌 메모리(515))에 저장한다. DP 가속기(405)는 이어서 데이터 채널을 경유하여 완료 결과를 기록 요청으로서 호스트 서버(104)에 발송한다. 동작(709)에서, 호스트 서버(104)는 DP 가속기 및 기록 액세스를 위해 요청된 메모리 영역(예를 들어, 제2 메모리 위치)을 식별하고, ACL 맵을 조회하여 DP 가속기가 요청된 메모리 영역에 대한 기록 액세스 권한을 구비하는지 여부를 결정한다.
DP 가속기가 기록 액세스 권한을 구비하는 것으로 결정될 경우, 동작(710)에서, 호스트 서버(104)는 결과를 요청된 메모리 위치에 저장한다. 동작(711)에서, 호스트 서버(104)는 이어서 결과가 성공적으로 수신됨에 따라 확인을 발송할 수 있다. DP/컴퓨팅 명령은 DP 가속기에 의해 처리될 데이터 처리 동작(들)에 대한 명령을 의미함을 유의하여야 한다. 구성 명령은 DP 가속기 구성에 대한 명령을 의미한다. 데이터 준비 명령은 (예를 들어, 호스트 서버에서 DP 명령을 위한 피연산자와 같은 데이터를 포획하는) 데이터 준비 동작에 대한 명령을 의미한다.
도 8a 및 도 8b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다. 프로세스(800) 및 프로세스(820)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(800)는 도 4의 호스트 시스템(예를 들어, I/O 관리자(401))에 의해 수행될 수 있고, 프로세스(820)는 도 4의 DP 가속기(예를 들어, I/O 인터페이스(415))에 의해 수행될 수 있다. 도 8a를 참조하면, 블록(801)에서, 프로세싱 로직은 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 보안 연결을 구축하며, 보안 연결은 하나 또는 다수의 데이터 채널을 포함한다. 다른 일 실시예에 있어서, 보안 연결은 하나 또는 다수의 명령 채널을 포함한다. 블록(802)에서, 프로세싱 로직은 하나의 명령 채널을 통해 제1 명령어를 호스트 시스템으로부터 DP 가속기에 전송하며, 제1 명령어는 DP 가속기가 데이터 준비 동작을 수행하도록 요청한다. 블록(803)에서, 프로세싱 로직은 제1 명령어에 응답하여, 하나의 데이터 채널을 통해 DP 가속기로부터, 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신한다. 블록(804)에서, 제1 요청에 응답하여, 프로세싱 로직은 데이터 채널을 통해 호스트 시스템의 제1 메모리 위치로부터 검색된 제1 데이터를 DP 가속기에 전송하고, 여기서, 제1 데이터는 계산 또는 구성 동작에 이용된다. 블록(805)에서, 프로세싱 로직은 명령 채널을 통해 제2 명령어를 호스트 시스템으로부터 DP 가속기에 전송하며, 제2 명령어는 DP 가속기가 계산 또는 구성 동작을 수행하도록 요청한다.
일 실시예에 있어서, 프로세싱 로직은 제1 요청을 더 검사하여 DP 가속기가 호스트 시스템의 제1 메모리 위치로부터 판독할 권한이 있는지 여부를 결정하고, DP 가속기가 제1 메모리 위치로부터 판독할 권한이 있는 것으로 결정되면, DP 가속기가 제1 메모리 위치로부터 판독할 수 있도록 허용한다. 일 실시예에 있어서, DP 가속기는 호스트 시스템의 제1 메모리 위치에 대한 직접적인 액세스가 허용되지 않는다. 일 실시예에 있어서, DP 가속기는 호스트 시스템에 연결된 복수의 DP 가속기 중의 하나이다.
일 실시예에 있어서, 프로세싱 로직은 데이터 채널을 통해 DP 가속기로부터 제2 데이터를 기록하기 위한 제2 요청을 더 수신하고, 여기서, 제2 데이터는 호스트 시스템의 제2 메모리 위치에 기록될 수 있다. 제2 요청에 응답하여, 프로세싱 로직은 호스트 시스템의 제2 메모리 위치에 제2 데이터를 저장한다. 다른 일 실시예에 있어서, 프로세싱 로직은 제2 요청을 더 검사하여 DP 가속기가 호스트 시스템의 제2 메모리 위치에 기록할 권한이 있는지 여부를 결정한다. DP 가속기가 제2 메모리 위치에 기록할 권한이 있는 것으로 결정되면, 프로세싱 로직은 DP 가속기가 제2 메모리 위치에 기록할 수 있도록 허용한다. 다른 일 실시예에 있어서, 제2 데이터는 명령어에 응답하는 계산 또는 구성 동작의 결과의 적어도 일부분을 표시한다.
도 8b를 참조하면, 일 실시예에 있어서, 블록(821)에서, 프로세싱 로직은 버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 보안 연결을 구축하며, 보안 연결은 하나 또는 다수의 명령 채널 및/또는 하나 또는 다수의 데이터 채널을 포함한다. 블록(822)에서, 프로세싱 로직은 DP 가속기에서, 명령 채널을 통해 호스트 시스템으로부터 제1 명령어를 수신하며, 제1 명령어는 DP 가속기가 데이터 준비 동작을 수행하도록 요청한다. 블록(823)에서, 제1 명령어에 응답하여, 프로세싱 로직은 데이터 채널을 통해 DP 가속기로부터 호스트 시스템에 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 전송한다. 블록(824)에서, 프로세싱 로직은 데이터 채널을 통해 호스트 시스템으로부터 제1 데이터를 수신하고, 여기서, 제1 데이터는 호스트 시스템에 의해 호스트 시스템의 제1 메모리 위치로부터 검색된다. 블록(825)에서, 프로세싱 로직은 명령 채널을 통해 호스트 시스템으로부터 제2 명령어를 수신하며, 제2 명령어는 DP 가속기가 계산 또는 구성 동작을 수행하도록 요청한다. 블록(826)에서, 프로세싱 로직은 적어도 제1 데이터에 기반하여 계산 또는 구성 동작을 수행한다.
일 실시예에 있어서, 호스트 시스템은 제1 요청을 검사하여 DP 가속기가 호스트 시스템의 제1 메모리 위치로부터 판독할 권한이 있는지 여부를 결정할 수 있고, 여기서, 호스트 시스템은 DP 가속기가 제1 메모리 위치로부터 판독할 권한이 있는 것으로 결정되면, DP 가속기가 제1 메모리 위치로부터 판독할 수 있도록 허용할 수 있다. 다른 일 실시예에 있어서, DP 가속기는 호스트 시스템의 제1 메모리 위치에 대한 직접적인 액세스가 허용되지 않는다. 다른 일 실시예에 있어서, DP 가속기는 호스트 시스템에 연결된 복수의 DP 가속기 중의 하나이다.
다른 일 실시예에 있어서, 프로세싱 로직은 데이터 채널을 통해 제2 요청을 DP 가속기로부터 호스트 시스템에 더 전송하여 제2 데이터를 호스트 시스템의 제2 메모리 위치에 기록하고, 여기서, 제2 데이터는 계산 또는 구성 동작의 결과의 적어도 일부분을 표시한다. 다른 일 실시예에 있어서, 호스트 시스템은 제2 요청을 검사하여 DP 가속기가 호스트 시스템의 제2 메모리 위치에 기록할 권한이 있는지 여부를 결정할 수 있고, 여기서, 호스트 시스템은 DP 가속기가 제2 메모리 위치에 기록할 권한이 있는 것으로 결정되면, DP 가속기가 제2 메모리 위치에 기록할 수 있도록 허용할 수 있다.
도 9는 일 실시예에 따른 호스트 채널 관리자를 구비하는 호스트의 예시를 나타내는 블록도이다. 시스템(900)은 도 2의 시스템(200)을 표시함으로써, 호스트와 하나 또는 다수의 DP 가속기 사이의 정보 교환 채널을 확보하는 보호 방안을 제공할 수 있다. 도 9를 참조하면, 일 실시예에 있어서, 호스트 시스템(104)은 호스트 채널 관리자(901; HCM)를 포함하는 런타임 라이브러리(205)를 포함한다. 이에 대응하여, DP 가속기(405-407) 각각은 가속기 채널 관리자(915-917; ACM)를 포함한다. HCM 및 ACM은 암호화 키의 생성을 지원하여 호스트 시스템(104)과 DP 가속기(405-407) 사이의 비대칭(예를 들어, RSA) 및/또는 대칭(예를 들어, AES) 암호화 기반의 정보 교환 채널을 설정한다. 여기서, DP 가속기(405-407)는 도 2의 DP 가속기(205-207)일 수 있다.
도 10은 일부 실시예에 따른 하나 또는 다수의 가속기 채널 관리자(ACM)에 통신 연결되는 호스트 채널 관리자(HCM)의 예시를 나타내는 블록도이다. 시스템(1000)은 도 9의 시스템(900)의 상세한 도면일 수 있다. 도 10을 참조하면, 일 실시예에 있어서, HCM(901)은 인증 모듈(1001), 종료 모듈(1003), 키 관리자(1005), 키 스토어(1007) 및 암호화 엔진(1009)을 포함한다. 인증 모듈(1001)은 호스트 서버(104) 상에서 실행되는 사용자 애플리케이션을 인증하여 DP 가속기의 리소스에 액세스하거나 DP 가속기의 리소스를 이용하도록 허락할 수 있다. 종료 모듈(1003)은 연결을 종료할 수 있고, 예를 들어, 연결과 연관된 채널을 종료할 수 있다. 키 관리자(1005)는 다른 보안 데이터 교환 채널의 하나 또는 다수의 데이터 패킷을 암호화/복호화하기 위해 비대칭 키쌍 또는 대칭 키를 관리(예를 들어, 생성 또는 파괴)할 수 있다. 여기서, 각 사용자 애플리케이션(도 9의 사용자 애플리케이션(203)의 일부분임)은 일대다 관계로 다른 보안 데이터 교환 채널에 대응되거나 매핑될 수 있고, 각 데이터 교환 채널은 DP 가속기에 대응될 수 있다. 일 실시예에 따라, 채널/세션 키를 이용하여 채널에 매핑되는 사용자 애플리케이션의 예시는 도 11에 나타날 수 있다. 여기서, 애플리케이션 1은 채널 세션 키 1-11에 매핑되고, 여기서, 각 세션 키는 DP 가속기(예를 들어, 11 개의 DP 가속기)에 대응되는 보안 채널에 대한 것이며; 애플리케이션 2는 채널 세션 키 12에 매핑되고, 키 12는 특정 DP 가속기에 대응된다. 키 스토어(1007)는 암호화 비대칭 키쌍 또는 대칭 키를 저장할 수 있다. 암호화 엔진(1009)은 보안 채널 중의 임의 하나를 통해 교환된 데이터에 대한 데이터 패킷을 암호화 또는 복호화할 수 있다. 이러한 모듈 중의 일부는 더 적은 모듈로 집적될 수 있음을 유의하여야 한다.
도 10을 참조하면, 일 실시예에 있어서, DP 가속기(405)는 ACM(915) 및 보안 유닛(1020; SU)을 포함한다. 보안 유닛(1020)은 키 관리자(1025), 키 스토어(1027) 및 암호화 엔진(1029)을 포함할 수 있다. 키 관리자(1025)는 비대칭 키쌍 또는 대칭 키를 관리(예를 들어, 생성, 보관 및/또는 파괴)할 수 있다. 키 스토어(1027)는 암호화 비대칭 키쌍 또는 대칭 키를 저장할 수 있다. 암호화 엔진(1029)은 데이터 교환을 위해 키 정보 또는 데이터 패킷을 암호화 또는 복호화할 수 있다. 일부 실시예에 있어서, ACM(915) 및 SU(1020)는 집적 모듈이다.
도 12a 및 도 12b는 일 실시예에 따른 호스트와 DP 가속기 사이의 보안 정보 교환의 예시를 나타내는 블록도이다. 예시(1200)는 도 10의 시스템(1000)에 의해 수행될 수 있다. 도 10, 도 12a 및 도 12b를 참조하면, 일 실시예에 있어서, 임의의 데이터 통신이 DP 가속기(예를 들어, DP 가속기(405))와 호스트 서버(104) 상에 호스팅되고 DP 가속기 자원을 요청하는 애플리케이션 사이에서 진행되기 전에, 확보된 정보 교환 채널은 호스트 서버(104)와 DP 가속기 사이에서 설정되거나 구축될 수 있다. 정보 교환 채널 설정은 호스트 서버(104)의 사용자 애플리케이션에 의해 시작될 수 있다. 예를 들어, 사용자 애플리케이션(예를 들어, 도 9의 애플리케이션(203)의 사용자 애플리케이션)은 HCM(901)이 보안 데이터 교환 채널을 설정하도록 요청할 수 있다. 인증 모듈(1001)은 요청을 수신하고 사용자 애플리케이션이 신뢰할 수 있는 애플리케이션인 것을 인증할 수 있다. 일 실시예에 있어서, 인증 모듈(1001)은 사용자 애플리케이션 또는 클라이언트가 사용자 애플리케이션에 액세스하는 권한을 검증하고, 예를 들어, 사용자 애플리케이션 또는 클라이언트가 요청된 DP 가속기(들)로부터의 자원을 이용하는 권한을 구비하는지 여부를 검증한다. 사용자 애플리케이션 또는 클라이언트가 허락될 경우, 정보는 세션 키의 방식으로 보안 채널을 통해 사용자 애플리케이션과 DP 가속기 사이에서 교환될 수 있고, 따라서, 정보 교환가 암호화 및 복호화될 수 있다.
일 실시예에 있어서, 세션 키를 생성하기 위해, HCM(901)은 애플리케이션 및/또는 채널과 연관된 제1 공개/개인 키쌍을 생성하거나, 또는 제1 공개/개인 키쌍은 HCM(901)과 연관된 키쌍일 수 있다. 제1 공개/개인 키쌍은 키 스토어(1007)에 저장될 수 있고, 제1 공개 키는 DP 가속기(405; 또는 ACM(915))에 전송된다(예를 들어, 동작(1201)). 다음, ACM(915)은 세션을 위한 고유 세션 키(예를 들어, 제2 세션 키)를 생성하고(예를 들어, 동작 1202), 여기서, 세션 키는 호스트 서버(104)와 통신하는 데이터 패킷의 암호화/복호화에 이용될 수 있다(예를 들어, 동작(1205) 내지 동작(1216)). 일 실시예에 있어서, 세션 키는 순환 중복 검사, 체크섬 또는 암호화 해시 함수 또는 랜덤 해시/난수 생성부와 같은 해시 함수에 기반하여 도출된(또는 생성된) 대칭 키이다.
일 실시예에 있어서, ACM(915)이 제1 공개 키를 수신할 경우, ACM(915)은 채널에 대한 제2 공개/개인 키쌍을 생성하고, 여기서, 제2 공개/개인 키쌍의 제2 개인 키 및 제1 공개 키는 세션 키 또는 세션 키의 구성 요소를 암호화하는데 이용된다. 다른 일 실시예에 있어서, 제2 공개/개인 키쌍은 DP 가속기(405)와 연관된 키쌍이다. 일 실시예에 있어서, 제1 공개 키, 제2 공개 키, 제2 개인 키 및/또는 세션 키는 키 스토어(1027)에 저장될 수 있다. 이어서, 세션 키(또는 그의 구성 요소)는 제1 공개 키에 의해 암호화될 수 있고, 암호화된 세션 키는 제2 개인 키에 의해 더 암호화(예를 들어, 이중 암호화)될 수 있고, 이중으로 암호화된 세션 키 정보는 제2 공개 키와 함께 HCM(901)에 전송될 수 있다(예를 들어, 동작(1203)).
다음, HCM(901)의 키 관리자(1005)는 제2 공개 키 및 제1 개인 키(예를 들어, 동작 1204)에 기반하여 상기 암호화된 세션 키를 복호화하여, 세션 키를 도출(예를 들어, 제1 세션 키를 생성)할 수 있다. 다음, DP 가속기로부터 호스트 서버(104)에 전달된 데이터, 또는 그 반대 동작(예를 들어, 동작(1205-1216))은 대칭 세션 키를 이용하여 데이터를 암호화하고 복호화하여 통신을 진행할 수 있다. 예를 들어, 데이터는 암호화된 후 발신자에 의해 정보 교환 채널을 통해 발송된다. 수신된 데이터는 수신자에 의해 복호화될 수 있다. 여기서, 호스트 서버(104) 및 DP 가속기(405)는 데이터 패킷들을 암호화하고 복호화하는 동일한 대칭 세션 키를 구비하므로, 호스트 서버(104) 및 DP 가속기(405)는 이 데이터 패킷들을 판독할 수 있다.
일 실시예에 있어서, 호스트 서버(104; 예를 들어, HCM(901))는 DP 가속기(405; 예를 들어, ACM(915))의 메모리 버퍼에 직접 액세스할 수 없으나, DP 가속기는 호스트 서버(104)의 메모리 버퍼에 액세스할 수 있다. 따라서, 동작(1205-1211)은 암호화된 데이터 패킷을 호스트 서버(104)로부터 DP 가속기(405)에 발송하는 동작이고, 동작(1212-1216)은 암호화된 데이터 패킷을 DP 가속기(405)로부터 호스트 서버(104)에 발송하는 동작이다. 여기서, 동작(1206-1210)은 호스트 서버(104)가 데이터 패킷을 DP 가속기(405)에 제공하는 도 7의 동작(701-705)과 유사하다.
마지막으로, 애플리케이션이 세션에 대한 완료를 시그널링할 경우, 애플리케이션은 HCM(901)이 세션을 종료하도록 요청할 수 있다. 다음, 종료 모듈(1003)은 키 관리자(1005)가 동작(1215)의 일부분으로서의 세션과 연관된 세션 키(예를 들어, 제1 세션 키)를 파괴하도록 요청하고, DP 가속기(405)의 ACM(915)에 종료 알림(예를 들어, 동작(1216))를 발송하여 키 관리자(1025)가 세션과 연관된 대칭 세션 키(예를 들어, 제2 세션 키)를 파괴하도록 요청할 수 있다. 비록 HCM(901)은 ACM(915)과만 통신하는 것으로 도시되었으나, HCM(901)은 다수의 DC 가속기에 대응되는 다수의 ACM과 통신하여 동시에 다수의 데이터 교환 연결을 구축할 수 있다.
도 13a 및 도 13b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다. 프로세스(1300) 및 프로세스(1320)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(1300)는 도 9의 호스트 시스템(예를 들어, HCM(901))에 의해 수행될 수 있고, 프로세스(1320)는 도 9의 DP 가속기(예를 들어, ACM(915))에 의해 수행될 수 있다. 도 13a를 참조하면, 블록(1301)에서, 프로세싱 로직은 호스트 시스템의 호스트 채널 관리자 (HCM)에서, 애플리케이션으로부터 요청을 수신하여 데이터 처리(DP) 가속기와의 보안 채널을 구축하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 블록(1302)에서, 요청에 응답하여, 프로세싱 로직은 HCM과 연관된 제1 키쌍의 제1 개인 키 및 DP와 연관된 제2 키쌍의 제2 공개 키에 기반하여 보안 채널에 대한 제1 세션 키를 생성한다. 블록(1303)에서, DP 가속기에 발송될 애플리케이션과 연관된 제1 데이터에 응답하여, 프로세싱 로직은 제1 세션 키를 이용하여 제1 데이터를 암호화한다. 블록(1304)에서, 프로세싱 로직은 버스를 통해 보안 채널을 경유하여 암호화된 제1 데이터를 DP 가속기에 전송한다.
일 실시예에 있어서, 요청에 응답하여, 프로세싱 로직은 HCM과 연관된 제1 키쌍의 제1 공개 키를 DP 가속기에 전송한다. 다음, 프로세싱 로직은 제1 공개 키의 전송에 응답하여, DP 가속기의 가속기 채널 관리자(ACM)으로부터 DP 가속기와 연관된 제2 키쌍의 제2 공개 키를 수신한다. 다른 일 실시예에 있어서, ACM은 제2 세션 키를 도출하고, 암호화된 제2 세션 키를 HCM에 발송하기 전에 제1 공개 키 및 제2 키쌍의 제2 개인 키에 기반하여 제2 세션 키를 암호화하도록 구성되고, 여기서, 제1 세션 키와 제2 세션 키는 동일한 대칭 키이다. 다른 일 실시예에 있어서, ACM은 제2 세션 키를 이용하여 암호화된 제1 데이터를 복호화하여 제1 데이터를 복구하도록 구성된다.
일 실시예에 있어서, 프로세싱 로직은 DP 가속기의 ACM에서 암호화된 제2 데이터를 더 수신하고, 여기서, 제2 데이터는 제2 세션 키를 이용하여 암호화된다. 다음, 프로세싱 로직은 제1 세션 키를 이용하여 암호화된 제2 데이터를 복호화하여 제2 데이터를 복구한다. 일 실시예에 있어서, 요청에 응답하여, 프로세싱 로직은 애플리케이션의 애플리케이션 식별자(ID)를 더 검사하여 애플리케이션이 DP 가속기에 액세스할 권리가 있는지 여부를 결정하고, 여기서, 제1 세션 키는 애플리케이션이 DP 가속기에 액세스할 권리가 있는 경우에만 생성된다. 일 실시예에 있어서, 프로세싱 로직은 애플리케이션에서 보안 채널을 종료하는 요청을 더 수신한다. 요청에 응답하여, 프로세싱 로직은 제2 세션 키를 파괴함으로써 ACM이 보안 연결을 종료하도록 지시하는 명령어를 ACM에 전송한다. 다음, 프로세싱 로직은 HCM에 의해 제1 세션 키를 파괴한다.
도 13b를 참조하면, 일 실시예에 있어서, 블록(1321)에서, 프로세싱 로직은 DP 가속기의 가속기 채널 관리자(ACM)에서, 호스트 시스템의 호스트 채널 관리자(HCM)의 애플리케이션으로부터 요청을 수신하여 호스트 시스템과 DP 가속기 사이에서 보안 채널을 구축하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 블록(1322)에서, 요청에 응답하여, 프로세싱 로직은 보안 채널에 대한 제2 세션 키를 생성하고, 암호화된 제2 세션 키 정보를 HCM에 발송하기 전에 DP 가속기와 연관된 제2 키쌍의 제2 개인 키 및 HCM과 연관된 제1 키쌍의 제1 공개 키에 기반하여 제2 세션 키의 정보를 암호화한다. 블록(1323)에서, 호스트 시스템에 발송될 제1 데이터에 응답하여, 프로세싱 로직은 제2 세션 키를 이용하여 제1 데이터를 암호화한다. 블록(1324)에서, 프로세싱 로직은 보안 채널을 경유하여 암호화된 제1 데이터를 호스트 시스템의 HCM에 전송한다.
일 실시예에 있어서, 요청에 응답하여, 프로세싱 로직은 DP 가속기와 연관된 제2 키쌍의 제2 공개 키를 호스트 시스템의 HCM에 전송하고, HCM으로부터 HCM과 연관된 제1 키쌍의 제1 공개 키를 수신한다. 다른 일 실시예에 있어서, HCM은 HCM과 연관된 제1 키쌍의 제1 개인 키 및 DP 가속기와 연관된 제2 키쌍의 제2 공개 키에 기반하여 제1 세션 키를 도출하도록 구성된다. 다른 일 실시예에 있어서, HCM은 제1 세션 키를 이용하여 암호화된 제1 데이터를 복호화하여 제1 데이터를 복구하도록 구성된다.
다른 일 실시예에 있어서, 프로세싱 로직은 호스트 시스템의 HCM으로부터 암호화된 제2 데이터를 더 수신하고, 여기서, 제2 데이터는 제1 세션 키를 이용하여 암호화된다. 다음, 프로세싱 로직은 제2 세션 키를 이용하여 암호화된 제2 데이터를 복호화하여 제2 데이터를 복구하고, 여기서, 제1 세션 키와 제2 세션 키는 동일한 대칭 키이다. 일 실시예에 있어서, 프로세싱 로직은 호스트 시스템의 HCM으로부터 보안 채널을 종료하는 요청을 더 수신하고, 이러한 요청에 응답하여, 프로세싱 로직은 ACM에 의해 제1 세션 키를 파괴한다.
도 14는 일 실시예에 따른 호스트 채널 관리자(HCM)와 가속기 채널 관리자(ACM) 사이에서 보안 정보 교환 채널을 구축하기 위한 예시적인 시스템을 나타내는 블록도이다. 시스템(1400)은 도 9의 시스템(900)의 상세한 도면일 수 있다. 도 14를 참조하면, 일 실시예에 있어서, HCM(901)은 키(PK_O; 1401), 키(SK_O; 1403) 및 키(PK_RK; 1411)를 포함한다. 키 PK_O(1401) 및 키 SK_O(1403)는 각각 호스트 서버(104)의 HCM(901) 및/또는 애플리케이션/런타임과 연관된 비대칭 암호화 키쌍의 공개 키 및 개인 키이며, 키 PK_RK(1411)는 DP 가속기(405) 및/또는 기타 DP 가속기의 ACM(915)과 연관된 하나 또는 다수의 공개 키이다. HCM(901)은 키 관리자(1005)를 더 포함할 수 있다. DP 가속기(405)는 ACM(915)에 연결된 보안 유닛(1020)을 포함할 수 있고, 여기서, 보안 유닛(1020)은 키 PK_RK(1413) 및 키 SK_RK(1415)를 포함할 수 있으며, PK_RK(1413) 및 SK_RK(1415)는 각각 ACM(915) 및/또는 DP 가속기(405)와 연관된 비대칭 암호화 키쌍의 공개 키 및 개인 키이다. ACM(915)은 키 관리자(1025)를 더 포함한다. 키 관리자(1005) 및 키 관리자(1025)는 대칭 알고리즘(예를 들어, AES) 및/또는 비대칭 알고리즘(예를 들어, 디피-헬먼 키 교환 프로토콜, RSA 등)을 이용하여 암호화/복호화 키를 생성할 수 있다.
도 15는 일 실시예에 따른 호스트와 DP 가속기 사이의 세션 키를 도출하기 위한 예시적인 정보 교환을 나타내는 블록도이다. 예시(1550)는 세션 키를 도출하도록 하는 복수의 동작을 포함하고, 이러한 동작들은 도 14의 시스템(1400)에 의해 수행될 수 있다. 도 14 및 도 15를 참조하면, 일 실시예에 있어서, 동작(1551)에서, HCM(901)은 명령 "CMD_공개 키 획득(CMD_get public key)"을 ACM(915)에 발송하여, 세션 키를 도출하도록 프로세스를 시작한다. 동작(1552)에서, 요청 명령 수신 시, ACM(915)은 세션 키의 도출을 위해 임시(또는 도출된) 공개/개인 키쌍(예를 들어, PK_d 및 SK_d)를 생성한다. ACM(915)은 DP 가속기와 연관된 개인 루트 키(예를 들어, SK_RK)를 이용하여 임시 공개 키(PK_d)를 암호화한다. 동작(1553)에서, 암호화된 임시 공개 키의 카피 및 임시 공개 키의 카피는 ACM(915)에 의해 HCM(901)에 발송된다. 동작(1554)에서, HCM(901)은 상기 카피들을 수신하고, PK_RK를 이용하여 암호화된 임시 공개 키를 복호화하고, 여기서, PK_RK는 HCM(901)에 의해 미리 수신될 수 있고 도 14의 HCM(901)의 PK_RK(1411)에 저장되며, 복호화된 임시 공개 키는 동작(1553)로부터 수신된 임시 공개 키(PK_d)의 카피와 비교한다. 복호화된 키가 임시 공개 키와 매칭할 경우, HCM(901)은 메시지가 예상 당사자의 메시지임을 검증하게 된다. PK_RK(1411)는 복수의 DP 가속기(405-407)를 위한 복수의 공개 키를 포함할 수 있음을 유의하여야 한다.
동작(1555)에서, HCM(901)은 제1 랜덤 논스(nc)를 생성한다. 동작(1556)에서, HCM(901)은 명령 "CMD_세션 키 생성(CMD_generate session key)", HCM과 연관된 공개 키(예를 들어, PK_O) 및 논스(nc)를 ACM(915)에 발송한다. 동작(1557)에서, 명령 "CMD_세션 키 생성(CMD_generate session key)" 수신 시, ACM(915)은 제2 랜덤 논스(ns)를 생성한다. 동작(1558)에서, ACM(915)은 제1 랜덤 논스(nc) 및 제2 랜덤 논스(ns)에 기반하여 세션 키를 도출한다. 일 실시예에 있어서, 세션 키는 랜덤 논스(ns)와 직렬로 연결된 랜덤 논스(nc)의 해시 함수에 의해 도출된다. 다른 일 실시예에 있어서, 세션 키는 ns가 추가된 nc를 기반으로 하는 값의 해시 함수에 의해 도출된다. 다음, 세션 키는 ACM(915)와 HCM(901) 사이에서 교환된 데이터의 암호화 및 복호화에 이용된다.
동작(1559)에서, ACM(915)은 임시 개인 키(예를 들어, SK_d)를 이용하여 논스(nc) 및 논스(ns)를 이중으로 암호화하고, 이어서 HCM과 연관된 공개 키(예를 들어, PK_O)를 이중으로 암호화한다. 다음, ACM(915)은 이중으로 암호화된 논스(nc) 및 논스(ns)를 HCM(901)에 전송한다. 동작(1560)에서, HCM(901)은 HCM과 연관된 개인 키(예를 들어, SK_O) 및 임시 공개 키(예를 들어, PK_d)에 기반하여 이중으로 암호화된 논스(nc) 및 논스(ns)를 복호화한다. 동작(1561)에서, HCM(901)은 랜덤 논스(nc)가 HCM (901)에 의해 원래 생성된 랜덤 논스(nc)의 카피와 실제로 동일한지를 검증함으로써 세션 키의 신선도를 검증한다. 동일한 경우, 동작(1562)에서, HCM(901)은 제1 랜덤 논스 및 제2 랜덤 논스(예를 들어, nc 및 ns)에 기반하여 세션 키를 도출한다. 일 실시예에 있어서, 세션 키는 랜덤 논스(ns)와 직렬로 연결된 랜덤 논스(nc)의 해시 함수에 의해 도출된다. 다른 일 실시예에 있어서, 세션 키는 ns가 추가된 nc를 기반으로 하는 값의 해시 함수에 의해 도출된다. 다음, 세션 키는 HCM(901)과 ACM(915) 사이에서 교환된 데이터의 암호화 및 복호화에 이용된다. 비록 세션 키는 대칭 암호화 알고리즘 기반의 암호화 키로 설명되었으나, 세션 키는 공개/개인 키쌍일 수도 있다.
도 16a 및 도 16b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다. 프로세스(1600) 및 프로세스(1620)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(1600)는 도 14의 호스트 서버(예를 들어, HCM(901))에 의해 수행될 수 있고, 프로세스(1620)는 도 14의 DP 가속기(예를 들어, ACM(915))에 의해 수행될 수 있다. 도 16a를 참조하면, 블록(1601)에서, 임시 공개 키(PK_d)를 데이터 처리(DP) 가속기로부터 수신하는 것에 응답하여, 프로세싱 로직은 호스트 시스템에서 제1 논스(nc)를 생성하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 블록(1602)에서, 프로세싱 로직은 호스트 세션 키를 생성하는 요청을 시스템으로부터 DP 가속기에 전송하고, 요청은 호스트 공개 키(PK_O) 및 제1 논스를 포함한다. 블록(1603)에서, 프로세싱 로직은 DP 가속기로부터 제2 논스(ns)를 수신하고, 여기서, 제2 논스는 호스트 공개 키 및 임시 공개 키에 대응되는 임시 개인 키(SK_d)를 이용하여 암호화된다. 블록(1604)에서, 프로세싱 로직은 제1 논스 및 제2 논스에 기반하여 제1 세션 키를 생성하며, 제1 세션 키는 호스트 시스템과 DP 가속기 사이의 후속 데이터 교환의 암호화 또는 복호화에 이용된다.
일 실시예에 있어서, 프로세싱 로직은 요청을 호스트 시스템으로부터 DP 가속기에 전송하여, DP 가속기가 임시 공개 키 및 임시 개인 키를 구비하는 도출된 키쌍 또는 임시적인 키쌍을 생성하도록 요청하고, 여기서, DP 가속기는 요청에 응답하여 임시 키쌍을 생성한다. 임시 키는 DP 가속기에 의한 구현에 따라 기정된 기간(예를 들어, 몇일, 몇주 또는 심지어 몇개월) 동안에 한 번 또는 복수의 번 이용될 수 있다. 다른 일 실시예에 있어서, DP 가속기로부터의 임시 공개 키는 제1 임시 공개 키이고, 프로세싱 로직은 암호화된 제2 임시 공개 키를 더 수신하며, 제2 임시 공개 키는 DP 가속기에 의해 가속기 개인 루트 키(SK_RK)를 이용하여 암호화된다. 다른 일 실시예에 있어서, 프로세싱 로직은 가속기 개인 루트 키에 대응되는 가속기 공개 루트 키(PK_RK)를 이용하여, 암호화된 제2 임시 공개 키를 더 복호화하여, 제2 임시 공개 키를 복구한다. 다음, 프로세싱 로직은 제1 임시 공개 키와 제2 임시 공개 키가 동일한지 여부를 검증하고, 여기서, 제1 논스는 제1 임시 공개 키와 제2 임시 공개 키가 동일할 경우에 생성된다.
일 실시예에 있어서, DP 가속기로부터 제2 논스를 수신하는 것은 임시 공개 키에 대응되는 임시 개인 키를 이용하여 암호화된 제1 논스 및 제2 논스를 수신하는 것을 포함한다. 다른 일 실시예에 있어서, 프로세싱 로직은 호스트 시스템에서 제1 임시 공개 키 또는 제2 임시 공개 키를 이용하여 암호화된 제1 논스 및 제2 논스를 복호화하여 제1 논스 및 제2 논스를 복구한다. 다른 일 실시예에 있어서, 임시 개인 키에 의해 암호화된 제1 논스 및 제2 논스는 DP 가속기에 의해 호스트 공개 키를 이용하여 더 암호화된다. 다른 일 실시예에 있어서, 프로세싱 로직은 호스트 공개 키에 대응되는 호스트 개인 키를 이용하여 암호화된 제1 논스 및 제2 논스를 복호화하여 제1 논스 및 제2 논스를 복구한다.
도 16b를 참조하면, 일 실시예에 있어서, 블록(1621)에서, 호스트 시스템로부터 수신된 요청에 응답하여, 프로세싱 로직은 데이터 처리(DP) 가속기에서 임시 개인 키 및 임시 공개 키를 생성하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 블록(1622)에서, 프로세싱 로직은 DP 가속기와 연관된 가속기 개인 루트 키를 이용하여 임시 공개 키를 암호화한다. 블록(1623)에서, 프로세싱 로직은 암호화되지 않은 형식의 임시 공개 키 및 암호화된 임시 공개 키를 호스트 시스템에 전송하여, 호스트 시스템이 임시 공개 키를 검증하도록 허용한다. 블록(1624)에서, 프로세싱 로직은 호스트 시스템으로부터 제1 논스를 수신하고, 여기서, 제1 논스는 임시 공개 키가 검증된 후에 호스트 시스템에 의해 생성된다. 블록(1625)에서, 프로세싱 로직은 제1 논스 및 제2 논스에 기반하여 세션 키를 생성하고, 여기서, 제2 논스는 이미 DP 가속기 로컬에서 생성된다.
일 실시예에 있어서, 프로세싱 로직은 임시 개인 키를 이용하여 제1 논스 및 제2 논스를 더 암호화하여, 암호화된 제1 논스 및 제2 논스를 생성한다. 다음, 프로세싱 로직은 암호화된 제1 논스 및 제2 논스를 호스트 시스템에 전송하여 호스트 시스템으로 하여금 대응되는 호스트 세션 키를 생성할 수 있도록 한다. 다른 일 실시예에 있어서, 프로세싱 로직은 암호화된 제1 논스 및 제2 논스를 전송하기 전에, 호스트 시스템과 연관된 호스트 공개 키를 이용하여 암호화된 제1 논스 및 제2 논스를 더 암호화한다. 다른 일 실시예에 있어서, 호스트 시스템은 임시 공개 키 및 호스트 시스템과 연관된 호스트 개인 키를 이용하여, 암호화된 제1 논스 및 제2 논스를 복호화하여 제1 논스 및 제2 논스를 복구하도록 구성된다. 다른 일 실시예에 있어서, 호스트 시스템은 제1 논스의 신선도를 검증하도록 구성되고, 여기서, 호스트 세션 키는 제1 논스가 기정된 기간 내에 생성된 경우에만 생성된다.
DP 가속기의 메모리 버퍼는 DP 가속기의 실행에 필요한 프로그램을 포함하고, 프로그램에 데이터를 입력하고, 프로그램으로부터 결과를 출력할 수 있다. DP 가속기의 확보되지 않은 메모리 버퍼는 전체의 호스트 서버-DP 가속기 시스템 아키텍처를 손상시킬 수 있다. DP 가속기의 메모리 버퍼는 상술한 바와 같이 호스트 서버가 이들 DP 가속기들에 액세스하는 것을 허용하지 않음으로써 확보될 수 있다. 호스트 서버가 DP 가속기의 메모리 버퍼에 액세스하지 못하는 경우에 있어서, 호스트 서버는 어떠한 방식으로든 DP 가속기에 대한 메모리 이용 정보를 보유할 수 있다. 메모리 이용 정보는 데이터 기밀성 및 무결성을 확보할 수 있는 신뢰할 수 있는 실행 환경(TEE)에 보존될 수 있다.
도 17은 일 실시예에 따른 DP 가속기의 메모리 버퍼를 확보하기 위해 보안 메모리 관리자(MM)를 구비하는 호스트의 예시를 나타내는 블록도이다. 시스템(1700)은 도 9의 시스템(900)을 표시하고, DP 가속기의 메모리를 관리하도록 호스트 서버(104) 상에 보안 메모리 관리자를 제공한다. 도 17을 참조하면, 일 실시예에 있어서, 호스트 서버(104)는 MM(1701)을 포함하는 런타임 라이브러리(205)를 포함한다. 이에 대응하여, DP 가속기(405)는 메모리(1703) 및 메모리 유닛(1705; MU)을 포함할 수 있는 반면, DP 가속기(407)는 메모리(1707) 및 MU(1709)를 포함할 수 있다. 메모리 관리자는 DP 가속기의 메모리를 관리할 수 있다. 메모리(1703) 및 메모리(1707)는 DP 가속기의 글로벌 메모리일 수 있다. 글로벌 메모리는 DP 가속기 상에서 실행될 프로그램 코드, 프로그램 코드에 대한 입력 및 프로그램의 실행의 출력 결과와 같은 정보를 저장하기 위한 가속기 중의 구성 요소일 수 있다. MU(1705) 및 MU(1709)는 각각 DP 가속기의 메모리(1703) 및 메모리(1707)의 메모리 레이아웃 및 메모리 이용에 관해 MM(1701)과 통신하고 협조할 수 있다.
도 18은 일부 실시예에 따른 메모리 관리자(MM)의 예시를 나타내는 블록도이다. 도 18을 참조하면, 메모리 관리자(1701)는 메모리 할당부(1801), 메모리 할당해제부(1803) 및 메모리 이용 레지스트리 테이블(1811)을 포함할 수 있다. 메모리 할당부(1801)는 DP 가속기의 글로벌 메모리(예를 들어, DP 가속기(405)의 메모리(1703))로부터 메모리 블록을 할당할 수 있다. 메모리 할당해제부(1803)는 DP 가속기의 글로벌 메모리로부터 메모리 블록의 할당을 해제할 수 있다. 메모리 이용 레지스트리 테이블(1811)은 호스트 서버의 DP 가속기와 연관된 메모리 블록에 대한 메모리 레이아웃 및 이용 정보를 기록할 수 있다. 일 실시예에 있어서, 각 테이블(레지스트리 테이블(1811)의 일부분임)은 DP 가속기와 관련될 수 있고, 테이블은 다수의 사용자 애플리케이션에 대한 다수의 엔트리를 구비할 수 있다. 예를 들어, 사용자 애플리케이션은 DP 가속기의 두 개의 메모리 블록을 예약하기 위해 두 개의 엔트리를 구비할 수 있다. 다음, 레지스트리 테이블은 참조로 이용되어 DP 가속기를 위해 블록을 할당하거나 할당해제할 수 있다. 메모리 이용 레지스트리 테이블(1811)은 하나 또는 다수의 메모리 관리 테이블을 포함할 수 있다. 메모리 관리 테이블은 컴퓨터 운영 체제 중의 시스템에 의해 이용되어 사용자 애플리케이션과 물리적 주소 및/또는 가상 주소 사이의 매핑을 저장하는 데이터 구조이다. DP 가속기의 예시적인 메모리 이용 레지스트리 테이블은 애플리케이션 ID, 시작 주소 및 크기와 같은 필드를 구비할 수 있고, 여기서, 애플리케이션 ID는 어떤 사용자 애플리케이션에 메모리 블록이 할당되었는 지를 나타내고, 시작 주소 및 크기는 메모리 블록의 주소 및 크기를 나타낸다. 일부 실시예에 있어서, 레지스트리 테이블(들)은 대응되는 메모리 블록이 할당되었는지 여부를 나타내는 플래그, 가상 주소 메모리에 매핑된 물리적 주소, 판독 액세스 또는 기록 액세스 등과 같은 추가 필드를 포함할 수 있다. 많은 메모리 이용 레지스트리 테이블이 존재할 수 있으며, 각 DP 가속기는 한 개의 메모리 이용 레지스트리 테이블을 구비함을 유의하여야 한다.
도 17 내지 도 18을 참조하면, 일례로, 원격 클라이언트는 호스트 서버(104) 상에서 (사용자 애플리케이션(203)의 일부분임) 특정 애플리케이션을 실행하도록 하는 명령을 발송할 수 있다. 애플리케이션은 런타임 라이브러리(205)에 의해 제공된 API에 대한 호출을 통해, DP 가속기(405-407)로부터의 자원을 이용하도록 요청할 수 있다. 자원은 메모리 자원 또는 프로세서 자원일 수 있다. 메모리 자원의 예시에 대해, 요청 수신 시, 런타임 라이브러리(205)는 MM(1701)의 인스턴스를 시작할 수 있다. 다음, 런타임 라이브러리(205)는 DP 가속기(405)가 인스턴스의 메모리 할당부(1801)를 통해 DP 가속기(405)의 메모리(1703)로부터 지정된 크기의 메모리 블록을 할당하도록 명령하여 애플리케이션을 실행할 수 있다.
일 실시예에 있어서, 자원 블록이 요청되기 전에, MM(1701)은 메모리 이용 레지스트리 테이블(1811)을 조회하여 자원 블록이 이미 할당되었는지 여부를 결정할 수 있다. 다음, MM(1701)은 제1 메모리 블록이 할당되지 않은 것이 결정됨에 응답하여, 할당 명령을 DP 가속기(405)에 발송하여 글로벌 메모리의 제1 메모리 블록을 애플리케이션에 할당한다. 다른 일 실시예에 있어서, MM(1701)은 요청 메모리 블록이 이미 할당된 것이 결정됨에 응답하여 제1 요청을 거부한다.
MU(1705)는 명령을 수신하고 메모리 할당을 수행한다. 일 실시예에 있어서, MU(1705)는 메모리(1703)를 편력하여(traverse), 할당될 요청 메모리 블록 크기를 구비하는 연속 메모리 블록을 발견할 수 있다. 여기서, MU(1705)는 DP 가속기(405)에 대한 유사한 메모리 이용 레지스트리 테이블(예를 들어, 메모리 이용 데이터 구조)를 더 보유하여 MU(1705)가 DP 가속기(405)에 대한 메모리(1703)를 편력하도록 한다. 다른 일 실시예에 있어서, MM(1701)은 할당 명령 및 메모리 이용 레지스트리 테이블의 카피를 DP 가속기(405)에 발송한다. 이로써, MU(1705)는 이미 할당된 메모리를 인식한다. 다음, MU(1705)는 메모리 이용 정보에 기반하여 메모리 블록을 할당하고, 새로 할당된 메모리 블록에 대한 새로운 메모리 이용 정보를 MM(1701)에 반환할 수 있다. 다음, MM(1701)은 메모리 블록을 요청하는 애플리케이션에 대응되는 애플리케이션 식별자, 시작 주소 및 할당된 메모리 블록의 크기를 메모리 이용 레지스트리 테이블(1811) 상에 기록한다. 메모리 할당 후, TEE 내에서 실행되는 애플리케이션이 DP 가속기(405-407)의 메모리 위치에 액세스하려고 할 경우, MM (1701)은 레지스트리 테이블(1811)을 검색하고, 메모리 위치가 애플리케이션에 할당되는지 여부를 검증할 수 있다. 할당될 경우, 애플리케이션은 메모리 위치에 액세스하는 것이 허용될 수 있다. 그렇지 않으면, 애플리케이션은 메모리 위치에 액세스하는 것이 거부된다. 일단 메모리 블록이 할당되면, 메모리 블록은 사용 가능하기 전에는 더 이상 할당될 수 없음을 유의하여야 한다.
다른 일 실시예에 있어서, MU(1705)가 통신 블록을 통한 물리적 주소의 전송을 피하기 위해 메모리 블록 할당 시에 메모리 이용 정보를 반환할 경우, MU(1705)는 반대로 가상 메모리 주소를 MU(1701)에 반환할 수 있다. 여기서, MU(1705)는 물리적 메모리 주소를 가상 메모리 주소 매핑 테이블에 포함할 수 있다. 매핑 테이블은 가상 메모리 주소를 DP 가속기(405)의 메모리(1703)에 대한 물리적 메모리 주소에 매핑할 수 있다. 이렇게 하여, MU(1705)는 가상 메모리 주소만을 개시하고, 따라서, 메모리(1703)의 물리적 주소는 통신 채널을 통해 개시되지 않는다.
사용자 애플리케이션의 실행이 완료되거나 클라이언트가 완료 명령을 발송할 경우, 일 실시예에 있어서, 사용자 애플리케이션은 사용자 애플리케이션과 연관된 메모리 블록(들)에 대한 메모리 할당해제 명령을 DP 가속기(405)에 발송할 수 있다. 다른 일 실시예에 있어서, 레지스트리 테이블의 카피도 DP 가속기(405)에 발송된다. 일 실시예에 있어서, 메모리 할당해제 명령이 발송되기 전에, MM(1701)은 메모리 블록이 메모리 이용 데이터 구조에 저장된 메모리 이용 정보에 기반하여 애플리케이션에 할당되었는지 여부를 결정한다. 만약 그렇다면, 할당해제 명령은 발송된다. 그렇지 않으면, 할당해제 명령은 발송되지 않고, 예를 들어, 할당해제 요청은 거부될 수 있다.
MU(1705)는 할당해제 명령을 수신하고 메모리 할당해제를 수행한다. 일 실시예에 있어서, MU(1705)는 메모리(1703)를 편력하여, 메모리 블록에 대한 메모리 버퍼를 재설정하도록 메모리 블록의 위치를 확정한다. 다음, MU(1705)는 상태 완료 및/또는 새로운 메모리 이용 정보를 MM(1701)에 반환한다. 다음, MM(1701)은 상태 완료 및/또는 새로운 메모리 이용 정보에 따라 메모리 이용 레지스트리 테이블(1811)을 업데이트(예를 들어, 엔트리를 삭제)한다.
도 19는 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다. 프로세스(1900)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(1900)는 도 17의 호스트(104)와 같은 호스트 시스템에 의해 수행될 수 있다. 도 19를 참조하면, 블록(1901)에서, 프로세싱 로직은 호스트 시스템의 보안 모듈(예를 들어, 신뢰할 수 있는 플랫폼 모듈(TPM))을 이용하여 보안 부팅을 수행한다. 블록(1902)에서, 프로세싱 로직은 호스트 시스템의 하나 또는 다수의 프로세서와 연관된 신뢰할 수 있는 실행 환경(TEE)을 구축한다. 블록(1903)에서, 프로세싱 로직은 TEE 내에서 메모리 관리자를 시작하고, 여기서, 메모리 관리자는 버스를 통해 호스트 시스템에 연결된 데이터 처리(DP) 가속기의 메모리 자원을 관리하도록 구성되고, 따라서, DP 가속기의 글로벌 메모리의 메모리 이용 정보를 유지하는 것을 포함한다. 블록(1904)에서, DP 가속기의 메모리 위치에 액세스하기 위해 TEE 내에서 실행되는 애플리케이션로부터 수신된 요청에 응답하여, 프로세싱 로직은 메모리 이용 정보에 기반하여 요청을 허용하거나 거부한다.
일 실시예에 있어서, 메모리 관리자는 DP 가속기와 연관된 런타임 라이브러리의 일부분으로 구현되며, 이는 호스트 시스템의 TEE 내에서 실행된다. 일 실시예에 있어서, DP 가속기의 글로벌 메모리의 메모리 이용 정보를 유지하는 것은 DP 가속기의 글로벌 메모리의 메모리 블록의 메모리 할당을 기록하도록 메모리 이용 데이터 구조를 유지하는 것을 포함한다. 다른 일 실시예에 있어서, 메모리 이용 데이터 구조는 복수의 엔트리를 포함하며, 각 엔트리는 이미 할당된 DP 가속기의 글로벌 메모리의 메모리 블록을 기록한다. 다른 일 실시예에 있어서, 각 엔트리는 대응되는 메모리 블록의 시작 메모리 주소, 대응되는 메모리 블록의 크기, 및 대응되는 메모리 블록이 할당되었는지 여부를 나타내는 플래그를 저장한다.
다른 일 실시예에 있어서, 프로세싱 로직은 애플리케이션으로부터 제1 요청을 더 수신하여 DP 가속기의 글로벌 메모리에서 제1 메모리 블록을 할당한다. 제1 요청에 응답하여, 프로세싱 로직은 DP 가속기에 문의할 필요없이, 메모리 이용 데이터 구조에 저장된 메모리 이용 정보에 기반하여 제1 메모리 블록이 이미 할당되는지 여부를 결정한다. 다음, 프로세싱 로직은 제1 메모리 블록이 할당되지 않는 것이 결정됨에 응답하여 글로벌 메모리의 제1 메모리 블록을 애플리케이션에 할당한다.
다른 일 실시예에 있어서, 프로세싱 로직은 제1 메모리 블록이 이미 할당되는 것이 결정됨에 응답하여 제1 요청을 더 거부한다. 다른 일 실시예에 있어서, 프로세싱 로직은 애플리케이션으로부터 제2 요청을 더 수신하여 DP 가속기의 글로벌 메모리로부터 제2 메모리 블록을 할당해제한다. 제2 요청에 응답하여, 프로세싱 로직은 메모리 이용 데이터 구조에 저장된 메모리 이용 정보에 기반하여 제2 메모리 블록이 이미 애플리케이션에 할당되는지 여부를 결정한다. 프로세싱 로직은 제2 메모리 블록이 애플리케이션에 할당되는 것이 결정됨에 응답하여 글로벌 메모리로부터 제2 메모리 블록을 할당해제하고, 그렇지 않으면 제2 요청을 거부한다.
도 20은 일 실시예에 따른 DP 가속기에 통신 연결되는 호스트의 예시를 나타내는 블록도이다. 시스템(2000)은 신뢰 루트 서비스 및 타임스탬프 생성 서비스를 DP 가속기(405-407)에 제공할 수 있는 것을 제외하고, 도 9의 시스템(900)을 표시할 수 있다. 도 20을 참조하면, 일 실시예에 있어서, DP 가속기(405)는 보안 유닛(1020) 및 타임 유닛(2003)을 포함한다. 보안 유닛(1020)은 복수의 암호화 방안을 이용하여 신뢰 루트 서비스를 DP 가속기의 기타 모듈/유닛에 제공할 수 있으며, 타임 유닛(2003)은 암호화 키의 인증을 위한 타임 스탬프를 생성하여 다른 암호화 방안을 지원할 수 있다. 타임 유닛(2003)은 독립형 유닛일 수 있거나, 보안 유닛(1020)과 집적될 수 있음을 유의하여야 한다.
일 실시예에 있어서, 보안 유닛(1020)은 암호화 키가 인증되었을 때 또는 세션 키가 만료되었을 때 추적하기 위해 보안 시간 소스를 필요로 한다. 보안 유닛(1020)을 위해 외부 소스로부터의 클럭 신호를 이용하는 것은 안전하지 않을 수 있다. 예를 들어, 외부 소스의 클럭의 클럭 주파수는 조정되거나 클럭의 전원 장치 변조되어, 의도된 시간을 초과하도록 세션 키를 연장시킬 수 있다.
도 21은 일 실시예에 따른 타임 유닛의 예시를 나타내는 블록도이다. 도 21을 참조하면, 타임 유닛(2003)은 독립형 클럭 생성 및 보안 클럭 신호를 위한 독립형 전원 장치를 구비할 수 있다. 타임 유닛(2003)은 클럭 생성부(2101), 로컬 오실레이터(2103), 카운터(2105), 전원 장치(2107), 클럭 교정기(2109) 및 타임 스탬프 생성부(2111)를 포함할 수 있다. 클럭 생성부(2101)는 외부 소스에서 클럭 신호를 도출할 필요없이 클럭 신호를 로컬로 생성할 수 있다. 로컬 오실레이터(2103)는 클럭 생성부(2101)에 연결되어 정확한 펄스 신호를 제공할 수 있다. 예를 들어, 로컬 오실레이터(2103)는 특정 임계값(예를 들어, 마이크로초당 1 카운트)보다 큰 정확도를 구비하는 펄스 신호를 제공할 수 있는 수정 오실레이터를 포함할 수 있다. 카운터(2105)는 클럭 생성부(2101)에 연결되어, 클럭 생성부(2101)에서 생성된 클럭 신호에 기반하여 하나 또는 다수의 카운트 값을 카운트할 수 있다. 전원 장치(2107)는 전력을 클럭 생성부(2101) 및 타임 스탬프 생성부(2111)에 제공할 수 있다. 클럭 교정기(2109)는 클럭 생성부(2101)를 교정할 수 있다. 타임 스탬프 생성부(2111)는 클럭 생성부에 연결되어, 클럭 신호에 기반하여 타임 스탬프를 생성할 수 있다.
예를 들어, 전원 장치(2107)는 다임(dime) 배터리와 같은 배터리를 통해 안정적이고 지속적인 전력을 제공할 수 있다. 여기서, 다임 배터리는 보안 유닛(1020) 외부의 보드 상에 위치될 수 있다. 다른 일 실시예에 있어서, 전원 장치(2107)의 회로는 보안 유닛(1020)의 외부에 위치된다. 로컬 오실레이터(2103)는 고성능 수정 오실레이터를 포함할 수 있다. 카운터(들)는 비휘발성 저장 장치 중의 하나 또는 다수의 가변적인 카운터(예를 들어, 8 비트, 16 비트, 32 비트 또는 64 비트 등의 가변적인 카운터)를 포함할 수 있다. 비휘발성 저장 장치 또는 메모리는 전원 장치가 꺼져도 저장된 데이터를 보유하는 능력을 구비하는 한 유형의 메모리이다. 휘발성 저장 장치와 달리, 비휘발성 저장 장치는 이의 메모리 데이터를 주기적으로 리프레시할 필요가 없다. 일 실시예에 있어서, 비휘발성 저장 장치는 로컬 오실레이터(2103)의 단일 신호 펄스마다 1 증가할 수 있는 제1 카운터를 포함할 수 있다. 제1 카운터는 특정 값까지 카운트할 수 있고, 해당 값은 외부 소스 또는 클럭 교정기(2109)에 의해 변경되고, 따라서, 해당 값은 클럭 신호의 마이크로초의 신호를 나타내도록 조절된다. 다음, 마이크로초는 제2 카운터에 의해 축적되어 초 신호를 생성할 수 있다. 제3 카운터, 제4 카운터 등은 분 신호, 시 신호, 일 신호, 월 신호 등의 축적에 이용될 수 있다. 다음, 클럭 생성부(2101)는 축적된 신호에 기반하여 클럭을 생성할 수 있다. 클럭 신호에 기반하여, 타임 스탬프 생성부는 타임 스탬프를 생성할 수 있다. 다음, 타임 스탬프는 다양한 목적으로 포맷될 수 있다. 일부 예시적인 타임 스탬프 포맷은 yyyy-MM-dd HH:mm:ss.SSS, yyyyMMdd.HHmmssSSS, 및 yyyy/MM/dd HH:mm:ss 등과 같을 수 있다. 일 실시예에 있어서, 컨버터는 타임 스탬프를 한가지 포맷으로부터 다른 한가지 포맷으로 변환될 수 있다. 다른 일 실시예에 있어서, 클럭 교정기(2109)는 DP 가속기의 제조 단계에서 외부 소스(예를 들어, 원자 클럭)와 매칭하도록 클럭 생성 신호를 초기에 교정한다.
다음, DP 가속기의 보안 유닛(1020)과 같은 보안 유닛은 타임 유닛(2003)이 필요에 따라 타임 스탬프를 생성하도록 요청할 수 있다. 다음, 타임 스탬프는 보안 유닛(1020)에 의해 이용되어 암호화 키 인증, 키 생성 및/또는 키 만료에 타임 스탬프를 찍을 수 있다. 예를 들어, 세션 키가 세션 키가 생성될 때와 연관된 타임 스탬프에 기반하여 만료된 것으로 결정될 경우, 세션 키와 연관된 채널 세션은 종료될 수 있다. 이어서, 세션 키가 자동 연장되도록 구성되거나 연장 인증이 사용자 애플리케이션을 통해 획득될 경우, 새로운 세션 키가 생성될 수 있다.
도 22는 일 실시예에 따른 보안 유닛의 예시를 나타내는 블록도이다. 보안 유닛(1020)은 DP 가속기에 의해 사용되어, 명령 및 데이터를 교환하도록 호스트 서버/시스템과의 보안 채널을 구축하고 유지할 수 있다. 도 22를 참조하면, 보안 유닛(1020)은 키 관리자(1025), 암호화 엔진(1029), 인돌스먼트 키(EK; 2209)를 포함하는 키 스토어(1027), 휘발성 저장 장치(2207), 비휘발성 저장 장치(2205), 프로세서(2203)를 포함할 수 있다. 난수 생성부(2201)는 논스와 같은 난수를 생성할 수 있다. 일 실시예에 있어서, 난수 생성부(2201)는 시드 입력(예를 들어, 타임 스탬프)에 기반하여 난수를 생성할 수 있다. 암호화 엔진(1029)은 암호화 동작(예를 들어, 암호화 및 복호화)을 수행할 수 있다. 비휘발성 저장 장치(2205) 및 휘발성 저장 장치(2207)는 보안 유닛(1020)의 저장 영역일 수 있다. 키 스토어(1027)는 고유한 인돌스먼트 크리덴셜(EC) 또는 인돌스먼트 키(EK; 2209)를 보관할 수 있는 보안 유닛(1020)의 키 저장 영역일 수 있다. 여기서, EC 또는 EK는 제조 시 보안 유닛(1020)에서 임의로 생성되고 보안 유닛(1020)에 내장된 공개/개인 암호화 루트 키쌍(예를 들어, PK_RK 및 SK_RK)의 공개 키(예를 들어, PK_RK)를 의미한다. EK에 대응되는 개인 루트 키(예를 들어, SK_RK)는 비휘발성 저장 장치(2205)에 더 내장될 수 있으나, 개인 루트 키는 보안 유닛(1020)의 외부에서 결코 해제되지 않는다. 예시적인 키쌍은 2048 비트 RSA 암호화 키쌍일 수 있다.
제조/테스트 단계 동안, DP 가속기는 내부에서 테스트 및 구성될 수 있으며, EK(2209)는 보안 유닛(1020)에서 생성되고 보안 유닛(1020)에 내장될 수 있다. 일 실시예에 있어서, EK(2209)는 공개 키 또는 EK가 서명될 수 있는 신뢰할 수 있는 인증 서버 상에 업로드될 수 있고, EK의 서명된 인증서는 EK가 진짜인지 검증하는 데에 이용될 수 있다. 여기서, 인증 서버는 정부 승인 서버, 제3자의 신뢰할 수 있는 인증 서버, 또는 로컬 서버일 수 있다.
배치 단계 동안, DP 가속기의 전원이 켜진 후, EK(2209)는 보안 유닛(1020)에서 판독될 수 있고, EK(2209)는 로컬로 또는 인증 서버를 통해 진짜로 검증될 수 있다. 일단 EK 검증이 성공되면, DP 가속기는 진짜로 간주된다. 다음, 검증된 EK 및 보안 유닛(1020)의 내부의 개인 루트 키는 위에 설명된 채널 세션 키 또는 임시 공개/개인 키쌍(예를 들어, PK_d 및 SK_d) 등과 같은 기타 암호화 키를 도출하는데 이용될 수 있다.
런타임 커널 또는 커널(또는 커널 오브젝트)은 DP 가속기의 동작의 지원에 이용되는 수학 또는 계산 기능을 의미한다. 커널은 사용자 애플리케이션에 의해 호출된 수학 함수일 수 있다. 일부 실시예에 대해, 커널은 DP 가속기에 의해 실행되도록 호스트 서버 또는 기타 서버로부터 DP 가속기에 업로드될 수 있다. 예시적인 커널은 DP 곱셈기에 의해 실행될 행렬 곱셈 연산을 지원하는 행렬 곱셈 커널일 수 있다. DP 가속기에 의해 실행될 다른 수학적 또는 계산 함수를 지원하는 데 각각 전용되는 수백 개의 커널이 존재할 수 있음을 유의하여야 한다. 커널의 소스를 지속적으로 추적하는 것은 도전적일 수 있고, 여기서, 일부 커널은 DP 가속기에 업로드되고, 일부 커널은 수정된다. 따라서, 커널의 진정한 소스와 무결성을 확보하기 위해 커널 확인(또는 검증) 및 커널 인증 프로토콜 또는 방안이 필요하다.
도 23은 일 실시예에 따른 DP 가속기에 통신 연결되어 커널 오브젝트를 확인하는 호스트 서버의 예시를 나타내는 블록도이다. 시스템(2300)은 도 9의 시스템(900)일 수 있다. 도 23을 참조하면, 일 실시예에 있어서, 호스트 서버(104)는 사용자 애플리케이션(203) 및 런타임 라이브러리(205)를 포함하는 TEE(201)를 포함한다. 런타임 라이브러리(205)는 커널 검증기 모듈(2301) 및 커널 인증서 스토어(2303)를 포함할 수 있다. 커널 인증서 스토어(2303)는 커널 식별자에 의해 나열된 커널(또는 단순히 공개 키 리스트)에 대한 인증서를 저장할 수 있고, 여기서, 인증서는 신뢰할 수 있는 인증 기관(CA) 또는 로컬 신뢰할 수 있는 서버에 의해 서명될 수 있다. 커널 검증기 모듈(2301)은 커널 인증서 스토어(2303)로부터의 커널 인증서 정보에 기반하여 서명된 커널 오브젝트를 검증할 수 있다.
호스트 서버(104)는 영구 저장 장치(예를 들어, 저장 디스크; 2305) 및 DP 가속기(405-407)에 통신 연결될 수 있다. 영구 저장 장치(2305)는 호스트 서버(104)의 일부분 또는 원격 저장 유닛일 수 있음을 유의하여야 한다. 영구 저장 장치(2305)는 커널 오브젝트(2307)를 포함할 수 있다. 커널 오브젝트(2307)는 원격 소스로부터 유래될 수 있으므로, 커널 오브젝트에 서명하는 것은 객체들이 신뢰할 수 있는 소스로부터 유래된 것임을 확보한다. 커널 오브젝트는 커널의 이진 파일을 포함하는 객체를 의미할 수 있다. 일 실시예에 있어서, 커널 오브젝트(2307)의 각 커널 오브젝트는 커널의 실행 가능한 이미지 및 대응되는 서명을 포함한다. 또한, 커널의 실행 가능한 이미지는 암호화될 수 있다. 서명은 커널 오브젝트에 대응되는 공개/개인 커널 키쌍의 개인 키를 이용하여 서명된 커널의 해시이다. 서명은 커널 서명에 사용되는 개인 키에 대응되는 공개 키를 이용하여 검증될 수 있다. 예를 들어, 공개 키는 커널 오브젝트의 커널 인증서로부터 획득될 수 있다. 일부 실시예에 있어서, 커널 개발자가 초기에 커널을 생성할 경우, 커널 오브젝트는 (커널 개발자의 개인 키를 이용하여) 서명된다. 다음, 서명된 커널은 커널이 진짜임을 확보하도록 검증(또는 확인)을 위한 대응되는 커널 인증서(예를 들어, 공개 키)를 포함할 수 있다.
도 24는 일 실시예에 따른 예시적인 커널 오브젝트 검증 프로토콜을 나타내는 흐름도이다. 커널 오브젝트 검증은 커널 오브젝트(2307)가 호스트 서버(104) 및/또는 DP 가속기(405)의 TEE(201)에 도입되기 전에 커널 오브젝트(2307)가 진짜인 것에 대한 확인을 의미한다. 예시(2400)는 도 23의 시스템(2300)에 의해 수행될 수 있다. 일 실시예에 있어서, 검증 전에, 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))은 신뢰할 수 있는 인증 기관 또는 신뢰할 수 있는 서명자의 인증서로부터 공개 키(예를 들어, PK_i, PK_j, ?? PK_n) 리스트를 획득하고, 여기서, 대응되는 개인 키(예를 들어, SK_i, SK_j, ?? SK_n)는 커널 오브젝트(2307) 서명에 사용되는 커널 개발자의 개인 키이다. 일 실시예에 있어서, 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))이 DP 가속기(405; 또는 어떤 기타 DP 가속기)에 의해 실행될 커널(커널 식별자에 의해 식별된 커널)을 호출할 경우, 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))은 커널이 DP 가속기(405)에 이미 업데이트되었는지 여부를 결정한다. 그렇지 않으면, 호스트 서버(104)는 일 실시예에 따라 동작(2400)을 수행하여, 커널을 DP 가속기(405)에 업로드하기 전에 커널을 검증한다. 하나의 커널을 호출함으로써 기타 커널들이 호출될 경우, 런타임 라이브러리(205)는 일련의 커널을 호출할 수 있음을 유의하여야 한다.
동작(2401)에서, TEE(201)의 일부분으로서의 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))은 커널 식별자(ID)에 기반하여 커널 오브젝트(2307)의 일부분으로서의 커널이 OS(211)에 로딩되도록 요청한다. 일 실시예에 있어서, 커널 ID는 글로벌 고유 식별자(예를 들어, GUID 또는 UUID)일 수 있다. 일 실시예에 있어서, 커널 오브젝트는 커널(예를 들어, 실행 가능한 이미지), 커널 ID 및 커널에 대한 서명을 포함한다. 서명은 커널의 암호화된 해시일 수 있다. 다른 일 실시예에 있어서, 커널 오브젝트는 암호화된 커널(예를 들어, 암호화된 실행 가능한 이미지)을 포함한다. 동작(2402)에서, OS(211)는 커널 ID에 의해 영구 저장 장치(2305)에서 커널 오브젝트를 검색한다. 동작(2403)에서, OS(211)는 커널 오브젝트를 호스트 서버(104)의 TEE(201)에 반환한다. 동작(2404)에서, 커널 검증기 모듈(2301)은 커널 ID에 대응되는 커널 인증서 스토어(2303)에서 커널 인증서를 검색하고, 커널 오브젝트가 진짜인지 여부를 검증한다. 일 실시예에 있어서, 커널을 검증하는 것는 커널 오브젝트의 서명에 공개 키를 적용하여 서명을 복호화하여 예상된 해시 값을 생성하는 것을 포함한다. 다음, 커널 검증기 모듈(2301)은 커널에 대한 해시 값을 생성하고, 예상된 해시 값과 생성된 해시 값을 비교하여 예상된 해시 값과 생성된 해시 값 사이의 차이를 결정한다. 차이가 없을 경우, 서명은 유효하다. 서명이 유효할 경우, 커널의 무결성이 검증되며, 커널 오브젝트는 진짜인 것으로 간주되고 신뢰할 수 있는 개발자에 의해 획득된다. 다른 일 실시예에 있어서, 커널이 암호화될 경우, 커널을 검증하는 것은 공개 키를 커널의 암호화된 실행 가능한 이미지에 적용하여 커널을 복호화하고 획득하는 것을 포함한다.
동작(2405)에서, 커널(예를 들어, 실행 가능한 이미지)이 신뢰되는 것으로 검증될 경우, 동작(2406)에서, 커널 오브젝트는 호스트 서버(104)의 TEE(201)에 의해 DP 가속기(405)에 발송된다. 다음, 호출된 커널은 DP 가속기(405)의 하나 또는 다수의 실행 유닛(들)에 의해 실행될 수 있다.
도 25는 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다. 프로세스(2500)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(2500)는 도 23의 호스트 서버(104)와 같은 호스트 시스템에 의해 수행될 수 있다. 도 25를 참조하면, 블록(2501)에서, 프로세싱 로직은 호스트 시스템의 신뢰할 수 있는 실행 환경(TEE) 내에서 실행되는 런타임 라이브러리에서, 애플리케이션으로부터 요청을 수신하여 미리 정의된 동작을 수행하도록 기정된 기능을 호출한다. 블록(2502)에서, 요청에 응답하여, 프로세싱 로직은 기정된 기능과 연관된 커널 오브젝트를 식별한다. 블록(2503)에서, 프로세싱 로직은 커널 오브젝트의 실행 가능한 이미지 서명에 사용되는 개인 키에 대응되는 공개 키를 이용하여 커널 오브젝트의 실행 가능한 이미지를 검증한다. 블록(2504)에서, 커널 오브젝트의 실행 가능한 이미지를 성공적으로 검증하는 것에 응답하여, 프로세싱 로직은 DP 가속기에 의해 실행되도록 버스를 통해 커널 오브젝트의 검증된 실행 가능한 이미지를 데이터 처리(DP) 가속기에 전송하여, 미리 정의된 동작을 수행한다.
일 실시예에 있어서, 런타임 라이브러리는 개인 키에 대응되는 공개 키를 이용하여 커널 오브젝트의 서명을 복호화함으로써 커널 오브젝트를 검증하도록 구성되고, 여기서, 커널 오브젝트는 암호화되지 않은 형식으로 DP 가속기에 전송될 수 있다. 다른 일 실시예에 있어서, 프로세싱 로직은 기정된 해시 함수를 이용하여 커널 오브젝트의 실행 가능한 이미지를 해싱함으로써 커널 오브젝트의 무결성을 더 검증한다.
일 실시예에 있어서, 커널 오브젝트는 영구 저장 장치의 불보안 위치에 저장된다. 다른 일 실시예에 있어서, 커널 오브젝트는 영구 저장 장치(들)에 저장된 많은 커널 오브젝트 중의 하나이고, 여기서, 런타임 라이브러리는 커널 오브젝트와 각각 연관된 공개 키의 리스트를 유지하며, 공개 키는 커널 오브젝트에 대한 검증에 이용된다.
일 실시예에 있어서, DP 가속기는 애플리케이션을 대표하여 분산 방식으로 커널 오브젝트의 실행 가능한 이미지를 실행하도록 구성된 하나 또는 다수의 실행 유닛을 포함한다. 일 실시예에 있어서, 공개 키는 신뢰할 수 있는 서버에서 획득되었고 공개 키는 커널 오브젝트의 제공자에 의해 제공되었고, 여기서, 커널 오브젝트는 제공자가 개인 키를 이용하여 싸인된 서명을 포함한다.
도 26은 일 실시예에 따른 커널 인증을 위해 DP 가속기에 통신 연결되는 호스트 서버의 예시를 나타내는 블록도이다. 커널 인증은 DP 가속기에 이미 업로드된 커널의 무결성을 검증하는 것을 포함하여, 커널이 전송 과정에서 일부 제3자에 의해 수정되지 않도록 확보한다. 커널의 무결성은 커널의 서명을 검증함으로써 검증될 수 있다. 시스템(2600)은 도 9의 시스템(900)일 수 있다. 도 26을 참조하면, 일 실시예에 있어서, 호스트 서버(104)는 사용자 애플리케이션(203), 런타임 라이브러리(205), 인증 모듈(2601) 및 커널 다이제스트 스토어(2603)를 포함하는 TEE(201)를 포함한다. 커널 다이제스트 스토어(2603)는 이미 다른 DP 가속기에 업로드된 커널에 대응되는 복수의 커널 다이제스트를 저장할 수 있다. 일 실시예에 있어서, 커널 다이제스트는 커널의 비암호화 해시 또는 커널의 임의 유형의 함수(예를 들어, 체크섬, CRC 등)을 의미한다. 커널 다이제스트 스토어(2603)는 커널 다이제스트를 위해 커널 ID의 매핑 및 DP 가속기 ID의 매핑을 더 저장할 수 있다. 매핑은 어떤 커널이 어떤 DP 가속기에 이미 업로드되었는 지를 식별할 수 있다. 커널 다이제스트 스토어(2603)로부터의 커널 다이제스트 정보에 기반하여, 인증 모듈(2601)은 커널 다이제스트 스토어(2603)로부터의 커널 다이제스트 정보에 기반하여 커널을 인증(attest)할 수 있다.
도 26을 참조하면, DP 가속기(405)는 보안 유닛(1020), 인증 유닛(2605), 실행 유닛(2607) 및 저장 장치(2609)를 포함할 수 있다. 저장 장치(2609)는 커널 오브젝트(2611)를 포함할 수 있다. 인증 유닛(2605)은 인증 프로토콜을 경유하여 인증 모듈과 통신할 수 있다. 저장 장치(2609)는 커널 오브젝트(2611)를 저장하는 하나 또는 다수의 저장 장치일 수 있다. 커널 오브젝트(2611)는 DP 가속기(405)에 미리 업로드된 하나 또는 다수의 커널(및 대응되는 커널 ID)을 포함할 수 있다. 실행 유닛(2607)은 커널 오브젝트(2611)로부터 하나 또는 다수의 호출된 커널을 실행할 수 있다.
일 실시예에 있어서, 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))은 커널 다이제스트를 생성함으로써 커널 오브젝트가 DP 가속기(405) 상에 이미 업데이트되는지 여부를 결정하여, 생성된 커널 다이제스트가 커널 다이제스트로부터의 커널 다이제스트 정보 중에서 발견되는지 여부를 조회하여 커널이 DP 가속기 상에 이미 위치하고 있는지 여부를 결정할 수 있다. 선택적으로, 커널 ID는 조회되어 커널이 DP 가속기 상에 이미 위치하고 있는지 여부를 결정할 수 있다. 발견되면, 인증은 시작되고, 그렇지 않으면, 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))은 상술한 바와 같이 커널 오브젝트를 검증하고, 커널 다이제스트가 커널 다이제스트 스토어(2603)에 저장되도록 커널에 대한 커널 다이제스트를 생성한다. 다음, 사용자 애플리케이션(203; 또는 런타임 라이브러리(205))은 커널 이진 파일의 카피를 DP 가속기 상에 업로드한다. 후속 실행 세션에서, 커널은 커널의 호출에 응답하여 사용자 애플리케이션(또는 런타임 라이브러리)에 의해 인증될 수 있다.
도 27은 일 실시예에 따른 예시적인 인증 프로토콜을 나타내는 흐름도이다. 일 실시예에 있어서, 예시(2700)는 도 26의 호스트 서버(104)의 인증 모듈(2601)과 DP 가속기(405)의 인증 유닛(2605) 사이에서 수행될 수 있다. 도 27을 참조하면, 동작(2701)에서, 호스트 서버(104)는 DP 가속기(405)에서 인증 키를 요청한다. 동작(2702)에서, 요청에 응답하여, DP 가속기(405)는 공개/개인 인증 키쌍(예를 들어, PK_ATT 및 SK_ATT)을 생성하고 DP 가속기(405)와 연관된 개인 루트 키(예를 들어, SK_RK)를 이용하여 PK_ATT에 서명한다.
동작(2703)에서, DP 가속기(405)는 PK_ATT 및 서명된 PK_ATT를 갖는 메시지를 호스트 서버(104)에 반환한다. 동작(2704)에서, 호스트 서버(104)는 메시지를 수신하고, DP 가속기(405)와 연관된 공개 루트 키(예를 들어, PK_RK)를 이용하여 서명된 PK_ATT를 복호화하고, 수신된 PK_ATT와 복호화된 PK_ATT를 비교하여 서명된 PK_ATT를 검증한다. 일 실시예에 있어서, 호스트 시스템은 네트워크를 통해 DP 가속기에서 또는 신뢰할 수 있는 서버로부터 DP 가속기와 연관된 PK_RK를 이미 미리 수신한다. 수신된 PK_ATT가 복호화된 PK_ATT와 매칭할 경우, 호스트 서버(104)는 PK_ATT가 실제로 DP 가속기(405)에 의해 생성된 것임을 검증한다. 동작(2701-2704)는 동작(2705) 이전의 임의 시간에 인증을 위해 수행될 수 있음을 유의하여야 한다. 즉, 동일한 인증 키는 예약 기간(예를 들어, 일주일) 동안 이용될 수 있고, 인증 키는 임의 인증된 커널과 관련되지 않고, 예를 들어, 인증 키는 많은 커널에 이용될 수 있다.
동작(2705)에서, 호스트 서버(104)는 쿼트(quote)를 요청하도록 명령 "CMD_인증_수행(CMD_DO_ATTESTATION)"을 커널의 커널 ID와 함께 DP 가속기(405)에 발송한다. 동작(2706)에서, 명령 요청을 수신하는 것에 응답하여, DP 가속기(405)는 커널의 커널 무결성을 측정한다. 일 실시예에 있어서, 커널의 실행 가능한 이미지는 커널 오브젝트(2611)의 일부분으로서 해싱되어 커널 다이제스트를 생성한다. 다음, 커널 다이제스트는 타임 스탬프와 함께 SK_ATT를 이용하여 서명된다. 여기서, 타임 스탬프는 도 20의 타임 유닛(2003)과 같은 타임 유닛에 의해 생성될 수 있다.
동작(2707)에서, DP 가속기(405)는 서명된 커널 다이제스트를 구비하는 메시지를 타임 스탬프와 함께 호스트 서버(104)에 발송한다. 동작(2708)에서, 메시지를 수신하는 것에 응답하여, 호스트 서버(104)는 PK_ATT를 이용하여, 서명된 커널 다이제스트를 타임 스탬프와 함께 복호화한다. 다음, 호스트 서버(104)는 타임 스탬프를 체크하여 메시지가 기정된 기간(예를 들어, 하루) 보다 더 긴 시간을 경과하지 않았음를 검증한다. 다음, 호스트 서버(104)는 커널 다이제스트가 DP 가속기에 미리 업로드된 커널에 속하는지를 검증한다. 일 실시예에 있어서, 호스트 서버(104)는 커널 다이제스트 스토어(2603)로부터의 커널 다이제스트 정보로부터 수신된 커널 다이제스트를 조회한다. DP 가속기(405)의 DP 가속기 ID와 매치되는 엔트리가 발견되면, 커널 인증은 성공한다. 그렇지 않으면, 인증은 실패한다. 동작(2709)에서, 호스트 서버(104)는 인증 또는 검증 결과를 DP 가속기(405)에 발송할 수 있다. 결과에 기반하여, 커널은 DP 가속기(405)의 실행 유닛에 의해 실행되는 것이 허용되거나 거부된다.
도 28a 및 도 28b는 일부 실시예에 따른 예시적인 방법을 나타내는 흐름도이다. 프로세스(2800) 및 프로세스(2820)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(2800)는 호스트 서버(104)에 의해 수행될 수 있고 프로세스(2820)는 도 26의 DP 가속기(405)에 의해 수행될 수 있다. 도 28a를 참조하면, 블록(2801)에서, 프로세싱 로직은 호스트 시스템에서, 버스를 통해 데이터 처리(DP) 가속기로부터 공개 인증 키(PK_ATT) 또는 서명된 PK_ATT를 수신한다. 블록(2802)에서, 프로세싱 로직은 DP 가속기와 연관된 공개 루트 키(PK_RK)를 이용하여 PK_ATT를 검증한다. 블록(2803)에서, PK_ATT를 성공적으로 검증하는 것에 응답하여, 프로세싱 로직은 커널 식별자(ID)를 DP 가속기에 전송하여 DP 가속기에 저장된 커널 오브젝트의 인증을 요청한다. 블록(2804)에서, DP 가속기로부터 커널 오브젝트에 대응되는 커널 다이제스트 또는 서명된 커널 다이제스트를 수신하는 것에 응답하여, 프로세싱 로직은 PK_ATT를 이용하여 커널 다이제스트를 검증한다. 블록(2805)에서, 프로세싱 로직은 DP 가속기가 검증 결과에 기반하여 커널 오브젝트에 액세스하도록 검증 결과를 DP 가속기에 발송한다.
일 실시예에 있어서, 프로세싱 로직은 인증에 대한 요청을 DP 가속기에 더 전송하고, 여기서, DP 가속기는 인증에 대한 요청에 응답하여 PK_ATT 및 개인 인증 키(SK_ATT)를 구비하는 인증 키쌍을 생성한다. 다음, 프로세싱 로직은 DP 가속기로부터 DP 가속기의 개인 루트 키(SK_RK)를 이용하여 서명된 암호화된 PK_ATT를 수신한다. 다른 일 실시예에 있어서, 프로세싱 로직은 호스트 시스템에서 DP 가속기와 연관된 공개 루트 키(PK_RK)를 이용하여 암호화된 PK_ATT를 더 복호화하고, DP 가속기로부터 수신된 PK_ATT가 복호화된 PK_ATT와 동일한지를 검증한다. 일 실시예에 있어서, DP 가속기와 연관된 공개 루트 키(PK_RK)는 호스트 서버(104)에 의해 네트워크를 통해 신뢰할 수 있는 서버로부터 수신될 수 있다.
일 실시예에 있어서, 커널 다이제스트는 DP 가속기가 커널 오브젝트의 실행 가능한 이미지를 해싱함으로써 생성된다. 다른 일 실시예에 있어서, 커널 다이제스트는 PK_ATT에 대응되는 개인 인증 키(SK_ATT)를 이용하여 서명된다. 다른 일 실시예에 있어서, 커널 다이제스트는 어느 시점에 생성된 타임 스탬프와 함께 서명되고, 여기서, 타임 스탬프는 호스트 시스템에 의해 이용되어 커널 다이제스트가 기정된 기간 내에 생성되었는지를 검증한다. 일 실시예에 있어서, 호스트 시스템은 네트워크를 통해 기정된 신뢰할 수 있는 서버로부터 DP 가속기와 연관된 PK_RK를 수신한다.
도 28b를 참조하면, 블록(2821)에서, 호스트 시스템으로부터 수신된 인증 요청에 응답하여, 프로세싱 로직은 데이터 처리(DP) 가속기에서 공개 인증 키(PK_ATT) 및 개인 인증 키(SK_ATT)를 구비하는 인증 키쌍을 생성한다. 블록(2822)에서, 프로세싱 로직은 PK_ATT 또는 서명된 PK_ATT를 DP 가속기로부터 호스트 시스템에 전송하고, 여기서, DP 가속기는 버스를 통해 호스트 시스템에 연결된다. 블록(2823)에서, 프로세싱 로직은 호스트 시스템으로부터 커널 오브젝트를 식별하는 커널 식별자(ID)를 수신하고, 여기서, 커널 ID는 PK_ATT의 성공적인 검증에 응답하여 수신된다. 블록(2824)에서, 프로세싱 로직은 커널 ID에 응답하여, 커널 오브젝트의 실행 가능한 이미지를 해싱함으로써 커널 다이제스트를 생성한다. 블록(2825)에서, 프로세싱 로직은 커널 다이제스트 또는 서명된 커널 다이제스트를 호스트 시스템에 전송하여, 호스트 시스템이 DP 가속기 내에서 실행될 커널 오브젝트에 액세스하기 전에 커널 오브젝트를 검증하고 인증하도록 허용한다.
일 실시예에 있어서, 프로세싱 로직은 DP 가속기와 연관된 개인 루트 키(SK_RK)를 이용하여 PK_ATT에 추가로 서명하고, 서명된 PK_ATT를 호스트 시스템에 발송하여 호스트 시스템으로 하여금 PK_ATT가 DP 가속기에서 유래되는 것임을 검증할 수 있도록 한다. 다른 일 실시예에 있어서, 호스트 시스템은 SK_RK에 대응되는 공개 루트 키(PK_RK)를 이용하여 서명된 PK_ATT를 복호화하고, DP 가속기로부터 수신된 PK_ATT와 복호화된 PK_ATT를 비교함으로써 PK_ATT를 검증하도록 구성된다.
일 실시예에 있어서, 프로세싱 로직은 SK_ATT를 이용하여 커널 다이제스트에 더 서명하고, 서명된 커널 다이제스트를 호스트 시스템에 발송하여 호스트 시스템으로 하여금 커널 다이제스트가 DP 가속기에 의해 발송됨을 검증할 수 있도록 한다. 다른 일 실시예에 있어서, 호스트 시스템은 PK_ATT를 이용하여 서명된 커널 다이제스트를 복호화하고, DP 가속기으로부터 수신된 커널 다이제스트와 복호화된 커널 다이제스트를 비교함으로써 커널 다이제스트를 검증하도록 구성된다. 다른 일 실시예에 있어서, 프로세싱 로직은 타임 스탬프를 더 생성하고, 타임 스탬프와 함께 커널 다이제스트에 서명하고, 여기서, 타임 스탬프는 호스트 시스템에 의해 이용되어 커널 다이제스트의 신선도를 검증한다.
호스트 서버에 통신 연결되는 DP 가속기는 호스트 서버에 의해 예상되는 DP 가속기인 것으로 더 확인될 수 있다. 확인(assurance)은 제3자 신뢰할 수 있는 서버 및/또는 인증 기관을 통해 실현될 수 있다.
도 29는 일 실시예에 따른 DP 가속기 및 신뢰할 수 있는 서버에 통신 연결되는 호스트 서버의 예시를 나타내는 블록도이다. DP 가속기 확인은 신뢰할 수 있는 서버로부터의 DP 가속기의 인증서를 검증하는 것을 의미한다. 신뢰할 수 있는 서버는 제3자 인증 기관 또는 로컬 서버일 수 있다. 시스템(2900)은 도 9의 시스템(900)일 수 있다. 도 29를 참조하면, 일 실시예에 있어서, 호스트 서버(104)는 키 검증 모듈(2901) 및 PK_RK(2903)를 포함하는 TEE(201)를 포함한다. PK_RK(2903)은 DP 가속기와 연관된 공개 키를 저장할 수 있다. 키 검증 모듈(2901)은 신뢰할 수 있는 서버(2921)와 같은 신뢰할 수 있는 서버를 경유하여 DP 가속기에 대한 공개 키를 검증할 수 있다. 신뢰할 수 있는 서버(2921)는 DP 가속기 인증서(2923)를 포함할 수 있다.
도 29를 참조하면, DP 가속기는 키 검증 유닛(2905) 및 저장 장치(2913)를 포함할 수 있는 보안 유닛(1020)을 포함할 수 있다. 저장 장치(2313)는 SK_RK(2907), 가속기 ID(예를 들어, 시리얼 번호 및/또는 UUID; 2909) 및 버전 번호(2911)를 포함할 수 있다. 버전 번호는 DP 가속기(405)의 펌웨어 버전을 나타낼 수 있고, 버전 번호는 DP 가속기(405)의 펌웨어 버전에 따라 업데이트될 수 있다. 키 검증 유닛(2905)은 호스트 서버(104)의 키 검증 모듈(2901)과 같은 키 검증 모듈과 통신하여 DP 가속기(예를 들어, 가속기 ID(2909) 및/또는 버전 번호(2911))에 관한 정보를 호스트 서버(104)에 제공할 수 있다.
예비 사항으로서, 일 실시예에 있어서, 호스트 서버(104)는 DP 가속기(405)와 연관된 PK_RK의 카피를 이미 구비할 수 있다. 그러나, DP 가속기(405)가 초기에 호스트 서버(104)에 도입되거나 DP 가속기(405)가 재도입될 경우, DP 가속기(405)의 PK_RK는 호스트 서버(104)에 대해 확인되거나 재확인될 필요가 있을 수 있다.
도 30은 일 실시예에 따른 예시적인 DP 가속기 확인 프로토콜을 나타내는 흐름도이다. 프로토콜(3000)은 DP 가속기(405)에 대한 PK_RK를 확인하는 예시적인 실시예일 수 있다. 도 29 내지 도 30을 참조하면, 프로토콜(3000)은 호스트 서버(104)의 키 검증 모듈(2901)과 DP 가속기(405)의 키 검증 유닛(2905) 사이에서 수행될 수 있다.
도 30을 참조하면, 동작(3001)에서, 호스트 서버(104)는 가속기(405)에서 가속기 ID를 요청한다. 동작(3002)에서, 요청에 응답하여, DP 가속기(405)는 가속기 ID(2909; 예를 들어, DP 가속기의 시리얼 번호 또는 UUID)를 호스트 서버(104)에 반환한다. 동작(3003)에서, 호스트 서버(104)는 수신된 가속기 ID를 신뢰할 수 있는 서버(2921)에 발송한다. 여기서, 신뢰할 수 있는 서버(2921)는 DP 가속기(405)에 관한 인증서 정보를 구비하는 인증 기관, 제3자 신뢰할 수 있는 서버 또는 로컬 신뢰할 수 있는 서버일 수 있다. 동작(3004)에서, 요청에 응답하여, 신뢰할 수 있는 서버(2921)는 DP 가속기(405)의 가속기 ID와 연관된 인증서를 호스트 서버(104)에 발송한다.
동작(3005)에서, 호스트 서버(104)는 가속기 ID와 연관된 인증서로부터 인증서 정보(예를 들어, 공개 키(PK_RK))를 추출하고, 인증서 정보(예를 들어, PK_RK(2903))를 가속기 ID와 함께 로컬 저장 장치에 저장한다. 일 실시예에 있어서, 추출된 PK_RK는 DP 가속기(405)의 기존의 PK_RK(예를 들어, PK_RK(2903)의 일부분으로서의 기존의 PK_RK)와 대조하여 검증될 수 있으며, 상기 기존의 PK_RK는 DP 가속기(405)에 대해 이전에 이미 획득된 것일 수 있다. 선택적으로, 인증서 정보는 신뢰할 수 있는 서버(2921)의 인증서 체인을 검증함으로써 검증될 수 있다. 인증서 체인은 수신자로 하여금 발신자와 신뢰할 수 있는 서버(예를 들어, 인증서 기관)가 믿을 만한지를 검증할 수 있도록 하는 인증서의 순서 리스트이다. 동작(3006)에서, 검증 및/또는 인증서 정보(예를 들어, PK_RK)에 기반하여, 호스트 서버(104)는 다음으로 DP 가속기(405)와 구축될 보안 연결(예를 들어, 하나 또는 다수의 보안 채널)을 요청한다.
다음, 호스트 서버(104)는 PK_RK를 이용하여 DP 가속기(405)에 의해 발송된 보안 메시지를 복호화할 수 있고, 여기서, 보안 메시지는 SK_RK에 의해 암호화된다. 이 메시지들은 상술한 바와 같이 인증 키쌍(예를 들어, PK_ATT 및 SK_ATT)과 연관된 검증 메시지를 포함함으로써, 공개 인증 키에 대한 서명을 검증하여 DP 가속기에 저장된 커널 오브젝트를 인증할 수 있다. 이 메시지들은 상술한 바와 같이 임시 공개/개인 키쌍(예를 들어, PK_d, SK_d)에 대한 검증 메시지 및 DP 가속기(405)에 대한 세션 키를 더 포함할 수 있다. 일부 실시예에 있어서, 임의로 생성된 숫자는 도 29의 버전 번호(2911)과 함께 인증 키쌍 및 임시 공개/개인 키쌍의 생성에 이용될 수 있다. 여기서, 버전 번호(2911)가 업데이트될 경우(예를 들어, 펌웨어 업그레이드로 인해 업데이트될 경우), 세션을 위한 인증 키쌍 및 임시 공개/개인 키쌍은 만료될 수 있다.
DP 가속기는 가속기의 버전 번호(도 29의 버전 번호(2911)) 및/또는 난수 생성부에 의해 생성된 난수에 더 기반하여 공개/개인 인증 키쌍(예를 들어, PK_ATT 및 SK_ATT)를 생성할 수 있다. 유사하게, 임시 공개/개인 키쌍(예를 들어, PK_d 및 호스트 시스템과 DP 가속기 사이의 통신 세션과 연관된 세션 키의 구축에 이용되는 SK_d)는 가속기의 버전 번호(도 29의 버전 번호(2911)) 및/또는 난수 생성부에 의해 생성된 난수에 더 기반하여 생성될 수 있다.
도 31은 일 실시예에 따른 방법의 예시를 나타내는 흐름도이다. 프로세스(3100)는 소프트웨어, 하드웨어 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(3100)는 도 29의 호스트 서버(104)와 같은 호스트 시스템에 의해 수행될 수 있다. 도 31을 참조하면, 블록(3101)에서, 프로세싱 로직은 호스트 시스템에서, DP 가속기로부터 DP 가속기를 고유하게 식별하는 가속기 ID를 수신하고, 여기서, 호스트 시스템은 버스를 통해 DP 가속기에 연결된다. 블록(3102)에서, 프로세싱 로직은 네트워크를 통해 가속기 ID를 기정된 신뢰할 수 있는 서버에 전송한다. 블록(3103)에서, 프로세싱 로직은 네트워크를 통해 기정된 신뢰할 수 있는 서버로부터 인증서를 수신하고, 여기서, 인증서는 DP 가속기와 연관된 공개 키(PK_RK)를 포함한다. 블록(3104)에서, 선택적으로, 일 실시예에 있어서, 프로세싱 로직은 (예를 들어, 신뢰할 수 있는 서버에 대한 인증서 체인을 검증함으로써) 인증서가 기정된 신뢰할 수 있는 서버와 관련되는지를 검증한다. 블록(3105)에서, 프로세싱 로직은 인증서로부터 공개 루트 키(PK_RK)를 추출하고, DP 가속기가 이전에 발송한 PK_RK를 이용하여 추출된 PK_RK를 검증하여, DP 가속기가 실제로 그가 주장하는 DP 가속기임을 인증한다. 블록(3106)에서, 프로세싱 로직은 검증에 기반하여 PK_RK를 이용하여 DP 가속기와의 보안 채널을 구축하여 호스트 시스템과 DP 가속기 사이에서 데이터를 안전하게 교환한다.
일 실시예에 있어서, DP 가속기는 호스트 시스템 내에 호스팅된 애플리케이션을 대표하여 데이터 처리 동작을 수행하도록 작동될 수 있는 하나 또는 다수의 실행 유닛을 포함한다. 일 실시예에 있어서, 기정된 신뢰할 수 있는 서버는 애플리케이션의 제공자와 연관된다. 일 실시예에 있어서, 기정된 신뢰할 수 있는 서버는 DP 가속기의 제공자와 연관된다. 일 실시예에 있어서, PK_RK는 DP 가속기에 대해 생성된 서명의 검증에 더 이용된다.
다른 일 실시예에 있어서, PK_RK는 호스트 시스템에 의해 이용되어 호스트 시스템과 DP 가속기 사이의 통신 세션과 연관된 세션 키를 생성한다. 다른 일 실시예에 있어서, PK_RK는 호스트 시스템에 의해 이용되어 공개 인증 키에 대한 서명을 검증하여 DP 가속기에 저장된 커널 오브젝트를 인증한다.
위에서 설명된 부재 중의 일부 또는 전부는 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있음을 유의하여야 한다. 예를 들어, 이러한 부재는 영구 저장 장치에 설치 및 저장되는 소프트웨어로 구현될 수 있고, 상기 소프트웨어는 프로세서(미도시)에 의해 메모리에 로딩되고 메모리에서 실행되어 본 출원의 전체를 걸쳐 설명된 프로세스 또는 동작을 구현할 수 있다. 선택적으로, 이러한 부재는 전용 하드웨어(예를 들어, 집적 회로(예를 들어, 전용 집적 회로(ASIC)), 디지털 신호 프로세서(DSP), 또는 필드 프로그램 가능한 게이트 어레이(FPGA))에 프로그래밍되거나 내장된 실행 가능한 코드로 구현될 수 있고, 실행 가능한 코드는 애플리케이션으로부터의 대응되는 드라이버 및/또는 운영 체제를 통해 액세스될 수 있다. 또한, 이러한 부재는 프로세서 또는 프로세서 코어 중의 특정 하드웨어 논리로 구현되어, 소프트웨어 부재가 하나 또는 다수의 특정 명령어를 통해 액세스하는 명령어 집합의 일부분으로 사용될 수 있다.
도 32는 본 발명의 일 실시예와 함께 이용될 수 있는 데이터 처리 시스템의 예시를 나타내는 블록도이다. 예를 들어, 시스템(1500)은 상술한 프로세스 또는 방법 중의 임의의 하나를 수행하는 상기 데이터 처리 시스템 중의 임의 하나를 표시할 수 있고, 예를 들어, 상술한 바와 같이 클라이언트(101-102) 및 서버(104)와 같은 상술한 클라이언트 장치 또는 서버와 같은 임의의 데이터 처리 시스템을 표시할 수 있다.
시스템(1500)은 다수의 상이한 부재를 포함할 수 있다. 이러한 부재들은 집적 회로(IC), 집적 회로의 일부분, 개별 전자 장치 또는 회로판(예를 들어, 컴퓨터 시스템의 메인보드 또는 부속 카드)에 적합한 기타 모듈로 구현될 수 있거나, 또는 기타 방식으로 컴퓨터 시스템의 섀시 내에 집적된 부재로 구현될 수 있다.
시스템(1500)은 컴퓨터 시스템의 다수의 부재의 고차적 도면을 도시하는 것을 목적으로 함을 더 유의하여야 한다. 그러나, 일부 실시예에는 추가 부재가 존재할 수 있고, 또한, 기타 실시예에는 도시된 부재의 상이한 배치가 나타날 수 있다는 것을 이해하여야 한다. 시스템(1500)은 데스크톱 컴퓨터, 랩톱, 태블릿, 서버, 모바일 폰, 미디어 플레이어, 개인용 휴대 단말기(PDA), 스마트워치, 개인 휴대 통신기, 게임 장치, 네트워크 라우터 또는 허브, 무선 액세스 포인트(AP) 또는 리피터, 셋톱 박스, 또는 이들의 조합을 표시할 수 있다. 또한, 오직 하나의 기계 또는 시스템만 도시되었으나, 용어 "기계" 또는 "시스템"은 단독적으로 또는 공동으로 하나(또는 다수)의 명령어 집합을 실행하여 본 명세서에 설명된 임의의 하나 또는 다수의 방법을 수행하는 기계 또는 시스템의 임의의 집합을 포함한다는 것으로도 이해되어야 한다.
일 실시예에 있어서, 시스템(1500)은 프로세서(1501), 메모리(1503) 및 버스 또는 상호 연결 장치(1510)를 경유하는 장치(1505-1508)를 포함한다. 프로세서(1501)는 하나의 프로세서 코어 또는 다수의 프로세서 코어를 구비하는 하나의 프로세서 또는 다수의 프로세서를 표시할 수 있다. 프로세서(1501)는 하나 또는 다수의 범용 프로세서를 표시할 수 있고, 예를 들어, 마이크로 프로세서, 중앙 처리 장치(CPU) 등을 표시할 수 있다. 더 구체적으로, 프로세서(1501)는 복잡 명령어 집합 컴퓨팅(CISC) 마이크로 프로세서, 축소 명령어 집합 컴퓨팅(RISC) 마이크로 프로세서, 훨씬 긴 명령어(VLIW) 마이크로 프로세서, 또는 기타 명령어 집합을 실현하는 프로세서, 또는 명령어 집합의 조합을 실현하는 프로세서일 수 있다. 프로세서(1501)는 하나 또는 다수의 전용 프로세서일 수도 있고, 예를 들어, 전용 집적 회로(ASIC), 셀룰러 또는 베이스밴드 프로세서, 필드 프로그램 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서, 그래픽 프로세서, 통신 프로세서, 암호화 프로세서, 코프로세서, 내장형 프로세서 또는 명령어를 처리할 수 있는 모든 기타 유형의 논리장치일 수 있다.
프로세서(1501)는 시스템의 다양한 부재들과 통신하기 위한 메인 처리 유닛 및 중앙 허브로 작용할 수 있으며, 프로세서(1501)는 초저 전압 프로세서와 같은 저출력 다중 코어 프로세서 소켓일 수 있다. 이러한 프로세서는 시스템 온 칩(SoC)으로 구현될 수 있다. 프로세서(1501)는 본 명세서에 기재된 동작 및 단계를 수행하기 위한 명령어를 실행하도록 구성된다. 시스템(1500)은 선택적인 그래픽 서브 시스템(1504)과 통신하는 그래픽 인터페이스를 더 포함할 수 있고, 그래픽 서브 시스템(1504)은 표시 제어 장치, 그래픽 프로세서 및/또는 표시 장치를 포함할 수 있다.
프로세서(1501)는 메모리(1503)와 통신할 수 있고, 메모리(1503)는 일 실시예에서 다수의 메모리 장치로 구현되어 기정 량의 시스템 메모리를 제공할 수 있다. 메모리(1503)는 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 싱크로너스 DRAM(SDRAM), 스태틱 RAM(SRAM)과 같은 하나 또는 다수의 휘발성 저장(또는 메모리) 장치 또는 기타 유형의 저장 장치를 포함할 수 있다. 메모리(1503)는 프로세서(1501) 또는 기타 임의의 장치에 의해 실행되는 명령어 서열을 포함하는 정보를 저장할 수 있다. 예를 들어, 다양한 운영 체제, 장치 드라이버, 펌웨어(예를 들어, 기본 입출력 시스템 또는 BIOS) 및/또는 애플리케이션의 실행 가능한 코드 및/또는 데이터는 메모리(1503)에 로딩되고, 프로세서(1501)에 의해 실행될 수 있다. 운영 체제는 임의의 유형의 운영 체제일 수 있으며, 예를 들어, Microsoft®의 Windows® 운영 체제, 애플의 Mac OS®/iOS®, Google®의 Android®, Linux®, Unix®, 또는 VxWorks와 같은 기타 실시간 또는 내장형 운영 체제일 수 있다.
시스템(1500)은 장치(1505-1508)와 같은 IO 장치를 더 포함할 수 있바, 예컨대, 네트워크 인터페이스 장치(1505), 선택적인 입력 장치(1506) 및 기타 선택적인 IO 장치(1507) 등을 포함한다. 네트워크 인터페이스 장치(1505)는 무선 트래시버 및/또는 네트워크 인터페이스 카드(NIC)를 포함할 수 있다. 무선 트랜시버는 WiFi 트랜시버, 적외선 트랜시버, 블루투스 트랜시버, WiMax 트랜시버, 무선 셀룰러 텔레포니 트랜시버, 위성 트랜시버(예를 들어, 위성 위치 확인 시스템(GPS) 트랜시버) 또는 기타 무선 주파수(RF) 트랜시버 또는 이들의 조합일 수 있다. NIC는 이더넷 카드일 수 있다.
입력 장치(1506)는 마우스, 터치 패드, 터치 감응식 스크린(표시 장치(1504)에 집적될 수 있음), 스타일러스와 같은 포인터 장치, 및/또는 키보드(예를 들어, 물리적 키보드 또는 터치 감응식 스크린의 일부분으로 표시된 가상 키보드)를 포함할 수 있다. 예를 들어, 입력 장치(1506)는 터치 스크린에 연결된 터치 스크린 제어 장치를 포함할 수 있다. 터치 스크린 및 터치 스크린 제어 장치는, 예를 들어, 다수의 터치 감응 기술(용량성, 저항성, 적외선, 및 표면 탄성파 기술을 포함하나, 이에 한정되지 않음) 중 임의의 하나, 및 기타 근접 센서 어레이 또는 터치 스크린과의 하나 또는 다수의 접촉점을 결정하기 위한 기타 부재를 이용하여 터치 스크린의 접촉 및 이동 또는 중단을 검측할 수 있다
IO 장치(1507)는 오디오 장치를 포함할 수 있다. 오디오 장치는 스피커 및/또는 마이크로 폰을 포함함으로써 음성 식별, 음성 복제, 디지털 녹음 및/또는 텔레포니 기능과 같은 음성 지원 기능을 도모할 수 있다. 기타 IO 장치(1507)는 범용 직렬 버스 라인(USB) 포트(들), 병렬 포트(들), 직렬 포트(들), 프린터, 네트워크 인터페이스, 버스 브리지(예를 들어, PCI-PCI 브리지), 센서(예를 들어, 가속도계, 자이로스코프(gyroscope), 자력계, 광 센서, 나침판, 근접 센서 등과 같은 동작 센서) 또는 이들의 조합을 더 포함할 수 있다. 장치(1507)는 고체 촬상 소자(CCD) 또는 상보형 금속산화 반도체(CMOS) 광학 센서와 같은 광학 센서를 포함할 수 있는 이미징 처리 서브 시스템(예를 들어, 카메라)를 더 포함할 수 있고, 광학 센서는 사진 및 비디오 클립을 기록하는 것과 같은 카메라 기능을 향상시키기 위한 것이다. 일부 센서는 센서 허브(미도시)를 경유하여 상호연결 장치(1510)에 연결될 수 있고, 키보드 또는 온도 센서와 같은 기타 장치는 시스템(1500)의 구체적인 구성 또는 디자인에 따라 내장된 제어 장치(미도시)에 의해 제어될 수 있다.
데이터, 애플리케이션, 하나 또는 다수의 운영 체제 등과 같은 정보에 대한 영구 저장을 제공하기 위해, 프로세서(1501)에는 대용량 저장 장치(미도시)가 연결될 수도 있다. 다양한 실시예에 있어서, 더 얇고 가벼운 시스템 디자인을 실현하고 시스템 응답력을 향상시키기 위해, 대용량 저장 장치는 고체 디바이스(SSD)를 통해 구현될 수 있다. 그러나, 기타 실시예에 있어서, 대용량 저장 장치는 주로 하드디스크 드라이브(HDD)를 이용하여 구현될 수 있으며, 비교적 적은 량의 SSD 저장 장치를 SSD 캐시로 작용하도록 하여 파워 다운 상황에서 콘택스 상태 및 기타 유사한 정보의 비휘발성 저장을 실현함으로써, 시스템 활동이 재시작될 경우 빠른 파워 업을 실현할 수 있다. 또한, 플래시 장치는, 예를 들어, 직렬 주변 장치 인터페이스(SPI)를 통해 프로세서(1501)에 연결될 수 있다. 이러한 플래시 장치는 시스템 소프트웨어의 비휘발성 저장을 제공할 수 있고, 시스템 소프트웨어는 시스템의 기본 입출력 체계(BIOS) 및 기타 펌웨어를 포함한다.
저장 장치(1508)는 컴퓨터 액세스 가능한 저장 매체(1509; 기계 판독 가능한 저장 매체 또는 컴퓨터 판독 가능한 매체라고도 함)를 포함할 수 있고, 컴퓨터 액세스 가능한 저장 매체에는 본 명세서에 설명된 임의 하나 또는 다수의 방법 또는 기능을 구현하는 하나 또는 다수의 명령어 집합 또는 소프트웨어(예를 들어, 모듈, 유닛 및/또는 논리(1528))가 저장된다. 처리 모듈/유닛/논리(1528)는 상술한 바와 같이 전술된 부재 중의 임의의 하나를 표시할 수 있고, 예를 들어, 도 2의 호스트 서버(104), 도 2의 런타임 라이브러리(205), 도 4의 DP 가속기(405), 도 4의 IO 관리자(401) 또는 IO 인터페이스(415), 도 9 및 도 14의 HCM(901) 또는 ACM(915), 및 도 17의 MM(1701), 도 20의 보안 유닛(1020) 및 타임 유닛(2003)을 표시할 수 있다. 처리 모듈/유닛/논리(1528)는 데이터 처리 시스템(1500), 메모리(1503) 및 프로세서(1501)에 의해 실행되는 동안, 완전히 또는 적어도 부분적으로 메모리(1503) 및/또는 프로세서(1501) 내에 위치될 수도 있고, 여기서, 데이터 처리 시스템(1500), 메모리(1503) 및 프로세서(1501)는 기계 액세스 가능한 저장 매체를 구성하기도 한다. 처리 모듈/유닛/논리(1528)는 네트워크를 통해 네트워크 인터페이스 장치(1505)를 경유하여 전송 또는 수신될 수도 있다.
컴퓨터 판독 가능한 저장 매체(1509)는 상술한 일부 소프트웨어 기능을 영구적으로 저장하도록 이용될 수도 있다. 컴퓨터 판독 가능한 저장 매체(1509)는 예시적인 실시예에서 단일 매체로 도시되었으나, 용어 "컴퓨터 판독 가능한 저장 매체"는 하나 또는 다수의 명령어 집합을 저장하는 단일 매체 또는 다수의 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스 및/또는 연관된 캐시 및 서버)를 포함하는 것으로 이해하여야 한다. 또한, 용어 "컴퓨터 판독 가능한 저장 매체"는 명령어 집합을 저장하거나 인코딩할 수 있는 임의의 매체를 포함하는 것으로 이해하여야 하고, 명령어 집합은 기계에 의해 실행되고, 기계로 하여금 본 발명의 하나 또는 다수의 방법을 실행하도록 한다. 따라서, 용어 "컴퓨터 판독 가능한 저장 매체"는 고체 메모리, 광학 매체 및 자기식 매체 또는 기타 임의의 비일시적인 기계 판독 가능한 매체를 포함하나 이에 한정되지 않는 것으로 이해하여야 한다.
본 명세서에 설명된 처리 모듈/유닛/논리(1528), 부재 및 기타 특징은 이산형 하드웨어 부재로 구현되거나 ASICS, FPGA, DSP 또는 유사한 장치와 같은 하드웨어 부재의 기능에 집적될 수 있다. 또한, 처리 모듈/유닛/논리(1528)는 하드웨어 장치 내에서 펌웨어 또는 기능성 회로로 구현될 수 있다. 또한, 처리 모듈/유닛/논리(1528)는 하드웨어 장치 및 소프트웨어 부재의 임의의 조합으로 구현될 수 있다.
시스템(1500)은 데이터 처리 시스템의 다양한 부재로 도시되었으나, 이러한 세부 사항들은 본 발명의 실시예에 밀접히 관련되는 것이 아니므로, 부재들이 상호 연결되도록 하는 임의의 특정 체계 구조 또는 방식을 표시하는 것이 아님을 유의해야 한다. 또한, 더 적은 부재를 구비하거나 더 많은 부재를 구비할 수 있는 네트워크 컴퓨터, 휴대용 컴퓨터, 모바일 폰, 서버 및/또는 기타 데이터 처리 시스템은 본 발명의 실시예와 함께 이용될 수 있음은 자명한 것이다.
상기 상세한 설명 중의 일부분은 이미 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 기호적 표현에 의해 제공된다. 이러한 알고리즘적 설명 및 표현은 데이터 처리 분야의 당업자들이 그들 작업의 요지를 해당 분야의 기타 당업자들한테 효율적으로 전달하기 위해 이용하는 방식이다. 여기서, 알고리즘은 통상적으로 원하는 결과를 달성하기 위한 동작의 자기 부합적 시퀸스로 구상된다. 이러한 동작들은 물리량의 물리적 동작을 필요로 하는 동작이다.
그러나, 이러한 용어 및 유사한 용어들은 모두 적당한 물리량에 관련되어야 하고, 단지 이러한 량에 적용된 편리한 라벨일 뿐이라는 것을 명기해야 한다. 상술한 기재로부터 명확히 알수 있는 바와 같이, 기타 구체적인 설명이 없는 한, 첨부된 청구항에 기재된 용어와 같은 용어를 이용하여 진행한 설명은 명세서 전체를 걸쳐 컴퓨터 시스템 또는 유사한 전자 계산 장치의 동작 및 처리를 가리킨다는 것은 자명한 것이며, 컴퓨터 시스템 또는 전자 계산 장치는 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로 표시된 데이터를 제어하고, 상기 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 유사한 정보 저장 장치, 전송 및 표시 장치 내에서 유사하게 물리량으로 표시된 기타 데이터로 전환한다.
도면에 도시된 기술은 하나 이상의 전자 장치에 저장되고 상기 장치에서 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 이러한 전자 장치는 비일시적인 컴퓨터 판독 가능한 저장 매체(예를 들어, 자기 디스크, 광 디스크, 랜덤 액세스 메모리, 읽기 전용 메모리, 플래시 메모리 장치 및 상 변화 메모리) 및 일시적인 컴퓨터 판독 가능한 저장 매체(예를 들어, 전기, 광학, 음성 또는 기타 형식의 전파 신호(예를 들어, 반송파, 적외선 신호 및 디지털 신호))와 같은 컴퓨터 판독 가능한 매체를 이용하여 코드 및 데이터를 저장하고 (내부적으로 및/또는 네트워크를 통해 기타 전자 장치와) 통신한다.
전술한 도면에 기술된 프로세스 또는 방법은 하드웨어(예를 들어, 회로, 전용 논리 등), 펌웨어, 소프트웨어(예를 들어, 비일시적인 컴퓨터 판독 가능한 매체에 내장됨) 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 비록 위에서 프로세스 또는 방법은 일부 순차적인 동작에 의해 설명되었으나, 설명된 동작 중의 일부는 상이한 순서로 수행될 수도 있음은 자명한 것이다. 또한, 일부 동작은 순차적인 순서가 아니라, 병행으로 수행될 수 있다.
상기 명세서에서, 본 발명의 상세한 예시적인 실시예들을 참조하여 본 발명의 실시예에 대해 설명하였다. 첨부된 청구항에 기재된 본 발명의 더 넓은 사상 및 범위를 벗어나지 않으면서 각종 변경을 진행할 수 있음은 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아닌, 설명적인 의미로 이해하여야 한다.

Claims (20)

  1. 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법으로서,
    버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 데이터 채널을 포함하는 보안 연결을 구축하는 단계;
    명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제1 명령어를 전송하는 단계 - 상기 제1 명령어는 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청함 -;
    상기 제1 명령어에 응답하여, 상기 데이터 채널을 통해 상기 DP 가속기로부터, 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신하는 단계;
    상기 제1 요청에 응답하여, 상기 데이터 채널을 통해 상기 호스트 시스템의 상기 제1 메모리 위치로부터 검색된 상기 제1 데이터를 상기 DP 가속기에 전송하는 단계 - 상기 제1 데이터는 계산 또는 구성 동작에 이용됨; 및
    상기 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제2 명령어를 전송하는 단계 - 상기 제2 명령어는 상기 DP 가속기가 상기 연산 또는 상기 구성 동작을 수행하도록 요청함 -
    를 포함하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 DP 가속기가 상기 호스트 시스템의 상기 제1 메모리 위치로부터 판독할 권한이 있는지 여부를 결정하기 위해 상기 제1 요청을 검사하는 단계; 및
    상기 DP 가속기가 상기 제1 메모리 위치로부터 판독할 권한이 있는 것으로 결정되면, 상기 DP 가속기가 상기 제1 메모리 위치로부터 판독할 수 있도록 허용하는 단계
    를 더 포함하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  3. 제2항에 있어서,
    상기 DP 가속기는 상기 호스트 시스템의 상기 제1 메모리 위치에 대한 직접적인 액세스가 허용되지 않는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  4. 제2항에 있어서,
    상기 DP 가속기는 상기 호스트 시스템에 연결된 다수의 DP 가속기 중의 하나인 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 데이터 채널을 통해 상기 DP 가속기로부터 제2 데이터를 기록하기 위한 제2 요청을 수신하는 단계 - 상기 제2 데이터는 상기 호스트 시스템의 제2 메모리 위치에 기록됨; 및
    상기 제2 요청에 응답하여, 상기 호스트 시스템의 상기 제2 메모리 위치에 상기 제2 데이터를 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  6. 제5항에 있어서,
    상기 DP 가속기가 상기 호스트 시스템의 상기 제2 메모리 위치에 기록할 권한이 있는지 여부를 결정하기 위해 상기 제2 요청을 검사하는 단계; 및
    상기 DP 가속기가 상기 제2 메모리 위치에 기록할 권한이 있는 것으로 결정되면, 상기 DP 가속기가 상기 제2 메모리 위치에 기록할 수 있도록 허용하는 단계
    를 더 포함하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  7. 제5항에 있어서,
    상기 제2 데이터는 상기 제2 명령어에 응답하여 수행된 상기 연산 또는 상기 구성 동작의 결과의 적어도 일부분을 표시하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  8. 비일시적인 기계 판독 가능한 매체에 있어서,
    상기 비일시적인 기계 판독 가능한 매체에는, 프로세서에 의해 실행될 경우 상기 프로세서로 하여금 동작들을 수행하도록 하는 명령어가 저장되며, 상기 동작들은,
    버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 데이터 채널을 포함하는 보안 연결을 구축하는 단계;
    명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제1 명령어를 전송하는 단계 - 상기 제1 명령어는 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청함 -;
    상기 제1 명령어에 응답하여, 상기 데이터 채널을 통해 상기 DP 가속기로부터, 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 수신하는 단계;
    상기 제1 요청에 응답하여, 상기 데이터 채널을 통해 상기 호스트 시스템의 상기 제1 메모리 위치로부터 검색된 상기 제1 데이터를 상기 DP 가속기에 전송하는 단계 - 상기 제1 데이터는 계산 또는 구성 동작에 이용됨; 및
    상기 명령 채널을 통해 상기 호스트 시스템으로부터 상기 DP 가속기에 제2 명령어를 전송하는 단계 - 상기 제2 명령어는 상기 DP 가속기가 상기 연산 또는 상기 구성 동작을 수행하도록 요청함 -
    를 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  9. 제8항에 있어서,
    상기 동작들은,
    상기 DP 가속기가 상기 호스트 시스템의 상기 제1 메모리 위치로부터 판독할 권한이 있는지 여부를 결정하기 위해 상기 제1 요청을 검사하는 단계; 및
    상기 DP 가속기가 상기 제1 메모리 위치로부터 판독할 권한이 있는 것으로 결정되면, 상기 DP 가속기가 상기 제1 메모리 위치로부터 판독할 수 있도록 허용하는 단계
    를 더 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  10. 제9항에 있어서,
    상기 DP 가속기는 상기 호스트 시스템의 상기 제1 메모리 위치에 대한 직접적인 액세스가 허용되지 않는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  11. 제9항에 있어서,
    상기 DP 가속기는 상기 호스트 시스템에 연결된 다수의 DP 가속기 중의 하나인 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  12. 제8항에 있어서,
    상기 동작들은,
    상기 데이터 채널을 통해 상기 DP 가속기로부터 제2 데이터를 기록하기 위한 제2 요청을 수신하는 단계 - 상기 제2 데이터는 상기 호스트 시스템의 제2 메모리 위치에 기록됨; 및
    상기 제2 요청에 응답하여, 상기 호스트 시스템의 상기 제2 메모리 위치에 상기 제2 데이터를 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  13. 제12항에 있어서,
    상기 동작들은,
    상기 DP 가속기가 상기 호스트 시스템의 상기 제2 메모리 위치에 기록할 권한이 있는지 여부를 결정하기 위해 상기 제2 요청을 검사하는 단계; 및
    상기 DP 가속기가 상기 제2 메모리 위치에 기록할 권한이 있는 것으로 결정되면, 상기 DP 가속기가 상기 제2 메모리 위치에 기록할 수 있도록 허용하는 단계
    를 더 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  14. 제12항에 있어서,
    상기 제2 데이터는 상기 제2 명령어에 응답하여 수행된 상기 연산 또는 상기 구성 동작의 결과의 적어도 일부분을 표시하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  15. 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법으로서,
    버스를 통해 호스트 시스템과 데이터 처리(DP) 가속기 사이에서 데이터 채널을 포함하는 보안 연결을 구축하는 단계;
    상기 DP 가속기에서, 명령 채널을 통해 상기 호스트 시스템으로부터 제1 명령어를 수신하는 단계 - 상기 제1 명령어는 상기 DP 가속기가 데이터 준비 동작을 수행하도록 요청함 -;
    상기 제1 명령어에 응답하여, 상기 데이터 채널을 통해 상기 DP 가속기로부터 상기 호스트 시스템에 상기 호스트 시스템의 제1 메모리 위치로부터 제1 데이터를 판독하기 위한 제1 요청을 전송하고, 상기 데이터 채널을 통해 상기 호스트 시스템으로부터 상기 제1 데이터를 수신하는 단계 - 상기 제1 데이터는 상기 호스트 시스템에 의해 상기 호스트 시스템의 상기 제1 메모리 위치로부터 검색됨 -;
    상기 명령 채널을 통해 상기 호스트 시스템으로부터 제2 명령어를 수신하는 단계 - 상기 제2 명령어는 상기 DP 가속기가 계산 또는 구성 동작을 수행하도록 요청함; 및
    적어도 상기 제1 데이터에 기반하여 상기 계산 또는 상기 구성 동작을 수행하는 단계
    를 포함하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  16. 제15항에 있어서,
    상기 호스트 시스템은 상기 DP 가속기가 상기 호스트 시스템의 상기 제1 메모리 위치로부터 판독할 권한이 있는지 여부를 결정하기 위해 상기 제1 요청을 검사하고,
    상기 호스트 시스템은 상기 DP 가속기가 상기 제1 메모리 위치로부터 판독할 권한이 있는 것으로 결정되면, 상기 DP 가속기가 상기 제1 메모리 위치로부터 판독할 수 있도록 허용하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  17. 제16항에 있어서,
    상기 DP 가속기는 상기 호스트 시스템의 상기 제1 메모리 위치에 대한 직접적인 액세스가 허용되지 않는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  18. 제16항에 있어서,
    상기 DP 가속기는 상기 호스트 시스템에 연결된 다수의 DP 가속기 중의 하나인 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  19. 제15항에 있어서,
    상기 호스트 시스템의 제2 메모리 위치에 제2 데이터를 기록하기 위해, 상기 데이터 채널을 통해 상기 DP 가속기으로부터 상기 호스트 시스템에 제2 요청을 전송하여는 단계 - 상기 제2 데이터는 상기 계산 또는 상기 구성 동작의 결과의 적어도 일부분을 표시함 -
    를 더 포함하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.
  20. 제19항에 있어서,
    상기 DP 가속기가 상기 호스트 시스템의 상기 제2 메모리 위치에 기록할 권한이 있는지 여부를 결정하기 위해, 상기 호스트 시스템은 상기 제2 요청을 검사하고,
    상기 호스트 시스템은 상기 DP 가속기가 상기 제2 메모리 위치에 기록할 권한이 있는 것으로 결정되면, 상기 DP 가속기가 상기 제2 메모리 위치에 기록할 수 있도록 허용하는 것을 특징으로 하는 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 위한 컴퓨터 구현 방법.

KR1020207004306A 2019-01-04 2019-01-04 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템 KR102323763B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/070415 WO2020140268A1 (en) 2019-01-04 2019-01-04 Method and system for providing secure communications between a host system and a data processing accelerator

Publications (2)

Publication Number Publication Date
KR20200085724A true KR20200085724A (ko) 2020-07-15
KR102323763B1 KR102323763B1 (ko) 2021-11-08

Family

ID=71405140

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207004306A KR102323763B1 (ko) 2019-01-04 2019-01-04 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (2) US11328075B2 (ko)
EP (1) EP3695587B1 (ko)
JP (1) JP6991431B2 (ko)
KR (1) KR102323763B1 (ko)
WO (1) WO2020140268A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11163865B2 (en) 2019-03-22 2021-11-02 Advanced New Technologies Co., Ltd. Trusted computing method, and server

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105681032B (zh) * 2016-01-08 2017-09-12 腾讯科技(深圳)有限公司 密钥存储方法、密钥管理方法及装置
EP3811271B1 (en) 2019-01-04 2023-02-15 Baidu.com Times Technology (Beijing) Co., Ltd. A data processing accelerator having a local time unit to generate timestamps
EP3794771A4 (en) * 2019-01-04 2022-01-05 Baidu.com Times Technology (Beijing) Co., Ltd. PROCESS AND SYSTEM FOR DISTRIBUTION AND EXCHANGE OF KEYS FOR DATA PROCESSING ACCELERATORS
EP3794763A4 (en) 2019-01-04 2022-01-05 Baidu.com Times Technology (Beijing) Co., Ltd. CONFIRMATION LOG BETWEEN A HOST SYSTEM AND A DATA PROCESSING ACCELERATOR
EP3811272B1 (en) 2019-01-04 2023-10-04 Baidu.com Times Technology (Beijing) Co., Ltd. Method and system for managing memory of data processing accelerators
EP3794772A4 (en) 2019-01-04 2021-12-29 Baidu.com Times Technology (Beijing) Co., Ltd. Data processing accelerator having security unit to provide root trust services
US11609766B2 (en) 2019-01-04 2023-03-21 Baidu Usa Llc Method and system for protecting data processed by data processing accelerators
WO2020140257A1 (en) * 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
CN112334902A (zh) 2019-01-04 2021-02-05 百度时代网络技术(北京)有限公司 建立主机系统与数据处理加速器之间的安全信息交换信道的方法
KR102323763B1 (ko) 2019-01-04 2021-11-08 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
US11233652B2 (en) 2019-01-04 2022-01-25 Baidu Usa Llc Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator
US11620076B2 (en) * 2020-10-19 2023-04-04 Oracle International Corporation Accelerated non-volatile memory device inspection and forensics
US20220214903A1 (en) * 2021-01-06 2022-07-07 Baidu Usa Llc Method for virtual machine migration with artificial intelligence accelerator status validation in virtualization environment
CN116049812B (zh) * 2022-06-28 2023-10-20 荣耀终端有限公司 访问硬件资源的方法和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08242254A (ja) * 1995-03-02 1996-09-17 Matsushita Electric Ind Co Ltd マルチメディアサーバー
JP2013171435A (ja) * 2012-02-21 2013-09-02 Nippon Telegr & Teleph Corp <Ntt> サービス提供システム、サービス提供方法、リソースマネージャ、プログラム
US20160330112A1 (en) * 2015-05-07 2016-11-10 Mellanox Technologies Ltd. Network-based computational accelerator
KR101746056B1 (ko) * 2014-03-18 2017-06-12 퀄컴 인코포레이티드 요청 관리자 및 연결 관리자 기능을 수행하는 전송 가속기

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870467A (en) 1994-09-16 1999-02-09 Kabushiki Kaisha Toshiba Method and apparatus for data input/output management suitable for protection of electronic writing data
US5778237A (en) 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US6704867B1 (en) 1999-03-30 2004-03-09 Bitney Bowes, Inc. Method for publishing certification information representative of selectable subsets of rights and apparatus and portable data storage media used to practice said method
US7020645B2 (en) 2001-04-19 2006-03-28 Eoriginal, Inc. Systems and methods for state-less authentication
US7499966B2 (en) 2001-08-23 2009-03-03 International Business Machines Corporation Web server architecture for improved performance
US7203310B2 (en) 2001-12-04 2007-04-10 Microsoft Corporation Methods and systems for cryptographically protecting secure content
US20030135744A1 (en) 2002-01-11 2003-07-17 International Business Machines Corporation Method and system for programming a non-volatile device in a data processing system
US7941662B2 (en) 2002-05-31 2011-05-10 Broadcom Corporation Data transfer efficiency in a cryptography accelerator system
US7773754B2 (en) * 2002-07-08 2010-08-10 Broadcom Corporation Key management system and method
US7143288B2 (en) 2002-10-16 2006-11-28 Vormetric, Inc. Secure file system server architecture and methods
EP1625470A1 (en) 2003-05-21 2006-02-15 Hewlett-Packard Development Company, L.P. Use of certified secrets in communication
US8613071B2 (en) 2005-08-10 2013-12-17 Riverbed Technology, Inc. Split termination for secure communication protocols
US20070067633A1 (en) 2005-09-21 2007-03-22 Pitney Bowes Incorporated Method for securely managing an inventory of secure coprocessors in a distributed system
US20080027602A1 (en) 2006-05-30 2008-01-31 Yeap Tet H System and method for deterring theft of vehicles and other products having integral computer means
US20080181399A1 (en) 2007-01-29 2008-07-31 Sun Microsystems, Inc. Composite cryptographic accelerator and hardware security module
EP2153340A4 (en) 2007-05-08 2015-10-21 Riverbed Technology Inc HYBRID SEGMENT ORIENTED FILE SERVER, AND WAN ACCELERATOR
US8775824B2 (en) 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US8180972B2 (en) 2009-08-07 2012-05-15 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment by maintaining remote memory values locally
US8812854B2 (en) 2009-10-13 2014-08-19 Google Inc. Firmware verified boot
US8824492B2 (en) * 2010-05-28 2014-09-02 Drc Computer Corporation Accelerator system for remote data storage
US8898324B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server
US9081517B2 (en) 2011-08-31 2015-07-14 Apple Inc. Hardware-based automatic clock gating
US9037511B2 (en) * 2011-09-29 2015-05-19 Amazon Technologies, Inc. Implementation of secure communications in a support system
JP5884578B2 (ja) 2012-03-16 2016-03-15 富士通株式会社 アクセラレータ管理装置、アクセラレータ管理方法および入出力装置
EP2909772B1 (en) 2012-10-17 2019-08-21 Intel Corporation Unauthorized access and/or instruction prevention, detection, and/or remediation, at least in part, by storage processor
GB2508606B (en) 2012-12-04 2015-06-03 Barclays Bank Plc Credential recovery
US20160065362A1 (en) 2013-04-05 2016-03-03 Interdigital Patent Holdings, Inc. Securing peer-to-peer and group communications
CN104283860A (zh) 2013-07-10 2015-01-14 全联斯泰克科技有限公司 一种基于代码签名的elf文件鉴别方法和装置
US9600369B2 (en) 2013-12-10 2017-03-21 Huawei Technologies Co., Ltd. Operating system recovery method and apparatus, and terminal device
US9338013B2 (en) 2013-12-30 2016-05-10 Palantir Technologies Inc. Verifiable redactable audit log
JP5711840B1 (ja) 2014-06-06 2015-05-07 豊田通商株式会社 リレーショナルデータベースを内在するカーネルプログラム、方法及び装置
US9608823B2 (en) 2014-08-11 2017-03-28 Red Hat, Inc. Secure remote kernel module signing
US10015014B2 (en) 2014-12-27 2018-07-03 Intel Corporation Technologies for secure presence assurance
US10373057B2 (en) * 2015-04-09 2019-08-06 International Business Machines Corporation Concept analysis operations utilizing accelerators
US10868675B2 (en) 2015-05-27 2020-12-15 Kaseya International Limited Automated management of endpoints
JP6330737B2 (ja) 2015-06-15 2018-05-30 トヨタ自動車株式会社 情報収集システム、車載装置、及びサーバー
US9847980B2 (en) 2015-06-17 2017-12-19 Microsoft Technology Licensing, Llc Protecting communications with hardware accelerators for increased workflow security
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9735962B1 (en) 2015-09-30 2017-08-15 EMC IP Holding Company LLC Three layer key wrapping for securing encryption keys in a data storage system
US10651827B2 (en) 2015-12-01 2020-05-12 Marvell Asia Pte, Ltd. Apparatus and method for activating circuits
CN107924399B (zh) 2015-12-24 2021-08-10 株式会社日立制作所 处理对主机而言数据传输量不明的检索请求的检索处理系统和方法
CN105824706B (zh) 2015-12-31 2020-11-06 华为技术有限公司 一种配置加速器的方法和装置
US10552138B2 (en) 2016-06-12 2020-02-04 Intel Corporation Technologies for secure software update using bundles and merkle signatures
CN116471105A (zh) 2016-07-11 2023-07-21 维萨国际服务协会 使用访问装置的加密密钥交换过程
US10034407B2 (en) 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
KR20180013574A (ko) 2016-07-29 2018-02-07 주식회사 엘지화학 배터리 밸런싱 장치 및 방법
US10642972B2 (en) * 2016-10-20 2020-05-05 Intel Corporation Extending packet processing to trusted programmable and fixed-function accelerators
US10594478B2 (en) 2016-11-18 2020-03-17 International Business Machines Corporation Authenticated copying of encryption keys between secure zones
US11086632B2 (en) 2017-02-10 2021-08-10 Alibaba Group Holding Limited Method and apparatus for providing accelerated access to a memory system
US10630654B2 (en) 2017-03-22 2020-04-21 Microsoft Technology Licensing, Llc Hardware-accelerated secure communication management
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
US11030117B2 (en) 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US10885213B2 (en) 2017-09-12 2021-01-05 Sophos Limited Secure firewall configurations
US11122310B2 (en) 2017-09-14 2021-09-14 Media Links Co., Ltd. Video switching system
US10567165B2 (en) 2017-09-21 2020-02-18 Huawei Technologies Co., Ltd. Secure key transmission protocol without certificates or pre-shared symmetrical keys
CN108319563B (zh) 2018-01-08 2020-01-03 华中科技大学 一种基于fpga的网络功能加速方法和系统
US11018871B2 (en) 2018-03-30 2021-05-25 Intel Corporation Key protection for computing platform
US10320569B1 (en) 2018-04-05 2019-06-11 HOTYB, Inc. Systems and methods for authenticating a digitally signed assertion using verified evaluators
US20190319933A1 (en) 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
JP2018113075A (ja) 2018-04-19 2018-07-19 株式会社日立製作所 情報処理装置
US11386017B2 (en) 2018-06-20 2022-07-12 Intel Corporation Technologies for secure authentication and programming of accelerator devices
US11443072B2 (en) * 2018-06-29 2022-09-13 Microsoft Technology Licensing, Llc Peripheral device with resource isolation
KR102323763B1 (ko) 2019-01-04 2021-11-08 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
EP3794771A4 (en) 2019-01-04 2022-01-05 Baidu.com Times Technology (Beijing) Co., Ltd. PROCESS AND SYSTEM FOR DISTRIBUTION AND EXCHANGE OF KEYS FOR DATA PROCESSING ACCELERATORS

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08242254A (ja) * 1995-03-02 1996-09-17 Matsushita Electric Ind Co Ltd マルチメディアサーバー
JP2013171435A (ja) * 2012-02-21 2013-09-02 Nippon Telegr & Teleph Corp <Ntt> サービス提供システム、サービス提供方法、リソースマネージャ、プログラム
KR101746056B1 (ko) * 2014-03-18 2017-06-12 퀄컴 인코포레이티드 요청 관리자 및 연결 관리자 기능을 수행하는 전송 가속기
US20160330112A1 (en) * 2015-05-07 2016-11-10 Mellanox Technologies Ltd. Network-based computational accelerator

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11163865B2 (en) 2019-03-22 2021-11-02 Advanced New Technologies Co., Ltd. Trusted computing method, and server

Also Published As

Publication number Publication date
EP3695587B1 (en) 2022-05-04
US20210279344A1 (en) 2021-09-09
US20200218821A1 (en) 2020-07-09
WO2020140268A1 (en) 2020-07-09
JP6991431B2 (ja) 2022-01-12
US11328075B2 (en) 2022-05-10
EP3695587A1 (en) 2020-08-19
JP2021513691A (ja) 2021-05-27
KR102323763B1 (ko) 2021-11-08
EP3695587A4 (en) 2020-08-19

Similar Documents

Publication Publication Date Title
KR102323763B1 (ko) 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
US11799651B2 (en) Data processing accelerator having a security unit to provide root trust services
US11374734B2 (en) Method and system for key distribution and exchange for data processing accelerators
US11233652B2 (en) Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator
US11392687B2 (en) Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
US11616651B2 (en) Method for establishing a secure information exchange channel between a host system and a data processing accelerator
US11693970B2 (en) Method and system for managing memory of data processing accelerators
US11409534B2 (en) Attestation protocol between a host system and a data processing accelerator
US11609766B2 (en) Method and system for protecting data processed by data processing accelerators
US11281251B2 (en) Data processing accelerator having a local time unit to generate timestamps

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