mirror of
https://github.com/OMGeeky/advisory-db.git
synced 2025-12-30 08:13:58 +01:00
Add Double Public Key Signing Function Oracle Attack on ed25519-dalek (#1744)
Closes #1360
This commit is contained in:
29
crates/ed25519-dalek/RUSTSEC-0000-0000.md
Normal file
29
crates/ed25519-dalek/RUSTSEC-0000-0000.md
Normal file
@@ -0,0 +1,29 @@
|
||||
```toml
|
||||
[advisory]
|
||||
id = "RUSTSEC-0000-0000"
|
||||
package = "ed25519-dalek"
|
||||
date = "2022-06-11"
|
||||
categories = ["crypto-failure"]
|
||||
url = "https://github.com/MystenLabs/ed25519-unsafe-libs"
|
||||
|
||||
[versions]
|
||||
patched = [">= 2"]
|
||||
```
|
||||
|
||||
# Double Public Key Signing Function Oracle Attack on `ed25519-dalek`
|
||||
|
||||
Versions of `ed25519-dalek` prior to v2.0 model private and public keys as
|
||||
separate types which can be assembled into a `Keypair`, and also provide APIs
|
||||
for serializing and deserializing 64-byte private/public keypairs.
|
||||
|
||||
Such APIs and serializations are inherently unsafe as the public key is one of
|
||||
the inputs used in the deterministic computation of the `S` part of the signature,
|
||||
but not in the `R` value. An adversary could somehow use the signing function as
|
||||
an oracle that allows arbitrary public keys as input can obtain two signatures
|
||||
for the same message sharing the same `R` and only differ on the `S` part.
|
||||
|
||||
Unfortunately, when this happens, one can easily extract the private key.
|
||||
|
||||
Revised public APIs in v2.0 of `ed25519-dalek` do NOT allow a decoupled
|
||||
private/public keypair as signing input, except as part of specially labeled
|
||||
"hazmat" APIs which are clearly labeled as being dangerous if misused.
|
||||
Reference in New Issue
Block a user