Cómo enviar de forma segura las claves privadas

39

¿Cuál es la forma recomendada y la mejor práctica para enviar claves privadas y claves privadas SSL? Estaba pensando en comprimir los archivos y luego usar gpg :

gpg -c thefile.zip

El problema se convierte entonces en ¿cómo se envía la frase de contraseña utilizada para cifrar al otro extremo? ¿Hay una mejor solución?

    
pregunta Justin 30.09.2015 - 20:22
fuente

8 respuestas

58
  

TL; DR: las claves privadas se llaman privadas por una razón.

Puede proteger las claves privadas si no las transmite en absoluto .

  • Si tiene acceso de shell al servidor en el que se usan, simplemente los genere in situ .
  • Si el dispositivo de destino es demasiado débil / tiene poca potencia para generar las claves, también es demasiado débil para usar el cifrado asimétrico (esto incluye las fuentes de entropía). Por supuesto, hay dispositivos cableados con memoria limitada (tarjetas inteligentes, por ejemplo), pero puede usar un enlace físicamente seguro para mover las llaves a ellas sin estar conectado a Internet. Un caso de esquina bastante oscuro es el cifrado asimétrico utilizado en un dispositivo remoto (léase: una sonda espacial o un satélite) pero es poco probable que se cumplan las condiciones en la práctica (una clave comprometida pero otro enlace seguro aún disponible).
  • Si no tiene acceso de shell seguro (SSH) al dispositivo de destino, generalmente no puede copiar (SCP) de forma segura los archivos. El uso del correo electrónico para mover las claves, incluso en forma cifrada, atrae la atención injustificada al mensaje y deja el rastro en quizás docenas de lugares a través de Internet.
  • Enviar las claves significa que las personas en el otro extremo del canal deben confiar en usted y usted debe confiar en ellas. No siempre es una buena propuesta en negocios y en otros entornos de alto riesgo (cualquiera de las partes puede forjar comunicaciones con las claves privadas en la mano).

EDITAR: Para el caso de uso indicado de claves privadas para un proveedor de alojamiento, es mejor que las genere en su lugar.

    
respondido por el Deer Hunter 30.09.2015 - 20:50
fuente
21

GPG puede permitirte enviarlos de forma segura sin tener que enviar una frase de contraseña. Si el destino tiene su propia clave GPG, puede cifrar el archivo para que solo ellos puedan abrirlo. Por ejemplo, gpg -e -r E9053BDA thefile.zip solo me permitirá abrir thefile.zip con mi clave GPG sin que ninguno de los dos haya comunicado una frase de contraseña. Alternativamente, gpg-zip -e -r E9053BDA *.crt comprimirá y cifrará todos los archivos *.crt en un solo comando.

Referencia de la documentación:

respondido por el akraut 30.09.2015 - 20:34
fuente
10

Para transmitir claves de forma privada y segura (o cualquier clave / frase de contraseña con la que las haya cifrado), no tiene ninguna posibilidad, pero desde el principio utiliza un canal seguro y de confianza preestablecido.

Dependiendo de sus necesidades y las posibilidades disponibles, esto podría incluir

  • enviar correos encriptados a una dirección para la que ya tiene claves públicas de confianza, sin importar si OpenPGP o S / MIME
  • enviándolos usando correo (caracol), sellado si es necesario
  • viajar en persona, si es necesario, comparando las ID oficiales
  • carga segura a una máquina confiable, por ejemplo, usando SSH
  • enviar un correo cifrado, mientras se transmite la frase de contraseña a través de otro canal (teléfono, mensaje de texto)

El método a utilizar realmente depende de sus necesidades y potenciales goteros. Si las instituciones gubernamentales y las agencias secretas son posibles atacantes, la mayoría de esas formas se verán comprometidas desde el principio: ni el teléfono ni el correo postal estarán seguros, y posiblemente otros.

Si solo desea comunicarse con otra persona, ambos extremos deben generar sus propios pares de claves , distribuir la clave pública mientras mantiene la clave privada privada. Aún tiene que intercambiar información sobre las claves públicas, por ejemplo, la huella digital, a través de un canal de confianza preestablecido como el descrito anteriormente.

    
respondido por el Jens Erat 30.09.2015 - 21:50
fuente
4

Primero, lee lo que Deer Hunter escribió arriba. La mejor manera de enviar claves privadas de forma segura es nunca enviarlas en primer lugar. Parada completa.

Dicho esto, es probable que existan algunas circunstancias en las que podría legítimamente necesitar transferir algunas claves privadas que existen en sus manos & y en una ubicación a otra persona en otra ubicación. Debes minimizar estos tiempos tanto como puedas , preferiblemente simplemente paseando al cliente que los necesita a través de la generación de las claves. Pero puede haber ocasiones en que eso no sea práctico por alguna razón (o, más probablemente) que no sea su decisión. Entonces, ¿qué haces entonces?

Bueno, usted hace lo que hacen los gobiernos y las empresas de tecnología cuando necesitan distribuir claves de cifrado muy sensibles (si es más frecuente en escenarios de distribución de clave de teclado simétrico o incluso único, en lugar de con claves privadas asimétricas) a distancia ubicación: usted:

(1.) Cifre el infierno de la (s) clave (s) que se transferirán antes de que / ellos / ellas / ellas / ellas nunca abandonen sus instalaciones, utilizando una clave "externa" única creada solo para una transferencia y luego destruida . Si esa clave de encriptación protectora se genera a partir de una contraseña o frase de paso, la contraseña o frase cumple con los requisitos de una fuerza muy alta.

(2.) Use un canal con mucha mejor seguridad que las redes de uso general existentes : ¡conecte Internet! - para que el paquete cifrado llegue a su destino. La entrega física de un dispositivo de memoria que contiene la clave cifrada es el canal más simple pero no siempre el más práctico.

(3.) Mantenga la clave "externa" que desbloquea el cifrado de protección (o una contraseña / contraseña que constituye la base de la clave) en su poder hasta que llegue el momento de transferir la clave / s desea transferirlos y luego descifrarlos en la ubicación de los clientes. Eso significa que usted está en el evento de transferencia de clave en persona para descifrar el cifrado de protección, o enviar la clave que desbloquea el cifrado de protección utilizando otro canal electrónico de alta seguridad independiente para llevarlo al lugar del cliente en el momento del descifrado.

(¿Por qué no solo saltar al # 3 y enviar la clave privada original que necesita para pasar al cliente a través del canal electrónico de mayor seguridad? Porque no confiamos en ningún canal, ni siquiera en lo que creemos que es uno que tiene una seguridad especialmente buena, casi suficiente para manejar información como una clave privada. Hacemos que un posible oponente intercepte al menos dos canales / mecanismos de transferencia , y dificultamos la intercepción de cualquier cosa útil de cualquiera , y mucho menos los dos.

Ahora, todo eso suena arduo y complicado. Pero en realidad no necesariamente tiene que ser ninguno de los dos. (Suponiendo que estemos en una situación común, esta clave es importante pero no sería realmente catastrófica si fuera comprometida). Por ejemplo, podría:

-Utiliza un dispositivo USB protegido por cifrado de hardware bien considerado, sin falta de opciones, para el transporte. Escriba una clave privada para eso, bloquéela con una contraseña / código / frase segura única y condúzcala a través de la ciudad hasta la ubicación del cliente que necesita la clave. Conéctelo cuando llegue allí, desbloquéelo y copie la clave privada en el sistema del cliente.

-Grab una nueva memoria USB ordinaria (no utilizada anteriormente). Use un programa de software en el que tenga confianza para cifrar la clave privada de un archivo. Transfiere el archivo al USB. Luego, vuelva a verificar el USB, solo para estar seguro, de que lo único que hay en él es el paquete ahora encriptado. Haga correo registrado o FedEx para llevarlo al sitio del cliente. Cuando llegue, use Off-the-Record o una aplicación de mensajería de seguridad similar para transmitir la clave al cifrado de protección (o contraseña / frase necesaria para volver a generarla) al cliente, que luego descifra & obtiene la clave privada.

-¿Necesito poder distribuir repetidamente las claves a un cliente, a pedido y electrónicamente? Cifre la clave privada en el archivo como en el último ejemplo. Tenga un servidor VPN o SSH de acceso simple pero seguro que solo use para la distribución de archivos de clave cifrada, que el cliente tenga información de autenticación previamente compartida para iniciar sesión y que normalmente se mantenga desconectado de cualquier acceso remoto. Cuando el cliente lo llame y le diga que está listo para recibir la clave, transfiéralo desde su entorno de almacenamiento interno al servidor. Habilitar conexiones remotas al servidor desde la dirección IP del cliente. El cliente se conecta y toma el archivo de clave cifrado. Finalmente, luego utiliza la aplicación de mensajería de alta seguridad (o lo que sea) para transferir la clave de protección a su cliente.

Muchas opciones. Es cierto que hay trabajo involucrado en cada uno si desea que la transferencia esté bien asegurada. ¿Apagado por la perspectiva de hacer el trabajo? Eso es comprensible. En ese caso, vea el punto # 1 (el punto original que hizo Deer Hunter): cree un acuerdo tecnológico en el que no necesite transferir claves privadas en absoluto.

    
respondido por el mostlyinformed 30.09.2015 - 22:04
fuente
1

La forma correcta de hacer esto en un canal no seguro es usar una infraestructura de clave pública para enviar una clave privada.

1) La parte receptora genera un par de claves pública / privada.

2) La parte remitente utilizará la clave pública de la parte receptora para cifrar la clave privada y enviarla. Este cifrado solo puede ser descifrado por la clave privada de la parte receptora que solo el receptor conoce. De esta manera, la clave privada se puede enviar de forma segura a través de un canal no protegido.

Hay más cosas que considerar: ¿cómo puede el receptor garantizar la identidad del remitente? Para hacer esto, el remitente también tiene que generar un par de claves privadas / públicas.

El remitente después de cifrar "La clave privada" con la clave pública del receptor, el remitente deberá cifrar el resultado con su clave privada para generar el mensaje final antes de enviarlo. Después de recibir el mensaje, el receptor deberá descifrar primero el mensaje con la clave pública del remitente. Si tiene éxito, puede asegurar que el mensaje sea auténtico.

Deje que K sea La clave privada debe enviarse, E es cifrado, D es descifrado

Remitente: Mensaje M = E (E (K, pub-k-receiver), pri-k-remitente)

Receptor: K = D (D (M, pub-k-sender), pri-k-receiver)

Ahora el receptor tiene que preocuparse de si el mensaje es nuevo, es decir, no hay algún tipo de datos antiguos que un tercero intercepte y reproduzca posteriormente. Por lo general, se inserta una marca de tiempo en el mensaje M para resolver este problema.

Remitente: Mensaje M = E (E (K + marca de tiempo, pub-k-receptor), pri-k-remitente)

Receptor: K = D (D (M, pub-k-sender), pri-k-receiver) - marca de tiempo

    
respondido por el alex 02.10.2015 - 09:30
fuente
0

Por lo general, no debe enviar claves privadas, pero si tiene que enviar una clave privada, encriptarla con la clave pública del destinatario. Tenga en cuenta que su destinatario debe estar dispuesto a correr el riesgo de que pueda conservar una copia de la clave privada.

    
respondido por el Micheal Johnson 24.07.2016 - 21:26
fuente
-2

Reiteraré lo que otros han dicho primero, luego agregaré un punto más.

Lo que se ha dicho:

Si es posible, comparta solo las claves públicas, así es como funciona la seguridad.

Si las claves privadas deben compartirse, no las envíe a través de la infraestructura compartida (tenga en cuenta que los teléfonos celulares y las líneas terrestres no son completamente seguros).

Si las claves deben enviarse a través de una infraestructura compartida, cifre correctamente y use canales seguros. Considere enviar una parte a través de dos canales diferentes.

Mejor si las claves compartidas no se usan demasiado tiempo.

Y un nuevo pensamiento:

Considere adicionalmente el uso de la esteganografía para las comunicaciones con las personas con las que interactúa a menudo y comparte fotos, será más difícil de detectar.

Pero para reiterar, los sistemas como Bitcoin son sólidos porque las claves privadas no se comparten, lo que requiere que cada cuenta se rompa de forma individual. Los sistemas con claves compartidas exponen a todos a interrupciones individuales o errores individuales en todo el grupo.

    
respondido por el Matthew Voss 05.10.2018 - 04:18
fuente
-4

Envíe la clave privada de un servicio de correo electrónico anónimo a una dirección de servicio de correo electrónico desechable de 48 horas. Solo debe publicar públicamente su dirección de correo electrónico desechable con la clave pública a la vista de todos y esperar a que su remitente le envíe la PK dentro de las 48 horas. Después de 48 horas, el producto se evapora. Nadie tiene que confiar en nadie. Las dos partes siempre podrían usar el mismo PK para cualquier mensaje futuro sin tener que pasar por esta transacción nunca más. Sin embargo, es menos seguro hacerlo de esa manera.

    
respondido por el spookysr 24.07.2016 - 18:09
fuente

Lea otras preguntas en las etiquetas