Cómo entregar un mensaje cifrado a múltiples destinatarios sin revelar las claves

5

Digamos que he generado una clave privada y una pública. Creo un mensaje y lo cifro con la clave pública. Entrego este mensaje cifrado y una clave privada a múltiples destinatarios.

¿Por qué haría esto?

Quiero poder entregar un mensaje que solo pueda ser descifrado. No quiero que nadie pueda cifrar un mensaje falso y entregarlo a todos los destinatarios con ellos, suponiendo que fue de mi parte.

Creo que estoy en el camino correcto utilizando RSA, pero de alguna manera lo necesito todo al revés.

Además, si le doy a las personas la clave privada y mantengo segura la clave pública, ¿tengo razón al creer que es posible generar una nueva clave pública simplemente utilizando la propia clave privada?

Tomemos un ejemplo de mi problema.

Creo un mensaje cifrado usando mi clave pública:

ajjfjdksdjkdfjfjdjfd

El usuario final lo descifra utilizando la clave privada para:

green:1234:table

Todo bien hasta ahora. El mensaje anterior y la autenticación se verificaron básicamente para las tres cadenas dentro de un : .

Sin embargo, como estos mensajes cifrados pueden provenir de fuentes no confiables, quiero que cualquier fuente no confiable pueda crear estos mensajes ya que conocen el formato simple. No quiero que la clave que proporciono sea suficiente para que puedan aplicar ingeniería inversa a la clave pública.

Me resulta difícil de explicar, espero que esto pueda ser respondido.

    
pregunta Chris Denman 09.09.2015 - 21:45
fuente

3 respuestas

11

Creo que has conseguido la criptografía de clave pública por completo, aquí.

  1. No das una clave privada. Período. Se les llama "privados" por una razón.

  2. No envías un mensaje cifrado a lo largo del mismo canal, y mucho menos al mismo tiempo, ya que envías la única clave que se necesita para descifrarlo. Eso anula por completo el propósito del cifrado en primer lugar.

  3. Un par de claves solo es útil para la autenticación (es decir, la firma digital) si la clave pública ha sido verificada por el destinatario (s) (o un tercero de confianza) antes de su uso.

Entonces, ¿cómo se entrega un cifrado & ¿Mensaje firmado a varias partes sin permitirles que se hagan pasar por usted? La respuesta se encuentra en # 1: No hay dos personas que tengan la misma clave privada.

Si usted es el único con una copia de su clave de firma privada, nadie puede hacerse pasar por usted. Simplemente firme el mensaje con su clave de firma privada antes de que se realice el cifrado. Los destinatarios luego usan su clave pública de firma para verificar la autenticidad del mensaje después de que lo hayan desencriptado.

La parte de cifrado es una cuestión completamente diferente. Y para eso, tienes algunas opciones.

  1. Sin cifrado. Simplemente firme y entregue. La autenticidad está protegida independientemente, pero este método no ofrece confidencialidad.

  2. Cifrar con clave precompartida (PSK). Énfasis en precompartido : este no se envía junto con el mensaje. Debe ser compartido entre el grupo de antemano, preferiblemente fuera de banda. El PSK se utiliza solo para cifrado / descifrado. Su clave de firma es lo que proporciona autenticidad.

  3. Cifre individualmente con claves públicas. Tome el mensaje firmado y haga una copia para cada destinatario. Luego, encripta cada copia con la clave pública de un destinatario y envíala. Los destinatarios utilizarán sus claves privadas para descifrar el mensaje.

  4. Use las claves privadas como claves de cifrado de claves (KEK) para una clave compartida. Dependiendo del tamaño del mensaje, esto puede ser más rápido que el # 3 mientras se mantienen los beneficios de encriptación de clave pública. Se genera una clave compartida, de uso único, aleatorio. Usa eso para cifrar el mensaje firmado. Haga una copia de la clave compartida para cada destinatario. Cifre cada copia de la clave con la clave pública de un destinatario. Agrupe todas las claves cifradas junto con el mensaje cifrado y envíe una copia de ese mismo paquete a cada destinatario. Cada destinatario utilizará su clave privada para intentar descifrar cada copia de la clave compartida hasta que encuentre su copia, luego la usarán para descifrar el mensaje.

De nuevo, lo principal que protege la autenticidad & El origen verificable del mensaje aquí es el hecho de que solo usted tiene una copia de la clave privada que se usó para firmarlo. Más allá de eso, solo con fines de autenticación, no importa cómo o incluso si el mensaje está realmente encriptado. Al final de cada uno de estos procesos, cuando los destinatarios tienen una copia clara del mensaje firmado, su clave de firma pública es lo que usarán para verificar su origen e integridad.

    
respondido por el Iszi 10.09.2015 - 00:32
fuente
2

Chris quiere enviar un mensaje a Alice y Bob.

Chris no quiere que Dave le envíe un mensaje a Alice y Bob y dice ser de Chris.

Por lo tanto, debe haber un modo para que Alice y Bob puedan distinguir entre un mensaje genuino de Chris y una imitación de Dave. Algo así, como una firma de Chris. Este método existe y se llama (apropiadamente) una firma .

Conceptualmente, desea que Chris pueda hacer algo (enviar un mensaje que será aceptado por Alice y Bob) que no puede hacer Chris (en particular Dave), por lo que debe haber algún valor secreto que Chris sepa Pero no Dave, porque, en criptografía, el conocimiento es poder. Además, este valor secreto no debe filtrarse en el proceso y, en particular, no desea que Alicia y Bob lo aprendan (de lo contrario, Alicia podría intentar Davify Bob, es decir, enviar un mensaje a Bob como si fuera Chris) .

Entonces, un valor secreto en el lado del remitente, para una acción verificable en el lado del receptor, sin filtrar el secreto en sí. Este es exactamente el concepto de firmas digitales.

Esto se mantiene independientemente de cualquier noción de cifrado. Esta es una discusión completamente ortogonal.

    
respondido por el Tom Leek 09.09.2015 - 22:05
fuente
0

No tiene que revelar ninguna clave, ese es el punto principal de un sistema de cifrado de clave pública.

En este mensaje de la lista gnupg, explican una forma de crear un mensaje de varios destinatarios.

En función de ello, puedes crear algo como esto:

  1. Genere una clave simétrica aleatoria S1

  2. Cifre el mensaje completo con S1 , creando el cyphertext C1

  3. Encripte S1 con cada clave pública para los destinatarios, generando D1 , D2 , ..., Dn

  4. Genera un hash seguro de S1 , creando H1

  5. Genere el mensaje de la siguiente manera:

-- BEGIN CYPHERTEXT --
C1
-- END CIPHERTEXT --
-- BEGIN HASH --
H1
-- END HASH --
-- BEGIN KEYS --
D1
D2
D3
-- END KEYS--

Envía el mensaje a todos. Descifrarán D1 a Dn para generar S1 . Comparando el resultado con el hash en el mensaje, sabrán cuándo obtuvieron la clave simétrica.

Con la clave simétrica en la mano, pueden descifrar el mensaje de forma independiente, sin que se conozcan entre sí.

Para crear un mensaje autenticable, agregue una firma a todo el mensaje y nadie podrá crear un mensaje que se haga pasar por usted, a menos que obtenga su clave privada.

    
respondido por el ThoriumBR 09.09.2015 - 22:23
fuente

Lea otras preguntas en las etiquetas