IP Library Granted Patent US 12,301,724
Granted Patent B2
US 12,301,724 · App. 18/180,078 · Granted May 13, 2025

Using a tree structure to segment and distribute records across one or more decentralized, acyclic graphs of cryptographic hash pointers

Inventors: Christopher Edward Struttmann (Indialantic, FL); James Douglas Beecham (Austin, TX)
Assignee: ALTR Solutions, Inc.
H04L9/3242G06F16/9024G06F21/602G06F21/64G06F21/78H04L9/0637H04L9/3239H04L9/50
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 12,301,724
App. No.
18/180,078
Granted
May 13, 2025
Kind
B2
Abstract

Provided is a process including: receiving, with one or more processors, a first request to store a record from a computing entity; encoding, with one or more processors, the record in a first plurality of segments; arranging, with one or more processors, the first plurality of segments in respective content nodes of a first content graph, wherein at least some content nodes of the first content graph have two or more content edges of the first content graph pointing to two or more respective other content nodes of the first content graph; and storing, with one or more processors, the content nodes of the first content graph in a verification graph.

Claims (144)

1. A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations configured to expedite retrieval of records written to persistent storage, the operations comprising:

receiving, with one or more processors, a first request to store a record from a computing entity;

encoding, with one or more processors, the record in a first plurality of segments;

arranging, with one or more processors, the first plurality of segments in respective content nodes of a first content graph, wherein:

each segment is stored in a different content node of the first content graph;

directed content edges of the first content graph connect respective pairs of the content nodes of the first content graph;

the directed content edges define a plurality of directed paths through the first content graph by which each of the segments is reachable from a first root content node of the first content graph; and

at least some content nodes of the first content graph have two or more directed content edges of the first content graph pointing to two or more respective other content nodes of the first content graph;

storing, with one or more processors, the content nodes of the first content graph in a verification graph, wherein:

the verification graph comprises a plurality of verification nodes;

the content nodes and the directed content edges are stored as content of the verification nodes; and

respective pairs of the verification nodes are connected by respective directed verification edges; and

returning, with one or more processors, a first identifier of the first root content node to the computing entity, wherein the first identifier identifies a verification node of the verification graph storing the first root content node.

2. The medium of claim 1 , wherein:

the first content graph includes a binary tree that accounts for at least half of the content nodes of the first content graph.

3. The medium of claim 2 , wherein:

the first content graph is a balanced binary tree.

4. The medium of claim 1 , wherein:

the first content graph includes a skip list defined by the directed content edges of the first content graph.

5. The medium of claim 1 , wherein:

the first content graph defines k-ary tree in which each content node of the k-ary tree has fewer k or fewer child content nodes, wherein k is 3 or larger.

6. The medium of claim 5 , wherein:

the first content graph includes three or more levels of hierarchy.

7. The medium of claim 5 , wherein:

at least half of the content nodes of the k-ary tree have 2 or more child nodes.

8. The medium of claim 5 , wherein arranging the first plurality of segments in the first content graph comprises iteratively, in a plurality of iterations, executing operations comprising:

obtaining a set of the first plurality of segments to be arranged;

determining a size of the set;

selecting 1/k of the size of the set from the set to form a selected subset;

arranging the selected subset in a current level of a hierarchy of the first content graph;

removing the selected subset from the set of the first plurality of segments to be arranged; and

designating a next level higher than the current level of the hierarchy as the current level.

9. The medium of claim 8 , wherein:

the selected subset is a sequential collection of segments of the record;

the selected subset precedes unselected members of the set in the record; and

a last segment of the record is stored in the first root content node.

10. The medium of claim 1 , wherein:

the first content graph comprises means for storing segmented data to facilitate concurrent retrieval.

11. The medium of claim 1 , wherein:

the record is a file;

the first identifier distinguishes the first root content node from other content nodes of the first content graph; and

the first request is a request to write the file to persistent storage from a security driver of an operating system of a user computing device.

12. The medium of claim 1 , the operations comprising:

receiving a second request to store a revised version of the record from the computing entity, the second request being associated with the first identifier of the first root content node;

encoding the revised version of the record in a second plurality of revised segments, wherein a first subset of the revised segments are identical to corresponding ones of the first plurality of segments and a second subset of the revised segments are different from corresponding ones of the first plurality of segments;

arranging the second subset in a second content graph that partially overlaps the first content graph, wherein:

the overlap includes at least some content nodes storing respective segments of the first subset previously stored in the verification graph;

the second content graph includes a second root content node;

the second content graph does not include the first root content node;

both content nodes storing the second subset and the at least some content nodes storing respective segments of the first subset are reachable in the second content graph from the second root content node; and

content nodes storing the second subset are not reachable from the first root content node of the first content graph;

storing the second subset in the verification graph without re-writing the at least some content nodes storing respective segments of the first subset to the verification graph; and

returning a second identifier of the second root content node to the computing entity.

13. The medium of claim 12 , the operations further comprising:

identifying the second subset by comparing respective cryptographic hashes of the first plurality of segments and the revised segments without retrieving the record from storage in the verification graph.

14. The medium of claim 1 , wherein:

the respective directed verification edges correspond to cryptographic hash pointers based on content of respective verification nodes to which respective cryptographic hash pointers point; and

content of verification nodes includes respective cryptographic hash values of respective cryptographic hash pointers of respective edges of respective verification nodes.

15. The medium of claim 1 , wherein:

the verification graph includes a plurality of different directed acyclic graphs of cryptographic hash pointers; and

different portions of the first content graph are stored as content of verification nodes of the different directed acyclic graphs of cryptographic hash pointers.

16. The medium of claim 1 , wherein:

encoding the record in a first plurality of segments comprises partitioning a bitstream of a file into the first plurality of segments; and

segments of the first plurality of segments are respective subsequences of the bitstream.

17. The medium of claim 1 , wherein:

encoding the record in the first plurality of segments comprises applying linear coding to the record.

18. The medium of claim 1 , the operations further comprising:

receiving a request to read the record from persistent storage, the request including the first identifier of the first root content node; and

traversing the first content graph from the first root content node to retrieve every content node of the first content graph from the verification graph, wherein at least some of the content nodes are retrieved concurrently.

19. The medium of claim 1 , wherein:

read latency of the record from the verification graph scales at less than O (n) in big O notation, where n is a number of segments of the first purality of segments; and

traversing the first content graph comprises performing a breadth first traversal of the first content graph.

20. A method, comprising:

receiving, with one or more processors, a first request to store a record from a computing entity;

encoding, with one or more processors, the record in a first plurality of segments;

arranging, with one or more processors, the first plurality of segments in respective content nodes of a first content graph, wherein:

each segment is stored in a different content node of the first content graph;

directed content edges of the first content graph connect respective pairs of the content nodes of the first content graph;

the directed content edges define a plurality of directed paths through the first content graph by which each of the segments is reachable from a first root content node of the first content graph; and

at least some content nodes of the first content graph have two or more directed content edges of the first content graph pointing to two or more respective other content nodes of the first content graph;

storing, with one or more processors, the content nodes of the first content graph in a verification graph, wherein:

the verification graph comprises a plurality of verification nodes;

the content nodes and directed content edges are stored as content of the verification nodes; and

respective pairs of the verification nodes are connected by respective directed verification edges; and

returning, with one or more processors, a first identifier of the first root content node to the computing entity, wherein the first identifier identifies a verification node of the verification graph storing the first root content node.

21. The method of claim 20 , wherein:

the first content graph includes a binary tree that accounts for at least half of the content nodes of the first content graph.

22. The method of claim 21 , wherein:

the first content graph is a balanced binary tree.

23. The method of claim 20 , wherein:

the first content graph includes a skip list defined by the directed content edges of the first content graph.

24. The method of claim 20 , wherein:

the first content graph defines k-ary tree in which each content node of the k-ary tree has fewer k or fewer child content nodes, wherein k is 3 or larger.

25. The method of claim 24 , wherein:

the first content graph includes three or more levels of hierarchy.

26. The method of claim 24 , wherein:

at least half of the content nodes of the k-ary tree have 2 or more child nodes.

27. The method of claim 24 , wherein arranging the first plurality of segments in the first content graph comprises iteratively, in a plurality of iterations:

obtaining a set of the first plurality of segments to be arranged;

determining a size of the set;

selecting 1/k of the size of the set from the set to form a selected subset;

arranging the selected subset in a current level of a hierarchy of the first content graph;

removing the selected subset from the set of the first plurality of segments to be arranged; and

designating a next level higher than the current level of the hierarchy as the current level.

28. The method of claim 27 , wherein:

the selected subset is a sequential collection of segments of the record;

the selected subset precedes unselected members of the set in the record; and

a last segment of the record is stored in the first root content node.

29. The method of claim 20 , wherein:

the first content graph comprises means for storing segmented data to facilitate concurrent retrieval.

30. The method of claim 20 , wherein:

the record is a file;

the first identifier distinguishes the first root content node from other content nodes of the first content graph; and

the first request is a request to write the file to persistent storage from a security driver of an operating system of a user computing device.

31. The method of claim 20 , further comprising:

receiving a second request to store a revised version of the record from the computing entity, the second request being associated with the first identifier of the first root content node;

encoding the revised version of the record in a second plurality of revised segments, wherein a first subset of the revised segments are identical to corresponding ones of the first plurality of segments and a second subset of the revised segments are different from corresponding ones of the first plurality of segments;

arranging the second subset in a second content graph that partially overlaps the first content graph, wherein:

the overlap includes at least some content nodes storing respective segments of the first subset previously stored in the verification graph;

the second content graph includes a second root content node;

the second content graph does not include the first root content node;

both content nodes storing the second subset and the at least some content nodes storing respective segments of the first subset are reachable in the second content graph from the second root content node; and

content nodes storing the second subset are not reachable from the first root content node of the first content graph;

storing the second subset in the verification graph without re-writing the at least some content nodes storing respective segments of the first subset to the verification graph; and

returning a second identifier of the second root content node to the computing entity.

32. The method of claim 31 , further comprising:

identifying the second subset by comparing respective cryptographic hashes of the first plurality of segments and the revised segments without retrieving the record from storage in the verification graph.

33. The method of claim 20 , wherein:

the respective directed verification edges correspond to cryptographic hash pointers based on content of respective verification nodes to which respective cryptographic hash pointers point; and

content of verification nodes includes respective cryptographic hash values of respective cryptographic hash pointers of respective edges of respective verification nodes.

34. The method of claim 20 , wherein:

the verification graph includes a plurality of different directed acyclic graphs of cryptographic hash pointers; and

different portions of the first content graph are stored as content of verification nodes of the different directed acyclic graphs of cryptographic hash pointers.

35. The method of claim 20 , wherein:

encoding the record in the first plurality of segments comprises partitioning a bitstream of a file into the first plurality of segments; and

segments of the first plurality of segments are respective subsequences of the bitstream.

36. The method of claim 20 , wherein:

encoding the record in the first plurality of segments comprises applying linear coding to the record.

37. The method of claim 20 , further comprising:

receiving a request to read the record from persistent storage, the request including the first identifier of the first root content node; and

traversing the first content graph from the first root content node to retrieve every content node of the first content graph from the verification graph, wherein at least some of the content nodes are retrieved concurrently.

38. The method of claim 20 , wherein:

read latency of the record from the verification graph scales at less than O(n) in big O notation, where n is a number of segments of the first plurality of segments; and

traversing the first content graph comprises performing a breadth first traversal of the first content graph.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2023
From: STRUTTMANN, CHRISTOPHER EDWARD; BEECHAM, JAMES DOUGLAS
To: ALTR SOLUTIONS, INC.
Reel/Frame 064810/0943 →
Continuity (11)
Continuation 17584088 · Jan 25, 2022
Continuation 17143009 · Jan 6, 2021
Continuation 16669337 · Oct 30, 2019
Continuation 16211057 · Dec 5, 2018
Continuation 15917616 · Mar 10, 2018
Continuation In Part 15675519 · Aug 11, 2017
Continuation In Part 15171347 · Jun 2, 2016
Provisional Application 62469742 · Mar 10, 2017
Provisional Application 62374307 · Aug 12, 2016
Provisional Application 62169823 · Jun 2, 2015
Related Publication 20230336357A1 · Oct 19, 2023
References Cited (47)
US 7287166B1 · Chang · 2007 [cited by examiner]
US 7974942B2 · Pomroy et al. · 2011 [cited by applicant]
US 8498941B2 · Felsher · 2013 [cited by applicant]
US 8875267B1 · Kolman et al. · 2014 [cited by applicant]
US 8978150B1 · Rosen et al. · 2015 [cited by applicant]
US 9160726B1 · Kaufman et al. · 2015 [cited by applicant]
US 9379896B1 · Altman · 2016 [cited by applicant]
US 10872162B2 · Qayyum et al. · 2020 [cited by applicant]
US 11200260B2 · Novotny et al. · 2021 [cited by applicant]
US 20070276843A1 · Lillibridge · 2007 [cited by examiner]
US 20080310619A1 · Scheidt et al. · 2008 [cited by applicant]
US 20110047056A1 · Overman et al. · 2011 [cited by applicant]
US 20120042365A1 · Shoval et al. · 2012 [cited by applicant]
US 20130198838A1 · Schmidt · 2013 [cited by examiner]
US 20140278550A1 · Pestka · 2014 [cited by applicant]
US 20150150090A1 · Carroll et al. · 2015 [cited by applicant]
US 20150229622A1 · Grigg et al. · 2015 [cited by applicant]
US 20150332283A1 · Witchey · 2015 [cited by applicant]
US 20160005032A1 · Yau et al. · 2016 [cited by applicant]
US 20160134593A1 · GVili · 2016 [cited by applicant]
US 20160217532A1 · Slavin · 2016 [cited by applicant]
US 20160226853A1 · Wall · 2016 [cited by applicant]
US 20160358169A1 · Androulaki et al. · 2016 [cited by applicant]
US 20190303579A1 · Reddy et al. · 2019 [cited by applicant]
Notice of Allowance for related U.S. Appl. No. 15/675,510 dated Jun. 7, 2018. [cited by applicant]
Vaudenay et al., Progress in Cryptology, Jun. 2008, Springer, pp. 1-414. [cited by applicant]
Blockchain (database), Wikipedia, https://en.wikipedia.org/wiki/Blockchain_(database), Aug. 7, 2016, pp. 1 to 9. [cited by applicant]
Blockchain as a Database, https://www.linkedin.com/pulse/blockchaindatabaseadibenari?trk=pulse _ spockarticles, Jul. 31, 2015, pp. 1 to 8. [cited by applicant]
The Blockchain as a Software Connector, S2016 13th Working IEEE/IFIP Conference on Software Architecture, Apr. 5-8, 2016, pp. 1 to 10. [cited by applicant]
Blockchain: the solution for transparency in product, https://www.provenance.org/whitepaper, Nov. 21, 2015, pp. 1 to 29. [cited by applicant]
VerSum: Verifiable Computations over Large Public Logs, CCS '14 Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security, https://people.csail.mit.edu/nickolai/papers/vandenhooff-ll'ersum.pd… [cited by applicant]
Ronit Reger, Dynamic Data Masking—highlighting the latest improvements, published on MSDN on Oct. 22, 2015, last updated Mar. 23, 2019. https://techcommunity.microsoft.com/t5/sql-server-blog/dynamic-data-masking-8211-hi… [cited by applicant]
Microsoft Azure, Microsoft Azure SQL Database provides unparalleled data security in the cloud with Always Encrypted, Posted on Oct. 14, 2015. https://azure.microsoft.com/en-us/blog/microsoft-azure-sql-database-provides… [cited by applicant]
Caron Beesley, What's this Data Masking All about Anyway? Data & Storage, Uncategorized Mar. 19, 2015. https://www.dlt.com/blog/2015/03/19/whats-data-masking. [cited by applicant]
Simon James, Microsoft SQL Server 2016—New features to protect your client's data, Published Jan. 28, 2016. https://www.slideshare.net/SolidQ/rowlevel-security-and-dynamic-data-masking. [cited by applicant]
Row-level security and Dynamic Data Masking, Jun. 9, 2016. https://www.slideshare.net/SolidQ/rowlevel-security-and-dynamic-data-masking. [cited by applicant]
SQL with Manoj, Obfuscate column level data by using “Dynamic Data Masking” in SQL Server 2016, Jul. 20, 2015. https://sqlwithmanoj.com/tag/dynamic-data-masking/. [cited by applicant]
IBM Software, Data security and privacy: Securing, monitoring, auditing and protecting structured and unstructured data, downloaded on Oct. 11, 2023. https://web.archive.org/web/20150702192239/http://www-03.ibm.com/soft… [cited by applicant]
IBM, IBM Security Guardium, Oct. 8, 2015. https://www.ibm.com/support/pages/system/files/support/swg/swgdocs.nsf/0/5cd0bfdb1ea452b485257e9800686bf0/$FILE/v10_detailed_release_notes_October_2015.pdf. [cited by applicant]
Informatica, Gartner Positions Informatica as a Leader in 2015 Magic Quadrant for Data Masking Technology, Worldwide, Dec. 24, 2015. https://www.globenewswire.com/en/news-release/2015/12/24/798106/11123/en/Gartner-Posit… [cited by applicant]
Michelle Beasley, Masking Engine User Guide: Chapter 2: Masking Engine Components, Aug. 8, 2015. https://docs.delphix.com/display/DOCS50/Masking+Data. [cited by applicant]
Linda Betz, Nova Southeastern University NSUWorks, An Analysis of the Relationship between Security Information Technology Enhancements and Computer Security Breaches and Incidents, 2016. https://nsuworks.nova.edu/cgi/v… [cited by applicant]
Notice of Allowance for related U.S. Appl. No. 17/725,503 dated Nov. 9, 2023. [cited by applicant]
Notice of Allowance for related U.S. Appl. No. 18/490,616 dated May 13, 2024. [cited by applicant]
Notice of Allowance for related U.S. Appl. No. 18/490,616 dated Sep. 16, 2024. [cited by applicant]
Notice of Allowance for related U.S. Appl. No. 17/401,203 dated Jul. 19, 2023. [cited by applicant]
Notice of Allowance from related U.S. Appl. No. 18/439,572 dated Feb. 7, 2025, pp. 1-24. [cited by applicant]