KR102120703B1 - 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치 - Google Patents

블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치 Download PDF

Info

Publication number
KR102120703B1
KR102120703B1 KR1020190014619A KR20190014619A KR102120703B1 KR 102120703 B1 KR102120703 B1 KR 102120703B1 KR 1020190014619 A KR1020190014619 A KR 1020190014619A KR 20190014619 A KR20190014619 A KR 20190014619A KR 102120703 B1 KR102120703 B1 KR 102120703B1
Authority
KR
South Korea
Prior art keywords
group
node
secret key
nodes
gateway
Prior art date
Application number
KR1020190014619A
Other languages
English (en)
Other versions
KR20200012705A (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 박기업
Priority to CN201980063538.8A priority Critical patent/CN112913185A/zh
Priority to PCT/KR2019/001731 priority patent/WO2020022599A1/ko
Priority to JP2021505768A priority patent/JP2021533638A/ja
Publication of KR20200012705A publication Critical patent/KR20200012705A/ko
Application granted granted Critical
Publication of KR102120703B1 publication Critical patent/KR102120703B1/ko
Priority to US17/159,021 priority patent/US20210258154A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • G06Q30/0215Including financial accounts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/12Payment architectures specially adapted for electronic shopping systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0492Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload by using a location-limited connection, e.g. near-field communication or limited proximity of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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]
    • H04L9/0833Key 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] involving conference or group key
    • 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
    • H04L9/0872Generation of secret information including derivation or calculation of cryptographic keys or passwords using geo-location information, e.g. location data, time, relative position or proximity to other entities
    • 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/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic 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/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • H04L2209/38
    • 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)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

일 실시예에 따른 노드 그룹 관리 장치는 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드 중 일부 노드가 속한 제1 그룹을 관리하고 -상기 블록체인 네트워크에 참여하는 모든 노드는 각각 비밀키 및 공개키를 보유함-, 상기 블록체인 네트워크와 통신하는 통신 인터페이스; 상기 제1 그룹의 노드에 관한 정보 및 프로세서의 동작 수행에 관한 명령어를 저장하는 하나 이상의 메모리- 상기 제1 그룹의 노드에 관한 정보는 상기 제1 그룹의 노드 각각의 공개키를 포함함-; 및 상기 명령어를 통해 동작하도록 상기 하나 이상의 메모리와 연결되고 상기 제1 그룹의 노드가 트랜잭션을 생성하는 경우 상기 트랜잭션에 상기 비밀키의 서명과 함께, 상기 제1 그룹의 노드에 관한 정보를 기초로 상기 트랜잭션에 추가적인 서명을 수행하도록 하는 그룹 비밀키를 생성하여 상기 제1 그룹의 노드가 공통적으로 보유하도록 상기 그룹 비밀키를 상기 제1 그룹에 배포하는 동작을 수행하는 하나 이상의 프로세서를 포함한다.

Description

블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치{APPARATUS FOR MANAGING GROUP OF NODES WHICH COMPRISES TRANSACTION OF DUAL SIGNATURE BASED ON GROUP KEY ON BLOCKCHAIN NETWORK AND COMPUTING APPARATUS}
본 문서의 실시예들은 블록체인 네트워크 상에서 그룹키를 기반으로 이중적으로 서명과 검증이 요구되는 트랜잭션 구조를 구성하여 보안성을 강화시키는 기술에 관한 것이다.
블록체인 시스템은 정보가 담겨있는 블록이 체인 형태로 이어진 블록체인을 분산형 데이터베이스로서 운영하여, 블록체인 네트워크를 구성하는 노드들이 공통된 정보를 공유할 수 있게 한다. 이러한 블록체인에 정보를 기록하거나 변경을 가하기 위해 노드는 네트워크 상에 트랜잭션을 발생시키고, 다른 노드들에 의해 해당 트랜잭션이 올바른 것인지 검증받는 과정을 거치게 된다. 이러한 트랜잭션의 발생 및 검증은 각각의 노드가 보유하는 비밀키(private key) 및 공개키(public key)에 의해 수행된다.
각 노드는 자신의 공개키만 블록체인 네트워크 상에 노출시키고, 전달하고자 하는 정보를 자신의 비밀키로 서명하여, 전달하고자 하는 정보와 서명을 묶은 트랜잭션을 다른 노드에 전파한다. 이를 수신한 다른 노드는 공개키를 통해 서명을 복호화 하여, 해당 트랜잭션이 올바른 자에 의해 서명된 것인지를 체크하여 트랜잭션의 검증 과정을 거친다.
공개키는 비밀키를 기반으로 생성되지만, 비가역함수를 통해 생성되기 때문에 공개키가 알려진다 하여도 그로부터 비밀키를 복원해내기 어렵다. 그러나, 비밀키 자체가 해킹된다면 해킹한 자가 해당 계정에서 원하는 트랜잭션을 모두 발생시킬 수 있다는 치명적인 문제가 있다. 이 때문에, 해킹한 자가 계정에 보유된 모든 암호화폐를 다른 곳으로 이체시키는 악의의 트랜잭션을 발생시켜 블록에 기록시킨다면, 블록체인 상에서는 이를 다시 돌이킬 수 없기에 매우 큰 피해로 이어지게 된다.
하지만, 비밀키는 한번 정해지면 변경이 불가하기 때문에, 단 한 번의 유출만으로 곧바로 계정을 교체해야 하며, 유출되었다는 사실을 알기도 전에 이미 돌이킬 수 없는 심각한 피해가 발생하는 경우가 대다수이다.
이와 같이, 비밀키 하나만으로 보호되는 블록체인 계정은 비밀키 자체의 해킹이라는 치명적인 약점이 있어, 계정을 보다 효과적으로 보호할 수 있는 새로운 대안이 필요하다.
본 문서의 실시예들은 복수의 노드로 이루어진 그룹의 정보를 기반으로 그룹 내의 노드끼리만 공유되는 그룹 비밀키를 생성하는 기술을 통해 상술한 문제를 해결하고자 한다. 이때 생성되는 그룹 비밀키는 그룹 내부의 노드 정보를 관리하는 신뢰성이 확보된 노드에 의해 생성되고, 그룹 비밀키로 인해 보안성 향상이라는 같은 이익을 공유하는 그룹 내부의 노드 입장에서는 그룹 비밀키를 유출시킬 실익이 없으며, 그룹 외부의 노드 입장에서는 다른 그룹의 정보를 알 수 없기 때문에 그룹 비밀키를 유추해 낼 수 없도록 설계될 수 있다.
또한, 본 문서의 실시예들은 설령 그룹 비밀키가 유출된다고 하여도, 그룹 비밀키가 주기적으로 갱신되고, 또한 노드 그룹 내에 변경이 일어난 경우에 갱신되도록 하는 기술을 통해, 해킹 피해가 발생하는 것을 방지할 수 있다. 더하여, 해킹한 자가 악의적인 트랜잭션 발생을 시도하는 경우, 나머지 하나의 키를 통한 서명이 추가적으로 요구되므로 계정 소유자가 해킹을 인지한 후 대안을 준비할 시간을 확보시킬 수 있다.
이와 같이, 본 문서의 실시예들은 트랜잭션 서명과 검증이 이중적으로 요구되는 구조를 구성하여 블록체인 네트워크의 보안성을 향상시고자 한다.
일 실시예에 따른 노드 그룹 관리 장치는 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드 중 일부 노드가 속한 제1 그룹을 관리하고 -상기 블록체인 네트워크에 참여하는 모든 노드는 각각 비밀키 및 공개키를 보유함-, 상기 블록체인 네트워크와 통신하는 통신 인터페이스; 상기 제1 그룹의 노드에 관한 정보 및 프로세서의 동작 수행에 관한 명령어를 저장하는 하나 이상의 메모리- 상기 제1 그룹의 노드에 관한 정보는 상기 제1 그룹의 노드 각각의 공개키를 포함함-; 및 상기 명령어를 통해 동작하도록 상기 하나 이상의 메모리와 연결되고, 상기 제1 그룹의 노드가 트랜잭션을 생성하는 경우 상기 트랜잭션에 상기 비밀키의 서명과 함께, 상기 제1 그룹의 노드에 관한 정보를 기초로 상기 트랜잭션에 추가적인 서명을 수행하도록 하는 그룹 비밀키를 생성하여, 상기 제1 그룹의 노드가 공통적으로 보유하도록 상기 그룹 비밀키를 상기 제1 그룹에 배포하는 동작을 수행하는 하나 이상의 프로세서를 포함할 수 있다.
일 실시예에 따른 컴퓨팅 장치는 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드를 수행하고 -상기 블록체인 네트워크에 참여하는 모든 노드는 각각 비밀키 및 공개키를 보유함-, 상기 블록체인 네트워크와 통신하는 통신 인터페이스; 상기 하나의 노드가 속한 제1 그룹을 관리하는 제1항의 노드 그룹 장치에 관한 정보, 상기 노드 그룹 장치가 시간이 흐름에 따라 배포한 복수의 그룹 비밀키, 및 프로세서의 동작 수행에 관한 명령어를 저장하는 하나 이상의 메모리-상기 복수의 그룹 비밀키는 시간 정보를 포함함-; 및 상기 명령어를 통해 동작하도록 상기 하나 이상의 메모리와 연결되고, 트랜잭션을 생성하는 경우 상기 시간 정보를 참조하여, 상기 복수의 그룹 비밀키 중 가장 최신으로 저장된 그룹 비밀키로부터 기 설정된 주기 이전에 생성된 그룹 비밀키를 이용한 서명을 상기 트랜잭션에 포함시키는 동작을 수행하는 하나 이상의 프로세서를 포함할 수 있다.
일 실시예에 따른 노드 그룹 관리 방법은 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드 및 노드 그룹 관리 장치에 의해 수행되고-상기 블록체인 네트워크를 구성하는 모든 노드는 각각의 비밀키 및 공개키를 보유함-, 상기 노드 그룹 관리 장치가 제1 그룹의 노드에 관한 정보를 상기 제1 그룹의 노드로부터 수신하는 단계- 상기 제1 그룹은 상기 장치가 관리하는 노드들이 포함된 그룹이고, 상기 제1 그룹의 노드에 관한 정보는 상기 제1 그룹의 노드 각각의 공개키를 포함함-; 상기 노드 그룹 관리 장치가 상기 제1 그룹의 노드가 트랜잭션을 생성하는 경우 상기 제1 그룹의 노드에 관한 정보를 기초로 상기 비밀키와 함께 추가적인 서명으로 사용되는 그룹 비밀키를 생성하는 단계; 및 상기 노드 그룹 관리 장치가, 상기 제1 그룹의 노드가 공통적으로 보유하도록 상기 그룹 비밀키를 상기 제1 그룹의 노드에 배포하는 단계를 포함할 수 있다.
상술한 실시예들에 따르면, 트랜잭션 서명에 비밀키와 그룹 비밀키를 함께 사용하기 때문에, 비밀키가 해킹되었다고 하더라도 그룹 비밀키의 서명을 요청하는 구성을 통해 해킹으로 인한 피해를 방지할 수 있다.
또한, 신뢰성이 확보된 게이트웨이를 통해 그룹 비밀키와 그룹 공개키의 생성 및 배포하여 그룹키 기반의 트랜잭션 서명에 대한 신뢰도를 높일 수 있다.
더하여, 그룹 비밀키의 생성을 주기적으로 수행하고, 또는 노드 그룹에 변경이 일어날 경우마다 수행함으로써, 그룹 비밀키의 노출 가능성을 최소화할 수 있다.
아울러, 노드가 트랜잭션을 생성할 경우, 블록체인 네트워크 상에 모두 배포된 그룹 비밀키를 통한 서명을 수행함으로써, 통신 딜레이로 인한 트랜잭션 검증 오류를 방지할 수 있다.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1은 일 실시예에 따른 분산 네트워크 시스템의 블록도이다.
도 2는 일 실시예에 따른 블록체인 구조를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 분산 네트워크 시스템에 포함되는 노드들의 종류를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 풀 노드에 대한 블록도를 나타낸다.
도 5는 일 실시예에 따른 라이트 노드에 대한 블록도를 나타낸다.
도 6은 일 실시예에 따른 서버에 대한 블록도를 나타낸다.
도 7은 일 실시예에 따른 게이트웨이의 등록 과정을 설명하기 위한 흐름도이다.
도 8은 일 실시예에 따른 게이트웨이의 관리 동작을 설명하기 위한 흐름도이다.
도 9a, 도 9b 및 도 9c는 일 실시예에서 노드가 그룹에 가입하는 동작을 설명하기 위한 흐름도이다.
도 10은 일 실시예에 따른 서버들 간의 게이트웨이 목록을 동기화하는 동작의 흐름도이다.
도 11은 일 실시예에 따라 게이트웨이가 블록을 생성하고 그룹의 노드들에게 블록 보상을 분배하는 동작을 설명하기 위한 흐름도이다.
도 12는 일 실시예에 따라 게이트웨이가 그룹의 노드의 요청에 따라 블록을 생성하고 블록 보상을 분배하는 동작을 설명하기 위한 흐름도이다.
도 13은 일 실시예에서 게이트웨이들 사이에 블록 생성 순서를 결정하는 방법의 순서도이다.
도 14는 일 실시예에서 게이트웨이들 사이에 블록 생성을 설명하기 위한 도면이다.
도 15일 실시예에 따라 게이트웨이가 그룹 비밀키를 생성하는 동작의 예시도이다.
도 16은 일 실시예에서 게이트웨이가 그룹 비밀키 및 그룹 공개키를 생성 및 배포하는 동작을 설명하기 위한 흐름도이다.
도 17은 일 실시예에서 노드가 그룹 비밀키의 선택에 따라 검증이 가능한 상황과 검증이 불가한 상황을 설명하기 위한 흐름도이다.
도 18은 일 실시예에 따라 각 그룹에 배포된 그룹 공개키 상태를 나타내는 예시도이다.
도 19는 일 실시예에 따른 그룹 비밀키 기반의 트랜잭션 이중 서명 및 그룹 공개키 기반의 트랜잭션 이중 검증의 개념도이다.
도면의 설명과 관련하여, 동일 또는 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
이하, 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 특정한 실시 형태에 대해 한정하려는 것이 아니며, 실시예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다.
도 1은 일 실시예에 따른 분산 네트워크 시스템(100)의 블록도이다.
도 1을 참조하면, 일 실시예에 따른 분산 네트워크 시스템(100)은 복수의 컴퓨팅 장치(110, 120, 130, 140)를 통하여 구현될 수 있다. 도 1에서 4개의 컴퓨팅 장치(110, 120, 130, 140)가 도시 되었으나, 이에 한정되지 않고 분산 네트워크 시스템(100)은 도시되지 않은 임의의 수의 컴퓨팅 장치를 더 포함할 수 있다.
네트워크(105)는 유선 네트워크 및/또는 무선 네트워크를 포함할 수 있다. 예를 들어, 네트워크(105)는 LAN(local area network), WAN(wide area network), 가상 네트워크, 원격 통신 네트워크 중 적어도 하나일 수 있다.
분산 네트워크 시스템(100)은 컴퓨팅 장치들(110, 120, 130, 140)이 네트워크(105)를 통해 동작 가능하도록 서로 연결되어, 동일한 정보를 갖는 분산 데이터베이스를 공유하는 피투피 네트워크인 블록체인 네트워크를 구성할 수 있다.
컴퓨팅 장치(110, 120, 130, 140)들은 분산 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위인 트랜잭션(transaction)을 분산 네트워크 시스템(100)상에 발생시킬 수 있다. 컴퓨팅 장치(110, 120, 130, 140)들은 분산 네트워크 시스템(100)에서 발생하는 트랜잭션을 검증 및 실행하고, 트랜잭션의 기록을 블록체인(blockchain) 구조 형태로 저장하여, 분산 데이터베이스를 관리할 수 있다.
각각의 컴퓨팅 장치(110, 120, 130, 140)는 트랜잭션을 발생시키고, 트랜잭션의 무결성을 검증하기 위해 블록체인 계정 정보를 가질 수 있다. 블록체인 계정 정보는 비밀키(private key)와 공개키(public key) (이하 통칭하는 경우'개인키'로 지칭)를 포함할 수 있다. 비밀키는 트랜잭션이 올바른 자에 의해 발생한 것을 검증하도록 하기 위한 디지털 서명 수단으로서, 트랜잭션에 포함될 메시지와 비밀키를 해싱하여 생성할 수 있다.
공개키는 사용자의 계정 주소(account address)로 기능하거나, 트랜잭션에 포함된 디지털 서명이 올바른 사용자의 비밀키에 의해 생성된 것임을 검증하기 위한 수단으로 기능할 수 있다.
본 문서의 실시예에 따르면, 컴퓨팅 장치(110, 120, 130, 140)들은 개인키와 더불어, 이중적으로 트랜잭션의 서명 및 검증 역할에 사용되는 그룹 비밀키(group private key) 및 그룹 공개키(group public key) (이하 통칭하는 경우'그룹키'로 지칭)를 보유할 수 있다. 그룹키에 대한 보다 자세한 설명은 도 15 내지 도 19와 함께 후술하기로 한다.
컴퓨팅 장치(110, 120, 130, 140)들은 트랜잭션이 발생하면, 발생한 트랜잭션의 무결성을 검증하고, 분산 네트워크 시스템(100)에서 약속된 합의 알고리즘(예: POW, POS, DPOS 등)에 기초해 기 생성된 블록에 이어질 새로운 블록을 생성하며, 새로이 생성된 블록은 다른 컴퓨팅 장치(110, 120, 130, 140)들에게 전파되면서 트랜잭션이 실행될 수 있다. 블록은 복수의 트랜잭션 정보를 포함할 수 있다.
도 2는 일 실시예에 따른 블록체인 구조를 설명하기 위한 도면이다.
도 2의 (1)을 참조하면, 블록체인은 블록 단위로 저장된 데이터들이 선형적으로 연결될 수 있다. 각 블록은 이전 블록(예를 들어, ‘블록2’의 이전 블록은 ‘블록1’)을 가리킴으로써 연결될 수 있다. 다만, 블록의 연결 형태가 이러한 예시에 한정되는 것은 아니다.
도 2의 (2)를 참조하면, 블록(210)은 헤더(header)(220)와 바디(body)(230)로 구성될 수 있다.
헤더(220)에 저장된 데이터들은 해당 블록(210)에 대한 요약 정보로 이해될 수 있다. 헤더(220)는 소프트웨어의 버전 정보인 소프트웨어 버전, 이전 블록의 헤더의 해시 값으로서 이전 블록을 가리키는 해시 포인터 역할을 하는 이전 블록 해시, 트랜잭션들을 요약한 정보인 머클 루트(Merkle Root), 블록(210)이 생성된 날짜 및 시간인 타임 스탬프를 포함할 수 있다. 블록 해시 값은 블록(210)의 헤더(220)에 저장된 데이터들을 기초로 계산될 수 있다. 다음 블록은 이전 블록의 블록 해시 값을 저장함으로써 이전 블록을 가리킬 수 있다. 이에 따라 분산 네트워크 시스템(100)은 블록체인 네트워크 시스템으로 호칭될 수 있다.
바디(230)는 블록(210) 내에 저장 및 보존의 대상이 되는 데이터인 트랜잭션들을 포함하는 트랜잭션 목록 및 블록(210)에 포함된 트랜잭션의 총 개수인 트랜잭션 개수를 포함할 수 있다. 예를 들어, 트랜잭션은 거래 내역일 수 있으나, 예시일 뿐 이에 한정되지 않는다.
컴퓨팅 장치(110)는 프로세서(111) 및 메모리(112)를 포함할 수 있다. 예를 들어, 메모리(112)는 RAM(random access memory), 메모리 버퍼, 하드 드라이브, 데이터베이스, EPROM(erasable programmable read-only memory), EEPROM(electrically erasable read-only memory), ROM(read-only memory) 및/또는 등등을 포함할 수 있다.
프로세서(111)는 범용 프로세서, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit), DSP(Digital Signal Processor) 및/또는 등등일 수 있다.
컴퓨팅 장치(110, 120, 130, 140)의 하나 이상의 부분은 하드웨어 기반 모듈(예를 들어, DSP(digital signal processor), FPGA(field programmable gate array)) 및/또는 소프트웨어 기반 모듈(예를 들어, 메모리에 저장되고 및/또는 프로세서에서 실행되는 컴퓨터 코드의 모듈)을 포함할 수 있다. 일부 실시예에서, 컴퓨팅 장치(110, 120, 130, 140)와 연관된 하나 이상의 기능(예를 들어, 프로세서(111,121,131,141)와 연관된 기능)은 하나 이상의 모듈에 포함될 수 있다.
컴퓨팅 장치(110)의 메모리(112)는 분산 데이터베이스(114)를 포함할 수 있다. 컴퓨팅 장치들(110, 120, 130, 140)은 네트워크(105)를 통하여 분산 데이터베이스(114, 124, 134, 144)를 구현할 수 있다. 분산 데이터베이스(114, 124, 134, 144)는 복수 개의 컴퓨팅 장치(110, 120, 130, 140)들이 같은 정보를 공유하는 공공 원장(public ledger)으로 이해될 수 있다. 프로세서(111)는 다른 컴퓨팅 장치로부터 트랜잭션(transaction)(예: 분산 데이터베이스의 데이터를 변경시키기 위한 메시지)과 연관된 동기화 데이터 등등을 수신하는 것에 응답하여 분산 데이터베이스(114)를 업데이트하기 위해 모듈, 기능 및/또는 프로세스를 실행하도록 구성될 수 있다.
도 3은 일 실시예에 따른 분산 네트워크 시스템(100)에 포함되는 노드들의 종류를 설명하기 위한 도면이다.
도 3을 참조하면, 분산 네트워크 시스템(100)에 포함되는 컴퓨팅 장치들(예: 도 1의 컴퓨팅 장치들(110, 120, 130, 140)) 각각은 노드(node)로 이해될 수 있다. 분산 네트워크 시스템(100)에 포함되는 노드들은 풀 노드(full node)(300)와 라이트 노드(light node)(400)로 구분될 수 있다.
풀 노드(300)는, 블록체인(200)에 포함되는 모든 정보(예: 헤더(220) 정보 및 바디(230) 정보)를 실시간으로 동기화하고 유지하는 노드이다. 라이트 노드(400)는 트랜잭션 기능(예: 지갑 기능)을 수행할 수 있는 노드이다. 라이트 노드(400)는 트랜잭션을 발생시키고, 발생한 트랜잭션을 네트워크(105)를 통하여 이웃 노드에게 전파할 수 있다. 일부 실시예에서, 라이트 노드(400)는 블록체인(300)에 포함되는 일부 정보(예: 헤더(220) 정보)만을 가지고, 생성된 블록에 대한 검증을 수행할 수도 있다.
이하, 풀 노드(300)와 라이트 노드(400)는 분산 네트워크 시스템(100)에 포함되는 노드(600)로 통칭될 수 있다.
분산 네트워크 시스템(100)에 포함된 노드들은 위치 정보에 기초하여 서로 다른 또는 동일한 그룹에 소속될 수 있다. 위치적으로 가까운 곳에 위치한 노드들은 같은 그룹으로 분류될 수 있다.
그룹은 분산 네트워크 시스템(100)과 통신하는 적어도 하나 이상의 서버(도 6의 500)에 의하여 결정될 수 있다. 이하 하나의 서버(500)로 설명하나, 복수의 서버들(500)이 그룹의 분류를 수행할 수 있다. 서버(500)는 노드들의 위치 정보를 기초로, 인접한 노드를 같은 그룹으로 분류할 수 있다. 이에 따라 상호간에 통신을 자주 수행하는 이웃 노드들이 한 그룹에 속하게 되고, 통신의 효율성이 증가될 수 있다. 서버(500)는 서드 파티에 의하여 운영될 수 있다.
풀 노드(300)의 적어도 일부는 게이트웨이(gateway 또는 GW, 본 문서의 일부에서'노드 그룹 관리 장치'로도 지칭됨)(301)로 동작할 수 있다. 게이트웨이(301)는 블록(210)을 생성할 수 있고, 하나의 그룹을 관리할 수 있다. 게이트웨이(301)는 블록(210)을 생성함으로써 블록 보상을 수령하고, 수령한 블록 보상을 자신이 속한 그룹의 노드들에게 분배할 수 있다. 서로 다른 게이트웨이(301)는 서로 다른 그룹을 관리할 수 있다. 게이트웨이(301)는 그룹 비밀키 및 그룹 공개키를 생성할 수 있고, 같은 그룹 내의 노드에 그룹 비밀키를 공유하고, 그룹의 외부에 그룹 공개키를 배포할 수 있다.
도 3에서, 그룹 1은 4개의 풀 노드(300)와 6개의 라이트 노드(400)를 포함하고 있다. 4개의 풀 노드(300) 중 1개의 풀 노드(300)가 게이트웨이(301)로 동작할 수 있다. 게이트웨이(301)는 그룹 1에 소속된 노드들에 대한 정보를 가질 수 있다. 게이트웨이(301)는 블록 보상을 수령하면 그룹 1에 소속된 노드들에게 블록 보상을 분배할 수 있다. 분산 네트워크 시스템(100)은 하나 이상의 그룹을 가질 수 있고, 각각의 그룹은 적어도 하나의 게이트웨이(301)를 가질 수 있다.
그룹 1를 비롯한 각 그룹의 그룹 구성 및 각 노드의 개수는 예시적인 것에 불과하며, 게이트웨이(301)로 동작 가능한 하나의 풀 노드를 제외하고 풀 노드(300)의 개수 및 라이트 노드(400)의 개수는 임의로 정해질 수 있다. 일 실시예에 따라, 하나의 그룹에 포함되는 노드들의 총 개수는 최대 512개일 수 있으나, 예시일 뿐 이에 한정되지 않는다.
도 4는 일 실시예에 따른 풀 노드(300)에 대한 블록도를 나타낸다.
도 4를 참조하면, 풀 노드(300)는 통신 인터페이스(305), 프로세서(310), 메모리(320)를 포함할 수 있다. 풀 노드(300)는 통신 인터페이스(305)를 통하여 분산 네트워크 시스템(100)에 포함되는 노드들 및 서버(500)와 통신을 수행할 수 있다.
프로세서(310)는 트랜잭션 생성모듈(312) 및 트랜잭션 검증모듈(314)을 포함할 수 있다.
또한, 풀 노드(300)가 게이트웨이(301)로 동작하는 경우, 프로세서(310)는 그룹 비밀키 생성모듈(316) 및 그룹 공개키 생성모듈(318)을 더 포함할 수 있다.
프로세서(310)는 메모리(320)에 저장된 명령어들을 실행하여 트랜잭션 생성모듈(312), 트랜잭션 검증모듈(314), 그룹 비밀키 생성모듈(316) 및 그룹 공개키 생성모듈(318) 중 적어도 하나를 구동시킬 수 있다. 트랜잭션 생성모듈(312), 트랜잭션 검증모듈(314), 그룹 비밀키 생성모듈(316) 및 그룹 공개키 생성모듈(318) 각각은 지갑 프로그램(328)에 포함된 명령어들이 실행되어 구동될 수 있으나 이에 한정되지 않는다.
트랜잭션 생성모듈(312), 트랜잭션 검증모듈(314), 그룹 비밀키 생성모듈(316) 및 그룹 공개키 생성모듈(318) 각각은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수도 있다. 트랜잭션 생성모듈(312), 트랜잭션 검증모듈(314), 그룹 비밀키 생성모듈(316) 및 그룹 공개키 생성모듈(318) 각각에 의해 수행되는 동작은 프로세서(310)에 의해 수행되는 동작으로 이해될 수 있다.
트랜잭션 생성모듈(312)은 블록 내에 저장 및 보존의 대상이 되는 데이터(예: 거래 내역)를 블록에 포함시킬 것을 요청하는 트랜잭션을 생성할 수 있다. 트랜잭션 생성모듈(312)은 비밀키를 이용한 전자서명과 그룹키를 이용한 디지털 서명을 트랜잭션에 포함시킬 수 있다.
트랜잭션 검증모듈(314)은 스스로 생성한 트랜잭션 또는 다른 노드로부터 수신한 트랜잭션을 개인 공개키 및 그룹 공개키에 기반하여 검증할 수 있다.
비밀키 및 그룹키를 이용한 디지털 서명과 트랜잭션의 검증은 도 18 및 도 19에서 자세히 후술한다.
그룹 비밀키 생성모듈(316)은 게이트웨이(301)인 풀 노드(300)가 관리하는 그룹 내에 포함된 노드들의 정보를 기초로 그룹 비밀키를 생성할 수 있다. 그룹 비밀키는 동일한 그룹 내부의 노드들 사이에만 공유되는 정보로서, 비밀키와 함께 트랜잭션의 서명에 이용될 수 있다.
그룹 공개키 생성모듈(318)은 생성된 그룹 비밀키에 대한 연산을 통해 그룹 공개키를 생성할 수 있다. 그룹 공개키는 그룹 외부의 블록체인 네트워크에 배포되는 정보로서 트랜잭션 서명의 검증에 이용될 수 있다.
메모리(320)는 블록체인 정보(322)(예: 도 2의 블록체인(200)과 연관된 정보), 서버 목록(324), 그룹 가입 내역(326), 지갑 프로그램(328) 및 그룹키 목록(329)을 포함할 수 있다.
블록체인 정보(322)는 도 2의 블록체인(200)에 포함되는 정보를 포함할 수 있다. 본 문서에 개시된 다양한 실시예들에 따른 풀 노드(300)는 윈도우나 리눅스 환경의 컴퓨팅 장치일 수 있다. 풀 노드(300)는 블록체인(200)과 관련된 정보를 저장하고 실시간으로 동기화할 수 있는 하드웨어 자원을 가질 수 있다.
서버 목록(324)은 분산 네트워크 시스템(100)의 노드들에 대하여 그룹핑을 수행하는 서버들과 연관된 정보를 포함할 수 있다. 예를 들어, 서버 목록(324)은 서버(500)의 고유 ID와 서버(500) 위치 정보(IP, 위도, 경도)를 포함할 수 있다. 풀 노드(300)는 그룹에 가입하거나 게이트웨이(301)가 되기 위하여 서버 목록(324)에 포함되는 적어도 하나의 서버(500)에 요청을 보낼 수 있다.
그룹 가입 내역(326)은 풀 노드(300)가 이전에 그룹에 가입한 이력이 있는 경우, 그 그룹과 연관된 정보를 포함할 수 있다. 예를 들어 그룹 가입 내역(326)은 가입했던 그룹의 게이트웨이(301)의 계정 정보를 포함할 수 있다.
지갑 프로그램(328)은 트랜잭션의 생성 및 검증을 위한 명령어와 관련 데이터를 포함할 수 있다. 일 실시예에 따라, 풀 노드(300)가 게이트웨이(301)로 동작하는 경우, 지갑 프로그램(328)은 그룹 비밀키와 그룹 공개키의 생성을 위한 명령어와 관련 데이터를 포함할 수 있다. 풀 노드(300)의 계정은 지갑 프로그램(328)의 노드 주소가 될 수 있다. 지갑 프로그램(328)은 윈도우나 리눅스의 환경에서 동작하는 프로그램일 수 있다.
그룹키 목록(329)은 풀 노드(300)가 속한 그룹의 그룹 비밀키 및 풀 노드(300)가 속한 그룹을 비롯한 외부 그룹에서 생성된 그룹 공개키를 저장할 수 있다. 풀 노드(300)는 그룹 비밀키 및 그룹 공개키가 생성된 그룹에 관한 정보, 및 그룹 비밀키가 생성된 순서 정보와 그룹 공개키가 생성된 순서 정보를 함께 저장할 수 있다. 이에 대한 보다 상세한 설명은 도 15 내지 19와 함께 후술한다.
풀 노드(300)가 게이트웨이(301)로 동작하는 경우, 풀 노드(300)는 게이트웨이 목록(330)과 노드 풀(335)을 더 포함할 수 있다. 게이트웨이 목록(330)은 현재 게이트웨이(301)로 동작하며 그룹을 운영하고 있는 게이트웨이(301-1, 301-2, ~ 301-n)들과 연관된 정보를 포함할 수 있다. 게이트웨이 목록(330)은 서버(500)에도 보관될 수 있고, 서버(500)의 동작 불가와 같은 예외 상황에서 백업 역할을 할 수 있다.
다양한 실시예에서, 하나의 풀 노드(300)가 복수 개의 게이트웨이로 동작할 수 있다. 이 경우, 상기 복수 개의 게이트웨이들은 IP가 동일하지만, 상이한 포트 번호를 가질 수 있다.
노드 풀(335)은 게이트웨이(301)가 운영하는 그룹에 소속된 노드들(컴퓨팅 장치들)과 연관된 정보를 포함할 수 있다. 노드 풀(335)은 자신의 그룹에 속하는 노드(600)의 목록을 포함할 수 있다. 예를 들어, 노드 풀(335)은 자신의 그룹에 속하는 노드(600)의 공개키 및 각 노드(600)를 식별하는 인덱스 정보를 포함할 수 있고, 인덱스 정보와 공개키는 매핑되어 저장될 수 있다.
도 5는 일 실시예에 따른 라이트 노드(400)에 대한 블록도를 나타낸다. 도 5를 참조하면, 라이트 노드(400)는 통신 인터페이스(405), 프로세서(410), 메모리(420)를 포함할 수 있다. 라이트 노드(400)는 통신 인터페이스(405)를 통하여 분산 네트워크 시스템(100)에 포함되는 노드들 및 서버(500)와 통신을 수행할 수 있다.
프로세서(510)는 트랜잭션 생성모듈(412)을 포함할 수 있다. 예를 들어, 프로세서(510)는 메모리(520)에 저장된 명령어들을 실행하여 트랜잭션 생성모듈(412)을 구동시킬 수 있다. 트랜잭션 생성모듈(412)은 지갑 프로그램(422)에 포함된 명령어들이 실행되어 구동될 수 있으나, 이에 한정되지 않는다.
트랜잭션 생성모듈(412)은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수도 있다. 트랜잭션 생성모듈(412)에 의해 수행되는 동작은 프로세서(410)에 의해 수행되는 동작으로 이해될 수 있다.
트랜잭션 생성모듈(412)은 블록 내에 저장 및 보존의 대상이 되는 데이터(예: 거래 내역)를 블록에 포함시킬 것을 요청하는 트랜잭션을 생성할 수 있다. 트랜잭션 생성모듈(412)은 비밀키를 이용한 전자서명과 그룹키를 이용한 전자서명을 트랜잭션에 포함시킬 수 있다. 트랜잭션 생성모듈(412)은 생성된 그룹키의 순서 정보를 고려하여 트랜잭션의 서명에 사용될 그룹 비밀키를 선택할 수 있다. 이에 대한 설명은 도 18 및 19와 함께 후술한다.
라이트 노드(400)는 메모리(420)에 지갑 프로그램(422), 서버 목록(424), 및 그룹 가입 내역(426)을 저장할 수 있다.
지갑 프로그램(422)은 트랜잭션의 생성 및 검증을 위한 명령어와 관련 데이터를 포함할 수 있다. 지갑 프로그램(422)은 안드로이드나 IOS 같은 모바일 환경에서 동작하는 프로그램일 수 있다. 서버 목록(424)와 그룹 가입 내역(426)은 풀 노드(300)의 서버 목록(324) 및 그룹 가입 내역(326)과 실질적으로 동일하다.
그룹키 목록(428)은 라이트 노드(400)가 속한 그룹의 그룹 비밀키를 저장할 수 있다. 여기서, 그룹키 목록(428)은 풀 노드(300)의 그룹키 목록(329)와 달리 각 그룹별 그룹 공개키를 포함하지 않는데, 이는 라이트 노드(400)는 트랜잭션에 대한 검증을 수행하지 않기 때문이다.
도 6은 일 실시예에 따른 서버(500)에 대한 블록도를 나타낸다. 도 6을 참조하면, 서버(500)는 통신 인터페이스(505), 프로세서(510), 및 메모리(520)를 포함할 수 있다. 서버(500)는 통신 인터페이스(505)를 통하여 분산 네트워크 시스템(100)의 노드들(풀 노드(300), 라이트 노드(400))과 통신을 수행할 수 있다.
프로세서(510)는 그룹핑 모듈(512)을 포함할 수 있다. 예를 들어, 프로세서(510)는 메모리(520)에 저장된 명령어들을 실행하여 그룹핑 모듈(512)을 구동시킬 수 있다. 그룹핑 모듈(512)은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 그룹핑 모듈(512)에 의해 수행되는 동작은 프로세서(510)에 의해 수행되는 동작으로 이해될 수 있다. 그룹핑 모듈(512)은 노드들의 위치 정보를 기초로 노드들에 대한 그룹을 결정할 수 있다.
메모리(520)는 게이트웨이 목록(522)과 서버 목록(524)을 저장할 수 있다. 게이트웨이 목록(522)은 풀 노드(300)에 저장되는 게이트웨이 목록(330)과 서로 동기화될 수 있다. 서버 목록(524)은 서버(500)와 동일한 역할을 수행하는 다른 서버들에 대한 정보를 포함할 수 있다.
도 7은 일 실시예에 따른 게이트웨이의 등록 과정을 설명하기 위한 흐름도이다.
풀 노드(300)는 게이트웨이(301)로 동작하기 위하여 어느 하나의 서버(제1 서버(500-1))로 게이트웨이 등록 요청 메시지를 송신할 수 있다(701). 풀 노드(300)는 내부에 저장된 서버 목록을 이용하여, 서버 목록에 포함되는 어느 하나의 서버로 상기 메시지를 송신할 수 있다. 예를 들어, 제1 서버(500-1)에 상기 메시지가 송신된 예시가 도시되었다.
게이트웨이 등록 메시지는 풀 노드(300)의 IP 주소 정보, 풀 노드(300)의 포트(port) 번호 정보, 풀 노드(300)의 위도 정보, 풀 노드(300)의 경도 정보 중 적어도 어느 하나 정보를 포함할 수 있다. 상기 정보들은 게이트웨이(301)의 위치와 연관된 정보로 이해될 수 있다.
제1 서버(500-1)는 수신된 게이트웨이 등록 메시지의 유효성을 검사하고(703), 게이트웨이 등록 응답 메시지를 풀 노드(300)로 송신할 수 있다(705). 제1 서버(500-1)는 게이트웨이 등록 요청 메시지에 포함된 데이터와 게이트웨이 목록 정보를 비교할 수 있다. 제1 서버(500-1)는 풀 노드(300)의 위치와 연관된 정보를 이용하여, 상기 풀 노드(300)와 인접한 위치에 있는 게이트웨이(301)를 게이트웨이 목록 중에서 선택할 수 있다.
게이트웨이 등록 응답 메시지는, 게이트웨이 등록 메시지에 대한 처리 결과에 대한 성공/실패 여부(return_val)를 포함할 수 있고, 상기 풀 노드(300)에 할당될 게이트웨이 ID를 포함할 수 있다.
풀 노드(300)는 게이트웨이 등록 응답 메시지에 포함된 상기 처리 결과가 성공인 경우, 수신된 게이트웨이 ID를 자신의 ID 로 등록하고(707), 제1 서버(500-1)에 게이트웨이 등록 처리 메시지를 송신할 수 있다(709). 게이트웨이 등록 처리 메시지는 풀 노드(300)가 등록한 게이트웨이 ID를 포함할 수 있다. 만약, 게이트웨이 등록 응답 메시지에 포함된 상기 처리 결과가 실패인 경우, 풀 노드(300)는 서버 목록에 포함된 다른 서버로 동작 701 내지 동작 709 동작을 수행하게 된다.
제1 서버(500-1)는 게이트웨이 등록 처리 메시지를 수신하면, 그에 포함된 게이트웨이 ID를 이용하여 게이트웨이 목록을 갱신할 수 있다(711). 제1 서버(500-1)는 게이트웨이 추가 요청 메시지를 다른 서버들에게 전송함으로써, 갱신된 게이트웨이 목록을 전파할 수 있다. 게이트웨이 추가 요청 메시지는 아래의 정보들 중 적어도 하나 이상의 정보를 포함할 수 있다. 게이트웨이 추가 요청 메시지는 제1 서버(500-1)의 동기화 인덱스(번호)를 포함할 수 있다. 동기화 인덱스는 게이트웨이 목록이 갱신될 때(게이트웨이가 추가될 때) 갱신되는 숫자일 수 있다. 예를 들어, 동기화 인덱스는 0 ~ (pow(2,32)-1)값의 범위 내의 숫자일 수 있다. 게이트웨이 추가 요청 메시지는 제1 서버(500-1)에 등록된 게이트웨이 개수와 제1 서버(500-1)에 포함된 게이트웨이 목록을 포함할 수 있다. 게이트웨이 추가 요청 메시지는 게이트웨이 목록에 포함된 게이트웨이의 IP 주소, 포트 번호, 위도 정보, 경도 정보 중 적어도 하나를 포함할 수 있다.
게이트웨이 추가 요청 메시지는, 예를 들어, 제1 서버(500-1)에 저장된 서버 목록에 포함된 제2 서버(500-2) 내지 제n 서버(500-n)에 전송될 수 있다(713, 717). 게이트웨이 추가 요청 메시지를 수신한 제2 서버(500-2)는 상기 메시지를 송신한 제1 서버(500-1)를 식별할 수 있다. 예를 들어 제2 서버(500-2)는 상기 메시지가 송신된 송신지의 IP를 이용하여 제1 서버(500-1)를 식별할 수 있다. 제2 서버(500-2)는 제2 서버(500-2)에 저장된 게이트웨이 목록을 로드할 수 있다. 구체적으로, 제2 서버(500-2)는 수신된 메시지에 포함된 제1 동기화 인덱스와 제2 서버(500-2)에 저장된 제2 동기화 인덱스를 비교할 수 있다. 만약 제1 동기화 인덱스가 제2 동기화 인덱스보다 크다면, 제2 서버(500-2)는 제2 서버(500-2)에 저장된 게이트웨이 목록을 상기 메시지를 통하여 수신된 게이트웨이 목록으로 갱신하고, 자신의 제2 동기화 인덱스를 갱신할 수 있다. 게이트웨이 갱신 과정이 완료되면, 제2 서버(500-2)는 처리 결과가 반영된 게이트웨이 추가 응답 메시지를 제1 서버(500-1)로 전송할 수 있다(715). 713 동작 내지 715 동작은 제1 서버(500-1)의 서버 목록에 포함된 제2 서버(500-2) 외에 제3 서버 내지 제 n 서버(500-n)에 대하여 수행될 수 있다.
도 8은 일 실시예에 따른 게이트웨이의 관리 동작을 설명하기 위한 흐름도이다.
풀 노드(300)가 제1 서버(500-1)에 의하여 게이트웨이(301)로 등록되면, 제1 서버(500-1)는 게이트웨이(301)를 관할하게 된다. 또한 풀 노드(300)는 게이트웨이(301)로서 동작을 수행하게 된다. 제1 서버(500-1)는 주기적으로 게이트웨이(301)에 메시지가 도달가능한지 여부를 검사할 수 있다. 예를 들어, 제1 서버(500-1)는 핑 메시지를 게이트웨이(301)로 전송하고(801), 그에 대한 응답 메시지를 수신함으로써(803) 게이트웨이(301)가 정상 동작 중인지 여부를 판단할 수 있다. 동작 801 및 동작 803은 미리 정해진 주기(예: 2분)마다 반복하여 수행될 수 있다.
예를 들어, 핑 메시지는 핑 메시지를 식별하기 위한 임의의 수를 포함할 수 있다. 핑 응답 메시지는 수신한 핑 메시지에 포함된 임의의 수를 포함할 수 있다. 제1 서버(500-1)는 상기 임의의 수를 비교함으로써, 해당 핑 메시지에 대한 응답이 수신된 것을 확인할 수 있다.
만약 제1 서버(500-1)가 게이트웨이(301)에 반복적으로 핑 메시지를 보냈으나 그에 대한 응답이 없는 경우에는, 게이트웨이(301)를 게이트웨이 목록에서 삭제할 수 있다(807). 예를 들어, 제1 서버(500-1)는 미리 정해진 횟수(예: 3회)의 핑 메시지를 전송하고 그에 대한 응답이 수신되지 않는 경우, 해당 게이트웨이(301)에서 관련 프로그램이 종료되었거나, 게이트웨이(301)의 네트워크가 단절된 것으로 판단할 수 있다.
이 경우 제1 서버(500-1)는 다른 서버들에게 게이트웨이 삭제 요청 메시지를 전송함으로써, 다른 서버들과 게이트웨이 목록을 동기화할 수 있다(809, 813). 게이트웨이 삭제 요청 메시지는 제1 서버(500-1)의 동기화 인덱스(번호)를 포함할 수 있다. 동기화 인덱스는 게이트웨이 목록이 갱신될 때(즉, 게이트웨이가 삭제될 때) 갱신되는 숫자일 수 있다. 예를 들어, 동기화 인덱스는 0 ~ (pow(2,32)-1)값의 범위 내의 숫자일 수 있다. 게이트웨이 삭제 요청 메시지는 제1 서버(500-1)에 등록된 게이트웨이 개수와 제1 서버(500-1)에 포함된 게이트웨이 목록을 포함할 수 있다.
게이트웨이 삭제 요청 메시지는, 예를 들어, 제1 서버(500-1)에 저장된 서버 목록에 포함된 제2 서버(500-2) 내지 제n 서버(500-n)에 전송될 수 있다(809, 813). 게이트웨이 삭제 요청 메시지를 수신한 제2 서버(500-2)는 상기 메시지를 송신한 제1 서버(500-1)를 식별할 수 있다. 예를 들어 제2 서버(500-2)는 상기 메시지가 송신된 송신지의 IP를 이용하여 제1 서버(500-1)를 식별할 수 있다. 제2 서버(500-2)는 제2 서버(500-2)에 저장된 게이트웨이 목록을 로드할 수 있다. 구체적으로, 제2 서버(500-2)는 수신된 메시지에 포함된 제1 동기화 인덱스와 제2 서버(500-2)에 저장된 제2 동기화 인덱스를 비교할 수 있다. 만약 제1 동기화 인덱스가 제2 동기화 인덱스보다 크다면, 제2 서버(500-2)는 제2 서버(500-2)에 저장된 게이트웨이 목록을 상기 메시지를 통하여 수신된 게이트웨이 목록으로 갱신하고, 자신의 제2 동기화 인덱스를 갱신할 수 있다. 게이트웨이 갱신 과정이 완료되면, 제2 서버(500-2)는 처리 결과가 반영된 게이트웨이 삭제 응답 메시지를 제1 서버(500-1)로 전송할 수 있다(811). 809 동작 및 813 동작은 제1 서버(500-1)의 서버 목록에 포함된 제2 서버(500-2) 외에 제3 서버 내지 제 n 서버(500-n)에 대하여 수행될 수 있다.
도 9a, 도 9b 및 도 9c는 일 실시예에서 노드가 그룹에 가입하는 동작을 설명하기 위한 흐름도이다.
분산 네트워크 시스템(100)에 포함되는 풀 노드(300)(게이트웨이로 동작하지 않는 풀 노드)와 라이트 노드(400)는 적어도 하나의 게이트웨이(301)에 의하여 운영되는 어느 하나의 그룹에 가입할 수 있다. 이하, 라이트 노드(400)가 그룹에 가입하는 동작을 예시로서 설명하나, 풀 노드(300)도 같은 동작을 수행함으로써 그룹에 가입할 수 있다.
일 예에서, 라이트 노드(400)는 그룹 가입 내역을 포함할 수 있다. 그룹 가입 내역은 예를 들어, 분산 네트워크 시스템(100)의 적어도 하나의 게이트웨이와 연결된 이력이 있을 경우 연결되었던 게이트웨이와 연관된 정보를 포함할 수 있다.
라이트 노드(400)는 그룹 가입 내역을 조회할 수 있다(901). 그룹 가입 내역은 적어도 하나의 게이트웨이의 주소를 포함할 수 있다. 예를 들어, 상기 주소는 게이트웨이의 주소로 분산 네트워크 시스템(100)상에 등록되어 있는 주소(예: 퍼블릭 키, 지갑 주소)로 이해될 수 있다. 그룹 가입 내역은 예를 들어, 제1 게이트웨이(301-1)의 주소, 및 제2 게이트웨이(301-2)의 주소를 포함할 수 있다. 라이트 노드(400)는 그룹 가입 내역에서 제1 게이트웨이(301-1)를 먼저 선택하고(903), 제1 게이트웨이(301-1)로 그룹 가입 요청 메시지를 전송할 수 있다(905). 그룹 가입 요청 메시지는 라이트 노드(400)의 주소(예: 지갑 주소)를 포함할 수 있다. 제1 게이트웨이(301-1)는 그룹 가입 요청 메시지를 수신 받으면, 라이트 노드(400)의 가입 가능 여부를 확인할 수 있다(907). 제1 게이트웨이(301-1)는 수신된 라이트 노드(400)의 주소를 확인하고, 상기 라이트 노드(400)를 수용가능한지 여부를 확인할 수 있다. 예를 들어, 각각의 게이트웨이에 대하여 수용가능한 노드들의 개수가 제한될 수 있다. 상기 개수는 각각의 게이트웨이의 하드웨어 환경 및/또는 소프트웨어의 정책에 따라 미리 설정될 수 있다.
제1 게이트웨이(301-1)는, 라이트 노드(400)을 수용 가능한 경우, 라이트 노드(400)의 주소를 제1 게이트웨이(301-1)의 노드 풀에 저장할 수 있다. 제1 게이트웨이(301-1)는 라이트 노드(400)에 대응되는 노드 ID를 생성하고, 상기 노드 ID와 상기 라이트 노드(400)의 주소를 상기 노드 풀에 저장할 수 있다. 상기 노드 ID와 라이트 노드(400)의 주소는 매핑되어 저장될 수 있다.
그러나 제1 게이트웨이(301-1)가 라이트 노드(400)을 수용 불가능한 경우, 라이트 노드(400)는 다른 노드에 다시 그룹 가입 요청을 해야 한다.
제1 게이트웨이(301-1)는 라이트 노드(400)의 그룹 가입 요청 메시지에 대한, 그룹 가입 응답 메시지를 라이트 노드(400)에 전송할 수 있다. 그룹 가입 응답 메시지는, 그룹 가입 요청에 대한 성공/실패 여부를 포함할 수 있다. 또한 그룹 가입이 성공한 경우, 라이트 노드(400)에 대하여 생성된 노드 ID가 포함될 수 있다.
예를 들어, 제1 게이트웨이(301-1)가 라이트 노드(400)를 수용할 수 없는 경우, 실패(예: null)의 응답을 포함하는 그룹 가입 응답 메시지를 라이트 노드(400)로 전송할 수 있다(909). 라이트 노드(400)는 수신된 그룹 가입 응답 메시지를 파싱하고, 실패 여부를 확인하면, 그룹 가입 내역 중 제1 게이트웨이(301-1)가 아닌 다른 게이트웨이를 선택할 수 있다. 만약 그룹 가입 내역에 다른 게이트웨이가 더 이상 없을 경우에는, 라이트 노드(400)는 도 9b를 통해 후술될 동작들을 수행할 수 있다.
도 9a에서, 라이트 노드(400)는 그룹 가입 내역에 포함된 제2 게이트웨이(301-2)를 선택할 수 있다(911). 라이트 노드(400)는 제2 게이트웨이(301-2)로 그룹 가입 요청 메시지를 전송할 수 있다(913). 제2 게이트웨이(301-2)는 수신된 라이트 노드(400)의 주소를 확인하고, 상기 라이트 노드(400)를 수용가능한지 여부를 확인할 수 있다(915). 제2 게이트웨이(301-2)는, 라이트 노드(400)를 수용 가능한 경우, 라이트 노드(400)의 주소를 제2 게이트웨이(301-2)의 노드 풀에 저장할 수 있다(917). 예를 들어, 제2 게이트웨이(301-2)는 라이트 노드(400)에 대응되는 노드 ID를 생성하고, 상기 노드 ID와 상기 라이트 노드(400)의 주소를 상기 노드 풀에 저장할 수 있다. 제2 게이트웨이(301-2)는 라이트 노드(400)의 그룹 가입 요청 메시지에 대한, 그룹 가입 응답 메시지를 라이트 노드(400)에 전송할 수 있다(919). 해당 그룹 가입 응답 메시지는 그룹 가입 요청에 대한 성공의 응답을 포함할 수 있고, 라이트 노드(400)에 대한 노드 ID를 포함할 수 있다.
도 9b를 참조하면, 라이트 노드(400)가 그룹 가입 내역을 포함하지 않는 경우, 라이트 노드(400)는 서버 목록에 포함되는 서버들 중 어느 하나의 서버(500)에 게이트웨이 정보 요청 메시지를 전송할 수 있다(950). 게이트웨이 정보 요청 메시지는 라이트 노드(400)의 IP 정보, 라이트 노드(400)의 포트 정보, 라이트 노드(400)의 위도 정보, 및 라이트 노드(400)의 경도 정보 중 적어도 하나의 정보를 포함할 수 있다.
서버(500)는 게이트웨이 정보 요청 메시지에 응답하여, 후보 게이트웨이 목록을 생성할 수 있다(953). 서버(500)는 게이트웨이 정보 응답 메시지를 전송할 수 있다(955). 게이트웨이 정보 응답 메시지는, 상기 생성한 후보 게이트웨이 목록과 후보 게이트웨이의 개수 정보를 포함할 수 있다.
라이트 노드(400)는 수신된 후보 게이트웨이 목록을 이용하여 도 9a를 통하여 상술된 동작 901 내지 동작 919을 수행할 수 있다. 만약 현재 가입 가능한 그룹이 없을 경우에 동작 951 내지 동작 955는 반복하여 수행될 수 있다.
도 9c를 참조하면 일 예시에서, 라이트 노드(400)는 라이트 노드(400)의 위치 정보로서 위도 정보 및/또는 경도 정보를 획득할 수 있다(961). 예를 들어, 라이트 노드(400)는 포터블 디바이스(예: 스마트폰, 태블릿 PC)일 수 있다. 라이트 노드(400)의 위치는 실시간으로 변경될 수 있다.
라이트 노드(400)는 상기 위도 정보 및/또는 경도 정보를 포함하는 게이트웨이 정보 요청 메시지를 서버(500)에 전송할 수 있다(963). 다양한 실시예에서, 라이트 노드(400)의 위도 좌표 및/또는 경도 좌표가 변경됨에 따라 서버(500)에 접속해야 할 게이트웨이에 대한 정보를 요청할 수 있다. 또는 라이트 노드(400)는 서버(500)에 일정 주기마다 현재의 위치 정보를 기초로 접속해야 할 게이트웨이에 대한 정보를 요청할 수 있다.
일부 실시예에서, 게이트웨이 정보 요청 메시지는 라이트 노드(400)가 요청한 게이트웨이의 개수, 라이트 노드(400)의 IP 주소, 라이트 노드(400)의 위도 정보, 및 라이트 노드(400)의 경도 정보를 포함할 수 있다.
서버(500)는 노드 대기 풀에 라이트 노드(400)를 등록할 수 있다(965). 서버(500)는 라이트 노드들로부터 게이트웨이 정보 요청 메시지를 수신하면, 상기 요청을 순차적으로 처리하기 위하여 노드 대기 풀을 운영할 수 있다. 이하 서버(500)의 동작들은 서버(500)의 프로세서(510)의 그룹핑 모듈(512)에 의하여 수행될 수 있다.
서버(500)는 게이트웨이 목록을 조회하고(967), 게이트웨이 목록에 포함된 게이트웨이들과 라이트 노드(400) 사이의 거리를 계산할 수 있다(969). 예를 들어, 서버(500)는 라이트 노드(400)의 위도 정보 및 경도 정보와 게이트웨이들의 위도 정보 및 경도 정보를 기초로, 양자 사이의 거리(예: GPS 좌표 상 거리)를 계산할 수 있다. 서버(500)는 게이트웨이 목록에 포함된 게이트웨이들에 대하여 상기 계산을 수행하고, 라이트 노드(400)와 가까운 거리를 가지는 순서로 후보 게이트웨이를 결정할 수 있다. 서버(500)는 결정된 후보 게이트웨이들이 포함된 후보 게이트웨이 목록을 생성할 수 있다(971). 후보 게이트웨이 목록은 라이트 노드(400)에 의하여 요청된 개수의 후보 게이트웨이들을 포함할 수 있다. 서버(500)는 후보 게이트웨이 목록을 포함하는 게이트웨이 정보 응답 메시지를 라이트 노드(400)에 전송할 수 있다(983).
도 10은 일 실시예에 따른 서버들 간의 게이트웨이 목록을 동기화하는 동작의 흐름도이다.
서버(500)는 미리 정해진 주기마다 서버(500)에 포함된 게이트웨이 목록을 다른 서버에 공유할 수 있다. 도 10을 참조하면, 예를 들어 제1 서버(500-1)와 제2 서버(500-2)의 동기화 과정이 예시되었다. 제2 서버(500-2)는 게이트웨이 목록에 대한 동기화 요청 메시지를 제1 서버(500-1)로 전송할 수 있다(1001). 상기 동기화 요청 메시지는, 제2 서버(500-2)에 저장된 동기화 인덱스(번호), 게이트웨이 목록을 포함할 수 있다. 동기화 인덱스는 게이트웨이 목록이 갱신될 때 갱신되는 숫자일 수 있다. 예를 들어, 동기화 인덱스는 0 ~ (pow(2,32)-1)값의 범위 내의 숫자일 수 있다.
제1 서버(500-1)는 제1 서버(500-1)에 저장된 제1 동기화 인덱스와 제2 서버(500-2)로부터 수신된 제2 동기화 인덱스를 비교할 수 있다. 만약 제2 동기화 인덱스가 제1 동기화 인덱스보다 크다면, 제1 서버(500-1)는 제1 서버(500-1)에 저장된 게이트웨이 목록을 상기 메시지를 통하여 수신된 게이트웨이 목록으로 갱신하고, 자신의 제1 동기화 인덱스를 갱신할 수 있다(1003). 제1 서버(500-1)는 동기화 요청 응답 메시지를 제2 서버(500-2)로 전송할 수 있다. 동기화 요청 응답 메시지는 동기화 요청에 대한 처리 결과(성공 또는 실패)를 포함할 수 있다. 동작 1001 내지 동작 1005는 미리 정해진 주기마다 분산 네트워크 시스템(100)에 포함되는 서로 다른 서버들 사이에 수행될 수 있다.
다양한 실시예에서, 새로 추가된 제n 서버(500-n)는 초기화 부팅을 수행하고(1011), 임의의 이웃 서버인 제1 서버(500-1)에 초기 동기화 요청 메시지를 전송할 수 있다(1013). 제1 서버(500-1)는 초기 동기화 응답 메시지를 제n 서버(500-n)로 전송할 수 있다. 초기 동기화 응답 메시지는, 분산 네트워크 시스템(100)에 포함된 서버들에 대한 정보를 포함할 수 있다. 서버들에 대한 정보는, 서버들의 개수, 서버들에 저장된 게이트웨이의 목록, 게이트웨이의 개수, 게이트웨이 목록에 대한 동기화 인덱스를 포함할 수 있다. 제n 서버(500-n)는 초기 동기화 응답 메시지를 수신하면, 상기 메시지에 포함된 정보를 저장하고, 동기화를 수행할 수 있다.
도 11은 일 실시예에 따라 게이트웨이가 블록을 생성하고 그룹의 노드들에게 블록 보상을 분배하는 동작을 설명하기 위한 흐름도이다.
예를 들어, 게이트웨이(301)에 의하여 운영되는 그룹은 제1 라이트 노드(400-1), 제2 라이트 노드(400-2), 및 제3 라이트 노드(400-3)를 포함할 수 있다. 게이트웨이(301)는 그룹에 포함되는 노드들에 대한 정보를 노드 풀에 저장할 수 있다.
게이트웨이(301)는 노드 풀에 포함되는 노드들에 대하여 주기적으로 나이 정보(age information)를 수집할 수 있다. 게이트웨이(301)는 수집한 나이 정보를 기준으로 노드들에게 블록 보상을 분배할 수 있다. 나이 정보는 노드가 소유한 암호화폐 양에 비례할 수 있고, 해당 암호화폐를 소유한 기간에 비례할 수 있다. 더 많은 암호화폐를 오랫동안 보유한 노드가 더 많은 블록 보상을 수령할 수 있게 된다.
게이트웨이(301)는 주기적으로 노드 풀에 포함되는 노드들에게 나이 정보 요청 메시지를 전송할 수 있다. 예를 들어, 게이트웨이(301)는 제1 라이트 노드(400-1), 제2 라이트 노드(400-2), 및 제3 라이트 노드(400-3)에게 나이 정보 요청 메시지를 전송할 수 있다(1101, 1105, 1109). 게이트웨이(301)는 상기 나이 정보 요청 메시지에 응답하여 수신된 나이 응답 메시지를 제1 라이트 노드(400-1), 제2 라이트 노드(400-2), 및 제3 라이트 노드(400-3)로부터 수신할 수 있다(1103, 1107 1111). 다른 예에서, 노드들이 주기적으로 나이 정보를 송신하고, 게이트웨이(301)는 수신된 나이 정보를 수집할 수 있다.
나이 정보 응답 메시지는, 노드들이 특정 시점에 소유하고 있는 암호화폐 양에 대한 정보를 포함할 수 있다. 또는 나이 정보 응답 메시지는, 노드들 각각에 의하여 연산된 수치(점수) 값을 포함할 수 있다. 분산 네트워크 시스템(100)에 포함된 노드들은 나이 정보를 계산하는 동일한 알고리즘을 적용할 수 있다. 예를 들어, 제1 라이트 노드(400-1)에 대한 제1 나이 점수, 제2 라이트 노드(400-2)에 대한 제2 나이 점수, 제3 라이트 노드(400-3)에 대한 제3 나이 점수가 연산될 수 있다.
제1 나이 점수는 게이트웨이(301)의 노드 풀에 제1 라이트 노드(400-1)와 매핑 되어 저장될 수 있다. 제2 나이 점수, 제3 나이 점수는 게이트웨이(301)의 노드 풀에 각각 제2 라이트 노드(400-2), 제3 라이트 노드(400-3)와 매핑 되어 저장될 수 있다.
게이트웨이(301)는 본인의 블록 생성 순서가 되면, 블록을 생성하고 블록 보상을 수령할 수 있다. 블록 보상은 생성되는 블록 마다 발생하며, 게이트웨이(301)는 블록 생성 메시지를 분산 네트워크 상에 전파할 수 있다(1115). 게이트웨이(301)는 수집된 나이 정보를 기초로 노드들에게 지급될 보상을 결정할 수 있다(1117).
블록 보상은, 블록을 생성한 게이트웨이(301)와 게이트웨이(301)에 의하여 운영되는 노드들에게 분배될 수 있다. 예를 들어, 게이트웨이(301)에게 할당된 보상을 제외하고, 나머지는 제1 라이트 노드(400-1)의 제1 나이 점수, 제2 라이트 노드(400-2)의 제2 나이 점수, 및 제3 라이트 노드(400-3)의 제3 나이 점수의 비율에 따라서 각각의 노드들에게 분배될 수 있다. 게이트웨이(301)는 노드들의 계정(예: 지갑)로 결정된 보상을 지급할 수 있다. 예를 들어, 게이트웨이(301)는 노드 풀에 포함된 노드들에게 블록 보상을 지급하는 트랜잭션을 발생시킬 수 있다(1119). 게이트웨이(301)는 상기 트랜잭션이 발생된 후에, 블록 보상 지급에 대한 알림 메시지를 노드 풀의 노드들에게 전송할 수 있다(1121, 1125, 1131). 제1 라이트 노드(400-1), 제2 라이트 노드(400-2), 및 제3 라이트 노드(400-3)는 상기 알림 메시지에 응답하여 각각의 나이 점수를 0으로 초기화할 수 있다(1123, 1127, 1131). 각각의 나이 점수는 게이트웨이(301)가 다음 블록을 생성할 때까지의 암호화폐 보유량 및 보유 시간에 다라 다시 연산될 수 있다.
다양한 실시예에서, 게이트웨이(301)는 미리 정해진 주기마다 그룹에 속한 노드들에 대하여, 해당 게이트웨이(301)와 연결 여부와 암호화폐 보유량을 확인할 수 있다(예: 동작 1101 내지 동작 1111). 예를 들어 5분 마다 상기 확인 동작을 수행할 수 있다. 게이트웨이(301)는 한 노드의 나이 점수는 게이트웨이(301)에 연결된 것으로 확인된 주기의 개수와 보유하고 있는 암호화폐 양과 비례하도록 정할 수 있다. 동작 1117에서 결정된 보상들은, 게이트웨이(301)에 속한 노드들의 나이 점수의 총합 x 나이 점수당 지급된 보상의 양과 동일할 수 있다. 블록 생성 메시지를 수신한 풀 노드들(300)은 게이트웨이(301)에 대한 보상과 그룹의 노드들에게 지급된 보상을 합한 값이 블록 생성으로 발생된 블록 보상과 동일하면, 블록의 연결을 수행할 수 있다.
도 12는 일 실시예에 따라 게이트웨이가 그룹의 노드의 요청에 따라 블록을 생성하고 블록 보상을 분배하는 동작을 설명하기 위한 흐름도이다.
분산 네트워크 시스템(100)의 노드들(300, 400)은 다양한 트랜잭션을 발생시킬 수 있다. 발생된 트랜잭션들은 분산 네트워크 시스템(100)에 포함되는 적어도 하나의 노드에 의하여 처리되고 블록체인(200)에 저장될 수 있다.
일부 실시예에서, 많은 양의 트랜잭션들을 발생시킨 노드는 자신이 속하는 그룹의 게이트웨이(301)에 블록 생성을 요청할 수 있다. 노드는 미리 정해진 양 이상의 트랜잭션을 발생시킨 경우에 게이트웨이(301)에 블록 생성을 요청할 수 있다. 게이트웨이(301)는 블록을 생성하고, 상기 노드에게 블록 보상을 지급할 수 있다. 해당 블록 보상은 분산 네트워크 시스템(200)에 포함된 노드들은 트랜잭션을 많이 발생시키도록 하는 유인책이 될 수 있다.
각각의 노드들은 트랜잭션을 발생시키고, 트랜잭션 점수를 갱신할 수 있다. 예를 들어, 제1 노드(400-1)는 트랜잭션을 발생시키고, 트랜잭션 점수를 갱신할 수 있다(1201). 일부 실시예에서, 트랜잭션 점수는 트랜잭션에 부가된 수수료에 비례하여 정해질 수 있다. 예를 들어 트랜잭션 점수는 단위 수수료 당 1점으로 계산될 수 있다.
제1 노드(400-1)는 갱신된 트랜잭션 점수가 기준 값 이상인지 여부를 확인할 수 있다(1203). 동작 1201 및 동작 1203은 트랜잭션 점수가 기준 값 이상이 될 때까지 반복될 수 있다. 기준 값은 분산 네트워크 시스템(200)상에서의 트랜잭션들의 발생 빈도에 따라서 상대적으로 결정될 수 있다.
제1 노드(400-1)는 자신의 트랜잭션 점수가 기준 값 이상인 경우, 자신이 소속된 그룹의 운영자인 게이트웨이(301)에 블록 생성 요청 메시지를 전송할 수 있다(1205). 상기 블록 생성 요청 메시지는 제1 노드(400-1)의 트랜잭션 점수와 제1 노드(400-1)에 의하여 발생된 트랜잭션들의 목록을 포함할 수 있다. 상기 트랜잭션들은 제1 노드(400-1)의 계정에 의하여 디지털서명 된다.
게이트웨이(301)는 제1 노드(400-1)의 트랜잭션 점수와 트랜잭션들의 목록을 검증하고, 블록을 생성할 수 있다(1207). 해당 블록은 블록 생성을 요청한 제1 노드(400-1)의 계정 주소와 제1 노드(400-1)로부터 수신한 트랜잭션 점수를 포함할 수 있다.
게이트웨이(301)는 블록 생성 메시지를 분산 네트워크 상에 전파할 수 있다(1209). 게이트웨이(301)는 블록 보상을 수령하면, 해당 블록 보상을 게이트웨이(301)자신과 제1 라이트 노드(400-1)에 분배할 수 있다. 게이트웨이(301)는 블록 보상을 지급하는 트랜잭션을 발생시키고(1211), 블록 보상의 지급을 알리는 알림 메시지를 제1 라이트 노드(400-1)로 전송할 수 있다(1213). 제1 라이트 노드(400-1)는 자신의 트랜잭션 점수를 0으로 초기화할 수 있다(1215). 예를 들어, 제1 라이트 노드(400-1)의 계정 주소와 연관된 블록 발행 타임 스탬프를 기준으로 해당 블록에 대한 보상이 지급된 시간을 확정할 수 있다.
트랜잭션 점수를 정하는 정책은 분산 네트워크 시스템(100)에 포함된 노드들에게 공통적으로 적용될 수 있다. 블록 생성 메시지를 수신한 풀 노드들(300)은 상기 정책에 비추어 제1 라이트 노드(400-1)에 대한 트랜잭션 점수가 정당한지 여부와 지급된 보상이 정당한지 여부를 검증할 수 있다. 풀 노드들(300)은 검증이 완료되면 블록의 연결을 수행할 수 있다.
도 13은 일 실시예에서 게이트웨이들 사이에 블록 생성 순서를 결정하는 방법의 순서도이다. 도 14는 일 실시예에서 게이트웨이들 사이에 블록 생성을 설명하기 위한 도면이다.
분산 네트워크 시스템(100)에 포함된 풀 노드들(300) 중에서 게이트웨이(301)가 블록을 생성할 권한을 가질 수 있다. 예를 들어, 어떤 풀 노드(300)가 일정 보증금(예: 일정 개수의 암호화폐)을 분산 네트워크 시스템(100)에 지불한 경우 게이트웨이(301)로 동작할 수 있다. 상기 보증금은 게이트웨이(301)가 게이트웨이의 권한을 반납하면, 그의 계정으로 회수될 수 있다.
게이트웨이들(301)은 분산 네트워크 시스템(100)상에서 게이트웨이로서 동작하는 노드들의 목록(게이트웨이 목록)을 가질 수 있다. 게이트웨이(301)가 추가 또는 삭제될 때마다 상기 게이트웨이 목록은 서버(500) 및/또는 게이트웨이들(301)에 의하여 서로 동기화될 수 있다.
도 13를 참조하면, 일 실시예에 따라 블록 생성자를 결정하는 방법은 동작 1310 내지 1330을 포함할 수 있다. 상기 동작 1310 내지 1330은 예를 들어, 도 4의 풀 노드(300)에 의해 수행될 수 있다. 상기 동작 1310 내지 1330은, 예를 들어, 상기 풀 노드(300)의 프로세서(310)에 의해 수행(혹은, 실행)될 수 있는 인스트럭션(명령어)들로 구현될 수 있다. 상기 인스트럭션들은, 예를 들어, 컴퓨터 기록 매체 또는 풀 노드(300)의 메모리(320)에 저장될 수 있다.
동작 1310에서, 적어도 하나의 게이트웨이(301)는 게이트웨이 목록에 포함된 적어도 일부의 게이트웨이(301)에 대하여 점수 값을 계산할 수 있다.
일부 실시예에서, 복수의 게이트웨이들(301)은 게이트웨이로서 동작한지 오래된 순서대로 블록을 생성하도록 결정될 수 있다. 또한 블록을 생성하고 보상을 수령한 게이트웨이는 후순위로 밀려나게 된다. 게이트웨이들(301)은 오래된 순서대로 블록 생성자 풀에 등록될 수 있다. 예를 들어, 오래된 순서대로 상위 n%의 게이트웨이들에 대하여 상기 점수 값이 계산될 수 있다.
상기 점수 값은 해시 함수를 통하여 연산 되도록 설정될 수 있다. 해시 함수의 파라미터로서, 이전 블록의 해시 값, 나이 점수 값(예: 도 11의 나이 점수 값)이 이용될 수 있다. 해시 함수로서 공지된 다양한 해시 함수들(예: SHA-256)이 이용될 수 있다. 상기 나이 점수 값은 특정 게이트웨이(301)가 관리하는 그룹에 포함되는 노드들의 나이 점수 값들을 모두 합한 값일 수 있다. 블록 생성의 권한을 합의하는 과정에서, 게이트웨이가 관리하는 그룹과 연관된 정보가 이용될 수 있다. 이러한 관점에서 분산 네트워크 시스템(100)에 그룹 지분 증명 방식의 합의 알고리즘이 적용될 수 있다.
동작 1320에서, 적어도 하나의 게이트웨이(301)는 상기 점수 값을 기준으로 미리 정해진 개수(제1 값)의 게이트웨이들(제1 세트)을 결정할 수 있다. 예를 들어, 점수 값이 높은 순서로 상위 10개의 게이트웨이들이 선정될 수 있다.
동작 1330에서, 제1 세트에 포함된 적어도 일부 게이트웨이들은 블록 생성자로 결정될 수 있다. 일 실시예에서, 제1 세트에 포함된 게이트웨이들은 블록 생성자에 대한 투표를 수행할 수 있다. 예를 들어 제1 세트에 포함된 게이트웨이들은 블록 생성에 관한 투표를 수행할 수 있다. 제1 세트에 포함된 게이트웨이들 중 미리 정해진 수(제2 값)이상의 투표를 획득한 게이트웨이는 블록 생성자로 결정될 수 있다.
도 14(1)를 참조하면, 결정된 블록 생성자들은 한 사이클 동안 차례로 블록을 생성하게 된다. 예를 들어, 게이트웨이 A, 게이트웨이 B, 게이트웨이 C, 및 게이트웨이 D가 이번 사이클의 블록 생성자로 결정되었다. 블록 생성자들은 각각 자신이 블록을 생성하기로 정해진 타임 슬롯에 블록을 생성할 수 있다(포크 방지). 게이트웨이 A는 타임 슬롯 1에 블록 A를 생성하고, 게이트웨이 B는 타임 슬롯 2에 블록 B를 생성하고, 노드 C는 타임 슬롯 3에 블록 C를 생성하고, 게이트웨이 D는 타임 슬롯 4에 블록 D를 생성하도록 설정될 수 있다. 각각의 게이트웨이 A 내지 D는 도 11에서 상술된 동작들을 통하여 블록(제1 타입의 블록)을 생성하고, 블록 보상을 각자의 그룹의 노드들에게 분배할 수 있다.
일부 실시예에서, 한 사이클 내에서 트랜잭션 점수를 충족한 노드에 의한 블록 생성 요청이 발생할 수 있다(예: 도 12의 동작 1205). 도 14(2)를 참조하면, 타임 슬롯 2에서 임의의 게이트웨이 X로부터 블록 생성 요청이 발생할 수 있다. 게이트웨이 X에 의하여 관리되는 그룹에 포함된 어느 하나의 노드에 의하여 블록 생성 요청이 발생할 수 있다. 이 경우 타임 슬롯 3에서 상기 블록 생성 요청에 따른 블록 X가 생성되고, 타임 슬롯 4 및 타임 슬롯 5에서 게이트웨이 C, D게 의한 블록 생성이 진행될 수 있다. 게이트웨이 X는 도 12에서 상술된 동작들을 통하여 블록(제2 타입의 블록)을 생성하고, 블록 보상을 자신과 상기 노드에 분배할 수 있다.
도 15는 일 실시예에 따라 게이트웨이(301, 청구항의'노드 그룹 관리 장치')가 그룹 비밀키를 생성하는 동작의 예시도이다.
게이트웨이(301)는 상술한 바와 같이, 블록체인 네트워크에 참여하는 노드 중 일부의 노드를 하나의 그룹으로서 관리하는 기능을 할 수 있다. 게이트웨이(301)의 그룹 비밀키 생성모듈(316)은 자신의 그룹 안의 노드들이 트랜잭션 서명 시 비밀키와 더불어, 이중적으로 서명에 사용될 수 있는 그룹 비밀키를 생성할 수 있다. 게이트웨이(301)는 자신의 그룹 안의 노드와 공유하고, 그룹 비밀키의 서명 검증에 사용될 그룹 공개키를 다른 그룹에 배포할 수 있다.
도 15를 참조하면, 게이트웨이(301)는 자신의 그룹에 참여하는 노드의 정보를 노드 풀(335)에 저장하고 있다. 노드 풀(335)은 그룹 내 각 노드를 식별하는 인덱스 정보 및 각 노드의 공개키 정보를 매핑하여 저장할 수 있다. 예를 들어, 제1 게이트웨이(301)가 100개의 노드를 관리하는 경우, 노드 풀(335)에는 100개 노드의 인덱스 정보 1~100과 각각의 공개키를 매핑하여 저장할 수 있다.
우선, 게이트웨이(301)는 그룹 비밀키를 생성하기 위해, 노드 풀(335)에 저장된 노드의 공개키 중 일부를 선정할 수 있다. 도 15와 같이 게이트웨이(301)는 랜덤하게 인덱스 정보 1, 3, 25, 99에 매핑된 공개키를 선정할 수 있고, 또는 아래 예시의 방법을 사용할 수 있다.
예를 들어, 게이트웨이(301)는 그룹 내의 노드의 총 수를 소정의 자연수로 나눈 몫의 배수에 해당하는 인덱스를 가진 공개키를 선정할 수 있다. 가령, 노드의 총 수가 100개인 경우, 랜덤한 자연수 7로 나눈 몫인 14의 배수인 14, 28, 42, 56, 50, 84, 98의 인덱스와 매핑된 공개키를 선정할 수 있다.
다음으로, 게이트웨이(301)는 선정된 각 공개키를 비트로만 이루어진 비트 정보가 출력되도록 소정의 해쉬 생성 알고리즘을 통하여 변환할 수 있다. 가령 각 공개키에 base58 decoding을 적용하여 160 비트로 이루어진 비트열을 추출할 수 있다.
이후, 게이트웨이(301)는 각각의 비트열에 비트 연산(bitwise operation, 예를 들어, ^, &, >>, << 또는 이들의 조합)을 수행하여 하나의 합성된 비트열(도 15, 160비트의 1101001010011??00)을 생성할 수 있다.
이후, 게이트웨이(301)는 합성된 비트열에 시간 정보로 이루어진 비트열을 연결하여 그룹 비밀키를 생성할 수 있다. 이때 시간 정보 비트열은 UNIX TIME을 사용할 수 있다. 게이트웨이(301)는 그룹 비밀키의 비트수가 비밀키의 비트수와 같도록 하기 위해, 시간 정보의 비트열에 임의의 비트열을 연결할 수 있다.
예를 들어, 256 비트의 그룹 비밀키를 만들기 위해, 합성된 비트열이 160 비트일 때, 96비트를 연결해야 하므로, 시간 정보 비트열을 Currnet Time(32bit) x sysrandom(64bit)로 구성할 수 있다. 다만, 이는 예시일 뿐 그룹 비밀키 생성 방법이 이러한 예시에 한정되는 것은 아니다.
게이트웨이(301)는 하나의 그룹 비밀키가 지속적으로 사용될 경우, 악의적인 공격에 의해 그룹 비밀키가 노출될 우려를 방지하기 위해, 소정의 주기로 그룹 비밀키를 새롭게 생성하거나, 게이트웨이(301)가 관리하는 그룹에 변경(예: 노드의 추가 또는 탈퇴)이 발생할 경우에 그룹 비밀키를 새롭게 생성하여 그룹 내의 노드에 배포할 수 있다.
그룹 비밀키의 생성 주기는, 그룹 비밀키로부터 생성된 그룹 공개키가 게이트웨이(301) 간에 공유되어야 하므로 게이트웨이(301) 간의 송수신되는 메시지의 통신 딜레이(예: 2~4초)를 고려하여 선택될 수 있다. 일 실시예에 따라, 그룹 비밀키의 생성 주기는 5~60초일 수 있으나, 이러한 수치는 예시일 뿐 한정하는 것은 아니다.
게이트웨이(301)의 그룹 공유키 생성모듈(316)은 그룹 비밀키로부터 소정의 함수를 통해 그룹 공개키를 생성할 수 있다. 소정의 함수는 그룹 비밀키를 기초로는 그룹 공개키를 생성할 수 있으나, 제1 그룹 공개키를 기초로는 그룹 비밀키를 만들 수 없는 비가역함수로서, 예를 들면, 타원곡선곱셈 함수(Elliptic Curve Digital Signature Algorithm, ECDSA)를 포함할 수 있으나, 이에 한정되지는 않는다.
도 16은 일 실시예에서 게이트웨이(301)가 그룹 비밀키 및 그룹 공개키를 생성 및 배포하는 동작을 설명하기 위한 흐름도이다.
전제 동작으로서 게이트웨이(301)가 그룹에 포함될 노드를 선정하거나, 노드로부터 그룹으로의 참여를 요청 받아 그룹을 결정하는 방법은 상술한 도 9a 내지 도 9c의 동작을 참조할 수 있으나, 게이트웨이(301)가 복수의 노드로 이루어진 그룹을 결성하는 방법은 이에 한정되지 않고 다양한 방법을 이용할 수 있다.
이하, 제1 그룹을 관리하는 게이트웨이를 제1 그룹 게이트웨이(301-1), 제1 그룹에 포함된 노드를 제1 그룹 노드(600-1)로 지칭하며, 제2 그룹을 관리하는 게이트웨이를 제2 그룹 게이트웨이(301-2), 제2 그룹에 포함된 노드를 제2 그룹 노드(600-2)로 지칭하여, 게이트웨이(301)가 그룹 비밀키 및 그룹 공개키를 생성 및 배포하는 동작을 설명한다.
제1 그룹 게이트웨이(301-1)는 제1 그룹에 포함된 노드의 정보를 기초로 제1 그룹 비밀키 및 제1 그룹 공개키를 생성할 수 있다(2001).
제1 그룹 게이트웨이(301-1)는 제1 그룹 노드에 제1 그룹 비밀키(또는 제1 그룹 공개키를 포함할 수 있음)를 배포할 수 있다(2003). 제1 그룹 노드 중 하나인 제1 그룹 노드 a(600-1a)는 제1 그룹 비밀키를 수신하여 스스로 제1 그룹 공개키를 생성할 수 있다.
제1 그룹 게이트웨이(301-1)는 외부 그룹에 제1 그룹 공개키를 배포할 수 있다(2005). 외부 그룹 중 제2 그룹을 관리하는 제2 그룹 게이트웨이(301-2)는 제1 그룹 공개키를 수신하여 저장할 수 있다(2007). 제2 그룹 게이트웨이(301-2)는 제2 그룹 노드에 제1 그룹 공개키를 배포할 수 있다(2009). 제2 그룹 노드 중 트랜잭션 검증 기능을 하는 제1 그룹 노드 a(600-2a)는 제1 그룹 공개키를 저장하여, 제1 그룹에서 생성된 트랜잭션의 검증에 사용할 수 있다.
아울러, 제1 그룹 비밀키가 생성된 이후 제1 그룹 노드에 변경이 발생하는 상황을 가정하여 본다. 노드 b가 제1 그룹 게이트웨이(301-1)에 그룹 가입 요청을 전송할 수 있다(2011). 제1 그룹 게이트웨이(301-1)는 노드 b의 그룹 가입 요청을 승인할 수 있고, 승인 시 제1 그룹 노드 b(600-1b)의 정보를 노드 풀(335)에 저장할 수 있다(2013). 이러한 그룹 가입 동작은 도 9a 내지 도 9c의 동작을 통해 수행될 수 있으나, 이에 한정되지는 않는다.
제1 그룹 게이트웨이(301-1)는 새롭게 변경된 노드 풀(335)의 정보를 기초로 제1 그룹 비밀키 및 제1 그룹 공개키를 새롭게 생성할 수 있다(2015).
제1 그룹 게이트웨이(301-1)는 제1 그룹 노드에 제1 그룹 비밀키(또는 제1 그룹 공개키를 포함할 수 있음)를 배포할 수 있다(2017). 제1 그룹 노드에 해당하는 제1 그룹 노드 a(600-1a) 및 제2 그룹 노드 b는 제1 그룹 비밀키를 수신하여 스스로 제1 그룹 공개키를 생성할 수 있다.
제1 그룹 게이트웨이(301-1)는 외부 그룹에 제1 그룹 공개키를 배포할 수 있다(2019). 외부 그룹 중 제2 그룹을 관리하는 제2 그룹 게이트웨이(301-2)는 제1 그룹 공개키를 수신하여 저장할 수 있다(2021). 제2 그룹 게이트웨이(301-2)는 제2 그룹 노드에 제1 그룹 공개키를 배포할 수 있다(2023). 제2 그룹 노드 중 트랜잭션 검증 기능을 하는 제1 그룹 노드 a(600-2a)는 제1 그룹 공개키를 저장하여, 제1 그룹에서 생성된 트랜잭션의 검증에 사용할 수 있다. 제1 그룹 게이트웨이(301-1)는 그룹에 대한 변경이 발생하지 않더라도 주기적으로 제1 그룹 비밀키 및 제1 그룹 공개키를 생성할 수 있다.
한편, 외부 그룹에서 최신으로 생성된 그룹 비밀키로 서명된 트랜잭션을 수신하는 시점보다, 외부 그룹에서 최신으로 생성된 그룹 공개키를 수신하는 시간차가 발생하여, 최신의 그룹 공개키를 더 늦게 수신한다면 올바르게 생성된 트랜잭션이더라도 검증에 실패하는 상황을 도 17과 함께 살펴본다.
도 17은 일 실시예에서 노드가 그룹 비밀키의 선택에 따라 검증이 가능한 상황과 검증이 불가한 상황을 설명하기 위한 흐름도이다.
먼저, 제2 그룹 게이트웨이(301-2)는 제2 그룹에 포함된 노드의 정보를 기초로 제2 그룹 비밀키a 및 제2 그룹 공개키a를 생성할 수 있다(2201).
제2 그룹 게이트웨이(301-2)는 제2 그룹 노드에 제2 그룹 비밀키a(또는 제2 그룹 공개키a를 포함할 수 있음)를 배포할 수 있다(2203). 제2 그룹 노드 중 하나인 제1 그룹 노드 a(600-2a)는 제2 그룹 비밀키a를 수신하여 스스로 제2 그룹 공개키a를 생성할 수 있다.
제2 그룹 게이트웨이(301-2)는 외부 그룹에 제2 그룹 공개키a를 배포할 수 있다(2205). 외부 그룹 중 제1 그룹을 관리하는 제1 그룹 게이트웨이(301-1)는 제2 그룹 공개키a를 수신하여 저장할 수 있다(2207). 제2 그룹 게이트웨이(301-2)는 제1 그룹 노드에 제2 그룹 공개키a를 배포할 수 있다(2209).
한편, 제2 그룹 게이트웨이(301-2)는 그룹 정보가 변경되거나, 생성 주기가 도래되어, 제2 그룹에 포함된 노드의 정보를 기초로 제2 그룹 비밀키b 및 제2 그룹 공개키b를 새롭게 생성하고(2211), 제2 그룹 노드에 제2 그룹 비밀키b를 배포할 수 있다(2213).
다만, 제1 그룹에 제2 그룹 공개키b가 배포되기 전, 제1 그룹 노드 a(600-2a)가 제2 그룹 비밀키b를 통해 서명한 트랜잭션이 제1 그룹에 도달한 경우(2215)에는 제1 그룹 노드 a(600-1a)는 제2 그룹 비밀키b를 저장하고 있지 않기 때문에, 해당 트랜잭션이 올바른 서명이더라도 검증을 할 수가 없다.
따라서, 제1 그룹에 제2 그룹 공개키b가 배포되기 전이라면, 제1 그룹 노드 a(600-2a)는 설사 새로운 제2 그룹 비밀키b를 배포 받았다고 하더라도, 이전에 저장하고 있었던 제2 그룹 비밀키a로 서명해야지만, 해당 트랜잭션을 검증받을 수 있다. 보다 자세하게 도 18을 통해 각 그룹이 보유하고 있는 그룹 공개키의 상태를 살펴보기로 한다.
도 18은 일 실시예에 따라 각 그룹에 배포된 그룹 공개키 상태를 나타내는 예시도이다. 각각의 큰 박스는 제1 그룹, 제2 그룹, 제3 그룹에 배포되어 있는 그룹 공개키의 현 상태를 나타낸다. 그리고 세로 방향의 제1 주기 내지 제6 주기는 그룹키를 생성하는 주기를 의미하여 아래로 내려갈수록 최신으로 생성된 그룹 공개키를 의미한다. 또한 A-1 내지 A-6은 제1 그룹에서 생성된 그룹 공개키, B-1 내지 B-6은 제2 그룹에서 생성된 그룹 공개키, C-1 내지 C-6은 제3 그룹에서 생성된 그룹 공개키를 의미한다.
도 18을 참조하면, 현 상태에서 제1 그룹은 A-6 그룹 공개키까지 생성하였지만, 배포의 딜레이(2219)로 제2 그룹에는 아직 A-6 그룹 공개키가 도달하지 않았으며, 제3 그룹에는 아직 A-5 및 A-6 그룹 공개키가 도달하지 않은 상태이다. 따라서, 제1 그룹의 노드가 A-6의 그룹 비밀키로 서명을 하였다고 하더라도, 제2 그룹 및 제3 그룹의 노드는 해당 트랜잭션을 검증할 수 없다. 또한, 제1 그룹의 노드가 A-5의 그룹 비밀키로 서명을 하였다고 하더라도 제3 그룹의 노드는 해당 트랜잭션을 검증할 수 없다. 이에 따라, 트랜잭션의 실행 지연이 발생할 수 있다.
따라서 이러한 상황을 방지하기 위해, 제1 그룹의 노드는 최신으로 배포된 그룹 비밀키가 있다고 하더라도, 이미 블록체인 네트워크에 모두 배포되어 있는 그룹 비밀키를 사용하여 트랜잭션에 서명할 수 있다.
이를 위해, 노드는 배포된 그룹 비밀키 시각 정보와 함께 수신하여 최신 순으로 소정의 개수의 그룹 비밀키를 저장하고, 트랜잭션을 생성하는 경우 도 19의 2217 동작과 같이, 최신으로 저장된 그룹 비밀기로부터 기 설정된 주기 또는 시간(예: 블록체인 상에 그룹 공개키가 모두 배포될 수 있는 통신 딜레이 시간을 고려하여 설정) 이전에 생성된 그룹 비밀키를 이용하여 서명하여, 트랜잭션의 검증 불가 상황을 방지할 수 있다.
도 19는 일 실시예에 따른 그룹 비밀키 기반의 트랜잭션 이중 서명 및 그룹 공개키 기반의 트랜잭션 이중 검증의 개념도이다.
도 19를 참조하면, 노드는 메시지의 내용과 비밀키를 함께 해싱한 제1 서명 정보와 더불어, 메시지의 내용과 그룹 비밀키를 함께 해싱한 제2 서명 정보를 생성할 수 있다. 이에 따라, 노드는 블록체인 네트워크에 발생시킬 트랜잭션의 구조로서 메시지, 제1 서명 정보, 제2 서명 정보, 공개키 및 그룹 공개키를 포함시킬 수 있다. 예를 들어, 블록체인 네트워크에 배포되는 트랜잭션은 1 027d774e8a4f7e03d226dcab58298fa8a0acc
78afeb309d7195cb930f55dccaf22 03a6960346cc0698247d4178f521e0c5e43f1b28b3b647b9413e0058f6108f6ddd의 실제 예시로서 정해진 규약에 따라 정보의 순서가 배열된 16진수 열을 포함할 수 있다. 해당 트랜잭션을 수신한 노드는 정해진 형식으로 16진수 정보를 분류하여 스택에 쌓을 수 있다. 예를 들어, 형식에 대한 규약이 OP_0 <Sig-Wallet><Sig-Group> OP_2 <Public Key Wallet><Public Key Group> OP_2 OP_CHECKMULTISIG 와 같은 경우, 트랜잭션을 수신한 노드는 <Sig-Wallet>에 해당하는 숫자열로부터 제1 서명 정보, <Sig-Group>에 해당하는 숫자열로부터 제2 서명 정보, <Public Key Wallet>에 해당하는 숫자열로부터 공개키 정보, <Public Key Group>에 해당하는 숫자열로부터 그룹 공개키 정보를 추출할 수 있다.
이에 따라, 트랜잭션을 수신한 노드는 공개키를 통해 제1 서명이 올바른 비밀키에 의해 서명된 것인지 검증하고, 더하여 그룹 공개키를 통해 제2 서명이 올바른 그룹 비밀키에 의해 서명된 것인지 검증하여, 최종적으로 해당 트랜잭션이 올바른 것인지를 검증할 수 있다.
상술한 실시예들에 따르면, 트랜잭션 서명에 비밀키와 그룹 비밀키를 함께 사용하기 때문에, 비밀키가 해킹되었다고 하더라도 그룹 비밀키의 서명을 요청하는 구성을 통해, 해킹으로 인한 피해를 방지할 수 있다. 또한, 신뢰성이 확보된 게이트웨이(301)를 통해 그룹 비밀키와 그룹 공개키의 생성 및 배포하여, 그룹키 기반의 트랜잭션 서명에 대한 신뢰도를 높일 수 있다. 더하여, 그룹 비밀키의 생성을 주기적으로 수행하거나, 또는 그룹에 변경이 일어난 경우마다 수행함으로써, 그룹 비밀키의 노출 가능성을 최소화할 수 있다. 아울러, 노드가 트랜잭션을 생성할 경우, 블록체인 네트워크 상에 모두 배포된 그룹 비밀키를 통한 서명을 수행함으로써, 배포 딜레이로 인한 트랜잭션 검증 오류를 방지할 수 있다.
도 15 내지 도 19와 함께 설명된 동작의 순서는 예시일 뿐, 그 시계열적 순서가 한정되는 것이 아니며 설계에 따라 논리적으로 변경할 수 있다. 또한, 도 15 내지 도 19와 함께 설명된 게이트웨이(301)의 동작은 도 4의 프로세서가 포함하는 모듈에 의해 수행되는 동작으로 이해될 수 있다. 더불어, 도 15 내지 도 19와 함께 설명된 노드의 동작은 도 4의 풀 노드 또는 도 5의 라이트 노드의 프로세서가 포함하는 모듈에 의해 수행되는 동작으로 이해될 수 있다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 아이템 한 개 또는 복수 개를 포함할 수 있다.
본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", “A 또는 B 중 적어도 하나,”"A, B 또는 C," "A, B 및 C 중 적어도 하나,”및 “A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에, “기능적으로” 또는 “통신적으로”라는 용어와 함께 또는 이런 용어 없이, “커플드” 또는 “커넥티드”라고 언급된 경우, 그것은 어떤 구성요소가 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치)에 의해 읽을 수 있는 저장 매체(예: 메모리)에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램)로서 구현될 수 있다. 저장 매체는 RAM(random access memory), 메모리 버퍼, 하드 드라이브, 데이터베이스, EPROM(erasable programmable read-only memory), EEPROM(electrically erasable read-only memory), ROM(read-only memory) 및/또는 등등을 포함할 수 있다.
또한, 본 문서의 실시예들의 프로세서는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 이러한 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 프로세서는 범용 프로세서, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit), DSP(Digital Signal Processor) 및/또는 등등 일 수 있다.
기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 통합 이전에 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (15)

  1. 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드 중 제1 그룹에 가입된 노드들을 관리하는 노드 그룹 관리 장치에 있어서-상기 블록체인 네트워크에 참여하는 모든 노드는 각각 비밀키 및 공개키를 보유함-,
    상기 블록체인 네트워크와 통신하고, 소정 노드로부터 상기 제1 그룹에 대한 가입 요청 메시지 및 상기 소정 노드의 공개키를 수신하는 통신 인터페이스;
    상기 제1 그룹에 가입된 노드에 관한 정보 및 프로세서의 동작 수행에 관한 명령어를 저장하는 하나 이상의 메모리- 상기 제1 그룹에 가입된 노드에 관한 정보는 상기 제1 그룹에 가입된 노드 각각의 공개키를 포함함-; 및
    상기 명령어를 통해 동작하도록 상기 하나 이상의 메모리와 연결되고, 상기 제1 그룹의 노드가 트랜잭션을 생성하는 경우 상기 트랜잭션에 상기 비밀키의 서명에 더하여 이중적으로 추가적인 서명이 수행되도록, 상기 제1 그룹에 가입된 노드의 공개키 중 일부에 대해 소정의 해쉬 알고리즘을 통해 각각 일련의 비트열이 되도록 변환하고 상기 각각의 일련의 비트열에 대해 소정의 비트 연산을 수행하여 합성된 비트열로부터 상기 비밀키와 동일한 비트수를 갖는 그룹 비밀키를 소정 주기로 생성하여, 상기 그룹 비밀키를 상기 제1 그룹에 가입된 노드에 배포하는 동작을 수행하는 하나 이상의 프로세서를 포함하고,
    상기 하나 이상의 프로세서는, 상기 제1 그룹에 노드의 추가 또는 탈퇴를 포함하는 변경이 발생할 경우, 상기 변경이 일어난 후 제1 그룹에 가입된 노드의 공개키를 기초로 상기 그룹 비밀키를 새롭게 생성하여 상기 변경 후 제1 그룹에 가입된 노드에 배포하는,
    노드 그룹 관리 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 소정의 주기는 상기 블록체인 네트워크 상에서 데이터가 모두 배포되는 통신 딜레이 시간보다 긴,
    노드 그룹 관리 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    소정의 주기로 상기 그룹 비밀키를 새롭게 생성하여 상기 제1 그룹의 노드에 배포하고,
    상기 제1 그룹의 노드는,
    상기 배포된 그룹 비밀키를 수신한 시각 정보와 함께 복수의 그룹 비밀키를 저장하고, 상기 트랜잭션을 생성하는 경우 상기 복수의 그룹 비밀키 중 현재 주기로부터 기 설정된 주기 이전에 생성된 그룹 비밀키를 이용하여 서명하는,
    노드 그룹 관리 장치.
  7. 제6항에 있어서,
    상기 트랜잭션은,
    메시지, 상기 메시지에 대해 상기 비밀키를 통한 제1 서명, 상기 비밀키와 대응되는 공개키, 상기 메시지에 대해 상기 그룹 비밀키를 통한 제2 서명 및 상기 그룹 비밀키와 대응되는 그룹 공개키를 포함하는,
    노드 그룹 관리 장치.
  8. 제6항에 있어서,
    상기 하나 이상의 프로세서는,
    소정의 주기로 생성된 상기 그룹 비밀키와 대응되는 그룹 공개키를 생성하여 상기 블록체인 네트워크의 다른 그룹인 제2 그룹에 배포하고,
    상기 제2 그룹의 노드는,
    상기 배포된 그룹 공개키를 수신한 시각 정보와 함께 복수의 그룹 공개키를 저장하고, 상기 제1 그룹의 노드가 생성한 트랜잭션을 검증하는 경우 상기 복수의 그룹 공개키를 모두 사용하여, 상기 제1 그룹의 노드가 생성한 트랜잭션을 검증하는,
    노드 그룹 관리 장치.
  9. 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드를 수행하는 컴퓨팅 장치에 있어서-상기 블록체인 네트워크에 참여하는 모든 노드는 각각 비밀키 및 공개키를 보유함-,
    상기 블록체인 네트워크와 통신하는 통신 인터페이스;
    제1항의 노드 그룹 관리 장치에 관한 정보, 상기 제1항의 노드 그룹 관리 장치가 소정의 주기로 배포한 복수의 그룹 비밀키, 및 프로세서의 동작 수행에 관한 명령어를 저장하는 하나 이상의 메모리-상기 복수의 그룹 비밀키는 각각이 수신된 시각 정보와 함께 저장됨-; 및
    상기 명령어를 통해 동작하도록 상기 하나 이상의 메모리와 연결되고, 트랜잭션을 생성하는 경우 상기 시각 정보를 참조하여, 상기 복수의 그룹 비밀키 중 가장 최신으로 저장된 그룹 비밀키로부터 기 설정된 주기 이전에 생성된 그룹 비밀키를 이용한 서명을 상기 트랜잭션에 포함시키는 동작을 수행하는 하나 이상의 프로세서를 포함하는,
    컴퓨팅 장치.
  10. 분산 데이터베이스를 공유하는 블록체인 네트워크를 구성하는 노드 및 노드들의 집합인 제1 그룹을 관리하는 노드 그룹 관리 장치에 의해 수행되는 노드 그룹 관리 방법에 있어서-상기 블록체인 네트워크를 구성하는 모든 노드는 각각의 비밀키 및 공개키를 보유함-,
    상기 노드 그룹 관리 장치가, 소정 노드로부터 상기 제1 그룹에 대한 가입 요청 메시지 및 상기 소정 노드의 공개키를 수신하는 단계;
    상기 노드 그룹 관리 장치가, 상기 가입 요청 메시지에 따라 상기 제1 그룹에 상기 소정 노드를 추가하고 상기 소정 노드의 공개키를 저장하는 단계;
    상기 노드 그룹 관리 장치가, 상기 제1 그룹의 노드가 트랜잭션을 생성하는 경우 상기 트랜잭션에 상기 비밀키의 서명에 더하여 이중적으로 추가적인 서명이 수행되도록, 상기 제1 그룹에 가입된 노드의 공개키 중 일부에 대해 소정의 해쉬 알고리즘을 통해 각각 일련의 비트열이 되도록 변환하고 상기 각각의 일련의 비트열에 대해 소정의 비트 연산을 수행하여 합성된 비트열로부터 상기 비밀키와 동일한 비트수를 갖는 그룹 비밀키를 소정 주기로 생성하는 단계;
    상기 노드 그룹 관리 장치가, 상기 소정 주기로 생성된 그룹 비밀키를 상기 제1 그룹에 가입된 노드에 배포하는 단계; 및
    상기 노드 그룹 관리 장치가, 상기 제1 그룹에 노드의 추가 또는 탈퇴를 포함하는 변경이 발생할 경우, 상기 변경이 일어난 후의 상기 제1 그룹에 가입된 노드의 공개키를 기초로 상기 그룹 비밀키를 새롭게 생성하여 상기 변경 후 제1 그룹에 가입된 노드에 배포하는 를 포함하는
    노드 그룹 관리 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 방법은,
    상기 제1 그룹의 노드가, 상기 배포된 그룹 비밀키를 수신한 시각 정보와 함께 복수의 그룹 비밀키를 저장하고, 상기 트랜잭션을 생성하는 경우 상기 복수의 그룹 비밀키 중 현재 주기로부터 기 설정된 주기 이전에 생성된 그룹 비밀키를 이용하여 서명하는 단계를 포함하는,
    노드 그룹 관리 방법.
  13. 제12항에 있어서,
    상기 배포하는 단계는,
    소정의 주기로 생성된 상기 그룹 비밀키와 대응되는 그룹 공개키를 생성하여 상기 블록체인 네트워크의 다른 그룹인 제2 그룹에 배포하는 단계를 포함하고,
    상기 방법은,
    상기 제2 그룹의 노드가, 상기 배포된 그룹 공개키를 수신한 시각 정보와 함께 복수의 그룹 공개키를 저장하는 단계; 및
    상기 제2 그룹의 노드가, 상기 제1 그룹의 노드가 생성한 트랜잭션을 검증하는 경우 상기 복수의 그룹 공개키를 모두 사용하여 상기 제1 그룹의 노드가 생성한 트랜잭션을 검증하는 단계를 더 포함하는,
    노드 그룹 관리 방법.
  14. 제10항, 제12항 및 제13항 중 어느 한 항의 방법을 프로세서가 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
  15. 제10항, 제12항 및 제13항 중 어느 한 항의 방법을 프로세서가 수행하도록 하는 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램.
KR1020190014619A 2018-07-27 2019-02-07 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치 KR102120703B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201980063538.8A CN112913185A (zh) 2018-07-27 2019-02-13 在区块链网络上构建基于组密钥的双重签名交易结构的节点组管理装置以及计算装置
PCT/KR2019/001731 WO2020022599A1 (ko) 2018-07-27 2019-02-13 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치
JP2021505768A JP2021533638A (ja) 2018-07-27 2019-02-13 ブロックチェーンネットワーク上でグループ鍵基盤の二重署名トランザクション構造を構成するノードグループ管理装置およびコンピューティング装置
US17/159,021 US20210258154A1 (en) 2018-07-27 2021-01-26 Node group managing device and computing device for configuring group key-based dual signature transaction structure in blockchain network

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862703896P 2018-07-27 2018-07-27
US62/703,896 2018-07-27

Publications (2)

Publication Number Publication Date
KR20200012705A KR20200012705A (ko) 2020-02-05
KR102120703B1 true KR102120703B1 (ko) 2020-08-05

Family

ID=67066011

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020180107351A KR101994455B1 (ko) 2018-07-27 2018-09-07 시스템에 포함되는 노드들에 대하여 그룹을 운영하는 분산 네트워크 시스템
KR1020190014619A KR102120703B1 (ko) 2018-07-27 2019-02-07 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020180107351A KR101994455B1 (ko) 2018-07-27 2018-09-07 시스템에 포함되는 노드들에 대하여 그룹을 운영하는 분산 네트워크 시스템

