Jump to content

Rabin signature algorithm: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Definition: Eliminate d_p and d_q; just say d, which works mathematically, just at potentially slightly higher computational cost if taken naively.
 
(68 intermediate revisions by 18 users not shown)
Line 1: Line 1:
{{Short description|Digital signature scheme}}
In [[cryptography]] the '''Rabin signature algorithm''' is a method of [[digital signature]] originally proposed by [[Michael O. Rabin]] in 1979. The Rabin signature algorithm was one of the first digital signature schemes proposed, and it was the first to relate the hardness of forgery directly to the problem of [[integer factorization]]. Because of its [[complexity]] and the prominent role of the [[RSA cryptosystem]] in early public key cryptography, the Rabin signature algorithm is not covered in most introductory courses on cryptography. The Rabin signature algorithm is [[Existential forgery|existentially unforgeable]] in the [[random oracle]] model assuming the integer factorization problem is intractable. The Rabin signature algorthm is also closely related to the [[Rabin cryptosystem]].
In [[cryptography]], the '''Rabin signature algorithm''' is a method of [[digital signature]] originally proposed by [[Michael O. Rabin]] in 1978.<ref name="rabin1978digsigs">{{cite book
|author1-last=Rabin
|author1-first=Michael O.
|author1-link=Michael O. Rabin
|editor1-last=DeMillo
|editor1-first=Richard A.
|editor1-link=Richard DeMillo
|editor2-last=Dobkin
|editor2-first=David P.
|editor2-link=David P. Dobkin
|editor3-last=Jones
|editor3-first=Anita K.
|editor3-link=Anita K. Jones
|editor4-last=Lipton
|editor4-first=Richard J.
|editor4-link=Richard Lipton
|title=Foundations of Secure Computation
|year=1978
|publisher=Academic Press
|location=New York|isbn=0-12-210350-5
|pages=155–168
|chapter=Digitalized Signatures
}}</ref><ref name="rabin1979lcs-tr">{{cite tech report
|last=Rabin
|first=Michael O.
|author-link=Michael O. Rabin
|title=Digitalized Signatures and Public Key Functions as Intractable as Factorization
|number=TR-212
|institution= MIT Laboratory for Computer Science
|date=January 1979
|location=Cambridge, MA, United States
|url=http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-212.pdf
}}</ref><ref name="bellare-rogaway1996exactsigs">{{cite conference
|last1=Bellare
|first1=Mihir
|author-link1=Mihir Bellare
|last2=Rogaway
|first2=Phillip
|author-link2=Phillip Rogaway
|title=The Exact Security of Digital Signatures—How to Sign with RSA and Rabin
|editor-last=Maurer
|editor-first=Ueli
|editor-link=Ueli Maurer (cryptographer)
|conference=Advances in Cryptology – EUROCRYPT ’96
|date=May 1996
|conference-url=https://link.springer.com/book/10.1007/3-540-68339-9
|volume=1070
|series=Lecture Notes in Computer Science
|publisher=Springer
|location=Saragossa, Spain
|isbn=978-3-540-61186-8
|pages=399–416
|doi=10.1007/3-540-68339-9_34
|doi-access=free
}}</ref>


The Rabin signature algorithm was one of the first digital signature schemes proposed. By introducing the use of [[Cryptographic hash function|hashing]] as an essential step in signing, it was the first design to meet what is now the modern standard of security against forgery, [[Digital signature forgery|existential unforgeability under chosen-message attack]], assuming suitably scaled parameters.
==Original Algorithm==
The algorithm relies on a collision-resistant hash function <math>H : \{0,1\}^* \rightarrow \{0,1\}^k</math>


Rabin signatures resemble [[RSA (cryptosystem)|RSA signatures]] with exponent <math>e=2</math>, but this leads to qualitative differences that enable more efficient implementation<ref name="djb2008rwsota">{{cite report
*'''Key Generation'''
|author-last=Bernstein
**The signer ''S'' chooses primes ''p'',''q'' each of size approximately ''k/2'' bits, and computes the product <math>n = pq</math>
|author-first=Daniel J.
**''S'' then chooses a random ''b'' in <math>\{1,\ldots,n\}</math>.
|author-link=Daniel J. Bernstein
**The public key is ''(n,b)''
|date=January 31, 2008
**The private key is ''(p,q)''
|title=RSA signatures and Rabin–Williams signatures: the state of the art
*'''Signing'''
|url=https://cr.yp.to/papers.html#rwsota
**To sign a message ''m'' the signer ''S'' picks random padding ''U'' and calculates ''H(m, U)''
}} (additional information at https://cr.yp.to/sigs.html)</ref> and a security guarantee relative to the difficulty of [[integer factorization]],<ref name="rabin1979lcs-tr"/><ref name="bellare-rogaway1996exactsigs"/><ref name="djb2008rwtight">{{cite conference
**''S'' then solves <math>x(x+b) = H(m, U) \mod n</math>
|last=Bernstein
**If there is no solution ''S'' picks a new pad ''U'' and tries again. If ''H'' is truly random the expected number of tries is 4.
|first=Daniel J.
**The signature on ''m'' is the pair ''(U,x)''
|author-link=Daniel J. Bernstein
*'''Verification'''
|title=Proving tight security for Rabin–Williams signatures
**Given a message ''m'' and a signature ''(U,x)'' the verifier ''V'' calculates ''x(x+b)'' and ''H(m, U)'' and verifies that they are equal
|url=https://cr.yp.to/papers.html#rwtight
|editor-last=Smart
|editor-first=Nigel
|editor-link=Nigel Smart (cryptographer)
|conference=Advances in Cryptology – EUROCRYPT 2008
|date=April 2008
|conference-url=https://link.springer.com/book/10.1007/978-3-540-78967-3
|volume=4965
|series=Lecture Notes in Computer Science
|publisher=Springer
|location=Istanbul, Turkey
|isbn=978-3-540-78966-6
|pages=70–87
|doi=10.1007/978-3-540-78967-3_5
|doi-access=free
}}</ref> which [[RSA problem|has not been proven for RSA]].
However, Rabin signatures have seen relatively little use or standardization outside [[IEEE P1363]]<ref name="ieee-1363-2000"/> in comparison to RSA signature schemes such as [[PKCS 1|RSASSA-PKCS1-v1_5]] and [[Probabilistic signature scheme|RSASSA-PSS]].


== Simplified Algorithm ==
== Definition ==
The Rabin signature scheme is parametrized by a randomized [[Cryptographic hash function|hash function]] <math>H(m, u)</math> of a message <math>m</math> and <math>k</math>-bit randomization string <math>u</math>.
In most presentations the algorithm is simplified by choosing <math>
b = 0 </math>. The hash function ''H'' with ''k'' output bits is assumed to be a [[random oracle]] and the algorithm works as follows:


; Public key
;Key generation:{{ordered list
: A public key is a pair of integers <math>(n, b)</math> with <math>0 \leq b < n</math> and <math>n</math> odd. <math>b</math> is chosen arbitrarily and may be a fixed constant.
|The signer ''S'' chooses primes ''p'',''q'' each of size approximately ''k/2'' bits, and ''p,q mod 4 equals 3. He computes the product <math>n = pq</math>.
; Signature
|The public key is ''n''.
: A signature on a message <math>m</math> is a pair <math>(u, x)</math> of a <math>k</math>-bit string <math>u</math> and an integer <math>x</math> such that <math display="block">x (x + b) \equiv H(m, u) \pmod n.</math>
|The private key is ''(p,q)''.
; Private key
}}
: The private key for a public key <math>(n, b)</math> is the secret odd prime factorization <math>p\cdot q</math> of <math>n</math>, chosen uniformly at random from some large space of primes.
;Signing:{{ordered list
; Signing a message
|To sign a message ''m'' the signer ''S'' picks random padding ''U'' and calculates ''H(m,U)''.
: To make a signature on a message <math>m</math> using the private key, the signer starts by picking a <math>k</math>-bit string <math>u</math> uniformly at random, and computes <math>c := H(m, u)</math>. Let <math>d = (b/2) \bmod n</math>. If <math>c + d^2</math> is a [[quadratic nonresidue]] modulo <math>n</math>, the signer starts over with an independent random <math>u</math>.<ref name="rabin1979lcs-tr"/>{{rp|p. 10}} Otherwise, the signer computes <math display="block">
|If ''H(m,U)'' is not a square modulo ''n'', ''S'' picks a new pad ''U''.
\begin{align}
|''S'' computes one value x that solves the equation <math>x^2 = H(m,U) \mod n</math>.
x_p &:= \Bigl(-d \pm \sqrt{c + d^2}\Bigr) \bmod p, \\
|The signature on ''m'' is the pair ''(U,x)''.
x_q &:= \Bigl(-d \pm \sqrt{c + d^2}\Bigr) \bmod q,
}}
\end{align}
;Verification:{{ordered list
</math> using a [[Quadratic residue#Prime or prime power modulus|standard algorithm for computing square roots modulo a prime]]&mdash;picking <math>p \equiv q \equiv 3 \pmod 4</math> makes it easiest. Square roots are not unique, and different variants of the signature scheme make different choices of square root;<ref name="djb2008rwsota"/> in any case, the signer must ensure not to reveal two different roots for the same hash <math>c</math>. <math>x_p</math> and <math>x_q</math> satisfy the equations <math display="block">
|Given a message ''m'' and a signature ''(U,x)'' the verifier ''V'' calculates ''x''<sup>2</sup> and ''H(m,U)'' and verifies that they are equal.
\begin{align}
}}
x_p (x_p + b) &\equiv H(m,u) \pmod p, \\
x_q (x_q + b) &\equiv H(m,u) \pmod q.
\end{align}
</math> The signer then uses the [[Chinese remainder theorem]] to solve the system <math display="block">
\begin{align}
x &\equiv x_p \pmod p, \\
x &\equiv x_q \pmod q,
\end{align}
</math> for <math>x</math>, so that <math>x</math> satisfies <math display="block">x (x + b) \equiv H(m,u) \pmod n</math> as required. The signer reveals <math>(u, x)</math> as a signature on <math>m</math>.


: The number of trials for <math>u</math> before <math>x (x + b) \equiv H(m,u) \pmod n</math> can be solved for <math>x</math> is geometrically distributed with an average around 4 trials, because about 1/4 of all integers are quadratic residues modulo <math>n</math>.
=== Remarks ===
In some treatments the random pad ''U'' is eliminated. Instead we can eventually multiply the hash value with two numbers ''a'' or ''b'' with the properties <math>\left(\tfrac{a}{p}\right) = -\left(\tfrac{a}{q}\right) = 1</math> and <math>\left(\tfrac{b}{q}\right) = -\left(\tfrac{b}{p}\right) = 1</math>, where <math>(\cdot)</math> denotes the [[legendre symbol]]. Then for any ''H'' modulo ''n'' exactly one of the four numbers <math>H, aH, bH, abH</math> will be a square modulo ''n'', and the signer chooses that one for his signature.


== Security ==
Even more simple, we change the message ''m'' until the signature can be verified.
Security against any adversary defined generically in terms of a hash function <math>H</math> (i.e., security in the [[random oracle model]]) follows from the difficulty of factoring <math>n</math>:
Any such adversary with high probability of success at forgery can, with nearly as high probability, find two distinct square roots <math>x_1</math> and <math>x_2</math> of a random integer <math>c</math> modulo <math>n</math>.
def root(m, p, q):
If <math>x_1 \pm x_2 \not\equiv 0 \pmod n</math> then <math>\gcd(x_1 \pm x_2, n)</math> is a nontrivial factor of <math>n</math>, since <math>{x_1}^2 \equiv {x_2}^2 \equiv c \pmod n</math> so <math>n \mid {x_1}^2 - {x_2}^2 = (x_1 + x_2) (x_1 - x_2)</math> but <math>n \nmid x_1 \pm x_2</math>.<ref name="bellare-rogaway1996exactsigs"/>
while True:
Formalizing the security in modern terms requires filling in some additional details, such as the codomain of <math>H</math>; if we set a standard size <math>K</math> for the prime factors, <math>2^{K - 1} < p < q < 2^K</math>, then we might specify <math>H\colon \{0,1\}^* \times \{0,1\}^k \to \{0,1\}^K</math>.<ref name="djb2008rwtight"/>
x = h(m)
sig = pow(p,q-2,q) * p * pow(x,(q+1)/4,q)
sig = ( pow(q,p-2,p) * q * pow(x,(p+1)/4,p) + sig ) % (nrabin)
if (sig * sig) % nrabin == x:
print "write extended message to file m "
f = open('m','w')
f.write(m)
f.close()
break
m = m + ' '
return sig


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<ref name="bellare-rogaway1996exactsigs"/> and resilience to collision attacks on fixed hash functions.<ref name="bellare-rogaway1998pssproposal">{{cite report
==Security==
|author1-last=Bellare
|author1-first=Mihir
|author1-link=Mihir Bellare
|author2-last=Rogaway
|author2-first=Phillip
|author2-link=Phillip Rogaway
|title=Submission to IEEE P1393—PSS: Provably Secure Encoding Method for Digital Signatures
|date=August 1998
|url=http://grouper.ieee.org/groups/1363/P1363a/contributions/pss-submission.pdf
|archive-url=https://web.archive.org/web/20040713140300/http://grouper.ieee.org/groups/1363/P1363a/contributions/pss-submission.pdf
|archive-date=2004-07-13
}}</ref><ref name="halevi-krawczyk2007rhash">{{cite conference
|author1-last=Halevi
|author1-first=Shai
|author1-link=Shai Halevi
|author2-last=Krawczyk
|author2-first=Hugo
|title=Strengthening Digital Signatures via Randomized Hashing
|url=http://webee.technion.ac.il/~hugo/rhash/rhash.pdf
|editor-last=Dwork
|editor-first=Cynthia
|editor-link=Cynthia Dwork
|conference=Advances in Cryptology – CRYPTO 2006
|conference-url=https://link.springer.com/book/10.1007%2F11818175
|date=August 2006
|volume=4117
|series=Lecture Notes in Computer Science
|publisher=Springer
|location=Santa Barbara, CA, United States
|doi=10.1007/11818175_3
|doi-access=free
|pages=41–59
}}</ref><ref name="nist-sp800-106">{{cite report
|last=Dang
|first=Quynh
|title=Randomized Hashing for Digital Signatures
|series=NIST Special Publication
|volume=800-106
|publisher=United States Department of Commerce, National Institute for Standards and Technology
|date=February 2009
|url=https://csrc.nist.gov/publications/detail/sp/800-106/final
|doi=10.6028/NIST.SP.800-106
|doi-access=free
}}</ref>


== Variants ==
If the hash function ''H'' is a random oracle, i.e. its output is truly random in <math>\mathbb{Z}/n\mathbb{Z}</math>, then forging a signature on any message ''m'' is as hard as
calculating the square root of a random element in <math>\mathbb{Z}/n\mathbb{Z}</math>.


=== Removing <math>b</math> ===
To prove that taking a random square root is as hard as factoring, we first note that in most cases there are four distinct square roots since ''n'' has two square roots modulo ''p'' and two square roots modulo ''q'', and each pair gives a square root modulo ''n'' by the [[chinese remainder theorem]]. Some of the four roots may have the same value, but only with extreme low probability.
The quantity <math>b</math> in the public key adds no security, since any algorithm to solve congruences <math>x (x + b) \equiv c \pmod n</math> for <math>x</math> given <math>b</math> and <math>c</math> can be trivially used as a subroutine in an algorithm to compute square roots modulo <math>n</math> and vice versa, so implementations can safely set <math>b = 0</math> for simplicity; <math>b</math> was discarded altogether in treatments after the initial proposal.<ref name="williams1980rsamod"/><ref name="bellare-rogaway1996exactsigs"/><ref name="ieee-1363-2000"/><ref name="djb2008rwsota"/> After removing <math>b</math>, the equations for <math>x_p</math> and <math>x_q</math> in the signing algorithm become:<math display="block">
\begin{align}
x_p &:= \pm \sqrt{c} \bmod p, \\
x_q &:= \pm \sqrt{c} \bmod q.
\end{align}
</math>


=== Rabin-Williams ===
Now, if we can find two different square roots, ''x'',''y'' such that <math>x^2 = y^2 \mod n</math> but <math>x \ne \pm y \mod n</math>, then this immediately leads to a factorization of ''n'' since ''n'' divides <math>x^2 - y^2 = (x-y)(x+y)</math> but it does not divide either factor. Thus taking <math>\operatorname{gcd}(x\pm y,n)</math> will lead to a nontrivial factorization of ''n''.
The Rabin signature scheme was later tweaked by [[Hugh C. Williams|Williams]] in 1980<ref name="williams1980rsamod">{{cite journal
|author-last=Williams
|author-first=Hugh C.
|author-link=Hugh C. Williams
|title=A modification of the RSA public-key encryption procedure
|journal=IEEE Transactions on Information Theory
|volume=26
|issue=6
|issn=0018-9448
|pages=726–729
|url=https://cr.yp.to/bib/entries.html#1980/williams
|doi=10.1109/TIT.1980.1056264
}}</ref> to choose <math>p \equiv 3 \pmod 8</math> and <math>q \equiv 7 \pmod 8</math>, and replace a square root <math>x</math> by a tweaked square root <math>(e, f, x)</math>, with <math>e = \pm1</math> and <math>f \in \{1,2\}</math>, so that a signature instead satisfies
<math display="block">
e f x^2 \equiv H(m, u) \pmod n,
</math>
which allows the signer to create a signature in a single trial without sacrificing security.
This variant is known as '''Rabin–Williams'''.<ref name="djb2008rwsota"/><ref name="ieee-1363-2000">{{cite book
|date=August 25, 2000
|publisher=Institute of Electrical and Electronics Engineers
|isbn=0-7381-1956-3
|doi=10.1109/IEEESTD.2000.92292
|title=IEEE Standard Specifications for Public-Key Cryptography
|series=IEEE Std 1363-2000
}}</ref>


=== Others ===
Now, we assume an efficient algorithm exists to find at least one square root. Then we pick a random ''r'' modulo ''n'' and square it <math>r^2 = R \mod n</math>, then, using the algorithm we take one square root of ''R'' modulo ''n'', we will get a new square root <math>r^\prime</math>, and with probability half <math>r \ne \pm r^\prime \mod n</math>.
Further variants allow tradeoffs between signature size and verification speed, partial message recovery, signature compression (down to one-half size), and public key compression (down to one-third size), still without sacrificing security.<ref name="djb2008rwsota"/>


Variants without the hash function have been published in textbooks,<ref name="hac">{{cite book
==References==
|author1-last=Menezes
* Michele Elia, Davide Schipani, ''On the Rabin Signature'', 2011 [https://www.math.uzh.ch/fileadmin/user/davide/publikation/SignatureRabin11.pdf PDF]
|author1-first=Alfred J.
* Buchmann, Johannes. ''Einführung in die Kryptographie''. Second Edition. Berlin: Springer, 2001. {{ISBN|3-540-41283-2}}
|author1-link=Alfred Menezes
* Menezes, Alfred; van Oorschot, Paul C.; and Vanstone, Scott A. ''Handbook of Applied Cryptography''. CRC Press, October 1996. {{ISBN|0-8493-8523-7}}
|author2-last=van Oorschot
* Rabin, Michael. ''[http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-212.pdf Digitalized Signatures and Public-Key Functions as Intractable as Factorization]'' (in PDF). MIT Laboratory for Computer Science, January 1979.
|author2-first=Paul C.
* Scott Lindhurst, An analysis of Shank's algorithm for computing square roots in finite fields. in R Gupta and K S Williams, Proc 5th Conf Can Nr Theo Assoc, 1999, vol 19 CRM Proc & Lec Notes, AMS, Aug 1999.
|author2-link=Paul van Oorschot
* R Kumanduri and C Romero, Number Theory w/ Computer Applications, Alg 9.2.9, Prentice Hall, 1997. A probabilistic for square root of a quadratic residue modulo a prime.
|author3-last=Vanstone
|author3-first=Scott A.
|author3-link=Scott Vanstone
|title=Handbook of Applied Cryptography
|publisher=CRC Press
|date=October 1996
|isbn=0-8493-8523-7
|section=§11.3.4: The Rabin public-key signature scheme
|url=http://cacr.uwaterloo.ca/hac/about/chap11.pdf#page=15
|pages=438–442
}}</ref><ref name="galbraith2012mathpkc">{{cite book
|author1-last=Galbraith
|author1-first=Steven D.
|title=Mathematics of Public Key Cryptography
|publisher=Cambridge University Press
|year=2012
|isbn=978-1-10701392-6
|section=§24.2: The textbook Rabin cryptosystem
|pages=491–494
}}</ref> crediting Rabin for exponent 2 but not for the use of a hash function.
These variants are trivially broken&mdash;for example, the signature <math>x = 2</math> can be forged by anyone as a valid signature on the message <math>m = 4</math> if the signature verification equation is <math>x^2 \equiv m \pmod n</math> instead of <math>x^2 \equiv H(m, u) \pmod n</math>.


In the original paper,<ref name="rabin1979lcs-tr"/> the hash function <math>H(m, u)</math> was written with the notation <math>C(MU)</math>, with ''C'' for ''compression'', and using juxtaposition to denote concatenation of <math>M</math> and <math>U</math> as bit strings:
== External links ==


<blockquote>
*[http://iaktueller.de/rabin.py Software Implementation with Python programming language]
By convention, when wishing to sign a given message, <math>M</math>, [the signer] <math>P</math> adds as suffix a word <math>U</math> of an agreed upon length <math>k</math>.
The choice of <math>U</math> is randomized each time a message is to be signed.
The signer now compresses <math>M_1 = MU</math> by a hashing function to a word <math>C(M_1) = c</math>, so that as a binary number <math>c \leq n</math>…
</blockquote>

This notation has led to some confusion among some authors later who ignored the <math>C</math> part and misunderstood <math>MU</math> to mean multiplication, giving the misapprehension of a trivially broken signature scheme.<ref name="elia-schipani2011rabinsig">{{cite conference
|author-last1=Elia
|author-first1=Michele
|author-last2=Schipani
|author-first2=David
|title=On the Rabin signature
|conference=Workshop on Computational Security
|year=2011
|location=Centre de Recerca Matemàtica, Barcelona, Spain
|url=https://www.math.uzh.ch/fileadmin/user/davide/publikation/SignatureRabin11.pdf
}}</ref>

== References ==
{{reflist}}

== External links ==
*[https://cr.yp.to/sigs.html Rabin–Williams signatures at cr.yp.to]


[[Category:Digital signature schemes]]
[[Category:Digital signature schemes]]

Latest revision as of 09:06, 11 September 2024

In cryptography, the Rabin signature algorithm is a method of digital signature originally proposed by Michael O. Rabin in 1978.[1][2][3]

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[4] and a security guarantee relative to the difficulty of integer factorization,[2][3][5] which has not been proven for RSA. However, Rabin signatures have seen relatively little use or standardization outside IEEE P1363[6] in comparison to RSA signature schemes such as RSASSA-PKCS1-v1_5 and RSASSA-PSS.

Definition

[edit]

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. is chosen arbitrarily and may be a fixed constant.
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 large space of primes.
Signing a message
To make a signature on a message using the private key, the signer starts by picking a -bit string uniformly at random, and computes . Let . If is a quadratic nonresidue modulo , the signer starts over with an independent random .[2]: p. 10  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;[4] in any case, the signer must ensure not to reveal two different roots for the same hash . and satisfy the equations The signer then uses the Chinese remainder theorem to solve the system for , so that satisfies as required. The signer reveals as a signature on .
The number of trials for before can be solved for is geometrically distributed with an average around 4 trials, because about 1/4 of all integers are quadratic residues modulo .

Security

[edit]

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 .[3] 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 .[5]

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[3] and resilience to collision attacks on fixed hash functions.[7][8][9]

Variants

[edit]

Removing

[edit]

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.[10][3][6][4] After removing , the equations for and in the signing algorithm become:

Rabin-Williams

[edit]

The Rabin signature scheme was later tweaked by Williams in 1980[10] 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.[4][6]

Others

[edit]

Further variants allow tradeoffs between signature size and verification speed, partial message recovery, signature compression (down to one-half size), and public key compression (down to one-third size), still without sacrificing security.[4]

Variants without the hash function have been published in textbooks,[11][12] 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,[2] 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.[13]

References

[edit]
  1. ^ Rabin, Michael O. (1978). "Digitalized Signatures". In DeMillo, Richard A.; Dobkin, David P.; Jones, Anita K.; Lipton, Richard J. (eds.). Foundations of Secure Computation. New York: Academic Press. pp. 155–168. ISBN 0-12-210350-5.
  2. ^ a b c d Rabin, Michael O. (January 1979). Digitalized Signatures and Public Key Functions as Intractable as Factorization (PDF) (Technical report). Cambridge, MA, United States: MIT Laboratory for Computer Science. TR-212.
  3. ^ a b c d e Bellare, Mihir; Rogaway, Phillip (May 1996). Maurer, Ueli (ed.). The Exact Security of Digital Signatures—How to Sign with RSA and Rabin. Advances in Cryptology – EUROCRYPT ’96. Lecture Notes in Computer Science. Vol. 1070. Saragossa, Spain: Springer. pp. 399–416. doi:10.1007/3-540-68339-9_34. ISBN 978-3-540-61186-8.
  4. ^ a b c d e Bernstein, Daniel J. (January 31, 2008). RSA signatures and Rabin–Williams signatures: the state of the art (Report). (additional information at https://cr.yp.to/sigs.html)
  5. ^ a b Bernstein, Daniel J. (April 2008). Smart, Nigel (ed.). Proving tight security for Rabin–Williams signatures. Advances in Cryptology – EUROCRYPT 2008. Lecture Notes in Computer Science. Vol. 4965. Istanbul, Turkey: Springer. pp. 70–87. doi:10.1007/978-3-540-78967-3_5. ISBN 978-3-540-78966-6.
  6. ^ a b c IEEE Standard Specifications for Public-Key Cryptography. IEEE Std 1363-2000. Institute of Electrical and Electronics Engineers. August 25, 2000. doi:10.1109/IEEESTD.2000.92292. ISBN 0-7381-1956-3.
  7. ^ Bellare, Mihir; Rogaway, Phillip (August 1998). Submission to IEEE P1393—PSS: Provably Secure Encoding Method for Digital Signatures (PDF) (Report). Archived from the original (PDF) on 2004-07-13.
  8. ^ Halevi, Shai; Krawczyk, Hugo (August 2006). Dwork, Cynthia (ed.). Strengthening Digital Signatures via Randomized Hashing (PDF). Advances in Cryptology – CRYPTO 2006. Lecture Notes in Computer Science. Vol. 4117. Santa Barbara, CA, United States: Springer. pp. 41–59. doi:10.1007/11818175_3.
  9. ^ Dang, Quynh (February 2009). Randomized Hashing for Digital Signatures (Report). NIST Special Publication. Vol. 800–106. United States Department of Commerce, National Institute for Standards and Technology. doi:10.6028/NIST.SP.800-106.
  10. ^ a b Williams, Hugh C. "A modification of the RSA public-key encryption procedure". IEEE Transactions on Information Theory. 26 (6): 726–729. doi:10.1109/TIT.1980.1056264. ISSN 0018-9448.
  11. ^ Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (October 1996). "§11.3.4: The Rabin public-key signature scheme". Handbook of Applied Cryptography (PDF). CRC Press. pp. 438–442. ISBN 0-8493-8523-7.
  12. ^ Galbraith, Steven D. (2012). "§24.2: The textbook Rabin cryptosystem". Mathematics of Public Key Cryptography. Cambridge University Press. pp. 491–494. ISBN 978-1-10701392-6.
  13. ^ Elia, Michele; Schipani, David (2011). On the Rabin signature (PDF). Workshop on Computational Security. Centre de Recerca Matemàtica, Barcelona, Spain.
[edit]