KR20180086679A - 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법 - Google Patents

블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법 Download PDF

Info

Publication number
KR20180086679A
KR20180086679A KR1020170010413A KR20170010413A KR20180086679A KR 20180086679 A KR20180086679 A KR 20180086679A KR 1020170010413 A KR1020170010413 A KR 1020170010413A KR 20170010413 A KR20170010413 A KR 20170010413A KR 20180086679 A KR20180086679 A KR 20180086679A
Authority
KR
South Korea
Prior art keywords
block
peer
authentication information
user
authentication
Prior art date
Application number
KR1020170010413A
Other languages
English (en)
Other versions
KR101930825B1 (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 KR1020170010413A priority Critical patent/KR101930825B1/ko
Publication of KR20180086679A publication Critical patent/KR20180086679A/ko
Application granted granted Critical
Publication of KR101930825B1 publication Critical patent/KR101930825B1/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법에 관한 것으로, 블록체인 시스템은 블록체인 네트워크를 통하여 서로 다른 금융기관의 인증정보를 연계함으로써, 하나의 금융기관으로부터 사용자 인증을 받은 사용자가 이 인증정보를 이용하여 다른 금융기관으로부터도 금융 서비스를 받을 수 있도록 하고, 블록체인 시스템의 피어는 블록 동기화 이벤트가 발생하면 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하고, 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신함으로써 블록체인을 동기화한다.

Description

블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법{System and method for authenticating users and synchronizing blocks using a block-chain network}
이하의 일 실시 예들은 사용자를 인증하고, 관련 정보를 블록체인으로 생성하고 동기화 하는 기술에 관한 것입니다.
블록체인은 공공 거래 장부라고도 부르며 가상 화폐로 거래할 때 발생할 수 있는 해킹을 막는 기술이다. 기존 금융 회사의 경우 중앙 집중형 서버에 거래 기록을 보관하는 반면, 블록체인은 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용한다. 블록체인은 대표적인 온라인 가상 화폐인 비트코인에 적용되어 있다. 비트코인은 누구나 열람할 수 있는 장부에 거래 내역을 투명하게 기록하며, 비트코인을 사용하는 여러 컴퓨터가 이 기록을 검증하여 해킹을 막는다
블록체인은 단순히 비트코인에만 적용되는 기술이 아니며, 여러 데이터를 보관하는 데에도 적용함으로써 데이터베이스(DB)의 유지 보수와 보안에 따른 막대한 비용을 줄일 수 있는 효과를 가진 기술이다.
이러한 블록체인 기술은 네트워크로 전달되는 트랜잭션을 수신하는 누구나가 블록을 생성할 수 있으나, 그 중에서 가장 빠르게 블록을 생성한 노드의 블록이 채택되는 형태를 가지고 있다. 또한, 유사한 시점에서 블록이 여러 개 생성되는 경우 체인이 여러 갈래로 분화되는데 이는 추후에 가장 긴 체인을 제외하고 삭제되는 방법으로 정리해서 동기화 된다.
이처럼 기존의 블록체인의 경우는 블록체인 네트워크에 포함된 임의의 피어에서 블록을 생성할 수 있어, 동시에 여러 블록이 생성될 수 있고, 그 중에서 하나의 블록이 최종 선택되는 방법으로 블록을 생성하기 때문에, 블록을 생성하는데 자원의 낭비가 초래되며, 동시에 생성된 블록의 동기화를 위한 자원의 낭비 또한 초래하게 된다.
따라서, 동시에 블록이 생성됨으로써 발생하는 자원의 낭비와, 여러 블록 중에서 하나를 선택하여 동기화 하는데 소모되는 자원의 낭비를 줄일 필요가 있다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법을 제공하는 것을 목적으로 한다.
, 은 기관을 하는 자들이 방법을 하여 기관의 트에 인하여 스를 함을 하고, 에서 하는 블록체인 네트워크를 통하여 서로 다른 금융기관의 인증정보를 연계함으로써, 하나의 금융기관으로부터 사용자 인증을 받은 사용자가 이 인증정보를 이용하여 다른 금융기관으로부터도 금융 서비스를 받을 수 있도록 한다.
또한, 본 발명은 블록체인 시스템에서 블록체인 네트워크에 포함된 다른 피어들과 블록을 동기화하는 블록체인 시스템 및 방법에 관한 것으로, 피어에서 블록 동기화 이벤트가 발생하면 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하고, 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 블록체인의 블록을 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화를 수행하는 방법을 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법은, 제1 피어에서 사용자의 인증서 발급 요청에 따라 인증서 식별정보, 인증정보 및 인증서를 생성하는 단계; 상기 제1 피어에서 블록체인 네트워크를 통해서 상기 인증서를 블록체인에 저장하는 단계; 상기 제1 피어에서 상기 블록체인 네트워크를 통해서 상기 인증정보를 상기 블록체인에 저장하여 상기 인증정보를 등록하는 단계; 상기 제1 피어에서 상기 인증서를 상기 사용자에게 송신하는 단계; 제2 피어에서 상기 사용자로부터 인증 요청을 수신하면, 상기 인증 요청에서 상기 인증서 식별정보를 추출하는 단계; 상기 제2 피어에서 상기 인증정보를 추정하는 단계; 상기 제2 피어에서 상기 인증서 식별정보와 상기 추정된 인증정보를 포함하는 인증 요청 정보를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계; 상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 인증정보를 상기 사용자의 상기 인증 요청을 검증하는 단계; 상기 제1 피어에서 상기 검증된 결과에 해당하는 인증완료 결과를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계; 및 상기 제2 피어에서 상기 인증완료 결과가 상기 블록체인에 저장됨을 감지하면, 상기 사용자에게 인증 여부를 송신하는 단계를 포함한다.
이때, 상기 제1 피어에서 상기 사용자의 인증서 발급 요청에 따라 상기 인증서 식별정보, 상기 인증정보 및 상기 인증서를 생성하는 단계는, 상기 제1 피어에서 상기 사용자로부터 상기 사용자의 공개키와 상기 사용자가 생성한 임의의 난수값인 제1 난수를 포함하는 상기 사용자의 인증서 발급 요청을 수신하는 단계; 상기 제1 피어에서 상기 인증서를 식별할 수 있는 상기 인증서 식별정보를 생성하는 단계; 상기 제1 피어에서 상기 인증서 식별정보와 상기 제1 난수를 이용해서 인증정보에 해당하는 제1 인증정보를 생성하는 단계; 상기 제1 피어에서 임의의 난수값인 제2 난수를 생성하는 단계; 상기 제1 피어에서 상기 제1 인증정보와 상기 제2 난수를 이용해서 인증정보에 해당하는 제2 인증정보를 생성하는 단계; 상기 제1 피어에서 상기 제2 난수를 암호화하는 단계; 및 상기 제1 피어에서 상기 사용자의 공개키와 상기 인증서 식별정보를 이용해서 상기 인증서를 생성하는 단계를 포함할 수 있다.
이때, 상기 인증정보를 등록하는 단계는, 상기 제2 인증정보, 상기 인증서 식별정보 및 상기 암호화된 제2 난수를 상기 블록체인에 저장하는 단계를 포함할 수 있다.
이때, 상기 제2 피어에서 상기 인증정보를 추정하는 단계는, 상기 사용자로부터 수신한 상기 인증 요청에서 추출하는 상기 인증서 식별정보와 상기 제1 난수를 이용해서 추정된 제1 인증정보를 생성하는 단계를 포함하고, 상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 인증정보를 상기 사용자의 상기 인증 요청을 검증하는 단계는, 상기 제1 피어에서 상기 블록체인에 상기 인증서 식별정보와 함께 저장된 상기 암호화된 제2 난수를 확인하는 단계; 상기 제1 피어에서 상기 암호화된 제2 난수를 복호화하는 단계; 상기 제1 피어에서 상기 추정된 제1 인증정보와 복호화를 통해 획득한 상기 제2 난수를 이용해서 제2 인증정보를 계산하여 추정된 제2 인증정보를 생성하는 단계; 및 상기 제1 피어에서 상기 블록체인에 상기 인증서 식별정보와 함께 저장된 상기 제2 인증정보와 상기 추정된 제2 인증정보를 비교해서 검증하는 단계를 포함할 수 있다.
이때, 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법은, 상기 제1 피어 또는 제2 피어는 블록 동기화 이벤트의 발생을 감지하면, 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하는 단계; 및 상기 블록 동기화 이벤트의 발생을 감지한 피어에서 해당 피어에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신하는 동기화 단계를 더 포함할 수 있다.
본 발명의 다른 실시 예에 따른 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법은, 제1 피어에서 사용자로부터 아이디와 패스워드를 포함하는 인증 등록 요청을 수신하는 단계; 상기 제1 피어에서 상기 아이디와와 상기 패스워드를 이용해서 인증정보에 해당하는 제1 인증정보를 생성하는 단계; 상기 제1 피어에서 임의의 난수값인 난수를 생성하는 단계; 상기 제1 피어에서 상기 제1 인증정보와 상기 난수를 이용해서 인증정보에 해당하는 제2 인증정보를 생성하는 단계; 상기 제1 피어에서 상기 난수를 암호화하는 단계; 상기 제1 피어에서 블록체인 네트워크를 통해서 상기 사용자의 아이디, 상기 제2 인증정보 및 상기 암호화된 난수의 인증정보를 블록체인에 저장하는 단계; 제2 피어에서 상기 사용자로부터 인증 요청을 수신하면, 상기 인증 요청에서 아이디와 패스워드를 추출하는 단계; 제2 피어에서 상기 추출된 아이디와 상기 추출된 패스워드를 이용해서 제1 인증정보를 추정하여 추정된 제1 인증정보를 생성하는 단계; 상기 제2 피어에서 상기 아이디와 상기 추정된 제1 인증정보를 포함하는 인증 요청 정보를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계; 상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 상기 추정된 제1 인증정보를 이용해서 상기 사용자의 상기 인증 요청을 검증하는 단계; 상기 제1 피어에서 상기 검증된 결과에 해당하는 인증완료 결과를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계; 및 상기 제2 피어에서 상기 인증완료 결과가 상기 블록체인에 저장됨을 감지하면, 상기 사용자에게 인증 여부를 송신하는 단계를 포함한다.
이때, 상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 상기 추정된 제1 인증정보를 이용해서 상기 사용자의 상기 인증 요청을 검증하는 단계는, 상기 제1 피어에서 상기 블록체인에 상기 아이디와 함께 저장된 상기 암호화된 난수를 확인하는 단계; 상기 제1 피어에서 상기 암호화된 난수를 복호화하는 단계; 상기 제1 피어에서 상기 추정된 제1 인증정보와 복호화를 통해 획득한 상기 난수를 이용해서 제2 인증정보를 계산하여 추정된 제2 인증정보를 생성하는 단계; 및 상기 제1 피어에서 상기 블록체인에 상기 아이디와 함께 저장된 상기 제2 인증정보와 상기 추정된 제2 인증정보를 비교해서 검증하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 블록체인 시스템의 피어에서 블록을 동기화하는 방법은, 블록 동기화 이벤트가 발생하면 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하는 단계; 및 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신하는 동기화 단계를 포함한다.
이때, 상기 동기화 단계는, 상기 피어 리스트에 포함된 피어들을 순차적으로 순회하면서 블록을 요청할 피어를 선택하는 제1 단계; 상기 선택된 피어로 수신되지 않은 블록 중에서 마지막 높이에 해당하는 블록을 요청하는 제2 단계; 상기 요청한 블록이 수신되었는지 확인하는 제3 단계; 상기 제3 단계의 확인결과 상기 요청한 블록이 수신되었으면, 상기 블록체인의 부족한 블록이 모두 수신되었는지 확인하는 제4 단계; 및 상기 제4 단계의 확인결과 상기 블록체인의 부족한 블록을 모두 수신하지 못하였으면, 상기 제1 단계로 돌아가는 단계를 포함할 수 있다.
이때, 상기 동기화 단계는, 상기 제3 단계의 확인결과 상기 요청한 블록이 수신되지 않으면, 상기 선택된 피어를 비정상 피어(abnormal peer)로 분류하고, 상기 피어 리스트에서 제외하고 상기 제1 단계로 돌아가는 단계를 포함할 수 있다.
이때, 블록체인 시스템의 피어에서 블록을 동기화하는 방법은, 상기 비정상 피어로 분류된 피어 각각으로 동기화가 필요함을 알리는 보고 메시지를 송부하는 단계를 더 포함할 수 있다.
이때, 상기 제4 단계에서 상기 블록체인의 부족한 블록이 모두 수신되었는지의 확인은, 상기 수신된 블록이 상기 피어에 저장된 블록의 다음 순번의 블록이면, 상기 블록체인의 부족한 블록을 모두 수신하였다고 판단할 수 있다.
이때, 상기 블록 동기화 이벤트는, 상기 피어가 처음 시작할 때 발생할 수 있다.
이때, 상기 블록 동기화 이벤트는, 수신한 블록이 상기 피어에 저장된 마지막 블록의 다음 순서의 블록이 아닌 경우에 발생할 수 있다.
이때, 상기 블록 동기화 이벤트는, 기설정된 시간간격으로 상기 블록 생성기로 상기 현재 블록 높이를 요청하여 수신하고, 상기 현재 블록 높이와 상기 피어에 저장된 블록체인의 블록 높이를 비교해서 같지 않은 경우에 발생할 수 있다.
이때, 상기 블록 동기화 이벤트는, 블록체인 네트워크에 포함된 다른 피어로부터 비정상 피어임을 알리는 보고 메시지를 수신하는 경우에 발생할 수 있다.
본 발명의 또 다른 실시 예에 따른 블록체인 시스템은, 블록체인 네트워크에 연결되어, 상기 블록체인 네트워크로부터 트랜잭션들을 수신하고, 상기 수신한 트랜잭션들을 포함하는 블록체인을 생성하고 배포하고 상기 블록체인 네트워크에 포함된 피어의 요청에 따라 현재 블록 높이(height)를 제공하는 블록 생성기; 및 트랜잭션이 생성되면 상기 블록체인 네트워크를 통해 상기 블록 생성기로 송신하고, 상기 블록 생성기로부터 생성된 블록을 수신하고, 블록 동기화 이벤트가 발생하면 상기 블록 생성기로 상기 현재 블록 높이를 요청하여 수신하고, 피어에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 다른 피어(peer)들을 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화 하는 피어를 포함한다.
이때, 상기 피어는, 상기 요청한 블록이 수신되지 않으면, 상기 요청한 블록을 요청했던 피어를 비정상 피어(abnormal peer)로 분류하고, 상기 비정상 피어로 분류된 피어로 동기화가 완료될 때까지 더 이상 블록을 요청하지 않도록 상기 피어 리스트에서 제외할 수 있다.
본 발명은 서로 다른 금융기관을 이용하는 사용자들이 서로 다른 인증방법을 이용하여 각 금융기관의 사이트에 로그인하여 금융 서비스를 받는 불편함을 해소하고, 블록체인 네트워크를 통하여 서로 다른 금융기관의 인증정보를 연계함으로써, 하나의 금융기관으로부터 사용자 인증을 받은 사용자가 이 인증정보를 이용하여 다른 금융기관으로부터도 금융 서비스를 받을 수 있도록 한다.
또한, 본 발명은 블록체인 시스템의 피어에서 블록 동기화 이벤트가 발생하면 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하고, 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 블록체인의 블록을 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화를 수행하기 때문에, 동기화를 위한 블록의 송신을 여러 피어로 분산하는 효과를 가진다.
도 1는 본 발명의 일 실시 예에 따른 서로 다른 피어의 인증정보를 연계해서 사용자를 인증할 수 있는 블록체인 시스템의 개략적인 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 인증서를 이용해서 사용자를 인증하는 과정을 도시한 흐름도이다.
도 3은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 인증서를 사용하지 않고 사용자를 인증하는 과정을 도시한 흐름도이다.
도 4는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 트랜잭션을 처리하는 방법을 도시한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록을 생성하는 방법을 도시한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 블록체인 시스템의 블록 생성기에서 생성하는 블록체인의 예를 도시한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 블록체인 시스템의 개략적인 구성을 도시한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 블록체인 시스템의 피어에서 블록을 동기화하는 과정을 도시한 흐름도이다.
도 9는 본 발명의 일 실시 예에 따른 블록체인 시스템의 피어에서 블록 동기화 이벤트가 발생하는 과정의 예를 도시한 흐름도이다.
도 10은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록 동기화를 하는 일 예를 도시한 도면이다.
도 11은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록 동기화를 하는 다른 예를 도시한 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시 예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 피어들 간의 블록을 동기화하는 블록체인 시스템 및 방법을 첨부된 도 1 내지 도 11을 참조하여 상세히 설명한다.
도 1는 본 발명의 일 실시 예에 따른 서로 다른 피어의 인증정보를 연계해서 사용자를 인증할 수 있는 블록체인 시스템의 개략적인 구성을 도시한 도면이다.
도 1을 참조하면, 사용자(110)는 피어들(121~125)중에서 제1 피어(121)로 사용자의 인증을 등록한 후에 제2 피어(122)로 인증을 요청하면, 제2 피어(122) 블록체인 네트워크(120)의 블록체인을 통해서 사용자를 인증해서 인증결과를 사용자(110)에게 송신할 수 있다.
이때, 피어들(121~125)에는 블록체인에 데이터를 저장하고, 블록체인에 저장된 데이터를 확인하고, 블록체인을 관리하기 위한 어플리케이션이 설치되어 본 발명의 사용자 인증과정 및 블록 동기화 과정을 수행할 수 있다.
블록체인 시스템에서 인증서를 생성해서 사용자를 인증하는 과정을 도 1의 구성을 기반으로 도 2를 통해서 보다 상세히 후술하고, 블록체인 시스템에서 아이디와 패스워드를 이용해서 사용자를 인증하는 과정을 도 1의 구성을 기반으로 도 3을 통해서 보다 상세히 후술한다.
도 2는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 인증서를 이용해서 사용자를 인증하는 과정을 도시한 흐름도이다.
도 2를 참조하면, 사용자(110)에서 공개키, 개인키 및 임의의 난수값인 제1 난수를 생성하고(210), 제1 피어(121)로 인증서 발급 요청을 송신한다(211). 이때, 인증서 발급 요청은 공개키와 제1 난수를 포함한다. 이때, 제1 난수의 보안을 위해서 사용자는 제1 난수를 별도의 암호화 방식으로 암호화해서 전달할 수도 있고, 또는 인증서 발급 요청을 암호화 통신을 통해 전달할 수도 있다.
그리고, 제1 피어(121)에서 사용자(110)로부터 사용자(110)의 공개키와 제1 난수를 포함하는 사용자(110)의 인증서 발급 요청을 수신하면(211), 인증서를 식별할 수 있는 인증서 식별정보를 생성한다(212). 이때, 인증서 식별정보는 사용자(110)를 식별할 수 있는 정보이다.
그리고, 제1 피어(121)에서 인증서 식별정보와 제1 난수를 이용해서 인증정보에 해당하는 제1 인증정보를 생성한다(213). 이때, 제1 피어(121)는 제1 난수와 인증서 식별정보를 연접(concatenate)한 값에 해시함수를 적용해서 제1 인증정보를 생성할 수 있다.
그리고, 제1 피어(121)에서 임의의 난수값인 제2 난수를 생성한다(214). 이때, 제1 피어(121)는 제2 난수 대신에 사용자(110)와 관련된 정보를 이용해서 임의로 만든 값을 이용할 수도 있다.
그리고, 제1 피어(121)에서 제1 인증정보와 제2 난수를 이용해서 인증정보에 해당하는 제2 인증정보를 생성한다(215). 이때, 제1 피어(121)는 제1 인증정보와 제2 난수를 연접(concatenate)한 값에 해시함수를 적용해서 제2 인증정보를 생성할 수 있다.
그리고, 제1 피어(121)에서 제2 난수를 암호화 한다(216). 이때, 제1 피어(121)는 제1 피어(121)에서만 복호화 할 수 있도록 제2 난수를 암호화를 한다.
그리고, 제1 피어(121)에서 사용자(110)의 공개키와 인증서 식별정보를 이용해서 인증서를 생성한다(217).
그리고, 제1 피어(121)에서 블록체인 네트워크를 통해서 인증서를 블록체인(200)에 저장한다(218). 이때, 피어들(121, 122)은 인증서에서 사용자(110)의 공개키와 인증서 식별정보를 확인할 수 있다.
그리고, 제1 피어(121)에서 블록체인 네트워크를 통해서 제2 인증정보, 인증서 식별정보 및 암호화된 제2 난수를 블록체인에 저장한다(219).
그리고, 제1 피어(121)에서 인증서를 사용자(110)에게 송신한다(220).
이후, 사용자(110)에서 제2 피어(122)로부터 인증을 받을 필요가 발생하는 경우, 사용자(110)는 제2 피어(122)로 인증요청을 송신한다(230). 이때, 인증요청에는 전자서명과 제1 난수가 포함될 수 있고, 전자서명은 인증서 또는 인증서 식별정보와 같이 인증서를 식별할 수 있는 정보를 포함할 수 있다.
제2 피어(122)에서 사용자(110)로부터 인증요청을 수신하면(230), 인증요청에서 인증서 식별정보를 추출한다(231).
그리고, 제2 피어(122)에서 사용자(110)로부터 수신한 인증요청에서 추출하는 인증서 식별정보와 제1 난수를 이용해서 추정된 제1 인증정보를 생성한다(232). 이때, 제2 피어(122)는 추출한 제1 난수와 추출한 인증서 식별정보를 연접(concatenate)한 값에 해시함수를 적용해서 추정된 제1 인증정보를 생성할 수 있다.
그리고, 제2 피어(122)에서 인증서 식별정보와 추정된 인증정보를 포함하는 인증 요청 정보를 블록체인 네트워크를 통해서 블록체인(200)에 저장한다(233).
그리고, 제1 피어(121)에서 사용자(110)에 대한 인증 요청 정보가 블록체인(200)에 저장됨을 감지하면(234), 블록체인(200)에 인증서 식별정보와 함께 저장된 암호화된 제2 난수를 확인하고, 암호화된 제2 난수를 복호화 한다(235).
그리고, 제1 피어(121)에서 추정된 제1 인증정보와 복호화를 통해 획득한 제2 난수를 이용해서 제2 인증정보를 계산하여 추정된 제2 인증정보를 생성한다(236). 이때, 제1 피어(121)는 추정된 제1 인증정보와 복호화를 통해 획득한 제2 난수를 연접(concatenate)한 값에 해시함수를 적용해서 추정된 제2 인증정보를 생성할 수 있다.
그리고, 제1 피어(121)에서 블록체인(200)에 인증서 식별정보와 함께 저장된 제2 인증정보와 추정된 제2 인증정보를 비교해서 인증 여부를 검증한다(237). 이때, 제1 피어(121)는 블록체인(200)에 저장된 제2 인증정보와 추정된 제2 인증정보가 동일하면 인증에 성공한 것(인증된 사용자)으로 판단하고, 블록체인(200)에 저장된 제2 인증정보와 추정된 제2 인증정보가 동일하지 않으면, 인증에 실패한 것(인증되지 않은 사용자)으로 판단할 수 있다.
그리고, 제1 피어(121)에서 검증된 결과에 해당하는 인증완료 결과를 블록체인 네트워크를 통해서 블록체인(200)에 저장한다(238).
제2 피어(122)에서 인증완료 결과가 블록체인(200)에 저장됨을 감지하면(239), 사용자(110)에게 인증 여부를 송신한다(240).
218, 219, 233, 238 단계에서 블록체인(200)에 저장한다는 것은 218, 219, 233, 238 단계에서 블록체인(200)에 저장할 데이터 각각을 하나의 트랜잭션으로 하여 블록체인(200)에 포함되는 블록으로 생성함을 나타내는 것이다. 이때, 블록체인(200)에 저장하기 위해서는 피어는 아래 도 4와 같이 블록체인에 포함되는 블록을 생성하는 블록 생성기(128)로 데이터를 송신할 수 있고, 블록 생성기(128)는 아래 도 5와 같은 방법으로 블록체인에 포함된 블록을 생성하여 블록체인에 저장할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 트랜잭션을 처리하는 방법을 도시한 도면이다.
도 4를 참조하면, 피어(121-125)는 블록체인에 저장될 데이터를 트랜잭션으로 생성하고, 생성된 트랜잭션을 블록 생성기(128)로 송신한다(410).
블록 생성기(128)는 수신하는 트랜잭션을 내부 큐(queue)에 저장한다(420).
도 5는 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록을 생성하는 방법을 도시한 도면이다.
도 5를 참조하면, 블록 생성기(128)는 기설정된 시간간격으로 블록을 생성하고(510), 블록의 페이로드에 저장한 트랜잭션들을 삽입한다(520).
그리고, 블록 생성기(128)는 블록을 피어들(121-126)에 전달하면서 검증을 요청한다(530).
피어들(121-125)들 각각은 수신한 블록이 정당한 블록인지 검증하고(540), 검증한 결과를 블록 생성기(128)로 송신한다(550).
블록 생성기(128)는 피어들로부터 수신한 검증결과 피어들이 기설정한 비율(예를 들어 51%) 이상 검증에 문제가 없다고 하는 경우 현재 블록을 블록체인에 추가하고, 아니면 송신한 블록을 삭제하라는 지시를 피어들로 송신한다(560).
피어(121-125)는 560단계의 지시에 따라 블록을 블록체인에 추가하거나 또는 삭제한다(570).
블록 생성기(128)는 아래 도 6의 예와 같은 형태로 블록을 생성할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 블록체인 시스템의 블록 생성기에서 생성하는 블록체인의 예를 도시한 도면이다.
도 6을 참조하면, 블록체인은 복수의 블록들(block 0, block 1, block 2)이 구성되며, 블록들 간의 선후 관계는 이전 블록 해시(previous block hash)로 판단할 수 있다.
각각의 블록은 헤더(header)와 페이로드(payload)를 포함하고, 헤더에는 이전 블록 해시가 삽입되고, 페이로드에는 트랜잭션들이 삽입된다.
이때, 이전 블록 해시는 이전 블록(previous block)을 입력값(input)으로 하고, 해시 함수를 적용하였을 때 나온 출력값(output)이다. 해시 함수로는, 비트코인에서는, SHA-2(x) 해시 함수가 사용된다. 또 다른 방법으로는, 이전 블록의 모든 값을 입력값으로 사용하지 않고, 이전 블록의 헤더만을 입력값으로 사용할 수도 있다.
하지만, 블록체인의 형태는 도 6의 형태로만 국한되지 않고, 보다 다양한 방법으로 진화하고 있다. 본원발명에서는 다양한 블록체인의 방법을 모두 적용 가능하다.
한편, 블록체인 네트워크에 포함된 제1 피어(121) 또는 제2 피어(122)는 블록 동기화 이벤트의 발생을 감지하면, 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하고, 블록 동기화 이벤트의 발생을 감지한 피어에서 해당 피어에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 블록체인의 블록을 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화를 수행 할 수도 있다. 동기화의 구체적인 방법은 이후 도 7에서 도 11을 참조하여 후술한다.
도 3은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 인증서를 사용하지 않고 사용자를 인증하는 과정을 도시한 흐름도이다.
도 3을 참조하면, 사용자(110)에서 아이디 및 패스워드를 생성하고(310), 제1 피어(121)로 인증 등록 요청을 송신한다(311). 이때, 인증 등록 요청은 아이디 및 패스워드를 포함한다. 이때, 패스워드의 보안을 위해서 사용자는 패스워드를 별도의 암호화 방식으로 암호화해서 전달하거나 해시함수를 적용하여 전달할 수도 있고, 또는 인증 등록 요청을 암호화 통신을 통해 전달할 수도 있다.
그리고, 제1 피어(121)에서 아이디와 패스워드를 이용해서 인증정보에 해당하는 제1 인증정보를 생성한다(313). 이때, 제1 피어(121)는 패스워드와 아이디를 연접(concatenate)한 값에 해시함수를 적용해서 제1 인증정보를 생성할 수 있다.
그리고, 제1 피어(121)에서 임의의 난수를 생성한다(314). 이때, 제1 피어(121)는 난수 대신에 사용자(110)와 관련된 정보를 이용해서 임의로 만든 값을 이용할 수도 있다.
그리고, 제1 피어(121)에서 제1 인증정보와 난수를 이용해서 인증정보에 해당하는 제2 인증정보를 생성한다(315). 이때, 제1 피어(121)는 제1 인증정보와 난수를 연접(concatenate)한 값에 해시함수를 적용해서 제2 인증정보를 생성할 수 있다.
그리고, 제1 피어(121)에서 난수를 암호화 한다(316). 이때, 제1 피어(121)는 제1 피어(121)에서만 복호화 할 수 있도록 난수를 암호화를 한다.
그리고, 제1 피어(121)에서 인증 절차에 필요한 인증 정보를 블록체인(300)에 저장한다(319). 이때, 인증 절차에 필요한 인증 정보에는 사용자(110)의 아이디, 제2 인증정보 및 암호화된 난수가 포함될 수 있다.
이후, 사용자(110)에서 제2 피어(122)로부터 인증을 받을 필요가 발생하는 경우, 사용자(110)는 제2 피어(122)로 인증요청을 송신한다(330). 이때, 인증 요청에는 아이디와 패스워드가 포함될 수 있다.
제2 피어(122)에서 사용자(110)로부터 인증요청을 수신하면(330), 인증요청에서 아이디를 추출한다(331).
그리고, 제2 피어(122)에서 사용자(110)로부터 수신한 인증요청에서 추출하는 아이디와 패스워드를 이용해서 추정된 제1 인증정보를 생성한다(332). 이때, 제2 피어(122)는 추출한 패스워드와 추출한 아이디를 연접(concatenate)한 값에 해시함수를 적용해서 추정된 제1 인증정보를 생성할 수 있다.
그리고, 제2 피어(122)에서 아이디와 추정된 인증정보를 포함하는 인증 요청 정보를 블록체인 네트워크를 통해서 블록체인(300)에 저장한다(333).
그리고, 제1 피어(121)에서 사용자(110)에 대한 인증 요청 정보가 블록체인(300)에 저장됨을 감지하면(334), 블록체인(300)에 아이디와 함께 저장된 암호화된 난수를 확인하고, 암호화된 난수를 복호화 한다(335).
그리고, 제1 피어(121)에서 추정된 제1 인증정보와 복호화를 통해 획득한 난수를 이용해서 제2 인증정보를 계산하여 추정된 제2 인증정보를 생성한다(336). 이때, 제1 피어(121)는 추정된 제1 인증정보와 복호화를 통해 획득한 난수를 연접(concatenate)한 값에 해시함수를 적용해서 추정된 제2 인증정보를 생성할 수 있다.
그리고, 제1 피어(121)에서 블록체인(300)에 아이디와 함께 저장된 제2 인증정보와 추정된 제2 인증정보를 비교해서 인증 여부를 검증한다(337). 이때, 제1 피어(121)는 블록체인(300)에 저장된 제2 인증정보와 추정된 제2 인증정보가 동일하면 인증에 성공한 것(인증된 사용자)으로 판단하고, 블록체인(300)에 저장된 제2 인증정보와 추정된 제2 인증정보가 동일하지 않으면, 인증에 실패한 것(인증되지 않은 사용자)으로 판단할 수 있다.
그리고, 제1 피어(121)에서 검증된 결과에 해당하는 인증완료 결과를 블록체인 네트워크를 통해서 블록체인(300)에 저장한다(338).
제2 피어(122)에서 인증완료 결과가 블록체인(300)에 저장됨을 감지하면(339), 사용자(110)에게 인증 여부를 송신한다(340).
319, 333, 338 단계에서 블록체인(300)에 저장한다는 것은 319, 333, 338 단계에서 블록체인(300)에 저장할 데이터 각각을 하나의 트랜잭션으로 하여 블록체인(300)에 포함되는 블록으로 생성함을 나타내는 것이다. 이때, 블록체인(300)에 저장하기 위해서는 피어는 상술한 도 4와 같이 블록체인에 포함되는 블록을 생성하는 블록 생성기(128)로 데이터를 송신할 수 있고, 블록 생성기(128)는 상술한 도 5와 같은 방법으로 블록체인에 포함된 블록을 생성하여 블록체인에 저장할 수 있다.
한편, 블록체인 네트워크에 포함된 제1 피어(121) 또는 제2 피어(122)는 블록 동기화 이벤트의 발생을 감지하면, 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하고, 블록 동기화 이벤트의 발생을 감지한 피어에서 해당 피어에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 블록체인의 블록을 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화를 수행 할 수도 있다. 동기화의 구체적인 방법은 이후 도 7에서 도 11을 참조하여 후술한다.
도 7은 본 발명의 일 실시 예에 따른 블록체인 시스템의 개략적인 구성을 도시한 도면이다.
도 7을 참조하면, 블록체인 시스템은 블록 생성기(716)와 다수의 피어(711 ~ 715)을 포함하는 블록체인 네트워크(710)와 무선국(720), 인증서버(730), 로그 수집기(740) 및 데이터베이스(750)를 포함하여 블록체인을 생성하고, 피어들 간의 블록을 동기화 할 수 있다.
무선국(RadioStation)(720)는 피어들을 그룹지어 생성하고, 그룹내의 피어들을 연결하여 블록체인 네트워크(710)를 형성하고, 피어들의 상태를 모니터링 할 수 있다. 이때, 피어는 자신이 속한 그룹의 이웃 피어들의 접속 정보를 얻기 위해서 무선국(720)에 접속할 수도 있고, 무선국(720)에서 방송(Broadcast)하는 정보를 통해 수신할 수도 있다.
인증서버(CA server)(730)는 피어 생성시, 혹은 신규 피어가 블록체인 네트워크에 참여시 제대로된 요청인지 검증한다.
로그 수집기(740)는 블록체인 시스템의 운영 중에 발생하는 로그를 수집하여 데이터베이스(750) 또는 파일시스템(미도시)에 저장할 수 있다.
피어(711 ~ 715)는 블록체인 네트워크(710)에 포함된 노드로 블록체인에 추가되는 트랜잭션(transaction)을 상술한 도 3과 같이 처리할 수 있고, 블록 생성기(716)로부터 블록을 수신하면, 저장하고 있는 블록체인에 수신한 블록을 추가할 수 있다.
블록 생성기(716)는 상술한 도 4와 같은 방법으로 블록을 생성하여 블록체인에 추가할 수 있다.
한편, 블록 생성기(716)는 하나의 장치에서 고정적으로 수행할 수도 있지만 블록체인 네트워크(710)에 포함된 피어들이 돌아가면서 수행할 수도 있다.
한편, 블록체인 네트워크(710)에 포함된 피어(711 ~ 715)들 중에서 임의의 피어(712)에서 다음과 같이 동기화를 수행할 수 있다.
피어(712)는 블록 동기화 이벤트가 발생하면 블록 생성기(716)로 현재 블록 높이를 요청하여 수신하고, 피어(712)에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)(피어(712~715)에 해당)를 포함된 다른 피어(peer)들을 순차적으로 순회하면서 블록체인의 블록을 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화한다. 피어(712)의 동기화는 도 7을 참조하여 보다 상세히 후술한다.
이때, 피어(712)는 동기화를 위해 요청하여 수신된 블록이 피어(712)에 저장된 블록의 다음 순번의 블록이면, 블록체인의 부족한 블록을 모두 수신하였다고 판단할 수 있다.
피어(712)는 동기화를 위해 요청한 블록이 수신되지 않으면, 요청한 블록을 요청했던 피어를 비정상 피어(abnormal peer)로 분류하고, 비정상 피어로 분류된 피어로 동기화가 완료될 때까지 더 이상 블록을 요청하지 않도록 피어 리스트에서 제외할 수 있다.
비정상 피어는 현 동기화가 완료될 때까지만 유지하고, 동기화가 완료되면 피어 리스트를 원래대로 초기화 할 수도 있다. 이때, 분류된 비정상 피어의 유지와 피어 리스트의 초기화는 동기화가 완료를 기준으로 초기화할 수도 있지만, 기설정된 시간 동안 유지한 후에 초기화 할 수도 있고, 무선국(720)의 제어에 따라 초기화 할 수도 있다.
피어(712)는 비정상 피어로 분류된 피어 각각으로 동기화가 필요함을 알리는 보고 메시지를 송부하여 해당 피어에서 동기화를 수행할 수 있도록 할 수 있다.
한편, 블록 동기화 이벤트는 다음의 조건 중 하나일 때 발생할 수 있다.
조건 1) 피어가 처음 시작하는 경우.
조건 2)수신한 블록이 피어에 저장된 마지막 블록의 다음 순서의 블록이 아닌 경우.
조건 3) 기설정된 시간간격으로 블록 생성기(716)로 현재 블록 높이를 요청하여 수신하고, 현재 블록 높이와 피어에 저장된 블록체인의 블록 높이를 비교해서 같지 않은 경우.
조건 4)블록체인 네트워크에 포함된 다른 피어로부터 비정상 피어임을 알리는 보고 메시지를 수신하는 경우.
위의 조건들 중에서 조건 3)과 조건 4)의 경우는 블록 동기화 이벤트에서 제외 시킬 수도 있다.
피어(712)는 블록체인 네트워크(710)에 포함된 다른 피어(712 ~ 715)들로 블록을 요청하기 전에, 블록 생성기(716)로 최종 블록의 해시값을 요청하여 수신하고, 다른 피어(712 ~ 715)들로 블록을 수신하면 최종 블록의 해시값을 이용해서 수신한 블록을 검증할 수 있다.
이하, 상기와 같이 구성된 본 발명에 따른 블록체인 시스템의 피어에서 블록을 동기화하는 방법을 아래에서 도면을 참조하여 설명한다.
도 8은 본 발명의 일 실시 예에 따른 블록체인 시스템의 피어에서 블록을 동기화하는 과정을 도시한 흐름도이다.
도 8을 참조하면, 피어는 블록 동기화 이벤트의 발생을 감지하면(810), 블록 생성기(111)로 현재 블록 높이(height)를 요청하여 수신한다(820).
그리고, 피어는 피어 리스트에 포함된 피어들을 순차적으로 순회하면서 블록을 요청할 피어를 선택한다(830).
그리고, 피어는 선택된 피어로 수신되지 않은 블록 중에서 마지막 높이에 해당하는 블록을 요청한다(840).
그리고, 피어는 요청한 블록이 수신되었는지 확인한다(850).
850단계의 확인결과 요청한 블록이 수신되지 않으면, 피어는 선택된 피어를 비정상 피어(abnormal peer)로 분류하고, 피어 리스트에서 제외하고(860), 830단계로 돌아간다.
그리고 피어는 850단계의 확인결과 요청한 블록이 수신되었으면, 블록체인의 부족한 블록이 모두 수신되었는지 확인한다(870). 이때, 피어는 수신된 블록이 피어에 저장된 블록의 다음 순번의 블록이면, 블록체인의 부족한 블록을 모두 수신하였다고 판단할 수 있다. 예를 들어, 블록 생성기(111)의 현재 블록 높이가 50이고, 피어에 저장된 블록체인의 블록 높이가 40인 경우, 50번째의 블록부터 역순(50, 49, 48, 47, …, 42, 41)으로 수신하다가 수신한 블록이 41번째가 되면 피어에 저장된 블록체인의 블록 높이가 40이므로 다음 순번의 블록이 수신된 것이므로, 부족한 블록이 모두 수신되었음을 확인할 수 있다.
870단계의 확인결과 블록체인의 부족한 블록이 모두 수신되지 않았으면, 피어는 830단계로 돌아가서, 이후 일련의 과정을 수행한다.
870단계의 확인결과 블록체인의 부족한 블록을 모두 수신하였으면, 피어는 비정상 피어로 분류된 피어 각각으로 동기화가 필요함을 알리는 보고 메시지를 송부하고(880), 본 알고리즘을 종료한다. 이때, 보고 메시지를 송부하는 880단계는 도 8의 동기화 알고리즘에서 생략 할 수 있다.
블록 동기화가 870단계로 종료되는 경우 피어 별로 각각 동기화 이벤트를 감지하면 동기화를 수행하기 때문에 운영이 간단한 장점을 가진다.
블록 동기화가 870단계로 종료되는 경우 동기화가 필요한 피어에게 동기화가 필요함을 알려줌으로써 보다 빠르게 블록체인 시스템 전체가 동기화 될 수 있도록 하는 장점을 가질 수 있다. 또한, 870단계에서 더 나아가, 동기화를 수행하는 피어에서 비정상 피어로 각각이 부족한 블록을 제공하도록 할 수도 있다.
한편, 도 8에서 블록을 동기화 하는 과정을 도 10에서 도 11의 예를 통해 후술한다.
도 9는 본 발명의 일 실시 예에 따른 블록체인 시스템의 피어에서 블록 동기화 이벤트가 발생하는 과정의 예를 도시한 흐름도이다.
도 9를 참조하면, 피어는 해당 피어가 블록체인 네트워크에 새로 추가되어 시작된 피어인지 확인한다(910).
910단계의 확인결과 새로 시작된 피어이면, 피어는 새로 시작하여 블록체인의 모든 블록을 수신하여야 하므로 동기화가 필요하다고 판단할 수 있으므로, 블록 동기화 이벤트를 발생한다(950).
피어는 수신한 블록이 피어에 저장된 마지막 블록의 다음 순번에 해당하는 블록인지 확인한다(920).
920단계의 확인결과 수신한 블록이 피어에 저장된 마지막 블록의 다음 순번이 아니면, 피어는 동기화가 깨졌다고 판단할 수 있으므로 블록 동기화 이벤트를 발생한다(950).
피어는 비정상 피어 임을 알리는 보고 메시지를 수신하였는지 확인한다(930).
920단계의 확인결과 비정상 피어 임을 알리는 보고 메시지를 수신하면, 피어는 다른 피어에서 해당 피어가 동기화가 깨졌다고 알려줬으므로, 블록 동기화 이벤트를 발생한다(950).
피어는 기설정된 시간 간격으로 확인한 결과 동기화가 깨졌는지 확인한다(940). 피어는 기설정된 시간간격으로 블록 생성기로 상기 현재 블록 높이를 요청하여 수신하고, 현재 블록 높이와 피어에 저장된 블록체인의 블록 높이를 비교해서 같지 않은 경우에 동기화가 깨졌다고 판단할 수 있다.
920단계의 확인결과 동기화가 깨졌으면, 피어는 블록 동기화 이벤트를 발생한다(950).
한편, 도 9에서 930단계와 940단계는 생략이 가능하다.
도 10은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록 동기화를 하는 일 예를 도시한 도면이다.
도 10은 동기화를 수행하는 제1 피어(711)에서 요청하는 블록을 모두 수신하는 경우의 예를 도시한 도면이다.
도 10을 참조하면, 제1 피어(P1; peer 1)(711)는 블록 동기화 이벤트의 발생을 감지하면, 블록 생성기(BG; Block Generator)(716)로 현재 블록 높이를 요청한다(1010).
제1 피어(711)는 블록 생성기(716)로부터 현재 블록 높이가 50이라는 정보를 수신한다(1011).
제1 피어(711)의 블록 높이(BH; Block Height)가 45이기 때문에 제1 피어(711)는 46에서 50까지의 블록을 수신하여야 하며, 본 발명의 알고리즘에 따라서, 50번째 블록부터 역순으로 피어 리스트(peer list)(예를 들어 도 10의 피어 리스트는 P2, P3, P4, P5 가 될수 있다.)를 포함된 피어(peer)를 순차적으로 순회하면서 다음과 같은 방법으로 블록을 요청한다.
제1 피어(711)는 피어 리스트의 다음 순번인 제2 피어(712)로 50번 블록을 요청 한다(1012).
제1 피어(711)는 제2 피어(712)로부터 50번 블록을 수신하면(1013), 제3 피어(713)로 49번 블록을 요청 한다(1014).
제1 피어(711)는 제3 피어(713)로부터 49번 블록을 수신하면(1015), 제4 피어(714)로 48번 블록을 요청 한다(1016).
제1 피어(711)는 제4 피어(714)로부터 48번 블록을 수신하면(1017), 제5 피어(715)로 47번 블록을 요청 한다(1018).
제1 피어(711)는 제5 피어(715)로부터 47번 블록을 수신하면(1013), 피어 리스트에 포함된 모든 피어를 순회하였음으로 다시 처음에 위치한 피어인 제2 피어(712)로 46번 블록을 요청 한다(1014).
제1 피어(711)는 제1 피어(711)의 블록 높이인 45보다 하나 큰 블록인 46번 블록을 제2 피어(712)로부터 수신하면, 동기화를 종료한다.
도 11은 본 발명의 일 실시 예에 따른 블록체인 시스템에서 블록 동기화를 하는 다른 예를 도시한 도면이다.
도 11은 동기화를 수행하는 제1 피어(711)에서 요청하는 블록에 대한 응답이 없는 경우의 처리과정을 포함하는 예를 도시한 도면이다.
도 11을 참조하면, 제1 피어(P1; peer 1)(711)는 블록 동기화 이벤트의 발생을 감지하면, 블록 생성기(BG; Block Generator)(716)로 현재 블록 높이를 요청한다(1110).
제1 피어(711)는 블록 생성기(716)로부터 현재 블록 높이가 50이라는 정보를 수신한다(1111).
제1 피어(711)의 블록 높이(BH; Block Height)가 45이기 때문에 제1 피어(711)는 46에서 50까지의 블록을 수신하여야 하며, 본 발명의 알고리즘에 따라서, 50번째 블록부터 역순으로 피어 리스트(peer list)(예를 들어 도 11의 피어 리스트는 P2, P3, P4, P5 가 될수 있다.)를 포함된 피어(peer)를 순차적으로 순회하면서 다음과 같은 방법으로 블록을 요청한다.
제1 피어(711)는 피어 리스트의 다음 순번인 제2 피어(712)로 50번 블록을 요청 하고(1112), 제1 피어(711)는 제2 피어(712)로부터 50번 블록을 기설정된 시간동안 응답받지 못하면, 제2 피어(712)를 비정상 피어로 분류 하고, 피어 리스트에서 배제한다(113).
제1 피어(711)는 제3 피어(713)로 다시 50번 블록을 요청한다(1114).
제1 피어(711)는 제3 피어(713)로부터 50번 블록을 수신하면(1115), 제4 피어(714)로 49번 블록을 요청 한다(1116).
제1 피어(711)는 제4 피어(714)로부터 49번 블록을 수신하면(1117), 제5 피어(715)로 48번 블록을 요청 한다(1118).
제1 피어(711)는 제5 피어(714)로부터 48번 블록을 수신하면(1119), 피어 리스트에 포함된 모든 피어를 순회하였음으로 피어 리스트의 처음에 위치한 피어인 제3 피어(713)로 47번 블록을 요청 한다(1120). 이때, 제3 피어(713)가 피어 리스트의 처음에 위치한 것은 제2 피어(712)가 비정상 피어로 피어 리스트에서 배제되었기 때문이다.
제1 피어(711)는 제3 피어(713)로부터 47번 블록을 수신하면(1121), 제4 피어(714)로 46번 블록을 요청 한다(1122).
제1 피어(711)는 제1 피어(711)의 블록 높이인 45보다 하나 큰 블록인 46번 블록을 제4 피어(714)로부터 수신하면, 동기화를 종료한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 실시 예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시 예들이 비록 한정된 실시 예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시 예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
110; 사용자
120; 블록체인 네트워크
121 ~ 125; 피어
128; 블록 생성기

Claims (18)

  1. 제1 피어에서 사용자의 인증서 발급 요청에 따라 인증서 식별정보, 인증정보 및 인증서를 생성하는 단계;
    상기 제1 피어에서 블록체인 네트워크를 통해서 상기 인증서를 블록체인에 저장하는 단계;
    상기 제1 피어에서 상기 블록체인 네트워크를 통해서 상기 인증정보를 상기 블록체인에 저장하여 상기 인증정보를 등록하는 단계;
    상기 제1 피어에서 상기 인증서를 상기 사용자에게 송신하는 단계;
    제2 피어에서 상기 사용자로부터 인증 요청을 수신하면, 상기 인증 요청에서 상기 인증서 식별정보를 추출하는 단계;
    상기 제2 피어에서 상기 인증정보를 추정하는 단계;
    상기 제2 피어에서 상기 인증서 식별정보와 상기 추정된 인증정보를 포함하는 인증 요청 정보를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계;
    상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 인증정보를 이용해서 상기 사용자의 상기 인증 요청을 검증하는 단계;
    상기 제1 피어에서 상기 검증된 결과에 해당하는 인증완료 결과를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계; 및
    상기 제2 피어에서 상기 인증완료 결과가 상기 블록체인에 저장됨을 감지하면, 상기 사용자에게 인증 여부를 송신하는 단계
    를 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  2. 제1항에 있어서,
    상기 제1 피어에서 상기 사용자의 인증서 발급 요청에 따라 상기 인증서 식별정보, 상기 인증정보 및 상기 인증서를 생성하는 단계는,
    상기 제1 피어에서 상기 사용자로부터 상기 사용자의 공개키와 상기 사용자가 생성한 임의의 난수값인 제1 난수를 포함하는 상기 사용자의 인증서 발급 요청을 수신하는 단계;
    상기 제1 피어에서 상기 인증서를 식별할 수 있는 상기 인증서 식별정보를 생성하는 단계;
    상기 제1 피어에서 상기 인증서 식별정보와 상기 제1 난수를 이용해서 인증정보에 해당하는 제1 인증정보를 생성하는 단계;
    상기 제1 피어에서 임의의 난수값인 제2 난수를 생성하는 단계;
    상기 제1 피어에서 상기 제1 인증정보와 상기 제2 난수를 이용해서 인증정보에 해당하는 제2 인증정보를 생성하는 단계;
    상기 제1 피어에서 상기 제2 난수를 암호화하는 단계; 및
    상기 제1 피어에서 상기 사용자의 공개키와 상기 인증서 식별정보를 이용해서 상기 인증서를 생성하는 단계
    를 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  3. 제2항에 있어서,
    상기 인증정보를 등록하는 단계는,
    상기 제2 인증정보, 상기 인증서 식별정보 및 상기 암호화된 제2 난수를 상기 블록체인에 저장하는 단계
    를 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  4. 제2항에 있어서,
    상기 제2 피어에서 상기 인증정보를 추정하는 단계는,
    상기 사용자로부터 수신한 상기 인증 요청에서 추출하는 상기 인증서 식별정보와 상기 제1 난수를 이용해서 추정된 제1 인증정보를 생성하는 단계를 포함하고,
    상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 인증정보를 상기 사용자의 상기 인증 요청을 검증하는 단계는,
    상기 제1 피어에서 상기 블록체인에 상기 인증서 식별정보와 함께 저장된 상기 암호화된 제2 난수를 확인하는 단계;
    상기 제1 피어에서 상기 암호화된 제2 난수를 복호화하는 단계;
    상기 제1 피어에서 상기 추정된 제1 인증정보와 복호화를 통해 획득한 상기 제2 난수를 이용해서 제2 인증정보를 계산하여 추정된 제2 인증정보를 생성하는 단계; 및
    상기 제1 피어에서 상기 블록체인에 상기 인증서 식별정보와 함께 저장된 상기 제2 인증정보와 상기 추정된 제2 인증정보를 비교해서 검증하는 단계를 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  5. 제1항에 있어서,
    상기 제1 피어 또는 제2 피어는 블록 동기화 이벤트의 발생을 감지하면, 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하는 단계; 및
    상기 블록 동기화 이벤트의 발생을 감지한 피어에서 해당 피어에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신하는 동기화 단계
    를 더 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  6. 제1 피어에서 사용자로부터 아이디와 패스워드를 포함하는 인증 등록 요청을 수신하는 단계;
    상기 제1 피어에서 상기 아이디와와 상기 패스워드를 이용해서 인증정보에 해당하는 제1 인증정보를 생성하는 단계;
    상기 제1 피어에서 임의의 난수값인 난수를 생성하는 단계;
    상기 제1 피어에서 상기 제1 인증정보와 상기 난수를 이용해서 인증정보에 해당하는 제2 인증정보를 생성하는 단계;
    상기 제1 피어에서 상기 난수를 암호화하는 단계;
    상기 제1 피어에서 블록체인 네트워크를 통해서 상기 사용자의 아이디, 상기 제2 인증정보 및 상기 암호화된 난수의 인증정보를 블록체인에 저장하는 단계;
    제2 피어에서 상기 사용자로부터 인증 요청을 수신하면, 상기 인증 요청에서 아이디와 패스워드를 추출하는 단계;
    제2 피어에서 상기 추출된 아이디와 상기 추출된 패스워드를 이용해서 제1 인증정보를 추정하여 추정된 제1 인증정보를 생성하는 단계;
    상기 제2 피어에서 상기 아이디와 상기 추정된 제1 인증정보를 포함하는 인증 요청 정보를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계;
    상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 상기 추정된 제1 인증정보를 이용해서 상기 사용자의 상기 인증 요청을 검증하는 단계;
    상기 제1 피어에서 상기 검증된 결과에 해당하는 인증완료 결과를 상기 블록체인 네트워크를 통해서 상기 블록체인에 저장하는 단계; 및
    상기 제2 피어에서 상기 인증완료 결과가 상기 블록체인에 저장됨을 감지하면, 상기 사용자에게 인증 여부를 송신하는 단계
    를 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  7. 제6항에 있어서,
    상기 제1 피어에서 상기 사용자에 대한 상기 인증 요청 정보가 상기 블록체인에 저장됨을 감지하면, 상기 인증 요청 정보에 포함된 상기 추정된 제1 인증정보를 이용해서 상기 사용자의 상기 인증 요청을 검증하는 단계는,
    상기 제1 피어에서 상기 블록체인에 상기 아이디와 함께 저장된 상기 암호화된 난수를 확인하는 단계;
    상기 제1 피어에서 상기 암호화된 난수를 복호화하는 단계;
    상기 제1 피어에서 상기 추정된 제1 인증정보와 복호화를 통해 획득한 상기 난수를 이용해서 제2 인증정보를 계산하여 추정된 제2 인증정보를 생성하는 단계; 및
    상기 제1 피어에서 상기 블록체인에 상기 아이디와 함께 저장된 상기 제2 인증정보와 상기 추정된 제2 인증정보를 비교해서 검증하는 단계를 포함하는 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 방법.
  8. 블록 동기화 이벤트가 발생하면 블록 생성기로 현재 블록 높이(height)를 요청하여 수신하는 단계; 및
    블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 피어(peer)를 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신하는 동기화 단계
    를 포함하는 블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  9. 제8항에 있어서,
    상기 동기화 단계는,
    상기 피어 리스트에 포함된 피어들을 순차적으로 순회하면서 블록을 요청할 피어를 선택하는 제1 단계;
    상기 선택된 피어로 수신되지 않은 블록 중에서 마지막 높이에 해당하는 블록을 요청하는 제2 단계;
    상기 요청한 블록이 수신되었는지 확인하는 제3 단계;
    상기 제3 단계의 확인결과 상기 요청한 블록이 수신되었으면, 상기 블록체인의 부족한 블록이 모두 수신되었는지 확인하는 제4 단계; 및
    상기 제4 단계의 확인결과 상기 블록체인의 부족한 블록을 모두 수신하지 못하였으면, 상기 제1 단계로 돌아가는 단계
    를 포함하는 블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  10. 제9항에 있어서,
    상기 동기화 단계는,
    상기 제3 단계의 확인결과 상기 요청한 블록이 수신되지 않으면, 상기 선택된 피어를 비정상 피어(abnormal peer)로 분류하고, 상기 피어 리스트에서 제외하고 상기 제1 단계로 돌아가는 단계
    를 포함하는 블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  11. 제10항에 있어서,
    상기 비정상 피어로 분류된 피어 각각으로 동기화가 필요함을 알리는 보고 메시지를 송부하는 단계
    를 더 포함하는 블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  12. 제9항에 있어서,
    상기 제4 단계에서 상기 블록체인의 부족한 블록이 모두 수신되었는지의 확인은,
    상기 수신된 블록이 상기 피어에 저장된 블록의 다음 순번의 블록이면, 상기 블록체인의 부족한 블록을 모두 수신하였다고 판단하는
    블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  13. 제8항에 있어서,
    상기 블록 동기화 이벤트는,
    상기 피어가 처음 시작할 때 발생하는
    블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  14. 제8항에 있어서,
    상기 블록 동기화 이벤트는,
    수신한 블록이 상기 피어에 저장된 마지막 블록의 다음 순서의 블록이 아닌 경우에 발생하는
    블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  15. 제8항에 있어서,
    상기 블록 동기화 이벤트는,
    기설정된 시간간격으로 상기 블록 생성기로 상기 현재 블록 높이를 요청하여 수신하고, 상기 현재 블록 높이와 상기 피어에 저장된 블록체인의 블록 높이를 비교해서 같지 않은 경우에 발생하는
    블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  16. 제8항에 있어서,
    상기 블록 동기화 이벤트는,
    블록체인 네트워크에 포함된 다른 피어로부터 비정상 피어임을 알리는 보고 메시지를 수신하는 경우에 발생하는
    블록체인 시스템의 피어에서 블록을 동기화하는 방법.
  17. 블록체인 네트워크에 연결되어, 상기 블록체인 네트워크로부터 트랜잭션들을 수신하고, 상기 수신한 트랜잭션들을 포함하는 블록체인을 생성하고 배포하고 상기 블록체인 네트워크에 포함된 피어의 요청에 따라 현재 블록 높이(height)를 제공하는 블록 생성기; 및
    트랜잭션이 생성되면 상기 블록체인 네트워크를 통해 상기 블록 생성기로 송신하고, 상기 블록 생성기로부터 생성된 블록을 수신하고, 블록 동기화 이벤트가 발생하면 상기 블록 생성기로 상기 현재 블록 높이를 요청하여 수신하고, 피어에 저장된 블록체인의 부족한 블록이 모두 수신될 때까지 피어 리스트(peer list)에 포함된 다른 피어(peer)들을 순차적으로 순회하면서 상기 블록체인의 블록을 상기 현재 블록 높이의 역순으로 요청하여 수신함으로써 동기화 하는 피어
    를 포함하는 블록체인 시스템.
  18. 제17항에 있어서,
    상기 피어는,
    상기 요청한 블록이 수신되지 않으면, 상기 요청한 블록을 요청했던 피어를 비정상 피어(abnormal peer)로 분류하고, 상기 비정상 피어로 분류된 피어로 동기화가 완료될 때까지 더 이상 블록을 요청하지 않도록 상기 피어 리스트에서 제외하는
    블록체인 시스템.
