gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]