
Generador de hash de cebolla basado en GPU
Scallion fue un proyecto hobby para aprender OpenCL y RSA. Actualmente no mantenemos scallion. Se ha deteriorado de dos maneras importantes:
Con suficiente atención y esfuerzo, sería posible superar ambos desafíos mencionados. Podríamos implementar soporte para el algoritmo de generación de claves ECDSA en GPU para obtener soporte Tor v3. Podríamos actualizar OpenSSL y reemplazar las funciones matemáticas con otra biblioteca, o hacer nuestro propio envoltorio de código administrado para la biblioteca OpenSSL. Sin embargo, probablemente sería mejor agregar soporte para direcciones onion v3 a un proyecto mantenido como vanitygen-plus.
Scallion te permite crear claves GPG personalizadas y direcciones .onion (para los servicios ocultos de Tor) usando OpenCL.
Scallion se ejecuta en Mono (probado en Arch Linux) y .NET 3.5+ (probado en Windows 7 y Server 2008).
Scallion se encuentra actualmente en etapa beta y en desarrollo activo. No obstante, creemos que está listo para su uso. Se esperan mejoras principalmente en rendimiento, interfaz de usuario y facilidad de instalación, no en el algoritmo general utilizado para generar claves.
Scallion está disponible bajo la licencia MIT. Si usas código de este proyecto en tus propios proyectos, agradeceríamos que nos lo hicieras saber en [email protected].
Aquí hay algunas preguntas frecuentes y sus respuestas:
¿Por qué generar claves GPG?
Scallion se usó para encontrar colisiones para cada ID de clave de 32 bits en el conjunto fuerte de Web of Trust, demostrando lo inseguros que son los IDs de clave de 32 bits. Hubo/hay una charla en DEFCON (video) y se puede encontrar información adicional en https://evil32.com/.
¿Cuáles son los caracteres válidos?
Las direcciones .onion de Tor usan Base32, que consiste en todas las letras y los dígitos del 2 al 7, inclusive. No distinguen entre mayúsculas y minúsculas.
Las huellas digitales GPG usan hexadecimal, que consiste en los dígitos 0-9 y las letras A-F.
¿Se pueden usar ASICs de Bitcoin (ej. Jalapeno, KnC) para acelerar este proceso?
Lamentablemente, no. Si bien el proceso que usa Scallion es conceptualmente similar (incrementar un nonce y verificar el hash), los detalles son diferentes (SHA-1 frente a doble SHA-256 de Bitcoin). Además, los ASICs de Bitcoin son tan rápidos porque están extremadamente adaptados a las aplicaciones de minería de Bitcoin. Por ejemplo, aquí está la hoja de datos del CoinCraft A-1, un ASIC que nunca salió, pero es probablemente indicativo del enfoque general. El microcontrolador envía trabajo en forma de los últimos 128 bits de un bloque de Bitcoin, el estado intermedio del hash de los bits anteriores, una dificultad objetivo y el nonce máximo a probar. El ASIC elige la ubicación para insertar el nonce, y elige qué bloques cumplen con el hash. Scallion tiene que insertar el nonce en una ubicación diferente, y verifica una coincidencia de patrón en lugar de simplemente "menor que XXXX".
¿Cómo se pueden usar múltiples dispositivos?
Ejecuta múltiples instancias de Scallion. 😄 Las búsquedas de Scallion son probabilísticas, por lo que no repetirás trabajo con el segundo dispositivo. El soporte multidispositivo real no sería demasiado difícil, pero tampoco agregaría mucho. He ejecutado varias instancias de scallion en tmux o screen con gran éxito. Solo necesitarás abortar manualmente todos los trabajos cuando uno encuentre un patrón (o escribir un script de shell que monitoree el archivo de salida y los mate a todos cuando vea resultados).
¿Solo quieres la última versión binaria? Consíguela aquí.
Requisitos previos
Obtén la última versión de mono para tu distribución de Linux:
Instala las dependencias comunes:
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
Compilación AMD/OpenSource
sudo apt-get install ocl-icd-opencl-dev
Compilación Nvidia
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
Finalmente
msbuild scallion.sln
Ten el tiempo de ejecución del contenedor nvidia-docker
Construye el contenedor:
docker build -t scallion -f Dockerfile.nvidia .
Ejecuta:
docker run --runtime=nvidia -ti --rm scallion -l
Reiniciar Scallion durante una búsqueda no perderá "progreso". Es una búsqueda probabilística y Scallion no hace "progreso"
Listar dispositivos
$ mono scallion/bin/Debug/scallion.exe -l
Generar un hash