[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-donau] branch master updated: [doc] edits
From: |
gnunet |
Subject: |
[taler-donau] branch master updated: [doc] edits |
Date: |
Thu, 19 Oct 2023 17:19:14 +0200 |
This is an automated email from the git hooks/post-receive script.
johannes-casaburi pushed a commit to branch master
in repository donau.
The following commit(s) were added to refs/heads/master by this push:
new e046536 [doc] edits
e046536 is described below
commit e04653626ebded0bc650c4ca6d8f8fe0dc52ac36
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
AuthorDate: Thu Oct 19 17:18:48 2023 +0200
[doc] edits
---
doc/flows/main.tex | 94 +++++++++++++++++++++++++++++++-----------------------
1 file changed, 54 insertions(+), 40 deletions(-)
diff --git a/doc/flows/main.tex b/doc/flows/main.tex
index 2cace6a..69b8768 100644
--- a/doc/flows/main.tex
+++ b/doc/flows/main.tex
@@ -21,27 +21,26 @@
\section{Definitions}
\begin{itemize}
- \item \textbf{Cryptographic Hash Function} $H(m)$ where $m$ is a message.
+ \item \textbf{Cryptographic Hash Function} $H(m) = h$ where $m$ is a message
and $h$ the resulting hash.
- \item \textbf{Signing Function} $Sign(m,k)$ where $m$ is a message and $k$
is the key used to sign the message.
+ \item \textbf{Signing Functions}
+ \begin{itemize}
+ \item $\Sigma(m,k) = \sigma$ where $m$ is a message and $k$ is the
private key used to sign the message (e.g. EdDSA).
- \item \textbf{Blinding Function} $Blind(m,b)$ where $m$ is a message and $b$
is the blinding factor used to blind the message.
+ \item $\overline{\Gamma}(\overline{n},j) = \overline{\gamma}$ where
$\overline{n}$ is a blinded message and $j$ is the private key used to blind
sign the message (e.g. RSA/CS).
+ \end{itemize}
- \item \textbf{Unblinding Function} $Unlind(s,b)$ where $s$ is a blind
signature and $b$ is the blinding factor.
+ \item \textbf{Donation Unit} $DU = (K_x^{pub}, K_x^{priv})$ where $x$ is the
associated value (e.g. 2EUR):
+ Smallest structure representing a donation confirmation unit.
+ Consists of a Public key $K_x^{pub}$ and Private key $K_x^{priv}$.
Equivalent in Taler is "denomination".
- \item \textbf{Signature} $S$
+ \item \textbf{Unique Donor Identifier} $UDI = \langle H(\texttt{TAXID},
\texttt{SALT}), \texttt{NONCE} \rangle$
- \item \textbf{Blind Signature} $S^b$
+ \item \textbf{Blinded Unique Donor Identifier} $BUDI = \langle
\overline{\gamma}, H(K_x^{pub}) \rangle$, blinded to protect the privacy of the
donor
- \item \textbf{Donation Unit} $DU = (K_{pub}, K_{priv})$: Smallest structure
representing a donation confirmation unit. Consists of a Public key $K_{pub}$
and Private key $K_{priv}$. Equivalent in Taler is "denomination".
+ \item \textbf{Donation Receipt} $DR = \langle UDI, \gamma, H(K_x^{pub})
\rangle$ where $\gamma$ is the unblinded signature: Sent to the Donau to get
the donation Statement.
- \item \textbf{Unique Donor Identifier} $UDI = \langle H(TAXID, SALT), NONCE
\rangle$
-
- \item \textbf{Blinded Unique Donor Identifier} $BUDI = \langle S^b_{UDI},
H(K_{pub}) \rangle$, blinded to protect the privacy of the donor
-
- \item \textbf{Donation Receipt} $DR = \langle UDI, S_{UDI}, H(K_{pub})
\rangle$
-
- \item \textbf{Donation Statement} $DS$: Signature to attest the amount
donated in a particular year by a specific donor.
+ \item \textbf{Donation Statement} $DS = \Sigma(\langle
\texttt{AMOUNT}_{Total}, \texttt{YEAR}, H(\texttt{TAXID}, \texttt{SALT})
\rangle, D^{priv})$ where $D^{priv}$ is the private key from the Donau:
Signature to attest the amount donated in a particular year by a specific donor.
\end{itemize}
@@ -50,11 +49,11 @@
\subsection{Step 0: Key generation and Initial setup}
\begin{enumerate}
- \item The Donau generates a public key $D_{pub}$ and private key $D_{priv}$.
+ \item The Donau generates a public key $D^{pub}$ and private key $D^{priv}$.
- \item The Donau generates the donation units ($DU$'s) consisting of
$K_{pub}^x$ and $K_{priv}^x$ where $x$ is the associated value.
+ \item The Donau generates the donation units ($DU$'s) consisting of
$K_x^{pub}$ and $K_x^{priv}$ where $x$ is the associated value.
- \item The charity generates the key pair $(C_{pub}, C_{priv})$.
+ \item The charity generates the key pair $(C^{pub}, C^{priv})$.
\item The Donau administrator registers the public key $C_{pub}$ and sets
the yearly donation limit for the charities.
\end{enumerate}
@@ -62,14 +61,21 @@
\subsection{Step 1: Attest donation}
\subsubsection{Donor donates to charity}
\begin{enumerate}
- \item The donor downloads the $DU$'s public keys $K_{pub}^x$ for the
corresponding year from the Donau.
+ \item The donor downloads the $DU$'s public keys $K_x^{pub}$ for the
corresponding year from the Donau.
- \item The donor generates a $UDI = \langle H(TAXID, SALT), NONCE \rangle$
for every $DU$.
+ \item The donor generates a unique donor identifier $UDI$ for every $DU$.
For every $DU$ the donor generates:
+ \begin{align}
+ UDI_1 &= \langle H(\texttt{TAXID}, \texttt{SALT}), \texttt{NONCE}_1
\rangle \\
+ ... \\
+ UDI_i &= \langle H(\texttt{TAXID}, \texttt{SALT}), \texttt{NONCE}_i
\rangle
+ \end{align}
- \item The donor blinds the $UDI$'s using a \textbf{different} blinding
factor $b$ for every $UDI$.
+ \item The donor blinds the $UDI$'s using a \textbf{different} blinding
factor $b$ for every $UDI_i$.
\begin{align}
- BUDI &= \langle Blind(\langle UDI, K_{pub} \rangle, b), H(K_{pub})
\rangle
+ BUDI_1 &= \langle Blind(UDI_1, K_x^{pub}, b_i), H(K_x^{pub}) \rangle \\
+ ... \\
+ BUDI_i &= \langle Blind(UDI_i, K_x^{pub}, b_i), H(K_x^{pub}) \rangle
\end{align}
\item The donor sends the $BUDI$'s as well as the corresponding payment to the
charity.
@@ -77,41 +83,49 @@
\subsubsection{Charity sends signed $BUDI$'s to Donau}
\begin{enumerate}
- \item The charity verifies that the amount requested (based on the
$H(K_{pub})$) for signing is lower or equal to the effective amount of the
donation.
+ \item The charity verifies that the amount requested (based on the
$H(K_x^{pub})$) for signing is lower or equal to the effective amount of the
donation.
\item The charity signs (using EdDSA) a structure containing all unsigned
$BUDI$'s coming from the donor.
\begin{align}
- S_{C} = Sign(\langle BUDI_1, BDUI_2, .. \rangle, C_{priv})
+ \sigma = \Sigma(\langle BUDI_1, BUDI_2, ..., BUDI_i \rangle, C^{priv})
\end{align}
- \item The charity sends this structure $\langle BUDI_1, BDUI_2, .. \rangle$
and the signature $S_{C}$ to the Donau.
+ \item The charity sends this structure and the signature $\sigma$ to the
Donau.
\end{enumerate}
\subsubsection{Donau sends back the blind signed $UDI$'s to charity}
\begin{enumerate}
\item The Donau:
\begin{enumerate}
- \item verifies the signature $S_{C}$ on the structure.
+ \item verifies the signature $\sigma$ on the structure.
\item increments the current amount of donations received per year of
the charity. This value is increased by the total amount of the $BUDI$'s, if
the increment does not exceed the annual limit.
- \item signs all the $BUDI$'s using the $DU$ private keys $K_{priv}$
matching the public keys $H(K_{pub})$ used in the $BUDI$.
+ \item blind signs all the $BUDI$'s using the $DU$ private keys
$K_x^{priv}$ matching the public keys $H(K^{pub})$ used in the $BUDI$'s.
\begin{align}
- S^b_{K} = Sign(BUDI, K_{priv})
+ \overline{\gamma_1} = \overline{\Gamma}(BUDI_1, K_x^{priv}) \\
+ ... \\
+ \overline{\gamma_i} = \overline{\Gamma}(BUDI_i, K_x^{priv})
\end{align}
- \item sends back the blind signatures ($S^b_{K}$'s) to the charity.
+ \item sends back the blind signatures $\overline{\gamma_1}, ...,
\overline{\gamma_i}$ to the charity.
\end{enumerate}
- \item The charity transmits the blind signatures to the donor.
+ \item The charity forwards the blind signatures to the donor.
- \item The donor unblinds the $BUDI$'s to get the signed $UDI$'s. This
results in the \textbf{Donation Receipt} $DR$ consisting of the $UDI$, the
signature $S_{UDI}$ and the Hash of the $DU$ public key $H(K_{pub})$.
+ \item The donor unblinds the $BUDI$'s to get the signatures $\gamma_1, ...,
\gamma_i$. This results in a collection of \textbf{Donation Receipts} $DR$'s
each consisting of the $UDI$, the signature $\gamma$ and the Hash of the $DU$
public key $H(K_x^{pub})$.
\begin{align}
- S_{UDI} &= Unblind(S^b_{K}, b) \\
- DR &= \langle UDI, S_{UDI}, H(K_{pub}) \rangle
+ \gamma_1 &= Unblind(\overline{\gamma_1}, b_1) \\
+ ... \\
+ \gamma_i &= Unblind(\overline{\gamma_i}, b_i)
+ \end{align}
+ \begin{align}
+ DR_1 &= \langle UDI_1, \gamma_1, H(K_x^{pub}) \rangle \\
+ ... \\
+ DR_i &= \langle UDI_i, \gamma_i, H(K_x^{pub}) \rangle
\end{align}
\end{enumerate}
@@ -120,20 +134,20 @@
\item The donor sends the collection of all $DR$'s, to the Donau. The $DR$'s
are sent manually once a year.
\item For each $DR$ the Donau:
\begin{itemize}
- \item checks that $K_{pub}$ is valid.
+ \item checks that $K_x^{pub}$ is known.
- \item verifies that the signature $S_{UDI}$ is correct using the
corresponding public key $K_{pub}$.
+ \item verifies that the signature $\gamma$ is correct using the
corresponding public key $K_x^{pub}$.
- \item verifies that the hash of the $TAXID$ and the $SALT$ is the same as
in other $DR$'s (With multiple wallets each wallet must simply obtain a
separate $DS$!).
+ \item verifies that the hash of the $\texttt{TAXID}$ and the
$\texttt{SALT}$ is the same as in other $DR$'s (With multiple wallets each
wallet must simply obtain a separate $DS$!).
- \item verifies that the $NONCE$ is unique and was not used before by the
donor for the corresponding year.
+ \item verifies that the $\texttt{NONCE}$ is unique and was not used before
by the donor for the corresponding year.
\end{itemize}
\item The Donau signs over the total amount,
- year and $H(TAXID, SALT)$ and sends the signature and the total amount
so far back to the donor. This results in a final signature called the
\textbf{Donation Statement} $DS$.
+ year and $H(\texttt{TAXID}, \texttt{SALT})$ and sends the signature and
the total amount so far back to the donor. This results in a final signature
called the \textbf{Donation Statement} $DS$.
\begin{align}
- DS = Sign(\langle AMOUNT_{Total}, YEAR, H(TAXID, SALT) \rangle,
D_{priv})
+ DS = \Sigma(\langle \texttt{AMOUNT}_{Total}, \texttt{YEAR},
H(\texttt{TAXID}, \texttt{SALT}) \rangle, D^{priv})
\end{align}
\end{enumerate}
@@ -141,10 +155,10 @@
\begin{enumerate}
\item The donor generates a QR code:
\begin{align}
- QR = \langle TAXID, SALT, DS, YEAR, AMOUNT \rangle %version?
+ \texttt{QR} = \langle \texttt{TAXID}, \texttt{SALT}, \texttt{DS},
\texttt{YEAR}, \texttt{AMOUNT} \rangle
\end{align}
- \item The validator scans the QR code and verifies the signature in the $DS$.
+ \item The validator scans the QR code and verifies the signature $DS$.
\end{enumerate}
\end{document}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-donau] branch master updated: [doc] edits,
gnunet <=