View Issue Details

IDProjectCategoryView StatusLast Update
0007304Talerexchangepublic2024-12-13 18:15
ReporterChristian Grothoff 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
PrioritynormalSeveritytweakReproducibilityN/A
Status closedResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version0.14Fixed in Version0.14 
Summary0007304: should we normalize payto://-URIs in the exchange before hashing? [5d]
DescriptionWe use the h_payto to re-identify accounts during KYC. It is used as the sharding key, and also in the protocol. In _most_ places (except for the GET /deposits/, where the client is really expected to already know the h_payto) the exchange now does return it to the client, so the client doesn't have to compute the hash itself. Still, normalization will make it "easier" to not accidentally re-require the (expensive) KYC process when little things have changed, such as a BIC in an 'iban' URI or capitalization of hostnames (x-taler-bank) or similar small shitty changes that don't matter (including possibly the 'receiver-name' as set by LibEuFin).

Whether to normalize and how is an open question. Where is pretty clear: the payto-uri hashes are all computed in libtalerutil in one function.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

related to 0008287 closedAntoine A Correction to the way we manage payto uris 

Activities

Christian Grothoff

2022-08-23 08:29

manager   ~0019025

Conclusion of the discussion has been that the only component that should normalize is the merchant (spa/backoffice) before hashing the payto://-URI and sending it to the exchange for payment.

Christian Grothoff

2022-08-23 08:31

manager   ~0019026

We should discuss which normalizations should be one. Candidates:
- lower-case everything (including receiver-name)
- upper-case everything (including receiver-name)
- remove BIC from iban/ payto://-URIs

Other?

Christian Grothoff

2024-01-28 21:25

manager   ~0021064

Related issue: fakebank revenue API returns payto with receiver-name, libeufin returns it without receiver name.
Merchant backend stores it with receiver-name, but has to match without it. See SUBSTRING logic around payto we used to match. Very inefficient (but OK, we have very few entries in that table), but primarily indicative of an issue: we index and match by payto://-URI, but don't have a proper normal form!

Florian Dold

2024-01-30 12:08

manager   ~0021088

@Christian could you please remind me why we want to keep the receiver name before hashing? I recall there was some reason, but I'm not sure anymore what it was.

Christian Grothoff

2024-01-30 12:20

manager   ~0021089

I think there are different parts of the protocol with different objectives. If a merchant backend wants to instruct an exchange where to wire the funds and provides a payto://-URI with receiver name, we want to hash that payto://-URI with the receiver name as that is part of the instruction and thus should also be included in what is digitally signed. And if the receiver name changes and thus the hash changes, that's pretty harmless, it only prevents aggregation across the different receiver names, which might actually be a very good thing.

That's completely different from other use-cases of payto://!

Christian Grothoff

2024-09-09 18:25

manager   ~0023221

It'll be a mighty messy migration if we do this once AML/KYC data is in the system.
Maybe this is actually the time to introduce a TalerNormalizedPaytoHashP or something like that.
And then go over all existing use-cases and figure out which one is what.

Issue History

Date ModifiedUsernameFieldChange
2022-08-20 19:28Christian GrothoffNew Issue
2022-08-20 19:28Christian GrothoffStatusnew => assigned
2022-08-20 19:28Christian GrothoffAssigned To => Florian Dold
2022-08-23 08:29Christian GrothoffNote Added: 0019025
2022-08-23 08:31Christian GrothoffNote Added: 0019026
2022-08-23 08:31Christian GrothoffAssigned ToFlorian Dold =>
2022-08-23 08:31Christian GrothoffPriorityurgent => normal
2022-08-23 08:31Christian GrothoffStatusassigned => feedback
2022-10-20 09:16Christian GrothoffTarget Version0.9 => 0.9.1
2022-10-20 09:41Christian GrothoffPrioritynormal => low
2022-10-20 09:41Christian GrothoffTarget Version0.9.1 =>
2023-04-04 17:30Florian DoldProduct Versiongit (master) => 0.11
2023-04-04 17:31Florian DoldProduct Version0.11 => git (master)
2023-04-04 17:31Florian DoldTarget Version => 0.11
2023-12-22 14:12Christian GrothoffTarget Version0.11 => post-1.0
2023-12-24 05:30Christian GrothoffStatusfeedback => acknowledged
2024-01-28 21:25Christian GrothoffNote Added: 0021064
2024-01-30 12:08Florian DoldNote Added: 0021088
2024-01-30 12:20Christian GrothoffNote Added: 0021089
2024-01-30 13:07Antoine ARelationship addedrelated to 0008287
2024-09-09 18:13Christian GrothoffPrioritylow => normal
2024-09-09 18:13Christian GrothoffTarget Versionpost-1.0 => 1.0
2024-09-09 18:25Christian GrothoffNote Added: 0023221
2024-09-13 23:12Christian GrothoffAssigned To => Christian Grothoff
2024-09-13 23:12Christian GrothoffStatusacknowledged => assigned
2024-09-16 21:54Christian GrothoffSummaryshould we normalize payto://-URIs in the exchange before hashing? => should we normalize payto://-URIs in the exchange before hashing? [2d]
2024-10-31 09:27Christian GrothoffSummaryshould we normalize payto://-URIs in the exchange before hashing? [2d] => should we normalize payto://-URIs in the exchange before hashing? [5d]
2024-11-05 11:29Christian GrothoffStatusassigned => informing
2024-11-05 11:29Christian GrothoffResolutionopen => fixed
2024-11-05 11:29Christian GrothoffFixed in Version => 0.14
2024-11-05 11:29Christian GrothoffTarget Version1.0 => 0.14
2024-12-13 18:15Christian GrothoffStatusinforming => closed