Générer une adresse .onion vanity avec mkp224o : tutoriel complet
Les adresses .onion v3 font 56 caractères de base32. Par défaut, Tor les génère aléatoirement :
dreadytofatroptsdj6io7l3xptbet6onoyno2yv7jicoxknyazubrad.onion. Impossible à mémoriser, facile
à usurper par phishing — un attaquant peut générer une adresse qui ressemble superficiellement à la
vôtre. La parade : générer une adresse vanity, c'est-à-dire forcer un préfixe choisi
(par exemple oniondir) en brute-forçant des milliers de clés Ed25519 jusqu'à tomber sur
une qui produit une empreinte commençant par le préfixe souhaité. L'outil standard pour cette tâche
est mkp224o, développé par « cathugger ». Ce tutoriel couvre l'installation, la
génération, et l'intégration dans la configuration Tor.
Pourquoi une adresse vanity
Trois raisons principales justifient l'effort :
- Mémorabilité —
oniondxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onionest reconnaissable au premier coup d'œil, contrairement à une adresse totalement aléatoire. Vos utilisateurs peuvent vérifier visuellement le préfixe, même si les 50 caractères suivants restent impossibles à mémoriser entièrement. - Anti-phishing — un attaquant qui veut usurper votre adresse devrait brute-forcer le même préfixe, ce qui coûte exactement le même temps que votre propre génération. Pour un préfixe de 6-7 caractères, ça devient prohibitif pour les phishers opportunistes.
- Signalement éditorial — afficher un préfixe signifie que vous avez mis de la ressource dans le projet. C'est un signal de sérieux apprécié par les utilisateurs méfiants du dark web.
Difficulté et temps de calcul
Les adresses .onion v3 utilisent 32 caractères possibles (base32 : a-z + 2-7). La difficulté de trouver un préfixe de longueur n est donc de 32^n, et il faut en moyenne essayer 32^n / 2 clés avant de tomber sur une adresse commençant par ce préfixe.
| Préfixe | Difficulté | Temps sur CPU 8 cœurs 2024 |
|---|---|---|
| 3 char | 32 768 | Instantané |
| 4 char | 1M | Quelques secondes |
| 5 char | 33M | 1 à 5 minutes |
| 6 char | 1 milliard | 30 min à 3 h |
| 7 char | 34 milliards | 1 à 5 jours |
| 8 char | 1 trillion | 1 à 6 mois |
Les GPU (via le fork gpg-onion-finder ou des adaptations CUDA) divisent ces temps par 20 à
100 selon la carte, rendant 8-9 caractères accessibles à moins de 1 semaine sur RTX 4090.
Installation de mkp224o
Dépendances
Sur Debian / Ubuntu :
sudo apt install gcc libsodium-dev make autoconf Sur macOS (via Homebrew) :
brew install libsodium autoconf automake Sur Fedora / RHEL :
sudo dnf install gcc libsodium-devel make autoconf automake Compilation
git clone https://github.com/cathugger/mkp224o.git
cd mkp224o
./autogen.sh
./configure
make
Le binaire ./mkp224o est créé à la racine. Les optimisations AVX2 sont activées automatiquement
si votre CPU les supporte (vérifiez avec cat /proc/cpuinfo | grep avx2 sur Linux).
Générer l'adresse
Commande de base pour trouver une adresse commençant par « onion » (5 caractères) :
./mkp224o -n 1 -d output onion -n 1: s'arrête après avoir trouvé 1 adresse valide-d output: dossier de sortieonion: le préfixe cherché (minuscules uniquement, base32 donc pas de 0, 1, 8, 9)
Pour chercher plusieurs motifs simultanément, listez-les séparés par espaces :
./mkp224o -n 1 -d output oniondir annuaire
Pour utiliser tous les cœurs CPU (défaut), ajoutez -t N où N = nombre de threads :
./mkp224o -n 1 -d output -t 16 oniondir
Pendant la génération, mkp224o affiche périodiquement sa vitesse (keys/s) et ses progrès.
À 8-10 millions de clés/seconde sur un CPU moderne, un préfixe de 6 caractères tombe en moyenne en 1-2
heures.
Vérifier les fichiers produits
Quand l'outil trouve une adresse, il crée un sous-dossier dans output/ nommé d'après
l'adresse complète. Exemple :
output/oniondabc123xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion/
├── hostname (l'adresse .onion complète)
├── hs_ed25519_public_key (clé publique)
└── hs_ed25519_secret_key (clé privée — à protéger)
Vérifiez le contenu de hostname — c'est l'adresse exacte que Tor publiera.
Installation sur le serveur Tor
Transférez le dossier vers votre serveur via SCP :
scp -r output/oniondabc123.../ root@votre-serveur:/var/lib/tor/mon-service/ Sur le serveur, ajustez les permissions (critique) :
chown -R debian-tor:debian-tor /var/lib/tor/mon-service/
chmod 700 /var/lib/tor/mon-service/
chmod 600 /var/lib/tor/mon-service/hs_ed25519_secret_key
chmod 600 /var/lib/tor/mon-service/hs_ed25519_public_key
chmod 600 /var/lib/tor/mon-service/hostname
Le propriétaire est debian-tor sur Debian/Ubuntu, _tor sur macOS (Homebrew),
tor sur Fedora/RHEL. Vérifiez avec ps aux | grep tor le nom d'utilisateur
exact.
Configuration torrc
Ajoutez à /etc/tor/torrc :
HiddenServiceDir /var/lib/tor/mon-service/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:8080 127.0.0.1:8080 est le port local où votre serveur web (nginx, Apache, Caddy) écoute.
Adaptez selon votre configuration.
Rechargez Tor :
systemctl restart tor
journalctl -u tor -f # suivre les logs Si la configuration est bonne, Tor publie le descripteur du hidden service dans le DHT en 2-5 minutes. Ouvrez Tor Browser, tapez votre adresse .onion : le service doit répondre.
Sauvegarde de la clé privée
Ne pas sauvegarder la clé privée est la pire erreur possible. Si votre serveur crashe, est saisi, ou est réinstallé, vous perdez définitivement l'adresse .onion sauf si vous avez la clé. Personne ne peut la régénérer — c'est un nombre aléatoire de 32 octets.
Méthode recommandée
- Chiffrer le dossier
mon-service/avec GnuPG :tar czf - mon-service/ | gpg -c > backup.tar.gz.gpg - Copier
backup.tar.gz.gpgsur au moins deux supports physiques distincts (clé USB chiffrée + stockage cloud chiffré, par exemple) - Stocker la passphrase GnuPG dans un password manager (Bitwarden, KeePassXC)
- Tester la restauration sur une machine de test avant d'avoir besoin de la sauvegarde en urgence
Bonnes pratiques
- Ne jamais committer la clé privée dans git ou tout système de versioning partagé
- Générer sur une machine isolée si le projet est très sensible (Qubes OS, Tails, machine déconnectée pendant la génération)
- Utiliser un préfixe qui inclut votre nom de marque ou domaine pour renforcer l'anti-phishing
- Publier l'adresse via PGP-signed message sur vos canaux officiels pour éviter que des variantes frauduleuses circulent
- Surveiller les usurpations — des services comme OnionSearch ou des scanners custom peuvent détecter les imitations de votre préfixe