[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102194077B1 - 신뢰 실행 환경을 위한 분산 키 관리 - Google Patents

신뢰 실행 환경을 위한 분산 키 관리 Download PDF

Info

Publication number
KR102194077B1
KR102194077B1 KR1020197032096A KR20197032096A KR102194077B1 KR 102194077 B1 KR102194077 B1 KR 102194077B1 KR 1020197032096 A KR1020197032096 A KR 1020197032096A KR 20197032096 A KR20197032096 A KR 20197032096A KR 102194077 B1 KR102194077 B1 KR 102194077B1
Authority
KR
South Korea
Prior art keywords
tee
tees
key
node
consensus
Prior art date
Application number
KR1020197032096A
Other languages
English (en)
Other versions
KR20200126320A (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 KR20200126320A publication Critical patent/KR20200126320A/ko
Application granted granted Critical
Publication of KR102194077B1 publication Critical patent/KR102194077B1/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/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/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/3271Cryptographic 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 challenge-response
    • H04L9/3273Cryptographic 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 challenge-response for mutual authentication
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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)
    • 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/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
    • 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/321Cryptographic 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 a third party or a trusted authority
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)

Abstract

신뢰 실행 환경(TEE)에서 스마트 계약 동작들을 안전하게 실행하기 위한, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템, 및 장치가 본원에서 개시된다. 방법 중의 하나는 KM 노드의 키 관리(KM) TEE에 의해, 복수의 KM TEE과의 상호 입증을 수행하는 것에 기초하여 복수의 KM 노드들에서의 복수의 KM TEE과의 신뢰 관계를 확립하는 것; 하나 이상의 암호화 키를 KM 노드의 서비스 TEE에 제공하는 것에 대한 컨센서스에 도달하기 위해 복수의 KM TEE과의 컨센서스 프로세스를 개시하는 것; 복수의 KM TEE과의 컨센서스에 도달하는 것에 응답하여, KM 노드에서의 서비스 TEE와의 로컬 입증 프로세스를 개시하는 것; 로컬 입증 프로세스가 성공적인 것으로 결정하는 것; 및 로컬 입증 프로세스가 성공적이라는 결정에 응답하여, 컴퓨팅 디바이스 상에서 실행되는 TEE에 하나 이상의 암호화 키를 제공하는 것을 포함한다.

Description

