IP Library Granted Patent US 12,505,180
Granted Patent B2
US 12,505,180 · App. 17/560,107 · Granted Dec 23, 2025

Method and system for verifying ownership of a digital asset using a distributed hash table and a peer-to-peer distributed ledger

Inventors: Stephane Savanah (London, GB); Craig Steven Wright (London, GB)
Assignee: NCHAIN LICENSING AG
G06F21/121G06F8/65G06F16/152G06F16/1834G06F21/105G06F21/12G06F21/51G06F21/57G06F21/602G06F21/6281G06F21/64H04L9/0637H04L9/0643H04L9/0841H04L9/3236H04L9/3247H04L9/3263H04L9/3265H04L63/0435H04L63/061H04L63/0823H04L67/104G06F21/107G06F2221/2107H04L9/50H04L67/1065H04L2209/56
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,505,180
App. No.
17/560,107
Granted
Dec 23, 2025
Kind
B2
Abstract

A computer-implemented method ( 600 ) and system ( 1 ) for verifying ownership 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 blockchain implementation. The method includes determining ( 610 ) a second user public key associated with a second user ( 24 ) from a transaction record stored on the peer-to-peer distributed ledger ( 14 ). A second public key associated with the second user may be determined ( 620 ) from an entry on the distributed hash table ( 13 ). The method further includes comparing ( 630 ) the second user public key and the second public key, and verifying ( 640 ) the ownership of the computer software based on the comparing of the second user public key and the second public key.

Claims (45)

1. A computer-implemented method of controlling distribution and installation of computer software by verifying ownership using a distributed hash table and a peer-to-peer distributed ledger, the method performed by a node comprising a processor and associated with a first user (U1) corresponding to a software provider, the method comprising:

determining, by the node, a first hash value (H1) by hashing an executable of the computer software using a hashing function, wherein the executable is configured to enable installation of the computer software;

determining a second hash value (H2) based on a data (D1) associated with the computer software and the first hash value (H1), the data (D1) comprising a license that authorizes a second user (U2) to install the computer software, wherein the license is associated with the second user (U2) and is a top hash value of a Merkle tree cryptographically linking the license to the computer software;

encrypting, by the node, the executable of the computer software with a symmetric key derived from a common secret (CS), wherein the common secret (CS) is determined by the node based on a first private key (VU1) associated with the first user (U1), a second user public key (PU2) associated with the second user (U2), and a value (GV) shared between the first user (U1) and the second user (U2), the common secret (CS) being independently derivable by the second user (U2) using a first public key (PU1) and a second user private key (VU2);

determining, by the node, the second user public key (PU2) associated with the second user (U2) from a transaction record stored on the peer-to-peer distributed ledger, wherein the second user public key (PU2) is retrieved from metadata comprising the second hash value (H2) embedded in a redeem script of the transaction record;

determining, by the node, using the second hash value (H2) as a key of a key-value pair associated with an entry stored on the distributed hash table, a second public key (P2) associated with the second user (U2) from the entry in the distributed hash table;

comparing, by the node, the second user public key (PU2) and the second public key (P2) to confirm a correspondence between the transaction record and a distributed hash table entry in the distributed hash table;

verifying, by the node, the ownership of the computer software by the second user (U2) based on a comparison indicating a match between the second user public key (PU2) and the second public key (P2); and

in response to verifying the ownership, by the node, transmitting the encrypted executable of the computer software to a location in the distributed hash table indicated by the data (D1) and causing the computer software to be installed on a computing device associated with the second user (U2) by enabling decryption of the encrypted executable into an executable form using the symmetric key derived from the common secret (CS), the symmetric key being derivable by the second user (U2) based on the verified ownership, thereby preventing unauthorized installation of the computer software.

2. The method of claim 1 , wherein comparing the second user public key (PU2) and the second public key (P2) comprises determining whether the second user public key (PU2) and the second public key (P2) match.

3. The method of claim 1 , wherein the computer software comprises a header and a body.

4. The method of claim 3 , wherein the header comprises a hash value of the body of the computer software.

5. The method of claim 3 , wherein the header further comprises the second hash value (H2) of the data (D1) associated with the license.

6. The method of claim 3 , wherein the body of the computer software comprises the executable of the computer software.

7. The computer-implemented method of claim 1 , wherein the second user public key (PU2) and the second public key (P2) have a same public key value.

8. A computer system for controlling distribution and installation of computer software by verifying ownership using a distributed hash table and a peer-to-peer distributed ledger, the computer system comprising a processing device associated with a first user (U1) corresponding to a software provider, the processing device comprising a processor and a memory, the memory storing instructions which, when executed by the processor, cause the processing device to:

determine a first hash value (H1) by hashing an executable of the computer software using a hashing function, wherein the executable is configured to enable installation of the computer software;

determine a second hash value (H2) based on a data (D1) associated with the computer software D1 and the first hash value (H1), the data (D1) comprising a license that authorizes the second user (U2) to install the computer software, wherein the license is associated with the second user (U2) and is a top hash value of a Merkle tree cryptographically linking the license to the computer software;

encrypting the executable of the computer software with a symmetric key derived from a common secret (CS), wherein the common secret (CS) is determined based on a first private key (VU1) associated with the first user (U1), a second user public key (PU2) associated with the second user (U2), and a value (GV) shared between the first user (U1) and the second user (U2), the common secret (CS) being independently derivable by the second user (U2) using a first public key (PU1) and a second user private key (VU2);

determine the second user public key (PU2) associated with the second user (U2) from a transaction record stored on the peer-to-peer distributed ledger, wherein the second user public key (PU2) is retrieved from a metadata comprising the second hash value (H2) embedded in a redeem script of the transaction record;

determine using the second hash value (H2) as a key of a key-value pair associated with an entry stored on the distributed hash table, a second public key (P2) associated with the second user (U2) from the entry in the distributed hash table;

compare the second user public key (PU2) and the second public key (P2) to confirm a correspondence between the transaction record and a distributed hash table entry in the distributed hash table;

verify the ownership of the computer software based on a comparison indicating a match between the second user public key (PU2) and the second public key (P2); and

in response to verifying the ownership of the computer software, the processing device is configured to transmit the encrypted executable of the computer software to a location in the distributed hash table indicated by the data (D1) and cause the computer software to be installed on a computing device associated with the second user (U2) by enabling decryption of the encrypted executable into an executable form using the symmetric key derived from the common secret (CS), the symmetric key being derivable by the second user (U2) based on the verified ownership, thereby preventing unauthorized installation of the computer software.

9. A non-transitory machine-readable storage medium comprising instructions thereon, the instructions when executed by a processor of a processing device, cause the processing device to:

determine a first hash value (H1) by hashing an executable of computer software, wherein the executable is configured to enable installation of the computer software;

determine a second hash value (H2) based on a data (D1) associated with the computer software D1 and the first hash value (H1), the data (D1) comprising a license that authorizes a second user (U2) to install the computer software, wherein the license is associated with the second user (U2) and is a top hash value of a Merkle tree cryptographically linking the license to the computer software;

encrypting the executable of the computer software with a symmetric key derived from a common secret (CS), wherein the common secret (CS) is determined based on a first private key (VU1) associated with a first user (U1), a second user public key (PU2) associated with the second user (U2), and a value (GV) shared between the first user (U1) and the second user (U2), the common secret (CS) being independently derivable by the second user (U2) using a first public key (PU1) and a second user private key (VU2);

determine the second user public key (PU2) associated with the second user (U2) from a transaction record stored on a peer-to-peer distributed ledger, wherein the second user public key is retrieved from a metadata comprising the second hash value (H2) embedded in a redeem script of the transaction record;

determine using the second hash value (H2) as a key of a key-value pair associated with an entry stored on the distributed hash table, a second public key (P2) associated with the second user (U2) from the entry in the distributed hash table;

compare the second user public key (PU2) and the second public key (P2) to confirm a correspondence between the transaction record and a distributed hash table entry in the distributed hash table;

verify ownership of the computer software based on a comparison indicating a match between the second user public key (PU2) and the second public key (P2); and

in response to verifying the ownership of the computer software, the processing device is configured to transmit the encrypted executable of the computer software to a location in the distributed hash table indicated by the data (D1) and cause the computer software to be installed on a computing device associated with the second user (U2) by enabling decryption of the encrypted executable into an executable form using the symmetric key derived from the common secret (CS), the symmetric key being derivable by the second user (U2) based on the verified ownership, thereby preventing unauthorized installation of the computer software.

10. A computer-implemented method of verifying ownership and installing computer software using a distributed hash table and a peer-to-peer distributed ledger, the method performed by a node comprising a processor and associated with a second user (U2) corresponding to a software recipient, the method comprising:

receiving, by the node, data (D1) indicating a location of an encrypted executable of the computer software in the distributed hash table, wherein the encrypted executable of the computer software has been encrypted with a symmetric key derived from a common secret (CS), and wherein the encrypted executable of the computer software is associated with a first hash value (H1) generated by hashing the executable using a hash function and a second hash value (H2) determined based on the data (D1) and the first hash value (H1), the data (D1) further comprising a license that authorizes the second user (U2) to install the computer software, the license being a top hash value of a Merkle tree cryptographically linking the license to the computer software;

determining, by the node, a second user public key (PU2) associated with the second user (U2) from a transaction record stored on the peer-to-peer distributed ledger, wherein the second user public key (PU2) is retrieved from metadata comprising the second hash value (H2) embedded in a redeem script of the transaction record;

determining, by the node, using the second hash value (H2) as a key of a key-value pair stored in the distributed hash table, a second public key (P2) associated with the second user (U2) from an entry in the distributed hash table;

comparing, by the node, a second user public key (PU2) and the second public key (P2) to confirm a correspondence between the transaction record and the distributed hash table entry;

verifying, by the node, the ownership of the computer software by the second user (U2) based on a comparison indicating a match between the second user public key (PU2) and the second public key (P2); and

in response to verifying the ownership, by the node:

retrieving the encrypted executable of the computer software from the location in the distributed hash table indicated by the data (D1);

determining, by the node, the common secret (CS) based on a first user public key (PU1) associated with a first user (U1) corresponding to a software provider, a second user private key (VU2) associated with the second user (U2), and a generator value (GV) shared between the first user (U1) and the second user (U2);

deriving the symmetric key from the common secret (CS);

decrypting the encrypted executable into an executable form using the derived symmetric key; and

causing the computer software to be installed on a computing device associated with the second user (U2), thereby preventing unauthorized installation of the computer software.

