Enabling Secure Web Payments with GNU Taler J. Burdges, F. Dold, C. - - PowerPoint PPT Presentation

enabling secure web payments with gnu taler
SMART_READER_LITE
LIVE PREVIEW

Enabling Secure Web Payments with GNU Taler J. Burdges, F. Dold, C. - - PowerPoint PPT Presentation

Enabling Secure Web Payments with GNU Taler J. Burdges, F. Dold, C. Grothoff , M. Stanisci Institut National de Recherche en Informatique et en Automatique (Inria) The GNU Project Ashoka Fellow 17.12.2016 I think one of the big things that


slide-1
SLIDE 1

Enabling Secure Web Payments with GNU Taler

  • J. Burdges, F. Dold, C. Grothoff, M. Stanisci

Institut National de Recherche en Informatique et en Automatique (Inria) The GNU Project Ashoka Fellow

17.12.2016

“I think one of the big things that we need to do, is we need to get a way from true-name payments on the

  • Internet. The credit card payment system is one of the worst things that happened for the user, in terms of being

able to divorce their access from their identity.” –Edward Snowden, IETF 93 (2015)

slide-2
SLIDE 2

Motivation Modern economies need currency ...

slide-3
SLIDE 3

This was a question posed to RAND researchers in 1971: “Suppose you were an advisor to the head of the KGB, the Soviet Secret Police. Suppose you are given the as- signment of designing a system for the surveillance of all citizens and visitors within the boundaries of the USSR. The system is not to be too obtrusive or obvious. What would be your decision?”

slide-4
SLIDE 4

This was a question posed to RAND researchers in 1971: “Suppose you were an advisor to the head of the KGB, the Soviet Secret Police. Suppose you are given the as- signment of designing a system for the surveillance of all citizens and visitors within the boundaries of the USSR. The system is not to be too obtrusive or obvious. What would be your decision?”

Mastercard/Visa are too transparent.

slide-5
SLIDE 5

Bitcoin

◮ Unregulated payment system and currency:

⇒ lack of regulation is a feature!

◮ Implemented in free software ◮ Decentralised peer-to-peer system

slide-6
SLIDE 6

Bitcoin

◮ Unregulated payment system and currency:

⇒ lack of regulation is a feature!

◮ Implemented in free software ◮ Decentralised peer-to-peer system ◮ Decentralised banking requires solving Byzantine consensus ◮ Creative solution: tie initial accumulation to solving consensus

slide-7
SLIDE 7

Bitcoin

◮ Unregulated payment system and currency:

⇒ lack of regulation is a feature!

◮ Implemented in free software ◮ Decentralised peer-to-peer system ◮ Decentralised banking requires solving Byzantine consensus ◮ Creative solution: tie initial accumulation to solving consensus

⇒ Proof-of-work advances ledger ⇒ Very expensive banking

slide-8
SLIDE 8

?

Current average transaction value: ≈ 1000 USD

slide-9
SLIDE 9

?

Cryptography is rather primitive: All Bitcoin transactions are public and linkable! ⇒ no privacy guarantees ⇒ enhanced with “laundering” services ZeroCoin, CryptoNote (Monero) and ZeroCash (ZCoin) offer anonymity.

slide-10
SLIDE 10

Is society ready for an anarchistic economy?

slide-11
SLIDE 11

GNU Taler

Digital cash, made socially responsible.

Taxable, Anonymous, Libre, Practical, Resource Friendly

slide-12
SLIDE 12

Architecture of GNU Taler

Exchange Customer Merchant Auditor withdraw coins deposit coins spend coins verify

slide-13
SLIDE 13

Usability of Taler

https://demo.taler.net/

  • 1. Install Chrome extension.
  • 2. Visit the bank.demo.taler.net to withdraw coins.
  • 3. Visit the shop.demo.taler.net to spend coins.
slide-14
SLIDE 14

Value proposition: Customer

◮ Convenient: pay with one click ◮ Guaranteed: never fear being rejected by false-positives in the

fraud detection

◮ Secure: like cash, except no worries about counterfeit ◮ Privacy-preserving: payment requires no personal information ◮ Stable: no currency fluctuations, pay in traditional currencies ◮ Free software: no hidden “gadgets”, third parties can verify

slide-15
SLIDE 15

Value proposition: Merchant

◮ Fast: transactions at Web-speed ◮ Secure: signed contracts, no legitimate customer rejected by

fraud decection

◮ Free software: competitive pricing and support ◮ Low fees: efficient protocol + no fraud = low costs ◮ Flexible: any currency, any amount ◮ Ethical: no fluctuation risk, no pyramid scheme, not suitable

for illegal business

◮ Legal: complies with Regulation (EU) 2016/679 (GDPR)1

1Requires privacy by design and data minimization for all data processing in

Europe after 25.5.2018.

slide-16
SLIDE 16

Value proposition: Government

◮ Free software = commons: no monopoly, preserve

independence

◮ Taxabiliy: reduces black markets ◮ Efficiency: high transaction costs hurt the economy ◮ Security: signed contracts, no counterfeit ◮ Audited: no bad banks ◮ Privacy: protection against foreign espionage

slide-17
SLIDE 17

Taxability

We say Taler is taxable because:

◮ Merchant’s income is visible from deposits. ◮ Hash of contract is part of deposit data. ◮ State can trace income and enforce taxation.

slide-18
SLIDE 18

Taxability

We say Taler is taxable because:

◮ Merchant’s income is visible from deposits. ◮ Hash of contract is part of deposit data. ◮ State can trace income and enforce taxation.

Limitations:

◮ withdraw loophole ◮ sharing coins among family and friends

slide-19
SLIDE 19

Merchant Integration: Wallet Detection

<script src="taler -wallet -lib.js" ></script > <script > taler.onPresent (() => { alert("Talerwalletisinstalled"); }); taler.onAbsent (() => { alert("Talerwalletisnotinstalled"); }); </script >

slide-20
SLIDE 20

Merchant Integration: Payment Request

HTTP /1.1 402 Payment Required Content-Type : text/html; charset=UTF-8 X-Taler-Contract-Url : https :// shop/ generate-contract /42 <!DOCTYPE html> <html> <!-- fallback for browsers without the Taler extension

  • ->

You do not seem to have Taler installed , here are

  • ther

payment

  • ptions

... </html>

slide-21
SLIDE 21

Merchant Integration: Contract

{ "H_wire":" YTH0C4QBCQ10VDNTJN0DCTTV2Z6JHT5NF43F0RQHZ8JYB5NG4W4G ...", "amount":{"currency":"EUR","fraction":1,"value":0}, "auditors":[{" auditor_pub ":"42 V6TH91Q83FB846DK1GW3JQ5E8DS273W4 ..."}], "exchanges":[{" master_pub":"1 T5FA8VQHMMKBHDMYPRZA2ZFK2S63AKF0Y ...", "url":"https :// exchange/"}], "expiry":"/Date (1480119270)/ ", " fulfillment_url ": "https :// shop/article /42? tid =249& time =14714744", "max_fee":{"currency":"EUR","fraction":01,"value":0}, "merchant":{"address":"Mailbox4242"," jurisdiction ":"Jersey", "name":"ShopInc."}, " merchant_pub ":" Y1ZAR5346J3ZTEXJCHQY9NJN78EZ2HSKZK8M0MYTNRJG5N ...", "products":[{ " description ":"Essay:TheGNUProject", "price":{"currency":"EUR","fraction":1,"value":0}, " product_id":42,"quantity":1}] , " refund_deadline ":"/Date (1471522470)/ ", "timestamp":"/Date (1471479270)/ ", " transaction_id " :249960194066269 }

slide-22
SLIDE 22

How does it work?

We use a few ancient constructions:

◮ Cryptographic hash function (1989) ◮ Blind signature (1983) ◮ Schnorr signature (1989) ◮ Diffie-Hellman key exchange (1976) ◮ Cut-and-choose zero-knowledge proof (1985)

But of course we use modern instantiations.

slide-23
SLIDE 23

Global setup: Pick an Elliptic curve

Need: G generator in ECC curve, a point

  • size of ECC group, o := |G|, o prime

Now we can, for example, compute: A = G + G = 2G B = A + G = 3G C = cG for c ∈ Z Note: G = (o + 1)G

slide-24
SLIDE 24

Exchange setup: Create a denomination key (RSA)

  • 1. Pick random primes p, q.
  • 2. Compute n := pq,

φ(n) = (p − 1)(q − 1)

  • 3. Pick small e < φ(n) such that

d := e−1 mod φ(n) exists.

  • 4. Publish public key (e, n).

(p, q)

slide-25
SLIDE 25

Merchant: Create a signing key (EdDSA)

◮ pick random m mod o as

private key

◮ M = mG public key

m M Capability: m ⇒

M

slide-26
SLIDE 26

Customer: Create a planchet (EdDSA)

◮ Pick random c mod o private key ◮ C = cG public key

c

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

Capability: c ⇒

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5
slide-27
SLIDE 27

Customer: Blind planchet (RSA)

  • 1. Obtain public key (e, n)
  • 2. Compute m := FDH(C),

m < n.

  • 3. Pick blinding factor b ∈ Zn
  • 4. Transmit m′ := mbe mod n

b

b

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

Exchange

transmit

slide-28
SLIDE 28

Exchange: Blind sign (RSA)

  • 1. Receive m′.
  • 2. Compute s′ := m′d mod n.
  • 3. Send signature s′.

b

b

Customer

transmit

slide-29
SLIDE 29

Customer: Unblind coin (RSA)

  • 1. Receive s′.
  • 2. Compute s := s′b−1 mod n.

b

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5 b

slide-30
SLIDE 30

Withdrawing coins on the Web

Taler (W ithdraw coins) Customer Browser Customer Browser Bank Site Bank Site Taler Exchange Taler Exchange HTTPS HTTPS wire transfer 1 user authentication 2 send account portal 3 initiate withdrawal (specify amount and exchange) 4 request coin denomination keys and wire transfer data 5 send coin denomination keys and wire transfer data 6 execute withdrawal

  • pt

7 request transaction authorization 8 transaction authorization 9 withdrawal confirmation 10 execute wire transfer 11 withdraw request 12 signed blinded coins 13 unblind coins

slide-31
SLIDE 31

Customer: Build shopping cart

www

Merchant

transmit

slide-32
SLIDE 32

Merchant: Propose contract (EdDSA)

  • 1. Complete proposal D.
  • 2. Send D, EdDSAm(D)

M

Customer m

transmit

slide-33
SLIDE 33

Customer: Spend coin (EdDSA)

  • 1. Receive proposal D,

EdDSAm(D).

  • 2. Send s, C, EdDSAc(D)
M

M

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

c Merchant

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

transmit t r a n s m i t

slide-34
SLIDE 34

Merchant and Exchange: Verify coin (RSA)

se ? ≡ m mod n

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

?

slide-35
SLIDE 35

Payment processing with Taler

Taler (Paym ent) Payer (Shopper) Browser Payer (Shopper) Browser Payee (Merchant) Site Payee (Merchant) Site Taler Exchange Taler Exchange Tor/HTTPS HTTP/HTTPS Request Offer 1 Choose goods by navigating to offer URL 2 Send signed digital contract proposal

  • pt

3 Select Taler payment method (skippable with auto-detection) Execute Paym ent

  • pt

4 Affirm contract 5 Navigate to fulfillment URL 6 Send hash of digital contract and payment information 7 Send payment 8 Forward payment 9 Confirm payment 10 Confirm payment Fulfilm ent 11 Reload fulfillment URL for delivery 12 Provide product resource

slide-36
SLIDE 36

Giving change

It would be inefficient to pay EUR 100 with 1 cent coins!

◮ Denomination key represents value of a coin. ◮ Exchange may offer various denominations for coins. ◮ Wallet may not have exact change! ◮ Usability requires ability to pay given sufficient total funds.

slide-37
SLIDE 37

Giving change

It would be inefficient to pay EUR 100 with 1 cent coins!

◮ Denomination key represents value of a coin. ◮ Exchange may offer various denominations for coins. ◮ Wallet may not have exact change! ◮ Usability requires ability to pay given sufficient total funds.

Key goals:

◮ maintain unlinkability ◮ maintain taxability of transactions

slide-38
SLIDE 38

Giving change

It would be inefficient to pay EUR 100 with 1 cent coins!

◮ Denomination key represents value of a coin. ◮ Exchange may offer various denominations for coins. ◮ Wallet may not have exact change! ◮ Usability requires ability to pay given sufficient total funds.

Key goals:

◮ maintain unlinkability ◮ maintain taxability of transactions

Method:

◮ Contract can specify to only pay partial value of a coin. ◮ Exchange allows wallet to obtain unlinkable change for

remaining coin value.

slide-39
SLIDE 39

Strawman solution

Given partially spent private coin key cold:

  • 1. Pick random cnew mod o private key
  • 2. Cnew = cnewG public key
  • 3. Pick random bnew
  • 4. Compute mnew := FDH(Cnew), m < n.
  • 5. Transmit m′

new := mnewbe new mod n

... and sign request for change with cold.

b X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

cnew bnew Exchange

transmit

slide-40
SLIDE 40

Strawman solution

Given partially spent private coin key cold:

  • 1. Pick random cnew mod o private key
  • 2. Cnew = cnewG public key
  • 3. Pick random bnew
  • 4. Compute mnew := FDH(Cnew), m < n.
  • 5. Transmit m′

new := mnewbe new mod n

... and sign request for change with cold.

b X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

cnew bnew Exchange

transmit

Problem: Owner of cnew may differ from owner of cold!

slide-41
SLIDE 41

Diffie-Hellman (ECDH)

  • 1. Create private keys d, h mod o
  • 2. Define D = dG
  • 3. Define H = hG
  • 4. Compute DH := d(hD) = h(dH)

h

D

H

d

slide-42
SLIDE 42

Customer: Transfer key setup (ECDH)

Given partially spent private coin key cold:

  • 1. Let Cold := coldG (as before)
  • 2. Create random private transfer key t mod o
  • 3. Compute T := tG
  • 4. Compute X := cold(tG) = t(coldG) = tCold
  • 5. Derive cnew and bnew from X
  • 6. Compute Cnew := cnewG
  • 7. Compute mnew := FDH(Cnew)
  • 8. Transmit m′

new := mnewbe new

t

C

T

cold cnew bnew

b

Exchange

transmit

slide-43
SLIDE 43

Cut-and-Choose

t1

C

T

cold cnew,1 bnew,1

b

Exchange

transmit

t2

C

T

cold cnew,2 bnew,2

b

Exchange

transmit

t3

C

T

cold cnew,3 bnew,3

b

Exchange

transmit

slide-44
SLIDE 44

Exchange: Choose!

Exchange sends back random γ ∈ {1, 2, 3} to the customer.

slide-45
SLIDE 45

Customer: Reveal

  • 1. If γ = 1, send t2, t3 to exchange
  • 2. If γ = 2, send t1, t3 to exchange
  • 3. If γ = 3, send t1, t2 to exchange
slide-46
SLIDE 46

Exchange: Verify (γ = 2)

t1

C

T

Cold cnew,1 bnew,1

b

t3

C

T

Cold cnew,3 bnew,3

b
slide-47
SLIDE 47

Exchange: Blind sign change (RSA)

  • 1. Take m′

new,γ.

  • 2. Compute s′ := m′d

new,γ mod n.

  • 3. Send signature s′.

b

b

Customer

transmit

slide-48
SLIDE 48

Customer: Unblind change (RSA)

  • 1. Receive s′.
  • 2. Compute s := s′b−1

new,γ mod n.

bnew,γ

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5 b

slide-49
SLIDE 49

Exchange: Allow linking change

Given Cold return Tγ, s := s′b−1

new,γ mod n.

Cold Tγ

b

Customer link link

slide-50
SLIDE 50

Customer: Link (threat!)

  • 1. Have cold.
  • 2. Obtain Tγ, s from exchange
  • 3. Compute Xγ = coldTγ
  • 4. Derive cnew,γ and bnew,γ from Xγ
  • 5. Unblind s := s′b−1

new,γ mod n

Tγ Exchange

b

C

T

bnew,γ cold cnew,γ

X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5 X N A G Y E 6 P 6 5 7 3 5 P 4 H 1 N G N 8 D T 5 2 8 W S 3 P X Z T 8 T Y D Y P S 8 7 7 G C D Z 5

link l i n k

slide-51
SLIDE 51

Refresh protocol summary

◮ Customer asks exchange to convert old coin to new coin ◮ Protocol ensures new coins can be recovered from old coin

⇒ New coins are owned by the same entity! Thus, the refresh protocol allows:

◮ To give unlinkable change. ◮ To give refunds to an anonymous customer. ◮ To expire old keys and migrate coins to new ones.

Transactions via refresh are equivalent to sharing a wallet.

slide-52
SLIDE 52

Operational security

Wallet Browser Web shop Taler backend

(4) signed contract (signal) (signal) (5) signed coins

(3,6) custom (HTTPS)

(HTTPS) (1) proposed contract / (7) signed coins (2) signed contract / (8) confirmation (HTTPS)

slide-53
SLIDE 53

Competitor comparison

Cash Bitcoin Zerocoin Creditcard GNU Taler Online −−− ++ ++ + +++ Offline +++ −− −− + −−

  • Trans. cost

+ −−− −−− − ++ Speed + −−− −−−

  • ++

Taxation − −− −−− +++ +++ Payer-anon ++

  • ++

−−− +++ Payee-anon ++

  • ++

−−− −−− Security −

  • −−

++ Conversion +++ −−− −−− +++ +++ Libre − +++ +++ − − − +++

slide-54
SLIDE 54

Current technical developments

◮ Improving wallet (error handling, features, browser support) ◮ Ongoing work on exchange auditing ◮ Tutorial for merchants ◮ Tutorial for Web shop integration

https://api.taler.net/

slide-55
SLIDE 55

Business considerations

◮ Exchange needs to be a legal (!) business to operate. ◮ Exchange operator income is from transaction fees. ◮ Created Taler Systems S.A. in Luxemburgh. ◮ Now trying to find partners and financing for startup.

slide-56
SLIDE 56

Conclusion

What can we do?

◮ Suffer mass-surveillance enabled by credit card oligopolies

with high fees, and

◮ Engage in arms race with deliberately unregulatable

blockchains, and

◮ Enjoy the “benefits” of cash

OR

◮ Establish free software alternative balancing social goals!

slide-57
SLIDE 57

Do you have any questions?

References:

1. Christian Grothoff, Bart Polot and Carlo von Loesch. The Internet is broken: Idealistic Ideas for Building a GNU Network. W3C/IAB Workshop on Strengthening the Internet Against Pervasive Monitoring (STRINT), 2014. 2. Jeffrey Burdges, Florian Dold, Christian Grothoff and Marcello Stanisci. Enabling Secure Web Payments with GNU Taler. SPACE 2016. 3. Florian Dold, Sree Harsha Totakura, Benedikt M¨ uller, Jeffrey Burdges and Christian Grothoff. Taler: Taxable Anonymous Libre Electronic Reserves. Available upon request. 2016. 4. Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer and Madars

  • Virza. Zerocash: Decentralized Anonymous Payments from Bitcoin. IEEE Symposium on Security &

Privacy, 2016. 5. David Chaum, Amos Fiat and Moni Naor. Untraceable electronic cash. Proceedings on Advances in Cryptology, 1990. 6. Phillip Rogaway. The Moral Character of Cryptographic Work. Asiacrypt, 2015.

Let money facilitate trade; but ensure capital serves society.