Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
matrix-org
Olm
Commits
807fec2e
Commit
807fec2e
authored
Oct 24, 2016
by
Richard van der Hoff
Browse files
double_ratchet.svg
parent
d8136096
Changes
1
Show whitespace changes
Inline
Side-by-side
docs/double_ratchet.svg
0 → 100644
View file @
807fec2e
<?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"
>
"
OLM_ROOT
"
</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"
>
""
</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"
>
"
\x02
"
</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"
>
"
\x01
"
</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"
>
""
</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"
>
"
OLM_KEYS
"
</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>