KR102474866B1 - 블록체인 기반 문서 관리 방법 및 장치 - Google Patents

블록체인 기반 문서 관리 방법 및 장치 Download PDF

Info

Publication number
KR102474866B1
KR102474866B1 KR1020200152513A KR20200152513A KR102474866B1 KR 102474866 B1 KR102474866 B1 KR 102474866B1 KR 1020200152513 A KR1020200152513 A KR 1020200152513A KR 20200152513 A KR20200152513 A KR 20200152513A KR 102474866 B1 KR102474866 B1 KR 102474866B1
Authority
KR
South Korea
Prior art keywords
document
merkle
value
node
merkle tree
Prior art date
Application number
KR1020200152513A
Other languages
English (en)
Other versions
KR20220066466A (ko
Inventor
신혜연
Original Assignee
두나무 주식회사
람다256 주식회사
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 두나무 주식회사, 람다256 주식회사 filed Critical 두나무 주식회사
Priority to KR1020200152513A priority Critical patent/KR102474866B1/ko
Publication of KR20220066466A publication Critical patent/KR20220066466A/ko
Priority to KR1020220165858A priority patent/KR102656323B1/ko
Application granted granted Critical
Publication of KR102474866B1 publication Critical patent/KR102474866B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

컴퓨팅 장치에 의한 문서 관리 방법이 제공된다. 본 명세서에 기재된 일 실시예에 따른 문서 관리 방법은, 제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서에 관한 복수의 필드에 대응되는 머클트리를 생성하는 단계와, 상기 머클트리의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계와, 상기 트랜잭션 객체를 서명하고, 상기 트랜잭션 객체를 기록하기 위하여 블록체인 네트워크에 전송하는 단계와, 상기 제1 문서에 대응되는 머클트리를 저장소에 저장하는 단계를 포함할 수 있다. 여기서 상기 복수의 필드는 제2 문서의 머클루트 값을 평문(plain text)으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서일 수 있다.

Description

블록체인 기반 문서 관리 방법 및 장치{METHOD AND APPARATUS FOR MANAGING DOCUMENT BASED ON BLOCKCHAIN NETWORK}
본 명세서에 기재된 실시예는, 블록체인에 기반하여 문서를 관리하는 방법 및 장치에 관한 것이다. 보다 구체적으로 본 명세서에 기재된 실시예는, 블록체인을 이용하여, 문서의 작성 시점을 증명하고 문서 내용의 위변조 여부를 검증할 수 있도록 하는 문서 관리 방법 및 장치에 관한 것이다. 본 명세서에 기재된 실시예들은 기업이나 연구기관에서 작성하는 연구노트 또는 영업비밀 문서들을 안전하게 관리하기 위하여 이용될 수 있다.
연구노트란 연구 수행의 시작부터 연구개발 결과물의 정리, 보고, 발표 및 지식재산권의 확보 등에 이르기까지의 일련의 과정들을 연구자가 기록한 문서이다.
연구노트는 연구의 진실성 입증을 위한 증거 자료로서 연구 결과에 대한 검증을 가능하게 하고, 연구 과정에서 습득된 노하우를 후속 연구자에게 전수함으로써 연구의 지속성을 유지할 수 있도록 하는 중요한 수단이다. 이러한 이유로, 주요 학술지에 논문을 게재할 때 해당 연구의 과정을 기록한 연구노트의 제출이 요구되기도 한다.
또한, 연구노트는 법적인 절차에서 증거로서의 법적인 효력을 가진다. 예를 들어, 특허법상 선사용권에 의한 통상실시권을 인정받거나(특허법 제103조), 무권리자의 특허출원을 막고 정당한 권리자로서 보호받기(특허법 제 34조) 위하여, 연구노트가 증거로서 사용될 수 있다. 연구노트는 또한 경쟁 기업간의 영업비밀 유출 관련 분쟁에서도 연구노트가 유효한 증거로서 사용될 수 있다. 나아가 연구노트는 공동 연구의 결과물에 관한 권리의 귀속과 지분 비율을 산정하기 위한 객관적인 근거로서 사용될 수 있다.
이에, 국가연구개발사업의 관리 등에 관한 대통령령 등에서는, 국가연구개발사업 협약 시 연구노트 작성 및 관리에 관한 사항이 포함되어야 하고, 연구노트를 통하여 성실한 연구개발 수행을 인정 및 증명하도록 하고 있으며, 국가연구개발사업을 수행하는 연구기관은 연구노트 작성 및 관리에 관한 규정을 마련하여 운영하고, 국가연구개발사업을 수행하는 연구자는 소속 연구기관의 자체 규정에 따라 연구노트를 작성, 관리할 것을 요구하고 있다.
위와 같이 연구노트가 중요한 의의를 가지는 만큼, 연구노트의 작성 및 관리 방법은 매우 엄격하고 까다롭다.
일 예로, 서면 연구노트에는 기관명, 일련번호, 연구과제명 및 각 장에 쪽 번호가 적힌 제본된 형태여야 하며, 작성자 및 점검자의 서명 및 날짜가 명시되어야 한다. 또한 서면 연구노트는 기록 내용이 장기간 보존되는 필기구로 작성되어야 하고, 작성 내용의 수정, 삭제 및 자료 부착 시 이에 대한 서명과 날짜가 기재되어야 하며, 빈 공간에는 사선을 긋고 여백임이 표시되어야 한다.
다른 예로, 전자화된 연구노트는, 연구노트의 보관, 공유, 및 검색 등이 용이하고, 작성자 및 점검자의 수기 서명보다 보안성이 높은 전자서명이 가능한 장점을 가진다. 다만, 정부 기관이나 공인 인증 기관 등 중앙 집중화된 시점 인증 서비스를 이용하여 연구노트의 작성일 등을 기록해야 하는 등의 한계를 지닌다.
한국공개특허공보 제10-2013-0120734호 (2013.11.05. 공개)
본 명세서에 기재된 실시예들은, 블록체인에 기반하여 문서를 관리하는 방법 및 장치를 제공할 수 있다.
본 명세서에 기재된 실시예들은, 문서의 작성 시점 또는 문서 내용의 위변조 여부를 검증 가능하도록 하는 방식으로 문서를 기록하는 방법 및 장치를 제공할 수 있다.
본 명세서에 기재된 실시예들은, 서로 시계열적으로 연속된 문서들의 연속성을 검증할 수 있도록 하는 방식으로 문서를 기록하는 방법 및 장치를 제공할 수 있다.
본 명세서에 기재된 실시예들은, 적은 양의 데이터를 대상으로 한 연산을 통해, 일련의 문서들 전체의 위변조 여부를 검증하는 방법 및 장치를 제공할 수 있다.
본 명세서에 기재된 일 실시예에 따른 문서관리 방법은, 제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서에 관한 복수의 필드에 대응되는 머클트리를 생성하는 단계와, 상기 머클트리의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계와, 상기 트랜잭션 객체를 서명하고, 상기 트랜잭션 객체를 기록하기 위하여 블록체인 네트워크에 전송하는 단계와, 상기 제1 문서에 대응되는 머클트리를 저장소에 저장하는 단계를 포함하되, 상기 복수의 필드는 제2 문서의 머클루트 값을 평문(plain text)으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서일 수 있다.
일 실시예에서, 상기 문서관리 방법은, 상기 제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서의 직전 문서인 제2 문서를 식별하고 상기 제2 문서의 머클루트 값을 획득하는 단계와, 상기 제2 문서의 머클루트 값을 상기 제1 문서에 관한 상기 복수의 필드들 중 하나로서 저장하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 제2 문서의 상기 머클루트 값을 획득하는 단계는, 상기 저장소 또는 상기 블록체인 네트워크로부터 상기 제2 문서의 머클루트 값을 획득하는 단계를 포함할 수 있다.
일 실시예에서, 상기 문서관리 방법은, 상기 제1 문서에 대한 저장 요청에 응답하여, 상기 제2 문서를 식별하는 단계와, 상기 제2 문서의 위변조 여부를 검증하는 단계와, 상기 제2 문서의 위변조 여부에 기초하여, 상기 제1 문서의 저장 여부를 결정하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 제2 문서의 위변조 여부를 검증하는 단계는, 상기 저장소로부터 상기 제2 문서를 획득하고, 상기 획득된 제2 문서의 머클루트 값을 산출하는 단계와, 상기 블록체인 네트워크로부터 상기 제2 문서의 머클루트 값을 조회하는 단계와, 상기 조회된 머클루트 값과 상기 산출된 머클루트 값을 비교하는 단계와, 상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제2 문서의 위변조 여부를 검증하는 단계는, 상기 저장소로부터 상기 제2 문서를 획득하고, 상기 획득된 제2 문서의 머클트리를 생성하는 단계와, 상기 저장소로부터 상기 제2 문서의 머클트리를 복원(restore)하는 단계와, 상기 생성된 머클트리와 상기 복원된 머클트리의 적어도 일부 노드들을 비교하는 단계와, 상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 생성된 머클트리와 상기 복원된 머클트리의 적어도 일부 노드들을 비교하는 단계는, 상기 생성된 머클트리의 제1 노드 값과, 상기 생성된 머클트리의 제1 노드에 대응되는 상기 복원된 머클트리의 제1 노드 값을 비교하는 단계와, 상기 생성된 머클트리의 제1 노드 값과, 상기 복원된 머클트리의 제2 노드 값을 함께 해싱한 값을, 상기 복원된 머클트리의 제3 노드 값과 비교하는 단계를 포함하되, 상기 복원된 머클트리의 제2 노드는 상기 복원된 머클트리의 제1 노드의 형제 노드이고, 상기 복원된 머클트리의 제3 노드는 상기 복원된 머클트리의 상기 제1 노드 및 상기 제2 노드의 부모 노드일 수 있다.
일 실시예에서, 상기 문서관리 방법은, 상기 트랜잭션 객체를 블록체인 네트워크에 전송하는 단계 이전에, 트랜잭션 큐에 상기 트랜잭션 객체를 저장하는 단계를 더 포함하고, 상기 트랜잭션 객체를 블록체인 네트워크에 전송하는 단계는, 기설정된 조건이 만족되었다는 판정에 응답하여, 상기 트랜잭션 큐에 저장된 복수의 트랜잭션 객체들 중 가장 마지막에 추가된 트랜잭션 객체를 상기 블록체인 네트워크에 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 기설정된 조건은, 기설정된 시간의 경과를 포함할 수 있다.
일 실시예에서, 상기 트랜잭션 큐에 상기 트랜잭션 객체를 저장하는 단계는, 상기 블록체인 네트워크와 구별되는 서브 블록체인 네트워크에 상기 트랜잭션 객체를 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 블록체인 네트워크는 퍼블릭 블록체인 네트워크이고, 상기 서브 블록체인 네트워크는 프라이빗 블록체인 네트워크일 수 있다.
본 명세서에 기재된 일 실시예에 따른 문서관리 방법은, 제1 문서에 대한 위변조 검증 요청에 응답하여, 상기 제1 문서의 위변조 여부를 판정하는 단계와, 제2 문서를 식별하고 저장소로부터 상기 제2 문서를 복원하는 단계와, 상기 복원된 제2 문서로부터 상기 제2 문서에 관한 복수의 필드들에 대응되는 제2 머클트리의 머클루트 값을 산출하는 단계와, 상기 산출된 제2 문서의 머클루트 값을 해싱하여 제1 해시 값을 산출하는 단계와, 상기 저장소로부터 상기 제1 문서의 제1 머클트리를 복원하는 단계와, 상기 제1 해시 값과 상기 제1 노드 값을 비교하는 단계와, 상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 판정하는 단계를 포함할 수 있다. 여기서 상기 제1 문서와 상기 제2 문서는 각각 직전 문서의 머클루트 값을 평문으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서일 수 있으며, 상기 제1 머클트리는 상기 제1 문서에 관한 복수의 필드들에 각각 대응되는 복수의 리프노드들을 가지며, 상기 복수의 리프노드들 중 제1 노드 값은 상기 제2 문서의 머클루트 값을 해싱한 값일 수 있다.
일 실시예에서, 상기 제1 문서의 위변조 여부를 판정하는 단계는, 상기 저장소로부터 상기 제1 문서를 복원하는 단계와, 상기 복원된 제1 문서로부터 상기 제1 문서의 머클루트 값을 산출하는 단계와, 블록체인 네트워크로부터 상기 제1 문서의 머클루트 값을 조회하는 단계와, 상기 조회된 머클루트 값과 상기 산출된 머클루트 값이 불일치할 경우, 상기 제1 문서가 위변조 되었다고 판정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 문서관리 방법은, 상기 제1 해시 값과 상기 제1 머클트리의 제2 노드 값을 함께 해싱한 제2 해시 값을, 상기 제1 머클트리의 제3 노드 값과 비교하는 단계와, 상기 제2 해시 값과 상기 제3 노드 값이 불일치할 경우, 상기 제1 문서 또는 상기 제2 문서가 위변조되었다고 판정하는 단계를 더 포함하되, 상기 제1 머클트리의 제2 노드는 상기 제1 머클트리의 제1 노드의 형제 노드이고, 상기 제1 머클트리의 제3 노드는 상기 제1 머클트리의 제1 노드 및 제2 노드의 부모 노드일 수 있다.
일 실시예에서, 상기 문서관리 방법은, 블록체인 네트워크로부터 상기 제1 문서의 머클루트 값을 조회하는 단계와, 상기 제1 머클트리의 상기 제3 노드 값과 상기 제1 머클트리의 제4 노드 값을 함께 해싱한 제3 해시 값과, 상기 조회된 상기 제1 문서의 머클루트 값이 불일치할 경우, 상기 제1 문서 또는 상기 제2 문서가 위변조되었다고 판정하는 단계를 더 포함하되, 상기 제3 노드 및 상기 제4 노드는 상기 제1 머클트리의 루트 노드의 자식 노드일 수 있다.
본 명세서에 기재된 또 다른 일 실시예에 따른 컴퓨터 판독 가능한 비일시적 저장 매체는 명령어를 포함하고, 상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서에 관한 복수의 필드에 대응되는 머클트리를 생성하는 단계와, 상기 머클트리의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계와, 상기 트랜잭션 객체를 서명하고, 상기 트랜잭션 객체를 기록하기 위하여 블록체인 네트워크에 전송하는 단계와, 상기 제1 문서에 대응되는 머클트리를 저장소에 저장하는 단계를 포함하는 동작들을 수행하도록 하되, 상기 복수의 필드는 제2 문서의 머클루트 값을 평문(plain text)으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서일 수 있다.
본 명세서에 기재된 또 다른 일 실시예에 따른 컴퓨터 판독 가능한 비일시적 저장 매체는 명령어를 포함하고, 상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 제1 문서에 대한 위변조 검증 요청에 응답하여, 상기 제1 문서의 위변조 여부를 판정하는 단계와, 제2 문서를 식별하는 단계와, 저장소로부터 상기 제2 문서를 복원하는 단계와, 상기 복원된 제2 문서로부터 상기 제2 문서에 관한 복수의 필드들에 대응되는 제2 머클트리의 머클루트 값을 산출하는 단계와, 상기 산출된 제2 문서의 머클루트 값을 해싱하여 제1 해시 값을 산출하는 단계와, 상기 저장소로부터 상기 제1 문서의 제1 머클트리를 복원하는 단계와, 상기 제1 해시 값과 상기 제1 노드 값을 비교하는 단계와, 상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 판정하는 단계를 포함하는 동작들을 수행하도록 할 수 있다. 여기서 상기 제1 문서와 상기 제2 문서는 각각 직전 문서의 머클루트 값을 평문으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서일 수 있으며, 상기 제1 머클트리는 상기 제1 문서에 관한 복수의 필드들에 각각 대응되는 복수의 리프노드들을 가지며, 상기 복수의 리프노드들 중 제1 노드 값은 상기 제2 문서의 머클루트 값을 해싱한 값일 수 있다.
도 1은 본 명세서에 개시된 일 실시예에 따른 문서 관리 시스템을 설명하기 위한 도면이다.
도 2는 도 1을 참조하여 설명된 문서 관리 시스템을 통하여, 사용자 장치에서 작성된 연구노트의 위변조 여부를 확인하기 위한 정보를 블록체인 네트워크에 저장하는 과정을 설명하기 위한 도면이다.
도 3은 본 명세서에 개시된 몇몇 실시예들에서 처리되는 문서들에 포함될 수 있는 복수의 필드들과, 시계열적으로 연속되는 문서들의 관계를 설명하기 위한 도면이다.
도 4는 도 3을 참조하여 설명된 복수의 필드들에 대응되는 머클트리를 설명하기 위한 도면이다.
도 5는 도 3을 참조하여 설명된 문서들의 시계열적인 관계가 도 4를 참조하여 설명된 머클트리에 기록되는 예시적인 방법을 설명하기 위한 도면이다.
도 6은 본 명세서에 개시된 다른 일 실시예에 따른 문서 관리 방법을 설명하는 흐름도이다.
도 7은 도 6을 참조하여 설명된 실시예에서, 저장소에 저장되는 예시적인 데이터 엔트리를 설명하기 위한 도면이다.
도 8 내지 도 10은 도 6을 참조하여 설명된 문서 관리 방법의 일부 단계를 보다 구체적으로 설명하기 위한 도면이다.
도 11 내지 도 13은 본 명세서에 개시된 다른 일 실시예에 따른 문서 관리 시스템 및 문서 관리 방법을 설명하기 위한 도면이다.
도 14 내지 도 15는 본 명세서에 개시된 다른 일 실시예에 따른 문서 관리 방법을 설명하기 위한 도면이다.
도 16은 본 명세서에 개시된 몇몇 실시예들이 구현될 수 있는 예시적인 컴퓨팅 장치를 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 본 명세서에 개시된 실시예들의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 명세서에 개시된 실시예들의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 명세서에 개시된 실시예들의 기술적 사상을 완전하도록 하고, 본 명세서에 개시된 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 명세서에 개시된 실시예들의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 명세서에 개시된 실시예들의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 명세서에 개시된 실시예들을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서에 개시된 실시예들의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 명세서에 개시된 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 명세서에 개시된 실시예들을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 명세서에 개시된 실시예들의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 명세서에 개시된 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 명세서에 개시된 일 실시예에 따른 문서 관리 시스템(100)을 설명하기 위한 도면이다.
문서 관리 시스템(100)은 문서의 작성 일시 또는 위변조 여부를 검증하기 위한 데이터를 처리하는 시스템일 수 있다. 이를 위하여 위해 문서 관리 시스템(100)은, 문서의 작성 일시 또는 위변조 여부를 검증하는데 필요한 데이터를 생성, 처리, 및 기록하고, 문서의 원본을 저장할 수 있다.
문서 관리 시스템(100)은 블록체인 네트워크(300)를 구성하는 복수의 블록체인 노드들 중 적어도 하나의 노드(200)와 통신 가능하도록 연결될 수 있다. 일 실시예에서, 문서 관리 시스템(100)은 관리 대상 문서를 생성 또는 제공하는 적어도 하나의 사용자 장치(400)와 통신 가능하도록 연결될 수 있다. 문서 관리 시스템(100)은, 사용자 장치(400)가 제공한 문서로부터 문서의 작성 일시 또는 위변조 여부를 검증하는데 필요한 데이터를 생성하고, 그 중 일부를 안전하게 기록하기 위해 블록체인 노드(200)에 전송함으로써, 궁극적으로 블록체인 네트워크(300)에 포함된 복수의 노드들에 분산 저장할 수 있다.
문서 관리 시스템(100)은, 사용자 장치(400)로부터 수신하거나 문서 관리 시스템(100)에 보관된 대상 문서의 위변조 여부를 검증하여, 그 결과를 제공할 수 있다. 문서 관리 시스템(100)은, 문서 관리 시스템(100)의 저장소에 저장된 데이터 및/또는 블록체인 네트워크(300)에 저장된 데이터를 이용하여, 대상 문서의 내용, 작성자, 및 작성일시 등의 진위 여부를 검증할 수 있다.
도 2는 도 1을 참조하여 설명된 문서 관리 시스템(100)을 통하여, 사용자 장치(400)에서 작성된 연구노트를 저장하는 예시적인 과정을 설명하기 위한 도면이다. 연구노트가 저장되는 과정 중에, 연구노트의 위변조 여부를 확인하기 위한 정보가 문서 관리 시스템(100)에 의해 생성되어 처리될 수 있다.
먼저 도 2를 참조하여, 사용자 장치(400)의 사용자가 문서 관리 시스템(100)에 계정을 생성하는 예시적인 과정을 설명한다. 사용자 장치(400)의 사용자가 문서 관리 시스템(100)에 접속하여 회원 가입 요청을 하면, 문서 관리 시스템(100)은 사용자의 계정을 생성하고, 상기 사용자가 블록체인 트랜잭션에 전자서명할 때 사용될 개인키 및 공개키 쌍을 생성할 수 있다. 문서 관리 시스템(100)은 사용자 장치(400)의 사용자에게 전자서명용 비밀번호의 입력을 요청하고, 사용자로부터 비밀번호를 입력 받을 수 있다. 문서 관리 시스템(100)은, 입력 받은 전자수명용 비밀번호에 기초하여 개인 키를 암호화하고, 예컨대 KeyStore 파일의 형태로 저장소에 저장할 수 있다.
이어서 도 2를 계속 참조하여, 사용자 장치(400)의 연구노트 저장 요청을 처리하는 예시적인 과정을 설명한다. 사용자 장치(400)의 사용자가 문서 관리 시스템(100)에 접속하여 연구노트의 저장을 요청하면, 문서 관리 시스템(100)은 연구노트의 위변조 검증에 사용될 데이터를 블록체인에 저장하기 위해, 사용자의 전자서명용 비밀번호 입력을 요구할 수 있다. 사용자가 본인의 전자서명용 비밀번호를 입력하면, 문서 관리 시스템(100)은 입력 받은 전자서명용 비밀번호를 이용하여, 저장소로부터 KeyStore 파일의 형태로 저장된 상기 사용자의 개인키 및 공개키 쌍을 복원할 수 있다.
문서 관리 시스템(100)은 저장 대상 연구노트를 평문으로 저장소에 저장할 수 있다. 또한 문서 관리 시스템(100)은 저장 대상 연구노트에 포함된 복수의 필드들을 각각 해싱한 값을 리프노드로 가지는 머클트리를 생성하고, 저장소에 저장할 수 있다. 이어서 문서 관리 시스템(100)은 상기 머클트리의 머클루트 값을 데이터 영역에 포함하는 트랜잭션을 생성하여, 상기 사용자의 개인키를 이용하여 트랜잭션에 서명할 수 있다. 몇몇 실시예에서, 문서 관리 시스템(100)은, 문서를 작성한 사용자뿐만 아니라 문서를 점검한 사용자의 개인키를 이용하여 상기 트랜잭션을 다중서명(Multi-signature) 할 수 있다. 문서 관리 시스템(100)은, 이와 같이 생성된 트랜잭션의 트랜잭션 해시를 저장소에 저장할 수 있다. 연구노트에 포함될 수 있는 예시적인 복수의 필드들, 이들을 해싱하여 생성될 수 있는 머클트리 및 머클루트에 대해서는, 도 3 내지 도 5를 참조하여 보다 자세히 후술하기로 한다.
문서 관리 시스템(100)은 블록체인 네트워크(300)의 일 노드에 기 배포된 스마트 컨트랙트를 목적지로 하여, 상기 트랜잭션을 전송할 수 있다. 상기 트랜잭션을 전송받은 노드는 전달받은 트랜잭션 해시와 데이터(머클루트 값)를 스마트 컨트랙트 내에 저장할 수 있다. 트랜잭션의 저장이 완료되면 저장 결과가 문서 관리 시스템(100)에 전달되고, 문서 관리 시스템(100)은 연구노트의 저장 결과를 다시 사용자 장치(400)에게 전달할 수 있다.
이하에서는 도 3을 참조하여, 본 명세서에 개시된 몇몇 실시예들에서 처리되는 문서에 포함될 수 있는 복수의 필드들에 대하여 설명하고, 복수의 필드들 중 시계열적으로 연속되는 문서들의 연속성과 위변조 여부를 검증하기 위해 사용될 수 있는 필드에 대하여 설명하기로 한다.
도 3에는 동일한 필드들을 가지는 세 개의 문서들이 도시되어 있다. 도 3에 도시된 세 개의 문서들은 서로 선후관계를 가지고 시계열적으로 연속되는 문서들일 수 있다. 설명의 편의를 위하여, 도 3에는 1일차 연구노트, 2일차 연구노트, 및 3일차 연구노트 문서가 예시적으로 도시되었다. 그러나 본 명세서에 개시된 여러 실시예들에서 다루어지는 문서가 연구노트로 한정되는 것은 아니다.
도 3에 도시된 1일차 연구노트와 2일차 연구노트 사이에 다른 연구노트는 존재하지 않으며, 2일차 연구노트와 3일차 연구노트 사이에 다른 연구노트는 존재하지 않는 것으로 가정하고, 이하의 설명을 이어 간다.
도 3에 도시된 바와 같이, 각각의 문서는 기관명, 일련번호, 연구과제명, 작성일시, 작성자 서명 일시, 점검자 서명 일시, 및 문서 본문 등, 연구노트의 기록 및 관리에 요구되는 필드들을 포함할 수 있다. 나아가 각각의 문서는, 직전 문서를 가리키는 지시자 필드를 추가적으로 포함할 수 있다. 상기 직전 문서 지시자 필드에는, 직전 문서의 해시 값이 기록될 수 있다. 일 실시예에서, 상기 직전 문서 지시자 필드에는, 직전 문서를 이용하여 생성된 머클트리의 머클루트 값이 기록될 수 있다. 몇몇 실시예에서, 각각의 문서에는 전술한 필드들이 평문(plain text)으로 기록될 수 있으며, 다른 몇몇 실시예에서는, 전술한 필드들이 암호화되어 기록될 수 있다.
도 3에 도시된 바와 같이 직전 문서의 해시 값을 다음 문서의 일부로서(예: 직전 문서 지시자 필드)에 기록함으로써, 만약 직전 문서로 주장되는 문서의 내용이 위변조된 것이라면, 직전 문서로 주장되는 문서를 해싱한 값과, 직후 문서에 포함된 필드를 비교하는 것만으로도, 위변조 사실이 확인될 수 있다.
도 4는 도 3을 참조하여 설명된 복수의 필드들에 대응되는 머클트리를 설명하기 위한 도면이다. 구체적으로, 도 4에 도시된 머클트리는, 도 3을 참조하여 설명한 문서의 복수의 필드들에 각각 대응되는 리프노드들을 포함할 수 있다. 각각의 리프노드에는 각각의 필드의 값을 해싱한 값이 저장될 수 있다. 또한 인접한 형제 리프노드 쌍들의 값을 더하여 해싱한 값이, 리프노드 쌍의 부모 노드에 저장될 수 있다. 각각의 부모 노드들에 대해서도 유사한 과정을 반복함으로써 머클트리의 루트에 위치한 노드가 획득될 수 있으며, 머클트리의 루트 노드의 값은 머클루트 값이라고 지칭될 수 있다.
도 4에 도시된 바와 같이, 문서에 포함된 복수의 필드들을 해싱한 값이 저장된 리프노드들로부터 머클트리가 생성되고 머클루트 값이 산출되므로, 문서에 포함된 복수의 필드들 중 어느 하나라도 위조 또는 변조되면 머클루트 값이 달라지게 된다. 따라서 비교적 작은 사이즈(예: 256비트)를 가지는 데이터인 머클루트 값을 이용하여, 문서의 위변조 여부가 검증될 수 있게 된다.
도 5는, 도 3을 참조하여 설명한 연속된 세 문서들이 해싱된 결과가, 도 4를 참조하여 설명한 머클트리에 저장된 예시적인 모습을 도시한다. 특히, 문서의 복수의 필드들 중 직전 문서 지시자 필드(예: 직전 문서의 머클트리의 머클루트 값)가 해싱되어, 다음 문서의 머클트리의 리프노드에 저장된 모습이 도시되었다. 도 5에 도시된 바와 같이, 하나의 문서에 포함된 모든 필드의 위변조 여부를 나타낼 수 있는 머클루트 값이, 시계열적으로 연속되는 다음 문서에 일 필드로서 포함됨으로써, 시계열적으로 연속된 문서들 중 어느 하나의 일 부분에라도 위조 또는 변조가 발생할 경우, 위변조된 해당 문서의 머클트리는 물론 후속 문서들의 머클트리에도 영향을 미치게 된다. 따라서 연구노트와 같이 시계열적으로 연속되는 문서의 위변조 여부 검증의 정확도와 효율이 개선될 수 있다.
도 6은 본 명세서에 개시된 다른 일 실시예에 따른, 문서 관리 방법을 설명하는 흐름도이다. 다만, 이는 본 명세서에 개시된 실시예들의 목적을 달성하기 위한 일 실시예일 뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있다. 도 6에 도시된 문서 관리 방법의 각 단계는, 예컨대 문서 관리 시스템(100)과 같은 컴퓨팅 장치에 의해 수행될 수 있다. 다시 말하면, 상기 문서 관리 방법의 각 단계는 컴퓨팅 장치의 프로세서에 의해 실행되는 하나 이상의 인스트럭션들로 구현될 수 있다. 상기 문서 관리 방법에 포함되는 모든 단계는 하나의 물리적인 컴퓨팅 장치에 의하여 실행될 수도 있을 것이나, 상기 방법의 제1 단계들은 제1 컴퓨팅 장치에 의하여 수행되고, 상기 방법의 제2 단계들은 제2 컴퓨팅 장치에 의하여 수행될 수도 있다. 이하에서는, 상기 문서 관리 방법의 각 단계가 컴퓨팅 장치에 의해 수행되는 것을 가정하여 설명을 이어가도록 한다. 다만, 설명의 편의를 위해, 상기 문서 관리 방법에 포함되는 각 단계의 동작 주체는 그 기재가 생략될 수도 있다.
별도로 언급하지 않더라도, 본 실시예에 따른 문서 관리 방법의 각 동작에 있어서, 도 1 내지 도 5를 참조하여 설명된 실시예들의 기술 사상이 반영될 수 있음은 물론이다. 또한, 반대로 본 실시예에 따른 문서 관리 방법의 각 동작에 반영된 기술 사상 역시 도 1 내지 도 5를 참조하여 설명된 문서 관리 시스템(100)의 구성 및 동작에 반영될 수 있을 것이다.
도 6을 참조하면, 본 실시예에 따른 문서 관리 방법은, 제1 문서에 대한 저장 요청을 수신하는 단계(S100), 제1 문서를 저장소에 저장하는 단계(S200), 제1 문서의 복수의 필드에 대응되는 머클트리를 생성하는 단계(S300), 머클트리의 머클루트 값을 포함하는 트랜잭션을 생성하고 서명하는 단계(S400), 및 트랜잭션 객체를 블록체인 네트워크에 전송하는 단계(S400)를 포함할 수 있다.
단계(S100)에서는, 예컨대 사용자 장치(400)로부터 제1 문서에 대한 저장 요청이 수신될 수 있다.
상기 요청에 응답하여, 단계(S200)에서는 제1 문서가 평문 또는 암호화된 형태로 저장소에 저장될 수 있다. 몇몇 실시예에서, 제1 문서의 직전 문서에 대한 위변조 검증이 수행될 수 있는데, 이에 대해서는 도 8을 참조하여 후술하기로 한다.
단계(S300)에서는 제1 문서의 복수의 필드에 대응되는 머클트리가 생성될 수 있다. 제1 문서의 복수의 필드들은, 예컨대 도 3을 참조하여 전술한 바와 같은 항목들을 포함할 수 있다. 특히 제1 문서의 복수의 필드들 중 하나는, 제1 문서의 직전 문서를 나타내는 지시자, 예컨대 직전 문서의 머클루트 값이 기록된 필드일 수 있다. 상기 머클트리는, 제1 문서의 복수의 필드들을 각각 해싱한 값을 리프노드로 가지는 머클트리일 수 있으며, 예컨대 도 4를 참조하여 설명한 머클트리일 수 있다.
단계(S400)에서는, 제1 문서의 위변조 검증을 위한 블록체인 트랜잭션이 생성될 수 있다. 상기 블록체인 트랜잭션은, 단계(S300)에서 생성된 머클트리의 머클루트 값을 데이터 영역에 포함하는 트랜잭션일 수 있다. 상기 블록체인 트랜잭션은, 제1 문서의 작성자의 개인키를 이용하여 전자서명될 수 있다.
단계(S500)에서는, 단계(S400)에서 서명된 트랜잭션이 블록체인 네트워크로 전송될 수 있다. 구체적으로, 상기 서명된 트랜잭션은 블록체인 네트워크에 속하는 일 노드에 배포된 스마트 컨트랙트를 목적지로 하여 전송될 수 있다. 상기 트랜잭션을 전송받은 노드는, 전달받은 트랜잭션 해시와 데이터(머클루트 값)를 스마트 컨트랙트 내에 저장함으로써, 블록체인 네트워크에 상기 트랜잭션이 저장될 수 있다.
도 6에 도시되지는 않았지만, 전술한 단계들(S100 내지 S500)의 수행 결과가 저장소에 저장될 수 있다. 저장소는 메모리, 하드디스크, 및 SSD 등 물리적으로 어떠한 형태의 저장소여도 무방하며, 파일 또는 데이터베이스 엔트리 등 다양한 논리적인 유형 중 적어도 하나의 유형으로 데이터를 저장하는 장치일 수 있다. 저장소는 컴퓨팅 장치에 의해 접근 가능한 것이라면, 컴퓨팅 장치와 물리적으로 이격된 곳에 위치한 장치일 수도 있다.
도 7은 문서의 위변조 여부 검증 등에 이용하기 위해 저장소에 기록 및 관리될 수 있는 예시적인 데이터 엔트리를 나타낸 것이다.
도 7을 참조하면, 저장소에 기록 및 관리되는 데이터 엔트리에는, 각각의 문서가 속하는 문서 그룹(예컨대, 연구노트#1, 연구노트 #2, 연구노트 #3)의 식별자 및 각각의 개별 문서의 식별자가 포함될 수 있다. 문서 그룹 식별자 및 개별 문서 식별자는, 특정 문서와 시계열적으로 연결된 직전 또는 직후 문서를 식별하기 위하여 이용될 수 있다.
계속 도 7을 참조하면, 저장소에 기록 및 관리되는 데이터 엔트리에는, 문서를 기초로 생성된 머클트리(머클루트 값 포함), 문서의 머클루트 값을 데이터 영역에 기록하여 블록체인 네트워크 상에 저장된 트랜잭션의 해시(TXID)가 더 포함될 수 있다. 각각의 문서의 머클트리는 문서에 포함된 개별 필드들의 위변조 여부를 검증하는데 이용될 수 있으며, 트랜잭션의 해시(TXID)는 블록체인 네트워크에 안전하게 분산 저장된 문서의 머클루트 값을 블록체인 네트워크로부터 조회하는데 이용될 수 있다. 전술한 바와 같이 특정 문서의 머클루트 값을 통해 검증 대상 문서가 위변조 되었는지 여부를 판정할 수 있다.
계속 도 7을 참조하면, 저장소에 기록 및 관리되는 데이터 엔트리에는, 문서의 원문 그대로가 포함되거나, 문서의 원문을 복원하기 위해 필요한 정보가 포함될 수 있다. 예컨대, 문서의 원문 데이터는 상기 저장소와 별개의 제2 저장소에 저장될 수 있으며, 그러한 경우 상기 제2 저장소에 저장된 문서 원문 데이터에 접근하여 문서 원문을 복원하기 위한 데이터가, 상기 저장소에 기록 및 관리되는 데이터 엔트리에 포함될 수 있다.
이하에서는 도 6을 참조하여 설명된 문서 관리 방법의 단계(S200)에 대하여 도 8을 참조하여 보다 구체적으로 설명한다. 몇몇 실시예에서, 도 6의 단계(S200)에서 제1 문서가 저장소에 저장되기에 앞서, 제1 문서의 직전 문서에 대한 위변조 검증이 수행될 수 있는데, 도 8을 참조하여 이에 관하여 설명한다.
도 8을 참조하면, 단계(S100)에서 제1 문서에 대한 저장 요청이 수신된 후, 단계(S210)에서 제1 문서의 직전 문서인 제2 문서가 식별될 수 있다.
제1 문서와 제2 문서는 시계열적으로 서로 연속되는 관계를 가지는 문서들일 수 있으며, 제2 문서는 제1 문서의 직전 문서이고, 제1 문서는 제2 문서의 직후 문서일 수 있다. 예를 들어, 제2 문서와 제1 문서는 각각 동일한 연구 노트의 제1일차 노트 및 제2일차 노트일 수 있다.
단계(S210)에서 제1 문서의 직전 문서인 제2 문서를 식별하는 것은, 예컨대 전술한 저장소에 기록된 데이터 엔트리를 조회하여, 제1 문서와 동일한 문서 그룹에 속하는 문서들 중 가장 마지막에 저장된 문서를 식별함으로써 달성될 수 있다.
이어서 단계(S220)에서는, 제2 문서의 위변조 여부를 검증하는 과정이 수행될 수 있다. 제2 문서의 위변조 여부를 검증하는 과정은 도 9에 도시된 단계(S221 내지 S223) 및/또는 도 10에 도시된 단계(S226 내지 S229)를 통해 수행될 수 있다. 단계(S220)에 대해서는 도 9 및 도 10을 참조하여 보다 자세히 후술하기로 한다.
단계(S230)에서는, 단계(S220)의 수행 결과가 제2 문서가 위변조되었음을 가리키는 경우, 단계(S235)로 진행하고 제1 문서의 저장 처리를 중단할 수 있다. 만약 단계(S220)의 수행 결과가 제2 문서가 위변조되지 않았다는 것을 가리킨다면, 단계(S240)으로 진행할 수 있다.
단계(S240)에서는, 제1 문서가 저장소에 저장될 수 있다. 이때, 제1 문서가 가지는 복수의 필드들 중 하나로서, 제2 문서의 머클루트 값이 포함될 수 있다. 다시 말해, 제1 문서의 복수의 필드들 중 하나에, 제2 문서의 머클루트 값이 기록될 수 있다.
지금까지 도 8을 참조하여 설명한 단계들을 통하여, 단계(S200)에서 제1 문서를 저장소에 저장하고 그 후속 단계에서 제1 문서의 위변조 검증을 위한 데이터(예: 제1 문서의 머클루트 값)를 블록체인 네트워크에 전송하기 이전에, 제1 문서의 직전 문서인 제2 문서가 저장소에 위변조 없이 저장되어 있는지가 검증될 수 있다. 이로써, 저장소에 저장되는 문서의 무결성이 한층 더 강하게 보장될 수 있다. 또한, 저장소에 기록된 데이터에 위변조가 발생한 경우, 문서의 작성자가 신속하게 인지하고 조치할 수 있게 된다. 또한, 저장소에 기록된 데이터에 위변조가 발생하였음에도 불구하고, 위변조된 문서에 기초하여 사용자가 후속 문서들을 지속적으로 작성하는 것을 방지할 수 있다. 즉, 궁극적으로 폐기되어야 하는 문서들이 무용하게 작성되어 보관되는 것을 방지할 수 있다.
이하에서는 도 9 및 도 10을 참조하여, 단계(S220)에서 제2 문서의 위변조 여부가 검증되는 과정을 보다 구체적으로 설명한다. 도 9는, 몇몇 실시예에 따라 제2 문서의 머클루트 값에 기초하여 위변조 여부를 판정하는 예시적인 과정을 도시하며, 도 10은 다른 몇몇 실시예에 따라 제2 문서의 머클트리에 기초하여 제2 문서의 개별 필드들의 위변조 여부를 판정하는 예시적인 과정을 도시한다.
먼저 도 9를 참조하면, 단계(S221)에서 저장소로부터 제2 문서가 획득되고, 획득된 제2 문서로부터 머클루트 값이 계산될 수 있다. 즉, 저장소로부터 복원해 낸 제2 문서의 각 필드를 해싱하여 머클트리가 생성되고, 이로부터 머클루트 값이 획득될 수 있다.
단계(S222)에서는 블록체인 네트워크로부터 제2 문서의 머클루트 값이 조회될 수 있다. 구체적으로, 제2 문서의 머클루트 값이 저장된 트랜잭션의 트랜잭션 해시(TXID)가 저장소로부터 획득되고, 획득된 트랜잭션 해시(TXID)를 이용하여 블록체인 네트워크로부터 제2 문서의 머클루트 값이 저장된 트랜잭션이 조회될 수 있다.
단계(S223)에서는 단계(S221)에서 계산된 머클루트 값과 단계(S222)에서 조회된 머클루트 값이 비교될 수 있다.
단계(S224)에서는 상기 비교 결과가 불일치할 경우, 즉 저장소에 저장된 제2 문서로부터 계산된 머클루트 값이 블록체인에 저장된 머클루트 값과 다를 경우, 저장된 제2 문서는 위변조되었다고 판정될 수 있다.
이번에는 도 10을 참조하여, 제2 문서의 개별 필드의 위변조 여부를 판정하는 예시적인 과정을 설명한다. 도 10을 참조하면, 단계(S226)에서 저장소로부터 제2 문서의 원문이 획득되고, 획득된 제2 문서로부터 제2 문서의 머클트리가 재생성될 수 있다. 즉, 저장소로부터 복원해 낸 제2 문서의 각 필드를 해싱하여 머클트리가 재생성될 수 있다.
단계(S227)에서는 저장소로부터 제2 문서의 머클트리가 획득될 수 있다. 상기 머클트리는 제2 문서가 저장소에 저장된 시점에 제2 문서의 각 필드를 해싱하여 생성된 것일 수 있다. 즉, 단계(S227)에서는 과거에 저장된 제2 문서의 머클트리가 복원될 수 있다.
단계(S228)에서는 단계(S226)에서 재생성된 머클트리와 단계(S227)에서 복원된 머클트리의 적어도 일부 노드들이 서로 비교될 수 있다. 예를 들어, 제2 문서의 본문의 위변조 여부가 특히 관심 대상이라면, 두 머클트리의 리프노드들 중 문서 본문을 해싱한 값을 저장한 각 리프노드의 값(예컨대 도 4에 도시된 머클트리의 가장 마지막 리프노드의 값 H#8)이 서로 비교될 수 있다. 몇몇 실시예에서는, 상기 비교된 각 리프노드로부터 루트 노드에 이르는 경로에 있는 노드들의 값들이 추가적으로 비교될 수 있다. 또한 도 9의 단계(S222) 및 단계(S223)와 관련하여 설명된 방법으로, 상기 재생성된 제2 문서의 머클트리의 머클루트 값이, 블록체인 네트워크에 저장된 제2 문서의 머클루트 값과 일치하는지 여부가 추가로 판정될 수 있다.
단계(S229)에서는, 상기 비교 결과 불일치가 있을 경우 저장된 제2 문서는 위변조되었다고 판정될 수 있다.
지금까지 도 6 내지 도 10을 참조하여, 본 명세서에 기재된 몇몇 실시예에 따른 문서 관리 방법을 설명하였다.
지금까지 설명된 실시예에서는, 직전 문서에 포함된 모든 필드의 위변조 여부를 나타낼 수 있는 머클루트 값이, 시계열적으로 연속되는 다음 문서에 일 필드로서 포함됨으로써, 시계열적으로 연속된 문서들 중 어느 하나의 일 부분에라도 위조 또는 변조가 발생할 경우, 위변조된 해당 문서의 머클트리는 물론 후속 문서들의 머클트리에도 영향을 미치게 된다. 따라서 연구노트와 같이 시계열적으로 연속되는 문서의 위변조 여부 검증의 정확도와 효율이 개선될 수 있다. 또한, 직전 문서로 주장되는 문서의 내용이 위변조된 것이라면, 그 문서를 해싱한 값과, 다음 문서에 포함된 필드를 단순 비교하는 것만으로도, 위변조 여부가 확인될 수 있다.
또한 지금까지 설명된 실시예에서는, 문서의 작성 시점 증명 및 위변조 여부 검증에 이용될 수 있는 문서의 해시 값을, 위변조가 실질적으로 불가능한 블록체인 네트워크에 저장함으로써, 문서의 작성 시점 및 위변조 여부 검증의 신뢰도가 높아질 수 있다. 한편, 문서의 각 필드에 대응되는 머클트리의 머클루트 값만을 블록체인 네트워크에 저장함으로써, 블록체인에 기록되는 데이터의 양을 절감하고, 블록체인 오퍼레이션 관련 처리 속도와 시간을 최적화할 수 있다.
또한 지금까지 설명된 실시예에서는, 저장이 요청된 제1 문서를 저장소에 저장하기 이전에, 제1 문서의 직전 문서인 제2 문서가 저장소에 위변조 없이 저장되어 있는지가 검증될 수 있다. 이로써, 저장소에 저장되는 문서의 무결성이 한층 더 강하게 보장될 수 있으며, 저장소에 기록된 데이터에 위변조가 발생한 경우, 문서의 작성자가 신속하게 인지하고 조치할 수 있게 된다. 또한, 저장소에 기록된 데이터에 위변조가 발생하였음에도 불구하고, 위변조된 문서에 기초하여 사용자가 후속 문서들을 지속적으로 작성하는 것을 방지할 수 있다. 즉, 궁극적으로 폐기되어야 하는 문서들이 무용하게 작성되어 보관되는 것을 방지할 수 있다.
이하에서는, 도 11 내지 도 13을 참조하여, 본 명세서에 개시된 다른 일 실시예에 따른 문서 관리 시스템 및 문서 관리 방법을 설명한다.
도 11은 다른 일 실시예에 따른 문서 관리 시스템(101)을 설명하기 위한 도면이다. 도 1에 도시된 문서 관리 시스템(100)과 비교하면, 문서 관리 시스템(101)은 트랜잭션 큐(110)를 더 포함하며, 블록체인 네트워크 #1(301) 뿐만 아니라 블록체인 네트워크 #2(302)와도 통신 가능하게 연결되어, 트랜잭션을 전송 및 조회한다는 점 등의 차이가 있다. 이하의 설명에서, 블록체인 네트워크 #1(301)는 메인 블록체인 네트워크 및/또는 퍼블릭 블록체인 네트워크로 이해될 수 있고, 블록체인 네트워크 #2(302)는 서브 블록체인 네트워크 및/또는 프라이빗 블록체인 네트워크로 이해될 수 있으나, 본 명세서에 기재된 실시예들이 이에 한정되는 것은 아니다.
도 11에 도시된 문서 관리 시스템(101)은, 저장이 요청된 모든 문서들의 위변조 검증을 위한 데이터를 서브 블록체인 네트워크 #2(302)에 전송하여 기록하고, 저장이 요청된 모든 문서들 중 일부 문서들의 위변조 검증을 위한 데이터만을 메인 블록체인 네트워크 #1(301)에 전송하여 기록할 수 있다.
메인 블록체인 네트워크 #1(301)에 기록되는 일부 문서들이란, 예컨대 일정 시간 주기 동안 저장 요청된 문서들 중의 마지막 문서(예: 하루 중 저장 요청된 연구노트의 모든 버전들 중에 가장 마지막 버전의 연구노트, 한달 주기의 기간 동안 저장 요청된 연구노트의 모든 버전들 중에 가장 마지막 버전의 연구노트 등)일 수 있다.
이를 위하여, 문서 관리 시스템(101)은 저장이 요청된 모든 문서들의 위변조 검증을 위한 데이터를 서브 블록체인 네트워크 #2(302)에 전송하되, 문서 관리 시스템(101)에 구비된 트랜잭션 큐(110)에 위변조 검증 데이터를 저장해 둘 수 있다. 설정된 조건이 만족될 때, 트랜잭션 큐(110)에 저장된 마지막 문서의 위변조 검증 데이터를 메인 블록체인 네트워크 #1(301)에 전송하여 기록할 수 있다.
문서 관리 시스템(101)은, 도 6의 순서도에 도시된 단계들에 따라 문서에 대한 저장 요청을 처리할 수 있다. 다만, 문서 관리 시스템(101)이 트랜잭션을 블록체인 네트워크에 전송하는 단계(S500)는, 도 12에 도시된 세부 단계들에 따라 수행될 수 있다.
도 12를 참조하면, 단계(S400)에서 생성 및 서명된 트랜잭션 객체가 단계(S510)에서 트랜잭션 큐(110)에 저장될 수 있다.
단계(S520)에서, 트랜잭션 객체는 서브 블록체인 네트워크 #2(302)에 전송되어 기록될 수 있다.
단계(S530)에서는, 사전에 설정된 조건이 만족되었는지 여부가 판정된다. 몇몇 실시예에서, 사전에 설정된 기간, 예컨대 하루, 한 주, 한 달 등의 시간 주기가 경과된 경우, 사전에 설정된 조건이 만족되었다고 판정될 수 있다. 다른 몇몇 실시예에서, 사전에 설정된 개수의 트랜잭션이 큐(110)에 저장된 경우, 사전에 설정된 조건이 만족되었다고 판정될 수 있다. 다른 몇몇 실시예에서, 사전에 설정된 특정 유형의 문서에 관한 위변조 검증 데이터가 트랜잭션 큐(110)에 저장된 경우, 사전에 설정된 조건이 만족되었다고 판정될 수 있다.
사전에 설정된 조건이 만족되지 않은 경우 단계(S510)으로 돌아가서, 트랜잭션 객체를 큐(110)에 저장하는 과정을 반복한다.
사전에 설정된 조건이 만족된 경우, 단계(S540)으로 진행하여, 트랜잭션 큐(110)에 저장된 트랜잭션 객체 중 적어도 하나를 메인 블록체인 네트워크 #1(301)에 기록하기 위하여 전송하고, 트랜잭션 큐(110)를 비운다. 예를 들어, 트랜잭션 큐(110)에 저장된 트랜잭션 객체들 중 가장 마지막 트랜잭션 객체만이 메인 블록체인 네트워크 #1(301)에 전송되고, 트랜잭션 큐(110)가 비워질 수 있다. 다만, 서브 블록체인 네트워크#2(302)에는 트랜잭션 큐(110) 저장되어 있던 나머지 모든 트랜잭션 객체들이 이미 기록되어 있음에 유의한다.
도 13은 저장 요청된 모든 문서들의 위변조 검증 데이터가 서브 블록체인 네트워크 #2(302)에 저장되되, 일부 문서, 예컨대 하루 중에 저장 요청된 연구노트의 모든 버전들 중에 가장 마지막 버전의 연구노트의 위변조 검증 데이터만이 메인 블록체인 네트워크 #1(301)에 저장되는 예시적인 경우를 설명하기 위한 참조 도면이다.
도 13을 참조하면, 트랜잭션 큐(1101)는 제1일차의 트랜잭션 큐(110)의 상태를 도시한다. 트랜잭션 큐(1101)에는 제1일차에 저장 요청된 연구노트 버전 1.1, 1.2, 1.3, 및 1.4에 각각 대응되는 트랜잭션 객체들이 순차적으로 저장되어 있다. 24시간 주기의 시간이 경과하여 제1일이 종료되면, 가장 마지막에 트랜잭션 큐(1101)에 저장된, 버전 1.4에 관한 트랜잭션 객체가 식별되고, 버전 1.4의 트랜잭션 객체는 메인 블록체인 네트워크 #1(301)에 전송되어 저장될 수 있다.
계속 도 13을 참조하면, 트랜잭션 큐(1102)는 제2일차의 트랜잭션 큐(110)의 상태를 도시한다. 트랜잭션 큐(1102)에는 제2일차에 저장 요청된 연구노트 버전 2.1, 2.2, 및 2.3에 각각 대응되는 트랜잭션 객체들이 순차적으로 저장되어 있다. 24시간 주기의 시간이 경과하여 제2일이 종료되면, 가장 마지막에 트랜잭션 큐(1102)에 저장된, 버전 2.3에 관한 트랜잭션 객체가 식별되고, 버전 2.3의 트랜잭션 객체는 메인 블록체인 네트워크 #1(301)에 전송되어 저장될 수 있다.
비록 메인 블록체인 네트워크 #1(301)에는 제1일차의 버전 1.4에 대응되는 트랜잭션 객체 및 제2일차의 버전 2.3에 대응되는 트랜잭션 객체만이 기록되지만, 서브 블록체인 네트워크 #2(302)에는 도시된 모든 버전에 대응되는 트랜잭션 객체들이 모두 기록될 수 있음에 유의한다.
지금까지 도 11 내지 도 13을 참조하여, 본 명세서에 기재된 다른 일 실시예에 따른 문서 관리 시스템 및 문서 관리 방법을 설명하였다.
지금까지 설명된 실시예에서는, 저장 요청의 대상이 되는 모든 문서들의 위변조 검증 데이터가 메인 블록체인 또는 퍼블릭 블록체인에 기록되는 대신에, 일부 문서의 위변조 검증 데이터만이 메인 또는 퍼블릭 블록체인에 기록되고 나머지 모든 위변조 검증 데이터는 서브 블록체인 또는 프라이빗 블록체인에 기록될 수 있다. 전술한 실시예에서는, 일종의 배치 작업을 통해 기설정된 조건이 만족되는지 여부를 주기적으로 확인하고, 사전에 정해진 일부 위변조 검증 데이터만을 메인 또는 퍼블릭 블록체인에 기록함으로써, 퍼블릭 블록체인에 기록되는 데이터의 양을 절감하고, 퍼블릭 블록체인 오퍼레이션 관련 처리 속도와 시간을 최적화할 수 있다.
이하에서는, 도 14 내지 도 15를 참조하여, 본 명세서에 개시된 다른 일 실시예에 따른 문서 관리 방법을 설명한다.
도 14는 본 명세서에 개시된 다른 일 실시예에 따른, 문서 관리 방법을 설명하는 흐름도이다. 다만, 이는 본 명세서에 개시된 실시예들의 목적을 달성하기 위한 일 실시예일 뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있다. 도 14에 도시된 문서 관리 방법의 각 단계는, 예컨대 문서 관리 시스템(100)과 같은 컴퓨팅 장치에 의해 수행될 수 있다.
앞서 도 6 및 도 12를 참조하여 설명된 문서 관리 방법들은 문서의 저장 요청에 대한 처리 방법으로 이해될 수 있는 반면, 도 14를 참조하여 설명될 문서 관리 방법은 문서의 위변조 여부를 검증하는 방법으로 이해될 수 있다.
도 14를 참조하면, 먼저 단계(S1100)에서 제1 문서에 대한 위변조 검증 요청에 응답하여, 제1 문서에 대한 위변조 여부를 검증하는 동작이 수행될 수 있다. 몇몇 실시예에서, 제1 문서가 위변조되었는지 여부는, 제1 문서의 저장 당시 생성되어 블록체인에 기록된 머클루트 값과 현재 검증 요청된 제1 문서로부터 재계산된 머클루트 값을 서로 비교함으로써 수행될 수 있으며, 도 9를 참조하여 앞서 설명된 단계들이 참고될 수 있다. 몇몇 실시예에서, 제1 문서가 위변조되었는지 여부는, 제1 문서의 저장 당시 생성되어 저장소에 기록된 머클트리와 현재 검증 요청된 제1 문서로부터 재생성된 머클트리의 적어도 일부 노드들을 서로 비교함으로써 수행될 수 있으며, 도 10을 참조하여 앞서 설명된 단계들이 참고될 수 있다.
단계(S1200)에서, 제1 문서의 직전 문서인 제2 문서가 식별될 수 있다. 제1 문서와 제2 문서는 시계열적으로 서로 연속되는 관계를 가지는 문서들일 수 있으며, 제2 문서는 제1 문서의 직전 문서이고, 제1 문서는 제2 문서의 직후 문서일 수 있다. 예를 들어, 제2 문서와 제1 문서는 각각 동일한 연구 노트의 제1일차 노트 및 제2일차 노트일 수 있다.
단계(S1200)에서 제1 문서의 직전 문서인 제2 문서를 식별하는 것은, 예컨대 전술한 저장소에 기록된 데이터 엔트리를 조회하여, 제1 문서와 동일한 문서 그룹에 속하는 문서들 중 가장 마지막에 저장된 문서를 식별함으로써 달성될 수 있다.
단계(S1300)에서는, 단계(S1200)에서 식별된 제2 문서가 저장소로부터 복원될 수 있다.
이어서 단계(S1400)에서는, 복원된 제2 문서로부터 제2 문서의 머클트리가 재생성될 수 있다. 상기 머클트리는 제2 문서의 복수의 필드들을 각각 해싱한 값을 리프노드로 가지는 머클트리일 수 있으며, 예컨대 도 4를 참조하여 설명한 머클트리일 수 있다. 즉, 복원된 제2 문서의 각 필드를 해싱하는 과정을 거쳐서, 제2 문서에 대응되는 머클트리가 재생성될 수 있다. 또한 제2 문서의 머클트리로부터 제2 문서의 머클루트 값이 획득될 수 있다.
단계(S1500)에서는 저장소로부터 제1 문서의 머클트리가 복원될 수 있다. 제1 문서의 머클트리는 제1 문서가 저장되던 당시에 계산 및 생성되어, 제1 문서의 위변조 검증을 위한 다른 데이터들(문서 식별자 및 트랜잭션 해시 등)과 함께 저장소에 저장된 것일 수 있다. 한편, 단계(S1500)에서 저장소로부터 복원되는 머클트리는 제2 문서에 관한 머클트리가 아니라 제2 문서의 직후 문서인 제1 문서의 머클트리임에 유의한다.
단계(S1600)에서는, 단계(S1500)에서 복원된, 제1 문서의 머클트리의 노드들 중 직전 문서의 머클루트 값에 대응되는 리프노드의 값과, 단계(S1400)에서 재생성된 제2 문서의 머클트리의 머클루트 값이 서로 비교될 수 있다. 제1 문서의 머클트리의 리프노드에는 직전 문서의 머클루트 값의 해시 값이 저장되므로, 단계(S1400)에서 재생성된 제2 문서의 머클트리의 머클루트 값을 해싱한 해시 값이, 제1 문서의 머클트리의 리프노드 값과 비교될 수 있다.
도시되지는 않았지만, 단계(S1600)에서는, 단계(S1500)에서 복원된 제1 문서의 머클트리의 노드들과 제2 문서의 머클루트 값에 기초하여, 제1 문서 및 제2 문서의 위변조 여부를 함께 검증하는 추가적인 과정이 더 수행될 수 있다. 이에 대해서는 도 15를 참조하여 후술한다.
단계(S1700)에서는 단계(S1600)에서의 비교 결과에 기초하여 제2 문서에 대한 위변조 여부가 판정된다. 단계(S1600)에서의 비교 결과가 모두 일치할 경우, 제2 문서는 위변조되지 않았다고 판정될 수 있다. 단계(S1600)에서의 비교 결과 중 어느 하나에라도 불일치가 있을 경우, 제2 문서 및 제1 문서 중 적어도 하나가 위변조되었을 가능성이 있다고 판정될 수 있다.
이하에서는 도 15를 참조하여, 단계(S1500)에서 복원된 제1 문서의 머클트리의 노드들과 제2 문서의 머클루트 값에 기초하여, 제1 문서 및 제2 문서 중 적어도 하나의 위변조 여부를 검증하는 과정을 설명한다.
단계(S1600)과 관련하여 앞서 설명된 바와 같이, 제1 문서의 복원된 머클트리의 노드들 중 직전 문서의 머클루트 값에 대응되는 리프노드(1501)의 값과, 단계(S1400)에서 획득된 제2 문서의 머클루트 값의 해시 값(1601)이 서로 비교될 수 있다. 만약 비교 결과가 일치하지 않는다면, 제1 문서 및 제2 문서 중 적어도 하나가 위변조되었을 가능성이 있다고 판정될 수 있다.
상기 비교 결과가 일치할 경우, 리프노드(1501)의 형제 노드인 노드(1502)의 값과 상기 해시 값(1601)을 서로 더하여 해싱한 값(1609)을 계산하고, 이 값(1609)이 노드(1509)의 값과 서로 비교된다. 만약 비교 결과가 일치하지 않는다면, 제1 문서 및 제2 문서 중 적어도 하나가 위변조되었을 가능성이 있다고 판정될 수 있다.
상기 비교 결과가 일치할 경우, 노드(1509)의 형제 노드인 노드(1510)의 값과 상기 해시 값(1609)을 서로 더하여 해싱한 값(1613)을 계산하고, 이 값(1613)이 노드(1513)의 값과 서로 비교된다. 만약 비교 결과가 일치하지 않는다면, 제1 문서 및 제2 문서 중 적어도 하나가 위변조되었을 가능성이 있다고 판정될 수 있다.
상기 비교 결과가 일치할 경우, 노드(1513)의 형제 노드인 노드(1514)의 값과 상기 해시 값(1613)을 서로 더하여 해싱한 값(1615)을 계산하고, 이 값(1615)이 머클트리의 루트 노드(1515)의 값과 서로 비교된다. 만약 비교 결과가 일치하지 않는다면, 제1 문서 및 제2 문서 중 적어도 하나가 위변조되었을 가능성이 있다고 판정될 수 있다. 한편, 앞선 단계(S1100)에서, 제1 문서의 머클트리의 루트 노드(1515)의 값은 블록체인에 기록된 제1 문서의 머클루트 값과 비교되어 이미 검증된 바 있다는 점에 주목한다.
지금까지 도 14 및 도 15를 참조하여, 본 명세서에 개시된 일 실시예에 따라 제1 문서의 위변조 여부 및 제1 문서의 직전 문서인 제2 문서의 위변조 여부를 검증하는 예시적인 과정을 설명하였다.
지금까지 설명된 실시예에서는, 제1 문서의 위변조 검증 요청이 있을 때, 제1 문서와 시계열적으로 연속된 직전 문서인 제2 문서의 위변조 여부가 함께 검증될 수 있다. 제1 문서와 제2 문서는 각각 자신의 직전 문서의 머클루트 값을 하나의 필드로 포함하며, 제1 문서와 제2 문서의 필드들의 해시 값을 리프노드로 가지는 각각의 머클트리가 저장소로부터 획득될 수 있다. 직전 문서인 제2 문서의 머클루트 값의 해시 값을 제1 문서의 머클트리의 노드들과 연쇄적으로 비교 및 해싱함으로써, 제2 문서의 머클루트 값과 제1 문서의 머클트리의 노드 값들이 함께 검증될 수 있다. 즉, 제1 문서의 위변조 검증에 응답하여 단순히 제1 문서만을 대상으로 하는 위변조 검증만이 수행되는 것이 아니라, 제1 문서의 직전 문서인 제2 문서의 머클루트 값이 함께 검증될 수 있다. 이때, 제2 문서 또한 제2 문서의 직전 문서의 머클루트 값을 하나의 필드로 포함하는 것이며 제2 문서의 직전 문서의 내용이 변경되면 제2 문서의 머클트리가 변경되어 제2 문서의 머클루트 값도 변경될 수 있다. 따라서 결과적으로 상기 과정을 통해 제1 문서와 시계열적으로 연속된 과거 모든 문서들의 위변조 여부가 검증될 수 있게 된다.
지금까지 도 1 내지 도 15를 참조하여, 본 명세서에 개시된 몇몇 실시예들에 따라 문서를 저장하거나 문서의 위변조 여부를 검증하는 예시적인 방법에 대해서 설명하였다.
이하에서는, 도 16을 참조하여 본 명세서에 개시된 발명의 몇몇 실시예들에 따른 방법들을 수행할 수 있는 예시적인 컴퓨팅 장치(1500)에 대하여 설명하도록 한다.
도 16은 본 명세서에 개시된 몇몇 실시예들에 따른 방법들을 수행할 수 있는 예시적인 컴퓨팅 장치(1500)를 나타내는 하드웨어 구성도이다.
도 16에 도시된 바와 같이, 컴퓨팅 장치(1500)는 하나 이상의 프로세서(1510), 버스(1550), 통신 인터페이스(1570), 상기 프로세서(1510)에 의하여 수행되는 컴퓨터 프로그램(1591)을 로드(load)하는 메모리(1530)와, 컴퓨터 프로그램(1591)을 저장하는 스토리지(1590)를 포함할 수 있다. 다만, 도 16에는 본 명세서에 개시된 실시예들과 관련 있는 구성 요소들만이 도시되어 있다. 따라서, 본 명세서에 개시된 실시예들이 속한 기술분야의 통상의 기술자라면 도 16에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(1510)는 컴퓨팅 장치(1500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(1510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 명세서에 개시된 실시예들의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(1510)는 본 명세서에 개시된 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(1500)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(1530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(1530)는 본 명세서에 개시된 실시예들에 따른 방법을 실행하기 위하여 스토리지(1590)로부터 하나 이상의 프로그램(1591)을 로드할 수 있다. 메모리(1530)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 명세서에 개시된 실시예들의 기술적 범위가 이에 한정되는 것은 아니다.
버스(1550)는 컴퓨팅 장치(1500)의 구성 요소 간 통신 기능을 제공한다. 버스(1550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(1570)는 컴퓨팅 장치(1500)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(1570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(1570)는 본 명세서에 개시된 실시예들의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
몇몇 실시예들에 따르면, 통신 인터페이스(1570)는 생략될 수도 있다.
스토리지(1590)는 상기 하나 이상의 프로그램(1591)과 각종 데이터를 비임시적으로 저장할 수 있다.
스토리지(1590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 명세서에 개시된 실시예들이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(1591)은 메모리(1530)에 로드될 때 프로세서(1510)로 하여금 본 명세서에 개시된 다양한 실시예들에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션들을 포함할 수 있다. 즉, 프로세서(1510)는 상기 하나 이상의 인스트럭션들을 실행함으로써, 본 명세서에 개시된 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
지금까지 도 1 내지 도 16을 참조하여 본 명세서에 개시된 다양한 실시예들 및 그에 따른 효과들을 언급하였다. 본 명세서에 개시된 실시예들의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
지금까지 도 1 내지 도 16을 참조하여 설명된 본 명세서에 개시된 실시예들의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상에서, 본 명세서에 개시된 실시예들을 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 명세서에 개시된 실시예들의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 명세서에 개시된 실시예들의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 여러 실시예들을 설명하였지만, 본 명세서에 개시된 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서, 본 명세서에 개시된 실시예들이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 명세서에 개시된 실시예들의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 명세서에 개시된 실시예들에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (17)

  1. 컴퓨팅 장치에 의한 문서 관리 방법으로서,
    제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서에 관한 복수의 필드 각각에 대응되는 리프 노드들을 가지는 머클트리를 생성하는 단계;
    상기 머클트리의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계;
    상기 트랜잭션 객체를 서명하고, 상기 트랜잭션 객체를 기록하기 위하여 블록체인 네트워크에 전송하는 단계; 및
    상기 제1 문서에 대응되는 머클트리를 저장소에 저장하는 단계
    를 포함하되,
    상기 복수의 필드는 제2 문서의 머클루트 값을 평문(plain text)으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서이고,
    상기 머클트리를 생성하는 단계는,
    상기 머클트리의 리프 노드들 중 어느 하나에 상기 제2 문서의 머클루트 값을 저장하는 단계를 포함하고,
    상기 트랜잭션 객체를 생성하는 단계는,
    상기 머클트리의 리프 노드들 중 어느 하나에 저장된 상기 제2 문서의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계를 포함하는,
    문서 관리 방법.
  2. 제1항에 있어서,
    상기 제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서의 직전 문서인 제2 문서를 식별하고 상기 제2 문서의 머클루트 값을 획득하는 단계; 및
    상기 제2 문서의 머클루트 값을 상기 제1 문서에 관한 상기 복수의 필드들 중 하나로서 저장하는 단계
    를 더 포함하는,
    문서 관리 방법.
  3. 제2항에 있어서,
    상기 제2 문서의 상기 머클루트 값을 획득하는 단계는,
    상기 저장소 또는 상기 블록체인 네트워크로부터 상기 제2 문서의 머클루트 값을 획득하는 단계를 포함하는,
    문서 관리 방법.
  4. 제1항에 있어서,
    상기 제1 문서에 대한 저장 요청에 응답하여, 상기 제2 문서를 식별하는 단계;
    상기 제2 문서의 위변조 여부를 검증하는 단계; 및
    상기 제2 문서의 위변조 여부에 기초하여, 상기 제1 문서의 저장 여부를 결정하는 단계
    를 더 포함하는,
    문서 관리 방법.
  5. 제4항에 있어서,
    상기 제2 문서의 위변조 여부를 검증하는 단계는,
    상기 저장소로부터 상기 제2 문서를 획득하고, 상기 획득된 제2 문서의 머클루트 값을 산출하는 단계;
    상기 블록체인 네트워크로부터 상기 제2 문서의 머클루트 값을 조회하는 단계;
    상기 조회된 머클루트 값과 상기 산출된 머클루트 값을 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 결정하는 단계
    를 포함하는,
    문서 관리 방법.
  6. 제4항에 있어서,
    상기 제2 문서의 위변조 여부를 검증하는 단계는,
    상기 저장소로부터 상기 제2 문서를 획득하고, 상기 획득된 제2 문서의 머클트리를 생성하는 단계;
    상기 저장소로부터 상기 제2 문서의 머클트리를 복원(restore)하는 단계;
    상기 생성된 머클트리와 상기 복원된 머클트리의 적어도 일부 노드들을 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 결정하는 단계
    를 포함하는,
    문서 관리 방법.
  7. 제6항에 있어서,
    상기 생성된 머클트리와 상기 복원된 머클트리의 적어도 일부 노드들을 비교하는 단계는,
    상기 생성된 머클트리의 제1 노드 값과, 상기 생성된 머클트리의 제1 노드에 대응되는 상기 복원된 머클트리의 제1 노드 값을 비교하는 단계; 및
    상기 생성된 머클트리의 제1 노드 값과, 상기 복원된 머클트리의 제2 노드 값을 함께 해싱한 값을, 상기 복원된 머클트리의 제3 노드 값과 비교하는 단계
    를 포함하되,
    상기 복원된 머클트리의 제2 노드는 상기 복원된 머클트리의 제1 노드의 형제 노드이고,
    상기 복원된 머클트리의 제3 노드는 상기 복원된 머클트리의 상기 제1 노드 및 상기 제2 노드의 부모 노드인,
    문서 관리 방법.
  8. 제1항에 있어서,
    상기 트랜잭션 객체를 블록체인 네트워크에 전송하는 단계 이전에, 트랜잭션 큐에 상기 트랜잭션 객체를 저장하는 단계를 더 포함하고,
    상기 트랜잭션 객체를 블록체인 네트워크에 전송하는 단계는, 기설정된 조건이 만족되었다는 판정에 응답하여, 상기 트랜잭션 큐에 저장된 복수의 트랜잭션 객체들 중 가장 마지막에 추가된 트랜잭션 객체를 상기 블록체인 네트워크에 전송하는 단계
    를 포함하는,
    문서 관리 방법.
  9. 제8항에 있어서,
    상기 기설정된 조건은,
    기설정된 시간의 경과를 포함하는,
    문서 관리 방법.
  10. 제8항에 있어서,
    상기 트랜잭션 큐에 상기 트랜잭션 객체를 저장하는 단계는,
    상기 블록체인 네트워크와 구별되는 서브 블록체인 네트워크에 상기 트랜잭션 객체를 전송하는 단계를 포함하는,
    문서 관리 방법.
  11. 제10항에 있어서,
    상기 블록체인 네트워크는 퍼블릭 블록체인 네트워크이고, 상기 서브 블록체인 네트워크는 프라이빗 블록체인 네트워크인,
    문서 관리 방법.
  12. 컴퓨팅 장치에 의한 문서 관리 방법으로서,
    제1 문서에 대한 위변조 검증 요청에 응답하여, 상기 제1 문서의 위변조 여부를 판정하는 단계;
    제2 문서를 식별하고 저장소로부터 상기 제2 문서를 복원하는 단계 - 상기 제1 문서와 상기 제2 문서는 각각 직전 문서의 머클루트 값을 평문으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서임 -;
    상기 복원된 제2 문서로부터 상기 제2 문서에 관한 복수의 필드들에 대응되는 제2 머클트리의 머클루트 값을 산출하는 단계;
    상기 산출된 제2 문서의 머클루트 값을 해싱하여 제1 해시 값을 산출하는 단계;
    상기 저장소로부터 상기 제1 문서의 제1 머클트리를 복원하는 단계 - 상기 제1 머클트리는 상기 제1 문서에 관한 복수의 필드들에 각각 대응되는 복수의 리프노드들을 가지며, 상기 복수의 리프노드들 중 제1 노드 값은 상기 제2 문서의 머클루트 값을 해싱한 값인 -;
    상기 제1 해시 값과 상기 제1 노드 값을 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 판정하는 단계
    를 포함하는,
    문서 관리 방법.
  13. 제12항에 있어서,
    상기 제1 문서의 위변조 여부를 판정하는 단계는,
    상기 저장소로부터 상기 제1 문서를 복원하는 단계;
    상기 복원된 제1 문서로부터 상기 제1 문서의 머클루트 값을 산출하는 단계;
    블록체인 네트워크로부터 상기 제1 문서의 머클루트 값을 조회하는 단계; 및
    상기 조회된 머클루트 값과 상기 산출된 머클루트 값이 불일치할 경우, 상기 제1 문서가 위변조 되었다고 판정하는 단계
    를 포함하는,
    문서 관리 방법.
  14. 제12항에 있어서,
    상기 제1 해시 값과 상기 제1 머클트리의 제2 노드 값을 함께 해싱한 제2 해시 값을, 상기 제1 머클트리의 제3 노드 값과 비교하는 단계; 및
    상기 제2 해시 값과 상기 제3 노드 값이 불일치할 경우, 상기 제1 문서 또는 상기 제2 문서가 위변조되었다고 판정하는 단계
    를 더 포함하되,
    상기 제1 머클트리의 제2 노드는 상기 제1 머클트리의 제1 노드의 형제 노드이고,
    상기 제1 머클트리의 제3 노드는 상기 제1 머클트리의 제1 노드 및 제2 노드의 부모 노드인,
    문서 관리 방법.
  15. 제14항에 있어서,
    블록체인 네트워크로부터 상기 제1 문서의 머클루트 값을 조회하는 단계; 및
    상기 제1 머클트리의 상기 제3 노드 값과 상기 제1 머클트리의 제4 노드 값을 함께 해싱한 제3 해시 값과, 상기 조회된 상기 제1 문서의 머클루트 값이 불일치할 경우, 상기 제1 문서 또는 상기 제2 문서가 위변조되었다고 판정하는 단계
    를 더 포함하되,
    상기 제3 노드 및 상기 제4 노드는 상기 제1 머클트리의 루트 노드의 자식 노드인,
    문서 관리 방법.
  16. 명령어를 포함하는 컴퓨터 판독 가능한 비일시적 저장 매체로서,
    상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    제1 문서에 대한 저장 요청에 응답하여, 상기 제1 문서에 관한 복수의 필드 각각에 대응되는 리프 노드들을 가지는 머클트리를 생성하는 단계;
    상기 머클트리의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계;
    상기 트랜잭션 객체를 서명하고, 상기 트랜잭션 객체를 기록하기 위하여 블록체인 네트워크에 전송하는 단계; 및
    상기 제1 문서에 대응되는 머클트리를 저장소에 저장하는 단계
    를 포함하는 동작들을 수행하도록 하되,
    상기 복수의 필드는 제2 문서의 머클루트 값을 평문(plain text)으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서이고,
    상기 머클트리를 생성하는 단계는,
    상기 머클트리의 리프 노드들 중 어느 하나에 상기 제2 문서의 머클루트 값을 저장하는 단계를 포함하고,
    상기 트랜잭션 객체를 생성하는 단계는,
    상기 머클트리의 리프 노드들 중 어느 하나에 저장된 상기 제2 문서의 머클루트 값을 포함하는 트랜잭션 객체를 생성하는 단계를 포함하는,
    컴퓨터 판독 가능한 비일시적 저장 매체.
  17. 명령어를 포함하는 컴퓨터 판독 가능한 비일시적 저장 매체로서,
    상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    제1 문서에 대한 위변조 검증 요청에 응답하여, 상기 제1 문서의 위변조 여부를 판정하는 단계;
    제2 문서를 식별하는 단계 - 상기 제1 문서와 상기 제2 문서는 각각 직전 문서의 머클루트 값을 평문으로 기록한 필드를 포함하고, 상기 제1 문서와 상기 제2 문서는 시계열적으로 연속되며, 상기 제2 문서는 상기 제1 문서의 직전 문서임 -;
    저장소로부터 상기 제2 문서를 복원하는 단계;
    상기 복원된 제2 문서로부터 상기 제2 문서에 관한 복수의 필드들에 대응되는 제2 머클트리의 머클루트 값을 산출하는 단계;
    상기 산출된 제2 문서의 머클루트 값을 해싱하여 제1 해시 값을 산출하는 단계;
    상기 저장소로부터 상기 제1 문서의 제1 머클트리를 복원하는 단계 - 상기 제1 머클트리는 상기 제1 문서에 관한 복수의 필드들에 각각 대응되는 복수의 리프노드들을 가지며, 상기 복수의 리프노드들 중 제1 노드 값은 상기 제2 문서의 머클루트 값을 해싱한 값인 -;
    상기 제1 해시 값과 상기 제1 노드 값을 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 제2 문서의 위변조 여부를 판정하는 단계
    를 포함하는 동작들을 수행하도록 하는,
    컴퓨터 판독 가능한 비일시적 저장 매체.
KR1020200152513A 2020-11-16 2020-11-16 블록체인 기반 문서 관리 방법 및 장치 KR102474866B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200152513A KR102474866B1 (ko) 2020-11-16 2020-11-16 블록체인 기반 문서 관리 방법 및 장치
KR1020220165858A KR102656323B1 (ko) 2020-11-16 2022-12-01 블록체인 기반 문서 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200152513A KR102474866B1 (ko) 2020-11-16 2020-11-16 블록체인 기반 문서 관리 방법 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220165858A Division KR102656323B1 (ko) 2020-11-16 2022-12-01 블록체인 기반 문서 관리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220066466A KR20220066466A (ko) 2022-05-24
KR102474866B1 true KR102474866B1 (ko) 2022-12-05

Family

ID=81807475

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200152513A KR102474866B1 (ko) 2020-11-16 2020-11-16 블록체인 기반 문서 관리 방법 및 장치
KR1020220165858A KR102656323B1 (ko) 2020-11-16 2022-12-01 블록체인 기반 문서 관리 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220165858A KR102656323B1 (ko) 2020-11-16 2022-12-01 블록체인 기반 문서 관리 방법 및 장치

Country Status (1)

Country Link
KR (2) KR102474866B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102620056B1 (ko) * 2023-07-11 2024-01-02 주식회사 지크립토 전자 서명 기반 데이터 저장 인증 기술을 지원하는신뢰 저장장치 및 그 장치의 구동방법, 그리고 위임 저장 인증 시스템

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024063519A1 (ko) * 2022-09-19 2024-03-28 주식회사 레드윗 블록체인 기반의 데이터 관리 방법, 장치 및 시스템
CN116303329A (zh) * 2023-05-25 2023-06-23 安徽中科晶格技术有限公司 基于区块链的分布式存储方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020096072A1 (ko) 2018-11-05 2020-05-14 라인플러스 주식회사 디앱에서 요구하는 높은 트랜잭션 처리량을 효율적으로 블록체인에서 처리하기 위한 방법 및 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130120734A (ko) 2012-04-26 2013-11-05 주식회사 씨드웍스 전자식 연구노트 처리방법
KR102053630B1 (ko) * 2018-03-13 2020-01-22 주식회사 웨이투빗 블록체인을 이용한 트랜잭션 처리 방법 및 이를 이용한 트랜잭션 관리 서버
CN111901121B (zh) * 2018-04-03 2023-09-29 创新先进技术有限公司 跨区块链的认证方法及装置、电子设备
KR102107237B1 (ko) * 2018-07-02 2020-06-03 김도영 블록체인 및 분산 인프라 P2P 모델 기반 PoR 증명을 이용한 인터넷 서비스 제공 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020096072A1 (ko) 2018-11-05 2020-05-14 라인플러스 주식회사 디앱에서 요구하는 높은 트랜잭션 처리량을 효율적으로 블록체인에서 처리하기 위한 방법 및 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102620056B1 (ko) * 2023-07-11 2024-01-02 주식회사 지크립토 전자 서명 기반 데이터 저장 인증 기술을 지원하는신뢰 저장장치 및 그 장치의 구동방법, 그리고 위임 저장 인증 시스템

Also Published As

Publication number Publication date
KR20220066466A (ko) 2022-05-24
KR102656323B1 (ko) 2024-04-11
KR20230002125A (ko) 2023-01-05

Similar Documents

Publication Publication Date Title
KR102474866B1 (ko) 블록체인 기반 문서 관리 방법 및 장치
CN110495132B (zh) 用于在分布式网络节点内生成、上传和执行代码区块的系统和方法
EP3579496B1 (en) A method for registering of a data as digital file in a blockchain database
CN109791591B (zh) 经由区块链进行身份和凭证保护及核实的方法和系统
US11621973B2 (en) Blockchain cybersecurity audit platform
US20190372769A1 (en) Blockchain-universal document identification
US10754848B2 (en) Method for registration of data in a blockchain database and a method for verifying data
US20190095909A1 (en) Method and system for controlling the performance of a contract using a distributed hash table and a peer-to-peer distributed ledger
CN110870253A (zh) 使用分布式分类账管理公共软件组件生态系统的系统和方法
US11228444B2 (en) Tracking provenance of digital data
US20220067669A1 (en) Predictive device maintenance
CN110866289B (zh) 基于区块链的数据处理方法、装置、服务器及存储介质
CN103150647B (zh) 报表文件处理方法、服务器和系统
WO2021255756A1 (en) Distributed ledger interface system for background verification of an individual
CN117036115A (zh) 合同数据的核验方法、装置和服务器
JP2021035041A (ja) チェーン横断的な相互運用性のためのコンピュータ実装方法
CN110457332B (zh) 一种信息处理方法及相关设备
Guercio et al. Managing authenticity through the digital resource lifecycle
KR102525564B1 (ko) 인공 지능 및 블록체인을 이용한 연구 개발 관리 시스템 및 해당 시스템의 동작 방법
CN113660097B (zh) 基于区块链的数据流转系统、数据流转方法及装置
CN112667661B (zh) 一种溯源信息关联查询方法及装置
SAMARAKKODY Vehicle Record/History Maintenance through Blockchain Technology
Hassan Beyond Cryptocurrency: Social and Cultural Uses of the Blockchain
Rojas RDF management založený na technologii Blockchain
CN116523612A (zh) 一种测评信息共享方法、计算机设备及存储介质

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant