2013-02-18 8 views
1

Je construis une webapp basique qui accepte une entrée d'utilisateur et retourne un mot de passe crypté.Comment puis-je stocker en toute sécurité une clé secrète?

Le problème est, actuellement le SecretKey que j'utilise est stocké dans le src pour la classe Java. Pour moi, il semble que ce soit une pratique risquée alors j'essaie de trouver un moyen de stocker en toute sécurité ma clé secrète. En faisant des recherches, j'ai trouvé la classe Java KeyStore mais je ne suis pas tout à fait sûr si c'est ce dont j'ai besoin. Aussi, si c'est ce dont j'ai besoin, pouvez-vous m'indiquer comment l'implémenter et, plus important encore, comment cela fonctionne?

Merci

Edit: De faire beaucoup de réflexion/lecture, il semble que il n'y a vraiment pas une bonne solution et vraiment une solution n'est pas nécessaire tant que votre serveur principal est sécurisé, ce qui mine être, donc ce n'est pas un problème.

Merci pour toutes les réponses! :)

+0

Il n'y a pratiquement aucune différence entre toutes les solutions qui comprennent le stockage de la clé secrète dans le disque dur du serveur. Si la clé est sur le disque, il y aura toujours un moment où il est copié dans la mémoire du serveur sous forme non cryptée. – gd1

+1

Pourquoi renvoyez-vous des mots de passe dans une application Web? Tu devrais *** ne jamais faire ça. – Perception

+0

@ gd1 alors quel est le but de KeyStore? – user2019260

Répondre

1

Les mots de passe doivent être stockés à l'aide de fonctions de hachage unidirectionnelles afin que votre système évite ce problème. Voir https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

+0

En fait, le PO peut sûrement améliorer la conception globale de son application, mais cette réponse ne traite pas de ce qu'il demande et devrait être affichée en tant que commentaire. – gd1

0

Si vous parlez de votre clé de chiffrement, il n'existe aucun moyen sécurisé de stocker cette clé en toute sécurité dans JavaScript. Je suppose que le stockage dont vous parlez est le stockage local des navigateurs, qui n'est rien de plus qu'un cookie persistant du côté du navigateur. Tout le monde qui utilise le chrome WebInspector ou Firefox Firebug peut facilement lire ce magasin pour n'importe quelle page qu'il visite. En outre, vous devriez l'enregistrer dans ce magasin par JavaScript et comme tout le monde peut lire votre code source dans le navigateur, c'est encore plus évident.

La seule possibilité de faire de telles choses en toute sécurité est le Server-Sided, comme avec PHP par exemple. Si vous voulez avoir le sentiment d'un comportement interactif, vous pouvez utiliser AJAX sur le client pour interagir avec le backend.

EDIT: Ah, je pense que je me suis trompé alors que vous parlez de Java dans Backend? Si oui je pense qu'il n'y a pas de problème quand vous avez la clé codée en dur dans vos sources compilées ??? Si vous voulez le stocker ailleurs et craignez que quelqu'un l'utilise, vous pouvez le saler et le hacher dans votre application avant de l'utiliser pour la génération de clé (bien sûr, le sel est codé en dur alors)?

+0

J'utilise JSF donc la clé est dans ma source ... Je ne pense pas que le navigateur la voit. Mais je suis nouveau à ceci donc je ne suis pas sûr. – user2019260

Questions connexes