Commit 807fec2e authored by Richard van der Hoff's avatar Richard van der Hoff
Browse files

double_ratchet.svg

parent d8136096
<?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="892.75781"
height="561"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="Axolotl.svg">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path4029"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,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="630.66152"
inkscape:cy="166.30515"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<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(0.5,0.5)">
<g
id="g2991">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="48"
width="256"
id="rect2985"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text2987"
y="32"
x="8"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
style="font-size:24px"
y="32"
x="8"
id="tspan2989"
sodipodi:role="line">Initial Shared Secret</tspan></text>
</g>
<g
id="g4701"
transform="translate(192,100)">
<g
id="hkdf_chain_keys">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="80"
width="256"
id="rect3023"
style="fill:none;stroke:#000000" />
<g
id="g3031">
<rect
style="fill:none;stroke:#000000"
id="rect3019"
width="64"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="18"
id="text3025"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3027"
x="32"
y="18">Secret</tspan></text>
</g>
<text
sodipodi:linespacing="125%"
id="text3052"
y="48"
x="128"
style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="48"
x="128"
id="tspan3054"
sodipodi:role="line">HKDF</tspan></text>
<g
transform="translate(0,56)"
id="g3073">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="128"
id="rect3075"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text3077"
y="18"
x="64"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="64"
id="tspan3079"
sodipodi:role="line">Root Key</tspan></text>
</g>
<g
id="g3081"
transform="translate(128,56)">
<rect
style="fill:none;stroke:#000000"
id="rect3083"
width="128"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="64"
y="18"
id="text3085"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3087"
x="64"
y="18">Chain Key</tspan></text>
</g>
<g
id="g4802"
transform="translate(192,0)">
<rect
style="fill:none;stroke:#000000"
id="rect4804"
width="64"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="18"
id="text4806"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4808"
x="32"
y="18">Info</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="m 32,-60 0,56"
id="path4810"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text4812"
y="-64"
x="32"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-64"
x="32"
id="tspan4814"
sodipodi:role="line">&quot;OLM_ROOT&quot;</tspan></text>
</g>
<g
transform="translate(64,0)"
id="g4830">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="64"
id="rect4832"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text4834"
y="18"
x="32"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="32"
id="tspan4836"
sodipodi:role="line">Salt</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4838"
d="m 32,-28 0,24"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="-32"
id="text4840"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4842"
x="32"
y="-32">&quot;&quot;</tspan></text>
</g>
</g>
<g
id="hmac_chain_key"
transform="translate(128,160)">
<rect
style="fill:none;stroke:#000000"
id="rect3147"
width="128"
height="80"
x="0"
y="0"
rx="8"
ry="8" />
<g
id="g3149">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="64"
id="rect3151"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text3153"
y="18"
x="32"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="32"
id="tspan3155"
sodipodi:role="line">Key</tspan></text>
</g>
<g
id="g3157"
transform="translate(64,0)">
<rect
style="fill:none;stroke:#000000"
id="rect3159"
width="64"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="18"
id="text3161"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3163"
x="32"
y="18">Data</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="64"
y="48"
id="text3173"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3175"
x="64"
y="48">HMAC</tspan></text>
<g
transform="translate(0,56)"
id="g3185">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="128"
id="rect3187"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text3189"
y="18"
x="64"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="64"
id="tspan3191"
sodipodi:role="line">Chain Key</tspan></text>
</g>
<text
sodipodi:linespacing="125%"
id="text3225"
y="-32"
x="96"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-32"
x="96"
id="tspan3227"
sodipodi:role="line">&quot;\x02&quot;</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3231"
d="m 96,-28 0,24"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="m 32,-76 0,72"
id="path4639"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(320,56)"
id="hmac_message_key">
<path
inkscape:connector-curvature="0"
id="path4641"
d="m -60,12 56,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="96"
y="-32"
id="text4633"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4635"
x="96"
y="-32">&quot;\x01&quot;</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="m 96,-28 0,24"
id="path4630"
inkscape:connector-curvature="0" />
<rect
ry="8"
rx="8"
y="0"
x="0"
height="80"
width="128"
id="rect3195"
style="fill:none;stroke:#000000" />
<g
id="g3197">
<rect
style="fill:none;stroke:#000000"
id="rect3199"
width="64"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="18"
id="text3201"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3203"
x="32"
y="18">Key</tspan></text>
</g>
<g
transform="translate(64,0)"
id="g3205">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="64"
id="rect3207"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text3209"
y="18"
x="32"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="32"
id="tspan3211"
sodipodi:role="line">Data</tspan></text>
</g>
<text
sodipodi:linespacing="125%"
id="text3213"
y="48"
x="64"
style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="48"
x="64"
id="tspan3215"
sodipodi:role="line">HMAC</tspan></text>
<g
id="g3217"
transform="translate(0,56)">
<rect
style="fill:none;stroke:#000000"
id="rect3219"
width="128"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="64"
y="18"
id="text3221"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3223"
x="64"
y="18">Message Key</tspan></text>
</g>
</g>
<g
transform="translate(320,168)"
id="hkdf_message_keys">
<rect
style="fill:none;stroke:#000000"
id="rect3091"
width="320"
height="80"
x="0"
y="0"
rx="8"
ry="8" />
<g
id="g3093">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="128"
id="rect3095"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text3097"
y="18"
x="64"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="64"
id="tspan3099"
sodipodi:role="line">Secret</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4644"
d="m 64,-28 0,24"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
</g>
<g
id="g3101"
transform="translate(128,0)">
<rect
style="fill:none;stroke:#000000"
id="rect3103"
width="64"
height="24"
x="0"
y="0"
rx="8"
ry="8" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="18"
id="text3105"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3107"
x="32"
y="18">Salt</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="m 32,-28 0,24"
id="path4660"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text3225-6"
y="-32"
x="32"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="-32"
x="32"
id="tspan3227-8"
sodipodi:role="line">&quot;&quot;</tspan></text>
</g>
<g
transform="translate(256,0)"
id="g3109">
<rect
ry="8"
rx="8"
y="0"
x="0"
height="24"
width="64"
id="rect3111"
style="fill:none;stroke:#000000" />
<text
sodipodi:linespacing="125%"
id="text3113"
y="18"
x="32"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="18"
x="32"
id="tspan3115"
sodipodi:role="line">Info</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4664"
d="m 32,-60 0,56"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="32"
y="-64"
id="text4693"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4695"
x="32"
y="-64">&quot;OLM_KEYS&quot;</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="160"
y="48"
id="text3117"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3119"
x="160"
y="48">HKDF</tspan></text>