KR20210071813A - 신뢰실행환경 간의 데이터 공유 - Google Patents

신뢰실행환경 간의 데이터 공유 Download PDF

Info

Publication number
KR20210071813A
KR20210071813A KR1020200101596A KR20200101596A KR20210071813A KR 20210071813 A KR20210071813 A KR 20210071813A KR 1020200101596 A KR1020200101596 A KR 1020200101596A KR 20200101596 A KR20200101596 A KR 20200101596A KR 20210071813 A KR20210071813 A KR 20210071813A
Authority
KR
South Korea
Prior art keywords
processing device
data
encryption key
processor
data encryption
Prior art date
Application number
KR1020200101596A
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 US17/111,620 priority Critical patent/US20210173950A1/en
Publication of KR20210071813A publication Critical patent/KR20210071813A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0827Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving distinctive intermediate devices or communication paths
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에 따른 신뢰실행환경을 포함하는 처리장치의 데이터 공유 방법은, 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신하는 단계; 상기 수신된 데이터암호화키를 상기 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장하는 단계; 데이터의 공유 요청에 응답하여 상기 스토리지에 저장된 데이터암호화키를 상기 실링키로 복호화하는 단계; 상기 복호화된 데이터암호화키로 상기 데이터를 암호화하는 단계; 및 상기 암호화된 데이터를 공용 스토리지에 저장하는 단계를 포함할 수 있다.

Description

신뢰실행환경 간의 데이터 공유{DATA SHARING BETWEEN TRUSTED EXECUTION ENVIRONMENTS}
아래의 설명은 신뢰실행환경 간의 데이터 공유를 위한 기술에 관한 것이다.
신뢰실행환경(TEE)은 프로세서(CPU)에 탑재된 기능을 활용하여 구성한 안전한 컴퓨팅 환경이다. 신뢰실행환경의 핵심 기능 중 하나는 실링(sealing)이다. 실링은 신뢰실행환경 내에서 생성한 기밀정보를 안전하게 영구적으로 저장하도록 한다. 실링을 이용하여 신뢰실행환경 내에서 생성한 기밀정보를 저장하는 원리는 다음과 같다. 신뢰실행환경 내에서만 접근 가능한 암호화 키가 있는데 이를 실링키(sealing key)라 부른다. 이러한 실링키는 프로세서마다 고유하게 내재된 값을 바탕으로 생성될 수 있으며, 생성된 실링키는 신뢰실행환경 내에서만 접근할 수 있다. 실링키로 데이터를 암호화해서 디스크에 저장하게 되면, 일반 프로그램은 실링키를 얻을 수 없으므로 데이터를 알 수 없고, 신뢰실행환경 내의 프로그램만 데이터를 복호화할 수 있다.
신뢰실행환경 내의 프로그램은 꺼졌다 켜졌다 하므로 메모리상에 갖고 있는 값이 없는 반면, 실링 기능을 사용하면 데이터를 스토리지에 영구 저장할 수 있어 매우 유용하다.
그러나, 실링키가 프로세서마다 다르기 때문에 하나의 컴퓨터의 신뢰실행환경에서 실링한 데이터는 다른 컴퓨터의 신뢰실행환경에서 알아볼 수 없다는 문제점이 있다.
처리장치에서 신뢰실행환경 간의 데이터 공유 방법을 제공할 수 있다. 구체적으로, 하나의 처리장치의 신뢰실행환경 내부 메모리에 들어있는 데이터를 공용 스토리지를 통해 다른 처리장치의 신뢰실행환경 내부 메모리까지 안전하게 전달하는 방법을 제공할 수 있다.
신뢰실행환경을 포함하는 처리장치의 데이터 공유 방법은, 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신하는 단계; 상기 수신된 데이터암호화키를 상기 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장하는 단계; 데이터의 공유 요청에 응답하여 상기 스토리지에 저장된 데이터암호화키를 상기 실링키로 복호화하는 단계; 상기 복호화된 데이터암호화키로 상기 데이터를 암호화하는 단계; 및 상기 암호화된 데이터를 공용 스토리지에 저장하는 단계를 포함할 수 있다.
상기 관리 소프트웨어는, 상기 데이터암호화키를 생성하고, 상기 생성된 데이터암호화키를 전달하기 위한 처리장치에 대한 원격 검증(Remote Attestation)을 진행할 수 있다.
상기 수신하는 단계는, 상기 처리장치의 프로세서가 처리장치에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명하고, 상기 전자서명을 상기 관리 소프트웨어에게 전달하면, 상기 관리 소프트웨어에서 상기 처리장치의 프로세서로부터 전달받은 전자서명이 검증되는 단계를 포함할 수 있다.
상기 수신하는 단계는, 상기 관리 소프트웨어에서 상기 전자서명에 대한 검증이 성공됨에 따라 상기 처리장치와 상기 관리 소프트웨어 사이의 보안 통신 채널이 수립되고, 상기 수립된 보안 통신 채널을 통해 상기 관리 소프트웨어에서 생성된 데이터암호화키가 전달됨을 수신하는 단계를 포함할 수 있다.
상기 스토리지에 저장하는 단계는, 상기 처리장치의 프로세서에 내재된 값으로부터 실링키를 생성하고, 상기 실링키를 이용하여 상기 수신된 데이터암호화키를 암호화하고, 상기 암호화된 데이터암호화키를 상기 처리장치의 디스크에 저장하는 단계를 포함할 수 있다.
상기 다른 처리장치들은, 상기 다른 처리장치들에서 보관하고 있는 데이터암호화키로 상기 공용 스토리지에 저장된 암호화된 데이터를 복호화할 수 있다.
데이터를 공유하기 위한 신뢰실행환경을 포함하는 처리장치는, 메모리; 및 상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고, 상기 프로세서는, 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신하고, 상기 수신된 데이터암호화키를 상기 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장하고, 데이터의 공유 요청에 응답하여 상기 스토리지에 저장된 데이터암호화키를 상기 실링키로 복호화하고, 상기 복호화된 데이터암호화키로 상기 데이터를 암호화하고, 상기 암호화된 데이터를 공용 스토리지에 저장할 수 있다.
상기 관리 소프트웨어는, 상기 데이터암호화키를 생성하고, 상기 생성된 데이터암호화키를 전달하기 위한 처리장치에 대한 원격 검증(Remote Attestation)을 진행하는 것을 포함하고, 상기 프로세서는, 상기 처리장치의 프로세서가 처리장치에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명하고, 상기 전자서명을 상기 관리 소프트웨어에게 전달하면, 상기 관리 소프트웨어에서 상기 처리장치의 프로세서로부터 전달받은 전자서명이 검증될 수 있다.
상기 프로세서는, 상기 관리 소프트웨어에서 상기 전자서명에 대한 검증이 성공됨에 따라 상기 처리장치와 상기 관리 소프트웨어 사이의 보안 통신 채널이 수립되고, 상기 수립된 보안 통신 채널을 통해 상기 관리 소프트웨어에서 생성된 데이터암호화키가 상기 처리장치로 전달됨을 수신할 수 있다.
상기 프로세서는, 상기 처리장치의 프로세서에 내재된 값으로부터 실링키를 생성하고, 상기 실링키를 이용하여 상기 수신된 데이터암호화키를 암호화하고, 상기 암호화된 데이터암호화키를 상기 처리장치의 디스크에 저장할 수 있다.
각 처리장치의 신뢰실행환경을 통해 데이터를 암호화된 상태로 공유할 수 있다.
하나의 처리장치의 신뢰실행환경 내부 메모리에 들어있는 암호화된 데이터가 공용 스토리지를 통해서 다른 처리장치의 신뢰실행환경 내부 메모리까지 전달되기 때문에 스토리지의 유출이나 네트워크 도청 공격이 있더라도 데이터를 알 수 없어 안전한 데이터 공유가 이루어질 수 있다.
도 1은 일 실시예에 따른 처리장치의 구성 요소를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 처리장치에서 데이터 공유를 위한 구성 요소를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 처리장치에서 신뢰실행환경 간의 데이터 공유 동작을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 처리장치에서 데이터암호화키를 수신하는 동작을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 처리장치에서 데이터암호화키를 보관하는 동작을 설명하기로 한다.
도 6은 일 실시예에 따른 처리장치에서 다른 처리장치로 데이터를 전송하는 동작을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 처리장치에서 신뢰실행환경 간의 데이터 공유 방법을 설명하기 위한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 일 실시예에 따른 처리장치의 구성 요소를 설명하기 위한 도면이다.
처리장치(100)는 신뢰실행환경을 포함하는 처리장치이며, 신뢰실행환 간의 데이터를 공유할 수 있다. 처리장치(100)는 프로세서(110), 메모리(120) 및 디스크(130)를 포함할 수 있다. 신뢰실행환경은 일반적인 실행환경과 격리되어 실행되는 코드의 무결성과 실행과정에서의 생성 및 저장된 데이터의 기밀성을 보장하는 안전한 실행환경을 뜻한다. 신뢰실행환경은 하드웨어와 소프트웨어의 장점만을 결합한 첨단 보안 기술로, 별도의 하드웨어가 아니면서도 분리된 하드웨어 수준의 보안성을 제공한다.
프로세서(110)는 메모리(120)의 프로그램을 실행하여, 처리장치(100)의 적어도 하나의 구성 요소를 제어할 수 있다. 이를 통해, 프로세서(110)는 데이터 처리 또는 연산을 수행할 수 있다. 이때, 프로세서(110)는 메모리(120)에 저장된 명령을 실행할 수 있다.
프로세서(110)는 프로그램을 실행하는 장치이며, 프로세서(110)마다 고유한 값이 물리적으로 새겨져 있으며, 회로 상 굉장히 미세한 부분이 숨겨져 있어서 그 값을 알아내기가 어렵다. 프로세서(110)는 신뢰실행환경 내부의 프로그램의 요청에 따라 고유한 값으로부터 자식키를 생성하는 기능을 포함할 수 있다.
메모리(120)는 처리장치(100)의 적어도 하나의 구성 요소에 의해 사용되는 다양한 데이터를 저장할 수 있다. 예를 들면, 메모리(120)는 휘발성 메모리 또는 비휘발성 메모리 중 적어도 어느 하나를 포함할 수 있다.
디스크(130)는 정보를 저장하는 기억 장치(스토리지)의 일종일 수 있다. 여기서, 스토리지에 디스크(130)가 포함될 수 있다. 예를 들면, 디스크(130)로 일반적인 컴퓨터의 디스크, 하드디스크 등이 해당될 수 있다.
프로세서(110)는 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신할 수 있다. 프로세서(110)는 수신된 데이터암호화키를 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장할 수 있다. 프로세서(110)는 데이터의 공유 요청에 응답하여 스토리지에 저장된 데이터암호화키를 실링키로 복호화할 수 있다. 프로세서(110)는 복호화된 데이터암호화키로 데이터를 암호화할 수 있다. 프로세서(110)는 암호화된 데이터를 공용 스토리지에 저장할 수 있다.
메모리(120)는 기억된 정보를 읽어내기도 하고 다른 정보를 기억시킬 수도 있는 메모리이며, 컴퓨터의 주기억장치, 응용 프로그램의 일시적 로딩, 데이터의 일시적 저장 등에 사용되는 휘발성 메모리일 수 있다. 메모리(120)는 실행 중인 프로그램 및 데이터를 적재할 수 있다. 메모리(120)는 신뢰실행환경 기능에 의해 프로세서의 고유한 키로 암호화되어 있을 수 있다.
도 2는 일 실시예에 따른 처리장치에서 데이터 공유를 위한 구성 요소를 설명하기 위한 도면이다.
도 2는 다수의 처리장치에서 신뢰실행환경 간의 데이터 공유를 수행하기 위하여 필요한 구성 요소를 설명하기 위한 도면이다. 실시예에서는 다수의 처리장치에 대하여 '처리장치 A(210)', '처리장치 B(220)'를 예를 들어 설명하기로 한다.
처리장치 A(210)는 신뢰실행환경 내부에서 데이터를 생성하여 다른 처리장치(처리장치 B(220))로 전송하고자 하는 장치를 의미할 수 있다.
처리장치 B(220)는 처리장치 A(210)로부터 생성된 데이터를 신뢰실행환경 내부에서 수신하고자 하는 장치를 의미할 수 있다.
공용 스토리지(230)는 다수의 처리장치(실시예에서는, 처리장치A(210)와 처리장치 B(220))가 접근할 수 있는 스토리지일 수 있다. 예를 들면, 공용 스토리지(230)는 데이터베이스나 파일 시스템, 파일 공유 서버 등이 해당될 수 있다.
관리 소프트웨어(240)는 다수의 처리장치(실시예에서는, 처리장치A(210)와 처리장치 B(220))의 무결성을 확인하고 공통의 암호키를 주입해주는 소프트웨어이다.
도 3은 일 실시예에 따른 처리장치에서 신뢰실행환경 간의 데이터 공유 동작을 설명하기 위한 도면이다.
우선적으로, 각 처리장치에 도시된 키에 대하여 설명하기로 한다.
데이터(301)는 처리장치 A(210)의 신뢰실행환경에서 처리장치 B(220)의 신뢰실행환경으로 안전하게 전송하고자 하는 데이터일 수 있다.
데이터암호화키(DEK)(302)는 공유하려는 데이터를 암호화하는 키를 의미할 수 있다. 데이터암호화키(302)는 관리 소프트웨어(240)에 의하여 생성될 수 있다.
실링키(Sealing Key)(303, 304)는 처리장치의 프로세서의 고유한 값으로부터 생성된 키이며, 신뢰실행환경에서 사용하던 기밀 데이터를 디스크에 영구 저장할 때 사용될 수 있다. 실링키(303, 304)는 각 처리장치의 프로세서마다 그 값이 다르다. 예를 들면, 처리장치 A(210)의 프로세서의 고유한 값으로부터 생성된 실링키(303)와 처리장치 B(220)의 프로세서의 고유한 값으로부터 생성된 실링키(304)가 다르다.
관리 소프트웨어(240)는 각 처리장치(처리장치 A(210)와 처리장치 B(220))에게 보안 통신 채널을 통해 데이터암호키(DEK)(302)를 전달할 수 있다. 각 처리장치(처리장치 A(210)와 처리장치 B(220))는 각 처리장치의 프로세서에 내재된 값으로부터 생성된 실링키로 데이터암호키(302)를 암호화하여 디스크에 저장할 수 있다. 처리장치 A(210)가 데이터암호화키로 암호화한 데이터를 공용 스토리지(230)에 저장하면, 처리장치 B(220)가 암호화된 데이터를 공용 스토리지(230)에서 읽어올 수 있다. 이후, 처리장치 B(220)는 처리장치 B(220)가 보관하고 있던 데이터암호화키로 데이터를 복호화함으로써 신뢰실행환경 간의 데이터 공유가 수행될 수 있다.
실시예에 따르면, 처리장치 A(210)의 신뢰실행환경 내부 메모리에 들어있는 데이터를 공용 스토리지(230)를 통해서 처리장치 B(220)의 신뢰실행환경 내부 메모리까지 전달할 수 있다. 데이터가 신뢰실행환경 외부에 나와있는 동안은 암호화가 되어있어서 스토리지의 유출이나 네트워크 도청 공격이 있더라도 데이터를 알 수 없기 때문에 안전한 데이터 공유가 이루어질 수 있다.
도 4는 일 실시예에 따른 처리장치에서 데이터암호화키를 수신하는 동작을 설명하기 위한 도면이다.
처리장치(100)는 다수의 처리장치들과 통신하는 관리 소프트웨어(240)로부터 데이터암호화키를 수신할 수 있다. 관리 소프트웨어(240)로부터 데이터암호화키(302)가 생성될 수 있다. 관리 소프트웨어(240)에서 생성된 데이터암호화키(302)를 전달하기 위한 처리장치에 대한 원격 검증(Remote Attestation)이 진행될 수 있다.
이때, 처리장치(100)에서 다른 처리장치로 데이터를 공유하는 동작을 설명하기 위하여 처리장치 A 및 처리장치 B를 예를 들어 설명하기로 한다. 이때, 처리장치(100)는 데이터를 전달하는 장치(처리장치 A) 또는 데이터를 수신하는 장치(처리장치 B)일 수 있다. 실시예에서는 처리장치(100)를 처리장치 A라고 가정하여 설명하기로 한다. 예를 들면, 처리장치 A는 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키(302)를 수신할 수 있다. 관리 소프트웨어(240)로부터 데이터암호화키(302)가 생성될 수 있다. 관리 소프트웨어(240)에서 생성된 데이터암호화키를 전달하기 위한 처리장치 A에 대한 원격 검증(Remote Attestation)이 진행될 수 있다.
구체적으로, 처리장치 A의 프로세서가 처리장치 A에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명 할 수 있다. 이때, 프로세서에 내재된 값으로부터 생성된 키는 실링키일 수 있고, 또는, 다른 키일 수 있다. 처리장치 A는 전자서명을 관리 소프트웨어(240)에게 전달할 수 있다. 관리 소프트웨어(240)는 처리장치 A의 프로세서로부터 전달받은 전자서명을 검증할 수 있다.
관리 소프트웨어(240)에서 전자성명에 대한 검증이 성공됨에 따라 처리장치 A와 관리 소프트웨어(240) 사이의 보안 통신 채널이 수립될 수 있다. 수립된 보안 통신 채널을 통해 관리 소프트웨어(240)에서 생성된 데이터암호화키(302)가 처리장치 A로 전달될 수 있다. 처리장치 A는 관리 소프트웨어(240)에서 생성된 데이터암호화키(302)를 수신할 수 있다. 이에, 처리장치 A와 관리 소프트웨어(어플리케이션)과의 통신을 최소화할 수 있다.
마찬가지로, 처리장치 B는 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키(302)를 수신할 수 있다. 관리 소프트웨어(240)로부터 데이터암호화키(302)가 생성될 수 있다. 관리 소프트웨어(240)에서 생성된 데이터암호화키를 전달하기 위한 처리장치 B에 대한 원격 검증(Remote Attestation)이 진행될 수 있다.
구체적으로, 처리장치 B의 프로세서가 처리장치 B에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명 할 수 있다. 처리장치 B는 전자서명을 관리 소프트웨어(240)에게 전달할 수 있다. 관리 소프트웨어(240)는 처리장치 B의 프로세서로부터 전달받은 전자서명을 검증할 수 있다.
관리 소프트웨어(240)에서 전자성명에 대한 검증이 성공됨에 따라 처리장치 B와 관리 소프트웨어(240) 사이의 보안 통신 채널이 수립될 수 있다. 수립된 보안 통신 채널을 통해 관리 소프트웨어(240)에서 생성된 데이터암호화키(302)가 처리장치 B로 전달될 수 있다. 처리장치 B는 관리 소프트웨어(240)에서 생성된 데이터암호화키(302)를 수신할 수 있다.
도 5는 일 실시예에 따른 처리장치에서 데이터암호화키를 보관하는 동작을 설명하기로 한다.
처리장치(100)는 데이터암호화키(302)를 보관할 수 있다. 처리장치(100)는 프로세서에 내재된 값으로부터 실링키(303, 304)를 생성할 수 있고, 생성된 실링키(303, 304)를 이용하여 데이터암호화키(302)를 암호화할 수 있다. 처리장치(100)는 암호화한 데이터암호화키(302)를 디스크에 저장할 수 있다.
이때, 처리장치(100)에서 다른 처리장치로 데이터를 공유하는 동작을 설명하기 위하여 처리장치 A 및 처리장치 B를 예를 들어 설명하기로 한다. 이때, 처리장치(100)는 데이터를 전달하는 장치(처리장치 A) 또는 데이터를 수신하는 장치(처리장치 B)일 수 있다. 실시예에서는 처리장치(100)를 처리장치 A라고 가정하여 설명하기로 한다.
예를 들면, 처리장치 A는 수신된 데이터암호화키(302)를 신뢰실행환경에서 접근 가능한 실링키(303)로 암호화하여 스토리지에 저장할 수 있다. 이때, 스토리지는 디스크일 수 있다.
처리장치 A는 프로세서에 내재된 값으로부터 실링키(303)를 생성할 수 있다. 처리장치 A는 실링키(303)를 이용하여 관리 소프트웨어(240)로부터 수신된 데이터암호화키(302)를 암호화할 수 있다. 처리장치 A는 암호화된 데이터암호화키(302)를 처리장치 A의 디스크에 저장할 수 있다.
마찬가지로, 처리장치 B는 수신된 데이터암호화키(302)를 신뢰실행환경에서 접근 가능한 실링키(304)로 암호화하여 스토리지에 저장할 수 있다. 이때, 스토리지는 디스크일 수 있다.
처리장치 B는 프로세서에 내재된 값으로부터 실링키(304)를 생성할 수 있다. 처리장치 B는 실링키(304)를 이용하여 관리 소프트웨어(240)로부터 수신된 데이터암호화키(302)를 암호화할 수 있다. 처리장치 B는 암호화된 데이터암호화키(302)를 처리장치 B의 디스크에 저장할 수 있다.
도 6은 일 실시예에 따른 처리장치에서 다른 처리장치로 데이터를 전송하는 동작을 설명하기 위한 도면이다.
하나의 처리장치의 신뢰실행환경에서 다른 처리장치의 신뢰실행환경으로 데이터를 암호화하여 전달할 수 있다. 실시예에서는 처리장치 A(210)를 기준으로 다른 처리장치(예를 들면, 처리장치 B(220))와 데이터를 공유하는 동작에 대하여 설명하기로 한다.
처리장치 A(210)는 데이터암호화키(302)로 암호화한 데이터를 공용 스토리지(230)에 저장할 수 있다. 처리장치 A(210)는 데이터의 공유 요청에 응답하여 디스크에 저장된 데이터암호화키(302)를 실링키(303)로 복호화할 수 있다. 처리장치 A(210)는 복호화된 데이터암호화키(302)로 데이터(301)를 암호화할 수 있다. 처리장치 A(210)는 암호화된 데이터를 공용 스토리지(230)에 저장할 수 있다.
처리장치 B(220)가 암호화된 데이터를 공용 스토리지(230)에서 읽어올 수 있다. 처리장치 B(220)는 처리장치 B(220)에서 보관하고 있던 데이터암호화키(302)로 데이터(301)를 복호화할 수 있다. 처리장치 B(220)는 공용 스토리지(230)에 저장된 암호화된 데이터를 복호화하기 위하여, 디스크에 저장된 데이터암호화키(302)를 실링키(304)로 복호화할 수 있다. 처리장치 B(220)는 복호화된 데이터암호화키(302)로 공용 스토리지(230)에 저장된 암호화된 데이터를 복호화할 수 있다. 이에, 처리장치 A(210)의 신뢰실행환경과 처리장치 B(220)의 신뢰실행환경에서 데이터를 공유할 수 있게 된다.
도 7은 일 실시예에 따른 처리장치에서 신뢰실행환경 간의 데이터 공유 방법을 설명하기 위한 흐름도이다.
단계(710)에서 처리장치는 다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신할 수 있다. 이때, 관리 소프트웨어로부터 데이터암호화키가 생성되고, 관리 소프트웨어에서 생성된 데이터암호화키를 전달하기 위한 처리장치에 대한 원격검증(Remote Attestation)이 진행될 수 있다. 처리장치는 처리장치의 프로세서가 처리장치에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명하고, 전자서명을 관리 소프트웨어에게 전달하면, 관리 소프트웨어에서 처리장치의 프로세서로부터 전달받은 전자서명이 검증될 수 있다. 관리 소프트웨어에서 전자서명에 대한 검증이 성공됨에 따라 처리장치와 관리 소프트웨어 사이의 보안 통신 채널이 수립되고, 처리장치는 수립된 보안 통신 채널을 통해 관리 소프트웨어에서 생성된 데이터암호화키가 전달됨을 수신할 수 있다.
단계(720)에서 처리장치는 수신된 데이터암호화키를 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장할 수 있다. 처리장치는 처리장치의 프로세서에 내재된 값으로부터 실링키를 생성하고, 실링키를 이용하여 수신된 데이터암호화키를 암호화하고, 암호화된 데이터암호화키를 처리장치의 디스크에 저장할 수 있다.
단계(730)에서 처리장치는 데이터의 공유 요청에 응답하여 스토리지에 저장된 데이터암호화키를 실링키로 복호화할 수 있다.
단계(740)에서 처리장치는 복호화된 데이터암호화키로 데이터를 암호화할 수 있다.
단계(750)에서 처리장치는 암호화된 데이터를 공용 스토리지에 저장할 수 있다. 이때, 다른 처리장치들에서 보관하고 있는 데이터암호화키를 이용하여 공용 스토리지에 저장된 암호화된 데이터가 복호화될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 신뢰실행환경을 포함하는 처리장치의 데이터 공유 방법에 있어서,
    다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신하는 단계;
    상기 수신된 데이터암호화키를 상기 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장하는 단계;
    데이터의 공유 요청에 응답하여 상기 스토리지에 저장된 데이터암호화키를 상기 실링키로 복호화하는 단계;
    상기 복호화된 데이터암호화키로 상기 데이터를 암호화하는 단계; 및
    상기 암호화된 데이터를 공용 스토리지에 저장하는 단계
    를 포함하는 데이터 공유 방법.
  2. 제1항에 있어서,
    상기 관리 소프트웨어는,
    상기 데이터암호화키를 생성하고, 상기 생성된 데이터암호화키를 전달하기 위한 처리장치에 대한 원격 검증(Remote Attestation)을 진행하는
    것을 특징으로 하는 데이터 공유 방법.
  3. 제1항에 있어서,
    상기 수신하는 단계는,
    상기 처리장치의 프로세서가 처리장치에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명하고, 상기 전자서명을 상기 관리 소프트웨어에게 전달하면, 상기 관리 소프트웨어에서 상기 처리장치의 프로세서로부터 전달받은 전자서명이 검증되는 단계
    를 포함하는 데이터 공유 방법.
  4. 제3항에 있어서,
    상기 수신하는 단계는,
    상기 관리 소프트웨어에서 상기 전자서명에 대한 검증이 성공됨에 따라 상기 처리장치와 상기 관리 소프트웨어 사이의 보안 통신 채널이 수립되고, 상기 수립된 보안 통신 채널을 통해 상기 관리 소프트웨어에서 생성된 데이터암호화키가 전달됨을 수신하는 단계
    를 포함하는 데이터 공유 방법.
  5. 제1항에 있어서,
    상기 스토리지에 저장하는 단계는,
    상기 처리장치의 프로세서에 내재된 값으로부터 실링키를 생성하고, 상기 실링키를 이용하여 상기 수신된 데이터암호화키를 암호화하고, 상기 암호화된 데이터암호화키를 상기 처리장치의 디스크에 저장하는 단계
    를 포함하는 데이터 공유 방법.
  6. 제1항에 있어서,
    상기 다른 처리장치들은,
    상기 다른 처리장치들에서 보관하고 있는 데이터암호화키를 이용하여 상기 공용 스토리지에 저장된 암호화된 데이터를 복호화하는
    것을 특징으로 하는 데이터 공유 방법.
  7. 데이터를 공유하기 위한 신뢰실행환경을 포함하는 처리장치에 있어서,
    메모리; 및
    상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고,
    상기 프로세서는,
    다수의 처리장치들과 통신하는 관리 소프트웨어로부터 데이터암호화키를 수신하고,
    상기 수신된 데이터암호화키를 상기 신뢰실행환경에서 접근 가능한 실링키로 암호화하여 스토리지에 저장하고,
    데이터의 공유 요청에 응답하여 상기 스토리지에 저장된 데이터암호화키를 상기 실링키로 복호화하고,
    상기 복호화된 데이터암호화키로 상기 데이터를 암호화하고,
    상기 암호화된 데이터를 공용 스토리지에 저장하는
    것을 특징으로 하는 처리장치.
  8. 제7항에 있어서,
    상기 관리 소프트웨어는,
    상기 데이터암호화키를 생성하고, 상기 관리 소프트웨어에서 상기 생성된 데이터암호화키를 전달하기 위한 처리장치에 대한 원격 검증(Remote Attestation)을 진행하는 것을 포함하고,
    상기 프로세서는,
    상기 처리장치의 프로세서가 처리장치에서 실행 중인 소프트웨어 정보 및 프로세서 정보에 대한 해시값을 계산한 후, 프로세서에 내재된 값으로부터 생성된 키를 이용하여 해시값을 전자서명하고, 상기 전자서명을 상기 관리 소프트웨어에게 전달하면, 상기 관리 소프트웨어에서 상기 처리장치의 프로세서로부터 전달받은 전자서명이 검증되는
    것을 특징으로 하는 처리장치.
  9. 제8항에 있어서,
    상기 프로세서는,
    상기 관리 소프트웨어에서 상기 전자서명에 대한 검증이 성공됨에 따라 상기 처리장치와 상기 관리 소프트웨어 사이의 보안 통신 채널이 수립되고, 상기 수립된 보안 통신 채널을 통해 상기 관리 소프트웨어에서 생성된 데이터암호화키가 상기 처리장치로 전달됨을 수신하는
    것을 특징으로 하는 처리장치.
  10. 제7항에 있어서,
    상기 프로세서는,
    상기 처리장치의 프로세서에 내재된 값으로부터 실링키를 생성하고, 상기 실링키를 이용하여 상기 수신된 데이터암호화키를 암호화하고, 상기 암호화된 데이터암호화키를 상기 처리장치의 디스크에 저장하는
    것을 특징으로 하는 처리장치.
