KR102392420B1 - 다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계 - Google Patents

다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계 Download PDF

Info

Publication number
KR102392420B1
KR102392420B1 KR1020197028585A KR20197028585A KR102392420B1 KR 102392420 B1 KR102392420 B1 KR 102392420B1 KR 1020197028585 A KR1020197028585 A KR 1020197028585A KR 20197028585 A KR20197028585 A KR 20197028585A KR 102392420 B1 KR102392420 B1 KR 102392420B1
Authority
KR
South Korea
Prior art keywords
sub
code
logic
key
logic code
Prior art date
Application number
KR1020197028585A
Other languages
English (en)
Other versions
KR20200116012A (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 KR20200116012A publication Critical patent/KR20200116012A/ko
Application granted granted Critical
Publication of KR102392420B1 publication Critical patent/KR102392420B1/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
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/006Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

TEE 내에서 실행될 것으로 예상되었던 서브 로직 코드가 실제로 실행되었다는 것과, 결과적인 데이터가 신뢰할 수 있는 것이라는 것을 증명하기 위한 프로그램 실행 및 데이터 증명 체계를 위해 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램들을 포함한, 방법, 시스템, 및 장치가 제공된다. 일부 구현예들에서, 복수의 서브 로직 코드의 각각의 서브 로직 코드가 등록되고, TEE 내에 저장되고, 서브 로직 코드에 대응하는 키 쌍(개인키, 공개키)이 생성된다. 클라이언트는 공개키를 수신하고 저장하며, 실행될 서브 로직의 식별자와 함께 요청을 TEE에 전송한다. 식별자에 대응하는 서브 로직 코드는 TEE 내에서 실행되며, TEE는 서브 로직 코드의 개인키를 사용하여 생성된 디지털 시그너처를 사용하여 결과에 서명한다. 클라이언트는 디지털 시그너처 및 서브 로직 코드의 공개키에 기초하여 결과를 검증한다.

Description

다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계
본 명세서는 신뢰 실행 환경(trusted execution environment; TEE) 내에서 실행되는 프로그램들에 대한 프로그램 실행 및 데이터 증명(data proof)에 관한 것이다.
합의 네트워크(consensus network) 및/또는 블록체인 네트워크(blockchain network)라고도 칭할 수 있는 분산 원장 시스템(distributed ledger system; DLS)은 참여 엔티티들이 데이터를 안전하고 변조불가능하게 저장하는 것을 가능하게 한다. DLS는 일반적으로 임의의 특정 사용 케이스를 참조하지 않고서 블록체인 네트워크라고 불리운다. 예시적인 유형의 블록체인 네트워크는 합의 프로세스를 제어하는 엔티티들의 선택된 그룹에 대해 제공되며, 액세스 제어 계층을 포함하는 컨소시엄 블록체인 네트워크를 포함할 수 있다.
소위 신뢰 실행 환경(trusted execution environment; TEE)은 하드웨어의 운영 환경으로부터 격리된 하드웨어(하나 이상의 프로세서, 메모리) 내의 신뢰 환경이다. TEE는 메인 프로세서 내에서 실행되는 코드, 및 메인 프로세서 내에서 로딩되거나 또는 이로부터 제공되는 데이터의 기밀성 및 무결성을 보장해주는 프로세서의 별개의 보안 영역이다. 그러나, 코드의 실행 전에, TEE가 예상대로 동작하고 있고, TEE 내에서 실행될 것으로 예상되는 코드를 실행하고 있음을 검증(verify)(증명(prove))하기 위해 증명(attestation) 프로세스가 수행된다.
일부 경우들에서, TEE에서 실행되는 코드는 상태기반(stateful) 서브 로직을 실행한다. 즉, 각 상태에 따라 TEE 내에서 상이한 서브 로직이 실행될 수 있다. 따라서, 클라이언트가 TEE 내에서 실행되는 프로그램을 호출할 때, 이 호출은 요청 파라미터, 서브 로직 코드, 및 서브 로직 코드의 상태 데이터를 포함한다. TEE에서 실행되는 프로그램은 서브 로직 코드 및 상태 데이터를 로딩하고, 요청 파라미터를 기초로 하여 서브 로직을 실행하여 결과를 클라이언트에 제공한다. 그러나, 증명 프로세스에서는 프로그램의 정적 코드와 정적 데이터만이 측정되고 원격으로 검증된다. 결과적으로, TEE에서 실행되는 프로그램은 예상되는 서브 로직이 실행되었다는 것과, 반환된 결과가 신뢰할 수 있는 것이라는 증명을 제공할 필요가 있다.
TEE 내에서 실행되는 프로그램들에 대한 프로그램 실행 및 데이터 증명을 위한 기술들이 제안되었지만, 보안성 및 리소스 소비 문제를 해결하기 위한 보다 효과적인 해결책이 유리할 것이다.
본 명세서는 신뢰 실행 환경(trusted execution environment; TEE) 내에서 실행되는 프로그램들에 대한 프로그램 실행 및 데이터 증명을 위한 기술들을 설명한다.
일반적으로, 본 명세서에서 설명되는 발명내용의 혁신적인 양태들은 TEE 내에서 실행될 것으로 예상되었던 서브 로직 코드가 실제로 실행되었다는 것과, 결과적인 데이터가 신뢰할 수 있는 것이라는 것을 증명하기 위한 프로그램 실행 및 데이터 증명 체계에 관한 것이다. 일부 구현예들에서, 복수의 서브 로직 코드의 각각의 서브 로직 코드가 등록되고, TEE 내에 저장되고, 서브 로직 코드에 대응하는 키 쌍(개인키, 공개키)이 생성된다. 클라이언트는 공개키를 수신하고 저장한다. 클라이언트가 TEE 내에서 실행되는 프로그램에 요청(request)을 전송하는 경우, 그 요청에는 실행될 서브 로직의 식별자가 포함된다. TEE는 식별자에 대응하는 저장되어 있는 서브 로직을 리트리빙(retrieve)하고, 서브 로직 코드를 실행하며, 결과를 제공한다. TEE는 서브 로직 코드의 개인키를 사용하여 생성된 디지털 시그너처(digital signature)를 사용하여 결과에 서명한다. 클라이언트는 결과를 수신하고, 디지털 시그너처 및 서브 로직 코드의 공개키에 기초하여 결과를 검증한다.
본 명세서에서 특정 구현예들로서 제공되는 것으로서 설명되는 발명내용은 다음의 기술적 장점들 중 하나 이상을 실현한다. 예를 들어, 실행될 서브 로직 코드 자체 대신에, 서브 로직 코드의 식별자만이 클라이언트로부터의 요청 내에서 전송된다. 이는 요청의 크기를 상당히 감소시켜서, 컴퓨팅 리소스(예컨대, 프로세서, 메모리, 네트워크 대역폭)를 절약하고, 네트워크 병목현상을 완화시킨다. 또한, 요청을 수신한 것에 응답하여, 신뢰 프로그램은 요청에서 운송된 서브 로직 코드를 파싱하고 로딩할 필요가 없어서, 증가된 처리를 피한다. 다른 예시로서, 각각의 요청이 처리된 후, 신뢰 프로그램은 전체 서브 로직 코드가 아닌, 결과에만 서명하고, 클라이언트는 서명된 결과만을 체크한다. 이 두 가지 활동들 모두는 종래의 접근법에 비해 처리량이 감소된다. 또한, 본 명세서의 구현예들은 신뢰 프로그램들에 의한 서브 로직 코드의 사용의 확장성 및 그 변형을 향상시킨다.
본 명세서는 또한, 하나 이상의 프로세서에 결합되고 명령어들이 저장되어 있는 컴퓨터로 판독가능한 비일시적 저장 매체를 제공하며, 상기 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금, 여기서 제공된 방법들의 구현예들에 따른 동작들을 수행하게 한다.
본 명세서는 여기서 제공된 방법들을 구현하기 위한 시스템을 더 제공한다. 본 시스템은, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 명령어들이 저장되어 있는 컴퓨터로 판독가능한 저장 매체를 포함하며, 상기 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금, 여기서 제공된 방법들의 구현예들에 따른 동작들을 수행하게 한다.
본 명세서에 따른 방법들은 여기서 설명된 양태들 및 특징들의 임의의 조합을 포함할 수 있음을 알 것이다. 즉, 본 명세서에 따른 방법들은 여기서 구체적으로 설명된 양태들 및 특징들의 조합으로 한정되지 않으며, 또한 제공된 양태들 및 특징들의 임의의 조합을 포함한다.
본 명세서의 하나 이상의 구현예들의 상세 내용은 첨부한 도면 및 아래 설명에 기재된다. 본 명세서의 다른 특징들 및 장점들이 상세한 설명과 도면으로부터, 그리고 청구범위로부터 명백해질 것이다.
도 1은 본 명세서의 구현예들을 실행하는데 사용될 수 있는 환경의 예시를 나타내는 도면이다.
도 2는 본 명세서의 구현예들에 따른 개념적 아키텍처의 예시를 나타내는 도면이다.
도 3은 본 명세서의 구현예들에 따른 시스템의 예시를 나타내는 도면이다.
도 4는 본 명세서의 구현예들에 따른 신호 흐름의 예시를 도시한다.
도 5는 본 명세서의 구현예들에 따른 신호 흐름의 예시를 도시한다.
도 6은 본 명세서의 구현예들에 따른 신호 흐름의 예시를 도시한다.
도 7a와 도 7b는 본 명세서의 구현예들에 따라 실행될 수 있는 프로세스들의 예시들을 도시한다.
도 8은 본 명세서의 구현예들에 따른 장치의 모듈들의 예시들을 도시한다.
여러 도면에서의 동일한 도면 부호 및 표시 기호는 동일한 요소를 나타낸다.
본 명세서는 신뢰 실행 환경(TEE) 내에서 실행되는 프로그램들에 대한 프로그램 실행 및 데이터 증명을 위한 기술들을 설명한다. 보다 구체적으로, 그리고 본 명세서에서 더 자세히 설명되는 바와 같이, 본 명세서의 구현예들은 TEE 내에서 실행될 것으로 예상되었던 서브 로직 코드가 실제로 실행되었다는 것과, 결과적인 데이터가 신뢰할 수 있는 것이라는 것을 증명하기 위한 프로그램 실행 및 데이터 증명 체계에 관한 것이다. 일부 구현예들에서, 복수의 서브 로직 코드의 각각의 서브 로직 코드가 등록되고, TEE 내에 저장되고, 서브 로직 코드에 대응하는 키 쌍(개인키, 공개키)이 생성된다. 클라이언트는 공개키를 수신하고 저장한다. 클라이언트가 TEE 내에서 실행되는 프로그램에 요청을 전송하는 경우, 그 요청에는 실행될 서브 로직의 식별자가 포함된다. TEE는 식별자에 대응하는 저장되어 있는 서브 로직을 리트리빙하고, 서브 로직 코드를 실행하며, 결과를 제공한다. TEE는 서브 로직 코드의 개인키를 사용하여 생성된 디지털 시그너처를 사용하여 결과에 서명한다. 클라이언트는 결과를 수신하고, 디지털 시그너처 및 서브 로직 코드의 공개키에 기초하여 결과를 검증한다. 본 발명개시의 구현예들에 따르면, 실행될 서브 로직 코드 자체 대신에, 서브 로직 코드의 식별자만이 클라이언트로부터의 요청 내에서 전송된다. 이는 요청의 크기를 상당히 감소시켜서, 컴퓨팅 리소스(예컨대, 프로세서, 메모리, 네트워크 대역폭)를 절약하고, 네트워크 병목현상을 완화시킨다.
본 명세서의 구현예들을 위한 추가적인 상황을 제공하기 위해, 위에서 소개한 바와 같이, 합의 네트워크(예를 들어, 피어 투 피어(peer-to-peer) 노드로 구성됨), 및 블록체인 네트워크라고도 칭해질 수 있는 분산 원장 시스템(distributed ledger system; DLS)은 참여 엔티티들이 안전하게 그리고 변조불가능하게 거래(transaction)를 수행하고 데이터를 저장할 수 있게 한다. 블록체인(blockchain)이라는 용어는 일반적으로 특정 네트워크, 및/또는 사용 케이스들과 관련되어 있지만, 여기서 블록체인은 임의의 특정 사용 케이스를 참조하지 않고서 일반적으로 DLS를 가리키는데 사용된다.
블록체인은 거래들이 변조불가능한 방식으로 거래들을 저장하는 데이터 구조이다. 따라서, 블록체인 상에 기록된 거래들은 신뢰성이 있고 신뢰할 가치가 있다. 블록체인은 하나 이상의 블록을 포함한다. 체인 내의 각 블록은 이전 블록의 암호 해시(cryptographic hash)를 포함시킴으로써 체인 내의 바로 앞에 있는 이전 블록에 링크된다. 각 블록은 또한 타임스탬프, 각자의 암호 해시, 및 하나 이상의 거래를 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된 거래들은 해시되고 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프(leaf) 노드에 있는 데이터가 해시되고, 트리의 각 분기(branch)에 있는 모든 해시들이 분기의 루트(root)에서 연결되는 데이터 구조이다. 이 프로세스는 전체 트리의 루트까지 트리를 진행하여, 트리 내의 모든 데이터를 나타내는 해시를 저장한다. 트리에 저장된 거래의 것이라고 생각되는 해시는 해시를 트리의 구조와 일치하는지 여부를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 거래들을 저장하기 위한 탈중앙화되거나 또는 적어도 부분적으로 탈중앙화된 데이터 구조이지만, 블록체인 네트워크는 거래들을 브로드캐스트하고, 검증하며, 입증 등을 함으로써 하나 이상의 블록체인을 관리하고, 업데이트하며, 유지하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개한 것처럼, 블록체인 네트워크는 공용 블록체인 네트워크, 사설 블록체인 네트워크, 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 본 명세서의 구현예들은 컨소시엄 블록체인 네트워크를 참조하여 본 명세서에서 더 상세히 설명된다. 그러나, 본 명세서의 구현예들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있다는 것이 고려된다.
일반적으로, 컨소시엄 블록체인 네트워크는 참여 엔티티들 사이에서는 사설형(private)이다. 컨소시엄 블록체인 네트워크에서, 합의 프로세스는 권한을 부여받은 노드들(이들을 합의 노드들이라고 칭할 수 있다)의 세트에 의해 제어되고, 하나 이상의 합의 노드는 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 운영된다. 예를 들어, 10개의 엔티티들(예를 들어, 금융 기관, 보험 회사)의 컨소시엄이 컨소시엄 블록체인 네트워크를 운영할 수 있으며, 각각의 엔티티들은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 운영한다.
일부 예시들에서, 컨소시엄 블록체인 네트워크 내에서, 글로벌 블록체인은 모든 노드들에 걸쳐 복제되는 블록체인으로서 제공된다. 즉, 모든 합의 노드들은 글로벌 블록체인에 대해 완벽한 상태로 합의하고 있다. 합의(예컨대, 블록을 블록체인에 추가하는 것에 동의)를 달성하기 위해, 합의 프로토콜이 컨소시엄 블록체인 네트워크 내에서 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는 아래에서 더 자세하게 설명되는 PBFT(practical Byzantine fault tolerance) 합의를 구현할 수 있다.
도 1은 본 명세서의 구현예들을 실행하는데 사용될 수 있는 환경(100)의 예시를 나타내는 도면이다. 일부 예시들에서, 예시적인 환경(100)은 엔티티들이 컨소시엄 블록체인 네트워크(102)에 참여할 수 있게 한다. 예시적인 환경(100)은 컴퓨팅 디바이스(106, 108), 및 네트워크(110)를 포함한다. 일부 예시들에서, 네트워크(110)는 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷, 또는 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스(예컨대, 컴퓨팅 디바이스), 및 백엔드 시스템에 연결된다. 일부 예시들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다.
도시된 예시에서, 컴퓨팅 시스템(106, 108)은 컨소시엄 블록체인 네트워크(102)에서 노드로서의 참여를 가능하게 하는 임의의 적절한 컴퓨팅 시스템을 각각 포함할 수 있다. 예시적인 컴퓨팅 디바이스는, 비제한적인 예시로서, 서버, 데스크탑 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스, 및 스마트폰을 포함한다. 일부 예시들에서, 컴퓨팅 시스템(106,108)은 컨소시엄 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제1 엔티티가 하나 이상의 다른 엔티티(예를 들어, 다른 사용자)와의 거래를 관리하기 위해 사용하는 거래 관리 시스템과 같은, 제1 엔티티(예를 들어, 사용자 A)의 컴퓨터 구현 서비스를 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제2 엔티티가 하나 이상의 다른 엔티티(예를 들어, 다른 사용자)와의 거래를 관리하기 위해 사용하는 거래 관리 시스템과 같은, 제2 엔티티(예를 들어, 사용자 B)의 컴퓨터 구현 서비스를 호스팅할 수 있다. 도 1의 예시에서, 컨소시엄 블록체인 네트워크(102)는 노드들의 피어 투 피어 네트워크로서 표현되고, 컴퓨팅 시스템(106, 108)은 컨소시엄 블록체인 네트워크(102)에 참여하는 제1 엔티티 및 제2 엔티티의 노드들을 각각 제공한다.
도 2는 본 명세서의 구현예들에 따른 개념적 아키텍처(200)의 예시를 도시한다. 개념적 아키텍처(200)는 엔티티 계층(202), 호스팅된 서비스 계층(204), 및 블록체인 네트워크 계층(206)을 포함한다. 도시된 예시에서, 엔티티 계층(202)은 3개의 참여자들, 즉 참여자 A, 참여자 B, 참여자 C를 포함하며, 각각의 참여자는 각각의 거래 관리 시스템(208)을 갖는다.
도시된 예시에서, 호스팅된 서비스 계층(204)은 각각의 거래 관리 시스템(210)에 대한 인터페이스(210)를 포함한다. 일부 예시들에서, 각각의 거래 관리 시스템(208)은 프로토콜(예컨대, 하이퍼텍스트 전송 프로토콜 보안(hypertext transfer protocol secure; HTTPS))을 사용하여 네트워크(예를 들어, 도 1의 네트워크(110))를 통해 각각의 인터페이스(210)와 통신한다. 일부 예시들에서, 각각의 인터페이스(210)는 각각의 거래 관리 시스템(208)과 블록체인 네트워크 계층(206) 간의 통신 연결을 제공한다. 보다 구체적으로, 인터페이스(210)는 블록체인 네트워크 계층(206)의 블록체인 네트워크(212)와 통신한다. 일부 예시들에서, 인터페이스(210)와 블록체인 네트워크 계층(206) 간의 통신은 원격 프로시저 호출(remote procedure call; RPC)을 사용하여 수행된다. 일부 예시들에서, 인터페이스(210)는 각각의 거래 관리 시스템(208)에 대한 블록체인 네트워크 노드를 "호스팅"한다. 예를 들어, 인터페이스(210)는 블록체인 네트워크(212)에 액세스하기 위한 애플리케이션 프로그래밍 인터페이스(application programming interface; API)를 제공한다.
본 명세서에 기술된 바와 같이, 블록체인 네트워크(212)는 블록체인(216)에서 정보를 변조불가능하게 기록하는 복수의 노드들(214)을 포함하는 피어 투 피어 네트워크로서 제공된다. 단일 블록체인(216)이 개략적으로 도시되어 있지만, 블록체인(216)의 복수의 복사본들이 제공되어, 블록체인 네트워크(212)에 걸쳐 유지된다. 예를 들어, 각 노드(214)는 블록체인의 복사본을 저장한다. 일부 구현예들에서, 블록체인(216)은 컨소시엄 블록체인 네트워크에 참여하고 있는 둘 이상의 엔티티들 간에 수행되는 거래들과 관련된 정보를 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))은 블록들의 체인으로 구성되며, 각각의 블록은 데이터를 저장한다. 예시적인 데이터는 둘 이상의 참여자들 간의 거래를 나타내는 거래 데이터를 포함한다. 비 한정적인 예시로서 거래들이 본 명세서에서 사용되지만, 임의의 적절한 데이터(예를 들어, 문서, 이미지, 비디오, 오디오)가 블록체인에 저장될 수 있는 것이 구상가능하다. 예시적인 거래들에는, 비제한적인 예시로서, 가치있는 어떤 것(예를 들어, 자산, 제품, 서비스, 통화)의 교환이 포함될 수 있다. 거래 데이터는 블록체인 내에 변조불가능하게 저장된다. 즉, 거래 데이터는 변경될 수 없다.
거래 데이터는, 블록에 저장되기 전에, 해싱(hash)된다. 해싱은 거래 데이터(문자열 데이터로서 제공됨)를 고정된 길이의 해시값(문자열 데이터로서 또한 제공됨)으로 변환하는 프로세스이다. 거래 데이터를 획득하기 위해 해시값을 해싱해제(un-hash)하는 것은 불가능하다. 해싱은 거래 데이터에 약간의 변화가 있어도 완전히 상이한 해시값을 갖도록 한다. 또한, 상술한 바와 같이, 해시값은 고정된 길이를 갖는다. 즉, 거래 데이터의 크기와 상관없이 해시값의 길이는 고정되어 있다. 해싱에는 해시 함수를 통해 거래 데이터를 처리하여 해시값을 생성하는 처리가 포함된다. 예시적인 해시 함수에는, 비제한적인 예시로서, 256 비트 해시값들을 출력하는 SHA(Secure Hash Algorithm)-256이 포함된다.
다중 거래들의 거래 데이터가 해시되고 블록에 저장된다. 예를 들어, 두 개의 거래들의 해시값들이 제공되고, 다른 해시를 제공하기 위해 그 자체가 해시된다. 이 프로세스는, 모든 거래들이 블록에 저장되고, 단일 해시값이 제공될 때까지 반복된다. 이 해시값을 머클 루트 해시라고 부르며, 블록의 헤더에 저장된다. 거래들 중 임의의 거래가 변경되면 그 해시값이 변경되고, 궁극적으로 머클 루트 해시가 변경된다.
블록들이 합의 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 여러 노드들이 합의 프로토콜에 참여하고, 블록을 블록체인에 추가시키기 위한 동작을 수행한다. 이러한 노드들을 합의 노드들이라고 부른다. 위에서 소개된 PBFT는 합의 프로토콜의 비제한적 예시로서 사용된 것이다. 합의 노드들은 합의 프로토콜을 실행하여 블록체인에 거래들을 추가하고, 블록체인 네트워크의 전체 상태를 업데이트한다.
더 상세하게 말하면, 합의 노드는 블록 헤더를 생성하고, 블록 내의 모든 거래들을 해싱하고, 블록 내의 모든 거래들에 대해 단일 해시값이 제공될 때까지 해시값을 쌍으로 결합하여 추가적인 해시값들을 생성한다(머클 루트 해시). 이 해시는 블록 헤더에 추가된다. 또한 합의 노드는 블록체인에서 가장 최근의 블록(즉, 블록체인에 추가된 최종 블록)의 해시값을 결정한다. 합의 노드는 또한 논스(nonce) 값과 타임스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 장애(예컨대, 오동작 노드, 악성 노드)를 허용하는 실용적인 비잔틴 상태 머신 복제를 제공한다. 이는 PBFT에서, 장애들이 발생할 것이라고 가정함으로써(예컨대, 독립 노드 장애들, 및/또는 합의 노드들에 의해 전송된 조작된 메시지들의 존재를 가정함으로써) 달성된다. PBFT에서, 합의 노드들은 주 합의 노드와 백업 합의 노드들을 포함하는 시퀀스로 제공된다. 주 합의 노드는 주기적으로 변경된다. 블록체인 네트워크 내의 합의 노드들이 블록체인 네트워크의 세계 상태(world state)에 관한 합의에 도달됨으로써 거래들이 블록체인에 추가된다. 이 프로세스에서, 메시지들이 합의 노드들 간에 전송되고, 각각의 합의 노드는, 지정된 피어 노드로부터 메시지가 수신되었음을 증명하고, 전송 동안 메시지가 수정되지 않았음을 검증한다.
PBFT에서는, 모든 합의 노드들이 동일한 상태에서 시작하여 합의 프로토콜이 여러 단계들에서 제공된다. 시작하기 위해, 클라이언트는 서비스 동작을 호출(예컨대, 블록체인 네트워크 내에서 거래를 실행)해달라는 요청을 주 합의 노드에 전송한다. 요청을 수신한 것에 응답하여, 주 합의 노드는 요청을 백업 합의 노드들에게 멀티캐스트한다. 백업 합의 노드들이 요청을 실행하고, 각각의 백업 합의 노드들은 클라이언트에게 응답(response)을 전송한다. 클라이언트는 임계 개수의 응답들이 수신될 때까지 기다린다. 일부 예시들에서, 클라이언트는 f+1개의 응답들이 수신되기를 기다리며, 여기서 f는 블록체인 네트워크 내에서 허용될 수 있는 장애 합의 노드들의 최대 수이다. 최종적인 결과는 충분한 개수의 합의 노드들이 블록체인에 추가될 기록의 순서에 동의하게 되었다는 것이며, 기록은 수락되거나 또는 거부된다.
일부 블록체인 네트워크들에서, 거래들의 프라이버시를 유지하기 위해 암호기술(cryptography)이 구현된다. 예를 들어, 블록체인 네트워크 내의 다른 노드들이 거래의 세부사항을 식별할 수 없도록 두 개의 노드들이 거래를 비공개로 유지하기를 원하면, 이 노드들은 거래 데이터를 암호화할 수 있다. 예시적인 암호기술은, 비제한적인 예시로서, 대칭 암호화 및 비대칭 암호화를 포함한다. 대칭 암호화는 암호화(평문으로부터 암호문을 생성) 및 암호해독(암호문으로부터 평문을 생성) 둘 다를 위해 단일키를 사용하는 암호화 프로세스를 가리킨다. 대칭 암호화에서는, 동일한 키가 여러 노드들에 대해 이용가능할 수 있으므로, 각 노드는 거래 데이터를 암호화/암호해독할 수 있다.
비대칭 암호화는 개인키와 공개키를 각각 포함하는 키 쌍을 사용하며, 개인키는 각각의 노드에만 알려져 있고, 공개키는 블록체인 네트워크 내의 임의의 또는 모든 노드들에 알려져 있다. 노드는 다른 노드의 공개키를 사용하여 데이터를 암호화할 수 있으며, 암호화된 데이터는 다른 노드의 개인키를 사용하여 암호해독될 수 있다. 예를 들어, 도 2를 다시 참조하면, 참여자 A는 참여자 B의 공개키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참여자 B에게 보낼 수 있다. 참여자 B는 자신의 개인키를 사용하여 암호화된 데이터(암호문)를 암호해독하고, 원래의 데이터(평문)를 추출할 수 있다. 노드의 공개키로 암호화된 메시지들은 노드의 개인키를 사용해서만 암호해독될 수 있다.
비대칭 암호화는 디지털 시그너처(digital signature)를 제공하는데 사용되는데, 이러한 디지털 시그너처는 거래에서의 참여자들이 거래에서의 다른 참여자들뿐만 아니라 거래의 유효성을 확인할 수 있게 한다. 예를 들어, 노드는 메시지에 디지털 서명하고, 다른 노드는 참여자 A의 디지털 서명에 기초하여 상기 메시지가 상기 노드에 의해 보내졌다는 것을 확인할 수 있다. 디지털 시그너처는 또한 메시지들이 전송 중에 변조되지 않도록 보장하는데 사용될 수 있다. 예를 들어, 도 2를 다시 참조하면, 참여자 A는 메시지를 참여자 B에 보낼 예정이다. 참여자 A는 메시지의 해시를 생성하고, 그런 후, 자신의 개인키를 사용하여, 해시를 암호화하여 암호화된 해시로서 디지털 서명을 제공한다. 참여자 A는 전자 서명을 메시지에 첨부하고, 디지털 서명이 있는 메시지를 참여자 B에게 보낸다. 참여자 B는 참여자 A의 공개키를 사용하여 디지털 서명을 암호해독하고, 해시를 추출한다. 참여자 B는 메시지를 해시하고 해시들을 비교한다. 해시들이 동일하면, 참여자 B는 해당 메시지가 실제로 참여자 A로부터 온 것이였고, 변조되지 않았음을 확인할 수 있다.
일부 구현예들에서, 블록체인 네트워크의 노드들, 및/또는 블록체인 네트워크와 통신하는 노드들은 TEE를 사용하여 동작할 수 있다. 하이 레벨에서, TEE는 하드웨어의 운영 환경(예컨대, 운영 체제(OS), 기본 입력/출력 시스템(BIOS))으로부터 격리된 하드웨어(하나 이상의 프로세서, 메모리) 내의 신뢰 환경이다. 보다 상세하게, TEE는 메인 프로세서 내에서 실행되는 코드, 및 메인 프로세서 내에서 로딩되는 데이터의 기밀성 및 무결성을 보장해주는 프로세서의 별개의 보안 영역이다. 프로세서 내에서, TEE는 OS와 병렬로 실행된다. 소위 신뢰 애플리케이션(trusted application; TA)의 적어도 일부분들은 TEE 내에서 실행되며, 프로세서와 메모리에 대한 액세스를 가질 수 있다. TEE를 통해, TA는 메인 OS에서 실행되는 다른 애플리케이션들로부터 보호된다. 또한, TEE는 TEE 내부에서 TA들을 서로 암호적으로 격리시킨다.
TEE의 예시는 미국 캘리포니아주 산타 클라라의 인텔사에 의해 제공되는 SGX(Software Guard Extension)를 포함한다. SGX가 본 명세서에서 예시로서 논의되지만, 본 명세서의 구현예들은 임의의 적절한 TEE를 사용하여 실현될 수 있다는 것이 구상가능하다.
SGX는 하드웨어 기반 TEE를 제공한다. SGX에서, 신뢰 하드웨어는 중앙 처리 장치(CPU)의 다이이며, 물리적 메모리의 일부분은 선택 코드와 데이터를 보호하기 위해 격리된다. 격리된 메모리 부분들을 엔클레이브(enclave)라고 칭한다. 보다 구체적으로, 엔클레이브는 메모리에서 엔클레이브 페이지 캐시(enclave page cache; EPC)로서 제공되고, 애플리케이션 주소 공간에 매핑된다. 메모리(예를 들어, DRAM)는 SGX를 위한 PRM(preserved random memory)을 포함한다. PRM은 최저 BIOS 레벨의 연속 메모리 공간이며, 어떠한 소프트웨어로도 액세스될 수 없다. 각 EPC는 PRM에 애플리케이션 데이터 및 코드를 로딩하기 위해 OS에 의해 할당되는 메모리 세트(예컨대, 4KB)이다. EPC 메타데이터(EPCM)는 각각의 EPC에 대한 진입 주소이며, 각 EPC가 하나의 엔클레이브에 의해서만 공유될 수 있도록 보장한다. 즉, 단일 엔클레이브는 여러 EPC들을 사용할 수 있는 반면, EPC는 단일 엔클레이브에 전용된다.
TA의 실행 동안, 프로세서는 엔클레이브에 저장된 데이터에 액세스할 때 소위 엔클레이브 모드에서 동작한다. 엔클레이브 모드에서의 동작은 각 메모리 액세스에 대한 추가 하드웨어 체크를 시행한다. SGX에서, TA는 신뢰 부분과 비신뢰 부분으로 컴파일된다. 신뢰 부분은 예를 들어, OS, BIOS, 특권적 시스템 코드, 가상 머신 관리기(Virtual Machine Manager; VMM), 시스템 관리 모드(System Management Mode; SMM) 등에 의해 액세스될 수 없다. 동작시, TA는 실행되어 메모리의 PRM 내에 엔클레이브를 생성한다. 엔클레이브 내의 신뢰 부분에 의해 실행되는 신뢰 기능은 비신뢰 부분에 의해 호출되며, 엔클레이브 내에서 실행되는 코드는 데이터를 평문 데이터(암호화되지 않음)로서 바라보고, 데이터에 대한 외부 액세스는 거부된다. 신뢰 부분은 호출에 대한 암호화된 응답을 제공하고, TA는 계속 실행된다.
예상 코드(예를 들어, TA의 신뢰 부분)가 SGX 제공 TEE 내에서 안전하게 실행된 것임을 검증하기 위해 증명 프로세스가 수행될 수 있다. 일반적으로, 증명 프로세스는 챌린저(challenger)(예를 들어, 블록체인 네트워크 내의 다른 노드, 블록체인 네트워크의 키 관리 시스템(key management system; KMS))로부터 증명 요청을 수신하는 TA를 포함한다. 이에 응답하여, TA는 자신의 엔클레이브가 원격 증명(인용서(quote)라고도 칭함)을 생성할 것을 요청한다. 원격 증명을 생성하는 것은 로컬 증명이 엔클레이브로부터 소위 인용 엔클레이브에 전송되는 것을 포함하고, 이 인용 엔클레이브는 로컬 증명을 검증하고, 비대칭 증명키를 사용하여 로컬 증명에 서명함으로써 로컬 증명을 원격 증명으로 변환시킨다. 원격 증명(인용서)은 챌린저(예컨대, 블록체인 네트워크의 클라이언트 또는 KMS)에게 제공된다.
챌린저는 증명 검증 서비스를 사용하여 원격 증명을 검증한다. SGX의 경우, 인텔은 챌린저로부터 원격 증명을 수신하고 원격 증명을 검증하는 인텔 증명 서비스(Intel Attestation Service; IAS)를 제공한다. 보다 구체적으로, IAS는 원격 증명을 처리하고, 원격 증명이 검증되었는지 여부를 표시하는 보고서(예를 들어, 증명 검증 보고서(attestation verification report; AVR))를 제공한다. 검증되지 않은 경우, 오류가 표시될 수 있다. 검증된 경우(예상 코드가 TEE에서 안전하게 실행된 경우), 챌린저는 TA와의 상호작용을 시작하거나 또는 이를 계속할 수 있다. 예를 들어, 검증에 응답하여, (챌린저로서의) KMS는 TEE를 실행하는 노드가 다른 노드들, 및/또는 클라이언트와 안전하게 통신할 수 있도록 (예를 들어, ECDH(elliptical curve Diffie-Hellman)와 같은 키 교환 프로세스를 통해) 비대칭 암호화키 (예를 들어, 공개키 및 개인키 쌍)를 노드에 발행할 수 있다.
위에서 소개된 바와 같이, SGX를 사용하여 제공된 TEE에서, 코드의 적어도 일부분(예를 들어, TA의 신뢰 부분)은 엔클레이브 내에서 실행되며, 이 코드를 엔클레이브 프로그램이라고 칭할 수 있다. 또한 위에서 소개된 바와 같이, 엔클레이브 프로그램의 실행 전에 증명 프로세스(원격 인증)가 수행된다. 즉, 엔클레이브 및 코드는 인용서를 제공하기 위해 측정되며, 이 인용서는 엔클레이브 내에서 예상대로 코드가 실행된 것인지를 검증하기 위해 원격 증명에서 사용된다. 일반적으로, 엔클레이브 프로그램 자체의 코드와 데이터만이 증명 프로세스에서 측정되며, 측정값의 해시가 인용서에서 운송되고 원격 증명 서비스(예컨대, IAS)에 의해 인증된다.
보다 상세하게, 원격 증명 프로세스(원격 검증이라고도 함)는 비대칭 암호화, 및 인용 엔클레이브(quoting enclave; QE)를 사용하며, 이는 원격 증명을 위해 특별히 제공된 것이다. QE는 인용서에 디지털 서명하기 위해 디바이스 특유적인 개인 비대칭키(하드웨어와 함께 제공됨)를 사용한다. 보안을 더욱 강화하기 위해, 이 증명은 EPID(Enhanced Privacy ID)라고도 알려진 DAA(Direct Anonymous Attestation) 체계에 대한 연장을 사용한다. EPID는 플랫폼을 고유하게 식별하거나 상이한 시그너처들을 연결하지 않고도 플랫폼이 데이터 개체(예컨대, 인용서)에 디지털 서명할 수 있게 해주는 그룹 시그너처 체계로서 설명될 수 있다. QE는 플랫폼 증명에 서명하는데 사용되는 EPID 키를 생성한다. EPID 키는 EPID 백엔드 인프라구조에 의해 인증되며, 플랫폼, 및 기저 하드웨어의 신뢰성을 나타낸다. QE만이 프로세서의 펌웨어의 버전에 결속된 EPID 키에 액세스할 수 있다. 결과적으로, EPID 키를 사용하여 서명된 인용서는 프로세서 자체에 의해 발행된 것으로 간주될 수 있다.
증명 프로세스를 시작하기 위해, 클라이언트는 TA가 엔클레이브 내부에서 예상된 코드를 실행한 것임을 입증하기 위해 TA에 챌린지를 발행한다. TA는 QE의 엔클레이브 식별정보(QEID)와 함께 제공된다. QEID와 클라이언트의 챌린지는 엔클레이브로 전송된다. 엔클레이브는 챌린지에 대한 응답, 및 엔클레이브와 안전하게 통신하기 위해 클라이언트에 의해 사용될 수 있는 공개키를 포함하는 매니페스트(manifest)를 생성한다. 공개키는 증명 프로세스의 일부로서 임시로 생성된 것이다. 엔클레이브는 매니페스트의 해시를 생성하며, 매니페스트를 엔클레이브에 결속시키는 보고서의 생성을 위한 해시를 포함한다. 엔클레이브는 보고서를 애플리케이션에 전송하고, 이 애플리케이션은 보고서를 서명될 QE에 제공한다. QE는 인용서를 생성하고, 자신의 EPID 키로 인용서에 서명하며, 서명된 인용서를 TA에 반환한다. TA는 챌린지를 시작했던 클라이언트에게 인용서를 전송한다.
클라이언트는 인증을 위해 원격 증명 서비스에 인용서를 제공한다. 예를 들어, IAS는 SGX 인에이블드 엔클레이브들의 증명 증거(예컨대, 인용서)를 검증하기 위해 증명 애플리케이션 프로그래밍 인터페이스(API)를 노출시킨다. 증명 API는 REST(Representational State Transfer) API이며, JSON(JavaScript Object Notation)을 데이터 직렬화 포맷으로서 사용한다. 클라이언트는 증명 API를 통해 요청을 IAS에 제출하고, 상기 요청은 증명 증거 페이로드(attestation evidence payload; AEP)를 포함한다. AEP는 isvEnclaveQuote 필드에 제공되는 인용서를 포함한다. IAS는 인용서를 처리하여 엔클레이브의 신원과 엔클레이브가 실행되는 플랫폼의 유효성을 검증한다. 보다 구체적으로, IAS는 플랫폼의 TCB(Trusted Computing Base)와 엔클레이브의 신원의 검증의 암호 서명된 보고서로서 AVR을 제공한다. AVR은 isvEnclaveQuoteStatus 필드에서 제공되는 인용서 상태 값을 포함한다. 엔클레이브 및 플랫폼이 검증되면, 인용서 상태가 OK로서 제공되는데, 이는 인용서의 EPID 시그너처가 검증되었으며, 플랫폼의 TCB 레벨이 최신임을 나타낸다.
AVR은 원격 서명 서비스에 의해 보고서 서명키로(예를 들어, RSA-SHA256을 사용하여) 암호 서명되고, RSCC(Report Signing Certificate Chain)이 AVR과 함께 제공된다. 클라이언트는 RSCC를 디코딩하고 검증함으로써, 그리고 RSCC가 신뢰 증명 보고서 서명 CA 인증서에 근원을 두고 있는지를 검증함으로써 AVR을 통해 시그너처를 검증한다. 클라이언트가 증명 서비스에 등록한 후 증명 보고서 서명 CA 인증서가 클라이언트에 다운로드될 수 있게 되는데, 이것은 클라이언트가 챌린지를 개시하기 전에 발생한다. 클라이언트는 증명 보고서 서명 인증서(예컨대, x.509 디지털 인증서의 형태로 배포된 보고서 키의 공개 부분)를 사용하여 AVR을 통해 시그너처를 검증한다.
성공적인 검증에 응답하여, 클라이언트는 후속하는, 엔클레이브와의 안전한 통신에 사용되는 세션키들을 유도해낸다. 세션키들은 서명키(SK)와 마스터키(MK)를 포함한다. 세션키들은 개인키와 공개키를 포함하는 키 쌍이라고 칭해질 수 있다. 세션키들은 클라이언트와 엔클레이브 간에 DHKE(Diffie-Hellman Key Exchange)의 일부로서 제공되는 KDK(키 유도키)를 사용하여 유도된다. 이 교환으로부터 획득된 공유키는 엔클레이브에 제공될 데이터를 클라이언트가 암호화하는데 사용할 수 있으며, 이 키는 동일한 키를 유도하여 이를 데이터를 암호해독하는데 사용할 수 있다. 따라서, 증명이 수행된 후, 키 교환을 통해 제공된 공유키에서 신뢰 앵커가 제공된다.
일부 경우들에서, 엔클레이브 내에서 실행된 코드, 및/또는 엔클레이브 내의 데이터는 동적이다. 즉, 예를 들어, 엔클레이브 프로그램은 상태기반 서브 로직 코드를 실행할 수 있으며, 상태는 시간이 지남에 따라 변경된다. 이에 대한 예시는, 비제한적인 예시로서, 특정 등록 인증서를 사용하여 외부 서비스(예컨대, 웹 기반 서비스)에 연결되는 서브 로직 코드(예컨대, 스마트 계약 코드, 클라이언트 코드)를 포함할 수 있다. 이 경우, 엔클레이브 프로그램이 호출될 때마다, 등록 인증서가 요청에서 제공된다. 요청 파라미터를 운송하는 것 외에도, 서브 로직 코드 및 그 상태 데이터가 또한 필요하다. 엔클레이브 프로그램이 서브 로직 코드 및 상태 데이터를 로딩한 후, 서브 로직이 엔클레이브 내에서 실행되고, 요청 파라미터가 처리되어 결과를 획득한다. 엔클레이브 프로그램은 오리지널 증명 프로세스를 통해 측정되고 검증된 자신의 정적 코드와 정적 데이터만을 갖기 때문에, 엔클레이브 프로그램은 서브 로직이 결과를 제공했으며, 그 결과는 신뢰할 수 있는 것이라는 증명을 클라이언트에게 제공할 필요가 있다.
서브 로직이 결과를 제공했다는 것을 클라이언트에게 증명하기 위한 종래의 접근법은 각각의 요청과 함께 완전한 서브 로직 코드를 제공하는 것을 포함한다. 예를 들어, 특정 서브 로직 코드가 실행될 것인 경우, 클라이언트는 완전한 서브 로직 코드 및 요청 파라미터들(예를 들어, 서브 로직 코드를 통해 처리될 데이터)을 포함하는 요청을 엔클레이브 프로그램에 전송한다. 엔클레이브 프로그램은 서브 로직 코드를 실행하여 결과를 제공한다. 서브 로직 코드, 또는 서브 로직 코드의 해시값, 및 결과는 TEE의 개인키(예컨대, 위의 마스터키라고도 칭함)를 사용하여 서명된다. 클라이언트가 검증을 위해 엔클레이브 프로그램으로부터 반환된 결과를 수신하면, 클라이언트는 오리지널 서브 로직 코드를 사용하여 (또는 해시값을 재계산하여) 결과를 검증하고, 특정 서브 로직 코드가 엔클레이브 프로그램에 의해 실행되었음을 증명하여 결과를 제공한다.
서브 로직 코드가 결과를 제공했다는 것을 클라이언트에게 증명하기 위한 이러한 접근법은 단점이 있다. 예를 들어, 클라이언트가 요청을 엔클레이브 프로그램에 전송할 때마다, 서브 로직 코드의 완전한 표현이 요청에서 운송될 필요가 있어서, 요청 크기를 더 크게 하여, 네트워크 전송에 부담을 준다. 다른 예시로서, 각각의 요청을 처리하기 위해, 엔클레이브 프로그램은 요청에서 운송된 서브 로직 코드를 파싱하고 로딩할 필요가 있어서, 처리량을 증가시킨다. 다른 예시로서, 각각의 요청이 처리된 후, 엔클레이브 프로그램은 서브 로직 코드에 서명할 필요가 있고, 클라이언트는 결과에서 제공된 서브 로직 코드에 대한 체크를 반복할 필요가 있다. 이 두 개의 활동들 모두 처리량을 증가시킨다. 또다른 예시로서, 상이한 서브 로직 코드들의 복잡성, 다양성, 및 비호환성으로 인해, 서브 로직 코드를 공통 포맷으로 직접 표현하는 것은 어렵다. 따라서, 서브 로직 코드는 엔클레이브 프로그램 질의(query) 인터페이스에서 결합되어 있으며, 확장성이 좋지 않다.
본 명세서에서 사용되는 바와 같이, 서브 로직 코드는 엔클레이브 프로그램의 증명 후에 엔클레이브 프로그램에 의해 실행되도록 제공되는 컴퓨터 실행가능 코드를 지칭할 수 있다. 일부 예시들에서, 서브 로직 코드는 엔클레이브 프로그램에는 없는 하나 이상의 기능을 포함한다. 이러한 방식으로, 서브 로직 코드는 엔클레이브 프로그램에 의해 실행되어 엔클레이브 프로그램의 기능성을 확장시킬 수 있다.
상기 문맥을 고려하여, 본 명세서의 구현예들은 효율적이고 단순화된 엔클레이브 프로그램 서브 로직 증명 체계에 관한 것이다. 보다 구체적으로, 그리고 본 명세서에서 더 상세히 설명되는 바와 같이, 본 명세서의 구현예들은 엔클레이브 프로그램의 논리 표현의 증명을 복수의 독립적인 시그너처들에 기초한 증명으로 변환하기 위해 TEE 메커니즘을 사용한다. 보다 상세하게, 본 명세서의 구현예들은 엔클레이브 프로그램 실행 서브 로직 태스크를 여러 단계들로 분할시킨다. 제1 단계는 원격 검증(증명)을 포함한다. 제2 단계는 서브 로직 코드 등록을 포함한다. 제3 단계는 서브 로직 질의를 포함한다. 본 명세서에 설명된 바와 같이, 본 명세서의 구현예들은 네트워크 전송 및 처리를 감소시키고, 보다 높은 성능 효율 및 개선된 확장성을 달성한다.
제1 단계인 원격 인증과 관련하여, 클라이언트는 엔클레이브 프로그램에 대한 원격 증명 챌린지를 개시한다. 이에 응답하여, 엔클레이브 프로그램은 여기에 설명된 바와 같이, 클라이언트에게 반환되는 인증 정보에 포함된 키 쌍(예를 들어, 공개키, 개인키)을 생성한다. 클라이언트는 인증 정보를 원격 인증 서비스(예컨대, IAS)에 전송한다. 원격 인증 서비스는 인증 정보를 처리하여 검증 결과(예를 들어, AVR)를 제공하고, 검증 결과를 클라이언트에게 반환한다. 원격 인증이 전달된 후, 클라이언트는 엔클레이브 프로그램의 공개키를 사용하여, 엔클레이브 프로그램이 자신의 개인키를 사용하여 서명한, 엔클레이브 프로그램으로부터 반환된 응답들을 검증한다.
도 3은 본 명세서의 구현예들에 따른 시스템(300)의 예시를 나타내는 도면이다. 도시된 바와 같이, 시스템(300)은 클라이언트(308), 노드(310), 및 증명 서비스(312)를 포함한다. 도시된 예시에서, 노드(310)는 TEE 기술(예를 들어, Intel SGX)을 사용하여 구현된다. 예를 들어, 그리고 여기에서 설명된 바와 같이, 엔클레이브 프로그램은 노드(310)의 TEE 내에서 실행된다. 일반적으로, 증명 서비스(312)는 클라이언트(308)에 대한 노드(310)의 정당성을 검증한다. 증명 서비스의 예시는 상술한 IAS를 포함한다. 증명 프로세스 동안, 클라이언트(308)는 노드(310)의 정당성을 나타내는 증명 증거(320)를 노드(310)로부터 증명 검증 서비스(312)에 중계한다. 일부 구현예들에서, 증명 증거(320)는 노드(310)의 측정값(322) 및 노드(310)의 시그너처(326)를 포함한다. 노드(310)의 측정값(322)은 노드(310)의 TEE 내에서 실행된 엔클레이브 프로그램의 정적 코드에 기초한 해시값을 포함할 수 있다. 증명 증거(320)에 포함된 노드(310)의 시그너처(326)는 노드(310)의 증명키를 사용하여 서명된 노드(310)의 측정값(322)을 포함할 수 있다.
일부 구현예들에서, 노드(310)의 증명키는 EPID 개인키를 포함한다. 위에서 소개한 바와 같이, EPID는 프라이버시를 유지하면서, 신뢰 시스템의 증명을 위해 인텔에 의해 제공된 알고리즘이다. 일반적으로, 네트워크의 각 구성원(예를 들어, 컴퓨터 또는 서버)에는 증명 증거에 서명하기 위한 EPID 개인키가 할당되고, 네트워크에서의 증명 증거의 검증자는 네트워크의 다른 구성원들의 EPID 개인키들과 쌍을 이루는 EPID 공개키를 저장한다. 각 구성원은 각자의 EPID 개인키를 사용하여 증명 증거의 시그너처를 생성할 수 있으며, 검증자는 EPID 공개키를 사용하여 다른 구성원들의 시그너처들을 검증할 수 있다. 따라서, EPID 키들은, 컴퓨터 또는 서버와 같은 디바이스가 진품 디바이스이라는 것을 증명하는데 사용될 수 있다.
증명 증거(320)는 노드(310)에 의해 생성된 공개키(324)를 더 포함할 수 있다. 증명 증거(320)가 노드(310)에 의해 생성된 공개키(324)를 포함하면, 노드(310)의 시그너처(326)는 측정값(322)과 공개키(324)를 포함하며, 이것들은 노드(310)의 증명키를 사용하여 서명된다.
노드(310)는 클라이언트(308)로부터의 요청들을 수집하고 이행하기 위한 임의의 적절한 서버, 컴퓨터, 모듈, 또는 컴퓨팅 엘리먼트를 포함한다. 예를 들어, 그리고 본 발명개시의 구현예들에 따르면, 노드(310)는 서브 로직 코드를 처리하고 각각의 결과들을 제공해달라는 요청들을 클라이언트(308)와 같은 클라이언트들로부터 수신하고 처리할 수 있다. 클라이언트(308)로부터의 요청들을 처리하기 전에, 클라이언트(308)는 노드(310)에 챌린징한다. 이에 응답하여, 노드(310)는 증명 증거(320)를 생성하고, 증명 증거(320)를 클라이언트(308)에 전송하고, 클라이언트(308)는 노드(310)의 정당성을 검증하기 위해 증명 증거(320)를 증명 서비스(312)에 제공한다. 일부 구현예들에서, 노드(310)는 공개키(324)와 개인키를 포함하는 키 쌍을 생성하고, 증명 증거(320)에 공개키(324)를 포함시킨다. 공개키(324)는 본 명세서에 기술된 바와 같이, 클라이언트(308)와 노드(310) 간의 장래의 통신을 위해 사용된다. 예를 들어, 노드(310)는 개인키를 사용하여 요청 결과에 서명할 수 있고, 클라이언트(308)는 공개키(324)를 사용하여 서명된 요청 결과를 검증할 수 있다.
증명 서비스(312)는 클라이언트(308)에 의해 노드(310)로부터 포워딩되는 증명 증거(320)의 정당성을 검증하기 위한 임의의 적절한 서버, 컴퓨터, 모듈, 또는 컴퓨팅 엘리먼트를 포함한다. 전술한 바와 같이, 증명 증거(320)는 노드(310)의 측정값(322), 노드(310)의 시그너처(326), 및 (선택적으로) 노드(310)에 의해 생성된 공개키(324)를 포함한다. 증명 증거(320)를 수신하면, 증명 서비스(312)는 증명 증거(320)에 있는 노드(310)의 시그너처(326)를 검증하고, 증명 검증 보고서(AVR)(330)를 생성한다.
증명 서비스(312)는 증명 서비스(312)의 증명키를 사용하여 증명 증거(320)에 있는 시그너처(326)를 검증한다. 일부 구현예들에서, 증명 서비스(312)의 증명키는 노드(310)가 증명 증거(320)에 서명하기 위해 사용했던 EPID 개인키와 쌍을 이루는 EPID 공개키를 포함한다. 증명 증거(320)에 있는 시그너처를 검증한 후, 증명 서비스(312)는 증명 증거(320), 증명 증거(320)에 있는 시그너처(326)가 유효한지 여부를 나타내는 검증 결과(334), 및 증명 서비스(312)의 시그너처(336)를 포함하는 AVR(330)을 생성한다.
일부 구현예들에서, AVR(330)은 중계 시스템 노드(310)의 시그너처(326)가 제외된 증명 증거(320)를 포함한다. 예를 들어, AVR(330)은 중계 시스템 노드(310)의 측정값(322), 중계 시스템 노드(310)에 의해 생성된 공개키(324), 검증 결과(334), 및 증명 서비스(312)의 시그너처(336)를 포함할 수 있다. 일부 구현예들에서, 증명 서비스(312)의 시그너처(336)는 증명 서비스(312)의 보고서 서명키(예를 들어, 증명 서비스(312)가 증명 검증 보고서에 서명하기 위해 사용하는 개인키)를 사용하여 서명된 증명 증거(320) 및 검증 결과(334)를 포함한다. 보고서 서명키는 증명 서비스(312)의 증명키와는 상이할 수 있다는 것을 유의한다.
도 4는 본 명세서의 구현예들에 따른 신호 흐름(400)의 예시를 도시한다. 신호 흐름(400)은 증명 검증 프로세스를 나타낸다. 편의상, 본 프로세스를 하나 이상의 장소에 위치해 있고, 본 명세서에 따라 적절히 프로그래밍된 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로서 설명할 것이다. 예를 들어, 적절하게 프로그래밍된 분산 시스템(예를 들어, 도 1의 블록체인 시스템(100); 도 3의 시스템(300))이 본 프로세스를 수행할 수 있다.
일반적으로, 동작에서, 클라이언트(308)는 노드(310)로부터 증명 증거를 수신하고, 증명 증거를 검증하기 위해 증명 증거를 증명 서비스(312)에 전송한다. 클라이언트(308)는 증명 증거에 있는 노드(310)의 시그너처에 대한 검증에 기초하여 노드(310)의 정당성을 나타내는 AVR을 증명 서비스(312)로부터 수신한다.
도 4의 예시에서, 클라이언트(308)는 증명 요청(예를 들어, 챌린지)을 노드(310)에 전송한다(410). 증명 요청은 노드(310)의 정당성 또는 유효성을 나타내는 증명 증거, 및 노드(310)의 TEE에서 실행되는 엔클레이브 프로그램을 요청하기 위해 노드(310)에 전송된다. 일부 구현예들에서, 증명 증거는 노드(310)와 엔클레이브 프로그램의 측정값, 및 노드(310)의 시그너처를 포함한다. 노드(310)의 측정값은 노드(310)의 초기 상태의 해시값을 포함할 수 있다. 예를 들어, 노드(310)의 측정값은 노드(310) 상에서 구현되는 프로세스 코드(엔클레이브 프로그램)의 해시값을 포함할 수 있다.
증명 요청에 응답하여, 노드(310)는 증명 증거를 생성한다(412). 전술한 바와 같이, 증명 증거는 노드(310)의 정당성 또는 유효성을 나타내며, 노드(310)와 엔클레이브 프로그램의 측정값, 및 노드(310)의 시그너처를 포함할 수 있다. 일부 구현예들에서, 증명 증거는 노드(310)에 의해 생성된 공개키를 더 포함한다. 예를 들어, 노드(310)는 예를 들어, RSA(Rivest-Shamir-Adleman) 알고리즘과 같은, 미리 결정된 키 생성 알고리즘을 사용하여 개인키와 공개키를 포함하는 랜덤 암호키 쌍을 생성할 수 있다. 일부 예시들에서, 공개키는 증명 증거에서 제공되며, 클라이언트(308)와 노드(310) 간의 장래의 통신을 위해 사용될 수 있다. 예를 들어, 노드(310)는 개인키를 사용하여 요청 결과에 서명할 수 있고, 클라이언트(308)는 공개키를 사용하여 서명된 요청 결과를 검증할 수 있다.
일부 구현예들에서, 노드(310)의 측정값은 노드(310)의 초기 상태의 해시값을 포함한다. 증명 증거에 있는 노드(310)의 시그너처는 측정값 및 노드(310)에 의해 생성된 공개키를 포함하며, 이것들은 노드(310)의 증명키를 사용하여 서명된다. 일부 구현예들에서, 노드(310)의 증명키는 EPID 개인키를 포함한다. EPID 개인키를 사용하여 서명된 증명 증거는 증명 증거를 생성한 디바이스의 진위성을 증명하기 위해 EPID 개인키와 쌍을 이루는 EPID 공개키를 사용하여 검증자에 의해 검증될 수 있다.
노드(310)는 증명 증거를 클라이언트(308)에 전송한다(414). 클라이언트(308)는 노드(310)로부터 전송된 증명 증거를 증명 서비스(312)에 포워딩한다(416). 일부 구현예들에서, 클라이언트(308)는 증명 검증 요청을 증명 서비스(312)에 전송한다. 증명 검증 요청은 노드(310)로부터 전송된 증명 증거, 및 노드(310)가 SGX 플랫폼 서비스를 사용하는지 여부를 나타내는 기술어(descriptor)와 같은 보충 정보를 포함한다.
증명 서비스(312)는 클라이언트(308)에 의해 포워딩된 증명 증거를 수신한 것에 응답하여 증명 증거를 검증한다(418). 언급된 바와 같이, 증명 증거는 노드(310)의 측정값, 노드(310)에 의해 생성된 공개키, 및 노드(310)의 시그너처를 포함한다. 증명 서비스(312)는 증명 서비스(312)의 증명키를 사용하여 증명 증거에 있는 노드(310)의 시그너처를 검증함으로써 증명 증거를 검증할 수 있다. 예를 들어, 증명 서비스(312)는 노드(310)가 증명 증거에 서명하기 위해 사용하는 EPID 개인키와 쌍을 이루는 증명 검증 서버의 EPID 공개키를 사용하여 노드(310)의 시그너처를 검증할 수 있다.
증명 증거에 있는 노드(310)의 시그너처가 유효하다고 증명 서비스(312)가 결정하면, 증명 서비스(312)는 노드(310)가 진품 또는 적법한 디바이스이라고 결정할 수 있다. 증명 증거에 있는 노드(310)의 시그너처가 유효하지 않다고 증명 서비스(312)가 결정하면, 증명 서비스(312)는 노드(310)가 진품이 아니거나 또는 불법적인 디바이스이다라고 결정할 수 있고, 노드(310)로부터의 어떠한 후속 데이터 및 요청들도 거부할 수 있다.
증명 서비스(312)는 증명 증거의 검증에 기초하여 AVR을 생성한다(420). 일부 구현예들에서, AVR은 노드(310)의 증명 증거, 증명 검증 결과, 및 증명 검증 서비스(312)의 디지털 시그너처를 포함할 수 있다. 일부 구현예들에서, AVR은 노드(310)의 시그너처를 제외하고 노드(310)의 증명 증거를 포함할 수 있다. 예를 들어, AVR은 노드(310)의 측정값, 노드(310)에 의해 생성된 공개키, 증명 검증 결과, 및 증명 서비스(312)의 시그너처를 포함할 수 있다. AVR에 있는 증명 검증 결과는 노드(310)의 시그너처가 유효한지 여부를 나타낸다. 예를 들어, 증명 검증 결과는 노드(310)의 시그너처가 유효하다는 것을 나타내는 "유효" 또는 "OK"의 값, 또는 시그너처가 무효하다는 것을 나타내는 "무효"의 값을 포함할 수 있다.
일부 구현예들에서, 증명 서비스(312)의 시그너처는 보고서 서명키를 사용하여 서명된 증명 증거 및 증명 검증 결과를 포함한다. 보고서 서명키는 증명 서비스(312)가 AVR에 서명하기 위해 사용하는 개인키일 수 있다. 일부 구현예들에서, 보고서 서명키는 미리 결정된 키 생성 알고리즘을 사용하여 증명 서비스(312)에 의해 생성된다. 예를 들어, 보고서 서명키는 RSA-SHA(Secure Hash Algorithm) 256을 사용하여 생성될 수 있다. 보고서 서명키는 증명 서비스(312)가 증명 증거를 검증하기 위해 사용하는 증명키(예를 들어, EPID 공개키)와는 상이하다는 것을 유의한다.
일부 구현예들에서, 증명 서비스(312)는 AVR을 중계 시스템 제어기(308)에 전송한다(422). 위에서 언급한 바와 같이, AVR은 노드(310)의 신원의 검증의 암호 서명된 보고서를 포함하고, 노드(310)의 증명 증거, 증명 검증 결과, 및 증명 서비스(312)의 디지털 시그너처를 포함할 수 있다. 클라이언트(308)는 AVR을 검증한다(424). 예를 들어, 클라이언트(308)는 AVR에 있는 증명 서비스(312)의 시그너처를 검증할 수 있다. 일부 구현예들에서, 클라이언트(308)는 보고서 서명 인증서를 사용하여 증명 서비스(312)의 시그너처를 검증한다. 보고서 서명 인증서는 X.509 디지털 인증서일 수 있다. 보고서 서명 인증서는, 증명 서비스(312)에 의해 생성되고 증명 서비스(312)가 AVR에 서명하기 위해 사용하는 보고서 서명키와 쌍을 이루는 공개키를 포함할 수 있다.
AVR에 있는 증명 서비스(312)의 시그너처가 유효한 것이라고 클라이언트(308)가 검증하면, 클라이언트(308)는 AVR이 증명 서비스(312)에 의해 실제로 전송된 것이라고 결정한다. AVR에 있는 증명 서비스(312)의 시그너처가 무효한 것이라고 클라이언트(308)가 검증하면, 클라이언트(308)는 증명 검증 보고서가 진품이 아니라고 결정하고, AVR을 거부할 것이다. 클라이언트(308)는 노드(310)의 증명 증거가 유효한지 여부를 결정하기 위해 AVR에 있는 증명 검증 결과를 추가로 검사할 수 있다. 일부 구현예들에서, 클라이언트(308)는 증명 증거가 유효한지 여부를 결정하기 위해, 증명 증거에 있는 측정 값을, 클라이언트(308)에 의해 저장된 측정값과 비교한다.
클라이언트(308)는, AVR이 진품이고 노드(310)의 증명 증거가 유효하다는 결정에 응답하여, 노드(310)를 유효한 디바이스로서 또는 적법한 디바이스로서 등록한다(426). 클라이언트(308)는 또한, 증명 증거에 포함되고 노드(310)에 의해 생성된 공개키를 저장한다. 공개키(324)는 본 명세서에 기술된 바와 같이, 클라이언트(308)와 노드(310) 간의 장래의 통신을 위해 클라이언트(308)에 의해 사용될 것이다.
제2 단계, 서브 로직 코드 등록과 관련하여, 그리고 본 명세서의 구현예들에 따라, 클라이언트(308)는 실행을 위해 서브 로직 코드를 노드(310)에 등록한다. 일부 예시들에서, 서브 로직 코드는 노드(310) 내의 엔클레이브 프로그램에 의해 실행될 수 있는 컴퓨터 실행가능 코드이다. 서브 로직 코드는 엔클레이브 프로그램의 기능을 확장하는 모듈로서 설명될 수 있다. 일부 구현예들에서, 클라이언트(308)는 복수의 서브 로직 코드들을 노드(310)에 등록한다. 일부 예시들에서, 각각의 서브 로직 코드는 하나 이상의 버전(예를 들어, v1, v1.1, v2)을 포함할 수 있다.
본 발명개시의 구현예들에 따르면, 서브 로직 코드의 등록은 클라이언트(308)가 등록 요청을 엔클레이브 프로그램에 송신하는 것과, 엔클레이브 프로그램이 등록 결과를 제공하는 것을 포함한다. 일부 예시들에서, 등록될 각각의 서브 로직 코드에 대해, 등록 요청은 서브 로직 코드를 고유하게 식별하는 식별자, 및 서브 로직 코드 자체를 포함한다. 일부 예시들에서, 등록될 각각의 서브 로직 코드에 대해, 등록 요청은 서브 로직 코드를 고유하게 식별하는 식별자, 버전 번호, 및 서브 로직 코드 자체를 포함한다. 일부 예시들에서, 등록 요청은 각각의 서브 로직 코드에 대해 전송될 수 있다(예를 들어, 단일 서브 로직 코드에 대한 단일 등록 요청). 일부 예시들에서, 등록 요청은 복수의 서브 로직 코드들에 대해 전송될 수 있다(예를 들어, 둘 이상의 서브 로직 코드들에 대한 단일 등록 요청).
일부 구현예들에서, 등록 요청을 수신한 것에 응답하여, 엔클레이브 프로그램은 서브 로직 코드를 저장하고, 저장된 서브 로직 코드와 관련된 인덱스를 각각의 식별자들에 제공한다. 일부 구현예들에서, 각각의 서브 로직 코드에 대해, 엔클레이브 프로그램은 개인 코드키와 공개 코드키를 포함하는 코드키 쌍을 생성한다. 이러한 방식으로, 각각의 서브 로직 코드는 각각의 코드키 쌍을 갖는다. 일부 예시들에서, 엔클레이브 프로그램은 전술한 KDK에 기초하여 키 유도 함수(key derivation function; KDF)를 사용하여 코드키 쌍을 생성한다.
일부 예시들에서, 동일한 서브 로직 코드의 복수의 버전들에 대해 단일 코드키 쌍이 제공된다. 예를 들어, 서브 로직 코드가 제1 버전과 제2 버전을 포함하는 경우, 동일한 코드키 쌍이 서브 로직 코드의 제1 버전과 제2 버전을 모두 담당한다. 일부 예시들에서, 동일한 서브 로직 코드의 각 버전에 대해 코드키 쌍들이 제공된다. 예를 들어, 서브 로직 코드가 제1 버전과 제2 버전을 포함하는 경우, 제1 버전에 대해 제1 코드키 쌍이 제공되고, 제2 버전에 대해 제2 코드키 쌍이 제공된다.
일부 구현예들에서, 서브 로직 코드가 엔클레이브 프로그램에 의해 등록되고 저장된 후, 엔클레이브 프로그램은 등록 결과를 클라이언트(308)에 제공한다. 일부 예시들에서, 등록 결과는 등록 표시자(예를 들어, 서브 로직 코드의 성공적인 등록을 표시함), 서브 로직 코드의 공개 코드키(들), 및 디지털 시그너처를 포함한다. 일부 예시들에서, 엔클레이브 프로그램은 상기 설명된 증명 프로세스의 일부로서 제공되었던 자신의 개인키를 사용하여 디지털 시그너처를 생성한다. 예를 들어, 등록 표시자 및/또는 공개 코드키가 해시 함수를 통해 처리되어 제1 해시값을 제공한다. 해시 함수의 예시는 비제한적인 예시로서, SHA-256을 포함한다. 엔클레이브 프로그램은 제1 해시값과 개인키에 기초하여 디지털 시그너처를 생성한다. 예를 들어, 제1 해시값과 개인키는 디지털 시그너처를 제공하는 시그너처 알고리즘을 통해 처리된다.
일부 구현예들에서, 클라이언트(308)는 등록 결과를 수신하고, 전술한 증명 프로세스의 일부로서 제공되었던 엔클레이브 프로그램의 공개키를 사용하여 등록 결과를 검증한다. 예를 들어, 클라이언트(308)는 해시 함수를 통해 등록 표시자 및/또는 공개 코드키를 처리하여 제2 해시값을 제공하고, 엔클레이브 프로그램의 공개키를 사용하여 디지털 시그너처로부터 제1 해시값을 결정한다. 클라이언트(308)는 제1 해시값과 제2 해시값을 비교한다. 제1 해시값과 제2 해시값이 동일하면, 등록 결과는 유효한 것이고, 클라이언트(308)는 공개 코드키를 저장한다. 제1 해시값과 제2 해시값이 동일하지 않으면, 등록 결과는 무효한 것이다.
도 5는 서브 로직 등록 단계 동안의 신호 흐름(500)의 예시를 도시한다. 신호 흐름(500)은 서브 로직 등록 프로세스를 나타낸다. 편의상, 본 프로세스를 하나 이상의 장소에 위치해 있고, 본 명세서에 따라 적절히 프로그래밍된 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로서 설명할 것이다. 예를 들어, 적절하게 프로그래밍된 분산 시스템(예를 들어, 도 1의 블록체인 시스템(100); 도 3의 시스템(300))이 본 프로세스를 수행할 수 있다.
도 5의 예시에서, 클라이언트(308)는 노드(310) 내에서 실행되는 엔클레이브 프로그램에 등록 요청을 전송한다(502). 일부 예시들에서, 등록될 각각의 서브 로직 코드에 대해, 등록 요청은 서브 로직 코드를 고유하게 식별하는 식별자, 및 서브 로직 코드 자체를 포함한다. 일부 예시들에서, 등록될 각각의 서브 로직 코드에 대해, 등록 요청은 서브 로직 코드를 고유하게 식별하는 식별자, 버전 번호, 및 서브 로직 코드 자체를 포함한다.
일부 구현예들에서, 등록 요청을 수신한 것에 응답하여, 엔클레이브 프로그램은 서브 로직 코드를 저장하고(504), 저장된 서브 로직 코드와 관련된 인덱스를 각각의 식별자들에 제공한다(506). 엔클레이브 프로그램은 저장된 서브 로직 코드에 대한 개인 코드키 및 공개 코드키를 포함하는 코드키 쌍을 생성한다(508). 엔클레이브 프로그램은 등록 결과를 생성한다(510). 일부 예시들에서, 등록 결과는 등록 표시자(예를 들어, 서브 로직 코드의 성공적인 등록을 표시함), 서브 로직 코드의 공개 코드키(들), 및 디지털 시그너처를 포함한다. 디지털 시그너처가 증명 프로세스 동안 생성되었던 엔클레이브 프로그램의 개인키에 기초하여 생성된다. 엔클레이브 프로그램(310)은 등록 결과를 클라이언트(308)에 전송한다(512). 일부 구현예들에서, 클라이언트(308)는 본 명세서에서 설명된 바와 같이, 등록 결과를 수신하고, 엔클레이브 프로그램의 공개키를 사용하여 등록 결과를 검증한다(514). 등록 결과가 유효하면, 클라이언트(308)는 공개 코드키를 저장한다(516).
제3 단계, 서브 로직 질의와 관련하여, 그리고 본 명세서의 구현예들에 따라, 클라이언트(308)는 특정 서브 로직 코드를 호출하여 결과를 제공해달라는 요청을 노드(310) 내에서 실행되는 엔클레이브 프로그램에 전송한다. 일부 구현예들에서, 요청은 실행될 서브 로직 코드의 식별자, 및 하나 이상의 요청 파라미터를 포함한다. 일부 구현예들에서, 요청은 실행될 서브 로직 코드의 식별자, 실행될 서브 로직 코드의 버전, 및 하나 이상의 요청 파라미터를 포함한다. 일부 예시들에서, 하나 이상의 요청 파라미터는 결과를 제공하기 위해 서브 로직 코드를 사용하여 처리될 데이터를 포함한다.
요청을 수신한 것에 응답하여, 엔클레이브 프로그램은 요청된 서브 로직 코드(및 버전(요청에 포함되어 있는 경우에 한 함))를 리트리빙하고, 서브 로직 코드를 실행하여 결과를 제공한다. 예를 들어, 엔클레이브 프로그램은 서브 로직 코드를 통해 하나 이상의 요청 파라미터를 처리한다. 일부 예시들에서, 결과는 서브 로직 코드를 통한 요청 파라미터들의 처리, 및 엔클레이브 프로그램의 하나 이상의 함수에 기초하여 생성된다. 일부 예시들에서, 엔클레이브 프로그램은 하나 이상의 요청 파라미터 및 추가적인 데이터를 서브 로직 코드를 통해 처리한다. 예시적인 추가적인 데이터는 엔클레이브 프로그램으로부터 제공되는 데이터(예를 들어, 노드(310)에 저장된 데이터)를 포함할 수 있다.
엔클레이브 프로그램은 결과 및 디지털 시그너처를 포함하는 응답을 제공한다. 일부 예시들에서, 엔클레이브 프로그램은 상기 설명된 등록 프로세스의 일부로서 제공되었던, 서브 로직 코드의 개인 코드키를 사용하여 디지털 시그너처를 생성한다. 예를 들어, 결과는 해시 함수를 통해 처리되어 제1 해시값을 제공한다. 해시 함수의 예시는 비제한적인 예시로서, SHA-256을 포함한다. 엔클레이브 프로그램은 제1 해시값과 서브 로직 코드의 개인 코드키에 기초하여 디지털 시그너처를 생성한다. 예를 들어, 제1 해시값과 개인 코드키는 디지털 시그너처를 제공하는 시그너처 알고리즘을 통해 처리된다.
일부 구현예들에서, 클라이언트(308)는 응답을 수신하고, 전술한 등록 프로세스의 일부로서 제공되었던, 서브 로직 코드의 공개 코드키를 사용하여 결과를 검증한다. 예를 들어, 클라이언트(308)는 해시 함수를 통해 결과를 처리하여 제2 해시값을 제공하고, 서브 로직 코드의 공개 코드키를 사용하여 디지털 시그너처로부터 제1 해시값을 결정한다. 클라이언트(308)는 제1 해시값과 제2 해시값을 비교한다. 제1 해시값과 제2 해시값이 동일하면, 결과는 유효한 것이고, 클라이언트(308)는 결과에 기초하여 추가적인 동작들을 수행할 수 있다. 제1 해시값과 제2 해시값이 동일하지 않으면, 결과는 무효한 것이다.
도 6은 서브 로직 질의 단계 동안의 신호 흐름(600)의 예시를 도시한다. 신호 흐름(600)은 서브 로직 질의 프로세스를 나타낸다. 편의상, 본 프로세스를 하나 이상의 장소에 위치해 있고, 본 명세서에 따라 적절히 프로그래밍된 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로서 설명할 것이다. 예를 들어, 적절하게 프로그래밍된 분산 시스템(예를 들어, 도 1의 블록체인 시스템(100); 도 3의 시스템(300))이 본 프로세스를 수행할 수 있다.
도 6의 예시에서, 클라이언트(308)는 특정 서브 로직 코드를 호출하여 결과를 제공해달라는 요청을 노드(310) 내에서 실행되는 엔클레이브 프로그램에 전송한다(602). 일부 구현예들에서, 요청은 실행될 서브 로직 코드의 식별자, 및 하나 이상의 요청 파라미터를 포함한다. 요청을 수신한 것에 응답하여, 엔클레이브 프로그램은 요청된 서브 로직 코드(및 버전(요청에 포함되어 있는 경우에 한 함))를 리트리빙하고(604), 서브 로직 코드를 실행하여 결과를 제공한다(606). 엔클레이브 프로그램은 서브 로직 코드의 개인 코드키를 사용하여 결과 및 디지털 시그너처를 포함하는 응답을 제공한다(608). 엔클레이브 프로그램은 응답을 클라이언트(308)에 전송한다(610). 클라이언트(308)는 응답을 수신하고, 서브 로직 코드의 공개 코드키를 사용하여 결과를 검증한다(612).
도 7a는 본 명세서의 구현예들에 따라 실행될 수 있는 프로세스(700)의 예시를 도시한다. 일부 구현예들에서, 예시적인 프로세스(700)는 하나 이상의 컴퓨팅 디바이스를 사용하여 실행되는 하나 이상의 컴퓨터 실행가능 프로그램을 사용하여 수행될 수 있다. 일부 예시들에서, 예시적인 프로세스(700)는 TEE 내에서의 실행을 위한 서브 로직을 등록하기 위해 TEE를 실행하는 노드와 클라이언트에 의해 수행될 수 있다.
등록 요청이 전송된다(702). 예를 들어, 클라이언트(308)는 노드(310) 내에서 실행되는 엔클레이브 프로그램에 등록 요청을 전송한다. 일부 예시들에서, 등록될 각각의 서브 로직 코드에 대해, 등록 요청은 서브 로직 코드를 고유하게 식별하는 식별자, 및 서브 로직 코드 자체(예컨대, 컴퓨터 실행가능 명령어들)를 포함한다. 등록 요청이 수신된다(704). 예를 들어, 등록 요청은 노드(310) 내의 엔클레이브 프로그램에 의해 수신된다. 일부 예시들에서, 엔클레이브 프로그램은 식별자 및 서브 로직 코드를 결정하기 위해 요청을 파싱한다.
코드키 쌍이 제공된다(706). 예를 들어, 엔클레이브 프로그램은 서브 로직 코드를 저장하고, 저장된 서브 로직 코드와 관련된 인덱스를 각각의 식별자에 제공한다. 엔클레이브 프로그램은 저장된 서브 로직 코드에 대한 개인 코드키 및 공개 코드키를 포함하는 코드키 쌍을 생성한다. 디지털 시그너처가 생성된다(708). 예를 들어, 엔클레이브 프로그램은 증명 프로세스에서 생성되었던, 엔클레이브 프로그램의 개인키를 사용하여 디지털 시그너처를 생성한다. 본 명세서에서 설명된 바와 같이, 디지털 시그너처는 서브 로직 코드의 공개 코드키, 및 엔클레이브 프로그램의 개인키에 기초하여 제공된다.
등록 결과가 전송된다(710). 예를 들어, 엔클레이브 프로그램은 등록 결과를 클라이언트(308)에 전송한다. 일부 예시들에서, 등록 결과는 서브 로직 코드의 공개 코드키, 및 디지털 시그너처를 포함한다. 등록 결과가 수신된다(712). 예를 들어, 클라이언트(308)는 등록 결과를 수신한다. 등록 결과가 검증되었는지 여부가 결정된다(714). 예를 들어, 클라이언트(308)는 본 명세서에서 설명된 바와 같이, 엔클레이브 프로그램의 공개키를 사용하여 해시값 비교를 수행한다. 등록 결과가 검증되지 않은 경우, 오류가 표시된다(716). 등록 결과가 검증된 경우, 공개 코드키가 저장된다(718). 예를 들어, 클라이언트(308)는 서브 로직 코드의 공개 코드키를 저장하고, 서브 로직 코드의 식별자로 공개 코드키를 인덱싱한다.
도 7b는 본 명세서의 구현예들에 따라 실행될 수 있는 프로세스(750)의 예시를 도시한다. 일부 구현예들에서, 예시적인 프로세스(750)는 하나 이상의 컴퓨팅 디바이스를 사용하여 실행되는 하나 이상의 컴퓨터 실행가능 프로그램을 사용하여 수행될 수 있다. 일부 예시들에서, 예시적인 프로세스(750)는 TEE 내에서 서브 로직을 실행하기 위해 TEE를 실행하는 노드와 클라이언트에 의해 수행될 수 있고, 서브 로직 실행을 위한 프로그램 실행 및 데이터 증명을 제공한다.
요청이 전송된다(752). 예를 들어, 클라이언트(308)는 특정 서브 로직 코드를 호출하여 결과를 제공해달라는 요청을 노드(310) 내에서 실행되는 엔클레이브 프로그램에 전송한다. 일부 구현예들에서, 요청은 실행될 서브 로직 코드의 식별자, 및 하나 이상의 요청 파라미터를 포함한다. 요청이 수신된다(754). 예를 들어, 요청은 노드(310) 내의 엔클레이브 프로그램에 의해 수신된다. 요청이 파싱된다(756). 예를 들어, 엔클레이브 프로그램은 식별자 및 하나 이상의 요청 파라미터를 결정하기 위해 요청을 파싱한다.
서브 로직 코드가 리트리빙되고 실행된다(758). 예를 들어, 엔클레이브 프로그램은 컴퓨터 판독가능 메모리로부터의 식별자에 기초하여 요청된 서브 로직 코드(및 버전(요청에 포함되어 있는 경우에 한 함))를 리트리빙한다. 엔클레이브 프로그램은 서브 로직 코드를 실행하여 하나 이상의 요청 파라미터를 처리함으로써 결과 데이터를 제공한다. 응답이 준비되어 전송된다(760). 예를 들어, 엔클레이브 프로그램은 서브 로직 코드의 개인 코드키를 사용하여 결과 및 디지털 시그너처를 포함하는 응답을 제공한다. 엔클레이브 프로그램은 응답을 클라이언트(308)에 전송한다.
응답이 수신된다(762). 예를 들어, 클라이언트(308)는 응답을 수신한다. 응답이 검증되었는지 여부가 결정된다(764). 예를 들어, 클라이언트(308)는 본 명세서에서 설명된 바와 같이, 서브 로직 코드의 공개 코드키를 사용하여 해시값 비교를 수행한다. 응답이 검증되지 않은 경우, 오류가 표시되고(766), 결과 데이터는 클라이언트(308)에 의해 사용되지 않는다. 응답이 검증된 경우, 결과 데이터가 사용된다(768). 예를 들어, 클라이언트(308)는 추가적인 처리를 위해 결과 데이터를 사용한다.
도 8은 본 명세서의 구현예들에 따른 장치(800)의 모듈들의 예시들을 도시한다. 장치(800)는 TEE 내에서 실행될 서브 로직 코드를 호출하고, TEE 내에서 서브 로직 코드를 등록하기 위한, 도 3의 클라이언트(308)와 같은, 클라이언트의 예시적인 구현예일 수 있다. 장치(800)는 전술한 구현예들에 대응할 수 있고, 장치(800)는 다음을 포함한다:
송신 모듈(802)이 요청을 노드에 송신한다. 예를 들어, 본 명세서에서 설명된 바와 같이, 노드는 TEE 내에서 신뢰 프로그램을 실행한다. 일부 예시들에서, 요청은 식별자와 하나 이상의 요청 파라미터를 포함하며, 식별자는 서브 로직 코드를 식별한다. 수신 모듈(804)은 요청에 대한 응답을 수신한다. 예를 들어, 본 명세서에서 설명된 바와 같이, 응답은 결과 데이터 및 디지털 시그너처를 포함하며, 결과 데이터는 TEE 내에서 서브 로직 코드를 사용하여 하나 이상의 요청 파라미터를 처리함으로써 생성된 것이다. 디지털 시그너처는 서브 로직 코드의 개인 코드키를 사용하여 생성된 것이다. 검증 모듈(806)은 디지털 시그너처 및 서브 로직 코드의 공개 코드키를 사용하여 결과 데이터를 검증한다. 송신 모듈(808)은 TEE 내에서 신뢰 프로그램에 서브 로직 코드를 등록하기 위한 등록 요청을 송신한다. 일부 예시들에서, 등록 요청은 식별자 및 서브 로직 코드를 포함한다. 수신 모듈(810)은 신뢰 프로그램으로부터 등록 결과를 수신한다. 일부 예시들에서, 등록 결과는 서브 로직 코드의 공개 코드키를 포함한다.
일반적으로, 본 명세서에서 설명된 발명내용의 혁신적인 양태들은, 클라이언트 디바이스에 의해, 요청을 노드에 송신하는 동작 - 상기 노드는 TEE 내에서 신뢰 프로그램을 실행하고, 상기 요청은 식별자 및 하나 이상의 요청 파라미터를 포함하며, 상기 식별자는 상기 서브 로직 코드를 식별함 -, 클라이언트 디바이스에 의해, 상기 요청에 대한 응답을 수신하는 동작 - 상기 응답은 결과 데이터 및 디지털 시그너처를 포함하고, 상기 결과 데이터는 TEE 내에서의 상기 서브 로직 코드를 사용한 상기 하나 이상의 요청 파라미터의 처리에 의해 생성되며, 상기 디지털 시그너처는 서브 로직 코드의 개인 코드키를 사용하여 생성됨 -, 및 상기 클라이언트 디바이스에 의해, 상기 디지털 시그너처 및 상기 서브 로직 코드의 공개 코드키를 사용하여 상기 결과 데이터를 검증하는 동작으로 구체화될 수 있다. 이 양태의 다른 구현예들은 본 방법들의 동작들을 수행하도록 각각 구성된, 대응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 디바이스 상에 기록된 컴퓨터 프로그램을 포함한다.
전술한 구현예들 및 다른 구현예들은 각각 다음의 특징들 중 하나 이상을 단독으로 또는 조합 형태로, 선택적으로 포함할 수 있으며, 동작들은, 클라이언트 디바이스에 의해, TEE 내에서 신뢰 프로그램에 서브 로직 코드를 등록하기 위한 등록 요청을 송신하는 동작 - 상기 등록 요청은 상기 식별자 및 상기 서브 로직 코드를 포함함 -, 및 클라이언트 디바이스에 의해, 신뢰 프로그램으로부터 등록 결과를 수신하는 동작 - 상기 등록 결과는 상기 서브 로직 코드의 공개 코드키를 포함함 -을 더 포함하며, 동작들은, 상기 신뢰 프로그램의 디지털 시그너처 및 상기 신뢰 프로그램의 공개키를 사용하여 상기 등록 결과를 검증하는 동작을 더 포함하고, 상기 신뢰 프로그램의 디지털 시그너처는 상기 신뢰 프로그램의 개인키를 사용하여 생성되며, 상기 신뢰 프로그램의 공개키와 개인키는 신뢰 애플리케이션의 증명 동안 키 쌍으로서 생성되고; 서브 로직 코드는, 식별자에 기초하여 컴퓨터 판독가능 메모리로부터 리트리빙되고, 결과를 생성하기 위해 TEE 내에서 실행되고; 서브 로직 코드는 노드에 저장된 복수의 서브 로직 코드들 중 하나이고; 공개 코드키와 개인 코드키는 TEE 내에서의 서브 로직 코드의 등록 동안 코드키 쌍으로서 생성되고; 요청은 결과를 제공하기 위해 실행될 서브 로직 코드의 버전을 표시하는 버전 번호를 더 포함하며; 클라이언트 디바이스는 블록체인 네트워크 내의 노드를 포함한다.
본 명세서에서 설명된 바와 같이, 본 명세서의 구현예들은 종래의 시스템들에 비해 하나 이상의 기술적 효과를 달성한다. 일부 구현예들에서, 실행될 서브 로직 코드 자체 대신에, 서브 로직 코드의 식별자만이 클라이언트로부터의 요청 내에서 전송된다. 이는 요청의 크기를 상당히 감소시켜서, 컴퓨팅 리소스(예컨대, 프로세서, 메모리, 네트워크 대역폭)를 절약하고, 네트워크 병목현상을 완화시킨다. 일부 구현예들에서, 요청을 수신한 것에 응답하여, 엔클레이브 프로그램은 요청에서 운송된 서브 로직 코드를 파싱하고 로딩할 필요가 없어서, 증가된 처리를 피한다. 일부 구현예들에서, 각각의 요청이 처리된 후, 엔클레이브 프로그램은 전체 서브 로직 코드가 아닌, 결과에만 서명하고, 클라이언트는 서명된 결과만을 체크한다. 이 두 가지 활동들 모두는 종래의 접근법에 비해 처리량이 감소된다. 일부 구현예들에서, 서브 로직 코드 사용의 확장성이 개선되고, 서브 로직 코드의 변형(예를 들어, 버전들)이 지원된다.
본 명세서에서 설명된 발명내용 및 액션들 및 동작들의 구현들은 본 명세서에서 개시된 구조들 및 이들의 구조적 등가물을 비롯하여, 디지털 전자 회로부, 유형적 실체화된 컴퓨터 소프트웨어 또는 펌웨어로, 컴퓨터 하드웨어로, 또는 이들의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에서 설명된 발명내용의 구현예들은 데이터 처리 장치에 의한 실행을 위하거나 또는 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어 상에 인코딩된, 하나 이상의 컴퓨터 프로그램, 예컨대, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 캐리어는 유형의 비일시적 컴퓨터 저장 매체일 수 있다. 대안적으로 또는 추가적으로, 캐리어는 인위적으로 생성된 전파 신호, 예를 들어, 데이터 처리 장치에 의한 실행에 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하도록 생성된 머신 생성 전기, 광학, 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독가능 저장 디바이스, 머신 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나의 이상의 조합일 수 있거나 또는 그 일부일 수 있다. 컴퓨터 저장 매체는 전파 신호는 아니다.
용어 "데이터 처리 장치"는 예를 들어, 프로그래밍가능 프로세서, 컴퓨터, 또는 복수의 프로세서들 또는 컴퓨터들을 비롯하여, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스, 및 머신을 망라한다. 데이터 처리 장치는 특수 목적 논리 회로부, 예컨대, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 또는 GPU(graphics processing unit)를 포함할 수 있다. 본 장치는 또한, 하드웨어에 더하여, 컴퓨터 프로그램들을 위한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
컴퓨터 프로그램(이는 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드라고도 칭해질 수 있거나 또는 이들로서 설명될 수 있음)은 컴파일링된 언어 또는 해석된 언어, 또는 선언형 또는 절차적 언어를 비롯한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램으로서 또는 컴퓨팅 환경에서의 실행에 적절한 모듈, 컴포넌트, 엔진, 서브루틴, 또는 다른 유닛으로서를 비롯하여, 임의의 형태로 배치될 수 있으며, 이 환경은 하나 이상의 위치에서 데이터 통신 네트워크에 의해 상호연결된 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템 내의 파일에 반드시 대응할 필요는 없을 수 있다. 프로그램은 다른 프로그램 또는 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트를 보유하는 파일의 일부에 , 해당 프로그램에 전용되는 단일의 파일에, 또는 다중 코디네이션된 파일에, 예를 들어, 하나 이상의 모듈, 서브프로그램, 또는 코드 부분을 저장하는 파일에 저장될 수 있다.
본 명세서에서 설명된 프로세스 및 논리 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 동작들을 수행하도록 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 특수 목적 논리 회로부, 예를 들어, FPGA, ASIC, 또는 GPU에 의해, 또는 특수 목적 논리 회로부와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적절한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서, 이 둘 다, 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 이 둘 다로부터 데이터 및 명령어를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령어들을 실행하기 위한 중앙 처리 장치, 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 처리 장치 및 메모리는 특수 목적 논리 회로부에 의해 추가되거나 또는 특수 목적 논리 회로부 내에 통합될 수 있다.
일반적으로, 컴퓨터는 또한, 하나 이상의 대용량 저장 디바이스들로부터 데이터를 수신하거나 또는 이들에 데이터를 전송하도록 동작가능하게 결합되거나 또는 이러한 하나 이상의 대용량 저장 디바이스들을 포함할 것이다. 대용량 저장 디바이스들은 예를 들어, 자기, 광자기, 또는 광 디스크, 또는 솔리드 스테이트 드라이브일 수 있다. 그러나, 컴퓨터는 이러한 디바이스를 가질 필요는 없다. 또한, 컴퓨터는 다른 디바이스, 단지 몇 개만을 예를 들면, 모바일 폰, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 휴대용 저장 디바이스, 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 임베딩될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명된 발명내용의 구현예들은 정보를 사용자에게 디스플레이 하기 위한 디스플레이 디바이스, 예컨대, LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있는 입력 디바이스, 예컨대 키보드 및 포인팅 디바이스, 예컨대, 마우스, 트랙볼 또는 터치패드를 갖는 컴퓨터 상에 구현될 수 있거나, 또는 이와 통신하도록 구성될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스들이 또한 이용할 수 있는데, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백, 예를 들어, 시각 피드백, 청각 피드백 또는 촉각 피드백일 수 있고, 사용자로부터의 입력은 음향, 스피치 또는 촉각적 입력을 비롯한 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는, 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 디바이스 상의 웹 브라우저에 웹 페이지를 전송함으로써 사용자에 의해 사용된 디바이스로부터 문서를 수신하고 디바이스에 문서를 전송함으로써, 또는 사용자 디바이스, 예컨대, 스마트폰 또는 전자 태블릿 상에서 구동되는 앱과 상호작용함으로써, 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인 디바이스, 예를 들어, 메시징 애플리케이션을 실행 중인 스마트폰에 송신하고, 그 답례로 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서는 시스템, 장치, 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "구성되도록"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성되었다는 것은 동작시 시스템으로 하여금 그 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 시스템이 설치하였다는 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 동작들 또는 액션들을 수행하도록 구성되었다는 것은 하나 이상의 프로그램이, 데이터 처리 장치에 의해 실행될 때, 장치로 하여금 그 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수 목적 논리 회로부가 특정 동작들 또는 액션들을 수행하도록 구성되었다는 것은 그 회로부가 동작들 또는 액션들을 수행하는 전자 로직을 갖는다는 것을 의미한다.
본 명세서는 많은 특정 구현예 상세사항을 포함하고 있지만, 이것들은 청구항들 자체에 의해 정의되는, 청구 내용의 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정 구현예들에 특유적일 수 있는 특징들의 설명으로서 해석되어야 한다. 개별적인 구현예들의 환경에서 본 명세서에서 설명된 특정 특징들은 또한, 단일의 구현예와 결합하여 실현될 수도 있다. 반대로, 단일의 구현예의 환경에서 설명된 다양한 특징들은 또한, 다중 구현예들에서 개별적으로 또는 임의의 적절한 서브조합으로 실현될 수 있다. 뿐만 아니라, 특징들이 특정 조합으로 작용하는 것으로서 위에서 설명될 수 있고 심지어 이와 같이 초기에 청구되어 있지만, 청구된 조합으로부터 하나 이상의 특징이 일부 경우들에서 이러한 조합으로부터 실행될 수 있고, 청구항은 부분조합으로 또는 부분조합의 변경예에 관련된 것일 수 있다.
마찬가지로, 동작들이 특정한 순서로 도면들에서 도시되고 청구항들에서 나열되고 있지만, 원하는 결과를 달성하기 위해, 이러한 동작들이 도시된 특정 순서로 수행되거나 또는 순차적인 순서로 수행되어야 한다는 것과 도시된 모든 동작들이 수행되어야 한다는 것을 요구하는 것으로서 이러한 것을 이해해서는 안된다. 어떠한 환경들에서는, 멀티태스킹 및 병렬적 처리가 이로울 수 있다. 또한, 상술한 구현예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 이러한 분리가 모든 구현예들에서 필요로 하는 것으로서 이해되어서는 안되고, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로 단일 소프트웨어 제품에서 함께 통합되거나 또는 복수의 소프트웨어 제품들로 패키징될 수 있다는 것을 이해해야 한다.
본 발명내용의 특정 구현예가 설명되었다. 다른 구현예들도 다음의 청구범위의 범위 내에 있다. 예를 들어, 청구범위 내에 언급된 동작들은 서로 다른 순서로 수행될 수 있고 그럼에도 원하는 결과를 실현할 수 있다. 일례로서, 첨부 도면들에 도시된 프로세스들은 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 필요한 것은 아니다. 일부 경우들에서는, 멀티태스킹 및 병렬적 처리가 이로울 수 있다.

Claims (19)

  1. 컴퓨터 구현 방법에 있어서,
    클라이언트 디바이스에 의해, 신뢰 실행 환경(trusted execution environment; TEE) 내의 신뢰 프로그램에 서브 로직 코드(sub-logic code)를 등록하기 위해, 상기 TEE 내에서 상기 신뢰 프로그램을 실행하는 노드에 등록 요청을 송신하는 단계 - 상기 등록 요청은 상기 서브 로직 코드 및 상기 서브 로직 코드를 식별하는 식별자를 포함하고, 상기 서브 로직 코드는 상기 신뢰 프로그램에 의한 실행을 위한 컴퓨터 실행가능 코드를 포함하고, 상기 서브 로직 코드는 상기 노드에 저장된 복수의 서브 로직 코드들 중 하나이고, 상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드는 개인 코드키와 공개 코드키를 포함하는 각각의 코드키 쌍과 연관됨 -;
    상기 클라이언트 디바이스에 의해, 상기 신뢰 프로그램으로부터 등록 결과를 수신하는 단계 - 상기 등록 결과는 상기 서브 로직 코드와 연관되는 제1 공개 코드키를 포함함 -;
    상기 클라이언트 디바이스에 의해, 상기 노드에 추가 요청을 송신하는 단계 - 상기 추가 요청은 상기 식별자 및 하나 이상의 요청 파라미터를 포함함 -;
    상기 클라이언트 디바이스에 의해, 상기 추가 요청에 대한 응답(response)을 수신하는 단계 - 상기 응답은 결과 데이터 및 제1 디지털 시그너처(digital signature)를 포함하고, 상기 결과 데이터는 상기 TEE 내에서의 상기 서브 로직 코드를 사용한 상기 하나 이상의 요청 파라미터의 처리에 의해 생성되며, 상기 제1 디지털 시그너처는 상기 서브 로직 코드의 제1 개인 코드키를 사용하여 생성됨 -; 및
    상기 클라이언트 디바이스에 의해, 상기 제1 디지털 시그너처, 및 상기 제1 개인 코드키와 쌍을 이루는 상기 서브 로직 코드의 제1 공개 코드키를 사용하여 상기 결과 데이터를 검증(verify)하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 신뢰 프로그램의 제2 디지털 시그너처 및 상기 신뢰 프로그램의 공개키를 사용하여 상기 등록 결과를 검증하는 단계
    를 더 포함하고,
    상기 신뢰 프로그램의 제2 디지털 시그너처는 상기 신뢰 프로그램의 개인키를 사용하여 생성되며,
    상기 신뢰 프로그램의 상기 공개키와 상기 개인키는 상기 신뢰 프로그램의 증명(attestation) 동안 키 쌍으로서 생성되는 것인 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 서브 로직 코드는, 상기 식별자에 기초하여 컴퓨터 판독가능 메모리로부터 리트리빙(retrieve)되고, 상기 결과 데이터를 생성하기 위해 상기 TEE 내에서 실행되는 것인 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드의 상기 각각의 코드키 쌍은 상기 TEE 내에서 상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드의 각각의 등록 동안 상기 신뢰 프로그램에 의해 생성되는 것인 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 추가 요청은 상기 결과 데이터를 제공하기 위해 실행될 상기 서브 로직 코드의 버전을 표시하는 버전 번호를 더 포함한 것인 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 클라이언트 디바이스는 블록체인 네트워크 내의 클라이언트 노드를 포함한 것인 컴퓨터 구현 방법.
  8. 동작들을 수행하도록 컴퓨터 시스템에 의해 실행가능한 하나 이상의 명령어를 저장한 컴퓨터 판독가능 비일시적 저장 매체에 있어서, 상기 동작들은,
    신뢰 실행 환경(TEE) 내의 신뢰 프로그램에 서브 로직 코드를 등록하기 위해, 상기 TEE 내에서 상기 신뢰 프로그램을 실행하는 노드에 등록 요청을 송신하는 동작 - 상기 등록 요청은 상기 서브 로직 코드 및 상기 서브 로직 코드를 식별하는 식별자를 포함하고, 상기 서브 로직 코드는 상기 신뢰 프로그램에 의한 실행을 위한 컴퓨터 실행가능 코드를 포함하고, 상기 서브 로직 코드는 상기 노드에 저장된 복수의 서브 로직 코드들 중 하나이고, 상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드는 개인 코드키와 공개 코드키를 포함하는 각각의 코드키 쌍과 연관됨 -;
    상기 신뢰 프로그램으로부터 등록 결과를 수신하는 동작 - 상기 등록 결과는 상기 서브 로직 코드와 연관되는 제1 공개 코드키를 포함함 -;
    상기 노드에 추가 요청을 송신하는 동작 - 상기 추가 요청은 상기 식별자 및 하나 이상의 요청 파라미터를 포함함 -;
    상기 추가 요청에 대한 응답을 수신하는 동작 - 상기 응답은 결과 데이터 및 제1 디지털 시그너처를 포함하고, 상기 결과 데이터는 상기 TEE 내에서의 상기 서브 로직 코드를 사용한 상기 하나 이상의 요청 파라미터의 처리에 의해 생성되며, 상기 제1 디지털 시그너처는 상기 서브 로직 코드의 제1 개인 코드키를 사용하여 생성됨 -; 및
    상기 제1 디지털 시그너처, 및 상기 제1 개인 코드키와 쌍을 이루는 상기 서브 로직 코드의 제1 공개 코드키를 사용하여 상기 결과 데이터를 검증하는 동작
    을 포함한 것인 컴퓨터 판독가능 비일시적 저장 매체.
  9. 삭제
  10. 제8항에 있어서,
    상기 동작들은,
    상기 신뢰 프로그램의 제2 디지털 시그너처 및 상기 신뢰 프로그램의 공개키를 사용하여 상기 등록 결과를 검증하는 동작
    을 더 포함하고,
    상기 신뢰 프로그램의 제2 디지털 시그너처는 상기 신뢰 프로그램의 개인키를 사용하여 생성되며,
    상기 신뢰 프로그램의 상기 공개키와 상기 개인키는 상기 신뢰 프로그램의 증명 동안 키 쌍으로서 생성되는 것인 컴퓨터 판독가능 비일시적 저장 매체.
  11. 제8항에 있어서,
    상기 서브 로직 코드는, 상기 식별자에 기초하여 컴퓨터 판독가능 메모리로부터 리트리빙되고, 상기 결과 데이터를 생성하기 위해 상기 TEE 내에서 실행되는 것인 컴퓨터 판독가능 비일시적 저장 매체.
  12. 제8항에 있어서,
    상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드의 상기 각각의 코드키 쌍은 상기 TEE 내에서 상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드의 각각의 등록 동안 상기 신뢰 프로그램에 의해 생성되는 것인 컴퓨터 판독가능 비일시적 저장 매체.
  13. 제8항에 있어서,
    상기 추가 요청은 상기 결과 데이터를 제공하기 위해 실행될 상기 서브 로직 코드의 버전을 표시하는 버전 번호를 더 포함한 것인 컴퓨터 판독가능 비일시적 저장 매체.
  14. 제8항에 있어서,
    상기 동작들은 블록체인 네트워크 내의 클라이언트 노드에 의해 수행되는 것인 컴퓨터 판독가능 비일시적 저장 매체.
  15. 컴퓨터 구현 시스템에 있어서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터와 상호동작가능하게 결합되고, 하나 이상의 명령어를 저장하는 유형적인(tangible) 머신 판독가능 비일시적 매체를 갖는 하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고, 상기 하나 이상의 명령어는, 상기 하나 이상의 컴퓨터에 의해 실행될 때, 하나 이상의 동작을 수행하고,
    상기 하나 이상의 동작은,
    신뢰 실행 환경(TEE) 내의 신뢰 프로그램에 서브 로직 코드를 등록하기 위해, 상기 TEE 내에서 상기 신뢰 프로그램을 실행하는 노드에 등록 요청을 송신하는 동작 - 상기 등록 요청은 상기 서브 로직 코드 및 상기 서브 로직 코드를 식별하는 식별자를 포함하고, 상기 서브 로직 코드는 상기 신뢰 프로그램에 의한 실행을 위한 컴퓨터 실행가능 코드를 포함하고, 상기 서브 로직 코드는 상기 노드에 저장된 복수의 서브 로직 코드들 중 하나이고, 상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드는 개인 코드키와 공개 코드키를 포함하는 각각의 코드키 쌍과 연관됨 -;
    상기 신뢰 프로그램으로부터 등록 결과를 수신하는 동작 - 상기 등록 결과는 상기 서브 로직 코드와 연관되는 제1 공개 코드키를 포함함 -;
    상기 노드에 추가 요청을 송신하는 동작 - 상기 추가 요청은 상기 식별자 및 하나 이상의 요청 파라미터를 포함함 -;
    상기 추가 요청에 대한 응답을 수신하는 동작 - 상기 응답은 결과 데이터 및 제1 디지털 시그너처를 포함하고, 상기 결과 데이터는 상기 TEE 내에서의 상기 서브 로직 코드를 사용한 상기 하나 이상의 요청 파라미터의 처리에 의해 생성되며, 상기 제1 디지털 시그너처는 상기 서브 로직 코드의 제1 개인 코드키를 사용하여 생성됨 -; 및
    상기 제1 디지털 시그너처, 및 상기 제1 개인 코드키와 쌍을 이루는 상기 서브 로직 코드의 제1 공개 코드키를 사용하여 상기 결과 데이터를 검증하는 동작
    을 포함한 것인 컴퓨터 구현 시스템.
  16. 삭제
  17. 제15항에 있어서,
    상기 하나 이상의 동작은,
    상기 신뢰 프로그램의 제2 디지털 시그너처 및 상기 신뢰 프로그램의 공개키를 사용하여 상기 등록 결과를 검증하는 동작
    을 더 포함하고,
    상기 신뢰 프로그램의 제2 디지털 시그너처는 상기 신뢰 프로그램의 개인키를 사용하여 생성되며,
    상기 신뢰 프로그램의 상기 공개키와 상기 개인키는 상기 신뢰 프로그램의 증명 동안 키 쌍으로서 생성되는 것인 컴퓨터 구현 시스템.
  18. 제15항에 있어서,
    상기 서브 로직 코드는, 상기 식별자에 기초하여 컴퓨터 판독가능 메모리로부터 리트리빙되고, 상기 결과 데이터를 생성하기 위해 상기 TEE 내에서 실행되는 것인 컴퓨터 구현 시스템.
  19. 제15항에 있어서,
    상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드의 상기 각각의 코드키 쌍은 상기 TEE 내에서 상기 복수의 서브 로직 코드들의 각각의 서브 로직 코드의 각각의 등록 동안 상기 신뢰 프로그램에 의해 생성되는 것인 컴퓨터 구현 시스템.
