summaryrefslogtreecommitdiff
path: root/presentation/slides.tex
blob: 59e86b39d33dbfc6fef6d62e1f2ede88a5f71b63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
\documentclass{beamer}

\mode<presentation> {

% The Beamer class comes with a number of default slide themes
% which change the colors and layouts of slides. Below this is a list
% of all the themes, uncomment each in turn to see what they look like.

%\usetheme{default}
%\usetheme{AnnArbor}
%\usetheme{Antibes}
%\usetheme{Bergen}
%\usetheme{Berkeley}
%\usetheme{Berlin}
%\usetheme{Boadilla}
%\usetheme{CambridgeUS}
%\usetheme{Copenhagen}
%\usetheme{Darmstadt}
%\usetheme{Dresden}
%\usetheme{Frankfurt}
%\usetheme{Goettingen}
%\usetheme{Hannover}
%\usetheme{Ilmenau}
%\usetheme{JuanLesPins}
%\usetheme{Luebeck}
\usetheme{Madrid}
%\usetheme{Malmoe}
%\usetheme{Marburg}
%\usetheme{Montpellier}
%\usetheme{PaloAlto}
%\usetheme{Pittsburgh}
%\usetheme{Rochester}
%\usetheme{Singapore}
%\usetheme{Szeged}
%\usetheme{Warsaw}

% As well as themes, the Beamer class has a number of color themes
% for any slide theme. Uncomment each of these in turn to see how it
% changes the colors of your current slide theme.

%\usecolortheme{albatross}
%\usecolortheme{beaver}
%\usecolortheme{beetle}
%\usecolortheme{crane}
%\usecolortheme{dolphin}
%\usecolortheme{dove}
%\usecolortheme{fly}
%\usecolortheme{lily}
%\usecolortheme{orchid}
%\usecolortheme{rose}
%\usecolortheme{seagull}
%\usecolortheme{seahorse}
%\usecolortheme{whale}
%\usecolortheme{wolverine}

%\setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line
%\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line

% remove the navigation symbols from the bottom of all slides
\setbeamertemplate{navigation symbols}{}
}

\usepackage{graphicx} % Allows including images
\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables

\usepackage{eurosym}

\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}


\newcounter{sauvegardeenumi}
\newcommand{\saveEnumCounter}{\setcounter{sauvegardeenumi}{\theenumi}}
\newcommand{\continueEnumCounter}{\setcounter{enumi}{\thesauvegardeenumi}}

%----------------------------------------------------------------------------------------
%	TITLE PAGE
%----------------------------------------------------------------------------------------

% The short title appears at the bottom of every slide, the full title is only on the title page
\title[The GNU Taler System]{The GNU Taler System:  Practical and Provably Secure Electronic Payments}

\author[F. Dold]{Florian Dold \\ \textit{dold@taler.net}} % Your name

\date{\today} % Date, can be changed to a custom date

\begin{document}


\titlegraphic{%
 \includegraphics[width=2.5cm]{pics/logo-inria.png}\hspace*{2cm}~%
 \includegraphics[width=1cm]{pics/logo-bretagne.png}\hspace*{2cm}~%
 \includegraphics[width=2.5cm]{pics/logo-rff.png}
}


\begin{frame}
\titlepage % Print the title page as the first slide

\end{frame}

\section{Introduction and Motivation}


%--------------------

\begin{frame}
\frametitle{Motivation}
The internet has many standards, but not a standard payment system.

$\Rightarrow$ Proliferation of ads, proprietary payment systems that collect user data.

\vfill

\begin{block}{Question}
  How can new network protocols and cryptographic protocols
  improve online payment systems?  Can a payment system be secure
  and follow certain \emph{ethical/societal} goals?
\end{block}
\end{frame}

%--------------------

\begin{frame}
\frametitle{The Payments Landscape}
  \begin{itemize}
    \item Different payment instruments have different, often conflicting requirements.
    \item Payment systems are often used in combination / layered.
    \item Value-based vs register-based.
    \item Privacy usually not a concern!
  \end{itemize}
\end{frame}

%--------------------

\begin{frame}
\frametitle{Grossly Simplified:  Payments in France}
\includegraphics[width=\textwidth]{pics/payment-stack-france.png}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Design Goals}
% say:  design goals are entirely objective
Not all payment systems have the same requirements.  We want ours to
\begin{enumerate}[<+- | alert@+>]
  \item \ldots be implemented as free software.
  \item \ldots protect the privacy of buyers.
  \item \ldots enable the state to tax income and crack down on illegal business
    activities.
  \item \ldots prevent payment fraud.
  \item \ldots only disclose the minimal amount of information necessary.
  \item \ldots be useable.
  \item \ldots be efficient.
  \item \ldots avoid single points of failure.
  \item \ldots foster competition.
\end{enumerate}
\pause $\Rightarrow$ The GNU Taler system is an effort to implement this system.
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Contributions I: Value-based payments}
%This thesis focuses mainly on value-based payments
%on top of an existing register-based system.  Also makes
%contribution towards register layer.

Income-transparent online e-cash
\begin{itemize}
  \item Extension and practical instantiation of (Chaumian) e-cash.
  \pause
  \item Consideration of aborts, network failures, refunds, multi-coin
    payments, faults from wallet synchronization and their effects on anonymity;
    showing the practical necessity of a refresh operation.
  \pause
  \item Auditor component: Detection mechanism and responses to
    different compromise scenarios.
  \item Provisions against blackmailing / kidnapping scenarios.
  \pause
  \item Formal model and security properties, including income transparency.
  \pause
  \item Usable, practical implementation (GNU Taler) with good performance.
  \item Seamless and native integration into Web platform / architecture.
\end{itemize}

\end{frame}

%----------------------------

\begin{frame}
\frametitle{Contributions II: Register-based payments}

Byzantine \emph{Set-Union} Consensus
\begin{itemize}
  \item Agreement on an exact (super-)set of elements contributed by participants,
    tolerates actively malicious parties.
  \item Asymptotically faster than state of the art.
  \item Approach can be transfered to new/different consensus protocols.
  \item Validated by practical implementation.
\end{itemize}

\end{frame}

%----------------------------

\section{Income-transparent offline E-cash}

\subsection{Design}


%----------------------------

\begin{frame}
\frametitle{Technical foundation: E-cash}
  \begin{itemize}
    \item First invented / discovered by David Chaum in the 1980s 
    % focused on offline
    \item Huge body of research that builds on e-cash
    \item Foundation:  Blind signatures
    \begin{itemize}
      \item Signer signs a message, but doesn't see the message's contents.
      \item (Unblinded) signature can't be linked to siging request.
      \item First construction:  RSA blind signatures
    \end{itemize}
  \end{itemize}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Taler Overview}
\begin{center}
\begin{tikzpicture}
 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
 \node (origin) at (0,0) {};
 \node (exchange) [def,above=of origin,draw]{Exchange};
 \node (customer) [def, draw, below left=of origin] {Customer};
 \node (merchant) [def, draw, below right=of origin] {Merchant};
 \node (auditor) [def, draw, above right=of origin]{Auditor};

 \tikzstyle{C} = [color=black, line width=1pt]

 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};

\end{tikzpicture}
\end{center}
\end{frame}


%----------------------------

\begin{frame}
\Huge{\centerline{Implementation Demo}}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{What is happening under the hood?}
  Setup / Reserve Creation
  \begin{enumerate}
    \item Customer has list of trusted exchange / auditor (= exchange CA) public keys
    \item Customer downloads latest key material (response signing / denominations) and wire information from exchange
    \item Customer creates reserve key pair (ephemeral)
    \item Customer sends transaction with reserve public key in payment instructions to the exchange
  \end{enumerate}
\end{frame}

\begin{frame}
\frametitle{What is happening under the hood?}
  Withdrawal
  \begin{enumerate}
    \item Customer creates coin key pair (public key is coin identity, private key used to authorize operations with coin)
    \item Customer blinds coin public key, sends withdraw request (signed with reserve pub) to exchange
    \item Exchange signs blinded coin
    \item Customer unblinds the signature
  \end{enumerate}
\end{frame}

\begin{frame}
\frametitle{What is happening under the hood?}
  Spending
  \begin{enumerate}
    \item Merchant sends signed \emph{contract terms} to customer
    \item Customer signs contract terms with the private key(s) of the coins used to pay.
      In each signature, the fraction of the coin spent is specified.
    \item Merchant receives these signatures in \emph{deposit permissions},
      with also include the exchange's signatures on the coins and a hash of the contract terms
    \item Merchant sends deposit permissions to the exchange
    \item Exchange marks coins as (partially) spent
    \item Exchange aggregates deposit permissions for some time
    \item Exchange sends payment (e.g. bank money) to merchant
  \end{enumerate}
\end{frame}

\begin{frame}
\frametitle{What is happening under the hood?}
  Getting anonymous change
  \begin{enumerate}
    \item Customer obtains anonymous coins as change for partially spent coins
    \item More on details later ...
  \end{enumerate}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{E-Cash features and trade-offs}
  Some selected aspects (more in thesis)
  \begin{enumerate}[<+- | alert@+>]
    \item Online/Offline \uncover<+->{$\Rightarrow$ Online}
      \begin{itemize}
        \item Offline = After-the-fact double spending detection
        \item Hard to enforce
        \item Easy to do accidentally (failures / backups)
      \end{itemize}
    \item Change/Divisibility \uncover<+->{$\Rightarrow$ Multiple denominations, partial spending, change protocol}
      \begin{itemize}
        \item Real divisibility nice in theory.
        \item In practice:  complex, trusted setup, multiple withdraw ``sizes''
          needed anyway
        \item Fixed denominations shown to be efficient in spending simulation
      \end{itemize}
    \item Transferability \uncover<+->{$\Rightarrow$ No!}
      \begin{itemize}
        \item Anti-feature, enables black markets / tax evasion!
        \item Taler provides \emph{income transparency}, roughly the \emph{opposite}
      \end{itemize}
    \item Atomic Swaps / Fair Exchange \uncover<+->{$\Rightarrow$ Supported, coin serial no. is public key}
  \end{enumerate}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{What is new/different in GNU Taler}
  \begin{itemize}
    \item Existing work: surprisingly little focus on practical use.
      \begin{itemize}
        \item What do customers do \textbf{before} the blind signature protocol?
        \item How do customers agree to specific contract terms for a transaction?
        \item How are payments with multiple coins handled?
        \item How are refunds handled?
        \item What happens after data loss / aborts / restore from backup?
      \end{itemize}
    \item Separating knowledge of coin from ownership (c.f. endorsed e-cash)
    \item Income Transparency (to help detect tax evasion)
    \item Auditor
      \begin{itemize}
        \item Technically Obvious, but makes you think about what goes wrong,
          and \emph{what happens then}.
      \end{itemize}
    \item Payback protocol to respond to compromised denomination keys, without breaking
      anonymity.
    \item Measures against ``perfect crime'' with e-cash
  \end{itemize}
\end{frame}

%----------------------------

\begin{frame}{New Idea: Refresh Protocol}
A coin that is e.g.
\begin{itemize}
  \item partially spent, or
  \item revealed in aborted transaction
  \item restored from offline backup
\end{itemize}
is \emph{dirty}, and can break anonymity.

\pause
\vfill

Strawman idea:  Spend coin with exchange, obtain fresh coin
via blind signing.

$\Rightarrow$ Can be abused:  Merchant provides (blinded) fresh coin to customer

$\Rightarrow$ Naive refresh protocol enables tax evasion

\end{frame}

\begin{frame}{Refresh Protocol}
  Insight:  Owner of the old coin should be able to derive
  private key of new coin (link protocol).

  $\Rightarrow$ Makes untaxed ``transactions'' unreliable.

  $\Rightarrow$ Even if illicit ``transaction'' receiver spends immediately,
  only one hop is hidden.

  \vfill
  \pause

  Relax requirement to make implementation easy:

  $\Rightarrow$ Exchange provides data to help derive new coin

  $\Rightarrow$ Make it probabilistic:  In $1/3$ of attempts, invisible ``transaction works'',
  in $2/3$ of attempts, the coin is seized by the exchange.

  $\Rightarrow$ Invisible transaction attempts are not economically infeasable anymore.

\end{frame}

%----------------------------

\begin{frame}{Taxability}
  We say Taler is taxable because:
  \begin{itemize}
  \item Merchant's income is visible from deposits.
  \item Hash of contract terms is part of deposit data.
  \item State can trace income and enforce taxation.
  \end{itemize}\pause
  Limitations:
  \begin{itemize}
  \item withdraw loophole
  \item {\em sharing} coins among family and friends
  \end{itemize}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Post-compromise Security}
  Auditor continuously monitors
  \begin{itemize}
    \item exchange's database
    \item exchange's bank transactions
    \item merchant's deposit (probabilistic selection)
  \end{itemize}
  
  \vfill

  Compromise Scenarios (simplified):
  \begin{itemize}
    \item Exchage's denomination compromised $\Rightarrow$ denomination revoked,
      customers use emergency payback protocol do recover funds
    \item Exchage's signing key compromised $\Rightarrow$ signing key revoked,
      merchants compensated proportional to correct participation in deposit auditing
  \end{itemize}
  (HSMs can make these less likely!)
\end{frame}


\begin{frame}
\frametitle{Emergency Payback Protocol}
  A denomiation $D$ with coin value $v$ that issued $n$ legitimate coins is revoked.
  \begin{itemize}
    \item Freshly withdrawn coins are returned to source reserve (customer shows withdraw transcript)
    \item Partially spent coins can be refreshed into non-revoked denomination.
    \item Refreshes on revoked coins can be ``reversed'' to obtain funds again.
  \end{itemize}

  \vfill

  \vfill

  Revocation triggered after seeing $n+1$ pairwise different $D$-coins, payback for at most $n$ coins.
  
  $\Rightarrow$ Financial loss of the exchange limited to $2nv$.

  $\Rightarrow$ Anonymity of customer preserved (one exception can be fixed with perf tradeoff)
\end{frame}

%----------------------------

\begin{frame}{``Perfect Crime'' Countermeasures}
  \begin{itemize}
    \item Scenario:  Kidnapper wants anonymous E-Cash as ransom.
    \item Existing tracing approaches can be circumvented by just requesting plain e-cash,
      threat to user privacy.
  \end{itemize}

  \begin{block}{Taler's Perfect Crime Response}
    \begin{itemize}
      \item Honest user's coins must only be used in either refreshing or spending (w.l.o.g.)
      \item Ransom coins are withdrawn from some reserve(s), given to the attacker
      \item Denominations given to the attacker are revoked, reserves used to withdraw ransom are blocked.
      \item Normal customers use recovery protocol.
    \end{itemize}
  \end{block}
\end{frame}

%----------------------------

\subsection{Overview of Protocol}

%----------------------------

\begin{frame}{Taler Cryptography}
  We use a few ancient constructions:
  \begin{itemize}
  \item Cryptographic hash function (1989)
  \item Blind signature (1983)
  \item Schnorr signature (1989)
  \item Diffie-Hellman key exchange (1976)
  \item Cut-and-choose zero-knowledge proof (1985)
  \end{itemize}
  But of course we use modern instantiations.
\end{frame}

%\begin{frame}{Refresh Protocol (Simplified Sketch)}
%  Cut-and-choose to ensure linkability!
%  \begin{itemize}
%    \item Customer has old coin with key $(c_0, C_0)$
%    \item Customer generates $\kappa$ (usually $\kappa=3$) transfer key pairs $(t_i, T_i)$,
%    \item Customer derives $\kappa$ candidates (coin key pair,
%      blinding factor, signing request) from \textbf{ECDH between old coin and
%      transfer key}
%    \item Customer sends transfer public keys and commitments to the $\kappa$ candidates to the exchange
%    \item Exchange marks $C_0$ as spent and asks customer to reveal all candidates except $\gamma$-th
%    \item Customer reveals all candidates except the $\gamma$-th, reveals blinded coin for $\gamma$-th candidate
%    \item Exchange checks if commitments match revealed values (knowing the
%      transfer secret key), i.e. if the new coin's private key could be derived
%      knowing $T_i$ and $c_0$ (as $\textrm{ECDH}(t_i, C_0) = \textrm{ECDH}(c_0, T_i)$).
%    \item If a commitment does not match, refreshing denied, no new attempts allowed.
%    \item If commitments were correct, exchange signs blinded coin
%  \end{itemize}
%\end{frame}

\begin{frame}{Refresh Protocol (Simplified Sketch)}
  Expected result:
  \begin{itemize}
    \item Every successful refresh results in a \emph{transfer public key}
    \item Given the old coin's public key, the exchanges provides the transfer public key and blinded
      signature on new coin.
    \item Diffie-Hellman exchange between transfer public key and coin secret key gives seed
      for deriving the new coin's blinding factor and secret key
    \item \emph{Catch:} How can the exchange know that the transfer public key is correct?
  \end{itemize}
\end{frame}


\begin{frame}{Refresh Protocol (Simplified Sketch)}
  Answer:  Cut-and-choose
  \begin{itemize}
    \item Naive refresh is run with multiple ($\kappa$, typically 3) instances in parallel, thus there are $\kappa$ candidates
      for the new coin
    \item At most one instance will result in a signature
    \item At the beginning, customer makes a hiding+binding commitment to private values (priv. key / blinding factor)
    \item For $\kappa - 1$ other instances, private values must be revealed, checked by exchange and thrown away
    \item Diffie-Hellman exchange ($DH(a, B) = DH(b, A)$) allows us to check that commitment is correct
      by revealing transfer key, but \emph{not} the old coin's secret key.
    \item With probability $1/\kappa$, adversary can sneak in wrong transfer public key.
    \item If cheating is attempted, with probability $1-1/\kappa$ the coin will be ``seized'' by the exchange.
    \item $\Rightarrow$ Cheating not profitable
  \end{itemize}
\end{frame}

%----------------------------

%----------------------------

\begin{frame}
\frametitle{Real-World Deployment: Architecture}
\includegraphics[width=\textwidth]{pics/taler-arch-full.pdf}
\end{frame}

\begin{frame}
\frametitle{Implementation Overview}
  \begin{itemize}
    \item Implemented in multiple components:
    \begin{itemize}
      \item Exchange
      \item Auditor
      \item Merchant backend
      \item Merchant frontends (donations, blog, survey, backoffice, codeless payments)
      \item Browser Wallet (WebExtension)
    \end{itemize}
    \item Communication through HTTP/JSON protocol.
    \item Plugin architecture for different wire methods
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Entities / PKI}
\includegraphics[width=\textwidth]{pics/taler-diagram-signatures.png}
\end{frame}

\begin{frame}
\frametitle{Exchange Architecture}
\includegraphics[width=\textwidth]{pics/taler-diagram-exchange.png}
\end{frame}

\begin{frame}
\frametitle{Auditor Architecture}
\includegraphics[width=\textwidth]{pics/taler-diagram-keyup.png}
\end{frame}

\begin{frame}
\frametitle{Merchant Architecture}
\includegraphics[width=\textwidth]{pics/taler-diagram-merchant.png}
\end{frame}

\begin{frame}
\frametitle{Wallet Architecture}
\includegraphics[width=\textwidth]{pics/taler-diagram-wallet.png}
\end{frame}

%----------------------------

\begin{frame}{Web Integration}
  payto:// URIs
  \begin{itemize}
    \item Well known: \url{mail:dold@taler.net?subject=hello} describes a mail address with
      some additional info for sending the mail
    \item Payto does the same for bank accounts / bitcoin wallets / ... ($=$ payment targets)
    \item Used by Taler internally, as well as externally to prompt sending money to the exchange
    \item Currently trying to find the right WG / AD at the IETF to make it a standard
  \end{itemize}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Alternatives?}
W3C Web Payments?  No, only concerned with showing payment request in browser UI.

\vfill

Proprietary Systems?

\vfill

Blockchain?

\end{frame}

%----------------------------

\begin{frame}
\frametitle{Experiments / Performance}
\end{frame}

%----------------------------

\subsection{Security}

%----------------------------

\begin{frame}
\frametitle{Provable Security}
How do you know that your protocols are ``secure''?
\end{frame}

%---------------------------

\begin{frame}
\frametitle{Security Properties}
Other systems don't focus that much on aborts.  Something goes wrong, then what do you do?

What if you restore from backup?

Most work focuses on offline e-cash.

No considerations of practical compromise.
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Security Properties (cont'd)}
  \begin{block}{Anonymity}
    Adversary can't correlate withdraw/refresh operation
    with coin used in spend operation.
  \end{block}

  \pause

  \begin{block}{Unforgeability}
    Adversary can't obtain coins of a higher value
    than they legitimately withdraw.
  \end{block}
\end{frame}


%----------------------------

\begin{frame}
\frametitle{Security Properties (cont'd)}
  \begin{block}{Conservation}
    For honest customers, value of coins withdrawn cannot exceed value in their
    wallet plus value spent on transactions known to that customer.
  \end{block}

  \pause

  \begin{block}{Strong Income Transparency}
    Adversary can't obtain \textbf{exclusive} control of a coin,
    without the exchange having a record (withdraw/spend) of the coin.
  \end{block}

  \pause
  Strong Income Transparency is not satisfied by Taler!
  \pause

  \begin{block}{(Weak) Income Transparency}
    Adversary can't obtain \textbf{exclusive} control of a coin,
    without the exchange having a record (withdraw/spend) of the coin.

    FIXME!!!
  \end{block}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Formal Model}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Provable Security:  Limitations}
\end{frame}

%----------------------------

\section{Byzantine Set Consensus}

\begin{frame}
  \frametitle{Byzantine Consensus}
\end{frame}

\begin{frame}
  \frametitle{Byzantine Consensus Over (Super-)Sets}
\end{frame}

\begin{frame}
  \frametitle{BSC and Payments?}
\end{frame}

%----------------------------

\begin{frame}
  \frametitle{But what about Blockchain}
  What is Blockchain?  (Consensus + Tamper-Proof DB)?
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Conclusion / Summary}
\end{frame}

%----------------------------

\begin{frame}
\frametitle{Future Work}
  \begin{itemize}
    \item Mechanize security properties (e.g. ProVerif / CryptoVerif / F-star)
    \item Applications:  Network incentives, anti-spam
    \item Smart(er) contracts / auctions
    \item Backup + Sync
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Funded/Ongoing Work}
  \begin{itemize}
    \item Me:  Work on Taler PoS terminal for the next 6 month, supported
      by German government grant (Prototype Fund)
    \item Taler Systems:  Employs 1 engineer (Marcello Stanisci), looking for funding!
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Publications}
\vfill
Dold, F. and Grothoff, C., 2017. Byzantine set-union consensus using efficient
set reconciliation. EURASIP Journal on Information Security, 2017(1), p.14.
\vfill
Burdges, J., Dold, F., Grothoff, C. and Stanisci, M., 2016, December. Enabling Secure Web Payments with GNU Taler. In International Conference on Security, Privacy, and Applied Cryptography Engineering (pp. 251-270). Springer, Cham.
\vfill
Dold, Florian, and Christian Grothoff. "GNU Taler: Ethical online payments for the internet age." ERCIM NEWS 106 (2016): 12-13.
\vfill
Burdges, J., Dold, F., Grothoff, C. and Stanisci, M., 2016, June. Taler: Usable, privacy-preserving payments for the Web. In HotPETS 2016-Workshop on Hot Topics in Privacy Enhancing Technologies.
\vfill
\end{frame}

%------------------------------------------------

%\begin{frame}
%\frametitle{References}
%\footnotesize{
%\begin{thebibliography}{99} % Beamer does not support BibTeX so references must be inserted manually as below
%\bibitem[Smith, 2012]{p1} John Smith (2012)
%\newblock Title of the publication
%\newblock \emph{Journal Name} 12(3), 45 -- 678.
%\end{thebibliography}
%}
%\end{frame}

%------------------------------------------------

\begin{frame}
\Huge{\centerline{The End}}
\end{frame}

\begin{frame}
\frametitle{Backup Slides: Implementation Screenshots}
\end{frame}

\begin{frame}
\frametitle{Backup Slides: Cryptographic protocol details}
\end{frame}

\begin{frame}
\frametitle{Backup Slides: Oracles and Games}
\end{frame}

%----------------------------------------------------------------------------------------

\end{document}