신뢰 실행 환경을 위한 분산 키 관리
본원은 신뢰 실행 환경(trusted execution environment)에 관한 것이다.
컨센서스 네트워크(consensus network)들 및/또는 블록체인 네트워크(blockchain network)들로서 또한 지칭될 수 있는 분산된 원장 시스템(distributed ledger system; DLS)들은 참여하는 엔티티(entity)들이 데이터를 안전하게 그리고 변경할 수 없게 저장하는 것을 가능하게 한다. DLS들은 임의의 특정한 이용 케이스(use case)를 참조하지 않으면서, 블록체인 네트워크들로서 통상적으로 지칭된다. 블록체인 네트워크의 유형의 예는 컨센서스 프로세스를 제어하는 엔티티들의 선택 그룹을 위하여 제공된 컨소시엄 블록체인 네트워크(consortium blockchain network)들을 포함할 수 있고, 액세스 제어 계층(access control layer)을 포함한다.
신뢰 실행 환경(trusted execution environment; TEE)은 마이크로프로세서 내에서 실행되거나 저장된 소프트웨어 명령어 및 데이터가 손상되거나 변경되지 않았다는 것을 보장하는 마이크로프로세서의 격리되고 안전한 영역이다. TEE 내부에서 실행된 애플리케이션들은 애플리케이션과 다른 노드들과 신뢰할 수 있는 애플리케이션들 사이의 통신을 허용하기 위한 검증 시에, 신뢰할 수 있는 기관(trusted authority)(예컨대, 마이크로프로세서의 제조) 및 발행된 암호화 키(encryption key)들에 의해 검증된다. 이 암호화 키들은 ("입증(attestation)"으로서 또한 지칭된) 신뢰할 수 있는 기관에 의한 애플리케이션의 검증을 용이하게 하는 중앙집중화된 키 관리 시스템(key management system; KMS)에 의해 발행될 수 있다.
중앙집중화된 KMS에서의 하나의 잠재적인 쟁점은 단일 포인트의 고장(failure)의 도입이다. 중앙집중화된 KMS에서의 사용불능(outage)은 TEE에서 실행되는 애플리케이션들이 고장이 해결될 때까지 검증되는 것을 방지할 수 있다. 또한, 공격자(attacker)는 중앙집중화된 KMS의 제어를 얻음으로써 시스템을 전체적으로 손상시킬 수 있을 수도 있다. 이에 따라 KMS로서 기능하는 안전한 분산 시스템이 바람직할 것이다.
본 명세서는 키 관리(key management; KM) 노드들의 세트를 포함하는 분산된 키 관리 시스템을 구현하기 위한 기술들을 설명한다. KM 노드들은 TEE 내에서 키 관리 애플리케이션들을 각각 실행하고, 세트에서의 모든 KM 노드들을 접속하는 신뢰 관계들을 확립하기 위한 상호 인증 로직(mutual attestation logic)에 기초하여 다른 KM 노드들 중의 하나 이상과의 상호 입증 프로세스를 각각 수행한다. 일단 이 신뢰가 확립되면, KM 노드들은 신뢰할 수 있는 환경에서 하나 이상의 스마트 계약(smart contract) 동작들을 안전하게 실행하기 위한 하나 이상의 서비스 TEE에 암호화 키를 배정하기 위하여 컨센서스(consensus)에 도달할 수 있다.
본 명세서는, 하나 이상의 프로세서에 결합되고, 그리고 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 본원에서 제공된 방법들의 실시형태들에 따라 동작들을 수행하게 하는 명령어를 저장한 하나 이상의 비-일시적 컴퓨터-판독가능 저장 매체를 또한 제공한다.
본 명세서는 본원에서 제공된 방법들을 구현하기 위한 시스템을 추가로 제공한다. 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 본원에서 제공된 방법들의 실시형태들에 따라 동작들을 수행하게 하는 명령어를 저장한, 하나 이상의 프로세서에 결합된 컴퓨터-판독가능 저장 매체를 포함한다.
본 명세서에 따른 방법들은 본원에서 설명된 양태들 및 특징들의 임의의 조합을 포함할 수도 있다는 것이 인식된다. 즉, 본 명세서에 따른 방법들은 본원에서 구체적으로 설명된 양태들 및 특징들의 조합들로 제한되는 것이 아니라, 제공된 양태들 및 특징들의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 실시형태의 세부사항들은 첨부 도면들 및 이하의 설명에서 기재된다. 본 명세서의 다른 특징들 및 장점들은 설명 및 도면들로부터, 그리고 청구항들로부터 분명할 것이다.
도 1은 본 명세서의 실시형태들을 실행하기 위하여 사용될 수 있는 환경의 예를 예시하는 도면이다.
도 2는 본 명세서의 실시형태들에 따른 아키텍처의 예를 예시하는 도면이다.
도 3은 본 명세서의 실시형태들에 따른 시스템의 예를 예시하는 도면이다.
도 4는 본 명세서의 실시형태들에 따른 시스템의 예를 예시하는 도면이다.
도 5는 본 명세서의 실시형태들에 따라 실행될 수 있는 프로세스의 예를 도시한다.
도 6은 본 명세서의 실시형태들에 따른 장치의 모듈들의 예들을 도시한다.
도 7은 본 명세서의 실시형태들에 따른 상호 입증 로직의 예를 예시하는 도면이다.
도 8은 본 명세서의 실시형태들에 따른 또 다른 상호 입증 로직의 예를 예시하는 도면이다.
다양한 도면들에서의 유사한 참조 번호들 및 명칭들은 유사한 엘리먼트들을 표시한다.
본 명세서는 키 관리(KM) 노드들의 세트를 포함하는 분산된 키 관리 시스템을 구현하기 위한 기술들을 설명한다. KM 노드들은 TEE 내에서 키 관리 애플리케이션들을 각각 실행하고, 세트에서의 모든 KM 노드들을 접속하는 신뢰 관계들을 확립하기 위한 상호 인증 로직에 기초하여 다른 KM 노드들 중의 하나 이상과의 상호 입증 프로세스를 각각 수행한다. 일단 이 신뢰가 확립되면, KM 노드들은 신뢰할 수 있는 환경에서 하나 이상의 스마트 계약 동작들을 안전하게 실행하기 위한 하나 이상의 서비스 TEE에 암호화 키를 배정하기 위하여 컨센서스에 도달할 수 있다.
본 명세서의 실시형태들을 위한 추가의 맥락을 제공하기 위하여, 그리고 위에서 소개된 바와 같이, (예컨대, 피어-투-피어(peer-to-peer) 노드들로 이루어진) 컨센서스 네트워크들 및 블록체인 네트워크들로서 또한 지칭될 수 있는 분산된 원장 시스템(DLS)들은 참여하는 엔티티들이 트랜잭션(transaction)들을 안전하게 그리고 변경할 수 없게 행하고 데이터를 저장하는 것을 가능하게 한다. 용어 블록체인(blockchain)은 특정한 네트워크들 및/또는 이용 케이스들과 일반적으로 연관되지만, 블록체인은 임의의 특정한 이용 케이스를 참조하지 않으면서, DLS를 일반적으로 지칭하기 위하여 본원에서 이용된다.
블록체인은, 트랜잭션들이 변경될 수 없는 방법으로 트랜잭션들을 저장하는 데이터 구조이다. 이에 따라, 블록체인 상에서 레코딩된 트랜잭션들은 신뢰성 있고 신뢰할 가치가 있다. 블록체인은 하나 이상의 블록들을 포함한다. 체인(chain)에서의 각각의 블록은 이전의 블록의 암호화 해시(cryptographic hash)를 포함함으로써, 체인에서의 각각의 블록 직전에 이전의 블록에 링크된다. 각각의 블록은 타임스탬프(timestamp), 그 자신의 암호화 해시, 및 하나 이상의 트랜잭션을 또한 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증되었던 트랜잭션들은 해싱(hash)되고 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는, 트리의 리프 노드(leaf node)들에서의 데이터가 해싱되고 트리의 각각의 가지(branch)에서의 모든 해시들이 가지의 루트(root)에서 연접(concatenate)되는 데이터 구조이다. 이 프로세스는 트리 위에서, 트리에서의 모든 데이터를 나타내는 해시를 저장하는 전체 트리의 루트까지 계속된다. 트리에 저장된 트랜잭션임을 의도하는 해시는 해시가 트리의 구조와 일치하는지 여부를 결정함으로써 신속하게 검증될 수 있다.
블록체인이 트랜잭션들을 저장하기 위한 탈중앙화된(decentralized) 또는 적어도 부분적으로 탈중앙화된 데이터 구조이기 때문에, 블록체인 네트워크는 트랜잭션들을 브로드캐스팅, 검증, 유효성 검사(validate) 등을 함으로써 하나 이상의 블록체인을 관리하고, 업데이팅하고, 유지하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개된 바와 같이, 블록체인 네트워크는 공개 블록체인 네트워크(public blockchain network), 개인 블록체인 네트워크(private blockchain network), 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 본 명세서의 실시형태들은 컨소시엄 블록체인 네트워크를 참조하여 본원에서 더욱 상세하게 설명된다. 그러나, 본 명세서의 실시형태들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있다는 것이 고려된다.
일반적으로, 컨소시엄 블록체인 네트워크는 참여하는 엔티티들 사이에서 사적이다. 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는 컨센서스 노드들로서 지칭될 수 있는 노드들의 인가된 세트에 의해 제어되고, 하나 이상의 컨센서스 노드는 개개의 엔티티(예컨대, 금융 기관(financial institution), 보험 회사(insurance company))에 의해 운영된다. 예를 들어, 10 개(10)의 엔티티들(예컨대, 금융 기관들, 보험 회사들)의 컨소시엄은 컨소시엄 블록체인 네트워크를 동작시킬 수 있고, 엔티티들의 각각은 컨소시엄 블록체인 네트워크에서의 적어도 하나의 노드를 동작시킨다.
일부 예들에서, 컨소시엄 블록체인 네트워크 내에서, 글로벌 블록체인(global blockchain)은 모든 노드들에 걸쳐 복제(replicate)되는 블록체인으로서 제공된다. 즉, 모든 컨센서스 노드들은 글로벌 블록체인에 대한 완벽한 상태 컨센서스(state consensus)에 있다. 컨센서스(예컨대, 블록체인으로의 블록의 추가에 대한 협정)를 달성하기 위하여, 컨센서스 프로토콜은 컨소시엄 블록체인 네트워크 내에서 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는 이하에서 더욱 상세하게 설명된 실제적인 비잔틴 장애 허용(practical Byzantine fault tolerance; PBFT) 컨센서스를 구현할 수 있다.
도 1은 본 명세서의 실시형태들을 실행하기 위하여 사용될 수 있는 환경(100)의 예를 예시하는 도면이다. 일부 예들에서, 일 예의 환경(100)은 엔티티들이 컨소시엄 블록체인 네트워크(102)에 참여하는 것을 가능하게 한다. 일 예의 환경(100)은 컴퓨팅 디바이스들(106, 108) 및 네트워크(110)를 포함한다. 일부 예들에서, 네트워크(110)는 로컬 영역 네트워크(local area network; LAN), 광역 네트워크(wide area network; WAN), 인터넷, 또는 그 조합을 포함하고, 웹 사이트(web site)들, 사용자 디바이스들(예컨대, 컴퓨팅 디바이스들), 및 백-엔드 시스템(back-end system)들을 접속시킨다. 일부 예들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크 상에서 액세스될 수 있다.
도시된 예에서, 컴퓨팅 시스템들(106, 108)은 컨소시엄 블록체인 네트워크(102)에서의 노드로서의 참여를 가능하게 하는 임의의 적절한 컴퓨팅 시스템을 각각 포함할 수 있다. 일 예의 컴퓨팅 디바이스들은 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스, 및 스마트폰을 제한 없이 포함한다. 일부 예들에서, 컴퓨팅 시스템들(106, 108)은 컨소시엄 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅(host)한다. 예를 들어, 컴퓨팅 시스템(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)은 각각의 트랜잭션 관리 시스템(208)을 위한 인터페이스들(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)의 다수의 복사본(copy)들이 블록체인 네트워크(212)에 걸쳐 제공되고 유지된다. 예를 들어, 각각의 노드(214)는 블록체인의 복사본을 저장한다. 일부 실시형태들에서, 블록체인(216)은 컨소시엄 블록체인 네트워크에 참여하는 2 개 이상의 엔티티들 사이에서 수행되는 트랜잭션들과 연관된 정보를 저장한다.
블록체인(예컨대, 도 2의 블록체인(216))은 블록들의 체인으로 이루어지고, 각각의 블록은 데이터를 저장한다. 일 예의 데이터는 2 이상의 참여자들 사이의 트랜잭션을 나타내는 트랜잭션 데이터를 포함한다. 트랜잭션들은 비-제한적인 예로서 본원에서 이용되지만, 임의의 적절한 데이터가 블록체인에 저장될 수 있다는 것(예컨대, 문서, 이미지, 비디오, 오디오)이 고려된다. 일 예의 트랜잭션들은 제한 없이 가치 있는 것(예컨대, 자산, 제품, 서비스, 통화)의 교환을 포함할 수 있다. 트랜잭션 데이터는 블록체인 내에서 변경할 수 없게 저장된다. 즉, 트랜잭션 데이터는 변경될 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터는 해싱된다. 해싱은 (스트링 데이터(string data)로서 제공된) 트랜잭션 데이터를 (스트링 데이터로서 또한 제공된) 고정된-길이 해시 값으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위하여 해시 값을 역-해싱(un-hash)하는 것은 가능하지 않다. 해싱은 트랜잭션 데이터에서의 사소한 변경조차도 완전히 상이한 해시 값으로 귀착되는 것을 보장한다. 또한, 그리고 위에서 언급된 바와 같이, 해시 값은 고정된 길이이다. 즉, 트랜잭션 데이터의 크기에 관계 없이, 해시 값의 길이는 고정된다. 해싱은 해시 값을 생성하기 위한 해시 함수(hash function)를 통해 트랜잭션 데이터를 프로세싱하는 것을 포함한다. 해시 함수의 예는 256-비트 해시 값들을 출력하는 보안 해시 알고리즘(secure hash algorithm; SHA)-256을 제한 없이 포함한다.
다수의 트랜잭션들의 트랜잭션 데이터는 해싱되고 블록에 저장된다. 예를 들어, 2 개의 트랜잭션들의 해시 값들이 제공되고, 또 다른 해시를 제공하기 위하여 자체적으로 해싱된다. 이 프로세스는 블록에 저장되어야 할 모든 트랜잭션들에 대하여, 단일 해시 값이 제공될 때까지 반복된다. 이 해시 값은 머클 루트 해시(Merkle root hash)로서 지칭되고, 블록의 헤더(header)에 저장된다. 트랜잭션들 중의 임의의 것에서의 변경은 그 해시 값에서의 변경, 그리고 궁극적으로, 머클 루트 해시에서의 변경으로 귀착될 것이다.
블록들은 컨센서스 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내에서의 다수의 노드들은 컨센서스 프로토콜에 참여하고, 블록체인에 추가된 블록을 가지기 위한 작업을 수행한다. 이러한 노드들은 컨센서스 노드들로서 지칭된다. 위에서 소개된 PBFT는 컨센서스 프로토콜의 비-제한적인 예로서 이용된다. 컨센서스 노드들은 트랜잭션들을 블록체인에 추가하고 블록체인 네트워크의 전체적인 상태를 업데이팅하기 위하여 컨센서스 프로토콜을 실행한다.
더욱 상세하게, 컨센서스 노드는 블록 헤더를 생성하고, 블록에서의 트랜잭션들의 전부를 해싱하고, 단일 해시 값이 블록에서의 모든 트랜잭션들에 대하여 제공될 때까지(머클 루트 해시) 추가의 해시 값들을 생성하기 위하여 해시 값을 쌍들로 조합한다. 이 해시는 블록 헤더에 추가된다. 컨센서스 노드는 또한, 블록체인에서의 가장 최근의 블록(즉, 블록체인에 추가된 최후의 블록)의 해시 값을 결정한다. 컨센서스 노드는 또한, 논스 값(nonce value) 및 타임스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 장애들을 허용하는 실제적인 비잔틴 상태 머신 복제(예컨대, 오작동하는 노드들, 악성 노드들)를 제공한다. 이것은 장애들이 발생할 것이라는 것을 가정(예컨대, 독립적인 노드 고장들, 및/또는 컨센서스 노드들에 의해 전송된 조작된 메시지들의 존재를 가정)함으로써 PBFT에서 달성된다. PBFT에서, 컨센서스 노드들은 주 컨센서스 노드(primary consensus node) 및 백업 컨센서스 노드(backup consensus node)들을 포함하는 시퀀스(sequence)에서 제공된다. 주 컨센서스 노드는 주기적으로 변경된다. 트랜잭션들은 블록체인 네트워크의 월드 스테이트(world state)에 대한 협정에 도달하는 블록체인 네트워크 내의 컨센서스 노드들에 의해 블록체인에 추가된다. 이 프로세스에서, 메시지들은 컨센서스 노드들 사이에서 송신되고, 각각의 컨센서스 노드들은 메시지가 특정된 피어 노드로부터 수신된다는 것을 증명하고, 메시지가 송신 동안에 수정되지 않았다는 것을 검증한다.
PBFT에서, 컨센서스 프로토콜은 다수의 국면들에서 제공되고, 모든 컨센서스 노드들은 동일한 상태에서 시작한다. 시작하면, 클라이언트는 서비스 동작을 호출(예컨대, 블록체인 네트워크 내에서 트랜잭션을 실행)하기 위하여 요청을 주 컨센서스 노드로 전송한다. 요청을 수신하는 것에 응답하여, 주 컨센서스 노드는 요청을 백업 컨센서스 노드들로 멀티캐스팅한다. 백업 컨센서스 노드들은 요청을 실행하고, 각각은 답신을 클라이언트로 전송한다. 클라이언트는 임계 수의 답신들이 수신될 때까지 대기한다. 일부 예들에서, 클라이언트는 수신되어야 할 f+1 개의 답신들을 대기하고, 여기서, f는 블록체인 네트워크 내에서 용인될 수 있는 장애 있는 컨센서스 노드들의 최대 수이다. 최종적인 결과는 충분한 수의 컨센서스 노드들이 블록체인에 추가되어야 하는 레코드에 따라 협정에 도달한다는 것이고, 레코드는 수락되거나 거절되는 것 중의 어느 하나이다.
일부 트랜잭션 네트워크들에서, 암호법(cryptography)은 트랜잭션들의 프라이버시를 유지하도록 구현된다. 예를 들어, 2 개의 노드들이 트랜잭션을 사적인 것으로 유지하기를 원하여, 블록체인 네트워크에서의 다른 노드들이 트랜잭션의 세부사항들을 파악할 수 없을 경우에, 노드들은 트랜잭션 데이터를 암호화할 수 있다. 일 예의 암호법은 대칭적 암호화 및 비대칭적 암호화를 제한 없이 포함한다. 대칭적 암호화는 (평문(plaintext)으로부터 암호문을 생성하는) 암호화 및 (암호문으로부터 평문을 생성하는) 복호화의 양자를 위하여 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭적 암호화에서, 동일한 키는 다수의 노드들에 이용가능하므로, 각각의 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭적 암호화는 개인 키(private key) 및 공개 키(public key)를 각각 포함하는 키 쌍들을 이용하고, 개인 키는 개개의 노드에만 알려지고, 공개 키는 블록체인 네트워크에서의 임의의 또는 모든 다른 노드들에 알려진다. 노드는 데이터를 암호화하기 위하여 또 다른 노드의 공개 키를 사용할 수 있고, 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화될 수 있다. 예를 들어, 그리고 도 2를 다시 참조하면, 참여자 A는 데이터를 암호화하고 암호화된 데이터를 참여자 B에게 전송하기 위하여 참여자 B의 공개 키를 사용할 수 있다. 참여자 B는 암호화된 데이터(암호문)를 복호화하고 원래의 데이터(평문)를 추출하기 위하여 그 개인 키를 사용할 수 있다. 노드의 공개 키로 암호화된 메시지들은 노드의 개인 키를 사용하여 오직 복호화될 수 있다.
비대칭적 암호화는 디지털 서명(digital signature)들을 제공하기 위하여 사용되고, 이는 트랜잭션에서의 참여자들이 트랜잭션에서의 다른 참여자들뿐만 아니라, 트랜잭션의 유효성(validity)을 확인하는 것을 가능하게 한다. 예를 들어, 노드는 메시지를 디지털 방식으로 서명할 수 있고, 또 다른 노드는 참여자 A의 디지털 서명에 기초하여, 메시지가 노드에 의해 전송되었다는 것을 확인할 수 있다. 디지털 서명들은 또한, 메시지들이 전송 중에 탬퍼링되지 않는다는 것을 보장하기 위하여 사용될 수 있다. 예를 들어, 그리고 도 2를 다시 참조하면, 참여자 A는 메시지를 참여자 B에게 전송한다. 참여자 A는 메시지의 해시를 생성하고, 그 다음으로, 그 개인 키를 사용하여, 디지털 서명을 암호화된 해시로서 제공하기 위하여 해시를 암호화한다. 참여자 A는 디지털 서명을 메시지에 첨부하고, 디지털 서명을 갖는 메시지를 참여자 B에게 전송한다. 참여자 B는 참여자 A의 공개 키를 사용하여 디지털 서명을 복호화하고, 해시를 추출한다. 참여자 B는 메시지를 해싱하고, 해시들을 비교한다. 해시들이 동일할 경우에, 참여자 B는 메시지가 실제로 참여자 A로부터의 것이었고, 탬퍼링되지 않았다는 것을 확인할 수 있다.
일부 실시형태들에서, 블록체인 네트워크의 노드들, 및/또는 블록체인 네트워크와 통신하는 노드들은 TEE을 사용하여 동작할 수 있다. 하이-레벨(high-level)에서, TEE는 하드웨어의 동작 환경(예컨대, 오퍼레이팅 시스템(operating system; OS), 기본 입력/출력 시스템(basic input/output system; BIOS))으로부터 격리되는 하드웨어(하나 이상의 프로세서, 메모리) 내의 신뢰할 수 있는 환경이다. 더욱 상세하게, TEE는 실행되는 코드 및 주요 프로세서 내에서 로딩된 데이터의 기밀성(confidentiality) 및 무결성(integrity)을 보장하는 프로세서의 별도의 보안 영역이다. 프로세서 내에서, TEE는 OS와 병렬로 동작한다. 소위 신뢰할 수 있는 애플리케이션(trusted application; TA)들의 적어도 부분들은 TEE 내에서 실행되고, 프로세서 및 메모리에 액세스한다. TEE를 통해, TA들은 주요 OS에서 실행되는 다른 애플리케이션들로부터 보호된다. 또한, TEE는 TEE 내부에서 TA들을 서로로부터 암호 방식으로 격리시킨다.
TEE의 예는 Santa Clara, California, United States의 인텔(Intel)사에 의해 제공된 소프트웨어 방어 확장(Software Guard Extensions; SGX)을 포함한다. SGX가 예로서 본원에서 논의되지만, 본 명세서의 실시형태들은 임의의 적절한 TEE를 이용하여 실현될 수 있다는 것이 고려된다.
SGX는 하드웨어-기반 TEE를 제공한다. SGX에서, 신뢰할 수 있는 하드웨어는 중앙 프로세싱 유닛(central processing unit; CPU)의 다이(die)이고, 물리적 메모리의 부분은 선택 코드 및 데이터를 보호하기 위하여 격리된다. 메모리의 격리된 부분들은 엔클레이브(enclave)들로서 지칭된다. 더 상세하게, 엔클레이브는 메모리에서의 엔클레이브 페이지 캐시(enclave page cache; EPC)로서 제공되고, 애플리케이션 어드레스 공간으로 맵핑된다. 메모리(예컨대, DRAM)는 SGX를 위한 보존된 랜덤 메모리(preserved random memory; PRM)를 포함한다. PRM은 최저 BIOS 레벨에서의 연속 메모리 공간이고, 임의의 소프트웨어에 의해 액세스될 수 없다. 각각의 EPC는 PRM에서 애플리케이션 데이터 및 코드를 로딩하기 위하여 OS에 의해 할당되는 메모리 세트(memory set)(예컨대, 4 KB)이다. EPC 메타데이터(EPC metadata; EPCM)는 개개의 EPC들을 위한 진입 어드레스이고, 각각의 EPC가 하나의 엔클레이브에 의해 오직 공유될 수 있다는 것을 보장한다. 즉, 단일 엔클레이브는 다수의 EPC들을 이용할 수 있는 반면, EPC는 단일 엔클레이브에 전용(dedicate)된다.
TA의 실행 동안에, 프로세서는 엔클레이브에 저장된 데이터에 액세스할 때에 소위 엔클레이브 모드에서 동작한다. 엔클레이브 모드에서의 동작은 각각의 메모리 액세스에 대한 여분의 하드웨어 체크를 집행한다. SGX에서, TA는 신뢰 부분 및 비신뢰 부분으로 컴파일링된다. 신뢰 부분은 예를 들어, OS, BIOS, 특권화된 시스템 코드, 가상 머신 관리기(virtual machine manager; VMM), 시스템 관리 모드(system management mode; SMM) 등에 의해 액세스불가능하다. 동작 시에, TA가 작동되고 메모리의 PRM 내에서 엔클레이브를 생성한다. 엔클레이브 내의 신뢰 부분에 의해 실행된 신뢰된 함수는 비신뢰 부분에 의해 호출되고, 엔클레이브 내에서 실행되는 코드는 데이터를 (비암호화된) 평문 데이터로서 간주하고, 데이터에 대한 외부 액세스는 거부된다. 신뢰 부분은 호출에 대한 암호화된 응답을 제공하고, TA는 실행되는 것을 계속한다.
입증 프로세스는 예상된 코드(예컨대, TA의 신뢰 부분)가 인증된 TEE 내에서 안전하게 실행되고 있다는 것을 검증하기 위하여 수행될 수 있다. 일반적으로, 입증 프로세스는 TEE가 챌린저(challenger)(예컨대, 블록체인 네트워크의 키 관리 시스템(KMS))로부터 입증 요청을 수신하는 것을 포함한다. 이에 응답하여, TEE는 원격 입증을 수행하기 위한 인용문(quote)을 생성할 수 있다. 원격-입증(remote-attestation)을 수행하는 것은 로컬 입증(local attestation)이 엔클레이브로부터, 로컬-입증을 검증하고, 비대칭적 입증 키(attestation key)를 사용하여 로컬-입증을 서명함으로써 로컬-입증을 원격-입증으로 변환하는 소위 인용 엔클레이브(quoting enclave)로 전송되는 것을 포함한다. 인용문은 챌린저(예컨대, 블록체인 네트워크의 KMS)에게 제공된다.
챌린저는 원격-입증을 검증하기 위하여 입증 검증 서비스를 사용한다. SGX를 위하여, 인텔(Intel)은 챌린저로부터 원격-입증을 수신하고 원격-입증을 검증하는 인텔 입증 서비스(Intel Attestation Service; IAS)를 제공한다. 더 상세하게, IAS는 원격-입증을 프로세싱하고, 원격-입증이 검증되는지 여부를 표시하는 리프트(예컨대, 입증 검증 리프트(attestation verification report; AVR))를 제공한다. 검증되지 않을 경우에, 에러가 표시될 수 있다. 검증될 경우에(예상된 코드가 TEE에서 안전하게 실행되고 있음), 챌린저는 TEE와의 상호작용들을 시작할 수 있거나 계속할 수 있다. 예를 들어, 검증에 응답하여, (챌린저로서의) KMS는 노드가 다른 노드들 및/또는 클라이언트들과 안전하게 통신하는 것을 가능하게 하기 위하여, 비대칭적 암호화 키들(예컨대, 공개-키 및 개인-키 쌍)을 (예컨대, 타원 곡선 디피-헬만(elliptical curve Diffie-Hellman; ECDH)과 같은 키 교환 프로세스를 통해) TEE를 실행하는 노드에 발행할 수 있다.
상호 입증 프로세스는, 제 1 TEE를 실행하는 노드가 제 2 TEE를 실행하는 노드의 원격 입증을 수행하고, 그 후에, 제 2 TEE를 실행하는 노드가 제 1 TEE를 실행하는 노드의 원격 입증을 수행하는 것을 수반한다. 일단 양자의 노드들이 서로를 검증하였으면, 노드들은 그들 사이의 보안 통신을 가능하게 하기 위하여 키 교환 프로세스를 수행할 수 있다.
일부 블록체인 네트워크들에서는, 소위 스마트 계약들이 실행될 수 있다. 스마트 계약들은 실세계의 디지털 표현들로서 설명될 수 있고, 합법적인 계약들은 다양한 당사자들에게 영향을 주는 계약적 용어들을 가질 수 있다. 스마트 계약은 일 예의 문맥에서, 컨소시엄 블록체인 네트워크 내에서 구현되고, 저장되고, (필요한 바와 같이) 업데이팅되고, 실행된다. 스마트 계약과 연관된 계약 당사자들(예컨대, 구매자들 및 판매자들)은 컨소시엄 블록체인 네트워크에서의 노드들로서 표현된다. 일부 예들에서, 계약 당사자들은 스마트 계약과 연관되는 엔티티들(예컨대, 사업 기업들)을 (예컨대, 스마트 계약에 대한 당사자들로서) 포함할 수 있다.
더욱 상세하게, 스마트 계약들은 블록체인들(예컨대, 블록체인 네트워크 내의 노드) 상에서 실행되는 컴퓨터-실행가능 프로그램들로서 제공된다. 스마트 계약은 그 스마트 계약에 대한 어느 당사자들이 서로 상호작용하도록 협정하는 사전-정의된 규칙들의 세트를 포함한다. 스마트 계약의 사전-정의된 규칙들이 충족될 경우에, 스마트 계약에서 정의된 협정은 자동적으로 집행된다. 스마트 계약은 탬퍼 방지적(tamper resistant)이고, 협정 또는 트랜잭션의 협상 또는 수행을 용이하게 하고, 검증하고, 집행한다.
도 3은 본 명세서의 실시형태들에 따라 시스템(300)의 예를 예시하는 도면이다. 도시된 바와 같이, 시스템(300)은 블록체인 노드들(304a 내지 304d)을 포함하는 블록체인 네트워크(302)를 포함한다. 블록체인 노드들(304a 내지 304d)은 서비스 TEE(306a 내지 306d) 및 키 관리(key management; KM) TEE(308a 내지 308d)을 포함한다. 노드들(304a 내지 304d)은 스마트 계약 서비스 로직(330)에 액세스한다. 키 관리 센터(310)는 노드들(304a 내지 304d)에 통신가능하게 결합된다.
노드들(304a 내지 304d)의 각각은 블록체인 네트워크(302)에 참여하고 블록체인 네트워크(302)(도시되지 않음)와 연관된 블록체인의 유지보수에 기여하는 블록체인 노드이다. 위에서 설명된 바와 같이, 노드들(304a 내지 304d)은 블록체인 네트워크(302)와 연관된 컨센서스 프로세스에 참여할 수 있고, 블록체인으로의 추가를 위한 블록들로의 트랜잭션들을 수집할 수 있고, 블록체인 네트워크(302)의 사용자들에 의해 요청된 트랜잭션들을 프로세싱할 수 있고, 스마트 계약들에서 인코딩된 동작들을 실행할 수 있고, 블록체인의 관리에 관련된 다른 태스크(task)들을 수행할 수 있다. 일부 실시형태들에서, 각각의 노드는 하나 이상의 프로세서, 저장 디바이스, 및 다른 컴포넌트를 포함하는 컴퓨팅 디바이스(예컨대, 서버)일 수 있다. 일부 경우에 있어서는, 노드들(304a 내지 304d)이 통신 네트워크(도시되지 않음) 상에서 서로에, 그리고 블록체인 네트워크(302)에 참여하는 다른 노드들에 통신한다. 도 3의 남은 부분의 설명을 위하여, 노드들(304b 내지 304d)이 노드(304a)의 특징들을 또한 포함할 수 있다는 것을 이해하면서, 노드(304a)가 예로서 설명될 것이다.
노드(304a)는 서비스 TEE(306a)를 포함한다. 일부 실시형태들에서, 서비스 TEE(306a)는 TEE 기술(예컨대, 인텔 SGX)을 사용하여 구현된 보안 애플리케이션 환경이다. 하나 이상의 소프트웨어 프로그램 또는 라이브러리는 서비스 TEE(306a)에 의해 실행될 수 있다. 본 명세서의 목적들을 위하여, 서비스 TEE(306a)는 보안 환경(TEE)뿐만 아니라, 설명된 동작들을 수행하는 TEE 내부에서 실행되는 소프트웨어를 지칭한다. 일부 실시형태들에서, 서비스 TEE(306a)는 암호화된 클라이언트 요청들에 의해 특정된 스마트 계약 동작들을 실행하고, 스마트 계약 동작들과 연관된 암호화된 결과들을 출력한다. 이 기능성은 이하의 도 4에 대하여 더욱 상세하게 설명된다.
노드(304a)는 키 관리 TEE(KM TEE)(308a)를 또한 포함한다. 일부 실시형태들에서, KM TEE(308a)는 TEE 기술(예컨대, 인텔 SGX)을 사용하여 구현된 보안 애플리케이션 환경이다. 하나 이상의 소프트웨어 프로그램 또는 라이브러리는 KM TEE(308a)에 의해 실행될 수 있다. 본 명세서의 목적들을 위하여, KM TEE(308a)는 보안 환경(TEE)뿐만 아니라, 설명된 동작들을 수행하는 TEE 내부에서 실행되는 소프트웨어를 지칭한다. 일부 실시형태들에서, KM TEE(308a)는 이하의 도 4에 대하여 더욱 상세하게 설명된 바와 같이, 키 관리 센터(310)로부터 암호화 키를 획득한다.
키 관리 센터(310)는 암호화 키를 생성할 수 있고, 저장할 수 있고, 유지할 수 있다. 키 관리 센터(310)는 또한, KM TEE(308a 내지 308d)의 아이덴티티(identity)들을 인증할 수 있고, 원격 입증 및 키 전개 프로세스(320)를 통해 암호화 키를 노드들(304a 내지 304d)에 제공할 수 있다. 일부 실시형태들에서, 키 관리는 암호화 키를 노드들(304a 내지 304d)과 상호작용하기 위한 클라이언트들에 추가로 제공할 수 있다. 이 기능성은 이하의 도 4에 대하여 더욱 상세하게 설명된다. 일부 실시형태들에서, 키 관리 센터(310)는 통신 네트워크(도시되지 않음) 상에서 블록체인 네트워크(302)의 하나 이상의 노드와 통신하는 하나 이상의 서버 또는 다른 컴퓨팅 디바이스일 수 있다. 키 관리 센터(310)는, 키 관리 센터(310)에 결합되거나, 암호화 키들 및 다른 데이터를 저장하기 위한 통신 네트워크 상에서 액세스가능한 하나 이상의 저장 디바이스를 또한 포함할 수 있다.
일부 경우에 있어서는, 키 관리 센터(310)가 암호화 키 전개들을 수행하기 전에 KM TEE(308a 내지 308d)의 아이덴티티들을 인증하도록 동작한다. 예를 들어, (이하에서 설명된) 하나 이상의 암호화 키를 KM TEE(308a)에 제공하기 이전에, 키 관리 센터(310)는 KM TEE(308a)의 인증성(authenticity)을 검증할 수 있다. 이 검증은 KM TEE(308a)에 의해 실행된 소프트웨어가 프로비저닝된 후에 탬퍼링되지 않았다는 것을 보장한다. 일부 실시형태들에서, 검증은 위에서 설명된 것들과 같은 원격 입증 프로세스(320)를 포함할 수 있다.
KM TEE(308a 내지 308d)이 키 관리 센터(310)로부터 하나 이상의 암호화 키를 획득한 후에, 키들은 암호 동작들을 수행하기 위하여 서비스 TEE(306a 내지 306d)로 포워딩될 수 있다. 일부 경우에 있어서는, KM TEE 및 서비스 TEE 쌍(예컨대, KM TEE(308a) 및 서비스 TEE(306a))이 단일 노드(예컨대, 노드(304a)) 상에서 동작하지만, 이들은 그 자신의 독립적인 TEE을 각각 가진다. 그 결과, KM TEE(308a 내지 308d)와 서비스 TEE(306a 내지 306d) 사이에서 통신된 정보는 비신뢰 영역을 통해 송신된다. 이러한 경우에는, KM TEE(308a 내지 308d)이 예를 들어, 로컬 입증 프로세스를 수행함으로써 서비스 TEE(306a 내지 306d)의 아이덴티티들을 인증할 수 있다.
로컬 입증은 엔클레이브가 동일한 로컬 플랫폼 내의 또 다른 엔클레이브에 대한 그 아이덴티티 또는 인증성을 증명하는 것을 허용할 수 있다. 예를 들어, KM TEE(308a)는 서비스 TEE(306a)의 인증성을 검증하기 위하여 챌린지(challenge)를 전송할 수 있다. 챌린지를 수신할 시에, 서비스 TEE(306a)는 서비스 TEE(306a)가 노드(304a) 상에서 존재한다는 암호화 증명(cryptographic proof)을 포함하는 리포트를 생성할 것을 노드(304a)의 하드웨어(예컨대, CPU)에 요청할 수 있다. 리포트는 엔클레이브 리포트가 노드(304a)에 의해 동일한 플랫폼 상에서 생성되었다는 것을 검증하기 위하여 KM TEE(308a)에 제공될 수 있다. 일부 경우에 있어서는, 로컬 입증이 리포트를 검증하는 KM TEE(308a) 및 리포트를 생성하는 엔클레이브 하드웨어만이 노드(304a)의 하드웨어 플랫폼에 임베딩되는 대칭적 키를 알고 있는 대칭적 키 시스템에 기초하여 수행될 수 있다.
서비스 TEE(306a 내지 306d)가 로컬 입증을 통해 인증된 후에, KM TEE(308a 내지 308d)는 하나 이상의 암호화 키를 서비스 TEE(306a 내지 306d)에 제공할 수 있다. 일부 경우에 있어서는, KM TEE(308a 내지 308d)가 서비스 TEE(306a 내지 306d)의 인증에 응답하여 암호화 키를 제공할 수 있거나, 서비스 TEE(306a 내지 306d)에 의한 하나 이상의 요청에 응답하여 키들을 제공할 수 있다.
키 관리 센터(310)를 암호화 키를 전개하기 위한 중앙 기관(central authority)으로서 신뢰하는 대신에, 본 명세서는 KM TEE(308a 내지 308d)에 의해 구현된 탈중앙화된 키 관리 방식을 추가로 제공한다. KM TEE(308a 내지 308d)은 신뢰 관계를 확립할 수 있고, 암호화 키를 개개의 서비스 TEE(306a 내지 306d)에 제공하기 위한 컨센서스에 도달할 수 있다.
하이-레벨에서, 탈중앙화된 키 관리 방식은 상호 입증(mutual attestation; MA) 스테이지 및 컨센서스 스테이지를 포함할 수 있다. MA 스테이지에서, KM TEE(308a 내지 308d)의 각각은 블록체인 네트워크(302)에서의 다른 KM TEE 중의 하나 이상과의 MA들을 수행하기 위하여 입증자(attester) 및 챌린저(challenger)의 양자로서 동작할 수 있다. MA들은 블록체인 네트워크(302)에서의 KM TEE 사이의 신뢰 관계를 확립하기 위한 MA 로직에 기초하여 수행될 수 있다. 신뢰 관계를 확립하기 위한 MA 로직은 상이한 로직 구조들을 가질 수 있다. 2 개의 예의 MA 로직들은 도 7 및 도 8의 설명들에서 더욱 상세하게 논의된다.
신뢰 관계가 KM TEE(308a 내지 308d) 사이에서 확립된 후에, 탈중앙화된 키 관리 방식은 컨센서스 스테이지에 진입할 수 있다. 컨센서스 스테이지에서, KM TEE(308a 내지 308d)은 암호화 키를 생성할 수 있고 암호화 키를 서로 공유할 수 있고, 어느 암호화 키들이 서비스 TEE(306a 내지 306d)에 전개되어야 하는지에 대한 컨센서스에 도달할 수 있다. 컨센서스는 전술한 PBFT와 같은, 컨소시엄 블록체인을 위하여 적당한 컨센서스 프로세스를 수행하는 것에 기초하여 도달될 수 있다. 암호화 키 전개는 로컬 입증을 통해 개개의 서비스 TEE(306a 내지 306d)을 인증하는 것에 기초하여 수행될 수 있다.
일부 실시형태들에서, KM TEE(308a 내지 308d)은 키 관리 센터(310)를 집합적으로 관리할 수 있다. 이러한 경우에 있어서는, 암호화 키들이 키 관리 센터(310)에 의해 여전히 생성될 수 있고, 성공적인 원격 입증 후에 KM TEE(308a 내지 308d)에 제공될 수 있다. 그러나, 어느 암호화 키가 KM TEE(308a 내지 308d) 또는 서비스 TEE(306a 내지 306d) 중의 어느 하나에 전개되어야 하는지는 KM TEE(304a 내지 304d) 사이의 컨센서스 프로세스를 통해 결정될 수 있다.
일부 실시형태들에서, KM TEE(308a 내지 308d)은 컨센서스 프로세스를 통해, 암호화 키를 생성하고 유지하고, 암호화 키를 신뢰할 수 있는 TEE에 전개하기 위하여 키 관리 센터(310)로서 작동하기 위한 KM TEE(308a 내지 308d) 중의 하나 이상을 선택할 수 있다.
도 7을 참조하면, 도 7은 본 명세서의 실시형태들에 따라 MA 로직(700)의 예를 예시하는 도면이다. 전술한 바와 같이, 하이-레벨에서, 상호 입증 프로세스는, 제 1 TEE를 실행하는 노드가 제 2 TEE를 실행하는 노드의 원격 입증을 수행하고, 그 후에, 제 2 TEE를 실행하는 노드가 제 1 TEE를 실행하는 노드의 원격 입증을 수행하는 것을 수반한다. 일단 양자의 노드들이 서로를 검증하였으면, 노드들은 그들 사이의 보안 통신들을 가능하게 하기 위하여 키 교환 프로세스를 수행할 수 있다.
예를 들어, 상호 입증 프로세스 동안에 KM TEE(308a)와 KM TEE(308b) 사이의 상호 입증 프로세스를 사용하면, KM TEE(308a)는 KM TEE(308b)의 원격 입증을 먼저 수행한다. 원격 입증 프로세스 동안에, 양자의 KM TEE(308a) 및 KM TEE(308b)는 시그마 프로토콜(sigma protocol)과 같은 키 생성 프로토콜을 이용하여 공유된 키를 유도할 수 있다. KM TEE(308a)는 그 다음으로, 논스를 생성할 수 있고, 그 자신의 해시 값들 및 KM TEE(308b)의 SGX 리프트를 계산할 수 있고, 그 다음으로, 이들을 KM TEE(308b)로 전송할 수 있다. KM TEE(308b)는 그 다음으로, KM TEE(308a)의 원격 입증을 수행할 수 있고, 해싱된 리포트의 서명을 검증할 수 있다. 검증이 성공적일 경우에, KM TEE(308b)는 올바른 KM TEE(308a)와 통신하는 것으로 확인될 수 있다. KM TEE(308b)는 그 다음으로, 세션 키를 생성하고, 양자의 논스 및 세션 키를 KM TEE(308a)로 다시 전송한다.
KM TEE(308a)는 그 다음으로, 원래 전송된 것과의 수신된 논스의 매칭을 수행할 수 있다. 이들이 매칭될 경우에, KM TEE(308a)는 올바른 KM TEE(308b)와 통신하고 있는 것으로 확인될 수 있다. 이와 같이, MA는 성공적으로 수행된다. KM TEE(308a)는 그 다음으로, 데이터 암호화를 위한 세션 키(session key)를 사용함으로써 KM TEE(308b)와 안전하게 통신할 수 있다. 다른 KM TEE 사이의 MA는 유사하게 수행될 수 있다.
MA 로직(700) 하에서, KM TEE(308a 내지 308d) 중의 임의의 하나는 폐쇄-루프형 인증(closed-looped authentication) "링(ring)"을 형성하기 위하여 2 개의 다른 KM TEE(308a 내지 308d)과의 MA들을 수행한다. 일부 경우에 있어서는, KM TEE(308a 내지 308d)의 전체적인 MA들이 폐쇄-루프에서 수행되는 한, KM TEE는 근접하게 지리적으로 인접하거나 MA들을 수행하기 위한 높은 통신 효율을 가지는 2 개의 KM TEE을 선택할 수 있다.
도 7에서 예시된 예에서, KM TEE(308a)는 KM TEE(308b)와의 MA에서 챌린저 및 입증자의 양자를 수행하고, KM TEE(308b)는 KM TEE(308c)와의 MA에서 챌린저 및 입증자의 양자를 수행하고, KM TEE(308c)는 KM TEE(308d)와의 MA에서 챌린저 및 입증자의 양자를 수행하고, KM TEE(308d)는 KM TEE(308a)와의 MA에서 챌린저 및 입증자의 양자를 수행한다. MA들은 모든 KM TEE(308a 내지 308d)을 수반하는 폐쇄-루프를 형성하기 위하여 수행되므로, 각각의 KM TEE의 아이덴티티는 연속적으로 인증되고, 신뢰 관계는 KM TEE(308a 내지 308d) 사이에서 형성된다.
도 8은 본 명세서의 실시형태들에 따라 또 다른 MA 로직(800)의 예를 예시하는 도면이다. MA 로직(800)의 예에서, MA는 라운드-로빈(round-robin) 방식으로 수행된다. 다시 말해서, 각각의 KM TEE는 블록체인 네트워크에서의 다른 KM TEE의 각각과의 MA를 한번 수행한다. 예를 들어, 도 7의 설명에서 논의된 바와 같이 MA 로직(700) 하에서 MA들을 수행하는 것에 추가적으로, KM TEE(308a)는 KM TEE(308c)와의 MA에서 챌린저 및 입증자의 양자를 수행하고, KM TEE(308b)는 KM TEE(308b)와의 MA에서 챌린저 및 입증자의 양자를 수행한다.
블록체인 네트워크에서의 KM TEE 중의 임의의 2 개의 아이덴티티가 상호 인증되므로, MA 로직(800)은 MA 로직(700)보다 더 안전할 수 있다. 다른 한편으로, 더 적은 MA들이 MA 로직(700) 하에서 수행되므로, MA 로직(700)은 인증 확산 및 자원 소비의 측면에서 더 효율적일 수 있다. MA 로직(800)은 더 작은 수의 컨센서스 노드 또는 더 높은 보안성 요건을 갖는 블록체인 네트워크들을 위하여 더 적당할 수 있다. MA 로직(700)은 더 큰 수의 컨센서스 노드들 또는 더 낮은 보안성 요건을 갖는 블록체인 네트워크들을 위하여 더 적당할 수 있다.
도 3을 다시 참조하면, 스마트 계약 서비스 로직(330)은 하나 이상의 스마트 계약 정의를 포함한다. 노드들(304a 내지 304d)은 (예컨대, 도 4에서 도시된 바와 같이, 클라이언트의 요청 시에) 스마트 계약 서비스 로직(330)으로부터의 특정한 동작들을 실행한다. 일부 실시형태들에서, 스마트 계약 서비스 로직(330)에서의 스마트 계약 정의는 블록체인 네트워크(302)의 노드들에 의해 실행되어야 할 명령어를 포함한다. 스마트 계약 서비스 로직(330)은 블록체인 네트워크(302)(도시되지 않음)에 의해 유지된 하나 이상의 블록체인에 저장된 스마트 계약 정의를 포함할 수 있다.
도 4는 본 명세서의 실시형태들에 따라 시스템(400)의 예를 예시하는 도면이다. 도시된 바와 같이, 시스템(400)은 (서비스 TEE(306a) 및 KM TEE(308a)를 포함하는) 노드(304a) 및 도 3에 대하여 설명된 키 관리 센터(310)를 포함한다. 시스템(400)은 키 관리 센터(310)에 통신가능하게 결합된 클라이언트(480)를 또한 포함한다.
동작 시에, 시스템(400)은 스마트 계약 명령어를 안전하게 실행할 수 있고, (예컨대, 블록체인에서의 포함을 위한) 동작의 암호화된 결과들을 생성할 수 있다. 위에서 논의된 바와 같이, 키 관리 센터(310)는 암호화 키들로 KM TEE(308a)를 신뢰하기 전에 KM TEE(308a)의 아이덴티티를 인증하기 위하여 원격 입증을 수행할 수 있다. KM TEE(308)가 인증된 후에, 키 관리 센터(310)는 비밀봉 개인 키(unseal private key)(402), 루트 키(root key)(404), 및 서명 개인 키(sign private key)(406)를 노드(304a)의 KM TEE(308a)에 제공할 수 있다. 키 관리 센터(310)는 밀봉 공개 키(seal public key)(414) 및 검증 공개 키(verification public key)(416)를 또한 호스팅한다. 키 관리 센터(310)는 이하에서 설명된 바와 같이, 서비스 TEE(306a)와 연관된 다양한 데이터의 암호화 및 복호화를 수행하기 위하여 이 키들을 인가된 클라이언트들에 제공한다.
도시된 바와 같이, 키 관리 센터(310)는 밀봉 공개 키(414)를 클라이언트(480)에 제공한다. 일부 경우에 있어서는, 키 관리 센터(310)는 클라이언트(480)를 인증하고, 클라이언트(480)가 밀봉 공개 키(414)에 액세스하도록 인가될 경우에, 밀봉 공개 키(414)만 제공한다. 키 관리 센터(310)는 이 결정을 행하기 위하여 내부 또는 외부 허가 자원을 조사(consult)할 수 있다. 밀봉 공개 키(414)는 KM TEE(308a)에 제공된 비밀봉 개인 키(402)와 연관된다. 밀봉 공개 키(414) 및 비밀봉 개인 키(402)는 키 쌍을 형성하고, 이것은 밀봉 공개 키(414)로 암호화된 데이터가 비밀봉 개인 키(402)를 사용하여 복호화될 수 있다는 것을 의미한다.
클라이언트(480)는 서비스 TEE(306a)에서 전개된 이더리움(Ethereum) 가상 머신(virtual machine; VM)(460)에 의해 실행되어야 할 스마트 계약 동작인 요청된 계약 동작(450)을 식별한다. 일부 경우에 있어서는, 스마트 계약 동작들(450)은 그 언어인 명령어를 실행하도록 동작가능한 VM에 의한 실행을 위한 스마트 계약 프로그래밍 언어로 인코딩된 하나 이상의 명령어를 포함한다. 스마트 계약 동작들(450)은 요청 계약 동작(450)과 연관된 스마트 계약을 위한 실행 상태를 포함할 수 있다. 스마트 계약의 실행 동안에, 블록체인 네트워크의 다수의 노드들은 스마트 계약의 각각의 명령어를 개별적으로 실행하고, 명령어의 완료 후의 스마트 계약의 실행 상태를 표시하는 결과를 생성한다. 실행 상태는 스마트 계약과 연관된 데이터를 포함할 수 있다. 계약의 각각의 실행된 명령어는 (예컨대, 스마트 계약에서의 더 이후의 명령어에 의해 사용되어야 할 값을 저장하기 위하여) 데이터의 내용들을 변경할 수 있다. 스마트 계약의 명령어의 실행 후에, 블록체인 네트워크의 노드들은 명령어의 실행 후의 새로운 실행 상태에 대한 컨센서스에 도달한다. 이 컨센서스 프로세스는 스마트 계약에서 실행된 각각의 명령어에 대하여 수행되고, 이것은 스마트 계약의 실행 경로에 대한, 그리고 궁극적으로, 실행의 최종적인 결과에 대한 컨센서스에 이른다.
452에서, 클라이언트(480)는 노드(304a)에 의해 실행된 서비스 TEE(306a)로의 송신을 위한 디지털 엔벨로프(digital envelope)(454)에서 요청된 계약 동작(450)을 인코딩(또는 밀봉)한다. 예를 들어, 클라이언트(480)는 일시적인 대칭적 키(408)를 생성하고, 키(408)를 사용하여 요청된 계약 동작(450)을 암호화한다. 클라이언트(480)는 그 다음으로, 밀봉 공개 키(414)를 사용하여 일시적인 대칭적 키(408)를 암호화하고, 디지털 엔벨로프(454)를 생성하기 위하여 암호화된 계약 동작(450) 및 암호화된 키(408)를 연접시킨다.
클라이언트(480)는 디지털 엔벨로프(454)를 노드(304a)로 송신하고, 여기서, 그것은 서비스 TEE(306a)에 제공된다. 일부 경우에 있어서는, 클라이언트(480)가 요청된 계약 동작(450)의 프로세싱을 요청하기 위하여 디지털 엔벨로프(454)를 다수의 노드들(304a 내지 304d)로 전송할 수 있다. 일부 경우에 있어서는, 클라이언트(480)가 특정한 노드들에 특정적인 밀봉 공개 키들을 이용하여 생성된 디지털 엔벨로프들을 전송할 수 있다. 클라이언트(480)는 또한, 동일한 밀봉 공개 키(414) 및 비밀봉 개인 키(402)가 모든 노드들(304a 내지 304d)과 연관되는 경우에 있어서, 디지털 엔벨로프(454)를 노드들(304a 내지 304d)로 브로드캐스팅할 수 있다.
서비스 TEE(306a)는 클라이언트(480)로부터 디지털 엔벨로프(454)를 수신하고, 디지털 엔벨로프(454)로부터 요청된 계약 동작(450)을 복원한다. 도시된 바와 같이, 서비스 TEE(306a)는 KM TEE(308a)로부터 획득된 비밀봉 개인 키(402)를 사용하여 디지털 엔벨로프(454)를 디코딩한다. 일부 경우에 있어서는, 서비스 TEE(306a)가 (456에서) 비밀봉 개인 키(402)를 사용하여 일시적인 대칭적 키(408)를 복호화(비밀봉)하고, 그 다음으로, (458에서) 일시적인 대칭적 키(408)를 사용하여 요청된 계약 동작(450)을 복호화한다.
서비스 TEE(306a)는 그 다음으로, 서비스 TEE(306a)에서 전개된 VM(460)을 사용하여 요청된 계약 동작(450)을 실행한다. 일부 실시형태들에서, VM(460)은 이더리움 VM 또는 다른 유형의 VM과 같은, 스마트 계약 프로그래밍 언어의 명령어를 실행하도록 구성된 VM일 수 있다. 일부 경우에 있어서는, VM(460)은 예를 들어, 외부 서버들, 블록체인, 데이터베이스, 또는 동작(450)에 의해 표시된 다른 자원들과 같은, 동작(450)의 실행 동안에 서비스 TEE(306a)에 외부적인 자원들에 액세스할 수 있다. 일부 실시형태들에서, 외부 자원들에 액세스하는 것은 한정될 수 있거나 거부될 수 있어서, 동작의 실행의 전체는 (스마트 계약 상태와 같은) 서비스 TEE(306a)에 저장된 데이터에 오직 종속된다. 이 유형의 한정은 동작(450)의 실행을 탬퍼링할 가능성을 추가로 감소시킬 수 있다.
VM(460)에 의한 동작(450)의 실행은 하나 이상의 결과를 생성할 수 있다. 일부 경우에 있어서는, 결과들은 위에서 설명된 바와 같이, 동작(450)을 실행한 후의 스마트 계약의 실행 상태를 포함할 수 있다. 462에서, 스마트 계약 동작(450)의 결과는 계약 키(412)를 사용하여 서비스 TEE(306a)에 의해 암호화된다. 계약 키(412)는 (410에서) 키 유도 함수(key derivation function; KDF)에 기초하여 루트 키(404)로부터 유도된다. 일부 예들에서, KDF는 HMAC-기반 추출-및-확대 키 유도 함수(HMAC-based extract-and-expand key derivation function; HKDF) 또는 의사-랜덤 함수(pseudo-random function; PRF)와 같은 반복 해시 알고리즘(iterative hash algorithm)들에 기초하여 수행될 수 있다. 계약 키는 KM TEE(308a)에 의해 서비스 TEE(306a)에 제공될 수 있다. 일부 실시형태들에서, 루트 키(404)는 노드(304a)와 연관된 대칭적 암호화 키일 수 있다. 루트 키(404)는 루트 키(404)로부터 유도될 수 있는 하나 이상의 서브키(subkey)를 또한 포함할 수 있다. 계약 키(412)는 이 서브키들 중의 하나일 수 있다. 일부 경우에 있어서는, 루트 키(404) 자체가 462에서 결과를 암호화하기 위하여 사용될 수 있다.
결과를 암호화한 후에, 서비스 TEE(308a)는 464에서, 서명된 결과(466)를 생성하기 위하여, KM TEE(308a)에 의해 서비스 TEE(306a)에 제공된 서명 개인 키(406)를 사용하여 암호화된 결과를 서명한다. 이것은 키 관리 센터(310)에 의해 유지된 (서명 개인 키(406)와 대응하게 쌍을 이룬) 검증 공개 키(416)를 사용한, 제3자(third party)(예를 들어, 클라이언트)에 의한 서명된 결과의 더 이후의 검증을 허용할 수 있다. 일부 경우에 있어서는, 서명 개인 키(406)에 의해 암호화된 결과를 서명하는 것은 결과를 암호화하기 위하여 사용된 계약 키(412)와 함께, 암호화된 결과를 암호화하는 것을 포함할 수 있다. 이러한 경우에는, 검증 공개 키(416)를 보유하는 제3자는 먼저 계약 키(412)를 복호화할 수 있고, 결과를 복호화하기 위하여 계약 키(412)를 추가로 이용할 수 있다.
일부 경우에 있어서는, 서비스 TEE(306a)가 블록체인에서 서명된 결과(466)를 저장할 수 있다. 위에서 설명된 바와 같이, 검증 공개 키(416)를 보유하는 제3자는 검사하기 위하여 결과(466)를 복호화하기 위한 키를 사용할 수 있다. 예를 들어, 클라이언트(480)는 (예컨대, 이전에 설명된 바와 같이 인증을 받는) 키 관리 센터(310)로부터 검증 공개 키(416)를 리트리빙(retrieve)할 수 있고, 검증 공개 키(416)를 사용하여 서명된 결과(466)에 액세스할 수 있고 복호화할 수 있다. 클라이언트(480)는 그 다음으로, 스마트 계약에서의 다음 동작이 서비스 TEE(306a)에 의해 실행될 것을 요청할 수 있고, 서비스 TEE(306a)로 전송된 디지털 엔벨로프에서, 요청된 다음 동작 및 (복호화된 서명된 결과(466)로부터의) 스마트 계약의 실행 상태를 포함할 수 있다.
도 5는 본 명세서의 실시형태들에 따라 실행될 수 있는 프로세스의 예를 도시한다. 502에서, 블록체인 네트워크(예컨대, 302)에 참여하는 블록체인 노드(예컨대, 304a)는 복수의 KM TEE과의 상호 입증을 수행하는 것에 기초하여 복수의 KM 노드들에서의 복수의 KM TEE과의 신뢰 관계를 확립하고, 여기서, KM 노드 및 복수의 KM 노드들은 컨소시엄 블록체인 내에 있다.
504에서, 블록체인 노드는 하나 이상의 암호화 키를 KM 노드의 서비스 TEE에 제공하는 것에 대한 컨센서스에 도달하기 위해 복수의 KM TEE과의 컨센서스 프로세스를 개시한다.
506에서, 블록체인 노드는 KM 노드에서의 서비스 TEE와의 로컬 입증 프로세스를 개시한다.
508에서, 블록체인 노드는 로컬 입증 프로세스가 성공적인 것으로 결정한다.
510에서, 블록체인 노드는 하나 이상의 암호화 키를, 컴퓨팅 디바이스 상에서 실행되는 TEE에 제공한다.
일부 경우에 있어서는, 블록체인 노드가 컨소시엄 블록체인에서 암호화 키를 저장하고, 여기서, 컨소시엄 블록체인에 저장된 암호화 키들은 컨소시엄 블록체인에서의 모든 노드들에 의해 액세스가능한 암호화 키들의 컨센서스 버전을 나타낸다.
일부 경우에 있어서는, KM TEE가 제 1 KM TEE이고, 신뢰 관계를 확립하는 것은 제 1 KM TEE가 복수의 KM TEE에서의 제 2 KM TEE 및 제 3 TEE와의 상호 입증 프로세스를 수행하는 것을 포함한다.
일부 경우에 있어서는, KM TEE 및 복수의 KM TEE가 컨소시엄 블록체인의 KM TEE의 세트를 형성하고, 여기서, 신뢰 관계를 확립하는 것은 복수의 KM TEE의 임의의 각각이 KM TEE의 세트 중의 2 개와의 상호 입증 프로세스를 수행하는 것을 더 포함한다.
일부 경우에 있어서는, 신뢰 관계를 확립하는 것은 KM TEE가 복수의 KM TEE의 각각과의 상호 입증을 수행하는 것을 더 포함한다.
일부 경우에 있어서는, 암호화 키들은 KM TEE 및 복수의 KM TEE이 암호화 키들에 대한 컨센서스 프로세스를 성공적으로 수행하는 것에 응답하여 컨소시엄 블록체인에 저장된다.
일부 경우에 있어서는, 컨센서스 프로세스가 실제적인 비잔틴 장애 허용(PBFT) 프로세스이다.
일부 경우에 있어서는, KM TEE가 제 1 KM TEE이고, 암호화 키들은 서비스 TEE와 연관된 TEE 공개 키 및 TEE 개인 키를 포함하고, 제 1 KM TEE 또는 제 2 KM TEE는 컨소시엄 블록체인으로부터 TEE 공개 키를 리트리빙하고, 요청에 응답하여 TEE 공개 키를 클라이언트에 제공한다.
도 6은 본 명세서의 실시형태들에 따라 장치(600)의 모듈들의 예들을 도시한다. 장치(600)는 블록체인 네트워크 내에서 실행되는 블록체인 노드의 일 예의 실시형태일 수 있다. 장치(600)는 위에서 설명된 실시형태들에 대응할 수 있고, 장치(600)는 다음을 포함한다: 복수의 KM TEE과의 상호 입증을 수행하는 것에 기초하여 복수의 KM 노드들에서의 복수의 KM TEE과의 신뢰 관계를 확립하는 확립 모듈(602), 여기서, KM 노드 및 복수의 KM 노드들은 컨소시엄 블록체인 내에 있다. 하나 이상의 암호화 키를 KM 노드의 서비스 TEE에 제공하는 것에 대한 컨센서스에 도달하기 위한 복수의 KM TEE과의 컨센서스 프로세스를 개시하고, KM 노드에서의 서비스 TEE와의 로컬 입증 프로세스를 개시하는 개시 모듈(604). 로컬 입증 프로세스가 성공적인 것으로 결정하는 결정 모듈(606); 및 하나 이상의 암호화 키를, 컴퓨팅 디바이스 상에서 실행되는 TEE에 제공하는 송신 모듈(608).
이전의 실시형태들에서 예시된 시스템, 장치, 모듈, 또는 유닛은 컴퓨터 칩 또는 엔티티를 이용함으로써 구현될 수 있거나, 어떤 기능을 가지는 제품을 이용함으로써 구현될 수 있다. 전형적인 실시형태 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩톱 컴퓨터, 셀룰러 전화, 카메라 전화, 스마트폰, 개인 정보 단말(personal digital assistant), 미디어 플레이어(media player), 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔(game console), 태블릿 컴퓨터, 웨어러블 디바이스, 또는 이 디바이스들의 임의의 조합일 수 있다.
장치에서의 각각의 모듈의 기능들 및 역할들의 실시형태 프로세스에 대하여, 이전의 방법에서의 대응하는 단계들의 실시형태 프로세스에 대해 참조들이 행해질 수 있다. 세부사항들은 간략화를 위하여 여기에서 생략된다.
장치 실시형태는 방법 실시형태에 기본적으로 대응하므로, 관련된 부분들에 대하여, 방법 실시형태에서의 관련된 설명들에 대해 참조들이 행해질 수 있다. 이전에 설명된 장치 실시형태는 단지 예이다. 별도의 부분들로서 설명된 모듈들은 물리적으로 별도일 수도 있거나 아닐 수도 있고, 모듈들로서 디스플레이된 부분들은 물리적 모듈들일 수도 있거나 아닐 수도 있거나, 하나의 포지션에서 위치될 수도 있거나, 다수의 네트워크 모듈들 상에서 분산될 수도 있다. 모듈들의 일부 또는 전부는 명세서의 해결책들의 목적들을 달성하기 위하여 실제적인 요구들에 기초하여 선택될 수 있다. 당해 분야의 당업자는 창조적인 노력들 없이 본 출원의 실시형태들을 이해할 수 있고 구현할 수 있다.
도 6을 다시 참조하면, 그것은 블록체인 네트워크 내에서 실행되고 실행 본체로서 기능하는 블록체인 노드의 내부 기능적인 모듈 및 구조를 예시하는 것으로서 해독될 수 있다. 실행 본체는 본질적으로 전자 디바이스일 수 있고, 전자 디바이스는 다음: 하나 이상의 프로세서; 및 하나 이상의 프로세서의 실행가능 명령어를 저장하도록 구성된 메모리를 포함한다.
본 명세서에서 설명된 기법들은 하나 이상의 기술적 효과를 생성한다. 일부 실시형태들에서, 설명된 기법들은 다수의 노드들이 암호화 키들로 다른 컴퓨팅 디바이스들 상에서 신뢰 실행 환경을 인가하고 구성하기 위하여 분산된 키 관리 센터(KMC)로서 기능하는 것을 가능하게 한다. 일부 경우에 있어서는, 키가 블록체인에 저장되어, 요청된 키들이 요청을 수신하는 노드와는 상이한 노드에 의해 구성되고 저장되었다 하더라도, 다수의 노드들 중의 임의의 것이 다른 컴퓨팅 디바이스들로부터 수신된 암호화 키들에 대한 요청을 서비스하는 것을 허용한다. 일부 예들에서, 다수의 노드들 중의 하나의 고장이 (중앙집중화된 해결책과 달리) 키 관리 서비스에서의 중단을 야기시키지 않을 것이므로, 기법들은 시스템 사용불능에 대한 추가적인 운영 탄력성(operating resiliency)을 또한 제공한다. 일부 실시형태들에서, 공격자가 블록체인에서 암호화 키를 저장하는 것과 연관된 컨센서스 프로세스들로 인해, 시스템을 손상시키기 위하여 모든 키 관리 노드들을 제어해야 할 것이므로, 기법들은 증가된 보안을 제공할 수 있다.
발명 요지의 설명된 실시형태들은 단독으로 또는 조합하여, 하나 이상의 특징을 포함할 수 있다. 하나의 실시형태는 블록체인 네트워크에 참여하는 블록체인 노드에 의해, 클라이언트로부터 스마트 계약 동작을 실행하기 위한 암호화된 요청을 수신하는 액션(action); 요청된 스마트 계약 동작을 생성하기 위하여, 블록체인 노드에 의해 호스팅된 TEE에서의 블록체인 노드에 의해, TEE와 연관된 제 1 개인 키 - 제 1 개인 키는 암호화된 요청을 암호화하기 위하여 사용되었던 TEE와 연관된 공개 키에 대응함 - 로 암호화된 요청을 복호화하는 액션; 스마트 계약 결과를 생성하기 위하여, TEE에서의 블록체인 노드에 의해, 요청된 스마트 계약 동작을 실행하는 액션; 암호화된 결과를 생성하기 위하여, TEE에서의 블록체인 노드에 의해, TEE와 연관된 대칭적 키로 스마트 계약 결과를 암호화하는 액션; 서명된 암호화된 결과를 생성하기 위하여, TEE에서의 블록체인 노드에 의해, TEE와 연관된 제 2 개인 키 - 제 2 개인 키는 제 1 개인 키와는 상이함 - 를 이용하여 암호화된 결과를 서명하는 액션; 및 블록체인 노드에 의해, 블록체인 네트워크에 의해 유지된 블록체인에서, 서명된 암호화된 결과를 저장하는 액션을 포함하는 컴퓨터 구현 방법을 포함한다.
상기한 그리고 다른 설명된 실시형태들은 다음의 특징들 중의 하나 이상을 각각 임의적으로 포함할 수 있다:
다음의 특징들 중의 임의의 것과 조합가능한 제 1 특징은, 블록체인 노드가 컨소시엄 블록체인에서 암호화 키를 저장하고, 여기서, 컨소시엄 블록체인에 저장된 암호화 키들은 컨소시엄 블록체인에서의 모든 노드들에 의해 액세스가능한 암호화 키들의 컨센서스 버전을 표현한다는 것을 특정한다.
이전의 또는 다음의 특징들 중의 임의의 것과 조합가능한 제 2 특징은, KM TEE가 제 1 KM TEE이고, 신뢰 관계를 확립하는 것은 제 1 KM TEE가 복수의 KM TEE에서의 제 2 KM TEE 및 제 3 TEE와의 상호 입증 프로세스를 수행하는 것을 포함한다는 것을 특정한다.
이전의 또는 다음의 특징들 중의 임의의 것과 조합가능한 제 3 특징은, KM TEE 및 복수의 KM TEE가 컨소시엄 블록체인의 KM TEE의 세트를 형성하고, 여기서, 신뢰 관계를 확립하는 것은 복수의 KM TEE의 임의의 각각이 KM TEE의 세트 중의 2 개와의 상호 입증 프로세스를 수행하는 것을 더 포함한다는 것을 포함한다.
이전의 또는 다음의 특징들 중의 임의의 것과 조합가능한 제 4 특징은, 신뢰 관계를 확립하는 것이 KM TEE가 복수의 KM TEE의 각각과의 상호 입증을 수행하는 것을 더 포함한다는 것을 특정한다.
이전의 또는 다음의 특징들 중의 임의의 것과 조합가능한 제 5 특징은, 암호화 키들이 KM TEE 및 복수의 KM TEE이 암호화 키들에 대한 컨센서스 프로세스를 성공적으로 수행하는 것에 응답하여 컨소시엄 블록체인에 저장된다는 것을 특정한다.
이전의 또는 다음의 특징들 중의 임의의 것과 조합가능한 제 6 특징은, 컨센서스 프로세스가 실제적인 비잔틴 장애 허용(PBFT) 프로세스인 것을 특정한다.
이전의 또는 다음의 특징들 중의 임의의 것과 조합가능한 제 7 특징은, KM TEE가 제 1 KM TEE이고, 암호화 키들은 서비스 TEE와 연관된 TEE 공개 키 및 TEE 개인 키를 포함하고, 제 1 KM TEE 또는 제 2 KM TEE는 컨소시엄 블록체인으로부터 TEE 공개 키를 리트리빙하고, 요청에 응답하여 TEE 공개 키를 클라이언트에 제공한다는 것을 특정한다.
본 명세서에서 설명된 발명 요지의 실시형태들 및 액션들 및 동작들은 디지털 전자 회로부로, 유형적으로-구체화된 컴퓨터 소프트웨어 또는 펌웨어로, 본 명세서에서 개시된 구조들 및 그 구조적 등가물들을 포함하는 컴퓨터 하드웨어로, 또는 이들 중의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에서 설명된 발명 요지의 실시형태들은 하나 이상의 컴퓨터 프로그램, 예컨대, 데이터 프로세싱 장치에 의한 실행을 위하여, 또는 데이터 프로세싱 장치의 동작을 제어하기 위하여, 컴퓨터 프로그램 캐리어(computer program carrier) 상에서 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 그 상에서 인코딩되거나 저장된 명령어를 가지는 하나 이상의 컴퓨터-판독가능 저장 매체를 포함할 수 있다. 캐리어는 자기적, 자기 광학적, 또는 광학적 디스크, 솔리드 스테이트 드라이브(solid state drive), 랜덤 액세스 메모리(random access memory; RAM), 판독-전용 메모리(read-only memory; ROM), 또는 다른 유형들의 매체들과 같은 유형의 비-일시적 컴퓨터-판독가능 매체일 수도 있다. 대안적으로 또는 추가적으로, 캐리어는 인공적으로 생성된 전파된 신호, 예컨대, 데이터 프로세싱 장치에 의한 실행을 위하여 적당한 수신기 장치로의 송신을 위한 정보를 인코딩하기 위하여 생성되는 머신-생성된 전기적, 광학적, 또는 전자기적 신호일 수도 있다. 컴퓨터 저장 매체는 컴퓨터-판독가능 저장 디바이스, 머신-판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중의 하나 이상의 조합일 수 있거나, 그 일부일 수 있다. 컴퓨터 저장 매체는 전파된 신호가 아니다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱(app), 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드로서 또한 지칭될 수도 있거나 설명될 수도 있는 컴퓨터 프로그램은 컴파일링된 또는 해독된 언어들, 또는 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있고; 컴퓨터 프로그램은 단독형 프로그램 또는 모듈로서, 컴포넌트, 엔진, 서브루틴, 또는 그 환경이 하나 이상의 위치에서 데이터 통신 네트워크에 의해 상호접속된 하나 이상의 컴퓨터를 포함할 수도 있는 컴퓨팅 환경에서 실행하기 위하여 적당한 다른 유닛을 포함하는 임의의 형태로 전개될 수 있다.
컴퓨터 프로그램은 파일 시스템에서의 파일에 대응할 필요는 없지만, 파일 시스템에서의 파일에 대응할 수도 있다. 컴퓨터 프로그램은 다른 프로그램들 또는 데이터, 예컨대, 마크업 언어 문서에 저장된 하나 이상의 스크립트를 유지하는 파일의 부분에서, 논의 중인 프로그램에 전용인 단일 파일에서, 또는 다수의 조정된 파일, 예컨대, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 부분을 저장하는 파일에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서들은 예로서, 양자의 범용 및 특수-목적 마이크로프로세서들, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 결합된 비-일시적 컴퓨터-판독가능 매체로부터, 실행을 위한 컴퓨터 프로그램의 명령어뿐만 아니라 데이터를 수신할 것이다.
용어 "데이터 프로세싱 장치"는 프로그래밍가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 예로서 포함하는, 데이터를 프로세싱하기 위한 모든 종류들의 장치들, 디바이스들, 및 머신들을 망라한다. 데이터 프로세싱 장치는 특수-목적 로직 회로부, 예컨대, FPGA(field programmable gate array; 필드 프로그래밍가능 게이트 어레이), ASIC(application specific integrated circuit; 애플리케이션 특정 집적 회로), 또는 GPU(graphics processing unit; 그래픽 프로세싱 유닛)를 포함할 수 있다. 장치는 하드웨어에 추가적으로, 컴퓨터 프로그램들을 위한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 오퍼레이팅 시스템, 또는 이들 중의 하나 이상의 조합을 구성하는 코드를 또한 포함할 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작함으로써 그리고 출력을 생성함으로써, 동작들을 수행하기 위한 하나 이상의 컴퓨터 프로그램를 실행하는 하나 이상의 컴퓨터 또는 프로세서에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수-목적 로직 회로부, 예컨대, FPGA, ASIC, 또는 GPU에 의해, 또는 특수-목적 로직 회로부 및 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행을 위하여 적당한 컴퓨터들은 일반 또는 특수-목적 마이크로프로세서 또는 둘 다 모두, 또는 임의의 다른 종류의 중앙 프로세싱 유닛에 기초할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 양자로부터 명령어 및 데이터를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령어를 실행하기 위한 중앙 프로세싱 유닛, 및 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 프로세싱 유닛 및 메모리는 특수-목적 로직 회로부에 의해 보충될 수 있거나, 특수-목적 로직 회로부 내에 편입될 수 있다.
일반적으로, 컴퓨터는 또한, 하나 이상의 저장 디바이스를 포함할 것이거나, 하나 이상의 저장 디바이스로부터 데이터를 수신하거나 데이터를 하나 이상의 저장 디바이스로 전송하기 위하여 동작가능하게 결합될 것이다. 저장 디바이스들은 예를 들어, 자기적, 자기 광학적, 또는 광학적 디스크들, 솔리드 스테이트 드라이브들, 또는 임의의 다른 유형의 비-일시적 컴퓨터-판독가능 매체들일 수 있다. 그러나, 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 이에 따라, 컴퓨터는 로컬 및/또는 원격인, 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 결합될 수도 있다. 예를 들어, 컴퓨터는 컴퓨터의 일체적 컴포넌트들인 하나 이상의 로컬 메모리를 포함할 수 있거나, 컴퓨터는 클라우드 네트워크 내에 있는 하나 이상의 원격 메모리에 결합될 수 있다. 또한, 컴퓨터는 또 다른 디바이스, 예컨대, 몇몇을 거명하면, 이동 전화, 개인 정보 단말(personal digital assistant; PDA), 이동 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(Global Positioning System; GPS) 수신기, 또는 휴대용 저장 디바이스, 예컨대, 유니버셜 직렬 버스(USB) 플래시 드라이브(flash drive)에 내장될 수 있다.
컴포넌트들은 직접적으로 또는 하나 이상의 중간 컴포넌트를 통한 것 중의 어느 하나로, 서로에 전기적으로 또는 광학적으로 접속되는 것과 같이 통신가능하게 됨으로써, 서로에 "결합"될 수 있다. 컴포넌트들은 또한, 컴포넌트들 중의 하나가 다른 것에 통합될 경우에 서로에 "결합"될 수 있다. 예를 들어, 프로세서 내로 통합되는 저장 컴포넌트(예컨대, L2 캐시 컴포넌트)는 프로세서에 "결합"된다.
사용자와의 상호작용을 제공하기 위하여, 본 명세서에서 설명된 발명 요지의 실시형태들은, 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예컨대, LCD(liquid crystal display; 액정 디스플레이) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 입력 디바이스, 예컨대, 키보드 및 포인팅 디바이스(pointing device), 예컨대, 마우스(mouse), 트랙볼(trackball), 또는 터치패드(touchpad)를 가지는 컴퓨터 상에서 구현될 수 있거나, 컴퓨터와 통신하도록 구성될 수 있다. 다른 종류들의 디바이스들은 마찬가지로 사용자와의 상호작용을 제공하기 위하여 사용될 수 있고; 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 센서류 피드백, 예컨대, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가적으로, 컴퓨터는 문서들을 사용자에 의해 이용되는 디바이스로 전송함으로써 그리고 이러한 디바이스로부터 문서들을 수신함으로써; 예를 들어, 웹 브라우저(web browser)로부터 수신된 요청들에 응답하여 웹 페이지들을 사용자의 디바이스 상의 웹 브라우저로 전송함으로써, 또는 사용자 디바이스, 예컨대, 스마트폰 또는 전자 태블릿 상에서 작동하는 앱과 상호작용함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지들 또는 다른 형태들의 메시지들을, 개인용 디바이스, 예컨대, 메시징 애플리케이션을 작동시키고 있는 스마트폰으로 전송함으로써, 반환 시에 사용자로부터 응답 메시지들을 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서는 시스템들, 장치, 및 컴퓨터 프로그램 컴포넌트들과 관련하여 용어 "~하도록 구성된"을 이용한다. 하나 이상의 컴퓨터의 시스템이 특정한 동작들 또는 액션들을 수행하도록 구성되는 것은 시스템이, 동작 시에, 시스템으로 하여금, 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 컴퓨터 상에서 설치한 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정한 동작들 또는 액션들을 수행하도록 구성되는 것은, 하나 이상의 프로그램이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금, 동작들 또는 액션들을 수행하게 하는 명령어를 포함한다는 것을 의미한다. 특수-목적 로직 회로부가 특정한 동작들 또는 액션들을 수행하도록 구성되는 것은 회로부가 동작들 또는 액션들을 수행하는 전자 로직을 가진다는 것을 의미한다.
본 명세서는 많은 특정 실시형태 세부사항들을 포함하지만, 이들은 청구항들 자체에 의해 정의되는, 청구되고 있는 것의 범위에 대한 제한들로서 해석되어야 하는 것이 아니라, 오히려, 특정한 실시형태들에 특정적일 수도 있는 특징들의 설명들로서 해석되어야 한다. 별도의 실시형태들의 맥락에서 본 명세서에서 설명되는 어떤 특징들은 또한, 단일 실시형태에서 조합으로 실현될 수 있다. 반대로, 단일 실시형태들의 맥락에서 설명되는 다양한 특징들은 또한, 다수의 실시형태들에서 별도로 또는 임의의 적당한 하위조합으로 실현될 수 있다. 또한, 특징들은 어떤 조합들로 작동하고 심지어 이와 같이 초기에 청구되는 것으로서 위에서 설명될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 있어서는, 조합으로부터 삭제될 수 있고, 청구항은 하위조합 또는 하위조합의 변형에 관한 것일 수도 있다.
유사하게, 동작들은 특정한 순서로 도면들에서 도시되고 청구항들에서 기재되어 있지만, 이것은 바람직한 결과들을 달성하기 위하여, 이러한 동작들이 도시된 특정한 순서로 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되어야 하는 것은 아니다. 어떤 상황들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수도 있다. 또한, 위에서 설명된 실시형태들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시형태들에서 이러한 분리를 요구하는 것으로서 이해되지 않아야 하고, 설명된 프로그램 컴포넌트들 및 시스템들은 단일 소프트웨어 제품에서 일반적으로 함께 통합될 수 있거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
발명 요지의 특정한 실시형태들이 설명되었다. 다른 실시형태들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에서 기재된 액션들은 상이한 순서로 수행될 수 있고, 바람직한 결과들을 여전히 달성할 수 있다. 하나의 예로서, 동반 도면들에서 도시된 프로세스들은 바람직한 결과들을 달성하기 위하여 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 일부 경우에 있어서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수도 있다.

