US20180316503A1 - Systems and methods for certification of data units and/or certification verification - Google Patents
Systems and methods for certification of data units and/or certification verification Download PDFInfo
- Publication number
- US20180316503A1 US20180316503A1 US15/967,780 US201815967780A US2018316503A1 US 20180316503 A1 US20180316503 A1 US 20180316503A1 US 201815967780 A US201815967780 A US 201815967780A US 2018316503 A1 US2018316503 A1 US 2018316503A1
- Authority
- US
- United States
- Prior art keywords
- hash
- hashes
- data unit
- block chain
- proof
- 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.)
- Abandoned
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G06F17/30949—
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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/30—Compression, e.g. Merkle-Damgard construction
-
- 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
- This disclosure relates to systems and methods for facilitating certification of data units and/or verification of such certifications of the data units.
- Electronic notarization systems are known. Existing systems use a digital signature and digital notary seal to notarize digital documents. The documents are validated with a digital certificate. The digital signature and/or notary seal are coupled with an electronic document using a secure public key. Cryptography and public key infrastructure are used to create, manage, distribute, use, store, and revoke digital certificates. Electronic notary transactions must be manually kept in a register describing each notarization.
- One aspect of the disclosure may relate to a system for facilitating certification of data units and/or verification of such certifications of the data units.
- the system may enable users to certify the existence, integrity, and/or ownership of any file or communication using a block chain or distributed ledger (e.g., Bitcoin block chain, Ethereum block chain, or other block chain or distributed ledger).
- the block chain or distributed ledger may be a ledger distributed among tens of thousands of computers around the world that may be accessed at any time by any user at no cost, but limits the amount of data that may be embedded into the ledger.
- the present system may utilize its distributed nature to enhance security of existence, integrity, and/or ownership certifications, and may facilitate certification for a virtually unlimited number of files or communications within the data limits of the Bitcoin block chain.
- the present system may be used to notarize digital transactions to generate audit trails, establish ownership of digital assets, and/or for other uses.
- FIG. 1 illustrates a system configured for using a block chain to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations.
- FIG. 2 illustrates a cryptographic structure, in accordance with one or more implementations.
- FIG. 3 illustrates a reconstructed cryptographic structure, in accordance with one or more implementations.
- FIG. 4 illustrates a method for using a block chain to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations.
- FIG. 5 illustrates a method for using a block chain to verify certification of data units such as files or communications, in accordance with one or more implementations.
- FIG. 1 illustrates a system 100 for using a block chain to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations.
- system 100 may include one or more servers 102 .
- the server(s) 102 may be configured to communicate with one or more computing platforms 104 according to client/server architecture, a peer-to-peer architecture, and/or other architectures.
- the users may access system 100 via computing platform(s) 104 .
- the server(s) 102 may be configured to execute machine-readable instructions 106 .
- the machine-readable instructions may facilitate stamping data units such as files, communications, and/or other data units to provide certification; verification of the certification of the data units; and/or other operations.
- the machine-readable instructions 106 may include one or more of a stamping data unit component 108 , a stamping hash component 110 , a stamping storage component 112 , a stamping cryptographic structure component 114 , a stamping publication component 116 , a stamping proof component 118 , a verification data unit component 120 , a verification hash component 122 , a verification proof component 124 , a verification cryptographic structure component 126 , a root verification component 128 , and/or other machine-readable instruction components.
- the machine-readable instructions 106 may be executable to use a block chain or distributed ledger to certify the existence, integrity, and/or ownership of a file or communication.
- a block chain or distributed ledger may include a transaction database shared by some or all nodes participating in system 100 . Such participation may be based on the Bitcoin protocol, the Ethereum protocol, and/or other protocols related to digital currencies and/or block chain or distributed ledgers.
- a full copy of the block chain or distributed ledger may contain every transaction ever executed in an associated digital currency.
- other information may be contained by the block chain or distributed ledger, such as described further herein.
- the block chain or distributed ledger may be a private block chain, a private distribute ledger, a public block chain, a public distributed ledger, or other block chain or distributed ledger.
- the block chain or distributed ledger may be based on a digital token or digital token technology.
- the block chain or distributed ledger may be based on several blocks.
- a block may include a record that contains and confirms one or more waiting transactions. Periodically (e.g., roughly every ten minutes), a new block including transactions and/or other information may be appended to the block chain or distributed ledger.
- a given block in the block chain or distributed ledger may contain a hash of the previous block. This may have the effect of creating a chain of blocks from a genesis block (i.e., the first block in the block chain or distributed ledger) to a current block.
- the given block may be guaranteed to come chronologically after a previous block because the previous block's hash would otherwise not be known.
- the given block may be computationally impractical to modify once it is included in the block chain or distributed ledger because every block after it would also have to be regenerated.
- stamping data unit component 108 may facilitate stamping data units such as files and/or communications to provide certification.
- stamping data units may include receiving data units, hashing the data units, generating a cryptographic structure based on the hashed data units, publishing the cryptographic structure on the block chain or distributed ledger, and/or other operations as described below.
- Stamping data unit component 108 may be configured to receive a plurality of data units.
- the data units may include electronic files, electronic communications, electronic documents, electronic pictures, electronic contracts, and/or other data units.
- stamping data unit component 108 may be configured to receive the plurality of data units via an application program interface (API) and/or other interfaces associated with system 100 that facilitates entry and/or selection of the data units and/or other information by a user.
- API application program interface
- the API may be run on computing platform(s) 104 and/or other computing platforms.
- the API may facilitate entry and/or selection of the data units via one or more views and/or fields of a graphical user interface (GUI) displayed on computing platform(s) 104 and/or other computing devices.
- GUI graphical user interface
- Entry and/or selection of the data units by a user may include dragging and dropping files from field to field of the GUI (e.g., by clicking and dragging files with a mouse, touching and moving files with a touch sensitive interface, etc.), sending emails, uploading information from a storage device, using Dropbox and/or other enterprise software integrated with system 100 to enter and/or select data units, communicating a data payload to the API using a chat application and/or instant messaging application, and/or otherwise communicating other data payloads to the API.
- a user may drag and drop files (e.g., a plurality of data units) into a data unit receipt field of a GUI running on computing platform(s) 104 .
- the plurality of data units may include a first data unit (e.g., an email) among the plurality of units.
- stamping data unit component 108 may receive the first data unit and the rest of the plurality of data units from the API via the data unit receipt field.
- the plurality of data units may be received during one or more individual timeframes.
- the individual timeframes may correspond to periods of time between trigger events and/or other periods of time.
- a trigger event may include expiration of predetermined period of time (e.g., 10 minutes), creation of a new block in connection with the block chain or distributed ledger (e.g., an individual timeframe may correspond to a period of time between when a previous block has been added to the block chain or distributed ledger and when the next subsequent block has not yet been added), receipt of a predetermined number of data units, and/or other events.
- the one or more individual timeframes may be and/or include a predetermined period of 10 minutes.
- the one or more individual timeframes may include a first timeframe that corresponds to a period of time after an n th block has been added to the block chain or distributed ledger but before an n th +1 block is added to the block chain or distributed ledger.
- the one or more individual time frames may include an amount of time required to receive 1 billion data units.
- any number of data units may be received during the one or more individual timeframes. Using the example trigger events described above, any number of data units may be received in the 10 minute period, any number of data units may be received during the period of time before a new block is added to the block chain or distributed ledger, and/or the predetermined trigger number of received data units may be set to any value.
- the number of data units received may be limited only by the speed with which data units are provided to system 100 by users and/or the capabilities of current processing and storage components included in server(s) 102 , computing platform(s) 104 , and/or other components of system 100 .
- stamping data unit component 108 is configured to receive any number of data units (e.g., one data unit, two data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) during a single individual time frame.
- Stamping hash component 110 may be configured to hash individual ones of the plurality of data units.
- the individual ones of the plurality of data units may be hashed with one or more hash algorithms to provide a plurality of hashes.
- the plurality of hashes may be unique cryptographic identifiers of the corresponding data units.
- the individual hashes may verifiably relate to their corresponding data units. However, the individual hashes may not be used by themselves to obtain their corresponding data units.
- the first data unit may be hashed using a first hash algorithm to provide a first hash.
- the first hash may be a unique cryptographic identifier of the first data unit such that the first hash verifiably relates to the first data unit and the first hash cannot be used by itself to obtain the first data unit.
- Stamping storage component 112 may be configured to temporarily store the plurality of hashes.
- the plurality of hashes may be stored until occurrence of a trigger event and/or for other periods of time.
- a trigger event may include expiration of a predetermined period of time (e.g., 10 minutes), creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events.
- stamping storage component 112 may be configured to temporarily store the plurality of hashes for the individual timeframes described above related to stamping data unit component 108 .
- the plurality of hashes may be stored on server(s) 102 and/or in other locations.
- stamping storage component 112 may be configured to store the first hash for 10 minutes. As another example, stamping storage component 112 may be configured to store the first hash during a period of time after the n th block has been added to the block chain or distributed ledger until the n th +1 block is added to the block chain or distributed ledger. As a further example, stamping storage component 112 may be configured to store the first hash with other hashes until 1 billion data units (e.g., a predetermined trigger number of data units) are received.
- 1 billion data units e.g., a predetermined trigger number of data units
- Stamping cryptographic structure component 114 may be configured to, responsive to occurrence of a trigger event, generate a cryptographic structure.
- the cryptographic structure may be generated based on the plurality of hashes and/or other information.
- the cryptographic structure may include a Merkle tree, a Patricia tree, a Tiger hash tree, and/or other cryptographic structures.
- the cryptographic structure may be associated with any number of data units (e.g., one data unit, two data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) and a corresponding number of hashes.
- the cryptographic structure may be associated with billions of data units received, hashed, and stored during a single individual timeframe.
- generating the cryptographic structure based on the plurality of hashes may comprise hashing the plurality of hashes until a single hash that is a hash of the plurality of hashes is generated.
- any number of data units e.g., one data unit, two data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.
- Hashing a data structure may be a process that takes in a given data set and returns a unique output that may be unidirectionally and/or uniquely related to the given data set. The hash, which is the output, may not allow a user to obtain the inputted data, but the inputted data may allow the user to obtain its hash.
- System 100 overcomes this Bitcoin limitation because any number of data units may be recorded by stamping cryptographic structure component 114 via a single hash.
- the single hash may comprise 80 or less bytes of data such that the single hash may be stored in the Bitcoin block chain.
- FIG. 2 illustrates a cryptographic structure 200 , in accordance with one or more implementations.
- Cryptographic structure 200 may be generated by stamping cryptographic structure component 114 ( FIG. 1 ).
- Cryptographic structure 200 may include a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure.
- data units 202 , 204 , 206 , and 208 may be hashed 210 , 212 , 214 , and 216 to produce hashes 218 , 220 , 222 , and 224 .
- Hash 218 may correspond to data unit 202 .
- Hash 220 may correspond to data unit 204 .
- Hash 222 may correspond to data unit 206 .
- Hash 224 may correspond to data unit 208 .
- hashes 218 , 220 , 222 , and 224 may be hashed 226 , 228 , 230 , 232 to form hashes 234 and 236 .
- Hash 234 may correspond to hashes 218 and 220 .
- Hash 236 may correspond to hash 222 and 224 .
- hashes 234 and 236 may be hashed 238 , 240 to form a top hash 242 .
- Top hash 242 may be a single hash that represents data blocks 202 , 204 , 206 , and 208 , and the intermediary hashes 218 , 220 , 222 , 224 , 234 , and 236 . It should be noted that the number of data blocks and hashes shown in FIG. 2 is not intended to be limiting. As described above, the process of hashing hashes may be used to generate a tree (or other structure) large enough to represent any number (e.g., one data unit, two data units, tens of data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) of data units with a single top hash as described herein.
- stamping publication component 116 may be configured to publish the cryptographic structure on the block chain or distributed ledger.
- publishing the cryptographic structure on the block chain or distributed ledger may comprise publishing the single hash that is a hash of the plurality of hashes (e.g., top hash 242 shown in FIG. 2 ) on the block chain or distributed ledger.
- the single hash that is a hash of the plurality of hashes may comprise up to about 80 bytes of data. (It should be noted that the description of up to about 80 bytes of data is not intended to be limiting.
- the single hash may comprise any amount of data that allows it to be published to a block chain or distributed ledger using a given block chain or distributed ledger protocol.) Publishing the single hash on the block chain or distributed ledger may comprise embedding the up to about 80 bytes of data into a new block of the block chain or distributed ledger.
- the single hash is published on the block chain or distributed ledger using an OP_RETURN feature and/or other features of Bitcoin.
- the OP_RETURN feature of Bitcoin may be a Bitcoin opcode that facilitates storage of up to about 80 bytes of data in the Bitcoin block chain.
- the OP_RETURN feature may facilitate association of extra data with a transaction that is secured by the block chain.
- the OP_RETURN feature may limit the association of extra data to 80 bytes to prevent an unlimited amount of information from being stored in the block chain and maintain Bitcoin system performance.
- the single hash is published on a Ethereum block chain via the data field feature of Ethereum, the contract creation feature of Ethereum, or other feature of Ethereum.
- stamping data unit component 108 may facilitate stamping data units to provide certification in an amount of time that may be and/or correspond to the periods of time between trigger events (e.g., expiration of predetermined period of time, creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events) and/or other periods of time.
- trigger events e.g., expiration of predetermined period of time, creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events
- stamping data units to provide certification may occur every 10 minutes, during the period of time between the n th block and the n th +1 block being added to the block chain or distributed ledger (e.g., the next “mined” block) which may be about ten minutes based on the current performance of Bitcoin, in an amount of time that corresponds to the receipt of a predetermined number of data units, and/or in other amounts of time. It should be noted that the present disclosure contemplates other periods of time more and/or less than ten minutes. For example, the predetermined period of time may be set to something other than 10 minutes.
- the period of time between the n th block and the n th +1 block being added to the block chain or distributed ledger may increase and/or decrease relative to the ten minute example given above because of changes in the performance of Bitcoin, use of a different block chain (e.g., an Ethereum block chain), and/or other factors.
- the period of time for stamping data units to provide certification may be up to about one minute. In some implementations, the period of time for stamping data units to provide certification may be up to about fifteen minutes. In some implementations, the period of time for stamping data units to provide certification may be between about one minute and about fifteen minutes.
- Stamping proof component 118 may be configured to provide proofs associated with individual ones of the plurality of data units. Proofs associated with individual ones of the plurality of data units may include proofs associated with cryptographic structures representative of a plurality of hashes, a plurality of data units, and/or other information. An individual proof may include information needed for a user to verify that an individual data unit has been certified.
- an individual proof may include the name of the data unit certified, a date and/or time of certification, a notary signee name and/or email address from a person and/or entity associated with certifying the data unit, hashing method information (e.g., hashing algorithm), information related to a position of the data unit in a Merkle tree (e.g., Merkle index, Merkle root information, etc.), a transaction identification, a version number, a web certification certificate, a PDF certification certificate, a JSON proof, a URL certified data unit sharing address, signatures related to cryptographic identities, and/or other information.
- a proof may include a Bitcoin transaction identification in which a root of a cryptographic structure is published.
- the Merkle index and/or root information may describe a position of a hash among other hashes in a cryptographic structure published on the block chain or distributed ledger, and/or other information.
- the proofs may include a first proof associated with the first data unit.
- the first proof may allow independent verification that the first data unit is certified.
- verification data unit 120 may facilitate verification of the certification of the data units.
- Verification data unit 120 , verification hash component 122 , verification proof component 124 , verification cryptographic structure component 126 , root verification component 128 , and/or other components may be configured (as described below) such that certifications of data units may be verified independently from the certification process (described above).
- Verification data unit component 120 may be configured to obtain one or more data units to be verified. Verification data unit component 120 may be configured to obtain the one or more data units to be verified via, for example, the GUI running on computing platform(s) 104 , and/or via other computing platforms associated with other users. In some implementations, verification data unit component 120 may be configured to obtain one or more data units to be verified responsive to a user dragging and dropping files from field to field of the GUI, sending emails, uploading information from a storage device, using Dropbox and/or other enterprise software integrated with system 100 to enter and/or select data units, communicating data units via a chat application and/or instant messaging application, and/or otherwise communicating other data payloads to verification data unit component 120 . For example, the one or more data units to be verified may include the first data unit and/or other data units uploaded to system 100 from a storage device by a user via computing platform(s) 104 .
- Verification hash component 122 may be configured to hash the one or more obtained data units. Verification hash component 122 may be configured to hash the one or more obtained data units using the same hash algorithm used to create the one or more proofs. As described above, the one or more proofs may include hashing method information such as the hashing algorithms used to hash individual data components. Verification hash component 122 may be configured to obtain the same hash algorithm used to create the one or more proofs from the one or more proofs themselves. For example, the first data unit may be hashed for verification using the first hash algorithm used during stamping. The first hash algorithm may be obtained from the first proof.
- Verification proof component 124 may be configured to obtain one or more proofs corresponding to the one or more data units.
- an individual proof may include the name of the data unit certified, a date and/or time of certification, a notary signee name and/or email address from a person and/or entity associated with certifying the data unit, hashing method information (e.g., hashing algorithm), information related to a position of the data unit in a Merkle tree (e.g., Merkle index, Merkle root information, etc.), a transaction identification, a version number, a web certification certificate, a PDF certification certificate, a JSON proof, a URL certified data unit sharing address, and/or other information.
- hashing method information e.g., hashing algorithm
- information related to a position of the data unit in a Merkle tree e.g., Merkle index, Merkle root information, etc.
- transaction identification e.g., a version number
- a web certification certificate e.g., Mer
- the Merkle index and/or root information in the proof may describe positions of hashes among other hashes in a Merkle tree, and/or other information.
- the one or more proofs may include the first proof corresponding to the first data unit.
- the first proof may include an index describing a position of the first hash among other hashes in the first cryptographic structure (e.g., Merkle tree, Patricia tree, Tiger hash tree, etc.) published on the block chain or distributed ledger and/or other information.
- Verification cryptographic structure component 126 may be configured to reconstruct cryptographic structures. The cryptographic structures may be reconstructed based on the information in the one or more proofs and/or other information. In some implementations, verification cryptographic structure component 126 may be configured to reconstruct a cryptographic structure based on an index for the cryptographic structure included in a proof associated with the data unit whose certification is being verified and/or based on other information. As described above, the index may describe positions of individual hashes relative to each other in the cryptographic structure and/or other components of the cryptographic structure. In some implementations, reconstructing cryptographic structures based on the one or more proofs may comprise reconstructing Merkle trees, Patricia trees, Tiger hash trees, or other cryptographic structures.
- the reconstructed trees/structures may describe the positions of individual hashes among other hashes in a given tree/structure.
- the first cryptographic structure may be a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure.
- the tree/structure may be reconstructed based on the index of the first proof.
- the first proof may list the relative positions of the other hashes and the first hash in the tree/structure. The relative positions of the other hashes and the first hash may be used to reconstruct the tree/structure.
- Root verification component 128 may be configured to verify certification by proving that hashes belong to roots of the reconstructed cryptographic structures. Proving that hashes belong to roots of the reconstructed cryptographic structures may include proving that verification hashes (e.g., hashes performed by verification hash component 122 ) belong to roots of the reconstructed cryptographic structures. Root verification component 128 may verify certification of data units by identifying an expected location of one or more hashes for one or more data units in one or more roots of a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure. The expected locations for the one or more hashes may be the locations of the hashes described by the index of a proof corresponding to the data units being verified.
- Root verification component 128 may be configured to verify certification of a data unit by comparing a position of a verification hash of a data unit relative to positions of other hashes in the reconstructed tree. Root verification component 128 may be configured to verify certification of a data unit responsive to a hash of hashes using a verification hash of the data unit in its expected position in a reconstructed tree matching a root of the reconstructed tree described in the proof.
- certification of the first data unit may be verified by proving that a verification hash of the first data unit belongs to a root of the first cryptographic structure by comparing the verification hash of the first data unit (e.g., performed by verification hash component 122 described above) to the position of the first hash (e.g., hashed during stamping by stamping hash component 110 described above) in the first cryptographic structure (e.g., Merkle tree, Patricia tree, Tiger hash tree, etc.). If a hash of hashes using the verification hash produces a root of the tree described in the proof (e.g., via the index), root verification component 128 may verify the certification of the corresponding data unit. If a hash of hashes using the verification hash does not produce a root of the tree described in the proof, root verification component 128 may not verify the certification of the corresponding data unit.
- the verification hash of the first data unit e.g., performed by verification hash component 122 described above
- the position of the first hash e
- FIG. 3 illustrates a reconstructed cryptographic structure 300 , in accordance with one or more implementations.
- Reconstructed cryptographic structure 300 may include a reconstructed Merkle tree, Patricia tree, Tiger hash tree, or other cryptographic structure.
- H k 302 may be a hash that corresponds to a data unit whose certification is being verified.
- Cryptographic structure 300 may be reconstructed based on an index included in a proof that corresponds to the data unit being verified. The index may describe positions of hashes including H k 302 , H L 304 , H IJ 306 , H MNOP 308 , and H ABCDEFGH 310 among other hashes 312 in the tree/structure. As shown in FIG.
- hashing (the various arrows in FIG. 3 representing hashing) a hash 314 of hashes 316 , 308 , 306 , 318 , 320 , and 322 when H k 302 is in its expected position 324 relative to hashes 312 in the tree/structure may result in Root 318 (H ABCDEFGHIJKLMNOP ). If a verification hash of the data unit whose certification is being verified does not place H k 302 in expected position 324 , H k may not be part of Root 318 and the data unit's certification may not be verified.
- server(s) 102 , computing platform(s) 104 , and/or external resources 130 may be operatively linked via one or more electronic communication links.
- electronic communication links may be established, at least in part, via a network such as the Internet and/or other networks. It will be appreciated that this is not intended to be limiting, and that the scope of this disclosure includes implementations in which server(s) 102 , computing platform(s) 104 , and/or external resources 130 may be operatively linked via some other communication media.
- a given computing platform 104 may include one or more processors configured to execute machine-readable instructions.
- the machine-readable instructions may be configured to enable an expert or user associated with the given computing platform 104 to interface with system 100 and/or external resources 130 , and/or provide other functionality attributed herein to computing platform(s) 104 .
- the given computing platform 104 may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a NetBook, a Smartphone, a gaming console, and/or other computing platforms.
- External resources 130 may include sources of information, hosts and/or providers of block chain or distributed ledger environments outside of system 100 , external entities participating with system 100 , and/or other resources. In some implementations, some or all of the functionality attributed herein to external resources 130 may be provided by resources included in system 100 .
- Server(s) 102 may include electronic storage 132 , one or more processors 134 , and/or other components. Server(s) 102 may include communication lines, or ports to enable the exchange of information with a network and/or other computing platforms. Illustration of server(s) 102 in FIG. 1 is not intended to be limiting. Server(s) 102 may include a plurality of hardware, software, and/or firmware components operating together to provide the functionality attributed herein to server(s) 102 . For example, server(s) 102 may be implemented by a cloud of computing platforms operating together as server(s) 102 .
- Electronic storage 132 may comprise non-transitory storage media that electronically stores information.
- the electronic storage media of electronic storage 132 may include one or both of system storage that is provided integrally (i.e., substantially non-removable) with server(s) 102 and/or removable storage that is removably connectable to server(s) 102 via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.).
- a port e.g., a USB port, a firewire port, etc.
- a drive e.g., a disk drive, etc.
- Electronic storage 132 may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media.
- Electronic storage 132 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and/or other virtual storage resources).
- Electronic storage 132 may store software algorithms, information determined by processor(s) 134 (e.g., the hashes described above), information received from server(s) 102 , information received from computing platform(s) 104 , and/or other information that enables server(s) 102 to function as described herein.
- Processor(s) 134 may be configured to provide information processing capabilities in server(s) 102 .
- processor(s) 134 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information.
- processor(s) 134 is shown in FIG. 1 as a single entity, this is for illustrative purposes only.
- processor(s) 134 may include a plurality of processing units. These processing units may be physically located within the same device, or processor(s) 134 may represent processing functionality of a plurality of devices operating in coordination.
- the processor(s) 134 may be configured to execute machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , 128 , and/or other machine-readable instruction components.
- Processor(s) 134 may be configured to execute machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , 128 , and/or other machine-readable instruction components by software; hardware; firmware; some combination of software, hardware, and/or firmware; and/or other mechanisms for configuring processing capabilities on processor(s) 134 .
- machine-readable instruction component may refer to any component or set of components that perform the functionality attributed to the machine-readable instruction component. This may include one or more physical processors during execution of processor readable instructions, the processor readable instructions, circuitry, hardware, storage media, or any other components.
- machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and 128 are illustrated in FIG. 1 as being implemented within a single processing unit, in implementations in which processor(s) 134 includes multiple processing units, one or more of machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and/or 128 may be implemented remotely from the other machine-readable instruction components.
- machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and/or 128 described herein is for illustrative purposes, and is not intended to be limiting, as any of machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and/or 128 may provide more or less functionality than is described.
- machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and/or 128 may be eliminated, and some or all of its functionality may be provided by other ones of machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and/or 128 .
- processor(s) 134 may be configured to execute one or more additional machine-readable instruction components that may perform some or all of the functionality attributed below to one of machine-readable instruction components 108 , 110 , 112 , 114 , 116 , 118 , 120 , 122 , 124 , 126 , and/or 128 .
- FIG. 4 illustrates a method 400 for using a block chain or distributed ledger to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations.
- the operations of method 400 presented below are intended to be illustrative. In some implementations, method 400 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations of method 400 are illustrated in FIG. 4 and described below is not intended to be limiting.
- one or more operations of method 400 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information).
- the one or more processing devices may include one or more devices executing some or all of the operations of method 400 in response to instructions stored electronically on an electronic storage medium.
- the one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 400 .
- a plurality of data units may be received.
- the plurality of data units may be received during a first timeframe and/or at other times.
- the plurality of data units may include a first data unit and/or other data units.
- Operation 402 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping data unit component 108 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- individual ones of the plurality of data units may be hashed. Hashing individual ones of the plurality of data units may provide a plurality of hashes.
- the first data unit may be hashed using a first hash algorithm and/or other algorithms to provide a first hash.
- the first hash may be a unique cryptographic identifier of the first data such that the first hash verifiably relates to the first data and the first hash cannot be used by itself to obtain the first data.
- Operation 404 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping hash component 110 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- the plurality of hashes may be temporarily stored.
- the plurality of hashes may be stored until occurrence of a trigger event and/or for other periods of time.
- a trigger event may include expiration of a predetermined period of time (e.g., 10 minutes), creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events.
- Operation 406 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping storage component 112 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- a first cryptographic structure may be generated based on the plurality of hashes and/or other information.
- the first cryptographic structure may be generated based on the plurality of hashes responsive to occurrence of a trigger event (e.g., expiration of a predetermined period of time, creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units) and/or at other times.
- a trigger event e.g., expiration of a predetermined period of time, creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units
- the first cryptographic structure may be associated with any number (e.g., one data unit, two data units, tens of data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) of data units.
- generating the first cryptographic structure based on the plurality of hashes may comprise hashing the plurality of hashes until a single hash that is a hash of the plurality of hashes is generated.
- the first cryptographic structure may include a Merkle tree, a Patricia tree, a Tiger hash tree, and/or other cryptographic structures.
- Operation 408 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping cryptographic structure component 114 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- the first cryptographic structure may be published on the block chain or distributed ledger.
- the first cryptographic structure may comprise up to 80 bytes of data
- publishing the first cryptographic structure on the block chain or distributed ledger may comprise embedding the up to 80 bytes of data into the block chain or distributed ledger.
- the block chain may be a Bitcoin block chain
- the first cryptographic structure may be published on the block chain using an OP_RETURN feature of Bitcoin.
- Operation 410 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping publication component 116 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- proofs associated with individual ones of the plurality of data units may be provided.
- the proofs may include a first proof associated with the first data unit.
- the first proof may allow independent verification that the first data unit is certified.
- Operation 412 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping proof component 118 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- FIG. 5 illustrates a method 500 for using a block chain or distributed ledger to verify certification of data units such as files or communications, in accordance with one or more implementations.
- the operations of method 500 presented below are intended to be illustrative. In some implementations, method 500 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations of method 500 are illustrated in FIG. 5 and described below is not intended to be limiting.
- one or more operations of method 500 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information).
- the one or more processing devices may include one or more devices executing some or all of the operations of method 500 in response to instructions stored electronically on an electronic storage medium.
- the one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 500 .
- one or more data units to be verified may be obtained.
- the data units may include a first data unit to be verified and/or other data units.
- Operation 502 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification data unit component 120 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- one or more proofs corresponding to the one or more data units may be obtained.
- the proofs may include a first proof corresponding to the first data unit and/or other proofs.
- Operation 504 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification proof component 124 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- the one or more data units may be hashed using a hashing algorithm used to create the one or more proofs.
- the first data unit may be hashed using a first hash algorithm to create a first hash.
- the first proof may include an index describing a position of the first hash among other hashes in a first cryptographic structure published on the block chain or distributed ledger.
- Operation 506 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification hash component 122 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- cryptographic structures may be reconstructed based on the one or more proofs.
- the first cryptographic structure may be reconstructed based on the index of the first proof and/or other information.
- reconstructing cryptographic structures based on the one or more proofs may comprise reconstructing a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure.
- the reconstructed tree/structure may describe the position of the first hash among other hashes in the first cryptographic structure published on the block chain or distributed ledger.
- the first proof may list the other hashes and the first hash, and the other hashes and the first hash may be used to reconstruct the tree/structure.
- Operation 508 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification cryptographic structure component 126 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
- certification may be verified by proving that hashes belong to roots of the cryptographic structures.
- Certification of the first data unit may be verified by proving that the first hash belongs to a root of the first cryptographic structure.
- the first proof may include a Bitcoin transaction identification in which the root of the first cryptographic structure was published.
- Operation 510 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to root verification component 128 (as described in connection with FIG. 1 ), in accordance with one or more implementations.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Storage Device Security (AREA)
Abstract
Description
- This application is a Continuation Application of U.S. patent application Ser. No. 15/594,364, filed May 12, 2017, which is a Continuation-in-Part of U.S. patent application Ser. No. 15/007,120, filed Jan. 26, 2016, now U.S. Pat. No. 9,679,276, the entire contents of each are incorporated by reference.
- This disclosure relates to systems and methods for facilitating certification of data units and/or verification of such certifications of the data units.
- Electronic notarization systems are known. Existing systems use a digital signature and digital notary seal to notarize digital documents. The documents are validated with a digital certificate. The digital signature and/or notary seal are coupled with an electronic document using a secure public key. Cryptography and public key infrastructure are used to create, manage, distribute, use, store, and revoke digital certificates. Electronic notary transactions must be manually kept in a register describing each notarization.
- One aspect of the disclosure may relate to a system for facilitating certification of data units and/or verification of such certifications of the data units. In some implementations, the system may enable users to certify the existence, integrity, and/or ownership of any file or communication using a block chain or distributed ledger (e.g., Bitcoin block chain, Ethereum block chain, or other block chain or distributed ledger). The block chain or distributed ledger may be a ledger distributed among tens of thousands of computers around the world that may be accessed at any time by any user at no cost, but limits the amount of data that may be embedded into the ledger. With respect to the Bitcoin block chain, for example, the present system may utilize its distributed nature to enhance security of existence, integrity, and/or ownership certifications, and may facilitate certification for a virtually unlimited number of files or communications within the data limits of the Bitcoin block chain. In some implementations, the present system may be used to notarize digital transactions to generate audit trails, establish ownership of digital assets, and/or for other uses.
- These and other features, and characteristics of the present technology, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the invention. As used in the specification and in the claims, the singular form of “a”, “an”, and “the” include plural referents unless the context clearly dictates otherwise. In addition, as used in the specification and the claims, the term “or” means “and/or” unless the context clearly dictates otherwise.
-
FIG. 1 illustrates a system configured for using a block chain to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations. -
FIG. 2 illustrates a cryptographic structure, in accordance with one or more implementations. -
FIG. 3 illustrates a reconstructed cryptographic structure, in accordance with one or more implementations. -
FIG. 4 illustrates a method for using a block chain to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations. -
FIG. 5 illustrates a method for using a block chain to verify certification of data units such as files or communications, in accordance with one or more implementations. -
FIG. 1 illustrates asystem 100 for using a block chain to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations. In some implementations,system 100 may include one ormore servers 102. The server(s) 102 may be configured to communicate with one ormore computing platforms 104 according to client/server architecture, a peer-to-peer architecture, and/or other architectures. The users may accesssystem 100 via computing platform(s) 104. - The server(s) 102 may be configured to execute machine-
readable instructions 106. The machine-readable instructions may facilitate stamping data units such as files, communications, and/or other data units to provide certification; verification of the certification of the data units; and/or other operations. The machine-readable instructions 106 may include one or more of a stampingdata unit component 108, astamping hash component 110, astamping storage component 112, a stampingcryptographic structure component 114, astamping publication component 116, astamping proof component 118, a verificationdata unit component 120, averification hash component 122, averification proof component 124, a verificationcryptographic structure component 126, aroot verification component 128, and/or other machine-readable instruction components. - The machine-
readable instructions 106 may be executable to use a block chain or distributed ledger to certify the existence, integrity, and/or ownership of a file or communication. Generally speaking, a block chain or distributed ledger may include a transaction database shared by some or all nodes participating insystem 100. Such participation may be based on the Bitcoin protocol, the Ethereum protocol, and/or other protocols related to digital currencies and/or block chain or distributed ledgers. A full copy of the block chain or distributed ledger may contain every transaction ever executed in an associated digital currency. In addition to transactions, other information may be contained by the block chain or distributed ledger, such as described further herein. In some implementations, the block chain or distributed ledger may be a private block chain, a private distribute ledger, a public block chain, a public distributed ledger, or other block chain or distributed ledger. In some implementations, the block chain or distributed ledger may be based on a digital token or digital token technology. - The block chain or distributed ledger may be based on several blocks. A block may include a record that contains and confirms one or more waiting transactions. Periodically (e.g., roughly every ten minutes), a new block including transactions and/or other information may be appended to the block chain or distributed ledger. In some implementations, a given block in the block chain or distributed ledger may contain a hash of the previous block. This may have the effect of creating a chain of blocks from a genesis block (i.e., the first block in the block chain or distributed ledger) to a current block. The given block may be guaranteed to come chronologically after a previous block because the previous block's hash would otherwise not be known. The given block may be computationally impractical to modify once it is included in the block chain or distributed ledger because every block after it would also have to be regenerated.
- In some implementations, stamping
data unit component 108,stamping hash component 110,stamping storage component 112, stampingcryptographic structure component 114,stamping publication component 116,stamping proof component 118, and/or other components may facilitate stamping data units such as files and/or communications to provide certification. In some implementations, stamping data units may include receiving data units, hashing the data units, generating a cryptographic structure based on the hashed data units, publishing the cryptographic structure on the block chain or distributed ledger, and/or other operations as described below. - Stamping
data unit component 108 may be configured to receive a plurality of data units. The data units may include electronic files, electronic communications, electronic documents, electronic pictures, electronic contracts, and/or other data units. In some implementations, stampingdata unit component 108 may be configured to receive the plurality of data units via an application program interface (API) and/or other interfaces associated withsystem 100 that facilitates entry and/or selection of the data units and/or other information by a user. The API may be run on computing platform(s) 104 and/or other computing platforms. In some implementations, the API may facilitate entry and/or selection of the data units via one or more views and/or fields of a graphical user interface (GUI) displayed on computing platform(s) 104 and/or other computing devices. Entry and/or selection of the data units by a user may include dragging and dropping files from field to field of the GUI (e.g., by clicking and dragging files with a mouse, touching and moving files with a touch sensitive interface, etc.), sending emails, uploading information from a storage device, using Dropbox and/or other enterprise software integrated withsystem 100 to enter and/or select data units, communicating a data payload to the API using a chat application and/or instant messaging application, and/or otherwise communicating other data payloads to the API. By way of a non-limiting example, a user may drag and drop files (e.g., a plurality of data units) into a data unit receipt field of a GUI running on computing platform(s) 104. The plurality of data units may include a first data unit (e.g., an email) among the plurality of units. In this example, stampingdata unit component 108 may receive the first data unit and the rest of the plurality of data units from the API via the data unit receipt field. - In some implementations, the plurality of data units may be received during one or more individual timeframes. The individual timeframes may correspond to periods of time between trigger events and/or other periods of time. A trigger event may include expiration of predetermined period of time (e.g., 10 minutes), creation of a new block in connection with the block chain or distributed ledger (e.g., an individual timeframe may correspond to a period of time between when a previous block has been added to the block chain or distributed ledger and when the next subsequent block has not yet been added), receipt of a predetermined number of data units, and/or other events. For example, the one or more individual timeframes may be and/or include a predetermined period of 10 minutes. As another example, the one or more individual timeframes may include a first timeframe that corresponds to a period of time after an nth block has been added to the block chain or distributed ledger but before an nth+1 block is added to the block chain or distributed ledger. As a further example, the one or more individual time frames may include an amount of time required to receive 1 billion data units. In some implementations, any number of data units may be received during the one or more individual timeframes. Using the example trigger events described above, any number of data units may be received in the 10 minute period, any number of data units may be received during the period of time before a new block is added to the block chain or distributed ledger, and/or the predetermined trigger number of received data units may be set to any value. In some implementations, the number of data units received may be limited only by the speed with which data units are provided to
system 100 by users and/or the capabilities of current processing and storage components included in server(s) 102, computing platform(s) 104, and/or other components ofsystem 100. In some implementations, stampingdata unit component 108 is configured to receive any number of data units (e.g., one data unit, two data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) during a single individual time frame. - Stamping
hash component 110 may be configured to hash individual ones of the plurality of data units. The individual ones of the plurality of data units may be hashed with one or more hash algorithms to provide a plurality of hashes. The plurality of hashes may be unique cryptographic identifiers of the corresponding data units. The individual hashes may verifiably relate to their corresponding data units. However, the individual hashes may not be used by themselves to obtain their corresponding data units. For example, the first data unit may be hashed using a first hash algorithm to provide a first hash. The first hash may be a unique cryptographic identifier of the first data unit such that the first hash verifiably relates to the first data unit and the first hash cannot be used by itself to obtain the first data unit. - Stamping
storage component 112 may be configured to temporarily store the plurality of hashes. The plurality of hashes may be stored until occurrence of a trigger event and/or for other periods of time. As described above, a trigger event may include expiration of a predetermined period of time (e.g., 10 minutes), creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events. In some implementations, stampingstorage component 112 may be configured to temporarily store the plurality of hashes for the individual timeframes described above related to stampingdata unit component 108. In some implementations, the plurality of hashes may be stored on server(s) 102 and/or in other locations. By way of a non-limiting example, stampingstorage component 112 may be configured to store the first hash for 10 minutes. As another example, stampingstorage component 112 may be configured to store the first hash during a period of time after the nth block has been added to the block chain or distributed ledger until the nth+1 block is added to the block chain or distributed ledger. As a further example, stampingstorage component 112 may be configured to store the first hash with other hashes until 1 billion data units (e.g., a predetermined trigger number of data units) are received. - Stamping
cryptographic structure component 114 may be configured to, responsive to occurrence of a trigger event, generate a cryptographic structure. The cryptographic structure may be generated based on the plurality of hashes and/or other information. In some implementations, the cryptographic structure may include a Merkle tree, a Patricia tree, a Tiger hash tree, and/or other cryptographic structures. In some implementations, the cryptographic structure may be associated with any number of data units (e.g., one data unit, two data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) and a corresponding number of hashes. For example, the cryptographic structure may be associated with billions of data units received, hashed, and stored during a single individual timeframe. In some implementations, generating the cryptographic structure based on the plurality of hashes may comprise hashing the plurality of hashes until a single hash that is a hash of the plurality of hashes is generated. In this way, any number of data units (e.g., one data unit, two data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) may be represented by a single hash. Hashing a data structure may be a process that takes in a given data set and returns a unique output that may be unidirectionally and/or uniquely related to the given data set. The hash, which is the output, may not allow a user to obtain the inputted data, but the inputted data may allow the user to obtain its hash. - This may be advantageous because the Bitcoin protocol limits the number of transactions per block, which in turn limits the transactions per unit time that may be recorded in the block chain or distributed ledger. For example, a maximum of 80 bytes of data (as described below) may be added to each new block of the Bitcoin block chain.
System 100 overcomes this Bitcoin limitation because any number of data units may be recorded by stampingcryptographic structure component 114 via a single hash. The single hash may comprise 80 or less bytes of data such that the single hash may be stored in the Bitcoin block chain. - By way of a non-limiting example,
FIG. 2 illustrates acryptographic structure 200, in accordance with one or more implementations.Cryptographic structure 200 may be generated by stamping cryptographic structure component 114 (FIG. 1 ).Cryptographic structure 200 may include a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure. As shown inFIG. 2 , 202, 204, 206, and 208 may be hashed 210, 212, 214, and 216 to producedata units 218, 220, 222, and 224. Hash 218 may correspond tohashes data unit 202.Hash 220 may correspond todata unit 204.Hash 222 may correspond todata unit 206. Hash 224 may correspond todata unit 208. Next, hashes 218, 220, 222, and 224 may be hashed 226, 228, 230, 232 to form 234 and 236.hashes Hash 234 may correspond tohashes 218 and 220.Hash 236 may correspond to hash 222 and 224. Finally, hashes 234 and 236 may be hashed 238, 240 to form atop hash 242.Top hash 242 may be a single hash that represents data blocks 202, 204, 206, and 208, and the 218, 220, 222, 224, 234, and 236. It should be noted that the number of data blocks and hashes shown inintermediary hashes FIG. 2 is not intended to be limiting. As described above, the process of hashing hashes may be used to generate a tree (or other structure) large enough to represent any number (e.g., one data unit, two data units, tens of data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) of data units with a single top hash as described herein. - Returning to
FIG. 1 , stampingpublication component 116 may be configured to publish the cryptographic structure on the block chain or distributed ledger. In some implementations, publishing the cryptographic structure on the block chain or distributed ledger may comprise publishing the single hash that is a hash of the plurality of hashes (e.g.,top hash 242 shown inFIG. 2 ) on the block chain or distributed ledger. In some implementations, the single hash that is a hash of the plurality of hashes may comprise up to about 80 bytes of data. (It should be noted that the description of up to about 80 bytes of data is not intended to be limiting. The single hash may comprise any amount of data that allows it to be published to a block chain or distributed ledger using a given block chain or distributed ledger protocol.) Publishing the single hash on the block chain or distributed ledger may comprise embedding the up to about 80 bytes of data into a new block of the block chain or distributed ledger. In some implementations, the single hash is published on the block chain or distributed ledger using an OP_RETURN feature and/or other features of Bitcoin. The OP_RETURN feature of Bitcoin may be a Bitcoin opcode that facilitates storage of up to about 80 bytes of data in the Bitcoin block chain. The OP_RETURN feature may facilitate association of extra data with a transaction that is secured by the block chain. The OP_RETURN feature may limit the association of extra data to 80 bytes to prevent an unlimited amount of information from being stored in the block chain and maintain Bitcoin system performance. In some implementations, the single hash is published on a Ethereum block chain via the data field feature of Ethereum, the contract creation feature of Ethereum, or other feature of Ethereum. - In some implementations, stamping
data unit component 108, stampinghash component 110, stampingstorage component 112, stampingcryptographic structure component 114, stampingpublication component 116, and/or other components may facilitate stamping data units to provide certification in an amount of time that may be and/or correspond to the periods of time between trigger events (e.g., expiration of predetermined period of time, creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events) and/or other periods of time. For example, stamping data units to provide certification may occur every 10 minutes, during the period of time between the nth block and the nth+1 block being added to the block chain or distributed ledger (e.g., the next “mined” block) which may be about ten minutes based on the current performance of Bitcoin, in an amount of time that corresponds to the receipt of a predetermined number of data units, and/or in other amounts of time. It should be noted that the present disclosure contemplates other periods of time more and/or less than ten minutes. For example, the predetermined period of time may be set to something other than 10 minutes. The period of time between the nth block and the nth+1 block being added to the block chain or distributed ledger may increase and/or decrease relative to the ten minute example given above because of changes in the performance of Bitcoin, use of a different block chain (e.g., an Ethereum block chain), and/or other factors. In some implementations, the period of time for stamping data units to provide certification may be up to about one minute. In some implementations, the period of time for stamping data units to provide certification may be up to about fifteen minutes. In some implementations, the period of time for stamping data units to provide certification may be between about one minute and about fifteen minutes. - Stamping
proof component 118 may be configured to provide proofs associated with individual ones of the plurality of data units. Proofs associated with individual ones of the plurality of data units may include proofs associated with cryptographic structures representative of a plurality of hashes, a plurality of data units, and/or other information. An individual proof may include information needed for a user to verify that an individual data unit has been certified. In some implementations, an individual proof may include the name of the data unit certified, a date and/or time of certification, a notary signee name and/or email address from a person and/or entity associated with certifying the data unit, hashing method information (e.g., hashing algorithm), information related to a position of the data unit in a Merkle tree (e.g., Merkle index, Merkle root information, etc.), a transaction identification, a version number, a web certification certificate, a PDF certification certificate, a JSON proof, a URL certified data unit sharing address, signatures related to cryptographic identities, and/or other information. In some implementations, a proof may include a Bitcoin transaction identification in which a root of a cryptographic structure is published. The Merkle index and/or root information may describe a position of a hash among other hashes in a cryptographic structure published on the block chain or distributed ledger, and/or other information. By way of a non-limiting example, the proofs may include a first proof associated with the first data unit. The first proof may allow independent verification that the first data unit is certified. - In some implementations,
verification data unit 120,verification hash component 122,verification proof component 124, verificationcryptographic structure component 126,root verification component 128, and/or other components may facilitate verification of the certification of the data units.Verification data unit 120,verification hash component 122,verification proof component 124, verificationcryptographic structure component 126,root verification component 128, and/or other components may be configured (as described below) such that certifications of data units may be verified independently from the certification process (described above). - Verification
data unit component 120 may be configured to obtain one or more data units to be verified. Verificationdata unit component 120 may be configured to obtain the one or more data units to be verified via, for example, the GUI running on computing platform(s) 104, and/or via other computing platforms associated with other users. In some implementations, verificationdata unit component 120 may be configured to obtain one or more data units to be verified responsive to a user dragging and dropping files from field to field of the GUI, sending emails, uploading information from a storage device, using Dropbox and/or other enterprise software integrated withsystem 100 to enter and/or select data units, communicating data units via a chat application and/or instant messaging application, and/or otherwise communicating other data payloads to verificationdata unit component 120. For example, the one or more data units to be verified may include the first data unit and/or other data units uploaded tosystem 100 from a storage device by a user via computing platform(s) 104. -
Verification hash component 122 may be configured to hash the one or more obtained data units.Verification hash component 122 may be configured to hash the one or more obtained data units using the same hash algorithm used to create the one or more proofs. As described above, the one or more proofs may include hashing method information such as the hashing algorithms used to hash individual data components.Verification hash component 122 may be configured to obtain the same hash algorithm used to create the one or more proofs from the one or more proofs themselves. For example, the first data unit may be hashed for verification using the first hash algorithm used during stamping. The first hash algorithm may be obtained from the first proof. -
Verification proof component 124 may be configured to obtain one or more proofs corresponding to the one or more data units. As described above, an individual proof may include the name of the data unit certified, a date and/or time of certification, a notary signee name and/or email address from a person and/or entity associated with certifying the data unit, hashing method information (e.g., hashing algorithm), information related to a position of the data unit in a Merkle tree (e.g., Merkle index, Merkle root information, etc.), a transaction identification, a version number, a web certification certificate, a PDF certification certificate, a JSON proof, a URL certified data unit sharing address, and/or other information. The Merkle index and/or root information in the proof may describe positions of hashes among other hashes in a Merkle tree, and/or other information. By way of a non-limiting example, the one or more proofs may include the first proof corresponding to the first data unit. The first proof may include an index describing a position of the first hash among other hashes in the first cryptographic structure (e.g., Merkle tree, Patricia tree, Tiger hash tree, etc.) published on the block chain or distributed ledger and/or other information. - Verification
cryptographic structure component 126 may be configured to reconstruct cryptographic structures. The cryptographic structures may be reconstructed based on the information in the one or more proofs and/or other information. In some implementations, verificationcryptographic structure component 126 may be configured to reconstruct a cryptographic structure based on an index for the cryptographic structure included in a proof associated with the data unit whose certification is being verified and/or based on other information. As described above, the index may describe positions of individual hashes relative to each other in the cryptographic structure and/or other components of the cryptographic structure. In some implementations, reconstructing cryptographic structures based on the one or more proofs may comprise reconstructing Merkle trees, Patricia trees, Tiger hash trees, or other cryptographic structures. The reconstructed trees/structures may describe the positions of individual hashes among other hashes in a given tree/structure. For example, continuing with the example above, the first cryptographic structure may be a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure. The tree/structure may be reconstructed based on the index of the first proof. In some implementations, the first proof may list the relative positions of the other hashes and the first hash in the tree/structure. The relative positions of the other hashes and the first hash may be used to reconstruct the tree/structure. -
Root verification component 128 may be configured to verify certification by proving that hashes belong to roots of the reconstructed cryptographic structures. Proving that hashes belong to roots of the reconstructed cryptographic structures may include proving that verification hashes (e.g., hashes performed by verification hash component 122) belong to roots of the reconstructed cryptographic structures.Root verification component 128 may verify certification of data units by identifying an expected location of one or more hashes for one or more data units in one or more roots of a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure. The expected locations for the one or more hashes may be the locations of the hashes described by the index of a proof corresponding to the data units being verified.Root verification component 128 may be configured to verify certification of a data unit by comparing a position of a verification hash of a data unit relative to positions of other hashes in the reconstructed tree.Root verification component 128 may be configured to verify certification of a data unit responsive to a hash of hashes using a verification hash of the data unit in its expected position in a reconstructed tree matching a root of the reconstructed tree described in the proof. For example, certification of the first data unit may be verified by proving that a verification hash of the first data unit belongs to a root of the first cryptographic structure by comparing the verification hash of the first data unit (e.g., performed byverification hash component 122 described above) to the position of the first hash (e.g., hashed during stamping by stampinghash component 110 described above) in the first cryptographic structure (e.g., Merkle tree, Patricia tree, Tiger hash tree, etc.). If a hash of hashes using the verification hash produces a root of the tree described in the proof (e.g., via the index),root verification component 128 may verify the certification of the corresponding data unit. If a hash of hashes using the verification hash does not produce a root of the tree described in the proof,root verification component 128 may not verify the certification of the corresponding data unit. - By way of a non-limiting example,
FIG. 3 illustrates a reconstructedcryptographic structure 300, in accordance with one or more implementations.Reconstructed cryptographic structure 300 may include a reconstructed Merkle tree, Patricia tree, Tiger hash tree, or other cryptographic structure. InFIG. 3 ,H k 302 may be a hash that corresponds to a data unit whose certification is being verified.Cryptographic structure 300 may be reconstructed based on an index included in a proof that corresponds to the data unit being verified. The index may describe positions ofhashes including H k 302,H L 304,H IJ 306,H MNOP 308, andH ABCDEFGH 310 amongother hashes 312 in the tree/structure. As shown inFIG. 3 , hashing (the various arrows inFIG. 3 representing hashing) ahash 314 of 316, 308, 306, 318, 320, and 322 whenhashes H k 302 is in its expectedposition 324 relative tohashes 312 in the tree/structure may result in Root 318 (HABCDEFGHIJKLMNOP). If a verification hash of the data unit whose certification is being verified does not placeH k 302 in expectedposition 324, Hk may not be part ofRoot 318 and the data unit's certification may not be verified. - Returning to
FIG. 1 , in some implementations, server(s) 102, computing platform(s) 104, and/orexternal resources 130 may be operatively linked via one or more electronic communication links. For example, such electronic communication links may be established, at least in part, via a network such as the Internet and/or other networks. It will be appreciated that this is not intended to be limiting, and that the scope of this disclosure includes implementations in which server(s) 102, computing platform(s) 104, and/orexternal resources 130 may be operatively linked via some other communication media. - A given
computing platform 104 may include one or more processors configured to execute machine-readable instructions. The machine-readable instructions may be configured to enable an expert or user associated with the givencomputing platform 104 to interface withsystem 100 and/orexternal resources 130, and/or provide other functionality attributed herein to computing platform(s) 104. By way of non-limiting example, the givencomputing platform 104 may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a NetBook, a Smartphone, a gaming console, and/or other computing platforms. -
External resources 130 may include sources of information, hosts and/or providers of block chain or distributed ledger environments outside ofsystem 100, external entities participating withsystem 100, and/or other resources. In some implementations, some or all of the functionality attributed herein toexternal resources 130 may be provided by resources included insystem 100. - Server(s) 102 may include
electronic storage 132, one ormore processors 134, and/or other components. Server(s) 102 may include communication lines, or ports to enable the exchange of information with a network and/or other computing platforms. Illustration of server(s) 102 inFIG. 1 is not intended to be limiting. Server(s) 102 may include a plurality of hardware, software, and/or firmware components operating together to provide the functionality attributed herein to server(s) 102. For example, server(s) 102 may be implemented by a cloud of computing platforms operating together as server(s) 102. -
Electronic storage 132 may comprise non-transitory storage media that electronically stores information. The electronic storage media ofelectronic storage 132 may include one or both of system storage that is provided integrally (i.e., substantially non-removable) with server(s) 102 and/or removable storage that is removably connectable to server(s) 102 via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.).Electronic storage 132 may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media.Electronic storage 132 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and/or other virtual storage resources).Electronic storage 132 may store software algorithms, information determined by processor(s) 134 (e.g., the hashes described above), information received from server(s) 102, information received from computing platform(s) 104, and/or other information that enables server(s) 102 to function as described herein. - Processor(s) 134 may be configured to provide information processing capabilities in server(s) 102. As such, processor(s) 134 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information. Although processor(s) 134 is shown in
FIG. 1 as a single entity, this is for illustrative purposes only. In some implementations, processor(s) 134 may include a plurality of processing units. These processing units may be physically located within the same device, or processor(s) 134 may represent processing functionality of a plurality of devices operating in coordination. The processor(s) 134 may be configured to execute machine- 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, and/or other machine-readable instruction components. Processor(s) 134 may be configured to execute machine-readable instruction components 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, and/or other machine-readable instruction components by software; hardware; firmware; some combination of software, hardware, and/or firmware; and/or other mechanisms for configuring processing capabilities on processor(s) 134. As used herein, the term “machine-readable instruction component” may refer to any component or set of components that perform the functionality attributed to the machine-readable instruction component. This may include one or more physical processors during execution of processor readable instructions, the processor readable instructions, circuitry, hardware, storage media, or any other components.readable instruction components - It should be appreciated that although machine-
108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and 128 are illustrated inreadable instruction components FIG. 1 as being implemented within a single processing unit, in implementations in which processor(s) 134 includes multiple processing units, one or more of machine- 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and/or 128 may be implemented remotely from the other machine-readable instruction components. The description of the functionality provided by the different machine-readable instruction components 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and/or 128 described herein is for illustrative purposes, and is not intended to be limiting, as any of machine-readable instruction components 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and/or 128 may provide more or less functionality than is described. For example, one or more of machine-readable instruction components 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and/or 128 may be eliminated, and some or all of its functionality may be provided by other ones of machine-readable instruction components 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and/or 128. As another example, processor(s) 134 may be configured to execute one or more additional machine-readable instruction components that may perform some or all of the functionality attributed below to one of machine-readable instruction components 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, and/or 128.readable instruction components -
FIG. 4 illustrates amethod 400 for using a block chain or distributed ledger to certify the existence, integrity, and/or ownership of a file or communication, in accordance with one or more implementations. The operations ofmethod 400 presented below are intended to be illustrative. In some implementations,method 400 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations ofmethod 400 are illustrated inFIG. 4 and described below is not intended to be limiting. - In some implementations, one or more operations of
method 400 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations ofmethod 400 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations ofmethod 400. - At an
operation 402, a plurality of data units may be received. The plurality of data units may be received during a first timeframe and/or at other times. The plurality of data units may include a first data unit and/or other data units.Operation 402 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping data unit component 108 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 404, individual ones of the plurality of data units may be hashed. Hashing individual ones of the plurality of data units may provide a plurality of hashes. The first data unit may be hashed using a first hash algorithm and/or other algorithms to provide a first hash. The first hash may be a unique cryptographic identifier of the first data such that the first hash verifiably relates to the first data and the first hash cannot be used by itself to obtain the first data.Operation 404 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping hash component 110 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 406, the plurality of hashes may be temporarily stored. The plurality of hashes may be stored until occurrence of a trigger event and/or for other periods of time. A trigger event may include expiration of a predetermined period of time (e.g., 10 minutes), creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units, and/or other events.Operation 406 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping storage component 112 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 408, a first cryptographic structure may be generated based on the plurality of hashes and/or other information. The first cryptographic structure may be generated based on the plurality of hashes responsive to occurrence of a trigger event (e.g., expiration of a predetermined period of time, creation of a new block in connection with the block chain or distributed ledger, receipt of a predetermined number of data units) and/or at other times. In some implementations, the first cryptographic structure may be associated with any number (e.g., one data unit, two data units, tens of data units, hundreds of data units, thousands of data units, millions of data units, billions of data units, etc.) of data units. In some implementations, generating the first cryptographic structure based on the plurality of hashes may comprise hashing the plurality of hashes until a single hash that is a hash of the plurality of hashes is generated. In some implementations, the first cryptographic structure may include a Merkle tree, a Patricia tree, a Tiger hash tree, and/or other cryptographic structures.Operation 408 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping cryptographic structure component 114 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 410, the first cryptographic structure may be published on the block chain or distributed ledger. In some implementations, the first cryptographic structure may comprise up to 80 bytes of data, and publishing the first cryptographic structure on the block chain or distributed ledger may comprise embedding the up to 80 bytes of data into the block chain or distributed ledger. In some implementations, the block chain may be a Bitcoin block chain, and the first cryptographic structure may be published on the block chain using an OP_RETURN feature of Bitcoin.Operation 410 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping publication component 116 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 412, proofs associated with individual ones of the plurality of data units may be provided. The proofs may include a first proof associated with the first data unit. The first proof may allow independent verification that the first data unit is certified.Operation 412 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to stamping proof component 118 (as described in connection withFIG. 1 ), in accordance with one or more implementations. -
FIG. 5 illustrates amethod 500 for using a block chain or distributed ledger to verify certification of data units such as files or communications, in accordance with one or more implementations. The operations ofmethod 500 presented below are intended to be illustrative. In some implementations,method 500 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations ofmethod 500 are illustrated inFIG. 5 and described below is not intended to be limiting. - In some implementations, one or more operations of
method 500 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations ofmethod 500 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations ofmethod 500. - At an
operation 502, one or more data units to be verified may be obtained. The data units may include a first data unit to be verified and/or other data units.Operation 502 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification data unit component 120 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 504, one or more proofs corresponding to the one or more data units may be obtained. The proofs may include a first proof corresponding to the first data unit and/or other proofs.Operation 504 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification proof component 124 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 506, the one or more data units may be hashed using a hashing algorithm used to create the one or more proofs. The first data unit may be hashed using a first hash algorithm to create a first hash. The first proof may include an index describing a position of the first hash among other hashes in a first cryptographic structure published on the block chain or distributed ledger.Operation 506 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification hash component 122 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 508, cryptographic structures may be reconstructed based on the one or more proofs. The first cryptographic structure may be reconstructed based on the index of the first proof and/or other information. In some implementations, reconstructing cryptographic structures based on the one or more proofs may comprise reconstructing a Merkle tree, a Patricia tree, a Tiger hash tree, or other cryptographic structure. The reconstructed tree/structure may describe the position of the first hash among other hashes in the first cryptographic structure published on the block chain or distributed ledger. In some implementations, the first proof may list the other hashes and the first hash, and the other hashes and the first hash may be used to reconstruct the tree/structure.Operation 508 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to verification cryptographic structure component 126 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - At an
operation 510, certification may be verified by proving that hashes belong to roots of the cryptographic structures. Certification of the first data unit may be verified by proving that the first hash belongs to a root of the first cryptographic structure. In some implementations, the first proof may include a Bitcoin transaction identification in which the root of the first cryptographic structure was published.Operation 510 may be performed by one or more hardware processors configured to execute a machine-readable instruction component that is the same as or similar to root verification component 128 (as described in connection withFIG. 1 ), in accordance with one or more implementations. - Although the present technology has been described in detail for the purpose of illustration based on what is currently considered to be the most practical and preferred implementations, it is to be understood that such detail is solely for that purpose and that the technology is not limited to the disclosed implementations, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the spirit and scope of the appended claims. For example, it is to be understood that the present technology contemplates that, to the extent possible, one or more features of any implementation can be combined with one or more features of any other implementation.
Claims (21)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/967,780 US20180316503A1 (en) | 2016-01-26 | 2018-05-01 | Systems and methods for certification of data units and/or certification verification |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/007,120 US9679276B1 (en) | 2016-01-26 | 2016-01-26 | Systems and methods for using a block chain to certify the existence, integrity, and/or ownership of a file or communication |
| US15/594,364 US9960920B2 (en) | 2016-01-26 | 2017-05-12 | Systems and methods for certification of data units and/or certification verification |
| US15/967,780 US20180316503A1 (en) | 2016-01-26 | 2018-05-01 | Systems and methods for certification of data units and/or certification verification |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/594,364 Continuation US9960920B2 (en) | 2016-01-26 | 2017-05-12 | Systems and methods for certification of data units and/or certification verification |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20180316503A1 true US20180316503A1 (en) | 2018-11-01 |
Family
ID=59679892
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/594,364 Active US9960920B2 (en) | 2016-01-26 | 2017-05-12 | Systems and methods for certification of data units and/or certification verification |
| US15/967,780 Abandoned US20180316503A1 (en) | 2016-01-26 | 2018-05-01 | Systems and methods for certification of data units and/or certification verification |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/594,364 Active US9960920B2 (en) | 2016-01-26 | 2017-05-12 | Systems and methods for certification of data units and/or certification verification |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US9960920B2 (en) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109934015A (en) * | 2019-02-19 | 2019-06-25 | 上海悠钲网络科技有限公司 | Block data increases letter method, block chain node and storage medium |
| CN110599169A (en) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | Data processing method, device, terminal and medium |
| WO2020244238A1 (en) * | 2019-06-03 | 2020-12-10 | 创新先进技术有限公司 | Data storage method, device and apparatus employing multilevel blockchain ledgers |
| US10949118B2 (en) | 2019-06-03 | 2021-03-16 | Advanced New Technologies Co., Ltd. | Data storage method, apparatus, and device for multi-layer blockchain-type ledger |
| US11303626B2 (en) * | 2017-07-10 | 2022-04-12 | Intuit Inc. | Secure token passing via hash chains |
| JP2023547715A (en) * | 2020-11-10 | 2023-11-13 | エヌチェーン ライセンシング アーゲー | merkle proof entity |
| JP2023547716A (en) * | 2020-11-10 | 2023-11-13 | エヌチェーン ライセンシング アーゲー | merkle proof entity |
Families Citing this family (62)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10841097B2 (en) | 2016-07-08 | 2020-11-17 | Mastercard International Incorporated | Method and system for verification of identity attribute information |
| US10187203B2 (en) | 2016-08-30 | 2019-01-22 | Workday, Inc. | Secure storage encryption system |
| US10177908B2 (en) | 2016-08-30 | 2019-01-08 | Workday, Inc. | Secure storage decryption system |
| US10460118B2 (en) | 2016-08-30 | 2019-10-29 | Workday, Inc. | Secure storage audit verification system |
| CN106941487B (en) * | 2017-02-24 | 2021-01-05 | 创新先进技术有限公司 | Data sending method and device |
| US11256799B2 (en) | 2017-08-29 | 2022-02-22 | Seagate Technology Llc | Device lifecycle distributed ledger |
| CN107590659A (en) * | 2017-09-07 | 2018-01-16 | 中链科技有限公司 | Allocation of landownership and land use right data processing method, system and computer-readable recording medium |
| US10878248B2 (en) | 2017-10-26 | 2020-12-29 | Seagate Technology Llc | Media authentication using distributed ledger |
| CN119203495A (en) * | 2017-11-02 | 2024-12-27 | 区块链控股有限公司 | Computer-implemented systems and methods for combining blockchain technology with digital twins |
| JP7221954B2 (en) | 2017-11-09 | 2023-02-14 | エヌチェーン ライセンシング アーゲー | A system for protecting verification keys from modification and validating proofs of correctness |
| GB201720946D0 (en) | 2017-12-15 | 2018-01-31 | Nchain Holdings Ltd | Computer-implemented system and method |
| CN118041602A (en) | 2017-11-09 | 2024-05-14 | 区块链控股有限公司 | System and method for ensuring correct execution of a computer program using a mediator computer system |
| KR20250095647A (en) | 2017-12-13 | 2025-06-26 | 엔체인 라이센싱 아게 | System and method for securely sharing cryptographic material |
| US10673620B2 (en) | 2017-12-14 | 2020-06-02 | Paypal, Inc. | Blockchain validation system |
| CN108076063A (en) * | 2017-12-25 | 2018-05-25 | 天津理工大学 | Network O&M auditing method, server terminal and client based on block chain |
| US10756883B2 (en) * | 2018-01-19 | 2020-08-25 | Trist Technologies, Inc. | Systems and methods for data collection with blockchain recording |
| US12015712B2 (en) | 2018-02-07 | 2024-06-18 | Verasity Limited S.R.L. | System and method for proof of view via blockchain |
| US10956931B2 (en) * | 2018-02-07 | 2021-03-23 | Verasity Foundation Company Limited | System and method for proof of view via blockchain |
| US11139977B2 (en) * | 2018-02-07 | 2021-10-05 | Verasity Limited | System and method for proof of view via blockchain |
| EP3525394B1 (en) * | 2018-02-08 | 2021-10-27 | Sony Group Corporation | Electronic devices, systems and methods |
| US11088826B2 (en) * | 2018-02-27 | 2021-08-10 | International Business Machines Corporation | Managing assets with expiration on a blockchain |
| JP7031374B2 (en) * | 2018-03-01 | 2022-03-08 | 株式会社デンソー | Verification terminal, verification system |
| WO2019172877A1 (en) * | 2018-03-05 | 2019-09-12 | Hewlett-Packard Development Company, L.P. | Data unit management using blockchain information |
| US11582042B2 (en) * | 2018-03-16 | 2023-02-14 | General Electric Company | Industrial data verification using secure, distributed ledger |
| CN108599954B (en) * | 2018-03-16 | 2020-04-07 | 西安电子科技大学 | Identity verification method based on distributed account book |
| CN108521426B (en) * | 2018-04-13 | 2020-09-01 | 中国石油大学(华东) | A blockchain-based array honeypot collaborative control method |
| CN108768657A (en) * | 2018-04-17 | 2018-11-06 | 深圳技术大学(筹) | A kind of digital certificate based on block platform chain issues system and method |
| CN108696511A (en) * | 2018-04-24 | 2018-10-23 | 深圳市元征科技股份有限公司 | A kind of public notification of information method, apparatus and relevant device based on block chain |
| US11341818B2 (en) | 2018-05-08 | 2022-05-24 | Xspero U.S. | Systems and methods for authenticated blockchain data distribution |
| US11055675B2 (en) * | 2018-05-08 | 2021-07-06 | Xspero U.S. | Systems and methods for e-certificate exchange and validation |
| CN108629040A (en) * | 2018-05-11 | 2018-10-09 | 北京奇虎科技有限公司 | Data proof of possession method, apparatus and system |
| CN109067539B (en) * | 2018-06-13 | 2021-09-28 | 深圳前海微众银行股份有限公司 | Alliance chain transaction method, alliance chain transaction equipment and computer readable storage medium |
| CN108847925B (en) * | 2018-06-20 | 2020-09-15 | 深圳大学 | Fragment block chain generation method based on tree structure |
| CN108924107B (en) * | 2018-06-21 | 2020-08-21 | 桂林电子科技大学 | A verifiable method of blockchain telemedicine data call |
| GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
| CN109359222B (en) * | 2018-08-06 | 2021-07-06 | 杭州复杂美科技有限公司 | Data storage method and system, equipment and storage medium |
| CN109359084A (en) * | 2018-08-27 | 2019-02-19 | 深圳壹账通智能科技有限公司 | Abnormality diagnostic method, device, equipment and storage medium in the processing of block chain information |
| CN109324997B (en) * | 2018-09-14 | 2022-05-10 | 佛山科学技术学院 | Block chain-based digital right protection method and device |
| CN109086459B (en) * | 2018-09-17 | 2020-01-14 | 中国科学院重庆绿色智能技术研究院 | News collecting, editing and releasing method based on block chain |
| SG11202100940TA (en) | 2018-09-25 | 2021-02-25 | Sony Corp | Communication network, method, network equipment and communication device |
| CN109391617B (en) * | 2018-10-15 | 2021-01-12 | 天津理工大学 | Block chain-based network equipment configuration management method and client |
| CN109617690B (en) * | 2018-10-26 | 2021-04-09 | 北京新唐思创教育科技有限公司 | Block data processing method and computer storage medium |
| US11308194B2 (en) * | 2018-10-31 | 2022-04-19 | Seagate Technology Llc | Monitoring device components using distributed ledger |
| US11036708B2 (en) | 2018-11-26 | 2021-06-15 | Amazon Technologies, Inc. | Indexes on non-materialized views |
| US10942910B1 (en) | 2018-11-26 | 2021-03-09 | Amazon Technologies, Inc. | Journal queries of a ledger-based database |
| US11119998B1 (en) | 2018-11-26 | 2021-09-14 | Amazon Technologies, Inc. | Index and view updates in a ledger-based database |
| US11196567B2 (en) * | 2018-11-26 | 2021-12-07 | Amazon Technologies, Inc. | Cryptographic verification of database transactions |
| US10990705B2 (en) | 2019-04-18 | 2021-04-27 | Advanced New Technologies Co., Ltd. | Index creation for data records |
| CN110188096B (en) * | 2019-04-18 | 2021-08-17 | 创新先进技术有限公司 | Index creating method, device and equipment for data record |
| CN110070361A (en) * | 2019-05-05 | 2019-07-30 | 江苏全链通信息科技有限公司 | Contract based on block chain deposits card method, equipment and storage medium |
| CN114223233B (en) * | 2019-08-13 | 2024-12-31 | 上海诺基亚贝尔股份有限公司 | Data security for network slice management |
| US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
| GB2596347A (en) * | 2020-06-26 | 2021-12-29 | Nchain Holdings Ltd | Methods and devices for validating data in a blockchain network |
| US11455391B2 (en) | 2020-10-28 | 2022-09-27 | International Business Machines Corporation | Data leakage and misuse detection |
| US11888894B2 (en) * | 2021-04-21 | 2024-01-30 | Oracle International Corporation | Methods, systems, and computer readable media for mitigating network function (NF) update and deregister attacks |
| US12067308B2 (en) | 2022-02-22 | 2024-08-20 | Xerox Corporation | Method and system for printing verified copy of a non-fungible token |
| US11934496B2 (en) | 2022-02-22 | 2024-03-19 | Xerox Corporation | Method and system for authentic non-fungible token (NFT) printing |
| US20240146554A1 (en) * | 2022-11-02 | 2024-05-02 | Jpmorgan Chase Bank, N.A. | Systems and methods for tokenizing assets via blockchain-to-blockchain bridge using underlying assets held at a triparty agent or custodian |
| US12341765B2 (en) | 2022-11-15 | 2025-06-24 | Oracle International Corporation | Methods, systems, and computer readable media for detecting stolen access tokens |
| US11822838B1 (en) | 2022-12-02 | 2023-11-21 | Xerox Corporation | Method and system for securely exchanging print job information |
| US20250125980A1 (en) * | 2023-10-12 | 2025-04-17 | Verizon Patent And Licensing Inc. | Systems and methods for cross-chain chaincode access and interoperability |
| US20250272420A1 (en) * | 2024-02-27 | 2025-08-28 | Bmc Software, Inc. | Dynamic distributed data access control |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4309569A (en) | 1979-09-05 | 1982-01-05 | The Board Of Trustees Of The Leland Stanford Junior University | Method of providing digital signatures |
| US20060136728A1 (en) | 2003-08-15 | 2006-06-22 | Gentry Craig B | Method and apparatus for authentication of data streams with adaptively controlled losses |
| US7904450B2 (en) | 2008-04-25 | 2011-03-08 | Wilson Kelce S | Public electronic document dating list |
-
2017
- 2017-05-12 US US15/594,364 patent/US9960920B2/en active Active
-
2018
- 2018-05-01 US US15/967,780 patent/US20180316503A1/en not_active Abandoned
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11303626B2 (en) * | 2017-07-10 | 2022-04-12 | Intuit Inc. | Secure token passing via hash chains |
| CN109934015A (en) * | 2019-02-19 | 2019-06-25 | 上海悠钲网络科技有限公司 | Block data increases letter method, block chain node and storage medium |
| WO2020244238A1 (en) * | 2019-06-03 | 2020-12-10 | 创新先进技术有限公司 | Data storage method, device and apparatus employing multilevel blockchain ledgers |
| US10949118B2 (en) | 2019-06-03 | 2021-03-16 | Advanced New Technologies Co., Ltd. | Data storage method, apparatus, and device for multi-layer blockchain-type ledger |
| CN110599169A (en) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | Data processing method, device, terminal and medium |
| JP2023547715A (en) * | 2020-11-10 | 2023-11-13 | エヌチェーン ライセンシング アーゲー | merkle proof entity |
| JP2023547716A (en) * | 2020-11-10 | 2023-11-13 | エヌチェーン ライセンシング アーゲー | merkle proof entity |
Also Published As
| Publication number | Publication date |
|---|---|
| US9960920B2 (en) | 2018-05-01 |
| US20170250815A1 (en) | 2017-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9960920B2 (en) | Systems and methods for certification of data units and/or certification verification | |
| US9679276B1 (en) | Systems and methods for using a block chain to certify the existence, integrity, and/or ownership of a file or communication | |
| US11449478B2 (en) | Blockchain implemented data migration audit trail | |
| US10708060B2 (en) | System and method for blockchain-based notification | |
| US12160524B2 (en) | Systems and methods for determining authenticity of non-fungible digital assets | |
| KR102738475B1 (en) | Extracting data from blockchain networks | |
| US11741083B2 (en) | Cross-shard private atomic commit | |
| JP7607754B2 (en) | Consensus Service for Blockchain Networks | |
| US11888981B2 (en) | Privacy preserving auditable accounts | |
| CN116325833A (en) | Integrating device identification into a blockchain-based permissioned framework | |
| US10637666B1 (en) | Migrating data for decentralized applications between disparate backend storage providers | |
| US11550796B2 (en) | Coexistence mediator for facilitating blockchain transactions | |
| US10880076B1 (en) | Backup of encrypted information stored off-chain in a blockchain-based decentralized storage system | |
| US11575499B2 (en) | Self auditing blockchain | |
| US11804950B2 (en) | Parallel processing of blockchain procedures | |
| US12192387B2 (en) | Endorsement policy consolidation in blockchain networks | |
| US11943360B2 (en) | Generative cryptogram for blockchain data management | |
| Kołodziej et al. | Blockchain secure cloud: a new generation integrated cloud and blockchain platforms–general concepts and challenges | |
| US11640392B2 (en) | Blockchain endorsement agreement | |
| WO2023161741A1 (en) | Privacy preserving asset token exchange | |
| US20230267457A1 (en) | Privacy preserving asset transfer between networks | |
| WO2024156510A1 (en) | Proof and verification of data storage | |
| US10244077B2 (en) | Enterprise service bus sequencer | |
| Mast et al. | Cryptographic solutions for security and privacy issues in the cloud |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: STAMPERY INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CUENDE, LUIS IVAN;SANCHEZ DE PEDRO CRESPO, ADAN;REEL/FRAME:045680/0164 Effective date: 20170606 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |