Nous avons une application de bureau et mobile qui est utilisée pour accéder à de nombreux services tiers. Ces services contiennent des informations potentiellement sensibles - par exemple des jetons d'authentification et, dans certains cas, des noms d'utilisateur/mots de passe en clair.Meilleures pratiques pour le stockage d'informations utilisateur sensibles sur le service à distance
Nous voulons fournir un service pour synchroniser leurs paramètres sur plusieurs ordinateurs et périphériques. C'est-à-dire qu'ils se connectent à un service que nous fournissons, et que cette information est synchronisée partout où ils sont connectés.
Nous n'avons aucun moyen de forcer les applications tierces à cesser d'utiliser des mots de passe en clair.
Il y a quelques approches que nous avons examinées:
Ne jamais envoyer vos mots de passe ou des jetons d'authentification vers le haut.
Lorsqu'un utilisateur se connecte à un nouveau périphérique, il doit entrer à nouveau/authentifier le périphérique pour chaque service tiers. Avantage: sécurisé, pas de risque de compromission du mot de passe/jeton.
Inconvénient: Difficile pour les utilisateurs.Chiffrez les informations sensibles à l'aide d'un certificat client ou d'un jeton matériel. Lorsqu'un utilisateur souhaite se connecter, il fournit le jeton certificat/matériel.
Avantage: Très sécurisé. Inconvénient: énorme barrière à l'entrée, difficile à impossible pour l'application à but non lucratif à mettre en œuvre.
Crypter les informations sensibles en utilisant un mot de passe que l'utilisateur fournit
Lorsqu'un utilisateur se connecte sur un nouvel appareil, ils seront invités à fournir un mot de passe.
Si le mot de passe est incorrect, ils doivent entrer à nouveau/authentifier tous les autres périphériques. Avantage: sécurisé, si l'utilisateur fournit un mot de passe fort. Inconvénient: Si un utilisateur réinitialise son mot de passe, il doit le ré-authentifier pour toutes les applications tierces.Chiffrez les informations sensibles sur nos serveurs.
Avantage: Facile pour les utilisateurs. Inconvénient: Seulement un peu plus de travail que du texte en clair pour quiconque saisit les tables de paramètres.
Ne vous embêtez pas à chiffrer quoi que ce soit. (Stockage en texte)
Avantage: Facile pour les utilisateurs. Inconvénient: Facile pour n'importe qui qui attrape notre DB pour obtenir tous les mots de passe/auth-tokens de l'utilisateur.
Ma question est: Est-il une meilleure approche que nous avons pas encore examiné?