Tink 自体は、 FIPS 140-2 認証取得済み。ただし、複数の FIPS 要件に対応しており、 140-2 の承認済みアルゴリズムと基盤となる実装でできること 次のような検証済みの暗号モジュール BoringSSLs BoringCrypto。Tink には、 WORKSPACE: FIPS モードで BoringSSL を構築します。
ワークスペースには、BoringSSL の使用が保証されるわけではありません。 FIPS に準拠しています公式の公式記事を セキュリティ ポリシーをご覧ください。
サポートされているアルゴリズム
Tink の以下のアルゴリズムは、 FIPS 140-2(詳細については、 FIPS 140-2 Annex A):
- 認証による暗号化
<ph type="x-smartling-placeholder">
- </ph>
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
<ph type="x-smartling-placeholder">
- </ph>
- HMAC-SHA256
- AES-CMAC
- デジタル署名
<ph type="x-smartling-placeholder">
- </ph>
- ECDSA
- RSA-SSA-PKCS1
- RSA-SSA-PSS
C++ での FIPS 専用モード
FIPS 140-2 認定アルゴリズムを使用する必要がある場合は、 FIPS 専用モードで Tink を構築できます。これにより、 承認されたアルゴリズムに照らして、Tink が検証済みの 暗号化モジュールです。
これにより、Tink の動作が次のように変更されます。
Register()
関数は、FIPS があるアルゴリズムのみを登録する 検証された実装です。つまり、 検証済みの暗号モジュールを使用するアルゴリズムの鍵セット。- Tink は、BoringSSL が BoringCrypto モジュールでビルドされているかどうかを確認します。
モジュールがプリミティブでない場合、プリミティブを呼び出すと
INTERNAL
エラーが返される できます。 subtle/
でプリミティブを使用できるのは、 検証済みの暗号モジュールです。
BoringCrypto
Tink は BoringCrypto を使用します。 を使用して、検証済みの暗号モジュールにアクセスできるようにします。現在 検証ステータスでは、使用可能なリソースに次の追加制約が FIPS 専用モードの場合、次の点に注意してください。
- AES-CMAC は検証されていないため、使用できません
- RSA-SSA-PKCS1 は 3,072 ビットのモジュラスに制限されています
- RSA-SSA-PSS は 3,072 ビットのモジュラスに制限されています
Bazel で BoringCrypto モジュールを使用するには、
C++ での boringssl
の local_repository
定義
ワークスペース。
コンパイル時に有効にする
FIPS 専用モードで Tink をビルドするには、コンパイル時にフラグを設定します。
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Tink が FIPS 専用モードでビルドされているかどうかを実行時にチェックするには、
定数を指定するヘッダー internal/fips_utils.h
を含めることができます。
kUseOnlyFips
。
FIPS 専用モードで Tink を作成していない場合でも、 検証済みの実装が一部のアルゴリズムで検証されているが、 できます。
実行時に有効にする
FIPS 専用モードで Tink をビルドする代わりに、
フラグを設定する config/tink_fips.h
からの crypto::tink::RestrictToFips()
FIPS プリミティブに対する制限を有効にします。
警告: ランタイム オプションを使用する場合は、crypto::tink::RestrictToFips()
鍵マテリアルの処理、鍵マネージャーの登録、
その他の Tink 機能。また、BoringSSL が VPC ネットワークと
Tink は、BoringCrypto モジュールを使用してビルドされています。それ以外の場合、
データを処理します。