View Issue Details

IDProjectCategoryView StatusLast Update
0010139Talerwallet-corepublic2026-09-19 14:40
Reporteroec Assigned ToFlorian Dold Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityhighSeverityminorReproducibilityhave not tried
Status informingResolutionfixed 
Product Versiongit (master) 
Target Version1.6Fixed in Version1.6 
Summary0010139: Check if nacl-fast.ts is affected by ed25519 verification malleability
DescriptionAccording to https://github.com/dchest/tweetnacl-js/issues/253 ,
"ed25519 verification is malleable and accepts forged signatures":
"tweetnacl ed25519 signature verification is malleable and does not have SUF-CMA (strong unforgeability under chosen message attacks). Malleability is problematic in blockchain context. MtGox was hacked because of it."

It is not clear to me if this applies to the nacl-fast.ts implementation and its use in the context of wallet-core.

This should be checked.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

schanzen

2025-06-29 15:15

administrator   ~0025378

Last edited: 2025-06-29 15:16

This does not sound right. Not having SUF-CMA (and only EUF-CMA) will allow attackers to create different signatures of already seen messages.
This probably does not affect taler at all.

also AFAIR, EdDSA sigantures are always trivially malleable. Hence only EUF-CMA, which is a problem in blockchains as it will result in a different "transaction ID"

schanzen

2025-06-29 15:26

administrator   ~0025379

Sorry my mistage. Of course common standardized EdDSA schemes are, in fact, SUF-CMA. The nacl implementation we use should follow the standard.
It still holds that this malleability is (probably) not security relevant for us.

schanzen

2025-07-03 10:52

administrator   ~0025393

Your link above is broken.

For convenience https://github.com/dchest/tweetnacl-js/issues/253

schanzen

2025-07-03 10:55

administrator   ~0025394

Note the author of tweetnacl does not want to fix it. Maybe we can use a wasm-compiled libsodium?

Florian Dold

2026-08-31 13:46

manager   ~0029787

We might want to switch to https://www.npmjs.com/package/@noble/curves

Florian Dold

2026-08-31 14:40

manager   ~0029792

Noble is better audited and not affected by the ed25519 verification malleability.

commit 6f1e8504ac78bb2d47d5cb7a9f046151c1d383d5 (HEAD -> master, origin/master, origin/HEAD)
Author: Florian Dold <dold@taler.net>
Date: Mon Aug 31 16:28:01 2026 +0200

    taler-util: replace TweetNaCl with Noble

Issue History

Date ModifiedUsernameFieldChange
2025-06-29 11:04oecNew Issue
2025-06-29 15:15schanzenNote Added: 0025378
2025-06-29 15:16schanzenNote Edited: 0025378
2025-06-29 15:26schanzenNote Added: 0025379
2025-07-03 10:52schanzenNote Added: 0025393
2025-07-03 10:55schanzenNote Added: 0025394
2025-07-06 14:11oecDescription Updated
2026-01-25 11:32Christian GrothoffStatusnew => implementing
2026-08-31 13:46Florian DoldNote Added: 0029787
2026-08-31 14:40Florian DoldAssigned To => Florian Dold
2026-08-31 14:40Florian DoldStatusimplementing => informing
2026-08-31 14:40Florian DoldResolutionopen => fixed
2026-08-31 14:40Florian DoldNote Added: 0029792
2026-09-19 14:38Christian GrothoffTarget Versionpost-1.0 => 1.6
2026-09-19 14:40Christian GrothoffFixed in Version => 1.6