
Générateur de hash Onion basé sur GPU
Scallion était un projet de loisir pour apprendre OpenCL et RSA. Nous ne maintenons actuellement pas Scallion. Il a vieilli de deux manières importantes :
Avec suffisamment d'attention et d'effort, il serait possible de surmonter les deux défis mentionnés ci-dessus. Nous pourrions implémenter le support de l'algorithme de génération de clés ECDSA sur GPU pour obtenir le support Tor v3. Nous pourrions mettre à jour OpenSSL et remplacer les fonctions mathématiques par une autre bibliothèque, ou créer notre propre wrapper de code managé pour la bibliothèque OpenSSL. Cependant, il serait probablement préférable d'ajouter le support des adresses onion v3 à un projet maintenu comme vanitygen-plus.
Scallion vous permet de créer des clés GPG de vanity et des adresses .onion (pour les services cachés de Tor) en utilisant OpenCL.
Scallion fonctionne sous Mono (testé sur Arch Linux) et .NET 3.5+ (testé sur Windows 7 et Server 2008).
Scallion est actuellement en version bêta et en développement actif. Néanmoins, nous estimons qu'il est prêt à être utilisé. Les améliorations sont attendues principalement au niveau des performances, de l'interface utilisateur et de la facilité d'installation, pas dans l'algorithme global utilisé pour générer les clés.
Scallion est disponible sous licence MIT. Si vous utilisez du code de ce projet dans vos propres projets, nous apprécierions d'en être informés à [email protected].
Voici quelques questions fréquemment posées et leurs réponses :
Pourquoi générer des clés GPG ?
Scallion a été utilisé pour trouver des collisions pour chaque identifiant de clé 32 bits dans l'ensemble fort du Web of Trust, démontrant à quel point les identifiants de clé 32 bits sont peu sécurisés. Il y a/avait une conférence au DEFCON (vidéo) et des informations supplémentaires peuvent être trouvées sur https://evil32.com/.
Quels sont les caractères valides ?
Les adresses .onion Tor utilisent Base32, composé de toutes les lettres et des chiffres 2 à 7 inclus. Elles sont insensibles à la casse.
Les empreintes GPG utilisent l'hexadécimal, composé des chiffres 0-9 et des lettres A-F.
Peut-on utiliser des ASIC Bitcoin (par ex. Jalapeno, KnC) pour accélérer ce processus ?
Malheureusement, non. Bien que le processus utilisé par Scallion soit conceptuellement similaire (incrémenter un nonce et vérifier le hachage), les détails sont différents (SHA-1 vs double SHA-256 pour Bitcoin). De plus, les ASIC Bitcoin sont aussi rapides car ils sont extrêmement adaptés aux applications de minage Bitcoin. Par exemple, voici la fiche technique du CoinCraft A-1, un ASIC qui n'est jamais sorti, mais qui est probablement représentatif de l'approche générale. Le microcontrôleur envoie le travail sous la forme des 128 derniers bits d'un bloc Bitcoin, l'état intermédiaire du hachage des bits précédents, une difficulté cible et le nonce maximum à essayer. L'ASIC choisit l'emplacement pour insérer le nonce, et il choisit quels blocs satisfont au hachage. Scallion doit insérer le nonce à un emplacement différent, et il vérifie une correspondance de motif plutôt qu'un simple « inférieur à XXXX ».
Comment utiliser plusieurs appareils ?
Exécutez plusieurs instances de Scallion. 😄 Les recherches de Scallion sont probabilistes, donc vous ne répéterez pas le travail avec le deuxième appareil. Un vrai support multi-périphériques ne serait pas trop difficile, mais il n'apporterait pas grand-chose non plus. J'ai exécuté plusieurs instances de Scallion dans tmux ou screen avec un grand succès. Vous devrez simplement arrêter manuellement toutes les tâches lorsqu'une trouve un motif (ou écrire un script shell pour surveiller le fichier de sortie et les tuer toutes lorsqu'il voit des résultats).
Vous voulez simplement la dernière version binaire ? Récupérez-la ici.
Prérequis
Obtenez le dernier mono pour votre distribution Linux :
Installez les dépendances communes :
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
Compilation AMD/OpenSource
sudo apt-get install ocl-icd-opencl-dev
Compilation Nvidia
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
Enfin
msbuild scallion.sln
Ayez le runtime conteneur nvidia-docker
Construisez le conteneur :
docker build -t scallion -f Dockerfile.nvidia .
Exécutez :
docker run --runtime=nvidia -ti --rm scallion -l
Redémarrer Scallion pendant une recherche ne perdra pas la « progression ». C'est une recherche probabiliste et Scallion ne fait pas de « progression »
Lister les périphériques
$ mono scallion/bin/Debug/scallion.exe -l
Générer un hachage