You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature.
21
+
22
+
### Details
23
+
24
+
The analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
25
+
26
+
-**UDIV/SDIV instructions**: Hardware division instructions have early termination optimizations where execution time depends on operand values.
27
+
28
+
The `decompose` function used a hardware division instruction to compute `r1.0 / TwoGamma2::U32`. This function is called during signing through `high_bits()` and `low_bits()`, which process values derived from secret key components:
29
+
30
+
-`(&w - &cs2).low_bits()` where `cs2` is derived from secret key component `s2`
31
+
-`Hint::new()` calls `high_bits()` on values derived from secret key component `t0`
r1.0/=TwoGamma2::U32; // Variable-time division on secret-derived data
39
+
(r1, r0)
40
+
}
41
+
```
42
+
43
+
### Impact
44
+
45
+
The dividend (`r1.0`) is derived from secret key material. An attacker with precise timing measurements could extract information about the signing key by observing timing variations in the division operation.
46
+
47
+
### Mitigation
48
+
49
+
Integer division was replaced with a constant-time Barrett reduction.
0 commit comments