KR101727134B1 - 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 - Google Patents

파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 Download PDF

Info

Publication number
KR101727134B1
KR101727134B1 KR1020150188986A KR20150188986A KR101727134B1 KR 101727134 B1 KR101727134 B1 KR 101727134B1 KR 1020150188986 A KR1020150188986 A KR 1020150188986A KR 20150188986 A KR20150188986 A KR 20150188986A KR 101727134 B1 KR101727134 B1 KR 101727134B1
Authority
KR
South Korea
Prior art keywords
transaction
server
specific file
message digest
specific
Prior art date
Application number
KR1020150188986A
Other languages
English (en)
Inventor
어준선
홍재우
송주한
Original Assignee
주식회사 코인플러그
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 코인플러그 filed Critical 주식회사 코인플러그
Priority to KR1020150188986A priority Critical patent/KR101727134B1/ko
Application granted granted Critical
Publication of KR101727134B1 publication Critical patent/KR101727134B1/ko

Links

Images

Classifications

    • 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/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • 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/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • 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/3825Use of electronic 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/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES 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/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Abstract

본 발명의 일 태양에 따르면, 파일에 대한 공증을 수행하는 방법에 있어서, (a) 특정 파일에 대한 공증 요청이 획득되면, 서버가, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 단계, (b) 특정 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 특정 사용자의 private key로 인코딩된 message digest를 상기 특정 사용자의 public key로 디코딩한 정보(A)와 상기 (a) 단계에서 생성된 message digest(B)가 일치하면, 상기 서버가, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하는 단계, (c) 상기 서버가, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하는 단계, (d) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 서버가, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 단계, (e) 상기 서버가, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및 (f) 상기 서버가, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 단계를 포함하는 방법이 제공된다.

Description

파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버{METHOD AND SERVER FOR NOTARIZING, VERIFYING AND REVOKING FILE}
본 발명은, 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버에 관한 것으로, 좀더 상세하게는, (i) 특정 파일에 대한 공증 요청이 획득되면, 특정 사용자의 public key 및 서버의 public key로부터 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하고, 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 기록하거나 기록하도록 지원하는 “등록 프로세스”를 수행하고, 상기 등록된 fully signed transaction에 대한 transaction ID를 관리하고 있는 상태에서, (ii) 상기 특정 파일에 대한 검증 요청이 획득되면, 상기 특정 파일의 transaction ID를 참조하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하고, 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 transaction ID에 대응되는 unspent 출력값이 존재하면, 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 “검증 프로세스”를 수행하며, (iii) 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 특정 파일의 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하고, 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 transaction ID에 대응되는 unspent 출력값이 존재하면, unspent된 가상 화폐를 사용하는 새로운 transaction을 생성하거나 생성하도록 지원하는 “파기 프로세스”를 수행하는, 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버에 관한 것이다.
공증(公證)이란, 특정한 사실 또는 법률관계의 존재여부나 내용을 공적으로 증명하는 행위를 말한다. 일반적으로 특정 법률관계에 대하여 공증 촉탁이 있는 경우, 공증인은 일정한 방식에 따라서 증서를 작성하고 기명 날인하여 공증 사무소에 보관한다.
그런데, 종래의 공증 방법은 촉탁인이 공증할 서류를 들고 직접 공증 사무소를 방문하여 공증을 받고, 공증 사무소는 이에 대한 증서를 서류 보관소에 보관하는 방식으로 이루어졌으므로 공증을 받는데 시간이 오래 걸리고 공간적인 제약이 있으며 공증 서류의 분실 내지 위/변조 가능성이 있는 문제점이 있었다.
이에 발명자는, 가상 화폐의 블록체인에 공증 정보를 기록하여 위/변조가 불가능하고 공간적 제약이 없이 실시간으로 공증을 수행할 수 있는 파일 공증 시스템을 개발하기에 이르렀다. 특히, 본 명세서에서 발명자는 비트 코인의 다중 서명 기술을 이용하여 위/변조가 불가능하고 공간적 제약이 없이 실시간으로 파일의 공증, 검증 및 파기를 수행할 수 있는 파일 공증 시스템을 제안한다.
본 발명은 상술한 문제점들을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 가상 화폐의 블록체인에 공증 정보를 기록하여 위/변조가 불가능하고 공간적 제약이 없이 실시간으로 공증, 검증 및 파기를 수행할 수 있는 파일 공증 시스템을 제공하는 것을 다른 목적으로 한다.
또한, 본 발명은 해쉬함수와 암호화 기술을 이용하여 보안이 보장되고 위/변조가 불가능하며 공간적 제약이 없이 실시간으로 파일에 대한 공증, 검증 및 파기를 수행할 수 있는 파일 공증 시스템을 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 비트 코인의 다중 서명 기술을 이용하여 보안이 좀더 안전하게 보장되고 위/변조가 불가능하며 공간적 제약이 없이 실시간으로 파일에 대한 공증, 검증 및 파기를 수행할 수 있는 파일 공증 시스템을 제공하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 파일에 대한 공증을 수행하는 방법에 있어서, (a) 특정 파일에 대한 공증 요청이 획득되면, 서버가, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 단계, (b) 특정 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 특정 사용자의 private key로 인코딩된 message digest를 상기 특정 사용자의 public key로 디코딩한 정보(A)와 상기 (a) 단계에서 생성된 message digest(B)가 일치하면, 상기 서버가, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하는 단계, (c) 상기 서버가, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하는 단계, (d) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 서버가, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 단계, (e) 상기 서버가, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및 (f) 상기 서버가, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 단계를 포함하는 방법이 제공된다.
또한, 본 발명의 다른 태양에 따르면, 파일에 대한 검증을 수행하는 방법에 있어서, (a) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 검증 요청이 획득되면, 상기 서버가, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 transaction ID를 참조하는 단계, (b) 상기 서버가, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하는 단계, 및 (c) (i) 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, (ii) 상기 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 단계를 포함하는 방법이 제공된다.
또한, 본 발명의 또 다른 태양에 따르면, 공증된 파일을 파기하는 방법에 있어서, (a) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 서버가, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 상기 제1 transaction ID를 참조하는 단계, (b) 상기 서버가, 상기 제1 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하는 단계, 및 (c) 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 상기 서버가, unspent된 가상 화폐를 사용하여 제2 transaction을 생성하거나 생성하도록 지원하는 단계, (d) 상기 서버가, 상기 제2 transaction을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및 (e) 상기 서버가, 상기 제2 transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제2 transaction ID를 획득하는 단계를 포함하는 방법이 제공된다.
또한, 본 발명의 또 다른 태양에 따르면, 파일에 대한 공증을 수행하는 서버에 있어서, 특정 파일에 대한 공증 요청을 획득하는 통신부, 및 (i) 상기 특정 파일에 대한 공증 요청이 획득되면, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하고, (ii) 특정 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 특정 사용자의 private key로 인코딩된 message digest를 상기 특정 사용자의 public key로 디코딩한 정보(A)와 상기 (a) 단계에서 생성된 message digest(B)가 일치하면, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하고, (iii) 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하며, (iv) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 프로세서를 포함하고, 상기 통신부는, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하고, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 서버가 제공된다.
또한, 본 발명의 또 다른 태양에 따르면, 파일에 대한 검증을 수행하는 서버에 있어서, 특정 파일에 대한 검증 요청을 획득하는 통신부, 및 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 검증 요청이 획득되면, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 transaction ID를 참조하는 프로세서를 포함하고, 상기 통신부는, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하고, 상기 프로세서는, (i) 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, (ii) 상기 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 서버가 제공된다.
또한, 본 발명의 또 다른 태양에 따르면, 공증된 파일을 파기하는 서버에 있어서, 특정 파일에 대한 파기 요청을 획득하는 통신부, 및 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 상기 제1 transaction ID를 참조하는 프로세서를 포함하고, 상기 통신부는, 상기 제1 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하고, 상기 프로세서는, 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, unspent된 가상 화폐를 사용하여 제2 transaction을 생성하거나 생성하도록 지원하며, 상기 통신부는, 상기 제2 transaction을 상기 데이터베이스로 전송하고, 상기 제2 transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제2 transaction ID를 획득하는 서버가 제공된다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은 가상 화폐의 블록체인에 공증 정보를 기록하여 위/변조가 불가능하고 공간적 제약이 없이 실시간으로 공증, 검증 및 파기를 수행할 수 있는 파일 공증 시스템을 제공하는 효과가 있다.
또한, 본 발명은 해쉬함수와 암호화 기술을 이용하여 보안이 보장되고 위/변조가 불가능하며 공간적 제약이 없이 실시간으로 특정 파일에 대한 공증, 검증 및 파기를 수행할 수 있는 효과가 있다.
또한, 본 발명은 비트 코인의 다중 서명 기술을 이용하여 보안이 좀더 안전하게 보장되고 위/변조가 불가능하며 공간적 제약이 없이 실시간으로 특정 파일에 대한 공증, 검증 및 파기를 수행할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 파일에 대한 공증을 수행하는 서버의 구성을 도시한 블록도이다.
도 2 내지 7은 본 발명의 다양한 실시예에 따른 파일에 대한 공증 내지 검증을 수행하는 과정을 도시한 시퀀스 다이어그램이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
도 1은 본 발명의 일 실시예에 따른 파일에 대한 공증을 수행하는 서버의 구성을 도시한 블록도이고, 도 2 내지 7은 본 발명의 다양한 실시예에 따른 파일에 대한 공증, 검증 내지 파기를 수행하는 과정을 도시한 시퀀스 다이어그램이다.
실시예에 대한 설명에 앞서 본 명세서에서 사용되는 표현식을 다음과 같이 정의한다. ':' 의 왼쪽은 표현식을 나타내며 오른쪽은 표현식의 정의를 나타낸다.
<표현식 정의>
PrivX : Private key of X
PubX : Public key of X
AESX : AES secret key of X
Enc PrivX (Y): Output of encryption of Y using PrivX
Dec PubX (Y): Output of decryption of Y using PubX
Enc AESX (Y): Output of AES encryption of Y using AESX
Dec AESX (Y): Output of AES decryption of Y using AESX
Hash(Y): Hash value of Y
SigECC256 PrivX (Y): ECC256 Signature of Y using PrivX
VerECC256 PubX (Y): ECC256 signature verification of Y using PubX
우선, 단일 사용자의 요청에 의해 파일에 대해 공증을 수행하는 과정을 도 1 및 2를 참조로 하여 설명한다.
도 1을 참조로 하면, 본 발명의 일 실시예에 따른 파일에 대한 공증을 수행하는 서버(100)는 통신부(110), 프로세서(120)를 포함한다.
통신부(110)는 사용자(또는 사용자 단말), 데이터베이스(200)에 데이터를 송수신하는 구성이다. 통신부(110)는 특정 파일에 대한 공증 요청을 획득할 수 있다(S205). 도 2에 도시된 것처럼 특정 파일에 대한 공증 요청이 획득되는 경우 특정 파일(File)과 공증 요청을 한 특정 사용자의 public key(PubU)가 획득될 수 있다. 통신부(110)는, 이에 대한 응답을 할 수 있는데(S215), 요청(request)과 대응되는 응답(response)는 하나의 TCP 세션 동안 이루어질 수 있다.
프로세서(120)는, 상기 특정 파일에 대한 공증 요청이 획득되면, hash 함수를 사용하여 상기 특정 파일의 message digest(MD=Hash(File))를 생성하거나 생성하도록 지원할 수 있다(S210). 여기서 hash 함수의 종류는 한정되지 않는다. 예를 들어, hash 함수는 triple sha256일 수 있다. 또한, 본 명세서에서 hash 함수는 일반적으로는 원본 파일을 변형시키기 위한 함수를 의미하지만, 극단적인 경우로서, 특정 파일에 대해 아무런 처리를 하지 않고 단순히 저장하는 함수를 포함할 수도 있다. 이 경우, hash 함수가 적용되어 생성된 message digest는 특정 파일과 동일할 수도 있을 것이다.
상기 S215 단계에서 상기 특정 파일에 대한 공증 요청에 대한 응답으로 상기 생성된 message digest가 특정 파일에 대한 공증 요청을 한 특정 사용자에게 전달될 수 있다. 상기 특정 사용자가 사용자 단말(미도시)을 통해 특정 파일에 대한 공증 요청을 한 경우라면, 사용자 단말로 상기 생성된 message digest가 전송될 수 있다.
다음으로 통신부(110)는 상기 특정 사용자로부터 상기 특정 사용자의 private key(PrivU)로 인코딩된 message digest(EncPrivU(MD))를 획득할 수 있다(S220). 이 경우, S215 단계의 응답 후 TCP 세션이 끊어질 수 있으므로 특정 사용자로부터 message digest와 특정 사용자의 public key(PubU)도 수신될 수 있다.
또한, 프로세서(120)는 특정 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 특정 사용자의 private key로 인코딩된 message digest를 상기 특정 사용자의 public key로 디코딩한 정보(A, DecPubU(EncPrivU(MD)))와 상기 생성된 message digest(B, MD)가 일치하면(S225-2), 상기 특정 사용자의 public key 및 서버(100)의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원할 수 있다(S235). 여기서, multisig address는 가상 화폐 시스템에서 사용되는 pay-to-script hash(P2SH) 주소일 수 있다. 예를 들어, multisig address는 비트 코인에서 사용되는 3으로 시작되는 주소일 수 있다.
multisig address가 생성되는 과정을 좀더 자세히 설명하면, 프로세서(120)는, 상기 특정 사용자의 public key 및 서버(100)의 public key를 사용하여 redeem script(RDS=Func(PubU, PubC))를 생성하거나 생성하도록 지원할 수 있다. redeem script란, P2SH 거래에서 해시로 대체되는 잠금 스크립트를 말한다. 프로세서(120)는, 상기 생성된 redeem script를 인코딩하여 상기 multisig address를 생성하거나 생성하도록 지원할 수 있다. 상기 인코딩은 Base58 인코딩일 수 있다(MSA=Base58Check(RDS)).
프로세서(120)는 이렇게 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원할 수 있다(S240). 본 발명이 비트 코인 프로토콜을 이용하여 구현되는 경우, 도 2에 도시된 것처럼 생성된 multisig address로 0.0002 BTC(물론, 구체적인 비트 코인 액수는 일 예에 불과하다.)가 전송될 수 있다.
상기 transaction이 승인이 되어(S245) 상기 multisig address가 데이터베이스(200) 상에 기록되면(여기서, 데이터베이스(200)는 가상 화폐의 블록체인일 수 있다.), 프로세서(120)는 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원할 수 있다(S250). 구체적으로, 프로세서(120)는, 상기 소정 액수의 가상 화폐를 입력으로 하고, 상기 message digest를 포함하는 OP 메시지(OP_RETURN) 및 상기 소정 액수의 제 1 부분을 상기 multisig address로 전송하는 transaction을 출력으로 하는 unsigned transaction을 생성하거나 생성하도록 지원할 수 있다. 상기 소정 액수에서 상기 제1 부분을 제외한 나머지 부분은 transaction fee로 사용될 수 있다. 전술한 예에서 프로세서(120)는 0.0002 BTC를 입력으로 하고 상기 message digest를 포함하는 OP 메시지 및 0.0001 BTC를 multisig address로 되돌려주는 transaction을 출력으로 하는 unsigned transaction을 생성하거나 생성하도록 지원할 수 있다. 이때, 나머지 0.0001 BTC는 transaction fee로 사용될 수 있다. 이렇게 생성된 unsigned transaction은 특정 사용자에게 전달될 수 있다(S255).
또한, 프로세서(120)는, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버(100)의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원할 수 있다(S265). 좀더 구체적으로 설명하면, 상기 특정 사용자에게 전달된 unsigned transaction은 특정 사용자의 private key로 서명되어 partially signed transaction(PST=SigECC256PrivU(UST))가 생성될 수 있고, 전술한 통신부(110)는 이렇게 생성된 partially signed transaction를 획득할 수 있다. 프로세서(120)는 상기 partially signed transaction을 서버(100)의 private key로 서명하여 fully signed transaction(FST=SigECC256PrivC[SigECC256PrivU(UST)]=SigECC256PrivC[PST])을 생성하거나 생성하도록 지원할 수 있다. 다만, 이와 달리, 서버(100)의 private key로 먼저 서명하여 partially signed transaction가 생성되고 이를 특정 사용자의 private key로 서명하여 fully signed transaction가 생성될 수도 있다. 즉, 본 발명에서 서명 순서는 한정되지 않는다.
통신부(100)는 상기 생성된 상기 fully signed transaction을 상기 데이터베이스(200)로 전송할 수 있다(S275). 그리고, 통신부(120)는 데이터베이스(200)로부터 상기 fully signed transaction이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득할 수 있다(S280).
한편, 상기 A와 상기 B가 일치하지 않으면(S225-1), 프로세서(120)는 상기 특정 사용자가 상기 특정 파일과 관련된 사람(예를 들어, 당사자)이 아니라는 이유로 특정 사용자에게 등록 실패 응답을 전달할 수 있다(S230).
또한, 프로세서(120)는 fully signed transaction를 생성하여 데이터베이스(200)에 전송하는 경우, 상기 특정 파일을 저장하거나 저장하도록 지원할 수 있다(S270). 이때, 특정 파일은 AES(Advanced Encryption Standard)와 같은 대칭키 암호 알고리즘으로 암호화될 수 있다. 이 경우 비밀키는 사용자의 public key로부터 가공된 특정한 비밀키일 수 있으나 이에 한정되는 것은 아니다.
상술한 실시예에서, 서버(100)는 특정 사용자의 public key, 특정 파일의 message digest, redeem script, multisig address, 상기 획득된 transaction ID를 저장하여 관리할 수 있다.
위와 같이 공증 정보가 데이터베이스(200)에 등록되면, 통신부(110)는 특정 사용자에게 등록이 성공했음을 나타내는 응답을 전달할 수 있다(S285).
다음으로, 단일 사용자의 요청에 따라 파일에 대해 검증을 수행하는 과정을 도 3을 참조로 하여 설명한다.
파일의 검증은 전술한 서버(100)의 정보를 참조할 수 있는 별도의 장치에 의해 수행될 수도 있고 전술한 서버(100)에 의해 수행될 수도 있다. 이하에서는 편의상 전술한 서버(100)에 의해 파일의 검증이 이루어지는 것을 전제로 설명을 한다.
도 3을 참조하면, 전술한 예와 유사하게 통신부(110)는 특정 파일에 대한 검증 요청을 획득할 수 있다(S305). 도 3에 도시된 것처럼 특정 파일에 대한 검증 요청이 획득되는 경우 특정 파일(File)과 검증 요청을 한 특정 사용자의 public key(PubU)가 획득될 수 있다. 통신부(110)는, 이에 대한 응답을 할 수 있는데, 요청(request)과 대응되는 응답(response)는 하나의 TCP 세션 동안 이루어질 수 있다.
프로세서(120)는 전술한 바와 같이 기존에 서버(100)가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 서버(100)의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 서버(100)의 private key로 서명한 fully signed transaction(FST)이 데이터베이스(200)로 전송되어, 상기 fully signed transaction의 상기 데이터베이스(200) 상의 위치 정보를 나타내는 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 검증 요청이 획득되면, 상기 특정 파일의 message digest(MD) 및 상기 특정 사용자의 public key 중 적어도 하나에 대응되는 transaction ID를 참조할 수 있다. 이 경우 transaction ID(TxID)는 서버(100) 또는 서버(100)가 참조할 수 있는 장치에 저장되어 있을 수 있다.
상기 S305 단계에서 통신부(110)가 상기 특정 파일에 대한 검증 요청을 받는 경우에 있어서, 상기 특정 파일에 대한 검증을 위해 상기 특정 파일이 획득되면, 프로세서(120)는 hash 함수를 사용하여 상기 특정 파일의 message digest(MD=Hash(File))를 생성하거나 생성하도록 지원할 수 있다(S310). 이 경우 프로세서(120)는 이렇게 생성된 특정 파일의 message digest 및 상기 특정 사용자의 public key 중 적어도 하나에 대응되는 transaction ID를 참조할 수 있는데, 이에 대해서는 조금 있다 설명한다.
상기 특정 파일에 대한 검증 요청이 있음에도 상기 특정 파일의 message digest에 대응되는 정보(transaction ID)가 발견되지 않으면(S315-1), 통신부(110)는 검증 실패 메시지를 특정 사용자에게 전송할 수 있다(S320).
반면, 상기 특정 파일의 message digest에 대응되는 정보(transaction ID)가 발견되면(S315-2) 통신부(110)는 상기 transaction ID(TxID)를 사용하여 데이터베이스(200)에 질의하여(S325) 상기 데이터베이스(200)로부터 상기 message digest를 포함하는 OP 메시지를 획득할 수 있다(S330).
그리고, 상기 특정 파일의 message digest 가 상기 OP 메시지(OP_RETURN)에 포함된 message digest와 동일하고, 상기 transaction ID에 대응되는 unspent 출력값(Vout, 상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 프로세서(120)는, 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원할 수 있다(S335).
파일의 검증이 성공한 경우, 통신부(110)는 검증 성공 메시지를 특정 사용자에게 전달할 수 있다(S340).
또한, 프로세서(120)는 상기 특정 파일이 검증된 경우, 상기 특정 파일의 다운로드를 지원할 수 있다. 이 경우 특정 사용자는 사용자 단말 등을 통해 특정 파일을 다운로드 받을 수 있다. 만일, 특정 파일이 암호화되어 있는 경우라면, 복호화를 수행하여 다운로드를 진행한다(DecAESC(EncAESC(File))).
한편, 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 상이하거나 상기 transaction ID에 대응되는 상기 unspent 출력값이 존재하지 않으면, 프로세서(120)는 검증이 실패한 것으로 판단하거나 판단하도록 지원하고 통신부(110)는 상기 특정 사용자에게 검증 실패 메시지를 전달할 수 있다.
한편, 공인인증서 파일의 경우 소정 기간이 경과하면 파일을 안전하게 파기시킬 필요가 있다. 이처럼 일부 파일들은 안전하면서도 확실한 파기를 필요로 한다.
이하에서 사용자의 요청에 따라 공증된 파일을 파기하는 과정을 도 4를 참조로 하여 설명한다.
마찬가지로 파일의 파기는 전술한 서버(100)의 정보를 참조할 수 있는 별도의 장치에 의해 수행될 수도 있고 전술한 서버(100)에 의해 수행될 수도 있다. 이하에서는 전술한 서버(100)에 의해 파일의 파기가 이루어지는 것을 전제로 설명을 한다.
파일 파기를 위한 요청 과정은 파일 검증 과정과 유사하게 진행된다. 도 4를 참조하면, 통신부(110)는 특정 파일에 대한 파기 요청을 획득할 수 있다(S405). 도 4에 도시된 것처럼 특정 파일에 대한 파기 요청이 획득되는 경우 특정 파일(File)과 파기 요청을 한 특정 사용자의 public key(PubU)가 획득될 수 있다. 통신부(110)는, 이에 대한 응답을 할 수 있는데, 요청(request)과 대응되는 응답(response)는 하나의 TCP 세션 동안 이루어질 수 있다.
프로세서(120)는 전술한 바와 같이 기존에 서버(100)가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 서버(100)의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 서버(100)의 private key로 서명한 fully signed transaction(FST)이 데이터베이스(200)로 전송되어, 상기 fully signed transaction의 상기 데이터베이스(200) 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 특정 파일의 message digest(MD) 및 상기 특정 사용자의 public key 중 적어도 하나에 대응되는 상기 제1 transaction ID를 참조할 수 있다. 이 경우 상기 제1 transaction ID(TxID)는 서버(100) 또는 서버(100)가 참조할 수 있는 장치에 저장되어 있을 수 있다.
상기 S405 단계에서 통신부(110)가 상기 특정 파일에 대한 파기 요청을 받는 경우에 있어서, 상기 특정 파일에 대한 파기를 위해 상기 특정 파일이 획득되면, 프로세서(120)는 hash 함수를 사용하여 상기 특정 파일의 message digest(MD=Hash(File))를 생성하거나 생성하도록 지원할 수 있다(S410). 이 경우 프로세서(120)는 이렇게 생성된 특정 파일의 message digest 및 상기 특정 사용자의 public key 중 적어도 하나에 대응되는 제1 transaction ID를 참조한다.
상기 특정 파일에 대한 파기 요청이 있음에도 상기 특정 파일의 message digest에 대응되는 정보(제1 transaction ID)가 발견되지 않으면(S415-1), 통신부(110)는 파기 실패 메시지를 특정 사용자에게 전송할 수 있다(S420).
반면, 상기 특정 파일의 message digest에 대응되는 정보(제1 transaction ID)가 발견되면(S415-2), 통신부(110)는 상기 제1 transaction ID(TxID)를 사용하여 데이터베이스(200)에 질의하여(S425) 상기 데이터베이스(200)로부터 message digest를 포함하는 OP 메시지를 획득할 수 있다(S430).
그리고, 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값(Vout, 상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 프로세서(120)는, unspent된 가상 화폐를 사용하여 제2 transaction을 생성하거나 생성하도록 지원할 수 있다(S440). 구체적으로, 이 경우, 프로세서(120)는 unspent된 가상 화폐를 입력값으로 하고, 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 unsigned transaction을 생성하거나 생성하도록 지원할 수 있다. 상기 unspent된 가상 화폐의 적어도 일부는 transaction fee로 사용된다. 전술한 예의 경우, 프로세서(120)는 unspent된 0.0001 BTC를 입력값으로 하고 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 unsigned transaction을 생성하거나 생성하도록 지원할 수 있다. 이처럼 unsigned transaction을 생성하는 이유는 파일을 완전하게 파기 하기 위해서는 특정 사용자와 서버(100) 모두의 서명이 필요하기 때문이다. 이렇게 생성된 unsigned transaction은 특정 사용자에게 전달될 수 있다.
프로세서(120)는, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버(100)의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원할 수 있다(S450). 좀더 구체적으로 설명하면, 상기 특정 사용자에게 전달된 unsigned transaction은 특정 사용자의 private key로 서명되어 partially signed transaction(PST=SigECC256PrivU(UST))가 생성될 수 있고, 전술한 통신부(110)는 이렇게 생성된 partially signed transaction를 획득할 수 있다(S445). 프로세서(120)는 상기 partially signed transaction을 서버(100)의 private key로 서명하여 fully signed transaction(FST=SigECC256PrivC[SigECC256PrivU(UST)]=SigECC256PrivC[PST])을 생성하거나 생성하도록 지원할 수 있다(S450). 이와 달리, 서버(100)의 private key로 먼저 서명하여 partially signed transaction가 생성되고 이를 특정 사용자의 private key로 서명하여 fully signed transaction가 생성될 수도 있다. 즉, 본 발명에서 서명 순서는 한정되지 않는다.
통신부(100)는 상기 생성된 상기 fully signed transaction을 상기 데이터베이스(200)로 전송할 수 있다(S455). 그리고, 통신부(120)는 데이터베이스(200)로부터 상기 fully signed transaction(제2 transaction)이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 제2 transaction ID(TxID')를 획득할 수 있다(S460).
파일의 파기가 성공한 경우, 통신부(110)는 파기 성공 메시지를 특정 사용자에게 전달할 수 있다(S465).
한편, 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 상이하거나, 상기 제1 transaction ID에 대응되는 상기 unspent 출력값이 존재하지 않으면, 프로세서(120)는 파기가 실패한 것으로 판단하거나 판단하도록 지원하고 통신부(110)는 상기 특정 사용자에게 파기 실패 메시지를 전달할 수 있다.
이하에서는 다중 사용자에 관한 실시예를 설명한다. 먼저, 다중 사용자의 요청에 의해 파일에 대해 공증을 수행하는 과정을 도 5를 참조로 하여 설명한다. 다만, 앞서는 실시예와 중복되는 설명은 생략한다.
도 5를 참조하면, 프로세서(120)는, 전술한 실시예와 유사하게 상기 특정 파일에 대한 공증 요청이 획득되면(S505), hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원한다(S510). 또한, 프로세서(120)는 제1 사용자의 private key로 인코딩된 message digest 및 제2 사용자의 private key로 인코딩된 message digest가 획득되고(S520, S550), 상기 제1 사용자의 private key로 인코딩된 message digest를 상기 제1 사용자의 public key로 디코딩한 정보(A'), 상기 제2 사용자의 private key로 인코딩된 message digest를 상기 제2 사용자의 public key로 디코딩한 정보(B') 및 상기 생성된 message digest(C')가 일치하면(S525-3), 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버(100)의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원할 수 있다(S560). 구체적으로, 프로세서(120)는, 제1 사용자의 public key, 제2 사용자의 public key 및 상기 서버(100)의 public key를 사용하여 redeem script(RDS=Func(PubU1, PubU2, PubC))를 생성하거나 생성하도록 지원할 수 있고, 상기 생성된 redeem script를 인코딩하여 상기 multisig address(MSA=Base58Check(RDS))를 생성하거나 생성하도록 지원할 수 있다.
또한, 이 경우, 프로세서(120)는, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하고(S565), 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면(S570), 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원할 수 있다(S575).
또한, 통신부(110)는, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버(100)의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스(200)로 전송할 수 있다(S596). 구체적으로, 통신부(110)는, 상기 생성된 unsigned transaction을 상기 제1 사용자에게 전송하여 제1 사용자가 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key로 서명하여 제1 partially signed transaction(PST1=SigECC256PrivU1(UST))가 생성되도록 할 수 있다. 통신부(110)는 이렇게 생성된 제1 partially signed transaction(PST1)를 획득하고 이를 제2 사용자에게 전달하여 제2 사용자가 상기 생성된 제1 partially signed transaction(PST1)을 상기 제2 사용자의 private key로 서명하여 제2 partially signed transaction(PST2= SigECC256PrivU2(PST1))가 생성되도록 할 수 있다. 통신부(110)는 제2 사용자로부터 제2 partially signed transaction를 획득하고, 프로세서(120)는, 상기 제2 partially signed transaction을 상기 서버(100)의 private key로 서명한 fully signed transaction(FST=SigECC256PrivC[SigECC256PrivU2(PST1)]=SigECC256PrivC[PST2])을 생성하거나 생성하도록 지원할 수 있다.
또한, 통신부(110)는, 상기 생성된 상기 fully signed transaction 을 상기 데이터베이스(200)로 전송할 수 있다(S596). 통신부(110)는, 상기 fully signed transaction이 상기 데이터베이스(200) 상에 기록된 위치 정보를 나타내는 transaction ID를 획득할 수 있다(S597).
이하에서는 다중 사용자의 요청에 의해 공증된 파일에 대한 검증을 수행하는 과정을 도 6을 참조로 하여 설명한다. 다만, 앞서는 실시예와 중복되는 설명은 생략한다.
도 6을 참조하면, 프로세서(120)는, 전술한 것처럼 기존에 서버(100)가 상기 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제1 사용자 및 제2 사용자임이 감지되어, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버(100)의 private key로 서명한 fully signed transaction(FST)이 데이터베이스(200)로 전송되어, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 검증 요청이 획득되면(S605), 상기 특정 파일의 message digest 및 검증 요청을 한 특정 사용자의 public key 중 적어도 하나에 대응되는 transaction ID를 참조한다.
이때, 통신부(110)는, 상기 transaction ID를 사용하여 상기 데이터베이스(200)로부터 상기 message digest를 포함하는 OP 메시지를 획득할 수 있다(S625, S630).
프로세서(120)는, 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 transaction ID에 대응되는 unspent 출력값(Vout, 상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면(S635), 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원할 수 있다.
이하에서는 다중 사용자의 요청에 의해 공증된 파일을 파기하는 과정을 도 7을 참조로 하여 설명한다. 다만, 앞서는 실시예와 중복되는 설명은 생략한다.
도 7을 참조로 하면, 프로세서(120)는, 전술한 것처럼 기존에 서버(100)가 상기 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제1 사용자 및 제2 사용자임이 감지되어, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버(100)의 private key로 서명한 fully signed transaction(FST)이 데이터베이스(200)로 전송되어, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면(S705), 상기 특정 파일의 message digest 및 검증 요청을 한 특정 사용자의 public key중 적어도 하나에 대응되는 제1 transaction ID를 참조한다.
이때, 통신부(110)는, 상기 제1 transaction ID를 사용하여 상기 데이터베이스(200)로부터 상기 message digest를 포함하는 OP 메시지를 획득할 수 있다(S725, S730).
프로세서(120)는, 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값(Vout, 상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면(S735), unspent된 가상 화폐를 사용하여 제2 transaction을 생성하거나 생성하도록 지원할 수 있다(S755). 구체적으로, 이 경우, 프로세서(120)는, unspent된 가상 화폐를 입력값으로 하고, 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 unsigned transaction을 생성하거나 생성하도록 지원할 수 있고, 통신부(110)는, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key로 서명한 제1 partially signed transaction(PST1=SigECC256PrivU1(UST))을 획득하고(S745), 상기 생성된 제1 partially signed transaction을 상기 제2 사용자의 private key로 서명한 제2 partially signed transaction(PST2=SigECC256PrivU2(PST1))을 획득할 수 있다(S750).
또한, 프로세서(120)는, 상기 제2 transaction으로서, 상기 제2 partially signed transaction을 상기 서버(100)의 private key로 서명한 fully signed transaction(FST=SigECC256PrivC[SigECC256PrivU2(PST1)]=SigECC256PrivC[PST2])을 생성하거나 생성하도록 지원할 수 있다(S755). 프로세서(120)는 생성된 fully signed transaction을 데이터베이스(200)로 전송하고(S760), 상기 제2 transaction의 상기 데이터베이스(200) 상의 위치 정보를 나타내는 제2 transaction ID(TxID')를 획득할 수 있다(S765). 제1 사용자와 제2 사용자는 모두 파기 성공 메시지를 획득할 수 있다(S770, S775).
한편, 전술한 프로세서(120)는 통신부(110) 및 다른 구성요소 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 프로세서(120)는 서버(100)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 통신부(110) 및 다른 구성요소에서 각각 고유 기능을 수행하도록 제어한다.
프로세서(120)는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 어플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
또한, 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100 : 서버
110 : 통신부
120 : 프로세서
200 : 데이터베이스

Claims (56)

  1. 파일에 대한 공증을 수행하는 방법에 있어서,
    (a) 특정 파일에 대한 공증 요청이 획득되면, 서버가, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 단계,
    (b) 특정 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 특정 사용자의 private key로 인코딩된 message digest를 상기 특정 사용자의 public key로 디코딩한 정보(A)와 상기 (a) 단계에서 생성된 message digest(B)가 일치하면, 상기 서버가, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하는 단계,
    (c) 상기 서버가, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하는 단계,
    (d) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 서버가, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 단계,
    (e) 상기 서버가, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및
    (f) 상기 서버가, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 (b) 단계에서,
    (b1) 상기 서버는, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 redeem script를 생성하거나 생성하도록 지원하는 단계,
    (b2) 상기 서버는, 상기 생성된 redeem script를 인코딩하여 상기 multisig address를 생성하거나 생성하도록 지원하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 (d) 단계에서,
    상기 transaction이 승인이 되면, 상기 서버가, 상기 소정 액수의 가상 화폐를 입력으로 하고, 상기 message digest를 포함하는 OP 메시지 및 상기 소정 액수의 제 1 부분을 상기 multisig address로 전송하는 transaction을 출력으로 하는 상기 unsigned transaction을 생성하거나 생성하도록 지원하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 소정 액수에서 상기 제1 부분을 제외한 나머지 부분은 transaction fee로 사용되는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 (e) 단계는,
    (e1) 상기 서버가, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key로 서명한 partially signed transaction(PST)을 획득하는 단계,
    (e2) 상기 서버가, 상기 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하는 단계,
    (e3) 상기 서버가, 상기 생성된 상기 fully signed transaction 을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 특정 파일에 대한 공증 요청은 상기 특정 사용자의 public key 전송을 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 (a) 단계 이후에,
    (a1) 상기 서버가, 상기 생성된 특정 파일의 message digest를 상기 특정 사용자에게 전달하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서,
    상기 (a1) 단계 이후에,
    (a2) 상기 서버가, 상기 특정 사용자의 private key로 인코딩된 message digest, 상기 특정 사용자의 public key 및 상기 message digest를 획득하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 데이터베이스는 가상 화폐의 블록체인인 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 (e) 단계에서,
    상기 서버는, 상기 특정 파일을 저장하거나 저장하도록 지원하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 특정 파일은 AES encryption되어 저장되는 것을 특징으로 하는 방법.
  12. 제2항에 있어서,
    상기 서버는,
    상기 특정 사용자의 public key, 상기 특정 파일의 message digest, 상기 redeem script, 상기 multisig address, 상기 획득된 transaction ID를 저장하거나 저장하도록 지원하는 것을 특징으로 하는 방법.
  13. 제1항에 있어서,
    상기 A와 B가 일치하지 않으면,
    상기 서버는, 상기 특정 사용자가 상기 특정 파일과 관련된 사람이 아니라는 정보를 통지하는 것을 특징으로 하는 방법.
  14. 파일에 대한 검증을 수행하는 방법에 있어서,
    (a) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 검증 요청이 획득되면, 상기 서버가, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 transaction ID를 참조하는 단계,
    (b) 상기 서버가, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하는 단계, 및
    (c) (i) 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, (ii) 상기 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 (a) 단계에서,
    상기 서버는,
    상기 특정 파일에 대한 검증 요청이 있음에도 상기 특정 파일의 message digest에 대응되는 정보가 발견되지 않으면, 검증 실패 메시지를 전송하는 것을 특징으로 하는 방법.
  16. 제14항에 있어서,
    상기 특정 파일에 대한 검증 요청은 상기 특정 사용자의 public key 전송을 포함하는 것을 특징으로 하는 방법.
  17. 제14항에 있어서,
    상기 (a) 단계에서 상기 서버가 상기 특정 파일에 대한 검증 요청을 받는 경우에 있어서,
    상기 특정 파일에 대한 검증을 위해 상기 특정 파일이 획득되면, 상기 서버는, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 방법.
  18. 제14항에 있어서,
    (d) 상기 특정 파일이 검증된 경우, 상기 서버가, 상기 특정 파일의 다운로드를 지원하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  19. 제14항에 있어서,
    상기 데이터베이스는 가상 화폐의 블록체인인 것을 특징으로 하는 방법.
  20. 제14항에 있어서,
    상기 (c) 단계에서,
    (i) 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 상이하거나 (ii) 상기 transaction ID에 대응되는 상기 unspent 출력값이 존재하지 않으면, 상기 서버는, 상기 특정 사용자에게 검증 실패 메시지를 전달하는 것을 특징으로 하는 방법.
  21. 공증된 파일을 파기하는 방법에 있어서,
    (a) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 서버가, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 상기 제1 transaction ID를 참조하는 단계,
    (b) 상기 서버가, 상기 제1 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하는 단계, 및
    (c) 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 상기 서버가, unspent된 가상 화폐를 사용하여 제2 transaction을 생성하거나 생성하도록 지원하는 단계,
    (d) 상기 서버가, 상기 제2 transaction을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계,
    (e) 상기 서버가, 상기 제2 transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제2 transaction ID를 획득하는 단계를 포함하는 방법.
  22. 제21항에 있어서,
    상기 (c) 단계는,
    (c1) 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값이 존재하면, 상기 서버가, unspent된 가상 화폐를 입력값으로 하고, 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 unsigned transaction을 생성하거나 생성하도록 지원하는 단계,
    (c2) 상기 서버가, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key로 서명한 partially signed transaction(PST)을 획득하는 단계, 및
    (c3) 상기 서버가, 상기 제2 transaction으로서, 상기 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하는 단계를 포함하는 것을 특징으로 하는 방법.
  23. 제21항에 있어서,
    상기 unspent된 가상 화폐의 적어도 일부는 transaction fee로 사용되는 것을 특징으로 하는 방법.
  24. 제21항에 있어서,
    상기 데이터베이스는 가상 화폐의 블록체인인 것을 특징으로 하는 방법.
  25. 제21항에 있어서,
    상기 (a) 단계에서,
    상기 서버는,
    상기 특정 파일에 대한 파기 요청이 있음에도 상기 특정 파일의 message digest에 대응되는 정보가 발견되지 않으면, 파기 실패 메시지를 전송하는 것을 특징으로 하는 방법.
  26. 제21항에 있어서,
    상기 특정 파일에 대한 파기 요청은 상기 특정 사용자의 public key 전송을 포함하는 것을 특징으로 하는 방법.
  27. 제21항에 있어서,
    상기 (a) 단계에서 상기 서버가 상기 특정 파일에 대한 파기 요청을 받는 경우에 있어서,
    상기 특정 파일에 대한 파기를 위해 상기 특정 파일이 획득되면, 상기 서버는, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 방법.
  28. 제21항에 있어서,
    상기 (c) 단계에서,
    상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 상이하거나, 상기 제1 transaction ID에 대응되는 상기 unspent 출력값이 존재하지 않으면, 상기 서버가, 상기 특정 사용자에게 파기 실패 메시지를 전송하는 것을 특징으로 하는 방법.
  29. 파일에 대한 공증을 수행하는 서버에 있어서,
    특정 파일에 대한 공증 요청을 획득하는 통신부, 및
    (i) 상기 특정 파일에 대한 공증 요청이 획득되면, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하고, (ii) 특정 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 특정 사용자의 private key로 인코딩된 message digest를 상기 특정 사용자의 public key로 디코딩한 정보(A)와 상기 (i)에서 생성된 message digest(B)가 일치하면, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하고, (iii) 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하며, (iv) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 프로세서를 포함하고,
    상기 통신부는,
    상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하고, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 서버.
  30. 제29항에 있어서,
    상기 (ii)에서,
    상기 프로세서는, 상기 특정 사용자의 public key 및 상기 서버의 public key를 사용하여 redeem script를 생성하거나 생성하도록 지원하고, 상기 생성된 redeem script를 인코딩하여 상기 multisig address를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
  31. 제29항에 있어서,
    상기 (iv)에서,
    상기 transaction이 승인이 되면, 상기 프로세서가, 상기 소정 액수의 가상 화폐를 입력으로 하고, 상기 message digest를 포함하는 OP 메시지 및 상기 소정 액수의 제 1 부분을 상기 multisig address로 전송하는 transaction을 출력으로 하는 상기 unsigned transaction을 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
  32. 제31항에 있어서,
    상기 소정 액수에서 상기 제1 부분을 제외한 나머지 부분은 transaction fee로 사용되는 것을 특징으로 하는 서버.
  33. 제29항에 있어서,
    상기 통신부는, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key로 서명한 partially signed transaction(PST)을 획득하고,
    상기 프로세서는, 상기 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하며,
    상기 통신부는 상기 생성된 상기 fully signed transaction을 상기 데이터베이스로 전송하는 것을 특징으로 하는 서버.
  34. 제29항에 있어서,
    상기 특정 파일에 대한 공증 요청은 상기 특정 사용자의 public key 전송을 포함하는 것을 특징으로 하는 서버.
  35. 제34항에 있어서,
    상기 (i) 이후에,
    상기 프로세서가, 상기 생성된 특정 파일의 message digest를 상기 특정 사용자에게 전달하는 것을 특징으로 하는 서버.
  36. 제35항에 있어서,
    상기 message digest의 전달 후, 상기 프로세서가, 상기 특정 사용자의 private key로 인코딩된 message digest, 상기 특정 사용자의 public key 및 상기 message digest를 획득하는 것을 특징으로 하는 서버.
  37. 제29항에 있어서,
    상기 데이터베이스는 가상 화폐의 블록체인인 것을 특징으로 하는 서버.
  38. 제29항에 있어서,
    상기 프로세서는, 상기 특정 파일을 저장하거나 저장하도록 지원하는 것을 특징으로 하는 서버.
  39. 제38항에 있어서,
    상기 특정 파일은 AES encryption되어 저장되는 것을 특징으로 하는 서버.
  40. 제30항에 있어서,
    상기 프로세서는,
    상기 특정 사용자의 public key, 상기 특정 파일의 message digest, 상기 redeem script, 상기 multisig address, 상기 획득된 transaction ID를 저장하거나 저장하도록 지원하는 것을 특징으로 하는 서버.
  41. 제29항에 있어서,
    상기 A와 B가 일치하지 않으면,
    상기 통신부는, 상기 특정 사용자가 상기 특정 파일과 관련된 사람이 아니라는 정보를 통지하는 것을 특징으로 하는 서버.
  42. 파일에 대한 검증을 수행하는 서버에 있어서,
    특정 파일에 대한 검증 요청을 획득하는 통신부,
    기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 검증 요청이 획득되면, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 transaction ID를 참조하는 프로세서를 포함하고,
    상기 통신부는,
    상기 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하고,
    상기 프로세서는,
    (i) 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 동일하고, (ii) 상기 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, 상기 transaction ID에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 서버.
  43. 제42항에 있어서,
    상기 통신부는,
    상기 특정 파일에 대한 검증 요청이 있음에도 상기 특정 파일의 message digest에 대응되는 정보가 발견되지 않으면, 검증 실패 메시지를 전송하는 것을 특징으로 하는 서버.
  44. 제42항에 있어서,
    상기 특정 파일에 대한 검증 요청은 상기 특정 사용자의 public key 전송을 포함하는 것을 특징으로 하는 서버.
  45. 제42항에 있어서,
    상기 특정 파일에 대한 검증 요청을 받는 경우에 있어서, 상기 특정 파일에 대한 검증을 위해 상기 특정 파일이 획득되면, 상기 프로세서는, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
  46. 제42항에 있어서,
    상기 특정 파일이 검증된 경우, 상기 프로세서가, 상기 특정 파일의 다운로드를 지원하는 단계를 더 포함하는 것을 특징으로 하는 서버.
  47. 제42항에 있어서,
    상기 데이터베이스는 가상 화폐의 블록체인인 것을 특징으로 하는 서버.
  48. 제42항에 있어서,
    상기 통신부는,
    (i) 상기 특정 파일의 message digest 가 상기 OP 메시지에 포함된 message digest와 상이하거나 (ii) 상기 transaction ID에 대응되는 상기 unspent 출력값이 존재하지 않으면, 상기 특정 사용자에게 검증 실패 메시지를 전달하는 것을 특징으로 하는 서버.
  49. 공증된 파일을 파기하는 서버에 있어서,
    특정 파일에 대한 파기 요청을 획득하는 통신부, 및
    기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 특정 사용자임이 감지되어, 상기 특정 사용자의 public key 및 상기 서버의 public key를 이용하여 multisig address가 생성되고, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction이 수행되고, 상기 transaction이 승인이 되어 상기 소정 액수의 가상 화폐 및 상기 특정 파일의 message digest와 관련된 unsigned transaction이 생성되고, 상기 생성된 unsigned transaction을 상기 특정 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 특정 파일의 message digest 및 상기 특정 사용자의 public key중 적어도 하나에 대응되는 상기 제1 transaction ID를 참조하는 프로세서를 포함하고,
    상기 통신부는,
    상기 제1 transaction ID를 사용하여 상기 데이터베이스로부터 상기 message digest를 포함하는 OP 메시지를 획득하고,
    상기 프로세서는,
    상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값(상기 소정 액수의 가상 화폐 중 잔액이 남아 있는 경우의 출력값)이 존재하면, unspent된 가상 화폐를 사용하여 제2 transaction을 생성하거나 생성하도록 지원하며,
    상기 통신부는, 상기 제2 transaction을 상기 데이터베이스로 전송하고, 상기 제2 transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제2 transaction ID를 획득하는 서버.
  50. 제49항에 있어서,
    상기 프로세서는,
    상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 상기 unspent 출력값이 존재하면, unspent된 가상 화폐를 입력값으로 하고, 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 unsigned transaction을 생성하거나 생성하도록 지원하고,
    상기 통신부는,
    상기 생성된 unsigned transaction을 상기 특정 사용자의 private key로 서명한 partially signed transaction(PST)을 획득하며,
    상기 프로세서는, 상기 제2 transaction으로서, 상기 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
  51. 제49항에 있어서,
    상기 unspent된 가상 화폐의 적어도 일부는 transaction fee로 사용되는 것을 특징으로 하는 서버.
  52. 제49항에 있어서,
    상기 데이터베이스는 가상 화폐의 블록체인인 것을 특징으로 하는 서버.
  53. 제49항에 있어서,
    상기 통신부는,
    상기 특정 파일에 대한 파기 요청이 있음에도 상기 특정 파일의 message digest에 대응되는 정보가 발견되지 않으면, 파기 실패 메시지를 전송하는 것을 특징으로 하는 서버.
  54. 제49항에 있어서,
    상기 특정 파일에 대한 파기 요청은 상기 특정 사용자의 public key 전송을 포함하는 것을 특징으로 하는 서버.
  55. 제49항에 있어서,
    상기 서버가 상기 특정 파일에 대한 파기 요청을 받는 경우에 있어서, 상기 특정 파일에 대한 파기를 위해 상기 특정 파일이 획득되면, 상기 프로세서는, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
  56. 제49항에 있어서,
    상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 상이하거나, 상기 제1 transaction ID에 대응되는 상기 unspent 출력값이 존재하지 않으면, 상기 통신부가, 상기 특정 사용자에게 파기 실패 메시지를 전송하는 것을 특징으로 하는 서버.

KR1020150188986A 2015-12-29 2015-12-29 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 KR101727134B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150188986A KR101727134B1 (ko) 2015-12-29 2015-12-29 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150188986A KR101727134B1 (ko) 2015-12-29 2015-12-29 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버

Publications (1)

Publication Number Publication Date
KR101727134B1 true KR101727134B1 (ko) 2017-04-26

Family

ID=58704822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150188986A KR101727134B1 (ko) 2015-12-29 2015-12-29 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버

Country Status (1)

Country Link
KR (1) KR101727134B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101950507B1 (ko) * 2017-11-06 2019-02-20 주식회사 큐버 카메라 촬영 영상에 대한 블록체인 기반의 보안 처리 방법
CN109409890A (zh) * 2018-11-13 2019-03-01 华瓴(南京)信息技术有限公司 一种基于区块链的电力交易系统及方法
CN109685506A (zh) * 2018-12-25 2019-04-26 杭州复杂美科技有限公司 多重签名账户生成方法和多重签名账户的签名确认方法
CN110298180A (zh) * 2019-04-01 2019-10-01 北京深安未来科技有限公司 一种基于区块链的公证书管理系统
CN111090891A (zh) * 2020-03-23 2020-05-01 卓尔智联(武汉)研究院有限公司 一种基于区块链的公证人选取方法及系统
KR20200105997A (ko) * 2019-02-28 2020-09-10 알리바바 그룹 홀딩 리미티드 블록체인-기반 인증을 위한 시스템 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100646948B1 (ko) 2002-10-17 2006-11-17 주식회사 로마켓아시아 전자문서의 공증 및 검증 처리가 가능한 공증 센터 서버 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100646948B1 (ko) 2002-10-17 2006-11-17 주식회사 로마켓아시아 전자문서의 공증 및 검증 처리가 가능한 공증 센터 서버 및 그 방법

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101950507B1 (ko) * 2017-11-06 2019-02-20 주식회사 큐버 카메라 촬영 영상에 대한 블록체인 기반의 보안 처리 방법
CN109409890A (zh) * 2018-11-13 2019-03-01 华瓴(南京)信息技术有限公司 一种基于区块链的电力交易系统及方法
CN109685506A (zh) * 2018-12-25 2019-04-26 杭州复杂美科技有限公司 多重签名账户生成方法和多重签名账户的签名确认方法
CN109685506B (zh) * 2018-12-25 2020-12-11 杭州复杂美科技有限公司 多重签名账户生成方法和多重签名账户的签名确认方法
KR20200105997A (ko) * 2019-02-28 2020-09-10 알리바바 그룹 홀딩 리미티드 블록체인-기반 인증을 위한 시스템 및 방법
KR102237014B1 (ko) * 2019-02-28 2021-04-07 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 블록체인-기반 인증을 위한 시스템 및 방법
CN110298180A (zh) * 2019-04-01 2019-10-01 北京深安未来科技有限公司 一种基于区块链的公证书管理系统
CN111090891A (zh) * 2020-03-23 2020-05-01 卓尔智联(武汉)研究院有限公司 一种基于区块链的公证人选取方法及系统

Similar Documents

Publication Publication Date Title
KR101727134B1 (ko) 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버
KR101999188B1 (ko) 비밀 공유를 위한 타원 곡선 암호를 사용하는 개인용 장치 보안
KR101773074B1 (ko) 거래를 지원하기 위한 방법 및 이를 사용한 인증 지원 서버
KR101772553B1 (ko) 파일에 대한 공증 및 검증을 수행하는 방법 및 서버
KR100823738B1 (ko) 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법
KR101762245B1 (ko) 로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버
US8392709B1 (en) System and method for a single request—single response protocol with mutual replay attack protection
US8997198B1 (en) Techniques for securing a centralized metadata distributed filesystem
KR20200074912A (ko) 분산 시스템에서 프라이머리 노드의 체인지 수행
KR20200013679A (ko) 스크립트 기반 블록체인 상호작용
KR20230165886A (ko) 미결정 데이터에 기초한 블록체인 트랜잭션 보안 기법
US9722795B2 (en) Digitally signing JSON messages
KR101766303B1 (ko) 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버
KR20150036104A (ko) 로그인 검증의 방법, 클라이언트, 서버 및 시스템
EP3399485B1 (en) Method and server for authenticating and verifying file
JP2017531951A (ja) セキュリティチェックのための方法、デバイス、端末およびサーバ
KR20180046593A (ko) 펌웨어 서명 검증과 보안키 관리를 위한 사물인터넷 디바이스의 펌웨어 업데이트 시스템
JP4998314B2 (ja) 通信制御方法および通信制御プログラム
KR101622514B1 (ko) 서버에 대한 웹 요청들의 위조의 방지
KR101727151B1 (ko) 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버
CN112260997B (zh) 数据访问方法、装置、计算机设备和存储介质
JP4330973B2 (ja) 状態証明書を利用したセキュリティレベル管理システム
JP5584588B2 (ja) データベース処理装置、データベース処理システム、データベース処理方法、およびプログラム
CN117411619A (zh) 终端通信方法、装置、计算机设备及计算机可读存储介质
JP2020123856A (ja) 署名システム、署名方法及びプログラム

Legal Events

Date Code Title Description
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200312

Year of fee payment: 4