diff options
| author | J08nY | 2024-01-19 19:14:05 +0100 |
|---|---|---|
| committer | J08nY | 2024-01-19 19:14:05 +0100 |
| commit | 99798ed0573c860abe0618589b55858727a5077b (patch) | |
| tree | b5efc0436b8554ad318438ea826df41bf1389fb1 | |
| parent | 33a53c4e96f017d17e23392097e0000d4241e854 (diff) | |
| download | pyecsca-notebook-99798ed0573c860abe0618589b55858727a5077b.tar.gz pyecsca-notebook-99798ed0573c860abe0618589b55858727a5077b.tar.zst pyecsca-notebook-99798ed0573c860abe0618589b55858727a5077b.zip | |
Change curves in ZVP a bit.
| -rw-r--r-- | re/epa.ipynb | 12 | ||||
| -rw-r--r-- | re/zvp.ipynb | 35 |
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, |
