Usar múltiples claves para cifrar el mismo texto con la contraseña como clave pero alguien cambia su contraseña

2

Quiero crear una red social de mensajería, pero me preocupa que la NSA escuche a todos mis miembros a la vez sin mérito como querían hacer con Lavabit.

He encontrado una forma de cifrar los mensajes con varias claves (una clave para cada usuario, de modo que varios usuarios puedan ver el mismo mensaje), y pensé que la mejor manera de hacerlo es utilizar la contraseña introducida por el usuario como una clave que comparto con la versión salada y hash en la base de datos para ver si coinciden, ya que no tengo acceso a la contraseña y es personal para el usuario.

¿Pero qué pasa si alguien cambia su contraseña? Entonces su clave de contraseña no podrá acceder a sus mensajes cifrados. ¿Cuál es la mejor manera de hacer esto? No es como si pudiera almacenar la clave en la base de datos.

    
pregunta desbest 09.12.2015 - 12:07
fuente

2 respuestas

1
  

¿Pero qué pasa si alguien cambia su contraseña? Entonces su clave de contraseña   No podrá acceder a sus mensajes cifrados. Cual es la mejor manera   para ir sobre esto?

Cuando alguien cambia su contraseña, todos los sistemas con los que estoy familiarizado requieren que el usuario escriba tanto la contraseña anterior como la nueva.

simple

Si solo hay una pequeña cantidad de datos cifrados, y desea que su usuario pueda acceder a esos datos solo con la nueva contraseña, el método más simple es descifrar todos los datos con la contraseña anterior para recuperar el texto sin formato. y luego encripta el texto simple usando la nueva contraseña.

direccionamiento indirecto

Mi entendimiento es que muchos sistemas tienen varios niveles de direccionamiento indirecto. Cuando alguien quiere leer el texto sin formato de un documento, lo que realmente sucede es que la contraseña ingresada se usa para descifrar un conjunto de claves que almacena (en forma cifrada) una clave maestra. (por lo general, el archivo "~ / .ssh / id_rsa" o el archivo "~ / Library / Keychains /").

El documento cifrado normalmente se almacena en RFC 4880 OpenPGP Formato de mensaje o algo similar. La clave maestra se utiliza para descifrar uno de los bloques en el encabezado correspondiente a esa clave maestra, dando la clave simétrica única utilizada solo para el cuerpo de este documento. Luego esa clave simétrica se usa para descifrar el cuerpo del documento encriptado, produciendo el texto plano.

Cuando alguien cambia a una nueva contraseña, generalmente se usa la contraseña antigua descifra todo el anillo de claves, y luego el sistema cifra el anillo de claves con la nueva contraseña. Todos los archivos aún son accesibles para ese usuario, porque la misma clave maestra se usa para descifrar ese archivo.

Alternativamente, para cada documento al que el usuario tiene permiso de acceso, se podría agregar otro bloque al encabezado de ese archivo cifrado que contiene una versión cifrada de la misma clave simétrica única del documento, cifrada con una nueva clave maestra nueva.

Idealmente, el usuario llevaría su propio llavero y nadie más tendría acceso a él. En la práctica, muchos sistemas almacenan un anillo de claves (encriptado) para cada usuario.

    
respondido por el David Cary 11.12.2015 - 17:48
fuente
0

Recomendaría dos llaves. Dado que todos los mensajes están cifrados con la clave A y, por lo tanto, si un usuario cambia su clave, todos los mensajes deben volver a cifrarse (posiblemente una alta carga de trabajo), una solución diferente tiene sentido.

Permitiría que el servidor genere una clave de cifrado A para cada usuario, a la que se puede acceder mediante la clave de cifrado personalizada de los usuarios B. Por lo tanto, si elige su A lo suficientemente fuerte, todos los mensajes permanecerán intactos cuando el usuario cambie su clave. De esta manera, todo lo que debe hacer es actualizar el valor de la clave de cifrado y tener una complejidad muy baja.

¿Te sirve esto? Si no, por favor hágamelo saber :)

John

    
respondido por el JRsz 09.12.2015 - 12:45
fuente

Lea otras preguntas en las etiquetas