17.4. strict モード
fips-mode
オプションがあります。fips
機能が有効になっている場合、これは自動的に non-strict
に設定されます。これは、BCFIPS が "非承認モード" で実行されることを意味します。よりセキュアな代替方法として、--features=fips --fips-mode=strict
を使用できます。この場合、BouncyCastle FIPS は "承認モード" を使用します。このオプションを使用すると、暗号化とセキュリティーアルゴリズムに対するセキュリティー要件が厳しくなります。
strict モードでは、デフォルトのキーストアタイプ (およびデフォルトのトラストストアタイプ) は BCFKS です。別のキーストアタイプを使用する場合は、オプション --https-key-store-type
を使用して適切なタイプを指定する必要があります。トラストストアを使用する場合も、同様のコマンドが必要になる場合があります。
サーバーを起動すると、起動ログに次のような Approved Mode
に関する注釈とともに KC
プロバイダーが含まれていることを確認できます。
KC(BCFIPS version 2.0 Approved Mode, FIPS-JVM: enabled) version 1.0 - class org.keycloak.crypto.fips.KeycloakFipsSecurityProvider,
17.4.1. strict モードでの暗号化の制限
-
前のセクションで説明したように、strict モードは
pkcs12
キーストアでは機能しない可能性があります。前述のように、別のキーストア (bcfks
など) を使用する必要があります。また、strict モードを使用している場合、jks
およびpkcs12
キーストアは Red Hat build of Keycloak ではサポートされません。たとえば、管理コンソールの OIDC または SAML クライアントのキーストア、もしくはレルムキーのava-keystore
プロバイダーのキーストアのインポートや生成などです。 -
ユーザーパスワードは、14 文字以上でなければなりません。Red Hat build of Keycloak は、デフォルトで PBKDF2 ベースのパスワードエンコーディングを使用します。BCFIPS 承認モードでは、PBKDF2 アルゴリズムを使用した 112 ビット (実質的には 14 文字) 以上のパスワードが必要です。短いパスワードを許可する場合は、このアルゴリズムで作成されたハッシュを検証するときに、SPI
パスワードハッシュのプロバイダー
プロパティーを 14 に設定して、追加のパディングを提供します。この設定は、以前に保存されたパスワードとの下位互換性もあります。たとえば、ユーザーのデータベースが非 FIPS 環境にあり、パスワードが短く、承認モードで BCFIPS を使用して Red Hat build of Keycloak でパスワードを検証する場合、そのパスワードは機能するはずです。したがって、サーバーの起動時に次のようなオプションを効果的に使用できます。pbkdf2-sha512
のmax-
padding-length
--spi-password-hashing-pbkdf2-sha512-max-padding-length=14
上記のオプションを使用しても、FIPS 準拠は損なわれません。いずれにせよ、パスワードは長くすることが推奨されます。たとえば、最新のブラウザーで自動生成されるパスワードは 14 文字を超えるため、この要件に一致します。max-padding-length のオプションを省略する場合は、パスワードポリシーをレルムに設定して、少なくとも 14 文字のパスワードにすることができます。
24 より古い Red Hat build of Keycloak から移行する場合や、デフォルトのハッシュアルゴリズムを上書きするようにパスワードポリシーを明示的に設定する場合は、一部のユーザーが pbkdf2-sha256
などの古いアルゴリズムを使用している可能性があります。この場合、--spi-password-hashing-pbkdf2-sha256-max-padding-length=14 オプションを追加して、ユーザーが古い
でパスワードをハッシュ化できるようにすることを検討してください。パスワードが 14 文字未満になる可能性があるため、ログインできるようになります。
pbkdf2-
sha256
-
1024 ビットの RSA キーは機能しません (最小は 2048)。これは、Red Hat build of Keycloak レルム自体が使用するキー (管理コンソールの
Keys
のレルムキー) だけでなく、クライアントキーと IDP キーにもあてはまります。 -
HMAC SHA-XXX キーは、112 ビット (または 14 文字) 以上でなければなりません。たとえば、OIDC クライアントをクライアント認証
Signed Jwt with Client Secret
(OIDC 表記ではclient-secret-jwt
) で使用する場合、クライアントシークレットの長さは 14 文字以上である必要があります。優れたセキュリティーを確保するには、この要件が必ず満たされるように、Red Hat build of Keycloak サーバーによって生成されたクライアントシークレットを使用することを推奨します。 -
bc-fips バージョン 1.0.2.4 は、PKCS 1.5 RSA 暗号化の移行期間の最後を処理します。そのため、アルゴリズム
RSA1_5
を持つ JSON Web Encryption (JWE)はデフォルトで、strict モードでは許可されません(BC は、現時点では後方互換性オプションとしてシステムプロパティーDorg.bouncycastle.rsa.allow_pkcs15_enc=true を提供します)。
RSA-OAEP
とRSA-OAEP-256
は以前と同様に引き続き利用可能です。