aboutsummaryrefslogtreecommitdiff
path: root/epare/common.py
diff options
context:
space:
mode:
authorJ08nY2025-03-20 17:05:29 +0100
committerJ08nY2025-04-16 12:25:06 +0200
commit8ac23a01cdf0ae0074a30bfe9152163f184da789 (patch)
treefec5ca35fe5b73ac4775a7057dbc0b67ba93bb75 /epare/common.py
parent334a33afabaaaf3a1be83a0573ee3dc2ddbe575d (diff)
downloadECTester-8ac23a01cdf0ae0074a30bfe9152163f184da789.tar.gz
ECTester-8ac23a01cdf0ae0074a30bfe9152163f184da789.tar.zst
ECTester-8ac23a01cdf0ae0074a30bfe9152163f184da789.zip
Diffstat (limited to 'epare/common.py')
-rw-r--r--epare/common.py59
1 files changed, 42 insertions, 17 deletions
diff --git a/epare/common.py b/epare/common.py
index bed28dc..7df5e28 100644
--- a/epare/common.py
+++ b/epare/common.py
@@ -15,7 +15,7 @@ from enum import Enum
from pyecsca.ec.params import DomainParameters, get_params
from pyecsca.ec.mult import *
-from pyecsca.ec.countermeasures import GroupScalarRandomization, AdditiveSplitting, MultiplicativeSplitting, EuclideanSplitting
+from pyecsca.ec.countermeasures import GroupScalarRandomization, AdditiveSplitting, MultiplicativeSplitting, EuclideanSplitting, BrumleyTuveri
spawn_context = multiprocessing.get_context("spawn")
@@ -67,9 +67,11 @@ class MultIdent:
return lambda *args, **kwargs: MultiplicativeSplitting(func(*args, **kwargs))
elif self.countermeasure == "euclidean":
return lambda *args, **kwargs: EuclideanSplitting(func(*args, **kwargs))
+ elif self.countermeasure == "bt":
+ return lambda *args, **kwargs: BrumleyTuveri(func(*args, **kwargs))
def with_countermeasure(self, countermeasure: str | None):
- if countermeasure not in (None, "gsr", "additive", "multiplicative", "euclidean"):
+ if countermeasure not in (None, "gsr", "additive", "multiplicative", "euclidean", "bt"):
raise ValueError(f"Unknown countermeasure: {countermeasure}")
return MultIdent(self.klass, *self.args, **self.kwargs, countermeasure=countermeasure)
@@ -167,19 +169,30 @@ class ProbMap:
# All dbl-and-add multipliers from https://github.com/J08nY/pyecsca/blob/master/pyecsca/ec/mult
window_mults = [
- MultIdent(SlidingWindowMultiplier, width=3),
- MultIdent(SlidingWindowMultiplier, width=4),
- MultIdent(SlidingWindowMultiplier, width=5),
- MultIdent(SlidingWindowMultiplier, width=6),
+ MultIdent(SlidingWindowMultiplier, width=2, recoding_direction=ProcessingDirection.LTR),
+ MultIdent(SlidingWindowMultiplier, width=3, recoding_direction=ProcessingDirection.LTR),
+ MultIdent(SlidingWindowMultiplier, width=4, recoding_direction=ProcessingDirection.LTR),
+ MultIdent(SlidingWindowMultiplier, width=5, recoding_direction=ProcessingDirection.LTR),
+ MultIdent(SlidingWindowMultiplier, width=6, recoding_direction=ProcessingDirection.LTR),
+ MultIdent(SlidingWindowMultiplier, width=2, recoding_direction=ProcessingDirection.RTL),
+ MultIdent(SlidingWindowMultiplier, width=3, recoding_direction=ProcessingDirection.RTL),
+ MultIdent(SlidingWindowMultiplier, width=4, recoding_direction=ProcessingDirection.RTL),
+ MultIdent(SlidingWindowMultiplier, width=5, recoding_direction=ProcessingDirection.RTL),
+ MultIdent(SlidingWindowMultiplier, width=6, recoding_direction=ProcessingDirection.RTL),
+ MultIdent(FixedWindowLTRMultiplier, m=2**1),
+ MultIdent(FixedWindowLTRMultiplier, m=2**2),
+ MultIdent(FixedWindowLTRMultiplier, m=2**3),
MultIdent(FixedWindowLTRMultiplier, m=2**4),
MultIdent(FixedWindowLTRMultiplier, m=2**5),
MultIdent(FixedWindowLTRMultiplier, m=2**6),
+ MultIdent(WindowBoothMultiplier, width=2),
MultIdent(WindowBoothMultiplier, width=3),
MultIdent(WindowBoothMultiplier, width=4),
MultIdent(WindowBoothMultiplier, width=5),
MultIdent(WindowBoothMultiplier, width=6)
]
naf_mults = [
+ MultIdent(WindowNAFMultiplier, width=2),
MultIdent(WindowNAFMultiplier, width=3),
MultIdent(WindowNAFMultiplier, width=4),
MultIdent(WindowNAFMultiplier, width=5),
@@ -188,11 +201,16 @@ naf_mults = [
MultIdent(BinaryNAFMultiplier, direction=ProcessingDirection.RTL)
]
comb_mults = [
- MultIdent(CombMultiplier, width=2),
- MultIdent(CombMultiplier, width=3),
- MultIdent(CombMultiplier, width=4),
- MultIdent(CombMultiplier, width=5),
- MultIdent(CombMultiplier, width=6),
+ MultIdent(CombMultiplier, width=2, complete=True),
+ MultIdent(CombMultiplier, width=3, complete=True),
+ MultIdent(CombMultiplier, width=4, complete=True),
+ MultIdent(CombMultiplier, width=5, complete=True),
+ MultIdent(CombMultiplier, width=6, complete=True),
+ MultIdent(CombMultiplier, width=2, complete=False),
+ MultIdent(CombMultiplier, width=3, complete=False),
+ MultIdent(CombMultiplier, width=4, complete=False),
+ MultIdent(CombMultiplier, width=5, complete=False),
+ MultIdent(CombMultiplier, width=6, complete=False),
MultIdent(BGMWMultiplier, width=2, direction=ProcessingDirection.LTR),
MultIdent(BGMWMultiplier, width=3, direction=ProcessingDirection.LTR),
MultIdent(BGMWMultiplier, width=4, direction=ProcessingDirection.LTR),
@@ -205,17 +223,24 @@ comb_mults = [
MultIdent(BGMWMultiplier, width=6, direction=ProcessingDirection.RTL)
]
binary_mults = [
- MultIdent(LTRMultiplier, always=False),
- MultIdent(LTRMultiplier, always=True),
- MultIdent(RTLMultiplier, always=False),
- MultIdent(RTLMultiplier, always=True),
+ MultIdent(LTRMultiplier, always=False, complete=True),
+ MultIdent(LTRMultiplier, always=True, complete=True),
+ MultIdent(RTLMultiplier, always=False, complete=True),
+ MultIdent(RTLMultiplier, always=True, complete=True),
+ MultIdent(LTRMultiplier, always=False, complete=False),
+ MultIdent(LTRMultiplier, always=True, complete=False),
+ MultIdent(RTLMultiplier, always=False, complete=False),
+ MultIdent(RTLMultiplier, always=True, complete=False),
MultIdent(CoronMultiplier)
]
other_mults = [
- MultIdent(FullPrecompMultiplier, always=False),
- MultIdent(FullPrecompMultiplier, always=True),
+ MultIdent(FullPrecompMultiplier, always=False, complete=True),
+ MultIdent(FullPrecompMultiplier, always=True, complete=True),
+ MultIdent(FullPrecompMultiplier, always=False, complete=False),
+ MultIdent(FullPrecompMultiplier, always=True, complete=False),
MultIdent(SimpleLadderMultiplier, complete=True),
MultIdent(SimpleLadderMultiplier, complete=False)
]
all_mults = window_mults + naf_mults + binary_mults + other_mults + comb_mults
+all_mults_with_ctr = [mult.with_countermeasure(ctr) for mult in all_mults for ctr in (None, "gsr", "additive", "multiplicative", "euclidean", "bt")] \ No newline at end of file