El ataque a la infraestructura de OpenPGP, consecuencias de las acciones de un “hijo de…”

Sergio De Los Santos    1 julio, 2019
El ataque a la infraestructura de OpenPGP, consecuencias de las acciones de un “hijo de…”

Lo que está pasando con el ataque a la infraestructura de OpenPGP es un desastre en palabras de los afectados que mantienen el protocolo. Robert J. Hansen, que ha comunicado el incidente, ha calificado literalmente de “hijo de puta” al atacante, que se está dedicando al vandalismo con los certificados públicos, aprovechando fundamentalmente dos funcionalidades que se han convertido en serios problemas.

Un poco de conocimiento previo

En la red de pares de certificados públicos, donde cualquiera puede encontrar la clave pública PGP de una persona, no se borra jamás nada, nunca. Esto se decidió así (allá por los 90) por diseño para resistir a los potenciales ataques de gobiernos que quisieran censurar. Recordemos que todo el movimiento de cifrado libre nació como expresión de “rebeldía” precisamente por el intento de control de la criptografía desde las altas esferas.

Como no existe una entidad certificadora central, PGP se basa en algo mucho más horizontal. Son los propios usuarios los que firman un certificado atestiguando que pertenece a quien dices ser. Cualquiera puede firmar un certificado público, dando fe de que pertenece a la persona que dice ser. En los 90 se celebraban “quedadas” donde los interesados se intercambiaban disquetes con sus firmas, para (independientemente de que lo conocieran o no) firmaran sus claves públicas. Con la popularización de internet esto se tradujo en una red de servidores que alojan las claves públicas. Puedes encontrar ahí las claves y dado el caso, firmar una atestiguando que pertenece a quien dice ser. Y cualquiera las puede firmar un número indeterminado de veces, alegando con su propia firma que el certificado pertenece a quien dice. Esto añade una firma de cierto número de bytes al certificado. Para siempre.

El ataque

El ataque que están llevando a cabo consiste en firmar miles de veces (hasta 150.000 por ahora) los certificados públicos y subirlos a la red de pares de certificados, donde nunca serán borrados. En la práctica, los certificados válidos comienzan a pesar varias decenas de megas al poco tiempo. Los firman sin datos, como se puede ver en la imagen. Por ahora se han centrado en atacar a dos personas muy relevantes del gremio del movimiento OpenPGP: Robert J. Hansen y Daniel Kahn Gillmor.

El problema es que en estas circunstancias, Enigmail y cualquier implementación OpenPGP simplemente deja de funcionar o tarda muchísimo al procesar certificados tan pesados (varias decenas de megas ralentiza en decenas de minutos). Por ejemplo, 55.000 firmas consiguen un certificado de 17 megas. A efectos prácticos, esto inutiliza el keyring. Una persona quiere verificar las firmas de Daniel o Robert, y al importarlas, romperá su instalación.

“Si la red de servidores fuera ilegalizada, los usuarios de PGP tendrían más privacidad”…

Así, el ataque aprovecha dos circunstancias difíciles de solucionar (son funcionalidades por diseño), con lo que se trata de puro vandalismo :

  • Que no haya límite en el número de firmas. Si lo hubiera, también sería un problema, puesto que el atacante podría alcanzar el límite de firmas de confianza de un certificado e impedir que cualquier otro confiara de nuevo en él.
  • Los servidores SKS replican el contenido y el conseguirlo es parte del diseño por si un organismo interviniese. Así que lo que se hace, no puede ser borrado.

¿Y por qué no se arregla?

El sistema de sincronización del sistema de red de (Synchronizing Key Server) es código libre pero está desmantenido en la práctica. Fue creado como una tesis de Yaron Minsky en lenguaje OCaml. Aunque suene extraño, nadie sabe cómo va realmente y necesitarían no arreglar esto sino cuestionar el diseño en sí.

Él mismo se considera “programador ocasional” de este lenguaje, aunque esperamos que sea un ejercicio de modestia

Están reportando soluciones, como no refrescar las claves afectadas y otras mitigaciones o hacerlo desde el servidor keys.openpgp.org, que implementa ciertas restricciones al problema a cambio de perder otras funcionalidades. Pero como dice el propio Hansen: no cree que la red actual sea salvable.

Pero lo peor podría está por llegar. Los paquetes de repositorios de software de distribuciones suelen están firmados con OpenPGP. ¿Y si comienzan a atacar a estos certificados? La actualización de software desde distribuciones puede volverse muy lenta e inusable. Pone en riesgo la actualización de sistemas que podrían ser críticos. Esto puede suponer un efecto llamada para otros atacantes, puesto que explotar el fallo es relativamente sencillo.

¿Conclusiones?

Se sabía que la red podía ser abusada, pero no se esperaba este acto de vandalismo “gratuito”  a este nivel porque según los afectados, no se entiende el objetivo más allá de echar por tierra el trabajo altruista de personas que intentan que el cifrado sea un derecho libre. Se destila así el derrotismo del tono de los mensajes de los afectados, donde se percibe frustración, enfado y cierto pesimismo con frases como “esto es un desastre que se veía venir”, “no tiene solución”, etc. Esta frase final es demoledora:

But if you get hit by a bus while crossing the street, I’ll tell the driver everyone deserves a mulligan once in a while.

You fool. You absolute, unmitigated, unadulterated, complete and utter, fool.

Peace to everyone — including you, you son of a bitch. (Mulligan se refiere a “una segunda oportunidad” en la jerga del golf.)

Llaman la atención varias lecciones:

  • El hecho de que el código core de la red se encuentre en un lenguaje tan desconocido, y prácticamente no haya sido mantenido desde entonces precisamente por funcionar tan perfectamente bien.
  • Que gnuPG (la implementación de OpenPGP) o Enigmail (que al fin y al cabo usa genuPG) no puedan trabajar con certificados de varios megas es como mínimo sorprendente. Su manejo de base de datos es bastante pobre. Recuerda a lo que ocurrió con OpenSSL tras HeartBleed. Comenzaron a ver en el código decenas de fallos, y los programadores confesaron en cierta forma que no podían dedicar más tiempo a auditar el código. Nacieron soluciones como LibreSSL para intentar programar una implementación de TLS más segura. El propio Daniel Kahn lo confiesa: “Hemos fallado como comunidad de ingeniería”.
  • Esto daña la imagen de PGP en general. No goza de demasiada salud, y el hecho de que se le proporcione un golpe tan fuerte pone en riesgo toda su imagen, no solo sus servidores (que están siendo la excusa para el ataque).

Interesante asunto por varias razones que lleva a varias incógnitas. Qué va a pasar con OpenPGP en general; con protocolo en sí; con sus implementaciones más populares; con los servidores…. Y sobre todo, qué planea el atacante (o el efecto llamada que genere a otros), si pasará de certificados personales a aquellos que firman paquetes y cómo reaccionarán las distribuciones.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *