Method and system for verifying integrity of a digital asset using a distributed hash table and a peer-to-peer distributed ledger
A computer-implemented method ( 900 ) and system ( 1 ) for verifying the integrity of a computer software for installation using a distributed hash table ( 13 ) and a peer-to-peer distributed ledger ( 14 ). This may be the Bitcoin blockchain or an alternative implementation. The method includes determining ( 910 ) a metadata associated with a transaction record stored on the peer-to-peer distributed ledger ( 14 ). An indication of an entry stored on the distributed hash table ( 13 ) may be determined ( 920 ) from the metadata. The method further includes determining ( 930 ) a third hash value based on the computer software and determining ( 940 ) a fourth hash value from the entry on the distributed hash table ( 13 ). The method further includes comparing ( 950 ) the third hash value and the fourth hash value and verifying ( 960 ) the integrity of the computer software based on the comparing of the third hash value and the fourth hash value.
1. A computer-implemented method of verifying integrity of a computer software for installation using a distributed hash table and a peer-to-peer distributed ledger, the method comprising:
determining a metadata (M) associated with a transaction record stored on the peer-to-peer distributed ledger;
determining an indication of an entry stored on the distributed hash table from the metadata (M);
determining a third hash value (H 3 ) based on the computer software;
determining a fourth hash value (H 4 ) from the entry on the distributed hash table;
comparing the third hash value (H 3 ) and the fourth hash value (H 4 ); and
verifying the integrity of the computer software based on the comparing of the third hash value (H 3 ) and the fourth hash value (H 4 ).
2. The method of claim 1 , wherein comparing the third hash value (H 3 ) and the fourth hash value (H 4 ) comprises determining whether the third hash value (H 3 ) and the fourth hash value (H 4 ) match.
3. The method of claim 1 , wherein before determining the metadata (M), the method comprises:
determining a second user public key (PU 2 ) associated with a second user (U 2 ) from a transaction record stored on the peer-to-peer distributed ledger;
determining a second public key (P 2 ) associated with the second user (U 2 ) from an entry stored on the distributed hash table;
comparing the second user public key (PU 2 ) and the second public key (P 2 ); and
verifying the ownership of the computer software based on the comparing of the second user public key (PU 2 ) and the second public key (P 2 ).
4. The method of claim 3 , wherein comparing the second user public key (PU 2 ) and the second public key (P 2 ) comprises determining whether the second user public key (PU 2 ) and the second public key (P 2 ) match.
5. The method of claim 4 , wherein before determining the second user public key (PU 2 ) the method comprises:
determining a data (D 1 ) associated with the computer software;
determining a first hash value (H 1 ) of the computer software;
determining a second hash value (H 2 ) based on the data (D 1 ) and the computer software;
sending, over a communications network, the data (D 1 ), the first hash value (H 1 ) and the second hash value (H 2 ) to an entry for storage in the distributed hash table, wherein the second hash value (H 2 ) is a key of a key-value pair and the data (D 1 ) and the first hash value (H 1 ) are a value in the key-value pair; and
determining the metadata (M) comprising the second hash value (H 2 ) for storage on the peer-to-peer distributed ledger.
6. The method of claim 1 , wherein the computer software comprises a header and a body.
7. The method of claim 6 , wherein the third hash value (H 3 ) is determined from the body of the computer software.
8. The method of claim 6 , wherein the header comprises a hash value of the body of the computer software.
9. The method of claim 6 , wherein the header further comprises a second hash value (H 2 ).
10. The method of claim 6 , wherein the body of the computer software comprises an executable of the computer software.
11. The method of claim 10 , further comprising determining a second user public key (PU 2 ) and wherein before determining the second user public key (PU 2 ), the method comprises encrypting the executable of the computer software.
12. The method of claim 11 , wherein encrypting the executable of the computer software comprises:
determining a generator value (GV);
determining a second user second public key (P 2 U 2 ) based on the second user public key (PU 2 ) and the generator value (GV), wherein the second user second public key (P 2 U 2 ) forms a cryptographic pair with a second user second private key (V 2 U 2 );
determining a first user second public key (P 2 U 1 ) based on a first user public key (PU 1 ) and the generator value (GV), wherein the first user second public key (P 2 U 1 ) forms a cryptographic pair with a first user second private key (V 2 U 1 );
determining a common secret (CS) based on the second user second public key (P 2 U 2 ) and the first user second private key (V 2 U 1 ); and
encrypting the executable of the computer software with the common secret (CS) to generate an encrypted executable of the computer software.
13. The method of claim 12 , wherein the encrypted executable of the computer software is decrypted by:
determining the common secret (CS) based on the first user second public key (P 2 U 1 ) and the second user second private key (V 2 U 2 ); and
decrypting the executable of the computer software with the common secret (CS) to generate a decrypted executable of the computer software.
14. The method of claim 13 , further comprising:
installing the decrypted executable of the computer software on a processing device associated with the second user (U 2 ).
15. The method of claim 14 , further comprising:
determining an activation key (AK) from the second user (U 2 ); and
executing instructions of the decrypted executable of the computer software based on the activation key (AK).
16. A computer software program comprising machine-readable instructions to cause a processing device to implement the method of claim 1 .
17. A computer system for verifying integrity of a computer software for installation using a distributed hash table and a peer-to-peer distributed ledger, the computer system comprising a processing device associated with a node on a peer-to-peer network of nodes, configured to:
determine a metadata (M) associated with a transaction record stored on the peer-to-peer distributed ledger;
determine an indication of the location of an entry on the distributed hash table from the metadata (M);
determine a third hash value (H 3 ) based on the computer software;
determine a fourth hash value (H 4 ) from the entry on the distributed hash table;
compare the third hash value (H 3 ) and the fourth hash value (H 4 ); and
verify the integrity of the computer software based on a comparison of the third hash value (H 3 ) and the fourth hash value (H 4 ).