KR102298716B1 - 통신 노드, 이의 동작 방법 및 협업 시스템 - Google Patents

통신 노드, 이의 동작 방법 및 협업 시스템 Download PDF

Info

Publication number
KR102298716B1
KR102298716B1 KR1020200005502A KR20200005502A KR102298716B1 KR 102298716 B1 KR102298716 B1 KR 102298716B1 KR 1020200005502 A KR1020200005502 A KR 1020200005502A KR 20200005502 A KR20200005502 A KR 20200005502A KR 102298716 B1 KR102298716 B1 KR 102298716B1
Authority
KR
South Korea
Prior art keywords
communication node
control information
data
value
node
Prior art date
Application number
KR1020200005502A
Other languages
English (en)
Other versions
KR20210092028A (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 KR1020200005502A priority Critical patent/KR102298716B1/ko
Priority to US17/149,865 priority patent/US11563575B2/en
Publication of KR20210092028A publication Critical patent/KR20210092028A/ko
Application granted granted Critical
Publication of KR102298716B1 publication Critical patent/KR102298716B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/18Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/3215Cryptographic 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 plurality of channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic 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 challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp

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)
  • Power Engineering (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은, 통신 노드, 이의 동작 방법 및 협업 시스템에 관한 것이다. 본 발명의 일 실시예에서는, 제 2 통신 노드에 전송할 데이터를 확인하는 단계; 상기 데이터의 인증 및 무결성을 검증하기 위한 제 1 제어 정보를 생성하는 단계; 상기 제 2 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드들과 제 1 제어 정보를 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하는 제 1 통신 노드(송신 노드)의 동작 방법이 제공될 수 있다.

Description

통신 노드, 이의 동작 방법 및 협업 시스템{Communication node, method of operating thereof and collaborative system}
본 발명은 네트워크 기술에 관한 것으로서, 더욱 상세하게는, 신뢰 기반의 통신 노드, 이의 동작 방법 및 협업 시스템에 관한 것이다.
생산성 향상을 위해 기업 내 또는 오픈 이노베이션을 위해 기업들 사이, 연구 그룹들 사이, 또는 개인들 사이와 같은 다양한 주체들 사이에서 협업의 중요성이 강조되고 있다. 그에 따라, 구성원들이 팀 단위 또는 프로젝트 단위로 업무를 빠르고 효율적으로 처리할 수 있도록 정보처리 및 통신 기술을 이용한 다양한 협업 도구가 개발 및 이용되고 있다. 상기 협업 도구는 이메일과 메신저라는 회사내 양대 커뮤니케이션 도구를 중심으로 온라인 문서작성(예: 오피스)이나 일정관리(예: 캘린더) 같이 협업 효율을 향상시켜주는 도구도 함께 제공하고 있어 구성원들의 협업은 더욱 빠르고 효율적으로 처리될 수 있다.
다양한 협업 도구로서의 메신저 플랫폼은 서비스 제공 방식이 클라이언트/서버 모델에 기초한다. 이들 메신저 플랫폼은, 온프레미스(On-premise) 형과 SaaS/Cloud 형으로 구분될 수 있다. 상기 온프레미스 형 협업 도구 서비스는 특정 조직 내 활용만 가능하여, 외부 구성원의 서비스 활용 여부에 있어서 마찰이 존재할 수 있고, 외부 조직과 커뮤니케이션을 하기 위한 구축 비용이 크며, 연결 복잡도가 증가할 수 있고, 조직 구성원에 대한 마스터 테이블 보관 위치를 결정하기 어려운 한계를 갖는다. 상기 SaaS/Cloud 형은 기존 온프레미스 방식보다 도입 비용이 상대적으로 저렴하고 타 조직과도 연결이 가능하다는 장점을 갖지만, 기업 데이터가 서비스 운영자의 클라우드 인프라에 저장되거나, 상기 서비스 운영자의 클라우드 인프라를 경유 후 상대 측에 전달되므로, 기업 데이터 또는 고객 데이터의 기밀성 유지가 필요한 전문 회사에서 활용하기 어려울 수 있다.
전술한 클라이언트/서버 모델에 기초한 협업 도구의 서비스의 문제점들은 기업 서버들 간 P2P(peer to peer) 네트워킹 같은 직접 접속을 통해 개선시킬 수 있다. 이러한 P2P 네트워크 구성 노드(예: 서버)는 불특정 다수 수혜자들(예: 사용자 단말들)의 능동적 참여로 네트워크가 형성되어 유지 및 운영되기 있기 때문에, 이러한 네트워크 형성을 유지하기 위해 상기 P2P 네트워크 구성 노드에 대한 사전 인증, 식별(예컨대, 소유자의 식별), SLA(Service Level Agreement) 같은 조건을 부여하지 않는다. 그에 따라, 상기 P2P 네트워킹을 통해 기업형(enterprise) 레벨의 데이터를 처리하는 경우, 데이터 신뢰성, 서비스 안정성 그리고 가용성이 보장되기 어려운 문제점이 있다.
상기 데이터 신뢰성, 서비스 안정성 및 가용성을 강화하기 위한 목적으로, 퍼블릭 블록체인 기술이 도입되고 있다. 상기 퍼블릭 블록체인에서는 블록에 기록된 원장 데이터 기반으로 가상 자산에 대한 사용자 간 직접 거래가 가능해져서 데이터 신뢰성이 강화될 수 있고, 채굴 보상 같은 P2P 네트워크 참여 노드들이 경제적 동기를 가지므로, 서비스 안정성과 가용성을 개선시킬 수 있다. 그러나, 기업 비즈니스 보안 관점에서 기업의 데이터가 기업 자신이 아닌 타 조직(노드 운영자나 불특정 개인)의 서버를 경유하거나 이에 보관된다는 점은 기업 입장에서 컴플라이언스 위배 또는 기업 기밀 유출의 위험이 있어 상기 퍼블릭 블록체인 기술 또한 상기 협업 도구에 활용하는데 제한적일 수 있다.
또한, 종래의 기업형 블록체인의 초당 처리 속도는 확정 지연 1 초 기준 수천 TPS(Transactions Per Second)이므로 보다 다양한 비즈니스에 활용하기에 적합하여 최근 금융, 물류 등 분야에서 도입되고 있다. 그러나, 수백 바이트 수준의 데이터를 수천 TPS로 처리하는 경우, 정보 처리량은 기업 간 실시간 정보 교환에 있어서 한계를 가질 수 있다. 예를 들어, 기업형 블록체인의 종류인 Hyperledger Fabric 구조는 약 200 Bytes의 트랜잭션을 약 1,000 TPS로 처리하는 경우 200 KB/s 처리 속도를 가지므로, 기업 간 커뮤니케이션에 활용하는데 제약이 따른다. 또한, 처리 가능한 데이터 용량의 제약으로 인해서, 정보 전달의 적시성에 대하여도 한계를 갖는다.
더하여, 상기 기업형 블록체인 기술 중 Execute-Order-Validate 아키텍처에 기반하여 원장(ledger)을 갱신하는 경우, Order 단계에서 일부 Onchain 데이터가 불필요한 노드에 전파될 수 있다. 원본 데이터를 암호화하는 방법을 적용할 수 있으나 암호화되더라도 데이터 교환 패턴(분량, 타이밍, 주체들 간 관계 등)을 관찰할 수 있기 때문에, 이는 기업 중요 데이터를 다룰 때 보안 문제를 야기할 수 있다. 또한, 오프체인(Offchain) 데이터의 경우, 암호화된 원본 데이터가 아닌 해시 코드를 기록하므로 데이터 내용에 대한 노출 위험은 없으나, 해시 코드 교환 패턴이 노출되므로 보안 레벨이 높은 기업들의 관점에서는 문제가 될 수 있다.
본 발명이 이루고자 하는 기술적 과제는, 다양한 주체간 협업에 응용 가능하도록, 데이터 신뢰성을 유지하며, 처리 속도 및 용량 및 데이터의 적시성 한계, 그리고 데이터 및 데이터 교환 패턴의 노출을 최소화하여 보안을 강화한 통신 노드를 제공하는 것이다.
또한, 본 발명이 이루고자 하는 다른 기술적 과제는, 전술한 이점을 갖는 통신 노드의 동작 방법을 제공하는 것이다.
또한, 본 발명이 이루고자 하는 또 다른 기술적 과제는, 전술한 이점을 갖는 협업 시스템을 제공하는 것이다.
본 발명의 일 실시예에 따르면, 제 2 통신 노드에 전송할 데이터를 확인하는 단계; 상기 데이터의 인증 및 무결성을 검증하기 위한 제 1 제어 정보를 생성하는 단계; 상기 제 2 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드들과 제 1 제어 정보를 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하는 제 1 통신 노드의 동작 방법이 제공될 수 있다.
일 실시예에서, 상기 제 1 제어 정보는 상기 제 1 통신 노드의 공개 키; 상기 제 1 통신 노드의 개인 키로 암호화된 제 1 넌스(nonce) 값; 상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값; 및 상기 데이터 또는 상기 데이터의 세그먼트, 상기 제 1 넌스 값 및 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보에 포함된 제 2 넌스 값을 입력 값으로 하는 해시 함수의 출력 값 중 적어도 하나를 포함할 수 있다. 상기 전송할 데이터가 없는 경우, 상기 해시 함수의 상기 데이터 또는 상기 데이터의 세그먼트는 널(null) 값으로 설정될 수 있다.
일 실시예에서, 상기 참여 통신 노드들과 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보를 공유하는 단계가 더 포함될 수 있다. 상기 제 2 제어 정보를 공유하는 단계는 상기 참여 통신 노드들 중 서비스 제공자의 제 3 통신 노드로부터 상기 제 2 제어 정보를 수신하는 단계를 포함하거나, 상기 제 2 제어 정보를 생성하여 상기 제 2 제어 정보를 상기 참여 통신 노드들에 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제 2 제어 정보는 상기 씨드 값을 제공한 상기 참여 통신 노드들 중 어느 하나의 개인 키로 암호화된 씨드 값; 상기 씨드 값을 제공한 상기 참여 통신 노드들 중 어느 하나의 통신 노드의 공개 키; 상기 씨드 값을 이용하여 생성한 제 2 넌스(nonce) 값; 및 상기 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값 중 적어도 하나를 포함할 수 있다. 상기 제 2 제어 정보는 상기 서비스 제공자의 공개 키; 상기 서비스 제공자의 공개 키로 암호화된 상기 제 2 넌스 값을 더 포함할 수 있다.
일 실시예에서, 상기 메시지는 상기 제 1 통신 노드의 공개 키; 상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값; 상기 제 1 제어 정보의 엔트로피(entropy)에 대응하는 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값; 서비스 제공자에 의해 제공되는 상기 제 2 제어 정보인지에 대한 여부를 지시하는 값; 상기 데이터의 세그먼트의 전송에 대한 시퀀스 시작 번호 값; 상기 데이터의 세그먼트의 전송에 대한 시퀀스 종료 번호 값; 상기 데이터의 세그먼트의 시퀀스 번호; 상기 제 1 통신 노드에서 생성된 제 1 넌스 값 또는 상기 제 2 제어 정보의 제 2 넌스(nonce) 값; 및 상기 데이터 또는 상기 데이터의 세그먼트 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 제 1 통신 노드에 전송할 데이터의 크기가 임계치 이상일 경우, 상기 데이터는 복수의 세그먼트로 분할하는 단계가 더 포함될 수 있다. 상기 데이터의 전송 유무에 관계없이, 상기 제 1 제어 정보는 제 1 채널을 통해 상기 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드로 주기적 또는 특정 전송 패턴으로 전송될 수 있다.
본 발명의 다른 실시예에 따르면, 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유하는 단계; 상기 적어도 하나 이상의 참여 통신 노드 중 어느 하나의 통신 노드로부터, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 상기 제 1 통신 노드로부터 수신하는 단계; 상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증하는 단계를 포함하는 제 2 통신 노드의 동작 방법이 제공될 수 있다.
일 실시예에서, 상기 제 1 제어 정보 및 상기 메시지를 이용하여, 상기 제 1 제어 정보를 발행한 주체에 대하여 인증을 수행하는 단계, 또는 상기 제 1 제어 정보 및 상기 메시지를 이용하여, 상기 메시지를 송신한 제 1 통신 노드에 대하여 인증을 수행하는 단계가 더 포함될 수 있다.
본 발명의 또 다른 실시예에서, 제 1 통신 노드 또는 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하는 단계; 상기 수신한 씨드(seed) 값을 이용하여, 데이터 인증과 무결성을 검증하기 위한 제 2 제어 정보를 생성하는 단계; 및 상기 제 1 통신 노드 및 상기 제 2 통신 노드를 포함하는 복수의 참여 통신 노드들과 제 2 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유하는 단계를 포함하는 서비스 제공자의 제 3 통신 노드의 동작 방법이 제공될 수 있다.
일 실시예에서, 상기 제 1 통신 노드 또는 상기 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하는 단계 대신, 난수 생성을 위한 씨드(seed) 값을 생성하는 단계가 더 포함될 수 있다.
일 실시예에서, 상기 제 2 제어 정보를 생성하는 단계는 상기 씨드에 기반하여 넌스(nonce)를 생성하는 단계; 상기 생성된 넌스가 이전에 사용된 적이 있는지를 확인하는 단계를 포함하며, 상기 씨드를 암호화하는 단계 또는 상기 생성된 넌스가 이전에 사용된 적이 있을 시 씨드를 재생성하는 단계가 더 포함될 수 있다.
본 발명의 또 다른 실시예에 따르면, 메모리; 및 적어도 하나의 프로세서를 포함하며, 상기 프로세서는, 제 2 통신 노드에 전송할 데이터를 확인하고, 상기 데이터의 인증 및 무결성을 검증하기 위한 제 1 제어 정보를 생성하는 하고, 상기 제 2 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드들과 제 1 제어 정보를 블록체인 네트워크에 형성된 채널을 통해 공유하고, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 전송하는 제 1 통신 노드가 제공될 수 있다. 상기 프로세서는, 상기 참여 통신 노드들과 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보를 공유할 수 있다. 상기 프로세서는, 상기 참여 통신 노드들 중 서비스 제공자의 제 3 통신 노드로부터 상기 제 2 제어 정보를 수신하거나, 상기 제 2 제어 정보를 생성하여 상기 제 2 제어 정보를 상기 참여 통신 노드들에 전송할 수 있다. 상기 프로세서는, 상기 제 1 통신 노드에 전송할 데이터의 크기가 임계치 이상일 경우, 상기 데이터는 복수의 세그먼트로 분할할 수 있다. 상기 데이터의 전송 유무에 관계없이, 상기 제 1 제어 정보는 제 1 채널을 통해 상기 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드로 주기적으로 전송될 수 있다.
본 발명의 또 다른 실시예에 따르면, 메모리; 및 적어도 하나의 프로세서를 포함하며, 상기 프로세서는, 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유하고, 상기 적어도 하나 이상의 참여 통신 노드 중 어느 하나의 통신 노드로부터, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 상기 제 1 통신 노드로부터 수신하고, 상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증하는 제 2 통신 노드가 제공될 수 있다. 상기 프로세서는, 상기 참여 통신 노드들과 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보를 공유할 수 있다. 상기 데이터의 전송 유무에 관계없이, 상기 제 1 제어 정보는 제 1 채널을 통해 상기 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드로 주기적으로 또는 특정 전송 패턴으로 전송될 수 있다. 상기 프로세서는, 상기 제 1 제어 정보 및 상기 메시지를 이용하여 상기 제 1 제어 정보를 발행한 주체에 대하여 인증을 수행할 수 있다. 상기 프로세서는, 상기 제 1 제어 정보 및 상기 메시지를 이용하여, 상기 메시지를 송신한 제 1 통신 노드에 대하여 인증을 수행할 수 있다.
본 발명의 또 다른 실시예에 따르면, 메모리; 및 적어도 하나의 프로세서를 포함하며, 상기 프로세서는, 제 1 통신 노드 또는 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하고, 상기 수신한 씨드(seed) 값을 이용하여, 데이터 인증과 무결성을 검증하기 위한 제 2 제어 정보를 생성하고, 상기 제 1 통신 노드 및 상기 제 2 통신 노드를 포함하는 복수의 참여 통신 노드들과 제 2 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유할 수 있다. 상기 프로세서는, 상기 제 1 통신 노드 또는 상기 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하는 대신, 난수 생성을 위한 씨드(seed) 값을 생성할 수 있다. 상기 프로세서는, 상기 씨드에 기반하여 넌스(nonce)를 생성하고, 상기 생성된 넌스가 이전에 사용된 적이 있는지를 확인하며, 상기 생성된 넌스가 이전에 사용된 적이 있을 시 씨드를 재생성할 수 있다.
본 발명의 또 다른 실시예에 따르면, 전송할 데이터를 확인하고, 상기 데이터의 인증 및 무결성을 검증하기 위한 제 1 제어 정보를 생성하고, 상기 제 2 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드들과 제 1 제어 정보를 블록체인 네트워크에 형성된 채널을 통해 공유하고, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 전송하는 제 1 통신 노드; 상기 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유하고, 상기 적어도 하나 이상의 참여 통신 노드 중 어느 하나의 통신 노드로부터, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 상기 제 1 통신 노드로부터 수신하고, 상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증하는 제 2 통신 노드; 및 상기 제 1 통신 노드 또는 상기 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하고, 상기 수신한 씨드(seed) 값을 이용하여, 상기 제 1 제어 정보에 대응하는 제 2 제어 정보를 생성하고, 상기 제 1 통신 노드 및 상기 제 2 통신 노드를 포함하는 복수의 참여 통신 노드들과 상기 제 2 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유하는 제 3 통신 노드를 포함하는 협업 시스템이 제공될 수 있다.
본 발명의 실시예에 따르면, 송신측 제 1 통신 노드가 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 수신측 제 2 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드들과 블록체인 네트워크 내에 형성된 제 1 채널을 통해 공유하고, 상기 데이터를 포함한 메시지를 IP 네트워크 내에 형성된 제 2 채널을 통해 전송하고, 상기 제 2 통신 노드가 상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증함으로써, 데이터 신뢰성을 유지하며, 처리 속도 및 용량 및 데이터의 적시성 한계 그리고 데이터 및 데이터 교환 패턴의 노출을 최소화할 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 상기 이점을 갖는 통신 장치의 동작 방법이 제공될 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 상기 이점을 갖는 데이터 처리 시스템이 제공될 수 있다.
도 1는 본 발명의 일 실시예에 따른 블록체인에 기반한 데이터 처리 시스템을 도시한다.
도 2a는 본 발명의 일 실시예에 따른 블록 체인의 구성을 도시하며, 도 2b는 본 발명의 일 실시예에 따른 제 1 제어 정보, 제 2 제어 정보 및 메시지 사이의 매핑 관계를 도시한다.
도 3a와 도 3b은 본 발명의 일 실시예에 따른 신뢰 채널을 통해 제 1 제어 정보가 블록 내에 기록되어 체인으로 연결되는 것을 나타내는 도면이다.
도 3c와 도 3d은 본 발명의 일 실시예에 따른 신뢰 채널을 통해 제 2 제어 정보가 블록 내에 기록되어 체인으로 연결되는 것을 나타내는 도면이다.
도 4a 및 도 4b는 본 발명의 실시예에 따른 제 1 제어 정보의 엔트로피를 높이기 위한 제 2 제어 정보를 공유하는 순서도이다.
도 5는 본 발명의 실시예에 따른 데이터 처리하는 순서도이다.
도 6은 본 발명의 실시예에 따른 제 1 통신 노드의 동작 방법을 나타내는 순서도이다.
도 7은 본 발명의 실시예에 따른 제 2 통신 노드의 동작 방법을 나타내는 순서도이다.
도 8은 본 발명의 실시예에 따른 제 3 통신 노드의 동작 방법을 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
본 발명의 실시예들은 당해 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위하여 제공되는 것이며, 하기 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 하기 실시예에 한정되는 것은 아니다. 오히려, 이들 실시예는 본 발명을 더욱 충실하고 완전하게 하고, 당업자에게 본 발명의 사상을 완전하게 전달하기 위하여 제공되는 것이다.
또한, 이하의 도면에서 각 층의 두께나 크기는 설명의 편의 및 명확성을 위하여 과장된 것이며, 도면상에서 동일 부호는 동일한 요소를 지칭한다. 본 명세서에서 사용된 바와 같이, 용어 "및/또는" 는 해당 열거된 항목 중 어느 하나 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 특정 실시예를 설명하기 위하여 사용되며, 본 발명을 제한하기 위한 것이 아니다. 본 명세서에서 사용된 바와 같이, 단수 형태는 문맥상 다른 경우를 분명히 지적하는 것이 아니라면, 복수의 형태를 포함할 수 있다. 또한, 본 명세서에서 사용되는 경우 "포함한다(comprise)" 및/또는 "포함하는(comprising)"은 언급한 형상들, 숫자, 단계, 동작, 부재, 요소 및/또는 이들 그룹의 존재를 특정하는 것이며, 하나 이상의 다른 형상, 숫자, 동작, 부재, 요소 및/또는 그룹들의 존재 또는 부가를 배제하는 것이 아니다.
본 명세서에서 제 1, 제 2 등의 용어가 다양한 부재, 부품, 영역, 층들 및/또는 부분들을 설명하기 위하여 사용되지만, 이들 부재, 부품, 영역, 층들 및/또는 부분들은 이들 용어에 의해 한정되어서는 안됨은 자명하다. 이들 용어는 하나의 부재, 부품, 영역, 층 또는 부분을 다른 영역, 층 또는 부분과 구별하기 위하여만 사용된다. 따라서, 이하 상술할 제 1 부재, 부품, 영역, 층 또는 부분은 본 발명의 가르침으로부터 벗어나지 않고서도 제 2 부재, 부품, 영역, 층 또는 부분을 지칭할 수 있다.
이하, 본 발명의 실시예들은 본 발명의 이상적인 실시예들을 개략적으로 도시하는 도면들을 참조하여 설명된다. 도면들에 있어서, 예를 들면, 부재들의 크기와 형상은 설명의 편의와 명확성을 위하여 과장될 수 있으며, 실제 구현시, 도시된 형상의 변형들이 예상될 수 있다. 따라서, 본 발명의 실시예는 본 명세서에 도시된 부재 또는 영역의 특정 형상에 제한된 것으로 해석되어서는 아니 된다. 이하에서는, 도면을 참조하여 본 발명의 다양한 실시예들에 대해 설명하기로 한다.
본 발명의 명세서에서 제 1 통신 노드는 송신 노드 또는 수신 노드를 지칭하고, 제 2 통신 노드는 상기 제 1 통신 노드에 대응하는 수신 노드 또는 송신 노드를 지칭하며, 제 3 통신 노드는 블록체인 플랫폼을 제공하는 서비스 제공자의 통신 노드를 지칭할 수 있다.
도 1는 본 발명의 일 실시예에 따른 블록체인에 기반한 협업 시스템을 도시한다.
도 1를 참조하면, 협업 시스템(10)은 네트워크(100) 상에서 서로 연결되는 제 1 통신 노드(200), 제 2 통신 노드(300) 및 제 3 통신 노드(400)를 포함할 수 있다. 선택적으로 협업 시스템(10)은 인증 기관(CA)을 더 포함할 수 있다. IP 네트워크(100) 상에서 서로 연결된 노드들(200, 300, 400)은 블록체인 네트워크(150)를 구성할 수도 있다. 도 1에서는 3 개의 통신 노드들(200, 300, 400)이 IP 네트워크(100) 및 블록체인 네트워크(150)에 연결되는 것을 도시하였지만, 4 개 이상의 복수의 통신 노드들이 IP 네트워크(100) 및 블록체인 네트워크(150)에 연결될 수 있다.
각각의 통신 노드는 블록체인 노드 및 클라이언트 노드로서 역할을 할 수 있다. 선택적으로, 통신 노드에 씨드 값을 생성하는 씨드 생성 노드가 더 제공될 수 있다. 예컨대, 제 1 통신 노드(200)는 제 1 블록체인 노드(201)와 제 1 클라이언트 노드(202)로서 기능하며, 선택적으로 씨드 생성 노드(203)로도 동작할 수 있다, 마찬가지로, 제 2 통신 노드(300)는 제 2 블록체인 노드(301)와 제 2 클라이언트 노드(302)를 포함하며, 선택적으로 씨드 생성 노드(203)를 더 포함할 수 있고, 제 3 통신 노드(400)는 제 3 블록체인 노드(401)와 제 3 클라이언트 노드(402)를 포함하며, 선택적으로 씨드 생성 노드(403)를 더 포함할 수 있다. 일 실시예에서, 인증 기관(CA)이 공개 키를 생성 및 제공하는 주체로서, 씨드 값을 생성하여 해당 통신 노드로 씨드 값을 제공하는 경우, 해당 통신 노드의 구성 요소에서 씨드 생성 노드가 생략될 수 있다.
또한, 해당 통신 노드(200, 300, 400)의 블록체인 노드(201, 301, 401), 클라이언트 노드(202, 302, 402) 및 씨드 생성 노드(203, 303, 403)는 하나의 장치 내에 각각 하드웨어 또는 소프트웨어 모듈 또는 하드웨어 및 소프트웨어의 결합 형태로 존재하거나, 각각 하나의 개별 장치로 존재할 수 있다. 해당 통신 노드(200, 300, 400)는 적어도 하나 이상의 IP 주소를 할당 받아 IP 네트워크(100)에 연결될 수 있다.
해당 통신 노드(200, 300, 400)의 블록체인 노드(201, 301, 401)는 블록체인 플랫폼의 사용자 또는 컴퓨터를 지칭하며, 블록체인 원장의 전체 사본을 저장 및 공유할 수 있다. 또한, 해당 통신 노드(200, 300, 400)의 블록체인 노드(201, 301, 401)는 IP 네트워크(100) 내에 구성된 블록체인 네트워크(150)에 접근 가능하며, 서로 합의(consensus) 방식을 기반으로 원장(Ledger)의 진실된 상태(true state: 원장은 거래의 기록이므로 이 원장의 상태는 후술할 제 1 제어 정보 및 제 2 제어 정보가 포함됨)를 기록 및 갱신할 수 있다.
일 실시예에서, 블록체인 네트워크(150)는 기업형 블록체인으로서 적합성을 향상시키기 위해 허락된 참여 노드만이 블록체인 네트워크(150)에 참여 가능한 허가형 블록체인일 수 있다. 또한, 블록체인 네트워크(150)는 멀티블록체인과 병렬적 거래의 처리를 지원하는 것이 바람직하다. 이 경우, 블록체인 네트워크(150)은 기업형 블록체인인 만큼 허락된 참여 노드만 블록체인 네트워크(150)에 참여 가능하며 블록체인 네트워크(150) 내에서 조직(organization)을 구성하고 논리적 묶음(channel)으로 서로 다른 원장의 공유를 실현할 수 있다.
일 실시예에서, 블록체인 네트워크(150)는 하이퍼레저 패브릭 구조(Hyperledger Fabric Architecture)를 가질 수 있다. 블록체인 네트워크(150)에서, 원장은 블록체인(blockchain)과 전체 상태(world state)로 지칭되는 데이터베이스 2 가지 별개의 부분으로 구성될 수 있다. "블록"은 트랜잭션의 모임(transaction set)으로 구성되며, 상기 블록은 블록체인 노드(201, 301, 401)에 의해 생성/검증/갱신될 수 있다. 이러한 블록들은 체인으로 연결될 수 있으며, 블록간 체인은 해시를 기반으로 연결될 수 있다. 전체 상태(world state)는 체인 트랜잭션 로그에 포함된 모든 키의 최신 값을 나타내는 데이터베이스일 수 있다. 체인 코드(chain code)는 상기 전체 상태의 데이터를 기준으로 트랜잭션 또는 특정 프로그램 코드를 실행할 수 있다.
일 실시예에서, 이때 특정 프로그램 코드의 동작은 제약이 없으며, 상기 전체 상태의 데이터를 입력으로 고려할 때, 상기 체인코드의 실행 결과에 따른 출력 값은 결정적(deterministic) 또는 예측 가능한 값이어서, 동일 입력 데이터에 대해 항상 같은 출력 값이 나타날 수 있다. 구체적으로, 본 발명의 실시예에서, 송수신 통신 노드간 데이터를 전송할 때, 상기 데이터의 페이로드들에 순번(sequence)을 부여함으로써, 상기 송수신 통신 노드간 전송되는 페이로드를 상호 일치시킬 수 있다. 이로 인해, 상기 체인코드의 동작에 기반하여 수신측 통신 노드에서 상기 데이터에 대하여 검증을 수행할 시 입력에 따른 체인코드의 실행 결과가 항상 일치되도록 할 수 있다. 이러한 입력에 따른 체인코드의 실행 결과에 따른 출력 값이 결정적(deterministic) 또는 예측 가능한 특성을 부여함으로써, 후술할 비신뢰채널로 전송되는 데이터(예: 페이로드)에 기반한 체인코드의 동작을 안전하게 유지할 수 있다.
일 실시예에서, 상기 전체 상태는 키 값이 변경되거나(소유권 이전) 추가(생산)될 때 변경될 수 있다. 결과적으로, 키-값(key-value) 쌍의 현재 상태를 알아야 변경될 수 있기 때문에, 상기 전체 상태는 트랜잭션 흐름에 중요한 역할을 할 수 있다. 블록체인 노드(201, 301, 401)는 처리된 블록에 포함된 각 유효한 트랜잭션에 대해 원장의 전체 상태에 최신 값을 커밋(commit)할 수 있다. 일 실시예에서, 블록체인 네트워크(150)의 각 채널마다 하나의 논리적 원장이 존재할 수 있다. 상기 채널의 모든 블록체인 노드(201, 301, 401)는 자체적으로 원장의 사본을 유지 관리할 수 있다. 상기 원장의 사본은 블록체인 노드(201, 301, 401)의 합의(consensus)을 통해 다른 모든 노드의 사본과 일관성을 유지할 수 있다.
블록체인 노드(201, 301, 401)는 스마트 컨트랙트(smart contract)라는 블록 체인 네트워크 외부의 클라이언트 응용 프로그램에 의해 호출되는 코드를 이용하여, 전체 상태의 일련의 키-값(key-value) 쌍에 대한 접근 및 수정을 관리할 수 있다. 블록체인 네트워크(150)에서 상기 스마트 컨트랙트는 체인 코드와 동일한 의미로 사용될 수 있다. 상기 체인 코드는 블록체인 노드에 설치되고 여러 채널로 인스턴스화될 수 있다.
또한, 상기 블록체인의 트랜잭션은 체인 코드(또는 스마트 컨트랙트)가 설치되거나 호출될 때 발생하며, 블록체인 네트워크(150)에서의 이벤트(예; 제 1 제어 정보 및 제2 제어 정보의 전송 이벤트)가 트랜잭션일 수 있다, 상기 블록체인의 트랜잭션은, 체인 코드를 설치하는 인스턴스화 트랜잭션(instantiate transaction) 및 이미 배포된 체인 코드를 호출하는 호출 트랜잭션(invoke transaction)과 같은 블록체인 네트워크(150)에서 비지니스 로직을 수행하기 위한 요청들을 포함할 수 있다. 상기 호출 트랜잭션의 역할은 원장(ledger)의 읽기/쓰기(write/read)이며, 상기 인스턴스화 트랜잭션은 채널에서 체인 코드를 시작하고 초기화하는 요청이다. 인스턴스화는 다른 블록체인 노드들에게 체인코드에 대해 알리는 역할을 한다.
클라이언트 노드(202, 302, 402)는 블록체인 노드(201, 301, 401)들과 달리 노드간 합의(consensus) 방식을 기반으로 블록의 생성/검증/갱신 없이, 네트워크(100)에 연결되어 유선 또는 무선 통신을 통해 다른 통신 노드들과 TCP/UDP 보안 세션 절차를 통해 데이터를 송수신할 수 있다.
도 2a는 본 발명의 일 실시예에 따른 통신 장치의 구성도이며, 도 2b는 본 발명의 일 실시예에 따른 제 1 제어 정보, 제 2 제어 정보 및 메시지 사이의 매핑 관계를 도시한다.
도 2a를 참조하면, 송신 노드인 제 1 통신 노드(200)와 수신 노드인 제 2 통신 노드(300) 사이를 중계하는 서비스 제공자인 제 3 통신 노드(400)가 예시되어 있다. 이들 통신 노드들(200, 300, 400)은 네트워크(도 1의 100)에 의해 제공되는 비신뢰 채널(URC)과 블록체인 네트워크(150)에 의해 형성된 신뢰 채널(RC)을 구분하여 신호 및 정보들을 교환할 수 있다. 비신뢰 채널(URC)는 예를 들면, 일반적인 인터넷 상의 P2P 네트워킹에 의한 채널일 수 있다. 신뢰 채널(RC)은, 예를 들면, 블록체인 네트워크 상의 P2P 네트워킹에 의한 채널일 수 있다.
일 실시예에서, 비신뢰 채널(URC)은 host-to-host 간 TCP/UDP 통신 채널일 수 있다. TCP는 세션 수립 절차를 가지며 UDP는 세션 수립 절차가 생략될 수 있다. 즉, 비신뢰 채널(URC)은 다수 노드들 간 데이터 공유가 가능한 블록체인 네트워크 상에 형성된 채널과 다른 TCP/UDP 같은 host-to-host 네트워킹으로 형성되는 모든 정보 전달 채널을 지칭할 수 있다. 구체적으로, 비신뢰 채널(URC)은 SSL/TLS, FTP, Secure FTP, SIP(Session Initiation Protocol), DHT(Distributed Hash Table) 기반으로 연결되는 일반적인 IP 네트워킹, 그리고 HTTP/HTTPS 기반의 IP 네트워킹으로 형성되는 채널을 포함할 수 있다. 비신뢰 채널(URC)은 표준화되어 있고 알려진 대역폭을 공평하게(fair) 최대로 활용하여 신뢰 채널(RC)보다 더 많은 데이터를 전달할 수 있으며, 1:1 연결의 송수신 노드 사이의 데이터 교환이 수행하지만 송수신 노드 이외의 다른 노드들과 데이터가 공유되지 않을 수 있다.
신뢰 채널(RC)은 블록체인 개념에 의해 동작하는 정보 전달 채널로서, 노드들간 합의(consensus) 처리에 의해 분산 환경에서도 상호 신뢰가 가능한 정보 공유가 가능하다. 신뢰 채널(RC)은 퍼블릭/프라이빗 블록체인, 컨소시엄 블록체인, 기업형 블록체인 중 어느 하나로 구성될 수 있다. 바람직하게, 신뢰 채널(RC)은 하이퍼레저 패브릭(Hyperledger Fabric) 구조를 갖는 기업형 블록체인으로 구성될 수 있다.
또한, 신뢰 채널(RC) 상에는 페이로드를 역산할 수 있는 데이터를 기록하지 않으며, 후술할 제 1 제어 정보(PAC) 기록 시 페이로드에 대해 제 1 제어 정보(PAC)의 넌스(Nonce) 값을 키 값으로 한 해시 결과 값, 또는 페이로드와 제 1 제어 정보(PAC)의 넌스(Nonce) 값과 관련된 페이로드에 대한 해시 값이 기록될 수 있다.
일 실시예에서, 제 3 통신 노드(400)의 제 3 블록체인 노드(400)는 제 2 제어 정보(ACC)를 생성하여 제 1 통신 노드(200)의 제 1 블록체인 노드(201) 및 제 2 통신 노드(300)의 제 2 블록체인 노드(301)와 제 2 제어 정보(ACC)를 신뢰 채널(RC)를 통해 공유할 수 있다. 제 2 제어 정보는 인증 캐리어 코드(ACC)로서, 씨드 제공자의 개인 키로 암호화된 씨드 정보(signed seed), 상기 씨드 제공자의 공개 키(seeder) 및 서비스 제공자의 공개 키(service provider), ACC 값(value), 서명된 ACC 값(signed value), 상기 제 2 제어 정보의 타임스탬프(timestamp) 중 적어도 하나를 포함할 수 있다. 상기 ACC 값은 제 3 씨드 생성 노드(403)에 의해 생성된 씨드 정보를 기반으로 생성된 넌스(nonce) 값일 수 있다.
제 1 통신 노드(200)의 제 1 블록체인 노드(201)가 제 3 블록체인 노드(400)로부터 수신한 제 2 제어 정보(ACC)를 제 1 클라이언트 노드(202)로 전달하거나 또는 제 1 클라이언트 노드(202)가 제 1 블록체인 노드(201)에 요청해서 제 2 제어 정보(ACC)를 획득하면, 제 1 클라이언트 노드(202)는 상기 제 2 제어 정보(ACC)를 이용하여 제 1 제어 정보(PAC)를 생성하여, 생성된 제 1 제어 정보(PAC)를 제 1 블록체인 노드(201)로 전달할 수 있다. 제 1 블록체인 노드(201)는 제 2 통신 노드(300)의 제 2 블록체인 노드(301) 및 제 3 통신 노드(400)의 제 3 블록체인 노드(400)와 제 1 제어 정보(PAC)를 신뢰 채널(RC)을 통해 공유할 수 있다. 상기 제 1 제어 정보(PAC)는 제 1 통신 노드(200)의 공개 키, 제 1 통신 노드(200)에 의해 생성되어 서명된 넌스 값(signed nonce), 상기 제 1 제어 정보의 타임 스탬프(timestamp), 메시지 인증 코드 값(예를 들면, 페이로드 값(payload in FSP), nonce in FSP 및 nonce in ACC)를 입력 값으로 갖는 해시 함수의 출력 값임)을 포함할 수 있다. 다른 실시예에서, 전송할 데이터가 없는 경우, 제 1 제어 정보(PAC)의 서명된 난수 값(Signed nonce)은 상기 제 2 제어 정보의 ACC 값(value) 또는 서명된 ACC 값(signed value)으로부터 제공될 수 있다.
일 실시예에서, 제 1 통신 노드(200)는 비신뢰 채널(URC)을 통해 후술할 FSP 메시지를 이용하여, 데이터를 제 2 통신 노드(300)의 제 2 클라이언트 노드(302)에 전송할 수 있다. 상기 FSP 메시지는 제 1 통신 노드(200)의 공개 키, ACC의 타임스탬프, PAC의 타임스탬프, 서비스 제공자의 발행 주체 여부, 제 1 통신 노드(200)에 의해 생성된 넌스(nonce) 값, 시퀀스의 시작 시점, 종료 시점, 및 시퀀스 번호 그리고 분할 또는 세그먼트된 데이터를 포함할 수 있다. 일 실예에서, 상기 전송할 데이터의 크기가 임계치보다 작은 경우, 상기 데이터의 분할 또는 세그먼트가 불필요하기 때문에, 상기 FSP 메시지의 시퀀스의 시작 시점, 종료 시점, 및 시퀀스 번호는 전송할 데이터의 크기에 의해 널(null) 값으로 설정되거나 생략될 수 있다.
제 2 통신 노드(300)의 제 2 블록체인 노드(301)는 신뢰 채널(RC)을 통해 제 1 제어 정보(PAC) 및 제 2 제어 정보(ACC)를 획득할 수 있으며, 획득된 제 1 제어 정보(PAC) 및 제 2 제어 정보(ACC)를 제 2 클라이언트 노드(302)로 전달하거나 또는 제 1 클라이언트(202)의 경우와 같이 제 2 클라이언트 노드(302)가 제 2 블록체인 노드(301)에 요청해서 획득할 수 있다. 제 2 클라이언트 노드(302)는 제 1 통신 노드(200)의 제 1 클라이언트 노드(202)로부터 비신뢰 채널(URC)을 통해 상기 FSP 메시지를 수신할 수 있다.
이때, 제 2 클라이언트 노드(302)는 제 1 제어 정보(PAC)의 singed nonce 값을 제 1 통신 노드(200)의 공개키로 복호화한 값과 상기 FSP 메시지의 제 1 통신 노드(200)에 의해 생성된 난수 값(nonce)을 비교함으로써, 제 1 제어 정보의 송신자에 대하여 인증을 수행할 수 있다.
또한, 제 2 클라이언트 노드(302)는 FSP 메시지의 ACC의 timestamp 값을 통해 상기 FSP 메시지와 매핑된 제 2 제어 정보(ACC)를 획득할 수 있으며, 상기 FSP 메시지의 제 1 통신 노드(200)에 의해 생성된 넌스 값(nonce)을 제 1 통신 노드(200)의 공개 키로 복호화하여 제 2 제어 정보(ACC)의 ACC 값과 비교함으로써, FSP 메시지의 송신자에 대하여 인증을 수행할 수 있다.
일 실시예에서, 제 2 클라이언트 노드(302)는 제 2 블록체인 노드(301)로부터 수신한 제 1 제어 정보(PAC) 및 제 2 제어 정보(ACC) 그리고 제 1 통신 노드(200)의 제 1 클라이언트 노드(202)로부터 수신된 FSP 메시지를 이용하여, 데이터에 대한 무결성을 검증할 수 있다. 구체적으로, 제 2 클라이언트 노드(302)는 제 1 제어 정보(PAC)의 nonce 값, 제 2 제어 정보(ACC)의 nonce 값 그리고 FSP 메시지의 분할 또는 세그먼트된 데이터를 입력 값으로 하는 해시 함수의 출력 값을 계산하고, 계산된 해시 함수의 출력 값과 제 1 제어 정보(PAC)의 메시지 인증 코드 값을 비교하여, 데이터 무결성을 검증할 수 있다.
제 1 제어 정보(PAC)의 nonce 값 및 제 2 제어 정보(ACC)와 FSP 메시지는 구별되는 신뢰 채널(RC)와 비신뢰 채널(URC)를 통해 각각 전달되며, 송신측에서 FSP 메시지는 제 1 제어 정보(PAC)의 nonce 값 및 제 2 제어 정보(ACC)와 매핑되어 생성되기 때문에, 수신측의 제 2 클라이언트 노드(302)는 신뢰 채널(RC)을 통해 수신된 제 1 제어 정보(PAC)의 nonce 값 및 제 2 제어 정보(ACC)와 비신뢰 채널(URC)을 통해 FSP 메시지 사이의 매핑 관계를 인지할 필요가 있다. 도 2b를 참조하여, 제 1 제어 정보(PAC)의 nonce 값 및 제 2 제어 정보(ACC) 그리고 FSP 메시지 사이의 매핑 관계를 설명하기로 한다.
도 2b를 참조하면, 노드들간 이벤트나 사실 존재의 증명하기 위한 전후 관계를 보장하기 위해 타임스탬프(timestamp)가 제공될 수 있다. 상기 타임스탬프는 절대 시간 정수 값으로써, 시간이 증가할수록 타임스탬프 값은 증가한다. 제 3 통신 노드(400)의 제 3 블록체인 노드(400)는 제 2 제어 정보(ACC)를 주기적으로 생성할 수 있으며, 주기적으로 생성된 제 2 제어 정보(ACC)는 제 1 통신 노드(200)의 제 1 블록체인 노드(201) 및 제 2 통신 노드(300)의 제 2 블록체인 노드(301)와 제 2 제어 정보(ACC)를 신뢰 채널(RC)를 통해 공유될 수 있다. 제 2 제어 정보(ACC)는 각 타임스탬프 마다 1 개씩 발생(* 표시 시점)할 수 있다. 예컨대, Timestamp 1에 대응하는 ACC는 ACC1, Timestamp N에 대응하는 ACC는 ACCN으로 표기할 수 있다. Payload는 각 데이터 발생 시작 시점(s1, s2, s3)과 종료(e1, e2, e3) 시점으로 표기한다. 데이터의 종료 시점은 소켓 버퍼(Socket Buffer)에 쓰기 요청(Write Request) 또는 이에 대한 전송 완료가 확인된 마지막 시점으로 정의할 수 있다. 분할된 데이터 또는 세그먼트는 Chunk 1, Chunk 2, Chunk 3… 으로 표기될 수 있다. Chunk 1 = s1~e1, Chunk 2 = s2~e2, Chunk 3 = s3~e3으로 정의할 수 있다. 이때, Chunk 1은 ACC 한 주기 이내에서만 발생하고, Chunk 2는 1 개의 ACC 발생 시점 전후에 걸쳐 발생할 수 있으며, Chunk 3은 다수 개의 발생 시점 전후에 걸쳐 발생할 수 있다.
도 2b에서는 상기 분할된 데이터(Chunked Payload)가 3 개인 경우에 대해, FSP 메시지가 Chunk 1, 2, 3에 대해 각각 1회, 2회, 3회 발생한 경우를 위 예시된 예에 따라 표현되었다. FSP는 분할된 데이터 각각이 후술할 표 3의 FSP 프로토콜 포맷으로 생성될 수 있다. BWR(Buffer Write Request)는 송신 측에서 소켓 버퍼(Socket Buffer) 상 DWR(Data Write Request)를 실행하는 시점으로서, 이때 버퍼에 기록되는 데이터는 FSP 메시지일 수 있다. PAC는 제 1 제어 정보로서, 각 ACC(제 2 제어 정보)에 대응하도록 주기적으로 발생될 수 있다. 1 개의 PAC는 인증하는 FSP 메시지의 개수에는 제약이 없다(0~임의의 개수). Soft Realtime이므로 PAC의 Interval이 변동될 수 있다. MAX_PAYLOAD_SIZE는 송신측에서 지정하는 FSP 메시지 내 Payload 필드 크기 최대값이며, 송신측에서 기존 네트워킹 성능 지표를 확인하여 ACC 주기 내 전송 가능한 적절한 Payload 크기를 결정할 수 있다. 이때, 적절한 크기의 계산은 지난 일정 시간 동안의 총 전송량/시간 또는 평균 슬라이딩 윈도우(Sliding Window Average), 또는 하위 TCP 스택에서 제공 가능한 성능 데이터 같은 파라미터를 고려할 수 있으나 이에 한정되지 않는다.
본 발명의 일 실시예에 따르면, ACC와 PAC 모두 주기적으로 발생하게 되므로, 데이터 전송 시작과 종료 시점 구간은 0~다수 개 ACC 주기에 매핑될 수 있다. 따라서, 페이로드가 없는 경우 페이로드 전송 시작 시점 기준 기발생한 최신 ACC 1 개를 선택하고 1 개의 PAC을 매핑하고, 그 외의 1~다수 개인 경우는 ACC 선택 기준이 필요할 수 있다. 구체적으로, ACC는 데이터 발생 시점이나 여부와 관계없이 주기적으로 생성되며, 임의의 시점에서 발생한 ACC가 ACC1인 경우 그 다음 주기에서 생성되는 ACC는 ACC2, 그 다음은 ACC3의 방식으로 표현될 때, t1은 전체 데이터의 발생 및 전송 시작 시점, t2는 상기 데이터의 전송 완료 시점일 수 있다. ACC는 t1에서 선택 또는 생성하고, PAC 생성의 경우 t1 이전 또는 t2 직후 등 시점에 생성할 수 있다. 설명의 이해를 돕기 위해, t1은 모두 시스템이 데이터를 모두 알 수 있는 시점이며 동시에 전송이 시작되는 시점으로 간주한다. 전송 종료 시점에서 PAC을 생성하는 경우, 송신측의 송신 데이터 무결성(integrity) 보장이 강화될 수 있다.
t1은 항상 현 ACC가 가용한 시점이어야 하며(즉, 적어도 ACC1이 신뢰 채널 상 정해져 있어야 함), t2는 당시 가용한 최신 ACC 이후 시점이며, t1부터 t2까지의 시간 사이 발생한 ACC의 개수나 그 내용은 사전에 알 수 없다. t2 이전에 ACC가 발생하는 경우, 이러한 하나 이상의 ACC들에 대한 활용 여부는 송신자가 선택할 수 있다. 예를 들어, 시간 경과에 따른 ACC 발생 시점과 페이로드 송수신 시점 t1, t2의 시간 상 관계가 Timestamp 값 크기에 따라 ACC1 < t1 < t2 < ACC2와 같이 하나의 주기 내에서 페이로드 전송이 완료될 수도 있다. 또는, ACC1 < t1 < ACC2 <... < ACCn < t2 < ACCn+1 과 같이 페이로드 전송 시작과 끝 시점 사이에 추가적인 ACC가 발생할 수도 있으며, 이때 최초의 ACC1만 활용할 것인지 그 이후 발생한 ACC2~ACCn을 모두 사용할 것인지는 송신측이 선택할 수 있다.
일 실시예에서, 데이터를 분할하는 경우, 즉, 주기마다 보낼 수 있는 데이터 크기를 상황에 따라 계속 결정해 나가면서 상기 데이터 크기에 맞춰 분할 또는 세그먼트(또는 Chunking)하고, 분할 또는 세그먼트된 데이터(Chunked Payload) 각각에 대해 FSP 메시지를 생성하고, 전송 시점에 최신 ACC를 선택하여, 선택된 ACC를 이용하여 PAC을 생성 후 공유하면 매 주기마다 새로운 ACC를 사용한 PAC이 생성된 뒤 주기적으로 신뢰 채널 상에 공유될 수 있다.
협업 시스템의 측면에서, 선택적으로는 시스템 전체를 Soft Realtime으로 가정할 경우, 정확한 매 주기마다의 ACC, PAC를 생성하지 않아도, 동일 ACC가 PAC 생성 주기 편차 상 일정 회수(수 회 수준)만큼 반복 사용되더라도 반복 사용 회수가 크지 않은 이상 보안(Security) 관점에서 문제점이 초래되지 않을 수 있다.
이러한 방법을 이용하면, 원본 송신 통신 노드에서 송신한 모든 FSP 메시지들은 어느 통신 노드를 통해 전달되더라도, 중계(Relay), 포워딩(Forward)이 가능하기 때문에, 1:1 세션을 통한 전송뿐 아니라 무작위 1:N 전송 세션을 수립한 경우에 FSP 메시지 발생 순서와 무관하게 전달이 가능하다. 1:N 전송 세션이 계층적으로 연결된 토폴로지 상에서도 FSP 발생 순서와 무관하게 무작위 전달, 전파가 가능해질 수 있다.
다른 실시예에서, ACC 선택을 위한 다른 방법은 1) Payload를 Stream으로 간주하고, BWR 발생 이후 별도의 Watch Process가 Payload의 Byte Count를 감시해서 특정 규칙에 의해 FSP 생성 입력을 결정하거나, 2) BWR 발생이 일어나는 모든 Chunk들에 대해 각각 1개의 ACC만 적용하는 방법 등 다양하게 있을 수 있다.
전술한 바와 같이, 제 1 통신 노드(200), 제 2 통신 노드(300), 또는 제 3 통신 노드(400)에 의해 생성된 nonce 값과 상위 어플리케이션의 동작에 필요한 sequence number를 포함하는 원본 데이터 인증 코드를 신뢰 채널(도 2a의 RC 참조) 상에 주기적으로 발행하고, 비신뢰 채널(도 2b의 URC 참조) 상 P2P 네트워킹을 통해 원본 데이터(송신 노드가 생성한 sequence number와 nonce 값 포함)를 수신한 다수의 노드들은 신뢰 채널 상 주기적으로 게시된 인증 코드를 통해 원본 데이터를 검증하는 이중 채널을 통한 정보를 교환함으로써, 제 1 통신 노들(200, 300, 400)들이 데이터 신뢰성을 유지하며, 처리 속도 및 용량 및 데이터의 적시성 한계 그리고 데이터 및 데이터 교환 패턴의 노출을 최소화하여 통신이 가능하다. 특히, 명시적 노드 인증서에 기반한 합의에 기초하는 엔터프라이즈 블록체인 또는 퍼블릭(명시적 인증서 기반이 아닌) 블록체인 상에서의 구동할 수 있다. 바람직하게는 상대적으로 종료성(finality)에 의한 시스템 응답성 측면에서 유리한 엔터프라이즈 블록체인 상에 구동될 수 있다.
일 실시예에서, 엔터프라이즈 블록체인 상에 구동될 경우, 상대적으로 퍼블릭 블록체인보다 데이터 기록을 위한 합의 처리 속도가 빠르고, 결과 값이 즉시 확정적 상태(즉, 클라이언트 노드가 제 1 제어 정보 및 제 2 제어 정보 같은 신뢰 채널을 통해 전달되는 값에 대하여 신뢰 가능한 상태를 가짐)가 된다. 이로 인해, 수신측에서 제 2 제어 정보에 대한 즉각적인 검증이 가능할 수 있다. 더하여, 엔터프라이즈 블록체인 상에 구동될 경우, 노드 운영 주체가 명확하게 드러나 데이터 전송 대상을 특정할 수 있으며, 이로 인해 특정 노드(예; 클라이언트, 블록체인, 씨드 제공자)의 운영 주체를 확인할 수 있기 때문에, 특정 운영 주체가 공유하는 제 1 또는 제 2 제어 정보 같은 비신뢰 채널 접속정보에 대해 신뢰할 수 있다.
도 3a와 도 3b은 본 발명의 일 실시예에 따른 신뢰 채널을 통해 제 1 제어 정보(PAC)가 블록 내에 기록되어 체인으로 연결되는 것을 나타내는 도면이고, 도 3c와 도 3d는 본 발명의 일 실시예에 따른 신뢰 채널을 통해 제 2 제어 정보(ACC)가 블록 내에 기록되어 체인으로 연결되는 것을 나타내는 도면이다. 일 실시예에서, 제 1 제어 정보(PAC)는 일정한 패턴으로 또는 주기적으로 제 1 통신 노드(200)의 제 1 블록체인 노드(201)에서 다른 참여 블록체인 노드(301, 401)로 신뢰 채널을 통해 전송되며, 기정의된 블록체인 노드들간 합의 절차에 따라, 블록 내에 제 1 제어 정보(PAC)이 기록되어 블록체인 노드들간 공유될 수 있다. 제 1 제어 정보(PAC)와 마찬가지로, 제 2 제어 정보(ACC)는 일정한 패턴으로 또는 주기적으로 제 3 통신 노드(400)의 제 3 블록체인 노드(401)에서 다른 참여 블록체인 노드(201, 301)로 신뢰 채널을 통해 전송되며, 기정의된 블록체인 노드들간 합의 절차에 따라, 블록 내에 제 2 제어 정보(ACC)가 기록되어 블록체인 노드들간 공유될 수 있다.
일 실시예에서, 하나의 블록 내에 1개 또는 다수 개의 제 1 또는 제 2 제어 정보가 기록되어, 블록간 체인으로 연결될 수 있다. 이때, 블록간 연결은 이전 블록 데이터의 전체 또는 일부를 입력으로 하는 해시 함수의 해시 값으로 연결될 수 있다.
일 실시예에서, 제 1 제어 정보(PAC)와 제 2 제어 정보(ACC)는 신뢰 채널을 통해 전달 및 공유되어 블록 내에 기록되지만 각각 별도의 독립된 채널을 구성될 수 있다. 예컨대, 제 1 제어 정보(PAC)와 제 2 제어 정보(ACC)는 각각 서로 다른 원장에 독립적으로 기록될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 하나의 채널 상에 제 1 제어 정보(PAC)와 제 2 제어 정보(ACC)가 기록될 수도 있다. 제 1 제어 정보(PAC)는 후술할 표 1에 기재된 적어도 하나의 필드 값으로서, 후술할 표 1에 기재된 적어도 하나의 필드 값이 블록 내에 기록될 수 있다. 제 2 제어 정보(PAC)는 후술할 표 2에 기재된 적어도 하나의 필드 값으로서, 후술할 표 2에 기재된 적어도 하나의 필드 값이 블록 내에 기록될 수 있다.
도 3a를 참조하면, 제 1 제어 정보(PAC)가 제 1 통신 노드(200)의 제 1 블록체인 노드(201)에 의해 생성되어 참여 노드로 전송될 때마다, 제 1 블록(BL1) 내에 제 1 제어 정보(PAC)가 기록되며, 소정의 개수(m개, m은 정수) 만큼 제 1 블록(BL1) 내에 기록되면, m+1 번째 생성된 제 1 제어 정보(PAC)는 제 2 블록(BL2) 내에 기록될 수 있다. 제 2 블록(BL2) 내에 다시 m개의 제 1 제어 정보(PAC)가 기록되면 다음 블록(BLn)이 생성되어 이후 생성되는 블록(BLn)내에 제 1 제어 정보(PAC)가 기록될 수 있다. 블록(BL1, BL2,…, BLn, n은 m보다 큰 정수임)의 블록 헤더(block header)는 이전 블록에 대한 해시 값을 포함하며, 블록간 체이닝(chaining)할 수 있다. 블록(BL1, BL2,…, BLn)의 레코드 개수(number of records)는 블록 내에 총 제 1 제어 정보(PAC)의 개수를 의미한다.
도 3b를 참조하면, 제 1 제어 정보(PAC)가 제 1 통신 노드(200)의 제 1 블록체인 노드(201)에 의해 생성되어 참여 노드로 전송될 때마다, 새로운 블록이 생성되어 상기 생성된 블록 내에 제 1 제어 정보(PAC)가 기록될 수 있다. 예를 들면, 제 1 블록(BL1) 내에는 1개의 제 1 제어 정보(PAC)가 기록되고, 제 2 블록(BL2) 내에는 2개의 제 1 제어 정보(PAC)가 기록되고, 제 3 블록(BL3) 내에는 3개의 제 1 제어 정보(PAC)가 기록되며, 제 n 블록(BLn) 내에는 n개의 제 1 제어 정보(PAC)가 기록될 수 있다. 여기서, 블록의 생성 개수는 제 1 제어 정보(PAC)의 생성 개수에 비례하고, 블록간 해시 값을 통해 체이닝될 수 있다.
도 3c를 참조하면, 제 2 제어 정보(ACC)가 제 3 통신 노드(400)의 제 3 블록체인 노드(401)에 의해 생성되어 참여 노드로 전송될 때마다, 제 1 블록(BL1) 내에 제 2 제어 정보(ACC)가 기록되며, 소정의 개수(m개, m은 정수)만큼 제 1 블록(BL1) 내에 기록되면, m+1 번째 생성된 제 2 제어 정보(ACC)는 제 2 블록(BL2) 내에 기록될 수 있다. 제 2 블록(BL2) 내에 다시 m개의 제 2 제어 정보(ACC)가 기록되면 다음 블록(BLn)이 생성되어 이후 생성되는 블록(BLn) 내에 제 2 제어 정보(ACC)가 기록될 수 있다. 블록(BL1, BL2,…, BLn)의 블록 헤더(block header)는 이전 블록에 대한 해시 값을 포함하며, 블록간 체이닝(chaining)할 수 있다. 블록(BL1, BL2,…, BLn)의 레코드 개수(number of records)는 블록 내에 총 제 2 제어 정보(ACC)의 개수를 의미한다.
도 3d를 참조하면, 제 2 제어 정보(ACC)가 제 3 통신 노드(400)의 제 3 블록체인 노드(401)에 의해 생성되어 참여 노드로 전송될 때마다, 새로운 블록이 생성되어 상기 생성된 블록 내에 제 2 제어 정보(ACC)가 기록될 수 있다. 예를 들면, 제 1 블록(BL1) 내에는 1개의 제 2 제어 정보(ACC)가 기록되고, 제 2 블록(BL2) 내에는 2개의 제 2 제어 정보(ACC)가 기록되고, 제 3 블록(BL3) 내에는 2개의 제 2 제어 정보(ACC)가 기록되며, 제 n 블록(BLn) 내에는 n개의 제 2 제어 정보(ACC)가 기록될 수 있다. 여기서, 블록의 생성 개수는 제 1 제어 정보(PAC)의 생성 개수에 비례하고, 블록간 해시 값을 통해 체이닝될 수 있다.
도 4a 및 도 4b는 본 발명의 다양한 실시예들에 따른 제 1 제어 정보의 엔트로피를 높이기 위한 제 2 제어 정보를 공유하는 순서도이다.
도 4a를 참조하면, 제 1 통신 노드(200)의 제 1 클라이언트 노드(202)는 필요 시 씨드 생성 노드(203)에 씨드 요청 신호를 전송하고(S1), 씨드 생성 노드(203)은 상기 씨드 요청 신호에 대하여 씨드 정보를 제 1 클라이언트 노드 (202)에 전송할 수 있다(S2). 일 실시예에서, 씨드 생성 노드(203)는 씨드 요청 수신 시 반환 지연을 최소화하기 위해, 씨드 요청에 상관없이 주기적으로 씨드 정보를 생성하여 씨드 정보를 제 1 클라이언트 노드(202)에 전송할 수 있다. 씨드 생성 노드(203)은 주기적으로 씨드 정보를 생성하고 기정의된 유효 기간 동안 유지 후 폐지를 할 수 있다. 상기 씨드 정보는 의사 난수 발생기에 초기값으로 사용하는 상수로서, 처음 지정하는 난수의 씨드가 다음의 결과를 발생시키고, 다시 그 결과가 씨드로 작용할 수 있다.
제 1 클라이언트 노드(202)는 제 3 통신 노드(400)의 제 3 클라이언트 노드(402)로 상기 생성한 씨드 정보를 전송할 수 있다(S3). 일 실시예에서, 씨드 생성 주체를 확인할 수 있도록, 상기 씨드 정보는 제 1 통신 노드(200)의 개인 키로 암호화되어 제 3 통신 노드(400)의 제 3 클라이언트 노드(402)로 전송될 수 있다. 즉, 제 1 클라이언트 노드(202)는 상기 씨드 정보는 제 1 통신 노드(200)의 개인 키로 암호화함으로써, 자신이 씨드 생성 주체임을 명시적으로 나타낼 수 있다. 필요 시, 제 1 통신 노드(200)의 공개 키가 다른 통신 노드들에게 공개되어 있지 않는 경우, 선택적으로 제 1 통신 노드(200)의 공개 키는 상기 암호화된 씨드 정보와 함께 제 3 통신 노드(400)로 전송될 수 있다. 다른 실시 예에서, 제 1 클라이언트 노드(202) 대신 제 1 통신 노드(200)의 제 1 블록체인 노드 (201)가 씨드 생성 노드(203)에 의해 생성된 상기 씨드 정보를 제 3 통신 노드(400)의 제 3 블록체인 노드(401)에 전송할 수도 있다.
또 다른 실시예에서, 제 1 통신 노드(200) 또는 후술할 제 2 통신 노드(300)에 의해서 제공된 씨드 정보가 없는 경우, 단계들 S1 내지 S3 대신 제 3 통신 노드(400)의 씨드 생성 노드(403) 자체에서 씨드 정보를 생성하여(S4) 생성된 씨드 정보를 제 3 클라이언트 노드(402)로 전달할 수 있다(S5).
이후, 제 3 클라이언트 노드(402)는 선택적으로 제 1 클라이언트 노드(202)로부터 전송된 씨드 정보 또는 씨드 생성 노드(403)에 생성된 씨드 정보를 제 3 통신 노드(200)의 개인 키로 암호화할 수 있다(S6). 제 1 클라이언트 노드(202)로부터 전송된 씨드 정보를 제 3 통신 노드(200)의 개인 키로 암호화함으로써, 후술한 전송된 씨드 정보에 기반하여 결정된 넌스(nonce) 값의 엔트로피(entropy)를 높일 있다.
이후, 제 3 클라이언트 노드(402)는 제 3 통신 노드(200)의 개인 키로 암호화된 씨드 정보를 이용하여 넌스(nonce) 값을 결정할 수 있다(S7). 예컨대, 상기 씨드 정보를 난수 발생기의 초기 값으로 설정하여 넌스(nonce) 값을 생성할 수 있다.
이후, 제 3 클라이언트 노드(402)는 결정된 넌스(nonce) 값이 이전에 사용된 적 있는지 확인할 수 있다(S8). 구체적으로, 제 3 클라이언트 노드(402)는 체인코드(chaincode) 또는 스마트 계약(smart contract)을 통해 결정된 넌스(nonce)가 이전에 사용된 적이 있는지 확인할 수 있다. 만약, 결정된 넌스(nonce) 값이 이전에 사용된 넌스(nonce) 값이면, 제 3 클라이언트 노드(402)는 씨드 정보를 제공한 제 1 클라이언트 노드(202)에 새로운 씨드 정보를 요청하거나, 씨드 생성 노드(403) 자체에서 씨드 정보를 생성하여, 넌스(nonce) 값을 재결정할 수 있다.
본 발명의 일 실시예에서, 블록체인 네트워크가 하이퍼레저 패브릭(Hyperledger Fabric)을 기반으로 하고 있고, 이때 키-값 데이터베이스(Key-value Store)를 사용하는 경우, 특정 시점에 생성한 난수(nonce) 값이 이전에 발행된 적이 있는지 확인하는 복잡도는 O(1)일 수 있다. 일 실시예에서, 체인코드 또는 스마트 컨트랙트 실행을 통해 결정된 넌스(nonce)를 공개 키로 복호화 하여 원본과 동일한지 확인하거나 현재 넌스(nonce)가 기존에 발행된 적이 없었는지 전체 스캐닝(fully scanning) 해서 검증할 수 있다.
이후, 제 3 클라이언트 노드(402)는 확인된 난수(nonce) 값을 제 3 블록체인 노드(401)로 전달할 수 있다(S9). 도 4a에서 씨드 정보를 암호화하고 넌스(nonce) 값을 결정 및 확인하는 단계(S6 내지 S8)는 제 3 블록체인 노드(401)에 의해 수행될 수도 있다. 이 경우, S9 단계는 생략될 수 있다.
이후, 제 3 블록체인 노드(401)는 확인된 넌스(nonce) 값을 이용하여 인증 캐리어 코드 정보(이하 제 2 제어 정보라 칭함)를 생성하여 제 1 통신 노드(200)의 제 1 블록체인 노드(201) 및 제 2 통신 노드(300)의 제 2 블록체인 노드(301)에 전송할 수 있다(S10). 일 실시예에서, 제 3 블록체인 노드(401)는 상기 제 2 제어 정보를 제 1 블록체인 노드(201)로 전송하고, 제 1 블록체인 노드(201)가 제 2 제어 정보를 저장한 후 다시 제 2 블록체인 노드(301)로 전달할 수 있다. 선택적으로는, 제 3 블록체인 노드(401)가 상기 제 2 제어 정보를 제 2 블록체인 노드(301)로 전송하고, 제 2 블록체인 노드(301)가 상기 제 2 제어 정보를 저장한 후 다시 제 1 블록체인 노드(201)로 전달할 수 있다. 상기 제 2 제어 정보는 하기 표 1과 같다.
필드 설명
Signed Seed
(옵션)
- 씨드 생성 노드가 씨드 정보를 제공한 경우, 해당 씨드 값을 상기 씨드 생성 노드의 개인 키로 암호화한 값
- 상기 필드의 값은 씨드 제공 주체의 인증을 위해서 활용되며, 제 2 제어 정보에서 넌스(nonce) 생성을 위한 씨드 정보로 사용되지 않음.
Seeder(옵션) - 제 2 제어 정보를 생성하기 위해 씨드 정보를 제공한 노드의 공개 키
Service Provider
(옵션)
- 서비스 제공자의 공개 키
- 서비스 제공자의 공개키가 신뢰 채널 상 확인 가능한 것이면 명시적 제 2 제어 정보의 공유이며, 그렇지 않은 경우는 묵시적 제 2 제어 정보임.
Value(필수) 씨드 생성 노드가 제공한 씨드 정보를 기반으로 생성하거나 서비스 제공자가 자체 생성한 씨드 정보 값을 이용하여 생성한 넌스(nonce) 값
Signed Value
(옵션)
서비스 제공자가 개인 키로 Value 값을 암호화한 결과값
Timestamp(필수) 제 2 제어 정보가 생성된 시간 절대 값
상기 제 2 제어 정보 중 Signed Seed, Seeder, Service Provider 필드 값과 Signed Value 값은 선택적으로 포함되는 정보이다. Seeder 필드 값이 널(null) 값이면 서비스 제공자에 의해서 제 2 제어 정보가 생성된 것이며, Signed Value은 Value를 공유한 주체에 대해 인증하고자 할 때 활용될 수 있다. 예컨대, Signed Value를 Seeder 또는 Service Provider 필드 값을 이용해 복호화하여 Value 값이 도출되는지 확인함으로써, Value를 공유한 주체에 대해 인증할 수 있다.
상기 제 2 제어 정보인 인증 캐리어 코드로서 서비스 제공자의 제 3 통신 노드가 신뢰성 높은 넌스 값을 반복적으로 생성하여, 이를 신뢰 채널인 블록체인 채널 상 공유되는 것으로, 이 값은 종래 인증 절차의 시도응답(challenge-response)에서 사용자가 인증을 원할 경우 서버에서 사용자에게 일회성으로 보내지는 challenge 값과 유사하며 넌스(nonce)의 특징(1회성 사용 권장)을 가질 수 있다. 그러나, 종래 인증 프로토콜과 다르게 challenge 값을 제시하는 본 발명의 서비스 제공자의 제 3 통신 노드는 공유할 넌스들이 난수의 특성을 유지할 책임과 상기 제 2 제어 정보가 반복적으로 사용되지 않았는지를 관리할 역할을 수행할 수 있다. 그리고, 상기 제 2 제어 정보가 신뢰 채널에 공유됨으로써, 네트워크 참여 주체들(예, 블록체인 네트워크의 허여 노드들로서, 제 1 통신 노드, 제 2 통신 노드)는 서비스 제공자의 행위가 올바르게 수행되는지 감독할 수 있는 역할이 부여될 수 있다. 또한, 상기 제 2 제어 정보가 주기적으로 신뢰 채널 상 공유되면 네트워크 참여 주체(제 1 통신 노드 내지 제 3 통신 노드들의 모든 주체)들은 최신 제 2 제어 정보를 획득 후 하기 두 가지 형태로 활용할 수 있다.
첫 번째, 상기 제 2 제어 정보는 인증을 위한 challenge 값으로 활용하여 이에 대한 인증 증거 값을 생성하는데 활용될 수 있다. 두 번째, 특정 데이터 전달 시 추가적인 난수 값이 필요한 경우 제 2 제어 정보를 서명한 값을 사용할 수 있다. 구체적으로, 특정 노드는 자신의 개인 키로 상기 제 2 제어 정보를 서명 또는 암호화함으로써, 자신의 공개 키를 알고 있는 특정 다수 수신측 노드들에게 자신의 인증 증거 값을 동시에 제시할 수 있다. 이는 1:N 커뮤니케이션 효율을 확보하는데 이점이 있다. 이때, 증거 값을 후술될 주기적 메시지 인증 코드(Periodic Message Authentication Code, 이하 제 2 제어 정보라 칭함)에 포함시킴으로써, 특정 다수의 수신측 노들이 후술될 메시지(예: Forwarding-safe Payload)를 원본 송신측 통신 노드가 아닌 중계 통신 노드를 통해 중계(relay) 또는 저장 후 전달(Store-forward) 형태로 전달받는 경우에도 원본 메시지(FSP)를 생성한 통신 노드를 인증할 수 있는 효과가 있다. 즉, 원본 데이터 무결성 확인에 대한 가시성을 확보하는데 이득이 있다. 또한, 직접 데이터 교환이지만 중계 노드가 도입하는 경우에도 원본 통신 노드의 인증이 가능하여, 폭 넓고 다양한 형태의 정보 전달 및 이때의 정보에 대한 신뢰성 보장이 가능해질 수 있다.
더하여, 제 2 제어 정보를 통해, 다중 채널 상 1:N 메시지 인증 코드 생성 시 엔트로피(Entropy) 확보를 위한 nonce 값으로 활용될 수 있다. 구체적으로, 송신측 통신 노드가 메시지(FSP) 구성 시 포함할 필요가 있는 난수 값을 대체하는 효과를 가질 수 있다. 송신측 통신 노드가 자신을 인증하기 위해 제 1 제어 정보에 포함된 Signed Nonce가 있는데, 이를 위한 nonce는 하기 두 가지 방법으로 생성 가능하다. 상기 제 1 제어 정보의 Signed Nonce는 제 1 제어 정보를 통해 공유되고, 이를 계산하기 위한 초기 값의 nonce는 메시지(FSP)에 포함되어 수신 통신 노드에 전달될 수 있다.
먼저, 제 2 제어 정보(ACC)로부터 획득한 넌스(nonce) 값 또는 송신측 통신 노드의 씨드 생성 노드(203)에 의해 생성된 넌스 값을 송신측 통신 노드의 개인 키로 서명 또는 암호화함으로써 상기 제 1 제어 정보의 Signed Nonce가 결정될 수 있다. 두 번째, 송신자가 직접 생성한 독립적 난수 값을 서명 및 암호화함으로써 상기 제 1 제어 정보의 Signed Nonce가 결정될 수 있다
제 2 제어 정보로부터 획득한 nonce를 송신측 통신 노드의 개인 키로 서명 또는 암호화하여 생성된 상기 제 1 제어 정보의 Signed Nonce의 경우, 송신자 개인 키로 서명 또는 암호화 한 결과 값은 그 자체로 충분한 난수 특성을 유지할 수 있으며, 이는 개인 키 유도가 불가능하여 결과값을 예측할 수 없고, 결과 값 자체는 암호화된 결과이므로 엔트로피가 충분히 높을 것으로 기대된다. 따라서, 제 2 제어 정보로부터 획득한 nonce 값을 제 1 제어 정보의 Signed Nonce으로 포함하기 위한 기초 nonce 값으로 사용하는 것이 바람직하다. Signed Nonce는 초기 Nonce 값을 송신자 개인 키로 서명 또는 암호화 한 결과 값으로 결정 후 제 1 제어 정보에 기록하며, 초기 Nonce 값은 메시지(FSP)에 서명 또는 암호화되지 않은 상태로 기록될 수 있다. 이는, 송신측 통신 노드가 난수 생성을 별도로 해야 하는 부담을 경감시키면서도 충분한 안정성의 난수 값을 쉽게 얻을 수 있는 방식이다.
또한, 서로 다른 채널로 전달되는 제 1 제어 정보와 메시지(FSP) 각각에 대해 송신 주체 인증 증거 값을 제 1 제어 정보와 메시지(FSP) 각각에 내장하기 위한 방법이다. 반면, 송신측 통신 노드가 자체 독립적으로 난수 값을 생성하는 방법은 메시지(FSP)의 송신 주체 인증을 위한 증거 값이 별도로 제 1 제어 정보를 통해 전달된다. 송신 주체 인증 증거 값을 제 1 제어 정보와 메시지(FSP) 각각에 내장되는 경우, 제 1 제어 정보와 메시지(FSP) 간 상태 관리 불필요하므로, 수신측 통신 노드에서 제 1 제어 정보와 메시지(FSP) 각각을 검증할 때 구현이 편리할 수 있다. 이러한 특성은 모두 제 2 제어 정보가 항상 난수 특성을 유지해야 한다는 가정하에 안전하며 이 경우의 책임 의무는 서비스 제공자의 통신 노드에 부여될 수 있다.
네트워크 참여 주체들은 모두 난수 생성이 가능한 상태이므로, 선택적으로, 송신자가 직접 생성한 독립적 난수 값을 활용하여 상기 제 1 제어 정보의 Signed Nonce이 결정될 수 있다. 송신측 통신 노드는 서비스 제공자의 통신 노드가 제공하는 제 2 제어 정보는 인증을 위한 용도로 제한되고, 메시지 검증을 위한 nonce는 송수신 측의 통신 노드가 스스로 생성/사용할 수 있다. 이 경우, 메시지(FSP) 송신 주체 인증을 위한 증거 값이 제 1 제어 정보를 통해 별도로 수신측의 통신 노드에 전달되어야 하므로, 검증 시 필요한 제 1 제어 정보의 상태 관리를 유지할 필요가 있다.
도 4a는 송신측 제 1 통신 노드(200)에 의해 제공되는 nonce 값을 이용하여 제 2 제어 정보가 생성되는 예를 들어 설명하였지만, 다른 실시예에서, 도 4b와 같이 수신측 제 2 통신 노드(300)에 의해 제공되는 nonce 값을 이용하여 제 2 제어 정보가 생성될 수 있다. 도 4b의 단계들 S1 내지 S10에 대한 설명은 모순되지 않는 한 도 4a의 단계들 S1 내지 S10의 설명을 참조할 수 있다.
도 5는 본 발명의 일 실시예에 따른 협업 서비스를 위한 데이터 처리하는 순서도이다.
도 5를 참조하면, 서비스 제공자의 제 3 통신 노드(300)는 제 3 블록체인 노드(401)를 통해, 전술한 도 4a 또는 도 4b의 절차에 의해 생성한 제 2 제어 정보를 제 1 통신 노드(200) 및 제 2 통신 노드(300)의 제 2 블록체인 노드(301)에 주기적으로 전송할 수 있다(S10). 일 실시예에서, 제 3 블록체인 노드(401)는 상기 제 2 제어 정보를 제 1 블록체인 노드(201)로 전송하면, 제 1 블록체인 노드(201)가 제 2 제어 정보를 저장한 후 다시 제 2 블록체인 노드(301)로 전달할 수 있다. 선택적으로는, 제 3 블록체인 노드(401)는 상기 제 2 제어 정보를 제 2 블록체인 노드(301)로 전송하면, 제 2 블록체인 노드(301)가 제 2 제어 정보를 저장한 후 다시 제 1 블록체인 노드(201)로 전달할 수 있다.
이후, 제 1 통신 노드(200)의 제 1 클라이언트 노드(202)는 상기 제 2 제어 정보를 제 1 블록체인 노드(201)에 요청하여(S11) 제 1 블록체인 노드(201)로부터 제 2 제어 정보를 수신할 수 있다(S12). 부분 실시예에서, 제 1 클라이언트 노드(202)는 제 1 블록체인 노드(201)의 상기 제 2 제어 정보에 대한 요청 없이, 주기적으로 제 1 블록체인 노드(201)로부터 제 2 제어 정보를 수신할 수 있다(S12).
이후, 제 1 통신 노드(200)의 제 1 클라이언트 노드(202)는 제 1 씨드 생성 노드(203)에 nonce 값을 요청하여(S13), 제 1 씨드 생성 노드(203)로부터 nonce 값을 수신할 수 있다(S14). 구현에 있어서, 단계들 S11 및 S12와 단계들 S13 및 S14는 병렬적으로 수행될 수 있다.
단계들 S13 및 S14에서 생성된 nonce 값은 후술할 제 1 제어 정보(PAC)를 주기적으로 전송할 때, 제 1 통신 노드(200)가 제 2 통신 노드(300)로 전송할 데이터가 있는지 없는지에 상관없이, 항상 다른 값의 제 1 제어 정보가 공유되도록 하기 위함이다. 전술한 제 2 제어 정보(ACC)로부터 획득한 넌스(nonce) 값만 사용해서 제 1 제어 정보(PAC)를 구성하면 제 2 제어정보 구성 시 사용하는 해시 함수 특성으로 인해 동일 송신 데이터에 대해 동일한 제 1 제어 정보(PAC)가 생성될 수 있기 때문에 S13 및 S14 단계에서 생성된 nonce 값이 제 1 제어 정보를 생성하는데 이용될 수 있다.
이후, 제 1 클라이언트 노드(202)는 제 2 통신 노드로 전송할 데이터가 있는지를 확인하고(S15), 데이터의 전송 유무에 따라 제 1 제어 정보를 생성할 수 있다(S16). 생성된 제 1 제어 정보는 블록체인 네트워크를 통해 공유하기 위해서, 제 1 클라이언트 노드(202)는 제 1 블록체인 노드(201)로 생성된 제 1 제어 정보를 전달하면, 제 1 블록체인 노드(201)는 블록체인 네트워크를 통해 제 2 블록 체인 노드(301)과 제 3 블록체인 노드(401)를 포함한 참여 노드들과 상기 제 1 제어 정보를 공유할 수 있다(S17). 예컨대, 제 1 블록체인 노드(201)는 상기 제 1 제어 정보를 제 3 블록체인 노드(401)에 전송하면, 제 3 블록체인 노드(401)가 상기 제 1 제어 정보를 저장 후 제 2 블록 체인 노드(301)로 전송할 수 있다(S17). 또는 제 1 블록체인 노드(201)는 상기 제 1 제어 정보를 제 2 블록체인 노드(301)에 전송하면, 제 2 블록체인 노드(301)가 상기 제 1 제어 정보를 저장 후 제 3 블록 체인 노드(401)로 전송할 수 있다(미도시함).
상기 제 1 제어 정보는 하기 표 2와 같다.
필드 설명
Sender 송신 통신 노드의 공개 키로서, 신뢰 채널 상 등록된 것임
Signed Nonce 후술할 FSP 메시지를 통해 전달될 nonce가 sender의 개인 키로 서명 또는 암호화된 값
Timestamp 송신 통신 노드가 기록하는 시간 값. FSP 메시지의 Timestamp와 동일.
(수신 노드는 FSP 메시지 내 Timestamp를 참고하여 이 필드 값과 동일한 Timestamp를 갖는 연결된 제 1 제어 정보를 획득할 수 있음)
Value Value = H(Payload in FSP, Nonce in FSP, Nonce in ACC)
Payload in FSP: FSP 메시지의 페이로드(데이터 또는 분할된 데이터)
Nonce in FSP: FSP 메시지의 넌스(nonce) 값
Nonce in ACC: 제 2 제어정보(ACC)의 넌스(nonce) 값
수신 통신 노드가 FSP 메시지를 통해 nonce를 전달받은 경우라면, Signed Nonce의 넌스(nonce) 값은 상기 제 2 제어 정보로부터 획득한 넌스(nonce) 값이며, 송신측 통신 노드로부터 전송될 데이터가 없는 경우, 즉 데이터 전송이 없는 경우라면 Signed Nonce의 넌스(nonce) 값은 송신자가 자체 생성한 넌스(nonce)일 수도 있다. 일 실시예에서, 송신측 통신 노드가 데이터 전송이 없는 경우, 수신측에서 데이터 검증이 불필요하므로 Signed Nonce 필드는 널(null)로 설정되거나 또는 생략될 수 있다.
상기 제 1 제어 정보의 timestamp는 제 1 제어 정보의 생성 및 전송 시점을 나타내는 절대 시간 값으로써, FSP 메시지의 Timestamp와 동일할 수 있다. 상기 제 1 제어 정보의 Value은 상기 데이터 또는 상기 데이터의 세그먼트(Payload in FSP), 후술할 FSP 메시지에 포함되는 nonce 값(Nonce in FSP), 그리고 제 2 제어 정보의 nonce 값(Nonce in ACC)을 입력 값으로 하는 해시 함수의 출력 값이다.
일 실시예에서, 제 2 통신 노드로 전송할 데이터가 없는 경우, Payload in FSP은 널(null)으로 설정될 수 있다. 따라서, 상기 제 1 제어 정보는 데이터의 전송 유무에 상관없이 생성되어 주기적으로 제 2 및 제 3 통신 노드를 포함한 참여 노드들에게 전송될 수 있다. 송신측의 제 1 통신 노드(200)은 전송할 데이터가 없는 경우에도 주기적으로 제 1 제어 정보를 생성해서 신뢰 채널을 통해 참여 노드들과 공유함으로써, 블록체인 네트워크의 참여 주체들이 송신측의 데이터 교환 패턴을 확인하기 어렵게 할 수 있다.
이후, 제 2 통신 노드로 전송할 데이터가 있는 경우, 제 1 클라이언트 노드(202)는 전송할 데이터의 크기가 임계치보다 큰지 확인하여, 전송할 데이터의 크기가 임계치보다 클 시 전송할 데이터를 분할 또는 세그먼트화하고(S20), 분할 또는 세그먼트된 복수의 서브 데이터들에 대하여 각각 메시지(FSP 프로토콜 포맷 형태를 가짐)를 형성하여 전송할 수 있다(S21, S22). 반면 전송할 데이터의 크기가 임계치보다 같거나 작은 경우, 데이터의 분할 또는 세그먼트화가 수행되지 않을 수 있다. 데이터의 분할 또는 세그먼트화는 주기 내 평균 전송량을 고려한 크기 M으로 결정될 수 있다. 예컨대, ceil(N/M)= F 개의 FSP 메시지가 생성될 수 있다. 여기서, N은 데이터의 크기이며, M은 평균 전송량이다.
상기 메시지의 FSP 프로토콜 포맷 형식은 하기 표 3과 같다.
필드 설명
Sender 신뢰 채널 상 등록/공유되어 있는 송신 노드의 공개 키
PAC Timestamp FSP 생성 시점. 상기 타임스탬프 값을 이용하여 연결된 PAC을 검색
ACC Timestamp 송신 노드가 PAC 생성에 활용한 ACC의 타임스탬프.
만약, 상기 타임스탬프를 키 값으로 선택한 ACC에서 Signed ACC Value가 널(Null)이 아니면 Signed ACC Value를 사용한 것이며, 이 경우 수신 측은 Signed ACC Value를 Service Provider 공개 키로 복호화 후 ACC Value 값과 비교 검증한 뒤, 이상 없는 경우 ACC Value 활용해서 검증을 수행함
Service Provider Enabled 0: 네트워크 내 타 주체에 의해 생성된 ACC를 사용함
1: Service Provider가 공유한 ACC를 사용함
Sequence
Start Number
이번 회에 주어진 최상위 어플리케이션 송신 요청 Payload에 대해 Chunking 수행 후, 최종 전송된 Sequence Number + 1로 지정함
Sequence
End Number
이번 회에 주어진 최상위 어플리케이션 송신 요청 Payload에 대해 Chunking 수행 후, ceil(N/M)=F개 결과에 따라 Sequence Number + F로 지정함
Sequence
Number
F개 FSP 중 이번 FSP의 순번
Nonce 송신측이 데이터 전달 시 난수 값을 포함함으로써 송신측 상태 값은 전송할 데이터의 유무와 관계없이 계속 변경하게 되며, 수신측은 랜덤 값이 포함된 데이터의 MAC 검증을 수행하고, 송신측은 이 값을 각 Sequence Number 또는 1 회의 어플리케이션 송신 요청에 대해 서로 다르게 부여함
Payload Application이 정의한 포맷이며, 전달 시 표현 방식은 protocol buffer, REST, JSON RPC, 자체 정의한 wired protocol 등 무관하고, 따라서 하위 세션은 관련 RFC 규격일 수 있음. Payload에 대한 대칭 키 암호화 적용 여부는 하위 프로토콜 Session Layer에서 판단할 수 있음.
구현에 있어서, Payload은 암호화될 수 있음. 페이로드가 암호화되면 다중 노드 간 중계, 포워딩 발생 시 원본 데이터의 제공자와 키 교환 절차가 수행됨.
한편, 제 2 통신 노드(300)의 제 2 블록체인 노드(301)는 제 3 통신 노드(400)의 제 3 블록체인 노드(401) 또는 제 1 통신 노드(300)의 제 1 블록체인 노드(201)로부터 수신된 제 1 제어 정보를 수신하여(S17) 제 2 클라이언트 노드(302)로 전달할 수 있다(S18). 제 2 클라이언트 노드(302)는 제 1 클라이언트 노드(202)로부터 전송될 데이터가 있는지를 판단하여(S19) 전송될 데이터가 없는 경우 단계 S10로 이동하여 제 2 제어 정보 및 제 1 제어 정보를 수신할 수 있다. 만약 전송될 데이터가 있는 경우, 단계 S23로 진행하여 제 1 클라이언트 노드(202) 또는 제 3 클라이언트 노드(402)로부터 복수의 서브 데이터들에 대하여 각각 메시지를 수신하고, 수신된 메시지들과 제 1 제어 정보를 비교하여, 데이터의 무결성을 검증할 수 있다. 구체적으로, FSP 포맷의 메시지로부터 계산된 value 값과 제 1 제어 정보의 value 값을 비교함으로써, 데이터 무결성을 검증할 수 있다. 상기 FSP 포맷의 메시지로부터 계산된 value 값은 FSP 포맷의 메시지의 Payload, FSP 포맷의 메시지의 Nonce, 그리고 제 2 제어 정보의 nonce 값을 해시 함수에 입력함으로써 계산될 수 있다.
도 6은 본 발명의 실시예에 따른 제 1 통신 노드(200)의 동작 방법을 나타내는 순서도이다. 제 1 통신 노드(200)는 제 2 통신 노드(300)로 데이터를 전송하는 주체일 수 있다.
도 6을 참조하면, 제 1 통신 노드(200)는 S100 단계에서 신뢰 채널을 통해 서비스 제공자의 제 3 통신 노드로부터 전술한 표 1의 제 2 제어 정보(ACC)를 주기적으로 수신할 수 있다. 이때, 제 2 통신 노드(300)도 상기 신뢰 채널을 통해 서비스 제공자의 제 3 통신 노드로부터 전술한 표 1의 제 2 제어 정보(ACC)를 주기적으로 수신함으로써, 상기 제 2 제어 정보는 블록체인 네트워크의 참여 노드들에 공유될 수 있다.
이후, 제 1 통신 노드(200)는 단계 S102에서 제 2 통신 노드에 전송할 데이터를 확인할 수 있다. 상기 전송할 데이터는 애플리케이션 레벨에서 생성되는 데이터일 수 있다. 단계 S100과 단계 S102는 병렬적으로 수행될 수 있다. 다른 실시예에서, 단계 S100는 단계 S102 이후에 수행될 수 있다.
제 1 통신 노드(200)는 제 2 통신 노드에 전송할 데이터를 확인한 후, 단계 S104에서 전송할 데이터 크기 임계치보다 클 경우 단계 S106로 진행하여 데이터를 복수의 서브 데이터들(또는 세그먼트들)로 분할할 수 있다. 여기서, 상기 세그먼트의 개수는 주기 내 평균 전송량을 고려하여 결정될 수 있다. 반면, 상기 전송할 데이터 크기 임계치보다 같거나 작은 경우, 데이터를 분할 또는 세그먼트화할 필요가 없기 때문에, 단계 S108로 진행한다.
이후, 제 1 통신 노드(200)는 단계 S108에서 데이터의 인증과 무결성을 검증하기 위한 표 2의 제 1 제어 정보(PAC)를 생성할 수 있다. 예컨대, 제 1 제어 정보(PAC)는 제 2 제어 정보(ACC)의 nonce 값, S106 단계에서 결정된 FSP의 페이로드 그리고 FSP 내의 nonce 값을 입력 값으로 갖는 해시 함수에 의해 출력된 해시 값, 제 1 제어 정보의 전송 시점을 지시하는 timestamp(FSP 메시지의 전송 시점을 지시하는 timestamp와 동일할 수 있음), 제 1 통신 노드(200)의 공개 키, 그리고 표 3의 FSP 메시지 내의 nonce 값이 제 1 통신 노드(200)의 개인 키로 서명된 값으로 결정될 수 있다. 상기 전송할 데이터가 없는 경우, 상기 해시 함수의 FSP의 페이로드는 널(null) 값으로 설정될 수 있다.
이후, 제 1 통신 노드(200)는 단계 S110에서 제 2 통신 노드(300)를 포함한 적어도 하나 이상의 참여 통신 노드들과 제 1 제어 정보를 블록체인 네트워크 내에 형성된 제 1 채널을 통해 공유할 수 있다. 예컨대, 제 1 통신 노드(200)는 제 3 통신 노드(400)로 상기 제 1 제어 정보를 전송하고, 제 3 통신 노드(400)가 상기 제 1 제어 정보를 저장 후 제 2 통신 노드(300)로 전달할 수 있다. 또는 제 1 통신 노드(200)는 제 2 통신 노드(300)로 상기 제 1 제어 정보를 전송하고, 제 2 통신 노드(300)가 상기 제 1 제어 정보를 저장 후 제 3 통신 노드(300)로 전달할 수 있다.
이후, 제 1 통신 노드(200)는 단계 S112에서 비신뢰 채널을 통해 상기 데이터를 포함한 메시지를 제 2 통신 노드(300)에 전송할 수 있다. 상기 메시지는 상기 제 1 통신 노드의 공개 키, 상기 데이터 또는 상기 데이터의 세그먼트의 생성 시점을 나타내는 제 1 타임스탬프(timestamp) 값, 상기 제 2 제어 정보의 생성 시점을 나타내는 제 2 타임스탬프(timestamp) 값, 서비스 제공자에 의해 제공되는 상기 제 2 제어 정보인지에 대한 여부를 지시하는 값, 상기 데이터의 세그먼트의 전송에 대한 시퀀스 시작 번호 값, 상기 데이터의 세그먼트의 전송에 대한 시퀀스 종료 번호 값, 상기 데이터의 세그먼트의 시퀀스 번호, 상기 데이터 또는 상기 데이터의 세그먼트의 전송을 위한 난수(nonce) 값 및 상기 데이터 또는 상기 데이터의 세그먼트 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 제 2 제어 정보(ACC)를 공유하는 단계는 제 1 통신 노드(200)는 상기 참여 통신 노드들 중 서비스 제공자의 제 3 통신 노드로부터 상기 제 2 제어 정보를 수신하는 단계를 포함할 수 있다. 또는, 상기 제 2 제어 정보(ACC)를 공유하는 단계는 제 1 통신 노드(200) 자체가 상기 제 2 제어 정보를 생성하여 상기 제 2 제어 정보를 상기 참여 통신 노드들에 전송하여, 다른 참여 노드들과 상기 제 2 제어 정보를 공유할 수 있다.
상기 제 2 제어 정보는 씨드 제공자의 개인 키로 암호화된 씨드 값; 상기 씨드 값을 제공한 상기 참여 통신 노드들 중 어느 하나의 통신 노드(예; 제 1 통신 노드 또는 제 2 통신 노드)의 공개 키, 상기 씨드 값을 이용하여 생성된 제 2 난수 값 및 상기 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값 중 적어도 하나를 포함할 수 있다. 선택적으로 상기 제 2 제어 정보는 서비스 제공자의 공개 키 및 상기 서비스 제공자의 개인 키로 암호화된 상기 제 2 난수 값을 더 포함할 수 있다.
일 실시예에서, 상기 데이터의 전송 유무에 관계없이, 상기 제 1 제어 정보는 신뢰 채널을 통해 상기 제 2 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드로 주기적으로 전송됨으로써, 블록체인 네트워크 참여 노드들은 제 1 통신 노드(200)의 데이터 교환 패턴을 알 수 없게 된다. 구체적으로, 직접 통신을 하되 증거 값을 블록체인 네트워크의 신뢰 채널에 공유하게 되면, 이러한 증거 값의 공유 패턴 자체가 데이터 교환 패턴의 일부가 될 수 있다. 그러나, 주기적 또는 특정 패턴 전송 주기로로 제 1 제어 정보를 공유하면 실제로 데이터 교환의 유무를 신뢰 채널을 관찰하고 있는 송수신 노드 및 서비스 제공자의 노드 모두가 구분할 수 없게 되어 데이터 교환 패턴을 알기 어려워진다.
도 7은 본 발명의 실시예에 따른 제 2 통신 노드의 동작 방법을 나타내는 순서도이다. 제 2 통신 노드(300)는 제 1 통신 노드(300)로 데이터를 수신하는 주체일 수 있다.
도 7을 참조하면, 제 2 통신 노드(300)는 단계 S200에서 신뢰 채널을 통해 서비스 제공자의 제 3 통신 노드(400)로부터 전술한 <표 1>의 제 2 제어 정보(ACC)를 주기적으로 수신할 수 있다. 이때, 제 1 통신 노드(200)도 블록체인 네트워크 내에 형성된 신뢰 채널을 통해 서비스 제공자의 제 3 통신 노드(400)로부터 전술한 제 2 제어 정보(ACC)를 주기적으로 수신함으로써, 상기 제 2 제어 정보는 블록체인 네트워크의 참여 노드들에 공유될 수 있다.
이후, 제 2 통신 노드(300)는 제 1 통신 노드(200)를 포함한 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 신뢰 채널을 통해 공유할 수 있다. 제 2 통신 노드(300)는 제 1 통신 노드(200)로부터 상기 제 1 제어 정보를 수신 및 저장한 후 제 3 통신 노드(400)로 전달할 수 있다. 또는, 제 3 통신 노드(300)가 제 1 통신 노드(200)로부터 수신한 상기 제 1 제어 정보를 수신 및 저장한 후 제 2 통신 노드(300)로 상기 제 1 제어 정보를 전달할 수 있다.
이후, 제 2 통신 노드(300)는 S204 단계에서 제 1 통신 노드(200)가 전송할 데이터가 있는지를 확인한 후, 제 1 통신 노드(200)가 전송할 데이터가 없는 경우 단계 S200로 진행하여 주기적으로 상기 제 1 제어 정보 및 상기 제 2 제어 정보를 해당 통신 노드(200, 400)로부터 수신할 수 있다.
반면, 제 1 통신 노드(200)가 전송할 데이터가 있는 경우 단계 S206로 진행하여, 제 2 통신 노드(300)는 상기 적어도 하나 이상의 참여 통신 노드 중 어느 하나의 통신 노드(200, 400)로부터, 상기 데이터를 포함한 메시지를 비신뢰 채널을 통해 수신할 수 있다. 바람직하게, 제 2 통신 노드(300)는 제 1 통신 노드(200)와 P2P 통신을 통해 직접 상기 데이터를 포함한 메시지를 수신할 수 있다.
이후, 제 2 통신 노드(300)는 S208 단계에서 수신된 메시지들과 상기 제 1 제어 정보 및 상기 제 2 제어 정보를 이용하여, 데이터의 무결성을 검증할 수 있다. 구체적으로, FSP 포맷의 메시지로부터 계산된 값(표 3의 value)과 제 1 제어 정보의 값을 비교함으로써, 데이터 무결성을 검증할 수 있다. 상기 FSP 포맷의 메시지로부터 계산된 값은 FSP 포맷의 메시지의 Payload, FSP 포맷의 메시지의 Nonce, 그리고 제 2 제어 정보의 nonce 값을 해시 함수에 입력함으로써 계산될 수 있다.
도 8은 본 발명의 실시예에 따른 제 3 통신 노드의 동작 방법을 나타내는 순서도이다. 제 3 통신 노드(400)는 서비스 제공자일 수 있다.
도 8을 참조하면, 제 3 통신 노드(400)는 단계 S300에서 제 1 통신 노드(200) 또는 제 2 통신 노드(300)로부터 난수 생성을 위한 씨드(seed) 값을 수신할 수 있고, 단계 S302에서 상기 수신한 씨드(seed) 값을 이용하여, 데이터의 인증과 무결성을 검증하기 위한 제 2 제어 정보(ACC)를 생성할 수 있다. 이후, 제 3 통신 노드(400)는 단계 S304에서 제 1 통신 노드(200) 및 제 2 통신 노드(300)를 포함하는 복수의 참여 통신 노드들과 제 2 제어 정보를 신뢰 채널을 통해 공유할 수 있다. 예컨대, 제 3 통신 노드(400)는 제 1 통신 노드(200) 또는 제 2 통신 노드(300)로 각각 제 2 제어 정보를 상기 신뢰 채널을 통해 송신할 수 있다. 또는, 제 3 통신 노드(400)가 제 1 통신 노드(200)에 제 2 제어 정보를 전송하면, 제 1 통신 노드(200)가 제 2 제어 정보를 저장한 후 제 2 통신 노드(300)로 전달할 수 있다. 또는 제 3 통신 노드(400)가 제 2 통신 노드(200)에 제 2 제어 정보를 전송하면, 제 2 통신 노드(300)가 제 2 제어 정보를 저장한 후 제 1 통신 노드(200)로 전달할 수 있다. 다른 실시예에서, 제 1 통신 노드(200) 또는 제 2 통신 노드(300)로부터 난수 생성을 위한 씨드(seed) 값을 수신하는 단계 대신, 제 3 통신 노드(400) 자체가 난수 생성을 위한 씨드(seed) 값을 생성하여, 제 2 제어 정보를 생성할 수 있다.
일 실시예에서, 서비스 제공자인 제 3 통신 노드(400)는 자신이 발행 주체임을 명시한 제 2 제어 정보 또는 발행 주체를 명시하지 않은 비명시적 제 2 제어 정보를 신뢰 채널 상에 일정 주기마다 공유할 수 있다. 서비스 제공자가 제 2 제어 정보를 공유하는 경우, 상기 제 2 제어 정보의 무작위성을 강화하기 위해 씨드 정보 같은 초기 값은 자신이 아닌 다른 주체들(제 1 통신 노드(200) 또는 제 2 통신 노트(300))의 노드에 의해 생성 및 서명(예, 생성 주체가 해당 값을 해시(Hash) 후 개인 키로 암호화 한 값을 함께 제시하거나, 해당 값을 개인 키로 암호화 한 값만 제시할 수 있음)된 상태로 생성할 수 있으며, 이를 기반으로 제 2 제어 정보를 생성할 수 있다. 또는, 서비스 제공자가 스스로 씨드 값 결정 후 이를 이용하여 상기 제 2 제어 정보를 생성할 수도 있다.
또한, 주기적 업데이트 시 제 2 제어 정보 또는 상기 제 2 제어 정보의 생성을 위한 씨드 값 업데이트 규칙은 제 2 제어 정보의 발행 주체에 의해 결정될 수 있으며, 외부 주체가 예측할 수 없는 값들이 계속 발생하지만, 초기 제 2 제어 정보가 공유될 수 있다. 이후 연속적으로 상기 제 2 제어 정보는 블록체인 데이터 구조 내에 기록되므로, 특정 시점의 명시적 제 2 제어 정보는 최초 발행 주체를 확인 가능하며, 이후 불필요한 변화가 있었는지 확인할 수 있다. 발행 주체를 명시하지 않은 제 2 제어 정보는 최초 블록 생성 이후 블록 내 데이터들의 무결성을 확인(옵션) 후 사용할 수 있다.
이때, 최초 발행 주체(예를 들어, 서비스 제공자)가 명시적인 경우 발행 주체의 공개 키가 키 값 또는 채널 식별자가 되고 업데이트 되는 제 2 제어 정보들이 해당 키 값에 대한 value로 지정되어, 이는 블록체인 또는 블록체인 데이터를 기록하는 Key-value Store 상에 기록될 수 있다. 블록으로 생성될 때 마다 Key-value Pair가 블록 내에 하나 또는 그 이상 저장되며, 각 블록은 블록체인의 방식대로 전후 관계를 해시 값으로 연결될 수 있다. 비명시적 제 2 제어 정보의 경우, 코드 발행 주체의 공개 키를 Key 값으로 하지 않고 무작위로 발생시킨 새로운 공개키를 Key 로 사용할 수 있다. 이때의 코드 발행 주체는 향후 특정 단계에서 비명시적 제 2 제어 정보의 발행 주체임을 인증해야 하는 경우에 대비하여 앞서 생성한 새로운 공개키에 대한 개인키를 저장하고 있어야 한다. 이를 통해, 제 2 제어 정보를 활용하기 위해 이를 취득하는 복잡도는 O(1)을 유지하며, 검증 시 사용할 수 있는 유효한 코드들은 검증 측에서 확인할 수 있는 Key-value Store 내 최종 코드와 그에 앞서는 일정 개수의 것들이 될 수 있다.
본 발명에 따른 장치(또는 모듈) 또는 방법(예: 단계)의 일부 또는 전부는, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)(예: 노드의 저장부)에 저장 가능한 명령어들의 집합, 하드웨어 또는 이들의 조합으로 구현될 수 있다. 상기 명령어는, 마이크로칩과 같은 하나 이상의 프로세서를 포함하는 하드웨어에 의해 실행될 수 있으며, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다.
이상에서 설명한 본 발명이 전술한 실시예 및 첨부된 도면에 한정되지 않으며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
10: 협업 시스템
CA: 인증 센터
100: 네트워크
150: 블록체인 네트워크
200, 300, 400: 통신 노드
201, 301, 401: 블록체인 노드
202, 302, 402: 클라이언트 노드
203, 303, 403: 씨드 생성 노드
RC: 신뢰 채널
URC: 비신뢰 채널

Claims (20)

  1. 블록체인 네트워크와 상기 블록체인 네트워크보다 신뢰성이 낮은 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드로 구성된 협업 도구의 서비스 플랫폼 기반의 상기 송신측 통신 노드의 데이터 전송 방법으로서,
    상기 송신측 통신 노드가 상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하는 단계;
    상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 상기 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및
    상기 데이터가 있는 경우 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 구별되는 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  2. 블록체인 네트워크와 상기 블록체인 네트워크와 구별되는 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드 중 상기 송신측 통신 노드의 데이터 전송 방법으로서,
    상기 송신측 통신 노드가 상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하는 단계;
    상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 상기 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및
    상기 데이터가 있는 경우 상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하며,
    상기 제 1 제어 정보는
    상기 송신측 통신 노드의 공개 키;
    상기 송신측 통신 노드의 개인 키로 암호화된 제 1 넌스(nonce) 값;
    상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값; 및
    상기 데이터 또는 상기 데이터의 세그먼트, 상기 제 1 넌스 값 및 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보에 포함된 제 2 넌스 값을 입력 값으로 갖는 해시 함수의 출력 값 중 적어도 하나를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  3. 블록체인 네트워크와 상기 블록체인 네트워크와 구별되는 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드 중 상기 송신측 통신 노드의 데이터 전송 방법으로서,
    상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하는 단계;
    상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 상기 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및
    상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하며,
    상기 전송할 데이터가 없는 경우, 상기 제 1 제어 정보는,
    상기 송신측 통신 노드의 공개 키;
    상기 송신측 통신 노드가 자체 생성한 넌스(nonce) 값 또는 널(null) 값으로 설정된 제 1 넌스(nonce) 값;
    상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값; 및
    널(null) 값으로 설정된 데이터, 상기 제 1 넌스 값 그리고 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보에 포함된 제 2 넌스 값을 입력 값으로 갖는 해시 함수의 출력 값 중 적어도 하나를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  4. 제 1 항에 있어서,
    상기 수신측 통신 노드에 의해 상기 제 1 제어 정보 및 상기 메시지를 이용하여, 상기 제 1 제어 정보를 발행한 상기 송신측 통신 노드에 대하여 인증이 수행되는 송신측 통신 노드의 데이터 전송 방법.
  5. 블록체인 네트워크와 상기 블록체인 네트워크보다 신뢰성이 낮은 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드로 구성된 협업 도구의 서비스 플랫폼 기반의 상기 수신측 통신 노드의 데이터 수신 방법으로서,
    상기 수신측 통신 노드가 상기 송신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 상기 블록체인 네트워크 내에 형성된 채널을 통해 공유하는 단계;
    상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 상기 송신측 통신 노드로부터 수신하는 단계; 및
    상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증하는 수신측 통신 노드의 데이터 수신 방법.
  6. 블록체인 네트워크와 상기 블록체인 네트워크와 구별되는 다른 네트워크 상에서 데이터 전송을 위해서 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드 중 상기 송신측 통신 노드의 데이터 전송 방법으로서,
    상기 송신측 통신 노드가 상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하는 단계;
    상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 상기 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계;
    상기 참여 통신 노드들과 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보를 공유하는 단계; 및
    상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  7. 제 6 항에 있어서,
    상기 제 2 제어 정보를 공유하는 단계는, 상기 송신측 노드가,
    상기 참여 통신 노드들 중 서비스 제공자의 통신 노드로부터 상기 제 2 제어 정보를 수신하는 단계를 포함하거나,
    상기 제 2 제어 정보를 생성하여 상기 제 2 제어 정보를 상기 참여 통신 노드들에 전송하는 단계를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  8. 제 6 항에 있어서,
    상기 제 2 제어 정보는
    상기 참여 통신 노드들 중 씨드 값을 제공한 어느 하나의 통신 노드의 개인 키로 암호화된 씨드 값;
    상기 씨드 값을 제공한 어느 하나의 통신 노드의 공개 키;
    상기 씨드 값을 이용하여 생성한 제 2 넌스(nonce) 값;
    상기 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값;
    상기 참여 통신 노드들 중 서비스 제공자의 공개 키;
    상기 서비스 제공자의 공개 키로 암호화된 상기 제 2 넌스 값 중 적어도 하나를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  9. 블록체인 네트워크와 상기 블록체인 네트워크와 구별되는 다른 네트워크 상에서 데이터 전송을 위해 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드 중 상기 송신측 통신 노드의 데이터 전송 방법으로서,
    상기 송신측 통신 노드가 상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하는 단계;
    상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 상기 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및
    상기 데이터가 있는 경우 상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하며,
    상기 메시지는
    상기 송신측 통신 노드의 공개 키;
    상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값;
    상기 제 1 제어 정보의 엔트로피(entropy)에 대응하는 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값;
    상기 적어도 하나 이상의 참여 통신 노드 중 서비스 제공자에 의해 제공되는 상기 제 2 제어 정보인지에 대한 여부를 지시하는 값;
    상기 데이터의 세그먼트의 전송에 대한 시퀀스 시작 번호 값;
    상기 데이터의 세그먼트의 전송에 대한 시퀀스 종료 번호 값;
    상기 데이터의 세그먼트의 시퀀스 번호;
    상기 송신측 통신 노드에서 생성된 제 1 넌스 값 또는 상기 제 2 제어 정보의 제 2 넌스(nonce) 값; 및
    상기 데이터 또는 상기 데이터의 세그먼트 중 적어도 하나를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  10. 블록체인 네트워크와 상기 블록체인 네트워크와 구별되는 다른 네트워크 상에서 데이터 전송을 위해 서로 연결된 송신측 통신 노드, 수신측 통신 노드 및 적어도 하나 이상의 참여 노드 중 상기 송신측 통신 노드의 데이터 전송 방법으로서,
    상기 송신측 통신 노드가 상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하는 단계;
    상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 상기 블록체인 네트워크에 형성된 채널을 통해 공유하는 단계; 및
    상기 데이터가 있는 경우 상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 전송하는 단계를 포함하며,
    상기 전송할 데이터의 크기가 임계치 이상일 경우, 상기 데이터는 복수의 세그먼트로 분할되는 송신측 통신 노드의 데이터 전송 방법.
  11. 제 1 항에 있어서,
    상기 전송할 데이터가 없는 경우, 상기 송신측 통신 노드가 상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보는 널(null) 값을 포함하는 송신측 통신 노드의 데이터 전송 방법.
  12. 제 1 항에 있어서,
    상기 제 1 제어 정보는
    상기 송신측 통신 노드의 공개 키;
    상기 송신측 통신 노드의 개인 키로 암호화된 제 1 넌스(nonce) 값;
    상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값; 및
    상기 데이터 또는 상기 데이터의 세그먼트, 상기 제 1 넌스 값 및 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보에 포함된 제 2 넌스 값을 입력 값으로 갖는 해시 함수의 출력 값 중 적어도 하나를 포함하는 송신측 통신 노드의 데이터 전송 방법.
  13. 제 1 항에 있어서,
    상기 제 1 제어 정보는 상기 블록체인 네트워크에 형성된 채널을 통해 상기 수신측 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드로 주기적 또는 특정 전송 패턴으로 전송되는 송신측 통신 노드의 데이터 전송 방법.
  14. 블록체인 네트워크와 상기 블록체인 네트워크보다 신뢰성이 낮은 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 제 1 통신 노드, 제 2 통신 노드 및 적어도 하나 이상의 참여 노드로 구성된 협업 도구의 서비스 플랫폼 기반의 상기 제 1 통신 노드로서, 상기 제 1 통신 노드는,
    메모리; 및
    적어도 하나의 프로세서를 포함하며,
    상기 프로세서는,
    상기 전송할 데이터의 인증 및 무결성을 검증하기 위한 정보를 포함하는 제 1 제어 정보를 생성하고,
    상기 제 2 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드들과 상기 제 1 제어 정보를 블록체인 네트워크에 형성된 채널을 통해 공유하고,
    상기 데이터가 있는 경우 상기 다른 네트워크에 형성된 채널을 통해 전송하도록 구성된 제 1 통신 노드.
  15. 블록체인 네트워크와 상기 블록체인 네트워크보다 신뢰성이 낮은 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 제 1 통신 노드, 제 2 통신 노드 및 적어도 하나 이상의 참여 노드로 구성된 협업 도구의 서비스 플랫폼 기반의 상기 제 2 통신 노드로서, 상기 제 2 통신 노드는,
    메모리; 및
    적어도 하나의 프로세서를 포함하며,
    상기 프로세서는,
    상기 제 1 통신 노드를 포함한 상기 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 상기 블록체인 네트워크 내에 형성된 채널을 통해 공유하고,
    상기 데이터를 포함한 메시지를 상기 다른 네트워크에 형성된 채널을 통해 상기 제 1 통신 노드로부터 수신하고,
    상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증하도록 구성된 제 2 통신 노드.
  16. 블록체인 네트워크와 상기 블록체인 네트워크보다 신뢰성이 낮은 다른 네트워크 상에서 데이터의 전송을 위해 서로 연결된 제 1 통신 노드, 제 2 통신 노드 및 적어도 하나 이상의 참여 노드로 구성된 협업 도구의 서비스 플랫폼 기반의 제 3 통신 노드로서, 상기 제 3 통신 노드는
    메모리; 및
    적어도 하나의 프로세서를 포함하며,
    상기 프로세서는,
    상기 제 1 통신 노드 또는 상기 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하고,
    상기 수신한 씨드(seed) 값을 이용하여, 데이터 인증과 무결성을 검증하기 위한 제 2 제어 정보를 생성하고,
    상기 제 1 통신 노드 및 상기 제 2 통신 노드를 포함하는 복수의 참여 통신 노드들과 제 2 제어 정보를 상기 블록체인 네트워크 내에 형성된 채널을 통해 공유하도록 구성된 제 3 통신 노드.
  17. 전송할 데이터를 확인하고, 상기 데이터의 인증 및 무결성을 검증하기 위한 제 1 제어 정보를 생성하고, 제 1 제어 정보를 블록체인 네트워크에 형성된 채널을 통해 공유하고, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 전송하는 제 1 통신 노드;
    상기 제 1 통신 노드를 포함한 적어도 하나 이상의 참여 통신 노드와 데이터의 인증과 무결성을 검증하기 위한 제 1 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 수신하고, 상기 적어도 하나 이상의 참여 통신 노드 중 어느 하나의 통신 노드로부터, 상기 데이터를 포함한 메시지를 상기 블록체인 네트워크와 다른 네트워크에 형성된 채널을 통해 상기 제 1 통신 노드로부터 수신하고, 상기 제 1 제어 정보를 이용하여, 상기 데이터에 대하여 무결성을 검증하는 제 2 통신 노드; 및
    상기 제 1 통신 노드 또는 상기 제 2 통신 노드로부터 난수 생성을 위한 씨드(seed) 값을 수신하고, 상기 수신한 씨드(seed) 값을 이용하여, 상기 제 1 제어 정보에 대응하는 제 2 제어 정보를 생성하고, 상기 제 1 통신 노드 및 상기 제 2 통신 노드를 포함하는 복수의 참여 통신 노드들과 상기 제 2 제어 정보를 블록체인 네트워크 내에 형성된 채널을 통해 공유하는 제 3 통신 노드를 포함하는 협업 시스템.
  18. 제 17 항에 있어서,
    상기 제 1 제어 정보는
    상기 제 1 통신 노드의 공개 키;
    상기 제 1 통신 노드의 개인 키로 암호화된 제 1 넌스(nonce) 값;
    상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값; 및
    상기 데이터 또는 상기 데이터의 세그먼트, 상기 제 1 넌스 값 및 상기 제 1 제어 정보의 엔트로피(entropy)를 높이기 위한 제 2 제어 정보에 포함된 제 2 넌스 값을 입력 값으로 하는 해시 함수의 출력 값 중 적어도 하나를 포함하는 협업 시스템.
  19. 제 17 항에 있어서,
    상기 제 2 제어 정보는
    상기 씨드 값을 제공한 상기 참여 통신 노드들 중 어느 하나의 개인 키로 암호화된 씨드 값;
    상기 씨드 값을 제공한 상기 참여 통신 노드들 중 어느 하나의 통신 노드의 공개 키;
    상기 씨드 값을 이용하여 생성한 제 2 넌스(nonce) 값;
    상기 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값;
    상기 제 3 통신 노드의 공개 키;
    상기 제 3 통신 노드의 공개 키로 암호화된 상기 제 2 넌스 값 중 적어도 하나를 포함하는 협업 시스템.
  20. 제 17 항에 있어서,
    상기 메시지는
    상기 제 1 통신 노드의 공개 키;
    상기 제 1 제어 정보를 위한 제 1 타임스탬프(timestamp) 값;
    상기 제 1 제어 정보의 엔트로피(entropy)에 대응하는 제 2 제어 정보의 전송을 위한 제 2 타임스탬프(timestamp) 값;
    상기 제 3 통신 노드에 의해 제공되는 상기 제 2 제어 정보인지에 대한 여부를 지시하는 값;
    상기 데이터의 세그먼트의 전송에 대한 시퀀스 시작 번호 값;
    상기 데이터의 세그먼트의 전송에 대한 시퀀스 종료 번호 값;
    상기 데이터의 세그먼트의 시퀀스 번호;
    상기 제 1 통신 노드에서 생성된 제 1 넌스 값 또는 상기 제 2 제어 정보의 제 2 넌스(nonce) 값; 및
    상기 데이터 또는 상기 데이터의 세그먼트 중 적어도 하나를 포함하는 협업 시스템.
KR1020200005502A 2020-01-15 2020-01-15 통신 노드, 이의 동작 방법 및 협업 시스템 KR102298716B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200005502A KR102298716B1 (ko) 2020-01-15 2020-01-15 통신 노드, 이의 동작 방법 및 협업 시스템
US17/149,865 US11563575B2 (en) 2020-01-15 2021-01-15 Communication node, method of operating thereof and collaborative system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200005502A KR102298716B1 (ko) 2020-01-15 2020-01-15 통신 노드, 이의 동작 방법 및 협업 시스템

Publications (2)

Publication Number Publication Date
KR20210092028A KR20210092028A (ko) 2021-07-23
KR102298716B1 true KR102298716B1 (ko) 2021-09-06

Family

ID=77155419

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200005502A KR102298716B1 (ko) 2020-01-15 2020-01-15 통신 노드, 이의 동작 방법 및 협업 시스템

Country Status (2)

Country Link
US (1) US11563575B2 (ko)
KR (1) KR102298716B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11956368B2 (en) * 2021-12-17 2024-04-09 Advanced Micro Devices, Inc. Enhanced method for a useful blockchain consensus
CN114598496B (zh) * 2022-01-24 2024-02-20 华数云科技有限公司 一种基于HyperLedger Fabric系统链码的联盟链监管系统与方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8537772B2 (en) * 2009-07-02 2013-09-17 Qualcomm Incorporated Transmitter quieting during spectrum sensing
US20150372813A1 (en) * 2014-06-23 2015-12-24 Entersekt, LLC System and method for generating a random number
CA2981586A1 (en) * 2015-04-05 2016-10-13 Donald R. Wilson, Jr. Digital asset intermediary electronic settlement platform
EP3438902B1 (en) * 2015-12-14 2021-04-28 Coinplug, Inc System for issuing public certificate on basis of block chain, and method for issuing public certificate on basis of block chain by using same
CN108781161B (zh) * 2016-02-23 2021-08-20 区块链控股有限公司 用于控制和分发数字内容的区块链实现的方法
KR20190016767A (ko) * 2017-08-09 2019-02-19 삼성전자주식회사 무선 통신 시스템에서 pdsch를 전송하는 방법 및 장치
US11049128B1 (en) * 2018-02-07 2021-06-29 Worldpay, Llc Decentralized computer systems and methods for using a debit network as an intermediary between distributed ledgers
KR102054581B1 (ko) * 2018-03-30 2019-12-12 주식회사 네이블커뮤니케이션즈 블록 체인을 이용한 발신자 확인 방법, 장치 및 시스템
CN109783464B (zh) * 2018-12-21 2022-11-04 昆明理工大学 一种基于Spark平台的频繁项集挖掘方法
US20200242600A1 (en) * 2019-01-30 2020-07-30 Bank Of America Corporation System for leveraged collaborative pre-verification and authentication for secure real-time resource distribution
US11233658B2 (en) * 2019-08-14 2022-01-25 OX Labs Inc. Digital transaction signing for multiple client devices using secured encrypted private keys
US20210058353A1 (en) * 2019-08-23 2021-02-25 Capital One Services, Llc System for Distributed Messages Via Smart Contracts

Also Published As

Publication number Publication date
US20210258152A1 (en) 2021-08-19
US11563575B2 (en) 2023-01-24
KR20210092028A (ko) 2021-07-23

Similar Documents

Publication Publication Date Title
CN110933108B (zh) 基于区块链网络的数据处理方法、装置、电子设备及存储介质
CN110147994B (zh) 一种基于同态加密的区块链的即时执行方法
US9628276B2 (en) Discovery of secure network enclaves
JP4955181B2 (ja) 安全なコラボレーティブ・トランザクションを管理する方法及び装置
KR101498323B1 (ko) 컴퓨터 클러스터 시스템들내 통신의 보안
KR20200034728A (ko) 복수의 스토리지 노드를 통해 대규모 블록체인의 안전한 저장을 가능하게 하는 컴퓨터 구현 시스템 및 방법
US11044082B2 (en) Authenticating secure channel establishment messages based on shared-secret
JP2023500259A (ja) ブロックチェーントランザクションを使用した通信プロトコル
WO2019178942A1 (zh) 一种进行ssl握手的方法和系统
US20190243980A1 (en) Secure client-server communication
JP2019083447A (ja) データ送受信システム及びデータ送受信方法
AU2018340671A1 (en) Access to secured information
Karbasi et al. A post-quantum end-to-end encryption over smart contract-based blockchain for defeating man-in-the-middle and interception attacks
KR102298716B1 (ko) 통신 노드, 이의 동작 방법 및 협업 시스템
US20240113885A1 (en) Hub-based token generation and endpoint selection for secure channel establishment
US20190305940A1 (en) Group shareable credentials
JP2023500258A (ja) ブロックチェーントランザクションを使用する要求および応答プロトコル
CN115361147A (zh) 设备注册方法及装置、计算机设备、存储介质
CN112350920A (zh) 基于区块链的即时通讯系统
US20230421540A1 (en) Systems and methods for generating secure, encrypted communications using multi-party computations in order to perform blockchain operations in decentralized applications
CN108234436A (zh) 一种基于OpenStack 对象存储的加密方法和系统
Wen et al. Enhancing secure multi-group data sharing through integration of IPFS and hyperledger fabric
Tsouloupas Breaking Cryptography in the Wild: The Loose Ends of the Wire
Konstantinos Himitsu Project The Beginning: Initial Architecture and Multiparty Support
CN117675383A (zh) 针对网络化协同设计的数据传输架构及数据传输方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant