2008-09-02 10 views
3

Certaines applications Web, telles que Google Docs, stockent les données générées par les utilisateurs. Données qui ne peuvent être lues que par son propriétaire Ou peut être pas? Pour autant que je sache, ces données sont stockées telles quelles dans une base de données distante. Donc, si quelqu'un avec assez de privilèges dans le système distant (un sysadmin, par exemple) peut cacher mes données, ma vie privée pourrait être compromise.Crypter les données des utilisateurs dans les applications Web

Quelle pourrait être la meilleure solution pour stocker ces données cryptées dans une base de données distante et que seul le propriétaire des données pourrait les déchiffrer? Comment rendre ce processus transparent pour l'utilisateur? (Vous ne pouvez pas utiliser le mot de passe de l'utilisateur comme clé pour crypter ses données, car vous ne devriez pas connaître son mot de passe).

Répondre

6

Si le cryptage/décryptage est effectué sur le serveur, vous ne pouvez en aucun cas vous assurer que le texte en clair n'est pas sauvegardé quelque part dans un fichier journal ou similaire.

Vous devez effectuer le cryptage/décryptage dans le navigateur en utilisant JavaScript/Java/ActiveX ou autre. En tant qu'utilisateur, vous devez faire confiance au côté client du service Web pour ne pas renvoyer les informations non cryptées au serveur.

Carl

-1

Non, vous ne pouvez pas utiliser des mots de passe, mais vous pouvez utiliser les mots de passe. Cependant, les documents Google concernent uniquement le partage. Une telle méthode nécessite donc de stocker une copie du document pour chaque utilisateur.

4

Je pense que Carl, cloué sur la tête, mais je voulais dire que, avec un site Web, si vous lui fournissez des informations confidentielles/personnelles/privilégiées, alors vous devez avoir un certain niveau de confiance, et il est la responsabilité du fournisseur de services d'établir cette confiance. C'est une de ces questions qui ont été posées plusieurs fois, sur Internet depuis sa création, et cela ne fera que croître jusqu'à ce que nous ayons tous nos propres certificats SSL encodés sur nos empreintes digitales, et même alors nous devrons poser la question 'Comment savoir si le doigt est toujours attaché à l'utilisateur?'.

1

Eh bien, je considérerais un processus similaire à Amazons AWS. Vous vous authentifiez avec un mot de passe privé qui n'est pas enregistré à distance. Juste un hachage est utilisé pour valider l'utilisateur. Ensuite, vous générez un certificat avec l'un des algorithmes principaux et testés depuis longtemps et fournissez-le à partir d'une page sécurisée. Ensuite, un algorithme de clé publique/privée peut être utilisé pour crypter des choses pour les utilisateurs.

Mais le problème principal reste le même: Si quelqu'un avec assez de privilèges peut accéder aux données (disons: piraté votre serveur), vous êtes perdu. Avec suffisamment de temps et de puissance, tout pourrait être brisé. C'est juste une question de temps. Mais je pense que les algorithmes et les applications comme GPG/PGP et similaires sont très bien connus et peuvent être implémentés de manière à sécuriser les applications web - et à garder la convivialité à un score que l'utilisateur moyen peut gérer.

modifier Je veux rattraper @Carl et Unkwntech et ajouter leur déclaration: Si vous ne faites pas confiance au site lui-même, ne donnent pas de données privées loin. C'est même avant que quelqu'un pirate leurs serveurs ... ;-)

1

Auron a demandé: Comment générer une clé pour que le client crypte/décrypte les données? Où stockez-vous cette clé?

Eh bien, la clé est généralement dérivée d'un mot de passe que l'utilisateur a choisi. Vous ne le stockez pas, vous faites confiance à l'utilisateur pour s'en souvenir.Ce que vous pouvez stocker est peut-être une valeur de sel associée à cet utilisateur, pour augmenter la sécurité contre les attaques arc-en-ciel par exemple.

Crypto est difficile à obtenir ;-) Je recommanderais de regarder le code source pour AxCrypt et pour Xecrets 'client hors ligne.

Carl

Questions connexes