Al fin luego de tanto trabajar ya hallamos la solución de esta impedimento que muchos lectores de esta web tienen. Si tienes algún detalle que compartir no dejes de dejar tu conocimiento.
Solución:
TL; DR: use HMAC-SHA512 para una velocidad, seguridad y compatibilidad OK óptimas. HMAC-SHA256 también es muy seguro y podría ser útil en CPU con operaciones de 32 bits. Además, está acelerado en muchas de las últimas CPU.
Para ver la fuerza de los métodos hash en sí mismos, eche un vistazo al sitio web keylength.com. Verá que incluso SHA-256 tiene un margen de seguridad bastante grande.
Además, el algoritmo HMAC es bastante ajeno a los ataques al algoritmo hash subyacente. HMAC es impermeable al problema del cumpleaños que reduce a la mitad el key fuerza a la mitad de la salida de hash. No se aplica simplemente porque el adversario no tiene el secreto. key y por lo tanto no puede intentar crear colisiones. Es por eso que incluso HMAC-SHA1 es bastante seguro.
Ahora la velocidad del hash depende del entorno de ejecución. Pero en general se pueden hacer las siguientes suposiciones:
- SHA-1 es generalmente más rápido que cualquier implementación de SHA-2 en la misma plataforma;
- SHA-512 es más rápido que SHA-256 en máquinas de 64 bits (ya que utilizan aritmética de 64 bits internamente);
- SHA-256 es más rápido que SHA-512 en máquinas de 8, 16 y 32 bits.
Use SHA-1 si espera problemas de compatibilidad. De lo contrario, también puede optar por SHA-512 (y reducir el resultado a una cantidad razonable de bits). El estado interno y la mayor seguridad de SHA-512 pueden ser una ligera ventaja. He tenido problemas con clientes que no aceptan ninguna forma de SHA-1 debido a problemas generales con el algoritmo; en otras palabras, el hecho de que no es seguro en general puede dificultar la aceptación.
Tenga en cuenta que SHA-384 y los métodos hash SHA-512/256 y SHA-512/224 menos conocidos son una forma especial de SHA-512, cortado a 384, 256 y 224 bits de salida. Así que la velocidad de estos algoritmos es idéntica. La única diferencia aparte del tamaño de salida es que estos formularios especiales utilizan valores iniciales diferentes internamente. De lo contrario, SHA-512 cortado a 384 bits es tan seguro y rápido como SHA-512/384. Sin embargo, debe usar SHA-384 para seguir siendo compatible, si necesita ese tamaño de salida en particular.
SHA-384 y SHA-512/256 y SHA-512/224 usan valores iniciales diferentes para que la salida de cualquiera de ellos sea diferente de SHA-512 y entre sí; una característica llamada separación de dominio. La separación de dominios hace que sea imposible usar el ataque o (parcialmente) predecir los resultados hash de las otras funciones hash relacionadas.
la entrada key el tamaño no depende de la función hash subyacente. los key primero está enmascarado con XOR y luego la función hash subyacente; Los algoritmos hash pueden tomar cantidades prácticamente ilimitadas de datos como entrada.
Es recomendable utilizar un key tamaño que sea al menos el tamaño del método hash utilizado, de lo contrario, puede degradar el margen de seguridad proporcionado por el método HMAC. Puede haber una penalización de desempeño menor si el key El tamaño obliga al algoritmo hash a codificar múltiples bloques.
También podría usar el (próximo) estándar SHA-3 en el sentido de que sería seguro. Sin embargo, HMAC-SHA-3 actualmente no tiene mucho sentido. HMAC es en realidad excesivo para SHA-3 (Keccak); SHA-3 debe ser seguro incluso sin la construcción HMAC. Por ahora KMAC se ha estandarizado como construcción MAC para SHA-3.
Las construcciones SHA-2 han mostrado, algo sorprendentemente, una resistencia bastante buena contra el análisis de criptas durante la competencia SHA-3. Entonces alli esta sin necesidad apremiante para actualizar a KMAC / SHA-3.
No creo que deba preocuparse por las ventajas de seguridad, todavía se cree que HmacSha1 es incluso seguro y la seguridad debe considerarse relativa a la key longitud. El rendimiento de Sha256 vs Sha512 dependerá de la implementación, la plataforma, etc., tendrá que probarlo usted mismo. Y el key las longitudes que proporciona a HMAC son independientes del algoritmo hash, consulte pseudocódigo.
Te mostramos reseñas y calificaciones
Si posees alguna sospecha y forma de limar nuestro crónica te recomendamos añadir un comentario y con deseo lo observaremos.