Qu'est-ce que l'Entropie ? L'Aleatoire Derriere la Securite Crypto
Table des matières
Chaque portefeuille de cryptomonnaie commence par un nombre aleatoire. Pas un mot de passe que vous choisissez, pas un motif que vous concevez, mais de l'aleatoire pur tire du monde physique. Cet aleatoire s'appelle l'entropie, et c'est le facteur le plus important qui determine si vos actifs crypto sont securises ou vulnerables.
Si l'entropie derriere votre portefeuille est forte, un attaquant devrait parcourir plus de combinaisons qu'il n'y a d'atomes dans l'univers observable pour trouver vos cles. Si l'entropie est faible, vos fonds peuvent etre voles en quelques secondes. Il n'y a pas de juste milieu.
L'Entropie Definie¶
En cryptographie, l'entropie mesure l'imprevisibilite des donnees. Elle est quantifiee en bits. Un bit d'entropie represente un seul choix binaire : pile ou face, 0 ou 1. Deux bits d'entropie donnent quatre resultats possibles. Trois bits en donnent huit. Chaque bit supplementaire double le nombre de possibilites.
La formule est simple : n bits d'entropie produisent 2^n valeurs possibles.
Cette croissance exponentielle est ce qui rend l'entropie si puissante. A petite echelle, les possibilites semblent gerables. Aux nombres de bits utilises en cryptomonnaie, elles deviennent incomprehensiblement grandes.
L'entropie dans le contexte crypto n'est pas une metaphore ou un concept abstrait. C'est une quantite specifique et mesurable d'aleatoire qui est injectee dans des algorithmes deterministes pour produire votre seed phrase, vos cles privees et, en fin de compte, vos adresses. Tout en aval de l'entropie initiale est mathematiquement derive. L'entropie elle-meme est la seule partie qui doit etre veritablement aleatoire.
128 Bits vs 256 Bits¶
Le standard BIP39, qui definit comment les seed phrases sont generees, prend en charge deux longueurs d'entropie principales :
128 bits (seed phrase de 12 mots)¶
- Produit 2^128 seed phrases possibles
- Soit 340 282 366 920 938 463 463 374 607 431 768 211 456 combinaisons
- Approximativement 3,4 x 10^38
256 bits (seed phrase de 24 mots)¶
- Produit 2^256 seed phrases possibles
- Soit environ 1,16 x 10^77 combinaisons
- Plus que le nombre estime d'atomes dans l'univers observable
Les deux niveaux sont consideres comme surs contre la technologie actuelle. 128 bits d'entropie est le standard pour la plupart des portefeuilles grand public, et aucune methode de calcul connue ne peut parcourir 2^128 possibilites dans un delai pratique. L'option 256 bits fournit une marge de securite supplementaire pour les utilisateurs souhaitant une protection maximale ou preoccupes par les avancees futures en informatique. Pour une comparaison detaillee, consultez A Quelle Vitesse une Seed Phrase Peut-elle Etre Cassee par Force Brute ?.
La relation entre bits d'entropie et nombre de mots suit une regle simple : chaque 11 bits d'entropie correspond a un mot de la liste de mots BIP39 (2 048 mots, et 2^11 = 2 048). Une phrase de 12 mots encode 128 bits d'entropie plus 4 bits de checksum. Une phrase de 24 mots encode 256 bits d'entropie plus 8 bits de checksum. Pour l'analyse complete de ce processus, lisez BIP39 Explique.
Sources d'Aleatoire : Hardware RNG et Web Crypto API¶
La question critique est : d'ou vient l'entropie ? Tous les generateurs de nombres aleatoires ne se valent pas.
Pseudo-aleatoire vs. Cryptographiquement Securise¶
Une fonction d'aleatoire standard de programmation (comme Math.random() de JavaScript) est pseudo-aleatoire. Elle utilise une formule mathematique pour produire des nombres qui paraissent aleatoires mais sont entierement deterministes. Avec la meme graine de depart, elle produira la meme sequence a chaque fois. C'est catastrophiquement inadequat pour generer des cles de cryptomonnaie.
Les generateurs de nombres aleatoires cryptographiquement securises (CSPRNGs) resolvent cela en incorporant un veritable aleatoire physique provenant de sources materielles.
Generateurs de Nombres Aleatoires Materiels¶
Les CPU modernes incluent des generateurs de nombres aleatoires materiels dedies qui recoltent l'entropie de phenomenes physiques :
- Intel RDRAND/RDSEED : Utilise le bruit thermique dans les circuits en silicium
- ARM TrustZone TRNG : Exploite la generation de bits aleatoires au niveau materiel
- Pools d'entropie du systeme :
/dev/urandomde Linux, CryptGenRandom de Windows et SecRandomCopyBytes de macOS maintiennent des pools d'entropie alimentes par des evenements materiels comme le timing des interruptions, les variations de seek disque et les temps d'arrivee des paquets reseau
Ces sources physiques produisent un aleatoire qui ne peut pas etre predit, meme par un attaquant ayant une connaissance complete de l'etat logiciel du systeme.
Web Crypto API¶
Pour les outils bases sur navigateur, la Web Crypto API fournit l'acces au generateur de nombres aleatoires cryptographiques du systeme d'exploitation via crypto.getRandomValues(). Cette fonction est specifiee par le W3C et implementee dans tous les navigateurs modernes. Elle puise dans le meme pool d'entropie du systeme utilise par les applications natives.
SafeSeed utilise la Web Crypto API pour toute generation de cles. Lorsque vous utilisez le Generateur de Seed Phrase Bitcoin ou le Generateur de Seed Phrase Ethereum, l'entropie provient de crypto.getRandomValues(), qui fournit des octets aleatoires cryptographiquement securises directement depuis le materiel de votre appareil. Rien n'est genere sur un serveur ; tout s'execute dans votre navigateur.
La Web Crypto API n'est pas la meme chose que Math.random(). C'est un systeme fondamentalement different concu specifiquement pour les operations cryptographiques. La distinction est enorme : Math.random() a environ 52 bits d'etat interne dans la plupart des implementations, ce qui signifie qu'un attaquant observant quelques sorties peut predire toutes les futures. crypto.getRandomValues() n'a pas cette faiblesse.
De l'Entropie a la Seed Phrase¶
Le parcours de l'entropie brute a une seed phrase suit un chemin precis et deterministe defini par la specification BIP39 :
Etape 1 : Generer des octets aleatoires¶
Le CSPRNG produit 16 octets (128 bits) ou 32 octets (256 bits) de donnees aleatoires.
Etape 2 : Calculer le checksum¶
Le hash SHA-256 de l'entropie est calcule. Les 4 premiers bits (pour une entropie de 128 bits) ou 8 bits (pour une entropie de 256 bits) de ce hash sont ajoutes a l'entropie comme checksum.
Etape 3 : Diviser en groupes de 11 bits¶
Les bits combines entropie + checksum sont divises en groupes de 11 bits chacun. Pour une phrase de 12 mots : 128 + 4 = 132 bits, divises en 12 groupes de 11 bits.
Etape 4 : Associer aux mots¶
Chaque valeur de 11 bits (0-2047) est utilisee comme indice dans la liste de mots BIP39 de 2 048 mots. Le resultat est votre phrase mnemonique.
Etape 5 : Deriver la seed¶
La phrase mnemonique est passee dans PBKDF2-HMAC-SHA512 avec 2 048 iterations pour produire une seed de 512 bits. Cette seed est ensuite utilisee pour deriver l'arbre de votre portefeuille HD suivant les chemins de derivation BIP44.
Chaque etape apres l'etape 1 est deterministe. Les memes 128 bits d'entropie produiront toujours les memes 12 mots, la meme seed et les memes adresses. Toute la securite du systeme repose sur l'imprevisibilite de ces octets aleatoires initiaux.
Quand une Entropie Faible Mene a des Fonds Voles¶
Les consequences d'une entropie faible ne sont pas theoriques. De multiples incidents reels ont demontre ce qui arrive quand l'aleatoire echoue.
La vulnerabilite Android SecureRandom (2013)¶
En aout 2013, une faille dans l'implementation de SecureRandom sur Android a ete decouverte. La bibliotheque cryptographique Java sur Android ne semait pas correctement son generateur de nombres aleatoires, poussant certains portefeuilles Bitcoin a generer des cles privees avec une entropie insuffisante. Les attaquants ont exploite cela pour voler des bitcoins des portefeuilles affectes. La vulnerabilite a impacte plusieurs applications de portefeuille et a entraine des correctifs d'urgence dans tout l'ecosysteme Android.
Blockchain Bandit (cles previsibles)¶
Le chercheur en securite Adrian Bednarek a documente un cas ou des attaquants scannaient systematiquement la blockchain Ethereum a la recherche d'adresses derivees de cles privees faibles. Des cles comme 0x0000...0001 (le nombre 1) ou des cles derivees de phrases simples avaient ete utilisees par des personnes qui ne comprenaient pas l'entropie. Des bots automatises surveillaient ces adresses et volaient tous les fonds y etant deposes en quelques secondes. Des milliers d'ethers ont ete draines d'adresses avec des cles previsibles.
Attaques sur les brain wallets¶
Les brain wallets --- ou une cle privee est derivee d'une phrase memorisee --- ont ete compromis a plusieurs reprises parce que les phrases choisies par des humains ont bien moins d'entropie que ce que les gens supposent. Les attaquants executent des dictionnaires massifs de phrases, paroles de chansons, citations de livres et mots de passe courants dans la meme fonction de derivation utilisee par les brain wallets. Toute phrase qu'un humain peut memoriser est probablement dans l'espace de recherche de ces attaques.
Ces incidents partagent une lecon commune : les algorithmes cryptographiques eux-memes (SHA-256, secp256k1, ECDSA) ne sont pas casses. L'entropie qui les alimentait etait insuffisante.
Tester la Qualite de l'Entropie¶
Comment pouvez-vous verifier qu'un generateur de nombres aleatoires produit une entropie de qualite ? Plusieurs tests statistiques existent :
NIST SP 800-22¶
Le National Institute of Standards and Technology publie une suite de tests statistiques pour l'aleatoire. Ceux-ci incluent des tests de frequence (les 0 et les 1 sont-ils a peu pres equilibres ?), des tests de sequences (les suites de bits identiques ont-elles la longueur attendue ?) et des tests de rang de matrice, entre autres. Un CSPRNG bien fonctionnel devrait les reussir tous.
Suite de tests Dieharder¶
Un ensemble etendu de tests d'aleatoire qui pousse les generateurs plus fort que la suite NIST. Nomme d'apres les tests Diehard originaux de George Marsaglia, cette suite est couramment utilisee pour evaluer les nouveaux generateurs de nombres aleatoires.
Verification pratique¶
Pour les utilisateurs finaux, la verification la plus pratique est de s'assurer que vous utilisez un outil bien audite qui s'appuie sur crypto.getRandomValues() ou un CSPRNG equivalent au niveau du systeme. Vous ne devriez pas tenter d'ameliorer l'entropie en ajoutant votre propre "aleatoire" (comme choisir vous-meme les mots), car les choix humains sont bien moins aleatoires qu'ils ne le semblent.
Les outils de SafeSeed sont open source, ce qui signifie que n'importe qui peut verifier que la source d'entropie est crypto.getRandomValues() et non une alternative plus faible. Le code s'execute entierement dans votre navigateur sans communication serveur, donc il n'y a aucune possibilite pour un intermediaire d'influencer la generation de nombres aleatoires. Pour une discussion plus large sur l'importance de la generation cote client, consultez Les Generateurs de Seed en Ligne Sont-ils Surs ?.
L'Entropie et Votre Posture de Securite¶
Comprendre l'entropie change votre facon de penser la securite crypto. Votre seed phrase de 12 mots n'est pas qu'un simple mecanisme de sauvegarde pratique ; c'est un encodage lisible par l'homme d'un nombre aleatoire si grand que l'univers ne contient pas assez d'energie pour parcourir toutes les possibilites.
Mais cette protection ne tient que si le nombre aleatoire original etait veritablement aleatoire. Lors du choix d'outils pour generer votre portefeuille :
- Verifiez la source d'entropie : L'outil devrait utiliser
crypto.getRandomValues(),/dev/urandomou un aleatoire equivalent soutenu par le materiel. - Evitez l'entropie personnalisee : Ne choisissez pas vos propres mots, ne lancez pas de des avec une methode biaisee ou n'utilisez aucune source d'aleatoire que vous "sentez" suffisante.
- Utilisez des standards etablis : BIP39 a ete eprouve depuis 2013. Les outils qui suivent BIP39 precisement, comme le Generateur de Seed Phrase Solana sur SafeSeed, heritent d'une decennie de revue de securite.
- Generez hors ligne quand c'est possible : Meme avec une entropie forte, generer des cles sur un appareil air-gapped ou hors ligne elimine les vecteurs d'attaque bases sur le reseau. Consultez Comment Generer une Seed Phrase Bitcoin Hors Ligne pour un guide pratique.
L'entropie est invisible. Vous ne pouvez pas la voir, la sentir ou la verifier en regardant la sortie. Une seed phrase generee a partir d'une entropie faible est identique en apparence a une generee a partir d'une entropie forte. La seule facon d'assurer votre securite est de faire confiance au processus : utilisez des outils audites et open source qui puisent dans des generateurs de nombres aleatoires soutenus par le materiel, et ne transigez jamais sur ce fondement.