aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJ08nY2024-01-19 19:14:05 +0100
committerJ08nY2024-01-19 19:14:05 +0100
commit99798ed0573c860abe0618589b55858727a5077b (patch)
treeb5efc0436b8554ad318438ea826df41bf1389fb1
parent33a53c4e96f017d17e23392097e0000d4241e854 (diff)
downloadpyecsca-notebook-99798ed0573c860abe0618589b55858727a5077b.tar.gz
pyecsca-notebook-99798ed0573c860abe0618589b55858727a5077b.tar.zst
pyecsca-notebook-99798ed0573c860abe0618589b55858727a5077b.zip
Change curves in ZVP a bit.
-rw-r--r--re/epa.ipynb12
-rw-r--r--re/zvp.ipynb35
2 files changed, 34 insertions, 13 deletions
diff --git a/re/epa.ipynb b/re/epa.ipynb
index d27a2eb..52e3d5e 100644
--- a/re/epa.ipynb
+++ b/re/epa.ipynb
@@ -36,7 +36,7 @@
"from pyecsca.ec.mult import LTRMultiplier, AccumulationOrder\n",
"from pyecsca.ec.formula.base import *\n",
"from pyecsca.ec.formula.fake import FakeAdditionFormula, FakeDoublingFormula, FakePoint\n",
- "from pyecsca.sca.re.tree import build_distinguishing_tree\n",
+ "from pyecsca.sca.re.tree import build_distinguishing_tree, expand_tree\n",
"from pyecsca.sca.re.rpa import MultipleContext\n",
"from pyecsca.sca.re.zvp import unroll_formula_expr\n",
"from pyecsca.ec.context import local\n",
@@ -412,11 +412,11 @@
" log(f\"Precomputing {coords.name}.\")\n",
" mapped_inputs = [(scalar, point.to_model(coords, params.curve)) for scalar, point in inputs]\n",
" \n",
- " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n",
+ " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n",
" formula_combinations = list(product(*formula_groups))\n",
" \n",
" for formulas in tqdm(formula_combinations, desc=coord_name, leave=False):\n",
- " cfg = (coord_name, *[formula.name for formula in formulas])\n",
+ " cfg = tuple(formulas)\n",
" configs.add(cfg)\n",
" mult = mult_factory(*formulas)\n",
" result = set()\n",
@@ -440,7 +440,7 @@
{
"cell_type": "code",
"execution_count": null,
- "id": "5defdea2-0633-40fb-b53c-afb8f8eda035",
+ "id": "07638de9-bdb9-45d6-87c5-349f48f864d4",
"metadata": {},
"outputs": [],
"source": [
@@ -492,7 +492,7 @@
{
"cell_type": "code",
"execution_count": null,
- "id": "467d3ed8-8eb9-4075-8621-d3653d16deeb",
+ "id": "6388a793-5433-4815-960e-7b2cc0f2211a",
"metadata": {},
"outputs": [],
"source": []
@@ -514,7 +514,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.5"
+ "version": "3.11.4"
}
},
"nbformat": 4,
diff --git a/re/zvp.ipynb b/re/zvp.ipynb
index b0f872e..cdb1d94 100644
--- a/re/zvp.ipynb
+++ b/re/zvp.ipynb
@@ -178,7 +178,7 @@
" \"\"\"[{\"field\":{\"p\":\"0xeff607c2dc4f278b\"},\"a\":\"0xeff607c2dc4f278a\",\"b\":\"0x26fd03674f5092d2\",\"order\":\"0xeff607c30ab8c50d\",\"subgroups\":[{\"x\":\"0x004d4a5a9bb849fe\",\"y\":\"0x80eb7ef89110c149\",\"order\":\"0xeff607c30ab8c50d\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x004d4a5a9bb849fe\",\"y\":\"0x80eb7ef89110c149\",\"order\":\"0xeff607c30ab8c50d\"}]}]}]\"\"\",\n",
" # a = -3\n",
" \"\"\"[{\"field\":{\"p\":\"0x8d79ca36cee026a7\"},\"a\":\"0x8d79ca36cee026a4\",\"b\":\"0x0478c1f80ce2c9c6\",\"order\":\"0x8d79ca35a428c76f\",\"subgroups\":[{\"x\":\"0x2e94a3e38f8b345e\",\"y\":\"0x83e6c6f0cb8f69c4\",\"order\":\"0x8d79ca35a428c76f\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x2e94a3e38f8b345e\",\"y\":\"0x83e6c6f0cb8f69c4\",\"order\":\"0x8d79ca35a428c76f\"}]}]}]\"\"\",\n",
- " \"\"\"[{\"field\":{\"p\":\"0xfcada438caa11847\"},\"a\":\"0xfcada438caa11844\",\"b\":\"0x08dfa4498ff16fda\",\"order\":\"0xfcada437b9db629d\",\"subgroups\":[{\"x\":\"0xf04a2a334193d501\",\"y\":\"0x364b3b33e3e200e9\",\"order\":\"0xfcada437b9db629d\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0xf04a2a334193d501\",\"y\":\"0x364b3b33e3e200e9\",\"order\":\"0xfcada437b9db629d\"}]}]}]\"\"\",\n",
+ " \"\"\"[{\"field\":{\"p\":\"0xc1dbdf20f877c1f5\"},\"a\":\"0xc1dbdf20f877c1f2\",\"b\":\"0xb542de5cccf89443\",\"order\":\"0xc1dbdf20e5e39897\",\"subgroups\":[{\"x\":\"0x6179152f1dbd686b\",\"y\":\"0x74105f331a9d29ae\",\"order\":\"0xc1dbdf20e5e39897\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x6179152f1dbd686b\",\"y\":\"0x74105f331a9d29ae\",\"order\":\"0xc1dbdf20e5e39897\"}]}]}]\"\"\",\n",
" \"\"\"[{\"field\":{\"p\":\"0xcb5aa8a7a10aa06b\"},\"a\":\"0xcb5aa8a7a10aa068\",\"b\":\"0x31fe9c57c570174f\",\"order\":\"0xcb5aa8a6cf812191\",\"subgroups\":[{\"x\":\"0x84c75d46fc687ff1\",\"y\":\"0x7424362ac73df187\",\"order\":\"0xcb5aa8a6cf812191\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x84c75d46fc687ff1\",\"y\":\"0x7424362ac73df187\",\"order\":\"0xcb5aa8a6cf812191\"}]}]}]\"\"\",\n",
" # a = 0\n",
" \"\"\"[{\"field\":{\"p\":\"0xceaf446a53f14bc1\"},\"a\":\"0x0000000000000000\",\"b\":\"0x326539376260f173\",\"order\":\"0xceaf446aae275419\",\"subgroups\":[{\"x\":\"0x98fe44948c3f8678\",\"y\":\"0x3d440ee959a912d7\",\"order\":\"0xceaf446aae275419\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x98fe44948c3f8678\",\"y\":\"0x3d440ee959a912d7\",\"order\":\"0xceaf446aae275419\"}]}]}]\"\"\",\n",
@@ -186,7 +186,18 @@
" \"\"\"[{\"field\":{\"p\":\"0xd6097c1ce207aae7\"},\"a\":\"0x0000000000000000\",\"b\":\"0x7adaab54e7dfd564\",\"order\":\"0xd6097c1b407eb413\",\"subgroups\":[{\"x\":\"0x151da8fb1f83201e\",\"y\":\"0x8bfeb90ec1177a91\",\"order\":\"0xd6097c1b407eb413\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x151da8fb1f83201e\",\"y\":\"0x8bfeb90ec1177a91\",\"order\":\"0xd6097c1b407eb413\"}]}]}]\"\"\",\n",
" # b = 0 (causes more issues than gain)\n",
" #\"\"\"[{\"field\":{\"p\":\"0x9d9119957f02fe3f\"},\"a\":\"0x0106903196d88df9\",\"b\":\"0x0000000000000000\",\"order\":\"0x9d9119957f02fe40\",\"subgroups\":[{\"x\":\"0x191a36b9cd81de96\",\"y\":\"0x10f2c6bded391aa9\",\"order\":\"0x9d9119957f02fe40\",\"cofactor\":\"0x1\",\"points\":[{\"x\":\"0x0000000000000000\",\"y\":\"0x0000000000000000\",\"order\":\"0x2\"},{\"x\":\"0x95913fae9065da0f\",\"y\":\"0x5eeddeee7152d6fb\",\"order\":\"0x276446655fc0bf9\"}]}]}]\"\"\"\n",
- "]))"
+ "]))\n",
+ "for i, params in enumerate(curves):\n",
+ " curve = params.curve\n",
+ " if curve.parameters[\"a\"] == -3:\n",
+ " params.name = \"a=-3\"\n",
+ " elif curve.parameters[\"a\"] == -1:\n",
+ " params.name = \"a=-1\"\n",
+ " elif curve.parameters[\"a\"] == 0:\n",
+ " params.name = \"a=0\"\n",
+ " else:\n",
+ " params.name = \"random\"\n",
+ " params.name += f\"[{i}]\""
]
},
{
@@ -284,7 +295,7 @@
" except UnsatisfiedAssumptionError:\n",
" continue\n",
" if (coords, formula, affine_params) not in point_chains:\n",
- " print(f\"Missing {formula}\")\n",
+ " print(f\"Missing {formula} for {str(affine_params)}\")\n",
" continue\n",
" point_chain = point_chains[(coords, formula, affine_params)]\n",
" for step in point_chain:\n",
@@ -428,7 +439,7 @@
" j = futures.index(future)\n",
" cfg = pairs[j]\n",
" h, c, p = future.result()\n",
- " remapped_hit_point_map[cfg] = h \n",
+ " remapped_hit_point_map[cfg] = h\n",
" remapped_count_point_map[cfg] = c\n",
" remapped_position_point_map[cfg] = p"
]
@@ -445,10 +456,12 @@
"cell_type": "code",
"execution_count": null,
"id": "cc87dfd1-f058-4338-aaca-fc05105fc9f1",
- "metadata": {},
+ "metadata": {
+ "scrolled": true
+ },
"outputs": [],
"source": [
- "table = [[\"Add\", \"Dbl\", \"raw\", \"remapped\", \"removed\", \"new\"]]\n",
+ "table = [[\"Add\", \"Dbl\", \"raw\", \"remapped\", \"removed (fp)\", \"new (fn)\"]]\n",
"for pair in point_map.keys():\n",
" table.append((pair[0], pair[1],\n",
" len(point_map[pair]),\n",
@@ -580,6 +593,14 @@
"print(\"\\nFactor sets (nonhomogenous)\")\n",
"describe_tree(fset_nonhomo_tree)"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "6d4f33f3-557a-4e79-aadb-10fd73aba1d0",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
@@ -598,7 +619,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.5"
+ "version": "3.11.4"
}
},
"nbformat": 4,