with users delete data create con auth encryption firebase firebase-realtime-database firebase-authentication

encryption - users - firebase user roles



Cómo cifrar los datos de usuario en Firebase (1)

Puedes hacerlo fácilmente de la siguiente manera:

  1. Después de que el usuario A inicia sesión en un par de claves privadas públicas aleatorias se genera en su teléfono. ej .: usar Ecc Curve25519
  2. La clave privada de A se almacena de forma segura en su teléfono.
  3. La clave pública de A se almacena en Firebase y es accesible para cualquiera que hable con A.
  4. Si X envía un mensaje a A, recupera la clave pública de A desde firebase cifra el mensaje para A localmente y almacena el mensaje cifrado en firebase en la bandeja de entrada de A
  5. A descarga el mensaje cifrado de base de fuego y lo desencripta con su clave privada almacenada en su teléfono

(viceversa para la A a la X)

Si A quiere mudarse a otro teléfono o quiere usar varios teléfonos, puede hacerlo de esta manera:

  1. Pida a A que defina una contraseña segura para cifrar su clave privada almacenada localmente. (o cree una contraseña aleatoria y use códigos QR para el intercambio de claves)
  2. Cifre la clave privada localmente (p. Ej., Use AES256) en su teléfono con la contraseña del paso 1 y cárguela en firebase. (Opcional firmarlo con su clave privada)
  3. Descargue la clave privada encriptada del segundo dispositivo desde A
  4. Pida la contraseña en el segundo dispositivo de A y almacene la clave privada de forma segura (opcionalmente, verifique la firma con la clave pública de A)
  5. Elimine la clave privada cifrada de firebase si no desea una copia de seguridad

Estoy utilizando el método de inicio de sesión de correo electrónico / contraseña para Firebase. Me gustaría cifrar los datos que los usuarios guardan en la base de datos en tiempo real antes de enviarlos a la base de datos. Firebase ya maneja la contraseña del usuario, pero ¿puedo usarla para cifrar los datos que no puedo descifrar solo el cliente? Sería bueno si pudiera lograrlo con el cliente SDK.

Entonces mi flujo sería algo como esto:

  1. El usuario inicia sesión con sus credenciales (que es manejado por Firebase mismo)
  2. El usuario encripta algunos datos con una clave única, que se puede generar solo a partir de las credenciales o de algunos datos disponibles solo para el usuario, pero no para mí. (esta clave debe ser persistente entre sesiones, o después de que el usuario haya cambiado su contraseña).
  3. Los datos se guardan en la base de datos (no puedo leerlos porque están cifrados con las credenciales del usuario)
  4. El usuario inicia sesión en un dispositivo diferente (la clave de descifrado se puede generar de inmediato y los datos se pueden descifrar).