# US 11,650,955 B2 · Systems and methods for distributed data storage and delivery using blockchain

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

- Number: US 11,650,955 B2
- Document ID: US11650955B2
- Status: Granted
- Kind: B2
- Application number: 17/192,506
- Filed: 2021-03-04
- Published: 2021-09-23
- Granted: 2023-05-16
- Earliest claimed: 2018-11-16
- Assignees: Consensus Cloud Solutions, LLC
- Applicants: Advanced Messaging Technologies, Inc.
- Inventors: Mahender Adluri; Robert Taylor
- Web page: https://patentgrep.com/patent/US11650955B2

## CPC

- G06F 16/137: {Hash-based (content-based indexing of textual data G06F16/31)}
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 21/602: {Providing cryptographic facilities or services}
- G06F 21/6209: {to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself}
- G06F 21/78: to assure secure storage of data (address-based protection against unauthorised use of memory G06F12/14; record carriers for use with machines and with at least a part designed to carry digital markings G06K19/00)
- H04L 9/0631: {Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms}
- H04L 9/0637: {Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]}
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 9/14: using a plurality of keys or algorithms
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 63/12: {Applying verification of the received information (cryptographic mechanisms or cryptographic arrangements for data integrity or data verification H04L9/32)}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 2221/2107: File encryption
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- 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

In one aspect, the present disclosure provides a system and method for distributed data storage and delivery using blockchain. For example, a file can be received from a participant and split into constituent files. A hash value for the received file and each of the constituent files can be generated, and the constituent files can be encrypted using one or more predetermined or user selected encryption keys. The encrypted files can be stored in at least one storage location. Upon receiving a file retrieval request, each file of the plurality of encrypted files can be retrieved and decrypted using the one or more predetermined or user selected encryption keys. A hash value for each decrypted file can be generated and compared to hash values for the corresponding files of the plurality of constituent files, or a hash value for the recombined constituent files can be generated and compared to the hash value for the original file. Other aspects also are described.

## Claims

### Claim 1

A method for secure data storage and delivery, comprising:
receiving a file uploaded by a user, and generating a hash value for the uploaded file;
splitting the uploaded file into a plurality of constituent files, and generating a hash value for each file of the plurality of the constituent files;
storing the plurality of constituent files in a set of one or more storage locations;
generating transaction information including at least the hash value of the uploaded file and the hash values of the plurality of constituent files and providing the transaction information to a current block in a blockchain;
combining the plurality of constituent files to generate a first recombined file;
generating a hash value for the first recombined file;
determining whether the hash value for the first recombined file matches the hash value for the uploaded file;
if the hash value for the first recombined file matches the hash value for the uploaded file,
transferring, through a network, the first recombined file to an electronic device,
generating additional transaction information including at least the hash value of the first recombined file, wherein the additional transaction information relates to the first recombined file and includes at least one of a transaction identifier, a transaction type, participant information, status information, and time information, and
providing the additional transaction information to a current block in the blockchain; and
if the hash value for the first recombined file does not match the hash value for the uploaded file,
retrieving, from a storage location of the set of one or more storage locations, a different version of a constituent file of the plurality of constituent files than a version of the constituent file used to generate the first recombined file,
combining the different version of the constituent file with a remainder of constituent files of the plurality of constituent files to generate a second recombined file, and
transferring, through the network, the second recombined file to the electronic device.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
generating an alarm, warning, or notification if the hash value for the first recombined file does not match the hash value for the uploaded file.

### Claim 3 (depends on 1)

The method of claim 1, wherein each storage location of the set of one or more storage locations is a cloud-based storage location, wherein each constituent file of the plurality of constituent files are stored in at least two cloud-based storage locations.

### Claim 4 (depends on 1)

The method of claim 1, wherein each of the plurality of constituent files are smaller than the uploaded file.

### Claim 5 (depends on 1)

The method of claim 1, wherein the transaction information relates to the uploaded file or the constituent files, and includes a transaction identifier, a transaction type, participant information, status information, and time information.

### Claim 6 (depends on 5)

The method of claim 5, wherein the transaction identifier includes the hash value for the uploaded file.

### Claim 7 (depends on 1)

The method of claim 1, wherein storing the plurality of constituent files in the set of one or more storage locations comprises storing the different version of the constituent file in the storage location.

### Claim 8 (depends on 1)

The method of claim 1, wherein generating a hash value for the uploaded file or for each of the constituent files includes applying a hash function to electronic data of the uploaded file or to electronic data of each of the constituent files, wherein the hash function comprises a SHA256 or a RIPEMD function.

### Claim 9

