US20190220624A1 - Method and server for providing notary service for file and verifying file recorded by notary service - Google Patents
Method and server for providing notary service for file and verifying file recorded by notary service Download PDFInfo
- Publication number
- US20190220624A1 US20190220624A1 US16/268,509 US201916268509A US2019220624A1 US 20190220624 A1 US20190220624 A1 US 20190220624A1 US 201916268509 A US201916268509 A US 201916268509A US 2019220624 A1 US2019220624 A1 US 2019220624A1
- Authority
- US
- United States
- Prior art keywords
- value
- specific
- file
- server computer
- database
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012795 verification Methods 0.000 claims description 88
- 230000006870 function Effects 0.000 claims description 76
- 230000004044 response Effects 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 52
- 238000004873 anchoring Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 230000014509 gene expression Effects 0.000 description 16
- 230000008901 benefit Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F21/645—Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
-
- 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
- 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/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- 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
-
- 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/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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
- G06Q2220/00—Business processing using cryptography
-
- H04L2209/38—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Definitions
- the present disclosure relates to a method for providing a notary service for a file and verifying the file recorded by the notary service; and more particularly, to the method for providing the notary service for the file and verifying the file recorded by using the notary service, including a “notary process” of, if a notary service request for the file is acquired, generating or supporting another device to generate a specific message digest of the file by using a hash function, and, if one of anchoring conditions is satisfied, registering or supporting another device to register a first representative hash value or its processed value in a database, wherein the representative hash value is generated by using a specific hash value and its corresponding at least one neighboring hash value, and wherein the specific hash value is a hash value of a result acquired by encoding the specific message digest with a private key of a specific user and a private key of a server, and a “verification process” of, if a verification request for the file is acquired, and if a second representative hash value
- Authentication is an act of publicly certifying the existence or the contents of a specific fact or specific legal relations.
- an authentication officer When the authentication of the specific legal relations is requested, an authentication officer generally writes, signs and seals, and stores a document in an authentication office.
- the inventor of the present disclosure developed an authentication system for a file to perform the authentication in real-time without a possibility of forgery and falsification and without constraints of space by recording authentication information in a blockchain of virtual currency and filed a patent application, Korean Patent Application No. 2015-0188978.
- a method for providing a notary service for a file including steps of: (a) a server computer, if a notary service request for the file is acquired, generating or supporting another device to generate a specific message digest of the file by using a hash function; and (b) the server computer, if one of anchoring conditions is satisfied, registering or supporting another device to register a representative value or a processed value of the representative value in a database, wherein the representative value is generated by using a specific value and its corresponding at least one neighboring value, wherein the representative value is generated with a specific value and a corresponding at least one neighboring value, and wherein the specific value is a function value of a result acquired by encoding the specific message digest with a private key of a specific user and a private key of the server computer, and the step of (b) further comprises steps of (b- 1 ) generating at least one specific tree including a specific leaf node where the specific value is allocated, and (
- the server computer in response to determining that no notary service request is acquired at the step of (a), and in response to determining that said one of the anchoring conditions is satisfied at the step of (b), performs or supports another device to perform a process of generating the specific tree with first and second leaf nodes where certain message data is respectively allocated, and a process of registering a root value of the specific tree or a processed value of the root value in the database.
- the notary service for the file includes at least one of an authentication service for the file and a revocation service for the file.
- the database is a blockchain of a virtual currency or the database is managed by the server computer.
- a method for verifying a file recorded by using a notary service including steps of: (a) a server computer acquiring or supporting another device to acquire a verification request for the file, in response to the server computer having acquired a notary service request for the file, and having registered a first representative value or a processed value of the first representative value in a database, wherein the first representative value is generated with a first specific value and a corresponding at least one neighboring value under one of a plurality of anchoring conditions, and wherein the first specific value being a function value of a result acquired by encoding a specific message digest of the file with a private key of a specific user and a private key of the server computer; and (b) the server computer determining or supporting another device to determine that verification of the file is completed in response to a determination that a second representative value or a processed value of the second representative value generated using input data included in the verification request, corresponds to the first representative value or a processed value of the first
- the step of (a) further includes steps of: (a 1 ) the server computer referring to or the server computer supporting another device to refer to a certain transaction ID related to the file in response to the verification request being acquired; and (a 2 ) the server computer acquiring or supporting another device to acquire an OP message from the database by referring to the certain transaction ID, and wherein, at the step of (b), in response to determining that the second representative value or a processed value of the second representative value generated by using the input data included in the verification request corresponds to the first representative value or a processed value of the first representative value included in the OP message, the server computer determines or supports another device to determine that the verification is completed.
- the server computer performing or supporting the another device to perform a process of identifying information on a specific tree related to the input data and on leaf nodes of the specific tree, and a process of referring to the certain transaction ID which corresponds to the information on the identified specific tree.
- the second representative value is generated by using a second specific value and a corresponding at least one neighboring value, and wherein the second specific value is a function value of a result acquired by encoding the specific message digest of the file extracted from the input data included in the verification request with the private key of the specific user and the private key of the server computer.
- the database is a blockchain of a virtual currency or the database is managed by the server computer.
- a server computer for providing a notary service for a file, including: at least one memory that stores instructions; and at least one processor configured to execute the instructions to perform processes of: (I) responding to a notary service request being acquired by generating or supporting the another device to generate a specific message digest of the file by using a hash function, and (II) in response to the processor determining that one or more anchoring conditions is satisfied, registering or supporting the another device to register a representative value or a processed value of the representative value in a database, wherein the representative value is generated with a specific value and a corresponding at least one neighboring value, and wherein the specific value being a function value of a result acquired by encoding the specific message digest with a private key of a specific user and a private key of the server computer, and at the process of (II), the processor further performs processes of (II- 1 ) generation of at least one specific tree including a specific leaf node where the specific value is allocated
- the processor in response to the processor determining that no notary service request is acquired at (I), and in response to said one of the anchoring conditions being satisfied at (II), the processor performs or supports the another device to generate a specific tree with first and second leaf nodes where certain message data is respectively allocated, and register a root value or a processed value of the root value of the specific tree in the database.
- the notary service for the file includes at least one of an authentication service for the file and a revocation service for the file.
- the database is a blockchain of a virtual currency or the database is managed by the server.
- a server computer for verifying a file recorded by using a notary service, including: at least one memory that stores instructions; and at least one processor configured to execute the instructions to perform processes of: (I) determining that verification of the file is completed in response to the server having acquired a notary service request for the file, and having registered a first representative value or processed value of the first representative value in a database, wherein the first representative value is generated using a first specific value and a corresponding at least one neighboring value under at least one of a plurality of anchoring conditions, and wherein the first specific value is a function value of a result acquired by encoding a specific message digest of the file with a private key of a specific user and a private key of the server, in response to a second representative value or a processed value of the second representative value, generated by using input data included in an acquired verification request, corresponding to the first representative value or a processed value of the first representative value registered in the database, wherein the plurality
- the processor in response to the verification request being acquired, is configured to refer or support the another device to refer to a certain transaction ID related to the file, and acquire or support the another device to acquire an OP message from the database by referring to the certain transaction ID, and, in response to the second representative value or a processed value of the second representative value generated by using the input data included in the verification request corresponds to the first representative value or a processed value of the first representative value included in the OP message, determines or supports another device to determine that the verification is completed.
- the processor performs or supports the another device to perform a process of identifying information on the specific tree related to the input data and on leaf nodes of the specific tree, and a process of referring to the certain transaction ID which corresponds to the information on the identified specific tree.
- the second representative value is generated by using a second specific value and corresponding at least one neighboring value, and wherein the second specific value is a function value of a result acquired by encoding the specific message digest of the file extracted from the input data included in the verification request with the private key of the specific user and the private key of the server computer.
- the database is a blockchain of a virtual currency or the database is managed by the server computer.
- FIG. 1 is a block diagram illustrating a configuration of a server that provides a notary service for a file and verifies the file recorded by using the notary service, in accordance with one example embodiment of the present disclosure.
- FIG. 2 is a sequence diagram illustrating a process of performing the notary service for the file in response to a request from a single user.
- FIGS. 3 and 4 are diagrams illustrating examples of Merkle trees generated in accordance with one example embodiment of the present disclosure.
- FIG. 5 is a sequence diagram illustrating a process of performing a verification service for the file in response to a request from a single user.
- FIG. 6 is a sequence diagram illustrating a parallel signing process of performing in parallel the notary service in response to notary service requests from multiple users.
- FIG. 7 is a sequence diagram illustrating a serial signing process of performing the notary service sequentially in response to notary service requests from multiple users.
- FIG. 8 is a sequence diagram illustrating a process of performing verification for the file authenticated with signings of the multiple users.
- FIG. 1 is a block diagram illustrating a configuration of a server that provides a notary service for a file and verifies the file recorded by using the notary service, in accordance with one example embodiment of the present disclosure.
- FIG. 2 is a sequence diagram illustrating a process of performing the notary service for the file in response to a request from a single user.
- PubX Public key of X
- AESX AES secret key of X
- Enc PrivX (Y) Output of encryption of Y using PrivX
- Hash(Y) Hash value of Y
- the server 100 that performs the notary service for the file in accordance with said one example embodiment of the present disclosure may include a communication part 110 and a processor 120 .
- the server in each example embodiment may be a separate server, but for convenience, it is explained that the service is performed by the single server 100 .
- the server may further include a memory capable of storing computer readable instructions for performing following processes.
- the processor, the memory, a medium, etc. may be integrated with an integrated processor.
- the communication part 110 may be configured to transmit and receive data to and from the user or a user device, and a database 200 .
- the communication part 110 may acquire or support another device to acquire a notary service request for the file at a step of S 210 .
- the file and PubU which is a public key of the user who requests the notary service, may be acquired.
- the communication part 110 may respond to the request at a step of S 220 where the request and its corresponding response may be performed during one TCP session.
- the hash function may vary in its type.
- the hash function may be triple sha 256 .
- the hash function in the present specification generally means a function to transform the original file, but may include a function that just stores the file without any modification in an extreme case.
- the message digest generated by using the hash function may be the same as the file.
- the message digest generated in response to the notary service request for the file at the step of S 220 may be transmitted to the user who requests the notary service for the file. If the user requests the notary service through the user device, not shown in the diagram, the generated message digest may be transmitted to the user device.
- the communication part 110 may acquire EncPrivU (MD), calculated by encoding the message digest with a private key PrivU of the user, from the user at a step of S 225 .
- the message digest and the PubU may also be received from the user because the TCP session may be disconnected after the response of the step S 220 .
- EncPriv (MD) and EncPub (MD) of encoding the message digest with a private key and a public key
- the expressions may be replaced with SigPriv (File) and SigPub (File).
- expressions SigPriv (MD) and SigPub (MD) may be used.
- the processor 120 may generate or support another device to generate a function value of a first encoded message digest generated by encoding the message digest with the PrivU and a private key PrivC of the server 100 using a specific function at a step of S 240 , and may register or support another device to register the generated function value of the first encoded message digest in the database 200 at a step of S 250 .
- the specific function may be a hash function and the function value may be a hash value, but the present disclosure may not be limited thereto.
- the reason for registering the message digest in the form of the function value in the database 200 is that the size of the data needs to be reduced due to the limits on a storage capacity of the database 200 .
- the database 200 may be a blockchain of virtual currency. For example, it may be a bitcoin blockchain.
- the processor 120 may register or support another device to register the function value of the first encoded message digest, for example, Hash[EncPrivC (EncPrivU (MD))] which is the hash value of the first encoded message digest generated by encoding the message digest in sequence with the PrivU and the PrivC, in the database 200 .
- the function value of the first encoded message digest may be registered in the database 200 after the user, who is a client, signs the message digest first with the PrivU and then the server 100 , which is an authentication officer, signs it with the PrivC.
- the order of signing may be different from this.
- the server 100 may sign first and then the user may.
- the communication part 110 may acquire a transaction ID, i.e., TxID, from the database 200 at a step of S 255 , wherein the TxID indicates a location of the value of the first encoded message digest registered in the database 200 .
- the processor 120 may send a message of unsuccessful registration to the user by reason that the user is not a person related to the file, e.g. a transactor, at a step of S 235 .
- the processor 120 may store or support another device to store the file at a step of S 245 .
- the file may be encrypted with a symmetric key encryption algorithm such as AES, i.e., Advanced Encryption Standard.
- the secret key may be a certain secret key processed from the public key of the user, but the scope of the present disclosure is not limited thereto.
- the processor 120 may store or support another device to store the PubU, the message digest MD, the EncPrivU (MD), and the TxID. Moreover, the processor 120 may further store or support another device to store EncPrivC(EncPrivU (MD)), which is the first encoded message digest generated by encoding the MD in sequence with the PrivU and the PrivC, and its function value, for example, its hash value Hash [EncPrivC (EncPrivU (MD))].
- the communication part 110 may send a message of successful registration to the user at a step of S 260 .
- an authentication system is explained that can take advantage of and further complement the authentication system for the file to perform the authentication in real-time without a possibility of forgery and falsification, thereby guaranteeing a fast service and reducing the costs while.
- Such an authentication system uses a distinct data structure managed by the server 100 , unlike the aforementioned example embodiment.
- the aforementioned processor 120 may generate or support another device to generate a specific message digest of the file using the hash function.
- the repeated explanation is omitted as it is similar to the aforementioned example embodiment.
- the notary service for the file may be an authentication service for the file or a revocation service for the file, unlike the aforementioned example embodiment.
- the processor 120 may register or support another device to register a representative value or its processed value in a database, wherein the representative value is generated by using a specific value and its corresponding at least one neighboring value, and wherein the specific value is a function value of a result acquired by encoding the specific message digest with a private key of a specific user and the private key of the server 100 using a specific function.
- the processor 120 may generate or support another device to generate the representative value or its processed value by calculating the function value of the result and its corresponding at least one neighboring value, acquired by encoding the specific message digest with the private key PrivU of the specific user and the private key PrivC of the server 100 , and register or support another device to register the generated representative value or its processed value in the database, instead of registering the function value of the result of encoding the specific message digest with the PrivU and the PrivC as stated above at the step of S 240 .
- the database may not be managed by the server 100 like the aforementioned database 200 , e.g. the blockchain of the virtual currency, but may also be managed by the server 100 .
- the explanation in the present specification is focused on the database 200 which is not managed by the server 100 , but the technical idea of the present disclosure may be applied to the database managed by the server 100 .
- the calculation of the specific value and its corresponding at least one neighboring value may be performed by various functions. Assuming the specific value to be input and the neighboring values to be x 1 , x 2 , . . . , and xn, the representative value t may be expressed, for example, as the following equation.
- the server 100 may store or support another device to store the specific value and its corresponding at least one neighboring value in a certain form of a data structure and manage them.
- the data structure may vary, and one example thereof may be a structure of a specific tree.
- the calculation of the specific value and its corresponding at least one neighboring value may be performed by using the specific tree.
- the specific tree may be at least one Merkle tree, but the scope of the present disclosure is not limited thereto.
- the processor 120 may generate or support another device to generate at least one specific tree including a specific leaf node where the specific value is allocated, and if said one of the anchoring conditions is satisfied, may register or support another device to register the representative value or its processed value, which is calculated from the specific value and at least one value allocated to at least one of other leaf nodes, in the database 200 .
- the representative value represents a value in a root node of the specific tree or a value in an intermediate node of the specific tree, but it is not limited thereto.
- the processor 120 may calculate or support another device to calculate (i) the specific hash value and (ii) a hash value allocated to a sibling node of the specific leaf node where the specific hash value is allocated, to thereby acquire a resultant value, and then allocate or support another device to allocate a hash value of the resultant value to a parent node of the specific leaf node.
- the parent node is a root node of the Merkle tree, the hash value of the resultant value allocated to the parent node may be regarded as the representative hash value.
- the processor 120 may repeat or support another device to repeat the steps of (x 1 ) to (x 3 ) by using the hash value allocated to the parent node as the specific hash value.
- the processor 120 may register or support another device to register the hash value ultimately allocated to the root node or the parent node of the Merkle tree in the database 200 as the representative value.
- the processed value of the representative value may be registered. For example, a value resulting from hex operation on the representative value may be registered.
- a first data structure and a second data structure may be linked in a form of a chain if the server 100 stores the specific value and the at least one neighboring value in the first data structure and then stores and manages the second data structure in an identical form with the first data structure.
- the representative value is assumed to represent a value in a root node of the Merkle tree.
- first data structure and the second data structure are the structure of the Merkle tree
- a root value of the first data structure or its processed value may be allocated to a first leaf node of the second data structure.
- data integrity may be further ensured by verifying the first data structure when the second data structure is generated. Verification of the second data structure will be explained later.
- a value of certain message data or its processed value comprised of text, number or symbol may be allocated to a first leaf node of the first specific tree. For example, a value of a first input message given by the server 100 at the time of generation of the specific tree may be allocated.
- FIGS. 3 and 4 are diagrams illustrating examples of the Merkle trees generated in accordance with said one example embodiment of the present disclosure.
- FIG. 3 illustrates a Merkle tree with four (2 2 ) leaf nodes.
- the illustrated Merkle tree is the first Merkle tree whose tree_id is zero, the hash value triplesha256digest(coinplug_unique_message) of the certain message data “Coinplug 2016-01-01” is allocated to a node h 0 which is the first leaf node.
- the processor 120 may generate or support another device to generate a leaf node next to the last leaf node of the currently configured Merkle tree and allocate or support another device to allocate the specific hash value or its processed value to the generated leaf node.
- a node h 2 which is a next leaf node may be generated and the specific hash value or its processed value triplesha256digest(input 2 ) may be allocated to the node h 2 .
- the processor 120 may calculate or support another device to calculate (i) the specific hash value and (ii) a hash value allocated to a sibling node h 3 of the node h 2 , which is a third leaf node where the specific hash value is allocated to, to thereby acquire a resultant value.
- a hash value of the resultant value may be allocated to a parent node h 23 of the node h 2 and the node h 3 .
- the processor 110 may repeat or support another device to repeat the above process by using the hash value allocated to the node h 23 as the specific hash value.
- the hash value allocated to the node h 23 and a hash value allocated to a node h 01 may be used to generate a calculated value which is allocated to a node h 0123 , i.e., a parent node of the node h 23 and the node h 01 .
- the processor 120 may register or support another device to register a processed value hex(h ⁇ node index ⁇ ) of the hash value allocated to the node h 0123 in the database 200 . Additionally, the processor 102 may register or support another device to register a processed value hex of the hash value allocated to at least one of parent modes of the Merkle tree in the database 200 .
- the aforementioned anchoring conditions may include at least one of (i) acquisition of a certain number of message digests including the specific message digest in response to respective notary service requests, (ii) a certain time lapse, (iii) generation of a block in a blockchain, and (iv)one or more characteristics of the user who requests the notary service.
- a hash value of a result acquired by encoding each of the message digests with the private key of each user and the private key of the server 100 may be input of the Merkle tree, that is, values allocated to the leaf nodes.
- the processor 120 may generate or support another device to generate a root value of the Merkle tree by the certain time as the condition (ii) above. In this case, if the certain time is elapsed, the processor 120 may generate or support another device to generate the Merkle tree using the input of the certain time and may register or support another device to register the root value of the Merkle tree in the database 200 .
- the processor 120 may allocate or support another device to allocate a certain hash value to the sibling node to thereby produce the root value of the Merkle tree in the aforementioned way. For example, the processor 120 may copy and allocate the specific hash value to the sibling node.
- the characteristics of the user who requests the notary service may be at least part of information on cost paid by the user who requests the notary service, information on a time-zone during which the notary service is performed, information on location where the notary service is performed, and information on a type of the user who requests the notary service. But the scope of the present disclosure is not limited thereto.
- the processor 120 may generate or support another device to generate the new Merkle tree with first and second leaf nodes where certain message data is respectively allocated, and may register or support another device to register a root value or its processed value of the new Merkle tree in the database 200 .
- the Merkle tree may be generated with two leaf nodes.
- the server 100 stores the specific hash value and the at least one neighboring hash value in the first data structure and then stores and manages the second data structure in an identical form with the first data structure as aforementioned, the first data structure and the second data structure may be linked in a form of a chain.
- the first data structure and the second data structure are the Merkle trees, the root value of the first data structure or a hash value of the root value may be allocated to the first leaf node of the second data structure.
- FIG. 4 is a diagram illustrating an example of a new Merkle tree generated as the second data structure in accordance with said one example embodiment of the present disclosure.
- Verification in the present specification may be requested by the transactor or a third party, and may be sorted into a case using the distinct data structure managed by the server 100 and a case without using the distinct data structure. Both terms of “audit” and “verification” may be used. First of all, the verification performed without using the distinct data structure managed by the server 100 is explained.
- the file may be verified by a separate device which may refer to information on the aforementioned server 100 , or by the aforementioned server 100 .
- a separate device which may refer to information on the aforementioned server 100 , or by the aforementioned server 100 .
- the explanation is based on the verification of the file by the aforementioned server 100 for convenience.
- FIG. 5 is a sequence diagram illustrating a process of performing a verification service for the file in response to the request from the single user.
- the communication part 110 may acquire a verification request for the file at a step of S 510 .
- the file and the PubU which is the public key of the user who requests the verification, may be acquired.
- the communication part 110 may respond to the request, and the request and its corresponding response may be performed within one TCP session.
- the server 100 may acquire or support another device to acquire the transaction ID corresponding to at least one of the PubU and the message digest of the file.
- the transaction ID i.e., TxID
- the server 100 may refer to.
- the processor 120 may refer to the transaction ID corresponding to at least one of the PubU and the generated original message digest of the file.
- the communication part 110 may send a message of unsuccessful verification to the user at a step of S 525 .
- the communication part 110 may send a query to the database 200 using the TxID at a step of S 525 and acquire an OP message including the function value of the first encoded message digest generated by encoding the message digest with the PrivU and the PrivC from the database 200 at a step of S 530 .
- the processor 120 may determine or support another device to determine the file as verified at a step of S 535 .
- the second encoded message digest generated by encoding the original message digest with the PrivC and the PrivU may be EncPrivC (EncPrivU (MD)) which is generated by encoding the original message digest in sequence with the PrivU and the PrivC.
- the processor 120 may further determine or support another device to determine the file as verified at a step of S 540 .
- the verification of the file may be completed with two more steps. This is because there may be a possibility of changes in the private key, the public key, etc. of the user.
- the communication part 110 may send a message of successful verification to the user at a step of S 545 .
- the processor 120 may allow a download of the file.
- the user may download the file through the user device, etc.
- the server 100 On condition that the server 100 has acquired the notary service request for the file, and then has registered the aforementioned representative value, referred to here for convenience as a first representative value, or its processed value in the database 200 , wherein the first representative value is generated by using the aforementioned specific value, referred to here for convenience as a first specific value, and its corresponding at least one neighboring value under said one of the anchoring conditions, and wherein the first specific value is the function value of the result acquired by encoding the specific message digest of the file with the private key of the specific user and the private key of the server 100 , if a verification request for the file is acquired, and if a second representative value or its processed value, generated by using input data included in the verification request, corresponds to the first representative value or its processed value registered in the database 200 , then the processor 120 may determine or support another device to determine that the verification of the file is completed.
- the processor 120 may determine or support another device to determine that the verification of the file is completed.
- the second representative value may be generated by calculating a second specific value and its corresponding at least one neighboring hash value, wherein the second specific value is a function value of a result acquired by encoding the specific message digest of the file extracted from the input data included in the verification request with the private key of the specific user and the private key of the server.
- the input data included in the verification request may have at least one of (i) the file, (ii) the specific message digest of the file, or (iii) an ID issued during the notary service for the file.
- the specific message digest of the file may be generated by the aforementioned method, and the second specific value may be generated based thereon. Further, the second representative value may be generated by calculating the second specific value and its corresponding at least one neighboring value.
- the second specific value may be set to a value allocated to a leaf node corresponding to the ID in the previously generated specific tree.
- the ID may be a unique ID.
- the same explanation for the first specific value aforementioned may be applied to the second specific value. That is, the calculation of the second specific value and its corresponding at least one neighboring value may be performed by various functions. Thus the explanation thereof is omitted by referring to the above.
- the calculation of the second specific value and its corresponding at least one neighboring value may be performed by using a specific tree. If the verification request is acquired, the processor 120 may identify or support another device to identify information on the specific tree related to the input data and on its leaf nodes.
- the second representative value may be calculated by using the second specific value allocated to a specific leaf node of the specific tree.
- the processor 120 may refer or support another device to refer to a certain transaction ID corresponding to the information on the identified specific tree.
- the processor 120 may refer or support another device to refer to the certain transaction ID, and acquire or support another device to acquire an OP message from the database 200 by referring to the certain transaction ID. Also, if the second representative value or its processed value, generated by using the input data included in the verification request, corresponds to the first representative value or its processed value included in the OP message, the verification of the file may be determined as completed.
- the certain transaction ID may be provided as included in the input data.
- the user in response to the verification request, may transmit or support another device to transmit the certain transaction ID to the server 100 in addition to at least one of (i) the file, (ii) the specific message digest of the file, or (iii) the ID issued during the notary service for the file.
- the processor 120 may generate or support another device to generate a new specific tree.
- the specific tree generated during the aforementioned notary service may be used.
- the processor 120 may calculate or support another device to calculate (i) the second specific hash value and (ii) a hash value allocated to a sibling node of the specific leaf node where the second specific hash value is allocated in the previously generated Merkle tree, to thereby acquire a resultant value, and then allocate or support another device to allocate a hash value of the resultant value to a parent node of the specific leaf node in the new Merkle tree.
- the processor 120 may compare or support another device to compare the hash value allocated to the parent node, as the second representative hash value, with the first representative hash value or its processed value included in the OP message, and (x 3 ) if the parent node is not the root node of the Merkle tree, repeat or support another device to repeat the steps of (x 1 ) to (x 3 ) by using the hash value allocated to the parent node as the second specific hash value.
- the processor 120 may determine or support another device to determine that the verification of the file is completed.
- the processor 120 may identify or support another device to identify at least part of the information on the specific tree related to the input data and on its leaf nodes, by referring to time information related to the input data.
- the processor 120 may identify or support another device to identify the information on the previously generated Merkle tree and on its leaf nodes by referring to the information on the input data, and acquire or support another device to acquire the OP message from the database 200 by transmitting the certain transaction ID corresponding to the information on the identified Merkle tree whose tree id is zero to the database 200 . Then, the processor 120 may generate or support another device to generate the new Merkle tree by using the input 2 .
- the processor 120 may calculate or support another device to calculate the hash value allocated to the node h 2 and the hash value allocated to the sibling node h 3 of the node 2 in the previously generated Merkle tree, to thereby acquire a resultant value.
- a hash value of the resultant value may be allocated to the parent node h 23 of the node h 2 and the node h 3 .
- the processor 120 may repeat or support another device to repeat the above process by using the hash value allocated to the node 23 as the second specific hash value.
- the hash value allocated to the node h 23 and the hash value allocated to the node h 01 in the previously generated Merkle tree may be calculated and then allocated to the node h 0123 which is the parent node of the node h 23 and the node h 01 .
- the processor 120 may compare or support another device to compare the processed value hex(h ⁇ node_index ⁇ ) of the hash value allocated to the node h 0123 with the first representative hash value or its processed value included in the OP message.
- FIG. 6 represents a parallel signing process of performing the notary services in parallel
- FIG. 7 represents a serial signing process of performing the notary services sequentially, in response to the notary service requests from at least part of the multiple users.
- a first message digest generated by encoding the message digest with a private key PrivU 1 of a first user and a second message digest generated by encoding the message digest with a private key PrivU 2 of a second user are acquired at steps of S 640 and S 650 , and if each piece of (i) information A′ which is DecPubU 1 (EncPrivU 1 (MD)) acquired by decoding the first message digest with a public key PubU 1 of the first user and (ii) information B′ which is DecPubU 2 (EncPrivU 2 (MD)) acquired by decoding the second message digest with a public key PubU 2 of the second user corresponds to the generated message digest C′, which is the MD, at a step of S 640 - 3 , then the processor 120 may register or support another device to register a function value of a third message digest, generated by encoding the MD with the PrivU 1 , the PrivU 2 , and the PrivC, in the database 200
- the communication part 110 may acquire a transaction ID indicating a location of the registered function value of the third message digest in the database 200 at a step of S 680 .
- the processor 120 may register or support another device to register EncPrivC(EncPrivU 1 (MD)+EncPrivU 2 (MD)), which is acquired by encoding a data group with the PrivC, in the database 200 , wherein the data group is comprised of the first message digest generated by encoding the MD with the PrivU 1 and the second message digest generated by encoding the MD with the PrivU 2 .
- the PubU 1 , the PubU 2 , and the file may be acquired together.
- the processor 120 may register or support
- the communication part 110 may acquire the transaction ID, i.e., TxID, indicating a location of the registered hash value of the third message digest in the database 200 at a step of S 780 .
- the processor 120 may generate or support another device to generate the specific message digest of the file by using the function, and, (ii) if one of the anchoring conditions is satisfied, may register or support another device to register a representative value or its processed value in the database 200 , wherein the representative value is generated by using the specific value and its corresponding at least one neighboring value, and wherein the specific value is a function value of a result acquired by encoding the specific message digest with the private key of the first user, the private key of the second user, and the private key of the server 100 .
- the specific value may be a function value of EncPrivC (EncPrivU 1 (MD)+EncPrivU 2 (MD)), which is acquired by encoding a data group with the private key of the server 100 , wherein the data group is comprised of a first encoded message digest generated by encoding the specific message digest with the private key of the first user and a second encoded message digest generated by encoding the specific message digest with the private key of the second user.
- EncPrivC EncPrivU 1 (MD)+EncPrivU 2 (MD)
- the specific hash value may be a function value of EncPrivC (EncPrivU 2 (EncPrivU 1 (MD))), which is acquired by encoding the specific message digest in sequence with the private key of the first user, the private key of the second user, and the private key of the server 100 .
- FIG. 8 is a sequence diagram illustrating the process for verifying the file authenticated with signings of the multiple users.
- steps of S 825 to S 850 represent a serial signing process for verifying the file sequentially
- steps of S 860 to S 885 represent a parallel signing process for verifying the file in parallel, in response to verification requests from at least part of the multiple users.
- Both the serial signing process and the parallel process can be applied to a service provided by the present disclosure.
- the communication part 110 may acquire an OP message, which includes the function value of the third message digest from the database 200 by referring to the TxID at each step of S 835 and S 870 .
- the processor 120 may determine or support another device to determine the file as verified at each step of S 840 and S 875 .
- the processor 120 may determine or support another device to determine the file as verified according to whether the function value, for example, Hash[EncPrivC (EncPrivU 1 (MD)+EncPrivU 2 (MD))], which is a function value of a first encoded value acquired by encoding a data group with the PrivC, corresponds to the function value of the third message digest in the OP message, wherein the data group is comprised of a fifth message digest generated by encoding the original message digest with the PrivU 1 and a sixth message digest generated by encoding the original message digest with the PrivU 2 .
- the function value for example, Hash[EncPrivC (EncPrivU 1 (MD)+EncPrivU 2 (MD))
- the data group is comprised of a fifth message digest generated by encoding the original message digest with the PrivU 1 and a sixth message digest generated by encoding the original message digest with the PrivU 2 .
- the processor 120 may determine or support another device to determine the file as verified. In other words, the verification of the file may be completed with three more
- the processor 120 may determine or support another device to determine the file as verified according to whether Hash[EncPrivC (EncPrivU 2 (EncPrivU 1 (MD)))], which is the function value of a second encoded value acquired by encoding the original message digest in sequence with the PrivU 1 , the PrivU 2 , and the PrivC, corresponds to the hash value of the third message digest in the OP message.
- the processor 120 may determine or support another device to determine the file as verified. In other words, the verification of the file may be completed with three more steps.
- the processor 120 may determine or support another device to determine that the verification of the file is completed.
- the first specific value may be the function value of EncPrivC (EncPrivU 1 (MD)+EncPrivU 2 (MD)), which is acquired by encoding a data group with the private key of the server, wherein the data group is comprised of the first encoded message digest generated by encoding the specific message digest with the private key of the first user and the second encoded message digest generated by encoding the specific message digest with the private key of the second user.
- EncPrivC EncPrivU 1 (MD)+EncPrivU 2 (MD)
- the first specific value may be the function value of EncPrivC (EncPrivU 2 (EncPrivU 1 (MD))), which is acquired by encoding the specific message digest in sequence with the private key of the first user, the private key of the second user, and the private key of the server.
- EncPrivC EncPrivU 2 (EncPrivU 1 (MD)
- the present disclosure has an effect of guaranteeing fast service speed and reducing a transaction cost when providing a notary service for a file to perform authentication and verification in real-time by recording authentication information in the blockchain of virtual currency.
- the present disclosure has another effect of improving service speed and reducing the transaction cost by configuring a specific tree by using information on the notary service and registering only a root value or an intermediate value of the specific tree with the blockchain instead of registering all of the information on the notary service with the blockchain.
- the present disclosure has still another effect of providing guaranteed integrity of a database by performing the verification using the specific tree generated in response to a verification request for the file.
- the processor 120 may control a data flow among the communication part 110 and the other components. That is, the processor 120 may control the communication part 110 and other components to perform their unique functions, by controlling the data flow among each component within the server 100 .
- the processor 120 may include hardware configuration of MPU (Micro Processing Unit) or CPU (Central Processing Unit), cache memory, data bus, etc. Additionally, OS and software configuration of applications that achieve specific purposes may be further included.
- MPU Micro Processing Unit
- CPU Central Processing Unit
- the embodiments of the present disclosure as explained above can be implemented in a form of executable program command through a variety of computer means recordable to computer readable media.
- the computer readable media may include solely or in combination, program commands, data files, and data structures.
- the program commands recorded to the media may be components specially designed for the present disclosure or may be usable to a skilled person in a field of computer software.
- Computer readable record media include magnetic media such as hard disk, floppy disk, and magnetic tape, optical media such as CD-ROM and DVD, magneto-optical media such as floptical disk and hardware devices such as ROM, RAM, and flash memory specially designed to store and carry out programs.
- Program commands include not only a machine language code made by a compiler but also a high-level code that can be used by an interpreter etc., which is executed by a computer.
- the aforementioned hardware devices can work as more than a software module to perform the action of the present disclosure and they can do the same in the opposite case.
- the hardware devices may be combined with memory such as ROM and RAM to store program commands and include a processor such as CPU or GPU composed to execute commands stored in the memory and also include a communication part for sending and receiving signals with external devices.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Bioethics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Finance (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Databases & Information Systems (AREA)
Abstract
Description
- This application is a continuation of U.S. patent application Ser. No. 16/049,328, filed on Jul. 30, 2018, which is a national stage (under 35 U.S.C. 371) of International Patent Application No. PCT/KR2017/001071, filed Feb. 1, 2017, claiming priority to Korean Patent Application No. 10-2016-0012760, filed Feb. 2, 2016, each of which are herein incorporated by reference in their entirety.
- The present disclosure relates to a method for providing a notary service for a file and verifying the file recorded by the notary service; and more particularly, to the method for providing the notary service for the file and verifying the file recorded by using the notary service, including a “notary process” of, if a notary service request for the file is acquired, generating or supporting another device to generate a specific message digest of the file by using a hash function, and, if one of anchoring conditions is satisfied, registering or supporting another device to register a first representative hash value or its processed value in a database, wherein the representative hash value is generated by using a specific hash value and its corresponding at least one neighboring hash value, and wherein the specific hash value is a hash value of a result acquired by encoding the specific message digest with a private key of a specific user and a private key of a server, and a “verification process” of, if a verification request for the file is acquired, and if a second representative hash value or its processed value, generated by using input data included in the verification request, corresponds to the first representative hash value or its processed value registered in the database, determining or supporting another device to determine that verification of the file is completed, and the server using the same.
- Authentication is an act of publicly certifying the existence or the contents of a specific fact or specific legal relations. When the authentication of the specific legal relations is requested, an authentication officer generally writes, signs and seals, and stores a document in an authentication office.
- However, there are constraints of time and space, and a possibility of missing, forging, and falsifying an authenticated document in a conventional authentication method because a client physically visits the authentication office with a document to be authenticated and its certificate is stored in the authentication office.
- Herein, the inventor of the present disclosure developed an authentication system for a file to perform the authentication in real-time without a possibility of forgery and falsification and without constraints of space by recording authentication information in a blockchain of virtual currency and filed a patent application, Korean Patent Application No. 2015-0188978.
- However, there are disadvantages such as a bottleneck in providing the service caused by the increased number of transactions since the authentication system for the file using the blockchain generates an OP message for every file and records it in the blockchain, and high costs for a service management because the transaction fee must be paid every time.
- Accordingly, there is a need for a technical solution that can compensate for the disadvantages, thereby guaranteeing a fast service and reducing the costs while taking the advantage of the authentication system for the file to perform the authentication in real-time without the possibility of forgery and falsification and without constraints of space.
- It is an object of the present disclosure to solve all the aforementioned problems.
- It is another object of the present disclosure to guarantee fast service speed and reduce a transaction cost, when providing a notary service for a file to perform authentication and verification in real-time by recording authentication information in a blockchain of virtual currency.
- It is still another object of the present disclosure to improve service speed and reduce the transaction cost, by configuring a specific tree using information on the notary service and registering only a representative value of the specific tree in the blockchain instead of registering all of the information on the notary service in the blockchain.
- It is still yet another object of the present disclosure to provide guaranteed integrity of a database by performing the verification using the specific tree generated in response to a verification request for the file.
- In accordance with one aspect of the present disclosure, there is provided a method for providing a notary service for a file, including steps of: (a) a server computer, if a notary service request for the file is acquired, generating or supporting another device to generate a specific message digest of the file by using a hash function; and (b) the server computer, if one of anchoring conditions is satisfied, registering or supporting another device to register a representative value or a processed value of the representative value in a database, wherein the representative value is generated by using a specific value and its corresponding at least one neighboring value, wherein the representative value is generated with a specific value and a corresponding at least one neighboring value, and wherein the specific value is a function value of a result acquired by encoding the specific message digest with a private key of a specific user and a private key of the server computer, and the step of (b) further comprises steps of (b-1) generating at least one specific tree including a specific leaf node where the specific value is allocated, and (b-2) in response to said server computer determining that said one or more anchoring conditions is satisfied, registering in the database the representative value or the processed value of the representative value calculated in the specific tree by using the specific hash value and at least one value allocated to at least one of other leaf nodes, wherein the anchoring conditions include at least one of (i) acquisition of a certain number of message digests including the specific message digest in response to respective notary service requests, (ii) a certain time lapse, (iii) generation of a block in a blockchain, and (iv) one or more characteristics of a user who requests a notary service.
- As one example, in response to determining that no notary service request is acquired at the step of (a), and in response to determining that said one of the anchoring conditions is satisfied at the step of (b), the server computer performs or supports another device to perform a process of generating the specific tree with first and second leaf nodes where certain message data is respectively allocated, and a process of registering a root value of the specific tree or a processed value of the root value in the database.
- As one example, the notary service for the file includes at least one of an authentication service for the file and a revocation service for the file.
- As one example, the database is a blockchain of a virtual currency or the database is managed by the server computer.
- In accordance with another aspect of the present disclosure, there is provided a method for verifying a file recorded by using a notary service, including steps of: (a) a server computer acquiring or supporting another device to acquire a verification request for the file, in response to the server computer having acquired a notary service request for the file, and having registered a first representative value or a processed value of the first representative value in a database, wherein the first representative value is generated with a first specific value and a corresponding at least one neighboring value under one of a plurality of anchoring conditions, and wherein the first specific value being a function value of a result acquired by encoding a specific message digest of the file with a private key of a specific user and a private key of the server computer; and (b) the server computer determining or supporting another device to determine that verification of the file is completed in response to a determination that a second representative value or a processed value of the second representative value generated using input data included in the verification request, corresponds to the first representative value or a processed value of the first representative value, wherein the anchoring conditions include at least one of (i) acquisition of a certain number of message digests including the specific message digest in response to respective notary service requests, (ii) a certain time lapse, (iii) generation of a block in a blockchain, and (iv) one or more characteristics of a user who requests a notary service, and the step of (b) further comprises a step of (b-1) the server computer performing or supporting another device to perform calculating the second representative value using a second specific value allocated to a specific leaf node of a specific tree, and a value allocated to at least one of other leaf nodes.
- As one example, the step of (a) further includes steps of: (a1) the server computer referring to or the server computer supporting another device to refer to a certain transaction ID related to the file in response to the verification request being acquired; and (a2) the server computer acquiring or supporting another device to acquire an OP message from the database by referring to the certain transaction ID, and wherein, at the step of (b), in response to determining that the second representative value or a processed value of the second representative value generated by using the input data included in the verification request corresponds to the first representative value or a processed value of the first representative value included in the OP message, the server computer determines or supports another device to determine that the verification is completed.
- As one example, at the step of (a1), in response to the verification request being acquired, the server computer performing or supporting the another device to perform a process of identifying information on a specific tree related to the input data and on leaf nodes of the specific tree, and a process of referring to the certain transaction ID which corresponds to the information on the identified specific tree.
- As one example, the second representative value is generated by using a second specific value and a corresponding at least one neighboring value, and wherein the second specific value is a function value of a result acquired by encoding the specific message digest of the file extracted from the input data included in the verification request with the private key of the specific user and the private key of the server computer.
- As one example, the database is a blockchain of a virtual currency or the database is managed by the server computer.
- In accordance with still another aspect of the present disclosure, there is provided a server computer for providing a notary service for a file, including: at least one memory that stores instructions; and at least one processor configured to execute the instructions to perform processes of: (I) responding to a notary service request being acquired by generating or supporting the another device to generate a specific message digest of the file by using a hash function, and (II) in response to the processor determining that one or more anchoring conditions is satisfied, registering or supporting the another device to register a representative value or a processed value of the representative value in a database, wherein the representative value is generated with a specific value and a corresponding at least one neighboring value, and wherein the specific value being a function value of a result acquired by encoding the specific message digest with a private key of a specific user and a private key of the server computer, and at the process of (II), the processor further performs processes of (II-1) generation of at least one specific tree including a specific leaf node where the specific value is allocated, and (II-2) in response to said processor determining that said one or more anchoring conditions is satisfied, registering in the database the representative value or the processed value of the representative value calculated by using the specific value and at least one value allocated to at least one of other leaf nodes, wherein the anchoring conditions include at least one of (i) acquisition of a certain number of message digests including the specific message digest in response to respective notary service requests, (ii) a certain time lapse, (iii) generation of a block in a blockchain, and (iv) one or more characteristics of a user who requests a notary service.
- As one example, in response to the processor determining that no notary service request is acquired at (I), and in response to said one of the anchoring conditions being satisfied at (II), the processor performs or supports the another device to generate a specific tree with first and second leaf nodes where certain message data is respectively allocated, and register a root value or a processed value of the root value of the specific tree in the database.
- As one example, the notary service for the file includes at least one of an authentication service for the file and a revocation service for the file.
- As one example, the database is a blockchain of a virtual currency or the database is managed by the server.
- In accordance with still yet another aspect of the present disclosure, there is provided a server computer for verifying a file recorded by using a notary service, including: at least one memory that stores instructions; and at least one processor configured to execute the instructions to perform processes of: (I) determining that verification of the file is completed in response to the server having acquired a notary service request for the file, and having registered a first representative value or processed value of the first representative value in a database, wherein the first representative value is generated using a first specific value and a corresponding at least one neighboring value under at least one of a plurality of anchoring conditions, and wherein the first specific value is a function value of a result acquired by encoding a specific message digest of the file with a private key of a specific user and a private key of the server, in response to a second representative value or a processed value of the second representative value, generated by using input data included in an acquired verification request, corresponding to the first representative value or a processed value of the first representative value registered in the database, wherein the plurality of anchoring conditions include at least one of (i) acquisition of a certain number of message digests including the specific message digest in response to respective notary service requests, (ii) a certain time lapse, (iii) generation of a block in a blockchain, and (iv) one or more characteristics of a user who requests a notary service, and (II) calculating the second representative value using a second specific value allocated to a specific leaf node of a specific tree, and a value allocated to at least one of other leaf nodes.
- As one example, the processor, in response to the verification request being acquired, is configured to refer or support the another device to refer to a certain transaction ID related to the file, and acquire or support the another device to acquire an OP message from the database by referring to the certain transaction ID, and, in response to the second representative value or a processed value of the second representative value generated by using the input data included in the verification request corresponds to the first representative value or a processed value of the first representative value included in the OP message, determines or supports another device to determine that the verification is completed.
- As one example, in response to the verification request being acquired, the processor performs or supports the another device to perform a process of identifying information on the specific tree related to the input data and on leaf nodes of the specific tree, and a process of referring to the certain transaction ID which corresponds to the information on the identified specific tree.
- As one example, the second representative value is generated by using a second specific value and corresponding at least one neighboring value, and wherein the second specific value is a function value of a result acquired by encoding the specific message digest of the file extracted from the input data included in the verification request with the private key of the specific user and the private key of the server computer.
- As one example, the database is a blockchain of a virtual currency or the database is managed by the server computer.
- The drawings attached below to explain example embodiments of the present disclosure are only part of example embodiments of the present disclosure and other drawings may be obtained based on the drawings without inventive work for those skilled in the art:
-
FIG. 1 is a block diagram illustrating a configuration of a server that provides a notary service for a file and verifies the file recorded by using the notary service, in accordance with one example embodiment of the present disclosure. -
FIG. 2 is a sequence diagram illustrating a process of performing the notary service for the file in response to a request from a single user. -
FIGS. 3 and 4 are diagrams illustrating examples of Merkle trees generated in accordance with one example embodiment of the present disclosure. -
FIG. 5 is a sequence diagram illustrating a process of performing a verification service for the file in response to a request from a single user. -
FIG. 6 is a sequence diagram illustrating a parallel signing process of performing in parallel the notary service in response to notary service requests from multiple users. -
FIG. 7 is a sequence diagram illustrating a serial signing process of performing the notary service sequentially in response to notary service requests from multiple users. -
FIG. 8 is a sequence diagram illustrating a process of performing verification for the file authenticated with signings of the multiple users. - Detailed explanation on the present disclosure to be made below refer to attached drawings and diagrams illustrated as specific embodiment examples under which the present disclosure may be implemented to make clear of purposes, technical solutions, and advantages of the present disclosure. These embodiments are described in sufficient detail to enable those skilled in the art to practice the disclosure.
- Besides, in the detailed description and claims of the present disclosure, a term “include” and its variations are not intended to exclude other technical features, additions, components or steps. Other objects, benefits, and features of the present disclosure will be revealed to one skilled in the art, partially from the specification and partially from the implementation of the present disclosure. The following examples and drawings will be provided as examples but they are not intended to limit the present disclosure.
- Moreover, the present disclosure covers all possible combinations of example embodiments indicated in this specification. It is to be understood that the various embodiments of the present disclosure, although different, are not necessarily mutually exclusive. For example, a particular feature, structure, or characteristic described herein in connection with one embodiment may be implemented within other embodiments without departing from the spirit and scope of the present disclosure. In addition, it is to be understood that the position or arrangement of individual elements within each disclosed embodiment may be modified without departing from the spirit and scope of the present disclosure. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present disclosure is defined only by the appended claims, appropriately interpreted, along with the full range of equivalents to which the claims are entitled. In the drawings, like numerals refer to the same or similar functionality throughout the several views.
- To allow those skilled in the art to the present disclosure to be carried out easily, the example embodiments of the present disclosure by referring to attached diagrams will be explained in detail as shown below.
-
FIG. 1 is a block diagram illustrating a configuration of a server that provides a notary service for a file and verifies the file recorded by using the notary service, in accordance with one example embodiment of the present disclosure. AndFIG. 2 is a sequence diagram illustrating a process of performing the notary service for the file in response to a request from a single user. - Before explaining each of example embodiments, the following are definitions of expressions used in the present specification. On the left of ‘:’ is an expression and on the right is a definition of the expression.
- <Definitions of Expressions>
- PrivX: Private key of X
- PubX: Public key of X
- AESX: AES secret key of X
- EncPrivX(Y): Output of encryption of Y using PrivX
- DecPubX(Y): Output of decryption of Y using PubX
- EncAESX(Y): Output of AES encryption of Y using AESX
- DecAESX(Y): Output of AES decryption of Y using AESX
- Hash(Y): Hash value of Y
- First of all, a process of performing the notary service for the file in response to the request from the single user is explained by referring to
FIGS. 1 and 2 . - By referring to
FIG. 1 , theserver 100 that performs the notary service for the file in accordance with said one example embodiment of the present disclosure may include acommunication part 110 and aprocessor 120. The server in each example embodiment may be a separate server, but for convenience, it is explained that the service is performed by thesingle server 100. In addition, the server may further include a memory capable of storing computer readable instructions for performing following processes. As one example, the processor, the memory, a medium, etc. may be integrated with an integrated processor. - The
communication part 110 may be configured to transmit and receive data to and from the user or a user device, and adatabase 200. First, thecommunication part 110 may acquire or support another device to acquire a notary service request for the file at a step of S210. As illustrated inFIG. 2 , if the notary service request for the file is acquired, the file and PubU, which is a public key of the user who requests the notary service, may be acquired. Thecommunication part 110 may respond to the request at a step of S220 where the request and its corresponding response may be performed during one TCP session. - If the notary service request for the file is acquired, the
processor 120 may generate or support another device to generate a message digest of the file using a hash function, i.e., MD=Hash (File), at a step of S215. Herein, the hash function may vary in its type. For example, the hash function may be triple sha256. Also, the hash function in the present specification generally means a function to transform the original file, but may include a function that just stores the file without any modification in an extreme case. In this case, the message digest generated by using the hash function may be the same as the file. - The message digest generated in response to the notary service request for the file at the step of S220 may be transmitted to the user who requests the notary service for the file. If the user requests the notary service through the user device, not shown in the diagram, the generated message digest may be transmitted to the user device.
- Next, the
communication part 110 may acquire EncPrivU (MD), calculated by encoding the message digest with a private key PrivU of the user, from the user at a step of S225. In this case, the message digest and the PubU may also be received from the user because the TCP session may be disconnected after the response of the step S220. For reference, although the present specification is described by using expressions EncPriv (MD) and EncPub (MD) of encoding the message digest with a private key and a public key, the expressions may be replaced with SigPriv (File) and SigPub (File). Additionally, in case that the message digest is generated more than once, expressions SigPriv (MD) and SigPub (MD) may be used. - Further, if the EncPrivU (MD), calculated by encoding the message digest with the PrivU, is acquired, and if the generated message digest B corresponds to information A which is DecPubU (EncPrivU (MD)) acquired by decoding the EncPrivU (MD) with the PubU at a step of S230-2, the
processor 120 may generate or support another device to generate a function value of a first encoded message digest generated by encoding the message digest with the PrivU and a private key PrivC of theserver 100 using a specific function at a step of S240, and may register or support another device to register the generated function value of the first encoded message digest in thedatabase 200 at a step of S250. For example, the specific function may be a hash function and the function value may be a hash value, but the present disclosure may not be limited thereto. The reason for registering the message digest in the form of the function value in thedatabase 200 is that the size of the data needs to be reduced due to the limits on a storage capacity of thedatabase 200. Herein, thedatabase 200 may be a blockchain of virtual currency. For example, it may be a bitcoin blockchain. - For reference, in the
FIG. 2 , the expression ‘DecPubU (EncPrivU (MD))==MD’ is used to represent that the A corresponds to the B, but the expression of the present disclosure is not limited thereto. For example, ‘True==VerPubU (SigPrivU (File))’ may also represent the same relationship. Additionally, in case that the message digest is generated more than once, the expression ‘True==VerPubU (SigPrivU (MD))’ may be used. - Moreover, if the A corresponds to the B, the
processor 120 may register or support another device to register the function value of the first encoded message digest, for example, Hash[EncPrivC (EncPrivU (MD))] which is the hash value of the first encoded message digest generated by encoding the message digest in sequence with the PrivU and the PrivC, in thedatabase 200. In other words, the function value of the first encoded message digest may be registered in thedatabase 200 after the user, who is a client, signs the message digest first with the PrivU and then theserver 100, which is an authentication officer, signs it with the PrivC. However, the order of signing may be different from this. Especially, if a session between the user and theserver 100 is being maintained, theserver 100 may sign first and then the user may. - In case that the function value of the first encoded message digest generated by encoding the message digest with the PrivU and the PrivC is registered in the
database 200, thecommunication part 110 may acquire a transaction ID, i.e., TxID, from thedatabase 200 at a step of S255, wherein the TxID indicates a location of the value of the first encoded message digest registered in thedatabase 200. - On the other hand, if the A does not correspond to the B at a step of 230-1, the
processor 120 may send a message of unsuccessful registration to the user by reason that the user is not a person related to the file, e.g. a transactor, at a step of S235. - Additionally, if the A corresponds to the B, the
processor 120 may store or support another device to store the file at a step of S245. Herein, the file may be encrypted with a symmetric key encryption algorithm such as AES, i.e., Advanced Encryption Standard. In this case, the secret key may be a certain secret key processed from the public key of the user, but the scope of the present disclosure is not limited thereto. - The
processor 120 may store or support another device to store the PubU, the message digest MD, the EncPrivU (MD), and the TxID. Moreover, theprocessor 120 may further store or support another device to store EncPrivC(EncPrivU (MD)), which is the first encoded message digest generated by encoding the MD in sequence with the PrivU and the PrivC, and its function value, for example, its hash value Hash [EncPrivC (EncPrivU (MD))]. - If authentication information is registered in the
database 200 as stated above, thecommunication part 110 may send a message of successful registration to the user at a step of S260. - However, in case of the aforementioned example embodiment, there are disadvantages such as a bottleneck in providing the service caused by the increased number of transaction requests because an OP message is generated for every file and recorded in the blockchain, and high costs for a service management because the transaction fee must be paid every time.
- Hereinafter, an authentication system is explained that can take advantage of and further complement the authentication system for the file to perform the authentication in real-time without a possibility of forgery and falsification, thereby guaranteeing a fast service and reducing the costs while. Such an authentication system uses a distinct data structure managed by the
server 100, unlike the aforementioned example embodiment. - If the notary service request for the file is acquired through the
communication part 110, theaforementioned processor 120 may generate or support another device to generate a specific message digest of the file using the hash function. The repeated explanation is omitted as it is similar to the aforementioned example embodiment. Herein, the notary service for the file may be an authentication service for the file or a revocation service for the file, unlike the aforementioned example embodiment. - Also, if one of anchoring conditions is satisfied, the
processor 120 may register or support another device to register a representative value or its processed value in a database, wherein the representative value is generated by using a specific value and its corresponding at least one neighboring value, and wherein the specific value is a function value of a result acquired by encoding the specific message digest with a private key of a specific user and the private key of theserver 100 using a specific function. In other words, theprocessor 120, if said one of the anchoring conditions is satisfied, may generate or support another device to generate the representative value or its processed value by calculating the function value of the result and its corresponding at least one neighboring value, acquired by encoding the specific message digest with the private key PrivU of the specific user and the private key PrivC of theserver 100, and register or support another device to register the generated representative value or its processed value in the database, instead of registering the function value of the result of encoding the specific message digest with the PrivU and the PrivC as stated above at the step of S240. Herein, the database may not be managed by theserver 100 like theaforementioned database 200, e.g. the blockchain of the virtual currency, but may also be managed by theserver 100. The explanation in the present specification is focused on thedatabase 200 which is not managed by theserver 100, but the technical idea of the present disclosure may be applied to the database managed by theserver 100. - The calculation of the specific value and its corresponding at least one neighboring value may be performed by various functions. Assuming the specific value to be input and the neighboring values to be x1, x2, . . . , and xn, the representative value t may be expressed, for example, as the following equation.
-
t=hash(function(input, x1, x2, . . . , xn)) <Equation> - Herein, the
server 100 may store or support another device to store the specific value and its corresponding at least one neighboring value in a certain form of a data structure and manage them. In this regard, the data structure may vary, and one example thereof may be a structure of a specific tree. In this case, the calculation of the specific value and its corresponding at least one neighboring value may be performed by using the specific tree. Herein, the specific tree may be at least one Merkle tree, but the scope of the present disclosure is not limited thereto. In other words, theprocessor 120 may generate or support another device to generate at least one specific tree including a specific leaf node where the specific value is allocated, and if said one of the anchoring conditions is satisfied, may register or support another device to register the representative value or its processed value, which is calculated from the specific value and at least one value allocated to at least one of other leaf nodes, in thedatabase 200. Herein, the representative value represents a value in a root node of the specific tree or a value in an intermediate node of the specific tree, but it is not limited thereto. - More specifically, in case of the specific tree is a Merkle tree, (x1) the
processor 120 may calculate or support another device to calculate (i) the specific hash value and (ii) a hash value allocated to a sibling node of the specific leaf node where the specific hash value is allocated, to thereby acquire a resultant value, and then allocate or support another device to allocate a hash value of the resultant value to a parent node of the specific leaf node. (x2) If the parent node is a root node of the Merkle tree, the hash value of the resultant value allocated to the parent node may be regarded as the representative hash value. (x3) On the other hand, if the parent node is not the root node of the Merkle tree, theprocessor 120 may repeat or support another device to repeat the steps of (x1) to (x3) by using the hash value allocated to the parent node as the specific hash value. - Additionally, the
processor 120 may register or support another device to register the hash value ultimately allocated to the root node or the parent node of the Merkle tree in thedatabase 200 as the representative value. Herein, the processed value of the representative value may be registered. For example, a value resulting from hex operation on the representative value may be registered. - A first data structure and a second data structure may be linked in a form of a chain if the
server 100 stores the specific value and the at least one neighboring value in the first data structure and then stores and manages the second data structure in an identical form with the first data structure. - Hereinafter, the representative value is assumed to represent a value in a root node of the Merkle tree.
- As stated above, if the first data structure and the second data structure are the structure of the Merkle tree, a root value of the first data structure or its processed value may be allocated to a first leaf node of the second data structure.
- Moreover, data integrity may be further ensured by verifying the first data structure when the second data structure is generated. Verification of the second data structure will be explained later.
- Further, in case of a first specific tree among two or more specific trees linked in a form of a chain, a value of certain message data or its processed value comprised of text, number or symbol may be allocated to a first leaf node of the first specific tree. For example, a value of a first input message given by the
server 100 at the time of generation of the specific tree may be allocated. -
FIGS. 3 and 4 are diagrams illustrating examples of the Merkle trees generated in accordance with said one example embodiment of the present disclosure. -
FIG. 3 illustrates a Merkle tree with four (22) leaf nodes. As the illustrated Merkle tree is the first Merkle tree whose tree_id is zero, the hash value triplesha256digest(coinplug_unique_message) of the certain message data “Coinplug 2016-01-01” is allocated to a node h0 which is the first leaf node. In case that the notary service request for the file is acquired, theprocessor 120 may generate or support another device to generate a leaf node next to the last leaf node of the currently configured Merkle tree and allocate or support another device to allocate the specific hash value or its processed value to the generated leaf node. For example, if allocation is completed up to a node h1, which is a second leaf node of the Merkle tree inFIG. 3 , at a previous step, a node h2 which is a next leaf node may be generated and the specific hash value or its processed value triplesha256digest(input2) may be allocated to the node h2. Further, theprocessor 120 may calculate or support another device to calculate (i) the specific hash value and (ii) a hash value allocated to a sibling node h3 of the node h2, which is a third leaf node where the specific hash value is allocated to, to thereby acquire a resultant value. A hash value of the resultant value may be allocated to a parent node h23 of the node h2 and the node h3. As the parent node h23 is not the root node of the Merkle tree, theprocessor 110 may repeat or support another device to repeat the above process by using the hash value allocated to the node h23 as the specific hash value. In other words, the hash value allocated to the node h23 and a hash value allocated to a node h01 may be used to generate a calculated value which is allocated to a node h0123, i.e., a parent node of the node h23 and the node h01. Herein, as the node h0123 is the root node of the Merkle tree, theprocessor 120 may register or support another device to register a processed value hex(h{node index}) of the hash value allocated to the node h0123 in thedatabase 200. Additionally, the processor 102 may register or support another device to register a processed value hex of the hash value allocated to at least one of parent modes of the Merkle tree in thedatabase 200. - Meanwhile, the aforementioned anchoring conditions may include at least one of (i) acquisition of a certain number of message digests including the specific message digest in response to respective notary service requests, (ii) a certain time lapse, (iii) generation of a block in a blockchain, and (iv)one or more characteristics of the user who requests the notary service.
- For example, if the message digests are acquired as much as the number of leaf nodes of the Merkle tree in response to the respective notary service requests, a hash value of a result acquired by encoding each of the message digests with the private key of each user and the private key of the
server 100 may be input of the Merkle tree, that is, values allocated to the leaf nodes. - Also, the
processor 120 may generate or support another device to generate a root value of the Merkle tree by the certain time as the condition (ii) above. In this case, if the certain time is elapsed, theprocessor 120 may generate or support another device to generate the Merkle tree using the input of the certain time and may register or support another device to register the root value of the Merkle tree in thedatabase 200. - However, in this case, there may be no value allocated to the sibling node of the specific leaf node where the specific hash value is allocated despite the certain time lapse. In case that no hash value is allocated to the sibling node of the specific leaf node despite the certain time lapse, the
processor 120 may allocate or support another device to allocate a certain hash value to the sibling node to thereby produce the root value of the Merkle tree in the aforementioned way. For example, theprocessor 120 may copy and allocate the specific hash value to the sibling node. - The characteristics of the user who requests the notary service may be at least part of information on cost paid by the user who requests the notary service, information on a time-zone during which the notary service is performed, information on location where the notary service is performed, and information on a type of the user who requests the notary service. But the scope of the present disclosure is not limited thereto.
- Meanwhile, if generation of a new Merkle tree starts and if said one of the anchoring conditions is satisfied without any notary service request, the
processor 120 may generate or support another device to generate the new Merkle tree with first and second leaf nodes where certain message data is respectively allocated, and may register or support another device to register a root value or its processed value of the new Merkle tree in thedatabase 200. In this case, the Merkle tree may be generated with two leaf nodes. - However, if the
server 100 stores the specific hash value and the at least one neighboring hash value in the first data structure and then stores and manages the second data structure in an identical form with the first data structure as aforementioned, the first data structure and the second data structure may be linked in a form of a chain. Especially, if the first data structure and the second data structure are the Merkle trees, the root value of the first data structure or a hash value of the root value may be allocated to the first leaf node of the second data structure. -
FIG. 4 is a diagram illustrating an example of a new Merkle tree generated as the second data structure in accordance with said one example embodiment of the present disclosure. - By referring to
FIG. 4 , it is clear that the root value hex (h0123) of the Merkle tree whose tree id is zero inFIG. 3 is allocated to a node h4, which is a first leaf of the new Merkle tree, as triplesha256digest (input4). In such a manner, tracking becomes easier even in the case of data forgery and, therefore the present disclosure has an advantage of improving the data integrity, by linking multiple data structures created when a transaction occurs. - Next, a process for verifying a file in response to a request from a single user is explained.
- Verification in the present specification may be requested by the transactor or a third party, and may be sorted into a case using the distinct data structure managed by the
server 100 and a case without using the distinct data structure. Both terms of “audit” and “verification” may be used. First of all, the verification performed without using the distinct data structure managed by theserver 100 is explained. - The file may be verified by a separate device which may refer to information on the
aforementioned server 100, or by theaforementioned server 100. Hereinafter, the explanation is based on the verification of the file by theaforementioned server 100 for convenience. -
FIG. 5 is a sequence diagram illustrating a process of performing a verification service for the file in response to the request from the single user. - By referring to
FIG. 5 , similarly to the aforementioned example, thecommunication part 110 may acquire a verification request for the file at a step of S510. As illustrated inFIG. 5 , if the verification request for the file is acquired, the file and the PubU, which is the public key of the user who requests the verification, may be acquired. Thecommunication part 110 may respond to the request, and the request and its corresponding response may be performed within one TCP session. - As stated above, on condition that the
server 100 has determined the user, who requested the notary service of the file, as related to the file in response to the notary service request for the file and, as a result, that theserver 100 has stored the function value of the first encoded message digest, generated by encoding the message digest of the file with the PrivU and the PrivC, in thedatabase 200, and has been managing its corresponding transaction ID, if the verification request for the file is acquired, theprocessor 120 may acquire or support another device to acquire the transaction ID corresponding to at least one of the PubU and the message digest of the file. In this case, the transaction ID, i.e., TxID, may have been stored in theserver 100 or in a device which theserver 100 may refer to. - In case that the
communication part 110 receives the verification request for the file at the step of S510, if the file is acquired for the verification, theprocessor 120 may generate or support another device to generate an original message digest of the file using the hash function, i.e., MD=Hash (File), at a step of S515. In this case, theprocessor 120 may refer to the transaction ID corresponding to at least one of the PubU and the generated original message digest of the file. - If no information corresponding to the original message digest is found despite the verification request at a step of S520-1, the
communication part 110 may send a message of unsuccessful verification to the user at a step of S525. - Also, if the information, which is the transaction ID corresponding to the original message digest, is found at a step of S520-2, the
communication part 110 may send a query to thedatabase 200 using the TxID at a step of S525 and acquire an OP message including the function value of the first encoded message digest generated by encoding the message digest with the PrivU and the PrivC from thedatabase 200 at a step of S530. - Further, if a function value of a second encoded message digest, generated by encoding the original message digest with the PrivC and the PrivU, corresponds to the function value of the first encoded message digest in the OP message, then the
processor 120 may determine or support another device to determine the file as verified at a step of S535. - Herein, the second encoded message digest generated by encoding the original message digest with the PrivC and the PrivU may be EncPrivC (EncPrivU (MD)) which is generated by encoding the original message digest in sequence with the PrivU and the PrivC.
- However, even in case that the function value of X, which is the second encoded message digest, corresponds to the function value of the first encoded message digest in the OP message, if a result value DecPubU (DecPubC (EncPrivC (EncPrivU (MD)))), acquired by decoding the X with a public key PubC of the
server 100 and the PubU, corresponds to the message digest of the file, theprocessor 120 may further determine or support another device to determine the file as verified at a step of S540. In other words, the verification of the file may be completed with two more steps. This is because there may be a possibility of changes in the private key, the public key, etc. of the user. - The three steps of the verification above may be represented as the expressions below.
-
OP_MESSAGE==Hash[EnC PrivC(EnC PrivU(MD))] -
EnC PrivU(MD)==DeC PubC [EnC PrivC(EnC PrivU(MD))] -
MD(=Hash[File])==DeC PubU [EnC PrivU(MD)] <Expression 1> - If the verification of the file is successful, the
communication part 110 may send a message of successful verification to the user at a step of S545. - Also, if the file is determined as verified, the
processor 120 may allow a download of the file. In this case, the user may download the file through the user device, etc. - Next, the verification performed by using the distinct data structure managed by the
server 100 is explained. - First of all, as stated above, on condition that the
server 100 has acquired the notary service request for the file, and then has registered the aforementioned representative value, referred to here for convenience as a first representative value, or its processed value in thedatabase 200, wherein the first representative value is generated by using the aforementioned specific value, referred to here for convenience as a first specific value, and its corresponding at least one neighboring value under said one of the anchoring conditions, and wherein the first specific value is the function value of the result acquired by encoding the specific message digest of the file with the private key of the specific user and the private key of theserver 100, if a verification request for the file is acquired, and if a second representative value or its processed value, generated by using input data included in the verification request, corresponds to the first representative value or its processed value registered in thedatabase 200, then theprocessor 120 may determine or support another device to determine that the verification of the file is completed. - In this regard, the second representative value may be generated by calculating a second specific value and its corresponding at least one neighboring hash value, wherein the second specific value is a function value of a result acquired by encoding the specific message digest of the file extracted from the input data included in the verification request with the private key of the specific user and the private key of the server.
- Herein, the input data included in the verification request may have at least one of (i) the file, (ii) the specific message digest of the file, or (iii) an ID issued during the notary service for the file.
- If the input data includes the file, the specific message digest of the file may be generated by the aforementioned method, and the second specific value may be generated based thereon. Further, the second representative value may be generated by calculating the second specific value and its corresponding at least one neighboring value.
- If the input data includes the ID issued during the notary service, the second specific value may be set to a value allocated to a leaf node corresponding to the ID in the previously generated specific tree. In the examples illustrated in
FIGS. 3 and 4 , the ID may be a unique ID. - The same explanation for the first specific value aforementioned may be applied to the second specific value. That is, the calculation of the second specific value and its corresponding at least one neighboring value may be performed by various functions. Thus the explanation thereof is omitted by referring to the above.
- In this case, the calculation of the second specific value and its corresponding at least one neighboring value may be performed by using a specific tree. If the verification request is acquired, the
processor 120 may identify or support another device to identify information on the specific tree related to the input data and on its leaf nodes. - Further, the second representative value may be calculated by using the second specific value allocated to a specific leaf node of the specific tree.
- In case that the service is performed by using the database not managed by the
server 100, e.g. the blockchain of the virtual currency, theprocessor 120 may refer or support another device to refer to a certain transaction ID corresponding to the information on the identified specific tree. - In this case, if the verification request for the file is acquired, the
processor 120 may refer or support another device to refer to the certain transaction ID, and acquire or support another device to acquire an OP message from thedatabase 200 by referring to the certain transaction ID. Also, if the second representative value or its processed value, generated by using the input data included in the verification request, corresponds to the first representative value or its processed value included in the OP message, the verification of the file may be determined as completed. - Meanwhile, the certain transaction ID may be provided as included in the input data. In other words, in response to the verification request, the user may transmit or support another device to transmit the certain transaction ID to the
server 100 in addition to at least one of (i) the file, (ii) the specific message digest of the file, or (iii) the ID issued during the notary service for the file. - In a calculation process of the verification, the
processor 120 may generate or support another device to generate a new specific tree. In this process, the specific tree generated during the aforementioned notary service may be used. For example, in case of a Merkle tree, (x1) theprocessor 120 may calculate or support another device to calculate (i) the second specific hash value and (ii) a hash value allocated to a sibling node of the specific leaf node where the second specific hash value is allocated in the previously generated Merkle tree, to thereby acquire a resultant value, and then allocate or support another device to allocate a hash value of the resultant value to a parent node of the specific leaf node in the new Merkle tree. Further, (x2) if the parent node is a root node of the new Merkle tree, theprocessor 120 may compare or support another device to compare the hash value allocated to the parent node, as the second representative hash value, with the first representative hash value or its processed value included in the OP message, and (x3) if the parent node is not the root node of the Merkle tree, repeat or support another device to repeat the steps of (x1) to (x3) by using the hash value allocated to the parent node as the second specific hash value. - The
processor 120, if the root value or its processed value ultimately generated in the specific tree corresponds to the first representative value or its processed value in the OP message, may determine or support another device to determine that the verification of the file is completed. - In the present disclosure, if a Merkle tree with nm(=N) leaf nodes is generated during the notary service, integrity of the transaction may be confirmed quickly as the verification of the file is possible by calculating only as much as the height of the Merkle tree, i.e., lognN=m.
- On the other hand, if the input data is acquired, the
processor 120 may identify or support another device to identify at least part of the information on the specific tree related to the input data and on its leaf nodes, by referring to time information related to the input data. - Hereinafter, the verification process is explained by taking an example illustrated in
FIG. 3 . - By referring to
FIG. 3 again, if verification ofinput 2 is requested, theprocessor 120 may identify or support another device to identify the information on the previously generated Merkle tree and on its leaf nodes by referring to the information on the input data, and acquire or support another device to acquire the OP message from thedatabase 200 by transmitting the certain transaction ID corresponding to the information on the identified Merkle tree whose tree id is zero to thedatabase 200. Then, theprocessor 120 may generate or support another device to generate the new Merkle tree by using theinput 2. As a hash value of theinput 2, i.e., triplesha256digest(input2), is allocated to the node h2, theprocessor 120 may calculate or support another device to calculate the hash value allocated to the node h2 and the hash value allocated to the sibling node h3 of thenode 2 in the previously generated Merkle tree, to thereby acquire a resultant value. A hash value of the resultant value may be allocated to the parent node h23 of the node h2 and the node h3. As the node h23 is not the root node of the new Merkle tree, theprocessor 120 may repeat or support another device to repeat the above process by using the hash value allocated to the node 23 as the second specific hash value. In other words, by using the hash value allocated to the node h23 as the second specific hash value, the hash value allocated to the node h23 and the hash value allocated to the node h01 in the previously generated Merkle tree may be calculated and then allocated to the node h0123 which is the parent node of the node h23 and the node h01. Herein, as the node h0123 is the root node of the Merkle tree, theprocessor 120 may compare or support another device to compare the processed value hex(h{node_index}) of the hash value allocated to the node h0123 with the first representative hash value or its processed value included in the OP message. - Next, a process for performing the notary service of the file in response to requests from multiple users is explained in accordance with another example embodiment of the present disclosure. However, the repeated explanation is omitted. Further, the same numerals indicate the same devices in the previous embodiment of the present disclosure. First of all, an authentication system without using the distinct data structure managed by the
server 100 is explained. -
FIG. 6 represents a parallel signing process of performing the notary services in parallel, andFIG. 7 represents a serial signing process of performing the notary services sequentially, in response to the notary service requests from at least part of the multiple users. - First of all, by referring to
FIG. 6 , if at least two notary service requests for the file are acquired from at least two of the multiple users at steps of S610 and S620, theprocessor 120 may generate or support another device to generate the message digest of the file, i.e., MD=Hash (File), using the hash function at each step of S612 and S622. Moreover, if a first message digest generated by encoding the message digest with a private key PrivU1 of a first user and a second message digest generated by encoding the message digest with a private key PrivU2 of a second user are acquired at steps of S640 and S650, and if each piece of (i) information A′ which is DecPubU1 (EncPrivU1 (MD)) acquired by decoding the first message digest with a public key PubU1 of the first user and (ii) information B′ which is DecPubU2 (EncPrivU2 (MD)) acquired by decoding the second message digest with a public key PubU2 of the second user corresponds to the generated message digest C′, which is the MD, at a step of S640-3, then theprocessor 120 may register or support another device to register a function value of a third message digest, generated by encoding the MD with the PrivU1, the PrivU2, and the PrivC, in thedatabase 200 at a step of S675. - Next, the
communication part 110 may acquire a transaction ID indicating a location of the registered function value of the third message digest in thedatabase 200 at a step of S680. - Moreover, if each of the A′ and the B′ corresponds to the C′, the
processor 120 may register or support another device to register EncPrivC(EncPrivU1 (MD)+EncPrivU2 (MD)), which is acquired by encoding a data group with the PrivC, in thedatabase 200, wherein the data group is comprised of the first message digest generated by encoding the MD with the PrivU1 and the second message digest generated by encoding the MD with the PrivU2. - Next, by referring to
FIG. 7 , if the notary service request for the file is acquired at each step of S710 and S735, theprocessor 120 may generate or support another device to generate the message digest of the file using the function, for example, MD=Hash (File), at each step S712 and S737. In this case, as illustrated inFIG. 7 , the PubU1, the PubU2, and the file may be acquired together. - If (i) the first message digest EncPrivU1 (MD), generated by encoding the message digest with the PrivU1, is acquired at a step of S720, and information A″, which is the DecPubU1(EncPrivU1 (MD)) acquired by decoding the first message digest with the PubU1, corresponds to the generated message digest B″, which is the MD, and if (ii) EncPrivU2 (EncPrivU1 (MD)), generated by encoding the message digest with the PrivU1 and the PrivU2, is acquired at a step of S745, and information C″ which is DecPubU2 (EncPrivU2 (EncPrivU1 (MD))) acquired by decoding the EncPrivU2 (EncPrivU1 (MD)) with the PubU2 corresponds to information D″ which is the first message digest EncPrivU1 (MD) at a step of S760, then the
processor 120 may register or support another device to register the function value of the third message digest, generated by encoding the message digest with the PrivU1, the PrivU2, and the PrivC, in thedatabase 200 at a step of S775. - Moreover, if the A″ corresponds to the B″, and if the C″ corresponds to the D″, the
processor 120 may register or support another device to register SO=EncPrivC (EncPrivU2 (EncPrivU1 (MD))), which is generated by encoding the message digest in sequence with the PrivU1, the PrivU2, and the PrivC, in thedatabase 200. - Herein, the
communication part 110 may acquire the transaction ID, i.e., TxID, indicating a location of the registered hash value of the third message digest in thedatabase 200 at a step of S780. - Next, said another example embodiment of responding to the notary service requests from the multiple users in the authentication system using the distinct data structure managed by the
server 100 is further explained. - The
processor 120, (i) if the notary service request for the file is acquired, may generate or support another device to generate the specific message digest of the file by using the function, and, (ii) if one of the anchoring conditions is satisfied, may register or support another device to register a representative value or its processed value in thedatabase 200, wherein the representative value is generated by using the specific value and its corresponding at least one neighboring value, and wherein the specific value is a function value of a result acquired by encoding the specific message digest with the private key of the first user, the private key of the second user, and the private key of theserver 100. - Herein, in the parallel signing process, the specific value may be a function value of EncPrivC (EncPrivU1 (MD)+EncPrivU2 (MD)), which is acquired by encoding a data group with the private key of the
server 100, wherein the data group is comprised of a first encoded message digest generated by encoding the specific message digest with the private key of the first user and a second encoded message digest generated by encoding the specific message digest with the private key of the second user. - On the other hand, in the serial signing process, the specific hash value may be a function value of EncPrivC (EncPrivU2 (EncPrivU1 (MD))), which is acquired by encoding the specific message digest in sequence with the private key of the first user, the private key of the second user, and the private key of the
server 100. - Next, a process for verifying the authenticated file in response to requests from multiple users is explained. First of all, verification performed without using the distinct data structure managed by the
server 100 is explained by referring toFIG. 8 . However, the repeated explanation is omitted. -
FIG. 8 is a sequence diagram illustrating the process for verifying the file authenticated with signings of the multiple users. - For reference, steps of S825 to S850 represent a serial signing process for verifying the file sequentially, and steps of S860 to S885 represent a parallel signing process for verifying the file in parallel, in response to verification requests from at least part of the multiple users. Both the serial signing process and the parallel process can be applied to a service provided by the present disclosure.
- By referring to
FIG. 8 , as stated above, on condition that theserver 100 has determined the first user and the second user as related to the file in response to the notary service requests for the file, and as a result, that theserver 100 has stored the function value of the third message digest, generated by encoding the MD of the file with the PrivU1, the PrivU2, and the PrivC, in thedatabase 200, and that theserver 100 has been managing its corresponding transaction ID, i.e., TxID, if at least one of the verification requests for the file is acquired at a step of S810, theprocessor 120 may acquire the TxID corresponding to at least one of an original message digest of the file, for example, MD=Hash (File), and the public keys of the users who requests the verification of the file. - Also, the
communication part 110 may acquire an OP message, which includes the function value of the third message digest from thedatabase 200 by referring to the TxID at each step of S835 and S870. - Further, if a function value of a fourth message digest generated by encoding the original message digest with the PrivC, the PrivU1, and the PrivU2 correspond to the function value of the third message digest in the OP message, then the
processor 120 may determine or support another device to determine the file as verified at each step of S840 and S875. - In the parallel signing process, the
processor 120 may determine or support another device to determine the file as verified according to whether the function value, for example, Hash[EncPrivC (EncPrivU1 (MD)+EncPrivU2 (MD))], which is a function value of a first encoded value acquired by encoding a data group with the PrivC, corresponds to the function value of the third message digest in the OP message, wherein the data group is comprised of a fifth message digest generated by encoding the original message digest with the PrivU1 and a sixth message digest generated by encoding the original message digest with the PrivU2. - However, even in case that the function value, for example, hash value Hash[EncPrivC (EncPrivU1 (MD)+EncPrivU2 (MD))] of Y, which is the first encoded value acquired by encoding the data group comprised of the fifth message digest and the sixth message digest with the PrivC, corresponds to the function value of the third message digest, generated by encoding the message digest with the PrivU1, the PrivU2, and the PrivC, in the OP message, if (i) a first decoded value obtained by decoding the fifth message digest, which is obtained by decoding the Y with the PubC, with the PubU1 corresponds to the MD, and if (ii) a second decoded value obtained by decoding the sixth message digest, which is obtained by decoding the Y with the PubC, with the PubU2 corresponds to the MD, the
processor 120 may determine or support another device to determine the file as verified. In other words, the verification of the file may be completed with three more steps. - The four steps of the verification above may be represented as the expressions below.
-
OP_MESSAGE==Hash[Enc privC(Enc PrivU1(MD)+Enc PrivU2(MD))] -
Enc PrivU1(MD)+Enc privu2(MD)==Dec pubC [Enc privC(Enc privC(MD)+Enc PrivU2(MD))] -
MD(=Hash[File])==Dec pubU1 [Enc privU1(MD)] -
MD(=Hash[File])==DeC PubU2 [Enc PrivU2(MD)] <Expression 2> - On the other hand, in the serial signing process, the
processor 120 may determine or support another device to determine the file as verified according to whether Hash[EncPrivC (EncPrivU2 (EncPrivU1 (MD)))], which is the function value of a second encoded value acquired by encoding the original message digest in sequence with the PrivU1, the PrivU2, and the PrivC, corresponds to the hash value of the third message digest in the OP message. - However, even in case that the function value Hash[EncPrivC (EncPrivU2 (EncPrivU1 (MD)))] of Z, which is the second encoded value acquired by encoding the original message digest in sequence with the PrivU1, the PrivU2, and the PrivC, corresponds to the hash value of the third message digest in the OP message, if DecPubU1 (DecPubU2 (DecPubC (EncPrivC (EncPrivU2 (EncPrivU1 (MD)))))) obtained by decoding the Z in sequence with the PubC, the PubU2, and the PubU1 corresponds to the MD, the
processor 120 may determine or support another device to determine the file as verified. In other words, the verification of the file may be completed with three more steps. - The four steps of the verification above may be represented as the expressions below.
-
OP_MESSAGE==Hash[Enc privU(Enc PrivU1(MD)+Enc PrivU2(MD))] -
Enc PrivU2(EncPrivU1(MD))==Dec pubC [Enc PrivC(Enc PrivU1(MD))] -
Enc PrivU1(MD)==Dec PubU2 [Enc PrivU2(Enc PrivU1(MD))] -
MD(=Hash[File])==DeC PubU1 [Enc PrivU1(MD)] <Expression 3> - Next, said another example embodiment of responding to the verification request in the authentication system using the distinct data structure managed by the
server 100 is further explained. - On condition that the
server 100 has acquired the authentication request for the file, and then has registered a first representative value or its processed value in the database, wherein the first representative value is generated by using a first specific value and its corresponding at least one neighboring value under one of the anchoring conditions, and wherein the first specific value is the function value of the result acquired by encoding the specific message digest of the file with the private key of the first user, the private key of the second user, and the private key of the server, if the verification request for the file is acquired, if a second representative value or its processed value, generated by using the input data included in the verification request, corresponds to the first representative value or its processed value registered in the database, theprocessor 120 may determine or support another device to determine that the verification of the file is completed. - Herein, in the parallel signing process, the first specific value may be the function value of EncPrivC (EncPrivU1 (MD)+EncPrivU2 (MD)), which is acquired by encoding a data group with the private key of the server, wherein the data group is comprised of the first encoded message digest generated by encoding the specific message digest with the private key of the first user and the second encoded message digest generated by encoding the specific message digest with the private key of the second user.
- In the serial signing process, the first specific value may be the function value of EncPrivC (EncPrivU2 (EncPrivU1 (MD))), which is acquired by encoding the specific message digest in sequence with the private key of the first user, the private key of the second user, and the private key of the server.
- The present disclosure has an effect of guaranteeing fast service speed and reducing a transaction cost when providing a notary service for a file to perform authentication and verification in real-time by recording authentication information in the blockchain of virtual currency.
- The present disclosure has another effect of improving service speed and reducing the transaction cost by configuring a specific tree by using information on the notary service and registering only a root value or an intermediate value of the specific tree with the blockchain instead of registering all of the information on the notary service with the blockchain.
- The present disclosure has still another effect of providing guaranteed integrity of a database by performing the verification using the specific tree generated in response to a verification request for the file.
- Meanwhile, the
processor 120 may control a data flow among thecommunication part 110 and the other components. That is, theprocessor 120 may control thecommunication part 110 and other components to perform their unique functions, by controlling the data flow among each component within theserver 100. - The
processor 120 may include hardware configuration of MPU (Micro Processing Unit) or CPU (Central Processing Unit), cache memory, data bus, etc. Additionally, OS and software configuration of applications that achieve specific purposes may be further included. - The embodiments of the present disclosure as explained above can be implemented in a form of executable program command through a variety of computer means recordable to computer readable media. The computer readable media may include solely or in combination, program commands, data files, and data structures. The program commands recorded to the media may be components specially designed for the present disclosure or may be usable to a skilled person in a field of computer software. Computer readable record media include magnetic media such as hard disk, floppy disk, and magnetic tape, optical media such as CD-ROM and DVD, magneto-optical media such as floptical disk and hardware devices such as ROM, RAM, and flash memory specially designed to store and carry out programs. Program commands include not only a machine language code made by a compiler but also a high-level code that can be used by an interpreter etc., which is executed by a computer. The aforementioned hardware devices can work as more than a software module to perform the action of the present disclosure and they can do the same in the opposite case. The hardware devices may be combined with memory such as ROM and RAM to store program commands and include a processor such as CPU or GPU composed to execute commands stored in the memory and also include a communication part for sending and receiving signals with external devices.
- As seen above, the present disclosure has been explained by specific matters such as detailed components, limited embodiments, and drawings. While the disclosure has been shown and described with respect to the preferred embodiments, it, however, will be understood by those skilled in the art that various changes and modification may be made without departing from the spirit and scope of the disclosure as defined in the following claims.
- Accordingly, the thought of the present disclosure must not be confined to the explained embodiments, and the following patent claims as well as everything including variants equal or equivalent to the patent claims pertain to the category of the thought of the present disclosure.
Claims (18)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/268,509 US10372942B1 (en) | 2016-02-02 | 2019-02-06 | Method and server for providing notary service for file and verifying file recorded by notary service |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160012760A KR101772554B1 (en) | 2016-02-02 | 2016-02-02 | Method and server for providing notary service with respect to file and verifying the recorded file by using the notary service |
KR10-2016-0012760 | 2016-02-02 | ||
PCT/KR2017/001071 WO2017135669A1 (en) | 2016-02-02 | 2017-02-01 | Method and server for providing notary service for file and verifying file recorded by notary service |
US16/049,328 US10235538B2 (en) | 2016-02-02 | 2018-07-30 | Method and server for providing notary service for file and verifying file recorded by notary service |
US16/268,509 US10372942B1 (en) | 2016-02-02 | 2019-02-06 | Method and server for providing notary service for file and verifying file recorded by notary service |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/049,328 Continuation US10235538B2 (en) | 2016-02-02 | 2018-07-30 | Method and server for providing notary service for file and verifying file recorded by notary service |
Publications (2)
Publication Number | Publication Date |
---|---|
US20190220624A1 true US20190220624A1 (en) | 2019-07-18 |
US10372942B1 US10372942B1 (en) | 2019-08-06 |
Family
ID=59500392
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/049,328 Active US10235538B2 (en) | 2016-02-02 | 2018-07-30 | Method and server for providing notary service for file and verifying file recorded by notary service |
US16/268,509 Active US10372942B1 (en) | 2016-02-02 | 2019-02-06 | Method and server for providing notary service for file and verifying file recorded by notary service |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/049,328 Active US10235538B2 (en) | 2016-02-02 | 2018-07-30 | Method and server for providing notary service for file and verifying file recorded by notary service |
Country Status (6)
Country | Link |
---|---|
US (2) | US10235538B2 (en) |
EP (1) | EP3413251B1 (en) |
KR (1) | KR101772554B1 (en) |
CN (1) | CN108604335B (en) |
CA (1) | CA3012306C (en) |
WO (1) | WO2017135669A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210243201A1 (en) * | 2018-06-14 | 2021-08-05 | Hewlett Packard Enterprise Development Lp | Blockchain-based verification framework |
US11263329B2 (en) * | 2017-05-19 | 2022-03-01 | Bayerische Motoren Werke Aktiengesellschaft | Method, computer-readable medium, system and vehicle comprising the system for providing a data record of a vehicle to a third party |
US20220158841A1 (en) * | 2019-03-29 | 2022-05-19 | Orange | Methods and devices for proving knowledge of a data item by a user of a blockchain |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521775B2 (en) | 2016-04-18 | 2019-12-31 | R3 Ltd. | Secure processing of electronic transactions by a decentralized, distributed ledger system |
WO2018222202A1 (en) * | 2017-06-02 | 2018-12-06 | Hewlett-Packard Development Company, L.P. | Digital composition hashing |
CN109697204B (en) | 2017-10-23 | 2021-03-30 | 创新先进技术有限公司 | Data auditing method and device |
US11646894B2 (en) * | 2017-10-26 | 2023-05-09 | International Business Machines Corporation | Single channel multiple access communications system |
KR101937188B1 (en) * | 2018-02-06 | 2019-04-09 | 주식회사 코인플러그 | Method for managing information using merkle tree based on blockchain, server and terminal using the same |
CN109101572B (en) * | 2018-07-17 | 2021-03-02 | 何晓行 | Block chain based evidence storing method and device, server and storage medium |
CN109598147B (en) * | 2018-09-30 | 2020-01-21 | 阿里巴巴集团控股有限公司 | Data processing method and device based on block chain and electronic equipment |
CN109766084B (en) * | 2018-12-28 | 2021-04-23 | 百富计算机技术(深圳)有限公司 | Customized development method and device for payment application, computer equipment and storage medium |
CN112214797B (en) * | 2020-05-22 | 2021-10-26 | 腾讯科技(深圳)有限公司 | Data processing method, device, equipment, block chain system and storage medium |
CN112383407B (en) * | 2020-09-22 | 2023-05-12 | 法信公证云(厦门)科技有限公司 | Block chain-based online notarization full-flow log processing method and system |
US20230109544A1 (en) * | 2021-10-05 | 2023-04-06 | Capital One Services, Llc | Systems and methods for conducting remote attestation |
JP2023094838A (en) * | 2021-12-24 | 2023-07-06 | キヤノン株式会社 | Program, information processing device, and method of controlling information processing device |
CN115226093A (en) * | 2022-06-28 | 2022-10-21 | 山东新一代信息产业技术研究院有限公司 | Robot OTA upgrade package integrity verification method and system |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4881264A (en) * | 1987-07-30 | 1989-11-14 | Merkle Ralph C | Digital signature system and method based on a conventional encryption function |
US5422953A (en) * | 1993-05-05 | 1995-06-06 | Fischer; Addison M. | Personal date/time notary device |
US6219423B1 (en) * | 1995-12-29 | 2001-04-17 | Intel Corporation | System and method for digitally signing a digital agreement between remotely located nodes |
US20020010858A1 (en) * | 1997-06-18 | 2002-01-24 | Hidemi Moribatake | Method and apparatus for registration of information with plural institutions and recording medium with registration program stored thereon |
US5978475A (en) * | 1997-07-18 | 1999-11-02 | Counterpane Internet Security, Inc. | Event auditing system |
JP2000250408A (en) * | 1999-03-01 | 2000-09-14 | Ntt Data Corp | File authentication system, system and method for signature, system and method for authentication, and recording medium |
WO2001011843A1 (en) * | 1999-08-06 | 2001-02-15 | Sudia Frank W | Blocked tree authorization and status systems |
US6959382B1 (en) * | 1999-08-16 | 2005-10-25 | Accela, Inc. | Digital signature service |
US20030078880A1 (en) * | 1999-10-08 | 2003-04-24 | Nancy Alley | Method and system for electronically signing and processing digital documents |
JP2002093680A (en) | 2000-09-13 | 2002-03-29 | Tdk Corp | Coater and coating method of photoresist |
US6944648B2 (en) * | 2000-09-22 | 2005-09-13 | Docusign, Inc. | System and method for managing transferable records |
US7478243B2 (en) * | 2001-03-21 | 2009-01-13 | Microsoft Corporation | On-disk file format for serverless distributed file system with signed manifest of file modifications |
US7043637B2 (en) * | 2001-03-21 | 2006-05-09 | Microsoft Corporation | On-disk file format for a serverless distributed file system |
US7062490B2 (en) * | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
US7509492B2 (en) * | 2001-03-27 | 2009-03-24 | Microsoft Corporation | Distributed scalable cryptographic access control |
US7136840B2 (en) * | 2001-04-20 | 2006-11-14 | Intertrust Technologies Corp. | Systems and methods for conducting transactions and communications using a trusted third party |
KR100646948B1 (en) * | 2002-10-17 | 2006-11-17 | 주식회사 로마켓아시아 | A Notarizing center server for notarizing and verifying electronic documents and method using the Same |
US7428751B2 (en) * | 2002-12-05 | 2008-09-23 | Microsoft Corporation | Secure recovery in a serverless distributed file system |
CN1717896B (en) * | 2003-03-04 | 2010-06-30 | 国际商业机器公司 | Digital signature method, computer equipment and system for electronic document |
JP2004304304A (en) * | 2003-03-28 | 2004-10-28 | Fujitsu Ltd | Electronic signature generating method, electronic signature authenticating method, electronic signature generating request program and electronic signature authenticate request program |
GB2400463B (en) * | 2003-04-11 | 2005-05-25 | Nextenders | Data processing apparatus and method for distributing and authenticating electronic documents |
JP4460251B2 (en) * | 2003-09-19 | 2010-05-12 | 株式会社エヌ・ティ・ティ・ドコモ | Structured document signature apparatus, structured document adaptation apparatus, and structured document verification apparatus. |
US20050132201A1 (en) * | 2003-09-24 | 2005-06-16 | Pitman Andrew J. | Server-based digital signature |
US20080028224A1 (en) * | 2003-11-21 | 2008-01-31 | Errikos Pitsos | Methods and Systems for Providing Integrity and Trust in Data Management and Data Distribution Processes |
US7698558B2 (en) * | 2003-11-21 | 2010-04-13 | Rpost International Limited | System for, and method of, providing the transmission, receipt and content of an e-mail message |
US8037310B2 (en) * | 2004-11-30 | 2011-10-11 | Ricoh Co., Ltd. | Document authentication combining digital signature verification and visual comparison |
US7549051B2 (en) * | 2005-03-10 | 2009-06-16 | Microsoft Corporation | Long-life digital certification for publishing long-life digital content or the like in content rights management system or the like |
CN1838140A (en) * | 2005-03-25 | 2006-09-27 | 威盛电子股份有限公司 | Apparatus and method for employing cryptographic functions to generate a message digest |
JP4788212B2 (en) * | 2005-07-13 | 2011-10-05 | 富士ゼロックス株式会社 | Digital signature program and digital signature system |
WO2007024970A2 (en) * | 2005-08-22 | 2007-03-01 | The State Of Oregon Acting By And Through The State Board Of Higher | Security protocols for hybrid peer-to-peer file sharing networks |
JP4765482B2 (en) * | 2005-08-25 | 2011-09-07 | 富士ゼロックス株式会社 | Document management system, document management program, and document management method |
US8108317B2 (en) * | 2005-08-31 | 2012-01-31 | Hand Held Products, Inc. | System and method for restricting access to a terminal |
US20100217987A1 (en) * | 2006-02-07 | 2010-08-26 | Ravindra Waman Shevade | Document Security Management System |
US8086859B2 (en) * | 2006-03-02 | 2011-12-27 | Microsoft Corporation | Generation of electronic signatures |
US7895666B1 (en) * | 2006-09-01 | 2011-02-22 | Hewlett-Packard Development Company, L.P. | Data structure representation using hash-based directed acyclic graphs and related method |
JP4197031B2 (en) * | 2006-11-30 | 2008-12-17 | 沖電気工業株式会社 | Message authentication system and message authentication method |
US9497028B1 (en) * | 2007-05-03 | 2016-11-15 | Google Inc. | System and method for remote storage auditing |
WO2009104284A1 (en) * | 2008-02-19 | 2009-08-27 | 富士通株式会社 | Stream data management program, method and system |
JP2009200595A (en) * | 2008-02-19 | 2009-09-03 | Fujitsu Ltd | Signature management program, signature management method and signature management apparatus |
FR2937484B1 (en) * | 2008-10-22 | 2011-06-17 | Paycool Int Ltd | DIGITAL SIGNATURE METHOD IN TWO STEPS |
WO2010081218A1 (en) * | 2009-01-13 | 2010-07-22 | Neville Stephen W | Secure protocol for transactions |
JP5332635B2 (en) * | 2009-01-19 | 2013-11-06 | 富士通株式会社 | Electronic signature method, electronic signature program, and electronic signature device |
WO2010111439A2 (en) * | 2009-03-25 | 2010-09-30 | Pacid Technologies, Llc | Method and system for securing communication |
US8218763B2 (en) * | 2009-04-22 | 2012-07-10 | International Business Machines Corporation | Method for ensuring the validity of recovered electronic documents from remote storage |
US8850211B2 (en) * | 2009-04-27 | 2014-09-30 | Qualcomm Incorporated | Method and apparatus for improving code and data signing |
KR101723001B1 (en) * | 2009-06-26 | 2017-04-04 | 트러스티드 로직 | Data verification method |
WO2011068996A1 (en) * | 2009-12-04 | 2011-06-09 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
US8924302B2 (en) * | 2009-12-11 | 2014-12-30 | Eoriginal, Inc. | System and method for electronic transmission, storage, retrieval and remote signing of authenticated electronic original documents |
CN106100852A (en) * | 2010-09-20 | 2016-11-09 | 安全第公司 | The system and method shared for secure data |
JP5853507B2 (en) * | 2011-09-05 | 2016-02-09 | ソニー株式会社 | Information processing apparatus, information processing system, information processing method, and program |
US9419804B2 (en) * | 2011-10-14 | 2016-08-16 | Hitachi, Ltd. | Data authenticity assurance method, management computer, and storage medium |
US9935951B2 (en) * | 2012-07-18 | 2018-04-03 | TapLink, Inc. | Remote blind hashing |
US8805793B2 (en) * | 2012-08-08 | 2014-08-12 | Amazon Technologies, Inc. | Data storage integrity validation |
JP5958703B2 (en) * | 2012-08-23 | 2016-08-02 | セイコーインスツル株式会社 | Data certification system and data certification server |
TWI483138B (en) * | 2012-10-12 | 2015-05-01 | Acer Inc | Method for processing and verifying remote dynamic data, system using the same, and computer-readable medium |
US9432384B2 (en) * | 2012-11-12 | 2016-08-30 | Telefonaktiebolaget L M Ericsson | Methods and nodes for verification of data |
US20140245020A1 (en) * | 2013-02-22 | 2014-08-28 | Guardtime Ip Holdings Limited | Verification System and Method with Extra Security for Lower-Entropy Input Records |
CN103281193B (en) * | 2013-06-03 | 2016-08-17 | 中国科学院微电子研究所 | Identity authentication method and system and data transmission method and device based on identity authentication system |
US9880983B2 (en) * | 2013-06-04 | 2018-01-30 | X1 Discovery, Inc. | Methods and systems for uniquely identifying digital content for eDiscovery |
WO2014201059A1 (en) * | 2013-06-10 | 2014-12-18 | Certimix, Llc | Secure storing and offline transfering of digitally transferable assets |
CN103268460B (en) * | 2013-06-20 | 2016-02-10 | 北京航空航天大学 | A kind of cloud integrity of data stored verification method |
KR102238681B1 (en) * | 2013-07-01 | 2021-04-12 | 삼성전자주식회사 | Method of generating and verifying signature information and system thereof |
SE537697C2 (en) * | 2013-08-08 | 2015-09-29 | Enigio Time Ab | Procedure for generating signals for time stamping of documents and procedure for time stamping of documents |
US9268969B2 (en) * | 2013-08-14 | 2016-02-23 | Guardtime Ip Holdings Limited | System and method for field-verifiable record authentication |
US9363086B2 (en) * | 2014-03-31 | 2016-06-07 | Palo Alto Research Center Incorporated | Aggregate signing of data in content centric networking |
US9390289B2 (en) * | 2014-04-07 | 2016-07-12 | Palo Alto Research Center Incorporated | Secure collection synchronization using matched network names |
US11270298B2 (en) * | 2014-04-14 | 2022-03-08 | 21, Inc. | Digital currency mining circuitry |
US10340038B2 (en) * | 2014-05-13 | 2019-07-02 | Nant Holdings Ip, Llc | Healthcare transaction validation via blockchain, systems and methods |
US10862690B2 (en) * | 2014-09-30 | 2020-12-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for handling data in a data network |
US20160098723A1 (en) * | 2014-10-01 | 2016-04-07 | The Filing Cabinet, LLC | System and method for block-chain verification of goods |
US10230526B2 (en) * | 2014-12-31 | 2019-03-12 | William Manning | Out-of-band validation of domain name system records |
US9973341B2 (en) * | 2015-01-23 | 2018-05-15 | Daniel Robert Ferrin | Method and apparatus for the limitation of the mining of blocks on a block chain |
DE112015006149B4 (en) * | 2015-02-13 | 2022-09-29 | NEC Laboratories Europe GmbH | Method for storing a terminal data file in a storage unit and system and proxy unit therefor |
JP6704985B2 (en) * | 2015-04-05 | 2020-06-03 | デジタル・アセット・ホールディングス・エルエルシー | Digital asset brokerage electronic payment platform |
WO2016170538A1 (en) * | 2015-04-20 | 2016-10-27 | Ogy Docs, Inc. | A method of distributed management of electronic documents of title (edt) and system thereof |
US10963881B2 (en) * | 2015-05-21 | 2021-03-30 | Mastercard International Incorporated | Method and system for fraud control of blockchain-based transactions |
US10181955B2 (en) * | 2015-05-29 | 2019-01-15 | Eoriginal, Inc. | Method for conversation of an original paper document into an authenticated original electronic information object |
US10509806B2 (en) * | 2015-08-17 | 2019-12-17 | Accenture Global Solutions Limited | Recommendation engine for aggregated platform data |
KR101658501B1 (en) * | 2015-09-03 | 2016-09-22 | 주식회사 마크애니 | Digital signature service system based on hash function and method thereof |
US10303887B2 (en) * | 2015-09-14 | 2019-05-28 | T0.Com, Inc. | Data verification methods and systems using a hash tree, such as a time-centric merkle hash tree |
KR101977109B1 (en) * | 2015-11-17 | 2019-08-28 | (주)마크애니 | Large simultaneous digital signature service system based on hash function and method thereof |
US10108812B2 (en) * | 2016-01-28 | 2018-10-23 | Nasdaq, Inc. | Systems and methods for securing and disseminating time sensitive information using a blockchain |
WO2017134281A1 (en) * | 2016-02-04 | 2017-08-10 | Nasdaq Technology Ab | Systems and methods for storing and sharing transactional data using distributed computer systems |
US20170236120A1 (en) * | 2016-02-11 | 2017-08-17 | Oracle International Corporation | Accountability and Trust in Distributed Ledger Systems |
-
2016
- 2016-02-02 KR KR1020160012760A patent/KR101772554B1/en active IP Right Grant
-
2017
- 2017-02-01 CA CA3012306A patent/CA3012306C/en active Active
- 2017-02-01 WO PCT/KR2017/001071 patent/WO2017135669A1/en active Application Filing
- 2017-02-01 CN CN201780009643.4A patent/CN108604335B/en active Active
- 2017-02-01 EP EP17747714.8A patent/EP3413251B1/en active Active
-
2018
- 2018-07-30 US US16/049,328 patent/US10235538B2/en active Active
-
2019
- 2019-02-06 US US16/268,509 patent/US10372942B1/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263329B2 (en) * | 2017-05-19 | 2022-03-01 | Bayerische Motoren Werke Aktiengesellschaft | Method, computer-readable medium, system and vehicle comprising the system for providing a data record of a vehicle to a third party |
US20210243201A1 (en) * | 2018-06-14 | 2021-08-05 | Hewlett Packard Enterprise Development Lp | Blockchain-based verification framework |
US20220158841A1 (en) * | 2019-03-29 | 2022-05-19 | Orange | Methods and devices for proving knowledge of a data item by a user of a blockchain |
Also Published As
Publication number | Publication date |
---|---|
KR20170091902A (en) | 2017-08-10 |
WO2017135669A1 (en) | 2017-08-10 |
CN108604335A (en) | 2018-09-28 |
CA3012306A1 (en) | 2017-08-10 |
US10235538B2 (en) | 2019-03-19 |
EP3413251B1 (en) | 2021-11-17 |
US20180365448A1 (en) | 2018-12-20 |
KR101772554B1 (en) | 2017-08-30 |
CN108604335B (en) | 2022-01-28 |
CA3012306C (en) | 2021-09-21 |
US10372942B1 (en) | 2019-08-06 |
EP3413251A4 (en) | 2019-01-23 |
EP3413251A1 (en) | 2018-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10924285B2 (en) | Method and server for providing notary service with respect to file and verifying file recorded by the notary service | |
US10372942B1 (en) | Method and server for providing notary service for file and verifying file recorded by notary service | |
US11205014B2 (en) | Method and server for authenticating and verifying file | |
CN110268678B (en) | PKI-based login method for authentication agent user and server using same | |
US11050690B2 (en) | Method for providing recording and verification service for data received and transmitted by messenger service, and server using method | |
US11238543B2 (en) | Payroll based blockchain identity | |
CN107239953B (en) | Block chain-based rapid data storage method and system | |
CN108985100B (en) | Block chain-based element security certification method, device, equipment and medium | |
US10469264B2 (en) | Method and server for authenticating and verifying file | |
US11917088B2 (en) | Integrating device identity into a permissioning framework of a blockchain | |
JP2023530594A (en) | Permitted Event Processing in Distributed Databases | |
CN110910110B (en) | Data processing method and device and computer storage medium | |
WO2024011863A9 (en) | Communication method and apparatus, sim card, electronic device, and terminal device | |
KR20170099152A (en) | Method and server for registering stockholder's list and recording transfer of stock ownership | |
Majd et al. | Secure and Cost Effective IoT Authentication and Data Storage Framework using Blockchain NFT | |
CN117411610A (en) | Method, system and equipment for verifying existence of blockchain signature | |
CN118278537A (en) | Artificial intelligence content generation control using non-homogeneous pass |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: COINPLUG, INC., KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:UHR, JOON SUN;HONG, JAY WU;SONG, JOO HAN;REEL/FRAME:048250/0677 Effective date: 20190201 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: CPLABS, INC., KOREA, REPUBLIC OF Free format text: CHANGE OF NAME;ASSIGNOR:COINPLUG, INC.;REEL/FRAME:065825/0960 Effective date: 20230927 |