KR1020197028585A 2019-03-26 2019-03-26 다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계 KR102392420B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/079715 WO2019120317A2 (en) 2019-03-26 2019-03-26 Program execution and data proof scheme using multiple key pair signatures

Publications (2)

Publication Number Publication Date
KR20200116012A KR20200116012A (ko) 2020-10-08
KR102392420B1 true KR102392420B1 (ko) 2022-05-02

Family

ID=66994285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197028585A KR102392420B1 (ko) 2019-03-26 2019-03-26 다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계

Country Status (10)

Country Link
US (2) US10762197B1 (ko)
EP (1) EP3610405B1 (ko)
JP (1) JP2020522034A (ko)
KR (1) KR102392420B1 (ko)
CN (1) CN110998581A (ko)
AU (1) AU2019204707B2 (ko)
CA (1) CA3058499C (ko)
SG (1) SG11201908946PA (ko)
TW (1) TWI725655B (ko)
WO (1) WO2019120317A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019120317A2 (en) 2019-03-26 2019-06-27 Alibaba Group Holding Limited Program execution and data proof scheme using multiple key pair signatures
US11537523B2 (en) * 2019-07-31 2022-12-27 Red Hat, Inc. Command result caching for building application container images
WO2021031084A1 (en) * 2019-08-19 2021-02-25 Nokia Technologies Oy Verifiability for execution in trusted execution environment
CN110633328B (zh) * 2019-09-25 2024-03-22 腾讯云计算(北京)有限责任公司 一种信息处理方法、装置及计算机可读存储介质
JP2022552419A (ja) * 2019-10-18 2022-12-15 ティービーシーエーソフト,インコーポレイテッド 資格証明書検証用検証要件文書
US11849030B2 (en) * 2019-10-23 2023-12-19 “Enkri Holding”, Limited Liability Company Method and system for anonymous identification of a user
CN111090865B (zh) * 2019-12-17 2022-01-25 支付宝(杭州)信息技术有限公司 一种密钥授权方法和系统
CN110890962B (zh) * 2019-12-20 2021-04-13 支付宝(杭州)信息技术有限公司 认证密钥协商方法、装置、存储介质及设备
US20210200858A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Executing code in protected memory containers by trust domains
US11244077B2 (en) * 2020-01-31 2022-02-08 Fortanix, Inc. Securing data integrity for an application
JP6830635B1 (ja) * 2020-02-21 2021-02-17 株式会社LayerX データ管理方法
JP2023514736A (ja) * 2020-02-21 2023-04-07 エスディーエスイー ネットワークス インコーポレイテッド 安全な通信のための方法及びシステム
US11121864B1 (en) * 2020-03-13 2021-09-14 International Business Machines Corporation Secure private key distribution between endpoint instances
US11087016B1 (en) 2020-08-20 2021-08-10 Spideroak, Inc. Implementation of a file system on a block chain
CN112422500B (zh) * 2020-09-25 2023-05-16 北京熠智科技有限公司 跨平台数据传输方法以及装置、存储介质、电子装置
US11475140B1 (en) 2020-11-24 2022-10-18 Amazon Technologies, Inc. Enclave-based cryptography services in edge computing environments
CN112700852A (zh) * 2021-01-07 2021-04-23 福州数据技术研究院有限公司 一种基于区块链智能合约的医疗数据资产发布管理的方法和存储设备
US20220245238A1 (en) * 2021-01-29 2022-08-04 Securosys SA Trusted Execution Environment to Provide Attestation of Code Execution Result
KR102561252B1 (ko) * 2021-03-18 2023-07-28 인하대학교 산학협력단 자동품질확인이 가능한 블록체인기반 크라우드 소싱방법
CN113221166A (zh) * 2021-05-11 2021-08-06 支付宝(杭州)信息技术有限公司 一种获取区块链数据的方法、装置、电子设备及存储介质
CN112989319B (zh) * 2021-05-12 2021-08-31 支付宝(杭州)信息技术有限公司 一种实现可信计算的方法、装置、电子设备及存储介质
CN112948810B (zh) * 2021-05-12 2021-08-31 支付宝(杭州)信息技术有限公司 一种可信计算程序调用方法、装置、电子设备及存储介质
US11829495B2 (en) 2021-08-05 2023-11-28 International Business Machines Corporation Confidential data provided to a secure guest via metadata
US11809607B2 (en) 2021-08-05 2023-11-07 International Business Machines Corporation Customization of multi-part metadata of a secure guest
US20230068880A1 (en) * 2021-08-27 2023-03-02 EMC IP Holding Company LLC Function-based service framework with trusted execution platform
EP4145762B1 (en) * 2021-09-06 2023-10-25 Axis AB Method and system for enabling secure processing of data using a processing application
WO2023113573A1 (ko) * 2021-12-17 2023-06-22 주식회사 크립토랩 전자 장치 및 암호화 방법
WO2023186328A1 (en) * 2022-04-01 2023-10-05 Huawei Technologies Co., Ltd. Method and apparatus for providing an application-level attestation for trusted applications
CN116112187B (zh) * 2023-04-10 2023-07-14 山东海量信息技术研究院 一种远程证明方法、装置、设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160254904A1 (en) * 2015-02-27 2016-09-01 Verizon Patent And Licensing Inc. Network services via trusted execution environment
WO2018189658A1 (en) * 2017-04-11 2018-10-18 nChain Holdings Limited Secure transfer between blockchains

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9064109B2 (en) * 2012-12-20 2015-06-23 Intel Corporation Privacy enhanced key management for a web service provider using a converged security engine
US9698989B2 (en) * 2013-07-23 2017-07-04 Intel Corporation Feature licensing in a secure processing environment
US9444627B2 (en) * 2014-12-24 2016-09-13 Intel Corporation System and method for providing global platform compliant trusted execution environment
RU2673842C1 (ru) * 2015-03-20 2018-11-30 Ривец Корп. Автоматическая аттестация сохранности устройства с применением цепочки блоков
CN104899506B (zh) 2015-05-08 2018-01-12 深圳市雪球科技有限公司 基于可信执行环境中虚拟安全元件的安全系统实现方法
US9787478B2 (en) * 2015-06-10 2017-10-10 Qualcomm Incorporated Service provider certificate management
US10230529B2 (en) * 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
CN106899551B (zh) * 2015-12-21 2020-04-17 中国电信股份有限公司 认证方法、认证终端以及系统
US10419402B2 (en) * 2017-01-26 2019-09-17 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using signing key
WO2018152519A1 (en) 2017-02-20 2018-08-23 AlphaPoint Performance of distributed system functions using a trusted execution environment
US20180254898A1 (en) * 2017-03-06 2018-09-06 Rivetz Corp. Device enrollment protocol
US10397005B2 (en) * 2017-03-31 2019-08-27 Intel Corporation Using a trusted execution environment as a trusted third party providing privacy for attestation
US10742393B2 (en) 2017-04-25 2020-08-11 Microsoft Technology Licensing, Llc Confidentiality in a consortium blockchain network
EP3644569B1 (en) 2017-07-13 2021-09-29 Huawei Technologies Co., Ltd. Method and terminal for controlling trusted application access
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
CN107464109B (zh) * 2017-07-28 2020-10-20 中国工商银行股份有限公司 可信移动支付装置、系统和方法
CN107689868B (zh) * 2017-09-12 2021-09-07 北京握奇智能科技有限公司 客户端应用与可信应用的通信方法、装置以及终端
US10887090B2 (en) * 2017-09-22 2021-01-05 Nec Corporation Scalable byzantine fault-tolerant protocol with partial tee support
CN108563953B (zh) * 2018-03-26 2021-12-21 南京微可信信息技术有限公司 一种安全可扩展的可信应用开发方法
WO2019120317A2 (en) 2019-03-26 2019-06-27 Alibaba Group Holding Limited Program execution and data proof scheme using multiple key pair signatures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160254904A1 (en) * 2015-02-27 2016-09-01 Verizon Patent And Licensing Inc. Network services via trusted execution environment
WO2018189658A1 (en) * 2017-04-11 2018-10-18 nChain Holdings Limited Secure transfer between blockchains

