KR20230048893A - 허가형 블록체인 네트워크 구성 방법 및 시스템 - Google Patents

허가형 블록체인 네트워크 구성 방법 및 시스템 Download PDF

Info

Publication number
KR20230048893A
KR20230048893A KR1020210131845A KR20210131845A KR20230048893A KR 20230048893 A KR20230048893 A KR 20230048893A KR 1020210131845 A KR1020210131845 A KR 1020210131845A KR 20210131845 A KR20210131845 A KR 20210131845A KR 20230048893 A KR20230048893 A KR 20230048893A
Authority
KR
South Korea
Prior art keywords
node
nodes
authentication
permissioned blockchain
authentication data
Prior art date
Application number
KR1020210131845A
Other languages
English (en)
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 KR1020210131845A priority Critical patent/KR20230048893A/ko
Publication of KR20230048893A publication Critical patent/KR20230048893A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • 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/1042Peer-to-peer [P2P] networks using topology 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/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/50Cryptographic 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 허가형 블록체인 네트워크 구성 방법은, 허가형 블록체인에 참여하고자 하는 노드들의 정보를 인증서 발급 서버에 사전 등록하는 단계; 상기 허가형 블록체인에 참여 신청한 각 노드에 네트워크 구성용 인증서를 발급하는 단계; 상기 허가형 블록체인에 참여할 수 있는 노드들의 노드 목록을 작성하는 단계; 상기 노드 목록에 기재된 노드들 상호간에 상기 네트워크 구성용 인증서를 이용한 노드들간 인증을 수행하는 단계; 및 상기 상호 인증 수행 결과에 따라 상기 허가형 블록체인 네트워크를 형성하는 단계를 포함할 수 있다.

Description

