KR20230090912A - 다중 서명 분산 합의 장치 및 방법 - Google Patents
다중 서명 분산 합의 장치 및 방법 Download PDFInfo
- Publication number
- KR20230090912A KR20230090912A KR1020210180097A KR20210180097A KR20230090912A KR 20230090912 A KR20230090912 A KR 20230090912A KR 1020210180097 A KR1020210180097 A KR 1020210180097A KR 20210180097 A KR20210180097 A KR 20210180097A KR 20230090912 A KR20230090912 A KR 20230090912A
- Authority
- KR
- South Korea
- Prior art keywords
- nodes
- signature
- message
- node
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 title claims abstract description 28
- 239000012634 fragment Substances 0.000 claims description 32
- 238000010586 diagram Methods 0.000 description 7
- 230000010076 replication Effects 0.000 description 7
- 238000012795 verification Methods 0.000 description 5
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/0825—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3242—Cryptographic 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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
- H04L9/3255—Cryptographic 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 using group based signatures, e.g. ring or threshold signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
다중 서명 분산 합의 장치 및 방법이 개시된다. 본 발명의 일실시예에 따른 다중 서명 분산 합의 장치는 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 블록체인 네트워크에서 분산 합의에 참여하는 노드들에게 트랜잭션에 대한 상기 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 전송하고, 상기 노드들로부터 수신한 Prepare 메시지에 포함된 메시지 인증 코드 값을 이용하여 상기 노드들을 검증하고, 상기 노드들에게 상기 분산 합의에 필요한 정족 수 이상의 검증된 노드들로부터 상기 Prepare 메시지를 수신했음을 알리기 위한 A-Prepare 메시지를 전송하고, 상기 노드들로부터 수신한 Commit 메시지에 포함된 다중 서명 조각 값들을 이용하여 다중 서명 값을 생성하고, 상기 노드들에게 상기 다중 서명 값을 포함하는 A-Commit 메시지를 전송하여 상기 트랜잭션에 대한 합의를 처리한다.
Description
본 발명은 블록 체인 기술에 관한 것으로, 보다 상세하게는 다중 서명을 이용한 분산 합의 기술에 관한 것이다.
PBFT(Practical Byzantine Fault Tolerant) 프로토콜은 다수의 노드로 구성된 분산 시스템에서 노드 간 메시지 교환에 의해 시스템의 상태를 합의하여 업데이트하는 프로토콜이다. 안전한 트랜잭션 처리를 필요로 하는 분산 시스템에서 널리 사용되는 프로토콜이다.
최근 블록체인 기술이 발전함에 따라 PBFT 프로토콜을 블록체인의 합의 프로토콜로사용하는 사례가 늘고 있다. 특히 수 개 또는 수십 개의 노드로 구성되는 허가형 블록체인 시스템에는 프로토콜의 큰 변형없이 모든 노드가 합의에 참여하는 형태로 적용하는 것이 가능하다. 노드 수가 수천에서 수만 개에 이르는 비허가형 블록체인 시스템에서는 성능 상의 문제로 모든 노드가 PBFT 프로토콜을 통해 합의를 하는 것은 매우 비실용적이다. PBFT 프로토콜은 합의를 위한 메시지 교환 과정에서 모든 노드 간 일대일로 메시지를 교환하기 때문에 메시지 복잡도(합의를 위해 주고 받는 메시지의 수를 나타내는 지표)가 O(N2)이다. 여기서 N은 노드의 수를 의미한다. 예를 들어 노드 수가 1,000개라면 최소 1,000,000번의 메시지를 교환해야 한다. 노드 수가 많아짐에 따라 성능이 급격하게 떨어지기 때문에, 노드 수가 많을 경우 PBFT 프로토콜을 적용하는 것은 매우 바람직하지 않다.
이러한 문제를 극복하기 위해 모든 노드가 합의에 참여하는 것이 아니라 전체 노드 중 일부 노드를 선택하여 일종의 위원회를 구성하고 해당 위원회 멤버 간에만 PBFT 프로토콜을 이용하여 전자 서명을 통해 합의하는 방식이 제안되었다.
그러나, 전자 서명의 검증은 컴퓨팅 자원을 많이 사용하기 때문에, 만약 위원회를 구성하는 노드 수가 늘어날 경우 합의에 걸리는 시간은 물론 일반 노드들이 많은 수의 전자 서명을 검증하는데 발생하는 비용으로 인해 합의가 이루어진 트랜잭션을 처리하는 시간도 크게 늘어날 수 있다.
더군다나, 인터넷 환경에서 분산 시스템이 구성되었다면 네트워크 지연이 발생할 수 있기 때문에, 합의 지연 시간은 더더욱 늘어날 수 있다. 길어진 합의 지연 시간은 현저한 트랜잭션 처리 성능 저하를 초래할 수 있다.
한편, 한국공개특허 제 10-2020-0144466 호“탈 중앙화된 비잔틴 오류 감내 분산 합의 장치 및 방법”는 중앙화된 노드들에 의해 비잔틴 오류 감내(Byzantine Fault Tolerance, BFT) 기반 분산 합의 프로토콜를 수용하면서 메시지 교환을 경량화하여 대량의 탈 중앙화된 노드들의 분산 합의 수행하는 장치 및 방법에 관하여 개시하고 있다.
본 발명은 블록체인 네트워크의 블록 합의에 필요한 합의 지연 시간을 최소화하고 트랜잭션 처리 성능을 향상시키는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 다중 서명 분산 합의 장치는 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 블록체인 네트워크에서 분산 합의에 참여하는 노드들에게 트랜잭션에 대한 상기 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 전송하고, 상기 노드들로부터 수신한 Prepare 메시지에 포함된 메시지 인증 코드 값을 이용하여 상기 노드들을 검증하고, 상기 노드들에게 상기 노드들이 검증되었고, 상기 분산 합의에 필요한 정족 수 이상의 검증된 노드들로부터 상기 Prepare 메시지를 수신했음을 알리기 위한 A-Prepare 메시지를 전송하고, 상기 노드들로부터 수신한 Commit 메시지에 포함된 다중 서명 조각 값들을 이용하여 다중 서명 값을 생성하고, 상기 노드들에게 상기 다중 서명 값을 포함하는 A-Commit 메시지를 전송하여 상기 트랜잭션에 대한 합의를 처리한다.
이 때, 상기 적어도 하나 이상의 프로그램은 사전에 저장된 노드 정보 테이블로부터 상기 노드들의 공개키를 획득하고, 상기 공개키로부터 생성된 메시지 인증 코드와 Prepare 메시지에 포함된 생성된 메시지 인증 코드 값을 비교하여 상기 노드들을 검증할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 자신의 개인키로 상기 A-Prepare 메시지를 서명할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 Commit 메시지에 포함된 메시지 인증 코드를 이용하여 상기 노드들을 검증할 수 있다.이 때, 상기 다중 서명 조각 값들은 상기 분산 합의에 참여하는 노드들의 비밀키로부터 생성될 수 있다.
이 때, 상기 다중 서명 값은 상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성될 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 다중 서명 분산 합의 방법은 다중 서명 분산 합의 장치의 다중 서명 분산 합의 방법에 있어서, 블록체인 네트워크에서 분산 합의에 참여하는 노드들에게 트랜잭션에 대한 상기 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 전송하는 단계; 상기 노드들로부터 수신한 Prepare 메시지에 포함된 메시지 인증 코드 값을 이용하여 상기 노드들을 검증하는 단계; 상기 노드들로부터 상기 노드들이 검증되었고, 상기 분산 합의에 필요한 정족 수 이상의 검증된 노드들로부터 상기 Prepare 메시지를 수신했음을 알리기 위한 A-Prepare 메시지를 전송하는 단계; 상기 노드들로부터 수신한 Commit 메시지에 포함된 다중 서명 조각 값들을 이용하여 다중 서명 값을 생성하는 단계 및 상기 노드들에게 상기 다중 서명 값을 포함하는 A-Commit 메시지를 전송하여 상기 트랜잭션에 대한 합의를 처리하는 단계를 포함한다.
이 때, 상기 노드들을 검증하는 단계는 사전에 저장된 노드 정보 테이블로부터 상기 노드들의 공개키를 획득하고, 상기 공개키로부터 생성된 메시지 인증 코드와 Prepare 메시지에 포함된 생성된 메시지 인증 코드 값을 비교하여 상기 노드들을 검증할 수 있다.
이 때, 상기 A-Prepare 메시지를 전송하는 단계는 자신의 개인키로 상기 A-Prepare 메시지를 서명할 수 있다.
이 때, 상기 다중 서명 값을 생성하는 단계는 상기 Commit 메시지에 포함된 메시지 인증 코드를 이용하여 상기 노드들을 검증할 수 있다.
이 때, 상기 다중 서명 조각 값들은 상기 분산 합의에 참여하는 노드들의 비밀키로부터 생성될 수 있다.
이 때, 상기 다중 서명 값은 상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성될 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 다중 서명 분산 합의 장치는 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 블록체인 네트워크에서 의장 노드로부터 트랜잭션에 대한 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 수신하고, 상기 의장 노드에게 자신이 적법한 노드임을 검증 받기 위한 메시지 인증 코드를 포함하는 Prepare 메시지를 전송하고, 상기 의장 노드로부터 자신과 상기 분산 합의에 참여하는 노드들이 검증 되었고, 상기 분산 합의에 동의 했음을 나타내는 A-Prepare 메시지를 수신하고, 상기 의장 노드에게 다중 서명 값을 생성하기 위한 다중 서명 조각 값을 포함하는 Commit 메시지를 전송하고, 상기 의장 노드로부터 상기 다중 서명 값을 포함하는 A-Commit 메시지를 수신하여 상기 트랜잭션에 대한 분산 합의를 처리한다.
이 때, 상기 적어도 하나 이상의 프로그램은 자신의 노드 식별자와 공개키를 이용하여 상기 메시지 인증 코드 값을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 사전에 저장된 노드 정보 테이블에 등록된 상기 의장 노드의 공개키를 이용하여 상기 A-Prepare 메시지의 서명을 검증할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 의장 노드에게 메시지 인증 코드 값이 포함된 상기 Commit 메시지를 전송할 수 있다.
이 때, 상기 다중 서명 조각 값들은 상기 분산 합의에 참여하는 노드들의 비밀키로부터 생성될 수 있다.
이 때, 상기 다중 서명 값은 상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성될 수 있다.
본 발명은 블록체인 네트워크의 블록 합의에 필요한 합의 지연 시간을 최소화하고 트랜잭션 처리 성능을 향상시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 다중 서명 분산 합의를 위한 분산 트랜잭션 처리 시스템을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 다중 서명 분산 합의 방법을 나타낸 동작흐름도이다.
도 4는 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 다중 서명 분산 합의 방법을 나타낸 동작흐름도이다.
도 4는 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 다중 서명 분산 합의를 위한 분산 트랜잭션 처리 시스템을 나타낸 도면이다.
도 1을 참조하면, 위원회 기반 합의를 하는 대규모 노드로 구성된 분산 트랜잭션 처리 시스템(101)을 나타낸 것을 알 수 있다.
노드들은 하나의 네트워크 홉으로 직접 연결될 수 있으며, 노드 수가 증가함에 따라 P2P 네트워크를 통해 연결될 수 있다.
각 노드는 노드 별로 유일하게 식별되는 (비밀키, 공개키) 쌍을 가질 수 있다.
이 때, 각 노드는 노드를 유일하게 식별하는 노드 식별자를 가질 수 있고, 노드의 공개키로부터 유도한 값을 사용할 수 있다.
이 때, 각 노드는 상태 머신을 가지고 있으며, 트랜잭션을 처리하여 자신의 상태 머신을 업데이트 할 수 있다.
트랜잭션은 단일 트랜잭션으로 구성되거나 트랜잭션의 집합, 또는 블록체인의 블록과 같이 트랜잭션의 배치를 포함할 수 있다.
노드는 역할에 따라 위원회 노드(CN:Committee Node)와 복제 노드(RN:Replication Node)로 구분될 수 있다.
노드의 역할은 특정 주기에 따라 동적으로 바뀔 수 있다.
위원회 노드(103)는 처리할 트랜잭션을 합의하는 노드들의 집합으로 의장 노드와 위원 노드들을 포함할 수 있다.
위원회 노드는 본 발명의 일실시예에 따른 공개적으로 검증 가능한 분산 합의 프로토콜을 사용하여 합의할 수 있다.
합의가 성공한 트랜잭션은 모든 노드에 전달되어 처리될 수 있다.
복제 노드(102)는 합의체 직접적으로 참여하지 않는 노드로서, 합의된 트랜잭션을 전달받아 처리하여 자신의 상태 머신에 기록할 수 있다.
복제 노드는 합의된 트랜잭션을 처리할 때 먼저 해당 트랜잭션이 올바르게 합의가 되었는지를 검증하고, 검증이 됐을 경우에만 해당 트랜잭션을 실행하여 자신의 상태 머신에 기록할 수 있다.
도 2는 본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜을 나타낸 도면이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 다중 서명 분산 합의 방법은 프로토콜 메시지 교환에 따른 합의 과정을 수행할 수 있다.
본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜은 PBFT(Practical Byzantine Fault Tolerant)에 기반한 프로토콜에 상응할 수 있다.
본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜은 Pre-Prepare /Prepare/A-Prepare/Commit/A-Commit의 5개의 메시지를 이용하여 분산 합의를 처리할 수 있다.
본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜은 PBFT의 비잔틴 감내 모델을 따라, f개의 비잔틴 고장을 감내하기 위해서는 3f+1개의 위원회 노드가 필요하다.
도 2에 도시된 바와 같이, 비잔틴 노드가 f=1일 때를 가정하면, 위원회 노드는 CN0~CN3(201~204)의 4개로 노드로 구성되고, 그 중 하나의 노드가 의장 노드 역할을 수행하는데, CN0(201)이 의장 노드인 것을 알 수 있다. 나머지 노드들은 위원 노드들이다(202~204).
의장 노드(201)는 PBFT 프로토콜 입장에서는 Primary 노드에 상응할 수 있고, 위원 노드들(202~204)은 Backup 노드에 상응할 수 있다.
위원회 노드에 속하지 않은 노드들은 복제 노드(205)이다.
의장 노드(201)는 합의할 트랜잭션이 발생하게 되면, Pre-Prepare 메시지를 위원 노드들(202~204)에게 전송할 수 있다(S110).
표 1은 본 발명의 일실시예에 따른 프로토콜 메시지를 나타낸 표이다.
Message 형식 | 설명 |
<<PRE-PREPARE, v, n, d>σp, enckeyi, m> | 프라이머리 노드(리더 노드)가 처리하고자 하는 트랜잭션(메시지)를 백업 노드에게 알리는 메시지v: view number, n: sequence number, d: message digest, enckeyi: node i를 위한 일회용 key 값으로 백업 노드 i의 public key를 이용하여 인코딩한 값, σp: 리더 노드의 시그너처, m: 메시지 |
<<PREPARE, v, n, d, i, Qi>, maci> | 백업 노드 i가 리더가 보낸 PRE-PREPARE 메시지를 받아들였다고 리더에게 알리는 메시지i: 백업 노드 아이디, Qi : 다중 시그너처를 위해 사용되는 값, 노드 i의 Q값 조각, maci: PREPARE 메시지에 대한 Message Authentication Code 값 |
<A-PREPARE, v, n, d, Q, r, pk, Z>σp | 프라이머리 노드가 PREPARE 메시지가 2f개 이상 모였을 경우, 그 사실을 백업 노드 i에게 알리는 메시지Q: 다중 서명의 집합 Q 값, r: 다중 서명의 집합 r 값, pk: 다중 서명의 집합 Public key, Z: Qi의 map, 백업 노드가 보낸 Qi값들을 포함 |
<<COMMIT, v, n, d, si>, maci> | 백업 노드 i가 리더에게 COMMIT할 수 있음을 알리는 메시지si: 노드 i의 서명 값 |
<<A-COMMIT, v, n, d>σp, σc> | 프라이머리 노드가 백업 노드에게 Commit이 되었음을 최종적으로 알리는 메시지, σc: 메시지 m에 대하여 정상적으로 합의가 이루어졌음을 알려주는 다중 시그너처 |
Pre-Prepare 메시지에는 다음의 정보가 포함 될 수 있다.
msg-id는 메시지를 식별하기 위한 정보로 PRE-PREPARE 메시지를 나타낼 수 있다.
v는 뷰 넘버(view number)를 나타낼 수 있다.
n은 시퀀스 넘버(sequence number)를 나타낼 수 있다.
d는 메시지 다이제스트(message digest)로서 message의 일부 또는 전체를 해쉬한 값을 나타낼 수 있다.
enckeyi는 CN 노드 i가 의장 노드에게 메시지 전송 시 사용할 암호화 key인 keyi를 노드 i의 public key를 이용하여 암호화한 값을 나타낼 수 있다.
m은 메시지로서 합의 대상 트랜잭션을 나타낼 수 있다.
Pre-Prepare 메시지는 의장 노드(201)의 서명 σp이 포함될 수 있다.
위원 노드(202~204)는 수신한 Pre-Prepare 메시지가 올바른지 검증하고, 만약 올바르다면 Prepare 메시지를 의장 노드에게 전송할 수 있다(S120).
Prepare 메시지에는 다음의 정보가 포함될 수 있다.
msg-id는 메시지를 식별하기 위한 정보로 PREPARE 메시지를 나타낼 수 있다.
v는 뷰 넘버(view number)를 나타낼 수 있다.
n은 시퀀스 넘버(sequence number)를 나타낼 수 있다.
d는 메시지 다이제스트(message digest)로서 message의 일부 또는 전체를 해쉬한 값을 나타낼 수 있다.
Qi는 주어진 EC(Elliptic Curve)상에서 랜덤 값 ki를 Generator에 곱하여 생성된 Q의 조각 값을 나타낼 수 있고, EC-schnorr 기반 다중 서명을 위해 사용될 수 있다.
Prepare 메시지에는 MAC(Message Authentication Code, 메시지 인증 코드)값인 maci가 포함될 수 있다.
위원 노드(202~204)는 의장 노드(201)로부터 수신한 keyi 값을 이용하여 Prepare 메시지를 hash하여 maci값을 생성할 수 있다.
이 때, 의장 노드(201)는 maci값을 이용하여 Prepare 메시지가 정당한 위원 노드(202~204)로부터 왔는지를 검증할 수 있다.
전자 서명의 검증은 컴퓨팅 자원을 많이 소모하기 때문에, 전자 서명 대신 MAC을 사용하여 검증 시간을 줄일 수 있다.
의장 노드(201)는 2f 개의 Prepare 메시지를 수신하면, A-Prepare 메시지를 위원 노드들(202~204)에게 전송할 수 있다(S130).
의장 노드(201)는 A-Prepare 메시지를 위원 노드들(202~204)에게 다음 단계로 넘어가기 위한 충분한 수의 Prepare가 수신되었음을 알릴 수 있다.
이 때, 위원 노드(202~204)는 상기 의장 노드(201)로부터 자신과 상기 분산 합의에 참여하는 노드들이 검증 되었고, 상기 분산 합의에 동의 했음을 나타내는 A-Prepare 메시지를 수신할 수 있다.
A-Prepare에는 다음의 정보가 포함될 수 있다.
msg-id는 메시지를 식별하기 위한 정보로 A-PREPARE 메시지를 나타낼 수 있다.
v는 뷰 넘버(view number)를 나타낼 수 있다.
n은 시퀀스 넘버(sequence number)를 나타낼 수 있다.
d는 메시지 다이제스트(message digest)로서 message의 일부 또는 전체를 해쉬한 값을 나타낼 수 있다.
Q는 Qi값들의 합을 나타낼 수 있다.
r는 EC-schnorr 전자 서명 값 중 r값을 나타낼 수 있다.
pk는 위원회 노드들의 public key의 합을 나타낼 수 있다.
Z는 Q값을 만드는데 사용한 노드 식별자에 대한 Qi값의 map, 즉, 각 위원회 노드가 보낸 Qi값들을 저장할 수 있다.
A-Prepare 메시지는 의장 노드(201)의 서명 σp가 포함될 수 있다.
위원 노드(202~204)는 수신한 A-Prepare 메시지가 올바른지 검증하고, 만약 올바르다면 Commit 메시지를 의장 노드(201)에게 전송할 수 있다(S140).
Commit 메시지에는 다음의 정보가 포함될 수 있다.
msg-id는 메시지를 식별하기 위한 정보로 COMMIT 메시지를 나타낼 수 있다.
v는 뷰 넘버(view number)를 나타낼 수 있다.
n은 시퀀스 넘버(sequence number)를 나타낼 수 있다.
d는 메시지 다이제스트(message digest)로서 message의 일부 또는 전체를 해쉬한 값을 나타낼 수 있다.
si는 Q, r, Pk와 노드 i의 private key를 이용하여 만든 s값 조각을 나타낼 수 있고, 다중 서명 조각 값들 si를 합쳐 온전한 다중 서명의 구성요소인 s값이 생성될 수 있다.
Commit 메시지에는 MAC(Message Authentication Code)값인 maci가 포함될 수 있다.
위원 노드(202~204)는 의장 노드(201)로부터 수신한 keyi 값을 이용하여 Commit 메시지를 hash하여 maci값을 생성할 수 있다.
의장 노드(201)는 수신한 Commit 메시지가 올바른지 검증하고, 모든 si값을 알게 되면, si로부터 s값을 생성할 수 있다.
의장 노드(201)는 A-Commit 메시지를 위원 노드들(202~204)에게 전송할 수 있다(S150)
A-Commit 메시지에는 다음의 정보가 포함될 수 있다.
msg-id는 메시지를 식별하기 위한 정보로 A-COMMIT 메시지를 나타낼 수 있다.
v는 뷰 넘버(view number)를 나타낼 수 있다.
n은 시퀀스 넘버(sequence number)를 나타낼 수 있다.
d는 메시지 다이제스트(message digest)로서 message의 일부 또는 전체를 해쉬한 값을 나타낼 수 있다.
A-Commit 메시지는 의장 노드(201)의 서명 σp과 합의된 트랜잭션을 전파할 때 포함될 다중 서명 값 σc이 포함될 수 있다.
위원회 노드는 P2P 연결이나 직접 연결을 통해 합의된 트랜잭션을 복제 노드들(205)에게 전송할 수 있다(S160).
이 때, 위원회 노드는 합의된 트랜잭션에 대한 다중 서명 값을 포함하는 A-Commit 메시지를 전송할 수 있다.
복제 노드들(205)은 다중 서명 값 σc가 올바르게 검증되었을 때에만 해당 트랜잭션을 자신의 상태 머신에 반영할 수 있다.
본 발명의 일실시예에 따른 다중 서명 분산 합의 프로토콜은 다중 서명을 생성하기 위해 EC-schnorr 시그너처를 이용할 수 있다.
모든 위원회 노드는 전자 서명을 위해 사용할 수 있는 private key와 public key를 소유한다. 또한, 전자서명을 사용하는 모든 노드는 동일한 EC 커브 파라메터를 사용할 수 있다. 예를 들어, 대표적인 EC 커브 파라메터로 secp256k1이 사용될 수 있다. EC 커브 파라메터는 다음과 같이 표기할 수 있다.
C는 같이 사용할 Elliptic curve, secp256k1과 같은 curve parameter에 의해 정의될 수 있다.
G는 C상의 Generator point를 나타낼 수 있다.
n은 G의 order를 나타낼 수 있다.
m은 서명할 메시지로서, 트랜잭션에 상응할 수 있다.
pki는 노드 i의 public key를 나타낼 수 있다.
ski는 노드 i의 private key를 나타낼 수 있다.
σi는 노드 i가 m에 대해 생성한 시그너처로서 (r, s) 값으로 구성될 수 있다.
EC-Schnorr 다중 서명에서는 다음과 같은 값들이 사용될 수 있다.
ki는 노드 i가 생성한 [1, n-1] 사이의 랜덤 값을 나타낼 수 있다.
Qi는 ki 값을 이용하여 생성된 노드 i의 Q값을 나타낼 수 있고, [ki]·G로 계산될 수 있다.
pk는 다중 서명에 참여하는 노드들의 public key의 합을 나타낼 수 있다.
Q는 Qi의 합을 나타낼 수 있다.
r은 최종 다중 서명의 r값으로, H(Q||pk||m)으로 계산될 수 있다.
si는 노드 i의 private key를 이용하여 생성한 s에 대한 노드 i의 서명 조각을 나타내며, si <- (ki - r·ski) mod n 로 계산될 수 있다.
s는 si의 합을 나타낼 수 있다.
σ는 다중 서명에 의해 만들어진 다중 서명 값으로서 (r, s) 값으로 구성될 수 있다.
σ는 다중 서명에 참여한 노드들의 공개키의 합을 이용하여 생성될 수 있다.
표 2는 본 발명의 일실시예에 따른 노드 정보 테이블을 나타낸 표이다.
표 3은 본 발명의 일실시예에 따른 위원회 정보 테이블을 나타낸 표이다.
표 2를 참조하면, 모든 노드(위원회 노드, 복제 노드)는 노드 정보 테이블을 유지하는 것을 알 수 있다. 노드 정보 테이블은 노드에 대한 기본 정보를 저장하는 테이블로서, 노드 식별자(ID), 노드의 공개키(PUBLIC KEY), MAC에 사용할 암호화 키 정보(KEY), MAC 키를 노드의 public key로 암호화한 암호키(ENCKEY) 정보를 포함할 수 있다.
노드 식별자는 노드를 유일하게 식별하는 식별자에 상응할 수 있다.
예를 들어, 노드 식별자는 public key로부터 유도되어 생성될 수 있다.
Public key는 공개 키 암호화 스킴(scheme)에 따르는 공개 키 값이다.
표 3을 참조하면, 합의 프로토콜에서 동적 위원회가 사용될 경우, 위원회 구성 노드가 회기 별로 바뀔 수 있으므로, 위원회 정보 테이블은 회기 별로 유지할 수 있다. 회기란 구성된 위원회가 합의를 처리하는 기간을 의미한다. 지난 회기의 위원회 정보는 삭제될 수 있다.
위원회 정보 테이블은 위원회 구성 노드의 식별자(ID)와 역할을 저장할 수 있다. 위원회 노드의 public 키, MAC 키, 암호키는 표 2의 노드 정보 테이블을 통해 획득할 수 있다.
도 3은 본 발명의 일실시예에 따른 다중 서명 분산 합의 처리 방법을 나타낸동작흐름도이다.
본 발명의 일실시예에 따른 다중 서명 분산 합의 처리 방법은 프로토콜 동작에서 사용되는 기본 파라메터인 v, n, d, i, m는 그대로 사용할 수 있다.
v는 뷰 넘버(view number)를 나타낼 수 있다.
n은 시퀀스 넘버(sequence number)를 나타낼 수 있다.
d는 메시지 다이제스트(message digest)로서 message의 일부 또는 전체를 해쉬한 값을 나타낼 수 있다.
i는 i 번째 node id를 나타낼 수 있다.
m는 합의 대상 메시지로서 트랜잭션을 나타낼 수 있다.
도 3을 참조하면, 단계(S210)는 위원회 노드가 동작이 실행되면 먼저 자신의 노드 역할을 확인할 수 있다.
단계(S210)는 분산 처리 시스템에 따라 정적으로 또는 동적으로 노드 역할이 설정될 수 있다.
정적으로 설정된 역할은 위원회 노드 정보가 고정된 것을 의미하며, 예를 들어 시스템 구동시 파라메터로 사전에 주어질 수 있다.
동적으로 설정된 역할은 위원회가 특정 주기에 따라 바뀌는 것을 의미하며, 예를 들어, 블록체인과 같은 시스템의 경우 블록의 헤더에 특정 블록을 생성하기 위한 위원회 정보를 업데이트할 수 있다.
이 때, 단계(S210)는 자신의 역할이 의장 노드이면 분산 합의를 처리할 트랜잭션이 존재하는지 확인하고(S220), 자신의 역할이 위원 노드이면 Pre-Prepare 메시지를 수신할 수 있다(S310).
이 때, 단계(S220)는 분산 합의 처리할 트랜잭션이 있는지 검사할 수 있다.
이 때, 단계(S220)는 부가적으로 트랜잭션이 유효한 것인지 자신의 상태 머신을 이용하여 검증할 수 있다.
예를 들어, 단계(S220)는 자신의 잔고보다 많은 금액을 인출하려는 트랜잭션은 유효하지 않은 트랜잭션이며, 이러한 트랜잭션은 합의할 트랜잭션에서 배제할 수도 있다.
이 때, 단계(S220)는 기설정된 트랜잭션 묶음 단위로 트랜잭션에 대한 합의를 처리할 수 있으며, 블록체인과 같이 트랜잭션을 블록으로 묶어서 처리할 수도 있다. 합의할 트랜잭션은 상기 묶음 트랜잭션을 포함할 수 있다.
단계(S230)는 Pre-Prepare 메시지를 생성하여 위원 노드들에게 전송할 수 있다.
이 때, Pre-Prepare 메시지는 enckeyi 값이 추가적으로 포함될 수 있다.
enckeyi는 keyi를 노드 i의 public key를 써서 encode한 값이다.
keyi는 노드 i가 사용할 AES(Advanced Encryption Standard)와 같은 대칭키 암호 기반 암호화 key에 상응할 수 있다.
keyi는 추후 위원 노드가 의장 노드에게 프로토콜 메시지를 전송시 MAC(Message Authentication Code)를 생성할 때 사용될 수 있다.
이 때, 단계(S230)는 keyi를 생성하고, 위원 노드의 keyi값, enckeyi 값 정보를 노드 정보 테이블에 저장할 수 있다.
이 때, 단계(S230)는 Pre-Prepare 메시지에 포함되는 enckeyi값이 노드 별로 다르기 때문에, 서로 다른 Pre-Prepare 메시지를 위원 노드들에게 전송할 수 있다.
만약 노드 수가 많을 경우 다수의 enckeyi를 생성하여야 하는데, enckeyi는 공개키 암호화 스킴을 사용하기 때문에 컴퓨팅에 시간이 걸릴 수가 있다.
따라서, 단계(S230)는 컴퓨팅 시간을 절약하기 위해 enckeyi를 미리 생성할 수 있다.
이 때, 단계(S230)는 각 노드가 만약 다른 노드의 정보(노드 식별자 및 public key 정보)를 획득하게 되면 획득하는 시점에 노드 정보 테이블에 해당 노드를 위한 엔트리를 생성하고, 그 노드를 위한 key 값과 enckey 값을 저장할 수 있다.
이 때, 단계(S230)는 의장 노드가 v, n, d, keyi, enckeyi, m을 포함하는 Pre-Prepare 메시지를 생성하고, Pre-Prepare 메시지를 위원 노드에게 전송할 수 있다.
단계(S240)는 위원 노드들로부터 Prepare 메시지를 수신할 수 있다.
이 때, 단계(S240)는 Pre-Prepare에 매칭되는 2f 개(의장 제외)의 올바른 Prepare 메시지를 수신할 때까지 대기할 수 있다.
이 때, 단계(S240)는 Prepare 메시지를 검증할 수 있다.
이 때, 단계(S240)는 Prepare과 Pre-Prepare에 포함된 v, n, d가 같은지 확인하여, 적법한 위원 노드가 송신한 것인지 검증할 수 있다.
이 때, 단계(S240)는 적법한 위원 노드가 송신한 것인가를 검증하기 위해 Pre-Prepare 메시지에 포함된 노드 아이디(i)가 위원회 정보 테이블에 존재하는지를 확인할 수 있다.
이 때, 단계(S240)는 위원회 정보 테이블에 노드 아이디(i)가 존재하는 경우, MAC의 검사를 위해 노드 i에 해당하는 keyi값을 노드 정보 테이블에서 획득할 수 있다.
이 때, 단계(S240)는 keyi를 이용하여 수신한 Prepare 메시지를 hash하고, hash 값을 maci와 비교할 수 있다.
이 때, 단계(S240)는 hash 값과 maci이 동일하다면 수신 Prepare 메시지가 올바른 것으로 검증할 수 있다.
이 때, 단계(S240)는 2f 개의 올바른 Prepare을 수신할 때까지, 상기 과정을 수행할 수 있다.
Prepare에 포함된 Qi값은 노드 id에 매핑되고 메모리 상에 저장될 수 있다. 이를 서명자 집합 S라 한다. 의장 노드도 자신의 Qi를 만들고 서명자 집합에 Qi을 포함시킬 수 있다. S는 <노드 id, Qi, si>로 구성된 리스트라고 할 수 있다. Qi값은 합의가 완료되었을 때 합의가 올바르게 되었다는 것을 증명하기 위해 포함되는 다중 서명을 생성하기 위해 필요한 값이다.
단계(S250)는 Prepare 메시지로부터 위원 노드에게 다른 위원회 노드들의 검증이 완료되었다는 것을 알리는 A-Prepare 메시지를 전송할 수 있다.
위원 노드들 사이에는 직접적 메시지 교환이 없기 때문에, 의장 노드가 이를 알려야 한다.
이 때, 단계(S250)는 의장 노드가 먼저 v, n, d 값을 설정할 수 있고, 수도코드 1을 이용하여 Q, r, pk, Z를 산출할 수 있다.
[수도코드 1]
r <- H(Q||pk||m)
Z <- list of <id, Qi> of S
이 때, 단계(S250)는 Q, r, pk, Z 를 포함하는 A-Prepare 메시지를 생성하고 의장의 private key로 A-Prepare 메시지를 서명(σp)하여 위원 노드들에게 전송할 수 있다.
단계(S260)는 위원 노드들로부터 Commit 메시지를 수신할 수 있다
이 때, 단계(S260)는 수신한 Commit 메시지에서 다중 서명 생성을 위한 위원 노드의 si 조각을 수집할 수 있다.
si 값은 서명자 집합 S에 기록될 수 있다.
si 조각은 Q에 대한 다중 서명 조각이다.
이 때, 단계(S260)는 S에 포함된 모든 노드들로부터 Commit 메시지를 수신할 수 있다.
이 때, 단계(S260)는 Commit 메시지를 검증할 수 있다.
이 때, 단계(S260)는 A-Prepare 메시지와 Commit 메시지의 v, n, d 값이 일치하고 적법한 위원회 노드가 송신한 메시지인지 검증할 수 있다.
이 때, 단계(S260)는 Commit 메시지에 포함된 maci를 이용하여 적법한 위원 노드가 송신한 것인가를 검증할 수 있다.
이 때, 단계(S260)는 적법한 위원 노드가 송신한 것인가를 검증하기 위해 Commit 메시지에 포함된 노드 아이디(i)가 위원회 정보 테이블에 존재하는지를 확인할 수 있다.
이 때, 단계(S260)는 위원회 정보 테이블에 노드 아이디(i)가 존재하는 경우, MAC의 검사를 위해 노드 i에 해당하는 keyi값을 노드 정보 테이블에서 획득할 수 있다.
이 때, 단계(S260)는 keyi를 이용하여 수신한 Commit 메시지를 hash하고, hash 값을 maci와 비교할 수 있다.
이 때, 단계(S260)는 hash 값과 maci이 동일하다면 수신한 Commit 메시지가 올바른 것으로 검증할 수 있다.
단계(S270)는 트랜잭션 m에 대한 합의가 성공적으로 이루어졌음을 알리고, 공개적으로 검증 가능한 증거를 제시할 수 있다.
이 때, 단계(S270)는 공개적으로 검증 가능한 증거인 다중 서명 제시할 수 있다.
이 때, 단계(S270)는 의장 노드가 서명자 집합 S로부터 수도코드 2와 같이 s값을 생성할 수 있다.
[수도코드 2]
이 때, 단계(S270)는 v, n, d 값과 다중 서명 값(σc)를 포함하는 A-Commit 메시지를 생성하고, A-Commit 메시지를 위원 노드들에게 전송하여 트랜잭션에 대한 합의를 처리할 수 있다.
이 때, σc는 (r, s)를 의미할 수 있다.
또한, 단계(S210)는 노드 역할이 위원 노드 역할 인 경우, Pre-Prepare 메시지를 수신할 수 있다(S310).
이 때, 단계(S310)는 의장 노드로부터 Pre-Prepare 메시지가 오기를 기다리고, 만약 기설정 시간 내에 Pre-Prepare메시지가 도착하지 않는다면 기존 PBFT 프로토콜 처리 절차에 따라 View Change 절차를 시작할 수 있다.
이 때, 단계(S310)는 수신한 Pre-Prepare 메시지를 검증할 수 있다.
이 때, 단계(S310)는 수신한 Pre-Prepare 메시지에서 v, n, d를 검사하고, 노드 정보 테이블과 위원회 정보 테이블을 이용하여 의장의 public key를 획득한 후, 해당 public key를 이용하여 의장의 전자서명인 σp를 검증할 수 있다.
단계(S320)는 의장 노드로부터 수신한 Pre-Prepare 메시지를 받아들였다는 것을 알리는 메시지인 Prepare 메시지를 생성하여 의장 노드에게 전송할 수 있다.
Prepare 메시지는 v, n, d, i, Qi와 maci가 포함될 수 있다.
v, n, d는 Pre-Prepare에 포함된 값과 동일하게 설정될 수 있다.
i는 노드의 id이다. Qi는 다중 서명을 위해 사용되는 값이고, maci는 Prepare 메시지를 보내는 노드가 적법한 노드인지를 검증하기 위해 사용하는 값이다.
maci는 공유 키인 keyi를 이용하여 계산될 수 있다.
keyi는 enckeyi를 자신의 private key를 이용하여 복호화될 수 있다.
Qi와 maci는 수도코드 3과 같이 산출될 수 있다.
[수도코드 3]
keyi <- decode(enckeyi, ski)
ki <- R[1, n-1]
Qi <- [ki]·G 에서
maci <- HMAC(<PREPARE, v, n, d, i, Qi>, keyi)
HMAC는 해싱을 활용한 keyed-hash message authentication code, hash-based message authentication code 를 의미한다.
R[1, n-1]는 1, n-1 사이의 난수 값이다. G는 generator 이다. maci 는 keyi를 이용하여 Prepare 메시지를 해쉬한 값으로 나타낼 수 있다.
단계(S530)는 의장 노드로부터 A-Prepare 메시지를 수신할 수 있다.
이 때, 단계(S530)는 자신과 상기 분산 합의에 참여하는 노드들이 검증 되었고, 상기 분산 합의에 동의 했음을 나타내는 A-Prepare 메시지를 수신할 수 있다.
이 때, 단계(S530)는 기설정된 특정 시간(timeout) 동안 A-Prepare 메시지를 수신할 때가지 대기한다.
이 때, 단계(S530)는 특정 시간이 지나면, 이전에 전송한 Prepare 메시지를 의장 노드에게 재전송하고 timeout 값을 재설정할 수 있다.
이 때, 단계(S530)는 만약 여러 번 재전송에도 A-Prepare 메시지를 수신할 수 없다면 viewchange 절차를 시작할 수 있다.
이 때, 단계(S530)는 수신한 A-Prepare 메시지를 검증할 수 있다.
이 때, 단계(S530)는 의장 노드가 보낸 A-Prepare 메시지가 맞는지 서명 σp 을 검증하고, A-Prepare 메시지에 포함된 v, n, d 값이 Pre-Prepare 메시지에 포함된 v, n, d 값과 비교하여 올바른지에 검증할 수 있다.
이 때, 단계(S530)는 사전에 저장된 노드 정보 테이블에 등록된 상기 의장 노드의 공개키를 이용하여 상기 A-Prepare 메시지를 서명을 검증할 수 있다.
이 때, 단계(S530)는 다중 서명의 하나의 컴포넌트인 r값에 대한 검증을 수행하고, 마지막으로 Z에 내가 보낸 정보에 이 노드의 정보(노드 id, Qi)가 올바르게 포함됐는지를 검증할 수 있다. r값은 수도코드 4와 같이 검증될 수 있다.
[수도코드 4]
r' <- H(Q||pk||m)
check r'==r
단계(S540)는 Commit 메시지를 생성하여 의장 노드에게 전송할 수 있다.
Commit 메시지는 v, n, d, si 값과, commit 메시지에 대한 MAC인 maci가 포함될 수 있다.
v, n, d값은 Pre-Prepare msg에 포함된 값과 같은 값으로 설정될 수 있다.
si와 maci는 수도코드 5와 같이 설정될 수 있다.
keyi는 Pre-Prepare 메시지를 수신하였을 때, enckeyi로부터 계산된 값이다.
[수도코드 5]
si <- (ki - r·ski) mod n
maci <- HMAC(<COMMIT, v, n, d, si>, keyi)
maci는 keyi를 이용하여 Commit 메시지를 해쉬한 값이다.
단계(S550)는 의장 노드로부터 수신한 A-Commit 메시지가 올바른지 검증할 수 있다.
이 때, 단계(S550)는 A-Commit 메시지에 포함된 v, n, d 값이 Pre-Prepare에 포함된 값과 동일한지에 대한 검증하고, 전자 서명 σp을 검증하고, A-Prepare 메시지 수신시 획득한 pk 정보를 이용하여 다중 서명 σc를 검증할 수 있다.
이 때, 단계(S550)는 검증에 성공하면 합의된 트랜잭션을 복제 노드들에게 전송할 수 있다.
이 때, 단계(S550)는 합의가 올바르게 검증됐다는 것을 보장하는 증거 정보를 같이 전송할 수 있다.
증거 정보는 Z와 σc가 포함될 수 있다. 복제 노드는 Z로부터 서명에 참여한 노드를 확인하고 해당 노드들의 public key(pki)를 합쳐 pk를 재구성할 수 있다. 그 후, 복제 노드는 pk를 이용하여 다중 서명 σc를 검증할 수 있다.
도 4는 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
(아래 도4의 번호가 400이 아니라, 1100부터 시작하네요.문제 없는지요)
도 4를 참조하면, 본 발명의 일실시예에 따른 블록체인 네트워크 상의 의장 노드와 위원 노드들을 포함하는 위원회 노드들에 상응하는 다중 서명 분산 합의 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1100)에서 구현될 수 있다. 도 4에 도시된 바와 같이, 컴퓨터 시스템(1100)은 버스(1120)를 통하여 서로 통신하는 하나 이상의 프로세서(1110), 메모리(1130), 사용자 인터페이스 입력 장치(1140), 사용자 인터페이스 출력 장치(1150) 및 스토리지(1160)를 포함할 수 있다. 또한, 컴퓨터 시스템(1100)은 네트워크(1180)에 연결되는 네트워크 인터페이스(1170)를 더 포함할 수 있다. 프로세서(1110)는 중앙 처리 장치 또는 메모리(1130)나 스토리지(1160)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1130) 및 스토리지(1160)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 ROM(1131)이나 RAM(1132)을 포함할 수 있다.
본 발명의 일실시예에 따른 의장 노드에 해당하는 다중 서명 분산 합의 장치는 하나 이상의 프로세서(1110); 및 상기 하나 이상의 프로세서(1110)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리(1130)를 포함하고, 상기 적어도 하나 이상의 프로그램은 블록체인 네트워크에서 분산 합의에 참여하는 노드들에게 트랜잭션에 대한 상기 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 전송하고, 상기 노드들로부터 수신한 Prepare 메시지에 포함된 메시지 인증 코드 값을 이용하여 상기 노드들을 검증하고, 상기 노드들에게 상기 분산 합의에 필요한 정족 수 이상의 인증에 성공한 노드들이 상기 Prepare 메시지를 송신했다는 것을 을 알리기 위한 A-Prepare 메시지를 전송하고, 상기 노드들로부터 수신한 Commit 메시지에 포함된 다중 서명 조각 값들을 이용하여 다중 서명 값을 생성하고, 상기 노드들에게 상기 다중 서명 값을 포함하는 A-Commit 메시지를 전송하여 상기 트랜잭션에 대한 합의를 처리한다.
이 때, 상기 적어도 하나 이상의 프로그램은 사전에 저장된 노드 정보 테이블로부터 상기 노드들의 공개키를 획득하고, 상기 공개키로부터 생성된 메시지 인증 코드와 Prepare 메시지에 포함된 생성된 메시지 인증 코드 값을 비교하여 상기 노드들을 검증할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 자신의 개인키로 상기 A-Prepare 메시지를 서명할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 Commit 메시지에 포함된 메시지 인증 코드를 이용하여 상기 노드들을 검증할 수 있다.
이 때, 상기 다중 서명 조각 값들은 상기 분산 합의에 참여하는 노드들의 비밀키로부터 생성될 수 있다.
이 때, 상기 다중 서명 값은 상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성될 수 있다.
본 발명의 일실시예에 따른 위원 노드에 해당하는 다중 서명 분산 합의 장치는 하나 이상의 프로세서(1110); 및 상기 하나 이상의 프로세서(1110)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리(1130)를 포함하고, 상기 적어도 하나 이상의 프로그램은 블록체인 네트워크에서 의장 노드로부터 트랜잭션에 대한 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 수신하고, 상기 의장 노드에게 자신이 적법한 노드임을 검증 받기 위한 메시지 인증 코드를 포함하는 Prepare 메시지를 전송하고, 상기 의장 노드로부터 자신과 상기 분산 합의에 참여하는 노드들이 검증 되었고, 상기 분산 합의에 동의 했음을 나타내는 A-Prepare 메시지를 수신하고, 상기 의장 노드에게 다중 서명 값을 생성하기 위한 다중 서명 조각 값을 포함하는 Commit 메시지를 전송하고, 상기 의장 노드로부터 상기 다중 서명 값을 포함하는 A-Commit 메시지를 수신하여 상기 트랜잭션에 대한 분산 합의를 처리한다.
이 때, 상기 적어도 하나 이상의 프로그램은 자신의 노드 식별자와 공개키를 이용하여 상기 메시지 인증 코드 값을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 사전에 저장된 노드 정보 테이블에 등록된 상기 의장 노드의 공개키를 이용하여 상기 A-Prepare 메시지를 서명을 검증할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 의장 노드에게 메시지 인증 코드 값이 포함된 상기 Commit 메시지를 전송할 수 있다.
이 때, 상기 다중 서명 조각 값들은 상기 분산 합의에 참여하는 노드들의 비밀키로부터 생성될 수 있다.
이 때, 상기 다중 서명 값은 상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성될 수 있다.
이상에서와 같이 본 발명의 일실시예에 따른 다중 서명 분산 합의 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
1100: 컴퓨터 시스템
1110: 프로세서
1120: 버스 1130: 메모리
1131: 롬 1132: 램
1140: 사용자 인터페이스 입력 장치
1150: 사용자 인터페이스 출력 장치
1160: 스토리지 1170: 네트워크 인터페이스
1180: 네트워크
1120: 버스 1130: 메모리
1131: 롬 1132: 램
1140: 사용자 인터페이스 입력 장치
1150: 사용자 인터페이스 출력 장치
1160: 스토리지 1170: 네트워크 인터페이스
1180: 네트워크
Claims (18)
- 하나 이상의 프로세서; 및
상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고,
상기 적어도 하나 이상의 프로그램은
블록체인 네트워크에서 분산 합의에 참여하는 노드들에게 트랜잭션에 대한 상기 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 전송하고,
상기 노드들로부터 수신한 Prepare 메시지에 포함된 메시지 인증 코드 값을 이용하여 상기 노드들을 검증하고,
상기 노드들에게 상기 분산 합의에 필요한 정족 수 이상의 인증에 성공한 노드들로부터 상기 Prepare 메시지를 수신했음을 알리기 위한 A-Prepare 메시지를 전송하고,
상기 노드들로부터 수신한 Commit 메시지에 포함된 다중 서명 조각 값들을 이용하여 다중 서명 값을 생성하고,
상기 노드들에게 상기 다중 서명 값을 포함하는 A-Commit 메시지를 전송하여 상기 트랜잭션에 대한 합의를 처리하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 1에 있어서,
상기 적어도 하나 이상의 프로그램은
사전에 저장된 노드 정보 테이블로부터 상기 노드들의 공개키를 획득하고, 상기 공개키로부터 생성된 메시지 인증 코드와 Prepare 메시지에 포함된 생성된 메시지 인증 코드 값을 비교하여 상기 노드들을 검증하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 2에 있어서,
상기 적어도 하나 이상의 프로그램은
자신의 개인키로 상기 A-Prepare 메시지를 서명하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 3에 있어서,
상기 적어도 하나 이상의 프로그램은
상기 Commit 메시지에 포함된 메시지 인증 코드를 이용하여 상기 노드들을 검증하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 1에 있어서,
상기 다중 서명 조각 값들은
상기 분산 합의에 참여하는 노드들의 공개키로부터 생성되는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 5에 있어서,
상기 다중 서명 값은
상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성되는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 다중 서명 분산 합의 장치의 다중 서명 분산 합의 방법에 있어서,
블록체인 네트워크에서 분산 합의에 참여하는 노드들에게 트랜잭션에 대한 상기 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 전송하는 단계;
상기 노드들로부터 수신한 Prepare 메시지에 포함된 메시지 인증 코드 값을 이용하여 상기 노드들을 검증하는 단계;
상기 노드들에게 상기 노드들이 검증 되었고, 상기 분산 합의에 필요한 정족 수 이상의 검증된 노드들로부터 상기 Prepare 메시지를 수신했음을 알리기 위한 A-Prepare 메시지를 전송하는 단계;
상기 노드들로부터 수신한 Commit 메시지에 포함된 다중 서명 조각 값들을 이용하여 다중 서명 값을 생성하는 단계; 및
상기 노드들에게 상기 다중 서명 값을 포함하는 A-Commit 메시지를 전송하여 상기 트랜잭션에 대한 합의를 처리하는 단계;
를 포함하는 것을 특징으로 하는 다중 서명 분산 합의 방법. - 청구항 7에 있어서,
상기 노드들을 검증하는 단계는
사전에 저장된 노드 정보 테이블로부터 상기 노드들의 공개키를 획득하고, 상기 공개키로부터 생성된 메시지 인증 코드와 Prepare 메시지에 포함된 생성된 메시지 인증 코드 값을 비교하여 상기 노드들을 검증하는 것을 특징으로 하는 다중 서명 분산 합의 방법. - 청구항 8에 있어서,
상기 A-Prepare 메시지를 전송하는 단계는
자신의 개인키로 상기 A-Prepare 메시지를 서명하는 것을 특징으로 하는 다중 서명 분산 합의 방법. - 청구항 9에 있어서,
상기 다중 서명 값을 생성하는 단계는
상기 Commit 메시지에 포함된 메시지 인증 코드를 이용하여 상기 노드들을 검증하는 것을 특징으로 하는 다중 서명 분산 합의 방법. - 청구항 7에 있어서,
상기 다중 서명 조각 값들은
상기 분산 합의에 참여하는 노드들의 공개키로부터 생성되는 것을 특징으로 하는 다중 서명 분산 합의 방법. - 청구항 11에 있어서,
상기 다중 서명 값은
상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성되는 것을 특징으로 하는 다중 서명 분산 합의 방법. - 하나 이상의 프로세서; 및
상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고,
상기 적어도 하나 이상의 프로그램은
블록체인 네트워크에서 의장 노드로부터 트랜잭션에 대한 분산 합의를 처리하기 위한 Pre-Prepare 메시지를 수신하고,
상기 의장 노드에게 자신이 적법한 노드임을 검증 받기 위한 메시지 인증 코드를 포함하는 Prepare 메시지를 전송하고,
상기 의장 노드로부터 자신과 상기 분산 합의에 참여하는 노드들이 검증 되었고, 상기 분산 합의에 동의 했음을 나타내는 A-Prepare 메시지를 수신하고,
상기 의장 노드에게 다중 서명 값을 생성하기 위한 다중 서명 조각 값을 포함하는 Commit 메시지를 전송하고,
상기 의장 노드로부터 상기 다중 서명 값을 포함하는 A-Commit 메시지를 수신하여 상기 트랜잭션에 대한 분산 합의를 처리하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 13에 있어서,
상기 적어도 하나 이상의 프로그램은
자신의 노드 식별자와 공개키를 이용하여 상기 메시지 인증 코드 값을 생성하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 14에 있어서,
상기 적어도 하나 이상의 프로그램은
사전에 저장된 노드 정보 테이블에 등록된 상기 의장 노드의 공개키를 이용하여 상기 A-Prepare 메시지를 서명을 검증하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 15에 있어서,
상기 적어도 하나 이상의 프로그램은
상기 의장 노드에게 메시지 인증 코드 값이 포함된 상기 Commit 메시지를 전송하는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 13에 있어서,
상기 다중 서명 조각 값들은
상기 분산 합의에 참여하는 노드들의 공개키로부터 생성되는 것을 특징으로 하는 다중 서명 분산 합의 장치. - 청구항 17에 있어서,
상기 다중 서명 값은
상기 다중 서명 조각 값들의 합과 난수의 조합으로 생성되는 것을 특징으로 하는 다중 서명 분산 합의 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210180097A KR20230090912A (ko) | 2021-12-15 | 2021-12-15 | 다중 서명 분산 합의 장치 및 방법 |
US17/860,001 US20230188356A1 (en) | 2021-12-15 | 2022-07-07 | Apparatus and method for processing distributed consensus using multi-signature |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210180097A KR20230090912A (ko) | 2021-12-15 | 2021-12-15 | 다중 서명 분산 합의 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230090912A true KR20230090912A (ko) | 2023-06-22 |
Family
ID=86694031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210180097A KR20230090912A (ko) | 2021-12-15 | 2021-12-15 | 다중 서명 분산 합의 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230188356A1 (ko) |
KR (1) | KR20230090912A (ko) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201908387SA (en) * | 2019-03-18 | 2019-10-30 | Alibaba Group Holding Ltd | Consensus system downtime recovery |
WO2020232200A1 (en) * | 2019-05-14 | 2020-11-19 | Thales Dis Cpl Usa, Inc. | Method for managing data reflecting a transaction |
US11343073B2 (en) * | 2019-06-18 | 2022-05-24 | Electronics And Telecommunications Research Institute | Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance |
CN111526216B (zh) * | 2020-07-03 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和*** |
-
2021
- 2021-12-15 KR KR1020210180097A patent/KR20230090912A/ko not_active Application Discontinuation
-
2022
- 2022-07-07 US US17/860,001 patent/US20230188356A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230188356A1 (en) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022105565A1 (zh) | 一种跨链的区块链通信方法及装置 | |
TWI711287B (zh) | 基於區塊鏈的交易共識處理方法及裝置、電子設備 | |
CN113424185B (zh) | 快速不经意传输 | |
Wang et al. | Enabling public verifiability and data dynamics for storage security in cloud computing | |
CN110247757B (zh) | 基于国密算法的区块链处理方法、装置及*** | |
US7620824B2 (en) | Data communicating apparatus, data communicating method, and program | |
US9276749B2 (en) | Distributed validation of digitally signed electronic documents | |
JP2020522034A (ja) | 複数の鍵ペア署名を使用したプログラム実行およびデータ証明スキーム | |
CN113556363B (zh) | 基于去中心化和分布式代理重加密的数据共享方法及*** | |
CN111066285A (zh) | 基于sm2签名恢复公钥的方法 | |
WO2019047418A1 (zh) | 数字签名方法、装置和*** | |
CN113612610B (zh) | 一种会话密钥协商方法 | |
CN113630248B (zh) | 一种会话密钥协商方法 | |
US20220368539A1 (en) | Computer implemented method and system for storing certified data on a blockchain | |
US20230052608A1 (en) | Remote attestation | |
Zhang et al. | Provably secure cloud storage for mobile networks with less computation and smaller overhead | |
TW202232913A (zh) | 共享金鑰產生技術 | |
TW202318833A (zh) | 臨界簽章方案 | |
US11635952B2 (en) | Secure update propagation with digital signatures | |
CN112039837B (zh) | 一种基于区块链和秘密共享的电子证据保全方法 | |
CN110266478B (zh) | 一种信息处理方法、电子设备 | |
WO2024092935A1 (zh) | 一种区块链上实现分布式密钥生成的方法、***和节点 | |
CN114584975B (zh) | 一种基于sdn的抗量子卫星网络接入认证方法 | |
KR20230090912A (ko) | 다중 서명 분산 합의 장치 및 방법 | |
CN115941164A (zh) | 一种区块链上实现分布式密钥生成的方法、***和节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |