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…

Photo by Scott Graham on Unsplash

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 libnum
from Crypto.Util.number import getPrime
from Crypto.Random import get_random_bytes
import sys
primebits=32

if (len(sys.argv)>1):
primebits=int(sys.argv[1])
if (primebits>128): primebits=128
q = getPrime(primebits, randfunc=get_random_bytes)
p = getPrime(primebits, randfunc=get_random_bytes)
n=p*q
PHI=(p-1)*(q-1)
e=65537
d=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) % n
print ("\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= 12366750569495532989
k:  5848566409051754306
m*: 10054324083273091146
s*: 12242772676557453579
Bob 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.