I'm trying to understand (to reproduce in practice) how does blinded tokens work. Currently i'm lacking examples. According to Wiki the blinded signature protocol is the same as ordinary signature protocol. So maybe it is possible to reproduce it with the help of openssl? I want to reproduce by hand all the steps required to sign
1 Answer
Blind signatures can be constructed from a ordinary "textbook" RSA signature by seperating the blinding/unblinding operations from the signature operation. The problem is that we do not use textbook RSA signatures in practice. Rather RSA signatures are padded, which increases the security of the signature but also destroys the ability for blinding.
Some libraries, OpenSSL included, do allow you to do a "raw" RSA signature. The Wikipedia article contains how to do a blind signature with RSA –– I'm not sure how much I can add. Essentially, you choose a random integer $r$, raise it to the power of the public key (integer) $e$ mod integer $N$, and multiply it (mod $N$) by the message you want signed. Instead of submitting the message itself to the signature algorithm, you submit the result of multiplying it by $r^e$. The signtuare algorithm will return a signature $s$. Multiply s by $r^{-1}$ and this will be a valid RSA signature on your message.
-
1$\begingroup$ It's not true that RSA padding makes blinding impossible. You simply blind/unblind the encoded message, as opposed to the original message. $\endgroup$ Commented Apr 13, 2012 at 20:28
-
$\begingroup$ @SquareRootOfTwentyThree It would be said better: RSA padding destroys the ability to use the signing algorithm directly in a blind signature algorithm. $\endgroup$ Commented Apr 13, 2012 at 23:03