Tink itu sendiri bukan FIPS 140-2 divalidasi. Namun mendukung beberapa FIPS 140-2 algoritma yang disetujui dan implementasi yang mendasarinya dapat memanfaatkan modul kriptografi yang divalidasi seperti BoringSSLs BoringCrypto. Tink menyertakan WORKSPACE untuk membangun BoringSSL dalam mode FIPS.
Perlu diketahui bahwa ruang kerja tidak memberikan jaminan bawaan bahwa penggunaan BoringSSL oleh Anda adalah sesuai dengan FIPS. Sebaiknya Anda membaca kebijakan keamanan untuk BoringCrypto.
Algoritma yang didukung
Algoritma berikut di Tink disetujui berdasarkan 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 Anda diharuskan menggunakan algoritma FIPS 140-2 yang disetujui dan divalidasi standar, Anda dapat membangun Tink dalam mode FIPS saja. Ini membatasi ke algoritma yang disetujui dan memeriksa apakah Tink menggunakan modul kriptografi.
Tindakan ini akan mengubah perilaku Tink dengan cara berikut:
- Fungsi
Register()
hanya mendaftarkan algoritma yang memiliki FIPS implementasi yang divalidasi. Ini berarti Anda hanya dapat menggunakan Keyset untuk algoritma 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 yang tersedia. - Penggunaan primitif di
subtle/
dibatasi untuk algoritma yang menggunakan modul kriptografi yang tervalidasi.
BoringCrypto
Tink menggunakan BoringCrypto di C++ untuk menyediakan akses ke modul kriptografi yang divalidasi. Saat ini memberlakukan batasan tambahan berikut terkait status validasi data algoritme saat dalam mode FIPS saja:
- AES-CMAC belum divalidasi dan tidak tersedia
- RSA-SSA-PKCS1 dibatasi hingga modulus 3072-bit
- RSA-SSA-PSS dibatasi untuk modulus 3072-bit
Untuk menggunakan modul BoringCrypto dengan Bazel, Anda dapat menghapus tanda komentar
Definisi local_repository
untuk boringssl
dalam C++
RUANG KERJA.
Aktifkan pada waktu kompilasi
Untuk membangun Tink dalam mode khusus FIPS, setel flag pada waktu kompilasi:
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Jika Anda ingin memeriksa pada saat runtime,
apakah Tink telah dibangun dalam mode FIPS saja,
Anda dapat menyertakan header internal/fips_utils.h
yang memberikan konstanta
kUseOnlyFips
.
Jika Anda tidak membuat Tink dalam mode khusus FIPS, Tink masih dapat digunakan implementasi yang divalidasi untuk beberapa algoritma tetapi tidak membatasi penggunaan algoritma-algoritma lain.
Aktifkan saat runtime
Sebagai alternatif untuk membangun Tink dalam mode FIPS saja, Anda dapat memanggil
crypto::tink::RestrictToFips()
dari config/tink_fips.h
yang menyetel tanda
saat runtime untuk mengaktifkan pembatasan
terhadap primitif FIPS.
PERINGATAN: Jika Anda menggunakan opsi runtime, crypto::tink::RestrictToFips()
harus dipanggil sebelum menangani materi kunci, mendaftarkan pengelola kunci, atau
fungsi Tink lainnya. Selain itu, Anda harus memastikan bahwa BoringSSL memiliki
dibuat dengan modul BoringCrypto, jika tidak, Tink tidak memungkinkan Anda
memproses data apa pun.