KR20240121109A - 컨피덴셜 컴퓨팅 방법 및 시스템 - Google Patents

컨피덴셜 컴퓨팅 방법 및 시스템 Download PDF

Info

Publication number
KR20240121109A
KR20240121109A KR1020230013955A KR20230013955A KR20240121109A KR 20240121109 A KR20240121109 A KR 20240121109A KR 1020230013955 A KR1020230013955 A KR 1020230013955A KR 20230013955 A KR20230013955 A KR 20230013955A KR 20240121109 A KR20240121109 A KR 20240121109A
Authority
KR
South Korea
Prior art keywords
data
memory
encryption key
tenant
plaintext data
Prior art date
Application number
KR1020230013955A
Other languages
English (en)
Inventor
최명훈
유창효
Original Assignee
리벨리온 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 리벨리온 주식회사 filed Critical 리벨리온 주식회사
Priority to KR1020230013955A priority Critical patent/KR20240121109A/ko
Priority to US18/338,264 priority patent/US12008132B1/en
Priority to US18/658,736 priority patent/US20240296245A1/en
Publication of KR20240121109A publication Critical patent/KR20240121109A/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
    • G06F21/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • 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
    • 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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

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

Abstract

본 개시는 적어도 하나의 프로세서를 포함하는 시큐리티 코어에 의해 수행되는 컨피덴셜 컴퓨팅 방법에 관한 것이다. 컨피덴셜 컴퓨팅 방법은, 제1 테넌트와 연관된 제1 암호화된 데이터를 제1 메모리에 저장하는 단계 - 제1 암호화된 데이터는, 제1 테넌트와 연관된 제1 암호화 키를 이용하여, 제1 평문 데이터(plain text data)에 대해 암호화가 수행된 데이터임 -, 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 제1 암호화 키를 이용하여, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하는 단계 및 제1 평문 데이터를 제1 메모리에 저장된 데이터에 대한 처리를 수행하는 메인 코어로 제공하는 단계를 포함한다.

Description

