Cómo cifrar datos asimétricamente para descifrar mis múltiples usuarios

1

Estoy diseñando una aplicación similar a un chat. Cada mensaje enviado debe estar encriptado. Varios usuarios deben poder descifrarlo.

En la etapa inicial, un chat solo contendrá dos usuarios. De esta manera puedo implementarlo con un simple cifrado asimétrico. Pero luego más usuarios podrían unirse a un chat.

Por ejemplo, si Bob, Alice y John quieren chatear juntos, cuando Bob envía un mensaje, tiene que cifrarlo con una clave pública conocida por todos, entonces Alice y John deben poder descifrarlo, cada uno con su clave privada PROPIA (no puede ser lo mismo; las claves privadas no pueden abandonar el dispositivo por razones de seguridad a menos que tenga una forma de asegurar el intercambio de claves privadas).

Supongo que no hay una implementación de este cifrado asimétrico, pero debe ser una solución para que funcione.

EDITAR: Después de un poco más de investigación, descubrí que el cifrado de transmisión sería lo más útil. Pero no entiendo cómo puede funcionar. Digamos que mis tres usuarios tienen una clave pública / privada. Cuando Bob envía un mensaje, ¿todavía tiene que enviarlo para cifrarlo una vez para cada usuario con su clave correspondiente? De lo contrario, ¿cómo pueden otras claves privadas descifrar un mensaje cifrado con una sola clave pública?

EDIT 2: Por lo que entiendo ahora, tengo que elegir:

  • Almacene una misma clave simétrica para el chat y envíela a todos los usuarios después de que la haya cifrado con su clave pública personal. No es tan bueno, creo ... no debería almacenar una clave tan importante, ¿verdad?
  • Almacene una clave pública por chatter y envíe una versión cifrada de cada mensaje a cada uno de ellos (cifrados con su propia clave pública personal)
pregunta Bancarel Valentin 06.06.2017 - 17:46
fuente

1 respuesta

1

Una forma sencilla sería que el creador del chat genere una clave de cifrado simétrica única y desechable. Luego, el paquete de "invitación" a cualquier otro participante contiene la clave de encriptación, la misma clave pública encriptada con la clave pública del destinatario. O el paquete de "anuncio" podría contener todas las versiones cifradas necesarias de la clave.

De esta manera, solo los participantes previstos pueden llegar a conocer la clave de descifrado, y como también es una clave de cifrado, pueden usarla para enviar mensajes y recibirlos.

Esto es no el mismo problema que el cifrado de difusión, ya que cada participante utiliza la misma clave y la conoce.

Para revocar a un participante, quien tenga el derecho de hacerlo envía un paquete de revocación que contiene una nueva clave simétrica secreta, encriptada con las claves públicas de los participantes no revocados.

    
respondido por el LSerni 06.06.2017 - 18:10
fuente

Lea otras preguntas en las etiquetas