2009-11-21 18 views
53

A las claves privadas de RSA se les puede asignar una "frase de contraseña" que, tal como yo lo entiendo, está destinada a proporcionar cierta seguridad secundaria en caso de que alguien se haga con el archivo de clave privada.¿Cómo funciona la frase de contraseña de clave privada de RSA bajo el capó?

¿Cómo se implementa la capa de seguridad de la frase de contraseña?

+4

RSA no hace tal cosa. Parece que estás hablando de algún programa en particular que utiliza RSA, en cuyo caso sería extremadamente útil que nos dijeras de qué programa estás hablando (por ejemplo, PGP o GPG). –

+1

Interesante: en general, tengo curiosidad acerca de la frase de contraseña solicitada ejecutando "ssh-keygen -t rsa" en los sistemas Unix-y. – qfinder

+0

Esta pregunta parece estar fuera de tema porque no se trata de programación. Consulte [Qué temas puedo preguntar aquí] (http://stackoverflow.com/help/on-topic) en el Centro de ayuda. Tal vez [Information Security Stack Exchange] (http://security.stackexchange.com/) sería un mejor lugar para preguntar. – jww

Respuesta

42

ssh-keygen usa OpenSSL para generar claves RSA y almacenarlas en formato PEM. La encriptación de la que está hablando es específica de PEM. Si nos fijamos en su archivo de claves,

-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,5B01E932988DC66B 

EPESt4ZVIrxnQXxxWWVa7cCR+vgNZ/4vTu4mdq6pjaW7jMZoB8HV+mA745mQkQw7 
i+YtdVs/JqOeyGiw/3McxYYKZTlhyh7MvfIr1n8ZdZmcjQz+oFqMxChFU3r8BGgA 

"DEK-Info" cabecera tiene toda la información que necesita para descifrar la clave, siempre y cuando usted sabe la frase de contraseña. "DES-EDE3-CBC" significa Triple DES (en modo EDE). CBC es el modo de encadenamiento. El número hexadecimal es el vector inicial necesario para CBC.

PEM es un formato muy antiguo, por lo que solo es compatible con DES/TripleDES. AES y Blowfish se agregaron más tarde pero no son compatibles con todas las implementaciones. Mi ssh (OpenSSH 5.2) solo es compatible con DES y TripleDES.

+0

¿Hay alguna clase de JRE que sepa cómo leer este formato? – Phaedrus

+0

@Phaedrus ver https://github.com/bcgit/bc-java/blob/c0d5ac5e62a6531f640bdfb4897a9fe95a0c9fdb/pkix/src/test/java/org/bouncycastle/openssl/test/ParserTest.java#L412 –

+3

Parece que esta respuesta falta sobre cómo traducir la contraseña a la clave de descifrado aceptada por el cifrador. –

27

La frase de contraseña es solo una clave utilizada para encriptar el archivo que contiene la clave RSA, utilizando un cifrado simétrico (generalmente DES o 3DES). Para usar la clave para el cifrado de clave pública, primero debe descifrar su archivo utilizando la clave de descifrado. ssh lo hace automáticamente al pedirle la contraseña.

Si alguien tiene el archivo de la llave en espera, no podrán usarlo a menos que conozcan la frase de contraseña utilizada para encriptar el archivo.

+0

¡Muchas gracias por la respuesta! Un par de preguntas de seguimiento: ¿es la frase de contraseña parte del estándar de RSA u otra cosa (según el comentarista anterior)? ¿El programa ssh-keygen usa DES o 3DES/cómo lo diría? ¿Qué grado? ¿Por qué no AES? – qfinder

8

Las claves privadas almacenadas en sistemas de archivos de propósito general (a diferencia de tokens de hardware especiales, inviolables) podrían ser fácilmente robadas si no están protegidas. Los permisos del sistema de archivos pueden parecer suficientes, pero a menudo pueden omitirse, especialmente si un atacante tiene acceso físico a la máquina.

Un fuerte cifrado simétrico, codificado con una buena contraseña, ayuda a evitar esto. Una buena clave privada de RSA es demasiado larga para recordarla (para mí, de todos modos), pero las claves simétricas mucho más pequeñas pueden proporcionar el mismo nivel de seguridad. Una clave simétrica relativamente corta almacenada en el cerebro se usa para proteger una gran clave privada almacenada en el disco.

+0

Definitivamente tiene sentido: ¿hay más detalles sobre cómo, exactamente, se implementa? (¿Qué simétrica es exactamente, si es estándar para todas las impls, etc.?) – qfinder

Cuestiones relacionadas