Tink in sé non è Standard FIPS 140-2 convalidato. Tuttavia, supporta diverse FIPS 140-2 algoritmi approvati e le implementazioni sottostanti possono utilizzare di crittografia convalidati come BoringSSLs BoringCrypto. Tink include un AREA DI LAVORO per creare BoringSSL in modalità FIPS.
Tieni presente che l'area di lavoro non offre alcuna garanzia intrinseca che l'utilizzo di BoringSSL è conforme allo standard FIPS. Ti consigliamo vivamente di leggere il criteri di sicurezza per BoringCrypto.
Algoritmi supportati
I seguenti algoritmi in Tink sono approvati in base a FIPS 140-2 (leggi ulteriori informazioni all'indirizzo FIPS 140-2 Allegato A):
- Crittografia autenticata
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
- HMAC-SHA256
- AES-CMAC
- Firme digitali
- ECDSA
- RSA-SSA-PKCS1
- RSA-SSA-PSS
Modalità solo FIPS in C++
Se ti viene richiesto di utilizzare algoritmi approvati FIPS 140-2 e puoi creare Tink solo in modalità FIPS. Ciò limita agli algoritmi approvati e controlla se Tink sta utilizzando una modulo crittografico.
Questo modifica il comportamento di Tink nei seguenti modi:
- Le funzioni
Register()
registrano solo gli algoritmi con un FIPS un'implementazione convalidata. Ciò significa che puoi utilizzare solo Set di chiavi per algoritmi che utilizzano un modulo crittografico convalidato. - Tink controlla se BoringSSL è stato creato con il modulo BoringCrypto.
Le chiamate alle primitive restituiscono un errore
INTERNAL
quando il modulo non è disponibili. - L'uso delle primitive in
subtle/
è limitato agli algoritmi che utilizzano un modulo crittografico convalidato.
BoringCrypto
Tink usa BoringCrypto in C++ per fornire l'accesso a un modulo crittografico convalidato. È attuale lo stato di convalida impone i seguenti vincoli aggiuntivi sui algoritmi solo in modalità FIPS:
- AES-CMAC non è stato convalidato e non è disponibile
- RSA-SSA-PKCS1 è limitato al modulo a 3072 bit
- RSA-SSA-PSS è limitato al modulo a 3072 bit
Per utilizzare il modulo BoringCrypto con Bazel, puoi rimuovere il commento dal
Definizione di local_repository
per boringssl
in C++
AREA DI LAVORO.
Abilita al momento della compilazione
Per creare Tink in modalità solo FIPS, imposta un flag al momento della compilazione:
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Se vuoi verificare in fase di runtime se Tink è stato creato solo in modalità FIPS,
puoi includere l'intestazione internal/fips_utils.h
, che fornisce la costante
kUseOnlyFips
.
Se non stai creando Tink in modalità solo FIPS, può comunque utilizzare implementazioni convalidate per alcuni algoritmi senza limitare l'utilizzo di altri algoritmi.
Abilita in fase di esecuzione
In alternativa alla creazione di Tink in modalità solo FIPS, puoi chiamare
crypto::tink::RestrictToFips()
da config/tink_fips.h
che imposta un flag
in fase di runtime per abilitare le restrizioni
alle primitive FIPS.
AVVISO: se utilizzi l'opzione di runtime, crypto::tink::RestrictToFips()
deve essere chiamato prima di gestire qualsiasi materiale delle chiavi, registrare il gestore delle chiavi o
le altre funzionalità di Tink. Inoltre, devi assicurarti che BoringSSL abbia
con il modulo BoringCrypto, altrimenti Tink non ti consente
elaborare qualsiasi dato.