
GPU-basierter Onion-Hash-Generator
Scallion war ein Hobbyprojekt, um OpenCL und RSA zu lernen. Wir warten Scallion derzeit nicht. Es hat auf zwei wichtige Arten gelitten:
Mit genügend Aufmerksamkeit und Mühe wäre es möglich, beide oben genannten Herausforderungen zu bewältigen. Wir könnten die GPU-ECDSA-Schlüsselgenerierung implementieren, um Tor v3 zu unterstützen. Wir könnten OpenSSL aktualisieren und die Mathefunktionen durch eine andere Bibliothek ersetzen oder einen eigenen verwalteten Code-Wrapper für die OpenSSL-Bibliothek erstellen. Es wäre jedoch wahrscheinlich besser, die Unterstützung für v3-Onion-Adressen zu einem gepflegten Projekt wie vanitygen-plus hinzuzufügen.
Mit Scallion können Sie Vanity-GPG-Schlüssel und .onion-Adressen (für Tor's Hidden Services) mit OpenCL erstellen.
Scallion läuft unter Mono (getestet in Arch Linux) und .NET 3.5+ (getestet auf Windows 7 und Server 2008).
Scallion befindet sich derzeit in der Beta-Phase und wird aktiv entwickelt. Dennoch sind wir der Meinung, dass es einsatzbereit ist. Verbesserungen werden hauptsächlich in Bezug auf Leistung, Benutzeroberfläche und Installationsfreundlichkeit erwartet, nicht im Gesamtalgorithmus zur Schlüsselgenerierung.
Scallion ist unter der MIT-Lizenz verfügbar. Wenn Sie Code aus diesem Projekt in Ihren eigenen Projekten verwenden, würden wir uns über eine Nachricht an [email protected] freuen.
Hier sind einige häufig gestellte Fragen und ihre Antworten:
Warum GPG-Schlüssel generieren?
Scallion wurde verwendet, um Kollisionen für jede 32-Bit-Schlüssel-ID im starken Set des Web of Trust zu finden, was zeigt, wie unsicher 32-Bit-Schlüssel-IDs sind. Es gab/gibt einen Vortrag auf DEFCON (Video) und weitere Informationen finden Sie unter https://evil32.com/.
Welche Zeichen sind gültig?
Tor .onion-Adressen verwenden Base32, bestehend aus allen Buchstaben und den Ziffern 2 bis einschließlich 7. Sie sind Groß-/Kleinschreibung-unabhängig.
GPG-Fingerabdrücke verwenden Hexadezimal, bestehend aus den Ziffern 0-9 und den Buchstaben A-F.
Kann man Bitcoin-ASICs (z.B. Jalapeno, KnC) verwenden, um diesen Prozess zu beschleunigen?
Leider nein. Obwohl der von Scallion verwendete Prozess konzeptionell ähnlich ist (einen Nonce erhöhen und den Hash prüfen), unterscheiden sich die Details (SHA-1 vs. doppeltes SHA-256 für Bitcoin). Darüber hinaus sind Bitcoin-ASICs so schnell, weil sie äußerst auf Bitcoin-Mining-Anwendungen zugeschnitten sind. Hier ist zum Beispiel das Datenblatt für den CoinCraft A-1, ein ASIC, der nie auf den Markt kam, aber wahrscheinlich repräsentativ für den allgemeinen Ansatz ist. Der Mikrocontroller sendet Arbeit in Form der letzten 128 Bits eines Bitcoin-Blocks, des Hash-Midstate der vorherigen Bits, einer Zielschwierigkeit und des maximalen Nonce zum Ausprobieren. Der ASIC wählt die Position zum Einfügen des Nonce und welche Blöcke den Hash erfüllen. Scallion muss den Nonce an einer anderen Position einfügen und sucht nach einem Mustervergleich, nicht nur nach 'niedriger als XXXX'.
Wie kann man mehrere Geräte verwenden?
Führen Sie mehrere Scallion-Instanzen aus. 😄 Scallion-Suchen sind probabilistisch, sodass Sie mit dem zweiten Gerät keine Arbeit wiederholen. Echte Multi-Device-Unterstützung wäre nicht allzu schwierig, würde aber auch nicht viel bringen. Ich habe mehrere Scallion-Instanzen in tmux oder screen mit großem Erfolg ausgeführt. Sie müssen lediglich alle Jobs manuell abbrechen, wenn eines ein Muster findet (oder ein Shell-Skript schreiben, das die Ausgabedatei überwacht und alle beendet, wenn Ergebnisse angezeigt werden).
Möchten Sie nur die neueste Binärversion? Holen Sie sie sich hier.
Voraussetzungen
Holen Sie sich das aktuellste Mono für Ihre Linux-Distribution:
Allgemeine Abhängigkeiten installieren:
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
AMD/OpenSource-Build
sudo apt-get install ocl-icd-opencl-dev
Nvidia-Build
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
Schließlich
msbuild scallion.sln
Besitzen Sie die nvidia-docker-Container-Laufzeit
Bauen Sie den Container:
docker build -t scallion -f Dockerfile.nvidia .
Ausführen:
docker run --runtime=nvidia -ti --rm scallion -l
Ein Neustart von Scallion während einer Suche führt nicht zu einem Verlust des 'Fortschritts'. Es handelt sich um eine probabilistische Suche und Scallion macht keinen 'Fortschritt'
Geräte auflisten
$ mono scallion/bin/Debug/scallion.exe -l
Einen Hash generieren