Systems and methods for encrypting data in backend storage caches shared by multiple decentralized applications
AssigneeBlockstack PBC
InventorsYukan Liao, Matthew Little, Jude Nelson, Aaron Blankstein
Life of this patent
Estimating the term…
Abstract
In a decentralized system based on a blockchain, a storage server directs the off-chain storage of shared data for multiple decentralized applications in data caches on a backend storage provider, such that a user's client and any authorized decentralized applications can access encrypted data in the data caches, but the storage server performs no encryption of that data and is not exposed to encryption keys and unauthorized decentralized applications cannot access the encrypted data.
Claims20
In a blockchain-based network, a storage server configured to communicate with a storage provider that is configured to store encrypted data outside of a blockchain of the blockchain-based network, the storage server comprising:
- one or more network interfaces configured to couple the storage server to a user client, the storage provider, and an application client;
- a hardware processor;
- and
- a first non-transitory computer readable storage medium configured to store resource identifiers corresponding to resources on the storage provider, the resources comprising
- application-specific data lockers configured to store application data for a plurality of decentralized applications, each of the plurality of decentralized applications having an application-specific data locker that is accessible by the respective decentralized application and no other decentralized applications in the plurality of decentralized applications, and
- a data cache configured to store shared data for first authorized decentralized applications of the plurality of decentralized applications,
- a second non-transitory computer readable storage medium configured to store program instructions for execution by the hardware processor in order to cause the storage server to
- for each decentralized application of the first authorized decentralized applications,
- receive, from the user client, an encryption key encrypted with an application-specific private key known by the respective decentralized application and the user client and not known by the storage server, and
- store the encrypted encryption key in the application-specific data locker associated with the respective decentralized application,
- receive, from the user client, a first encryption key identifier that identifies the encryption key,
- store the first encryption key identifier in the data cache,
- receive, from the application client, a second encryption key identifier and a request to access the data cache for a requesting decentralized application of the plurality of decentralized applications,
- compare the first encryption key identifier and the second encryption key identifier,
- determine that the first encryption key identifier is inconsistent with the second encryption key identifier, and
- based on the determination, transmit to the requesting application client a message indicating that the request to access the data cache is denied.
A computer-implemented method comprising:
- under the control of a storage server that is configured to store resource identifiers corresponding to resources on a storage provider that stores encrypted data outside of a blockchain of a blockchain-based network, the resources comprising
- application-specific data lockers configured to store application data for a plurality of decentralized applications, each of the plurality of decentralized applications having an application-specific data locker that the respective decentralized application can write to and read from, and
- a data cache configured to store shared data for authorized decentralized applications of the plurality of decentralized applications,
- for each of decentralization application of the authorized decentralized applications,
- receiving from a user client, an encryption key encrypted with an application-specific private key known by the respective decentralized application and the user client and not known by the storage server, and
- storing the encrypted encryption key in the application-specific data locker associated with the respective decentralized application;
- receiving, from the user client, a first encryption key identifier that identifies the encryption key;
- storing the first encryption key identifier in the data cache;
- receiving, from an application client associated with a requesting decentralized application, a second encryption key identifier and a request to write data to or read data from the data cache;
- comparing the first encryption key identifier and the second encryption key identifier;
- determining that the first encryption key identifier is inconsistent with the second encryption key identifier;
- and
- based on the determination, returning to the requesting application client the encrypted encryption key from the application-specific data locker associated with the requesting decentralized application to allow the requesting application to write encrypted data to the data cache with the encryption key.
Non-transitory, computer-readable storage media comprising computer-executable instructions for managing encrypted data outside of a blockchain of a blockchain-based network in a data cache on a storage provider with a storage server that stores no encryption keys for encrypting the encrypted data, wherein the computer-executable instructions, when executed by a computer system, cause the storage server to:
- for each decentralization application of a plurality of authorized decentralized applications associated with an application client,
- receive, from a user client, an encryption key encrypted with an application-specific private key known by the respective decentralized application and the user client, and
- transmit, to the storage provider, the encrypted encryption key via a data locker identifier stored on the storage provider, the data locker identifier corresponding with an application-specific data locker on the storage provider uniquely associated with the respective decentralized application;
- receive, from the user client, a first encryption key identifier that identifies the encryption key;
- store the first encryption key identifier in the data cache;
- receive, from the application client, a second encryption key identifier and a read or write request associated with a requesting decentralized application;
- compare the first encryption key identifier and the second encryption key identifier;
- determine that the first encryption key identifier is inconsistent with the second encryption key identifier;
- and
- based on the determination, transmit to the requesting application client a message indicating that the request to access the data cache is denied.
Dependencies are inferred from the claim text.