¿La clave privada de OpenPGP está inherentemente protegida por contraseña?

7

Sé que debo ingresar una contraseña cada vez que uso mi clave OpenPGP. ¿Se realiza a través de la implementación de software o es una propiedad inherente al protocolo y, por lo tanto, a la clave?

Esencialmente, la pregunta se divide en: Si alguien robó mi clave privada, ¿podría usarla sin el conocimiento (o ruptura) de mi contraseña?

    
pregunta Iszi 03.06.2011 - 19:57
fuente

3 respuestas

11

Es posible dejar su clave PGP sin cifrar (sin contraseña) y, por lo tanto, si se copiara, podría usarse sin una contraseña. El cifrado de su clave privada es inherente a la especificación ( RFC 4880 : consulte las secciones "String-to-Key"), y en cualquier momento que esté utilizando un software que solicite la frase de contraseña para su clave privada, la está utilizando para el descifrado real. La mayoría de las versiones modernas del software se esfuerzan por evitar también que la memoria utilizada para la clave sin cifrar o la frase de contraseña se intercambien en el disco.

Por lo tanto, no, su clave privada no puede usarse sin el conocimiento o la ruptura de su contraseña.

    
respondido por el Jeff Ferland 03.06.2011 - 20:07
fuente
3

El formato de mensaje OpenPGP describe muchos "mensajes" que son la serialización de estructuras que involucran algoritmos criptográficos. Algunos de esos mensajes deben intercambiarse como correos electrónicos; cuando envía un "correo electrónico firmado", debe usar su clave privada. El mensaje resultante (el que va al servidor SMTP) no se ve afectado por el formato de dicha clave privada cuando se almacena en un medio no transitorio. En ese sentido, puede "usar OpenPGP" (enviar y recibir correos electrónicos firmados y encriptados) sin tener que almacenar una clave privada "protegida por contraseña"; Lo que requiere OpenPGP es que un uso puede "poseer" una clave privada y "recordarla" por un tiempo no trivial. La propia clave privada debería almacenarse con un alto nivel de confidencialidad, ya que dicha confidencialidad es crucial para toda la seguridad del esquema. La clave privada del usuario a menudo se almacena en un archivo, cifrada con una clave simétrica derivada de una contraseña de usuario ("frase de contraseña" en lenguaje PGP). Con menos frecuencia, pero igualmente válida, la clave privada puede almacenarse en un dispositivo a prueba de manipulaciones, como una tarjeta inteligente, y acceder a través de una API dedicada como PKCS # 11; existe soporte para PKCS # 11 para GnuPG. La forma en que el dispositivo almacena la clave depende del dispositivo, pero rara vez implica el cifrado con una clave derivada de contraseña.

OpenPGP también define formatos de mensajes para almacenar una clave privada serializada, en particular con cifrado simétrico usando una clave derivada de una contraseña. Por lo tanto, cuando una implementación de OpenPGP desea almacenar una clave privada como un archivo con protección de contraseña, tiende a usar ese formato de mensaje específico. El uso de este formato permite transferir claves privadas ("conjuntos de claves") entre distintas implementaciones.

Por lo tanto, si bien la protección con contraseña de la clave privada no es un requisito obligatorio para reclamar el "soporte OpenPGP" en lo que respecta a los mensajes en línea, todavía se recomienda, y existe una forma de "aprobado por OpenPGP" haciendo esa protección de contraseña, que tiene beneficios de portabilidad y es seguida por implementaciones reales.

    
respondido por el Thomas Pornin 04.06.2011 - 16:16
fuente
2

No pase por alto gpg-agent ...

La respuesta de Jeff es buena y cubre lo que más hablabas. Pero su primera oración pasa por alto el hecho de que hay formas de usar su clave OpenPGP sin ingresar una contraseña para cada uso. Le permite ingresarlo una vez, y luego usarlo por un tiempo, almacenado sin cifrar en la RAM. El valor predeterminado "ttl" (tiempo de vida) es conservativo: 5 minutos. Como observa @gilles, eso agrega cierto riesgo, pero aún así no debería aparecer en el disco sin cifrar. gpg-agent vino como parte de gnupg 2.0, y está destinado a aplicaciones GUI. Consulte gpg-agent: Invocación de GPG-AGENT - Usando la Guardia de Privacidad GNU , que puede también maneja las tareas de acceso a la clave SSH que hace ssh-agent.

    
respondido por el nealmcb 03.06.2011 - 23:20
fuente

Lea otras preguntas en las etiquetas