KR102263325B1 - 신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법 - Google Patents

신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법 Download PDF

Info

Publication number
KR102263325B1
KR102263325B1 KR1020197032262A KR20197032262A KR102263325B1 KR 102263325 B1 KR102263325 B1 KR 102263325B1 KR 1020197032262 A KR1020197032262 A KR 1020197032262A KR 20197032262 A KR20197032262 A KR 20197032262A KR 102263325 B1 KR102263325 B1 KR 102263325B1
Authority
KR
South Korea
Prior art keywords
key
tee
private key
request
service
Prior art date
Application number
KR1020197032262A
Other languages
English (en)
Other versions
KR20200126321A (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 KR20200126321A publication Critical patent/KR20200126321A/ko
Application granted granted Critical
Publication of KR102263325B1 publication Critical patent/KR102263325B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using 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/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/0825Key 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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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]
    • 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/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
    • 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/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/3297Cryptographic 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 time stamps, e.g. generation of time stamps
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • 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]
    • 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/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

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

Abstract

신뢰 실행 환경(TEE)에서 스마트 계약 동작들을 안전하게 실행하기 위한, 컴퓨터 저장 매체들 상에 인코딩된 컴퓨터 프로그램들을 포함한, 방법들, 시스템들, 및 장치들이 본 명세서에 개시된다. 방법들 중 하나는 블록체인 네트워크에 참여하는 블록체인 노드에 의해, 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하는 단계―요청은 서비스 TEE와 연관된 공개 키에 의해 암호화됨―; 서비스 TEE와 연관된 제1 개인 키로 요청을 복호화하는 단계―제1 개인 키는 공개 키와 쌍을 이룸―; 요청을 복호화하는 것에 응답하여, 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출하는 단계; 서비스 TEE와 연관된 클라이언트 암호화 키로 실행 결과를 암호화하여 암호화된 결과를 산출하는 단계; 및 TEE와 연관된 제2 개인 키를 사용하여 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출하는 단계를 포함한다.

Description

신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법
본 명세서는 신뢰 실행 환경에서 스마트 계약(smart contract) 동작들을 안전하게 실행하는 것에 관한 것이다.
컨센서스 네트워크들(consensus networks), 및/또는 블록체인 네트워크들(blockchain networks)이라고도 지칭될 수 있는, 분산 원장 시스템들(distributed ledger systems, DLS들)은 참여 엔티티들이 데이터를 안전하게(securely) 그리고 변경할 수 없게(immutably) 저장할 수 있게 해준다. DLS들은 임의의 특정의 사용 사례(user case)를 참조함이 없이 블록체인 네트워크들이라고 흔히 지칭된다. 한 유형의 블록체인 네트워크의 예는, 컨센서스 프로세스(consensus process)를 제어하고 액세스 제어 계층을 포함하는, 선택된 엔티티 그룹을 위해 제공된 컨소시엄 블록체인 네트워크들(consortium blockchain networks)을 포함할 수 있다.
스마트 계약들은 블록체인들 상에서 실행되는 프로그램이다. 스마트 계약은 미리 정의된 규칙들의 세트를 포함하며, 이 규칙들에 따라 그 스마트 계약의 당사자들은 서로 상호작용하기로 합의한다. 스마트 계약의 미리 정의된 규칙들이 충족되면, 스마트 계약에 정의된 합의(agreement)가 자동으로 시행된다. 스마트 계약은보통 변조 방지(tamper resistant)되어 있고, 합의 또는 거래(transaction)의 협상 또는 이행(performance)을 용이하게 하고, 검증하며, 시행한다.
컨소시엄 블록체인 네트워크에서는, 선택된 노드 그룹만이 컨센서스 프로세스를 제어하기 때문에, 공격자는 컨센서스 프로세스에 영향을 미치기 위해 상대적으로 적은 개수의 노드들에 대한 제어권을 확보해야 한다. 컨소시엄 블록체인 네트워크들에서 이러한 유형들의 보안 이슈들을 해결하기 위한 기술들이 제안되었지만, 보다 효과적이고 안전한 솔루션이 유리할 것이다.
본 명세서는 블록체인 노드에 의해 실행되는 신뢰 실행 환경(TEE)에서 요청된 스마트 계약 동작들을 안전하게 실행하기 위한 기술들을 설명한다. 보다 상세하게는, 본 명세서의 실시예들은, 동작들이 실행되는 환경이 변조 또는 손상되지 않았다는 것을 당사자들이 신뢰할 수 있도록, 블록체인 노드가 TEE 내에서 안전하고 검증가능한 방식으로 스마트 계약 동작들을 수행할 수 있게 해준다.
본 명세서는 하나 이상의 프로세서에 커플링되고, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 본 명세서에서 제공된 방법들의 실시예들에 따른 동작들을 수행하게 하는 명령어들이 저장되어 있는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체를 또한 제공한다.
본 명세서는 또한 본 명세서에서 제공된 방법들을 구현하기 위한 시스템을 제공한다. 이 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 커플링되고, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 본 명세서에서 제공된 방법들의 실시예들에 따른 동작들을 수행하게 하는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체를 포함한다.
본 명세서에 따른 방법들이 본 명세서에 설명된 양태들 및 특징들의 임의의 조합을 포함할 수 있다는 것이 이해된다. 즉, 본 명세서에 따른 방법들은 본 명세서에 구체적으로 설명된 양태들 및 특징들의 조합들로 제한되지 않고, 제공된 양태들 및 특징들의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 실시예의 세부사항들이 첨부 도면들 및 아래의 설명에 기재되어 있다. 본 명세서의 다른 특징들 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
도 1은 본 명세서의 실시예들을 실행하는 데 사용될 수 있는 환경의 예를 예시하는 다이어그램이다.
도 2는 본 명세서의 실시예들에 따른 아키텍처의 예를 예시하는 다이어그램이다.
도 3은 본 명세서의 실시예들에 따른 시스템의 예를 예시하는 다이어그램이다.
도 4는 본 명세서의 실시예들에 따른 시스템의 예를 예시하는 다이어그램이다.
도 5는 본 명세서의 실시예들에 따라 실행될 수 있는 프로세스의 예를 묘사하고 있다.
도 6은 본 명세서의 실시예들에 따른 장치의 모듈들의 예들을 묘사하고 있다.
다양한 도면들에서의 유사한 참조 번호들 및 명칭들은 유사한 요소들을 나타낸다.
본 명세서는 블록체인 노드에 의해 실행되는 신뢰 실행 환경(TEE)에서 요청된 스마트 계약 동작들을 안전하게 실행하기 위한 기술들을 설명한다. 보다 상세하게는, 본 명세서의 실시예들은, 동작들이 실행되는 환경이 변조 또는 손상되지 않았다는 것을 당사자들이 신뢰할 수 있도록, 블록체인 노드가 TEE 내에서 안전하고 검증가능한 방식으로 스마트 계약 동작들을 수행할 수 있게 해준다.
본 명세서의 실시예들에 대한 추가의 컨텍스트를 제공하기 위해, 위에서 소개된 바와 같이, 컨센서스 네트워크들(예컨대, 피어-투-피어 노드들로 구성됨) 및 블록체인 네트워크들이라고도 지칭될 수 있는, 분산 원장 시스템들(DLS들)은 참여 엔티티들이 안전하게 그리고 변경할 수 없게 트랜잭션들을 수행하고 데이터를 저장할 수 있게 해준다. 용어 블록체인은 일반적으로 특정의 네트워크들 및/또는 사용 사례들과 연관되어 있지만, 블록체인이 본 명세서에서는 일반적으로 임의의 특정의 사용 사례에 대한 참조 없이 DLS를 지칭하는 데 사용된다.
블록체인은 트랜잭션들이 변경불가능한 방식으로 트랜잭션들을 저장하는 데이터 구조이다. 따라서, 블록체인 상에 기록된 트랜잭션들은 신뢰성 있고 신뢰할 만하다. 블록체인은 하나 이상의 블록을 포함한다. 체인에서의 각각의 블록은 이전 블록의 암호화 해시를 포함함으로써 체인에서 그 바로 앞에 있는 이전 블록에 링크된다. 각각의 블록은 타임스탬프, 그 자신의 암호화 해시, 및 하나 이상의 트랜잭션을 또한 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된, 트랜잭션들은 해싱되어 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프 노드들에 있는 데이터가 해싱되고 트리의 각각의 브랜치에 있는 모든 해시들이 브랜치의 루트에서 연결되는(concatenated) 데이터 구조이다. 이 프로세스는, 트리에서의 모든 데이터를 나타내는 해시를 저장하는, 전체 트리의 루트까지 트리를 계속 올라간다. 트리에 저장된 트랜잭션에 대한 것이라고 주장되는 해시는 그것이 트리의 구조와 부합하는지 여부를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션들을 저장하기 위한 탈중앙화된(decentralized) 또는 적어도 부분적으로 탈중앙화된 데이터 구조인 반면, 블록체인 네트워크는 트랜잭션들 등을 브로드캐스팅, 검증 및 유효성 확인하는 것에 의해 하나 이상의 블록체인을 관리, 업데이트, 및 유지하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개된 바와 같이, 블록체인 네트워크는 퍼블릭 블록체인 네트워크(public blockchain network), 프라이빗 블록체인 네트워크(private blockchain network), 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 본 명세서의 실시예들은 컨소시엄 블록체인 네트워크를 참조하여 본 명세서에서 더욱 상세히 설명된다. 그렇지만, 본 명세서의 실시예들이 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것이 고려된다.
일반적으로, 컨소시엄 블록체인 네트워크는 참여 엔터티들 간에 비공개(private)이다. 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는, 컨센서스 노드들(consensus nodes)이라고 지칭될 수 있는, 인가된 노드 세트에 의해 제어되며, 하나 이상의 컨센서스 노드는 각자의 엔티티(예컨대, 금융 기관, 보험 회사)에 의해 운영된다. 예를 들어, 10개의 엔티티(예컨대, 금융 기관들, 보험 회사들)의 컨소시엄은 컨소시엄 블록체인 네트워크를 운영할 수 있으며, 이들 각각은 컨소시엄 블록체인 네트워크에서의 적어도 하나의 노드를 운영한다.
일부 예들에서, 컨소시엄 블록체인 네트워크 내에서, 모든 노드들에 걸쳐 복제되는 블록체인으로서 글로벌 블록체인(global blockchain)이 제공된다. 즉, 모든 컨센서스 노드들은 글로벌 블록체인과 관련하여 완벽한 상태 컨센서스(state consensus)에 있다. 컨센서스(예컨대, 블록체인에 블록을 추가하는 것에 대한 합의)를 달성하기 위해, 컨소시엄 블록체인 네트워크 내에서 컨센서스 프로토콜이 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는, 아래에서 더욱 상세히 설명되는, PBFT(practical Byzantine fault tolerance) 컨센서스를 구현할 수 있다.
도 1은 본 명세서의 실시예들을 실행하는 데 사용될 수 있는 환경(100)의 예를 예시하는 다이어그램이다. 일부 예들에서, 예시적인 환경(100)은 엔티티들이 컨소시엄 블록체인 네트워크(102)에 참여할 수 있게 해준다. 예시적인 환경(100)은 컴퓨팅 디바이스들(106, 108), 및 네트워크(110)를 포함한다. 일부 예들에서, 네트워크(110)는 LAN(local area network), WAN(wide area network), 인터넷, 또는 이들의 조합을 포함하고, 웹 사이트들, 사용자 디바이스들(예컨대, 컴퓨팅 디바이스들), 및 백엔드 시스템들을 접속시킨다. 일부 예들에서, 네트워크(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)은 프로토콜(예컨대, HTTPS(hypertext transfer protocol secure))을 사용하여 네트워크(예컨대, 도 1의 네트워크(110))를 통해 각자의 인터페이스(210)와 통신한다. 일부 예들에서, 각각의 인터페이스(210)는 각자의 트랜잭션 관리 시스템(208)과 블록체인 네트워크 계층(206) 사이의 통신 접속을 제공한다. 보다 상세하게는, 인터페이스(210)는 블록체인 네트워크 계층(206)의 블록체인 네트워크(212)와 통신한다. 일부 예들에서, 인터페이스(210)와 블록체인 네트워크 계층(206) 사이의 통신은 RPC들(remote procedure calls)을 사용하여 수행된다. 일부 예들에서, 인터페이스들(210)은 각자의 트랜잭션 관리 시스템들(208)에 대한 "호스트" 블록체인 네트워크 노드들을 "호스팅"한다. 예를 들어, 인터페이스들(210)은 블록체인 네트워크(212)에 대한 액세스를 위한 API(application programming interface)를 제공한다.
본 명세서에 설명된 바와 같이, 블록체인 네트워크(212)는 블록체인(216)에 정보를 변경할 수 없게 기록하는 복수의 노드들(214)을 포함하는 피어-투-피어 네트워크로서 제공된다. 단일 블록체인(216)이 개략적으로 묘사되어 있지만, 블록체인(216)의 다수의 사본들이 제공되고, 블록체인 네트워크(212)에 걸쳐 유지된다. 예를 들어, 각각의 노드(214)는 블록체인의 사본을 저장한다. 일부 실시예들에서, 블록체인(216)은 컨소시엄 블록체인 네트워크에 참여하는 2개 이상의 엔티티 사이에서 수행되는 트랜잭션들과 연관된 정보를 저장한다.
블록체인(예컨대, 도 2의 블록체인(216))은 블록들의 체인으로 구성되며, 각각의 블록은 데이터를 저장한다. 예시적인 데이터는 2명 이상의 참여자 간의 트랜잭션을 나타내는 트랜잭션 데이터를 포함한다. 본 명세서에서 비제한적인 예로서 트랜잭션들이 사용되지만, 블록체인에 임의의 적절한 데이터(예컨대, 문서들, 이미지들, 비디오들, 오디오)이 저장될 수 있는 것이 고려된다. 예시적인 트랜잭션들은 가치있는 무언가(예컨대, 자산들, 제품들, 서비스들, 화폐)의 교환들을, 제한없이, 포함할 수 있다. 트랜잭션 데이터는 블록체인 내에 변경할 수 없게 저장된다. 즉, 트랜잭션 데이터는 변경될 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터는 해싱된다. 해싱은 트랜잭션 데이터(스트링 데이터로서 제공됨)를 고정 길이 해시 값(역시 스트링 데이터로서 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위해 해시 값을 역해싱(un-hash)하는 것이 가능하지 않다. 해싱은 트랜잭션 데이터의 약간의 변화조차도 완전히 상이한 해시 값을 결과하도록 보장한다. 게다가, 위에서 언급된 바와 같이, 해시 값은 고정 길이이다. 즉, 트랜잭션 데이터의 크기에 관계없이, 해시 값의 길이는 고정되어 있다. 해싱은 해시 함수를 통해 트랜잭션 데이터를 프로세싱하여 해시 값을 생성하는 것을 포함한다. 해시 함수의 예는, 256-비트 해시 값들을 출력하는, SHA(secure hash algorithm)-256을, 제한없이, 포함한다.
다수의 트랜잭션들의 트랜잭션 데이터는 해싱되어 블록에 저장된다. 예를 들어, 2개의 트랜잭션의 해시 값들이 제공되고, 이들 자체가 해싱되어 다른 해시를 제공한다. 블록에 저장될 모든 트랜잭션들에 대해, 단일 해시 값이 제공될 때까지, 이 프로세스가 반복된다. 이 해시 값은 머클 루트 해시(Merkle root hash)라고 지칭되며, 블록의 헤더에 저장된다. 트랜잭션들 중 임의의 것의 변화는 그의 해시 값의 변화, 궁극적으로 머클 루트 해시의 변화를 결과할 것이다.
블록들은 컨센서스 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 다수의 노드들은 컨센서스 프로토콜에 참여하고, 블록을 블록체인에 추가하기 위한 작업을 수행한다. 그러한 노드들은 컨센서스 노드들이라고 지칭된다. 위에서 소개된 PBFT는 컨센서스 프로토콜의 비제한적인 예로서 사용된다. 컨센서스 노드들은 컨센서스 프로토콜을 실행하여 트랜잭션들을 블록체인에 추가하고, 블록체인 네트워크의 전반적인 상태(overall state)를 업데이트한다.
더욱 상세하게는, 컨센서스 노드는 블록 헤더를 생성하고, 블록 내의 트랜잭션들 전부를 해싱하며, 블록 내의 모든 트랜잭션들에 대해 단일 해시 값이 제공될 때까지 해시 값을 쌍으로(in pairs) 결합시켜 추가의 해시 값들을 생성한다(머클 루트 해시). 이 해시는 블록 헤더에 추가된다. 컨센서스 노드들은 블록체인에서의 가장 최근의 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 또한 결정한다. 컨센서스 노드는 넌스 값(nonce value) 및 타임스탬프를 블록 헤더에 또한 추가한다.
일반적으로, PBFT는 비잔틴 장애들(Byzantine faults)(예컨대, 오작동 노드들, 악성 노드들)를 허용하는(tolerates) 실용적인 비잔틴 상태 머신 복제(practical Byzantine state machine replication)를 제공한다. 이것은 장애들이 발생할 것이라고 가정하는 것(예컨대, 독립적인 노드 고장들, 및/또는 컨센서스 노드들에 의해 송신된 조작된 메시지들의 존재를 가정하는 것)에 의해 PBFT에서 달성된다. PBFT에서, 컨센서스 노드들은 프라이머리 컨센서스 노드(primary consensus node) 및 백업 컨센서스 노드들(backup consensus nodes)을 포함하는 시퀀스로 제공된다. 프라이머리 컨센서스 노드는 주기적으로 변경된다. 트랜잭션들은 블록체인 네트워크 내의 컨센서스 노드들이 블록체인 네트워크의 월드 상태(world state)에 관한 합의에 도달하는 것에 의해 블록체인에 추가된다. 이 프로세스에서, 메시지들이 컨센서스 노드들 사이에서 전송되며, 각각의 컨센서스 노드는 메시지가 특정된 피어 노드로부터 수신된다는 것을 입증하고, 전송 동안 메시지가 수정되지 않았다는 것을 검증한다.
PBFT에서, 모든 컨센서스 노드들이 동일한 상태에서 시작되는 다수의 페이즈들(phases)에서 컨센서스 프로토콜이 제공된다. 처음에, 클라이언트는 서비스 동작(service operation)을 호출(예컨대, 블록체인 네트워크 내에서 트랜잭션을 실행)하라는 요청을 프라이머리 컨센서스 노드에 송신한다. 요청을 수신하는 것에 응답하여, 프라이머리 컨센서스 노드는 요청을 백업 컨센서스 노드들에 멀티캐스팅한다. 백업 컨센서스 노드들은 요청을 실행하고, 각각은 응답(reply)을 클라이언트에 송신한다. 클라이언트는 임계 개수의 응답들이 수신될 때까지 기다린다. 일부 예들에서, 클라이언트는 f+1개의 응답이 수신되기를 기다리며, 여기서 f는 블록체인 네트워크 내에서 허용될 수 있는 장애 있는 컨센서스 노드들의 최대 개수이다. 최종 결과는 충분한 개수의 컨센서스 노드들이 블록체인에 추가되어야 하는 레코드의 순서에 대한 합의에 도달하고, 레코드가 수락되거나 거부되는 것이다.
일부 블록체인 네트워크들에서, 트랜잭션들의 프라이버시를 유지하기 위해 암호화가 구현된다. 예를 들어, 2개의 노드가, 블록체인 네트워크 내의 다른 노드들이 트랜잭션의 세부사항들을 알 수 없도록, 트랜잭션을 비공개로 유지하기를 원하는 경우, 이 노드들은 트랜잭션 데이터를 암호화할 수 있다. 예시적인 암호화는 대칭 암호화 및 비대칭 암호화를, 제한 없이, 포함한다. 대칭 암호화는 암호화(평문(plaintext)으로부터 암호문(ciphertext)을 생성하는 것) 및 복호화(암호문으로부터 평문을 생성하는 것) 둘 다를 위해 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서는, 동일한 키가 다수의 노드들에 이용가능하며, 따라서 각각의 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 각각이 개인 키(private key) 및 공개 키(public key)를 포함하는 키 쌍들(keys pairs)을 사용하는데, 개인 키는 각자의 노드에만 알려져 있고, 공개 키는 블록체인 네트워크 내의 임의의 또는 모든 다른 노드들에 알려져 있다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있고, 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화될 수 있다. 예를 들어, 도 2를 또다시 참조하면, 참여자 A는 참여자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참여자 B에 송신할 수 있다. 참여자 B는 자신의 개인 키를 사용하여, 암호화된 데이터(암호문)를 복호화하여 원래 데이터(평문)를 추출할 수 있다. 노드의 공개 키로 암호화된 메시지들은 노드의 개인 키를 사용해서만 복호화될 수 있다.
비대칭 암호화는 디지털 서명들을 제공하는 데 사용되며, 이는 트랜잭션의 참여자들이 트랜잭션의 다른 참여자들은 물론 트랜잭션의 유효성을 확인할 수 있게 해준다. 예를 들어, 노드는 메시지에 디지털적으로 서명할 수 있고, 다른 노드는 참여자 A의 디지털 서명에 기초하여 메시지가 그 노드에 의해 송신되었음을 확인할 수 있다. 디지털 서명들은 메시지들이 전송 중에(in transit) 변조되지 않도록 보장하는 데 또한 사용될 수 있다. 예를 들어, 도 2를 또다시 참조하면, 참여자 A는 메시지를 참여자 B에 송신하려고 한다. 참여자 A는, 디지털 서명을 암호화된 해시로서 제공하기 위해, 메시지의 해시를 생성하고, 이어서, 자신의 개인 키를 사용하여, 해시를 암호화한다. 참여자 A는 디지털 서명을 메시지에 어펜딩하고(appends), 디지털 서명을 갖는 메시지를 참여자 B에 송신한다. 참여자 B는 참여자 A의 공개 키를 사용하여 디지털 서명을 복호화하고, 해시를 추출한다. 참여자 B는 메시지를 해싱하고 해시들을 비교한다. 해시들이 동일하면, 참여자 B는 그 메시지가 실제로 참여자 A로부터 왔으며 변조되지 않았다는 것을 확인할 수 있다.
일부 실시예들에서, 블록체인 네트워크의 노드들, 및/또는 블록체인 네트워크와 통신하는 노드들은 TEE들을 사용하여 동작할 수 있다. 하이 레벨에서, TEE는 하드웨어의 운영 환경(예컨대, 운영 체제(OS), 기본 입/출력 시스템(BIOS))으로부터 격리된 하드웨어(하나 이상의 프로세서, 메모리) 내의 신뢰할 수 있는 환경이다. 더욱 상세하게는, TEE는 메인 프로세서 내의 실행 중인 코드 및 로딩된 데이터의 기밀성과 무결성을 보장하는 프로세서의 별개의 보안 구역(secure area)이다. 프로세서 내에서, TEE는 OS와 병렬로 실행된다. 소위 신뢰할 수 있는 애플리케이션들(TA들)의 적어도 부분들은 TEE 내에서 실행되며, 프로세서 및 메모리에 액세스할 수 있다. TEE를 통해, TA들은 메인 OS(main OS)에서 실행되는 다른 애플리케이션들로부터 보호된다. 게다가, TEE는 TEE 내에서 TA들을 서로 암호적으로 격리시킨다.
TEE의 예는 미국 캘리포니아주 산타 클라라의 Intel Corporation에 의해 제공되는 SGX(Software Guard Extensions)를 포함한다. SGX가 본 명세서에서 예로서 논의되지만, 본 명세서의 실시예들이 임의의 적절한 TEE를 사용하여 실현될 수 있는 것이 고려된다.
SGX는 하드웨어 기반 TEE를 제공한다. SGX에서, 신뢰할 수 있는 하드웨어는 중앙 프로세싱 유닛(CPU)의 다이이고, 물리 메모리의 일 부분은 선택된 코드 및 데이터를 보호하기 위해 격리된다. 메모리의 격리된 부분들은 엔클레이브들(enclaves)이라고 지칭된다. 보다 상세하게는, 엔클레이브는 메모리에서 엔클레이브 페이지 캐시(enclave page cache, EPC)로서 제공되고 애플리케이션 어드레스 공간에 매핑된다. 메모리(예컨대, DRAM)는 SGX를 위한 보존된 랜덤 메모리(preserved random memory, PRM)를 포함한다. PRM은 최하위 BIOS 레벨에 있는 연속 메모리 공간이며 어떠한 소프트웨어에 의해서도 액세스될 수 없다. 각각의 EPC는 애플리케이션 데이터 및 코드를 PRM에 로딩하기 위해 OS에 의해 할당되는 메모리 세트(예컨대, 4 KB)이다. EPC 메타데이터(EPC metadata, EPCM)는 각자의 EPC들에 대한 엔트리 어드레스(entry address)이며 각각의 EPC는 하나의 엔클레이브에 의해서만 공유될 수 있다. 즉, 단일 엔클레이브는 다수의 EPC들을 사용할 수 있는 반면, EPC는 단일 엔클레이브에 전용되어 있다.
TA의 실행 동안, 프로세서는 엔클레이브에 저장된 데이터에 액세스할 때 소위 엔클레이브 모드로 동작한다. 엔클레이브 모드에서의 동작은 각각의 메모리 액세스에 대해 추가 하드웨어 체크(extra hardware check)를 시행한다. SGX에서, TA는 신뢰할 수 있는 부분(trusted portion)과 신뢰할 수 없는 부분(untrusted portion)으로 컴파일된다. 신뢰할 수 있는 부분은, 예를 들어, OS, BIOS, 권한있는 시스템 코드(privileged system code), 가상 머신 관리자(virtual machine manager, VMM), 시스템 관리 모드(system management mode, SMM), 및 이와 유사한 것에 의해 액세스가능하지 않다. 동작 중에, TA는 실행되어 메모리의 PRM 내에 엔클레이브를 생성한다. 엔클레이브 내에서 신뢰할 수 있는 부분에 의해 실행되는 신뢰할 수 있는 기능(trusted function)이 신뢰할 수 없는 부분에 의해 호출되고, 엔클레이브 내에서 실행되는 코드는 데이터를 평문 데이터(암호화되지 않음)로 보고, 데이터에 대한 외부 액세스가 거부된다. 신뢰할 수 있는 부분은 호출에 대한 암호화된 응답을 제공하고, TA는 계속 실행된다.
예상된 코드(예컨대, TA의 신뢰할 수 있는 부분)가 SGX-제공 TEE 내에서 안전하게 실행되고 있는다는 것을 검증하기 위해 증명 프로세스(attestation process)가 수행될 수 있다. 일반적으로, 증명 프로세스는 TA가 챌린저(challenger)(예컨대, 블록체인 네트워크 내의 다른 노드, 블록체인 네트워크의 키 관리 시스템(key management system, KMS))로부터 증명 요청을 수신하는 것을 포함한다. 그에 응답하여, TA는 자신의 엔클레이브에, 쿼트(quote)라고도 지칭되는, 원격 증명(remote-attestation)을 산출(produce)하도록 요청한다. 원격 증명을 산출하는 것은 로컬 증명이 엔클레이브로부터 소위 쿼팅 엔클레이브(quoting enclave)로 송신하는 것을 포함하며, 쿼팅 엔클레이브는 로컬 증명을 검증하고, 비대칭 증명 키를 사용하여 로컬 증명에 서명하는 것에 의해 로컬 증명을 원격 증명으로 변환한다. 원격 증명(쿼트)은 챌린저(예컨대, 블록체인 네트워크의 KMS)에 제공된다.
챌린저는 증명 검증 서비스를 사용하여 원격 증명을 검증한다. SGX의 경우, 인텔은, 챌린저로부터 원격 증명을 수신하고 원격 증명을 검증하는, 인텔 증명 서비스(Intel Attestation Service, IAS)를 제공한다. 보다 상세하게는, IAS는 원격 증명을 프로세싱하고, 원격 증명이 검증되었는지를 지시하는 보고서(예컨대, 증명 검증 보고서(attestation verification report, AVR))를 제공한다. 검증되지 않았으면, 에러가 지시될 수 있다. 검증되었으면(예상된 코드가 TEE에서 안전하게 실행되고 있으면), 챌린저는 TA와 상호작용들을 시작하거나, 계속할 수 있다. 예를 들어, 검증에 응답하여, (챌린저로서의) KMS는, 노드가 다른 노드들 및/또는 클라이언트들과 안전하게 통신할 수 있게 해주기 위해, (예컨대, ECDH(elliptical curve Diffie-Hellman)와 같은, 키 교환 프로세스를 통해) TEE를 실행하는 노드에 비대칭 암호화 키들(예컨대, 공개 키 및 개인 키 쌍)을 발행할 수 있다.
일부 블록체인 네트워크들에서는, 소위 스마트 계약들이 실행될 수 있다. 스마트 계약들은 다양한 당사자들에 영향을 미치는 계약 조건(contractual terms)을 갖는 현실 세계의 법적 계약들의 디지털 표현들이라고 설명될 수 있다. 스마트 계약은, 예시적인 맥락에서, 컨소시엄 블록체인 네트워크 내에서 구현, 저장, 업데이트(필요에 따라), 및 실행된다. 스마트 계약과 연관된 계약 당사자들(예컨대, 구매자들 및 판매자들)은 컨소시엄 블록체인 네트워크에서 노드들로서 표현된다. 일부 예들에서, 계약 당사자들은 (예컨대, 스마트 계약의 당사자들로서) 스마트 계약과 연관된 엔티티들(예컨대, 비즈니스 기업들)을 포함할 수 있다.
더욱 상세하게는, 스마트 계약들은 블록체인들(예컨대, 블록체인 네트워크 내의 노드) 상에서 실행되는 컴퓨터 실행가능 프로그램들로서 제공된다. 스마트 계약은 미리 정의된 규칙들의 세트를 포함하며, 이 규칙들에 따라 그 스마트 계약의 당사자들은 서로 상호작용하기로 합의한다. 스마트 계약의 미리 정의된 규칙들이 충족되면, 스마트 계약에 정의된 합의가 자동으로 시행된다. 스마트 계약은 보통 변조 방지되어 있고, 합의 또는 거래의 협상 또는 이행을 용이하게 하고, 검증하며, 시행한다.
도 3은 본 명세서의 실시예들에 따른 시스템(300)의 예를 예시하는 다이어그램이다. 도시된 바와 같이, 시스템(300)은 블록체인 노드들(304a 내지 304d)을 포함하는 블록체인 네트워크(302)를 포함한다. 블록체인 노드들(304a 내지 304d)은 서비스 TEE들(306a 내지 306d) 및 키 관리(KM) TEE들(308a 내지 308d)을 포함한다. 노드들(304a 내지 304d)은 스마트 계약 서비스 로직(330)에 액세스할 수 있다. 키 관리 센터(310)는 노드들(304a 내지 304d)에 통신가능하게 커플링된다.
노드들(304a 내지 304d) 각각은 블록체인 네트워크(302)에 참여하고 블록체인 네트워크(302)와 연관된 블록체인(도시되지 않음)의 유지에 기여하는 블록체인 노드이다. 위에서 설명된 바와 같이, 노드들(304a 내지 304d)은 블록체인 네트워크(302)와 연관된 컨센서스 프로세스에 참여할 수 있고, 블록체인에 추가하기 위해 트랜잭션들을 블록들 내에 수집할 수 있으며, 블록체인 네트워크(302)의 사용자들에 의해 요청된 트랜잭션들을 프로세싱할 수 있고, 스마트 계약들에 인코딩된 동작들을 실행할 수 있으며, 블록체인의 관리에 관련된 다른 태스크들을 수행할 수 있다. 일부 실시예들에서, 각각의 노드는 하나 이상의 프로세서, 저장 디바이스, 및 다른 컴포넌트를 포함하는 컴퓨팅 디바이스(예컨대, 서버)일 수 있다. 일부 경우들에서, 노드들(304a 내지 304d)은 서로 그리고 블록체인 네트워크(302)에 참여하는 다른 노드들과 통신 네트워크(도시되지 않음)를 통해 통신한다. 도 3의 나머지 설명에서, 노드들(304b 내지 304d)이 노드(304a)의 특징들을 또한 포함할 수 있다는 이해 하에, 노드(304a)가 예로서 설명될 것이다.
노드(304a)는 서비스 TEE(306a)를 포함한다. 일부 실시예들에서, 서비스 TEE(306a)는 TEE 기술(예컨대, Intel SGX)을 사용하여 구현된 보안 애플리케이션 환경이다. 하나 이상의 소프트웨어 프로그램 또는 라이브러리는 서비스 TEE(306a)에 의해 실행될 수 있다. 본 명세서의 목적들을 위해, 서비스 TEE(306a)는 보안 환경(TEE)은 물론 설명된 동작들을 수행하는 TEE 내부에서 실행되는 소프트웨어를 지칭한다. 일부 실시예들에서, 서비스 TEE(306a)는 암호화된 클라이언트 요청들에 의해 지정된 스마트 계약 동작들을 실행하고 스마트 계약 동작들과 연관된 암호화된 결과들을 출력한다. 이 기능은 아래에서 도 4와 관련하여 보다 상세히 설명된다.
노드(304a)는 키 관리 TEE(KM TEE)(308a)를 또한 포함한다. 일부 실시예들에서, KM TEE(308a)는 TEE 기술(예컨대, Intel SGX)을 사용하여 구현된 보안 애플리케이션 환경이다. 하나 이상의 소프트웨어 프로그램 또는 라이브러리는 KM TEE(308a)에 의해 실행될 수 있다. 본 명세서의 목적들을 위해, KM TEE(308a)는 보안 환경(TEE)은 물론 설명된 동작들을 수행하는 TEE 내부에서 실행되는 소프트웨어를 지칭한다. 일부 실시예들에서, KM TEE(308a)는 아래에서 도 4와 관련하여 보다 상세히 설명되는 바와 같이 키 관리 센터(310)로부터 암호화 키들을 획득한다.
키 관리 센터(310)는 암호화 키들을 생성, 저장, 및 유지할 수 있다. 키 관리 센터(310)는 또한 KM TEE들(308a 내지 308d)의 아이덴티티들을 인증하고 원격 증명 및 키 배포 프로세스(320)를 통해 암호화 키들을 노드들(304a 내지 304d)에 제공할 수 있다. 일부 실시예들에서, 키 관리는 노드들(304a 내지 304d)과 상호작용하는 것을 위해 암호화 키들을 클라이언트들에 추가로 제공할 수 있다. 이 기능은 아래에서 도 4와 관련하여 보다 상세히 설명된다. 일부 실시예들에서, 키 관리 센터(310)는 통신 네트워크(도시되지 않음)를 통해 블록체인 네트워크(302)의 하나 이상의 노드와 통신하는 하나 이상의 서버 또는 다른 컴퓨팅 디바이스일 수 있다. 키 관리 센터(310)는 키 관리 센터(310)에 커플링되는 또는 암호화 키들 및 다른 데이터를 저장하기 위해 통신 네트워크를 통해 액세스가능한 하나 이상의 저장 디바이스를 또한 포함할 수 있다.
일부 경우들에서, 키 관리 센터(310)는 암호화 키 배포(encryption key deployment)을 수행하기 전에 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)에 의한 하나 이상의 요청에 응답하여 키들을 제공할 수 있다.
스마트 계약 서비스 로직(330)은 하나 이상의 스마트 계약 정의를 포함한다. 노드들(304a 내지 304d)은 (예컨대, 도 4에 도시된 바와 같이, 클라이언트의 요청 시에) 스마트 계약 서비스 로직(330)으로부터의 특정의 동작들을 실행한다. 일부 실시예들에서, 스마트 계약 서비스 로직(330) 내의 스마트 계약 정의들은 블록체인 네트워크(302)의 노드들에 의해 실행될 명령어들을 포함한다. 스마트 계약 서비스 로직(330)은 블록체인 네트워크(302)에 의해 유지되는 하나 이상의 블록체인(도시되지 않음)에 저장된 스마트 계약 정의들을 포함할 수 있다.
도 4는 본 명세서의 구현들에 따른 시스템(400)의 예를 예시하는 다이어그램이다. 도시된 바와 같이, 시스템(400)은 노드(304a)(서비스 TEE(306a) 및 KM TEE(308a)를 포함함), 및 도 3과 관련하여 설명된 키 관리 센터(310)를 포함한다. 시스템(400)은 키 관리 센터(310)에 통신가능하게 커플링된 클라이언트(480)를 또한 포함한다.
동작 중에, 시스템(400)은 (예컨대, 블록체인에 포함시키기 위해) 스마트 계약 명령어들을 안전하게 실행하고 동작의 암호화된 결과들을 산출할 수 있다. 위에서 논의된 바와 같이, 키 관리 센터(310)는 암호화 키들을 이용하여 KM TEE(308a)를 신뢰하기 전에 KM TEE(308a)의 아이덴티티를 인증하기 위해 원격 증명을 수행할 수 있다. KM TEE(308)가 인증된 후에, 키 관리 센터(310)는 언실 개인 키(unseal private key)(402), 루트 키(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)는 이러한 결정을 하기 위해 내부 또는 외부 허가(permissions) 리소스를 조회할 수 있다. 실 공개 키(414)는 KM TEE(308a)에 제공되는 언실 개인 키(402)와 연관된다. 실 공개 키(414)와 언실 개인 키(402)는 키 쌍을 형성하는데, 이는 실 공개 키(414)로 암호화된 데이터가 언실 개인 키(402)를 사용하여 복호화될 수 있다는 것을 의미한다.
클라이언트(480)는, 서비스 TEE(306a)에 배포된 이더리움(Ethereum) 가상 머신(VM)(460)에 의해 실행될 스마트 계약 동작인, 요청된 계약 동작(450)을 식별한다. 일부 경우들에서, 스마트 계약 동작들(450)은 스마트 계약 프로그래밍 언어로 된 명령어를 실행하도록 동작가능한 VM에 의해 실행하기 위해 그 언어로 인코딩된 하나 이상의 명령어를 포함한다. 스마트 계약 동작들(450)은 요청된 계약 동작(450)과 연관된 스마트 계약에 대한 실행 상태를 포함할 수 있다. 스마트 계약의 실행 동안, 블록체인 네트워크의 다수의 노드들은 스마트 계약의 각각의 명령어를 개별적으로 실행하고, 명령어의 완료 후에 스마트 계약에 대한 실행 상태를 지시하는 결과를 산출한다. 실행 상태는 스마트 계약과 연관된 데이터를 포함할 수 있다. 이 계약의 각각의 실행된 명령어는 (예컨대, 스마트 계약에서의 추후의 명령어에 의해 사용될 값을 저장하기 위해) 데이터의 내용을 변경할 수 있다. 스마트 계약의 명령어의 실행 이후에, 블록체인 네트워크의 노드는 명령어의 실행 이후의 새로운 실행 상태에 대한 컨센서스에 도달한다. 이러한 컨센서스 프로세스는 스마트 계약에서 실행되는 각각의 명령어에 대해 수행되어, 스마트 계약의 실행 경로에 관한, 궁극적으로는 실행의 최종 결과에 관한 컨센서스에 이른다.
452에서, 클라이언트(480)는 노드(304a)에 의해 실행되는 서비스 TEE(306a)에 전송하기 위해 요청된 계약 동작(450)을 디지털 엔벨로프(digital envelope)(454)로 인코딩(또는 실링)한다. 예를 들어, 클라이언트(480)는 임시 대칭 키(408)를 생성하고 키(408)를 사용하여 요청된 계약 동작(450)을 암호화한다. 클라이언트(480)는 이어서 실 공개 키(414)를 사용하여 임시 대칭 키(408)를 암호화하고, 암호화된 계약 동작(450)과 암호화 키(408)를 연결시켜(concatenates) 디지털 엔벨로프(454)를 산출한다.
클라이언트(480)는 디지털 엔벨로프(454)를 노드(304a)에 전송하고, 여기서 디지털 엔벨로프(454)는 서비스 TEE(306a)에 제공된다. 일부 경우들에서, 클라이언트(480)는 요청된 계약 동작(450)의 프로세싱을 요청하기 위해 디지털 엔벨로프(454)를 다수의 노드들(304a 내지 304d)에 송신할 수 있다. 일부 경우들에서, 클라이언트(480)는 특정의 노드들에 특정적인 실 공개 키들을 사용하여 생성된 디지털 엔벨로프들을 송신할 수 있다. 동일한 실 공개 키(414) 및 언실 개인 키(402)가 모든 노드들(304a 내지 304d)과 연관되는 경우들에서 클라이언트(480)는 디지털 엔벨로프(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)의 결과는 계약 키(contract key)(412)를 사용하여 서비스 TEE(306a)에 의해 암호화된다. 계약 키(412)는 (410에서) 키 유도 함수(key derivation function, KDF)에 기초하여 루트 키(404)로부터 유도된다. 일부 예들에서, KDF는, HKDF(HMAC-based extract-and-expand key derivation function) 또는 PRF(pseudo-random function)와 같은, 반복 해시 알고리즘들에 기초하여 수행될 수 있다. 계약 키는 KM TEE(308a)에 의해 서비스 TEE(306a)에 제공될 수 있다. 일부 실시예들에서, 루트 키(404)는 노드(304a)와 연관된 대칭 암호화 키일 수 있다. 루트 키(404)는 루트 키(404)로부터 유도될 수 있는 하나 이상의 서브키(subkeys)를 또한 포함할 수 있다. 계약 키(412)는 이러한 서브키들 중 하나일 수 있다. 일부 경우들에서, 루트 키(404) 자체는 462에서 결과를 암호화하는 데 사용될 수 있다.
결과를 암호화한 후에, 서비스 TEE(308a)는, 464에서, KM TEE(308a)에 의해 서비스 TEE(306a)에 제공되는 서명 개인 키(406)를 사용하여 암호화된 결과에 서명하여, 서명된 결과(466)를 산출한다. 이것은, 키 관리 센터(310)에 의해 유지되는 검증 공개 키(416)(서명 개인 키(406)와 대응하여 쌍을 이룸)를 사용하여, 제3자(예컨대, 클라이언트)에 의한 서명된 결과의 추후 검증을 가능하게 해줄 수 있다. 일부 경우들에서, 서명 개인 키(406)에 의해 암호화된 결과에 서명하는 것은 결과를 암호화하는 데 사용된 계약 키(412)와 함께 암호화된 결과를 암호화하는 것을 포함할 수 있다. 그러한 경우에, 검증 공개 키(416)를 보유한 제3자는 먼저 계약 키(412)를 복호화하고, 결과를 복호화하는 데 계약 키(412)를 추가로 사용할 수 있다.
일부 경우들에서, 서비스 TEE(306a)는 서명된 결과(466)를 블록체인에 저장할 수 있다. 위에서 설명된 바와 같이, 검증 공개 키(416)를 보유한 제3자는 검사하기 위해 그 키를 사용하여 결과(466)를 복호화할 수 있다. 예를 들어, 클라이언트(480)는 키 관리 센터(310)로부터 검증 공개 키(416)를 리트리빙(retrieving)할 수 있고(예컨대, 이전에 설명된 바와 같이 인증을 받아야 함), 서명된 결과(466)에 액세스하고 검증 공개 키(416)를 사용하여 이를 복호화할 수 있다. 클라이언트(480)는 이어서 스마트 계약에서의 다음 동작이 서비스 TEE(306a)에 의해 실행되도록 요청할 수 있고, 요청된 다음 동작 및 (복호화된 서명된 결과(466)로부터의) 스마트 계약의 실행 상태를 서비스 TEE(306a)에 송신되는 디지털 엔벨로프에 포함시킬 수 있다.
도 5는 본 명세서의 실시예들에 따라 실행될 수 있는 프로세스의 예를 묘사하고 있다. 502에서, 블록체인 네트워크(예컨대, 302)에 참여하는 블록체인 노드(예컨대, 304a)는 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하고, 여기서 요청은 서비스 TEE와 연관된 공개 키에 의해 암호화된다.
504에서, 블록체인 노드는 서비스 TEE와 연관된 제1 개인 키로 요청을 복호화하고, 여기서 제1 개인 키는 공개 키와 쌍을 이룬다.
506에서, 블록체인 노드는 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출한다.
508에서, 블록체인 노드는 서비스 TEE와 연관된 클라이언트 암호화 키로 실행 결과를 암호화하여 암호화된 결과를 산출한다.
510에서, 블록체인 노드는 TEE와 연관된 제2 개인 키를 사용하여 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출한다.
일부 경우들에서, 공개 키는 제1 공개 키이고, 클라이언트 암호화 키는 제2 공개 키 또는 키 유도 함수에 기초하여 루트 키로부터 유도된 대칭 키 중 하나이다.
일부 경우들에서, 블록체인 노드는 제1 개인 키, 제2 개인 키 중 하나 이상을 저장하는 키 관리 TEE를 추가로 호스팅하고, 키 관리 TEE는, 키 관리 TEE에 의해 개시된 로컬 증명을 수행하는 것에 기초하여 서비스 TEE의 아이덴티티가 인증된 후에, 제1 개인 키, 제2 개인 키, 및 루트 키를 서비스 TEE에 제공한다.
일부 경우들에서, 제1 개인 키, 제2 개인 키, 및 루트 키는 키 관리 센터에 의해 생성되고, 키 관리 센터에 의해 개시된 원격 증명을 수행한 것에 기초하여 키 관리 TEE의 아이덴티티가 인증된 후에, 키 관리 TEE에 제공된다.
일부 경우들에서, 제1 개인 키 및 루트 키는 서비스 TEE의 재부팅 동작에 응답하여 키 관리 TEE에 의해 서비스 TEE에 제공된다.
일부 경우들에서, 하나 이상의 소프트웨어 명령어는 스마트 계약과 연관되고, 루트 키는 스마트 계약의 상태에 기초하여 키 관리 TEE에 저장된 복수의 루트 키들 중에서 선택된다.
일부 경우들에서, 제1 공개 키는 키 관리 센터에 의해 생성되고 요청을 암호화하기 위해 클라이언트에 제공된다.
일부 경우들에서, 블록체인 노드에 의해 수신된 요청은 클라이언트 암호화 키를 사용하여 하나 이상의 소프트웨어 명령어를 암호화하는 것을 더 포함한다.
일부 경우들에서, 제1 개인 키로 요청을 복호화하는 것은: 제1 개인 키로 클라이언트 암호화 키를 복호화하는 것; 및 클라이언트 암호화 키로 하나 이상의 소프트웨어 명령어를 복호화하는 것을 더 포함한다.
도 6은 본 명세서의 실시예들에 따른 장치(600)의 모듈들의 예들을 묘사하고 있다. 장치(600)는 블록체인 네트워크 내에서 실행되는 블록체인 노드의 예시적인 실시예일 수 있다. 장치(600)는 위에서 설명된 실시예들에 대응할 수 있고, 장치(600)는 다음과 같은 것: 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하는 수신 모듈(602)―요청은 서비스 TEE와 연관된 공개 키에 의해 암호화됨―; 서비스 TEE와 연관된 제1 개인 키로 요청을 복호화하는 복호화 모듈(604)―제1 개인 키는 공개 키와 쌍을 이룸―; 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출하는 실행 모듈(606); 서비스 TEE와 연관된 클라이언트 암호화 키로 실행 결과를 암호화하여 암호화된 결과를 산출하는 암호화 모듈(608); TEE와 연관된 제2 개인 키를 사용하여 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출하는 서명 모듈(610)을 포함한다.
이전의 실시예들에서 예시된 시스템, 장치, 모듈, 또는 유닛은 컴퓨터 칩 또는 엔티티에 의해 구현될 수 있거나, 또는 특정한 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시예 디바이스는 컴퓨터이고, 컴퓨터는 개인 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트폰, 개인 휴대 단말(personal digital assistant), 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 송신 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 이러한 디바이스들의 임의의 조합일 수 있다.
장치 내의 각각의 모듈의 기능들 및 역할들의 실시예 프로세스에 대해서는, 이전의 방법에서의 대응하는 단계들의 실시예 프로세스가 참조될 수 있다. 세부사항들이 간단함을 위해 여기서 생략된다.
장치 실시예가 기본적으로 방법 실시예에 대응하기 때문에, 관련 부분들에 대해서는, 방법 실시예에서의 관련 설명들이 참조될 수 있다. 이전에 설명된 장치 실시예는 예에 불과하다. 별개의 부분들로서 설명된 모듈들이 물리적으로 분리될 수 있거나 그렇지 않을 수 있고, 모듈들로서 표시된 부분들이 물리적 모듈들일 수 있거나 그렇지 않을 수 있거나, 하나의 위치에 위치될 수 있거나, 또는 복수의 네트워크 모듈들에 분산될 수 있다. 모듈들 중 일부 또는 전부는 본 명세서의 해결책들의 목적들을 달성하기 위해 실제 수요들에 기초하여 선택될 수 있다. 본 기술분야의 통상의 기술자는 창조적 노력 없이 본 출원의 실시예들을 이해하고 구현할 수 있다.
도 6을 또다시 참조하면, 도 6은 블록체인 네트워크 내에서 실행되고 실행 주체(execution body)로서 기능하는 블록체인 노드의 내부 기능 모듈 및 구조를 예시하는 것으로 해석될 수 있다. 실행 주체는 본질적으로 전자 디바이스일 수 있고, 전자 디바이스는 다음과 같은 것들: 하나 이상의 프로세서; 및 하나 이상의 프로세서의 실행가능한 명령어를 저장하도록 구성된 메모리를 포함한다.
본 명세서에 설명된 기술들은 하나 이상의 기술적 효과를 산출한다. 예를 들어, 설명된 기술들은 컨소시엄 블록체인 네트워크의 당사자들이 스마트 계약 동작들을 실행하는 것 및 그 동작들의 결과들에 관한 컨센서스에 도달하는 것을 책임지고 있는 네트워크 내의 블록체인 노드들이 공격자에 의해 손상되지 않았다는 것을 검증할 수 있게 해준다. 이러한 검증은 공격자가 블록체인 노드들 중 하나 이상을 장악하여 스마트 계약 동작들 또는 컨센서스 프로세스의 실행을 성공적으로 변조하는 것을 방지하거나 그러할 가능성을 감소시켜, 공격들에 보다 내성이 있는 컨소시엄 블록체인 네트워크의 보다 안전한 실시예를 가져오는 효과를 갖는다.
주제(subject matter)의 설명된 실시예들은 하나 이상의 특징을, 단독으로 또는 조합하여, 포함할 수 있다. 일 실시예는 블록체인 네트워크에 참여하는 블록체인 노드에 의해, 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하는 액션―요청은 서비스 TEE와 연관된 공개 키에 의해 암호화됨―; 블록체인 노드에 의해 서비스 TEE에서, 서비스 TEE와 연관된 제1 개인 키로 요청을 복호화하는 액션―제1 개인 키는 공개 키와 쌍을 이룸―; 요청을 복호화하는 것에 응답하여, 블록체인 노드에 의해 서비스 TEE에서, 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출하는 액션; 블록체인 노드에 의해 서비스 TEE에서, 서비스 TEE와 연관된 클라이언트 암호화 키로 실행 결과를 암호화하여 암호화된 결과를 산출하는 액션; 및 블록체인 노드에 의해 TEE에서, TEE와 연관된 제2 개인 키를 사용하여 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출하는 액션을 포함하는 컴퓨터-구현 방법을 포함한다.
전술한 및 다른 설명된 실시예들 각각은, 임의로, 이하의 특징들 중 하나 이상을 포함할 수 있다:
이하의 특징들 중 임의의 것과 조합가능한, 제1 특징은, 공개 키는 제1 공개 키이고, 클라이언트 암호화 키는 제2 공개 키 또는 키 유도 함수에 기초하여 루트 키로부터 유도된 대칭 키 중 하나라는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제2 특징은, 블록체인 노드는 제1 개인 키, 제2 개인 키 중 하나 이상을 저장하는 키 관리 TEE를 추가로 호스팅하고, 키 관리 TEE는, 서비스 TEE의 아이덴티티가 키 관리 TEE에 의해 개시된 로컬 증명을 수행하는 것에 기초하여 인증된 후에, 제1 개인 키, 제2 개인 키, 및 루트 키를 서비스 TEE에 제공한다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제3 특징은, 제1 개인 키, 제2 개인 키, 및 루트 키는 키 관리 센터에 의해 생성되고, 키 관리 센터에 의해 개시된 원격 증명을 수행한 것에 기초하여 키 관리 TEE의 아이덴티티가 인증된 후에, 키 관리 TEE에 제공된다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제4 특징은, 제1 개인 키 및 루트 키는 서비스 TEE의 재부팅 동작에 응답하여 키 관리 TEE에 의해 서비스 TEE에 제공된다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제5 특징은, 하나 이상의 소프트웨어 명령어는 스마트 계약과 연관되고, 루트 키는 스마트 계약의 상태에 기초하여 키 관리 TEE에 저장된 복수의 루트 키들 중에서 선택된다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제6 특징은, 제1 공개 키는 키 관리 센터에 의해 생성되고 요청을 암호화하기 위해 클라이언트에 제공된다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제7 특징은, 블록체인 노드에 의해 수신된 요청은 클라이언트 암호화 키를 사용하여 하나 이상의 소프트웨어 명령어를 암호화하는 것을 더 포함한다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제8 특징은, 제1 개인 키로 요청을 복호화하는 것은: 제1 개인 키로 클라이언트 암호화 키를 복호화하는 것; 및 클라이언트 암호화 키로 하나 이상의 소프트웨어 명령어를 복호화하는 것을 더 포함한다는 것을 명시한다.
이전의 또는 이하의 특징들 중 임의의 것과 조합가능한, 제9 특징은, 키 관리 센터는 제2 개인 키에 대응하는 검증 공개 키를 저장하고 서명된 암호화 결과를 검증하기 위해 검증 공개 키를 클라이언트에 제공한다는 것을 명시한다.
본 명세서에 설명된 주제 및 액션들 및 동작들의 실시예들은 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함한, 디지털 전자 회로부로, 유형적으로 구체화된 컴퓨터 소프트웨어 또는 펌웨어로, 컴퓨터 하드웨어로, 또는 이들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에 설명된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램, 예컨대, 데이터 프로세싱 장치에 의해 실행하기 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한, 컴퓨터 프로그램 캐리어(computer program carrier) 상에 인코딩된, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 명령어들이 인코딩되어 있거나 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 캐리어는, 자기, 자기 광학, 또는 광학 디스크, 솔리드 스테이트 드라이브, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 다른 유형들의 매체들과 같은, 유형적인(tangible) 비일시적 컴퓨터 판독가능 매체일 수 있다. 대안적으로 또는 그에 부가하여, 캐리어는 데이터 프로세싱 장치에 의해 실행하기 위해 적당한 수신기 장치로의 전송을 위한 정보를 인코딩하기 위해 생성되는 인위적으로 생성된 전파 신호(artificially generated propagated signal), 예컨대, 머신 생성(machine-generated) 전기, 광학, 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독가능 저장 디바이스, 머신 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나, 그의 일부일 수 있다. 컴퓨터 저장 매체는 전파 신호가 아니다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드라고도 지칭될 수 있거나 서술될 수 있는, 컴퓨터 프로그램은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들, 또는 선언적(declarative) 또는 절차적(procedural) 언어들을 포함한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고; 컴퓨터 프로그램은, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 엔진, 서브루틴, 또는 컴퓨팅 환경―이 환경은 하나 이상의 위치에 있는, 데이터 통신 네트워크에 의해 상호접속된, 하나 이상의 컴퓨터를 포함할 수 있음―에서 실행하기에 적당한 다른 유닛(unit)으로서를 포함한, 임의의 형태로 배포될 수 있다.
컴퓨터 프로그램이 파일 시스템에서의 파일에 대응할 수 있지만 그럴 필요는 없다. 컴퓨터 프로그램은 다른 프로그램들 또는 데이터, 예컨대, 마크업 언어 문서에 저장된 하나 이상의 스크립트를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files), 예컨대, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 실행을 위한 컴퓨터 프로그램의 명령어들은 물론 데이터를 프로세서에 커플링된 비일시적 컴퓨터 판독가능 매체로부터 수신할 것이다.
용어 "데이터 프로세싱 장치"는, 예로서, 프로그래밍가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한, 데이터를 프로세싱하기 위한 모든 종류의 장치들, 디바이스들, 및 머신들을 포괄한다. 데이터 프로세싱 장치는 특수 목적 로직 회로부, 예컨대, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 또는 GPU(graphics processing unit)를 포함할 수 있다. 이 장치는, 하드웨어에 부가하여, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 또한 포함할 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하여 출력을 생성함으로써 동작들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 특수 목적 로직 회로부, 예컨대, FPGA, ASIC, 또는 GPU에 의해, 또는 특수 목적 로직 흐름과 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 또한 수행될 수 있다.
컴퓨터 프로그램의 실행에 적당한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들 또는 둘 다, 또는 임의의 다른 종류의 중앙 프로세싱 유닛에 기초할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하기 위한 중앙 프로세싱 유닛 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 프로세싱 유닛 및 메모리는 특수 목적 로직 회로부에 의해 보완되거나 그에 통합될 수 있다.
일반적으로, 컴퓨터는 하나 이상의 저장 디바이스를 또한 포함하거나, 이들로부터 데이터를 수신하거나 이들에 데이터를 전송하도록 동작가능하게 커플링될 것이다. 저장 디바이스들은, 예를 들어, 자기, 자기 광학, 또는 광학 디스크들, 솔리드 스테이트 드라이브들, 또는 임의의 다른 유형의 비일시적 컴퓨터 판독가능 매체들일 수 있다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 따라서, 컴퓨터는 로컬 및/또는 원격인, 하나 이상의 메모리와 같은, 하나 이상의 저장 디바이스에 커플링될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 필요불가결한 컴포넌트들인 하나 이상의 로컬 메모리를 포함할 수 있거나, 또는 컴퓨터는 클라우드 네트워크에 있는 하나 이상의 원격 메모리에 커플링될 수 있다. 더욱이, 컴퓨터는, 몇 가지 예를 들면, 다른 디바이스. 예컨대, 모바일 전화, PDA(personal digital assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 휴대용 저장 디바이스, 예컨대, USB(universal serial bus) 플래시 드라이브에 임베딩될 수 있다.
컴포넌트들은, 직접적으로 또는 하나 이상의 중간 컴포넌트를 통해, 서로 전기적으로 또는 광학적으로와 같이 통신가능하게 접속되는 것에 의해 서로 "커플링"될 수 있다. 컴포넌트들 중 하나가 다른 컴포넌트에 통합되어 있는 경우 컴포넌트들이 또한 서로 "커플링"될 수 있다. 예를 들어, 프로세서에 통합된 저장 컴포넌트(예컨대, L2 캐시 컴포넌트)는 프로세서에 "커플링"된다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명된 주제의 실시예들은 정보를 사용자에 디스플레이하기 위한 디스플레이 디바이스, 예컨대, LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있는 입력 디바이스, 예컨대, 키보드 및 포인팅 디바이스, 예컨대, 마우스, 트랙볼 또는 터치 패드를 갖는 컴퓨터 상에서 구현되거나 컴퓨터와 통신하도록 구성될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스들도 사용될 수 있고; 예를 들어, 사용자에 제공되는 피드백은 임의의 형태의 감각적 피드백, 예컨대, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있으며; 사용자로부터의 입력은, 음향, 음성, 또는 촉각적 입력을 포함한, 임의의 형태로 수신될 수 있다. 그에 부가하여, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 송신하고 그로부터 문서들을 수신하는 것에 의해; 예를 들어, 웹 브라우저로부터 수신된 요청들에 응답하여 웹 페이지들을 사용자의 디바이스 상의 웹 브라우저에 송신하는 것에 의해, 또는 사용자 디바이스, 예컨대, 스마트폰 또는 전자 태블릿 상에서 실행 중인 앱과 상호작용하는 것에 의해, 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지 또는 다른 형태들의 메시지를 개인 디바이스, 예컨대, 메시징 애플리케이션을 실행하는 스마트폰에 송신하고 그에 응답하여 사용자로부터 응답 메시지들을 수신하는 것에 의해 사용자와 상호작용할 수 있다.
본 명세서는 시스템들, 장치들, 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "~하도록 구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터들의 시스템이 특정의 동작들 또는 액션들을 수행하도록 구성된다는 것은 시스템이 동작 중에 시스템으로 하여금 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 시스템 상에 설치하였음을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정의 동작들 또는 액션들을 수행하도록 구성된다는 것은 하나 이상의 프로그램이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수 목적 로직 회로부가 특정의 동작들 또는 액션들을 수행하도록 구성된다는 것은 그 회로부가 동작들 또는 액션들을 수행하는 전자 로직을 갖는다는 것을 의미한다.
본 명세서가 많은 구체적인 실시예 세부사항들을 포함하고 있지만, 이들은 청구항들 자체에 의해 한정되는, 청구되고 있는 것의 범위에 대한 제한들로서 해석되어서는 안되고, 오히려 특정의 실시예들에 특정적일 수 있는 특징들에 대한 설명들로서 해석되어야 한다. 개별적인 실시예들의 맥락에서 본 명세서에 설명되는 특정한 특징들이 또한 단일 실시예에 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에 개별적으로 또는 임의의 적당한 서브콤비네이션(subcombination)으로 실현될 수 있다. 더욱이, 특징들이 특정한 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우들에서 그 조합으로부터 제거될 수 있고, 청구항은 서브콤비네이션 또는 서브콤비네이션의 변형에 관한 것일 수 있다.
이와 유사하게, 동작들이 특정의 순서로 도면들에 묘사되고 청구항들에 열거되어 있지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 한다는 것, 또는 모든 예시된 동작들이 수행되어야 한다는 것을 요구하는 것으로 이해되어서는 안된다. 특정한 상황들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다는 것이 이해되어야 한다.
주제의 특정의 실시예들이 설명되었다. 다른 실시예들이 이하의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에서 열거된 액션들은 상이한 순서로 수행될 수 있고 바람직한 결과들을 여전히 달성할 수 있다. 일 예로서, 첨부 도면들에 묘사된 프로세스들은, 바람직한 결과들을 달성하기 위해, 도시된 특정의 순서 또는 순차적 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (27)

  1. 신뢰 실행 환경(trusted execution environment, TEE)에서 스마트 계약 동작들을 안전하게(securely) 실행하기 위한 컴퓨터 구현 방법(computer-implemented method)에 있어서,
    블록체인 네트워크에 참여하는 블록체인 노드에 의해, 상기 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 스마트 계약과 연관된 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하는 단계―상기 요청은 상기 서비스 TEE와 연관된 제1 공개 키에 의해 암호화됨―;
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 제1 개인 키로 상기 요청을 복호화하는 단계―상기 제1 개인 키는 상기 제1 공개 키와 쌍을 이룸―;
    상기 요청을 복호화하는 것에 응답하여, 상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출(producing)하는 단계;
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 클라이언트 암호화 키로 상기 실행 결과를 암호화하여 암호화된 결과를 산출하는 단계―상기 클라이언트 암호화 키는 제2 공개 키 또는 키 유도 함수(key derivation function)에 기초하여 루트 키로부터 유도된 대칭 키 중 하나이고, 상기 루트 키는 상기 스마트 계약의 상태에 기초하여 복수의 루트 키로부터 선택됨―; 및
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 제2 개인 키를 사용해서 상기 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 블록체인 노드는 또한, 상기 제1 개인 키, 상기 제2 개인 키 중 하나 이상을 저장하는 키 관리 TEE를 호스팅하고, 상기 키 관리 TEE는, 상기 키 관리 TEE에 의해 개시된 로컬 증명(attestation)을 수행하는 것에 기초하여 상기 서비스 TEE의 아이덴티티가 인증된 후에, 상기 제1 개인 키, 상기 제2 개인 키, 및 상기 루트 키를 상기 서비스 TEE에 제공하는, 컴퓨터 구현 방법.
  3. 제2항에 있어서, 상기 제1 개인 키, 상기 제2 개인 키, 및 상기 루트 키는 키 관리 센터에 의해 생성되고, 상기 키 관리 센터에 의해 개시된 원격 증명을 수행하는 것에 기초하여 상기 키 관리 TEE의 아이덴티티가 인증된 후에, 상기 키 관리 TEE에 제공되는, 컴퓨터 구현 방법.
  4. 제2항에 있어서, 상기 제1 개인 키 및 상기 루트 키는 상기 서비스 TEE의 재부팅 동작에 응답하여 상기 키 관리 TEE에 의해 상기 서비스 TEE에 제공되는, 컴퓨터 구현 방법.
  5. 제2항에 있어서, 상기 복수의 루트 키는 상기 키 관리 TEE에 저장되는, 컴퓨터 구현 방법.
  6. 제3항에 있어서, 상기 제1 공개 키는 상기 키 관리 센터에 의해 생성되고, 상기 요청을 암호화하기 위해 클라이언트에 제공되는, 컴퓨터 구현 방법.
  7. 제1항에 있어서, 상기 블록체인 노드에 의해 수신된 상기 요청은, 또한 상기 클라이언트 암호화 키를 사용하여 상기 하나 이상의 소프트웨어 명령어를 암호화하는 것을 포함하는, 컴퓨터 구현 방법.
  8. 제7항에 있어서, 상기 제1 개인 키로 상기 요청을 복호화하는 단계는:
    상기 제1 개인 키로 상기 클라이언트 암호화 키를 복호화하는 단계; 및
    상기 클라이언트 암호화 키로 상기 하나 이상의 소프트웨어 명령어를 복호화하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  9. 제3항에 있어서, 상기 키 관리 센터는 상기 제2 개인 키에 대응하는 검증 공개 키를 저장하고, 상기 서명된 암호화된 결과를 검증하기 위해 상기 검증 공개 키를 클라이언트에 제공하는, 컴퓨터 구현 방법.
  10. 신뢰 실행 환경(TEE)에서 스마트 계약 동작들을 안전하게 실행하기 위한 동작들을 수행하기 위해 컴퓨터 시스템에 의해 실행 가능한 하나 이상의 명령어를 저장한 비일시적(non-transitory) 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 동작들은,
    블록체인 네트워크에 참여하는 블록체인 노드에 의해, 상기 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 스마트 계약과 연관된 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하는 것―상기 요청은 상기 서비스 TEE와 연관된 제1 공개 키에 의해 암호화됨―;
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 제1 개인 키로 상기 요청을 복호화하는 것―상기 제1 개인 키는 상기 제1 공개 키와 쌍을 이룸―;
    상기 요청을 복호화하는 것에 응답하여, 상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출하는 것;
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 클라이언트 암호화 키로 상기 실행 결과를 암호화하여 암호화된 결과를 산출하는 것―상기 클라이언트 암호화 키는 제2 공개 키 또는 키 유도 함수에 기초하여 루트 키로부터 유도된 대칭 키 중 하나이고, 상기 루트 키는 상기 스마트 계약의 상태에 기초하여 복수의 루트 키로부터 선택됨―; 및
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 제2 개인 키를 사용해서 상기 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출하는 것
    을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  11. 제10항에 있어서, 상기 블록체인 노드는 또한, 상기 제1 개인 키, 상기 제2 개인 키 중 하나 이상을 저장하는 키 관리 TEE를 호스팅하고, 상기 키 관리 TEE는, 상기 키 관리 TEE에 의해 개시된 로컬 증명을 수행하는 것에 기초하여 상기 서비스 TEE의 아이덴티티가 인증된 후에, 상기 제1 개인 키, 상기 제2 개인 키, 및 상기 루트 키를 상기 서비스 TEE에 제공하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  12. 제11항에 있어서, 상기 제1 개인 키, 상기 제2 개인 키, 및 상기 루트 키는 키 관리 센터에 의해 생성되고, 상기 키 관리 센터에 의해 개시된 원격 증명을 수행하는 것에 기초하여 상기 키 관리 TEE의 아이덴티티가 인증된 후에, 상기 키 관리 TEE에 제공되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제11항에 있어서, 상기 제1 개인 키 및 상기 루트 키는 상기 서비스 TEE의 재부팅 동작에 응답하여 상기 키 관리 TEE에 의해 상기 서비스 TEE에 제공되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제11항에 있어서, 상기 복수의 루트 키는 상기 키 관리 TEE에 저장되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제12항에 있어서, 상기 제1 공개 키는 상기 키 관리 센터에 의해 생성되고, 상기 요청을 암호화하기 위해 클라이언트에 제공되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제10항에 있어서, 상기 블록체인 노드에 의해 수신된 상기 요청은, 또한 상기 클라이언트 암호화 키를 사용하여 상기 하나 이상의 소프트웨어 명령어를 암호화하는 것을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제16항에 있어서, 상기 제1 개인 키로 상기 요청을 복호화하는 것은:
    상기 제1 개인 키로 상기 클라이언트 암호화 키를 복호화하는 것; 및
    상기 클라이언트 암호화 키로 상기 하나 이상의 소프트웨어 명령어를 복호화하는 것을 더 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제12항에 있어서, 상기 키 관리 센터는 상기 제2 개인 키에 대응하는 검증 공개 키를 저장하고, 상기 서명된 암호화된 결과를 검증하기 위해 상기 검증 공개 키를 클라이언트에 제공하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 컴퓨터 구현 시스템(computer-implemented system)에 있어서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터와 상호 동작 가능하게 결합되며, 상기 하나 이상의 컴퓨터에 의해 실행될 때에, 신뢰 실행 환경(TEE)에서 스마트 계약 동작들을 안전하게 실행하기 위한 하나 이상의 동작을 수행하는 하나 이상의 명령어를 저장한 유형의(tangible) 비일시적 머신 판독 가능 매체를 구비한 하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고, 상기 동작은,
    블록체인 네트워크에 참여하는 블록체인 노드에 의해, 상기 블록체인 노드에 의해 호스팅되는 서비스 TEE에서 스마트 계약과 연관된 하나 이상의 소프트웨어 명령어를 실행하라는 요청을 수신하는 것―상기 요청은 상기 서비스 TEE와 연관된 제1 공개 키에 의해 암호화됨―;
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 제1 개인 키로 상기 요청을 복호화하는 것―상기 제1 개인 키는 상기 제1 공개 키와 쌍을 이룸―;
    상기 요청을 복호화하는 것에 응답하여, 상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 하나 이상의 소프트웨어 명령어를 실행하여 실행 결과를 산출하는 것;
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 클라이언트 암호화 키로 상기 실행 결과를 암호화하여 암호화된 결과를 산출하는 것―상기 클라이언트 암호화 키는 제2 공개 키 또는 키 유도 함수에 기초하여 루트 키로부터 유도된 대칭 키 중 하나이고, 상기 루트 키는 상기 스마트 계약의 상태에 기초하여 복수의 루트 키로부터 선택됨―; 및
    상기 블록체인 노드에 의해 상기 서비스 TEE에서, 상기 서비스 TEE와 연관된 제2 개인 키를 사용해서 상기 암호화된 결과에 서명하여 서명된 암호화된 결과를 산출하는 것
    을 포함하는, 컴퓨터 구현 시스템.
  20. 제19항에 있어서, 상기 블록체인 노드는 또한, 상기 제1 개인 키, 상기 제2 개인 키 중 하나 이상을 저장하는 키 관리 TEE를 호스팅하고, 상기 키 관리 TEE는, 상기 키 관리 TEE에 의해 개시된 로컬 증명을 수행하는 것에 기초하여 상기 서비스 TEE의 아이덴티티가 인증된 후에, 상기 제1 개인 키, 상기 제2 개인 키, 및 상기 루트 키를 상기 서비스 TEE에 제공하는, 컴퓨터 구현 시스템.
  21. 제20항에 있어서, 상기 제1 개인 키, 상기 제2 개인 키, 및 상기 루트 키는 키 관리 센터에 의해 생성되고, 상기 키 관리 센터에 의해 개시된 원격 증명을 수행하는 것에 기초하여 상기 키 관리 TEE의 아이덴티티가 인증된 후에, 상기 키 관리 TEE에 제공되는, 컴퓨터 구현 시스템.
  22. 제20항에 있어서, 상기 제1 개인 키 및 상기 루트 키는 상기 서비스 TEE의 재부팅 동작에 응답하여 상기 키 관리 TEE에 의해 상기 서비스 TEE에 제공되는, 컴퓨터 구현 시스템.
  23. 제20항에 있어서, 상기 복수의 루트 키는 상기 키 관리 TEE에 저장되는, 컴퓨터 구현 시스템.
  24. 제21항에 있어서, 상기 제1 공개 키는 상기 키 관리 센터에 의해 생성되고, 상기 요청을 암호화하기 위해 클라이언트에 제공되는, 컴퓨터 구현 시스템.
  25. 제19항에 있어서, 상기 블록체인 노드에 의해 수신된 상기 요청은, 또한 상기 클라이언트 암호화 키를 사용하여 상기 하나 이상의 소프트웨어 명령어를 암호화하는 것을 포함하는, 컴퓨터 구현 시스템.
  26. 제25항에 있어서, 상기 제1 개인 키로 상기 요청을 복호화하는 것은:
    상기 제1 개인 키로 상기 클라이언트 암호화 키를 복호화하는 것; 및
    상기 클라이언트 암호화 키로 상기 하나 이상의 소프트웨어 명령어를 복호화하는 것을 더 포함하는, 컴퓨터 구현 시스템.
  27. 제21항에 있어서, 상기 키 관리 센터는 상기 제2 개인 키에 대응하는 검증 공개 키를 저장하고, 상기 서명된 암호화된 결과를 검증하기 위해 상기 검증 공개 키를 클라이언트에 제공하는, 컴퓨터 구현 시스템.
KR1020197032262A 2019-04-26 2019-04-26 신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법 KR102263325B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/084523 WO2019137564A2 (en) 2019-04-26 2019-04-26 Securely executing smart contract operations in a trusted execution environment

Publications (2)

Publication Number Publication Date
KR20200126321A KR20200126321A (ko) 2020-11-06
KR102263325B1 true KR102263325B1 (ko) 2021-06-15

Family

ID=67218454

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197032262A KR102263325B1 (ko) 2019-04-26 2019-04-26 신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법

Country Status (9)

Country Link
US (1) US10839070B1 (ko)
EP (1) EP3642753B1 (ko)
JP (1) JP2020528224A (ko)
KR (1) KR102263325B1 (ko)
CN (1) CN111095256B (ko)
AU (1) AU2019207311B2 (ko)
CA (1) CA3061808C (ko)
SG (1) SG11201910054WA (ko)
WO (1) WO2019137564A2 (ko)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110535833B (zh) * 2019-08-07 2020-06-09 中国石油大学(北京) 一种基于区块链的数据共享控制方法
CN112765610A (zh) * 2019-08-30 2021-05-07 创新先进技术有限公司 交易调度方法及装置
CN111213168B (zh) 2019-09-11 2023-11-03 创新先进技术有限公司 用于数字资产转移的***和方法
EP3732644A2 (en) 2019-09-11 2020-11-04 Advanced New Technologies Co., Ltd. System and method for digital asset management
CN110473108B (zh) * 2019-09-16 2023-09-01 北京京东振世信息技术有限公司 基于区块链的合约生成方法和装置
CN112862483B (zh) * 2019-11-12 2024-04-09 航天信息股份有限公司 一种基于智能合约的身份验证方法和装置
US11134112B2 (en) 2019-11-21 2021-09-28 Visa International Service Association Secure multi-party random bit generation
CN110890962B (zh) * 2019-12-20 2021-04-13 支付宝(杭州)信息技术有限公司 认证密钥协商方法、装置、存储介质及设备
EP3859652A1 (en) * 2020-01-30 2021-08-04 elblox AG Technique for trustless cryptographic verification of energy allocations
CN111371557B (zh) * 2020-02-26 2024-01-23 百度在线网络技术(北京)有限公司 区块链数据处理方法、装置、电子设备及介质
CN111427663A (zh) * 2020-03-24 2020-07-17 杭州溪塔科技有限公司 一种基于智能合约的虚拟机***及其操作方法
CN111460482B (zh) * 2020-04-15 2024-04-16 中国银行股份有限公司 一种基于区块链的摇号方法及装置
CN113691437B (zh) * 2020-05-18 2023-04-18 山东浪潮质量链科技有限公司 一种基于区块链的即时通讯方法、设备及介质
CN111565204B (zh) * 2020-07-16 2021-06-18 百度在线网络技术(北京)有限公司 区块链运行方法、装置、设备及存储介质
CN111563253B (zh) * 2020-07-16 2020-11-03 百度在线网络技术(北京)有限公司 智能合约运行方法、装置、设备及存储介质
CN111858768B (zh) * 2020-07-27 2023-06-16 苏州区盟链数字科技有限公司 一种优化区块链可信节点与共识算法的装置
CN112104606B (zh) * 2020-08-12 2022-06-17 北京智融云河科技有限公司 一种基于随机多节点的可信执行方法和***
CN112800071A (zh) * 2020-08-24 2021-05-14 支付宝(杭州)信息技术有限公司 基于区块链的业务处理方法、装置、设备及存储介质
CN112714117B (zh) * 2020-08-24 2022-11-01 支付宝(杭州)信息技术有限公司 业务处理方法、装置、设备及***
CN113468602B (zh) * 2020-08-31 2024-06-18 支付宝(杭州)信息技术有限公司 一种数据检验方法、装置及设备
CN112118245B (zh) * 2020-09-10 2023-01-10 中国联合网络通信集团有限公司 密钥管理方法、***和设备
CN113326532A (zh) * 2020-09-11 2021-08-31 支付宝(杭州)信息技术有限公司 一种基于区块链的用户隐私数据提供方法及装置
CN112134956A (zh) * 2020-09-23 2020-12-25 中国科学院深圳先进技术研究院 一种基于区块链的分布式物联网指令管理方法和***
US20220114249A1 (en) * 2020-10-09 2022-04-14 Huawei Technologies Co., Ltd. Systems and methods for secure and fast machine learning inference in a trusted execution environment
US11374807B2 (en) * 2020-10-30 2022-06-28 Nutanix, Inc. Handling dynamic command execution in hybrid cloud environments
US11700178B2 (en) 2020-10-30 2023-07-11 Nutanix, Inc. System and method for managing clusters in an edge network
CN112532385A (zh) * 2020-11-20 2021-03-19 天翼电子商务有限公司 一种基于可信执行环境的数据共享方法
CN114637995A (zh) 2020-12-15 2022-06-17 福瑞斯技术有限公司 具有多种异构tee实施的方法和***
CN112560097B (zh) * 2020-12-22 2022-09-30 广州技象科技有限公司 一种电力业务数据的存储管理方法及装置
CN113079025A (zh) * 2021-04-07 2021-07-06 上海万向区块链股份公司 兼容多种公开密钥算法签名的方法和***
CN113221165B (zh) * 2021-05-11 2022-04-22 支付宝(杭州)信息技术有限公司 一种基于区块链的用户要素认证方法及装置
CN113239375B (zh) * 2021-05-13 2022-06-17 杭州趣链科技有限公司 基于区块链的隐私要素数据共享***、方法、计算机设备及介质
CN113688394B (zh) * 2021-06-07 2023-08-25 重庆大学 安全可信执行环境下的基于区块链的外包计算***及方法
CN113609156B (zh) * 2021-08-02 2023-12-12 北京百度网讯科技有限公司 数据的查询与写入方法、装置、电子设备及可读存储介质
US11954226B2 (en) * 2021-08-17 2024-04-09 International Business Machines Corporation Verifiable privacy preserving computation
CN113422688B (zh) * 2021-08-19 2021-10-29 西南石油大学 一种云存储数据的快速审计方法
EP4145322A1 (en) * 2021-09-01 2023-03-08 Fluency Group Ltd Systems and methods for implementing privacy layer in cbdc networks
WO2023030998A1 (en) * 2021-09-01 2023-03-09 Fluency Group Ltd Systems and methods for implementing privacy layer in cbdc networks
US20230074475A1 (en) * 2021-09-01 2023-03-09 Fluency Group Ltd. Systems And Methods For Implementing Privacy Layer In CBDC Networks
CN113849565B (zh) * 2021-09-26 2024-05-14 支付宝(杭州)信息技术有限公司 用于可信上链的方法及终端设备
CN114124454A (zh) * 2021-10-21 2022-03-01 深圳致星科技有限公司 消息发送方法、***、电子设备、可读存储介质及产品
CN114143117B (zh) * 2022-02-08 2022-07-22 阿里云计算有限公司 数据处理方法及设备
WO2023158695A1 (en) * 2022-02-15 2023-08-24 Google Llc Secure environment for operations on private data
CN114584293B (zh) * 2022-02-28 2024-03-26 同济大学 一种基于TrustZone的区块链智能合约执行***及方法
CN114553590B (zh) * 2022-03-17 2023-08-22 抖音视界有限公司 数据传输方法及相关设备
US11765065B1 (en) 2022-03-23 2023-09-19 Nutanix, Inc. System and method for scalable telemetry
CN114726878B (zh) * 2022-03-28 2024-02-23 广州广电运通金融电子股份有限公司 一种云端存储***、设备和方法
FR3129504B1 (fr) * 2022-04-20 2023-11-17 Blocs Et Cie Procédés, terminal et serveur de gestion de données personnelles
CN114584306B (zh) * 2022-05-05 2022-08-02 腾讯科技(深圳)有限公司 一种数据处理方法和相关装置
CN114584307B (zh) * 2022-05-07 2022-09-02 腾讯科技(深圳)有限公司 一种可信密钥管理方法、装置、电子设备和存储介质
CN114595437B (zh) * 2022-05-09 2022-09-30 荣耀终端有限公司 访问控制方法、电子设备及计算机可读存储介质
CN114900318B (zh) * 2022-06-02 2024-04-19 浙江工商大学 基于密钥协商协议以及可验证的一轮通信可搜索加密方法
WO2023239946A1 (en) * 2022-06-09 2023-12-14 Precidian Investments, Llc Asset-backed digital tokens
CN115134075A (zh) * 2022-06-29 2022-09-30 蚂蚁区块链科技(上海)有限公司 跨子网调用方法、装置、电子设备和存储介质
CN115910255A (zh) * 2022-09-29 2023-04-04 海南星捷安科技集团股份有限公司 一种诊断辅助***
KR20240065940A (ko) * 2022-11-07 2024-05-14 주식회사 애브체인 스마트 계약 기반 신뢰실행환경의 데이터 처리를 이용한 사용자 데이터 관리 방법
CN116506227B (zh) * 2023-06-27 2023-09-19 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
CN117997656B (zh) * 2024-04-03 2024-06-21 浙江大学 一种工控数据全生命周期安全管控***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180330125A1 (en) * 2017-05-11 2018-11-15 Microsoft Technology Licensing, Llc Enclave ring and pair topologies
WO2019021105A1 (en) 2017-07-24 2019-01-31 nChain Holdings Limited METHODS AND SYSTEMS FOR ENCRYPTION EVENT ENCRYPTION IMPLEMENTED BY BLOCK CHAINS
WO2019072297A2 (en) 2018-12-13 2019-04-18 Alibaba Group Holding Limited INTELLIGENT CONTRACT SERVICE OUTSIDE CHAIN REGISTRY ("OFF-CHAIN") BASED ON A CONFIDENTIAL EXECUTION ENVIRONMENT

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007060213A (ja) * 2005-08-24 2007-03-08 Fuji Xerox Co Ltd 鍵配布装置及び鍵配布方法
JP2011034530A (ja) * 2009-08-06 2011-02-17 Fuji Xerox Co Ltd 情報処理装置及びソフトウェア管理プログラム
JP2015186101A (ja) * 2014-03-25 2015-10-22 三菱電機株式会社 鍵交換装置、及び鍵交換方法
FR3030818B1 (fr) * 2014-12-23 2016-12-23 Valeo Comfort & Driving Assistance Procede de transmission securisee d'une cle virtuelle et methode d'authentification d'un terminal mobile
US11115205B2 (en) * 2016-09-29 2021-09-07 Nokia Technologies Oy Method and apparatus for trusted computing
US10742393B2 (en) * 2017-04-25 2020-08-11 Microsoft Technology Licensing, Llc Confidentiality in a consortium blockchain network
JP2019047334A (ja) * 2017-09-01 2019-03-22 学校法人慶應義塾 データ処理装置、データ処理方法及びデータ処理用プログラム
US20190095879A1 (en) * 2017-09-26 2019-03-28 Cornell University Blockchain payment channels with trusted execution environments
CN107844704B (zh) * 2017-11-01 2019-12-31 浪潮集团有限公司 一种基于区块链可信智能合约加固方法
CN108449178B (zh) 2018-03-26 2020-12-22 北京豆荚科技有限公司 一种安全可信执行环境中根密钥的生成方法
US10305914B1 (en) * 2018-10-03 2019-05-28 Cyberark Software Ltd. Secure transfer of secrets for computing devices to access network resources
CN109461076A (zh) * 2018-10-09 2019-03-12 哈希(武汉)网络科技有限公司 一种区块链交易方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180330125A1 (en) * 2017-05-11 2018-11-15 Microsoft Technology Licensing, Llc Enclave ring and pair topologies
WO2019021105A1 (en) 2017-07-24 2019-01-31 nChain Holdings Limited METHODS AND SYSTEMS FOR ENCRYPTION EVENT ENCRYPTION IMPLEMENTED BY BLOCK CHAINS
WO2019072297A2 (en) 2018-12-13 2019-04-18 Alibaba Group Holding Limited INTELLIGENT CONTRACT SERVICE OUTSIDE CHAIN REGISTRY ("OFF-CHAIN") BASED ON A CONFIDENTIAL EXECUTION ENVIRONMENT

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Raymond Cheng외 8인, ‘A Platform for Confidentiality- Preserving, Trustworthy, and Performant Smart Contract Execution’, University of California, Berkeley, Cornell University, 14.04.2018.*

Also Published As

Publication number Publication date
CN111095256B (zh) 2023-12-01
CA3061808A1 (en) 2019-07-18
JP2020528224A (ja) 2020-09-17
AU2019207311B2 (en) 2020-10-29
WO2019137564A3 (en) 2020-03-12
CN111095256A (zh) 2020-05-01
US10839070B1 (en) 2020-11-17
CA3061808C (en) 2022-07-19
WO2019137564A2 (en) 2019-07-18
AU2019207311A1 (en) 2019-07-18
EP3642753A2 (en) 2020-04-29
SG11201910054WA (en) 2019-11-28
EP3642753A4 (en) 2020-06-03
KR20200126321A (ko) 2020-11-06
US20200342092A1 (en) 2020-10-29
EP3642753B1 (en) 2022-06-15

Similar Documents

Publication Publication Date Title
KR102263325B1 (ko) 신뢰 실행 환경에서 스마트 계약 동작을 안전하게 실행하는 방법
US11356285B2 (en) Distributed key management for trusted execution environments
US11095629B2 (en) Retrieving access data for blockchain networks using highly available trusted execution environments
US11088850B2 (en) Retrieving public data for blockchain networks using highly available trusted execution environments

Legal Events

Date Code Title Description
A302 Request for accelerated examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right