ma: Add illustrations on key generation and improve figure layout

This commit is contained in:
jaseg 2020-05-26 14:01:28 +02:00
parent a4559b89ff
commit dbb94996ba
6 changed files with 859 additions and 17 deletions

View file

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2020-05-26T11:09:48.570Z" agent="5.0 (Windows)" etag="gZ4aIkYt2tVu5Nz-wrCS" version="13.1.3" type="device"><diagram id="2fsM1MNnFQr76AkjFRDS" name="Page-1">7VtZc6M4EP41fgzFDX6M7XgytVdqMlUz+7Qlg2xrwuGV8bW/fiWQAAmw8YUzE7tSKWhEy/TXx9dC7hnDcPsJg8X8j9iHQU9X/W3PGPV0ve/o5D8V7DKBptpWJplh5DNZIXhF/0E+kElXyIdLYWASx0GCFqLQi6MIeokgAxjHG3HYNA7EWRdgBiuCVw8EVek35CfzTOpaaiF/hmg25zNrKrsSAj6YqVjOgR9vMlE6xnjqGUMcx0l2FG6HMKDG43bJFI0bruZfDMMoaXPD5OHHJFxMPj+FDwvv++OXz8BQH5iWNQhW7IF7uh0QfQMfrcnhjB5+xSBahihJIOZXyTSlATX3vEIPw4So/g3u+OUJlm+Q1aR2Snbc+MRkC3roAUweYrCZowS+LoBHZRvib0Q2T8KAnGnkcJk5DzGDMZiiIBjGQYxTRYYPoDv16JgEx2+wdMX2XDiZ5pOvIU7gttHCWo4bcXgYhzDB5OlUdoPRZ77NnF3nvrApPCf3j3nJa2wmA8xZZ7nqAk9ywCA9Al6rEd5pHFF0ppkxifTfFXXEwTMM1jBBHihEBTwm+Qv/0bKDEoaZsgYQcbyKfEi/pXoYQ6ppDEIUUBMO4xVG1OfUP+GmCupwOB4/2XWgqupwaNuXAdVURVANrQqqW4OpdS1M7QOYZjB8gUsafu0gItZJpFgSTBrFEZTsz0QgQLOInOLswQfU1MR5gkcmD5Hv01lqcRc9IwATGAyA9zZL5fLcZcconPQycWuJEJu6VYHYrIFYvxbEzjXCVn8nYTt1PejV5uKJa5mWep2wNW8dtm4NppLJqeMvGp+dMRww4cPVo21imopriyXKrppFVTSjX3xc27A7tJN+2E4w8h8ptaPMIADLJfJEb8xugH6F2RWGaoaoar2Saaw9HoNhABK0FuesMw+b4SVGaSzzIUsSNh5k0jKP4wO3B+DZ1SOTADyDSUVvCk7+lKfjZbRhkFnqea5koH3kj+L3O60JIri84ngES5Jk9pQcDAkjZOFCs8qCmiA1ijXoWaODJeesSGz27cbwfFAVvW/pApjaeb7F2zBF7Ys+omh94SNqjKfTlD1c3lu0uoaj8zQoMbp3lwO1GyZBrcF49yy4F7F7GmyfBrV7HtTMRn85g+L3nEFEiowzeidUv7MOXeH25LjWpPRO2b5W16UfmcHJ4+Pdd4qKYvHTvxlI6cloK5zt2FmLzM9XUtOkeNBNOy8GDYXaMiS42hYLokgh+OcfTVSrdVwr6lrBmlpxmXSgHU4HrerQz78eICcJ++ZJot8JzbsNoSutOTh6iaiJIW3Lsdc+pOlaRqlyS3rlJfUrxzTnPnf+14b/9T88/9OrffAILQEOK/jf1+YFxIxbr83zHH1H7kjkLOfWyDX36Pc3Z5fB2L45xs1vvEtFdgTXiJiz7V6Gl9UkILxL2Mvwa+9ccGqocbc7F/QLNNC9d8+NSVuqlrixI4JwOje2FMMssRpJb9fcuPl19p0b1/v9h+bGxnFtMYPCB8t5WhG1PUsR5fJHb3gBdFNblA7VVT1Ps3yrn/6TZBF5+VOur8dkDlmX2m22MOtY2kH0KwSMI7jXBZpWWPPV1+uvsDo3dh0Ba7N/qt9Iyzqm27HT1L1OuZLTvPt8YEh9lxzArUGVt8V1DWodl/+4oFYSs3k6rgcLxpWhdY9j95Mg9t6+zlF0Mr4COyCax4h+4aOS+a2gz99lntsWyIosp2PQq30A+2UBad3iiFz5C/v0PVH3LP/4NZKTCb67n+Criqlq1nmOw/d2OkrfEG+6Hml3W+xvvUd0fSAaHPBzIzqv2F1FdLVT+wQjiIlxPk48N+wavnw8P1wooMlp8auzbHjx2z3j6X8=</diagram></mxfile>

Binary file not shown.

View file

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2020-05-26T11:18:02.883Z" agent="5.0 (Windows)" etag="YsSLXK01ZBh7hZ0VPEMf" version="13.1.3" type="device"><diagram id="F6ZKFbFqJY7OJdNG2ES8" name="Page-1">7Vtdc5s4FP01fkyGb/Cj4yTbbZtttt6ZTR4FCKyNjDyy/NVfvxJIgIDETmMHO63byXCvpEvQPefoWigDezzb/EHBfHpHYogHlhFvBvb1wLIc3+A/hWNbOFzTLRwpRXHhMivHBP2A0inHpUsUw4XWkRGCGZrrzohkGYyY5gOUkrXeLSFYv+scpLDlmEQAt73/ophNC2/gGpX/E0TpVN3ZNGTLDKjO0rGYgpisNRfcsFuSMfkrXt9x1x3JyMC9mTImHnA0sG75/0R0ukwJSTEEc7S4jMiMu6MF73KbgBnCYnbF+Kt8PA9u3wzsMSWEFVezzRhikRg16cVvcPtMa/nUFGZsnwGL6J+H+8/On1+Q7z9mEfx78tfnC9PwijgrgJdyPuVcsK2aYJjFI5EnbmUk486rGCymUMQ1uTFlMywvF4ySpzILwpMgjMcEE5qHsmMAgyQqe9ZavCiAYcJb5LzHraRXD2qW08cxDckMMrrlXdZV9lXyp7XEKx+FGDC00sMDmeG0DFfe4Z4gfmPLkHyxPRlH0iWwDT3EgixpBOWoekJ2BLL8RiAGaApZKxC/qD125crz/YrcW8OO1HuYz9ZVyC9ScXEHGaS8z0i18DuVjS2gcP7MxWW0DAVK1lPE4GQOIuFbc+3RwRKSZRbD+GtYOkD0lFLh/bZkGAmk5f4Y0KdvPAxiYqaMS8PVnVbu7UBb4op/nWjLP2IE523NX3zKZ1tByuDmtTiUA1xfz6+jgFLDqel0ANVsIqoOSg0Fr025ClwnNyfaRJr8wfh0fs/5QbKbquWKFrkSE80tQtmUpCQD+Cshc5ml/yBjW7k6gCUjerLhBrGH2vVjnjNXWtcbGTk3tsrI+DM/1I3HulENyi0xyi7Ne0jRLAdv0UdXJqtDmVwYxE4XVgIrtHOs7KtMfH5zCXhJdx25UOYU30nSNsb2FrG34cU7T7xcGoalYebS8cwXcPPzsEmSxIo6F7TYCz33wLBRi/Opw8ZvrSxqIfnQi4bwK26YR1hBvBNYQYLTUgR/T0m4EJoQ6Jpgue5RNOFEl5KClb1pwvA8gSNwYzfWkuCXWkv6xY13XiUIN5p516Dk6FDyhj+DpNd/qW5j75BIOo9i1vM/DJIuOqDkVzJ1zlgKzkKV1KJbq3BH+agYrlAEF89XuYDGu6tcUUjeqk3DTxCvIEMRUBVmATNTzDzAKM1EWD7RIqUvlBzPFilFOMs4zK6Hbeg1q+101KxGR83qHKtkVdvZL25x1oUAh2Rd53/u4A1TQtEPngCA9Wzp+nDIXYtDlon2nsQqoN0XsRT/OzYlY7RSO48TPk+CZMa4ti9Zaz8d+pWq+azO1ug3IysQYvUNlkLeVrcJA6xmxxDDug1jVDfl65aa5wjs9ntnt9Xeazhzdu8uo9R38H05v0d+3/pSxGy9FOEVSvWx9IDPvCI51JsNt634pWL81ob30gbP610bPtzKv1MbFPRPSBus5i6m2ac2WO3KvdSG0W9teCdtcIPetcH+5bRBQf+UtMFt4MLtVRusFibuQLZMQMSWdNfrq/dWiNgfhkbHDk6SQC9qKsQxKGz0TmGzla4PT2H1hKdDYXPYOObi90lhs32erUHhE1rk+6awY/VNYfPDfXs/7t6c90YKvy1ZXSVT48Dgd3Ge1TK+wO3rTgwelnqNAxqFEO1FyTBwHbeLkkEEj0HJoFX/9M1Io4uSrR3Y+2WIUaRnOqRVnvfaleXTxgYdB4jVvMvTxvVUSJdKJIaJiCBSwJGAR9I9Q3Gcy0MXoHRJKM98CyPFQBzYLl6MHfgwj91ItTXcM9XW8VLd3myfwIjCksEHzxctHussElZy7B0Sxs3qLwGKWqj6Ww375n8=</diagram></mxfile>

View file

@ -0,0 +1,790 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:xhtml="http://www.w3.org/1999/xhtml"
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"
style="background-color: rgb(255, 255, 255);"
version="1.1"
width="631px"
height="562px"
viewBox="-0.5 -0.5 631 562"
content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2020-05-26T11:18:14.828Z&quot; agent=&quot;5.0 (Windows)&quot; etag=&quot;gHkfeKd-s41ABWdfvB-v&quot; version=&quot;13.1.3&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;F6ZKFbFqJY7OJdNG2ES8&quot; name=&quot;Page-1&quot;&gt;7Vtdc5s4FP01fkyGb/Cj4yTbbZtttt6ZTR4FCKyNjDyy/NVfvxJIgIDETmMHO63byXCvpEvQPefoWigDezzb/EHBfHpHYogHlhFvBvb1wLIc3+A/hWNbOFzTLRwpRXHhMivHBP2A0inHpUsUw4XWkRGCGZrrzohkGYyY5gOUkrXeLSFYv+scpLDlmEQAt73/ophNC2/gGpX/E0TpVN3ZNGTLDKjO0rGYgpisNRfcsFuSMfkrXt9x1x3JyMC9mTImHnA0sG75/0R0ukwJSTEEc7S4jMiMu6MF73KbgBnCYnbF+Kt8PA9u3wzsMSWEFVezzRhikRg16cVvcPtMa/nUFGZsnwGL6J+H+8/On1+Q7z9mEfx78tfnC9PwijgrgJdyPuVcsK2aYJjFI5EnbmUk486rGCymUMQ1uTFlMywvF4ySpzILwpMgjMcEE5qHsmMAgyQqe9ZavCiAYcJb5LzHraRXD2qW08cxDckMMrrlXdZV9lXyp7XEKx+FGDC00sMDmeG0DFfe4Z4gfmPLkHyxPRlH0iWwDT3EgixpBOWoekJ2BLL8RiAGaApZKxC/qD125crz/YrcW8OO1HuYz9ZVyC9ScXEHGaS8z0i18DuVjS2gcP7MxWW0DAVK1lPE4GQOIuFbc+3RwRKSZRbD+GtYOkD0lFLh/bZkGAmk5f4Y0KdvPAxiYqaMS8PVnVbu7UBb4op/nWjLP2IE523NX3zKZ1tByuDmtTiUA1xfz6+jgFLDqel0ANVsIqoOSg0Fr025ClwnNyfaRJr8wfh0fs/5QbKbquWKFrkSE80tQtmUpCQD+Cshc5ml/yBjW7k6gCUjerLhBrGH2vVjnjNXWtcbGTk3tsrI+DM/1I3HulENyi0xyi7Ne0jRLAdv0UdXJqtDmVwYxE4XVgIrtHOs7KtMfH5zCXhJdx25UOYU30nSNsb2FrG34cU7T7xcGoalYebS8cwXcPPzsEmSxIo6F7TYCz33wLBRi/Opw8ZvrSxqIfnQi4bwK26YR1hBvBNYQYLTUgR/T0m4EJoQ6Jpgue5RNOFEl5KClb1pwvA8gSNwYzfWkuCXWkv6xY13XiUIN5p516Dk6FDyhj+DpNd/qW5j75BIOo9i1vM/DJIuOqDkVzJ1zlgKzkKV1KJbq3BH+agYrlAEF89XuYDGu6tcUUjeqk3DTxCvIEMRUBVmATNTzDzAKM1EWD7RIqUvlBzPFilFOMs4zK6Hbeg1q+101KxGR83qHKtkVdvZL25x1oUAh2Rd53/u4A1TQtEPngCA9Wzp+nDIXYtDlon2nsQqoN0XsRT/OzYlY7RSO48TPk+CZMa4ti9Zaz8d+pWq+azO1ug3IysQYvUNlkLeVrcJA6xmxxDDug1jVDfl65aa5wjs9ntnt9Xeazhzdu8uo9R38H05v0d+3/pSxGy9FOEVSvWx9IDPvCI51JsNt634pWL81ob30gbP610bPtzKv1MbFPRPSBus5i6m2ac2WO3KvdSG0W9teCdtcIPetcH+5bRBQf+UtMFt4MLtVRusFibuQLZMQMSWdNfrq/dWiNgfhkbHDk6SQC9qKsQxKGz0TmGzla4PT2H1hKdDYXPYOObi90lhs32erUHhE1rk+6awY/VNYfPDfXs/7t6c90YKvy1ZXSVT48Dgd3Ge1TK+wO3rTgwelnqNAxqFEO1FyTBwHbeLkkEEj0HJoFX/9M1Io4uSrR3Y+2WIUaRnOqRVnvfaleXTxgYdB4jVvMvTxvVUSJdKJIaJiCBSwJGAR9I9Q3Gcy0MXoHRJKM98CyPFQBzYLl6MHfgwj91ItTXcM9XW8VLd3myfwIjCksEHzxctHussElZy7B0Sxs3qLwGKWqj6Ww375n8=&lt;/diagram&gt;&lt;/mxfile&gt;"
id="svg166"
sodipodi:docname="transmitter scope key illustration.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata170">
<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>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3840"
inkscape:window-height="2097"
id="namedview168"
showgrid="false"
inkscape:zoom="2.3754762"
inkscape:cx="261.99472"
inkscape:cy="336.50624"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g156" />
<defs
id="defs4">
<style
type="text/css"
id="style2">@import url(https://fonts.googleapis.com/css?family=DM+Mono);
</style>
</defs>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 254.62186,70.141186 c 7.88108,-14.356856 15.60339,-18.342058 25.37521,-17.803452 7.19552,0.396605 17.68145,6.18262 22.84724,17.208113"
id="path977"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csc" />
<g
id="g156">
<path
d="M 280 560 L 280 0"
fill="none"
stroke="#6c8ebf"
stroke-miterlimit="10"
stroke-dasharray="3 3"
pointer-events="stroke"
id="path6" />
<path
d="M 490 160 L 610 160 L 630 180 L 630 290 L 510 290 L 490 270 L 490 160 Z"
fill="#f5f5f5"
stroke="#666666"
stroke-miterlimit="10"
pointer-events="all"
id="path8" />
<path
d="M 490 160 L 610 160 L 630 180 L 510 180 Z"
fill-opacity="0.05"
fill="#000000"
stroke="none"
pointer-events="all"
id="path10" />
<path
d="M 490 160 L 510 180 L 510 290 L 490 270 Z"
fill-opacity="0.1"
fill="#000000"
stroke="none"
pointer-events="all"
id="path12" />
<path
d="M 510 290 L 510 180 L 490 160 M 510 180 L 630 180"
fill="none"
stroke="#666666"
stroke-miterlimit="10"
pointer-events="all"
id="path14" />
<g
transform="translate(-0.5 -0.5)"
id="g20">
<switch
id="switch18">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 235px; margin-left: 511px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<xhtml:b>Meter A</xhtml:b>
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="570"
y="239"
fill="#333333"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text16">
<tspan
style="font-weight:bold"
id="tspan1653">Meter A</tspan>
</text>
</switch>
</g>
<path
d="M 320 90 L 350 90 L 460 190 L 481.76 190"
fill="none"
stroke="#82b366"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="stroke"
id="path22" />
<path
d="M 487.76 190 L 479.76 194 L 481.76 190 L 479.76 186 Z"
fill="#82b366"
stroke="#82b366"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="all"
id="path24" />
<path
d="M 320 250 L 350 250 L 460.28 219.93 L 482.04 219.93"
fill="none"
stroke="#d6b656"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="stroke"
id="path26" />
<path
d="M 488.04 219.93 L 480.04 223.93 L 482.04 219.93 L 480.04 215.93 Z"
fill="#d6b656"
stroke="#d6b656"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="all"
id="path28" />
<path
d="M 490 360 L 610 360 L 630 380 L 630 490 L 510 490 L 490 470 L 490 360 Z"
fill="#f5f5f5"
stroke="#666666"
stroke-miterlimit="10"
pointer-events="all"
id="path30" />
<path
d="M 490 360 L 610 360 L 630 380 L 510 380 Z"
fill-opacity="0.05"
fill="#000000"
stroke="none"
pointer-events="all"
id="path32" />
<path
d="M 490 360 L 510 380 L 510 490 L 490 470 Z"
fill-opacity="0.1"
fill="#000000"
stroke="none"
pointer-events="all"
id="path34" />
<path
d="M 510 490 L 510 380 L 490 360 M 510 380 L 630 380"
fill="none"
stroke="#666666"
stroke-miterlimit="10"
pointer-events="all"
id="path36" />
<g
transform="translate(-0.5 -0.5)"
id="g42">
<switch
id="switch40">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 435px; margin-left: 511px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Meter B</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="570"
y="439"
fill="#333333"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
font-weight="bold"
id="text38">Meter B</text>
</switch>
</g>
<path
d="M 320 100 L 350 100 L 458.88 393.15 L 480.64 393.15"
fill="none"
stroke="#82b366"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="stroke"
id="path44" />
<path
d="M 486.64 393.15 L 478.64 397.15 L 480.64 393.15 L 478.64 389.15 Z"
fill="#82b366"
stroke="#82b366"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="all"
id="path46" />
<path
d="M 320 260 L 350 260 L 460.42 422.53 L 482.18 422.53"
fill="none"
stroke="#d6b656"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="stroke"
id="path48" />
<path
d="M 488.18 422.53 L 480.18 426.53 L 482.18 422.53 L 480.18 418.53 Z"
fill="#d6b656"
stroke="#d6b656"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="all"
id="path50" />
<path
d="M 320 330 L 350 330 L 460.56 249.7 L 482.32 249.7"
fill="none"
stroke="#6c8ebf"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="stroke"
id="path52" />
<path
d="M 488.32 249.7 L 480.32 253.7 L 482.32 249.7 L 480.32 245.7 Z"
fill="#6c8ebf"
stroke="#6c8ebf"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="all"
id="path54" />
<path
d="M 320 490 L 350 490 L 459.44 451.39 L 481.2 451.39"
fill="none"
stroke="#6c8ebf"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="stroke"
id="path56" />
<path
d="M 487.2 451.39 L 479.2 455.39 L 481.2 451.39 L 479.2 447.39 Z"
fill="#6c8ebf"
stroke="#6c8ebf"
stroke-width="2"
stroke-miterlimit="10"
pointer-events="all"
id="path58" />
<path
d="m 235,70 h 85 v 40 H 220 V 85 Z"
stroke-miterlimit="10"
pointer-events="all"
id="path108-8-8"
inkscape:connector-curvature="0"
style="opacity:1;vector-effect:none;fill:#d5e8d4;fill-opacity:1;stroke:#82b366;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cccccc" />
<g
transform="translate(-0.5 -0.5)"
id="g66">
<switch
id="switch64">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 90px; margin-left: 221px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">All devices</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="270"
y="94"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text62">All devices</text>
</switch>
</g>
<path
d="M 100 300 L 160 300 L 160 100 L 213.63 100"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="stroke"
id="path68" />
<path
d="M 218.88 100 L 211.88 103.5 L 213.63 100 L 211.88 96.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="all"
id="path70" />
<path
d="m 235,470 h 85 v 40 H 220 v -25 z"
stroke-miterlimit="10"
pointer-events="all"
id="path108-8-8-7-0-9"
inkscape:connector-curvature="0"
style="opacity:1;vector-effect:none;fill:#dae8fc;fill-opacity:1;stroke:#6c8ebf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cccccc" />
<g
transform="translate(-0.5 -0.5)"
id="g78">
<switch
id="switch76">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 490px; margin-left: 221px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<xhtml:div>Series C</xhtml:div>
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="270"
y="494"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text74">Series C</text>
</switch>
</g>
<path
d="M 100 300 L 160 300 L 160 500 L 213.63 500"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="stroke"
id="path80" />
<path
d="M 218.88 500 L 211.88 503.5 L 213.63 500 L 211.88 496.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="all"
id="path82" />
<path
d="m 235,310 h 85 v 40 H 220 v -25 z"
stroke-miterlimit="10"
pointer-events="all"
id="path108-8-8-7"
inkscape:connector-curvature="0"
style="opacity:1;vector-effect:none;fill:#dae8fc;fill-opacity:1;stroke:#6c8ebf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cccccc" />
<path
d="m 235,390 h 85 v 40 H 220 v -25 z"
stroke-miterlimit="10"
pointer-events="all"
id="path108-8-8-7-0"
inkscape:connector-curvature="0"
style="opacity:1;vector-effect:none;fill:#dae8fc;fill-opacity:1;stroke:#6c8ebf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cccccc" />
<g
transform="translate(-0.5 -0.5)"
id="g90">
<switch
id="switch88">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 410px; margin-left: 221px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Series B</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="270"
y="414"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text86">Series B</text>
</switch>
</g>
<path
d="M 100 300 L 160 300 L 160 420 L 213.63 420"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="stroke"
id="path92" />
<path
d="M 218.88 420 L 211.88 423.5 L 213.63 420 L 211.88 416.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="all"
id="path94" />
<g
transform="translate(-0.5 -0.5)"
id="g102">
<switch
id="switch100">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 330px; margin-left: 221px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Series A</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="270"
y="334"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text98">Series A</text>
</switch>
</g>
<path
d="M 100 300 L 160 300 L 160 340 L 213.63 340"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="stroke"
id="path104" />
<path
d="M 218.88 340 L 211.88 343.5 L 213.63 340 L 211.88 336.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="all"
id="path106" />
<path
d="m 235,230 h 85 v 40 H 220 v -25 z"
stroke-miterlimit="10"
pointer-events="all"
id="path108"
inkscape:connector-curvature="0"
style="fill:#ffe6cc;stroke:#d79b00;stroke-miterlimit:10"
sodipodi:nodetypes="cccccc" />
<g
transform="translate(-0.5 -0.5)"
id="g114">
<switch
id="switch112">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 250px; margin-left: 221px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Manufacturer B</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="270"
y="254"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text110">Manufacturer B</text>
</switch>
</g>
<path
d="M 100 300 L 160 300 L 160 260 L 213.63 260"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="stroke"
id="path116" />
<path
d="M 218.88 260 L 211.88 263.5 L 213.63 260 L 211.88 256.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="all"
id="path118" />
<path
d="m 235,150 h 85 v 40 H 220 v -25 z"
stroke-miterlimit="10"
pointer-events="all"
id="path108-8"
inkscape:connector-curvature="0"
style="fill:#ffe6cc;stroke:#d79b00;stroke-miterlimit:10"
sodipodi:nodetypes="cccccc" />
<g
transform="translate(-0.5 -0.5)"
id="g126">
<switch
id="switch124">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 170px; margin-left: 221px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Manufacturer A</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="270"
y="174"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text122">Manufacturer A</text>
</switch>
</g>
<path
d="M 100 300 L 160 300 L 160 180 L 213.63 180"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="stroke"
id="path128" />
<path
d="M 218.88 180 L 211.88 183.5 L 213.63 180 L 211.88 176.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="all"
id="path130" />
<path
d="M 20 280 L 100 280 L 100 320 L 0 320 L 0 300 Z"
fill="#f8cecc"
stroke="#b85450"
stroke-miterlimit="10"
pointer-events="all"
id="path132" />
<g
transform="translate(-0.5 -0.5)"
id="g138">
<switch
id="switch136">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 300px; margin-left: 1px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: center; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<xhtml:b>Root Key</xhtml:b>
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="50"
y="304"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text134">
<tspan
style="font-weight:bold"
id="tspan1655">Root Key</tspan>
</text>
</switch>
</g>
<rect
x="300"
y="12.001603"
width="100"
height="20"
pointer-events="all"
id="rect140"
style="fill:none;stroke:none" />
<g
transform="translate(-0.5,-8.4983964)"
id="g146">
<switch
id="switch144">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 30px; margin-left: 302px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: left; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<xhtml:div>Public Key<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="302"
y="34"
font-size="12px"
font-weight="bold"
id="text142"
style="font-weight:bold;font-size:12px;font-family:Helvetica;fill:#000000">Public Key</text>
</switch>
</g>
<rect
x="160"
y="12.001603"
width="100"
height="20"
pointer-events="all"
id="rect148"
style="fill:none;stroke:none" />
<g
transform="translate(-0.5,-8.4983964)"
id="g154">
<switch
id="switch152">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 98px; height: 1px; padding-top: 30px; margin-left: 160px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0; text-align: right; ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Secret Key</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="258"
y="34"
font-size="12px"
font-weight="bold"
id="text150"
style="font-weight:bold;font-size:12px;font-family:Helvetica;text-anchor:end;fill:#000000">Secret Key</text>
</switch>
</g>
<g
id="g1058">
<ellipse
ry="5.5068855"
rx="8.9103279"
cy="45.713184"
cx="279.94073"
id="path1050"
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.70078731;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
transform="translate(-45.464569,-8.3667436)"
id="g1042">
<g
id="text142-6"
style="font-weight:bold;font-size:12px;font-family:Helvetica;fill:#000000"
aria-label="H" />
<g
id="text142-6-9"
style="font-weight:bold;font-size:8.2537241px;font-family:Helvetica;fill:#000000;stroke-width:1"
aria-label="n" />
</g>
</g>
<g
id="g1100"
transform="translate(0,-1.5605742)">
<flowRoot
transform="matrix(0.30096254,0,0,0.30096254,200.52832,26.372288)"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.32267284"
id="flowRoot1060"
xml:space="preserve"><flowRegion
style="stroke-width:3.32267284"
id="flowRegion1062"><rect
style="stroke-width:3.32267284"
y="41.525402"
x="248.37126"
height="90.034584"
width="75.984764"
id="rect1064" /></flowRegion><flowPara
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif Light';stroke-width:3.32267284"
id="flowPara1066">H</flowPara></flowRoot> <flowRoot
transform="matrix(0.22181595,0,0,0.22181595,229.56254,25.409831)"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.50824213"
id="flowRoot1060-9"
xml:space="preserve"><flowRegion
style="stroke-width:4.50824213"
id="flowRegion1062-2"><rect
style="stroke-width:4.50824213"
y="41.525402"
x="248.37126"
height="90.034584"
width="75.984764"
id="rect1064-3" /></flowRegion><flowPara
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif Light';stroke-width:4.50824213"
id="flowPara1066-6">n</flowPara></flowRoot> </g>
</g>
<path
inkscape:connector-curvature="0"
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
d="m 302.84431,69.545847 -6.51967,-4.329424 3.90669,-0.224132 2.16472,-3.259833 z"
stroke-miterlimit="10"
pointer-events="all"
id="path70-1" />
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

View file

@ -1674,8 +1674,54 @@ least significant bit of $n$ in our $H^n$ construction. In the chain of valid si
disarm signature. Reset and disarm signatures would alternate in this scheme. By skipping a disarm signature two resets
can still be triggered directly after one another.
% FIXME diagram
% FIXME include domain mechanism
In practice it may be useful to have some control over which particular meters reset. An attack exploiting a particular
network protocol implementation flaw might only affect one series of meters made by one manufacturer. Resetting
\emph{all} meters may be too much in this case. A simple solution for this is to define adressable subsets of meters.
``All meters'' along with ``meters made by manufacturer $x$'' and ``meters of model $y$'' are good choices for such
scopes. On the cryptographic level the protocol state is simply duplicated for each scope. This incurs memory and
computation overhead linear in the number of scopes. Device memory requirements are small at a few bytes only and
computation is of no concern due to the very slow channel so this simple solution is adequate. The transmitter has to
either store copies of all scope's keys or derive these keys from a root key using the scope's identifier. Keys are
small and the transmitter would be using a regular server or hardware security module so either easily feasible.
A diagram of the key structure in this key management scheme is shown in Figure \ref{fig:sig_key_chain}. The
transmitter key management is shown in Figure \ref{fig:tx_scope_key_illu}. This scheme is simplistic but suffices for
our prototype in Section \ref{sec-prototype} and may even be useful in a practical implementation. During
standardization of a safety reset system the key management system would most likely have to be customized to the
particular application's requirements. Developing an universal solution is outside the scope of this work.
\begin{figure}
\centering
\begin{minipage}[c]{0.5\textwidth}
\includegraphics{resources/signature_key_chain}
\end{minipage}
\begin{minipage}[c]{0.45\textwidth}
\caption{
The hash chain between secret transmitter key and public device key. Each step represents one invocation of the
hash function. To generate a new chain a random transmitter key is generated, then hashed $n$ times to
generate the corresponding device key. A new trigger message can be generated by generating the key at depth
$m-1$ where $m$ is the height of the last used trigger, or $n$ initially. Every second trigger message is a
disarm message and every second one a reset message. Depending on which is needed the other one may be skipped.
}
\label{fig:sig_key_chain}
\end{minipage}
\end{figure}
\begin{figure}
\centering
\includegraphics{resources/transmitter_scope_key_illustration}
\caption{
An illustration of a key management system using a shared master key. The transmitter derives one secret key for
each adressable group from the master key. Then public device keys are generated like in Figure
\ref{fig:sig_key_chain}. Finally for each device the manufacturer picks the group public keys matching the
device. In this example one device is a series A meter made by manufacturer B so it gets provisioned with the
keys for the ``all devices'', ``manufacturer B'' and ``series A'' keys. The other device is also made by
manufacturer B but is a series C device so it gets provisioned with the ``all devices'', ``manufacturer B'' and
``series C'' public device keys. In this example the transmitter stores (or is able to derive) all six shown
group keys, but each device only needs to store the three applying to it for the three scopes ``all devices'',
``manufacturer'' and ``series''.
}
\label{fig:tx_scope_key_illu}
\end{figure}
\chapter{Practical implementation}
@ -1702,12 +1748,11 @@ transmission networks to characterize the operational state of the network.
From a superficial viewpoint measuring mains frequency might seem like a simple problem. Take the mains voltage
waveform, measure time between two rising-edge (or falling-edge) zero-crossings and take the inverse $f = t^{-1}$. In
practice, phasor measurement units are significantly more complex than this. This discrepancy is due to the unhealthy
% FIXME is this pun ok?
combination of both high precision and quick response that is demanded from these units. High precision is necessary
since variations of mains frequency under normal operating conditions are quite small--in the range of
\SIrange{5}{10}{\milli\hertz} over short intervals of time. Relative to the nominal \SI{50}{\hertz} this is a derivation of
less than \SI{100}{ppm} Relative to the corresponding \SI{20}{\milli\second} period that means a time derivation of
practice, phasor measurement units are significantly more complex than this. This discrepancy is due to the combination
of both high precision and quick response that is demanded from these units. High precision is necessary since
variations of mains frequency under normal operating conditions are quite small--in the range of
\SIrange{5}{10}{\milli\hertz} over short intervals of time. Relative to the nominal \SI{50}{\hertz} this is a derivation
of less than \SI{100}{ppm} Relative to the corresponding \SI{20}{\milli\second} period that means a time derivation of
about $2 \mu\text{s}$ from cycle to cycle. From this it is already obvious why a simplistic measurement cannot yield the
required precision for manageable averaging times--we would need either a ADC sampling rate in the order of megabits or
for a reconstruction through interpolated readings an impractically high ADC resolution.
@ -2077,7 +2122,7 @@ gold code looks to yield good enough performance at manageable data rates.
\begin{figure}
\centering
\includegraphics{../lab-windows/fig_out/dsss_gold_nbits_overview}
\includegraphics[width=0.6\textwidth]{../lab-windows/fig_out/dsss_gold_nbits_overview}
\caption{
Symbol Error Rate (SER) as a function of transmission amplitude. The line represents the mean of several
measurements for each parameter set. The shaded areas indicate one standard deviation from the mean. Background
@ -2095,14 +2140,18 @@ gold code looks to yield good enough performance at manageable data rates.
\begin{figure}
\centering
\includegraphics{../lab-windows/fig_out/dsss_gold_nbits_sensitivity}
\caption{
Amplitude at a SER of 0.5\ in mHz depending on symbol length. Here we can observe an increase of sensitivity
with increasing symbol length, but we can clearly see diminishing returns above 6 bit (63 chips). Considering
that each bit roughly doubles overall transmission time for a given data length it seems lower bit counts are
preferrable if the necessary transmitter power can be realized.
}
\label{dsss_gold_nbits_sensitivity}
\begin{minipage}[c]{0.5\textwidth}
\includegraphics{../lab-windows/fig_out/dsss_gold_nbits_sensitivity}
\end{minipage}
\begin{minipage}[c]{0.45\textwidth}
\caption{
Amplitude at a SER of 0.5\ in mHz depending on symbol length. Here we can observe an increase of sensitivity
with increasing symbol length, but we can clearly see diminishing returns above 6 bit (63 chips). Considering
that each bit roughly doubles overall transmission time for a given data length it seems lower bit counts are
preferrable if the necessary transmitter power can be realized.
}
\label{dsss_gold_nbits_sensitivity}
\end{minipage}
\end{figure}
\subsection{Sensitivity versus peak detection threshold factor}
@ -2239,6 +2288,7 @@ the results for both are very close in absolute value.
\end{figure}
\section{Implementation of a demonstrator unit}
\label{sec-prototype}
To demonstrate the viability of our reset architecture we decided to implement a demonstrator system. In this
demonstrator we use JTAG to reset part of a commodity smart meter from an externally-connected reset controller. The