17.4. strict モード
fips-mode
オプションがあります。fips
機能が有効になっている場合、これは自動的に non-strict
に設定されます。これは、BCFIPS が "非承認モード" で実行されることを意味します。よりセキュアな代替方法として、--features=fips --fips-mode=strict
を使用できます。この場合、BouncyCastle FIPS は "承認モード" を使用します。このオプションを使用すると、暗号化とセキュリティーアルゴリズムに対するセキュリティー要件が厳しくなります。
strict モードでは、デフォルトのキーストアタイプ (およびデフォルトのトラストストアタイプ) は BCFKS です。別のキーストアタイプを使用する場合は、オプション --https-key-store-type
を使用して適切なタイプを指定する必要があります。トラストストアを使用する場合も、同様のコマンドが必要になる場合があります。
サーバーを起動するときに、起動コマンドに TRACE レベルを含めることができます。以下に例を示します。
--log-level=INFO,org.keycloak.common.crypto.CryptoIntegration:TRACE
--log-level=INFO,org.keycloak.common.crypto.CryptoIntegration:TRACE
TRACE レベルを使用すると、次のような Approved Mode
に関する注記が付いた KC
プロバイダーが起動ログに含まれていることを確認できます。
KC(BCFIPS version 2.0 Approved Mode, FIPS-JVM: enabled) version 1.0 - class org.keycloak.crypto.fips.KeycloakFipsSecurityProvider,
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 クライアントのキーストア、もしくはレルムキーのjava-keystore
プロバイダーのキーストアのインポートや生成などです。 -
ユーザーパスワードは、14 文字以上でなければなりません。Red Hat build of Keycloak は、デフォルトで PBKDF2 ベースのパスワードエンコーディングを使用します。BCFIPS 承認モードでは、PBKDF2 アルゴリズムを使用した 112 ビット (実質的には 14 文字) 以上のパスワードが必要です。それよりも短いパスワードを許可する場合は、SPI
password-hashing
のプロバイダーpbkdf2-sha512
のプロパティーmax-padding-length
を 14 に設定して、このアルゴリズムによって作成されたハッシュの検証時に追加のパディングを提供します。この設定は、以前に保存されたパスワードとの下位互換性もあります。たとえば、ユーザーのデータベースが非 FIPS 環境にあり、パスワードが短く、承認モードで BCFIPS を使用して Red Hat build of Keycloak でパスワードを検証する場合、そのパスワードは機能するはずです。したがって、サーバーの起動時に次のようなオプションを効果的に使用できます。
--spi-password-hashing-pbkdf2-sha512-max-padding-length=14
--spi-password-hashing-pbkdf2-sha512-max-padding-length=14
上記のオプションを使用しても、FIPS 準拠は損なわれません。いずれにせよ、パスワードは長くすることが推奨されます。たとえば、最新のブラウザーで自動生成されるパスワードは 14 文字を超えるため、この要件に一致します。max-padding-length のオプションを省略する場合は、パスワードの長さが少なくとも 14 文字になるようにレルムにパスワードポリシーを設定できます。
24 より古い Red Hat build of Keycloak から移行する場合、またはデフォルトのハッシュアルゴリズムをオーバーライドするようにパスワードポリシーを明示的に設定する場合は、一部のユーザーが pbkdf2-sha256
などの古いアルゴリズムを使用している可能性があります。この場合、パスワードが 14 文字より短い可能性があるため、古い pbkdf2-sha256
でハッシュされたパスワードを持つユーザーがログインできるように、--spi-password-hashing-pbkdf2-sha256-max-padding-length=14
オプションを追加することを検討してください。
-
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) は、デフォルトでは厳密モードでは許可されません (BC は現時点では下位互換性オプションとしてシステムプロパティー-Dorg.bouncycastle.rsa.allow_pkcs15_enc=true
を提供)。RSA-OAEP
およびRSA-OAEP-256
は、以前と同様に引き続き利用可能です。