# US 12,001,523 B2 · Software access through heterogeneous encryption

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

- Number: US 12,001,523 B2
- Document ID: US12001523B2
- Status: Granted
- Kind: B2
- Application number: 17/036,577
- Filed: 2020-09-29
- Published: 2022-03-31
- Granted: 2024-06-04
- Earliest claimed: 2020-09-29
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Marco Simioni; Stefano Braghin
- Web page: https://patentgrep.com/patent/US12001523B2

## CPC

- G06F 21/105: {Arrangements for software license management or administration, e.g. for managing licenses at corporate level}
- G06F 9/44521: {Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading}
- G06F 21/602: {Providing cryptographic facilities or services}
- H04L 9/0819: {Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) (network architectures or network communication protocols for key distribution in a packet data network H04L63/062)}
- H04L 9/0863: {involving passwords or one-time passwords (network architectures or network communication protocols for using one-time keys in a packet data network H04L63/067)}
- G06F 21/107: {License processing; Key processing}
- 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)

## Abstract

A first copy of a heterogeneous program payload is provided to a first computing device. The heterogeneous program payload contains an unencrypted component and a set of one or more encrypted components. The set of encrypted components corresponding to a set of one or more programs. The unencrypted component of the heterogeneous program payload includes loader program code configured to receive a first license key. The loader program code is configured to, in response to receiving the first license key, perform a decryption action against the set of encrypted components of the heterogeneous program payload.

## Claims

### Claim 1

A method comprising:
generating, from a set of programs and based on a first encryption process with a primary key and with a set of program attributes, a heterogeneous program payload, the heterogeneous program payload containing an unencrypted component and a set of encrypted components, the set of encrypted components corresponding to a set of one or more programs, the unencrypted component of the heterogeneous program payload including loader program code configured to receive a first license key, wherein the set of program attributes correspond to the set of programs, wherein each program attribute of the set of program attributes identifies a corresponding program of the set of programs, the loader program code configured to, in response to receiving the first license key, perform a decryption action against the set of encrypted components of the heterogeneous program payload, the result of the decryption action dependent on encrypted program attributes in the first license key;
providing, to a first computing device, a first copy of the heterogeneous program payload;
generating, based on a second encryption process with the primary key and with a first subset of the set of program attributes, the first license key, wherein the first license key contains a first set of one or more encrypted program attributes that correspond to a first subset of the set of encrypted components.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the first subset of the set of program attributes is the same as the set of program attributes, and
the first subset of the set of encrypted components is the same as the set of encrypted components.

### Claim 3 (depends on 1)

The method of claim 1, wherein a first encrypted component of the of encrypted components is a first program, and wherein a second encrypted component of the encrypted components is a feature of the first program.

### Claim 4 (depends on 1)

The method of claim 1, wherein the method further comprises:
providing, to the first computing device, the first license key.

### Claim 5 (depends on 4)

The method of claim 4, wherein the loader program code is further configured to:
receive a first program execution instruction, the first program execution instruction directed to a first program encrypted in a first component of the encrypted components.

### Claim 6 (depends on 5)

The method of claim 5, wherein the decryption action comprises:
determining, by the loader program code, an invalidity of the first license key; and
denying, by the loader program code and in response to the invalidity, the first program execution instruction.

### Claim 7 (depends on 5)

The method of claim 5, wherein the decryption action comprises:
determining, by the loader program code, a validity of the first license key; and
loading, by the loader program code and in response to the validity and based on the first program execution instruction, the first program into memory for execution by a processor.

### Claim 8 (depends on 7)

The method of claim 7, wherein the method further comprises:
providing, to a second computing device, a second license key, wherein:
the second license key contains a second set of one or more encrypted program attributes that correspond to the first subset of the one or more encrypted components, and
the second set of one or more encrypted program attributes are not the same as the first subset of the one or more encrypted program attributes; and
providing, to the second computing device, a second copy of the heterogeneous program payload.

### Claim 9 (depends on 8)

The method of claim 8, wherein the loader program code of the second copy of the heterogeneous program payload configured to:
receive a second program execution instruction, the second program execution instruction directed to the first program encrypted in the first encrypted component of the set of encrypted components of the second copy of the heterogeneous program payload;
receive the second license key;
determine a second invalidity of the second license key; and
deny, in response to the second invalidity, the second program execution instruction.

### Claim 10 (depends on 8)

The method of claim 8, wherein the loader program code of the second copy of the second copy of the heterogeneous program payload configured to:
receive a second program execution instruction, the second program execution instruction directed to the first program encrypted in the first encrypted component of the set of encrypted components of the second copy of the heterogeneous program payload;
receive the second license key:
determine a validity of the second license key; and
load, in response to the validity and based on the second program execution instruction, the first program into memory for execution by a processor.

### Claim 11

A system, the system comprising:
a memory, the memory containing one or more instructions; and
a processor, the processor communicatively coupled to the memory, the processor, in response to reading the one or more instructions, configured to:
generating, from a set of programs and based on a first encryption process with a primary key and with a set of program attributes, a heterogeneous program payload, the heterogeneous program payload containing an unencrypted component and a set of encrypted components, the set of encrypted components corresponding to a set of one or more programs, the unencrypted component of the heterogeneous program payload including loader program code configured to receive a first license key, wherein the set of program attributes correspond to the set of programs, wherein each program attribute of the set of program attributes identifies a corresponding program of the set of programs, the loader program code configured to, in response to receiving the first license key, perform a decryption action against the set of encrypted components of the heterogeneous program payload, the result of the decryption action dependent on encrypted program attributes in the first license key;
provide, to a first computing device, a first copy of the heterogeneous program payload;
generating, based on a second encryption process with the primary key and with a first subset of the set of program attributes, the first license key, wherein the first license key contains a first set of one or more encrypted program attributes that correspond to a first subset of the set of encrypted components.

### Claim 12 (depends on 11)

The system of claim 11, wherein the processor is further configured to:
provide the first license key to the first computing device.

### Claim 13 (depends on 12)

The system of claim 12, wherein the loader program code is further configured to:
receive a first program execution instruction, the first program execution instruction directed to a first program encrypted in a first component of the encrypted components.

### Claim 14 (depends on 13)

The system of claim 13, wherein the decryption action comprises:
determining, by the loader program code, an invalidity of the first license key; and
denying, by the loader program code and in response to the invalidity, the first program execution instruction.

### Claim 15

A computer program product, the computer program product comprising:
one or more computer readable storage media; and
program instructions collectively stored on the one or more computer readable storage media, the program instructions executable by one or more processors to cause the one or more processors to:
generate, from a set of programs and based on a first encryption process with a primary key and with a set of program attributes, a heterogeneous program payload, the heterogeneous program payload containing an unencrypted component and a set of encrypted components, the set of encrypted components corresponding to a set of one or more programs, the unencrypted component of the heterogeneous program payload including loader program code configured to receive a first license key, wherein the set of program attributes correspond to the set of programs, wherein each program attribute of the set of program attributes identifies a corresponding program of the set of programs, the loader program code configured to, in response to receiving the first license key, perform a decryption action against the set of encrypted components of the heterogeneous program payload, the result of the decryption action dependent on encrypted program attributes in the first license key;
provide, to a first computing device, a first copy of the heterogeneous program payload;
generate, based on a second encryption process with the primary key and with a first subset of the set of program attributes, the first license key, wherein the first license key contains a first set of one or more encrypted program attributes that correspond to a first subset of the set of encrypted components.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein:
the first subset of the set of program attributes is the same as the set of program attributes, and
the first subset of the set of encrypted components is the same as the set of encrypted components.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein a first encrypted component of the of encrypted components is a first program, and wherein a second encrypted component of the encrypted components is a feature of the first program.

### Claim 18 (depends on 15)

The computer program product of claim 15, wherein the program instructions are further executable by one or more processors to cause the one or more processors to provide, to the first computing device, the first license key.

### Claim 19 (depends on 18)

The computer program product of claim 18, wherein the loader program code is further configured to receive a first program execution instruction, the first program execution instruction directed to a first program encrypted in a first component of the encrypted components.

### Claim 20 (depends on 19)

The computer program product of claim 19, wherein the decryption action comprises:
determining, by the loader program code, an invalidity of the first license key; and
denying, by the loader program code and in response to the invalidity, the first program execution instruction.