Assignments (2)
CHANGE OF NAME Recorded Feb 3, 2025
From: NCHAIN HOLDINGS AG
To: NCHAIN LICENSING AG
Reel/Frame 070096/0502 →
CHANGE OF NAME Recorded Apr 18, 2023
From: NCHAIN HOLDINGS LTD
To: NCHAIN LICENSING AG
Reel/Frame 063363/0345 →
Priority Claims (3)
GB 1608454 · May 13, 2016 · national
GB 1608456 · May 13, 2016 · national
GB 1608463 · May 13, 2016 · national
Continuity (2)
Continuation 16300514
Related Publication 20220366019A1 · Nov 17, 2022
References Cited (101)
US 5715403A · Stefik · 1998 [cited by applicant]
US 5944821A · Angelo · 1999 [cited by applicant]
US 8875309B1 · Diamond · 2014 [cited by examiner]
US 9679276B1 · Cuende · 2017 [cited by applicant]
US 9940444B1 · Murphy · 2018 [cited by examiner]
US 10050779B2 · Alness et al. · 2018 [cited by applicant]
US 10579779B2 · Wright et al. · 2020 [cited by applicant]
US 11210372B2 · Savanah et al. · 2021 [cited by applicant]
US 11294991B2 · Savanah et al. · 2022 [cited by applicant]
US 11455378B2 · Wright et al. · 2022 [cited by applicant]
US 20070079122A1 · Han · 2007 [cited by examiner]
US 20080133706A1 · Chavez et al. · 2008 [cited by applicant]
US 20090280906A1 · Larsen · 2009 [cited by examiner]
US 20120272336A1 · Cohen · 2012 [cited by examiner]
US 20120284507A1 · Bostanci · 2012 [cited by examiner]
US 20120284794A1 · Trent et al. · 2012 [cited by applicant]
US 20130179689A1 · Matsumoto · 2013 [cited by examiner]
US 20140108816A1 · Ford · 2014 [cited by applicant]
US 20140165158A1 · Chan et al. · 2014 [cited by applicant]
US 20150098567A1 · Park · 2015 [cited by applicant]
US 20150120567A1 · Van Rooyen et al. · 2015 [cited by applicant]
US 20150120569A1 · Belshe · 2015 [cited by examiner]
US 20150242958A1 · D'Zmura · 2015 [cited by applicant]
US 20150262176A1 · Langschaedel et al. · 2015 [cited by applicant]
US 20150264077A1 · Berger et al. · 2015 [cited by applicant]
US 20150269570A1 · Phan et al. · 2015 [cited by applicant]
US 20150271679A1 · Park et al. · 2015 [cited by applicant]
US 20160035054A1 · Branscomb et al. · 2016 [cited by applicant]
US 20160048688A1 · Flynn et al. · 2016 [cited by applicant]
US 20160085955A1 · Lerner · 2016 [cited by applicant]
US 20160098723A1 · Feeney · 2016 [cited by applicant]
US 20160105265A1 · Wang et al. · 2016 [cited by applicant]
US 20160134627A1 · Johnson · 2016 [cited by examiner]
US 20160162897A1 · Feeney · 2016 [cited by examiner]
US 20160203572A1 · McConaghy et al. · 2016 [cited by applicant]
US 20160218882A1 · Wood · 2016 [cited by applicant]
US 20160241389A1 · Le Saint · 2016 [cited by examiner]
US 20160283920A1 · Fisher et al. · 2016 [cited by applicant]
US 20160292396A1 · Akerwall · 2016 [cited by applicant]
US 20160300234A1 · Moss-Pultz · 2016 [cited by examiner]
US 20160321676A1 · McCoy et al. · 2016 [cited by applicant]
US 20160335288A1 · Qiu et al. · 2016 [cited by applicant]
US 20160342977A1 · Lam · 2016 [cited by applicant]
US 20160344737A1 · Anton et al. · 2016 [cited by applicant]
US 20170048216A1 · Chow et al. · 2017 [cited by applicant]
US 20170141926A1 · Xu et al. · 2017 [cited by applicant]
US 20170155515A1 · Androulaki et al. · 2017 [cited by applicant]
US 20170236123A1 · Ali et al. · 2017 [cited by applicant]
US 20170279783A1 · Milazzo et al. · 2017 [cited by applicant]
US 20170300978A1 · Narasimhan et al. · 2017 [cited by applicant]
US 20170316390A1 · Smith et al. · 2017 [cited by applicant]
US 20170324663A1 · Menase · 2017 [cited by examiner]
US 20170324711A1 · Feeney · 2017 [cited by examiner]
US 20180117447A1 · Tran et al. · 2018 [cited by applicant]
US 20180300507A1 · Uhr et al. · 2018 [cited by applicant]
US 20180374173A1 · Chen et al. · 2018 [cited by applicant]
US 20190044727A1 · Scott · 2019 [cited by examiner]
CN 1535059A · 2004 [cited by examiner]
CN 1839375A · 2006 [cited by examiner]
CN 104123488A · 2014 [cited by applicant]
CN 104735164A · 2015 [cited by applicant]
EP 1785901A1 · 2007 [cited by examiner]
GB 2345775A · 2000 [cited by applicant]
WO 03058451A1 · 2003 [cited by applicant]
WO WO2007010427A1 · 2007 [cited by examiner]
WO 2014201059A1 · 2014 [cited by applicant]
WO WO2015171030A1 · 2015 [cited by examiner]
WO 2016105265A1 · 2016 [cited by applicant]
John Thomson, Lock-Free Decentralized Storage for Transactional Upgrade Rollback, 2010, IEEE, https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5541775 (Year: 2010). [cited by examiner]
Anand et al., “Colored Coins: Bitcoin, Blockchain, and Land Administration,” 2017 World Bank Conference on Land and Poverty, Mar. 20, 2017, 10 pages. [cited by applicant]
Antonopoulos, “Mastering Bitcoin—Unlocking Digital Cryptocurrencies,” O'Reilly Media, Inc., Dec. 20, 2014, 282 pages. [cited by applicant]
Bitcoin Wiki, “Proof of Ownership,” Bitcoin Wiki, https://en.bitcoin.it/wiki/Proof_of_Ownership, Mar. 1, 2015 (last updated Oct. 22, 2015) [retrieved Dec. 13, 2018], 2 pages. [cited by applicant]
blockchain.com, “Homepage,” Blockchain Luxembourg S.A., https://www.blockchain.com/, Jan. 1, 2018 [retrieved Dec. 14, 2018], 3 pages. [cited by applicant]
Coinskillthefed et al., “Using blockchain to publish downloadable software verification codes,” Bitcoin Stack Exchange, https://bitcoin.stackexchange.com/questions/24489/using-blockchain-to-publish-downloadable-software… [cited by applicant]
ConfTool, “ConfTool: Conference Management Software,” Conftool.net, https://www.conftool.net/landandpoverty2016/%20index.php/Anand-594-594_paper.pdf?page=downloadPaper&filename=Anand-594-594_paper.pdf&form_id=594&form_v… [cited by applicant]
Crosby et al., “BlockChain Technology: Beyond Bitcoin,” University of California Berkeley, Sutardja Center for Entrepreneurship & Technology Technical Report, Oct. 16, 2015, 35 pages. [cited by applicant]
Herbert et al., “A Novel Method for Decentralised Peer-to-Peer Software License Validation Using Cryptocurrency Blockchain Technology,” Proceedings of the 38th Australasian Computer Science Conference, Jan. 27, 2015, 9 … [cited by applicant]
International Search Report and Written Opinion mailed Aug. 1, 2017, International Patent Application No. PCT/IB2017/052800, filed May 12, 2017, 9 pages. [cited by applicant]
International Search Report and Written Opinion mailed Aug. 1, 2017, International Patent Application No. PCT/IB2017/052801, filed May 17, 2017, 9 pages. [cited by applicant]
International Search Report and Written Opinion mailed Aug. 1, 2017, International Patent Application No. PCT/IB2017/052804, filed May 12, 2017, 9 pages. [cited by applicant]
Levine, “Using Tokens Built on Bitcoin to Fix DRM and Morph Software into Property,” Tokenly, https://letstalkbitcoin.com/blog/post/tokens-software-and-the-coming-drm-revolution, Jun. 1, 2015 [retrieved Dec. 13, 2018], … [cited by applicant]
Mike et al., “Contract,” Bitcoin Wiki, https://en.bitcoin.it/wiki/Contract, Aug. 10, 2017 [retrieved Feb. 5, 2018], 13 pages. [cited by applicant]
Monax, “Eris + IPFS,” Monax Blog, https://monax.io/2015/11/01/eris-and-ipfs/?redirect_from_eris=true, Nov. 16, 2016, 5 pages. [cited by applicant]
Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System,” Bitcoin, Oct. 31, 2008, https://bitcoin.org/bitcoin.pdf, 9 pages. [cited by applicant]
Satoshi et al., “Connection Limits,” Bitcoin Forum, Aug. 9, 2010, https://bitcointalk.org/index.php?topic=741.0;prev_next=prev, 2 pages. [cited by applicant]
Shomer et al., “Colored-Coins/Colored-Coins-Protocol-Specification,” GitHub, https://github.com/Colored-Coins/Colored-Coins-Protocol-Specification/wiki/Metadata, Jun. 11, 2015 (last updated Nov. 9, 2016) [retrieved Dec.… [cited by applicant]
Snow et al., “Factom Ledger by Consensus Version 1.0,” Brave New Coin, https://bravenewcoin.com/insights/factom-ledger-by-consensus, Jan. 17, 2015, 28 pages. [cited by applicant]
Snow et al., “Factom: Business Processes Secured by Immutable Audit Trails on the Blockchain Version 1.2,” factom.com, Apr. 25, 2018, 38 pages. [cited by applicant]
Stampery, “Features: Blockchain-based data certification at your fingertips,” Stampery.com, https://stampery.com/features/, archived Mar. 5, 2016 [retrieved Nov. 3, 2016], 4 pages. [cited by applicant]
UK Commercial Search Report mailed Jan. 12, 2017, Patent Application No. GB1608454.3, filed May 13, 2016, 8 pages. [cited by applicant]
UK Commercial Search Report mailed Nov. 24, 2016, Patent Application No. GB1608456.8, filed May 13, 2016, 7 pages. [cited by applicant]
UK Commercial Search Report mailed Sep. 30, 2016, Patent Application No. GB1608463.4, filed May 13, 2016, 7 pages. [cited by applicant]
UK IPO Search Report mailed Dec. 13, 2016, Patent Application No. GB1608454.3, filed May 13, 2016, 3 pages. [cited by applicant]
UK IPO Search Report mailed Dec. 15, 2016, Patent Application No. GB1608456.8, filed May 13, 2016, 3 pages. [cited by applicant]
UK IPO Search Report mailed Dec. 21, 2016, Patent Application No. GB1608463.4, filed May 13, 2016, 3 pages. [cited by applicant]
Vayngrib, “DHT hardening,” GitHub, https://github.com/tradle/about/wiki/DHT-hardening, Feb. 2, 2015 (last updated May 21, 2015) [retrieved Dec. 13, 2018], 5 pages. [cited by applicant]
Wikipedia, “File verficiation,” Wikipedia.org, https://en.wikipedia.org/wiki/File_verification, Apr. 14, 2004 (last edited Jul. 25, 2018) [retrieved Dec. 13, 2018], 3 pages. [cited by applicant]
Wikipedia, “InterPlanetary File System,” Wikipedia.org, https://en.wikipedia.org/wiki/InterPlanetary_File_System, Sep. 11, 2015 (last updated Dec. 3, 2018) [retrieved Dec. 13, 2018], 4 pages. [cited by applicant]
Willoms et al., “Using blockchain to save and verify software licensing,” Bitcoin Forum, https://bitcointalk.org/index.php?topic=671435.0, Jun. 30, 2014 [retrieved Dec. 13, 2018], 3 pages. [cited by applicant]
Zyskind et al., “Decentralizing Privacy: Using a Blockchain to Protect Personal Data,” 2015 IEEE CS Security and Privacy Workshops, May 21, 2015, 5 pages. [cited by applicant]
Zyskind et al., “Enigma: Decentralized Computation Platform with Guaranteed Privacy,” arXiv preprint arXiv:1506, Jun. 10, 2015, 14 pages. [cited by applicant]