Files
buergerabstimmung/drawio/3datenflussvergabestelle.drawio

113 lines
15 KiB
Plaintext

<mxfile host="app.diagrams.net" agent="Buergerabstimmung" version="24.0.0">
<diagram name="Datenfluss" id="dfl-vfb">
<mxGraphModel dx="1100" dy="1560" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="1560" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="t" value="Bürgerabstimmung — Datenfluss und Speicherung" style="text;html=1;align=center;verticalAlign=middle;fontSize=20;fontStyle=1;fontColor=#111111;" vertex="1" parent="1">
<mxGeometry x="40" y="16" width="1020" height="30" as="geometry" />
</mxCell>
<mxCell id="u" value="Jeder Pfeil nennt den Wert, der übertragen wird. Gelesen wird aus dem Ausweis nur die RestrictedID." style="text;html=1;align=center;verticalAlign=middle;fontSize=13;fontStyle=0;fontColor=#555555;" vertex="1" parent="1">
<mxGeometry x="40" y="48" width="1020" height="20" as="geometry" />
</mxCell>
<mxCell id="lane0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F7F7F7;strokeColor=#BBBBBB;dashed=1;" vertex="1" parent="1">
<mxGeometry x="40" y="84" width="320" height="1170" as="geometry" />
</mxCell>
<mxCell id="kopf0" value="Bürgerin oder Bürger&lt;br&gt;&lt;font style=&quot;font-size:11px&quot;&gt;Handy, AusweisApp, Personalausweis&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#37474F;strokeColor=none;fontColor=#FFFFFF;fontSize=14;fontStyle=1;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="40" y="84" width="320" height="50" as="geometry" />
</mxCell>
<mxCell id="lane1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F7F7F7;strokeColor=#BBBBBB;dashed=1;" vertex="1" parent="1">
<mxGeometry x="390" y="84" width="320" height="1170" as="geometry" />
</mxCell>
<mxCell id="kopf1" value="Webserver Bürgerabstimmung&lt;br&gt;&lt;font style=&quot;font-size:11px&quot;&gt;PHP, SQLite&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#37474F;strokeColor=none;fontColor=#FFFFFF;fontSize=14;fontStyle=1;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="390" y="84" width="320" height="50" as="geometry" />
</mxCell>
<mxCell id="lane2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F7F7F7;strokeColor=#BBBBBB;dashed=1;" vertex="1" parent="1">
<mxGeometry x="740" y="84" width="320" height="1170" as="geometry" />
</mxCell>
<mxCell id="kopf2" value="eID-Server&lt;br&gt;&lt;font style=&quot;font-size:11px&quot;&gt;BSI TR-03130&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#37474F;strokeColor=none;fontColor=#FFFFFF;fontSize=14;fontStyle=1;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="740" y="84" width="320" height="50" as="geometry" />
</mxCell>
<mxCell id="s1" value="&lt;b&gt;1&lt;/b&gt;&amp;nbsp; Nutzer tippt „Ausweis auflegen“" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=1;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="70" y="160" width="260" height="50" as="geometry" />
</mxCell>
<mxCell id="s2" value="&lt;b&gt;2&lt;/b&gt;&amp;nbsp; Vorgang anlegen&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;INSERT eid_flows&lt;br&gt;(nonce 32 hex, session_id, created_at)&lt;br&gt;gültig 600 Sekunden&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=1;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="420" y="255" width="260" height="85" as="geometry" />
</mxCell>
<mxCell id="s3" value="&lt;b&gt;3&lt;/b&gt;&amp;nbsp; AusweisApp startet und&lt;br&gt;fordert das TC-Token an" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=1;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="70" y="370" width="260" height="55" as="geometry" />
</mxCell>
<mxCell id="s4" value="&lt;b&gt;4&lt;/b&gt;&amp;nbsp; TC-Token erzeugen&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;ServerAddress&lt;br&gt;SessionIdentifier&lt;br&gt;RefreshAddress = /eid/callback&lt;br&gt;Binding = urn:liberty:paos:2006-08&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=1;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="420" y="460" width="260" height="95" as="geometry" />
</mxCell>
<mxCell id="s5" value="&lt;b&gt;5&lt;/b&gt;&amp;nbsp; AusweisApp verbindet sich&lt;br&gt;mit dem eID-Server" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=1;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="70" y="590" width="260" height="55" as="geometry" />
</mxCell>
<mxCell id="s6" value="&lt;b&gt;6&lt;/b&gt;&amp;nbsp; eID-Server fordert an&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;UseOperations:&lt;br&gt;RestrictedIdentification REQUIRED&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1B5E20;strokeWidth=2;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="770" y="680" width="260" height="75" as="geometry" />
</mxCell>
<mxCell id="s7" value="&lt;b&gt;7&lt;/b&gt;&amp;nbsp; Ausweis auflegen&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;NFC ISO/IEC 14443&lt;br&gt;PACE mit 6-stelliger eID-PIN&lt;br&gt;&lt;br&gt;Der Ausweis gibt nur die RestrictedID heraus.&lt;br&gt;Name, Anschrift, Geburtsdatum&lt;br&gt;bleiben im Chip.&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1B5E20;strokeWidth=2;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="70" y="790" width="260" height="125" as="geometry" />
</mxCell>
<mxCell id="s8" value="&lt;b&gt;8&lt;/b&gt;&amp;nbsp; eID-Server hält das&lt;br&gt;Ergebnis bereit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1B5E20;strokeWidth=2;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="770" y="950" width="260" height="55" as="geometry" />
</mxCell>
<mxCell id="s9" value="&lt;b&gt;9&lt;/b&gt;&amp;nbsp; Konto anlegen oder wiederfinden&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;pseudonym_hash = hash_hmac('sha256',&lt;br&gt;RestrictedID, pepper)&lt;br&gt;INSERT INTO users (pseudonym_hash, lang, …)&lt;br&gt;&lt;br&gt;RestrictedID verworfen, eid_flows gelöscht&lt;br&gt;pepper: 32 Byte, nur im Dateisystem&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1B5E20;strokeWidth=2;fontSize=13;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="420" y="1045" width="260" height="130" as="geometry" />
</mxCell>
<mxCell id="e1" value="HTTPS&lt;br&gt;GET /eid/start" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s1" target="s2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e2" value="303 auf 127.0.0.1:24727/eID-Client&lt;br&gt;?tcTokenURL=https://&amp;lt;host&amp;gt;/eid/tctoken?s=&amp;lt;nonce&amp;gt;" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s2" target="s3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e3" value="HTTPS&lt;br&gt;GET /eid/tctoken?s=&amp;lt;nonce&amp;gt;" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s3" target="s4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e4" value="TC-Token (XML)" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s4" target="s5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e5" value="PAOS über TLS&lt;br&gt;SessionIdentifier" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s5" target="s6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e6" value="Berechtigungszertifikat (CVC)&lt;br&gt;darin steht, welche Felder erlaubt sind" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s6" target="s7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e7" value="&lt;b&gt;RestrictedID&lt;/b&gt;" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#1B5E20;strokeWidth=3;fontSize=11;fontFamily=Courier New;fontColor=#1B5E20;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s7" target="s8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e8" value="&lt;b&gt;RestrictedID&lt;/b&gt;&lt;br&gt;getResultResponse&lt;br&gt;SOAP über HTTPS, Client-Zertifikat" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#1B5E20;strokeWidth=3;fontSize=11;fontFamily=Courier New;fontColor=#1B5E20;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;" edge="1" parent="1" source="s8" target="s9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="tr" value="Nach der Anmeldung — was beim Nutzen gespeichert wird" style="text;html=1;align=center;verticalAlign=middle;fontSize=15;fontStyle=1;fontColor=#111111;" vertex="1" parent="1">
<mxGeometry x="40" y="1285" width="1020" height="26" as="geometry" />
</mxCell>
<mxCell id="n1" value="&lt;b&gt;10&lt;/b&gt;&amp;nbsp; Thema anlegen&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;topics (author_id, title, goal,&lt;br&gt;reasoning, category_id, scope_level,&lt;br&gt;scope_name, status, end_mode,&lt;br&gt;end_date, end_target, created_at)&lt;br&gt;&lt;br&gt;author_id zeigt auf users.id&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=2;fontSize=12;fontColor=#000000;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="40" y="1325" width="245" height="155" as="geometry" />
</mxCell>
<mxCell id="n2" value="&lt;b&gt;11&lt;/b&gt;&amp;nbsp; Abstimmen&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;votes (topic_id, voter_tag,&lt;br&gt;choice, created_at, updated_at)&lt;br&gt;&lt;br&gt;voter_tag = hash_hmac('sha256',&lt;br&gt;'vote|'+topic_id+'|'+pseudonym_hash,&lt;br&gt;pepper)&lt;br&gt;&lt;br&gt;&lt;b&gt;keine Spalte user_id&lt;/b&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#0D47A1;strokeWidth=2;fontSize=12;fontColor=#0D47A1;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="300" y="1325" width="245" height="155" as="geometry" />
</mxCell>
<mxCell id="n3" value="&lt;b&gt;12&lt;/b&gt;&amp;nbsp; Lesezeichen setzen&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;favorites (user_id, kind, ref,&lt;br&gt;created_at)&lt;br&gt;&lt;br&gt;kind: category, scope oder topic&lt;br&gt;&lt;br&gt;user_id zeigt auf users.id&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=2;fontSize=12;fontColor=#000000;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="560" y="1325" width="245" height="155" as="geometry" />
</mxCell>
<mxCell id="n4" value="&lt;b&gt;13&lt;/b&gt;&amp;nbsp; Thema melden, Jury&lt;br&gt;&lt;font style=&quot;font-family:Courier New;font-size:11px&quot;&gt;reports (topic_id, reporter_id,&lt;br&gt;criteria, freetext, status, …)&lt;br&gt;report_jurors (report_id, user_id,&lt;br&gt;vote, voted_at)&lt;br&gt;&lt;br&gt;beide zeigen auf users.id&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#37474F;strokeWidth=2;fontSize=12;fontColor=#000000;verticalAlign=middle;arcSize=8;" vertex="1" parent="1">
<mxGeometry x="820" y="1325" width="245" height="155" as="geometry" />
</mxCell>
<mxCell id="b_n1" value="users.id" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="s9" target="n1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="b_n2" value="voter_tag, abgeleitet" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#0D47A1;strokeWidth=3;fontSize=11;fontFamily=Courier New;fontColor=#0D47A1;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="s9" target="n2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="b_n3" value="users.id" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="s9" target="n3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="b_n4" value="users.id" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#37474F;strokeWidth=2;fontSize=11;fontFamily=Courier New;fontColor=#333333;endArrow=block;endFill=1;labelBackgroundColor=#F7F7F7;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="s9" target="n4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>