Method and system for securing data
First Claim
Patent Images
1. A method for securing user data, comprising the steps of:
- a) setting the user data as input data;
b) randomly fragmenting the input data into a plurality of Atoms and randomly distributing the Atoms into an AtomPool and an AtomKey; and
c) recording information about the fragmentation and the distribution of step b) into an AtomMap;
wherein;
the AtomPool and the AtomKey pre-exist the distribution of step b);
the AtomPool of step b) is divided into a number of zones, the number being Z−
1, with the AtomKey being zone Z; and
the distribution of step b) comprises the steps of;
d) randomly selecting the zone into which an Atom is distributed, wherein the zone selection occurs separately for each Atom;
e) copying each Atom to the zone selected for that Atom in step d), starting at a zone index for that zone, overwriting any data that exists in the location where each Atom is copied; and
f) moving the zone index of each zone into which any Atom was copied in step e) to a location immediately after the location where the Atom is copied.
4 Assignments
0 Petitions
Accused Products
Abstract
A method for securing user data includes the steps of: a) setting the user data as input data; b) randomly fragmenting the input data into a plurality of Atoms and randomly distributing the Atoms into an AtomPool and an AtomKey; and c) recording information about the fragmentation and the distribution of step b) into an AtomMap.
-
Citations
25 Claims
-
1. A method for securing user data, comprising the steps of:
-
a) setting the user data as input data; b) randomly fragmenting the input data into a plurality of Atoms and randomly distributing the Atoms into an AtomPool and an AtomKey; and c) recording information about the fragmentation and the distribution of step b) into an AtomMap; wherein; the AtomPool and the AtomKey pre-exist the distribution of step b); the AtomPool of step b) is divided into a number of zones, the number being Z−
1, with the AtomKey being zone Z; andthe distribution of step b) comprises the steps of; d) randomly selecting the zone into which an Atom is distributed, wherein the zone selection occurs separately for each Atom; e) copying each Atom to the zone selected for that Atom in step d), starting at a zone index for that zone, overwriting any data that exists in the location where each Atom is copied; and f) moving the zone index of each zone into which any Atom was copied in step e) to a location immediately after the location where the Atom is copied. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
wherein steps i)-j) are performed before step e).
-
-
4. The method of claim 3, wherein:
-
the distribution of step b) further comprises the steps of; k) generating a random binary string called a VectorGenerator; l) for each Atom, selecting t contiguous bits from the VectorGenerator, wherein; t includes enough bits to select the zone in step d) and to select the offset in step h); the t bits are called a Vector; z is a portion of the Vector that selects the zone in step d); o is a portion of the Vector that selects the offset in step i); and succeeding groups of t bits of the VectorGenerator are used to generate Vectors for succeeding Atoms; m) using z of each Vector in step d) to select the zone for the Atom corresponding to that Vector; and n) using o of each Vector in step i) to select the offset for the Atom corresponding to that Vector; and step c) further comprises the step of; o) recording the VectorGenerator into the AtomMap.
-
-
5. The method of claim 3, further comprising the steps of:
-
p) setting the AtomMap of step c) as the input data; and q) repeating at least one iteration of steps b)-c), wherein the AtomMap of a final iteration of step c) is a final AtomMap.
-
-
6. The method of claim 5, wherein the size of the AtomMap after any iteration of steps b)-c) is less than the size of the input data fragmented and distributed during that iteration.
-
7. The method of claim 6, further comprising the steps of:
-
r) compressing the input data; s) pre-randomizing the compressed input data of step r); and t) recording information about the compression of step r) and information about the pre-randomization of step s) into the AtomMap; wherein; steps r)-s) are performed before step b); and the fragmentation and the distribution of the input data in step b) is of the pre-randomized input data of step s).
-
-
8. The method of claim 7, wherein the AtomPool of step b) is larger than the pre-randomized input data of step s).
-
9. The method of claim 8, further comprising the step of:
-
u) filling the AtomPool and the AtomKey with random data; wherein; step u) is performed before the distribution of step b).
-
-
10. The method of claim 9, wherein the fragmentation of step b) comprises the steps of:
-
v) randomly selecting a data block of the input data; w) fragmenting the selected data block into a plurality of Atoms; and x) repeating steps v)-w) until each data block of the input data has been fragmented.
-
-
11. The method of claim 10, wherein step w) comprises the steps of:
-
y) selecting an m-bit contiguous segment of the data block; z) fragmenting the selected segment into a plurality of Atoms; and aa) repeating steps y)-z) for a next segment until the entire data block has been fragmented.
-
-
12. The method of claim 11, wherein step z) comprises the steps of:
-
bb) creating a plurality x of AtomMasks, each having m bits, wherein each of the m bit positions has a ‘
1’
in only one of the AtomMasks;cc) performing AND operations between the selected segment of step y) and each of the AtomMasks of step bb); and dd) normalizing each result of the AND operations of step cc), each normalized result being one Atom.
-
-
13. The method of claim 12, wherein x is less than or equal to m.
-
14. The method of claim 13, wherein:
-
step z) further comprises the steps of; ee) creating an array, called a SelectorTable, having x rows and n columns; ff) populating each cell of the SelectorTable with an AtomMask such that each column of the SelectorTable contains a plurality of AtomMasks of step bb), wherein the plurality of AtomMasks of one column differ in pattern from the plurality of AtomMasks of the neighboring columns; gg) generating a random binary string called a Selector; hh) for each selected segment of step y), selecting h contiguous bits from the Selector, wherein; h includes enough bits to select n; and succeeding groups of h bits of the Selector are used for succeeding segments; and ii) using the selected bits of step hh) to select a column of the SelectorTable, wherein the AtomMasks used in step cc) are those contained in the selected column; and step c) further comprises the step of; jj) recording the Selector into the AtomMap.
-
-
15. The method of claim 5, further comprising the steps of:
-
kk) setting the final AtomMap of step q) as an input AtomMap; ll) using the input AtomMap of step kk) to collect and reassemble the plurality of Atoms from the AtomPool and the AtomKey into output data; and mm) if the output data from an iteration of step 11) is an AtomMap, setting that output data as the input AtomMap and repeating iterations of step 11) until the output data is not an AtomMap; wherein steps kk)-mm) are performed after step q).
-
-
16. The method of claim 5, further comprising the steps of:
-
nn) storing the AtomPool of step b) on a first storage media; and oo) storing the AtomKey of step b) and the final AtomMap of step q) on a second storage media; wherein steps nn)-oo) are performed after step q).
-
-
17. The method of claim 16, wherein the first storage media of step nn) is at least one cloud storage media, the method further comprising the step of:
-
pp) recording location information of the storage of step nn) to the second storage media; wherein step pp) is performed after step nn).
-
-
18. The method of claim 5, further comprising the steps of:
-
qq) storing the AtomPool of step b) on at least one storage media; rr) recording location information of the storage of step qq) to a second storage media; ss) storing the final AtomMap of step q) on the second storage media; and tt) storing the AtomKey of step b) on a third storage media; wherein steps qq)-tt) are performed after step q).
-
-
19. The method of claim 5, further comprising the steps of:
-
uu) storing the AtomPool of step b) on at least one storage media; vv) recording location information of the storage of step uu) to a second storage media; ww) storing the final AtomMap of step q) on the second storage media; xx) combining the AtomKey with a random string called an AtomPad to produce an AtomPadLock; and yy) storing the AtomPadLock of step xx) on a third storage media; wherein steps uu)-yy) are performed after step q).
-
-
20. The method of claim 19, further comprising the steps of:
-
zz) retrieving the AtomPool stored in step uu) from the at least one storage media; aaa) retrieving the location information recorded in step vv) and the final AtomMap stored in step ww) from the second storage media; bbb) retrieving the AtomPadLock stored in step yy) from the third storage media; ccc) applying the AtomPad to the AtomPadLock retrieved in step bbb) to produce the AtomKey; ddd) setting the final AtomMap retrieved in step aaa) as an input AtomMap; eee) using the input AtomMap of step ddd) to collect and reassemble the plurality of Atoms from the AtomPool retrieved in step zz) and the AtomKey produced in step ccc) into output data; and fff) if the output data from an iteration of step eee) is an AtomMap, setting that output data as the input AtomMap and repeating iterations of step eee) until the output data is not an AtomMap; wherein steps zz)-fff) are performed after step yy).
-
-
21. The method of claim 20, further comprising the steps of:
-
ggg) obtaining a list of random data; and hhh) obtaining the AtomPad using the list of random data of step ggg); wherein; steps ggg)-hhh) are performed before step ccc); and the AtomPad obtained in step hhh) is applied in step ccc).
-
-
22. A non-transitory computer readable medium comprising instructions for causing a computer to perform the method of claim 5.
-
23. A non-transitory computer readable medium comprising instructions for causing a computer to perform the method of claim 15.
-
24. A system for securing user data, comprising:
-
a first computer; and a second computer in communication with the first computer; wherein the first computer is programmed to; execute steps a)-j) and p)-q) of the method of claim 16; and communicate the AtomPool, the AtomKey, and the final AtomMap to the second computer; and wherein the second computer is programmed to execute steps kk)-mm) of the method of claim 15.
-
-
25. A method for securing user data, comprising the steps of:
-
a) filling an AtomPool and an AtomKey with random data; b) setting the user data as input data; c) randomly fragmenting the input data at bit level into a plurality of Atoms and randomly distributing the Atoms into the AtomPool and the AtomKey; and d) recording information about the fragmentation and the distribution of step c) into an AtomMap; wherein; each Atom of step c) consists of non-contiguous bits from the input data fragmented in step c); the AtomPool is larger than the input data; the AtomPool is divided into a number of zones, the number being Z−
1, with the AtomKey being zone Z; andthe distribution of step c) comprises the steps of; e) randomly selecting the zone into which an Atom is distributed, wherein the zone selection occurs separately for each Atom; f) copying each Atom to the zone selected for that Atom in step e), starting at a zone index for that zone, overwriting any data that exists in the location where each Atom is copied; and g) moving the zone index of each zone into which any Atom was copied in step f) to a location immediately after the location where the Atom is copied.
-
Specification