Rabin signature algorithm
In cryptography, the Rabin signature algorithm is a method of digital signature originally proposed by Michael O. Rabin in 1978. The Rabin signature algorithm was one of the first digital signature schemes proposed. By introducing the use of hashing as an essential step in signing, it was the first design to meet what is now the modern standard of security against forgery, existential unforgeability under chosen-message attack, assuming suitably scaled parameters. Rabin signatures resemble RSA signatures with 'exponent ', but this leads to qualitative differences that enable more efficient implementation and a security guarantee relative to the difficulty of integer factorization, which has not been proven for RSA. However, Rabin signatures have seen relatively little use or standardization outside IEEE P1363 in comparison to RSA signature schemes such as RSASSA-PKCS1-v1_5 and RSASSA-PSS. Definition 
The Rabin signature scheme is parametrized by a randomized hash function  of a message  and -bit randomization string . Public key
 A public key is a pair of integers  with  and  odd. Signature
 A signature on a message  is a pair  of a -bit string  and an integer  such that 
 Private key
 The private key for a public key  is the secret odd prime factorization  of , chosen uniformly at random from some space of large primes. Let , , and . To make a signature on a message , the signer picks a -bit string  uniformly at random, and computes . If  is a quadratic nonresidue modulo , then the signer throws away  and tries again. Otherwise, the signer computes  using a standard algorithm for computing square roots modulo a prime—picking  makes it easiest. Square roots are not unique, and different variants of the signature scheme make different choices of square root; in any case, the signer must ensure not to reveal two different roots for the same hash . The signer then uses the Chinese remainder theorem to solve the system  for . The signer finally reveals . Correctness of the signing procedure follows by evaluating  modulo  and  with  as constructed. For example, in the simple case where ,  is simply a square root of  modulo . The number of trials for  is geometrically distributed with expectation around 4, because about 1/4 of all integers are quadratic residues modulo . Security 
Security against any adversary defined generically in terms of a hash function  (i.e., security in the random oracle model) follows from the difficulty of factoring :
Any such adversary with high probability of success at forgery can, with nearly as high probability, find two distinct square roots  and  of a random integer  modulo . If  then  is a nontrivial factor of , since  so  but . Formalizing the security in modern terms requires filling in some additional details, such as the codomain of ; if we set a standard size  for the prime factors, , then we might specify . Randomization of the hash function was introduced to allow the signer to find a quadratic residue, but randomized hashing for signatures later became relevant in its own right for tighter security theorems and resilience to collision attacks on fixed hash functions. Variants 
The quantity  in the public key adds no security, since any algorithm to solve congruences  for  given  and  can be trivially used as a subroutine in an algorithm to compute square roots modulo  and vice versa, so implementations can safely set  for simplicity;  was discarded altogether in treatments after the initial proposal. The Rabin signature scheme was later tweaked by Williams in 1980 to choose  and , and replace a square root  by a tweaked square root , with  and , so that a signature instead satisfies

which allows the signer to create a signature in a single trial without sacrificing security. This variant is known as Rabin–Williams. Further variants allow tradeoffs between signature size and verification speed, partial message recovery, signature compression, and public key compression. Variants without the hash function have been published in textbooks, crediting Rabin for exponent 2 but not for the use of a hash function. These variants are trivially broken—for example, the signature  can be forged by anyone as a valid signature on the message  if the signature verification equation is  instead of . In the original paper, the hash function  was written with the notation , with C for compression, and using juxtaposition to denote concatenation of  and  as bit strings:

By convention, when wishing to sign a given message, , [the signer]  adds as suffix a word  of an agreed upon length . The choice of  is randomized each time a message is to be signed. The signer now compresses  by a hashing function to a word , so that as a binary number …

This notation has led to some confusion among some authors later who ignored the  part and misunderstood  to mean multiplication, giving the misapprehension of a trivially broken signature scheme. References

External links 
Rabin–Williams signatures at cr.yp.to

Digital signature schemes