
Generatore di hash Onion basato su GPU
Scallion era un progetto hobbistico per imparare OpenCL e RSA. Attualmente non manteniamo più scallion. È andato in degrado in due modi importanti:
Con sufficiente attenzione e sforzo, sarebbe possibile superare entrambe le sfide sopra indicate. Potremmo implementare il supporto per l'algoritmo di generazione delle chiavi ECDSA sulla GPU per ottenere il supporto Tor v3. Potremmo aggiornare OpenSSL e sostituire le funzioni matematiche con un'altra libreria, o creare un nostro wrapper di codice gestito per la libreria OpenSSL. Tuttavia, sarebbe probabilmente meglio aggiungere il supporto per gli indirizzi onion v3 a un progetto mantenuto come vanitygen-plus.
Scallion ti permette di creare chiavi GPG vanity e indirizzi .onion (per i servizi nascosti di Tor) usando OpenCL.
Scallion funziona su Mono (testato su Arch Linux) e .NET 3.5+ (testato su Windows 7 e Server 2008).
Scallion è attualmente in fase beta e in sviluppo attivo. Tuttavia, riteniamo che sia pronto per l'uso. I miglioramenti sono previsti principalmente nelle prestazioni, nell'interfaccia utente e nella facilità di installazione, non nell'algoritmo complessivo utilizzato per generare le chiavi.
Scallion è disponibile sotto licenza MIT. Se usi codice da questo progetto nei tuoi progetti, apprezziamo che ce lo comunichi a [email protected].
Ecco alcune domande frequenti e le relative risposte:
Perché generare chiavi GPG?
Scallion è stato utilizzato per trovare collisioni per ogni ID chiave a 32 bit nel set forte del Web of Trust, dimostrando quanto insicuri siano gli ID chiave a 32 bit. C'è/era un talk al DEFCON (video) e ulteriori informazioni si trovano su https://evil32.com/.
Quali sono i caratteri validi?
Gli indirizzi .onion di Tor usano Base32, composto da tutte le lettere e dalle cifre da 2 a 7 incluse. Non fanno distinzione tra maiuscole e minuscole.
Le impronte GPG usano esadecimale, composto dalle cifre 0-9 e dalle lettere A-F.
Si possono usare ASIC Bitcoin (es. Jalapeno, KnC) per accelerare questo processo?
Purtroppo no. Mentre il processo usato da Scallion è concettualmente simile (incrementare un nonce e controllare l'hash), i dettagli sono diversi (SHA-1 vs doppio SHA-256 per Bitcoin). Inoltre, gli ASIC Bitcoin sono così veloci perché sono estremamente specializzati per le applicazioni di mining Bitcoin. Ad esempio, ecco il datasheet per il CoinCraft A-1, un ASIC che non è mai uscito, ma probabilmente è indicativo dell'approccio generale. Il microcontrollore invia lavoro sotto forma degli ultimi 128 bit di un blocco Bitcoin, lo stato intermedio dell'hash dei bit precedenti, una difficoltà target e il nonce massimo da provare. L'ASIC sceglie la posizione in cui inserire il nonce e sceglie quali blocchi soddisfano l'hash. Scallion deve inserire il nonce in una posizione diversa e controlla una corrispondenza di pattern piuttosto che semplicemente "inferiore a XXXX".
Come si possono usare più dispositivi?
Esegui più istanze di Scallion. 😄 Le ricerche di Scallion sono probabilistiche, quindi non ripeterai lavoro con il secondo dispositivo. Il supporto multi-dispositivo reale non sarebbe troppo difficile, ma non aggiungerebbe molto. Ho eseguito con successo diverse istanze di scallion in tmux o screen. Dovrai solo interrompere manualmente tutti i lavori quando uno trova un pattern (o scrivere uno script shell per monitorare il file di output e ucciderli tutti quando vede risultati).
Vuoi solo l'ultima versione binaria? Scaricala qui.
Prerequisiti
Ottieni l'ultimo mono per la tua distribuzione Linux:
Installa le dipendenze comuni:
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
Compilazione AMD/OpenSource
sudo apt-get install ocl-icd-opencl-dev
Compilazione Nvidia
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
Infine
msbuild scallion.sln
Avere il runtime nvidia-docker container
Compila il container:
docker build -t scallion -f Dockerfile.nvidia .
Esegui:
docker run --runtime=nvidia -ti --rm scallion -l
Riavviare Scallion durante una ricerca non farà perdere "progressi". È una ricerca probabilistica e Scallion non fa "progressi"
Elenca i dispositivi
$ mono scallion/bin/Debug/scallion.exe -l
Genera un hash