Por ejemplo, una aplicación que carga un almacén de claves utilizando un proveedor que no es FIPS, ¿está algo prohibido o estoy confundido con esto?
Creo que la definición de FIPS podría ayudar: Procesamiento de información federal Estándar . La clave aquí es Estándar , muy similar a un informe técnico de W3C, norma ISO, etc. No tiene ninguna obligación de cumplir con estas normas. Basta con mirar los navegadores web . Eres más que bienvenido a hacer lo tuyo. No es necesariamente incorrecto no cumplir con estas normas.
Pero , siempre hay una razón para estos estándares. Por un lado, cumplir con ellos significa que debería poder interoperar con otro software conforme. Por ejemplo, tome C99, el estándar ISO C. Cualquier código C99 que escribo debería funcionar en cualquier compilador compatible con C99.
En el caso de la criptografía y la seguridad de la información, realmente recomendaría seguir estos estándares. Para empezar, definen cómo debe comportarse un algoritmo o almacén de claves, lo que significa no solo la interoperabilidad, sino también un nivel razonable de pruebas de seguridad. En otras palabras, sabe que su entorno (que acaba de implementar) no debe contener ninguna debilidad, biblioteca, sistema operativo y problemas de entorno no pendientes.
Como usuario final, usted sabe que su almacén de claves compatible con FIPS debería darle cierta seguridad de seguridad, en lugar de cualquier formato de almacenamiento que Joe Bloggs haya creado. Debería encontrar que su software tiene algún nivel de interoperabilidad (por ejemplo, un estándar diferente, pero muchos programas pueden leer las claves PKCS # 11 y OpenPGP).
Por lo tanto, no está prohibido en sí mismo, es muy recomendable. Si elige un software, yo preferiría algo que siga a FIPS, PKCS o OpenPGP.
Otro punto a mencionar aquí es que los FIPS, RFC, etc. a menudo definen una parte utilizable de lo que está ahí fuera (a modo de estándar). Rijndael! = AES, por ejemplo. El cifrado Rijndael admite muchas más longitudes de clave y tamaños de bloque que AES, pero simplificar eso para un cierto subconjunto significa que es más simple de implementar, y eso es exactamente lo que hace AES (FIPS 197). Lo que sucedería si dijera "implementar Rijndael" es que muchos desarrolladores no implementarán ciertos tamaños debido a limitaciones de tiempo, pura pereza o lo que sea. El software que utiliza exactamente el mismo algoritmo central sería incompatible.
Entonces, como respuesta final, no, no está prohibido, pero es altamente recomendable. Sobre todo, se trata de la interoperabilidad, pero habrá cierto nivel de seguridad ("no recomendamos un cifrado roto" (en el FIPS actual en lugar de retirado)) también.