Comment chiffrer les données de l'utilisateur dans Firebase
j'utilise la méthode de connexion Courriel/Mot de passe pour Firebase. Je voudrais chiffrer les utilisateurs de données enregistrer dans la base de données en temps réel avant de l'Envoyer à la base de données. Firebase gère déjà le mot de passe utilisateur, mais puis-je l'utiliser d'une manière ou d'une autre pour chiffrer des données qui ne peuvent pas être déchiffrées par moi seulement le client? Ce serait bien si je pouvais l'atteindre avec le client sdk.
Donc mon débit serait quelque chose comme ceci:
- connectez-vous avec ses justificatifs d'identité (qui sont géré par firebase lui-même)
- chiffrez certaines données avec une clé unique, qui peut être générée seulement à partir des justificatifs d'identité ou de certaines données disponibles seulement pour l'utilisateur, mais pas moi. (cette clé doit être persistant entre les sessions, ou après que l'utilisateur a changé son mot de passe.)
- les Données sont enregistrées dans la base de données (je ne peux pas le lire depuis sa cryptés avec l'identification de l'utilisateur)
- l'utilisateur se connecte sur un périphérique différent (la clé de décryptage peut être générée immédiatement) et les données peuvent être déchiffrées.)
2 réponses
Vous pouvez facilement le faire de la façon suivante:
- après l'utilisateur, une paire de clés publiques privées est générée sur son téléphone. par exemple.: utiliser ECC Curve25519
- la clé privée de A est stockée en sécurité sur son téléphone
- la clé publique de A est stockée dans firebase et est accessible à toute personne qui discute avec A.
- Si X envoie un message à A, il récupère la clé publique de A à partir de firebase crypte le message pour A localement et stocke le message crypté sur firebase dans la boîte de réception d'un
- a télécharge le message crypté de firebase et le déchiffre avec sa clé privée stockée sur son téléphone
(et vice-versa pour Un X)
Si Un veut passer à un autre téléphone ou veut utiliser plusieurs téléphones, vous pouvez le faire de cette façon:
- demander à A de définir un mot de passe fort pour crypter sa clé privée stockée localement. (ou créer une phrase de passe aléatoire et utiliser des codes QR pour la clé de change)
- chiffrez la clé privée localement (p. ex.: utilisez AES256) sur son téléphone avec le mot de passe de l'étape 1 et téléchargez-le dans firebase. (facultatif signe avec sa clé privée)
- télécharger la clé privée cryptée à partir du second périphérique à partir d'un
- demander la phrase de passe sur le second périphérique à partir de A et stocker la clé privée en toute sécurité (facultatif vérifier la signature avec la clé publique à partir de A)
- supprimer la clé privée cryptée de firebase si non la sauvegarde est voulu
j'ai trouvé un article très intéressant à propos de cette rédigé par Ande Geers
il explique comment chiffrer les données et les déchiffrer, et comment protéger la clé générée.
http://www.geero.net/2017/05/how-to-encrypt-a-google-firebase-realtime-database/
peut-être que tu devrais y jeter un oeil.