Générer des chaînes 128 bits hexadécimales aléatoires pour servir de clef ? Pfff, facile. Et alors, si je veux générer un mot de passe aléatoire?
Chaînes 128 bits aléatoires $ dd if =/dev/urandom | hexdump -Cv0028cb40 17 9b d8 db 72 41 56 9a d9 a2 9d 55 e9 5b e3 cf |....rAV....U.[..| 0028cb50 96 a4 48 b8 2d fe cc b4 bd 10 29 3a 74 8d aa 64 |..H.-.....):t..d| 0028cb60 32 b3 35 f8 cd 4c 35 de c9 df 3f b7 44 9e cc 51 |2.5..L5...?.D..Q| 0028cb70 67 86 b5 8a df ef 53 66 86 06 18 41 d9 5f a1 ca |g.....Sf...A._..| 0028cb80 7e 4f 67 71 08 b2 21 47 85 f4 5c 2a d5 3b 8d 3a |~Ogq..!G..\*.;.:| 0028cb90 df b3 7f 29 79 75 75 dc 16 f3 3e b4 c8 78 41 e7 |...)yuu...>..xA.| 0028cba0 54 d6 da 6a e5 8a 90 46 9f dd 7f 61 36 0c 81 bd |T..j...F...a6...| 0028cbb0 a0 9e 6b 98 03 a0 c8 4d 31 27 19 4a be 23 93 05 |..k....M14.J..^C
Et hop : a0 9e 6b 98 03 a0 c8 4d 31 27 19 4a be 23 93 05
Ou bien :
$ cat /proc/sys/kernel/random/uuid | hexdump -Cv00000000 37 64 61 30 64 61 64 38 2d 30 64 36 61 2d 34 65 |7da0dad8-0d6a-4e| 00000010 35 39 2d 62 63 62 38 2d 33 64 38 66 39 36 34 33 |59-bcb8-3d8f9643| 00000020 64 63 33 34 0a |dc34.| 00000025
Ce qui donne : 37 64 61 30 64 61 64 38 2d 30 64 36 61 2d 34 65
Ou encore :
$ date | md5sum a8649fcf7758f591bbaa3fc4395cef4f
Génération de mots de passe de 32 caractères 10 façons de le faire :
$ date +%s | sha256sum | base64 | head -c 32 ; echo NDFlNzk5NDg2NTkyMzc0MTIxYmNmMThj
$ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32} ;echo ; MN-zh0uuuMiUFqyqV-W2s7oqcZM_9bGh
$ openssl rand -base64 32 DP4o82AfCWEe0D8jhZgw4alvqnplX5H4OcbOvpnYoPU=
$ tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1c44NciLlO5N6iPonYkAD0p6dNGaIjt
$ strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n' ; echo 3GDZvUXe0VHnPsV6Ul4mu0YZFAGEGG
$ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32 HftVu-6uwL4VXY9VVo6m6aLMNCU2vsu3
$ dd if =/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev96C3tm9K6C0iioOr7emxnVFaoZRRm/TUuHINIkEF5Pg
$ </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c32; echo "" Ad@% B5!vzBGq%A$rgWxEBE2dt %1cE2TW
Et la méthode la plus simple :
$ date | md5sum 593d4efc647d86701a6378730b855640 -
Méthodes complémentaires openssl rand - qualité crypto garantie # 32 bytes hex (64 caractères hexadécimaux) openssl rand -hex 32 # Chaîne base64 (compatible URL) openssl rand -base64 32 | tr '+/' '-_' # Chaîne lisible (alphanumérique uniquement) openssl rand -base64 32 | tr -dc 'A-Za-z0-9' | head -c32
pwgen - mots de passe prononçables sudo apt install pwgen # 1 mot de passe de 16 caractères pwgen -s 16 1 # Sans symboles, uniquement prononçable pwgen -0 -A 12 1 # 10 mots de passe sécurisés avec symboles pwgen -s -y 20 10
pass - le gestionnaire de mots de passe Unix sudo apt install pass # Initialisation pass init "votre-clef-gpg" # Générer et stocker (15 caractères, -n = pas de symboles) pass generate MonSite/webmaster@mail.com 15 -n # Récupérer pass MonSite/webmaster@mail.com
uuidgen - identifiants uniques universels # UUID v4 (aléatoire) uuidgen # En majuscules uuidgen | tr '[:lower:]' '[:upper:]' # Sans tirets uuidgen | tr -d '-'
Sécurité : /dev/urandom vs /dev/random
Dispositif
Bloque si entropie insuffisante
Usage recommandé
/dev/urandom
Non
Tout usage général , clés crypto, mots de passe
/dev/random
Oui
Uniquement pour des seed de générateurs matériels
Mythe : /dev/random serait plus sûr que /dev/urandom. Faux. Depuis Linux 5.6, /dev/urandom est initialisé avec 256 bits d’entropie à chaque démarrage. Sur FreeBSD, /dev/urandom est un alias vers /dev/random. Utilisez /dev/urandom partout.