Country Status (5)

Country Link
US (2) US20210258154A1 (ko)
JP (2) JP2021533638A (ko)
KR (2) KR101994455B1 (ko)
CN (2) CN112913185A (ko)
WO (1) WO2020022760A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220035773A (ko) 2020-09-14 2022-03-22 서강대학교산학협력단 블록체인 네트워크에서의 그룹키 생성 방법
KR20220056036A (ko) * 2020-10-27 2022-05-04 주식회사 온더 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111131399B (zh) * 2019-12-03 2021-11-26 北京海益同展信息科技有限公司 一种区块链中共识节点动态增加方法及装置
KR102400455B1 (ko) * 2020-04-13 2022-05-20 고려대학교 세종산학협력단 분산 서비스 환경에서의 사용자 개인키 백업 및 복원 프레임워크
KR102430835B1 (ko) * 2020-11-04 2022-08-10 광주과학기술원 블록체인 전자투표시스템, 그 시스템의 운용방법
KR102346292B1 (ko) * 2020-11-11 2022-01-03 엘에스웨어(주) 키 정보를 이용한 트랜잭션 분류 시스템 및 방법
KR102346293B1 (ko) * 2020-12-08 2022-01-03 엘에스웨어(주) 공통 키셋정보를 이용한 트랜잭션 분산처리를 위한 블록체인 시스템 및 수행방법
US11790353B2 (en) 2021-06-16 2023-10-17 Song Hwan KIM System and method for online/offline payment with virtual currency for nodes included in mobile-based blockchain distributed network
KR102343432B1 (ko) * 2021-06-16 2021-12-24 김송환 모바일 기반 블록체인 분산 네트워크에 포함되는 노드들에 대하여 온 오프 상에서 가상 화폐의 지불결제 시스템 및 방법
KR102669775B1 (ko) * 2021-10-28 2024-05-27 엘지전자 주식회사 메타버스 서버 및 메타버스 서버의 블록체인 기반 신용 결제 관리 방법
KR102391186B1 (ko) * 2021-11-24 2022-04-28 엘에스웨어(주) 비밀 공유 기법을 이용한 블록체인 외부 명령 출력 방법 및 시스템
CN114363357B (zh) * 2021-12-28 2024-01-19 上海沄熹科技有限公司 一种基于Gossip的分布式数据库网络连接管理方法
CN115361233B (zh) * 2022-10-20 2023-02-03 中国信息通信研究院 基于区块链的电子文件签署方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110047202A1 (en) * 2009-08-18 2011-02-24 Microsoft Corporation Distributed algorithm for changing a shared value
US20170180122A1 (en) * 2015-12-17 2017-06-22 Intel Corporation Privacy Preserving Group Formation with Distributed Content Key Generation
WO2017145010A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139049A1 (en) * 1996-08-22 2004-07-15 Wgrs Licensing Company, Llc Unified geographic database and method of creating, maintaining and using the same
JPH1115373A (ja) * 1997-06-20 1999-01-22 Fuji Xerox Co Ltd 公開鍵暗号方式
WO2002063853A2 (en) * 2000-11-03 2002-08-15 Go2 Systems, Inc. Unified geographic database and metod of creating, maintaining and using the same
EP1488646B1 (en) * 2002-03-19 2017-05-03 Mapinfo Corporation Location based service provider
US7774411B2 (en) * 2003-12-12 2010-08-10 Wisys Technology Foundation, Inc. Secure electronic message transport protocol
US8301654B2 (en) * 2009-02-24 2012-10-30 Hitachi, Ltd. Geographical distributed storage system based on hierarchical peer to peer architecture
JP5061167B2 (ja) * 2009-09-08 2012-10-31 株式会社野村総合研究所 クラウドコンピューティングシステム
US9560583B2 (en) * 2012-12-21 2017-01-31 Verizon Patent And Licensing Inc. Gateway selection based on geographical location
JP2015033068A (ja) * 2013-08-06 2015-02-16 日本電信電話株式会社 ファイル共有システム、情報提供装置、情報取得装置、及びその方法、プログラム
US10346814B2 (en) * 2014-06-04 2019-07-09 MONI Limited System and method for executing financial transactions
US10198505B2 (en) * 2014-08-21 2019-02-05 Affectomatics Ltd. Personalized experience scores based on measurements of affective response
US11494390B2 (en) * 2014-08-21 2022-11-08 Affectomatics Ltd. Crowd-based scores for hotels from measurements of affective response
US10572679B2 (en) * 2015-01-29 2020-02-25 Affectomatics Ltd. Privacy-guided disclosure of crowd-based scores computed based on measurements of affective response
US9805381B2 (en) * 2014-08-21 2017-10-31 Affectomatics Ltd. Crowd-based scores for food from measurements of affective response
US20160098723A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods
US20160162882A1 (en) * 2014-12-08 2016-06-09 Guy LaMonte McClung, III Digital money choice and eWallet selection
US20160218866A1 (en) * 2015-01-27 2016-07-28 Qualcomm Incorporated Group key announcement and distribution for a data link group
US10158492B2 (en) * 2015-02-25 2018-12-18 Guardtime Ip Holdings Limited Blockchain-supported device location verification with digital signatures
JP6293716B2 (ja) * 2015-11-10 2018-03-14 株式会社アメニディ 匿名通信システムおよび該通信システムに加入するための方法
US20170161713A1 (en) * 2015-12-08 2017-06-08 International Business Machines Corporation Selecting an electronic payment account to maximize rewards
KR102209781B1 (ko) * 2016-07-21 2021-01-28 주식회사 케이티 가상화폐 관리 방법 및 이를 위한 장치
US20180216946A1 (en) * 2016-09-30 2018-08-02 Mamadou Mande Gueye Method and system for facilitating provisioning of social activity data to a mobile device based on user preferences
JP6933221B2 (ja) * 2016-10-04 2021-09-08 日本電気株式会社 組込sim管理システム、ノード装置、組込sim管理方法、プログラム、情報登録者装置
JP6533771B2 (ja) * 2016-11-15 2019-06-19 富士通株式会社 通信方法、装置、及びプログラム
CN106559211B (zh) * 2016-11-22 2019-12-13 中国电子科技集团公司第三十研究所 一种区块链中隐私保护智能合约方法
WO2018105038A1 (ja) * 2016-12-06 2018-06-14 三菱電機株式会社 通信装置及び分散型元帳システム
KR101891125B1 (ko) * 2016-12-07 2018-08-24 데이터얼라이언스 주식회사 분산된 네트워크 노드의 서비스 기여도 산출 시스템 및 방법
CN107171806B (zh) * 2017-05-18 2020-04-10 北京航空航天大学 基于区块链的移动终端网络密钥协商方法
CN107423978A (zh) * 2017-06-16 2017-12-01 郑州大学 一种基于联盟区块链的分布式能源交易认证方法
US10439820B2 (en) * 2017-06-19 2019-10-08 Dell Products, Lp Method and apparatus for secure access to a mobile edge computing gateway device based on a subscriber location fingerprint
US10452824B2 (en) * 2017-07-24 2019-10-22 Dell Products, Lp Method and apparatus for optimized access of security credentials via mobile edge-computing systems
CN107528886B (zh) * 2017-07-25 2020-07-31 中国科学院计算技术研究所 区块链全网拆分方法与系统
US10380650B2 (en) * 2017-07-26 2019-08-13 Jehan Hamedi Systems and methods for automating content design transformations based on user preference and activity data
CN107508681A (zh) * 2017-08-15 2017-12-22 中国联合网络通信集团有限公司 区块链密钥保护方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110047202A1 (en) * 2009-08-18 2011-02-24 Microsoft Corporation Distributed algorithm for changing a shared value
US20170180122A1 (en) * 2015-12-17 2017-06-22 Intel Corporation Privacy Preserving Group Formation with Distributed Content Key Generation
WO2017145010A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220035773A (ko) 2020-09-14 2022-03-22 서강대학교산학협력단 블록체인 네트워크에서의 그룹키 생성 방법
KR20220056036A (ko) * 2020-10-27 2022-05-04 주식회사 온더 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치
KR102494873B1 (ko) * 2020-10-27 2023-02-06 주식회사 온더 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치

Also Published As

Publication number Publication date
US20210258154A1 (en) 2021-08-19
US20210248636A1 (en) 2021-08-12
WO2020022760A1 (ko) 2020-01-30
KR20200012705A (ko) 2020-02-05
JP2021533638A (ja) 2021-12-02
CN112753207A (zh) 2021-05-04
CN112913185A (zh) 2021-06-04
KR101994455B1 (ko) 2019-06-28
JP2021532494A (ja) 2021-11-25

Similar Documents

Publication Publication Date Title
KR102120703B1 (ko) 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치
CN111295660B (zh) 用于将区块链连接到数字孪生的计算机实现的系统和方法
TWI721699B (zh) 用於平行處理區塊鏈交易之系統及方法
CN110442652B (zh) 一种基于区块链的跨链数据处理方法及装置
US11038883B2 (en) System and method for decentralized-identifier creation
JP6939791B2 (ja) 掲示板情報管理システム
CN108985772B (zh) 一种区块链的验证方法、装置、设备及存储介质
US20180183768A1 (en) Systems and methods for privacy in distributed ledger transactions
US20210083856A1 (en) Improved hardware security module management
KR20210003234A (ko) 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
JP7157348B2 (ja) ブロックチェーンシステム、承認端末、スマートコントラクト登録方法、および、スマートコントラクト登録プログラム
KR102537774B1 (ko) 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들
US20190268153A1 (en) Event execution using a blockchain approach
CN110730963A (zh) 用于信息保护的系统和方法
KR20190089506A (ko) 블록체인상에서 공유 분산장부와 외부 저장장치에 정보를 분리저장하여 구현한 안전한 전자계약시스템
CN111295650A (zh) 在基于区块链的系统中执行映射迭代
CN111899019A (zh) 一种黑名单多方交叉验证和共享的方法及系统
CN110309173B (zh) 合约数据的记录方法、装置及区块链节点、存储介质
CN111314172A (zh) 基于区块链的数据处理方法、装置、设备及存储介质
CN110941672B (zh) 户籍管理方法、装置、设备以及存储介质
WO2019067533A1 (en) SYSTEM AND METHODS FOR RESOLVING DATA DIVERGENCES IN A SYSTEM DISTRIBUTED WITH BLOCK CHAIN CONTROLS
CN113592476A (zh) 跨链资产转移方法、计算机设备和存储介质
CN113132459A (zh) 分布式存储方法、系统、存储介质、信息数据处理终端
CN112163917A (zh) 基于区块链的票据处理方法、装置、介质及电子设备
KR20200140094A (ko) 블록체인 기반 배송 시스템 및 이의 운용 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant