OpenJCEPlus sağlayıcısı
OpenJCEPlus şifreleme sağlayıcısı, Java™ Cryptography Extensions (JCE) API 'lerinin bir uygulamasıdır. Bu uygulama şunları içerir: örneğin, şifreler, imzalar, ileti özetleri, MAC' ler ve HMC ' ler, güvenli rasgele sayı oluşturma ve anahtar oluşturma. SDK ' nın 8. sürümünde bu güvenlik sağlayıcısı IBMJCEPlus sağlayıcısı olarak biliniyordu.
OpenJCEPlus sağlayıcısı, desteklenen yerlerde donanım hızlandırılmış şifreleme algoritmaları sunan IBM Z® donanımı için yerel arabirimleri kullanır.
OpenJCEPlus sağlayıcısının etkinleştirilmesi
OpenJCEPlus sağlayıcısı, JAVA_HOME/conf/security/java.security dosyasındaki konumu nedeniyle varsayılan olarak etkindir. Varsayılan olarak farklı bir sağlayıcı kullanmak istiyorsanız, bu sağlayıcıyı bu dosyada OpenJCEPlus sağlayıcısının önüne taşıyın.
Desteklenen algoritmalar
Aşağıdaki tablo, şu anda desteklenen algoritmaları göstermektedir. Ek algoritma desteği, gelecekteki yayınlar için tasarlanmıştır.
| Uygulama Programlama Arabirimi | Desteklenen algoritmalar |
|---|---|
| Algoritma parametresi | AES, ChaCha20, ChaCha20-Poly1305, DESede, DH, DSA, EC, GCM, OAEP, RSASSA-PSS |
| Algoritma değiştirgesi üreteci | DH, DSA, EC, GCM |
| Şifreleme algoritmaları | AES, ChaCha20, ChaCha20-Poly1305, DESede, RSA |
| Şifre kipleri | AES şu kipleri destekler: CFB8, CFB128, CFB, ECB, CBC, OFB, GCM
DESede şu kipleri destekler: ECB, CBC RSA şu kipleri destekler: null, ECB, SSL |
| Anahtar sözleşmesi algoritmaları | DH, ECDH, XDH, X25519, X448 |
| Anahtar üreticisi | DH, DSA, EC, EdDSA, Ed25519, Ed448, RSA , RSASSA-PSS, XDH, X25519, X448 |
| Anahtar üreteci | AES, ChaCha20, DESede, HmacMD5, HmacSHA1, HmacSHA224, HmacSHA256, HmacSHA384, HmacSHA512, HmacSHA3-224, HmacSHA3-256, HmacSHA3-384, HmacSHA3-512 , kda-hkdf-with-sha1, kda-hkdf-with-sha224, kda-hkdf-with-sha256, kda-hkdf-with-shasha384, kda-hkdf-with-sha512 |
| Anahtar çifti oluşturucusu | DH, DSA, EC, EdDSA, Ed25519, Ed448, RSA, RSASSA-PSS, XDH, X25519, X448 |
| İleti kimlik doğrulama kodu (MAC) | HmacMD5, HmacSHA1, HmacSHA224, HmacSHA256, HmacSHA384, HmacSHA512, HmacSHA3-224, HmacSHA3-256, HmacSHA3-384, HmacSHA3-512 |
| İleti özeti | MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA3-224, SHA3-256, SHA3-384, SHA3-512 |
| Gizli anahtar üreticisi | AES, ChaCha20, DESede |
| Güvenli rasgele | HASHDRBG, SHA256DRBG (varsayılan), SHA512DRBG |
| İmza algoritmaları | EdDSA, Ed25519, Ed448, NONEwithDSA, NONEwithECDSA, NONEwithRSA, RSASSA-PSS, SHA1withDSA, SHA224withDSA, SHA256withDSA, SHA1withECDSA, SHA224withECDSA, SHA256withECDSA, SHA384withECDSA SHA1withRSA, SHA224withRSA, SHA256withRSA, SHA384withRSA, SHA512withRSA, SHA3-224withDSA, SHA3-256withDSA, SHA3-384withDSA, SHA3-512withDSA, SHA3-224withECDSA, SHA3-256withECDSA, SHA3-384withECDSA SHA3-256withRSA, SHA3-384withRSA, SHA3-512withRSA |
Desteklenen eliptik eğriler
secp256r1, 1.2.840.10045.3.1.7, NIST P-256ve X9.62
prime256v1 dizgileri aynı eğriye başvurmaktadır. ECGenParameterSpec sınıfıyla EC parametre oluşturma için parametre belirtimleri oluşturmak üzere eğri adlarını kullanabilirsiniz.| Eğri adı | Nesne Tanıtıcısı | Ek adlar ya da diğer adlar |
|---|---|---|
secp112r1 |
1.3.132.0.6 |
|
secp112r2 |
1.3.132.0.7 |
|
secp128r1 |
1.3.132.0.28 |
|
secp128r2 |
1.3.132.0.29 |
|
secp160k1 |
1.3.132.0.9 |
|
secp160r1 |
1.3.132.0.8 |
|
secp160r2 |
1.3.132.0.30 |
|
secp192k1 |
1.3.132.0.31 |
|
secp192r1 |
1.2.840.10045.3.1.1 |
NIST P-192, X9.62 prime192v1 |
secp224k1 |
1.3.132.0.32 |
|
secp224r1 |
1.3.132.0.33 |
NIST P-224 |
secp256k1 |
1.3.132.0.10 |
|
secp256r1 |
1.2.840.10045.3.1.7 |
NIST P-256, X9.62 prime256v1 |
secp384r1 |
1.3.132.0.34 |
NIST P-384 |
secp521r1 |
1.3.132.0.35 |
NIST P-521 |
X9.62 prime192v2 |
1.2.840.10045.3.1.2 |
|
X9.62 prime192v3 |
1.2.840.10045.3.1.3 |
|
X9.62 prime239v1 |
1.2.840.10045.3.1.4 |
|
X9.62 prime239v2 |
1.2.840.10045.3.1.5 |
|
X9.62 prime239v3 |
1.2.840.10045.3.1.6 |
|
brainpoolP160r1 |
1.3.36.3.3.2.8.1.1.1 |
|
brainpoolP192r1 |
1.3.36.3.3.2.8.1.1.3 |
|
brainpoolP224r1 |
1.3.36.3.3.2.8.1.1.5 |
|
brainpoolP256r1 |
1.3.36.3.3.2.8.1.1.7 |
|
brainpoolP320r1 |
1.3.36.3.3.2.8.1.1.9 |
|
brainpoolP384r1 |
1.3.36.3.3.2.8.1.1.11 |
|
brainpoolP512r1 |
1.3.36.3.3.2.8.1.1.13 |
Bilinen sınırlamalar
- Yalnızca RSA anahtar boyutları 512, 1024, 2048 ve 4096 desteklenir.
- RSA anahtarı genel üsleri 65537 ya da daha büyük olmalıdır.
- RSA özel anahtarları CRT (Çin Kalan Teoremi) anahtarları olmalıdır. CRT parametreleri olmayan özel anahtarlar desteklenmez. Oluşturulan anahtar çiftlerinin CRT özel anahtarları olur.
- NoPadding seçeneğiyle RSA şifre çözme, şifresi çözülen metinde doldurma baytları bırakabilir.
- İkili Eliptik Eğriler desteklenmez.
- OpenJCEPlus içindeki sağlayıcıların kendi Anahtar Deposu somutlamaları yoktur. Bunun yerine, anahtar deposu somutlamaları (JKS, JCEKS, PKCS#12) SUN ve SunJCE sağlayıcılarından gelir.
- OpenJCEPlus tarafından kullanılan temel yerli kitaplığın sürümü, henüz OpenJCEPlustarafından desteklenmeyen bazı algoritmalar için destek ekler. Bu algoritmalar şunlardır:
- Veri şifreleme ve şifre çözme için AES-CTR algoritması desteklenmez.
AES-GCM şifreleme ve şifre çözme Cipher.update işlemleri, aşağıdaki nedenle yalnızca korunması gereken büyük miktarlarda veri için yapılmalıdır. Kimlik doğrulama etiketi yalnızca doFinal (Cipher.doFinal()) işleminde doğrulanabilir; doFinal işlemi herhangi bir nedenle başarısız olursa, önceki update işleminden döndürülen tüm düz metin atılmalıdır. Bu nedenle, daha küçük miktarlarda veri için yalnızca doFinal işlemlerinin çalıştırılması mantıklı olur.
AES-GCM 'nin şifreleme akışı API' leriyle (CipherInputStream ve CipherOutputStream) birlikte kullanılması önerilmez; bu API 'ler AES-GCM' nin karmaşıklıklarıyla başa çıkmak için tasarlanmamıştır.
- RSASSA-PSS imzası RSA düz anahtarlarını desteklemez.
- RSASSA-PSS, giriş özeti algoritmaları olarak SHA-1, SHA-224, SHA-256, SHA-384ve SHA-512 algoritmalarını destekler.
- EdDSA imzası, Ed25519 ya da Ed448' in iki saf kipini destekler.