Quelles sont les exigences techniques pour une phrase de passe WPA-PSK?

8

Je pensais générer une phrase secrète WPA-PSK, et je vois dans la page de manuel OpenBSD pour wpa-psk(8):

The passphrase must be a sequence of between 8 and 63
ASCII-encoded characters.

Quels sont exactement les critères de "codage ASCII" ici? Juste qu'ils doivent être des caractères 8 bits avec le bit haut non défini? Les caractères non imprimables sont-ils autorisés?

À bien y penser ... Est-ce que mon approche de génération aléatoire d'une phrase secrète a un sens? Serait-il préférable de simplement générer 64 octets aléatoires et de l'utiliser comme clé?

asveikau
la source

Réponses:

12

> Quels sont exactement les critères de "codage ASCII" ici? Juste qu'ils doivent être des caractères 8 bits avec le bit haut non défini? Les caractères non imprimables sont-ils autorisés?

L' accès Wi-Fi protégé de Wikipédia indique que la phrase de passe WPA-PSK contient de 8 à 63 caractères ASCII imprimables et inclut cette référence en tant que note de bas de page:

Chaque caractère de la phrase de passe doit avoir un codage compris entre 32 et 126 (décimal), inclus. (Norme IEEE 802.11i-2004, annexe H.4.1)
Le caractère espace est inclus dans cette plage.

> À bien y penser ... Est-ce que mon approche de générer au hasard une phrase secrète a un sens? Serait-il préférable de simplement générer 64 octets aléatoires et de l'utiliser comme clé?

> Je pense que je vais toujours générer 256 bits en utilisant un RNG sécurisé ...

Votre routeur sans fil et chaque appareil que vous souhaitez connecter à votre réseau sans fil vous permettent-ils de saisir manuellement la clé WPA-PSK en 64 caractères hexadécimaux? Sinon, vous devrez peut-être utiliser une phrase secrète ASCII pour pouvoir la saisir dans tous vos appareils.

Bavi_H
la source
De RFC2898 cité par @studiohack - Tout au long de ce document, un mot de passe est considéré comme une chaîne d'octets de longueur arbitraire dont l'interprétation en tant que chaîne de texte n'est pas spécifiée. Dans l'intérêt de l'interopérabilité, il est toutefois recommandé que les applications suivent certaines règles de codage de texte courantes. ASCII et UTF-8 [27] sont deux possibilités. (ASCII est un sous-ensemble de UTF-8.)
asveikau
En outre, il semble que OpenBSD, Linux, Windows et Mac OS X prennent tous en charge l'utilisation de clés hexadécimales. Le seul problème que j'ai rencontré est que l'interface utilisateur de Maemo ne l'aime pas - mais le fichier XML qui soutient la configuration le prend en charge.
asveikau
OK, je vois la partie de 802.11i-2004 qui dit cela. Tu as raison.
asveikau
1

De http://www.xs4all.nl/~rjoris/wpapsk.html - "Calcul de clé WPA - De la phrase secrète à la clé hexadécimale Détails du calcul":

Pour le chiffrement WPA-PSK, la clé binaire est dérivée de la phrase secrète selon la formule suivante:

La fonction PBKDF2 est une méthode normalisée pour dériver une clé à partir d'une phrase secrète. Il est spécifié dans la RFC2898 avec une explication claire sur la façon de le calculer. La fonction a besoin d'une fonction pseudo-aléatoire sous-jacente. Dans le cas de WPA, la fonction sous-jacente est HMAC-SHA1. SHA1 est une fonction qui calcule un hachage de 160 bits à partir d'une quantité arbitraire de données d'entrée. Il est clairement expliqué dans la RFC3174. HMAC est une méthode normalisée pour transformer une fonction de hachage cryptographique en une fonction d'authentification de message à clé. Il est spécifié dans RFC2104.

Pour résumer, le processus de dérivation de clé implique d'itérer une fonction HMAC-SHA1 4096 fois, puis de recommencer pour produire davantage de bits de clé. La quantité de calcul impliquée équivaut à calculer le hachage SHA1 sur 1 Moctets de données. Cela explique peut-être pourquoi le Javascript sur cette page est si lent.

Quant à votre question:: Does my approach of randomly generating a passphrase make any sense? Would it be better to just generate 64 random bytes and use that as a key?L'un ou l'autre serait très fort, tant que vous utilisez toutes sortes de symboles, de chiffres et de caractères alphabétiques aléatoires dans votre phrase secrète d'octets aléatoires. La façon dont je le vois: les deux (générés ou aléatoires) seraient impossibles à deviner / pirater ...

studiohack
la source
1
Hm. Il semblerait donc basé sur ma lecture de la RFC que la fonction PBKDF2 ne dépend pas du fait qu'il s'agit de caractères ASCII imprimables, et devrait bien fonctionner avec des données binaires. Je pense que je vais tout de même générer 256 bits en utilisant un RNG sécurisé ... (Je ne suis pas si sûr qu'il serait impossible de le deviner cependant. Il y a de petites chances que cela finisse par générer quelque chose qui se heurte à un faible phrase de passe.: P)
asveikau