Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What mechanisms (if any) do we need to prevent data tampering? #67

Open
ianbjacobs opened this issue Jun 13, 2017 · 10 comments
Open

What mechanisms (if any) do we need to prevent data tampering? #67

ianbjacobs opened this issue Jun 13, 2017 · 10 comments
Assignees

Comments

@ianbjacobs
Copy link
Collaborator

@mattsaxon wrote: "How do we ensure that fields are not tampered with (e.g., malicious changes to the beneficiary)?. Similarly, it is important that the payeeName not be changed by the payer or the payment app in order to be sure that automatic controls at the payee’s bank will work. "

@CYV
Copy link
Collaborator

CYV commented Aug 18, 2017

I aggree these are two important issues : nor the "payeeAccountNumber" nor the "payeeName" should be tampered (this is a major fraud scenario).
Could we imagine to sign those two fielsd with the merchant (payee) https key: controls could be made by payment app and also by the payerbank.

@mattsaxon
Copy link
Collaborator

Why don't we sign the whole response or indeed encrypt it to prevent tracking? I'd suggest we provide the key in the requestData as the payment app may not have easy access to the merchants public key in the https very if it is 3rd party.

@CYV
Copy link
Collaborator

CYV commented Aug 22, 2017

I aggree, it seems better to put the public key in the request data. Actually, this key must be a certificate in order to be controlled independently. (doing this, arn't we recreating SCAI by the way ;-)

ok to mention that the message (with IBAN) could be signed either by merchant or third party.

nevertheless, I suggest we sign only and let the encryption for the https.

@ianbjacobs
Copy link
Collaborator Author

One thing we have been talking about in the tokenization task force is to pass a URL that identifies a public key. The payment app (which could be the browser) fetches the key and does the encryption.
Thoughts?

I will keep you posted of other ideas about encrypting data from the tokenization task force.

Ian

@ianbjacobs ianbjacobs changed the title What mechanisms (if any) do we need to provent data tampering? What mechanisms (if any) do we need to prevent data tampering? Sep 7, 2017
@mattsaxon
Copy link
Collaborator

mattsaxon commented Nov 10, 2017

So for Payer/Payee-Credit-Transfer we propose to sign the request only. There is no signature of encryption needed on the response.

For PISP-credit-transfer there is no requirement for signature or encryption.

Can we get consensus to that choice?

  • Cyril
  • Vincent
  • Ian

@cyberphone
Copy link

@mattsaxon

For PISP-credit-transfer there is no requirement for signature or encryption.

All PISP APIs define their own security mechanisms.

@mattsaxon
Copy link
Collaborator

@cyberphone, watch this space for a proposal on signature or encryption. My view is that it should be optional for PISP-credit-transfer, do you believe it should be mandatory? If so, can you provide an explanation?

@mattsaxon mattsaxon self-assigned this Nov 10, 2017
@cyberphone
Copy link

cyberphone commented Nov 11, 2017

@mattsaxon I would start in another end by defining the possible purpose (and consumer) of a security solution.

Although message encryption may be cool, it introduces key distribution issues which must be addressed from the very beginning. Saturn (my "brainchild"), encrypts Authorization Data, Card Numbers, and Private Messages using three entirely different (but for the use case optimized), key distribution methods. They are all worth a study IMO. The encryption schemes work as follows:

  • Authorization Data objects are encrypted by Issuer-specific public keys of the associated payment credential deployed in the Wallet during credential enrollment
  • Card Numbers are encrypted by public keys retrieved through lookup of the Acquirer. The same concept but targeting the Merchant Bank is used for encrypting Payer Account Data needed for supporting convenient refunding of CT payments
  • Private Messages (including Risk Based Authentication requests) returned from the Payer's Bank to the Payer through the payment back-end are encrypted by symmetric keys created by the Wallet and supplied in [encrypted] Authorization Data objects

@cyberphone
Copy link

Since your system doesn't build on an end-2-end security scheme, there are probably huge limitations to what you can add in terms of signatures and encryption.

@cyberphone
Copy link

@CYV @mattsaxon Signatures is a generally difficult (to agree on) issue. The Financial API folks rejected the signature solution used by the Berlin Group as well as STET. See 9/G:
http://lists.openid.net/pipermail/openid-specs-fapi/attachments/20171115/86bf05d0/attachment-0001.pdf
"It is just an individual IETF draft that any person can come up at any day"

http://lists.openid.net/pipermail/openid-specs-fapi/2017-November/000629.html
"http request signing is impossible"

The root of problem is that there is no standard for signing REST requests. My solution to that was simply dumping REST which was an easy one since WebSocket is way more powerful for "Wallets"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants