Generating the ECDSA nonce k samples a random number r and then
truncates this randomness with a modular reduction mod n where n is the
order of the elliptic curve. Meaning k = r mod n. The division used
during the reduction estimates a factor q_e by dividing the upper two
digits (a digit having e.g. a size of 8 byte) of r by the upper digit of
n and then decrements q_e in a loop until it has the correct size.
Observing the number of times q_e is decremented through a control-flow
revealing side-channel reveals a bias in the most significant bits of
k. Depending on the curve this is either a negligible bias or a
significant bias large enough to reconstruct k with lattice reduction
methods. For SECP160R1, e.g., we find a bias of 15 bits.
{
"license": "CC-BY-4.0",
"sources": [
{
"database_specific": {
"status": "Modified"
},
"html_url": "https://nvd.nist.gov/vuln/detail/CVE-2024-1544",
"id": "CVE-2024-1544",
"imported": "2026-07-17T22:24:21.232Z",
"modified": "2026-06-17T07:04:27.800Z",
"published": "2024-08-27T19:15:16.547Z",
"url": "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2024-1544"
},
{
"html_url": "https://github.com/advisories/GHSA-grjj-54gm-q5vf",
"id": "GHSA-grjj-54gm-q5vf",
"imported": "2026-07-17T22:24:21.436Z",
"modified": "2026-01-28T00:31:38Z",
"published": "2024-08-27T21:31:13Z",
"url": "https://api.github.com/advisories/GHSA-grjj-54gm-q5vf"
},
{
"html_url": "https://euvd.enisa.europa.eu/vulnerability/EUVD-2024-17291",
"id": "EUVD-2024-17291",
"imported": "2026-07-17T22:24:31.177Z",
"modified": "2026-01-27T21:58:42Z",
"published": "2024-08-27T18:44:52Z",
"url": "https://euvdservices.enisa.europa.eu/api/enisaid?id=EUVD-2024-17291"
}
]
}