commit 89c0b5dbfe39a40f1e4d8040db4b012d3ffaae0b
parent 5c8d65bbdc70301914bb4f56f70afe071d1654a8
Author: Pius Loosli <loosp2@bfh.ch>
Date: Sat, 30 Sep 2023 14:25:19 +0200
[doc] big part of definitions and main protocol done
Diffstat:
1 file changed, 54 insertions(+), 11 deletions(-)
diff --git a/doc/flows/main.tex b/doc/flows/main.tex
@@ -23,10 +23,14 @@
\begin{itemize}
\item $m :=$ \textbf{receipt} = smallest structure representing a donation confirmation unit, e.g. receipt for CHF1, CHF2. Equivalent in Taler is "coin".
\item $b :=$ blinding factor
+ \item $statement_{year} :=$ sum of donations(receipts) for one specific year and specific donor
\item $m :=$ receipt
\item $m' :=$ blinded receipt
\item $s :=$ signed receipt
\item $s' :=$ blind signed receipt
+ \item $mi, si, mi'...$ := number receipts/signatures if there are
+ more than one eg. m1,m2...
+ \item $m_{kj}$ or $mi_{kj} \Rightarrow kj$ := specific donau public key used to attribute a specific value to a receipt, e.g. k1 gives the receipt a value of 1, k2 a value of 2...
\end{itemize}
\subsection{receipt}
@@ -47,21 +51,31 @@ The nonce is used to uniquely distinguish receipts of the same value ("create a
\end{enumerate}
\subsection{Step 1: Donor donates to charity}
-The donor downloads the donation unit/receipt public keys for the corresponding year.
+\begin{enumerate}
-To donate 3 Euros the donor has to generate 2 coins (a 1 Euro and 2 Euro coin). The donor generates messages $M_1$ and $M_2$ which include a salted hash of the tax number and a NONCE.
+ \item The donor downloads the donation unit/receipt public keys for the corresponding year from the donau.
-\begin{align}
- M_1 = \langle H(TAXID, SALT), NONCE_1 \rangle \\
- M_2 = \langle H(TAXID, SALT), NONCE_2 \rangle
-\end{align}
+ \item To donate 5 Euros the donor has to generate 2 receipts (a 1 Euro and 4 Euro receipt). The donor generates receipts $m1$ and $m2$ which include a salted hash of the tax number and a NONCE.
-The messages are blinded using the blinding factor b and sent as $M_1'$ and $M_2'$ to the charity in addition to the payment of 3 Euros.
+ \begin{align}
+ m1 = \langle H(TAXID, SALT), NONCE_1 \rangle \\
+ m2 = \langle H(TAXID, SALT), NONCE_2 \rangle
+ \end{align}
-\begin{align}
- M_1' = M_1 \cdot b_1^{e_{1EUR}} \mod n_{1EUR} \\
- M_2' = M_2 \cdot b_2^{e_{2EUR}} \mod n_{2EUR}
-\end{align}
+ \item The donor blinds the receipts using two different blinding factors $b_1, b_2$ and sends them as $m1'$ and $m2'$ to the charity in addition to the payment of 3 Euros.
+
+ \begin{align}
+ m1' = m1 \cdot b_1^{e_{1EUR}} \mod n_{1EUR} \\
+ m2' = m2 \cdot b_2^{e_{4EUR}} \mod n_{4EUR}
+ \end{align}
+
+ \item The Donor signs the receipts using the correct donau public keys. This gives the receipts their respective value.
+ \begin{align}
+ m1'_{k1} = sign_{k1}(m1') \\
+ m2'_{k4} = sign_{k4}(m2')
+ \end{align}
+
+\end{enumerate}
\subsection{Step 2: Charity sends signed receipt to donau}
\begin{enumerate}
@@ -90,9 +104,38 @@ The messages are blinded using the blinding factor b and sent as $M_1'$ and $M_2
\end{enumerate}
\subsection{Step 4: Donor sends receipts to donau, Donau sends back statement}
+\begin{enumerate}
+ \item The donor sends the collection of all $(mi, si, kj)$ of the year to the donau.
+ \item For each $(mi, si, kj)$ The donau...
+
+ \begin{itemize}
+ \item verifies that $kj$ is one of it's currently valid public keys
+ \item verifies if $si$ is a correct signature with the corresponding secret key.
+ \item verifies that the hash of the taxid and the salt is the same as in other receipts
+ \item verifies that the nonce is different from the ones in other receipts
+ \item if all of this is the case, it adds the amount corresponding to the public key to the total donation amount for the year.
+ \end{itemize}
+
+ \item The donau then signs over the amount, year and hashed taxid+salt and sends signature back to the donor
+ \begin{align}
+ sign(total amount, year, hash(taxid, salt))
+ \end{align}
+\end{enumerate}
\subsection{Step 5: Donor sends QR Code to validator (tax office)}
+\begin{enumerate}
+ \item The donor generates a QR code containing the following and sends it to the validator/tax office:
+ \begin{itemize}
+ \item taxid
+ \item salt
+ \item signature received from the donau
+ \item year
+ \item amount for the year
+ \end{itemize}
+
+ \item The validator scans the QR code. The app validates that the signature corresponds to the current donau statement signing key.
+\end{enumerate}
\end{document}