허가형 블록체인 네트워크 구성 방법 및 시스템{PERMISSIONED BLOCKCHAIN NETWORK CONFIGURATION SYSTEM}
본 발명은 허가형 블록체인 네트워크 구성을 위한 노드들 인증을 해당 노드들이 주도적으로 수행하는 방식의 허가형 블록체인 네트워크에 관한 것이다.
최근에 블록체인은 탈중앙성과 투명성 그리고, 확장성으로 각광받아 여러 어플리케이션에 적용되고 있다. 그중, 허가형 블록체인은 신원이 허가된 즉, 확인된 멤버의 참여로 이루어진다. 따라서, 프라이빗 블록체인이거나 혹은 이러한 블록체인이 여러 그룹으로 모인 컨소시엄 블록체인(Consortium Blockchain)으로 구성된다.
블록체인은 공개키(Public Key)와 이에 대응하는 비밀키(Private Key)를 이용한 시스템으로, 대부분의 허가형 블록체인에서 멤버(사용자) 확인은 공개키 기반 구조(Public Key Infrastructure : 이하 PKI)의 공개키 인증서를 통해 사용자 인증을 수행할 수 있다.
한편, 기존의 데이터 처리 및 관리 등을 위한 시스템 대부분이 중앙에 서버를 두고 서비스를 제공하는 중앙집중화된 형태로 구성된다. 중앙집중형 시스템은 모든 정보가 중앙 서버에 집중되기 때문에 서버에 장애가 발생하면 시스템 전체가 마비되는 등의 문제가 존재한다. 이를 극복하기 위해 데이터를 분산 처리 및 관리할 수 있는 분산 시스템의 필요성이 증가하고 있다. 더불어, 분산된 데이터의 무결성과 신뢰성을 보장하고 데이터 처리 과정의 투명성을 확보할 수 있는 보안 기능도 요구됨에 따라 이를 모두 가능하게 하는 블록체인 기술이 각광받고 있다.
상술한 바와 같이 블록체인 기술은 정보를 분산 저장 및 관리하고, 저장된 정보 간의 유기적인 결합을 통해 데이터 위·변조를 방지하는 기술로 다수의 노드로 네트워크를 구성하여 다양한 서비스를 제공하고 있다.
블록체인 네트워크 중 정해진 참여자만 참여할 수 있는 허가형 블록체인은 권한을 가진 참여자 또는 참여노드(이하 노드)로 네트워크를 구성하기 위해 사전에 노드의 신원을 증명하고 확인하기 위한 인증 절차가 필요하다. 하지만 기존의 허가형 블록체인은 네트워크를 구성하기 위한 노드를 인증하는 방안이 제대로 제시되지 않고 있으며 대부분 인증 방안은 생략된 채 네트워크를 구성하는 경우가 허다하다.
상기 문제점 또는 유사 상황을 해결하기 위해 몇 가지 방안으로서, 블록체인 노드 인증 기술이 제시된 적이 있으며, 대표적인 방법과 관련 기술을 소개하면 다음과 같다.
첫째, '컨소시엄 블록체인 참가 노드 간의 인증 방안(공개번호 : 10-2020-0101020)'은 블록체인 참가 노드 간에 인증 정보를 노드 자신의 개인키로 암호화하고 이를 다른 노드들이 검증함으로써 인증하는 방안을 제시하고 있다.
둘째, '퍼블릭 블록체인의 노드 인증 방법과 이를 수행하기 위한 장치 및 시스템(공개번호 : 10-2020-0002501)'에서는 인증 관리 노드가 퍼블릭 블록체인 노드의 공개키를 자신의 개인키로 암호화하여 블록에 포함시키는 것으로 노드를 인증하는 방안이 제시되었다.
그 외에 다수의 특허에서는 블록체인 참여 노드를 위한 인증 방안이 아닌 블록체인 기술 자체를 활용한 서비스 사용을 위한 인증 방안을 제시하고 있어 본 발명과 차이가 있다.
블록체인 노드 간에 인증으로서 종래 기술들의 문제점들을 정리하면 다음과 같다.
첫째, 공개키 기반의 암·복호화 기술을 사용하고 있다. 현재 데이터를 암호화하기 위한 알고리즘은 다수 존재하며, 크게 암호화와 복호화 시 사용되는 키 유형에 따라 대칭키 기반의 암호알고리즘과 공개키 기반의 암호알고리즘으로 구분된다. 공개키 기반의 암호알고리즘의 경우 동일한 보안 강도를 제공하기 위해 요구되는 키의 크기가 크며 알고리즘 동작 성능도 현저하게 느리다는 단점이 있다.
이를 구체적으로 살펴보면, 먼저, 노드 인증을 위해 공개키 기반 암·복호화 알고리즘을 적용함으로써 성능상 문제를 초래할 가능성이 크다. 공개키 기반 암호화 및 복호화 알고리즘 동작 시간은 전자서명 생성 및 검증 알고리즘 등과 비교할 때 가장 느리다. 이는 다수의 노드로 구성되는 블록체인 네트워크에 적용할 경우 인증 과정에서 많은 시간이 소요되어 블록체인 네트워크를 구성이 지연될 가능성이 크다.
또한, 공개키 기반 알고리즘을 안전하게 운영하기 위해서 인증 기관이 서명한 인증서를 사용이 필요하다. 또한, 해당 인증서를 발급받고 검증하는 절차가 필요한데 상기 기술들은 이를 고려하지 않고 있다.
둘째, 허가형 블록체인이 아닌 퍼블릭 블록체인을 위한 인증 방법을 제시하고 있으며 네트워크 참여 노드가 외부 인증 서버를 통해 인증 관리 노드에게 자신의 공개키를 등록함으로써 인증받는 구조를 채택하고 있다.
다시말해, 상기 기술들은 블록체인 네트워크 종류 중 퍼블릭과 컨소시엄 형태의 블록체인을 위한 인증 방안을 설계하였다. 이는 허가형 블록체인의 네트워크 구성, 운영 방식 등과는 상이하므로 허가형 블록체인에 그대로 적용하는 데 한계가 있다.
마지막으로, 실제로 전용망등을 이용한 허가형 블록체인 네트워크의 운영은, 하나의 조직 내부에서 보다는, 소정 개수의 비교적 규모가 큰 조직들(예: 소정 개수의 기업들)간에 이루어질 수 있는데, 서로 대등한 지위에 있어서 특정 기업에 인증 권한을 일임하는 것이 곤란하며, 단순히 인증 권한을 분산시키면, 노드들간의 인증의 부담이 커지며, 오류 노드의 존재시 대처가 어렵게 된다.
대한민국 공개공보 10-2020-0101020호 대한민국 공개공보 10-2020-0002501호
본 발명은 허가형 블록체인의 구조적 특징을 고려한 인증 방안으로서 인증 과정 시 노드의 계산 부담을 줄이면서도 신뢰성과 성능을 보장할 수 있는 노드들간 인증 방안으로서 허가형 블록체인 네트워크 구성 방법 및 시스템을 제공하고자 한다.
본 발명은 노드의 신원 확인을 위한 절차부터 인증서 발급, 노드 간 인증 절차까지 명확하게 제시되는 허가형 블록체인 네트워크 구성 방법 및 시스템을 제공하고자 한다.
본 발명의 일 측면에 따른 허가형 블록체인 네트워크 구성 방법은, 허가형 블록체인에 참여하고자 하는 노드들의 정보를 인증서 발급 서버에 사전 등록하는 단계; 상기 허가형 블록체인에 참여 신청한 각 노드에 네트워크 구성용 인증서를 발급하는 단계; 상기 허가형 블록체인에 참여할 수 있는 노드들의 노드 목록을 작성하는 단계; 상기 노드 목록에 기재된 노드들 상호간에 상기 네트워크 구성용 인증서를 이용한 노드들간 인증을 수행하는 단계; 및 상기 상호 인증 수행 결과에 따라 상기 허가형 블록체인 네트워크를 형성하는 단계를 포함할 수 있다.
여기서, 상기 사전 등록하는 단계는, 상기 인증서 발급 서버에서 2개 이상의 노드 관리자에게 사전 등록 권한을 부여하는 단계; 및 상기 노드 관리자가 블록체인에 참여하고자 하는 하나 이상의 노드에 대한 정보를 상기 인증서 발급 서버에 입력하는 단계를 포함할 수 있다.
여기서, 상기 노드 목록을 작성하는 단계에서는, 상기 허가형 블록체인에 참여할 수 있는 노드들로 순환형 토폴로지를 작성하고, 상기 노드 목록에 상기 순환형 토폴로지를 반영할 수 있다.
여기서, 상기 노드들간 인증을 수행하는 단계에서 각 노드는, 상기 순환형 토폴로지의 순서상 이전 노드로부터 인증 데이터를 수신하고, 상기 인증 데이터를 검증하여 그 결과를 상기 이전 노드로 전송하고, 상기 이전 노드의 인증 데이터와 결합된 자신의 인증 요청 메시지를 생성하여, 상기 순환형 토폴로지의 순서상 다음 노드로 전송할 수 있다.
여기서, 상기 인증 데이터는, 해당 노드의 식별자, 해당 노드가 생성한 난수 및 해당 노드가 상기 난수를 조합하여 생성한 서명을 포함할 수 있다.
여기서, 상기 노드들간 인증을 수행하는 단계에서 각 노드는, 자신의 개인키를 이용하여 서명을 생성하고, 노드 목록에서 다른 노드의 공개키를 획득하여 상기 다른 노드의 서명을 검증할 수 있다.
여기서, 상기 노드들간 인증을 수행하는 단계에서 각 노드는, 상기 인증 데이터를 검증하는 것을 실패하면 소정 회수 상기 인증 데이터의 재송부 및 검증을 반복하며, 반복된 검증이 모두 실패하면 상기 인증서 발급 서버로 인증 실패를 통보할 수 있다.
여기서, 상기 인증서 발급 서버는, 상기 노드들 중에서 인증 실패를 통보한 노드가 존재하면, 상기 인증 실패를 확인하고, 인증 실패된 인증 데이터를 생성한 노드를 상기 노드 목록에서 삭제하거나 제거한 수정된 노드 목록을 작성하여, 상기 노드들에 배포할 수 있다.
본 발명의 다른 측면에 따른 허가형 블록체인 네트워크 구성 시스템은, 허가형 블록체인에 참여를 원하는 노드들을 인증하고, 상기 허가형 블록체인을 위한 인증서를 발급하며, 상기 허가형 블록체인에 소속된 노드들에 대한 노드 목록을 생성하고, 상기 노드 목록을 관리 및 배포하는 인증서 발급 서버; 상기 노드 목록에 기재되며, 상기 인증서 및 상기 노드 목록을 이용하여, 상기 허가형 블록체인을 구성하는 다수개의 노드들; 및 상기 다수개의 노드들 중 하나 이상에 대하여 구비되며, 해당 노드를 위해 허가형 블록체인으로의 참여 요청 및 초기 키 쌍을 상기 인증서 발급 서버로 배포하는 노드 관리자들을 포함할 수 있다.
여기서, 상기 노드 관리자는, 자신이 담당하는 노드들 중에서 상기 허가형 블록체인에 참여할 노드들을 선택하고 보안 사항을 설정할 수 있다.
여기서, 상기 노드 목록은, 상기 허가형 블록체인에 참여할 수 있는 노드들로 작성된 순환형 토폴로지가 반영될 수 있다.
여기서, 상기 노드들 각각은, 상기 순환형 토폴로지의 순서상 이전 노드로부터 상기 허가형 블록체인 구성을 위한 인증 데이터를 수신하고, 상기 인증 데이터를 검증하여 그 결과를 상기 이전 노드로 전송하고, 상기 이전 노드의 인증 데이터와 결합된 자신의 인증 데이터를 생성하여, 상기 순환형 토폴로지의 순서상 다음 노드로 전송할 수 있다.
여기서, 상기 인증 데이터는, 해당 노드의 식별자, 해당 노드가 생성한 난수 및 해당 노드가 상기 난수를 조합하여 생성한 서명을 포함할 수 있다.
여기서, 상기 노드들 각각은, 자신의 개인키를 이용하여 서명을 생성하고, 노드 목록에서 다른 노드의 공개키를 획득하여 상기 다른 노드의 서명을 검증할 수 있다.
여기서, 상기 노드들 각각은, 상기 인증 데이터를 검증하는 것을 실패하면 소정 회수 상기 인증 데이터의 재송부 및 검증을 반복하며, 반복된 검증이 모두 실패하면 상기 인증서 발급 서버로 인증 실패를 통보할 수 있다.
여기서, 상기 인증서 발급 서버는, 상기 노드들 중에서 인증 실패를 통보한 노드가 존재하면, 상기 인증 실패를 확인하고, 인증 실패된 인증 데이터를 생성한 노드를 상기 노드 목록에서 삭제하거나 제거한 수정된 노드 목록을 작성하여, 상기 노드들에 배포할 수 있다.
상술한 구성의 본 발명의 사상에 따른 허가형 블록체인 네트워크 구성 방법 및/또는 시스템을 실시하면, 허가형 블록체인의 구조적 특징을 고려하고 인증 과정 시 노드의 계산 부담을 줄이면서도 신뢰성과 성능을 보장할 수 있는 이점이 있다.
구체적으로, 본 발명의 허가형 블록체인 네트워크 구성 방법 및/또는 시스템은, 기존의 양방향인증 또는 공개키 기반 암호화 방식이 아닌 공개키 기반 서명 알고리즘을 활용한 데이터 체인 형태의 단방향인증 방식을 제시함으로써 인증 처리 시간을 단축시키는 이점이 있다.
본 발명의 허가형 블록체인 네트워크 구성 방법 및/또는 시스템은, 노드의 신원 확인을 위한 절차부터 인증서 발급, 노드 간 인증 절차까지 명확하게 제시하는 이점이 있다. 또한, 블록체인 네트워크 구성을 위한 노드의 인증 방식 자체를 제안함으로써 네트워크의 신뢰성을 확보하고 안정적인 네트워크를 운영할 수 있는 이점이 있다.
도 1은 본 발명의 사상에 따른 허가형 블록체인 네트워크 구성 방법의 일 실시예를 도시한 흐름도.
도 2a는 블록체인에 참여하고자 하는 노드 관리자가 CA에게 해당 노드의 사전 정보를 제출하는 모습을 나타내는 개념도.
도 2b는 3개의 노드 관리자가 총 9개의 노드들을 사전 등록하는 모습을 도시한 개념도.
도 3a는 노드 관리자가 CA에게 자신이 관리하는 노드를 사전등록하기 위한 구체적인 절차를 보여주는 흐름도.
도 3b는 블록체인에 참여하고자 하는 노드가 CA에게 인증받는 모습을 나타내는 개념도.
도 4는 CA와 노드 간에 인증하는 방법과 인증 후 CA가 노드에게 인증서를 발급하는 절차를 보여주는 흐름도.
도 5는 새로운 키 쌍을 생성하여 CA와 노드 간에 인증하는 방법과 인증 후 CA가 노드에게 인증서를 발급하는 절차를 보여주는 흐름도.
도 6은 CA가 블록체인 참여 노드를 모두 인증한 뒤 인증된 노드들의 목록(NL)을 생성하고 전파하는 과정을 보여주는 흐름도.
도 7은 노드 간 인증하기 위한 노드 구성도를 간략하게 표현한 개념도.
도 8은 노드 간 인증하는 절차를 나타낸 흐름도.
도 9는 도 8의 인증 절차를 처리하기 위한 노드의 동작 흐름을 보여주는 순서도.
도 10은 노드 간의 인증 과정에서 인증이 실패한 경우 노드를 재구성하는 모습을 보여주는 개념도.
도 11은 노드 간의 인증 과정에서 인증이 실패한 경우 절차를 상세히 나타내는 흐름도.
본 발명을 설명함에 있어서 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되지 않을 수 있다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 연결되어 있다거나 접속되어 있다고 언급되는 경우는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해될 수 있다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다.
본 명세서에서, 포함하다 또는 구비하다 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것으로서, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해될 수 있다.
또한, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
실무에 유효하게 적용될 수 있는 허가형 블록체인 노드 간의 인증 방법은 다음과 같은 요구조건을 만족시키면서 신뢰성과 성능을 보장할 수 있어야 한다.
1) 인증 과정 시 노드의 계산 부담을 줄일 수 있어야 한다.
2) 허가형 블록체인의 구조적 특징을 고려한 인증 방안이 제시되어야 한다.
상기 요구조건을 만족시키기 위하여 본 발명에서는 허가형 블록체인 네트워크를 구성하기 위해 노드를 인증하는 방안을 다음과 같이 제안하여 허가형 블록체인에 참여하는 노드의 신뢰성을 확보하고, 안정적인 블록체인 네트워크를 운영하고자 한다.
① 블록체인에 참여하기 위한 노드 관리자가 인증서 발급 서버인 CA(Certificate Authority)에게 노드를 사전 등록하는 과정
② 블록체인에 참여하고자 하는 노드가 CA에 인증을 받은 후 인증서를 발급받는 과정
③ 인증서를 발급받은 노드들 간의 인증 방법
본 발명에서 제안하고 있는 인증은 CA가 노드를 인증하는 방법과 노드 간에 서로를 인증하는 방법을 포함하고 있으며, 공개키 기반 서명생성 및 검증 방식을 활용한다. 또한, 다수의 노드로 구성된 블록체인 네트워크에서 인증 시 소요되는 시간을 최소화하기 위한 방안을 적용하였다. CA가 노드를 인증할 때는 단방향인증을 사용하도록 설계하며, 노드 간에 인증할 때는 인증 정보를 체인으로 연결함으로써 인증 메시지의 회수를 최소화하도록 설계할 수 있다.
다음, 도면을 참조하여 본 발명의 구체적인 사례를 설명하겠다.
도 1은 본 발명의 사상에 따른 허가형 블록체인 네트워크 구성 방법의 일 실시예를 도시한 흐름도이다.
도시한 허가형 블록체인 네트워크 구성 방법은, 허가형 블록체인에 참여하고자 하는 노드들의 정보를 인증서 발급 서버에 사전 등록하는 단계(S100); 상기 허가형 블록체인에 참여 신청한 각 노드에 네트워크 구성용 인증서를 발급하는 단계(S300); 상기 허가형 블록체인에 참여할 수 있는 노드들의 노드 목록을 작성하는 단계(S500); 상기 노드 목록에 기재된 노드들 상호간에 상기 네트워크 구성용 인증서를 이용한 노드들간 인증을 수행하는 단계(S600); 및 상기 상호 인증 수행 결과에 따라 허가형 블록체인 네트워크를 형성하는 단계(S800)를 포함할 수 있다.
상기 허가형 블록체인 네트워크를 형성하는 단계(S800)는 보안 인증이 완료된 노드들로 허가형 블록체인 네트워크를 형성하는 다양한 공지 기술들에 따라 수행될 수 있으며, 상세 설명은 생략하겠다.
도 2a는 블록체인에 참여하고자 하는 노드 관리자가 CA에게 해당 노드의 사전 정보를 제출하는 모습(S100)을 나타내는 개념도이다.
노드 관리자(200)는 자신이 관리하는 노드를 CA(100)에게 사전등록하기 위해 CA(100)에 접속한다. 이때, 노드 관리자(200)는 CA(100)에 접속 가능한 웹페이지 등에 사전 등록이 되어있어야 하며 일반적인 아이디/패스워드 등의 로그인 방식을 통해 웹페이지에 안전하게 접근한다. 즉, 구현에 따라, 상기 사전 등록하는 단계(S100)는, 상기 인증서 발급 서버에서 2개 이상의 노드 관리자에게 사전 등록 권한을 부여하는 단계; 및 상기 노드 관리자가 블록체인에 참여하고자 하는 하나 이상의 노드에 대한 정보를 상기 인증서 발급 서버에 입력하는 단계를 포함할 수 있다. 상술한 2 단계들 사이에 상기 노드 관리자가 자신이 보유한 서버들을 점검/조정할 시차를 둘 수도 있다. 이에 대해서는 다음 도면에서 후술하겠다.
도시한 노드 관리자(200)는 시스템적인 관점에서 CA는 노드 관리자의 서버나 단말로서 인식하나, 본 발명의 설명에서는 다수회 반복되는 중복되는 표현을 줄이고자 노드 관리자라고 칭한 것이다.
마찬가지로, 다수개의 참여 노드들로 구성되는 블록체인 네트워크도 다수회 반복되는 중복되는 표현인 바, 경우에 따라 편의상 블록체인이라고 약칭하기도 한다.
노드 관리자의 CA 접근 방법에 대한 구체적인 내용은 본 발명 범위 밖으로 본 발명에서는 자세히 기술하지 않는다.
도 2b는 3개의 노드 관리자(201 ~ 203)가 총 9개의 노드들(노드1 ~ 노드9)을 사전 등록하는 모습을 도시한 개념도이다.
예컨대, 3개의 업체들이 하나의 허가형 블록체인 네트워크를 운영할 것을 합의 한 경우, 각 노드 관리자(201 ~ 203)는 각 업체들을 대표할 수 있다. 이때, 각 노드 관리자(201 ~ 203)는 각 업체의 담당 서버로서, 상기 CA에 대하여 상술한 노드 관리자에게 사전 등록 권한을 부여하는 단계에서 접속 권한을 획득할 수 있다.
각 노드 관리자(201 ~ 203)는, 상술한 노드 관리자에게 사전 등록 권한을 부여하는 단계와 노드에 대한 정보를 상기 인증서 발급 서버에 입력하는 단계 사이의 시차 동안, 각 업체에서 보유하고 있는 서버 설비 들 중, 허가형 블록체인 네트워크를 위해 할당할 수 있는 서버 설비를 선택하고, 선택된 설비에 초기 키 쌍을 발급하는 등 보안 설정을 수행하여, 상기 허가형 블록체인의 노드(노드1 ~ 노드9)가 될 수 있도록 업체 내부 작업을 수행할 수 있다.
도 3a는 노드 관리자(200)가 CA(100)에게 자신이 관리하는 노드를 사전등록하기 위한 상기 S100 단계의 구체적인 절차를 보여주는 흐름도이다. 상기 CA(100)에 접속한(S110) 노드 관리자(200)는 노드에서 사용할 키 쌍(PKNode, SKNode)을 생성(S120)한 뒤 공개키(PKNode)와 노드의 식별자인 IDNode를 CA에게 제출한다(S140). 노드 사전 등록을 요청받은 CA는 노드 정보를 노드 목록(NL)에 추가하여 노드 목록(NL)을 갱신한다(S150). 정상적으로 갱신한 경우에는 노드 관리자에게 True를 반환하고, 노드 식별자가 중복되는 등의 이유로 갱신이 정상적으로 이루어지지 않는 경우에는 노드 관리자에게 False를 반환한다(S160).
도 3b은 블록체인에 참여하고자 하는 노드(300)가 CA(100)에게 인증받는 모습을 나타내는 개념도이다.
노드(300)는 자신의 인증 데이터를 계산한 뒤 CA(100)에게 인증을 요청함으로써 인증이 시작된다. 일반적으로는 인증하는 두 주체 간의 상호 신뢰를 확보하기 위해 상호인증 또는 양방향인증을 진행하지만, CA(100)는 사전에 신뢰 가능한 주체로 판단하여 CA(100)가 노드(300)를 인증하는 단방향인증만 수행할 수 있다.
CA(100)와 노드(300)간에 단방향인증을 수행함으로써 빠르고 간소화된 인증이 가능하다. CA(100)가 노드(300)를 확인하는 과정이 끝나면 노드(300)에게 인증서를 발급한다. 이때, 노드(300)는 기존에 사용하던 키 쌍을 활용하여 인증서 발급을 요청하는 방법과 새로운 키 쌍을 생성하여 인증서 발급을 요청하는 방법 중 택일하여 진행할 수 있다.
도 4는 기존의 키 쌍을 활용하는 인증 방법을 설명하고 있으며 해당 방법은 시간을 단축할 수 있다. 도 5는 새로운 키 쌍을 생성하여 인증하는 방법을 설명한다.
도 4는 기존의 키 쌍을 활용하여 CA(100)와 노드(300) 간에 인증하는 방법과 인증 후 CA(100)가 노드(300)에게 인증서를 발급하는 절차를 보여주는 흐름도이다. 이는 인증서 발급 시 노드(300)가 기존에 소유하던 키 쌍을 활용하는 방법이다.
노드(300)는 난수(x)를 생성(S310)한 뒤 인증 정보(r)를 생성한다(S315). 인증 정보는 노드(300)의 식별자(IDNode)와 난수(x)를 연접하여 노드의 개인키로 서명한 값으로서, 하기 수학식 1과 같이 표현할 수 있다. 이때 서명 알고리즘은 안전성 및 데이터 크기를 고려하여 타원곡선 기반의 알고리즘인 ECDSA(p-256) 사용을 권장하며, 각 시스템에 맞게 다른 서명 알고리즘 적용이 가능하다.
Figure pat00001
하기 수학식 2와 같이, 노드(300)는 CA(100)에게 식별자(IDNode)와 난수(x), 인증 정보(r), 자신의 공개키(PKNode)를 전송하면서 인증을 요청할 수 있다(S320).
Figure pat00002
인증 요청을 받은 CA(100)는 노드 식별자와 공개키가 도 2에서 사전 등록된 노드의 정보와 일치함을 확인할 수 있다(S330). 만약 일치할 경우 인증 정보(r)을 검증(S335)한 뒤 인증 여부를 노드(300)에게 전달한다(S340). 인증 여부를 수신한 노드(300)는 CA(100)에게 인증서 발급을 요청하는데(S350), 만약 인증되지 않는 노드가 인증서 발급을 요청한 경우 CA(100)는 인증서 발급을 거부한다. 인증이 완료된 노드(300)로부터 인증서 발급 요청을 수신한 CA(100)는, 하기 수학식 3과 같이, 노드의 공개키(PKNode)가 포함된 인증서(CERTNode)를 생성하여(S360) 자신의 개인키(SKCA)로 서명한 뒤 생성된 인증서와 CA의 인증서(CERTCA)를 노드에게 전달할 수 있다(S365).
Figure pat00003
인증서를 발급받은 노드(300)는 CA(100)의 인증서에 포함된 공개키(PKCA)를 이용하여 자신의 인증서의 유효성을 검증(S370)한 뒤 인증서 발급 확인 여부를 CA(100)에게 알린다(S375).
도 5는 새로운 키 쌍을 생성하여 CA(100)와 노드(300) 간에 인증하는 방법과 인증 후 CA(100)가 노드(300)에게 인증서를 발급하는 절차를 보여주는 흐름도이다.
도시한 과정들은 인증서 발급 시 노드(300)가 새로운 키 쌍을 생성하여 인증서 발급을 요청하는 방법이다. 노드(300)는 난수(x)를 생성(S410)한 뒤 인증 정보(r)를 생성한다(S415). 인증 정보는 노드(300)의 식별자(IDNode)와 난수(x)를 연접하여 노드(300)의 개인키로 서명한 값으로서, 하기 수학식 4를 따를 수 있다.
Figure pat00004
하기 수학식 5와 같이, 노드(300)는 CA(100)에게 식별자(IDNode)와 난수(x), 인증 정보(r), 자신의 공개키(PKNode)를 전송하면서 인증을 요청할 수 있다(S420).
Figure pat00005
인증 요청을 받은 CA(100)는 노드 식별자와 공개키가 도 2에서 사전 등록된 노드의 정보와 일치함을 확인한다(S430). 만약 일치할 경우 인증 정보(r)을 검증(S435)한 뒤 인증 여부와 함께 공개키 갱신 요청을 노드(300)에게 전달한다(S440). 이를 수신한 노드(300)는 새로운 키 쌍(
Figure pat00006
)을 생성(S452)한 뒤 자신의 식별자와 새로운 공개키(
Figure pat00007
)를 연접하여 하기 수학식 6과 같이 새로운 인증값(r')을 생성할 수 있다(S454).
Figure pat00008
하기 수학식 7과 같이 노드(300)는 새로운 인증값을 CA(100)에게 전달하며 인증서 발급을 요청할 수 있다(S456).
Figure pat00009
만약 인증되지 않는 노드가 인증서 발급을 요청한 경우 CA는 인증서 발급을 거부한다. 인증서 발급 요청을 수신한 CA(100)는 인증값(r')을 검증하여 상기 노드(300)가 인증된 노드이고, 새로운 키 쌍을 정상적으로 생성하였음을 검증한다(S460). 이후 CA(100)는 노드(300)의 새로운 공개키(
Figure pat00010
)가 포함된 인증서(CERTNode)를 생성하여 자신의 개인키(SKCA)로 서명(S462)한 뒤, 하기 수학식 8과 같이 생성된 인증서와 CA의 인증서(CERTCA)를 노드에게 전달한다(S465).
Figure pat00011
인증서를 발급받은 노드(300)는 CA의 인증서에 포함된 공개키(PKCA)를 이용하여 자신의 인증서의 유효성을 검증(S470)한 뒤 인증서 발급 확인 여부를 CA에게 알린다(S475).
도 6은 상기 S500 단계에서 CA가 블록체인 참여 노드를 모두 인증한 뒤 인증된 노드들의 목록(NL)을 생성하고 전파하는 과정을 보여주는 흐름도이다.
CA(100)가 인증한 노드의 정보를 모든 노드들(301 ~ 30N)이 공유함으로써 노드 간의 인증을 위한 인증 시작 순서와 인증에 필요한 정보를 공유하고자 한다. CA(100)는 노드 인증 및 인증서 발급이 완료되면 각 노드(301 ~ 30N)의 식별자(IDNode)와 공개키(PKNode)의 무결성 검증을 위한 해시값(HNode)을 예컨대 하기 수학식 9와 같이 생성한다(S520). 이때, 해시값 생성을 위한 알고리즘은 SHA-256 등이 가능하다.
Figure pat00012
CA(100)는 상기 계산된 해시값을 포함하여 노드 목록(NL)을 생성한다(S530). 노드 목록(NL)은 예컨대 하기 수학식 10과 같이 인증된 노드의 순서(index(i))와 식별자(IDNode), 공개키(PKNode), 해시값(HNode)으로 구성된다. 노드의 순서(index(i))는 도 4 또는 도 5의 인증 과정 및 인증서 발급 과정이 완료되어 CA가 노드로부터 인증서 발급 확인 여부를 수신하면 인증된 순서대로 각 노드에게 부여되는 값으로 이는 노드 간의 인증 시 인증 순서로 사용된다. 이는 허가형 블록체인에 대한 순환형 토폴로지를 반영한 것으로 볼 수 있다. 다른 구현에서는 순환형 토폴로지를 상기 노드 목록에 별도로 직접 기재할 수 있다. 상술한 경우, 상기 노드 목록을 작성하는 단계(S500)에서는, 상기 허가형 블록체인에 참여할 수 있는 노드들로 순환형 토폴로지를 작성하고, 상기 노드 목록에 상기 순환형 토폴로지를 반영(기재)할 수 있다.
Figure pat00013
노드 목록(NL)은 CA에게 인증받은 노드 정보를 다른 블록체인 참여 노드에게 모두 공유해주기 위함으로 데이터 크기를 고려하여 최소한의 데이터만으로 구성하기 위해 노드의 인증서를 대신하여 공개키만 포함시킬 수 있다다. 만약, 특정 노드의 인증서가 필요한 경우에는 해당 노드 또는 CA에게 요청하여 수신할 수 있다.
상기 내용과 같이 CA는 노드 목록(NL)을 생성하여 하기 수학식 11과 같이 모든 블록체인 참여 노드에게 브로드캐스트하여 공유하고 노드 목록(NL)을 수신한 노드는 수신 확인 여부를 CA에게 응답한다(S560). 만약 노드가 응답하지 않는 경우에는 CA는 해당 노드에게 다시 노드 목록(NL)을 전달한다.
Figure pat00014
도 7은 순환형 토폴로지 형태의 노드 간 인증하기 위한 노드 구성도를 간략하게 표현한 개념도이다.
노드 목록(NL)에 포함된 노드의 순서(index(i))에 따라 첫 번째 노드(이하 노드1, index(1))가 노드 간 인증을 시작한다. 노드 전체 수를 N개라고 가정한다. 노드1은 자신의 인증 데이터를 생성하여 두 번째 노드(이하 노드2, index(2))에게 송신하면서 인증을 요청한다. 노드2(302)는 노드1(301)의 인증 데이터를 검증한 뒤 검증 결과를 노드1(301)에게 송신한다. 검증이 완료되면 노드2(302)는 자신의 인증 데이터를 생성하여 세 번째 노드(이하 노드3, index(3))에게 전달한다. 이때, 노드2(302)는 노드3(303)에게 자신의 인증데이터와 이전 노드인 노드1(301)의 인증 데이터를 전달함으로써 노드1(301)에 대한 검증을 노드3(303)도 수행하도록 한다. 이는 노드2(302)의 인증 결과를 재확인함으로써 인증 결과의 신뢰성을 높이기 위함이다. 이를 반복하여 마지막 N번째 노드(이하 노드N, index(N))의 순서가 되면 노드N(30N)은 이전의 노드(N-1)의 인증 데이터와 노드(N-2)의 인증 데이터 검증한다. 검증이 완료되면 자신의 인증 데이터를 생성한 뒤 노드1(301)에게 전달한다. 노드1(301)은 노드N(30N)의 인증 데이터를 검증한 뒤 인증 결과를 전달하고, 인증이 정상적으로 이루어진 경우에는 인증을 종료한다.
본 발명에서는 인증 데이터를 생성할 때 이전 노드의 정보를 함께 결합하는 방법을 제안하여 인증을 위한 메시지 전달 횟수를 최소화하고자 하였다. 이는 노드 목록이 순환형 토폴로지를 가질 때 더욱 효과적이다.
N개의 노드가 일반적인 양방향인증을 한다면 인증 정보 전달 횟수가 최소 N(N-1)/2번 이상 소요가 되지만, 본 발명에서는 N번의 인증 정보 전달로 노드 간의 인증이 가능하도록 설계하여 메시지 전달 횟수를 확연히 감소시켰다. 이에 대한 자세한 동작 흐름과 인증 데이터는 도 8 ~ 도 9의 설명에서 자세히 서술한다.
도 8은 상기 S600 단계에서 노드 간 인증하는 절차를 나타낸 흐름도이다. 노드1(301)은 자신의 인증 데이터를 생성하기 위해 다음의 절차를 진행한다. 먼저, 하기 수학식 12와 같이 난수(NonceNode1)를 생성한 뒤 자신의 식별자(IDNode1)와 연접하여 자신의 개인키(SKNode1)로 서명(RNode1)을 생성한다.
Figure pat00015
그 다음 하기 수학식 13과 같이 자신의 인증 데이터(Msg(1))를 생성하여 노드2(302)에게 전송한다.
Figure pat00016
노드2(302)는 노드1(301)의 인증 데이터(Msg(1))에 포함된 서명(RNode1)을 검증함으로써 노드1(301)의 인증 데이터를 검증한다. 서명 검증을 위해 노드2(302)는 노드 목록(NL)에서 노드1(301)의 공개키(PKNode1)를 검색하여 가져온 뒤 서명 검증을 진행한다. 검증이 완료되면 노드2(302)는 노드1(301)에게 결과를 전송한다. 만약 검증 실패한 경우에 노드1(301)은 인증 데이터를 재생성하여 노드2(302)에게 다시 전송하여 인증받는다. 상술한 노드1(301) 중심의 일련의 과정들은 도 8에 S600-1로 나타내었다.
인증이 성공한 경우에는 노드2(302)는 자신의 인증 데이터(Msg(2))를 생성하기 위해 하기 수학식 14와 같이 난수(NonceNode2)를 생성한 뒤 다음과 같이 자신의 개인키(SKNode2)로 서명(RNode2)을 생성한다.
Figure pat00017
이때, 노드1(301)의 서명과는 다르게 노드2(302)는 자신이 생성한 난수(NonceNode2)와 노드1(301)의 난수(NonceNode1)를 XOR 연산을 한 뒤 서명을 생성하는데, 이는 노드 간의 인증 데이터의 체인을 형성하기 위함이다. 이와 같이 인증 정보들을 결합하여 체인을 생성함으로써 노드 간의 인증 정보 전달 횟수를 최소화하고자 하였다. 서명을 생성한 뒤 노드2(302)는 자신의 인증 데이터(Msg(2))를 생성하여 노드3(303)에게 전달한다. 이때, 노드1(301) 인증의 재확인을 위해 하기 수학식 15와 같은 노드1(301)의 인증 데이터(Msg(1))도 하기 수학식 16과 같이 함께 전달한다.
Figure pat00018
Figure pat00019
노드3(303)은 노드2(302)와 노드1(301)의 인증 데이터를 모두 검증하기 위해 각 데이터에 포함된 서명들을 검증한다. 이때, 서명 검증을 위해 노드3(303)은 노드 목록(NL)에서 노드1(301)의 공개키(PKNode1)와 노드2(302)의 공개키(PKNode2)를 검색하여 가져온 뒤 서명 검증을 진행한다. 검증이 완료되면 노드2(302)에게 결과를 전송하는데, 만약 검증 실패한 경우 노드2(302)는 인증 데이터를 재생성하여 노드3(303)에게 다시 전송하여 인증받는다. 상술한 노드2(301) 중심의 일련의 과정들은 도 8에 S600-2로 나타내었으며, 이후 과정들도 마찬가지이다.
인증이 성공한 경우에는 노드3(303)은 자신의 인증 데이터(Msg(3))를 생성하기 위해 난수(NonceNode3)를 생성한 뒤 노드2(302)의 난수(NonceNode2)와 XOR 연산한 뒤 하기 수학식 17과 같이 자신의 개인키(SKNode3)로 서명(RNode3)을 생성한다.
Figure pat00020
이후 노드3(303)은 하기 수학식 18과 같이 자신의 인증 데이터(Msg(3))를 생성하여 노드4에게 전달한다. 이때, 노드2(302) 인증의 재확인을 위해 노드2(302)의 인증 데이터(Msg(2))를 함께 전달한다. 또한, 하기 수학식 19와 같이 노드3(303)부터는 노드2(302)의 인증 데이터 검증에 필요한 노드1(301)의 난수(NonceNode1)도 인증 요청 메시지에 포함시켜 전송한다.
Figure pat00021
Figure pat00022
위와 같은 절차를 반복하여 마지막 노드인 노드N(30N)의 순서가 되면 노드N(30N)은 도면의 S600-N 과정으로서 다음과 같이 동작한다. 노드N(30N)은 노드(N-1)과 노드(N-2)의 인증 데이터에 포함된 서명을 검증하여 노드 인증을 완료한다. 인증이 성공한 경우 노드N(30N)은 자신의 인증 데이터(Msg(N))를 생성하기 위해 하기 수학식 20과 같은 난수(NonceNodeN)를 생성한 뒤 다음과 같이 자신의 개인키(SKNodeN)로 서명(RNodeN)을 생성한다.
Figure pat00023
이후 노드N(30N)은 자신의 인증 데이터(Msg(N))를 생성하여 첫 번째 노드인 노드1에게 전달한다. 이때, 노드(N-1) 인증의 재확인을 위해 노드(N-1)의 인증 데이터(Msg(N-1))와 노드(N-2)의 난수(NonceNode(N-2))도 함께 전달한다.
Figure pat00024
Figure pat00025
노드1(301)은 수신한 노드N(30N)과 노드(N-1)의 인증 데이터의 서명을 검증하여 노드N을 인증한다. 인증이 성공하면 노드1(301)은 노드간의 인증 과정을 종료한다. 이후, 노드1(301)은 도 1의 800 단계를 개시할 수 있다.
도 9는 상기 도 8의 인증 절차를 처리하기 위한 개별 노드의 동작 흐름을 보여주는 순서도이다. 노드1과 나머지 노드의 동작 흐름이 상이하기 때문에 노드1의 인증 처리 방법과 노드i의 인증 처리 방법으로 구분하였다. 먼저, 노드1의 인증 처리 방법은 다음과 같다.
노드1은 자신의 인증 데이터를 생성하여(S611) 노드2에게 전달함(S612)으로써 인증 시작을 알린다(S613). 이후 노드2로부터 인증 결과를 수신하여(S614) 인증 결과에 따라 인증 성공인 경우(S615) 대기상태로 천이하고, 인증 실패인 경우 인증 데이터를 재생성하여(S611) 노드2에게 다시 제출한다.
노드1은 나머지 노드가 인증을 진행할 동안 대기하다가 마지막 순번인 노드N의 인증 데이터를 수신하면(S616), 해당 데이터를 검증하여(S617, S618) 노드N을 인증한다. 인증이 성공하면 노드 간의 인증을 종료한다. 인증이 실패하면 노드N에 이를 전달(S619)하는데, 이후 과정은 후술하는 각 노드의 인증 실패의 경우와 유사하다.
노드i의 인증 처리 방법은 나머지 노드들이 인증하는 동작 흐름을 나타낸다. 노드i는 이전 노드인 노드(i-1)의 인증 데이터를 수신하면(S6i1) 노드 목록(NL)에서 노드(i-1)의 공개키를 확인하여(S6i2) 추출한 다음 해당 인증 데이터에 포함된 서명을 검증한다(S6i3). 이후 노드i는 검증 결과를 노드(i-1)에게 전달(S6i4)한 뒤 자신의 인증 데이터를 생성하여(S6i5) 다음 노드인 노드(i+1)에게 전달한다(S6i6, 6i7). 노드(i+1)가 노드i를 인증한 결과에 따라 인증 과정을 종료한다(S6i8, S6i9).
도 10은 노드 간의 인증 과정에서 인증이 실패한 경우 노드를 재구성하는 모습을 보여주는 개념도이다. k번째 노드(이하 노드k)가 이상 노드라고 가정한다면, 그 다음 노드(k+1)은 노드k의 인증 데이터 검증 시 실패하게 된다. 인증 데이터 검증 실패 시 노드(k+1)은 노드k에게 인증 데이터를 다시 요청하여 인증을 재시도한다. 이와 같은 과정을 세 번 반복해도 인증 데이터 검증이 실패한 경우 노드(k+1)은 노드k가 이상 노드라고 판단하고 CA에게 인증 실패 노드가 존재함을 알린다. 인증 실패 알림 메시지를 수신한 CA는 노드 목록(NL)에서 노드k 정보를 삭제한 뒤 노드(k+1)에게 인증재개를 요청한다. 이후 노드(k+1)는 노드(k+2)에게 인증을 요청함으로써 인증을 계속해서 진행한다. 이후 노드 간의 인증이 완료되면 CA는 업데이트된 노드 목록(NL)을 전체 노드에게 브로드캐스트한다.
도 11은 노드 간의 인증 과정에서 인증이 실패한 경우 절차를 상세히 나타내는 흐름도이다. 노드k가 이상 노드라고 가정할 경우 이후 노드에서 인증 실패 처리는 다음과 같이 진행한다. 노드k는 하기 수학식 23과 같이 자신의 인증 데이터(Msg(k))를 생성하고 이전 노드인 노드(k-1)의 인증 데이터(Msg(k-1))와 노드(k-2)의 난수(NonceNode(k-2))를 취합하여, 하기 수학식 24와 같이 다음 노드인 노드(k+1)에게 전송한다.
Figure pat00026
Figure pat00027
Figure pat00028
노드(k+1)은 노드(k-1)과 노드k의 인증 데이터에 포함된 서명을 검증하여 각 노드를 인증한다. 여기까지의 과정들(S600-k-1)은 도 8의 노드3 이후 각 노드들의 과정들(S600-3)과 같다.
이때, 노드k의 인증 데이터 검증이 실패할 경우 노드(k+1)은 노드k에게 인증 실패 메시지를 전송하면서 인증 데이터를 재요청한다(S720). 이 과정을 세 번 반복하였을 때도 인증에 실패하면 하기 수학식 25와 같이 노드(k+1)은 인증 실패 메시지(Auth_Fail)를 생성한 뒤, 하기 수학식 26과 같이 CA(100)에게 인증 실패를 알린다(S745). 이때, 인증 데이터 재요청 횟수는 운영 환경에 따라 변경할 수 있다.
Figure pat00029
Figure pat00030
Figure pat00031
노드(k+1)에게 인증 실패 메시지를 받은 CA(100)는 노드k의 인증 메시지를 다시 검증하여(S750) 인증 실패를 재확인 후 노드(k+1)에게 인증 재개를 요청하면서(S752) 노드 목록(NL)에서 노드k 정보를 삭제한다(S755). 인증 재개를 요청받은 노드(k+1)은 하기 수학식 27과 같이 자신의 인증 데이터(Msg(k+1))를 생성하여, 하기 수학식 27과 같이 노드(k+2)에게 인증 요청을 한다(S600-k). 이때, 이전 노드인 노드k는 네트워크 구성에서 제외되기 때문에 그 이전 노드인 노드(k-1)의 정보를 이용하여 인증 데이터를 구성한다.
Figure pat00032
Figure pat00033
Figure pat00034
이후 절차는 도 8 ~ 도 9의 노드 간 인증 과정 그대로 진행하여 인증 절차를 마무리한다. 모든 인증 과정이 마무리되면 CA(100)는 업데이트된 노드 목록(NL)을 도 6과 같이 모든 노드에 재전송하여 인증된 노드 목록을 모두 공유하도록 한다.
상술한 순환형 인증의 최초 개시 방안으로서, 상기 노드 목록에 각 노드별로 순환형 인증을 개시할 시각을 충분한 이격을 두고 각각 다르게 기재하고, 각 노드는 자신이 개시할 시각까지 도 8에 도시한 바와 같이 인접 노드로부터 인증 메시지를 받지 못하면, 자신이 순환형 인증을 개시할 수 있다.
다음, 상술한 허가형 블록체인 네트워크 구성 방법을 수행하는 시스템에 대하여 살펴보겠다. 도 1에 도시한 허가형 블록체인 네트워크 구성 방법은, 도 2a 또는 도 2b에 도시한 허가형 블록체인 네트워크 구성 시스템에 의해 수행될 수 있다.
상술한 개념에 따른 허가형 블록체인 네트워크 구성 시스템은, 허가형 블록체인에 참여를 원하는 노드들을 인증하고, 상기 허가형 블록체인을 위한 인증서를 발급하며, 상기 허가형 블록체인에 소속된 노드들에 대한 노드 목록을 생성하고, 상기 노드 목록을 관리 및 배포하는 인증서 발급 서버; 상기 노드 목록에 기재되며, 상기 인증서 및 상기 노드 목록을 이용하여, 상기 허가형 블록체인을 구성하는 다수개의 노드들; 및 상기 다수개의 노드들 중 하나 이상에 대하여 구비되며, 해당 노드를 위해 허가형 블록체인으로의 참여 요청 및 초기 키 쌍을 상기 인증서 발급 서버로 배포하는 노드 관리자들을 포함할 수 있다.
상기 노드 관리자는 도 2b와 같이 노드들 중 서브 그룹을 관리하는 중간 관리자의 역할을 수행하도록 구현할 수 있으며, 이 경우, 상기 노드 관리자는, 자신이 담당하는 노드들 중에서 상기 허가형 블록체인에 참여할 노드들을 선택하고 보안 사항(초기 키 쌍 발급)을 설정할 수 있다.
앞서 살펴본 바와 같이 상기 노드 목록은, 상기 허가형 블록체인에 참여할 수 있는 노드들로 작성된 순환형 토폴로지가 반영될 수 있으며, 이 경우, 상기 노드들 각각은, 상기 순환형 토폴로지의 순서상 이전 노드로부터 상기 허가형 블록체인 구성을 위한 인증 데이터를 수신하고, 상기 인증 데이터를 검증하여 그 결과를 상기 이전 노드로 전송하고, 상기 이전 노드의 인증 데이터와 결합된 자신의 인증 데이터를 생성하여, 상기 순환형 토폴로지의 순서상 다음 노드로 전송할 수 있다.
이때, 상기 인증 데이터는, 해당 노드의 식별자, 해당 노드가 생성한 난수 및 해당 노드가 상기 난수를 조합하여 생성한 서명을 포함할 수 있다. 상기 난수를 조합하는 방법은 이전 난수와 XOR 연산으로 적용될 수 있으며, 도 8에 도시한 바와 같이, 노드들간 인증 작업을 개시한 최초 노드의 난수와 이전 노드의 난수를 상기 인증 데이터에 포함시킬 수 있다.
상기 노드들 각각은, 자신의 개인키를 이용하여 자신의 서명을 생성하고, 노드 목록에서 다른 노드의 공개키를 획득하여 상기 다른 노드의 서명을 검증한다.
상기 노드들 각각은, 상기 인증 데이터를 검증하는 것을 실패하면 소정 회수 상기 인증 데이터의 재송부 및 검증을 반복하며, 반복된 검증이 모두 실패하면 상기 인증서 발급 서버로 인증 실패를 통보할 수 있다. 그러면, 상기 인증서 발급 서버는, 상기 노드들 중에서 인증 실패를 통보한 노드가 존재하면, 상기 인증 실패를 확인하고, 인증 실패된 인증 데이터를 생성한 노드를 상기 노드 목록에서 삭제하거나 제거한 수정된 노드 목록을 작성하여, 상기 노드들에 배포할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 인증서 발급 서버(CA)
200, 201 ~ 203 : 노드 관리자
300, 301 ~ 304, 30N : 노드

Claims (16)

  1. 허가형 블록체인에 참여하고자 하는 노드들의 정보를 인증서 발급 서버에 사전 등록하는 단계;
    상기 허가형 블록체인에 참여 신청한 각 노드에 네트워크 구성용 인증서를 발급하는 단계;
    상기 허가형 블록체인에 참여할 수 있는 노드들의 노드 목록을 작성하는 단계;
    상기 노드 목록에 기재된 노드들 상호간에 상기 네트워크 구성용 인증서를 이용한 노드들간 인증을 수행하는 단계; 및
    상기 상호 인증 수행 결과에 따라 상기 허가형 블록체인 네트워크를 형성하는 단계
    를 포함하는 허가형 블록체인 네트워크 구성 방법.
  2. 제1항에 있어서,
    상기 사전 등록하는 단계는,
    상기 인증서 발급 서버에서 2개 이상의 노드 관리자에게 사전 등록 권한을 부여하는 단계; 및
    상기 노드 관리자가 블록체인에 참여하고자 하는 하나 이상의 노드에 대한 정보를 상기 인증서 발급 서버에 입력하는 단계
    를 포함하는 허가형 블록체인 네트워크 구성 방법.
  3. 제1항에 있어서,
    상기 노드 목록을 작성하는 단계에서는,
    상기 허가형 블록체인에 참여할 수 있는 노드들로 순환형 토폴로지를 작성하고, 상기 노드 목록에 상기 순환형 토폴로지를 반영하는 허가형 블록체인 네트워크 구성 방법.
  4. 제3항에 있어서,
    상기 노드들간 인증을 수행하는 단계에서 각 노드는,
    상기 순환형 토폴로지의 순서상 이전 노드로부터 인증 데이터를 수신하고, 상기 인증 데이터를 검증하여 그 결과를 상기 이전 노드로 전송하고, 상기 이전 노드의 인증 데이터와 결합된 자신의 인증 요청 메시지를 생성하여, 상기 순환형 토폴로지의 순서상 다음 노드로 전송하는 허가형 블록체인 네트워크 구성 방법.
  5. 제4항에 있어서,
    상기 인증 데이터는,
    해당 노드의 식별자, 해당 노드가 생성한 난수 및 해당 노드가 상기 난수를 조합하여 생성한 서명을 포함하는 허가형 블록체인 네트워크 구성 방법.
  6. 제5항에 있어서,
    상기 노드들간 인증을 수행하는 단계에서 각 노드는,
    자신의 개인키를 이용하여 서명을 생성하고,
    노드 목록에서 다른 노드의 공개키를 획득하여 상기 다른 노드의 서명을 검증하는 허가형 블록체인 네트워크 구성 방법.
  7. 제4항에 있어서,
    상기 노드들간 인증을 수행하는 단계에서 각 노드는,
    상기 인증 데이터를 검증하는 것을 실패하면 소정 회수 상기 인증 데이터의 재송부 및 검증을 반복하며,
    반복된 검증이 모두 실패하면 상기 인증서 발급 서버로 인증 실패를 통보하는 허가형 블록체인 네트워크 구성 방법.
  8. 제7항에 있어서,
    상기 인증서 발급 서버는,
    상기 노드들 중에서 인증 실패를 통보한 노드가 존재하면, 상기 인증 실패를 확인하고, 인증 실패된 인증 데이터를 생성한 노드를 상기 노드 목록에서 삭제하거나 제거한 수정된 노드 목록을 작성하여, 상기 노드들에 배포하는 허가형 블록체인 네트워크 구성 방법.
  9. 허가형 블록체인에 참여를 원하는 노드들을 인증하고, 상기 허가형 블록체인을 위한 인증서를 발급하며, 상기 허가형 블록체인에 소속된 노드들에 대한 노드 목록을 생성하고, 상기 노드 목록을 관리 및 배포하는 인증서 발급 서버;
    상기 노드 목록에 기재되며, 상기 인증서 및 상기 노드 목록을 이용하여, 상기 허가형 블록체인을 구성하는 다수개의 노드들; 및
    상기 다수개의 노드들 중 하나 이상에 대하여 구비되며, 해당 노드를 위해 허가형 블록체인으로의 참여 요청 및 초기 키 쌍을 상기 인증서 발급 서버로 배포하는 노드 관리자들
    을 포함하는 허가형 블록체인 네트워크 구성 시스템.
  10. 제9항에 있어서,
    상기 노드 관리자는,
    자신이 담당하는 노드들 중에서 상기 허가형 블록체인에 참여할 노드들을 선택하고 보안 사항을 설정하는 허가형 블록체인 네트워크 구성 시스템.
  11. 제9항에 있어서,
    상기 노드 목록은,
    상기 허가형 블록체인에 참여할 수 있는 노드들로 작성된 순환형 토폴로지가 반영된 허가형 블록체인 네트워크 구성 시스템.
  12. 제11항에 있어서,
    상기 노드들 각각은,
    상기 순환형 토폴로지의 순서상 이전 노드로부터 상기 허가형 블록체인 구성을 위한 인증 데이터를 수신하고, 상기 인증 데이터를 검증하여 그 결과를 상기 이전 노드로 전송하고, 상기 이전 노드의 인증 데이터와 결합된 자신의 인증 데이터를 생성하여, 상기 순환형 토폴로지의 순서상 다음 노드로 전송하는 허가형 블록체인 네트워크 구성 시스템.
  13. 제12항에 있어서,
    상기 인증 데이터는,
    해당 노드의 식별자, 해당 노드가 생성한 난수 및 해당 노드가 상기 난수를 조합하여 생성한 서명을 포함하는 허가형 블록체인 네트워크 구성 시스템.
  14. 제13항에 있어서,
    상기 노드들 각각은,
    자신의 개인키를 이용하여 서명을 생성하고,
    노드 목록에서 다른 노드의 공개키를 획득하여 상기 다른 노드의 서명을 검증하는 허가형 블록체인 네트워크 구성 시스템.
  15. 제12항에 있어서,
    상기 노드들 각각은,
    상기 인증 데이터를 검증하는 것을 실패하면 소정 회수 상기 인증 데이터의 재송부 및 검증을 반복하며,
    반복된 검증이 모두 실패하면 상기 인증서 발급 서버로 인증 실패를 통보하는 허가형 블록체인 네트워크 구성 시스템.
  16. 제15항에 있어서,
    상기 인증서 발급 서버는,
    상기 노드들 중에서 인증 실패를 통보한 노드가 존재하면, 상기 인증 실패를 확인하고, 인증 실패된 인증 데이터를 생성한 노드를 상기 노드 목록에서 삭제하거나 제거한 수정된 노드 목록을 작성하여, 상기 노드들에 배포하는 허가형 블록체인 네트워크 구성 시스템.
KR1020210131845A 2021-10-05 2021-10-05 허가형 블록체인 네트워크 구성 방법 및 시스템 KR20230048893A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210131845A KR20230048893A (ko) 2021-10-05 2021-10-05 허가형 블록체인 네트워크 구성 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210131845A KR20230048893A (ko) 2021-10-05 2021-10-05 허가형 블록체인 네트워크 구성 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20230048893A true KR20230048893A (ko) 2023-04-12

Family

ID=85984294

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210131845A KR20230048893A (ko) 2021-10-05 2021-10-05 허가형 블록체인 네트워크 구성 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR20230048893A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200002501A (ko) 2018-06-29 2020-01-08 세종대학교산학협력단 퍼블릭 블록체인의 노드 인증 방법과 이를 수행하기 위한 장치 및 시스템
KR20200101020A (ko) 2019-02-19 2020-08-27 군산대학교산학협력단 컨소시엄 블록체인 참가 노드 간의 인증 방안

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200002501A (ko) 2018-06-29 2020-01-08 세종대학교산학협력단 퍼블릭 블록체인의 노드 인증 방법과 이를 수행하기 위한 장치 및 시스템
KR20200101020A (ko) 2019-02-19 2020-08-27 군산대학교산학협력단 컨소시엄 블록체인 참가 노드 간의 인증 방안

Similar Documents

Publication Publication Date Title
US10581615B2 (en) Blockchain-based identity authentication method, device, node and system
CN108667612B (zh) 一种基于区块链的信任服务架构及方法
CN109104415B (zh) 构建可信节点网络的系统及方法
JP2022504420A (ja) デジタル証明書の発行方法、デジタル証明書発行センター、記憶媒体およびコンピュータプログラム
CN110581854B (zh) 基于区块链的智能终端安全通信方法
US10250383B1 (en) Dynamic domain key exchange for authenticated device to device communications
US8756675B2 (en) Systems and methods for security in a wireless utility network
CN109450877B (zh) 基于区块链的分布式IDaaS身份统一认证系统
US20090240941A1 (en) Method and apparatus for authenticating device in multi domain home network environment
US20100154040A1 (en) Method, apparatus and system for distributed delegation and verification
CN113194469A (zh) 基于区块链的5g无人机跨域身份认证方法、系统及终端
JP2006115502A (ja) ポータブルセキュリティトークン使用型認証機関間相互認証方法及び装置
WO2008083628A1 (fr) Serveur d'authentification, procédé, système et dispositif d'authentification mutuelle dans un réseau sans fil maillé
US11228450B2 (en) Method and apparatus for performing multi-party secure computing based-on issuing certificate
CN113079215B (zh) 一种基于区块链的配电物联网无线安全接入方法
CN114884698B (zh) 基于联盟链的Kerberos与IBC安全域间跨域认证方法
KR20230098755A (ko) 개인정보의 익명성을 제공하는 블록체인 시스템 및 블록체인에서 개인정보의 익명성을 제공하는 방법
WO2008002081A1 (en) Method and apparatus for authenticating device in multi domain home network environment
CN101577620A (zh) 一种以太网无源光网络(epon)系统认证方法
TWI818209B (zh) 基於分散式分類帳之憑證鑑別及憑證發布之方法及系統
KR20200081101A (ko) 개인정보의 익명성을 제공하는 블록체인 시스템 및 블록체인에서 개인정보의 익명성을 제공하는 방법
JP5556180B2 (ja) 電子証明書を用いた認証に係るネットワークシステム、認証サーバ装置および認証方法
KR20230048893A (ko) 허가형 블록체인 네트워크 구성 방법 및 시스템
CN114553527A (zh) 一种基于区块链的跨ca信任域的身份认证服务系统
EP3935534B1 (en) Multi-way trust formation in a distributed system

Legal Events

Date Code Title Description
A201 Request for examination