- Signal introduce Sparse Post Quantum Ratchet (SPQR, ratchet poscuántico disperso) para mejorar de forma importante la seguridad del protocolo Signal, reforzando su resiliencia frente a futuras amenazas de la computación cuántica sin perder las garantías existentes de Forward Secrecy (FS) y Post-Compromise Security (PCS)
- El protocolo Signal es un conjunto de especificaciones criptográficas que proporciona cifrado de extremo a extremo para comunicaciones privadas que miles de millones de personas intercambian cada día en todo el mundo, y desde su publicación en 2013 ha sido adoptado no solo por la app Signal sino también por otros productos importantes de mensajería
- PQXDH, anunciado anteriormente, integró secretos criptográficos resistentes a la computación cuántica al establecer sesiones de chat para proteger contra ataques de tipo harvest-now-decrypt-later, pero SPQR logra las garantías de FS y PCS de forma segura frente a la computación cuántica, minimizando el impacto de una posible intrusión y permitiendo la recuperación a medida que la conversación continúa
- SPQR se combina con el Double Ratchet existente de Signal para formar una composición llamada Triple Ratchet; la experiencia de usuario no cambia y todas las conversaciones migran automáticamente al nuevo protocolo, protegiendo tanto las comunicaciones actuales como las futuras
- Mediante investigación académica (artículos en Eurocrypt 25 y USENIX 25), fragmentación basada en erasure codes y verificación formal (ProVerif, hax/F*), se validan mecánicamente la corrección del protocolo y sus propiedades de seguridad, y se vuelve a verificar con cada cambio dentro del pipeline de CI para mantenerlo como una parte dinámica del proceso de desarrollo
Resumen
- Signal eleva la seguridad de Signal Protocol con la introducción de Sparse Post Quantum Ratchet (SPQR)
- SPQR refuerza aún más la sólida seguridad existente y mejora la estructura de garantías de Forward Secrecy (FS) y Post-Compromise Security (PCS) para responder a futuras amenazas de la computación cuántica
- Se aplica de forma natural en todo el sistema, al punto de que los usuarios prácticamente no perciben el cambio, y asegura que las conversaciones permanezcan protegidas incluso si las computadoras cuánticas llegan a ser una realidad
Estado actual del protocolo Signal
- Signal Protocol es un estándar de mensajería con cifrado de extremo a extremo de uso cotidiano
- En el protocolo existente, la estructura de doble ratchet ha implementado la forward secrecy con funciones hash (seguras frente a la computación cuántica) y la post-compromise security mediante Elliptic Curve Diffie-Hellman (ECDH)
- ECDH es muy seguro hoy en día, pero existe el riesgo de que en el futuro se vuelva vulnerable ante computadoras cuánticas
- Un ratchet es una técnica que genera nuevas claves secretas a lo largo de la conversación para evitar que se exponga el contenido de mensajes anteriores o posteriores
- Alice y Bob acuerdan periódicamente nueva información secreta ECDH para renovar la sesión
Necesidad de combinar elementos de seguridad cuántica
- Las computadoras cuánticas pueden inutilizar esquemas tradicionales de criptografía asimétrica como ECDH
- Como preparación, en la primera adopción llamada PQXDH se mezcló información secreta segura frente a la computación cuántica al inicio de la sesión
- Se hizo evidente la necesidad de intercambiar claves de forma continua durante la conversación mediante un Key Encapsulation Mechanism (KEM) basado en algoritmos seguros frente a la computación cuántica
- Un KEM genera un secreto compartido como Diffie-Hellman, pero requiere el intercambio de mensajes asimétricos ordenados
- Con KEM estandarizados como ML-KEM se generan secretos continuos y seguros frente a la computación cuántica durante la sesión
Máquina de estados y optimización de ancho de banda
- Como los esquemas KEM manejan datos de intercambio de claves grandes (alrededor de 1000 bytes), la optimización del ancho de banda de comunicación es un tema importante
- Se utiliza lógica de máquina de estados para gestionar qué datos (Encapsulation Key, Ciphertext, etc.) intercambian Alice y Bob y en qué momento
- Mediante la fragmentación de datos y el uso de erasure codes, los datos grandes se dividen en partes pequeñas para facilitar la recuperación ante pérdida u omisión de mensajes
- También está diseñado para dificultar que un atacante provoque la interrupción del protocolo descartando selectivamente solo los fragmentos del intercambio de claves
- Esto permite manejar de forma eficaz pérdidas de mensajes, reordenamientos y demoras en entornos móviles reales
Trade-off entre eficiencia y seguridad, y optimización
- Si se acelera sin más la generación de shared secrets, puede aumentar el riesgo de que toda la información secreta de un momento determinado quede expuesta en caso de ataque
- Signal realizó numerosas simulaciones de máquinas de estados para encontrar un punto de equilibrio entre seguridad y eficiencia entre transmisiones en paralelo y en serie
- Analizó en detalle el proceso interno de ML-KEM y maximizó el aprovechamiento del ancho de banda con técnicas como dividir y transmitir simultáneamente los fragmentos
- A este proceso lo llamaron ML-KEM Braid y lo usan como un módulo dentro de su propio protocolo
Estructura de Triple Ratchet
- El Double Ratchet existente y SPQR (nuevo y seguro frente a la computación cuántica) funcionan juntos, y sus claves se combinan para generar claves de cifrado híbridas
- En el esquema de Triple Ratchet, el riesgo de exposición de mensajes existe solo si ambos algoritmos son vulnerados, por lo que la seguridad aumenta de forma drástica
- En la implementación real, se toman claves tanto del Double Ratchet como de SPQR y se combinan una vez más mediante una función de derivación de claves
- La estructura de Triple Ratchet garantiza seguridad tanto cuántica como clásica para mensajes pasados y futuros
Adopción heterogénea y manejo de compatibilidad
- Como la actualización se aplica de forma gradual, pueden surgir problemas de compatibilidad con usuarios que aún no tengan SPQR
- El diseño permite temporalmente una degradación durante la negociación inicial del mensaje para que ambos usuarios puedan comunicarse con un método compatible entre sí
- Cuando se adjuntan datos SPQR a un mensaje, estos quedan protegidos por un código de autenticación para impedir que un atacante fuerce una degradación
- Una vez que ambas partes completan la negociación de compatibilidad, la decisión de usar SPQR queda fijada para toda la sesión
- Cuando todos los usuarios hayan actualizado a una versión compatible con SPQR, las sesiones antiguas se archivarán o cerrarán, y las nuevas sesiones aplicarán SPQR por completo
Validación de seguridad del protocolo y herramientas de verificación
- Desde la etapa de diseño del protocolo hubo una colaboración activa con investigadores académicos, además de PQShield, AIST, NYU y otros
- Artículos académicos en Eurocrypt 25, USENIX 25 y otros espacios demuestran que el protocolo cumple teóricamente con la seguridad poscuántica y con las garantías clásicas requeridas
- De los seis protocolos de ratchet poscuántico propuestos, sobrevivieron SPQR y Katana (un nuevo protocolo basado en KEM)
- La verificación formal se gestiona de forma automatizada y continua con herramientas como Cryspen, ProVerif, hax y F*, además del pipeline de CI
- La sincronización entre la implementación en Rust y el modelo de verificación garantiza la correspondencia entre el diseño y el código real
- Durante la implementación también se introducen activamente condiciones invariantes (
assertion) en el código, de modo que si ocurre un error la app se detiene para prevenir de antemano posibles vulnerabilidades
Verificación y desarrollo continuo en paralelo
- El proceso de verificación formal no es un trabajo de una sola vez, sino que se ejecuta automáticamente cada vez que hay cambios en la base de código
- Si la verificación falla al fusionar código nuevo, tampoco se permite la compilación
- En la práctica, si se gestionan con claridad los errores en valores límite y las precondiciones/postcondiciones, el mantenimiento se vuelve manejable y también es posible maximizar la solidez del protocolo
Conclusión resumida
- Signal busca ofrecer seguridad poscuántica para todos los mensajes mediante la introducción de una confiable estructura de Triple Ratchet (Double Ratchet + SPQR)
- La transición del protocolo se realizará de manera gradual, sin interrupciones del servicio ni molestias para los usuarios
- El aumento del volumen de datos transmitidos será mínimo, por lo que el costo en entornos móviles será casi nulo
- El protocolo es resistente incluso a ataques de intermediario (MITM), ya que para manipularlo un atacante tendría que provocar una condición de denegación de servicio
- El código y el diseño se verifican formalmente de manera sistemática y seguirán manteniendo su seguridad en el futuro
- Desde la perspectiva del usuario de Signal, se espera un entorno en el que tanto el cambio de protocolo como la amenaza de las computadoras cuánticas queden resueltos sin hacerse visibles
1 comentarios
Comentarios en Hacker News
Signal sigue publicando artículos de criptografía realmente excelentes, pero desde la perspectiva del producto da la impresión de que están probando cosas al azar sin saber qué va a funcionar. Están intentando cosas nuevas como el handshake post-cuántico, las historias y las transferencias de dinero, pero todavía faltan un SDK, una API y soporte para bots. Las bibliotecas oficiales están incompletas y no hay documentación. Muchas funciones siguen ocultas en el cliente. Han publicado la especificación del protocolo, pero decirle a la gente que construya sus propias bibliotecas a partir de eso es una actitud irresponsable y totalmente alejada de cómo se opera un producto real. Es increíble que una plataforma usada por millones no tenga cubiertas estas bases. Apps como WhatsApp e iMessage al menos abren algo a los desarrolladores, pero Signal parece excluir por completo todo lo relacionado con desarrolladores. Cuesta encontrar una estrategia clara, al punto de preguntarse si siquiera tienen responsables de producto. Como usuario de Signal desde hace años y alguien que lo ha promovido activamente, siento que Signal se ha convertido en un mensajero más cerrado para desarrolladores que incluso el ecosistema de Apple, pegándole encima tecnologías de cifrado de moda. Aun así, agradezco a quienes construyen el producto
Totalmente de acuerdo. En especial la función de "historias" sí dio muchísimo la sensación de que simplemente la lanzaron a ver qué pasaba. Como Signal viene de una organización sin fines de lucro con inclinaciones anarquistas, creo que sus objetivos de base son distintos a los de una empresa común. La app cumple bien su misión principal, así que está bien, pero de verdad sería genial que hubiera un SDK
Me pregunto si funciones como una API o bots empresariales son realmente tan importantes. WhatsApp e iMessage tienen APIs para negocios, pero como usuario normal nunca he interactuado realmente con una empresa por medio de eso. Más bien, a veces solo me ha tocado lidiar con bots molestos. El verdadero problema en Signal es que si la app se queda silenciosamente desactualizada o deja de actualizarse, no te avisa y simplemente pierdes mensajes por completo. Esa es la misión central de un mensajero, y no la está cumpliendo
De hecho, para mí que no haya API ni bots es más bien una ventaja
Yo preferiría que se concentraran en hacer un mensajero seguro y útil como ahora, sin esas funciones
Lo que de verdad me desespera de Signal es que el tono de llamada que escucha quien llama suena aunque el teléfono del destinatario no esté sonando en realidad. Es una política oficial que llevan tiempo defendiendo como algo intencional. Siguen así desde que quitaron aquel viejo sonido de submarino
Me sorprendió ver que el nombre del protocolo de Signal es SPQR. SPQR es la sigla en latín de "Senatus Populusque Romanus" ver Wikipedia. Está buenísimo
Usar SPQR para el nombre de un protocolo futurista tiene algo muy Ozymandias
Es un nombre brillantemente elegido. Ya lo conocía bien porque aparece seguido como tatuaje de los legionarios romanos en la miniserie de la BBC "Rome" Wikipedia de Rome
Strength and Honor (Fuerza y honor)
Siento que este tipo de humor solo se ve en Hacker News. Me recordó una viñeta de antes sobre "cómo un matemático memoriza el número de su casillero". ("¿1975? ¡Esa es la raíz cuadrada de 3,900,625!")
¿Y si simplemente lo llamaron así porque "SPQR" suena como "Speaker" y va bien con una app de chat? No todo tiene que estar relacionado con Roma
La mayor debilidad de Signal es su forma de distinguir identidades mediante números telefónicos. No solo los hackers, también los gobiernos autoritarios pueden apoderarse de un número en cualquier momento. Está bien pensar en amenazas futuras, pero las prioridades deberían ser otras
Lo comparto por si alguien aún no lo sabía: Signal presenta nombres de usuario para mantener privado el número telefónico (febrero de 2024)
Muchos mensajeros seguros funcionan perfectamente sin número telefónico, e incluso ofrecen el servicio eliminando metadatos. En países donde el número telefónico y la SIM están vinculados a la identidad personal, el enfoque de Signal es una barrera de entrada
Exigir un número telefónico es una forma fácil y confiable de prevenir spam
No siento que verificar la identidad por número telefónico sea, por sí mismo, un problema fatal. Aunque un gobierno autoritario se apropie del número, eso no significa que vaya a obtener el historial de mensajes. El usuario afectado ya recibiría una advertencia. Signal no está libre de problemas, y hace falta criticarlo y ponerle estándares altos, pero sigue siendo el único mensajero con cifrado de extremo a extremo completo y protección de metadatos que una persona común puede usar. Hay servicios más fuertes en seguridad y privacidad, pero que hasta mi abuela pueda usarlo es algo realmente importante. Me gustaría que Signal, ahora que ya tiene la seguridad bastante consolidada, se enfocara más en la privacidad. Aunque lo critico, lo sigo recomendando con mucha fuerza y se lo sugiero activamente a mis amigos. También he donado varias veces ver el informe de transparencia de Signal
Signal tiene una función llamada "bloqueo de registro" que, si configuras una contraseña, evita que te roben la cuenta mediante secuestro de la SIM
Me da curiosidad en qué posición queda Signal ahora que implementó SPQR (el ratchet resistente a computación cuántica), comparado con PQ3 de iMessage. También me gustaría oír un análisis de los intentos previos de mensajería resistente a lo cuántico de Cyph y Simplex. Presentación de PQ3 en iMessage / Cyph - Post-Quantum Castle / Simplex - funciones resistentes a computación cuántica
El SPQR de Signal usa, igual que PQ3, una estructura de ratchet basada en ML-KEM, pero la forma de transmitir las claves es distinta. Como las claves de ML-KEM son grandes, PQ3 las envía solo de vez en cuando de forma periódica, mientras que Signal las reparte junto con los mensajes. La idea es que, en términos de ancho de banda oculto y seguridad, el chunking resulta incluso más seguro y eficiente. Por el código de corrección de errores puede aumentar el ancho de banda total, pero el tamaño de cada mensaje se mantiene constante. Apple, como tiene mucho más control sobre la red, probablemente lo tiene más fácil para defenderse de reemplazos agresivos de claves
No estoy seguro de que iMessage sea tan relevante en la práctica hoy en día. La razón es que la mayoría de usuarios de iPhone usa respaldo en iCloud sin E2E, y el respaldo completamente cifrado es opcional. O sea, si llega una solicitud de las autoridades, Apple puede descifrarlo, así que ni siquiera hace falta esperar a una computadora cuántica para que ya sea bastante vulnerable
Al ver el nombre SPQR (Sparse Post-Quantum Ratchet), parece que en el equipo de Signal hay un fanático de la historia romana
¿Qué tan seguido piensa la gente en el Imperio romano?
Quizá también podría ser una variación del término ideal para una app de chat: "Speaker"
La mayor debilidad de Signal es la autenticación de identidad basada en número telefónico. No solo los hackers: también los gobiernos autoritarios siempre corren el riesgo de apropiarse de la titularidad del número. Está bien pensar en amenazas futuras, pero las prioridades deberían cambiar
Me gustaría que Signal se convirtiera en la capa de transporte de mensajes, es decir, en un "bus de transporte". Por ejemplo, si pudiera solicitar y compartir de forma segura mi ubicación con un contacto específico, como mi esposa, ya no tendría que pasar por Google. La autenticación de identidad ya está resuelta, así que creo que ahora deberían fomentar que se construyan apps sobre Signal. Incluso 2FA por Signal sería más seguro que por SMS
También me gustaría mucho ver una comparación entre el protocolo moderno de Signal y cosas como Matrix o MLS. Evoluciona tan rápido que cuesta seguirle el paso, así que tengo curiosidad por entender la relación entre ellos en este momento
Matrix es un estándar abierto que usa la combinación Olm + Megolm (Double Ratchet + ratchet de clave grupal), y su estructura hace visibles los metadatos al servidor (estructura de grupos expuesta al servidor, atributos almacenados en texto plano, etc., aunque hay trabajo en curso para mejorarlo: Blog de Element - plan para cifrar metadatos de salas). Como es descentralizado, cualquiera puede montar un servidor.
Por último, MLS (RFC 9420) es un protocolo de membresía grupal e intercambio de claves que puede reemplazar a Double Ratchet, y recientemente también se han propuesto adaptaciones poscuánticas. Su rendimiento es eficiente, con O(log N) por grupo. Aún no está maduro y es más complejo que Double Ratchet. Su adopción va más lenta, pero como estándar de la IETF, Google lo está usando en RCS y Discord/Webex VoIP, entre otros. No ofrece ocultamiento de metadatos ni negación criptográfica (deniability)
Este es de lejos el mejor texto sobre criptografía que he leído. Me considero alguien con un nivel decente de comprensión en estos temas, pero con otros textos parecidos de verdad se me cansaba la vista a mitad de camino; en cambio, este logró que pudiera seguir perfectamente el hilo incluso tratando un tema totalmente desconocido
¿Alguien que entienda bien la amenaza de la criptografía cuántica puede explicar de forma sencilla cómo el protocolo más reciente de Signal se volvió más seguro? Aunque lo lea, no termino de entender exactamente por qué es más seguro. También me gustaría saber si hay alguna pérdida de velocidad perceptible en el uso real
Explicado de forma simple: el escenario de amenaza estándar es que un adversario de los buenos reúna hoy tráfico cifrado que no puede descifrar todavía, pero que en el futuro sí podría descifrar de una sola vez cuando existan computadoras cuánticas. Ese es el modelo de "harvest and decrypt". Si hay secretos que Signal necesita mantener por mucho tiempo o proteger de aquí en adelante, entonces desde hoy se necesita un acuerdo de claves PQ. Esa es la razón de protocolos nuevos como PQXDH.
El ratchet PQ es importante porque existe una amenaza muy realista: que un atacante no solo recopile cifrados a largo plazo, sino que además en algún momento logre hackear un dispositivo o explotar un fallo de implementación y obtenga claves. Ahí hacen falta dos capas de defensa: forward secrecy y post-compromise security. Si las claves se siguen renovando constantemente, incluso si hay una exposición en algún momento, eso no pone automáticamente en riesgo ni los mensajes pasados ni los futuros. Para que esa defensa siga funcionando también en un entorno de criptografía cuántica, toda la estructura del ratchet debe completarse en versión PQ. Si no, el atacante solo apuntaría a la parte del ratchet y toda la seguridad se vendría abajo
La implementación anterior de criptografía resistente a computación cuántica en Signal no tenía PCS (seguridad posterior al compromiso). Esta vez sí la tiene. Me alegró por fin entender qué significaba PCS. Sonaba como un concepto nuevo y prometedor, aunque fue un poco decepcionante saber que es algo que el protocolo OTR (Off-the-Record) ya usaba. Este intercambio de claves no ocurre tan seguido, así que prácticamente no hay impacto real en el rendimiento
Resumen del blog oficial:
Sono pazzi, questi Romani (estos romanos están locos)