2026-UHA-ENSISA.tex (33337B)
1 \documentclass[aspectratio=169,t]{beamer} 2 3 \input texinputs/taler-macros 4 5 \usepackage{tikz} 6 \usepackage{ragged2e} 7 \usepackage{graphicx} 8 \usetikzlibrary{positioning,fit,patterns} 9 10 % 11 % Presentation at "P15 Biel/Bienne le 30 avril 2026" 12 % Copyright (C) 2026 Emmanuel Benoist, 13 14 % This program is free software: you can redistribute it and/or modify 15 % it under the terms of the GNU General Public License as published by 16 % the Free Software Foundation, either version 3 of the License, or 17 % (at your option) any later version. 18 % 19 % This program is distributed in the hope that it will be useful, 20 % but WITHOUT ANY WARRANTY; without even the implied warranty of 21 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 % GNU General Public License for more details. 23 % 24 % You should have received a copy of the GNU General Public License 25 % along with this program. If not, see <http://www.gnu.org/licenses/>. 26 % 27 28 % *Especially* edit these... 29 % \setbeameroption{show notes on second screen=right} % Both 30 31 \newcommand{\SPEAKER}{Emmanuel Benoist} 32 \newcommand{\DATE}{} {} 33 34 \newcommand{\TITLE}{Presentation of GNU Taler} 35 \newcommand{\SUB}{26.05.26, ENSISA, Mulhouse} 36 \newcommand{\AUTHOR}{Emmanuel Benoist / Ch. Grothoff} 37 \newcommand{\INST}{https://www.taler.net} 38 39 % Do not edit this part 40 \title{\TITLE} 41 \subtitle{\SUB} 42 \date{\DATE} 43 \author[\SPEAKER]{\AUTHOR} 44 \institute{\INST} 45 46 \usepackage{amsmath} 47 \usepackage{multimedia} 48 \usepackage[percent]{overpic} 49 \usepackage{url} 50 \usepackage{pifont} 51 \usepackage[absolute,overlay]{textpos} 52 \usepackage{listings} 53 \usepackage{pgf-umlsd} 54 \usepackage{tikz, xcolor} 55 \usetikzlibrary{shapes,arrows,positioning} 56 \tikzset{ 57 %Define standard arrow tip 58 >=stealth', 59 %Define style for boxes 60 punkt/.style={ 61 rectangle, 62 rounded corners, 63 draw=black, very thick, 64 minimum width=3.5em, 65 minimum height=2em, 66 text centered}, 67 % Define arrow style 68 pull/.style={ 69 <->, 70 thick,draw=red, 71 shorten <=2pt, 72 shorten >=2pt,}, 73 % Define arrow style 74 pil/.style={ 75 ->, 76 thick, 77 shorten <=2pt, 78 shorten >=2pt,} 79 } 80 81 82 %\usepackage{tikz, xcolor} 83 %\usetikzlibrary{shapes,arrows} 84 85 86 \tikzstyle{decision} = [diamond, draw, text width=4.5em, 87 text badly centered, node distance=2cm, 88 inner sep=0pt] 89 \tikzstyle{block} = [rectangle, draw, text width=5em, 90 text centered, rounded corners, 91 minimum height=4em, node distance=3cm] 92 \tikzstyle{line} = [draw, -latex'] 93 \tikzstyle{lineeee} = [draw] 94 \tikzstyle{cloud} = [draw, ellipse, node distance=2.5cm, minimum height=2em] 95 \tikzstyle{walet} = [draw, rectangle, node distance=0.2cm, minimum height=2em] 96 \tikzstyle{reseau} = [node distance=0.2cm, minimum height=2em] 97 \tikzstyle{blank} = [node distance=1cm] 98 99 \usetikzlibrary{shapes,arrows} 100 \usetikzlibrary{positioning} 101 \usetikzlibrary{calc} 102 103 \usepackage[utf8]{inputenc} 104 \usepackage{adjustbox} 105 \usepackage{array} 106 \usepackage{bbding} 107 \usepackage{relsize} 108 \usepackage{graphicx} 109 \usepackage{tikz,eurosym,calc} 110 \usetikzlibrary{tikzmark} 111 \usetikzlibrary{shapes,arrows,arrows.meta} 112 \usetikzlibrary{positioning,fit,patterns} 113 \usetikzlibrary{calc} 114 \usepackage{multicol} 115 \usepackage{pgf-umlsd} 116 \usepackage{relsize} 117 \usepackage{booktabs} 118 \usepackage{makecell} 119 \usepackage{arydshln} 120 \usepackage{ulem} 121 \begin{document} 122 123 \begin{frame}[plain] 124 \maketitle 125 \end{frame} 126 127 \begin{frame}{Agenda} 128 \tableofcontents 129 \end{frame} 130 131 \section{GNU Taler: Introduction} 132 133 134 \begin{frame}{GNU Taler~\cite{taler2016space,DBLP:phd/hal/Dold19,cbdc2021chaum}} 135 \vfill 136 \begin{center} 137 {\huge {\bf Digital} cash, made \textbf{socially responsible}.} 138 \end{center} 139 \vfill 140 \begin{center} 141 \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf} 142 \end{center} 143 \vfill 144 \begin{center} 145 Privacy-Preserving, Practical, Taxable, Free Software, Efficient 146 \end{center} 147 \vfill 148 \vfill 149 \ % 150 \end{frame} 151 152 153 \begin{frame}{What is Taler?} 154 \framesubtitle{\url{https://taler.net/en/features.html}} \noindent 155 Taler is 156 \vfill 157 \begin{itemize} 158 \item a Free/Libre software \emph{payment system} infrastructure project 159 \item ... with a surrounding software ecosystem 160 \item ... and a company (Taler Systems S.A.) and community that wants to deploy it 161 as widely as possible. 162 \end{itemize} 163 \vfill 164 \noindent 165 However, Taler is 166 \begin{itemize} 167 \item \emph{not} a currency or speculative asset 168 \item \emph{not} a long-term store of value 169 \item \emph{not} a network or instance of a system 170 \item \emph{not} based on proof-of-work or proof-of-stake 171 \end{itemize} 172 \end{frame} 173 174 175 \begin{frame}{Design principles} 176 \framesubtitle{https://taler.net/en/principles.html} 177 GNU Taler must ... 178 \begin{enumerate} 179 \item {... be implemented as {\bf free software}.} 180 \item {... protect the {\bf privacy of buyers}.} 181 \item {... enable the state to {\bf tax income} and crack down on 182 illegal business activities.} 183 \item {... prevent payment fraud.} 184 \item {... only {\bf disclose the minimal amount of information 185 necessary}.} 186 \item {... be usable.} 187 \item {... be efficient.} 188 \item {... avoid single points of failure.} 189 \item {... foster {\bf competition}.} 190 \end{enumerate} 191 \end{frame} 192 193 194 \begin{frame} 195 \frametitle{Taler Overview} 196 \begin{center} 197 \begin{tikzpicture} 198 \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em]; 199 \node (origin) at (0,0) {}; 200 \node (exchange) [def,above=of origin,draw]{Exchange}; 201 \node (customer) [def, draw, below left=of origin] {Customer}; 202 \node (merchant) [def, draw, below right=of origin] {Merchant}; 203 \node (auditor) [def, draw, above right=of origin]{Auditor}; 204 % \node (regulator) [def, draw, above=of auditor]{CSSF}; 205 206 \tikzstyle{C} = [color=black, line width=1pt] 207 208 \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins}; 209 \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins}; 210 \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins}; 211 \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify}; 212 % \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report}; 213 214 \end{tikzpicture} 215 \end{center} 216 \end{frame} 217 218 219 220 \begin{frame} 221 \frametitle{Architecture of Taler} 222 \begin{center} 223 \includegraphics[width=0.8\textwidth]{operations.png} 224 \end{center} 225 \end{frame} 226 227 228 \begin{frame}{Consumer Impact of Taler} 229 \begin{itemize} 230 \item {\bf Convenient:} pay with one click instantly --– in Euro, 231 Dollar, Yen or Bitcoin 232 \item {\bf Friction-free security:} Payments do not require sign-up, 233 login or multi-factor authentication 234 \item {\bf Privacy-preserving:} payment requires/shares no personal information 235 \item {\bf Bank account:} not required 236 \end{itemize} 237 \end{frame} 238 239 240 \begin{frame}{Merchant Impact of Taler} 241 \begin{itemize} 242 \item {\bf Instant clearance:} one-click transactions and instant clearance at par 243 \item {\bf Easy \& compliant:} GDPR \& PCI-DSS compliance-free and without any effort 244 \item {\bf Major profit increase:} efficient protocol $+$ no fraud $=$ extremely low costs 245 \item {\bf 1-click checkout:} without Amazon and without false positives in fraud detection 246 \end{itemize} 247 \end{frame} 248 249 250 251 \section{Protocol Basics} 252 253 254 %\begin{frame}[plain] 255 % \begin{tikzpicture}[remember picture,overlay] 256 % \node[anchor=south west, inner sep=0pt] at (current page.south west) {% 257 % \movie[height = \paperheight, width = \paperwidth, poster, showcontrols] {BFH Bachelor's thesis video}{cs-movie.mp4}% 258 % }; 259 % \end{tikzpicture} 260 %\end{frame} 261 262 263 \begin{frame}{How does it work?} 264 We use a few ancient constructions: 265 \begin{itemize} 266 \item Cryptographic hash function (1989) 267 \item Blind signature (1983) 268 \item Schnorr signature (1989) 269 \item \sout{Diffie-Hellman key exchange (1976)} Deterministic signatures (1977) % 1977: RSA, 2008: EdDSA 270 \item Cut-and-choose zero-knowledge proof (1985) 271 \end{itemize} 272 But of course we use modern instantiations. 273 \end{frame} 274 275 276 \begin{frame}{Definition: Taxability} 277 We say Taler is taxable because: 278 \begin{itemize} 279 \item Merchant's income is visible from deposits. 280 \item Hash of contract is part of deposit data. 281 \item State can trace income and enforce taxation. 282 \end{itemize}%\pause 283 Limitations: 284 \begin{itemize} 285 \item withdraw loophole 286 \item {\em sharing} coins among family and friends 287 \end{itemize} 288 \end{frame} 289 290 291 \begin{frame}{Exchange setup: Create a denomination key (RSA)} 292 \begin{minipage}{6cm} 293 \begin{enumerate} 294 \item Generate random primes $p,q$. 295 \item Compute $n := pq$, $\phi(n) = (p-1)(q-1)$ 296 \item Pick small $e < \phi(n)$ such that 297 $d := e^{-1} \mod \phi(n)$ exists. 298 \item Publish public key $(e,n)$. 299 \end{enumerate} 300 \end{minipage} 301 \begin{minipage}{6cm} 302 \begin{tikzpicture} 303 \tikzstyle{def} = [node distance=1em and 1em, inner sep=0em, outer sep=.3em]; 304 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 305 \node (primes) [draw=none, below = of origin] at (0,0) {$(p, q)$}; 306 \node (seal) [def, draw=none, below left=of primes]{\includegraphics[width=0.15\textwidth]{seal.pdf}}; 307 \node (hammer) [def, draw=none, below right=of primes]{\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 308 309 \tikzstyle{C} = [color=black, line width=1pt] 310 311 \draw [<-, C] (primes) -- (origin) node [midway, above, sloped] (TextNode) {}; 312 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 313 \draw [<-, C] (hammer) -- (primes) node [midway, above, sloped] (TextNode) {}; 314 \end{tikzpicture} 315 % \includegraphics[width=0.4\textwidth]{seal.pdf} 316 \end{minipage} 317 \end{frame} 318 319 320 \begin{frame}{Merchant: Create a signing key (EdDSA)} 321 \begin{minipage}{6cm} 322 \begin{itemize} 323 \item Generate random number $m \mod o$ as private key 324 \item Compute public key $M := mG$ 325 \end{itemize} 326 \end{minipage} 327 \begin{minipage}{6cm} 328 \begin{tikzpicture} 329 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 330 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 331 \node (m) [draw=none, below = of origin] at (0,0) {$m$}; 332 \node (seal) [draw=none, below=of m]{M}; 333 \tikzstyle{C} = [color=black, line width=1pt] 334 335 \draw [<-, C] (m) -- (origin) node [midway, above, sloped] (TextNode) {}; 336 \draw [<-, C] (seal) -- (primes) node [midway, above, sloped] (TextNode) {}; 337 \end{tikzpicture} 338 \end{minipage} 339 \parbox[t]{3cm}{{\bf Capability:} $m \Rightarrow$ } 340 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{merchant-sign.pdf}} 341 \end{frame} 342 343 344 \begin{frame}{Customer: Create a planchet (EdDSA)} 345 \begin{minipage}{8cm} 346 \begin{itemize} 347 \item Generate random number $c \mod o$ as private key 348 \item Compute public key $C := cG$ 349 \end{itemize} 350 \end{minipage} 351 \begin{minipage}{4cm} 352 \begin{tikzpicture} 353 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 354 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 355 \node (c) [draw=none, below = of origin] at (0,0) {$c$}; 356 \node (planchet) [draw=none, below=of c]{\includegraphics[width=0.4\textwidth]{planchet.pdf}}; 357 \tikzstyle{C} = [color=black, line width=1pt] 358 359 \draw [<-, C] (c) -- (origin) node [midway, above, sloped] (TextNode) {}; 360 \draw [<-, C] (planchet) -- (c) node [midway, above, sloped] (TextNode) {}; 361 \end{tikzpicture} 362 \end{minipage} 363 \parbox[t]{3cm}{{\bf Capability:} $c \Rightarrow$ } 364 \raisebox{\dimexpr-\height+\baselineskip}{\includegraphics[width=0.1\textwidth]{planchet-sign.pdf}} 365 \end{frame} 366 367 368 \begin{frame}{Customer: Blind planchet (RSA)} 369 \begin{minipage}{6cm} 370 \begin{enumerate} 371 \item Obtain public key $(e,n)$ 372 \item Compute $f := FDH(C)$, $f < n$. 373 \item Generate random blinding factor $b \in \mathbb Z_n$ 374 \item Transmit $f' := f b^e \mod n$ 375 \end{enumerate} 376 \end{minipage} 377 \begin{minipage}{6cm} 378 \begin{tikzpicture} 379 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 380 \node (origin) at (0,0) {\includegraphics[width=0.2\textwidth]{dice.pdf}}; 381 \node (b) [def, draw=none, below = of origin] at (0,-0.2) {$b$}; 382 \node (blinded) [def, draw=none, below right=of b]{\includegraphics[width=0.2\textwidth]{blinded.pdf}}; 383 \node (planchet) [def, draw=none, above right=of blinded]{\includegraphics[width=0.15\textwidth]{planchet.pdf}}; 384 \node (exchange) [node distance=4em and 0.5em, draw, below =of blinded]{Exchange}; 385 \tikzstyle{C} = [color=black, line width=1pt] 386 387 \draw [<-, C] (b) -- (origin) node [midway, above, sloped] (TextNode) {}; 388 \draw [<-, C] (blinded) -- (planchet) node [midway, above, sloped] (TextNode) {}; 389 \draw [<-, C] (blinded) -- (b) node [midway, above, sloped] (TextNode) {}; 390 \draw [<-, C] (exchange) -- (blinded) node [midway, above, sloped] (TextNode) {{\small transmit}}; 391 \end{tikzpicture} 392 \end{minipage} 393 \end{frame} 394 395 396 \begin{frame}{Exchange: Blind sign (RSA)} 397 \begin{minipage}{6cm} 398 \begin{enumerate} 399 \item Receive $f'$. 400 \item Compute $s' := f'^d \mod n$. 401 \item Send signature $s'$. 402 \end{enumerate} 403 \end{minipage} 404 \begin{minipage}{6cm} 405 \begin{tikzpicture} 406 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 407 \node (hammer) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{hammer.pdf}}; 408 \node (signed) [def, draw=none, below left=of hammer]{\includegraphics[width=0.2\textwidth]{sign.pdf}}; 409 \node (blinded) [def, draw=none, above left=of signed]{\includegraphics[width=0.15\textwidth]{blinded.pdf}}; 410 \node (customer) [node distance=4em and 0.5em, draw, below =of signed]{Customer}; 411 \tikzstyle{C} = [color=black, line width=1pt] 412 413 \draw [<-, C] (signed) -- (hammer) node [midway, above, sloped] (TextNode) {}; 414 \draw [<-, C] (signed) -- (blinded) node [midway, above, sloped] (TextNode) {}; 415 \draw [<-, C] (customer) -- (signed) node [midway, above, sloped] (TextNode) {{\small transmit}}; 416 \end{tikzpicture} 417 \end{minipage} 418 \end{frame} 419 420 421 \begin{frame}{Customer: Unblind coin (RSA)} 422 \begin{minipage}{6cm} 423 \begin{enumerate} 424 \item Receive $s'$. 425 \item Compute $s := s' b^{-1} \mod n$ % \\ 426 % ($(f')^d = (f b^e)^d = f^d b$). 427 \end{enumerate} 428 \end{minipage} 429 \begin{minipage}{6cm} 430 \begin{tikzpicture} 431 \tikzstyle{def} = [node distance= 2em and 0.5em, inner sep=0em, outer sep=.3em]; 432 \node (b) [def, draw=none] at (0,0) {$b$}; 433 \node (coin) [def, draw=none, below left=of b]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 434 \node (signed) [def, draw=none, above left=of coin]{\includegraphics[width=0.15\textwidth]{sign.pdf}}; 435 \tikzstyle{C} = [color=black, line width=1pt] 436 437 \draw [<-, C] (coin) -- (b) node [midway, above, sloped] (TextNode) {}; 438 \draw [<-, C] (coin) -- (signed) node [midway, above, sloped] (TextNode) {}; 439 \end{tikzpicture} 440 \end{minipage} 441 \end{frame} 442 443 444 \begin{frame}{Customer: Build shopping cart} 445 \begin{center} 446 \begin{tikzpicture} 447 \tikzstyle{def} = [node distance= 1em and 1em, inner sep=0em, outer sep=.3em]; 448 \node (origin) [draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 449 \node (merchant) [node distance=4em and 0.5em, draw, below =of origin]{\includegraphics[width=0.15\textwidth]{shop.pdf}}; 450 \tikzstyle{C} = [color=black, line width=1pt]; 451 \draw [<-, C] (merchant) -- (origin) node [midway, right] (TextNode) {{\small transmit}}; 452 \end{tikzpicture} 453 \end{center} 454 \end{frame} 455 456 457 \begin{frame}{Merchant: Propose contract (EdDSA)} 458 \begin{minipage}{6cm} 459 \begin{enumerate} 460 \item Complete proposal $D$. 461 \item Send $D$, $EdDSA_m(D)$ 462 \end{enumerate} 463 \end{minipage} 464 \begin{minipage}{6cm} 465 \begin{tikzpicture} 466 \tikzstyle{def} = [node distance=2em and 0.5em, inner sep=0em, outer sep=.3em]; 467 \node (cart) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{cart.pdf}}; 468 \node (proposal) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{merchant_propose.pdf}}; 469 \node (customer) [node distance=4em and 0.5em, draw, below =of proposal]{Customer}; 470 \tikzstyle{C} = [color=black, line width=1pt]; 471 \node (sign) [def, draw=none, above right=of proposal] {$m$}; 472 \tikzstyle{C} = [color=black, line width=1pt] 473 474 \draw [<-, C] (proposal) -- (sign) node [midway, above, sloped] (TextNode) {}; 475 \draw [<-, C] (proposal) -- (cart) node [midway, above, sloped] (TextNode) {}; 476 \draw [<-, C] (customer) -- (proposal) node [midway, right] (TextNode) {{\small transmit}}; 477 \end{tikzpicture} 478 \end{minipage} 479 \end{frame} 480 481 482 \begin{frame}{Customer: Spend coin (EdDSA)} 483 \begin{minipage}{6cm} 484 \begin{enumerate} 485 \item Receive proposal $D$, $EdDSA_m(D)$. 486 \item Send $s$, $C$, $EdDSA_c(D)$ 487 \end{enumerate} 488 \end{minipage} 489 \begin{minipage}{6cm} 490 \begin{tikzpicture} 491 \tikzstyle{def} = [node distance=1.5em and 0.4em, inner sep=0em, outer sep=.3em]; 492 \node (proposal) [def, draw=none] at (0,0) {\includegraphics[width=0.15\textwidth]{merchant_propose.pdf}}; 493 \node (contract) [def, draw=none, below right=of cart]{\includegraphics[width=0.3\textwidth]{contract.pdf}}; 494 \node (c) [def, draw=none, above=of contract] {$c$}; 495 \node (merchant) [node distance=4em and 0.5em, draw, below=of contract]{Merchant}; 496 \node (coin) [def, draw=none, right=of contract]{\includegraphics[width=0.2\textwidth]{coin.pdf}}; 497 \tikzstyle{C} = [color=black, line width=1pt] 498 499 \draw [<-, C] (contract) -- (c) node [midway, above, sloped] (TextNode) {}; 500 \draw [<-, C] (contract) -- (proposal) node [midway, above, sloped] (TextNode) {}; 501 \draw [<-, C] (merchant) -- (contract) node [midway, above, sloped] (TextNode) {{\small transmit}}; 502 \draw [<-, C] (merchant) -- (coin) node [midway, right] (TextNode) {{\small transmit}}; 503 \end{tikzpicture} 504 \end{minipage} 505 \end{frame} 506 507 508 \begin{frame}{Merchant and Exchange: Verify coin (RSA)} 509 \begin{minipage}{6cm} 510 \begin{equation*} 511 s^e \stackrel{?}{\equiv} FDH(C) \mod n 512 \end{equation*} 513 \end{minipage} 514 \begin{minipage}{6cm} 515 \begin{minipage}{0.2\textwidth} 516 \includegraphics[width=\textwidth]{coin.pdf} 517 \end{minipage} 518 $\stackrel{?}{\Leftrightarrow}$ 519 \begin{minipage}{0.2\textwidth} 520 \includegraphics[width=\textwidth]{seal.pdf} 521 \end{minipage} 522 \end{minipage} 523 \vfill 524 The exchange does not only verify the signature, but also 525 checks that the coin was not double-spent. 526 \vfill 527 %\pause 528 \begin{center} 529 {\bf Taler is an online payment system.} 530 \end{center} 531 \vfill 532 \end{frame} 533 534 535 \begin{frame} 536 \frametitle{Blind Signature implementations} 537 \begin{block}{RSA} 538 \begin{itemize} 539 \item Chaum e-cash 540 \end{itemize} 541 \end{block} 542 \begin{block}{Eliptic curves} 543 \begin{itemize} 544 \item Clause Schnorr 545 \item Shorter 546 \end{itemize} 547 \end{block} 548 \begin{block}{Post quantic cryptography} 549 \begin{itemize} 550 \item New protocol designed in NGI-Taler 551 \item Implementation : work in progress 552 \end{itemize} 553 \end{block} 554 555 \end{frame} 556 557 558 %\input refresh.tex 559 560 561 \section{Component Zoo} 562 563 564 \begin{frame}{The Taler Software Ecosystem: Overview} 565 \framesubtitle{\url{https://taler.net/en/docs.html}} 566 Taler is based on modular components that work together to provide a 567 complete payment system: 568 \vfill 569 \begin{itemize} 570 \item {\bf Exchange:} Service provider for digital cash 571 \begin{itemize} 572 \item Core exchange software (cryptography, database) 573 \item Air-gapped key management, real-time {\bf auditing} 574 \item {\bf libeufin}: Modular integration with banking systems 575 \item {\bf challenger}: KYC service with OAuth 2.0 API 576 \end{itemize} 577 \item {\bf Merchant:} Integration service for existing businesses 578 \begin{itemize} 579 \item Core merchant backend software (cryptography, database) 580 \item {\bf Back-office interface} for staff 581 \item {\bf Frontend integration} (E-commerce, Point-of-sale) 582 \end{itemize} 583 \item {\bf Wallet:} Consumer-controlled applications for e-cash 584 \begin{itemize} 585 \item Multi-platform wallet software (for browsers \& mobile phones) 586 \item Wallet backup storage providers ({\bf sync} \& {\bf Anastasis}) 587 \end{itemize} 588 \end{itemize} 589 \end{frame} 590 591 592 \begin{frame}{Taler Exchange} 593 The {\bf Exchange} is the core logic of the payment system. 594 595 \begin{itemize} 596 \item One exchange at minimum must be operated per currency 597 \item Offers a REST API for merchants and customers 598 \item Uses several helper processes for configuration and to 599 interact with RTGS and cryptography 600 \item KYC support via OAuth 2.0, KycAID or Persona APIs 601 \end{itemize} 602 \end{frame} 603 604 605 \begin{frame}{Taler Merchant} 606 The {\bf Merchant} is the software run by merchants to accept\\ 607 GNU Taler payments. 608 609 \begin{minipage}{6cm} 610 \begin{itemize} 611 \item REST API for integration with e-commerce 612 \item SPA provides Web interface for administration 613 \item Features include: 614 \begin{itemize} 615 \item Multi-tenant support 616 \item Refunds 617 \item Templates 618 \item Webhooks 619 \item Inventory management (optional) 620 \end{itemize} 621 \end{itemize} 622 \end{minipage} 623 \begin{minipage}{5cm} 624 \includegraphics[width=5cm]{screenshots/merchant-spa-settings} 625 \end{minipage} 626 \end{frame} 627 628 629 \begin{frame}{Taler Wallet} 630 The {\bf Wallet} is the software run by consumers to store 631 their digital cash and authorize transactions. 632 633 \begin{minipage}{8cm} 634 \begin{itemize} 635 \item {\bf wallet-core} is the logic shared by all interfaces 636 \item Works on Android, F-Droid, iOS, Ubuntu Touch, 637 WebExtension (Chrome, Chromium, Firefox, etc.) 638 \item Features include: 639 \begin{itemize} 640 \item Multi-currency support 641 \item Wallet-to-wallet payments (NFC or QR code) 642 \item CRDT-like data model 643 \end{itemize} 644 \end{itemize} 645 \end{minipage} 646 \begin{minipage}{3cm} 647 \includegraphics[width=3cm]{screenshots/Screenshot_20230225-103520.png} 648 \end{minipage} 649 \end{frame} 650 651 652 \begin{frame}{Taler Auditor} 653 The {\bf Auditor} is the software run by an independent auditor 654 to validate the operation of an Exchange. 655 656 \begin{itemize} 657 \item REST API for additional report inputs by merchants (optional) 658 \item Secure database replication logic 659 \end{itemize} 660 \end{frame} 661 662 663 \begin{frame}{libeufin-nexus} 664 libeufin-nexus allows Taler components to interact with a core banking system. It: 665 666 \begin{itemize} 667 \item provides an implementation of the Wire Gateway for the exchange 668 \item supports EBICS 2.5 and 3.0 669 \item other APIs such as FinTS or PSD2-style XS2A APIs can be added 670 without requiring changes to the Exchange 671 \item was tested with GLS Bank (DE) and Postfinance (CH) accounts and real EUR/CHF 672 \end{itemize} 673 \end{frame} 674 675 676 \begin{frame}{libeufin-bank} 677 libeufin-bank implements a standalone bank with a Web interface. It: 678 679 \begin{itemize} 680 \item provides the Taler Core Bank API for RESTful online banking 681 using a Web interface (with multi-factor authentication) 682 \item includes a Taler Wire Gateway for the exchange 683 \item offers the Taler Bank Integration API to allow wallets 684 to easily withdraw digital cash 685 \item optionally provides the Taler Conversion Info API for currency 686 conversion between fiat and regional currencies 687 \item optionally integrates with libeufin-nexus to interact with 688 a core banking system 689 \end{itemize} 690 \end{frame} 691 692 693 \begin{frame}{Challenger} 694 Challenger allows clients to obtain validated address (KYC) data about 695 users: 696 697 \begin{itemize} 698 \item Customizable Web-based process for address validation 699 \item Can validate phone numbers, e-mail addresses or physical mailing addresses 700 \item Provides an exchange-compatible OAuth 2.0 API 701 \end{itemize} 702 \end{frame} 703 704 705 \begin{frame}{Depolymerization} 706 Depolymerization is a bridge between GNU Taler and blockchains, 707 making Taler a layer 2 system for crypto-currencies (like Lightning). 708 709 \begin{itemize} 710 \item provides an implementation of the Wire Gateway for the exchange 711 \item Works on top of Bitcoin and Ethereum 712 crypto-currencies, with the DLTs as the ``RTGS'' 713 \item Provides same API to Exchange as libeufin-nexus 714 \end{itemize} 715 \end{frame} 716 717 718 \begin{frame}{Point-of-Sale App for Android} 719 \begin{minipage}{7cm} 720 \begin{itemize} 721 \item Allows merchant to generate orders against Taler backend 722 and display QR code to enable customer to pay in person 723 \item Patterned after ViewTouch restaurant UI 724 \end{itemize} 725 \end{minipage} 726 \begin{minipage}{4cm} 727 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194112.jpg} 728 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-194119.jpg} 729 \includegraphics[width=4cm]{screenshots/Screenshot_20230224-195348.jpg} 730 \end{minipage} 731 \end{frame} 732 733 734 \begin{frame}{Payment plugins} 735 \begin{minipage}{5cm} 736 \includegraphics[width=4cm]{screenshots/woocommerce-cart.png} 737 \includegraphics[width=4cm]{screenshots/pretix.png} 738 \end{minipage} 739 \begin{minipage}{5cm} 740 \begin{itemize} 741 \item Pretix, ticket sales system 742 \item Joomla!, an e-commerce platform 743 \item WooCommerce, an e-commerce solution on top of WordPress 744 \item DrupalCommerce, an e-commerce solution on top of Drupal 745 \end{itemize} 746 \end{minipage} 747 \end{frame} 748 749 750 751 752 753 754 755 \section{Future Work \& Conclusion} 756 757 758 \begin{frame}{Use Case: Journalism} 759 Today: 760 \begin{itemize} 761 \item Corporate structure % ($\Rightarrow$ filter) 762 \item Advertising primary revenue % ($\Rightarrow$ dependence) 763 \item Tracking readers critical for business success 764 \item Journalism and marketing hard to distinguish 765 \end{itemize}\vfill%\pause 766 With GNU Taler: 767 \begin{itemize} 768 \item One-click micropayments per article 769 \item Hosting requires no expertise % (no PCI DSS) 770 \item Reader-funded reporting separated from marketing 771 \item Readers can remain anonymous 772 \end{itemize} 773 \end{frame} 774 775 776 \begin{frame}{Taler: Project Status} 777 \framesubtitle{\url{https://docs.taler.net/}} 778 \begin{itemize} 779 \item Cryptographic protocols and core exchange component are stable 780 \item Pilot project at Bern University of Applied Sciences cafeteria 781 \item Netzbon (regional currency) in Basel launched 782 \item Taler Operations AG live Swiss-wide 783 \item Internal alpha deployment with Magnet Bank (Hungary) 784 \item Deployment in Germany / Eurozone 2027 785 \end{itemize} 786 \end{frame} 787 788 789 \begin{frame}{Competitor comparison} 790 \begin{center} \small 791 \begin{tabular}{l||c|c|c|c|c} 792 & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline 793 Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline 794 Offline & +++ & $-$$-$ & $-$$-$ & + & $+$$+$ \\ \hline 795 Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline 796 Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline 797 Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 798 Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline 799 Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline 800 Security & $-$ & o & o & $-$$-$ & ++ \\ \hline 801 Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline 802 Libre & $-$ & +++ & +++ & $-$ $-$ $-$& +++ \\ 803 \end{tabular} 804 \end{center} 805 \end{frame} 806 807 808 \begin{frame}{Other ongoing developments} 809 \begin{itemize} 810 \item Privacy-preserving auctions (trading, currency exchange) ({\tt oezguer@taler.net}) 811 \item Hardware and software support for embedded systems ({\tt mikolai@taler.net}) 812 \item Tax-deductable receipts for donations to charities (donau.git) 813 \item Unlinkable anonymous subscriptions and discount tokens ({\tt ivan@taler.net}) 814 \item Support for illiterate and innumerate users\footnote{Background: \url{https://myoralvillage.org/}} 815 ({\tt marc@taler.net}) 816 \end{itemize} 817 \end{frame} 818 819 820 \begin{frame}{Open Challenges} 821 \begin{itemize} 822 \item Try to explain this to lawyers and AML staff of banks 823 \item What are convincing arguments for citizens to switch? 824 \item How to address anti-competitive cash-back from card payments? 825 \item $\ldots$ 826 \end{itemize} 827 \end{frame} 828 829 830 \begin{frame}{How to support?} 831 \begin{description} 832 \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}} 833 \item[Discuss:] {\small \url{https://ich.taler.net/}} 834 \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git.taler.net/} 835 \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler} 836 \item[Translate:] \url{https://weblate.taler.net/}, \url{translation-volunteer@taler.net} 837 \item[Integrate:] \url{https://docs.taler.net/} 838 \item[Donate:] \url{https://gnunet.org/ev} 839 \item[Partner:] \url{https://taler-systems.com/} 840 \end{description} 841 \end{frame} 842 843 \begin{frame} 844 \frametitle{Install the Wallet} 845 \begin{columns} 846 \begin{column}{0.35\textwidth} 847 \begin{block}{Google Play Store} 848 \end{block} 849 \begin{center} 850 \includegraphics[width=0.5\textwidth]{./images/google_play_GNU_Taler.jpg} 851 \end{center} 852 \end{column} 853 \begin{column}{0.35\textwidth} 854 \begin{block}{Apple Store} 855 \end{block} 856 \begin{center} 857 \includegraphics[width=0.5\textwidth]{./images/Apple-Store-taler-app.png} 858 \end{center} 859 \end{column} 860 \begin{column}{0.35\textwidth} 861 \begin{block}{F-Droid} 862 \end{block} 863 \begin{center} 864 \includegraphics[width=0.5\textwidth]{./images/QR-Code-f-droid.png} 865 \end{center} 866 867 \end{column} 868 869 \end{columns} 870 \end{frame} 871 872 873 874 \begin{frame}{Demonstration} 875 \vfill 876 \begin{center} 877 \url{https://demo.taler.net/} 878 \end{center} 879 \begin{enumerate} 880 \item Install browser extension. 881 \item Visit the {\tt bank.demo.taler.net} to withdraw coins. 882 \item Visit the {\tt shop.demo.taler.net} to spend coins. 883 \end{enumerate} 884 \vfill 885 \end{frame} 886 887 \subsection{Pay with Taler} 888 \begin{frame} 889 \frametitle{Pay with Taler I} 890 \begin{columns} 891 \begin{column}{0.4\textwidth} 892 \begin{block}{Withdraw e-cash} 893 \begin{itemize} 894 \item Withdraw in the app 895 \item Transfer money to the Exchange 896 \item Wait until the transfer is finalized 897 \end{itemize} 898 \end{block} 899 900 \end{column} 901 \begin{column}{0.5\textwidth} 902 \begin{center} 903 \includegraphics[width=0.4\textwidth]{./images/screenShot-withdraw.jpeg} 904 \end{center} 905 \end{column} 906 907 \end{columns} 908 909 \end{frame} 910 911 \begin{frame} 912 \frametitle{Pay with Taler II} 913 \begin{columns} 914 \begin{column}{0.4\textwidth} 915 \begin{block}{Scan the QR code presented by the merchand} 916 \begin{itemize} 917 \item Validate the payment in the app 918 \item DONE 919 \end{itemize} 920 \end{block} 921 922 \end{column} 923 \begin{column}{0.5\textwidth} 924 \begin{center} 925 \includegraphics[width=0.4\textwidth]{./images/taler-snack-automat.jpg} 926 \end{center} 927 \end{column} 928 929 \end{columns} 930 931 \end{frame} 932 933 934 \begin{frame}{Conclusion} 935 \begin{center} 936 {\bf What can we do?} 937 \end{center} 938 \vfill 939 \begin{itemize} 940 \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and} 941 \item{Engage in arms race with deliberately unregulatable blockchains} 942 % \item{Enjoy the ``benefits'' of cash \\ 943 % \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill} 944 \end{itemize} 945 \vfill 946 \begin{center} 947 {\bf OR} 948 \end{center} 949 \vfill 950 \begin{itemize} 951 \item{Establish free software alternative balancing social goals!} 952 \end{itemize} 953 \vfill 954 \end{frame} 955 956 957 958 \section*{References} 959 \begin{frame}[allowframebreaks]{References} 960 \bibliographystyle{plain} 961 \bibliography{ref,extra,rfc,biblio-defqa} 962 \end{frame} 963 964 965 % This should be last... 966 \begin{frame}{Acknowledgments} 967 968 \begin{minipage}{0.45\textwidth} \ \\ 969 {\tiny Funded by the European Union (Project 101135475).} 970 971 \begin{center} 972 \includegraphics[width=0.5\textwidth]{./images/bandera.jpg} 973 \end{center} 974 \end{minipage} 975 \hfill 976 \begin{minipage}{0.45\textwidth} 977 {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).} 978 979 \begin{center} 980 \includegraphics[width=0.65\textwidth]{./images/sbfi.jpg} 981 \end{center} 982 \end{minipage} 983 984 \vfill 985 986 {\tiny 987 988 Views and opinions expressed are however those of the author(s) only 989 and do not necessarily reflect those of the European Union. Neither the 990 European Union nor the granting authority can be held responsible for 991 them. 992 993 } 994 \end{frame} 995 996 997 \end{document} 998 999 1000 1001 \begin{frame}{Future work} 1002 \begin{itemize} 1003 \item Performance improvements for RSA in FLOSS crypto libraries 1004 \item Integrate with e-ID for easier \& cheaper KYC 1005 \item Buy anonymous pre-paid debit cards on-demand with Taler wallet 1006 \item Implement PQC across the stack (with cipher agility, where possible with additive security) 1007 \end{itemize} 1008 \end{frame}