Sam Tink nie jest Zweryfikowano FIPS 140-2. Obsługuje jednak kilka protokołów FIPS 140–2 zatwierdzonych algorytmów i użyteczne implementacje mogą zweryfikowanych modułów kryptograficznych, takich jak BoringSSLs BoringCrypto. Tink zawiera WORKSPACE do kompilacji BoringSSL w trybie FIPS.
Pamiętaj, że obszar roboczy nie gwarantuje, że użycie metody BoringSSL jest zgodny ze standardem FIPS. Zdecydowanie zalecamy zapoznanie się z oficjalnym zasadami bezpieczeństwa w witrynie BoringCrypto.
Obsługiwane algorytmy
Te algorytmy w Tink zostały zatwierdzone zgodnie z FIPS 140-2 (więcej informacji znajdziesz na FIPS 140-2 Załącznik A):
- Uwierzytelnione szyfrowanie
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
- HMAC-SHA256
- AES-CMAC
- Podpisy cyfrowe
- ECDSA
- RSA-SSA-PKCS1
- RSA-SSA-PSS
Tryb tylko FIPS w C++
Jeśli musisz używać zweryfikowanych algorytmów FIPS 140-2 możesz utworzyć Tink w trybie „tylko FIPS”. Ogranicza to wykorzystania w zatwierdzonych algorytmach oraz sprawdza, czy Tink korzysta ze zweryfikowanego moduł kryptograficzny.
Sposób działania Tink jest następujący:
- Funkcje
Register()
rejestrują tylko algorytmy z FIPS o potwierdzonej implementacji. Oznacza to, że możesz korzystać tylko Zbiory kluczy dla algorytmów korzystających ze zweryfikowanego modułu kryptograficznego. - Tink sprawdza, czy narzędzie BoringSSL zostało utworzone z modułem BoringCrypto.
Wywołania podstawowych elementów zwracają błąd
INTERNAL
, gdy moduł nie i dostępności informacji. - Korzystanie z elementów podstawowych w zasadzie
subtle/
jest ograniczone do algorytmów, które używają zweryfikowanego modułu kryptograficznego.
BoringCrypto
Tink korzysta z metody BoringCrypto w języku C++, aby zapewnić dostęp do zweryfikowanego modułu kryptograficznego. Jest aktualny stan weryfikacji nakłada następujące dodatkowe ograniczenia na dostępne w trybie tylko FIPS:
- AES-CMAC nie został zweryfikowany i jest niedostępny
- RSA-SSA-PKCS1 jest ograniczony do modułu 3072-bitowego
- RSA-SSA-PSS jest ograniczony do modułu 3072-bitowego
Aby użyć modułu BoringCrypto w Bazel, możesz usunąć znacznik komentarza z tagu
Definicja local_repository
dla boringssl
w C++
WORKSPACE
Włącz podczas kompilowania
Aby skompilować Tink w trybie tylko FIPS, ustaw flagę podczas kompilowania:
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Jeśli chcesz sprawdzić w czasie działania, czy Tink został stworzony w trybie tylko FIPS,
możesz dołączyć nagłówek internal/fips_utils.h
, który zawiera stałą
kUseOnlyFips
Jeśli nie tworzysz biblioteki Tink w trybie tylko FIPS, możesz użyć tej aplikacji. zweryfikowanych implementacji niektórych algorytmów, ale nie ograniczają użycia z innymi algorytmami.
Włącz w czasie działania
Zamiast budowania Tink w trybie tylko FIPS możesz wywołać
Pole crypto::tink::RestrictToFips()
z: config/tink_fips.h
, które ustawia flagę
w czasie działania, aby włączyć ograniczenia dla obiektów podstawowych FIPS.
OSTRZEŻENIE: jeśli używasz opcji środowiska wykonawczego, crypto::tink::RestrictToFips()
musi być wywoływany przed przetworzeniem materiału klucza, zarejestrowaniem menedżera kluczy lub
z innymi funkcjami Tink. Musisz też upewnić się, że witryna BoringSSL
został utworzony z modułem BoringCrypto. W przeciwnym razie Tink nie pozwala na
przetwarzać żadnych danych.