Poly1305

De testwiki
Salta a la navegació Salta a la cerca

Poly1305 és una família de hash universal dissenyada per Daniel J. Bernstein per utilitzar-la en criptografia.[1]

Xifratge ChaCha20-Poly1305

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, [2] 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.

Originalment, Poly1305 es va proposar com a part de Poly1305-AES, un autenticador Carter – Wegman [3][4][5] 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 [5] desplegat en TLS. l'internet.

Descripció

Definició de Poly1305

Poly1305 pren una clau secreta de 16 bytes r i un L missatge -byte m i retorna un hash de 16 bytes Poly1305r(m). Per fer-ho, Poly1305: [6]

  1. Interpreta com un nombre enter de 16 bytes little-endian.
  2. Trenca el missatge en fragments consecutius de 16 bytes.
  3. 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.
  4. Avalua el polinomi en el punt mòdul el primer.
  5. Redueix el mòdul del resultat codificat en little-endian retorna un hash de 16 bytes.

Els coeficients ci del polinomi c1rq+c2rq1++cqr, on q=L/16, són:ci=m[16i16]+28m[16i15]+216m[16i14]++2120m[16i1]+2128,amb l'excepció que, si L≢0(mod16), llavors:

cq=m[16q16]+28m[16q15]++28(Lmod16)8m[L1]+28(Lmod16).

La clau secreta r=(r[0],r[1],r[2],,r[15]) està restringit a tenir els bytes r[3],r[7],r[11],r[15]{0,1,2,,15}, és a dir, tenir els seus quatre bits principals clars; i tenir els bytes r[4],r[8],r[12]{0,4,8,,252}, és a dir, per tenir els seus dos bits inferiors clars. Així n'hi ha 2106 diferents valors possibles de r.

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 m1 i m2 són missatges de fins a L bytes cadascun, i d és qualsevol cadena de 16 bytes interpretada com un nombre enter little-endian, doncsPr[Poly1305r(m1)Poly1305r(m2)d(mod2128)]8L/162106,on r és una clau aleatòria Poly1305 uniforme. : Teorema 3.3, pàg. 8 

Aquesta propietat de vegades s'anomena ϵ -quasi-Δ-universalitat acabada /2128, o ϵ -AΔU, on ϵ=8L/16/2106 en aquest cas.

Referències

Plantilla:Referències