exchange

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

commit 5f26104c6f2da4e4c978a2d6e5384da32f8eb169
parent 4cbde3dca6623ea2d1cd331c7929c36995e73a87
Author: Emmanuel Benoist <emmanuel.benoist@bfh.ch>
Date:   Mon,  7 Jul 2025 17:55:35 +0200

First version for the Clause Schnorr scheme

Diffstat:
Mdoc/cs/article/blind-signatures.tex | 72+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 59 insertions(+), 13 deletions(-)

diff --git a/doc/cs/article/blind-signatures.tex b/doc/cs/article/blind-signatures.tex @@ -1,9 +1,10 @@ \documentclass{article} \usepackage{amssymb} +\usepackage{amsmath} \title{Blind signatures schemes for enhancing the privacy of payees} -\author{Emmanuel Benoist, Christian Grothoff, \dots} +\author{Emmanuel Benoist, Christian Grothoff, Gian Demarmels, Lucien Heuzeveldt \dots} \begin{document} \maketitle @@ -133,52 +134,97 @@ Eliptic curves cryptography offers the possibility to have much smaller keys. It 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$. -\[Q = q.G\] +\[Q := q.G\] + +The eliptic curve algorithms presentation is based on \cite{desmarmelsHeuzeveldt} which was based on \cite{cryptoeprint:2019:877}. \paragraph{Signature with eliptic curve cryptography} In eliptic curves one can use signature with the Eliptic Curve Digital Signature Algorithm (ECDSA). To sign a message $m$, this scheme uses a cryptographic hash function $h()$ (for instance SHA-256). -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=(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$. +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}$. The signature is $(r,s)$. \subparagraph{Verification} -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$. +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$. -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')$. +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')$. -The signature is valid if and only if $r\equiv x_1' mod n$. +The signature is valid if and only if $r\equiv x_1'\mod{n}$. \paragraph{Blind signature} % Fixme Blind signatures Citation We first present the Blind Schnorr Signature Scheme which is considered broken. We present the fix in the next paragraph. -We use for this scheme, the same key pair for signing $(q,Q)$ where $Q = q.G$. +% FIXME definir p comme le prime du groupe + +We use for this scheme, the same key pair for signing $(x,P)$ where $P := x.G$. -Before receiving the message, the signer generates a first random number $r$ (out of $\mathbb{Z}_n$) that will be a private key. The signer generates out of it the corresponding public key $R=rG$. The point $R$ is sent to the user. +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. -The user choses then two random values $\alpha$ and $\beta$ (also out of $\mathbb{Z}_n$). They generate a blinded nonce based on $\alpha$, $\beta$ and the two public keys sent by the signer $R$ and $Q$. +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$. -\[R' = R + \alpha G+ \beta Q\] +\[R' := R + \alpha G+ \beta Q\] The user computes a hash of the message (concatenated with the commitment $R'$). -\[ e = h(m\Vert R') \] +\[ e := h(m\Vert R') \] + +This hash is then blinded $e':= e+\beta \mod{p}$. And $e'$ is sent to the signer. + +The signer signes the challenge $e'$ with its private key $x$. + +\[s':=r + x e'\mod{p}\] + +The user can then unblind this signature to get a valid signature for the original message. + +User computes $s$ out of $s'$. + +\[ s:=s'+\alpha\mod{p}\] -This hash is then blinded $e'= e+\beta ~mod~n$. And $e'$ is signed to the signer. +The signature of the message is $(e,s)$. +\subparagraph{Verification of the signature} +Anyone knowing $(e,s)$ and the public key $P$ can compute. +\[R' := sG - eP\] + +and can check if $e$ is equal to $h(m\Vert R')$. + +This all works because: + +\[R'= sG -eP \\ + R'= sG - exG\\ + R' = (s - ex)G\\ + R' = (s' -s' +s -ex)G\\ + R' = (r+e'x -s' +s -ex)G ~~\text{because } s'=r+e'x\\ + R' = rG +(s-s')G +(e'-e)xG\\ + R' = R + \alpha G -\beta X ~~\text{because} \alpha=s-s' \text{ and } \beta=e'-e\\ + R'=R+\alpha G + \beta P\] + +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. \paragraph{Clause-Schnorr signature scheme} In this paragraph, we present the Clause-Schnorr improved signature scheme presented in \cite{cryptoeprint:2019:877}. - +The Clause Blind Schnorr Signature Scheme is a modification of the Blind Schnorr Signature Scheme for which the ROS problem is harder to solve. +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$. +The user generates the blinding factors twice $\alpha_0, \alpha_1, \beta_0, \beta_1 \leftarrow random \in \mathbb{Z}_p$. + +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$. + +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$. +The User receives $s, b$ and can unblind the signature to receive his signature $\sigma := \langle R'_b, s'_b \rangle$. +The verification algorithm remains the same for Clause Blind Schnorr Signature Scheme. + \section{Post-Quantum solution for blind signature}\label{sec:pq} +\section{Design of the application depending on the signature scheme} + \section{Comparisons of the different models}\label{sec:comparison}