¿Cómo compartir datos encriptados entre usuarios?

1

Estoy en el proceso de cifrar los datos del usuario en mi aplicación y he adoptado el esquema en esta respuesta para proteger los correos electrónicos, contraseñas, nombres y otros detalles privados de los usuarios. Estoy usando una clave sustituta de AES y una clave de bloqueo generada a partir de la contraseña.

Hasta ahora, todo bien.

Sin embargo, me he dado cuenta de que cuando llego al estado del usuario (como un feed de Facebook), no es tan sencillo.

Por supuesto, puedo cifrar y recuperar el estado del usuario con el esquema anterior. Pero, ¿cómo obtengo el estado de sus amigos para que aparezcan en el feed del usuario? De acuerdo con el esquema anterior, necesitaría tener la contraseña de un amigo para descifrar esto. Por diseño, nunca veo la contraseña de un amigo, y el usuario solo conoce su propia contraseña.

La única forma que puedo encontrar es algo así como esta respuesta que utiliza una clave de documento y una implementación de clave de usuario.

¿Realmente tengo que esforzarme para implementar OpenPGP?

Cuando un usuario agrega amigos, ¿tengo que agregar su clave a todos los documentos previamente encriptados? No parece factible. ¿Cómo lo hacen las compañías de medios sociales?

    
pregunta grooble 08.01.2018 - 02:03
fuente

1 respuesta

4

Las "compañías de medios sociales" probablemente no cifran datos como esos cuando están en reposo. En términos generales, los únicos datos que probablemente estén encriptados en reposo son aquellos datos a los que solo tienen acceso los usuarios. (Lo cual no es mucho para la mayoría de los sistemas de redes sociales).

Aunque las compañías pueden usar algún tipo de cifrado de base de datos o de disco completo, me sorprendería si usaran claves por usuario para los datos que se deben compartir (incluso con un pequeño grupo de usuarios).

Si desea poder cifrar datos de un usuario y hacer que otro usuario los descifre sin una clave compartida, necesitará algún tipo de criptografía de clave pública. (Esta es esencialmente la diferencia de definición entre criptografía asimétrica y simétrica). No es necesario hacer OpenPGP si desea mantener los datos dentro de su propio servicio, puede usar algo como NaCL o libsodium para realizar sus operaciones criptográficas.

    
respondido por el David 08.01.2018 - 02:12
fuente

Lea otras preguntas en las etiquetas