Sé que hay varios problemas con el cifrado, pero mi caso es ligeramente diferente
- Los usuarios tienen información confidencial almacenada en su dispositivo
- Tienen un par de claves RSA
- La información debe estar encriptada y, a veces, compartida con otro usuario de manera segura. El servidor en ningún caso puede conocer el contenido de esta información
Opciones
1) Cifrado en el dispositivo con la clave pública y descifrado con la clave privada. Cuando el usuario desea compartir datos, los cifra con la clave pública del tercero y los envía el servidor. El usuario los descifra con la clave privada
2) Hay una clave de cifrado HMAC para los datos. La clave secreta se cifra en el dispositivo con la clave RSA pública y se descifra con la clave privada que se usará. Hay una copia encriptada de los datos en el servidor. Cuando el usuario desea compartir datos, encripta la clave secreta con la clave RSA pública del otro usuario y el enlace a una copia de los datos en el servidor
Pros y contras
1) Cifrado y descifrado lento. La sincronización de datos requiere una copia por usuario. Un usuario malvado no pone en riesgo el sistema
2) El cifrado es más rápido. Puede haber una copia del servidor de datos y solo se envía la clave. ¿Eliminar un contacto implica renovar la clave y distribuirla?
Mi pregunta es qué opción elegir y, en el caso de 2, cuáles pueden tener problemas de seguridad