差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:java:sharepointonline:implement2 [2021/07/16 06:47] – [Bouncy Castleライブラリについて] banana | study:java:sharepointonline:implement2 [2025/02/07 05:17] (現在) – banana | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== 3rd Party Security Providerの導入について | + | ====== 3rd Party Security Providerの導入 ====== |
| + | {{keywords> | ||
| [[study: | [[study: | ||
| Bouncy Castleライブラリを導入した理由について、本稿で説明します。\\ | Bouncy Castleライブラリを導入した理由について、本稿で説明します。\\ | ||
| 行 24: | 行 25: | ||
| 一方、Java 7が提供するTLS Versionは、TLS1.0, | 一方、Java 7が提供するTLS Versionは、TLS1.0, | ||
| - | Cipher Suiteについては、下記に示します。 | + | Cipher Suiteについては、以下に示します。 |
| ^Cipher Suites^length^ | ^Cipher Suites^length^ | ||
| ^TLS_EMPTY_RENEGOTIATION_INFO_SCSV^ ^ | ^TLS_EMPTY_RENEGOTIATION_INFO_SCSV^ ^ | ||
| 行 51: | 行 52: | ||
| これが、Bouncy Castleライブラリを導入した理由になります。\\ | これが、Bouncy Castleライブラリを導入した理由になります。\\ | ||
| - | ===== Bouncy Castleライブラリについて ===== | + | {{keywords> |
| + | |||
| + | ====== Bouncy Castleライブラリについて | ||
| Bouncy CastleはJCE(Java Cryptography Enxtension)及びJSSE(Java Security Socket Extension)のProviderです。\\ | Bouncy CastleはJCE(Java Cryptography Enxtension)及びJSSE(Java Security Socket Extension)のProviderです。\\ | ||
| Bouncy CastleがサポートするCipher Suiteについては、ReferenceのBC-FJA-(D)TLSUserGuide-1.0.9.pdfの「Appendix B – Supported Cipher Suites」部分を参照してください。\\ | Bouncy CastleがサポートするCipher Suiteについては、ReferenceのBC-FJA-(D)TLSUserGuide-1.0.9.pdfの「Appendix B – Supported Cipher Suites」部分を参照してください。\\ | ||
| 行 61: | 行 64: | ||
| ^TLS_DHE_RSA_WITH_AES_128_GCM_SHA256^N^ | ^TLS_DHE_RSA_WITH_AES_128_GCM_SHA256^N^ | ||
| - | Bouncy Castle以外にもConscryptというProviderは上記一部分のCipher Suite((TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, | + | Bouncy Castle以外にもConscryptというProviderは上記一部分のCipher Suite((TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, |
| - | ===== Mainコード ===== | + | ====== Mainコード |
| Bouncy Castleを適用するコードを以下に示します。 | Bouncy Castleを適用するコードを以下に示します。 | ||
| <code java> | <code java> | ||
| 行 79: | 行 82: | ||
| * Insert BouncyCastle' | * Insert BouncyCastle' | ||
| */ | */ | ||
| - | BouncyCastleFipsProvider _bcFipsProvider = new BouncyCastleFipsProvider(BOUNCY_CASTLE_RNG_HYBRID_MODE); | + | BouncyCastleFipsProvider _bcFipsProvider = new BouncyCastleFipsProvider(BOUNCY_CASTLE_RNG_HYBRID_MODE); |
| //setup default SecureRandom | //setup default SecureRandom | ||
| 行 92: | 行 95: | ||
| */ | */ | ||
| Security.removeProvider(JCE_PROVIDER_BOUNCY_CASTLE_FIPS); | Security.removeProvider(JCE_PROVIDER_BOUNCY_CASTLE_FIPS); | ||
| - | Security.insertProviderAt(_bcFipsProvider, | + | Security.insertProviderAt(_bcFipsProvider, |
| }// | }// | ||
| 行 102: | 行 105: | ||
| .setSecurityStrength(256) | .setSecurityStrength(256) | ||
| .setEntropyBitsRequired(256); | .setEntropyBitsRequired(256); | ||
| - | CryptoServicesRegistrar.setSecureRandom(_drgbBldr.build(NONCE, | + | CryptoServicesRegistrar.setSecureRandom(_drgbBldr.build(NONCE, |
| }// | }// | ||
| </ | </ | ||
| + | |||
| + | ★Point1\\ | ||
| + | FIPSモードでProviderを生成します。 | ||
| + | |||
| + | ★Point2\\ | ||
| + | Providerを最優先にするために、位置を指定します。インストール済みの場合は、追加されません。 | ||
| + | |||
| + | ★Point3\\ | ||
| + | デフォルトのSecureRandomアルゴリズムを登録します。\\ | ||
| + | 登録しない場合、SSLContextのインスタンスを生成する際、ものすごい時間が掛かる場合があります。 | ||
| + | |||
| - | ===== Reference ===== | + | ====== Reference |
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||