KR1020170010413A 2017-01-23 2017-01-23 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법 KR101930825B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170010413A KR101930825B1 (ko) 2017-01-23 2017-01-23 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170010413A KR101930825B1 (ko) 2017-01-23 2017-01-23 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20180086679A true KR20180086679A (ko) 2018-08-01
KR101930825B1 KR101930825B1 (ko) 2018-12-19

Family

ID=63227703

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170010413A KR101930825B1 (ko) 2017-01-23 2017-01-23 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101930825B1 (ko)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109347803A (zh) * 2018-09-18 2019-02-15 百度在线网络技术(北京)有限公司 一种区块链的数据处理方法、装置、设备及介质
CN109361734A (zh) * 2018-09-18 2019-02-19 百度在线网络技术(北京)有限公司 一种区块链的数据处理方法、装置、设备及介质
KR101975471B1 (ko) * 2018-10-16 2019-08-28 (주)이지팜 웹방식 로그인을 통한 블록체인 이용방법
KR20200048246A (ko) * 2018-10-29 2020-05-08 에스케이텔레콤 주식회사 블록체인 기반 분산 원장 관리 방법
KR20200058890A (ko) 2018-11-20 2020-05-28 주식회사 피어나인 블록체인 운영 방법
KR20200064690A (ko) 2018-11-29 2020-06-08 주식회사 피어나인 블록체인 운영방법
CN111355797A (zh) * 2020-02-27 2020-06-30 平安壹钱包电子商务有限公司 数据调和更新方法、装置、计算机设备和存储介质
KR20200086082A (ko) 2019-01-08 2020-07-16 주식회사 피어나인 데이터베이스 운영 방법
KR20200086084A (ko) 2019-01-08 2020-07-16 주식회사 피어나인 블록체인 기반 건강검진 데이터베이스 운영방법
KR20200086083A (ko) 2019-01-08 2020-07-16 주식회사 피어나인 데이터베이스 차등적 운영방법
WO2020149561A1 (ko) * 2019-01-15 2020-07-23 강대준 블록체인을 이용한 무인 이동체 통신 제어 시스템 및 이를 이용한 무인 이동체의 통신 방법
CN111475575A (zh) * 2020-04-09 2020-07-31 腾讯科技(深圳)有限公司 基于区块链的数据同步方法、装置及计算机可读存储介质
CN112003701A (zh) * 2020-04-16 2020-11-27 成都质数斯达克科技有限公司 一种区块自检及同步方法及装置
KR20210027837A (ko) * 2019-09-03 2021-03-11 주식회사 엘지유플러스 개인정보 인증 서비스 제공 시스템 및 그의 개인정보 인증 서비스 제공 방법
KR20210042161A (ko) * 2019-07-15 2021-04-16 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 분산 시스템을 위한 데이터 동기화 방법 및 장치, 매체, 및 전자 디바이스
WO2021077962A1 (zh) * 2019-10-21 2021-04-29 深圳前海微众银行股份有限公司 一种区块链节点同步的方法及装置
KR20210067908A (ko) * 2019-11-29 2021-06-08 순천향대학교 산학협력단 블록 체인 노드의 블록 전파 방법
WO2021137397A1 (ko) * 2019-12-31 2021-07-08 주식회사 코인플러그 블록체인 네트워크 기반의 가상 공통 아이디 서비스 방법 및 이를 이용한 서비스 제공 서버
KR20210132526A (ko) * 2020-04-27 2021-11-04 주식회사 시큐어링크 계층 블록체인을 이용한 인증 및 정책 관리 방법
WO2022097836A1 (ko) * 2020-11-09 2022-05-12 계명대학교 산학협력단 이더리움 네트워크 상에 노드 영향력 모니터링 장치 및 노드 영향력 분석 방법
KR102406388B1 (ko) * 2021-06-03 2022-06-08 보노테크놀로지스 주식회사 블록 체인 거래를 위한 분산 쉐어링 알고리즘 기반 암호화 키 관리 방법 및 이를 처리하는 단말 장치
KR20220135422A (ko) 2021-03-30 2022-10-07 임종범 의료 데이터 관리 시스템 및 그 제어방법
TWI783265B (zh) * 2020-09-10 2022-11-11 天宿智能科技股份有限公司 基於區塊鏈的資料加密登錄與多方授權驗證系統及其方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI704794B (zh) * 2019-03-29 2020-09-11 區塊科技股份有限公司 基於區塊鏈的合約簽核與驗證系統及其實施方法
TWI698113B (zh) * 2019-10-09 2020-07-01 郭谷彰 電子裝置之認證方法及系統
KR20230002028A (ko) 2021-06-29 2023-01-05 유신재 사용자 콘텐츠의 생성을 지원하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체
KR102419853B1 (ko) * 2021-09-13 2022-07-12 주식회사 시티랩스 블록체인에 기반한 did 인증서를 이용한 허가형 블록체인 플랫폼 인증 방법 및 시스템

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101452124B1 (ko) * 2013-08-01 2014-10-16 덕성여자대학교 산학협력단 사물간 통신 네트워크에서 암호화 기반 기기 인증 및 세션키 생성 방법
KR101637854B1 (ko) * 2015-10-16 2016-07-08 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법 및 블록체인을 기반으로 하는 공인인증서 인증시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 인증방법

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109347803A (zh) * 2018-09-18 2019-02-15 百度在线网络技术(北京)有限公司 一种区块链的数据处理方法、装置、设备及介质
CN109361734A (zh) * 2018-09-18 2019-02-19 百度在线网络技术(北京)有限公司 一种区块链的数据处理方法、装置、设备及介质
CN109361734B (zh) * 2018-09-18 2021-04-20 百度在线网络技术(北京)有限公司 一种区块链的数据处理方法、装置、设备及介质
US11381385B2 (en) 2018-09-18 2022-07-05 Baidu Online Network Technology (Beijing) Co., Ltd. Data processing method and apparatus for blockchain, and storage medium
KR101975471B1 (ko) * 2018-10-16 2019-08-28 (주)이지팜 웹방식 로그인을 통한 블록체인 이용방법
KR20200048246A (ko) * 2018-10-29 2020-05-08 에스케이텔레콤 주식회사 블록체인 기반 분산 원장 관리 방법
KR20200058890A (ko) 2018-11-20 2020-05-28 주식회사 피어나인 블록체인 운영 방법
KR20200064690A (ko) 2018-11-29 2020-06-08 주식회사 피어나인 블록체인 운영방법
KR20200086082A (ko) 2019-01-08 2020-07-16 주식회사 피어나인 데이터베이스 운영 방법
KR20200086084A (ko) 2019-01-08 2020-07-16 주식회사 피어나인 블록체인 기반 건강검진 데이터베이스 운영방법
KR20200086083A (ko) 2019-01-08 2020-07-16 주식회사 피어나인 데이터베이스 차등적 운영방법
WO2020149561A1 (ko) * 2019-01-15 2020-07-23 강대준 블록체인을 이용한 무인 이동체 통신 제어 시스템 및 이를 이용한 무인 이동체의 통신 방법
KR20210042161A (ko) * 2019-07-15 2021-04-16 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 분산 시스템을 위한 데이터 동기화 방법 및 장치, 매체, 및 전자 디바이스
KR20210027837A (ko) * 2019-09-03 2021-03-11 주식회사 엘지유플러스 개인정보 인증 서비스 제공 시스템 및 그의 개인정보 인증 서비스 제공 방법
WO2021077962A1 (zh) * 2019-10-21 2021-04-29 深圳前海微众银行股份有限公司 一种区块链节点同步的方法及装置
KR20210067908A (ko) * 2019-11-29 2021-06-08 순천향대학교 산학협력단 블록 체인 노드의 블록 전파 방법
WO2021137397A1 (ko) * 2019-12-31 2021-07-08 주식회사 코인플러그 블록체인 네트워크 기반의 가상 공통 아이디 서비스 방법 및 이를 이용한 서비스 제공 서버
CN111355797B (zh) * 2020-02-27 2024-04-05 平安壹钱包电子商务有限公司 数据调和更新方法、装置、计算机设备和存储介质
CN111355797A (zh) * 2020-02-27 2020-06-30 平安壹钱包电子商务有限公司 数据调和更新方法、装置、计算机设备和存储介质
CN111475575A (zh) * 2020-04-09 2020-07-31 腾讯科技(深圳)有限公司 基于区块链的数据同步方法、装置及计算机可读存储介质
US11899689B2 (en) 2020-04-09 2024-02-13 Tencent Technology (Shenzhen) Company Limited Blockchain-based data synchronization method, apparatus, and computer-readable storage medium
CN112003701B (zh) * 2020-04-16 2021-03-19 成都质数斯达克科技有限公司 一种区块自检及同步方法及装置
CN112003701A (zh) * 2020-04-16 2020-11-27 成都质数斯达克科技有限公司 一种区块自检及同步方法及装置
KR20210132526A (ko) * 2020-04-27 2021-11-04 주식회사 시큐어링크 계층 블록체인을 이용한 인증 및 정책 관리 방법
TWI783265B (zh) * 2020-09-10 2022-11-11 天宿智能科技股份有限公司 基於區塊鏈的資料加密登錄與多方授權驗證系統及其方法
WO2022097836A1 (ko) * 2020-11-09 2022-05-12 계명대학교 산학협력단 이더리움 네트워크 상에 노드 영향력 모니터링 장치 및 노드 영향력 분석 방법
KR20220135422A (ko) 2021-03-30 2022-10-07 임종범 의료 데이터 관리 시스템 및 그 제어방법
KR102406388B1 (ko) * 2021-06-03 2022-06-08 보노테크놀로지스 주식회사 블록 체인 거래를 위한 분산 쉐어링 알고리즘 기반 암호화 키 관리 방법 및 이를 처리하는 단말 장치

Also Published As

Publication number Publication date
KR101930825B1 (ko) 2018-12-19

Similar Documents

Publication Publication Date Title
KR101930825B1 (ko) 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법
KR101975822B1 (ko) 프라이빗 블록체인 네트워크 시스템 및 경량화된 고성능 블록체인 기반 합의 방법
CN112218294B (zh) 基于5g的物联网设备的接入方法、系统及存储介质
KR101937220B1 (ko) 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법
CN110351133B (zh) 用于区块链系统中的主节点切换处理的方法及装置
CN109067801B (zh) 一种身份认证方法、身份认证装置及计算机可读介质
KR20180089668A (ko) 블록체인을 인증서 발급기관으로 이용해서 인증서를 관리하는 장치 및 방법
CN111383021B (zh) 基于区块链网络的节点管理方法、装置、设备及介质
WO2018126858A1 (zh) 基于区块链技术的鲁棒的atm网络系统及其信息处理方法
CN110288480B (zh) 一种区块链的私密交易方法及装置
CN104980477B (zh) 云存储环境下的数据访问控制方法和系统
CN109309565A (zh) 一种安全认证的方法及装置
CN110601830B (zh) 基于区块链的密钥管理方法、装置、设备及存储介质
WO2007086435A1 (ja) 端末装置、サーバ装置及びデジタルコンテンツ配信システム
KR20190054738A (ko) 비잔틴 장애를 극복 가능한 블록체인 생성 방법
CN111163109B (zh) 区块链去中心式节点防仿冒方法
CN111435913A (zh) 一种物联网终端的身份认证方法、装置和存储介质
CN111538784A (zh) 一种基于区块链的数字资产交易方法、装置及存储介质
CN109754226B (zh) 数据管理方法、设备和存储介质
KR101817152B1 (ko) 신뢰된 권한 정보 제공 방법, 신뢰된 권한 정보를 포함하는 사용자 크리덴셜 발급 방법 및 사용자 크리덴셜 획득 방법
CN109347643B (zh) 一种基于以太坊的用户中心系统安全的监管方法及装置
CN110177124A (zh) 基于区块链的身份认证方法及相关设备
CN111489143A (zh) 一种基于联盟侧链的可审计加密数字货币监管方法
CN114553444B (zh) 身份认证方法、装置及存储介质
CN101325483A (zh) 对称密钥更新方法、装置和对称加密方法与对称解密方法

Legal Events

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