Also Published As

Publication number Publication date
AU2019204707B2 (en) 2020-10-01
TWI725655B (zh) 2021-04-21
CN110998581A (zh) 2020-04-10
US20200349252A1 (en) 2020-11-05
WO2019120317A3 (en) 2020-02-20
US10762197B1 (en) 2020-09-01
CA3058499C (en) 2021-10-26
US10977362B2 (en) 2021-04-13
TW202036345A (zh) 2020-10-01
SG11201908946PA (en) 2019-10-30
AU2019204707A1 (en) 2019-06-27
KR20200116012A (ko) 2020-10-08
EP3610405A4 (en) 2020-07-08
JP2020522034A (ja) 2020-07-27
WO2019120317A2 (en) 2019-06-27
CA3058499A1 (en) 2019-06-27
EP3610405A2 (en) 2020-02-19
EP3610405B1 (en) 2021-07-21

Similar Documents

Publication Publication Date Title
KR102392420B1 (ko) 다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계
US11405372B2 (en) Retrieving access data for blockchain networks using highly available trusted execution environments
US11323271B2 (en) Retrieving public data for blockchain networks using highly available trusted execution environments
CN111066287B (zh) 使用可信执行环境检索区块链网络的公开数据
CN111095256A (zh) 在可信执行环境中安全地执行智能合约操作
AU2019204708A1 (en) Retrieving public data for blockchain networks using highly available trusted execution environments

Legal Events

Date Code Title Description
AMND Amendment
N231 Notification of change of applicant
A302 Request for accelerated examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant