IP Library › Granted Patent US 11,362,807
Granted Patent B2
US 11,362,807 · App. 16/540,824 · Granted Jun 14, 2022

Sealed distributed ledger system

Inventor: Michael Christopher Hearn (London, GB)
Assignee: R3 LLC
H04L9/0637G06F16/2379H04L9/0819H04L9/3073H04L2209/38
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 11,362,807
App. No.
16/540,824
Granted
Jun 14, 2022
Kind
B2
Abstract

A system for ensuring privacy of transactions is provided. The system may be performed by a computing system during execution of trusted code within a secure enclave of the computing system. The system receives an indication of a transaction. The system validates the transaction. The system encrypts the validated transaction using an encryption key of the trusted code. The system requests untrusted code of the computing system to store the encrypted validated transaction in a portion of a data store. The untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store. Rather, only the trusted code can decrypt the encrypted validated transaction.

Claims (112)

1. A method performed by a computing system during execution of trusted code of a secure enclave of the computing system for ensuring privacy of transactions, the method comprising:

receiving an indication of a transaction;

validating the transaction;

encrypting the validated transaction using an encryption key of the trusted code;

requesting untrusted code of the computing system to store the encrypted validated transaction in a portion of a data store wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store;

receiving a request from other trusted code of a secure enclave of another computing system to provide the transaction; and

in response to receiving the request from the other trusted code,

requesting the untrusted code to provide the encrypted validated transaction to the trusted code; and

upon being provided the encrypted validated transaction, decrypting the encrypted validated transaction using a decryption key of the trusted code that corresponds to the encryption key.

2. The method of claim 1 wherein the other trusted code sends the request to provide the transaction during validation of another transaction.

3. The method of claim 1 further comprising encrypting the decrypted validated transaction using a send encryption key and sending the encrypted validated transaction to the other trusted code so that the other trusted code can decrypt the encrypted validated transaction using a send decryption key corresponding to the send encryption key.

4. The method of claim 3 wherein the send encryption key and the send decryption key are a symmetric keypair.

5. The method of claim 3 wherein the send encryption key and the send decryption key are a public/private keypair.

6. The method of claim 3 wherein the trusted code and the other trusted code establish a secure connection and wherein the encrypted validated transaction is sent via the secure connection.

7. A method performed by a computing system during execution of trusted code within a secure enclave of the computing system for ensuring privacy of transactions, the method comprising:

receiving an indication of a transaction;

validating the transaction;

encrypting the validated transaction using an encryption key of the trusted code; and

requesting untrusted code of the computing system to store the encrypted validated transaction in a portion of a data store;

wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store,

wherein the transaction includes an input state that is an output state of another transaction,

wherein the validating of the transaction comprises:

requesting the untrusted code to provide the other transaction; and

receiving an encrypted form of the other transaction, and

wherein the untrusted code retrieves the encrypted form of the other transaction from the data store and provides the encrypted form to the trusted code, and the trusted code decrypts the encrypted form.

8. A method performed by a computing system during execution of trusted code of a secure enclave of the computing system for ensuring privacy of transactions, the method comprising:

receiving an indication of a transaction;

validating the transaction;

encrypting the validated transaction using an encryption key of the trusted code; and

requesting untrusted code of the computing system to store the encrypted validated transaction in a portion of a data store;

wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store,

wherein the transaction includes an input state that is an output state of another transaction, and

wherein the validating of the transaction comprises:

requesting the untrusted code to provide the other transaction;

receiving from the untrusted code an indication that the other transaction is not stored in the data store; and

requesting other trusted code of a secure enclave of another computing system to provide the other transaction, wherein an encrypted form of the other transaction is provided by the other trusted code.

9. The method of claim 8 wherein the encryption key is a private key of a public/private keypair.

10. The method of claim 8 wherein the transaction has an output state and further comprising sending the output state to the untrusted code.

11. A method performed by a computing system during execution of untrusted code for supporting secure storage of transactions, the computing system being a node that maintains a portion of a sealed distributed ledger, the method comprising:

receiving an encrypted transaction from trusted code of a secure enclave of the computing system, the encrypted transaction encrypted with an encryption key of the trusted code;

storing the encrypted transaction in the portion of the sealed distributed ledger;

receiving from the trusted code a request for the encrypted transaction;

retrieving the encrypted transaction from the portion of the sealed distributed ledger;

providing the encrypted transaction to the trusted code;

receiving from the trusted code a request for another transaction; and

when the other transaction is not stored in the portion of the sealed distributed ledger, notifying the trusted code that the other transaction is not stored in the portion of the sealed distributed ledger;

wherein the trusted code requests other trusted code of a secure enclave of another node to provide the other transaction.

12. One or more computing systems that, during execution of trusted code within a secure enclave of the one or more computing systems, ensure privacy of transactions, the one or more computing systems comprising:

one or more computer-readable storage mediums storing computer-executable instructions for controlling the one or more computing systems to:

encrypt a validated transaction using an encryption key of the trusted code;

request untrusted code of the one or more computing systems to store the encrypted validated transaction in a portion of a data store, wherein the untrusted code cannot decrypt the encrypted validated transaction;

receive a request from other trusted code of a secure enclave of another computing system to provide the transaction;

in response to receiving the request from the other trusted code, request the untrusted code to provide the encrypted validated transaction to the trusted code; and

upon being provided the encrypted validated transaction, decrypt the encrypted validated transaction using a decryption key of the trusted code that corresponds to the encryption key; and

one or more processors for executing the computer-executable instructions stored in the one or more computer-readable storage mediums.

13. The one or more computing systems of claim 12 wherein the other trusted code sends the request to provide the transaction during validation of another transaction.

14. One or more computing systems that, during execution of trusted code within a secure enclave of the one or more computing systems, ensure privacy of transactions, the one or more computing systems comprising:

one or more computer-readable storage mediums storing computer-executable instructions for controlling the one or more computing systems to:

encrypt a validated transaction using an encryption key of the trusted code;

request untrusted code of the one or more computing systems to store the encrypted validated transaction in a portion of a data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store;

encrypt the validated transaction using a send encryption key; and

send the encrypted validated transaction to other trusted code so that the other trusted code can decrypt the encrypted validated transaction using a send decryption key corresponding to the send encryption key; and

one or more processors for executing the computer-executable instructions stored in the one or more computer-readable storage mediums.

15. The one or more computing systems of claim 14 wherein the trusted code and the other trusted code establish a secure connection and wherein the encrypted validated transaction is sent via the secure connection.

16. One or more computing systems that, during execution of trusted code within a secure enclave of the one or more computing systems, ensure privacy of transactions, the one or more computing systems comprising:

one or more computer-readable storage mediums storing computer-executable instructions for controlling the one or more computing systems to:

validate a transaction that includes an input state that is an output state of another transaction, the validating including:

requesting untrusted code to provide the other transaction,

receiving an encrypted form of the other transaction wherein the untrusted code retrieves the encrypted form of the other transaction from a data store, and

decrypting the encrypted form of the other transaction;

encrypt the validated transaction using an encryption key of the trusted code; and

request the untrusted code to store the encrypted validated transaction in the data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store; and

one or more processors for executing the computer-executable instructions stored in the one or more computer-readable storage mediums.

17. One or more computing systems that, during execution of trusted code within a secure enclave of the one or more computing systems, ensure privacy of transactions, the one or more computing systems comprising:

one or more computer-readable storage mediums storing computer-executable instructions for controlling the one or more computing systems to:

validate a transaction that includes an input state that is an output state of another transaction, the validating including:

requesting untrusted code to provide the other transaction,

receiving from the untrusted code an indication that the other transaction is not stored in a data store,

requesting other trusted code of a secure enclave of another computing system to provide the other transaction, wherein an encrypted form of the other transaction is provided by the other trusted code, and

receiving the encrypted form of the other transaction;

encrypt the validated transaction using an encryption key of the trusted code; and

request the untrusted code to store the encrypted validated transaction in the data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store; and

one or more processors for executing the computer-executable instructions stored in the one or more computer-readable storage mediums.

18. One or more computer-readable storage mediums storing computer-executable instructions that, during execution of trusted code within a secure enclave of one or more computing systems, ensure privacy of transactions, the computer-executable instructions including instructions to:

encrypt a validated transaction using an encryption key of the trusted code;

request untrusted code of the one or more computing systems to store the encrypted validated transaction in a data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store;

receive a request from other trusted code of a secure enclave of another computing system to provide the transaction; and

in response to receiving the request from the other trusted code,

request the untrusted code to provide the encrypted validated transaction to the trusted code; and

upon being provided the encrypted validated transaction, decrypt the encrypted validated transaction using a decryption key of the trusted code that corresponds to the encryption key.

19. The one or more computer-readable storage mediums of claim 18 wherein the other trusted code sends the request to provide the transaction during validation of another transaction.

20. One or more computer-readable storage mediums storing computer-executable instructions that, during execution of trusted code within a secure enclave of one or more computing systems, ensure privacy of transactions, the computer-executable instructions including instructions to:

encrypt a validated transaction using an encryption key of the trusted code;

request untrusted code of the one or more computing systems to store the encrypted validated transaction in a portion of a data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the data store;

encrypt the validated transaction using a send encryption key; and

send the encrypted validated transaction to other trusted code so that the other trusted code can decrypt the encrypted validated transaction using a send decryption key corresponding to the send encryption key.

21. The one or more computer-readable storage mediums of claim 20 wherein the trusted code and the other trusted code establish a secure connection and wherein the encrypted validated transaction is sent via the secure connection.

22. One or more computer-readable storage mediums storing computer-executable instructions that, during execution of trusted code within a secure enclave of a computing system, ensure privacy of transactions, the computer-executable instructions comprising instructions that:

validate a transaction that includes an input state that is an output state of another transaction, the validating including:

requesting untrusted code to provide the other transaction,

receiving an encrypted form of the other transaction, wherein the untrusted code retrieves the encrypted form of the other transaction from a portion of a data store, and

decrypting the encrypted form of the other transaction;

encrypt the validated transaction using an encryption key of the trusted code; and

request the untrusted code to store the encrypted validated transaction in another portion of the data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the other portion of the data store.

23. One or more computer-readable storage mediums storing computer-executable instructions that, during execution of trusted code within a secure enclave of a computing system, ensure privacy of transactions, the computer-executable instructions comprising instructions that:

validate a transaction that includes an input state that is an output state of another transaction, the validating including:

requesting untrusted code to provide the other transaction;

receiving from the untrusted code an indication that the other transaction is not stored in a portion of the data store;

requesting other trusted code of a secure enclave of another computing system to provide the other transaction, wherein an encrypted form of the other transaction is stored in another portion of the data store and is provided by the other trusted code; and

receiving the encrypted form of the other transaction;

encrypt the validated transaction using an encryption key of the trusted code; and

request the untrusted code to store the encrypted validated transaction in the portion of the data store, wherein the untrusted code cannot decrypt the encrypted validated transaction that is stored in the portion of the data store.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2019
From: HEARN, MICHAEL CHRISTOPHER
To: R3 LTD.
Reel/Frame 050384/0969 →
Continuity (1)
Related Publication 20210050990A1 · Feb 18, 2021