Je comprends que plus de sha-rounds rendent difficile le renforcement brutal du mot de passe haché dans/etc/shadow. Les cycles supérieurs utilisent également plus de traitement CPU lors de l'exécution des commandes Sudo
et de la connexion au compte Unix. Mais que sont vraiment les sha-rounds? Le manuel chpasswd
ne donne pas vraiment de définition technique des sha-rounds.
-s, --sha-rounds ROUNDS
Use the specified number of rounds to encrypt the passwords.
The value 0 means that the system will choose the default number of rounds for the crypt method (5000).
A minimal value of 1000 and a maximal value of 999,999,999 will be enforced.
You can only use this option with the SHA256 or SHA512 crypt method.
By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs.
Le wiki SHA-2 ne dit pas vraiment non plus:
SHA-256 and SHA-512 ... use different shift amounts and additive constants, but their structures are otherwise virtually identical, differing only in the number of rounds.
Dans le manuel chpasswd et le wiki SHA-2, il n'y a pas suffisamment de contexte pour déterminer ce que sont les "sha-rounds" ou comment ils se rapportent à SHA512.
Ce que le manuel appelle des tours est probablement mieux appelé itérations. S'il est vrai que la fonction SHA-2 possède en interne un nombre fixe de tours (64 ou 80, selon le hachage utilisé), ce n'est pas ce dont parle ce manuel. Afin de sécuriser les mots de passe hachés, les programmes mettent souvent le mot de passe via une fonction KDF telle que PBKDF2, qui exécute plusieurs fois une seule fonction de hachage pour ralentir les attaques par force brute. C'est à cela que se réfèrent les "tours" dans ce contexte. Plus le nombre rond est élevé, plus le traitement d'un mot de passe est long et plus il est sécurisé.
Les systèmes sécurisés ne stockent pas les mots de passe directement, ni même sous forme cryptée, mais sous forme de hachages lents salés. Voir Comment hacher en toute sécurité les mots de passe? pour plus de détails.
Le but d'utiliser un mécanisme de hachage plutôt que le chiffrement est de rendre impossible le retour du hachage du mot de passe (ce qui est stocké dans /etc/shadow
) Au mot de passe lui-même, sauf avec la méthode "triviale" de deviner un mot de passe, calculer le hachage correspondant et le comparer avec l'entrée de la base de données. L'objectif de ralentir le calcul du hachage est de ralentir ces tentatives de force brute.
Une façon courante de construire un hachage lent est de prendre une fonction de hachage cryptographique ordinaire telle que SHA-256 ou SHA-512 et de l'exécuter plusieurs fois: fondamentalement SHA-256(SHA-256(…(SHA-256(salt + password))))
. (Ce n'est pas le calcul réel, je montre juste l'aspect pertinent ici.) Parce qu'il est impossible de trouver x
étant donné SHA-256(x)
à moins de deviner x
lui-même et de vérifier la devinez en calculant SHA-256(guess)
, il est impossible de trouver password
étant donné son hachage itératif à court de faire une supposition et de la vérifier. C'est ce que la plupart des systèmes Unix utilisent aujourd'hui, en utilisant une méthode parfois appelée SHAcrypt (mais elle n'a pas vraiment de nom couramment utilisé). PBKDF2 est un nom plus connu; c'est un schéma très similaire, construit sur le même principe d'itération d'une fonction de hachage plusieurs fois mais avec une construction légèrement différente.
Ce que la documentation de chpasswd
appelle "nombre de SHA rounds") est le nombre de fois que la construction salée-itérée-SHA2 appelle la fonction de hachage. Ceci est plus communément appelé " nombre d'itérations ".
Certaines primitives cryptographiques, notamment SHA-256 et SHA-512, sont décrites comme utilisant plusieurs tours en interne, mais cela n'a rien à voir avec l'utilisation du mot "tours" dans la documentation de chpasswd
. SHAcrypt utilise la fonction de hachage standard (SHA-256 ou SHA-512) comme boîte noire et l'appelle plusieurs fois.