Forum Linux.général Linux et les mots de passe

Posté par (page perso) .
Tags : aucun
0
4
mai
2005
Salut à tous,

voilà quelques temps que je me pose une question et je dois avouer que je n'ai pas réellement chercher sur Internet pour avoir une réponse.

Concernant les mots de passe dans Linux. Ils sont tous cryptés ou plus précisément "hashés". Mais cela a-t-il encore de l'importance ?

Je comprend tout à fait qu'auparavant, les mdp se trouvant dans le fichiers /etc/passwd qui était accessible à tous, il fallait sécuriser le système. Mais comme maintenant, les mdp se trouvent dans le fichier /etc/shadow, uniquement accessible en root, je trouve inutile de les hasher.

Si je dis cela, c'est parce que lorsqu'on hashe un mot de passe et que le hash est codé disons sur 32 octets, il y a des collisions, plusieurs mots de passe ont le même hash. Ce qui fait que choisir un mot de passe de 200 caractères n'apporte aucune sécurité supplémentaire qu'un mot de passe de 60 caractères.

Et pas la peine de dire que de cette manière le root n'a pas les mots de passe... il a quand même accès à tout le système, il n'a pas besoin des mots de passe.

bref voilà. Si quelqu'un pouvait éclairer ma lanterne. :-)

merci
  • # mmm...

    Posté par . Évalué à 4.

    Elements de réponse...

    - Stocker les mots de passe en clair n'éviterait pas les collisions (plusieurs personnes pourraient avoir le même mot de passe)

    - Comme j'utilise le même mot de passe sur plusieurs systèmes, il est très important pour moi que le root du système A n'ai pas mon mot de passe sur les autres systèmes

    ... (et il y en a plein d'autres)
    • [^] # Re: mmm...

      Posté par (page perso) . Évalué à 1.

      Elements de contre-réponse...

      - Quand je parle de collision, je parle que deux mots de passe hashés peuvent avoir le même hash. Ce qui arrive, car un mot de passe de 200 caractères n'apporte pas plus de sécurité. Le fait que deux personnes utilisent le même mot de passe est un autre problème.

      - Si le root a le hash du mot de passe, rien ne l'empêche de retrouver un mot de passe compatible avec le hash, ce n'est peut-être pas le même mot de passe mais il y a des chances que oui. Et ce "mot de passe" est peut-être utilisable sur d'autres systèmes. Et tout cela ne prend pas des années, mais des minutes.

      ... (et il y en a plein d'autres)
      • [^] # Re: mmm...

        Posté par . Évalué à 3.

        Si le root a le hash du mot de passe, rien ne l'empêche de retrouver un mot de passe compatible avec le hash

        -> si, le temps de calcul nécessaire...

        A moins que tu ne saches facilement trouver des collisions sur les algorithmes de hashage typiquement utilisés par Linux ? (DES ou MD5).
        • [^] # Re: mmm...

          Posté par (page perso) . Évalué à 1.

          DES n'est pas un algorithme de hashage mais un algorithme de cryptage, ce qui implique que la clé de décryptage doit se trouver quelque part. Si le root sait où la trouver, alors casser un mot de passe ne prend que quelques secondes. Par contre MD5, je ne sais pas combien de temps cela peut prendre.
          • [^] # Re: mmm...

            Posté par . Évalué à 3.

            En fait, crypt() utilise DES pour faire du hashage. La clé de cryptage est basée sur le mot de passe de l'utilisateur, que root ne connait à priori pas. Le mot de passe n'est en tout cas pas stocké "quelque part".

            Pour plus d'infos, man crypt.
          • [^] # Re: mmm...

            Posté par (page perso) . Évalué à 2.

            > Par contre MD5, je ne sais pas combien de temps cela peut prendre. Pour retrouver un texte arbitraire et long, c'est autant dire infaisable. Par contre, les attaques dictionnaires partent du principe que ton mot de passe est simple et court. L'algo est alors a peu près :
            for word in list
               calculer md5(word);
               regarder si on a une entrée correspondante dans /etc/passwd
            done
            
            
            donc, si ton mot de passe est "toto", il va tomber très rapidement, quelle que soit la fonction de hashage. Tu peux essayer john the ripper sur ta machine pour voir si c'est le cas chez toi ...
    • [^] # Re: mmm...

      Posté par (page perso) . Évalué à 4.

      > - Comme j'utilise le même mot de passe sur plusieurs systèmes, il est très important pour
      > moi que le root du système A n'ai pas mon mot de passe sur les autres systèmes

      Le root de système A, il installe un keylogger sur ta machine, il attends bien sagement que tu le tappes, et il a ton mot de passe ...

      La vraie raison, c'est plutôt en cas de compromission de ta machine. Le pirate peut toujours installer un keylogger, mais disons que ça prends plus de temps et avec un peu de chance, tu te rends compte que tu es compromis avant de retapper ton mdp.

      Demande aux admins de tuxfamilly si c'est utile de crypter les mots de passe ;-)
  • # Pas besoin => ne pas faire

    Posté par . Évalué à -1.

    il a quand même accès à tout le système, il n'a pas besoin des mots de passe.

    Étant donné qu'il n'a pas besoin d'avoir accès au mot de passe, il n'y a pas de raison qu'il y ait accès... tout ce dont il a besoin, c'est de vérifier que l'utilisateur a bien saisi son mot de passe.

    Les techniques d'attaque des hash à l'aide de dictionnaires sont classiques et c'est pourquoi la méthode crypt n'est pas recommandée (c'est aussi pour ça que le mot de passe hashé n'a pas à être divulgué à tous les utilisateurs). Il est maintenant temps de passer à des hash plus long (bien souvent plus longs que les mots de passe eux-même), nécessitant donc des dictionnaires de plus en plus volumineux.
    • [^] # Re: Pas besoin => ne pas faire

      Posté par (page perso) . Évalué à 3.

      La taille du hash ne change pas la taille du dictionnaire. Le dictionnaire, c'est l'ensemble des mots de passes, pas l'ensemble des hashs.
      • [^] # Re: Pas besoin => ne pas faire

        Posté par . Évalué à -1.

        En fait, je parlais de dictionnaires inverses: pour chaque hash, ça permet d'avoir un mot correspondant (donc un mot de passe permettant d'être authentifié)
  • # un peu de littérature...

    Posté par . Évalué à 1.

    Plein de choses ont été écrites sur le sujet. Par exemple cet excellent article paru dans MISC:
    http://www.hsc.fr/ressources/articles/mdp_misc5/index.html.fr(...)

    Google peut aussi aider.

    Ah, et pour /etc/shadow uniquement accessible à root, il est aussi généralement accessible à un groupe, et il existe des tas de moyens pour un utilisateur de base pour en obtenir malgré tout le contenu
  • # Petite parenthèse

    Posté par . Évalué à 2.

    Y a t il un moyen de connaitre les différents password saisis lors d'essais infructueux ?
    Je me logue en root, le mdp est mauvais -> stocké dans un fichier par exemple.

    Merci
    • [^] # Re: Petite parenthèse

      Posté par . Évalué à 2.

      Ca doit être faisable en codant/modifiant le module pam qui va bien. Je ne sais pas si ça à déjà été fait par contre.
    • [^] # Re: Petite parenthèse

      Posté par . Évalué à 2.

      C'est fourbe ça. Ça m'arrive souvent, en bon boulet que je suis, de taper frénétiquement "su -" suivi de mon pass avant de me rendre compte que mon shell est sur une machine tierce...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.