Génération de clés hors ligne : guide de sécurité air-gapped
Générer des clés de cryptomonnaie sur un ordinateur connecté à Internet les expose aux malwares, keyloggers, captures d’écran, détournements du presse-papiers et exfiltration à distance. Pour des portefeuilles à forte valeur destinés au stockage à froid de long terme, la référence absolue est la génération hors ligne air-gapped : créer des clés sur un appareil qui n’a jamais été et ne sera jamais connecté à un réseau.
Ce guide fournit un processus complet, étape par étape, pour la génération de clés hors ligne, couvrant le choix du matériel, la configuration du système d’exploitation, la génération des clés, la vérification et le nettoyage sécurisé.
Pourquoi la génération air-gapped est importante
Le modèle de menace
Lorsque vous générez une phrase mnémonique ou une clé privée sur un ordinateur classique, le matériel de clé existe dans :
- RAM — Accessible à tout processus exécuté sur le système.
- Disque — Peut être écrit sur disque par le système de mémoire virtuelle de l’OS.
- Presse-papiers — En cas de copier-coller, accessible à toutes les applications.
- Réseau — Si la machine est connectée, un malware peut exfiltrer les clés instantanément.
- Affichage — Malware de capture d’écran ou observation visuelle.
- Clavier — Les keyloggers (logiciels ou matériels) enregistrent toute saisie.
Un ordinateur air-gapped élimine entièrement le vecteur réseau. Combiné à de bonnes pratiques de sécurité opérationnelle, il réduit fortement, voire élimine, les autres vecteurs également.
Qui a besoin d’une génération air-gapped ?
- Toute personne stockant plus qu’elle ne peut se permettre de perdre.
- Stockage « deep cold » de long terme (années ou décennies).
- Garde institutionnelle et gestion de trésorerie.
- Toute personne souhaitant le plus haut niveau de sécurité possible.
Pour les portefeuilles d’usage quotidien avec de petits soldes, un hardware wallet offre une sécurité suffisante sans la complexité des procédures air-gapped.
Choix du matériel
Option 1 : ordinateur portable dédié (recommandé)
Achetez un ordinateur portable neuf ou réinitialisé usine, utilisé exclusivement pour la génération de clés et jamais connecté à Internet :
- Retirez ou désactivez tout le matériel réseau. Retirez physiquement la carte Wi-Fi et le module Bluetooth si possible. Au minimum, désactivez-les dans le firmware BIOS/UEFI.
- Désactivez la caméra et le microphone. Retirez-les ou couvrez-les/débranchez-les physiquement.
- Utilisez un portable sans modem cellulaire.
- Options budget : ThinkPad d’occasion (X230, T440) — peu coûteux, bien pris en charge par Linux, facile à modifier physiquement.
Option 2 : Raspberry Pi
Un Raspberry Pi (Model 3B+ ou 4) est un ordinateur monocarte à faible coût, sans Wi-Fi si vous utilisez le Pi Zero sans module sans fil, ou si vous désactivez le réseau :
- Démarrage depuis une carte microSD.
- Pas de stockage persistant au-delà de la carte SD (que vous détruirez ensuite).
- Pas de matériel sans fil si vous utilisez le bon modèle.
- Coût réduit (35–75 $ accessoires inclus).
Option 3 : Live USB sur matériel existant
Démarrez un Linux live USB dédié sur un ordinateur existant avec tout le réseau désactivé :
- L’environnement live s’exécute entièrement en RAM.
- Aucune donnée n’est écrite sur le disque interne (si configuré correctement).
- Après extinction, la RAM est effacée.
- Risque : L’ordinateur existant peut contenir des compromissions matérielles (rootkits firmware, keyloggers matériels) qui persistent entre les démarrages OS. Un appareil dédié élimine ce risque.
Configuration du système d’exploitation
Tails OS (Recommandé)
Tails est une distribution Linux orientée confidentialité, conçue pour ne laisser aucune trace :
- Démarre depuis USB et fonctionne entièrement en RAM.
- Tout le trafic réseau passe par Tor par défaut — mais en usage air-gapped, vous n’activerez aucun réseau.
- Conçu pour un usage amnésique : aucun état persistant sauf configuration explicite.
- Inclut des outils courants et peut exécuter Python pour des scripts de génération de clés.
Étapes de configuration :
- Téléchargez l’ISO Tails sur votre ordinateur habituel.
- Vérifiez la signature ISO avec la clé de signature Tails.
- Écrivez l’ISO sur une clé USB avec Tails Installer, Etcher ou
dd. - Démarrez l’ordinateur air-gapped depuis la clé USB.
- Au Tails Greeter, ne configurez aucune connexion réseau.
- Vérifiez qu’aucune interface réseau n’est active :
ip link showdoit afficher toutes les interfaces en DOWN.
Ubuntu Live USB (Alternative)
Si Tails n’est pas adapté :
- Téléchargez l’ISO Ubuntu et vérifiez sa somme de contrôle.
- Écrivez-la sur USB.
- Démarrez avec le réseau désactivé dans le BIOS.
- Dans l’installateur Ubuntu, sélectionnez "Try Ubuntu" (ne pas installer).
- Vérifiez l’absence de connectivité réseau.
Vérifier l’intégrité de l’air-gap
Après le démarrage, vérifiez l’air-gap :
# Check that no network interfaces are UP
ip link show
# Verify no IP addresses assigned
ip addr show
# Attempt to reach the internet (should fail)
ping -c 1 8.8.8.8
# Check for Wi-Fi and Bluetooth
rfkill list all
Toutes les interfaces réseau doivent être DOWN, aucune adresse IP ne doit être assignée, et le ping doit échouer. Si un test suggère une connectivité, arrêtez-vous et diagnostiquez avant de continuer.
Processus de génération des clés
Méthode 1 : utiliser les outils SafeSeed hors ligne
Les outils SafeSeed sont des applications web côté client qui peuvent fonctionner dans un navigateur sans connexion Internet.
Le SafeSeed Seed Phrase Generator et Paper Wallet Creator peuvent être enregistrés pour un usage hors ligne. Avant de passer hors ligne, enregistrez la page web complète (Ctrl+S / Cmd+S), transférez-la sur l’ordinateur air-gapped via USB et ouvrez-la dans un navigateur. Toutes les opérations cryptographiques s’exécutent localement en JavaScript — aucune communication serveur requise.
Étapes :
- Sur votre ordinateur habituel (en ligne), ouvrez l’outil SafeSeed.
- Enregistrez la page web complète sur une clé USB.
- Vérifiez l’intégrité du fichier (comparez les checksums si disponibles).
- Transférez la clé USB sur l’ordinateur air-gapped.
- Ouvrez le fichier HTML enregistré dans le navigateur.
- Générez votre phrase mnémonique.
- Écrivez-la sur papier (ne l’enregistrez pas numériquement sur la machine air-gapped).
- Vérifiez la phrase mnémonique en la ressaisissant et en confirmant que les mêmes adresses sont générées.
Méthode 2 : utiliser l’outil BIP-39 de Ian Coleman
L’outil BIP-39 de Ian Coleman est une page HTML autonome open source largement utilisée pour la génération de clés hors ligne :
- Téléchargez la dernière version depuis GitHub sur votre ordinateur en ligne.
- Vérifiez la signature PGP.
- Transférez vers l’ordinateur air-gapped via USB.
- Ouvrez
bip39-standalone.htmldans un navigateur. - Générez ou saisissez un mnémonique.
- Sélectionnez la monnaie et le chemin de dérivation.
- Enregistrez la phrase mnémonique et les adresses.
Méthode 3 : entropie basée sur des dés
Pour une méfiance maximale envers tous les RNG logiciels, générez l’entropie manuellement avec des dés :
- Utilisez des dés de qualité casino (dés de précision à arêtes vives, pas des dés grand public arrondis).
- Lancez un dé unique 99 fois pour 256 bits d’entropie (chaque lancer fournit ~2.585 bits ; 99 lancers fournissent ~255.9 bits).
- Convertissez les lancers en chaîne binaire.
- Utilisez l’outil BIP-39 (hors ligne) pour convertir l’entropie binaire en mnémonique.
- Ou lancez le dé 50 fois pour 128 bits d’entropie (phrase de 12 mots).
Méthodes de conversion des dés :
- Méthode base-6 : Enregistrez chaque lancer (1-6), convertissez la séquence en binaire.
- Méthode binaire avec pièce : Utilisez une pièce (pile=1, face=0) 256 fois.
- Dés vers binaire : Lancez un dé ; si 1-3, enregistrez 0 ; si 4-6, enregistrez 1. Répétez 256 fois.
La troisième méthode gaspille le plus d’entropie mais reste la plus simple. Pour une analyse détaillée de la qualité de l’entropie, consultez notre guide Entropy and Randomness.
Méthode 4 : ligne de commande (Python)
Pour les utilisateurs à l’aise avec la ligne de commande, un script Python minimal peut générer des mnémoniques BIP-39 :
import hashlib
import os
# BIP-39 word list must be loaded from a file
with open('english.txt', 'r') as f:
wordlist = [w.strip() for w in f.readlines()]
# Generate 256 bits of entropy
entropy = os.urandom(32) # Uses OS CSPRNG
# Compute checksum
h = hashlib.sha256(entropy).digest()
checksum_bits = bin(h[0])[2:].zfill(8) # First 8 bits for 256-bit entropy
# Convert entropy to binary string
entropy_bits = bin(int.from_bytes(entropy, 'big'))[2:].zfill(256)
all_bits = entropy_bits + checksum_bits
# Split into 11-bit groups and map to words
words = []
for i in range(0, len(all_bits), 11):
index = int(all_bits[i:i+11], 2)
words.append(wordlist[index])
print(' '.join(words))
Important : Ceci est un exemple simplifié à but éducatif. En production, utilisez une bibliothèque bien auditée comme mnemonic de python-mnemonic.
Vérification
Après avoir généré une phrase mnémonique, vérifiez-la avant de lui confier des fonds :
1. Vérification du checksum
Saisissez à nouveau la phrase mnémonique dans l’outil de génération. Si l’outil l’accepte sans erreur, le checksum est valide.
2. Vérification de dérivation d’adresse
Dérivez les premières adresses pour la cryptomonnaie visée et le chemin de dérivation. Enregistrez ces adresses. Plus tard, sur un autre appareil (ou après redémarrage de la machine air-gapped), ressaisissez la phrase mnémonique et vérifiez que les mêmes adresses sont générées.
3. Vérification croisée entre outils
Si possible, vérifiez la phrase mnémonique dans deux outils différents (par ex. générateur SafeSeed et outil Ian Coleman). Les deux doivent produire des adresses identiques à partir de la même phrase mnémonique, du même chemin de dérivation et de la même passphrase.
4. Test avec petite transaction
Avant de stocker une valeur significative :
- Envoyez une petite quantité de cryptomonnaie à la première adresse de réception.
- Sur un appareil séparé, restaurez le portefeuille à partir de la phrase mnémonique.
- Vérifiez que les fonds sont visibles et que vous pouvez signer une transaction pour les renvoyer.
Cela confirme toute la chaîne : génération d’entropie, encodage mnémonique, dérivation de seed, dérivation de clé et génération d’adresse.
Enregistrement de la phrase mnémonique
Papier
- Écrivez lisiblement avec un stylo à encre permanente sur du papier sans acide.
- Numérotez chaque mot (1-24).
- N’écrivez pas sur une surface pouvant laisser une empreinte (pas sur un bloc où l’empreinte apparaît sur les feuilles dessous).
- Stockez dans un contenant ignifuge et étanche.
Métal
- Poinçonnez ou gravez sur des plaques en acier inoxydable.
- Testez avec l’abréviation des quatre premières lettres si l’espace est limité.
- Vérifiez la lisibilité immédiatement après le poinçonnage.
- Le métal résiste au feu et aux inondations — recommandé pour le stockage de long terme.
Ce qu’il ne faut pas faire
- Ne photographiez pas la phrase mnémonique.
- Ne la saisissez dans aucun fichier sur la machine air-gapped.
- Ne l’imprimez pas (les imprimantes ont de la mémoire et des capacités réseau).
- Ne l’enregistrez pas sur la clé USB.
Nettoyage sécurisé
Après avoir généré et enregistré votre phrase mnémonique, éliminez toutes les traces sur l’appareil air-gapped :
1. Effacer le presse-papiers et l’écran
- Fermez toutes les applications.
- Effacez le presse-papiers (Ctrl+C sur un texte sans importance).
2. Extinction
- Éteignez l’ordinateur. Le contenu de la RAM se dégrade en quelques secondes à quelques minutes après perte d’alimentation.
- Pour plus d’assurance, laissez la machine éteinte au moins 15 minutes (la DRAM conserve les données moins longtemps à température ambiante, plus longtemps en environnement froid).
3. Supports de stockage
- Si vous utilisez un live USB Tails, rien n’a été écrit sur disque. La clé USB peut être réutilisée.
- Si vous utilisez une carte SD Raspberry Pi avec un OS non amnésique, effacez la carte SD de façon sécurisée (
dd if=/dev/urandom of=/dev/sdX bs=1M) ou détruisez-la physiquement. - Si vous avez accidentellement enregistré quelque chose sur le disque interne de la machine air-gapped, effacez-le de manière sécurisée.
4. Clé USB
- La clé USB utilisée pour transférer l’outil de génération ne doit contenir aucun matériel de clé généré si vous avez suivi correctement les instructions.
- Vérifiez que la clé USB contient uniquement les fichiers d’origine de l’outil, rien d’autre.
- Pour une sécurité maximale, effacez la clé USB après usage.
Avancé : signer des transactions en air-gapped
Un ordinateur air-gapped est utile non seulement pour la génération de clés, mais aussi pour la signature continue de transactions :
Le workflow
- Machine en ligne (watch-only) : Construire une transaction non signée.
- Transfert : Déplacer la transaction non signée vers la machine air-gapped via USB ou QR code.
- Machine air-gapped : Signer la transaction avec la clé privée.
- Transfert : Déplacer la transaction signée vers la machine en ligne.
- Machine en ligne : Diffuser la transaction signée sur le réseau.
Transfert par QR code (préféré)
L’utilisation de QR codes élimine complètement les clés USB, fermant un vecteur potentiel de malware (les périphériques USB peuvent transporter des charges auto-exécutables) :
- Affichez la transaction non signée en QR code sur la machine en ligne.
- Scannez le QR code avec une caméra connectée à la machine air-gapped.
- Signez la transaction.
- Affichez la transaction signée en QR code sur la machine air-gapped.
- Scannez avec la machine en ligne.
Les wallets prenant en charge la signature air-gapped via QR incluent Coldcard, Keystone et Sparrow Wallet (avec configuration webcam).
PSBTs (Partially Signed Bitcoin Transactions)
Le format PSBT de Bitcoin (BIP-174) a été conçu spécifiquement pour les workflows air-gapped. Un PSBT contient toutes les informations nécessaires pour signer une transaction sans que l’appareil signataire ait besoin de données blockchain.
Configuration multi-signature air-gapped
Pour la sécurité maximale, combinez la génération de clés air-gapped avec la multi-signature :
- Générez trois phrases mnémoniques distinctes sur trois sessions air-gapped distinctes (idéalement sur des appareils différents).
- Configurez un wallet multi-signature 2-sur-3.
- Stockez chaque phrase mnémonique dans un emplacement physique différent.
- Les transactions exigent la signature sur deux des trois appareils air-gapped.
Cela offre une protection contre :
- Un appareil compromis (une seule clé exposée).
- Une phrase mnémonique perdue (les deux clés restantes peuvent toujours signer).
- Un site de stockage compromis.
Erreurs courantes
Erreur 1 : utiliser un ordinateur « propre » mais déjà connecté
Effacer et réinstaller l’OS sur un ordinateur précédemment connecté à Internet n’est pas suffisant. Les malwares au niveau firmware (rootkits UEFI) peuvent survivre à une réinstallation OS. Un appareil dédié, jamais connecté, élimine ce risque.
Erreur 2 : connecter la machine air-gapped « juste un instant »
Toute connexion réseau, même brève, brise l’air-gap. Un malware peut exfiltrer une clé privée en quelques millisecondes. Une fois connecté, l’appareil ne peut plus être considéré comme air-gapped.
Erreur 3 : utiliser une imprimante
Les imprimantes possèdent souvent leur propre stockage (spool des tâches) et de nombreuses imprimantes modernes ont Wi-Fi ou Bluetooth. Imprimer une phrase mnémonique peut la stocker dans la mémoire de l’imprimante et potentiellement la transmettre. Écrivez à la main à la place.
Erreur 4 : transférer la phrase mnémonique numériquement
La phrase mnémonique ne devrait jamais exister sous forme numérique en dehors du bref instant où elle est affichée sur l’écran air-gapped. Ne la copiez pas sur une clé USB, ne l’enregistrez pas dans un fichier et ne l’encodez pas en QR code pour transfert. Écrivez-la directement sur papier ou poinçonnez-la sur métal.
Erreur 5 : ne pas vérifier l’outil de génération
L’outil transféré vers la machine air-gapped doit être vérifié avant usage. Vérifiez les hashes de fichiers, signatures PGP, ou au minimum comparez les tailles de fichiers. Un outil compromis pourrait générer des clés déterministes déjà connues de l’attaquant.
FAQ
Pourquoi ne pas simplement utiliser un hardware wallet ?
Les hardware wallets sont excellents et suffisants pour la plupart des utilisateurs. La génération air-gapped apporte une marge de sécurité supplémentaire pour le stockage de très grande valeur car elle élimine la confiance dans le générateur de nombres aléatoires et le firmware du hardware wallet. L’approche air-gapped permet aussi une vérification avec plusieurs outils indépendants, alors qu’un hardware wallet est un point unique de confiance.
Combien de temps prend tout le processus air-gapped ?
Pour une première configuration, comptez 2 à 4 heures, y compris préparation OS, vérification, génération des clés et nettoyage. Les générations suivantes sur un appareil déjà préparé prennent 30 à 60 minutes.
Puis-je utiliser un smartphone comme appareil air-gapped ?
Les smartphones sont difficiles à rendre totalement air-gapped car ils ont plusieurs radios (cellulaire, Wi-Fi, Bluetooth, NFC) qui ne peuvent pas toujours être désactivées physiquement. Un ordinateur portable avec le matériel réseau retiré est plus fiable. Certains appareils conçus à cet effet (comme Keystone wallet) sont prévus comme dispositifs de signature air-gapped.
La génération air-gapped est-elle nécessaire pour chaque wallet ?
Non. Pour les wallets de dépense quotidienne avec de petites sommes, un hardware wallet réputé ou même un software wallet bien sécurisé suffit. La génération air-gapped est recommandée pour le stockage à froid de long terme d’une valeur significative.
Comment mettre à jour le logiciel sur une machine air-gapped ?
Vous ne le faites pas. La machine air-gapped doit exécuter le même logiciel indéfiniment. Si vous avez besoin d’une version plus récente d’un outil de génération, téléchargez-la et vérifiez-la sur une machine en ligne, transférez-la via USB, puis vérifiez le checksum sur la machine air-gapped avant usage.
Et si le générateur de nombres aléatoires de la machine air-gapped est défaillant ?
C’est précisément pourquoi l’entropie basée sur les dés existe comme solution de repli. Si vous ne faites confiance à aucun RNG matériel ou logiciel, générez l’entropie manuellement avec des dés et injectez-la dans l’outil BIP-39. La sécurité de la phrase mnémonique résultante dépend uniquement de la qualité de vos lancers de dés, pas d’un composant électronique.
Un malware peut-il franchir l’air-gap ?
En théorie, des attaquants étatiques sophistiqués ont démontré des techniques de franchissement d’air-gap via émissions électromagnétiques, signaux acoustiques ou motifs de clignotement LED. En pratique, ces attaques exigent une proximité physique, un équipement spécialisé, et dépassent largement les capacités des voleurs crypto ordinaires. Pour l’immense majorité des utilisateurs, un air-gap correctement maintenu est pratiquement impénétrable.