donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

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:
Mdoc/flows/main.tex | 65++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
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}