Je travaille actuellement un projet qui me demande de stocker des informations sensibles (principalement des mots de passe et d'autres informations) sur un serveur Web via un site Web standard Python/Flack. Ces informations doivent être partagées avec un nombre x d'autres personnes sur le système où ils peuvent déchiffrer et voir les informations.
Idéalement, j'aimerais effectuer tout le cryptage du côté du client et conserver le serveur stocker les données cryptées de manière à ce que le serveur ne soit jamais capable de déchiffrer ces données.
J'avais initialement envisagé un système similaire à celui de LastPass, mais avec la possibilité de partager les mêmes données avec d'autres utilisateurs à être déchiffrés et considérés par eux, je ne peux pas penser à un moyen de travailler.
Est-ce possible?
[Édité pour ajouter plus d'informations]
Le projet que je travaille est en fait une application de mot de passe/gestion de l'information principalement ciblée lors des entreprises souhaitant gérer leurs mots de passe/informations internes pour Say Server Access ou Software Systems avec des comptes simples. Je ne pense pas qu'il soit possible de fournir aux utilisateurs les clés à utiliser à l'extérieur du système. J'espérais que le mot de passe des utilisateurs ou peut-être que la clé individuelle soit suffisante pour déchiffrer les données détenues dans le système, mais avoir la capacité de chiffrer les données afin que toute clé d'utilisateurs puisse la déchiffrer. Je pense que cela pourrait ne pas être possible.
Fondamentalement, vous devez chiffrer les données que vous souhaitez protéger à l'aide d'une clé symétrique (E.G. Touche AES). Cette clé n'est connue que du groupe des utilisateurs autorisés à accéder aux données cryptées sur le serveur.
La clé que vous avez utilisée pour chiffrer les données ne doit pas être stockée sur le serveur. Le cryptage et le déchiffrement se produisent du côté du client à l'intérieur du navigateur Web client. Il existe de nombreuses bibliothèques JavaScript qui implémentent l'algorithme AES.
La partie la plus difficile est la manière dont vous pouvez partager la clé de cryptage entre les utilisateurs. De plus, si le même utilisateur partage une partie de ses données avec deux groupes d'utilisateurs différents, il peut être nécessaire d'utiliser différentes clés de cryptage pour chaque groupe. Notez que vous ne voulez pas toucher pour être connu sur le serveur
Alors, comment pouvons-nous faire ça. Il existe deux options pour la distribution de clé:
Voir, le défi technique de votre système est de savoir comment gérer les clés de cryptage et la gestion des groupes d'utilisateurs.
Vous devez prendre des avantages du stockage Web HTML5 pour stocker les touches AES simplement attribuer à chaque utilisateur une phrase secrète et utilisez cette phrase secrète pour générer une clé de maître AES que vous pouvez utiliser pour chiffrer toutes les clés du stockage Web et d'autres données sensibles sur le. côté client.
Remarque: le problème principal ici si l'utilisateur perd la clé de cryptage. Dans ce cas, il est possible qu'il ne puisse pas ne pas récupérer les données cryptées sur le serveur.
Si vous postez plus de détails sur vos exigences de votre projet, nous pourrions peut-être vous donner une meilleure solution et peut-être un simple.