Ordenada por los puntos finales
fabada
aaaaaa
pttack
clpert
lpmaee
kiebgt
pazxca
urtcre
Punto inicialPunto final
¿Cuál es la contraseña de 41032E55?
fabada
aaaaaa
pttack
clpert
lpmaee
admin
pazxca
urtcre
41032E55 cateto 0AB2291F pazxca
HR R
41032E55
H
pttack
Cuanto más larga es la cadena (t), más
pequeña es la tabla (m) y más lenta es
la búsqueda
Probabilidad de encontrar p
mt/N
t /N m /N
Problemas
La cadena no siempre contendrá el
valor de hbuscado
Supongamos que buscamos la
contraseña de FB107E70
fabada
aaaaaa
pttack
clpert
lpmaee
kiebgt
pazxca
urtcre
FB107E70 7503F4BA kiebgt
HR R
281DAF40 sgfnyd 920ECF10 kiebgt
H HR R
sgfnyd
aaaaaa
Falsas alarmas porque Rno es
resistente a colisiones
Si dos cadenas colisionan en un punto,
cubrirán las mismas contraseñas
Cuanto mayor la tabla, mayor
probabilidad de colisión …
… y menor número de contraseñas
cubiertas
No se puede detectar porque no se
almacenan los valores intermedios
m
i
t
j
j
éxito
N
it
N
P
1
1
0
1
)1(
1
m = N
1/3
t= N
1/3
Para compensar las colisiones se
crean múltiples tablas, l, con funciones
Rdistintas en cada una
l
m
i
t
j
j
éxito
N
it
N
P
1
1
0
1
)1(
1
1
Solución
RainbowTables
Philippe Oechslin, “Making a Faster
Cryptanalytic Time-Memory Trade-Off”
Usar una función de reducción R
i
distinta para cada elemento de la
cadena
¿Pueden existir colisiones ahora?
El mismo valor debería coincidir en la
misma posición: P
colisión= 1/t
Tendrían el mismo valor final por lo que
podrían eliminarse duplicados
Proceso de creación de tablas rainbow
paquito ub40i moscar as400 parapal bix10 admin
duracell re2xei conejos 34ga0 teletubi p3p3l iphone
H
H
H H
H H
R
1
R
1
R
2
R
2
R
3
secreto yert4 debajo j0s3a arramai 9i0j8a secanot
H H HR
1 R
2 R
3
R
3
¿Cuál es la contraseña de 34ga0?
paquitoadmin
duracelliphone
secretosecanot
34ga0 picasso
R
3
34ga0
AA 2a
H R
1 R
2 R
3
FB h3
H
HT 88
H
ZP 4b
H R
4
QT
BB y5
H R
1 R
2 R
3
TJ 4z
H
HT 88
H
ZP 4b
H R
4
QT
H R
1 R
2 R
3H H H R
4
AA 2a HT 88 UJ b1 KR 22 PO
Tablas perfectas
Las que cubren todas las contraseñas
sin colisiones
)1(y donde
)1(1
11
1
N
m
n
t
i
i
éxito
n
eNmmm
N
m
P
Aplicaciones de las
rainbowtables
¿Cómo almacenan los ordenadores las
contraseñas?
Windows Unix
VistaXP, 2000/3Red HatLinuxUbuntuDebianFedoraMac OS X
FUNCIÓN
DES X X
MD5 X X X X
SHA SHA256
/512
SHA1
NTLM HashX X
NT Hash X
Salt X X X X X
LM NTLM MD5 SHA1
10,7 min 5,3 min 4,1 min 15,1 min7
1
M3,83526
i
i
26 caracteres, longitud <= 7
7
1
G6,8036
i
i 36 caracteres, longitud <= 7
LM NTLM MD5 SHA1
17,2 h 8,5 h 6,6 h 1,0 días
P72G102,7256
7
1
7
i
i 256 caracteres, longitud <= 7
LM NTLM MD5 SHA1
1.755,3 años870,3 años671,2 años2.468,5 años
E67G107,626
7
1
10
i
i 26 caracteres, longitud <= 14
LM NTLM MD5 SHA1
1.633.359,2 años809.881,0 años624.619,6 años2.297.070,7 años
LM
sucks!
1.La contraseña se rellena con ceros o se trunca
a 14 bytes
2.Se divide en dos mitades de 7 bytes
3.Se convierten en una cadena binaria para usar
como dos claves DES, insertando un cero
después de cada 7 bits
4.Cada clave se utiliza para cifrar la cadena
KGS!@#$%
5.Los dos textoscifradosresultantesse
concatenanparaformarel hash LM de 16
bytes