2026-hny.tex (17680B)
1 \documentclass[aspectratio=169,t]{beamer} 2 \input taler-macros 3 4 \newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET} 5 \newcommand{\SUB}{The GNU Taler Payment System} 6 \newcommand{\AUTHOR}{Christian Grothoff} 7 \newcommand{\SPEAKER}{Christian Grothoff} 8 \newcommand{\INST}{The GNU Project} 9 \newcommand{\DATE}{February 2026} 10 11 % Do not edit this part 12 \title{\TITLE} 13 \subtitle{\SUB} 14 \date{\DATE} 15 \author[\SPEAKER]{\AUTHOR} 16 \institute{\INST} 17 18 19 \usepackage{amsmath} 20 \usepackage{multimedia} 21 \usepackage[utf8]{inputenc} 22 \usepackage{framed,color,ragged2e} 23 \usepackage[absolute,overlay]{textpos} 24 \definecolor{shadecolor}{rgb}{0.8,0.8,0.8} 25 \usetheme{boxes} 26 \setbeamertemplate{navigation symbols}{} 27 \usepackage{xcolor} 28 \usepackage[normalem]{ulem} 29 \usepackage{listings} 30 \usepackage{adjustbox} 31 \usepackage{array} 32 \usepackage{bbding} 33 \usepackage{relsize} 34 \usepackage{graphicx} 35 \usepackage{tikz,eurosym,calc} 36 \usetikzlibrary{tikzmark} 37 \usetikzlibrary{shapes,arrows,arrows.meta} 38 \usetikzlibrary{positioning,fit,patterns} 39 \usetikzlibrary{calc} 40 \usepackage{multicol} 41 \usepackage{pgf-umlsd} 42 \usepackage{relsize} 43 44 \usepackage{booktabs} 45 \usepackage{makecell} 46 \usepackage{arydshln} 47 48 49 50 % "The GNU Taler Payment System", including 51 % an introduction to our objectives, 52 % background on the technology, 53 % demonstration of the system, 54 % social implications and open issues. 55 56 % CSS 57 \lstdefinelanguage{CSS}{ 58 basicstyle=\ttfamily\scriptsize, 59 keywords={color,background-image:,margin,padding,font,weight,display,position,top,left,right,bottom,list,style,border,size,white,space,min,width, transition:, transform:, transition-property, transition-duration, transition-timing-function}, 60 sensitive=true, 61 morecomment=[l]{//}, 62 morecomment=[s]{/*}{*/}, 63 morestring=[b]', 64 morestring=[b]", 65 alsoletter={:}, 66 alsodigit={-} 67 } 68 69 % JavaScript 70 \lstdefinelanguage{JavaScript}{ 71 basicstyle=\ttfamily\scriptsize, 72 morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break}, 73 morecomment=[s]{/*}{*/}, 74 morecomment=[l]//, 75 morestring=[b]", 76 morestring=[b]' 77 } 78 79 \lstdefinelanguage{HTML5}{ 80 basicstyle=\ttfamily\scriptsize, 81 language=html, 82 sensitive=true, 83 alsoletter={<>=-}, 84 morecomment=[s]{<!-}{-->}, 85 tag=[s], 86 otherkeywords={ 87 % General 88 >, 89 % Standard tags 90 <!DOCTYPE, 91 </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />, 92 % body 93 </body, <body, 94 % Divs 95 </div, <div, </div>, 96 % Paragraphs 97 </p, <p, </p>, 98 % scripts 99 </script, <script, 100 % More tags... 101 <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image> 102 }, 103 ndkeywords={ 104 % General 105 =, 106 % HTML attributes 107 charset=, src=, id=, width=, height=, style=, type=, rel=, href=, 108 % SVG attributes 109 fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=, 110 % CSS properties 111 margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:, 112 % CSS3 properties 113 transform:, -moz-transform:, -webkit-transform:, 114 animation:, -webkit-animation:, 115 transition:, transition-duration:, transition-property:, transition-timing-function:, 116 } 117 } 118 119 \lstdefinelanguage{JavaScript}{ 120 basicstyle=\ttfamily\scriptsize, 121 keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for}, 122 keywordstyle=\color{blue}\bfseries, 123 ndkeywords={class, export, boolean, throw, implements, import, this}, 124 ndkeywordstyle=\color{darkgray}\bfseries, 125 identifierstyle=\color{black}, 126 sensitive=false, 127 comment=[l]{//}, 128 morecomment=[s]{/*}{*/}, 129 commentstyle=\color{purple}\ttfamily, 130 stringstyle=\color{red}\ttfamily, 131 morestring=[b]', 132 morestring=[b]" 133 } 134 135 \setbeamersize{description width=1em} 136 137 \definecolor{blue}{rgb}{0,0,0.7} 138 \newcommand{\orange}[1]{{\color{orange}#1}} 139 \newcommand{\blue}[1]{{\color{blue}#1}} 140 \newcommand{\red}[1]{{\color{red}#1}} 141 \newcommand{\Guardian}{\mathcal{G}} 142 \newcommand{\Child}{\mathcal{C}} 143 \newcommand{\Customer}{\mathcal{C}} 144 \newcommand{\Merchant}{\mathcal{M}} 145 \newcommand{\Exchange}{\mathcal{E}} 146 147 \newcommand{\Commit}{\mathsf{Commit}} 148 \newcommand{\Attest}{\mathsf{Attest}} 149 \newcommand{\Verify}{\mathsf{Verify}} 150 \newcommand{\Derive}{\mathsf{Derive}} 151 \newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}} 152 \newcommand{\Compare}{\mathsf{Compare}} 153 \newcommand{\AgeVer}{\mathsf{AgeVer}} 154 155 \newcommand{\HashF}{\mathsf{H}} 156 \newcommand{\Hash}{\mathsf{H}} 157 \newcommand{\Block}{\mathbb{B}} 158 \newcommand{\Pub}{\mathsf{Pub}} 159 \newcommand{\Sign}{\mathsf{Sig}} 160 \newcommand{\Ver}{\mathsf{Ver}} 161 \newcommand{\Encoding}{\mathsf{Encoding}} 162 \newcommand{\ECDSA}{\mathsf{ECDSA}} 163 \newcommand{\Null}{\mathcal{O}} 164 \newcommand{\EC}{\mathrm{ec}} 165 \newcommand{\Curve}{\mathsf{Curve25519}} 166 \newcommand{\SHA}{\mathsf{SHA256}} 167 \newcommand{\SHAF}{\mathsf{SHA252}} 168 \newcommand{\FDH}{\mathsf{FDH}} 169 170 \newcommand{\negl}{\epsilon} 171 172 \newcommand{\rand}{\mathsf{rand}} 173 \newcommand{\age}{\mathsf{a}} 174 \newcommand{\Age}{\mathsf{M}} 175 \newcommand{\bage}{\mathsf{b}} 176 \newcommand{\minage}{\mathsf{m}} 177 \newcommand{\attest}{\mathsf{T}} 178 \newcommand{\commitment}{\mathsf{Q}} 179 \newcommand{\pruf}{\mathsf{P}} 180 \newcommand{\Vcommitment}{\vec{\mathsf{Q}}} 181 \newcommand{\Vpruf}{\vec{\mathsf{P}}} 182 \newcommand{\blinding}{\beta} 183 184 \newcommand{\ZN}{\mathbb{Z}_N} 185 \newcommand{\Z}{\mathbb{Z}} 186 \newcommand{\N}{\mathbb{N}} 187 \newcommand{\A}{\mathbb{A}} 188 \newcommand{\E}{\mathbb{E}} 189 \newcommand{\F}{\mathbb{F}} 190 \newcommand{\seck}{\mathsf{s}} 191 \newcommand{\pubk}{\mathsf{P}} 192 \renewcommand{\H}{\mathbb{H}} 193 \newcommand{\K}{\mathbb{K}} 194 \newcommand{\Proofs}{\mathbb{P}} 195 \newcommand{\Commitments}{\mathbb{O}} 196 \newcommand{\Attests}{\mathbb{T}} 197 \newcommand{\Blindings}{\mathbb{B}} 198 \newcommand{\Nil}{\perp} 199 200 \newcommand{\p}{\mathsf{p}} 201 \newcommand{\com}{\mathsf{com}} 202 \newcommand{\prf}{\mathsf{prf}} 203 204 \newcommand{\Adv}{\mathcal{A}} 205 \newcommand{\PPT}{\mathfrak{A}} 206 \newcommand{\Probability}{\mathrm{Pr}} 207 \newcommand{\Algorithm}{f} 208 \renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}} 209 210 \DeclareMathOperator{\Image}{Im} 211 \DeclareMathOperator{\Mod}{mod} 212 213 \newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}} 214 \newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}} 215 \newcommand{\FDHg}[1]{[#1]_g\,} 216 \newcommand{\logg}{{\breve{g}}} 217 218 219 \newcommand{\drawfrom}{\xleftarrow{\$}} 220 \newcommand\Exists{% 221 \mathop{\lower0.75ex\hbox{\ensuremath{% 222 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}% 223 \limits} 224 225 \newcommand\Forall{% 226 \mathop{\lower0.75ex\hbox{\ensuremath{% 227 \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}% 228 \limits} 229 230 231 \begin{document} 232 233 \begin{frame}[plain] 234 \maketitle 235 \end{frame} 236 237 \begin{frame}{Agenda} 238 \tableofcontents 239 \end{frame} 240 241 \section{Motivation \& Background} 242 243 244 \begin{frame}{A Social Problem} 245 \begin{minipage}{12cm} 246 ``I think one of the big things that we need to do, is we need 247 to get away from true-name payments on the Internet. The credit 248 card payment system is one of the worst things that happened for the 249 user, in terms of being able to divorce their access from their 250 identity.'' \hfill --Edward Snowden, IETF 93 (2015) 251 \end{minipage} 252 253 \end{frame} 254 255 256 \begin{frame}{Banks have Problems, too!} 257 258 3D secure (``verified by visa'') is a nightmare: 259 260 \begin{minipage}{5cm} 261 \begin{itemize} 262 \item Complicated process 263 \item Shifts liability to consumer 264 \item Significant latency 265 \item Can refuse valid requests 266 \item Legal vendors excluded 267 \item No privacy for buyers 268 \end{itemize} 269 \end{minipage} 270 \begin{minipage}{5cm} 271 \includegraphics[width=\textwidth]{illustrations/cc3ds.pdf} 272 \end{minipage} 273 \vfill 274 Online credit card payments will be replaced, but with what? 275 \end{frame} 276 277 278 \begin{frame}{The Bank's Problem} 279 \begin{itemize} 280 \item Global tech companies push oligopolies 281 \item Privacy and federated finance are at risk 282 % \item 30\% fees are conceivable 283 \item Economic sovereignty is in danger 284 \end{itemize} 285 \begin{textblock*}{4cm}(11.5cm,5.2cm) % {block width} (coords) 286 {\includegraphics[width=\textwidth]{../investors/competitor-logos/amazon.png}} 287 \end{textblock*} 288 \begin{textblock*}{2cm}(11cm,3cm) % {block width} (coords) 289 {\includegraphics[width=\textwidth]{../investors/competitor-logos/alipay.jpeg}} 290 \end{textblock*} 291 \begin{textblock*}{2cm}(11cm,7cm) % {block width} (coords) 292 {\includegraphics[width=\textwidth]{../investors/competitor-logos/paypal.jpeg}} 293 \end{textblock*} 294 \begin{textblock*}{2cm}(3cm,9cm) % {block width} (coords) 295 {\includegraphics[width=\textwidth]{../investors/competitor-logos/applepay.jpeg}} 296 \end{textblock*} 297 \begin{textblock*}{2cm}(7cm,7cm) % {block width} (coords) 298 {\includegraphics[width=\textwidth]{../investors/competitor-logos/samsungpay.jpeg}} 299 \end{textblock*} 300 \begin{textblock*}{1cm}(9.5cm,6.3cm) % {block width} (coords) 301 {\includegraphics[width=\textwidth]{../investors/competitor-logos/android_pay.png}} 302 \end{textblock*} 303 \vfill 304 \end{frame} 305 306 307 \begin{frame}{Central Bank Digital Currency?} 308 Speech by Augustin Carstens, Bank of International Settlements (October 2020) on the difference between Central Bank Digital Currencies and cash. 309 \begin{center} 310 \movie[height = 0.5\paperheight, poster, showcontrols]{Central Bank Digital Currency vs. Cash} 311 {bis-cbdc.mp4} 312 313 {\tiny 314 \url{https://www.youtube.com/watch?v=R_E4Uu7ycqE} (10'2020)} 315 \end{center} 316 \end{frame} 317 318 319 320 \section{GNU Taler: Introduction} 321 322 \begin{frame} 323 \vfill 324 \begin{center} 325 {\bf GNU Taler: Introduction} 326 \end{center} 327 \vfill 328 \end{frame} 329 330 331 \begin{frame}{GNU Taler~\cite{taler2016space,DBLP:phd/hal/Dold19,cbdc2021chaum}} 332 \vfill 333 \begin{center} 334 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 335 \end{center} 336 \vfill 337 \begin{center} 338 \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf} 339 \end{center} 340 \vfill 341 \begin{center} 342 Privacy-Preserving, Practical, Taxable, Free Software, Efficient 343 \end{center} 344 \vfill 345 \vfill 346 \ % 347 \end{frame} 348 349 350 \begin{frame}{What is Taler?} 351 \framesubtitle{\url{https://taler.net/en/features.html}} \noindent 352 Taler is 353 \vfill 354 \begin{itemize} 355 \item a Free/Libre software \emph{payment system} infrastructure project 356 \item ... with a surrounding software ecosystem 357 \item ... and a company (Taler Systems S.A.) and community that wants to deploy it 358 as widely as possible. 359 \end{itemize} 360 \vfill 361 \noindent 362 However, Taler is 363 \begin{itemize} 364 \item \emph{not} a currency or speculative asset 365 \item \emph{not} a long-term store of value 366 \item \emph{not} a network or instance of a system 367 \item \emph{not} based on proof-of-work or proof-of-stake 368 \end{itemize} 369 \end{frame} 370 371 372 \begin{frame}{Design principles} 373 \framesubtitle{https://taler.net/en/principles.html} 374 GNU Taler must ... 375 \begin{enumerate} 376 \item {... be implemented as {\bf free software}.} 377 \item {... protect the {\bf privacy of buyers}.} 378 \item {... enable the state to {\bf tax income} and crack down on 379 illegal business activities.} 380 \item {... prevent payment fraud.} 381 \item {... only {\bf disclose the minimal amount of information 382 necessary}.} 383 \item {... be usable.} 384 \item {... be efficient.} 385 \item {... avoid single points of failure.} 386 \item {... foster {\bf competition}.} 387 \end{enumerate} 388 \end{frame} 389 390 391 \begin{frame} 392 \frametitle{Taler Overview} 393 \begin{center} 394 \begin{tikzpicture} 395 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 396 \node (origin) at (0,0) {}; 397 \node (exchange) [def,above=of origin,draw]{Exchange}; 398 \node (customer) [def, draw, below left=of origin] {Customer}; 399 \node (merchant) [def, draw, below right=of origin] {Merchant}; 400 \node (auditor) [def, draw, above right=of origin]{Auditor}; 401 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 402 403 \tikzstyle{C} = [color=black, line width=1pt] 404 405 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 406 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 407 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 408 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 409 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 410 411 \end{tikzpicture} 412 \end{center} 413 \end{frame} 414 415 416 417 \begin{frame} 418 \frametitle{Architecture of Taler} 419 \begin{center} 420 \includegraphics[width=0.8\textwidth]{operations.png} 421 \end{center} 422 \end{frame} 423 424 425 \begin{frame}{Usability of Taler} 426 \vfill 427 \begin{center} 428 \url{https://demo.taler.net/} 429 \end{center} 430 \begin{enumerate} 431 \item Install browser extension. 432 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 433 \item Visit the {\tt shop.demo.taler.net} to spend coins. 434 \end{enumerate} 435 \vfill 436 \end{frame} 437 438 439 440 \begin{frame} 441 \vfill 442 \begin{center} 443 {\bf Protocol Basics} 444 \end{center} 445 \vfill 446 \end{frame} 447 448 449 \begin{frame}[plain] 450 \begin{tikzpicture}[remember picture,overlay] 451 \node[anchor=south west, inner sep=0pt] at (current page.south west) {% 452 \movie[height = \paperheight, width = \paperwidth, poster, showcontrols] {BFH Bachelor's thesis video}{cs-movie.mp4}% 453 }; 454 \end{tikzpicture} 455 \end{frame} 456 457 458 \begin{frame}{How does it work?} 459 We use a few ancient constructions: 460 \begin{itemize} 461 \item Cryptographic hash function (1989) 462 \item Blind signature (1983) 463 \item Schnorr signature (1989) 464 \item Diffie-Hellman key exchange (1976) or Unique signatures (1977) or VRF (1999) % 1977: RSA 465 \item Cut-and-choose zero-knowledge proof (1985) 466 \end{itemize} 467 But of course we use modern instantiations. 468 \end{frame} 469 470 471 \include{offline.tex} 472 473 \section{Future Work \& Conclusion} 474 475 \begin{frame} 476 \vfill 477 \begin{center} 478 {\bf Future Work \& Conclusion} 479 \end{center} 480 \vfill 481 \end{frame} 482 483 484 \begin{frame}{Taler: Project Status} 485 \framesubtitle{\url{https://taler-ops.ch/}} 486 \begin{center} 487 {\bf Taler Operations is live Swiss-wide!} 488 489 \vfill 490 491 \includegraphics[width=0.3\textwidth]{tops-qr.png} 492 493 \vfill 494 \end{center} 495 \end{frame} 496 497 498 \begin{frame}{Competitor comparison} 499 \begin{center} \small 500 \begin{tabular}{l||c|c|c|c|c} 501 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 502 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 503 Offline & +++ & $-$$-$ & $-$$-$ & + & $+$$+$ \\ \hline 504 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 505 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 506 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 507 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 508 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 509 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 510 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 511 Libre & $-$ & +++ & +++ & $-$ $-$ $-$& +++ \\ 512 \end{tabular} 513 \end{center} 514 \end{frame} 515 516 517 \begin{frame}{How to support?} 518 \begin{description} 519 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}} 520 \item[Discuss:] {\small \url{https://ich.taler.net/}} 521 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git-www.taler.net/} 522 \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler} 523 \item[Translate:] \url{translation-volunteer@taler.net} 524 \item[Integrate:] \url{https://docs.taler.net/} 525 \item[Donate:] \url{https://gnunet.org/ev} 526 \item[Partner:] \url{https://taler-systems.com/} 527 \end{description} 528 \end{frame} 529 530 531 \begin{frame}{Conclusion} 532 \begin{center} 533 {\bf What can we do?} 534 \end{center} 535 \vfill 536 \begin{itemize} 537 \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and} 538 \item{Engage in arms race with deliberately unregulatable blockchains} 539 % \item{Enjoy the ``benefits'' of cash \\ 540 % \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill} 541 \end{itemize} 542 \vfill 543 \begin{center} 544 {\bf OR} 545 \end{center} 546 \vfill 547 \begin{itemize} 548 \item{Establish free software alternative balancing social goals!} 549 \end{itemize} 550 \vfill 551 \end{frame} 552 553 554 555 \section*{References} 556 \begin{frame}[allowframebreaks]{References} 557 \bibliographystyle{plain} 558 \bibliography{ref,extra,rfc,biblio-defqa} 559 \end{frame} 560 561 562 % This should be last... 563 \begin{frame}{Acknowledgments} 564 565 \begin{minipage}{0.45\textwidth} \ \\ 566 {\tiny Funded by the European Union (Project 101135475).} 567 568 \begin{center} 569 \includegraphics[width=0.5\textwidth]{../bandera.jpg} 570 \end{center} 571 \end{minipage} 572 \hfill 573 \begin{minipage}{0.45\textwidth} 574 {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).} 575 576 \begin{center} 577 \includegraphics[width=0.65\textwidth]{../sbfi.jpg} 578 \end{center} 579 \end{minipage} 580 581 \vfill 582 583 {\tiny 584 585 Views and opinions expressed are however those of the author(s) only 586 and do not necessarily reflect those of the European Union. Neither the 587 European Union nor the granting authority can be held responsible for 588 them. 589 590 } 591 \end{frame} 592 593 594 \end{document} 595 596 597 598 \begin{frame}{Future work} 599 \begin{itemize} 600 \item Performance improvements for RSA in FLOSS crypto libraries 601 \item Integrate with e-ID for easier \& cheaper KYC 602 \item Buy anonymous pre-paid debit cards on-demand with Taler wallet 603 \item Implement PQC across the stack (with cipher agility, where possible with additive security) 604 \end{itemize} 605 \end{frame}