Image for post
Image for post
Photo by Scott Graham on Unsplash

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]:

Image for post
Image for post

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:

Image for post
Image for post

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:

Image for post
Image for post

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:

Image for post
Image for post

This works because:

Image for post
Image for post

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 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=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.

Written by

Professor of Cryptography. Serial innovator. Believer in fairness, justice & freedom. EU Citizen. Auld Reekie native. Old World Breaker. New World Creator.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store