Tink sendiri tidak FIPS 140-2 divalidasi. Namun, kriptografi ini mendukung beberapa algoritma yang disetujui FIPS 140-2 dan implementasi yang mendasarinya dapat menggunakan modul kriptografi yang divalidasi seperti BoringSSLs BoringCrypto. Tink menyertakan WORKSPACE untuk membangun BoringSSL dalam mode FIPS.
Perlu diperhatikan bahwa ruang kerja tidak memberikan jaminan inheren bahwa penggunaan BoringSSL Anda mematuhi FIPS. Sebaiknya baca kebijakan keamanan resmi untuk BoringCrypto.
Algoritma yang didukung
Algoritma berikut di Tink disetujui sesuai dengan FIPS 140-2 (lihat informasi selengkapnya di FIPS 140-2 Lampiran A):
- Enkripsi yang Diautentikasi
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
- HMAC-SHA256
- AES-CMAC
- Tanda Tangan Digital
- ECDSA
- RSA-SSA-PKCS1
- RSA-SSA-PSS
Mode khusus FIPS di C++
Jika diharuskan untuk menggunakan algoritma yang disetujui FIPS 140-2 dan implementasi tervalidasi, Anda dapat mem-build Tink dalam mode khusus FIPS. Tindakan ini akan membatasi penggunaan algoritma yang disetujui dan memeriksa apakah Tink menggunakan modul kriptografi yang divalidasi.
Tindakan ini akan mengubah perilaku Tink dengan cara berikut:
- Fungsi
Register()
hanya mendaftarkan algoritma yang memiliki implementasi tervalidasi FIPS. Ini berarti Anda hanya dapat menggunakan Keyset untuk algoritme yang menggunakan modul kriptografi yang divalidasi. - Tink memeriksa apakah BoringSSL telah dibuat dengan modul BoringCrypto.
Panggilan ke primitif akan menampilkan error
INTERNAL
jika modul tidak tersedia. - Penggunaan primitif di
subtle/
dibatasi untuk algoritme yang menggunakan modul kriptografis yang divalidasi.
BoringCrypto
Tink menggunakan BoringCrypto di C++ untuk memberikan akses ke modul kriptografi yang divalidasi. Status validasinya saat ini menimbulkan batasan tambahan berikut pada algoritma yang tersedia saat dalam mode khusus FIPS:
- AES-CMAC belum divalidasi dan tidak tersedia
- RSA-SSA-PKCS1 dibatasi untuk modulus 3072-bit
- RSA-SSA-PSS dibatasi untuk modulus 3072-bit
Untuk menggunakan modul BoringCrypto dengan Bazel, Anda dapat membatalkan komentar
definisi local_repository
untuk boringssl
di C++
WORKSPACE.
Aktifkan pada waktu kompilasi
Untuk mem-build Tink dalam mode khusus FIPS, tetapkan flag pada waktu kompilasi:
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Jika pada runtime ingin memeriksa apakah Tink telah di-build dalam mode khusus FIPS,
Anda dapat menyertakan header internal/fips_utils.h
yang menyediakan kUseOnlyFips
yang
konstan.
Jika Anda tidak mem-build Tink dalam mode khusus FIPS, Tink masih dapat menggunakan penerapan tervalidasi untuk beberapa algoritma, tetapi tidak membatasi penggunaan algoritma lainnya.
Aktifkan pada waktu proses
Sebagai alternatif untuk mem-build Tink dalam mode khusus FIPS, Anda dapat memanggil
crypto::tink::RestrictToFips()
dari config/tink_fips.h
yang menetapkan flag
saat runtime untuk mengaktifkan batasan pada primitif FIPS.
PERINGATAN: Jika Anda menggunakan opsi runtime, crypto::tink::RestrictToFips()
harus dipanggil sebelum menangani materi kunci apa pun, mendaftarkan pengelola kunci, atau
fungsi Tink lainnya. Selain itu, Anda harus memastikan bahwa BoringSSL telah
di-build dengan modul BoringCrypto. Jika tidak, Tink tidak akan mengizinkan Anda
untuk memproses data apa pun.