Stocker le mot de passe dans un fichier crypté avec access en lecture et en écriture

Existe-t-il un moyen de stocker un mot de passe dans un fichier sécurisé dans un système Unix ?
Ce fichier peut être lisible et écrit par un script shell Unix.

Je ne veux utiliser aucune bibliothèque externe. Aidez à donner une idée ou un extrait de code pour les cryptages Unix natifs.

Merci!

En posant cette question, vous dites essentiellement à tous que la conception de votre système est défectueuse.

Si vous enregistrez un mot de passe, il y a deux cas d’utilisation:

  1. Pouvoir vérifier un mot de passe saisi par rapport à celui enregistré
  2. Utiliser le mot de passe enregistré pour quelque chose (c.-à-d. Que l’application doit le récupérer en texte brut)

Pour le cas 1, enregistrez simplement un hash salé. C’est sécurisé et même si quelqu’un a access au hash, il ne peut pas en faire grand chose. La protéger en utilisant les permissions de système de fichiers UNIX standard est assez importante – chmod 600 et aucun autre utilisateur (à part root) ne peut accéder au fichier.

Pour le cas 2, le cryptage n’a pas beaucoup de sens. Votre application doit pouvoir le décrypter de toute façon, ce qui donne aux utilisateurs qui consultent le fichier une fausse impression de sécurité (si votre application peut le décrypter, tout le monde le peut). L’utilisation des permissions du système de fichiers est généralement suffisamment sécurisée.
Maintenant, vous pourriez dire que même root ne devrait pas pouvoir accéder au mot de passe – un argument valide sur un système multi-utilisateur. Cependant, root pourrait de toute façon modifier / remplacer votre programme – ce serait donc une fausse impression de sécurité. Quoi qu’il en soit, dans ce cas, vous pouvez le chiffrer avec un second mot de passe que l’utilisateur doit saisir chaque fois que le mot de passe doit être lu ou écrit. Ensuite, vous avez quelque chose de similaire au gestionnaire de mot de passe que les navigateurs ont où les mots de passe stockés sont protégés par un mot de passe principal.

Vous souhaitez alors utiliser l’API cryptographique. Jetez un oeil à celui-ci: http://www.linuxjournal.com/article/6451?page=0,0

Et si vous voulez le faire par script shell, vous pouvez utiliser ‘md5sum’ pour chiffrer les chaînes.