Si te interesa el tema te recomiendo que leas el artículo [openbsd.org] que describe las contraseñas bcrypt. No solo explica como se calculan, sino que pone en analiza los problemas de otros algoritmos.
El algoritmo que usan las bcrypt está diseñado expresamente para que sea costoso y no pueda optimizarse. Cito del artículo:
We hope that the unpredictable and changing content of the Parray and SBoxes will reduce the applicability of yet unknown optimizations additionally the eksblowish SBoxes require 4 KB of constantly accessed and modified memory.Thus the SBoxes cannot be shared across key schedules separate SBoxes must exist for every simultaneous execution. This vastly limits the usefulness of anyattempts to pipeline the Feistel network in hardware
In contrast bcrypt will adapt to more powerful attackers Moreover its inner loop relies exclusively on operations that are efficient on general purpose CPUs leaving little opportunity for specialized hardware to achieve dramatic improvements
Sobre las tablas que me pides, de memoria no sé ninguna comparativa, pero es fácil hacer los cáculos uno mismo. 80 caracteres posibles y longitud 16, son 80^16 posibles contraseñas y 62 caracteres posibles y longitud 8, 62^8. Lo divides por la tasa de cálculo de contraseñas y ya tienes lo que cuesta explorar todo el espacio de contraseñas(divide por 2 para hallar el caso medio).
Como comparación de lo que se puede calcular en un equipo actual de sobremesa para cada tipo de contraseña:
$./john --test Benchmarking: Traditional DES [24/32 4K]... DONE Many salts: 339891 c/s real, 339891 c/s virtual Only one salt: 321126 c/s real, 321126 c/s virtual
Benchmarking: BSDI DES (x725) [24/32 4K]... DONE Many salts: 12235 c/s real, 12235 c/s virtual Only one salt: 12043 c/s real, 12043 c/s virtual
por
pobrecito hablador
el Viernes, 03 Octubre de 2008, 14:45h
(#1087579)
Que el algoritmo bcrypt no sea paralelo no significa que yo no pueda probar 20000 simultaneamente, una en cada uno de los hilos que puede manejar por hardware una tarjeta de esas.
No creo que se hayan liado a paralelizar el algoritmo de MD5 ni ningún otro, lo que hacen es probar un montón de contraseñas a la vez en máquinas muy muy paralelas como lo son las GPUs.
Re:Tan difícil era ponerlo en la noticia?
(Puntos:3, Informativo)( Última bitácora: Lunes, 22 Febrero de 2016, 07:16h )
El algoritmo que usan las bcrypt está diseñado expresamente para que sea costoso y no pueda optimizarse. Cito del artículo:
We hope that the unpredictable and changing content of the Parray and SBoxes will reduce the applicability of yet unknown optimizations additionally the eksblowish SBoxes require 4 KB of constantly accessed and modified memory.Thus the SBoxes cannot be shared across key schedules separate SBoxes must exist for every simultaneous execution. This vastly limits the usefulness of anyattempts to pipeline the Feistel network in hardware
In contrast bcrypt will adapt to more powerful attackers Moreover its inner loop relies exclusively on operations that are efficient on general purpose CPUs leaving little opportunity for specialized hardware to achieve dramatic improvements
Sobre las tablas que me pides, de memoria no sé ninguna comparativa, pero es fácil hacer los cáculos uno mismo. 80 caracteres posibles y longitud 16, son 80^16 posibles contraseñas y 62 caracteres posibles y longitud 8, 62^8. Lo divides por la tasa de cálculo de contraseñas y ya tienes lo que cuesta explorar todo el espacio de contraseñas(divide por 2 para hallar el caso medio).
Como comparación de lo que se puede calcular en un equipo actual de sobremesa para cada tipo de contraseña:
$
Benchmarking: Traditional DES [24/32 4K]... DONE
Many salts: 339891 c/s real, 339891 c/s virtual
Only one salt: 321126 c/s real, 321126 c/s virtual
Benchmarking: BSDI DES (x725) [24/32 4K]... DONE
Many salts: 12235 c/s real, 12235 c/s virtual
Only one salt: 12043 c/s real, 12043 c/s virtual
Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw: 9223 c/s real, 9223 c/s virtual
Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw: 461 c/s real, 461 c/s virtual
Benchmarking: Kerberos AFS DES [24/32 4K]... DONE
Short: 312012 c/s real, 312012 c/s virtual
Long: 794828 c/s real, 794828 c/s virtual
Benchmarking: NT LM DES [32/32 BS]... DONE
Raw: 3707K c/s real, 3707K c/s virtual
Programs should be written for people to read, and only incidentally for machines to execute
Re:Tan difícil era ponerlo en la noticia?
(Puntos:0)No creo que se hayan liado a paralelizar el algoritmo de MD5 ni ningún otro, lo que hacen es probar un montón de contraseñas a la vez en máquinas muy muy paralelas como lo son las GPUs.