Claims (10)

  1. 신뢰 실행 환경(trusted execution environment; TEE)의 인증성(authenticity)을 검증하기 위한 컴퓨터 구현 방법(computer-implemented method)에 있어서,
    키 관리(key management; KM) 노드의 키 관리(KM) TEE에 의해, 복수의 KM TEE와의 상호 입증(mutual attestation)을 수행하는 것에 기초하여 복수의 KM 노드에서 복수의 KM TEE와의 신뢰 관계를 확립하는 단계 - 상기 KM 노드 및 상기 복수의 KM 노드는 컨소시엄 블록체인(consortium blockchain) 내에 있음 -;
    상기 KM TEE에 의해, 하나 이상의 암호화 키를 상기 KM 노드의 서비스 TEE에 제공하는 것에 대한 컨센서스(consensus)에 도달하기 위해 상기 복수의 KM TEE와의 컨센서스 프로세스를 개시하는 단계;
    상기 복수의 KM TEE와의 컨센서스에 도달하는 것에 응답하여, 상기 KM TEE에 의해, 상기 KM 노드에서 서비스 TEE와의 로컬 입증 프로세스(local attestation process)를 개시하는 단계;
    상기 KM TEE에 의해, 상기 로컬 입증 프로세스가 성공적인 것으로 결정하는 단계; 및
    상기 로컬 입증 프로세스가 성공적이라는 결정에 응답하여, 상기 KM TEE에 의해, 컴퓨팅 디바이스 상에서 실행되는 상기 TEE에 하나 이상의 암호화 키를 제공하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 KM 노드에 의해, 상기 컨소시엄 블록체인에 상기 암호화 키를 저장하는 단계를 더 포함하고, 상기 컨소시엄 블록체인에 저장된 암호화 키는, 상기 컨소시엄 블록체인 내의 모든 노드에 의해 액세스가능한 암호화 키의 컨센서스 버전을 나타내는, 컴퓨터 구현 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 KM TEE는 제 1 KM TEE이고, 상기 신뢰 관계를 확립하는 단계는, 상기 제 1 KM TEE가 상기 복수의 KM TEE 중의 제 2 KM TEE 및 제 3 TEE와의 상호 입증 프로세스를 수행하는 단계를 포함하는, 컴퓨터 구현 방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 KM TEE 및 상기 복수의 KM TEE는 상기 컨소시엄 블록체인의 KM TEE 세트를 형성하고, 상기 신뢰 관계를 확립하는 단계는, 상기 복수의 KM TEE의 임의의 각각이 상기 KM TEE 세트 중의 2 개의 KM TEE와의 상호 입증 프로세스를 수행하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 신뢰 관계를 확립하는 단계는, 상기 KM TEE가 상기 복수의 KM TEE의 각각과의 상호 입증을 수행하는 단계는 더 포함하는, 컴퓨터 구현 방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 암호화 키는, 상기 KM TEE 및 상기 복수의 KM TEE가 상기 암호화 키에 대한 컨센서스 프로세스를 성공적으로 수행하는 것에 응답하여, 상기 컨소시엄 블록체인에 저장되는, 컴퓨터 구현 방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 컨센서스 프로세스는 실제적인 비잔틴 장애 허용(Practical Byzantine Fault Tolerance; PBFT) 프로세스인, 컴퓨터 구현 방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 KM TEE는 제 1 KM TEE이고, 상기 암호화 키는 상기 서비스 TEE와 연관된 TEE 공개 키(public key) 및 TEE 개인 키(private key)를 포함하고, 상기 제 1 KM TEE 또는 제 2 KM TEE는 상기 컨소시엄 블록체인으로부터 상기 TEE 공개 키를 리트리빙(retrieving)하고, 요청에 응답하여 상기 TEE 공개 키를 클라이언트에 제공하는, 컴퓨터 구현 방법.
  9. 신뢰 실행 환경(TEE)의 인증성을 검증하기 위한 시스템에 있어서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고, 제 1 항 또는 제 2 항에 기재된 컴퓨터 구현 방법을 수행하기 위하여 상기 하나 이상의 프로세서에 의해 실행가능한 명령어를 저장한 하나 이상의 컴퓨터-판독가능 메모리
    를 포함하는, 시스템.
  10. 신뢰 실행 환경(TEE)의 인증성을 검증하기 위한 장치에 있어서,
    상기 장치는 제 1 항 또는 제 2 항에 기재된 컴퓨터 구현 방법을 수행하기 위한 복수의 모듈을 포함하는, 장치.
KR1020197032096A 2019-04-26 2019-04-26 신뢰 실행 환경을 위한 분산 키 관리 KR102194077B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/084530 WO2019137565A2 (en) 2019-04-26 2019-04-26 Distributed key management for trusted execution environments

Publications (2)

Publication Number Publication Date
KR20200126320A KR20200126320A (ko) 2020-11-06
KR102194077B1 true KR102194077B1 (ko) 2020-12-23

Family

ID=67219326

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197032096A KR102194077B1 (ko) 2019-04-26 2019-04-26 신뢰 실행 환경을 위한 분산 키 관리

Country Status (11)

Country Link
US (3) US10715339B1 (ko)
EP (1) EP3643041B1 (ko)
JP (1) JP6869374B2 (ko)
KR (1) KR102194077B1 (ko)
CN (1) CN111095899B (ko)
AU (1) AU2019207312B2 (ko)
CA (1) CA3061268C (ko)
ES (1) ES2872101T3 (ko)
PL (1) PL3643041T3 (ko)
SG (1) SG11201909855YA (ko)
WO (1) WO2019137565A2 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11528258B2 (en) * 2018-11-02 2022-12-13 Intel Corporation System and apparatus for data confidentiality in distributed ledger
US11489672B2 (en) * 2018-11-06 2022-11-01 International Business Machines Corporation Verification of conditions of a blockchain transaction
SG11201909855YA (en) 2019-04-26 2019-11-28 Alibaba Group Holding Ltd Distributed key management for trusted execution environments
CN110971408A (zh) * 2019-12-25 2020-04-07 上海沄界信息科技有限公司 基于区块链网络的tee节点认证方法及认证系统
WO2021186754A1 (ja) * 2020-03-17 2021-09-23 株式会社モールサービス 情報処理システム、情報処理方法、情報処理プログラム、秘密分散システム、秘密分散方法、秘密分散プログラム、秘密計算システム、秘密計算方法、及び、秘密計算プログラム
JP7560708B2 (ja) 2020-03-17 2024-10-03 株式会社Onsitechain 情報処理システム、情報処理方法、情報処理プログラム、秘密計算システム、秘密計算方法、及び、秘密計算プログラム
CN111988141B (zh) * 2020-03-18 2022-08-02 支付宝(杭州)信息技术有限公司 共享集群密钥的方法及装置
CN111614686B (zh) * 2020-05-26 2023-01-17 牛津(海南)区块链研究院有限公司 一种密钥管理方法、控制器及系统
CN111885050B (zh) * 2020-07-21 2022-01-11 腾讯科技(深圳)有限公司 基于区块链网络的数据存储方法、装置、相关设备及介质
CN111881474B (zh) * 2020-07-24 2023-09-15 杭州弦冰科技有限公司 基于可信计算环境的私钥管理方法和装置
CN116340955A (zh) * 2020-07-31 2023-06-27 支付宝(杭州)信息技术有限公司 一种基于区块链的数据处理方法、装置及设备
US11601262B2 (en) * 2020-10-15 2023-03-07 Dell Products L.P. Distributed key management system
CN112231652B (zh) * 2020-10-28 2022-02-22 百度在线网络技术(北京)有限公司 可信环境远程验证方法、装置、设备、系统及介质
CN112448819A (zh) * 2020-11-06 2021-03-05 支付宝(杭州)信息技术有限公司 物联网设备的校验、签名文件的生成方法及装置
US20220198070A1 (en) * 2020-12-22 2022-06-23 International Business Machines Corporation Provisioning secure/encrypted virtual machines in a cloud infrastructure
EP4030803A1 (en) * 2021-01-13 2022-07-20 Tata Consultancy Services Limited Method and system for secure iot device onboarding using a blockchain network
CN113037499B (zh) * 2021-03-15 2024-01-05 杭州链网科技有限公司 一种区块链加密通讯方法及系统
US11416450B1 (en) 2021-03-16 2022-08-16 EMC IP Holding Company LLC Clustering data management entities distributed across a plurality of processing nodes
CN113688394B (zh) * 2021-06-07 2023-08-25 重庆大学 安全可信执行环境下的基于区块链的外包计算系统及方法
US11979484B2 (en) 2021-07-21 2024-05-07 Bank Of America Corporation System for electronic data encryption and decryption using a consensus draft process
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
US12058244B2 (en) 2021-09-09 2024-08-06 International Business Machines Corporation Prevention of race conditions in a dual-server storage system for generation of encryption key
WO2023099895A1 (en) * 2021-12-02 2023-06-08 Royal Holloway University Of London A method and system for securely sharing data
CN113869901B (zh) * 2021-12-02 2022-05-10 腾讯科技(深圳)有限公司 密钥生成方法、装置、计算机可读存储介质及计算机设备
CN114553590B (zh) * 2022-03-17 2023-08-22 抖音视界有限公司 数据传输方法及相关设备
CN114615070B (zh) * 2022-03-21 2024-04-19 中国人民解放军国防科技大学 基于可信执行环境的网络安全事件捕获方法和装置
US20230315880A1 (en) * 2022-03-28 2023-10-05 International Business Machines Corporation Using smart contracts to manage hyper protect database as a service
US12021983B2 (en) * 2022-04-27 2024-06-25 Dell Products L.P. Disaggregated key management in a distributed system
CN114584307B (zh) * 2022-05-07 2022-09-02 腾讯科技(深圳)有限公司 一种可信密钥管理方法、装置、电子设备和存储介质
JP2023168952A (ja) * 2022-05-16 2023-11-29 株式会社日立製作所 データ管理システム及びデータ管理方法
CN114978730B (zh) * 2022-05-27 2023-09-15 深圳铸泰科技有限公司 一种感知态势处物联网安全检测方法及存储介质
CN115134145B (zh) * 2022-06-28 2023-10-20 蚂蚁区块链科技(上海)有限公司 区块链系统中的共识方法、装置、计算设备和计算机可读存储介质
CN115484031B (zh) * 2022-09-13 2024-03-08 山东大学 基于sgx的无可信第三方云存储密文去重方法及系统
KR20240063659A (ko) * 2022-11-03 2024-05-10 삼성전자주식회사 전자 장치 및 전자 장치에서 데이터를 검증하는 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180227275A1 (en) 2017-02-07 2018-08-09 Microsoft Technology Licensing, Llc Establishment of consortium blockchain network
US20180247063A1 (en) 2017-02-24 2018-08-30 Alibaba Group Holding Limited Secure data transactions

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690941B2 (en) * 2011-05-17 2017-06-27 Microsoft Technology Licensing, Llc Policy bound key creation and re-wrap service
US9215249B2 (en) * 2012-09-29 2015-12-15 Intel Corporation Systems and methods for distributed trust computing and key management
US8924727B2 (en) * 2012-10-12 2014-12-30 Intel Corporation Technologies labeling diverse content
US9141769B1 (en) * 2013-02-08 2015-09-22 Amazon Technologies, Inc. Secure transfer and use of secret material in a shared environment
US9118639B2 (en) * 2013-03-14 2015-08-25 Intel Corporation Trusted data processing in the public cloud
WO2015026336A1 (en) * 2013-08-21 2015-02-26 Intel Corporation Processing data privately in the cloud
US9509502B2 (en) * 2014-03-13 2016-11-29 Intel Corporation Symmetric keying and chain of trust
US20160036826A1 (en) * 2014-07-29 2016-02-04 Mcafee, Inc. Secure content packaging using multiple trusted execution environments
US9467296B2 (en) * 2014-08-29 2016-10-11 Intel Corporation Virally distributable trusted messaging
WO2016137224A1 (ko) * 2015-02-24 2016-09-01 엘지전자 주식회사 무선 통신 시스템에서 데이터를 전송하는 방법 및 장치
US10304143B2 (en) * 2016-05-05 2019-05-28 Lance Timothy Kasper Consensus system for manipulation resistant digital record keeping
US9830480B2 (en) * 2015-05-27 2017-11-28 Google Llc Policies for secrets in trusted execution environments
US9842065B2 (en) * 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
CN106454528A (zh) * 2015-08-07 2017-02-22 阿里巴巴集团控股有限公司 基于可信执行环境的业务处理方法和客户端
WO2017066715A1 (en) * 2015-10-14 2017-04-20 Cambridge Blockchain, LLC Systems and methods for managing digital identities
WO2017171165A1 (ko) * 2015-12-14 2017-10-05 (주)코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법
US10063529B2 (en) * 2016-03-28 2018-08-28 Accenture Global Solutions Limited Secure 3D model sharing using distributed ledger
US10521775B2 (en) * 2016-04-18 2019-12-31 R3 Ltd. Secure processing of electronic transactions by a decentralized, distributed ledger system
US11829998B2 (en) * 2016-06-07 2023-11-28 Cornell University Authenticated data feed for blockchains
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
EP3337119B1 (en) * 2016-12-13 2019-09-11 Nxp B.V. Updating and distributing secret keys in a distributed network
US10341116B2 (en) * 2016-12-28 2019-07-02 Intel Corporation Remote attestation with hash-based signatures
US20180183586A1 (en) * 2016-12-28 2018-06-28 Intel Corporation Assigning user identity awareness to a cryptographic key
US11438155B2 (en) * 2017-01-24 2022-09-06 Microsoft Technology Licensing, Llc Key vault enclave
WO2018152519A1 (en) * 2017-02-20 2018-08-23 AlphaPoint Performance of distributed system functions using a trusted execution environment
US10397005B2 (en) * 2017-03-31 2019-08-27 Intel Corporation Using a trusted execution environment as a trusted third party providing privacy for attestation
TWI765019B (zh) * 2017-04-11 2022-05-21 安地卡及巴布達商區塊鏈控股有限公司 區塊鏈上之快速分散式共識
US10742393B2 (en) 2017-04-25 2020-08-11 Microsoft Technology Licensing, Llc Confidentiality in a consortium blockchain network
GB201707168D0 (en) * 2017-05-05 2017-06-21 Nchain Holdings Ltd Computer-implemented system and method
US10671733B2 (en) * 2017-05-19 2020-06-02 International Business Machines Corporation Policy enforcement via peer devices using a blockchain
US10558812B2 (en) * 2017-06-21 2020-02-11 Microsoft Technology Licensing, Llc Mutual authentication with integrity attestation
CN107342858B (zh) * 2017-07-05 2019-09-10 武汉凤链科技有限公司 一种基于可信环境的智能合约保护方法和系统
US10567359B2 (en) * 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
CN107395349A (zh) * 2017-08-16 2017-11-24 深圳国微技术有限公司 一种基于自认证公钥体制的区块链网络密钥分发方法
US10554634B2 (en) * 2017-08-18 2020-02-04 Intel Corporation Techniques for shared private data objects in a trusted execution environment
US10541804B2 (en) * 2017-08-18 2020-01-21 Intel Corporation Techniques for key provisioning in a trusted execution environment
CN107590738A (zh) * 2017-08-24 2018-01-16 阿里巴巴集团控股有限公司 选择共识节点的处理方法、装置及服务器
US10460283B2 (en) * 2017-09-13 2019-10-29 Vijay Madisetti Smart contract optimization for multiparty service or product ordering system
US20190095879A1 (en) * 2017-09-26 2019-03-28 Cornell University Blockchain payment channels with trusted execution environments
CN107623569A (zh) * 2017-09-30 2018-01-23 矩阵元技术(深圳)有限公司 基于秘密共享技术的区块链密钥托管和恢复方法、装置
WO2019075156A1 (en) * 2017-10-11 2019-04-18 Cambridge Blockchain, Inc. SYSTEMS AND METHODS FOR MANAGING RELATIONS BETWEEN DIGITAL IDENTITIES
CN107919954B (zh) * 2017-10-20 2019-05-14 浙江大学 一种基于sgx软件防护扩展指令的区块链用户密钥保护方法和装置
US12126736B2 (en) * 2017-11-03 2024-10-22 Microsoft Technology Licensing, Llc Provisioning trusted execution environment(s) based on chain of trust including platform
US11943368B2 (en) * 2017-11-03 2024-03-26 Microsoft Technology Licensing, Llc Provisioning trusted execution environment based on chain of trust including platform
US20190158275A1 (en) * 2017-11-22 2019-05-23 Michael Beck Digital containers for smart contracts
US11244309B2 (en) * 2017-11-22 2022-02-08 Cornell University Real-time cryptocurrency exchange using trusted hardware
US10735450B2 (en) * 2017-11-30 2020-08-04 Intel Corporation Trust topology selection for distributed transaction processing in computing environments
US11288740B2 (en) * 2017-12-29 2022-03-29 Intel Corporation Securing distributed electronic wallet shares
US11126699B2 (en) * 2018-02-07 2021-09-21 Nec Corporation Replica trusted execution environment: enabling seamless replication of trusted execution environment (TEE)-based enclaves in the cloud
US11218324B2 (en) * 2018-04-05 2022-01-04 Ares Technologies, Inc. Systems and methods authenticating a digitally signed assertion using verified evaluators
US11615060B2 (en) * 2018-04-12 2023-03-28 ISARA Corporation Constructing a multiple entity root of trust
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
US11057366B2 (en) * 2018-08-21 2021-07-06 HYPR Corp. Federated identity management with decentralized computing platforms
US10270770B1 (en) * 2018-08-23 2019-04-23 Xage Security, Inc. Generic computing device attestation and enrollment
US11736271B2 (en) * 2018-09-21 2023-08-22 Nec Corporation Method for signing a new block in a decentralized blockchain consensus network
US10708247B2 (en) 2018-09-27 2020-07-07 Intel Corporation Technologies for providing secure utilization of tenant keys
GB201816837D0 (en) * 2018-10-16 2018-11-28 Microsoft Technology Licensing Llc Database management
CN110115001B (zh) 2018-11-07 2022-07-15 创新先进技术有限公司 促进实用拜占庭容错区块链共识和节点同步
MX2019004671A (es) 2018-11-27 2019-08-21 Alibaba Group Holding Ltd Gestion de claves asimetricas en redes de cadena de bloques de consorcio.
MX2019008597A (es) * 2018-12-13 2019-09-09 Alibaba Group Holding Ltd Servicio de contrato inteligente fuera de cadena basado en ambiente de ejecucion confiable.
US10936723B2 (en) * 2019-03-27 2021-03-02 Intel Corporation Fast and secure protocol to bootstrap a blockchain by restoring the blockchain state using trusted execution environment
SG11201909855YA (en) 2019-04-26 2019-11-28 Alibaba Group Holding Ltd Distributed key management for trusted execution environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180227275A1 (en) 2017-02-07 2018-08-09 Microsoft Technology Licensing, Llc Establishment of consortium blockchain network
US20180247063A1 (en) 2017-02-24 2018-08-30 Alibaba Group Holding Limited Secure data transactions

Also Published As

Publication number Publication date
EP3643041A2 (en) 2020-04-29
ES2872101T3 (es) 2021-11-02
EP3643041A4 (en) 2020-04-29
US20210306164A1 (en) 2021-09-30
EP3643041B1 (en) 2021-03-10
CN111095899B (zh) 2021-12-24
KR20200126320A (ko) 2020-11-06
WO2019137565A2 (en) 2019-07-18
CA3061268C (en) 2020-09-22
CN111095899A (zh) 2020-05-01
SG11201909855YA (en) 2019-11-28
CA3061268A1 (en) 2019-07-18
US11038700B2 (en) 2021-06-15
US10715339B1 (en) 2020-07-14
JP6869374B2 (ja) 2021-05-12
US20200304319A1 (en) 2020-09-24
JP2020524421A (ja) 2020-08-13
AU2019207312B2 (en) 2020-06-25
PL3643041T3 (pl) 2021-09-06
US11356285B2 (en) 2022-06-07
WO2019137565A3 (en) 2020-03-12

Similar Documents

Publication Publication Date Title
KR102194077B1 (ko) 신뢰 실행 환경을 위한 분산 키 관리
KR102263325B1 (ko) 신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법
US11405372B2 (en) Retrieving access data for blockchain networks using highly available trusted execution environments
US10977362B2 (en) Program execution and data proof scheme using multiple key pair signatures

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant