Minor fixes and adding some FIXMEs about the auditor
This commit is contained in:
parent
738d0d008e
commit
de55e59207
@ -583,6 +583,11 @@ protocol messages; denomination keys are used for blind-signing coins.
|
|||||||
The exchange's long-term offline key is assumed to be known to both
|
The exchange's long-term offline key is assumed to be known to both
|
||||||
customers and merchants and is certified by the auditors.
|
customers and merchants and is certified by the auditors.
|
||||||
|
|
||||||
|
We avoid asking either customers or merchants to make trust desissions
|
||||||
|
about individual exchanges. Instead, they need only select the auditors.
|
||||||
|
Auditors must sign all the exchange's keys including, the individual
|
||||||
|
denomination keys.
|
||||||
|
|
||||||
As we are dealing with financial transactions, we explicitly describe
|
As we are dealing with financial transactions, we explicitly describe
|
||||||
whenever entities need to safely commit data to persistent storage.
|
whenever entities need to safely commit data to persistent storage.
|
||||||
As long as those commitments persist, the protocol can be safely
|
As long as those commitments persist, the protocol can be safely
|
||||||
@ -597,14 +602,20 @@ Merchants may discard information once payments from the exchange have
|
|||||||
been received, assuming the records are also no longer needed for tax
|
been received, assuming the records are also no longer needed for tax
|
||||||
purposes. The exchange's bank transfers dealing in traditional currency
|
purposes. The exchange's bank transfers dealing in traditional currency
|
||||||
are expected to be recorded for tax authorities to ensure taxability.
|
are expected to be recorded for tax authorities to ensure taxability.
|
||||||
|
% FIXME: Auditor?
|
||||||
|
|
||||||
|
We use RSA for denomination keys and EdDSA over some eliptic curve
|
||||||
|
$\mathbb{E}$ for all other keys. Let $G$ denote the generator of
|
||||||
|
our elliptic curve $\mathbb{E}$.
|
||||||
|
|
||||||
|
|
||||||
\subsection{Withdrawal}
|
\subsection{Withdrawal}
|
||||||
|
|
||||||
Let $G$ be the generator of an elliptic curve. To withdraw anonymous
|
To withdraw anonymous digital coins, the customer first selects an
|
||||||
digital coins, the customer first identifies a exchange with a
|
exchange and one of its public denomination public keys $K_p$ whose
|
||||||
denomination public-private key pair $K := (K_s, K_p)$ corresponding
|
value $K_v$ corresponds to an amount the customer wishes to withdraw.
|
||||||
to a denomination the customer would like to withdraw, and then
|
We let $K_s$ denote the exchange's private key corresponding to $K_p$.
|
||||||
performs the following interaction with the exchange:
|
Now the customer carries out the following interaction with the exchange:
|
||||||
|
|
||||||
% FIXME: We say withdrawal key in this document, but say reserve key in
|
% FIXME: We say withdrawal key in this document, but say reserve key in
|
||||||
% others, so probably withdrawal key should be renamed to reserve key.
|
% others, so probably withdrawal key should be renamed to reserve key.
|
||||||
@ -621,7 +632,7 @@ performs 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 The customer transfers an amount of money corresponding to at least $K_p$ to the exchange, with $W_p$ in the subject line of the transaction.
|
\item The customer transfers an amount of money corresponding to at least $K_v$ to the exchange, with $W_p$ in the subject line of the transaction.
|
||||||
\item The exchange receives the transaction and credits the $W_p$ reserve with the respective amount in its database.
|
\item The exchange receives the transaction and credits the $W_p$ reserve with the respective amount in its database.
|
||||||
\item The customer sends $S_W(B_b(C_p))$ to the exchange to request withdrawal of $C$; here, $B_b$ denotes Chaum-style blinding with blinding factor $b$.
|
\item The customer sends $S_W(B_b(C_p))$ to the exchange to request withdrawal of $C$; here, $B_b$ denotes Chaum-style blinding with blinding factor $b$.
|
||||||
\item The exchange checks if the same withdrawal request was issued before; in this case, it sends $S_{K}(B_b(C_p))$ to the customer.\footnote{$S_K$
|
\item The exchange checks if the same withdrawal request was issued before; in this case, it sends $S_{K}(B_b(C_p))$ to the customer.\footnote{$S_K$
|
||||||
@ -636,6 +647,7 @@ performs the following interaction with the exchange:
|
|||||||
If the guards for the transaction fail, the exchange sends a descriptive error back to the customer,
|
If the guards for the transaction fail, the exchange sends a descriptive error back to the customer,
|
||||||
with proof that it operated correctly.
|
with proof that it operated correctly.
|
||||||
Assuming the signature was valid, this would involve showing the transaction history for the reserve.
|
Assuming the signature was valid, this would involve showing the transaction history for the reserve.
|
||||||
|
% FIXME: Is it really the whole history?
|
||||||
\item The customer computes and verifies the unblinded signature $S_K(C_p) = U_b(S_K(B_b(C_p)))$.
|
\item The customer computes and verifies the unblinded signature $S_K(C_p) = U_b(S_K(B_b(C_p)))$.
|
||||||
The customer saves the coin $\langle S_K(C_p), c_s \rangle$ to local wallet on disk.
|
The customer saves the coin $\langle S_K(C_p), c_s \rangle$ to local wallet on disk.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
@ -644,9 +656,12 @@ performs the following interaction with the exchange:
|
|||||||
\subsection{Exact and partial spending}
|
\subsection{Exact and partial spending}
|
||||||
|
|
||||||
A customer can spend coins at a merchant, under the condition that the
|
A customer can spend coins at a merchant, under the condition that the
|
||||||
merchant trusts the specific exchange that issued the coin. Merchants are
|
merchant trusts the exchange that issued the coin.
|
||||||
identified by their key $M := (m_s, M_p)$ where the public key $M_p$
|
% FIXME: Auditor here?
|
||||||
must be known to the customer a priori.
|
Merchants are identified by their public key $M_p = m_s G$ which the
|
||||||
|
customer's wallet learns through the merchant's webpage, which itself
|
||||||
|
must be authenticated with X.509c.
|
||||||
|
% FIXME: Is this correct?
|
||||||
|
|
||||||
We now describe the protocol between the customer, merchant, and exchange
|
We now describe the protocol between the customer, merchant, and exchange
|
||||||
for a transaction in which the customer spends a coin $C := (c_s, C_p)$
|
for a transaction in which the customer spends a coin $C := (c_s, C_p)$
|
||||||
@ -676,8 +691,8 @@ with signature $\widetilde{C} := S_K(C_p)$
|
|||||||
S_c(\widetilde{C}, m, f, H(a), H(p,r), M_p)$
|
S_c(\widetilde{C}, m, f, H(a), H(p,r), M_p)$
|
||||||
and sends $\langle \mathcal{D}, D_j\rangle$ to the merchant,
|
and sends $\langle \mathcal{D}, D_j\rangle$ to the merchant,
|
||||||
where $D_j$ is the exchange which signed $K$.
|
where $D_j$ is the exchange which signed $K$.
|
||||||
\item The merchant gives $(\mathcal{D}, p, r)$ to the exchange, revealing $p$
|
\item The merchant gives $(\mathcal{D}, p, r)$ to the exchange, thereby
|
||||||
only to the exchange.
|
revealing $p$ only to the exchange.
|
||||||
\item The exchange validates $\mathcal{D}$ and checks for double spending.
|
\item 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
|
||||||
|
Loading…
Reference in New Issue
Block a user