¿Cómo hace una copia de seguridad segura de una clave privada GPG?

25

Encontré un administrador de contraseñas CLI muy interesante llamado pass . Para usarlo, genera un par de claves GPG2 y usa la herramienta para ayudarlo a almacenar contraseñas en archivos cifrados con gpg2.

Para cifrar los archivos (agregar una nueva contraseña), utiliza la clave pública.

Para descifrar los archivos (recuperar una contraseña almacenada), utiliza la clave privada, que requiere una contraseña.

Esto funciona muy bien.

Ahora que la herramienta está almacenando todas mis contraseñas, quiero hacer una copia de seguridad de todos estos datos para que si mi computadora falla, no se me bloqueará todas mis cuentas en línea.

La herramienta se integra muy bien con git, por lo que pude insertar fácilmente los archivos .gpg en mi repositorio privado de git en una computadora diferente. Por lo que entiendo, estos archivos son inútiles sin la clave privada para descifrarlos.

Mi pregunta es esta: ¿cómo hago una copia de seguridad de las claves privadas y públicas de manera segura, para poder restaurar la "base de datos" en otra máquina si surge la necesidad? ¿Puedo almacenar las claves públicas y privadas en mi repositorio de git e importarlas en una máquina diferente más adelante? ¿O se considera una práctica insegura almacenar una clave privada en un repositorio local de git privado? El repositorio de git requiere una contraseña para acceder. La clave privada está encriptada y requiere una contraseña para abrir, ¿eso hace que sea seguro almacenarla?

Tal
fuente

Respuestas:

10

El almacenamiento de una clave privada PGP en un sistema de control de revisión no plantea, en sí mismo, ningún problema de seguridad significativo. El almacenamiento de la clave privada en un repositorio git local, privado (no publicado) no debería tener implicaciones de seguridad significativas en comparación con el almacenamiento de la clave privada en la misma computadora pero fuera de cualquier repositorio git.

El único problema que se me ocurre al almacenar la clave privada de una manera controlada por la versión es que, a menos que pueda destruir de alguna manera las revisiones anteriores, los cambios en la frase de contraseña le brindan mucha menos protección de la que de otro modo podrían obtener.

Lo que puede venir con su propio conjunto de implicaciones de seguridad es almacenar una clave privada de tal manera que otra persona pueda obtener acceso al archivo de clave. En tal situación, todo lo que se interpone entre un atacante y su clave es la fuerza de su frase de contraseña.

Reconociendo que la seguridad del almacenamiento no es perfecta, y más aún en el entorno moderno donde las personas regularmente respaldan los servicios en la nube (que literalmente traducido significa "la computadora de otra persona"), generalmente protegemos nuestras claves secretas con frases de contraseña. Confío en que, incluso si está ejecutando, por ejemplo, gpg-agent, está haciendo lo mismo.

La conclusión es que, siempre que su frase de contraseña sea buena, incluso almacenar una copia del archivo de clave cifrada en la computadora de otra persona debería ser relativamente seguro.

Sin embargo, eso es bastante grande si: las contraseñas o frases de la mayoría de las personas son bastante pésimas en lo que respecta a los intentos computarizados de descifrarlas. GnuPG va a bastante largo para tratar de trabajo, así como que puede con lo que se da, pero para la protección de datos sólida, que necesita una buena frase de contraseña, y que necesita para configurarlo antes de importar la clave privada en el repositorio git. Después de que se haya importado la clave, un atacante podría, en principio, atacar cualquier versión de la misma, y ​​si tienen razones para creer que una revisión en particular tiene una frase de contraseña de menor calidad, probablemente lo haga. Por esa razón, asegúrese de elegir la frase de contraseña con cuidado. He escrito un pequeño manual sobre cómo manejar las contraseñas, incluyendosugerencias sobre cómo elegir contraseñas o frases de contraseña que necesita para poder recordar , lo que puede resultarle útil.

un CVn
fuente
6

He estado considerando una configuración similar recientemente. Antes de abordar su pregunta, permítame señalar lo que me molesta al respecto. Esto se explica con gran detalle aquí . En resumen, cuando Pass llama a GPG, realiza una criptografía asimétrica innecesaria (RSA / EC) debajo del capó. Innecesario , porque no hay una parte que no sea de confianza aquí.

Esto es molesto porque la criptografía asimétrica es menos a prueba de futuro que la criptografía simétrica. Por ejemplo, la criptografía asimétrica de hoy está rota por computadoras cuánticas suficientemente grandes, que aún no existen. En términos más generales, la criptografía asimétrica depende de "problemas matemáticos" que no sabemos cómo resolver, mucho más que la criptografía simétrica.

Para mitigar esta debilidad, lo menos que puede hacer es mantener su clave pública GPG utilizada con Pass también privada, porque, por ejemplo, el ataque cuántico (potencial) necesita esta clave pública: consulte aquí .

En cuanto a su pregunta real, no está claro si tiene la intención de almacenar el repositorio git (con las contraseñas) de forma pública o privada. Si desea mantenerlo privado, puede hacer lo que quiera y reducir la seguridad de la clave privada GPG a la del medio donde realiza la copia de seguridad del repositorio. Sin embargo, eso podría convertirse en un problema de huevo y gallina: si el repositorio es privado, ¿cómo lo recuperas en caso de un accidente? En otras palabras, en caso de un "accidente grave", debe haber algo que recupere primero . Por lo tanto, es posible que desee mantener privado el repositorio de git, pero haga una copia de seguridad de la clave GPG de tal manera que pueda recuperar primero, independientemente de cualquier otra cosa.

Las soluciones de respaldo fuera de línea son numerosas, abogados, sótanos, etc. ver aquí . Pero los sótanos no son para todos, así que permítanme sugerir una solución en línea:

  • Cree una frase de contraseña superfuerte que no debe escribirse durante años. Sugerencia: Error ortográfico largo y memorable de una frase que tiene algún significado personal, o de un libro que no se quedará sin copias si necesita buscarlo.

  • Cree un tarball con su clave secreta GPG exportada, y tal vez sus credenciales SSH.

  • Cifrar simétricamente con su frase de contraseña: gpg --symmetric --armor.

  • Crea una cuenta de alojamiento git gratuita.

  • Cree un repositorio público , que se pueda clonar sin credenciales.

  • Ponga la bola de alquitrán encriptada y blindada allí.

Para recuperarlo después de un "accidente grave":

  • Arranca una memoria USB en vivo.

  • Clon public repo.

  • gpg --decrypt.

La frase de contraseña simétrica será tu principal protección contra los zombies. Las personas a veces no le dan a usted, ni al lector anónimo, el beneficio de la duda a la hora de elegir frases de contraseña. Pero con una buena frase de contraseña, la criptografía simétrica debería ser sólida.

Cuando exporta su clave privada GPG, se cifrará con una frase de contraseña propia. Las versiones recientes de GPG no permitirán una exportación sin cifrar. Puede usar su frase de contraseña GPG "regular" aquí. Solo recuerde que en caso de un bloqueo, necesitará ambas frases de contraseña para llegar a su clave privada GPG.

Matei David
fuente
4

Otra opción que uso es: imprimir su clave en papel .

Los detalles están en la respuesta vinculada. Las grandes ventajas son: puede almacenarlo fácilmente donde lo desee y puede verificar si todavía está en buena forma con solo mirarlo. Pero la mayor ventaja es: nadie puede piratearlo sin estar físicamente en el lugar donde almacena su copia de seguridad y tomarla.

Josef dice reinstalar a Mónica
fuente
Por lo que puedo ver, el papel no tiene ninguna ventaja sobre los medios extraíbles en este caso, y la desventaja de que si necesita recuperar la clave, debe escribir todas las galimatías de la clave.
MAPA
La ventaja es que es mucho más duradera y puede verificar si aún es legible con sus propios ojos sin una computadora. Si tuviera un dólar por cada disquete, CD o DVD que utilicé y que ahora tiene errores de datos irrecuperables, podría ir de vacaciones con ese dinero. ¡No tienes que escribir nada! PaperBack lo imprime como códigos 2D con corrección de errores añadida. Simplemente lo escanea o fotografía y el programa lo convierte de nuevo en lo que le dio para imprimir antes.
Josef dice reinstalar a Mónica el
Suponiendo, por supuesto, que todavía tiene la tecnología para hacerlo.
MAPA
Bueno, la probabilidad de que pueda obtener fácilmente una máquina virtual Windows o Linux con Wine con una copia de ese software de código abierto en 20 años es, en mi opinión, mucho mayor que la probabilidad de que pueda obtener el hardware para leer un disquete / CD /DVD. Supongamos que lo hice en 1990. Ahora incluso puedo ejecutar software desde entonces en mi navegador . Pero buena suerte tratando de obtener hardware que le permita leer un disquete de 5 1/4 pulgadas con su PC moderna.
Josef dice Reinstate Monica
2

Otra respuesta a esto es "fuera de línea", es decir, almacenarlo en un lugar seguro y no conectado a ninguna computadora. Guardo una copia completa y sin cifrar de todas mis llaves en un disquete (lo he estado haciendo así durante mucho tiempo, ahora es un hábito) en la caja de seguridad del banco. La razón por la que los mantengo sin encriptar en los medios en el banco es que un escenario potencial para "perder" la clave es olvidar la frase de contraseña (mis frases de contraseña tienden a tener muchos signos de puntuación y ortografía extraños, y olvidar solo uno de ellos lo hace inutilizable). Nunca tuve que recurrir a recuperarlo de esa copia, pero planeo lo peor.

Además, hay una revocación clave en los medios y una nota que indica a mis herederos qué hacer con ella, en caso de que ya no esté disponible.

MAPA
fuente
Si realiza una copia de seguridad de la clave privada de firma maestra, ¿no se puede usar para generar un certificado de revocación? ¿En qué escenario es útil hacer una copia de seguridad del certificado de revocación?
Matei David
Ah sí, pero debes entender que no puedo estar seguro de cuán entendido en informática será la persona que ejecuta la solicitud (ten en cuenta que no soy yo quien lo usará, sino "mis herederos"). Por lo tanto, tener la revocación ya generada y las instrucciones de "solo enviar un correo electrónico con este archivo adjunto" es menos probable que se administre mal.
MAPA
@MateiDavid Generar un certificado de revocación cuando crea inicialmente el par de claves, y almacenar ese certificado de revocación, le permite revocar la clave si la clave no está disponible para usted. Hay escenarios válidos donde esto puede suceder. Por supuesto, debe proteger muy bien el certificado de revocación, ya que cualquiera que lo tenga en sus manos puede publicarlo y revocar su par de claves. Sin embargo, no estoy realmente seguro de cómo se aplica un certificado de revocación a la situación del OP.
un CVn
Sí, hemos bajado por un agujero de ratas. Pido disculpas, mi mención del certificado de revocación fue solo para completar la descripción de los pasos que tomo, y no tuvo nada que ver con la pregunta original.
MAPA