A system for secure data storage and delivery, comprising:
one or more processors; and
one or more non-transitory computer readable storage mediums having instructions stored therein, the instructions, when executed by the one or more processors, causes the system to:
receive an uploaded, and generate a hash value for the uploaded file;
split the uploaded file into a plurality of constituent files;
store the plurality of constituent files in a set of one or more storage locations;
generate transaction information including at least the hash value of the uploaded file and the hash values of the plurality of constituent files and provide the transaction information a current block in a blockchain;
combine the plurality of constituent files to generate a first recombined file that relates to the uploaded file;
generate a hash value for the first recombined file;
determine whether the hash value for the first recombined file matches the hash value for the uploaded file;
if the hash value for the first recombined file matches the hash value for the uploaded file,
provide the first recombined file to the user,
generate additional transaction information including at least the hash value of the first recombined file, and
provide the additional transaction information to a current block in the blockchain; and
if the hash value for the first recombined file does not match the hash value for the uploaded file,
retrieve, from a storage location of the set of one or more storage locations, a different version of a constituent file of the plurality of constituent files than a version of the constituent file used to generate the first recombined file,
combine the different version of the constituent file with a remainder of the constituent files of the plurality of constituent files to generate a second recombined file, and
transfer, through the network, the second recombined file to the electronic device.

### Claim 10 (depends on 9)

The system of claim 9, wherein the system generates an alarm, warning, or notification if the hash value for the first recombined file does not match the hash value for the uploaded file.

### Claim 11 (depends on 9)

The system of claim 9, wherein each storage location of the set of one or more storage locations is a cloud-based storage location, wherein each constituent file of the plurality of constituent files are stored in at least two cloud-based storage locations.

### Claim 12 (depends on 9)

The system of claim 9, wherein each of the plurality of constituent files are smaller than the uploaded file.

### Claim 13 (depends on 9)

The system of claim 9, wherein an encryption function is applied to electronic data of each file of the plurality of constituent files to encrypt each file of the plurality of constituent files, wherein the encryption function includes an AES256 function.

### Claim 14 (depends on 9)

The system of claim 9, wherein the transaction information relates to the uploaded file or the constituent files and includes a transaction identifier, a transaction type, participant information, status information, and time information, and wherein the additional transaction information relates to the first recombined file and includes a transaction identifier, a transaction type, participant information, status information, and time information.

### Claim 15

A method, comprising:
receiving and splitting an uploaded file into a plurality of constituent files;
storing the plurality of constituent files in a set of one or more storage locations;
generating a hash value for the uploaded file and a hash value for each constituent file of the plurality of the constituent files;
generating and providing transaction information including the hash value for the uploaded file to a current block in a blockchain;
combining the plurality of constituent files to generate a first recombined file;
generating a hash value for the first recombined file and determining whether the hash value for the first recombined file matches the hash value of the uploaded file; and
if the hash value for the first recombined file does not match the hash value for the uploaded file,
cause a storage location of the set of one or more storage locations that is storing a version of a constituent file of the plurality of constituent files to revert to a restore point that comprises a previous version of the constituent file,
combine the previous version of the constituent file with a remainder of the constituent files of the plurality of constituent files to generate a second recombined file, and
transfer, through a network, the second recombined file to an electronic device.

### Claim 16

A method, comprising:
receiving a file retrieval request from a participant;
upon receipt of the file retrieval request, retrieving, from a plurality of storage locations, a plurality of constituent files split from an original file;
combining the plurality of constituent files to generate a first recombined file;
determining whether the first recombined file corresponds to the original file by comparing a hash value of the first recombined file to a hash value of the original file;
if the hash value for the first recombined file does not match the hash value for the original file,
retrieving, from a storage location of the plurality of storage locations, a different version of a constituent file of the plurality of constituent files than a version of the constituent file used to generate the first recombined file, and
combining the different version of the constituent file with a remainder of constituent files of the plurality of constituent files to generate a second recombined file; and
generating transaction information and providing the transaction information to a current block in the blockchain.

### Claim 17 (depends on 16)

The method of claim 16, further comprising: generating an alarm, warning, or notification, if the hash value for the first recombined file does not match the hash value for the original file.

### Claim 18 (depends on 1)

The method of claim 1, further comprising:
determining whether one or more of the constituent files has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 19 (depends on 1)

The method of claim 1, further comprising:
determining whether the recombined file has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 20 (depends on 9)

The system of claim 9, wherein the instructions executed by the one or more processors further cause the system to:
determine whether one or more of the constituent files has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 21 (depends on 9)

The system of claim 9, wherein the instructions executed by the one or more processors further cause the system to:
determine whether the first recombined file has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 22 (depends on 15)

The method of claim 15, further comprising:
determining whether one or more of the constituent files has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 23 (depends on 15)

The method of claim 15, further comprising:
determining whether the recombined file has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 24 (depends on 16)

The method of claim 16, further comprising:
determining whether one or more of the constituent files has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.

### Claim 25 (depends on 16)

The method of claim 16, further comprising:
determining whether the recombined file has been corrupted, tampered with, or otherwise altered based on the hash value for the first recombined file.
