hash - criptografia - sha256 decrypt
¿Por qué usar SHA1 para obtener secretos de hash cuando SHA-512 es más seguro? (3)
No me refiero a que esto sea un debate, pero estoy tratando de comprender la razón técnica detrás de por qué tantas aplicaciones usan SHA1 para los secretos de hash, cuando SHA512 es más seguro. Tal vez es simplemente por compatibilidad con versiones anteriores.
Además del obvio tamaño mayor (128 caracteres frente a 40), o ligeras diferencias de velocidad, ¿hay alguna otra razón por la que la gente usa el anterior?
Además, SHA-1 creo que fue descifrado por primera vez por el procesador de un VCR hace años. ¿Alguien ha roto 512 aún (tal vez con un soplador de hojas), o todavía es seguro de usar sin salazón?
La mayoría de los usos de SHA-1 son para la interoperabilidad: utilizamos SHA-1 cuando implementamos protocolos donde se exige SHA-1. La facilidad de desarrollo también se tiene en cuenta: las implementaciones de SHA-1 en varios idiomas y el entorno de programación son más comunes que las implementaciones de SHA-512.
Además, aun así la mayoría de los usos de las funciones hash no tienen problemas de rendimiento (al menos, no hay problemas de rendimiento donde la función hash es el cuello de botella), hay algunas arquitecturas donde SHA-1 es mucho más eficiente que SHA-512. Considere un enrutador Linksys básico: usa una CPU derivada de Mips, con reloj a 200 MHz. Tal máquina se puede reprogramar, por ejemplo, con OpenWRT (un pequeño Linux para sistemas integrados). Como enrutador, tiene una red rápida (100Mbit / s). Supongamos que quiere copiar algunos datos (por ejemplo, como parte de algún software de VPN, un enrutador parece un buen candidato para ejecutar una VPN). Con SHA-1, obtendrá aproximadamente 6 MB / s, usando la CPU completa. Eso ya es bastante más bajo que el ancho de banda de la red. SHA-512 no le dará más de 1.5 MB / s en la misma máquina. En un sistema de este tipo, la diferencia en el rendimiento no es insignificante. Además, si utilizo SHA-1 en mi enrutador Linksys para algún protocolo de comunicación, entonces la máquina en el otro extremo del enlace también tendrá que usar SHA-1.
La buena noticia es que hay una competencia en curso para seleccionar una nueva función hash estándar, cuyo nombre clave es SHA-3 . Algunos de los candidatos que compiten ofrecen un rendimiento similar al SHA-1, o incluso algo mejor, al tiempo que producen una salida de 512 bits y son (probablemente) tan seguros como SHA-512.
Si necesita algo que se haya corregido rápidamente, o solo necesita un hash de 160 bits, usaría SHA-1.
Para comparar las entradas de la base de datos entre sí rápidamente, puede tomar 100 campos y hacer un hash SHA-1 de ellos, produciendo 160 bits. Esos 160 bits son 10 ^ 50ish valores.
Si es poco probable que tenga alguna vez más que una pequeña fracción de 10 ^ 50º valores, es más rápido simplemente ajustar lo que tengo con el algoritmo más simple y más rápido.
Tanto SHA1 como SHA512 son funciones hash. Si los está utilizando como un hash criptográfico, entonces tal vez esa sea una buena razón para usar SHA512; sin embargo, hay aplicaciones que usan estas funciones simplemente para identificar objetos. Por ejemplo, Git usa SHA1 para distinguir de manera económica entre objetos. En ese caso, debido a que la posibilidad de colisión entre dos documentos es increíblemente pequeña con SHA1, realmente no hay ninguna justificación para el requisito de espacio adicional de SHA512 cuando SHA1 es más que adecuado para la tarea.
En términos de hashes criptográficos y la opción de usar una sal o no, puede que le interese leer Do not Hash Secrets . Incluso con SHA512, usar una sal es una buena idea (y es barato hacerlo, también, ¿por qué no hacerlo?), Porque puedes adivinar las contraseñas principales y ver si tienen el mismo hash, pero el autor señala que HMAC es un mecanismo más seguro. En cualquier caso, tendrá que determinar los costos asociados con el tiempo extra + espacio y los costos asociados con la posibilidad de una violación, y determinar qué tan paranoico quiere ser. Como descubrió recientemente Microsoft, el cambio constante de contraseñas es una pérdida de dinero y no da resultado , por lo que aunque la paranoia suele ser buena en lo que respecta a la seguridad, realmente hay que hacer cálculos para determinar si tiene sentido ... ¿Las ganancias en seguridad superan el tiempo y los costos de almacenamiento?