KR101727151B1 - 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 - Google Patents
파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 Download PDFInfo
- Publication number
- KR101727151B1 KR101727151B1 KR1020150188991A KR20150188991A KR101727151B1 KR 101727151 B1 KR101727151 B1 KR 101727151B1 KR 1020150188991 A KR1020150188991 A KR 1020150188991A KR 20150188991 A KR20150188991 A KR 20150188991A KR 101727151 B1 KR101727151 B1 KR 101727151B1
- Authority
- KR
- South Korea
- Prior art keywords
- transaction
- user
- server
- signed
- private key
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
본 발명의 일 태양에 따르면, 파일에 대한 공증을 수행하는 방법에 있어서, (a) 특정 파일에 대한 공증 요청이 획득되면, 서버가, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 단계, (b) 제1 사용자의 private key로 인코딩된 message digest 및 제2 사용자의 private key로 인코딩된 message digest가 획득되고, (i) 상기 제1 사용자의 private key로 인코딩된 message digest를 상기 제1 사용자의 public key로 디코딩한 정보(A), (ii) 상기 제2 사용자의 private key로 인코딩된 message digest를 상기 제2 사용자의 public key로 디코딩한 정보(B) 및 상기 (a) 단계에서 생성된 message digest(C)가 일치하면, 상기 서버가, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하는 단계, (c) 상기 서버가, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하는 단계, (d) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 서버가, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 단계, (e) 상기 서버가, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및 (f) 상기 서버가, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 단계를 포함하는 방법이 제공된다.
Description
본 발명은, 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버에 관한 것으로, 좀더 상세하게는, (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) 제1 사용자의 private key로 인코딩된 message digest 및 제2 사용자의 private key로 인코딩된 message digest가 획득되고, (i) 상기 제1 사용자의 private key로 인코딩된 message digest를 상기 제1 사용자의 public key로 디코딩한 정보(A), (ii) 상기 제2 사용자의 private key로 인코딩된 message digest를 상기 제2 사용자의 public key로 디코딩한 정보(B) 및 상기 (a) 단계에서 생성된 message digest(C)가 일치하면, 상기 서버가, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하는 단계, (c) 상기 서버가, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하는 단계, (d) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 서버가, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 단계, (e) 상기 서버가, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및 (f) 상기 서버가, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 단계를 포함하는 방법이 제공된다.
또한, 본 발명의 다른 태양에 따르면, 파일에 대한 검증을 수행하는 방법에 있어서, (a) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 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) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 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) 제1 사용자의 private key로 인코딩된 message digest 및 제2 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 제1 사용자의 private key로 인코딩된 message digest를 상기 제1 사용자의 public key로 디코딩한 정보(A), 상기 제2 사용자의 private key로 인코딩된 message digest를 상기 제2 사용자의 public key로 디코딩한 정보(B) 및 상기 (a) 단계에서 생성된 message digest(C)가 일치하면, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하며, (iii) 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하고, (iv) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 프로세서를 포함하고, 상기 통신부는, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하고, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 서버가 제공된다.
또한, 본 발명의 또 다른 태양에 따르면, 파일에 대한 검증을 수행하는 서버에 있어서, 특정 파일에 대한 검증 요청을 획득하는 통신부, 및 기존에 서버가 상기 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 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에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 서버가 제공된다.
또한, 본 발명의 또 다른 태양에 따르면, 공증된 파일을 파기하는 서버에 있어서, 특정 파일에 대한 파기 요청을 획득하는 통신부, 및 기존에 서버가 상기 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 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은 본 발명의 다양한 실시예에 따른 파일에 대한 공증 내지 검증을 수행하는 과정을 도시한 시퀀스 다이어그램이다.
도 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 : 데이터베이스
110 : 통신부
120 : 프로세서
200 : 데이터베이스
Claims (12)
- 파일에 대한 공증을 수행하는 방법에 있어서,
(a) 특정 파일에 대한 공증 요청이 획득되면, 서버가, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하는 단계,
(b) 제1 사용자의 private key로 인코딩된 message digest 및 제2 사용자의 private key로 인코딩된 message digest가 획득되고, (i) 상기 제1 사용자의 private key로 인코딩된 message digest를 상기 제1 사용자의 public key로 디코딩한 정보(A), (ii) 상기 제2 사용자의 private key로 인코딩된 message digest를 상기 제2 사용자의 public key로 디코딩한 정보(B) 및 상기 (a) 단계에서 생성된 message digest(C)가 일치하면, 상기 서버가, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하는 단계,
(c) 상기 서버가, 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하는 단계,
(d) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 서버가, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 단계,
(e) 상기 서버가, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계, 및
(f) 상기 서버가, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 (b) 단계에서,
(b1) 상기 서버는, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 redeem script를 생성하거나 생성하도록 지원하는 단계, 및
(b2) 상기 서버는, 상기 생성된 redeem script를 인코딩하여 상기 multisig address를 생성하거나 생성하도록 지원하는 단계를 포함하는 것을 특징으로 하는 방법. - 제1항에 있어서,
상기 (e) 단계는,
(e1) 상기 서버가, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key로 서명한 제1 partially signed transaction(PST1)을 획득하는 단계,
(e2) 상기 서버가, 상기 생성된 제1 partially signed transaction(PST1)을 상기 제2 사용자의 private key로 서명한 제2 partially signed transaction(PST2)을 획득하는 단계,
(e3) 상기 서버가, 상기 제2 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하는 단계, 및
(e4) 상기 서버가, 상기 생성된 상기 fully signed transaction 을 상기 데이터베이스로 전송하거나 전송하도록 지원하는 단계를 포함하는 것을 특징으로 하는 방법. - 파일에 대한 검증을 수행하는 방법에 있어서,
(a) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 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) 기존에 서버가 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, 상기 서버가, (i) 상기 특정 파일의 message digest 및 (ii) 상기 제1 사용자의 public key 및 상기 제2 사용자의 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를 획득하는 단계를 포함하는 방법. - 제5항에 있어서,
상기 (c) 단계는,
(c1) 상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 상기 unspent 출력값이 존재하면, 상기 서버가, 상기 unspent된 가상 화폐를 입력값으로 하고, 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 상기 unsigned transaction을 생성하거나 생성하도록 지원하는 단계,
(c2) 상기 서버가, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key로 서명한 제1 partially signed transaction(PST1)을 획득하는 단계,
(c3) 상기 서버가, 상기 생성된 제1 partially signed transaction을 상기 제2 사용자의 private key로 서명한 제2 partially signed transaction(PST2)을 획득하는 단계, 및
(c4) 상기 서버가, 상기 제2 transaction으로서, 상기 제2 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하는 단계를 포함하는 것을 특징으로 하는 방법. - 파일에 대한 공증을 수행하는 서버에 있어서,
특정 파일에 대한 공증 요청을 획득하는 통신부, 및
(i) 상기 특정 파일에 대한 공증 요청이 획득되면, hash 함수를 사용하여 상기 특정 파일의 message digest를 생성하거나 생성하도록 지원하고, (ii) 제1 사용자의 private key로 인코딩된 message digest 및 제2 사용자의 private key로 인코딩된 message digest가 획득되고, 상기 제1 사용자의 private key로 인코딩된 message digest를 상기 제1 사용자의 public key로 디코딩한 정보(A), 상기 제2 사용자의 private key로 인코딩된 message digest를 상기 제2 사용자의 public key로 디코딩한 정보(B) 및 상기 (i)에서 생성된 message digest(C)가 일치하면, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 multisig address를 생성하거나 생성하도록 지원하며, (iii) 상기 생성된 multisig address로 소정 액수의 가상 화폐를 전송하는 transaction을 수행하거나 수행하도록 지원하고, (iv) 상기 transaction이 승인이 되어 상기 multisig address가 데이터베이스 상에 기록되면, 상기 소정 액수의 가상 화폐 및 상기 message digest와 관련된 unsigned transaction(UST)을 생성하거나 생성하도록 지원하는 프로세서를 포함하고,
상기 통신부는,
상기 생성된 unsigned transaction을 상기 제1 사용자의 private key, 상기 제2 사용자의 private key 및 상기 서버의 private key로 서명한 fully signed transaction(FST)을 상기 데이터베이스로 전송하고, 상기 fully signed transaction이 상기 데이터베이스 상에 기록된 위치 정보를 나타내는 transaction ID를 획득하는 서버. - 제7항에 있어서,
상기 프로세서는, 상기 제1 사용자의 public key, 상기 제2 사용자의 public key 및 상기 서버의 public key를 사용하여 redeem script를 생성하거나 생성하도록 지원하고,
상기 생성된 redeem script를 인코딩하여 상기 multisig address를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버. - 제7항에 있어서,
상기 통신부는,
상기 생성된 unsigned transaction을 상기 제1 사용자의 private key로 서명한 제1 partially signed transaction(PST1)을 획득하고,
상기 생성된 제1 partially signed transaction(PST1)을 상기 제2 사용자의 private key로 서명한 제2 partially signed transaction(PST2)을 획득하며,
상기 프로세서는,
상기 제2 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하고,
상기 통신부는,
상기 생성된 상기 fully signed transaction 을 상기 데이터베이스로 전송하는 것을 특징으로 하는 서버. - 파일에 대한 검증을 수행하는 서버에 있어서,
특정 파일에 대한 검증 요청을 획득하는 통신부, 및
기존에 서버가 상기 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 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에 대응되는 상기 특정 파일이 검증된 것으로 판단하거나 판단하도록 지원하는 서버. - 공증된 파일을 파기하는 서버에 있어서,
특정 파일에 대한 파기 요청을 획득하는 통신부, 및
기존에 서버가 상기 특정 파일에 대한 공증 요청을 받았을 때, 상기 특정 파일과 관련된 사람이 제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 및 상기 서버의 private key로 서명한 fully signed transaction(FST)이 데이터베이스로 전송되어, 상기 서버가, 상기 fully signed transaction의 상기 데이터베이스 상의 위치 정보를 나타내는 제1 transaction ID를 획득하여 관리하고 있는 상태에서, 상기 특정 파일에 대한 파기 요청이 획득되면, (i) 상기 특정 파일의 message digest 및 (ii) 상기 제1 사용자의 public key 및 상기 제2 사용자의 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를 획득하는 서버. - 제11항에 있어서,
상기 프로세서는,
상기 특정 파일의 message digest가 상기 OP 메시지에 포함된 message digest와 동일하고, 상기 제1 transaction ID에 대응되는 unspent 출력값이 존재하면, unspent된 가상 화폐를 입력값으로 하고, 상기 message digest를 포함한 OP 메시지를 출력값으로 하는 unsigned transaction을 생성하거나 생성하도록 지원하고,
상기 통신부는, 상기 생성된 unsigned transaction을 상기 제1 사용자의 private key로 서명한 제1 partially signed transaction(PST1)을 획득하고, 상기 생성된 제1 partially signed transaction을 상기 제2 사용자의 private key로 서명한 제2 partially signed transaction(PST2)을 획득하며,
상기 프로세서는,
상기 제2 transaction으로서, 상기 제2 partially signed transaction을 상기 서버의 private key로 서명한 fully signed transaction(FST)을 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150188991A KR101727151B1 (ko) | 2015-12-29 | 2015-12-29 | 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150188991A KR101727151B1 (ko) | 2015-12-29 | 2015-12-29 | 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101727151B1 true KR101727151B1 (ko) | 2017-04-26 |
Family
ID=58705093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150188991A KR101727151B1 (ko) | 2015-12-29 | 2015-12-29 | 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101727151B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100646948B1 (ko) | 2002-10-17 | 2006-11-17 | 주식회사 로마켓아시아 | 전자문서의 공증 및 검증 처리가 가능한 공증 센터 서버 및 그 방법 |
-
2015
- 2015-12-29 KR KR1020150188991A patent/KR101727151B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100646948B1 (ko) | 2002-10-17 | 2006-11-17 | 주식회사 로마켓아시아 | 전자문서의 공증 및 검증 처리가 가능한 공증 센터 서버 및 그 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101727134B1 (ko) | 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 | |
US20200374126A1 (en) | Method for storing an object on a plurality of storage nodes | |
KR101999188B1 (ko) | 비밀 공유를 위한 타원 곡선 암호를 사용하는 개인용 장치 보안 | |
KR101772553B1 (ko) | 파일에 대한 공증 및 검증을 수행하는 방법 및 서버 | |
KR101773074B1 (ko) | 거래를 지원하기 위한 방법 및 이를 사용한 인증 지원 서버 | |
KR100823738B1 (ko) | 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법 | |
US8997198B1 (en) | Techniques for securing a centralized metadata distributed filesystem | |
CN109981297B (zh) | 区块链处理方法、装置、设备及存储介质 | |
KR101762245B1 (ko) | 로그인을 지원하기 위한 방법 및 이를 사용한 인증 지원 서버 | |
KR101766303B1 (ko) | 인증 정보의 생성, 등록, 파기 방법 및 인증 지원 서버 | |
KR20230165886A (ko) | 미결정 데이터에 기초한 블록체인 트랜잭션 보안 기법 | |
US9722795B2 (en) | Digitally signing JSON messages | |
EP3399485B1 (en) | Method and server for authenticating and verifying file | |
EP3314521A2 (en) | Cryptographic assurances of data integrity for data crossing trust boundaries | |
JP6543743B1 (ja) | 管理プログラム | |
CN106991298A (zh) | 应用程序对接口的访问方法、授权请求方法及装置 | |
KR102137122B1 (ko) | 보안 체크 방법, 장치, 단말기 및 서버 | |
JP2007336127A (ja) | 認証システム、サーバコンピュータ、プログラム、及び、記録媒体 | |
JP2009199147A (ja) | 通信制御方法および通信制御プログラム | |
KR101727151B1 (ko) | 파일에 대한 공증, 검증 및 파기를 수행하는 방법 및 서버 | |
JP4330973B2 (ja) | 状態証明書を利用したセキュリティレベル管理システム | |
JP2020123856A (ja) | 署名システム、署名方法及びプログラム | |
KR101591323B1 (ko) | 데이터 전송이 가능한 단말 장치 및 상기 데이터 전송이 가능한 단말 장치의 부인 방지를 위한 데이터 전송 방법 | |
JP5584588B2 (ja) | データベース処理装置、データベース処理システム、データベース処理方法、およびプログラム | |
JP2024145923A (ja) | 情報処理システム及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20200312 Year of fee payment: 4 |