viernes, 9 de marzo de 2012

Recuperar (recover) passphrase gpg

Esta entrada solo es valida si tenemos una clara idea de lo que podria ser nuestra frase secreta de nuestra llave privada gpg. En mi caso, la olvide porque la ultima vez que la utilice fue para montar (de nuevo) el entorno de desarrollo para empaquetamiento en Ubuntu.

Desde ese dia no volvi a utilizar mi llave, pero hoy que queria firmar unos sources de paquetes para construirlos con pbuilder, resulta que la frase secreta no era correcta O_O!

Tengo una memoria bastante mala para la mayoria de las cosas que me parecen irrelevantes. Obviamente mi firma digital es super relevante, pero no la suelo utilizar (creo que este habito cambiara, empezare a firmir mis mails). Normalmente manejo por mucho, unas 4 contraseñas para mis diferentes actividades. Asi que tenia una idea de cual podria ser, pero estaba confundido.

Existe los brute forcers, que son aplicaciones de fuerza bruta que permiten crackear una contraseña, pero esto depende del tipo de contraseña y protocolo. Como es un tipo de crackeo offline, tenemos toda la vida para dejar al brute forcer a que pruebe hasta la ultima combinacion posible en nuestra llave, con el fin de llegar a la correcta. No quiero esperar una vida para recuperar mi llave xD

Algunos diran que el camino mas facil seria revocar la llave, y crear una nueva. Mi problema es que tengo cerca de 4 llaves publicas perdidas, no quiero una mas. Asi que sin tanta vuelta veamos de que manera podriamos recuperar nuestra frase secreta de nuestra llave gpg.

Como lo dije en un principio, para esta tecnica necesitamos tener nociones de nuestra clave, ya que esta herramienta no es un brute forcer como tal.

Les presento a rephrase. Una aplicacion que nos permite hacer fuerza bruta a nuestra llave gpg en base a un patron proporcionado por el usuario.. Este patron no es visible por motivos de seguridad, lo que recomendaria es escribirlo en un archivo, copiarlo y despues pegarlo en el prompt para que ingresemos el patron correctamente.

Su sintaxis es simple:
rephrase

Para obtener nuestra llave privada basta con hacer:
gpg --list-secrets-keys

Una vez hayamos ejecutado el comando anterior, entraremos al prompt que nos pedira ingresar un patron para comenzar el proceso. Ese patron esta muy bien explicado en el manual de la herramienta (man rephrase). Pero por ejemplo, si mi contraseña es "doctormalito" y no recuerdo si cambie algunas (pero no se cuales) bocales por mayusculas, y las consonantes por minusculas, entonces mi patron quedaria asi:
d(o|O)ct(o|O)rm(a|A)l(i|I)t(o|O)

Como veran las combinaciones estan encerradas en parentesis "()" y separadas por barras verticales "|". Si estamos en lo correcto, obtendremos "Passphrase found!" y una secuencia de numeros que indican cual de las posibles combinaciones forman nuestra frase secreta (esto lo hace con motivos de seguridad). Entonces, si nuestra contraseña era "doctOrmalIto", entonces el resultado sera este:
1 1 1 1 2 1 1 1 1 2 1 1
d o c t O r m a l I t o

Y de esta manera pude recuperar (en realidad recordar) mi frase secreta, y ya pude firmar los paquetes en los que estaba trabajando \\^_^//

English note: If you need this post to be writed in english, just leave a comment and I'll post it in english as well. Otherwise, you can use Google Translate.

No hay comentarios:

Publicar un comentario