stringtranslate.com

ChaCha20-Poli1305

ChaCha20-Poly1305 es un algoritmo de cifrado autenticado con datos asociados (AEAD) , que combina el cifrado de flujo ChaCha20 con el código de autenticación de mensajes Poly1305 . [1] Tiene un rendimiento de software rápido y, sin aceleración de hardware, suele ser más rápido que AES-GCM . [1] : §B 

Historia

Los dos bloques de construcción de la construcción, los algoritmos Poly1305 y ChaCha20, fueron diseñados independientemente, en 2005 y 2008, por Daniel J. Bernstein . [2] [3]

En marzo de 2013, se realizó una propuesta al grupo de trabajo TLS de la IETF para incluir Salsa20 , un ganador de la competencia eSTREAM [4] para reemplazar los antiguos conjuntos de cifrados basados ​​en RC4. A continuación, se realizó un debate en la lista de correo de TLS de la IETF con varias sugerencias de mejora, incluido el uso de Chacha20 en lugar de Salsa20 y el uso de un MAC basado en hash universal para el rendimiento. El resultado de este proceso fue la adopción de la propuesta de Adam Langley para una variante del algoritmo ChaCha20 original (que utiliza un contador de 32 bits y un nonce de 96 bits) y una variante del Poly1305 original (que autentica 2 cadenas) que se combinaron en un borrador de la IETF [5] [6] para usarse en TLS y DTLS , [7] y se eligió, por razones de seguridad y rendimiento, como un cifrado recientemente admitido. [8] Poco después de que IETF adoptara TLS, ChaCha20, Poly1305 y el modo combinado AEAD se agregaron a OpenSSH a través del [email protected]cifrado autenticado [9] [10] pero mantuvieron el contador de 64 bits y el nonce de 64 bits originales para el algoritmo ChaCha20.

En 2015, el algoritmo AEAD se estandarizó en RFC 7539 [11] y en RFC 7634 [12] para su uso en IPsec. Ese mismo año, Cloudflare lo integró como un conjunto de cifrado alternativo. [13]

En 2016, RFC 7905 [14] describe cómo usarlo en los protocolos TLS 1.2 y DTLS 1.2.

En junio de 2018, el RFC 7539 se actualizó y reemplazó por el RFC 8439. [1]

Descripción

El algoritmo ChaCha20-Poly1305 toma como entrada una clave de 256 bits y un nonce de 96 bits para cifrar un texto simple, [1] con una expansión de texto cifrado de 128 bits (el tamaño de la etiqueta). En la construcción ChaCha20-Poly1305, ChaCha20 se utiliza en modo contador para derivar un flujo de clave que se combina con el texto simple mediante la operación XOR. El texto cifrado y los datos asociados se autentican luego utilizando una variante de Poly1305 que primero codifica las dos cadenas en una. La forma en que se combinan un cifrado y un autenticador de un solo uso es exactamente idéntica a la construcción AES-GCM en la forma en que se utiliza el primer bloque para inicializar el autenticador y cómo se autentica luego el texto cifrado con una etiqueta de 16 bytes.

La principal diferencia externa con ChaCha20 es su tamaño de bloque de 64 bytes (512 bits), en comparación con los 16 bytes (128 bits) de AES-128 y AES-256. El mayor tamaño de bloque permite un mayor rendimiento en las CPU modernas y permite transmisiones más grandes antes de que se desborde el contador de 32 bits.

Cifrado ChaCha20-Poly1305
Cifrado ChaCha20-Poly1305

Variantes

XChaCha20-Poly1305 – variante nonce extendida

La construcción XChaCha20-Poly1305 es una variante nonce de 192 bits extendida de la construcción ChaCha20-Poly1305, que utiliza XChaCha20 en lugar de ChaCha20 . Al elegir nonces al azar, la construcción XChaCha20-Poly1305 permite una mayor seguridad que la construcción original. El borrador del intento de estandarizar la construcción expiró en julio de 2020. [15]

Salsa20-Poly1305 y XSalsa20-Poly1305

Salsa20-Poly1305 y XSalsa20-Poly1305 son variantes de los algoritmos ChaCha20-Poly1305 y XChaCha20-Poly1305, que utilizan Salsa20 y XSalsa20 en lugar de ChaCha20 y XChaCha20. Se implementan en NaCl [16] y libsodium [17], pero no están estandarizados. Las variantes que utilizan ChaCha son las preferidas en la práctica, ya que proporcionan una mejor difusión por ronda que Salsa. [2]

Variantes de ronda reducida

ChaCha20 se puede reemplazar con sus variantes de ronda reducida ChaCha12 y ChaCha8, lo que da como resultado ChaCha12-Poly1305 y ChaCha8-Poly1305. La misma modificación se puede aplicar a XChaCha20-Poly1305. Estas son implementadas por el equipo de RustCrypto y no están estandarizadas. [18]

Usar

ChaCha20-Poly1305 se utiliza en IPsec , [1] SSH , [19] TLS 1.2 , DTLS 1.2, TLS 1.3 , [14] [19] WireGuard , [20] S/MIME 4.0 , [21] OTR v4 [22] y otros protocolos, y se implementa en OpenSSL y libsodium . Además, el algoritmo se utiliza en el software de copia de seguridad Borg [23] para proporcionar cifrado de datos estándar y en el sistema de archivos de copia en escritura Bcachefs con el fin de cifrar opcionalmente todo el sistema de archivos. [24]

Actuación

ChaCha20-Poly1305 suele ofrecer un mejor rendimiento que el algoritmo AES - GCM más frecuente , excepto en sistemas donde las CPU tienen la extensión del conjunto de instrucciones AES-NI [1] . Como resultado, a veces se prefiere ChaCha20-Poly1305 sobre AES-GCM debido a sus niveles similares de seguridad y en ciertos casos de uso que involucran dispositivos móviles , que en su mayoría usan CPU basadas en ARM . Debido a que ChaCha20-Poly1305 tiene menos sobrecarga que AES-GCM, ChaCha20-Poly1305 en dispositivos móviles puede consumir menos energía que AES-GCM.

Seguridad

La construcción ChaCha20-Poly1305 es generalmente segura en el modelo estándar y el modelo de permutación ideal , para la configuración de usuario único y multiusuario. [25] Sin embargo, de manera similar a GCM , la seguridad se basa en la elección de un nonce único para cada mensaje cifrado. En comparación con AES-GCM, las implementaciones de ChaCha20-Poly1305 son menos vulnerables a los ataques de temporización .

Es de destacar que cuando el protocolo SSH utiliza ChaCha20-Poly1305 como primitivo subyacente, es vulnerable al ataque Terrapin .

Véase también

Enlaces externos

Referencias

  1. ^ abcdef Y. Nir; A. Langley (junio de 2018). ChaCha20 y Poly1305 para protocolos IETF. Grupo de trabajo de investigación de Internet (IRTF). doi : 10.17487/RFC8439 . ISSN  2070-1721. RFC 8439. Informativo. RFC 7539 obsoleto .
  2. ^ ab Bernstein, DJ (enero de 2008). ChaCha, una variante de Salsa20 (PDF) . El estado del arte de los cifrados de flujo. Vol. 8. págs. 3–5.
  3. ^ Bernstein, Daniel J. (2005), "El código de autenticación de mensajes Poly1305-AES", Fast Software Encryption , Lecture Notes in Computer Science, vol. 3557, Berlín, Heidelberg: Springer Berlin Heidelberg, págs. 32–49, doi : 10.1007/11502760_3 , ISBN 978-3-540-26541-2
  4. ^ Josefsson, Simon (marzo de 2013). El cifrado de flujo Salsa20 para seguridad de la capa de transporte (TLS) y seguridad de la capa de transporte de datagramas (DTLS). ID draft-josefsson-salsa20-tls-00.
  5. ^ Langley, Adam (septiembre de 2013). Conjuntos de cifrado basados ​​en ChaCha20 y Poly1305 para TLS. ID draft-agl-tls-chacha20poly1305-00.
  6. ^ Nir, Yoav (27 de enero de 2014). ChaCha20 y Poly1305 para protocolos IETF. ID draft-nir-cfrg-chacha20-poly1305-00.
  7. ^ Langley, Adam; Chang, Wan-Teh; Mavrogiannopoulos, Nikos; Strombergson, Joachim; Josefsson, Simon (24 de enero de 2014). El cifrado de flujo ChaCha para la seguridad de la capa de transporte. ID draft-mavrogiannopoulos-chacha-tls-01.
  8. ^ Bursztein, Elie (24 de abril de 2014). «Aceleración y fortalecimiento de las conexiones HTTPS para Chrome en Android». Blog de seguridad en línea de Google . Archivado desde el original el 28 de septiembre de 2016. Consultado el 27 de diciembre de 2021 .
  9. ^ Miller, Damien. "Referencia cruzada de BSD del superusuario: /OpenBSD/usr.bin/ssh/PROTOCOL.chacha20poly1305". bxr.su . Archivado desde el original el 13 de diciembre de 2013 . Consultado el 28 de diciembre de 2021 .
  10. ^ Miller, Damien (29 de noviembre de 2013). «ChaCha20 y Poly1305 en OpenSSH». Archivado desde el original el 13 de diciembre de 2013. Consultado el 28 de diciembre de 2021 .
  11. ^ Y. Nir; A. Langley (mayo de 2015). ChaCha20 y Poly1305 para protocolos IETF. Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC7539 . ISSN  2070-1721. RFC 7539. Obsoleto. Quedó obsoleto según RFC 8439.
  12. ^ Y. Nir, ed. (agosto de 2015). ChaCha20, Poly1305 y su uso en el Protocolo de intercambio de claves de Internet (IKE) e IPsec. Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC7634 . ISSN  2070-1721. RFC 7634. Norma propuesta.
  13. ^ "Haz el ChaCha: mejor rendimiento móvil con criptografía". El blog de Cloudflare . 23 de febrero de 2015. Consultado el 28 de diciembre de 2021 .
  14. ^ ab A. Langley; W. Chang; N. Mavrogiannopoulos; J. Strombergson; S. Josefsson (junio de 2016). Conjuntos de cifrado ChaCha20-Poly1305 para seguridad de la capa de transporte (TLS). Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC7905 . ISSN  2070-1721. RFC 7905. Norma propuesta. Actualizaciones RFC 6347 y 5246.
  15. ^ Arciszewski, Scott (10 de enero de 2020). XChaCha: eXtended-nonce ChaCha y AEAD_XChaCha20_Poly1305. ID draft-irtf-cfrg-xchacha.
  16. ^ "NaCl: Biblioteca de redes y criptografía - Cifrado autenticado con clave secreta". Archivado desde el original el 30 de junio de 2009.
  17. ^ "libsodium - Cifrado autenticado". Archivado desde el original el 4 de agosto de 2020.
  18. ^ "chacha20poly1305 - Rust". docs.rs . ChaCha8Poly1305 / ChaCha12Poly1305 - variantes no estándar de ronda reducida (protegidas por la función Cargo de ronda reducida). Consulte el documento Too Much Crypto para obtener información de fondo y fundamentos sobre cuándo se pueden usar estas construcciones. En caso de duda, prefiera ChaCha20Poly1305. XChaCha8Poly1305 / XChaCha12Poly1305: igual que el anterior, pero con un nonce extendido de 192 bits (24 bytes).
  19. ^ ab M. Thomson; S. Turner, eds. (mayo de 2021). Uso de TLS para proteger QUIC. Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC9001 . ISSN  2070-1721. RFC 9001. Norma propuesta.
  20. ^ Donenfeld, Jason A. "Protocolo y criptografía: WireGuard". www.wireguard.com . Consultado el 28 de diciembre de 2021 .
  21. ^ R. Housley (febrero de 2017). Uso del cifrado autenticado ChaCha20-Poly1305 en la sintaxis de mensajes criptográficos (CMS). Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC8103 . ISSN  2070-1721. RFC 8103. Norma propuesta.
  22. ^ OTRv4, OTRv4, 2021-12-25 , consultado el 2021-12-28
  23. ^ borg rcreate, borgbackup, 2022-08-03 , consultado el 2023-01-28
  24. ^ Overstreet, Kent (11 de septiembre de 2024). «Encriptación». bcachefs . Archivado desde el original el 26 de mayo de 2024 . Consultado el 8 de junio de 2024 .
  25. ^ Degabriele, Jean Paul; Govinden, Jérôme; Günther, Felix; Paterson, Kenneth G. (12 de noviembre de 2021), "La seguridad de ChaCha20-Poly1305 en el entorno multiusuario", Actas de la Conferencia ACM SIGSAC de 2021 sobre seguridad informática y de las comunicaciones , Nueva York, NY, EE. UU.: Association for Computing Machinery, págs. 1981–2003, doi :10.1145/3460120.3484814, ISBN 978-1-4503-8454-4, S2CID  244077782 , consultado el 27 de diciembre de 2021