Tink selbst ist nicht FIPS 140-2 validiert. Es werden jedoch mehrere FIPS unterstützt. 140–2 genehmigte Algorithmen und die zugrunde liegenden Implementierungen können validierten kryptografischen Module wie BoringSSLs BoringCrypto. Tink enthält ein WORKSPACE zum Erstellen von BoringSSL im FIPS-Modus
Der Arbeitsbereich bietet keine inhärente Garantie für die Verwendung von BoringSSL ist FIPS-konform. Wir empfehlen Ihnen dringend, die offizielle Sicherheitsrichtlinien für BoringCrypto.
Unterstützte Algorithmen
Die folgenden Algorithmen in Tink wurden gemäß FIPS 140-2 (weitere Informationen finden Sie unter) FIPS 140-2, Anhang A):
- Authentifizierte Verschlüsselung
<ph type="x-smartling-placeholder">
- </ph>
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
<ph type="x-smartling-placeholder">
- </ph>
- HMAC-SHA256
- AES-CMAC
- Digitale Signaturen
<ph type="x-smartling-placeholder">
- </ph>
- ECDSA
- RSA-SSA-PKCS1
- RSA-SSA-PSS
Nur FIPS-Modus in C++
Ob Sie gemäß FIPS 140-2 genehmigte Algorithmen verwenden und validierte -Implementierungen können Sie Tink im Nur-FIPS-Modus erstellen. Dies schränkt an genehmigte Algorithmen anpassen und prüft, ob Tink Kryptografie-Modul.
Dadurch ändert sich das Verhalten von Tink wie folgt:
- Mit
Register()
-Funktionen werden nur Algorithmen registriert, die einen FIPS haben Implementierung überprüft. Das bedeutet, dass Sie nur Schlüsselsätze für Algorithmen, die ein validiertes kryptografisches Modul verwenden - Tink prüft, ob BoringSSL mit dem BoringCrypto-Modul erstellt wurde.
Aufrufe von Primitiven geben den Fehler
INTERNAL
zurück, wenn das Modul verfügbar. - Die Verwendung von Primitiven in
subtle/
ist auf Algorithmen beschränkt, die ein validiertes kryptografisches Modul.
BoringCrypto
Tink nutzt BoringCrypto in C++, um Zugriff auf ein validiertes kryptografisches Modul zu ermöglichen. Die aktuelle Für den Validierungsstatus gelten die folgenden zusätzlichen Einschränkungen Algorithmen im Nur-FIPS-Modus:
- AES-CMAC wurde nicht validiert und ist nicht verfügbar
- RSA-SSA-PKCS1 ist auf 3072-Bit-Modulus beschränkt.
- RSA-SSA-PSS ist auf 3072-Bit-Modulus beschränkt.
Um das BoringCrypto-Modul mit Bazel zu verwenden, können Sie die Kommentarzeichen aus dem Kommentar entfernen.
local_repository
-Definition für boringssl
in der C++-
ARBEITSBEREICH
Zur Kompilierungszeit aktivieren
Legen Sie bei der Kompilierung ein Flag fest, um Tink im Nur-FIPS-Modus zu erstellen:
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Wenn Sie während der Laufzeit prüfen möchten, ob Tink im Nur-FIPS-Modus erstellt wurde,
können Sie den Header internal/fips_utils.h
einfügen, der die Konstante
kUseOnlyFips
.
Auch wenn Sie Tink nicht im reinen FIPS-Modus erstellen, können Sie Implementierungen für einige Algorithmen validiert, jedoch nicht die Nutzung von anderen Algorithmen.
Während der Laufzeit aktivieren
Als Alternative zur Erstellung von Tink im reinen FIPS-Modus können Sie
crypto::tink::RestrictToFips()
von config/tink_fips.h
, die ein Flag festlegt
um die Einschränkungen für FIPS-Primitive zu aktivieren.
WARNUNG: Wenn Sie die Laufzeitoption verwenden, muss crypto::tink::RestrictToFips()
muss aufgerufen werden, bevor Schlüsselmaterial verarbeitet, Key Manager registriert oder
anderen Tink-Funktionen. Außerdem müssen Sie sicherstellen, dass BoringSSL
die mit dem BoringCrypto-Modul erstellt wurden. Andernfalls können Sie in Tink
Daten verarbeiten kann.