FIPS 140-2 güvenlik şartlarını karşılamak için Tink'i kullanın

Tink'in kendisi FIPS 140-2 tarafından doğrulanmamıştır. Bununla birlikte, FIPS 140-2 tarafından onaylanmış birçok algoritmayı destekler ve temel uygulamalar, BoringSSLs BoringCrypto gibi doğrulanmış şifreleme modüllerini kullanabilir. Tink, FIPS modunda BoringSSL oluşturmak için bir WORKSPACE içerir.

Çalışma alanının, BoringSSL'yi kullanımınızın FIPS ile uyumlu olduğuna dair doğal bir garanti vermediğini unutmayın. BoringCrypto'nun resmi güvenlik politikasını okumanızı önemle tavsiye ederiz.

Desteklenen algoritmalar

Tink'te yer alan aşağıdaki algoritmalar FIPS 140-2'ye göre onaylanmıştır (daha fazla bilgi için FIPS 140-2 Ek A'yı inceleyin):

  • Kimliği Doğrulanmış Şifreleme
    • AES-GCM
    • AES-CTR-HMAC-SHA256
  • MAC
    • HMAC-SHA256
    • AES-CMAC
  • Dijital İmzalar
    • ECDSA
    • RSA-SSA-PKCS1
    • RSA-SSA-PSS

C++'ta yalnızca FIPS modu

FIPS 140-2 onaylı algoritmaları ve doğrulanmış uygulamaları kullanmanız gerekiyorsa Tink'i yalnızca FIPS modunda oluşturabilirsiniz. Bu işlem, kullanımı onaylanmış algoritmalarla kısıtlar ve Tink'in doğrulanmış bir kriptografi modülünden yararlanıp yararlanmadığını kontrol eder.

Bu, Tink'in davranışını aşağıdaki şekillerde değiştirir:

  • Register() işlevleri yalnızca FIPS tarafından doğrulanmış bir uygulamaya sahip algoritmaları kaydeder. Bu, Anahtar kümelerini yalnızca doğrulanmış bir şifreleme modülü kullanan algoritmalar için kullanabileceğiniz anlamına gelir.
  • Tink, BoringSSL'nin BoringCrypto modülüyle oluşturulup oluşturulmadığını kontrol eder. Modül kullanılamıyorsa temel öğelere yapılan çağrılar INTERNAL hatası döndürür.
  • subtle/ öğesinde temel öğelerin kullanımı, yalnızca doğrulanmış bir şifreleme modülünden yararlanan algoritmalarla sınırlıdır.

BoringCrypto

Tink, doğrulanmış bir kriptografik modüle erişim sağlamak için C++'ta BoringCrypto'yu kullanıyor. Mevcut doğrulama durumu, yalnızca FIPS modundayken kullanılabilir algoritmalar için aşağıdaki ek kısıtlamaları uygular:

  • AES-CMAC doğrulanmadı ve kullanılamıyor
  • RSA-SSA-PKCS1, 3072 bit modülüyle sınırlandırılmıştır
  • RSA-SSA-PSS, 3072 bit modülüyle sınırlıdır

BoringCrypto modülünü Bazel ile kullanmak istiyorsanız C++ WORKSPACE'te boringssl için local_repository tanımının açıklamasını kaldırabilirsiniz.

Derleme zamanında etkinleştir

Yalnızca FIPS modunda Tink derlemek için derleme zamanında bir işaret ayarlayın:

bazel build ... --//third_party/tink/cc/config:use_only_fips=True

Çalışma zamanında Tink'in yalnızca FIPS modunda derlenip derlenmediğini kontrol etmek isterseniz kUseOnlyFips sabitini sağlayan internal/fips_utils.h başlığını ekleyebilirsiniz.

Yalnızca FIPS modunda Tink oluşturmazsanız bazı algoritmalar için doğrulanmış uygulamalar kullanmaya devam edebilir ancak diğer algoritmaların kullanımını kısıtlamaz.

Çalışma zamanında etkinleştir

Yalnızca FIPS modunda Tink oluşturmaya alternatif olarak, config/tink_fips.h sağlayıcısından crypto::tink::RestrictToFips() yöntemini çağırabilirsiniz. Bu durumda, çalışma zamanında FIPS temel öğelerine yönelik kısıtlamaları etkinleştirmek için bir işaret ayarlanır.

UYARI: Çalışma zamanı seçeneğini kullanırsanız herhangi bir anahtar materyalini işlemeden, anahtar yöneticisini kaydetmeden veya diğer Tink işlevlerini kaydetmeden önce crypto::tink::RestrictToFips() çağrılmalıdır. Buna ek olarak, BoringSSL'nin BoringCrypto modülüyle oluşturulduğundan emin olmanız gerekir. Aksi takdirde Tink, herhangi bir veriyi işlemenize izin vermez.