FC17 formatting, stress refresh protocol in title and abstract; stress cut-and-choose is practical with kappa=3
This commit is contained in:
parent
56efe31c40
commit
581ca30052
@ -34,7 +34,7 @@
|
|||||||
\usetikzlibrary{calc}
|
\usetikzlibrary{calc}
|
||||||
% \usepackage{enumitem}
|
% \usepackage{enumitem}
|
||||||
\usepackage{caption}
|
\usepackage{caption}
|
||||||
\usepackage{subcaption}
|
%\usepackage{subcaption}
|
||||||
\usepackage{subfig}
|
\usepackage{subfig}
|
||||||
% \usepackage{sidecap}
|
% \usepackage{sidecap}
|
||||||
% \usepackage{wrapfig}
|
% \usepackage{wrapfig}
|
||||||
@ -63,7 +63,7 @@
|
|||||||
% - sharing = coin copying that should not be taxed
|
% - sharing = coin copying that should not be taxed
|
||||||
|
|
||||||
|
|
||||||
\title{Taler: Taxable Anonymous Libre Electronic Reserves}
|
\title{Refreshing Coins for Giving Change and Refunds \\ in Chaum-style Anonymous Payments}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
\mainmatter
|
\mainmatter
|
||||||
@ -84,13 +84,19 @@ fully audited. All parties receive cryptographic evidence for all
|
|||||||
transactions; still, each party only receives the minimum information
|
transactions; still, each party only receives the minimum information
|
||||||
required to execute transactions. Enforcement of honest behavior is
|
required to execute transactions. Enforcement of honest behavior is
|
||||||
timely, and is at least as strict as with legacy credit card payment
|
timely, and is at least as strict as with legacy credit card payment
|
||||||
systems that do not provide for privacy. Taler unique {\em refresh
|
systems that do not provide for privacy.
|
||||||
protocol} allows fractional payments and refunds while maintaining
|
|
||||||
anonymity of the customer and unlinkability of transactions.
|
The key technical contribution underpinning Taler is a new {\em
|
||||||
|
refresh protocol} which allows fractional payments and refunds while
|
||||||
|
maintaining anonymity of the customer and unlinkability of
|
||||||
|
transactions. The refresh protocol combines an efficient
|
||||||
|
cut-and-choose mechanism with a {\em link} step to ensure that
|
||||||
|
refreshing is not abused for transactional payments.
|
||||||
|
|
||||||
We argue that Taler provides a secure digital currency for modern
|
We argue that Taler provides a secure digital currency for modern
|
||||||
liberal societies as it is a flexible, libre and efficient protocol
|
liberal societies as it is a flexible, libre and efficient protocol
|
||||||
and adequately balances the state's need for monetary control with
|
and adequately balances the state's need for monetary control with the
|
||||||
the citizen's needs for private economic activity.
|
citizen's needs for private economic activity.
|
||||||
\end{abstract}
|
\end{abstract}
|
||||||
|
|
||||||
\section{Introduction}
|
\section{Introduction}
|
||||||
@ -164,7 +170,7 @@ due to the obvious corrolation. A practical payment system must thus
|
|||||||
support giving change in the form of spendable coins, say a \EUR{0,01}
|
support giving change in the form of spendable coins, say a \EUR{0,01}
|
||||||
coin and a \EUR{50,00} coin.
|
coin and a \EUR{50,00} coin.
|
||||||
|
|
||||||
Taler solves the problem of giving change by introducing a new
|
Taler solves the problem of giving change by introducing a new
|
||||||
{\em refresh protocol}. Using this protocol, a customer can obtain
|
{\em refresh protocol}. Using this protocol, a customer can obtain
|
||||||
change or refunds in the form of fresh coins that other parties cannot
|
change or refunds in the form of fresh coins that other parties cannot
|
||||||
link to the original transaction, the original coin, or each other.
|
link to the original transaction, the original coin, or each other.
|
||||||
@ -633,16 +639,16 @@ Now the customer carries out the following interaction with the exchange:
|
|||||||
\item coin key $C := (c_s,C_p)$ with private key $c_s$ and public key $C_p := c_s G$,
|
\item coin key $C := (c_s,C_p)$ with private key $c_s$ and public key $C_p := c_s G$,
|
||||||
\item blinding factor $b$, and commits $\langle W, C, b \rangle$ to disk.
|
\item blinding factor $b$, and commits $\langle W, C, b \rangle$ to disk.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item[SEPA Send]
|
\item[SEPA Send]
|
||||||
The customer transfers an amount of money corresponding to
|
The customer transfers an amount of money corresponding to
|
||||||
at least $K_v$ to the exchange, with $W_p$ in the subject line
|
at least $K_v$ to the exchange, with $W_p$ in the subject line
|
||||||
of the transaction.
|
of the transaction.
|
||||||
\item[SEPA Recieve]
|
\item[SEPA Recieve]
|
||||||
The exchange receives the transaction and credits the reserve $W_p$
|
The exchange receives the transaction and credits the reserve $W_p$
|
||||||
with the respective amount in its database.
|
with the respective amount in its database.
|
||||||
\item[POST {\tt /withdraw/sign}]
|
\item[POST {\tt /withdraw/sign}]
|
||||||
The customer sends $S_W(B)$ where $B := B_b(\FDH_K(C_p))$ to
|
The customer sends $S_W(B)$ where $B := B_b(\FDH_K(C_p))$ to
|
||||||
the exchange to request withdrawal of $C$; here, $B_b$ denotes
|
the exchange to request withdrawal of $C$; here, $B_b$ denotes
|
||||||
Chaum-style blinding with blinding factor $b$.
|
Chaum-style blinding with blinding factor $b$.
|
||||||
\item[200 OK / 402 PAYMENT REQUIRED]
|
\item[200 OK / 402 PAYMENT REQUIRED]
|
||||||
The exchange checks if the same withdrawal request was issued before;
|
The exchange checks if the same withdrawal request was issued before;
|
||||||
@ -692,8 +698,8 @@ with signature $\widetilde{C} := S_K(\FDH_K(C_p))$
|
|||||||
\item[Merchant Setup] % \label{contract}
|
\item[Merchant Setup] % \label{contract}
|
||||||
Let $\vec{X} := \langle X_1, \ldots, X_n \rangle$ denote the list of
|
Let $\vec{X} := \langle X_1, \ldots, X_n \rangle$ denote the list of
|
||||||
exchanges accepted by the merchant where each $X_j$ is a exchange's
|
exchanges accepted by the merchant where each $X_j$ is a exchange's
|
||||||
public key.
|
public key.
|
||||||
\item[Proposal]
|
\item[Proposal]
|
||||||
The merchant creates a digitally signed contract
|
The merchant creates a digitally signed contract
|
||||||
$\mathcal{A} := S_M(m, f, a, H(p, r), \vec{X})$
|
$\mathcal{A} := S_M(m, f, a, H(p, r), \vec{X})$
|
||||||
where $m$ is an identifier for this transaction, $a$ is data relevant
|
where $m$ is an identifier for this transaction, $a$ is data relevant
|
||||||
@ -702,19 +708,19 @@ with signature $\widetilde{C} := S_K(\FDH_K(C_p))$
|
|||||||
$p$ is the merchant's payment information (e.g. his IBAN number), and
|
$p$ is the merchant's payment information (e.g. his IBAN number), and
|
||||||
$r$ is a random nonce. The merchant commits $\langle \mathcal{A} \rangle$
|
$r$ is a random nonce. The merchant commits $\langle \mathcal{A} \rangle$
|
||||||
to disk and sends $\mathcal{A}$ to the customer.
|
to disk and sends $\mathcal{A}$ to the customer.
|
||||||
\item[Customer Setup] % \label{deposit}
|
\item[Customer Setup]
|
||||||
The customer should already possess a coin issued by a exchange that is
|
The customer should already possess a coin issued by a exchange that is
|
||||||
accepted by the merchant, meaning $K$ should be publicly signed by
|
accepted by the merchant, meaning $K$ should be publicly signed by
|
||||||
some $X_j$ from $\vec{X}$, and has a value $\geq f$.
|
some $X_j$ from $\vec{X}$, and has a value $\geq f$.
|
||||||
\item[POST {\tt /???}]
|
\item[POST {\tt /???}] \label{deposit}
|
||||||
The customer generates a \emph{deposit-permission}
|
The customer generates a \emph{deposit-permission}
|
||||||
$\mathcal{D} := S_c(\widetilde{C}, m, f, H(a), H(p,r), M_p)$
|
$\mathcal{D} := S_c(\widetilde{C}, m, f, H(a), H(p,r), M_p)$
|
||||||
and sends $\langle \mathcal{D}, X_j\rangle$ to the merchant,
|
and sends $\langle \mathcal{D}, X_j\rangle$ to the merchant,
|
||||||
where $X_j$ is the exchange which signed $K$.
|
where $X_j$ is the exchange which signed $K$.
|
||||||
\item[POST {\tt/deposit}]
|
\item[POST {\tt/deposit}]
|
||||||
The merchant gives $(\mathcal{D}, p, r)$ to the exchange, thereby
|
The merchant gives $(\mathcal{D}, p, r)$ to the exchange, thereby
|
||||||
revealing $p$ only to the exchange.
|
revealing $p$ only to the exchange.
|
||||||
\item[200 OK / 409 CONFLICT]
|
\item[200 OK / 409 CONFLICT]
|
||||||
The exchange validates $\mathcal{D}$ and checks for double spending.
|
The exchange validates $\mathcal{D}$ and checks for double spending.
|
||||||
If the coin has been involved in previous transactions and the new
|
If the coin has been involved in previous transactions and the new
|
||||||
one would exceed its remaining value, it sends an error
|
one would exceed its remaining value, it sends an error
|
||||||
@ -779,9 +785,18 @@ denomination $K$ is melted to obtain a fresh coin $\widetilde{C}$
|
|||||||
with the same denomination. In practice, Taler uses a natural
|
with the same denomination. In practice, Taler uses a natural
|
||||||
extension where multiple fresh coins are generated a the same time to
|
extension where multiple fresh coins are generated a the same time to
|
||||||
enable giving precise change matching any amount.
|
enable giving precise change matching any amount.
|
||||||
In the protocol, $\kappa \ge 3$ is a security parameter and $G$ is the
|
In the protocol, $\kappa \ge 3$ is a security parameter for the
|
||||||
|
cut-and-choose part of the protocol and $G$ is the
|
||||||
generator of the elliptic curve.
|
generator of the elliptic curve.
|
||||||
|
|
||||||
|
We note that $\kappa = 3$ is actually perfectly sufficient in most
|
||||||
|
cases in practice, as the cut-and-choose protocol does not need to
|
||||||
|
provide cryptographic security: If the maximum applicable tax is less
|
||||||
|
than $\frac{2}{3}$, then detecting $\kappa = 3$ ensures that cheating
|
||||||
|
results in a negative return on average as $\kappa - 1$ out of
|
||||||
|
$\kappa$ attempts to cheat are detected. This makes the use of
|
||||||
|
cut-and-choose practical and efficient in this context.
|
||||||
|
|
||||||
% FIXME: I'm explicit about the rounds in postquantum.tex
|
% FIXME: I'm explicit about the rounds in postquantum.tex
|
||||||
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
@ -811,10 +826,10 @@ generator of the elliptic curve.
|
|||||||
using the same key derivation functions.
|
using the same key derivation functions.
|
||||||
|
|
||||||
% \item
|
% \item
|
||||||
The customer computes $B^{(i)} := B_{b^{(i)}}(\FDH_K(C^{(i)}_p))$
|
The customer computes $B^{(i)} := B_{b^{(i)}}(\FDH_K(C^{(i)}_p))$
|
||||||
for $i \in \{1,\ldots,\kappa\}$ and sends a commitment
|
for $i \in \{1,\ldots,\kappa\}$ and sends a commitment
|
||||||
$S_{C'}(\vec{B}, \vec{T_p})$ to the exchange.
|
$S_{C'}(\vec{B}, \vec{T_p})$ to the exchange.
|
||||||
\item[200 OK / 409 CONFLICT]
|
\item[200 OK / 409 CONFLICT]
|
||||||
The exchange generates a random $\gamma$ with $1 \le \gamma \le \kappa$ and
|
The exchange generates a random $\gamma$ with $1 \le \gamma \le \kappa$ and
|
||||||
marks $C'_p$ as spent by committing
|
marks $C'_p$ as spent by committing
|
||||||
$\langle C', \gamma, S_{C'}(\vec{B}, \vec{T_p}) \rangle$ to disk.
|
$\langle C', \gamma, S_{C'}(\vec{B}, \vec{T_p}) \rangle$ to disk.
|
||||||
@ -823,12 +838,12 @@ generator of the elliptic curve.
|
|||||||
%
|
%
|
||||||
The exchange sends $S_{K'}(C'_p, \gamma)$ to the customer where
|
The exchange sends $S_{K'}(C'_p, \gamma)$ to the customer where
|
||||||
$K'$ is the exchange's message signing key.
|
$K'$ is the exchange's message signing key.
|
||||||
\item[POST {\tt /refresh/reveal}]
|
\item[POST {\tt /refresh/reveal}]
|
||||||
The customer commits $\langle C', S_K(C'_p, \gamma) \rangle$ to disk.
|
The customer commits $\langle C', S_K(C'_p, \gamma) \rangle$ to disk.
|
||||||
Also, the customer assembles
|
Also, the customer assembles
|
||||||
$\mathfrak{R} := \left(t_s^{(i)}\right)_{i \ne \gamma}$
|
$\mathfrak{R} := \left(t_s^{(i)}\right)_{i \ne \gamma}$
|
||||||
and sends $S_{C'}(\mathfrak{R})$ to the exchange.
|
and sends $S_{C'}(\mathfrak{R})$ to the exchange.
|
||||||
\item[200 OK / 400 BAD REQUEST] % \label{step:refresh-ccheck}
|
\item[200 OK / 400 BAD REQUEST] % \label{step:refresh-ccheck}
|
||||||
The exchange checks whether $\mathfrak{R}$ is consistent with
|
The exchange checks whether $\mathfrak{R}$ is consistent with
|
||||||
the commitments; specifically, it computes for $i \not= \gamma$:
|
the commitments; specifically, it computes for $i \not= \gamma$:
|
||||||
|
|
||||||
@ -842,16 +857,16 @@ generator of the elliptic curve.
|
|||||||
\end{minipage}
|
\end{minipage}
|
||||||
\begin{minipage}{5cm}
|
\begin{minipage}{5cm}
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\overline{T_p^{(i)}} :&= t_s^{(i)} G \\
|
\overline{T_p^{(i)}} :&= t_s^{(i)} G \\
|
||||||
\overline{b}^{(i)} :&= \FDH_K(\KDF_{\textrm{blinding}}(\overline{L}_i)) \\
|
\overline{b}^{(i)} :&= \FDH_K(\KDF_{\textrm{blinding}}(\overline{L}_i)) \\
|
||||||
\overline{B^{(i)}} :&= B_{\overline{b_i}}(\overline{C_p^{(i)}})
|
\overline{B^{(i)}} :&= B_{\overline{b_i}}(\overline{C_p^{(i)}})
|
||||||
\end{align*}
|
\end{align*}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
|
|
||||||
and checks if $\overline{B^{(i)}} = B^{(i)}$
|
and checks if $\overline{B^{(i)}} = B^{(i)}$
|
||||||
and $\overline{T^{(i)}_p} = T^{(i)}_p$.
|
and $\overline{T^{(i)}_p} = T^{(i)}_p$.
|
||||||
|
|
||||||
% \item[200 OK / 409 CONFLICT] % \label{step:refresh-done}
|
% \item[200 OK / 409 CONFLICT] % \label{step:refresh-done}
|
||||||
If the commitments were consistent, the exchange sends the
|
If the commitments were consistent, the exchange sends the
|
||||||
blind signature $\widetilde{C} := S_{K}(B^{(\gamma)})$ to the customer.
|
blind signature $\widetilde{C} := S_{K}(B^{(\gamma)})$ to the customer.
|
||||||
Otherwise, the exchange responds with an error indicating
|
Otherwise, the exchange responds with an error indicating
|
||||||
@ -882,7 +897,7 @@ The linking request is not expected to be used at all during ordinary
|
|||||||
operation of Taler. If the refresh protocol is used by Alice to
|
operation of Taler. If the refresh protocol is used by Alice to
|
||||||
obtain change as designed, she already knows all of the information
|
obtain change as designed, she already knows all of the information
|
||||||
and thus has little reason to request it via the linking protocol.
|
and thus has little reason to request it via the linking protocol.
|
||||||
The fundamental reason why the exchange must provide the link protocol
|
The fundamental reason why the exchange must provide the link protocol
|
||||||
is simply to provide a threat: if Bob were to use the refresh protocol
|
is simply to provide a threat: if Bob were to use the refresh protocol
|
||||||
for a transaction of funds from Alice to him, Alice may use a link
|
for a transaction of funds from Alice to him, Alice may use a link
|
||||||
request to gain shared access to Bob's coins. Thus, this threat
|
request to gain shared access to Bob's coins. Thus, this threat
|
||||||
@ -969,62 +984,66 @@ transaction.
|
|||||||
|
|
||||||
\section{Experimental results}
|
\section{Experimental results}
|
||||||
|
|
||||||
\begin{figure}[b!]
|
%\begin{figure}[b!]
|
||||||
\begin{subfigure}{0.45\columnwidth}
|
% \begin{subfigure}{0.45\columnwidth}
|
||||||
\includegraphics[width=\columnwidth]{bw_in.png}
|
% \includegraphics[width=\columnwidth]{bw_in.png}
|
||||||
\caption{Incoming traffic at the exchange, in bytes per 5 minutes.}
|
% \caption{Incoming traffic at the exchange, in bytes per 5 minutes.}
|
||||||
\label{fig:in}
|
% \label{fig:in}
|
||||||
\end{subfigure}\hfill
|
% \end{subfigure}\hfill
|
||||||
\begin{subfigure}{0.45\columnwidth}
|
% \begin{subfigure}{0.45\columnwidth}
|
||||||
\includegraphics[width=\columnwidth]{bw_out.png}
|
% \includegraphics[width=\columnwidth]{bw_out.png}
|
||||||
\caption{Outgoing traffic from the exchange, in bytes per 5 minutes.}
|
% \caption{Outgoing traffic from the exchange, in bytes per 5 minutes.}
|
||||||
\label{fig:out}
|
% \label{fig:out}
|
||||||
\end{subfigure}
|
% \end{subfigure}
|
||||||
\begin{subfigure}{0.45\columnwidth}
|
% \begin{subfigure}{0.45\columnwidth}
|
||||||
\includegraphics[width=\columnwidth]{db_read.png}
|
% \includegraphics[width=\columnwidth]{db_read.png}
|
||||||
\caption{DB read operations per second.}
|
% \caption{DB read operations per second.}
|
||||||
\label{fig:read}
|
% \label{fig:read}
|
||||||
\end{subfigure}
|
% \end{subfigure}
|
||||||
\begin{subfigure}{0.45\columnwidth}
|
% \begin{subfigure}{0.45\columnwidth}
|
||||||
\includegraphics[width=\columnwidth]{db_write.png}
|
% \includegraphics[width=\columnwidth]{db_write.png}
|
||||||
\caption{DB write operations per second.}
|
% \caption{DB write operations per second.}
|
||||||
\label{fig:write}
|
% \label{fig:write}
|
||||||
\end{subfigure}
|
% \end{subfigure}
|
||||||
\begin{subfigure}{0.45\columnwidth}
|
% \begin{subfigure}{0.45\columnwidth}
|
||||||
\includegraphics[width=\columnwidth]{cpu_balance.png}
|
% \includegraphics[width=\columnwidth]{cpu_balance.png}
|
||||||
\caption{CPU credit balance. Hitting a balance of 0 shows the CPU is
|
% \caption{CPU credit balance. Hitting a balance of 0 shows the CPU is
|
||||||
the limiting factor.}
|
% the limiting factor.}
|
||||||
\label{fig:cpu}
|
% \label{fig:cpu}
|
||||||
\end{subfigure}\hfill
|
% \end{subfigure}\hfill
|
||||||
\begin{subfigure}{0.45\columnwidth}
|
% \begin{subfigure}{0.45\columnwidth}
|
||||||
\includegraphics[width=\columnwidth]{cpu_usage.png}
|
% \includegraphics[width=\columnwidth]{cpu_usage.png}
|
||||||
\caption{CPU utilization. The t2.micro instance is allowed to use 10\% of
|
% \caption{CPU utilization. The t2.micro instance is allowed to use 10\% of
|
||||||
one CPU.}
|
% one CPU.}
|
||||||
\label{fig:usage}
|
% \label{fig:usage}
|
||||||
\end{subfigure}
|
% \end{subfigure}
|
||||||
\caption{Selected EC2 performance monitors for the experiment in the EC2
|
% \caption{Selected EC2 performance monitors for the experiment in the EC2
|
||||||
(after several hours, once the system was ``warm'').}
|
% (after several hours, once the system was ``warm'').}
|
||||||
\label{fig:ec2}
|
% \label{fig:ec2}
|
||||||
\end{figure}
|
%\end{figure}
|
||||||
|
|
||||||
We ran the Taler exchange v0.0.2 on an Amazon EC2 t2.micro instance
|
We ran the Taler exchange v0.0.2 on an Amazon EC2 t2.micro instance
|
||||||
(10\% of a Xeon E5-2676 at 2.4 GHz) based on Ubuntu 14.04.4 LTS, using
|
(10\% of a Xeon E5-2676 at 2.4 GHz) based on Ubuntu 14.04.4 LTS, using
|
||||||
a db.t2.micro instance with Postgres 9.5 for the database. Using 16
|
a db.t2.micro instance with Postgres 9.5 for the database. Using 16
|
||||||
concurrent clients performing withdraw, deposit and refresh operations
|
concurrent clients performing withdraw, deposit and refresh operations
|
||||||
we then pushed the t2.micro instance to the resource limit
|
we then pushed the t2.micro instance to the resource limit
|
||||||
(Figure~\ref{fig:cpu}) from a network with $\approx$ 160 ms latency to
|
%(Figure~\ref{fig:cpu})
|
||||||
|
from a network with $\approx$ 160 ms latency to
|
||||||
the EC2 instance. At that point, the instance managed about 8 HTTP
|
the EC2 instance. At that point, the instance managed about 8 HTTP
|
||||||
requests per second, which roughly corresponds to one full business
|
requests per second, which roughly corresponds to one full business
|
||||||
transaction (as a full business transaction is expected to involve
|
transaction (as a full business transaction is expected to involve
|
||||||
withdrawing and depositing several coins). The network traffic was
|
withdrawing and depositing several coins). The network traffic was
|
||||||
modest at approximately 50 kbit/sec from the exchange
|
modest at approximately 50 kbit/sec from the exchange
|
||||||
(Figure~\ref{fig:out}) and 160 kbit/sec to the exchange
|
%(Figure~\ref{fig:out})
|
||||||
(Figure~\ref{fig:in}). At network latencies above 10 ms, the delay
|
and 160 kbit/sec to the exchange.
|
||||||
|
%(Figure~\ref{fig:in}).
|
||||||
|
At network latencies above 10 ms, the delay
|
||||||
for executing a transaction is dominated by the network latency, as
|
for executing a transaction is dominated by the network latency, as
|
||||||
local processing virtually always takes less than 10 ms.
|
local processing virtually always takes less than 10 ms.
|
||||||
|
|
||||||
Database transactions are dominated by writes (Figure~\ref{fig:read}
|
Database transactions are dominated by writes
|
||||||
vs. Figure~\ref{fig:write}), as Taler mostly needs to log
|
%(Figure~\ref{fig:read} vs. Figure~\ref{fig:write})
|
||||||
|
, as Taler mostly needs to log
|
||||||
transactions and occasionally needs to read to guard against
|
transactions and occasionally needs to read to guard against
|
||||||
double-spending. Given a database capacity of 2 TB---which should
|
double-spending. Given a database capacity of 2 TB---which should
|
||||||
suffice for more than one year of full transaction logs---the
|
suffice for more than one year of full transaction logs---the
|
||||||
@ -1047,52 +1066,7 @@ payment system.
|
|||||||
|
|
||||||
\section{Discussion}
|
\section{Discussion}
|
||||||
|
|
||||||
Taler was designed for use in a modern social-liberal society and
|
% \subsection{Well-known attacks}
|
||||||
provides a payment system with the following key properties:
|
|
||||||
|
|
||||||
\begin{description}
|
|
||||||
\item[Customer Anonymity]
|
|
||||||
It is impossible for exchanges, merchants and even a global active
|
|
||||||
adversary, to trace the spending behavior of a customer.
|
|
||||||
As a strong form of customer anonymity, it is also infeasible to
|
|
||||||
link a set of transactions to the same (anonymous) customer.
|
|
||||||
%, even when taking aborted transactions into account.
|
|
||||||
|
|
||||||
There is, however, a risk of metadata leakage if a customer
|
|
||||||
acquires coins matching exactly the price quoted by a merchant, or
|
|
||||||
if a customer uses coins issued by multiple exchanges for the same
|
|
||||||
transaction. Hence, our implementation does not allow this.
|
|
||||||
|
|
||||||
\item[Taxability]
|
|
||||||
In many current legal systems, it is the responsibility of the merchant
|
|
||||||
to deduct sales taxes from purchases made by customers, or for workers
|
|
||||||
to pay income taxes for payments received for work.
|
|
||||||
Taler ensures that merchants are easily identifiable and that
|
|
||||||
an audit trail is generated, so that the state can ensure that its
|
|
||||||
taxation regime is obeyed.
|
|
||||||
\item[Verifiability]
|
|
||||||
Taler minimizes the trust necessary between
|
|
||||||
participants. In particular, digital signatures are retained
|
|
||||||
whenever they would play a role in resolving disputes.
|
|
||||||
Additionally, customers cannot defraud anyone, and
|
|
||||||
merchants can only defraud their customers by not
|
|
||||||
delivering on the agreed contract. Neither merchants nor customers
|
|
||||||
are able to commit fraud against the exchange.
|
|
||||||
Only the exchange needs be tightly audited and regulated.
|
|
||||||
\item[No speculation] % It's actually "Specualtion not required"
|
|
||||||
The digital coins are denominated in existing currencies,
|
|
||||||
such as EUR or USD. This avoids exposing citizens to unnecessary risks
|
|
||||||
from currency fluctuations.
|
|
||||||
\item[Low resource consumption]
|
|
||||||
The design minimizes the operating costs and environmental impact of
|
|
||||||
the payment system. It uses few public key operations per
|
|
||||||
transaction and entirely avoids proof-of-work computations.
|
|
||||||
The payment system handles both small and large payments in
|
|
||||||
an efficient and reliable manner.
|
|
||||||
\end{description}
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{Well-known attacks}
|
|
||||||
|
|
||||||
Taler's security is largely equivalent to that of Chaum's original
|
Taler's security is largely equivalent to that of Chaum's original
|
||||||
design without online checks or the cut-and-choose revelation of
|
design without online checks or the cut-and-choose revelation of
|
||||||
@ -1557,3 +1531,49 @@ microdonations, it can always choose to switch to the macropayment
|
|||||||
system with slightly higher transaction costs to remain in business.
|
system with slightly higher transaction costs to remain in business.
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Taler was designed for use in a modern social-liberal society and
|
||||||
|
provides a payment system with the following key properties:
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Customer Anonymity]
|
||||||
|
It is impossible for exchanges, merchants and even a global active
|
||||||
|
adversary, to trace the spending behavior of a customer.
|
||||||
|
As a strong form of customer anonymity, it is also infeasible to
|
||||||
|
link a set of transactions to the same (anonymous) customer.
|
||||||
|
%, even when taking aborted transactions into account.
|
||||||
|
|
||||||
|
There is, however, a risk of metadata leakage if a customer
|
||||||
|
acquires coins matching exactly the price quoted by a merchant, or
|
||||||
|
if a customer uses coins issued by multiple exchanges for the same
|
||||||
|
transaction. Hence, our implementation does not allow this.
|
||||||
|
|
||||||
|
\item[Taxability]
|
||||||
|
In many current legal systems, it is the responsibility of the merchant
|
||||||
|
to deduct sales taxes from purchases made by customers, or for workers
|
||||||
|
to pay income taxes for payments received for work.
|
||||||
|
Taler ensures that merchants are easily identifiable and that
|
||||||
|
an audit trail is generated, so that the state can ensure that its
|
||||||
|
taxation regime is obeyed.
|
||||||
|
\item[Verifiability]
|
||||||
|
Taler minimizes the trust necessary between
|
||||||
|
participants. In particular, digital signatures are retained
|
||||||
|
whenever they would play a role in resolving disputes.
|
||||||
|
Additionally, customers cannot defraud anyone, and
|
||||||
|
merchants can only defraud their customers by not
|
||||||
|
delivering on the agreed contract. Neither merchants nor customers
|
||||||
|
are able to commit fraud against the exchange.
|
||||||
|
Only the exchange needs be tightly audited and regulated.
|
||||||
|
\item[No speculation] % It's actually "Specualtion not required"
|
||||||
|
The digital coins are denominated in existing currencies,
|
||||||
|
such as EUR or USD. This avoids exposing citizens to unnecessary risks
|
||||||
|
from currency fluctuations.
|
||||||
|
\item[Low resource consumption]
|
||||||
|
The design minimizes the operating costs and environmental impact of
|
||||||
|
the payment system. It uses few public key operations per
|
||||||
|
transaction and entirely avoids proof-of-work computations.
|
||||||
|
The payment system handles both small and large payments in
|
||||||
|
an efficient and reliable manner.
|
||||||
|
\end{description}
|
||||||
|
Loading…
Reference in New Issue
Block a user