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:
a) 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!.
b) 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).
c) 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.
jcea@hispasec.com
Más información:
Taller de Criptografía – Informe 27:
PGP y el ataque checo:
http://www.ugr.es/~aquiran/cripto/informes/info027.htm
Flaw reported in popular e-mail encryption program:
http://www.siliconvalley.com/docs/news/svfront/063453.htm
On the Humbug Surrounding the Attack On the Electronic Signature:
http://www.i.cz/en/onas/ohlasy.html
Re: Czech attack to PGP:
http://www.imc.org/ietf-openpgp/mail-archive/msg04767.html
[24 Mar 2001] Security flaw in OpenPGP key format:
http://www.pgpi.org/news/#20010324
GnuPG:
OpenPGP:
ftp://ftp.rediris.es/docs/rfc/24xx/2440
Deja una respuesta