KR102544628B1 - 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법 - Google Patents

블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법 Download PDF

Info

Publication number
KR102544628B1
KR102544628B1 KR1020190027144A KR20190027144A KR102544628B1 KR 102544628 B1 KR102544628 B1 KR 102544628B1 KR 1020190027144 A KR1020190027144 A KR 1020190027144A KR 20190027144 A KR20190027144 A KR 20190027144A KR 102544628 B1 KR102544628 B1 KR 102544628B1
Authority
KR
South Korea
Prior art keywords
data
block
blockchain
data sharing
bloom filters
Prior art date
Application number
KR1020190027144A
Other languages
English (en)
Other versions
KR20200107662A (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 KR1020190027144A priority Critical patent/KR102544628B1/ko
Priority to US16/811,051 priority patent/US11403284B2/en
Publication of KR20200107662A publication Critical patent/KR20200107662A/ko
Application granted granted Critical
Publication of KR102544628B1 publication Critical patent/KR102544628B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

본 발명에 따른 블록체인 기반의 분산 데이터 공유 환경에서 블룸 필터 기반의 검색 인덱스를 제공하는 방법은, 데이터 생성 장치가, 공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 계산한 해시값을 기반으로 상기 검색 인덱스로 사용되는 블룸 필터들(Bloom filters)들을 생성하는 단계; 블록 채굴 서버가, 상기 데이터 생성 장치로부터 수신한 상기 데이터 및 상기 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록체인에 추가하기 위해, 상기 새로운 블록에 대해 작업 증명(Proof of Work)을 수행하는 단계; 및 데이터 배포 서버가, 상기 블록체인에 추가된 상기 새로운 블록을 포함하도록 구성된 블록체인 데이터를 배포하는 단계;를 포함한다.

Description

블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법{SYSTEM FOR A DATA SHARING PLATFORM IN A BLOCK CHAIN BASED DISTRIBUTED DATA SHARING ENVIRONMENT, METHOD FOR SEARCHING DATA INDEX IN THE SYSTEM AND METHOD FOR PROVIDING SEARTCH INDEX IN THE SYSTEM}
본 발명은 중앙 신뢰기관이 없는 블록체인 기반의 분산 데이터 공유 환경에서 개별 사용자가 원하는 데이터를 효율적으로 검색하기 위한 시스템 및 방법에 관한 것이다.
최근 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼에 대한 관심이 커지고 있다. 블록체인 기반의 데이터 공유 플랫폼은 특정 기업의 데이터 독점을 방지하고, 사용자 소유 개인 데이터의 권리를 보장할 수 있다.
그런데 블록체인 기반의 데이터 공유 플랫폼의 데이터 활용 과정에서, 각 사용자는 자신이 원하는 특정 데이터를 검색하기 어렵다는 문제가 존재한다. 기존의 데이터베이스 시스템에서는 데이터베이스 관리자가 데이터베이스 테이블에 대한 검색 인덱스를 구성하여 제공하기 때문에, 사용자가 데이터베이스 관리자에 의해 제공된 검색 인덱스를 기반으로 자신(사용자)이 요구하는 데이터를 효율적으로 검색할 수 있지만, 블록체인 기반의 분산 데이터 공유 환경에서는 검색 인덱스를 구성하여 제공하는 별도의 노드가 존재하지 않기 때문에, 검색 인덱스가 제공되지 않는다.
개별 참여자(또는 특정 노드)가 검색 인덱스를 자발적으로 구성하여 제공하는 경우, 개별 참여자(또는 특정 노드)가 자신에게 유리한 데이터에 대한 검색 인덱스만을 제공하고 자신에게 불리한 데이터에 대한 검색 인덱스를 검색 인덱스의 구성에서 배제하는 등의 악의적 행동에 대한 제어가 불가능하기 때문에, 개별 참여자(또는 특정 노드)가 구성한 검색 인덱스에 대한 신뢰성을 보장할 수 없다.
본 발명은 효율적인 데이터 검색을 위한 검색 인덱스를 제공하고, 동시에 상기 검색 인덱스의 무결성을 보장하는 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템 및 상기 시스템에서 블룸 필터 기반의 검색 인덱스를 제공하는 방법을 제공하는 데 있다.
상술한 목적을 달성하기 위한 본 발명의 일면에 따른 블록체인 기반의 분산 데이터 공유 환경에서 블룸 필터 기반의 검색 인덱스를 제공하는 방법은, 데이터 생성 장치가, 공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 계산한 해시값을 기반으로 상기 검색 인덱스로 사용되는 블룸 필터들(Bloom filters)을 생성하는 단계; 블록 채굴 서버가, 상기 데이터 생성 장치로부터 수신한 상기 데이터 및 상기 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록체인에 추가하기 위해, 상기 새로운 블록에 대해 작업 증명(Proof of Work)을 수행하는 단계; 및 데이터 배포 서버가, 상기 블록체인에 추가된 상기 새로운 블록을 포함하도록 구성된 블록체인 데이터를 배포하는 단계;를 포함한다.
본 발명의 다른 일면에 따른 블록체인 기반의 분산 데이터 공유 환경에서 데이터 검색 방법은, 데이터 생성 장치가, 공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 검색 인덱스로 사용되는 블룸 필터들(Bloom filters)을 생성하는 단계; 블록 채굴 서버가, 상기 데이터 생성 장치에서 생성한 상기 블룸 필터들을 기반으로 블록 헤더를 구성하고, 상기 블록 헤더를 기반으로 작업 증명(Proof of Work)을 수행하여, 상기 블록 헤더를 포함하는 새로운 블록을 생성하는 단계; 데이터 배포 서버가, 상기 블록 채굴 서버로부터 상기 새로운 블록을 포함하도록 구성된 블록체인 데이터를 수신하여 배포하는 단계; 및 사용자 장치가, 상기 블록체인 데이터에서 특정 키워드를 포함하는 데이터를 검색하는 단계를 포함한다.
본 발명의 다른 일면에 따른 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템은, 공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 계산한 해시 값을 기반으로 검색 인덱스로 사용되는 블룸 필터들(Bloom filters)을 생성하는 데이터 생성 장치; 상기 데이터 생성 장치로부터 수신한 상기 데이터 및 상기 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록체인에 추가하기 위해, 상기 새로운 블록에 대해 작업 증명(Proof of Work)을 수행하는 블록 채굴 서버; 및 상기 블록체인에 추가된 상기 새로운 블록을 포함하도록 구성된 블록체인 데이터를 배포하는 데이터 배포 서버를 포함한다.
본 발명에 따르면, 블록체인 기반의 분산 데이터 공유 환경에서 작업 증명 기반(Proof of Work, PoW)의 합의 알고리즘을 사용하여 신뢰성(무결성)이 보장된 검색 인덱스를 포함하도록 구성된 블록을 생성함으로써, 중앙 신뢰 기관이 존재하지 않는 블록체인 기반의 분산 데이터 공유 환경에서 효율적인 데이터 검색을 위한 검색 인덱스를 제공할 수 있을 뿐 아니라 제공된 검색 인덱스의 신뢰성(무결성)을 보장할 수 있다.
도 1은 본 발명의 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템을 나타내는 블록도.
도 2는 도 1에 도시한 데이터 생성 장치의 내부구성을 개략적으로 나타내는 블록도.
도 3은 도 1에 도시한 블록 채굴 서버의 내부구성을 개략적으로 나타내는 블록도.
도 4는 본 발명의 실시 예에 따른 블록 헤더 구조를 나타내는 도면.
도 5는 도 1에 도시한 블록 배포 서버의 내부구성을 개략적으로 나타내는 블록도.
도 6은 도 1에 도시한 사용자 장치의 내부구성을 개략적으로 나타내는 블록도.
도 7은 본 발명의 실시 예에 따른 블록체인 기반의 분산 데이터 공유 환경에서 블룸 필터 형태의 검색 인덱스를 제공하는 방법을 설명하기 위한 흐름도.
도 8은 도 7에 도시한 단계 S710의 상세 흐름도.
도 9는 도 8에 도시한 단계 S840의 상세 흐름도.
도 10은 도 7에 도시한 단계 S720의 상세 흐름도.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서 '포함하다' 또는 '가지다' 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템을 나타내는 블록도이다.
도 1을 참조하면, 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템은 데이터 생성 장치(100), 블록 채굴 서버(200), 블록 배포 서버(300) 및 사용자 장치(400)를 포함할 수 있다.
데이터 생성 장치(100)는 자신(100) 또는 데이터 제공자의 식별자(ID), 본 발명에 따른 데이터 공유 플랫폼을 통해 공유할 데이터(D) 및 블룸 필터(Bloom filter) 형태의 검색 인덱스를 포함하도록 구성된 데이터 트랜잭션(또는 블록체인 트랙잭션)을 생성한다.
블록 채굴 서버(200)는 데이터 생성 장치(100)로부터 데이터 트랜잭션을 상시 수집하고, 수집한 데이터 트랜잭션에 포함된 상기 검색 인덱스에 대응하는 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록체인(Block Chain)에 추가하기 위한 작업 증명(Proof of Work, PoW)을 수행한다. 블록체인은 블록의 집합체일 수 있다. 즉, 블록은 블록체인(Block Chain)의 원소로서, 예를 들면, 다수의 거래 정보의 묶음을 의미할 수 있다. 이 경우, 블록체인은 거대한 거래 정보의 묶음을 의미할 수 있다. 블록은 블록 헤더(Block Header), 데이터(D), 기타 정보를 포함하도록 구성될 수 있다. 블록 헤더는 블록 채굴 서버(200)가 새로운 블록을 생성하기 이전에 생성한 블록(이하, 이전 블록)의 해시값, 새로운 블록에 포함시킬 데이터 트랜잭션으로부터 구성된 머클 트리(Merkle tree) 정보, 상기 작업 증명에 따라 계산된 논스(nonce) 값을 포함하고, 추가로, 상기 검색 인덱스에 대응하는 블룸 필터들로부터 구성된 블룸 필터 트리 정보를 더 포함할 수 있다.
블록 배포 서버(300)는 블록 채굴 서버(200)에 의해, 블록체인에 추가된 새로운 블록을 포함하도록 구성된 블록체인 데이터를 모든 노드에게 배포(전파)한다.
사용자 장치(400)는 상기 블록체인 데이터에서 특정 키워드를 포함하는 데이터를 검색한다.
도 2는 도 1에 도시한 데이터 생성 장치의 내부구성을 개략적으로 나타내는 블록도이다.
도 2를 참조하면, 데이터 생성 장치(100)는 데이터 제공자가 운영하는 컴퓨팅 장치로서, 인터페이스(110), 프로세서(120), 메모리(130) 및 통신부(140)를 포함할 수 있다.
인터페이스(110)는 데이터 제공자의 입력 또는 명령을 프로세서(120)로 전달하는 입력 장치일 수 있다.
메모리(120)는 저장 매체로서, 블룸 필터의 생성하기 위한 해시 함수 및 블룸 필터 생성 함수를 구현하는 알고리즘일 수 있다. 메모리(120)는 비휘발성 메모리 및 휘발성 메모리를 포함할 수 있다. 여기서, 해시 함수(hash function) 및 블룸 필터 생성 함수는 본 발명에 따른 데이터 공유 플랫폼에서 정의하는 함수일 수 있다.
프로세서(130)는 인터페이스(110), 메모리(130) 및 통신부(140)를 제어하는 구성으로, 중앙 처리 장치(CPU), 마이크로프로세서(Microprocessor)로 불릴 수 있다. 프로세서(130)는 인터페이스(110)를 통해 전달된 사용자 명령을 해석하고, 그 해석 결과에 따라 메모리(120)에 저장된 알고리즘을 실행한다. 프로세서(130)는 알고리즘을 실행하여, 데이터 제공자의 식별자(ID), 본 발명에 따른 데이터 공유 플랫폼을 통해 공유할 데이터(D) 및 블룸 필터(Bloom filter) 형태의 검색 인덱스를 포함하도록 데이터 트랜잭션(또는 블록 체인 트랙잭션)을 생성한다.
통신부(140)는 데이터 생성 장치(100)와 블록 채굴 서버(200) 간의 통신 채널(150)을 구성하는 것으로, 통신 채널은 유선 통신 채널 및/또는 무선 통신 채널을 포함한다. 통신부(140)는 유무선 통신 채널을 통해 프로세서(130)에 의해 생성된 데이터 트랜잭션(또는 블록 체인 트랙잭션)을 블록 채굴 서버(200)로 전송한다.
프로세서(130)는 인터페이스(110)를 통해 전달된 데이터 제공자의 입력 또는 명령에 따라, 데이터 제공자가 공유하고자 하는 데이터(D)를 선택하고, 선택된 데이터(D)를 검색하기 위한 키워드 집합 {
Figure 112019024266082-pat00001
,
Figure 112019024266082-pat00002
,
Figure 112019024266082-pat00003
Figure 112019024266082-pat00004
}을 결정한다. 선택된 데이터(D)와 결정된 키워드 집합 {
Figure 112019024266082-pat00005
,
Figure 112019024266082-pat00006
,
Figure 112019024266082-pat00007
Figure 112019024266082-pat00008
}은 다음 처리 과정을 위해, 프로세서(130)의 제어에 따라, 메모리(120)에 일시적으로 저장될 수 있다.
프로세서(130)는 메모리(120)에 저장된 해시 함수를 호출하고, 상기 결정된 키워드 집합 {
Figure 112019024266082-pat00009
,
Figure 112019024266082-pat00010
,
Figure 112019024266082-pat00011
Figure 112019024266082-pat00012
}에 상기 호출한 해시 함수를 적용하여 계산한 해시 값을 기반으로 검색 인덱스에 대응하는 블룸 필터들을 생성한다.
해시 함수는 d개의 해시 함수들 h1, h2, …, hd로 정의될 수 있다. d개의 해시 함수들 각각은 임의의 길이(비트 길이)를 갖는 입력(키워드 K)에 대해 1~m 사이의 정수값을 해시 값 h(K)으로서 출력할 수 있다. 블룸 필터들 각각은 m 비트 크기로 이루어진 비트 배열로 정의 될 수 있다.
키워드 집합 {
Figure 112019024266082-pat00013
,
Figure 112019024266082-pat00014
,
Figure 112019024266082-pat00015
Figure 112019024266082-pat00016
}에 대한 m 비트 크기의 블룸 필터의 생성과정은 다음과 같다.
먼저, 메모리(120)에 저장된 블룸 필터 생성함수를 'BF()'라 할 때, 프로세서(130)가 메모리(120)에 저장된 블룸 필터 생성함수 BF()를 호출하고, 데이터 제공자에 의해 결정된 키워드 집합 {
Figure 112019024266082-pat00017
,
Figure 112019024266082-pat00018
,
Figure 112019024266082-pat00019
Figure 112019024266082-pat00020
}에 상기 호출한 블룸 필터 생성함수 BF()를 적용하여 블룸 필터 F를 최초로 생성한다. 이때, 최초로 생성된 블룸 필터 F는 아래 식으로 표현할 수 있다.
F= BF({
Figure 112019024266082-pat00021
,
Figure 112019024266082-pat00022
,
Figure 112019024266082-pat00023
Figure 112019024266082-pat00024
})
이어, 프로세서(130)가 최초로 생성한 블룸 필터 F= BF({
Figure 112019024266082-pat00025
,
Figure 112019024266082-pat00026
,
Figure 112019024266082-pat00027
Figure 112019024266082-pat00028
})를 구성하는 모든 비트들을 비트값(이진값)을 '0'으로 초기화한다.
이어, 프로세서(130)가 메모리(120)에 저장된 d개의 해시 함수들 h1(), h2(), …, hd()을 호출하고, 하나의 키워드 K1에 상기 호출한 d개의 해시 함수들 h1(), h2(), …, hd()을 적용하여, d개의 해시값들(또는 키(key)값들) h1(K1), h2(K1), …, hd(K1)을 계산한 후, F의 h1(K1) 번째 bit 값을 0에서 1로 수정한다. 즉, 프로세서(130)가 블룸 필터 F= BF(
Figure 112019024266082-pat00029
)를 구성하는 모든 비트들 중에서 d개의 해시값들 h1(K1), h2(K1), …, hd(K1)에 의해 정의되는 d개의 비트 위치들에 존재하는 비트들의 비트값을 모두 '0'에서 '1'로 셋팅한다. 이러한 과정을 나머지 키워드 K2, …, Kn 에 대해 순차적으로 수행하여 블룸 필터들 FD= BF({
Figure 112019024266082-pat00030
,
Figure 112019024266082-pat00031
,
Figure 112019024266082-pat00032
Figure 112019024266082-pat00033
})을 생성한다.
이와 같이, 프로세서(130)가 d개의 해시 함수들 h1, h2, …, hd와 블룸 필터 생성함수 BF()를 이용하여 블룸 필터들 FD을 생성하면(또는 계산하면), 데이터 제공자의 식별자(ID), 공유 대상에 해당하는 데이터(D) 및 블룸 필터 FD를 포함하도록 구성된 데이터 트랜잭션(또는 블록체인 트랜잭션) <ID, D, FD>을 생성한다.
생성된 데이터 트랜잭션 <ID, D, FD>은, 프로세서(130)의 제어에 따라, 통신부(140)를 통해 블록 채굴 서버(200)로 전송된다.
도 3은 도 1에 도시한 블록 채굴 서버의 내부구성을 개략적으로 나타내는 블록도이고, 도 4는 본 발명의 실시 예에 따른 블록 헤더 구조를 나타내는 도면이다.
도 3을 참조하면, 블록 채굴 서버(200)는 데이터 생성 장치(100)로부터 데이터 트랜잭션을 상시 수집하고, 수집한 데이터 트랜잭션에 포함된 상기 검색 인덱스에 대응하는 블룸 필터들 FD과 공유 대상에 해당하는 데이터 D를 기반으로 새로운 블록을 생성하고, 작업 증명(PoW, Proof of Work) 기반의 합의 알고리즘(consensus algorism)을 실행하여, 상기 새로운 블록을 상기 블록체인(Block Chain)에 추가하기 위한 작업 증명(Proof of Work, PoW)을 수행한다.
이러한 블록 채굴 서버(200)는 통신 기능을 갖는 컴퓨팅 장치로서, 통신부(210), 인터페이스(220), 메모리(230) 및 프로세서(240)를 포함할 수 있다.
통신부(210)는 데이터 생성 장치(100)에 구비된 통신부(140)와 통신 채널(150)을 구성하고, 또한, 블록 배포 서버에 구비된 통신부(310)와 통신 채널(250)을 구성하는 것으로, 통신 채널은 유선 및/또는 무선 통신 채널을 포함한다. 통신부(210)는 통신 채널(도 1의 150)을 통해 데이터 생성 장치(100)로부터 데이터 트랜잭션을 상시 수신한다.
인터페이스(220)는 블록 채굴 서버(200)의 운영자의 입력 또는 명령을 프로세서(230)로 전달하는 입력 장치일 수 있다.
메모리(230)는 저장매체로서, 휘발성 메모리 및 비휘발성 메모리를 포함한다. 메모리(230)는 통신부(210)를 통해 수신된 데이터 트랜잭션을 저장한다. 또한, 메모리(230)는 블록 및 블록 체인을 생성하기 위한 다양한 알고리즘을 저장할 수 있다. 알고리즘은, 예를 들면, 상기 수신된 데이터 트랜잭션으로부터 머클 트리(Merkle tree) 구조를 생성하기 위한 알고리즘, 상기 수신된 데이터 트랜잭션에 포함된 블룸 필터로부터 블룸 필터 트리 구조를 생성하기 위한 알고리즘, 상기 프로세서(240)에 의해 생성되는 블록의 블록 헤더에 구성되는 논스(nonce)값을 계산하기 위해 사용되는 암호학적 해시 함수를 구현한 알고리즘, 작업 증명(PoW, Proof of Work) 기반의 합의 알고리즘(consensus algorism) 등을 포함할 수 있다.
프로세서(240)는 통신부(210), 인터페이스(220) 및 메모리(230)의 동작을 제어하는 구성으로, 중앙 처리 장치(CPU) 또는 마이크로프로세서로 불릴 수 있다.
프로세서(240)는 인터페이스(220)를 통해 전달된 운영자 명령을 해석하고, 그 해석 결과에 따라 메모리(230)에 저장된 알고리즘을 실행하여, 새로운 블록 및 블록 체인을 생성한다.
하나의 블록(이전 블록)이 완성되어 공개되면, 프로세서(240)는 새로운 블록(현재 블록)에 대한 생성 프로세스를 진행한다. 이때, 프로세서(240)는 통신부를(210) 통해 수집한 트랜잭션 중에서 상기 이전 블록에 포함되지 않은 트랜잭션을 이용하여 새로운 블록을 생성한다.
프로세서(240)는, 새로운 블록을 생성하기 위해, 새로운 블록에 포함되는 정보들 중에서 블록 헤더를 구성하는 프로세스를 진행한다.
본 발명의 실시 예에 따른 블록 헤더의 구조가 도 4에 도시된다.
도 4를 참조하면, 새로운 블록(60)의 블록 헤더(62)는 적어도 4개의 필드들(62A, 62B, 62C, 62D)을 포함하도록 구성될 수 있다. 제1 필드(62A)에는 이전 블록의 해시값이 기록되고, 제2 필드(62B)에는 데이터 트랜잭션으로부터 구성된 머클 트리 구조(64)의 루트값(머클 트리 구조에서 루트 노드를 나타내는 비트열)이 기록되고, 제3 필드(62C)에는 블룸 필터들로부터 구성된 블룸 필터 트리 구조(66)의 루트값(블룸 필터 트리 구조에서 루트 노드를 나타내는 비트열)이 기록된다. 그리고, 제4 필드(62D)에는 새로운 블록(60)을 블록체인에 추가하기 위한 작업 증명에 따라 계산된 논스(nonce)값이 기록될 수 있다.
블록 헤더(62)를 구성하기 위해, 프로세서(240)는, 메모리(230)에 저장된 머클 트리(Merkle tree) 구조의 생성과 관련된 알고리즘(이하, 머클 트리 생성 알고리즘)을 호출한다. 프로세서(240)는 호출한 머클 트리 생성 알고리즘을 실행하여, 데이터 생성 장치(100)로부터 수집한 트랙잭션 중에서 이전 블록에 포함되지 않은 트랙잭션을 루트 노드(root node: 41), 리프 노드(leaf node: 45A, 45A', 45B, 45B') 및 상기 루트 노드(41)와 상기 리프 노드(45A, 45A', 45B, 45B') 사이의 중간 노드(43A, 43B)에 각각 할당하여 머클 트리(Merkle tree) 구조(64)를 구성하는 프로세스를 진행한다. 이때, 머클 트리(Merkle tree) 구조(64)를 구성하는 각 노드는 자신을 부모 노드로 하는 두 자식 노드를 연접한 후, 연접한 두 자식 노드들 각각에 대응하는 값에 해시 함수를 적용하여 계산된 해시값으로 표현될 수 있다. 여기서, 상기 루트 노드(41)를 표현하는 해시값은 데이터 트랙잰션 전체를 대표하는 값으로 사용된다.
머클 트리 구조(64)가 구성되면(또는 생성되면), 프로세서(240)는 이진 트리 구조의 블룸 필터 트리 구조(66)를 구성한다. 이를 위해, 프로세서(240)는 메모리(230)에 저장된 블룸 필터 트리(Merkle tree) 구조의 생성과 관련된 알고리즘(이하, 블룸 필터 트리 생성 알고리즘)을 호출한다. 프로세서(240)는 호출한 블룸 필터 트리 생성 알고리즘을 실행하여, 상기 이전 블록에 포함되지 않은 트랙잭션에 포함된 상기 블룸 필터들 FD을 루트 노드(51), 리프 노드(55A, 55A', 55B, 55B') 및 상기 루트 노드(51)와 상기 리프 노드(55A, 55A', 55B, 55B') 사이의 중간 노드(53A, 53B)에 각각 할당하여 블룸 필터 트리 구조(66)를 구성하는 프로세스를 진행한다. 이때, 블룸 필터 트리 구조(66)를 구성하는 각 노드는 자신을 부모 노드로하는 두 자식 노드의 값을 bitwise-OR 연산 방식에 따라 계산된 값으로 표현될 수 있다. 여기서, 상기 루트 노드(51)를 나타내는 값은 블룸 필터들 전체를 대표하는 값으로 사용된다.
블룸 필터 트리 구조(66)가 구성되면(또는 생성되면), 프로세서(240)는 상기 이전 블록의 해시값, 상기 머클 트리 구조(64)에서의 루트 노드(41)를 나타내는 루트값(MRT), 상기 블룸 필터 트리 구조(66)에서의 루트 노드(51)를 나타내는 루트값(BFR) 및 상기 작업 증명(Proof of Work)에 따라 계산된 논스(nonce)값을 상기 새로운 블록의 블록 헤더(Block Header)로 구성하는 프로세스를 진행한다.
블록 헤더를 구성하기 위한 상기 논스(nonce)값은 작업 증명(PoW, Proof of Work) 기반의 합의 알고리즘(consensus algorism)의 실행에 따라 계산될 수 있다. 작업 증명(PoW, Proof of Work)은 새로운 블록(60)을 블록체인에 추가하는 '작업'을 완료했음을 '증명'하는 것으로 이해할 수 있다. 이러한 작업 증명 기반의 합의 과정을 통해 새로운 블록(60)에 대한 무결성(신뢰성)이 보장될 수 있다.
새로운 블록(60)을 블록체인에 추가하기 위해, 새로운 블록(60)의 블록 해쉬값을 계산하는 것이 필요하며, 상기 블록 해쉬값을 계산하기 위해, 새로운 블록(60)의 블록 헤더(62)에 포함되는 정보 중의 하나인 논스(nonce)값의 계산이 필요하다. 이러한 논스(nonce)값의 계산이 바로 작업 증명을 의미할 수 있다.
논스(nonce)값은 정해진 길이를 갖는 난수열로서, 논스(nonce)값의 계산은 본 발명에 따른 데이터 공유 플랫폼에서 정의하는 블록 생성 난이도(Block_Generation_Difficulty)에 대해 아래의 조건식을 만족하는 값을 찾는 과정일 수 있다.
[조건]
H(BH | MRT | BFR | nonce 변수) < Block_generation_difficulty
여기서, 해시 함수 H()는 논스(nonce)값을 계산하기 위해 사용되는 암호학적인 해시 함수(이하, '블록 해시 함수'라 함)일 수 있다.
논스(nonce)값을 계산하기 위해, 프로세서(240)는 이전 블록의 해시값(BH), 상기 머클 트리 구조(64)에서의 상기 루트 노드(41)를 나타내는 루트값(MRT), 상기 블룸 필터 트리 구조(66)에서의 상기 루트 노드(51)를 나타내는 루트값(BFR) 및 nonce 변수에 상기 블록 해시 함수 H()를 적용한다. 즉, 프로세서(240)는 블록 헤더(62)를 구성하는 BH, MRT, BFR 및 nonce 변수를 상기 블록 해시 함수 H()의 입력으로 사용하여, 블록 헤더(62)에 블록 해시 함수 H()를 적용한다.
프로세서(240)는 블록 헤더(62)에 블록 해시 함수 H()를 적용하여 계산된 블록 해시값이 상기 조건을 만족할 때까지 무작위로 설정된 임시값을 상기 nonce 변수에 입력하고, 상기 조건을 만족할 때까지 새로운 임시값의 입력을 계속 수행한다.
프로세서(240)는 상기 조건을 만족하는 임시값을 찾으며, 찾은 임시값을 상기 논스(nonce)값으로 결정하고, 결정된 상기 논스(nonce)값을 상기 새로운 블록의 블록 헤더에 포함되는 정보로 구성하여, 새로운 블록(60)에 대한 작업 증명을 완료한다. 논스(nonce)값 계산에 의한 작업 증명이 완료되면, 새로운 블록(60)에 대한 무결정(신뢰성)이 보장된다.
여기서 주목할 점은 검색 인덱스로 활용되는 블룸 필터, 즉, 상기 블룸 필터 트리 구조(66)에서의 루트값(BFR)이 논스(nonce)값을 계산하기 위해 사용되는 블록 해시 함수(암호학적인 해시 함수)의 입력으로 사용되는 점이다. 이것은 새로운 블록(60)에 대한 작업 증명 기반의 합의 과정이 블룸 필터 형태로 구성된 검색 인덱스에 대한 작업 증명 기반의 합의 과정을 포함함으로써, 블룸 필터 형태로 구성된 검색 인덱스에 대한 무결성(신뢰성)을 보장할 수 있음을 의미한다.
한편, 프로세서(240)은 상기 조건을 만족할 때까지 논스(nonce)값 계산을 반복한다. 따라서, ㅍ로세서(240)가 새로운 블록을 생성하는 데 필요한 계산량은 상기 조건에서 정의하는 상기 블록 생성 난이도에 비례하여 증가한다.
다른 블록 채굴 서버에 구비된 프로세서의 연산 처리 능력이 상기 블록 채굴 서버(200)에 구비된 프로세서(240)의 연산 처리 능력보다 높다면, 다른 블록 채굴 서버의 프로세서가 프로세서(240)보다 먼저 상기 조건을 만족하는 논스(nonce)값을 계산하여, 새로운 블록을 생성하여 배포하면, 다른 블록 채굴 서버에서 생성한 새로운 블록이 무결성(신뢰성)이 보장된 블록으로 합의된다.
만일, 블록 채굴 서버(200)에 구비된 프로세서(240)와 다른 블록 채굴 서버에 구비된 프로세서가 동일한 시점에서 새로운 블록을 생성하는 경우, 블록 채굴 서버(200)와 다른 블록 채굴 서버 간의 자유로운 경쟁을 통해 더 긴 체인을 형성하는 블록을 생성한 블록 채굴 서버가 무결성(신뢰성)이 보장된 새로운 블록을 생성한 것으로 인정될 수 있다.
도 5는 도 1에 도시한 블록 배포 서버의 내부구성을 개략적으로 나타내는 블록도이다.
도 5를 참조하면, 블록 배포 서버(300)는, 통신 기능을 갖는 컴퓨팅 장치로서, 블록 채굴 서버(200)로부터 블록체인에 추가된 새로운 블록을 포함하도록 구성된 블록 체인 데이터를 수신하고, 이를 모든 노드들에게 배포(전파)하는 역할을 한다.
블록 배포 서버(300)는, 통신부(310), 프로세서(320) 및 메모리(300)를 포함한다. 통신부(310)는 블록 채굴 서버(200)와 통신 채널(250)을 구성하고, 또한, 사용자 장치(300)와 통신 채널(350)을 구성하는 것으로, 통신 채널은 유선 통신 채널 및/또는 무선 통신 채널을 포함한다. 프로세서(320)는, 블록 채굴 서버(200)로부터 수신한 블록체인 데이터를 블록체인을 구성하는 모든 노드들에게 배포(전파)하도록 통신부(310)의 동작을 제어한다. 메모리(300)는, 프로세서(320)의 제어에 따라, 블록 채굴 서버(200)로부터 수신한 블록체인 데이터를 저장한다.
일반적인 개별 사용자의 경우, 블록체인을 구성하는 모든 블록 및 각 블록에 포함된 데이터 트랜잭션을 저장 및 배포하는 관리하는 것이 용이하지 않다. 따라서, 블록 배포 서버(300)는 대용량 데이터의 처리가 가능한 하드웨어 장비를 보유하고, 블록체인 데이터의 관리를 자발적으로 수행하는 서버일 수 있다.
대용량 데이터의 처리가 가능한 하드웨어 장비를 보유하고 있다면, 블록 배포 서버(300)의 역할을 수행하기 위한 다른 특별한 조건은 요구되지 않는다.
도 6은 도 1에 도시한 사용자 장치의 내부구성을 개략적으로 나타내는 블록도이다.
도 6을 참조하면, 사용자 장치(400)는 블록 배포 서버(300)에 의해 배포된(공개된 또는 공유된) 블록체인 데이터에서 특정 키워드를 포함하는 데이터를 검색하는 것으로, 통신 기능을 구비한 컴퓨팅 장치일 수 있다.
사용자 장치(400)는 통신부(410), 인터페이스(420), 메모리(430) 및 프로세서(440)를 포함한다.
통신부(410)는 블록 배포 서버(300)와 통신 채널(350)을 구성하는 것으로, 통신 채널(350)은 유선 통신 채널 및 무선 통신 채널을 포함한다. 통신부(410)는, 블록 배포 서버(300)를 통해 배포되는 블록체인 데이터에서 포함된 데이터를 검색하기 위해, 블록 채굴 서버(200)에서 생성한 새로운 블록의 블록 정보를 수신하여, 이를 프로세서(440)로 전달한다. 여기서, 블록 정보는 상기 새로운 블록에 포함된 블록 헤더로 이루어진 정보이다. 이 경우, 사용자는 검색을 위해, 블록 헤더만을 수신하여 이를 이용하여 사용자가 원하는 데이터를 검색하기 때문에, 효율적인 검색을 수행할 수 있다.
인터페이스(420)는, 블록 배포 서버(300)를 통해 배포되는 블록체인 데이터에서 포함된 데이터를 검색하기 위해, 사용자 입력에 따라 입력되는 특정 키워드를 프로세서(440)로 전달하는 입력 장치일 수 있다.
메모리(430)는 데이터 검색과 관련된 다양한 알고리즘을 저장하는 저장매체로서, 휘발성 메모리 및 비휘발성 메모리를 포함한다. 여기서, 알고리즘은 데이터 생성 장치(100)에서 블룸 필터 계산에 사용하는 블룸 필터 생성함수 BF()를 구현한 알고리즘, 데이터 검색을 위한 검색 알고리즘 등을 포함할 수 있다.
프로세서(440)는 통신부(410), 인터페이스(420) 및 메모리(430)의 동작을 제어하고, 메모리(43)에 저장된 알고리즘을 실행하여, 상기 블록체인 데이터에서 특정 키워드를 포함하는 데이터를 검색하는 검색 프로세스를 수행한다.
본 발명의 실시 예에 따른 검색 프로세스에 따르면, 먼저, 프로세서(440)는 상기 인터페이스(420)를 통해 사용자가 검색하고자 하는 특정 키워드 K를 수신한다.
프로세서(440)는 메모리(430)로부터 블룸 필터 생성함수 BF()를 호출하여, 상기 특정 키워드에 상기 호출한 블룸 필터 생성함수 BF()를 적용하여 상기 특정 키워드에 대응하는 블룸 필터(FK= BF(K))를 생성한다(또는 계산한다).
프로세서(440)는 상기 특정 키워드에 대응하는 블룸 필터(FK= BF(K))를 이용하여 아래의 검색식에 따른 검색을 수행한다.
<검색식>
FK = BFi ^ FK
여기서, ^는 bit-wise AND 연산을 의미한다.
A번째 블록에서 B번째 블록 사이의 블록에 대한 검색을 수행하는 경우를 예를 들면, 프로세서(440)는 상기 검색식을 만족하는 모든 블록들(BFi)을 블록 배포 서버(300)로부터 수신하고, 수신된 각 블록에 포함된 블룸 필터에 대해 동일한 검색을 수행하여 일치하는 경우, 해당 데이터 트랙잰션을 사용자가 검색하고자 하는 데이터로서 검색한다.
도 7은 본 발명의 실시 예에 따른 블록 체인 기반의 분산 데이터 공유 환경에서 블룸 필터 형태의 검색 인덱스를 제공하는 방법을 설명하기 위한 흐름도이다.
도 7을 참조하면, 먼저, 본 발명의 실시 예에 따른 검색 인덱스를 제공하는 방법은 크게 3개의 단계(S710, S720 및 S730)로 나눌 수 있으며, S710의 수행 주체는 데이터 생성 장치(도 1의 100 또는 도 2의 프로세서(130))이고, S720의 수행 주체는 블록 채굴 서버(도 1의 200 또는 도 3의 프로세서(240))일 수 있다. 그리고 S730의 수행 주체는 블록 배포 서버(도 1의 300 또는 프로세서(320))일 수 있다. 본 발명의 실시 예에 따른 검색 인덱스를 제공하는 방법은 사용자 장치(400)에 의해 데이터를 검색하는 단계를 더 포함하도록 확장될 수 있다.
먼저, 단계 S710에서, 데이터 생성 장치(100)에 의해, 검색 인덱스로 사용되는 블룸 필터들을 생성하는 과정이 수행된다. 여기서, 블룸 필터들을 생성하기 위해, 데이터 생성 장치(100)를 운영하는 데이터 제공자가 공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 계산한 해시값이 이용될 수 있다. 즉, 블룸 필터들은 상기 해시값을 기반으로 계산될 수 있다.
이어, 단계 S720에서, 블록 채굴 서버(200)에 의해, 단계 S710의 수행에 따라 생성된 블룸 필터들을 포함하는 새로운 블록을 생성하는 과정이 수행된다. 단계 S720은, 새로운 블록을 생성하기 위해, 상기 데이터 생성 장치로부터 수신한 상기 데이터 및 상기 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록체인에 추가하기 위해, 상기 새로운 블록에 대해 작업 증명(Proof of Work)을 수행하는 것일 수 있다. 작업 증명이 완료된 새로운 블록은 블록체인 데이터로 구성되어 데이터 배포 서버(300)로 전송된다.
이어, 단계 S730에서, 데이터 배포 서버(300)에 의해, 블록체인 데이터를 모든 사용자 노드로 배포하는 과정이 수행된다. 이러한 배포 과정을 통해, 새로운 블록에 포함된 검색 인덱스로 사용되는 블룸 필터들이 사용자에게 제공될 수 있다.
도 8은 도 7에 도시한 단계 S710의 상세 흐름도이다.
도 8을 참조하면, 단계 S810에서, 데이터 제공자가 공유하고자 하는 데이터 (D)를 선택하는 과정이 수행된다.
이어, 단계 S820에서, 상기 선택한 데이터(D)를 검색하기 위한 다수의 키워드를 포함하도록 구성된 상기 키워드 집합{
Figure 112019024266082-pat00034
,
Figure 112019024266082-pat00035
,
Figure 112019024266082-pat00036
Figure 112019024266082-pat00037
}을 결정하는 과정이 수행된다.
이어, 단계 S830에서, 상기 해시 함수가 다수의 해시 함수들(h1(), h2(), ??, hd())로 구성된 경우, 각 키워드에 상기 다수의 해시 함수들(h1(), h2(), ??, hd())을 적용하여 다수의 해시값들을 계산하는 과정이 수행된다.
이어, 단계 S840에서, 상기 계산된 다수의 해시 값들을 기반으로 상기 검색 인덱스에 대응하는 블룸 필터들(FD)을 계산(생성)하는 과정이 수행된다.
이어, 단계 S850에서, 데이터 제공자(또는 데이터 생성 장치)의 ID, 상기 선택한 데이터(D) 및 블룸 필터들(FD)을 포함하도록 데이터 트랜잭션을 생성하는 과정이 수행된다. 생성된 데이터 트랜잭션은 블록 채굴 서버(200)를 포함하는 모든 노드로 전송된다.
도 9는 도 8에 도시한 단계 S840의 상세 흐름도이다.
도 9를 참조하면, 단계 S910에서, 각 블룸 필터를 구성하는 모든 비트들의 비트값을 '0(zero)'로 초기화하는 과정이 수행된다.
이어, 단계 S920에서, 비트값이 '0(zero)'로 초기화된 모든 비트들 중에서 단계 S830에서 계산된 다수의 해시값들에 의해 정의되는 비트위치에 존재하는 비트들의 비트값이 '0'에서 '1'로 셋팅된 비트열을 갖는 블룸 필터들을 생성하는 과정이 수행된다.
도 10은 도 7에 도시한 단계 S720의 상세 흐름도이다.
도 10을 참조하면, 먼저, 단계 S1010에서, 상기 데이터 생성 장치로부터 데이터 트랜잭션을 수집하는 과정이 수행된다. 이때, 데이터 트랜잭션은 상기 데이터 생성 장치의 식별자(ID), 상기 데이터(D) 및 상기 블룸 필터들(FD)을 포함하도록 구성된 것이다.
이어, 단계 S1020에서, 상기 수집한 트랙잭션 중에서 이전 블록에 포함되지 않은 트랜잭션을 루트 노드(root node), 리프 노드(leaf node) 및 상기 루트 노드와 상기 리프 노드 사이의 중간 노드에 각각 할당하여 머클 트리(Merkle tree) 구조를 구성하는 과정이 수행된다.
이어, 단계 S1030에서, 상기 블룸 필터들을 루트 노드(root node), 리프 노드(leaf node) 및 상기 루트 노드와 상기 리프 노드 사이의 중간 노드에 각각 할당하여 블룸 필터 트리 구조로 구성하는 과정이 수행된다.
이어, 단계 S1040에서, 이전블록의 해시값, 머클 트리 구조에서의 루트값 및 블룸필터 트리 구조에서의 루트값을 이용하여 작업 증명을 위한 논스(nonce)값을 계산하는 과정이 수행된다. 여기서, 상기 머클 트리 구조에서의 루트값은, 상기 머클 트리 구조에서의 루트 노드를 부모 노드로 하는 두 자식 노드를 각각 나타내는 값들을 연접한 후, 연접한 두 값들에 해시 함수를 적용하여 계산한 값(비트열)일 수 있다. 상기 블룸 필터 트리 구조에서의 루트값은 상기 블룸 필터 트리 구조에서의 루트 노드를 부모 노드로 하는 두 자식 노드를 각각 나타내는 값들을 bitwise-OR 연산 방식에 따라 계산한 값(비트열)일 수 있다.
상기 논스(nonce)값의 계산은, 예를 들면, 상기 블록 헤더(이전블록의 해시값, 머클 트리 구조에서의 루트값, 블룸필터 트리 구조에서의 루트값 및 논스(nonce) 변수)에 암호학적인 해시 함수를 적용하여 계산된 블록 해시값이 상기 블록 체인 기반의 분산 데이터 공유 환경에서 정의하는 조건을 만족할 때까지 무작위로 설정된 임시값을 상기 암호학적인 해시 함수(논스(nonce) 변수)에 입력한 후, 상기 조건을 만족하는 임시값이 계산되면, 계산된 임시값을 상기 논스값으로 계산하는 과정으로 이루어질 수 있다.
이어, 단계 S1050에서, 이전 블록의 해시값, 상기 머클 트리 구조에서의 루트값, 상기 블룸 필터 트리 구조에서의 루트값 및 상기 논스(nonce)값을 상기 새로운 블록의 블록 헤더(Block Header)로 구성(생성)하는 과정이 수행된다.
이와 같이, 본 발명은 검색 인덱스로 활용되는 블룸 필터, 즉, 상기 블룸 필터 트리 구조(66)에서의 루트값(BFR)이 논스(nonce)값을 계산하기 위한 입력으로 사용된다. 따라서, 새로운 블록(60)에 대한 작업 증명 기반의 합의 과정이 블룸 필터 형태로 구성된 검색 인덱스에 대한 작업 증명 기반의 합의 과정을 포함함으로써, 검색 인덱스에 대한 무결성(신뢰성)을 보장할 수 있다.
이상에서 본 발명에 대하여 실시예를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 본 발명의 실시예에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (12)

  1. 블록체인 기반의 분산 데이터 공유 환경에서 블룸 필터 기반의 검색 인덱스를 제공하는 방법에서,
    데이터 생성 장치가, 공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 계산한 해시값을 기반으로 상기 검색 인덱스로 사용되는 블룸 필터들(Bloom filters)들을 생성하는 단계;
    블록 채굴 서버가, 상기 데이터 생성 장치로부터 수신한 상기 데이터 및 상기 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록 체인에 추가하기 위해, 상기 새로운 블록에 대해 작업 증명(Proof of Work)을 수행하는 단계; 및
    데이터 배포 서버가, 상기 블록 체인에 추가된 상기 새로운 블록을 포함하도록 구성된 블록체인 데이터를 배포하는 단계를 포함하고,
    상기 작업 증명(Proof of Work)을 수행하는 단계는,
    상기 블록 채굴 서버가, 상기 데이터 생성 장치로부터 상기 데이터 생성 장치의 식별 ID, 상기 데이터 및 상기 블룸 필터들을 포함하도록 구성된 트랜잭션을 상시 수집하는 단계;
    상기 블록 채굴 서버가, 상기 수집한 트랙잭션 중에서 이전 블록에 포함되지 않은 트랜잭션을 루트 노드(root node), 리프 노드(leaf node) 및 상기 루트 노드와 상기 리프 노드 사이의 중간 노드에 각각 할당하여 머클 트리(Merkle tree) 구조를 구성하는 단계;
    상기 블록 채굴 서버가, 상기 블룸 필터들을 루트 노드(root node), 리프 노드(leaf node) 및 상기 루트 노드와 상기 리프 노드 사이의 중간 노드에 각각 할당하여 블룸 필터 트리 구조로 구성하는 단계; 및
    상기 블록 채굴 서버가, 상기 이전 블록의 해시값, 상기 머클 트리 구조에서의 상기 루트 노드를 나타내는 루트값, 상기 블룸 필터 트리 구조에서의 상기 루트 노드를 나타내는 루트값 및 상기 작업 증명(Proof of Work)에 따라 계산된 논스(nonce)값을 상기 새로운 블록의 블록 헤더(Block Header)로 구성하는 단계;
    를 포함하는 블록체인 기반의 분산 데이터 공유 환경에서 검색 인덱스 제공 방법.
  2. 제1항에 있어서, 상기 블룸 필터들(Bloom filters)들을 생성하는 단계는,
    상기 데이터 생성 장치가, 상기 공유하고자 하는 데이터를 선택하는 단계;
    상기 데이터 생성 장치가, 상기 선택한 데이터를 검색하기 위한 다수의 키워드를 포함하도록 구성된 상기 키워드 집합을 결정하는 단계;
    상기 해시 함수가 다수의 해시 함수들로 구성된 경우, 각 키워드에 상기 다수의 해시 함수들을 적용하여 다수의 해시 값들을 계산하는 단계; 및
    상기 계산된 다수의 해시 값들을 기반으로 상기 검색 인덱스에 대응하는 블룸 필터들을 생성하는 단계
    를 포함하는 것인 블록체인 기반의 분산 데이터 공유 환경에서 검색 인덱스 제공 방법.
  3. 삭제
  4. 제1항에서,
    상기 머클 트리 구조에서의 루트 노드를 나타내는 루트값은,
    상기 머클 트리 구조에서의 루트 노드의 두 자식 노드를 각각 나타내는 값들을 연접한 후, 연접한 두 값들에 해시 함수를 적용하여 계산한 값이고,
    상기 블룸 필터 트리 구조에서의 루트 노드를 나타내는 루트값은,
    상기 블룸 필터 트리 구조에서의 루트 노드의 두 자식 노드를 각각 나타내는 값들을 bitwise-OR 연산 방식에 따라 계산한 값인 것인 블록체인 기반의 분산 데이터 공유 환경에서 검색 인덱스 제공 방법.
  5. 삭제
  6. 삭제
  7. 블록체인 기반의 분산 데이터 공유 환경에서 블룸 필터 형태의 검색 인덱스를 제공하기 위한 시스템에서,
    공유하고자 하는 데이터를 검색하기 위한 키워드 집합에 해시 함수(hash function)를 적용하여 계산한 해시 값을 기반으로 검색 인덱스로 사용되는 블룸 필터들(Bloom filters)들을 생성하는 데이터 생성 장치;
    상기 데이터 생성 장치로부터 수신한 상기 데이터 및 상기 블룸 필터들을 기반으로 새로운 블록을 생성하고, 상기 새로운 블록을 상기 블록체인에 추가하기 위해, 상기 새로운 블록에 대해 작업 증명(Proof of Work)을 수행하는 블록 채굴 서버; 및
    상기 블록체인에 추가된 상기 새로운 블록을 포함하도록 구성된 블록 체인 데이터를 배포하는 데이터 배포 서버를 포함하고,
    상기 블록 채굴 서버는,
    상기 데이터 생성 장치로부터 상기 데이터 생성 장치의 식별 ID, 상기 데이터 및 상기 블룸 필터들을 포함하도록 구성된 데이터 트랜잭션을 수신하는 통신부; 및
    이전 블록의 해시값, 상기 트랜잭션으로부터 구성된 머클 트리 구조에서의 루트 노드에 대응하는 루트값, 상기 블룸 필터들로부터 구성된 블룸 필터 트리 구조에서의 루트 노드에 대응하는 루트값 및 상기 작업 증명에 따라 계산된 논스(nonce)값을 상기 새로운 블록의 블록 헤더로 구성하는 프로세서
    를 포함하는 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템.
  8. 제7항에서, 상기 데이터 생성 장치는,
    다수의 해시 함수가 저장된 메모리; 및
    상기 키워드 집합에 포함된 각 키워드에 대한 상기 다수의 해시 함수를 적용하여 계산된 다수의 해시값을 이용하여 상기 블룸 필터들을 생성하는 프로세서
    포함하는 것인 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템.
  9. 삭제
  10. 제7항에서,
    블록 배포 서버로부터 상기 새로운 블록의 블록 헤더를 수신하고, 수신된 블록 헤더를 상기 블록 체인 데이터에서 특정 키워드를 포함하는 데이터를 검색하는 사용자 장치
    를 더 포함하는 것인 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템.
  11. 제10항에서, 상기 블록 헤더는,
    상기 검색 인덱스로 사용되는 블룸 필터들을 포함하는 것인 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템.
  12. 제10항에서, 상기 사용자 장치는,
    상기 특정 키워드(K)에 대한 블룸 필터(FK= BF(K))를 계산하고,
    상기 블록 헤더 포함된 블룸 필터들 중에서 FK = BFi ^ FK를 만족하는 블룸 필터들(BFi)을 계산하고, 계산된 블룸 필터들(BFi)에 대응하는 데이터를 상기 특정 키워드를 포함하는 데이터로 검색하는 것인 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템.
KR1020190027144A 2019-03-08 2019-03-08 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법 KR102544628B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190027144A KR102544628B1 (ko) 2019-03-08 2019-03-08 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법
US16/811,051 US11403284B2 (en) 2019-03-08 2020-03-06 System for data sharing platform based on distributed data sharing environment based on block chain, method of searching for data in the system, and method of providing search index in the system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190027144A KR102544628B1 (ko) 2019-03-08 2019-03-08 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법

Publications (2)

Publication Number Publication Date
KR20200107662A KR20200107662A (ko) 2020-09-16
KR102544628B1 true KR102544628B1 (ko) 2023-06-19

Family

ID=72334964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190027144A KR102544628B1 (ko) 2019-03-08 2019-03-08 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법

Country Status (2)

Country Link
US (1) US11403284B2 (ko)
KR (1) KR102544628B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11316841B2 (en) * 2019-03-25 2022-04-26 Micron Technology, Inc. Secure communication between an intermediary device and a network
US11362832B2 (en) 2019-04-06 2022-06-14 Prasaga, LLC Distributed proof-of-work for sharded or parallel blockchains
GB2586865A (en) * 2019-09-06 2021-03-10 Nchain Holdings Ltd Methods and Devices for Tracking and Measuring Proof-of-Work Contributions in a Mining Pool
KR102276527B1 (ko) * 2020-11-11 2021-07-13 (주)소셜인프라테크 오브젝트의 정보 변경 방지를 위한 오브젝트 발행 시스템
KR102648501B1 (ko) * 2020-12-16 2024-03-19 한국전자통신연구원 네트워크 환경 동기화 장치 및 방법
WO2022211748A1 (en) * 2021-03-29 2022-10-06 Goksoy Omer A blockchain security method
CN113239078B (zh) * 2021-05-17 2022-09-20 国网河南省电力公司信息通信公司 一种基于联盟链的数据快速查询方法
CN113378218B (zh) * 2021-06-02 2022-03-18 浙江数秦科技有限公司 一种基于区块链的知识产权数据存证确权方法
KR102655765B1 (ko) * 2021-06-16 2024-04-09 계명대학교 산학협력단 블록체인 제공 방법 및 장치
GB2608845A (en) * 2021-07-14 2023-01-18 Nchain Licensing Ag Blockchain blocks & proof-of-existence
GB2608841A (en) * 2021-07-14 2023-01-18 Nchain Licensing Ag Blockchain blocks & proof-of-existence
GB2608842A (en) * 2021-07-14 2023-01-18 Nchain Licensing Ag Blockchain Blocks & Proof-of-existence
GB2608844A (en) * 2021-07-14 2023-01-18 Nchain Licensing Ag Blockchain blocks & proof-of-existence
CN114756603B (zh) * 2022-05-23 2023-04-07 天津大学 一种轻量级区块链高效可验证查询方法
KR102501004B1 (ko) * 2022-09-19 2023-02-21 주식회사 레드윗 블록체인 기반의 데이터 관리 방법 및 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345472A (zh) * 2013-06-04 2013-10-09 北京航空航天大学 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法
US20140143549A1 (en) 2011-07-07 2014-05-22 Nec Corporation Information processing apparatus, information processing method, and program
US20180089041A1 (en) * 2016-09-28 2018-03-29 Mcafee, Inc Query optimized distributed ledger system
WO2018125989A2 (en) 2016-12-30 2018-07-05 Intel Corporation The internet of things
WO2018224955A1 (en) 2017-06-07 2018-12-13 nChain Holdings Limited Computer-implemented system and method for managing large blocks over a blockchain network
US20210073410A1 (en) 2018-05-15 2021-03-11 Microsoft Technology Licensing, Llc Secure dataset management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510513B2 (en) 2009-12-18 2013-08-13 Electronics And Telecommunications Research Institute Network load reducing method and node structure for multiprocessor system with distributed memory
KR20180115727A (ko) 2016-02-23 2018-10-23 엔체인 홀딩스 리미티드 보안 투표 및 분배에서 사용을 위한 블록체인 구현 카운팅 시스템 및 방법
KR20170122048A (ko) * 2016-04-26 2017-11-03 한국전자통신연구원 블룸 필터와 이진 트리를 이용한 암호 데이터 검색 시스템 및 그 방법
US10691763B2 (en) 2016-11-11 2020-06-23 International Business Machines Corporation Trustable web searching verification in a blockchain
KR102514457B1 (ko) 2017-01-10 2023-03-29 한국전자통신연구원 블록체인을 이용한 공공 단체의 거래 정보 관리 방법 및 시스템
KR102297592B1 (ko) * 2019-01-30 2021-09-03 펜타시큐리티시스템 주식회사 블록체인을 이용한 빅데이터 공유 방법 및 장치

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140143549A1 (en) 2011-07-07 2014-05-22 Nec Corporation Information processing apparatus, information processing method, and program
CN103345472A (zh) * 2013-06-04 2013-10-09 北京航空航天大学 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法
US20180089041A1 (en) * 2016-09-28 2018-03-29 Mcafee, Inc Query optimized distributed ledger system
WO2018125989A2 (en) 2016-12-30 2018-07-05 Intel Corporation The internet of things
WO2018224955A1 (en) 2017-06-07 2018-12-13 nChain Holdings Limited Computer-implemented system and method for managing large blocks over a blockchain network
US20210073410A1 (en) 2018-05-15 2021-03-11 Microsoft Technology Licensing, Llc Secure dataset management

Also Published As

Publication number Publication date
US11403284B2 (en) 2022-08-02
US20200285634A1 (en) 2020-09-10
KR20200107662A (ko) 2020-09-16

Similar Documents

Publication Publication Date Title
KR102544628B1 (ko) 블록체인 기반의 분산 데이터 공유 환경에서 데이터 공유 플랫폼을 위한 시스템, 상기 시스템에서 데이터 검색 방법 및 상기 시스템에서 검색 인덱스를 제공하는 방법
CN111026788B (zh) 一种混合云中基于同态加密的多关键词密文排序检索方法
US9300471B2 (en) Information processing apparatus, information processing method, and program
CN108156138A (zh) 一种用于雾计算的细粒度可搜索加密方法
Rashid et al. A secure data deduplication framework for cloud environments
JP6911877B2 (ja) 情報管理装置、情報管理方法及び情報管理プログラム
CN110176984B (zh) 一种用于安全字符串模式匹配的数据结构构造及匹配方法
US11797534B2 (en) Efficient SQL-based graph random walk
WO2019160133A1 (ja) 情報管理装置、情報管理方法及び情報管理プログラム
US9049252B2 (en) Efficient name management for named data networking in datacenter networks
CN112328606A (zh) 基于区块链的关键字可搜索加密方法
Guidi et al. Evaluating the decentralisation of filecoin
CN115292737B (zh) 一种多关键词模糊搜索加密方法、系统及电子设备
Xu et al. Dynamic chameleon authentication tree for verifiable data streaming in 5G networks
Lee et al. SearchaStore: Fast and secure searchable cloud services
CN103870267B (zh) 用于处理数据中心网络中的数据对象的在计算机系统中实现的方法和计算机实现的系统
EP3246900B1 (en) Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program
He et al. An efficient ciphertext retrieval scheme based on homomorphic encryption for multiple data owners in hybrid cloud
JP6000175B2 (ja) 匿名化システム、匿名化装置、利用者装置、匿名化方法、およびプログラム
Shastri et al. An improved algorithm for querying encrypted data in the cloud
Li et al. Forward and backward secure searchable encryption scheme supporting conjunctive queries over bipartite graphs
US20230039723A1 (en) Secret hash table construction system, reference system, methods for the same
Anily et al. Ranking the best binary trees
Wang et al. Simultaneous optimization of user-centric security-conscious data storage on cloud platforms
Chang et al. Privacy-Enhanced Frequent Sequence Mining and Retrieval for Personalized Behavior Prediction

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