Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Un problema de diseño permite recuperar claves secretas PGP

Última Actualización: 4 de Mayo de 2.001 - Viernes

Artículo publicado en el boletín Una-Al-Día de Hispasec, el 5 de Abril de 2.001.

Un problema de diseño en el formato de almacenamiento de las claves PGP (y variantes, como el OpenPGP) permite que un atacante con el suficiente nivel de acceso pueda deducir una clave privada.

PGP (Pretty Good Privacy) es un reputado programa para el cifrado de ficheros mediante tecnología híbrida de clave pública y cifrado simétrico, que ha dado paso a una implementación alternativa (GnuPG) y a un estándar tecnológico conocido como OpenPGP.

El ataque propuesto permite deducir la clave secreta utilizada para firmar un fichero o documento determinado, merced a cambios controlados en la clave privada de la víctima.

Ello es posible porque la clave privada de la víctima contiene, en realidad, dos componentes distintos: uno es la clave pública de la víctima, que no está protegida por ningún tipo de criptografía y está accesible a cualquiera (se trata de la clave pública, a fin de cuentas), y otro componente, cifrado con una "frase de paso" ("passphrase") sólo conocida por la víctima, contiene el componente "privado" de la clave.

Un atacante con acceso al "paquete" de la clave privada del usuario, y con privilegios suficientes para modificarlo, puede realizar modificaciones "controladas" en el componente público de la clave del usuario, lo que le permitirá obtener los componentes "privados" mediante unos cálculos simples y rápidos la próxima vez que el usuario firme un mensaje.

Si se usa la misma clave para cifrar y para firmar, la clave recuperada permitirá descifrar también los mensajes secretos destinados a la víctima.

El ataque es posible tanto sobre claves RSA como claves DH (Diffie-Hellman).

El ataque es factible debido a que PGP y, por extensión, OpenPGP no incorporan un control de integridad del componente público de la clave secreta del usuario, lo que permite que cualquier atacante con los privilegios de acceso necesarios pueda modificarlo. Una futura revisión del estándar debería contemplar esa verificación.

No obstante, hay que poner las cosas en perspectiva, y considerar que:

  1. El atacante debe tener acceso a la clave secreta de la víctima. Por razones obvias, dicho acceso no debería ser posible. Se trata, no lo olvidemos, ¡de la clave privada!.

  2. Típicamente, un atacante con un nivel de acceso tan "elevado" podría realizar, también, una sustitución completa de la clave del cliente, o un ataque por fuerza bruta de su "passphrase" (frase de paso).

  3. En muchos casos, un atacante con un nivel de acceso tan "elevado" tendría también acceso al ejecutable PGP, con la posibilidad de instalar una versión alterada para proporcionar la clave privada descifrada, o la propia "frase de paso" (passphrase) de la víctima.

    Es decir, el atacante sólo tendrá la oportunidad con usuarios descuidados con su clave privada.

    La profilaxis, por tanto, es sencilla: aunque la clave privada esté protegida por una "frase de paso", los usuarios deben considerarla como información altamente confidencial, y no deben dejarla accesible a agentes externos.

    Más información:



    Python Zope ©2001 jcea@jcea.es

    Más información sobre los OpenBadges

    Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS