View Issue Details

IDProjectCategoryView StatusLast Update
0006181Talerexchangepublic2026-01-25 14:10
Reporteroec Assigned ToChristian Grothoff 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
PrioritynormalSeverityfeatureReproducibilityrandom
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version0.8Fixed in Version0.8 
Summary0006181: Exchange should provide API for uniformly distributed seeds
DescriptionOr: The Debian Effect on GNU Taler

One implicit assumption in the GNU Taler system is the uniformly random
distribution of all public keys, for coins and reserves. The likelihood
that two customers generate the same ED25519-keypair for their coins
must be negligible. In other words, there is an implicit assumption
about the quality of the PRNG's on each of the customer's devices.

However, history shows that this is assumption is false in reality:
F.e., due to a severe bug introduced by Debian into their openssl
package in 2008, customers of GNU Taler back then would very probably
have had plenty of collisions of those coins. They would have withdrawn
them from the exchange successfully (and thereby moving money from their
banks to the reserve and paying fees), but not everybody would be able
to use them afterwards because of detected "double-spending". And it
seems that there is not much the customer could do about this right now.

This is not per se a security problem for the exchange, but certainly an
issue for the acceptance of the GNU Taler system for customers and
merchants. And as we boldy assume that 300M Europeans are soon going to
use GNU Taler, creating billions of coins a year on systems with unknown
entropy of their PRNG's, the key distribution will be unknown and
probably non-uniform.

As a potential remedy, an exchange could offer an additional
API-endpoint /seed (GET) to provide random seeds (32bytes maybe) for the
wallet software to use as a seed when generating coins. This would
establish two things:

   1. The exchange would guarantee (==become responsible) to provide
      uniformly distributed seeds for all customers.

   2. The exchange could then statistically/rightfully argue to not
      accept any claims of collisions of coins.

Note also that, depending on the requirements from the regulator, an auditor
might also be able to evaluate the entropy of the PRNG of the exchange.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

oec

2020-04-15 08:53

developer   ~0015654

This should have been severity "feature request".

Christian Grothoff

2020-05-01 17:53

manager   ~0015839

Documented (docs.git, master) and implemented in the protocolv8 branch. Note that to keep it simple (and portable!), I'm using nothing fancy and just the libgnunetutil/libgcrypt PRNG and also no sendfile() in this implementation.

Issue History

Date ModifiedUsernameFieldChange
2020-04-15 08:47oecNew Issue
2020-04-15 08:47oecStatusnew => assigned
2020-04-15 08:47oecAssigned To => Christian Grothoff
2020-04-15 08:47oecTag Attached: Taler
2020-04-15 08:53oecNote Added: 0015654
2020-04-15 08:57Christian GrothoffSeveritymajor => feature
2020-04-15 08:57Christian GrothoffProduct Version => git (master)
2020-04-15 08:57Christian GrothoffTarget Version => 0.9
2020-04-15 21:58Christian GrothoffAssigned ToChristian Grothoff =>
2020-04-15 21:58Christian GrothoffStatusassigned => implementing
2020-05-01 17:53Christian GrothoffAssigned To => Christian Grothoff
2020-05-01 17:53Christian GrothoffStatusimplementing => informing
2020-05-01 17:53Christian GrothoffResolutionopen => fixed
2020-05-01 17:53Christian GrothoffFixed in Version => 0.8
2020-05-01 17:53Christian GrothoffNote Added: 0015839
2020-05-01 17:54Christian GrothoffTarget Version0.9 => 0.8
2021-08-24 14:23Christian GrothoffStatusinforming => closed
2026-01-25 14:10Christian GrothoffTag Detached: Taler