From dfd5db5644deb030c76ae722e783af755352c97f Mon Sep 17 00:00:00 2001 From: J08nY Date: Thu, 1 Feb 2024 19:15:27 +0100 Subject: Get rid of bunch of warnings. --- test/sca/test_attacks.py | 35 +++++++++++++++++++++++++---------- test/sca/test_zvp.py | 4 ++-- 2 files changed, 27 insertions(+), 12 deletions(-) (limited to 'test/sca') diff --git a/test/sca/test_attacks.py b/test/sca/test_attacks.py index 8b9974b..b147dfe 100644 --- a/test/sca/test_attacks.py +++ b/test/sca/test_attacks.py @@ -1,10 +1,11 @@ import pytest +import random from pyecsca.ec.mult import LTRMultiplier from pyecsca.sca.attack.DPA import DPA from pyecsca.sca.attack.CPA import CPA from pyecsca.sca.target import LeakageTarget -from pyecsca.sca.attack import HammingWeight +from pyecsca.sca.attack.leakage_model import HammingWeight, NormalNoice @pytest.fixture() @@ -24,25 +25,39 @@ def target(secp128r1, mult): return target -@pytest.mark.xfail(reason="May fail intermittently.") -def test_dpa(secp128r1, mult, target): +def test_dpa(secp128r1, mult, target, mocker): + random.seed(1337) + + def randbelow(n): + return random.randrange(n) + + mocker.patch("secrets.randbelow", randbelow) scalar = 5 pub = secp128r1.curve.affine_multiply( secp128r1.generator.to_affine(), scalar ).to_model(secp128r1.curve.coordinate_model, secp128r1.curve) - points, traces = target.simulate_scalar_mult_traces(700, scalar) + points, traces = target.simulate_scalar_mult_traces(200, scalar) dpa = DPA(points, traces, mult, secp128r1) res = dpa.perform(3, pub) assert res == 5 -@pytest.mark.xfail(reason="May fail intermittently.") -def test_cpa(secp128r1, mult, target): +def test_cpa(secp128r1, mult, target, mocker): + random.seed(1337) + + def randbelow(n): + return random.randrange(n) + + mocker.patch("secrets.randbelow", randbelow) scalar = 5 pub = secp128r1.curve.affine_multiply( secp128r1.generator.to_affine(), scalar ).to_model(secp128r1.curve.coordinate_model, secp128r1.curve) - points, traces = target.simulate_scalar_mult_traces(100, scalar) - cpa = CPA(points, traces, HammingWeight(), mult, secp128r1) - res = cpa.perform(3, pub) - assert res == 5 + points, original_traces = target.simulate_scalar_mult_traces(100, scalar) + + for _ in range(5): + noise = NormalNoice(0, 2) + traces = [noise(trace) for trace in original_traces] + cpa = CPA(points, traces, HammingWeight(), mult, secp128r1) + res = cpa.perform(3, pub) + assert res == 5 diff --git a/test/sca/test_zvp.py b/test/sca/test_zvp.py index eaf1686..51b0327 100644 --- a/test/sca/test_zvp.py +++ b/test/sca/test_zvp.py @@ -126,7 +126,7 @@ def test_eliminate_y(secp128r1, formula): unrolled = unroll_formula(formula) unrolled = map_to_affine(formula, unrolled) subbed = subs_curve_equation(unrolled[-1][1], secp128r1.curve) - eliminated = eliminate_y(subbed, secp128r1.curve) + eliminated = eliminate_y(subbed, secp128r1.curve.model) assert eliminated is not None assert isinstance(eliminated, Poly) y1, y2 = symbols("y1,y2") @@ -140,7 +140,7 @@ def test_full(secp128r1, formula): unrolled = map_to_affine(formula, unrolled) subbed = subs_curve_equation(unrolled[-1][1], secp128r1.curve) removed = remove_z(subbed) - eliminated = eliminate_y(removed, secp128r1.curve) + eliminated = eliminate_y(removed, secp128r1.curve.model) dlog = subs_dlog(eliminated, 3, secp128r1.curve) assert dlog is not None assert isinstance(dlog, Poly) -- cgit v1.2.3-70-g09d2