For example an application loading a keystore using a non-FIPS provider, is it something forbidden or am I confused on this?
Penso che la definizione di FIPS potrebbe aiutare: elaborazione delle informazioni federali standard . La chiave qui è Standard , molto simile a un rapporto tecnico W3C, standard ISO ecc. Non sei obbligato a conformarti a questi standard. Dai un'occhiata ai browser web . Sei più che benvenuto a fare le tue cose. Non è necessariamente sbagliato non conformarsi a questi standard.
Ma , c'è sempre una ragione per questi standard. Per uno, conformarsi a loro significa che dovresti essere in grado di interoperare con altri software conformi. Ad esempio, prendi C99, lo standard ISO C. Qualsiasi codice C99 che scrivo dovrebbe funzionare su qualsiasi compilatore C99-compatibile.
Nel caso della crittografia e della sicurezza delle informazioni, consiglierei davvero di seguire questi standard. Per i principianti, definiscono come deve comportarsi un algoritmo o un keystore, vale a dire non solo l'interoperabilità, ma anche un livello ragionevole di test di sicurezza. In altre parole, sai che il tuo ambiente (che hai appena implementato) non deve contenere problemi di debolezza, libreria, sistema operativo e ambiente.
Come utente finale, sai che il tuo keystore compatibile con FIPS dovrebbe darti una certa sicurezza, al contrario di qualsiasi formato di archiviazione immaginato da Joe Bloggs. Dovresti scoprire che il tuo software ha un certo livello di interoperabilità (per esempio, standard diversi, ma molti programmi possono leggere le chiavi PKCS # 11 e le chiavi OpenPGP).
Quindi non è proibito di per sé, solo altamente raccomandato. Se scegli il software, preferirei qualcosa che segua FIPS, PKCS o OpenPGP.
Un altro punto da menzionare qui è che FIPS, RFC ecc. spesso definiscono una parte utilizzabile di ciò che è là fuori (per mezzo di uno standard). Rijndael! = AES, per esempio. Il codice Rijndael supporta molte più lunghezze di tasti e dimensioni di blocchi di AES, ma semplificando il fatto che per un determinato sottoinsieme significa che è più semplice da implementare, e questo è esattamente ciò che fa AES (FIPS 197). Cosa succederebbe se tu avessi detto "implementare Rijndael" è che molti sviluppatori non implementerebbero certe dimensioni a causa di limiti di tempo, pura pigrizia o altro. In caso contrario, il software che utilizza lo stesso algoritmo core sarebbe incompatibile.
Quindi, come risposta finale, no, non è vietato, ma è altamente raccomandato. Principalmente, si tratta di interoperabilità, ma ci sarà un certo livello di sicurezza ("non stiamo raccomandando un codice cifrato" (in FIPS corrente rispetto a quelli in pensione)).