crypt

CRYPT(3)                  Manuel du programmeur Linux                 CRYPT(3)



NOM
       crypt, crypt_r - Chiffrage de données ou de mot de passe

SYNOPSIS
       #define _XOPEN_SOURCE       /* Consultez feature_test_macros(7) */
       #include <unistd.h>

       char *crypt(const char *key, const char *salt);

       #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <crypt.h>

       char *crypt_r(const char *key, const char *salt,
                     struct crypt_data *data);

       Effectuez l'édition des liens avec l'option -lcrypt.

DESCRIPTION
       La fonction crypt est celle utilisée pour le cryptage des mots de
       passe. Elle est basée sur l'algorithme DES (« Data Encryption
       Standard ») avec des variantes prévues entre autres choses pour
       éviter l'implémentation matérielle d'un casseur de code.

       L'argument key est le mot de passe saisi par l'utilisateur.

       salt est une chaîne de deux caractères pris dans l'ensemble
       [a-zA-Z0-9./]. Cette chaîne est utilisée pour introduire une
       perturbation (parmi 4096) dans l'algorithme.

       En utilisant les sept bits de poids faible des huit premiers
       caractères de key, une clé de 56 bits est obtenue, qui est alors
       utilisée pour crypter de manière répétée une chaîne de
       caractères constante (souvent une chaîne de zéros). La valeur
       renvoyée pointe sur le mot de passe chiffré, une chaîne de 13
       caractères ASCII imprimables, les deux premiers caractères
       représentant l'argument salt lui-même. Cette valeur renvoyée pointe
       sur des données statiques dont le contenu est écrasé à chaque
       appel.

       Attention : L'espace des clés consistent en 2**56 soient 7,2e16
       valeurs possibles. Une recherche exhaustive est possible en utilisant
       des ordinateurs massivement parallèles. Certains logiciels sont
       disponibles, comme crack(1), qui exploreront la portion de l'espace des
       clés contenant les mots de passe habituellement utilisés par les
       humains. Ainsi, le choix d'un mot de passe doit au minimum éviter les
       noms propres ou communs. On recommande fortement l'utilisation d'un
       programme comme passwd(1) pour vérifier la fiabilité des mots de
       passe dès la saisie.

       L'algorithme DES lui-même a quelques inconvénients qui rendent
       l'utilisation de crypt() peu recommandable pour autre chose que le
       cryptage de mots de passe. Si vous comptez développer un projet
       cryptographique en utilisant crypt(), abandonnez cette idée : achetez
       un bon bouquin sur la cryptographie, et utilisez une bibliothèque DES
       toute faite.

       crypt_r() est la version réentrante de crypt(). La structure pointée
       par data est utilisée pour sauvegarder les données et marquer les
       informations. En plus de l'allocation, l'appelant doit initialiser
       data->initialized à zéro avant le premier appel à crypt_r().

VALEUR RENVOYÃE
       En cas de succès, un pointeur vers le mot de passe chiffré est
       renvoyé. En cas d'erreur, NULL est renvoyé.

ERREURS
       EINVAL Le format de salt est incorrect.



       ENOSYS La fonction crypt() est absente, probablement en raison des
              restrictions d'exportation des Ãtats-Unis.

       EPERM  /proc/sys/crypto/fips_enabled est différent de 0, et un
              chiffrement faible comme DES est sélectionné.

ATTRIBUTS
   Multithreading (voir pthreads(7))
       La fonction crypt() n'est pas sûre dans un contexte multithread.

       La fonction crypt_r() est sûre dans un contexte multithread.

CONFORMITÃ
       crypt() : SVr4, 4.3BSD, POSIX.1-2001. crypt_r() est une extension GNU.

NOTES
   Notes sur la glibc
       La version glibc2 de cette fonction prend en charge des algorithmes de
       chiffrement supplémentaires.

       Si salt est une chaîne de caractères commençant par les caractères
       « $id$ » et suivit par une chaîne se terminant par « $ » :

              $id$salt$encrypted

       alors au lieu d'utiliser la machine DES, id indique la méthode de
       chiffrement utilisée et comment le reste de la chaîne de mot de passe
       est interprétée. Les valeur suivantes sont prises en charge pour id :

              ID  | Method
              ────────────────────────────────────────────────────────────
              1   | MD5
              2a  | Blowfish (pas dans la glibc officielle ; ajoutée
                  | par certaines distributions Linux)
              5   | SHA-256 (depuis la glibc 2.7)
              6   | SHA-512 (depuis la glibc 2.7)

       Ainsi, $5$salt$encrypted est un mot de passe chiffré SHA-256 et
       $6$salt$encrypted est un mot de passe SHA-512.

       « salt » comprend jusqu'à 16 caractères de sel après « $id$ ».
       La partie encrypted de la chaîne de mot de passe correspond au mot de
       passe chiffré. La taille de cette chaîne est fixe :

       MD5     | 22 caractères
       SHA-256 | 43 caractères
       SHA-512 | 86 caractères

       Les caractères de « salt » et « encrypted » sont tiré de
       l'ensemble [a-zA-Z0-9./]. Dans les implémentations MD5 et SHA, key est
       utilisé entièrement (au lieu de seulement les 8 premiers octets dans
       l'implémentation DES).

VOIR AUSSI
       login(1), passwd(1), encrypt(3), getpass(3), passwd(5)

COLOPHON
       Cette page fait partie de la publication 3.70 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler des
       anomalies peuvent être trouvées à l'adresse
       http://www.kernel.org/doc/man-pages/.  Christophe Blaess
       <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal
       <http://manpagesfr.free.fr/> (2003-2006).  Florentin Duneau et
       l'équipe francophone de traduction de Debian (2006-2009).

TRADUCTION
       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction
       francophone au sein du projet perkamon
       <http://perkamon.alioth.debian.org/>.

       Veuillez signaler toute erreur de traduction en écrivant Ã
       <perkamon-fr@traduc.org>.

       Vous pouvez toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».



                               26 février 2014                       CRYPT(3)