KR1020200101596A 2019-12-06 2020-08-13 신뢰실행환경 간의 데이터 공유 KR20210071813A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/111,620 US20210173950A1 (en) 2019-12-06 2020-12-04 Data sharing between trusted execution environments

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190161845 2019-12-06
KR20190161845 2019-12-06

Publications (1)

Publication Number Publication Date
KR20210071813A true KR20210071813A (ko) 2021-06-16

Family

ID=76602999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200101596A KR20210071813A (ko) 2019-12-06 2020-08-13 신뢰실행환경 간의 데이터 공유

Country Status (1)

Country Link
KR (1) KR20210071813A (ko)

Similar Documents

Publication Publication Date Title
EP3458999B1 (en) Self-contained cryptographic boot policy validation
EP3574622B1 (en) Addressing a trusted execution environment
CN110249336B (zh) 使用签名密钥对可信执行环境的寻址
EP3465530B1 (en) Using hardware based secure isolated region to prevent piracy and cheating on electronic devices
WO2022073264A1 (en) Systems and methods for secure and fast machine learning inference in trusted execution environment
US10498712B2 (en) Balancing public and personal security needs
AU2020244511B2 (en) Balancing public and personal security needs
KR20050085678A (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
JP7256861B2 (ja) セキュアコンピュータシステム
US10230738B2 (en) Procedure for platform enforced secure storage in infrastructure clouds
JP7256862B2 (ja) 保護されたコンテナ間のセキュア通信方法およびそのシステム
US10192047B2 (en) Provisioning of identity information
US20210173950A1 (en) Data sharing between trusted execution environments
US11405201B2 (en) Secure transfer of protected application storage keys with change of trusted computing base
KR101711024B1 (ko) 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치
Hao et al. Trusted block as a service: Towards sensitive applications on the cloud
KR20210071813A (ko) 신뢰실행환경 간의 데이터 공유
US20210135853A1 (en) Apparatus and method for data security
KR20200101020A (ko) 컨소시엄 블록체인 참가 노드 간의 인증 방안
EP3539010B1 (en) Balancing public and personal security needs
KR101839699B1 (ko) 인증정보가 노출되지 않는 안전한 보안 usb 시스템 및 방법
KR20240013335A (ko) 블록체인 기반 금융거래 보안 시스템
KR20210072676A (ko) 신뢰실행환경 기반 키관리 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application