exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

blind-signatures.tex (16891B)


      1 \documentclass{article}
      2 \usepackage{amssymb}
      3 \usepackage{amsmath}
      4 
      5 \title{Blind signatures schemes for enhancing the privacy of payees}
      6 
      7 \author{Emmanuel Benoist, Christian Grothoff, Gian Demarmels, Lucien Heuzeveldt \dots}
      8 \begin{document}
      9 
     10 \maketitle
     11 
     12 \section{Introduction}
     13 
     14 This article compares several blind signature techniques and their
     15 applications in the issuing of privacy preserving payments.
     16 
     17 The blind signature presented by Chaum \cite{chaum1983blind} corresponds to the possibility for the owner of a key pair (private / public) to sign an element without knowing the precise content of this element. The main use of this type of signature is for someone (other than the person holding the key pair) to sign a token which will then be anonymised. This enables the creation of anonymous tokens that can be used to prove authorisation independently of any authentication that takes place first.
     18 
     19 
     20 The main purpose of blind signing is to preserve user privacy. Whereas
     21 the usual signature is used to certify an element. Blind signing
     22 enables an element to be certified without any knowledge of it. From
     23 the outset, this signature system has been designed to enable e-Cash \cite{chaum1990untraceable} to be used in a variety of ways. In this article, we will show how different blind signature systems can be used to enable electronic payments that protect the privacy of payers while being totally transparent with regard to the money received by merchants. This enables a payment system that is both compatible with regulations against money laundering or the financing of terrorism and at the same time protects the privacy of citizens.
     24 
     25 
     26 
     27 \subsection{Privacy in existing Payment Systems}
     28 \paragraph{Traditional bank payment systems}
     29 The traditional banking system allows two main types of payment. On the one hand, we have payments by bank transfer, debit card or cheque. In this case, the money is transferred from one bank account to another and the two banks know the two parties involved (the one sending and the one receiving the money). The system can be more complicated with an intermediary such as SWIFT, which is used to clear transactions. At least the two banks know all the information about the transaction: origin, destination, amount, date and time of the transaction.
     30 
     31 On the other hand, we have credit card payments. In this case, an intermediary (the credit card issuer) pays the merchant directly and invoices the customer at a later date. In this case, the customer's bank, if it is not the credit card issuer, only sees one global payment. In this way, the credit card issuer knows all the expenses of each of its customers: origin, destination, amount, date and time of the transaction. Income paid by credit card is also known to the merchant's bank.
     32 
     33 The case of NSA spying on financial transactions \cite{poitras2013nsa}
     34 shows that the data gathered in the SWIFT system or the credit card
     35 institutions are very attractive to the intelligence services.
     36 
     37 \paragraph{Blockchains}
     38 Cryptocurrencies based on blockchain use a list of transctions that is basically shared amoung all the full nodes replicating the block chain. The most successful systems are Bitcoin and Ethereum \cite{}. For those two systems, the list of the transactions for all the actors are public. Hence, there is no intrinsec privacy in both systems. One can use tumblering servers \cite{} to hide the provenance or destination of funds. But even this has been exploited by researchers \cite{}.
     39 
     40 There exist systems based on a blockchain that can provide a pretty good privacy. For instance Monero \cite{} provides a system based on ring signature, where the provenance of money is hidden in a group of transactions and can not be differenciated. Making it practically not doable to follow the flow of money in this ledger. Monero is therefore offering anonymity for the payer and the payee. This feature has made it a mean of payment for darknet transactions \cite{}.
     41 
     42 
     43 
     44 \paragraph{Cash}
     45 Payment in cash can hardly be scrutinized. There is no way to see who did by what at which amount if it is payed in cash. But authorities try to limit the ability to use cash for illegal purpose. They have created anti-money laundering (AML) regulations for limiting the possibility of cash to interact with the banking system.
     46 
     47 In some countries, there are limits on how much cash someone can withdraw from their bank account  \cite{}. Most countries also limit the amount that can be deposited into a bank account \cite{}. If the amount exceeds a threshold, the bank must investigate the origin of the money and verify its validity.
     48 
     49 Cash is protecting the privacy of the actors (payers and payee) and is used in illegal transactions. Therefore, connections between cash and the traditional banking systems are monitored tightly. 
     50 
     51 \subsection{GNU Taler privacy model}
     52 GNU Taler provides privacy to the payer and no privacy for the payee. This way, people can freely spend their money. But in the same time, there is no way to use this system for the financing of crime of tax evasion.
     53 
     54 \paragraph{Technical solutions}
     55 Taler has been developed with a privacy by design idea. This means that the technical solution used to mint coins is basically not authorizing to access data from the different payers.
     56 
     57 The GNU Taler system is based on the blind signature schemes. In a blind signature scheme (originally the one of Chaum, now Clause-Schnorr or XXXX) the authority signing does not know the information signed, just know that the user asking for the signature has the right to do so.
     58 
     59 In the case of the payment, a user generates a proto-coin (basically a pair of private and public keys plus a ``denomination''). A denomination is one of the types of coins available (1 cent, 2 cents, 4 cents, 8 cents, \dots). This proto-coin is blinded with a random value. Then the central authority responsible for issuing the coins (called an ``Exchange'') signs the proto-coin with the private key corresponding to the right denomination. It verifies that the user did transfer that amount of money. But since the signature was blind, the exchange has no way to know which coin it signed. Once unblinded, the coin is totally anonymous.
     60 
     61 The user can spend the coin as it wants. The merchant will send the coin to the exchange and get its money from the exchange. In this case, the exchange knows exactly to whom the money goes. It also verifies that each signed coin is just spent once. So no double spent is possible. But even though, it has no way to know which user issued that coin initially.
     62 
     63 \paragraph{Organisational solutions}
     64 
     65 Privacy of payers is given by the blind signature, but it should not be used for money laundering, financing terrorism or any illegal activities.
     66 
     67 In order to prohibit illegal activities, some organisational hurdles must be put in place. It depends on the legal framework where the exchange operates. Some exchanges may restrict the amount of money that one physical person, that is known using a Know Your Customer (KYC) procedure, may withdraw in a certain period of time. The limitation can be done for each bank account, in a way to let the bank do the KYC. Some limitations on the amount a merchant can deposit may also be done.
     68 
     69 
     70 \subsection{Comparison of GNU Taler and traditional payment means}
     71 
     72 \begin{table}[ht]
     73   \centering
     74   \begin{tabular}{|l|c|c|c|c|}
     75     \hline
     76     &\multicolumn{2}{c|}{Privacy}&\multicolumn{2}{c|}{Mass surveillance}\\
     77     &Consumer&Merchant&National&Global\\
     78     \hline
     79     Wire transfer&No&No&Yes&No\\
     80     Credit Cards&No&No&Yes&Yes\\
     81     Bitcoin and Ethereum& No &No\footnote{requires an additional step: tumblering}&complex\footnote{Surveillance of activities on bitcoin and ethereum blockchain are not possible for poor and small states.}&Yes\\
     82     Monero&Yes&Yes&No&No\footnote{Evidences are lacking that a big state is able to deanonymize Monero transactions}\\
     83     GNU Taler&Yes&No&Yes&No\\
     84     \hline
     85   \end{tabular}
     86   \caption{Privacy of the different payment means}
     87   \label{tab:privacy}
     88 \end{table}
     89 
     90 Table~\ref{tab:privacy} presents the features of the different payment systems regarding on one side the privacy, of customers or merchants, and on one other side, the possibility for law enforcement agency or global surveillance actors to monitor transactions.
     91 
     92 GNU Taler offers privacy where it is needed and no privacy where it is not needed. Customers have the possibility to spend their money without being seen. Global actors do not have access to any data of the different actors in the market. They can not see any transaction done by local customers or even merchants. But on the same time, GNU Taler allow local law enforcement agencies to fight the financing of criminal activities.
     93 
     94 \subsection{Structure of this paper}
     95 The blind signature is the cornerstone of the GNU Taler system, and there are different ways to implement it. We will present three ways to implement the blind signature.
     96 
     97 % FIXME : write the exact size of the keys for Clause Schnorr.
     98 In section~\ref{sec:rsa} we will present the blind signature for RSA designed by Chaum. Then in section~\ref{sec:cs} we will present the Clause-Schnorr blind signature that uses eliptic curve cryptography. The main advantage of eliptic curves cryptography is the size of keys and signatures. Whereas RSA uses 2048 or 4096 long keys, Clause-Schnorr will use XXX bit long keys. 
     99 
    100 The next big revolution in cryptography could be Quantum computers. If quantum computers were to work properly, they could break existing cryptography protocols (like RSA or Clause-Schnorr). So, even if there is not any evidence yet of a working quantum computer that would have the capabilities to break large keys, one should prepare for such an event. In section~\ref{sec:pq} we present the solution for post quantum cryptography we have designed for GNU Taler.
    101 
    102 In the last section (Section~\ref{sec:comparison}) we compare the advantages and disadvantages of each of those blind signature schemes for our purpose of blindly sign coins in the GNU Taler framework. We see how fast they run and also how much memory or how large the databases must be.
    103 
    104 \section{RSA blind signature}\label{sec:rsa}
    105 
    106 RSA blind signature scheme has been presented by Chaum \cite{chaum1983blind}. The principle is derived from RSA.
    107 
    108 In our example, a requester sends a blinded message to the signer, and the signer signs it. The requester can unblind the message and provide a valid signature for it.
    109 
    110 The signer has a pair of RSA keys RSA public key: $(n,e)$ and a RSA private key: $d$. Let $m$ be the message to be signed and $r$ be a random number called the blinding factor, such that $gcd(r,n)=1$.
    111 
    112 The requester wants to let the user sign $m$ with their private key $(n,e)$ without knowning the content of the message $m$.
    113 
    114 The requester generates another message $m'$, where $m'=m.r^e~mod n$. Then they send this message to the signer.
    115 
    116 The signer computes $s'=(m')^d~mod n$ and sends it back to the requester.
    117 
    118 The requester generates the signature $s$ our of $s'$ using $s=s'.r^{-1}~mod n$.
    119 
    120 The requester has now with $m$ and $s$ a message and its valid signature.
    121 
    122 \[  s=(m.r^e)^d.r^{-1}=m^d.r^{ed}.r-1\equiv m^d~mod n\]
    123 
    124 % The scheme is unfortunately not EUF secure, which means, that given a public key $(n,e)$, it is possible to construct a message with its valid signature.
    125 
    126 % The solution is to use a full domain hash function (FDH). A FDH is a cryptographic hash function $h()$ that transforms any message into an image having exactly the same length as the size of the RSA modulo $m$.
    127 
    128 % The hash function is simply used on m before the signature and the verification
    129 
    130 To be secure, a RSA key needs to be at least 2048 or even better 4096 bit large \cite{}. Signature is also the same size. 
    131 
    132 \section{Clause Schnorr blind signature}\label{sec:cs}
    133 Eliptic curves cryptography offers the possibility to have much smaller keys. It is however also possible to build a blind signature scheme based on eliptic curves.
    134 
    135 Eliptic curve cryptography bases on the multiplication of a point on the curve G (a generator of the curve with prime order $n$) by a scalar (the private key $q$ ). The result is the public key $Q$.
    136 
    137 \[Q := q.G\]
    138 
    139 The eliptic curve algorithms presentation is based on \cite{desmarmelsHeuzeveldt} which was based on \cite{cryptoeprint:2019:877}.
    140 
    141 \paragraph{Signature with eliptic curve cryptography}
    142 In eliptic curves one can use signature with the Eliptic Curve Digital Signature Algorithm (ECDSA).
    143 
    144 To sign a message $m$, this scheme uses a cryptographic hash function $h()$ (for instance SHA-256).
    145 
    146 The signer first needs to hash the message $m$, $e:=h(m)$. Then the signer picks a random nonce $a$ and computes the corresponding point on the curve $A:=aG$ where $A=(x_1,y_1)$. The signer computes $r:=x_1~mod~n$ (if $r=0$, their pick another nonce $a$).Then one can compute the value $s:=a^{-1}(e+qr)\mod{n}$.
    147 
    148 The signature is $(r,s)$.
    149 \subparagraph{Verification}
    150 The verifyer of the signature first computes the hash of the message $e:=h(m)$. Then $w:=s^{-1}$ which is the inverse of the signature $s$.
    151 
    152 Then, the verifyer computes $u_1:=ew\mod{n}$ and $u_2:=rw\mod{n}$. They can generate a point in the curve based on the generator $G$ and the public key of the signer $Q$: $R'=u_1G+u_2Q=(x_1',y_1')$.
    153 
    154 The signature is valid if and only if $r\equiv x_1'\mod{n}$.
    155 
    156 \paragraph{Blind signature}
    157 % Fixme Blind signatures Citation
    158 We first present the Blind Schnorr Signature Scheme which is considered broken. We present the fix in the next paragraph.
    159 
    160 % FIXME definir p comme le prime du groupe
    161 
    162 We use for this scheme, the same key pair for signing $(x,P)$ where $P := x.G$.
    163 
    164 Before receiving the message, the signer generates a first random number $r$ (out of $\mathbb{Z}_p$) that will be a session private key. The signer generates out of it the corresponding public key $R=rG$. The point $R$ is sent to the user.
    165 
    166 The user choses then two random values $\alpha$ and $\beta$ (also out of $\mathbb{Z}_p$). They generate a blinded nonce based on $\alpha$, $\beta$ and the two public keys sent by the signer $R$ and $Q$.
    167 
    168 \[R' := R + \alpha G+ \beta Q\]
    169 
    170 The user computes a hash of the message (concatenated with the commitment $R'$).
    171 
    172 \[ e := h(m\Vert R') \]
    173 
    174 This hash is then blinded $e':= e+\beta \mod{p}$. And $e'$ is sent to the signer.
    175 
    176 The signer signes the challenge $e'$ with its private key $x$.
    177 
    178 \[s':=r + x e'\mod{p}\]
    179 
    180 The user can then unblind this signature to get a valid signature for the original message.
    181 
    182 User computes $s$ out of $s'$.
    183 
    184 \[ s:=s'+\alpha\mod{p}\]
    185 
    186 The signature of the message is $(e,s)$.
    187 
    188 \subparagraph{Verification of the signature}
    189 
    190 Anyone knowing $(e,s)$ and the public key $P$ can compute.
    191 
    192 \[R' := sG - eP\]
    193 
    194 and can check if $e$ is equal to $h(m\Vert R')$.
    195 
    196 This all works because:
    197 
    198 \[R'= sG -eP \\
    199   R'= sG - exG\\
    200   R' = (s - ex)G\\
    201   R' = (s' -s' +s -ex)G\\
    202   R' = (r+e'x -s' +s -ex)G ~~\text{because } s'=r+e'x\\
    203   R' = rG +(s-s')G +(e'-e)xG\\
    204   R' = R + \alpha G -\beta X ~~\text{because} \alpha=s-s' \text{ and } \beta=e'-e\\
    205   R'=R+\alpha G + \beta P\] 
    206 
    207 Unfortunately, this scheme is not safe against the ROS problem and need to be extended. This scheme was proven in \cite{cryptoeprint:2019:877} that solving the ROS problem breaks the unforgeability property of blind Schnorr signatures by finding $l+1$ valid signatures out of $l$ signing operations.
    208 
    209 \paragraph{Clause-Schnorr signature scheme}
    210 In this paragraph, we present the Clause-Schnorr improved signature scheme presented in \cite{cryptoeprint:2019:877}. 
    211 
    212 The Clause Blind Schnorr Signature Scheme is a modification of the Blind Schnorr Signature Scheme for which the ROS problem is harder to solve.
    213 The Clause Blind Schnorr Signature Scheme does this by choosing two random values $r_0, r_1$ and calculating $R_0 := r_0G; R_1 := r_1G$.
    214 The user generates the blinding factors twice $\alpha_0, \alpha_1, \beta_0, \beta_1 \leftarrow random \in \mathbb{Z}_p$.
    215 
    216 The user then calculates the challenges as before $c_0' := H(R_0',m); c_0 := c_0' + \beta_0 \mod p$ and $c_1' := H(R_1',m); c_1 := c_1' + \beta_1 \mod p$.
    217 
    218 After the signer receives the two challenges $c_0$ and $c_1$, the signer randomly chooses $b \leftarrow random \{0, 1\}$ and calculates only $s_b$ as in $s := r_b+c_bx \mod p$.
    219 The User receives $s, b$ and can unblind the signature to receive his signature $\sigma := \langle R'_b, s'_b \rangle$.
    220 The verification algorithm remains the same for Clause Blind Schnorr Signature Scheme.
    221 
    222 
    223 
    224 \section{Post-Quantum solution for blind signature}\label{sec:pq}
    225 
    226 \section{Design of the application depending on the signature scheme}
    227 
    228 \section{Comparisons of the different models}\label{sec:comparison}
    229 
    230 
    231 \section{Conclusion}
    232 
    233 
    234 \nocite{chaum2021issue}
    235 
    236 \bibliographystyle{abbrv}
    237 
    238 \bibliography{biblio-blind-signatures}
    239 \end{document}