# Blind Signatures

The work of David Chaum on privacy showed the world that it could build a world of trust, but preserve privacy. On the back of the work around the ground-breaking RSA method, in 1983, David outlined [here][1]:

The paper outlined a blinded signature, and Bob can sign for a message, without knowing what the message is. His method used RSA encryption, and where Bob creates his RSA keys in the usual way, and where he selects two prime numbers (*p* and *q*) and an encryption key value (*e*=63,535) and then computes:

Now Alice has a message (*m*) that she wants Bob to blind sign. She first generates a random value (*k*) and will then compute:

She sends this to Bob, and who uses his private key (d) to compute:

Bob sends this back, and Alice computes the true signature from Bob:

This is the signature that Bob would have signed the message with and as if Bob had used his private key:

This works because:

Here is an example:

The coding is here:

import random

import libnumfrom Crypto.Util.number import getPrime

from Crypto.Random import get_random_bytesimport sysprimebits=32

if (len(sys.argv)>1):

primebits=int(sys.argv[1])if (primebits>128): primebits=128q = getPrime(primebits, randfunc=get_random_bytes)

p = getPrime(primebits, randfunc=get_random_bytes)

n=p*q

PHI=(p-1)*(q-1)

e=65537d=libnum.invmod(e,PHI)

print ("e=",e)

print ("d=",d)

print ("n=",n)k=random.randint(1,n-1)m=10

mstar = (m*pow(k,e,n)) % n

sstar = (pow(mstar,d,n)) % n

s = (pow(k,-1,n)*sstar) % nprint ("\nk: ",k)

print ("m*: ",mstar)

print ("s*: ",sstar)

print ("\nBob signing (Blinded): ",s)s= pow(m,d,n)

print ("Bob's signing of message: ",s)

A sample run is:

e= 65537

d= 2124181929009379037

n= 12366750569495532989k: 5848566409051754306

m*: 10054324083273091146

s*: 12242772676557453579Bob signing (Blinded): 2010459568356223927

Bob's signing: 2010459568356223927

The coding is here:

## Conclusions

And so David showed us a new way of transacting, and in a trusted way. At the core of his work was the rights to privacy. We need to follow David’s path in the future and build a more trusted digital work, and which has increased levels of trust.

## Reference

[1] Chaum, D. (1983). Blind signatures for untraceable payments. In Advances in cryptology (pp. 199–203). Springer, Boston, MA.