diff --git a/XOR-Seed-Splitting--Theory-and-Practice.md b/XOR-Seed-Splitting--Theory-and-Practice.md index ebd02a1..295f661 100644 --- a/XOR-Seed-Splitting--Theory-and-Practice.md +++ b/XOR-Seed-Splitting--Theory-and-Practice.md @@ -313,31 +313,31 @@ recall from the above discussion. In addition, this step is implemented by MMGen Wallet somewhat differently than as described above. For advanced users, an example will be provided in a future version of this document. -[⊕]: ../../../../images/wiki/ss/o_xor.svg "⊕" -["a: 1 0 0 1 0 1 0 0"]: ../../../../images/wiki/ss/byte_a.svg "a: 1 0 0 1 0 1 0 0" -["b: 0 1 0 1 1 1 1 0"]: ../../../../images/wiki/ss/byte_b.svg "b: 0 1 0 1 1 1 1 0" -["a ⊖ b: 1 1 0 0 1 0 1 0"]: ../../../../images/wiki/ss/byte_ab.svg "a ⊖ b: 1 1 0 0 1 0 1 0" -["a ⊕ b = b ⊕ a"]: ../../../../images/wiki/ss/ab-ba.svg "a ⊕ b = b ⊕ a" -["a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c"]: ../../../../images/wiki/ss/abc.svg "a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c" -["a ⊕ b = c"]: ../../../../images/wiki/ss/ab-c.svg "a ⊕ b = c" -["c ⊕ a = b"]: ../../../../images/wiki/ss/ca-b.svg "c ⊕ a = b" -["b ⊕ c = a"]: ../../../../images/wiki/ss/bc-a.svg "b ⊕ c = a" -["P ⊕ r = C"]: ../../../../images/wiki/ss/Pr-C.svg "P ⊕ r = C" -["C ⊕ r = P"]: ../../../../images/wiki/ss/Cr-P.svg "C ⊕ r = P" -["seed ⊕ share1 = share2"]: ../../../../images/wiki/ss/ss-enc.svg "seed ⊕ share1 = share2" -["share2 ⊕ share1 = seed"]: ../../../../images/wiki/ss/ss-dec.svg "share2 ⊕ share1 = seed" -["seed ⊕ share1 ⊕ share2 ... ⊕ shareN-1 = shareN"]: ../../../../images/wiki/ss/ssN-enc.svg "seed ⊕ share1 ⊕ share2 ... ⊕ shareN-1 = shareN" -["share1 ⊕ share2 ... ⊕ shareN = seed"]: ../../../../images/wiki/ss/ssN-dec.svg "share1 ⊕ share2 ... ⊕ shareN = seed" -["share1 = SHA256(seed)"]: ../../../../images/wiki/ss/sha256.svg "share1 = SHA256(seed)" -["share2 = SHA256(share1), share3 = SHA256(share2), ..."]: ../../../../images/wiki/ss/sha256b.svg "share2 = SHA256(share1), share3 = SHA256(share2), ..." -["share1 = HMAC(seed,'share1'), share2 = HMAC(seed,'share2'), ... shareN-1 = HMAC(seed,'share')"]: ../../../../images/wiki/ss/hmac.svg "share1 = HMAC(seed,'share1'), share2 = HMAC(seed,'share2'), ... shareN-1 = HMAC(seed,'share')" -["share_me = HMAC(seed,'bob:share1'), share_bob = seed ⊕ share_me"]: ../../../../images/wiki/ss/bob.svg "share_me = HMAC(seed,'bob:share1'), share_bob = seed ⊕ share_me" -["share_me = HMAC(seed,'alice:share1'), share_alice = seed ⊕ share_me"]: ../../../../images/wiki/ss/alice.svg "share_me = HMAC(seed,'alice:share1'), share_alice = seed ⊕ share_me" -["share_me = HMAC(seed,'friends:share1:of3'), share_bob = HMAC(seed,'friends:share2:of3'), share_alice = seed ⊕ share_me ⊕ share_bob"]: ../../../../images/wiki/ss/friends1.svg "share_me = HMAC(seed,'friends:share1:of3'), share_bob = HMAC(seed,'friends:share2:of3'), share_alice = seed ⊕ share_me ⊕ share_bob" -["share_me = HMAC(seed,'friends:share1:of4'), share_bob = HMAC(seed,'friends:share2:of4'), share_alice = HMAC(seed,'friends:share3:of4'), share_carol = seed ⊕ share_me ⊕ share_bob ⊕ share_alice"]: ../../../../images/wiki/ss/friends2.svg "share_me = HMAC(seed,'friends:share1:of4'), share_bob = HMAC(seed,'friends:share2:of4'), share_alice = HMAC(seed,'friends:share3:of4'), share_carol = seed ⊕ share_me ⊕ share_bob ⊕ share_alice" -["master1 = HMAC(seed,'master1'), master2 = HMAC(seed,'master2'), ..."]: ../../../../images/wiki/ss/master.svg "master1 = HMAC(seed,'master1'), master2 = HMAC(seed,'master2'), ..." -["share_me = master1, share_bob = HMAC(seed,'friends:share2:of4:master1'), share_alice = HMAC(seed,'friends:share2:of4:master1'), share_carol = seed ⊕ HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice"]: ../../../../images/wiki/ss/friends3.svg "share_me = master1, share_bob = HMAC(seed,'friends:share2:of4:master1'), share_alice = HMAC(seed,'friends:share2:of4:master1'), share_carol = seed ⊕ HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice" -["seed = HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice ⊕ share_carol"]: ../../../../images/wiki/ss/friends4.svg "seed = HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice ⊕ share_carol" +[⊕]: ../../../../assets/images/wiki/ss/o_xor.svg "⊕" +["a: 1 0 0 1 0 1 0 0"]: ../../../../assets/images/wiki/ss/byte_a.svg "a: 1 0 0 1 0 1 0 0" +["b: 0 1 0 1 1 1 1 0"]: ../../../../assets/images/wiki/ss/byte_b.svg "b: 0 1 0 1 1 1 1 0" +["a ⊖ b: 1 1 0 0 1 0 1 0"]: ../../../../assets/images/wiki/ss/byte_ab.svg "a ⊖ b: 1 1 0 0 1 0 1 0" +["a ⊕ b = b ⊕ a"]: ../../../../assets/images/wiki/ss/ab-ba.svg "a ⊕ b = b ⊕ a" +["a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c"]: ../../../../assets/images/wiki/ss/abc.svg "a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c" +["a ⊕ b = c"]: ../../../../assets/images/wiki/ss/ab-c.svg "a ⊕ b = c" +["c ⊕ a = b"]: ../../../../assets/images/wiki/ss/ca-b.svg "c ⊕ a = b" +["b ⊕ c = a"]: ../../../../assets/images/wiki/ss/bc-a.svg "b ⊕ c = a" +["P ⊕ r = C"]: ../../../../assets/images/wiki/ss/Pr-C.svg "P ⊕ r = C" +["C ⊕ r = P"]: ../../../../assets/images/wiki/ss/Cr-P.svg "C ⊕ r = P" +["seed ⊕ share1 = share2"]: ../../../../assets/images/wiki/ss/ss-enc.svg "seed ⊕ share1 = share2" +["share2 ⊕ share1 = seed"]: ../../../../assets/images/wiki/ss/ss-dec.svg "share2 ⊕ share1 = seed" +["seed ⊕ share1 ⊕ share2 ... ⊕ shareN-1 = shareN"]: ../../../../assets/images/wiki/ss/ssN-enc.svg "seed ⊕ share1 ⊕ share2 ... ⊕ shareN-1 = shareN" +["share1 ⊕ share2 ... ⊕ shareN = seed"]: ../../../../assets/images/wiki/ss/ssN-dec.svg "share1 ⊕ share2 ... ⊕ shareN = seed" +["share1 = SHA256(seed)"]: ../../../../assets/images/wiki/ss/sha256.svg "share1 = SHA256(seed)" +["share2 = SHA256(share1), share3 = SHA256(share2), ..."]: ../../../../assets/images/wiki/ss/sha256b.svg "share2 = SHA256(share1), share3 = SHA256(share2), ..." +["share1 = HMAC(seed,'share1'), share2 = HMAC(seed,'share2'), ... shareN-1 = HMAC(seed,'share')"]: ../../../../assets/images/wiki/ss/hmac.svg "share1 = HMAC(seed,'share1'), share2 = HMAC(seed,'share2'), ... shareN-1 = HMAC(seed,'share')" +["share_me = HMAC(seed,'bob:share1'), share_bob = seed ⊕ share_me"]: ../../../../assets/images/wiki/ss/bob.svg "share_me = HMAC(seed,'bob:share1'), share_bob = seed ⊕ share_me" +["share_me = HMAC(seed,'alice:share1'), share_alice = seed ⊕ share_me"]: ../../../../assets/images/wiki/ss/alice.svg "share_me = HMAC(seed,'alice:share1'), share_alice = seed ⊕ share_me" +["share_me = HMAC(seed,'friends:share1:of3'), share_bob = HMAC(seed,'friends:share2:of3'), share_alice = seed ⊕ share_me ⊕ share_bob"]: ../../../../assets/images/wiki/ss/friends1.svg "share_me = HMAC(seed,'friends:share1:of3'), share_bob = HMAC(seed,'friends:share2:of3'), share_alice = seed ⊕ share_me ⊕ share_bob" +["share_me = HMAC(seed,'friends:share1:of4'), share_bob = HMAC(seed,'friends:share2:of4'), share_alice = HMAC(seed,'friends:share3:of4'), share_carol = seed ⊕ share_me ⊕ share_bob ⊕ share_alice"]: ../../../../assets/images/wiki/ss/friends2.svg "share_me = HMAC(seed,'friends:share1:of4'), share_bob = HMAC(seed,'friends:share2:of4'), share_alice = HMAC(seed,'friends:share3:of4'), share_carol = seed ⊕ share_me ⊕ share_bob ⊕ share_alice" +["master1 = HMAC(seed,'master1'), master2 = HMAC(seed,'master2'), ..."]: ../../../../assets/images/wiki/ss/master.svg "master1 = HMAC(seed,'master1'), master2 = HMAC(seed,'master2'), ..." +["share_me = master1, share_bob = HMAC(seed,'friends:share2:of4:master1'), share_alice = HMAC(seed,'friends:share2:of4:master1'), share_carol = seed ⊕ HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice"]: ../../../../assets/images/wiki/ss/friends3.svg "share_me = master1, share_bob = HMAC(seed,'friends:share2:of4:master1'), share_alice = HMAC(seed,'friends:share2:of4:master1'), share_carol = seed ⊕ HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice" +["seed = HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice ⊕ share_carol"]: ../../../../assets/images/wiki/ss/friends4.svg "seed = HMAC(master1,'friends:share1:of4') ⊕ share_bob ⊕ share_alice ⊕ share_carol"