Comment Tangem génère de l’entropie pour les clés privées
Cet article est disponible dans les langues suivantes :
- Qu’est-ce que l’entropie dans un wallet crypto ?
- Quelle quantité d’entropie une clé privée doit-elle avoir ?
- Comment Tangem génère-t-il l’entropie en mode sans phrase ?
- Comment Tangem génère-t-il l’entropie pour les phrases de récupération ?
- Pourquoi les utilisateurs ne peuvent-ils pas tester leur entropie eux-mêmes ?
- Comment fonctionnent les attaques sur l’entropie ?
- À quoi faire attention lors du choix d’un wallet
En mode sans phrase de récupération, les Tangem Wallet tirent leur entropie du True Random Number Generator matériel intégré à l’élément sécurisé, certifié selon la norme allemande BSI PTG.2 (AIS 31).
Si vous choisissez d’utiliser une phrase de récupération, l’entropie est générée à l’aide de méthodes d’aléa auditées :
- Sur Android, nous utilisons SecureRandom, un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé (CSPRNG) dont la sortie passe par BoringSSL/Conscrypt vers le pool d’entropie du noyau. Ce pool est initialisé à partir du timing des interruptions, des capteurs et du TRNG matériel du SoC. Cela signifie qu’un attaquant ne peut ni prédire ni reconstituer votre clé.
- Sur iOS, nous utilisons l’API système SecRandomCopyBytes, qui génère des octets aléatoires adaptés à la création de clés cryptographiques. L’entropie provient du True Random Number Generator matériel du Secure Enclave.
Qu’est-ce que l’entropie dans un wallet crypto ?
L’entropie est l’aléa brut qu’un wallet utilise pour créer une clé privée. Elle se mesure en bits : plus il y a de bits, plus l’espace de clés possibles est vaste.
Un wallet génère l’entropie une seule fois lors de la configuration. Toutes les clés, adresses et signatures ultérieures sont issues de règles mathématiques fixes : aucun nouvel aléa n’entre dans le système après cette étape.
La génération de l’entropie est donc définitive. Si l’entropie est faible, rien ne pourra renforcer la sécurité de la phrase mnémonique dérivée.
Quelle quantité d’entropie une clé privée doit-elle avoir ?
Sans entropie suffisante, un attaquant peut exploiter des schémas ou des biais dans le processus de génération pour deviner la clé bien plus efficacement qu’en testant tout l’espace mathématique possible.
Une clé privée doit paraître totalement aléatoire du point de vue d’un adversaire : une faible entropie réduit drastiquement l’espace de recherche, transformant un problème a priori insoluble en une attaque réalisable avec assez de puissance de calcul ou d’ingéniosité.
En pratique, cet aléa provient de sources d’entropie de haute qualité alimentant un générateur de nombres aléatoires sécurisé. Si la source est faible (par exemple, basée sur des horodatages, des identifiants de processus ou un bruit système insuffisant), la clé privée résultante aura une structure cachée.
Des attaquants ont déjà exploité ce type de faille dans des cas réels, par exemple en récupérant des clés Bitcoin générées sur des appareils avec un générateur mal initialisé, où l’entropie effective tombait à seulement 32 bits, rendant possible le vol massif de clés.
Une entropie suffisante garantit que la sécurité de la clé est à la hauteur de l’algorithme sous-jacent. Pour les clés sur courbe elliptique comme secp256k1 (utilisée par Bitcoin et d’autres), la courbe offre environ 128 bits de sécurité contre les attaques mathématiques : la clé privée doit donc contenir au moins autant d’entropie pour ne pas devenir le maillon faible.
Comment Tangem génère-t-il l’entropie en mode sans phrase ?
En mode sans phrase, la Tangem Card génère la clé privée à l’intérieur de la puce de l’élément sécurisé. Cette puce intègre un générateur de nombres aléatoires matériel, qui produit de l’aléa à partir de phénomènes physiques comme le bruit thermique et la gigue d’oscillateur. Voici le processus détaillé :
Étape 1 : le TRNG échantillonne le bruit physique.
Le True Random Number Generator matériel puise l’entropie dans les variations imprévisibles du silicium, y compris le bruit thermique au niveau des transistors, le bruit électronique dû aux effets quantiques et la gigue dans le timing des oscillateurs haute fréquence. La sortie à ce stade est un flux de bits bruts, avec biais et corrélations.
Étape 2 : le conditionnement élimine les biais. Le TRNG applique un algorithme de conditionnement, comme un hachage cryptographique ou un processus de « blanchiment », pour supprimer les motifs et obtenir une sortie uniformément répartie sur toutes les valeurs possibles. Il effectue aussi des tests de santé continus sur le flux brut et s’arrête si la source de bruit se dégrade. En complément de l’étape 1, ce processus utilise une bibliothèque certifiée CC EAL, testée lors de la certification, fournie avec la puce et jamais modifiée.
Étape 3 : la puce extrait 256 bits. Une séquence de 256 bits est prélevée sur la sortie conditionnée. Cette valeur est une candidate à la clé privée, rien de plus.
Étape 4 : la puce valide la candidate selon l’ordre de la courbe. Une clé privée sur courbe elliptique doit être un scalaire valide dans une plage précise. Pour secp256k1, la clé doit être un entier compris entre 1 et n-1, où n est l’ordre du point de base, juste en dessous de 2^256.
Une candidate égale à zéro ou supérieure ou égale à n est invalide. La puce la rejette et recommence, bien que la probabilité de ce cas soit d’environ 2^-128.
Étape 5 : la valeur devient la clé principale. C’est cette étape qui rend la méthode sans phrase. Les 256 bits intègrent directement la hiérarchie de clés comme clé privée principale, sans mnémonique.
Étape 6 : la puce calcule la clé publique. La clé publique est obtenue en multipliant la clé privée par G, le point générateur de secp256k1, une opération à sens unique et irréversible.
Étape 7 : les adresses sont dérivées des clés publiques. Pour Bitcoin, la clé publique compressée à un chemin donné passe par SHA-256 puis RIPEMD-160 pour donner un hash de 20 octets. L’encodage de ce hash détermine le type d’adresse.
Une clé sur un chemin BIP-84 devient une adresse P2WPKH avec un encodage bech32. Une clé sur un chemin BIP-44 devient une adresse P2PKH avec un encodage Base58Check. Les deux chemins produisent des clés différentes, donc des adresses distinctes.
Étape 9 : la clé privée reste en mémoire protégée. La clé privée demeure dans la puce de l’élément sécurisé tout au long de sa vie. Les signatures sont produites à l’intérieur de la puce : la clé ne quitte jamais la carte, ni le téléphone, ni l’application, ni Internet.
Comment Tangem génère-t-il l’entropie pour les phrases de récupération ?
En mode phrase de récupération, l’application Tangem génère la mnémonique sur le téléphone. L’application demande des octets aléatoires au générateur cryptographique de la plateforme : SecRandomCopyBytes sur iOS et SecureRandom sur Android.
Ces deux interfaces sont des générateurs pseudo-aléatoires cryptographiquement sécurisés. Chacune est initialisée à partir du pool d’entropie du système d’exploitation, alimenté par des sources matérielles au démarrage et pendant l’utilisation.
L’application convertit ensuite ces octets en mots selon la norme BIP-39. Elle ajoute une somme de contrôle, divise le résultat en groupes de 11 bits et associe chaque groupe à un mot parmi 2048. Douze mots codent 128 bits d’entropie. Vingt-quatre mots codent 256 bits.
Le mode sans phrase élimine la principale cause de perte : une phrase écrite que quelqu’un retrouve, photographie ou détruit. Le mode phrase de récupération offre la portabilité vers d’autres wallets, au prix d’une copie de la clé en dehors de la puce.
Pourquoi les utilisateurs ne peuvent-ils pas tester leur entropie eux-mêmes ?
Une clé générée à partir de 40 bits d’entropie paraît identique à une clé issue de 256 bits. Les deux produisent une adresse valide et donnent le même nombre de mots au même format.
Aucun test réalisable à domicile n’existe pour l’utilisateur. C’est pourquoi des défauts d’entropie peuvent subsister dans des produits commercialisés pendant des années. La vérification doit donc intervenir avant l’achat, via des audits publics et des réponses techniques précises du fabricant.
Comment fonctionnent les attaques sur l’entropie ?
Un attaquant ne peut pas calculer une clé privée à partir d’une adresse publique. Cela exigerait de résoudre le problème du logarithme discret, ce qui reste irréalisable à l’échelle actuelle.
Une entropie faible supprime le besoin de ce calcul. L’attaquant explore l’ensemble réduit de clés que le générateur défaillant aurait pu produire, dérive les adresses de chaque candidate, puis vérifie sur la blockchain si elles sont associées à un solde.
L’adresse sert alors de cible de recherche. C’est pourquoi les attaques sur l’entropie ciblent les wallets financés et ignorent les portefeuilles vides.
À quoi faire attention lors du choix d’un wallet
Pour choisir un hardware wallet, privilégiez les appareils dotés d’une génération d’entropie forte et vérifiable : c’est ce point qui garantit l’imprévisibilité de vos clés privées.
L’incident récent d’attaque sur l’entropie illustre pourquoi un firmware open source n’est pas automatiquement synonyme de meilleure sécurité. La plupart des utilisateurs ne peuvent pas auditer eux-mêmes le code source, tandis que des attaquants chevronnés peuvent l’étudier pour y déceler des failles subtiles et les exploiter.
L’approche la plus sûre consiste à limiter l’exposition inutile du firmware critique tout en le soumettant à des audits indépendants rigoureux par des experts reconnus. Au final, la sécurité découle d’une architecture solide, de tests approfondis et de vérifications indépendantes. – Andrey Lazutkin, CTO.
Privilégiez les wallets matériels intégrant un Secure Element certifié et un firmware audité indépendamment. Ce firmware pilote l’utilisation de l’élément sécurisé : une faille dans son implémentation peut compromettre même le matériel le plus sûr. C’est pourquoi chaque mise à jour doit être revue par des experts de confiance.
La sécurité de Tangem a été auditée de façon indépendante par des laboratoires de référence, dont Kudelski Security, Riscure et Cure53, garantissant la robustesse globale de notre wallet.