컨피덴셜 컴퓨팅 방법 및 시스템{METHOD AND SYSTEM FOR CONFIDENTIAL COMPUTING}
본 개시는 컨피덴셜 컴퓨팅 방법 및 시스템에 관한 것으로, 구체적으로, 복수의 테넌트에게 컴퓨팅 서비스를 제공하는 멀티 테넌트 환경에서, 데이터의 기밀성을 유지하기 위한 컨피덴셜 컴퓨팅 방법 및 시스템에 관한 것이다.
컨피덴셜 컴퓨팅 방법은 연산에 사용되는 데이터를 암호화하여 악의적인 공격에 의해 데이터가 노출되는 것을 방지하기 위한 방법, 즉, 데이터의 기밀성을 유지하기 위한 방법이다. 특히, 하나의 시스템으로부터 복수의 사용자 그룹에게 서비스가 제공되는 멀티 테넌트(multi-tenant) 환경에서는 데이터의 기밀성을 유지하는 것이 매우 중요하다.
복수의 사용자들에게 서비스를 제공하는 종래 시스템에 따르면, 기밀성 유지를 위해, 사용자 단말이 데이터를 시스템으로 전달하는 경우 데이터에 대해 암호화를 수행하여 전달하기로 하는 규약이 규정될 수 있다. 이후, 이러한 시스템이 사용자 단말로부터 암호화된 데이터를 수신하는 경우, 시스템은 암호화된 데이터를 복호화하고, 평문(plain text)의 형태로 메모리에 저장할 수 있다. 다만, 상술한 바와 같이 데이터가 평문의 형태로 메모리에 저장되는 경우, 데이터가 악의적인 공격에 노출될 수 있을 수 있다.
본 개시는 상기와 같은 문제점을 해결하기 위한 컨피덴셜 컴퓨팅 방법, 기록매체에 저장된 컴퓨터 프로그램 및 장치(시스템)를 제공한다.
본 개시는 방법, 장치(시스템) 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 일 실시예에 따르면, 적어도 하나의 프로세서를 포함하는 시큐리티 코어에 의해 수행되는, 컨피덴셜 컴퓨팅 방법은, 제1 테넌트와 연관된 제1 암호화된 데이터를 제1 메모리에 저장하는 단계 - 제1 암호화된 데이터는, 제1 테넌트와 연관된 제1 암호화 키를 이용하여, 제1 평문 데이터(plain text data)에 대해 암호화가 수행된 데이터임 -, 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 제1 암호화 키를 이용하여, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하는 단계 및 제1 평문 데이터를 제1 메모리에 저장된 데이터에 대한 처리를 수행하는 메인 코어로 제공하는 단계를 포함한다.
본 개시의 일 실시예에 따르면, 제1 암호화된 데이터에 대한 복호화는, 암호화 또는 복호화 중 적어도 하나의 가속을 위한 크립토 액셀러레이터를 이용하여 수행된다.
본 개시의 일 실시예에 따르면, 제2 테넌트와 연관된 제2 암호화된 데이터를 제1 메모리에 저장하는 단계 - 제2 암호화된 데이터는, 제2 테넌트와 연관된 제2 암호화 키를 이용하여, 제2 평문 데이터에 대해 암호화가 수행된 데이터임 -를 더 포함하고, 제1 암호화 키와 제2 암호화 키는 상이하다.
본 개시의 일 실시예에 따르면, 제1 암호화된 데이터는 제1 테넌트와 연관된 장치로부터 수신된 데이터이다.
본 개시의 일 실시예에 따르면, 제1 암호화 키를 이용하여, 제1 평문 데이터에 대한 메인 코어의 처리 결과로서 생성된 제3 평문 데이터에 대해 암호화를 수행하여 제3 암호화된 데이터를 생성하는 단계를 더 포함하고, 생성된 제3 암호화된 데이터는 제1 테넌트와 연관된 장치로 전송된다.
본 개시의 일 실시예에 따르면, 제1 테넌트와 연관된 제1 암호화된 데이터를 제1 메모리에 저장하는 단계 이전에, 제3 암호화 키를 이용하여, 제4 암호화된 데이터에 대한 복호화를 수행하여 제1 평문 데이터를 생성하는 단계 - 제4 암호화된 데이터는 제1 테넌트와 연관된 장치로부터 수신된 데이터이고, 제4 암호화된 데이터는 제3 암호화 키를 이용하여 제1 평문 데이터에 대해 암호화가 수행된 데이터임 - 및 새로운 암호화 키로서 제1 암호화 키를 이용하여, 제1 평문 데이터에 대해 암호화를 수행하여 제1 암호화된 데이터를 생성하는 단계를 더 포함하고, 제1 암호화 키와 제3 암호화 키는 상이하다.
본 개시의 일 실시예에 따르면, 제3 암호화 키를 이용하여, 제1 평문 데이터에 대한 메인 코어의 처리 결과로서 생성된 제3 평문 데이터에 대해 암호화를 수행하여 제5 암호화된 데이터를 생성하는 단계를 더 포함하고, 제5 암호화된 데이터는 제1 테넌트와 연관된 장치로 전송된다.
본 개시의 일 실시예에 따르면, 제1 암호화된 데이터는, 제1 테넌트에 속한 제1 사용자와 연관되고, 방법은, 제1 테넌트에 속한 제2 사용자와 연관된 제6 암호화된 데이터를 제1 메모리에 저장하는 단계 - 제6 암호화된 데이터는, 제4 암호화 키를 이용하여, 제4 평문 데이터에 대해 암호화가 수행된 데이터임 -를 더 포함하고, 제1 암호화 키와 제4 암호화 키는 상이하다.
본 개시의 일 실시예에 따르면, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하는 단계는, 제1 테넌트와 연관된 장치로부터 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 제1 테넌트와 연관된 장치의 제1 평문 데이터에 대한 접근 권한 여부를 체크하는 단계 및 제1 테넌트와 연관된 장치의 제1 평문 데이터에 대한 접근 권한이 확인되는 경우, 제1 암호화 키를 이용하여, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하는 단계를 포함한다.
본 개시의 일 실시예에 따르면, 외부 장치로부터 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 외부 장치의 제1 평문 데이터에 대한 접근 권한 여부를 체크하는 단계 및 외부 장치의 제1 평문 데이터에 대한 접근 권한이 없다고 판단되는 경우, 외부 장치의 접근 요청을 거부하는 단계, 부적절한 접근 요청에 대한 로그를 저장하는 단계 및 호스트에 부적절한 접근을 알리는 단계를 더 포함한다.
본 개시의 일 실시예에 따르면, 제1 평문 데이터에 대한 재사용이 가능한 경우, 제1 평문 데이터를 메모리에 저장하는 단계를 더 포함하고, 메모리는, 제1 메모리 또는 시큐리티 코어에 의해서만 접근 가능하고 메인 코어의 접근이 불가한 제2 메모리이다.
본 개시의 일 실시예에 따르면, 제1 평문 데이터는 제1 평문 데이터의 시큐리티 레벨에 기초하여, 제1 메모리 또는 제2 메모리에 저장된다.
본 개시의 일 실시예에 따르면, 외부 장치로부터 메모리에 저장된 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 외부 장치의 제1 평문 데이터에 대한 접근 권한 여부를 체크하는 단계를 더 포함한다.
본 개시의 일 실시예에 따르면, 제1 평문 데이터에 대한 사용이 완료되는 경우, 메모리 중 제1 평문 데이터가 저장된 영역을 미리 지정된 값으로 저장하는 단계를 더 포함한다.
본 개시의 일 실시예에 따른 컴퓨팅 장치는, 제1 메모리, 제1 메모리에 저장된 적어도 일부의 데이터를 로드하여 구동 또는 처리를 수행하도록 구성된 메인 코어 및 제1 테넌트와 연관된 제1 암호화된 데이터 - 제1 암호화된 데이터는, 제1 테넌트와 연관된 제1 암호화 키를 이용하여, 제1 평문 데이터에 대해 암호화가 수행된 데이터임 -를 제1 메모리에 저장하고, 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 제1 암호화 키를 이용하여, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하고, 제1 평문 데이터를 메인 코어로 제공하도록 구성된 시큐리티 코어를 포함한다.
본 개시의 일 실시예에 따르면, 컴퓨팅 장치는, 암호화 또는 복호화 중 적어도 하나의 가속을 위한 크립토 액셀러레이터 - 크립토 액셀러레이터는 시큐리티 코어에 의해서만 접근 가능함 -를 더 포함하고, 시큐리티 코어는, 크립토 액셀러레이터를 이용하여 암호화 또는 복호화 중 적어도 하나를 수행하도록 구성된다.
본 개시의 일 실시예에 따르면, 제1 테넌트와 연관된 제1 암호화 키는, 제2 테넌트와 연관된 제2 암호화 키와 상이하고, 복수의 테넌트와 복수의 암호화 키 간의 매칭 정보는 시큐리티 코어만 접근 가능하고, 메인 코어의 접근이 불가하다.
본 개시의 일 실시예에 따르면, 제1 테넌트와 연관된 제1 암호화 키는, 제1 테넌트에 속한 제1 사용자와 연관된 암호화 키이고, 제1 암호화 키는, 제1 테넌트에 속한 제2 사용자와 연관된 제3 암호화 키와 상이하고, 복수의 사용자와 복수의 암호화 키 간의 매칭 정보는 시큐리티 코어에 의해서만 접근 가능하고, 메인 코어의 접근이 불가하다.
본 개시의 일 실시예에 따르면, 시큐리티 코어는, 외부 장치로부터 제1 평문 데이터에 대한 접근 요청이 수신되는 것에 응답하여, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하기 전에, 외부 장치의 제1 평문 데이터에 대한 접근 권한 여부를 체크하도록 구성된다.
본 개시의 일 실시예에 따르면, 메인 코어는, 시큐리티 코어에 의해 제공된 제1 평문 데이터에 대한 처리를 수행하여 제3 평문 데이터를 생성하도록 구성되고, 시큐리티 코어는, 제1 암호화 키를 이용하여, 제3 평문 데이터에 대해 암호화를 수행하여 제2 암호화된 데이터를 생성하고, 제2 암호화된 데이터를 제1 테넌트와 연관된 장치로 전송하도록 구성된다.
본 개시의 일부 실시예에 따르면, 컴퓨팅 시스템은 테넌트로부터 수신된 암호화된 데이터를 복호화하여 평문의 형태로 메모리에 저장하는 대신, 암호화된 형태로 메모리에 저장함으로써, 데이터의 기밀성이 유지될 수 있다.
본 개시의 일부 실시예에 따르면, 컴퓨팅 시스템은 테넌트로부터 수신된 암호화된 데이터를 복호화한 뒤, 새로운 암호화 키로 데이터를 암호화하여 메모리에 저장함으로써, 암호화 키의 노출 위험이 감소되거나 최소화될 수 있다.
본 개시의 일부 실시예에 따르면, 컴퓨팅 시스템은 각 테넌트와 연관된 암호화 키 및/또는 각 사용자와 연관된 암호화 키를 상이하게 지정하여 관리함으로써, 데이터의 기밀성이 더욱 향상될 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(“통상의 기술자”라 함)에게 명확하게 이해될 수 있을 것이다.
본 개시의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 멀티 테넌트 환경의 예시를 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 컴퓨팅 시스템의 예시를 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 시큐리티 코어의 내부 구성의 예시를 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 컴퓨팅 시스템이 복수의 테넌트의 각각과 연관된 복수의 장치로부터 수신된 데이터를 메모리에 저장하는 예시를 나타내는 도면이다.
도 5는 본 개시의 일 실시예에 따른 컴퓨팅 시스템이 동일한 테넌트에 속한 복수의 사용자의 각각과 연관된 복수의 장치로부터 수신된 데이터를 메모리에 저장하는 예시를 나타내는 도면이다.
도 6은 본 개시의 일 실시예에 따른 시큐리티 코어가 암호화된 데이터를 복호화하여 메인 코어로 제공하는 예시를 나타내는 도면이다.
도 7은 본 개시의 일 실시예에 따른 시큐리티 코어가 수신된 데이터를 새로운 암호화 키로 암호화하여 메모리에 저장하는 예시를 나타내는 도면이다.
도 8은 본 개시의 일 실시예에 따른 접근 권한 여부 확인 과정의 예시를 나타내는 도면이다.
도 9는 본 개시의 일 실시예에 따른 시큐리티 코어가 평문 데이터를 메모리에 저장하는 예시를 나타내는 도면이다.
도 10은 본 개시의 일 실시예에 따른 시큐리티 코어가 런타임 무결성 체크를 수행하는 예시를 나타내는 도면이다.
도 11은 본 개시의 일 실시예에 따른 시스템 보호 과정의 예시를 나타내는 도면이다.
도 12는 본 개시의 일 실시예에 따른 리커버리 과정의 예시를 나타내는 도면이다.
도 13은 본 개시의 일부 실시예들에 따른 뉴럴 프로세싱 시스템을 설명하기 위한 블록도이다.
도 14는 도 13의 뉴럴 프로세싱 장치를 세부적으로 설명하기 위한 블록도이다.
도 15는 도 14의 뉴럴 코어 SoC를 세부적으로 설명하기 위한 블록도이다.
도 16은 도 15의 글로벌 인터커넥션을 세부적으로 설명하기 위한 구조도이다.
도 17은 본 개시의 일 실시예에 따른 컨피덴셜 컴퓨팅 방법의 예시를 나타내는 흐름도이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나, 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 개시에서, '시스템'은 서버 장치와 클라우드 장치 중 적어도 하나의 장치를 포함할 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 시스템은 하나 이상의 서버 장치로 구성될 수 있다. 다른 예로서, 시스템은 하나 이상의 클라우드 장치로 구성될 수 있다. 또 다른 예로서, 시스템은 서버 장치와 클라우드 장치가 함께 구성되어 동작될 수 있다.
본 개시에서, '복수의 A의 각각' 또는 '복수의 A 각각'은 복수의 A에 포함된 모든 구성 요소의 각각을 지칭하거나, 복수의 A에 포함된 일부 구성 요소의 각각을 지칭할 수 있다.
본 개시에서, '평문 데이터'는 평문(Plaintext) 형태의 암호화되지 않은 데이터(Decrypted data)를 지칭할 수 있다. 평문 데이터에 대해 암호화가 수행되는 경우, 암호문(Cyphertext) 형태의 암호화된 데이터(Encrypted data)가 생성될 수 있다. 또한, 암호화된 데이터에 대해 적절한 방식으로 복호화가 수행되는 경우, 평문 데이터가 도출될 수 있다.
본 명세서 및 특허청구범위에서 사용된 제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 또한, 각 도면에서 사용된 제1, 제2 등의 용어는 하나의 도면 내에서 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 예를 들어, 동일한 도면에 기재된 제1 구성요소와 제2 구성요소는 동일할 수도 있고, 상이할 수도 있다. 다른 예로, 도 4에 기재된 제1 구성요소와 도 6에 기재된 제1 구성요소는 동일할 수도 있고, 상이할 수도 있다.
도 1은 멀티 테넌트(multi-tenant) 환경의 예시를 설명하기 위한 도면이다. 컴퓨팅 시스템은 동일한 물리적 인프라 또는 동일한 물리적 장치를 이용하여, 복수의 테넌트(112, 114, 116)에게 컴퓨팅 서비스를 제공할 수 있다. 여기서, 테넌트란 컴퓨팅 서비스를 제공받는, 동일한 목적을 가진 사용자 그룹을 지칭할 수 있다. 예를 들어, 각 테넌트(112, 114, 116)는 동일한 기업에 소속된 사용자들의 그룹 또는 동일한 프로젝트(예를 들어, 특정 뉴럴 네트워크의 개발을 위한 프로젝트)를 수행하는 사용자들의 그룹 등을 포함할 수 있다.
멀티 테넌트 환경에서, 복수의 테넌트(112, 114, 116)는 컴퓨팅 서비스를 제공받기 위해, 동일한 애플리케이션 인스턴스(120)를 사용할 수 있다. 또한, 복수의 테넌트(112, 114, 116)가 데이터의 저장 및/또는 처리를 요청하기 위해 컴퓨팅 시스템에 전달하는 데이터는 동일한 물리적 인프라 또는 동일한 물리적 장치에 구축된 데이터베이스(130)에 저장될 수 있다. 이러한 멀티 테넌트 환경에서는, 각 테넌트(112, 114, 116)의 데이터가 서로 다른 테넌트에게 노출되지 않도록 데이터의 기밀성을 유지하는 것이 매우 중요하다. 또한, 사용자의 개인 정보 등 민감 정보를 포함하는 데이터의 경우, 동일한 테넌트에 속한 복수의 사용자 사이에서도 데이터의 기밀성이 유지되어야 할 필요성이 있다.
본 개시의 일 실시예에 따른 컴퓨팅 시스템은 상술한 바와 같은 멀티 테넌트 환경에서, 컨피덴셜 컴퓨팅 방법을 수행하여 데이터의 기밀성을 유지함으로써 각 테넌트(112, 114, 116)의 데이터 또는 각 사용자의 데이터를 안전하게 보호하면서 컴퓨팅 서비스를 제공할 수 있다.
도 2는 본 개시의 일 실시예에 따른 컴퓨팅 시스템(200)의 예시를 나타내는 블록도이다. 일 실시예에 따른 컴퓨팅 시스템(200)은 논시큐어 도메인(210) 및 시큐어 도메인(220)으로 구분될 수 있다. 논시큐어 도메인(210)에는 메인 코어(212) 및 메모리(214)가 포함될 수 있고, 시큐어 도메인(220)에는 시큐리티 코어(222), 암호화 키 매니저(224) 및 메모리(226)가 포함될 수 있다. 도 2는 컴퓨팅 시스템(200)의 일 예시일 뿐, 컴퓨팅 시스템(200)의 필수적 구성만을 도시한 것이 아니며, 컴퓨팅 시스템(200)의 모든 구성을 도시한 것이 아니므로, 도시된 구성 중 적어도 일부가 생략되고/되거나, 다른 구성이 더 포함될 수 있다.
논시큐어 도메인(210)은 컴퓨팅 시스템(200) 중 시큐어 도메인(220)을 제외한 하드웨어 및/또는 소프트웨어 영역을 포함할 수 있다. 예를 들어, 논시큐어 도메인(210)은 메인 코어(212) 및 메모리(214)를 포함할 수 있다.
시큐어 도메인(220)은 시큐리티 코어(222)와, 시큐리티 코어(222)에 의해서만 접근 가능한 하드웨어 및/또는 소프트웨어 영역을 포함할 수 있다. 예를 들어, 시큐어 도메인(220)은 시큐리티 코어(222), 암호화 키 매니저(224) 및 메모리(226)를 포함할 수 있다. 시큐어 도메인(220)은 보안 관련 작업이 수행되는 영역이므로, 시큐리티 코어(222)를 제외한 시스템 내/외부의 다른 구성은 암호화된 데이터에 대해 접근 요청을 보내는 등의 제한된 목적으로만 시큐리티 코어(222)에 접근할 수 있으며, 이를 제외한 시큐어 도메인(220)에 대한 접근은 제한될 수 있다.
메인 코어(212)는 연산 작업을 수행하는 코어(core)일 수 있다. 추가적으로 또는 이와 달리, 메인 코어(212)는 연산 작업을 수행하는 코어를 관리하거나 작업을 분배하는 코어일 수도 있다. 예를 들어, 메인 코어(212)는 논시큐어 도메인(210) 내의 메모리(214)에 저장된 데이터를 로드하여 데이터를 처리(예를 들어, 연산) 또는 구동할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
논시큐어 도메인(210) 내의 메모리(214)는 메인 코어(212) 및 시큐리티 코어(222)의 처리 대상이 되는 데이터를 저장하거나, 처리 결과로 생성된 데이터를 저장하기 위한 휘발성 메모리 및/또는 비휘발성 메모리일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
시큐리티 코어(222)는 보안 목적의 연산 작업을 수행하는 코어일 수 있다. 추가적으로 또는 이와 달리, 시큐리티 코어(222)는 보안 목적의 연산 작업을 수행하는 코어를 관리하거나 작업을 분배하는 코어일 수도 있다. 예를 들어, 시큐리티 코어(222)는 데이터에 대한 암호화/복호화, 데이터에 대한 무결성 체크, 데이터에 대한 접근 권한 관리 등을 수행할 수 있다. 또한, 시큐리티 코어(222)는 보안 관련 문제가 발생한 경우, 시큐리티 코어(212)를 제외한 모든 시스템의 동작을 중지시킬 수 있어야 하므로, 컴퓨팅 시스템(200)의 코어 중 우선 순위(priority)가 가장 높을 수 있다. 이러한 구성 하에서, 시큐리티 코어(222)는 컴퓨팅 시스템(200)의 모든 구성에 접근 가능할 수 있다.
암호화 키 매니저(224)는 시큐리티 코어(222)에 의해 수행되는 암호화 연산 및/또는 복호화 연산과 연관된 암호화 키를 관리하는 하드웨어 및/또는 소프트웨어일 수 있다. 예를 들어, 암호화 키 매니저(224)는 암호화 키의 생성 및 관리를 담당하는 블록일 수 있다. 일 실시예에 따르면, 암호화 키는 암호화 키 매니저(224) 블록 내부의 전용 코어(예를 들어, 키 유도 코어(Key Derivation Core))를 통해 생성될 수 있다. 암호화 키 매니저(224)는 개별 암호화 키에 대한 정보(예를 들어, 데이터와 암호화 키의 매칭 관계, 호스트 장치와 암호화 키의 매칭 관계, 테넌트와 암호화 키의 매칭 관계, 사용자와 암호화 키의 매칭 관계 등)를 관리할 수 있다.
일 실시예에 따르면, 시큐어 도메인(220) 내의 메모리(226)에 암호화 키(예를 들어, 암호화 키 매니저(224)에서 생성된 키 또는 시스템 외부로부터 전달된 키)와 개별 암호화 키 정보를 저장하기 위한 영역이 존재할 수 있다. 이 영역에 대한 접근은 암호화 키 매니저(224)만 가능할 수 있다. 추가적으로 또는 대안적으로, 암호화 키 매니저(224) 블록 내부에 암호화 키 매니저(224) 전용의 메모리(미도시)를 포함할 수도 있으며, 해당 메모리에 암호화 키 및 개별 암호화 키 정보를 저장할 수도 있다. 도 2에서 암호화 키 매니저(224)는 시큐리티 코어(222)와 별개의 구성인 것처럼 도시되어 있으나, 이는 설명의 편의를 위한 것일 뿐 이에 한정되지 않는다. 일 실시예에 따르면, 암호화 키 매니저(224)의 적어도 일부 구성은 시큐리티 코어(222)에 포함될 수 있다.
시큐어 도메인(220) 내의 메모리(226)는 시큐리티 코어(222)에 의해서만 접근 가능한 휘발성 메모리 및/또는 비휘발성 메모리일 수 있다. 즉, 시큐어 도메인(220) 내의 메모리(226)는 기밀성이 유지되어야 하는 데이터를 저장하기 위한 휘발성 메모리 및/또는 비휘발성 메모리일 수 있다.
시큐리티 메인 인터커넥션(232)은 시큐리티 코어(222)와 메인 코어(212) 사이의 데이터 및 제어 신호를 전달할 수 있다. 이때, 시큐리티 코어(222)는 메인 코어(212)보다 우선 순위가 높을 수 있다. 이에 따라, 시큐리티 코어(222)는 메인 코어(212)의 모든 부분에 접근할 수 있고, 메인 코어(212)의 동작 여부도 지시할 수 있다. 이에 따라, 보안 관련 문제가 발생한 경우, 시큐리티 코어(222)가 메인 코어(212)의 동작을 멈추고, 전체 시스템에 대한 제어 권한을 가질 수 있다. 이를 통해, 무결성 체크 과정에서 데이터의 변조가 감지된 경우, 시큐리티 코어(222)가 시스템 보호 및/또는 리커버리 과정을 원활하게 수행할 수 있다.
메인 시큐리티 인터커넥션(234)은 메인 코어(212)와 시큐리티 코어(222) 사이의 데이터 및 제어 신호를 전달할 수 있다. 이때, 메인 코어(212)는 메인 시큐리티 인터커넥션(234)을 통해 시큐리티 코어(222)의 전체가 아닌 제한된 부분만을 접근할 수 있다. 이에 따라, 보안을 담당하는 시큐리티 코어(222)의 보안이 유지될 수 있으며, 이에 따라, 데이터의 기밀성이 유지될 수 있을 뿐만 아니라 컴퓨팅 시스템(200)의 변조 위험이 방지될 수 있다.
도 3은 본 개시의 일 실시예에 따른 시큐리티 코어(222)의 내부 구성의 예시를 나타내는 블록도이다. 도 3은 시큐리티 코어(222)의 내부 구성의 일 예시일 뿐, 시큐리티 코어(222)의 필수적 구성만을 도시한 것이 아니며, 시큐리티 코어(222)의 모든 내부 구성을 도시한 것이 아니므로, 도시된 구성 중 적어도 일부가 생략되고/되거나, 다른 구성이 더 포함될 수 있다. 일 실시예에 따르면, 시큐리티 코어(222)는 크립토 액셀러레이터(310), 메인-시큐리티 인터페이스(320), 시큐리티-메인 인터페이스(330)를 포함할 수 있다.
크립토 액셀러레이터(310)는 크립토(crypto) 연산(예를 들어, 암호화 및/또는 복호화 연산)을 수행할 수 있다. 크립토 연산은 예를 들어, AES, SEED 등과 같은 대칭키 암호화/복호화 알고리즘 또는 RSA, DSA 등과 같은 비대칭키 암호화/복호화 알고리즘, 단방향 암호화 알고리즘(예를 들어, CRC, MD5, RIPEMD160, SHA-1, SHA-256, SHA-512 등과 같은 해시 알고리즘 등) 중 적어도 하나를 이용한 연산을 포함할 수 있다.
크립토 액셀러레이터(310)는 시큐리티 코어(222)가 크립토 연산을 원활하게 수행할 수 있도록 크립토 연산에 특화된 하드웨어일 수 있다. 이러한 구성 하에서, 시큐리티 코어(222)의 암호화 연산의 정확성과 연산 속도가 더욱 향상될 수 있다.
메인-시큐리티 인터페이스(320) 및 시큐리티-메인 인터페이스(330)는 메인 코어와 시큐리티 코어(222) 사이에서 동작할 수 있다.
메인-시큐리티 인터페이스(320)는 메인 시큐리티 인터커넥션과 연결될 수 있다. 메인-시큐리티 인터페이스(320)는 메인 시큐리티 인터커넥션과 함께, 메인 코어가 시큐리티 코어(222)에 접근할 때 보안 영역이 아닌 영역만을 제한적으로 접근할 수 있도록 제어할 수 있다.
시큐리티-메인 인터페이스(330)는 시큐리티 메인 인터커넥션과 연결될 수 있다. 시큐리티-메인 인터페이스(330)는 시큐리티 메인 인터커넥션과 함께, 시큐리티 코어(222)가 메인 코어에 접근할 때 사용될 수 있다. 이때, 메인 코어가 시큐리티 코어(222)에 접근할 수 있는 영역은 시큐리티 코어(222)가 메인 코어에 접근할 수 있는 영역보다 작을 수 있다. 이러한 비대칭성을 통해, 시큐리티 코어(222)의 보안이 강화될 수 있기 때문에, 데이터의 기밀성이 유지되면서, 나아가 시스템의 변조 위험에 대비할 수 있다. 이러한 구성을 더욱 효과적으로 구현하기 위하여, 메인-시큐리티 인터페이스(320) 및 시큐리티-메인 인터페이스(330)는 서로 물리적으로 분리될 수 있다.
도 4는 본 개시의 일 실시예에 따른 컴퓨팅 시스템(200)이 복수의 테넌트(410, 420)의 각각과 연관된 복수의 장치로부터 수신된 데이터를 메모리(214)에 저장하는 예시를 나타내는 도면이다. 컴퓨팅 시스템(200)은 멀티 테넌트 환경 하에서 데이터의 기밀성을 유지하기 위해, 테넌트와 연관된 장치로 데이터를 전달하는 경우, 데이터에 대해 암호화를 수행하여 전달할 수 있다. 이와 유사하게, 테넌트와 연관된 장치가 컴퓨팅 시스템(200)으로 데이터를 전달하는 경우, 데이터에 대해 암호화를 수행하여 전달할 수 있다. 이를 위해, 컴퓨팅 시스템(200)과 각 테넌트와 연관된 장치 사이에 별도의 보안 채널이 사전에 생성될 수 있으며, 시큐리티 코어(222)는 별도의 보안 채널을 통해, 암호화 키 교환 알고리즘(예를 들어, ECDH 알고리즘)을 이용하여 각 테넌트와 연관된 장치로 암호화 키를 전송할 수 있다. 컴퓨팅 시스템(200)이 암호화 및/또는 복호화를 수행하는데 사용되는 암호화 키에 대한 정보는 시큐어 도메인(220) 내의 암호화 키 매니저(224)에 의해 관리될 수 있다. 도 4에서 암호화 키 매니저(224)는 시큐리티 코어(222)와 별개의 구성인 것처럼 도시되어 있으나, 이는 설명의 편의를 위한 것일 뿐 이에 한정되지 않는다. 일 실시예에 따르면, 암호화 키 매니저(224)의 적어도 일부 구성은 시큐리티 코어(222)에 포함될 수 있다.
시큐리티 코어(222)는 각 테넌트 또는 각 사용자의 데이터의 기밀성을 유지하기 위해, 양방향 암호화 알고리즘을 사용하여 암호화/복호화를 수행할 수 있다. 예를 들어, AES, SEED 등과 같은 대칭키 암호화 알고리즘 또는 RSA, DSA 등과 같은 비대칭키 암호화 알고리즘 등 해당 기술 분야에서 알려진 임의의 양방향 암호화 알고리즘이 사용될 수 있다. 다만, 이하에서는 설명의 편의를 위해, 시큐리티 코어(222)가 대칭키 암호화 알고리즘을 사용하여 데이터의 기밀성을 유지하는 것을 전제로 설명하고자 한다.
시큐리티 코어(222)는 제1 테넌트(410)와 연관된 장치로 별도의 보안 채널을 통해 제1 암호화 키(414)를 전송할 수 있다. 제1 테넌트(410)와 연관된 장치는 별도의 보안 채널을 통해 제공받은 제1 암호화 키(414)를 이용하여 제1 평문 데이터(412)에 대해 암호화를 수행하여 제1 암호화된 데이터(416)를 생성할 수 있다. 그런 다음, 제1 테넌트(410)와 연관된 장치는 생성된 제1 암호화된 데이터(416)를 컴퓨팅 시스템(200)으로 전송할 수 있다. 컴퓨팅 시스템(200)은 제1 테넌트(410)와 연관된 장치로부터 수신된 제1 암호화된 데이터(416)를 복호화하지 않고, 암호화된 형태 그대로 논시큐어 도메인(210) 내의 메모리(214)에 저장할 수 있다. 이와 같이, 컴퓨팅 시스템(200)은 테넌트와 연관된 장치로부터 수신된 암호화된 데이터를 복호화하여 평문의 형태로 메모리(214)에 저장하는 대신, 암호화된 형태로 메모리(214)에 저장함으로써, 데이터의 기밀성을 유지할 수 있다.
일 실시예에 따르면, 시큐리티 코어(222)는 복수의 테넌트의 각각과 연관된 암호화 키를 서로 상이한 암호화 키로 지정하여 관리함으로써, 각 테넌트의 데이터의 기밀성을 유지할 수 있다. 예를 들어, 시큐리티 코어(222)는 제2 테넌트(420)와 연관된 장치로 별도의 보안 채널을 통해 제2 암호화 키(424)를 전송할 수 있다. 제2 테넌트(420)와 연관된 장치는 별도의 보안 채널을 통해 제공받은 제2 암호화 키(424)를 이용하여 제2 평문 데이터(422)에 대해 암호화를 수행하여 제2 암호화된 데이터(426)를 생성할 수 있다. 그런 다음, 제2 테넌트(420)와 연관된 장치는 생성된 제2 암호화된 데이터(426)를 컴퓨팅 시스템(200)으로 전송할 수 있다. 컴퓨팅 시스템(200)은 제2 테넌트(420)와 연관된 장치로부터 수신된 제2 암호화된 데이터(426)를 복호화하지 않고, 암호화된 형태 그대로 논시큐어 도메인(210) 내의 메모리(214)에 저장할 수 있다.
논시큐어 도메인(210) 내의 메모리(214)에는 각 테넌트와 연관된 데이터가 서로 상이한 암호화 키를 이용하여 암호화된 형태로 저장되어 있다. 따라서, 제2 테넌트(420)와 연관된 장치가 메모리(214)에 저장된 제1 암호화된 데이터(416)에 대해 접근하더라도 암호화 키가 서로 달라, 복호화된 형태인 제1 평문 데이터(412)에 접근할 수 없다. 이러한 구성 하에서, 각 테넌트와 연관된 데이터에 대한 기밀성이 유지될 수 있다.
일 실시예에 따르면, 논시큐어 도메인(210) 내의 메모리(214)에 저장된 암호화된 형태의 데이터는 메인 코어에 의한 처리가 수행되기 직전에 복호화되어 메인 코어에 제공될 수 있다. 이와 관련하여서는 도 6을 참조하여 상세히 후술된다.
본 개시에서는, 3개의 테넌트와 컴퓨팅 시스템(200) 사이의 컨피덴셜 컴퓨팅에 대해 설명하였으나, 이에 한정되지 않으며, 2개 이하의 테넌트 또는 4개 이상의 테넌트와 컴퓨팅 시스템(200) 사이의 컨피덴셜 컴퓨팅이 수행되는 것도 가능하다.
도 5는 본 개시의 일 실시예에 따른 컴퓨팅 시스템이 동일한 테넌트에 속한 복수의 사용자(510, 520)의 각각과 연관된 복수의 장치로부터 수신된 데이터를 메모리(214)에 저장하는 예시를 나타내는 도면이다. 일 실시예에 따르면, 하나의 테넌트는 복수의 사용자를 포함할 수 있다. 사용자의 개인 정보 등 민감 정보를 포함하는 데이터의 경우, 동일한 테넌트에 속한 복수의 사용자 사이에서도 데이터의 기밀성이 유지되어야 할 필요성이 있다. 이에 따라, 시큐리티 코어는 동일한 테넌트에 속하는 복수의 사용자 각각과 연관된 암호화 키를 서로 상이한 암호화 키로 지정하여 관리함으로써, 각 사용자의 데이터의 기밀성을 유지할 수 있다. 복수의 사용자의 각각과 연관된 암호화 키에 대한 정보는 시큐어 도메인 내의 암호화 키 매니저(224)에 의해 관리될 수 있다.
예를 들어, 제1 테넌트(410)는 제1 사용자(510), 제2 사용자(520) 및 제3 사용자를 포함할 수 있다. 시큐리티 코어는 제1 사용자(510)와 연관된 장치로 별도의 보안 채널을 통해 제4 암호화 키(514)를 전송할 수 있다. 제1 사용자(510)와 연관된 장치는 별도의 보안 채널을 통해 제공받은 제4 암호화 키(514)를 이용하여 제4 평문 데이터(512)에 대해 암호화를 수행하여 제4 암호화된 데이터(516)를 생성할 수 있다. 그런 다음, 제1 사용자(510)와 연관된 장치는 생성된 제4 암호화된 데이터(516)를 컴퓨팅 시스템으로 전송할 수 있다. 컴퓨팅 시스템은 제1 사용자(510)와 연관된 장치로부터 수신된 제4 암호화된 데이터(516)를 복호화하지 않고, 암호화된 형태의 데이터를 논시큐어 도메인 내의 메모리(214)에 그대로 저장할 수 있다.
이와 유사하게, 시큐리티 코어는 별도의 보안 채널을 통해 제5 암호화 키(524)를 제2 사용자(520)와 연관된 장치로 전송할 수 있다. 제2 사용자(520)와 연관된 장치는 별도의 보안 채널을 통해 제공받은 제5 암호화 키(524)를 이용하여 제5 평문 데이터(522)에 대해 암호화를 수행하여 제5 암호화된 데이터(526)를 생성할 수 있다. 그런 다음, 제2 사용자(520)와 연관된 장치는 생성된 제5 암호화된 데이터(526)를 컴퓨팅 시스템으로 전송할 수 있다. 컴퓨팅 시스템은 제2 사용자(520)와 연관된 장치로부터 수신된 제5 암호화된 데이터(526)를 복호화하지 않고, 암호화된 형태 그대로 논시큐어 도메인 내의 메모리(214)에 저장할 수 있다.
논시큐어 도메인 내의 메모리(214)에는 각 사용자와 연관된 데이터가 서로 상이한 암호화 키를 이용하여 암호화된 형태로 저장되어 있다. 따라서, 제2 사용자(520)와 연관된 장치가 메모리(214)에 저장된 제4 암호화된 데이터(516)에 대해 접근하더라도 암호화 키가 서로 달라, 복호화된 형태인 제4 평문 데이터(512)에 접근할 수 없다. 이에 따라, 각 사용자와 연관된 데이터에 대한 기밀성이 유지될 수 있다.
본 개시에서는, 1개의 테넌트 내에 3명의 사용자가 포함되어 있는 것으로 도시되어 있으나, 이에 한정되지 않으며, 2명 이하의 사용자 또는 4명 이상의 사용자가 하나의 테넌트에 포함되도록 구성될 수 있다.
도 6은 본 개시의 일 실시예에 따른 시큐리티 코어(222)가 암호화된 데이터를 복호화하여 메인 코어(212)로 제공하는 예시를 나타내는 도면이다. 일 실시예에 따르면, 컴퓨팅 시스템은 데이터의 기밀성을 유지하기 위해 테넌트와 연관된 데이터를 암호화된 형태로 논시큐어 도메인(210) 내의 메모리(214)에 저장할 수 있다. 논시큐어 도메인(210) 내의 메모리(214)에 저장된 암호화된 형태의 데이터는, 데이터에 대한 메인 코어(212)의 처리가 수행되기 직전에 복호화되어 메인 코어(212)에 제공될 수 있다. 기밀성을 위해 복호화는 시큐리티 코어(222)에 의해 시큐어 도메인(220) 내에서 수행될 수 있다. 예를 들어, 시큐리티 코어(222)는 크립토 연산에 특화된 하드웨어인 크립토 액셀러레이터(310)를 이용하여 복호화를 수행할 수 있다.
도 6에서 크립토 액셀러레이터(310)는 시큐리티 코어(222)와 별개의 구성인 것처럼 도시되어 있으나, 이는 설명의 편의를 위한 것일 뿐 이에 한정되지 않는다. 일 실시예에 따르면, 크립토 액셀러레이터(310)는 시큐리티 코어(222)에 포함될 수 있다. 이와 유사하게, 도 6에서 컴퓨팅 유닛(600)은 메인 코어(212)와 별개의 구성인 것처럼 도시되어 있으나, 이는 설명의 편의를 위한 것일 뿐 이에 한정되지 않는다. 이 경우, 컴퓨팅 유닛(600)은 메인 코어(212)의 관리 하에 동작될 수 있다. 추가적으로 또는 이와 달리, 컴퓨팅 유닛(600)은 메인 코어(212)에 포함될 수 있다.
일 실시예에 따르면, 시큐리티 코어(222)는 제1 평문 데이터(412)에 대한 접근 요청(예를 들어, 제1 평문 데이터(412)에 대한 연산 요청 등)을 수신할 수 있다. 그런 다음, 시큐리티 코어(222)는 크립토 액셀러레이터(310)를 이용하여, 제1 암호화된 데이터(416) 및 제1 암호화 키(414)를 기초로 제1 평문 데이터(412)를 생성할 수 있다.
일 실시예에 따르면, 시큐리티 코어(222)는 제1 암호화된 데이터(416)에 대해 복호화를 수행하여 제1 평문 데이터(412)를 생성하기 전에, 접근 요청을 한 외부 장치의 접근 권한 여부를 확인할 수 있다. 예를 들어, 제1 평문 데이터(412)에 대한 접근 권한이 없는 제2 테넌트(420)와 연관된 장치로부터 접근 요청이 수신된 경우, 시큐리티 코어(222)는 제1 평문 데이터(412)에 대한 접근을 거부할 수 있다. 시큐리티 코어(222)가 외부 장치의 제1 평문 데이터(412)에 대한 접근 권한 여부를 확인하는 과정은 도 8을 참조하여 상세히 후술된다.
그런 다음, 시큐리티 코어(222)는 제1 평문 데이터(412)를 메인 코어(212)로 제공할 수 있다. 예를 들어, 시큐리티 코어(222)는 제1 평문 데이터(412)를 메인 코어(212)의 컴퓨팅 유닛(600)으로 제공할 수 있다. 메인 코어(212)의 컴퓨팅 유닛(600)은 제공된 제1 평문 데이터(412)에 대해 요청된 처리(예를 들어, 연산)를 수행할 수 있다.
일 실시예에 따르면, 메인 코어(212)(예를 들어, 메인 코어(212)의 컴퓨팅 유닛(600))는 제1 평문 데이터(412)에 대한 처리 결과를 생성할 수 있다. 시큐리티 코어(222)는 생성된 처리 결과에 대해 제1 테넌트(410)와 연관된 제1 암호화 키(414)를 이용하여 암호화를 수행하여 제1 테넌트(410)와 연관된 장치로 전송할 수 있다.
도 7은 본 개시의 일 실시예에 따른 시큐리티 코어(222)가 수신된 데이터를 새로운 암호화 키로 암호화하여 메모리(214)에 저장하는 예시를 나타내는 도면이다. 도 5를 참조하여 상술한 실시예에 따르면, 컴퓨팅 시스템은 제1 테넌트(410)와 연관된 장치로부터 수신된 암호화된 데이터를 그대로 메모리(214)에 저장한다. 이 경우, 제1 테넌트(410)와 연관된 장치가 관리하는 제1 암호화 키(414)가 악의적인 공격에 의해 노출되는 경우, 컴퓨팅 시스템의 메모리(214)에 저장된 데이터 역시 노출될 가능성이 있다.
일 실시예에 따르면, 시큐리티 코어(222)는 암호화 키의 노출 위험을 방지하기 위해, 제1 테넌트(410)와 연관된 장치로부터 수신된 데이터를 그대로 메모리에 저장하는 대신, 새로운 암호화 키를 사용하여 암호화한 뒤 메모리(214)에 저장할 수 있다.
예를 들어, 시큐리티 코어(222)는 제1 테넌트(410)와 연관된 장치로부터 제1 암호화된 데이터(416)를 수신할 수 있다. 여기서, 제1 암호화된 데이터(416)는 제1 암호화 키(414)를 이용하여 제1 평문 데이터(412)에 대해 암호화가 수행된 데이터일 수 있다. 시큐리티 코어(222)는 크립토 액셀러레이터(310)를 이용하여 제1 암호화 키(414)를 기초로 제1 암호화된 데이터(416)에 대한 복호화를 수행하여, 제1 평문 데이터(412)를 생성할 수 있다. 그런 다음, 시큐리티 코어(222)는 시큐어 도메인(220) 내의 암호화 키 매니저(224)에 의해 관리되는 제7 암호화 키(710)를 새로운 암호화 키로 지정 또는 결정할 수 있다. 시큐리티 코어(222)는 크립토 액셀러레이터(310)를 이용하여, 제1 평문 데이터(412) 및 제7 암호화 키(710)를 기초로 암호화를 수행하여 제7 암호화된 데이터(720)를 생성할 수 있다. 이렇게 제7 암호화된 데이터(720)는 논시큐어 도메인(210) 내의 메모리(214)에 저장될 수 있다.
논시큐어 도메인(210) 내의 메모리(214)에 저장된 제7 암호화된 데이터(720)는 데이터에 대한 메인 코어(212)(예를 들어, 메인 코어(212)의 컴퓨팅 유닛(600) 등)의 처리가 수행되기 직전에 복호화되어 메인 코어(212)에 제공될 수 있다.
제1 평문 데이터(412)에 대한 메인 코어(212)의 처리 결과로서 생성된 데이터는 시큐리티 코어(222)에 의해 암호화되어 제1 테넌트(410)와 연관된 장치로 전송될 수 있다. 일 실시예에 따르면, 시큐리티 코어(222)는 제1 테넌트(410)와 연관된 장치가 기존에 관리하던 제1 암호화 키(414)를 이용하여, 처리 결과로서 생성된 데이터에 대해 암호화를 수행한 뒤 제1 테넌트(410)와 연관된 장치로 전송할 수 있다. 대안적으로, 시큐리티 코어(222)는 별도의 보안 채널을 통해, 새롭게 지정된 제7 암호화 키(710)를 제1 테넌트(410)와 연관된 장치로 전송할 수 있다. 그리고 나서, 시큐리티 코어(222)는 제7 암호화 키(710)를 이용하여 처리 결과로서 생성된 데이터에 대해 암호화를 수행한 뒤 제1 테넌트(410)와 연관된 장치로 전송할 수도 있다.
도 8은 본 개시의 일 실시예에 따른 접근 권한 여부 확인 과정(800)의 예시를 나타내는 도면이다. 일 실시예에 따르면, 시큐리티 코어는 제1 평문 데이터에 대한 접근 요청을 수신하고(S810), 접근 요청을 한 외부 장치의 접근 권한 여부를 체크할 수 있다(S820).
제1 평문 데이터에 대해 접근 요청을 한 외부 장치의 접근 권한이 확인되는 경우, 시큐리티 코어는 제1 평문 데이터에 대한 접근을 허용할 수 있다(S830). 시큐리티 코어는 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성할 수 있으며, 생성된 제1 평문 데이터의 처리를 위해 제1 평문 데이터를 메인 코어의 컴퓨팅 유닛으로 제공할 수 있다(S840). 그런 다음, 메인 코어의 컴퓨팅 유닛에 의해 제1 평문 데이터에 대한 처리가 수행될 수 있다(S850). 여기서, 컴퓨팅 유닛은 메인 코어의 관리 하에 동작되거나 메인 코어에 포함될 수 있다.
제1 평문 데이터에 대해 접근 요청을 한 외부 장치의 접근 권한이 확인되지 않는 경우, 시큐리티 코어는 제1 평문 데이터에 대한 접근을 거부할 수 있다(S860). 또한, 시큐리티 코어는 외부 장치의 부적절한 접근 요청에 대한 로그를 저장하고(S870), 인터럽트를 일으켜 호스트에게 부적절한 접근을 알릴 수 있다(S880).
도 9는 본 개시의 일 실시예에 따른 시큐리티 코어(222)가 평문 데이터를 메모리(214, 226)에 저장하는 예시를 나타내는 도면이다. 일 실시예에 따르면, 제1 평문 데이터(412)가 메인 코어에 의해 반복적으로 사용되는 경우, 제1 평문 데이터(412)가 사용될 때마다 시큐리티 코어(222)가 제1 암호화된 데이터(416)에 대한 복호화를 반복적으로 수행하게 되므로 데이터 처리의 효율성이 떨어질 수 있다. 이에 따라, 시큐리티 코어(222)에 의해 복호화된 제1 평문 데이터(412)가 추후 재사용될 수 있는 데이터라고 판정된 경우, 시큐리티 코어(222)는 복호화된 제1 평문 데이터(412)를 메모리에 저장할 수 있다. 여기서, 메모리(214, 226)는 논시큐어 도메인(210) 내의 메모리(214) 및/또는 시큐어 도메인(220) 내의 메모리(226)일 수 있다.
논시큐어 도메인(210) 내의 메모리(214)는 메인 코어 및 시큐리티 코어(222)에 의해서 접근이 가능할 수 있으나, 시큐어 도메인(220) 내의 메모리(226)는 시큐리티 코어(222)에 의해서만 접근 가능할 수 있다. 이러한 구성 하에서, 시큐리티 코어(222)는 제1 평문 데이터(412)의 시큐리티 레벨에 따라 제1 평문 데이터(412)가 저장될 메모리를 결정할 수 있다. 제1 평문 데이터(412)의 시큐리티 레벨은 제1 평문 데이터(412)의 종류 및/또는 사용자 설정 등에 기초하여 결정될 수 있다.
예를 들어, 제1 평문 데이터(412)가 사용자의 얼굴 사진, 사용자의 의료 정보와 같은 민감 정보를 포함하는 경우, 시큐리티 레벨이 상대적으로 높게 결정될 수 있으며, 이에 따라 시큐어 도메인(220) 내의 메모리(226)에 저장될 수 있다. 다른 예로, 제1 평문 데이터(412)가 시스템 데이터(예를 들어, 펌웨어(firmware)와 연관된 데이터 등) 또는 기계학습 모델의 파라미터(예를 들어, 큰 용량을 가지는 커널 데이터)인 경우, 시큐리티 레벨이 상대적으로 낮게 결정될 수 있으며, 이에 따라 논시큐어 도메인(210) 내의 메모리(214)에 저장될 수 있다.
시큐리티 코어(222)는 메모리(214, 226)에 저장된 제1 평문 데이터(412)에 대한 접근 요청을 수신하는 경우, 접근을 요청한 외부 장치의 제1 평문 데이터(412)에 대한 접근 권한 여부를 체크한 뒤, 제1 평문 데이터(412)를 제공할 수 있다. 접근 권한 여부를 체크하는 과정은 도 8을 참조하여 상술한 과정과 동일/유사하게 수행될 수 있다.
일 실시예에서, 제1 평문 데이터(412)가 논시큐어 도메인(210) 내의 메모리(214)에 저장되는 경우, 제1 평문 데이터(412)는 악의적인 공격에 노출될 가능성이 있다. 이에 따라, 시큐리티 코어(222)는 논시큐어 도메인(210) 내의 메모리(214)에 저장된 제1 평문 데이터(412)에 대해 런타임 무결성 체크를 수행할 수 있다. 이와 관련하여서는 도 10을 참조하여 상세히 후술된다.
추가적으로, 시큐리티 코어(222)는 메모리(214, 226)에 저장된 제1 평문 데이터(412)에 대한 사용이 완료되었다는 신호를 수신할 수 있다. 이 경우, 시큐리티 코어(222)는 메모리(214, 226) 중 제1 평문 데이터(412)가 저장된 영역을 미리 지정된 값(예를 들어, 0)으로 저장함으로써, 데이터의 노출 위험을 제거할 수 있다.
도 10은 본 개시의 일 실시예에 따른 시큐리티 코어가 런타임 무결성 체크를 수행하는 예시를 나타내는 도면이다. 일 실시예에서, 평문 데이터가 논시큐어 도메인 내의 메모리(214)에 저장되는 경우, 평문 데이터는 악의적인 공격에 노출될 가능성이 있다. 이에 따라, 시큐리티 코어는 평문 데이터를 논시큐어 도메인 내의 메모리(214)에 저장할 때, 평문 데이터에 대한 암호화 알고리즘 출력 값을 함께 저장하고, 평문 데이터 및 암호화 알고리즘 출력 값을 이용하여 평문 데이터의 무결성 체크를 수행할 수 있다.
시큐리티 코어는 무결성 체크를 위해, 단방향 암호화 알고리즘을 이용할 수 있다. 단방향 암호화 알고리즘은 입력 값이 바뀌는 경우 출력 값이 바뀌는 것이 보장되고, 또한, 출력 값으로부터 입력 값을 도출하는 역연산이 매우 어렵거나 불가능한 알고리즘일 수 있다. 해당 기술 분야에서 알려진 임의의 단방향 암호화 알고리즘이 무결성 체크를 위해 사용될 수 있다. 예를 들어, 단방향 암호화 알고리즘에는 CRC, MD5, RIPEMD160, SHA-1, SHA-256, SHA-512 등과 같은 해시 알고리즘 등이 포함될 수 있으나, 이에 한정되지 않는다. 이하에서, '출력 값'은 단방향 암호화 알고리즘에 평문 데이터 및 암호화 키를 입력하여 출력된 암호화 알고리즘의 출력 값을 지칭할 수 있다.
예를 들어, 시큐리티 코어는 단방향 암호화 알고리즘을 이용하여, 제1 평문 데이터(412) 및 제8 암호화 키(1010)를 기초로 제1 출력 값(1020)을 생성할 수 있다. 구체적 예로, 시큐리티 코어가 해시 알고리즘에 제1 평문 데이터(412) 및 제8 암호화 키(1010)를 입력함으로써 출력된 해시 값이 제1 출력 값(1020)일 수 있다. 그런 다음, 제1 출력 값(1020)을 제1 평문 데이터(412)와 연관시켜 메모리(214)에 저장할 수 있다. 무결성 체크를 위해 사용되는 암호화 키는 시큐리티 코어에서 접근 가능한 시큐어 도메인(220) 내의 암호화 키 매니저(224)에 의해 관리될 수 있다.
시큐리티 코어는 메모리(214)에 저장된 제1 평문 데이터(412)에 대한 무결성 체크를 주기적으로 또는 비주기적으로 수행할 수 있다. 예를 들어, 시큐리티 코어는 단방향 암호화 알고리즘을 이용하여, 제1 평문 데이터(412) 및 제8 암호화 키(1010)를 기초로 제1 평문 데이터(412)에 대한 제3 출력 값(1030)을 생성할 수 있다. 그런 다음, 시큐리티 코어는 저장된 제1 출력 값(1020)과 생성된 제3 출력 값(1030)을 비교함으로써, 메모리(214)에 저장된 제1 평문 데이터(412)의 변조 여부를 체크할 수 있다.
변조 여부 체크 결과, 제1 출력 값(1020)과 제3 출력 값(1030)이 일치하지 않는 경우, 메모리(214)에 저장된 제1 평문 데이터(412)는 변조된 것으로 판단될 수 있다. 제1 평문 데이터(412)가 변조된 것으로 판단되는 경우, 시큐리티 코어는 시스템 보호 과정 및 리커버리 과정을 수행할 수 있다. 시큐리티 코어가 시스템 보호 과정 및 리커버리 과정을 수행하는 방법과 관련하여서는, 도 11 및 도 12를 참조하여 상세히 후술된다. 제1 출력 값(1020)과 제3 출력 값(1030)이 일치하는 경우, 메모리(214)에 저장된 제1 평문 데이터(412)의 무결성이 확인될 수 있다.
무결성 체크에 동일한 키를 지속적으로 사용하는 경우, 보안 위험에 노출될 가능성이 있다. 일 실시예에 따르면, 이러한 보안 위험에 노출되는 것을 방지하기 위해, 시큐리티 코어는 주기적으로 또는 비주기적으로 암호화 키를 변경하고 출력 값을 재생성하여 저장할 수 있다. 예를 들어, 시큐리티 코어는 단방향 암호화 알고리즘을 이용하여, 제1 평문 데이터(412) 및 암호화 키 매니저(224)에 의해 관리되는 제9 암호화 키를 기초로 새 출력 값을 생성할 수 있으며, 새 출력 값을 제1 평문 데이터(412)와 연관시켜 메모리(214)에 저장할 수 있다.
도 11은 본 개시의 일 실시예에 따른 시스템 보호 과정(1100)의 예시를 나타내는 도면이다. 일 실시예에 따르면, 런타임 무결성 체크 결과, 논시큐어 도메인 내의 메모리에 저장된 제1 평문 데이터가 변조되었다고 판단되는 경우, 시큐리티 코어는 메인 코어를 포함한 전체 시스템의 동작을 즉각적으로 중지시킴으로써 시스템 보호 과정(1100)을 개시할 수 있다(S1110). 메인 코어는 시큐리티 코어로부터 동작 재개 명령이 오기 전까지 동작 중지 상태를 유지(wait for interrupt)할 수 있다. 이러한 과정에서, 시큐리티 코어의 동작은 중지되지 않을 수 있다.
그런 다음, 시큐리티 코어는 런타임 무결성 체크를 실패했다는 로그를 기록할 수 있다(S1120). 예를 들어, 시큐리티 코어는 문제 상황을 분석하기 위해 필요한 로그 정보를 시큐어 도메인 내의 메모리(시큐리티 코어에서만 접근 가능한 메모리)에 저장할 수 있다.
그런 다음, 시큐리티 코어는 논시큐어 도메인 내의 메모리의 데이터를 복사하고/하거나 메인 메모리에 미리 지정된 값을 저장(rewrite)할 수 있다(S1130). 예를 들어, 시큐리티 코어는 논시큐어 도메인 내의 메모리의 전체 영역 또는 논시큐어 도메인 내의 메모리 중 변조가 감지된 제1 평문 데이터와 연관된 영역을 미리 지정된 값(예를 들어, 0)으로 저장할 수 있다. 일 실시예에 따르면, 시큐리티 코어는 논시큐어 도메인 내의 메모리의 전체 영역을 미리 지정된 값으로 저장하기 전에, 논시큐어 도메인 내의 메모리 중 변조가 감지된 제1 평문 데이터와 연관된 영역을 제외한 영역의 데이터를 시큐리티 코어에서 접근 가능한 별도의 메모리의 미리 지정된 영역에 복사할 수 있다.
그런 다음, 시큐리티 코어는 호스트에게 인터럽트를 사용하여 런타임 무결성 체크에 실패했음을 알림으로써, 시스템 보호 과정을 종료할 수 있다(S1140). 이후, 시큐리티 코어는 시스템 재구동을 위한 리커버리 과정을 수행할 수 있다.
도 12는 본 개시의 일 실시예에 따른 리커버리 과정(1200)의 예시를 나타내는 도면이다. 일 실시예에 따르면, 시큐리티 코어는 전술한 시스템 보호 과정(1100)을 수행한 뒤, 시스템 재구동을 위한 리커버리 과정(1200)을 수행할 수 있다. 이와 달리, 시스템 보호 과정(1100)의 적어도 일부와 리커버리 과정(1200)의 적어도 일부는 병렬적으로 수행될 수 있다.
먼저, 시큐리티 코어는 리커버리 데이터의 무결성을 체크할 수 있다(S1210). 예를 들어, 시큐리티 코어는 시큐리티 코어에서 접근 가능한 비휘발성 메모리에 별도로 저장된 신뢰할 수 있는 리커버리 데이터(예를 들어, 펌웨어, 페이지 테이블 등) 및 리커버리 데이터와 연관되어 저장된 출력 값(예를 들어, 해시 값)에 기초하여, 리커버리 데이터에 대한 변조 여부를 판단할 수 있다. 변조 여부의 판단은 도 10을 참조하여 상술한 무결성 체크 과정과 동일/유사하게 수행될 수 있다.
일 실시예에서, 단계 S1210의 수행 결과, 리커버리 데이터가 변조되지 않았다고 판단되는 경우, 시큐리티 코어는 리커버리 데이터를 논시큐어 도메인 내의 메모리에 로드하고(S1220), 메인 코어의 동작을 재가동시킬 수 있다(S1230). 예를 들어, 시큐리티 코어는 논시큐어 도메인 내의 메모리 중 변조가 감지된 제1 평문 데이터와 연관된 영역과 상이한 영역에 리커버리 데이터를 저장할 수 있다.
일 실시예에 따르면, 시스템이 재가동된 뒤, 시큐리티 코어는 도 10을 참조하여 상술한 무결성 체크 과정을 일시적으로, 주기적으로, 비주기적으로 및/또는 미리 지정된 기간 동안 수행할 수 있다(S1240). 일 실시예에서, 런타임 무결성 체크 결과, 아무런 이상이 없는 경우, 리커버리 과정은 종료될 수 있다. 이와 달리, 런타임 무결성 체크 과정 중, 논시큐어 도메인 내의 메모리에 저장된 적어도 일부의 데이터가 변조되었다고 판단되는 경우, 시큐리티 코어는 전술한 시스템 보호 과정을 재수행할 수 있다(S1250).
단계 S1210의 수행 결과, 리커버리 데이터가 변조되었다고 판단되는 경우 또는 단계 S1250의 시스템 보호 과정의 재수행이 완료된 경우, 시큐리티 코어는 인터럽트를 사용하여, 호스트에게 리커버리의 실패를 알리고(S1260), 호스트의 명령을 기다릴 수 있다(S1270).
일 실시예에 따르면, 시큐리티 코어는 호스트의 명령 수신을 위한 대기 중에 호스트의 시스템 접근을 감지한 경우, 호스트가 악의적인 공격을 당한 경우를 가정하여, 호스트의 시스템 접근에 대한 인증을 수행할 수 있다. 예를 들어, 인증 과정은 암호화 키 매니저가 관리하는 호스트와 연관된 암호화 키를 이용하여 진행될 수 있다. 또한, 인증은 기밀성을 위해, 양방향 암호화 알고리즘(예를 들어, AES, SEED 등과 같은 대칭키 암호화 알고리즘 또는 RSA, DSA 등과 같은 비대칭키 암호화 알고리즘)을 이용하여 수행될 수 있다.
도 13은 본 개시의 일부 실시예들에 따른 뉴럴 프로세싱 시스템을 설명하기 위한 블록도이다. 도 13을 참조하면, 본 개시의 일부 실시예에 따른 뉴럴 프로세싱 시스템(NPS)은 제1 뉴럴 프로세싱 장치(1), 제2 뉴럴 프로세싱 장치(2) 및 외부 인터페이스(3)를 포함할 수 있다.
제1 뉴럴 프로세싱 장치(1)는 인공 신경망을 이용하여 연산을 수행하는 장치일 수 있다. 제1 뉴럴 프로세싱 장치(1)는 예를 들어, 딥 러닝(deep learning) 연산 작업을 수행하는 것에 특화된 장치일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
제2 뉴럴 프로세싱 장치(2)는 제1 뉴럴 프로세싱 장치(1)와 동일 내지 유사한 구성을 가지는 장치일 수 있다. 제1 뉴럴 프로세싱 장치(1) 및 제2 뉴럴 프로세싱 장치(2)는 서로 외부 인터페이스(3)를 통해서 연결되어 데이터 및 제어 신호를 공유할 수 있다.
도 13에서는 2개의 뉴럴 프로세싱 장치를 도시하였지만, 본 발명의 일부 실시예에 따른 뉴럴 프로세싱 시스템(NPS)이 이에 제한되는 것은 아니다. 즉, 본 발명의 일부 실시예에 따른 뉴럴 프로세싱 시스템(NPS)은 3개 이상의 뉴럴 프로세싱 장치가 외부 인터페이스(3)를 통해서 서로 연결될 수도 있다. 또한, 반대로, 본 발명의 일부 실시예들에 따른 뉴럴 프로세싱 시스템(NPS)은 하나의 뉴럴 프로세싱 장치만을 포함할 수도 있다.
이때, 제1 뉴럴 프로세싱 장치(1) 및 제2 뉴럴 프로세싱 장치(2)는 각각 뉴럴 프로세싱 장치가 아닌 다른 프로세싱 장치일 수도 있다. 즉, 제1 뉴럴 프로세싱 장치(1) 및 제2 뉴럴 프로세싱 장치(2)는 각각 그래픽 프로세싱 장치(GPU, graphics processing unit), 중앙 처리 장치(CPU, central processing unit) 및 그 외의 다른 종류의 프로세싱 장치일 수도 있다. 이하에서는 편의상 제1 뉴럴 프로세싱 장치(1) 및 제2 뉴럴 프로세싱 장치(2)가 뉴럴 프로세싱 장치인 것으로 설명한다.
도 14는 도 13의 뉴럴 프로세싱 장치를 세부적으로 설명하기 위한 블록도이다. 도 14를 참조하면, 제1 뉴럴 프로세싱 장치(1)는 뉴럴 코어 SoC(10), CPU(20), 오프 칩 메모리(30), 제1 비휘발성 메모리 인터페이스(40), 제1 휘발성 메모리 인터페이스(50), 제2 비휘발성 메모리 인터페이스(60), 제2 휘발성 메모리 인터페이스(70) 및 컨트롤 인터페이스(CIF)(80)를 포함할 수 있다.
뉴럴 코어 SoC(10)는 시스템 온 칩(System on Chip) 장치일 수 있다. 뉴럴 코어 SoC(10)는 인공지능 연산 유닛으로 가속기(Accelerator)일 수 있다. 뉴럴 코어 SoC(10)는 예를 들어, GPU(graphics processing unit), FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 어느 하나일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
뉴럴 코어 SoC(10)는 외부 인터페이스(3)를 통해서 다른 외부의 연산 유닛들과 데이터를 교환할 수 있다. 또한, 뉴럴 코어 SoC(10)는 제1 비휘발성 메모리 인터페이스(40) 및 제1 휘발성 메모리 인터페이스(50)를 통해서 각각 비휘발성 메모리(31) 및 휘발성 메모리(32)와 연결될 수 있다.
CPU(20)는 제1 뉴럴 프로세싱 장치(1)의 시스템을 통제하고 프로그램의 연산을 실행하는 제어장치일 수 있다. CPU(20)는 범용 연산 유닛으로서 딥러닝에 많이 사용되는 병렬 단순 연산을 수행하기에는 효율이 낮을 수 있다. 따라서, 뉴럴 코어 SoC(10)가 딥러닝 추론 및 학습 작업에 연산을 수행하여 높은 효율을 가질 수 있다.
CPU(20)는 외부 인터페이스(3)를 통해서 다른 외부의 연산 유닛들과 데이터를 교환할 수 있다. 또한, CPU(20)는 제2 비휘발성 메모리 인터페이스(60) 및 제2 휘발성 메모리 인터페이스(70)를 통해서 각각 비휘발성 메모리(31) 및 휘발성 메모리(32)와 연결될 수 있다.
CPU(20)는 또한, 커맨드를 통해서 뉴럴 코어 SoC(10)에 태스크를 전달할 수 있다. 이때, CPU(20)는 뉴럴 코어 SoC(10)에 지시를 주는 일종의 호스트(Host)일 수 있다. 즉, 뉴럴 코어 SoC(10)는 CPU(20)의 지시에 따라서 딥러닝 작업 등 병렬 연산 작업을 효율적으로 수행할 수 있다.
또한, CPU(20)는 외부 호스트로부터 커맨드 또는 태스크를 전달받을 수 있고, 전달된 커맨드 또는 태스크를 기초로 제1 뉴럴 프로세싱 장치(1)를 제어하고 프로그램의 연산을 실행하도록 할 수도 있다. 그리고 다양한 실시예에 따르면 CPU(20)는 CPU(20)가 포함된 제1 뉴럴 프로세싱 장치(1)가 아닌 다른 뉴럴 프로세싱 장치를 제어하고 프로그램의 연산을 실행하도록 할 수도 있다.
오프 칩 메모리(30)는 뉴럴 코어 SoC(10)의 칩 외부에 배치된 메모리일 수 있다. 오프 칩 메모리(30)는 비휘발성 메모리(31) 및 휘발성 메모리(32)를 포함할 수 있다.
비휘발성 메모리(31)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 메모리일 수 있다. 비휘발성 메모리(31)는 예를 들어, ROM(Read-Only Memory), PROM(Programmable Read-Only Memory), EAROM(Erasable Alterable ROM), EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)(예를 들어, 낸드 플래시 메모리(NAND Flash memory), 노어 플래시 메모리(NOR Flash memory)), UVEPROM(Ultra-Violet Erasable Programmable Read-Only Memory), FeRAM(Ferroelectric Random Access Memory), MRAM(Magnetoresistive Random Access Memory), PRAM(Phase-change Random Access Memory), SONOS(silicon-oxide-nitride-oxide-silicon), RRAM(Resistive Random Access Memory), NRAM(Nanotube Random Access Memory), 마그네틱 컴퓨터 기억 장치(예를 들면, 하드 디스크, 디스켓 드라이브, 마그네틱 테이프), 광디스크 드라이브 및 3D 크로스포인트 메모리(3D XPoint memory) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
휘발성 메모리(32)는 비휘발성 메모리(31)와 달리, 저장된 정보를 유지하기 위해서 전력을 지속적으로 필요로 하는 메모리일 수 있다. 휘발성 메모리(32)는 예를 들어, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory) 및 DDR SDRAM(Double Data Rate SDRAM) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
제1 비휘발성 메모리 인터페이스(40) 및 제2 비휘발성 메모리 인터페이스(60)는 각각 예를 들어, PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), SATA(Serial Advanced Technology Attachment) 및 PCIe(PCI Express) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
제1 휘발성 메모리 인터페이스(50) 및 제2 휘발성 메모리 인터페이스(70)는 각각 예를 들어, SDR(Single Data Rate), DDR(Double Data Rate), QDR(Quad Data Rate), 및 XDR(eXtreme Data Rate, Octal Data Rate) 중 적어도 하나일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
컨트롤 인터페이스(80)는 CPU(20)와 뉴럴 코어 SoC(10) 사이의 제어 신호를 전달하기 위한 인터페이스일 수 있다. 컨트롤 인터페이스(80)는 CPU(20)의 커맨드를 전송하고, 이에 대한 뉴럴 코어 SoC(10)의 응답을 전송할 수 있다. 컨트롤 인터페이스(80)는 예를 들어, PCIe(PCI Express)일 수 있으나, 이에 제한되는 것은 아니다.
도 15는 도 14의 뉴럴 코어 SoC를 세부적으로 설명하기 위한 블록도이다. 도 14 및 도 15를 참조하면, 뉴럴 코어 SoC(10)는 적어도 하나의 뉴럴 프로세서(1000), 공유 메모리(2000), DMA(Direct Memory Access)(3000), 비휘발성 메모리 컨트롤러(4000), 휘발성 메모리 컨트롤러(5000), 메인 코어(7000), 시큐리티 코어(8000) 및 글로벌 인터커넥션(6000)을 포함할 수 있다.
뉴럴 프로세서(1000)는 연산 작업을 직접 수행하는 연산 유닛일 수 있다. 뉴럴 프로세서(1000)가 복수인 경우 연산 작업은 각각의 뉴럴 프로세서(1000)로 할당될 수 있다. 각각의 뉴럴 프로세서(1000)는 글로벌 인터커넥션(6000)을 통해서 서로 연결될 수 있다.
공유 메모리(2000)는 여러 뉴럴 프로세서(1000)에 의해서 공유되는 메모리일 수 있다. 공유 메모리(2000)는 각각의 뉴럴 프로세서(1000)의 데이터를 저장할 수 있다. 또한, 공유 메모리(2000)는 오프 칩 메모리(30)로부터 데이터를 수신하여 일시적으로 저장하고 각각의 뉴럴 프로세서(1000)로 전달할 수 있다. 반대로, 공유 메모리(2000)는 뉴럴 프로세서(1000)로부터 데이터를 수신하여 일시적으로 저장하고 도 14의 오프 칩 메모리(30)로 전달할 수도 있다.
공유 메모리(2000)는 상대적으로 속도가 빠른 메모리가 필요할 수 있다. 이에 따라, 공유 메모리(2000)는 예를 들어, SRAM을 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다. 즉, 공유 메모리(2000)는 DRAM을 포함할 수도 있다.
공유 메모리(2000)는 SoC 레벨 즉, L2(level 2)에 해당하는 메모리일 수 있다. 따라서, 공유 메모리(2000)는 L2 공유 메모리라 정의할 수도 있다.
DMA(3000)는 CPU(20) 또는 뉴럴 프로세서(1000)가 데이터의 입출력을 제어할 필요없이 직접 데이터의 이동을 제어할 수 있다. 이에 따라서, DMA(3000)가 메모리 사이의 데이터 이동을 제어하여 CPU(20) 또는 뉴럴 프로세서(1000)의 인터럽트의 횟수를 최소화시킬 수 있다.
DMA(3000)는 공유 메모리(2000)와 오프 칩 메모리(30) 사이의 데이터 이동을 제어할 수 있다. DMA(3000)의 권한을 통해서 비휘발성 메모리 컨트롤러(4000) 및 휘발성 메모리 컨트롤러(5000)가 데이터를 이동을 수행할 수 있다.
비휘발성 메모리 컨트롤러(4000)는 비휘발성 메모리(31)에 리드(read) 또는 라이트(write) 작업을 제어할 수 있다. 비휘발성 메모리 컨트롤러(4000)는 제1 비휘발성 메모리 인터페이스(40)를 통해서 비휘발성 메모리(31)를 제어할 수 있다.
휘발성 메모리 컨트롤러(5000)는 휘발성 메모리(32)에 리드 또는 라이트 작업을 제어할 수 있다. 또한, 휘발성 메모리 컨트롤러(5000)는 휘발성 메모리(32)의 리프레쉬 작업을 수행할 수 있다. 휘발성 메모리 컨트롤러(5000)는 제1 휘발성 메모리 인터페이스(50)를 통해서 휘발성 메모리(32)를 제어할 수 있다.
메인 코어(7000)는 컨트롤 인터페이스(80)와 연결될 수 있다. 메인 코어(7000)는 컨트롤 인터페이스(80)를 통해서 CPU(20)로부터 제어 신호를 수신할 수 있다. 메인 코어(7000)는 CPU(20)로부터 받은 제어 신호를 통해서 태스크를 생성하고, 이를 각각의 뉴럴 프로세서(1000)로 전달할 수 있다. 또한, 메인 코어(7000)는 각각의 뉴럴 프로세서(1000)로부터 태스크에 대한 완료 리포트를 수신할 수 있다. 메인 코어(7000)는 커맨드 프로세서(command processor)라고 명명될 수도 있다.
글로벌 인터커넥션(6000)은 적어도 하나의 뉴럴 프로세서(1000), 공유 메모리(2000), DMA(3000), 비휘발성 메모리 컨트롤러(4000), 메인 코어(7000) 및 휘발성 메모리 컨트롤러(5000)를 서로 연결할 수 있다. 또한, 외부 인터페이스(3)도 글로벌 인터커넥션(6000)에 연결될 수 있다. 글로벌 인터커넥션(6000)은 적어도 하나의 뉴럴 프로세서(1000), 공유 메모리(2000), DMA(3000), 비휘발성 메모리 컨트롤러(4000), 휘발성 메모리 컨트롤러(5000), 메인 코어(7000) 및 외부 인터페이스(3) 사이의 데이터가 이동하는 경로일 수 있다.
글로벌 인터커넥션(6000)은 데이터뿐만 아니라 제어 신호 및 동기화를 위한 신호를 전송할 수 있다.
시큐리티 코어(8000)는 컨피덴셜 컴퓨팅 방법을 수행하기 위한 장치일 수 있다. 도 15의 메인 코어(7000) 및 시큐리티 코어(8000)는 각각 상술된 메인 코어(212) 및 시큐리티 코어(222)에 대응될 수 있다.
도 16은 도 15의 글로벌 인터커넥션을 세부적으로 설명하기 위한 구조도이다. 도 16을 참조하면, 글로벌 인터커넥션(6000)은 데이터 채널(6100), 컨트롤 채널(6200) 및 L2 싱크 채널(6300)을 포함할 수 있다.
데이터 채널(6100)은 데이터를 전송하는 전용 채널일 수 있다. 데이터 채널(6100)을 통해서 적어도 하나의 뉴럴 프로세서(1000), 공유 메모리(2000), DMA(3000), 비휘발성 메모리 컨트롤러(4000), 휘발성 메모리 컨트롤러(5000) 및 외부 인터페이스(3)가 서로 데이터를 교환할 수 있다.
컨트롤 채널(6200)은 제어 신호를 전송하는 전용 채널일 수 있다. 컨트롤 채널(6200)을 통해서 적어도 하나의 뉴럴 프로세서(1000), 공유 메모리(2000), DMA(3000), 비휘발성 메모리 컨트롤러(4000), 휘발성 메모리 컨트롤러(5000), 메인 코어(7000) 및 외부 인터페이스(3)가 서로 제어 신호를 교환할 수 있다. 특히, 메인 코어(7000)는 각각의 뉴럴 프로세서(1000)로 여러가지 제어 신호를 전달할 수 있다.
L2 싱크 채널(6300)은 동기화 신호를 전송하는 전용 채널일 수 있다. L2 싱크 채널(6300)을 통해서 적어도 하나의 뉴럴 프로세서(1000), 공유 메모리(2000), DMA(3000), 비휘발성 메모리 컨트롤러(4000), 휘발성 메모리 컨트롤러(5000), 메인 코어(7000) 및 외부 인터페이스(3)가 서로 동기화 신호를 교환할 수 있다.
L2 싱크 채널(6300)은 글로벌 인터커넥션(6000) 내부에 전용 채널로 설정되어 다른 채널과 겹치지 않고 동기화 신호를 빠르게 전송할 수 있다. 이에 따라서, 본 발명의 일부 실시예에 따른 뉴럴 프로세싱 장치는 새로운 와이어링 작업이 필요하지 않고 기존에 사용되는 글로벌 인터커넥션(6000)을 이용하여 동기화 작업을 원활하게 진행할 수 있다.
도 17은 본 개시의 일 실시예에 따른 컨피덴셜 컴퓨팅 방법(1700)의 예시를 나타내는 흐름도이다. 일 실시예에 따르면, 방법(1700)은 적어도 하나의 프로세서를 포함하는 시큐리티 코어에 의해 수행될 수 있다. 시큐리티 코어는 제1 테넌트와 연관된 제1 암호화된 데이터를 제1 메모리에 저장할 수 있다(S1710). 여기서, 제1 암호화된 데이터는 제1 테넌트와 연관된 제1 암호화 키를 이용하여, 제1 평문 데이터에 대해 암호화가 수행된 데이터일 수 있다.
예를 들어, 시큐리티 코어는 제1 테넌트와 연관된 장치로부터 제1 암호화된 데이터를 수신하여, 수신된 데이터를 그대로 제1 메모리에 저장할 수 있다. 다른 예로, 시큐리티 코어는 암호화 키의 노출 위험을 방지하기 위해, 제1 테넌트와 연관된 장치로부터 수신된 데이터를 새로운 암호화 키를 사용하여 암호화한 뒤 제1 메모리에 저장할 수 있다. 구체적으로, 시큐리티 코어는 제1 테넌트와 연관된 장치로부터 제4 암호화된 데이터를 수신할 수 있다. 여기서, 제4 암호화된 데이터는 제3 암호화 키를 이용하여 제1 평문 데이터에 대해 암호화가 수행된 데이터일 수 있다. 시큐리티 코어는 제3 암호화 키를 이용하여, 제4 암호화된 데이터에 대한 복호화를 수행하여 제1 평문 데이터를 생성한 뒤, 제3 암호화 키는 상이한 제1 암호화 키를 새로운 암호화 키로 이용하여, 제1 평문 데이터에 대해 암호화를 수행하여 제1 암호화된 데이터를 생성할 수 있다. 그런 다음, 시큐리티 코어는 제1 암호화된 데이터를 제1 메모리에 저장할 수 있다.
추가적으로, 시큐리티 코어는 제2 테넌트와 연관된 제2 암호화된 데이터를 제1 메모리에 저장할 수 있다. 여기서, 제2 암호화된 데이터는, 제2 테넌트와 연관된 제2 암호화 키를 이용하여, 제2 평문 데이터에 대해 암호화가 수행된 데이터일 수 있다. 이때, 제2 테넌트와 연관된 제2 암호화 키는 제1 테넌트와 연관된 제1 암호화 키와 상이할 수 있다.
일 실시예에 따르면, 제1 암호화된 데이터는 제1 테넌트에 속한 제1 사용자와 연관된 데이터일 수 있다. 일 실시예에서, 시큐리티 코어는 제1 테넌트에 속한 다른 사용자와 연관된 데이터에 대해서는 제1 암호화 키와 상이한 암호화 키를 사용하여 데이터를 관리할 수 있다. 예를 들어, 시큐리티 코어는 제2 사용자와 연관된 제6 암호화된 데이터를 제1 메모리에 저장할 수 있다. 여기서, 제6 암호화된 데이터는, 제4 암호화 키를 이용하여, 제4 평문 데이터에 대해 암호화가 수행된 데이터일 수 있고, 제1 암호화 키와 제4 암호화 키는 상이할 수 있다.
일 실시예에 따르면, 시큐리티 코어는 데이터에 대한 암호화/복호화를 수행함에 있어서, 암호화 또는 복호화 중 적어도 하나의 가속을 위한 크립토 액셀러레이터를 이용하여 수행할 수 있다.
시큐리티 코어는 제1 평문 데이터에 대한 접근 요청(예를 들어, 제1 평문 데이터에 대한 연산 요청)을 수신하는 것에 응답하여, 제1 암호화 키를 이용하여, 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성할 수 있다(S1720). 일 실시예에 따르면, 시큐리티 코어는 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하기 전에, 접근 요청을 한 외부 장치의 접근 권한 여부를 확인할 수 있다. 일 실시예에 따르면, 시큐리티 코어가 외부 장치의 제1 평문 데이터에 대한 접근 권한 여부를 확인하는 과정은 도 8을 참조하여 상술한 바와 같이 수행될 수 있다.
그런 다음, 시큐리티 코어는 제1 평문 데이터를 제1 메모리에 저장된 데이터에 대한 처리를 수행하는 메인 코어로 제공할 수 있다(S1730). 예를 들어, 시큐리티 코어는 제1 평문 데이터를 메인 코어의 컴퓨팅 유닛으로 제공할 수 있다. 메인 코어의 컴퓨팅 유닛은 제공된 제1 평문 데이터에 대해 요청된 처리(예를 들어, 연산)를 수행할 수 있다.
일 실시예에 따르면, 메인 코어(예를 들어, 메인 코어의 컴퓨팅 유닛)는 제1 평문 데이터에 대한 처리 결과로서 제3 평문 데이터를 생성할 수 있다. 시큐리티 코어는 처리 결과로서 생성된 제3 평문 데이터에 대해 암호화를 수행하여 제1 테넌트와 연관된 장치로 전송할 수 있다
일 실시예에서, 컴퓨팅 시스템이 제1 테넌트로부터 제1 암호화 키를 이용하여 암호화된 데이터를 수신하고 수신된 데이터를 제1 메모리에 그대로 저장했던 경우, 시큐리티 코어는 생성된 제3 평문 데이터 역시 제1 암호화 키를 이용하여 암호화를 수행하여 제3 암호화된 데이터를 생성할 수 있다. 그런 다음, 제1 테넌트와 연관된 장치로 제3 암호화된 데이터를 전송할 수 있다.
다른 실시예에 따르면, 컴퓨팅 시스템이 제1 테넌트로부터 제3 암호화 키를 이용하여 암호화된 데이터를 수신하고, 수신된 데이터를 복호화한 뒤, 새로운 암호화 키인 제1 암호화 키로 암호화하여 제1 메모리에 저장했을 수 있다. 이 경우, 시큐리티 코어는 제1 암호화 키 또는 제3 암호화 키를 이용하여 제3 평문 데이터에 대해 암호화를 수행하여 제3 암호화된 데이터 또는 제5 암호화된 데이터를 생성하고, 생성된 암호화된 데이터를 제1 테넌트와 연관된 장치로 전송할 수 있다. 시큐리티 코어가 새로운 암호화 키인 제1 암호화 키를 이용하여 암호화한 제3 암호화된 데이터를 제1 테넌트와 연관된 장치로 전송하는 경우, 별도로 형성된 보안 채널을 통해, 새로운 암호화 키인 제1 암호화 키를 제1 테넌트와 연관된 장치로 전송할 수 있다.
일 실시예에서, 시큐리티 코어에 의해 복호화된 제1 평문 데이터에 대한 재사용이 가능한 경우, 제1 평문 데이터를 메모리에 저장할 수 있다. 여기서, 메모리는 제1 메모리 또는 시큐리티 코어에 의해서만 접근 가능하고 메인 코어의 접근이 불가한 제2 메모리일 수 있다. 일 실시예에 따르면, 제1 평문 데이터는 제1 평문 데이터의 시큐리티 레벨에 기초하여, 제1 메모리 또는 제2 메모리에 저장될 수 있다. 제1 평문 데이터가 메모리에 저장된 경우, 시큐리티 코어는 외부 장치로부터 메모리에 저장된 제1 평문 데이터에 대한 접근 요청을 수신하고, 외부 장치의 제1 평문 데이터에 대한 접근 권한 여부를 체크한 뒤, 제1 평문 데이터를 제공할 수 있다.
추가적으로, 메모리에 저장된 제1 평문 데이터에 대한 사용이 완료되는 경우, 시큐리티 코어는 메모리 중 제1 평문 데이터가 저장된 영역을 미리 지정된 값으로 저장할 수 있다.
상술한 방법은 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램으로 제공될 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록 수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 개시의 방법, 동작 또는 기법들은 다양한 수단에 의해 구현될 수도 있다. 예를 들어, 이러한 기법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본원의 개시와 연계하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로 구현될 수도 있음을 통상의 기술자들은 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 대체를 명확하게 설명하기 위해, 다양한 예시적인 구성요소들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는 지의 여부는, 특정 애플리케이션 및 전체 시스템에 부과되는 설계 요구사항들에 따라 달라진다. 통상의 기술자들은 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능을 구현할 수도 있으나, 그러한 구현들은 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안된다.
하드웨어 구현에서, 기법들을 수행하는 데 이용되는 프로세싱 유닛들은, 하나 이상의 ASIC들, DSP들, 디지털 신호 프로세싱 디바이스들(digital signal processing devices; DSPD들), 프로그램가능 논리 디바이스들(programmable logic devices; PLD들), 필드 프로그램가능 게이트 어레이들(field programmable gate arrays; FPGA들), 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 전자 디바이스들, 본 개시에 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 컴퓨터, 또는 이들의 조합 내에서 구현될 수도 있다.
따라서, 본 개시와 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, DSP, ASIC, FPGA나 다른 프로그램 가능 논리 디바이스, 이산 게이트나 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계된 것들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 구성의 조합으로서 구현될 수도 있다.
펌웨어 및/또는 소프트웨어 구현에 있어서, 기법들은 랜덤 액세스 메모리(random access memory; RAM), 판독 전용 메모리(read-only memory; ROM), 비휘발성 RAM(non-volatile random access memory; NVRAM), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable PROM), 플래시 메모리, 컴팩트 디스크(compact disc; CD), 자기 또는 광학 데이터 스토리지 디바이스 등과 같은 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수도 있다. 명령들은 하나 이상의 프로세서들에 의해 실행 가능할 수도 있고, 프로세서(들)로 하여금 본 개시에 설명된 기능의 특정 양태들을 수행하게 할 수도 있다.
소프트웨어로 구현되는 경우, 상기 기법들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 컴퓨터 판독 가능한 매체를 통해 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다.
예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 본원에서 사용된 디스크(disk) 와 디스크(disc)는, CD, 레이저 디스크, 광 디스크, DVD(digital versatile disc), 플로피디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크들(disks)은 보통 자기적으로 데이터를 재생하고, 반면 디스크들(discs) 은 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체 내에 상주할 수도 있다. 예시적인 저장 매체는, 프로세가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있도록, 프로세서에 연결될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서와 저장 매체는 ASIC 내에 존재할 수도 있다. ASIC은 유저 단말 내에 존재할 수도 있다. 대안으로, 프로세서와 저장 매체는 유저 단말에서 개별 구성요소들로서 존재할 수도 있다.
이상 설명된 실시예들이 하나 이상의 독립형 컴퓨터 시스템에서 현재 개시된 주제의 양태들을 활용하는 것으로 기술되었으나, 본 개시는 이에 한정되지 않고, 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 본 개시에서 주제의 양상들은 복수의 프로세싱 칩들이나 장치들에서 구현될 수도 있고, 스토리지는 복수의 장치들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 장치들은 PC들, 네트워크 서버들, 및 휴대용 장치들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 개시의 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
112: 제1 테넌트 114: 제2 테넌트 116: 제3 테넌트
120: 애플리케이션 인스턴스
130: 데이터베이스

