Używaj Tink, aby spełniać wymagania dotyczące zabezpieczeń FIPS 140-2

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.