This repository has been archived by the owner on Jul 26, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 218
/
Diagram Crypto Concept (mxGraph).xml
1 lines (1 loc) · 41.3 KB
/
Diagram Crypto Concept (mxGraph).xml
1
<mxGraphModel dx="1969" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="826" background="#FFFFFF" style="default-style2" math="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="246" value="" style="whiteSpace=wrap;align=left;fontStyle=1" vertex="1" parent="1"><mxGeometry x="0.6093750000017404" y="59.99218749999932" width="1205.09375" height="464.0078125000007" as="geometry"/></mxCell><mxCell id="244" value="" style="whiteSpace=wrap;align=left;fontStyle=1;fillColor=#A9C4EB" vertex="1" parent="1"><mxGeometry x="0.9687500000008309" y="1.046875" width="1205.09375" height="58.94531249999932" as="geometry"/></mxCell><mxCell id="2" value="Magic
(4 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="333.05468750000324" y="361.7500000000002" width="57" height="60" as="geometry"/></mxCell><mxCell id="3" value="Version 
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#D5E8D4;fontStyle=1" parent="1" vertex="1"><mxGeometry x="399.0546875000032" y="361.7500000000002" width="55" height="60" as="geometry"/></mxCell><mxCell id="5" value="Header 
HMAC salt
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fontStyle=1;fillColor=#FFF4C3" parent="1" vertex="1"><mxGeometry x="464.0546875000032" y="361.7500000000002" width="92" height="60" as="geometry"/></mxCell><mxCell id="6" value="Cipher i spec ID
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#D4E1F5;fontStyle=1" parent="1" vertex="1"><mxGeometry x="636.0546875000032" y="361.7500000000002" width="60" height="60" as="geometry"/></mxCell><mxCell id="7" value="Cipher i
rand. key salt
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fillColor=#D4E1F5;fontStyle=1" parent="1" vertex="1"><mxGeometry x="706.0546875000032" y="361.7500000000002" width="82" height="60" as="geometry"/></mxCell><mxCell id="8" value="Cipher count
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#D5E8D4;fontStyle=1" parent="1" vertex="1"><mxGeometry x="566.0546875000032" y="361.7500000000002" width="60" height="60" as="geometry"/></mxCell><mxCell id="9" value="" style="shape=mxgraph.flowchart.annotation_2;fillColor=#ffffff;strokeColor=#999999;strokeWidth=2;rotation=-90" parent="1" vertex="1"><mxGeometry x="748.5546875000032" y="319.2500000000002" width="20" height="245" as="geometry"/></mxCell><mxCell id="10" value="Defines ciphers to use; only <br>authenticated modes allowed<br>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=center" parent="1" vertex="1"><mxGeometry x="637.0546875000028" y="460.0000000000002" width="245" height="30" as="geometry"/></mxCell><mxCell id="11" value="Cipher i
random IV
(n bytes)" style="whiteSpace=wrap;fontSize=11;fillColor=#D4E1F5;fontStyle=1" parent="1" vertex="1"><mxGeometry x="798.0546875000033" y="361.7500000000002" width="82" height="60" as="geometry"/></mxCell><mxCell id="12" value="Header 
HMAC-SHA256
(32 bytes)" style="whiteSpace=wrap;fontSize=11;fontStyle=1;fillColor=#FFF4C3" parent="1" vertex="1"><mxGeometry x="890.0546875000033" y="361.7500000000002" width="109" height="60" as="geometry"/></mxCell><mxCell id="13" value="" style="shape=mxgraph.flowchart.annotation_2;fillColor=#ffffff;strokeColor=#999999;strokeWidth=2;rotation=90;rounded=0" parent="1" vertex="1"><mxGeometry x="713.5546875000032" y="187.00000000000023" width="20" height="315" as="geometry"/></mxCell><mxCell id="16" value="" style="exitX=0;exitY=0.5;exitPerimeter=0;edgeStyle=elbowEdgeStyle;strokeWidth=2;shadow=0;elbow=vertical;strokeColor=#999999" parent="1" source="13" target="12" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="725.3046875000032" y="334.5000000000002" as="sourcePoint"/><mxPoint x="945.5546875000033" y="361.7500000000002" as="targetPoint"/><Array as="points"><mxPoint x="839.5546875000033" y="317.0000000000002"/><mxPoint x="725.0546875000032" y="307.7500000000002"/><mxPoint x="946.0546875000033" y="307.7500000000002"/></Array></mxGeometry></mxCell><mxCell id="17" value="Authenticated 
ciphertext
(n bytes)" style="whiteSpace=wrap;fontSize=11;fontStyle=1;fillColor=#E1D5E7" parent="1" vertex="1"><mxGeometry x="1009.0546875000033" y="361.7500000000002" width="180" height="60" as="geometry"/></mxCell><mxCell id="19" value="<p><font style="font-size: 18px;"><b>Syncany cryptography concept</b></font><br></p>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;" parent="1" vertex="1"><mxGeometry x="8.062500000000922" y="2.046875" width="470" height="39.953125" as="geometry"/></mxCell><mxCell id="80" value="" style="edgeStyle=elbowEdgeStyle;strokeWidth=2;shadow=0;elbow=vertical;endArrow=none;exitX=0.5;exitY=0;strokeColor=#999999" parent="1" source="5" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="492.55468750000296" y="661.7500000000002" as="sourcePoint"/><mxPoint x="739.5546875000033" y="317.0000000000002" as="targetPoint"/><Array as="points"><mxPoint x="629.5546875000033" y="317.0000000000002"/><mxPoint x="717.554687500003" y="617.7500000000002"/><mxPoint x="938.5546875000031" y="617.7500000000002"/></Array></mxGeometry></mxCell><mxCell id="81" value="Plaintext encrypted and <br>authenticated with specified ciphers<br>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=center" parent="1" vertex="1"><mxGeometry x="993.4648437500047" y="458.0000000000002" width="208.80468749999773" height="30" as="geometry"/></mxCell><mxCell id="82" value="" style="shape=mxgraph.flowchart.annotation_2;fillColor=#ffffff;strokeColor=#999999;strokeWidth=2;rotation=-90" parent="1" vertex="1"><mxGeometry x="1088.8671875000034" y="348.4375000000002" width="20" height="184.625" as="geometry"/></mxCell><mxCell id="111" value="Magic
(4 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="14.796875000002816" y="1160.03125" width="57" height="60" as="geometry"/></mxCell><mxCell id="112" value="Version 
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#D5E8D4;fontStyle=1" parent="1" vertex="1"><mxGeometry x="80.79687500000283" y="1160.03125" width="55" height="60" as="geometry"/></mxCell><mxCell id="113" value="Header 
HMAC salt
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fontStyle=1;fillColor=#FFF4C3" parent="1" vertex="1"><mxGeometry x="145.7968750000028" y="1160.03125" width="92" height="60" as="geometry"/></mxCell><mxCell id="114" value="Twofish-
128 / GCM
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#B9E0A5;fontStyle=1" parent="1" vertex="1"><mxGeometry x="317.7968750000028" y="1160.03125" width="60" height="60" as="geometry"/></mxCell><mxCell id="115" value="Twofish-128
rand. key salt
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fillColor=#B9E0A5;fontStyle=1" parent="1" vertex="1"><mxGeometry x="387.7968750000028" y="1160.03125" width="82" height="60" as="geometry"/></mxCell><mxCell id="116" value="Cipher count
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#D5E8D4;fontStyle=1" parent="1" vertex="1"><mxGeometry x="247.7968750000028" y="1160.03125" width="60" height="60" as="geometry"/></mxCell><mxCell id="118" value="Twofish-128
random IV
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fillColor=#B9E0A5;fontStyle=1" parent="1" vertex="1"><mxGeometry x="479.7968750000029" y="1160.03125" width="82" height="60" as="geometry"/></mxCell><mxCell id="119" value="Header 
HMAC-SHA256
(32 bytes)" style="whiteSpace=wrap;fontSize=11;fontStyle=1;fillColor=#FFF4C3" parent="1" vertex="1"><mxGeometry x="826.7968750000028" y="1159.03125" width="138.90624999999898" height="60" as="geometry"/></mxCell><mxCell id="122" value="Authenticated 
ciphertext
(n bytes)" style="whiteSpace=wrap;fontSize=11;fontStyle=1;fillColor=#E1D5E7" parent="1" vertex="1"><mxGeometry x="976.7968750000028" y="1159.03125" width="199.90624999999898" height="60" as="geometry"/></mxCell><mxCell id="123" value=""Sy"
0205" style="whiteSpace=wrap;fontStyle=0;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="14.796875000002816" y="1230.03125" width="57" height="60" as="geometry"/></mxCell><mxCell id="124" value="1" style="whiteSpace=wrap;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="80.79687500000283" y="1230.03125" width="55" height="60" as="geometry"/></mxCell><mxCell id="125" value="753a89790a8
c27e6f58de8a" style="whiteSpace=wrap;fontSize=11;fillColor=#FFF4C3" parent="1" vertex="1"><mxGeometry x="145.7968750000028" y="1230.03125" width="92" height="60" as="geometry"/></mxCell><mxCell id="126" value="3" style="whiteSpace=wrap;fontSize=11;fillColor=#B9E0A5" parent="1" vertex="1"><mxGeometry x="317.7968750000028" y="1230.03125" width="60" height="60" as="geometry"/></mxCell><mxCell id="127" value="d879632c90b7
9ef77ee2f89a" style="whiteSpace=wrap;fontSize=11;fillColor=#B9E0A5" parent="1" vertex="1"><mxGeometry x="387.7968750000028" y="1230.03125" width="82" height="60" as="geometry"/></mxCell><mxCell id="128" value="2" style="whiteSpace=wrap;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="247.7968750000028" y="1230.03125" width="60" height="60" as="geometry"/></mxCell><mxCell id="129" value="125db739d5d3
45f0c76884e3" style="whiteSpace=wrap;fontSize=11;fillColor=#B9E0A5" parent="1" vertex="1"><mxGeometry x="479.7968750000029" y="1230.03125" width="82" height="60" as="geometry"/></mxCell><mxCell id="130" value="1f7739b2e72d5
793a539a97b..." style="whiteSpace=wrap;fontSize=11;fillColor=#FFF4C3" parent="1" vertex="1"><mxGeometry x="826.7968750000028" y="1229.03125" width="138.90624999999898" height="60" as="geometry"/></mxCell><mxCell id="131" value="28d4ea07273c05caa064ea874c4
714f3356d91300daa87b8d88..." style="whiteSpace=wrap;fontSize=11;fillColor=#E1D5E7" parent="1" vertex="1"><mxGeometry x="976.7968750000028" y="1229.03125" width="199.90624999999898" height="60" as="geometry"/></mxCell><mxCell id="133" value="AES-128 / GCM
(1 byte)" style="whiteSpace=wrap;fontSize=11;fillColor=#7EA6E0;fontStyle=1" parent="1" vertex="1"><mxGeometry x="572.7968750000027" y="1159.78125" width="60" height="60" as="geometry"/></mxCell><mxCell id="134" value="AES-128
rand. key salt
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fillColor=#7EA6E0;fontStyle=1" parent="1" vertex="1"><mxGeometry x="642.7968750000027" y="1159.78125" width="82" height="60" as="geometry"/></mxCell><mxCell id="135" value="AES-128
random IV
(12 bytes)" style="whiteSpace=wrap;fontSize=11;fillColor=#7EA6E0;fontStyle=1" parent="1" vertex="1"><mxGeometry x="734.7968750000028" y="1159.78125" width="82" height="60" as="geometry"/></mxCell><mxCell id="136" value="1" style="whiteSpace=wrap;fontSize=11;fillColor=#7EA6E0" parent="1" vertex="1"><mxGeometry x="572.7968750000027" y="1229.78125" width="60" height="60" as="geometry"/></mxCell><mxCell id="137" value="ccdb41201da3
41e46c96aaea" style="whiteSpace=wrap;fontSize=11;fillColor=#7EA6E0" parent="1" vertex="1"><mxGeometry x="642.7968750000027" y="1229.78125" width="82" height="60" as="geometry"/></mxCell><mxCell id="138" value="dfe58c715b16
5afc7ec970f8" style="whiteSpace=wrap;fontSize=11;fillColor=#7EA6E0" parent="1" vertex="1"><mxGeometry x="734.7968750000028" y="1229.78125" width="82" height="60" as="geometry"/></mxCell><mxCell id="141" value="Plaintext encrypted and&nbsp;authenticated <br>with AES &amp; Two<font style="font-size: 12px;">fish, 128-bit in GCM mode</font>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=center" parent="1" vertex="1"><mxGeometry x="935.8281250000018" y="1322.9375" width="276.9999999999998" height="30" as="geometry"/></mxCell><mxCell id="142" value="" style="shape=mxgraph.flowchart.annotation_2;fillColor=#ffffff;strokeColor=#000000;strokeWidth=2;rotation=-90" parent="1" vertex="1"><mxGeometry x="1067.109375000003" y="1203.6875000000005" width="20" height="203.9999999999991" as="geometry"/></mxCell><mxCell id="145" value="2. PBKDF2 with HMAC-SHA1
(1MM rounds)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="21.921875000002327" y="789.749999999999" width="110" height="60" as="geometry"/></mxCell><mxCell id="147" value="4. Master key 
(64 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="170.4218750000019" y="789.5781249999985" width="110" height="60" as="geometry"/></mxCell><mxCell id="148" value="" style="exitX=0.5;exitY=1;entryX=0.5;entryY=0;elbow=vertical;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="144" target="145" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="-1006.5781249999981" y="541.5781249999985" as="sourcePoint"/><mxPoint x="-906.5781249999982" y="441.5781249999986" as="targetPoint"/></mxGeometry></mxCell><mxCell id="149" value="" style="exitX=0.5;exitY=1;elbow=vertical;strokeWidth=2;entryX=0.5;entryY=1;strokeColor=#999999;fillColor=#999999" parent="1" source="146" target="145" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="-1296.5781249999982" y="541.5781249999985" as="sourcePoint"/><mxPoint x="85.92187500000237" y="847.4296874999985" as="targetPoint"/></mxGeometry></mxCell><mxCell id="150" value="" style="edgeStyle=none;exitX=1;exitY=0.5;entryX=0;entryY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="145" target="147" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="326.515625000002" y="587.9999999999992" as="sourcePoint"/><mxPoint x="326.515625000002" y="644.9531249999992" as="targetPoint"/></mxGeometry></mxCell><mxCell id="151" value="14. AES-128 Key
(16 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="476.4218750000021" y="839.5781249999987" width="110" height="60" as="geometry"/></mxCell><mxCell id="158" value="12. Rand. salt for 
AES key deriv.
(12 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#A9C4EB" parent="1" vertex="1"><mxGeometry x="326.5156250000018" y="940.4296874999983" width="110" height="60" as="geometry"/></mxCell><mxCell id="160" value="8. Rand. salt for Twofish key deriv.
(12 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#B9E0A5" parent="1" vertex="1"><mxGeometry x="326.5156250000018" y="647.7499999999981" width="110" height="60" as="geometry"/></mxCell><mxCell id="163" value="10. Twofish-128 Key
(16 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="477.32812500000153" y="741.3749999999985" width="110" height="60" as="geometry"/></mxCell><mxCell id="164" value="9. HKDF 
with SHA256" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="326.5156250000025" y="741.3749999999985" width="110" height="60" as="geometry"/></mxCell><mxCell id="166" value="" style="exitX=1;exitY=0.5;entryX=0;entryY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="164" target="163" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="435.06250000000193" y="766.9531250000001" as="sourcePoint"/><mxPoint x="511.56250000000244" y="766.7500000000001" as="targetPoint"/></mxGeometry></mxCell><mxCell id="167" value="11. Random IV
for Twofish
(12 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#B9E0A5" parent="1" vertex="1"><mxGeometry x="778.4218750000026" y="741.7499999999978" width="110" height="60" as="geometry"/></mxCell><mxCell id="168" value="15. Random IV
for AES
(12 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#A9C4EB" parent="1" vertex="1"><mxGeometry x="778.4218750000027" y="839.578124999999" width="110" height="60" as="geometry"/></mxCell><mxCell id="171" value="20. AES-128
in GCM mode" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="625.515625000003" y="839.5781249999997" width="110" height="60" as="geometry"/></mxCell><mxCell id="172" value="13. HKDF 
with SHA256" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="326.9218750000024" y="839.5781249999985" width="110" height="60" as="geometry"/></mxCell><mxCell id="173" value="" style="entryX=0.5;entryY=1;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="158" target="172" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="432.0625000000023" y="756.7499999999992" as="sourcePoint"/><mxPoint x="386.92187500000273" y="901.3749999999987" as="targetPoint"/></mxGeometry></mxCell><mxCell id="174" value="" style="exitX=1;exitY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="172" target="151" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="476.51562500000256" y="926.7499999999992" as="sourcePoint"/><mxPoint x="507.5156250000025" y="912.7499999999992" as="targetPoint"/></mxGeometry></mxCell><mxCell id="184" value="" style="exitX=1;exitY=0.5;entryX=0;entryY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="151" target="171" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="440.3281250000014" y="896.7499999999985" as="sourcePoint"/><mxPoint x="506.4218750000023" y="896.7499999999985" as="targetPoint"/></mxGeometry></mxCell><mxCell id="185" value="19. Twofish-128
in GCM mode" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="1" vertex="1"><mxGeometry x="625.4218750000025" y="741.7499999999978" width="110" height="60" as="geometry"/></mxCell><mxCell id="186" value="18. Plaintext
(multichunk or metadata)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#E6E6E6" parent="1" vertex="1"><mxGeometry x="625.421875000002" y="645.7499999999976" width="110" height="60" as="geometry"/></mxCell><mxCell id="188" value="" style="exitX=1;exitY=0.5;entryX=0;entryY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="163" target="185" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="616.421875000002" y="896.7499999999985" as="sourcePoint"/><mxPoint x="682.9531250000016" y="896.749999999999" as="targetPoint"/></mxGeometry></mxCell><mxCell id="192" value="" style="exitX=1;exitY=0.5;entryX=0;entryY=0.5;edgeStyle=elbowEdgeStyle;elbow=horizontal;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="147" target="164" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="469.51562500000165" y="697.7499999999983" as="sourcePoint"/><mxPoint x="533.5625000000023" y="766.7500000000001" as="targetPoint"/><Array as="points"><mxPoint x="305.7031250000019" y="797.374999999999"/></Array></mxGeometry></mxCell><mxCell id="193" value="" style="exitX=0.5;exitY=1;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="160" target="164" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="801.0625000000027" y="756.9531249999997" as="sourcePoint"/><mxPoint x="872.1406250000026" y="756.7499999999997" as="targetPoint"/></mxGeometry></mxCell><mxCell id="194" value="" style="exitX=1;exitY=0.5;entryX=0;entryY=0.5;edgeStyle=elbowEdgeStyle;elbow=horizontal;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="147" target="172" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="290.4218750000018" y="829.5781249999992" as="sourcePoint"/><mxPoint x="359.51562500000273" y="791.3749999999987" as="targetPoint"/><Array as="points"><mxPoint x="305.7031250000019" y="847.374999999999"/></Array></mxGeometry></mxCell><mxCell id="195" value="Master key generation from password" style="swimlane;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="0.6093750000018008" y="576.3203124999985" width="315.0937500000001" height="460" as="geometry"/></mxCell><mxCell id="144" value="1. User Password
(min. 10 chars)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="195" vertex="1"><mxGeometry x="21.59374999999993" y="113.0546875000002" width="110" height="60" as="geometry"/></mxCell><mxCell id="146" value="3. Rand. master
key salt
(64 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="195" vertex="1"><mxGeometry x="21.093749999999744" y="316.10937499999926" width="110" height="60" as="geometry"/></mxCell><mxCell id="242" value="Stored in repo (master file) and locally in .syncany" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=center" parent="195" vertex="1"><mxGeometry x="-2" y="409.1093749999998" width="157.40625000000028" height="40.89062500000023" as="geometry"/></mxCell><mxCell id="243" value="Stored&nbsp;<span style="line-height: 1.26; background-color: rgb(255, 255, 255);">locally in .syncany</span>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=center" parent="195" vertex="1"><mxGeometry x="152.18750000000102" y="411.1093749999998" width="146.3125000000005" height="30" as="geometry"/></mxCell><mxCell id="196" value="" style="entryX=1;entryY=0.5;exitX=0;exitY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="168" target="171" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="363.6926362334075" y="948.4296874999983" as="sourcePoint"/><mxPoint x="363.92187500000273" y="909.5781249999987" as="targetPoint"/></mxGeometry></mxCell><mxCell id="197" value="" style="exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="186" target="185" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="581.3281250000014" y="781.3749999999987" as="sourcePoint"/><mxPoint x="634.4218750000023" y="781.7499999999978" as="targetPoint"/></mxGeometry></mxCell><mxCell id="198" value="" style="exitX=0;exitY=0.5;entryX=1;entryY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="167" target="185" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="581.3281250000014" y="781.3749999999987" as="sourcePoint"/><mxPoint x="634.4218750000023" y="781.7499999999978" as="targetPoint"/></mxGeometry></mxCell><mxCell id="199" value="" style="exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="185" target="171" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="688.4218750000023" y="715.7499999999974" as="sourcePoint"/><mxPoint x="689.4218750000027" y="751.7499999999978" as="targetPoint"/></mxGeometry></mxCell><mxCell id="200" value="Key derivation from master key" style="swimlane;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="315.7031250000019" y="576.3749999999983" width="290" height="452.0000000000002" as="geometry"><mxRectangle x="449.9999999999992" y="1520" width="100" height="23" as="alternateBounds"/></mxGeometry></mxCell><mxCell id="201" value="21. Authenticated Ciphertext" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#E1D5E7" parent="1" vertex="1"><mxGeometry x="625.5156250000025" y="938.4296874999981" width="110" height="60" as="geometry"/></mxCell><mxCell id="202" value="" style="entryX=0.5;entryY=0;exitX=0.5;exitY=1;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="171" target="201" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="682.5156250000023" y="911.3749999999987" as="sourcePoint"/><mxPoint x="690.5156250000032" y="849.5781249999997" as="targetPoint"/></mxGeometry></mxCell><mxCell id="203" value="File encryption & authentication" style="swimlane;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="605.7031250000018" y="576.3749999999983" width="320" height="452.0000000000002" as="geometry"><mxRectangle x="449.9999999999992" y="1520" width="100" height="23" as="alternateBounds"/></mxGeometry></mxCell><mxCell id="204" value="Resulting Example File" style="swimlane;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="0.6093750000017581" y="1028.3203124999995" width="1205.0937500000002" height="339.05468749999955" as="geometry"/></mxCell><mxCell id="120" value="" style="shape=mxgraph.flowchart.annotation_2;fillColor=#ffffff;strokeColor=#000000;strokeWidth=2;rotation=-90;rounded=0" parent="204" vertex="1"><mxGeometry x="519.5937500000001" y="-8.039062500000206" width="20" height="572.8125" as="geometry"/></mxCell><mxCell id="230" value="Authenticated cipher/mode definitions with corresponding IVs and salts<br>(input for file header HMAC-SHA1)" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=center" parent="204" vertex="1"><mxGeometry x="314.7343750000012" y="295.9335937499998" width="430.90624999999983" height="30" as="geometry"/></mxCell><mxCell id="205" value="" style="elbow=vertical;exitX=0.25;exitY=1;entryX=0.5;entryY=0;edgeStyle=elbowEdgeStyle;dashed=1;strokeColor=#7EA6E0;strokeWidth=2" parent="1" source="158" target="134" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="579.7031250000013" y="1019.3749999999995" as="sourcePoint"/><mxPoint x="711.7031250000017" y="1199.3749999999995" as="targetPoint"/><Array as="points"><mxPoint x="525.7031250000018" y="1077.374999999999"/></Array></mxGeometry></mxCell><mxCell id="206" value="" style="elbow=vertical;exitX=0.5;exitY=1;entryX=0.5;entryY=0;edgeStyle=elbowEdgeStyle;dashed=1;strokeColor=#7EA6E0;strokeWidth=2" parent="1" source="168" target="135" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="589.7031250000013" y="1006.429687499999" as="sourcePoint"/><mxPoint x="721.7031250000017" y="1290.8359374999995" as="targetPoint"/><Array as="points"><mxPoint x="805.7031250000018" y="1117.374999999999"/></Array></mxGeometry></mxCell><mxCell id="207" value="" style="elbow=vertical;exitX=0;exitY=0.5;entryX=0.5;entryY=0;edgeStyle=orthogonalEdgeStyle;dashed=1;strokeColor=#97D077;strokeWidth=2" parent="1" source="160" target="115" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="589.7031250000013" y="1006.429687499999" as="sourcePoint"/><mxPoint x="721.7031250000017" y="1290.8359374999995" as="targetPoint"/><Array as="points"><mxPoint x="315.7031250000019" y="677.374999999999"/><mxPoint x="315.7031250000019" y="677.374999999999"/><mxPoint x="295.7031250000019" y="677.374999999999"/><mxPoint x="295.7031250000019" y="1097.374999999999"/><mxPoint x="428.7031250000019" y="1097.374999999999"/></Array></mxGeometry></mxCell><mxCell id="208" value="" style="elbow=vertical;exitX=0.5;exitY=1;entryX=0.5;entryY=0;edgeStyle=elbowEdgeStyle;dashed=1;strokeColor=#B5739D;strokeWidth=2;fillColor=#FFB570" parent="1" source="201" target="122" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="589.7031250000013" y="1006.429687499999" as="sourcePoint"/><mxPoint x="693.7968750000026" y="1191.78125" as="targetPoint"/><Array as="points"><mxPoint x="885.7031250000018" y="1067.374999999999"/></Array></mxGeometry></mxCell><mxCell id="209" value="" style="elbow=vertical;exitX=1;exitY=0.75;entryX=0.5;entryY=0;edgeStyle=orthogonalEdgeStyle;dashed=1;strokeColor=#97D077;strokeWidth=2" parent="1" source="167" target="118" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="1080.609375000002" y="907.5781249999994" as="sourcePoint"/><mxPoint x="785.7968750000026" y="1191.78125" as="targetPoint"/><Array as="points"><mxPoint x="895.7031250000018" y="786.374999999999"/><mxPoint x="895.7031250000018" y="1097.374999999999"/><mxPoint x="520.7031250000018" y="1097.374999999999"/></Array></mxGeometry></mxCell><mxCell id="213" value="Header authentication" style="swimlane;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="925.7031250000018" y="576.3749999999983" width="280" height="452.0000000000002" as="geometry"><mxRectangle x="449.9999999999992" y="1520" width="100" height="23" as="alternateBounds"/></mxGeometry></mxCell><mxCell id="218" value="7. Header 
HMAC key
(16 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="213" vertex="1"><mxGeometry x="11.000000000000455" y="164.99999999999983" width="110" height="60" as="geometry"/></mxCell><mxCell id="221" value="17. Header 
HMAC-SHA256
(20 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#FFF2CC" parent="213" vertex="1"><mxGeometry x="10.999999999999616" y="368" width="110" height="60" as="geometry"/></mxCell><mxCell id="217" value="6. HKDF 
with SHA256" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="213" vertex="1"><mxGeometry x="11.000000000000227" y="60.00000000000023" width="110" height="60" as="geometry"/></mxCell><mxCell id="219" value="" style="strokeWidth=2;entryX=0.5;entryY=0;exitX=0.5;exitY=1;strokeColor=#999999;fillColor=#999999" parent="213" source="217" target="218" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="241" y="50" as="sourcePoint"/><mxPoint x="131" y="205.37499999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="211" value="16. HMAC-
SHA256" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#D5E8D4" parent="213" vertex="1"><mxGeometry x="11.000000000000227" y="263.20312500000136" width="110" height="60" as="geometry"/></mxCell><mxCell id="220" value="" style="strokeWidth=2;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeColor=#999999;fillColor=#999999" parent="213" source="218" target="211" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="216" y="30.000000000000455" as="sourcePoint"/><mxPoint x="216" y="89.99999999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="222" value="" style="exitX=0.5;exitY=1;strokeWidth=2;entryX=0.5;entryY=0;strokeColor=#999999;fillColor=#999999" parent="213" source="211" target="221" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="186.00000000000045" y="212.37499999999955" as="sourcePoint"/><mxPoint x="131" y="205.37499999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="210" value="5. Header HMAC
salt
(12 bytes)" style="whiteSpace=wrap;fontStyle=1;fontSize=11;fillColor=#FFF2CC" parent="213" vertex="1"><mxGeometry x="155.00000000000009" y="59.999999999999886" width="110" height="60" as="geometry"/></mxCell><mxCell id="212" value="" style="exitX=0;exitY=0.5;strokeWidth=2;entryX=1;entryY=0.5;strokeColor=#999999;fillColor=#999999" parent="213" source="210" target="217" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="-159.09374999999977" y="202.37499999999955" as="sourcePoint"/><mxPoint x="131" y="202.37499999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="214" value="" style="exitX=0.5;exitY=0;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;elbow=horizontal;entryX=0;entryY=0.5;strokeColor=#999999;fillColor=#999999" parent="1" source="160" target="211" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="721.4218750000019" y="705.7499999999978" as="sourcePoint"/><mxPoint x="722.4218750000024" y="741.7499999999978" as="targetPoint"/><Array as="points"><mxPoint x="381.7031250000019" y="629.374999999999"/><mxPoint x="915.7031250000018" y="629.374999999999"/><mxPoint x="915.7031250000018" y="869.374999999999"/></Array></mxGeometry></mxCell><mxCell id="215" value="" style="strokeWidth=2;edgeStyle=orthogonalEdgeStyle;exitX=0.5;exitY=1;entryX=0;entryY=0.5;fillColor=#999999;strokeColor=#999999" parent="1" source="158" target="211" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="472.51562500000244" y="949.3749999999983" as="sourcePoint"/><mxPoint x="932.5156250000024" y="936.3749999999983" as="targetPoint"/><Array as="points"><mxPoint x="381.7031250000019" y="1016.374999999999"/><mxPoint x="915.7031250000018" y="1016.374999999999"/><mxPoint x="915.7031250000018" y="869.374999999999"/></Array></mxGeometry></mxCell><mxCell id="216" value="" style="entryX=0;entryY=0.5;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;strokeColor=#999999;fillColor=#999999" parent="1" target="211" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="895.7031250000018" y="771.7499999999985" as="sourcePoint"/><mxPoint x="733.4218750000024" y="781.7499999999978" as="targetPoint"/><Array as="points"><mxPoint x="885.7031250000018" y="771.374999999999"/><mxPoint x="885.7031250000018" y="771.374999999999"/><mxPoint x="915.7031250000018" y="771.374999999999"/><mxPoint x="915.7031250000018" y="869.374999999999"/></Array></mxGeometry></mxCell><mxCell id="227" value="" style="exitX=1;exitY=0.5;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;elbow=horizontal;entryX=0.5;entryY=0;strokeColor=#999999;fillColor=#999999" parent="1" source="147" target="217" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="414.51562500000193" y="657.7499999999983" as="sourcePoint"/><mxPoint x="1074.5156250000025" y="556.3749999999983" as="targetPoint"/><Array as="points"><mxPoint x="305.7031250000019" y="819.374999999999"/><mxPoint x="305.7031250000019" y="616.374999999999"/><mxPoint x="985.7031250000018" y="616.374999999999"/></Array></mxGeometry></mxCell><mxCell id="228" value="" style="entryX=0;entryY=0.5;exitX=1;exitY=0.5;strokeWidth=2;strokeColor=#999999;fillColor=#999999" parent="1" source="168" target="211" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="788.4218750000028" y="879.5781249999992" as="sourcePoint"/><mxPoint x="734.5156250000031" y="879.5781249999997" as="targetPoint"/></mxGeometry></mxCell><mxCell id="229" value="" style="elbow=vertical;exitX=0.5;exitY=1;entryX=0.5;entryY=0;edgeStyle=orthogonalEdgeStyle;dashed=1;strokeColor=#FFB570;strokeWidth=2" parent="1" source="210" target="113" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="1135.609375000002" y="782.7499999999985" as="sourcePoint"/><mxPoint x="530.7968750000027" y="1170.03125" as="targetPoint"/><Array as="points"><mxPoint x="1135.7031250000018" y="1137.374999999999"/><mxPoint x="191.7031250000019" y="1137.374999999999"/></Array></mxGeometry></mxCell><mxCell id="232" value="" style="elbow=vertical;exitX=0.5;exitY=1;entryX=0.5;entryY=0;edgeStyle=elbowEdgeStyle;dashed=1;strokeColor=#FFB570;strokeWidth=2;fillColor=#FFB570" parent="1" source="221" target="119" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="971.703125000002" y="979.429687499999" as="sourcePoint"/><mxPoint x="1045.7968750000025" y="1169.03125" as="targetPoint"/><Array as="points"><mxPoint x="945.7031250000018" y="1117.374999999999"/></Array></mxGeometry></mxCell><mxCell id="237" value="" style="whiteSpace=wrap;align=left;fontStyle=1;fillColor=#A9C4EB" parent="1" vertex="1"><mxGeometry x="0.6093750000018079" y="517.374999999999" width="1205.09375" height="58.94531249999932" as="geometry"/></mxCell><mxCell id="238" value="<p><font style="font-size: 18px;"><b>Example: Master key generation (during setup), and encryption of one file in the default configuration (two ciphers)</b></font><font style="font-size: 12px;"><br><font style="font-size: 14px;">Default</font></font><font size="3"> configuration: Encryption with Twofish and AES, both 128-bit in GCM mode</font><br></p>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;" parent="1" vertex="1"><mxGeometry x="4.203125000001757" y="513.374999999999" width="1011.8593749999992" height="60" as="geometry"/></mxCell><mxCell id="239" value="<b>Philipp C. Heckel</b><br>23 February 2014<br>www.syncany.org<br>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;align=right" parent="1" vertex="1"><mxGeometry x="1041.062500000001" y="8" width="160.46875000000114" height="60" as="geometry"/></mxCell><mxCell id="240" value="" style="edgeStyle=none;exitX=0.5;exitY=1;strokeWidth=2;strokeColor=#999999;fillColor=#999999;dashed=1" parent="1" source="147" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="141.92187500000236" y="829.749999999999" as="sourcePoint"/><mxPoint x="225.4218750000019" y="983.3749999999992" as="targetPoint"/></mxGeometry></mxCell><mxCell id="241" value="" style="edgeStyle=none;exitX=0.5;exitY=1;strokeWidth=2;strokeColor=#999999;fillColor=#999999;dashed=1" parent="1" source="146" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="235.4218750000019" y="859.5781249999985" as="sourcePoint"/><mxPoint x="76.70312500000156" y="983.3749999999992" as="targetPoint"/></mxGeometry></mxCell><mxCell id="248" value="<p><font style="font-size: 14px;">- Users of a shared folder (= repository) share a password<span style="background-color: rgb(235, 235, 235);"><br></span><span style="background-color: rgb(255, 255, 255); line-height: 1.26;">- The local machine is assumed to be secure (no encryption on the local machine)<br>- Input parameters: Password string, list of cipher specs (e.g. AES/GCM/NoPadding, 128 bit)<br></span><span style="line-height: 1.26; background-color: rgb(255, 255, 255);">- The user password is used to derive one symmetric key per cipher using PBKDF2 (12 byte salt, 1 million rounds)<br></span><span style="line-height: 1.26; background-color: rgb(255, 255, 255);">- The derived symmetric key(s) are used to encrypt files; each key is reused in max. 100 files (~ 200 MB)<br></span><span style="line-height: 1.26; background-color: rgb(255, 255, 255);">- Cipher algorithms are configurable, but not every cipher is allowed: <br>&nbsp; only AES and Twofish (128/256 bit), only authenticated modes (as of now only GCM; no ECB, CBC, etc.)<br></span><span style="line-height: 1.26; background-color: rgb(255, 255, 255);">- Ciphers are initialized with a random initialization vector (IV), IVs are never re-used<br></span><span style="line-height: 1.26; background-color: rgb(255, 255, 255);">- Multiple cipher algorithms can be nested/chained (1-n ciphers), e.g. AES-128 and Twofish-256<br></span><span style="line-height: 1.26; background-color: rgb(255, 255, 255);">- Cipher configurations, IVs and salts are authenticated with an HMAC-SHA256</span></font></p>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;" vertex="1" parent="1"><mxGeometry x="327.10937500000284" y="83.99999999999997" width="868.9531249999981" height="190.00000000000003" as="geometry"/></mxCell><mxCell id="249" value="Generic crypto file format" style="swimlane;whiteSpace=wrap" vertex="1" parent="1"><mxGeometry x="315.3046875000009" y="282.87500000000136" width="889.1093750000018" height="221.12499999999864" as="geometry"/></mxCell><mxCell id="253" value="General security design concepts and assumptions" style="swimlane;whiteSpace=wrap" vertex="1" parent="1"><mxGeometry x="314.7968750000026" y="58.99218749999932" width="889.6171875" height="223.4999999999999" as="geometry"/></mxCell><mxCell id="254" value="What is Syncany?" style="swimlane;whiteSpace=wrap" vertex="1" parent="1"><mxGeometry x="-0.03124999999909095" y="58.99218749999933" width="315.09375" height="455.0078125000007" as="geometry"/></mxCell><mxCell id="255" value="<p><font style="font-size: 14px;">Syncany is an open-source cloud storage and filesharing application. It allows users to backup and share certain folders of their workstations using any kind of storage, e.g. FTP, Amazon S3 or Google Storage.&nbsp;<br><br>While the basic idea is similar to Dropbox and JungleDisk, Syncany is open-source and additionally provides data encryption and more flexibility in terms of storage type and provider:&nbsp;<br><br>- Data encryption: Syncany encrypts the files locally, so that any online storage can be used even for sensitive data.<br><br>-&nbsp;Arbitrary storage: Syncany uses a plug-in based storage system. It can be used with any type of remote storage.</font></p><p></p>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;fontSize=12" vertex="1" parent="1"><mxGeometry x="8.515625000000886" y="82.00000000000018" width="300" height="344.7499999999999" as="geometry"/></mxCell><mxCell id="256" value="<p style="text-align: center;"><div style="text-align: left;"><b style="line-height: 1.26; background-color: rgb(255, 255, 255);">Details: www.syncany.org</b></div><b><div style="text-align: left;"><b style="line-height: 1.26; background-color: rgb(255, 255, 255);">Code: github.com/binwiederhier/syncany</b></div></b></p>" style="text;html=1;spacing=5;spacingTop=-10;whiteSpace=wrap;overflow=hidden;" vertex="1" parent="1"><mxGeometry x="30.421875000001894" y="433.8750000000002" width="280" height="52.24999999999983" as="geometry"/></mxCell><mxCell id="257" value="" style="whiteSpace=wrap;align=left;fontStyle=1;fillColor=#E6E6E6" vertex="1" parent="1"><mxGeometry x="0.9687500000008575" y="504" width="1205.09375" height="14" as="geometry"/></mxCell></root></mxGraphModel>