Articulo de referencia

Algoritmo de doble trinquete

Paso de trinquete completo en el algoritmo de doble trinquete. La función de derivación de clave (KDF) proporciona el mecanismo de trinquete. El primer "trinquete" se aplica a l...

Paso de trinquete completo en el algoritmo de doble trinquete. La función de derivación de clave (KDF) proporciona el mecanismo de trinquete. El primer "trinquete" se aplica a la clave raíz simétrica, el segundo trinquete a la clave Diffie-Hellman (DH) asimétrica. [ 1 ]

En criptografía , el algoritmo Double Ratchet (anteriormente conocido como Axolotl Ratchet [ 2 ] [ 3 ] ) es un algoritmo de gestión de claves desarrollado por Trevor Perrin y Moxie Marlinspike en 2013. Puede utilizarse como parte de un protocolo criptográfico para proporcionar cifrado de extremo a extremo en la mensajería instantánea . Tras un intercambio inicial de claves, gestiona la renovación y el mantenimiento continuos de las claves de sesión de corta duración. Combina un mecanismo criptográfico denominado "trinquete" basado en el intercambio de claves Diffie-Hellman (DH) y un mecanismo basado en una función de derivación de claves (KDF), como una función hash , por lo que se denomina doble trinquete.

El algoritmo proporciona confidencialidad directa para los mensajes y renegociación implícita de las claves directas; propiedades que dan nombre al protocolo. [ 4 ]

Esto se ha extendido a partir de octubre de 2025 al Sparse Post Quantum Ratchet (SPQR) con un CRYSTALS-Kyber quantum ratchet para proporcionar garantías de seguridad post-cuántica hacia adelante y seguridad post-compromiso en lo que los autores de Signal llaman un Triple Ratchet . [ 5 ]

Historia

El algoritmo Double Ratchet fue desarrollado por Trevor Perrin y Moxie Marlinspike ( Open Whisper Systems ) en 2013 e introducido como parte del Protocolo Signal en febrero de 2014. El diseño del algoritmo Double Ratchet se basa en el trinquete DH introducido por Off-the-Record Messaging (OTR) y lo combina con un trinquete de clave simétrica modelado a partir del Protocolo de Mensajería Instantánea Silent Circle (SCIMP). El trinquete recibió inicialmente el nombre de la salamandra acuática axolotl , en peligro crítico de extinción, que posee extraordinarias capacidades de autorreparación. [ 6 ] En marzo de 2016, los desarrolladores cambiaron el nombre del Axolotl Ratchet a Double Ratchet Algorithm para diferenciarlo mejor del protocolo completo, [ 3 ] porque algunos habían usado el nombre Axolotl al referirse al Protocolo Signal. [ 7 ] [ 3 ]

Descripción general

Un GIF de un trinquete moviéndose que muestra que el mecanismo solo puede moverse en una dirección.
Un trinquete mecánico

El algoritmo Double Ratchet presenta propiedades que han estado disponibles durante mucho tiempo en sistemas de cifrado de extremo a extremo: cifrado del contenido durante todo el trayecto, autenticación del interlocutor remoto y protección contra la manipulación de mensajes. Como híbrido de los algoritmos DH y KDF , combina varias características deseables de ambos principios. De la mensajería OTR, hereda las propiedades de confidencialidad directa y restablecimiento automático de la confidencialidad en caso de que se vea comprometida una clave de sesión, confidencialidad directa incluso si se ve comprometida la clave principal persistente secreta y negación plausible de la autoría de los mensajes. Además, permite la renovación de la clave de sesión sin interacción con el interlocutor remoto mediante el uso de algoritmos KDF secundarios. Se realiza un paso adicional de derivación de clave para permitir la retención de las claves de sesión para mensajes fuera de orden sin poner en riesgo las claves siguientes.

Se dice que detecta la reordenación, la eliminación y la reproducción de los mensajes enviados, y mejora las propiedades de confidencialidad directa contra la interceptación pasiva en comparación con la mensajería OTR.

Combinado con la infraestructura de clave pública para la retención de claves pregeneradas de un solo uso (preclaves), permite la inicialización de sesiones de mensajería sin la presencia del par remoto ( comunicación asíncrona ). El uso del intercambio de claves Diffie-Hellman triple (3-DH) como método de intercambio de claves inicial mejora las propiedades de negación. Un ejemplo de esto es el Protocolo Signal, que combina el algoritmo Double Ratchet, preclaves y un handshake 3-DH. [ 8 ] El protocolo proporciona confidencialidad, integridad, autenticación, consistencia del participante, validación del destino, secreto hacia adelante, secreto hacia atrás (también conocido como secreto futuro), preservación de la causalidad, desvinculación de mensajes, repudio de mensajes, repudio de participación y asincronía. [ 9 ] No proporciona preservación del anonimato y requiere servidores para el reenvío de mensajes y el almacenamiento de material de clave pública. [ 9 ]

Marcha

Diagrama del principio de funcionamiento

Un cliente intenta renovar la clave de sesión de forma interactiva con el interlocutor remoto mediante un algoritmo Diffie-Hellman (DH). Si esto no es posible, los clientes renuevan la clave de sesión de forma independiente mediante un algoritmo hash. Con cada mensaje, un cliente avanza uno de los dos algoritmos hash: uno para enviar y otro para recibir. Estos dos algoritmos se inicializan con un secreto común proveniente de un algoritmo DH. Al mismo tiempo, intenta aprovechar cada oportunidad para proporcionar al interlocutor remoto un nuevo valor DH público y avanzar el algoritmo DH cada vez que recibe un nuevo valor DH del interlocutor remoto. Tan pronto como se establece un nuevo secreto común, se inicializa un nuevo algoritmo hash.

Como primitivas criptográficas, el algoritmo Double Ratchet utiliza

para el trinquete DH
Curva elíptica Diffie-Hellman (ECDH) con Curve25519 ,
para códigos de autenticación de mensajes (MAC, autenticación)
Código de autenticación de mensajes hash con clave (HMAC) basado en SHA-256 ,
para cifrado simétrico
el Estándar de Cifrado Avanzado (AES), parcialmente en modo de encadenamiento de bloques de cifrado (CBC) con relleno según PKCS  #5 y parcialmente en modo de contador (CTR) sin relleno,
para el trinquete de hash
HMAC. [ 10 ]

Aplicaciones

A continuación se presenta una lista de aplicaciones que utilizan el algoritmo de doble trinquete o una implementación personalizada del mismo.

Redes federadas

Redes centralizadas

El algoritmo Double Ratchet no pretende solucionar la vulnerabilidad inherente de las redes centralizadas a las puertas traseras que introducen fallos en la implementación del algoritmo, el protocolo criptográfico (del que forma parte) o su implementación, ni en partes no relacionadas de la aplicación oficial. No obstante, se ha implementado en varios clientes oficiales para diversas redes centralizadas.

Notas

  1. Solo en "conversaciones secretas"
  2. 1 2 3 4 5 6 7 8 Mediante el protocolo de señales
  3. Solo en "modo incógnito"
  4. Solo en chats RCS individuales
  5. Mediante el protocolo Zina
  6. Solo en "conversaciones privadas"
  7. Viber "utiliza los mismos conceptos del protocolo de "doble trinquete" que se usa en la aplicación Signal de Open Whisper Systems".
  8. Mediante el protocolo Proteus

Referencias

  1. Trevor Perrin (editor), Moxie Marlinspike, " El algoritmo de doble trinquete ". Revisión 1, 2016-11-20
  2. Perrin, Trevor (30 de marzo de 2016). "Comparar revisiones" . GitHub . Recuperado el 9 de abril de 2016 .
  3. 1 2 3 Marlinspike, Moxie (30 de marzo de 2016). "Señal en el exterior, señal en el interior" . Open Whisper Systems . Recuperado el 31 de marzo de 2016 .
  4. Cohn-Gordon, K.; Cremers, C.; Garratt, L. (2016). "Sobre la seguridad posterior a la vulneración" . 2016 IEEE 29th Computer Security Foundations Symposium (CSF) . pp. 164–178 . doi : 10.1109/CSF.2016.19 . ISBN  978-1-5090-2607-4. S2CID 5703986 . 
  5. https://signal.org/blog/spqr
  6. Ksenia Ermoshina, Francesca Musiani. «Estandarización mediante código en ejecución»: el protocolo Signal y la estandarización de facto en la mensajería cifrada de extremo a extremo. Historias de Internet, 2019, pp. 1-21. 10.1080/24701475.2019.1654697 . halshs-02319701
  7. ^ Cohn-Gordon y col. 2016 , pág. 1 
  8. ^ Unger y col. 2015 , pág. 241 
  9. ^ Unger y cols. 2015 , pág. 239 
  10. Frosch et al. 2014
  11. Butcher, Mike (19 de septiembre de 2016). "Riot quiere ser como Slack, pero con la flexibilidad de una plataforma subyacente de código abierto" . TechCrunch . AOL Inc. Recuperado el 20 de septiembre de 2016 .
  12. "Seguridad" . Cryptocat. Archivado del original el 7 de abril de 2016. Consultado el 14 de julio de 2016 .
  13. ^ Viacheslav Karpukhin. "OMEMO para Psi · GitHub" . GitHub . Consultado el 4 de marzo de 2018 .
  14. Richard Bayerle. "lurch - OMEMO para libpurple" . GitHub . Consultado el 12 de febrero de 2017 .
  15. Olivier Mehani. "Lurch4Adium - OMEMO Xtra para Adium" . GitHub . Consultado el 8 de junio de 2017 .
  16. René Calles. "profanity-omemo-plugin: Un complemento de Python para usar el cifrado (axolotl / Signal Protocol) para el mensajero XMPP de lenguaje soez" . GitHub . Consultado el 10 de enero de 2017 .
  17. Greenberg, Andy (4 de octubre de 2016). "Ya todos pueden cifrar Facebook Messenger, así que háganlo" . Wired . Condé Nast . Consultado el 5 de octubre de 2016 .
  18. Seals, Tara (17 de septiembre de 2015). "G DATA añade cifrado para un chat móvil seguro" . Infosecurity Magazine . Reed Exhibitions Ltd. Consultado el 16 de enero de 2016 .
  19. "SecureChat" . GitHub . Datos de G. Consultado el 14 de julio de 2016 .
  20. Greenberg, Andy (18 de mayo de 2016). "Con Allo y Duo, Google finalmente cifra las conversaciones de extremo a extremo" . Wired . Condé Nast . Consultado el 14 de julio de 2016 .
  21. Amadeo, Ron (16 de junio de 2021). "Google habilita el cifrado de extremo a extremo para la aplicación predeterminada de SMS/RCS de Android" . Ars Technica . Consultado el 3 de marzo de 2022 .
  22. "Atribuciones de Haven" . GitHub . Proyecto Guardian . Consultado el 22 de diciembre de 2017 .
  23. Lee, Micah (22 de diciembre de 2017). "La nueva aplicación de Snowden usa tu teléfono inteligente para proteger físicamente tu computadora portátil" . The Intercept . First Look Media . Recuperado el 22 de diciembre de 2017 .
  24. Langley, Adam (9 de noviembre de 2013). "Cable en nuevo sistema de trinquete" . GitHub (contribución a GitHub) . Recuperado el 16 de enero de 2016 .
  25. "Silent Circle/libzina" . Github . Silent Circle . Consultado el 19 de diciembre de 2017 .
  26. Lund, Joshua (11 de enero de 2018). "Signal se asocia con Microsoft para llevar el cifrado de extremo a extremo a Skype" . Open Whisper Systems . Consultado el 11 de enero de 2018 .
  27. "Descripción general del cifrado de Viber" (PDF) . Viber. 25 de julio de 2018. Consultado el 26 de octubre de 2018 .
  28. Metz, Cade (5 de abril de 2016). "Olvídate de Apple contra el FBI: WhatsApp acaba de activar el cifrado para mil millones de personas" . Wired . Condé Nast . Consultado el 5 de abril de 2016 .
  29. "Documento técnico sobre seguridad de cables" (PDF) . Wire Swiss GmbH. 17 de agosto de 2018. Consultado el 28 de agosto de 2020 .

Literatura

  • Cohn-Gordon, Katriel; Cremers, Cas; Dowling, Benjamin; Garratt, Luke; Stebila, Douglas (25 de octubre de 2016). "Análisis formal de seguridad del protocolo de mensajería Signal" (PDF) . Archivo de preimpresiones de criptología . Asociación Internacional para la Investigación Criptológica (IACR).
  • Frosch, Tilman; Mainka, Christian; Bader, Christoph; Bergsma, Florian; Schwenk, Jörg; Holz, Thorsten (2014). "¿Qué tan seguro es TextSecure?" (PDF) . Archivo de preimpresiones de criptología . Asociación Internacional para la Investigación Criptológica (IACR) . Recuperado el 16 de enero de 2016 .
  • Unger, Nik; Dechand, Sergej; Bonneau, Joseph; Fahl, Sascha; Perl, Henning; Goldberg, Ian Avrum; Smith, Matthew (2015). SoK: Mensajería segura (PDF) . Actas del Simposio IEEE de 2015 sobre Seguridad y Privacidad. Comité Técnico de Seguridad y Privacidad de la Sociedad de Computación IEEE. págs. 232–249 . doi : 10.1109/SP.2015.22 . 
  • Especificación de Open Whisper Systems
  • " Trincheo criptográfico avanzado ", descripción abstracta de Moxie Marlinspike
  • Olm : Implementación en C++ bajo la licencia Apache 2.0.
  • Vodozemac : Implementación en Rust de la variante Olm, bajo la licencia Apache 2.0.
  • Algoritmo de doble trinquete: El juego de ping-pong que cifra Signal y WhatsApp en YouTube (exposición)