aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/img/reverse-derivePathIV.svg368
-rw-r--r--docs/img/reverse-file-content-encryption.svg831
-rw-r--r--docs/reverse_mode.md59
-rw-r--r--mkdocs.yml1
4 files changed, 1259 insertions, 0 deletions
diff --git a/docs/img/reverse-derivePathIV.svg b/docs/img/reverse-derivePathIV.svg
new file mode 100644
index 0000000..622cec1
--- /dev/null
+++ b/docs/img/reverse-derivePathIV.svg
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="144.88924mm"
+ height="40.864796mm"
+ viewBox="0 0 513.38705 144.79651"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="reverse-derivePathIV.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5546"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5546-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544-4-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5546-5-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544-4-3-0"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5546-5-6-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544-4-32"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5546-5-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5546-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="124.43727"
+ inkscape:cy="16.710939"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ showguides="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="2"
+ fit-margin-left="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-nodes="false"
+ inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-page="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4153"
+ dotted="true"
+ units="mm"
+ spacingx="3.543307"
+ spacingy="3.5433069"
+ originx="-187.87516"
+ originy="-734.38305" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-187.87518,-173.18251)">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-5-6"
+ width="258.45673"
+ height="101.56697"
+ x="205.90118"
+ y="203.47627"
+ ry="25.032757" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-5"
+ width="258.45673"
+ height="101.56697"
+ x="201.5341"
+ y="206.10271"
+ ry="25.032757" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-8-7-6"
+ width="108.09958"
+ height="101.56697"
+ x="496.57141"
+ y="202.78397"
+ ry="25.032757" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-8-7"
+ width="108.09958"
+ height="101.56697"
+ x="492.58456"
+ y="205.4415"
+ ry="25.032757" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:60px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:45.09999847px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="216.14174"
+ y="272.83463"
+ id="text8326"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan8328"
+ x="216.14174"
+ y="272.83463" /></text>
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3"
+ width="258.45673"
+ height="101.56697"
+ x="197.14265"
+ y="208.82544"
+ ry="25.032757" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="324.54794"
+ y="260.64053"
+ id="text4155-6-5-7-9-1-6"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-7"
+ x="324.54794"
+ y="260.64053"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle">SHA256(path + \0 + )</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-8"
+ width="108.09958"
+ height="101.56697"
+ x="488.90137"
+ y="208.58078"
+ ry="25.032757" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="542.45929"
+ y="251.88199"
+ id="text4155-6-5-7-9-1-9"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-1"
+ x="542.45929"
+ y="251.88199"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle">Truncate</tspan><tspan
+ sodipodi:role="line"
+ x="542.45929"
+ y="270.63568"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle"
+ id="tspan3903">to 128 bits</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="243.45589"
+ y="191.70338"
+ id="text4155-6-5-7-9-1-6-1"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-7-2"
+ x="243.45589"
+ y="191.70338"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle">derivePathIV:</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="359.01926"
+ y="243.60832"
+ id="text4155-6-5-7-9-1-6-9"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-7-3"
+ x="359.01926"
+ y="243.60832"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start">&quot;DIRIV&quot;</tspan><tspan
+ sodipodi:role="line"
+ x="359.01926"
+ y="262.36203"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start"
+ id="tspan3880">&quot;FILEID&quot;</tspan><tspan
+ sodipodi:role="line"
+ x="359.01926"
+ y="281.11572"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start"
+ id="tspan3882">&quot;BLOCK0IV&quot;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="397.48032"
+ y="262.20465"
+ id="text3884"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3886"
+ x="397.48032"
+ y="262.20465"> </tspan></text>
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544)"
+ d="m 467.71652,237.40151 14.17323,0"
+ id="path3905"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544-4)"
+ d="m 468.04554,256.39617 14.17323,0"
+ id="path3905-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544-4-3)"
+ d="m 467.27501,275.89842 14.17323,0"
+ id="path3905-0-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544-6)"
+ d="m 610.83744,236.96338 14.17323,0"
+ id="path3905-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544-4-32)"
+ d="m 611.16646,255.95804 14.17323,0"
+ id="path3905-0-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544-4-3-0)"
+ d="m 610.39593,275.46029 14.17323,0"
+ id="path3905-0-1-4"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="629.33856"
+ y="242.13907"
+ id="text4155-6-5-7-9-1-6-1-9"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-7-2-3"
+ x="629.33856"
+ y="242.13907"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start">DirIV</tspan><tspan
+ sodipodi:role="line"
+ x="629.33856"
+ y="260.89276"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start"
+ id="tspan5253">FileID</tspan><tspan
+ sodipodi:role="line"
+ x="629.33856"
+ y="279.64645"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start"
+ id="tspan5255">Block0IV</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot5257"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="translate(175.80569,172.67743)"><flowRegion
+ id="flowRegion5259"><rect
+ id="rect5261"
+ width="7.0866141"
+ height="14.173228"
+ x="483.24942"
+ y="68.267387" /></flowRegion><flowPara
+ id="flowPara5263"></flowPara></flowRoot> </g>
+</svg>
diff --git a/docs/img/reverse-file-content-encryption.svg b/docs/img/reverse-file-content-encryption.svg
new file mode 100644
index 0000000..20e7e39
--- /dev/null
+++ b/docs/img/reverse-file-content-encryption.svg
@@ -0,0 +1,831 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="213.51266mm"
+ height="90.3311mm"
+ viewBox="0 0 756.54092 320.07084"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="reverse-file-content-encryption.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker15863"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path15865"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker15494"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path15496" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker15340"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path15342"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12388"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path12390" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker10869"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path10871"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker10733"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path10735" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker10584"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path10586"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker10326"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path10328" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker9690"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path9692"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker8607"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path8609" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4422"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path4424" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5544"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path5546"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker8949"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path8951" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker8949-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path8951-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker8949-65"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path8951-6" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="355.10654"
+ inkscape:cy="79.441174"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:window-width="960"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="0"
+ fit-margin-top="2"
+ fit-margin-left="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-nodes="false"
+ inkscape:snap-bbox-midpoints="false"
+ inkscape:guide-bbox="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4153"
+ dotted="true"
+ units="mm"
+ spacingx="3.543307"
+ spacingy="3.5433069"
+ originx="48.888345"
+ originy="-624.4041" />
+ <sodipodi:guide
+ position="324.8613,229.75003"
+ orientation="1,0"
+ id="guide16693" />
+ <sodipodi:guide
+ position="390.4416,236.52723"
+ orientation="1,0"
+ id="guide17163" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(48.888352,-107.88726)">
+ <rect
+ style="opacity:1;fill:#b0b0b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4273-2"
+ width="202.04813"
+ height="229.68066"
+ x="498.51782"
+ y="164.82323" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4267-1"
+ width="180.77991"
+ height="21.25984"
+ x="509.90225"
+ y="177.34044" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4269-7"
+ width="180.77988"
+ height="106.29918"
+ x="509.15195"
+ y="280.31494" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="506.88553"
+ y="154.75613"
+ id="text4155-7"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-2"
+ x="506.88553"
+ y="154.75613"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">&quot;5qbHc9O.../7GMW91...&quot;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="576.00201"
+ y="192.36095"
+ id="text4155-88-3"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7"
+ x="576.00201"
+ y="192.36095"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">File ID</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="567.89215"
+ y="272.82034"
+ id="text4155-88-4-5"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-8-2"
+ x="567.89215"
+ y="272.82034"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">Block N</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="588.198"
+ y="296.78885"
+ id="text4155-88-3-5"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-3"
+ x="588.198"
+ y="296.78885"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">IV</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="530.06659"
+ y="356.59521"
+ id="text4155-88-3-5-2"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-3-1"
+ x="530.06659"
+ y="356.59521"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">authentication tag</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="552.05615"
+ y="337.29764"
+ id="text4155-88-3-5-5"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-3-11"
+ x="552.05615"
+ y="337.29764"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">Ciphertext +</tspan><tspan
+ sodipodi:role="line"
+ x="552.05615"
+ y="356.05133"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px"
+ id="tspan10041" /></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:60px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:45.09999847px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="216.14174"
+ y="272.83463"
+ id="text8326"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan8328"
+ x="216.14174"
+ y="272.83463" /></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.00295734px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-225.4877"
+ y="594.10767"
+ id="text8334"
+ sodipodi:linespacing="125%"
+ transform="matrix(0,-0.99980293,1.0001971,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan8336"
+ x="-225.4877"
+ y="594.10767">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.00295734px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-408.77975"
+ y="594.10767"
+ id="text8334-6"
+ sodipodi:linespacing="125%"
+ transform="matrix(0,-0.99980293,1.0001971,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan8336-8"
+ x="-408.77975"
+ y="594.10767">...</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect8358"
+ width="180.77988"
+ height="85.039352"
+ x="509.15195"
+ y="301.57477" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="18.834337"
+ y="233.87454"
+ id="text4155-88-3-5-5-3"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ x="18.834337"
+ y="233.87454"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle"
+ id="tspan16679">Plaintext</tspan><tspan
+ sodipodi:role="line"
+ x="18.834337"
+ y="252.62823"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle"
+ id="tspan16683">file</tspan><tspan
+ sodipodi:role="line"
+ x="18.834337"
+ y="271.38193"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle"
+ id="tspan16685">content</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect8358-5"
+ width="124.56487"
+ height="226.44708"
+ x="-36.940445"
+ y="139.14766" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1"
+ width="127.60939"
+ height="21.259842"
+ x="275.38821"
+ y="329.00232"
+ ry="10.629921" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="307.97012"
+ y="344.46863"
+ id="text4155-6-5-7-9-1"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8"
+ x="307.97012"
+ y="344.46863"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">AES-SIV</tspan></text>
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8949)"
+ d="m 93.903016,339.71623 174.939234,0.0845"
+ id="path8941"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.10359192px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;letter-spacing:67.72786713px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="340.87183"
+ y="413.68735"
+ id="text4155-8-2"
+ sodipodi:linespacing="125%"
+ transform="scale(0.99921742,1.0007832)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-1-2"
+ x="340.87183"
+ y="413.68735"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.01726532px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle">SHA512(Master key)</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4271-4"
+ width="162.76688"
+ height="21.300985"
+ x="256.84317"
+ y="399.0705" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5544)"
+ d="m 339.49701,395.47719 0,-35.99645"
+ id="path5536"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 353.22384,372.47431 c -2.19348,0 -3.97122,1.77773 -3.97122,3.97121 0,0.30404 0.0341,0.59878 0.0993,0.88266 l -6.07006,6.06851 0,0.9928 0.9928,0.9928 1.98561,0 0.99281,-0.9928 0,-0.9928 0.9928,0 0,-0.9928 0.9928,0 0,-0.9928 1.9856,0 1.09829,-1.09829 c 0.29008,0.0666 0.59102,0.10233 0.90128,0.10233 2.19347,0 3.9712,-1.77773 3.9712,-3.9712 0,-2.19348 -1.77928,-3.96967 -3.9712,-3.96967 z m -3.98518,6.95116 -4.96401,4.96402 0,-0.9928 4.96401,-4.96402 0,0.9928 z m 4.96401,-2.9784 c -0.54759,0 -0.9928,-0.44521 -0.9928,-0.9928 0,-0.54759 0.44521,-0.9928 0.9928,-0.9928 0.5476,0 0.99281,0.44521 0.99281,0.9928 0,0.54759 -0.44521,0.9928 -0.99281,0.9928 z"
+ id="path7910"
+ style="fill:#ffcc00;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#aa00d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="344.5473"
+ y="309.41483"
+ id="text4155-88-3-5-0"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-3-8"
+ x="344.5473"
+ y="309.41483"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;fill:#aa00d4">IV</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#37abc8;fill-opacity:0.99607843;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="261.14655"
+ y="310.38989"
+ id="text4155-88-3-5-0-3"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-3-8-5"
+ x="261.14655"
+ y="310.38989"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;fill:#37abc8;fill-opacity:0.99607843">AAD</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="145.4651"
+ y="130.82921"
+ id="text4155-7-6"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-2-7"
+ x="145.4651"
+ y="130.82921"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">File Name Encryption</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-43.236687"
+ y="130.12689"
+ id="text4155-7-5"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-2-3"
+ x="-43.236687"
+ y="130.12689"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px">&quot;Photos/Team.jpg&quot;</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-3-5"
+ width="182.23918"
+ height="21.259842"
+ x="131.98872"
+ y="115.47388"
+ ry="10.629921" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8949-6)"
+ d="m 98.45312,126.35605 25.33546,0.0845"
+ id="path8941-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="342.45703"
+ y="144.19501"
+ id="text4155-88-4-5-8-0"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ x="342.45703"
+ y="144.19501"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1"
+ id="tspan3519">encrypted path</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.9999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-3-0-8"
+ width="34.75692"
+ height="21.259842"
+ x="439.73792"
+ y="256.55804"
+ ry="10.629921" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="457.05856"
+ y="271.14389"
+ id="text4155-6-5-7-9-1-6-1-2-9"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-7-2-3-7"
+ x="457.05856"
+ y="271.14389"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0px;text-anchor:middle">+</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:67.66333771px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="475.72171"
+ y="235.82549"
+ id="text4155-88-4-5-8-7"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-8-2-7-8"
+ x="475.72171"
+ y="235.82549"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;fill:#000000;fill-opacity:1">N</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999982;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3336-9-4-2-0-1-3-3"
+ width="111.60466"
+ height="21.259842"
+ x="159.36255"
+ y="181.11548"
+ ry="10.629921" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="168.65309"
+ y="196.1916"
+ id="text4155-6-5-7-9-1-6-1"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-3-0-7-6-8-7-2"
+ x="168.65309"
+ y="196.1916"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;text-anchor:start">derivePathIV</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:end;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="382.2092"
+ y="182.71701"
+ id="text4155-88-3-0-6"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-36-3"
+ x="382.2092"
+ y="182.71701"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;text-anchor:end">FileID</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.01774597px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:end;letter-spacing:67.66333771px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="406.0256"
+ y="211.2795"
+ id="text4155-88-3-1-2"
+ sodipodi:linespacing="125%"
+ transform="scale(1.0001971,0.99980293)"><tspan
+ sodipodi:role="line"
+ id="tspan4157-9-7-0-0"
+ x="406.0256"
+ y="211.2795"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.00295734px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;text-anchor:end">Block0IV</tspan></text>
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker9690)"
+ d="m 596.91113,257.76116 0.14766,-16.81603 -134.77718,0 0,11.98319"
+ id="path10200"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10326)"
+ d="m 457.08661,279.9212 0,10.62992 46.06299,0"
+ id="path10562"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10584)"
+ d="m 457.08661,290.55112 -92.12599,0 0,31.88977"
+ id="path10576"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path8737-56-5"
+ cx="456.85062"
+ cy="290.48593"
+ rx="3.1063631"
+ ry="3.1051385" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10733)"
+ d="m 460.61698,240.94482 -146.19701,0 0,81.49607"
+ id="path10723"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path8737-56-5-4"
+ cx="462.28812"
+ cy="241.27382"
+ rx="3.1063631"
+ ry="3.1051385" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker12388)"
+ d="m 275.71456,187.79521 227.15906,0"
+ id="path12366"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <ellipse
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path8737-56-5-4-7"
+ cx="301.32202"
+ cy="187.67709"
+ rx="3.1063631"
+ ry="3.1051385" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8949-65)"
+ d="m 408.16332,337.93277 94.67031,0.0845"
+ id="path8941-93"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker15494)"
+ d="m 213.79525,141.73231 0,34.4743"
+ id="path15330"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker15340)"
+ d="m 215.04523,150.24092 282.70381,0"
+ id="path15332"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path8737-56-5-4-74"
+ cx="213.69855"
+ cy="150.56615"
+ rx="3.1063631"
+ ry="3.1051385" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect16149"
+ width="7.4712615"
+ height="5.591785"
+ x="448.17633"
+ y="237.95734"
+ ry="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker15863)"
+ d="m 275.68973,196.64057 175.92481,0 0,55.85786"
+ id="path16283"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect16149-5"
+ width="7.4712615"
+ height="5.591785"
+ x="297.37402"
+ y="194.12738"
+ ry="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10869)"
+ d="m 301.1811,187.79521 0,134.64568"
+ id="path12368"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#37abc8;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
+ id="path16660"
+ cx="307.82651"
+ cy="304.9581"
+ rx="10.25"
+ ry="4.5" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:0.99607843;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
+ d="m 301.18301,299.39724 0,3.69022"
+ id="path16662"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:0.99607843;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
+ d="m 314.41826,299.48015 0,3.69022"
+ id="path16662-2"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/docs/reverse_mode.md b/docs/reverse_mode.md
new file mode 100644
index 0000000..3f92edb
--- /dev/null
+++ b/docs/reverse_mode.md
@@ -0,0 +1,59 @@
+Reverse Mode
+============
+
+In **reverse mode**, gocryptfs provides an encrypted view of a
+plain-text directory. The primary use-case are encrypted backups.
+
+To make reverse mode useful, it uses deterministic encryption using
+AES-SIV instead of AES-GCM.
+
+The differences with respect to the "normal" (forward) mode as detailed
+on the [Security](security) page are listed below.
+
+File Contents
+-------------
+
+File contents are encrypted using AES-SIV-512 (RFC5297). The 512-bit
+AES-SIV key is derived from the 256-bit master key by hashing it with
+SHA512.
+
+All values that are random in forward mode (File ID, Block IV)
+are instead deterministically derived from the encrypted path,
+essentially using a salted hash (detailed in the section "derivePathIV").
+As all derived values are explicitely stored in the ciphertext file,
+decryption does not depend on knowledge of the derivation.
+
+The encryption process is shown in the diagram below.
+
+![](img/reverse-file-content-encryption.svg)
+
+Notes:
+
+1. The IV is passed to AES-SIV as described in section 3 of RFC5297
+2. The block number N is contained in the IV as well as in the AAD.
+ Either one or the other would suffice, but this construction simplifies
+ the decryption process by keeping it identical to forward mode.
+ The "duplication" is considered to not have
+ any security impact because S2V (RFC5297 section 2.4) hashes IV and
+ AAD independently before XORing them together.
+
+File Names
+----------
+
+File name encryption is identical to forward mode, with the exception
+that the directory IV (stored in `gocryptfs.diriv`) is not random.
+It is deterministically derived, using derivePathIV, from the encrypted
+path to the directory.
+
+Because the encrypted path to the root directory is "" (the empty string),
+this means that the directory IV in the root directory is always
+`0xa8f7bac432ddc1cb3dc74e684d6ae48b = SHA256("\0DIRIV")`.
+
+derivePathIV: Derive IVs from Encrypted Paths
+----------------------------------------------
+
+derivePathIV concatenates that encrypted path with a null byte and a
+salt string, one of "DIRIV", "FILEID", "BLOCK0IV". The truncated
+SHA256-hashes of each are the outputs.
+
+![](img/reverse-derivePathIV.svg)
diff --git a/mkdocs.yml b/mkdocs.yml
index 455bee7..1f10dc1 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -6,6 +6,7 @@ pages:
- Quickstart: quickstart.md
- Compile from Source: compile.md
- Security: security.md
+- Reverse Mode: reverse_mode.md
- Comparison with Other Projects: comparison.md
- Signed Releases: releases.md
- Source Code Mirrors: mirrors.md