aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2025-08-11 14:49:08 +0200
committerJ08nY2025-08-11 14:49:08 +0200
commit817015cfab4966725f2a0b19df0ca814c212a80c (patch)
treef0edeb4a11a00cfa9a6fc7aeec9d648b6f7aac8c
parent1bf67debdc31243b5b7e906112f1ef316d9cdc8b (diff)
downloadECTester-817015cfab4966725f2a0b19df0ca814c212a80c.tar.gz
ECTester-817015cfab4966725f2a0b19df0ca814c212a80c.tar.zst
ECTester-817015cfab4966725f2a0b19df0ca814c212a80c.zip
-rw-r--r--analysis/scalarmults/README.md9
-rw-r--r--analysis/scalarmults/distinguish.ipynb126
-rw-r--r--analysis/scalarmults/simulate.ipynb40
-rw-r--r--analysis/scalarmults/unravelling_distinguish.svg1101
-rw-r--r--analysis/scalarmults/unravelling_simulate.svg (renamed from analysis/scalarmults/unravelling.svg)0
5 files changed, 1227 insertions, 49 deletions
diff --git a/analysis/scalarmults/README.md b/analysis/scalarmults/README.md
index d66b113..6dd71fc 100644
--- a/analysis/scalarmults/README.md
+++ b/analysis/scalarmults/README.md
@@ -1,2 +1,9 @@
# Unravelling scalar multipliers
-![](unravelling.svg)
+
+## Simulation
+
+![](unravelling_simulate.svg)
+
+## Distinguishing
+
+![](unravelling_distinguish.svg)
diff --git a/analysis/scalarmults/distinguish.ipynb b/analysis/scalarmults/distinguish.ipynb
index 4165d87..3a77c4c 100644
--- a/analysis/scalarmults/distinguish.ipynb
+++ b/analysis/scalarmults/distinguish.ipynb
@@ -5,12 +5,16 @@
"id": "e76983df-053b-450b-976c-295826248978",
"metadata": {},
"source": [
- "# Unraveling scalar mults and countermeasures"
+ "# Unraveling scalar multiplications and countermeasures\n",
+ "\n",
+ "This notebook explores using error probability maps (as computed by the [simulate](simulate.ipynb) notebook). \n",
+ "\n",
+ "![](unravelling_distinguish.svg)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"id": "bc1528b8-61cd-4219-993f-e3f1ac79e801",
"metadata": {},
"outputs": [],
@@ -41,8 +45,17 @@
]
},
{
+ "cell_type": "markdown",
+ "id": "4868c083-8073-453d-b508-704fcb6d6f2a",
+ "metadata": {},
+ "source": [
+ "## Prepare\n",
+ "We need to silence some warnings."
+ ]
+ },
+ {
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "119b1e18-eeb0-4b70-bec3-ff277641403f",
"metadata": {},
"outputs": [],
@@ -58,17 +71,8 @@
]
},
{
- "cell_type": "markdown",
- "id": "4868c083-8073-453d-b508-704fcb6d6f2a",
- "metadata": {},
- "source": [
- "## Prepare\n",
- "Select *divisor name* to restrict the features. Select *kind* to pick the probmap source."
- ]
- },
- {
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"id": "ccb00342-3c48-49c9-bedf-2341e5eae3a2",
"metadata": {},
"outputs": [],
@@ -78,37 +82,92 @@
]
},
{
+ "cell_type": "markdown",
+ "id": "8a10e546-1d29-4145-b3e9-2d5724828ecb",
+ "metadata": {},
+ "source": [
+ "Now we can load the probmaps."
+ ]
+ },
+ {
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"id": "3dbac9be-d098-479a-8ca2-f531f6668f7c",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "1e5c7654ba8c4e559d1e100a334a3331",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ " 0%| | 0/12480 [00:00<?, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "# Load\n",
"with open(f\"merged.pickle\", \"rb\") as f:\n",
" distributions_mults = pickle.load(f)\n",
- "for probmap in tqdm(distributions_mults.values()):\n",
+ "for probmap in tqdm(distributions_mults.values(), desc=f\"Narrowing probmaps to {divisor_name}.\"):\n",
" probmap.narrow(allfeats)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"id": "38c81e38-a37c-4e58-ac9e-927d14dad458",
"metadata": {},
"outputs": [],
"source": [
"allmults = list(distributions_mults.keys())\n",
+ "basemults = list(all_mults_with_ctr)\n",
+ "nbase = len(basemults)\n",
"nmults = len(allmults)\n",
"nallfeats = len(allfeats)"
]
},
{
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "206b385a-bb98-47e7-9312-94a864794faa",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Have 12480 configurations (scalar multiplier x countermeasure x error model).\n",
+ "Have 390 base configurations (scalar multiplier x countermeasure).\n",
+ "Have 3215 base point orders (features).\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(f\"Have {nmults} configurations (scalar multiplier x countermeasure x error model).\")\n",
+ "print(f\"Have {nbase} base configurations (scalar multiplier x countermeasure).\")\n",
+ "print(f\"Have {nallfeats} base point orders (features).\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "437bcd9c-1da5-428a-a979-0835326777f3",
+ "metadata": {},
+ "source": [
+ "## Simulate distinguishing using a tree\n",
+ "We can follow the approach of the [**pyecsca**](https://pyecsca.org/papers.html#pyecsca-reverse-engineering-black-box-elliptic-curve-cryptography-via-side-channel-analysis) paper and use the probability maps to build a decision table (called dmap in code) and from that build a decision tree to use for reverse-engineering."
+ ]
+ },
+ {
"cell_type": "markdown",
"id": "1f783baf-bc81-40c1-9282-e2dfdacfd17c",
"metadata": {},
"source": [
- "## Build dmap and tree"
+ "### Build dmap and tree"
]
},
{
@@ -196,7 +255,7 @@
"metadata": {},
"outputs": [],
"source": [
- "# deduplicate dmap\n",
+ "# deduplicate the dmap\n",
"dmap.deduplicate()"
]
},
@@ -213,6 +272,18 @@
{
"cell_type": "code",
"execution_count": null,
+ "id": "5f261f61-fc41-494c-8465-18ecc8c9a525",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save the dmap\n",
+ "with open(\"dmap.pickle\", \"wb\") as f:\n",
+ " pickle.dump(dmap, f)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"id": "5735e7d4-149c-4184-96f7-dcfd6017fbad",
"metadata": {},
"outputs": [],
@@ -245,11 +316,22 @@
]
},
{
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "fb68df68-7976-4d46-9e50-94a65ae492c7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save a tree\n",
+ "with open(\"tree.pickle\", \"wb\") as f:\n",
+ " pickle.dump(tree, f)"
+ ]
+ },
+ {
"cell_type": "markdown",
- "id": "437bcd9c-1da5-428a-a979-0835326777f3",
+ "id": "b57fa09b-16de-43d5-bc25-c66849d0c18a",
"metadata": {},
"source": [
- "## Simulate distinguishing using a tree\n",
"We can now simulate distinguishing using the tree and how it behaves with increasing the number of samples per divisor collected."
]
},
diff --git a/analysis/scalarmults/simulate.ipynb b/analysis/scalarmults/simulate.ipynb
index 3db4307..9177390 100644
--- a/analysis/scalarmults/simulate.ipynb
+++ b/analysis/scalarmults/simulate.ipynb
@@ -20,12 +20,12 @@
"properties, i.e.: For random scalars, how probable is an error for a point of low order, for example, 5?\n",
"\n",
"Examine the figure below that shows the big picture.\n",
- "![](unravelling.svg)"
+ "![](unravelling_simulate.svg)"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "b4386513-cc14-434b-a748-2863f8657452",
"metadata": {},
"outputs": [],
@@ -80,7 +80,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "3463a7bd-34d8-458b-8ceb-dddf99de21dc",
"metadata": {},
"outputs": [],
@@ -97,21 +97,10 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "170c11fc-86cf-4eb1-bf4e-b2e44b2d7ac5",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Scalar multipliers considered: 65\n",
- "Scalar multipliers (with a single countermeasure) considered: 390\n",
- "Error models considered: 32\n",
- "Total configurations considered: 12480\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"nmults = len(all_mults)\n",
"nmults_ctr = len(all_mults_with_ctr)\n",
@@ -406,14 +395,13 @@
" evaluate_multiples_direct,\n",
" full, in_fname, start, divisor_map[\"all\"])\n",
" gc.collect()\n",
- " if len(pool.tasks) > 1000:\n",
- " for full, future in pool.as_completed():\n",
- " processing_bar.update(1)\n",
- " if error := future.exception():\n",
- " print(\"Error!\", full, error)\n",
- " continue\n",
- " res = future.result()\n",
- " pickle.dump((full, res), h)\n",
+ " for full, future in pool.as_completed(wait=False):\n",
+ " processing_bar.update(1)\n",
+ " if error := future.exception():\n",
+ " print(\"Error!\", full, error)\n",
+ " continue\n",
+ " res = future.result()\n",
+ " pickle.dump((full, res), h)\n",
" except EOFError:\n",
" break\n",
" except pickle.UnpicklingError:\n",
@@ -451,7 +439,7 @@
"for in_fname in tqdm(glob.glob(f\"probs_{bits}_{'init' if use_init else 'noinit'}_{'mult' if use_multiply else 'nomult'}_chunk*.pickle\"), desc=\"Processing chunks\", smoothing=0):\n",
" \n",
" match = re.match(\"probs_(?P<bits>[0-9]+)_(?P<init>(?:no)?init)_(?P<mult>(?:no)?mult)_chunk(?P<id>[0-9a-f]+).pickle\", in_fname)\n",
- " chunk_id = match.group(\"id\") \n",
+ " chunk_id = match.group(\"id\")\n",
" \n",
" with open(in_fname, \"rb\") as f:\n",
" loading_bar = tqdm(total=ncfgs, desc=f\"Loading chunk {chunk_id}.\", smoothing=0)\n",
@@ -523,7 +511,7 @@
{
"cell_type": "code",
"execution_count": null,
- "id": "daba5215-fef8-4c8a-8d7d-1af49edffa7b",
+ "id": "a07cf1d0-14d8-4c9b-a86c-6a7437d4e9dc",
"metadata": {},
"outputs": [],
"source": []
diff --git a/analysis/scalarmults/unravelling_distinguish.svg b/analysis/scalarmults/unravelling_distinguish.svg
new file mode 100644
index 0000000..05cb77f
--- /dev/null
+++ b/analysis/scalarmults/unravelling_distinguish.svg
@@ -0,0 +1,1101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="437.80011mm"
+ height="153.34732mm"
+ viewBox="0 0 437.80011 153.34732"
+ version="1.1"
+ id="svg1"
+ inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
+ sodipodi:docname="unravelling_distinguish.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview1"
+ pagecolor="#ffffff"
+ bordercolor="#111111"
+ borderopacity="1"
+ inkscape:showpageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="1"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:document-units="mm"
+ inkscape:zoom="2.1813126"
+ inkscape:cx="1488.0948"
+ inkscape:cy="228.53212"
+ inkscape:window-width="1920"
+ inkscape:window-height="1129"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1"
+ showguides="false" />
+ <defs
+ id="defs1">
+ <marker
+ style="overflow:visible"
+ id="marker15"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Wide arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
+ d="M 3,-3 0,0 3,3"
+ transform="rotate(180,0.125,0)"
+ sodipodi:nodetypes="ccc"
+ id="path15" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="ArrowWide"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Wide arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
+ d="M 3,-3 0,0 3,3"
+ transform="rotate(180,0.125,0)"
+ sodipodi:nodetypes="ccc"
+ id="path1" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle-9-1"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-3-2" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker15-6"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Wide arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
+ d="M 3,-3 0,0 3,3"
+ transform="rotate(180,0.125,0)"
+ sodipodi:nodetypes="ccc"
+ id="path15-2" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="ArrowWide-6"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Wide arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
+ d="M 3,-3 0,0 3,3"
+ transform="rotate(180,0.125,0)"
+ sodipodi:nodetypes="ccc"
+ id="path1-1" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle-9-1-8"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-3-2-8" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle-9-1-8-1"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-3-2-8-2" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle-9-1-8-1-8"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-3-2-8-2-5" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle-9-1-8-1-4"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-3-2-8-2-1" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle-9-1-8-1-8-3"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-3-2-8-2-5-8" />
+ </marker>
+ </defs>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(55.600923,42.043128)">
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;marker-end:url(#Triangle-9-1);paint-order:normal"
+ d="m 72.942541,76.354443 c 9.397124,-1e-5 9.397124,-1e-5 9.397124,-1e-5"
+ id="path8-4-9" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;marker-end:url(#Triangle-9-1-8);paint-order:normal"
+ d="m 72.942541,18.182332 c 9.397124,-10e-6 9.397124,-10e-6 9.397124,-10e-6"
+ id="path8-4-9-4" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;marker-end:url(#Triangle-9-1-8-1);paint-order:normal"
+ d="m 286.14535,26.146583 c 9.39712,-10e-6 9.39712,-10e-6 9.39712,-10e-6"
+ id="path8-4-9-4-9" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;marker-end:url(#Triangle-9-1-8-1-8);paint-order:normal"
+ d="m 328.96018,-5.8989547 c 1e-5,9.39712 1e-5,9.39712 1e-5,9.39712"
+ id="path8-4-9-4-9-6" />
+ <g
+ id="g11-6"
+ transform="translate(11.483942,59.679476)"
+ inkscape:label="error probs 2">
+ <path
+ style="fill:none;stroke:#808080;stroke-width:0.765;stroke-linejoin:round;stroke-dasharray:2.295, 2.295;stroke-dashoffset:1.224;stroke-opacity:1"
+ d="M 153.70476,92.52261 V 60.186257"
+ id="path13"
+ transform="translate(-11.483942,-59.679476)" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.780219;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;paint-order:normal"
+ id="rect4"
+ width="118.51546"
+ height="32.321133"
+ x="78.29406"
+ y="0.51439196" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;paint-order:normal"
+ x="110.54989"
+ y="14.614739"
+ id="text17"><tspan
+ sodipodi:role="line"
+ id="tspan17"
+ style="font-size:5.64444px;stroke-width:0.765"
+ x="110.54989"
+ y="14.614739">Error probability</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:5.64444px;stroke-width:0.765"
+ x="110.54989"
+ y="21.67029"
+ id="tspan18">for base point order q</tspan></text>
+ <g
+ id="g17"
+ transform="translate(6.2227239,-1.2849752)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.447839;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:1.224;stroke-opacity:1;marker-start:url(#marker15);marker-end:url(#ArrowWide)"
+ d="m 147.13481,5.5377021 c 0,0 0,0 0,21.1584829 h 40.26656"
+ id="path14" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ d="m 149.03178,9.5726997 3.99037,0.2574423 4.18345,0.901049 2.25263,10.362083 1.60902,-8.881784 3.86164,1.158494 1.41594,7.980733 1.73774,-6.114272 2.31699,0.965411 1.67338,3.797284 v 0 l 2.33154,1.806072 2.81732,1.21974 6.8866,0.707112"
+ id="path16"
+ sodipodi:nodetypes="cccccccccccccc" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-9"
+ cx="153.02216"
+ cy="9.830142"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-8"
+ cx="157.2056"
+ cy="10.731191"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-85"
+ cx="159.45824"
+ cy="21.093273"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-88"
+ cx="161.06725"
+ cy="12.21149"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-6"
+ cx="164.92889"
+ cy="13.369984"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-86"
+ cx="166.34483"
+ cy="21.350718"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-89"
+ cx="168.08257"
+ cy="15.236445"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-3"
+ cx="170.39957"
+ cy="16.201857"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-2"
+ cx="172.07294"
+ cy="19.99914"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-94"
+ cx="174.40448"
+ cy="21.805212"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-4"
+ cx="177.2218"
+ cy="23.024952"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-81"
+ cx="180.6651"
+ cy="23.378508"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-68"
+ cx="184.1084"
+ cy="23.732063"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-5"
+ cx="149.03178"
+ cy="9.5726995"
+ r="0.32199472" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="141.81168"
+ y="25.582594"
+ id="text19"><tspan
+ sodipodi:role="line"
+ id="tspan19"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="141.81168"
+ y="25.582594">0%</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="144.97337"
+ y="10.40079"
+ id="text19-5"
+ transform="translate(-6.0966364,-0.02140396)"><tspan
+ sodipodi:role="line"
+ id="tspan19-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="144.97337"
+ y="10.40079"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px"
+ id="tspan20"
+ dx="0 0 0"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-0.293687px"
+ id="tspan22">1</tspan>00</tspan>%</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="164.39456"
+ y="31.797026"
+ id="text19-58"><tspan
+ sodipodi:role="line"
+ id="tspan19-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="164.39456"
+ y="31.797026">q</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="152.23193"
+ y="29.905777"
+ id="text19-9"><tspan
+ sodipodi:role="line"
+ id="tspan19-08"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="152.23193"
+ y="29.905777">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="156.5733"
+ y="29.877554"
+ id="text19-9-1"><tspan
+ sodipodi:role="line"
+ id="tspan19-08-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="156.5733"
+ y="29.877554">5</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="148.22174"
+ y="29.905777"
+ id="text19-2"><tspan
+ sodipodi:role="line"
+ id="tspan19-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="148.22174"
+ y="29.905777">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="159.93271"
+ y="29.877554"
+ id="text19-9-1-8"><tspan
+ sodipodi:role="line"
+ id="tspan19-08-9-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="159.93271"
+ y="29.877554">...</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g13"
+ inkscape:label="impl 2"
+ transform="matrix(0.99588687,0,0,0.99141489,-88.841094,51.646014)">
+ <rect
+ style="fill:none;stroke:#808080;stroke-width:0.66336;stroke-linejoin:round;stroke-dasharray:1.99008, 1.99008;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect6"
+ width="123.00493"
+ height="50.045528"
+ x="33.70998"
+ y="-0.10134348"
+ ry="4.7618675" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:none;stroke:#757575;stroke-width:0.865;stroke-linejoin:round;stroke-dasharray:2.595, 2.595;stroke-dashoffset:0;stroke-opacity:1"
+ x="69.955223"
+ y="47.149837"
+ id="text6"><tspan
+ sodipodi:role="line"
+ id="tspan6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#808080;stroke:none;stroke-width:0.865"
+ x="69.955223"
+ y="47.149837">Implementation</tspan></text>
+ <g
+ id="g7"
+ transform="matrix(1.0041301,0,0,1.0086595,89.208018,-50.106867)">
+ <g
+ id="g3"
+ transform="translate(-50.689601,53.268774)"
+ inkscape:label="scalarmult + ctr">
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3"
+ width="56.486214"
+ height="32.202419"
+ x="-0.26395428"
+ y="5.015131"
+ inkscape:label="rect3" />
+ <text
+ xml:space="preserve"
+ style="font-size:2.82223px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:start;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="27.950924"
+ y="16.177456"
+ id="text1"><tspan
+ sodipodi:role="line"
+ id="tspan1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265"
+ x="27.950924"
+ y="16.177456">Scalar multiplier</tspan><tspan
+ sodipodi:role="line"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265"
+ x="27.950924"
+ y="23.233006"
+ id="tspan2">+</tspan><tspan
+ sodipodi:role="line"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265"
+ x="27.950924"
+ y="30.288557"
+ id="tspan3">Countermeasure</tspan></text>
+ </g>
+ <g
+ id="g3-7"
+ transform="translate(5.7966126,53.268774)"
+ inkscape:label="error model">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.4756;display:inline;fill:#000000;stroke-width:0.264583"
+ x="42.141571"
+ y="22.172159"
+ id="text1-5"
+ transform="translate(-30.047743,1.0608465)"><tspan
+ x="42.141571"
+ y="22.172159"
+ id="tspan5">Error model</tspan></text>
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-9"
+ width="56.486214"
+ height="32.202419"
+ x="-0.26395428"
+ y="5.015131"
+ inkscape:label="rect3" />
+ </g>
+ </g>
+ </g>
+ <g
+ id="g3-7-8"
+ transform="translate(225.50387,5.0302337)"
+ inkscape:label="feature selection">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.4756;display:inline;fill:#000000;stroke-width:0.264583"
+ x="42.141571"
+ y="22.172159"
+ id="text1-5-71"
+ transform="translate(-25.594206,1.0608465)"><tspan
+ x="42.141571"
+ y="22.172159"
+ id="tspan12">Features</tspan></text>
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-9-2"
+ width="56.486214"
+ height="32.202419"
+ x="-0.094546013"
+ y="5.015131"
+ inkscape:label="rect3" />
+ <text
+ xml:space="preserve"
+ style="font-size:3.52778px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="28.148561"
+ y="30.303547"
+ id="text9"><tspan
+ sodipodi:role="line"
+ id="tspan8"
+ style="font-size:3.52778px;stroke-width:0.265"
+ x="28.148561"
+ y="30.303547">{2,5,...}</tspan></text>
+ </g>
+ <g
+ id="g3-7-8-1"
+ transform="translate(225.50387,46.718635)"
+ inkscape:label="error probs for feats">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.4756;display:inline;fill:#000000;stroke-width:0.264583"
+ x="42.141571"
+ y="22.172159"
+ id="text1-5-71-0"
+ transform="translate(-30.51615,-6.1245237)"><tspan
+ x="42.141571"
+ y="22.172159"
+ id="tspan13">Error </tspan><tspan
+ x="42.141571"
+ y="29.227708"
+ id="tspan14">probabilities
+</tspan><tspan
+ x="42.141571"
+ y="36.283258"
+ id="tspan15">for features</tspan></text>
+ <path
+ id="rect3-9-2-1-1"
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ inkscape:label="rect3"
+ d="m 227.64845,83.936206 v 2.273763 h 56.48596 V 54.007801 h -2.23862 v 29.928405 z"
+ transform="translate(-225.50387,-46.718635)" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-9-2-1"
+ width="56.486214"
+ height="32.202419"
+ x="-0.094546013"
+ y="5.015131"
+ inkscape:label="rect3" />
+ <path
+ id="path9"
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ inkscape:label="rect3"
+ d="m 4.3832,39.491334 v 2.273763 H 60.86916 V 9.562929 h -2.23862 v 29.928405 z" />
+ </g>
+ <g
+ id="g11-6-9"
+ transform="translate(11.483942,1.5073653)"
+ inkscape:label="error probs 1">
+ <path
+ style="fill:none;stroke:#808080;stroke-width:0.765;stroke-linejoin:round;stroke-dasharray:2.295, 2.295;stroke-dashoffset:1.224;stroke-opacity:1"
+ d="M 153.70476,92.52261 V 60.186257"
+ id="path13-2"
+ transform="translate(-11.483942,-59.679476)" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.780219;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;paint-order:normal"
+ id="rect4-0"
+ width="118.51546"
+ height="32.321133"
+ x="78.29406"
+ y="0.51439196" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;paint-order:normal"
+ x="110.54989"
+ y="14.614739"
+ id="text17-2"><tspan
+ sodipodi:role="line"
+ id="tspan17-3"
+ style="font-size:5.64444px;stroke-width:0.765"
+ x="110.54989"
+ y="14.614739">Error probability</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:5.64444px;stroke-width:0.765"
+ x="110.54989"
+ y="21.67029"
+ id="tspan18-7">for base point order q</tspan></text>
+ <g
+ id="g17-5"
+ transform="translate(6.2227239,-1.2849752)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.447839;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:1.224;stroke-opacity:1;marker-start:url(#marker15-6);marker-end:url(#ArrowWide-6)"
+ d="m 147.13481,5.5377021 c 0,0 0,0 0,21.1584829 h 40.26656"
+ id="path14-9" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ d="m 149.03178,9.5726997 3.99037,0.2574423 4.18345,0.901049 2.25264,-0.901049 1.931,2.381348 3.53965,1.158494 1.41594,-1.612989 1.73774,3.47945 1.8625,2.423481 2.37046,-2.423481 2.08895,6.568767 3.27182,-4.032347 2.9888,5.605643 3.4433,0.353556"
+ id="path16-2"
+ sodipodi:nodetypes="cccccccccccccc" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-9-2"
+ cx="153.02216"
+ cy="9.830142"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-8-8"
+ cx="157.2056"
+ cy="10.731191"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-85-9"
+ cx="159.45824"
+ cy="9.830142"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-88-7"
+ cx="161.38924"
+ cy="12.21149"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-6-3"
+ cx="164.92889"
+ cy="13.369984"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-86-6"
+ cx="166.34483"
+ cy="11.756995"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-89-1"
+ cx="168.08257"
+ cy="15.236445"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-3-2"
+ cx="169.94507"
+ cy="17.659925"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-2-9"
+ cx="172.31554"
+ cy="15.236445"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-94-3"
+ cx="174.40448"
+ cy="21.805212"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-4-1"
+ cx="177.6763"
+ cy="17.772865"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-81-9"
+ cx="180.6651"
+ cy="23.378508"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-68-4"
+ cx="184.1084"
+ cy="23.732063"
+ r="0.32199472" />
+ <circle
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ id="path17-5-7"
+ cx="149.03178"
+ cy="9.5726995"
+ r="0.32199472" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="141.81168"
+ y="25.582594"
+ id="text19-8"><tspan
+ sodipodi:role="line"
+ id="tspan19-45"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="141.81168"
+ y="25.582594">0%</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="144.97337"
+ y="10.40079"
+ id="text19-5-0"
+ transform="translate(-6.0966364,-0.02140396)"><tspan
+ sodipodi:role="line"
+ id="tspan19-0-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="144.97337"
+ y="10.40079"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px"
+ id="tspan20-6"
+ dx="0 0 0"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-0.293687px"
+ id="tspan22-1">1</tspan>00</tspan>%</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="164.39456"
+ y="31.797026"
+ id="text19-58-0"><tspan
+ sodipodi:role="line"
+ id="tspan19-6-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="164.39456"
+ y="31.797026">q</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="152.23193"
+ y="29.905777"
+ id="text19-9-3"><tspan
+ sodipodi:role="line"
+ id="tspan19-08-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="152.23193"
+ y="29.905777">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="156.5733"
+ y="29.877554"
+ id="text19-9-1-0"><tspan
+ sodipodi:role="line"
+ id="tspan19-08-9-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="156.5733"
+ y="29.877554">5</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="148.22174"
+ y="29.905777"
+ id="text19-2-1"><tspan
+ sodipodi:role="line"
+ id="tspan19-4-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="148.22174"
+ y="29.905777">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:4.62614;stroke-opacity:1"
+ x="159.93271"
+ y="29.877554"
+ id="text19-9-1-8-5"><tspan
+ sodipodi:role="line"
+ id="tspan19-08-9-0-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:none;stroke-width:0.265"
+ x="159.93271"
+ y="29.877554">...</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g13-4"
+ inkscape:label="impl 1"
+ transform="matrix(0.99588687,0,0,0.99141489,-88.458594,-6.5260975)">
+ <rect
+ style="fill:none;stroke:#808080;stroke-width:0.66336;stroke-linejoin:round;stroke-dasharray:1.99008, 1.99008;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect6-3"
+ width="123.00493"
+ height="50.045528"
+ x="33.70998"
+ y="-0.10134348"
+ ry="4.7618675" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:none;stroke:#757575;stroke-width:0.865;stroke-linejoin:round;stroke-dasharray:2.595, 2.595;stroke-dashoffset:0;stroke-opacity:1"
+ x="69.955223"
+ y="47.149837"
+ id="text6-0"><tspan
+ sodipodi:role="line"
+ id="tspan6-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#808080;stroke:none;stroke-width:0.865"
+ x="69.955223"
+ y="47.149837">Implementation</tspan></text>
+ <g
+ id="g7-9"
+ transform="matrix(1.0041301,0,0,1.0086595,89.208018,-50.106867)">
+ <g
+ id="g3-3"
+ transform="translate(-50.689601,53.268774)"
+ inkscape:label="scalarmult + ctr">
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-7"
+ width="56.486214"
+ height="32.202419"
+ x="-0.26395428"
+ y="5.015131"
+ inkscape:label="rect3" />
+ <text
+ xml:space="preserve"
+ style="font-size:2.82223px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:start;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="27.950924"
+ y="16.177456"
+ id="text1-4"><tspan
+ sodipodi:role="line"
+ id="tspan1-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265"
+ x="27.950924"
+ y="16.177456">Scalar multiplier</tspan><tspan
+ sodipodi:role="line"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265"
+ x="27.950924"
+ y="23.233006"
+ id="tspan2-2">+</tspan><tspan
+ sodipodi:role="line"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265"
+ x="27.950924"
+ y="30.288557"
+ id="tspan3-5">Countermeasure</tspan></text>
+ </g>
+ <g
+ id="g3-7-4"
+ transform="translate(5.7966126,53.268774)"
+ inkscape:label="error model">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.4756;display:inline;fill:#000000;stroke-width:0.264583"
+ x="42.141571"
+ y="22.172159"
+ id="text1-5-7"
+ transform="translate(-30.047743,1.0608465)"><tspan
+ x="42.141571"
+ y="22.172159"
+ id="tspan16">Error model</tspan></text>
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-9-4"
+ width="56.486214"
+ height="32.202419"
+ x="-0.26395428"
+ y="5.015131"
+ inkscape:label="rect3" />
+ </g>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:14.1111px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="5.9793096"
+ y="111.10664"
+ id="text7"><tspan
+ sodipodi:role="line"
+ id="tspan7"
+ style="font-size:14.1111px;stroke-width:0.265"
+ x="5.97931"
+ y="111.10664">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.1111px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="149.03574"
+ y="111.10664"
+ id="text7-6"><tspan
+ sodipodi:role="line"
+ id="tspan7-4"
+ style="font-size:14.1111px;stroke-width:0.265"
+ x="149.03574"
+ y="111.10664">...</tspan></text>
+ <path
+ style="font-size:22.5778px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;text-anchor:middle;stroke-width:0.265;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ d="m 215.14544,93.267875 c 0.7827,-0.03011 1.3923,-0.210729 1.8288,-0.541868 0.45156,-0.316089 0.67734,-0.842904 0.67734,-1.580446 V 50.090602 c 0,-1.550342 0.82033,-2.468506 2.46098,-2.754491 v -0.135467 c -1.64065,-0.285985 -2.46098,-1.204149 -2.46098,-2.754492 V 3.8832284 c 0,-0.7375413 -0.21825,-1.2643567 -0.65476,-1.580446 -0.43651,-0.3311407 -1.05363,-0.504237 -1.85138,-0.519289 v -1.625602 c 1.38477,0.0150533 1.77858,0.31609067 2.57633,0.903112 0.79775,0.5870227 1.19662,1.4826087 1.19662,2.686758 V 44.310685 c 0,0.767645 0.93076,1.317039 1.39737,1.64818 0.48166,0.316089 1.16652,0.474134 2.05458,0.474134 v 1.648179 c -0.88806,0.01505 -1.57292,0.180624 -2.05458,0.496712 -0.46661,0.316089 -1.40116,0.85043 -1.40116,1.603023 v 41.145271 c 0,1.189097 -0.41392,2.077157 -1.24177,2.66418 -0.82785,0.602075 -1.20282,0.903112 -2.52739,0.903112 z"
+ id="text8"
+ aria-label="}"
+ sodipodi:nodetypes="ccssccsscccsssccccssccc" />
+ <g
+ id="g3-7-8-7"
+ transform="translate(322.76845,-31.435423)"
+ inkscape:label="target">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.4756;display:inline;fill:#000000;stroke-width:0.264583"
+ x="42.141571"
+ y="22.172159"
+ id="text1-5-71-3"
+ transform="translate(-44.325239,-14.95842)"><tspan
+ x="42.141571"
+ y="22.172159"
+ id="tspan21">Target</tspan></text>
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-9-2-6"
+ width="56.486214"
+ height="32.202419"
+ x="-22.051371"
+ y="-10.225205"
+ inkscape:label="rect3" />
+ </g>
+ <g
+ id="g3-7-8-7-4"
+ transform="translate(322.76845,20.27057)"
+ inkscape:label="error measurements">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.4756;display:inline;fill:#000000;stroke-width:0.264583"
+ x="42.141571"
+ y="22.172159"
+ id="text1-5-71-3-8"
+ transform="translate(-56.017685,-17.837085)"><tspan
+ x="42.141571"
+ y="22.172159"
+ id="tspan23">Error </tspan><tspan
+ x="42.141571"
+ y="29.227708"
+ id="tspan24">measurements</tspan></text>
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.765;stroke-dasharray:none"
+ id="rect3-9-2-6-0"
+ width="56.486214"
+ height="32.202419"
+ x="-22.051371"
+ y="-10.225205"
+ inkscape:label="rect3" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:3.52777px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="354.62787"
+ y="-0.68877262"
+ id="text10"><tspan
+ sodipodi:role="line"
+ id="tspan9"
+ style="fill:#4d4d4d;stroke-width:0.265"
+ x="354.62787"
+ y="-0.68877262">multiple runs per feature</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.52777px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="256.00784"
+ y="93.268997"
+ id="text11"><tspan
+ sodipodi:role="line"
+ id="tspan10"
+ style="stroke-width:0.265"
+ x="256.00784"
+ y="93.268997">for each implementation</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.52777px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="78.526634"
+ y="72.803741"
+ id="text11-4"><tspan
+ sodipodi:role="line"
+ id="tspan10-4"
+ style="stroke-width:0.265"
+ x="78.526634"
+ y="72.803741">simulation</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.52777px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="78.526634"
+ y="14.513435"
+ id="text11-4-7"><tspan
+ sodipodi:role="line"
+ id="tspan10-4-5"
+ style="stroke-width:0.265"
+ x="78.526634"
+ y="14.513435">simulation</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.52777px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="201.00386"
+ y="48.857414"
+ id="text11-7"><tspan
+ sodipodi:role="line"
+ id="tspan10-8"
+ style="stroke-width:0.265"
+ x="201.00386"
+ y="48.857414">feature selection</tspan></text>
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;marker-end:url(#Triangle-9-1-8-1-4);paint-order:normal"
+ d="m 289.41201,68.982314 c 9.39712,-1e-5 9.39712,-1e-5 9.39712,-1e-5"
+ id="path8-4-9-4-9-9" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.765;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;marker-end:url(#Triangle-9-1-8-1-8-3);paint-order:normal"
+ d="m 328.96018,45.29442 c 1e-5,9.39712 1e-5,9.39712 1e-5,9.39712"
+ id="path8-4-9-4-9-6-1" />
+ <rect
+ style="fill:none;stroke:#808080;stroke-width:0.659146;stroke-linejoin:round;stroke-dasharray:1.97744, 1.97744;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect6-3-9"
+ width="53.81459"
+ height="28.401472"
+ x="303.4404"
+ y="60.133804"
+ ry="2.7024202" />
+ <text
+ xml:space="preserve"
+ style="font-size:4.23333px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="305.20044"
+ y="72.80114"
+ id="text11-5"><tspan
+ sodipodi:role="line"
+ id="tspan10-9"
+ style="font-size:4.23333px;text-align:start;text-anchor:start;stroke-width:0.265"
+ x="305.20044"
+ y="72.80114">Bayes classifier likelihood</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:4.23333px;text-align:start;text-anchor:start;stroke-width:0.265"
+ x="305.20044"
+ y="78.092804"
+ id="tspan11">for each implementation</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.52777px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans, Normal';text-align:center;letter-spacing:0px;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264999;stroke-linejoin:round;stroke-dashoffset:4.62614"
+ x="253.5854"
+ y="46.743984"
+ id="text10-8"><tspan
+ sodipodi:role="line"
+ id="tspan9-0"
+ style="fill:#4d4d4d;stroke-width:0.265"
+ x="253.5854"
+ y="46.743984">subset of all base point orders</tspan></text>
+ </g>
+</svg>
diff --git a/analysis/scalarmults/unravelling.svg b/analysis/scalarmults/unravelling_simulate.svg
index f548719..f548719 100644
--- a/analysis/scalarmults/unravelling.svg
+++ b/analysis/scalarmults/unravelling_simulate.svg