View Issue Details

IDProjectCategoryView StatusLast Update
0006179Talerspecificationpublic2024-01-12 13:03
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
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionwon't fix 
Product Versiongit (master) 
Target Version0.7.1Fixed in Version0.7.1 
Summary0006179: Add authentication to /reserves/$RESERVE_PUB
DescriptionThe implementation in ... states:

  .. note::
    The client currently does not have to demonstrate knowledge of the private
    key of the reserve to make this request, which makes the reserve's public
    key privileged information known only to the client, their bank, and the
    exchange.

The knowledge of a reserve's public key should not be sufficient to get read access to the private data in the reserve. F.e. the exchange could require a reasonably recent timestamp and random value to be signed with the corresponding private key.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2020-04-14 14:07

manager   ~0015649

Well, we considered which information one can get, which is basically
1) how much money was put into the reserve
2) how much money was taken out.

The reserve_pub is only exposed to the bank (from the wire transfer), and the bank already knows (1).

Leaking (2) to the bank seems pretty harmless, especially given that it will virtually always be the case that the wallet takes out all the money immediately.

So which information loss exactly are you worried about here that would justify some crude authentication measure?
(Note that signing timestamps is quite crude, as we then have to worry about replays and/or unsynchronized clocks, and if we want to guard against replays we'd have to keep extra state at the exchange. Also, this is an API for which we cannot charge fees, so one BIG worry is abusing it for DoS. So it is very important that the exchange has little work to do here (in particular no write access to the database!), and that we can easily add a caching proxy.

Given the useless information returned to those with prior knowledge, I think adding authentication is not a good trade-off.

oec

2020-04-14 14:14

developer   ~0015650

Oh, yes, indeed, reserve != wallet. I agree that the knowledge of bank->reserve->wallet transactions is rather harmless and doesn't vindicate additional complexity.

Christian Grothoff

2020-04-14 14:29

manager   ~0015651

Ah, I see your (slight) confusion. No problem, will close the bug.

Issue History

Date ModifiedUsernameFieldChange
2020-04-14 14:00oecNew Issue
2020-04-14 14:00oecStatusnew => assigned
2020-04-14 14:00oecAssigned To => Christian Grothoff
2020-04-14 14:07Christian GrothoffNote Added: 0015649
2020-04-14 14:14oecNote Added: 0015650
2020-04-14 14:29Christian GrothoffNote Added: 0015651
2020-04-14 14:29Christian GrothoffStatusassigned => closed
2020-04-14 14:29Christian GrothoffResolutionopen => won't fix
2020-04-14 14:29Christian GrothoffFixed in Version => 0.7.1
2020-04-14 14:29Christian GrothoffProduct Version => git (master)
2020-04-14 14:29Christian GrothoffTarget Version => 0.7.1
2024-01-12 13:03Christian GrothoffCategoryexchange API (HTTP specification) => specification