Poly1305 és una família de hash universal dissenyada per Daniel J. Bernstein per utilitzar-la en criptografia.
Com amb qualsevol família de hash universal, Poly1305 es pot utilitzar com a codi d'autenticació de missatges d'una sola vegada per autenticar un missatge únic mitjançant una clau secreta compartida entre remitent i destinatari, de manera similar a com es pot utilitzar un bloc d'un sol ús. per ocultar el contingut d'un sol missatge mitjançant una clau secreta compartida entre remitent i destinatari.
Originàriament, Poly1305 es va proposar com a part de Poly1305-AES, un autenticador Carter – Wegman que combina el hash Poly1305 amb AES-128 per autenticar molts missatges mitjançant una única clau curta i números de missatge diferents. Poly1305 es va aplicar posteriorment amb una clau d'un sol ús generada per a cada missatge mitjançant XSalsa20 al xifratge autenticat NaCl crypto_secretbox_xsalsa20poly1305, i després utilitzant ChaCha al xifratge autenticat ChaCha20-Poly1305 desplegat en TLS. l'internet.
Descripció
Definició de Poly1305
Poly1305 pren una clau secreta de 16 bytes i un
missatge -byte
i retorna un hash de 16 bytes
. Per fer-ho, Poly1305:
- Interpreta com un nombre enter de 16 bytes little-endian.
- Trenca el missatge en fragments consecutius de 16 bytes.
- Interpreta els fragments de 16 bytes com a nombres enters little-endians de 17 bytes afegint un 1 byte a cada fragment de 16 bytes, per utilitzar-los com a coeficients d'un polinomi.
- Avalua el polinomi en el punt mòdul el primer.
- Redueix el mòdul del resultat codificat en little-endian retorna un hash de 16 bytes.
Els coeficients del polinomi
, on
, són:
amb l'excepció que, si
, llavors:
La clau secreta està restringit a tenir els bytes
, és a dir, tenir els seus quatre bits principals clars; i tenir els bytes
, és a dir, per tenir els seus dos bits inferiors clars. Així n'hi ha
diferents valors possibles de
.
Seguretat
La seguretat de Poly1305 i els seus derivats contra la falsificació es deu a la seva probabilitat de diferència limitada com a família hash universal: si i
són missatges de fins a
bytes cadascun, i
és qualsevol cadena de 16 bytes interpretada com un nombre enter little-endian, doncs
on
és una clau aleatòria Poly1305 uniforme.: Teorema 3.3, pàg. 8
Aquesta propietat de vegades s'anomena -quasi-Δ-universalitat acabada
, o
-AΔU, on
en aquest cas.