Claims (20)

  1. 적어도 하나의 프로세서를 포함하는 시큐리티 코어에 의해 수행되는, 컨피덴셜 컴퓨팅 방법으로서,
    제1 테넌트와 연관된 제1 암호화된 데이터를 제1 메모리에 저장하는 단계 - 상기 제1 암호화된 데이터는, 상기 제1 테넌트와 연관된 제1 암호화 키를 이용하여, 제1 평문 데이터(plain text data)에 대해 암호화가 수행된 데이터임 -;
    상기 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 상기 제1 암호화 키를 이용하여, 상기 제1 암호화된 데이터에 대해 복호화를 수행하여 상기 제1 평문 데이터를 생성하는 단계; 및
    상기 제1 평문 데이터를 상기 제1 메모리에 저장된 데이터에 대한 처리를 수행하는 메인 코어로 제공하는 단계
    를 포함하는, 컨피덴셜 컴퓨팅 방법.
  2. 제1항에 있어서,
    상기 제1 암호화된 데이터에 대한 복호화는, 암호화 또는 복호화 중 적어도 하나의 가속을 위한 크립토 액셀러레이터를 이용하여 수행되는, 컨피덴셜 컴퓨팅 방법.
  3. 제1항에 있어서,
    제2 테넌트와 연관된 제2 암호화된 데이터를 상기 제1 메모리에 저장하는 단계 - 상기 제2 암호화된 데이터는, 상기 제2 테넌트와 연관된 제2 암호화 키를 이용하여, 제2 평문 데이터에 대해 암호화가 수행된 데이터임 -
    를 더 포함하고,
    상기 제1 암호화 키와 상기 제2 암호화 키는 상이한, 컨피덴셜 컴퓨팅 방법.
  4. 제1항에 있어서,
    상기 제1 암호화된 데이터는 상기 제1 테넌트와 연관된 장치로부터 수신된 데이터인, 컨피덴셜 컴퓨팅 방법.
  5. 제1항에 있어서,
    상기 제1 암호화 키를 이용하여, 상기 제1 평문 데이터에 대한 상기 메인 코어의 처리 결과로서 생성된 제3 평문 데이터에 대해 암호화를 수행하여 제3 암호화된 데이터를 생성하는 단계
    를 더 포함하고,
    상기 생성된 제3 암호화된 데이터는 상기 제1 테넌트와 연관된 장치로 전송되는, 컨피덴셜 컴퓨팅 방법.
  6. 제1항에 있어서,
    상기 제1 테넌트와 연관된 제1 암호화된 데이터를 상기 제1 메모리에 저장하는 단계 이전에,
    제3 암호화 키를 이용하여, 제4 암호화된 데이터에 대한 복호화를 수행하여 상기 제1 평문 데이터를 생성하는 단계 - 상기 제4 암호화된 데이터는 상기 제1 테넌트와 연관된 장치로부터 수신된 데이터이고, 상기 제4 암호화된 데이터는 상기 제3 암호화 키를 이용하여 상기 제1 평문 데이터에 대해 암호화가 수행된 데이터임 -; 및
    새로운 암호화 키로서 상기 제1 암호화 키를 이용하여, 상기 제1 평문 데이터에 대해 암호화를 수행하여 상기 제1 암호화된 데이터를 생성하는 단계
    를 더 포함하고,
    상기 제1 암호화 키와 상기 제3 암호화 키는 상이한, 컨피덴셜 컴퓨팅 방법.
  7. 제6항에 있어서,
    상기 제3 암호화 키를 이용하여, 상기 제1 평문 데이터에 대한 상기 메인 코어의 처리 결과로서 생성된 제3 평문 데이터에 대해 암호화를 수행하여 제5 암호화된 데이터를 생성하는 단계
    를 더 포함하고,
    상기 제5 암호화된 데이터는 상기 제1 테넌트와 연관된 장치로 전송되는, 컨피덴셜 컴퓨팅 방법.
  8. 제1항에 있어서,
    상기 제1 암호화된 데이터는, 상기 제1 테넌트에 속한 제1 사용자와 연관되고,
    상기 방법은,
    상기 제1 테넌트에 속한 제2 사용자와 연관된 제6 암호화된 데이터를 상기 제1 메모리에 저장하는 단계 - 상기 제6 암호화된 데이터는, 제4 암호화 키를 이용하여, 제4 평문 데이터에 대해 암호화가 수행된 데이터임 -
    를 더 포함하고,
    상기 제1 암호화 키와 상기 제4 암호화 키는 상이한, 컨피덴셜 컴퓨팅 방법.
  9. 제1항에 있어서,
    상기 제1 암호화된 데이터에 대해 복호화를 수행하여 상기 제1 평문 데이터를 생성하는 단계는,
    상기 제1 테넌트와 연관된 장치로부터 상기 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 상기 제1 테넌트와 연관된 장치의 상기 제1 평문 데이터에 대한 접근 권한 여부를 체크하는 단계; 및
    상기 제1 테넌트와 연관된 장치의 상기 제1 평문 데이터에 대한 접근 권한이 확인되는 경우, 상기 제1 암호화 키를 이용하여, 상기 제1 암호화된 데이터에 대해 복호화를 수행하여 상기 제1 평문 데이터를 생성하는 단계
    를 포함하는, 컨피덴셜 컴퓨팅 방법.
  10. 제1항에 있어서,
    외부 장치로부터 상기 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 상기 외부 장치의 상기 제1 평문 데이터에 대한 접근 권한 여부를 체크하는 단계; 및
    상기 외부 장치의 상기 제1 평문 데이터에 대한 접근 권한이 없다고 판단되는 경우,
    상기 외부 장치의 접근 요청을 거부하는 단계;
    부적절한 접근 요청에 대한 로그를 저장하는 단계; 및
    호스트에 상기 부적절한 접근을 알리는 단계
    를 더 포함하는, 컨피덴셜 컴퓨팅 방법.
  11. 제1항에 있어서,
    상기 제1 평문 데이터에 대한 재사용이 가능한 경우, 상기 제1 평문 데이터를 메모리에 저장하는 단계
    를 더 포함하고,
    상기 메모리는, 상기 제1 메모리 또는 상기 시큐리티 코어에 의해서만 접근 가능하고 상기 메인 코어의 접근이 불가한 제2 메모리인, 컨피덴셜 컴퓨팅 방법.
  12. 제11항에 있어서,
    상기 제1 평문 데이터는 상기 제1 평문 데이터의 시큐리티 레벨에 기초하여, 상기 제1 메모리 또는 상기 제2 메모리에 저장되는, 컨피덴셜 컴퓨팅 방법.
  13. 제11항에 있어서,
    외부 장치로부터 상기 메모리에 저장된 상기 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 상기 외부 장치의 상기 제1 평문 데이터에 대한 접근 권한 여부를 체크하는 단계
    를 더 포함하는, 컨피덴셜 컴퓨팅 방법.
  14. 제11항에 있어서,
    상기 제1 평문 데이터에 대한 사용이 완료되는 경우, 상기 메모리 중 상기 제1 평문 데이터가 저장된 영역을 미리 지정된 값으로 저장하는 단계
    를 더 포함하는, 컨피덴셜 컴퓨팅 방법.
  15. 컴퓨팅 장치로서,
    제1 메모리;
    상기 제1 메모리에 저장된 적어도 일부의 데이터를 로드하여 구동 또는 처리를 수행하도록 구성된 메인 코어; 및
    제1 테넌트와 연관된 제1 암호화된 데이터 - 상기 제1 암호화된 데이터는, 상기 제1 테넌트와 연관된 제1 암호화 키를 이용하여, 제1 평문 데이터에 대해 암호화가 수행된 데이터임 -를 상기 제1 메모리에 저장하고, 상기 제1 평문 데이터에 대한 접근 요청을 수신하는 것에 응답하여, 상기 제1 암호화 키를 이용하여, 상기 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하고, 상기 제1 평문 데이터를 상기 메인 코어로 제공하도록 구성된 시큐리티 코어
    를 포함하는, 컴퓨팅 장치.
  16. 제15항에 있어서,
    상기 컴퓨팅 장치는,
    암호화 또는 복호화 중 적어도 하나의 가속을 위한 크립토 액셀러레이터 - 상기 크립토 액셀러레이터는 상기 시큐리티 코어에 의해서만 접근 가능함 -를 더 포함하고,
    상기 시큐리티 코어는,
    상기 크립토 액셀러레이터를 이용하여 암호화 또는 복호화 중 적어도 하나를 수행하도록 구성되는, 컴퓨팅 장치.
  17. 제15항에 있어서,
    상기 제1 테넌트와 연관된 상기 제1 암호화 키는, 제2 테넌트와 연관된 제2 암호화 키와 상이하고,
    복수의 테넌트와 복수의 암호화 키 간의 매칭 정보는 상기 시큐리티 코어만 접근 가능하고, 상기 메인 코어의 접근이 불가한, 컴퓨팅 장치.
  18. 제15항에 있어서,
    상기 제1 테넌트와 연관된 상기 제1 암호화 키는, 상기 제1 테넌트에 속한 제1 사용자와 연관된 암호화 키이고,
    상기 제1 암호화 키는, 상기 제1 테넌트에 속한 제2 사용자와 연관된 제3 암호화 키와 상이하고,
    복수의 사용자와 복수의 암호화 키 간의 매칭 정보는 상기 시큐리티 코어에 의해서만 접근 가능하고, 상기 메인 코어의 접근이 불가한, 컴퓨팅 장치.
  19. 제15항에 있어서,
    상기 시큐리티 코어는,
    외부 장치로부터 상기 제1 평문 데이터에 대한 접근 요청이 수신되는 것에 응답하여, 상기 제1 암호화된 데이터에 대해 복호화를 수행하여 제1 평문 데이터를 생성하기 전에, 상기 외부 장치의 상기 제1 평문 데이터에 대한 접근 권한 여부를 체크하도록 구성되는, 컴퓨팅 장치.
  20. 제15항에 있어서,
    상기 메인 코어는,
    상기 시큐리티 코어에 의해 제공된 상기 제1 평문 데이터에 대한 처리를 수행하여 제3 평문 데이터를 생성하도록 구성되고,
    상기 시큐리티 코어는,
    상기 제1 암호화 키를 이용하여, 상기 제3 평문 데이터에 대해 암호화를 수행하여 제2 암호화된 데이터를 생성하고, 상기 제2 암호화된 데이터를 상기 제1 테넌트와 연관된 장치로 전송하도록 구성되는, 컴퓨팅 장치.
KR1020230013955A 2023-02-01 2023-02-01 컨피덴셜 컴퓨팅 방법 및 시스템 KR20240121109A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020230013955A KR20240121109A (ko) 2023-02-01 2023-02-01 컨피덴셜 컴퓨팅 방법 및 시스템
US18/338,264 US12008132B1 (en) 2023-02-01 2023-06-20 Method and system for confidential computing
US18/658,736 US20240296245A1 (en) 2023-02-01 2024-05-08 Method and system for confidential computing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230013955A KR20240121109A (ko) 2023-02-01 2023-02-01 컨피덴셜 컴퓨팅 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20240121109A true KR20240121109A (ko) 2024-08-08

Family

ID=91382574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230013955A KR20240121109A (ko) 2023-02-01 2023-02-01 컨피덴셜 컴퓨팅 방법 및 시스템

Country Status (2)

Country Link
US (2) US12008132B1 (ko)
KR (1) KR20240121109A (ko)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069153B2 (en) * 2005-12-02 2011-11-29 Salesforce.Com, Inc. Systems and methods for securing customer data in a multi-tenant environment
US9069599B2 (en) * 2008-06-19 2015-06-30 Servicemesh, Inc. System and method for a cloud computing abstraction layer with security zone facilities
AU2011289318B2 (en) * 2010-08-11 2016-02-25 Security First Corp. Systems and methods for secure multi-tenant data storage
US9571279B2 (en) * 2014-06-05 2017-02-14 Cavium, Inc. Systems and methods for secured backup of hardware security modules for cloud-based web services
US10476913B2 (en) * 2017-09-08 2019-11-12 Salesforce.Com, Inc. Intercepting calls for encryption handling in persistent access multi-key systems
US10776525B2 (en) * 2017-09-29 2020-09-15 Intel Corporation Multi-tenant cryptographic memory isolation
US10684945B2 (en) * 2018-03-29 2020-06-16 Intel Corporation System, apparatus and method for providing key identifier information in a non-canonical address space
US10884814B2 (en) * 2018-09-28 2021-01-05 Intel Corporation Mobile edge-cloud security infrastructure
US11797690B2 (en) * 2019-04-11 2023-10-24 Intel Corporation Protected data accesses using remote copy operations
US20210150052A1 (en) * 2019-11-18 2021-05-20 Salesforce.Com, Inc. Collecting, displaying, and/or storing information pertaining to consent
US11755767B2 (en) * 2020-09-02 2023-09-12 Auction.Com, Llc Systems and methods of multi-key encryption for multi-tenant database
US11763043B2 (en) * 2020-09-25 2023-09-19 Intel Corporation Enabling late-binding of security features via configuration security controller for accelerator devices
US20220279057A1 (en) * 2022-05-17 2022-09-01 Intel Corporation Reliable transport protocol translation technologies

Also Published As

Publication number Publication date
US12008132B1 (en) 2024-06-11
US20240296245A1 (en) 2024-09-05

Similar Documents

Publication Publication Date Title
WO2021184975A1 (zh) 链上数据的链下隐私计算方法及装置
US20210328791A1 (en) Blockchain data processing methods and apparatuses based on cloud computing
EP3937046A1 (en) Trusted startup methods and apparatuses of dedicated blockchain node device
US10922439B2 (en) Technologies for verifying memory integrity across multiple memory regions
US10069629B2 (en) Controlled access to data in a sandboxed environment
WO2020233615A1 (zh) 结合用户类型与事件函数类型的收据存储方法和节点
WO2020233624A1 (zh) 结合交易类型和事件函数类型的收据存储方法和节点
WO2020233628A1 (zh) 结合事件函数类型和判断条件的收据存储方法和节点
US10922117B2 (en) VTPM-based virtual machine security protection method and system
WO2020233635A1 (zh) 结合多类型维度的条件限制的收据存储方法和节点
US8181028B1 (en) Method for secure system shutdown
WO2020233632A1 (zh) 基于事件函数类型的收据存储方法和节点
WO2020233619A1 (zh) 结合用户类型与交易类型的收据存储方法和节点
KR20050085678A (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
TW202036347A (zh) 資料儲存、驗證方法及裝置
WO2020233627A1 (zh) 多类型维度的收据存储方法和节点
CN107016288B (zh) 可信执行环境
US11621834B2 (en) Systems and methods for preserving data integrity when integrating secure multiparty computation and blockchain technology
WO2020233634A1 (zh) 结合交易与事件类型的条件限制的收据存储方法和节点
WO2020233633A1 (zh) 基于判断条件的收据存储方法和节点
US20230021749A1 (en) Wrapped Keys with Access Control Predicates
WO2023226349A1 (zh) 一种基于可信执行环境的隐私计算系统及方法
TW202008744A (zh) 動態密碼密鑰擴展
WO2020000491A1 (zh) 一种文件存储方法、装置及存储介质
CN116886356B (zh) 一种芯片级透明文件加密存储系统、方法及设备