Poly1305

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 {\displaystyle r} i un L {\displaystyle L} missatge -byte m {\displaystyle m} i retorna un hash de 16 bytes Poly1305 r ( m ) {\displaystyle \operatorname {Poly1305} _{r}(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 c i {\displaystyle c_{i}} del polinomi c 1 r q + c 2 r q 1 + + c q r {\displaystyle c_{1}r^{q}+c_{2}r^{q-1}+\cdots +c_{q}r} , on q = L / 16 {\displaystyle q=\lceil L/16\rceil } , són: c i = m [ 16 i 16 ] + 2 8 m [ 16 i 15 ] + 2 16 m [ 16 i 14 ] + + 2 120 m [ 16 i 1 ] + 2 128 , {\displaystyle c_{i}=m[16i-16]+2^{8}m[16i-15]+2^{16}m[16i-14]+\cdots +2^{120}m[16i-1]+2^{128},} amb l'excepció que, si L 0 ( mod 16 ) {\displaystyle L\not \equiv 0{\pmod {16}}} , llavors:

c q = m [ 16 q 16 ] + 2 8 m [ 16 q 15 ] + + 2 8 ( L mod 1 6 ) 8 m [ L 1 ] + 2 8 ( L mod 1 6 ) . {\displaystyle c_{q}=m[16q-16]+2^{8}m[16q-15]+\cdots +2^{8(L{\bmod {1}}6)-8}m[L-1]+2^{8(L{\bmod {1}}6)}.}

La clau secreta r = ( r [ 0 ] , r [ 1 ] , r [ 2 ] , , r [ 15 ] ) {\displaystyle r=(r[0],r[1],r[2],\dotsc ,r[15])} està restringit a tenir els bytes r [ 3 ] , r [ 7 ] , r [ 11 ] , r [ 15 ] { 0 , 1 , 2 , , 15 } {\displaystyle r[3],r[7],r[11],r[15]\in \{0,1,2,\dotsc ,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 } {\displaystyle r[4],r[8],r[12]\in \{0,4,8,\dotsc ,252\}} , és a dir, per tenir els seus dos bits inferiors clars. Així n'hi ha 2 106 {\displaystyle 2^{106}} diferents valors possibles de r {\displaystyle 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 m 1 {\displaystyle m_{1}} i m 2 {\displaystyle m_{2}} són missatges de fins a L {\displaystyle L} bytes cadascun, i d {\displaystyle d} és qualsevol cadena de 16 bytes interpretada com un nombre enter little-endian, doncs Pr [ Poly1305 r ( m 1 ) Poly1305 r ( m 2 ) d ( mod 2 128 ) ] 8 L / 16 2 106 , {\displaystyle \Pr[\operatorname {Poly1305} _{r}(m_{1})-\operatorname {Poly1305} _{r}(m_{2})\equiv d{\pmod {2^{128}}}]\leq {\frac {8\lceil L/16\rceil }{2^{106}}},} on r {\displaystyle r} és una clau aleatòria Poly1305 uniforme.  : Teorema 3.3, pàg. 8 

Aquesta propietat de vegades s'anomena ϵ {\displaystyle \epsilon } -quasi-Δ-universalitat acabada Z / 2 128 Z {\displaystyle \mathbb {Z} /2^{128}\mathbb {Z} } , o ϵ {\displaystyle \epsilon } -AΔU, on ϵ = 8 L / 16 / 2 106 {\displaystyle \epsilon =8\lceil L/16\rceil /2^{106}} en aquest cas.

Referències

  1. Aumasson, Jean-Philippe. «Chapter 7: Keyed Hashing». A: Serious Cryptography: A Practical Introduction to Modern Encryption (en anglès). No Starch Press, 2018, p. 136–138. ISBN 978-1-59327-826-7. 
  2. Bernstein, Daniel J. «Protecting communications against forgery». A: Buhler. Algorithmic number theory: lattices, number fields, curves and cryptography (en anglès). 44. Cambridge University Press, 2008-05-01, p. 535–549 (Mathematical Sciences Research Institute Publications). ISBN 978-0521808545. 
  3. Journal of Computer and System Sciences, 22, 3, 1981, pàg. 265–279. DOI: 10.1016/0022-0000(81)90033-7.
  4. Boneh, Dan. A Graduate Course in Applied Cryptography (en anglès). Version 0.5, January 2020. 
  5. 5,0 5,1 Aumasson, Jean-Philippe. «Chapter 7: Keyed Hashing». A: Serious Cryptography: A Practical Introduction to Modern Encryption (en anglès). No Starch Press, 2018, p. 136–138. ISBN 978-1-59327-826-7. 
  6. Aumasson, Jean-Philippe. «Chapter 7: Keyed Hashing». A: Serious Cryptography: A Practical Introduction to Modern Encryption (en anglès). No Starch Press, 2018, p. 136–138. ISBN 978-1-59327-826-7.