Estoy implementando parte del cliente de Bitcoin en C# y noté que tengo la opción de elegir entre FIPS 140-2 y versiones no certificadas de SHA256. Supuestamente ambas versiones dan el mismo hash.
¿Importa la elección de la biblioteca SHA-2 para Bitcoin? ¿Existe la biblioteca FIPS-2 en Mono y dispositivos móviles?
Básicamente, nunca debe elegir FIPS-140 a menos que no tenga otra opción. El cumplimiento de FIPS-140 se proporciona principalmente para las personas que deben cumplir con FIPS-140 por motivos normativos o de políticas.
Tenga en cuenta que eso no quiere decir que la validación FIPS-140 sea mala. Es genial. Si encuentra errores o problemas, es una victoria pura. Si puede elegir entre una implementación que ha sido validada por FIPS y otra que no, la primera es la mejor opción. Pero eso no tiene nada que ver con habilitar los modos FIPS-140.
Su implementación ha sido validada por FIPS. No le hagas daño cerebral.
Aquí hay algunas estadísticas de rendimiento que he encontrado hasta ahora para mi implementación de C#:
Una sola clave pública ECC (después de la operación ECC) puede tener aplicado el algoritmo Base58Checked a esta tasa
Algorithm Time for 100,000 Base58Check(byte[] key)
------------------------------ ---------------------------------------------
SHA256Managed() 4500ms
SHA256CryptoServiceProvider() 3640ms <--- CSP FIPS version
Así que sí, la versión validada por FIPS es más rápida y probablemente mejor.
Altamente Irregular
fabricante de cosas7