WireGuard vanity keygen - Comment personnaliser vos clés VPN ? | Open source | Le site de Korben
Image illustrant l'article : WireGuard vanity keygen - Comment personnaliser vos clés VPN ?

WireGuard vanity keygen - Comment personnaliser vos clés VPN ?

par Korben ✨ -

Vous maitrisez à fond WireGuard, mais quand vous lancez la commande “wg” sur votre serveur, vous vous retrouvez face à un mur de clés qui ressemblent à ce que produirait votre chat marchant sur votre clavier après avoir bu trois Red Bull.

C’est la galère totale ! Alors aujourd’hui, on va mettre un peu d’ordre dans ce bordel avec WireGuard vanity keygen, un petit outil qui va vous permettre de générer des clés WireGuard où VOUS décidez ce qui apparaît dedans. Fini les “uHJ9aKp2F+…” indéchiffrables, bonjour les “SERVeur123+…” ou “CLIent456/…” bien identifiables en un seul coup d’œil !

L’installation est ultra simple, vous n’avez même pas besoin d’être un gourou de Linux :

# Par téléchargement du binaire
wget https://github.com/axllent/wireguard-vanity-keygen/releases/latest/download/wireguard-vanity-keygen-linux-amd64 -O wireguard-vanity-keygen
chmod +x wireguard-vanity-keygen
sudo mv wireguard-vanity-keygen /usr/local/bin/

# Ou via Go si vous êtes ce genre de personne
go install github.com/axllent/wireguard-vanity-keygen@latest

Une fois installé, vous pouvez commencer à générer des clés personnalisées. Voici quelques exemples qui vont vous faire gagner du temps :

# Générer une clé commençant par "srv"
wireguard-vanity-keygen srv

# Générer 3 clés commençant par "cli" (insensible à la casse)
wireguard-vanity-keygen -l 3 cli

# Chercher simultanément des clés pour "srv" et "cli"
wireguard-vanity-keygen srv cli

# Utiliser une expression régulière pour trouver une clé commençant par "srv" suivi de / ou +
wireguard-vanity-keygen "^srv[/+]"

Et voilà ce que ça donne en sortie :

Calculating speed: 49,950 calculations per second using 4 CPU cores
Case-insensitive search, exiting after 1 results
Probability for "srv": 1 in 2,085,136 (approx 41 seconds per match)

Press Ctrl-c to cancel

private OFVUjUoTNQp94fNPB9GCLzxiJPTbN03rcDPrVd12uFc= 
public sRVMXL/3ZzAd2TnVlr1BNs/+eOnKzSHpGUnjspk3kc=

Plutôt cool non ?

En gros, l’outil vous génère une clé privée aléatoire, dérive la clé publique correspondante, et vérifie si elle commence par le préfixe que vous avez défini. Si ce n’est pas le cas, il recommence jusqu’à trouver la bonne. C’est comme jouer à la loterie, mais avec un ordinateur qui achète des millions de tickets à votre place jusqu’à ce qu’il trouve le bon !

Voici ce que ça peut générer :

peer: SRVmKF+tOFRKaYzSHmKbNK8Jx2E+QYSpuRe/1A=
endpoint: 192.168.1.2:51820
...

peer: CLIj7H2F+GKaQsQpP+JKmzBhNF9sHYXp5RcNMx2Z+E/1I=
endpoint: 192.168.1.3:51820
...

Vous voyez immédiatement que le premier est un serveur et le second un client. Magie, magie !! Attention toutefois, il y a un petit hic. Le temps nécessaire pour générer une clé avec un préfixe spécifique augmente exponentiellement avec chaque caractère supplémentaire. C’est de la crypto, baby, pas de la magie noire ! Et croyez-moi, votre processeur va le sentir passer si vous êtes trop gourmand.

Sur un système moyen avec 230 000 calculs par seconde (19 cœurs), voici ce à quoi vous pouvez vous attendre :

LongueurInsensible à la casseSensible à la casse
3 chars0 secondes1 seconde
4 chars9 secondes1 minute
5 chars5 minutes1h15
6 chars4 heures3,5 jours
7 chars6 jours7 mois
8 chars7 mois38 ans
9 chars22 ans175 ans

À moins d’être très patient ou de posséder un supercalculateur digne de la NSA, je vous conseille de vous limiter à 4-5 caractères pour rester dans des temps raisonnables. Pour un usage pratique, 3-4 caractères suffisent généralement amplement. À moins que vous ne prévoyiez de laisser tourner votre machine pendant vos vacances… auquel cas, assurez-vous d’avoir une bonne climatisation !

Pourquoi cette différence entre “insensible à la casse” et “sensible à la casse” ? C’est simple. En mode insensible (par défaut), “srv” peut correspondre à “SRV”, “Srv”, “sRv”, etc., ce qui multiplie les chances de trouver une correspondance.

Le petit truc en plus, c’est que vous pouvez utiliser des expressions régulières pour des recherches plus flexibles. Par exemple :

# Trouver "word" n'importe où dans la clé
wireguard-vanity-keygen ".*word.*" 

# Trouver "srv" ou "cli" au début avec '/' ou '+' comme délimiteur
wireguard-vanity-keygen "^(srv|cli)[/+]"

C’est parfait pour les esprits créatifs qui veulent pousser la personnalisation un cran plus loin. Vous pourriez même créer des clés qui forment des mots ou des phrases reconnaissables au milieu, même si ça va prendre un temps fou à générer, avouons-le.

Passons aux choses sérieuses maintenant… Comment utiliser cet outil pour que ce soit vraiment efficace dans votre quotidien ?

Et bien voici quelques idées :

1. Organisation par fonction : - Préfixez vos serveurs avec “SRV” et vos clients avec “CLI” - Utilisez des identifiants de département : “DEV”, “FIN”, “MKT” - Classez par environnement : “PROD”, “TEST”, “DEV”

2. Déploiements multi-sites : - Identifiez les emplacements géographiques : “NYC”, “PAR”, “TOK” - Encodez le type de réseau : “4G”, “FIB”, “DSL”

3. Infrastructures complexes : - Combinez identifiants avec délimiteurs : “NYC+PROD” - Utilisez des numéros séquentiels : “SRV1”, “SRV2”

Pour les plus motivés, vous pouvez même intégrer cet outil dans vos scripts de déploiement. Voici un exemple :

#!/bin/bash
# Script pour générer des clés WireGuard pour différents bureaux

LOCATIONS=("PAR" "NYC" "LON" "BER")

for loc in "${LOCATIONS[@]}"; do
echo "Génération de clé pour $loc..."
keys=$(wireguard-vanity-keygen "$loc")
private_key=$(echo "$keys" | grep "private" | awk '{print $2}')
public_key=$(echo "$keys" | grep "public" | awk '{print $2}')

echo "Location: $loc" >> keys.txt
echo "Private: $private_key" >> keys.txt
echo "Public: $public_key" >> keys.txt
echo "-----------------------" >> keys.txt
done

echo "Clés générées dans keys.txt"

Les avantages en situation réelle sont sympa :

  • Réduction du temps de débogage lors d’incidents réseau (vous savez immédiatement quelle connexion poser problème)
  • Simplification de l’audit des connexions actives (en un coup d’œil c’est fait)
  • Documentation auto-explicative des configurations WireGuard (fini les commentaires à rallonge)
  • Possibilité d’identification visuelle rapide des connexions non autorisées (une clé qui ne commence pas par votre préfixe habituel ? Alerte rouge !)

WireGuard vanity keygen est donc l’un de ces petits outils qui font la différence au quotidien en rendant votre infrastructure WireGuard plus gérable et plus intuitive. Certes, générer une clé avec un préfixe de 6 caractères peut prendre quelques heures, mais c’est un investissement ponctuel qui paiera tous les jours !

A découvrir ici !