# US 2019/0318063 A1 · Software license distribution and validation using a distributed immutable data store

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0318063 A1
- Document ID: US20190318063A1
- Status: Published application
- Kind: A1
- Application number: 15/950,533
- Filed: 2018-04-11
- Published: 2019-10-17
- Earliest claimed: 2018-04-11
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: James Michael WIERZBA; Parmjeet SINGH
- Web page: https://patentgrep.com/patent/US20190318063A1

## CPC

- G06F 21/105: {Arrangements for software license management or administration, e.g. for managing licenses at corporate level}
- G06F 21/1085: {Content sharing, e.g. peer-to-peer [P2P]}
- G06F 21/645: {using a third party}
- H04L 9/30: Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L 9/3236: {using cryptographic hash functions}
- H04L 9/3242: {involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC}
- H04L 9/3247: {involving digital signatures}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- G06F 21/107: {License processing; Key processing}
- G06Q 2220/18: Licensing
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- 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

## Abstract

A license for software distributed to multiple users can be validated using a peer-to-peer network, asymmetrical cryptography and an essentially hack-proof public data store of licensing information, avoiding the need for a licensing server or central coordination by servers or host computers. Instances of the licensed software are implemented on the nodes of the peer-to-peer network. A distributed, immutable data store where each segment of data of the series of segments in the data store include a hash of the previous segment. Licensing transactions can be recorded and validated using the distributed, immutable data store. Licensing transactions can include but are not limited to provisioning, de-provisioning, activation and deactivation transactions. The license processing logic can be integrated into the licensed application software, so that once the licensed software is implemented on a user's computer, license generation, license revocation, license validation and license invalidation proceed automatically without the need for any intervention.

## Claims

### Claim 1

A software license issuer, the software license issuer issuing a license for licensed software to a node in a peer-to-peer software licensing network, the software license issuer comprising:
a memory connected to a processor; the processor configured to:
issue a transaction to the peer-to-peer software licensing network, the transaction comprising a public key used to identify the software license issuer, a digital signature for authentication of the license issuer public key and a license public key that identifies the license for the licensed software.

### Claim 2 (depends on 1)

The software license issuer of claim 1, wherein the transaction comprises a provisioning transaction, the provisioning transaction creating the license for the licensed software.

### Claim 3 (depends on 2)

The software license issuer of claim 2, wherein the provisioning transaction is valid if the license issuer public key is in the license issuer whitelist and the license public key is not provisioned.

### Claim 4 (depends on 1)

The software license issuer of claim 1, wherein the transaction comprises a de-provisioning transaction, the de-provisioning transaction revoking a license for the licensed software.

### Claim 5 (depends on 4)

The software license issuer of claim 4, wherein the de-provisioning transaction is valid if the license issuer public key is in the license issuer whitelist and the license public key is provisioned.

### Claim 6 (depends on 1)

The software license issuer of claim 1, wherein the software licenser issuer comprises a node in the peer-to-peer software licensing network.

### Claim 7

A software license holder comprising a node in a peer-to-peer software licensing network, the software license holder comprising:
a memory connected to a processor; the processor configured to:
receive from a node in the peer-to-peer software licensing network a transaction;
validate the transaction; and
in response to successful validation of the transaction, add the transaction to a segment comprising a hash of a final segment in a distributed data store, software licensing transaction data and a hash of the segment, the segment comprising a potential addition to a copy of the distributed data store at the node, the distributed data store comprising linked segments where each segment comprises a hash of a previous segment in the data store.

### Claim 8 (depends on 7)

The software license holder of claim 7, wherein the processor is further configured to release the segment for publication to the peer-to-peer software licensing network.

### Claim 9 (depends on 7)

The software license holder of claim 7, wherein in response to receiving a published segment from the peer-to-peer network, the published segment is added to the copy of the distributed data store at the node.

### Claim 10 (depends on 9)

The software license holder of claim 9, wherein the node discards the segment comprising the potential addition to the copy of the distributed data store at the node.

### Claim 11 (depends on 7)

The software license holder of claim 7, the software license holder issuing a transaction. comprising a license public key identifying the software license holder's license and a digital signature that authenticates the license public key.

### Claim 12 (depends on 11)

The software license holder of claim 11; wherein the transaction comprises an activation transaction that activates licensed software and wherein the activation transaction is valid if a license public key identifying the software license holder's license is a currently provisioned license and the license public key is not activated.

### Claim 13 (depends on 11)

The software license holder of claim 11, wherein the transaction comprises a deactivation transaction that deactivates the licensed software, wherein the deactivation transaction is valid if a license public key identifying the software license holder's license is a currently provisioned license and the license public key is activated.

### Claim 14 (depends on 7)

The software license holder of claim 7, wherein the received transaction is a provisioning transaction received from a software license issuer, the provisioning transaction comprising a public key identifying the software license issuer, a digital signature for authentication of the license issuer public key and a license public key that identifies the license; and wherein the provisioning transaction is valid if the license issuer public key is in the license issuer whitelist and the license public key is not provisioned.

### Claim 15 (depends on 7)

The software license holder of claim 7, wherein the received transaction is a de-provisioning transaction received from a software license issuer, the de-provisioning transaction comprising a public key identifying the software license issuer, a digital signature for authentication of the software license issuer public key and a license public key that identifies the license; and wherein the de-provisioning transaction is valid if the license issuer public key is in the license issuer whitelist and the license public key is provisioned.

### Claim 16

A method of using a peer-to-peer network to perform software license processing without a license server comprising:
receiving by a processor of a first node in the peer-to-peer software license processing network, the first node comprising a license holder for licensed software, the license holder comprising license holder processing logic, a copy of a whitelist of approved software issuers and a copy of a distributed data store comprising linked segments in which a subsequent segment of the distributed data store comprises a hash of a preceding segment;
receiving a transaction from a second node in the peer-to-peer software license processing network;
in response to successful validation of the transaction, adding the transaction to a segment at the first node, the segment comprising a potential addition to the distributed data store, where the segment at the first node comprises a hash of a final segment in the copy of the distributed data store at the first node, licensing transaction data and a hash of the segment at the first node.

### Claim 17 (depends on 16)

The method of claim 16, further comprising generating an activation transaction comprising a license public key identifying the license holder's license and a digital signature that authenticates the license public key; and wherein the activation transaction is valid if a license public key identifying the license holder's license is a currently provisioned license and the license public key is not activated.

### Claim 18 (depends on 16)

The method of claim 16, further comprising generating a deactivation transaction comprising a license public key identifying the license holder's license and a digital signature that authenticates the license public key and wherein the deactivation transaction is valid if a license public key identifying the license holder's license is a currently provisioned license and the license public key is activated.

### Claim 19 (depends on 16)

The method of claim 16, wherein the second node comprises a license issuer and the transaction is a provisioning transaction received from the license issuer, the provisioning transaction comprising a public key identifying the license issuer, a digital signature for authentication of the license issuer public key and a license public key that identifies the license;
and wherein the provisioning transaction is valid if the license issuer public key is in the license issuer whitelist and the license public key is not provisioned.

### Claim 20 (depends on 16)

The method of claim 16, wherein the second node comprises a license issuer and the transaction is a de-provisioning transaction received from a license issuer, the de-provisioning transaction comprising a public key identifying the license issuer, a digital signature for authentication of the license issuer public key and a license public key that identifies the license; and wherein the de-provisioning transaction is valid if the license issuer public key is in the license issuer whitelist and the license public key is provisioned.
