As with any universal hash family, Poly1305 can be used as a one-timemessage authentication code to authenticate a single message using a secret key shared between sender and recipient,[3]similar to the way that aone-time pad can be used to conceal the content of a single message using a secret key shared between sender and recipient.
Originally Poly1305 was proposed as part of Poly1305-AES,[2] a Carter–Wegman authenticator[4][5][1]that combines the Poly1305 hash withAES-128 to authenticate many messages using a single short key and distinct message numbers.Poly1305 was later applied with a single-use key generated for each message usingXSalsa20 in theNaCl crypto_secretbox_xsalsa20poly1305 authenticated cipher,[6]and then usingChaCha in theChaCha20-Poly1305 authenticated cipher[7][8][1]deployed inTLS on the internet.[9]
Breaks the message into consecutive 16-byte chunks.
Interprets the 16-byte chunks as 17-byte little-endian integers by appending a 1 byte to every 16-byte chunk, to be used as coefficients of a polynomial.
Evaluates the polynomial at the point modulo the prime.
Reduces the result modulo encoded in little-endian return a 16-byte hash.
The coefficients of the polynomial, where, are:
with the exception that, if, then:
The secret key is restricted to have the bytes,i.e., to have their top four bits clear; and to have the bytes,i.e., to have their bottom two bits clear.Thus there are distinct possible values of.
If is a secret 16-byte string interpreted as a little-endian integer, then
is called theauthenticator for the message.If a sender and recipient share the 32-byte secret key in advance, chosen uniformly at random, then the sender can transmit an authenticated message.When the recipient receives analleged authenticated message (which may have been modified in transmit by an adversary), they can verify its authenticity by testing whether
Without knowledge of, the adversary has probability of finding any that will pass verification.
However, the same key must not be reused for two messages.If the adversary learns
for, they can subtract
and find a root of the resulting polynomial to recover a small list of candidates for the secret evaluation point, and from that the secret pad.The adversary can then use this to forge additional messages with high probability.
Use in Poly1305-AES as a Carter–Wegman authenticator
The original Poly1305-AES proposal[2] uses the Carter–Wegman structure[4][5] to authenticate many messages by taking to be the authenticator on theith message, where is a universal hash family and is an independent uniform random hash value that serves as a one-time pad to conceal it.Poly1305-AES usesAES-128 to generate, where is encoded as a 16-byte little-endian integer.
Specifically, a Poly1305-AES key is a 32-byte pair of a 16-byte evaluation point, as above, and a 16-byte AES key.The Poly1305-AES authenticator on a message is
where 16-byte strings and integers are identified by little-endian encoding.Note that is reused between messages.
Without knowledge of, the adversary has low probability of forging any authenticated messages that the recipient will accept as genuine.Suppose the adversary sees authenticated messages and attempts forgeries, and candistinguish from a uniform random permutation with advantage at most.(Unless AES is broken, is very small.)The adversary's chance of success at a single forgery is at most:
The message number must never be repeated with the same key.If it is, the adversary can recover a small list of candidates for and, as with the one-time authenticator, and use that to forge messages.
TheNaCl crypto_secretbox_xsalsa20poly1305 authenticated cipher uses a message number with theXSalsa20 stream cipher to generate a per-messagekey stream, the first 32 bytes of which are taken as a one-time Poly1305 key and the rest of which is used for encrypting the message.It then uses Poly1305 as a one-time authenticator for the ciphertext of the message.[6]ChaCha20-Poly1305 does the same but withChaCha instead ofXSalsa20.[8]XChaCha20-Poly1305 using XChaCha20 instead of XSalsa20 has also been described.[10]
The security of Poly1305 and its derivatives against forgery follows from itsbounded difference probability as auniversal hash family:If and are messages of up to bytes each, and is any 16-byte string interpreted as a little-endian integer, then
where is a uniform random Poly1305 key.[2]: Theorem 3.3, p. 8
This property is sometimes called-almost-Δ-universality over, or-AΔU,[11]where in this case.
ForNaCl crypto_secretbox_xsalsa20poly1305 andChaCha20-Poly1305, the adversary's success probability at forgery is the same for each message independently as for a one-time authenticator, plus the adversary's distinguishing advantage against XSalsa20 or ChaCha aspseudorandom functions used to generate the per-message key.In other words, the probability that the adversary succeeds at a single forgery after attempts of messages up to bytes is at most:
The security of Poly1305-AES against forgery follows from the Carter–Wegman–Shoup structure, which instantiates a Carter–Wegman authenticator with a permutation to generate the per-message pad.[12]If an adversary sees authenticated messages and attempts forgeries of messages of up to bytes, and if the adversary has distinguishing advantage at most against AES-128 as apseudorandom permutation, then the probability the adversary succeeds at any one of the forgeries is at most:[2]
For instance, assuming that messages are packets up to 1024 bytes; that the attacker sees 264 messages authenticated under a Poly1305-AES key; that the attacker attempts a whopping 275 forgeries; and that the attacker cannot break AES with probability above δ; then, with probability at least 0.999999 − δ, all the 275 are rejected
^abcdAumasson, Jean-Philippe (2018). "Chapter 7: Keyed Hashing".Serious Cryptography: A Practical Introduction to Modern Encryption. No Starch Press. pp. 136–138.ISBN978-1-59327-826-7.
^abWegman, Mark N.; Carter, J. Lawrence (1981). "New Hash Functions and Their Use in Authentication and Set Equality".Journal of Computer and System Sciences.22 (3):265–279.doi:10.1016/0022-0000(81)90033-7.